]> git.ipfire.org Git - thirdparty/git.git/commitdiff
Merge branch 'en/ort-perf-batch-9'
authorJunio C Hamano <gitster@pobox.com>
Thu, 8 Apr 2021 20:23:26 +0000 (13:23 -0700)
committerJunio C Hamano <gitster@pobox.com>
Thu, 8 Apr 2021 20:23:26 +0000 (13:23 -0700)
The ort merge backend has been optimized by skipping irrelevant
renames.

* en/ort-perf-batch-9:
  diffcore-rename: avoid doing basename comparisons for irrelevant sources
  merge-ort: skip rename detection entirely if possible
  merge-ort: use relevant_sources to filter possible rename sources
  merge-ort: precompute whether directory rename detection is needed
  merge-ort: introduce wrappers for alternate tree traversal
  merge-ort: add data structures for an alternate tree traversal
  merge-ort: precompute subset of sources for which we need rename detection
  diffcore-rename: enable filtering possible rename sources

574 files changed:
.github/workflows/main.yml
.mailmap
Documentation/Makefile
Documentation/RelNotes/2.17.6.txt [new file with mode: 0644]
Documentation/RelNotes/2.18.5.txt [new file with mode: 0644]
Documentation/RelNotes/2.19.6.txt [new file with mode: 0644]
Documentation/RelNotes/2.20.5.txt [new file with mode: 0644]
Documentation/RelNotes/2.21.4.txt [new file with mode: 0644]
Documentation/RelNotes/2.22.5.txt [new file with mode: 0644]
Documentation/RelNotes/2.23.4.txt [new file with mode: 0644]
Documentation/RelNotes/2.24.4.txt [new file with mode: 0644]
Documentation/RelNotes/2.25.5.txt [new file with mode: 0644]
Documentation/RelNotes/2.26.3.txt [new file with mode: 0644]
Documentation/RelNotes/2.27.1.txt [new file with mode: 0644]
Documentation/RelNotes/2.28.1.txt [new file with mode: 0644]
Documentation/RelNotes/2.29.3.txt [new file with mode: 0644]
Documentation/RelNotes/2.30.2.txt [new file with mode: 0644]
Documentation/RelNotes/2.31.0.txt
Documentation/RelNotes/2.31.1.txt [new file with mode: 0644]
Documentation/RelNotes/2.32.0.txt [new file with mode: 0644]
Documentation/blame-options.txt
Documentation/config.txt
Documentation/config/clone.txt
Documentation/config/commitgraph.txt
Documentation/config/init.txt
Documentation/config/lsrefs.txt [new file with mode: 0644]
Documentation/config/maintenance.txt
Documentation/config/mergetool.txt
Documentation/config/pack.txt
Documentation/config/rebase.txt
Documentation/config/stash.txt
Documentation/date-formats.txt
Documentation/diff-options.txt
Documentation/git-am.txt
Documentation/git-branch.txt
Documentation/git-cat-file.txt
Documentation/git-clone.txt
Documentation/git-commit.txt
Documentation/git-difftool.txt
Documentation/git-for-each-ref.txt
Documentation/git-format-patch.txt
Documentation/git-gc.txt
Documentation/git-http-fetch.txt
Documentation/git-index-pack.txt
Documentation/git-mailinfo.txt
Documentation/git-maintenance.txt
Documentation/git-mergetool--lib.txt
Documentation/git-mergetool.txt
Documentation/git-multi-pack-index.txt
Documentation/git-pack-objects.txt
Documentation/git-push.txt
Documentation/git-range-diff.txt
Documentation/git-rebase.txt
Documentation/git-repack.txt
Documentation/git-rev-list.txt
Documentation/git-shortlog.txt
Documentation/git-stash.txt
Documentation/git-status.txt
Documentation/git-tag.txt
Documentation/git.txt
Documentation/gitattributes.txt
Documentation/gitdiffcore.txt
Documentation/githooks.txt
Documentation/gitignore.txt
Documentation/gitmailmap.txt
Documentation/howto/coordinate-embargoed-releases.txt [new file with mode: 0644]
Documentation/i18n.txt
Documentation/pretty-formats.txt
Documentation/rev-list-options.txt
Documentation/technical/api-simple-ipc.txt [new file with mode: 0644]
Documentation/technical/chunk-format.txt [new file with mode: 0644]
Documentation/technical/commit-graph-format.txt
Documentation/technical/commit-graph.txt
Documentation/technical/hash-function-transition.txt
Documentation/technical/index-format.txt
Documentation/technical/multi-pack-index.txt
Documentation/technical/pack-format.txt
Documentation/technical/protocol-v2.txt
Documentation/technical/reftable.txt
GIT-VERSION-GEN
INSTALL
Makefile
RelNotes
SECURITY.md [new file with mode: 0644]
add-interactive.c
apply.c
archive-tar.c
archive.c
archive.h
attr.c
bisect.c
blame.c
block-sha1/sha1.c
bloom.c
builtin/add.c
builtin/bisect--helper.c
builtin/blame.c
builtin/checkout-index.c
builtin/checkout.c
builtin/clean.c
builtin/clone.c
builtin/column.c
builtin/commit.c
builtin/credential-cache--daemon.c
builtin/credential-cache.c
builtin/diff-files.c
builtin/diff-index.c
builtin/diff-tree.c
builtin/diff.c
builtin/difftool.c
builtin/fast-import.c
builtin/fetch-pack.c
builtin/fetch.c
builtin/fsck.c
builtin/gc.c
builtin/grep.c
builtin/index-pack.c
builtin/init-db.c
builtin/log.c
builtin/ls-files.c
builtin/ls-remote.c
builtin/ls-tree.c
builtin/merge.c
builtin/mktag.c
builtin/multi-pack-index.c
builtin/mv.c
builtin/notes.c
builtin/pack-objects.c
builtin/pack-redundant.c
builtin/push.c
builtin/range-diff.c
builtin/rebase.c
builtin/receive-pack.c
builtin/reflog.c
builtin/remote.c
builtin/repack.c
builtin/reset.c
builtin/rev-list.c
builtin/revert.c
builtin/sparse-checkout.c
builtin/stash.c
builtin/submodule--helper.c
builtin/symbolic-ref.c
builtin/tag.c
builtin/unpack-objects.c
builtin/worktree.c
bulk-checkin.c
cache-tree.c
cache.h
chunk-format.c [new file with mode: 0644]
chunk-format.h [new file with mode: 0644]
ci/run-build-and-tests.sh
combine-diff.c
commit-graph.c
commit-graph.h
commit-reach.c
commit-reach.h
commit.c
commit.h
compat/mingw.c
compat/mingw.h
compat/open.c [new file with mode: 0644]
compat/precompose_utf8.c
compat/precompose_utf8.h
compat/simple-ipc/ipc-shared.c [new file with mode: 0644]
compat/simple-ipc/ipc-unix-socket.c [new file with mode: 0644]
compat/simple-ipc/ipc-win32.c [new file with mode: 0644]
config.c
config.mak.uname
connect.c
contrib/buildsystems/CMakeLists.txt
contrib/coccinelle/array.cocci
contrib/coccinelle/xcalloc.cocci [new file with mode: 0644]
contrib/completion/git-completion.bash
convert.c
convert.h
csum-file.c
daemon.c
decorate.c
diff-lib.c
diff.c
diff.h
diffcore-rename.c
diffcore-rotate.c [new file with mode: 0644]
diffcore.h
dir.c
dir.h
entry.c
entry.h [new file with mode: 0644]
ewah/bitmap.c
fetch-pack.c
fetch-pack.h
fmt-merge-msg.c
fsck.c
fsck.h
fsmonitor.c
fsmonitor.h
git-bisect.sh
git-compat-util.h
git-difftool--helper.sh
git-filter-branch.sh
git-gui/po/ru.po
git-mergetool--lib.sh
git-mergetool.sh
git-send-email.perl
git.c
gpg-interface.c
gpg-interface.h
grep.c
grep.h
hashmap.c
http-backend.c
http-fetch.c
http-push.c
http.c
http.h
imap-send.c
line-log.c
line-range.c
list-objects-filter.c
ll-merge.c
log-tree.c
ls-refs.c
ls-refs.h
mailmap.c
mem-pool.c
merge-ort.c
merge-recursive.c
mergetools/vimdiff
midx.c
midx.h
name-hash.c
negotiator/default.c
negotiator/skipping.c
notes-merge.c
notes-utils.c
notes.c
object-file.c
object-store.h
object.c
pack-bitmap.c
pack-bitmap.h
pack-objects.c
pack-revindex.c
pack-revindex.h
pack-write.c
pack.h
packfile.c
packfile.h
pager.c
parse-options.c
parse-options.h
patch-ids.c
pathspec.c
perl/Git.pm
pkt-line.c
pkt-line.h
po/TEAMS
po/bg.po
po/ca.po
po/de.po
po/es.po
po/fr.po
po/git.pot
po/id.po [new file with mode: 0644]
po/pl.po
po/pt_PT.po
po/ru.po
po/sv.po
po/tr.po
po/vi.po
po/zh_CN.po
po/zh_TW.po
preload-index.c
pretty.c
pretty.h
progress.c
promisor-remote.c
range-diff.c
range-diff.h
read-cache.c
rebase-interactive.c
ref-filter.c
reflog-walk.c
refs.c
refs/files-backend.c
refs/iterator.c
refs/packed-backend.c
refs/ref-cache.c
remote.c
remote.h
repository.c
resolve-undo.c
revision.c
revision.h
run-command.c
send-pack.c
sequencer.c
sequencer.h
serve.c
server-info.c
simple-ipc.h [new file with mode: 0644]
split-index.c
symlinks.c
t/.gitattributes
t/README
t/helper/test-bloom.c
t/helper/test-chmtime.c
t/helper/test-read-graph.c
t/helper/test-read-midx.c
t/helper/test-simple-ipc.c [new file with mode: 0644]
t/helper/test-tool.c
t/helper/test-tool.h
t/helper/test-trace2.c
t/lib-bitmap.sh [new file with mode: 0644]
t/lib-bundle.sh [moved from t/test-bundle-functions.sh with 100% similarity]
t/lib-credential.sh
t/lib-diff.sh [moved from t/diff-lib.sh with 100% similarity]
t/lib-diff/COPYING [moved from t/diff-lib/COPYING with 100% similarity]
t/lib-diff/README [moved from t/diff-lib/README with 100% similarity]
t/lib-gitweb.sh [moved from t/gitweb-lib.sh with 100% similarity]
t/lib-log-graph.sh
t/lib-rebase.sh
t/perf/.gitignore
t/perf/Makefile
t/perf/p5303-many-packs.sh
t/perf/p5310-pack-bitmaps.sh
t/perf/p7519-fsmonitor.sh
t/perf/perf-lib.sh
t/t0000-basic.sh
t/t0003-attributes.sh
t/t0006-date.sh
t/t0008-ignores.sh
t/t0012-help.sh
t/t0018-advice.sh
t/t0020-crlf.sh
t/t0021-conversion.sh
t/t0021/rot13-filter.pl
t/t0027-auto-crlf.sh
t/t0040-parse-options.sh
t/t0052-simple-ipc.sh [new file with mode: 0755]
t/t0090-cache-tree.sh
t/t0201-gettext-fallbacks.sh
t/t0210-trace2-normal.sh
t/t0300-credentials.sh
t/t0500-progress-display.sh
t/t1011-read-tree-sparse-checkout.sh
t/t1300-config.sh
t/t1308-config-set.sh
t/t1400-update-ref.sh
t/t1404-update-ref-errors.sh
t/t1410-reflog.sh
t/t1430-bad-ref-name.sh
t/t1450-fsck.sh
t/t1500-rev-parse.sh
t/t1502-rev-parse-parseopt.sh
t/t1506-rev-parse-diagnosis.sh
t/t1507-rev-parse-upstream.sh
t/t1509-root-work-tree.sh
t/t1512-rev-parse-disambiguation.sh
t/t1600-index.sh
t/t2006-checkout-index-basic.sh
t/t2018-checkout-branch.sh
t/t2020-checkout-detach.sh
t/t2021-checkout-overwrite.sh
t/t2104-update-index-skip-worktree.sh
t/t2200-add-update.sh
t/t2401-worktree-prune.sh
t/t2402-worktree-list.sh
t/t3005-ls-files-relative.sh
t/t3060-ls-files-with-tree.sh
t/t3200-branch.sh
t/t3201-branch-contains.sh
t/t3203-branch-output.sh
t/t3206-range-diff.sh
t/t3300-funny-names.sh
t/t3301-notes.sh
t/t3400-rebase.sh
t/t3404-rebase-interactive.sh
t/t3415-rebase-autosquash.sh
t/t3420-rebase-autostash.sh
t/t3431-rebase-fork-point.sh
t/t3437-rebase-fixup-options.sh [new file with mode: 0755]
t/t3437/expected-combined-message [new file with mode: 0644]
t/t3437/expected-squash-message [new file with mode: 0644]
t/t3504-cherry-pick-rerere.sh
t/t3507-cherry-pick-conflict.sh
t/t3508-cherry-pick-many-commits.sh
t/t3510-cherry-pick-sequence.sh
t/t3600-rm.sh
t/t3700-add.sh
t/t3701-add-interactive.sh
t/t3800-mktag.sh
t/t3900-i18n-commit.sh
t/t3903-stash.sh
t/t3905-stash-include-untracked.sh
t/t3910-mac-os-precompose.sh
t/t4000-diff-format.sh
t/t4001-diff-rename.sh
t/t4003-diff-rename-1.sh
t/t4004-diff-rename-symlink.sh
t/t4005-diff-rename-2.sh
t/t4006-diff-mode.sh
t/t4007-rename-3.sh
t/t4008-diff-break-rewrite.sh
t/t4009-diff-rename-4.sh
t/t4010-diff-pathspec.sh
t/t4011-diff-symlink.sh
t/t4012-diff-binary.sh
t/t4013-diff-various.sh
t/t4014-format-patch.sh
t/t4015-diff-whitespace.sh
t/t4016-diff-quote.sh
t/t4027-diff-submodule.sh
t/t4030-diff-textconv.sh
t/t4034-diff-words.sh
t/t4038-diff-combined.sh
t/t4045-diff-relative.sh
t/t4049-diff-stat-count.sh
t/t4053-diff-no-index.sh
t/t4056-diff-order.sh
t/t4061-diff-indent.sh
t/t4100-apply-stat.sh
t/t4150-am.sh
t/t4153-am-resume-override-opts.sh
t/t4203-mailmap.sh
t/t4205-log-pretty-formats.sh
t/t4206-log-follow-harder-copies.sh
t/t4208-log-magic-pathspec.sh
t/t4216-log-bloom.sh
t/t4254-am-corrupt.sh
t/t5000-tar-tree.sh
t/t5001-archive-attr.sh
t/t5004-archive-corner-cases.sh
t/t5150-request-pull.sh
t/t5300-pack-object.sh
t/t5310-pack-bitmaps.sh
t/t5316-pack-delta-depth.sh
t/t5318-commit-graph.sh
t/t5319-multi-pack-index.sh
t/t5324-split-commit-graph.sh
t/t5325-reverse-index.sh [new file with mode: 0755]
t/t5411/common-functions.sh
t/t5411/once-0010-report-status-v1.sh
t/t5411/test-0000-standard-git-push.sh
t/t5411/test-0001-standard-git-push--porcelain.sh
t/t5411/test-0002-pre-receive-declined.sh
t/t5411/test-0003-pre-receive-declined--porcelain.sh
t/t5411/test-0011-no-hook-error.sh
t/t5411/test-0012-no-hook-error--porcelain.sh
t/t5411/test-0013-bad-protocol.sh
t/t5411/test-0014-bad-protocol--porcelain.sh
t/t5411/test-0020-report-ng.sh
t/t5411/test-0021-report-ng--porcelain.sh
t/t5411/test-0022-report-unexpect-ref.sh
t/t5411/test-0023-report-unexpect-ref--porcelain.sh
t/t5411/test-0024-report-unknown-ref.sh
t/t5411/test-0025-report-unknown-ref--porcelain.sh
t/t5411/test-0026-push-options.sh
t/t5411/test-0027-push-options--porcelain.sh
t/t5411/test-0030-report-ok.sh
t/t5411/test-0031-report-ok--porcelain.sh
t/t5411/test-0032-report-with-options.sh
t/t5411/test-0033-report-with-options--porcelain.sh
t/t5411/test-0034-report-ft.sh
t/t5411/test-0035-report-ft--porcelain.sh
t/t5411/test-0036-report-multi-rewrite-for-one-ref.sh
t/t5411/test-0037-report-multi-rewrite-for-one-ref--porcelain.sh
t/t5411/test-0038-report-mixed-refs.sh
t/t5411/test-0039-report-mixed-refs--porcelain.sh
t/t5411/test-0040-process-all-refs.sh
t/t5411/test-0041-process-all-refs--porcelain.sh
t/t5411/test-0050-proc-receive-refs-with-modifiers.sh
t/t5500-fetch-pack.sh
t/t5505-remote.sh
t/t5510-fetch.sh
t/t5512-ls-remote.sh
t/t5516-fetch-push.sh
t/t5526-fetch-submodules.sh
t/t5541-http-push-smart.sh
t/t5544-pack-objects-hook.sh
t/t5550-http-fetch-dumb.sh
t/t5601-clone.sh
t/t5604-clone-reference.sh
t/t5606-clone-options.sh
t/t5611-clone-config.sh
t/t5612-clone-refspec.sh
t/t5701-git-serve.sh
t/t5702-protocol-v2.sh
t/t5703-upload-pack-ref-in-want.sh
t/t6020-bundle-misc.sh
t/t6030-bisect-porcelain.sh
t/t6040-tracking-info.sh
t/t6113-rev-list-bitmap-filters.sh
t/t6114-keep-packs.sh [new file with mode: 0755]
t/t6115-rev-list-du.sh [new file with mode: 0755]
t/t6120-describe.sh
t/t6134-pathspec-in-submodule.sh
t/t6300-for-each-ref.sh
t/t6301-for-each-ref-errors.sh
t/t6404-recursive-merge.sh
t/t6423-merge-rename-directories.sh
t/t6426-merge-skip-unneeded-updates.sh
t/t6436-merge-overwrite.sh
t/t6439-merge-co-error-msgs.sh
t/t6500-gc.sh
t/t6600-test-reach.sh
t/t7001-mv.sh
t/t7003-filter-branch.sh
t/t7004-tag.sh
t/t7006-pager.sh
t/t7007-show.sh
t/t7011-skip-worktree-reading.sh
t/t7012-skip-worktree-writing.sh
t/t7060-wtstatus.sh
t/t7063-status-untracked-cache.sh
t/t7102-reset.sh
t/t7300-clean.sh
t/t7400-submodule-basic.sh
t/t7401-submodule-summary.sh
t/t7406-submodule-update.sh
t/t7407-submodule-foreach.sh
t/t7500-commit-template-squash-signoff.sh
t/t7501-commit-basic-functionality.sh
t/t7502-commit-porcelain.sh
t/t7505-prepare-commit-msg-hook.sh
t/t7508-status.sh
t/t7510-signed-commit.sh
t/t7512-status-help.sh
t/t7519-status-fsmonitor.sh
t/t7521-ignored-mode.sh
t/t7600-merge.sh
t/t7602-merge-octopus-many.sh
t/t7610-mergetool.sh
t/t7703-repack-geometric.sh [new file with mode: 0755]
t/t7800-difftool.sh
t/t7810-grep.sh
t/t7817-grep-sparse-checkout.sh [new file with mode: 0755]
t/t7900-maintenance.sh
t/t9001-send-email.sh
t/t9003-help-autocorrect.sh
t/t9151-svn-mergeinfo.sh
t/t9300-fast-import.sh
t/t9500-gitweb-standalone-no-errors.sh
t/t9501-gitweb-standalone-http-status.sh
t/t9502-gitweb-standalone-parse-output.sh
t/t9801-git-p4-branch.sh
t/test-lib-functions.sh
t/test-lib.sh
tag.c
tmp-objdir.c
trailer.c
transport-helper.c
transport-internal.h
transport.c
transport.h
tree.c
tree.h
unix-socket.c
unix-socket.h
unix-stream-server.c [new file with mode: 0644]
unix-stream-server.h [new file with mode: 0644]
unpack-trees.c
unpack-trees.h
upload-pack.c
usage.c
vcs-svn/fast_export.h [deleted file]
vcs-svn/line_buffer.h [deleted file]
vcs-svn/sliding_window.h [deleted file]
vcs-svn/svndiff.h [deleted file]
vcs-svn/svndump.h [deleted file]
worktree.c
wrapper.c
wt-status.c

index 5f2f884b92f6bdb46cc38fb0af5876d4484753f5..73856bafc9debd7cfed82419706a4b023c69651b 100644 (file)
@@ -186,6 +186,11 @@ jobs:
         ## Unzip and remove the artifact
         unzip artifacts.zip
         rm artifacts.zip
+    - name: initialize vcpkg
+      uses: actions/checkout@v2
+      with:
+        repository: 'microsoft/vcpkg'
+        path: 'compat/vcbuild/vcpkg'
     - name: download vcpkg artifacts
       shell: powershell
       run: |
index bde7aba756ea74c3af562874ab5c81a829e43c83..9c6a446bdfb092037d21c51ec704d88f2161fdc9 100644 (file)
--- a/.mailmap
+++ b/.mailmap
@@ -220,6 +220,7 @@ Philipp A. Hartmann <pah@qo.cx> <ph@sorgh.de>
 Philippe Bruhat <book@cpan.org>
 Ralf Thielow <ralf.thielow@gmail.com> <ralf.thielow@googlemail.com>
 Ramsay Jones <ramsay@ramsayjones.plus.com> <ramsay@ramsay1.demon.co.uk>
+Ramkumar Ramachandra <r@artagnon.com> <artagnon@gmail.com>
 Randall S. Becker <randall.becker@nexbridge.ca> <rsbecker@nexbridge.com>
 René Scharfe <l.s.r@web.de> <rene.scharfe@lsrfire.ath.cx>
 René Scharfe <l.s.r@web.de> Rene Scharfe
index 81d1bf7a049b31b553b215aa7c58d92006bb544b..874a01d7a86eaf352bcd779a058f32af256e3c77 100644 (file)
@@ -76,6 +76,7 @@ SP_ARTICLES += howto/rebuild-from-update-hook
 SP_ARTICLES += howto/rebase-from-internal-branch
 SP_ARTICLES += howto/keep-canonical-history-correct
 SP_ARTICLES += howto/maintain-git
+SP_ARTICLES += howto/coordinate-embargoed-releases
 API_DOCS = $(patsubst %.txt,%,$(filter-out technical/api-index-skel.txt technical/api-index.txt, $(wildcard technical/api-*.txt)))
 SP_ARTICLES += $(API_DOCS)
 
diff --git a/Documentation/RelNotes/2.17.6.txt b/Documentation/RelNotes/2.17.6.txt
new file mode 100644 (file)
index 0000000..2f181e8
--- /dev/null
@@ -0,0 +1,16 @@
+Git v2.17.6 Release Notes
+=========================
+
+This release addresses the security issues CVE-2021-21300.
+
+Fixes since v2.17.5
+-------------------
+
+ * CVE-2021-21300:
+   On case-insensitive file systems with support for symbolic links,
+   if Git is configured globally to apply delay-capable clean/smudge
+   filters (such as Git LFS), Git could be fooled into running
+   remote code during a clone.
+
+Credit for finding and fixing this vulnerability goes to Matheus
+Tavares, helped by Johannes Schindelin.
diff --git a/Documentation/RelNotes/2.18.5.txt b/Documentation/RelNotes/2.18.5.txt
new file mode 100644 (file)
index 0000000..dfb1de4
--- /dev/null
@@ -0,0 +1,6 @@
+Git v2.18.5 Release Notes
+=========================
+
+This release merges up the fixes that appear in v2.17.6 to address
+the security issue CVE-2021-21300; see the release notes for that
+version for details.
diff --git a/Documentation/RelNotes/2.19.6.txt b/Documentation/RelNotes/2.19.6.txt
new file mode 100644 (file)
index 0000000..bcca6cd
--- /dev/null
@@ -0,0 +1,6 @@
+Git v2.19.6 Release Notes
+=========================
+
+This release merges up the fixes that appear in v2.17.6 and
+v2.18.5 to address the security issue CVE-2021-21300; see the
+release notes for these versions for details.
diff --git a/Documentation/RelNotes/2.20.5.txt b/Documentation/RelNotes/2.20.5.txt
new file mode 100644 (file)
index 0000000..1dfb784
--- /dev/null
@@ -0,0 +1,6 @@
+Git v2.20.5 Release Notes
+=========================
+
+This release merges up the fixes that appear in v2.17.6, v2.18.5
+and v2.19.6 to address the security issue CVE-2021-21300; see
+the release notes for these versions for details.
diff --git a/Documentation/RelNotes/2.21.4.txt b/Documentation/RelNotes/2.21.4.txt
new file mode 100644 (file)
index 0000000..0089dd6
--- /dev/null
@@ -0,0 +1,6 @@
+Git v2.21.4 Release Notes
+=========================
+
+This release merges up the fixes that appear in v2.17.6, v2.18.5,
+v2.19.6 and v2.20.5 to address the security issue CVE-2021-21300;
+see the release notes for these versions for details.
diff --git a/Documentation/RelNotes/2.22.5.txt b/Documentation/RelNotes/2.22.5.txt
new file mode 100644 (file)
index 0000000..6b280d9
--- /dev/null
@@ -0,0 +1,7 @@
+Git v2.22.5 Release Notes
+=========================
+
+This release merges up the fixes that appear in v2.17.6,
+v2.18.5, v2.19.6, v2.20.5 and v2.21.4 to address the security
+issue CVE-2021-21300; see the release notes for these versions
+for details.
diff --git a/Documentation/RelNotes/2.23.4.txt b/Documentation/RelNotes/2.23.4.txt
new file mode 100644 (file)
index 0000000..6e5424d
--- /dev/null
@@ -0,0 +1,7 @@
+Git v2.23.4 Release Notes
+=========================
+
+This release merges up the fixes that appear in v2.17.6, v2.18.5,
+v2.19.6, v2.20.5, v2.21.4 and v2.22.5 to address the security
+issue CVE-2021-21300; see the release notes for these versions
+for details.
diff --git a/Documentation/RelNotes/2.24.4.txt b/Documentation/RelNotes/2.24.4.txt
new file mode 100644 (file)
index 0000000..4e216ee
--- /dev/null
@@ -0,0 +1,7 @@
+Git v2.24.4 Release Notes
+=========================
+
+This release merges up the fixes that appear in v2.17.6, v2.18.5,
+v2.19.6, v2.20.5, v2.21.4, v2.22.5 and v2.23.4 to address the
+security issue CVE-2021-21300; see the release notes for these
+versions for details.
diff --git a/Documentation/RelNotes/2.25.5.txt b/Documentation/RelNotes/2.25.5.txt
new file mode 100644 (file)
index 0000000..fcb9566
--- /dev/null
@@ -0,0 +1,7 @@
+Git v2.25.5 Release Notes
+=========================
+
+This release merges up the fixes that appear in v2.17.6, v2.18.5,
+v2.19.6, v2.20.5, v2.21.4, v2.22.5, v2.23.4 and v2.24.4 to address
+the security issue CVE-2021-21300; see the release notes for
+these versions for details.
diff --git a/Documentation/RelNotes/2.26.3.txt b/Documentation/RelNotes/2.26.3.txt
new file mode 100644 (file)
index 0000000..4111c38
--- /dev/null
@@ -0,0 +1,7 @@
+Git v2.26.3 Release Notes
+=========================
+
+This release merges up the fixes that appear in v2.17.6, v2.18.5,
+v2.19.6, v2.20.5, v2.21.4, v2.22.5, v2.23.4, v2.24.4 and v2.25.5
+to address the security issue CVE-2021-21300; see the release
+notes for these versions for details.
diff --git a/Documentation/RelNotes/2.27.1.txt b/Documentation/RelNotes/2.27.1.txt
new file mode 100644 (file)
index 0000000..a1e08a9
--- /dev/null
@@ -0,0 +1,7 @@
+Git v2.27.1 Release Notes
+=========================
+
+This release merges up the fixes that appear in v2.17.6, v2.18.5,
+v2.19.6, v2.20.5, v2.21.4, v2.22.5, v2.23.4, v2.24.4, v2.25.5
+and v2.26.3 to address the security issue CVE-2021-21300; see
+the release notes for these versions for details.
diff --git a/Documentation/RelNotes/2.28.1.txt b/Documentation/RelNotes/2.28.1.txt
new file mode 100644 (file)
index 0000000..8484c82
--- /dev/null
@@ -0,0 +1,7 @@
+Git v2.28.1 Release Notes
+=========================
+
+This release merges up the fixes that appear in v2.17.6, v2.18.5,
+v2.19.6, v2.20.5, v2.21.4, v2.22.5, v2.23.4, v2.24.4, v2.25.5,
+v2.26.3 and v2.27.1 to address the security issue CVE-2021-21300;
+see the release notes for these versions for details.
diff --git a/Documentation/RelNotes/2.29.3.txt b/Documentation/RelNotes/2.29.3.txt
new file mode 100644 (file)
index 0000000..e10eedb
--- /dev/null
@@ -0,0 +1,8 @@
+Git v2.29.3 Release Notes
+=========================
+
+This release merges up the fixes that appear in v2.17.6,
+v2.18.5, v2.19.6, v2.20.5, v2.21.4, v2.22.5, v2.23.4, v2.24.4,
+v2.25.5, v2.26.3, v2.27.1 and v2.28.1 to address the security
+issue CVE-2021-21300; see the release notes for these versions
+for details.
diff --git a/Documentation/RelNotes/2.30.2.txt b/Documentation/RelNotes/2.30.2.txt
new file mode 100644 (file)
index 0000000..bada398
--- /dev/null
@@ -0,0 +1,8 @@
+Git v2.30.2 Release Notes
+=========================
+
+This release merges up the fixes that appear in v2.17.6, v2.18.5,
+v2.19.6, v2.20.5, v2.21.4, v2.22.5, v2.23.4, v2.24.4, v2.25.5,
+v2.26.3, v2.27.1, v2.28.1 and v2.29.3 to address the security
+issue CVE-2021-21300; see the release notes for these versions
+for details.
index 39efc411c79d590f13325d88fec9eb96529857c5..cf0c7d8d40fca63412356621a50570d486c4c0fa 100644 (file)
@@ -16,6 +16,8 @@ Backward incompatible and other important changes
 
  * The support for deprecated PCRE1 library has been dropped.
 
+ * Fixes for CVE-2021-21300 in Git 2.30.2 (and earlier) is included.
+
 
 UI, Workflows & Features
 
@@ -60,6 +62,51 @@ UI, Workflows & Features
    locked and prunable attributes in --porcelain mode, and gained
    a --verbose option.
 
+ * "git clone" tries to locally check out the branch pointed at by
+   HEAD of the remote repository after it is done, but the protocol
+   did not convey the information necessary to do so when copying an
+   empty repository.  The protocol v2 learned how to do so.
+
+ * There are other ways than ".." for a single token to denote a
+   "commit range", namely "<rev>^!" and "<rev>^-<n>", but "git
+   range-diff" did not understand them.
+
+ * The "git range-diff" command learned "--(left|right)-only" option
+   to show only one side of the compared range.
+
+ * "git mergetool" feeds three versions (base, local and remote) of
+   a conflicted path unmodified.  The command learned to optionally
+   prepare these files with unconflicted parts already resolved.
+
+ * The .mailmap is documented to be read only from the root level of a
+   working tree, but a stray file in a bare repository also was read
+   by accident, which has been corrected.
+
+ * "git maintenance" tool learned a new "pack-refs" maintenance task.
+
+ * The error message given when a configuration variable that is
+   expected to have a boolean value has been improved.
+
+ * Signed commits and tags now allow verification of objects, whose
+   two object names (one in SHA-1, the other in SHA-256) are both
+   signed.
+
+ * "git rev-list" command learned "--disk-usage" option.
+
+ * "git {diff,log} --{skip,rotate}-to=<path>" allows the user to
+   discard diff output for early paths or move them to the end of the
+   output.
+
+ * "git difftool" learned "--skip-to=<path>" option to restart an
+   interrupted session from an arbitrary path.
+
+ * "git grep" has been tweaked to be limited to the sparse checkout
+   paths.
+
+ * "git rebase --[no-]fork-point" gained a configuration variable
+   rebase.forkPoint so that users do not have to keep specifying a
+   non-default setting.
+
 
 Performance, Internal Implementation, Development Support etc.
 
@@ -136,6 +183,52 @@ Performance, Internal Implementation, Development Support etc.
  * Get rid of "GETTEXT_POISON" support altogether, which may or may
    not be controversial.
 
+ * Introduce an on-disk file to record revindex for packdata, which
+   traditionally was always created on the fly and only in-core.
+
+ * The commit-graph learned to use corrected commit dates instead of
+   the generation number to help topological revision traversal.
+
+ * Piecemeal of rewrite of "git bisect" in C continues.
+
+ * When a pager spawned by us exited, the trace log did not record its
+   exit status correctly, which has been corrected.
+
+ * Removal of GIT_TEST_GETTEXT_POISON continues.
+
+ * The code to implement "git merge-base --independent" was poorly
+   done and was kept from the very beginning of the feature.
+
+ * Preliminary changes to fsmonitor integration.
+
+ * Performance improvements for rename detection.
+
+ * The common code to deal with "chunked file format" that is shared
+   by the multi-pack-index and commit-graph files have been factored
+   out, to help codepaths for both filetypes to become more robust.
+
+ * The approach to "fsck" the incoming objects in "index-pack" is
+   attractive for performance reasons (we have them already in core,
+   inflated and ready to be inspected), but fundamentally cannot be
+   applied fully when we receive more than one pack stream, as a tree
+   object in one pack may refer to a blob object in another pack as
+   ".gitmodules", when we want to inspect blobs that are used as
+   ".gitmodules" file, for example.  Teach "index-pack" to emit
+   objects that must be inspected later and check them in the calling
+   "fetch-pack" process.
+
+ * The logic to handle "trailer" related placeholders in the
+   "--format=" mechanisms in the "log" family and "for-each-ref"
+   family is getting unified.
+
+ * Raise the buffer size used when writing the index file out from
+   (obviously too small) 8kB to (clearly sufficiently large) 128kB.
+
+ * It is reported that open() on some platforms (e.g. macOS Big Sur)
+   can return EINTR even though our timers are set up with SA_RESTART.
+   A workaround has been implemented and enabled for macOS to rerun
+   open() transparently from the caller when this happens.
+
 
 Fixes since v2.30
 -----------------
@@ -188,5 +281,85 @@ Fixes since v2.30
    processing.  This has been corrected.
    (merge f7d42ceec5 js/rebase-i-commit-cleanup-fix later to maint).
 
+ * Fix in passing custom args from "git clone" to "upload-pack" on the
+   other side.
+   (merge ad6b5fefbd jv/upload-pack-filter-spec-quotefix later to maint).
+
+ * The command line completion (in contrib/) completed "git branch -d"
+   with branch names, but "git branch -D" offered tagnames in addition,
+   which has been corrected.  "git branch -M" had the same problem.
+   (merge 27dc071b9a jk/complete-branch-force-delete later to maint).
+
+ * When commands are started from a subdirectory, they may have to
+   compare the path to the subdirectory (called prefix and found out
+   from $(pwd)) with the tracked paths.  On macOS, $(pwd) and
+   readdir() yield decomposed path, while the tracked paths are
+   usually normalized to the precomposed form, causing mismatch.  This
+   has been fixed by taking the same approach used to normalize the
+   command line arguments.
+   (merge 5c327502db tb/precompose-prefix-too later to maint).
+
+ * Even though invocations of "die()" were logged to the trace2
+   system, "BUG()"s were not, which has been corrected.
+   (merge 0a9dde4a04 jt/trace2-BUG later to maint).
+
+ * "git grep --untracked" is meant to be "let's ALSO find in these
+   files on the filesystem" when looking for matches in the working
+   tree files, and does not make any sense if the primary search is
+   done against the index, or the tree objects.  The "--cached" and
+   "--untracked" options have been marked as mutually incompatible.
+   (merge 0c5d83b248 mt/grep-cached-untracked later to maint).
+
+ * Fix "git fsck --name-objects" which apparently has not been used by
+   anybody who is motivated enough to report breakage.
+   (merge e89f89361c js/fsck-name-objects-fix later to maint).
+
+ * Avoid individual tests in t5411 from getting affected by each other
+   by forcing them to use separate output files during the test.
+   (merge 822ee894f6 jx/t5411-unique-filenames later to maint).
+
+ * Test to make sure "git rev-parse one-thing one-thing" gives
+   the same thing twice (when one-thing is --since=X).
+   (merge a5cdca4520 ew/rev-parse-since-test later to maint).
+
+ * When certain features (e.g. grafts) used in the repository are
+   incompatible with the use of the commit-graph, we used to silently
+   turned commit-graph off; we now tell the user what we are doing.
+   (merge c85eec7fc3 js/commit-graph-warning later to maint).
+
+ * Objects that lost references can be pruned away, even when they
+   have notes attached to it (and these notes will become dangling,
+   which in turn can be pruned with "git notes prune").  This has been
+   clarified in the documentation.
+   (merge fa9ab027ba mz/doc-notes-are-not-anchors later to maint).
+
+ * The error codepath around the "--temp/--prefix" feature of "git
+   checkout-index" has been improved.
+   (merge 3f7ba60350 mt/checkout-index-corner-cases later to maint).
+
+ * The "git maintenance register" command had trouble registering bare
+   repositories, which had been corrected.
+
+ * A handful of multi-word configuration variable names in
+   documentation that are spelled in all lowercase have been corrected
+   to use the more canonical camelCase.
+   (merge 7dd0eaa39c dl/doc-config-camelcase later to maint).
+
+ * "git push $there --delete ''" should have been diagnosed as an
+   error, but instead turned into a matching push, which has been
+   corrected.
+   (merge 20e416409f jc/push-delete-nothing later to maint).
+
+ * Test script modernization.
+   (merge 488acf15df sv/t7001-modernize later to maint).
+
+ * An under-allocation for the untracked cache data has been corrected.
+   (merge 6347d649bc jh/untracked-cache-fix later to maint).
+
  * Other code cleanup, docfix, build fix, etc.
    (merge e3f5da7e60 sg/t7800-difftool-robustify later to maint).
+   (merge 9d336655ba js/doc-proto-v2-response-end later to maint).
+   (merge 1b5b8cf072 jc/maint-column-doc-typofix later to maint).
+   (merge 3a837b58e3 cw/pack-config-doc later to maint).
+   (merge 01168a9d89 ug/doc-commit-approxidate later to maint).
+   (merge b865734760 js/params-vs-args later to maint).
diff --git a/Documentation/RelNotes/2.31.1.txt b/Documentation/RelNotes/2.31.1.txt
new file mode 100644 (file)
index 0000000..f9b06b8
--- /dev/null
@@ -0,0 +1,27 @@
+Git 2.31.1 Release Notes
+========================
+
+Fixes since v2.31
+-----------------
+
+ * The fsmonitor interface read from its input without making sure
+   there is something to read from.  This bug is new in 2.31
+   timeframe.
+
+ * The data structure used by fsmonitor interface was not properly
+   duplicated during an in-core merge, leading to use-after-free etc.
+
+ * "git bisect" reimplemented more in C during 2.30 timeframe did not
+   take an annotated tag as a good/bad endpoint well.  This regression
+   has been corrected.
+
+ * Fix macros that can silently inject unintended null-statements.
+
+ * CALLOC_ARRAY() macro replaces many uses of xcalloc().
+
+ * Update insn in Makefile comments to run fuzz-all target.
+
+ * Fix a corner case bug in "git mv" on case insensitive systems,
+   which was introduced in 2.29 timeframe.
+
+Also contains various documentation updates and code clean-ups.
diff --git a/Documentation/RelNotes/2.32.0.txt b/Documentation/RelNotes/2.32.0.txt
new file mode 100644 (file)
index 0000000..7c6aabe
--- /dev/null
@@ -0,0 +1,170 @@
+Git 2.32 Release Notes
+======================
+
+Backward compatibility notes
+----------------------------
+
+ * ".gitattributes", ".gitignore", and ".mailmap" files that are
+   symbolic links are ignored.
+
+
+Updates since v2.31
+-------------------
+
+UI, Workflows & Features
+
+ * It does not make sense to make ".gitattributes", ".gitignore" and
+   ".mailmap" symlinks, as they are supposed to be usable from the
+   object store (think: bare repositories where HEAD:.mailmap etc. are
+   used).  When these files are symbolic links, we used to read the
+   contents of the files pointed by them by mistake, which has been
+   corrected.
+
+ * "git stash show" learned to optionally show untracked part of the
+   stash.
+
+ * "git log --format='...'" learned "%(describe)" placeholder.
+
+ * "git repack" so far has been only capable of repacking everything
+   under the sun into a single pack (or split by size).  A cleverer
+   strategy to reduce the cost of repacking a repository has been
+   introduced.
+
+ * The http codepath learned to let the credential layer to cache the
+   password used to unlock a certificate that has successfully been
+   used.
+
+ * "git commit --fixup=<commit>", which was to tweak the changes made
+   to the contents while keeping the original log message intact,
+   learned "--fixup=(amend|reword):<commit>", that can be used to
+   tweak both the message and the contents, and only the message,
+   respectively.
+
+ * When accessing a server with a URL like https://user:pass@site/, we
+   did not to fall back to the basic authentication with the
+   credential material embedded in the URL after the "Negotiate"
+   authentication failed.  Now we do.
+
+ * "git send-email" learned to honor the core.hooksPath configuration.
+
+ * "git format-patch -v<n>" learned to allow a reroll count that is
+   not an integer.
+
+ * "git commit" learned "--trailer <key>[=<value>]" option; together
+   with the interpret-trailers command, this will make it easier to
+   support custom trailers.
+
+
+Performance, Internal Implementation, Development Support etc.
+
+ * Rename detection rework continues.
+
+ * GIT_TEST_FAIL_PREREQS is a mechanism to skip test pieces with
+   prerequisites to catch broken tests that depend on the side effects
+   of optional pieces, but did not work at all when negative
+   prerequisites were involved.
+   (merge 27d578d904 jk/fail-prereq-testfix later to maint).
+
+ * "git diff-index" codepath has been taught to trust fsmonitor status
+   to reduce number of lstat() calls.
+   (merge 7e5aa13d2c nk/diff-index-fsmonitor later to maint).
+
+ * Reorganize Makefile to allow building git.o and other essential
+   objects without extra stuff needed only for testing.
+
+ * Preparatory API changes for parallel checkout.
+
+ * A simple IPC interface gets introduced to build services like
+   fsmonitor on top.
+
+ * Fsck API clean-up.
+
+ * SECURITY.md that is facing individual contributors and end users
+   has been introduced.  Also a procedure to follow when preparing
+   embargoed releases has been spelled out.
+   (merge 09420b7648 js/security-md later to maint).
+
+ * Optimize "rev-list --use-bitmap-index --objects" corner case that
+   uses negative tags as the stopping points.
+
+ * CMake update for vsbuild.
+
+
+Fixes since v2.31
+-----------------
+
+ * The fsmonitor interface read from its input without making sure
+   there is something to read from.  This bug is new in 2.31
+   timeframe.
+
+ * The data structure used by fsmonitor interface was not properly
+   duplicated during an in-core merge, leading to use-after-free etc.
+
+ * "git bisect" reimplemented more in C during 2.30 timeframe did not
+   take an annotated tag as a good/bad endpoint well.  This regression
+   has been corrected.
+
+ * Fix macros that can silently inject unintended null-statements.
+
+ * CALLOC_ARRAY() macro replaces many uses of xcalloc().
+
+ * Update insn in Makefile comments to run fuzz-all target.
+
+ * Fix a corner case bug in "git mv" on case insensitive systems,
+   which was introduced in 2.29 timeframe.
+
+ * We had a code to diagnose and die cleanly when a required
+   clean/smudge filter is missing, but an assert before that
+   unnecessarily fired, hiding the end-user facing die() message.
+   (merge 6fab35f748 mt/cleanly-die-upon-missing-required-filter later to maint).
+
+ * Update C code that sets a few configuration variables when a remote
+   is configured so that it spells configuration variable names in the
+   canonical camelCase.
+   (merge 0f1da600e6 ab/remote-write-config-in-camel-case later to maint).
+
+ * A new configuration variable has been introduced to allow choosing
+   which version of the generation number gets used in the
+   commit-graph file.
+   (merge 702110aac6 ds/commit-graph-generation-config later to maint).
+
+ * Perf test update to work better in secondary worktrees.
+   (merge 36e834abc1 jk/perf-in-worktrees later to maint).
+
+ * Updates to memory allocation code around the use of pcre2 library.
+   (merge c1760352e0 ab/grep-pcre2-allocfix later to maint).
+
+ * "git -c core.bare=false clone --bare ..." would have segfaulted,
+   which has been corrected.
+   (merge 75555676ad bc/clone-bare-with-conflicting-config later to maint).
+
+ * When "git checkout" removes a path that does not exist in the
+   commit it is checking out, it wasn't careful enough not to follow
+   symbolic links, which has been corrected.
+   (merge fab78a0c3d mt/checkout-remove-nofollow later to maint).
+
+ * A few option description strings started with capital letters,
+   which were corrected.
+   (merge 5ee90326dc cc/downcase-opt-help later to maint).
+
+ * Plug or annotate remaining leaks that trigger while running the
+   very basic set of tests.
+   (merge 68ffe095a2 ah/plugleaks later to maint).
+
+ * The hashwrite() API uses a buffering mechanism to avoid calling
+   write(2) too frequently. This logic has been refactored to be
+   easier to understand.
+   (merge ddaf1f62e3 ds/clarify-hashwrite later to maint).
+
+ * Other code cleanup, docfix, build fix, etc.
+   (merge f451960708 dl/cat-file-doc-cleanup later to maint).
+   (merge 12604a8d0c sv/t9801-test-path-is-file-cleanup later to maint).
+   (merge ea7e63921c jr/doc-ignore-typofix later to maint).
+   (merge 23c781f173 ps/update-ref-trans-hook-doc later to maint).
+   (merge 42efa1231a jk/filter-branch-sha256 later to maint).
+   (merge 4c8e3dca6e tb/push-simple-uses-branch-merge-config later to maint).
+   (merge 6534d436a2 bs/asciidoctor-installation-hints later to maint).
+   (merge 47957485b3 ab/read-tree later to maint).
+   (merge 2be927f3d1 ab/diff-no-index-tests later to maint).
+   (merge 76593c09bb ab/detox-gettext-tests later to maint).
+   (merge 28e29ee38b jc/doc-format-patch-clarify later to maint).
index dc3bceb6d1cad4f14bc00ace9618716dd459cb04..117f4cf80645e13b991534318ed7d7eb33e62fa1 100644 (file)
@@ -1,6 +1,6 @@
 -b::
        Show blank SHA-1 for boundary commits.  This can also
-       be controlled via the `blame.blankboundary` config option.
+       be controlled via the `blame.blankBoundary` config option.
 
 --root::
        Do not treat root commits as boundaries.  This can also be
index 6ba50b1104aa798cc80c92a521da39a026d82955..bf82766a6a272d3c42d93249ba64cf1a880088e1 100644 (file)
@@ -46,7 +46,7 @@ Subsection names are case sensitive and can contain any characters except
 newline and the null byte. Doublequote `"` and backslash can be included
 by escaping them as `\"` and `\\`, respectively. Backslashes preceding
 other characters are dropped when reading; for example, `\t` is read as
-`t` and `\0` is read as `0` Section headers cannot span multiple lines.
+`t` and `\0` is read as `0`. Section headers cannot span multiple lines.
 Variables may belong directly to a section or to a given subsection. You
 can have `[section]` if you have `[section "subsection"]`, but you don't
 need to.
@@ -398,6 +398,8 @@ include::config/interactive.txt[]
 
 include::config/log.txt[]
 
+include::config/lsrefs.txt[]
+
 include::config/mailinfo.txt[]
 
 include::config/mailmap.txt[]
index 47de36a5fedfbe8b4e0f76efcf65b59534063435..7bcfbd18a52a7a2ddfada41a245bb80d882a1bce 100644 (file)
@@ -2,3 +2,7 @@ clone.defaultRemoteName::
        The name of the remote to create when cloning a repository.  Defaults to
        `origin`, and can be overridden by passing the `--origin` command-line
        option to linkgit:git-clone[1].
+
+clone.rejectShallow::
+       Reject to clone a repository if it is a shallow one, can be overridden by
+       passing option `--reject-shallow` in command line. See linkgit:git-clone[1]
index 4582c39fc462757b05a9b1c3871d29e1c373c605..30604e4a4c296783f55dd3644d866b8775796db2 100644 (file)
@@ -1,3 +1,9 @@
+commitGraph.generationVersion::
+       Specifies the type of generation number version to use when writing
+       or reading the commit-graph file. If version 1 is specified, then
+       the corrected commit dates will not be written or read. Defaults to
+       2.
+
 commitGraph.maxNewFilters::
        Specifies the default value for the `--max-new-filters` option of `git
        commit-graph write` (c.f., linkgit:git-commit-graph[1]).
index dc77f8c8446801fddbce2dff1ef4e678f431e202..79c79d66174ebd9f2dfb867a6a39a339529b7fc0 100644 (file)
@@ -4,4 +4,4 @@ init.templateDir::
 
 init.defaultBranch::
        Allows overriding the default branch name e.g. when initializing
-       a new repository or when cloning an empty repository.
+       a new repository.
diff --git a/Documentation/config/lsrefs.txt b/Documentation/config/lsrefs.txt
new file mode 100644 (file)
index 0000000..adeda0f
--- /dev/null
@@ -0,0 +1,9 @@
+lsrefs.unborn::
+       May be "advertise" (the default), "allow", or "ignore". If "advertise",
+       the server will respond to the client sending "unborn" (as described in
+       protocol-v2.txt) and will advertise support for this feature during the
+       protocol v2 capability advertisement. "allow" is the same as
+       "advertise" except that the server will not advertise support for this
+       feature; this is useful for load-balanced servers that cannot be
+       updated atomically (for example), since the administrator could
+       configure "allow", then after a delay, configure "advertise".
index a5ead09e4bc2d1ca8834b332322315bcc72f352c..18f056213145e595d0a57792e716f29521122997 100644 (file)
@@ -15,8 +15,9 @@ maintenance.strategy::
 * `none`: This default setting implies no task are run at any schedule.
 * `incremental`: This setting optimizes for performing small maintenance
   activities that do not delete any data. This does not schedule the `gc`
-  task, but runs the `prefetch` and `commit-graph` tasks hourly and the
-  `loose-objects` and `incremental-repack` tasks daily.
+  task, but runs the `prefetch` and `commit-graph` tasks hourly, the
+  `loose-objects` and `incremental-repack` tasks daily, and the `pack-refs`
+  task weekly.
 
 maintenance.<task>.enabled::
        This boolean config option controls whether the maintenance task
index 16a27443a3edc1d1a1f25ea03bad04896caa59c8..cafbbef46ae9c102e9e175e67282badb67e09255 100644 (file)
@@ -13,6 +13,11 @@ mergetool.<tool>.cmd::
        merged; 'MERGED' contains the name of the file to which the merge
        tool should write the results of a successful merge.
 
+mergetool.<tool>.hideResolved::
+       Allows the user to override the global `mergetool.hideResolved` value
+       for a specific tool. See `mergetool.hideResolved` for the full
+       description.
+
 mergetool.<tool>.trustExitCode::
        For a custom merge command, specify whether the exit code of
        the merge command can be used to determine whether the merge was
@@ -40,6 +45,16 @@ mergetool.meld.useAutoMerge::
        value of `false` avoids using `--auto-merge` altogether, and is the
        default value.
 
+mergetool.hideResolved::
+       During a merge Git will automatically resolve as many conflicts as
+       possible and write the 'MERGED' file containing conflict markers around
+       any conflicts that it cannot resolve; 'LOCAL' and 'REMOTE' normally
+       represent the versions of the file from before Git's conflict
+       resolution. This flag causes 'LOCAL' and 'REMOTE' to be overwriten so
+       that only the unresolved conflicts are presented to the merge tool. Can
+       be configured per-tool via the `mergetool.<tool>.hideResolved`
+       configuration variable. Defaults to `false`.
+
 mergetool.keepBackup::
        After performing a merge, the original file with conflict markers
        can be saved as a file with a `.orig` extension.  If this variable
index 837f1b16792fe2200afe011cc1dc0868b6590fe6..3da4ea98e2d4b11d0ff3534efd71ceddb93d9ea8 100644 (file)
@@ -133,3 +133,10 @@ pack.writeBitmapHashCache::
        between an older, bitmapped pack and objects that have been
        pushed since the last gc). The downside is that it consumes 4
        bytes per object of disk space. Defaults to true.
+
+pack.writeReverseIndex::
+       When true, git will write a corresponding .rev file (see:
+       link:../technical/pack-format.html[Documentation/technical/pack-format.txt])
+       for each new packfile that it writes in all places except for
+       linkgit:git-fast-import[1] and in the bulk checkin mechanism.
+       Defaults to false.
index 7f7a07d22f86bdfb6b1d12d4625f456b5741bee6..8c979cb20f2a57d624efbbcc32d56339531d49de 100644 (file)
@@ -1,10 +1,3 @@
-rebase.useBuiltin::
-       Unused configuration variable. Used in Git versions 2.20 and
-       2.21 as an escape hatch to enable the legacy shellscript
-       implementation of rebase. Now the built-in rewrite of it in C
-       is always used. Setting this will emit a warning, to alert any
-       remaining users that setting this now does nothing.
-
 rebase.backend::
        Default backend to use for rebasing.  Possible choices are
        'apply' or 'merge'.  In the future, if the merge backend gains
@@ -68,3 +61,6 @@ rebase.rescheduleFailedExec::
        Automatically reschedule `exec` commands that failed. This only makes
        sense in interactive mode (or when an `--exec` option was provided).
        This is the same as specifying the `--reschedule-failed-exec` option.
+
+rebase.forkPoint::
+       If set to false set `--no-fork-point` option by default.
index 00eb35434e883d917d895296e4b1bfd726bac29b..413f907cba059dfac0b7d481a652b253b3c588b5 100644 (file)
@@ -5,6 +5,11 @@ stash.useBuiltin::
        is always used. Setting this will emit a warning, to alert any
        remaining users that setting this now does nothing.
 
+stash.showIncludeUntracked::
+       If this is set to true, the `git stash show` command without an
+       option will show the untracked files of a stash entry.  Defaults to
+       false. See description of 'show' command in linkgit:git-stash[1].
+
 stash.showPatch::
        If this is set to true, the `git stash show` command without an
        option will show the stash entry in patch form.  Defaults to false.
index f1097fac69a6bbbe3c42b13a5a89dc185db526d5..99c455f51c044fda016fc2f41b50ab61baac6718 100644 (file)
@@ -1,10 +1,7 @@
 DATE FORMATS
 ------------
 
-The `GIT_AUTHOR_DATE`, `GIT_COMMITTER_DATE` environment variables
-ifdef::git-commit[]
-and the `--date` option
-endif::git-commit[]
+The `GIT_AUTHOR_DATE` and `GIT_COMMITTER_DATE` environment variables
 support the following date formats:
 
 Git internal format::
@@ -26,3 +23,9 @@ ISO 8601::
 +
 NOTE: In addition, the date part is accepted in the following formats:
 `YYYY.MM.DD`, `MM/DD/YYYY` and `DD.MM.YYYY`.
+
+ifdef::git-commit[]
+In addition to recognizing all date formats above, the `--date` option
+will also try to make sense of other, more human-centric date formats,
+such as relative dates like "yesterday" or "last Friday at noon".
+endif::git-commit[]
index e5733ccb2d1a7a2e6ad419f20a019f526c5d475a..aa2b5c11f20bf3c94a9a7b704ac72dfe24b5900d 100644 (file)
@@ -700,6 +700,14 @@ matches a pattern if removing any number of the final pathname
 components matches the pattern.  For example, the pattern "`foo*bar`"
 matches "`fooasdfbar`" and "`foo/bar/baz/asdf`" but not "`foobarx`".
 
+--skip-to=<file>::
+--rotate-to=<file>::
+       Discard the files before the named <file> from the output
+       (i.e. 'skip to'), or move them to the end of the output
+       (i.e. 'rotate to').  These were invented primarily for use
+       of the `git difftool` command, and may not be very useful
+       otherwise.
+
 ifndef::git-format-patch[]
 -R::
        Swap two inputs; that is, show differences from index or
index 06bc063542f3044cc9fe7ced6ecd4922d2e209e2..decd8ae12278cac8f3ea5e7dc9f1fb15b95629bd 100644 (file)
@@ -79,7 +79,7 @@ OPTIONS
        Pass `-u` flag to 'git mailinfo' (see linkgit:git-mailinfo[1]).
        The proposed commit log message taken from the e-mail
        is re-coded into UTF-8 encoding (configuration variable
-       `i18n.commitencoding` can be used to specify project's
+       `i18n.commitEncoding` can be used to specify project's
        preferred encoding if it is not UTF-8).
 +
 This was optional in prior versions of git, but now it is the
index adaa1782a8b26d4c5fb498ff3a1d33abb8e6ac19..94dc9a54f2d7269bb9b8a4de718b8da54c62c02e 100644 (file)
@@ -78,8 +78,8 @@ renaming. If <newbranch> exists, -M must be used to force the rename
 to happen.
 
 The `-c` and `-C` options have the exact same semantics as `-m` and
-`-M`, except instead of the branch being renamed it along with its
-config and reflog will be copied to a new name.
+`-M`, except instead of the branch being renamed, it will be copied to a
+new name, along with its config and reflog.
 
 With a `-d` or `-D` option, `<branchname>` will be deleted.  You may
 specify more than one branch for deletion.  If the branch currently
@@ -153,7 +153,7 @@ OPTIONS
 --column[=<options>]::
 --no-column::
        Display branch listing in columns. See configuration variable
-       column.branch for option syntax.`--column` and `--no-column`
+       `column.branch` for option syntax. `--column` and `--no-column`
        without options are equivalent to 'always' and 'never' respectively.
 +
 This option is only applicable in non-verbose mode.
index 8e192d87db4c6f8114d591e99f48c8783336d83d..4eb0421b3fd946e709318d835783530bb89e7caa 100644 (file)
@@ -35,42 +35,42 @@ OPTIONS
 
 -t::
        Instead of the content, show the object type identified by
-       <object>.
+       `<object>`.
 
 -s::
        Instead of the content, show the object size identified by
-       <object>.
+       `<object>`.
 
 -e::
-       Exit with zero status if <object> exists and is a valid
-       object. If <object> is of an invalid format exit with non-zero and
+       Exit with zero status if `<object>` exists and is a valid
+       object. If `<object>` is of an invalid format exit with non-zero and
        emits an error on stderr.
 
 -p::
-       Pretty-print the contents of <object> based on its type.
+       Pretty-print the contents of `<object>` based on its type.
 
 <type>::
-       Typically this matches the real type of <object> but asking
+       Typically this matches the real type of `<object>` but asking
        for a type that can trivially be dereferenced from the given
-       <object> is also permitted.  An example is to ask for a
-       "tree" with <object> being a commit object that contains it,
-       or to ask for a "blob" with <object> being a tag object that
+       `<object>` is also permitted.  An example is to ask for a
+       "tree" with `<object>` being a commit object that contains it,
+       or to ask for a "blob" with `<object>` being a tag object that
        points at it.
 
 --textconv::
        Show the content as transformed by a textconv filter. In this case,
-       <object> has to be of the form <tree-ish>:<path>, or :<path> in
+       `<object>` has to be of the form `<tree-ish>:<path>`, or `:<path>` in
        order to apply the filter to the content recorded in the index at
-       <path>.
+       `<path>`.
 
 --filters::
        Show the content as converted by the filters configured in
-       the current working tree for the given <path> (i.e. smudge filters,
-       end-of-line conversion, etc). In this case, <object> has to be of
-       the form <tree-ish>:<path>, or :<path>.
+       the current working tree for the given `<path>` (i.e. smudge filters,
+       end-of-line conversion, etc). In this case, `<object>` has to be of
+       the form `<tree-ish>:<path>`, or `:<path>`.
 
 --path=<path>::
-       For use with --textconv or --filters, to allow specifying an object
+       For use with `--textconv` or `--filters`, to allow specifying an object
        name and a path separately, e.g. when it is difficult to figure out
        the revision from which the blob came.
 
@@ -115,15 +115,15 @@ OPTIONS
        repository.
 
 --allow-unknown-type::
-       Allow -s or -t to query broken/corrupt objects of unknown type.
+       Allow `-s` or `-t` to query broken/corrupt objects of unknown type.
 
 --follow-symlinks::
-       With --batch or --batch-check, follow symlinks inside the
+       With `--batch` or `--batch-check`, follow symlinks inside the
        repository when requesting objects with extended SHA-1
        expressions of the form tree-ish:path-in-tree.  Instead of
        providing output about the link itself, provide output about
        the linked-to object.  If a symlink points outside the
-       tree-ish (e.g. a link to /foo or a root-level link to ../foo),
+       tree-ish (e.g. a link to `/foo` or a root-level link to `../foo`),
        the portion of the link which is outside the tree will be
        printed.
 +
@@ -175,15 +175,15 @@ respectively print:
 
 OUTPUT
 ------
-If `-t` is specified, one of the <type>.
+If `-t` is specified, one of the `<type>`.
 
-If `-s` is specified, the size of the <object> in bytes.
+If `-s` is specified, the size of the `<object>` in bytes.
 
-If `-e` is specified, no output, unless the <object> is malformed.
+If `-e` is specified, no output, unless the `<object>` is malformed.
 
-If `-p` is specified, the contents of <object> are pretty-printed.
+If `-p` is specified, the contents of `<object>` are pretty-printed.
 
-If <type> is specified, the raw (though uncompressed) contents of the <object>
+If `<type>` is specified, the raw (though uncompressed) contents of the `<object>`
 will be returned.
 
 BATCH OUTPUT
@@ -200,7 +200,7 @@ object, with placeholders of the form `%(atom)` expanded, followed by a
 newline. The available atoms are:
 
 `objectname`::
-       The 40-hex object name of the object.
+       The full hex representation of the object name.
 
 `objecttype`::
        The type of the object (the same as `cat-file -t` reports).
@@ -215,8 +215,9 @@ newline. The available atoms are:
 
 `deltabase`::
        If the object is stored as a delta on-disk, this expands to the
-       40-hex sha1 of the delta base object. Otherwise, expands to the
-       null sha1 (40 zeroes). See `CAVEATS` below.
+       full hex representation of the delta base object name.
+       Otherwise, expands to the null OID (all zeroes). See `CAVEATS`
+       below.
 
 `rest`::
        If this atom is used in the output string, input lines are split
@@ -235,14 +236,14 @@ newline.
 For example, `--batch` without a custom format would produce:
 
 ------------
-<sha1> SP <type> SP <size> LF
+<oid> SP <type> SP <size> LF
 <contents> LF
 ------------
 
 Whereas `--batch-check='%(objectname) %(objecttype)'` would produce:
 
 ------------
-<sha1> SP <type> LF
+<oid> SP <type> LF
 ------------
 
 If a name is specified on stdin that cannot be resolved to an object in
@@ -258,7 +259,7 @@ If a name is specified that might refer to more than one object (an ambiguous sh
 <object> SP ambiguous LF
 ------------
 
-If --follow-symlinks is used, and a symlink in the repository points
+If `--follow-symlinks` is used, and a symlink in the repository points
 outside the repository, then `cat-file` will ignore any custom format
 and print:
 
@@ -267,11 +268,11 @@ symlink SP <size> LF
 <symlink> LF
 ------------
 
-The symlink will either be absolute (beginning with a /), or relative
-to the tree root.  For instance, if dir/link points to ../../foo, then
-<symlink> will be ../foo.  <size> is the size of the symlink in bytes.
+The symlink will either be absolute (beginning with a `/`), or relative
+to the tree root.  For instance, if dir/link points to `../../foo`, then
+`<symlink>` will be `../foo`.  `<size>` is the size of the symlink in bytes.
 
-If --follow-symlinks is used, the following error messages will be
+If `--follow-symlinks` is used, the following error messages will be
 displayed:
 
 ------------
index 02d9c19cec7531db4ac9b592030a602d752bedcd..3fe3810f1ce11f9e3f963df4d17449763296d116 100644 (file)
@@ -15,7 +15,7 @@ SYNOPSIS
          [--dissociate] [--separate-git-dir <git dir>]
          [--depth <depth>] [--[no-]single-branch] [--no-tags]
          [--recurse-submodules[=<pathspec>]] [--[no-]shallow-submodules]
-         [--[no-]remote-submodules] [--jobs <n>] [--sparse]
+         [--[no-]remote-submodules] [--jobs <n>] [--sparse] [--[no-]reject-shallow]
          [--filter=<filter>] [--] <repository>
          [<directory>]
 
@@ -149,6 +149,11 @@ objects from the source repository into a pack in the cloned repository.
 --no-checkout::
        No checkout of HEAD is performed after the clone is complete.
 
+--[no-]reject-shallow::
+       Fail if the source repository is a shallow repository.
+       The 'clone.rejectShallow' configuration variable can be used to
+       specify the default.
+
 --bare::
        Make a 'bare' Git repository.  That is, instead of
        creating `<directory>` and placing the administrative
index 17150fa7eabe8092acf09f63220b515a0002a7b4..340c5fbb48fc1ba82fa693048e600186e8556b21 100644 (file)
@@ -9,12 +9,13 @@ SYNOPSIS
 --------
 [verse]
 'git commit' [-a | --interactive | --patch] [-s] [-v] [-u<mode>] [--amend]
-          [--dry-run] [(-c | -C | --fixup | --squash) <commit>]
+          [--dry-run] [(-c | -C | --squash) <commit> | --fixup [(amend|reword):]<commit>)]
           [-F <file> | -m <msg>] [--reset-author] [--allow-empty]
           [--allow-empty-message] [--no-verify] [-e] [--author=<author>]
           [--date=<date>] [--cleanup=<mode>] [--[no-]status]
           [-i | -o] [--pathspec-from-file=<file> [--pathspec-file-nul]]
-          [-S[<keyid>]] [--] [<pathspec>...]
+          [(--trailer <token>[(=|:)<value>])...] [-S[<keyid>]]
+          [--] [<pathspec>...]
 
 DESCRIPTION
 -----------
@@ -86,11 +87,44 @@ OPTIONS
        Like '-C', but with `-c` the editor is invoked, so that
        the user can further edit the commit message.
 
---fixup=<commit>::
-       Construct a commit message for use with `rebase --autosquash`.
-       The commit message will be the subject line from the specified
-       commit with a prefix of "fixup! ".  See linkgit:git-rebase[1]
-       for details.
+--fixup=[(amend|reword):]<commit>::
+       Create a new commit which "fixes up" `<commit>` when applied with
+       `git rebase --autosquash`. Plain `--fixup=<commit>` creates a
+       "fixup!" commit which changes the content of `<commit>` but leaves
+       its log message untouched. `--fixup=amend:<commit>` is similar but
+       creates an "amend!" commit which also replaces the log message of
+       `<commit>` with the log message of the "amend!" commit.
+       `--fixup=reword:<commit>` creates an "amend!" commit which
+       replaces the log message of `<commit>` with its own log message
+       but makes no changes to the content of `<commit>`.
++
+The commit created by plain `--fixup=<commit>` has a subject
+composed of "fixup!" followed by the subject line from <commit>,
+and is recognized specially by `git rebase --autosquash`. The `-m`
+option may be used to supplement the log message of the created
+commit, but the additional commentary will be thrown away once the
+"fixup!" commit is squashed into `<commit>` by
+`git rebase --autosquash`.
++
+The commit created by `--fixup=amend:<commit>` is similar but its
+subject is instead prefixed with "amend!". The log message of
+<commit> is copied into the log message of the "amend!" commit and
+opened in an editor so it can be refined. When `git rebase
+--autosquash` squashes the "amend!" commit into `<commit>`, the
+log message of `<commit>` is replaced by the refined log message
+from the "amend!" commit. It is an error for the "amend!" commit's
+log message to be empty unless `--allow-empty-message` is
+specified.
++
+`--fixup=reword:<commit>` is shorthand for `--fixup=amend:<commit>
+--only`. It creates an "amend!" commit with only a log message
+(ignoring any changes staged in the index). When squashed by `git
+rebase --autosquash`, it replaces the log message of `<commit>`
+without making any other changes.
++
+Neither "fixup!" nor "amend!" commits change authorship of
+`<commit>` when applied by `git rebase --autosquash`.
+See linkgit:git-rebase[1] for details.
 
 --squash=<commit>::
        Construct a commit message for use with `rebase --autosquash`.
@@ -166,6 +200,17 @@ The `-m` option is mutually exclusive with `-c`, `-C`, and `-F`.
 
 include::signoff-option.txt[]
 
+--trailer <token>[(=|:)<value>]::
+       Specify a (<token>, <value>) pair that should be applied as a
+       trailer. (e.g. `git commit --trailer "Signed-off-by:C O Mitter \
+       <committer@example.com>" --trailer "Helped-by:C O Mitter \
+       <committer@example.com>"` will add the "Signed-off-by" trailer
+       and the "Helped-by" trailer to the commit message.)
+       The `trailer.*` configuration variables
+       (linkgit:git-interpret-trailers[1]) can be used to define if
+       a duplicated trailer is omitted, where in the run of trailers
+       each trailer would appear, and other details.
+
 -n::
 --no-verify::
        This option bypasses the pre-commit and commit-msg hooks.
index 484c485fd06c9d52e09b5e7324f5f13fd444e4f9..143b0c49d739aef285aab7b10a0c536257d5f6fc 100644 (file)
@@ -34,6 +34,14 @@ OPTIONS
        This is the default behaviour; the option is provided to
        override any configuration settings.
 
+--rotate-to=<file>::
+       Start showing the diff for the given path,
+       the paths before it will move to end and output.
+
+--skip-to=<file>::
+       Start showing the diff for the given path, skipping all
+       the paths before it.
+
 -t <tool>::
 --tool=<tool>::
        Use the diff tool specified by <tool>.  Valid values include
index 2962f85a502a341cc3fa899ca167445fb0c6b320..2ae2478de706ce064f6e3d62eed204d9a7c48325 100644 (file)
@@ -260,11 +260,9 @@ contents:lines=N::
        The first `N` lines of the message.
 
 Additionally, the trailers as interpreted by linkgit:git-interpret-trailers[1]
-are obtained as `trailers` (or by using the historical alias
-`contents:trailers`).  Non-trailer lines from the trailer block can be omitted
-with `trailers:only`. Whitespace-continuations can be removed from trailers so
-that each trailer appears on a line by itself with its full content with
-`trailers:unfold`. Both can be used together as `trailers:unfold,only`.
+are obtained as `trailers[:options]` (or by using the historical alias
+`contents:trailers[:options]`). For valid [:option] values see `trailers`
+section of linkgit:git-log[1].
 
 For sorting purposes, fields with numeric values sort in numeric order
 (`objectsize`, `authordate`, `committerdate`, `creatordate`, `taggerdate`).
index 3e49bf221087c06c7850e66cdc833b92d7dcb9bc..911da181a108d274fba46b30ead171ee0e22d89d 100644 (file)
@@ -36,11 +36,28 @@ SYNOPSIS
 DESCRIPTION
 -----------
 
-Prepare each commit with its patch in
-one file per commit, formatted to resemble UNIX mailbox format.
+Prepare each commit with its "patch" in
+one "message" per commit, formatted to resemble a UNIX mailbox.
 The output of this command is convenient for e-mail submission or
 for use with 'git am'.
 
+A "message" generated by the command consists of three parts:
+
+* A brief metadata header that begins with `From <commit>`
+  with a fixed `Mon Sep 17 00:00:00 2001` datestamp to help programs
+  like "file(1)" to recognize that the file is an output from this
+  command, fields that record the author identity, the author date,
+  and the title of the change (taken from the first paragraph of the
+  commit log message).
+
+* The second and subsequent paragraphs of the commit log message.
+
+* The "patch", which is the "diff -p --stat" output (see
+  linkgit:git-diff[1]) between the commit and its parent.
+
+The log message and the patch is separated by a line with a
+three-dash line.
+
 There are two ways to specify which commits to operate on.
 
 1. A single commit, <since>, specifies that the commits leading
@@ -221,6 +238,11 @@ populated with placeholder text.
        `--subject-prefix` option) has ` v<n>` appended to it.  E.g.
        `--reroll-count=4` may produce `v4-0001-add-makefile.patch`
        file that has "Subject: [PATCH v4 1/20] Add makefile" in it.
+       `<n>` does not have to be an integer (e.g. "--reroll-count=4.4",
+       or "--reroll-count=4rev2" are allowed), but the downside of
+       using such a reroll-count is that the range-diff/interdiff
+       with the previous version does not state exactly which
+       version the new interation is compared against.
 
 --to=<email>::
        Add a `To:` header to the email headers. This is in addition
index 0c114ad1ca26181776032c3cde957230f23aa602..853967dea01d0778e8d1d484afa9098ab4532ffc 100644 (file)
@@ -117,12 +117,14 @@ NOTES
 'git gc' tries very hard not to delete objects that are referenced
 anywhere in your repository. In particular, it will keep not only
 objects referenced by your current set of branches and tags, but also
-objects referenced by the index, remote-tracking branches, notes saved
-by 'git notes' under refs/notes/, reflogs (which may reference commits
-in branches that were later amended or rewound), and anything else in
-the refs/* namespace.  If you are expecting some objects to be deleted
-and they aren't, check all of those locations and decide whether it
-makes sense in your case to remove those references.
+objects referenced by the index, remote-tracking branches, reflogs
+(which may reference commits in branches that were later amended or
+rewound), and anything else in the refs/* namespace. Note that a note
+(of the kind created by 'git notes') attached to an object does not
+contribute in keeping the object alive. If you are expecting some
+objects to be deleted and they aren't, check all of those locations
+and decide whether it makes sense in your case to remove those
+references.
 
 On the other hand, when 'git gc' runs concurrently with another process,
 there is a risk of it deleting an object that the other process is using
index 4deb4893f517c3a0bc1e01228f0a28818c05daea..9fa17b60e438381391991c92cfa5045f2ace7f14 100644 (file)
@@ -41,11 +41,17 @@ commit-id::
                <commit-id>['\t'<filename-as-in--w>]
 
 --packfile=<hash>::
-       Instead of a commit id on the command line (which is not expected in
+       For internal use only. Instead of a commit id on the command
+       line (which is not expected in
        this case), 'git http-fetch' fetches the packfile directly at the given
        URL and uses index-pack to generate corresponding .idx and .keep files.
        The hash is used to determine the name of the temporary file and is
-       arbitrary. The output of index-pack is printed to stdout.
+       arbitrary. The output of index-pack is printed to stdout. Requires
+       --index-pack-args.
+
+--index-pack-args=<args>::
+       For internal use only. The command to run on the contents of the
+       downloaded pack. Arguments are URL-encoded separated by spaces.
 
 --recover::
        Verify that everything reachable from target is fetched.  Used after
index af0c26232c1e775cf5f4d56ee67c07b6a73a9104..7fa74b9e79876bdbf8f4410185a9983c9f15a064 100644 (file)
@@ -9,17 +9,18 @@ git-index-pack - Build pack index file for an existing packed archive
 SYNOPSIS
 --------
 [verse]
-'git index-pack' [-v] [-o <index-file>] <pack-file>
+'git index-pack' [-v] [-o <index-file>] [--[no-]rev-index] <pack-file>
 'git index-pack' --stdin [--fix-thin] [--keep] [-v] [-o <index-file>]
-                 [<pack-file>]
+                 [--[no-]rev-index] [<pack-file>]
 
 
 DESCRIPTION
 -----------
 Reads a packed archive (.pack) from the specified file, and
-builds a pack index file (.idx) for it.  The packed archive
-together with the pack index can then be placed in the
-objects/pack/ directory of a Git repository.
+builds a pack index file (.idx) for it. Optionally writes a
+reverse-index (.rev) for the specified pack. The packed
+archive together with the pack index can then be placed in
+the objects/pack/ directory of a Git repository.
 
 
 OPTIONS
@@ -35,6 +36,13 @@ OPTIONS
        fails if the name of packed archive does not end
        with .pack).
 
+--[no-]rev-index::
+       When this flag is provided, generate a reverse index
+       (a `.rev` file) corresponding to the given pack. If
+       `--verify` is given, ensure that the existing
+       reverse index is correct. Takes precedence over
+       `pack.writeReverseIndex`.
+
 --stdin::
        When this flag is provided, the pack is read from stdin
        instead and a copy is then written to <pack-file>. If
@@ -78,7 +86,12 @@ OPTIONS
        Die if the pack contains broken links. For internal use only.
 
 --fsck-objects::
-       Die if the pack contains broken objects. For internal use only.
+       For internal use only.
++
+Die if the pack contains broken objects. If the pack contains a tree
+pointing to a .gitmodules blob that does not exist, prints the hash of
+that blob (for the caller to check) after the hash that goes into the
+name of the pack/idx file (see "Notes").
 
 --threads=<n>::
        Specifies the number of threads to spawn when resolving
index 7a6aed0e30c198b0e01375b560fe950466850353..d343f040f5373d7217711b1809f93e6ed11f3196 100644 (file)
@@ -53,7 +53,7 @@ character.
        The commit log message, author name and author email are
        taken from the e-mail, and after minimally decoding MIME
        transfer encoding, re-coded in the charset specified by
-       i18n.commitencoding (defaulting to UTF-8) by transliterating
+       `i18n.commitEncoding` (defaulting to UTF-8) by transliterating
        them.  This used to be optional but now it is the default.
 +
 Note that the patch is always used as-is without charset
@@ -61,7 +61,7 @@ conversion, even with this flag.
 
 --encoding=<encoding>::
        Similar to -u.  But when re-coding, the charset specified here is
-       used instead of the one specified by i18n.commitencoding or UTF-8.
+       used instead of the one specified by `i18n.commitEncoding` or UTF-8.
 
 -n::
        Disable all charset re-coding of the metadata.
index 3b432171d60826f50ad1251d7fa07f3d8f15cc1a..80ddd33ceba0dd5f47319ea8355fec7d35a74bef 100644 (file)
@@ -145,6 +145,12 @@ incremental-repack::
        which is a special case that attempts to repack all pack-files
        into a single pack-file.
 
+pack-refs::
+       The `pack-refs` task collects the loose reference files and
+       collects them into a single file. This speeds up operations that
+       need to iterate across many references. See linkgit:git-pack-refs[1]
+       for more information.
+
 OPTIONS
 -------
 --auto::
index 4da9d240962f24da7daa7ebde7b4f0db4634cdd8..3e8f59ac0e46abc35b88723492fa2d411b2756ca 100644 (file)
@@ -38,6 +38,10 @@ get_merge_tool_cmd::
 get_merge_tool_path::
        returns the custom path for a merge tool.
 
+initialize_merge_tool::
+       bring merge tool specific functions into scope so they can be used or
+       overridden.
+
 run_merge_tool::
        launches a merge tool given the tool name and a true/false
        flag to indicate whether a merge base is present.
index 6b14702e78498ee45f67e0084bea429d484b28cf..e587c7763a7c21664c7586e273f348f70dd061d7 100644 (file)
@@ -99,6 +99,10 @@ success of the resolution after the custom tool has exited.
        (see linkgit:git-config[1]).  To cancel `diff.orderFile`,
        use `-O/dev/null`.
 
+CONFIGURATION
+-------------
+include::config/mergetool.txt[]
+
 TEMPORARY FILES
 ---------------
 `git mergetool` creates `*.orig` backup files while resolving merges.
index eb0caa04393a7136e125c95038b6b740bc215086..ffd601bc17b4dc8f453e6a5b28fb4d6239176d96 100644 (file)
@@ -9,7 +9,8 @@ git-multi-pack-index - Write and verify multi-pack-indexes
 SYNOPSIS
 --------
 [verse]
-'git multi-pack-index' [--object-dir=<dir>] [--[no-]progress] <subcommand>
+'git multi-pack-index' [--object-dir=<dir>] [--[no-]progress]
+       [--preferred-pack=<pack>] <subcommand>
 
 DESCRIPTION
 -----------
@@ -30,7 +31,16 @@ OPTIONS
 The following subcommands are available:
 
 write::
-       Write a new MIDX file.
+       Write a new MIDX file. The following options are available for
+       the `write` sub-command:
++
+--
+       --preferred-pack=<pack>::
+               Optionally specify the tie-breaking pack used when
+               multiple packs contain the same object. If not given,
+               ties are broken in favor of the pack with the lowest
+               mtime.
+--
 
 verify::
        Verify the contents of the MIDX file.
index 54d715ead1373d0feb4eee512fbe8ea8b446216c..25d9fbe37ae8114ddfade186ff50e7757a4eac93 100644 (file)
@@ -85,6 +85,16 @@ base-name::
        reference was included in the resulting packfile.  This
        can be useful to send new tags to native Git clients.
 
+--stdin-packs::
+       Read the basenames of packfiles (e.g., `pack-1234abcd.pack`)
+       from the standard input, instead of object names or revision
+       arguments. The resulting pack contains all objects listed in the
+       included packs (those not beginning with `^`), excluding any
+       objects listed in the excluded packs (beginning with `^`).
++
+Incompatible with `--revs`, or options that imply `--revs` (such as
+`--all`), with the exception of `--unpacked`, which is compatible.
+
 --window=<n>::
 --depth=<n>::
        These two options affect how the objects contained in
@@ -400,6 +410,17 @@ Note that we pick a single island for each regex to go into, using "last
 one wins" ordering (which allows repo-specific config to take precedence
 over user-wide config, and so forth).
 
+
+CONFIGURATION
+-------------
+
+Various configuration variables affect packing, see
+linkgit:git-config[1] (search for "pack" and "delta").
+
+Notably, delta compression is not used on objects larger than the
+`core.bigFileThreshold` configuration variable and on files with the
+attribute `delta` set to false.
+
 SEE ALSO
 --------
 linkgit:git-rev-list[1]
index ab103c82cfdc38c37e7aa0e07c324ca31681ae22..a953c7c38790a8545489ae621113ebe62d9d0fe2 100644 (file)
@@ -600,7 +600,7 @@ EXAMPLES
 
 `git push origin`::
        Without additional configuration, pushes the current branch to
-       the configured upstream (`remote.origin.merge` configuration
+       the configured upstream (`branch.<name>.merge` configuration
        variable) if it has the same name as the current branch, and
        errors out without pushing otherwise.
 +
index 9701c1e5fdd5a016c360b8102f0193dfa0fb90fb..fe350d7f4056e280c9740ae9c601f0c7eb2a1119 100644 (file)
@@ -10,6 +10,7 @@ SYNOPSIS
 [verse]
 'git range-diff' [--color=[<when>]] [--no-color] [<diff-options>]
        [--no-dual-color] [--creation-factor=<factor>]
+       [--left-only | --right-only]
        ( <range1> <range2> | <rev1>...<rev2> | <base> <rev1> <rev2> )
 
 DESCRIPTION
@@ -28,6 +29,17 @@ Finally, the list of matching commits is shown in the order of the
 second commit range, with unmatched commits being inserted just after
 all of their ancestors have been shown.
 
+There are three ways to specify the commit ranges:
+
+- `<range1> <range2>`: Either commit range can be of the form
+  `<base>..<rev>`, `<rev>^!` or `<rev>^-<n>`. See `SPECIFYING RANGES`
+  in linkgit:gitrevisions[7] for more details.
+
+- `<rev1>...<rev2>`. This is equivalent to
+  `<rev2>..<rev1> <rev1>..<rev2>`.
+
+- `<base> <rev1> <rev2>`: This is equivalent to `<base>..<rev1>
+  <base>..<rev2>`.
 
 OPTIONS
 -------
@@ -57,6 +69,14 @@ to revert to color all lines according to the outer diff markers
        See the ``Algorithm`` section below for an explanation why this is
        needed.
 
+--left-only::
+       Suppress commits that are missing from the first specified range
+       (or the "left range" when using the `<rev1>...<rev2>` format).
+
+--right-only::
+       Suppress commits that are missing from the second specified range
+       (or the "right range" when using the `<rev1>...<rev2>` format).
+
 --[no-]notes[=<ref>]::
        This flag is passed to the `git log` program
        (see linkgit:git-log[1]) that generates the patches.
index a0487b5cc58816ac8c4ec700e56a5d116fd61824..f08ae27e2aefc0a2ff81b1ca8fa310f8006a42d7 100644 (file)
@@ -593,16 +593,17 @@ See also INCOMPATIBLE OPTIONS below.
 
 --autosquash::
 --no-autosquash::
-       When the commit log message begins with "squash! ..." (or
-       "fixup! ..."), and there is already a commit in the todo list that
-       matches the same `...`, automatically modify the todo list of rebase
-       -i so that the commit marked for squashing comes right after the
-       commit to be modified, and change the action of the moved commit
-       from `pick` to `squash` (or `fixup`).  A commit matches the `...` if
-       the commit subject matches, or if the `...` refers to the commit's
-       hash. As a fall-back, partial matches of the commit subject work,
-       too.  The recommended way to create fixup/squash commits is by using
-       the `--fixup`/`--squash` options of linkgit:git-commit[1].
+       When the commit log message begins with "squash! ..." or "fixup! ..."
+       or "amend! ...", and there is already a commit in the todo list that
+       matches the same `...`, automatically modify the todo list of
+       `rebase -i`, so that the commit marked for squashing comes right after
+       the commit to be modified, and change the action of the moved commit
+       from `pick` to `squash` or `fixup` or `fixup -C` respectively. A commit
+       matches the `...` if the commit subject matches, or if the `...` refers
+       to the commit's hash. As a fall-back, partial matches of the commit
+       subject work, too. The recommended way to create fixup/amend/squash
+       commits is by using the `--fixup`, `--fixup=amend:` or `--fixup=reword:`
+       and `--squash` options respectively of linkgit:git-commit[1].
 +
 If the `--autosquash` option is enabled by default using the
 configuration variable `rebase.autoSquash`, this option can be
@@ -887,9 +888,17 @@ If you want to fold two or more commits into one, replace the command
 "pick" for the second and subsequent commits with "squash" or "fixup".
 If the commits had different authors, the folded commit will be
 attributed to the author of the first commit.  The suggested commit
-message for the folded commit is the concatenation of the commit
-messages of the first commit and of those with the "squash" command,
-but omits the commit messages of commits with the "fixup" command.
+message for the folded commit is the concatenation of the first
+commit's message with those identified by "squash" commands, omitting the
+messages of commits identified by "fixup" commands, unless "fixup -c"
+is used.  In that case the suggested commit message is only the message
+of the "fixup -c" commit, and an editor is opened allowing you to edit
+the message.  The contents (patch) of the "fixup -c" commit are still
+incorporated into the folded commit. If there is more than one "fixup -c"
+commit, the message from the final one is used.  You can also use
+"fixup -C" to get the same behavior as "fixup -c" except without opening
+an editor.
+
 
 'git rebase' will stop when "pick" has been replaced with "edit" or
 when a command fails due to merge errors. When you are done editing
index 92f146d27dc363519e04d0b132e43b0a4667cac8..317d63cf0d3ae0dcee44e5185fdd8c4a2b201153 100644 (file)
@@ -165,9 +165,35 @@ depth is 4095.
        Pass the `--delta-islands` option to `git-pack-objects`, see
        linkgit:git-pack-objects[1].
 
-Configuration
+-g=<factor>::
+--geometric=<factor>::
+       Arrange resulting pack structure so that each successive pack
+       contains at least `<factor>` times the number of objects as the
+       next-largest pack.
++
+`git repack` ensures this by determining a "cut" of packfiles that need
+to be repacked into one in order to ensure a geometric progression. It
+picks the smallest set of packfiles such that as many of the larger
+packfiles (by count of objects contained in that pack) may be left
+intact.
++
+Unlike other repack modes, the set of objects to pack is determined
+uniquely by the set of packs being "rolled-up"; in other words, the
+packs determined to need to be combined in order to restore a geometric
+progression.
++
+When `--unpacked` is specified, loose objects are implicitly included in
+this "roll-up", without respect to their reachability. This is subject
+to change in the future. This option (implying a drastically different
+repack mode) is not guaranteed to work with all other combinations of
+option to `git repack`).
+
+CONFIGURATION
 -------------
 
+Various configuration variables affect packing, see
+linkgit:git-config[1] (search for "pack" and "delta").
+
 By default, the command passes `--delta-base-offset` option to
 'git pack-objects'; this typically results in slightly smaller packs,
 but the generated packs are incompatible with versions of Git older than
@@ -178,6 +204,10 @@ need to set the configuration variable `repack.UseDeltaBaseOffset` to
 is unaffected by this option as the conversion is performed on the fly
 as needed in that case.
 
+Delta compression is not used on objects larger than the
+`core.bigFileThreshold` configuration variable and on files with the
+attribute `delta` set to false.
+
 SEE ALSO
 --------
 linkgit:git-pack-objects[1]
index 5da66232dc3f7b21106cdeba55cc1d94bce04393..20bb8e82176b89cbbe68403301a43848b2bef912 100644 (file)
@@ -31,6 +31,99 @@ include::rev-list-options.txt[]
 
 include::pretty-formats.txt[]
 
+EXAMPLES
+--------
+
+* Print the list of commits reachable from the current branch.
++
+----------
+git rev-list HEAD
+----------
+
+* Print the list of commits on this branch, but not present in the
+  upstream branch.
++
+----------
+git rev-list @{upstream}..HEAD
+----------
+
+* Format commits with their author and commit message (see also the
+  porcelain linkgit:git-log[1]).
++
+----------
+git rev-list --format=medium HEAD
+----------
+
+* Format commits along with their diffs (see also the porcelain
+  linkgit:git-log[1], which can do this in a single process).
++
+----------
+git rev-list HEAD |
+git diff-tree --stdin --format=medium -p
+----------
+
+* Print the list of commits on the current branch that touched any
+  file in the `Documentation` directory.
++
+----------
+git rev-list HEAD -- Documentation/
+----------
+
+* Print the list of commits authored by you in the past year, on
+  any branch, tag, or other ref.
++
+----------
+git rev-list --author=you@example.com --since=1.year.ago --all
+----------
+
+* Print the list of objects reachable from the current branch (i.e., all
+  commits and the blobs and trees they contain).
++
+----------
+git rev-list --objects HEAD
+----------
+
+* Compare the disk size of all reachable objects, versus those
+  reachable from reflogs, versus the total packed size. This can tell
+  you whether running `git repack -ad` might reduce the repository size
+  (by dropping unreachable objects), and whether expiring reflogs might
+  help.
++
+----------
+# reachable objects
+git rev-list --disk-usage --objects --all
+# plus reflogs
+git rev-list --disk-usage --objects --all --reflog
+# total disk size used
+du -c .git/objects/pack/*.pack .git/objects/??/*
+# alternative to du: add up "size" and "size-pack" fields
+git count-objects -v
+----------
+
+* Report the disk size of each branch, not including objects used by the
+  current branch. This can find outliers that are contributing to a
+  bloated repository size (e.g., because somebody accidentally committed
+  large build artifacts).
++
+----------
+git for-each-ref --format='%(refname)' |
+while read branch
+do
+       size=$(git rev-list --disk-usage --objects HEAD..$branch)
+       echo "$size $branch"
+done |
+sort -n
+----------
+
+* Compare the on-disk size of branches in one group of refs, excluding
+  another. If you co-mingle objects from multiple remotes in a single
+  repository, this can show which remotes are contributing to the
+  repository size (taking the size of `origin` as a baseline).
++
+----------
+git rev-list --disk-usage --objects --remotes=$suspect --not --remotes=origin
+----------
+
 GIT
 ---
 Part of the linkgit:git[1] suite
index c16cc3b6089c6333de23117e5acaff36fa30b76f..c9c7f3065cafcc58efd795e58fb0d0a73da5b77a 100644 (file)
@@ -113,6 +113,10 @@ MAPPING AUTHORS
 
 See linkgit:gitmailmap[5].
 
+Note that if `git shortlog` is run outside of a repository (to process
+log contents on standard input), it will look for a `.mailmap` file in
+the current directory.
+
 GIT
 ---
 Part of the linkgit:git[1] suite
index 31f1beb65baf213908e93d0e90c379d9fb0e7d84..a8c8c32f1e5157cdc7bd543a8882211ebfb1cc14 100644 (file)
@@ -8,8 +8,8 @@ git-stash - Stash the changes in a dirty working directory away
 SYNOPSIS
 --------
 [verse]
-'git stash' list [<options>]
-'git stash' show [<options>] [<stash>]
+'git stash' list [<log-options>]
+'git stash' show [-u|--include-untracked|--only-untracked] [<diff-options>] [<stash>]
 'git stash' drop [-q|--quiet] [<stash>]
 'git stash' ( pop | apply ) [--index] [-q|--quiet] [<stash>]
 'git stash' branch <branchname> [<stash>]
@@ -67,7 +67,7 @@ save [-p|--patch] [-k|--[no-]keep-index] [-u|--include-untracked] [-a|--all] [-q
        Instead, all non-option arguments are concatenated to form the stash
        message.
 
-list [<options>]::
+list [<log-options>]::
 
        List the stash entries that you currently have.  Each 'stash entry' is
        listed with its name (e.g. `stash@{0}` is the latest entry, `stash@{1}` is
@@ -83,7 +83,7 @@ stash@{1}: On master: 9cc0589... Add git-stash
 The command takes options applicable to the 'git log'
 command to control what is shown and how. See linkgit:git-log[1].
 
-show [<options>] [<stash>]::
+show [-u|--include-untracked|--only-untracked] [<diff-options>] [<stash>]::
 
        Show the changes recorded in the stash entry as a diff between the
        stashed contents and the commit back when the stash entry was first
@@ -91,8 +91,8 @@ show [<options>] [<stash>]::
        By default, the command shows the diffstat, but it will accept any
        format known to 'git diff' (e.g., `git stash show -p stash@{1}`
        to view the second most recent entry in patch form).
-       You can use stash.showStat and/or stash.showPatch config variables
-       to change the default behavior.
+       You can use stash.showIncludeUntracked, stash.showStat, and
+       stash.showPatch config variables to change the default behavior.
 
 pop [--index] [-q|--quiet] [<stash>]::
 
@@ -160,10 +160,18 @@ up with `git clean`.
 
 -u::
 --include-untracked::
-       This option is only valid for `push` and `save` commands.
+--no-include-untracked::
+       When used with the `push` and `save` commands,
+       all untracked files are also stashed and then cleaned up with
+       `git clean`.
++
+When used with the `show` command, show the untracked files in the stash
+entry as part of the diff.
+
+--only-untracked::
+       This option is only valid for the `show` command.
 +
-All untracked files are also stashed and then cleaned up with
-`git clean`.
+Show only the untracked files in the stash entry as part of the diff.
 
 --index::
        This option is only valid for `pop` and `apply` commands.
index c0764e850a44adde9499c6e601dace9320116f38..83f38e31981420e3fbbb52ab00407cca6c7fceab 100644 (file)
@@ -130,7 +130,7 @@ ignored, then the directory is not shown, but all contents are shown.
 --column[=<options>]::
 --no-column::
        Display untracked files in columns. See configuration variable
-       column.status for option syntax.`--column` and `--no-column`
+       `column.status` for option syntax. `--column` and `--no-column`
        without options are equivalent to 'always' and 'never'
        respectively.
 
index 56656d1be60331cf9896b02e0ccf553c83d88b01..31a97a1b6c5b22ab5c8b959a8a550126f26146d2 100644 (file)
@@ -134,7 +134,7 @@ options for details.
 --column[=<options>]::
 --no-column::
        Display tag listing in columns. See configuration variable
-       column.tag for option syntax.`--column` and `--no-column`
+       `column.tag` for option syntax. `--column` and `--no-column`
        without options are equivalent to 'always' and 'never' respectively.
 +
 This option is only applicable when listing tags without annotation lines.
index d36e6fd482530b960ac9ff6544c84cbff638c585..3a9c44987f998c6a767c4dc19755e4e0c10d9411 100644 (file)
@@ -88,7 +88,7 @@ foo.bar= ...`) sets `foo.bar` to the empty string which `git config
        empty string, instead the environment variable itself must be
        set to the empty string.  It is an error if the `<envvar>` does not exist
        in the environment. `<envvar>` may not contain an equals sign
-       to avoid ambiguity with `<name>`s which contain one.
+       to avoid ambiguity with `<name>` containing one.
 +
 This is useful for cases where you want to pass transitory
 configuration options to git, but are doing so on OS's where
index e84e104f9325526bad7dca6043e897ad21b41906..0a60472bb599fa5cbaecd37cc75f959e75c0078f 100644 (file)
@@ -1174,7 +1174,8 @@ tag then no replacement will be done.  The placeholders are the same
 as those for the option `--pretty=format:` of linkgit:git-log[1],
 except that they need to be wrapped like this: `$Format:PLACEHOLDERS$`
 in the file.  E.g. the string `$Format:%H$` will be replaced by the
-commit hash.
+commit hash.  However, only one `%(describe)` placeholder is expanded
+per archive to avoid denial-of-service attacks.
 
 
 Packing objects
index 8673a5c5b2f2ce5e2de492e1b052a8690fc2e6ee..0d57f86abc4a51c9665f88ff34103bbe94f09009 100644 (file)
@@ -74,6 +74,7 @@ into another list.  There are currently 5 such transformations:
 - diffcore-merge-broken
 - diffcore-pickaxe
 - diffcore-order
+- diffcore-rotate
 
 These are applied in sequence.  The set of filepairs 'git diff-{asterisk}'
 commands find are used as the input to diffcore-break, and
@@ -296,6 +297,26 @@ Documentation
 t
 ------------------------------------------------
 
+diffcore-rotate: For Changing At Which Path Output Starts
+---------------------------------------------------------
+
+This transformation takes one pathname, and rotates the set of
+filepairs so that the filepair for the given pathname comes first,
+optionally discarding the paths that come before it.  This is used
+to implement the `--skip-to` and the `--rotate-to` options.  It is
+an error when the specified pathname is not in the set of filepairs,
+but it is not useful to error out when used with "git log" family of
+commands, because it is unreasonable to expect that a given path
+would be modified by each and every commit shown by the "git log"
+command.  For this reason, when used with "git log", the filepair
+that sorts the same as, or the first one that sorts after, the given
+pathname is where the output starts.
+
+Use of this transformation combined with diffcore-order will produce
+unexpected results, as the input to this transformation is likely
+not sorted when diffcore-order is in effect.
+
+
 SEE ALSO
 --------
 linkgit:git-diff[1],
index 1f3b57d04db6ca3b98e720b83362610b9198fbac..b51959ff9418fd75583f41d77fe2603617ed563c 100644 (file)
@@ -138,7 +138,7 @@ given); `template` (if a `-t` option was given or the
 configuration option `commit.template` is set); `merge` (if the
 commit is a merge or a `.git/MERGE_MSG` file exists); `squash`
 (if a `.git/SQUASH_MSG` file exists); or `commit`, followed by
-a commit SHA-1 (if a `-c`, `-C` or `--amend` option was given).
+a commit object name (if a `-c`, `-C` or `--amend` option was given).
 
 If the exit status is non-zero, `git commit` will abort.
 
@@ -231,19 +231,19 @@ named remote is not being used both values will be the same.
 Information about what is to be pushed is provided on the hook's standard
 input with lines of the form:
 
-  <local ref> SP <local sha1> SP <remote ref> SP <remote sha1> LF
+  <local ref> SP <local object name> SP <remote ref> SP <remote object name> LF
 
 For instance, if the command +git push origin master:foreign+ were run the
 hook would receive a line like the following:
 
   refs/heads/master 67890 refs/heads/foreign 12345
 
-although the full, 40-character SHA-1s would be supplied.  If the foreign ref
-does not yet exist the `<remote SHA-1>` will be 40 `0`.  If a ref is to be
-deleted, the `<local ref>` will be supplied as `(delete)` and the `<local
-SHA-1>` will be 40 `0`.  If the local commit was specified by something other
-than a name which could be expanded (such as `HEAD~`, or a SHA-1) it will be
-supplied as it was originally given.
+although the full object name would be supplied.  If the foreign ref does not
+yet exist the `<remote object name>` will be the all-zeroes object name.  If a
+ref is to be deleted, the `<local ref>` will be supplied as `(delete)` and the
+`<local object name>` will be the all-zeroes object name.  If the local commit
+was specified by something other than a name which could be expanded (such as
+`HEAD~`, or an object name) it will be supplied as it was originally given.
 
 If this hook exits with a non-zero status, `git push` will abort without
 pushing anything.  Information about why the push is rejected may be sent
@@ -268,7 +268,7 @@ input a line of the format:
 where `<old-value>` is the old object name stored in the ref,
 `<new-value>` is the new object name to be stored in the ref and
 `<ref-name>` is the full name of the ref.
-When creating a new ref, `<old-value>` is 40 `0`.
+When creating a new ref, `<old-value>` is the all-zeroes object name.
 
 If the hook exits with non-zero status, none of the refs will be
 updated. If the hook exits with zero, updating of individual refs can
@@ -473,7 +473,8 @@ reference-transaction
 
 This hook is invoked by any Git command that performs reference
 updates. It executes whenever a reference transaction is prepared,
-committed or aborted and may thus get called multiple times.
+committed or aborted and may thus get called multiple times. The hook
+does not cover symbolic references (but that may change in the future).
 
 The hook takes exactly one argument, which is the current state the
 given reference transaction is in:
@@ -492,6 +493,14 @@ receives on standard input a line of the format:
 
   <old-value> SP <new-value> SP <ref-name> LF
 
+where `<old-value>` is the old object name passed into the reference
+transaction, `<new-value>` is the new object name to be stored in the
+ref and `<ref-name>` is the full name of the ref. When force updating
+the reference regardless of its current value or when the reference is
+to be created anew, `<old-value>` is the all-zeroes object name. To
+distinguish these cases, you can inspect the current value of
+`<ref-name>` via `git rev-parse`.
+
 The exit status of the hook is ignored for any state except for the
 "prepared" state. In the "prepared" state, a non-zero exit status will
 cause the transaction to be aborted. The hook will not be called with
@@ -550,7 +559,7 @@ command-dependent arguments may be passed in the future.
 The hook receives a list of the rewritten commits on stdin, in the
 format
 
-  <old-sha1> SP <new-sha1> [ SP <extra-info> ] LF
+  <old-object-name> SP <new-object-name> [ SP <extra-info> ] LF
 
 The 'extra-info' is again command-dependent.  If it is empty, the
 preceding SP is also omitted.  Currently, no commands pass any
@@ -566,7 +575,7 @@ rebase::
        For the 'squash' and 'fixup' operation, all commits that were
        squashed are listed as being rewritten to the squashed commit.
        This means that there will be several lines sharing the same
-       'new-sha1'.
+       'new-object-name'.
 +
 The commits are guaranteed to be listed in the order that they were
 processed by rebase.
index d47b1ae29637269859bc7f41d0fc49732c8f39aa..5751603b13f40cfd4b1d5b577fd0596e5b50f537 100644 (file)
@@ -153,7 +153,7 @@ EXAMPLES
 --------
 
  - The pattern `hello.*` matches any file or folder
-   whose name begins with `hello`. If one wants to restrict
+   whose name begins with `hello.`. If one wants to restrict
    this only to the directory and not in its subdirectories,
    one can prepend the pattern with a slash, i.e. `/hello.*`;
    the pattern now matches `hello.txt`, `hello.c` but not
index 052209b33b4ffa5c83b3aa49efc0e0e275fbdc62..3fb39f801fb13c51d598eb72cb8cc2a54ffa75c7 100644 (file)
@@ -50,9 +50,9 @@ which allows mailmap to replace both the name and the email of a
 commit matching both the specified commit name and email address.
 
 Both E-Mails and names are matched case-insensitively. For example
-this would also match the 'Commit Name <commit@email.xx>' above:
+this would also match the 'Commit Name <commit&#64;email.xx>' above:
 --
-Proper Name <proper@email.xx> CoMmIt NaMe <CoMmIt@EmAiL.xX>
+       Proper Name <proper@email.xx> CoMmIt NaMe <CoMmIt@EmAiL.xX>
 --
 
 EXAMPLES
@@ -79,9 +79,9 @@ Jane Doe <jane@example.com>
 Jane Doe <jane@desktop.(none)>
 ------------
 
-Note that there's no need to map the name for 'jane@laptop.(none)' to
+Note that there's no need to map the name for '<jane&#64;laptop.(none)>' to
 only correct the names. However, leaving the obviously broken
-`<jane@laptop.(none)>' and '<jane@desktop.(none)>' E-Mails as-is is
+'<jane&#64;laptop.(none)>' and '<jane&#64;desktop.(none)>' E-Mails as-is is
 usually not what you want. A `.mailmap` file which also corrects those
 is:
 
diff --git a/Documentation/howto/coordinate-embargoed-releases.txt b/Documentation/howto/coordinate-embargoed-releases.txt
new file mode 100644 (file)
index 0000000..601aae8
--- /dev/null
@@ -0,0 +1,131 @@
+Content-type: text/asciidoc
+Abstract: When a critical vulnerability is discovered and fixed, we follow this
+ script to coordinate a public release.
+
+How we coordinate embargoed releases
+====================================
+
+To protect Git users from critical vulnerabilities, we do not just release
+fixed versions like regular maintenance releases. Instead, we coordinate
+releases with packagers, keeping the fixes under an embargo until the release
+date. That way, users will have a chance to upgrade on that date, no matter
+what Operating System or distribution they run.
+
+Open a Security Advisory draft
+------------------------------
+
+The first step is to https://github.com/git/git/security/advisories/new[open an
+advisory]. Technically, it is not necessary, but it is convenient and saves a
+bit of hassle. This advisory can also be used to obtain the CVE number and it
+will give us a private fork associated with it that can be used to collaborate
+on a fix.
+
+Release date of the embargoed version
+-------------------------------------
+
+If the vulnerability affects Windows users, we want to have our friends over at
+Visual Studio on board. This means we need to target a "Patch Tuesday" (i.e. a
+second Tuesday of the month), at the minimum three weeks from heads-up to
+coordinated release.
+
+If the vulnerability affects the server side, or can benefit from scans on the
+server side (i.e. if `git fsck` can detect an attack), it is important to give
+all involved Git repository hosting sites enough time to scan all of those
+repositories.
+
+Notifying the Linux distributions
+---------------------------------
+
+At most two weeks before release date, we need to send a notification to
+distros@vs.openwall.org, preferably less than 7 days before the release date.
+This will reach most (all?) Linux distributions. See an example below, and the
+guidelines for this mailing list at
+https://oss-security.openwall.org/wiki/mailing-lists/distros#how-to-use-the-lists[here].
+
+Once the version has been published, we send a note about that to oss-security.
+As an example, see https://www.openwall.com/lists/oss-security/2019/12/13/1[the
+v2.24.1 mail];
+https://oss-security.openwall.org/wiki/mailing-lists/oss-security[Here] are
+their guidelines.
+
+The mail to oss-security should also describe the exploit, and give credit to
+the reporter(s): security researchers still receive too little respect for the
+invaluable service they provide, and public credit goes a long way to keep them
+paid by their respective organizations.
+
+Technically, describing any exploit can be delayed up to 7 days, but we usually
+refrain from doing that, including it right away.
+
+As a courtesy we typically attach a Git bundle (as `.tar.xz` because the list
+will drop `.bundle` attachments) in the mail to distros@ so that the involved
+parties can take care of integrating/backporting them. This bundle is typically
+created using a command like this:
+
+       git bundle create cve-xxx.bundle ^origin/master vA.B.C vD.E.F
+       tar cJvf cve-xxx.bundle.tar.xz cve-xxx.bundle
+
+Example mail to distros@vs.openwall.org
+---------------------------------------
+
+....
+To: distros@vs.openwall.org
+Cc: git-security@googlegroups.com, <other people involved in the report/fix>
+Subject: [vs] Upcoming Git security fix release
+
+Team,
+
+The Git project will release new versions on <date> at 10am Pacific Time or
+soon thereafter. I have attached a Git bundle (embedded in a `.tar.xz` to avoid
+it being dropped) which you can fetch into a clone of
+https://github.com/git/git via `git fetch --tags /path/to/cve-xxx.bundle`,
+containing the tags for versions <versions>.
+
+You can verify with `git tag -v <tag>` that the versions were signed by
+the Git maintainer, using the same GPG key as e.g. v2.24.0.
+
+Please use these tags to prepare `git` packages for your various
+distributions, using the appropriate tagged versions. The added test cases
+help verify the correctness.
+
+The addressed issues are:
+
+<list of CVEs with a short description, typically copy/pasted from Git's
+release notes, usually demo exploit(s), too>
+
+Credit for finding the vulnerability goes to <reporter>, credit for fixing
+it goes to <developer>.
+
+Thanks,
+<name>
+
+....
+
+Example mail to oss-security@lists.openwall.com
+-----------------------------------------------
+
+....
+To: oss-security@lists.openwall.com
+Cc: git-security@googlegroups.com, <other people involved in the report/fix>
+Subject: git: <copy from security advisory>
+
+Team,
+
+The Git project released new versions on <date>, addressing <CVE>.
+
+All supported platforms are affected in one way or another, and all Git
+versions all the way back to <version> are affected. The fixed versions are:
+<versions>.
+
+Link to the announcement: <link to lore.kernel.org/git>
+
+We highly recommend to upgrade.
+
+The addressed issues are:
+* <list of CVEs and their explanations, along with demo exploits>
+
+Credit for finding the vulnerability goes to <reporter>, credit for fixing
+it goes to <developer>.
+
+Thanks,
+<name>
+....
index 7e36e5b55b1ab89ed67ca02f5327e928c853183d..6c6baeeeb75bd8ff15e7b2ec1f3c394e0c9ef845 100644 (file)
@@ -38,7 +38,7 @@ mind.
   a warning if the commit log message given to it does not look
   like a valid UTF-8 string, unless you explicitly say your
   project uses a legacy encoding.  The way to say this is to
-  have i18n.commitencoding in `.git/config` file, like this:
+  have `i18n.commitEncoding` in `.git/config` file, like this:
 +
 ------------
 [i18n]
index 6b59e28d444f8e1f033f435ce0c396aca2516865..45133066e412201020a37eaae275857acb412204 100644 (file)
@@ -208,6 +208,19 @@ The placeholders are:
 '%cs':: committer date, short format (`YYYY-MM-DD`)
 '%d':: ref names, like the --decorate option of linkgit:git-log[1]
 '%D':: ref names without the " (", ")" wrapping.
+'%(describe[:options])':: human-readable name, like
+                         linkgit:git-describe[1]; empty string for
+                         undescribable commits.  The `describe` string
+                         may be followed by a colon and zero or more
+                         comma-separated options.  Descriptions can be
+                         inconsistent when tags are added or removed at
+                         the same time.
++
+** 'match=<pattern>': Only consider tags matching the given
+   `glob(7)` pattern, excluding the "refs/tags/" prefix.
+** 'exclude=<pattern>': Do not consider tags matching the given
+   `glob(7)` pattern, excluding the "refs/tags/" prefix.
+
 '%S':: ref name given on the command line by which the commit was reached
        (like `git log --source`), only works with `git log`
 '%e':: encoding
index 96cc89d157d21f0cbf9cee35db0c49bc4cb18dae..b1c8f86c6efc128514533ef21b3e0272b8680838 100644 (file)
@@ -129,10 +129,10 @@ parents) and `--max-parents=-1` (negative numbers denote no upper limit).
        adjusting to updated upstream from time to time, and
        this option allows you to ignore the individual commits
        brought in to your history by such a merge.
-
 ifdef::git-log[]
-       This option also changes default diff format for merge commits
-       to `first-parent`, see `--diff-merges=first-parent` for details.
++
+This option also changes default diff format for merge commits
+to `first-parent`, see `--diff-merges=first-parent` for details.
 endif::git-log[]
 
 --not::
@@ -227,6 +227,15 @@ ifdef::git-rev-list[]
        test the exit status to see if a range of objects is fully
        connected (or not).  It is faster than redirecting stdout
        to `/dev/null` as the output does not have to be formatted.
+
+--disk-usage::
+       Suppress normal output; instead, print the sum of the bytes used
+       for on-disk storage by the selected commits or objects. This is
+       equivalent to piping the output into `git cat-file
+       --batch-check='%(objectsize:disk)'`, except that it runs much
+       faster (especially with `--use-bitmap-index`). See the `CAVEATS`
+       section in linkgit:git-cat-file[1] for the limitations of what
+       "on-disk storage" means.
 endif::git-rev-list[]
 
 --cherry-mark::
diff --git a/Documentation/technical/api-simple-ipc.txt b/Documentation/technical/api-simple-ipc.txt
new file mode 100644 (file)
index 0000000..d79ad32
--- /dev/null
@@ -0,0 +1,105 @@
+Simple-IPC API
+==============
+
+The Simple-IPC API is a collection of `ipc_` prefixed library routines
+and a basic communication protocol that allow an IPC-client process to
+send an application-specific IPC-request message to an IPC-server
+process and receive an application-specific IPC-response message.
+
+Communication occurs over a named pipe on Windows and a Unix domain
+socket on other platforms.  IPC-clients and IPC-servers rendezvous at
+a previously agreed-to application-specific pathname (which is outside
+the scope of this design) that is local to the computer system.
+
+The IPC-server routines within the server application process create a
+thread pool to listen for connections and receive request messages
+from multiple concurrent IPC-clients.  When received, these messages
+are dispatched up to the server application callbacks for handling.
+IPC-server routines then incrementally relay responses back to the
+IPC-client.
+
+The IPC-client routines within a client application process connect
+to the IPC-server and send a request message and wait for a response.
+When received, the response is returned back the caller.
+
+For example, the `fsmonitor--daemon` feature will be built as a server
+application on top of the IPC-server library routines.  It will have
+threads watching for file system events and a thread pool waiting for
+client connections.  Clients, such as `git status` will request a list
+of file system events since a point in time and the server will
+respond with a list of changed files and directories.  The formats of
+the request and response are application-specific; the IPC-client and
+IPC-server routines treat them as opaque byte streams.
+
+
+Comparison with sub-process model
+---------------------------------
+
+The Simple-IPC mechanism differs from the existing `sub-process.c`
+model (Documentation/technical/long-running-process-protocol.txt) and
+used by applications like Git-LFS.  In the LFS-style sub-process model
+the helper is started by the foreground process, communication happens
+via a pair of file descriptors bound to the stdin/stdout of the
+sub-process, the sub-process only serves the current foreground
+process, and the sub-process exits when the foreground process
+terminates.
+
+In the Simple-IPC model the server is a very long-running service.  It
+can service many clients at the same time and has a private socket or
+named pipe connection to each active client.  It might be started
+(on-demand) by the current client process or it might have been
+started by a previous client or by the OS at boot time.  The server
+process is not associated with a terminal and it persists after
+clients terminate.  Clients do not have access to the stdin/stdout of
+the server process and therefore must communicate over sockets or
+named pipes.
+
+
+Server startup and shutdown
+---------------------------
+
+How an application server based upon IPC-server is started is also
+outside the scope of the Simple-IPC design and is a property of the
+application using it.  For example, the server might be started or
+restarted during routine maintenance operations, or it might be
+started as a system service during the system boot-up sequence, or it
+might be started on-demand by a foreground Git command when needed.
+
+Similarly, server shutdown is a property of the application using
+the simple-ipc routines.  For example, the server might decide to
+shutdown when idle or only upon explicit request.
+
+
+Simple-IPC protocol
+-------------------
+
+The Simple-IPC protocol consists of a single request message from the
+client and an optional response message from the server.  Both the
+client and server messages are unlimited in length and are terminated
+with a flush packet.
+
+The pkt-line routines (Documentation/technical/protocol-common.txt)
+are used to simplify buffer management during message generation,
+transmission, and reception.  A flush packet is used to mark the end
+of the message.  This allows the sender to incrementally generate and
+transmit the message.  It allows the receiver to incrementally receive
+the message in chunks and to know when they have received the entire
+message.
+
+The actual byte format of the client request and server response
+messages are application specific.  The IPC layer transmits and
+receives them as opaque byte buffers without any concern for the
+content within.  It is the job of the calling application layer to
+understand the contents of the request and response messages.
+
+
+Summary
+-------
+
+Conceptually, the Simple-IPC protocol is similar to an HTTP REST
+request.  Clients connect, make an application-specific and
+stateless request, receive an application-specific
+response, and disconnect.  It is a one round trip facility for
+querying the server.  The Simple-IPC routines hide the socket,
+named pipe, and thread pool details and allow the application
+layer to focus on the application at hand.
diff --git a/Documentation/technical/chunk-format.txt b/Documentation/technical/chunk-format.txt
new file mode 100644 (file)
index 0000000..593614f
--- /dev/null
@@ -0,0 +1,116 @@
+Chunk-based file formats
+========================
+
+Some file formats in Git use a common concept of "chunks" to describe
+sections of the file. This allows structured access to a large file by
+scanning a small "table of contents" for the remaining data. This common
+format is used by the `commit-graph` and `multi-pack-index` files. See
+link:technical/pack-format.html[the `multi-pack-index` format] and
+link:technical/commit-graph-format.html[the `commit-graph` format] for
+how they use the chunks to describe structured data.
+
+A chunk-based file format begins with some header information custom to
+that format. That header should include enough information to identify
+the file type, format version, and number of chunks in the file. From this
+information, that file can determine the start of the chunk-based region.
+
+The chunk-based region starts with a table of contents describing where
+each chunk starts and ends. This consists of (C+1) rows of 12 bytes each,
+where C is the number of chunks. Consider the following table:
+
+  | Chunk ID (4 bytes) | Chunk Offset (8 bytes) |
+  |--------------------|------------------------|
+  | ID[0]              | OFFSET[0]              |
+  | ...                | ...                    |
+  | ID[C]              | OFFSET[C]              |
+  | 0x0000             | OFFSET[C+1]            |
+
+Each row consists of a 4-byte chunk identifier (ID) and an 8-byte offset.
+Each integer is stored in network-byte order.
+
+The chunk identifier `ID[i]` is a label for the data stored within this
+fill from `OFFSET[i]` (inclusive) to `OFFSET[i+1]` (exclusive). Thus, the
+size of the `i`th chunk is equal to the difference between `OFFSET[i+1]`
+and `OFFSET[i]`. This requires that the chunk data appears contiguously
+in the same order as the table of contents.
+
+The final entry in the table of contents must be four zero bytes. This
+confirms that the table of contents is ending and provides the offset for
+the end of the chunk-based data.
+
+Note: The chunk-based format expects that the file contains _at least_ a
+trailing hash after `OFFSET[C+1]`.
+
+Functions for working with chunk-based file formats are declared in
+`chunk-format.h`. Using these methods provide extra checks that assist
+developers when creating new file formats.
+
+Writing chunk-based file formats
+--------------------------------
+
+To write a chunk-based file format, create a `struct chunkfile` by
+calling `init_chunkfile()` and pass a `struct hashfile` pointer. The
+caller is responsible for opening the `hashfile` and writing header
+information so the file format is identifiable before the chunk-based
+format begins.
+
+Then, call `add_chunk()` for each chunk that is intended for write. This
+populates the `chunkfile` with information about the order and size of
+each chunk to write. Provide a `chunk_write_fn` function pointer to
+perform the write of the chunk data upon request.
+
+Call `write_chunkfile()` to write the table of contents to the `hashfile`
+followed by each of the chunks. This will verify that each chunk wrote
+the expected amount of data so the table of contents is correct.
+
+Finally, call `free_chunkfile()` to clear the `struct chunkfile` data. The
+caller is responsible for finalizing the `hashfile` by writing the trailing
+hash and closing the file.
+
+Reading chunk-based file formats
+--------------------------------
+
+To read a chunk-based file format, the file must be opened as a
+memory-mapped region. The chunk-format API expects that the entire file
+is mapped as a contiguous memory region.
+
+Initialize a `struct chunkfile` pointer with `init_chunkfile(NULL)`.
+
+After reading the header information from the beginning of the file,
+including the chunk count, call `read_table_of_contents()` to populate
+the `struct chunkfile` with the list of chunks, their offsets, and their
+sizes.
+
+Extract the data information for each chunk using `pair_chunk()` or
+`read_chunk()`:
+
+* `pair_chunk()` assigns a given pointer with the location inside the
+  memory-mapped file corresponding to that chunk's offset. If the chunk
+  does not exist, then the pointer is not modified.
+
+* `read_chunk()` takes a `chunk_read_fn` function pointer and calls it
+  with the appropriate initial pointer and size information. The function
+  is not called if the chunk does not exist. Use this method to read chunks
+  if you need to perform immediate parsing or if you need to execute logic
+  based on the size of the chunk.
+
+After calling these methods, call `free_chunkfile()` to clear the
+`struct chunkfile` data. This will not close the memory-mapped region.
+Callers are expected to own that data for the timeframe the pointers into
+the region are needed.
+
+Examples
+--------
+
+These file formats use the chunk-format API, and can be used as examples
+for future formats:
+
+* *commit-graph:* see `write_commit_graph_file()` and `parse_commit_graph()`
+  in `commit-graph.c` for how the chunk-format API is used to write and
+  parse the commit-graph file format documented in
+  link:technical/commit-graph-format.html[the commit-graph file format].
+
+* *multi-pack-index:* see `write_midx_internal()` and `load_multi_pack_index()`
+  in `midx.c` for how the chunk-format API is used to write and
+  parse the multi-pack-index file format documented in
+  link:technical/pack-format.html[the multi-pack-index file format].
index b3b58880b926a14036bd2e05c4823ba19b9e7b37..87971c27dd73f45e1c630435c5d2935449d79759 100644 (file)
@@ -4,11 +4,7 @@ Git commit graph format
 The Git commit graph stores a list of commit OIDs and some associated
 metadata, including:
 
-- The generation number of the commit. Commits with no parents have
-  generation number 1; commits with parents have generation number
-  one more than the maximum generation number of its parents. We
-  reserve zero as special, and can be used to mark a generation
-  number invalid or as "not computed".
+- The generation number of the commit.
 
 - The root tree OID.
 
@@ -65,6 +61,9 @@ CHUNK LOOKUP:
       the length using the next chunk position if necessary.) Each chunk
       ID appears at most once.
 
+  The CHUNK LOOKUP matches the table of contents from
+  link:technical/chunk-format.html[the chunk-based file format].
+
   The remaining data in the body is described one chunk at a time, and
   these chunks may be given in any order. Chunks are required unless
   otherwise specified.
@@ -86,13 +85,33 @@ CHUNK DATA:
       position. If there are more than two parents, the second value
       has its most-significant bit on and the other bits store an array
       position into the Extra Edge List chunk.
-    * The next 8 bytes store the generation number of the commit and
+    * The next 8 bytes store the topological level (generation number v1)
+      of the commit and
       the commit time in seconds since EPOCH. The generation number
       uses the higher 30 bits of the first 4 bytes, while the commit
       time uses the 32 bits of the second 4 bytes, along with the lowest
       2 bits of the lowest byte, storing the 33rd and 34th bit of the
       commit time.
 
+  Generation Data (ID: {'G', 'D', 'A', 'T' }) (N * 4 bytes) [Optional]
+    * This list of 4-byte values store corrected commit date offsets for the
+      commits, arranged in the same order as commit data chunk.
+    * If the corrected commit date offset cannot be stored within 31 bits,
+      the value has its most-significant bit on and the other bits store
+      the position of corrected commit date into the Generation Data Overflow
+      chunk.
+    * Generation Data chunk is present only when commit-graph file is written
+      by compatible versions of Git and in case of split commit-graph chains,
+      the topmost layer also has Generation Data chunk.
+
+  Generation Data Overflow (ID: {'G', 'D', 'O', 'V' }) [Optional]
+    * This list of 8-byte values stores the corrected commit date offsets
+      for commits with corrected commit date offsets that cannot be
+      stored within 31 bits.
+    * Generation Data Overflow chunk is present only when Generation Data
+      chunk is present and atleast one corrected commit date offset cannot
+      be stored within 31 bits.
+
   Extra Edge List (ID: {'E', 'D', 'G', 'E'}) [Optional]
       This list of 4-byte values store the second through nth parents for
       all octopus merges. The second parent value in the commit data stores
index f14a7659aa8733a2a992eb949caf1d4e7a67accf..f05e7bda1a9d66c6c19eec5861384cca86b6690d 100644 (file)
@@ -38,14 +38,31 @@ A consumer may load the following info for a commit from the graph:
 
 Values 1-4 satisfy the requirements of parse_commit_gently().
 
-Define the "generation number" of a commit recursively as follows:
+There are two definitions of generation number:
+1. Corrected committer dates (generation number v2)
+2. Topological levels (generation nummber v1)
 
- * A commit with no parents (a root commit) has generation number one.
+Define "corrected committer date" of a commit recursively as follows:
 
- * A commit with at least one parent has generation number one more than
-   the largest generation number among its parents.
+ * A commit with no parents (a root commit) has corrected committer date
+    equal to its committer date.
 
-Equivalently, the generation number of a commit A is one more than the
+ * A commit with at least one parent has corrected committer date equal to
+    the maximum of its commiter date and one more than the largest corrected
+    committer date among its parents.
+
+ * As a special case, a root commit with timestamp zero has corrected commit
+    date of 1, to be able to distinguish it from GENERATION_NUMBER_ZERO
+    (that is, an uncomputed corrected commit date).
+
+Define the "topological level" of a commit recursively as follows:
+
+ * A commit with no parents (a root commit) has topological level of one.
+
+ * A commit with at least one parent has topological level one more than
+   the largest topological level among its parents.
+
+Equivalently, the topological level of a commit A is one more than the
 length of a longest path from A to a root commit. The recursive definition
 is easier to use for computation and observing the following property:
 
@@ -60,6 +77,9 @@ is easier to use for computation and observing the following property:
     generation numbers, then we always expand the boundary commit with highest
     generation number and can easily detect the stopping condition.
 
+The property applies to both versions of generation number, that is both
+corrected committer dates and topological levels.
+
 This property can be used to significantly reduce the time it takes to
 walk commits and determine topological relationships. Without generation
 numbers, the general heuristic is the following:
@@ -67,7 +87,9 @@ numbers, the general heuristic is the following:
     If A and B are commits with commit time X and Y, respectively, and
     X < Y, then A _probably_ cannot reach B.
 
-This heuristic is currently used whenever the computation is allowed to
+In absence of corrected commit dates (for example, old versions of Git or
+mixed generation graph chains),
+this heuristic is currently used whenever the computation is allowed to
 violate topological relationships due to clock skew (such as "git log"
 with default order), but is not used when the topological order is
 required (such as merge base calculations, "git log --graph").
@@ -77,7 +99,7 @@ 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
+We use the macro GENERATION_NUMBER_INFINITY 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.
@@ -93,12 +115,12 @@ 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.
+We use the macro GENERATION_NUMBER_V1_MAX = 0x3FFFFFFF for commits whose
+topological levels (generation number v1) 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 topological levels. This presents another case where a commit can
+have generation number equal to that of a parent.
 
 Design Details
 --------------
@@ -267,6 +289,35 @@ The merge strategy values (2 for the size multiple, 64,000 for the maximum
 number of commits) could be extracted into config settings for full
 flexibility.
 
+## Handling Mixed Generation Number Chains
+
+With the introduction of generation number v2 and generation data chunk, the
+following scenario is possible:
+
+1. "New" Git writes a commit-graph with the corrected commit dates.
+2. "Old" Git writes a split commit-graph on top without corrected commit dates.
+
+A naive approach of using the newest available generation number from
+each layer would lead to violated expectations: the lower layer would
+use corrected commit dates which are much larger than the topological
+levels of the higher layer. For this reason, Git inspects the topmost
+layer to see if the layer is missing corrected commit dates. In such a case
+Git only uses topological level for generation numbers.
+
+When writing a new layer in split commit-graph, we write corrected commit
+dates if the topmost layer has corrected commit dates written. This
+guarantees that if a layer has corrected commit dates, all lower layers
+must have corrected commit dates as well.
+
+When merging layers, we do not consider whether the merged layers had corrected
+commit dates. Instead, the new layer will have corrected commit dates if the
+layer below the new layer has corrected commit dates.
+
+While writing or merging layers, if the new layer is the only layer, it will
+have corrected commit dates when written by compatible versions of Git. Thus,
+rewriting split commit-graph as a single file (`--split=replace`) creates a
+single layer with corrected commit dates.
+
 ## Deleting graph-{hash} files
 
 After a new tip file is written, some `graph-{hash}` files may no longer
index 6fd20ebbc254472936238a8db590585e93d5eb91..7c1630bf832491080b043e5c2e3126272dc0408c 100644 (file)
@@ -33,16 +33,9 @@ researchers. On 23 February 2017 the SHAttered attack
 
 Git v2.13.0 and later subsequently moved to a hardened SHA-1
 implementation by default, which isn't vulnerable to the SHAttered
-attack.
+attack, but SHA-1 is still weak.
 
-Thus Git has in effect already migrated to a new hash that isn't SHA-1
-and doesn't share its vulnerabilities, its new hash function just
-happens to produce exactly the same output for all known inputs,
-except two PDFs published by the SHAttered researchers, and the new
-implementation (written by those researchers) claims to detect future
-cryptanalytic collision attacks.
-
-Regardless, it's considered prudent to move past any variant of SHA-1
+Thus it's considered prudent to move past any variant of SHA-1
 to a new hash. There's no guarantee that future attacks on SHA-1 won't
 be published in the future, and those attacks may not have viable
 mitigations.
@@ -57,6 +50,38 @@ SHA-1 still possesses the other properties such as fast object lookup
 and safe error checking, but other hash functions are equally suitable
 that are believed to be cryptographically secure.
 
+Choice of Hash
+--------------
+The hash to replace the hardened SHA-1 should be stronger than SHA-1
+was: we would like it to be trustworthy and useful in practice for at
+least 10 years.
+
+Some other relevant properties:
+
+1. A 256-bit hash (long enough to match common security practice; not
+   excessively long to hurt performance and disk usage).
+
+2. High quality implementations should be widely available (e.g., in
+   OpenSSL and Apple CommonCrypto).
+
+3. The hash function's properties should match Git's needs (e.g. Git
+   requires collision and 2nd preimage resistance and does not require
+   length extension resistance).
+
+4. As a tiebreaker, the hash should be fast to compute (fortunately
+   many contenders are faster than SHA-1).
+
+There were several contenders for a successor hash to SHA-1, including
+SHA-256, SHA-512/256, SHA-256x16, K12, and BLAKE2bp-256.
+
+In late 2018 the project picked SHA-256 as its successor hash.
+
+See 0ed8d8da374 (doc hash-function-transition: pick SHA-256 as
+NewHash, 2018-08-04) and numerous mailing list threads at the time,
+particularly the one starting at
+https://lore.kernel.org/git/20180609224913.GC38834@genre.crustytoothpaste.net/
+for more information.
+
 Goals
 -----
 1. The transition to SHA-256 can be done one local repository at a time.
@@ -94,7 +119,7 @@ Overview
 --------
 We introduce a new repository format extension. Repositories with this
 extension enabled use SHA-256 instead of SHA-1 to name their objects.
-This affects both object names and object content --- both the names
+This affects both object names and object content -- both the names
 of objects and all references to other objects within an object are
 switched to the new hash function.
 
@@ -107,7 +132,7 @@ mapping to allow naming objects using either their SHA-1 and SHA-256 names
 interchangeably.
 
 "git cat-file" and "git hash-object" gain options to display an object
-in its sha1 form and write an object given its sha1 form. This
+in its SHA-1 form and write an object given its SHA-1 form. This
 requires all objects referenced by that object to be present in the
 object database so that they can be named using the appropriate name
 (using the bidirectional hash mapping).
@@ -115,7 +140,7 @@ object database so that they can be named using the appropriate name
 Fetches from a SHA-1 based server convert the fetched objects into
 SHA-256 form and record the mapping in the bidirectional mapping table
 (see below for details). Pushes to a SHA-1 based server convert the
-objects being pushed into sha1 form so the server does not have to be
+objects being pushed into SHA-1 form so the server does not have to be
 aware of the hash function the client is using.
 
 Detailed Design
@@ -151,38 +176,38 @@ repository extensions.
 
 Object names
 ~~~~~~~~~~~~
-Objects can be named by their 40 hexadecimal digit sha1-name or 64
-hexadecimal digit sha256-name, plus names derived from those (see
+Objects can be named by their 40 hexadecimal digit SHA-1 name or 64
+hexadecimal digit SHA-256 name, plus names derived from those (see
 gitrevisions(7)).
 
-The sha1-name of an object is the SHA-1 of the concatenation of its
-type, length, a nul byte, and the object's sha1-content. This is the
+The SHA-1 name of an object is the SHA-1 of the concatenation of its
+type, length, a nul byte, and the object's SHA-1 content. This is the
 traditional <sha1> used in Git to name objects.
 
-The sha256-name of an object is the SHA-256 of the concatenation of its
-type, length, a nul byte, and the object's sha256-content.
+The SHA-256 name of an object is the SHA-256 of the concatenation of its
+type, length, a nul byte, and the object's SHA-256 content.
 
 Object format
 ~~~~~~~~~~~~~
 The content as a byte sequence of a tag, commit, or tree object named
-by sha1 and sha256 differ because an object named by sha256-name refers to
-other objects by their sha256-names and an object named by sha1-name
-refers to other objects by their sha1-names.
+by SHA-1 and SHA-256 differ because an object named by SHA-256 name refers to
+other objects by their SHA-256 names and an object named by SHA-1 name
+refers to other objects by their SHA-1 names.
 
-The sha256-content of an object is the same as its sha1-content, except
-that objects referenced by the object are named using their sha256-names
-instead of sha1-names. Because a blob object does not refer to any
-other object, its sha1-content and sha256-content are the same.
+The SHA-256 content of an object is the same as its SHA-1 content, except
+that objects referenced by the object are named using their SHA-256 names
+instead of SHA-1 names. Because a blob object does not refer to any
+other object, its SHA-1 content and SHA-256 content are the same.
 
-The format allows round-trip conversion between sha256-content and
-sha1-content.
+The format allows round-trip conversion between SHA-256 content and
+SHA-1 content.
 
 Object storage
 ~~~~~~~~~~~~~~
 Loose objects use zlib compression and packed objects use the packed
 format described in Documentation/technical/pack-format.txt, just like
-today. The content that is compressed and stored uses sha256-content
-instead of sha1-content.
+today. The content that is compressed and stored uses SHA-256 content
+instead of SHA-1 content.
 
 Pack index
 ~~~~~~~~~~
@@ -191,21 +216,21 @@ hash functions. They have the following format (all integers are in
 network byte order):
 
 - A header appears at the beginning and consists of the following:
-  - The 4-byte pack index signature: '\377t0c'
-  - 4-byte version number: 3
-  - 4-byte length of the header section, including the signature and
+  * The 4-byte pack index signature: '\377t0c'
+  * 4-byte version number: 3
+  * 4-byte length of the header section, including the signature and
     version number
-  - 4-byte number of objects contained in the pack
-  - 4-byte number of object formats in this pack index: 2
-  - For each object format:
-    - 4-byte format identifier (e.g., 'sha1' for SHA-1)
-    - 4-byte length in bytes of shortened object names. This is the
+  * 4-byte number of objects contained in the pack
+  * 4-byte number of object formats in this pack index: 2
+  * For each object format:
+    ** 4-byte format identifier (e.g., 'sha1' for SHA-1)
+    ** 4-byte length in bytes of shortened object names. This is the
       shortest possible length needed to make names in the shortened
       object name table unambiguous.
-    - 4-byte integer, recording where tables relating to this format
+    ** 4-byte integer, recording where tables relating to this format
       are stored in this index file, as an offset from the beginning.
-  - 4-byte offset to the trailer from the beginning of this file.
-  - Zero or more additional key/value pairs (4-byte key, 4-byte
+  * 4-byte offset to the trailer from the beginning of this file.
+  * Zero or more additional key/value pairs (4-byte key, 4-byte
     value). Only one key is supported: 'PSRC'. See the "Loose objects
     and unreachable objects" section for supported values and how this
     is used.  All other keys are reserved. Readers must ignore
@@ -213,37 +238,36 @@ network byte order):
 - Zero or more NUL bytes. This can optionally be used to improve the
   alignment of the full object name table below.
 - Tables for the first object format:
-  - A sorted table of shortened object names.  These are prefixes of
+  * A sorted table of shortened object names.  These are prefixes of
     the names of all objects in this pack file, packed together
     without offset values to reduce the cache footprint of the binary
     search for a specific object name.
 
-  - A table of full object names in pack order. This allows resolving
+  * A table of full object names in pack order. This allows resolving
     a reference to "the nth object in the pack file" (from a
     reachability bitmap or from the next table of another object
     format) to its object name.
 
-  - A table of 4-byte values mapping object name order to pack order.
+  * A table of 4-byte values mapping object name order to pack order.
     For an object in the table of sorted shortened object names, the
     value at the corresponding index in this table is the index in the
     previous table for that same object.
-
     This can be used to look up the object in reachability bitmaps or
     to look up its name in another object format.
 
-  - A table of 4-byte CRC32 values of the packed object data, in the
+  * A table of 4-byte CRC32 values of the packed object data, in the
     order that the objects appear in the pack file. This is to allow
     compressed data to be copied directly from pack to pack during
     repacking without undetected data corruption.
 
-  - A table of 4-byte offset values. For an object in the table of
+  * A table of 4-byte offset values. For an object in the table of
     sorted shortened object names, the value at the corresponding
     index in this table indicates where that object can be found in
     the pack file. These are usually 31-bit pack file offsets, but
     large offsets are encoded as an index into the next table with the
     most significant bit set.
 
-  - A table of 8-byte offset entries (empty for pack files less than
+  * A table of 8-byte offset entries (empty for pack files less than
     2 GiB). Pack files are organized with heavily used objects toward
     the front, so most object references should not need to refer to
     this table.
@@ -252,10 +276,10 @@ network byte order):
   up to and not including the table of CRC32 values.
 - Zero or more NUL bytes.
 - The trailer consists of the following:
-  - A copy of the 20-byte SHA-256 checksum at the end of the
+  * A copy of the 20-byte SHA-256 checksum at the end of the
     corresponding packfile.
 
-  - 20-byte SHA-256 checksum of all of the above.
+  * 20-byte SHA-256 checksum of all of the above.
 
 Loose object index
 ~~~~~~~~~~~~~~~~~~
@@ -288,18 +312,18 @@ To remove entries (e.g. in "git pack-refs" or "git-prune"):
 
 Translation table
 ~~~~~~~~~~~~~~~~~
-The index files support a bidirectional mapping between sha1-names
-and sha256-names. The lookup proceeds similarly to ordinary object
-lookups. For example, to convert a sha1-name to a sha256-name:
+The index files support a bidirectional mapping between SHA-1 names
+and SHA-256 names. The lookup proceeds similarly to ordinary object
+lookups. For example, to convert a SHA-1 name to a SHA-256 name:
 
  1. Look for the object in idx files. If a match is present in the
-    idx's sorted list of truncated sha1-names, then:
-    a. Read the corresponding entry in the sha1-name order to pack
+    idx's sorted list of truncated SHA-1 names, then:
+    a. Read the corresponding entry in the SHA-1 name order to pack
        name order mapping.
-    b. Read the corresponding entry in the full sha1-name table to
+    b. Read the corresponding entry in the full SHA-1 name table to
        verify we found the right object. If it is, then
-    c. Read the corresponding entry in the full sha256-name table.
-       That is the object's sha256-name.
+    c. Read the corresponding entry in the full SHA-256 name table.
+       That is the object's SHA-256 name.
  2. Check for a loose object. Read lines from loose-object-idx until
     we find a match.
 
@@ -313,10 +337,10 @@ Since all operations that make new objects (e.g., "git commit") add
 the new objects to the corresponding index, this mapping is possible
 for all objects in the object store.
 
-Reading an object's sha1-content
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-The sha1-content of an object can be read by converting all sha256-names
-its sha256-content references to sha1-names using the translation table.
+Reading an object's SHA-1 content
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+The SHA-1 content of an object can be read by converting all SHA-256 names
+of its SHA-256 content references to SHA-1 names using the translation table.
 
 Fetch
 ~~~~~
@@ -339,7 +363,7 @@ the following steps:
 1. index-pack: inflate each object in the packfile and compute its
    SHA-1. Objects can contain deltas in OBJ_REF_DELTA format against
    objects the client has locally. These objects can be looked up
-   using the translation table and their sha1-content read as
+   using the translation table and their SHA-1 content read as
    described above to resolve the deltas.
 2. topological sort: starting at the "want"s from the negotiation
    phase, walk through objects in the pack and emit a list of them,
@@ -348,12 +372,12 @@ the following steps:
    (This list only contains objects reachable from the "wants". If the
    pack from the server contained additional extraneous objects, then
    they will be discarded.)
-3. convert to sha256: open a new (sha256) packfile. Read the topologically
+3. convert to SHA-256: open a new SHA-256 packfile. Read the topologically
    sorted list just generated. For each object, inflate its
-   sha1-content, convert to sha256-content, and write it to the sha256
-   pack. Record the new sha1<->sha256 mapping entry for use in the idx.
+   SHA-1 content, convert to SHA-256 content, and write it to the SHA-256
+   pack. Record the new SHA-1<-->SHA-256 mapping entry for use in the idx.
 4. sort: reorder entries in the new pack to match the order of objects
-   in the pack the server generated and include blobs. Write a sha256 idx
+   in the pack the server generated and include blobs. Write a SHA-256 idx
    file
 5. clean up: remove the SHA-1 based pack file, index, and
    topologically sorted list obtained from the server in steps 1
@@ -378,19 +402,20 @@ experimenting to get this to perform well.
 Push
 ~~~~
 Push is simpler than fetch because the objects referenced by the
-pushed objects are already in the translation table. The sha1-content
+pushed objects are already in the translation table. The SHA-1 content
 of each object being pushed can be read as described in the "Reading
-an object's sha1-content" section to generate the pack written by git
+an object's SHA-1 content" section to generate the pack written by git
 send-pack.
 
 Signed Commits
 ~~~~~~~~~~~~~~
 We add a new field "gpgsig-sha256" to the commit object format to allow
 signing commits without relying on SHA-1. It is similar to the
-existing "gpgsig" field. Its signed payload is the sha256-content of the
+existing "gpgsig" field. Its signed payload is the SHA-256 content of the
 commit object with any "gpgsig" and "gpgsig-sha256" fields removed.
 
 This means commits can be signed
+
 1. using SHA-1 only, as in existing signed commit objects
 2. using both SHA-1 and SHA-256, by using both gpgsig-sha256 and gpgsig
    fields.
@@ -404,10 +429,11 @@ Signed Tags
 ~~~~~~~~~~~
 We add a new field "gpgsig-sha256" to the tag object format to allow
 signing tags without relying on SHA-1. Its signed payload is the
-sha256-content of the tag with its gpgsig-sha256 field and "-----BEGIN PGP
+SHA-256 content of the tag with its gpgsig-sha256 field and "-----BEGIN PGP
 SIGNATURE-----" delimited in-body signature removed.
 
 This means tags can be signed
+
 1. using SHA-1 only, as in existing signed tag objects
 2. using both SHA-1 and SHA-256, by using gpgsig-sha256 and an in-body
    signature.
@@ -415,11 +441,11 @@ This means tags can be signed
 
 Mergetag embedding
 ~~~~~~~~~~~~~~~~~~
-The mergetag field in the sha1-content of a commit contains the
-sha1-content of a tag that was merged by that commit.
+The mergetag field in the SHA-1 content of a commit contains the
+SHA-1 content of a tag that was merged by that commit.
 
-The mergetag field in the sha256-content of the same commit contains the
-sha256-content of the same tag.
+The mergetag field in the SHA-256 content of the same commit contains the
+SHA-256 content of the same tag.
 
 Submodules
 ~~~~~~~~~~
@@ -494,7 +520,7 @@ Caveats
 -------
 Invalid objects
 ~~~~~~~~~~~~~~~
-The conversion from sha1-content to sha256-content retains any
+The conversion from SHA-1 content to SHA-256 content retains any
 brokenness in the original object (e.g., tree entry modes encoded with
 leading 0, tree objects whose paths are not sorted correctly, and
 commit objects without an author or committer). This is a deliberate
@@ -513,15 +539,15 @@ allow lifting this restriction.
 
 Alternates
 ~~~~~~~~~~
-For the same reason, a sha256 repository cannot borrow objects from a
-sha1 repository using objects/info/alternates or
+For the same reason, a SHA-256 repository cannot borrow objects from a
+SHA-1 repository using objects/info/alternates or
 $GIT_ALTERNATE_OBJECT_REPOSITORIES.
 
 git notes
 ~~~~~~~~~
-The "git notes" tool annotates objects using their sha1-name as key.
+The "git notes" tool annotates objects using their SHA-1 name as key.
 This design does not describe a way to migrate notes trees to use
-sha256-names. That migration is expected to happen separately (for
+SHA-256 names. That migration is expected to happen separately (for
 example using a file at the root of the notes tree to describe which
 hash it uses).
 
@@ -555,7 +581,7 @@ unclear:
 
        Git 2.12
 
-Does this mean Git v2.12.0 is the commit with sha1-name
+Does this mean Git v2.12.0 is the commit with SHA-1 name
 e7e07d5a4fcc2a203d9873968ad3e6bd4d7419d7 or the commit with
 new-40-digit-hash-name e7e07d5a4fcc2a203d9873968ad3e6bd4d7419d7?
 
@@ -598,44 +624,12 @@ The user can also explicitly specify which format to use for a
 particular revision specifier and for output, overriding the mode. For
 example:
 
-git --output-format=sha1 log abac87a^{sha1}..f787cac^{sha256}
-
-Choice of Hash
---------------
-In early 2005, around the time that Git was written, Xiaoyun Wang,
-Yiqun Lisa Yin, and Hongbo Yu announced an attack finding SHA-1
-collisions in 2^69 operations. In August they published details.
-Luckily, no practical demonstrations of a collision in full SHA-1 were
-published until 10 years later, in 2017.
-
-Git v2.13.0 and later subsequently moved to a hardened SHA-1
-implementation by default that mitigates the SHAttered attack, but
-SHA-1 is still believed to be weak.
-
-The hash to replace this hardened SHA-1 should be stronger than SHA-1
-was: we would like it to be trustworthy and useful in practice for at
-least 10 years.
-
-Some other relevant properties:
-
-1. A 256-bit hash (long enough to match common security practice; not
-   excessively long to hurt performance and disk usage).
-
-2. High quality implementations should be widely available (e.g., in
-   OpenSSL and Apple CommonCrypto).
-
-3. The hash function's properties should match Git's needs (e.g. Git
-   requires collision and 2nd preimage resistance and does not require
-   length extension resistance).
-
-4. As a tiebreaker, the hash should be fast to compute (fortunately
-   many contenders are faster than SHA-1).
-
-We choose SHA-256.
+    git --output-format=sha1 log abac87a^{sha1}..f787cac^{sha256}
 
 Transition plan
 ---------------
 Some initial steps can be implemented independently of one another:
+
 - adding a hash function API (vtable)
 - teaching fsck to tolerate the gpgsig-sha256 field
 - excluding gpgsig-* from the fields copied by "git commit --amend"
@@ -647,9 +641,9 @@ Some initial steps can be implemented independently of one another:
 - introducing index v3
 - adding support for the PSRC field and safer object pruning
 
-
 The first user-visible change is the introduction of the objectFormat
 extension (without compatObjectFormat). This requires:
+
 - teaching fsck about this mode of operation
 - using the hash function API (vtable) when computing object names
 - signing objects and verifying signatures
@@ -657,6 +651,7 @@ extension (without compatObjectFormat). This requires:
   repository
 
 Next comes introduction of compatObjectFormat:
+
 - implementing the loose-object-idx
 - translating object names between object formats
 - translating object content between object formats
@@ -669,10 +664,11 @@ Next comes introduction of compatObjectFormat:
   "Object names on the command line" above)
 
 The next step is supporting fetches and pushes to SHA-1 repositories:
+
 - allow pushes to a repository using the compat format
 - generate a topologically sorted list of the SHA-1 names of fetched
   objects
-- convert the fetched packfile to sha256 format and generate an idx
+- convert the fetched packfile to SHA-256 format and generate an idx
   file
 - re-sort to match the order of objects in the fetched packfile
 
@@ -734,6 +730,7 @@ Using hash functions in parallel
 Objects newly created would be addressed by the new hash, but inside
 such an object (e.g. commit) it is still possible to address objects
 using the old hash function.
+
 * You cannot trust its history (needed for bisectability) in the
   future without further work
 * Maintenance burden as the number of supported hash functions grows
@@ -743,36 +740,38 @@ using the old hash function.
 Signed objects with multiple hashes
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 Instead of introducing the gpgsig-sha256 field in commit and tag objects
-for sha256-content based signatures, an earlier version of this design
-added "hash sha256 <sha256-name>" fields to strengthen the existing
-sha1-content based signatures.
+for SHA-256 content based signatures, an earlier version of this design
+added "hash sha256 <SHA-256 name>" fields to strengthen the existing
+SHA-1 content based signatures.
 
 In other words, a single signature was used to attest to the object
 content using both hash functions. This had some advantages:
+
 * Using one signature instead of two speeds up the signing process.
 * Having one signed payload with both hashes allows the signer to
-  attest to the sha1-name and sha256-name referring to the same object.
+  attest to the SHA-1 name and SHA-256 name referring to the same object.
 * All users consume the same signature. Broken signatures are likely
   to be detected quickly using current versions of git.
 
 However, it also came with disadvantages:
-* Verifying a signed object requires access to the sha1-names of all
+
+* Verifying a signed object requires access to the SHA-1 names of all
   objects it references, even after the transition is complete and
   translation table is no longer needed for anything else. To support
-  this, the design added fields such as "hash sha1 tree <sha1-name>"
-  and "hash sha1 parent <sha1-name>" to the sha256-content of a signed
+  this, the design added fields such as "hash sha1 tree <SHA-1 name>"
+  and "hash sha1 parent <SHA-1 name>" to the SHA-256 content of a signed
   commit, complicating the conversion process.
-* Allowing signed objects without a sha1 (for after the transition is
+* Allowing signed objects without a SHA-1 (for after the transition is
   complete) complicated the design further, requiring a "nohash sha1"
-  field to suppress including "hash sha1" fields in the sha256-content
+  field to suppress including "hash sha1" fields in the SHA-256 content
   and signed payload.
 
 Lazily populated translation table
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 Some of the work of building the translation table could be deferred to
 push time, but that would significantly complicate and slow down pushes.
-Calculating the sha1-name at object creation time at the same time it is
-being streamed to disk and having its sha256-name calculated should be
+Calculating the SHA-1 name at object creation time at the same time it is
+being streamed to disk and having its SHA-256 name calculated should be
 an acceptable cost.
 
 Document History
@@ -782,18 +781,19 @@ Document History
 bmwill@google.com, jonathantanmy@google.com, jrnieder@gmail.com,
 sbeller@google.com
 
-Initial version sent to
-http://lore.kernel.org/git/20170304011251.GA26789@aiede.mtv.corp.google.com
+* Initial version sent to https://lore.kernel.org/git/20170304011251.GA26789@aiede.mtv.corp.google.com
 
 2017-03-03 jrnieder@gmail.com
 Incorporated suggestions from jonathantanmy and sbeller:
-* describe purpose of signed objects with each hash type
-* redefine signed object verification using object content under the
+
+* Describe purpose of signed objects with each hash type
+* Redefine signed object verification using object content under the
   first hash function
 
 2017-03-06 jrnieder@gmail.com
+
 * Use SHA3-256 instead of SHA2 (thanks, Linus and brian m. carlson).[1][2]
-* Make sha3-based signatures a separate field, avoiding the need for
+* Make SHA3-based signatures a separate field, avoiding the need for
   "hash" and "nohash" fields (thanks to peff[3]).
 * Add a sorting phase to fetch (thanks to Junio for noticing the need
   for this).
@@ -805,23 +805,26 @@ Incorporated suggestions from jonathantanmy and sbeller:
   especially Junio).
 
 2017-09-27 jrnieder@gmail.com, sbeller@google.com
-* use placeholder NewHash instead of SHA3-256
-* describe criteria for picking a hash function.
-* include a transition plan (thanks especially to Brandon Williams
+
+* Use placeholder NewHash instead of SHA3-256
+* Describe criteria for picking a hash function.
+* Include a transition plan (thanks especially to Brandon Williams
   for fleshing these ideas out)
-* define the translation table (thanks, Shawn Pearce[5], Jonathan
+* Define the translation table (thanks, Shawn Pearce[5], Jonathan
   Tan, and Masaya Suzuki)
-* avoid loose object overhead by packing more aggressively in
+* Avoid loose object overhead by packing more aggressively in
   "git gc --auto"
 
 Later history:
 
- See the history of this file in git.git for the history of subsequent
- edits. This document history is no longer being maintained as it
- would now be superfluous to the commit log
+* See the history of this file in git.git for the history of subsequent
+  edits. This document history is no longer being maintained as it
+  would now be superfluous to the commit log
+
+References:
 
-[1] http://lore.kernel.org/git/CA+55aFzJtejiCjV0e43+9oR3QuJK2PiFiLQemytoLpyJWe6P9w@mail.gmail.com/
-[2] http://lore.kernel.org/git/CA+55aFz+gkAsDZ24zmePQuEs1XPS9BP_s8O7Q4wQ7LV7X5-oDA@mail.gmail.com/
-[3] http://lore.kernel.org/git/20170306084353.nrns455dvkdsfgo5@sigill.intra.peff.net/
-[4] http://lore.kernel.org/git/20170304224936.rqqtkdvfjgyezsht@genre.crustytoothpaste.net
-[5] https://lore.kernel.org/git/CAJo=hJtoX9=AyLHHpUJS7fueV9ciZ_MNpnEPHUz8Whui6g9F0A@mail.gmail.com/
+ [1] https://lore.kernel.org/git/CA+55aFzJtejiCjV0e43+9oR3QuJK2PiFiLQemytoLpyJWe6P9w@mail.gmail.com/
+ [2] https://lore.kernel.org/git/CA+55aFz+gkAsDZ24zmePQuEs1XPS9BP_s8O7Q4wQ7LV7X5-oDA@mail.gmail.com/
+ [3] https://lore.kernel.org/git/20170306084353.nrns455dvkdsfgo5@sigill.intra.peff.net/
+ [4] https://lore.kernel.org/git/20170304224936.rqqtkdvfjgyezsht@genre.crustytoothpaste.net
+ [5] https://lore.kernel.org/git/CAJo=hJtoX9=AyLHHpUJS7fueV9ciZ_MNpnEPHUz8Whui6g9F0A@mail.gmail.com/
index b633482b1bdff109015649258b248b60ecf36ee8..d363a71c37ec46172ccce3aedb1c2b5e9bef410f 100644 (file)
@@ -273,14 +273,14 @@ Git index format
   - Stat data of $GIT_DIR/info/exclude. See "Index entry" section from
     ctime field until "file size".
 
-  - Stat data of core.excludesfile
+  - Stat data of core.excludesFile
 
   - 32-bit dir_flags (see struct dir_struct)
 
   - Hash of $GIT_DIR/info/exclude. A null hash means the file
     does not exist.
 
-  - Hash of core.excludesfile. A null hash means the file does
+  - Hash of core.excludesFile. A null hash means the file does
     not exist.
 
   - NUL-terminated string of per-dir exclude file name. This usually
index e8e377a59f0c19a56fb53ed6d96f10f6c211d087..fb688976c4c0337ef6850b9786daf2173f29e66c 100644 (file)
@@ -43,8 +43,9 @@ Design Details
   a change in format.
 
 - The MIDX keeps only one record per object ID. If an object appears
-  in multiple packfiles, then the MIDX selects the copy in the most-
-  recently modified packfile.
+  in multiple packfiles, then the MIDX selects the copy in the
+  preferred packfile, otherwise selecting from the most-recently
+  modified packfile.
 
 - If there exist packfiles in the pack directory not registered in
   the MIDX, then those packfiles are loaded into the `packed_git`
index 96d2fc589f817afe9cccffc01fb45e423eacfb9c..8d2f42f29e58cd32930e2953d2b1599eff022c92 100644 (file)
@@ -274,6 +274,26 @@ Pack file entry: <+
 
     Index checksum of all of the above.
 
+== pack-*.rev files have the format:
+
+  - A 4-byte magic number '0x52494458' ('RIDX').
+
+  - A 4-byte version identifier (= 1).
+
+  - A 4-byte hash function identifier (= 1 for SHA-1, 2 for SHA-256).
+
+  - A table of index positions (one per packed object, num_objects in
+    total, each a 4-byte unsigned integer in network order), sorted by
+    their corresponding offsets in the packfile.
+
+  - A trailer, containing a:
+
+    checksum of the corresponding packfile, and
+
+    a checksum of all of the above.
+
+All 4-byte numbers are in network order.
+
 == multi-pack-index (MIDX) files have the following format:
 
 The multi-pack-index files refer to multiple pack-files and loose objects.
@@ -316,6 +336,9 @@ CHUNK LOOKUP:
            (Chunks are provided in file-order, so you can infer the length
            using the next chunk position if necessary.)
 
+       The CHUNK LOOKUP matches the table of contents from
+       link:technical/chunk-format.html[the chunk-based file format].
+
        The remaining data in the body is described one chunk at a time, and
        these chunks may be given in any order. Chunks are required unless
        otherwise specified.
@@ -356,3 +379,86 @@ CHUNK DATA:
 TRAILER:
 
        Index checksum of the above contents.
+
+== multi-pack-index reverse indexes
+
+Similar to the pack-based reverse index, the multi-pack index can also
+be used to generate a reverse index.
+
+Instead of mapping between offset, pack-, and index position, this
+reverse index maps between an object's position within the MIDX, and
+that object's position within a pseudo-pack that the MIDX describes
+(i.e., the ith entry of the multi-pack reverse index holds the MIDX
+position of ith object in pseudo-pack order).
+
+To clarify the difference between these orderings, consider a multi-pack
+reachability bitmap (which does not yet exist, but is what we are
+building towards here). Each bit needs to correspond to an object in the
+MIDX, and so we need an efficient mapping from bit position to MIDX
+position.
+
+One solution is to let bits occupy the same position in the oid-sorted
+index stored by the MIDX. But because oids are effectively random, their
+resulting reachability bitmaps would have no locality, and thus compress
+poorly. (This is the reason that single-pack bitmaps use the pack
+ordering, and not the .idx ordering, for the same purpose.)
+
+So we'd like to define an ordering for the whole MIDX based around
+pack ordering, which has far better locality (and thus compresses more
+efficiently). We can think of a pseudo-pack created by the concatenation
+of all of the packs in the MIDX. E.g., if we had a MIDX with three packs
+(a, b, c), with 10, 15, and 20 objects respectively, we can imagine an
+ordering of the objects like:
+
+    |a,0|a,1|...|a,9|b,0|b,1|...|b,14|c,0|c,1|...|c,19|
+
+where the ordering of the packs is defined by the MIDX's pack list,
+and then the ordering of objects within each pack is the same as the
+order in the actual packfile.
+
+Given the list of packs and their counts of objects, you can
+naïvely reconstruct that pseudo-pack ordering (e.g., the object at
+position 27 must be (c,1) because packs "a" and "b" consumed 25 of the
+slots). But there's a catch. Objects may be duplicated between packs, in
+which case the MIDX only stores one pointer to the object (and thus we'd
+want only one slot in the bitmap).
+
+Callers could handle duplicates themselves by reading objects in order
+of their bit-position, but that's linear in the number of objects, and
+much too expensive for ordinary bitmap lookups. Building a reverse index
+solves this, since it is the logical inverse of the index, and that
+index has already removed duplicates. But, building a reverse index on
+the fly can be expensive. Since we already have an on-disk format for
+pack-based reverse indexes, let's reuse it for the MIDX's pseudo-pack,
+too.
+
+Objects from the MIDX are ordered as follows to string together the
+pseudo-pack. Let `pack(o)` return the pack from which `o` was selected
+by the MIDX, and define an ordering of packs based on their numeric ID
+(as stored by the MIDX). Let `offset(o)` return the object offset of `o`
+within `pack(o)`. Then, compare `o1` and `o2` as follows:
+
+  - If one of `pack(o1)` and `pack(o2)` is preferred and the other
+    is not, then the preferred one sorts first.
++
+(This is a detail that allows the MIDX bitmap to determine which
+pack should be used by the pack-reuse mechanism, since it can ask
+the MIDX for the pack containing the object at bit position 0).
+
+  - If `pack(o1) ≠ pack(o2)`, then sort the two objects in descending
+    order based on the pack ID.
+
+  - Otherwise, `pack(o1) = pack(o2)`, and the objects are sorted in
+    pack-order (i.e., `o1` sorts ahead of `o2` exactly when `offset(o1)
+    < offset(o2)`).
+
+In short, a MIDX's pseudo-pack is the de-duplicated concatenation of
+objects in packs stored by the MIDX, laid out in pack order, and the
+packs arranged in MIDX order (with the preferred pack coming first).
+
+Finally, note that the MIDX's reverse index is not stored as a chunk in
+the multi-pack-index itself. This is done because the reverse index
+includes the checksum of the pack or MIDX to which it belongs, which
+makes it impossible to write in the MIDX. To avoid races when rewriting
+the MIDX, a MIDX reverse index includes the MIDX's checksum in its
+filename (e.g., `multi-pack-index-xyz.rev`).
index 85daeb5d9e77f8d597cb7ce7d842598133b7b2a6..a7c806a73e0b5d74069e9c5b208c5f43021f10e5 100644 (file)
@@ -33,8 +33,8 @@ In protocol v2 these special packets will have the following semantics:
 
   * '0000' Flush Packet (flush-pkt) - indicates the end of a message
   * '0001' Delimiter Packet (delim-pkt) - separates sections of a message
-  * '0002' Message Packet (response-end-pkt) - indicates the end of a response
-    for stateless connections
+  * '0002' Response End Packet (response-end-pkt) - indicates the end of a
+    response for stateless connections
 
 Initial Client Request
 ----------------------
@@ -192,11 +192,20 @@ ls-refs takes in the following arguments:
        When specified, only references having a prefix matching one of
        the provided prefixes are displayed.
 
+If the 'unborn' feature is advertised the following argument can be
+included in the client's request.
+
+    unborn
+       The server will send information about HEAD even if it is a symref
+       pointing to an unborn branch in the form "unborn HEAD
+       symref-target:<target>".
+
 The output of ls-refs is as follows:
 
     output = *ref
             flush-pkt
-    ref = PKT-LINE(obj-id SP refname *(SP ref-attribute) LF)
+    obj-id-or-unborn = (obj-id | "unborn")
+    ref = PKT-LINE(obj-id-or-unborn SP refname *(SP ref-attribute) LF)
     ref-attribute = (symref | peeled)
     symref = "symref-target:" symref-target
     peeled = "peeled:" obj-id
index 8095ab2590c87810fe2e95e8bfa56eef9f1caa42..3ef169af27d8162a66df3471be0450df7ceccae4 100644 (file)
@@ -872,17 +872,11 @@ A repository must set its `$GIT_DIR/config` to configure reftable:
 Layout
 ^^^^^^
 
-A collection of reftable files are stored in the `$GIT_DIR/reftable/`
-directory:
-
-....
-00000001-00000001.log
-00000002-00000002.ref
-00000003-00000003.ref
-....
-
-where reftable files are named by a unique name such as produced by the
-function `${min_update_index}-${max_update_index}.ref`.
+A collection of reftable files are stored in the `$GIT_DIR/reftable/` directory.
+Their names should have a random element, such that each filename is globally
+unique; this helps avoid spurious failures on Windows, where open files cannot
+be removed or overwritten. It suggested to use
+`${min_update_index}-${max_update_index}-${random}.ref` as a naming convention.
 
 Log-only files use the `.log` extension, while ref-only and mixed ref
 and log files use `.ref`. extension.
@@ -893,9 +887,9 @@ current files, one per line, in order, from oldest (base) to newest
 
 ....
 $ cat .git/reftable/tables.list
-00000001-00000001.log
-00000002-00000002.ref
-00000003-00000003.ref
+00000001-00000001-RANDOM1.log
+00000002-00000002-RANDOM2.ref
+00000003-00000003-RANDOM3.ref
 ....
 
 Readers must read `$GIT_DIR/reftable/tables.list` to determine which
@@ -940,7 +934,7 @@ new reftable and atomically appending it to the stack:
 3.  Select `update_index` to be most recent file's
 `max_update_index + 1`.
 4.  Prepare temp reftable `tmp_XXXXXX`, including log entries.
-5.  Rename `tmp_XXXXXX` to `${update_index}-${update_index}.ref`.
+5.  Rename `tmp_XXXXXX` to `${update_index}-${update_index}-${random}.ref`.
 6.  Copy `tables.list` to `tables.list.lock`, appending file from (5).
 7.  Rename `tables.list.lock` to `tables.list`.
 
@@ -993,7 +987,7 @@ prevents other processes from trying to compact these files.
 should always be the case, assuming that other processes are adhering to
 the locking protocol.
 7.  Rename `${min_update_index}-${max_update_index}_XXXXXX` to
-`${min_update_index}-${max_update_index}.ref`.
+`${min_update_index}-${max_update_index}-${random}.ref`.
 8.  Write the new stack to `tables.list.lock`, replacing `B` and `C`
 with the file from (4).
 9.  Rename `tables.list.lock` to `tables.list`.
@@ -1005,6 +999,22 @@ This strategy permits compactions to proceed independently of updates.
 Each reftable (compacted or not) is uniquely identified by its name, so
 open reftables can be cached by their name.
 
+Windows
+^^^^^^^
+
+On windows, and other systems that do not allow deleting or renaming to open
+files, compaction may succeed, but other readers may prevent obsolete tables
+from being deleted.
+
+On these platforms, the following strategy can be followed: on closing a
+reftable stack, reload `tables.list`, and delete any tables no longer mentioned
+in `tables.list`.
+
+Irregular program exit may still leave about unused files. In this case, a
+cleanup operation can read `tables.list`, note its modification timestamp, and
+delete any unreferenced `*.ref` files that are older.
+
+
 Alternatives considered
 ~~~~~~~~~~~~~~~~~~~~~~~
 
index 0327733794e4022af0e1d916f560daea7ed2d4f1..d2ff91775effdda7b2f3506095e03c2b6b49da10 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 GVF=GIT-VERSION-FILE
-DEF_VER=v2.30.GIT
+DEF_VER=v2.31.GIT
 
 LF='
 '
diff --git a/INSTALL b/INSTALL
index 8474ad01bf9db87ec293bd6d5cd2ed7706c56914..66389ce05915d776e5c8ff49aea40e20bc40eb62 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -197,7 +197,9 @@ Issues of note:
    Building and installing the pdf file additionally requires
    dblatex.  Version >= 0.2.7 is known to work.
 
-   All formats require at least asciidoc 8.4.1.
+   All formats require at least asciidoc 8.4.1. Alternatively, you can
+   use Asciidoctor (requires Ruby) by passing USE_ASCIIDOCTOR=YesPlease
+   to make. You need at least Asciidoctor version 1.5.
 
    There are also "make quick-install-doc", "make quick-install-man"
    and "make quick-install-html" which install preformatted man pages
index 5a239cac20e334cbc7952abca62fe5f3d25625ff..a6a73c57419179b18b5e0b3d94b3da8a82a89b65 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -22,6 +22,9 @@ all::
 # when attempting to read from an fopen'ed directory (or even to fopen
 # it at all).
 #
+# Define OPEN_RETURNS_EINTR if your open() system call may return EINTR
+# when a signal is received (as opposed to restarting).
+#
 # Define NO_OPENSSL environment variable if you do not have OpenSSL.
 #
 # Define USE_LIBPCRE if you have and want to use libpcre. Various
@@ -575,7 +578,9 @@ GENERATED_H =
 EXTRA_CPPFLAGS =
 FUZZ_OBJS =
 FUZZ_PROGRAMS =
+GIT_OBJS =
 LIB_OBJS =
+OBJECTS =
 PROGRAM_OBJS =
 PROGRAMS =
 EXCLUDED_PROGRAMS =
@@ -584,6 +589,7 @@ SCRIPT_PYTHON =
 SCRIPT_SH =
 SCRIPT_LIB =
 TEST_BUILTINS_OBJS =
+TEST_OBJS =
 TEST_PROGRAMS_NEED_X =
 THIRD_PARTY_SOURCES =
 
@@ -659,6 +665,8 @@ ETAGS_TARGET = TAGS
 FUZZ_OBJS += fuzz-commit-graph.o
 FUZZ_OBJS += fuzz-pack-headers.o
 FUZZ_OBJS += fuzz-pack-idx.o
+.PHONY: fuzz-objs
+fuzz-objs: $(FUZZ_OBJS)
 
 # Always build fuzz objects even if not testing, to prevent bit-rot.
 all:: $(FUZZ_OBJS)
@@ -676,6 +684,8 @@ PROGRAM_OBJS += http-backend.o
 PROGRAM_OBJS += imap-send.o
 PROGRAM_OBJS += sh-i18n--envsubst.o
 PROGRAM_OBJS += shell.o
+.PHONY: program-objs
+program-objs: $(PROGRAM_OBJS)
 
 # Binary suffix, set to .exe for Windows builds
 X =
@@ -734,6 +744,7 @@ TEST_BUILTINS_OBJS += test-serve-v2.o
 TEST_BUILTINS_OBJS += test-sha1.o
 TEST_BUILTINS_OBJS += test-sha256.o
 TEST_BUILTINS_OBJS += test-sigchain.o
+TEST_BUILTINS_OBJS += test-simple-ipc.o
 TEST_BUILTINS_OBJS += test-strcmp-offset.o
 TEST_BUILTINS_OBJS += test-string-list.o
 TEST_BUILTINS_OBJS += test-submodule-config.o
@@ -834,6 +845,7 @@ LIB_OBJS += bundle.o
 LIB_OBJS += cache-tree.o
 LIB_OBJS += chdir-notify.o
 LIB_OBJS += checkout.o
+LIB_OBJS += chunk-format.o
 LIB_OBJS += color.o
 LIB_OBJS += column.o
 LIB_OBJS += combine-diff.o
@@ -863,6 +875,7 @@ LIB_OBJS += diffcore-delta.o
 LIB_OBJS += diffcore-order.o
 LIB_OBJS += diffcore-pickaxe.o
 LIB_OBJS += diffcore-rename.o
+LIB_OBJS += diffcore-rotate.o
 LIB_OBJS += dir-iterator.o
 LIB_OBJS += dir.o
 LIB_OBJS += editor.o
@@ -1537,6 +1550,10 @@ ifdef FREAD_READS_DIRECTORIES
        COMPAT_CFLAGS += -DFREAD_READS_DIRECTORIES
        COMPAT_OBJS += compat/fopen.o
 endif
+ifdef OPEN_RETURNS_EINTR
+       COMPAT_CFLAGS += -DOPEN_RETURNS_EINTR
+       COMPAT_OBJS += compat/open.o
+endif
 ifdef NO_SYMLINK_HEAD
        BASIC_CFLAGS += -DNO_SYMLINK_HEAD
 endif
@@ -1663,6 +1680,14 @@ ifdef NO_UNIX_SOCKETS
        BASIC_CFLAGS += -DNO_UNIX_SOCKETS
 else
        LIB_OBJS += unix-socket.o
+       LIB_OBJS += unix-stream-server.o
+       LIB_OBJS += compat/simple-ipc/ipc-shared.o
+       LIB_OBJS += compat/simple-ipc/ipc-unix-socket.o
+endif
+
+ifdef USE_WIN32_IPC
+       LIB_OBJS += compat/simple-ipc/ipc-shared.o
+       LIB_OBJS += compat/simple-ipc/ipc-win32.o
 endif
 
 ifdef NO_ICONV
@@ -2369,16 +2394,30 @@ XDIFF_OBJS += xdiff/xmerge.o
 XDIFF_OBJS += xdiff/xpatience.o
 XDIFF_OBJS += xdiff/xprepare.o
 XDIFF_OBJS += xdiff/xutils.o
+.PHONY: xdiff-objs
+xdiff-objs: $(XDIFF_OBJS)
 
 TEST_OBJS := $(patsubst %$X,%.o,$(TEST_PROGRAMS)) $(patsubst %,t/helper/%,$(TEST_BUILTINS_OBJS))
-OBJECTS := $(LIB_OBJS) $(BUILTIN_OBJS) $(PROGRAM_OBJS) $(TEST_OBJS) \
-       $(XDIFF_OBJS) \
-       $(FUZZ_OBJS) \
-       common-main.o \
-       git.o
+.PHONY: test-objs
+test-objs: $(TEST_OBJS)
+
+GIT_OBJS += $(LIB_OBJS)
+GIT_OBJS += $(BUILTIN_OBJS)
+GIT_OBJS += common-main.o
+GIT_OBJS += git.o
+.PHONY: git-objs
+git-objs: $(GIT_OBJS)
+
+OBJECTS += $(GIT_OBJS)
+OBJECTS += $(PROGRAM_OBJS)
+OBJECTS += $(TEST_OBJS)
+OBJECTS += $(XDIFF_OBJS)
+OBJECTS += $(FUZZ_OBJS)
 ifndef NO_CURL
        OBJECTS += http.o http-walker.o remote-curl.o
 endif
+.PHONY: objects
+objects: $(OBJECTS)
 
 dep_files := $(foreach f,$(OBJECTS),$(dir $f).depend/$(notdir $f).d)
 dep_dirs := $(addsuffix .depend,$(sort $(dir $(OBJECTS))))
@@ -3290,11 +3329,11 @@ cover_db_html: cover_db
 # are not necessarily appropriate for general builds, and that vary greatly
 # depending on the compiler version used.
 #
-# An example command to build against libFuzzer from LLVM 4.0.0:
+# An example command to build against libFuzzer from LLVM 11.0.0:
 #
 # make CC=clang CXX=clang++ \
-#      CFLAGS="-fsanitize-coverage=trace-pc-guard -fsanitize=address" \
-#      LIB_FUZZING_ENGINE=/usr/lib/llvm-4.0/lib/libFuzzer.a \
+#      CFLAGS="-fsanitize=fuzzer-no-link,address" \
+#      LIB_FUZZING_ENGINE="-fsanitize=fuzzer" \
 #      fuzz-all
 #
 FUZZ_CXXFLAGS ?= $(CFLAGS)
index 3324fc058d6c9c0a473955ff50eefbf2e3479123..aece21e8a40e4499c4398b8906a5dac0b3b0edcf 120000 (symlink)
--- a/RelNotes
+++ b/RelNotes
@@ -1 +1 @@
-Documentation/RelNotes/2.31.0.txt
\ No newline at end of file
+Documentation/RelNotes/2.32.0.txt
\ No newline at end of file
diff --git a/SECURITY.md b/SECURITY.md
new file mode 100644 (file)
index 0000000..c720c2a
--- /dev/null
@@ -0,0 +1,51 @@
+# Security Policy
+
+## Reporting a vulnerability
+
+Please send a detailed mail to git-security@googlegroups.com to
+report vulnerabilities in Git.
+
+Even when unsure whether the bug in question is an exploitable
+vulnerability, it is recommended to send the report to
+git-security@googlegroups.com (and obviously not to discuss the
+issue anywhere else).
+
+Vulnerabilities are expected to be discussed _only_ on that
+list, and not in public, until the official announcement on the
+Git mailing list on the release date.
+
+Examples for details to include:
+
+- Ideally a short description (or a script) to demonstrate an
+  exploit.
+- The affected platforms and scenarios (the vulnerability might
+  only affect setups with case-sensitive file systems, for
+  example).
+- The name and affiliation of the security researchers who are
+  involved in the discovery, if any.
+- Whether the vulnerability has already been disclosed.
+- How long an embargo would be required to be safe.
+
+## Supported Versions
+
+There are no official "Long Term Support" versions in Git.
+Instead, the maintenance track (i.e. the versions based on the
+most recently published feature release, also known as ".0"
+version) sees occasional updates with bug fixes.
+
+Fixes to vulnerabilities are made for the maintenance track for
+the latest feature release and merged up to the in-development
+branches. The Git project makes no formal guarantee for any
+older maintenance tracks to receive updates. In practice,
+though, critical vulnerability fixes are applied not only to the
+most recent track, but to at least a couple more maintenance
+tracks.
+
+This is typically done by making the fix on the oldest and still
+relevant maintenance track, and merging it upwards to newer and
+newer maintenance tracks.
+
+For example, v2.24.1 was released to address a couple of
+[CVEs](https://cve.mitre.org/), and at the same time v2.14.6,
+v2.15.4, v2.16.6, v2.17.3, v2.18.2, v2.19.3, v2.20.2, v2.21.1,
+v2.22.2 and v2.23.1 were released.
index 9b8cdb4a31a6ab69e7bb4e698782b11764c094c7..36ebdbdf7e2c8d6a5598e3e773b44d53b290ada7 100644 (file)
@@ -413,7 +413,7 @@ struct file_item {
 
 static void add_file_item(struct string_list *files, const char *name)
 {
-       struct file_item *item = xcalloc(sizeof(*item), 1);
+       struct file_item *item = xcalloc(1, sizeof(*item));
 
        string_list_append(files, name)->util = item;
 }
@@ -476,7 +476,7 @@ static void collect_changes_cb(struct diff_queue_struct *q,
 
                        add_file_item(s->files, name);
 
-                       entry = xcalloc(sizeof(*entry), 1);
+                       CALLOC_ARRAY(entry, 1);
                        hashmap_entry_init(&entry->ent, hash);
                        entry->name = s->files->items[s->files->nr - 1].string;
                        entry->item = s->files->items[s->files->nr - 1].util;
@@ -1120,7 +1120,7 @@ int run_add_i(struct repository *r, const struct pathspec *ps)
        int res = 0;
 
        for (i = 0; i < ARRAY_SIZE(command_list); i++) {
-               struct command_item *util = xcalloc(sizeof(*util), 1);
+               struct command_item *util = xcalloc(1, sizeof(*util));
                util->command = command_list[i].command;
                string_list_append(&commands.items, command_list[i].string)
                        ->util = util;
diff --git a/apply.c b/apply.c
index 668b16e9893d2f1e0501f2771716138db6e2efdd..466f880d737dbdbff8259e89ec9767643fb248e1 100644 (file)
--- a/apply.c
+++ b/apply.c
@@ -21,6 +21,7 @@
 #include "quote.h"
 #include "rerere.h"
 #include "apply.h"
+#include "entry.h"
 
 struct gitdiff_data {
        struct strbuf *root;
@@ -1781,7 +1782,7 @@ static int parse_single_patch(struct apply_state *state,
                struct fragment *fragment;
                int len;
 
-               fragment = xcalloc(1, sizeof(*fragment));
+               CALLOC_ARRAY(fragment, 1);
                fragment->linenr = state->linenr;
                len = parse_fragment(state, line, size, patch, fragment);
                if (len <= 0) {
@@ -1959,7 +1960,7 @@ static struct fragment *parse_binary_hunk(struct apply_state *state,
                size -= llen;
        }
 
-       frag = xcalloc(1, sizeof(*frag));
+       CALLOC_ARRAY(frag, 1);
        frag->patch = inflate_it(data, hunk_size, origlen);
        frag->free_patch = 1;
        if (!frag->patch)
@@ -4681,7 +4682,7 @@ static int apply_patch(struct apply_state *state,
                struct patch *patch;
                int nr;
 
-               patch = xcalloc(1, sizeof(*patch));
+               CALLOC_ARRAY(patch, 1);
                patch->inaccurate_eof = !!(options & APPLY_OPT_INACCURATE_EOF);
                patch->recount =  !!(options & APPLY_OPT_RECOUNT);
                nr = parse_chunk(state, buf.buf + offset, buf.len - offset, patch);
index a971fdc0f6326e0829225d4a2bfe87df48b82a42..05d2455870d7fa95f2575a35a81c3cbe7363e625 100644 (file)
@@ -371,7 +371,7 @@ static int tar_filter_config(const char *var, const char *value, void *data)
 
        ar = find_tar_filter(name, namelen);
        if (!ar) {
-               ar = xcalloc(1, sizeof(*ar));
+               CALLOC_ARRAY(ar, 1);
                ar->name = xmemdupz(name, namelen);
                ar->write_archive = write_tar_filter_archive;
                ar->flags = ARCHIVER_WANT_COMPRESSION_LEVELS |
index 5919d9e505088420802c1fd20bcfcaee62072c06..295615580d710672404a82f5c104ccc5c78ed700 100644 (file)
--- a/archive.c
+++ b/archive.c
@@ -37,13 +37,10 @@ void init_archivers(void)
 
 static void format_subst(const struct commit *commit,
                         const char *src, size_t len,
-                        struct strbuf *buf)
+                        struct strbuf *buf, struct pretty_print_context *ctx)
 {
        char *to_free = NULL;
        struct strbuf fmt = STRBUF_INIT;
-       struct pretty_print_context ctx = {0};
-       ctx.date_mode.type = DATE_NORMAL;
-       ctx.abbrev = DEFAULT_ABBREV;
 
        if (src == buf->buf)
                to_free = strbuf_detach(buf, NULL);
@@ -61,7 +58,7 @@ static void format_subst(const struct commit *commit,
                strbuf_add(&fmt, b + 8, c - b - 8);
 
                strbuf_add(buf, src, b - src);
-               format_commit_message(commit, fmt.buf, buf, &ctx);
+               format_commit_message(commit, fmt.buf, buf, ctx);
                len -= c + 1 - src;
                src  = c + 1;
        }
@@ -94,7 +91,7 @@ static void *object_file_to_archive(const struct archiver_args *args,
                strbuf_attach(&buf, buffer, *sizep, *sizep + 1);
                convert_to_working_tree(args->repo->index, path, buf.buf, buf.len, &buf, &meta);
                if (commit)
-                       format_subst(commit, buf.buf, buf.len, &buf);
+                       format_subst(commit, buf.buf, buf.len, &buf, args->pretty_ctx);
                buffer = strbuf_detach(&buf, &size);
                *sizep = size;
        }
@@ -107,7 +104,6 @@ struct directory {
        struct object_id oid;
        int baselen, len;
        unsigned mode;
-       int stage;
        char path[FLEX_ARRAY];
 };
 
@@ -138,7 +134,7 @@ static int check_attr_export_subst(const struct attr_check *check)
 }
 
 static int write_archive_entry(const struct object_id *oid, const char *base,
-               int baselen, const char *filename, unsigned mode, int stage,
+               int baselen, const char *filename, unsigned mode,
                void *context)
 {
        static struct strbuf path = STRBUF_INIT;
@@ -197,7 +193,7 @@ static int write_archive_entry(const struct object_id *oid, const char *base,
 
 static void queue_directory(const unsigned char *sha1,
                struct strbuf *base, const char *filename,
-               unsigned mode, int stage, struct archiver_context *c)
+               unsigned mode, struct archiver_context *c)
 {
        struct directory *d;
        size_t len = st_add4(base->len, 1, strlen(filename), 1);
@@ -205,7 +201,6 @@ static void queue_directory(const unsigned char *sha1,
        d->up      = c->bottom;
        d->baselen = base->len;
        d->mode    = mode;
-       d->stage   = stage;
        c->bottom  = d;
        d->len = xsnprintf(d->path, len, "%.*s%s/", (int)base->len, base->buf, filename);
        hashcpy(d->oid.hash, sha1);
@@ -224,14 +219,14 @@ static int write_directory(struct archiver_context *c)
                write_directory(c) ||
                write_archive_entry(&d->oid, d->path, d->baselen,
                                    d->path + d->baselen, d->mode,
-                                   d->stage, c) != READ_TREE_RECURSIVE;
+                                   c) != READ_TREE_RECURSIVE;
        free(d);
        return ret ? -1 : 0;
 }
 
 static int queue_or_write_archive_entry(const struct object_id *oid,
                struct strbuf *base, const char *filename,
-               unsigned mode, int stage, void *context)
+               unsigned mode, void *context)
 {
        struct archiver_context *c = context;
 
@@ -256,14 +251,14 @@ static int queue_or_write_archive_entry(const struct object_id *oid,
                if (check_attr_export_ignore(check))
                        return 0;
                queue_directory(oid->hash, base, filename,
-                               mode, stage, c);
+                               mode, c);
                return READ_TREE_RECURSIVE;
        }
 
        if (write_directory(c))
                return -1;
        return write_archive_entry(oid, base->buf, base->len, filename, mode,
-                                  stage, context);
+                                  context);
 }
 
 struct extra_file_info {
@@ -316,10 +311,10 @@ int write_archive_entries(struct archiver_args *args,
                git_attr_set_direction(GIT_ATTR_INDEX);
        }
 
-       err = read_tree_recursive(args->repo, args->tree, "",
-                                 0, 0, &args->pathspec,
-                                 queue_or_write_archive_entry,
-                                 &context);
+       err = read_tree(args->repo, args->tree,
+                       &args->pathspec,
+                       queue_or_write_archive_entry,
+                       &context);
        if (err == READ_TREE_RECURSIVE)
                err = 0;
        while (context.bottom) {
@@ -378,7 +373,7 @@ struct path_exists_context {
 
 static int reject_entry(const struct object_id *oid, struct strbuf *base,
                        const char *filename, unsigned mode,
-                       int stage, void *context)
+                       void *context)
 {
        int ret = -1;
        struct path_exists_context *ctx = context;
@@ -405,9 +400,9 @@ static int path_exists(struct archiver_args *args, const char *path)
        ctx.args = args;
        parse_pathspec(&ctx.pathspec, 0, 0, "", paths);
        ctx.pathspec.recursive = 1;
-       ret = read_tree_recursive(args->repo, args->tree, "",
-                                 0, 0, &ctx.pathspec,
-                                 reject_entry, &ctx);
+       ret = read_tree(args->repo, args->tree,
+                       &ctx.pathspec,
+                       reject_entry, &ctx);
        clear_pathspec(&ctx.pathspec);
        return ret != 0;
 }
@@ -633,12 +628,19 @@ int write_archive(int argc, const char **argv, const char *prefix,
                  const char *name_hint, int remote)
 {
        const struct archiver *ar = NULL;
+       struct pretty_print_describe_status describe_status = {0};
+       struct pretty_print_context ctx = {0};
        struct archiver_args args;
        int rc;
 
        git_config_get_bool("uploadarchive.allowunreachable", &remote_allow_unreachable);
        git_config(git_default_config, NULL);
 
+       describe_status.max_invocations = 1;
+       ctx.date_mode.type = DATE_NORMAL;
+       ctx.abbrev = DEFAULT_ABBREV;
+       ctx.describe_status = &describe_status;
+       args.pretty_ctx = &ctx;
        args.repo = repo;
        args.prefix = prefix;
        string_list_init(&args.extra_files, 1);
index 33551b7ee17be6adf9c16221ef1f605dbf8d477c..49fab71aaf649e1d5576f359eec8dcc0c096bf22 100644 (file)
--- a/archive.h
+++ b/archive.h
@@ -5,6 +5,7 @@
 #include "pathspec.h"
 
 struct repository;
+struct pretty_print_context;
 
 struct archiver_args {
        struct repository *repo;
@@ -22,6 +23,7 @@ struct archiver_args {
        unsigned int convert : 1;
        int compression_level;
        struct string_list extra_files;
+       struct pretty_print_context *pretty_ctx;
 };
 
 /* main api */
diff --git a/attr.c b/attr.c
index 4ef85d668b54960d692b6bae127920c10045c4ca..ac8ec7ce51e39e33dd47f561044b406616240155 100644 (file)
--- a/attr.c
+++ b/attr.c
@@ -278,6 +278,10 @@ struct match_attr {
 
 static const char blank[] = " \t\r\n";
 
+/* Flags usable in read_attr() and parse_attr_line() family of functions. */
+#define READ_ATTR_MACRO_OK (1<<0)
+#define READ_ATTR_NOFOLLOW (1<<1)
+
 /*
  * Parse a whitespace-delimited attribute state (i.e., "attr",
  * "-attr", "!attr", or "attr=value") from the string starting at src.
@@ -331,7 +335,7 @@ static const char *parse_attr(const char *src, int lineno, const char *cp,
 }
 
 static struct match_attr *parse_attr_line(const char *line, const char *src,
-                                         int lineno, int macro_ok)
+                                         int lineno, unsigned flags)
 {
        int namelen;
        int num_attr, i;
@@ -355,7 +359,7 @@ static struct match_attr *parse_attr_line(const char *line, const char *src,
 
        if (strlen(ATTRIBUTE_MACRO_PREFIX) < namelen &&
            starts_with(name, ATTRIBUTE_MACRO_PREFIX)) {
-               if (!macro_ok) {
+               if (!(flags & READ_ATTR_MACRO_OK)) {
                        fprintf_ln(stderr, _("%s not allowed: %s:%d"),
                                   name, src, lineno);
                        goto fail_return;
@@ -569,7 +573,7 @@ struct attr_check *attr_check_initl(const char *one, ...)
        check = attr_check_alloc();
        check->nr = cnt;
        check->alloc = cnt;
-       check->items = xcalloc(cnt, sizeof(struct attr_check_item));
+       CALLOC_ARRAY(check->items, cnt);
 
        check->items[0].attr = git_attr(one);
        va_start(params, one);
@@ -653,11 +657,11 @@ static void handle_attr_line(struct attr_stack *res,
                             const char *line,
                             const char *src,
                             int lineno,
-                            int macro_ok)
+                            unsigned flags)
 {
        struct match_attr *a;
 
-       a = parse_attr_line(line, src, lineno, macro_ok);
+       a = parse_attr_line(line, src, lineno, flags);
        if (!a)
                return;
        ALLOC_GROW(res->attrs, res->num_matches + 1, res->alloc);
@@ -670,9 +674,10 @@ static struct attr_stack *read_attr_from_array(const char **list)
        const char *line;
        int lineno = 0;
 
-       res = xcalloc(1, sizeof(*res));
+       CALLOC_ARRAY(res, 1);
        while ((line = *(list++)) != NULL)
-               handle_attr_line(res, line, "[builtin]", ++lineno, 1);
+               handle_attr_line(res, line, "[builtin]", ++lineno,
+                                READ_ATTR_MACRO_OK);
        return res;
 }
 
@@ -698,21 +703,31 @@ void git_attr_set_direction(enum git_attr_direction new_direction)
        direction = new_direction;
 }
 
-static struct attr_stack *read_attr_from_file(const char *path, int macro_ok)
+static struct attr_stack *read_attr_from_file(const char *path, unsigned flags)
 {
-       FILE *fp = fopen_or_warn(path, "r");
+       int fd;
+       FILE *fp;
        struct attr_stack *res;
        char buf[2048];
        int lineno = 0;
 
-       if (!fp)
+       if (flags & READ_ATTR_NOFOLLOW)
+               fd = open_nofollow(path, O_RDONLY);
+       else
+               fd = open(path, O_RDONLY);
+
+       if (fd < 0) {
+               warn_on_fopen_errors(path);
                return NULL;
-       res = xcalloc(1, sizeof(*res));
+       }
+       fp = xfdopen(fd, "r");
+
+       CALLOC_ARRAY(res, 1);
        while (fgets(buf, sizeof(buf), fp)) {
                char *bufp = buf;
                if (!lineno)
                        skip_utf8_bom(&bufp, strlen(bufp));
-               handle_attr_line(res, bufp, path, ++lineno, macro_ok);
+               handle_attr_line(res, bufp, path, ++lineno, flags);
        }
        fclose(fp);
        return res;
@@ -720,7 +735,7 @@ static struct attr_stack *read_attr_from_file(const char *path, int macro_ok)
 
 static struct attr_stack *read_attr_from_index(const struct index_state *istate,
                                               const char *path,
-                                              int macro_ok)
+                                              unsigned flags)
 {
        struct attr_stack *res;
        char *buf, *sp;
@@ -733,7 +748,7 @@ static struct attr_stack *read_attr_from_index(const struct index_state *istate,
        if (!buf)
                return NULL;
 
-       res = xcalloc(1, sizeof(*res));
+       CALLOC_ARRAY(res, 1);
        for (sp = buf; *sp; ) {
                char *ep;
                int more;
@@ -741,7 +756,7 @@ static struct attr_stack *read_attr_from_index(const struct index_state *istate,
                ep = strchrnul(sp, '\n');
                more = (*ep == '\n');
                *ep = '\0';
-               handle_attr_line(res, sp, path, ++lineno, macro_ok);
+               handle_attr_line(res, sp, path, ++lineno, flags);
                sp = ep + more;
        }
        free(buf);
@@ -749,19 +764,19 @@ static struct attr_stack *read_attr_from_index(const struct index_state *istate,
 }
 
 static struct attr_stack *read_attr(const struct index_state *istate,
-                                   const char *path, int macro_ok)
+                                   const char *path, unsigned flags)
 {
        struct attr_stack *res = NULL;
 
        if (direction == GIT_ATTR_INDEX) {
-               res = read_attr_from_index(istate, path, macro_ok);
+               res = read_attr_from_index(istate, path, flags);
        } else if (!is_bare_repository()) {
                if (direction == GIT_ATTR_CHECKOUT) {
-                       res = read_attr_from_index(istate, path, macro_ok);
+                       res = read_attr_from_index(istate, path, flags);
                        if (!res)
-                               res = read_attr_from_file(path, macro_ok);
+                               res = read_attr_from_file(path, flags);
                } else if (direction == GIT_ATTR_CHECKIN) {
-                       res = read_attr_from_file(path, macro_ok);
+                       res = read_attr_from_file(path, flags);
                        if (!res)
                                /*
                                 * There is no checked out .gitattributes file
@@ -769,12 +784,12 @@ static struct attr_stack *read_attr(const struct index_state *istate,
                                 * We allow operation in a sparsely checked out
                                 * work tree, so read from it.
                                 */
-                               res = read_attr_from_index(istate, path, macro_ok);
+                               res = read_attr_from_index(istate, path, flags);
                }
        }
 
        if (!res)
-               res = xcalloc(1, sizeof(*res));
+               CALLOC_ARRAY(res, 1);
        return res;
 }
 
@@ -844,6 +859,7 @@ static void bootstrap_attr_stack(const struct index_state *istate,
                                 struct attr_stack **stack)
 {
        struct attr_stack *e;
+       unsigned flags = READ_ATTR_MACRO_OK;
 
        if (*stack)
                return;
@@ -854,27 +870,27 @@ static void bootstrap_attr_stack(const struct index_state *istate,
 
        /* system-wide frame */
        if (git_attr_system()) {
-               e = read_attr_from_file(git_etc_gitattributes(), 1);
+               e = read_attr_from_file(git_etc_gitattributes(), flags);
                push_stack(stack, e, NULL, 0);
        }
 
        /* home directory */
        if (get_home_gitattributes()) {
-               e = read_attr_from_file(get_home_gitattributes(), 1);
+               e = read_attr_from_file(get_home_gitattributes(), flags);
                push_stack(stack, e, NULL, 0);
        }
 
        /* root directory */
-       e = read_attr(istate, GITATTRIBUTES_FILE, 1);
+       e = read_attr(istate, GITATTRIBUTES_FILE, flags | READ_ATTR_NOFOLLOW);
        push_stack(stack, e, xstrdup(""), 0);
 
        /* info frame */
        if (startup_info->have_repository)
-               e = read_attr_from_file(git_path_info_attributes(), 1);
+               e = read_attr_from_file(git_path_info_attributes(), flags);
        else
                e = NULL;
        if (!e)
-               e = xcalloc(1, sizeof(struct attr_stack));
+               CALLOC_ARRAY(e, 1);
        push_stack(stack, e, NULL, 0);
 }
 
@@ -956,7 +972,7 @@ static void prepare_attr_stack(const struct index_state *istate,
                strbuf_add(&pathbuf, path + pathbuf.len, (len - pathbuf.len));
                strbuf_addf(&pathbuf, "/%s", GITATTRIBUTES_FILE);
 
-               next = read_attr(istate, pathbuf.buf, 0);
+               next = read_attr(istate, pathbuf.buf, READ_ATTR_NOFOLLOW);
 
                /* reset the pathbuf to not include "/.gitattributes" */
                strbuf_setlen(&pathbuf, len);
index 75ea0eb57ff18979702b0abd5da345f27948e530..af2863d044b704f3b7e9d6617dbb2226d4c8a1fe 100644 (file)
--- a/bisect.c
+++ b/bisect.c
@@ -423,7 +423,7 @@ void find_bisection(struct commit_list **commit_list, int *reaches,
        show_list("bisection 2 sorted", 0, nr, list);
 
        *all = nr;
-       weights = xcalloc(on_list, sizeof(*weights));
+       CALLOC_ARRAY(weights, on_list);
 
        /* Do the real work of finding bisection commit. */
        best = do_find_bisection(list, nr, weights, bisect_flags);
@@ -1064,7 +1064,7 @@ enum bisect_error bisect_next_all(struct repository *r, const char *prefix)
 
        if (!all) {
                fprintf(stderr, _("No testable commit found.\n"
-                       "Maybe you started with bad path parameters?\n"));
+                       "Maybe you started with bad path arguments?\n"));
 
                return BISECT_NO_TESTABLE_COMMIT;
        }
diff --git a/blame.c b/blame.c
index a5044fcfaa62644daa45103dd6ad17647bc6a811..5018bb8fb2ce810f18f7e57ab26c659b6f943745 100644 (file)
--- a/blame.c
+++ b/blame.c
@@ -951,13 +951,13 @@ static int *fuzzy_find_matching_lines(struct blame_origin *parent,
        max_search_distance_b = ((2 * max_search_distance_a + 1) * length_b
                                 - 1) / length_a;
 
-       result = xcalloc(sizeof(int), length_b);
-       second_best_result = xcalloc(sizeof(int), length_b);
-       certainties = xcalloc(sizeof(int), length_b);
+       CALLOC_ARRAY(result, length_b);
+       CALLOC_ARRAY(second_best_result, length_b);
+       CALLOC_ARRAY(certainties, length_b);
 
        /* See get_similarity() for details of similarities. */
        similarity_count = length_b * (max_search_distance_a * 2 + 1);
-       similarities = xcalloc(sizeof(int), similarity_count);
+       CALLOC_ARRAY(similarities, similarity_count);
 
        for (i = 0; i < length_b; ++i) {
                result[i] = -1;
@@ -995,7 +995,7 @@ static void fill_origin_fingerprints(struct blame_origin *o)
                return;
        o->num_lines = find_line_starts(&line_starts, o->file.ptr,
                                        o->file.size);
-       o->fingerprints = xcalloc(sizeof(struct fingerprint), o->num_lines);
+       CALLOC_ARRAY(o->fingerprints, o->num_lines);
        get_line_fingerprints(o->fingerprints, o->file.ptr, line_starts,
                              0, o->num_lines);
        free(line_starts);
@@ -1853,8 +1853,7 @@ static void blame_chunk(struct blame_entry ***dstq, struct blame_entry ***srcq,
        diffp = NULL;
 
        if (ignore_diffs && same - tlno > 0) {
-               line_blames = xcalloc(sizeof(struct blame_line_tracker),
-                                     same - tlno);
+               CALLOC_ARRAY(line_blames, same - tlno);
                guess_line_blames(parent, target, tlno, offset, same,
                                  parent_len, line_blames);
        }
@@ -2216,7 +2215,7 @@ static struct blame_list *setup_blame_list(struct blame_entry *unblamed,
        for (e = unblamed, num_ents = 0; e; e = e->next)
                num_ents++;
        if (num_ents) {
-               blame_list = xcalloc(num_ents, sizeof(struct blame_list));
+               CALLOC_ARRAY(blame_list, num_ents);
                for (e = unblamed, i = 0; e; e = e->next)
                        blame_list[i++].ent = e;
        }
@@ -2428,7 +2427,7 @@ static void pass_blame(struct blame_scoreboard *sb, struct blame_origin *origin,
        else if (num_sg < ARRAY_SIZE(sg_buf))
                memset(sg_buf, 0, sizeof(sg_buf));
        else
-               sg_origin = xcalloc(num_sg, sizeof(*sg_origin));
+               CALLOC_ARRAY(sg_origin, num_sg);
 
        /*
         * The first pass looks for unrenamed path to optimize for
index 8681031402fb93c0e1d5a865041f6f9a924363c6..1bb6e7c069035bbf688d12cf8bcffa58790da5fc 100644 (file)
@@ -70,7 +70,7 @@
  * the input data, the next mix it from the 512-bit array.
  */
 #define SHA_SRC(t) get_be32((unsigned char *) block + (t)*4)
-#define SHA_MIX(t) SHA_ROL(W((t)+13) ^ W((t)+8) ^ W((t)+2) ^ W(t), 1);
+#define SHA_MIX(t) SHA_ROL(W((t)+13) ^ W((t)+8) ^ W((t)+2) ^ W(t), 1)
 
 #define SHA_ROUND(t, input, fn, constant, A, B, C, D, E) do { \
        unsigned int TEMP = input(t); setW(t, TEMP); \
diff --git a/bloom.c b/bloom.c
index b176f28f531eccc412204faa5f4da9fa53164081..52b87474c6eb5a3d257c3f597f5340b893fb33c0 100644 (file)
--- a/bloom.c
+++ b/bloom.c
@@ -277,7 +277,7 @@ struct bloom_filter *get_or_compute_bloom_filter(struct repository *r,
                                *computed |= BLOOM_TRUNC_EMPTY;
                        filter->len = 1;
                }
-               filter->data = xcalloc(filter->len, sizeof(unsigned char));
+               CALLOC_ARRAY(filter->data, filter->len);
 
                hashmap_for_each_entry(&pathmap, &iter, e, entry) {
                        struct bloom_key key;
index a825887c503dd38450a5dfc5ca750b31e3db00f3..ea762a41e3a2d2c41718de2e97c6a0e6031ce91c 100644 (file)
@@ -38,19 +38,27 @@ struct update_callback_data {
        int add_errors;
 };
 
-static void chmod_pathspec(struct pathspec *pathspec, char flip)
+static int chmod_pathspec(struct pathspec *pathspec, char flip, int show_only)
 {
-       int i;
+       int i, ret = 0;
 
        for (i = 0; i < active_nr; i++) {
                struct cache_entry *ce = active_cache[i];
+               int err;
 
                if (pathspec && !ce_path_match(&the_index, ce, pathspec, NULL))
                        continue;
 
-               if (chmod_cache_entry(ce, flip) < 0)
-                       fprintf(stderr, "cannot chmod %cx '%s'\n", flip, ce->name);
+               if (!show_only)
+                       err = chmod_cache_entry(ce, flip);
+               else
+                       err = S_ISREG(ce->ce_mode) ? 0 : -1;
+
+               if (err < 0)
+                       ret = error(_("cannot chmod %cx '%s'"), flip, ce->name);
        }
+
+       return ret;
 }
 
 static int fix_unmerged_status(struct diff_filepair *p,
@@ -609,7 +617,7 @@ int cmd_add(int argc, const char **argv, const char *prefix)
                exit_status |= add_files(&dir, flags);
 
        if (chmod_arg && pathspec.nr)
-               chmod_pathspec(&pathspec, chmod_arg[0]);
+               exit_status |= chmod_pathspec(&pathspec, chmod_arg[0], show_only);
        unplug_bulk_checkin();
 
 finish:
index 709eb713a3ba469f39ef5b4536583a84cc0c4a52..1fdb7d9d1060b46c4e4e357765549b9a893a2130 100644 (file)
@@ -21,16 +21,15 @@ static GIT_PATH_FUNC(git_path_bisect_first_parent, "BISECT_FIRST_PARENT")
 
 static const char * const git_bisect_helper_usage[] = {
        N_("git bisect--helper --bisect-reset [<commit>]"),
-       N_("git bisect--helper --bisect-write [--no-log] <state> <revision> <good_term> <bad_term>"),
-       N_("git bisect--helper --bisect-check-and-set-terms <command> <good_term> <bad_term>"),
        N_("git bisect--helper --bisect-next-check <good_term> <bad_term> [<term>]"),
        N_("git bisect--helper --bisect-terms [--term-good | --term-old | --term-bad | --term-new]"),
        N_("git bisect--helper --bisect-start [--term-{new,bad}=<term> --term-{old,good}=<term>]"
                                            " [--no-checkout] [--first-parent] [<bad> [<good>...]] [--] [<paths>...]"),
        N_("git bisect--helper --bisect-next"),
-       N_("git bisect--helper --bisect-auto-next"),
        N_("git bisect--helper --bisect-state (bad|new) [<rev>]"),
        N_("git bisect--helper --bisect-state (good|old) [<rev>...]"),
+       N_("git bisect--helper --bisect-replay <filename>"),
+       N_("git bisect--helper --bisect-skip [(<rev>|<range>)...]"),
        NULL
 };
 
@@ -875,12 +874,19 @@ static enum bisect_error bisect_state(struct bisect_terms *terms, const char **a
         */
 
        for (; argc; argc--, argv++) {
+               struct commit *commit;
+
                if (get_oid(*argv, &oid)){
                        error(_("Bad rev input: %s"), *argv);
                        oid_array_clear(&revs);
                        return BISECT_FAILED;
                }
-               oid_array_append(&revs, &oid);
+
+               commit = lookup_commit_reference(the_repository, &oid);
+               if (!commit)
+                       die(_("Bad rev input (not a commit): %s"), *argv);
+
+               oid_array_append(&revs, &commit->object.oid);
        }
 
        if (strbuf_read_file(&buf, git_path_bisect_expected_rev(), 0) < the_hash_algo->hexsz ||
@@ -904,28 +910,148 @@ static enum bisect_error bisect_state(struct bisect_terms *terms, const char **a
        return bisect_auto_next(terms, NULL);
 }
 
+static enum bisect_error bisect_log(void)
+{
+       int fd, status;
+       const char* filename = git_path_bisect_log();
+
+       if (is_empty_or_missing_file(filename))
+               return error(_("We are not bisecting."));
+
+       fd = open(filename, O_RDONLY);
+       if (fd < 0)
+               return BISECT_FAILED;
+
+       status = copy_fd(fd, STDOUT_FILENO);
+       close(fd);
+       return status ? BISECT_FAILED : BISECT_OK;
+}
+
+static int process_replay_line(struct bisect_terms *terms, struct strbuf *line)
+{
+       const char *p = line->buf + strspn(line->buf, " \t");
+       char *word_end, *rev;
+
+       if ((!skip_prefix(p, "git bisect", &p) &&
+       !skip_prefix(p, "git-bisect", &p)) || !isspace(*p))
+               return 0;
+       p += strspn(p, " \t");
+
+       word_end = (char *)p + strcspn(p, " \t");
+       rev = word_end + strspn(word_end, " \t");
+       *word_end = '\0'; /* NUL-terminate the word */
+
+       get_terms(terms);
+       if (check_and_set_terms(terms, p))
+               return -1;
+
+       if (!strcmp(p, "start")) {
+               struct strvec argv = STRVEC_INIT;
+               int res;
+               sq_dequote_to_strvec(rev, &argv);
+               res = bisect_start(terms, argv.v, argv.nr);
+               strvec_clear(&argv);
+               return res;
+       }
+
+       if (one_of(p, terms->term_good,
+          terms->term_bad, "skip", NULL))
+               return bisect_write(p, rev, terms, 0);
+
+       if (!strcmp(p, "terms")) {
+               struct strvec argv = STRVEC_INIT;
+               int res;
+               sq_dequote_to_strvec(rev, &argv);
+               res = bisect_terms(terms, argv.nr == 1 ? argv.v[0] : NULL);
+               strvec_clear(&argv);
+               return res;
+       }
+       error(_("'%s'?? what are you talking about?"), p);
+
+       return -1;
+}
+
+static enum bisect_error bisect_replay(struct bisect_terms *terms, const char *filename)
+{
+       FILE *fp = NULL;
+       enum bisect_error res = BISECT_OK;
+       struct strbuf line = STRBUF_INIT;
+
+       if (is_empty_or_missing_file(filename))
+               return error(_("cannot read file '%s' for replaying"), filename);
+
+       if (bisect_reset(NULL))
+               return BISECT_FAILED;
+
+       fp = fopen(filename, "r");
+       if (!fp)
+               return BISECT_FAILED;
+
+       while ((strbuf_getline(&line, fp) != EOF) && !res)
+               res = process_replay_line(terms, &line);
+
+       strbuf_release(&line);
+       fclose(fp);
+
+       if (res)
+               return BISECT_FAILED;
+
+       return bisect_auto_next(terms, NULL);
+}
+
+static enum bisect_error bisect_skip(struct bisect_terms *terms, const char **argv, int argc)
+{
+       int i;
+       enum bisect_error res;
+       struct strvec argv_state = STRVEC_INIT;
+
+       strvec_push(&argv_state, "skip");
+
+       for (i = 0; i < argc; i++) {
+               const char *dotdot = strstr(argv[i], "..");
+
+               if (dotdot) {
+                       struct rev_info revs;
+                       struct commit *commit;
+
+                       init_revisions(&revs, NULL);
+                       setup_revisions(2, argv + i - 1, &revs, NULL);
+
+                       if (prepare_revision_walk(&revs))
+                               die(_("revision walk setup failed\n"));
+                       while ((commit = get_revision(&revs)) != NULL)
+                               strvec_push(&argv_state,
+                                               oid_to_hex(&commit->object.oid));
+
+                       reset_revision_walk();
+               } else {
+                       strvec_push(&argv_state, argv[i]);
+               }
+       }
+       res = bisect_state(terms, argv_state.v, argv_state.nr);
+
+       strvec_clear(&argv_state);
+       return res;
+}
+
 int cmd_bisect__helper(int argc, const char **argv, const char *prefix)
 {
        enum {
                BISECT_RESET = 1,
-               BISECT_WRITE,
-               CHECK_AND_SET_TERMS,
                BISECT_NEXT_CHECK,
                BISECT_TERMS,
                BISECT_START,
                BISECT_AUTOSTART,
                BISECT_NEXT,
-               BISECT_AUTO_NEXT,
-               BISECT_STATE
+               BISECT_STATE,
+               BISECT_LOG,
+               BISECT_REPLAY,
+               BISECT_SKIP
        } cmdmode = 0;
        int res = 0, nolog = 0;
        struct option options[] = {
                OPT_CMDMODE(0, "bisect-reset", &cmdmode,
                         N_("reset the bisection state"), BISECT_RESET),
-               OPT_CMDMODE(0, "bisect-write", &cmdmode,
-                        N_("write out the bisection state in BISECT_LOG"), BISECT_WRITE),
-               OPT_CMDMODE(0, "check-and-set-terms", &cmdmode,
-                        N_("check and set terms in a bisection state"), CHECK_AND_SET_TERMS),
                OPT_CMDMODE(0, "bisect-next-check", &cmdmode,
                         N_("check whether bad or good terms exist"), BISECT_NEXT_CHECK),
                OPT_CMDMODE(0, "bisect-terms", &cmdmode,
@@ -934,10 +1060,14 @@ int cmd_bisect__helper(int argc, const char **argv, const char *prefix)
                         N_("start the bisect session"), BISECT_START),
                OPT_CMDMODE(0, "bisect-next", &cmdmode,
                         N_("find the next bisection commit"), BISECT_NEXT),
-               OPT_CMDMODE(0, "bisect-auto-next", &cmdmode,
-                        N_("verify the next bisection state then checkout the next bisection commit"), BISECT_AUTO_NEXT),
                OPT_CMDMODE(0, "bisect-state", &cmdmode,
                         N_("mark the state of ref (or refs)"), BISECT_STATE),
+               OPT_CMDMODE(0, "bisect-log", &cmdmode,
+                        N_("list the bisection steps so far"), BISECT_LOG),
+               OPT_CMDMODE(0, "bisect-replay", &cmdmode,
+                        N_("replay the bisection process from the given file"), BISECT_REPLAY),
+               OPT_CMDMODE(0, "bisect-skip", &cmdmode,
+                        N_("skip some commits for checkout"), BISECT_SKIP),
                OPT_BOOL(0, "no-log", &nolog,
                         N_("no log for BISECT_WRITE")),
                OPT_END()
@@ -955,18 +1085,7 @@ int cmd_bisect__helper(int argc, const char **argv, const char *prefix)
        case BISECT_RESET:
                if (argc > 1)
                        return error(_("--bisect-reset requires either no argument or a commit"));
-               return !!bisect_reset(argc ? argv[0] : NULL);
-       case BISECT_WRITE:
-               if (argc != 4 && argc != 5)
-                       return error(_("--bisect-write requires either 4 or 5 arguments"));
-               set_terms(&terms, argv[3], argv[2]);
-               res = bisect_write(argv[0], argv[1], &terms, nolog);
-               break;
-       case CHECK_AND_SET_TERMS:
-               if (argc != 3)
-                       return error(_("--check-and-set-terms requires 3 arguments"));
-               set_terms(&terms, argv[2], argv[1]);
-               res = check_and_set_terms(&terms, argv[0]);
+               res = bisect_reset(argc ? argv[0] : NULL);
                break;
        case BISECT_NEXT_CHECK:
                if (argc != 2 && argc != 3)
@@ -989,17 +1108,26 @@ int cmd_bisect__helper(int argc, const char **argv, const char *prefix)
                get_terms(&terms);
                res = bisect_next(&terms, prefix);
                break;
-       case BISECT_AUTO_NEXT:
-               if (argc)
-                       return error(_("--bisect-auto-next requires 0 arguments"));
-               get_terms(&terms);
-               res = bisect_auto_next(&terms, prefix);
-               break;
        case BISECT_STATE:
                set_terms(&terms, "bad", "good");
                get_terms(&terms);
                res = bisect_state(&terms, argv, argc);
                break;
+       case BISECT_LOG:
+               if (argc)
+                       return error(_("--bisect-log requires 0 arguments"));
+               res = bisect_log();
+               break;
+       case BISECT_REPLAY:
+               if (argc != 1)
+                       return error(_("no logfile given"));
+               set_terms(&terms, "bad", "good");
+               res = bisect_replay(&terms, argv[0]);
+               break;
+       case BISECT_SKIP:
+               set_terms(&terms, "bad", "good");
+               res = bisect_skip(&terms, argv, argc);
+               break;
        default:
                BUG("unknown subcommand %d", cmdmode);
        }
index b66e938022bc5fdf61d9910c274c08a79084648e..641523ff9af693bcbef8e77e66b3a5a607f7219f 100644 (file)
@@ -425,13 +425,11 @@ static void setup_default_color_by_age(void)
        parse_color_fields("blue,12 month ago,white,1 month ago,red");
 }
 
-static void determine_line_heat(struct blame_entry *ent, const char **dest_color)
+static void determine_line_heat(struct commit_info *ci, const char **dest_color)
 {
        int i = 0;
-       struct commit_info ci;
-       get_commit_info(ent->suspect->commit, &ci, 1);
 
-       while (i < colorfield_nr && ci.author_time > colorfield[i].hop)
+       while (i < colorfield_nr && ci->author_time > colorfield[i].hop)
                i++;
 
        *dest_color = colorfield[i].col;
@@ -453,7 +451,7 @@ static void emit_other(struct blame_scoreboard *sb, struct blame_entry *ent, int
        cp = blame_nth_line(sb, ent->lno);
 
        if (opt & OUTPUT_SHOW_AGE_WITH_COLOR) {
-               determine_line_heat(ent, &default_color);
+               determine_line_heat(&ci, &default_color);
                color = default_color;
                reset = GIT_COLOR_RESET;
        }
index 4bbfc92dce5a0e71e4389c16fd096f4a22fef4a1..c0bf4ac1b2d5d0d51989f1adaa8ceca46721ca27 100644 (file)
@@ -11,6 +11,7 @@
 #include "quote.h"
 #include "cache-tree.h"
 #include "parse-options.h"
+#include "entry.h"
 
 #define CHECKOUT_ALL 4
 static int nul_term_line;
@@ -23,22 +24,35 @@ static struct checkout state = CHECKOUT_INIT;
 static void write_tempfile_record(const char *name, const char *prefix)
 {
        int i;
+       int have_tempname = 0;
 
        if (CHECKOUT_ALL == checkout_stage) {
-               for (i = 1; i < 4; i++) {
-                       if (i > 1)
-                               putchar(' ');
-                       if (topath[i][0])
-                               fputs(topath[i], stdout);
-                       else
-                               putchar('.');
+               for (i = 1; i < 4; i++)
+                       if (topath[i][0]) {
+                               have_tempname = 1;
+                               break;
+                       }
+
+               if (have_tempname) {
+                       for (i = 1; i < 4; i++) {
+                               if (i > 1)
+                                       putchar(' ');
+                               if (topath[i][0])
+                                       fputs(topath[i], stdout);
+                               else
+                                       putchar('.');
+                       }
                }
-       } else
+       } else if (topath[checkout_stage][0]) {
+               have_tempname = 1;
                fputs(topath[checkout_stage], stdout);
+       }
 
-       putchar('\t');
-       write_name_quoted_relative(name, prefix, stdout,
-                                  nul_term_line ? '\0' : '\n');
+       if (have_tempname) {
+               putchar('\t');
+               write_name_quoted_relative(name, prefix, stdout,
+                                          nul_term_line ? '\0' : '\n');
+       }
 
        for (i = 0; i < 4; i++) {
                topath[i][0] = 0;
index 2d6550bc3c8638a3d25a04924a1352a43854d4c6..4c696ef4805b73a30c2ba19e7b3319a836b1c169 100644 (file)
@@ -26,6 +26,7 @@
 #include "unpack-trees.h"
 #include "wt-status.h"
 #include "xdiff-interface.h"
+#include "entry.h"
 
 static const char * const checkout_usage[] = {
        N_("git checkout [<options>] <branch>"),
@@ -114,7 +115,7 @@ static int post_checkout_hook(struct commit *old_commit, struct commit *new_comm
 }
 
 static int update_some(const struct object_id *oid, struct strbuf *base,
-               const char *pathname, unsigned mode, int stage, void *context)
+               const char *pathname, unsigned mode, void *context)
 {
        int len;
        struct cache_entry *ce;
@@ -155,8 +156,8 @@ static int update_some(const struct object_id *oid, struct strbuf *base,
 
 static int read_tree_some(struct tree *tree, const struct pathspec *pathspec)
 {
-       read_tree_recursive(the_repository, tree, "", 0, 0,
-                           pathspec, update_some, NULL);
+       read_tree(the_repository, tree,
+                 pathspec, update_some, NULL);
 
        /* update the index with the given tree's info
         * for all args, expanding wildcards, and exit
@@ -322,7 +323,7 @@ static void mark_ce_for_checkout_overlay(struct cache_entry *ce,
         * If it comes from the tree-ish, we already know it
         * matches the pathspec and could just stamp
         * CE_MATCHED to it from update_some(). But we still
-        * need ps_matched and read_tree_recursive (and
+        * need ps_matched and read_tree (and
         * eventually tree_entry_interesting) cannot fill
         * ps_matched yet. Once it can, we can avoid calling
         * match_pathspec() for _all_ entries when
index 687ab473c20c6bee7d578a8650cc906fa3e70184..995053b79173e1eab3d4ce567557c37893f4214a 100644 (file)
@@ -623,7 +623,7 @@ static int *list_and_choose(struct menu_opts *opts, struct menu_stuff *stuff)
                                nr += chosen[i];
                }
 
-               result = xcalloc(st_add(nr, 1), sizeof(int));
+               CALLOC_ARRAY(result, st_add(nr, 1));
                for (i = 0; i < stuff->nr && j < nr; i++) {
                        if (chosen[i])
                                result[j++] = i;
index e335734b4cfd32560b5d0cfa8a60426fa5c9514c..f6b0c48beda5fe32fab4d4ab65802f1e5dc9a09f 100644 (file)
@@ -50,6 +50,8 @@ static int option_no_checkout, option_bare, option_mirror, option_single_branch
 static int option_local = -1, option_no_hardlinks, option_shared;
 static int option_no_tags;
 static int option_shallow_submodules;
+static int option_reject_shallow = -1;    /* unspecified */
+static int config_reject_shallow = -1;    /* unspecified */
 static int deepen;
 static char *option_template, *option_depth, *option_since;
 static char *option_origin = NULL;
@@ -90,6 +92,8 @@ static struct option builtin_clone_options[] = {
        OPT__VERBOSITY(&option_verbosity),
        OPT_BOOL(0, "progress", &option_progress,
                 N_("force progress reporting")),
+       OPT_BOOL(0, "reject-shallow", &option_reject_shallow,
+                N_("don't clone shallow repository")),
        OPT_BOOL('n', "no-checkout", &option_no_checkout,
                 N_("don't create a checkout")),
        OPT_BOOL(0, "bare", &option_bare, N_("create a bare repository")),
@@ -858,6 +862,9 @@ static int git_clone_config(const char *k, const char *v, void *cb)
                free(remote_name);
                remote_name = xstrdup(v);
        }
+       if (!strcmp(k, "clone.rejectshallow"))
+               config_reject_shallow = git_config_bool(k, v);
+
        return git_default_config(k, v, cb);
 }
 
@@ -963,11 +970,12 @@ static int path_exists(const char *path)
 int cmd_clone(int argc, const char **argv, const char *prefix)
 {
        int is_bundle = 0, is_local;
+       int reject_shallow = 0;
        const char *repo_name, *repo, *work_tree, *git_dir;
-       char *path, *dir, *display_repo = NULL;
+       char *path = NULL, *dir, *display_repo = NULL;
        int dest_exists, real_dest_exists = 0;
        const struct ref *refs, *remote_head;
-       const struct ref *remote_head_points_at;
+       struct ref *remote_head_points_at = NULL;
        const struct ref *our_head_points_at;
        struct ref *mapped_refs;
        const struct ref *ref;
@@ -979,7 +987,8 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
        int err = 0, complete_refs_before_fetch = 1;
        int submodule_progress;
 
-       struct strvec ref_prefixes = STRVEC_INIT;
+       struct transport_ls_refs_options transport_ls_refs_options =
+               TRANSPORT_LS_REFS_OPTIONS_INIT;
 
        packet_trace_identity("clone");
 
@@ -1016,9 +1025,10 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
        repo_name = argv[0];
 
        path = get_repo_path(repo_name, &is_bundle);
-       if (path)
+       if (path) {
+               FREE_AND_NULL(path);
                repo = absolute_pathdup(repo_name);
-       else if (strchr(repo_name, ':')) {
+       else if (strchr(repo_name, ':')) {
                repo = repo_name;
                display_repo = transport_anonymize_url(repo);
        } else
@@ -1155,6 +1165,15 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
         */
        git_config(git_clone_config, NULL);
 
+       /*
+        * If option_reject_shallow is specified from CLI option,
+        * ignore config_reject_shallow from git_clone_config.
+        */
+       if (config_reject_shallow != -1)
+               reject_shallow = config_reject_shallow;
+       if (option_reject_shallow != -1)
+               reject_shallow = option_reject_shallow;
+
        /*
         * apply the remote name provided by --origin only after this second
         * call to git_config, to ensure it overrides all config-based values.
@@ -1215,6 +1234,8 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
                if (filter_options.choice)
                        warning(_("--filter is ignored in local clones; use file:// instead."));
                if (!access(mkpath("%s/shallow", path), F_OK)) {
+                       if (reject_shallow)
+                               die(_("source repository is shallow, reject to clone."));
                        if (option_local > 0)
                                warning(_("source repository is shallow, ignoring --local"));
                        is_local = 0;
@@ -1226,6 +1247,8 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
 
        transport_set_option(transport, TRANS_OPT_KEEP, "yes");
 
+       if (reject_shallow)
+               transport_set_option(transport, TRANS_OPT_REJECT_SHALLOW, "1");
        if (option_depth)
                transport_set_option(transport, TRANS_OPT_DEPTH,
                                     option_depth);
@@ -1257,14 +1280,17 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
                transport->smart_options->check_self_contained_and_connected = 1;
 
 
-       strvec_push(&ref_prefixes, "HEAD");
-       refspec_ref_prefixes(&remote->fetch, &ref_prefixes);
+       strvec_push(&transport_ls_refs_options.ref_prefixes, "HEAD");
+       refspec_ref_prefixes(&remote->fetch,
+                            &transport_ls_refs_options.ref_prefixes);
        if (option_branch)
-               expand_ref_prefix(&ref_prefixes, option_branch);
+               expand_ref_prefix(&transport_ls_refs_options.ref_prefixes,
+                                 option_branch);
        if (!option_no_tags)
-               strvec_push(&ref_prefixes, "refs/tags/");
+               strvec_push(&transport_ls_refs_options.ref_prefixes,
+                           "refs/tags/");
 
-       refs = transport_get_remote_refs(transport, &ref_prefixes);
+       refs = transport_get_remote_refs(transport, &transport_ls_refs_options);
 
        if (refs) {
                int hash_algo = hash_algo_by_ptr(transport_get_hash_algo(transport));
@@ -1326,8 +1352,19 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
                remote_head = NULL;
                option_no_checkout = 1;
                if (!option_bare) {
-                       const char *branch = git_default_branch_name(0);
-                       char *ref = xstrfmt("refs/heads/%s", branch);
+                       const char *branch;
+                       char *ref;
+
+                       if (transport_ls_refs_options.unborn_head_target &&
+                           skip_prefix(transport_ls_refs_options.unborn_head_target,
+                                       "refs/heads/", &branch)) {
+                               ref = transport_ls_refs_options.unborn_head_target;
+                               transport_ls_refs_options.unborn_head_target = NULL;
+                               create_symref("HEAD", ref, reflog_msg.buf);
+                       } else {
+                               branch = git_default_branch_name(0);
+                               ref = xstrfmt("refs/heads/%s", branch);
+                       }
 
                        install_branch_config(0, branch, remote_name, ref);
                        free(ref);
@@ -1378,8 +1415,14 @@ cleanup:
        strbuf_release(&reflog_msg);
        strbuf_release(&branch_top);
        strbuf_release(&key);
+       free_refs(mapped_refs);
+       free_refs(remote_head_points_at);
+       free(dir);
+       free(path);
+       UNLEAK(repo);
        junk_mode = JUNK_LEAVE_ALL;
 
-       strvec_clear(&ref_prefixes);
+       strvec_clear(&transport_ls_refs_options.ref_prefixes);
+       free(transport_ls_refs_options.unborn_head_target);
        return err;
 }
index e815e148aa18364c198eef0ee5c2ed4e34ae77e9..40d4b3bee2dd8e7e20b2d0ecc289837a0458c771 100644 (file)
@@ -27,10 +27,10 @@ int cmd_column(int argc, const char **argv, const char *prefix)
                OPT_STRING(0, "command", &real_command, N_("name"), N_("lookup config vars")),
                OPT_COLUMN(0, "mode", &colopts, N_("layout to use")),
                OPT_INTEGER(0, "raw-mode", &colopts, N_("layout to use")),
-               OPT_INTEGER(0, "width", &copts.width, N_("Maximum width")),
-               OPT_STRING(0, "indent", &copts.indent, N_("string"), N_("Padding space on left border")),
-               OPT_INTEGER(0, "nl", &copts.nl, N_("Padding space on right border")),
-               OPT_INTEGER(0, "padding", &copts.padding, N_("Padding space between columns")),
+               OPT_INTEGER(0, "width", &copts.width, N_("maximum width")),
+               OPT_STRING(0, "indent", &copts.indent, N_("string"), N_("padding space on left border")),
+               OPT_INTEGER(0, "nl", &copts.nl, N_("padding space on right border")),
+               OPT_INTEGER(0, "padding", &copts.padding, N_("padding space between columns")),
                OPT_END()
        };
 
index 739110c5a7f60d0d8927f7034f3b8c8cc368ea82..55d50a8891b75bc98805ebdf8fd49f85d3935ee1 100644 (file)
@@ -105,7 +105,8 @@ static const char *template_file;
  */
 static const char *author_message, *author_message_buffer;
 static char *edit_message, *use_message;
-static char *fixup_message, *squash_message;
+static char *fixup_message, *fixup_commit, *squash_message;
+static const char *fixup_prefix;
 static int all, also, interactive, patch_interactive, only, amend, signoff;
 static int edit_flag = -1; /* unspecified */
 static int quiet, verbose, no_verify, allow_empty, dry_run, renew_authorship;
@@ -113,6 +114,7 @@ static int config_commit_verbose = -1; /* unspecified */
 static int no_post_rewrite, allow_empty_message, pathspec_file_nul;
 static char *untracked_files_arg, *force_date, *ignore_submodule_arg, *ignored_arg;
 static char *sign_commit, *pathspec_from_file;
+static struct strvec trailer_args = STRVEC_INIT;
 
 /*
  * The default commit message cleanup mode will remove the lines
@@ -131,6 +133,14 @@ static struct strbuf message = STRBUF_INIT;
 
 static enum wt_status_format status_format = STATUS_FORMAT_UNSPECIFIED;
 
+static int opt_pass_trailer(const struct option *opt, const char *arg, int unset)
+{
+       BUG_ON_OPT_NEG(unset);
+
+       strvec_pushl(&trailer_args, "--trailer", arg, NULL);
+       return 0;
+}
+
 static int opt_parse_porcelain(const struct option *opt, const char *arg, int unset)
 {
        enum wt_status_format *value = (enum wt_status_format *)opt->value;
@@ -357,7 +367,8 @@ static const char *prepare_index(const char **argv, const char *prefix,
                die(_("--pathspec-file-nul requires --pathspec-from-file"));
        }
 
-       if (!pathspec.nr && (also || (only && !amend && !allow_empty)))
+       if (!pathspec.nr && (also || (only && !allow_empty &&
+           (!amend || (fixup_message && strcmp(fixup_prefix, "amend"))))))
                die(_("No paths with --include/--only does not make sense."));
 
        if (read_cache_preload(&pathspec) < 0)
@@ -681,6 +692,22 @@ static void adjust_comment_line_char(const struct strbuf *sb)
        comment_line_char = *p;
 }
 
+static void prepare_amend_commit(struct commit *commit, struct strbuf *sb,
+                               struct pretty_print_context *ctx)
+{
+       const char *buffer, *subject, *fmt;
+
+       buffer = get_commit_buffer(commit, NULL);
+       find_commit_subject(buffer, &subject);
+       /*
+        * If we amend the 'amend!' commit then we don't want to
+        * duplicate the subject line.
+        */
+       fmt = starts_with(subject, "amend!") ? "%b" : "%B";
+       format_commit_message(commit, fmt, sb, ctx);
+       unuse_commit_buffer(commit, buffer);
+}
+
 static int prepare_to_commit(const char *index_file, const char *prefix,
                             struct commit *current_head,
                             struct wt_status *s,
@@ -745,15 +772,33 @@ static int prepare_to_commit(const char *index_file, const char *prefix,
        } else if (fixup_message) {
                struct pretty_print_context ctx = {0};
                struct commit *commit;
-               commit = lookup_commit_reference_by_name(fixup_message);
+               char *fmt;
+               commit = lookup_commit_reference_by_name(fixup_commit);
                if (!commit)
-                       die(_("could not lookup commit %s"), fixup_message);
+                       die(_("could not lookup commit %s"), fixup_commit);
                ctx.output_encoding = get_commit_output_encoding();
-               format_commit_message(commit, "fixup! %s\n\n",
-                                     &sb, &ctx);
-               if (have_option_m)
-                       strbuf_addbuf(&sb, &message);
+               fmt = xstrfmt("%s! %%s\n\n", fixup_prefix);
+               format_commit_message(commit, fmt, &sb, &ctx);
+               free(fmt);
                hook_arg1 = "message";
+
+               /*
+                * Only `-m` commit message option is checked here, as
+                * it supports `--fixup` to append the commit message.
+                *
+                * The other commit message options `-c`/`-C`/`-F` are
+                * incompatible with all the forms of `--fixup` and
+                * have already errored out while parsing the `git commit`
+                * options.
+                */
+               if (have_option_m && !strcmp(fixup_prefix, "fixup"))
+                       strbuf_addbuf(&sb, &message);
+
+               if (!strcmp(fixup_prefix, "amend")) {
+                       if (have_option_m)
+                               die(_("cannot combine -m with --fixup:%s"), fixup_message);
+                       prepare_amend_commit(commit, &sb, &ctx);
+               }
        } else if (!stat(git_path_merge_msg(the_repository), &statbuf)) {
                size_t merge_msg_start;
 
@@ -958,6 +1003,18 @@ static int prepare_to_commit(const char *index_file, const char *prefix,
 
        fclose(s->fp);
 
+       if (trailer_args.nr) {
+               struct child_process run_trailer = CHILD_PROCESS_INIT;
+
+               strvec_pushl(&run_trailer.args, "interpret-trailers",
+                            "--in-place", git_path_commit_editmsg(), NULL);
+               strvec_pushv(&run_trailer.args, trailer_args.v);
+               run_trailer.git_cmd = 1;
+               if (run_command(&run_trailer))
+                       die(_("unable to pass trailers to --trailers"));
+               strvec_clear(&trailer_args);
+       }
+
        /*
         * Reject an attempt to record a non-merge empty commit without
         * explicit --allow-empty. In the cherry-pick case, it may be
@@ -1152,6 +1209,19 @@ static void finalize_deferred_config(struct wt_status *s)
                s->ahead_behind_flags = AHEAD_BEHIND_FULL;
 }
 
+static void check_fixup_reword_options(int argc, const char *argv[]) {
+       if (whence != FROM_COMMIT) {
+               if (whence == FROM_MERGE)
+                       die(_("You are in the middle of a merge -- cannot reword."));
+               else if (is_from_cherry_pick(whence))
+                       die(_("You are in the middle of a cherry-pick -- cannot reword."));
+       }
+       if (argc)
+               die(_("cannot combine reword option of --fixup with path '%s'"), *argv);
+       if (patch_interactive || interactive || all || also || only)
+               die(_("reword option of --fixup is mutually exclusive with --patch/--interactive/--all/--include/--only"));
+}
+
 static int parse_and_validate_options(int argc, const char *argv[],
                                      const struct option *options,
                                      const char * const usage[],
@@ -1170,7 +1240,7 @@ static int parse_and_validate_options(int argc, const char *argv[],
        if (force_author && renew_authorship)
                die(_("Using both --reset-author and --author does not make sense"));
 
-       if (logfile || have_option_m || use_message || fixup_message)
+       if (logfile || have_option_m || use_message)
                use_editor = 0;
        if (0 <= edit_flag)
                use_editor = edit_flag;
@@ -1227,6 +1297,42 @@ static int parse_and_validate_options(int argc, const char *argv[],
 
        if (also + only + all + interactive > 1)
                die(_("Only one of --include/--only/--all/--interactive/--patch can be used."));
+
+       if (fixup_message) {
+               /*
+                * We limit --fixup's suboptions to only alpha characters.
+                * If the first character after a run of alpha is colon,
+                * then the part before the colon may be a known suboption
+                * name like `amend` or `reword`, or a misspelt suboption
+                * name. In either case, we treat it as
+                * --fixup=<suboption>:<arg>.
+                *
+                * Otherwise, we are dealing with --fixup=<commit>.
+                */
+               char *p = fixup_message;
+               while (isalpha(*p))
+                       p++;
+               if (p > fixup_message && *p == ':') {
+                       *p = '\0';
+                       fixup_commit = p + 1;
+                       if (!strcmp("amend", fixup_message) ||
+                           !strcmp("reword", fixup_message)) {
+                               fixup_prefix = "amend";
+                               allow_empty = 1;
+                               if (*fixup_message == 'r') {
+                                       check_fixup_reword_options(argc, argv);
+                                       only = 1;
+                               }
+                       } else {
+                               die(_("unknown option: --fixup=%s:%s"), fixup_message, fixup_commit);
+                       }
+               } else {
+                       fixup_commit = fixup_message;
+                       fixup_prefix = "fixup";
+                       use_editor = 0;
+               }
+       }
+
        cleanup_mode = get_cleanup_mode(cleanup_arg, use_editor);
 
        handle_untracked_files_arg(s);
@@ -1504,9 +1610,14 @@ int cmd_commit(int argc, const char **argv, const char *prefix)
                OPT_CALLBACK('m', "message", &message, N_("message"), N_("commit message"), opt_parse_m),
                OPT_STRING('c', "reedit-message", &edit_message, N_("commit"), N_("reuse and edit message from specified commit")),
                OPT_STRING('C', "reuse-message", &use_message, N_("commit"), N_("reuse message from specified commit")),
-               OPT_STRING(0, "fixup", &fixup_message, N_("commit"), N_("use autosquash formatted message to fixup specified commit")),
+               /*
+                * TRANSLATORS: Leave "[(amend|reword):]" as-is,
+                * and only translate <commit>.
+                */
+               OPT_STRING(0, "fixup", &fixup_message, N_("[(amend|reword):]commit"), N_("use autosquash formatted message to fixup or amend/reword specified commit")),
                OPT_STRING(0, "squash", &squash_message, N_("commit"), N_("use autosquash formatted message to squash specified commit")),
                OPT_BOOL(0, "reset-author", &renew_authorship, N_("the commit is authored by me now (used with -C/-c/--amend)")),
+               OPT_CALLBACK_F(0, "trailer", NULL, N_("trailer"), N_("add custom trailer(s)"), PARSE_OPT_NONEG, opt_pass_trailer),
                OPT_BOOL('s', "signoff", &signoff, N_("add a Signed-off-by trailer")),
                OPT_FILENAME('t', "template", &template_file, N_("use specified template file")),
                OPT_BOOL('e', "edit", &edit_flag, N_("force edit of commit")),
@@ -1663,6 +1774,19 @@ int cmd_commit(int argc, const char **argv, const char *prefix)
                exit(1);
        }
 
+       if (fixup_message && starts_with(sb.buf, "amend! ") &&
+           !allow_empty_message) {
+               struct strbuf body = STRBUF_INIT;
+               size_t len = commit_subject_length(sb.buf);
+               strbuf_addstr(&body, sb.buf + len);
+               if (message_is_empty(&body, cleanup_mode)) {
+                       rollback_index_files();
+                       fprintf(stderr, _("Aborting commit due to empty commit message body.\n"));
+                       exit(1);
+               }
+               strbuf_release(&body);
+       }
+
        if (amend) {
                const char *exclude_gpgsig[3] = { "gpgsig", "gpgsig-sha256", NULL };
                extra = read_commit_extra_headers(current_head, exclude_gpgsig);
index c61f123a3b81beef04d418142d0fae8b0ffd9dbe..4c6c89ab0de2eb3dbc2785033249e853aea32f16 100644 (file)
@@ -203,9 +203,10 @@ static int serve_cache_loop(int fd)
 
 static void serve_cache(const char *socket_path, int debug)
 {
+       struct unix_stream_listen_opts opts = UNIX_STREAM_LISTEN_OPTS_INIT;
        int fd;
 
-       fd = unix_stream_listen(socket_path);
+       fd = unix_stream_listen(socket_path, &opts);
        if (fd < 0)
                die_errno("unable to bind to '%s'", socket_path);
 
index 9b3f709905979ef213e76069b573390f4eda7333..76a6ba37223fa94347192bdd7762da29cf6de920 100644 (file)
@@ -14,7 +14,7 @@
 static int send_request(const char *socket, const struct strbuf *out)
 {
        int got_data = 0;
-       int fd = unix_stream_connect(socket);
+       int fd = unix_stream_connect(socket, 0);
 
        if (fd < 0)
                return -1;
index 4742a4559b21beb38092e9e35c7f8c2e951455be..70103c40952093100e41361e15ab6dbe54ef0268 100644 (file)
@@ -36,7 +36,7 @@ int cmd_diff_files(int argc, const char **argv, const char *prefix)
         */
        rev.diffopt.ita_invisible_in_index = 1;
 
-       precompose_argv(argc, argv);
+       prefix = precompose_argv_prefix(argc, argv, prefix);
 
        argc = setup_revisions(argc, argv, &rev, NULL);
        while (1 < argc && argv[1][0] == '-') {
@@ -54,6 +54,7 @@ int cmd_diff_files(int argc, const char **argv, const char *prefix)
        }
        if (!rev.diffopt.output_format)
                rev.diffopt.output_format = DIFF_FORMAT_RAW;
+       rev.diffopt.rotate_to_strict = 1;
 
        /*
         * Make sure there are NO revision (i.e. pending object) parameter,
index 7f5281c46168ed72505fe9ee3cfa200c200b4cb1..176fe7ff2b4e15b4a95ffc3019528318af84b42a 100644 (file)
@@ -25,7 +25,7 @@ int cmd_diff_index(int argc, const char **argv, const char *prefix)
        git_config(git_diff_basic_config, NULL); /* no "diff" UI options */
        repo_init_revisions(the_repository, &rev, prefix);
        rev.abbrev = 0;
-       precompose_argv(argc, argv);
+       prefix = precompose_argv_prefix(argc, argv, prefix);
 
        argc = setup_revisions(argc, argv, &rev, NULL);
        for (i = 1; i < argc; i++) {
@@ -41,6 +41,8 @@ int cmd_diff_index(int argc, const char **argv, const char *prefix)
        if (!rev.diffopt.output_format)
                rev.diffopt.output_format = DIFF_FORMAT_RAW;
 
+       rev.diffopt.rotate_to_strict = 1;
+
        /*
         * Make sure there is one revision (i.e. pending object),
         * and there is no revision filtering parameters.
index 9fc95e959f0e0dba69cc1f96597bb77f30997d1e..f33d30d57bff2ef8923ea9649a5afd4d49eb0574 100644 (file)
@@ -126,7 +126,7 @@ int cmd_diff_tree(int argc, const char **argv, const char *prefix)
        memset(&s_r_opt, 0, sizeof(s_r_opt));
        s_r_opt.tweak = diff_tree_tweak_rev;
 
-       precompose_argv(argc, argv);
+       prefix = precompose_argv_prefix(argc, argv, prefix);
        argc = setup_revisions(argc, argv, opt, &s_r_opt);
 
        memset(&w, 0, sizeof(w));
@@ -156,6 +156,8 @@ int cmd_diff_tree(int argc, const char **argv, const char *prefix)
        if (merge_base && opt->pending.nr != 2)
                die(_("--merge-base only works with two commits"));
 
+       opt->diffopt.rotate_to_strict = 1;
+
        /*
         * NOTE!  We expect "a..b" to expand to "^a b" but it is
         * perfectly valid for revision range parser to yield "b ^a",
@@ -192,6 +194,7 @@ int cmd_diff_tree(int argc, const char **argv, const char *prefix)
                int saved_nrl = 0;
                int saved_dcctc = 0;
 
+               opt->diffopt.rotate_to_strict = 0;
                if (opt->diffopt.detect_rename) {
                        if (!the_index.cache)
                                repo_read_index(the_repository);
index 5cfe1717e8deeabf45d7ebcaea078ddab1c7e410..617b9a4101dbd8255983664d403316a238e0c952 100644 (file)
@@ -453,7 +453,7 @@ int cmd_diff(int argc, const char **argv, const char *prefix)
 
        init_diff_ui_defaults();
        git_config(git_diff_ui_config, NULL);
-       precompose_argv(argc, argv);
+       prefix = precompose_argv_prefix(argc, argv, prefix);
 
        repo_init_revisions(the_repository, &rev, prefix);
 
@@ -491,6 +491,7 @@ int cmd_diff(int argc, const char **argv, const char *prefix)
        }
 
        rev.diffopt.flags.recursive = 1;
+       rev.diffopt.rotate_to_strict = 1;
 
        setup_diff_pager(&rev.diffopt);
 
index 6e18e623fddfbfb33a3de9f4df8cabbbc048ed51..ef25729d4966fa9ac8361e6c96656fd071c5c97e 100644 (file)
@@ -23,6 +23,7 @@
 #include "lockfile.h"
 #include "object-store.h"
 #include "dir.h"
+#include "entry.h"
 
 static int trust_exit_code;
 
index dd4d09cecebd57a6d89c3b8224a5435f26c5a5d2..3afa81cf9acdba53ef6ddaa30b54e5ae539f745d 100644 (file)
@@ -3322,7 +3322,7 @@ static void option_rewrite_submodules(const char *arg, struct string_list *list)
                die(_("Expected format name:filename for submodule rewrite option"));
        *f = '\0';
        f++;
-       ms = xcalloc(1, sizeof(*ms));
+       CALLOC_ARRAY(ms, 1);
 
        fp = fopen(f, "r");
        if (!fp)
@@ -3519,9 +3519,9 @@ int cmd_fast_import(int argc, const char **argv, const char *prefix)
 
        alloc_objects(object_entry_alloc);
        strbuf_init(&command_buf, 0);
-       atom_table = xcalloc(atom_table_sz, sizeof(struct atom_str*));
-       branch_table = xcalloc(branch_table_sz, sizeof(struct branch*));
-       avail_tree_table = xcalloc(avail_tree_table_sz, sizeof(struct avail_tree_content*));
+       CALLOC_ARRAY(atom_table, atom_table_sz);
+       CALLOC_ARRAY(branch_table, branch_table_sz);
+       CALLOC_ARRAY(avail_tree_table, avail_tree_table_sz);
        marks = mem_pool_calloc(&fi_mem_pool, 1, sizeof(struct mark_set));
 
        hashmap_init(&object_table, object_entry_hashcmp, NULL, 0);
index 58b7c1fbdc47b7f3bf866e1e9bcdf924a10e8033..c2d96f4c89ab0fa7207f74a17d0bdf94f8bd3780 100644 (file)
@@ -220,7 +220,8 @@ int cmd_fetch_pack(int argc, const char **argv, const char *prefix)
        version = discover_version(&reader);
        switch (version) {
        case protocol_v2:
-               get_remote_refs(fd[1], &reader, &ref, 0, NULL, NULL, args.stateless_rpc);
+               get_remote_refs(fd[1], &reader, &ref, 0, NULL, NULL,
+                               args.stateless_rpc);
                break;
        case protocol_v1:
        case protocol_v0:
index 91f3d20696d37a4827872f735978a437e8d2b230..0b90de87c7a2ade9e11e67c8d59338eebdc131a7 100644 (file)
@@ -1455,7 +1455,8 @@ static int do_fetch(struct transport *transport,
        int autotags = (transport->remote->fetch_tags == 1);
        int retcode = 0;
        const struct ref *remote_refs;
-       struct strvec ref_prefixes = STRVEC_INIT;
+       struct transport_ls_refs_options transport_ls_refs_options =
+               TRANSPORT_LS_REFS_OPTIONS_INIT;
        int must_list_refs = 1;
 
        if (tags == TAGS_DEFAULT) {
@@ -1475,7 +1476,7 @@ static int do_fetch(struct transport *transport,
        if (rs->nr) {
                int i;
 
-               refspec_ref_prefixes(rs, &ref_prefixes);
+               refspec_ref_prefixes(rs, &transport_ls_refs_options.ref_prefixes);
 
                /*
                 * We can avoid listing refs if all of them are exact
@@ -1489,22 +1490,25 @@ static int do_fetch(struct transport *transport,
                        }
                }
        } else if (transport->remote && transport->remote->fetch.nr)
-               refspec_ref_prefixes(&transport->remote->fetch, &ref_prefixes);
+               refspec_ref_prefixes(&transport->remote->fetch,
+                                    &transport_ls_refs_options.ref_prefixes);
 
        if (tags == TAGS_SET || tags == TAGS_DEFAULT) {
                must_list_refs = 1;
-               if (ref_prefixes.nr)
-                       strvec_push(&ref_prefixes, "refs/tags/");
+               if (transport_ls_refs_options.ref_prefixes.nr)
+                       strvec_push(&transport_ls_refs_options.ref_prefixes,
+                                   "refs/tags/");
        }
 
        if (must_list_refs) {
                trace2_region_enter("fetch", "remote_refs", the_repository);
-               remote_refs = transport_get_remote_refs(transport, &ref_prefixes);
+               remote_refs = transport_get_remote_refs(transport,
+                                                       &transport_ls_refs_options);
                trace2_region_leave("fetch", "remote_refs", the_repository);
        } else
                remote_refs = NULL;
 
-       strvec_clear(&ref_prefixes);
+       strvec_clear(&transport_ls_refs_options.ref_prefixes);
 
        ref_map = get_ref_map(transport->remote, remote_refs, rs,
                              tags, &autotags);
index 821e7798c706dfa1b6f2ae61b7fb08a036280242..70ff95837aee4f40271a4de596c63dd4fa02b18f 100644 (file)
@@ -71,11 +71,6 @@ static const char *printable_type(const struct object_id *oid,
        return ret;
 }
 
-static int fsck_config(const char *var, const char *value, void *cb)
-{
-       return fsck_config_internal(var, value, cb, &fsck_obj_options);
-}
-
 static int objerror(struct object *obj, const char *err)
 {
        errors_found |= ERROR_OBJECT;
@@ -89,7 +84,9 @@ static int objerror(struct object *obj, const char *err)
 static int fsck_error_func(struct fsck_options *o,
                           const struct object_id *oid,
                           enum object_type object_type,
-                          int msg_type, const char *message)
+                          enum fsck_msg_type msg_type,
+                          enum fsck_msg_id msg_id,
+                          const char *message)
 {
        switch (msg_type) {
        case FSCK_WARN:
@@ -197,7 +194,8 @@ static int traverse_reachable(void)
        return !!result;
 }
 
-static int mark_used(struct object *obj, int type, void *data, struct fsck_options *options)
+static int mark_used(struct object *obj, enum object_type object_type,
+                    void *data, struct fsck_options *options)
 {
        if (!obj)
                return 1;
@@ -803,7 +801,7 @@ int cmd_fsck(int argc, const char **argv, const char *prefix)
        if (name_objects)
                fsck_enable_object_names(&fsck_walk_options);
 
-       git_config(fsck_config, NULL);
+       git_config(git_fsck_config, &fsck_obj_options);
 
        if (connectivity_only) {
                for_each_loose_object(mark_loose_for_connectivity, NULL, 0);
index 4c40594d660ebb21c2cf0223b21af88ea81f872c..ef7226d7bca46da0d9d74ae0179c0b9ef175bfd0 100644 (file)
@@ -54,7 +54,6 @@ static const char *prune_worktrees_expire = "3.months.ago";
 static unsigned long big_pack_threshold;
 static unsigned long max_delta_cache_size = DEFAULT_DELTA_CACHE_SIZE;
 
-static struct strvec pack_refs_cmd = STRVEC_INIT;
 static struct strvec reflog = STRVEC_INIT;
 static struct strvec repack = STRVEC_INIT;
 static struct strvec prune = STRVEC_INIT;
@@ -163,6 +162,15 @@ static void gc_config(void)
        git_config(git_default_config, NULL);
 }
 
+struct maintenance_run_opts;
+static int maintenance_task_pack_refs(MAYBE_UNUSED struct maintenance_run_opts *opts)
+{
+       struct strvec pack_refs_cmd = STRVEC_INIT;
+       strvec_pushl(&pack_refs_cmd, "pack-refs", "--all", "--prune", NULL);
+
+       return run_command_v_opt(pack_refs_cmd.v, RUN_GIT_CMD);
+}
+
 static int too_many_loose_objects(void)
 {
        /*
@@ -518,8 +526,8 @@ static void gc_before_repack(void)
        if (done++)
                return;
 
-       if (pack_refs && run_command_v_opt(pack_refs_cmd.v, RUN_GIT_CMD))
-               die(FAILED_RUN, pack_refs_cmd.v[0]);
+       if (pack_refs && maintenance_task_pack_refs(NULL))
+               die(FAILED_RUN, "pack-refs");
 
        if (prune_reflogs && run_command_v_opt(reflog.v, RUN_GIT_CMD))
                die(FAILED_RUN, reflog.v[0]);
@@ -556,7 +564,6 @@ int cmd_gc(int argc, const char **argv, const char *prefix)
        if (argc == 2 && !strcmp(argv[1], "-h"))
                usage_with_options(builtin_gc_usage, builtin_gc_options);
 
-       strvec_pushl(&pack_refs_cmd, "pack-refs", "--all", "--prune", NULL);
        strvec_pushl(&reflog, "reflog", "expire", "--all", NULL);
        strvec_pushl(&repack, "repack", "-d", "-l", NULL);
        strvec_pushl(&prune, "prune", "--expire", NULL);
@@ -1224,6 +1231,7 @@ enum maintenance_task_label {
        TASK_INCREMENTAL_REPACK,
        TASK_GC,
        TASK_COMMIT_GRAPH,
+       TASK_PACK_REFS,
 
        /* Leave as final value */
        TASK__COUNT
@@ -1255,6 +1263,11 @@ static struct maintenance_task tasks[] = {
                maintenance_task_commit_graph,
                should_write_commit_graph,
        },
+       [TASK_PACK_REFS] = {
+               "pack-refs",
+               maintenance_task_pack_refs,
+               NULL,
+       },
 };
 
 static int compare_tasks_by_selection(const void *a_, const void *b_)
@@ -1339,6 +1352,8 @@ static void initialize_maintenance_strategy(void)
                tasks[TASK_INCREMENTAL_REPACK].schedule = SCHEDULE_DAILY;
                tasks[TASK_LOOSE_OBJECTS].enabled = 1;
                tasks[TASK_LOOSE_OBJECTS].schedule = SCHEDULE_DAILY;
+               tasks[TASK_PACK_REFS].enabled = 1;
+               tasks[TASK_PACK_REFS].schedule = SCHEDULE_WEEKLY;
        }
 }
 
@@ -1446,11 +1461,23 @@ static int maintenance_run(int argc, const char **argv, const char *prefix)
        return maintenance_run_tasks(&opts);
 }
 
+static char *get_maintpath(void)
+{
+       struct strbuf sb = STRBUF_INIT;
+       const char *p = the_repository->worktree ?
+               the_repository->worktree : the_repository->gitdir;
+
+       strbuf_realpath(&sb, p, 1);
+       return strbuf_detach(&sb, NULL);
+}
+
 static int maintenance_register(void)
 {
+       int rc;
        char *config_value;
        struct child_process config_set = CHILD_PROCESS_INIT;
        struct child_process config_get = CHILD_PROCESS_INIT;
+       char *maintpath = get_maintpath();
 
        /* Disable foreground maintenance */
        git_config_set("maintenance.auto", "false");
@@ -1463,40 +1490,44 @@ static int maintenance_register(void)
 
        config_get.git_cmd = 1;
        strvec_pushl(&config_get.args, "config", "--global", "--get",
-                    "--fixed-value", "maintenance.repo",
-                    the_repository->worktree ? the_repository->worktree
-                                             : the_repository->gitdir,
-                        NULL);
+                    "--fixed-value", "maintenance.repo", maintpath, NULL);
        config_get.out = -1;
 
-       if (start_command(&config_get))
-               return error(_("failed to run 'git config'"));
+       if (start_command(&config_get)) {
+               rc = error(_("failed to run 'git config'"));
+               goto done;
+       }
 
        /* We already have this value in our config! */
-       if (!finish_command(&config_get))
-               return 0;
+       if (!finish_command(&config_get)) {
+               rc = 0;
+               goto done;
+       }
 
        config_set.git_cmd = 1;
        strvec_pushl(&config_set.args, "config", "--add", "--global", "maintenance.repo",
-                    the_repository->worktree ? the_repository->worktree
-                                             : the_repository->gitdir,
-                    NULL);
+                    maintpath, NULL);
 
-       return run_command(&config_set);
+       rc = run_command(&config_set);
+
+done:
+       free(maintpath);
+       return rc;
 }
 
 static int maintenance_unregister(void)
 {
+       int rc;
        struct child_process config_unset = CHILD_PROCESS_INIT;
+       char *maintpath = get_maintpath();
 
        config_unset.git_cmd = 1;
        strvec_pushl(&config_unset.args, "config", "--global", "--unset",
-                    "--fixed-value", "maintenance.repo",
-                    the_repository->worktree ? the_repository->worktree
-                                             : the_repository->gitdir,
-                    NULL);
+                    "--fixed-value", "maintenance.repo", maintpath, NULL);
 
-       return run_command(&config_unset);
+       rc = run_command(&config_unset);
+       free(maintpath);
+       return rc;
 }
 
 static const char *get_frequency(enum schedule_priority schedule)
index 55d06c951301b53b7db1bd0cb832e43c9793f1e9..5de725f904419e3db520cc9bedbfd38808b132f2 100644 (file)
@@ -211,7 +211,7 @@ static void start_threads(struct grep_opt *opt)
                strbuf_init(&todo[i].out, 0);
        }
 
-       threads = xcalloc(num_threads, sizeof(*threads));
+       CALLOC_ARRAY(threads, num_threads);
        for (i = 0; i < num_threads; i++) {
                int err;
                struct grep_opt *o = grep_opt_dup(opt);
@@ -506,6 +506,10 @@ static int grep_cache(struct grep_opt *opt,
 
        for (nr = 0; nr < repo->index->cache_nr; nr++) {
                const struct cache_entry *ce = repo->index->cache[nr];
+
+               if (!cached && ce_skip_worktree(ce))
+                       continue;
+
                strbuf_setlen(&name, name_base_len);
                strbuf_addstr(&name, ce->name);
 
@@ -518,8 +522,7 @@ static int grep_cache(struct grep_opt *opt,
                         * cache entry are identical, even if worktree file has
                         * been modified, so use cache version instead
                         */
-                       if (cached || (ce->ce_flags & CE_VALID) ||
-                           ce_skip_worktree(ce)) {
+                       if (cached || (ce->ce_flags & CE_VALID)) {
                                if (ce_stage(ce) || ce_intent_to_add(ce))
                                        continue;
                                hit |= grep_oid(opt, &ce->oid, name.buf,
@@ -1152,6 +1155,9 @@ int cmd_grep(int argc, const char **argv, const char *prefix)
        if (!use_index && (untracked || cached))
                die(_("--cached or --untracked cannot be used with --no-index"));
 
+       if (untracked && cached)
+               die(_("--untracked cannot be used with --cached"));
+
        if (!use_index || untracked) {
                int use_exclude = (opt_exclude < 0) ? use_index : !!opt_exclude;
                hit = grep_directory(&opt, &pathspec, use_exclude, use_index);
@@ -1175,6 +1181,5 @@ int cmd_grep(int argc, const char **argv, const char *prefix)
                run_pager(&opt, prefix);
        clear_pathspec(&pathspec);
        free_grep_patterns(&opt);
-       grep_destroy();
        return !hit;
 }
index 557bd2f3480e606636af79bd4c0f6deff8b0a3c7..15507b5cff0f7dd241e77c1f1daeb6cdee7b01c5 100644 (file)
@@ -17,7 +17,7 @@
 #include "promisor-remote.h"
 
 static const char index_pack_usage[] =
-"git index-pack [-v] [-o <index-file>] [--keep | --keep=<msg>] [--verify] [--strict] (<pack-file> | --stdin [--fix-thin] [<pack-file>])";
+"git index-pack [-v] [-o <index-file>] [--keep | --keep=<msg>] [--[no-]rev-index] [--verify] [--strict] (<pack-file> | --stdin [--fix-thin] [<pack-file>])";
 
 struct object_entry {
        struct pack_idx_entry idx;
@@ -120,7 +120,7 @@ static int nr_threads;
 static int from_stdin;
 static int strict;
 static int do_fsck_object;
-static struct fsck_options fsck_options = FSCK_OPTIONS_STRICT;
+static struct fsck_options fsck_options = FSCK_OPTIONS_MISSING_GITMODULES;
 static int verbose;
 static int show_resolving_progress;
 static int show_stat;
@@ -185,7 +185,7 @@ static void init_thread(void)
        if (show_stat)
                pthread_mutex_init(&deepest_delta_mutex, NULL);
        pthread_key_create(&key, NULL);
-       thread_data = xcalloc(nr_threads, sizeof(*thread_data));
+       CALLOC_ARRAY(thread_data, nr_threads);
        for (i = 0; i < nr_threads; i++) {
                thread_data[i].pack_fd = open(curr_pack, O_RDONLY);
                if (thread_data[i].pack_fd == -1)
@@ -212,7 +212,8 @@ static void cleanup_thread(void)
        free(thread_data);
 }
 
-static int mark_link(struct object *obj, int type, void *data, struct fsck_options *options)
+static int mark_link(struct object *obj, enum object_type type,
+                    void *data, struct fsck_options *options)
 {
        if (!obj)
                return -1;
@@ -1436,15 +1437,15 @@ static void fix_unresolved_deltas(struct hashfile *f)
        free(sorted_by_pos);
 }
 
-static const char *derive_filename(const char *pack_name, const char *suffix,
-                                  struct strbuf *buf)
+static const char *derive_filename(const char *pack_name, const char *strip,
+                                  const char *suffix, struct strbuf *buf)
 {
        size_t len;
-       if (!strip_suffix(pack_name, ".pack", &len))
-               die(_("packfile name '%s' does not end with '.pack'"),
-                   pack_name);
+       if (!strip_suffix(pack_name, strip, &len) || !len ||
+           pack_name[len - 1] != '.')
+               die(_("packfile name '%s' does not end with '.%s'"),
+                   pack_name, strip);
        strbuf_add(buf, pack_name, len);
-       strbuf_addch(buf, '.');
        strbuf_addstr(buf, suffix);
        return buf->buf;
 }
@@ -1459,7 +1460,7 @@ static void write_special_file(const char *suffix, const char *msg,
        int msg_len = strlen(msg);
 
        if (pack_name)
-               filename = derive_filename(pack_name, suffix, &name_buf);
+               filename = derive_filename(pack_name, "pack", suffix, &name_buf);
        else
                filename = odb_pack_name(&name_buf, hash, suffix);
 
@@ -1484,12 +1485,14 @@ static void write_special_file(const char *suffix, const char *msg,
 
 static void final(const char *final_pack_name, const char *curr_pack_name,
                  const char *final_index_name, const char *curr_index_name,
+                 const char *final_rev_index_name, const char *curr_rev_index_name,
                  const char *keep_msg, const char *promisor_msg,
                  unsigned char *hash)
 {
        const char *report = "pack";
        struct strbuf pack_name = STRBUF_INIT;
        struct strbuf index_name = STRBUF_INIT;
+       struct strbuf rev_index_name = STRBUF_INIT;
        int err;
 
        if (!from_stdin) {
@@ -1524,6 +1527,16 @@ static void final(const char *final_pack_name, const char *curr_pack_name,
        } else
                chmod(final_index_name, 0444);
 
+       if (curr_rev_index_name) {
+               if (final_rev_index_name != curr_rev_index_name) {
+                       if (!final_rev_index_name)
+                               final_rev_index_name = odb_pack_name(&rev_index_name, hash, "rev");
+                       if (finalize_object_file(curr_rev_index_name, final_rev_index_name))
+                               die(_("cannot store reverse index file"));
+               } else
+                       chmod(final_rev_index_name, 0444);
+       }
+
        if (do_fsck_object) {
                struct packed_git *p;
                p = add_packed_git(final_index_name, strlen(final_index_name), 0);
@@ -1553,6 +1566,7 @@ static void final(const char *final_pack_name, const char *curr_pack_name,
                }
        }
 
+       strbuf_release(&rev_index_name);
        strbuf_release(&index_name);
        strbuf_release(&pack_name);
 }
@@ -1578,6 +1592,12 @@ static int git_index_pack_config(const char *k, const char *v, void *cb)
                }
                return 0;
        }
+       if (!strcmp(k, "pack.writereverseindex")) {
+               if (git_config_bool(k, v))
+                       opts->flags |= WRITE_REV;
+               else
+                       opts->flags &= ~WRITE_REV;
+       }
        return git_default_config(k, v, cb);
 }
 
@@ -1655,7 +1675,7 @@ static void show_pack_info(int stat_only)
        unsigned long *chain_histogram = NULL;
 
        if (deepest_delta)
-               chain_histogram = xcalloc(deepest_delta, sizeof(unsigned long));
+               CALLOC_ARRAY(chain_histogram, deepest_delta);
 
        for (i = 0; i < nr_objects; i++) {
                struct object_entry *obj = &objects[i];
@@ -1695,12 +1715,14 @@ static void show_pack_info(int stat_only)
 
 int cmd_index_pack(int argc, const char **argv, const char *prefix)
 {
-       int i, fix_thin_pack = 0, verify = 0, stat_only = 0;
+       int i, fix_thin_pack = 0, verify = 0, stat_only = 0, rev_index;
        const char *curr_index;
-       const char *index_name = NULL, *pack_name = NULL;
+       const char *curr_rev_index = NULL;
+       const char *index_name = NULL, *pack_name = NULL, *rev_index_name = NULL;
        const char *keep_msg = NULL;
        const char *promisor_msg = NULL;
        struct strbuf index_name_buf = STRBUF_INIT;
+       struct strbuf rev_index_name_buf = STRBUF_INIT;
        struct pack_idx_entry **idx_objects;
        struct pack_idx_option opts;
        unsigned char pack_hash[GIT_MAX_RAWSZ];
@@ -1727,6 +1749,11 @@ int cmd_index_pack(int argc, const char **argv, const char *prefix)
        if (prefix && chdir(prefix))
                die(_("Cannot come back to cwd"));
 
+       if (git_env_bool(GIT_TEST_WRITE_REV_INDEX, 0))
+               rev_index = 1;
+       else
+               rev_index = !!(opts.flags & (WRITE_REV_VERIFY | WRITE_REV));
+
        for (i = 1; i < argc; i++) {
                const char *arg = argv[i];
 
@@ -1805,6 +1832,10 @@ int cmd_index_pack(int argc, const char **argv, const char *prefix)
                                if (hash_algo == GIT_HASH_UNKNOWN)
                                        die(_("unknown hash algorithm '%s'"), arg);
                                repo_set_hash_algo(the_repository, hash_algo);
+                       } else if (!strcmp(arg, "--rev-index")) {
+                               rev_index = 1;
+                       } else if (!strcmp(arg, "--no-rev-index")) {
+                               rev_index = 0;
                        } else
                                usage(index_pack_usage);
                        continue;
@@ -1824,7 +1855,16 @@ int cmd_index_pack(int argc, const char **argv, const char *prefix)
        if (from_stdin && hash_algo)
                die(_("--object-format cannot be used with --stdin"));
        if (!index_name && pack_name)
-               index_name = derive_filename(pack_name, "idx", &index_name_buf);
+               index_name = derive_filename(pack_name, "pack", "idx", &index_name_buf);
+
+       opts.flags &= ~(WRITE_REV | WRITE_REV_VERIFY);
+       if (rev_index) {
+               opts.flags |= verify ? WRITE_REV_VERIFY : WRITE_REV;
+               if (index_name)
+                       rev_index_name = derive_filename(index_name,
+                                                        "idx", "rev",
+                                                        &rev_index_name_buf);
+       }
 
        if (verify) {
                if (!index_name)
@@ -1857,10 +1897,10 @@ int cmd_index_pack(int argc, const char **argv, const char *prefix)
 
        curr_pack = open_pack_file(pack_name);
        parse_pack_header();
-       objects = xcalloc(st_add(nr_objects, 1), sizeof(struct object_entry));
+       CALLOC_ARRAY(objects, st_add(nr_objects, 1));
        if (show_stat)
-               obj_stat = xcalloc(st_add(nr_objects, 1), sizeof(struct object_stat));
-       ofs_deltas = xcalloc(nr_objects, sizeof(struct ofs_delta_entry));
+               CALLOC_ARRAY(obj_stat, st_add(nr_objects, 1));
+       CALLOC_ARRAY(ofs_deltas, nr_objects);
        parse_pack_objects(pack_hash);
        if (report_end_of_input)
                write_in_full(2, "\0", 1);
@@ -1878,11 +1918,16 @@ int cmd_index_pack(int argc, const char **argv, const char *prefix)
        for (i = 0; i < nr_objects; i++)
                idx_objects[i] = &objects[i].idx;
        curr_index = write_idx_file(index_name, idx_objects, nr_objects, &opts, pack_hash);
+       if (rev_index)
+               curr_rev_index = write_rev_file(rev_index_name, idx_objects,
+                                               nr_objects, pack_hash,
+                                               opts.flags);
        free(idx_objects);
 
        if (!verify)
                final(pack_name, curr_pack,
                      index_name, curr_index,
+                     rev_index_name, curr_rev_index,
                      keep_msg, promisor_msg,
                      pack_hash);
        else
@@ -1893,10 +1938,13 @@ int cmd_index_pack(int argc, const char **argv, const char *prefix)
 
        free(objects);
        strbuf_release(&index_name_buf);
+       strbuf_release(&rev_index_name_buf);
        if (pack_name == NULL)
                free((void *) curr_pack);
        if (index_name == NULL)
                free((void *) curr_index);
+       if (rev_index_name == NULL)
+               free((void *) curr_rev_index);
 
        /*
         * Let the caller know this pack is not self contained
index dcc45bef5148117c4b0c3180fcbd94d9f099a1cc..c19b35f1e6919e53c85b05a4f5a85f5cec5cbe15 100644 (file)
@@ -25,7 +25,6 @@
 
 static int init_is_bare_repository = 0;
 static int init_shared_repository = -1;
-static const char *init_db_template_dir;
 
 static void copy_templates_1(struct strbuf *path, struct strbuf *template_path,
                             DIR *dir)
@@ -94,7 +93,7 @@ static void copy_templates_1(struct strbuf *path, struct strbuf *template_path,
        }
 }
 
-static void copy_templates(const char *template_dir)
+static void copy_templates(const char *template_dir, const char *init_template_dir)
 {
        struct strbuf path = STRBUF_INIT;
        struct strbuf template_path = STRBUF_INIT;
@@ -107,7 +106,7 @@ static void copy_templates(const char *template_dir)
        if (!template_dir)
                template_dir = getenv(TEMPLATE_DIR_ENVIRONMENT);
        if (!template_dir)
-               template_dir = init_db_template_dir;
+               template_dir = init_template_dir;
        if (!template_dir)
                template_dir = to_free = system_path(DEFAULT_GIT_TEMPLATE_DIR);
        if (!template_dir[0]) {
@@ -154,17 +153,6 @@ free_return:
        clear_repository_format(&template_format);
 }
 
-static int git_init_db_config(const char *k, const char *v, void *cb)
-{
-       if (!strcmp(k, "init.templatedir"))
-               return git_config_pathname(&init_db_template_dir, k, v);
-
-       if (starts_with(k, "core."))
-               return platform_core_config(k, v, cb);
-
-       return 0;
-}
-
 /*
  * If the git_dir is not directly inside the working tree, then git will not
  * find it by default, and we need to set the worktree explicitly.
@@ -212,10 +200,8 @@ static int create_default_files(const char *template_path,
        int reinit;
        int filemode;
        struct strbuf err = STRBUF_INIT;
-
-       /* Just look for `init.templatedir` */
-       init_db_template_dir = NULL; /* re-set in case it was set before */
-       git_config(git_init_db_config, NULL);
+       const char *init_template_dir = NULL;
+       const char *work_tree = get_git_work_tree();
 
        /*
         * First copy the templates -- we might have the default
@@ -226,7 +212,8 @@ static int create_default_files(const char *template_path,
         * values (since we've just potentially changed what's available on
         * disk).
         */
-       copy_templates(template_path);
+       git_config_get_value("init.templatedir", &init_template_dir);
+       copy_templates(template_path, init_template_dir);
        git_config_clear();
        reset_shared_repository();
        git_config(git_default_config, NULL);
@@ -235,7 +222,7 @@ static int create_default_files(const char *template_path,
         * We must make sure command-line options continue to override any
         * values we might have just re-read from the config.
         */
-       is_bare_repository_cfg = init_is_bare_repository;
+       is_bare_repository_cfg = init_is_bare_repository || !work_tree;
        if (init_shared_repository != -1)
                set_shared_repository(init_shared_repository);
 
@@ -299,7 +286,6 @@ static int create_default_files(const char *template_path,
        if (is_bare_repository())
                git_config_set("core.bare", "true");
        else {
-               const char *work_tree = get_git_work_tree();
                git_config_set("core.bare", "false");
                /* allow template config file to override the default */
                if (log_all_ref_updates == LOG_REFS_UNSET)
@@ -422,8 +408,8 @@ int init_db(const char *git_dir, const char *real_git_dir,
        }
        startup_info->have_repository = 1;
 
-       /* Just look for `core.hidedotfiles` */
-       git_config(git_init_db_config, NULL);
+       /* Ensure `core.hidedotfiles` is processed */
+       git_config(platform_core_config, NULL);
 
        safe_create_dir(git_dir, 0);
 
@@ -575,8 +561,10 @@ int cmd_init_db(int argc, const char **argv, const char *prefix)
        if (real_git_dir && !is_absolute_path(real_git_dir))
                real_git_dir = real_pathdup(real_git_dir, 1);
 
-       if (template_dir && *template_dir && !is_absolute_path(template_dir))
+       if (template_dir && *template_dir && !is_absolute_path(template_dir)) {
                template_dir = absolute_pathdup(template_dir);
+               UNLEAK(template_dir);
+       }
 
        if (argc == 1) {
                int mkdir_tried = 0;
index d0cbaaf68a083f0cfa3294804f606b5cb6dff5c4..8acd285dafd874c8ee995e028413f15ff77a316b 100644 (file)
@@ -307,10 +307,11 @@ static struct itimerval early_output_timer;
 
 static void log_show_early(struct rev_info *revs, struct commit_list *list)
 {
-       int i = revs->early_output, close_file = revs->diffopt.close_file;
+       int i = revs->early_output;
        int show_header = 1;
+       int no_free = revs->diffopt.no_free;
 
-       revs->diffopt.close_file = 0;
+       revs->diffopt.no_free = 0;
        sort_in_topological_order(&list, revs->sort_order);
        while (list && i) {
                struct commit *commit = list->item;
@@ -327,8 +328,8 @@ static void log_show_early(struct rev_info *revs, struct commit_list *list)
                case commit_ignore:
                        break;
                case commit_error:
-                       if (close_file)
-                               fclose(revs->diffopt.file);
+                       revs->diffopt.no_free = no_free;
+                       diff_free(&revs->diffopt);
                        return;
                }
                list = list->next;
@@ -336,8 +337,8 @@ static void log_show_early(struct rev_info *revs, struct commit_list *list)
 
        /* Did we already get enough commits for the early output? */
        if (!i) {
-               if (close_file)
-                       fclose(revs->diffopt.file);
+               revs->diffopt.no_free = 0;
+               diff_free(&revs->diffopt);
                return;
        }
 
@@ -401,7 +402,7 @@ static int cmd_log_walk(struct rev_info *rev)
 {
        struct commit *commit;
        int saved_nrl = 0;
-       int saved_dcctc = 0, close_file = rev->diffopt.close_file;
+       int saved_dcctc = 0;
 
        if (rev->early_output)
                setup_early_output();
@@ -417,7 +418,7 @@ static int cmd_log_walk(struct rev_info *rev)
         * and HAS_CHANGES being accumulated in rev->diffopt, so be careful to
         * retain that state information if replacing rev->diffopt in this loop
         */
-       rev->diffopt.close_file = 0;
+       rev->diffopt.no_free = 1;
        while ((commit = get_revision(rev)) != NULL) {
                if (!log_tree_commit(rev, commit) && rev->max_count >= 0)
                        /*
@@ -442,8 +443,8 @@ static int cmd_log_walk(struct rev_info *rev)
        }
        rev->diffopt.degraded_cc_to_c = saved_dcctc;
        rev->diffopt.needed_rename_limit = saved_nrl;
-       if (close_file)
-               fclose(rev->diffopt.file);
+       rev->diffopt.no_free = 0;
+       diff_free(&rev->diffopt);
 
        if (rev->diffopt.output_format & DIFF_FORMAT_CHECKDIFF &&
            rev->diffopt.flags.check_failed) {
@@ -598,7 +599,7 @@ static int show_tag_object(const struct object_id *oid, struct rev_info *rev)
 
 static int show_tree_object(const struct object_id *oid,
                struct strbuf *base,
-               const char *pathname, unsigned mode, int stage, void *context)
+               const char *pathname, unsigned mode, void *context)
 {
        FILE *file = context;
        fprintf(file, "%s%s\n", pathname, S_ISDIR(mode) ? "/" : "");
@@ -680,9 +681,9 @@ int cmd_show(int argc, const char **argv, const char *prefix)
                                        diff_get_color_opt(&rev.diffopt, DIFF_COMMIT),
                                        name,
                                        diff_get_color_opt(&rev.diffopt, DIFF_RESET));
-                       read_tree_recursive(the_repository, (struct tree *)o, "",
-                                           0, 0, &match_all, show_tree_object,
-                                           rev.diffopt.file);
+                       read_tree(the_repository, (struct tree *)o,
+                                 &match_all, show_tree_object,
+                                 rev.diffopt.file);
                        rev.shown_one = 1;
                        break;
                case OBJ_COMMIT:
@@ -1223,14 +1224,20 @@ static void make_cover_letter(struct rev_info *rev, int use_separate_file,
                 */
                struct diff_options opts;
                struct strvec other_arg = STRVEC_INIT;
+               struct range_diff_options range_diff_opts = {
+                       .creation_factor = rev->creation_factor,
+                       .dual_color = 1,
+                       .diffopt = &opts,
+                       .other_arg = &other_arg
+               };
+
                diff_setup(&opts);
                opts.file = rev->diffopt.file;
                opts.use_color = rev->diffopt.use_color;
                diff_setup_done(&opts);
                fprintf_ln(rev->diffopt.file, "%s", rev->rdiff_title);
                get_notes_args(&other_arg, rev);
-               show_range_diff(rev->rdiff1, rev->rdiff2,
-                               rev->creation_factor, 1, &opts, &other_arg);
+               show_range_diff(rev->rdiff1, rev->rdiff2, &range_diff_opts);
                strvec_clear(&other_arg);
        }
 }
@@ -1655,13 +1662,19 @@ static void print_bases(struct base_tree_info *bases, FILE *file)
        oidclr(&bases->base_commit);
 }
 
-static const char *diff_title(struct strbuf *sb, int reroll_count,
-                      const char *generic, const char *rerolled)
+static const char *diff_title(struct strbuf *sb,
+                             const char *reroll_count,
+                             const char *generic,
+                             const char *rerolled)
 {
-       if (reroll_count <= 0)
+       int v;
+
+       /* RFC may be v0, so allow -v1 to diff against v0 */
+       if (reroll_count && !strtol_i(reroll_count, 10, &v) &&
+           v >= 1)
+               strbuf_addf(sb, rerolled, v - 1);
+       else
                strbuf_addstr(sb, generic);
-       else /* RFC may be v0, so allow -v1 to diff against v0 */
-               strbuf_addf(sb, rerolled, reroll_count - 1);
        return sb->buf;
 }
 
@@ -1672,7 +1685,7 @@ static void infer_range_diff_ranges(struct strbuf *r1,
                                    struct commit *head)
 {
        const char *head_oid = oid_to_hex(&head->object.oid);
-       int prev_is_range = !!strstr(prev, "..");
+       int prev_is_range = is_range_diff_range(prev);
 
        if (prev_is_range)
                strbuf_addstr(r1, prev);
@@ -1710,7 +1723,7 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
        struct strbuf buf = STRBUF_INIT;
        int use_patch_format = 0;
        int quiet = 0;
-       int reroll_count = -1;
+       const char *reroll_count = NULL;
        char *cover_from_description_arg = NULL;
        char *branch_name = NULL;
        char *base_commit = NULL;
@@ -1744,7 +1757,7 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
                            N_("use <sfx> instead of '.patch'")),
                OPT_INTEGER(0, "start-number", &start_number,
                            N_("start numbering patches at <n> instead of 1")),
-               OPT_INTEGER('v', "reroll-count", &reroll_count,
+               OPT_STRING('v', "reroll-count", &reroll_count, N_("reroll-count"),
                            N_("mark the series as Nth re-roll")),
                OPT_INTEGER(0, "filename-max-length", &fmt_patch_name_max,
                            N_("max length of output filename")),
@@ -1855,9 +1868,10 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
        if (cover_from_description_arg)
                cover_from_description_mode = parse_cover_from_description(cover_from_description_arg);
 
-       if (0 < reroll_count) {
+       if (reroll_count) {
                struct strbuf sprefix = STRBUF_INIT;
-               strbuf_addf(&sprefix, "%s v%d",
+
+               strbuf_addf(&sprefix, "%s v%s",
                            rev.subject_prefix, reroll_count);
                rev.reroll_count = reroll_count;
                rev.subject_prefix = strbuf_detach(&sprefix, NULL);
@@ -1955,7 +1969,7 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
                 * file, but but we must instruct it not to close after each
                 * diff.
                 */
-               rev.diffopt.close_file = 0;
+               rev.diffopt.no_free = 1;
        } else {
                int saved;
 
index f6f9e483b27e183e29e9c409669c6b23d5590cfc..60a2913a01e9d00bad828fa8eca57fdb18eff787 100644 (file)
@@ -12,6 +12,7 @@
 #include "dir.h"
 #include "builtin.h"
 #include "tree.h"
+#include "cache-tree.h"
 #include "parse-options.h"
 #include "resolve-undo.h"
 #include "string-list.h"
@@ -420,6 +421,53 @@ static int get_common_prefix_len(const char *common_prefix)
        return common_prefix_len;
 }
 
+static int read_one_entry_opt(struct index_state *istate,
+                             const struct object_id *oid,
+                             struct strbuf *base,
+                             const char *pathname,
+                             unsigned mode, int opt)
+{
+       int len;
+       struct cache_entry *ce;
+
+       if (S_ISDIR(mode))
+               return READ_TREE_RECURSIVE;
+
+       len = strlen(pathname);
+       ce = make_empty_cache_entry(istate, base->len + len);
+
+       ce->ce_mode = create_ce_mode(mode);
+       ce->ce_flags = create_ce_flags(1);
+       ce->ce_namelen = base->len + len;
+       memcpy(ce->name, base->buf, base->len);
+       memcpy(ce->name + base->len, pathname, len+1);
+       oidcpy(&ce->oid, oid);
+       return add_index_entry(istate, ce, opt);
+}
+
+static int read_one_entry(const struct object_id *oid, struct strbuf *base,
+                         const char *pathname, unsigned mode,
+                         void *context)
+{
+       struct index_state *istate = context;
+       return read_one_entry_opt(istate, oid, base, pathname,
+                                 mode,
+                                 ADD_CACHE_OK_TO_ADD|ADD_CACHE_SKIP_DFCHECK);
+}
+
+/*
+ * This is used when the caller knows there is no existing entries at
+ * the stage that will conflict with the entry being added.
+ */
+static int read_one_entry_quick(const struct object_id *oid, struct strbuf *base,
+                               const char *pathname, unsigned mode,
+                               void *context)
+{
+       struct index_state *istate = context;
+       return read_one_entry_opt(istate, oid, base, pathname,
+                                 mode, ADD_CACHE_JUST_APPEND);
+}
+
 /*
  * Read the tree specified with --with-tree option
  * (typically, HEAD) into stage #1 and then
@@ -436,6 +484,8 @@ void overlay_tree_on_index(struct index_state *istate,
        struct pathspec pathspec;
        struct cache_entry *last_stage0 = NULL;
        int i;
+       read_tree_fn_t fn = NULL;
+       int err;
 
        if (get_oid(tree_name, &oid))
                die("tree-ish %s not found.", tree_name);
@@ -458,9 +508,32 @@ void overlay_tree_on_index(struct index_state *istate,
                               PATHSPEC_PREFER_CWD, prefix, matchbuf);
        } else
                memset(&pathspec, 0, sizeof(pathspec));
-       if (read_tree(the_repository, tree, 1, &pathspec, istate))
+
+       /*
+        * See if we have cache entry at the stage.  If so,
+        * do it the original slow way, otherwise, append and then
+        * sort at the end.
+        */
+       for (i = 0; !fn && i < istate->cache_nr; i++) {
+               const struct cache_entry *ce = istate->cache[i];
+               if (ce_stage(ce) == 1)
+                       fn = read_one_entry;
+       }
+
+       if (!fn)
+               fn = read_one_entry_quick;
+       err = read_tree(the_repository, tree, &pathspec, fn, istate);
+       if (err)
                die("unable to read tree entries %s", tree_name);
 
+       /*
+        * Sort the cache entry -- we need to nuke the cache tree, though.
+        */
+       if (fn == read_one_entry_quick) {
+               cache_tree_free(&istate->cache_tree);
+               QSORT(istate->cache, istate->cache_nr, cmp_cache_name_compare);
+       }
+
        for (i = 0; i < istate->cache_nr; i++) {
                struct cache_entry *ce = istate->cache[i];
                switch (ce_stage(ce)) {
index 092917eca29b76f27bce31cbf6a5fff562fae7f0..1794548c71179afb68c74a231749be5f5fdae3ee 100644 (file)
@@ -45,7 +45,8 @@ int cmd_ls_remote(int argc, const char **argv, const char *prefix)
        int show_symref_target = 0;
        const char *uploadpack = NULL;
        const char **pattern = NULL;
-       struct strvec ref_prefixes = STRVEC_INIT;
+       struct transport_ls_refs_options transport_options =
+               TRANSPORT_LS_REFS_OPTIONS_INIT;
        int i;
        struct string_list server_options = STRING_LIST_INIT_DUP;
 
@@ -87,16 +88,16 @@ int cmd_ls_remote(int argc, const char **argv, const char *prefix)
 
        if (argc > 1) {
                int i;
-               pattern = xcalloc(argc, sizeof(const char *));
+               CALLOC_ARRAY(pattern, argc);
                for (i = 1; i < argc; i++) {
                        pattern[i - 1] = xstrfmt("*/%s", argv[i]);
                }
        }
 
        if (flags & REF_TAGS)
-               strvec_push(&ref_prefixes, "refs/tags/");
+               strvec_push(&transport_options.ref_prefixes, "refs/tags/");
        if (flags & REF_HEADS)
-               strvec_push(&ref_prefixes, "refs/heads/");
+               strvec_push(&transport_options.ref_prefixes, "refs/heads/");
 
        remote = remote_get(dest);
        if (!remote) {
@@ -118,13 +119,11 @@ int cmd_ls_remote(int argc, const char **argv, const char *prefix)
        if (server_options.nr)
                transport->server_options = &server_options;
 
-       ref = transport_get_remote_refs(transport, &ref_prefixes);
+       ref = transport_get_remote_refs(transport, &transport_options);
        if (ref) {
                int hash_algo = hash_algo_by_ptr(transport_get_hash_algo(transport));
                repo_set_hash_algo(the_repository, hash_algo);
        }
-       if (transport_disconnect(transport))
-               return 1;
 
        if (!dest && !quiet)
                fprintf(stderr, "From %s\n", *remote->url);
@@ -150,5 +149,7 @@ int cmd_ls_remote(int argc, const char **argv, const char *prefix)
        }
 
        ref_array_clear(&ref_array);
+       if (transport_disconnect(transport))
+               return 1;
        return status;
 }
index 7cad3f24ebd084fe653061f4f5899816853fc4f0..3a442631c71a07f0d0dda791ed72af83f2b92bca 100644 (file)
@@ -62,7 +62,7 @@ static int show_recursive(const char *base, int baselen, const char *pathname)
 }
 
 static int show_tree(const struct object_id *oid, struct strbuf *base,
-               const char *pathname, unsigned mode, int stage, void *context)
+               const char *pathname, unsigned mode, void *context)
 {
        int retval = 0;
        int baselen;
@@ -185,6 +185,6 @@ int cmd_ls_tree(int argc, const char **argv, const char *prefix)
        tree = parse_tree_indirect(&oid);
        if (!tree)
                die("not a tree object");
-       return !!read_tree_recursive(the_repository, tree, "", 0, 0,
-                                    &pathspec, show_tree, NULL);
+       return !!read_tree(the_repository, tree,
+                          &pathspec, show_tree, NULL);
 }
index eb00b273e668e2725447a2d6a0edc5ad2d67ed67..388619536aa1d250d6cad275b67974bbfdca28e4 100644 (file)
@@ -210,7 +210,7 @@ static struct strategy *get_strategy(const char *name)
                exit(1);
        }
 
-       ret = xcalloc(1, sizeof(struct strategy));
+       CALLOC_ARRAY(ret, 1);
        ret->name = xstrdup(name);
        ret->attr = NO_TRIVIAL;
        return ret;
index 41a399a69e4c08d3ab16274b7e8523e8a96ee3c6..dddcccdd368328261db51d47b3b5a7b444fbaca5 100644 (file)
@@ -14,15 +14,12 @@ static int option_strict = 1;
 
 static struct fsck_options fsck_options = FSCK_OPTIONS_STRICT;
 
-static int mktag_config(const char *var, const char *value, void *cb)
-{
-       return fsck_config_internal(var, value, cb, &fsck_options);
-}
-
 static int mktag_fsck_error_func(struct fsck_options *o,
                                 const struct object_id *oid,
                                 enum object_type object_type,
-                                int msg_type, const char *message)
+                                enum fsck_msg_type msg_type,
+                                enum fsck_msg_id msg_id,
+                                const char *message)
 {
        switch (msg_type) {
        case FSCK_WARN:
@@ -91,9 +88,10 @@ int cmd_mktag(int argc, const char **argv, const char *prefix)
                die_errno(_("could not read from stdin"));
 
        fsck_options.error_func = mktag_fsck_error_func;
-       fsck_set_msg_type(&fsck_options, "extraheaderentry", "warn");
+       fsck_set_msg_type_from_ids(&fsck_options, FSCK_MSG_EXTRA_HEADER_ENTRY,
+                                  FSCK_WARN);
        /* config might set fsck.extraHeaderEntry=* again */
-       git_config(mktag_config, NULL);
+       git_config(git_fsck_config, &fsck_options);
        if (fsck_tag_standalone(NULL, buf.buf, buf.len, &fsck_options,
                                &tagged_oid, &tagged_type))
                die(_("tag on stdin did not pass our strict fsck check"));
index 5bf88cd2a8e2c338bb63590b42e9388edbf1e2d7..5d3ea445fdb3a83baf4e464ff470d5f632b81db2 100644 (file)
 #include "parse-options.h"
 #include "midx.h"
 #include "trace2.h"
+#include "object-store.h"
 
+#define BUILTIN_MIDX_WRITE_USAGE \
+       N_("git multi-pack-index [<options>] write [--preferred-pack=<pack>]")
+
+#define BUILTIN_MIDX_VERIFY_USAGE \
+       N_("git multi-pack-index [<options>] verify")
+
+#define BUILTIN_MIDX_EXPIRE_USAGE \
+       N_("git multi-pack-index [<options>] expire")
+
+#define BUILTIN_MIDX_REPACK_USAGE \
+       N_("git multi-pack-index [<options>] repack [--batch-size=<size>]")
+
+static char const * const builtin_multi_pack_index_write_usage[] = {
+       BUILTIN_MIDX_WRITE_USAGE,
+       NULL
+};
+static char const * const builtin_multi_pack_index_verify_usage[] = {
+       BUILTIN_MIDX_VERIFY_USAGE,
+       NULL
+};
+static char const * const builtin_multi_pack_index_expire_usage[] = {
+       BUILTIN_MIDX_EXPIRE_USAGE,
+       NULL
+};
+static char const * const builtin_multi_pack_index_repack_usage[] = {
+       BUILTIN_MIDX_REPACK_USAGE,
+       NULL
+};
 static char const * const builtin_multi_pack_index_usage[] = {
-       N_("git multi-pack-index [<options>] (write|verify|expire|repack --batch-size=<size>)"),
+       BUILTIN_MIDX_WRITE_USAGE,
+       BUILTIN_MIDX_VERIFY_USAGE,
+       BUILTIN_MIDX_EXPIRE_USAGE,
+       BUILTIN_MIDX_REPACK_USAGE,
        NULL
 };
 
 static struct opts_multi_pack_index {
        const char *object_dir;
+       const char *preferred_pack;
        unsigned long batch_size;
-       int progress;
+       unsigned flags;
 } opts;
 
-int cmd_multi_pack_index(int argc, const char **argv,
-                        const char *prefix)
+static struct option common_opts[] = {
+       OPT_FILENAME(0, "object-dir", &opts.object_dir,
+         N_("object directory containing set of packfile and pack-index pairs")),
+       OPT_BIT(0, "progress", &opts.flags, N_("force progress reporting"), MIDX_PROGRESS),
+       OPT_END(),
+};
+
+static struct option *add_common_options(struct option *prev)
 {
-       unsigned flags = 0;
+       return parse_options_concat(common_opts, prev);
+}
+
+static int cmd_multi_pack_index_write(int argc, const char **argv)
+{
+       struct option *options;
+       static struct option builtin_multi_pack_index_write_options[] = {
+               OPT_STRING(0, "preferred-pack", &opts.preferred_pack,
+                          N_("preferred-pack"),
+                          N_("pack for reuse when computing a multi-pack bitmap")),
+               OPT_END(),
+       };
+
+       options = add_common_options(builtin_multi_pack_index_write_options);
+
+       trace2_cmd_mode(argv[0]);
 
-       static struct option builtin_multi_pack_index_options[] = {
-               OPT_FILENAME(0, "object-dir", &opts.object_dir,
-                 N_("object directory containing set of packfile and pack-index pairs")),
-               OPT_BOOL(0, "progress", &opts.progress, N_("force progress reporting")),
+       argc = parse_options(argc, argv, NULL,
+                            options, builtin_multi_pack_index_write_usage,
+                            PARSE_OPT_KEEP_UNKNOWN);
+       if (argc)
+               usage_with_options(builtin_multi_pack_index_write_usage,
+                                  options);
+
+       FREE_AND_NULL(options);
+
+       return write_midx_file(opts.object_dir, opts.preferred_pack,
+                              opts.flags);
+}
+
+static int cmd_multi_pack_index_verify(int argc, const char **argv)
+{
+       struct option *options = common_opts;
+
+       trace2_cmd_mode(argv[0]);
+
+       argc = parse_options(argc, argv, NULL,
+                            options, builtin_multi_pack_index_verify_usage,
+                            PARSE_OPT_KEEP_UNKNOWN);
+       if (argc)
+               usage_with_options(builtin_multi_pack_index_verify_usage,
+                                  options);
+
+       return verify_midx_file(the_repository, opts.object_dir, opts.flags);
+}
+
+static int cmd_multi_pack_index_expire(int argc, const char **argv)
+{
+       struct option *options = common_opts;
+
+       trace2_cmd_mode(argv[0]);
+
+       argc = parse_options(argc, argv, NULL,
+                            options, builtin_multi_pack_index_expire_usage,
+                            PARSE_OPT_KEEP_UNKNOWN);
+       if (argc)
+               usage_with_options(builtin_multi_pack_index_expire_usage,
+                                  options);
+
+       return expire_midx_packs(the_repository, opts.object_dir, opts.flags);
+}
+
+static int cmd_multi_pack_index_repack(int argc, const char **argv)
+{
+       struct option *options;
+       static struct option builtin_multi_pack_index_repack_options[] = {
                OPT_MAGNITUDE(0, "batch-size", &opts.batch_size,
                  N_("during repack, collect pack-files of smaller size into a batch that is larger than this size")),
                OPT_END(),
        };
 
+       options = add_common_options(builtin_multi_pack_index_repack_options);
+
+       trace2_cmd_mode(argv[0]);
+
+       argc = parse_options(argc, argv, NULL,
+                            options,
+                            builtin_multi_pack_index_repack_usage,
+                            PARSE_OPT_KEEP_UNKNOWN);
+       if (argc)
+               usage_with_options(builtin_multi_pack_index_repack_usage,
+                                  options);
+
+       FREE_AND_NULL(options);
+
+       return midx_repack(the_repository, opts.object_dir,
+                          (size_t)opts.batch_size, opts.flags);
+}
+
+int cmd_multi_pack_index(int argc, const char **argv,
+                        const char *prefix)
+{
+       struct option *builtin_multi_pack_index_options = common_opts;
+
        git_config(git_default_config, NULL);
 
-       opts.progress = isatty(2);
+       if (isatty(2))
+               opts.flags |= MIDX_PROGRESS;
        argc = parse_options(argc, argv, prefix,
                             builtin_multi_pack_index_options,
-                            builtin_multi_pack_index_usage, 0);
+                            builtin_multi_pack_index_usage,
+                            PARSE_OPT_STOP_AT_NON_OPTION);
 
        if (!opts.object_dir)
                opts.object_dir = get_object_directory();
-       if (opts.progress)
-               flags |= MIDX_PROGRESS;
 
        if (argc == 0)
+               goto usage;
+
+       if (!strcmp(argv[0], "repack"))
+               return cmd_multi_pack_index_repack(argc, argv);
+       else if (!strcmp(argv[0], "write"))
+               return cmd_multi_pack_index_write(argc, argv);
+       else if (!strcmp(argv[0], "verify"))
+               return cmd_multi_pack_index_verify(argc, argv);
+       else if (!strcmp(argv[0], "expire"))
+               return cmd_multi_pack_index_expire(argc, argv);
+       else {
+usage:
+               error(_("unrecognized subcommand: %s"), argv[0]);
                usage_with_options(builtin_multi_pack_index_usage,
                                   builtin_multi_pack_index_options);
-
-       if (argc > 1) {
-               die(_("too many arguments"));
-               return 1;
        }
-
-       trace2_cmd_mode(argv[0]);
-
-       if (!strcmp(argv[0], "repack"))
-               return midx_repack(the_repository, opts.object_dir,
-                       (size_t)opts.batch_size, flags);
-       if (opts.batch_size)
-               die(_("--batch-size option is only for 'repack' subcommand"));
-
-       if (!strcmp(argv[0], "write"))
-               return write_midx_file(opts.object_dir, flags);
-       if (!strcmp(argv[0], "verify"))
-               return verify_midx_file(the_repository, opts.object_dir, flags);
-       if (!strcmp(argv[0], "expire"))
-               return expire_midx_packs(the_repository, opts.object_dir, flags);
-
-       die(_("unrecognized subcommand: %s"), argv[0]);
 }
index 7dac714af908789c675a158cf44067771dd62ad2..3fccdcb64522b4a102bd1aeedae972debb9e1aca 100644 (file)
@@ -221,7 +221,7 @@ int cmd_mv(int argc, const char **argv, const char *prefix)
                                }
                                argc += last - first;
                        }
-               } else if (!(ce = cache_file_exists(src, length, ignore_case))) {
+               } else if (!(ce = cache_file_exists(src, length, 0))) {
                        bad = _("not under version control");
                } else if (ce_stage(ce)) {
                        bad = _("conflicted");
index 2987c08a2e920d294f5a443d24381b6021c15fea..74bba39ca8293208d3d577a47e2617a11d856c20 100644 (file)
@@ -373,7 +373,7 @@ static int list(int argc, const char **argv, const char *prefix)
                                     git_notes_list_usage, 0);
 
        if (1 < argc) {
-               error(_("too many parameters"));
+               error(_("too many arguments"));
                usage_with_options(git_notes_list_usage, options);
        }
 
@@ -428,7 +428,7 @@ static int add(int argc, const char **argv, const char *prefix)
                             PARSE_OPT_KEEP_ARGV0);
 
        if (2 < argc) {
-               error(_("too many parameters"));
+               error(_("too many arguments"));
                usage_with_options(git_notes_add_usage, options);
        }
 
@@ -506,7 +506,7 @@ static int copy(int argc, const char **argv, const char *prefix)
 
        if (from_stdin || rewrite_cmd) {
                if (argc) {
-                       error(_("too many parameters"));
+                       error(_("too many arguments"));
                        usage_with_options(git_notes_copy_usage, options);
                } else {
                        return notes_copy_from_stdin(force, rewrite_cmd);
@@ -514,11 +514,11 @@ static int copy(int argc, const char **argv, const char *prefix)
        }
 
        if (argc < 1) {
-               error(_("too few parameters"));
+               error(_("too few arguments"));
                usage_with_options(git_notes_copy_usage, options);
        }
        if (2 < argc) {
-               error(_("too many parameters"));
+               error(_("too many arguments"));
                usage_with_options(git_notes_copy_usage, options);
        }
 
@@ -595,7 +595,7 @@ static int append_edit(int argc, const char **argv, const char *prefix)
                             PARSE_OPT_KEEP_ARGV0);
 
        if (2 < argc) {
-               error(_("too many parameters"));
+               error(_("too many arguments"));
                usage_with_options(usage, options);
        }
 
@@ -662,7 +662,7 @@ static int show(int argc, const char **argv, const char *prefix)
                             0);
 
        if (1 < argc) {
-               error(_("too many parameters"));
+               error(_("too many arguments"));
                usage_with_options(git_notes_show_usage, options);
        }
 
@@ -730,7 +730,7 @@ static int merge_commit(struct notes_merge_options *o)
        else
                oidclr(&parent_oid);
 
-       t = xcalloc(1, sizeof(struct notes_tree));
+       CALLOC_ARRAY(t, 1);
        init_notes(t, "NOTES_MERGE_PARTIAL", combine_notes_overwrite, 0);
 
        o->local_ref = local_ref_to_free =
@@ -812,7 +812,7 @@ static int merge(int argc, const char **argv, const char *prefix)
                error(_("must specify a notes ref to merge"));
                usage_with_options(git_notes_merge_usage, options);
        } else if (!do_merge && argc) {
-               error(_("too many parameters"));
+               error(_("too many arguments"));
                usage_with_options(git_notes_merge_usage, options);
        }
 
@@ -960,7 +960,7 @@ static int prune(int argc, const char **argv, const char *prefix)
                             0);
 
        if (argc) {
-               error(_("too many parameters"));
+               error(_("too many arguments"));
                usage_with_options(git_notes_prune_usage, options);
        }
 
@@ -982,7 +982,7 @@ static int get_ref(int argc, const char **argv, const char *prefix)
                             git_notes_get_ref_usage, 0);
 
        if (argc) {
-               error(_("too many parameters"));
+               error(_("too many arguments"));
                usage_with_options(git_notes_get_ref_usage, options);
        }
 
index 13cde5896aac80ab43408b1e89916832b1e8ec9c..525c2d85529f41bc56fb3495f9f7e9dec9557c81 100644 (file)
@@ -815,8 +815,8 @@ static struct reused_chunk {
        /* The offset of the first object of this chunk in the original
         * packfile. */
        off_t original;
-       /* The offset of the first object of this chunk in the generated
-        * packfile minus "original". */
+       /* The difference for "original" minus the offset of the first object of
+        * this chunk in the generated packfile. */
        off_t difference;
 } *reused_chunks;
 static int reused_chunks_nr;
@@ -1188,7 +1188,8 @@ static int have_duplicate_entry(const struct object_id *oid,
        return 1;
 }
 
-static int want_found_object(int exclude, struct packed_git *p)
+static int want_found_object(const struct object_id *oid, int exclude,
+                            struct packed_git *p)
 {
        if (exclude)
                return 1;
@@ -1204,27 +1205,82 @@ static int want_found_object(int exclude, struct packed_git *p)
         * make sure no copy of this object appears in _any_ pack that makes us
         * to omit the object, so we need to check all the packs.
         *
-        * We can however first check whether these options can possible matter;
+        * We can however first check whether these options can possibly matter;
         * if they do not matter we know we want the object in generated pack.
         * Otherwise, we signal "-1" at the end to tell the caller that we do
         * not know either way, and it needs to check more packs.
         */
-       if (!ignore_packed_keep_on_disk &&
-           !ignore_packed_keep_in_core &&
-           (!local || !have_non_local_packs))
-               return 1;
 
+       /*
+        * Objects in packs borrowed from elsewhere are discarded regardless of
+        * if they appear in other packs that weren't borrowed.
+        */
        if (local && !p->pack_local)
                return 0;
-       if (p->pack_local &&
-           ((ignore_packed_keep_on_disk && p->pack_keep) ||
-            (ignore_packed_keep_in_core && p->pack_keep_in_core)))
-               return 0;
+
+       /*
+        * Then handle .keep first, as we have a fast(er) path there.
+        */
+       if (ignore_packed_keep_on_disk || ignore_packed_keep_in_core) {
+               /*
+                * Set the flags for the kept-pack cache to be the ones we want
+                * to ignore.
+                *
+                * That is, if we are ignoring objects in on-disk keep packs,
+                * then we want to search through the on-disk keep and ignore
+                * the in-core ones.
+                */
+               unsigned flags = 0;
+               if (ignore_packed_keep_on_disk)
+                       flags |= ON_DISK_KEEP_PACKS;
+               if (ignore_packed_keep_in_core)
+                       flags |= IN_CORE_KEEP_PACKS;
+
+               if (ignore_packed_keep_on_disk && p->pack_keep)
+                       return 0;
+               if (ignore_packed_keep_in_core && p->pack_keep_in_core)
+                       return 0;
+               if (has_object_kept_pack(oid, flags))
+                       return 0;
+       }
+
+       /*
+        * At this point we know definitively that either we don't care about
+        * keep-packs, or the object is not in one. Keep checking other
+        * conditions...
+        */
+       if (!local || !have_non_local_packs)
+               return 1;
 
        /* we don't know yet; keep looking for more packs */
        return -1;
 }
 
+static int want_object_in_pack_one(struct packed_git *p,
+                                  const struct object_id *oid,
+                                  int exclude,
+                                  struct packed_git **found_pack,
+                                  off_t *found_offset)
+{
+       off_t offset;
+
+       if (p == *found_pack)
+               offset = *found_offset;
+       else
+               offset = find_pack_entry_one(oid->hash, p);
+
+       if (offset) {
+               if (!*found_pack) {
+                       if (!is_pack_valid(p))
+                               return -1;
+                       *found_offset = offset;
+                       *found_pack = p;
+               }
+               return want_found_object(oid, exclude, p);
+       }
+       return -1;
+}
+
 /*
  * Check whether we want the object in the pack (e.g., we do not want
  * objects found in non-local stores if the "--local" option was used).
@@ -1252,7 +1308,7 @@ static int want_object_in_pack(const struct object_id *oid,
         * are present we will determine the answer right now.
         */
        if (*found_pack) {
-               want = want_found_object(exclude, *found_pack);
+               want = want_found_object(oid, exclude, *found_pack);
                if (want != -1)
                        return want;
        }
@@ -1260,51 +1316,20 @@ static int want_object_in_pack(const struct object_id *oid,
        for (m = get_multi_pack_index(the_repository); m; m = m->next) {
                struct pack_entry e;
                if (fill_midx_entry(the_repository, oid, &e, m)) {
-                       struct packed_git *p = e.p;
-                       off_t offset;
-
-                       if (p == *found_pack)
-                               offset = *found_offset;
-                       else
-                               offset = find_pack_entry_one(oid->hash, p);
-
-                       if (offset) {
-                               if (!*found_pack) {
-                                       if (!is_pack_valid(p))
-                                               continue;
-                                       *found_offset = offset;
-                                       *found_pack = p;
-                               }
-                               want = want_found_object(exclude, p);
-                               if (want != -1)
-                                       return want;
-                       }
+                       want = want_object_in_pack_one(e.p, oid, exclude, found_pack, found_offset);
+                       if (want != -1)
+                               return want;
                }
        }
 
        list_for_each(pos, get_packed_git_mru(the_repository)) {
                struct packed_git *p = list_entry(pos, struct packed_git, mru);
-               off_t offset;
-
-               if (p == *found_pack)
-                       offset = *found_offset;
-               else
-                       offset = find_pack_entry_one(oid->hash, p);
-
-               if (offset) {
-                       if (!*found_pack) {
-                               if (!is_pack_valid(p))
-                                       continue;
-                               *found_offset = offset;
-                               *found_pack = p;
-                       }
-                       want = want_found_object(exclude, p);
-                       if (!exclude && want > 0)
-                               list_move(&p->mru,
-                                         get_packed_git_mru(the_repository));
-                       if (want != -1)
-                               return want;
-               }
+               want = want_object_in_pack_one(p, oid, exclude, found_pack, found_offset);
+               if (!exclude && want > 0)
+                       list_move(&p->mru,
+                                 get_packed_git_mru(the_repository));
+               if (want != -1)
+                       return want;
        }
 
        if (uri_protocols.nr) {
@@ -1635,7 +1660,7 @@ static void add_preferred_base(struct object_id *oid)
                }
        }
 
-       it = xcalloc(1, sizeof(*it));
+       CALLOC_ARRAY(it, 1);
        it->next = pbase_tree;
        pbase_tree = it;
 
@@ -2096,7 +2121,7 @@ static void get_object_details(void)
                progress_state = start_progress(_("Counting objects"),
                                                to_pack.nr_objects);
 
-       sorted_by_offset = xcalloc(to_pack.nr_objects, sizeof(struct object_entry *));
+       CALLOC_ARRAY(sorted_by_offset, to_pack.nr_objects);
        for (i = 0; i < to_pack.nr_objects; i++)
                sorted_by_offset[i] = to_pack.objects + i;
        QSORT(sorted_by_offset, to_pack.nr_objects, pack_offset_sort);
@@ -2428,7 +2453,7 @@ static void find_deltas(struct object_entry **list, unsigned *list_size,
        struct unpacked *array;
        unsigned long mem_usage = 0;
 
-       array = xcalloc(window, sizeof(struct unpacked));
+       CALLOC_ARRAY(array, window);
 
        for (;;) {
                struct object_entry *entry;
@@ -2665,7 +2690,7 @@ static void ll_find_deltas(struct object_entry **list, unsigned list_size,
        if (progress > pack_to_stdout)
                fprintf_ln(stderr, _("Delta compression using up to %d threads"),
                           delta_search_threads);
-       p = xcalloc(delta_search_threads, sizeof(*p));
+       CALLOC_ARRAY(p, delta_search_threads);
 
        /* Partition the work amongst work threads. */
        for (i = 0; i < delta_search_threads; i++) {
@@ -2953,6 +2978,13 @@ static int git_pack_config(const char *k, const char *v, void *cb)
                            pack_idx_opts.version);
                return 0;
        }
+       if (!strcmp(k, "pack.writereverseindex")) {
+               if (git_config_bool(k, v))
+                       pack_idx_opts.flags |= WRITE_REV;
+               else
+                       pack_idx_opts.flags &= ~WRITE_REV;
+               return 0;
+       }
        if (!strcmp(k, "uploadpack.blobpackfileuri")) {
                struct configured_exclusion *ex = xmalloc(sizeof(*ex));
                const char *oid_end, *pack_end;
@@ -2979,6 +3011,191 @@ static int git_pack_config(const char *k, const char *v, void *cb)
        return git_default_config(k, v, cb);
 }
 
+/* Counters for trace2 output when in --stdin-packs mode. */
+static int stdin_packs_found_nr;
+static int stdin_packs_hints_nr;
+
+static int add_object_entry_from_pack(const struct object_id *oid,
+                                     struct packed_git *p,
+                                     uint32_t pos,
+                                     void *_data)
+{
+       struct rev_info *revs = _data;
+       struct object_info oi = OBJECT_INFO_INIT;
+       off_t ofs;
+       enum object_type type;
+
+       display_progress(progress_state, ++nr_seen);
+
+       if (have_duplicate_entry(oid, 0))
+               return 0;
+
+       ofs = nth_packed_object_offset(p, pos);
+       if (!want_object_in_pack(oid, 0, &p, &ofs))
+               return 0;
+
+       oi.typep = &type;
+       if (packed_object_info(the_repository, p, ofs, &oi) < 0)
+               die(_("could not get type of object %s in pack %s"),
+                   oid_to_hex(oid), p->pack_name);
+       else if (type == OBJ_COMMIT) {
+               /*
+                * commits in included packs are used as starting points for the
+                * subsequent revision walk
+                */
+               add_pending_oid(revs, NULL, oid, 0);
+       }
+
+       stdin_packs_found_nr++;
+
+       create_object_entry(oid, type, 0, 0, 0, p, ofs);
+
+       return 0;
+}
+
+static void show_commit_pack_hint(struct commit *commit, void *_data)
+{
+       /* nothing to do; commits don't have a namehash */
+}
+
+static void show_object_pack_hint(struct object *object, const char *name,
+                                 void *_data)
+{
+       struct object_entry *oe = packlist_find(&to_pack, &object->oid);
+       if (!oe)
+               return;
+
+       /*
+        * Our 'to_pack' list was constructed by iterating all objects packed in
+        * included packs, and so doesn't have a non-zero hash field that you
+        * would typically pick up during a reachability traversal.
+        *
+        * Make a best-effort attempt to fill in the ->hash and ->no_try_delta
+        * here using a now in order to perhaps improve the delta selection
+        * process.
+        */
+       oe->hash = pack_name_hash(name);
+       oe->no_try_delta = name && no_try_delta(name);
+
+       stdin_packs_hints_nr++;
+}
+
+static int pack_mtime_cmp(const void *_a, const void *_b)
+{
+       struct packed_git *a = ((const struct string_list_item*)_a)->util;
+       struct packed_git *b = ((const struct string_list_item*)_b)->util;
+
+       /*
+        * order packs by descending mtime so that objects are laid out
+        * roughly as newest-to-oldest
+        */
+       if (a->mtime < b->mtime)
+               return 1;
+       else if (b->mtime < a->mtime)
+               return -1;
+       else
+               return 0;
+}
+
+static void read_packs_list_from_stdin(void)
+{
+       struct strbuf buf = STRBUF_INIT;
+       struct string_list include_packs = STRING_LIST_INIT_DUP;
+       struct string_list exclude_packs = STRING_LIST_INIT_DUP;
+       struct string_list_item *item = NULL;
+
+       struct packed_git *p;
+       struct rev_info revs;
+
+       repo_init_revisions(the_repository, &revs, NULL);
+       /*
+        * Use a revision walk to fill in the namehash of objects in the include
+        * packs. To save time, we'll avoid traversing through objects that are
+        * in excluded packs.
+        *
+        * That may cause us to avoid populating all of the namehash fields of
+        * all included objects, but our goal is best-effort, since this is only
+        * an optimization during delta selection.
+        */
+       revs.no_kept_objects = 1;
+       revs.keep_pack_cache_flags |= IN_CORE_KEEP_PACKS;
+       revs.blob_objects = 1;
+       revs.tree_objects = 1;
+       revs.tag_objects = 1;
+       revs.ignore_missing_links = 1;
+
+       while (strbuf_getline(&buf, stdin) != EOF) {
+               if (!buf.len)
+                       continue;
+
+               if (*buf.buf == '^')
+                       string_list_append(&exclude_packs, buf.buf + 1);
+               else
+                       string_list_append(&include_packs, buf.buf);
+
+               strbuf_reset(&buf);
+       }
+
+       string_list_sort(&include_packs);
+       string_list_sort(&exclude_packs);
+
+       for (p = get_all_packs(the_repository); p; p = p->next) {
+               const char *pack_name = pack_basename(p);
+
+               item = string_list_lookup(&include_packs, pack_name);
+               if (!item)
+                       item = string_list_lookup(&exclude_packs, pack_name);
+
+               if (item)
+                       item->util = p;
+       }
+
+       /*
+        * First handle all of the excluded packs, marking them as kept in-core
+        * so that later calls to add_object_entry() discards any objects that
+        * are also found in excluded packs.
+        */
+       for_each_string_list_item(item, &exclude_packs) {
+               struct packed_git *p = item->util;
+               if (!p)
+                       die(_("could not find pack '%s'"), item->string);
+               p->pack_keep_in_core = 1;
+       }
+
+       /*
+        * Order packs by ascending mtime; use QSORT directly to access the
+        * string_list_item's ->util pointer, which string_list_sort() does not
+        * provide.
+        */
+       QSORT(include_packs.items, include_packs.nr, pack_mtime_cmp);
+
+       for_each_string_list_item(item, &include_packs) {
+               struct packed_git *p = item->util;
+               if (!p)
+                       die(_("could not find pack '%s'"), item->string);
+               for_each_object_in_pack(p,
+                                       add_object_entry_from_pack,
+                                       &revs,
+                                       FOR_EACH_OBJECT_PACK_ORDER);
+       }
+
+       if (prepare_revision_walk(&revs))
+               die(_("revision walk setup failed"));
+       traverse_commit_list(&revs,
+                            show_commit_pack_hint,
+                            show_object_pack_hint,
+                            NULL);
+
+       trace2_data_intmax("pack-objects", the_repository, "stdin_packs_found",
+                          stdin_packs_found_nr);
+       trace2_data_intmax("pack-objects", the_repository, "stdin_packs_hints",
+                          stdin_packs_hints_nr);
+
+       strbuf_release(&buf);
+       string_list_clear(&include_packs, 0);
+       string_list_clear(&exclude_packs, 0);
+}
+
 static void read_object_list_from_stdin(void)
 {
        char line[GIT_MAX_HEXSZ + 1 + PATH_MAX + 2];
@@ -3482,6 +3699,7 @@ int cmd_pack_objects(int argc, const char **argv, const char *prefix)
        struct strvec rp = STRVEC_INIT;
        int rev_list_unpacked = 0, rev_list_all = 0, rev_list_reflog = 0;
        int rev_list_index = 0;
+       int stdin_packs = 0;
        struct string_list keep_pack_list = STRING_LIST_INIT_NODUP;
        struct option pack_objects_options[] = {
                OPT_SET_INT('q', "quiet", &progress,
@@ -3532,6 +3750,8 @@ int cmd_pack_objects(int argc, const char **argv, const char *prefix)
                OPT_SET_INT_F(0, "indexed-objects", &rev_list_index,
                              N_("include objects referred to by the index"),
                              1, PARSE_OPT_NONEG),
+               OPT_BOOL(0, "stdin-packs", &stdin_packs,
+                        N_("read packs from stdin")),
                OPT_BOOL(0, "stdout", &pack_to_stdout,
                         N_("output pack to stdout")),
                OPT_BOOL(0, "include-tag", &include_tag,
@@ -3592,6 +3812,8 @@ int cmd_pack_objects(int argc, const char **argv, const char *prefix)
 
        reset_pack_idx_option(&pack_idx_opts);
        git_config(git_pack_config, NULL);
+       if (git_env_bool(GIT_TEST_WRITE_REV_INDEX, 0))
+               pack_idx_opts.flags |= WRITE_REV;
 
        progress = isatty(2);
        argc = parse_options(argc, argv, prefix, pack_objects_options,
@@ -3636,7 +3858,7 @@ int cmd_pack_objects(int argc, const char **argv, const char *prefix)
                use_internal_rev_list = 1;
                strvec_push(&rp, "--indexed-objects");
        }
-       if (rev_list_unpacked) {
+       if (rev_list_unpacked && !stdin_packs) {
                use_internal_rev_list = 1;
                strvec_push(&rp, "--unpacked");
        }
@@ -3681,8 +3903,13 @@ int cmd_pack_objects(int argc, const char **argv, const char *prefix)
        if (filter_options.choice) {
                if (!pack_to_stdout)
                        die(_("cannot use --filter without --stdout"));
+               if (stdin_packs)
+                       die(_("cannot use --filter with --stdin-packs"));
        }
 
+       if (stdin_packs && use_internal_rev_list)
+               die(_("cannot use internal rev list with --stdin-packs"));
+
        /*
         * "soft" reasons not to use bitmaps - for on-disk repack by default we want
         *
@@ -3741,7 +3968,13 @@ int cmd_pack_objects(int argc, const char **argv, const char *prefix)
 
        if (progress)
                progress_state = start_progress(_("Enumerating objects"), 0);
-       if (!use_internal_rev_list)
+       if (stdin_packs) {
+               /* avoids adding objects in excluded packs */
+               ignore_packed_keep_in_core = 1;
+               read_packs_list_from_stdin();
+               if (rev_list_unpacked)
+                       add_unreachable_loose_objects();
+       } else if (!use_internal_rev_list)
                read_object_list_from_stdin();
        else {
                get_object_list(rp.nr, rp.v);
index 6e115a811aa29ecb97df0ad81810df77ec16e57b..7102996c75e7e73466f46e26ae08bfc5dc4b0c5b 100644 (file)
@@ -373,7 +373,7 @@ static void sort_pack_list(struct pack_list **pl)
                return;
 
        /* prepare an array of packed_list for easier sorting */
-       ary = xcalloc(n, sizeof(struct pack_list *));
+       CALLOC_ARRAY(ary, n);
        for (n = 0, p = *pl; p; p = p->next)
                ary[n++] = p;
 
index 03adb58602971d8fa754da44d077fd36968b1636..194967ed79dc99fe37720ffff012bf40275ff29d 100644 (file)
@@ -115,7 +115,7 @@ static void set_refspecs(const char **refs, int nr, const char *repo)
                        else
                                refspec_appendf(&rs, "refs/tags/%s", ref);
                } else if (deleterefs) {
-                       if (strchr(ref, ':'))
+                       if (strchr(ref, ':') || !*ref)
                                die(_("--delete only accepts plain target ref names"));
                        refspec_appendf(&rs, ":%s", ref);
                } else if (!strchr(ref, ':')) {
index 24c4162f7446ce89ff2fe9866bb0dc678785bed4..50318849d657ea298ae8984decdc2ae870a62741 100644 (file)
@@ -3,6 +3,7 @@
 #include "parse-options.h"
 #include "range-diff.h"
 #include "config.h"
+#include "revision.h"
 
 static const char * const builtin_range_diff_usage[] = {
 N_("git range-diff [<options>] <old-base>..<old-tip> <new-base>..<new-tip>"),
@@ -13,18 +14,27 @@ NULL
 
 int cmd_range_diff(int argc, const char **argv, const char *prefix)
 {
-       int creation_factor = RANGE_DIFF_CREATION_FACTOR_DEFAULT;
        struct diff_options diffopt = { NULL };
        struct strvec other_arg = STRVEC_INIT;
-       int simple_color = -1;
+       struct range_diff_options range_diff_opts = {
+               .creation_factor = RANGE_DIFF_CREATION_FACTOR_DEFAULT,
+               .diffopt = &diffopt,
+               .other_arg = &other_arg
+       };
+       int simple_color = -1, left_only = 0, right_only = 0;
        struct option range_diff_options[] = {
-               OPT_INTEGER(0, "creation-factor", &creation_factor,
-                           N_("Percentage by which creation is weighted")),
+               OPT_INTEGER(0, "creation-factor",
+                           &range_diff_opts.creation_factor,
+                           N_("percentage by which creation is weighted")),
                OPT_BOOL(0, "no-dual-color", &simple_color,
                            N_("use simple diff colors")),
                OPT_PASSTHRU_ARGV(0, "notes", &other_arg,
                                  N_("notes"), N_("passed to 'git log'"),
                                  PARSE_OPT_OPTARG),
+               OPT_BOOL(0, "left-only", &left_only,
+                        N_("only emit output related to the first range")),
+               OPT_BOOL(0, "right-only", &right_only,
+                        N_("only emit output related to the second range")),
                OPT_END()
        };
        struct option *options;
@@ -46,12 +56,12 @@ int cmd_range_diff(int argc, const char **argv, const char *prefix)
                diffopt.use_color = 1;
 
        if (argc == 2) {
-               if (!strstr(argv[0], ".."))
-                       die(_("no .. in range: '%s'"), argv[0]);
+               if (!is_range_diff_range(argv[0]))
+                       die(_("not a commit range: '%s'"), argv[0]);
                strbuf_addstr(&range1, argv[0]);
 
-               if (!strstr(argv[1], ".."))
-                       die(_("no .. in range: '%s'"), argv[1]);
+               if (!is_range_diff_range(argv[1]))
+                       die(_("not a commit range: '%s'"), argv[1]);
                strbuf_addstr(&range2, argv[1]);
        } else if (argc == 3) {
                strbuf_addf(&range1, "%s..%s", argv[0], argv[1]);
@@ -81,8 +91,10 @@ int cmd_range_diff(int argc, const char **argv, const char *prefix)
        }
        FREE_AND_NULL(options);
 
-       res = show_range_diff(range1.buf, range2.buf, creation_factor,
-                             simple_color < 1, &diffopt, &other_arg);
+       range_diff_opts.dual_color = simple_color < 1;
+       range_diff_opts.left_only = left_only;
+       range_diff_opts.right_only = right_only;
+       res = show_range_diff(range1.buf, range2.buf, &range_diff_opts);
 
        strvec_clear(&other_arg);
        strbuf_release(&range1);
index 840dbd7eb7772e47f408f05468f21df153e9cc20..783b526f6e758a05a75524d86f91088bb7ba5b87 100644 (file)
@@ -100,8 +100,8 @@ struct rebase_options {
        char *strategy, *strategy_opts;
        struct strbuf git_format_patch_opt;
        int reschedule_failed_exec;
-       int use_legacy_rebase;
        int reapply_cherry_picks;
+       int fork_point;
 };
 
 #define REBASE_OPTIONS_INIT {                          \
@@ -111,7 +111,8 @@ struct rebase_options {
                .default_backend = "merge",             \
                .flags = REBASE_NO_QUIET,               \
                .git_am_opts = STRVEC_INIT,             \
-               .git_format_patch_opt = STRBUF_INIT     \
+               .git_format_patch_opt = STRBUF_INIT,    \
+               .fork_point = -1,                       \
        }
 
 static struct replay_opts get_replay_opts(const struct rebase_options *opts)
@@ -1095,8 +1096,8 @@ static int rebase_config(const char *var, const char *value, void *data)
                return 0;
        }
 
-       if (!strcmp(var, "rebase.usebuiltin")) {
-               opts->use_legacy_rebase = !git_config_bool(var, value);
+       if (!strcmp(var, "rebase.forkpoint")) {
+               opts->fork_point = git_config_bool(var, value) ? -1 : 0;
                return 0;
        }
 
@@ -1306,7 +1307,6 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
        const char *gpg_sign = NULL;
        struct string_list exec = STRING_LIST_INIT_NODUP;
        const char *rebase_merges = NULL;
-       int fork_point = -1;
        struct string_list strategy_options = STRING_LIST_INIT_NODUP;
        struct object_id squash_onto;
        char *squash_onto_name = NULL;
@@ -1406,7 +1406,7 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
                        N_("mode"),
                        N_("try to rebase merges instead of skipping them"),
                        PARSE_OPT_OPTARG, NULL, (intptr_t)""},
-               OPT_BOOL(0, "fork-point", &fork_point,
+               OPT_BOOL(0, "fork-point", &options.fork_point,
                         N_("use 'merge-base --fork-point' to refine upstream")),
                OPT_STRING('s', "strategy", &options.strategy,
                           N_("strategy"), N_("use the given merge strategy")),
@@ -1435,11 +1435,6 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
        gpg_sign = options.gpg_sign_opt ? "" : NULL;
        FREE_AND_NULL(options.gpg_sign_opt);
 
-       if (options.use_legacy_rebase ||
-           !git_env_bool("GIT_TEST_REBASE_USE_BUILTIN", -1))
-               warning(_("the rebase.useBuiltin support has been removed!\n"
-                         "See its entry in 'git help config' for details."));
-
        strbuf_reset(&buf);
        strbuf_addf(&buf, "%s/applying", apply_dir());
        if(file_exists(buf.buf))
@@ -1494,7 +1489,7 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
                        die(_("cannot combine '--keep-base' with '--root'"));
        }
 
-       if (options.root && fork_point > 0)
+       if (options.root && options.fork_point > 0)
                die(_("cannot combine '--root' with '--fork-point'"));
 
        if (action != ACTION_NONE && !in_progress)
@@ -1840,8 +1835,8 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
                                                                    NULL);
                        if (!options.upstream_name)
                                error_on_missing_default_upstream();
-                       if (fork_point < 0)
-                               fork_point = 1;
+                       if (options.fork_point < 0)
+                               options.fork_point = 1;
                } else {
                        options.upstream_name = argv[0];
                        argc--;
@@ -1945,7 +1940,7 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
        } else
                BUG("unexpected number of arguments left to parse");
 
-       if (fork_point > 0) {
+       if (options.fork_point > 0) {
                struct commit *head =
                        lookup_commit_reference(the_repository,
                                                &options.orig_head);
index d49d050e6e57c0dd8f795a36d6f1a64aa7c8ddee..6bc12c828aa3516b356c9eb0b42e1fe4fea03c97 100644 (file)
@@ -358,7 +358,7 @@ static void proc_receive_ref_append(const char *prefix)
        char *p;
        int len;
 
-       ref_pattern = xcalloc(1, sizeof(struct proc_receive_ref));
+       CALLOC_ARRAY(ref_pattern, 1);
        p = strchr(prefix, ':');
        if (p) {
                while (prefix < p) {
@@ -764,7 +764,7 @@ static void prepare_push_cert_sha1(struct child_process *proc)
 
                memset(&sigcheck, '\0', sizeof(sigcheck));
 
-               bogs = parse_signature(push_cert.buf, push_cert.len);
+               bogs = parse_signed_buffer(push_cert.buf, push_cert.len);
                check_signature(push_cert.buf, bogs, push_cert.buf + bogs,
                                push_cert.len - bogs, &sigcheck);
 
@@ -1024,7 +1024,7 @@ static int read_proc_receive_report(struct packet_reader *reader,
                        }
                        if (new_report) {
                                if (!hint->report) {
-                                       hint->report = xcalloc(1, sizeof(struct ref_push_report));
+                                       CALLOC_ARRAY(hint->report, 1);
                                        report = hint->report;
                                } else {
                                        report = hint->report;
@@ -2050,7 +2050,7 @@ static void queue_commands_from_cert(struct command **tail,
                die("malformed push certificate %.*s", 100, push_cert->buf);
        else
                boc += 2;
-       eoc = push_cert->buf + parse_signature(push_cert->buf, push_cert->len);
+       eoc = push_cert->buf + parse_signed_buffer(push_cert->buf, push_cert->len);
 
        while (boc < eoc) {
                const char *eol = memchr(boc, '\n', eoc - boc);
@@ -2275,7 +2275,7 @@ static const char *unpack(int err_fd, struct shallow_info *si)
                status = start_command(&child);
                if (status)
                        return "index-pack fork failed";
-               pack_lockfile = index_pack_lockfile(child.out);
+               pack_lockfile = index_pack_lockfile(child.out, NULL);
                close(child.out);
                status = finish_command(&child);
                if (status)
@@ -2313,11 +2313,9 @@ static void prepare_shallow_update(struct shallow_info *si)
        ALLOC_ARRAY(si->used_shallow, si->shallow->nr);
        assign_shallow_commits_to_refs(si, si->used_shallow, NULL);
 
-       si->need_reachability_test =
-               xcalloc(si->shallow->nr, sizeof(*si->need_reachability_test));
-       si->reachable =
-               xcalloc(si->shallow->nr, sizeof(*si->reachable));
-       si->shallow_ref = xcalloc(si->ref->nr, sizeof(*si->shallow_ref));
+       CALLOC_ARRAY(si->need_reachability_test, si->shallow->nr);
+       CALLOC_ARRAY(si->reachable, si->shallow->nr);
+       CALLOC_ARRAY(si->shallow_ref, si->ref->nr);
 
        for (i = 0; i < si->nr_ours; i++)
                si->need_reachability_test[si->ours[i]] = 1;
index ca1d8079f320e6d6b93767110520dcdcd1fa0a97..09541d1c80483c1a20802ba34a747a1674811165 100644 (file)
@@ -602,6 +602,9 @@ static int cmd_reflog_expire(int argc, const char **argv, const char *prefix)
         */
        if (cb.cmd.stalefix) {
                repo_init_revisions(the_repository, &cb.cmd.revs, prefix);
+               cb.cmd.revs.do_not_die_on_missing_tree = 1;
+               cb.cmd.revs.ignore_missing = 1;
+               cb.cmd.revs.ignore_missing_links = 1;
                if (flags & EXPIRE_REFLOGS_VERBOSE)
                        printf(_("Marking reachable objects..."));
                mark_reachable_objects(&cb.cmd.revs, 0, 0, NULL);
index d11a5589e49dcc9ea06663c422154855f9ad529b..7f88e6ce9deb7666b7ce5cb9179b895a25281e64 100644 (file)
@@ -221,7 +221,7 @@ static int add(int argc, const char **argv)
 
        if (fetch_tags != TAGS_DEFAULT) {
                strbuf_reset(&buf);
-               strbuf_addf(&buf, "remote.%s.tagopt", name);
+               strbuf_addf(&buf, "remote.%s.tagOpt", name);
                git_config_set(buf.buf,
                               fetch_tags == TAGS_SET ? "--tags" : "--no-tags");
        }
@@ -746,7 +746,7 @@ static int mv(int argc, const char **argv)
                }
                if (info->push_remote_name && !strcmp(info->push_remote_name, rename.old_name)) {
                        strbuf_reset(&buf);
-                       strbuf_addf(&buf, "branch.%s.pushremote", item->string);
+                       strbuf_addf(&buf, "branch.%s.pushRemote", item->string);
                        git_config_set(buf.buf, rename.new_name);
                }
        }
@@ -938,9 +938,6 @@ static int get_remote_ref_states(const char *name,
                                 struct ref_states *states,
                                 int query)
 {
-       struct transport *transport;
-       const struct ref *remote_refs;
-
        states->remote = remote_get(name);
        if (!states->remote)
                return error(_("No such remote: '%s'"), name);
@@ -948,10 +945,12 @@ static int get_remote_ref_states(const char *name,
        read_branches();
 
        if (query) {
+               struct transport *transport;
+               const struct ref *remote_refs;
+
                transport = transport_get(states->remote, states->remote->url_nr > 0 ?
                        states->remote->url[0] : NULL);
                remote_refs = transport_get_remote_refs(transport, NULL);
-               transport_disconnect(transport);
 
                states->queried = 1;
                if (query & GET_REF_STATES)
@@ -960,6 +959,7 @@ static int get_remote_ref_states(const char *name,
                        get_head_names(remote_refs, states);
                if (query & GET_PUSH_REF_STATES)
                        get_push_ref_states(remote_refs, states);
+               transport_disconnect(transport);
        } else {
                for_each_ref(append_ref_to_tracked_list, states);
                string_list_sort(&states->tracked);
index 2158b48f4cc72ed65c50c143dbedfc4c8a6fac32..2847fdfbab73ecb39be665b2128388aaab847ac7 100644 (file)
@@ -209,6 +209,7 @@ static struct {
 } exts[] = {
        {".pack"},
        {".idx"},
+       {".rev", 1},
        {".bitmap", 1},
        {".promisor", 1},
 };
@@ -296,6 +297,142 @@ static void repack_promisor_objects(const struct pack_objects_args *args,
 #define ALL_INTO_ONE 1
 #define LOOSEN_UNREACHABLE 2
 
+struct pack_geometry {
+       struct packed_git **pack;
+       uint32_t pack_nr, pack_alloc;
+       uint32_t split;
+};
+
+static uint32_t geometry_pack_weight(struct packed_git *p)
+{
+       if (open_pack_index(p))
+               die(_("cannot open index for %s"), p->pack_name);
+       return p->num_objects;
+}
+
+static int geometry_cmp(const void *va, const void *vb)
+{
+       uint32_t aw = geometry_pack_weight(*(struct packed_git **)va),
+                bw = geometry_pack_weight(*(struct packed_git **)vb);
+
+       if (aw < bw)
+               return -1;
+       if (aw > bw)
+               return 1;
+       return 0;
+}
+
+static void init_pack_geometry(struct pack_geometry **geometry_p)
+{
+       struct packed_git *p;
+       struct pack_geometry *geometry;
+
+       *geometry_p = xcalloc(1, sizeof(struct pack_geometry));
+       geometry = *geometry_p;
+
+       for (p = get_all_packs(the_repository); p; p = p->next) {
+               if (!pack_kept_objects && p->pack_keep)
+                       continue;
+
+               ALLOC_GROW(geometry->pack,
+                          geometry->pack_nr + 1,
+                          geometry->pack_alloc);
+
+               geometry->pack[geometry->pack_nr] = p;
+               geometry->pack_nr++;
+       }
+
+       QSORT(geometry->pack, geometry->pack_nr, geometry_cmp);
+}
+
+static void split_pack_geometry(struct pack_geometry *geometry, int factor)
+{
+       uint32_t i;
+       uint32_t split;
+       off_t total_size = 0;
+
+       if (!geometry->pack_nr) {
+               geometry->split = geometry->pack_nr;
+               return;
+       }
+
+       /*
+        * First, count the number of packs (in descending order of size) which
+        * already form a geometric progression.
+        */
+       for (i = geometry->pack_nr - 1; i > 0; i--) {
+               struct packed_git *ours = geometry->pack[i];
+               struct packed_git *prev = geometry->pack[i - 1];
+
+               if (unsigned_mult_overflows(factor, geometry_pack_weight(prev)))
+                       die(_("pack %s too large to consider in geometric "
+                             "progression"),
+                           prev->pack_name);
+
+               if (geometry_pack_weight(ours) < factor * geometry_pack_weight(prev))
+                       break;
+       }
+
+       split = i;
+
+       if (split) {
+               /*
+                * Move the split one to the right, since the top element in the
+                * last-compared pair can't be in the progression. Only do this
+                * when we split in the middle of the array (otherwise if we got
+                * to the end, then the split is in the right place).
+                */
+               split++;
+       }
+
+       /*
+        * Then, anything to the left of 'split' must be in a new pack. But,
+        * creating that new pack may cause packs in the heavy half to no longer
+        * form a geometric progression.
+        *
+        * Compute an expected size of the new pack, and then determine how many
+        * packs in the heavy half need to be joined into it (if any) to restore
+        * the geometric progression.
+        */
+       for (i = 0; i < split; i++) {
+               struct packed_git *p = geometry->pack[i];
+
+               if (unsigned_add_overflows(total_size, geometry_pack_weight(p)))
+                       die(_("pack %s too large to roll up"), p->pack_name);
+               total_size += geometry_pack_weight(p);
+       }
+       for (i = split; i < geometry->pack_nr; i++) {
+               struct packed_git *ours = geometry->pack[i];
+
+               if (unsigned_mult_overflows(factor, total_size))
+                       die(_("pack %s too large to roll up"), ours->pack_name);
+
+               if (geometry_pack_weight(ours) < factor * total_size) {
+                       if (unsigned_add_overflows(total_size,
+                                                  geometry_pack_weight(ours)))
+                               die(_("pack %s too large to roll up"),
+                                   ours->pack_name);
+
+                       split++;
+                       total_size += geometry_pack_weight(ours);
+               } else
+                       break;
+       }
+
+       geometry->split = split;
+}
+
+static void clear_pack_geometry(struct pack_geometry *geometry)
+{
+       if (!geometry)
+               return;
+
+       free(geometry->pack);
+       geometry->pack_nr = 0;
+       geometry->pack_alloc = 0;
+       geometry->split = 0;
+}
+
 int cmd_repack(int argc, const char **argv, const char *prefix)
 {
        struct child_process cmd = CHILD_PROCESS_INIT;
@@ -303,6 +440,7 @@ int cmd_repack(int argc, const char **argv, const char *prefix)
        struct string_list names = STRING_LIST_INIT_DUP;
        struct string_list rollback = STRING_LIST_INIT_NODUP;
        struct string_list existing_packs = STRING_LIST_INIT_DUP;
+       struct pack_geometry *geometry = NULL;
        struct strbuf line = STRBUF_INIT;
        int i, ext, ret;
        FILE *out;
@@ -315,6 +453,7 @@ int cmd_repack(int argc, const char **argv, const char *prefix)
        struct string_list keep_pack_list = STRING_LIST_INIT_NODUP;
        int no_update_server_info = 0;
        struct pack_objects_args po_args = {NULL};
+       int geometric_factor = 0;
 
        struct option builtin_repack_options[] = {
                OPT_BIT('a', NULL, &pack_everything,
@@ -355,6 +494,8 @@ int cmd_repack(int argc, const char **argv, const char *prefix)
                                N_("repack objects in packs marked with .keep")),
                OPT_STRING_LIST(0, "keep-pack", &keep_pack_list, N_("name"),
                                N_("do not repack this pack")),
+               OPT_INTEGER('g', "geometric", &geometric_factor,
+                           N_("find a geometric progression with factor <N>")),
                OPT_END()
        };
 
@@ -381,6 +522,13 @@ int cmd_repack(int argc, const char **argv, const char *prefix)
        if (write_bitmaps && !(pack_everything & ALL_INTO_ONE))
                die(_(incremental_bitmap_conflict_error));
 
+       if (geometric_factor) {
+               if (pack_everything)
+                       die(_("--geometric is incompatible with -A, -a"));
+               init_pack_geometry(&geometry);
+               split_pack_geometry(geometry, geometric_factor);
+       }
+
        packdir = mkpathdup("%s/pack", get_object_directory());
        packtmp = mkpathdup("%s/.tmp-%d-pack", packdir, (int)getpid());
 
@@ -395,9 +543,21 @@ int cmd_repack(int argc, const char **argv, const char *prefix)
                strvec_pushf(&cmd.args, "--keep-pack=%s",
                             keep_pack_list.items[i].string);
        strvec_push(&cmd.args, "--non-empty");
-       strvec_push(&cmd.args, "--all");
-       strvec_push(&cmd.args, "--reflog");
-       strvec_push(&cmd.args, "--indexed-objects");
+       if (!geometry) {
+               /*
+                * We need to grab all reachable objects, including those that
+                * are reachable from reflogs and the index.
+                *
+                * When repacking into a geometric progression of packs,
+                * however, we ask 'git pack-objects --stdin-packs', and it is
+                * not about packing objects based on reachability but about
+                * repacking all the objects in specified packs and loose ones
+                * (indeed, --stdin-packs is incompatible with these options).
+                */
+               strvec_push(&cmd.args, "--all");
+               strvec_push(&cmd.args, "--reflog");
+               strvec_push(&cmd.args, "--indexed-objects");
+       }
        if (has_promisor_remote())
                strvec_push(&cmd.args, "--exclude-promisor-objects");
        if (write_bitmaps > 0)
@@ -428,17 +588,37 @@ int cmd_repack(int argc, const char **argv, const char *prefix)
                                strvec_push(&cmd.env_array, "GIT_REF_PARANOIA=1");
                        }
                }
+       } else if (geometry) {
+               strvec_push(&cmd.args, "--stdin-packs");
+               strvec_push(&cmd.args, "--unpacked");
        } else {
                strvec_push(&cmd.args, "--unpacked");
                strvec_push(&cmd.args, "--incremental");
        }
 
-       cmd.no_stdin = 1;
+       if (geometry)
+               cmd.in = -1;
+       else
+               cmd.no_stdin = 1;
 
        ret = start_command(&cmd);
        if (ret)
                return ret;
 
+       if (geometry) {
+               FILE *in = xfdopen(cmd.in, "w");
+               /*
+                * The resulting pack should contain all objects in packs that
+                * are going to be rolled up, but exclude objects in packs which
+                * are being left alone.
+                */
+               for (i = 0; i < geometry->split; i++)
+                       fprintf(in, "%s\n", pack_basename(geometry->pack[i]));
+               for (i = geometry->split; i < geometry->pack_nr; i++)
+                       fprintf(in, "^%s\n", pack_basename(geometry->pack[i]));
+               fclose(in);
+       }
+
        out = xfdopen(cmd.out, "r");
        while (strbuf_getline_lf(&line, out) != EOF) {
                if (line.len != the_hash_algo->hexsz)
@@ -506,6 +686,25 @@ int cmd_repack(int argc, const char **argv, const char *prefix)
                        if (!string_list_has_string(&names, sha1))
                                remove_redundant_pack(packdir, item->string);
                }
+
+               if (geometry) {
+                       struct strbuf buf = STRBUF_INIT;
+
+                       uint32_t i;
+                       for (i = 0; i < geometry->split; i++) {
+                               struct packed_git *p = geometry->pack[i];
+                               if (string_list_has_string(&names,
+                                                          hash_to_hex(p->hash)))
+                                       continue;
+
+                               strbuf_reset(&buf);
+                               strbuf_addstr(&buf, pack_basename(p));
+                               strbuf_strip_suffix(&buf, ".pack");
+
+                               remove_redundant_pack(packdir, buf.buf);
+                       }
+                       strbuf_release(&buf);
+               }
                if (!po_args.quiet && isatty(2))
                        opts |= PRUNE_PACKED_VERBOSE;
                prune_packed_objects(opts);
@@ -522,11 +721,12 @@ int cmd_repack(int argc, const char **argv, const char *prefix)
        remove_temporary_files();
 
        if (git_env_bool(GIT_TEST_MULTI_PACK_INDEX, 0))
-               write_midx_file(get_object_directory(), 0);
+               write_midx_file(get_object_directory(), NULL, 0);
 
        string_list_clear(&names, 0);
        string_list_clear(&rollback, 0);
        string_list_clear(&existing_packs, 0);
+       clear_pack_geometry(geometry);
        strbuf_release(&line);
 
        return 0;
index c635b062c3a7b1cf2ad53b34f1471f5eeee83cce..43e855cb887650b87390e6f5e96294b4c967d2af 100644 (file)
@@ -425,7 +425,7 @@ int cmd_reset(int argc, const char **argv, const char *prefix)
 
                        dwim_ref(rev, strlen(rev), &dummy, &ref, 0);
                        if (ref && !starts_with(ref, "refs/"))
-                               ref = NULL;
+                               FREE_AND_NULL(ref);
 
                        err = reset_index(ref, &oid, reset_type, quiet);
                        if (reset_type == KEEP && !err)
index 25c6c3b38d4b120687bb02220c3db25af2ae66de..b4d8ea0a35b5b2a0fde7302312b3bf39a5edcda1 100644 (file)
@@ -80,6 +80,19 @@ static int arg_show_object_names = 1;
 
 #define DEFAULT_OIDSET_SIZE     (16*1024)
 
+static int show_disk_usage;
+static off_t total_disk_usage;
+
+static off_t get_object_disk_usage(struct object *obj)
+{
+       off_t size;
+       struct object_info oi = OBJECT_INFO_INIT;
+       oi.disk_sizep = &size;
+       if (oid_object_info_extended(the_repository, &obj->oid, &oi, 0) < 0)
+               die(_("unable to get disk usage of %s"), oid_to_hex(&obj->oid));
+       return size;
+}
+
 static void finish_commit(struct commit *commit);
 static void show_commit(struct commit *commit, void *data)
 {
@@ -88,6 +101,9 @@ static void show_commit(struct commit *commit, void *data)
 
        display_progress(progress, ++progress_counter);
 
+       if (show_disk_usage)
+               total_disk_usage += get_object_disk_usage(&commit->object);
+
        if (info->flags & REV_LIST_QUIET) {
                finish_commit(commit);
                return;
@@ -258,6 +274,8 @@ static void show_object(struct object *obj, const char *name, void *cb_data)
        if (finish_object(obj, name, cb_data))
                return;
        display_progress(progress, ++progress_counter);
+       if (show_disk_usage)
+               total_disk_usage += get_object_disk_usage(obj);
        if (info->flags & REV_LIST_QUIET)
                return;
 
@@ -452,6 +470,23 @@ static int try_bitmap_traversal(struct rev_info *revs,
        return 0;
 }
 
+static int try_bitmap_disk_usage(struct rev_info *revs,
+                                struct list_objects_filter_options *filter)
+{
+       struct bitmap_index *bitmap_git;
+
+       if (!show_disk_usage)
+               return -1;
+
+       bitmap_git = prepare_bitmap_walk(revs, filter);
+       if (!bitmap_git)
+               return -1;
+
+       printf("%"PRIuMAX"\n",
+              (uintmax_t)get_disk_usage_from_bitmap(bitmap_git, revs));
+       return 0;
+}
+
 int cmd_rev_list(int argc, const char **argv, const char *prefix)
 {
        struct rev_info revs;
@@ -584,6 +619,12 @@ int cmd_rev_list(int argc, const char **argv, const char *prefix)
                        continue;
                }
 
+               if (!strcmp(arg, "--disk-usage")) {
+                       show_disk_usage = 1;
+                       info.flags |= REV_LIST_QUIET;
+                       continue;
+               }
+
                usage(rev_list_usage);
 
        }
@@ -626,6 +667,8 @@ int cmd_rev_list(int argc, const char **argv, const char *prefix)
        if (use_bitmap_index) {
                if (!try_bitmap_count(&revs, &filter_options))
                        return 0;
+               if (!try_bitmap_disk_usage(&revs, &filter_options))
+                       return 0;
                if (!try_bitmap_traversal(&revs, &filter_options))
                        return 0;
        }
@@ -690,5 +733,8 @@ int cmd_rev_list(int argc, const char **argv, const char *prefix)
                        printf("%d\n", revs.count_left + revs.count_right);
        }
 
+       if (show_disk_usage)
+               printf("%"PRIuMAX"\n", (uintmax_t)total_disk_usage);
+
        return 0;
 }
index 314a86c5621bd26b7ddcd35cab1a21702453a2ca..237f2f18d4c0355a661a6dc7e64879870a32ac5d 100644 (file)
@@ -182,7 +182,7 @@ static int run_sequencer(int argc, const char **argv, struct replay_opts *opts)
                                "--signoff", opts->signoff,
                                "--no-commit", opts->no_commit,
                                "-x", opts->record_origin,
-                               "--edit", opts->edit,
+                               "--edit", opts->edit > 0,
                                NULL);
 
        if (cmd) {
@@ -230,8 +230,6 @@ int cmd_revert(int argc, const char **argv, const char *prefix)
        struct replay_opts opts = REPLAY_OPTS_INIT;
        int res;
 
-       if (isatty(0))
-               opts.edit = 1;
        opts.action = REPLAY_REVERT;
        sequencer_init_config(&opts);
        res = run_sequencer(argc, argv, &opts);
index 2306a9ad98e08a0c9d5240cdd21d1caf9669eb27..d7da50ada5b75be9ec6172b5b485fe11e26b660c 100644 (file)
@@ -64,7 +64,7 @@ static int sparse_checkout_list(int argc, const char **argv)
        pl.use_cone_patterns = core_sparse_checkout_cone;
 
        sparse_filename = get_sparse_checkout_filename();
-       res = add_patterns_from_file_to_list(sparse_filename, "", 0, &pl, NULL);
+       res = add_patterns_from_file_to_list(sparse_filename, "", 0, &pl, NULL, 0);
        free(sparse_filename);
 
        if (res < 0) {
@@ -321,7 +321,7 @@ static int sparse_checkout_init(int argc, const char **argv)
        memset(&pl, 0, sizeof(pl));
 
        sparse_filename = get_sparse_checkout_filename();
-       res = add_patterns_from_file_to_list(sparse_filename, "", 0, &pl, NULL);
+       res = add_patterns_from_file_to_list(sparse_filename, "", 0, &pl, NULL, 0);
 
        /* If we already have a sparse-checkout file, use it. */
        if (res >= 0) {
@@ -483,7 +483,7 @@ static void add_patterns_cone_mode(int argc, const char **argv,
        existing.use_cone_patterns = core_sparse_checkout_cone;
 
        if (add_patterns_from_file_to_list(sparse_filename, "", 0,
-                                          &existing, NULL))
+                                          &existing, NULL, 0))
                die(_("unable to load existing sparse-checkout patterns"));
        free(sparse_filename);
 
@@ -507,7 +507,7 @@ static void add_patterns_literal(int argc, const char **argv,
 {
        char *sparse_filename = get_sparse_checkout_filename();
        if (add_patterns_from_file_to_list(sparse_filename, "", 0,
-                                          pl, NULL))
+                                          pl, NULL, 0))
                die(_("unable to load existing sparse-checkout patterns"));
        free(sparse_filename);
        add_patterns_from_input(pl, argc, argv);
index 9bc85f91cd004024b5bba9bf9cb587101e9dedce..c56fed33546bfb4119f16f52585e0c69b96cd06f 100644 (file)
 #include "strvec.h"
 #include "run-command.h"
 #include "dir.h"
+#include "entry.h"
 #include "rerere.h"
 #include "revision.h"
 #include "log-tree.h"
 #include "diffcore.h"
 #include "exec-cmd.h"
+#include "entry.h"
 
 #define INCLUDE_ALL_FILES 2
 
@@ -87,7 +89,7 @@ static const char * const git_stash_save_usage[] = {
        NULL
 };
 
-static const char *ref_stash = "refs/stash";
+static const char ref_stash[] = "refs/stash";
 static struct strbuf stash_index_path = STRBUF_INIT;
 
 /*
@@ -222,7 +224,7 @@ static int clear_stash(int argc, const char **argv, const char *prefix)
                             PARSE_OPT_STOP_AT_NON_OPTION);
 
        if (argc)
-               return error(_("git stash clear with parameters is "
+               return error(_("git stash clear with arguments is "
                               "unimplemented"));
 
        return do_clear_stash();
@@ -768,6 +770,7 @@ static int list_stash(int argc, const char **argv, const char *prefix)
 
 static int show_stat = 1;
 static int show_patch;
+static int show_include_untracked;
 static int use_legacy_stash;
 
 static int git_stash_config(const char *var, const char *value, void *cb)
@@ -780,6 +783,10 @@ static int git_stash_config(const char *var, const char *value, void *cb)
                show_patch = git_config_bool(var, value);
                return 0;
        }
+       if (!strcmp(var, "stash.showincludeuntracked")) {
+               show_include_untracked = git_config_bool(var, value);
+               return 0;
+       }
        if (!strcmp(var, "stash.usebuiltin")) {
                use_legacy_stash = !git_config_bool(var, value);
                return 0;
@@ -787,6 +794,33 @@ static int git_stash_config(const char *var, const char *value, void *cb)
        return git_diff_basic_config(var, value, cb);
 }
 
+static void diff_include_untracked(const struct stash_info *info, struct diff_options *diff_opt)
+{
+       const struct object_id *oid[] = { &info->w_commit, &info->u_tree };
+       struct tree *tree[ARRAY_SIZE(oid)];
+       struct tree_desc tree_desc[ARRAY_SIZE(oid)];
+       struct unpack_trees_options unpack_tree_opt = { 0 };
+       int i;
+
+       for (i = 0; i < ARRAY_SIZE(oid); i++) {
+               tree[i] = parse_tree_indirect(oid[i]);
+               if (parse_tree(tree[i]) < 0)
+                       die(_("failed to parse tree"));
+               init_tree_desc(&tree_desc[i], tree[i]->buffer, tree[i]->size);
+       }
+
+       unpack_tree_opt.head_idx = -1;
+       unpack_tree_opt.src_index = &the_index;
+       unpack_tree_opt.dst_index = &the_index;
+       unpack_tree_opt.merge = 1;
+       unpack_tree_opt.fn = stash_worktree_untracked_merge;
+
+       if (unpack_trees(ARRAY_SIZE(tree_desc), tree_desc, &unpack_tree_opt))
+               die(_("failed to unpack trees"));
+
+       do_diff_cache(&info->b_commit, diff_opt);
+}
+
 static int show_stash(int argc, const char **argv, const char *prefix)
 {
        int i;
@@ -795,7 +829,18 @@ static int show_stash(int argc, const char **argv, const char *prefix)
        struct rev_info rev;
        struct strvec stash_args = STRVEC_INIT;
        struct strvec revision_args = STRVEC_INIT;
+       enum {
+               UNTRACKED_NONE,
+               UNTRACKED_INCLUDE,
+               UNTRACKED_ONLY
+       } show_untracked = UNTRACKED_NONE;
        struct option options[] = {
+               OPT_SET_INT('u', "include-untracked", &show_untracked,
+                           N_("include untracked files in the stash"),
+                           UNTRACKED_INCLUDE),
+               OPT_SET_INT_F(0, "only-untracked", &show_untracked,
+                             N_("only show untracked files in the stash"),
+                             UNTRACKED_ONLY, PARSE_OPT_NONEG),
                OPT_END()
        };
 
@@ -803,6 +848,10 @@ static int show_stash(int argc, const char **argv, const char *prefix)
        git_config(git_diff_ui_config, NULL);
        init_revisions(&rev, prefix);
 
+       argc = parse_options(argc, argv, prefix, options, git_stash_show_usage,
+                            PARSE_OPT_KEEP_ARGV0 | PARSE_OPT_KEEP_UNKNOWN |
+                            PARSE_OPT_KEEP_DASHDASH);
+
        strvec_push(&revision_args, argv[0]);
        for (i = 1; i < argc; i++) {
                if (argv[i][0] != '-')
@@ -827,6 +876,9 @@ static int show_stash(int argc, const char **argv, const char *prefix)
                if (show_patch)
                        rev.diffopt.output_format |= DIFF_FORMAT_PATCH;
 
+               if (show_include_untracked)
+                       show_untracked = UNTRACKED_INCLUDE;
+
                if (!show_stat && !show_patch) {
                        free_stash_info(&info);
                        return 0;
@@ -845,7 +897,17 @@ static int show_stash(int argc, const char **argv, const char *prefix)
 
        rev.diffopt.flags.recursive = 1;
        setup_diff_pager(&rev.diffopt);
-       diff_tree_oid(&info.b_commit, &info.w_commit, "", &rev.diffopt);
+       switch (show_untracked) {
+       case UNTRACKED_NONE:
+               diff_tree_oid(&info.b_commit, &info.w_commit, "", &rev.diffopt);
+               break;
+       case UNTRACKED_ONLY:
+               diff_root_tree_oid(&info.u_tree, "", &rev.diffopt);
+               break;
+       case UNTRACKED_INCLUDE:
+               diff_include_untracked(&info, &rev.diffopt);
+               break;
+       }
        log_tree_diff_flush(&rev);
 
        free_stash_info(&info);
index c2bd882d17e72b3950b4d45040352c253c3c78e1..9d505a6329c8e2a61a91f27c84ee24f668bc688e 100644 (file)
@@ -1257,7 +1257,7 @@ static int compute_summary_module_list(struct object_id *head_oid,
        git_config(git_diff_basic_config, NULL);
        init_revisions(&rev, info->prefix);
        rev.abbrev = 0;
-       precompose_argv(diff_args.nr, diff_args.v);
+       precompose_argv_prefix(diff_args.nr, diff_args.v, NULL);
        setup_revisions(diff_args.nr, diff_args.v, &rev, NULL);
        rev.diffopt.output_format = DIFF_FORMAT_NO_OUTPUT | DIFF_FORMAT_CALLBACK;
        rev.diffopt.format_callback = submodule_summary_callback;
index 80237f0df10f442181814900a93d797f965ec3de..e547a08d6c7ce517a5a26598ade75356da93cdab 100644 (file)
@@ -24,9 +24,11 @@ static int check_symref(const char *HEAD, int quiet, int shorten, int print)
                        return 1;
        }
        if (print) {
+               char *to_free = NULL;
                if (shorten)
-                       refname = shorten_unambiguous_ref(refname, 0);
+                       refname = to_free = shorten_unambiguous_ref(refname, 0);
                puts(refname);
+               free(to_free);
        }
        return 0;
 }
index e8b85eefd878b5b2fd1eafe0627d811ecd49b8ea..d403417b562595832513cd6e88e4d58c4076336e 100644 (file)
@@ -198,11 +198,17 @@ static void write_tag_body(int fd, const struct object_id *oid)
 {
        unsigned long size;
        enum object_type type;
-       char *buf, *sp;
+       char *buf, *sp, *orig;
+       struct strbuf payload = STRBUF_INIT;
+       struct strbuf signature = STRBUF_INIT;
 
-       buf = read_object_file(oid, &type, &size);
+       orig = buf = read_object_file(oid, &type, &size);
        if (!buf)
                return;
+       if (parse_signature(buf, size, &payload, &signature)) {
+               buf = payload.buf;
+               size = payload.len;
+       }
        /* skip header */
        sp = strstr(buf, "\n\n");
 
@@ -211,9 +217,11 @@ static void write_tag_body(int fd, const struct object_id *oid)
                return;
        }
        sp += 2; /* skip the 2 LFs */
-       write_or_die(fd, sp, parse_signature(sp, buf + size - sp));
+       write_or_die(fd, sp, buf + size - sp);
 
-       free(buf);
+       free(orig);
+       strbuf_release(&payload);
+       strbuf_release(&signature);
 }
 
 static int build_tag_object(struct strbuf *buf, int sign, struct object_id *result)
@@ -564,7 +572,7 @@ int cmd_tag(int argc, const char **argv, const char *prefix)
 
        object_ref = argc == 2 ? argv[1] : "HEAD";
        if (argc > 2)
-               die(_("too many params"));
+               die(_("too many arguments"));
 
        if (get_oid(object_ref, &object))
                die(_("Failed to resolve '%s' as a valid ref."), object_ref);
index dd4a75e030d219dfb3e5e0eeb59683c14f02fdf0..4a70b17f8fb394c17f98bc8683e7b38f5bf975ba 100644 (file)
@@ -46,7 +46,7 @@ static struct obj_buffer *lookup_object_buffer(struct object *base)
 static void add_object_buffer(struct object *object, char *buffer, unsigned long size)
 {
        struct obj_buffer *obj;
-       obj = xcalloc(1, sizeof(struct obj_buffer));
+       CALLOC_ARRAY(obj, 1);
        obj->buffer = buffer;
        obj->size = size;
        if (add_decoration(&obj_decorate, object, obj))
@@ -187,7 +187,8 @@ static void write_cached_object(struct object *obj, struct obj_buffer *obj_buf)
  * that have reachability requirements and calls this function.
  * Verify its reachability and validity recursively and write it out.
  */
-static int check_object(struct object *obj, int type, void *data, struct fsck_options *options)
+static int check_object(struct object *obj, enum object_type type,
+                       void *data, struct fsck_options *options)
 {
        struct obj_buffer *obj_buf;
 
@@ -500,7 +501,7 @@ static void unpack_all(void)
 
        if (!quiet)
                progress = start_progress(_("Unpacking objects"), nr_objects);
-       obj_list = xcalloc(nr_objects, sizeof(*obj_list));
+       CALLOC_ARRAY(obj_list, nr_objects);
        for (i = 0; i < nr_objects; i++) {
                unpack_one(i);
                display_progress(progress, i + 1);
index 1cd5c2016e3f90f4f2da15bad4a1be7038db327b..87714534938189f8dc25ba112bb660ee5e7f60ee 100644 (file)
@@ -446,16 +446,18 @@ static void print_preparing_worktree_line(int detach,
 static const char *dwim_branch(const char *path, const char **new_branch)
 {
        int n;
+       int branch_exists;
        const char *s = worktree_basename(path, &n);
        const char *branchname = xstrndup(s, n);
        struct strbuf ref = STRBUF_INIT;
 
        UNLEAK(branchname);
-       if (!strbuf_check_branch_ref(&ref, branchname) &&
-           ref_exists(ref.buf)) {
-               strbuf_release(&ref);
+
+       branch_exists = !strbuf_check_branch_ref(&ref, branchname) &&
+                       ref_exists(ref.buf);
+       strbuf_release(&ref);
+       if (branch_exists)
                return branchname;
-       }
 
        *new_branch = branchname;
        if (guess_remote) {
index 583aacb9e36bded9047d5f18219637ba1613a612..6f3c97cd347b5989521c01d62b0dc01c67ebe355 100644 (file)
@@ -211,7 +211,7 @@ static int deflate_to_pack(struct bulk_checkin_state *state,
 
        /* Note: idx is non-NULL when we are writing */
        if ((flags & HASH_WRITE_OBJECT) != 0)
-               idx = xcalloc(1, sizeof(*idx));
+               CALLOC_ARRAY(idx, 1);
 
        already_hashed_to = 0;
 
index 2fb483d3c0838998677d53327100db7bc134e2f3..add1f077131768414301fedaa3fefa9fa9ddbb45 100644 (file)
@@ -564,7 +564,7 @@ static struct cache_tree *read_one(const char **buffer, unsigned long *size_p)
         * hence +2.
         */
        it->subtree_alloc = subtree_nr + 2;
-       it->down = xcalloc(it->subtree_alloc, sizeof(struct cache_tree_sub *));
+       CALLOC_ARRAY(it->down, it->subtree_alloc);
        for (i = 0; i < subtree_nr; i++) {
                /* read each subtree */
                struct cache_tree *sub;
diff --git a/cache.h b/cache.h
index d92814961405dc3d87d2d886ba0394552ca7bd0d..148d9ab5f185d8fd1934e4b24ac7dae9c85933ac 100644 (file)
--- a/cache.h
+++ b/cache.h
@@ -803,7 +803,7 @@ static inline int index_pos_to_insert_pos(uintmax_t pos)
 #define ADD_CACHE_OK_TO_ADD 1          /* Ok to add */
 #define ADD_CACHE_OK_TO_REPLACE 2      /* Ok to replace file/directory */
 #define ADD_CACHE_SKIP_DFCHECK 4       /* Ok to skip DF conflict checks */
-#define ADD_CACHE_JUST_APPEND 8                /* Append only; tree.c::read_tree() */
+#define ADD_CACHE_JUST_APPEND 8                /* Append only */
 #define ADD_CACHE_NEW_ONLY 16          /* Do not replace existing ones */
 #define ADD_CACHE_KEEP_CACHE_TREE 32   /* Do not invalidate cache-tree */
 #define ADD_CACHE_RENORMALIZE 64        /* Pass along HASH_RENORMALIZE */
@@ -1621,30 +1621,6 @@ const char *show_ident_date(const struct ident_split *id,
  */
 int ident_cmp(const struct ident_split *, const struct ident_split *);
 
-struct checkout {
-       struct index_state *istate;
-       const char *base_dir;
-       int base_dir_len;
-       struct delayed_checkout *delayed_checkout;
-       struct checkout_metadata meta;
-       unsigned force:1,
-                quiet:1,
-                not_new:1,
-                clone:1,
-                refresh_cache:1;
-};
-#define CHECKOUT_INIT { NULL, "" }
-
-#define TEMPORARY_FILENAME_LENGTH 25
-int checkout_entry(struct cache_entry *ce, const struct checkout *state, char *topath, int *nr_checkouts);
-void enable_delayed_checkout(struct checkout *state);
-int finish_delayed_checkout(struct checkout *state, int *nr_checkouts);
-/*
- * Unlink the last component and schedule the leading directories for
- * removal, such that empty directories get removed.
- */
-void unlink_entry(const struct cache_entry *ce);
-
 struct cache_def {
        struct strbuf path;
        int flags;
@@ -1659,8 +1635,9 @@ static inline void cache_def_clear(struct cache_def *cache)
 
 int has_symlink_leading_path(const char *name, int len);
 int threaded_has_symlink_leading_path(struct cache_def *, const char *, int);
-int check_leading_path(const char *name, int len);
+int check_leading_path(const char *name, int len, int warn_on_lstat_err);
 int has_dirs_only_path(const char *name, int len, int prefix_len);
+void invalidate_lstat_cache(void);
 void schedule_dir_for_removal(const char *name, int len);
 void remove_scheduled_dirs(void);
 
diff --git a/chunk-format.c b/chunk-format.c
new file mode 100644 (file)
index 0000000..da191e5
--- /dev/null
@@ -0,0 +1,179 @@
+#include "cache.h"
+#include "chunk-format.h"
+#include "csum-file.h"
+
+/*
+ * When writing a chunk-based file format, collect the chunks in
+ * an array of chunk_info structs. The size stores the _expected_
+ * amount of data that will be written by write_fn.
+ */
+struct chunk_info {
+       uint32_t id;
+       uint64_t size;
+       chunk_write_fn write_fn;
+
+       const void *start;
+};
+
+struct chunkfile {
+       struct hashfile *f;
+
+       struct chunk_info *chunks;
+       size_t chunks_nr;
+       size_t chunks_alloc;
+};
+
+struct chunkfile *init_chunkfile(struct hashfile *f)
+{
+       struct chunkfile *cf = xcalloc(1, sizeof(*cf));
+       cf->f = f;
+       return cf;
+}
+
+void free_chunkfile(struct chunkfile *cf)
+{
+       if (!cf)
+               return;
+       free(cf->chunks);
+       free(cf);
+}
+
+int get_num_chunks(struct chunkfile *cf)
+{
+       return cf->chunks_nr;
+}
+
+void add_chunk(struct chunkfile *cf,
+              uint32_t id,
+              size_t size,
+              chunk_write_fn fn)
+{
+       ALLOC_GROW(cf->chunks, cf->chunks_nr + 1, cf->chunks_alloc);
+
+       cf->chunks[cf->chunks_nr].id = id;
+       cf->chunks[cf->chunks_nr].write_fn = fn;
+       cf->chunks[cf->chunks_nr].size = size;
+       cf->chunks_nr++;
+}
+
+int write_chunkfile(struct chunkfile *cf, void *data)
+{
+       int i;
+       uint64_t cur_offset = hashfile_total(cf->f);
+
+       /* Add the table of contents to the current offset */
+       cur_offset += (cf->chunks_nr + 1) * CHUNK_TOC_ENTRY_SIZE;
+
+       for (i = 0; i < cf->chunks_nr; i++) {
+               hashwrite_be32(cf->f, cf->chunks[i].id);
+               hashwrite_be64(cf->f, cur_offset);
+
+               cur_offset += cf->chunks[i].size;
+       }
+
+       /* Trailing entry marks the end of the chunks */
+       hashwrite_be32(cf->f, 0);
+       hashwrite_be64(cf->f, cur_offset);
+
+       for (i = 0; i < cf->chunks_nr; i++) {
+               off_t start_offset = hashfile_total(cf->f);
+               int result = cf->chunks[i].write_fn(cf->f, data);
+
+               if (result)
+                       return result;
+
+               if (hashfile_total(cf->f) - start_offset != cf->chunks[i].size)
+                       BUG("expected to write %"PRId64" bytes to chunk %"PRIx32", but wrote %"PRId64" instead",
+                           cf->chunks[i].size, cf->chunks[i].id,
+                           hashfile_total(cf->f) - start_offset);
+       }
+
+       return 0;
+}
+
+int read_table_of_contents(struct chunkfile *cf,
+                          const unsigned char *mfile,
+                          size_t mfile_size,
+                          uint64_t toc_offset,
+                          int toc_length)
+{
+       int i;
+       uint32_t chunk_id;
+       const unsigned char *table_of_contents = mfile + toc_offset;
+
+       ALLOC_GROW(cf->chunks, toc_length, cf->chunks_alloc);
+
+       while (toc_length--) {
+               uint64_t chunk_offset, next_chunk_offset;
+
+               chunk_id = get_be32(table_of_contents);
+               chunk_offset = get_be64(table_of_contents + 4);
+
+               if (!chunk_id) {
+                       error(_("terminating chunk id appears earlier than expected"));
+                       return 1;
+               }
+
+               table_of_contents += CHUNK_TOC_ENTRY_SIZE;
+               next_chunk_offset = get_be64(table_of_contents + 4);
+
+               if (next_chunk_offset < chunk_offset ||
+                   next_chunk_offset > mfile_size - the_hash_algo->rawsz) {
+                       error(_("improper chunk offset(s) %"PRIx64" and %"PRIx64""),
+                             chunk_offset, next_chunk_offset);
+                       return -1;
+               }
+
+               for (i = 0; i < cf->chunks_nr; i++) {
+                       if (cf->chunks[i].id == chunk_id) {
+                               error(_("duplicate chunk ID %"PRIx32" found"),
+                                       chunk_id);
+                               return -1;
+                       }
+               }
+
+               cf->chunks[cf->chunks_nr].id = chunk_id;
+               cf->chunks[cf->chunks_nr].start = mfile + chunk_offset;
+               cf->chunks[cf->chunks_nr].size = next_chunk_offset - chunk_offset;
+               cf->chunks_nr++;
+       }
+
+       chunk_id = get_be32(table_of_contents);
+       if (chunk_id) {
+               error(_("final chunk has non-zero id %"PRIx32""), chunk_id);
+               return -1;
+       }
+
+       return 0;
+}
+
+static int pair_chunk_fn(const unsigned char *chunk_start,
+                        size_t chunk_size,
+                        void *data)
+{
+       const unsigned char **p = data;
+       *p = chunk_start;
+       return 0;
+}
+
+int pair_chunk(struct chunkfile *cf,
+              uint32_t chunk_id,
+              const unsigned char **p)
+{
+       return read_chunk(cf, chunk_id, pair_chunk_fn, p);
+}
+
+int read_chunk(struct chunkfile *cf,
+              uint32_t chunk_id,
+              chunk_read_fn fn,
+              void *data)
+{
+       int i;
+
+       for (i = 0; i < cf->chunks_nr; i++) {
+               if (cf->chunks[i].id == chunk_id)
+                       return fn(cf->chunks[i].start, cf->chunks[i].size, data);
+       }
+
+       return CHUNK_NOT_FOUND;
+}
diff --git a/chunk-format.h b/chunk-format.h
new file mode 100644 (file)
index 0000000..9ccbe00
--- /dev/null
@@ -0,0 +1,68 @@
+#ifndef CHUNK_FORMAT_H
+#define CHUNK_FORMAT_H
+
+#include "git-compat-util.h"
+
+struct hashfile;
+struct chunkfile;
+
+#define CHUNK_TOC_ENTRY_SIZE (sizeof(uint32_t) + sizeof(uint64_t))
+
+/*
+ * Initialize a 'struct chunkfile' for writing _or_ reading a file
+ * with the chunk format.
+ *
+ * If writing a file, supply a non-NULL 'struct hashfile *' that will
+ * be used to write.
+ *
+ * If reading a file, use a NULL 'struct hashfile *' and then call
+ * read_table_of_contents(). Supply the memory-mapped data to the
+ * pair_chunk() or read_chunk() methods, as appropriate.
+ *
+ * DO NOT MIX THESE MODES. Use different 'struct chunkfile' instances
+ * for reading and writing.
+ */
+struct chunkfile *init_chunkfile(struct hashfile *f);
+void free_chunkfile(struct chunkfile *cf);
+int get_num_chunks(struct chunkfile *cf);
+typedef int (*chunk_write_fn)(struct hashfile *f, void *data);
+void add_chunk(struct chunkfile *cf,
+              uint32_t id,
+              size_t size,
+              chunk_write_fn fn);
+int write_chunkfile(struct chunkfile *cf, void *data);
+
+int read_table_of_contents(struct chunkfile *cf,
+                          const unsigned char *mfile,
+                          size_t mfile_size,
+                          uint64_t toc_offset,
+                          int toc_length);
+
+#define CHUNK_NOT_FOUND (-2)
+
+/*
+ * Find 'chunk_id' in the given chunkfile and assign the
+ * given pointer to the position in the mmap'd file where
+ * that chunk begins.
+ *
+ * Returns CHUNK_NOT_FOUND if the chunk does not exist.
+ */
+int pair_chunk(struct chunkfile *cf,
+              uint32_t chunk_id,
+              const unsigned char **p);
+
+typedef int (*chunk_read_fn)(const unsigned char *chunk_start,
+                            size_t chunk_size, void *data);
+/*
+ * Find 'chunk_id' in the given chunkfile and call the
+ * given chunk_read_fn method with the information for
+ * that chunk.
+ *
+ * Returns CHUNK_NOT_FOUND if the chunk does not exist.
+ */
+int read_chunk(struct chunkfile *cf,
+              uint32_t chunk_id,
+              chunk_read_fn fn,
+              void *data);
+
+#endif
index 50e0b90073f13307f902286dd3bad560363d05f1..a66b5e8c75aec2e4a9ea80227a8b492c8efcdf8d 100755 (executable)
@@ -24,6 +24,7 @@ linux-gcc)
        export GIT_TEST_MULTI_PACK_INDEX=1
        export GIT_TEST_ADD_I_USE_BUILTIN=1
        export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=master
+       export GIT_TEST_WRITE_REV_INDEX=1
        make test
        ;;
 linux-clang)
index 9228aebc16b698886a712a1c1c7381176ca158c1..06635f91bc21a54a5e7bfa4355c2d8e4b536f257 100644 (file)
@@ -214,11 +214,11 @@ static struct lline *coalesce_lines(struct lline *base, int *lenbase,
         *   - Else if we have NEW, insert newend lline into base and
         *   consume newend
         */
-       lcs = xcalloc(st_add(origbaselen, 1), sizeof(int*));
-       directions = xcalloc(st_add(origbaselen, 1), sizeof(enum coalesce_direction*));
+       CALLOC_ARRAY(lcs, st_add(origbaselen, 1));
+       CALLOC_ARRAY(directions, st_add(origbaselen, 1));
        for (i = 0; i < origbaselen + 1; i++) {
-               lcs[i] = xcalloc(st_add(lennew, 1), sizeof(int));
-               directions[i] = xcalloc(st_add(lennew, 1), sizeof(enum coalesce_direction));
+               CALLOC_ARRAY(lcs[i], st_add(lennew, 1));
+               CALLOC_ARRAY(directions[i], st_add(lennew, 1));
                directions[i][0] = BASE;
        }
        for (j = 1; j < lennew + 1; j++)
@@ -398,8 +398,8 @@ static void consume_hunk(void *state_,
                state->lost_bucket = &state->sline[state->nb-1];
        }
        if (!state->sline[state->nb-1].p_lno)
-               state->sline[state->nb-1].p_lno =
-                       xcalloc(state->num_parent, sizeof(unsigned long));
+               CALLOC_ARRAY(state->sline[state->nb - 1].p_lno,
+                            state->num_parent);
        state->sline[state->nb-1].p_lno[state->n] = state->ob;
 }
 
@@ -1159,7 +1159,7 @@ static void show_patch_diff(struct combine_diff_path *elem, int num_parent,
        if (result_size && result[result_size-1] != '\n')
                cnt++; /* incomplete line */
 
-       sline = xcalloc(st_add(cnt, 2), sizeof(*sline));
+       CALLOC_ARRAY(sline, st_add(cnt, 2));
        sline[0].bol = result;
        for (lno = 0, cp = result; cp < result + result_size; cp++) {
                if (*cp == '\n') {
@@ -1178,7 +1178,7 @@ static void show_patch_diff(struct combine_diff_path *elem, int num_parent,
        /* Even p_lno[cnt+1] is valid -- that is for the end line number
         * for deletion hunk at the end.
         */
-       sline[0].p_lno = xcalloc(st_mult(st_add(cnt, 2), num_parent), sizeof(unsigned long));
+       CALLOC_ARRAY(sline[0].p_lno, st_mult(st_add(cnt, 2), num_parent));
        for (lno = 0; lno <= cnt; lno++)
                sline[lno+1].p_lno = sline[lno].p_lno + num_parent;
 
@@ -1319,7 +1319,7 @@ static struct diff_filepair *combined_pair(struct combine_diff_path *p,
        struct diff_filespec *pool;
 
        pair = xmalloc(sizeof(*pair));
-       pool = xcalloc(st_add(num_parent, 1), sizeof(struct diff_filespec));
+       CALLOC_ARRAY(pool, st_add(num_parent, 1));
        pair->one = pool + 1;
        pair->two = pool;
 
@@ -1348,7 +1348,7 @@ static void handle_combined_callback(struct diff_options *opt,
        struct diff_queue_struct q;
        int i;
 
-       q.queue = xcalloc(num_paths, sizeof(struct diff_filepair *));
+       CALLOC_ARRAY(q.queue, num_paths);
        q.alloc = num_paths;
        q.nr = num_paths;
        for (i = 0, p = paths; p; p = p->next)
index 65410602714e642922bc5f6060b4b085db8464a5..f18380b922c12208cbceae92fce98e2e6b42e6ed 100644 (file)
@@ -19,6 +19,7 @@
 #include "shallow.h"
 #include "json-writer.h"
 #include "trace2.h"
+#include "chunk-format.h"
 
 void git_test_write_commit_graph_or_die(void)
 {
@@ -38,11 +39,12 @@ void git_test_write_commit_graph_or_die(void)
 #define GRAPH_CHUNKID_OIDFANOUT 0x4f494446 /* "OIDF" */
 #define GRAPH_CHUNKID_OIDLOOKUP 0x4f49444c /* "OIDL" */
 #define GRAPH_CHUNKID_DATA 0x43444154 /* "CDAT" */
+#define GRAPH_CHUNKID_GENERATION_DATA 0x47444154 /* "GDAT" */
+#define GRAPH_CHUNKID_GENERATION_DATA_OVERFLOW 0x47444f56 /* "GDOV" */
 #define GRAPH_CHUNKID_EXTRAEDGES 0x45444745 /* "EDGE" */
 #define GRAPH_CHUNKID_BLOOMINDEXES 0x42494458 /* "BIDX" */
 #define GRAPH_CHUNKID_BLOOMDATA 0x42444154 /* "BDAT" */
 #define GRAPH_CHUNKID_BASE 0x42415345 /* "BASE" */
-#define MAX_NUM_CHUNKS 7
 
 #define GRAPH_DATA_WIDTH (the_hash_algo->rawsz + 16)
 
@@ -57,13 +59,16 @@ void git_test_write_commit_graph_or_die(void)
 
 #define GRAPH_HEADER_SIZE 8
 #define GRAPH_FANOUT_SIZE (4 * 256)
-#define GRAPH_CHUNKLOOKUP_WIDTH 12
-#define GRAPH_MIN_SIZE (GRAPH_HEADER_SIZE + 4 * GRAPH_CHUNKLOOKUP_WIDTH \
+#define GRAPH_MIN_SIZE (GRAPH_HEADER_SIZE + 4 * CHUNK_TOC_ENTRY_SIZE \
                        + GRAPH_FANOUT_SIZE + the_hash_algo->rawsz)
 
+#define CORRECTED_COMMIT_DATE_OFFSET_OVERFLOW (1ULL << 31)
+
 /* Remember to update object flag allocation in object.h */
 #define REACHABLE       (1u<<15)
 
+define_commit_slab(topo_level_slab, uint32_t);
+
 /* Keep track of the order in which commits are added to our list. */
 define_commit_slab(commit_pos, int);
 static struct commit_pos commit_pos = COMMIT_SLAB_INIT(1, commit_pos);
@@ -91,6 +96,13 @@ define_commit_slab(commit_graph_data_slab, struct commit_graph_data);
 static struct commit_graph_data_slab commit_graph_data_slab =
        COMMIT_SLAB_INIT(1, commit_graph_data_slab);
 
+static int get_configured_generation_version(struct repository *r)
+{
+       int version = 2;
+       repo_config_get_int(r, "commitgraph.generationversion", &version);
+       return version;
+}
+
 uint32_t commit_graph_position(const struct commit *c)
 {
        struct commit_graph_data *data =
@@ -99,7 +111,7 @@ uint32_t commit_graph_position(const struct commit *c)
        return data ? data->graph_pos : COMMIT_NOT_FROM_GRAPH;
 }
 
-uint32_t commit_graph_generation(const struct commit *c)
+timestamp_t commit_graph_generation(const struct commit *c)
 {
        struct commit_graph_data *data =
                commit_graph_data_slab_peek(&commit_graph_data_slab, c);
@@ -139,13 +151,17 @@ static struct commit_graph_data *commit_graph_data_at(const struct commit *c)
        return data;
 }
 
+/*
+ * Should be used only while writing commit-graph as it compares
+ * generation value of commits by directly accessing commit-slab.
+ */
 static int commit_gen_cmp(const void *va, const void *vb)
 {
        const struct commit *a = *(const struct commit **)va;
        const struct commit *b = *(const struct commit **)vb;
 
-       uint32_t generation_a = commit_graph_generation(a);
-       uint32_t generation_b = commit_graph_generation(b);
+       const timestamp_t generation_a = commit_graph_data_at(a)->generation;
+       const timestamp_t generation_b = commit_graph_data_at(b)->generation;
        /* lower generation commits first */
        if (generation_a < generation_b)
                return -1;
@@ -288,15 +304,43 @@ static int verify_commit_graph_lite(struct commit_graph *g)
        return 0;
 }
 
+static int graph_read_oid_lookup(const unsigned char *chunk_start,
+                                size_t chunk_size, void *data)
+{
+       struct commit_graph *g = data;
+       g->chunk_oid_lookup = chunk_start;
+       g->num_commits = chunk_size / g->hash_len;
+       return 0;
+}
+
+static int graph_read_bloom_data(const unsigned char *chunk_start,
+                                 size_t chunk_size, void *data)
+{
+       struct commit_graph *g = data;
+       uint32_t hash_version;
+       g->chunk_bloom_data = chunk_start;
+       hash_version = get_be32(chunk_start);
+
+       if (hash_version != 1)
+               return 0;
+
+       g->bloom_filter_settings = xmalloc(sizeof(struct bloom_filter_settings));
+       g->bloom_filter_settings->hash_version = hash_version;
+       g->bloom_filter_settings->num_hashes = get_be32(chunk_start + 4);
+       g->bloom_filter_settings->bits_per_entry = get_be32(chunk_start + 8);
+       g->bloom_filter_settings->max_changed_paths = DEFAULT_BLOOM_MAX_CHANGES;
+
+       return 0;
+}
+
 struct commit_graph *parse_commit_graph(struct repository *r,
                                        void *graph_map, size_t graph_size)
 {
-       const unsigned char *data, *chunk_lookup;
-       uint32_t i;
+       const unsigned char *data;
        struct commit_graph *graph;
-       uint64_t next_chunk_offset;
        uint32_t graph_signature;
        unsigned char graph_version, hash_version;
+       struct chunkfile *cf = NULL;
 
        if (!graph_map)
                return NULL;
@@ -337,7 +381,7 @@ struct commit_graph *parse_commit_graph(struct repository *r,
        graph->data_len = graph_size;
 
        if (graph_size < GRAPH_HEADER_SIZE +
-                        (graph->num_chunks + 1) * GRAPH_CHUNKLOOKUP_WIDTH +
+                        (graph->num_chunks + 1) * CHUNK_TOC_ENTRY_SIZE +
                         GRAPH_FANOUT_SIZE + the_hash_algo->rawsz) {
                error(_("commit-graph file is too small to hold %u chunks"),
                      graph->num_chunks);
@@ -345,94 +389,31 @@ struct commit_graph *parse_commit_graph(struct repository *r,
                return NULL;
        }
 
-       chunk_lookup = data + 8;
-       next_chunk_offset = get_be64(chunk_lookup + 4);
-       for (i = 0; i < graph->num_chunks; i++) {
-               uint32_t chunk_id;
-               uint64_t chunk_offset = next_chunk_offset;
-               int chunk_repeated = 0;
-
-               chunk_id = get_be32(chunk_lookup + 0);
-
-               chunk_lookup += GRAPH_CHUNKLOOKUP_WIDTH;
-               next_chunk_offset = get_be64(chunk_lookup + 4);
+       cf = init_chunkfile(NULL);
 
-               if (chunk_offset > graph_size - the_hash_algo->rawsz) {
-                       error(_("commit-graph improper chunk offset %08x%08x"), (uint32_t)(chunk_offset >> 32),
-                             (uint32_t)chunk_offset);
-                       goto free_and_return;
-               }
-
-               switch (chunk_id) {
-               case GRAPH_CHUNKID_OIDFANOUT:
-                       if (graph->chunk_oid_fanout)
-                               chunk_repeated = 1;
-                       else
-                               graph->chunk_oid_fanout = (uint32_t*)(data + chunk_offset);
-                       break;
-
-               case GRAPH_CHUNKID_OIDLOOKUP:
-                       if (graph->chunk_oid_lookup)
-                               chunk_repeated = 1;
-                       else {
-                               graph->chunk_oid_lookup = data + chunk_offset;
-                               graph->num_commits = (next_chunk_offset - chunk_offset)
-                                                    / graph->hash_len;
-                       }
-                       break;
-
-               case GRAPH_CHUNKID_DATA:
-                       if (graph->chunk_commit_data)
-                               chunk_repeated = 1;
-                       else
-                               graph->chunk_commit_data = data + chunk_offset;
-                       break;
-
-               case GRAPH_CHUNKID_EXTRAEDGES:
-                       if (graph->chunk_extra_edges)
-                               chunk_repeated = 1;
-                       else
-                               graph->chunk_extra_edges = data + chunk_offset;
-                       break;
-
-               case GRAPH_CHUNKID_BASE:
-                       if (graph->chunk_base_graphs)
-                               chunk_repeated = 1;
-                       else
-                               graph->chunk_base_graphs = data + chunk_offset;
-                       break;
-
-               case GRAPH_CHUNKID_BLOOMINDEXES:
-                       if (graph->chunk_bloom_indexes)
-                               chunk_repeated = 1;
-                       else if (r->settings.commit_graph_read_changed_paths)
-                               graph->chunk_bloom_indexes = data + chunk_offset;
-                       break;
-
-               case GRAPH_CHUNKID_BLOOMDATA:
-                       if (graph->chunk_bloom_data)
-                               chunk_repeated = 1;
-                       else if (r->settings.commit_graph_read_changed_paths) {
-                               uint32_t hash_version;
-                               graph->chunk_bloom_data = data + chunk_offset;
-                               hash_version = get_be32(data + chunk_offset);
+       if (read_table_of_contents(cf, graph->data, graph_size,
+                                  GRAPH_HEADER_SIZE, graph->num_chunks))
+               goto free_and_return;
 
-                               if (hash_version != 1)
-                                       break;
+       pair_chunk(cf, GRAPH_CHUNKID_OIDFANOUT,
+                  (const unsigned char **)&graph->chunk_oid_fanout);
+       read_chunk(cf, GRAPH_CHUNKID_OIDLOOKUP, graph_read_oid_lookup, graph);
+       pair_chunk(cf, GRAPH_CHUNKID_DATA, &graph->chunk_commit_data);
+       pair_chunk(cf, GRAPH_CHUNKID_EXTRAEDGES, &graph->chunk_extra_edges);
+       pair_chunk(cf, GRAPH_CHUNKID_BASE, &graph->chunk_base_graphs);
 
-                               graph->bloom_filter_settings = xmalloc(sizeof(struct bloom_filter_settings));
-                               graph->bloom_filter_settings->hash_version = hash_version;
-                               graph->bloom_filter_settings->num_hashes = get_be32(data + chunk_offset + 4);
-                               graph->bloom_filter_settings->bits_per_entry = get_be32(data + chunk_offset + 8);
-                               graph->bloom_filter_settings->max_changed_paths = DEFAULT_BLOOM_MAX_CHANGES;
-                       }
-                       break;
-               }
+       if (get_configured_generation_version(r) >= 2) {
+               pair_chunk(cf, GRAPH_CHUNKID_GENERATION_DATA,
+                       &graph->chunk_generation_data);
+               pair_chunk(cf, GRAPH_CHUNKID_GENERATION_DATA_OVERFLOW,
+                       &graph->chunk_generation_data_overflow);
+       }
 
-               if (chunk_repeated) {
-                       error(_("commit-graph chunk id %08x appears multiple times"), chunk_id);
-                       goto free_and_return;
-               }
+       if (r->settings.commit_graph_read_changed_paths) {
+               pair_chunk(cf, GRAPH_CHUNKID_BLOOMINDEXES,
+                          &graph->chunk_bloom_indexes);
+               read_chunk(cf, GRAPH_CHUNKID_BLOOMDATA,
+                          graph_read_bloom_data, graph);
        }
 
        if (graph->chunk_bloom_indexes && graph->chunk_bloom_data) {
@@ -449,9 +430,11 @@ struct commit_graph *parse_commit_graph(struct repository *r,
        if (verify_commit_graph_lite(graph))
                goto free_and_return;
 
+       free_chunkfile(cf);
        return graph;
 
 free_and_return:
+       free_chunkfile(cf);
        free(graph->bloom_filter_settings);
        free(graph);
        return NULL;
@@ -543,7 +526,7 @@ static struct commit_graph *load_commit_graph_chain(struct repository *r,
                return NULL;
 
        count = st.st_size / (the_hash_algo->hexsz + 1);
-       oids = xcalloc(count, sizeof(struct object_id));
+       CALLOC_ARRAY(oids, count);
 
        prepare_alt_odb(r);
 
@@ -590,6 +573,31 @@ static struct commit_graph *load_commit_graph_chain(struct repository *r,
        return graph_chain;
 }
 
+/*
+ * returns 1 if and only if all graphs in the chain have
+ * corrected commit dates stored in the generation_data chunk.
+ */
+static int validate_mixed_generation_chain(struct commit_graph *g)
+{
+       int read_generation_data = 1;
+       struct commit_graph *p = g;
+
+       while (read_generation_data && p) {
+               read_generation_data = p->read_generation_data;
+               p = p->base_graph;
+       }
+
+       if (read_generation_data)
+               return 1;
+
+       while (g) {
+               g->read_generation_data = 0;
+               g = g->base_graph;
+       }
+
+       return 0;
+}
+
 struct commit_graph *read_commit_graph_one(struct repository *r,
                                           struct object_directory *odb)
 {
@@ -598,6 +606,8 @@ struct commit_graph *read_commit_graph_one(struct repository *r,
        if (!g)
                g = load_commit_graph_chain(r, odb);
 
+       validate_mixed_generation_chain(g);
+
        return g;
 }
 
@@ -673,6 +683,20 @@ int generation_numbers_enabled(struct repository *r)
        return !!first_generation;
 }
 
+int corrected_commit_dates_enabled(struct repository *r)
+{
+       struct commit_graph *g;
+       if (!prepare_commit_graph(r))
+               return 0;
+
+       g = r->objects->commit_graph;
+
+       if (!g->num_commits)
+               return 0;
+
+       return g->read_generation_data;
+}
+
 struct bloom_filter_settings *get_bloom_filter_settings(struct repository *r)
 {
        struct commit_graph *g = r->objects->commit_graph;
@@ -748,17 +772,41 @@ static void fill_commit_graph_info(struct commit *item, struct commit_graph *g,
 {
        const unsigned char *commit_data;
        struct commit_graph_data *graph_data;
-       uint32_t lex_index;
+       uint32_t lex_index, offset_pos;
+       uint64_t date_high, date_low, offset;
 
        while (pos < g->num_commits_in_base)
                g = g->base_graph;
 
+       if (pos >= g->num_commits + g->num_commits_in_base)
+               die(_("invalid commit position. commit-graph is likely corrupt"));
+
        lex_index = pos - g->num_commits_in_base;
        commit_data = g->chunk_commit_data + GRAPH_DATA_WIDTH * lex_index;
 
        graph_data = commit_graph_data_at(item);
        graph_data->graph_pos = pos;
-       graph_data->generation = get_be32(commit_data + g->hash_len + 8) >> 2;
+
+       date_high = get_be32(commit_data + g->hash_len + 8) & 0x3;
+       date_low = get_be32(commit_data + g->hash_len + 12);
+       item->date = (timestamp_t)((date_high << 32) | date_low);
+
+       if (g->read_generation_data) {
+               offset = (timestamp_t)get_be32(g->chunk_generation_data + sizeof(uint32_t) * lex_index);
+
+               if (offset & CORRECTED_COMMIT_DATE_OFFSET_OVERFLOW) {
+                       if (!g->chunk_generation_data_overflow)
+                               die(_("commit-graph requires overflow generation data but has none"));
+
+                       offset_pos = offset ^ CORRECTED_COMMIT_DATE_OFFSET_OVERFLOW;
+                       graph_data->generation = get_be64(g->chunk_generation_data_overflow + 8 * offset_pos);
+               } else
+                       graph_data->generation = item->date + offset;
+       } else
+               graph_data->generation = get_be32(commit_data + g->hash_len + 8) >> 2;
+
+       if (g->topo_levels)
+               *topo_level_slab_at(g->topo_levels, item) = get_be32(commit_data + g->hash_len + 8) >> 2;
 }
 
 static inline void set_commit_tree(struct commit *c, struct tree *t)
@@ -772,38 +820,22 @@ static int fill_commit_in_graph(struct repository *r,
 {
        uint32_t edge_value;
        uint32_t *parent_data_ptr;
-       uint64_t date_low, date_high;
        struct commit_list **pptr;
-       struct commit_graph_data *graph_data;
        const unsigned char *commit_data;
        uint32_t lex_index;
 
        while (pos < g->num_commits_in_base)
                g = g->base_graph;
 
-       if (pos >= g->num_commits + g->num_commits_in_base)
-               die(_("invalid commit position. commit-graph is likely corrupt"));
+       fill_commit_graph_info(item, g, pos);
 
-       /*
-        * Store the "full" position, but then use the
-        * "local" position for the rest of the calculation.
-        */
-       graph_data = commit_graph_data_at(item);
-       graph_data->graph_pos = pos;
        lex_index = pos - g->num_commits_in_base;
-
        commit_data = g->chunk_commit_data + (g->hash_len + 16) * lex_index;
 
        item->object.parsed = 1;
 
        set_commit_tree(item, NULL);
 
-       date_high = get_be32(commit_data + g->hash_len + 8) & 0x3;
-       date_low = get_be32(commit_data + g->hash_len + 12);
-       item->date = (timestamp_t)((date_high << 32) | date_low);
-
-       graph_data->generation = get_be32(commit_data + g->hash_len + 8) >> 2;
-
        pptr = &item->parents;
 
        edge_value = get_be32(commit_data + g->hash_len);
@@ -943,6 +975,7 @@ struct write_commit_graph_context {
        struct oid_array oids;
        struct packed_commit_list commits;
        int num_extra_edges;
+       int num_generation_data_overflows;
        unsigned long approx_nr_objects;
        struct progress *progress;
        int progress_done;
@@ -961,8 +994,11 @@ struct write_commit_graph_context {
                 report_progress:1,
                 split:1,
                 changed_paths:1,
-                order_by_pack:1;
+                order_by_pack:1,
+                write_generation_data:1,
+                trust_generation_numbers:1;
 
+       struct topo_level_slab *topo_levels;
        const struct commit_graph_opts *opts;
        size_t total_bloom_filter_data_size;
        const struct bloom_filter_settings *bloom_settings;
@@ -974,8 +1010,9 @@ struct write_commit_graph_context {
 };
 
 static int write_graph_chunk_fanout(struct hashfile *f,
-                                   struct write_commit_graph_context *ctx)
+                                   void *data)
 {
+       struct write_commit_graph_context *ctx = data;
        int i, count = 0;
        struct commit **list = ctx->commits.list;
 
@@ -1000,8 +1037,9 @@ static int write_graph_chunk_fanout(struct hashfile *f,
 }
 
 static int write_graph_chunk_oids(struct hashfile *f,
-                                 struct write_commit_graph_context *ctx)
+                                 void *data)
 {
+       struct write_commit_graph_context *ctx = data;
        struct commit **list = ctx->commits.list;
        int count;
        for (count = 0; count < ctx->commits.nr; count++, list++) {
@@ -1019,8 +1057,9 @@ static const struct object_id *commit_to_oid(size_t index, const void *table)
 }
 
 static int write_graph_chunk_data(struct hashfile *f,
-                                 struct write_commit_graph_context *ctx)
+                                 void *data)
 {
+       struct write_commit_graph_context *ctx = data;
        struct commit **list = ctx->commits.list;
        struct commit **last = ctx->commits.list + ctx->commits.nr;
        uint32_t num_extra_edges = 0;
@@ -1032,7 +1071,7 @@ static int write_graph_chunk_data(struct hashfile *f,
                uint32_t packedDate[2];
                display_progress(ctx->progress, ++ctx->progress_cnt);
 
-               if (parse_commit_no_graph(*list))
+               if (repo_parse_commit_no_graph(ctx->r, *list))
                        die(_("unable to parse commit %s"),
                                oid_to_hex(&(*list)->object.oid));
                tree = get_commit_tree_oid(*list);
@@ -1109,7 +1148,7 @@ static int write_graph_chunk_data(struct hashfile *f,
                else
                        packedDate[0] = 0;
 
-               packedDate[0] |= htonl(commit_graph_data_at(*list)->generation << 2);
+               packedDate[0] |= htonl(*topo_level_slab_at(ctx->topo_levels, *list) << 2);
 
                packedDate[1] = htonl((*list)->date);
                hashwrite(f, packedDate, 8);
@@ -1120,9 +1159,53 @@ static int write_graph_chunk_data(struct hashfile *f,
        return 0;
 }
 
+static int write_graph_chunk_generation_data(struct hashfile *f,
+                                            void *data)
+{
+       struct write_commit_graph_context *ctx = data;
+       int i, num_generation_data_overflows = 0;
+
+       for (i = 0; i < ctx->commits.nr; i++) {
+               struct commit *c = ctx->commits.list[i];
+               timestamp_t offset;
+               repo_parse_commit(ctx->r, c);
+               offset = commit_graph_data_at(c)->generation - c->date;
+               display_progress(ctx->progress, ++ctx->progress_cnt);
+
+               if (offset > GENERATION_NUMBER_V2_OFFSET_MAX) {
+                       offset = CORRECTED_COMMIT_DATE_OFFSET_OVERFLOW | num_generation_data_overflows;
+                       num_generation_data_overflows++;
+               }
+
+               hashwrite_be32(f, offset);
+       }
+
+       return 0;
+}
+
+static int write_graph_chunk_generation_data_overflow(struct hashfile *f,
+                                                     void *data)
+{
+       struct write_commit_graph_context *ctx = data;
+       int i;
+       for (i = 0; i < ctx->commits.nr; i++) {
+               struct commit *c = ctx->commits.list[i];
+               timestamp_t offset = commit_graph_data_at(c)->generation - c->date;
+               display_progress(ctx->progress, ++ctx->progress_cnt);
+
+               if (offset > GENERATION_NUMBER_V2_OFFSET_MAX) {
+                       hashwrite_be32(f, offset >> 32);
+                       hashwrite_be32(f, (uint32_t) offset);
+               }
+       }
+
+       return 0;
+}
+
 static int write_graph_chunk_extra_edges(struct hashfile *f,
-                                        struct write_commit_graph_context *ctx)
+                                        void *data)
 {
+       struct write_commit_graph_context *ctx = data;
        struct commit **list = ctx->commits.list;
        struct commit **last = ctx->commits.list + ctx->commits.nr;
        struct commit_list *parent;
@@ -1175,8 +1258,9 @@ static int write_graph_chunk_extra_edges(struct hashfile *f,
 }
 
 static int write_graph_chunk_bloom_indexes(struct hashfile *f,
-                                          struct write_commit_graph_context *ctx)
+                                          void *data)
 {
+       struct write_commit_graph_context *ctx = data;
        struct commit **list = ctx->commits.list;
        struct commit **last = ctx->commits.list + ctx->commits.nr;
        uint32_t cur_pos = 0;
@@ -1210,8 +1294,9 @@ static void trace2_bloom_filter_settings(struct write_commit_graph_context *ctx)
 }
 
 static int write_graph_chunk_bloom_data(struct hashfile *f,
-                                       struct write_commit_graph_context *ctx)
+                                       void *data)
 {
+       struct write_commit_graph_context *ctx = data;
        struct commit **list = ctx->commits.list;
        struct commit **last = ctx->commits.list + ctx->commits.nr;
 
@@ -1306,11 +1391,11 @@ static void close_reachable(struct write_commit_graph_context *ctx)
                if (!commit)
                        continue;
                if (ctx->split) {
-                       if ((!parse_commit(commit) &&
+                       if ((!repo_parse_commit(ctx->r, commit) &&
                             commit_graph_position(commit) == COMMIT_NOT_FROM_GRAPH) ||
                            flags == COMMIT_GRAPH_SPLIT_REPLACE)
                                add_missing_parents(ctx, commit);
-               } else if (!parse_commit_no_graph(commit))
+               } else if (!repo_parse_commit_no_graph(ctx->r, commit))
                        add_missing_parents(ctx, commit);
        }
        stop_progress(&ctx->progress);
@@ -1329,6 +1414,59 @@ static void close_reachable(struct write_commit_graph_context *ctx)
        stop_progress(&ctx->progress);
 }
 
+static void compute_topological_levels(struct write_commit_graph_context *ctx)
+{
+       int i;
+       struct commit_list *list = NULL;
+
+       if (ctx->report_progress)
+               ctx->progress = start_delayed_progress(
+                                       _("Computing commit graph topological levels"),
+                                       ctx->commits.nr);
+       for (i = 0; i < ctx->commits.nr; i++) {
+               struct commit *c = ctx->commits.list[i];
+               uint32_t level;
+
+               repo_parse_commit(ctx->r, c);
+               level = *topo_level_slab_at(ctx->topo_levels, c);
+
+               display_progress(ctx->progress, i + 1);
+               if (level != GENERATION_NUMBER_ZERO)
+                       continue;
+
+               commit_list_insert(c, &list);
+               while (list) {
+                       struct commit *current = list->item;
+                       struct commit_list *parent;
+                       int all_parents_computed = 1;
+                       uint32_t max_level = 0;
+
+                       for (parent = current->parents; parent; parent = parent->next) {
+                               repo_parse_commit(ctx->r, parent->item);
+                               level = *topo_level_slab_at(ctx->topo_levels, parent->item);
+
+                               if (level == GENERATION_NUMBER_ZERO) {
+                                       all_parents_computed = 0;
+                                       commit_list_insert(parent->item, &list);
+                                       break;
+                               }
+
+                               if (level > max_level)
+                                       max_level = level;
+                       }
+
+                       if (all_parents_computed) {
+                               pop_commit(&list);
+
+                               if (max_level > GENERATION_NUMBER_V1_MAX - 1)
+                                       max_level = GENERATION_NUMBER_V1_MAX - 1;
+                               *topo_level_slab_at(ctx->topo_levels, current) = max_level + 1;
+                       }
+               }
+       }
+       stop_progress(&ctx->progress);
+}
+
 static void compute_generation_numbers(struct write_commit_graph_context *ctx)
 {
        int i;
@@ -1338,42 +1476,56 @@ static void compute_generation_numbers(struct write_commit_graph_context *ctx)
                ctx->progress = start_delayed_progress(
                                        _("Computing commit graph generation numbers"),
                                        ctx->commits.nr);
+
+       if (!ctx->trust_generation_numbers) {
+               for (i = 0; i < ctx->commits.nr; i++) {
+                       struct commit *c = ctx->commits.list[i];
+                       repo_parse_commit(ctx->r, c);
+                       commit_graph_data_at(c)->generation = GENERATION_NUMBER_ZERO;
+               }
+       }
+
        for (i = 0; i < ctx->commits.nr; i++) {
-               uint32_t generation = commit_graph_data_at(ctx->commits.list[i])->generation;
+               struct commit *c = ctx->commits.list[i];
+               timestamp_t corrected_commit_date;
+
+               repo_parse_commit(ctx->r, c);
+               corrected_commit_date = commit_graph_data_at(c)->generation;
 
                display_progress(ctx->progress, i + 1);
-               if (generation != GENERATION_NUMBER_INFINITY &&
-                   generation != GENERATION_NUMBER_ZERO)
+               if (corrected_commit_date != GENERATION_NUMBER_ZERO)
                        continue;
 
-               commit_list_insert(ctx->commits.list[i], &list);
+               commit_list_insert(c, &list);
                while (list) {
                        struct commit *current = list->item;
                        struct commit_list *parent;
                        int all_parents_computed = 1;
-                       uint32_t max_generation = 0;
+                       timestamp_t max_corrected_commit_date = 0;
 
                        for (parent = current->parents; parent; parent = parent->next) {
-                               generation = commit_graph_data_at(parent->item)->generation;
+                               repo_parse_commit(ctx->r, parent->item);
+                               corrected_commit_date = commit_graph_data_at(parent->item)->generation;
 
-                               if (generation == GENERATION_NUMBER_INFINITY ||
-                                   generation == GENERATION_NUMBER_ZERO) {
+                               if (corrected_commit_date == GENERATION_NUMBER_ZERO) {
                                        all_parents_computed = 0;
                                        commit_list_insert(parent->item, &list);
                                        break;
-                               } else if (generation > max_generation) {
-                                       max_generation = generation;
                                }
+
+                               if (corrected_commit_date > max_corrected_commit_date)
+                                       max_corrected_commit_date = corrected_commit_date;
                        }
 
                        if (all_parents_computed) {
-                               struct commit_graph_data *data = commit_graph_data_at(current);
-
-                               data->generation = max_generation + 1;
                                pop_commit(&list);
 
-                               if (data->generation > GENERATION_NUMBER_MAX)
-                                       data->generation = GENERATION_NUMBER_MAX;
+                               if (current->date && current->date > max_corrected_commit_date)
+                                       max_corrected_commit_date = current->date - 1;
+                               commit_graph_data_at(current)->generation = max_corrected_commit_date + 1;
+
+                               if (commit_graph_data_at(current)->generation - current->date > GENERATION_NUMBER_V2_OFFSET_MAX)
+                                       ctx->num_generation_data_overflows++;
                        }
                }
        }
@@ -1593,9 +1745,9 @@ static void copy_oids_to_commits(struct write_commit_graph_context *ctx)
                        continue;
 
                if (ctx->split && flags == COMMIT_GRAPH_SPLIT_REPLACE)
-                       parse_commit(ctx->commits.list[ctx->commits.nr]);
+                       repo_parse_commit(ctx->r, ctx->commits.list[ctx->commits.nr]);
                else
-                       parse_commit_no_graph(ctx->commits.list[ctx->commits.nr]);
+                       repo_parse_commit_no_graph(ctx->r, ctx->commits.list[ctx->commits.nr]);
 
                num_parents = commit_list_count(ctx->commits.list[ctx->commits.nr]->parents);
                if (num_parents > 2)
@@ -1620,8 +1772,9 @@ static int write_graph_chunk_base_1(struct hashfile *f,
 }
 
 static int write_graph_chunk_base(struct hashfile *f,
-                                 struct write_commit_graph_context *ctx)
+                                   void *data)
 {
+       struct write_commit_graph_context *ctx = data;
        int num = write_graph_chunk_base_1(f, ctx->new_base_graph);
 
        if (num != ctx->num_commit_graphs_after - 1) {
@@ -1632,27 +1785,16 @@ static int write_graph_chunk_base(struct hashfile *f,
        return 0;
 }
 
-typedef int (*chunk_write_fn)(struct hashfile *f,
-                             struct write_commit_graph_context *ctx);
-
-struct chunk_info {
-       uint32_t id;
-       uint64_t size;
-       chunk_write_fn write_fn;
-};
-
 static int write_commit_graph_file(struct write_commit_graph_context *ctx)
 {
        uint32_t i;
        int fd;
        struct hashfile *f;
        struct lock_file lk = LOCK_INIT;
-       struct chunk_info chunks[MAX_NUM_CHUNKS + 1];
        const unsigned hashsz = the_hash_algo->rawsz;
        struct strbuf progress_title = STRBUF_INIT;
-       int num_chunks = 3;
-       uint64_t chunk_offset;
        struct object_id file_hash;
+       struct chunkfile *cf;
 
        if (ctx->split) {
                struct strbuf tmp_file = STRBUF_INIT;
@@ -1698,83 +1840,60 @@ static int write_commit_graph_file(struct write_commit_graph_context *ctx)
                f = hashfd(fd, get_lock_file_path(&lk));
        }
 
-       chunks[0].id = GRAPH_CHUNKID_OIDFANOUT;
-       chunks[0].size = GRAPH_FANOUT_SIZE;
-       chunks[0].write_fn = write_graph_chunk_fanout;
-       chunks[1].id = GRAPH_CHUNKID_OIDLOOKUP;
-       chunks[1].size = hashsz * ctx->commits.nr;
-       chunks[1].write_fn = write_graph_chunk_oids;
-       chunks[2].id = GRAPH_CHUNKID_DATA;
-       chunks[2].size = (hashsz + 16) * ctx->commits.nr;
-       chunks[2].write_fn = write_graph_chunk_data;
-       if (ctx->num_extra_edges) {
-               chunks[num_chunks].id = GRAPH_CHUNKID_EXTRAEDGES;
-               chunks[num_chunks].size = 4 * ctx->num_extra_edges;
-               chunks[num_chunks].write_fn = write_graph_chunk_extra_edges;
-               num_chunks++;
-       }
+       cf = init_chunkfile(f);
+
+       add_chunk(cf, GRAPH_CHUNKID_OIDFANOUT, GRAPH_FANOUT_SIZE,
+                 write_graph_chunk_fanout);
+       add_chunk(cf, GRAPH_CHUNKID_OIDLOOKUP, hashsz * ctx->commits.nr,
+                 write_graph_chunk_oids);
+       add_chunk(cf, GRAPH_CHUNKID_DATA, (hashsz + 16) * ctx->commits.nr,
+                 write_graph_chunk_data);
+
+       if (ctx->write_generation_data)
+               add_chunk(cf, GRAPH_CHUNKID_GENERATION_DATA,
+                         sizeof(uint32_t) * ctx->commits.nr,
+                         write_graph_chunk_generation_data);
+       if (ctx->num_generation_data_overflows)
+               add_chunk(cf, GRAPH_CHUNKID_GENERATION_DATA_OVERFLOW,
+                         sizeof(timestamp_t) * ctx->num_generation_data_overflows,
+                         write_graph_chunk_generation_data_overflow);
+       if (ctx->num_extra_edges)
+               add_chunk(cf, GRAPH_CHUNKID_EXTRAEDGES,
+                         4 * ctx->num_extra_edges,
+                         write_graph_chunk_extra_edges);
        if (ctx->changed_paths) {
-               chunks[num_chunks].id = GRAPH_CHUNKID_BLOOMINDEXES;
-               chunks[num_chunks].size = sizeof(uint32_t) * ctx->commits.nr;
-               chunks[num_chunks].write_fn = write_graph_chunk_bloom_indexes;
-               num_chunks++;
-               chunks[num_chunks].id = GRAPH_CHUNKID_BLOOMDATA;
-               chunks[num_chunks].size = sizeof(uint32_t) * 3
-                                         + ctx->total_bloom_filter_data_size;
-               chunks[num_chunks].write_fn = write_graph_chunk_bloom_data;
-               num_chunks++;
-       }
-       if (ctx->num_commit_graphs_after > 1) {
-               chunks[num_chunks].id = GRAPH_CHUNKID_BASE;
-               chunks[num_chunks].size = hashsz * (ctx->num_commit_graphs_after - 1);
-               chunks[num_chunks].write_fn = write_graph_chunk_base;
-               num_chunks++;
-       }
-
-       chunks[num_chunks].id = 0;
-       chunks[num_chunks].size = 0;
+               add_chunk(cf, GRAPH_CHUNKID_BLOOMINDEXES,
+                         sizeof(uint32_t) * ctx->commits.nr,
+                         write_graph_chunk_bloom_indexes);
+               add_chunk(cf, GRAPH_CHUNKID_BLOOMDATA,
+                         sizeof(uint32_t) * 3
+                               + ctx->total_bloom_filter_data_size,
+                         write_graph_chunk_bloom_data);
+       }
+       if (ctx->num_commit_graphs_after > 1)
+               add_chunk(cf, GRAPH_CHUNKID_BASE,
+                         hashsz * (ctx->num_commit_graphs_after - 1),
+                         write_graph_chunk_base);
 
        hashwrite_be32(f, GRAPH_SIGNATURE);
 
        hashwrite_u8(f, GRAPH_VERSION);
        hashwrite_u8(f, oid_version());
-       hashwrite_u8(f, num_chunks);
+       hashwrite_u8(f, get_num_chunks(cf));
        hashwrite_u8(f, ctx->num_commit_graphs_after - 1);
 
-       chunk_offset = 8 + (num_chunks + 1) * GRAPH_CHUNKLOOKUP_WIDTH;
-       for (i = 0; i <= num_chunks; i++) {
-               uint32_t chunk_write[3];
-
-               chunk_write[0] = htonl(chunks[i].id);
-               chunk_write[1] = htonl(chunk_offset >> 32);
-               chunk_write[2] = htonl(chunk_offset & 0xffffffff);
-               hashwrite(f, chunk_write, 12);
-
-               chunk_offset += chunks[i].size;
-       }
-
        if (ctx->report_progress) {
                strbuf_addf(&progress_title,
                            Q_("Writing out commit graph in %d pass",
                               "Writing out commit graph in %d passes",
-                              num_chunks),
-                           num_chunks);
+                              get_num_chunks(cf)),
+                           get_num_chunks(cf));
                ctx->progress = start_delayed_progress(
                        progress_title.buf,
-                       num_chunks * ctx->commits.nr);
+                       get_num_chunks(cf) * ctx->commits.nr);
        }
 
-       for (i = 0; i < num_chunks; i++) {
-               uint64_t start_offset = f->total + f->offset;
-
-               if (chunks[i].write_fn(f, ctx))
-                       return -1;
-
-               if (f->total + f->offset != start_offset + chunks[i].size)
-                       BUG("expected to write %"PRId64" bytes to chunk %"PRIx32", but wrote %"PRId64" instead",
-                           chunks[i].size, chunks[i].id,
-                           f->total + f->offset - start_offset);
-       }
+       write_chunkfile(cf, ctx);
 
        stop_progress(&ctx->progress);
        strbuf_release(&progress_title);
@@ -1791,6 +1910,7 @@ static int write_commit_graph_file(struct write_commit_graph_context *ctx)
 
        close_commit_graph(ctx->r->objects);
        finalize_hashfile(f, file_hash.hash, CSUM_HASH_IN_STREAM | CSUM_FSYNC);
+       free_chunkfile(cf);
 
        if (ctx->split) {
                FILE *chainf = fdopen_lock_file(&lk, "w");
@@ -1918,6 +2038,13 @@ static void split_graph_merge_strategy(struct write_commit_graph_context *ctx)
                if (i < ctx->num_commit_graphs_after)
                        ctx->commit_graph_hash_after[i] = xstrdup(oid_to_hex(&g->oid));
 
+               /*
+                * If the topmost remaining layer has generation data chunk, the
+                * resultant layer also has generation data chunk.
+                */
+               if (i == ctx->num_commit_graphs_after - 2)
+                       ctx->write_generation_data = !!g->chunk_generation_data;
+
                i--;
                g = g->base_graph;
        }
@@ -2104,28 +2231,32 @@ int write_commit_graph(struct object_directory *odb,
                       enum commit_graph_write_flags flags,
                       const struct commit_graph_opts *opts)
 {
+       struct repository *r = the_repository;
        struct write_commit_graph_context *ctx;
        uint32_t i;
        int res = 0;
        int replace = 0;
        struct bloom_filter_settings bloom_settings = DEFAULT_BLOOM_FILTER_SETTINGS;
+       struct topo_level_slab topo_levels;
 
-       prepare_repo_settings(the_repository);
-       if (!the_repository->settings.core_commit_graph) {
+       prepare_repo_settings(r);
+       if (!r->settings.core_commit_graph) {
                warning(_("attempting to write a commit-graph, but 'core.commitGraph' is disabled"));
                return 0;
        }
-       if (!commit_graph_compatible(the_repository))
+       if (!commit_graph_compatible(r))
                return 0;
 
-       ctx = xcalloc(1, sizeof(struct write_commit_graph_context));
-       ctx->r = the_repository;
+       CALLOC_ARRAY(ctx, 1);
+       ctx->r = r;
        ctx->odb = odb;
        ctx->append = flags & COMMIT_GRAPH_WRITE_APPEND ? 1 : 0;
        ctx->report_progress = flags & COMMIT_GRAPH_WRITE_PROGRESS ? 1 : 0;
        ctx->split = flags & COMMIT_GRAPH_WRITE_SPLIT ? 1 : 0;
        ctx->opts = opts;
        ctx->total_bloom_filter_data_size = 0;
+       ctx->write_generation_data = (get_configured_generation_version(r) == 2);
+       ctx->num_generation_data_overflows = 0;
 
        bloom_settings.bits_per_entry = git_env_ulong("GIT_TEST_BLOOM_SETTINGS_BITS_PER_ENTRY",
                                                      bloom_settings.bits_per_entry);
@@ -2135,11 +2266,23 @@ int write_commit_graph(struct object_directory *odb,
                                                         bloom_settings.max_changed_paths);
        ctx->bloom_settings = &bloom_settings;
 
+       init_topo_level_slab(&topo_levels);
+       ctx->topo_levels = &topo_levels;
+
+       prepare_commit_graph(ctx->r);
+       if (ctx->r->objects->commit_graph) {
+               struct commit_graph *g = ctx->r->objects->commit_graph;
+
+               while (g) {
+                       g->topo_levels = &topo_levels;
+                       g = g->base_graph;
+               }
+       }
+
        if (flags & COMMIT_GRAPH_WRITE_BLOOM_FILTERS)
                ctx->changed_paths = 1;
        if (!(flags & COMMIT_GRAPH_NO_WRITE_BLOOM_FILTERS)) {
                struct commit_graph *g;
-               prepare_commit_graph_one(ctx->r, ctx->odb);
 
                g = ctx->r->objects->commit_graph;
 
@@ -2151,10 +2294,7 @@ int write_commit_graph(struct object_directory *odb,
        }
 
        if (ctx->split) {
-               struct commit_graph *g;
-               prepare_commit_graph(ctx->r);
-
-               g = ctx->r->objects->commit_graph;
+               struct commit_graph *g = ctx->r->objects->commit_graph;
 
                while (g) {
                        ctx->num_commit_graphs_before++;
@@ -2178,9 +2318,6 @@ int write_commit_graph(struct object_directory *odb,
 
        ctx->approx_nr_objects = approximate_object_count();
 
-       if (ctx->append)
-               prepare_commit_graph_one(ctx->r, ctx->odb);
-
        if (ctx->append && ctx->r->objects->commit_graph) {
                struct commit_graph *g = ctx->r->objects->commit_graph;
                for (i = 0; i < g->num_commits; i++) {
@@ -2227,7 +2364,11 @@ int write_commit_graph(struct object_directory *odb,
        } else
                ctx->num_commit_graphs_after = 1;
 
-       compute_generation_numbers(ctx);
+       ctx->trust_generation_numbers = validate_mixed_generation_chain(ctx->r->objects->commit_graph);
+
+       compute_topological_levels(ctx);
+       if (ctx->write_generation_data)
+               compute_generation_numbers(ctx);
 
        if (ctx->changed_paths)
                compute_bloom_filters(ctx);
@@ -2243,6 +2384,7 @@ cleanup:
        free(ctx->graph_name);
        free(ctx->commits.list);
        oid_array_clear(&ctx->oids);
+       clear_topo_level_slab(&topo_levels);
 
        if (ctx->commit_graph_filenames_after) {
                for (i = 0; i < ctx->num_commit_graphs_after; i++) {
@@ -2355,8 +2497,8 @@ int verify_commit_graph(struct repository *r, struct commit_graph *g, int flags)
        for (i = 0; i < g->num_commits; i++) {
                struct commit *graph_commit, *odb_commit;
                struct commit_list *graph_parents, *odb_parents;
-               uint32_t max_generation = 0;
-               uint32_t generation;
+               timestamp_t max_generation = 0;
+               timestamp_t generation;
 
                display_progress(progress, i + 1);
                hashcpy(cur_oid.hash, g->chunk_oid_lookup + g->hash_len * i);
@@ -2420,16 +2562,17 @@ int verify_commit_graph(struct repository *r, struct commit_graph *g, int flags)
                        continue;
 
                /*
-                * If one of our parents has generation GENERATION_NUMBER_MAX, then
-                * our generation is also GENERATION_NUMBER_MAX. Decrement to avoid
-                * extra logic in the following condition.
+                * If we are using topological level and one of our parents has
+                * generation GENERATION_NUMBER_V1_MAX, then our generation is
+                * also GENERATION_NUMBER_V1_MAX. Decrement to avoid extra logic
+                * in the following condition.
                 */
-               if (max_generation == GENERATION_NUMBER_MAX)
+               if (!g->read_generation_data && max_generation == GENERATION_NUMBER_V1_MAX)
                        max_generation--;
 
                generation = commit_graph_generation(graph_commit);
-               if (generation != max_generation + 1)
-                       graph_report(_("commit-graph generation for commit %s is %u != %u"),
+               if (generation < max_generation + 1)
+                       graph_report(_("commit-graph generation for commit %s is %"PRItime" < %"PRItime),
                                     oid_to_hex(&cur_oid),
                                     generation,
                                     max_generation + 1);
index f8e92500c6e4bc004c9945b29d27da89319d0bd0..96c24fb5777de48ccb5d5144543b3c2ff6f7efae 100644 (file)
@@ -63,16 +63,20 @@ struct commit_graph {
        struct object_directory *odb;
 
        uint32_t num_commits_in_base;
+       unsigned int read_generation_data;
        struct commit_graph *base_graph;
 
        const uint32_t *chunk_oid_fanout;
        const unsigned char *chunk_oid_lookup;
        const unsigned char *chunk_commit_data;
+       const unsigned char *chunk_generation_data;
+       const unsigned char *chunk_generation_data_overflow;
        const unsigned char *chunk_extra_edges;
        const unsigned char *chunk_base_graphs;
        const unsigned char *chunk_bloom_indexes;
        const unsigned char *chunk_bloom_data;
 
+       struct topo_level_slab *topo_levels;
        struct bloom_filter_settings *bloom_filter_settings;
 };
 
@@ -90,6 +94,12 @@ struct commit_graph *parse_commit_graph(struct repository *r,
  */
 int generation_numbers_enabled(struct repository *r);
 
+/*
+ * Return 1 if and only if the repository has a commit-graph
+ * file and generation data chunk has been written for the file.
+ */
+int corrected_commit_dates_enabled(struct repository *r);
+
 struct bloom_filter_settings *get_bloom_filter_settings(struct repository *r);
 
 enum commit_graph_write_flags {
@@ -144,12 +154,12 @@ void disable_commit_graph(struct repository *r);
 
 struct commit_graph_data {
        uint32_t graph_pos;
-       uint32_t generation;
+       timestamp_t generation;
 };
 
 /*
  * Commits should be parsed before accessing generation, graph positions.
  */
-uint32_t commit_graph_generation(const struct commit *);
+timestamp_t commit_graph_generation(const struct commit *);
 uint32_t commit_graph_position(const struct commit *);
 #endif
index 50175b159e709ef75e01e7c8380fef127d83d408..c226ee3da469c50c82dea58804ad3819230ed112 100644 (file)
 
 static const unsigned all_flags = (PARENT1 | PARENT2 | STALE | RESULT);
 
+static int compare_commits_by_gen(const void *_a, const void *_b)
+{
+       const struct commit *a = *(const struct commit * const *)_a;
+       const struct commit *b = *(const struct commit * const *)_b;
+
+       timestamp_t generation_a = commit_graph_generation(a);
+       timestamp_t generation_b = commit_graph_generation(b);
+
+       if (generation_a < generation_b)
+               return -1;
+       if (generation_a > generation_b)
+               return 1;
+       if (a->date < b->date)
+               return -1;
+       if (a->date > b->date)
+               return 1;
+       return 0;
+}
+
 static int queue_has_nonstale(struct prio_queue *queue)
 {
        int i;
@@ -32,14 +51,14 @@ static int queue_has_nonstale(struct prio_queue *queue)
 static struct commit_list *paint_down_to_common(struct repository *r,
                                                struct commit *one, int n,
                                                struct commit **twos,
-                                               int min_generation)
+                                               timestamp_t min_generation)
 {
        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;
+       timestamp_t last_gen = GENERATION_NUMBER_INFINITY;
 
-       if (!min_generation)
+       if (!min_generation && !corrected_commit_dates_enabled(r))
                queue.compare = compare_commits_by_commit_date;
 
        one->object.flags |= PARENT1;
@@ -58,10 +77,10 @@ static struct commit_list *paint_down_to_common(struct repository *r,
                struct commit *commit = prio_queue_get(&queue);
                struct commit_list *parents;
                int flags;
-               uint32_t generation = commit_graph_generation(commit);
+               timestamp_t generation = commit_graph_generation(commit);
 
                if (min_generation && generation > last_gen)
-                       BUG("bad generation skip %8x > %8x at %s",
+                       BUG("bad generation skip %"PRItime" > %"PRItime" at %s",
                            generation, last_gen,
                            oid_to_hex(&commit->object.oid));
                last_gen = generation;
@@ -156,20 +175,15 @@ struct commit_list *get_octopus_merge_bases(struct commit_list *in)
        return ret;
 }
 
-static int remove_redundant(struct repository *r, struct commit **array, int cnt)
+static int remove_redundant_no_gen(struct repository *r,
+                                  struct commit **array, int cnt)
 {
-       /*
-        * Some commit in the array may be an ancestor of
-        * another commit.  Move such commit to the end of
-        * the array, and return the number of commits that
-        * are independent from each other.
-        */
        struct commit **work;
        unsigned char *redundant;
        int *filled_index;
        int i, j, filled;
 
-       work = xcalloc(cnt, sizeof(*work));
+       CALLOC_ARRAY(work, cnt);
        redundant = xcalloc(cnt, 1);
        ALLOC_ARRAY(filled_index, cnt - 1);
 
@@ -177,12 +191,12 @@ static int remove_redundant(struct repository *r, struct commit **array, int cnt
                repo_parse_commit(r, array[i]);
        for (i = 0; i < cnt; i++) {
                struct commit_list *common;
-               uint32_t min_generation = commit_graph_generation(array[i]);
+               timestamp_t min_generation = commit_graph_generation(array[i]);
 
                if (redundant[i])
                        continue;
                for (j = filled = 0; j < cnt; j++) {
-                       uint32_t curr_generation;
+                       timestamp_t curr_generation;
                        if (i == j || redundant[j])
                                continue;
                        filled_index[filled] = j;
@@ -209,15 +223,156 @@ static int remove_redundant(struct repository *r, struct commit **array, int cnt
        for (i = filled = 0; i < cnt; i++)
                if (!redundant[i])
                        array[filled++] = work[i];
-       for (j = filled, i = 0; i < cnt; i++)
-               if (redundant[i])
-                       array[j++] = work[i];
        free(work);
        free(redundant);
        free(filled_index);
        return filled;
 }
 
+static int remove_redundant_with_gen(struct repository *r,
+                                    struct commit **array, int cnt)
+{
+       int i, count_non_stale = 0, count_still_independent = cnt;
+       timestamp_t min_generation = GENERATION_NUMBER_INFINITY;
+       struct commit **walk_start, **sorted;
+       size_t walk_start_nr = 0, walk_start_alloc = cnt;
+       int min_gen_pos = 0;
+
+       /*
+        * Sort the input by generation number, ascending. This allows
+        * us to increase the "min_generation" limit when we discover
+        * the commit with lowest generation is STALE. The index
+        * min_gen_pos points to the current position within 'array'
+        * that is not yet known to be STALE.
+        */
+       ALLOC_ARRAY(sorted, cnt);
+       COPY_ARRAY(sorted, array, cnt);
+       QSORT(sorted, cnt, compare_commits_by_gen);
+       min_generation = commit_graph_generation(sorted[0]);
+
+       ALLOC_ARRAY(walk_start, walk_start_alloc);
+
+       /* Mark all parents of the input as STALE */
+       for (i = 0; i < cnt; i++) {
+               struct commit_list *parents;
+
+               repo_parse_commit(r, array[i]);
+               array[i]->object.flags |= RESULT;
+               parents = array[i]->parents;
+
+               while (parents) {
+                       repo_parse_commit(r, parents->item);
+                       if (!(parents->item->object.flags & STALE)) {
+                               parents->item->object.flags |= STALE;
+                               ALLOC_GROW(walk_start, walk_start_nr + 1, walk_start_alloc);
+                               walk_start[walk_start_nr++] = parents->item;
+                       }
+                       parents = parents->next;
+               }
+       }
+
+       QSORT(walk_start, walk_start_nr, compare_commits_by_gen);
+
+       /* remove STALE bit for now to allow walking through parents */
+       for (i = 0; i < walk_start_nr; i++)
+               walk_start[i]->object.flags &= ~STALE;
+
+       /*
+        * Start walking from the highest generation. Hopefully, it will
+        * find all other items during the first-parent walk, and we can
+        * terminate early. Otherwise, we will do the same amount of work
+        * as before.
+        */
+       for (i = walk_start_nr - 1; i >= 0 && count_still_independent > 1; i--) {
+               /* push the STALE bits up to min generation */
+               struct commit_list *stack = NULL;
+
+               commit_list_insert(walk_start[i], &stack);
+               walk_start[i]->object.flags |= STALE;
+
+               while (stack) {
+                       struct commit_list *parents;
+                       struct commit *c = stack->item;
+
+                       repo_parse_commit(r, c);
+
+                       if (c->object.flags & RESULT) {
+                               c->object.flags &= ~RESULT;
+                               if (--count_still_independent <= 1)
+                                       break;
+                               if (oideq(&c->object.oid, &sorted[min_gen_pos]->object.oid)) {
+                                       while (min_gen_pos < cnt - 1 &&
+                                              (sorted[min_gen_pos]->object.flags & STALE))
+                                               min_gen_pos++;
+                                       min_generation = commit_graph_generation(sorted[min_gen_pos]);
+                               }
+                       }
+
+                       if (commit_graph_generation(c) < min_generation) {
+                               pop_commit(&stack);
+                               continue;
+                       }
+
+                       parents = c->parents;
+                       while (parents) {
+                               if (!(parents->item->object.flags & STALE)) {
+                                       parents->item->object.flags |= STALE;
+                                       commit_list_insert(parents->item, &stack);
+                                       break;
+                               }
+                               parents = parents->next;
+                       }
+
+                       /* pop if all parents have been visited already */
+                       if (!parents)
+                               pop_commit(&stack);
+               }
+               free_commit_list(stack);
+       }
+       free(sorted);
+
+       /* clear result */
+       for (i = 0; i < cnt; i++)
+               array[i]->object.flags &= ~RESULT;
+
+       /* rearrange array */
+       for (i = count_non_stale = 0; i < cnt; i++) {
+               if (!(array[i]->object.flags & STALE))
+                       array[count_non_stale++] = array[i];
+       }
+
+       /* clear marks */
+       clear_commit_marks_many(walk_start_nr, walk_start, STALE);
+       free(walk_start);
+
+       return count_non_stale;
+}
+
+static int remove_redundant(struct repository *r, struct commit **array, int cnt)
+{
+       /*
+        * Some commit in the array may be an ancestor of
+        * another commit.  Move the independent commits to the
+        * beginning of 'array' and return their number. Callers
+        * should not rely upon the contents of 'array' after
+        * that number.
+        */
+       if (generation_numbers_enabled(r)) {
+               int i;
+
+               /*
+                * If we have a single commit with finite generation
+                * number, then the _with_gen algorithm is preferred.
+                */
+               for (i = 0; i < cnt; i++) {
+                       if (commit_graph_generation(array[i]) < GENERATION_NUMBER_INFINITY)
+                               return remove_redundant_with_gen(r, array, cnt);
+               }
+       }
+
+       return remove_redundant_no_gen(r, array, cnt);
+}
+
 static struct commit_list *get_merge_bases_many_0(struct repository *r,
                                                  struct commit *one,
                                                  int n,
@@ -244,7 +399,7 @@ static struct commit_list *get_merge_bases_many_0(struct repository *r,
 
        /* There are more than one */
        cnt = commit_list_count(result);
-       rslt = xcalloc(cnt, sizeof(*rslt));
+       CALLOC_ARRAY(rslt, cnt);
        for (list = result, i = 0; list; list = list->next)
                rslt[i++] = list->item;
        free_commit_list(result);
@@ -321,7 +476,7 @@ int repo_in_merge_bases_many(struct repository *r, struct commit *commit,
 {
        struct commit_list *bases;
        int ret = 0, i;
-       uint32_t generation, max_generation = GENERATION_NUMBER_ZERO;
+       timestamp_t generation, max_generation = GENERATION_NUMBER_ZERO;
 
        if (repo_parse_commit(r, commit))
                return ret;
@@ -386,7 +541,7 @@ struct commit_list *reduce_heads(struct commit_list *heads)
                p->item->object.flags |= STALE;
                num_head++;
        }
-       array = xcalloc(num_head, sizeof(*array));
+       CALLOC_ARRAY(array, num_head);
        for (p = heads, i = 0; p; p = p->next) {
                if (p->item->object.flags & STALE) {
                        array[i++] = p->item;
@@ -470,7 +625,7 @@ static int in_commit_list(const struct commit_list *want, struct commit *c)
 static enum contains_result contains_test(struct commit *candidate,
                                          const struct commit_list *want,
                                          struct contains_cache *cache,
-                                         uint32_t cutoff)
+                                         timestamp_t cutoff)
 {
        enum contains_result *cached = contains_cache_at(cache, candidate);
 
@@ -506,11 +661,11 @@ static enum contains_result contains_tag_algo(struct commit *candidate,
 {
        struct contains_stack contains_stack = { 0, 0, NULL };
        enum contains_result result;
-       uint32_t cutoff = GENERATION_NUMBER_INFINITY;
+       timestamp_t cutoff = GENERATION_NUMBER_INFINITY;
        const struct commit_list *p;
 
        for (p = want; p; p = p->next) {
-               uint32_t generation;
+               timestamp_t generation;
                struct commit *c = p->item;
                load_commit_graph_info(the_repository, c);
                generation = commit_graph_generation(c);
@@ -561,26 +716,11 @@ int commit_contains(struct ref_filter *filter, struct commit *commit,
        return repo_is_descendant_of(the_repository, commit, list);
 }
 
-static int compare_commits_by_gen(const void *_a, const void *_b)
-{
-       const struct commit *a = *(const struct commit * const *)_a;
-       const struct commit *b = *(const struct commit * const *)_b;
-
-       uint32_t generation_a = commit_graph_generation(a);
-       uint32_t generation_b = commit_graph_generation(b);
-
-       if (generation_a < generation_b)
-               return -1;
-       if (generation_a > generation_b)
-               return 1;
-       return 0;
-}
-
 int can_all_from_reach_with_flag(struct object_array *from,
                                 unsigned int with_flag,
                                 unsigned int assign_flag,
                                 time_t min_commit_date,
-                                uint32_t min_generation)
+                                timestamp_t min_generation)
 {
        struct commit **list = NULL;
        int i;
@@ -681,13 +821,13 @@ int can_all_from_reach(struct commit_list *from, struct commit_list *to,
        time_t min_commit_date = cutoff_by_min_date ? from->item->date : 0;
        struct commit_list *from_iter = from, *to_iter = to;
        int result;
-       uint32_t min_generation = GENERATION_NUMBER_INFINITY;
+       timestamp_t min_generation = GENERATION_NUMBER_INFINITY;
 
        while (from_iter) {
                add_object_array(&from_iter->item->object, NULL, &from_objs);
 
                if (!parse_commit(from_iter->item)) {
-                       uint32_t generation;
+                       timestamp_t generation;
                        if (from_iter->item->date < min_commit_date)
                                min_commit_date = from_iter->item->date;
 
@@ -701,7 +841,7 @@ int can_all_from_reach(struct commit_list *from, struct commit_list *to,
 
        while (to_iter) {
                if (!parse_commit(to_iter->item)) {
-                       uint32_t generation;
+                       timestamp_t generation;
                        if (to_iter->item->date < min_commit_date)
                                min_commit_date = to_iter->item->date;
 
@@ -741,13 +881,13 @@ struct commit_list *get_reachable_subset(struct commit **from, int nr_from,
        struct commit_list *found_commits = NULL;
        struct commit **to_last = to + nr_to;
        struct commit **from_last = from + nr_from;
-       uint32_t min_generation = GENERATION_NUMBER_INFINITY;
+       timestamp_t min_generation = GENERATION_NUMBER_INFINITY;
        int num_to_find = 0;
 
        struct prio_queue queue = { compare_commits_by_gen_then_commit_date };
 
        for (item = to; item < to_last; item++) {
-               uint32_t generation;
+               timestamp_t generation;
                struct commit *c = *item;
 
                parse_commit(c);
index b49ad71a3177f7dfb670fedd272e68cc89a03e77..148b56fea50629607d2f0dd196cbd4dec08fdcfd 100644 (file)
@@ -87,7 +87,7 @@ int can_all_from_reach_with_flag(struct object_array *from,
                                 unsigned int with_flag,
                                 unsigned int assign_flag,
                                 time_t min_commit_date,
-                                uint32_t min_generation);
+                                timestamp_t min_generation);
 int can_all_from_reach(struct commit_list *from, struct commit_list *to,
                       int commit_date_cutoff);
 
index fd2831dad3243f32f5bae472f2af6ad15019c67d..8ea55a447fa9e69df6903babac00ecd69a959b80 100644 (file)
--- a/commit.c
+++ b/commit.c
@@ -535,6 +535,20 @@ int find_commit_subject(const char *commit_buffer, const char **subject)
        return eol - p;
 }
 
+size_t commit_subject_length(const char *body)
+{
+       const char *p = body;
+       while (*p) {
+               const char *next = skip_blank_lines(p);
+               if (next != p)
+                       break;
+               p = strchrnul(p, '\n');
+               if (*p)
+                       p++;
+       }
+       return p - body;
+}
+
 struct commit_list *commit_list_insert(struct commit *item, struct commit_list **list_p)
 {
        struct commit_list *new_list = xmalloc(sizeof(struct commit_list));
@@ -753,8 +767,8 @@ int compare_commits_by_author_date(const void *a_, const void *b_,
 int compare_commits_by_gen_then_commit_date(const void *a_, const void *b_, void *unused)
 {
        const struct commit *a = a_, *b = b_;
-       const uint32_t generation_a = commit_graph_generation(a),
-                      generation_b = commit_graph_generation(b);
+       const timestamp_t generation_a = commit_graph_generation(a),
+                         generation_b = commit_graph_generation(b);
 
        /* newer commits first */
        if (generation_a < generation_b)
@@ -995,7 +1009,7 @@ static const char *gpg_sig_headers[] = {
        "gpgsig-sha256",
 };
 
-static int do_sign_commit(struct strbuf *buf, const char *keyid)
+int sign_with_header(struct strbuf *buf, const char *keyid)
 {
        struct strbuf sig = STRBUF_INIT;
        int inspos, copypos;
@@ -1035,21 +1049,32 @@ static int do_sign_commit(struct strbuf *buf, const char *keyid)
        return 0;
 }
 
+
+
 int parse_signed_commit(const struct commit *commit,
-                       struct strbuf *payload, struct strbuf *signature)
+                       struct strbuf *payload, struct strbuf *signature,
+                       const struct git_hash_algo *algop)
 {
-
        unsigned long size;
        const char *buffer = get_commit_buffer(commit, &size);
-       int in_signature, saw_signature = -1;
-       const char *line, *tail;
-       const char *gpg_sig_header = gpg_sig_headers[hash_algo_by_ptr(the_hash_algo)];
-       int gpg_sig_header_len = strlen(gpg_sig_header);
+       int ret = parse_buffer_signed_by_header(buffer, size, payload, signature, algop);
+
+       unuse_commit_buffer(commit, buffer);
+       return ret;
+}
+
+int parse_buffer_signed_by_header(const char *buffer,
+                                 unsigned long size,
+                                 struct strbuf *payload,
+                                 struct strbuf *signature,
+                                 const struct git_hash_algo *algop)
+{
+       int in_signature = 0, saw_signature = 0, other_signature = 0;
+       const char *line, *tail, *p;
+       const char *gpg_sig_header = gpg_sig_headers[hash_algo_by_ptr(algop)];
 
        line = buffer;
        tail = buffer + size;
-       in_signature = 0;
-       saw_signature = 0;
        while (line < tail) {
                const char *sig = NULL;
                const char *next = memchr(line, '\n', tail - line);
@@ -1057,9 +1082,15 @@ int parse_signed_commit(const struct commit *commit,
                next = next ? next + 1 : tail;
                if (in_signature && line[0] == ' ')
                        sig = line + 1;
-               else if (starts_with(line, gpg_sig_header) &&
-                        line[gpg_sig_header_len] == ' ')
-                       sig = line + gpg_sig_header_len + 1;
+               else if (skip_prefix(line, gpg_sig_header, &p) &&
+                        *p == ' ') {
+                       sig = line + strlen(gpg_sig_header) + 1;
+                       other_signature = 0;
+               }
+               else if (starts_with(line, "gpgsig"))
+                       other_signature = 1;
+               else if (other_signature && line[0] != ' ')
+                       other_signature = 0;
                if (sig) {
                        strbuf_add(signature, sig, next - sig);
                        saw_signature = 1;
@@ -1068,12 +1099,12 @@ int parse_signed_commit(const struct commit *commit,
                        if (*line == '\n')
                                /* dump the whole remainder of the buffer */
                                next = tail;
-                       strbuf_add(payload, line, next - line);
+                       if (!other_signature)
+                               strbuf_add(payload, line, next - line);
                        in_signature = 0;
                }
                line = next;
        }
-       unuse_commit_buffer(commit, buffer);
        return saw_signature;
 }
 
@@ -1082,23 +1113,29 @@ int remove_signature(struct strbuf *buf)
        const char *line = buf->buf;
        const char *tail = buf->buf + buf->len;
        int in_signature = 0;
-       const char *sig_start = NULL;
-       const char *sig_end = NULL;
+       struct sigbuf {
+               const char *start;
+               const char *end;
+       } sigs[2], *sigp = &sigs[0];
+       int i;
+       const char *orig_buf = buf->buf;
+
+       memset(sigs, 0, sizeof(sigs));
 
        while (line < tail) {
                const char *next = memchr(line, '\n', tail - line);
                next = next ? next + 1 : tail;
 
                if (in_signature && line[0] == ' ')
-                       sig_end = next;
+                       sigp->end = next;
                else if (starts_with(line, "gpgsig")) {
                        int i;
                        for (i = 1; i < GIT_HASH_NALGOS; i++) {
                                const char *p;
                                if (skip_prefix(line, gpg_sig_headers[i], &p) &&
                                    *p == ' ') {
-                                       sig_start = line;
-                                       sig_end = next;
+                                       sigp->start = line;
+                                       sigp->end = next;
                                        in_signature = 1;
                                }
                        }
@@ -1106,15 +1143,18 @@ int remove_signature(struct strbuf *buf)
                        if (*line == '\n')
                                /* dump the whole remainder of the buffer */
                                next = tail;
+                       if (in_signature && sigp - sigs != ARRAY_SIZE(sigs))
+                               sigp++;
                        in_signature = 0;
                }
                line = next;
        }
 
-       if (sig_start)
-               strbuf_remove(buf, sig_start - buf->buf, sig_end - sig_start);
+       for (i = ARRAY_SIZE(sigs) - 1; i >= 0; i--)
+               if (sigs[i].start)
+                       strbuf_remove(buf, sigs[i].start - orig_buf, sigs[i].end - sigs[i].start);
 
-       return sig_start != NULL;
+       return sigs[0].start != NULL;
 }
 
 static void handle_signed_tag(struct commit *parent, struct commit_extra_header ***tail)
@@ -1122,8 +1162,10 @@ static void handle_signed_tag(struct commit *parent, struct commit_extra_header
        struct merge_remote_desc *desc;
        struct commit_extra_header *mergetag;
        char *buf;
-       unsigned long size, len;
+       unsigned long size;
        enum object_type type;
+       struct strbuf payload = STRBUF_INIT;
+       struct strbuf signature = STRBUF_INIT;
 
        desc = merge_remote_util(parent);
        if (!desc || !desc->obj)
@@ -1131,8 +1173,7 @@ static void handle_signed_tag(struct commit *parent, struct commit_extra_header
        buf = read_object_file(&desc->obj->oid, &type, &size);
        if (!buf || type != OBJ_TAG)
                goto free_return;
-       len = parse_signature(buf, size);
-       if (size == len)
+       if (!parse_signature(buf, size, &payload, &signature))
                goto free_return;
        /*
         * We could verify this signature and either omit the tag when
@@ -1144,13 +1185,15 @@ static void handle_signed_tag(struct commit *parent, struct commit_extra_header
         * if (verify_signed_buffer(buf, len, buf + len, size - len, ...))
         *      warn("warning: signed tag unverified.");
         */
-       mergetag = xcalloc(1, sizeof(*mergetag));
+       CALLOC_ARRAY(mergetag, 1);
        mergetag->key = xstrdup("mergetag");
        mergetag->value = buf;
        mergetag->len = size;
 
        **tail = mergetag;
        *tail = &mergetag->next;
+       strbuf_release(&payload);
+       strbuf_release(&signature);
        return;
 
 free_return:
@@ -1165,7 +1208,7 @@ int check_commit_signature(const struct commit *commit, struct signature_check *
 
        sigc->result = 'N';
 
-       if (parse_signed_commit(commit, &payload, &signature) <= 0)
+       if (parse_signed_commit(commit, &payload, &signature, the_hash_algo) <= 0)
                goto out;
        ret = check_signature(payload.buf, payload.len, signature.buf,
                signature.len, sigc);
@@ -1307,7 +1350,7 @@ static struct commit_extra_header *read_commit_extra_header_lines(
                         excluded_header_field(line, eof - line, exclude))
                        continue;
 
-               it = xcalloc(1, sizeof(*it));
+               CALLOC_ARRAY(it, 1);
                it->key = xmemdupz(line, eof-line);
                *tail = it;
                tail = &it->next;
@@ -1515,7 +1558,7 @@ int commit_tree_extended(const char *msg, size_t msg_len,
        if (encoding_is_utf8 && !verify_utf8(&buffer))
                fprintf(stderr, _(commit_utf8_warn));
 
-       if (sign_commit && do_sign_commit(&buffer, sign_commit)) {
+       if (sign_commit && sign_with_header(&buffer, sign_commit)) {
                result = -1;
                goto out;
        }
index ecacf9ade36497d6d30dd14bc926fb7759db020d..df42eb434f314bd9cf89e920efdb0fc29a86c4c5 100644 (file)
--- a/commit.h
+++ b/commit.h
 #include "commit-slab.h"
 
 #define COMMIT_NOT_FROM_GRAPH 0xFFFFFFFF
-#define GENERATION_NUMBER_INFINITY 0xFFFFFFFF
-#define GENERATION_NUMBER_MAX 0x3FFFFFFF
+#define GENERATION_NUMBER_INFINITY ((1ULL << 63) - 1)
+#define GENERATION_NUMBER_V1_MAX 0x3FFFFFFF
 #define GENERATION_NUMBER_ZERO 0
+#define GENERATION_NUMBER_V2_OFFSET_MAX ((1ULL << 31) - 1)
 
 struct commit_list {
        struct commit *item;
@@ -88,9 +89,10 @@ static inline int repo_parse_commit(struct repository *r, struct commit *item)
        return repo_parse_commit_gently(r, item, 0);
 }
 
-static inline int parse_commit_no_graph(struct commit *commit)
+static inline int repo_parse_commit_no_graph(struct repository *r,
+                                            struct commit *commit)
 {
-       return repo_parse_commit_internal(the_repository, commit, 0, 0);
+       return repo_parse_commit_internal(r, commit, 0, 0);
 }
 
 #ifndef NO_THE_REPOSITORY_COMPATIBILITY_MACROS
@@ -165,6 +167,9 @@ const void *detach_commit_buffer(struct commit *, unsigned long *sizep);
 /* Find beginning and length of commit subject. */
 int find_commit_subject(const char *commit_buffer, const char **subject);
 
+/* Return length of the commit subject from commit log message. */
+size_t commit_subject_length(const char *body);
+
 struct commit_list *commit_list_insert(struct commit *item,
                                        struct commit_list **list);
 int commit_list_contains(struct commit *item,
@@ -317,7 +322,8 @@ void set_merge_remote_desc(struct commit *commit,
 struct commit *get_merge_parent(const char *name);
 
 int parse_signed_commit(const struct commit *commit,
-                       struct strbuf *message, struct strbuf *signature);
+                       struct strbuf *message, struct strbuf *signature,
+                       const struct git_hash_algo *algop);
 int remove_signature(struct strbuf *buf);
 
 /*
@@ -359,4 +365,13 @@ int compare_commits_by_gen_then_commit_date(const void *a_, const void *b_, void
 LAST_ARG_MUST_BE_NULL
 int run_commit_hook(int editor_is_used, const char *index_file, const char *name, ...);
 
+/* Sign a commit or tag buffer, storing the result in a header. */
+int sign_with_header(struct strbuf *buf, const char *keyid);
+/* Parse the signature out of a header. */
+int parse_buffer_signed_by_header(const char *buffer,
+                                 unsigned long size,
+                                 struct strbuf *payload,
+                                 struct strbuf *signature,
+                                 const struct git_hash_algo *algop);
+
 #endif /* COMMIT_H */
index a00f3312300ac36773bf42aec80b4514f31b1293..a43599841c6c6bb3e4312d53e35647ed0c8af3fb 100644 (file)
@@ -367,6 +367,8 @@ int mingw_rmdir(const char *pathname)
               ask_yes_no_if_possible("Deletion of directory '%s' failed. "
                        "Should I try again?", pathname))
               ret = _wrmdir(wpathname);
+       if (!ret)
+               invalidate_lstat_cache();
        return ret;
 }
 
index af8eddd73edb2b1d19caddad4732aa7a370d0cc0..c9a52ad64a681fa9deff40c98d6ddabf842573de 100644 (file)
@@ -227,6 +227,7 @@ int mingw_rmdir(const char *path);
 
 int mingw_open (const char *filename, int oflags, ...);
 #define open mingw_open
+#undef OPEN_RETURNS_EINTR
 
 int mingw_fgetc(FILE *stream);
 #define fgetc mingw_fgetc
diff --git a/compat/open.c b/compat/open.c
new file mode 100644 (file)
index 0000000..eb3754a
--- /dev/null
@@ -0,0 +1,25 @@
+#include "git-compat-util.h"
+
+#undef open
+int git_open_with_retry(const char *path, int flags, ...)
+{
+       mode_t mode = 0;
+       int ret;
+
+       /*
+        * Also O_TMPFILE would take a mode, but it isn't defined everywhere.
+        * And anyway, we don't use it in our code base.
+        */
+       if (flags & O_CREAT) {
+               va_list ap;
+               va_start(ap, flags);
+               mode = va_arg(ap, int);
+               va_end(ap);
+       }
+
+       do {
+               ret = open(path, flags, mode);
+       } while (ret < 0 && errno == EINTR);
+
+       return ret;
+}
index 136250fbf6c4f7e707c25dba936e2effebd847f2..ec560565a862ccf091d68cf34bf2bb985e4faf9c 100644 (file)
@@ -60,32 +60,46 @@ void probe_utf8_pathname_composition(void)
        strbuf_release(&path);
 }
 
-
-void precompose_argv(int argc, const char **argv)
+static inline const char *precompose_string_if_needed(const char *in)
 {
-       int i = 0;
-       const char *oldarg;
-       char *newarg;
-       iconv_t ic_precompose;
+       size_t inlen;
+       size_t outlen;
+       if (has_non_ascii(in, (size_t)-1, &inlen)) {
+               iconv_t ic_prec;
+               char *out;
+               if (precomposed_unicode < 0)
+                       git_config_get_bool("core.precomposeunicode", &precomposed_unicode);
+               if (precomposed_unicode != 1)
+                       return in;
+               ic_prec = iconv_open(repo_encoding, path_encoding);
+               if (ic_prec == (iconv_t) -1)
+                       return in;
+
+               out = reencode_string_iconv(in, inlen, ic_prec, 0, &outlen);
+               if (out) {
+                       if (outlen == inlen && !memcmp(in, out, outlen))
+                               free(out); /* no need to return indentical */
+                       else
+                               in = out;
+               }
+               iconv_close(ic_prec);
 
-       if (precomposed_unicode != 1)
-               return;
+       }
+       return in;
+}
 
-       ic_precompose = iconv_open(repo_encoding, path_encoding);
-       if (ic_precompose == (iconv_t) -1)
-               return;
+const char *precompose_argv_prefix(int argc, const char **argv, const char *prefix)
+{
+       int i = 0;
 
        while (i < argc) {
-               size_t namelen;
-               oldarg = argv[i];
-               if (has_non_ascii(oldarg, (size_t)-1, &namelen)) {
-                       newarg = reencode_string_iconv(oldarg, namelen, ic_precompose, 0, NULL);
-                       if (newarg)
-                               argv[i] = newarg;
-               }
+               argv[i] = precompose_string_if_needed(argv[i]);
                i++;
        }
-       iconv_close(ic_precompose);
+       if (prefix) {
+               prefix = precompose_string_if_needed(prefix);
+       }
+       return prefix;
 }
 
 
index 6f843d3e1a121cf8f73409bc66898f74a9f14f2c..d70b84665c61faee9e1fe1197c1fe61788d2afb2 100644 (file)
@@ -28,7 +28,7 @@ typedef struct {
        struct dirent_prec_psx *dirent_nfc;
 } PREC_DIR;
 
-void precompose_argv(int argc, const char **argv);
+const char *precompose_argv_prefix(int argc, const char **argv, const char *prefix);
 void probe_utf8_pathname_composition(void);
 
 PREC_DIR *precompose_utf8_opendir(const char *dirname);
diff --git a/compat/simple-ipc/ipc-shared.c b/compat/simple-ipc/ipc-shared.c
new file mode 100644 (file)
index 0000000..1edec81
--- /dev/null
@@ -0,0 +1,28 @@
+#include "cache.h"
+#include "simple-ipc.h"
+#include "strbuf.h"
+#include "pkt-line.h"
+#include "thread-utils.h"
+
+#ifdef SUPPORTS_SIMPLE_IPC
+
+int ipc_server_run(const char *path, const struct ipc_server_opts *opts,
+                  ipc_server_application_cb *application_cb,
+                  void *application_data)
+{
+       struct ipc_server_data *server_data = NULL;
+       int ret;
+
+       ret = ipc_server_run_async(&server_data, path, opts,
+                                  application_cb, application_data);
+       if (ret)
+               return ret;
+
+       ret = ipc_server_await(server_data);
+
+       ipc_server_free(server_data);
+
+       return ret;
+}
+
+#endif /* SUPPORTS_SIMPLE_IPC */
diff --git a/compat/simple-ipc/ipc-unix-socket.c b/compat/simple-ipc/ipc-unix-socket.c
new file mode 100644 (file)
index 0000000..38689b2
--- /dev/null
@@ -0,0 +1,999 @@
+#include "cache.h"
+#include "simple-ipc.h"
+#include "strbuf.h"
+#include "pkt-line.h"
+#include "thread-utils.h"
+#include "unix-socket.h"
+#include "unix-stream-server.h"
+
+#ifdef NO_UNIX_SOCKETS
+#error compat/simple-ipc/ipc-unix-socket.c requires Unix sockets
+#endif
+
+enum ipc_active_state ipc_get_active_state(const char *path)
+{
+       enum ipc_active_state state = IPC_STATE__OTHER_ERROR;
+       struct ipc_client_connect_options options
+               = IPC_CLIENT_CONNECT_OPTIONS_INIT;
+       struct stat st;
+       struct ipc_client_connection *connection_test = NULL;
+
+       options.wait_if_busy = 0;
+       options.wait_if_not_found = 0;
+
+       if (lstat(path, &st) == -1) {
+               switch (errno) {
+               case ENOENT:
+               case ENOTDIR:
+                       return IPC_STATE__NOT_LISTENING;
+               default:
+                       return IPC_STATE__INVALID_PATH;
+               }
+       }
+
+       /* also complain if a plain file is in the way */
+       if ((st.st_mode & S_IFMT) != S_IFSOCK)
+               return IPC_STATE__INVALID_PATH;
+
+       /*
+        * Just because the filesystem has a S_IFSOCK type inode
+        * at `path`, doesn't mean it that there is a server listening.
+        * Ping it to be sure.
+        */
+       state = ipc_client_try_connect(path, &options, &connection_test);
+       ipc_client_close_connection(connection_test);
+
+       return state;
+}
+
+/*
+ * Retry frequency when trying to connect to a server.
+ *
+ * This value should be short enough that we don't seriously delay our
+ * caller, but not fast enough that our spinning puts pressure on the
+ * system.
+ */
+#define WAIT_STEP_MS (50)
+
+/*
+ * Try to connect to the server.  If the server is just starting up or
+ * is very busy, we may not get a connection the first time.
+ */
+static enum ipc_active_state connect_to_server(
+       const char *path,
+       int timeout_ms,
+       const struct ipc_client_connect_options *options,
+       int *pfd)
+{
+       int k;
+
+       *pfd = -1;
+
+       for (k = 0; k < timeout_ms; k += WAIT_STEP_MS) {
+               int fd = unix_stream_connect(path, options->uds_disallow_chdir);
+
+               if (fd != -1) {
+                       *pfd = fd;
+                       return IPC_STATE__LISTENING;
+               }
+
+               if (errno == ENOENT) {
+                       if (!options->wait_if_not_found)
+                               return IPC_STATE__PATH_NOT_FOUND;
+
+                       goto sleep_and_try_again;
+               }
+
+               if (errno == ETIMEDOUT) {
+                       if (!options->wait_if_busy)
+                               return IPC_STATE__NOT_LISTENING;
+
+                       goto sleep_and_try_again;
+               }
+
+               if (errno == ECONNREFUSED) {
+                       if (!options->wait_if_busy)
+                               return IPC_STATE__NOT_LISTENING;
+
+                       goto sleep_and_try_again;
+               }
+
+               return IPC_STATE__OTHER_ERROR;
+
+       sleep_and_try_again:
+               sleep_millisec(WAIT_STEP_MS);
+       }
+
+       return IPC_STATE__NOT_LISTENING;
+}
+
+/*
+ * The total amount of time that we are willing to wait when trying to
+ * connect to a server.
+ *
+ * When the server is first started, it might take a little while for
+ * it to become ready to service requests.  Likewise, the server may
+ * be very (temporarily) busy and not respond to our connections.
+ *
+ * We should gracefully and silently handle those conditions and try
+ * again for a reasonable time period.
+ *
+ * The value chosen here should be long enough for the server
+ * to reliably heal from the above conditions.
+ */
+#define MY_CONNECTION_TIMEOUT_MS (1000)
+
+enum ipc_active_state ipc_client_try_connect(
+       const char *path,
+       const struct ipc_client_connect_options *options,
+       struct ipc_client_connection **p_connection)
+{
+       enum ipc_active_state state = IPC_STATE__OTHER_ERROR;
+       int fd = -1;
+
+       *p_connection = NULL;
+
+       trace2_region_enter("ipc-client", "try-connect", NULL);
+       trace2_data_string("ipc-client", NULL, "try-connect/path", path);
+
+       state = connect_to_server(path, MY_CONNECTION_TIMEOUT_MS,
+                                 options, &fd);
+
+       trace2_data_intmax("ipc-client", NULL, "try-connect/state",
+                          (intmax_t)state);
+       trace2_region_leave("ipc-client", "try-connect", NULL);
+
+       if (state == IPC_STATE__LISTENING) {
+               (*p_connection) = xcalloc(1, sizeof(struct ipc_client_connection));
+               (*p_connection)->fd = fd;
+       }
+
+       return state;
+}
+
+void ipc_client_close_connection(struct ipc_client_connection *connection)
+{
+       if (!connection)
+               return;
+
+       if (connection->fd != -1)
+               close(connection->fd);
+
+       free(connection);
+}
+
+int ipc_client_send_command_to_connection(
+       struct ipc_client_connection *connection,
+       const char *message, struct strbuf *answer)
+{
+       int ret = 0;
+
+       strbuf_setlen(answer, 0);
+
+       trace2_region_enter("ipc-client", "send-command", NULL);
+
+       if (write_packetized_from_buf_no_flush(message, strlen(message),
+                                              connection->fd) < 0 ||
+           packet_flush_gently(connection->fd) < 0) {
+               ret = error(_("could not send IPC command"));
+               goto done;
+       }
+
+       if (read_packetized_to_strbuf(
+                   connection->fd, answer,
+                   PACKET_READ_GENTLE_ON_EOF | PACKET_READ_GENTLE_ON_READ_ERROR) < 0) {
+               ret = error(_("could not read IPC response"));
+               goto done;
+       }
+
+done:
+       trace2_region_leave("ipc-client", "send-command", NULL);
+       return ret;
+}
+
+int ipc_client_send_command(const char *path,
+                           const struct ipc_client_connect_options *options,
+                           const char *message, struct strbuf *answer)
+{
+       int ret = -1;
+       enum ipc_active_state state;
+       struct ipc_client_connection *connection = NULL;
+
+       state = ipc_client_try_connect(path, options, &connection);
+
+       if (state != IPC_STATE__LISTENING)
+               return ret;
+
+       ret = ipc_client_send_command_to_connection(connection, message, answer);
+
+       ipc_client_close_connection(connection);
+
+       return ret;
+}
+
+static int set_socket_blocking_flag(int fd, int make_nonblocking)
+{
+       int flags;
+
+       flags = fcntl(fd, F_GETFL, NULL);
+
+       if (flags < 0)
+               return -1;
+
+       if (make_nonblocking)
+               flags |= O_NONBLOCK;
+       else
+               flags &= ~O_NONBLOCK;
+
+       return fcntl(fd, F_SETFL, flags);
+}
+
+/*
+ * Magic numbers used to annotate callback instance data.
+ * These are used to help guard against accidentally passing the
+ * wrong instance data across multiple levels of callbacks (which
+ * is easy to do if there are `void*` arguments).
+ */
+enum magic {
+       MAGIC_SERVER_REPLY_DATA,
+       MAGIC_WORKER_THREAD_DATA,
+       MAGIC_ACCEPT_THREAD_DATA,
+       MAGIC_SERVER_DATA,
+};
+
+struct ipc_server_reply_data {
+       enum magic magic;
+       int fd;
+       struct ipc_worker_thread_data *worker_thread_data;
+};
+
+struct ipc_worker_thread_data {
+       enum magic magic;
+       struct ipc_worker_thread_data *next_thread;
+       struct ipc_server_data *server_data;
+       pthread_t pthread_id;
+};
+
+struct ipc_accept_thread_data {
+       enum magic magic;
+       struct ipc_server_data *server_data;
+
+       struct unix_ss_socket *server_socket;
+
+       int fd_send_shutdown;
+       int fd_wait_shutdown;
+       pthread_t pthread_id;
+};
+
+/*
+ * With unix-sockets, the conceptual "ipc-server" is implemented as a single
+ * controller "accept-thread" thread and a pool of "worker-thread" threads.
+ * The former does the usual `accept()` loop and dispatches connections
+ * to an idle worker thread.  The worker threads wait in an idle loop for
+ * a new connection, communicate with the client and relay data to/from
+ * the `application_cb` and then wait for another connection from the
+ * server thread.  This avoids the overhead of constantly creating and
+ * destroying threads.
+ */
+struct ipc_server_data {
+       enum magic magic;
+       ipc_server_application_cb *application_cb;
+       void *application_data;
+       struct strbuf buf_path;
+
+       struct ipc_accept_thread_data *accept_thread;
+       struct ipc_worker_thread_data *worker_thread_list;
+
+       pthread_mutex_t work_available_mutex;
+       pthread_cond_t work_available_cond;
+
+       /*
+        * Accepted but not yet processed client connections are kept
+        * in a circular buffer FIFO.  The queue is empty when the
+        * positions are equal.
+        */
+       int *fifo_fds;
+       int queue_size;
+       int back_pos;
+       int front_pos;
+
+       int shutdown_requested;
+       int is_stopped;
+};
+
+/*
+ * Remove and return the oldest queued connection.
+ *
+ * Returns -1 if empty.
+ */
+static int fifo_dequeue(struct ipc_server_data *server_data)
+{
+       /* ASSERT holding mutex */
+
+       int fd;
+
+       if (server_data->back_pos == server_data->front_pos)
+               return -1;
+
+       fd = server_data->fifo_fds[server_data->front_pos];
+       server_data->fifo_fds[server_data->front_pos] = -1;
+
+       server_data->front_pos++;
+       if (server_data->front_pos == server_data->queue_size)
+               server_data->front_pos = 0;
+
+       return fd;
+}
+
+/*
+ * Push a new fd onto the back of the queue.
+ *
+ * Drop it and return -1 if queue is already full.
+ */
+static int fifo_enqueue(struct ipc_server_data *server_data, int fd)
+{
+       /* ASSERT holding mutex */
+
+       int next_back_pos;
+
+       next_back_pos = server_data->back_pos + 1;
+       if (next_back_pos == server_data->queue_size)
+               next_back_pos = 0;
+
+       if (next_back_pos == server_data->front_pos) {
+               /* Queue is full. Just drop it. */
+               close(fd);
+               return -1;
+       }
+
+       server_data->fifo_fds[server_data->back_pos] = fd;
+       server_data->back_pos = next_back_pos;
+
+       return fd;
+}
+
+/*
+ * Wait for a connection to be queued to the FIFO and return it.
+ *
+ * Returns -1 if someone has already requested a shutdown.
+ */
+static int worker_thread__wait_for_connection(
+       struct ipc_worker_thread_data *worker_thread_data)
+{
+       /* ASSERT NOT holding mutex */
+
+       struct ipc_server_data *server_data = worker_thread_data->server_data;
+       int fd = -1;
+
+       pthread_mutex_lock(&server_data->work_available_mutex);
+       for (;;) {
+               if (server_data->shutdown_requested)
+                       break;
+
+               fd = fifo_dequeue(server_data);
+               if (fd >= 0)
+                       break;
+
+               pthread_cond_wait(&server_data->work_available_cond,
+                                 &server_data->work_available_mutex);
+       }
+       pthread_mutex_unlock(&server_data->work_available_mutex);
+
+       return fd;
+}
+
+/*
+ * Forward declare our reply callback function so that any compiler
+ * errors are reported when we actually define the function (in addition
+ * to any errors reported when we try to pass this callback function as
+ * a parameter in a function call).  The former are easier to understand.
+ */
+static ipc_server_reply_cb do_io_reply_callback;
+
+/*
+ * Relay application's response message to the client process.
+ * (We do not flush at this point because we allow the caller
+ * to chunk data to the client thru us.)
+ */
+static int do_io_reply_callback(struct ipc_server_reply_data *reply_data,
+                      const char *response, size_t response_len)
+{
+       if (reply_data->magic != MAGIC_SERVER_REPLY_DATA)
+               BUG("reply_cb called with wrong instance data");
+
+       return write_packetized_from_buf_no_flush(response, response_len,
+                                                 reply_data->fd);
+}
+
+/* A randomly chosen value. */
+#define MY_WAIT_POLL_TIMEOUT_MS (10)
+
+/*
+ * If the client hangs up without sending any data on the wire, just
+ * quietly close the socket and ignore this client.
+ *
+ * This worker thread is committed to reading the IPC request data
+ * from the client at the other end of this fd.  Wait here for the
+ * client to actually put something on the wire -- because if the
+ * client just does a ping (connect and hangup without sending any
+ * data), our use of the pkt-line read routines will spew an error
+ * message.
+ *
+ * Return -1 if the client hung up.
+ * Return 0 if data (possibly incomplete) is ready.
+ */
+static int worker_thread__wait_for_io_start(
+       struct ipc_worker_thread_data *worker_thread_data,
+       int fd)
+{
+       struct ipc_server_data *server_data = worker_thread_data->server_data;
+       struct pollfd pollfd[1];
+       int result;
+
+       for (;;) {
+               pollfd[0].fd = fd;
+               pollfd[0].events = POLLIN;
+
+               result = poll(pollfd, 1, MY_WAIT_POLL_TIMEOUT_MS);
+               if (result < 0) {
+                       if (errno == EINTR)
+                               continue;
+                       goto cleanup;
+               }
+
+               if (result == 0) {
+                       /* a timeout */
+
+                       int in_shutdown;
+
+                       pthread_mutex_lock(&server_data->work_available_mutex);
+                       in_shutdown = server_data->shutdown_requested;
+                       pthread_mutex_unlock(&server_data->work_available_mutex);
+
+                       /*
+                        * If a shutdown is already in progress and this
+                        * client has not started talking yet, just drop it.
+                        */
+                       if (in_shutdown)
+                               goto cleanup;
+                       continue;
+               }
+
+               if (pollfd[0].revents & POLLHUP)
+                       goto cleanup;
+
+               if (pollfd[0].revents & POLLIN)
+                       return 0;
+
+               goto cleanup;
+       }
+
+cleanup:
+       close(fd);
+       return -1;
+}
+
+/*
+ * Receive the request/command from the client and pass it to the
+ * registered request-callback.  The request-callback will compose
+ * a response and call our reply-callback to send it to the client.
+ */
+static int worker_thread__do_io(
+       struct ipc_worker_thread_data *worker_thread_data,
+       int fd)
+{
+       /* ASSERT NOT holding lock */
+
+       struct strbuf buf = STRBUF_INIT;
+       struct ipc_server_reply_data reply_data;
+       int ret = 0;
+
+       reply_data.magic = MAGIC_SERVER_REPLY_DATA;
+       reply_data.worker_thread_data = worker_thread_data;
+
+       reply_data.fd = fd;
+
+       ret = read_packetized_to_strbuf(
+               reply_data.fd, &buf,
+               PACKET_READ_GENTLE_ON_EOF | PACKET_READ_GENTLE_ON_READ_ERROR);
+       if (ret >= 0) {
+               ret = worker_thread_data->server_data->application_cb(
+                       worker_thread_data->server_data->application_data,
+                       buf.buf, do_io_reply_callback, &reply_data);
+
+               packet_flush_gently(reply_data.fd);
+       }
+       else {
+               /*
+                * The client probably disconnected/shutdown before it
+                * could send a well-formed message.  Ignore it.
+                */
+       }
+
+       strbuf_release(&buf);
+       close(reply_data.fd);
+
+       return ret;
+}
+
+/*
+ * Block SIGPIPE on the current thread (so that we get EPIPE from
+ * write() rather than an actual signal).
+ *
+ * Note that using sigchain_push() and _pop() to control SIGPIPE
+ * around our IO calls is not thread safe:
+ * [] It uses a global stack of handler frames.
+ * [] It uses ALLOC_GROW() to resize it.
+ * [] Finally, according to the `signal(2)` man-page:
+ *    "The effects of `signal()` in a multithreaded process are unspecified."
+ */
+static void thread_block_sigpipe(sigset_t *old_set)
+{
+       sigset_t new_set;
+
+       sigemptyset(&new_set);
+       sigaddset(&new_set, SIGPIPE);
+
+       sigemptyset(old_set);
+       pthread_sigmask(SIG_BLOCK, &new_set, old_set);
+}
+
+/*
+ * Thread proc for an IPC worker thread.  It handles a series of
+ * connections from clients.  It pulls the next fd from the queue
+ * processes it, and then waits for the next client.
+ *
+ * Block SIGPIPE in this worker thread for the life of the thread.
+ * This avoids stray (and sometimes delayed) SIGPIPE signals caused
+ * by client errors and/or when we are under extremely heavy IO load.
+ *
+ * This means that the application callback will have SIGPIPE blocked.
+ * The callback should not change it.
+ */
+static void *worker_thread_proc(void *_worker_thread_data)
+{
+       struct ipc_worker_thread_data *worker_thread_data = _worker_thread_data;
+       struct ipc_server_data *server_data = worker_thread_data->server_data;
+       sigset_t old_set;
+       int fd, io;
+       int ret;
+
+       trace2_thread_start("ipc-worker");
+
+       thread_block_sigpipe(&old_set);
+
+       for (;;) {
+               fd = worker_thread__wait_for_connection(worker_thread_data);
+               if (fd == -1)
+                       break; /* in shutdown */
+
+               io = worker_thread__wait_for_io_start(worker_thread_data, fd);
+               if (io == -1)
+                       continue; /* client hung up without sending anything */
+
+               ret = worker_thread__do_io(worker_thread_data, fd);
+
+               if (ret == SIMPLE_IPC_QUIT) {
+                       trace2_data_string("ipc-worker", NULL, "queue_stop_async",
+                                          "application_quit");
+                       /*
+                        * The application layer is telling the ipc-server
+                        * layer to shutdown.
+                        *
+                        * We DO NOT have a response to send to the client.
+                        *
+                        * Queue an async stop (to stop the other threads) and
+                        * allow this worker thread to exit now (no sense waiting
+                        * for the thread-pool shutdown signal).
+                        *
+                        * Other non-idle worker threads are allowed to finish
+                        * responding to their current clients.
+                        */
+                       ipc_server_stop_async(server_data);
+                       break;
+               }
+       }
+
+       trace2_thread_exit();
+       return NULL;
+}
+
+/* A randomly chosen value. */
+#define MY_ACCEPT_POLL_TIMEOUT_MS (60 * 1000)
+
+/*
+ * Accept a new client connection on our socket.  This uses non-blocking
+ * IO so that we can also wait for shutdown requests on our socket-pair
+ * without actually spinning on a fast timeout.
+ */
+static int accept_thread__wait_for_connection(
+       struct ipc_accept_thread_data *accept_thread_data)
+{
+       struct pollfd pollfd[2];
+       int result;
+
+       for (;;) {
+               pollfd[0].fd = accept_thread_data->fd_wait_shutdown;
+               pollfd[0].events = POLLIN;
+
+               pollfd[1].fd = accept_thread_data->server_socket->fd_socket;
+               pollfd[1].events = POLLIN;
+
+               result = poll(pollfd, 2, MY_ACCEPT_POLL_TIMEOUT_MS);
+               if (result < 0) {
+                       if (errno == EINTR)
+                               continue;
+                       return result;
+               }
+
+               if (result == 0) {
+                       /* a timeout */
+
+                       /*
+                        * If someone deletes or force-creates a new unix
+                        * domain socket at our path, all future clients
+                        * will be routed elsewhere and we silently starve.
+                        * If that happens, just queue a shutdown.
+                        */
+                       if (unix_ss_was_stolen(
+                                   accept_thread_data->server_socket)) {
+                               trace2_data_string("ipc-accept", NULL,
+                                                  "queue_stop_async",
+                                                  "socket_stolen");
+                               ipc_server_stop_async(
+                                       accept_thread_data->server_data);
+                       }
+                       continue;
+               }
+
+               if (pollfd[0].revents & POLLIN) {
+                       /* shutdown message queued to socketpair */
+                       return -1;
+               }
+
+               if (pollfd[1].revents & POLLIN) {
+                       /* a connection is available on server_socket */
+
+                       int client_fd =
+                               accept(accept_thread_data->server_socket->fd_socket,
+                                      NULL, NULL);
+                       if (client_fd >= 0)
+                               return client_fd;
+
+                       /*
+                        * An error here is unlikely -- it probably
+                        * indicates that the connecting process has
+                        * already dropped the connection.
+                        */
+                       continue;
+               }
+
+               BUG("unandled poll result errno=%d r[0]=%d r[1]=%d",
+                   errno, pollfd[0].revents, pollfd[1].revents);
+       }
+}
+
+/*
+ * Thread proc for the IPC server "accept thread".  This waits for
+ * an incoming socket connection, appends it to the queue of available
+ * connections, and notifies a worker thread to process it.
+ *
+ * Block SIGPIPE in this thread for the life of the thread.  This
+ * avoids any stray SIGPIPE signals when closing pipe fds under
+ * extremely heavy loads (such as when the fifo queue is full and we
+ * drop incomming connections).
+ */
+static void *accept_thread_proc(void *_accept_thread_data)
+{
+       struct ipc_accept_thread_data *accept_thread_data = _accept_thread_data;
+       struct ipc_server_data *server_data = accept_thread_data->server_data;
+       sigset_t old_set;
+
+       trace2_thread_start("ipc-accept");
+
+       thread_block_sigpipe(&old_set);
+
+       for (;;) {
+               int client_fd = accept_thread__wait_for_connection(
+                       accept_thread_data);
+
+               pthread_mutex_lock(&server_data->work_available_mutex);
+               if (server_data->shutdown_requested) {
+                       pthread_mutex_unlock(&server_data->work_available_mutex);
+                       if (client_fd >= 0)
+                               close(client_fd);
+                       break;
+               }
+
+               if (client_fd < 0) {
+                       /* ignore transient accept() errors */
+               }
+               else {
+                       fifo_enqueue(server_data, client_fd);
+                       pthread_cond_broadcast(&server_data->work_available_cond);
+               }
+               pthread_mutex_unlock(&server_data->work_available_mutex);
+       }
+
+       trace2_thread_exit();
+       return NULL;
+}
+
+/*
+ * We can't predict the connection arrival rate relative to the worker
+ * processing rate, therefore we allow the "accept-thread" to queue up
+ * a generous number of connections, since we'd rather have the client
+ * not unnecessarily timeout if we can avoid it.  (The assumption is
+ * that this will be used for FSMonitor and a few second wait on a
+ * connection is better than having the client timeout and do the full
+ * computation itself.)
+ *
+ * The FIFO queue size is set to a multiple of the worker pool size.
+ * This value chosen at random.
+ */
+#define FIFO_SCALE (100)
+
+/*
+ * The backlog value for `listen(2)`.  This doesn't need to huge,
+ * rather just large enough for our "accept-thread" to wake up and
+ * queue incoming connections onto the FIFO without the kernel
+ * dropping any.
+ *
+ * This value chosen at random.
+ */
+#define LISTEN_BACKLOG (50)
+
+static int create_listener_socket(
+       const char *path,
+       const struct ipc_server_opts *ipc_opts,
+       struct unix_ss_socket **new_server_socket)
+{
+       struct unix_ss_socket *server_socket = NULL;
+       struct unix_stream_listen_opts uslg_opts = UNIX_STREAM_LISTEN_OPTS_INIT;
+       int ret;
+
+       uslg_opts.listen_backlog_size = LISTEN_BACKLOG;
+       uslg_opts.disallow_chdir = ipc_opts->uds_disallow_chdir;
+
+       ret = unix_ss_create(path, &uslg_opts, -1, &server_socket);
+       if (ret)
+               return ret;
+
+       if (set_socket_blocking_flag(server_socket->fd_socket, 1)) {
+               int saved_errno = errno;
+               unix_ss_free(server_socket);
+               errno = saved_errno;
+               return -1;
+       }
+
+       *new_server_socket = server_socket;
+
+       trace2_data_string("ipc-server", NULL, "listen-with-lock", path);
+       return 0;
+}
+
+static int setup_listener_socket(
+       const char *path,
+       const struct ipc_server_opts *ipc_opts,
+       struct unix_ss_socket **new_server_socket)
+{
+       int ret, saved_errno;
+
+       trace2_region_enter("ipc-server", "create-listener_socket", NULL);
+
+       ret = create_listener_socket(path, ipc_opts, new_server_socket);
+
+       saved_errno = errno;
+       trace2_region_leave("ipc-server", "create-listener_socket", NULL);
+       errno = saved_errno;
+
+       return ret;
+}
+
+/*
+ * Start IPC server in a pool of background threads.
+ */
+int ipc_server_run_async(struct ipc_server_data **returned_server_data,
+                        const char *path, const struct ipc_server_opts *opts,
+                        ipc_server_application_cb *application_cb,
+                        void *application_data)
+{
+       struct unix_ss_socket *server_socket = NULL;
+       struct ipc_server_data *server_data;
+       int sv[2];
+       int k;
+       int ret;
+       int nr_threads = opts->nr_threads;
+
+       *returned_server_data = NULL;
+
+       /*
+        * Create a socketpair and set sv[1] to non-blocking.  This
+        * will used to send a shutdown message to the accept-thread
+        * and allows the accept-thread to wait on EITHER a client
+        * connection or a shutdown request without spinning.
+        */
+       if (socketpair(AF_UNIX, SOCK_STREAM, 0, sv) < 0)
+               return -1;
+
+       if (set_socket_blocking_flag(sv[1], 1)) {
+               int saved_errno = errno;
+               close(sv[0]);
+               close(sv[1]);
+               errno = saved_errno;
+               return -1;
+       }
+
+       ret = setup_listener_socket(path, opts, &server_socket);
+       if (ret) {
+               int saved_errno = errno;
+               close(sv[0]);
+               close(sv[1]);
+               errno = saved_errno;
+               return ret;
+       }
+
+       server_data = xcalloc(1, sizeof(*server_data));
+       server_data->magic = MAGIC_SERVER_DATA;
+       server_data->application_cb = application_cb;
+       server_data->application_data = application_data;
+       strbuf_init(&server_data->buf_path, 0);
+       strbuf_addstr(&server_data->buf_path, path);
+
+       if (nr_threads < 1)
+               nr_threads = 1;
+
+       pthread_mutex_init(&server_data->work_available_mutex, NULL);
+       pthread_cond_init(&server_data->work_available_cond, NULL);
+
+       server_data->queue_size = nr_threads * FIFO_SCALE;
+       CALLOC_ARRAY(server_data->fifo_fds, server_data->queue_size);
+
+       server_data->accept_thread =
+               xcalloc(1, sizeof(*server_data->accept_thread));
+       server_data->accept_thread->magic = MAGIC_ACCEPT_THREAD_DATA;
+       server_data->accept_thread->server_data = server_data;
+       server_data->accept_thread->server_socket = server_socket;
+       server_data->accept_thread->fd_send_shutdown = sv[0];
+       server_data->accept_thread->fd_wait_shutdown = sv[1];
+
+       if (pthread_create(&server_data->accept_thread->pthread_id, NULL,
+                          accept_thread_proc, server_data->accept_thread))
+               die_errno(_("could not start accept_thread '%s'"), path);
+
+       for (k = 0; k < nr_threads; k++) {
+               struct ipc_worker_thread_data *wtd;
+
+               wtd = xcalloc(1, sizeof(*wtd));
+               wtd->magic = MAGIC_WORKER_THREAD_DATA;
+               wtd->server_data = server_data;
+
+               if (pthread_create(&wtd->pthread_id, NULL, worker_thread_proc,
+                                  wtd)) {
+                       if (k == 0)
+                               die(_("could not start worker[0] for '%s'"),
+                                   path);
+                       /*
+                        * Limp along with the thread pool that we have.
+                        */
+                       break;
+               }
+
+               wtd->next_thread = server_data->worker_thread_list;
+               server_data->worker_thread_list = wtd;
+       }
+
+       *returned_server_data = server_data;
+       return 0;
+}
+
+/*
+ * Gently tell the IPC server treads to shutdown.
+ * Can be run on any thread.
+ */
+int ipc_server_stop_async(struct ipc_server_data *server_data)
+{
+       /* ASSERT NOT holding mutex */
+
+       int fd;
+
+       if (!server_data)
+               return 0;
+
+       trace2_region_enter("ipc-server", "server-stop-async", NULL);
+
+       pthread_mutex_lock(&server_data->work_available_mutex);
+
+       server_data->shutdown_requested = 1;
+
+       /*
+        * Write a byte to the shutdown socket pair to wake up the
+        * accept-thread.
+        */
+       if (write(server_data->accept_thread->fd_send_shutdown, "Q", 1) < 0)
+               error_errno("could not write to fd_send_shutdown");
+
+       /*
+        * Drain the queue of existing connections.
+        */
+       while ((fd = fifo_dequeue(server_data)) != -1)
+               close(fd);
+
+       /*
+        * Gently tell worker threads to stop processing new connections
+        * and exit.  (This does not abort in-process conversations.)
+        */
+       pthread_cond_broadcast(&server_data->work_available_cond);
+
+       pthread_mutex_unlock(&server_data->work_available_mutex);
+
+       trace2_region_leave("ipc-server", "server-stop-async", NULL);
+
+       return 0;
+}
+
+/*
+ * Wait for all IPC server threads to stop.
+ */
+int ipc_server_await(struct ipc_server_data *server_data)
+{
+       pthread_join(server_data->accept_thread->pthread_id, NULL);
+
+       if (!server_data->shutdown_requested)
+               BUG("ipc-server: accept-thread stopped for '%s'",
+                   server_data->buf_path.buf);
+
+       while (server_data->worker_thread_list) {
+               struct ipc_worker_thread_data *wtd =
+                       server_data->worker_thread_list;
+
+               pthread_join(wtd->pthread_id, NULL);
+
+               server_data->worker_thread_list = wtd->next_thread;
+               free(wtd);
+       }
+
+       server_data->is_stopped = 1;
+
+       return 0;
+}
+
+void ipc_server_free(struct ipc_server_data *server_data)
+{
+       struct ipc_accept_thread_data * accept_thread_data;
+
+       if (!server_data)
+               return;
+
+       if (!server_data->is_stopped)
+               BUG("cannot free ipc-server while running for '%s'",
+                   server_data->buf_path.buf);
+
+       accept_thread_data = server_data->accept_thread;
+       if (accept_thread_data) {
+               unix_ss_free(accept_thread_data->server_socket);
+
+               if (accept_thread_data->fd_send_shutdown != -1)
+                       close(accept_thread_data->fd_send_shutdown);
+               if (accept_thread_data->fd_wait_shutdown != -1)
+                       close(accept_thread_data->fd_wait_shutdown);
+
+               free(server_data->accept_thread);
+       }
+
+       while (server_data->worker_thread_list) {
+               struct ipc_worker_thread_data *wtd =
+                       server_data->worker_thread_list;
+
+               server_data->worker_thread_list = wtd->next_thread;
+               free(wtd);
+       }
+
+       pthread_cond_destroy(&server_data->work_available_cond);
+       pthread_mutex_destroy(&server_data->work_available_mutex);
+
+       strbuf_release(&server_data->buf_path);
+
+       free(server_data->fifo_fds);
+       free(server_data);
+}
diff --git a/compat/simple-ipc/ipc-win32.c b/compat/simple-ipc/ipc-win32.c
new file mode 100644 (file)
index 0000000..8f89c02
--- /dev/null
@@ -0,0 +1,751 @@
+#include "cache.h"
+#include "simple-ipc.h"
+#include "strbuf.h"
+#include "pkt-line.h"
+#include "thread-utils.h"
+
+#ifndef GIT_WINDOWS_NATIVE
+#error This file can only be compiled on Windows
+#endif
+
+static int initialize_pipe_name(const char *path, wchar_t *wpath, size_t alloc)
+{
+       int off = 0;
+       struct strbuf realpath = STRBUF_INIT;
+
+       if (!strbuf_realpath(&realpath, path, 0))
+               return -1;
+
+       off = swprintf(wpath, alloc, L"\\\\.\\pipe\\");
+       if (xutftowcs(wpath + off, realpath.buf, alloc - off) < 0)
+               return -1;
+
+       /* Handle drive prefix */
+       if (wpath[off] && wpath[off + 1] == L':') {
+               wpath[off + 1] = L'_';
+               off += 2;
+       }
+
+       for (; wpath[off]; off++)
+               if (wpath[off] == L'/')
+                       wpath[off] = L'\\';
+
+       strbuf_release(&realpath);
+       return 0;
+}
+
+static enum ipc_active_state get_active_state(wchar_t *pipe_path)
+{
+       if (WaitNamedPipeW(pipe_path, NMPWAIT_USE_DEFAULT_WAIT))
+               return IPC_STATE__LISTENING;
+
+       if (GetLastError() == ERROR_SEM_TIMEOUT)
+               return IPC_STATE__NOT_LISTENING;
+
+       if (GetLastError() == ERROR_FILE_NOT_FOUND)
+               return IPC_STATE__PATH_NOT_FOUND;
+
+       return IPC_STATE__OTHER_ERROR;
+}
+
+enum ipc_active_state ipc_get_active_state(const char *path)
+{
+       wchar_t pipe_path[MAX_PATH];
+
+       if (initialize_pipe_name(path, pipe_path, ARRAY_SIZE(pipe_path)) < 0)
+               return IPC_STATE__INVALID_PATH;
+
+       return get_active_state(pipe_path);
+}
+
+#define WAIT_STEP_MS (50)
+
+static enum ipc_active_state connect_to_server(
+       const wchar_t *wpath,
+       DWORD timeout_ms,
+       const struct ipc_client_connect_options *options,
+       int *pfd)
+{
+       DWORD t_start_ms, t_waited_ms;
+       DWORD step_ms;
+       HANDLE hPipe = INVALID_HANDLE_VALUE;
+       DWORD mode = PIPE_READMODE_BYTE;
+       DWORD gle;
+
+       *pfd = -1;
+
+       for (;;) {
+               hPipe = CreateFileW(wpath, GENERIC_READ | GENERIC_WRITE,
+                                   0, NULL, OPEN_EXISTING, 0, NULL);
+               if (hPipe != INVALID_HANDLE_VALUE)
+                       break;
+
+               gle = GetLastError();
+
+               switch (gle) {
+               case ERROR_FILE_NOT_FOUND:
+                       if (!options->wait_if_not_found)
+                               return IPC_STATE__PATH_NOT_FOUND;
+                       if (!timeout_ms)
+                               return IPC_STATE__PATH_NOT_FOUND;
+
+                       step_ms = (timeout_ms < WAIT_STEP_MS) ?
+                               timeout_ms : WAIT_STEP_MS;
+                       sleep_millisec(step_ms);
+
+                       timeout_ms -= step_ms;
+                       break; /* try again */
+
+               case ERROR_PIPE_BUSY:
+                       if (!options->wait_if_busy)
+                               return IPC_STATE__NOT_LISTENING;
+                       if (!timeout_ms)
+                               return IPC_STATE__NOT_LISTENING;
+
+                       t_start_ms = (DWORD)(getnanotime() / 1000000);
+
+                       if (!WaitNamedPipeW(wpath, timeout_ms)) {
+                               if (GetLastError() == ERROR_SEM_TIMEOUT)
+                                       return IPC_STATE__NOT_LISTENING;
+
+                               return IPC_STATE__OTHER_ERROR;
+                       }
+
+                       /*
+                        * A pipe server instance became available.
+                        * Race other client processes to connect to
+                        * it.
+                        *
+                        * But first decrement our overall timeout so
+                        * that we don't starve if we keep losing the
+                        * race.  But also guard against special
+                        * NPMWAIT_ values (0 and -1).
+                        */
+                       t_waited_ms = (DWORD)(getnanotime() / 1000000) - t_start_ms;
+                       if (t_waited_ms < timeout_ms)
+                               timeout_ms -= t_waited_ms;
+                       else
+                               timeout_ms = 1;
+                       break; /* try again */
+
+               default:
+                       return IPC_STATE__OTHER_ERROR;
+               }
+       }
+
+       if (!SetNamedPipeHandleState(hPipe, &mode, NULL, NULL)) {
+               CloseHandle(hPipe);
+               return IPC_STATE__OTHER_ERROR;
+       }
+
+       *pfd = _open_osfhandle((intptr_t)hPipe, O_RDWR|O_BINARY);
+       if (*pfd < 0) {
+               CloseHandle(hPipe);
+               return IPC_STATE__OTHER_ERROR;
+       }
+
+       /* fd now owns hPipe */
+
+       return IPC_STATE__LISTENING;
+}
+
+/*
+ * The default connection timeout for Windows clients.
+ *
+ * This is not currently part of the ipc_ API (nor the config settings)
+ * because of differences between Windows and other platforms.
+ *
+ * This value was chosen at random.
+ */
+#define WINDOWS_CONNECTION_TIMEOUT_MS (30000)
+
+enum ipc_active_state ipc_client_try_connect(
+       const char *path,
+       const struct ipc_client_connect_options *options,
+       struct ipc_client_connection **p_connection)
+{
+       wchar_t wpath[MAX_PATH];
+       enum ipc_active_state state = IPC_STATE__OTHER_ERROR;
+       int fd = -1;
+
+       *p_connection = NULL;
+
+       trace2_region_enter("ipc-client", "try-connect", NULL);
+       trace2_data_string("ipc-client", NULL, "try-connect/path", path);
+
+       if (initialize_pipe_name(path, wpath, ARRAY_SIZE(wpath)) < 0)
+               state = IPC_STATE__INVALID_PATH;
+       else
+               state = connect_to_server(wpath, WINDOWS_CONNECTION_TIMEOUT_MS,
+                                         options, &fd);
+
+       trace2_data_intmax("ipc-client", NULL, "try-connect/state",
+                          (intmax_t)state);
+       trace2_region_leave("ipc-client", "try-connect", NULL);
+
+       if (state == IPC_STATE__LISTENING) {
+               (*p_connection) = xcalloc(1, sizeof(struct ipc_client_connection));
+               (*p_connection)->fd = fd;
+       }
+
+       return state;
+}
+
+void ipc_client_close_connection(struct ipc_client_connection *connection)
+{
+       if (!connection)
+               return;
+
+       if (connection->fd != -1)
+               close(connection->fd);
+
+       free(connection);
+}
+
+int ipc_client_send_command_to_connection(
+       struct ipc_client_connection *connection,
+       const char *message, struct strbuf *answer)
+{
+       int ret = 0;
+
+       strbuf_setlen(answer, 0);
+
+       trace2_region_enter("ipc-client", "send-command", NULL);
+
+       if (write_packetized_from_buf_no_flush(message, strlen(message),
+                                              connection->fd) < 0 ||
+           packet_flush_gently(connection->fd) < 0) {
+               ret = error(_("could not send IPC command"));
+               goto done;
+       }
+
+       FlushFileBuffers((HANDLE)_get_osfhandle(connection->fd));
+
+       if (read_packetized_to_strbuf(
+                   connection->fd, answer,
+                   PACKET_READ_GENTLE_ON_EOF | PACKET_READ_GENTLE_ON_READ_ERROR) < 0) {
+               ret = error(_("could not read IPC response"));
+               goto done;
+       }
+
+done:
+       trace2_region_leave("ipc-client", "send-command", NULL);
+       return ret;
+}
+
+int ipc_client_send_command(const char *path,
+                           const struct ipc_client_connect_options *options,
+                           const char *message, struct strbuf *response)
+{
+       int ret = -1;
+       enum ipc_active_state state;
+       struct ipc_client_connection *connection = NULL;
+
+       state = ipc_client_try_connect(path, options, &connection);
+
+       if (state != IPC_STATE__LISTENING)
+               return ret;
+
+       ret = ipc_client_send_command_to_connection(connection, message, response);
+
+       ipc_client_close_connection(connection);
+
+       return ret;
+}
+
+/*
+ * Duplicate the given pipe handle and wrap it in a file descriptor so
+ * that we can use pkt-line on it.
+ */
+static int dup_fd_from_pipe(const HANDLE pipe)
+{
+       HANDLE process = GetCurrentProcess();
+       HANDLE handle;
+       int fd;
+
+       if (!DuplicateHandle(process, pipe, process, &handle, 0, FALSE,
+                            DUPLICATE_SAME_ACCESS)) {
+               errno = err_win_to_posix(GetLastError());
+               return -1;
+       }
+
+       fd = _open_osfhandle((intptr_t)handle, O_RDWR|O_BINARY);
+       if (fd < 0) {
+               errno = err_win_to_posix(GetLastError());
+               CloseHandle(handle);
+               return -1;
+       }
+
+       /*
+        * `handle` is now owned by `fd` and will be automatically closed
+        * when the descriptor is closed.
+        */
+
+       return fd;
+}
+
+/*
+ * Magic numbers used to annotate callback instance data.
+ * These are used to help guard against accidentally passing the
+ * wrong instance data across multiple levels of callbacks (which
+ * is easy to do if there are `void*` arguments).
+ */
+enum magic {
+       MAGIC_SERVER_REPLY_DATA,
+       MAGIC_SERVER_THREAD_DATA,
+       MAGIC_SERVER_DATA,
+};
+
+struct ipc_server_reply_data {
+       enum magic magic;
+       int fd;
+       struct ipc_server_thread_data *server_thread_data;
+};
+
+struct ipc_server_thread_data {
+       enum magic magic;
+       struct ipc_server_thread_data *next_thread;
+       struct ipc_server_data *server_data;
+       pthread_t pthread_id;
+       HANDLE hPipe;
+};
+
+/*
+ * On Windows, the conceptual "ipc-server" is implemented as a pool of
+ * n idential/peer "server-thread" threads.  That is, there is no
+ * hierarchy of threads; and therefore no controller thread managing
+ * the pool.  Each thread has an independent handle to the named pipe,
+ * receives incoming connections, processes the client, and re-uses
+ * the pipe for the next client connection.
+ *
+ * Therefore, the "ipc-server" only needs to maintain a list of the
+ * spawned threads for eventual "join" purposes.
+ *
+ * A single "stop-event" is visible to all of the server threads to
+ * tell them to shutdown (when idle).
+ */
+struct ipc_server_data {
+       enum magic magic;
+       ipc_server_application_cb *application_cb;
+       void *application_data;
+       struct strbuf buf_path;
+       wchar_t wpath[MAX_PATH];
+
+       HANDLE hEventStopRequested;
+       struct ipc_server_thread_data *thread_list;
+       int is_stopped;
+};
+
+enum connect_result {
+       CR_CONNECTED = 0,
+       CR_CONNECT_PENDING,
+       CR_CONNECT_ERROR,
+       CR_WAIT_ERROR,
+       CR_SHUTDOWN,
+};
+
+static enum connect_result queue_overlapped_connect(
+       struct ipc_server_thread_data *server_thread_data,
+       OVERLAPPED *lpo)
+{
+       if (ConnectNamedPipe(server_thread_data->hPipe, lpo))
+               goto failed;
+
+       switch (GetLastError()) {
+       case ERROR_IO_PENDING:
+               return CR_CONNECT_PENDING;
+
+       case ERROR_PIPE_CONNECTED:
+               SetEvent(lpo->hEvent);
+               return CR_CONNECTED;
+
+       default:
+               break;
+       }
+
+failed:
+       error(_("ConnectNamedPipe failed for '%s' (%lu)"),
+             server_thread_data->server_data->buf_path.buf,
+             GetLastError());
+       return CR_CONNECT_ERROR;
+}
+
+/*
+ * Use Windows Overlapped IO to wait for a connection or for our event
+ * to be signalled.
+ */
+static enum connect_result wait_for_connection(
+       struct ipc_server_thread_data *server_thread_data,
+       OVERLAPPED *lpo)
+{
+       enum connect_result r;
+       HANDLE waitHandles[2];
+       DWORD dwWaitResult;
+
+       r = queue_overlapped_connect(server_thread_data, lpo);
+       if (r != CR_CONNECT_PENDING)
+               return r;
+
+       waitHandles[0] = server_thread_data->server_data->hEventStopRequested;
+       waitHandles[1] = lpo->hEvent;
+
+       dwWaitResult = WaitForMultipleObjects(2, waitHandles, FALSE, INFINITE);
+       switch (dwWaitResult) {
+       case WAIT_OBJECT_0 + 0:
+               return CR_SHUTDOWN;
+
+       case WAIT_OBJECT_0 + 1:
+               ResetEvent(lpo->hEvent);
+               return CR_CONNECTED;
+
+       default:
+               return CR_WAIT_ERROR;
+       }
+}
+
+/*
+ * Forward declare our reply callback function so that any compiler
+ * errors are reported when we actually define the function (in addition
+ * to any errors reported when we try to pass this callback function as
+ * a parameter in a function call).  The former are easier to understand.
+ */
+static ipc_server_reply_cb do_io_reply_callback;
+
+/*
+ * Relay application's response message to the client process.
+ * (We do not flush at this point because we allow the caller
+ * to chunk data to the client thru us.)
+ */
+static int do_io_reply_callback(struct ipc_server_reply_data *reply_data,
+                      const char *response, size_t response_len)
+{
+       if (reply_data->magic != MAGIC_SERVER_REPLY_DATA)
+               BUG("reply_cb called with wrong instance data");
+
+       return write_packetized_from_buf_no_flush(response, response_len,
+                                                 reply_data->fd);
+}
+
+/*
+ * Receive the request/command from the client and pass it to the
+ * registered request-callback.  The request-callback will compose
+ * a response and call our reply-callback to send it to the client.
+ *
+ * Simple-IPC only contains one round trip, so we flush and close
+ * here after the response.
+ */
+static int do_io(struct ipc_server_thread_data *server_thread_data)
+{
+       struct strbuf buf = STRBUF_INIT;
+       struct ipc_server_reply_data reply_data;
+       int ret = 0;
+
+       reply_data.magic = MAGIC_SERVER_REPLY_DATA;
+       reply_data.server_thread_data = server_thread_data;
+
+       reply_data.fd = dup_fd_from_pipe(server_thread_data->hPipe);
+       if (reply_data.fd < 0)
+               return error(_("could not create fd from pipe for '%s'"),
+                            server_thread_data->server_data->buf_path.buf);
+
+       ret = read_packetized_to_strbuf(
+               reply_data.fd, &buf,
+               PACKET_READ_GENTLE_ON_EOF | PACKET_READ_GENTLE_ON_READ_ERROR);
+       if (ret >= 0) {
+               ret = server_thread_data->server_data->application_cb(
+                       server_thread_data->server_data->application_data,
+                       buf.buf, do_io_reply_callback, &reply_data);
+
+               packet_flush_gently(reply_data.fd);
+
+               FlushFileBuffers((HANDLE)_get_osfhandle((reply_data.fd)));
+       }
+       else {
+               /*
+                * The client probably disconnected/shutdown before it
+                * could send a well-formed message.  Ignore it.
+                */
+       }
+
+       strbuf_release(&buf);
+       close(reply_data.fd);
+
+       return ret;
+}
+
+/*
+ * Handle IPC request and response with this connected client.  And reset
+ * the pipe to prepare for the next client.
+ */
+static int use_connection(struct ipc_server_thread_data *server_thread_data)
+{
+       int ret;
+
+       ret = do_io(server_thread_data);
+
+       FlushFileBuffers(server_thread_data->hPipe);
+       DisconnectNamedPipe(server_thread_data->hPipe);
+
+       return ret;
+}
+
+/*
+ * Thread proc for an IPC server worker thread.  It handles a series of
+ * connections from clients.  It cleans and reuses the hPipe between each
+ * client.
+ */
+static void *server_thread_proc(void *_server_thread_data)
+{
+       struct ipc_server_thread_data *server_thread_data = _server_thread_data;
+       HANDLE hEventConnected = INVALID_HANDLE_VALUE;
+       OVERLAPPED oConnect;
+       enum connect_result cr;
+       int ret;
+
+       assert(server_thread_data->hPipe != INVALID_HANDLE_VALUE);
+
+       trace2_thread_start("ipc-server");
+       trace2_data_string("ipc-server", NULL, "pipe",
+                          server_thread_data->server_data->buf_path.buf);
+
+       hEventConnected = CreateEventW(NULL, TRUE, FALSE, NULL);
+
+       memset(&oConnect, 0, sizeof(oConnect));
+       oConnect.hEvent = hEventConnected;
+
+       for (;;) {
+               cr = wait_for_connection(server_thread_data, &oConnect);
+
+               switch (cr) {
+               case CR_SHUTDOWN:
+                       goto finished;
+
+               case CR_CONNECTED:
+                       ret = use_connection(server_thread_data);
+                       if (ret == SIMPLE_IPC_QUIT) {
+                               ipc_server_stop_async(
+                                       server_thread_data->server_data);
+                               goto finished;
+                       }
+                       if (ret > 0) {
+                               /*
+                                * Ignore (transient) IO errors with this
+                                * client and reset for the next client.
+                                */
+                       }
+                       break;
+
+               case CR_CONNECT_PENDING:
+                       /* By construction, this should not happen. */
+                       BUG("ipc-server[%s]: unexpeced CR_CONNECT_PENDING",
+                           server_thread_data->server_data->buf_path.buf);
+
+               case CR_CONNECT_ERROR:
+               case CR_WAIT_ERROR:
+                       /*
+                        * Ignore these theoretical errors.
+                        */
+                       DisconnectNamedPipe(server_thread_data->hPipe);
+                       break;
+
+               default:
+                       BUG("unandled case after wait_for_connection");
+               }
+       }
+
+finished:
+       CloseHandle(server_thread_data->hPipe);
+       CloseHandle(hEventConnected);
+
+       trace2_thread_exit();
+       return NULL;
+}
+
+static HANDLE create_new_pipe(wchar_t *wpath, int is_first)
+{
+       HANDLE hPipe;
+       DWORD dwOpenMode, dwPipeMode;
+       LPSECURITY_ATTRIBUTES lpsa = NULL;
+
+       dwOpenMode = PIPE_ACCESS_INBOUND | PIPE_ACCESS_OUTBOUND |
+               FILE_FLAG_OVERLAPPED;
+
+       dwPipeMode = PIPE_TYPE_MESSAGE | PIPE_READMODE_BYTE | PIPE_WAIT |
+               PIPE_REJECT_REMOTE_CLIENTS;
+
+       if (is_first) {
+               dwOpenMode |= FILE_FLAG_FIRST_PIPE_INSTANCE;
+
+               /*
+                * On Windows, the first server pipe instance gets to
+                * set the ACL / Security Attributes on the named
+                * pipe; subsequent instances inherit and cannot
+                * change them.
+                *
+                * TODO Should we allow the application layer to
+                * specify security attributes, such as `LocalService`
+                * or `LocalSystem`, when we create the named pipe?
+                * This question is probably not important when the
+                * daemon is started by a foreground user process and
+                * only needs to talk to the current user, but may be
+                * if the daemon is run via the Control Panel as a
+                * System Service.
+                */
+       }
+
+       hPipe = CreateNamedPipeW(wpath, dwOpenMode, dwPipeMode,
+                                PIPE_UNLIMITED_INSTANCES, 1024, 1024, 0, lpsa);
+
+       return hPipe;
+}
+
+int ipc_server_run_async(struct ipc_server_data **returned_server_data,
+                        const char *path, const struct ipc_server_opts *opts,
+                        ipc_server_application_cb *application_cb,
+                        void *application_data)
+{
+       struct ipc_server_data *server_data;
+       wchar_t wpath[MAX_PATH];
+       HANDLE hPipeFirst = INVALID_HANDLE_VALUE;
+       int k;
+       int ret = 0;
+       int nr_threads = opts->nr_threads;
+
+       *returned_server_data = NULL;
+
+       ret = initialize_pipe_name(path, wpath, ARRAY_SIZE(wpath));
+       if (ret < 0) {
+               errno = EINVAL;
+               return -1;
+       }
+
+       hPipeFirst = create_new_pipe(wpath, 1);
+       if (hPipeFirst == INVALID_HANDLE_VALUE) {
+               errno = EADDRINUSE;
+               return -2;
+       }
+
+       server_data = xcalloc(1, sizeof(*server_data));
+       server_data->magic = MAGIC_SERVER_DATA;
+       server_data->application_cb = application_cb;
+       server_data->application_data = application_data;
+       server_data->hEventStopRequested = CreateEvent(NULL, TRUE, FALSE, NULL);
+       strbuf_init(&server_data->buf_path, 0);
+       strbuf_addstr(&server_data->buf_path, path);
+       wcscpy(server_data->wpath, wpath);
+
+       if (nr_threads < 1)
+               nr_threads = 1;
+
+       for (k = 0; k < nr_threads; k++) {
+               struct ipc_server_thread_data *std;
+
+               std = xcalloc(1, sizeof(*std));
+               std->magic = MAGIC_SERVER_THREAD_DATA;
+               std->server_data = server_data;
+               std->hPipe = INVALID_HANDLE_VALUE;
+
+               std->hPipe = (k == 0)
+                       ? hPipeFirst
+                       : create_new_pipe(server_data->wpath, 0);
+
+               if (std->hPipe == INVALID_HANDLE_VALUE) {
+                       /*
+                        * If we've reached a pipe instance limit for
+                        * this path, just use fewer threads.
+                        */
+                       free(std);
+                       break;
+               }
+
+               if (pthread_create(&std->pthread_id, NULL,
+                                  server_thread_proc, std)) {
+                       /*
+                        * Likewise, if we're out of threads, just use
+                        * fewer threads than requested.
+                        *
+                        * However, we just give up if we can't even get
+                        * one thread.  This should not happen.
+                        */
+                       if (k == 0)
+                               die(_("could not start thread[0] for '%s'"),
+                                   path);
+
+                       CloseHandle(std->hPipe);
+                       free(std);
+                       break;
+               }
+
+               std->next_thread = server_data->thread_list;
+               server_data->thread_list = std;
+       }
+
+       *returned_server_data = server_data;
+       return 0;
+}
+
+int ipc_server_stop_async(struct ipc_server_data *server_data)
+{
+       if (!server_data)
+               return 0;
+
+       /*
+        * Gently tell all of the ipc_server threads to shutdown.
+        * This will be seen the next time they are idle (and waiting
+        * for a connection).
+        *
+        * We DO NOT attempt to force them to drop an active connection.
+        */
+       SetEvent(server_data->hEventStopRequested);
+       return 0;
+}
+
+int ipc_server_await(struct ipc_server_data *server_data)
+{
+       DWORD dwWaitResult;
+
+       if (!server_data)
+               return 0;
+
+       dwWaitResult = WaitForSingleObject(server_data->hEventStopRequested, INFINITE);
+       if (dwWaitResult != WAIT_OBJECT_0)
+               return error(_("wait for hEvent failed for '%s'"),
+                            server_data->buf_path.buf);
+
+       while (server_data->thread_list) {
+               struct ipc_server_thread_data *std = server_data->thread_list;
+
+               pthread_join(std->pthread_id, NULL);
+
+               server_data->thread_list = std->next_thread;
+               free(std);
+       }
+
+       server_data->is_stopped = 1;
+
+       return 0;
+}
+
+void ipc_server_free(struct ipc_server_data *server_data)
+{
+       if (!server_data)
+               return;
+
+       if (!server_data->is_stopped)
+               BUG("cannot free ipc-server while running for '%s'",
+                   server_data->buf_path.buf);
+
+       strbuf_release(&server_data->buf_path);
+
+       if (server_data->hEventStopRequested != INVALID_HANDLE_VALUE)
+               CloseHandle(server_data->hEventStopRequested);
+
+       while (server_data->thread_list) {
+               struct ipc_server_thread_data *std = server_data->thread_list;
+
+               server_data->thread_list = std->next_thread;
+               free(std);
+       }
+
+       free(server_data);
+}
index b922b4f28572890f402226faccd1dd48a8fc9476..6428393a4143b7cd9060e31dea039b639b5db22d 100644 (file)
--- a/config.c
+++ b/config.c
@@ -1180,6 +1180,20 @@ static void die_bad_number(const char *name, const char *value)
        }
 }
 
+NORETURN
+static void die_bad_bool(const char *name, const char *value)
+{
+       if (!strcmp(name, "GIT_TEST_GETTEXT_POISON"))
+               /*
+                * We explicitly *don't* use _() here since it would
+                * cause an infinite loop with _() needing to call
+                * use_gettext_poison().
+                */
+               die("bad boolean config value '%s' for '%s'", value, name);
+       else
+               die(_("bad boolean config value '%s' for '%s'"), value, name);
+}
+
 int git_config_int(const char *name, const char *value)
 {
        int ret;
@@ -1252,8 +1266,10 @@ int git_config_bool_or_int(const char *name, const char *value, int *is_bool)
 
 int git_config_bool(const char *name, const char *value)
 {
-       int discard;
-       return !!git_config_bool_or_int(name, value, &discard);
+       int v = git_parse_maybe_bool(value);
+       if (v < 0)
+               die_bad_bool(name, value);
+       return v;
 }
 
 int git_config_string(const char **dest, const char *var, const char *value)
@@ -2253,7 +2269,7 @@ static void repo_read_config(struct repository *repo)
        opts.git_dir = repo->gitdir;
 
        if (!repo->config)
-               repo->config = xcalloc(1, sizeof(struct config_set));
+               CALLOC_ARRAY(repo->config, 1);
        else
                git_configset_clear(repo->config);
 
index e22d4b6d67a382132564ed033128eef03dca7ab5..cb443b4e023adb9957b17714ed4c72bc21dc8744 100644 (file)
@@ -124,6 +124,9 @@ ifeq ($(uname_S),Darwin)
        ifeq ($(shell test "`expr "$(uname_R)" : '\([0-9][0-9]*\)\.'`" -ge 11 && echo 1),1)
                HAVE_GETDELIM = YesPlease
        endif
+       ifeq ($(shell test "`expr "$(uname_R)" : '\([0-9][0-9]*\)\.'`" -ge 20 && echo 1),1)
+               OPEN_RETURNS_EINTR = UnfortunatelyYes
+       endif
        NO_MEMMEM = YesPlease
        USE_ST_TIMESPEC = YesPlease
        HAVE_DEV_TTY = YesPlease
@@ -421,6 +424,7 @@ ifeq ($(uname_S),Windows)
        RUNTIME_PREFIX = YesPlease
        HAVE_WPGMPTR = YesWeDo
        NO_ST_BLOCKS_IN_STRUCT_STAT = YesPlease
+       USE_WIN32_IPC = YesPlease
        USE_WIN32_MMAP = YesPlease
        MMAP_PREVENTS_DELETE = UnfortunatelyYes
        # USE_NED_ALLOCATOR = YesPlease
@@ -597,6 +601,7 @@ ifneq (,$(findstring MINGW,$(uname_S)))
        RUNTIME_PREFIX = YesPlease
        HAVE_WPGMPTR = YesWeDo
        NO_ST_BLOCKS_IN_STRUCT_STAT = YesPlease
+       USE_WIN32_IPC = YesPlease
        USE_WIN32_MMAP = YesPlease
        MMAP_PREVENTS_DELETE = UnfortunatelyYes
        USE_NED_ALLOCATOR = YesPlease
index 9c97fee43031056dff2beb2a8fe9ed882e476c2d..40b5c15f811305648e22e0c2db55fbd1998cf211 100644 (file)
--- a/connect.c
+++ b/connect.c
@@ -376,7 +376,8 @@ struct ref **get_remote_heads(struct packet_reader *reader,
 }
 
 /* Returns 1 when a valid ref has been added to `list`, 0 otherwise */
-static int process_ref_v2(struct packet_reader *reader, struct ref ***list)
+static int process_ref_v2(struct packet_reader *reader, struct ref ***list,
+                         char **unborn_head_target)
 {
        int ret = 1;
        int i = 0;
@@ -397,6 +398,25 @@ static int process_ref_v2(struct packet_reader *reader, struct ref ***list)
                goto out;
        }
 
+       if (!strcmp("unborn", line_sections.items[i].string)) {
+               i++;
+               if (unborn_head_target &&
+                   !strcmp("HEAD", line_sections.items[i++].string)) {
+                       /*
+                        * Look for the symref target (if any). If found,
+                        * return it to the caller.
+                        */
+                       for (; i < line_sections.nr; i++) {
+                               const char *arg = line_sections.items[i].string;
+
+                               if (skip_prefix(arg, "symref-target:", &arg)) {
+                                       *unborn_head_target = xstrdup(arg);
+                                       break;
+                               }
+                       }
+               }
+               goto out;
+       }
        if (parse_oid_hex_algop(line_sections.items[i++].string, &old_oid, &end, reader->hash_algo) ||
            *end) {
                ret = 0;
@@ -453,12 +473,16 @@ void check_stateless_delimiter(int stateless_rpc,
 
 struct ref **get_remote_refs(int fd_out, struct packet_reader *reader,
                             struct ref **list, int for_push,
-                            const struct strvec *ref_prefixes,
+                            struct transport_ls_refs_options *transport_options,
                             const struct string_list *server_options,
                             int stateless_rpc)
 {
        int i;
        const char *hash_name;
+       struct strvec *ref_prefixes = transport_options ?
+               &transport_options->ref_prefixes : NULL;
+       char **unborn_head_target = transport_options ?
+               &transport_options->unborn_head_target : NULL;
        *list = NULL;
 
        if (server_supports_v2("ls-refs", 1))
@@ -488,6 +512,8 @@ struct ref **get_remote_refs(int fd_out, struct packet_reader *reader,
        if (!for_push)
                packet_write_fmt(fd_out, "peel\n");
        packet_write_fmt(fd_out, "symrefs\n");
+       if (server_supports_feature("ls-refs", "unborn", 0))
+               packet_write_fmt(fd_out, "unborn\n");
        for (i = 0; ref_prefixes && i < ref_prefixes->nr; i++) {
                packet_write_fmt(fd_out, "ref-prefix %s\n",
                                 ref_prefixes->v[i]);
@@ -496,7 +522,7 @@ struct ref **get_remote_refs(int fd_out, struct packet_reader *reader,
 
        /* Process response from server */
        while (packet_reader_read(reader) == PACKET_READ_NORMAL) {
-               if (!process_ref_v2(reader, &list))
+               if (!process_ref_v2(reader, &list, unborn_head_target))
                        die(_("invalid ls-refs response: %s"), reader->line);
        }
 
index ac3dbc079af8319ca6bb2344e874fef4f518b219..75ed198a6a36302117a2ec2b7ae6f11171518250 100644 (file)
@@ -58,6 +58,10 @@ if(WIN32)
 
        # In the vcpkg edition, we need this to be able to link to libcurl
        set(CURL_NO_CURL_CMAKE ON)
+
+       # Copy the necessary vcpkg DLLs (like iconv) to the install dir
+       set(X_VCPKG_APPLOCAL_DEPS_INSTALL ON)
+       set(CMAKE_TOOLCHAIN_FILE ${VCPKG_DIR}/scripts/buildsystems/vcpkg.cmake CACHE STRING "Vcpkg toolchain file")
 endif()
 
 find_program(SH_EXE sh PATHS "C:/Program Files/Git/bin")
@@ -243,7 +247,13 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
 
 elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
        add_compile_definitions(PROCFS_EXECUTABLE_PATH="/proc/self/exe" HAVE_DEV_TTY )
-       list(APPEND compat_SOURCES unix-socket.c)
+       list(APPEND compat_SOURCES unix-socket.c unix-stream-server.c)
+endif()
+
+if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
+       list(APPEND compat_SOURCES compat/simple-ipc/ipc-shared.c compat/simple-ipc/ipc-win32.c)
+else()
+       list(APPEND compat_SOURCES compat/simple-ipc/ipc-shared.c compat/simple-ipc/ipc-unix-socket.c)
 endif()
 
 set(EXE_EXTENSION ${CMAKE_EXECUTABLE_SUFFIX})
@@ -685,13 +695,17 @@ endif()
 
 parse_makefile_for_executables(git_builtin_extra "BUILT_INS")
 
+option(SKIP_DASHED_BUILT_INS "Skip hardlinking the dashed versions of the built-ins")
+
 #Creating hardlinks
+if(NOT SKIP_DASHED_BUILT_INS)
 foreach(s ${git_SOURCES} ${git_builtin_extra})
        string(REPLACE "${CMAKE_SOURCE_DIR}/builtin/" "" s ${s})
        string(REPLACE ".c" "" s ${s})
        file(APPEND ${CMAKE_BINARY_DIR}/CreateLinks.cmake "file(CREATE_LINK git${EXE_EXTENSION} git-${s}${EXE_EXTENSION})\n")
        list(APPEND git_links ${CMAKE_BINARY_DIR}/git-${s}${EXE_EXTENSION})
 endforeach()
+endif()
 
 if(CURL_FOUND)
        set(remote_exes
@@ -807,15 +821,19 @@ list(TRANSFORM git_shell_scripts PREPEND "${CMAKE_BINARY_DIR}/")
 list(TRANSFORM git_perl_scripts PREPEND "${CMAKE_BINARY_DIR}/")
 
 #install
-install(TARGETS git git-shell
+foreach(program ${PROGRAMS_BUILT})
+if(program STREQUAL "git" OR program STREQUAL "git-shell")
+install(TARGETS ${program}
        RUNTIME DESTINATION bin)
+else()
+install(TARGETS ${program}
+       RUNTIME DESTINATION libexec/git-core)
+endif()
+endforeach()
+
 install(PROGRAMS ${CMAKE_BINARY_DIR}/git-cvsserver
        DESTINATION bin)
 
-list(REMOVE_ITEM PROGRAMS_BUILT git git-shell)
-install(TARGETS ${PROGRAMS_BUILT}
-       RUNTIME DESTINATION libexec/git-core)
-
 set(bin_links
        git-receive-pack git-upload-archive git-upload-pack)
 
@@ -828,12 +846,12 @@ install(CODE "file(CREATE_LINK ${CMAKE_INSTALL_PREFIX}/bin/git-shell${EXE_EXTENS
 
 foreach(b ${git_links})
        string(REPLACE "${CMAKE_BINARY_DIR}" "" b ${b})
-       install(CODE "file(CREATE_LINK ${CMAKE_INSTALL_PREFIX}/bin/git${EXE_EXTENSION} ${CMAKE_INSTALL_PREFIX}/libexec/git-core/${b}${EXE_EXTENSION})")
+       install(CODE "file(CREATE_LINK ${CMAKE_INSTALL_PREFIX}/bin/git${EXE_EXTENSION} ${CMAKE_INSTALL_PREFIX}/libexec/git-core/${b})")
 endforeach()
 
 foreach(b ${git_http_links})
        string(REPLACE "${CMAKE_BINARY_DIR}" "" b ${b})
-       install(CODE "file(CREATE_LINK  ${CMAKE_INSTALL_PREFIX}/libexec/git-core/git-remote-http${EXE_EXTENSION} ${CMAKE_INSTALL_PREFIX}/libexec/git-core/${b}${EXE_EXTENSION})")
+       install(CODE "file(CREATE_LINK  ${CMAKE_INSTALL_PREFIX}/libexec/git-core/git-remote-http${EXE_EXTENSION} ${CMAKE_INSTALL_PREFIX}/libexec/git-core/${b})")
 endforeach()
 
 install(PROGRAMS ${git_shell_scripts} ${git_perl_scripts} ${CMAKE_BINARY_DIR}/git-p4
index 46b8d2ee11151b97e4e0cfd56afcf059247d1c54..9a4f00cb1bdc2e189fa3ccb41d842988e2430a92 100644 (file)
@@ -88,3 +88,11 @@ expression n;
 @@
 - ptr = xmalloc((n) * sizeof(T));
 + ALLOC_ARRAY(ptr, n);
+
+@@
+type T;
+T *ptr;
+expression n != 1;
+@@
+- ptr = xcalloc(n, \( sizeof(*ptr) \| sizeof(T) \) )
++ CALLOC_ARRAY(ptr, n)
diff --git a/contrib/coccinelle/xcalloc.cocci b/contrib/coccinelle/xcalloc.cocci
new file mode 100644 (file)
index 0000000..c291011
--- /dev/null
@@ -0,0 +1,10 @@
+@@
+type T;
+T *ptr;
+expression n;
+@@
+  xcalloc(
++ n,
+  \( sizeof(T) \| sizeof(*ptr) \)
+- , n
+  )
index 4b1f4264a64e6d8bf4c09fae8573f86726f5cad1..e1a66954fe8b5136eef987e136a46a118b33bbab 100644 (file)
@@ -1447,8 +1447,10 @@ _git_branch ()
        while [ $c -lt $cword ]; do
                i="${words[c]}"
                case "$i" in
-               -d|--delete|-m|--move)  only_local_ref="y" ;;
-               -r|--remotes)           has_r="y" ;;
+               -d|-D|--delete|-m|-M|--move|-c|-C|--copy)
+                       only_local_ref="y" ;;
+               -r|--remotes)
+                       has_r="y" ;;
                esac
                ((c++))
        done
@@ -3051,7 +3053,7 @@ _git_stash ()
                        __gitcomp "--name-status --oneline --patch-with-stat"
                        ;;
                show,--*)
-                       __gitcomp "$__git_diff_common_options"
+                       __gitcomp "--include-untracked --only-untracked $__git_diff_common_options"
                        ;;
                branch,--*)
                        ;;
index ee360c2f07ced0daa8f3f7b1b651fae7c245cb26..45ac75f80c8e943ad76877266d2cc64cce3f38d8 100644 (file)
--- a/convert.c
+++ b/convert.c
 #define CONVERT_STAT_BITS_TXT_CRLF  0x2
 #define CONVERT_STAT_BITS_BIN       0x4
 
-enum crlf_action {
-       CRLF_UNDEFINED,
-       CRLF_BINARY,
-       CRLF_TEXT,
-       CRLF_TEXT_INPUT,
-       CRLF_TEXT_CRLF,
-       CRLF_AUTO,
-       CRLF_AUTO_INPUT,
-       CRLF_AUTO_CRLF
-};
-
 struct text_stat {
        /* NUL, CR, LF and CRLF counts */
        unsigned nul, lonecr, lonelf, crlf;
@@ -172,7 +161,7 @@ static int text_eol_is_crlf(void)
        return 0;
 }
 
-static enum eol output_eol(enum crlf_action crlf_action)
+static enum eol output_eol(enum convert_crlf_action crlf_action)
 {
        switch (crlf_action) {
        case CRLF_BINARY:
@@ -246,7 +235,7 @@ static int has_crlf_in_index(const struct index_state *istate, const char *path)
 }
 
 static int will_convert_lf_to_crlf(struct text_stat *stats,
-                                  enum crlf_action crlf_action)
+                                  enum convert_crlf_action crlf_action)
 {
        if (output_eol(crlf_action) != EOL_CRLF)
                return 0;
@@ -499,7 +488,7 @@ static int encode_to_worktree(const char *path, const char *src, size_t src_len,
 static int crlf_to_git(const struct index_state *istate,
                       const char *path, const char *src, size_t len,
                       struct strbuf *buf,
-                      enum crlf_action crlf_action, int conv_flags)
+                      enum convert_crlf_action crlf_action, int conv_flags)
 {
        struct text_stat stats;
        char *dst;
@@ -585,8 +574,8 @@ static int crlf_to_git(const struct index_state *istate,
        return 1;
 }
 
-static int crlf_to_worktree(const char *src, size_t len,
-                           struct strbuf *buf, enum crlf_action crlf_action)
+static int crlf_to_worktree(const char *src, size_t len, struct strbuf *buf,
+                           enum convert_crlf_action crlf_action)
 {
        char *to_free = NULL;
        struct text_stat stats;
@@ -884,9 +873,13 @@ static int apply_multi_file_filter(const char *path, const char *src, size_t len
                goto done;
 
        if (fd >= 0)
-               err = write_packetized_from_fd(fd, process->in);
+               err = write_packetized_from_fd_no_flush(fd, process->in);
        else
-               err = write_packetized_from_buf(src, len, process->in);
+               err = write_packetized_from_buf_no_flush(src, len, process->in);
+       if (err)
+               goto done;
+
+       err = packet_flush_gently(process->in);
        if (err)
                goto done;
 
@@ -903,7 +896,8 @@ static int apply_multi_file_filter(const char *path, const char *src, size_t len
                if (err)
                        goto done;
 
-               err = read_packetized_to_strbuf(process->out, &nbuf) < 0;
+               err = read_packetized_to_strbuf(process->out, &nbuf,
+                                               PACKET_READ_GENTLE_ON_EOF) < 0;
                if (err)
                        goto done;
 
@@ -1028,7 +1022,7 @@ static int read_convert_config(const char *var, const char *value, void *cb)
                if (!strncmp(drv->name, name, namelen) && !drv->name[namelen])
                        break;
        if (!drv) {
-               drv = xcalloc(1, sizeof(struct convert_driver));
+               CALLOC_ARRAY(drv, 1);
                drv->name = xmemdupz(name, namelen);
                *user_convert_tail = drv;
                user_convert_tail = &(drv->next);
@@ -1247,7 +1241,7 @@ static const char *git_path_check_encoding(struct attr_check_item *check)
        return value;
 }
 
-static enum crlf_action git_path_check_crlf(struct attr_check_item *check)
+static enum convert_crlf_action git_path_check_crlf(struct attr_check_item *check)
 {
        const char *value = check->value;
 
@@ -1297,18 +1291,10 @@ static int git_path_check_ident(struct attr_check_item *check)
        return !!ATTR_TRUE(value);
 }
 
-struct conv_attrs {
-       struct convert_driver *drv;
-       enum crlf_action attr_action; /* What attr says */
-       enum crlf_action crlf_action; /* When no attr is set, use core.autocrlf */
-       int ident;
-       const char *working_tree_encoding; /* Supported encoding or default encoding if NULL */
-};
-
 static struct attr_check *check;
 
-static void convert_attrs(const struct index_state *istate,
-                         struct conv_attrs *ca, const char *path)
+void convert_attrs(const struct index_state *istate,
+                  struct conv_attrs *ca, const char *path)
 {
        struct attr_check_item *ccheck = NULL;
 
@@ -1456,7 +1442,6 @@ void convert_to_git_filter_fd(const struct index_state *istate,
        convert_attrs(istate, &ca, path);
 
        assert(ca.drv);
-       assert(ca.drv->clean || ca.drv->process);
 
        if (!apply_filter(path, NULL, 0, fd, dst, ca.drv, CAP_CLEAN, NULL, NULL))
                die(_("%s: clean filter '%s' failed"), path, ca.drv->name);
@@ -1466,19 +1451,16 @@ void convert_to_git_filter_fd(const struct index_state *istate,
        ident_to_git(dst->buf, dst->len, dst, ca.ident);
 }
 
-static int convert_to_working_tree_internal(const struct index_state *istate,
-                                           const char *path, const char *src,
-                                           size_t len, struct strbuf *dst,
-                                           int normalizing,
-                                           const struct checkout_metadata *meta,
-                                           struct delayed_checkout *dco)
+static int convert_to_working_tree_ca_internal(const struct conv_attrs *ca,
+                                              const char *path, const char *src,
+                                              size_t len, struct strbuf *dst,
+                                              int normalizing,
+                                              const struct checkout_metadata *meta,
+                                              struct delayed_checkout *dco)
 {
        int ret = 0, ret_filter = 0;
-       struct conv_attrs ca;
 
-       convert_attrs(istate, &ca, path);
-
-       ret |= ident_to_worktree(src, len, dst, ca.ident);
+       ret |= ident_to_worktree(src, len, dst, ca->ident);
        if (ret) {
                src = dst->buf;
                len = dst->len;
@@ -1488,49 +1470,56 @@ static int convert_to_working_tree_internal(const struct index_state *istate,
         * is a smudge or process filter (even if the process filter doesn't
         * support smudge).  The filters might expect CRLFs.
         */
-       if ((ca.drv && (ca.drv->smudge || ca.drv->process)) || !normalizing) {
-               ret |= crlf_to_worktree(src, len, dst, ca.crlf_action);
+       if ((ca->drv && (ca->drv->smudge || ca->drv->process)) || !normalizing) {
+               ret |= crlf_to_worktree(src, len, dst, ca->crlf_action);
                if (ret) {
                        src = dst->buf;
                        len = dst->len;
                }
        }
 
-       ret |= encode_to_worktree(path, src, len, dst, ca.working_tree_encoding);
+       ret |= encode_to_worktree(path, src, len, dst, ca->working_tree_encoding);
        if (ret) {
                src = dst->buf;
                len = dst->len;
        }
 
        ret_filter = apply_filter(
-               path, src, len, -1, dst, ca.drv, CAP_SMUDGE, meta, dco);
-       if (!ret_filter && ca.drv && ca.drv->required)
-               die(_("%s: smudge filter %s failed"), path, ca.drv->name);
+               path, src, len, -1, dst, ca->drv, CAP_SMUDGE, meta, dco);
+       if (!ret_filter && ca->drv && ca->drv->required)
+               die(_("%s: smudge filter %s failed"), path, ca->drv->name);
 
        return ret | ret_filter;
 }
 
-int async_convert_to_working_tree(const struct index_state *istate,
-                                 const char *path, const char *src,
-                                 size_t len, struct strbuf *dst,
-                                 const struct checkout_metadata *meta,
-                                 void *dco)
+int async_convert_to_working_tree_ca(const struct conv_attrs *ca,
+                                    const char *path, const char *src,
+                                    size_t len, struct strbuf *dst,
+                                    const struct checkout_metadata *meta,
+                                    void *dco)
 {
-       return convert_to_working_tree_internal(istate, path, src, len, dst, 0, meta, dco);
+       return convert_to_working_tree_ca_internal(ca, path, src, len, dst, 0,
+                                                  meta, dco);
 }
 
-int convert_to_working_tree(const struct index_state *istate,
-                           const char *path, const char *src,
-                           size_t len, struct strbuf *dst,
-                           const struct checkout_metadata *meta)
+int convert_to_working_tree_ca(const struct conv_attrs *ca,
+                              const char *path, const char *src,
+                              size_t len, struct strbuf *dst,
+                              const struct checkout_metadata *meta)
 {
-       return convert_to_working_tree_internal(istate, path, src, len, dst, 0, meta, NULL);
+       return convert_to_working_tree_ca_internal(ca, path, src, len, dst, 0,
+                                                  meta, NULL);
 }
 
 int renormalize_buffer(const struct index_state *istate, const char *path,
                       const char *src, size_t len, struct strbuf *dst)
 {
-       int ret = convert_to_working_tree_internal(istate, path, src, len, dst, 1, NULL, NULL);
+       struct conv_attrs ca;
+       int ret;
+
+       convert_attrs(istate, &ca, path);
+       ret = convert_to_working_tree_ca_internal(&ca, path, src, len, dst, 1,
+                                                 NULL, NULL);
        if (ret) {
                src = dst->buf;
                len = dst->len;
@@ -1957,34 +1946,25 @@ static struct stream_filter *ident_filter(const struct object_id *oid)
 }
 
 /*
- * Return an appropriately constructed filter for the path, or NULL if
+ * Return an appropriately constructed filter for the given ca, or NULL if
  * the contents cannot be filtered without reading the whole thing
  * in-core.
  *
  * Note that you would be crazy to set CRLF, smudge/clean or ident to a
  * large binary blob you would want us not to slurp into the memory!
  */
-struct stream_filter *get_stream_filter(const struct index_state *istate,
-                                       const char *path,
-                                       const struct object_id *oid)
+struct stream_filter *get_stream_filter_ca(const struct conv_attrs *ca,
+                                          const struct object_id *oid)
 {
-       struct conv_attrs ca;
        struct stream_filter *filter = NULL;
 
-       convert_attrs(istate, &ca, path);
-       if (ca.drv && (ca.drv->process || ca.drv->smudge || ca.drv->clean))
+       if (classify_conv_attrs(ca) != CA_CLASS_STREAMABLE)
                return NULL;
 
-       if (ca.working_tree_encoding)
-               return NULL;
-
-       if (ca.crlf_action == CRLF_AUTO || ca.crlf_action == CRLF_AUTO_CRLF)
-               return NULL;
-
-       if (ca.ident)
+       if (ca->ident)
                filter = ident_filter(oid);
 
-       if (output_eol(ca.crlf_action) == EOL_CRLF)
+       if (output_eol(ca->crlf_action) == EOL_CRLF)
                filter = cascade_filter(filter, lf_to_crlf_filter());
        else
                filter = cascade_filter(filter, &null_filter_singleton);
@@ -1992,6 +1972,15 @@ struct stream_filter *get_stream_filter(const struct index_state *istate,
        return filter;
 }
 
+struct stream_filter *get_stream_filter(const struct index_state *istate,
+                                       const char *path,
+                                       const struct object_id *oid)
+{
+       struct conv_attrs ca;
+       convert_attrs(istate, &ca, path);
+       return get_stream_filter_ca(&ca, oid);
+}
+
 void free_stream_filter(struct stream_filter *filter)
 {
        filter->vtbl->free(filter);
@@ -2025,3 +2014,21 @@ void clone_checkout_metadata(struct checkout_metadata *dst,
        if (blob)
                oidcpy(&dst->blob, blob);
 }
+
+enum conv_attrs_classification classify_conv_attrs(const struct conv_attrs *ca)
+{
+       if (ca->drv) {
+               if (ca->drv->process)
+                       return CA_CLASS_INCORE_PROCESS;
+               if (ca->drv->smudge || ca->drv->clean)
+                       return CA_CLASS_INCORE_FILTER;
+       }
+
+       if (ca->working_tree_encoding)
+               return CA_CLASS_INCORE;
+
+       if (ca->crlf_action == CRLF_AUTO || ca->crlf_action == CRLF_AUTO_CRLF)
+               return CA_CLASS_INCORE;
+
+       return CA_CLASS_STREAMABLE;
+}
index e29d1026a6866b63b047b6838727bcb71ea6eccb..43e567a59b063d1a13e51cdde8a8e8d157d7bda8 100644 (file)
--- a/convert.h
+++ b/convert.h
@@ -63,6 +63,30 @@ struct checkout_metadata {
        struct object_id blob;
 };
 
+enum convert_crlf_action {
+       CRLF_UNDEFINED,
+       CRLF_BINARY,
+       CRLF_TEXT,
+       CRLF_TEXT_INPUT,
+       CRLF_TEXT_CRLF,
+       CRLF_AUTO,
+       CRLF_AUTO_INPUT,
+       CRLF_AUTO_CRLF
+};
+
+struct convert_driver;
+
+struct conv_attrs {
+       struct convert_driver *drv;
+       enum convert_crlf_action attr_action; /* What attr says */
+       enum convert_crlf_action crlf_action; /* When no attr is set, use core.autocrlf */
+       int ident;
+       const char *working_tree_encoding; /* Supported encoding or default encoding if NULL */
+};
+
+void convert_attrs(const struct index_state *istate,
+                  struct conv_attrs *ca, const char *path);
+
 extern enum eol core_eol;
 extern char *check_roundtrip_encoding;
 const char *get_cached_convert_stats_ascii(const struct index_state *istate,
@@ -75,15 +99,34 @@ const char *get_convert_attr_ascii(const struct index_state *istate,
 int convert_to_git(const struct index_state *istate,
                   const char *path, const char *src, size_t len,
                   struct strbuf *dst, int conv_flags);
-int convert_to_working_tree(const struct index_state *istate,
-                           const char *path, const char *src,
-                           size_t len, struct strbuf *dst,
-                           const struct checkout_metadata *meta);
-int async_convert_to_working_tree(const struct index_state *istate,
-                                 const char *path, const char *src,
-                                 size_t len, struct strbuf *dst,
-                                 const struct checkout_metadata *meta,
-                                 void *dco);
+int convert_to_working_tree_ca(const struct conv_attrs *ca,
+                              const char *path, const char *src,
+                              size_t len, struct strbuf *dst,
+                              const struct checkout_metadata *meta);
+int async_convert_to_working_tree_ca(const struct conv_attrs *ca,
+                                    const char *path, const char *src,
+                                    size_t len, struct strbuf *dst,
+                                    const struct checkout_metadata *meta,
+                                    void *dco);
+static inline int convert_to_working_tree(const struct index_state *istate,
+                                         const char *path, const char *src,
+                                         size_t len, struct strbuf *dst,
+                                         const struct checkout_metadata *meta)
+{
+       struct conv_attrs ca;
+       convert_attrs(istate, &ca, path);
+       return convert_to_working_tree_ca(&ca, path, src, len, dst, meta);
+}
+static inline int async_convert_to_working_tree(const struct index_state *istate,
+                                               const char *path, const char *src,
+                                               size_t len, struct strbuf *dst,
+                                               const struct checkout_metadata *meta,
+                                               void *dco)
+{
+       struct conv_attrs ca;
+       convert_attrs(istate, &ca, path);
+       return async_convert_to_working_tree_ca(&ca, path, src, len, dst, meta, dco);
+}
 int async_query_available_blobs(const char *cmd,
                                struct string_list *available_paths);
 int renormalize_buffer(const struct index_state *istate,
@@ -136,6 +179,8 @@ struct stream_filter; /* opaque */
 struct stream_filter *get_stream_filter(const struct index_state *istate,
                                        const char *path,
                                        const struct object_id *);
+struct stream_filter *get_stream_filter_ca(const struct conv_attrs *ca,
+                                          const struct object_id *oid);
 void free_stream_filter(struct stream_filter *);
 int is_null_stream_filter(struct stream_filter *);
 
@@ -155,4 +200,37 @@ int stream_filter(struct stream_filter *,
                  const char *input, size_t *isize_p,
                  char *output, size_t *osize_p);
 
+enum conv_attrs_classification {
+       /*
+        * The blob must be loaded into a buffer before it can be
+        * smudged. All smudging is done in-proc.
+        */
+       CA_CLASS_INCORE,
+
+       /*
+        * The blob must be loaded into a buffer, but uses a
+        * single-file driver filter, such as rot13.
+        */
+       CA_CLASS_INCORE_FILTER,
+
+       /*
+        * The blob must be loaded into a buffer, but uses a
+        * long-running driver process, such as LFS. This might or
+        * might not use delayed operations. (The important thing is
+        * that there is a single subordinate long-running process
+        * handling all associated blobs and in case of delayed
+        * operations, may hold per-blob state.)
+        */
+       CA_CLASS_INCORE_PROCESS,
+
+       /*
+        * The blob can be streamed and smudged without needing to
+        * completely read it into a buffer.
+        */
+       CA_CLASS_STREAMABLE,
+};
+
+enum conv_attrs_classification classify_conv_attrs(
+       const struct conv_attrs *ca);
+
 #endif /* CONVERT_H */
index 0f35fa5ee47c5280b73c945a0043dea439917eb5..7510950fa3e99dbbf147ffc5d444d4570a7be23c 100644 (file)
@@ -89,32 +89,35 @@ int finalize_hashfile(struct hashfile *f, unsigned char *result, unsigned int fl
 void hashwrite(struct hashfile *f, const void *buf, unsigned int count)
 {
        while (count) {
-               unsigned offset = f->offset;
-               unsigned left = sizeof(f->buffer) - offset;
+               unsigned left = sizeof(f->buffer) - f->offset;
                unsigned nr = count > left ? left : count;
-               const void *data;
 
                if (f->do_crc)
                        f->crc32 = crc32(f->crc32, buf, nr);
 
                if (nr == sizeof(f->buffer)) {
-                       /* process full buffer directly without copy */
-                       data = buf;
+                       /*
+                        * Flush a full batch worth of data directly
+                        * from the input, skipping the memcpy() to
+                        * the hashfile's buffer. In this block,
+                        * f->offset is necessarily zero.
+                        */
+                       the_hash_algo->update_fn(&f->ctx, buf, nr);
+                       flush(f, buf, nr);
                } else {
-                       memcpy(f->buffer + offset, buf, nr);
-                       data = f->buffer;
+                       /*
+                        * Copy to the hashfile's buffer, flushing only
+                        * if it became full.
+                        */
+                       memcpy(f->buffer + f->offset, buf, nr);
+                       f->offset += nr;
+                       left -= nr;
+                       if (!left)
+                               hashflush(f);
                }
 
                count -= nr;
-               offset += nr;
                buf = (char *) buf + nr;
-               left -= nr;
-               if (!left) {
-                       the_hash_algo->update_fn(&f->ctx, data, offset);
-                       flush(f, data, offset);
-                       offset = 0;
-               }
-               f->offset = offset;
        }
 }
 
index 2ab7ea82eb0b4f7c62c553e1e65c16644983f7de..343531980dea11fc15b927c67542fe6ad5f11a3d 100644 (file)
--- a/daemon.c
+++ b/daemon.c
@@ -840,7 +840,7 @@ static void add_child(struct child_process *cld, struct sockaddr *addr, socklen_
 {
        struct child *newborn, **cradle;
 
-       newborn = xcalloc(1, sizeof(*newborn));
+       CALLOC_ARRAY(newborn, 1);
        live_children++;
        memcpy(&newborn->cld, cld, sizeof(*cld));
        memcpy(&newborn->address, addr, addrlen);
@@ -1148,7 +1148,7 @@ static int service_loop(struct socketlist *socklist)
        struct pollfd *pfd;
        int i;
 
-       pfd = xcalloc(socklist->nr, sizeof(struct pollfd));
+       CALLOC_ARRAY(pfd, socklist->nr);
 
        for (i = 0; i < socklist->nr; i++) {
                pfd[i].fd = socklist->list[i];
index a605b1b5f4ac7844693919ca8afee3a699d1b424..2036d15967125303effff870a45066710ef99e3e 100644 (file)
@@ -39,7 +39,7 @@ static void grow_decoration(struct decoration *n)
        struct decoration_entry *old_entries = n->entries;
 
        n->size = (old_size + 1000) * 3 / 2;
-       n->entries = xcalloc(n->size, sizeof(struct decoration_entry));
+       CALLOC_ARRAY(n->entries, n->size);
        n->nr = 0;
 
        for (i = 0; i < old_size; i++) {
index b73cc1859a49eb8b7f3cf7321680dfda4d96c705..e5a58c9259cfdfac91090e2baabd45ccf1945960 100644 (file)
  * exists for ce that is a submodule -- it is a submodule that is not
  * checked out).  Return negative for an error.
  */
-static int check_removed(const struct cache_entry *ce, struct stat *st)
+static int check_removed(const struct index_state *istate, const struct cache_entry *ce, struct stat *st)
 {
-       if (lstat(ce->name, st) < 0) {
+       assert(is_fsmonitor_refreshed(istate));
+       if (!(ce->ce_flags & CE_FSMONITOR_VALID) && lstat(ce->name, st) < 0) {
                if (!is_missing_file_error(errno))
                        return -1;
                return 1;
@@ -136,7 +137,7 @@ int run_diff_files(struct rev_info *revs, unsigned int option)
                        memset(&(dpath->parent[0]), 0,
                               sizeof(struct combine_diff_parent)*5);
 
-                       changed = check_removed(ce, &st);
+                       changed = check_removed(istate, ce, &st);
                        if (!changed)
                                wt_mode = ce_mode_from_stat(ce, st.st_mode);
                        else {
@@ -216,7 +217,7 @@ int run_diff_files(struct rev_info *revs, unsigned int option)
                } else {
                        struct stat st;
 
-                       changed = check_removed(ce, &st);
+                       changed = check_removed(istate, ce, &st);
                        if (changed) {
                                if (changed < 0) {
                                        perror(ce->name);
@@ -278,7 +279,8 @@ static void diff_index_show_file(struct rev_info *revs,
                       oid, oid_valid, ce->name, dirty_submodule);
 }
 
-static int get_stat_data(const struct cache_entry *ce,
+static int get_stat_data(const struct index_state *istate,
+                        const struct cache_entry *ce,
                         const struct object_id **oidp,
                         unsigned int *modep,
                         int cached, int match_missing,
@@ -290,7 +292,7 @@ static int get_stat_data(const struct cache_entry *ce,
        if (!cached && !ce_uptodate(ce)) {
                int changed;
                struct stat st;
-               changed = check_removed(ce, &st);
+               changed = check_removed(istate, ce, &st);
                if (changed < 0)
                        return -1;
                else if (changed) {
@@ -321,12 +323,13 @@ static void show_new_file(struct rev_info *revs,
        const struct object_id *oid;
        unsigned int mode;
        unsigned dirty_submodule = 0;
+       struct index_state *istate = revs->diffopt.repo->index;
 
        /*
         * New file in the index: it might actually be different in
         * the working tree.
         */
-       if (get_stat_data(new_file, &oid, &mode, cached, match_missing,
+       if (get_stat_data(istate, new_file, &oid, &mode, cached, match_missing,
            &dirty_submodule, &revs->diffopt) < 0)
                return;
 
@@ -342,8 +345,9 @@ static int show_modified(struct rev_info *revs,
        unsigned int mode, oldmode;
        const struct object_id *oid;
        unsigned dirty_submodule = 0;
+       struct index_state *istate = revs->diffopt.repo->index;
 
-       if (get_stat_data(new_entry, &oid, &mode, cached, match_missing,
+       if (get_stat_data(istate, new_entry, &oid, &mode, cached, match_missing,
                          &dirty_submodule, &revs->diffopt) < 0) {
                if (report_missing)
                        diff_index_show_file(revs, "-", old_entry,
@@ -574,6 +578,7 @@ int run_diff_index(struct rev_info *revs, unsigned int option)
        struct object_id oid;
        const char *name;
        char merge_base_hex[GIT_MAX_HEXSZ + 1];
+       struct index_state *istate = revs->diffopt.repo->index;
 
        if (revs->pending.nr != 1)
                BUG("run_diff_index must be passed exactly one tree");
@@ -581,6 +586,8 @@ int run_diff_index(struct rev_info *revs, unsigned int option)
        trace_performance_enter();
        ent = revs->pending.objects;
 
+       refresh_fsmonitor(istate);
+
        if (merge_base) {
                diff_get_merge_base(revs, &oid);
                name = oid_to_hex_r(merge_base_hex, &oid);
diff --git a/diff.c b/diff.c
index 69e3bc00ed8f72ad8d012175541166a6cec4ffcd..4acccd9d7edbb9e097a1d5b8b3bc2ff0ebf3acdb 100644 (file)
--- a/diff.c
+++ b/diff.c
@@ -2233,14 +2233,12 @@ static void init_diff_words_data(struct emit_callback *ecbdata,
        struct diff_options *o = xmalloc(sizeof(struct diff_options));
        memcpy(o, orig_opts, sizeof(struct diff_options));
 
-       ecbdata->diff_words =
-               xcalloc(1, sizeof(struct diff_words_data));
+       CALLOC_ARRAY(ecbdata->diff_words, 1);
        ecbdata->diff_words->type = o->word_diff;
        ecbdata->diff_words->opt = o;
 
        if (orig_opts->emitted_symbols)
-               o->emitted_symbols =
-                       xcalloc(1, sizeof(struct emitted_diff_symbols));
+               CALLOC_ARRAY(o->emitted_symbols, 1);
 
        if (!o->word_regex)
                o->word_regex = userdiff_word_regex(one, o->repo->index);
@@ -2509,7 +2507,7 @@ static struct diffstat_file *diffstat_add(struct diffstat_t *diffstat,
                                          const char *name_b)
 {
        struct diffstat_file *x;
-       x = xcalloc(1, sizeof(*x));
+       CALLOC_ARRAY(x, 1);
        ALLOC_GROW(diffstat->files, diffstat->nr + 1, diffstat->alloc);
        diffstat->files[diffstat->nr++] = x;
        if (name_b) {
@@ -4918,7 +4916,7 @@ static int diff_opt_find_object(const struct option *option,
                return error(_("unable to resolve '%s'"), arg);
 
        if (!opt->objfind)
-               opt->objfind = xcalloc(1, sizeof(*opt->objfind));
+               CALLOC_ARRAY(opt->objfind, 1);
 
        opt->pickaxe_opts |= DIFF_PICKAXE_KIND_OBJFIND;
        opt->flags.recursive = 1;
@@ -5348,6 +5346,19 @@ static int diff_opt_word_diff_regex(const struct option *opt,
        return 0;
 }
 
+static int diff_opt_rotate_to(const struct option *opt, const char *arg, int unset)
+{
+       struct diff_options *options = opt->value;
+
+       BUG_ON_OPT_NEG(unset);
+       if (!strcmp(opt->long_name, "skip-to"))
+               options->skip_instead_of_rotate = 1;
+       else
+               options->skip_instead_of_rotate = 0;
+       options->rotate_to = arg;
+       return 0;
+}
+
 static void prep_parse_options(struct diff_options *options)
 {
        struct option parseopts[] = {
@@ -5599,6 +5610,12 @@ static void prep_parse_options(struct diff_options *options)
                          DIFF_PICKAXE_REGEX, PARSE_OPT_NONEG),
                OPT_FILENAME('O', NULL, &options->orderfile,
                             N_("control the order in which files appear in the output")),
+               OPT_CALLBACK_F(0, "rotate-to", options, N_("<path>"),
+                              N_("show the change in the specified path first"),
+                              PARSE_OPT_NONEG, diff_opt_rotate_to),
+               OPT_CALLBACK_F(0, "skip-to", options, N_("<path>"),
+                              N_("skip the output to the specified path"),
+                              PARSE_OPT_NONEG, diff_opt_rotate_to),
                OPT_CALLBACK_F(0, "find-object", options, N_("<object-id>"),
                               N_("look for differences that change the number of occurrences of the specified object"),
                               PARSE_OPT_NONEG, diff_opt_find_object),
@@ -6336,6 +6353,32 @@ static void diff_flush_patch_all_file_pairs(struct diff_options *o)
        }
 }
 
+static void diff_free_file(struct diff_options *options)
+{
+       if (options->close_file)
+               fclose(options->file);
+}
+
+static void diff_free_ignore_regex(struct diff_options *options)
+{
+       int i;
+
+       for (i = 0; i < options->ignore_regex_nr; i++) {
+               regfree(options->ignore_regex[i]);
+               free(options->ignore_regex[i]);
+       }
+       free(options->ignore_regex);
+}
+
+void diff_free(struct diff_options *options)
+{
+       if (options->no_free)
+               return;
+
+       diff_free_file(options);
+       diff_free_ignore_regex(options);
+}
+
 void diff_flush(struct diff_options *options)
 {
        struct diff_queue_struct *q = &diff_queued_diff;
@@ -6399,8 +6442,7 @@ void diff_flush(struct diff_options *options)
                 * options->file to /dev/null should be safe, because we
                 * aren't supposed to produce any output anyway.
                 */
-               if (options->close_file)
-                       fclose(options->file);
+               diff_free_file(options);
                options->file = xfopen("/dev/null", "w");
                options->close_file = 1;
                options->color_moved = 0;
@@ -6433,8 +6475,7 @@ void diff_flush(struct diff_options *options)
 free_queue:
        free(q->queue);
        DIFF_QUEUE_CLEAR(q);
-       if (options->close_file)
-               fclose(options->file);
+       diff_free(options);
 
        /*
         * Report the content-level differences with HAS_CHANGES;
@@ -6669,6 +6710,8 @@ void diffcore_std(struct diff_options *options)
                diffcore_pickaxe(options);
        if (options->orderfile)
                diffcore_order(options->orderfile);
+       if (options->rotate_to)
+               diffcore_rotate(options);
        if (!options->found_follow)
                /* See try_to_follow_renames() in tree-diff.c */
                diff_resolve_rename_copy();
diff --git a/diff.h b/diff.h
index 2ff2b1c7f2ca05ca8c2c194f6a7447fb0965dbed..c8f3faea8aa9ad9d627ec61326d89cd8f2ea27c5 100644 (file)
--- a/diff.h
+++ b/diff.h
  * - Once you finish feeding the pairs of files, call `diffcore_std()`.
  * This will tell the diffcore library to go ahead and do its work.
  *
- * - Calling `diff_flush()` will produce the output.
+ * - Calling `diff_flush()` will produce the output, it will call
+ *   `diff_free()` to free any resources, e.g. those allocated in
+ *   `diff_opt_parse()`.
+ *
+ * - Set `.no_free = 1` before calling `diff_flush()` to defer the
+ *   freeing of allocated memory in diff_options. This is useful when
+ *   `diff_flush()` is being called in a loop, rather than as a
+ *   one-off. When setting `.no_free = 1` you must ensure that
+ *   `diff_free()` is called at the end, either by flipping the flag
+ *   before the last `diff_flush()` call, or by flipping it before
+ *   calling `diff_free()` yourself.
  */
 
 struct combine_diff_path;
@@ -227,6 +237,27 @@ enum diff_submodule_format {
 struct diff_options {
        const char *orderfile;
 
+       /*
+        * "--rotate-to=<file>" would start showing at <file> and when
+        * the output reaches the end, wrap around by default.
+        * Setting skip_instead_of_rotate to true stops the output at the
+        * end, effectively discarding the earlier part of the output
+        * before <file>'s diff (this is used to implement the
+        * "--skip-to=<file>" option).
+        *
+        * When rotate_to_strict is set, it is an error if there is no
+        * <file> in the diff.  Otherwise, the output starts at the
+        * path that is the same as, or first path that sorts after,
+        * <file>.  Because it is unreasonable to require the exact
+        * match for "git log -p --rotate-to=<file>" (i.e. not all
+        * commit would touch that single <file>), "git log" sets it
+        * to false.  "git diff" sets it to true to detect an error
+        * in the command line option.
+        */
+       const char *rotate_to;
+       int skip_instead_of_rotate;
+       int rotate_to_strict;
+
        /**
         * A constant string (can and typically does contain newlines to look for
         * a block of text, not just a single line) to filter out the filepairs
@@ -365,6 +396,8 @@ struct diff_options {
 
        struct repository *repo;
        struct option *parseopts;
+
+       int no_free;
 };
 
 unsigned diff_filter_bit(char status);
@@ -559,6 +592,7 @@ void diffcore_fix_diff_index(void);
 
 int diff_queue_is_empty(void);
 void diff_flush(struct diff_options*);
+void diff_free(struct diff_options*);
 void diff_warn_rename_limit(const char *varname, int needed, int degraded_cc);
 
 /* diff-raw status letters */
index e8508541be14ba1a4e344886213377a145e03c66..36a98f9c496bdf3fe3c7995e8969650a213fef11 100644 (file)
@@ -1241,8 +1241,7 @@ void diffcore_rename_extended(struct diff_options *options,
                                (uint64_t)num_destinations * (uint64_t)num_sources);
        }
 
-       mx = xcalloc(st_mult(NUM_CANDIDATE_PER_DST, num_destinations),
-                    sizeof(*mx));
+       CALLOC_ARRAY(mx, st_mult(NUM_CANDIDATE_PER_DST, num_destinations));
        for (dst_cnt = i = 0; i < rename_dst_nr; i++) {
                struct diff_filespec *two = rename_dst[i].p->two;
                struct diff_score *m;
diff --git a/diffcore-rotate.c b/diffcore-rotate.c
new file mode 100644 (file)
index 0000000..445f060
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2021, Google LLC.
+ * Based on diffcore-order.c, which is Copyright (C) 2005, Junio C Hamano
+ */
+#include "cache.h"
+#include "diff.h"
+#include "diffcore.h"
+
+void diffcore_rotate(struct diff_options *opt)
+{
+       struct diff_queue_struct *q = &diff_queued_diff;
+       struct diff_queue_struct outq;
+       int rotate_to, i;
+
+       if (!q->nr)
+               return;
+
+       for (i = 0; i < q->nr; i++) {
+               int cmp = strcmp(opt->rotate_to, q->queue[i]->two->path);
+               if (!cmp)
+                       break; /* exact match */
+               if (!opt->rotate_to_strict && cmp < 0)
+                       break; /* q->queue[i] is now past the target pathname */
+       }
+
+       if (q->nr <= i) {
+               /* we did not find the specified path */
+               if (opt->rotate_to_strict)
+                       die(_("No such path '%s' in the diff"), opt->rotate_to);
+               return;
+       }
+
+       DIFF_QUEUE_CLEAR(&outq);
+       rotate_to = i;
+
+       for (i = rotate_to; i < q->nr; i++)
+               diff_q(&outq, q->queue[i]);
+       for (i = 0; i < rotate_to; i++) {
+               if (opt->skip_instead_of_rotate)
+                       diff_free_filepair(q->queue[i]);
+               else
+                       diff_q(&outq, q->queue[i]);
+       }
+       free(q->queue);
+       *q = outq;
+}
index 737c93a6cc791d4dfffeae2ab8166029fc5fd7b7..d76982f22019f27dfe4f297cfddf7e377fe8b915 100644 (file)
@@ -172,6 +172,7 @@ void diffcore_rename_extended(struct diff_options *options,
 void diffcore_merge_broken(void);
 void diffcore_pickaxe(struct diff_options *);
 void diffcore_order(const char *orderfile);
+void diffcore_rotate(struct diff_options *);
 
 /* low-level interface to diffcore_order */
 struct obj_order {
diff --git a/dir.c b/dir.c
index d153a63bbd14e1ee197602368717fb2ca42c4e72..3474e67e8f3c0f12303784dca09be56c7a226344 100644 (file)
--- a/dir.c
+++ b/dir.c
@@ -1035,6 +1035,9 @@ static int add_patterns_from_buffer(char *buf, size_t size,
                                    const char *base, int baselen,
                                    struct pattern_list *pl);
 
+/* Flags for add_patterns() */
+#define PATTERN_NOFOLLOW (1<<0)
+
 /*
  * Given a file with name "fname", read it (either from disk, or from
  * an index if 'istate' is non-null), parse it and store the
@@ -1046,7 +1049,7 @@ static int add_patterns_from_buffer(char *buf, size_t size,
  */
 static int add_patterns(const char *fname, const char *base, int baselen,
                        struct pattern_list *pl, struct index_state *istate,
-                       struct oid_stat *oid_stat)
+                       unsigned flags, struct oid_stat *oid_stat)
 {
        struct stat st;
        int r;
@@ -1054,7 +1057,11 @@ static int add_patterns(const char *fname, const char *base, int baselen,
        size_t size = 0;
        char *buf;
 
-       fd = open(fname, O_RDONLY);
+       if (flags & PATTERN_NOFOLLOW)
+               fd = open_nofollow(fname, O_RDONLY);
+       else
+               fd = open(fname, O_RDONLY);
+
        if (fd < 0 || fstat(fd, &st) < 0) {
                if (fd < 0)
                        warn_on_fopen_errors(fname);
@@ -1143,9 +1150,10 @@ static int add_patterns_from_buffer(char *buf, size_t size,
 
 int add_patterns_from_file_to_list(const char *fname, const char *base,
                                   int baselen, struct pattern_list *pl,
-                                  struct index_state *istate)
+                                  struct index_state *istate,
+                                  unsigned flags)
 {
-       return add_patterns(fname, base, baselen, pl, istate, NULL);
+       return add_patterns(fname, base, baselen, pl, istate, flags, NULL);
 }
 
 int add_patterns_from_blob_to_list(
@@ -1194,7 +1202,7 @@ static void add_patterns_from_file_1(struct dir_struct *dir, const char *fname,
        if (!dir->untracked)
                dir->unmanaged_exclude_files++;
        pl = add_pattern_list(dir, EXC_FILE, fname);
-       if (add_patterns(fname, "", 0, pl, NULL, oid_stat) < 0)
+       if (add_patterns(fname, "", 0, pl, NULL, 0, oid_stat) < 0)
                die(_("cannot use %s as an exclude file"), fname);
 }
 
@@ -1488,7 +1496,7 @@ static void prep_exclude(struct dir_struct *dir,
                const char *cp;
                struct oid_stat oid_stat;
 
-               stk = xcalloc(1, sizeof(*stk));
+               CALLOC_ARRAY(stk, 1);
                if (current < 0) {
                        cp = base;
                        current = 0;
@@ -1558,6 +1566,7 @@ static void prep_exclude(struct dir_struct *dir,
                        strbuf_addstr(&sb, dir->exclude_per_dir);
                        pl->src = strbuf_detach(&sb, NULL);
                        add_patterns(pl->src, pl->src, stk->baselen, pl, istate,
+                                    PATTERN_NOFOLLOW,
                                     untracked ? &oid_stat : NULL);
                }
                /*
@@ -2730,11 +2739,8 @@ static struct untracked_cache_dir *validate_untracked_cache(struct dir_struct *d
                return NULL;
        }
 
-       if (!dir->untracked->root) {
-               const int len = sizeof(*dir->untracked->root);
-               dir->untracked->root = xmalloc(len);
-               memset(dir->untracked->root, 0, len);
-       }
+       if (!dir->untracked->root)
+               FLEX_ALLOC_STR(dir->untracked->root, name, "");
 
        /* Validate $GIT_DIR/info/exclude and core.excludesfile */
        root = dir->untracked->root;
@@ -3009,7 +3015,7 @@ int get_sparse_checkout_patterns(struct pattern_list *pl)
        char *sparse_filename = get_sparse_checkout_filename();
 
        pl->use_cone_patterns = core_sparse_checkout_cone;
-       res = add_patterns_from_file_to_list(sparse_filename, "", 0, pl, NULL);
+       res = add_patterns_from_file_to_list(sparse_filename, "", 0, pl, NULL, 0);
 
        free(sparse_filename);
        return res;
@@ -3165,7 +3171,7 @@ void write_untracked_extension(struct strbuf *out, struct untracked_cache *untra
        int varint_len;
        const unsigned hashsz = the_hash_algo->rawsz;
 
-       ouc = xcalloc(1, sizeof(*ouc));
+       CALLOC_ARRAY(ouc, 1);
        stat_data_to_disk(&ouc->info_exclude_stat, &untracked->ss_info_exclude.stat);
        stat_data_to_disk(&ouc->excludes_file_stat, &untracked->ss_excludes_file.stat);
        ouc->dir_flags = htonl(untracked->dir_flags);
@@ -3376,7 +3382,7 @@ struct untracked_cache *read_untracked_extension(const void *data, unsigned long
        if (next + exclude_per_dir_offset + 1 > end)
                return NULL;
 
-       uc = xcalloc(1, sizeof(*uc));
+       CALLOC_ARRAY(uc, 1);
        strbuf_init(&uc->ident, ident_len);
        strbuf_add(&uc->ident, ident, ident_len);
        load_oid_stat(&uc->ss_info_exclude,
diff --git a/dir.h b/dir.h
index facfae47402adcd982f3fc3b066a7dbbd1f615bd..04d886cfce75ed28799bdc29c226cfbc890de5fe 100644 (file)
--- a/dir.h
+++ b/dir.h
@@ -420,7 +420,8 @@ int hashmap_contains_parent(struct hashmap *map,
 struct pattern_list *add_pattern_list(struct dir_struct *dir,
                                      int group_type, const char *src);
 int add_patterns_from_file_to_list(const char *fname, const char *base, int baselen,
-                                  struct pattern_list *pl, struct  index_state *istate);
+                                  struct pattern_list *pl, struct index_state *istate,
+                                  unsigned flags);
 void add_patterns_from_file(struct dir_struct *, const char *fname);
 int add_patterns_from_blob_to_list(struct object_id *oid,
                                   const char *base, int baselen,
diff --git a/entry.c b/entry.c
index a0532f1f00007be7c9b675a54a7e8c48c000d638..2dc94ba5cc2a53502c4b6b1dc579cee659671287 100644 (file)
--- a/entry.c
+++ b/entry.c
@@ -6,6 +6,7 @@
 #include "submodule.h"
 #include "progress.h"
 #include "fsmonitor.h"
+#include "entry.h"
 
 static void create_directories(const char *path, int path_len,
                               const struct checkout *state)
@@ -83,7 +84,7 @@ static int create_file(const char *path, unsigned int mode)
        return open(path, O_WRONLY | O_CREAT | O_EXCL, mode);
 }
 
-static void *read_blob_entry(const struct cache_entry *ce, unsigned long *size)
+void *read_blob_entry(const struct cache_entry *ce, unsigned long *size)
 {
        enum object_type type;
        void *blob_data = read_object_file(&ce->oid, &type, size);
@@ -108,7 +109,7 @@ static int open_output_fd(char *path, const struct cache_entry *ce, int to_tempf
        }
 }
 
-static int fstat_output(int fd, const struct checkout *state, struct stat *st)
+int fstat_checkout_output(int fd, const struct checkout *state, struct stat *st)
 {
        /* use fstat() only when path == ce->name */
        if (fstat_is_reliable() &&
@@ -131,7 +132,7 @@ static int streaming_write_entry(const struct cache_entry *ce, char *path,
                return -1;
 
        result |= stream_blob_to_fd(fd, &ce->oid, filter, 1);
-       *fstat_done = fstat_output(fd, state, statbuf);
+       *fstat_done = fstat_checkout_output(fd, state, statbuf);
        result |= close(fd);
 
        if (result)
@@ -250,8 +251,21 @@ int finish_delayed_checkout(struct checkout *state, int *nr_checkouts)
        return errs;
 }
 
-static int write_entry(struct cache_entry *ce,
-                      char *path, const struct checkout *state, int to_tempfile)
+void update_ce_after_write(const struct checkout *state, struct cache_entry *ce,
+                          struct stat *st)
+{
+       if (state->refresh_cache) {
+               assert(state->istate);
+               fill_stat_cache_info(state->istate, ce, st);
+               ce->ce_flags |= CE_UPDATE_IN_BASE;
+               mark_fsmonitor_invalid(state->istate, ce);
+               state->istate->cache_changed |= CE_ENTRY_CHANGED;
+       }
+}
+
+/* Note: ca is used (and required) iff the entry refers to a regular file. */
+static int write_entry(struct cache_entry *ce, char *path, struct conv_attrs *ca,
+                      const struct checkout *state, int to_tempfile)
 {
        unsigned int ce_mode_s_ifmt = ce->ce_mode & S_IFMT;
        struct delayed_checkout *dco = state->delayed_checkout;
@@ -268,8 +282,7 @@ static int write_entry(struct cache_entry *ce,
        clone_checkout_metadata(&meta, &state->meta, &ce->oid);
 
        if (ce_mode_s_ifmt == S_IFREG) {
-               struct stream_filter *filter = get_stream_filter(state->istate, ce->name,
-                                                                &ce->oid);
+               struct stream_filter *filter = get_stream_filter_ca(ca, &ce->oid);
                if (filter &&
                    !streaming_write_entry(ce, path, filter,
                                           state, to_tempfile,
@@ -282,7 +295,7 @@ static int write_entry(struct cache_entry *ce,
                new_blob = read_blob_entry(ce, &size);
                if (!new_blob)
                        return error("unable to read sha1 file of %s (%s)",
-                                    path, oid_to_hex(&ce->oid));
+                                    ce->name, oid_to_hex(&ce->oid));
 
                /*
                 * We can't make a real symlink; write out a regular file entry
@@ -309,21 +322,24 @@ static int write_entry(struct cache_entry *ce,
                        new_blob = read_blob_entry(ce, &size);
                        if (!new_blob)
                                return error("unable to read sha1 file of %s (%s)",
-                                            path, oid_to_hex(&ce->oid));
+                                            ce->name, oid_to_hex(&ce->oid));
                }
 
                /*
                 * Convert from git internal format to working tree format
                 */
                if (dco && dco->state != CE_NO_DELAY) {
-                       ret = async_convert_to_working_tree(state->istate, ce->name, new_blob,
-                                                           size, &buf, &meta, dco);
+                       ret = async_convert_to_working_tree_ca(ca, ce->name,
+                                                              new_blob, size,
+                                                              &buf, &meta, dco);
                        if (ret && string_list_has_string(&dco->paths, ce->name)) {
                                free(new_blob);
                                goto delayed;
                        }
-               } else
-                       ret = convert_to_working_tree(state->istate, ce->name, new_blob, size, &buf, &meta);
+               } else {
+                       ret = convert_to_working_tree_ca(ca, ce->name, new_blob,
+                                                        size, &buf, &meta);
+               }
 
                if (ret) {
                        free(new_blob);
@@ -345,7 +361,7 @@ static int write_entry(struct cache_entry *ce,
 
                wrote = write_in_full(fd, new_blob, size);
                if (!to_tempfile)
-                       fstat_done = fstat_output(fd, state, &st);
+                       fstat_done = fstat_checkout_output(fd, state, &st);
                close(fd);
                free(new_blob);
                if (wrote < 0)
@@ -354,7 +370,7 @@ static int write_entry(struct cache_entry *ce,
 
        case S_IFGITLINK:
                if (to_tempfile)
-                       return error("cannot create temporary submodule %s", path);
+                       return error("cannot create temporary submodule %s", ce->name);
                if (mkdir(path, 0777) < 0)
                        return error("cannot create submodule directory %s", path);
                sub = submodule_from_ce(ce);
@@ -365,20 +381,15 @@ static int write_entry(struct cache_entry *ce,
                break;
 
        default:
-               return error("unknown file mode for %s in index", path);
+               return error("unknown file mode for %s in index", ce->name);
        }
 
 finish:
        if (state->refresh_cache) {
-               assert(state->istate);
-               if (!fstat_done)
-                       if (lstat(ce->name, &st) < 0)
-                               return error_errno("unable to stat just-written file %s",
-                                                  ce->name);
-               fill_stat_cache_info(state->istate, ce, &st);
-               ce->ce_flags |= CE_UPDATE_IN_BASE;
-               mark_fsmonitor_invalid(state->istate, ce);
-               state->istate->cache_changed |= CE_ENTRY_CHANGED;
+               if (!fstat_done && lstat(ce->name, &st) < 0)
+                       return error_errno("unable to stat just-written file %s",
+                                          ce->name);
+               update_ce_after_write(state, ce , &st);
        }
 delayed:
        return 0;
@@ -429,19 +440,13 @@ static void mark_colliding_entries(const struct checkout *state,
        }
 }
 
-/*
- * Write the contents from ce out to the working tree.
- *
- * When topath[] is not NULL, instead of writing to the working tree
- * file named by ce, a temporary file is created by this function and
- * its name is returned in topath[], which must be able to hold at
- * least TEMPORARY_FILENAME_LENGTH bytes long.
- */
-int checkout_entry(struct cache_entry *ce, const struct checkout *state,
-                  char *topath, int *nr_checkouts)
+int checkout_entry_ca(struct cache_entry *ce, struct conv_attrs *ca,
+                     const struct checkout *state, char *topath,
+                     int *nr_checkouts)
 {
        static struct strbuf path = STRBUF_INIT;
        struct stat st;
+       struct conv_attrs ca_buf;
 
        if (ce->ce_flags & CE_WT_REMOVE) {
                if (topath)
@@ -454,8 +459,13 @@ int checkout_entry(struct cache_entry *ce, const struct checkout *state,
                return 0;
        }
 
-       if (topath)
-               return write_entry(ce, topath, state, 1);
+       if (topath) {
+               if (S_ISREG(ce->ce_mode) && !ca) {
+                       convert_attrs(state->istate, &ca_buf, ce->name);
+                       ca = &ca_buf;
+               }
+               return write_entry(ce, topath, ca, state, 1);
+       }
 
        strbuf_reset(&path);
        strbuf_add(&path, state->base_dir, state->base_dir_len);
@@ -517,9 +527,16 @@ int checkout_entry(struct cache_entry *ce, const struct checkout *state,
                return 0;
 
        create_directories(path.buf, path.len, state);
+
        if (nr_checkouts)
                (*nr_checkouts)++;
-       return write_entry(ce, path.buf, state, 0);
+
+       if (S_ISREG(ce->ce_mode) && !ca) {
+               convert_attrs(state->istate, &ca_buf, ce->name);
+               ca = &ca_buf;
+       }
+
+       return write_entry(ce, path.buf, ca, state, 0);
 }
 
 void unlink_entry(const struct cache_entry *ce)
@@ -530,7 +547,7 @@ void unlink_entry(const struct cache_entry *ce)
                submodule_move_head(ce->name, "HEAD", NULL,
                                    SUBMODULE_MOVE_HEAD_FORCE);
        }
-       if (!check_leading_path(ce->name, ce_namelen(ce)))
+       if (check_leading_path(ce->name, ce_namelen(ce), 1) >= 0)
                return;
        if (remove_or_warn(ce->ce_mode, ce->name))
                return;
diff --git a/entry.h b/entry.h
new file mode 100644 (file)
index 0000000..b8c0e17
--- /dev/null
+++ b/entry.h
@@ -0,0 +1,59 @@
+#ifndef ENTRY_H
+#define ENTRY_H
+
+#include "cache.h"
+#include "convert.h"
+
+struct checkout {
+       struct index_state *istate;
+       const char *base_dir;
+       int base_dir_len;
+       struct delayed_checkout *delayed_checkout;
+       struct checkout_metadata meta;
+       unsigned force:1,
+                quiet:1,
+                not_new:1,
+                clone:1,
+                refresh_cache:1;
+};
+#define CHECKOUT_INIT { NULL, "" }
+
+#define TEMPORARY_FILENAME_LENGTH 25
+/*
+ * Write the contents from ce out to the working tree.
+ *
+ * When topath[] is not NULL, instead of writing to the working tree
+ * file named by ce, a temporary file is created by this function and
+ * its name is returned in topath[], which must be able to hold at
+ * least TEMPORARY_FILENAME_LENGTH bytes long.
+ *
+ * With checkout_entry_ca(), callers can optionally pass a preloaded
+ * conv_attrs struct (to avoid reloading it), when ce refers to a
+ * regular file. If ca is NULL, the attributes will be loaded
+ * internally when (and if) needed.
+ */
+int checkout_entry_ca(struct cache_entry *ce, struct conv_attrs *ca,
+                     const struct checkout *state, char *topath,
+                     int *nr_checkouts);
+static inline int checkout_entry(struct cache_entry *ce,
+                                const struct checkout *state, char *topath,
+                                int *nr_checkouts)
+{
+       return checkout_entry_ca(ce, NULL, state, topath, nr_checkouts);
+}
+
+void enable_delayed_checkout(struct checkout *state);
+int finish_delayed_checkout(struct checkout *state, int *nr_checkouts);
+
+/*
+ * Unlink the last component and schedule the leading directories for
+ * removal, such that empty directories get removed.
+ */
+void unlink_entry(const struct cache_entry *ce);
+
+void *read_blob_entry(const struct cache_entry *ce, unsigned long *size);
+int fstat_checkout_output(int fd, const struct checkout *state, struct stat *st);
+void update_ce_after_write(const struct checkout *state, struct cache_entry *ce,
+                          struct stat *st);
+
+#endif /* ENTRY_H */
index 0d31cdc866c77dfaab69b39305213497c49a120d..38a47c44db4c6cd43bd384890ed414d4665bf456 100644 (file)
@@ -25,7 +25,7 @@
 struct bitmap *bitmap_word_alloc(size_t word_alloc)
 {
        struct bitmap *bitmap = xmalloc(sizeof(struct bitmap));
-       bitmap->words = xcalloc(word_alloc, sizeof(eword_t));
+       CALLOC_ARRAY(bitmap->words, word_alloc);
        bitmap->word_alloc = word_alloc;
        return bitmap;
 }
index 1eaedcb5dc2ed45e18e29bf185958a663f89eccb..6e68276aa3a2969ac3f13d93fe29d64e89d04463 100644 (file)
@@ -38,6 +38,7 @@ static int server_supports_filtering;
 static int advertise_sid;
 static struct shallow_lock shallow_lock;
 static const char *alternate_shallow_file;
+static struct fsck_options fsck_options = FSCK_OPTIONS_MISSING_GITMODULES;
 static struct strbuf fsck_msg_types = STRBUF_INIT;
 static struct string_list uri_protocols = STRING_LIST_INIT_DUP;
 
@@ -790,14 +791,36 @@ static void create_promisor_file(const char *keep_name,
        strbuf_release(&promisor_name);
 }
 
+static void parse_gitmodules_oids(int fd, struct oidset *gitmodules_oids)
+{
+       int len = the_hash_algo->hexsz + 1; /* hash + NL */
+
+       do {
+               char hex_hash[GIT_MAX_HEXSZ + 1];
+               int read_len = read_in_full(fd, hex_hash, len);
+               struct object_id oid;
+               const char *end;
+
+               if (!read_len)
+                       return;
+               if (read_len != len)
+                       die("invalid length read %d", read_len);
+               if (parse_oid_hex(hex_hash, &oid, &end) || *end != '\n')
+                       die("invalid hash");
+               oidset_insert(gitmodules_oids, &oid);
+       } while (1);
+}
+
 /*
- * Pass 1 as "only_packfile" if the pack received is the only pack in this
- * fetch request (that is, if there were no packfile URIs provided).
+ * If packfile URIs were provided, pass a non-NULL pointer to index_pack_args.
+ * The strings to pass as the --index-pack-arg arguments to http-fetch will be
+ * stored there. (It must be freed by the caller.)
  */
 static int get_pack(struct fetch_pack_args *args,
                    int xd[2], struct string_list *pack_lockfiles,
-                   int only_packfile,
-                   struct ref **sought, int nr_sought)
+                   struct strvec *index_pack_args,
+                   struct ref **sought, int nr_sought,
+                   struct oidset *gitmodules_oids)
 {
        struct async demux;
        int do_keep = args->keep_pack;
@@ -805,6 +828,7 @@ static int get_pack(struct fetch_pack_args *args,
        struct pack_header header;
        int pass_header = 0;
        struct child_process cmd = CHILD_PROCESS_INIT;
+       int fsck_objects = 0;
        int ret;
 
        memset(&demux, 0, sizeof(demux));
@@ -823,7 +847,7 @@ static int get_pack(struct fetch_pack_args *args,
        else
                demux.out = xd[0];
 
-       if (!args->keep_pack && unpack_limit) {
+       if (!args->keep_pack && unpack_limit && !index_pack_args) {
 
                if (read_pack_header(demux.out, &header))
                        die(_("protocol error: bad pack header"));
@@ -839,8 +863,15 @@ static int get_pack(struct fetch_pack_args *args,
                strvec_push(&cmd.args, alternate_shallow_file);
        }
 
-       if (do_keep || args->from_promisor) {
-               if (pack_lockfiles)
+       if (fetch_fsck_objects >= 0
+           ? fetch_fsck_objects
+           : transfer_fsck_objects >= 0
+           ? transfer_fsck_objects
+           : 0)
+               fsck_objects = 1;
+
+       if (do_keep || args->from_promisor || index_pack_args || fsck_objects) {
+               if (pack_lockfiles || fsck_objects)
                        cmd.out = -1;
                cmd_name = "index-pack";
                strvec_push(&cmd.args, cmd_name);
@@ -849,7 +880,7 @@ static int get_pack(struct fetch_pack_args *args,
                        strvec_push(&cmd.args, "-v");
                if (args->use_thin_pack)
                        strvec_push(&cmd.args, "--fix-thin");
-               if (do_keep && (args->lock_pack || unpack_limit)) {
+               if ((do_keep || index_pack_args) && (args->lock_pack || unpack_limit)) {
                        char hostname[HOST_NAME_MAX + 1];
                        if (xgethostname(hostname, sizeof(hostname)))
                                xsnprintf(hostname, sizeof(hostname), "localhost");
@@ -857,7 +888,7 @@ static int get_pack(struct fetch_pack_args *args,
                                     "--keep=fetch-pack %"PRIuMAX " on %s",
                                     (uintmax_t)getpid(), hostname);
                }
-               if (only_packfile && args->check_self_contained_and_connected)
+               if (!index_pack_args && args->check_self_contained_and_connected)
                        strvec_push(&cmd.args, "--check-self-contained-and-connected");
                else
                        /*
@@ -890,12 +921,8 @@ static int get_pack(struct fetch_pack_args *args,
                strvec_pushf(&cmd.args, "--pack_header=%"PRIu32",%"PRIu32,
                             ntohl(header.hdr_version),
                                 ntohl(header.hdr_entries));
-       if (fetch_fsck_objects >= 0
-           ? fetch_fsck_objects
-           : transfer_fsck_objects >= 0
-           ? transfer_fsck_objects
-           : 0) {
-               if (args->from_promisor || !only_packfile)
+       if (fsck_objects) {
+               if (args->from_promisor || index_pack_args)
                        /*
                         * We cannot use --strict in index-pack because it
                         * checks both broken objects and links, but we only
@@ -907,14 +934,26 @@ static int get_pack(struct fetch_pack_args *args,
                                     fsck_msg_types.buf);
        }
 
+       if (index_pack_args) {
+               int i;
+
+               for (i = 0; i < cmd.args.nr; i++)
+                       strvec_push(index_pack_args, cmd.args.v[i]);
+       }
+
        cmd.in = demux.out;
        cmd.git_cmd = 1;
        if (start_command(&cmd))
                die(_("fetch-pack: unable to fork off %s"), cmd_name);
-       if (do_keep && pack_lockfiles) {
-               char *pack_lockfile = index_pack_lockfile(cmd.out);
+       if (do_keep && (pack_lockfiles || fsck_objects)) {
+               int is_well_formed;
+               char *pack_lockfile = index_pack_lockfile(cmd.out, &is_well_formed);
+
+               if (!is_well_formed)
+                       die(_("fetch-pack: invalid index-pack output"));
                if (pack_lockfile)
                        string_list_append_nodup(pack_lockfiles, pack_lockfile);
+               parse_gitmodules_oids(cmd.out, gitmodules_oids);
                close(cmd.out);
        }
 
@@ -1074,12 +1113,17 @@ static struct ref *do_fetch_pack(struct fetch_pack_args *args,
        if (args->deepen)
                setup_alternate_shallow(&shallow_lock, &alternate_shallow_file,
                                        NULL);
-       else if (si->nr_ours || si->nr_theirs)
+       else if (si->nr_ours || si->nr_theirs) {
+               if (args->reject_shallow_remote)
+                       die(_("source repository is shallow, reject to clone."));
                alternate_shallow_file = setup_temporary_shallow(si->shallow);
-       else
+       else
                alternate_shallow_file = NULL;
-       if (get_pack(args, fd, pack_lockfiles, 1, sought, nr_sought))
+       if (get_pack(args, fd, pack_lockfiles, NULL, sought, nr_sought,
+                    &fsck_options.gitmodules_found))
                die(_("git fetch-pack: fetch failed."));
+       if (fsck_finish(&fsck_options))
+               die("fsck failed");
 
  all_done:
        if (negotiator)
@@ -1441,10 +1485,12 @@ static void receive_shallow_info(struct fetch_pack_args *args,
                 * rejected (unless --update-shallow is set); do the same.
                 */
                prepare_shallow_info(si, shallows);
-               if (si->nr_ours || si->nr_theirs)
+               if (si->nr_ours || si->nr_theirs) {
+                       if (args->reject_shallow_remote)
+                               die(_("source repository is shallow, reject to clone."));
                        alternate_shallow_file =
                                setup_temporary_shallow(si->shallow);
-               else
+               else
                        alternate_shallow_file = NULL;
        } else {
                alternate_shallow_file = NULL;
@@ -1529,6 +1575,7 @@ static struct ref *do_fetch_pack_v2(struct fetch_pack_args *args,
        int seen_ack = 0;
        struct string_list packfile_uris = STRING_LIST_INIT_DUP;
        int i;
+       struct strvec index_pack_args = STRVEC_INIT;
 
        negotiator = &negotiator_alloc;
        fetch_negotiator_init(r, negotiator);
@@ -1618,7 +1665,8 @@ static struct ref *do_fetch_pack_v2(struct fetch_pack_args *args,
                                receive_packfile_uris(&reader, &packfile_uris);
                        process_section_header(&reader, "packfile", 0);
                        if (get_pack(args, fd, pack_lockfiles,
-                                    !packfile_uris.nr, sought, nr_sought))
+                                    packfile_uris.nr ? &index_pack_args : NULL,
+                                    sought, nr_sought, &fsck_options.gitmodules_found))
                                die(_("git fetch-pack: fetch failed."));
                        do_check_stateless_delimiter(args, &reader);
 
@@ -1630,6 +1678,7 @@ static struct ref *do_fetch_pack_v2(struct fetch_pack_args *args,
        }
 
        for (i = 0; i < packfile_uris.nr; i++) {
+               int j;
                struct child_process cmd = CHILD_PROCESS_INIT;
                char packname[GIT_MAX_HEXSZ + 1];
                const char *uri = packfile_uris.items[i].string +
@@ -1639,6 +1688,9 @@ static struct ref *do_fetch_pack_v2(struct fetch_pack_args *args,
                strvec_pushf(&cmd.args, "--packfile=%.*s",
                             (int) the_hash_algo->hexsz,
                             packfile_uris.items[i].string);
+               for (j = 0; j < index_pack_args.nr; j++)
+                       strvec_pushf(&cmd.args, "--index-pack-arg=%s",
+                                    index_pack_args.v[j]);
                strvec_push(&cmd.args, uri);
                cmd.git_cmd = 1;
                cmd.no_stdin = 1;
@@ -1657,6 +1709,8 @@ static struct ref *do_fetch_pack_v2(struct fetch_pack_args *args,
 
                packname[the_hash_algo->hexsz] = '\0';
 
+               parse_gitmodules_oids(cmd.out, &fsck_options.gitmodules_found);
+
                close(cmd.out);
 
                if (finish_command(&cmd))
@@ -1674,6 +1728,10 @@ static struct ref *do_fetch_pack_v2(struct fetch_pack_args *args,
                                                 packname));
        }
        string_list_clear(&packfile_uris, 0);
+       strvec_clear(&index_pack_args);
+
+       if (fsck_finish(&fsck_options))
+               die("fsck failed");
 
        if (negotiator)
                negotiator->release(negotiator);
@@ -1847,7 +1905,7 @@ static void update_shallow(struct fetch_pack_args *args,
         * remote is also shallow, check what ref is safe to update
         * without updating .git/shallow
         */
-       status = xcalloc(nr_sought, sizeof(*status));
+       CALLOC_ARRAY(status, nr_sought);
        assign_shallow_commits_to_refs(si, NULL, status);
        if (si->nr_ours || si->nr_theirs) {
                for (i = 0; i < nr_sought; i++)
index 736a3dae467ac08a402e6b45e305bab0e7911a37..f114d7277567529d9145b89eee8b32d1f3c65a15 100644 (file)
@@ -39,6 +39,7 @@ struct fetch_pack_args {
        unsigned self_contained_and_connected:1;
        unsigned cloning:1;
        unsigned update_shallow:1;
+       unsigned reject_shallow_remote:1;
        unsigned deepen:1;
 
        /*
index 46f6015c447dad5d2a6768bf92274cf728725846..0f66818e0f839f08cf5cc46cb6943f6542c4208b 100644 (file)
@@ -130,7 +130,7 @@ static int handle_line(char *line, struct merge_parents *merge_parents)
        if (!find_merge_parent(merge_parents, &oid, NULL))
                return 0; /* subsumed by other parents */
 
-       origin_data = xcalloc(1, sizeof(struct origin_data));
+       CALLOC_ARRAY(origin_data, 1);
        oidcpy(&origin_data->oid, &oid);
 
        if (line[len - 1] == '\n')
@@ -510,22 +510,28 @@ static void fmt_merge_msg_sigs(struct strbuf *out)
        for (i = 0; i < origins.nr; i++) {
                struct object_id *oid = origins.items[i].util;
                enum object_type type;
-               unsigned long size, len;
+               unsigned long size;
                char *buf = read_object_file(oid, &type, &size);
+               char *origbuf = buf;
+               unsigned long len = size;
                struct signature_check sigc = { NULL };
-               struct strbuf sig = STRBUF_INIT;
+               struct strbuf payload = STRBUF_INIT, sig = STRBUF_INIT;
 
                if (!buf || type != OBJ_TAG)
                        goto next;
-               len = parse_signature(buf, size);
 
-               if (size == len)
-                       ; /* merely annotated */
-               else if (check_signature(buf, len, buf + len, size - len, &sigc) &&
-                       !sigc.gpg_output)
-                       strbuf_addstr(&sig, "gpg verification failed.\n");
-               else
-                       strbuf_addstr(&sig, sigc.gpg_output);
+               if (!parse_signature(buf, size, &payload, &sig))
+                       ;/* merely annotated */
+               else {
+                       buf = payload.buf;
+                       len = payload.len;
+                       if (check_signature(payload.buf, payload.len, sig.buf,
+                                        sig.len, &sigc) &&
+                               !sigc.gpg_output)
+                               strbuf_addstr(&sig, "gpg verification failed.\n");
+                       else
+                               strbuf_addstr(&sig, sigc.gpg_output);
+               }
                signature_check_clear(&sigc);
 
                if (!tag_number++) {
@@ -548,9 +554,10 @@ static void fmt_merge_msg_sigs(struct strbuf *out)
                                        strlen(origins.items[i].string));
                        fmt_tag_signature(&tagbuf, &sig, buf, len);
                }
+               strbuf_release(&payload);
                strbuf_release(&sig);
        next:
-               free(buf);
+               free(origbuf);
        }
        if (tagbuf.len) {
                strbuf_addch(out, '\n');
diff --git a/fsck.c b/fsck.c
index 4b7f0b73d73c3aec8342b9bcb4023ec6f0d300a0..f5ed6a263583f094f973be5f7db40b2457cccf17 100644 (file)
--- a/fsck.c
+++ b/fsck.c
 #include "credential.h"
 #include "help.h"
 
-static struct oidset gitmodules_found = OIDSET_INIT;
-static struct oidset gitmodules_done = OIDSET_INIT;
-
-#define FSCK_FATAL -1
-#define FSCK_INFO -2
-
-#define FOREACH_MSG_ID(FUNC) \
-       /* fatal errors */ \
-       FUNC(NUL_IN_HEADER, FATAL) \
-       FUNC(UNTERMINATED_HEADER, FATAL) \
-       /* errors */ \
-       FUNC(BAD_DATE, ERROR) \
-       FUNC(BAD_DATE_OVERFLOW, ERROR) \
-       FUNC(BAD_EMAIL, ERROR) \
-       FUNC(BAD_NAME, ERROR) \
-       FUNC(BAD_OBJECT_SHA1, ERROR) \
-       FUNC(BAD_PARENT_SHA1, ERROR) \
-       FUNC(BAD_TAG_OBJECT, ERROR) \
-       FUNC(BAD_TIMEZONE, ERROR) \
-       FUNC(BAD_TREE, ERROR) \
-       FUNC(BAD_TREE_SHA1, ERROR) \
-       FUNC(BAD_TYPE, ERROR) \
-       FUNC(DUPLICATE_ENTRIES, ERROR) \
-       FUNC(MISSING_AUTHOR, ERROR) \
-       FUNC(MISSING_COMMITTER, ERROR) \
-       FUNC(MISSING_EMAIL, ERROR) \
-       FUNC(MISSING_NAME_BEFORE_EMAIL, ERROR) \
-       FUNC(MISSING_OBJECT, ERROR) \
-       FUNC(MISSING_SPACE_BEFORE_DATE, ERROR) \
-       FUNC(MISSING_SPACE_BEFORE_EMAIL, ERROR) \
-       FUNC(MISSING_TAG, ERROR) \
-       FUNC(MISSING_TAG_ENTRY, ERROR) \
-       FUNC(MISSING_TREE, ERROR) \
-       FUNC(MISSING_TREE_OBJECT, ERROR) \
-       FUNC(MISSING_TYPE, ERROR) \
-       FUNC(MISSING_TYPE_ENTRY, ERROR) \
-       FUNC(MULTIPLE_AUTHORS, ERROR) \
-       FUNC(TREE_NOT_SORTED, ERROR) \
-       FUNC(UNKNOWN_TYPE, ERROR) \
-       FUNC(ZERO_PADDED_DATE, ERROR) \
-       FUNC(GITMODULES_MISSING, ERROR) \
-       FUNC(GITMODULES_BLOB, ERROR) \
-       FUNC(GITMODULES_LARGE, ERROR) \
-       FUNC(GITMODULES_NAME, ERROR) \
-       FUNC(GITMODULES_SYMLINK, ERROR) \
-       FUNC(GITMODULES_URL, ERROR) \
-       FUNC(GITMODULES_PATH, ERROR) \
-       FUNC(GITMODULES_UPDATE, ERROR) \
-       /* warnings */ \
-       FUNC(BAD_FILEMODE, WARN) \
-       FUNC(EMPTY_NAME, WARN) \
-       FUNC(FULL_PATHNAME, WARN) \
-       FUNC(HAS_DOT, WARN) \
-       FUNC(HAS_DOTDOT, WARN) \
-       FUNC(HAS_DOTGIT, WARN) \
-       FUNC(NULL_SHA1, WARN) \
-       FUNC(ZERO_PADDED_FILEMODE, WARN) \
-       FUNC(NUL_IN_COMMIT, WARN) \
-       /* infos (reported as warnings, but ignored by default) */ \
-       FUNC(GITMODULES_PARSE, INFO) \
-       FUNC(BAD_TAG_NAME, INFO) \
-       FUNC(MISSING_TAGGER_ENTRY, INFO) \
-       /* ignored (elevated when requested) */ \
-       FUNC(EXTRA_HEADER_ENTRY, IGNORE)
-
-#define MSG_ID(id, msg_type) FSCK_MSG_##id,
-enum fsck_msg_id {
-       FOREACH_MSG_ID(MSG_ID)
-       FSCK_MSG_MAX
-};
-#undef MSG_ID
-
 #define STR(x) #x
 #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;
+       enum fsck_msg_type msg_type;
 } msg_id_info[FSCK_MSG_MAX + 1] = {
-       FOREACH_MSG_ID(MSG_ID)
+       FOREACH_FSCK_MSG_ID(MSG_ID)
        { NULL, NULL, NULL, -1 }
 };
 #undef MSG_ID
+#undef STR
 
 static void prepare_msg_ids(void)
 {
@@ -164,25 +93,23 @@ void list_config_fsck_msg_ids(struct string_list *list, const char *prefix)
                list_config_item(list, prefix, msg_id_info[i].camelcased);
 }
 
-static int fsck_msg_type(enum fsck_msg_id msg_id,
+static enum fsck_msg_type fsck_msg_type(enum fsck_msg_id msg_id,
        struct fsck_options *options)
 {
-       int msg_type;
-
        assert(msg_id >= 0 && msg_id < FSCK_MSG_MAX);
 
-       if (options->msg_type)
-               msg_type = options->msg_type[msg_id];
-       else {
-               msg_type = msg_id_info[msg_id].msg_type;
+       if (!options->msg_type) {
+               enum fsck_msg_type msg_type = msg_id_info[msg_id].msg_type;
+
                if (options->strict && msg_type == FSCK_WARN)
                        msg_type = FSCK_ERROR;
+               return msg_type;
        }
 
-       return msg_type;
+       return options->msg_type[msg_id];
 }
 
-static int parse_msg_type(const char *str)
+static enum fsck_msg_type parse_msg_type(const char *str)
 {
        if (!strcmp(str, "error"))
                return FSCK_ERROR;
@@ -202,28 +129,35 @@ int is_valid_msg_type(const char *msg_id, const char *msg_type)
        return 1;
 }
 
-void fsck_set_msg_type(struct fsck_options *options,
-               const char *msg_id, const char *msg_type)
+void fsck_set_msg_type_from_ids(struct fsck_options *options,
+                               enum fsck_msg_id msg_id,
+                               enum fsck_msg_type msg_type)
 {
-       int id = parse_msg_id(msg_id), type;
-
-       if (id < 0)
-               die("Unhandled message id: %s", msg_id);
-       type = parse_msg_type(msg_type);
-
-       if (type != FSCK_ERROR && msg_id_info[id].msg_type == FSCK_FATAL)
-               die("Cannot demote %s to %s", msg_id, msg_type);
-
        if (!options->msg_type) {
                int i;
-               int *msg_type;
-               ALLOC_ARRAY(msg_type, FSCK_MSG_MAX);
+               enum fsck_msg_type *severity;
+               ALLOC_ARRAY(severity, FSCK_MSG_MAX);
                for (i = 0; i < FSCK_MSG_MAX; i++)
-                       msg_type[i] = fsck_msg_type(i, options);
-               options->msg_type = msg_type;
+                       severity[i] = fsck_msg_type(i, options);
+               options->msg_type = severity;
        }
 
-       options->msg_type[id] = type;
+       options->msg_type[msg_id] = msg_type;
+}
+
+void fsck_set_msg_type(struct fsck_options *options,
+                      const char *msg_id_str, const char *msg_type_str)
+{
+       int msg_id = parse_msg_id(msg_id_str);
+       enum fsck_msg_type msg_type = parse_msg_type(msg_type_str);
+
+       if (msg_id < 0)
+               die("Unhandled message id: %s", msg_id_str);
+
+       if (msg_type != FSCK_ERROR && msg_id_info[msg_id].msg_type == FSCK_FATAL)
+               die("Cannot demote %s to %s", msg_id_str, msg_type_str);
+
+       fsck_set_msg_type_from_ids(options, msg_id, msg_type);
 }
 
 void fsck_set_msg_types(struct fsck_options *options, const char *values)
@@ -264,24 +198,6 @@ void fsck_set_msg_types(struct fsck_options *options, const char *values)
        free(to_free);
 }
 
-static void append_msg_id(struct strbuf *sb, const char *msg_id)
-{
-       for (;;) {
-               char c = *(msg_id)++;
-
-               if (!c)
-                       break;
-               if (c != '_')
-                       strbuf_addch(sb, tolower(c));
-               else {
-                       assert(*msg_id);
-                       strbuf_addch(sb, *(msg_id)++);
-               }
-       }
-
-       strbuf_addstr(sb, ": ");
-}
-
 static int object_on_skiplist(struct fsck_options *opts,
                              const struct object_id *oid)
 {
@@ -291,11 +207,12 @@ static int object_on_skiplist(struct fsck_options *opts,
 __attribute__((format (printf, 5, 6)))
 static int report(struct fsck_options *options,
                  const struct object_id *oid, enum object_type object_type,
-                 enum fsck_msg_id id, const char *fmt, ...)
+                 enum fsck_msg_id msg_id, const char *fmt, ...)
 {
        va_list ap;
        struct strbuf sb = STRBUF_INIT;
-       int msg_type = fsck_msg_type(id, options), result;
+       enum fsck_msg_type msg_type = fsck_msg_type(msg_id, options);
+       int result;
 
        if (msg_type == FSCK_IGNORE)
                return 0;
@@ -308,12 +225,13 @@ static int report(struct fsck_options *options,
        else if (msg_type == FSCK_INFO)
                msg_type = FSCK_WARN;
 
-       append_msg_id(&sb, msg_id_info[id].id_string);
+       prepare_msg_ids();
+       strbuf_addf(&sb, "%s: ", msg_id_info[msg_id].camelcased);
 
        va_start(ap, fmt);
        strbuf_vaddf(&sb, fmt, ap);
        result = options->error_func(options, oid, object_type,
-                                    msg_type, sb.buf);
+                                    msg_type, msg_id, sb.buf);
        strbuf_release(&sb);
        va_end(ap);
 
@@ -463,6 +381,11 @@ static int fsck_walk_commit(struct commit *commit, void *data, struct fsck_optio
                                generation += power * (name[--len] - '0');
                        if (power > 1 && len && name[len - 1] == '~')
                                name_prefix_len = len - 1;
+                       else {
+                               /* Maybe a non-first parent, e.g. HEAD^2 */
+                               generation = 0;
+                               name_prefix_len = len;
+                       }
                }
        }
 
@@ -680,7 +603,7 @@ static int fsck_tree(const struct object_id *oid,
 
                if (is_hfs_dotgitmodules(name) || is_ntfs_dotgitmodules(name)) {
                        if (!S_ISLNK(mode))
-                               oidset_insert(&gitmodules_found, oid);
+                               oidset_insert(&options->gitmodules_found, oid);
                        else
                                retval += report(options,
                                                 oid, OBJ_TREE,
@@ -694,7 +617,7 @@ static int fsck_tree(const struct object_id *oid,
                                has_dotgit |= is_ntfs_dotgit(backslash);
                                if (is_ntfs_dotgitmodules(backslash)) {
                                        if (!S_ISLNK(mode))
-                                               oidset_insert(&gitmodules_found, oid);
+                                               oidset_insert(&options->gitmodules_found, oid);
                                        else
                                                retval += report(options, oid, OBJ_TREE,
                                                                 FSCK_MSG_GITMODULES_SYMLINK,
@@ -1206,9 +1129,9 @@ static int fsck_blob(const struct object_id *oid, const char *buf,
        struct fsck_gitmodules_data data;
        struct config_options config_opts = { 0 };
 
-       if (!oidset_contains(&gitmodules_found, oid))
+       if (!oidset_contains(&options->gitmodules_found, oid))
                return 0;
-       oidset_insert(&gitmodules_done, oid);
+       oidset_insert(&options->gitmodules_done, oid);
 
        if (object_on_skiplist(options, oid))
                return 0;
@@ -1261,7 +1184,9 @@ int fsck_object(struct object *obj, void *data, unsigned long size,
 int fsck_error_function(struct fsck_options *o,
                        const struct object_id *oid,
                        enum object_type object_type,
-                       int msg_type, const char *message)
+                       enum fsck_msg_type msg_type,
+                       enum fsck_msg_id msg_id,
+                       const char *message)
 {
        if (msg_type == FSCK_WARN) {
                warning("object %s: %s", fsck_describe_object(o, oid), message);
@@ -1277,13 +1202,13 @@ int fsck_finish(struct fsck_options *options)
        struct oidset_iter iter;
        const struct object_id *oid;
 
-       oidset_iter_init(&gitmodules_found, &iter);
+       oidset_iter_init(&options->gitmodules_found, &iter);
        while ((oid = oidset_iter_next(&iter))) {
                enum object_type type;
                unsigned long size;
                char *buf;
 
-               if (oidset_contains(&gitmodules_done, oid))
+               if (oidset_contains(&options->gitmodules_done, oid))
                        continue;
 
                buf = read_object_file(oid, &type, &size);
@@ -1308,14 +1233,14 @@ int fsck_finish(struct fsck_options *options)
        }
 
 
-       oidset_clear(&gitmodules_found);
-       oidset_clear(&gitmodules_done);
+       oidset_clear(&options->gitmodules_found);
+       oidset_clear(&options->gitmodules_done);
        return ret;
 }
 
-int fsck_config_internal(const char *var, const char *value, void *cb,
-                        struct fsck_options *options)
+int git_fsck_config(const char *var, const char *value, void *cb)
 {
+       struct fsck_options *options = cb;
        if (strcmp(var, "fsck.skiplist") == 0) {
                const char *path;
                struct strbuf sb = STRBUF_INIT;
@@ -1336,3 +1261,21 @@ int fsck_config_internal(const char *var, const char *value, void *cb,
 
        return git_default_config(var, value, cb);
 }
+
+/*
+ * Custom error callbacks that are used in more than one place.
+ */
+
+int fsck_error_cb_print_missing_gitmodules(struct fsck_options *o,
+                                          const struct object_id *oid,
+                                          enum object_type object_type,
+                                          enum fsck_msg_type msg_type,
+                                          enum fsck_msg_id msg_id,
+                                          const char *message)
+{
+       if (msg_id == FSCK_MSG_GITMODULES_MISSING) {
+               puts(oid_to_hex(oid));
+               return 0;
+       }
+       return fsck_error_function(o, oid, object_type, msg_type, msg_id, message);
+}
diff --git a/fsck.h b/fsck.h
index 423c467feb70307a0d60aa5563be38a1a8812d2b..7202c3c87e8b94d3ba7811a21dca5cdbb46f81e5 100644 (file)
--- a/fsck.h
+++ b/fsck.h
@@ -3,15 +3,90 @@
 
 #include "oidset.h"
 
-#define FSCK_ERROR 1
-#define FSCK_WARN 2
-#define FSCK_IGNORE 3
+enum fsck_msg_type {
+       /* for internal use only */
+       FSCK_IGNORE,
+       FSCK_INFO,
+       FSCK_FATAL,
+       /* "public", fed to e.g. error_func callbacks */
+       FSCK_ERROR,
+       FSCK_WARN,
+};
+
+#define FOREACH_FSCK_MSG_ID(FUNC) \
+       /* fatal errors */ \
+       FUNC(NUL_IN_HEADER, FATAL) \
+       FUNC(UNTERMINATED_HEADER, FATAL) \
+       /* errors */ \
+       FUNC(BAD_DATE, ERROR) \
+       FUNC(BAD_DATE_OVERFLOW, ERROR) \
+       FUNC(BAD_EMAIL, ERROR) \
+       FUNC(BAD_NAME, ERROR) \
+       FUNC(BAD_OBJECT_SHA1, ERROR) \
+       FUNC(BAD_PARENT_SHA1, ERROR) \
+       FUNC(BAD_TAG_OBJECT, ERROR) \
+       FUNC(BAD_TIMEZONE, ERROR) \
+       FUNC(BAD_TREE, ERROR) \
+       FUNC(BAD_TREE_SHA1, ERROR) \
+       FUNC(BAD_TYPE, ERROR) \
+       FUNC(DUPLICATE_ENTRIES, ERROR) \
+       FUNC(MISSING_AUTHOR, ERROR) \
+       FUNC(MISSING_COMMITTER, ERROR) \
+       FUNC(MISSING_EMAIL, ERROR) \
+       FUNC(MISSING_NAME_BEFORE_EMAIL, ERROR) \
+       FUNC(MISSING_OBJECT, ERROR) \
+       FUNC(MISSING_SPACE_BEFORE_DATE, ERROR) \
+       FUNC(MISSING_SPACE_BEFORE_EMAIL, ERROR) \
+       FUNC(MISSING_TAG, ERROR) \
+       FUNC(MISSING_TAG_ENTRY, ERROR) \
+       FUNC(MISSING_TREE, ERROR) \
+       FUNC(MISSING_TREE_OBJECT, ERROR) \
+       FUNC(MISSING_TYPE, ERROR) \
+       FUNC(MISSING_TYPE_ENTRY, ERROR) \
+       FUNC(MULTIPLE_AUTHORS, ERROR) \
+       FUNC(TREE_NOT_SORTED, ERROR) \
+       FUNC(UNKNOWN_TYPE, ERROR) \
+       FUNC(ZERO_PADDED_DATE, ERROR) \
+       FUNC(GITMODULES_MISSING, ERROR) \
+       FUNC(GITMODULES_BLOB, ERROR) \
+       FUNC(GITMODULES_LARGE, ERROR) \
+       FUNC(GITMODULES_NAME, ERROR) \
+       FUNC(GITMODULES_SYMLINK, ERROR) \
+       FUNC(GITMODULES_URL, ERROR) \
+       FUNC(GITMODULES_PATH, ERROR) \
+       FUNC(GITMODULES_UPDATE, ERROR) \
+       /* warnings */ \
+       FUNC(BAD_FILEMODE, WARN) \
+       FUNC(EMPTY_NAME, WARN) \
+       FUNC(FULL_PATHNAME, WARN) \
+       FUNC(HAS_DOT, WARN) \
+       FUNC(HAS_DOTDOT, WARN) \
+       FUNC(HAS_DOTGIT, WARN) \
+       FUNC(NULL_SHA1, WARN) \
+       FUNC(ZERO_PADDED_FILEMODE, WARN) \
+       FUNC(NUL_IN_COMMIT, WARN) \
+       /* infos (reported as warnings, but ignored by default) */ \
+       FUNC(GITMODULES_PARSE, INFO) \
+       FUNC(BAD_TAG_NAME, INFO) \
+       FUNC(MISSING_TAGGER_ENTRY, INFO) \
+       /* ignored (elevated when requested) */ \
+       FUNC(EXTRA_HEADER_ENTRY, IGNORE)
+
+#define MSG_ID(id, msg_type) FSCK_MSG_##id,
+enum fsck_msg_id {
+       FOREACH_FSCK_MSG_ID(MSG_ID)
+       FSCK_MSG_MAX
+};
+#undef MSG_ID
 
 struct fsck_options;
 struct object;
 
+void fsck_set_msg_type_from_ids(struct fsck_options *options,
+                               enum fsck_msg_id msg_id,
+                               enum fsck_msg_type msg_type);
 void fsck_set_msg_type(struct fsck_options *options,
-               const char *msg_id, const char *msg_type);
+                      const char *msg_id, const char *msg_type);
 void fsck_set_msg_types(struct fsck_options *options, const char *values);
 int is_valid_msg_type(const char *msg_id, const char *msg_type);
 
@@ -23,28 +98,55 @@ int is_valid_msg_type(const char *msg_id, const char *msg_type);
  *     <0      error signaled and abort
  *     >0      error signaled and do not abort
  */
-typedef int (*fsck_walk_func)(struct object *obj, int type, void *data, struct fsck_options *options);
+typedef int (*fsck_walk_func)(struct object *obj, enum object_type object_type,
+                             void *data, struct fsck_options *options);
 
 /* callback for fsck_object, type is FSCK_ERROR or FSCK_WARN */
 typedef int (*fsck_error)(struct fsck_options *o,
                          const struct object_id *oid, enum object_type object_type,
-                         int msg_type, const char *message);
+                         enum fsck_msg_type msg_type, enum fsck_msg_id msg_id,
+                         const char *message);
 
 int fsck_error_function(struct fsck_options *o,
                        const struct object_id *oid, enum object_type object_type,
-                       int msg_type, const char *message);
+                       enum fsck_msg_type msg_type, enum fsck_msg_id msg_id,
+                       const char *message);
+int fsck_error_cb_print_missing_gitmodules(struct fsck_options *o,
+                                          const struct object_id *oid,
+                                          enum object_type object_type,
+                                          enum fsck_msg_type msg_type,
+                                          enum fsck_msg_id msg_id,
+                                          const char *message);
 
 struct fsck_options {
        fsck_walk_func walk;
        fsck_error error_func;
        unsigned strict:1;
-       int *msg_type;
+       enum fsck_msg_type *msg_type;
        struct oidset skiplist;
+       struct oidset gitmodules_found;
+       struct oidset gitmodules_done;
        kh_oid_map_t *object_names;
 };
 
-#define FSCK_OPTIONS_DEFAULT { NULL, fsck_error_function, 0, NULL, OIDSET_INIT }
-#define FSCK_OPTIONS_STRICT { NULL, fsck_error_function, 1, NULL, OIDSET_INIT }
+#define FSCK_OPTIONS_DEFAULT { \
+       .skiplist = OIDSET_INIT, \
+       .gitmodules_found = OIDSET_INIT, \
+       .gitmodules_done = OIDSET_INIT, \
+       .error_func = fsck_error_function \
+}
+#define FSCK_OPTIONS_STRICT { \
+       .strict = 1, \
+       .gitmodules_found = OIDSET_INIT, \
+       .gitmodules_done = OIDSET_INIT, \
+       .error_func = fsck_error_function, \
+}
+#define FSCK_OPTIONS_MISSING_GITMODULES { \
+       .strict = 1, \
+       .gitmodules_found = OIDSET_INIT, \
+       .gitmodules_done = OIDSET_INIT, \
+       .error_func = fsck_error_cb_print_missing_gitmodules, \
+}
 
 /* descend in all linked child objects
  * the return value is:
@@ -107,7 +209,6 @@ const char *fsck_describe_object(struct fsck_options *options,
  * git_config() callback for use by fsck-y tools that want to support
  * fsck.<msg> fsck.skipList etc.
  */
-int fsck_config_internal(const char *var, const char *value, void *cb,
-                        struct fsck_options *options);
+int git_fsck_config(const char *var, const char *value, void *cb);
 
 #endif
index fe9e9d7baf44502da0c6378c09fa5caad2b38aa4..ab9bfc60b34e3146f73194d01cf8963a90f1d768 100644 (file)
@@ -90,7 +90,11 @@ int read_fsmonitor_extension(struct index_state *istate, const void *data,
        if (!istate->split_index)
                assert_index_minimum(istate, istate->fsmonitor_dirty->bit_size);
 
-       trace_printf_key(&trace_fsmonitor, "read fsmonitor extension successful");
+       trace2_data_string("index", NULL, "extension/fsmn/read/token",
+                          istate->fsmonitor_last_update);
+       trace_printf_key(&trace_fsmonitor,
+                        "read fsmonitor extension successful '%s'",
+                        istate->fsmonitor_last_update);
        return 0;
 }
 
@@ -134,7 +138,11 @@ void write_fsmonitor_extension(struct strbuf *sb, struct index_state *istate)
        put_be32(&ewah_size, sb->len - ewah_start);
        memcpy(sb->buf + fixup, &ewah_size, sizeof(uint32_t));
 
-       trace_printf_key(&trace_fsmonitor, "write fsmonitor extension successful");
+       trace2_data_string("index", NULL, "extension/fsmn/write/token",
+                          istate->fsmonitor_last_update);
+       trace_printf_key(&trace_fsmonitor,
+                        "write fsmonitor extension successful '%s'",
+                        istate->fsmonitor_last_update);
 }
 
 /*
@@ -143,6 +151,7 @@ void write_fsmonitor_extension(struct strbuf *sb, struct index_state *istate)
 static int query_fsmonitor(int version, const char *last_update, struct strbuf *query_result)
 {
        struct child_process cp = CHILD_PROCESS_INIT;
+       int result;
 
        if (!core_fsmonitor)
                return -1;
@@ -153,16 +162,63 @@ static int query_fsmonitor(int version, const char *last_update, struct strbuf *
        cp.use_shell = 1;
        cp.dir = get_git_work_tree();
 
-       return capture_command(&cp, query_result, 1024);
+       trace2_region_enter("fsm_hook", "query", NULL);
+
+       result = capture_command(&cp, query_result, 1024);
+
+       if (result)
+               trace2_data_intmax("fsm_hook", NULL, "query/failed", result);
+       else {
+               trace2_data_intmax("fsm_hook", NULL, "query/response-length",
+                                  query_result->len);
+
+               if (fsmonitor_is_trivial_response(query_result))
+                       trace2_data_intmax("fsm_hook", NULL,
+                                          "query/trivial-response", 1);
+       }
+
+       trace2_region_leave("fsm_hook", "query", NULL);
+
+       return result;
 }
 
-static void fsmonitor_refresh_callback(struct index_state *istate, const char *name)
+int fsmonitor_is_trivial_response(const struct strbuf *query_result)
 {
-       int pos = index_name_pos(istate, name, strlen(name));
+       static char trivial_response[3] = { '\0', '/', '\0' };
+
+       return query_result->len >= 3 &&
+               !memcmp(trivial_response,
+                       &query_result->buf[query_result->len - 3], 3);
+}
+
+static void fsmonitor_refresh_callback(struct index_state *istate, char *name)
+{
+       int i, len = strlen(name);
+       if (name[len - 1] == '/') {
+
+               /*
+                * TODO We should binary search to find the first path with
+                * TODO this directory prefix.  Then linearly update entries
+                * TODO while the prefix matches.  Taking care to search without
+                * TODO the trailing slash -- because '/' sorts after a few
+                * TODO interesting special chars, like '.' and ' '.
+                */
+
+               /* Mark all entries for the folder invalid */
+               for (i = 0; i < istate->cache_nr; i++) {
+                       if (istate->cache[i]->ce_flags & CE_FSMONITOR_VALID &&
+                           starts_with(istate->cache[i]->name, name))
+                               istate->cache[i]->ce_flags &= ~CE_FSMONITOR_VALID;
+               }
+               /* Need to remove the / from the path for the untracked cache */
+               name[len - 1] = '\0';
+       } else {
+               int pos = index_name_pos(istate, name, strlen(name));
 
-       if (pos >= 0) {
-               struct cache_entry *ce = istate->cache[pos];
-               ce->ce_flags &= ~CE_FSMONITOR_VALID;
+               if (pos >= 0) {
+                       struct cache_entry *ce = istate->cache[pos];
+                       ce->ce_flags &= ~CE_FSMONITOR_VALID;
+               }
        }
 
        /*
@@ -288,16 +344,45 @@ void refresh_fsmonitor(struct index_state *istate)
        istate->fsmonitor_last_update = strbuf_detach(&last_update_token, NULL);
 }
 
+/*
+ * The caller wants to turn on FSMonitor.  And when the caller writes
+ * the index to disk, a FSMonitor extension should be included.  This
+ * requires that `istate->fsmonitor_last_update` not be NULL.  But we
+ * have not actually talked to a FSMonitor process yet, so we don't
+ * have an initial value for this field.
+ *
+ * For a protocol V1 FSMonitor process, this field is a formatted
+ * "nanoseconds since epoch" field.  However, for a protocol V2
+ * FSMonitor process, this field is an opaque token.
+ *
+ * Historically, `add_fsmonitor()` has initialized this field to the
+ * current time for protocol V1 processes.  There are lots of race
+ * conditions here, but that code has shipped...
+ *
+ * The only true solution is to use a V2 FSMonitor and get a current
+ * or default token value (that it understands), but we cannot do that
+ * until we have actually talked to an instance of the FSMonitor process
+ * (but the protocol requires that we send a token first...).
+ *
+ * For simplicity, just initialize like we have a V1 process and require
+ * that V2 processes adapt.
+ */
+static void initialize_fsmonitor_last_update(struct index_state *istate)
+{
+       struct strbuf last_update = STRBUF_INIT;
+
+       strbuf_addf(&last_update, "%"PRIu64"", getnanotime());
+       istate->fsmonitor_last_update = strbuf_detach(&last_update, NULL);
+}
+
 void add_fsmonitor(struct index_state *istate)
 {
        unsigned int i;
-       struct strbuf last_update = STRBUF_INIT;
 
        if (!istate->fsmonitor_last_update) {
                trace_printf_key(&trace_fsmonitor, "add fsmonitor");
                istate->cache_changed |= FSMONITOR_CHANGED;
-               strbuf_addf(&last_update, "%"PRIu64"", getnanotime());
-               istate->fsmonitor_last_update = strbuf_detach(&last_update, NULL);
+               initialize_fsmonitor_last_update(istate);
 
                /* reset the fsmonitor state */
                for (i = 0; i < istate->cache_nr; i++)
index 739318ab6d1060e3f5ef9eba0ab93aa560c1d246..f20d72631d76b4b5e7d7cff75a833215a5d57a71 100644 (file)
@@ -44,6 +44,22 @@ void tweak_fsmonitor(struct index_state *istate);
  */
 void refresh_fsmonitor(struct index_state *istate);
 
+/*
+ * Does the received result contain the "trivial" response?
+ */
+int fsmonitor_is_trivial_response(const struct strbuf *query_result);
+
+/*
+ * Check if refresh_fsmonitor has been called at least once.
+ * refresh_fsmonitor is idempotent. Returns true if fsmonitor is
+ * not enabled (since the state will be "fresh" w/ CE_FSMONITOR_VALID unset)
+ * This version is useful for assertions
+ */
+static inline int is_fsmonitor_refreshed(const struct index_state *istate)
+{
+       return !core_fsmonitor || istate->fsmonitor_has_run_once;
+}
+
 /*
  * Set the given cache entries CE_FSMONITOR_VALID bit. This should be
  * called any time the cache entry has been updated to reflect the
index 1f3f6e9fc5684d3e9dd2a0ac0260556955c9fa4b..6a7afaea8da09fa3fb3670d1a688421fbf152747 100755 (executable)
@@ -39,21 +39,6 @@ _x40="$_x40$_x40$_x40$_x40$_x40$_x40$_x40$_x40"
 TERM_BAD=bad
 TERM_GOOD=good
 
-bisect_skip() {
-       all=''
-       for arg in "$@"
-       do
-               case "$arg" in
-               *..*)
-                       revs=$(git rev-list "$arg") || die "$(eval_gettext "Bad rev input: \$arg")" ;;
-               *)
-                       revs=$(git rev-parse --sq-quote "$arg") ;;
-               esac
-               all="$all $revs"
-       done
-       eval git bisect--helper --bisect-state 'skip' $all
-}
-
 bisect_visualize() {
        git bisect--helper --bisect-next-check $TERM_GOOD $TERM_BAD fail || exit
 
@@ -77,38 +62,6 @@ bisect_visualize() {
        eval '"$@"' --bisect -- $(cat "$GIT_DIR/BISECT_NAMES")
 }
 
-bisect_replay () {
-       file="$1"
-       test "$#" -eq 1 || die "$(gettext "No logfile given")"
-       test -r "$file" || die "$(eval_gettext "cannot read \$file for replaying")"
-       git bisect--helper --bisect-reset || exit
-       oIFS="$IFS" IFS="$IFS$(printf '\015')"
-       while read git bisect command rev tail
-       do
-               test "$git $bisect" = "git bisect" || test "$git" = "git-bisect" || continue
-               if test "$git" = "git-bisect"
-               then
-                       rev="$command"
-                       command="$bisect"
-               fi
-               get_terms
-               git bisect--helper --check-and-set-terms "$command" "$TERM_GOOD" "$TERM_BAD" || exit
-               get_terms
-               case "$command" in
-               start)
-                       eval "git bisect--helper --bisect-start $rev $tail" ;;
-               "$TERM_GOOD"|"$TERM_BAD"|skip)
-                       git bisect--helper --bisect-write "$command" "$rev" "$TERM_GOOD" "$TERM_BAD" || exit;;
-               terms)
-                       git bisect--helper --bisect-terms $rev || exit;;
-               *)
-                       die "$(gettext "?? what are you talking about?")" ;;
-               esac
-       done <"$file"
-       IFS="$oIFS"
-       git bisect--helper --bisect-auto-next || exit
-}
-
 bisect_run () {
        git bisect--helper --bisect-next-check $TERM_GOOD $TERM_BAD fail || exit
 
@@ -169,11 +122,6 @@ exit code \$res from '\$command' is < 0 or >= 128" >&2
        done
 }
 
-bisect_log () {
-       test -s "$GIT_DIR/BISECT_LOG" || die "$(gettext "We are not bisecting.")"
-       cat "$GIT_DIR/BISECT_LOG"
-}
-
 get_terms () {
        if test -s "$GIT_DIR/BISECT_TERMS"
        then
@@ -199,7 +147,7 @@ case "$#" in
        bad|good|new|old|"$TERM_BAD"|"$TERM_GOOD")
                git bisect--helper --bisect-state "$cmd" "$@" ;;
        skip)
-               bisect_skip "$@" ;;
+               git bisect--helper --bisect-skip "$@" || exit;;
        next)
                # Not sure we want "next" at the UI level anymore.
                git bisect--helper --bisect-next "$@" || exit ;;
@@ -208,9 +156,9 @@ case "$#" in
        reset)
                git bisect--helper --bisect-reset "$@" ;;
        replay)
-               bisect_replay "$@" ;;
+               git bisect--helper --bisect-replay "$@" || exit;;
        log)
-               bisect_log ;;
+               git bisect--helper --bisect-log || exit ;;
        run)
                bisect_run "$@" ;;
        terms)
index 5d5e47fbe2d66997f569301eadd462809c0cab92..9ddf9d7044bb65dc2a4a408c3e35e175ec5c3067 100644 (file)
@@ -252,9 +252,9 @@ typedef unsigned long uintptr_t;
 #ifdef PRECOMPOSE_UNICODE
 #include "compat/precompose_utf8.h"
 #else
-static inline void precompose_argv(int argc, const char **argv)
+static inline const char *precompose_argv_prefix(int argc, const char **argv, const char *prefix)
 {
-       ; /* nothing */
+       return prefix;
 }
 #define probe_utf8_pathname_composition()
 #endif
@@ -349,6 +349,11 @@ static inline int noop_core_config(const char *var, const char *value, void *cb)
 #define platform_core_config noop_core_config
 #endif
 
+int lstat_cache_aware_rmdir(const char *path);
+#if !defined(__MINGW32__) && !defined(_MSC_VER)
+#define rmdir lstat_cache_aware_rmdir
+#endif
+
 #ifndef has_dos_drive_prefix
 static inline int git_has_dos_drive_prefix(const char *path)
 {
@@ -788,6 +793,12 @@ int git_vsnprintf(char *str, size_t maxsize,
                  const char *format, va_list ap);
 #endif
 
+#ifdef OPEN_RETURNS_EINTR
+#undef open
+#define open git_open_with_retry
+int git_open_with_retry(const char *path, int flag, ...);
+#endif
+
 #ifdef __GLIBC_PREREQ
 #if __GLIBC_PREREQ(2, 1)
 #define HAVE_STRCHRNUL
@@ -887,7 +898,7 @@ int xstrncmpz(const char *s, const char *t, size_t len);
 #define FREE_AND_NULL(p) do { free(p); (p) = NULL; } while (0)
 
 #define ALLOC_ARRAY(x, alloc) (x) = xmalloc(st_mult(sizeof(*(x)), (alloc)))
-#define CALLOC_ARRAY(x, alloc) (x) = xcalloc((alloc), sizeof(*(x)));
+#define CALLOC_ARRAY(x, alloc) (x) = xcalloc((alloc), sizeof(*(x)))
 #define REALLOC_ARRAY(x, alloc) (x) = xrealloc((x), st_mult(sizeof(*(x)), (alloc)))
 
 #define COPY_ARRAY(dst, src, n) copy_array((dst), (src), (n), sizeof(*(dst)) + \
@@ -1231,6 +1242,13 @@ int access_or_die(const char *path, int mode, unsigned flag);
 /* Warn on an inaccessible file if errno indicates this is an error */
 int warn_on_fopen_errors(const char *path);
 
+/*
+ * Open with O_NOFOLLOW, or equivalent. Note that the fallback equivalent
+ * may be racy. Do not use this as protection against an attacker who can
+ * simultaneously create paths.
+ */
+int open_nofollow(const char *path, int flags);
+
 #if !defined(USE_PARENS_AROUND_GETTEXT_N) && defined(__GNUC__)
 #define USE_PARENS_AROUND_GETTEXT_N 1
 #endif
index 46af3e60b7185b2767accbee3420903edaf53d6f..992124cc67ce579e89ae86e4cca42ba2c80ea1ea 100755 (executable)
@@ -61,6 +61,9 @@ launch_merge_tool () {
                export BASE
                eval $GIT_DIFFTOOL_EXTCMD '"$LOCAL"' '"$REMOTE"'
        else
+               initialize_merge_tool "$merge_tool"
+               # ignore the error from the above --- run_merge_tool
+               # will diagnose unusable tool by itself
                run_merge_tool "$merge_tool"
        fi
 }
@@ -79,6 +82,9 @@ if test -n "$GIT_DIFFTOOL_DIRDIFF"
 then
        LOCAL="$1"
        REMOTE="$2"
+       initialize_merge_tool "$merge_tool"
+       # ignore the error from the above --- run_merge_tool
+       # will diagnose unusable tool by itself
        run_merge_tool "$merge_tool" false
 else
        # Launch the merge tool on each path provided by 'git diff'
index fea79646172184c630508908dd6eb61d3470074d..cb893728136be39b2cb0042feb55d6377e870659 100755 (executable)
@@ -492,14 +492,12 @@ then
                sha1=$(git rev-parse "$ref"^0)
                test -f "$workdir"/../map/$sha1 && continue
                ancestor=$(git rev-list --simplify-merges -1 "$ref" "$@")
-               test "$ancestor" && echo $(map $ancestor) >"$workdir"/../map/$sha1
+               test "$ancestor" && echo $(map $ancestor) >"$workdir"/../map/$sha1
        done < "$tempdir"/heads
 fi
 
 # Finally update the refs
 
-_x40='[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]'
-_x40="$_x40$_x40$_x40$_x40$_x40$_x40$_x40$_x40"
 echo
 while read ref
 do
@@ -519,7 +517,7 @@ do
                git update-ref -m "filter-branch: delete" -d "$ref" $sha1 ||
                        die "Could not delete $ref"
        ;;
-       $_x40)
+       *)
                echo "Ref '$ref' was rewritten"
                if ! git update-ref -m "filter-branch: rewrite" \
                                        "$ref" $rewritten $sha1 2>/dev/null; then
@@ -533,16 +531,6 @@ do
                        fi
                fi
        ;;
-       *)
-               # NEEDSWORK: possibly add -Werror, making this an error
-               warn "WARNING: '$ref' was rewritten into multiple commits:"
-               warn "$rewritten"
-               warn "WARNING: Ref '$ref' points to the first one now."
-               rewritten=$(echo "$rewritten" | head -n 1)
-               git update-ref -m "filter-branch: rewrite to first" \
-                               "$ref" $rewritten $sha1 ||
-                       die "Could not rewrite $ref"
-       ;;
        esac
        git update-ref -m "filter-branch: backup" "$orig_namespace$ref" $sha1 ||
                 exit
index 161ee1ac8cb06abe067a5b8390543e3123e3af00..7aebaf809d0e853889fce1b4fbbed3f2a9f607e1 100644 (file)
@@ -331,7 +331,7 @@ msgstr "Добавить изменённые файлы в индекс"
 
 #: git-gui.sh:2936
 msgid "Unstage From Commit"
-msgstr "УбÑ\80аÑ\82Ñ\8c Ð¸Ð· Ð¸Ð·декса"
+msgstr "УбÑ\80аÑ\82Ñ\8c Ð¸Ð· Ð¸Ð½декса"
 
 #: git-gui.sh:2942 lib/index.tcl:521
 msgid "Revert Changes"
index 78f3647ed974b025ff87eaada0c2880723f074df..542a6a75eb3c4b93d8b4a394551d5d38d2a88f6e 100644 (file)
@@ -166,6 +166,10 @@ setup_tool () {
                return 1
        }
 
+       hide_resolved_enabled () {
+               return 0
+       }
+
        translate_merge_tool_path () {
                echo "$1"
        }
@@ -250,6 +254,10 @@ trust_exit_code () {
        fi
 }
 
+initialize_merge_tool () {
+       # Bring tool-specific functions into scope
+       setup_tool "$1" || return 1
+}
 
 # Entry point for running tools
 run_merge_tool () {
@@ -261,9 +269,6 @@ run_merge_tool () {
        merge_tool_path=$(get_merge_tool_path "$1") || exit
        base_present="$2"
 
-       # Bring tool-specific functions into scope
-       setup_tool "$1" || return 1
-
        if merge_mode
        then
                run_merge_cmd "$1"
index e3f6d543fb5bb0777483081fadaa7b66035ab5fa..f751d9cfe2090485914559d467578e8a68cc823c 100755 (executable)
@@ -239,6 +239,13 @@ checkout_staged_file () {
        fi
 }
 
+hide_resolved () {
+       git merge-file --ours -q -p "$LOCAL" "$BASE" "$REMOTE" >"$LCONFL"
+       git merge-file --theirs -q -p "$LOCAL" "$BASE" "$REMOTE" >"$RCONFL"
+       mv -- "$LCONFL" "$LOCAL"
+       mv -- "$RCONFL" "$REMOTE"
+}
+
 merge_file () {
        MERGED="$1"
 
@@ -265,6 +272,8 @@ merge_file () {
                ext=
        esac
 
+       initialize_merge_tool "$merge_tool" || return
+
        mergetool_tmpdir_init
 
        if test "$MERGETOOL_TMPDIR" != "."
@@ -276,7 +285,9 @@ merge_file () {
 
        BACKUP="$MERGETOOL_TMPDIR/${BASE}_BACKUP_$$$ext"
        LOCAL="$MERGETOOL_TMPDIR/${BASE}_LOCAL_$$$ext"
+       LCONFL="$MERGETOOL_TMPDIR/${BASE}_LOCAL_LCONFL_$$$ext"
        REMOTE="$MERGETOOL_TMPDIR/${BASE}_REMOTE_$$$ext"
+       RCONFL="$MERGETOOL_TMPDIR/${BASE}_REMOTE_RCONFL_$$$ext"
        BASE="$MERGETOOL_TMPDIR/${BASE}_BASE_$$$ext"
 
        base_mode= local_mode= remote_mode=
@@ -322,6 +333,40 @@ merge_file () {
        checkout_staged_file 2 "$MERGED" "$LOCAL"
        checkout_staged_file 3 "$MERGED" "$REMOTE"
 
+       # hideResolved preferences hierarchy.
+       global_config="mergetool.hideResolved"
+       tool_config="mergetool.${merge_tool}.hideResolved"
+
+       if enabled=$(git config --type=bool "$tool_config")
+       then
+               # The user has a specific preference for a specific tool and no
+               # other preferences should override that.
+               : ;
+       elif enabled=$(git config --type=bool "$global_config")
+       then
+               # The user has a general preference for all tools.
+               #
+               # 'true' means the user likes the feature so we should use it
+               # where possible but tool authors can still override.
+               #
+               # 'false' means the user doesn't like the feature so we should
+               # not use it anywhere.
+               if test "$enabled" = true && hide_resolved_enabled
+               then
+                   enabled=true
+               else
+                   enabled=false
+               fi
+       else
+               # The user does not have a preference. Default to disabled.
+               enabled=false
+       fi
+
+       if test "$enabled" = true
+       then
+               hide_resolved
+       fi
+
        if test -z "$local_mode" || test -z "$remote_mode"
        then
                echo "Deleted merge conflict for '$MERGED':"
index 1f425c08091d400e1d2e94533411c1b778f561de..f5bbf1647e3bdac93a42d6bd63a43efb8bb65de9 100755 (executable)
@@ -1942,7 +1942,7 @@ sub validate_patch {
        my ($fn, $xfer_encoding) = @_;
 
        if ($repo) {
-               my $validate_hook = catfile(catdir($repo->repo_path(), 'hooks'),
+               my $validate_hook = catfile($repo->hooks_path(),
                                            'sendemail-validate');
                my $hook_error;
                if (-x $validate_hook) {
diff --git a/git.c b/git.c
index b5f63d346b6072e6334cc495022d8a1de2a4e42a..9bc077a025cba4c5b3628b0eabb4d3aac0f35c63 100644 (file)
--- a/git.c
+++ b/git.c
@@ -423,7 +423,7 @@ static int run_builtin(struct cmd_struct *p, int argc, const char **argv)
                        int nongit_ok;
                        prefix = setup_git_directory_gently(&nongit_ok);
                }
-
+               prefix = precompose_argv_prefix(argc, argv, prefix);
                if (use_pager == -1 && p->option & (RUN_SETUP | RUN_SETUP_GENTLY) &&
                    !(p->option & DELAY_PAGER_CONFIG))
                        use_pager = check_pager_config(p->cmd);
index b49927083661c8ca695112b8432691f17ed6d835..127aecfc2b071f9a745a871a9ea205931eeb672f 100644 (file)
@@ -1,4 +1,5 @@
 #include "cache.h"
+#include "commit.h"
 #include "config.h"
 #include "run-command.h"
 #include "strbuf.h"
@@ -345,7 +346,7 @@ void print_signature_buffer(const struct signature_check *sigc, unsigned flags)
                fputs(output, stderr);
 }
 
-size_t parse_signature(const char *buf, size_t size)
+size_t parse_signed_buffer(const char *buf, size_t size)
 {
        size_t len = 0;
        size_t match = size;
@@ -361,6 +362,18 @@ size_t parse_signature(const char *buf, size_t size)
        return match;
 }
 
+int parse_signature(const char *buf, size_t size, struct strbuf *payload, struct strbuf *signature)
+{
+       size_t match = parse_signed_buffer(buf, size);
+       if (match != size) {
+               strbuf_add(payload, buf, match);
+               remove_signature(payload);
+               strbuf_add(signature, buf + match, size - match);
+               return 1;
+       }
+       return 0;
+}
+
 void set_signing_key(const char *key)
 {
        free(configured_signing_key);
index f4e9b4f3715a0b0d4be3ef526388bf6b87b56fda..80567e4894868d5d7a192cab0afb9ca9c09cb70d 100644 (file)
@@ -37,13 +37,20 @@ struct signature_check {
 
 void signature_check_clear(struct signature_check *sigc);
 
+/*
+ * Look at a GPG signed tag object.  If such a signature exists, store it in
+ * signature and the signed content in payload.  Return 1 if a signature was
+ * found, and 0 otherwise.
+ */
+int parse_signature(const char *buf, size_t size, struct strbuf *payload, struct strbuf *signature);
+
 /*
  * Look at GPG signed content (e.g. a signed tag object), whose
  * payload is followed by a detached signature on it.  Return the
  * offset where the embedded detached signature begins, or the end of
  * the data when there is no such signature.
  */
-size_t parse_signature(const char *buf, size_t size);
+size_t parse_signed_buffer(const char *buf, size_t size);
 
 /*
  * Create a detached signature for the contents of "buffer" and append
diff --git a/grep.c b/grep.c
index aabfaaa4c32e48569805dbe631db64fcf7b773c6..c5c348be55ddf062a538522a2a86f31d2dcc0c0d 100644 (file)
--- a/grep.c
+++ b/grep.c
@@ -40,20 +40,6 @@ static struct grep_opt grep_defaults = {
        .output = std_output,
 };
 
-#ifdef USE_LIBPCRE2
-static pcre2_general_context *pcre2_global_context;
-
-static void *pcre2_malloc(PCRE2_SIZE size, MAYBE_UNUSED void *memory_data)
-{
-       return malloc(size);
-}
-
-static void pcre2_free(void *pointer, MAYBE_UNUSED void *memory_data)
-{
-       free(pointer);
-}
-#endif
-
 static const char *color_grep_slots[] = {
        [GREP_COLOR_CONTEXT]        = "context",
        [GREP_COLOR_FILENAME]       = "filename",
@@ -152,20 +138,9 @@ int grep_config(const char *var, const char *value, void *cb)
  * Initialize one instance of grep_opt and copy the
  * default values from the template we read the configuration
  * information in an earlier call to git_config(grep_config).
- *
- * If using PCRE, make sure that the library is configured
- * to use the same allocator as Git (e.g. nedmalloc on Windows).
- *
- * Any allocated memory needs to be released in grep_destroy().
  */
 void grep_init(struct grep_opt *opt, struct repository *repo, const char *prefix)
 {
-#if defined(USE_LIBPCRE2)
-       if (!pcre2_global_context)
-               pcre2_global_context = pcre2_general_context_create(
-                                       pcre2_malloc, pcre2_free, NULL);
-#endif
-
        *opt = grep_defaults;
 
        opt->repo = repo;
@@ -175,13 +150,6 @@ void grep_init(struct grep_opt *opt, struct repository *repo, const char *prefix
        opt->header_tail = &opt->header_list;
 }
 
-void grep_destroy(void)
-{
-#ifdef USE_LIBPCRE2
-       pcre2_general_context_free(pcre2_global_context);
-#endif
-}
-
 static void grep_set_pattern_type_option(enum grep_pattern_type pattern_type, struct grep_opt *opt)
 {
        /*
@@ -363,6 +331,28 @@ static int is_fixed(const char *s, size_t len)
 }
 
 #ifdef USE_LIBPCRE2
+#define GREP_PCRE2_DEBUG_MALLOC 0
+
+static void *pcre2_malloc(PCRE2_SIZE size, MAYBE_UNUSED void *memory_data)
+{
+       void *pointer = malloc(size);
+#if GREP_PCRE2_DEBUG_MALLOC
+       static int count = 1;
+       fprintf(stderr, "PCRE2:%p -> #%02d: alloc(%lu)\n", pointer, count++, size);
+#endif
+       return pointer;
+}
+
+static void pcre2_free(void *pointer, MAYBE_UNUSED void *memory_data)
+{
+#if GREP_PCRE2_DEBUG_MALLOC
+       static int count = 1;
+       if (pointer)
+               fprintf(stderr, "PCRE2:%p -> #%02d: free()\n", pointer, count++);
+#endif
+       free(pointer);
+}
+
 static void compile_pcre2_pattern(struct grep_pat *p, const struct grep_opt *opt)
 {
        int error;
@@ -373,17 +363,20 @@ static void compile_pcre2_pattern(struct grep_pat *p, const struct grep_opt *opt
        int patinforet;
        size_t jitsizearg;
 
-       assert(opt->pcre2);
-
-       p->pcre2_compile_context = NULL;
+       /*
+        * Call pcre2_general_context_create() before calling any
+        * other pcre2_*(). It sets up our malloc()/free() functions
+        * with which everything else is allocated.
+        */
+       p->pcre2_general_context = pcre2_general_context_create(
+               pcre2_malloc, pcre2_free, NULL);
+       if (!p->pcre2_general_context)
+               die("Couldn't allocate PCRE2 general context");
 
-       /* pcre2_global_context is initialized in append_grep_pattern */
        if (opt->ignore_case) {
                if (!opt->ignore_locale && has_non_ascii(p->pattern)) {
-                       if (!pcre2_global_context)
-                               BUG("pcre2_global_context uninitialized");
-                       p->pcre2_tables = pcre2_maketables(pcre2_global_context);
-                       p->pcre2_compile_context = pcre2_compile_context_create(NULL);
+                       p->pcre2_tables = pcre2_maketables(p->pcre2_general_context);
+                       p->pcre2_compile_context = pcre2_compile_context_create(p->pcre2_general_context);
                        pcre2_set_character_tables(p->pcre2_compile_context,
                                                        p->pcre2_tables);
                }
@@ -393,28 +386,18 @@ static void compile_pcre2_pattern(struct grep_pat *p, const struct grep_opt *opt
            !(!opt->ignore_case && (p->fixed || p->is_fixed)))
                options |= (PCRE2_UTF | PCRE2_MATCH_INVALID_UTF);
 
+#ifdef GIT_PCRE2_VERSION_10_36_OR_HIGHER
        /* Work around https://bugs.exim.org/show_bug.cgi?id=2642 fixed in 10.36 */
-       if (PCRE2_MATCH_INVALID_UTF && options & (PCRE2_UTF | PCRE2_CASELESS)) {
-               struct strbuf buf;
-               int len;
-               int err;
-
-               if ((len = pcre2_config(PCRE2_CONFIG_VERSION, NULL)) < 0)
-                       BUG("pcre2_config(..., NULL) failed: %d", len);
-               strbuf_init(&buf, len + 1);
-               if ((err = pcre2_config(PCRE2_CONFIG_VERSION, buf.buf)) < 0)
-                       BUG("pcre2_config(..., buf.buf) failed: %d", err);
-               if (versioncmp(buf.buf, "10.36") < 0)
-                       options |= PCRE2_NO_START_OPTIMIZE;
-               strbuf_release(&buf);
-       }
+       if (PCRE2_MATCH_INVALID_UTF && options & (PCRE2_UTF | PCRE2_CASELESS))
+               options |= PCRE2_NO_START_OPTIMIZE;
+#endif
 
        p->pcre2_pattern = pcre2_compile((PCRE2_SPTR)p->pattern,
                                         p->patternlen, options, &error, &erroffset,
                                         p->pcre2_compile_context);
 
        if (p->pcre2_pattern) {
-               p->pcre2_match_data = pcre2_match_data_create_from_pattern(p->pcre2_pattern, NULL);
+               p->pcre2_match_data = pcre2_match_data_create_from_pattern(p->pcre2_pattern, p->pcre2_general_context);
                if (!p->pcre2_match_data)
                        die("Couldn't allocate PCRE2 match data");
        } else {
@@ -493,7 +476,12 @@ static void free_pcre2_pattern(struct grep_pat *p)
        pcre2_compile_context_free(p->pcre2_compile_context);
        pcre2_code_free(p->pcre2_pattern);
        pcre2_match_data_free(p->pcre2_match_data);
+#ifdef GIT_PCRE2_VERSION_10_34_OR_HIGHER
+       pcre2_maketables_free(p->pcre2_general_context, p->pcre2_tables);
+#else
        free((void *)p->pcre2_tables);
+#endif
+       pcre2_general_context_free(p->pcre2_general_context);
 }
 #else /* !USE_LIBPCRE2 */
 static void compile_pcre2_pattern(struct grep_pat *p, const struct grep_opt *opt)
@@ -555,7 +543,6 @@ static void compile_regexp(struct grep_pat *p, struct grep_opt *opt)
 #endif
        if (p->fixed || p->is_fixed) {
 #ifdef USE_LIBPCRE2
-               opt->pcre2 = 1;
                if (p->is_fixed) {
                        compile_pcre2_pattern(p, opt);
                } else {
@@ -621,7 +608,7 @@ static struct grep_expr *compile_pattern_atom(struct grep_pat **list)
        case GREP_PATTERN: /* atom */
        case GREP_PATTERN_HEAD:
        case GREP_PATTERN_BODY:
-               x = xcalloc(1, sizeof (struct grep_expr));
+               CALLOC_ARRAY(x, 1);
                x->node = GREP_NODE_ATOM;
                x->u.atom = p;
                *list = p->next;
@@ -651,7 +638,7 @@ static struct grep_expr *compile_pattern_not(struct grep_pat **list)
                if (!p->next)
                        die("--not not followed by pattern expression");
                *list = p->next;
-               x = xcalloc(1, sizeof (struct grep_expr));
+               CALLOC_ARRAY(x, 1);
                x->node = GREP_NODE_NOT;
                x->u.unary = compile_pattern_not(list);
                if (!x->u.unary)
@@ -676,7 +663,7 @@ static struct grep_expr *compile_pattern_and(struct grep_pat **list)
                y = compile_pattern_and(list);
                if (!y)
                        die("--and not followed by pattern expression");
-               z = xcalloc(1, sizeof (struct grep_expr));
+               CALLOC_ARRAY(z, 1);
                z->node = GREP_NODE_AND;
                z->u.binary.left = x;
                z->u.binary.right = y;
@@ -696,7 +683,7 @@ static struct grep_expr *compile_pattern_or(struct grep_pat **list)
                y = compile_pattern_or(list);
                if (!y)
                        die("not a pattern expression %s", p->pattern);
-               z = xcalloc(1, sizeof (struct grep_expr));
+               CALLOC_ARRAY(z, 1);
                z->node = GREP_NODE_OR;
                z->u.binary.left = x;
                z->u.binary.right = y;
diff --git a/grep.h b/grep.h
index ae89d6254b3e933e0912e1b551e50cf9b8e01cb8..72f82b1e302397b20f8ae4ebd75a0b534fff99f5 100644 (file)
--- a/grep.h
+++ b/grep.h
@@ -4,10 +4,17 @@
 #ifdef USE_LIBPCRE2
 #define PCRE2_CODE_UNIT_WIDTH 8
 #include <pcre2.h>
+#if (PCRE2_MAJOR >= 10 && PCRE2_MINOR >= 36) || PCRE2_MAJOR >= 11
+#define GIT_PCRE2_VERSION_10_36_OR_HIGHER
+#endif
+#if (PCRE2_MAJOR >= 10 && PCRE2_MINOR >= 34) || PCRE2_MAJOR >= 11
+#define GIT_PCRE2_VERSION_10_34_OR_HIGHER
+#endif
 #else
 typedef int pcre2_code;
 typedef int pcre2_match_data;
 typedef int pcre2_compile_context;
+typedef int pcre2_general_context;
 #endif
 #ifndef PCRE2_MATCH_INVALID_UTF
 /* PCRE2_MATCH_* dummy also with !USE_LIBPCRE2, for test-pcre2-config.c */
@@ -69,6 +76,7 @@ struct grep_pat {
        pcre2_code *pcre2_pattern;
        pcre2_match_data *pcre2_match_data;
        pcre2_compile_context *pcre2_compile_context;
+       pcre2_general_context *pcre2_general_context;
        const uint8_t *pcre2_tables;
        uint32_t pcre2_jit_on;
        unsigned fixed:1;
@@ -161,7 +169,6 @@ struct grep_opt {
 
 int grep_config(const char *var, const char *value, void *);
 void grep_init(struct grep_opt *, struct repository *repo, const char *prefix);
-void grep_destroy(void);
 void grep_commit_pattern_type(enum grep_pattern_type, struct grep_opt *opt);
 
 void append_grep_pat(struct grep_opt *opt, const char *pat, size_t patlen, const char *origin, int no, enum grep_pat_token t);
index 5009471800e8c61b50bfd670a7714daaa26a01c7..134d2eec804c2eb4851689901f47c251f73b01de 100644 (file)
--- a/hashmap.c
+++ b/hashmap.c
@@ -76,7 +76,7 @@ unsigned int memihash_cont(unsigned int hash_seed, const void *buf, size_t len)
 static void alloc_table(struct hashmap *map, unsigned int size)
 {
        map->tablesize = size;
-       map->table = xcalloc(size, sizeof(struct hashmap_entry *));
+       CALLOC_ARRAY(map->table, size);
 
        /* calculate resize thresholds for new size */
        map->grow_at = (unsigned int) ((uint64_t) size * HASHMAP_LOAD_FACTOR / 100);
index a03b4bae2221fc2cdb8fa5dad0f89c1ce33af281..b329bf63f097fadda16cbd4c8e1c06134b28d6a8 100644 (file)
@@ -39,7 +39,7 @@ static struct string_list *get_parameters(void)
        if (!query_params) {
                const char *query = getenv("QUERY_STRING");
 
-               query_params = xcalloc(1, sizeof(*query_params));
+               CALLOC_ARRAY(query_params, 1);
                while (query && *query) {
                        char *name = url_decode_parameter_name(&query);
                        char *value = url_decode_parameter_value(&query);
index c4ccc5fea93cff445785bb101c8438b9374d1b74..fa642462a9e63867146c3c563aff9bce7b93d284 100644 (file)
@@ -3,6 +3,7 @@
 #include "exec-cmd.h"
 #include "http.h"
 #include "walker.h"
+#include "strvec.h"
 
 static const char http_fetch_usage[] = "git http-fetch "
 "[-c] [-t] [-a] [-v] [--recover] [-w ref] [--stdin | --packfile=hash | commit-id] url";
@@ -44,7 +45,8 @@ static int fetch_using_walker(const char *raw_url, int get_verbosely,
 }
 
 static void fetch_single_packfile(struct object_id *packfile_hash,
-                                 const char *url) {
+                                 const char *url,
+                                 const char **index_pack_args) {
        struct http_pack_request *preq;
        struct slot_results results;
        int ret;
@@ -55,7 +57,8 @@ static void fetch_single_packfile(struct object_id *packfile_hash,
        if (preq == NULL)
                die("couldn't create http pack request");
        preq->slot->results = &results;
-       preq->generate_keep = 1;
+       preq->index_pack_args = index_pack_args;
+       preq->preserve_index_pack_stdout = 1;
 
        if (start_active_slot(preq->slot)) {
                run_active_slot(preq->slot);
@@ -86,6 +89,7 @@ int cmd_main(int argc, const char **argv)
        int packfile = 0;
        int nongit;
        struct object_id packfile_hash;
+       struct strvec index_pack_args = STRVEC_INIT;
 
        setup_git_directory_gently(&nongit);
 
@@ -112,6 +116,8 @@ int cmd_main(int argc, const char **argv)
                        packfile = 1;
                        if (parse_oid_hex(p, &packfile_hash, &end) || *end)
                                die(_("argument to --packfile must be a valid hash (got '%s')"), p);
+               } else if (skip_prefix(argv[arg], "--index-pack-arg=", &p)) {
+                       strvec_push(&index_pack_args, p);
                }
                arg++;
        }
@@ -124,10 +130,18 @@ int cmd_main(int argc, const char **argv)
        git_config(git_default_config, NULL);
 
        if (packfile) {
-               fetch_single_packfile(&packfile_hash, argv[arg]);
+               if (!index_pack_args.nr)
+                       die(_("--packfile requires --index-pack-args"));
+
+               fetch_single_packfile(&packfile_hash, argv[arg],
+                                     index_pack_args.v);
+
                return 0;
        }
 
+       if (index_pack_args.nr)
+               die(_("--index-pack-args can only be used with --packfile"));
+
        if (commits_on_stdin) {
                commits = walker_targets_stdin(&commit_id, &write_ref);
        } else {
index 6a4a43e07f2cd43ad3b34b409de69d1903fb6fd9..b60d5fcc85dd18f9a6747d662c0c039d0362f982 100644 (file)
@@ -896,7 +896,7 @@ static struct remote_lock *lock_remote(const char *path, long timeout)
        curl_easy_setopt(slot->curl, CURLOPT_HTTPHEADER, dav_headers);
        curl_easy_setopt(slot->curl, CURLOPT_FILE, &in_buffer);
 
-       lock = xcalloc(1, sizeof(*lock));
+       CALLOC_ARRAY(lock, 1);
        lock->timeout = -1;
 
        if (start_active_slot(slot)) {
@@ -1713,7 +1713,7 @@ int cmd_main(int argc, const char **argv)
        int new_refs;
        struct ref *ref, *local_refs;
 
-       repo = xcalloc(1, sizeof(*repo));
+       CALLOC_ARRAY(repo, 1);
 
        argv++;
        for (i = 1; i < argc; i++, argv++) {
diff --git a/http.c b/http.c
index 8b23a546afdf40dc9f15756f637a62286fe1bdd0..406410f884e2e5132fae6b2f036e50169b72bec3 100644 (file)
--- a/http.c
+++ b/http.c
@@ -1635,23 +1635,33 @@ static int handle_curl_result(struct slot_results *results)
 
        if (results->curl_result == CURLE_OK) {
                credential_approve(&http_auth);
-               if (proxy_auth.password)
-                       credential_approve(&proxy_auth);
+               credential_approve(&proxy_auth);
+               credential_approve(&cert_auth);
                return HTTP_OK;
+       } else if (results->curl_result == CURLE_SSL_CERTPROBLEM) {
+               /*
+                * We can't tell from here whether it's a bad path, bad
+                * certificate, bad password, or something else wrong
+                * with the certificate.  So we reject the credential to
+                * avoid caching or saving a bad password.
+                */
+               credential_reject(&cert_auth);
+               return HTTP_NOAUTH;
        } else if (missing_target(results))
                return HTTP_MISSING_TARGET;
        else if (results->http_code == 401) {
+#ifdef LIBCURL_CAN_HANDLE_AUTH_ANY
+               http_auth_methods &= ~CURLAUTH_GSSNEGOTIATE;
+               if (results->auth_avail) {
+                       http_auth_methods &= results->auth_avail;
+                       http_auth_methods_restricted = 1;
+                       return HTTP_REAUTH;
+               }
+#endif
                if (http_auth.username && http_auth.password) {
                        credential_reject(&http_auth);
                        return HTTP_NOAUTH;
                } else {
-#ifdef LIBCURL_CAN_HANDLE_AUTH_ANY
-                       http_auth_methods &= ~CURLAUTH_GSSNEGOTIATE;
-                       if (results->auth_avail) {
-                               http_auth_methods &= results->auth_avail;
-                               http_auth_methods_restricted = 1;
-                       }
-#endif
                        return HTTP_REAUTH;
                }
        } else {
@@ -2259,6 +2269,9 @@ void release_http_pack_request(struct http_pack_request *preq)
        free(preq);
 }
 
+static const char *default_index_pack_args[] =
+       {"index-pack", "--stdin", NULL};
+
 int finish_http_pack_request(struct http_pack_request *preq)
 {
        struct child_process ip = CHILD_PROCESS_INIT;
@@ -2270,17 +2283,15 @@ int finish_http_pack_request(struct http_pack_request *preq)
 
        tmpfile_fd = xopen(preq->tmpfile.buf, O_RDONLY);
 
-       strvec_push(&ip.args, "index-pack");
-       strvec_push(&ip.args, "--stdin");
        ip.git_cmd = 1;
        ip.in = tmpfile_fd;
-       if (preq->generate_keep) {
-               strvec_pushf(&ip.args, "--keep=git %"PRIuMAX,
-                            (uintmax_t)getpid());
+       ip.argv = preq->index_pack_args ? preq->index_pack_args
+                                       : default_index_pack_args;
+
+       if (preq->preserve_index_pack_stdout)
                ip.out = 0;
-       } else {
+       else
                ip.no_stdout = 1;
-       }
 
        if (run_command(&ip)) {
                ret = -1;
@@ -2323,7 +2334,7 @@ struct http_pack_request *new_direct_http_pack_request(
        off_t prev_posn = 0;
        struct http_pack_request *preq;
 
-       preq = xcalloc(1, sizeof(*preq));
+       CALLOC_ARRAY(preq, 1);
        strbuf_init(&preq->tmpfile, 0);
 
        preq->url = url;
@@ -2418,7 +2429,7 @@ struct http_object_request *new_http_object_request(const char *base_url,
        off_t prev_posn = 0;
        struct http_object_request *freq;
 
-       freq = xcalloc(1, sizeof(*freq));
+       CALLOC_ARRAY(freq, 1);
        strbuf_init(&freq->tmpfile, 0);
        oidcpy(&freq->oid, oid);
        freq->localfile = -1;
diff --git a/http.h b/http.h
index 5de792ef3fe1dd8597c9b890a120eeacd2eb4994..bf3d1270ad8e2f0bd11b76baa183987f7b44d6f7 100644 (file)
--- a/http.h
+++ b/http.h
@@ -218,12 +218,12 @@ struct http_pack_request {
        char *url;
 
        /*
-        * If this is true, finish_http_pack_request() will pass "--keep" to
-        * index-pack, resulting in the creation of a keep file, and will not
-        * suppress its stdout (that is, the "keep\t<hash>\n" line will be
-        * printed to stdout).
+        * index-pack command to run. Must be terminated by NULL.
+        *
+        * If NULL, defaults to {"index-pack", "--stdin", NULL}.
         */
-       unsigned generate_keep : 1;
+       const char **index_pack_args;
+       unsigned preserve_index_pack_stdout : 1;
 
        FILE *packfile;
        struct strbuf tmpfile;
index d0b94f911eebfb23389ecd2e6e24f182ddb4e57e..bb085d66d10509214eae1994e430d6058955f7cf 100644 (file)
@@ -963,9 +963,9 @@ static struct imap_store *imap_open_store(struct imap_server_conf *srvc, const c
        char *arg, *rsp;
        int s = -1, preauth;
 
-       ctx = xcalloc(1, sizeof(*ctx));
+       CALLOC_ARRAY(ctx, 1);
 
-       ctx->imap = imap = xcalloc(1, sizeof(*imap));
+       ctx->imap = CALLOC_ARRAY(imap, 1);
        imap->buf.sock.fd[0] = imap->buf.sock.fd[1] = -1;
        imap->in_progress_append = &imap->in_progress;
 
index 75c8b1acfff86508614321a83989e2940fc21d4b..51d93310a4dee18ccfb559803583500ec45b27b4 100644 (file)
@@ -296,7 +296,7 @@ static void line_log_data_insert(struct line_log_data **list,
                return;
        }
 
-       p = xcalloc(1, sizeof(struct line_log_data));
+       CALLOC_ARRAY(p, 1);
        p->path = path;
        range_set_append(&p->ranges, begin, end);
        if (ip) {
index 9b50583dc05147fb6940c1d551ba274702704f07..955a8a9535575fe0a397497d765f3e0e97334259 100644 (file)
@@ -202,7 +202,7 @@ static const char *parse_range_funcname(
        drv = userdiff_find_by_path(istate, path);
        if (drv && drv->funcname.pattern) {
                const struct userdiff_funcname *pe = &drv->funcname;
-               xecfg = xcalloc(1, sizeof(*xecfg));
+               CALLOC_ARRAY(xecfg, 1);
                xdiff_set_find_func(xecfg, pe->pattern, pe->cflags);
        }
 
index 4ec0041cfb4eca9efc4420373ad5312569fb615c..39e2f15333694933468f6af9bea6d9804251dfcb 100644 (file)
@@ -186,7 +186,7 @@ static enum list_objects_filter_result filter_trees_depth(
                seen_info = oidmap_get(
                        &filter_data->seen_at_depth, &obj->oid);
                if (!seen_info) {
-                       seen_info = xcalloc(1, sizeof(*seen_info));
+                       CALLOC_ARRAY(seen_info, 1);
                        oidcpy(&seen_info->base.oid, &obj->oid);
                        seen_info->depth = filter_data->current_depth;
                        oidmap_put(&filter_data->seen_at_depth, seen_info);
@@ -626,7 +626,7 @@ static void filter_combine__init(
        size_t sub;
 
        d->nr = filter_options->sub_nr;
-       d->sub = xcalloc(d->nr, sizeof(*d->sub));
+       CALLOC_ARRAY(d->sub, d->nr);
        for (sub = 0; sub < d->nr; sub++)
                d->sub[sub].filter = list_objects_filter__init(
                        filter->omits ? &d->sub[sub].omits : NULL,
@@ -674,7 +674,7 @@ struct filter *list_objects_filter__init(
        if (!init_fn)
                return NULL;
 
-       filter = xcalloc(1, sizeof(*filter));
+       CALLOC_ARRAY(filter, 1);
        filter->omits = omitted;
        init_fn(filter_options, filter);
        return filter;
index 1ec0b959e015b20442aaddc417952f7a7a731d42..9a8a2c365c7a33fbf1fb4b1a50505ea19fe5558d 100644 (file)
@@ -268,7 +268,7 @@ static int read_merge_config(const char *var, const char *value, void *cb)
                if (!strncmp(fn->name, name, namelen) && !fn->name[namelen])
                        break;
        if (!fn) {
-               fn = xcalloc(1, sizeof(struct ll_merge_driver));
+               CALLOC_ARRAY(fn, 1);
                fn->name = xmemdupz(name, namelen);
                fn->fn = ll_ext_merge;
                *ll_user_merge_tail = fn;
index e048467650770510b41afb92678d0a807c34764d..f3178a66a95bb15915eaca9713dc442dd7397984 100644 (file)
@@ -369,8 +369,14 @@ void fmt_output_subject(struct strbuf *filename,
        int start_len = filename->len;
        int max_len = start_len + info->patch_name_max - (strlen(suffix) + 1);
 
-       if (0 < info->reroll_count)
-               strbuf_addf(filename, "v%d-", info->reroll_count);
+       if (info->reroll_count) {
+               struct strbuf temp = STRBUF_INIT;
+
+               strbuf_addf(&temp, "v%s", info->reroll_count);
+               format_sanitized_subject(filename, temp.buf, temp.len);
+               strbuf_addstr(filename, "-");
+               strbuf_release(&temp);
+       }
        strbuf_addf(filename, "%04d-%s", nr, subject);
 
        if (max_len < filename->len)
@@ -502,7 +508,7 @@ static void show_signature(struct rev_info *opt, struct commit *commit)
        struct signature_check sigc = { 0 };
        int status;
 
-       if (parse_signed_commit(commit, &payload, &signature) <= 0)
+       if (parse_signed_commit(commit, &payload, &signature, the_hash_algo) <= 0)
                goto out;
 
        status = check_signature(payload.buf, payload.len, signature.buf,
@@ -548,7 +554,8 @@ static int show_one_mergetag(struct commit *commit,
        struct strbuf verify_message;
        struct signature_check sigc = { 0 };
        int status, nth;
-       size_t payload_size;
+       struct strbuf payload = STRBUF_INIT;
+       struct strbuf signature = STRBUF_INIT;
 
        hash_object_file(the_hash_algo, extra->value, extra->len,
                         type_name(OBJ_TAG), &oid);
@@ -571,13 +578,11 @@ static int show_one_mergetag(struct commit *commit,
                strbuf_addf(&verify_message,
                            "parent #%d, tagged '%s'\n", nth + 1, tag->tag);
 
-       payload_size = parse_signature(extra->value, extra->len);
        status = -1;
-       if (extra->len > payload_size) {
+       if (parse_signature(extra->value, extra->len, &payload, &signature)) {
                /* could have a good signature */
-               status = check_signature(extra->value, payload_size,
-                                        extra->value + payload_size,
-                                        extra->len - payload_size, &sigc);
+               status = check_signature(payload.buf, payload.len,
+                                        signature.buf, signature.len, &sigc);
                if (sigc.gpg_output)
                        strbuf_addstr(&verify_message, sigc.gpg_output);
                else
@@ -588,6 +593,8 @@ static int show_one_mergetag(struct commit *commit,
 
        show_sig_lines(opt, status, verify_message.buf);
        strbuf_release(&verify_message);
+       strbuf_release(&payload);
+       strbuf_release(&signature);
        return 0;
 }
 
@@ -808,6 +815,11 @@ void show_log(struct rev_info *opt)
        if (cmit_fmt_is_mail(ctx.fmt) && opt->rdiff1) {
                struct diff_queue_struct dq;
                struct diff_options opts;
+               struct range_diff_options range_diff_opts = {
+                       .creation_factor = opt->creation_factor,
+                       .dual_color = 1,
+                       .diffopt = &opts
+               };
 
                memcpy(&dq, &diff_queued_diff, sizeof(diff_queued_diff));
                DIFF_QUEUE_CLEAR(&diff_queued_diff);
@@ -822,8 +834,7 @@ void show_log(struct rev_info *opt)
                opts.file = opt->diffopt.file;
                opts.use_color = opt->diffopt.use_color;
                diff_setup_done(&opts);
-               show_range_diff(opt->rdiff1, opt->rdiff2,
-                               opt->creation_factor, 1, &opts, NULL);
+               show_range_diff(opt->rdiff1, opt->rdiff2, &range_diff_opts);
 
                memcpy(&diff_queued_diff, &dq, sizeof(diff_queued_diff));
        }
@@ -958,12 +969,14 @@ static int log_tree_diff(struct rev_info *opt, struct commit *commit, struct log
 int log_tree_commit(struct rev_info *opt, struct commit *commit)
 {
        struct log_info log;
-       int shown, close_file = opt->diffopt.close_file;
+       int shown;
+       /* maybe called by e.g. cmd_log_walk(), maybe stand-alone */
+       int no_free = opt->diffopt.no_free;
 
        log.commit = commit;
        log.parent = NULL;
        opt->loginfo = &log;
-       opt->diffopt.close_file = 0;
+       opt->diffopt.no_free = 1;
 
        if (opt->line_level_traverse)
                return line_log_print(opt, commit);
@@ -980,7 +993,7 @@ int log_tree_commit(struct rev_info *opt, struct commit *commit)
                fprintf(opt->diffopt.file, "\n%s\n", opt->break_bar);
        opt->loginfo = NULL;
        maybe_flush_or_die(opt->diffopt.file, "stdout");
-       if (close_file)
-               fclose(opt->diffopt.file);
+       opt->diffopt.no_free = no_free;
+       diff_free(&opt->diffopt);
        return shown;
 }
index 5ff5473869fa19aa08d655cb1dcc7485d71dbbbd..88f6c3f60d8ef61373a1bfed33f49c877b6af320 100644 (file)
--- a/ls-refs.c
+++ b/ls-refs.c
@@ -7,6 +7,39 @@
 #include "pkt-line.h"
 #include "config.h"
 
+static int config_read;
+static int advertise_unborn;
+static int allow_unborn;
+
+static void ensure_config_read(void)
+{
+       const char *str = NULL;
+
+       if (config_read)
+               return;
+
+       if (repo_config_get_string_tmp(the_repository, "lsrefs.unborn", &str)) {
+               /*
+                * If there is no such config, advertise and allow it by
+                * default.
+                */
+               advertise_unborn = 1;
+               allow_unborn = 1;
+       } else {
+               if (!strcmp(str, "advertise")) {
+                       advertise_unborn = 1;
+                       allow_unborn = 1;
+               } else if (!strcmp(str, "allow")) {
+                       allow_unborn = 1;
+               } else if (!strcmp(str, "ignore")) {
+                       /* do nothing */
+               } else {
+                       die(_("invalid value '%s' for lsrefs.unborn"), str);
+               }
+       }
+       config_read = 1;
+}
+
 /*
  * Check if one of the prefixes is a prefix of the ref.
  * If no prefixes were provided, all refs match.
@@ -32,6 +65,7 @@ struct ls_refs_data {
        unsigned peel;
        unsigned symrefs;
        struct strvec prefixes;
+       unsigned unborn : 1;
 };
 
 static int send_ref(const char *refname, const struct object_id *oid,
@@ -47,7 +81,10 @@ static int send_ref(const char *refname, const struct object_id *oid,
        if (!ref_match(&data->prefixes, refname_nons))
                return 0;
 
-       strbuf_addf(&refline, "%s %s", oid_to_hex(oid), refname_nons);
+       if (oid)
+               strbuf_addf(&refline, "%s %s", oid_to_hex(oid), refname_nons);
+       else
+               strbuf_addf(&refline, "unborn %s", refname_nons);
        if (data->symrefs && flag & REF_ISSYMREF) {
                struct object_id unused;
                const char *symref_target = resolve_ref_unsafe(refname, 0,
@@ -61,7 +98,7 @@ static int send_ref(const char *refname, const struct object_id *oid,
                            strip_namespace(symref_target));
        }
 
-       if (data->peel) {
+       if (data->peel && oid) {
                struct object_id peeled;
                if (!peel_iterated_oid(oid, &peeled))
                        strbuf_addf(&refline, " peeled:%s", oid_to_hex(&peeled));
@@ -74,6 +111,23 @@ static int send_ref(const char *refname, const struct object_id *oid,
        return 0;
 }
 
+static void send_possibly_unborn_head(struct ls_refs_data *data)
+{
+       struct strbuf namespaced = STRBUF_INIT;
+       struct object_id oid;
+       int flag;
+       int oid_is_null;
+
+       strbuf_addf(&namespaced, "%sHEAD", get_git_namespace());
+       if (!resolve_ref_unsafe(namespaced.buf, 0, &oid, &flag))
+               return; /* bad ref */
+       oid_is_null = is_null_oid(&oid);
+       if (!oid_is_null ||
+           (data->unborn && data->symrefs && (flag & REF_ISSYMREF)))
+               send_ref(namespaced.buf, oid_is_null ? NULL : &oid, flag, data);
+       strbuf_release(&namespaced);
+}
+
 static int ls_refs_config(const char *var, const char *value, void *data)
 {
        /*
@@ -92,6 +146,7 @@ int ls_refs(struct repository *r, struct strvec *keys,
        memset(&data, 0, sizeof(data));
        strvec_init(&data.prefixes);
 
+       ensure_config_read();
        git_config(ls_refs_config, NULL);
 
        while (packet_reader_read(request) == PACKET_READ_NORMAL) {
@@ -104,12 +159,14 @@ int ls_refs(struct repository *r, struct strvec *keys,
                        data.symrefs = 1;
                else if (skip_prefix(arg, "ref-prefix ", &out))
                        strvec_push(&data.prefixes, out);
+               else if (!strcmp("unborn", arg))
+                       data.unborn = allow_unborn;
        }
 
        if (request->status != PACKET_READ_FLUSH)
                die(_("expected flush after ls-refs arguments"));
 
-       head_ref_namespaced(send_ref, &data);
+       send_possibly_unborn_head(&data);
        if (!data.prefixes.nr)
                strvec_push(&data.prefixes, "");
        for_each_fullref_in_prefixes(get_git_namespace(), data.prefixes.v,
@@ -118,3 +175,14 @@ int ls_refs(struct repository *r, struct strvec *keys,
        strvec_clear(&data.prefixes);
        return 0;
 }
+
+int ls_refs_advertise(struct repository *r, struct strbuf *value)
+{
+       if (value) {
+               ensure_config_read();
+               if (advertise_unborn)
+                       strbuf_addstr(value, "unborn");
+       }
+
+       return 1;
+}
index 7b33a7c6b819c0d504ad6b447b61e003e9f590fb..a99e4be0bdde1b287807459dc40934ef4459b227 100644 (file)
--- a/ls-refs.h
+++ b/ls-refs.h
@@ -6,5 +6,6 @@ struct strvec;
 struct packet_reader;
 int ls_refs(struct repository *r, struct strvec *keys,
            struct packet_reader *request);
+int ls_refs_advertise(struct repository *r, struct strbuf *value);
 
 #endif /* LS_REFS_H */
index eb77c6e77cebf517c989cb0a072e9ead77fd6350..d1f7c0d272d81ca00bfef33c80a02b9d7da997cf 100644 (file)
--- a/mailmap.c
+++ b/mailmap.c
@@ -83,7 +83,7 @@ static void add_mapping(struct string_list *map,
        if (item->util) {
                me = (struct mailmap_entry *)item->util;
        } else {
-               me = xcalloc(1, sizeof(struct mailmap_entry));
+               CALLOC_ARRAY(me, 1);
                me->namemap.strdup_strings = 1;
                me->namemap.cmp = namemap_cmp;
                item->util = me;
@@ -157,20 +157,30 @@ static void read_mailmap_line(struct string_list *map, char *buffer)
                add_mapping(map, name1, email1, name2, email2);
 }
 
-static int read_mailmap_file(struct string_list *map, const char *filename)
+/* Flags for read_mailmap_file() */
+#define MAILMAP_NOFOLLOW (1<<0)
+
+static int read_mailmap_file(struct string_list *map, const char *filename,
+                            unsigned flags)
 {
        char buffer[1024];
        FILE *f;
+       int fd;
 
        if (!filename)
                return 0;
 
-       f = fopen(filename, "r");
-       if (!f) {
+       if (flags & MAILMAP_NOFOLLOW)
+               fd = open_nofollow(filename, O_RDONLY);
+       else
+               fd = open(filename, O_RDONLY);
+
+       if (fd < 0) {
                if (errno == ENOENT)
                        return 0;
                return error_errno("unable to open mailmap at %s", filename);
        }
+       f = xfdopen(fd, "r");
 
        while (fgets(buffer, sizeof(buffer), f) != NULL)
                read_mailmap_line(map, buffer);
@@ -225,10 +235,13 @@ int read_mailmap(struct string_list *map)
        if (!git_mailmap_blob && is_bare_repository())
                git_mailmap_blob = "HEAD:.mailmap";
 
-       err |= read_mailmap_file(map, ".mailmap");
+       if (!startup_info->have_repository || !is_bare_repository())
+               err |= read_mailmap_file(map, ".mailmap",
+                                        startup_info->have_repository ?
+                                        MAILMAP_NOFOLLOW : 0);
        if (startup_info->have_repository)
                err |= read_mailmap_blob(map, git_mailmap_blob);
-       err |= read_mailmap_file(map, git_mailmap_file);
+       err |= read_mailmap_file(map, git_mailmap_file, 0);
        return err;
 }
 
index 8401761dda0a2a585f6593e2212ff41db7135170..ccdcad2e3d622fdd9491d3d1cbdc26f673bb41df 100644 (file)
@@ -5,7 +5,7 @@
 #include "cache.h"
 #include "mem-pool.h"
 
-#define BLOCK_GROWTH_SIZE 1024*1024 - sizeof(struct mp_block);
+#define BLOCK_GROWTH_SIZE (1024 * 1024 - sizeof(struct mp_block))
 
 /*
  * Allocate a new mp_block and insert it after the block specified in
index bd089cb9a76f68423aa2f8e2f32ac42dd935028d..5e118a85ee042a45ef3cb628289b96db010fc52d 100644 (file)
@@ -1621,8 +1621,7 @@ static void compute_collisions(struct strmap *collisions,
                if (collision_info) {
                        free(new_path);
                } else {
-                       collision_info = xcalloc(1,
-                                                sizeof(struct collision_info));
+                       CALLOC_ARRAY(collision_info, 1);
                        string_list_init(&collision_info->source_files, 0);
                        strmap_put(collisions, new_path, collision_info);
                }
@@ -1763,7 +1762,7 @@ static void apply_directory_rename_modifications(struct merge_options *opt,
                struct conflict_info *dir_ci;
                char *cur_dir = dirs_to_insert.items[i].string;
 
-               dir_ci = xcalloc(1, sizeof(*dir_ci));
+               CALLOC_ARRAY(dir_ci, 1);
 
                dir_ci->merged.directory_name = parent_name;
                len = strlen(parent_name);
@@ -2795,7 +2794,7 @@ static void process_entry(struct merge_options *opt,
                 * the directory to remain here, so we need to move this
                 * path to some new location.
                 */
-               new_ci = xcalloc(1, sizeof(*new_ci));
+               CALLOC_ARRAY(new_ci, 1);
                /* We don't really want new_ci->merged.result copied, but it'll
                 * be overwritten below so it doesn't matter.  We also don't
                 * want any directory mode/oid values copied, but we'll zero
@@ -3175,7 +3174,7 @@ static int checkout(struct merge_options *opt,
        unpack_opts.verbose_update = (opt->verbosity > 2);
        unpack_opts.fn = twoway_merge;
        if (1/* FIXME: opts->overwrite_ignore*/) {
-               unpack_opts.dir = xcalloc(1, sizeof(*unpack_opts.dir));
+               CALLOC_ARRAY(unpack_opts.dir, 1);
                unpack_opts.dir->flags |= DIR_SHOW_IGNORED;
                setup_standard_excludes(unpack_opts.dir);
        }
index b052974f191cd82741475a019076c90e45d6d4de..ed31f9496cbcb2e71f41fde922075dc2684c70f2 100644 (file)
@@ -303,7 +303,7 @@ static inline void setup_rename_conflict_info(enum rename_type rename_type,
                return;
        }
 
-       ci = xcalloc(1, sizeof(struct rename_conflict_info));
+       CALLOC_ARRAY(ci, 1);
        ci->rename_type = rename_type;
        ci->ren1 = ren1;
        ci->ren2 = ren2;
@@ -453,7 +453,7 @@ static void unpack_trees_finish(struct merge_options *opt)
 
 static int save_files_dirs(const struct object_id *oid,
                           struct strbuf *base, const char *path,
-                          unsigned int mode, int stage, void *context)
+                          unsigned int mode, void *context)
 {
        struct path_hashmap_entry *entry;
        int baselen = base->len;
@@ -473,8 +473,8 @@ static void get_files_dirs(struct merge_options *opt, struct tree *tree)
 {
        struct pathspec match_all;
        memset(&match_all, 0, sizeof(match_all));
-       read_tree_recursive(opt->repo, tree, "", 0, 0,
-                           &match_all, save_files_dirs, opt);
+       read_tree(opt->repo, tree,
+                 &match_all, save_files_dirs, opt);
 }
 
 static int get_tree_entry_if_blob(struct repository *r,
@@ -2389,8 +2389,7 @@ static void compute_collisions(struct hashmap *collisions,
                        continue;
                collision_ent = collision_find_entry(collisions, new_path);
                if (!collision_ent) {
-                       collision_ent = xcalloc(1,
-                                               sizeof(struct collision_entry));
+                       CALLOC_ARRAY(collision_ent, 1);
                        hashmap_entry_init(&collision_ent->ent,
                                                strhash(new_path));
                        hashmap_put(collisions, &collision_ent->ent);
@@ -2594,7 +2593,7 @@ static struct string_list *get_renames(struct merge_options *opt,
        struct string_list *renames;
 
        compute_collisions(&collisions, dir_renames, pairs);
-       renames = xcalloc(1, sizeof(struct string_list));
+       CALLOC_ARRAY(renames, 1);
 
        for (i = 0; i < pairs->nr; ++i) {
                struct string_list_item *item;
@@ -3664,7 +3663,7 @@ static int merge_start(struct merge_options *opt, struct tree *head)
                return -1;
        }
 
-       opt->priv = xcalloc(1, sizeof(*opt->priv));
+       CALLOC_ARRAY(opt->priv, 1);
        string_list_init(&opt->priv->df_conflict_file_set, 1);
        return 0;
 }
index abc8ce4ec44e190812ba46b39b8ba2dec1cc14fe..96f6209a04106fbe8b66e30d5fefd0c8e92fb685 100644 (file)
@@ -15,6 +15,17 @@ merge_cmd () {
                                "$LOCAL" "$MERGED" "$REMOTE"
                fi
                ;;
+       *vimdiff1)
+               "$merge_tool_path" -f -d \
+                       -c 'echon "Resolve conflicts leftward then save. Use :cq to abort."' \
+                       "$LOCAL" "$REMOTE"
+               ret="$?"
+               if test "$ret" -eq 0
+               then
+                       cp -- "$LOCAL" "$MERGED"
+               fi
+               return "$ret"
+               ;;
        *vimdiff2)
                "$merge_tool_path" -f -d -c 'wincmd l' \
                        "$LOCAL" "$MERGED" "$REMOTE"
@@ -52,7 +63,7 @@ exit_code_trustable () {
 
 list_tool_variants () {
        for prefix in '' g n; do
-               for suffix in '' 2 3; do
+               for suffix in '' 2 3; do
                        echo "${prefix}vimdiff${suffix}"
                done
        done
diff --git a/midx.c b/midx.c
index 05c40a98e053905dc8b5e4587626e68acda6c62e..9e8658317251dfc5c2d5aa116305e229783dde76 100644 (file)
--- a/midx.c
+++ b/midx.c
@@ -11,6 +11,8 @@
 #include "trace2.h"
 #include "run-command.h"
 #include "repository.h"
+#include "chunk-format.h"
+#include "pack.h"
 
 #define MIDX_SIGNATURE 0x4d494458 /* "MIDX" */
 #define MIDX_VERSION 1
 #define MIDX_HEADER_SIZE 12
 #define MIDX_MIN_SIZE (MIDX_HEADER_SIZE + the_hash_algo->rawsz)
 
-#define MIDX_MAX_CHUNKS 5
 #define MIDX_CHUNK_ALIGNMENT 4
 #define MIDX_CHUNKID_PACKNAMES 0x504e414d /* "PNAM" */
 #define MIDX_CHUNKID_OIDFANOUT 0x4f494446 /* "OIDF" */
 #define MIDX_CHUNKID_OIDLOOKUP 0x4f49444c /* "OIDL" */
 #define MIDX_CHUNKID_OBJECTOFFSETS 0x4f4f4646 /* "OOFF" */
 #define MIDX_CHUNKID_LARGEOFFSETS 0x4c4f4646 /* "LOFF" */
-#define MIDX_CHUNKLOOKUP_WIDTH (sizeof(uint32_t) + sizeof(uint64_t))
 #define MIDX_CHUNK_FANOUT_SIZE (sizeof(uint32_t) * 256)
 #define MIDX_CHUNK_OFFSET_WIDTH (2 * sizeof(uint32_t))
 #define MIDX_CHUNK_LARGE_OFFSET_WIDTH (sizeof(uint64_t))
@@ -48,11 +48,35 @@ static uint8_t oid_version(void)
        }
 }
 
+static const unsigned char *get_midx_checksum(struct multi_pack_index *m)
+{
+       return m->data + m->data_len - the_hash_algo->rawsz;
+}
+
 static char *get_midx_filename(const char *object_dir)
 {
        return xstrfmt("%s/pack/multi-pack-index", object_dir);
 }
 
+char *get_midx_rev_filename(struct multi_pack_index *m)
+{
+       return xstrfmt("%s/pack/multi-pack-index-%s.rev",
+                      m->object_dir, hash_to_hex(get_midx_checksum(m)));
+}
+
+static int midx_read_oid_fanout(const unsigned char *chunk_start,
+                               size_t chunk_size, void *data)
+{
+       struct multi_pack_index *m = data;
+       m->chunk_oid_fanout = (uint32_t *)chunk_start;
+
+       if (chunk_size != 4 * 256) {
+               error(_("multi-pack-index OID fanout is of the wrong size"));
+               return 1;
+       }
+       return 0;
+}
+
 struct multi_pack_index *load_multi_pack_index(const char *object_dir, int local)
 {
        struct multi_pack_index *m = NULL;
@@ -64,6 +88,7 @@ struct multi_pack_index *load_multi_pack_index(const char *object_dir, int local
        char *midx_name = get_midx_filename(object_dir);
        uint32_t i;
        const char *cur_pack_name;
+       struct chunkfile *cf = NULL;
 
        fd = git_open(midx_name);
 
@@ -113,62 +138,27 @@ struct multi_pack_index *load_multi_pack_index(const char *object_dir, int local
 
        m->num_packs = get_be32(m->data + MIDX_BYTE_NUM_PACKS);
 
-       for (i = 0; i < m->num_chunks; i++) {
-               uint32_t chunk_id = get_be32(m->data + MIDX_HEADER_SIZE +
-                                            MIDX_CHUNKLOOKUP_WIDTH * i);
-               uint64_t chunk_offset = get_be64(m->data + MIDX_HEADER_SIZE + 4 +
-                                                MIDX_CHUNKLOOKUP_WIDTH * i);
+       cf = init_chunkfile(NULL);
 
-               if (chunk_offset >= m->data_len)
-                       die(_("invalid chunk offset (too large)"));
-
-               switch (chunk_id) {
-                       case MIDX_CHUNKID_PACKNAMES:
-                               m->chunk_pack_names = m->data + chunk_offset;
-                               break;
-
-                       case MIDX_CHUNKID_OIDFANOUT:
-                               m->chunk_oid_fanout = (uint32_t *)(m->data + chunk_offset);
-                               break;
-
-                       case MIDX_CHUNKID_OIDLOOKUP:
-                               m->chunk_oid_lookup = m->data + chunk_offset;
-                               break;
-
-                       case MIDX_CHUNKID_OBJECTOFFSETS:
-                               m->chunk_object_offsets = m->data + chunk_offset;
-                               break;
-
-                       case MIDX_CHUNKID_LARGEOFFSETS:
-                               m->chunk_large_offsets = m->data + chunk_offset;
-                               break;
-
-                       case 0:
-                               die(_("terminating multi-pack-index chunk id appears earlier than expected"));
-                               break;
-
-                       default:
-                               /*
-                                * Do nothing on unrecognized chunks, allowing future
-                                * extensions to add optional chunks.
-                                */
-                               break;
-               }
-       }
+       if (read_table_of_contents(cf, m->data, midx_size,
+                                  MIDX_HEADER_SIZE, m->num_chunks))
+               goto cleanup_fail;
 
-       if (!m->chunk_pack_names)
+       if (pair_chunk(cf, MIDX_CHUNKID_PACKNAMES, &m->chunk_pack_names) == CHUNK_NOT_FOUND)
                die(_("multi-pack-index missing required pack-name chunk"));
-       if (!m->chunk_oid_fanout)
+       if (read_chunk(cf, MIDX_CHUNKID_OIDFANOUT, midx_read_oid_fanout, m) == CHUNK_NOT_FOUND)
                die(_("multi-pack-index missing required OID fanout chunk"));
-       if (!m->chunk_oid_lookup)
+       if (pair_chunk(cf, MIDX_CHUNKID_OIDLOOKUP, &m->chunk_oid_lookup) == CHUNK_NOT_FOUND)
                die(_("multi-pack-index missing required OID lookup chunk"));
-       if (!m->chunk_object_offsets)
+       if (pair_chunk(cf, MIDX_CHUNKID_OBJECTOFFSETS, &m->chunk_object_offsets) == CHUNK_NOT_FOUND)
                die(_("multi-pack-index missing required object offsets chunk"));
 
+       pair_chunk(cf, MIDX_CHUNKID_LARGEOFFSETS, &m->chunk_large_offsets);
+
        m->num_objects = ntohl(m->chunk_oid_fanout[255]);
 
-       m->pack_names = xcalloc(m->num_packs, sizeof(*m->pack_names));
-       m->packs = xcalloc(m->num_packs, sizeof(*m->packs));
+       CALLOC_ARRAY(m->pack_names, m->num_packs);
+       CALLOC_ARRAY(m->packs, m->num_packs);
 
        cur_pack_name = (const char *)m->chunk_pack_names;
        for (i = 0; i < m->num_packs; i++) {
@@ -190,6 +180,7 @@ struct multi_pack_index *load_multi_pack_index(const char *object_dir, int local
 cleanup_fail:
        free(m);
        free(midx_name);
+       free(cf);
        if (midx_map)
                munmap(midx_map, midx_size);
        if (0 <= fd)
@@ -260,12 +251,12 @@ struct object_id *nth_midxed_object_oid(struct object_id *oid,
        return oid;
 }
 
-static off_t nth_midxed_offset(struct multi_pack_index *m, uint32_t pos)
+off_t nth_midxed_offset(struct multi_pack_index *m, uint32_t pos)
 {
        const unsigned char *offset_data;
        uint32_t offset32;
 
-       offset_data = m->chunk_object_offsets + pos * MIDX_CHUNK_OFFSET_WIDTH;
+       offset_data = m->chunk_object_offsets + (off_t)pos * MIDX_CHUNK_OFFSET_WIDTH;
        offset32 = get_be32(offset_data + sizeof(uint32_t));
 
        if (m->chunk_large_offsets && offset32 & MIDX_LARGE_OFFSET_NEEDED) {
@@ -279,9 +270,10 @@ static off_t nth_midxed_offset(struct multi_pack_index *m, uint32_t pos)
        return offset32;
 }
 
-static uint32_t nth_midxed_pack_int_id(struct multi_pack_index *m, uint32_t pos)
+uint32_t nth_midxed_pack_int_id(struct multi_pack_index *m, uint32_t pos)
 {
-       return get_be32(m->chunk_object_offsets + pos * MIDX_CHUNK_OFFSET_WIDTH);
+       return get_be32(m->chunk_object_offsets +
+                       (off_t)pos * MIDX_CHUNK_OFFSET_WIDTH);
 }
 
 static int nth_midxed_pack_entry(struct repository *r,
@@ -451,49 +443,67 @@ static int pack_info_compare(const void *_a, const void *_b)
        return strcmp(a->pack_name, b->pack_name);
 }
 
-struct pack_list {
+static int idx_or_pack_name_cmp(const void *_va, const void *_vb)
+{
+       const char *pack_name = _va;
+       const struct pack_info *compar = _vb;
+
+       return cmp_idx_or_pack_name(pack_name, compar->pack_name);
+}
+
+struct write_midx_context {
        struct pack_info *info;
        uint32_t nr;
        uint32_t alloc;
        struct multi_pack_index *m;
        struct progress *progress;
        unsigned pack_paths_checked;
+
+       struct pack_midx_entry *entries;
+       uint32_t entries_nr;
+
+       uint32_t *pack_perm;
+       uint32_t *pack_order;
+       unsigned large_offsets_needed:1;
+       uint32_t num_large_offsets;
+
+       int preferred_pack_idx;
 };
 
 static void add_pack_to_midx(const char *full_path, size_t full_path_len,
                             const char *file_name, void *data)
 {
-       struct pack_list *packs = (struct pack_list *)data;
+       struct write_midx_context *ctx = data;
 
        if (ends_with(file_name, ".idx")) {
-               display_progress(packs->progress, ++packs->pack_paths_checked);
-               if (packs->m && midx_contains_pack(packs->m, file_name))
+               display_progress(ctx->progress, ++ctx->pack_paths_checked);
+               if (ctx->m && midx_contains_pack(ctx->m, file_name))
                        return;
 
-               ALLOC_GROW(packs->info, packs->nr + 1, packs->alloc);
+               ALLOC_GROW(ctx->info, ctx->nr + 1, ctx->alloc);
 
-               packs->info[packs->nr].p = add_packed_git(full_path,
-                                                         full_path_len,
-                                                         0);
+               ctx->info[ctx->nr].p = add_packed_git(full_path,
+                                                     full_path_len,
+                                                     0);
 
-               if (!packs->info[packs->nr].p) {
+               if (!ctx->info[ctx->nr].p) {
                        warning(_("failed to add packfile '%s'"),
                                full_path);
                        return;
                }
 
-               if (open_pack_index(packs->info[packs->nr].p)) {
+               if (open_pack_index(ctx->info[ctx->nr].p)) {
                        warning(_("failed to open pack-index '%s'"),
                                full_path);
-                       close_pack(packs->info[packs->nr].p);
-                       FREE_AND_NULL(packs->info[packs->nr].p);
+                       close_pack(ctx->info[ctx->nr].p);
+                       FREE_AND_NULL(ctx->info[ctx->nr].p);
                        return;
                }
 
-               packs->info[packs->nr].pack_name = xstrdup(file_name);
-               packs->info[packs->nr].orig_pack_int_id = packs->nr;
-               packs->info[packs->nr].expired = 0;
-               packs->nr++;
+               ctx->info[ctx->nr].pack_name = xstrdup(file_name);
+               ctx->info[ctx->nr].orig_pack_int_id = ctx->nr;
+               ctx->info[ctx->nr].expired = 0;
+               ctx->nr++;
        }
 }
 
@@ -502,6 +512,7 @@ struct pack_midx_entry {
        uint32_t pack_int_id;
        time_t pack_mtime;
        uint64_t offset;
+       unsigned preferred : 1;
 };
 
 static int midx_oid_compare(const void *_a, const void *_b)
@@ -513,6 +524,12 @@ static int midx_oid_compare(const void *_a, const void *_b)
        if (cmp)
                return cmp;
 
+       /* Sort objects in a preferred pack first when multiple copies exist. */
+       if (a->preferred > b->preferred)
+               return -1;
+       if (a->preferred < b->preferred)
+               return 1;
+
        if (a->pack_mtime > b->pack_mtime)
                return -1;
        else if (a->pack_mtime < b->pack_mtime)
@@ -540,7 +557,8 @@ static int nth_midxed_pack_midx_entry(struct multi_pack_index *m,
 static void fill_pack_entry(uint32_t pack_int_id,
                            struct packed_git *p,
                            uint32_t cur_object,
-                           struct pack_midx_entry *entry)
+                           struct pack_midx_entry *entry,
+                           int preferred)
 {
        if (nth_packed_object_id(&entry->oid, p, cur_object) < 0)
                die(_("failed to locate object %d in packfile"), cur_object);
@@ -549,6 +567,7 @@ static void fill_pack_entry(uint32_t pack_int_id,
        entry->pack_mtime = p->mtime;
 
        entry->offset = nth_packed_object_offset(p, cur_object);
+       entry->preferred = !!preferred;
 }
 
 /*
@@ -565,7 +584,8 @@ static void fill_pack_entry(uint32_t pack_int_id,
 static struct pack_midx_entry *get_sorted_entries(struct multi_pack_index *m,
                                                  struct pack_info *info,
                                                  uint32_t nr_packs,
-                                                 uint32_t *nr_objects)
+                                                 uint32_t *nr_objects,
+                                                 int preferred_pack)
 {
        uint32_t cur_fanout, cur_pack, cur_object;
        uint32_t alloc_fanout, alloc_objects, total_objects = 0;
@@ -602,12 +622,17 @@ static struct pack_midx_entry *get_sorted_entries(struct multi_pack_index *m,
                                nth_midxed_pack_midx_entry(m,
                                                           &entries_by_fanout[nr_fanout],
                                                           cur_object);
+                               if (nth_midxed_pack_int_id(m, cur_object) == preferred_pack)
+                                       entries_by_fanout[nr_fanout].preferred = 1;
+                               else
+                                       entries_by_fanout[nr_fanout].preferred = 0;
                                nr_fanout++;
                        }
                }
 
                for (cur_pack = start_pack; cur_pack < nr_packs; cur_pack++) {
                        uint32_t start = 0, end;
+                       int preferred = cur_pack == preferred_pack;
 
                        if (cur_fanout)
                                start = get_pack_fanout(info[cur_pack].p, cur_fanout - 1);
@@ -615,7 +640,11 @@ static struct pack_midx_entry *get_sorted_entries(struct multi_pack_index *m,
 
                        for (cur_object = start; cur_object < end; cur_object++) {
                                ALLOC_GROW(entries_by_fanout, nr_fanout + 1, alloc_fanout);
-                               fill_pack_entry(cur_pack, info[cur_pack].p, cur_object, &entries_by_fanout[nr_fanout]);
+                               fill_pack_entry(cur_pack,
+                                               info[cur_pack].p,
+                                               cur_object,
+                                               &entries_by_fanout[nr_fanout],
+                                               preferred);
                                nr_fanout++;
                        }
                }
@@ -643,27 +672,26 @@ static struct pack_midx_entry *get_sorted_entries(struct multi_pack_index *m,
        return deduplicated_entries;
 }
 
-static size_t write_midx_pack_names(struct hashfile *f,
-                                   struct pack_info *info,
-                                   uint32_t num_packs)
+static int write_midx_pack_names(struct hashfile *f, void *data)
 {
+       struct write_midx_context *ctx = data;
        uint32_t i;
        unsigned char padding[MIDX_CHUNK_ALIGNMENT];
        size_t written = 0;
 
-       for (i = 0; i < num_packs; i++) {
+       for (i = 0; i < ctx->nr; i++) {
                size_t writelen;
 
-               if (info[i].expired)
+               if (ctx->info[i].expired)
                        continue;
 
-               if (i && strcmp(info[i].pack_name, info[i - 1].pack_name) <= 0)
+               if (i && strcmp(ctx->info[i].pack_name, ctx->info[i - 1].pack_name) <= 0)
                        BUG("incorrect pack-file order: %s before %s",
-                           info[i - 1].pack_name,
-                           info[i].pack_name);
+                           ctx->info[i - 1].pack_name,
+                           ctx->info[i].pack_name);
 
-               writelen = strlen(info[i].pack_name) + 1;
-               hashwrite(f, info[i].pack_name, writelen);
+               writelen = strlen(ctx->info[i].pack_name) + 1;
+               hashwrite(f, ctx->info[i].pack_name, writelen);
                written += writelen;
        }
 
@@ -672,18 +700,17 @@ static size_t write_midx_pack_names(struct hashfile *f,
        if (i < MIDX_CHUNK_ALIGNMENT) {
                memset(padding, 0, sizeof(padding));
                hashwrite(f, padding, i);
-               written += i;
        }
 
-       return written;
+       return 0;
 }
 
-static size_t write_midx_oid_fanout(struct hashfile *f,
-                                   struct pack_midx_entry *objects,
-                                   uint32_t nr_objects)
+static int write_midx_oid_fanout(struct hashfile *f,
+                                void *data)
 {
-       struct pack_midx_entry *list = objects;
-       struct pack_midx_entry *last = objects + nr_objects;
+       struct write_midx_context *ctx = data;
+       struct pack_midx_entry *list = ctx->entries;
+       struct pack_midx_entry *last = ctx->entries + ctx->entries_nr;
        uint32_t count = 0;
        uint32_t i;
 
@@ -704,21 +731,21 @@ static size_t write_midx_oid_fanout(struct hashfile *f,
                list = next;
        }
 
-       return MIDX_CHUNK_FANOUT_SIZE;
+       return 0;
 }
 
-static size_t write_midx_oid_lookup(struct hashfile *f, unsigned char hash_len,
-                                   struct pack_midx_entry *objects,
-                                   uint32_t nr_objects)
+static int write_midx_oid_lookup(struct hashfile *f,
+                                void *data)
 {
-       struct pack_midx_entry *list = objects;
+       struct write_midx_context *ctx = data;
+       unsigned char hash_len = the_hash_algo->rawsz;
+       struct pack_midx_entry *list = ctx->entries;
        uint32_t i;
-       size_t written = 0;
 
-       for (i = 0; i < nr_objects; i++) {
+       for (i = 0; i < ctx->entries_nr; i++) {
                struct pack_midx_entry *obj = list++;
 
-               if (i < nr_objects - 1) {
+               if (i < ctx->entries_nr - 1) {
                        struct pack_midx_entry *next = list;
                        if (oidcmp(&obj->oid, &next->oid) >= 0)
                                BUG("OIDs not in order: %s >= %s",
@@ -727,50 +754,48 @@ static size_t write_midx_oid_lookup(struct hashfile *f, unsigned char hash_len,
                }
 
                hashwrite(f, obj->oid.hash, (int)hash_len);
-               written += hash_len;
        }
 
-       return written;
+       return 0;
 }
 
-static size_t write_midx_object_offsets(struct hashfile *f, int large_offset_needed,
-                                       uint32_t *perm,
-                                       struct pack_midx_entry *objects, uint32_t nr_objects)
+static int write_midx_object_offsets(struct hashfile *f,
+                                    void *data)
 {
-       struct pack_midx_entry *list = objects;
+       struct write_midx_context *ctx = data;
+       struct pack_midx_entry *list = ctx->entries;
        uint32_t i, nr_large_offset = 0;
-       size_t written = 0;
 
-       for (i = 0; i < nr_objects; i++) {
+       for (i = 0; i < ctx->entries_nr; i++) {
                struct pack_midx_entry *obj = list++;
 
-               if (perm[obj->pack_int_id] == PACK_EXPIRED)
+               if (ctx->pack_perm[obj->pack_int_id] == PACK_EXPIRED)
                        BUG("object %s is in an expired pack with int-id %d",
                            oid_to_hex(&obj->oid),
                            obj->pack_int_id);
 
-               hashwrite_be32(f, perm[obj->pack_int_id]);
+               hashwrite_be32(f, ctx->pack_perm[obj->pack_int_id]);
 
-               if (large_offset_needed && obj->offset >> 31)
+               if (ctx->large_offsets_needed && obj->offset >> 31)
                        hashwrite_be32(f, MIDX_LARGE_OFFSET_NEEDED | nr_large_offset++);
-               else if (!large_offset_needed && obj->offset >> 32)
+               else if (!ctx->large_offsets_needed && obj->offset >> 32)
                        BUG("object %s requires a large offset (%"PRIx64") but the MIDX is not writing large offsets!",
                            oid_to_hex(&obj->oid),
                            obj->offset);
                else
                        hashwrite_be32(f, (uint32_t)obj->offset);
-
-               written += MIDX_CHUNK_OFFSET_WIDTH;
        }
 
-       return written;
+       return 0;
 }
 
-static size_t write_midx_large_offsets(struct hashfile *f, uint32_t nr_large_offset,
-                                      struct pack_midx_entry *objects, uint32_t nr_objects)
+static int write_midx_large_offsets(struct hashfile *f,
+                                   void *data)
 {
-       struct pack_midx_entry *list = objects, *end = objects + nr_objects;
-       size_t written = 0;
+       struct write_midx_context *ctx = data;
+       struct pack_midx_entry *list = ctx->entries;
+       struct pack_midx_entry *end = ctx->entries + ctx->entries_nr;
+       uint32_t nr_large_offset = ctx->num_large_offsets;
 
        while (nr_large_offset) {
                struct pack_midx_entry *obj;
@@ -785,34 +810,96 @@ static size_t write_midx_large_offsets(struct hashfile *f, uint32_t nr_large_off
                if (!(offset >> 31))
                        continue;
 
-               written += hashwrite_be64(f, offset);
+               hashwrite_be64(f, offset);
 
                nr_large_offset--;
        }
 
-       return written;
+       return 0;
+}
+
+struct midx_pack_order_data {
+       uint32_t nr;
+       uint32_t pack;
+       off_t offset;
+};
+
+static int midx_pack_order_cmp(const void *va, const void *vb)
+{
+       const struct midx_pack_order_data *a = va, *b = vb;
+       if (a->pack < b->pack)
+               return -1;
+       else if (a->pack > b->pack)
+               return 1;
+       else if (a->offset < b->offset)
+               return -1;
+       else if (a->offset > b->offset)
+               return 1;
+       else
+               return 0;
 }
 
+static uint32_t *midx_pack_order(struct write_midx_context *ctx)
+{
+       struct midx_pack_order_data *data;
+       uint32_t *pack_order;
+       uint32_t i;
+
+       ALLOC_ARRAY(data, ctx->entries_nr);
+       for (i = 0; i < ctx->entries_nr; i++) {
+               struct pack_midx_entry *e = &ctx->entries[i];
+               data[i].nr = i;
+               data[i].pack = ctx->pack_perm[e->pack_int_id];
+               if (!e->preferred)
+                       data[i].pack |= (1U << 31);
+               data[i].offset = e->offset;
+       }
+
+       QSORT(data, ctx->entries_nr, midx_pack_order_cmp);
+
+       ALLOC_ARRAY(pack_order, ctx->entries_nr);
+       for (i = 0; i < ctx->entries_nr; i++)
+               pack_order[i] = data[i].nr;
+       free(data);
+
+       return pack_order;
+}
+
+static void write_midx_reverse_index(char *midx_name, unsigned char *midx_hash,
+                                    struct write_midx_context *ctx)
+{
+       struct strbuf buf = STRBUF_INIT;
+       const char *tmp_file;
+
+       strbuf_addf(&buf, "%s-%s.rev", midx_name, hash_to_hex(midx_hash));
+
+       tmp_file = write_rev_file_order(NULL, ctx->pack_order, ctx->entries_nr,
+                                       midx_hash, WRITE_REV);
+
+       if (finalize_object_file(tmp_file, buf.buf))
+               die(_("cannot store reverse index file"));
+
+       strbuf_release(&buf);
+}
+
+static void clear_midx_files_ext(struct repository *r, const char *ext,
+                                unsigned char *keep_hash);
+
 static int write_midx_internal(const char *object_dir, struct multi_pack_index *m,
-                              struct string_list *packs_to_drop, unsigned flags)
+                              struct string_list *packs_to_drop,
+                              const char *preferred_pack_name,
+                              unsigned flags)
 {
-       unsigned char cur_chunk, num_chunks = 0;
        char *midx_name;
+       unsigned char midx_hash[GIT_MAX_RAWSZ];
        uint32_t i;
        struct hashfile *f = NULL;
        struct lock_file lk;
-       struct pack_list packs;
-       uint32_t *pack_perm = NULL;
-       uint64_t written = 0;
-       uint32_t chunk_ids[MIDX_MAX_CHUNKS + 1];
-       uint64_t chunk_offsets[MIDX_MAX_CHUNKS + 1];
-       uint32_t nr_entries, num_large_offsets = 0;
-       struct pack_midx_entry *entries = NULL;
-       struct progress *progress = NULL;
-       int large_offsets_needed = 0;
+       struct write_midx_context ctx = { 0 };
        int pack_name_concat_len = 0;
        int dropped_packs = 0;
        int result = 0;
+       struct chunkfile *cf;
 
        midx_name = get_midx_filename(object_dir);
        if (safe_create_leading_directories(midx_name))
@@ -820,61 +907,74 @@ static int write_midx_internal(const char *object_dir, struct multi_pack_index *
                          midx_name);
 
        if (m)
-               packs.m = m;
+               ctx.m = m;
        else
-               packs.m = load_multi_pack_index(object_dir, 1);
-
-       packs.nr = 0;
-       packs.alloc = packs.m ? packs.m->num_packs : 16;
-       packs.info = NULL;
-       ALLOC_ARRAY(packs.info, packs.alloc);
-
-       if (packs.m) {
-               for (i = 0; i < packs.m->num_packs; i++) {
-                       ALLOC_GROW(packs.info, packs.nr + 1, packs.alloc);
-
-                       packs.info[packs.nr].orig_pack_int_id = i;
-                       packs.info[packs.nr].pack_name = xstrdup(packs.m->pack_names[i]);
-                       packs.info[packs.nr].p = NULL;
-                       packs.info[packs.nr].expired = 0;
-                       packs.nr++;
+               ctx.m = load_multi_pack_index(object_dir, 1);
+
+       ctx.nr = 0;
+       ctx.alloc = ctx.m ? ctx.m->num_packs : 16;
+       ctx.info = NULL;
+       ALLOC_ARRAY(ctx.info, ctx.alloc);
+
+       if (ctx.m) {
+               for (i = 0; i < ctx.m->num_packs; i++) {
+                       ALLOC_GROW(ctx.info, ctx.nr + 1, ctx.alloc);
+
+                       ctx.info[ctx.nr].orig_pack_int_id = i;
+                       ctx.info[ctx.nr].pack_name = xstrdup(ctx.m->pack_names[i]);
+                       ctx.info[ctx.nr].p = NULL;
+                       ctx.info[ctx.nr].expired = 0;
+                       ctx.nr++;
                }
        }
 
-       packs.pack_paths_checked = 0;
+       ctx.pack_paths_checked = 0;
        if (flags & MIDX_PROGRESS)
-               packs.progress = start_delayed_progress(_("Adding packfiles to multi-pack-index"), 0);
+               ctx.progress = start_delayed_progress(_("Adding packfiles to multi-pack-index"), 0);
        else
-               packs.progress = NULL;
+               ctx.progress = NULL;
 
-       for_each_file_in_pack_dir(object_dir, add_pack_to_midx, &packs);
-       stop_progress(&packs.progress);
+       for_each_file_in_pack_dir(object_dir, add_pack_to_midx, &ctx);
+       stop_progress(&ctx.progress);
 
-       if (packs.m && packs.nr == packs.m->num_packs && !packs_to_drop)
+       if (ctx.m && ctx.nr == ctx.m->num_packs && !packs_to_drop)
                goto cleanup;
 
-       entries = get_sorted_entries(packs.m, packs.info, packs.nr, &nr_entries);
+       ctx.preferred_pack_idx = -1;
+       if (preferred_pack_name) {
+               for (i = 0; i < ctx.nr; i++) {
+                       if (!cmp_idx_or_pack_name(preferred_pack_name,
+                                                 ctx.info[i].pack_name)) {
+                               ctx.preferred_pack_idx = i;
+                               break;
+                       }
+               }
+       }
+
+       ctx.entries = get_sorted_entries(ctx.m, ctx.info, ctx.nr, &ctx.entries_nr,
+                                        ctx.preferred_pack_idx);
 
-       for (i = 0; i < nr_entries; i++) {
-               if (entries[i].offset > 0x7fffffff)
-                       num_large_offsets++;
-               if (entries[i].offset > 0xffffffff)
-                       large_offsets_needed = 1;
+       ctx.large_offsets_needed = 0;
+       for (i = 0; i < ctx.entries_nr; i++) {
+               if (ctx.entries[i].offset > 0x7fffffff)
+                       ctx.num_large_offsets++;
+               if (ctx.entries[i].offset > 0xffffffff)
+                       ctx.large_offsets_needed = 1;
        }
 
-       QSORT(packs.info, packs.nr, pack_info_compare);
+       QSORT(ctx.info, ctx.nr, pack_info_compare);
 
        if (packs_to_drop && packs_to_drop->nr) {
                int drop_index = 0;
                int missing_drops = 0;
 
-               for (i = 0; i < packs.nr && drop_index < packs_to_drop->nr; i++) {
-                       int cmp = strcmp(packs.info[i].pack_name,
+               for (i = 0; i < ctx.nr && drop_index < packs_to_drop->nr; i++) {
+                       int cmp = strcmp(ctx.info[i].pack_name,
                                         packs_to_drop->items[drop_index].string);
 
                        if (!cmp) {
                                drop_index++;
-                               packs.info[i].expired = 1;
+                               ctx.info[i].expired = 1;
                        } else if (cmp > 0) {
                                error(_("did not see pack-file %s to drop"),
                                      packs_to_drop->items[drop_index].string);
@@ -882,7 +982,7 @@ static int write_midx_internal(const char *object_dir, struct multi_pack_index *
                                missing_drops++;
                                i--;
                        } else {
-                               packs.info[i].expired = 0;
+                               ctx.info[i].expired = 0;
                        }
                }
 
@@ -898,19 +998,37 @@ static int write_midx_internal(const char *object_dir, struct multi_pack_index *
         *
         * pack_perm[old_id] = new_id
         */
-       ALLOC_ARRAY(pack_perm, packs.nr);
-       for (i = 0; i < packs.nr; i++) {
-               if (packs.info[i].expired) {
+       ALLOC_ARRAY(ctx.pack_perm, ctx.nr);
+       for (i = 0; i < ctx.nr; i++) {
+               if (ctx.info[i].expired) {
                        dropped_packs++;
-                       pack_perm[packs.info[i].orig_pack_int_id] = PACK_EXPIRED;
+                       ctx.pack_perm[ctx.info[i].orig_pack_int_id] = PACK_EXPIRED;
                } else {
-                       pack_perm[packs.info[i].orig_pack_int_id] = i - dropped_packs;
+                       ctx.pack_perm[ctx.info[i].orig_pack_int_id] = i - dropped_packs;
                }
        }
 
-       for (i = 0; i < packs.nr; i++) {
-               if (!packs.info[i].expired)
-                       pack_name_concat_len += strlen(packs.info[i].pack_name) + 1;
+       for (i = 0; i < ctx.nr; i++) {
+               if (!ctx.info[i].expired)
+                       pack_name_concat_len += strlen(ctx.info[i].pack_name) + 1;
+       }
+
+       /* Check that the preferred pack wasn't expired (if given). */
+       if (preferred_pack_name) {
+               struct pack_info *preferred = bsearch(preferred_pack_name,
+                                                     ctx.info, ctx.nr,
+                                                     sizeof(*ctx.info),
+                                                     idx_or_pack_name_cmp);
+
+               if (!preferred)
+                       warning(_("unknown preferred pack: '%s'"),
+                               preferred_pack_name);
+               else {
+                       uint32_t perm = ctx.pack_perm[preferred->orig_pack_int_id];
+                       if (perm == PACK_EXPIRED)
+                               warning(_("preferred pack '%s' is expired"),
+                                       preferred_pack_name);
+               }
        }
 
        if (pack_name_concat_len % MIDX_CHUNK_ALIGNMENT)
@@ -919,132 +1037,110 @@ static int write_midx_internal(const char *object_dir, struct multi_pack_index *
 
        hold_lock_file_for_update(&lk, midx_name, LOCK_DIE_ON_ERROR);
        f = hashfd(get_lock_file_fd(&lk), get_lock_file_path(&lk));
-       FREE_AND_NULL(midx_name);
 
-       if (packs.m)
-               close_midx(packs.m);
+       if (ctx.m)
+               close_midx(ctx.m);
 
-       cur_chunk = 0;
-       num_chunks = large_offsets_needed ? 5 : 4;
-
-       if (packs.nr - dropped_packs == 0) {
+       if (ctx.nr - dropped_packs == 0) {
                error(_("no pack files to index."));
                result = 1;
                goto cleanup;
        }
 
-       written = write_midx_header(f, num_chunks, packs.nr - dropped_packs);
-
-       chunk_ids[cur_chunk] = MIDX_CHUNKID_PACKNAMES;
-       chunk_offsets[cur_chunk] = written + (num_chunks + 1) * MIDX_CHUNKLOOKUP_WIDTH;
-
-       cur_chunk++;
-       chunk_ids[cur_chunk] = MIDX_CHUNKID_OIDFANOUT;
-       chunk_offsets[cur_chunk] = chunk_offsets[cur_chunk - 1] + pack_name_concat_len;
-
-       cur_chunk++;
-       chunk_ids[cur_chunk] = MIDX_CHUNKID_OIDLOOKUP;
-       chunk_offsets[cur_chunk] = chunk_offsets[cur_chunk - 1] + MIDX_CHUNK_FANOUT_SIZE;
+       cf = init_chunkfile(f);
 
-       cur_chunk++;
-       chunk_ids[cur_chunk] = MIDX_CHUNKID_OBJECTOFFSETS;
-       chunk_offsets[cur_chunk] = chunk_offsets[cur_chunk - 1] + nr_entries * the_hash_algo->rawsz;
+       add_chunk(cf, MIDX_CHUNKID_PACKNAMES, pack_name_concat_len,
+                 write_midx_pack_names);
+       add_chunk(cf, MIDX_CHUNKID_OIDFANOUT, MIDX_CHUNK_FANOUT_SIZE,
+                 write_midx_oid_fanout);
+       add_chunk(cf, MIDX_CHUNKID_OIDLOOKUP,
+                 (size_t)ctx.entries_nr * the_hash_algo->rawsz,
+                 write_midx_oid_lookup);
+       add_chunk(cf, MIDX_CHUNKID_OBJECTOFFSETS,
+                 (size_t)ctx.entries_nr * MIDX_CHUNK_OFFSET_WIDTH,
+                 write_midx_object_offsets);
 
-       cur_chunk++;
-       chunk_offsets[cur_chunk] = chunk_offsets[cur_chunk - 1] + nr_entries * MIDX_CHUNK_OFFSET_WIDTH;
-       if (large_offsets_needed) {
-               chunk_ids[cur_chunk] = MIDX_CHUNKID_LARGEOFFSETS;
+       if (ctx.large_offsets_needed)
+               add_chunk(cf, MIDX_CHUNKID_LARGEOFFSETS,
+                       (size_t)ctx.num_large_offsets * MIDX_CHUNK_LARGE_OFFSET_WIDTH,
+                       write_midx_large_offsets);
 
-               cur_chunk++;
-               chunk_offsets[cur_chunk] = chunk_offsets[cur_chunk - 1] +
-                                          num_large_offsets * MIDX_CHUNK_LARGE_OFFSET_WIDTH;
-       }
+       write_midx_header(f, get_num_chunks(cf), ctx.nr - dropped_packs);
+       write_chunkfile(cf, &ctx);
 
-       chunk_ids[cur_chunk] = 0;
+       finalize_hashfile(f, midx_hash, CSUM_FSYNC | CSUM_HASH_IN_STREAM);
+       free_chunkfile(cf);
 
-       for (i = 0; i <= num_chunks; i++) {
-               if (i && chunk_offsets[i] < chunk_offsets[i - 1])
-                       BUG("incorrect chunk offsets: %"PRIu64" before %"PRIu64,
-                           chunk_offsets[i - 1],
-                           chunk_offsets[i]);
+       if (flags & MIDX_WRITE_REV_INDEX)
+               ctx.pack_order = midx_pack_order(&ctx);
 
-               if (chunk_offsets[i] % MIDX_CHUNK_ALIGNMENT)
-                       BUG("chunk offset %"PRIu64" is not properly aligned",
-                           chunk_offsets[i]);
+       if (flags & MIDX_WRITE_REV_INDEX)
+               write_midx_reverse_index(midx_name, midx_hash, &ctx);
+       clear_midx_files_ext(the_repository, ".rev", midx_hash);
 
-               hashwrite_be32(f, chunk_ids[i]);
-               hashwrite_be64(f, chunk_offsets[i]);
+       commit_lock_file(&lk);
 
-               written += MIDX_CHUNKLOOKUP_WIDTH;
+cleanup:
+       for (i = 0; i < ctx.nr; i++) {
+               if (ctx.info[i].p) {
+                       close_pack(ctx.info[i].p);
+                       free(ctx.info[i].p);
+               }
+               free(ctx.info[i].pack_name);
        }
 
-       if (flags & MIDX_PROGRESS)
-               progress = start_delayed_progress(_("Writing chunks to multi-pack-index"),
-                                         num_chunks);
-       for (i = 0; i < num_chunks; i++) {
-               if (written != chunk_offsets[i])
-                       BUG("incorrect chunk offset (%"PRIu64" != %"PRIu64") for chunk id %"PRIx32,
-                           chunk_offsets[i],
-                           written,
-                           chunk_ids[i]);
-
-               switch (chunk_ids[i]) {
-                       case MIDX_CHUNKID_PACKNAMES:
-                               written += write_midx_pack_names(f, packs.info, packs.nr);
-                               break;
-
-                       case MIDX_CHUNKID_OIDFANOUT:
-                               written += write_midx_oid_fanout(f, entries, nr_entries);
-                               break;
-
-                       case MIDX_CHUNKID_OIDLOOKUP:
-                               written += write_midx_oid_lookup(f, the_hash_algo->rawsz, entries, nr_entries);
-                               break;
+       free(ctx.info);
+       free(ctx.entries);
+       free(ctx.pack_perm);
+       free(ctx.pack_order);
+       free(midx_name);
+       return result;
+}
 
-                       case MIDX_CHUNKID_OBJECTOFFSETS:
-                               written += write_midx_object_offsets(f, large_offsets_needed, pack_perm, entries, nr_entries);
-                               break;
+int write_midx_file(const char *object_dir,
+                   const char *preferred_pack_name,
+                   unsigned flags)
+{
+       return write_midx_internal(object_dir, NULL, NULL, preferred_pack_name,
+                                  flags);
+}
 
-                       case MIDX_CHUNKID_LARGEOFFSETS:
-                               written += write_midx_large_offsets(f, num_large_offsets, entries, nr_entries);
-                               break;
+struct clear_midx_data {
+       char *keep;
+       const char *ext;
+};
 
-                       default:
-                               BUG("trying to write unknown chunk id %"PRIx32,
-                                   chunk_ids[i]);
-               }
+static void clear_midx_file_ext(const char *full_path, size_t full_path_len,
+                               const char *file_name, void *_data)
+{
+       struct clear_midx_data *data = _data;
 
-               display_progress(progress, i + 1);
-       }
-       stop_progress(&progress);
+       if (!(starts_with(file_name, "multi-pack-index-") &&
+             ends_with(file_name, data->ext)))
+               return;
+       if (data->keep && !strcmp(data->keep, file_name))
+               return;
 
-       if (written != chunk_offsets[num_chunks])
-               BUG("incorrect final offset %"PRIu64" != %"PRIu64,
-                   written,
-                   chunk_offsets[num_chunks]);
+       if (unlink(full_path))
+               die_errno(_("failed to remove %s"), full_path);
+}
 
-       finalize_hashfile(f, NULL, CSUM_FSYNC | CSUM_HASH_IN_STREAM);
-       commit_lock_file(&lk);
+static void clear_midx_files_ext(struct repository *r, const char *ext,
+                                unsigned char *keep_hash)
+{
+       struct clear_midx_data data;
+       memset(&data, 0, sizeof(struct clear_midx_data));
 
-cleanup:
-       for (i = 0; i < packs.nr; i++) {
-               if (packs.info[i].p) {
-                       close_pack(packs.info[i].p);
-                       free(packs.info[i].p);
-               }
-               free(packs.info[i].pack_name);
-       }
+       if (keep_hash)
+               data.keep = xstrfmt("multi-pack-index-%s%s",
+                                   hash_to_hex(keep_hash), ext);
+       data.ext = ext;
 
-       free(packs.info);
-       free(entries);
-       free(pack_perm);
-       free(midx_name);
-       return result;
-}
+       for_each_file_in_pack_dir(r->objects->odb->path,
+                                 clear_midx_file_ext,
+                                 &data);
 
-int write_midx_file(const char *object_dir, unsigned flags)
-{
-       return write_midx_internal(object_dir, NULL, NULL, flags);
+       free(data.keep);
 }
 
 void clear_midx_file(struct repository *r)
@@ -1059,6 +1155,8 @@ void clear_midx_file(struct repository *r)
        if (remove_path(midx))
                die(_("failed to clear multi-pack-index at %s"), midx);
 
+       clear_midx_files_ext(r, ".rev", NULL);
+
        free(midx);
 }
 
@@ -1239,7 +1337,7 @@ int expire_midx_packs(struct repository *r, const char *object_dir, unsigned fla
        if (!m)
                return 0;
 
-       count = xcalloc(m->num_packs, sizeof(uint32_t));
+       CALLOC_ARRAY(count, m->num_packs);
 
        if (flags & MIDX_PROGRESS)
                progress = start_delayed_progress(_("Counting referenced objects"),
@@ -1279,7 +1377,7 @@ int expire_midx_packs(struct repository *r, const char *object_dir, unsigned fla
        free(count);
 
        if (packs_to_drop.nr)
-               result = write_midx_internal(object_dir, m, &packs_to_drop, flags);
+               result = write_midx_internal(object_dir, m, &packs_to_drop, NULL, flags);
 
        string_list_clear(&packs_to_drop, 0);
        return result;
@@ -1410,7 +1508,7 @@ int midx_repack(struct repository *r, const char *object_dir, size_t batch_size,
        if (!m)
                return 0;
 
-       include_pack = xcalloc(m->num_packs, sizeof(unsigned char));
+       CALLOC_ARRAY(include_pack, m->num_packs);
 
        if (batch_size) {
                if (fill_included_packs_batch(r, m, include_pack, batch_size))
@@ -1468,7 +1566,7 @@ int midx_repack(struct repository *r, const char *object_dir, size_t batch_size,
                goto cleanup;
        }
 
-       result = write_midx_internal(object_dir, m, NULL, flags);
+       result = write_midx_internal(object_dir, m, NULL, NULL, flags);
        m = NULL;
 
 cleanup:
diff --git a/midx.h b/midx.h
index b18cf53bc4abf9650019aa7b4827696ea32056ac..8684cf0fefe81dbc5aa32b6c48203c12ae2c12da 100644 (file)
--- a/midx.h
+++ b/midx.h
@@ -15,6 +15,10 @@ struct multi_pack_index {
        const unsigned char *data;
        size_t data_len;
 
+       const uint32_t *revindex_data;
+       const uint32_t *revindex_map;
+       size_t revindex_len;
+
        uint32_t signature;
        unsigned char version;
        unsigned char hash_len;
@@ -36,10 +40,15 @@ struct multi_pack_index {
 };
 
 #define MIDX_PROGRESS     (1 << 0)
+#define MIDX_WRITE_REV_INDEX (1 << 1)
+
+char *get_midx_rev_filename(struct multi_pack_index *m);
 
 struct multi_pack_index *load_multi_pack_index(const char *object_dir, int local);
 int prepare_midx_pack(struct repository *r, struct multi_pack_index *m, uint32_t pack_int_id);
 int bsearch_midx(const struct object_id *oid, struct multi_pack_index *m, uint32_t *result);
+off_t nth_midxed_offset(struct multi_pack_index *m, uint32_t pos);
+uint32_t nth_midxed_pack_int_id(struct multi_pack_index *m, uint32_t pos);
 struct object_id *nth_midxed_object_oid(struct object_id *oid,
                                        struct multi_pack_index *m,
                                        uint32_t n);
@@ -47,7 +56,7 @@ int fill_midx_entry(struct repository *r, const struct object_id *oid, struct pa
 int midx_contains_pack(struct multi_pack_index *m, const char *idx_or_pack_name);
 int prepare_multi_pack_index_one(struct repository *r, const char *object_dir, int local);
 
-int write_midx_file(const char *object_dir, unsigned flags);
+int write_midx_file(const char *object_dir, const char *preferred_pack_name, unsigned flags);
 void clear_midx_file(struct repository *r);
 int verify_midx_file(struct repository *r, const char *object_dir, unsigned flags);
 int expire_midx_packs(struct repository *r, const char *object_dir, unsigned flags);
index 4e03fac9bb12599d897cc54c7154eceab267784d..ce28f3f070827faf84891c2af18e85d3ee58e565 100644 (file)
@@ -225,7 +225,7 @@ static void init_dir_mutex(void)
 {
        int j;
 
-       lazy_dir_mutex_array = xcalloc(LAZY_MAX_MUTEX, sizeof(pthread_mutex_t));
+       CALLOC_ARRAY(lazy_dir_mutex_array, LAZY_MAX_MUTEX);
 
        for (j = 0; j < LAZY_MAX_MUTEX; j++)
                init_recursive_mutex(&lazy_dir_mutex_array[j]);
@@ -514,9 +514,9 @@ static void threaded_lazy_init_name_hash(
        k_start = 0;
        nr_each = DIV_ROUND_UP(istate->cache_nr, lazy_nr_dir_threads);
 
-       lazy_entries = xcalloc(istate->cache_nr, sizeof(struct lazy_entry));
-       td_dir = xcalloc(lazy_nr_dir_threads, sizeof(struct lazy_dir_thread_data));
-       td_name = xcalloc(1, sizeof(struct lazy_name_thread_data));
+       CALLOC_ARRAY(lazy_entries, istate->cache_nr);
+       CALLOC_ARRAY(td_dir, lazy_nr_dir_threads);
+       CALLOC_ARRAY(td_name, 1);
 
        init_dir_mutex();
 
index 4b78f6bf36a0479a55934a6e4ac4c288775217f5..434189ae5dc64a2b6bbdac01d82f4f284f9855c6 100644 (file)
@@ -167,7 +167,7 @@ void default_negotiator_init(struct fetch_negotiator *negotiator)
        negotiator->next = next;
        negotiator->ack = ack;
        negotiator->release = release;
-       negotiator->data = ns = xcalloc(1, sizeof(*ns));
+       negotiator->data = CALLOC_ARRAY(ns, 1);
        ns->rev_list.compare = compare_commits_by_commit_date;
 
        if (marked)
index dffbc76c49ef791eaba0145094bfca31b46d0913..1236e7922484a2d9b98c0d87fb0973c0b6aa6587 100644 (file)
@@ -62,7 +62,7 @@ static struct entry *rev_list_push(struct data *data, struct commit *commit, int
        struct entry *entry;
        commit->object.flags |= mark | SEEN;
 
-       entry = xcalloc(1, sizeof(*entry));
+       CALLOC_ARRAY(entry, 1);
        entry->commit = commit;
        prio_queue_put(&data->rev_list, entry);
 
@@ -241,7 +241,7 @@ void skipping_negotiator_init(struct fetch_negotiator *negotiator)
        negotiator->next = next;
        negotiator->ack = ack;
        negotiator->release = release;
-       negotiator->data = data = xcalloc(1, sizeof(*data));
+       negotiator->data = CALLOC_ARRAY(data, 1);
        data->rev_list.compare = compare;
 
        if (marked)
index 2fe724f1cf8dc3cc333b9f2aa122452feac27c2c..d2771fa3d43ced4980a9c94af2ee8d5f92caa168 100644 (file)
@@ -136,7 +136,7 @@ static struct notes_merge_pair *diff_tree_remote(struct notes_merge_options *o,
        diff_tree_oid(base, remote, "", &opt);
        diffcore_std(&opt);
 
-       changes = xcalloc(diff_queued_diff.nr, sizeof(struct notes_merge_pair));
+       CALLOC_ARRAY(changes, diff_queued_diff.nr);
 
        for (i = 0; i < diff_queued_diff.nr; i++) {
                struct diff_filepair *p = diff_queued_diff.queue[i];
index 4bf4888d8c1f2c1b6a08ae75dd6dcd10a8814d1d..d7d18e30f5a281278aa87fd64a4e47da8410a5eb 100644 (file)
@@ -129,7 +129,7 @@ struct notes_rewrite_cfg *init_copy_notes_for_rewrite(const char *cmd)
        c->cmd = cmd;
        c->enabled = 1;
        c->combine = combine_notes_concatenate;
-       c->refs = xcalloc(1, sizeof(struct string_list));
+       CALLOC_ARRAY(c->refs, 1);
        c->refs->strdup_strings = 1;
        c->refs_from_env = 0;
        c->mode_from_env = 0;
diff --git a/notes.c b/notes.c
index d5ac081e76df9cd03edd273177a15e42aa25d407..a19e4ad79434336eea35b614342534a19a56042e 100644 (file)
--- a/notes.c
+++ b/notes.c
@@ -452,7 +452,7 @@ static void load_subtree(struct notes_tree *t, struct leaf_node *subtree,
                        goto handle_non_note;
                }
 
-               l = xcalloc(1, sizeof(*l));
+               CALLOC_ARRAY(l, 1);
                oidcpy(&l->key_oid, &object_oid);
                oidcpy(&l->val_oid, &entry.oid);
                if (note_tree_insert(t, node, n, l, type,
index 5bcfde84718868ac6ae35cddfc102d4a13f0c502..624af408cdcd2aec95b1f54882a0c8027a60c723 100644 (file)
@@ -546,7 +546,7 @@ static int link_alt_odb_entry(struct repository *r, const char *entry,
                return -1;
        }
 
-       ent = xcalloc(1, sizeof(*ent));
+       CALLOC_ARRAY(ent, 1);
        ent->path = xstrdup(pathbuf.buf);
 
        /* add the alternate entry */
index c4fc9dd74ea81c20830ec1b79788a69faaccaf9a..ec32c23dcb5615f3bfc0d5c82d7c193f251b125d 100644 (file)
@@ -85,6 +85,9 @@ struct packed_git {
                 multi_pack_index:1;
        unsigned char hash[GIT_MAX_RAWSZ];
        struct revindex_entry *revindex;
+       const uint32_t *revindex_data;
+       const uint32_t *revindex_map;
+       size_t revindex_size;
        /* something like ".git/objects/pack/xxxxx.pack" */
        char pack_name[FLEX_ARRAY]; /* more */
 };
@@ -150,6 +153,11 @@ struct raw_object_store {
        /* A most-recently-used ordered version of the packed_git list. */
        struct list_head packed_git_mru;
 
+       struct {
+               struct packed_git **packs;
+               unsigned flags;
+       } kept_pack_cache;
+
        /*
         * A map of packfiles to packed_git structs for tracking which
         * packs have been loaded already.
index 98017bed8efb7eaf45d30a20c07a0870c4acceaa..78343781ae77d6f60be8d7477422f883e2966cca 100644 (file)
--- a/object.c
+++ b/object.c
@@ -127,7 +127,7 @@ static void grow_object_hash(struct repository *r)
        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 *));
+       CALLOC_ARRAY(new_hash, new_hash_size);
        for (i = 0; i < r->parsed_objects->obj_hash_size; i++) {
                struct object *obj = r->parsed_objects->obj_hash[i];
 
@@ -478,7 +478,7 @@ struct parsed_object_pool *parsed_object_pool_new(void)
        o->object_state = allocate_alloc_state();
 
        o->is_shallow = -1;
-       o->shallow_stat = xcalloc(1, sizeof(*o->shallow_stat));
+       CALLOC_ARRAY(o->shallow_stat, 1);
 
        o->buffer_slab = allocate_commit_buffer_slab();
 
index 60fe20fb87a42ea05e3cd16f07966bf30448ae3f..b4513f8672607be79020ad7ff861ed9d42baecc3 100644 (file)
@@ -978,7 +978,7 @@ struct bitmap_index *prepare_bitmap_walk(struct rev_info *revs,
 
        /* try to open a bitmapped pack, but don't parse it yet
         * because we may not need to use it */
-       bitmap_git = xcalloc(1, sizeof(*bitmap_git));
+       CALLOC_ARRAY(bitmap_git, 1);
        if (open_pack_bitmap(revs->repo, bitmap_git) < 0)
                goto cleanup;
 
@@ -997,6 +997,7 @@ struct bitmap_index *prepare_bitmap_walk(struct rev_info *revs,
                                object_list_insert(object, &wants);
 
                        object = parse_object_or_die(get_tagged_oid(tag), NULL);
+                       object->flags |= (tag->object.flags & UNINTERESTING);
                }
 
                if (object->flags & UNINTERESTING)
@@ -1388,7 +1389,7 @@ uint32_t *create_bitmap_mapping(struct bitmap_index *bitmap_git,
        uint32_t *reposition;
 
        num_objects = bitmap_git->pack->num_objects;
-       reposition = xcalloc(num_objects, sizeof(uint32_t));
+       CALLOC_ARRAY(reposition, num_objects);
 
        for (i = 0; i < num_objects; ++i) {
                struct object_id oid;
@@ -1430,3 +1431,84 @@ int bitmap_has_oid_in_uninteresting(struct bitmap_index *bitmap_git,
        return bitmap_git &&
                bitmap_walk_contains(bitmap_git, bitmap_git->haves, oid);
 }
+
+static off_t get_disk_usage_for_type(struct bitmap_index *bitmap_git,
+                                    enum object_type object_type)
+{
+       struct bitmap *result = bitmap_git->result;
+       struct packed_git *pack = bitmap_git->pack;
+       off_t total = 0;
+       struct ewah_iterator it;
+       eword_t filter;
+       size_t i;
+
+       init_type_iterator(&it, bitmap_git, object_type);
+       for (i = 0; i < result->word_alloc &&
+                       ewah_iterator_next(&filter, &it); i++) {
+               eword_t word = result->words[i] & filter;
+               size_t base = (i * BITS_IN_EWORD);
+               unsigned offset;
+
+               if (!word)
+                       continue;
+
+               for (offset = 0; offset < BITS_IN_EWORD; offset++) {
+                       size_t pos;
+
+                       if ((word >> offset) == 0)
+                               break;
+
+                       offset += ewah_bit_ctz64(word >> offset);
+                       pos = base + offset;
+                       total += pack_pos_to_offset(pack, pos + 1) -
+                                pack_pos_to_offset(pack, pos);
+               }
+       }
+
+       return total;
+}
+
+static off_t get_disk_usage_for_extended(struct bitmap_index *bitmap_git)
+{
+       struct bitmap *result = bitmap_git->result;
+       struct packed_git *pack = bitmap_git->pack;
+       struct eindex *eindex = &bitmap_git->ext_index;
+       off_t total = 0;
+       struct object_info oi = OBJECT_INFO_INIT;
+       off_t object_size;
+       size_t i;
+
+       oi.disk_sizep = &object_size;
+
+       for (i = 0; i < eindex->count; i++) {
+               struct object *obj = eindex->objects[i];
+
+               if (!bitmap_get(result, pack->num_objects + i))
+                       continue;
+
+               if (oid_object_info_extended(the_repository, &obj->oid, &oi, 0) < 0)
+                       die(_("unable to get disk usage of %s"),
+                           oid_to_hex(&obj->oid));
+
+               total += object_size;
+       }
+       return total;
+}
+
+off_t get_disk_usage_from_bitmap(struct bitmap_index *bitmap_git,
+                                struct rev_info *revs)
+{
+       off_t total = 0;
+
+       total += get_disk_usage_for_type(bitmap_git, OBJ_COMMIT);
+       if (revs->tree_objects)
+               total += get_disk_usage_for_type(bitmap_git, OBJ_TREE);
+       if (revs->blob_objects)
+               total += get_disk_usage_for_type(bitmap_git, OBJ_BLOB);
+       if (revs->tag_objects)
+               total += get_disk_usage_for_type(bitmap_git, OBJ_TAG);
+
+       total += get_disk_usage_for_extended(bitmap_git);
+
+       return total;
+}
index 25dfcf56156bf8b9b03ebbbaae895a71fc8cf89b..36d99930d8d5288a7367235eba8d533ed8f76f99 100644 (file)
@@ -68,6 +68,8 @@ int bitmap_walk_contains(struct bitmap_index *,
  */
 int bitmap_has_oid_in_uninteresting(struct bitmap_index *, const struct object_id *oid);
 
+off_t get_disk_usage_from_bitmap(struct bitmap_index *, struct rev_info *);
+
 void bitmap_writer_show_progress(int show);
 void bitmap_writer_set_checksum(unsigned char *sha1);
 void bitmap_writer_build_type_index(struct packing_data *to_pack,
index f2a433885ac80ec9cbadfd3e5e7553655237c924..fe2a4eace9910b487aae56447b7fc6bd93fe1392 100644 (file)
@@ -49,7 +49,7 @@ static void rehash_objects(struct packing_data *pdata)
                pdata->index_size = 1024;
 
        free(pdata->index);
-       pdata->index = xcalloc(pdata->index_size, sizeof(*pdata->index));
+       CALLOC_ARRAY(pdata->index, pdata->index_size);
 
        entry = pdata->objects;
 
index 5e69bc7372f5476429fb11c53d5b4bd24390798c..0e4a31d9db9e71aa67ac6812241b064f01bb02a2 100644 (file)
@@ -2,6 +2,8 @@
 #include "pack-revindex.h"
 #include "object-store.h"
 #include "packfile.h"
+#include "config.h"
+#include "midx.h"
 
 struct revindex_entry {
        off_t offset;
@@ -164,13 +166,168 @@ static void create_pack_revindex(struct packed_git *p)
        sort_revindex(p->revindex, num_ent, p->pack_size);
 }
 
-int load_pack_revindex(struct packed_git *p)
+static int create_pack_revindex_in_memory(struct packed_git *p)
+{
+       if (git_env_bool(GIT_TEST_REV_INDEX_DIE_IN_MEMORY, 0))
+               die("dying as requested by '%s'",
+                   GIT_TEST_REV_INDEX_DIE_IN_MEMORY);
+       if (open_pack_index(p))
+               return -1;
+       create_pack_revindex(p);
+       return 0;
+}
+
+static char *pack_revindex_filename(struct packed_git *p)
+{
+       size_t len;
+       if (!strip_suffix(p->pack_name, ".pack", &len))
+               BUG("pack_name does not end in .pack");
+       return xstrfmt("%.*s.rev", (int)len, p->pack_name);
+}
+
+#define RIDX_HEADER_SIZE (12)
+#define RIDX_MIN_SIZE (RIDX_HEADER_SIZE + (2 * the_hash_algo->rawsz))
+
+struct revindex_header {
+       uint32_t signature;
+       uint32_t version;
+       uint32_t hash_id;
+};
+
+static int load_revindex_from_disk(char *revindex_name,
+                                  uint32_t num_objects,
+                                  const uint32_t **data_p, size_t *len_p)
 {
-       if (!p->revindex) {
-               if (open_pack_index(p))
-                       return -1;
-               create_pack_revindex(p);
+       int fd, ret = 0;
+       struct stat st;
+       void *data = NULL;
+       size_t revindex_size;
+       struct revindex_header *hdr;
+
+       fd = git_open(revindex_name);
+
+       if (fd < 0) {
+               ret = -1;
+               goto cleanup;
+       }
+       if (fstat(fd, &st)) {
+               ret = error_errno(_("failed to read %s"), revindex_name);
+               goto cleanup;
+       }
+
+       revindex_size = xsize_t(st.st_size);
+
+       if (revindex_size < RIDX_MIN_SIZE) {
+               ret = error(_("reverse-index file %s is too small"), revindex_name);
+               goto cleanup;
+       }
+
+       if (revindex_size - RIDX_MIN_SIZE != st_mult(sizeof(uint32_t), num_objects)) {
+               ret = error(_("reverse-index file %s is corrupt"), revindex_name);
+               goto cleanup;
+       }
+
+       data = xmmap(NULL, revindex_size, PROT_READ, MAP_PRIVATE, fd, 0);
+       hdr = data;
+
+       if (ntohl(hdr->signature) != RIDX_SIGNATURE) {
+               ret = error(_("reverse-index file %s has unknown signature"), revindex_name);
+               goto cleanup;
        }
+       if (ntohl(hdr->version) != 1) {
+               ret = error(_("reverse-index file %s has unsupported version %"PRIu32),
+                           revindex_name, ntohl(hdr->version));
+               goto cleanup;
+       }
+       if (!(ntohl(hdr->hash_id) == 1 || ntohl(hdr->hash_id) == 2)) {
+               ret = error(_("reverse-index file %s has unsupported hash id %"PRIu32),
+                           revindex_name, ntohl(hdr->hash_id));
+               goto cleanup;
+       }
+
+cleanup:
+       if (ret) {
+               if (data)
+                       munmap(data, revindex_size);
+       } else {
+               *len_p = revindex_size;
+               *data_p = (const uint32_t *)data;
+       }
+
+       if (fd >= 0)
+               close(fd);
+       return ret;
+}
+
+static int load_pack_revindex_from_disk(struct packed_git *p)
+{
+       char *revindex_name;
+       int ret;
+       if (open_pack_index(p))
+               return -1;
+
+       revindex_name = pack_revindex_filename(p);
+
+       ret = load_revindex_from_disk(revindex_name,
+                                     p->num_objects,
+                                     &p->revindex_map,
+                                     &p->revindex_size);
+       if (ret)
+               goto cleanup;
+
+       p->revindex_data = (const uint32_t *)((const char *)p->revindex_map + RIDX_HEADER_SIZE);
+
+cleanup:
+       free(revindex_name);
+       return ret;
+}
+
+int load_pack_revindex(struct packed_git *p)
+{
+       if (p->revindex || p->revindex_data)
+               return 0;
+
+       if (!load_pack_revindex_from_disk(p))
+               return 0;
+       else if (!create_pack_revindex_in_memory(p))
+               return 0;
+       return -1;
+}
+
+int load_midx_revindex(struct multi_pack_index *m)
+{
+       char *revindex_name;
+       int ret;
+       if (m->revindex_data)
+               return 0;
+
+       revindex_name = get_midx_rev_filename(m);
+
+       ret = load_revindex_from_disk(revindex_name,
+                                     m->num_objects,
+                                     &m->revindex_map,
+                                     &m->revindex_len);
+       if (ret)
+               goto cleanup;
+
+       m->revindex_data = (const uint32_t *)((const char *)m->revindex_map + RIDX_HEADER_SIZE);
+
+cleanup:
+       free(revindex_name);
+       return ret;
+}
+
+int close_midx_revindex(struct multi_pack_index *m)
+{
+       if (!m || !m->revindex_map)
+               return 0;
+
+       munmap((void*)m->revindex_map, m->revindex_len);
+
+       m->revindex_map = NULL;
+       m->revindex_data = NULL;
+       m->revindex_len = 0;
+
        return 0;
 }
 
@@ -203,18 +360,116 @@ int offset_to_pack_pos(struct packed_git *p, off_t ofs, uint32_t *pos)
 
 uint32_t pack_pos_to_index(struct packed_git *p, uint32_t pos)
 {
-       if (!p->revindex)
+       if (!(p->revindex || p->revindex_data))
                BUG("pack_pos_to_index: reverse index not yet loaded");
        if (p->num_objects <= pos)
                BUG("pack_pos_to_index: out-of-bounds object at %"PRIu32, pos);
-       return p->revindex[pos].nr;
+
+       if (p->revindex)
+               return p->revindex[pos].nr;
+       else
+               return get_be32(p->revindex_data + pos);
 }
 
 off_t pack_pos_to_offset(struct packed_git *p, uint32_t pos)
 {
-       if (!p->revindex)
+       if (!(p->revindex || p->revindex_data))
                BUG("pack_pos_to_index: reverse index not yet loaded");
        if (p->num_objects < pos)
                BUG("pack_pos_to_offset: out-of-bounds object at %"PRIu32, pos);
-       return p->revindex[pos].offset;
+
+       if (p->revindex)
+               return p->revindex[pos].offset;
+       else if (pos == p->num_objects)
+               return p->pack_size - the_hash_algo->rawsz;
+       else
+               return nth_packed_object_offset(p, pack_pos_to_index(p, pos));
+}
+
+uint32_t pack_pos_to_midx(struct multi_pack_index *m, uint32_t pos)
+{
+       if (!m->revindex_data)
+               BUG("pack_pos_to_midx: reverse index not yet loaded");
+       if (m->num_objects <= pos)
+               BUG("pack_pos_to_midx: out-of-bounds object at %"PRIu32, pos);
+       return get_be32(m->revindex_data + pos);
+}
+
+struct midx_pack_key {
+       uint32_t pack;
+       off_t offset;
+
+       uint32_t preferred_pack;
+       struct multi_pack_index *midx;
+};
+
+static int midx_pack_order_cmp(const void *va, const void *vb)
+{
+       const struct midx_pack_key *key = va;
+       struct multi_pack_index *midx = key->midx;
+
+       uint32_t versus = pack_pos_to_midx(midx, (uint32_t*)vb - (const uint32_t *)midx->revindex_data);
+       uint32_t versus_pack = nth_midxed_pack_int_id(midx, versus);
+       off_t versus_offset;
+
+       uint32_t key_preferred = key->pack == key->preferred_pack;
+       uint32_t versus_preferred = versus_pack == key->preferred_pack;
+
+       /*
+        * First, compare the preferred-ness, noting that the preferred pack
+        * comes first.
+        */
+       if (key_preferred && !versus_preferred)
+               return -1;
+       else if (!key_preferred && versus_preferred)
+               return 1;
+
+       /* Then, break ties first by comparing the pack IDs. */
+       if (key->pack < versus_pack)
+               return -1;
+       else if (key->pack > versus_pack)
+               return 1;
+
+       /* Finally, break ties by comparing offsets within a pack. */
+       versus_offset = nth_midxed_offset(midx, versus);
+       if (key->offset < versus_offset)
+               return -1;
+       else if (key->offset > versus_offset)
+               return 1;
+
+       return 0;
+}
+
+int midx_to_pack_pos(struct multi_pack_index *m, uint32_t at, uint32_t *pos)
+{
+       struct midx_pack_key key;
+       uint32_t *found;
+
+       if (!m->revindex_data)
+               BUG("midx_to_pack_pos: reverse index not yet loaded");
+       if (m->num_objects <= at)
+               BUG("midx_to_pack_pos: out-of-bounds object at %"PRIu32, at);
+
+       key.pack = nth_midxed_pack_int_id(m, at);
+       key.offset = nth_midxed_offset(m, at);
+       key.midx = m;
+       /*
+        * The preferred pack sorts first, so determine its identifier by
+        * looking at the first object in pseudo-pack order.
+        *
+        * Note that if no --preferred-pack is explicitly given when writing a
+        * multi-pack index, then whichever pack has the lowest identifier
+        * implicitly is preferred (and includes all its objects, since ties are
+        * broken first by pack identifier).
+        */
+       key.preferred_pack = nth_midxed_pack_int_id(m, pack_pos_to_midx(m, 0));
+
+       found = bsearch(&key, m->revindex_data, m->num_objects,
+                       sizeof(*m->revindex_data), midx_pack_order_cmp);
+
+       if (!found)
+               return error("bad offset for revindex");
+
+       *pos = found - m->revindex_data;
+       return 0;
 }
index 6e0320b08b54aee2d636f87d6cd1af304d7fe58b..479b8f2f9c916880ee692ea812b689d0237c18b1 100644 (file)
  *
  * - offset: the byte offset within the .pack file at which the object contents
  *   can be found
+ *
+ * The revindex can also be used with a multi-pack index (MIDX). In this
+ * setting:
+ *
+ *   - index position refers to an object's numeric position within the MIDX
+ *
+ *   - pack position refers to an object's position within a non-existent pack
+ *     described by the MIDX. The pack structure is described in
+ *     Documentation/technical/pack-format.txt.
+ *
+ *     It is effectively a concatanation of all packs in the MIDX (ordered by
+ *     their numeric ID within the MIDX) in their original order within each
+ *     pack), removing duplicates, and placing the preferred pack (if any)
+ *     first.
  */
 
+
+#define RIDX_SIGNATURE 0x52494458 /* "RIDX" */
+#define RIDX_VERSION 1
+
+#define GIT_TEST_WRITE_REV_INDEX "GIT_TEST_WRITE_REV_INDEX"
+#define GIT_TEST_REV_INDEX_DIE_IN_MEMORY "GIT_TEST_REV_INDEX_DIE_IN_MEMORY"
+
 struct packed_git;
+struct multi_pack_index;
 
 /*
  * load_pack_revindex populates the revindex's internal data-structures for the
  * given pack, returning zero on success and a negative value otherwise.
+ *
+ * If a '.rev' file is present it is mmap'd, and pointers are assigned into it
+ * (instead of using the in-memory variant).
  */
 int load_pack_revindex(struct packed_git *p);
 
+/*
+ * load_midx_revindex loads the '.rev' file corresponding to the given
+ * multi-pack index by mmap-ing it and assigning pointers in the
+ * multi_pack_index to point at it.
+ *
+ * A negative number is returned on error.
+ */
+int load_midx_revindex(struct multi_pack_index *m);
+
+/*
+ * Frees resources associated with a multi-pack reverse index.
+ *
+ * A negative number is returned on error.
+ */
+int close_midx_revindex(struct multi_pack_index *m);
+
 /*
  * offset_to_pack_pos converts an object offset to a pack position. This
  * function returns zero on success, and a negative number otherwise. The
@@ -55,8 +96,32 @@ uint32_t pack_pos_to_index(struct packed_git *p, uint32_t pos);
  * If the reverse index has not yet been loaded, or the position is out of
  * bounds, this function aborts.
  *
- * This function runs in constant time.
+ * This function runs in constant time under both in-memory and on-disk reverse
+ * indexes, but an additional step is taken to consult the corresponding .idx
+ * file when using the on-disk format.
  */
 off_t pack_pos_to_offset(struct packed_git *p, uint32_t pos);
 
+/*
+ * pack_pos_to_midx converts the object at position "pos" within the MIDX
+ * pseudo-pack into a MIDX position.
+ *
+ * If the reverse index has not yet been loaded, or the position is out of
+ * bounds, this function aborts.
+ *
+ * This function runs in time O(log N) with the number of objects in the MIDX.
+ */
+uint32_t pack_pos_to_midx(struct multi_pack_index *m, uint32_t pos);
+
+/*
+ * midx_to_pack_pos converts from the MIDX-relative position at "at" to the
+ * corresponding pack position.
+ *
+ * If the reverse index has not yet been loaded, or the position is out of
+ * bounds, this function aborts.
+ *
+ * This function runs in constant time.
+ */
+int midx_to_pack_pos(struct multi_pack_index *midx, uint32_t at, uint32_t *pos);
+
 #endif
index e9bb3fd949b36d1ea1e5a61fb6d08592047223ff..f1fc3ecafadef49d73e6efe7451c683d6e3ccd39 100644 (file)
@@ -167,6 +167,127 @@ const char *write_idx_file(const char *index_name, struct pack_idx_entry **objec
        return index_name;
 }
 
+static int pack_order_cmp(const void *va, const void *vb, void *ctx)
+{
+       struct pack_idx_entry **objects = ctx;
+
+       off_t oa = objects[*(uint32_t*)va]->offset;
+       off_t ob = objects[*(uint32_t*)vb]->offset;
+
+       if (oa < ob)
+               return -1;
+       if (oa > ob)
+               return 1;
+       return 0;
+}
+
+static void write_rev_header(struct hashfile *f)
+{
+       uint32_t oid_version;
+       switch (hash_algo_by_ptr(the_hash_algo)) {
+       case GIT_HASH_SHA1:
+               oid_version = 1;
+               break;
+       case GIT_HASH_SHA256:
+               oid_version = 2;
+               break;
+       default:
+               die("write_rev_header: unknown hash version");
+       }
+
+       hashwrite_be32(f, RIDX_SIGNATURE);
+       hashwrite_be32(f, RIDX_VERSION);
+       hashwrite_be32(f, oid_version);
+}
+
+static void write_rev_index_positions(struct hashfile *f,
+                                     uint32_t *pack_order,
+                                     uint32_t nr_objects)
+{
+       uint32_t i;
+       for (i = 0; i < nr_objects; i++)
+               hashwrite_be32(f, pack_order[i]);
+}
+
+static void write_rev_trailer(struct hashfile *f, const unsigned char *hash)
+{
+       hashwrite(f, hash, the_hash_algo->rawsz);
+}
+
+const char *write_rev_file(const char *rev_name,
+                          struct pack_idx_entry **objects,
+                          uint32_t nr_objects,
+                          const unsigned char *hash,
+                          unsigned flags)
+{
+       uint32_t *pack_order;
+       uint32_t i;
+       const char *ret;
+
+       ALLOC_ARRAY(pack_order, nr_objects);
+       for (i = 0; i < nr_objects; i++)
+               pack_order[i] = i;
+       QSORT_S(pack_order, nr_objects, pack_order_cmp, objects);
+
+       ret = write_rev_file_order(rev_name, pack_order, nr_objects, hash,
+                                  flags);
+
+       free(pack_order);
+
+       return ret;
+}
+
+const char *write_rev_file_order(const char *rev_name,
+                                uint32_t *pack_order,
+                                uint32_t nr_objects,
+                                const unsigned char *hash,
+                                unsigned flags)
+{
+       struct hashfile *f;
+       int fd;
+
+       if ((flags & WRITE_REV) && (flags & WRITE_REV_VERIFY))
+               die(_("cannot both write and verify reverse index"));
+
+       if (flags & WRITE_REV) {
+               if (!rev_name) {
+                       struct strbuf tmp_file = STRBUF_INIT;
+                       fd = odb_mkstemp(&tmp_file, "pack/tmp_rev_XXXXXX");
+                       rev_name = strbuf_detach(&tmp_file, NULL);
+               } else {
+                       unlink(rev_name);
+                       fd = open(rev_name, O_CREAT|O_EXCL|O_WRONLY, 0600);
+                       if (fd < 0)
+                               die_errno("unable to create '%s'", rev_name);
+               }
+               f = hashfd(fd, rev_name);
+       } else if (flags & WRITE_REV_VERIFY) {
+               struct stat statbuf;
+               if (stat(rev_name, &statbuf)) {
+                       if (errno == ENOENT) {
+                               /* .rev files are optional */
+                               return NULL;
+                       } else
+                               die_errno(_("could not stat: %s"), rev_name);
+               }
+               f = hashfd_check(rev_name);
+       } else
+               return NULL;
+
+       write_rev_header(f);
+
+       write_rev_index_positions(f, pack_order, nr_objects);
+       write_rev_trailer(f, hash);
+
+       if (rev_name && adjust_shared_perm(rev_name) < 0)
+               die(_("failed to make %s readable"), rev_name);
+
+       finalize_hashfile(f, NULL, CSUM_HASH_IN_STREAM | CSUM_CLOSE |
+                                   ((flags & WRITE_IDX_VERIFY) ? 0 : CSUM_FSYNC));
+
+       return rev_name;
+}
+
 off_t write_pack_header(struct hashfile *f, uint32_t nr_entries)
 {
        struct pack_header hdr;
@@ -273,7 +394,7 @@ void fixup_pack_header_footer(int pack_fd,
        fsync_or_die(pack_fd, pack_name);
 }
 
-char *index_pack_lockfile(int ip_out)
+char *index_pack_lockfile(int ip_out, int *is_well_formed)
 {
        char packname[GIT_MAX_HEXSZ + 6];
        const int len = the_hash_algo->hexsz + 6;
@@ -287,11 +408,17 @@ char *index_pack_lockfile(int ip_out)
         */
        if (read_in_full(ip_out, packname, len) == len && packname[len-1] == '\n') {
                const char *name;
+
+               if (is_well_formed)
+                       *is_well_formed = 1;
                packname[len-1] = 0;
                if (skip_prefix(packname, "keep\t", &name))
                        return xstrfmt("%s/pack/pack-%s.keep",
                                       get_object_directory(), name);
+               return NULL;
        }
+       if (is_well_formed)
+               *is_well_formed = 0;
        return NULL;
 }
 
@@ -342,7 +469,7 @@ void finish_tmp_packfile(struct strbuf *name_buffer,
                         struct pack_idx_option *pack_idx_opts,
                         unsigned char hash[])
 {
-       const char *idx_tmp_name;
+       const char *idx_tmp_name, *rev_tmp_name = NULL;
        int basename_len = name_buffer->len;
 
        if (adjust_shared_perm(pack_tmp_name))
@@ -353,6 +480,9 @@ void finish_tmp_packfile(struct strbuf *name_buffer,
        if (adjust_shared_perm(idx_tmp_name))
                die_errno("unable to make temporary index file readable");
 
+       rev_tmp_name = write_rev_file(NULL, written_list, nr_written, hash,
+                                     pack_idx_opts->flags);
+
        strbuf_addf(name_buffer, "%s.pack", hash_to_hex(hash));
 
        if (rename(pack_tmp_name, name_buffer->buf))
@@ -366,6 +496,14 @@ void finish_tmp_packfile(struct strbuf *name_buffer,
 
        strbuf_setlen(name_buffer, basename_len);
 
+       if (rev_tmp_name) {
+               strbuf_addf(name_buffer, "%s.rev", hash_to_hex(hash));
+               if (rename(rev_tmp_name, name_buffer->buf))
+                       die_errno("unable to rename temporary reverse-index file");
+       }
+
+       strbuf_setlen(name_buffer, basename_len);
+
        free((void *)idx_tmp_name);
 }
 
diff --git a/pack.h b/pack.h
index 9ae640f4176f88836a21ff69416f5edef2bc5e9f..fa1395452624bfaf93bf86e88a4d12580ca77bee 100644 (file)
--- a/pack.h
+++ b/pack.h
@@ -42,6 +42,8 @@ struct pack_idx_option {
        /* flag bits */
 #define WRITE_IDX_VERIFY 01 /* verify only, do not write the idx file */
 #define WRITE_IDX_STRICT 02
+#define WRITE_REV 04
+#define WRITE_REV_VERIFY 010
 
        uint32_t version;
        uint32_t off32_limit;
@@ -85,12 +87,15 @@ int verify_pack_index(struct packed_git *);
 int verify_pack(struct repository *, struct packed_git *, verify_fn fn, struct progress *, uint32_t);
 off_t write_pack_header(struct hashfile *f, uint32_t);
 void fixup_pack_header_footer(int, unsigned char *, const char *, uint32_t, unsigned char *, off_t);
-char *index_pack_lockfile(int fd);
+char *index_pack_lockfile(int fd, int *is_well_formed);
 
 struct ref;
 
 void write_promisor_file(const char *promisor_name, struct ref **sought, int nr_sought);
 
+const char *write_rev_file(const char *rev_name, struct pack_idx_entry **objects, uint32_t nr_objects, const unsigned char *hash, unsigned flags);
+const char *write_rev_file_order(const char *rev_name, uint32_t *pack_order, uint32_t nr_objects, const unsigned char *hash, unsigned flags);
+
 /*
  * The "hdr" output buffer should be at least this big, which will handle sizes
  * up to 2^67.
index 4b938b4372617c4674d2ef12589d2b860fd1f007..8668345d9309e50cb005eea8baa60fb0ecdb1b3f 100644 (file)
@@ -324,11 +324,21 @@ void close_pack_index(struct packed_git *p)
        }
 }
 
+void close_pack_revindex(struct packed_git *p) {
+       if (!p->revindex_map)
+               return;
+
+       munmap((void *)p->revindex_map, p->revindex_size);
+       p->revindex_map = NULL;
+       p->revindex_data = NULL;
+}
+
 void close_pack(struct packed_git *p)
 {
        close_pack_windows(p);
        close_pack_fd(p);
        close_pack_index(p);
+       close_pack_revindex(p);
 }
 
 void close_object_store(struct raw_object_store *o)
@@ -351,7 +361,7 @@ void close_object_store(struct raw_object_store *o)
 
 void unlink_pack_path(const char *pack_name, int force_delete)
 {
-       static const char *exts[] = {".pack", ".idx", ".keep", ".bitmap", ".promisor"};
+       static const char *exts[] = {".pack", ".idx", ".rev", ".keep", ".bitmap", ".promisor"};
        int i;
        struct strbuf buf = STRBUF_INIT;
        size_t plen;
@@ -628,7 +638,7 @@ unsigned char *use_pack(struct packed_git *p,
                        if (p->pack_fd == -1 && open_packed_git(p))
                                die("packfile %s cannot be accessed", p->pack_name);
 
-                       win = xcalloc(1, sizeof(*win));
+                       CALLOC_ARRAY(win, 1);
                        win->offset = (offset / window_align) * window_align;
                        len = p->pack_size - win->offset;
                        if (len > packed_git_window_size)
@@ -852,7 +862,11 @@ static void prepare_pack(const char *full_name, size_t full_name_len,
 
        if (!strcmp(file_name, "multi-pack-index"))
                return;
+       if (starts_with(file_name, "multi-pack-index") &&
+           ends_with(file_name, ".rev"))
+               return;
        if (ends_with(file_name, ".idx") ||
+           ends_with(file_name, ".rev") ||
            ends_with(file_name, ".pack") ||
            ends_with(file_name, ".bitmap") ||
            ends_with(file_name, ".keep") ||
@@ -2055,12 +2069,79 @@ int find_pack_entry(struct repository *r, const struct object_id *oid, struct pa
        return 0;
 }
 
+static void maybe_invalidate_kept_pack_cache(struct repository *r,
+                                            unsigned flags)
+{
+       if (!r->objects->kept_pack_cache.packs)
+               return;
+       if (r->objects->kept_pack_cache.flags == flags)
+               return;
+       FREE_AND_NULL(r->objects->kept_pack_cache.packs);
+       r->objects->kept_pack_cache.flags = 0;
+}
+
+static struct packed_git **kept_pack_cache(struct repository *r, unsigned flags)
+{
+       maybe_invalidate_kept_pack_cache(r, flags);
+
+       if (!r->objects->kept_pack_cache.packs) {
+               struct packed_git **packs = NULL;
+               size_t nr = 0, alloc = 0;
+               struct packed_git *p;
+
+               /*
+                * We want "all" packs here, because we need to cover ones that
+                * are used by a midx, as well. We need to look in every one of
+                * them (instead of the midx itself) to cover duplicates. It's
+                * possible that an object is found in two packs that the midx
+                * covers, one kept and one not kept, but the midx returns only
+                * the non-kept version.
+                */
+               for (p = get_all_packs(r); p; p = p->next) {
+                       if ((p->pack_keep && (flags & ON_DISK_KEEP_PACKS)) ||
+                           (p->pack_keep_in_core && (flags & IN_CORE_KEEP_PACKS))) {
+                               ALLOC_GROW(packs, nr + 1, alloc);
+                               packs[nr++] = p;
+                       }
+               }
+               ALLOC_GROW(packs, nr + 1, alloc);
+               packs[nr] = NULL;
+
+               r->objects->kept_pack_cache.packs = packs;
+               r->objects->kept_pack_cache.flags = flags;
+       }
+
+       return r->objects->kept_pack_cache.packs;
+}
+
+int find_kept_pack_entry(struct repository *r,
+                        const struct object_id *oid,
+                        unsigned flags,
+                        struct pack_entry *e)
+{
+       struct packed_git **cache;
+
+       for (cache = kept_pack_cache(r, flags); *cache; cache++) {
+               struct packed_git *p = *cache;
+               if (fill_pack_entry(oid, e, p))
+                       return 1;
+       }
+
+       return 0;
+}
+
 int has_object_pack(const struct object_id *oid)
 {
        struct pack_entry e;
        return find_pack_entry(the_repository, oid, &e);
 }
 
+int has_object_kept_pack(const struct object_id *oid, unsigned flags)
+{
+       struct pack_entry e;
+       return find_kept_pack_entry(the_repository, oid, flags, &e);
+}
+
 int has_pack_index(const unsigned char *sha1)
 {
        struct stat st;
index a58fc738e06319624b666c80e2636217400cdda9..3ae117a8aef0faf2f6e7e12abba51235f36fe2f4 100644 (file)
@@ -90,6 +90,7 @@ uint32_t get_pack_fanout(struct packed_git *p, uint32_t value);
 
 unsigned char *use_pack(struct packed_git *, struct pack_window **, off_t, unsigned long *);
 void close_pack_windows(struct packed_git *);
+void close_pack_revindex(struct packed_git *);
 void close_pack(struct packed_git *);
 void close_object_store(struct raw_object_store *o);
 void unuse_pack(struct pack_window **);
@@ -161,13 +162,18 @@ int packed_object_info(struct repository *r,
 void mark_bad_packed_object(struct packed_git *p, const unsigned char *sha1);
 const struct packed_git *has_packed_and_bad(struct repository *r, const unsigned char *sha1);
 
+#define ON_DISK_KEEP_PACKS 1
+#define IN_CORE_KEEP_PACKS 2
+
 /*
  * Iff a pack file in the given repository contains the object named by sha1,
  * return true and store its location to e.
  */
 int find_pack_entry(struct repository *r, const struct object_id *oid, struct pack_entry *e);
+int find_kept_pack_entry(struct repository *r, const struct object_id *oid, unsigned flags, struct pack_entry *e);
 
 int has_object_pack(const struct object_id *oid);
+int has_object_kept_pack(const struct object_id *oid, unsigned flags);
 
 int has_pack_index(const unsigned char *sha1);
 
diff --git a/pager.c b/pager.c
index ee435de67562dc5a3142a153e41672c292924640..3d37dd7adaa27ed1b6bc3952711b11ff6dfc0f56 100644 (file)
--- a/pager.c
+++ b/pager.c
 static struct child_process pager_process = CHILD_PROCESS_INIT;
 static const char *pager_program;
 
-static void wait_for_pager(int in_signal)
+static void close_pager_fds(void)
 {
-       if (!in_signal) {
-               fflush(stdout);
-               fflush(stderr);
-       }
        /* signal EOF to pager */
        close(1);
        close(2);
-       if (in_signal)
-               finish_command_in_signal(&pager_process);
-       else
-               finish_command(&pager_process);
 }
 
 static void wait_for_pager_atexit(void)
 {
-       wait_for_pager(0);
+       fflush(stdout);
+       fflush(stderr);
+       close_pager_fds();
+       finish_command(&pager_process);
 }
 
 static void wait_for_pager_signal(int signo)
 {
-       wait_for_pager(1);
+       close_pager_fds();
+       finish_command_in_signal(&pager_process);
        sigchain_pop(signo);
        raise(signo);
 }
index f0507432ee35ba8646a510d1a28ec3561f6bcb30..e6f56768ca5de8f644143ee462ac11dd959e5946 100644 (file)
@@ -625,6 +625,8 @@ static int show_gitcomp(const struct option *opts, int show_all)
  *
  * Right now this is only used to preprocess and substitute
  * OPTION_ALIAS.
+ *
+ * The returned options should be freed using free_preprocessed_options.
  */
 static struct option *preprocess_options(struct parse_opt_ctx_t *ctx,
                                         const struct option *options)
@@ -678,6 +680,7 @@ static struct option *preprocess_options(struct parse_opt_ctx_t *ctx,
                        newopt[i].short_name = short_name;
                        newopt[i].long_name = long_name;
                        newopt[i].help = strbuf_detach(&help, NULL);
+                       newopt[i].flags |= PARSE_OPT_FROM_ALIAS;
                        break;
                }
 
@@ -693,6 +696,20 @@ static struct option *preprocess_options(struct parse_opt_ctx_t *ctx,
        return newopt;
 }
 
+static void free_preprocessed_options(struct option *options)
+{
+       int i;
+
+       if (!options)
+               return;
+
+       for (i = 0; options[i].type != OPTION_END; i++) {
+               if (options[i].flags & PARSE_OPT_FROM_ALIAS)
+                       free((void *)options[i].help);
+       }
+       free(options);
+}
+
 static int usage_with_options_internal(struct parse_opt_ctx_t *,
                                       const char * const *,
                                       const struct option *, int, int);
@@ -869,8 +886,8 @@ int parse_options(int argc, const char **argv, const char *prefix,
                usage_with_options(usagestr, options);
        }
 
-       precompose_argv(argc, argv);
-       free(real_options);
+       precompose_argv_prefix(argc, argv, NULL);
+       free_preprocessed_options(real_options);
        free(ctx.alias_groups);
        return parse_options_end(&ctx);
 }
index ff6506a5047044842c10c2aed366a18a918532a7..a845a9d9527476fbe5269756a7fd03aed6c6d4d7 100644 (file)
@@ -28,26 +28,27 @@ enum parse_opt_type {
 };
 
 enum parse_opt_flags {
-       PARSE_OPT_KEEP_DASHDASH = 1,
-       PARSE_OPT_STOP_AT_NON_OPTION = 2,
-       PARSE_OPT_KEEP_ARGV0 = 4,
-       PARSE_OPT_KEEP_UNKNOWN = 8,
-       PARSE_OPT_NO_INTERNAL_HELP = 16,
-       PARSE_OPT_ONE_SHOT = 32
+       PARSE_OPT_KEEP_DASHDASH = 1 << 0,
+       PARSE_OPT_STOP_AT_NON_OPTION = 1 << 1,
+       PARSE_OPT_KEEP_ARGV0 = 1 << 2,
+       PARSE_OPT_KEEP_UNKNOWN = 1 << 3,
+       PARSE_OPT_NO_INTERNAL_HELP = 1 << 4,
+       PARSE_OPT_ONE_SHOT = 1 << 5,
 };
 
 enum parse_opt_option_flags {
-       PARSE_OPT_OPTARG  = 1,
-       PARSE_OPT_NOARG   = 2,
-       PARSE_OPT_NONEG   = 4,
-       PARSE_OPT_HIDDEN  = 8,
-       PARSE_OPT_LASTARG_DEFAULT = 16,
-       PARSE_OPT_NODASH = 32,
-       PARSE_OPT_LITERAL_ARGHELP = 64,
-       PARSE_OPT_SHELL_EVAL = 256,
-       PARSE_OPT_NOCOMPLETE = 512,
-       PARSE_OPT_COMP_ARG = 1024,
-       PARSE_OPT_CMDMODE = 2048
+       PARSE_OPT_OPTARG  = 1 << 0,
+       PARSE_OPT_NOARG   = 1 << 1,
+       PARSE_OPT_NONEG   = 1 << 2,
+       PARSE_OPT_HIDDEN  = 1 << 3,
+       PARSE_OPT_LASTARG_DEFAULT = 1 << 4,
+       PARSE_OPT_NODASH = 1 << 5,
+       PARSE_OPT_LITERAL_ARGHELP = 1 << 6,
+       PARSE_OPT_FROM_ALIAS = 1 << 7,
+       PARSE_OPT_SHELL_EVAL = 1 << 8,
+       PARSE_OPT_NOCOMPLETE = 1 << 9,
+       PARSE_OPT_COMP_ARG = 1 << 10,
+       PARSE_OPT_CMDMODE = 1 << 11,
 };
 
 enum parse_opt_result {
index 3f404e4b0b4cc24d02ae9cbf3c8498c37f673094..8bf425555de252f12935b4fae68f375f3a815987 100644 (file)
@@ -124,7 +124,7 @@ struct patch_id *add_commit_patch_id(struct commit *commit,
        if (!patch_id_defined(commit))
                return NULL;
 
-       key = xcalloc(1, sizeof(*key));
+       CALLOC_ARRAY(key, 1);
        if (init_patch_id_entry(key, commit, ids)) {
                free(key);
                return NULL;
index 7a229d8d22f2f67a8e267fda302b53b35a13a3d4..18b3be362ae988ddac9a5be78a7f5de8414767aa 100644 (file)
@@ -154,7 +154,7 @@ static void parse_pathspec_attr_match(struct pathspec_item *item, const char *va
        string_list_remove_empty_items(&list, 0);
 
        item->attr_check = attr_check_alloc();
-       item->attr_match = xcalloc(list.nr, sizeof(struct attr_match));
+       CALLOC_ARRAY(item->attr_match, list.nr);
 
        for_each_string_list_item(si, &list) {
                size_t attr_len;
@@ -561,7 +561,7 @@ void parse_pathspec(struct pathspec *pathspec,
                if (!(flags & PATHSPEC_PREFER_CWD))
                        BUG("PATHSPEC_PREFER_CWD requires arguments");
 
-               pathspec->items = item = xcalloc(1, sizeof(*item));
+               pathspec->items = CALLOC_ARRAY(item, 1);
                item->match = xstrdup(prefix);
                item->original = xstrdup(prefix);
                item->nowildcard_len = item->len = strlen(prefix);
index 02eacef0c2a4a43058a74dda4cebe1ae16bdd2eb..73ebbf80cc6f42cff20acdb6f1d94bc03f28e71f 100644 (file)
@@ -619,6 +619,19 @@ Return path to the git repository. Must be called on a repository instance.
 
 sub repo_path { $_[0]->{opts}->{Repository} }
 
+=item hooks_path ()
+
+Return path to the hooks directory. Must be called on a repository instance.
+
+=cut
+
+sub hooks_path {
+       my ($self) = @_;
+
+       my $dir = $self->command_oneline('rev-parse', '--git-path', 'hooks');
+       my $abs = abs_path($dir);
+       return $abs;
+}
 
 =item wc_path ()
 
index d633005ef746ad1eb7445cb75401e0c3f55a2312..0194137528c3ce909ab76f55200e2ed31ce742f7 100644 (file)
@@ -196,17 +196,26 @@ int packet_write_fmt_gently(int fd, const char *fmt, ...)
 
 static int packet_write_gently(const int fd_out, const char *buf, size_t size)
 {
-       static char packet_write_buffer[LARGE_PACKET_MAX];
+       char header[4];
        size_t packet_size;
 
-       if (size > sizeof(packet_write_buffer) - 4)
+       if (size > LARGE_PACKET_DATA_MAX)
                return error(_("packet write failed - data exceeds max packet size"));
 
        packet_trace(buf, size, 1);
        packet_size = size + 4;
-       set_packet_header(packet_write_buffer, packet_size);
-       memcpy(packet_write_buffer + 4, buf, size);
-       if (write_in_full(fd_out, packet_write_buffer, packet_size) < 0)
+
+       set_packet_header(header, packet_size);
+
+       /*
+        * Write the header and the buffer in 2 parts so that we do
+        * not need to allocate a buffer or rely on a static buffer.
+        * This also avoids putting a large buffer on the stack which
+        * might have multi-threading issues.
+        */
+
+       if (write_in_full(fd_out, header, 4) < 0 ||
+           write_in_full(fd_out, buf, size) < 0)
                return error(_("packet write failed"));
        return 0;
 }
@@ -242,26 +251,27 @@ void packet_buf_write_len(struct strbuf *buf, const char *data, size_t len)
        packet_trace(data, len, 1);
 }
 
-int write_packetized_from_fd(int fd_in, int fd_out)
+int write_packetized_from_fd_no_flush(int fd_in, int fd_out)
 {
-       static char buf[LARGE_PACKET_DATA_MAX];
+       char *buf = xmalloc(LARGE_PACKET_DATA_MAX);
        int err = 0;
        ssize_t bytes_to_write;
 
        while (!err) {
-               bytes_to_write = xread(fd_in, buf, sizeof(buf));
-               if (bytes_to_write < 0)
+               bytes_to_write = xread(fd_in, buf, LARGE_PACKET_DATA_MAX);
+               if (bytes_to_write < 0) {
+                       free(buf);
                        return COPY_READ_ERROR;
+               }
                if (bytes_to_write == 0)
                        break;
                err = packet_write_gently(fd_out, buf, bytes_to_write);
        }
-       if (!err)
-               err = packet_flush_gently(fd_out);
+       free(buf);
        return err;
 }
 
-int write_packetized_from_buf(const char *src_in, size_t len, int fd_out)
+int write_packetized_from_buf_no_flush(const char *src_in, size_t len, int fd_out)
 {
        int err = 0;
        size_t bytes_written = 0;
@@ -277,8 +287,6 @@ int write_packetized_from_buf(const char *src_in, size_t len, int fd_out)
                err = packet_write_gently(fd_out, src_in + bytes_written, bytes_to_write);
                bytes_written += bytes_to_write;
        }
-       if (!err)
-               err = packet_flush_gently(fd_out);
        return err;
 }
 
@@ -298,8 +306,11 @@ static int get_packet_data(int fd, char **src_buf, size_t *src_size,
                *src_size -= ret;
        } else {
                ret = read_in_full(fd, dst, size);
-               if (ret < 0)
+               if (ret < 0) {
+                       if (options & PACKET_READ_GENTLE_ON_READ_ERROR)
+                               return error_errno(_("read error"));
                        die_errno(_("read error"));
+               }
        }
 
        /* And complain if we didn't get enough bytes to satisfy the read. */
@@ -307,6 +318,8 @@ static int get_packet_data(int fd, char **src_buf, size_t *src_size,
                if (options & PACKET_READ_GENTLE_ON_EOF)
                        return -1;
 
+               if (options & PACKET_READ_GENTLE_ON_READ_ERROR)
+                       return error(_("the remote end hung up unexpectedly"));
                die(_("the remote end hung up unexpectedly"));
        }
 
@@ -335,6 +348,9 @@ enum packet_read_status packet_read_with_status(int fd, char **src_buffer,
        len = packet_length(linelen);
 
        if (len < 0) {
+               if (options & PACKET_READ_GENTLE_ON_READ_ERROR)
+                       return error(_("protocol error: bad line length "
+                                      "character: %.4s"), linelen);
                die(_("protocol error: bad line length character: %.4s"), linelen);
        } else if (!len) {
                packet_trace("0000", 4, 0);
@@ -349,12 +365,19 @@ enum packet_read_status packet_read_with_status(int fd, char **src_buffer,
                *pktlen = 0;
                return PACKET_READ_RESPONSE_END;
        } else if (len < 4) {
+               if (options & PACKET_READ_GENTLE_ON_READ_ERROR)
+                       return error(_("protocol error: bad line length %d"),
+                                    len);
                die(_("protocol error: bad line length %d"), len);
        }
 
        len -= 4;
-       if ((unsigned)len >= size)
+       if ((unsigned)len >= size) {
+               if (options & PACKET_READ_GENTLE_ON_READ_ERROR)
+                       return error(_("protocol error: bad line length %d"),
+                                    len);
                die(_("protocol error: bad line length %d"), len);
+       }
 
        if (get_packet_data(fd, src_buffer, src_len, buffer, len, options) < 0) {
                *pktlen = -1;
@@ -421,7 +444,7 @@ char *packet_read_line_buf(char **src, size_t *src_len, int *dst_len)
        return packet_read_line_generic(-1, src, src_len, dst_len);
 }
 
-ssize_t read_packetized_to_strbuf(int fd_in, struct strbuf *sb_out)
+ssize_t read_packetized_to_strbuf(int fd_in, struct strbuf *sb_out, int options)
 {
        int packet_len;
 
@@ -437,7 +460,7 @@ ssize_t read_packetized_to_strbuf(int fd_in, struct strbuf *sb_out)
                         * that there is already room for the extra byte.
                         */
                        sb_out->buf + sb_out->len, LARGE_PACKET_DATA_MAX+1,
-                       PACKET_READ_GENTLE_ON_EOF);
+                       options);
                if (packet_len <= 0)
                        break;
                sb_out->len += packet_len;
index 8c90daa59ef0ca5f32202a1bcf52583b3f324e4f..5af5f456876841744f22bc67b8359e0a330ddc11 100644 (file)
@@ -32,8 +32,8 @@ void packet_buf_write(struct strbuf *buf, const char *fmt, ...) __attribute__((f
 void packet_buf_write_len(struct strbuf *buf, const char *data, size_t len);
 int packet_flush_gently(int fd);
 int packet_write_fmt_gently(int fd, const char *fmt, ...) __attribute__((format (printf, 2, 3)));
-int write_packetized_from_fd(int fd_in, int fd_out);
-int write_packetized_from_buf(const char *src_in, size_t len, int fd_out);
+int write_packetized_from_fd_no_flush(int fd_in, int fd_out);
+int write_packetized_from_buf_no_flush(const char *src_in, size_t len, int fd_out);
 
 /*
  * Read a packetized line into the buffer, which must be at least size bytes
@@ -68,10 +68,15 @@ int write_packetized_from_buf(const char *src_in, size_t len, int fd_out);
  *
  * If options contains PACKET_READ_DIE_ON_ERR_PACKET, it dies when it sees an
  * ERR packet.
+ *
+ * If options contains PACKET_READ_GENTLE_ON_READ_ERROR, we will not die
+ * on read errors, but instead return -1.  However, we may still die on an
+ * ERR packet (if requested).
  */
-#define PACKET_READ_GENTLE_ON_EOF     (1u<<0)
-#define PACKET_READ_CHOMP_NEWLINE     (1u<<1)
-#define PACKET_READ_DIE_ON_ERR_PACKET (1u<<2)
+#define PACKET_READ_GENTLE_ON_EOF        (1u<<0)
+#define PACKET_READ_CHOMP_NEWLINE        (1u<<1)
+#define PACKET_READ_DIE_ON_ERR_PACKET    (1u<<2)
+#define PACKET_READ_GENTLE_ON_READ_ERROR (1u<<3)
 int packet_read(int fd, char **src_buffer, size_t *src_len, char
                *buffer, unsigned size, int options);
 
@@ -131,7 +136,7 @@ char *packet_read_line_buf(char **src_buf, size_t *src_len, int *size);
 /*
  * Reads a stream of variable sized packets until a flush packet is detected.
  */
-ssize_t read_packetized_to_strbuf(int fd_in, struct strbuf *sb_out);
+ssize_t read_packetized_to_strbuf(int fd_in, struct strbuf *sb_out, int options);
 
 /*
  * Receive multiplexed output stream over git native protocol.
index 677cece1024d73eb271d30f8b173ea967c61ca30..a32beb67423996f1e914f13fedf1918f228a9a70 100644 (file)
--- a/po/TEAMS
+++ b/po/TEAMS
@@ -29,6 +29,10 @@ Repository:  https://github.com/jnavila/git
 Leader:                Jean-Noël Avila <jn.avila@free.fr>
 Members:       Sébastien Helleu <flashcode@flashtux.org>
 
+Language:      id (Indonesian)
+Repository:    https://github.com/bagasme/git-po
+Leader:                Bagas Sanjaya <bagasdotme@gmail.com>
+
 Language:      is (Icelandic)
 Leader:                Ævar Arnfjörð Bjarmason <avarab@gmail.com>
 
index d73e84c8f8ffe42729eed0e30f5df0bcb6eff0d3..529ea97bd9fbc1461c9ff19e64d3bfb310294a1f 100644 (file)
--- a/po/bg.po
+++ b/po/bg.po
@@ -1,7 +1,7 @@
 # Bulgarian translation of git po-file.
-# Copyright (C) 2014, 2015, 2016, 2017, 2018, 2019, 2020 Alexander Shopov <ash@kambanaria.org>.
+# Copyright (C) 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Alexander Shopov <ash@kambanaria.org>.
 # This file is distributed under the same license as the git package.
-# Alexander Shopov <ash@kambanaria.org>, 2014, 2015, 2016, 2017, 2018, 2019, 2020.
+# Alexander Shopov <ash@kambanaria.org>, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021.
 #
 # ========================
 # DICTIONARY TO MERGE IN GIT GUI
@@ -38,6 +38,7 @@
 # graft присадка
 # grafted repository хранилище с присаждане
 # replace refs заместващи указатели
+# replace objects заместващи обекти
 # embedded repository вградено/вътрешно хранилище (добавянето му е грешка)
 # thin pack съкратен пакет
 # pack file пакетен файл
 # identity самоличност, информация за
 # boundary commit гранично подаване
 # integrate (changes) внасяне (на промени)
+# overflow data данни за отместването
+# reverse index обратен индекс (а не обърнат, за да не се бърка с reverse key index)
 # ------------------------
 # „$var“ - може да не сработва за shell има gettext и eval_gettext - проверка - намират се лесно по „$
 # ------------------------
 # for i in `sort -u FILES`; do cnt=`grep $i FILES | wc -l`; echo $cnt $i ;done | sort -n
 msgid ""
 msgstr ""
-"Project-Id-Version: git 2.30\n"
+"Project-Id-Version: git 2.31\n"
 "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2020-12-21 07:10+0800\n"
-"PO-Revision-Date: 2020-12-22 17:48+0100\n"
+"POT-Creation-Date: 2021-03-04 22:41+0800\n"
+"PO-Revision-Date: 2021-03-05 12:11+0100\n"
 "Last-Translator: Alexander Shopov <ash@kambanaria.org>\n"
 "Language-Team: Bulgarian <dict@fsa-bg.org>\n"
 "Language: bg\n"
@@ -182,9 +185,9 @@ msgstr ""
 msgid "Huh (%s)?"
 msgstr "Неуспешен анализ — „%s“."
 
-#: add-interactive.c:529 add-interactive.c:830 reset.c:65 sequencer.c:3284
-#: sequencer.c:3735 sequencer.c:3890 builtin/rebase.c:1532
-#: builtin/rebase.c:1955
+#: add-interactive.c:529 add-interactive.c:830 reset.c:65 sequencer.c:3292
+#: sequencer.c:3743 sequencer.c:3898 builtin/rebase.c:1538
+#: builtin/rebase.c:1963
 msgid "could not read index"
 msgstr "индексът не може да бъде прочетен"
 
@@ -212,7 +215,7 @@ msgstr "Обновяване"
 msgid "could not stage '%s'"
 msgstr "неуспешно добавяне в индекса на „%s“"
 
-#: add-interactive.c:703 add-interactive.c:892 reset.c:89 sequencer.c:3478
+#: add-interactive.c:703 add-interactive.c:892 reset.c:89 sequencer.c:3486
 msgid "could not write index"
 msgstr "индексът не може да бъде записан"
 
@@ -370,7 +373,7 @@ msgstr "извън индекса"
 
 #: add-interactive.c:1144 apply.c:4987 apply.c:4990 builtin/am.c:2257
 #: builtin/am.c:2260 builtin/bugreport.c:134 builtin/clone.c:124
-#: builtin/fetch.c:147 builtin/merge.c:284 builtin/pull.c:190
+#: builtin/fetch.c:150 builtin/merge.c:285 builtin/pull.c:190
 #: builtin/submodule--helper.c:409 builtin/submodule--helper.c:1818
 #: builtin/submodule--helper.c:1821 builtin/submodule--helper.c:2326
 #: builtin/submodule--helper.c:2329 builtin/submodule--helper.c:2572
@@ -969,7 +972,7 @@ msgstr ""
 msgid "Exiting because of an unresolved conflict."
 msgstr "Изход от програмата заради некоригиран конфликт."
 
-#: advice.c:281 builtin/merge.c:1369
+#: advice.c:281 builtin/merge.c:1370
 msgid "You have not concluded your merge (MERGE_HEAD exists)."
 msgstr "Не сте завършили сливане.  (Указателят „MERGE_HEAD“ съществува)."
 
@@ -1285,7 +1288,8 @@ msgstr "неуспешно прилагане на кръпка: „%s:%ld“"
 msgid "cannot checkout %s"
 msgstr "„%s“ не може да се изтегли"
 
-#: apply.c:3405 apply.c:3416 apply.c:3462 midx.c:73 setup.c:308
+#: apply.c:3405 apply.c:3416 apply.c:3462 midx.c:86 pack-revindex.c:213
+#: setup.c:308
 #, c-format
 msgid "failed to read %s"
 msgstr "файлът „%s“ не може да бъде прочетен"
@@ -1450,7 +1454,7 @@ msgstr ""
 msgid "unable to add cache entry for %s"
 msgstr "не може да се добави запис в кеша за „%s“"
 
-#: apply.c:4374 builtin/bisect--helper.c:524
+#: apply.c:4374 builtin/bisect--helper.c:523
 #, c-format
 msgid "failed to write to '%s'"
 msgstr "в „%s“ не може да се пише"
@@ -1486,7 +1490,7 @@ msgstr[1] "Прилагане на кръпката „%%s“ с %d отхвър
 msgid "truncating .rej filename to %.*s.rej"
 msgstr "съкращаване на името на файла с отхвърлените парчета на „ %.*s.rej“"
 
-#: apply.c:4576 builtin/fetch.c:927 builtin/fetch.c:1228
+#: apply.c:4576 builtin/fetch.c:933 builtin/fetch.c:1334
 #, c-format
 msgid "cannot open %s"
 msgstr "„%s“ не може да бъде отворен"
@@ -1542,7 +1546,7 @@ msgstr[0] ""
 msgstr[1] ""
 "Добавени са %d реда след корекцията на грешките в знаците за интервали."
 
-#: apply.c:4960 builtin/add.c:618 builtin/mv.c:304 builtin/rm.c:406
+#: apply.c:4960 builtin/add.c:626 builtin/mv.c:304 builtin/rm.c:406
 msgid "Unable to write new index file"
 msgstr "Новият индекс не може да бъде записан"
 
@@ -1613,7 +1617,7 @@ msgid "build a temporary index based on embedded index information"
 msgstr ""
 "създаване на временен индекс на база на включената информация за индекса"
 
-#: apply.c:5025 builtin/checkout-index.c:182 builtin/ls-files.c:525
+#: apply.c:5025 builtin/checkout-index.c:195 builtin/ls-files.c:540
 msgid "paths are separated with NUL character"
 msgstr "разделяне на пътищата с нулевия знак „NUL“"
 
@@ -1623,7 +1627,7 @@ msgstr "да се осигури контекст от поне такъв БР
 
 #: apply.c:5028 builtin/am.c:2245 builtin/interpret-trailers.c:98
 #: builtin/interpret-trailers.c:100 builtin/interpret-trailers.c:102
-#: builtin/pack-objects.c:3562 builtin/rebase.c:1346
+#: builtin/pack-objects.c:3577 builtin/rebase.c:1352
 msgid "action"
 msgstr "действие"
 
@@ -1652,9 +1656,9 @@ msgstr "оставяне на отхвърлените парчета във ф
 msgid "allow overlapping hunks"
 msgstr "позволяване на застъпващи се парчета"
 
-#: apply.c:5045 builtin/add.c:329 builtin/check-ignore.c:22
-#: builtin/commit.c:1364 builtin/count-objects.c:98 builtin/fsck.c:775
-#: builtin/log.c:2287 builtin/mv.c:123 builtin/read-tree.c:128
+#: apply.c:5045 builtin/add.c:337 builtin/check-ignore.c:22
+#: builtin/commit.c:1364 builtin/count-objects.c:98 builtin/fsck.c:757
+#: builtin/log.c:2286 builtin/mv.c:123 builtin/read-tree.c:128
 msgid "be verbose"
 msgstr "повече подробности"
 
@@ -1742,14 +1746,14 @@ msgstr "git archive --remote ХРАНИЛИЩЕ [--exec КОМАНДА] --list"
 msgid "cannot read %s"
 msgstr "обектът „%s“ не може да бъде прочетен"
 
-#: archive.c:345 sequencer.c:459 sequencer.c:1736 sequencer.c:2886
-#: sequencer.c:3327 sequencer.c:3436 builtin/am.c:249 builtin/commit.c:786
-#: builtin/merge.c:1138
+#: archive.c:345 sequencer.c:459 sequencer.c:1744 sequencer.c:2894
+#: sequencer.c:3335 sequencer.c:3444 builtin/am.c:249 builtin/commit.c:786
+#: builtin/merge.c:1139
 #, c-format
 msgid "could not read '%s'"
 msgstr "файлът „%s“ не може да бъде прочетен"
 
-#: archive.c:430 builtin/add.c:181 builtin/add.c:594 builtin/rm.c:315
+#: archive.c:430 builtin/add.c:189 builtin/add.c:602 builtin/rm.c:315
 #, c-format
 msgid "pathspec '%s' did not match any files"
 msgstr "пътят „%s“ не съвпада с никой файл"
@@ -1791,7 +1795,7 @@ msgstr "ФОРМАТ"
 msgid "archive format"
 msgstr "ФОРМАТ на архива"
 
-#: archive.c:556 builtin/log.c:1765
+#: archive.c:556 builtin/log.c:1764
 msgid "prefix"
 msgstr "ПРЕФИКС"
 
@@ -1799,11 +1803,11 @@ msgstr "ПРЕФИКС"
 msgid "prepend prefix to each pathname in the archive"
 msgstr "добавяне на този ПРЕФИКС към всеки път в архива"
 
-#: archive.c:558 archive.c:561 builtin/blame.c:886 builtin/blame.c:890
-#: builtin/blame.c:891 builtin/commit-tree.c:117 builtin/config.c:135
+#: archive.c:558 archive.c:561 builtin/blame.c:884 builtin/blame.c:888
+#: builtin/blame.c:889 builtin/commit-tree.c:117 builtin/config.c:135
 #: builtin/fast-export.c:1207 builtin/fast-export.c:1209
-#: builtin/fast-export.c:1213 builtin/grep.c:919 builtin/hash-object.c:105
-#: builtin/ls-files.c:561 builtin/ls-files.c:564 builtin/notes.c:412
+#: builtin/fast-export.c:1213 builtin/grep.c:920 builtin/hash-object.c:105
+#: builtin/ls-files.c:576 builtin/ls-files.c:579 builtin/notes.c:412
 #: builtin/notes.c:578 builtin/read-tree.c:123 parse-options.h:190
 msgid "file"
 msgstr "ФАЙЛ"
@@ -1968,12 +1972,12 @@ msgstr "Двоично търсене: трябва да се провери б
 msgid "a %s revision is needed"
 msgstr "необходима е версия „%s“"
 
-#: bisect.c:941 builtin/notes.c:177 builtin/tag.c:255
+#: bisect.c:941 builtin/notes.c:177 builtin/tag.c:287
 #, c-format
 msgid "could not create file '%s'"
 msgstr "файлът „%s“ не може да бъде създаден"
 
-#: bisect.c:987 builtin/merge.c:152
+#: bisect.c:987 builtin/merge.c:153
 #, c-format
 msgid "could not read file '%s'"
 msgstr "файлът „%s“ не може да бъде прочетен"
@@ -1991,7 +1995,7 @@ msgstr "„%s“ e както „%s“, така и „%s“\n"
 #, c-format
 msgid ""
 "No testable commit found.\n"
-"Maybe you started with bad path parameters?\n"
+"Maybe you started with bad path arguments?\n"
 msgstr ""
 "Липсва подходящо за тестване подаване.\n"
 "Проверете параметрите за пътищата.\n"
@@ -2027,11 +2031,11 @@ msgstr ""
 "Едновременното задаване на опциите „--reverse“ и „--first-parent“ изисква "
 "указването на крайно подаване"
 
-#: blame.c:2821 bundle.c:213 ref-filter.c:2272 remote.c:2031 sequencer.c:2138
-#: sequencer.c:4633 submodule.c:855 builtin/commit.c:1045 builtin/log.c:409
-#: builtin/log.c:1023 builtin/log.c:1625 builtin/log.c:2046 builtin/log.c:2336
-#: builtin/merge.c:423 builtin/pack-objects.c:3380 builtin/pack-objects.c:3395
-#: builtin/shortlog.c:267
+#: blame.c:2821 bundle.c:213 ref-filter.c:2206 remote.c:2041 sequencer.c:2146
+#: sequencer.c:4641 submodule.c:856 builtin/commit.c:1045 builtin/log.c:411
+#: builtin/log.c:1016 builtin/log.c:1624 builtin/log.c:2045 builtin/log.c:2335
+#: builtin/merge.c:424 builtin/pack-objects.c:3395 builtin/pack-objects.c:3410
+#: builtin/shortlog.c:255
 msgid "revision walk setup failed"
 msgstr "неуспешно настройване на обхождането на версиите"
 
@@ -2210,7 +2214,7 @@ msgstr "Файлът „%s“ не изглежда да е пратка на gi
 msgid "unrecognized header: %s%s (%d)"
 msgstr "непозната заглавна част: %s%s (%d)"
 
-#: bundle.c:136 rerere.c:480 rerere.c:690 sequencer.c:2390 sequencer.c:3176
+#: bundle.c:136 rerere.c:464 rerere.c:674 sequencer.c:2398 sequencer.c:3184
 #: builtin/commit.c:814
 #, c-format
 msgid "could not open '%s'"
@@ -2254,286 +2258,301 @@ msgstr "Командата „git pack-objects“ не може да бъде с
 msgid "pack-objects died"
 msgstr "Командата „git pack-objects“ не завърши успешно"
 
-#: bundle.c:379
-msgid "rev-list died"
-msgstr "Командата „git rev-list“ не завърши успешно"
-
-#: bundle.c:428
+#: bundle.c:386
 #, c-format
 msgid "ref '%s' is excluded by the rev-list options"
 msgstr ""
 "указателят „%s“ не е бил включен поради опциите зададени на „git rev-list“"
 
-#: bundle.c:498
+#: bundle.c:490
 #, c-format
 msgid "unsupported bundle version %d"
 msgstr "неподдържана версия на индекса %d"
 
-#: bundle.c:500
+#: bundle.c:492
 #, c-format
 msgid "cannot write bundle version %d with algorithm %s"
 msgstr "пратка %d не може да се запише с алгоритъм %s"
 
-#: bundle.c:522 builtin/log.c:209 builtin/log.c:1927 builtin/shortlog.c:408
+#: bundle.c:510 builtin/log.c:210 builtin/log.c:1926 builtin/shortlog.c:396
 #, c-format
 msgid "unrecognized argument: %s"
 msgstr "непознат аргумент: %s"
 
-#: bundle.c:530
+#: bundle.c:539
 msgid "Refusing to create empty bundle."
 msgstr "Създаването на празна пратка е невъзможно."
 
-#: bundle.c:540
+#: bundle.c:549
 #, c-format
 msgid "cannot create '%s'"
-msgstr "Файлът „%s“ не може да бъде създаден"
+msgstr "файлът „%s“ не може да бъде създаден"
 
-#: bundle.c:565
+#: bundle.c:574
 msgid "index-pack died"
-msgstr "Командата „git index-pack“ не завърши успешно"
+msgstr "командата „git index-pack“ не завърши успешно"
+
+#: chunk-format.c:113
+msgid "terminating chunk id appears earlier than expected"
+msgstr "идентификаторът за краен откъс се явява по-рано от очакваното"
+
+#: chunk-format.c:122
+#, c-format
+msgid "improper chunk offset(s) %<PRIx64> and %<PRIx64>"
+msgstr "неправилно отместване на откъс/и %<PRIx64> и %<PRIx64>"
+
+#: chunk-format.c:129
+#, c-format
+msgid "duplicate chunk ID %<PRIx32> found"
+msgstr "повтарящ се идентификатор на откъс %<PRIx32>"
+
+#: chunk-format.c:143
+#, c-format
+msgid "final chunk has non-zero id %<PRIx32>"
+msgstr "ненулев идентификатор за краен откъс %<PRIx32>"
 
 #: color.c:329
 #, c-format
 msgid "invalid color value: %.*s"
 msgstr "неправилна стойност за цвят: %.*s"
 
-#: commit-graph.c:188 midx.c:47
+#: commit-graph.c:197 midx.c:46
 msgid "invalid hash version"
 msgstr "неправилна версия на контролна сума"
 
-#: commit-graph.c:246
+#: commit-graph.c:255
 msgid "commit-graph file is too small"
-msgstr "файлът с гра̀фа на подаванията е твърде малък"
+msgstr "файлът за гра̀фа с подаванията е твърде малък"
 
-#: commit-graph.c:311
+#: commit-graph.c:348
 #, c-format
 msgid "commit-graph signature %X does not match signature %X"
 msgstr "отпечатъкът на гра̀фа с подаванията %X не съвпада с %X"
 
-#: commit-graph.c:318
+#: commit-graph.c:355
 #, c-format
 msgid "commit-graph version %X does not match version %X"
 msgstr "версията на гра̀фа с подаванията %X не съвпада с %X"
 
-#: commit-graph.c:325
+#: commit-graph.c:362
 #, c-format
 msgid "commit-graph hash version %X does not match version %X"
 msgstr "версията на контролната сума на гра̀фа с подаванията %X не съвпада с %X"
 
-#: commit-graph.c:342
+#: commit-graph.c:379
 #, c-format
 msgid "commit-graph file is too small to hold %u chunks"
 msgstr "файлът с гра̀фа на подаванията е твърде малък, за да съдържа %u откъси"
 
-#: commit-graph.c:361
-#, c-format
-msgid "commit-graph improper chunk offset %08x%08x"
-msgstr "неправилно отместване на откъс: %08x%08x"
-
-#: commit-graph.c:433
-#, c-format
-msgid "commit-graph chunk id %08x appears multiple times"
-msgstr "откъсът %08x се явява многократно"
-
-#: commit-graph.c:499
+#: commit-graph.c:472
 msgid "commit-graph has no base graphs chunk"
 msgstr "базовият откъс липсва в гра̀фа с подаванията"
 
-#: commit-graph.c:509
+#: commit-graph.c:482
 msgid "commit-graph chain does not match"
 msgstr "веригата на гра̀фа с подаванията не съвпада"
 
-#: commit-graph.c:557
+#: commit-graph.c:530
 #, c-format
 msgid "invalid commit-graph chain: line '%s' not a hash"
 msgstr ""
 "грешка във веригата на гра̀фа с подаванията: ред „%s“ не е контролна сума"
 
-#: commit-graph.c:581
+#: commit-graph.c:554
 msgid "unable to find all commit-graph files"
 msgstr "някои файлове на гра̀фа с подаванията не могат да бъдат открити"
 
-#: commit-graph.c:721 commit-graph.c:785
+#: commit-graph.c:735 commit-graph.c:772
 msgid "invalid commit position. commit-graph is likely corrupt"
 msgstr ""
 "неправилна позиция на подаването.  Вероятно графът с подаванията е повреден"
 
-#: commit-graph.c:742
+#: commit-graph.c:756
 #, c-format
 msgid "could not find commit %s"
 msgstr "подаването „%s“ не може да бъде открито"
 
-#: commit-graph.c:1036 builtin/am.c:1292
+#: commit-graph.c:789
+msgid "commit-graph requires overflow generation data but has none"
+msgstr ""
+"графът с подаванията изисква генериране на данни за отместването, но такива "
+"липсват"
+
+#: commit-graph.c:1065 builtin/am.c:1292
 #, c-format
 msgid "unable to parse commit %s"
 msgstr "подаването не може да бъде анализирано: %s"
 
-#: commit-graph.c:1252 builtin/pack-objects.c:2864
+#: commit-graph.c:1327 builtin/pack-objects.c:2872
 #, c-format
 msgid "unable to get type of object %s"
 msgstr "видът на обекта „%s“ не може да бъде определен"
 
-#: commit-graph.c:1283
+#: commit-graph.c:1358
 msgid "Loading known commits in commit graph"
 msgstr "Зареждане на познатите подавания в гра̀фа с подаванията"
 
-#: commit-graph.c:1300
+#: commit-graph.c:1375
 msgid "Expanding reachable commits in commit graph"
 msgstr "Разширяване на достижимите подавания в гра̀фа"
 
-#: commit-graph.c:1320
+#: commit-graph.c:1395
 msgid "Clearing commit marks in commit graph"
 msgstr "Изчистване на отбелязванията на подаванията в гра̀фа с подаванията"
 
-#: commit-graph.c:1339
+#: commit-graph.c:1414
+msgid "Computing commit graph topological levels"
+msgstr "Изчисляване на топологичните нива в гра̀фа с подаванията"
+
+#: commit-graph.c:1467
 msgid "Computing commit graph generation numbers"
 msgstr "Изчисляване на номерата на поколенията в гра̀фа с подаванията"
 
-#: commit-graph.c:1406
+#: commit-graph.c:1548
 msgid "Computing commit changed paths Bloom filters"
 msgstr "Изчисляване на филтрите на Блум на пътищата с промяна при подаването"
 
-#: commit-graph.c:1483
+#: commit-graph.c:1625
 msgid "Collecting referenced commits"
 msgstr "Събиране на свързаните подавания"
 
-#: commit-graph.c:1508
+#: commit-graph.c:1650
 #, c-format
 msgid "Finding commits for commit graph in %d pack"
 msgid_plural "Finding commits for commit graph in %d packs"
 msgstr[0] "Откриване на подаванията в гра̀фа в %d пакетен файл"
 msgstr[1] "Откриване на подаванията в гра̀фа в %d пакетни файла"
 
-#: commit-graph.c:1521
+#: commit-graph.c:1663
 #, c-format
 msgid "error adding pack %s"
 msgstr "грешка при добавяне на пакетен файл „%s“"
 
-#: commit-graph.c:1525
+#: commit-graph.c:1667
 #, c-format
 msgid "error opening index for %s"
 msgstr "грешка при отваряне на индекса на „%s“"
 
-#: commit-graph.c:1562
+#: commit-graph.c:1704
 msgid "Finding commits for commit graph among packed objects"
 msgstr "Откриване на подаванията в гра̀фа измежду пакетираните обекти"
 
-#: commit-graph.c:1580
+#: commit-graph.c:1722
 msgid "Finding extra edges in commit graph"
 msgstr "Откриване на още върхове в гра̀фа с подаванията"
 
-#: commit-graph.c:1628
+#: commit-graph.c:1771
 msgid "failed to write correct number of base graph ids"
 msgstr "правилният брой на базовите идентификатори не може да се запише"
 
-#: commit-graph.c:1670 midx.c:819
+#: commit-graph.c:1802 midx.c:794
 #, c-format
 msgid "unable to create leading directories of %s"
 msgstr "родителските директории на „%s“ не могат да бъдат създадени"
 
-#: commit-graph.c:1683
+#: commit-graph.c:1815
 msgid "unable to create temporary graph layer"
 msgstr "не може да бъде създаден временен слой за гра̀фа с подаванията"
 
-#: commit-graph.c:1688
+#: commit-graph.c:1820
 #, c-format
 msgid "unable to adjust shared permissions for '%s'"
 msgstr "правата за споделен достъп до „%s“ не могат да бъдат зададени"
 
-#: commit-graph.c:1758
+#: commit-graph.c:1879
 #, c-format
 msgid "Writing out commit graph in %d pass"
 msgid_plural "Writing out commit graph in %d passes"
 msgstr[0] "Запазване на гра̀фа с подаванията в %d пас"
 msgstr[1] "Запазване на гра̀фа с подаванията в %d паса"
 
-#: commit-graph.c:1803
+#: commit-graph.c:1915
 msgid "unable to open commit-graph chain file"
 msgstr "файлът с веригата на гра̀фа с подаванията не може да се отвори"
 
-#: commit-graph.c:1819
+#: commit-graph.c:1931
 msgid "failed to rename base commit-graph file"
 msgstr "основният файл на гра̀фа с подаванията не може да бъде преименуван"
 
-#: commit-graph.c:1839
+#: commit-graph.c:1951
 msgid "failed to rename temporary commit-graph file"
 msgstr "временният файл на гра̀фа с подаванията не може да бъде преименуван"
 
-#: commit-graph.c:1965
+#: commit-graph.c:2084
 msgid "Scanning merged commits"
 msgstr "Търсене на подаванията със сливания"
 
-#: commit-graph.c:2009
+#: commit-graph.c:2128
 msgid "Merging commit-graph"
 msgstr "Сливане на гра̀фа с подаванията"
 
-#: commit-graph.c:2115
+#: commit-graph.c:2235
 msgid "attempting to write a commit-graph, but 'core.commitGraph' is disabled"
 msgstr ""
 "опит за запис на гра̀фа с подаванията, но настройката „core.commitGraph“ е "
 "изключена"
 
-#: commit-graph.c:2214
+#: commit-graph.c:2342
 msgid "too many commits to write graph"
 msgstr "прекалено много подавания за записване на гра̀фа"
 
-#: commit-graph.c:2307
+#: commit-graph.c:2440
 msgid "the commit-graph file has incorrect checksum and is likely corrupt"
 msgstr "графът с подаванията е с грешна сума за проверка — вероятно е повреден"
 
-#: commit-graph.c:2317
+#: commit-graph.c:2450
 #, c-format
 msgid "commit-graph has incorrect OID order: %s then %s"
 msgstr ""
 "неправилна подредба на обектите по идентификатор в гра̀фа с подаванията: „%s“ "
 "е преди „%s“, а не трябва"
 
-#: commit-graph.c:2327 commit-graph.c:2342
+#: commit-graph.c:2460 commit-graph.c:2475
 #, c-format
 msgid "commit-graph has incorrect fanout value: fanout[%d] = %u != %u"
 msgstr ""
 "неправилна стойност за откъс в гра̀фа с подаванията: fanout[%d] = %u, а "
 "трябва да е %u"
 
-#: commit-graph.c:2334
+#: commit-graph.c:2467
 #, c-format
 msgid "failed to parse commit %s from commit-graph"
 msgstr "подаване „%s“ в гра̀фа с подаванията не може да се анализира"
 
-#: commit-graph.c:2352
+#: commit-graph.c:2485
 msgid "Verifying commits in commit graph"
 msgstr "Проверка на подаванията в гра̀фа"
 
-#: commit-graph.c:2367
+#: commit-graph.c:2500
 #, c-format
 msgid "failed to parse commit %s from object database for commit-graph"
 msgstr ""
 "подаване „%s“ в базата от данни към гра̀фа с подаванията не може да се "
 "анализира"
 
-#: commit-graph.c:2374
+#: commit-graph.c:2507
 #, c-format
 msgid "root tree OID for commit %s in commit-graph is %s != %s"
 msgstr ""
 "идентификаторът на обект за кореновото дърво за подаване „%s“ в гра̀фа с "
 "подаванията е „%s“, а трябва да е „%s“"
 
-#: commit-graph.c:2384
+#: commit-graph.c:2517
 #, c-format
 msgid "commit-graph parent list for commit %s is too long"
 msgstr "списъкът с родители на „%s“ в гра̀фа с подаванията е прекалено дълъг"
 
-#: commit-graph.c:2393
+#: commit-graph.c:2526
 #, c-format
 msgid "commit-graph parent for %s is %s != %s"
 msgstr "родителят на „%s“ в гра̀фа с подаванията е „%s“, а трябва да е „%s“"
 
-#: commit-graph.c:2407
+#: commit-graph.c:2540
 #, c-format
 msgid "commit-graph parent list for commit %s terminates early"
 msgstr "списъкът с родители на „%s“ в гра̀фа с подаванията е прекалено къс"
 
-#: commit-graph.c:2412
+#: commit-graph.c:2545
 #, c-format
 msgid ""
 "commit-graph has generation number zero for commit %s, but non-zero elsewhere"
@@ -2541,7 +2560,7 @@ msgstr ""
 "номерът на поколението на подаване „%s“ в гра̀фа с подаванията е 0, а другаде "
 "не е"
 
-#: commit-graph.c:2416
+#: commit-graph.c:2549
 #, c-format
 msgid ""
 "commit-graph has non-zero generation number for commit %s, but zero elsewhere"
@@ -2549,21 +2568,21 @@ msgstr ""
 "номерът на поколението на подаване „%s“ в гра̀фа с подаванията не е 0, а "
 "другаде е"
 
-#: commit-graph.c:2432
+#: commit-graph.c:2566
 #, c-format
-msgid "commit-graph generation for commit %s is %u != %u"
+msgid "commit-graph generation for commit %s is %<PRIuMAX> < %<PRIuMAX>"
 msgstr ""
-"номерът на поколението на подаване „%s“ в гра̀фа с подаванията е %u, а "
-"другаде е %u"
+"номерът на поколението на подаване „%s“ в гра̀фа с подаванията е %<PRIuMAX> < "
+"%<PRIuMAX>"
 
-#: commit-graph.c:2438
+#: commit-graph.c:2572
 #, c-format
 msgid "commit date for commit %s in commit-graph is %<PRIuMAX> != %<PRIuMAX>"
 msgstr ""
 "датата на подаване на „%s“ в гра̀фа с подаванията е %<PRIuMAX>, а трябва да е "
 "%<PRIuMAX>"
 
-#: commit.c:52 sequencer.c:2879 builtin/am.c:359 builtin/am.c:403
+#: commit.c:52 sequencer.c:2887 builtin/am.c:359 builtin/am.c:403
 #: builtin/am.c:1371 builtin/am.c:2018 builtin/replace.c:457
 #, c-format
 msgid "could not parse %s"
@@ -2597,29 +2616,29 @@ msgstr ""
 "\n"
 "    git config advice.graftFileDeprecated false"
 
-#: commit.c:1172
+#: commit.c:1223
 #, c-format
 msgid "Commit %s has an untrusted GPG signature, allegedly by %s."
 msgstr ""
 "Подаването „%s“ е с недоверен подпис от GPG, който твърди, че е на „%s“."
 
-#: commit.c:1176
+#: commit.c:1227
 #, c-format
 msgid "Commit %s has a bad GPG signature allegedly by %s."
 msgstr ""
 "Подаването „%s“ е с неправилен подпис от GPG, който твърди, че е на „%s“."
 
-#: commit.c:1179
+#: commit.c:1230
 #, c-format
 msgid "Commit %s does not have a GPG signature."
 msgstr "Подаването „%s“ е без подпис от GPG."
 
-#: commit.c:1182
+#: commit.c:1233
 #, c-format
 msgid "Commit %s has a good GPG signature by %s\n"
 msgstr "Подаването „%s“ е с коректен подпис от GPG на „%s“.\n"
 
-#: commit.c:1436
+#: commit.c:1487
 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"
@@ -2633,7 +2652,7 @@ msgstr ""
 msgid "memory exhausted"
 msgstr "паметта свърши"
 
-#: config.c:125
+#: config.c:126
 #, c-format
 msgid ""
 "exceeded maximum include depth (%d) while including\n"
@@ -2648,162 +2667,206 @@ msgstr ""
 "    %s\n"
 "Това може да се дължи на зацикляне при вмъкването."
 
-#: config.c:141
+#: config.c:142
 #, c-format
 msgid "could not expand include path '%s'"
 msgstr "пътят за вмъкване „%s“не може да бъде разширен"
 
-#: config.c:152
+#: config.c:153
 msgid "relative config includes must come from files"
 msgstr "относителните вмъквания на конфигурации трябва да идват от файлове"
 
-#: config.c:198
+#: config.c:199
 msgid "relative config include conditionals must come from files"
 msgstr "относителните условни изрази за вмъкване трябва да идват от файлове"
 
-#: config.c:378
+#: config.c:396
+#, c-format
+msgid "invalid config format: %s"
+msgstr "неправилен формат на настройка: %s"
+
+#: config.c:400
+#, c-format
+msgid "missing environment variable name for configuration '%.*s'"
+msgstr "липсва име на променлива на средата за настройката „%.*s“"
+
+#: config.c:405
+#, c-format
+msgid "missing environment variable '%s' for configuration '%.*s'"
+msgstr "липсва променлива на средата „%s“ за настройката „%.*s“"
+
+#: config.c:442
 #, c-format
 msgid "key does not contain a section: %s"
 msgstr "ключът не съдържа раздел: „%s“"
 
-#: config.c:384
+#: config.c:448
 #, c-format
 msgid "key does not contain variable name: %s"
 msgstr "ключът не съдържа име на променлива: „%s“"
 
-#: config.c:408 sequencer.c:2580
+#: config.c:472 sequencer.c:2588
 #, c-format
 msgid "invalid key: %s"
 msgstr "неправилен ключ: „%s“"
 
-#: config.c:414
+#: config.c:478
 #, c-format
 msgid "invalid key (newline): %s"
 msgstr "неправилен ключ (нов ред): „%s“"
 
-#: config.c:450 config.c:462
+#: config.c:511
+msgid "empty config key"
+msgstr "празен ключ за настройка"
+
+#: config.c:529 config.c:541
 #, c-format
 msgid "bogus config parameter: %s"
 msgstr "неправилен конфигурационен параметър: „%s“"
 
-#: config.c:497
+#: config.c:555 config.c:572 config.c:579 config.c:588
 #, c-format
 msgid "bogus format in %s"
 msgstr "неправилен формат в „%s“"
 
-#: config.c:836
+#: config.c:622
+#, c-format
+msgid "bogus count in %s"
+msgstr "неправилен брой в „%s“"
+
+#: config.c:626
+#, c-format
+msgid "too many entries in %s"
+msgstr "прекалено много записи в „%s“"
+
+#: config.c:636
+#, c-format
+msgid "missing config key %s"
+msgstr "ключът за настройка „%s“ липсва"
+
+#: config.c:644
+#, c-format
+msgid "missing config value %s"
+msgstr "стойността за настройка „%s“ липсва"
+
+#: config.c:995
 #, c-format
 msgid "bad config line %d in blob %s"
 msgstr "неправилен ред за настройки %d в BLOB „%s“"
 
-#: config.c:840
+#: config.c:999
 #, c-format
 msgid "bad config line %d in file %s"
 msgstr "неправилен ред за настройки %d във файла „%s“"
 
-#: config.c:844
+#: config.c:1003
 #, c-format
 msgid "bad config line %d in standard input"
 msgstr "неправилен ред за настройки %d на стандартния вход"
 
-#: config.c:848
+#: config.c:1007
 #, c-format
 msgid "bad config line %d in submodule-blob %s"
 msgstr "неправилен ред за настройки %d в BLOB за подмодул „%s“"
 
-#: config.c:852
+#: config.c:1011
 #, c-format
 msgid "bad config line %d in command line %s"
 msgstr "неправилен ред за настройки %d на командния ред „%s“"
 
-#: config.c:856
+#: config.c:1015
 #, c-format
 msgid "bad config line %d in %s"
 msgstr "неправилен ред за настройки %d в „%s“"
 
-#: config.c:993
+#: config.c:1152
 msgid "out of range"
 msgstr "извън диапазона"
 
-#: config.c:993
+#: config.c:1152
 msgid "invalid unit"
 msgstr "неправилна мерна единица"
 
-#: config.c:994
+#: config.c:1153
 #, c-format
 msgid "bad numeric config value '%s' for '%s': %s"
 msgstr "неправилна числова стойност „%s“ за „%s“: %s"
 
-#: config.c:1013
+#: config.c:1163
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in blob %s: %s"
 msgstr "неправилна числова стойност „%s“ за „%s“ в BLOB „%s“: %s"
 
-#: config.c:1016
+#: config.c:1166
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in file %s: %s"
 msgstr "неправилна числова стойност „%s“ за „%s“ във файла „%s“: %s"
 
-#: config.c:1019
+#: config.c:1169
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in standard input: %s"
 msgstr "неправилна числова стойност „%s“ за „%s“ на стандартния вход: %s"
 
-#: config.c:1022
+#: config.c:1172
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in submodule-blob %s: %s"
 msgstr "неправилна числова стойност „%s“ за „%s“ в BLOB от подмодул „%s“: %s"
 
-#: config.c:1025
+#: config.c:1175
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in command line %s: %s"
 msgstr "неправилна числова стойност „%s“ за „%s“ на командния ред „%s“: %s"
 
-#: config.c:1028
+#: config.c:1178
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in %s: %s"
 msgstr "неправилна числова стойност „%s“ за „%s“ в %s: %s"
 
-#: config.c:1123
+#: config.c:1194
+#, c-format
+msgid "bad boolean config value '%s' for '%s'"
+msgstr "неправилна булева стойност „%s“ за „%s“"
+
+#: config.c:1289
 #, c-format
 msgid "failed to expand user dir in: '%s'"
 msgstr "домашната папка на потребителя не може да бъде открита: „%s“"
 
-#: config.c:1132
+#: config.c:1298
 #, c-format
 msgid "'%s' for '%s' is not a valid timestamp"
 msgstr "„%s“ не е правилна стойност за време за „%s“"
 
-#: config.c:1223
+#: config.c:1391
 #, c-format
 msgid "abbrev length out of range: %d"
 msgstr "дължината на съкращаване е извън интервала ([4; 40]): %d"
 
-#: config.c:1237 config.c:1248
+#: config.c:1405 config.c:1416
 #, c-format
 msgid "bad zlib compression level %d"
 msgstr "неправилно ниво на компресиране: %d"
 
-#: config.c:1340
+#: config.c:1508
 msgid "core.commentChar should only be one character"
 msgstr "настройката „core.commentChar“ трябва да е само един знак"
 
-#: config.c:1373
+#: config.c:1541
 #, c-format
 msgid "invalid mode for object creation: %s"
 msgstr "неправилен режим за създаването на обекти: %s"
 
-#: config.c:1445
+#: config.c:1613
 #, c-format
 msgid "malformed value for %s"
 msgstr "неправилна стойност за „%s“"
 
-#: config.c:1471
+#: config.c:1639
 #, c-format
 msgid "malformed value for %s: %s"
 msgstr "неправилна стойност за „%s“: „%s“"
 
-#: config.c:1472
+#: config.c:1640
 msgid "must be one of nothing, matching, simple, upstream or current"
 msgstr ""
 "трябва да е една от следните стойности: „nothing“ (без изтласкване при липса "
@@ -2811,132 +2874,132 @@ msgstr ""
 "„simple“ (клонът със същото име, от който се издърпва), „upstream“ (клонът, "
 "от който се издърпва) или „current“ (клонът със същото име)"
 
-#: config.c:1533 builtin/pack-objects.c:3649
+#: config.c:1701 builtin/pack-objects.c:3666
 #, c-format
 msgid "bad pack compression level %d"
 msgstr "неправилно ниво на компресиране при пакетиране: %d"
 
-#: config.c:1655
+#: config.c:1823
 #, c-format
 msgid "unable to load config blob object '%s'"
 msgstr "обектът-BLOB „%s“ с конфигурации не може да се зареди"
 
-#: config.c:1658
+#: config.c:1826
 #, c-format
 msgid "reference '%s' does not point to a blob"
 msgstr "указателят „%s“ не сочи към обект-BLOB"
 
-#: config.c:1675
+#: config.c:1843
 #, c-format
 msgid "unable to resolve config blob '%s'"
 msgstr "обектът-BLOB „%s“ с конфигурации не може да бъде открит"
 
-#: config.c:1705
+#: config.c:1873
 #, c-format
 msgid "failed to parse %s"
 msgstr "„%s“ не може да бъде анализиран"
 
-#: config.c:1759
+#: config.c:1927
 msgid "unable to parse command-line config"
 msgstr "неправилни настройки от командния ред"
 
-#: config.c:2122
+#: config.c:2290
 msgid "unknown error occurred while reading the configuration files"
 msgstr "неочаквана грешка при изчитането на конфигурационните файлове"
 
-#: config.c:2296
+#: config.c:2464
 #, c-format
 msgid "Invalid %s: '%s'"
 msgstr "Неправилен %s: „%s“"
 
-#: config.c:2341
+#: config.c:2509
 #, c-format
 msgid "splitIndex.maxPercentChange value '%d' should be between 0 and 100"
 msgstr ""
 "стойността на „splitIndex.maxPercentChange“ трябва да е между 1 и 100, а не "
 "%d"
 
-#: config.c:2387
+#: config.c:2555
 #, c-format
 msgid "unable to parse '%s' from command-line config"
 msgstr "неразпозната стойност „%s“ от командния ред"
 
-#: config.c:2389
+#: config.c:2557
 #, c-format
 msgid "bad config variable '%s' in file '%s' at line %d"
 msgstr "неправилна настройка „%s“ във файла „%s“ на ред №%d"
 
-#: config.c:2473
+#: config.c:2641
 #, c-format
 msgid "invalid section name '%s'"
 msgstr "неправилно име на раздел: „%s“"
 
-#: config.c:2505
+#: config.c:2673
 #, c-format
 msgid "%s has multiple values"
 msgstr "зададени са няколко стойности за „%s“"
 
-#: config.c:2534
+#: config.c:2702
 #, c-format
 msgid "failed to write new configuration file %s"
 msgstr "новият конфигурационен файл „%s“ не може да бъде запазен"
 
-#: config.c:2786 config.c:3112
+#: config.c:2954 config.c:3280
 #, c-format
 msgid "could not lock config file %s"
 msgstr "конфигурационният файл „%s“ не може да бъде заключен"
 
-#: config.c:2797
+#: config.c:2965
 #, c-format
 msgid "opening %s"
 msgstr "отваряне на „%s“"
 
-#: config.c:2834 builtin/config.c:361
+#: config.c:3002 builtin/config.c:361
 #, c-format
 msgid "invalid pattern: %s"
 msgstr "неправилен шаблон: %s"
 
-#: config.c:2859
+#: config.c:3027
 #, c-format
 msgid "invalid config file %s"
 msgstr "неправилен конфигурационен файл: „%s“"
 
-#: config.c:2872 config.c:3125
+#: config.c:3040 config.c:3293
 #, c-format
 msgid "fstat on %s failed"
 msgstr "неуспешно изпълнение на „fstat“ върху „%s“"
 
-#: config.c:2883
+#: config.c:3051
 #, c-format
 msgid "unable to mmap '%s'"
 msgstr "неуспешно изпълнение на „mmap“ върху „%s“"
 
-#: config.c:2892 config.c:3130
+#: config.c:3060 config.c:3298
 #, c-format
 msgid "chmod on %s failed"
 msgstr "неуспешна смяна на права с „chmod“ върху „%s“"
 
-#: config.c:2977 config.c:3227
+#: config.c:3145 config.c:3395
 #, c-format
 msgid "could not write config file %s"
 msgstr "конфигурационният файл „%s“ не може да бъде записан"
 
-#: config.c:3011
+#: config.c:3179
 #, c-format
 msgid "could not set '%s' to '%s'"
 msgstr "„%s“ не може да се зададе да е „%s“"
 
-#: config.c:3013 builtin/remote.c:657 builtin/remote.c:855 builtin/remote.c:863
+#: config.c:3181 builtin/remote.c:657 builtin/remote.c:855 builtin/remote.c:863
 #, c-format
 msgid "could not unset '%s'"
 msgstr "„%s“ не може да се премахне"
 
-#: config.c:3103
+#: config.c:3271
 #, c-format
 msgid "invalid section name: %s"
 msgstr "неправилно име на раздел: %s"
 
-#: config.c:3270
+#: config.c:3438
 #, c-format
 msgid "missing value for '%s'"
 msgstr "липсва стойност за „%s“"
@@ -2999,45 +3062,45 @@ msgstr "неправилен пакет"
 msgid "protocol error: unexpected '%s'"
 msgstr "протоколна грешка: неочаквано „%s“"
 
-#: connect.c:473
+#: connect.c:497
 #, c-format
 msgid "unknown object format '%s' specified by server"
 msgstr "сървърът указа непознат формат на обект: „%s“"
 
-#: connect.c:500
+#: connect.c:526
 #, c-format
 msgid "invalid ls-refs response: %s"
 msgstr "неправилен отговор на „ls-refs“: „%s“"
 
-#: connect.c:504
+#: connect.c:530
 msgid "expected flush after ref listing"
 msgstr "след изброяването на указателите се очаква изчистване на буферите"
 
-#: connect.c:507
+#: connect.c:533
 msgid "expected response end packet after ref listing"
 msgstr "след изброяването на указателите се очаква пакет за край"
 
-#: connect.c:640
+#: connect.c:666
 #, c-format
 msgid "protocol '%s' is not supported"
 msgstr "протокол „%s“ не се поддържа"
 
-#: connect.c:691
+#: connect.c:717
 msgid "unable to set SO_KEEPALIVE on socket"
 msgstr "неуспешно задаване на „SO_KEEPALIVE“ на гнездо"
 
-#: connect.c:731 connect.c:794
+#: connect.c:757 connect.c:820
 #, c-format
 msgid "Looking up %s ... "
 msgstr "Търсене на „%s“… "
 
-#: connect.c:735
+#: connect.c:761
 #, c-format
 msgid "unable to look up %s (port %s) (%s)"
 msgstr "„%s“ (порт %s) не може да се открие („%s“)"
 
 #. TRANSLATORS: this is the end of "Looking up %s ... "
-#: connect.c:739 connect.c:810
+#: connect.c:765 connect.c:836
 #, c-format
 msgid ""
 "done.\n"
@@ -3046,7 +3109,7 @@ msgstr ""
 "готово.\n"
 "Свързване към „%s“ (порт %s)…"
 
-#: connect.c:761 connect.c:838
+#: connect.c:787 connect.c:864
 #, c-format
 msgid ""
 "unable to connect to %s:\n"
@@ -3056,65 +3119,71 @@ msgstr ""
 "%s"
 
 #. TRANSLATORS: this is the end of "Connecting to %s (port %s) ... "
-#: connect.c:767 connect.c:844
+#: connect.c:793 connect.c:870
 msgid "done."
 msgstr "действието завърши."
 
-#: connect.c:798
+#: connect.c:824
 #, c-format
 msgid "unable to look up %s (%s)"
 msgstr "„%s“ не може да се открие (%s)"
 
-#: connect.c:804
+#: connect.c:830
 #, c-format
 msgid "unknown port %s"
 msgstr "непознат порт „%s“"
 
-#: connect.c:941 connect.c:1271
+#: connect.c:967 connect.c:1299
 #, c-format
 msgid "strange hostname '%s' blocked"
 msgstr "необичайното име на хост „%s“ е блокирано"
 
-#: connect.c:943
+#: connect.c:969
 #, c-format
 msgid "strange port '%s' blocked"
 msgstr "необичайният порт „%s“ е блокиран"
 
-#: connect.c:953
+#: connect.c:979
 #, c-format
 msgid "cannot start proxy %s"
 msgstr "посредникът „%s“ не може да се стартира"
 
-#: connect.c:1024
+#: connect.c:1050
 msgid "no path specified; see 'git help pull' for valid url syntax"
 msgstr ""
 "не е указан път. Проверете синтаксиса с командата:\n"
 "\n"
 "    git help pull"
 
-#: connect.c:1219
+#: connect.c:1190
+msgid "newline is forbidden in git:// hosts and repo paths"
+msgstr ""
+"знакът за нов ред не е позволен в адресите и в пътищата до хранилищата "
+"„git://“"
+
+#: connect.c:1247
 msgid "ssh variant 'simple' does not support -4"
 msgstr "вариантът за „ssh“ — „simple“ (опростен), не поддържа опцията „-4“"
 
-#: connect.c:1231
+#: connect.c:1259
 msgid "ssh variant 'simple' does not support -6"
 msgstr "вариантът за „ssh“ — „simple“ (опростен), не поддържа опцията „-6“"
 
-#: connect.c:1248
+#: connect.c:1276
 msgid "ssh variant 'simple' does not support setting port"
 msgstr ""
 "вариантът за „ssh“ — „simple“ (опростен), не поддържа задаването на порт"
 
-#: connect.c:1360
+#: connect.c:1388
 #, c-format
 msgid "strange pathname '%s' blocked"
 msgstr "необичайният път „%s“ е блокиран"
 
-#: connect.c:1408
+#: connect.c:1436
 msgid "unable to fork"
 msgstr "неуспешно създаване на процес"
 
-#: connected.c:108 builtin/fsck.c:209 builtin/prune.c:45
+#: connected.c:108 builtin/fsck.c:191 builtin/prune.c:45
 msgid "Checking connectivity"
 msgstr "Проверка на свързаността"
 
@@ -3389,6 +3458,11 @@ msgstr ""
 msgid "Marked %d islands, done.\n"
 msgstr "Отбелязани са %d групи, работата приключи.\n"
 
+#: diff-merges.c:70
+#, c-format
+msgid "unknown value for --diff-merges: %s"
+msgstr "непозната стойност за опцията „--diff-merges“: „%s“"
+
 #: diff-lib.c:534
 msgid "--merge-base does not work with ranges"
 msgstr "опцията „--merge-base“ не работи с диапазони"
@@ -3483,32 +3557,32 @@ msgid "external diff died, stopping at %s"
 msgstr ""
 "външната програма за разлики завърши неуспешно.  Спиране на работата при „%s“"
 
-#: diff.c:4625
+#: diff.c:4628
 msgid "--name-only, --name-status, --check and -s are mutually exclusive"
 msgstr ""
 "Опциите „--name-only“, „--name-status“, „--check“ и „-s“ са несъвместими "
 "една с друга"
 
-#: diff.c:4628
+#: diff.c:4631
 msgid "-G, -S and --find-object are mutually exclusive"
 msgstr "Опциите „-G“, „-S“ и „--find-object“ са несъвместими една с друга"
 
-#: diff.c:4707
+#: diff.c:4710
 msgid "--follow requires exactly one pathspec"
 msgstr "Опцията „--follow“ изисква точно един път"
 
-#: diff.c:4755
+#: diff.c:4758
 #, c-format
 msgid "invalid --stat value: %s"
 msgstr "неправилна стойност за „--stat“: %s"
 
-#: diff.c:4760 diff.c:4765 diff.c:4770 diff.c:4775 diff.c:5303
+#: diff.c:4763 diff.c:4768 diff.c:4773 diff.c:4778 diff.c:5306
 #: parse-options.c:197 parse-options.c:201 builtin/commit-graph.c:180
 #, c-format
 msgid "%s expects a numerical value"
 msgstr "опцията „%s“ очаква число за аргумент"
 
-#: diff.c:4792
+#: diff.c:4795
 #, c-format
 msgid ""
 "Failed to parse --dirstat/-X option parameter:\n"
@@ -3517,44 +3591,44 @@ msgstr ""
 "Неразпознат параметър към опцията „--dirstat/-X“:\n"
 "%s"
 
-#: diff.c:4877
+#: diff.c:4880
 #, c-format
 msgid "unknown change class '%c' in --diff-filter=%s"
 msgstr "непознат вид промяна: „%c“ в „--diff-filter=%s“"
 
-#: diff.c:4901
+#: diff.c:4904
 #, c-format
 msgid "unknown value after ws-error-highlight=%.*s"
 msgstr "непозната стойност след „ws-error-highlight=%.*s“"
 
-#: diff.c:4915
+#: diff.c:4918
 #, c-format
 msgid "unable to resolve '%s'"
 msgstr "„%s“ не може да се открие"
 
-#: diff.c:4965 diff.c:4971
+#: diff.c:4968 diff.c:4974
 #, c-format
 msgid "%s expects <n>/<m> form"
 msgstr ""
 "опцията „%s“ изисква стойности за МИНИМАЛЕН_%%_ПРОМЯНА_ЗА_ИЗТОЧНИК_/"
 "МАКСИМАЛЕН_%%_ПРОМЯНА_ЗА_ЗАМЯНА от"
 
-#: diff.c:4983
+#: diff.c:4986
 #, c-format
 msgid "%s expects a character, got '%s'"
 msgstr "опцията „%s“ изисква знак, а не: „%s“"
 
-#: diff.c:5004
+#: diff.c:5007
 #, c-format
 msgid "bad --color-moved argument: %s"
 msgstr "неправилен аргумент за „--color-moved“: „%s“"
 
-#: diff.c:5023
+#: diff.c:5026
 #, c-format
 msgid "invalid mode '%s' in --color-moved-ws"
 msgstr "неправилен режим „%s“ за „ --color-moved-ws“"
 
-#: diff.c:5063
+#: diff.c:5066
 msgid ""
 "option diff-algorithm accepts \"myers\", \"minimal\", \"patience\" and "
 "\"histogram\""
@@ -3563,158 +3637,158 @@ msgstr ""
 "Майерс), „minimal“ (минимизиране на разликите), „patience“ (пасианс) и "
 "„histogram“ (хистограмен)"
 
-#: diff.c:5099 diff.c:5119
+#: diff.c:5102 diff.c:5122
 #, c-format
 msgid "invalid argument to %s"
 msgstr "неправилен аргумент към „%s“"
 
-#: diff.c:5223
+#: diff.c:5226
 #, c-format
 msgid "invalid regex given to -I: '%s'"
 msgstr "неправилен регулярен израз подаден към „-I“: „%s“"
 
-#: diff.c:5272
+#: diff.c:5275
 #, c-format
 msgid "failed to parse --submodule option parameter: '%s'"
 msgstr "неразпознат параметър към опцията „--submodule“: „%s“"
 
-#: diff.c:5328
+#: diff.c:5331
 #, c-format
 msgid "bad --word-diff argument: %s"
 msgstr "неправилен аргумент към „--word-diff“: „%s“"
 
-#: diff.c:5351
+#: diff.c:5367
 msgid "Diff output format options"
 msgstr "Формат на изхода за разликите"
 
-#: diff.c:5353 diff.c:5359
+#: diff.c:5369 diff.c:5375
 msgid "generate patch"
 msgstr "създаване на кръпки"
 
-#: diff.c:5356 builtin/log.c:178
+#: diff.c:5372 builtin/log.c:179
 msgid "suppress diff output"
 msgstr "без извеждане на разликите"
 
-#: diff.c:5361 diff.c:5475 diff.c:5482
+#: diff.c:5377 diff.c:5491 diff.c:5498
 msgid "<n>"
 msgstr "БРОЙ"
 
-#: diff.c:5362 diff.c:5365
+#: diff.c:5378 diff.c:5381
 msgid "generate diffs with <n> lines context"
 msgstr "файловете с разлики да са с контекст с такъв БРОЙ редове"
 
-#: diff.c:5367
+#: diff.c:5383
 msgid "generate the diff in raw format"
 msgstr "файловете с разлики да са в суров формат"
 
-#: diff.c:5370
+#: diff.c:5386
 msgid "synonym for '-p --raw'"
 msgstr "псевдоним на „-p --stat“"
 
-#: diff.c:5374
+#: diff.c:5390
 msgid "synonym for '-p --stat'"
 msgstr "псевдоним на „-p --stat“"
 
-#: diff.c:5378
+#: diff.c:5394
 msgid "machine friendly --stat"
 msgstr "„--stat“ във формат за четене от програма"
 
-#: diff.c:5381
+#: diff.c:5397
 msgid "output only the last line of --stat"
 msgstr "извеждане само на последния ред на „--stat“"
 
-#: diff.c:5383 diff.c:5391
+#: diff.c:5399 diff.c:5407
 msgid "<param1,param2>..."
 msgstr "ПАРАМЕТЪР_1, ПАРАМЕТЪР_2, …"
 
-#: diff.c:5384
+#: diff.c:5400
 msgid ""
 "output the distribution of relative amount of changes for each sub-directory"
 msgstr "извеждане на разпределението на промените за всяка поддиректория"
 
-#: diff.c:5388
+#: diff.c:5404
 msgid "synonym for --dirstat=cumulative"
 msgstr "псевдоним на „--dirstat=cumulative“"
 
-#: diff.c:5392
+#: diff.c:5408
 msgid "synonym for --dirstat=files,param1,param2..."
 msgstr "псевдоним на „--dirstat=ФАЙЛОВЕ,ПАРАМЕТЪР_1,ПАРАМЕТЪР_2,…“"
 
-#: diff.c:5396
+#: diff.c:5412
 msgid "warn if changes introduce conflict markers or whitespace errors"
 msgstr ""
 "предупреждаване, ако промените водят до маркери за конфликт или грешки в "
 "празните знаци"
 
-#: diff.c:5399
+#: diff.c:5415
 msgid "condensed summary such as creations, renames and mode changes"
 msgstr ""
 "съкратено резюме на създадените, преименуваните и файловете с промяна на "
 "режима на достъп"
 
-#: diff.c:5402
+#: diff.c:5418
 msgid "show only names of changed files"
 msgstr "извеждане само на имената на променените файлове"
 
-#: diff.c:5405
+#: diff.c:5421
 msgid "show only names and status of changed files"
 msgstr "извеждане само на имената и статистиката за променените файлове"
 
-#: diff.c:5407
+#: diff.c:5423
 msgid "<width>[,<name-width>[,<count>]]"
 msgstr "ШИРОЧИНА[,ИМЕ-ШИРОЧИНА[,БРОЙ]]"
 
-#: diff.c:5408
+#: diff.c:5424
 msgid "generate diffstat"
 msgstr "извеждане на статистика за промените"
 
-#: diff.c:5410 diff.c:5413 diff.c:5416
+#: diff.c:5426 diff.c:5429 diff.c:5432
 msgid "<width>"
 msgstr "ШИРОЧИНА"
 
-#: diff.c:5411
+#: diff.c:5427
 msgid "generate diffstat with a given width"
 msgstr "статистика с такава ШИРОЧИНА за промените"
 
-#: diff.c:5414
+#: diff.c:5430
 msgid "generate diffstat with a given name width"
 msgstr "статистика за промените с такава ШИРОЧИНА на имената"
 
-#: diff.c:5417
+#: diff.c:5433
 msgid "generate diffstat with a given graph width"
 msgstr "статистика за промените с такава ШИРОЧИНА на гра̀фа"
 
-#: diff.c:5419
+#: diff.c:5435
 msgid "<count>"
 msgstr "БРОЙ"
 
-#: diff.c:5420
+#: diff.c:5436
 msgid "generate diffstat with limited lines"
 msgstr "ограничаване на БРОя на редовете в статистиката за промените"
 
-#: diff.c:5423
+#: diff.c:5439
 msgid "generate compact summary in diffstat"
 msgstr "кратко резюме в статистиката за промените"
 
-#: diff.c:5426
+#: diff.c:5442
 msgid "output a binary diff that can be applied"
 msgstr "извеждане на двоична разлика във вид за прилагане"
 
-#: diff.c:5429
+#: diff.c:5445
 msgid "show full pre- and post-image object names on the \"index\" lines"
 msgstr ""
 "показване на пълните имена на обекти в редовете за индекса при вариантите "
 "преди и след промяната"
 
-#: diff.c:5431
+#: diff.c:5447
 msgid "show colored diff"
 msgstr "разлики в цвят"
 
-#: diff.c:5432
+#: diff.c:5448
 msgid "<kind>"
 msgstr "ВИД"
 
-#: diff.c:5433
+#: diff.c:5449
 msgid ""
 "highlight whitespace errors in the 'context', 'old' or 'new' lines in the "
 "diff"
@@ -3722,7 +3796,7 @@ msgstr ""
 "грешките в празните знаци да се указват в редовете за контекста, вариантите "
 "преди и след разликата,"
 
-#: diff.c:5436
+#: diff.c:5452
 msgid ""
 "do not munge pathnames and use NULs as output field terminators in --raw or "
 "--numstat"
@@ -3730,261 +3804,261 @@ msgstr ""
 "без преименуване на пътищата.  Да се използват нулеви байтове за разделители "
 "на полета в изхода при ползване на опцията „--raw“ или „--numstat“"
 
-#: diff.c:5439 diff.c:5442 diff.c:5445 diff.c:5554
+#: diff.c:5455 diff.c:5458 diff.c:5461 diff.c:5570
 msgid "<prefix>"
 msgstr "ПРЕФИКС"
 
-#: diff.c:5440
+#: diff.c:5456
 msgid "show the given source prefix instead of \"a/\""
 msgstr "префикс вместо „a/“ за източник"
 
-#: diff.c:5443
+#: diff.c:5459
 msgid "show the given destination prefix instead of \"b/\""
 msgstr "префикс вместо „b/“ за цел"
 
-#: diff.c:5446
+#: diff.c:5462
 msgid "prepend an additional prefix to every line of output"
 msgstr "добавяне на допълнителен префикс за всеки ред на изхода"
 
-#: diff.c:5449
+#: diff.c:5465
 msgid "do not show any source or destination prefix"
 msgstr "без префикс за източника и целта"
 
-#: diff.c:5452
+#: diff.c:5468
 msgid "show context between diff hunks up to the specified number of lines"
 msgstr ""
 "извеждане на контекст между последователните парчета с разлики от указания "
 "БРОЙ редове"
 
-#: diff.c:5456 diff.c:5461 diff.c:5466
+#: diff.c:5472 diff.c:5477 diff.c:5482
 msgid "<char>"
 msgstr "ЗНАК"
 
-#: diff.c:5457
+#: diff.c:5473
 msgid "specify the character to indicate a new line instead of '+'"
 msgstr "знак вместо „+“ за нов вариант на ред"
 
-#: diff.c:5462
+#: diff.c:5478
 msgid "specify the character to indicate an old line instead of '-'"
 msgstr "знак вместо „-“ за стар вариант на ред"
 
-#: diff.c:5467
+#: diff.c:5483
 msgid "specify the character to indicate a context instead of ' '"
 msgstr "знак вместо „ “ за контекст"
 
-#: diff.c:5470
+#: diff.c:5486
 msgid "Diff rename options"
 msgstr "Настройки за разлики с преименуване"
 
-#: diff.c:5471
+#: diff.c:5487
 msgid "<n>[/<m>]"
 msgstr "МИНИМАЛЕН_%_ПРОМЯНА_ЗА_ИЗТОЧНИК[/МАКСИМАЛEН_%_ПРОМЯНА_ЗА_ЗАМЯНА]"
 
-#: diff.c:5472
+#: diff.c:5488
 msgid "break complete rewrite changes into pairs of delete and create"
 msgstr ""
 "заместване на пълните промени с последователност от изтриване и създаване"
 
-#: diff.c:5476
+#: diff.c:5492
 msgid "detect renames"
 msgstr "засичане на преименуванията"
 
-#: diff.c:5480
+#: diff.c:5496
 msgid "omit the preimage for deletes"
 msgstr "без предварителен вариант при изтриване"
 
-#: diff.c:5483
+#: diff.c:5499
 msgid "detect copies"
 msgstr "засичане на копиранията"
 
-#: diff.c:5487
+#: diff.c:5503
 msgid "use unmodified files as source to find copies"
 msgstr "търсене на копирано и от непроменените файлове"
 
-#: diff.c:5489
+#: diff.c:5505
 msgid "disable rename detection"
 msgstr "без търсене на преименувания"
 
-#: diff.c:5492
+#: diff.c:5508
 msgid "use empty blobs as rename source"
 msgstr "празни обекти като източник при преименувания"
 
-#: diff.c:5494
+#: diff.c:5510
 msgid "continue listing the history of a file beyond renames"
 msgstr ""
 "продължаване на извеждането на историята — без отрязването при преименувания "
 "на файл"
 
-#: diff.c:5497
+#: diff.c:5513
 msgid ""
 "prevent rename/copy detection if the number of rename/copy targets exceeds "
 "given limit"
 msgstr ""
 "без засичане на преименувания/копирания, ако броят им надвишава тази стойност"
 
-#: diff.c:5499
+#: diff.c:5515
 msgid "Diff algorithm options"
 msgstr "Опции към алгоритъма за разлики"
 
-#: diff.c:5501
+#: diff.c:5517
 msgid "produce the smallest possible diff"
 msgstr "търсене на възможно най-малка разлика"
 
-#: diff.c:5504
+#: diff.c:5520
 msgid "ignore whitespace when comparing lines"
 msgstr "без промени в празните знаци при сравняване на редове"
 
-#: diff.c:5507
+#: diff.c:5523
 msgid "ignore changes in amount of whitespace"
 msgstr "без промени в празните знаци"
 
-#: diff.c:5510
+#: diff.c:5526
 msgid "ignore changes in whitespace at EOL"
 msgstr "без промени в празните знаци в края на редовете"
 
-#: diff.c:5513
+#: diff.c:5529
 msgid "ignore carrier-return at the end of line"
 msgstr "без промени в знаците за край на ред"
 
-#: diff.c:5516
+#: diff.c:5532
 msgid "ignore changes whose lines are all blank"
 msgstr "без промени в редовете, които са изцяло от празни знаци"
 
-#: diff.c:5518 diff.c:5540 diff.c:5543 diff.c:5588
+#: diff.c:5534 diff.c:5556 diff.c:5559 diff.c:5604
 msgid "<regex>"
 msgstr "РЕГУЛЯРЕН_ИЗРАЗ"
 
-#: diff.c:5519
+#: diff.c:5535
 msgid "ignore changes whose all lines match <regex>"
 msgstr "без промени в редовете, които напасват РЕГУЛЯРНия_ИЗРАЗ"
 
-#: diff.c:5522
+#: diff.c:5538
 msgid "heuristic to shift diff hunk boundaries for easy reading"
 msgstr ""
 "евристика за преместване на границите на парчетата за улесняване на четенето"
 
-#: diff.c:5525
+#: diff.c:5541
 msgid "generate diff using the \"patience diff\" algorithm"
 msgstr "разлика чрез алгоритъм за подредба като пасианс"
 
-#: diff.c:5529
+#: diff.c:5545
 msgid "generate diff using the \"histogram diff\" algorithm"
 msgstr "разлика по хистограмния алгоритъм"
 
-#: diff.c:5531
+#: diff.c:5547
 msgid "<algorithm>"
 msgstr "АЛГОРИТЪМ"
 
-#: diff.c:5532
+#: diff.c:5548
 msgid "choose a diff algorithm"
 msgstr "избор на АЛГОРИТЪМа за разлики"
 
-#: diff.c:5534
+#: diff.c:5550
 msgid "<text>"
 msgstr "ТЕКСТ"
 
-#: diff.c:5535
+#: diff.c:5551
 msgid "generate diff using the \"anchored diff\" algorithm"
 msgstr "разлика чрез алгоритъма със закотвяне"
 
-#: diff.c:5537 diff.c:5546 diff.c:5549
+#: diff.c:5553 diff.c:5562 diff.c:5565
 msgid "<mode>"
 msgstr "РЕЖИМ"
 
-#: diff.c:5538
+#: diff.c:5554
 msgid "show word diff, using <mode> to delimit changed words"
 msgstr ""
 "разлика по думи, като се ползва този РЕЖИМ за отделянето на променените думи"
 
-#: diff.c:5541
+#: diff.c:5557
 msgid "use <regex> to decide what a word is"
 msgstr "РЕГУЛЯРЕН_ИЗРАЗ за разделяне по думи"
 
-#: diff.c:5544
+#: diff.c:5560
 msgid "equivalent to --word-diff=color --word-diff-regex=<regex>"
 msgstr "псевдоним на „--word-diff=color --word-diff-regex=РЕГУЛЯРЕН_ИЗРАЗ“"
 
-#: diff.c:5547
+#: diff.c:5563
 msgid "moved lines of code are colored differently"
 msgstr "различен цвят за извеждане на преместените редове"
 
-#: diff.c:5550
+#: diff.c:5566
 msgid "how white spaces are ignored in --color-moved"
 msgstr ""
 "режим за прескачането на празните знаци при задаването на „--color-moved“"
 
-#: diff.c:5553
+#: diff.c:5569
 msgid "Other diff options"
 msgstr "Други опции за разлики"
 
-#: diff.c:5555
+#: diff.c:5571
 msgid "when run from subdir, exclude changes outside and show relative paths"
 msgstr ""
 "при изпълнение от поддиректория да се пренебрегват разликите извън нея и да "
 "се ползват относителни пътища"
 
-#: diff.c:5559
+#: diff.c:5575
 msgid "treat all files as text"
 msgstr "обработка на всички файлове като текстови"
 
-#: diff.c:5561
+#: diff.c:5577
 msgid "swap two inputs, reverse the diff"
 msgstr "размяна на двата входа — обръщане на разликата"
 
-#: diff.c:5563
+#: diff.c:5579
 msgid "exit with 1 if there were differences, 0 otherwise"
 msgstr ""
 "завършване с код за състояние 1 при наличието на разлики, а в противен "
 "случай — с 0"
 
-#: diff.c:5565
+#: diff.c:5581
 msgid "disable all output of the program"
 msgstr "без всякакъв изход от програмата"
 
-#: diff.c:5567
+#: diff.c:5583
 msgid "allow an external diff helper to be executed"
 msgstr "позволяване на изпълнение на външна помощна програма за разлики"
 
-#: diff.c:5569
+#: diff.c:5585
 msgid "run external text conversion filters when comparing binary files"
 msgstr ""
 "изпълнение на външни програми-филтри при сравнението на двоични файлове"
 
-#: diff.c:5571
+#: diff.c:5587
 msgid "<when>"
 msgstr "КОГА"
 
-#: diff.c:5572
+#: diff.c:5588
 msgid "ignore changes to submodules in the diff generation"
 msgstr "игнориране на промените в подмодулите при извеждането на разликите"
 
-#: diff.c:5575
+#: diff.c:5591
 msgid "<format>"
 msgstr "ФОРМАТ"
 
-#: diff.c:5576
+#: diff.c:5592
 msgid "specify how differences in submodules are shown"
 msgstr "начин за извеждане на промените в подмодулите"
 
-#: diff.c:5580
+#: diff.c:5596
 msgid "hide 'git add -N' entries from the index"
 msgstr "без включване в индекса на записите, добавени с „git add -N“"
 
-#: diff.c:5583
+#: diff.c:5599
 msgid "treat 'git add -N' entries as real in the index"
 msgstr "включване в индекса на записите, добавени с „git add -N“"
 
-#: diff.c:5585
+#: diff.c:5601
 msgid "<string>"
 msgstr "НИЗ"
 
-#: diff.c:5586
+#: diff.c:5602
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "string"
 msgstr "търсене на разлики, които променят броя на поява на указаните низове"
 
-#: diff.c:5589
+#: diff.c:5605
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "regex"
@@ -3992,57 +4066,69 @@ msgstr ""
 "търсене на разлики, които променят броя на поява на низовете, които напасват "
 "на регулярния израз"
 
-#: diff.c:5592
+#: diff.c:5608
 msgid "show all changes in the changeset with -S or -G"
 msgstr "извеждане на всички промени с „-G“/„-S“"
 
-#: diff.c:5595
+#: diff.c:5611
 msgid "treat <string> in -S as extended POSIX regular expression"
 msgstr "НИЗът към „-S“ да се тълкува като разширен регулярен израз по POSIX"
 
-#: diff.c:5598
+#: diff.c:5614
 msgid "control the order in which files appear in the output"
 msgstr "управление на подредбата на файловете в изхода"
 
-#: diff.c:5599
+#: diff.c:5615 diff.c:5618
+msgid "<path>"
+msgstr "ПЪТ"
+
+#: diff.c:5616
+msgid "show the change in the specified path first"
+msgstr "първо извеждане на промяната в указания път"
+
+#: diff.c:5619
+msgid "skip the output to the specified path"
+msgstr "прескачане на изхода към указания път"
+
+#: diff.c:5621
 msgid "<object-id>"
 msgstr "ИДЕНТИФИКАТОР_НА_ОБЕКТ"
 
-#: diff.c:5600
+#: diff.c:5622
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "object"
 msgstr "търсене на разлики, които променят броя на поява на указания обект"
 
-#: diff.c:5602
+#: diff.c:5624
 msgid "[(A|C|D|M|R|T|U|X|B)...[*]]"
 msgstr "[(A|C|D|M|R|T|U|X|B)…[*]]"
 
-#: diff.c:5603
+#: diff.c:5625
 msgid "select files by diff type"
 msgstr "избор на файловете по вид разлика"
 
-#: diff.c:5605
+#: diff.c:5627
 msgid "<file>"
 msgstr "ФАЙЛ"
 
-#: diff.c:5606
+#: diff.c:5628
 msgid "Output to a specific file"
 msgstr "Изход към указания файл"
 
-#: diff.c:6263
+#: diff.c:6285
 msgid "inexact rename detection was skipped due to too many files."
 msgstr ""
 "търсенето на преименувания на обекти съчетани с промени се прескача поради "
 "многото файлове."
 
-#: diff.c:6266
+#: diff.c:6288
 msgid "only found copies from modified paths due to too many files."
 msgstr ""
 "установени са само точните копия на променените пътища поради многото "
 "файлове."
 
-#: diff.c:6269
+#: diff.c:6291
 #, c-format
 msgid ""
 "you may want to set your %s variable to at least %d and retry the command."
@@ -4053,10 +4139,15 @@ msgstr "задайте променливата „%s“ да е поне %d и
 msgid "failed to read orderfile '%s'"
 msgstr "файлът с подредбата на съответствията „%s“ не може да бъде прочетен"
 
-#: diffcore-rename.c:592
+#: diffcore-rename.c:786
 msgid "Performing inexact rename detection"
 msgstr "Търсене на преименувания на обекти съчетани с промени"
 
+#: diffcore-rotate.c:29
+#, c-format
+msgid "No such path '%s' in the diff"
+msgstr "Няма път на име „%s“ в разликата"
+
 #: dir.c:578
 #, c-format
 msgid "pathspec '%s' did not match any file(s) known to git"
@@ -4102,17 +4193,17 @@ msgid "untracked cache is disabled on this system or location"
 msgstr ""
 "кешът за неследените файлове е изключен на тази система или местоположение"
 
-#: dir.c:3520
+#: dir.c:3534
 #, c-format
 msgid "index file corrupt in repo %s"
 msgstr "файлът с индекса е повреден в хранилището „%s“"
 
-#: dir.c:3565 dir.c:3570
+#: dir.c:3579 dir.c:3584
 #, c-format
 msgid "could not create directories for %s"
 msgstr "директориите за „%s“ не може да бъдат създадени"
 
-#: dir.c:3599
+#: dir.c:3613
 #, c-format
 msgid "could not migrate git directory from '%s' to '%s'"
 msgstr "директорията на git не може да се мигрира от „%s“ до „%s“"
@@ -4131,12 +4222,12 @@ msgstr "Филтриране на съдържанието"
 msgid "could not stat file '%s'"
 msgstr "неуспешно изпълнение на „stat“ върху файла „%s“"
 
-#: environment.c:150
+#: environment.c:152
 #, c-format
 msgid "bad git namespace path \"%s\""
 msgstr "неправилен път към пространства от имена „%s“"
 
-#: environment.c:337
+#: environment.c:335
 #, c-format
 msgid "could not set GIT_DIR to '%s'"
 msgstr "GIT_DIR не може да се зададе да е „%s“"
@@ -4172,32 +4263,32 @@ msgstr "невъзможно писане към отдалечено храни
 msgid "--stateless-rpc requires multi_ack_detailed"
 msgstr "опцията „--stateless-rpc“ изисква  „multi_ack_detailed“"
 
-#: fetch-pack.c:378 fetch-pack.c:1406
+#: fetch-pack.c:378 fetch-pack.c:1457
 #, c-format
 msgid "invalid shallow line: %s"
 msgstr "неправилен плитък ред: „%s“"
 
-#: fetch-pack.c:384 fetch-pack.c:1412
+#: fetch-pack.c:384 fetch-pack.c:1463
 #, c-format
 msgid "invalid unshallow line: %s"
 msgstr "неправилен неплитък ред: „%s“"
 
-#: fetch-pack.c:386 fetch-pack.c:1414
+#: fetch-pack.c:386 fetch-pack.c:1465
 #, c-format
 msgid "object not found: %s"
 msgstr "обектът „%s“ липсва"
 
-#: fetch-pack.c:389 fetch-pack.c:1417
+#: fetch-pack.c:389 fetch-pack.c:1468
 #, c-format
 msgid "error in object: %s"
 msgstr "грешка в обекта: „%s“"
 
-#: fetch-pack.c:391 fetch-pack.c:1419
+#: fetch-pack.c:391 fetch-pack.c:1470
 #, c-format
 msgid "no shallow found: %s"
 msgstr "не е открит плитък обект: %s"
 
-#: fetch-pack.c:394 fetch-pack.c:1423
+#: fetch-pack.c:394 fetch-pack.c:1474
 #, c-format
 msgid "expected shallow/unshallow, got %s"
 msgstr "очаква се плитък или не обект, а бе получено: „%s“"
@@ -4235,174 +4326,178 @@ msgstr "Отбелязване на „%s“ като пълно"
 msgid "already have %s (%s)"
 msgstr "вече има „%s“ (%s)"
 
-#: fetch-pack.c:827
+#: fetch-pack.c:844
 msgid "fetch-pack: unable to fork off sideband demultiplexer"
 msgstr "fetch-pack: не може да се създаде процес за демултиплексора"
 
-#: fetch-pack.c:835
+#: fetch-pack.c:852
 msgid "protocol error: bad pack header"
 msgstr "протоколна грешка: неправилна заглавна част на пакет"
 
-#: fetch-pack.c:919
+#: fetch-pack.c:946
 #, c-format
 msgid "fetch-pack: unable to fork off %s"
 msgstr "fetch-pack: не може да се създаде процес за „%s“"
 
-#: fetch-pack.c:937
+#: fetch-pack.c:952
+msgid "fetch-pack: invalid index-pack output"
+msgstr "fetch-pack: неправилен изход от командата „index-pack“"
+
+#: fetch-pack.c:969
 #, c-format
 msgid "%s failed"
 msgstr "неуспешно изпълнение на „%s“"
 
-#: fetch-pack.c:939
+#: fetch-pack.c:971
 msgid "error in sideband demultiplexer"
 msgstr "грешка в демултиплексора"
 
-#: fetch-pack.c:982
+#: fetch-pack.c:1031
 #, c-format
 msgid "Server version is %.*s"
 msgstr "Версията на сървъра е: %.*s"
 
-#: fetch-pack.c:990 fetch-pack.c:996 fetch-pack.c:999 fetch-pack.c:1005
-#: fetch-pack.c:1009 fetch-pack.c:1013 fetch-pack.c:1017 fetch-pack.c:1021
-#: fetch-pack.c:1025 fetch-pack.c:1029 fetch-pack.c:1033 fetch-pack.c:1037
-#: fetch-pack.c:1043 fetch-pack.c:1049 fetch-pack.c:1054 fetch-pack.c:1059
+#: fetch-pack.c:1039 fetch-pack.c:1045 fetch-pack.c:1048 fetch-pack.c:1054
+#: fetch-pack.c:1058 fetch-pack.c:1062 fetch-pack.c:1066 fetch-pack.c:1070
+#: fetch-pack.c:1074 fetch-pack.c:1078 fetch-pack.c:1082 fetch-pack.c:1086
+#: fetch-pack.c:1092 fetch-pack.c:1098 fetch-pack.c:1103 fetch-pack.c:1108
 #, c-format
 msgid "Server supports %s"
 msgstr "Сървърът поддържа „%s“"
 
-#: fetch-pack.c:992
+#: fetch-pack.c:1041
 msgid "Server does not support shallow clients"
 msgstr "Сървърът не поддържа плитки клиенти"
 
-#: fetch-pack.c:1052
+#: fetch-pack.c:1101
 msgid "Server does not support --shallow-since"
 msgstr "Сървърът не поддържа опцията „--shallow-since“"
 
-#: fetch-pack.c:1057
+#: fetch-pack.c:1106
 msgid "Server does not support --shallow-exclude"
 msgstr "Сървърът не поддържа опцията „--shallow-exclude“"
 
-#: fetch-pack.c:1061
+#: fetch-pack.c:1110
 msgid "Server does not support --deepen"
 msgstr "Сървърът не поддържа опцията „--deepen“"
 
-#: fetch-pack.c:1063
+#: fetch-pack.c:1112
 msgid "Server does not support this repository's object format"
 msgstr "Сървърът не поддържа форма̀та на обектите на това хранилище"
 
-#: fetch-pack.c:1076
+#: fetch-pack.c:1125
 msgid "no common commits"
 msgstr "няма общи подавания"
 
-#: fetch-pack.c:1088 fetch-pack.c:1628
+#: fetch-pack.c:1138 fetch-pack.c:1682
 msgid "git fetch-pack: fetch failed."
 msgstr "git fetch-pack: неуспешно доставяне."
 
-#: fetch-pack.c:1214
+#: fetch-pack.c:1265
 #, c-format
 msgid "mismatched algorithms: client %s; server %s"
 msgstr "различни алгоритми — на клиента: „%s“, на сървъра: „%s“"
 
-#: fetch-pack.c:1218
+#: fetch-pack.c:1269
 #, c-format
 msgid "the server does not support algorithm '%s'"
 msgstr "сървърът не поддържа алгоритъм „%s“"
 
-#: fetch-pack.c:1238
+#: fetch-pack.c:1289
 msgid "Server does not support shallow requests"
 msgstr "Сървърът не поддържа плитки заявки"
 
-#: fetch-pack.c:1245
+#: fetch-pack.c:1296
 msgid "Server supports filter"
 msgstr "Сървърът поддържа филтри"
 
-#: fetch-pack.c:1284
+#: fetch-pack.c:1335
 msgid "unable to write request to remote"
 msgstr "невъзможно писане към отдалечено хранилище"
 
-#: fetch-pack.c:1302
+#: fetch-pack.c:1353
 #, c-format
 msgid "error reading section header '%s'"
 msgstr "грешка при прочитане на заглавната част на раздел „%s“"
 
-#: fetch-pack.c:1308
+#: fetch-pack.c:1359
 #, c-format
 msgid "expected '%s', received '%s'"
 msgstr "очаква се „%s“, а бе получено „%s“"
 
-#: fetch-pack.c:1369
+#: fetch-pack.c:1420
 #, c-format
 msgid "unexpected acknowledgment line: '%s'"
 msgstr "неочакван ред за потвърждение: „%s“"
 
-#: fetch-pack.c:1374
+#: fetch-pack.c:1425
 #, c-format
 msgid "error processing acks: %d"
 msgstr "грешка при обработка на потвържденията: %d"
 
-#: fetch-pack.c:1384
+#: fetch-pack.c:1435
 msgid "expected packfile to be sent after 'ready'"
 msgstr ""
 "очакваше се пакетният файл да бъде изпратен след отговор за готовност (ready)"
 
-#: fetch-pack.c:1386
+#: fetch-pack.c:1437
 msgid "expected no other sections to be sent after no 'ready'"
 msgstr ""
 "очакваше се след липса на отговор за готовност (ready) да не се се пращат "
 "други раздели"
 
-#: fetch-pack.c:1428
+#: fetch-pack.c:1479
 #, c-format
 msgid "error processing shallow info: %d"
 msgstr "грешка при обработка на информация за дълбочината/плиткостта: %d"
 
-#: fetch-pack.c:1475
+#: fetch-pack.c:1526
 #, c-format
 msgid "expected wanted-ref, got '%s'"
 msgstr "очаква се искан указател, а бе получено: „%s“"
 
-#: fetch-pack.c:1480
+#: fetch-pack.c:1531
 #, c-format
 msgid "unexpected wanted-ref: '%s'"
 msgstr "неочакван искан указател: „%s“"
 
-#: fetch-pack.c:1485
+#: fetch-pack.c:1536
 #, c-format
 msgid "error processing wanted refs: %d"
 msgstr "грешка при обработката на исканите указатели: %d"
 
-#: fetch-pack.c:1515
+#: fetch-pack.c:1566
 msgid "git fetch-pack: expected response end packet"
 msgstr "git fetch-pack: очаква се пакет за край на отговора"
 
-#: fetch-pack.c:1897
+#: fetch-pack.c:1960
 msgid "no matching remote head"
 msgstr "не може да бъде открит подходящ връх от отдалеченото хранилище"
 
-#: fetch-pack.c:1920 builtin/clone.c:693
+#: fetch-pack.c:1983 builtin/clone.c:693
 msgid "remote did not send all necessary objects"
 msgstr "отдалеченото хранилище не изпрати всички необходими обекти."
 
-#: fetch-pack.c:1947
+#: fetch-pack.c:2010
 #, c-format
 msgid "no such remote ref %s"
 msgstr "такъв отдалечен указател няма: %s"
 
-#: fetch-pack.c:1950
+#: fetch-pack.c:2013
 #, c-format
 msgid "Server does not allow request for unadvertised object %s"
 msgstr "Сървърът не позволява заявка за необявен обект „%s“"
 
-#: gpg-interface.c:272
+#: gpg-interface.c:273
 msgid "could not create temporary file"
 msgstr "не може да се създаде временен файл"
 
-#: gpg-interface.c:275
+#: gpg-interface.c:276
 #, c-format
 msgid "failed writing detached signature to '%s'"
 msgstr "Програмата не успя да запише самостоятелния подпис в „%s“"
 
-#: gpg-interface.c:457
+#: gpg-interface.c:470
 msgid "gpg failed to sign the data"
 msgstr "Програмата „gpg“ не подписа данните."
 
@@ -4411,7 +4506,7 @@ msgstr "Програмата „gpg“ не подписа данните."
 msgid "ignore invalid color '%.*s' in log.graphColors"
 msgstr "прескачане на неправилния цвят „%.*s“ в „log.graphColors“"
 
-#: grep.c:640
+#: grep.c:543
 msgid ""
 "given pattern contains NULL byte (via -f <file>). This is only supported "
 "with -P under PCRE v2"
@@ -4419,18 +4514,18 @@ msgstr ""
 "зададеният шаблон съдържа нулев знак (идва от -f „ФАЙЛ“).  Това се поддържа "
 "в комбинация с „-P“ само при ползването на „PCRE v2“"
 
-#: grep.c:2100
+#: grep.c:1906
 #, c-format
 msgid "'%s': unable to read %s"
 msgstr "„%s“: файлът сочен от „%s“ не може да бъде прочетен"
 
-#: grep.c:2117 setup.c:176 builtin/clone.c:412 builtin/diff.c:89
+#: grep.c:1923 setup.c:176 builtin/clone.c:412 builtin/diff.c:90
 #: builtin/rm.c:135
 #, c-format
 msgid "failed to stat '%s'"
 msgstr "не може да бъде получена информация чрез „stat“ за „%s“"
 
-#: grep.c:2128
+#: grep.c:1934
 #, c-format
 msgid "'%s': short read"
 msgstr "„%s“: изчитането върна по-малко байтове от очакваното"
@@ -4500,7 +4595,7 @@ msgstr "команди на git от други директории от „$PA
 msgid "These are common Git commands used in various situations:"
 msgstr "Това са най-често използваните команди на Git:"
 
-#: help.c:365 git.c:99
+#: help.c:365 git.c:100
 #, c-format
 msgid "unsupported command listing type '%s'"
 msgstr "неподдържан списък от команди „%s“"
@@ -4748,134 +4843,52 @@ msgstr ""
 msgid "Unable to create '%s.lock': %s"
 msgstr "Файлът-ключалка „%s.lock“ не може да бъде създаден: %s"
 
-#: ls-refs.c:109
-msgid "expected flush after ls-refs arguments"
-msgstr "след аргументите към „ls-refs“ се очаква изчистване на буферите"
-
-#: merge-ort-wrappers.c:13 merge-recursive.c:3672
-#, c-format
-msgid ""
-"Your local changes to the following files would be overwritten by merge:\n"
-"  %s"
-msgstr ""
-"Сливането ще презапише локалните промени на тези файлове:\n"
-"    %s"
-
-#: merge-ort-wrappers.c:33 merge-recursive.c:3436
-#, c-format
-msgid "Already up to date!"
-msgstr "Вече е обновено!"
-
-#: merge-recursive.c:356
-msgid "(bad commit)\n"
-msgstr "(лошо подаване)\n"
-
-#: merge-recursive.c:379
-#, c-format
-msgid "add_cacheinfo failed for path '%s'; merge aborting."
-msgstr ""
-"неуспешно изпълнение на „add_cacheinfo“ за пътя „%s“.  Сливането е "
-"преустановено."
-
-#: merge-recursive.c:388
-#, c-format
-msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
-msgstr ""
-"неуспешно изпълнение на „add_cacheinfo“ за обновяването на пътя „%s“.  "
-"Сливането е преустановено."
-
-#: merge-recursive.c:874
-#, c-format
-msgid "failed to create path '%s'%s"
-msgstr "грешка при създаването на пътя „%s“%s"
-
-#: merge-recursive.c:885
-#, c-format
-msgid "Removing %s to make room for subdirectory\n"
-msgstr "Изтриване на „%s“, за да се освободи място за поддиректория\n"
-
-#: merge-recursive.c:899 merge-recursive.c:918
-msgid ": perhaps a D/F conflict?"
-msgstr ": възможно е да има конфликт директория/файл."
-
-#: merge-recursive.c:908
-#, c-format
-msgid "refusing to lose untracked file at '%s'"
-msgstr ""
-"преустановяване на действието, за да не се изтрие неследеният файл „%s“"
-
-#: merge-recursive.c:949 builtin/cat-file.c:41
-#, c-format
-msgid "cannot read object %s '%s'"
-msgstr "обектът „%s“ (%s) не може да бъде прочетен"
-
-#: merge-recursive.c:954
-#, c-format
-msgid "blob expected for %s '%s'"
-msgstr "обектът „%s“ (%s) се очакваше да е BLOB, а не е"
-
-#: merge-recursive.c:979
-#, c-format
-msgid "failed to open '%s': %s"
-msgstr "„%s“ не може да се отвори: %s"
-
-#: merge-recursive.c:990
+#: ls-refs.c:37
 #, c-format
-msgid "failed to symlink '%s': %s"
-msgstr "неуспешно създаване на символната връзка „%s“: %s"
+msgid "invalid value '%s' for lsrefs.unborn"
+msgstr "неправилна стойност „%s“ за „lsrefs.unborn“"
 
-#: merge-recursive.c:995
-#, c-format
-msgid "do not know what to do with %06o %s '%s'"
-msgstr ""
-"не е ясно какво да се прави с обекта „%2$s“ (%3$s) с права за достъп „%1$06o“"
+#: ls-refs.c:167
+msgid "expected flush after ls-refs arguments"
+msgstr "след аргументите към „ls-refs“ се очаква изчистване на буферите"
 
-#: merge-recursive.c:1191
+#: merge-ort.c:888 merge-recursive.c:1191
 #, c-format
 msgid "Failed to merge submodule %s (not checked out)"
 msgstr "Неуспешно сливане на подмодула „%s“ (не е изтеглен)"
 
-#: merge-recursive.c:1198
+#: merge-ort.c:897 merge-recursive.c:1198
 #, c-format
 msgid "Failed to merge submodule %s (commits not present)"
 msgstr "Неуспешно сливане на подмодула „%s“ (няма подавания)"
 
-#: merge-recursive.c:1205
+#: merge-ort.c:906 merge-recursive.c:1205
 #, c-format
 msgid "Failed to merge submodule %s (commits don't follow merge-base)"
 msgstr ""
 "Подмодулът „%s“ не може да бъде слят (базата за сливане не предшества "
 "подаванията)"
 
-#: merge-recursive.c:1213 merge-recursive.c:1225
-#, c-format
-msgid "Fast-forwarding submodule %s to the following commit:"
-msgstr "Превъртане на подмодула „%s“ до следното подаване:"
-
-#: merge-recursive.c:1216 merge-recursive.c:1228
+#: merge-ort.c:916 merge-ort.c:923
 #, c-format
-msgid "Fast-forwarding submodule %s"
-msgstr "Ð\9fÑ\80евÑ\8aÑ\80Ñ\82ане Ð½Ð° Ð¿Ð¾Ð´Ð¼Ð¾Ð´Ñ\83ла „%s“"
+msgid "Note: Fast-forwarding submodule %s to %s"
+msgstr "Ð\91ележка: Ð\9fÑ\80евÑ\8aÑ\80Ñ\82ане Ð½Ð° Ð¿Ð¾Ð´Ð¼Ð¾Ð´Ñ\83ла â\80\9e%sâ\80\9c ÐºÑ\8aм „%s“"
 
-#: merge-recursive.c:1251
+#: merge-ort.c:944
 #, c-format
-msgid "Failed to merge submodule %s (merge following commits not found)"
-msgstr ""
-"Неуспешно сливане на подмодула „%s“ (липсва сливането, което се предшества "
-"от подаванията)"
+msgid "Failed to merge submodule %s"
+msgstr "Неуспешно сливане на подмодула „%s“"
 
-#: merge-recursive.c:1255
+#: merge-ort.c:951
 #, c-format
-msgid "Failed to merge submodule %s (not fast-forward)"
-msgstr "Неуспешно сливане на подмодула „%s“ (не е превъртане)"
-
-#: merge-recursive.c:1256
-msgid "Found a possible merge resolution for the submodule:\n"
+msgid ""
+"Failed to merge submodule %s, but a possible merge resolution exists:\n"
+"%s\n"
 msgstr ""
-"Ð\9eÑ\82кÑ\80иÑ\82о Ðµ Ñ\81ливане, ÐºÐ¾ÐµÑ\82о Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\80еÑ\88ава Ð¿Ñ\80облема Ñ\81Ñ\8aÑ\81 Ñ\81ливанеÑ\82о Ð½Ð° "
-"подмодула:\n"
+"Ð\9dеÑ\83Ñ\81пеÑ\88но Ñ\81ливане Ð½Ð° Ð¿Ð¾Ð´Ð¼Ð¾Ð´Ñ\83ла â\80\9e%sâ\80\9c, Ð½Ð¾ Ðµ Ð¾Ñ\82кÑ\80иÑ\82о Ð²Ñ\8aзможно Ñ\80еÑ\88ение:\n"
+"%s\n"
 
-#: merge-recursive.c:1259
+#: merge-ort.c:955 merge-recursive.c:1259
 #, c-format
 msgid ""
 "If this is correct simply add it to the index for example\n"
@@ -4891,61 +4904,337 @@ msgstr ""
 "\n"
 "Това приема предложеното.\n"
 
-#: merge-recursive.c:1268
+#: merge-ort.c:968
 #, c-format
-msgid "Failed to merge submodule %s (multiple merges found)"
-msgstr "Неуспешно сливане на подмодула „%s“ (открити са множество сливания)"
+msgid ""
+"Failed to merge submodule %s, but multiple possible merges exist:\n"
+"%s"
+msgstr ""
+"Неуспешно сливане на подмодула „%s“, но са открити множество решения:\n"
+"%s"
 
-#: merge-recursive.c:1341
+#: merge-ort.c:1127 merge-recursive.c:1341
 msgid "Failed to execute internal merge"
 msgstr "Неуспешно вътрешно сливане"
 
-#: merge-recursive.c:1346
+#: merge-ort.c:1132 merge-recursive.c:1346
 #, c-format
 msgid "Unable to add %s to database"
 msgstr "„%s“ не може да се добави в базата с данни"
 
-#: merge-recursive.c:1378
+#: merge-ort.c:1139 merge-recursive.c:1378
 #, c-format
 msgid "Auto-merging %s"
 msgstr "Автоматично сливане на „%s“"
 
-#: merge-recursive.c:1402
+#: merge-ort.c:1278 merge-recursive.c:2100
 #, c-format
-msgid "Error: Refusing to lose untracked file at %s; writing to %s instead."
-msgstr "Грешка: за да не се изтрие неследеният файл „%s“, се записва в „%s“."
+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:1474
+#: merge-ort.c:1288 merge-recursive.c:2110
 #, c-format
 msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
-"in tree."
+"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“ е изтрит в %s, а „%s“ в %s.  Версия %s на „%s“ "
-"е оставена в дървото."
+"КОНФЛИКТ (косвено преименуване на директория): повече от един път "
+"съответства на „%s“.  Косвено преименуване на директория води до поставянето "
+"на тези пътища там: %s."
 
-#: merge-recursive.c:1479
+#: merge-ort.c:1471
 #, c-format
 msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
-"left in tree."
+"CONFLICT (directory rename split): Unclear where to rename %s to; it was "
+"renamed to multiple other directories, with no destination getting a "
+"majority of the files."
 msgstr ""
-"КОНФЛИКТ (%s/изтриване): „%s“ е изтрит в %s, а „%s“ е преименуван на „%s“ в "
-"%s.  Версия %s на „%s“ е оставена в дървото."
+"КОНФЛИКТ (раздвояване при преименуване на директория): Не е ясно как и къде "
+"да се преименува „%s“, защото е преместен в няколко нови директории, без "
+"никоя от тях да е по-честа цел."
 
-#: merge-recursive.c:1486
+#: merge-ort.c:1637 merge-recursive.c:2447
 #, c-format
 msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
-"in tree at %s."
+"WARNING: Avoiding applying %s -> %s rename to %s, because %s itself was "
+"renamed."
 msgstr ""
-"Ð\9aÐ\9eÐ\9dФÐ\9bÐ\98Ð\9aТ (%s/изÑ\82Ñ\80иване): â\80\9e%sâ\80\9c Ðµ Ð¸Ð·Ñ\82Ñ\80иÑ\82 Ð² %s, Ð° â\80\9e%sâ\80\9c Ð² %s.  Ð\92еÑ\80Ñ\81иÑ\8f %s Ð½Ð° â\80\9e%sâ\80\9c "
-"е оставена в дървото: %s."
+"Ð\9fРÐ\95Ð\94УÐ\9fРÐ\95Ð\96Ð\94Ð\95Ð\9dÐ\98Ð\95: Ð¿Ñ\80еÑ\81каÑ\87ане Ð½Ð° Ð¿Ñ\80еименÑ\83ванеÑ\82о Ð½Ð° â\80\9e%sâ\80\9c Ð½Ð° â\80\9e%sâ\80\9c Ð² â\80\9e%sâ\80\9c, Ð·Ð°Ñ\89оÑ\82о "
+"„%s“ също е с променено име."
 
-#: merge-recursive.c:1491
+#: merge-ort.c:1781 merge-recursive.c:3215
 #, c-format
 msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
+"Path updated: %s added in %s inside a directory that was renamed in %s; "
+"moving it to %s."
+msgstr ""
+"Обновен път: „%s“ е добавен в „%s“ в директория, която е преименувана в "
+"„%s“.  Обектът се мести в „%s“."
+
+#: merge-ort.c:1788 merge-recursive.c:3222
+#, c-format
+msgid ""
+"Path updated: %s renamed to %s in %s, inside a directory that was renamed in "
+"%s; moving it to %s."
+msgstr ""
+"Обновен път: „%s“ е преименуван на „%s“ в „%s“ в директория, която е "
+"преименувана в „%s“.  Обектът се мести в „%s“."
+
+#: merge-ort.c:1801 merge-recursive.c:3218
+#, c-format
+msgid ""
+"CONFLICT (file location): %s added in %s inside a directory that was renamed "
+"in %s, suggesting it should perhaps be moved to %s."
+msgstr ""
+"КОНФЛИКТ (места на файлове): „%s“ е добавен в „%s“ в директория, която е "
+"преименувана в „%s“.  Предложението е да преместите обекта в „%s“."
+
+#: merge-ort.c:1809 merge-recursive.c:3225
+#, c-format
+msgid ""
+"CONFLICT (file location): %s renamed to %s in %s, inside a directory that "
+"was renamed in %s, suggesting it should perhaps be moved to %s."
+msgstr ""
+"КОНФЛИКТ (места на файлове): „%s“ е преименуван на „%s“ в „%s“ в директория, "
+"която е преименувана в „%s“.  Предложението е да преместите обекта в „%s“."
+
+#: merge-ort.c:1952
+#, c-format
+msgid "CONFLICT (rename/rename): %s renamed to %s in %s and to %s in %s."
+msgstr ""
+"КОНФЛИКТ (преименуване/преименуване): „%s“ е преименуван на „%s“ в клон „%s“ "
+"и на „%s“ в „%s“."
+
+#: merge-ort.c:2047
+#, c-format
+msgid ""
+"CONFLICT (rename involved in collision): rename of %s -> %s has content "
+"conflicts AND collides with another path; this may result in nested conflict "
+"markers."
+msgstr ""
+"КОНФЛИКТ (има и преименуване в промените): „%s“ е преименуван на „%s“, но "
+"има и промени в съдържанието, а и има съвпадение на пътя.  Може да се "
+"получат вложени маркери за конфликт."
+
+#: merge-ort.c:2066 merge-ort.c:2090
+#, c-format
+msgid "CONFLICT (rename/delete): %s renamed to %s in %s, but deleted in %s."
+msgstr ""
+"КОНФЛИКТ (преименуване/добавяне): „%s“ е преименуван на „%s“ в клон „%s“, а "
+"е изтрит в „%s“."
+
+#: merge-ort.c:2735
+#, c-format
+msgid ""
+"CONFLICT (file/directory): directory in the way of %s from %s; moving it to "
+"%s instead."
+msgstr ""
+"КОНФЛИКТ (файл/директория): директория на мястото на „%s“ от „%s“, вместо "
+"това се извършва преместване в „%s“."
+
+#: merge-ort.c:2808
+#, c-format
+msgid ""
+"CONFLICT (distinct types): %s had different types on each side; renamed %s "
+"of them so each can be recorded somewhere."
+msgstr ""
+"КОНФЛИКТ (различни обекти): „%s“ е различен вид обект в двата варианта, "
+"затова се извършва преименуване на %s, за да може и двата варианта да са "
+"отразени."
+
+#: merge-ort.c:2812
+msgid "both"
+msgstr "двата"
+
+#: merge-ort.c:2812
+msgid "one"
+msgstr "единия"
+
+#: merge-ort.c:2907 merge-recursive.c:3052
+msgid "content"
+msgstr "съдържание"
+
+#: merge-ort.c:2909 merge-recursive.c:3056
+msgid "add/add"
+msgstr "добавяне/добавяне"
+
+#: merge-ort.c:2911 merge-recursive.c:3101
+msgid "submodule"
+msgstr "ПОДМОДУЛ"
+
+#: merge-ort.c:2913 merge-recursive.c:3102
+#, c-format
+msgid "CONFLICT (%s): Merge conflict in %s"
+msgstr "КОНФЛИКТ (%s): Конфликт при сливане на „%s“"
+
+#: merge-ort.c:2938
+#, c-format
+msgid ""
+"CONFLICT (modify/delete): %s deleted in %s and modified in %s.  Version %s "
+"of %s left in tree."
+msgstr ""
+"КОНФЛИКТ (промяна/изтриване): „%s“ е изтрит в %s, а е променен в %s.  Версия "
+"%s на „%s“ е оставена в дървото."
+
+#. TRANSLATORS: The %s arguments are: 1) tree hash of a merge
+#. base, and 2-3) the trees for the two trees we're merging.
+#.
+#: merge-ort.c:3406
+#, c-format
+msgid "collecting merge info failed for trees %s, %s, %s"
+msgstr "неуспешно събиране на информацията за сливането на „%s“, „%s“ и „%s“"
+
+#: merge-ort-wrappers.c:13 merge-recursive.c:3661
+#, c-format
+msgid ""
+"Your local changes to the following files would be overwritten by merge:\n"
+"  %s"
+msgstr ""
+"Сливането ще презапише локалните промени на тези файлове:\n"
+"    %s"
+
+#: merge-ort-wrappers.c:33 merge-recursive.c:3436
+#, c-format
+msgid "Already up to date!"
+msgstr "Вече е обновено!"
+
+#: merge-recursive.c:356
+msgid "(bad commit)\n"
+msgstr "(лошо подаване)\n"
+
+#: merge-recursive.c:379
+#, c-format
+msgid "add_cacheinfo failed for path '%s'; merge aborting."
+msgstr ""
+"неуспешно изпълнение на „add_cacheinfo“ за пътя „%s“.  Сливането е "
+"преустановено."
+
+#: merge-recursive.c:388
+#, c-format
+msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
+msgstr ""
+"неуспешно изпълнение на „add_cacheinfo“ за обновяването на пътя „%s“.  "
+"Сливането е преустановено."
+
+#: merge-recursive.c:874
+#, c-format
+msgid "failed to create path '%s'%s"
+msgstr "грешка при създаването на пътя „%s“%s"
+
+#: merge-recursive.c:885
+#, c-format
+msgid "Removing %s to make room for subdirectory\n"
+msgstr "Изтриване на „%s“, за да се освободи място за поддиректория\n"
+
+#: merge-recursive.c:899 merge-recursive.c:918
+msgid ": perhaps a D/F conflict?"
+msgstr ": възможно е да има конфликт директория/файл."
+
+#: merge-recursive.c:908
+#, c-format
+msgid "refusing to lose untracked file at '%s'"
+msgstr ""
+"преустановяване на действието, за да не се изтрие неследеният файл „%s“"
+
+#: merge-recursive.c:949 builtin/cat-file.c:41
+#, c-format
+msgid "cannot read object %s '%s'"
+msgstr "обектът „%s“ (%s) не може да бъде прочетен"
+
+#: merge-recursive.c:954
+#, c-format
+msgid "blob expected for %s '%s'"
+msgstr "обектът „%s“ (%s) се очакваше да е BLOB, а не е"
+
+#: merge-recursive.c:979
+#, c-format
+msgid "failed to open '%s': %s"
+msgstr "„%s“ не може да се отвори: %s"
+
+#: merge-recursive.c:990
+#, c-format
+msgid "failed to symlink '%s': %s"
+msgstr "неуспешно създаване на символната връзка „%s“: %s"
+
+#: merge-recursive.c:995
+#, c-format
+msgid "do not know what to do with %06o %s '%s'"
+msgstr ""
+"не е ясно какво да се прави с обекта „%2$s“ (%3$s) с права за достъп „%1$06o“"
+
+#: merge-recursive.c:1213 merge-recursive.c:1225
+#, c-format
+msgid "Fast-forwarding submodule %s to the following commit:"
+msgstr "Превъртане на подмодула „%s“ до следното подаване:"
+
+#: merge-recursive.c:1216 merge-recursive.c:1228
+#, c-format
+msgid "Fast-forwarding submodule %s"
+msgstr "Превъртане на подмодула „%s“"
+
+#: merge-recursive.c:1251
+#, c-format
+msgid "Failed to merge submodule %s (merge following commits not found)"
+msgstr ""
+"Неуспешно сливане на подмодула „%s“ (липсва сливането, което се предшества "
+"от подаванията)"
+
+#: merge-recursive.c:1255
+#, c-format
+msgid "Failed to merge submodule %s (not fast-forward)"
+msgstr "Неуспешно сливане на подмодула „%s“ (не е превъртане)"
+
+#: merge-recursive.c:1256
+msgid "Found a possible merge resolution for the submodule:\n"
+msgstr ""
+"Открито е сливане, което може да решава проблема със сливането на "
+"подмодула:\n"
+
+#: merge-recursive.c:1268
+#, c-format
+msgid "Failed to merge submodule %s (multiple merges found)"
+msgstr "Неуспешно сливане на подмодула „%s“ (открити са множество сливания)"
+
+#: merge-recursive.c:1402
+#, c-format
+msgid "Error: Refusing to lose untracked file at %s; writing to %s instead."
+msgstr "Грешка: за да не се изтрие неследеният файл „%s“, се записва в „%s“."
+
+#: merge-recursive.c:1474
+#, 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“ "
+"е оставена в дървото."
+
+#: merge-recursive.c:1479
+#, 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“ е оставена в дървото."
+
+#: merge-recursive.c:1486
+#, 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."
+
+#: merge-recursive.c:1491
+#, 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“ в "
@@ -5020,25 +5309,6 @@ msgstr ""
 "постави „%s“, защото няколко нови директории поделят съдържанието на "
 "директория „%s“, като никоя не съдържа мнозинство от файловете ѝ."
 
-#: merge-recursive.c:2100
-#, c-format
-msgid ""
-"CONFLICT (implicit dir rename): Existing file/dir at %s in the way of "
-"implicit directory rename(s) putting the following path(s) there: %s."
-msgstr ""
-"КОНФЛИКТ (косвено преименуване на директория): следният файл или директория "
-"„%s“ не позволяват косвеното преименуване на следния път/ища: %s."
-
-#: merge-recursive.c:2110
-#, c-format
-msgid ""
-"CONFLICT (implicit dir rename): Cannot map more than one path to %s; "
-"implicit directory renames tried to put these paths there: %s"
-msgstr ""
-"КОНФЛИКТ (косвено преименуване на директория): повече от един път "
-"съответства на „%s“.  Косвено преименуване на директория води до поставянето "
-"на тези пътища там: %s."
-
 #: merge-recursive.c:2202
 #, c-format
 msgid ""
@@ -5048,15 +5318,6 @@ msgstr ""
 "КОНФЛИКТ (преименуване/преименуване): „%s“ е преименуван на „%s“ в клон "
 "„%s“, а „%s“ е преименуван на „%s“ в „%s“"
 
-#: merge-recursive.c:2447
-#, c-format
-msgid ""
-"WARNING: Avoiding applying %s -> %s rename to %s, because %s itself was "
-"renamed."
-msgstr ""
-"ПРЕДУПРЕЖДЕНИЕ: прескачане на преименуването на „%s“ на „%s“ в „%s“, защото "
-"„%s“ също е с променено име."
-
 #: merge-recursive.c:2973
 #, c-format
 msgid "cannot read object %s"
@@ -5075,70 +5336,17 @@ msgstr "промяна"
 msgid "modified"
 msgstr "променен"
 
-#: merge-recursive.c:3052
-msgid "content"
-msgstr "съдържание"
-
-#: merge-recursive.c:3056
-msgid "add/add"
-msgstr "добавяне/добавяне"
-
 #: merge-recursive.c:3079
 #, c-format
 msgid "Skipped %s (merged same as existing)"
 msgstr "Прескачане на „%s“ (слетият резултат е идентичен със сегашния)"
 
-#: merge-recursive.c:3101
-msgid "submodule"
-msgstr "ПОДМОДУЛ"
-
-#: merge-recursive.c:3102
-#, c-format
-msgid "CONFLICT (%s): Merge conflict in %s"
-msgstr "КОНФЛИКТ (%s): Конфликт при сливане на „%s“"
-
 #: merge-recursive.c:3132
 #, c-format
 msgid "Adding as %s instead"
 msgstr "Добавяне като „%s“"
 
-#: merge-recursive.c:3215
-#, c-format
-msgid ""
-"Path updated: %s added in %s inside a directory that was renamed in %s; "
-"moving it to %s."
-msgstr ""
-"Обновен път: „%s“ е добавен в „%s“ в директория, която е преименувана в "
-"„%s“.  Обектът се мести в „%s“."
-
-#: merge-recursive.c:3218
-#, c-format
-msgid ""
-"CONFLICT (file location): %s added in %s inside a directory that was renamed "
-"in %s, suggesting it should perhaps be moved to %s."
-msgstr ""
-"КОНФЛИКТ (места на файлове): „%s“ е добавен в „%s“ в директория, която е "
-"преименувана в „%s“.  Предложението е да преместите обекта в „%s“."
-
-#: merge-recursive.c:3222
-#, c-format
-msgid ""
-"Path updated: %s renamed to %s in %s, inside a directory that was renamed in "
-"%s; moving it to %s."
-msgstr ""
-"Обновен път: „%s“ е преименуван на „%s“ в „%s“ в директория, която е "
-"преименувана в „%s“.  Обектът се мести в „%s“."
-
-#: merge-recursive.c:3225
-#, c-format
-msgid ""
-"CONFLICT (file location): %s renamed to %s in %s, inside a directory that "
-"was renamed in %s, suggesting it should perhaps be moved to %s."
-msgstr ""
-"КОНФЛИКТ (места на файлове): „%s“ е преименуван на „%s“ в „%s“ в директория, "
-"която е преименувана в „%s“.  Предложението е да преместите обекта в „%s“."
-
-#: merge-recursive.c:3339
+#: merge-recursive.c:3339
 #, c-format
 msgid "Removing %s"
 msgstr "Изтриване на „%s“"
@@ -5173,27 +5381,28 @@ msgstr "КОНФЛИКТ (добавяне/добавяне): Конфликт 
 msgid "merging of trees %s and %s failed"
 msgstr "неуспешно сливане на дърветата „%s“ и „%s“"
 
-#: merge-recursive.c:3550
+#: merge-recursive.c:3539
 msgid "Merging:"
 msgstr "Сливане:"
 
-#: merge-recursive.c:3563
+#: merge-recursive.c:3552
 #, c-format
 msgid "found %u common ancestor:"
 msgid_plural "found %u common ancestors:"
 msgstr[0] "открит е %u общ предшественик:"
 msgstr[1] "открити са %u общи предшественици:"
 
-#: merge-recursive.c:3613
+#: merge-recursive.c:3602
 msgid "merge returned no commit"
 msgstr "сливането не върна подаване"
 
-#: merge-recursive.c:3769
+#: merge-recursive.c:3758
 #, c-format
 msgid "Could not parse object '%s'"
 msgstr "Неуспешен анализ на обекта „%s“"
 
-#: merge-recursive.c:3787 builtin/merge.c:711 builtin/merge.c:895
+#: merge-recursive.c:3776 builtin/merge.c:712 builtin/merge.c:896
+#: builtin/stash.c:471
 msgid "Unable to write index."
 msgstr "Индексът не може да бъде прочетен"
 
@@ -5201,125 +5410,115 @@ msgstr "Индексът не може да бъде прочетен"
 msgid "failed to read the cache"
 msgstr "кешът не може да бъде прочетен"
 
-#: merge.c:109 rerere.c:720 builtin/am.c:1883 builtin/am.c:1917
-#: builtin/checkout.c:573 builtin/checkout.c:829 builtin/clone.c:817
+#: merge.c:109 rerere.c:704 builtin/am.c:1883 builtin/am.c:1917
+#: builtin/checkout.c:575 builtin/checkout.c:828 builtin/clone.c:817
 #: builtin/stash.c:265
 msgid "unable to write new index file"
 msgstr "неуспешно записване на новия индекс"
 
-#: midx.c:80
+#: midx.c:62
+msgid "multi-pack-index OID fanout is of the wrong size"
+msgstr "неправилен размер на откъс (OID fanout) на индекса за множество пакети"
+
+#: midx.c:93
 #, c-format
 msgid "multi-pack-index file %s is too small"
 msgstr "файлът с индекса за множество пакети „%s“ е твърде малък"
 
-#: midx.c:96
+#: midx.c:109
 #, c-format
 msgid "multi-pack-index signature 0x%08x does not match signature 0x%08x"
 msgstr "отпечатъкът на индекса за множество пакети 0x%08x не съвпада с 0x%08x"
 
-#: midx.c:101
+#: midx.c:114
 #, c-format
 msgid "multi-pack-index version %d not recognized"
 msgstr "непозната версия на индекс за множество пакети — %d"
 
-#: midx.c:106
+#: midx.c:119
 #, c-format
 msgid "multi-pack-index hash version %u does not match version %u"
 msgstr ""
 "версията на контролната сума на индекса за множество пакети %u не съвпада с "
 "%u"
 
-#: midx.c:123
-msgid "invalid chunk offset (too large)"
-msgstr "неправилно (прекалено голямо) отместване на откъс"
-
-#: midx.c:147
-msgid "terminating multi-pack-index chunk id appears earlier than expected"
-msgstr ""
-"идентификаторът за краен откъс на индекс за множество пакети се явява по-"
-"рано от очакваното"
-
-#: midx.c:160
+#: midx.c:136
 msgid "multi-pack-index missing required pack-name chunk"
 msgstr "липсва откъс (pack-name) от индекс за множество пакети"
 
-#: midx.c:162
+#: midx.c:138
 msgid "multi-pack-index missing required OID fanout chunk"
 msgstr "липсва откъс (OID fanout) от индекс за множество пакети"
 
-#: midx.c:164
+#: midx.c:140
 msgid "multi-pack-index missing required OID lookup chunk"
 msgstr "липсва откъс (OID lookup) от индекс за множество пакети"
 
-#: midx.c:166
+#: midx.c:142
 msgid "multi-pack-index missing required object offsets chunk"
 msgstr "липсва откъс за отместванията на обекти от индекс за множество пакети"
 
-#: midx.c:180
+#: midx.c:158
 #, c-format
 msgid "multi-pack-index pack names out of order: '%s' before '%s'"
 msgstr ""
 "неправилна подредба на имената в индекс за множество пакети: „%s“ се появи "
 "преди „%s“"
 
-#: midx.c:223
+#: midx.c:202
 #, c-format
 msgid "bad pack-int-id: %u (%u total packs)"
 msgstr ""
 "неправилен идентификатор на пакет (pack-int-id): %u (от общо %u пакети)"
 
-#: midx.c:273
+#: midx.c:252
 msgid "multi-pack-index stores a 64-bit offset, but off_t is too small"
 msgstr ""
 "индексът за множество пакети съдържа 64-битови отмествания, но размерът на "
 "„off_t“ е недостатъчен"
 
-#: midx.c:480
+#: midx.c:467
 #, c-format
 msgid "failed to add packfile '%s'"
 msgstr "пакетният файл „%s“ не може да бъде добавен"
 
-#: midx.c:486
+#: midx.c:473
 #, c-format
 msgid "failed to open pack-index '%s'"
 msgstr "индексът за пакети „%s“ не може да бъде отворен"
 
-#: midx.c:546
+#: midx.c:533
 #, c-format
 msgid "failed to locate object %d in packfile"
 msgstr "обект %d в пакетния файл липсва"
 
-#: midx.c:846
+#: midx.c:821
 msgid "Adding packfiles to multi-pack-index"
 msgstr "Добавяне на пакетни файлове към индекс за множество пакети"
 
-#: midx.c:879
+#: midx.c:855
 #, c-format
 msgid "did not see pack-file %s to drop"
 msgstr "пакетният файл за триене „%s“ не може да се открие"
 
-#: midx.c:931
+#: midx.c:904
 msgid "no pack files to index."
 msgstr "няма пакетни файлове за индексиране"
 
-#: midx.c:982
-msgid "Writing chunks to multi-pack-index"
-msgstr "Запис на откъси към индекс за множество пакети"
-
-#: midx.c:1060
+#: midx.c:965
 #, c-format
 msgid "failed to clear multi-pack-index at %s"
 msgstr "индексът за множество пакети не може да бъде изчистен при „%s“"
 
-#: midx.c:1116
+#: midx.c:1021
 msgid "multi-pack-index file exists, but failed to parse"
 msgstr "файлът с индекса за множество пакети, но не може да бъде анализиран"
 
-#: midx.c:1124
+#: midx.c:1029
 msgid "Looking for referenced packfiles"
 msgstr "Търсене на указаните пакетни файлове"
 
-#: midx.c:1139
+#: midx.c:1044
 #, c-format
 msgid ""
 "oid fanout out of order: fanout[%d] = %<PRIx32> > %<PRIx32> = fanout[%d]"
@@ -5327,72 +5526,72 @@ msgstr ""
 "неправилна подредба на откъси (OID fanout): fanout[%d] = %<PRIx32> > "
 "%<PRIx32> = fanout[%d]"
 
-#: midx.c:1144
+#: midx.c:1049
 msgid "the midx contains no oid"
 msgstr "във файла с индекса за множество пакети няма идентификатори на обекти"
 
-#: midx.c:1153
+#: midx.c:1058
 msgid "Verifying OID order in multi-pack-index"
 msgstr ""
 "Проверка на подредбата на идентификатори на обекти във файл с индекс към "
 "множество пакетни файлове"
 
-#: midx.c:1162
+#: midx.c:1067
 #, c-format
 msgid "oid lookup out of order: oid[%d] = %s >= %s = oid[%d]"
 msgstr ""
 "неправилна подредба на откъси (OID lookup): oid[%d] = %s >= %s = oid[%d]"
 
-#: midx.c:1182
+#: midx.c:1087
 msgid "Sorting objects by packfile"
 msgstr "Подредба на обектите по пакетни файлове"
 
-#: midx.c:1189
+#: midx.c:1094
 msgid "Verifying object offsets"
 msgstr "Проверка на отместването на обекти"
 
-#: midx.c:1205
+#: midx.c:1110
 #, c-format
 msgid "failed to load pack entry for oid[%d] = %s"
 msgstr "записът в пакета за обекта oid[%d] = %s не може да бъде зареден"
 
-#: midx.c:1211
+#: midx.c:1116
 #, c-format
 msgid "failed to load pack-index for packfile %s"
 msgstr "индексът на пакета „%s“ не може да бъде зареден"
 
-#: midx.c:1220
+#: midx.c:1125
 #, c-format
 msgid "incorrect object offset for oid[%d] = %s: %<PRIx64> != %<PRIx64>"
 msgstr "неправилно отместване на обект за oid[%d] = %s: %<PRIx64> != %<PRIx64>"
 
-#: midx.c:1245
+#: midx.c:1150
 msgid "Counting referenced objects"
 msgstr "Преброяване на свързаните обекти"
 
-#: midx.c:1255
+#: midx.c:1160
 msgid "Finding and deleting unreferenced packfiles"
 msgstr "Търсене и изтриване на несвързаните пакетни файлове"
 
-#: midx.c:1446
+#: midx.c:1351
 msgid "could not start pack-objects"
 msgstr "командата „pack-objects“ не може да бъде стартирана"
 
-#: midx.c:1466
+#: midx.c:1371
 msgid "could not finish pack-objects"
 msgstr "командата „pack-objects“ не може да бъде завършена"
 
-#: name-hash.c:537
+#: name-hash.c:538
 #, c-format
 msgid "unable to create lazy_dir thread: %s"
 msgstr "не може да се създаде нишка за директории: %s"
 
-#: name-hash.c:559
+#: name-hash.c:560
 #, c-format
 msgid "unable to create lazy_name thread: %s"
 msgstr "не може да се създаде нишка за имена: %s"
 
-#: name-hash.c:565
+#: name-hash.c:566
 #, c-format
 msgid "unable to join lazy_name thread: %s"
 msgstr "не може да се изчака нишка за имена: %s"
@@ -5445,618 +5644,1035 @@ msgstr ""
 msgid "Bad %s value: '%s'"
 msgstr "Зададена е лоша стойност на променливата „%s“: „%s“"
 
-#: object.c:53
+#: object-file.c:480
 #, c-format
-msgid "invalid object type \"%s\""
-msgstr "неправилен вид обект: „%s“"
+msgid "object directory %s does not exist; check .git/objects/info/alternates"
+msgstr ""
+"директорията за обекти „%s“ не съществува, проверете „.git/objects/info/"
+"alternates“"
 
-#: object.c:173
+#: object-file.c:531
 #, c-format
-msgid "object %s is a %s, not a %s"
-msgstr "обекÑ\82Ñ\8aÑ\82 â\80\9e%sâ\80\9c Ðµ %s, Ð° Ð½Ðµ %s"
+msgid "unable to normalize alternate object path: %s"
+msgstr "алÑ\82еÑ\80наÑ\82ивниÑ\8fÑ\82 Ð¿Ñ\8aÑ\82 ÐºÑ\8aм Ð¾Ð±ÐµÐºÑ\82и Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð±Ñ\8aде Ð½Ð¾Ñ\80мализиÑ\80ан: â\80\9e%sâ\80\9c"
 
-#: object.c:233
+#: object-file.c:603
 #, c-format
-msgid "object %s has unknown type id %d"
-msgstr "обектът „%s“ е непознат вид: %d"
+msgid "%s: ignoring alternate object stores, nesting too deep"
+msgstr ""
+"%s: алтернативните хранилища за обекти се пренебрегват поради прекалено "
+"дълбоко влагане"
 
-#: object.c:246
+#: object-file.c:610
 #, c-format
-msgid "unable to parse object: %s"
-msgstr "обекÑ\82Ñ\8aÑ\82 â\80\9e%sâ\80\9c Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð±Ñ\8aде Ð°Ð½Ð°Ð»Ð¸Ð·Ð¸Ñ\80ан"
+msgid "unable to normalize object directory: %s"
+msgstr "диÑ\80екÑ\82оÑ\80иÑ\8fÑ\82а Ð·Ð° Ð¾Ð±ÐµÐºÑ\82и â\80\9e%sâ\80\9c Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð±Ñ\8aде Ð½Ð¾Ñ\80мализиÑ\80ана"
 
-#: object.c:266 object.c:278
-#, c-format
-msgid "hash mismatch %s"
-msgstr "разлика в контролната сума: „%s“"
+#: object-file.c:653
+msgid "unable to fdopen alternates lockfile"
+msgstr "заключващият файл за алтернативите не може да се отвори с „fdopen“"
 
-#: pack-bitmap.c:815 pack-bitmap.c:821 builtin/pack-objects.c:2216
-#, c-format
-msgid "unable to get size of %s"
-msgstr "размерът на „%s“ не може да бъде получен"
+#: object-file.c:671
+msgid "unable to read alternates file"
+msgstr "файлът с алтернативите не може да бъде прочетен"
 
-#: packfile.c:615
-msgid "offset before end of packfile (broken .idx?)"
-msgstr ""
-"отместване преди края на пакетния файл (възможно е индексът да е повреден)"
+#: object-file.c:678
+msgid "unable to move new alternates file into place"
+msgstr "новият файл с алтернативите не може да бъде преместен на мястото му"
 
-#: packfile.c:1907
+#: object-file.c:713
 #, c-format
-msgid "offset before start of pack index for %s (corrupt index?)"
-msgstr ""
-"отместване преди началото на индекса на пакетния файл „%s“ (възможно е "
-"индексът да е повреден)"
+msgid "path '%s' does not exist"
+msgstr "пътят „%s“ не съществува."
 
-#: packfile.c:1911
+#: object-file.c:734
 #, c-format
-msgid "offset beyond end of pack index for %s (truncated index?)"
-msgstr ""
-"отместване преди края на индекса на пакетния файл „%s“ (възможно е индексът "
-"да е отрязан)"
+msgid "reference repository '%s' as a linked checkout is not supported yet."
+msgstr "все още не се поддържа еталонно хранилище „%s“ като свързано."
 
-#: parse-options-cb.c:20 parse-options-cb.c:24
+#: object-file.c:740
 #, c-format
-msgid "option `%s' expects a numerical value"
-msgstr "опÑ\86иÑ\8fÑ\82а â\80\9e%sâ\80\9c Ð¾Ñ\87аква Ñ\87иÑ\81ло Ð·Ð° Ð°Ñ\80гÑ\83менÑ\82"
+msgid "reference repository '%s' is not a local repository."
+msgstr "еÑ\82алонноÑ\82о Ñ\85Ñ\80анилиÑ\89е â\80\9e%sâ\80\9c Ð½Ðµ Ðµ Ð»Ð¾ÐºÐ°Ð»Ð½Ð¾"
 
-#: parse-options-cb.c:41
+#: object-file.c:746
 #, c-format
-msgid "malformed expiration date '%s'"
-msgstr "непÑ\80авилна Ð´Ð°Ñ\82а Ð½Ð° Ñ\81Ñ\80ок: â\80\9e%sâ\80\9c"
+msgid "reference repository '%s' is shallow"
+msgstr "еÑ\82алонноÑ\82о Ñ\85Ñ\80анилиÑ\89е â\80\9e%sâ\80\9c Ðµ Ð¿Ð»Ð¸Ñ\82ко"
 
-#: parse-options-cb.c:54
+#: object-file.c:754
 #, c-format
-msgid "option `%s' expects \"always\", \"auto\", or \"never\""
-msgstr ""
-"опцията „%s“ изисква някоя от стойностите: „always“ (винаги), "
-"„auto“ (автоматично) или „never“ (никога)"
+msgid "reference repository '%s' is grafted"
+msgstr "еталонното хранилище „%s“ е с присаждане"
 
-#: parse-options-cb.c:132 parse-options-cb.c:149
+#: object-file.c:814
 #, c-format
-msgid "malformed object name '%s'"
-msgstr "непÑ\80авилно Ð¸Ð¼Ðµ Ð½Ð° Ð¾Ð±ÐµÐºÑ\82 „%s“"
+msgid "invalid line while parsing alternate refs: %s"
+msgstr "непÑ\80авилен Ñ\80ед Ð¿Ñ\80и Ð°Ð½Ð°Ð»Ð¸Ð·Ð° Ð½Ð° Ð°Ð»Ñ\82еÑ\80наÑ\82ивниÑ\82е Ñ\83казаÑ\82ели: „%s“"
 
-#: parse-options.c:38
+#: object-file.c:964
 #, c-format
-msgid "%s requires a value"
-msgstr "опцията „%s“ изисква аргумент"
+msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
+msgstr ""
+"неуспешен опит за „mmap“ %<PRIuMAX>, което е над позволеното %<PRIuMAX>"
 
-#: parse-options.c:73
-#, c-format
-msgid "%s is incompatible with %s"
-msgstr "опциите „%s“ и „%s“ са несъвместими"
+#: object-file.c:985
+msgid "mmap failed"
+msgstr "неуспешно изпълнение на „mmap“"
 
-#: parse-options.c:78
+#: object-file.c:1149
 #, c-format
-msgid "%s : incompatible with something else"
-msgstr "опцията „%s“ е несъвместима с нещо"
+msgid "object file %s is empty"
+msgstr "файлът с обектите „%s“ е празен"
 
-#: parse-options.c:92 parse-options.c:96 parse-options.c:317
+#: object-file.c:1284 object-file.c:2477
 #, c-format
-msgid "%s takes no value"
-msgstr "опÑ\86иÑ\8fÑ\82а â\80\9e%sâ\80\9c Ð½Ðµ Ð¿Ñ\80иема Ð°Ñ\80гÑ\83менÑ\82и"
+msgid "corrupt loose object '%s'"
+msgstr "непакеÑ\82иÑ\80аниÑ\8fÑ\82 Ð¾Ð±ÐµÐºÑ\82 â\80\9e%sâ\80\9c Ðµ Ð¿Ð¾Ð²Ñ\80еден"
 
-#: parse-options.c:94
+#: object-file.c:1286 object-file.c:2481
 #, c-format
-msgid "%s isn't available"
-msgstr "опÑ\86иÑ\8fÑ\82а â\80\9e%sâ\80\9c Ð½Ðµ Ðµ Ð½Ð°Ð»Ð¸Ñ\87на"
+msgid "garbage at end of loose object '%s'"
+msgstr "гÑ\80еÑ\88ни Ð´Ð°Ð½Ð½Ð¸ Ð² ÐºÑ\80аÑ\8f Ð½Ð° Ð½ÐµÐ¿Ð°ÐºÐµÑ\82иÑ\80аниÑ\8f Ð¾Ð±ÐµÐºÑ\82 â\80\9e%sâ\80\9c"
 
-#: parse-options.c:217
+#: object-file.c:1328
+msgid "invalid object type"
+msgstr "неправилен вид обект"
+
+#: object-file.c:1412
 #, c-format
-msgid "%s expects a non-negative integer value with an optional k/m/g suffix"
+msgid "unable to unpack %s header with --allow-unknown-type"
 msgstr ""
-"„%s“ очаква неотрицателно цяло число, евентуално със суфикс „k“/„m“/„g“"
+"заглавната част „%s“ не може да се разпакетира с опцията „--allow-unknown-"
+"type“"
 
-#: parse-options.c:386
+#: object-file.c:1415
 #, c-format
-msgid "ambiguous option: %s (could be --%s%s or --%s%s)"
-msgstr "нееднознаÑ\87на Ð¾Ð¿Ñ\86иÑ\8f: â\80\9e%sâ\80\9c (може Ð´Ð° Ðµ â\80\9e--%s%sâ\80\9c Ð¸Ð»Ð¸ â\80\9e--%s%sâ\80\9c)"
+msgid "unable to unpack %s header"
+msgstr "заглавнаÑ\82а Ñ\87аÑ\81Ñ\82 Ð½Ð° â\80\9e%sâ\80\9c Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð±Ñ\8aде Ñ\80азпакеÑ\82иÑ\80ана"
 
-#: parse-options.c:420 parse-options.c:428
+#: object-file.c:1421
 #, c-format
-msgid "did you mean `--%s` (with two dashes)?"
-msgstr "„--%s“ (с 2 тирета) ли имахте предвид?"
+msgid "unable to parse %s header with --allow-unknown-type"
+msgstr ""
+"заглавната част „%s“ не може да се анализира с опцията „--allow-unknown-type“"
 
-#: parse-options.c:666 parse-options.c:971
+#: object-file.c:1424
 #, c-format
-msgid "alias of --%s"
-msgstr "пÑ\81евдоним Ð½Ð° â\80\9e--%sâ\80\9c"
+msgid "unable to parse %s header"
+msgstr "заглавнаÑ\82а Ñ\87аÑ\81Ñ\82 Ð½Ð° â\80\9e%sâ\80\9c Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð±Ñ\8aде Ð°Ð½Ð°Ð»Ð¸Ð·Ð¸Ñ\80ана"
 
-#: parse-options.c:862
+#: object-file.c:1651
 #, c-format
-msgid "unknown option `%s'"
-msgstr "непознаÑ\82а Ð¾Ð¿Ñ\86иÑ\8f: â\80\9e%sâ\80\9c"
+msgid "failed to read object %s"
+msgstr "обекÑ\82Ñ\8aÑ\82 â\80\9e%sâ\80\9c Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð±Ñ\8aде Ð¿Ñ\80оÑ\87еÑ\82ен"
 
-#: parse-options.c:864
+#: object-file.c:1655
 #, c-format
-msgid "unknown switch `%c'"
-msgstr "непознаÑ\82 Ñ\84лаг â\80\9e%câ\80\9c"
+msgid "replacement %s not found for %s"
+msgstr "замеÑ\81Ñ\82иÑ\82елÑ\8fÑ\82 â\80\9e%sâ\80\9c Ð½Ð° â\80\9e%sâ\80\9c Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð±Ñ\8aде Ð¾Ñ\82кÑ\80иÑ\82"
 
-#: parse-options.c:866
+#: object-file.c:1659
 #, c-format
-msgid "unknown non-ascii option in string: `%s'"
-msgstr "непозната стойност извън „ascii“ в низа: „%s“"
-
-#: parse-options.c:890
-msgid "..."
-msgstr "…"
+msgid "loose object %s (stored in %s) is corrupt"
+msgstr "непакетираният обект „%s“ (в „%s“) е повреден"
 
-#: parse-options.c:909
+#: object-file.c:1663
 #, c-format
-msgid "usage: %s"
-msgstr "употреба: %s"
+msgid "packed object %s (stored in %s) is corrupt"
+msgstr "пакетираният обект „%s“ (в „%s“) е повреден"
 
-#. TRANSLATORS: the colon here should align with the
-#. one in "usage: %s" translation.
-#.
-#: parse-options.c:915
+#: object-file.c:1768
 #, c-format
-msgid "   or: %s"
-msgstr "     или: %s"
+msgid "unable to write file %s"
+msgstr "файлът „%s“ не може да бъде записан"
 
-#: parse-options.c:918
+#: object-file.c:1775
 #, c-format
-msgid "    %s"
-msgstr "    %s"
+msgid "unable to set permission to '%s'"
+msgstr "правата за достъп до „%s“ не могат да бъдат зададени"
 
-#: parse-options.c:957
-msgid "-NUM"
-msgstr "-ЧИСЛО"
+#: object-file.c:1782
+msgid "file write error"
+msgstr "грешка при запис на файл"
 
-#: path.c:915
-#, c-format
-msgid "Could not make %s writable by group"
-msgstr "Не могат да се дадат права за запис в директорията „%s“ на групата"
+#: object-file.c:1802
+msgid "error when closing loose object file"
+msgstr "грешка при затварянето на файла с непакетиран обект"
 
-#: pathspec.c:130
-msgid "Escape character '\\' not allowed as last character in attr value"
+#: object-file.c:1867
+#, c-format
+msgid "insufficient permission for adding an object to repository database %s"
 msgstr ""
-"Ð\95кÑ\80аниÑ\80аÑ\89иÑ\8fÑ\82 Ð·Ð½Ð°Ðº â\80\9e\\â\80\9cне Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ðµ Ð¿Ð¾Ñ\81леден Ð·Ð½Ð°Ðº Ð² Ñ\81Ñ\82ойноÑ\81Ñ\82Ñ\82а Ð½Ð° Ð°Ñ\82Ñ\80ибÑ\83Ñ\82"
+"нÑ\8fма Ð¿Ñ\80ава Ð·Ð° Ð´Ð¾Ð±Ð°Ð²Ñ\8fне Ð½Ð° Ð¾Ð±ÐµÐºÑ\82 ÐºÑ\8aм Ð±Ð°Ð·Ð°Ñ\82а Ð¾Ñ\82 Ð´Ð°Ð½Ð½Ð¸ Ð½Ð° Ñ\85Ñ\80анилиÑ\89еÑ\82о â\80\9e%sâ\80\9c"
 
-#: pathspec.c:148
-msgid "Only one 'attr:' specification is allowed."
-msgstr "Ð\9fозволено Ðµ Ñ\81амо ÐµÐ´Ð½Ð¾ Ñ\83казване Ð½Ð° â\80\9eattr:â\80\9c."
+#: object-file.c:1869
+msgid "unable to create temporary file"
+msgstr "не Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð±Ñ\8aде Ñ\81Ñ\8aздаден Ð²Ñ\80еменен Ñ\84айл"
 
-#: pathspec.c:151
-msgid "attr spec must not be empty"
-msgstr "„attr:“ трябва да указва стойност"
+#: object-file.c:1893
+msgid "unable to write loose object file"
+msgstr "грешка при записа на файла с непакетиран обект"
 
-#: pathspec.c:194
+#: object-file.c:1899
 #, c-format
-msgid "invalid attribute name %s"
-msgstr "неправилно име на атрибут: „%s“"
-
-#: pathspec.c:259
-msgid "global 'glob' and 'noglob' pathspec settings are incompatible"
-msgstr "глобалните настройки за пътища „glob“ и „noglob“ са несъвместими"
+msgid "unable to deflate new object %s (%d)"
+msgstr "новият обект „%s“ не може да се компресира с „deflate“: %d"
 
-#: pathspec.c:266
-msgid ""
-"global 'literal' pathspec setting is incompatible with all other global "
-"pathspec settings"
-msgstr ""
-"глобалната настройка за дословни пътища „literal“ е несъвместима с всички "
-"други глобални настройки за пътища"
+#: object-file.c:1903
+#, c-format
+msgid "deflateEnd on object %s failed (%d)"
+msgstr "неуспешно приключване на „deflate“ върху „%s“: %d"
 
-#: pathspec.c:306
-msgid "invalid parameter for pathspec magic 'prefix'"
-msgstr "неправилен параметър за опцията за магически пътища „prefix“"
+#: object-file.c:1907
+#, c-format
+msgid "confused by unstable object source data for %s"
+msgstr "грешка поради нестабилния източник данни за обектите „%s“"
 
-#: pathspec.c:327
+#: object-file.c:1917 builtin/pack-objects.c:1097
 #, c-format
-msgid "Invalid pathspec magic '%.*s' in '%s'"
-msgstr "Ð\9dепÑ\80авилна Ñ\81Ñ\82ойноÑ\81Ñ\82 Ð·Ð° Ð¾Ð¿Ñ\86иÑ\8fÑ\82а Ð·Ð° Ð¼Ð°Ð³Ð¸Ñ\87еÑ\81ки Ð¿Ñ\8aÑ\82иÑ\89а â\80\9e%.*sâ\80\9c Ð² „%s“"
+msgid "failed utime() on %s"
+msgstr "неÑ\83Ñ\81пеÑ\88но Ð·Ð°Ð´Ð°Ð²Ð°Ð½Ðµ Ð½Ð° Ð²Ñ\80еме Ð½Ð° Ð´Ð¾Ñ\81Ñ\82Ñ\8aп/Ñ\81Ñ\8aздаване Ñ\87Ñ\80ез â\80\9eutimeâ\80\9c Ð½Ð° „%s“"
 
-#: pathspec.c:332
+#: object-file.c:1994
 #, c-format
-msgid "Missing ')' at the end of pathspec magic in '%s'"
-msgstr "Ð\97накÑ\8aÑ\82 â\80\9e\80\9c Ð»Ð¸Ð¿Ñ\81ва Ð² Ð¾Ð¿Ñ\86иÑ\8fÑ\82а Ð·Ð° Ð¼Ð°Ð³Ð¸Ñ\87еÑ\81ки Ð¿Ñ\8aÑ\82иÑ\89а Ð² â\80\9e%sâ\80\9c"
+msgid "cannot read object for %s"
+msgstr "обекÑ\82Ñ\8aÑ\82 Ð·Ð° â\80\9e%sâ\80\9c Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ð¿Ñ\80оÑ\87еÑ\82е"
 
-#: pathspec.c:370
+#: object-file.c:2045
+msgid "corrupt commit"
+msgstr "повредено подаване"
+
+#: object-file.c:2053
+msgid "corrupt tag"
+msgstr "повреден етикет"
+
+#: object-file.c:2153
 #, c-format
-msgid "Unimplemented pathspec magic '%c' in '%s'"
-msgstr "Ð\9cагиÑ\87еÑ\81киÑ\82е Ð¿Ñ\8aÑ\82иÑ\89а â\80\9e%câ\80\9c Ñ\81а Ð±ÐµÐ· Ñ\80еализаÑ\86иÑ\8f Ð·а „%s“"
+msgid "read error while indexing %s"
+msgstr "гÑ\80еÑ\88ка Ð¿Ñ\80и Ñ\87еÑ\82ене Ð¿Ð¾ Ð²Ñ\80еме Ð½Ð° Ð¸Ð½Ð´ÐµÐºÑ\81иÑ\80ане Ð½а „%s“"
 
-#: pathspec.c:429
+#: object-file.c:2156
 #, c-format
-msgid "%s: 'literal' and 'glob' are incompatible"
-msgstr "%s: опциите „literal“ и „glob“ са несъвместими"
+msgid "short read while indexing %s"
+msgstr "непълно прочитане по време на индексиране на „%s“"
 
-#: pathspec.c:445
+#: object-file.c:2229 object-file.c:2239
 #, c-format
-msgid "%s: '%s' is outside repository at '%s'"
-msgstr "%s: „%s“ е извън хранилището при „%s“"
+msgid "%s: failed to insert into database"
+msgstr "„%s“ не може да се вмъкне в базата от данни"
 
-#: pathspec.c:521
+#: object-file.c:2245
 #, c-format
-msgid "'%s' (mnemonic: '%c')"
-msgstr "„%s“ (клавиш: „%c“)"
+msgid "%s: unsupported file type"
+msgstr "неподдържан вид файл: „%s“"
 
-#: pathspec.c:531
+#: object-file.c:2269
 #, c-format
-msgid "%s: pathspec magic not supported by this command: %s"
-msgstr "%s: магическите пътища не се поддържат от командата „%s“"
+msgid "%s is not a valid object"
+msgstr "„%s“ е неправилен обект"
 
-#: pathspec.c:598
+#: object-file.c:2271
 #, c-format
-msgid "pathspec '%s' is beyond a symbolic link"
-msgstr "пътят „%s“ е след символна връзка"
+msgid "%s is not a valid '%s' object"
+msgstr "„%s“ е неправилен обект от вид „%s“"
 
-#: pathspec.c:643
+#: object-file.c:2298 builtin/index-pack.c:192
 #, c-format
-msgid "line is badly quoted: %s"
-msgstr "непÑ\80авилно Ñ\86иÑ\82иÑ\80ан Ñ\80ед: %s"
+msgid "unable to open %s"
+msgstr "обекÑ\82Ñ\8aÑ\82 â\80\9e%sâ\80\9c Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð±Ñ\8aде Ð¾Ñ\82воÑ\80ен"
 
-#: pkt-line.c:92
-msgid "unable to write flush packet"
-msgstr "пакетът за изчистване на буферите не може да се запише"
+#: object-file.c:2488 object-file.c:2541
+#, c-format
+msgid "hash mismatch for %s (expected %s)"
+msgstr "неправилна контролна сума за „%s“ (трябва да е %s)"
 
-#: pkt-line.c:99
-msgid "unable to write delim packet"
-msgstr "разделящият пакет не може да се запише"
+#: object-file.c:2512
+#, c-format
+msgid "unable to mmap %s"
+msgstr "неуспешно изпълнение на „mmap“ върху „%s“"
 
-#: pkt-line.c:106
-msgid "unable to write stateless separator packet"
-msgstr "разделящият пакет без запазване на състояние не може да се запише"
+#: object-file.c:2517
+#, c-format
+msgid "unable to unpack header of %s"
+msgstr "заглавната част на „%s“ не може да бъде разпакетирана"
 
-#: pkt-line.c:113
-msgid "flush packet write failed"
-msgstr "неуспешно изчистване на буферите при запис на пакет"
+#: object-file.c:2523
+#, c-format
+msgid "unable to parse header of %s"
+msgstr "заглавната част на „%s“ не може да бъде анализирана"
 
-#: pkt-line.c:153 pkt-line.c:239
-msgid "protocol error: impossibly long line"
-msgstr "протоколна грешка: прекалено дълъг ред"
+#: object-file.c:2534
+#, c-format
+msgid "unable to unpack contents of %s"
+msgstr "съдържанието на „%s“ не може да бъде разпакетирано"
 
-#: pkt-line.c:169 pkt-line.c:171
-msgid "packet write with format failed"
-msgstr "неуспешен запис на пакет с формат"
+#: object-name.c:486
+#, c-format
+msgid "short object ID %s is ambiguous"
+msgstr "късият идентификатор на обект „%s“ не е еднозначен"
 
-#: pkt-line.c:203
-msgid "packet write failed - data exceeds max packet size"
-msgstr ""
-"неуспешен запис на пакетен файл — данните надвишават максималният размер на "
-"пакет"
+#: object-name.c:497
+msgid "The candidates are:"
+msgstr "Възможностите са:"
 
-#: pkt-line.c:210 pkt-line.c:217
-msgid "packet write failed"
-msgstr "неуспешен запис на пакет"
+#: object-name.c:796
+msgid ""
+"Git normally never creates a ref that ends with 40 hex characters\n"
+"because it will be ignored when you just specify 40-hex. These refs\n"
+"may be created by mistake. For example,\n"
+"\n"
+"  git switch -c $br $(git rev-parse ...)\n"
+"\n"
+"where \"$br\" is somehow empty and a 40-hex ref is created. Please\n"
+"examine these refs and maybe delete them. Turn this message off by\n"
+"running \"git config advice.objectNameWarning false\""
+msgstr ""
+"При нормална работа Git никога не създава указатели, които завършват\n"
+"с 40 шестнадесетични знака, защото стандартно те ще бъдат прескачани.\n"
+"Възможно е такива указатели да са създадени случайно.  Например:\n"
+"\n"
+"    git switch -c $BRANCH $(git rev-parse …)\n"
+"\n"
+"където стойността на променливата на средата BRANCH е празна, при което\n"
+"се създава подобен указател.  Прегледайте тези указатели и ги изтрийте.\n"
+"За да изключите това съобщение, изпълнете:\n"
+"\n"
+"    git config advice.objectNameWarning false"
 
-#: pkt-line.c:302
-msgid "read error"
-msgstr "грешка при четене"
+#: object-name.c:916
+#, c-format
+msgid "log for '%.*s' only goes back to %s"
+msgstr "журналът за „%.*s“ стига само до „%s“"
 
-#: pkt-line.c:310
-msgid "the remote end hung up unexpectedly"
-msgstr "отдалеченото хранилище неочаквано прекъсна връзката"
+#: object-name.c:924
+#, c-format
+msgid "log for '%.*s' only has %d entries"
+msgstr "журналът за „%.*s“ съдържа само %d записа"
 
-#: pkt-line.c:338
+#: object-name.c:1702
 #, c-format
-msgid "protocol error: bad line length character: %.4s"
-msgstr "пÑ\80оÑ\82околна Ð³Ñ\80еÑ\88ка: Ð½ÐµÐ¿Ñ\80авилeн Ð·Ð½Ð°Ðº Ð·Ð° Ð´Ñ\8aлжина Ð½Ð° Ñ\80ед: %.4s"
+msgid "path '%s' exists on disk, but not in '%.*s'"
+msgstr "пÑ\8aÑ\82Ñ\8fÑ\82 â\80\9e%sâ\80\9c Ñ\81Ñ\8aÑ\89еÑ\81Ñ\82вÑ\83ва Ð½Ð° Ð´Ð¸Ñ\81ка, Ð½Ð¾ Ð½Ðµ Ð¸ Ð² â\80\9e%.*sâ\80\9c"
 
-#: pkt-line.c:352 pkt-line.c:357
+#: object-name.c:1708
 #, c-format
-msgid "protocol error: bad line length %d"
-msgstr "протоколна грешка: неправилна дължина на ред: %d"
+msgid ""
+"path '%s' exists, but not '%s'\n"
+"hint: Did you mean '%.*s:%s' aka '%.*s:./%s'?"
+msgstr ""
+"пътят „%s“ съществува на диска, но не е в „%s“\n"
+"Пробвайте с „%.*s:%s“, което е същото като „%.*s:./%s“."
 
-#: pkt-line.c:373 sideband.c:165
+#: object-name.c:1717
 #, c-format
-msgid "remote error: %s"
-msgstr "оÑ\82далеÑ\87ена Ð³Ñ\80еÑ\88ка: %s"
+msgid "path '%s' does not exist in '%.*s'"
+msgstr "пÑ\8aÑ\82Ñ\8fÑ\82 â\80\9e%sâ\80\9c Ð½Ðµ Ñ\81Ñ\8aÑ\89еÑ\81Ñ\82вÑ\83ва Ð² â\80\9e%.*sâ\80\9c"
 
-#: preload-index.c:119
-msgid "Refreshing index"
-msgstr "Обновяване на индекса"
+#: object-name.c:1745
+#, c-format
+msgid ""
+"path '%s' is in the index, but not at stage %d\n"
+"hint: Did you mean ':%d:%s'?"
+msgstr ""
+"пътят „%s“ е в индекса, но не версия %d\n"
+"Пробвайте с „%d:%s“."
 
-#: preload-index.c:138
+#: object-name.c:1761
 #, c-format
-msgid "unable to create threaded lstat: %s"
-msgstr "не може да се създаде нишка за изпълнението на „lstat“: %s"
+msgid ""
+"path '%s' is in the index, but not '%s'\n"
+"hint: Did you mean ':%d:%s' aka ':%d:./%s'?"
+msgstr ""
+"пътят „%s“ е в индекса, но не в „%s“\n"
+"Пробвайте с „%d:%s“, което е същото като „%d:./%s“."
 
-#: pretty.c:983
-msgid "unable to parse --pretty format"
-msgstr "аргументът към опцията „--pretty“ не може да се анализира"
+#: object-name.c:1769
+#, c-format
+msgid "path '%s' exists on disk, but not in the index"
+msgstr "пътят „%s“ съществува на диска, но не е в индекса"
 
-#: promisor-remote.c:30
-msgid "promisor-remote: unable to fork off fetch subprocess"
-msgstr "хранилище-гарант: неуспешно създаване на процес за доставяне"
+#: object-name.c:1771
+#, c-format
+msgid "path '%s' does not exist (neither on disk nor in the index)"
+msgstr "пътят „%s“ не съществува нито на диска, нито в индекса"
 
-#: promisor-remote.c:35 promisor-remote.c:37
-msgid "promisor-remote: could not write to fetch subprocess"
-msgstr "хранилище-гарант: не може да се пише към процеса за доставяне"
+#: object-name.c:1784
+msgid "relative path syntax can't be used outside working tree"
+msgstr "относителен път не може да се ползва извън работното дърво"
 
-#: promisor-remote.c:41
-msgid "promisor-remote: could not close stdin to fetch subprocess"
-msgstr ""
-"хранилище-гарант: стандартният вход на процеса за доставяне не може да се "
-"затвори"
+#: object-name.c:1922
+#, c-format
+msgid "invalid object name '%.*s'."
+msgstr "неправилно име на обект: „%.*s“"
 
-#: promisor-remote.c:53
+#: object.c:53
 #, c-format
-msgid "promisor remote name cannot begin with '/': %s"
-msgstr ""
-"името отдалеченото хранилище-гарант не може за започва със знака „/“: %s"
+msgid "invalid object type \"%s\""
+msgstr "неправилен вид обект: „%s“"
 
-#: prune-packed.c:35
-msgid "Removing duplicate objects"
-msgstr "Изтриване на повтарящите се обекти"
+#: object.c:173
+#, c-format
+msgid "object %s is a %s, not a %s"
+msgstr "обектът „%s“ е %s, а не %s"
 
-#: range-diff.c:77
-msgid "could not start `log`"
-msgstr "командата за журнала с подавания „log“ не може да се стартира"
+#: object.c:233
+#, c-format
+msgid "object %s has unknown type id %d"
+msgstr "обектът „%s“ е непознат вид: %d"
 
-#: range-diff.c:79
-msgid "could not read `log` output"
-msgstr ""
-"изходът от командата за журнала с подавания „log“ не може да се прочете"
+#: object.c:246
+#, c-format
+msgid "unable to parse object: %s"
+msgstr "обектът „%s“ не може да бъде анализиран"
 
-#: range-diff.c:98 sequencer.c:5310
+#: object.c:266 object.c:278
 #, c-format
-msgid "could not parse commit '%s'"
-msgstr "подаването „%s“ не може да бъде анализирано"
+msgid "hash mismatch %s"
+msgstr "разлика в контролната сума: „%s“"
 
-#: range-diff.c:112
+#: pack-bitmap.c:843 pack-bitmap.c:849 builtin/pack-objects.c:2226
 #, c-format
-msgid ""
-"could not parse first line of `log` output: did not start with 'commit ': "
-"'%s'"
-msgstr ""
-"първият ред от изхода на командата „log“ не може да се анализира, защото не "
-"започва с „commit “: „%s“"
+msgid "unable to get size of %s"
+msgstr "размерът на „%s“ не може да бъде получен"
 
-#: range-diff.c:137
+#: pack-bitmap.c:1489 builtin/rev-list.c:92
 #, c-format
-msgid "could not parse git header '%.*s'"
-msgstr "заглавнаÑ\82а Ñ\87аÑ\81Ñ\82 Ð½Ð° git â\80\9e%.*sâ\80\9c Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ð°Ð½Ð°Ð»Ð¸Ð·Ð¸Ñ\80а"
+msgid "unable to get disk usage of %s"
+msgstr "използваноÑ\82о Ð¼Ñ\8fÑ\81Ñ\82о Ð·Ð° â\80\9e%sâ\80\9c Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð±Ñ\8aде Ð¿Ð¾Ð»Ñ\83Ñ\87ено"
 
-#: range-diff.c:299
-msgid "failed to generate diff"
-msgstr "неуспешно търсене на разлика"
+#: pack-revindex.c:220
+#, c-format
+msgid "reverse-index file %s is too small"
+msgstr "файлът с обратния индекс „%s“ е твърде малък"
 
-#: range-diff.c:532 range-diff.c:534
+#: pack-revindex.c:225
 #, c-format
-msgid "could not parse log for '%s'"
-msgstr "журналът с подаванията на „%s“ не може да бъде анализиран"
+msgid "reverse-index file %s is corrupt"
+msgstr "файлът с обратния индекс „%s“ е повреден"
 
-#: read-cache.c:682
+#: pack-revindex.c:233
 #, c-format
-msgid "will not add file alias '%s' ('%s' already exists in index)"
-msgstr ""
-"няма да бъде добавен псевдоним за файл „%s“ („%s“ вече съществува в индекса)"
+msgid "reverse-index file %s has unknown signature"
+msgstr "непознат подпис за файла на обратния индекс „%s“"
 
-#: read-cache.c:698
-msgid "cannot create an empty blob in the object database"
-msgstr "в базата от данни за обектите не може да се създаде празен обект-BLOB"
+#: pack-revindex.c:237
+#, c-format
+msgid "reverse-index file %s has unsupported version %<PRIu32>"
+msgstr "версия %2$<PRIu32> на файла с обратен индекс „%1$s“ не се поддържа"
 
-#: read-cache.c:720
+#: pack-revindex.c:242
 #, c-format
-msgid "%s: can only add regular files, symbolic links or git-directories"
+msgid "reverse-index file %s has unsupported hash id %<PRIu32>"
 msgstr ""
-"%s: може да добавяте само обикновени файлове, символни връзки и директории "
-"на git"
+"идентификатор на контролна сума %2$<PRIu32> на файла с обратен индекс „%1$s“ "
+"не Ñ\81е Ð¿Ð¾Ð´Ð´Ñ\8aÑ\80жа"
 
-#: read-cache.c:725
+#: pack-write.c:236
+msgid "cannot both write and verify reverse index"
+msgstr "обратният индекс не може едновременно да се записва и да се проверява"
+
+#: pack-write.c:257
 #, c-format
-msgid "'%s' does not have a commit checked out"
-msgstr "не Ðµ Ð¸Ð·Ñ\82еглено Ð¿Ð¾Ð´Ð°Ð²Ð°Ð½Ðµ Ð² „%s“"
+msgid "could not stat: %s"
+msgstr "не Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ð¿Ð¾Ð»Ñ\83Ñ\87и Ð¸Ð½Ñ\84оÑ\80маÑ\86иÑ\8f Ñ\87Ñ\80ез â\80\9estatâ\80\9c Ð·Ð° „%s“"
 
-#: read-cache.c:777
+#: pack-write.c:269
 #, c-format
-msgid "unable to index file '%s'"
-msgstr "файлът „%s“ не може да бъде индексиран"
+msgid "failed to make %s readable"
+msgstr "не може да се дадат права за четене на „%s“"
 
-#: read-cache.c:796
+#: pack-write.c:508
 #, c-format
-msgid "unable to add '%s' to index"
-msgstr "„%s“ не може да се добави в индекса"
+msgid "could not write '%s' promisor file"
+msgstr "гарантиращият файл „%s“ не може да се запише"
 
-#: read-cache.c:807
+#: packfile.c:625
+msgid "offset before end of packfile (broken .idx?)"
+msgstr ""
+"отместване преди края на пакетния файл (възможно е индексът да е повреден)"
+
+#: packfile.c:1934
 #, c-format
-msgid "unable to stat '%s'"
-msgstr "„stat“ не може да се изпълни върху „%s“"
+msgid "offset before start of pack index for %s (corrupt index?)"
+msgstr ""
+"отместване преди началото на индекса на пакетния файл „%s“ (възможно е "
+"индексът да е повреден)"
 
-#: read-cache.c:1318
+#: packfile.c:1938
 #, c-format
-msgid "'%s' appears as both a file and as a directory"
-msgstr "„%s“ съществува и като файл, и като директория"
+msgid "offset beyond end of pack index for %s (truncated index?)"
+msgstr ""
+"отместване преди края на индекса на пакетния файл „%s“ (възможно е индексът "
+"да е отрязан)"
 
-#: read-cache.c:1524
-msgid "Refresh index"
-msgstr "Обновяване на индекса"
+#: parse-options-cb.c:20 parse-options-cb.c:24
+#, c-format
+msgid "option `%s' expects a numerical value"
+msgstr "опцията „%s“ очаква число за аргумент"
 
-#: read-cache.c:1639
+#: parse-options-cb.c:41
 #, c-format
-msgid ""
-"index.version set, but the value is invalid.\n"
-"Using version %i"
-msgstr ""
-"Зададена е неправилна стойност на настройката „index.version“.\n"
-"Ще се ползва версия %i"
+msgid "malformed expiration date '%s'"
+msgstr "неправилна дата на срок: „%s“"
 
-#: read-cache.c:1649
+#: parse-options-cb.c:54
 #, c-format
-msgid ""
-"GIT_INDEX_VERSION set, but the value is invalid.\n"
-"Using version %i"
+msgid "option `%s' expects \"always\", \"auto\", or \"never\""
 msgstr ""
-"Зададена е неправилна стойност на променливата на средата "
-"„GIT_INDEX_VERSION“.\n"
-"Ще се ползва версия %i"
+"опцията „%s“ изисква някоя от стойностите: „always“ (винаги), "
+"„auto“ (автоматично) или „never“ (никога)"
 
-#: read-cache.c:1705
+#: parse-options-cb.c:132 parse-options-cb.c:149
 #, c-format
-msgid "bad signature 0x%08x"
-msgstr "непÑ\80авилен Ð¿Ð¾Ð´Ð¿Ð¸Ñ\81: â\80\9e0x%08x“"
+msgid "malformed object name '%s'"
+msgstr "непÑ\80авилно Ð¸Ð¼Ðµ Ð½Ð° Ð¾Ð±ÐµÐºÑ\82 â\80\9e%s“"
 
-#: read-cache.c:1708
+#: parse-options.c:38
 #, c-format
-msgid "bad index version %d"
-msgstr "неправилна версия на индекса %d"
-
-#: read-cache.c:1717
-msgid "bad index file sha1 signature"
-msgstr "неправилен подпис за контролна сума по SHA1 на файла на индекса"
+msgid "%s requires a value"
+msgstr "опцията „%s“ изисква аргумент"
 
-#: read-cache.c:1747
+#: parse-options.c:73
 #, c-format
-msgid "index uses %.4s extension, which we do not understand"
-msgstr ""
-"индексът ползва разширение „%.4s“, което не се поддържа от тази версия на git"
+msgid "%s is incompatible with %s"
+msgstr "опциите „%s“ и „%s“ са несъвместими"
 
-#: read-cache.c:1749
+#: parse-options.c:78
 #, c-format
-msgid "ignoring %.4s extension"
-msgstr "игноÑ\80иÑ\80ане Ð½Ð° Ñ\80азÑ\88иÑ\80ениеÑ\82о â\80\9e%.4sâ\80\9c"
+msgid "%s : incompatible with something else"
+msgstr "опÑ\86иÑ\8fÑ\82а â\80\9e%sâ\80\9c Ðµ Ð½ÐµÑ\81Ñ\8aвмеÑ\81Ñ\82има Ñ\81 Ð½ÐµÑ\89о"
 
-#: read-cache.c:1786
+#: parse-options.c:92 parse-options.c:96 parse-options.c:317
 #, c-format
-msgid "unknown index entry format 0x%08x"
-msgstr "непознаÑ\82 Ñ\84оÑ\80маÑ\82 Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ\81 Ð² Ð¸Ð½Ð´ÐµÐºÑ\81а: â\80\9e0x%08xâ\80\9c"
+msgid "%s takes no value"
+msgstr "опÑ\86иÑ\8fÑ\82а â\80\9e%sâ\80\9c Ð½Ðµ Ð¿Ñ\80иема Ð°Ñ\80гÑ\83менÑ\82и"
 
-#: read-cache.c:1802
+#: parse-options.c:94
 #, c-format
-msgid "malformed name field in the index, near path '%s'"
-msgstr "непÑ\80авилно Ð¸Ð¼Ðµ Ð½Ð° Ð¿Ð¾Ð»Ðµ Ð² Ð¸Ð½Ð´ÐµÐºÑ\81а Ð±Ð»Ð¸Ð·Ð¾ Ð´Ð¾ Ð¿Ñ\8aÑ\82Ñ\8f â\80\9e%sâ\80\9c"
+msgid "%s isn't available"
+msgstr "опÑ\86иÑ\8fÑ\82а â\80\9e%sâ\80\9c Ð½Ðµ Ðµ Ð½Ð°Ð»Ð¸Ñ\87на"
 
-#: read-cache.c:1859
-msgid "unordered stage entries in index"
-msgstr "неподредени записи в индекса"
+#: parse-options.c:217
+#, c-format
+msgid "%s expects a non-negative integer value with an optional k/m/g suffix"
+msgstr ""
+"„%s“ очаква неотрицателно цяло число, евентуално със суфикс „k“/„m“/„g“"
 
-#: read-cache.c:1862
+#: parse-options.c:386
 #, c-format
-msgid "multiple stage entries for merged file '%s'"
-msgstr "множеÑ\81Ñ\82во Ð·Ð°Ð¿Ð¸Ñ\81и Ð·Ð° Ñ\81леÑ\82иÑ\8f Ñ\84айл â\80\9e%sâ\80\9c"
+msgid "ambiguous option: %s (could be --%s%s or --%s%s)"
+msgstr "нееднознаÑ\87на Ð¾Ð¿Ñ\86иÑ\8f: â\80\9e%sâ\80\9c (може Ð´Ð° Ðµ â\80\9e--%s%sâ\80\9c Ð¸Ð»Ð¸ â\80\9e--%s%sâ\80\9c)"
 
-#: read-cache.c:1865
+#: parse-options.c:420 parse-options.c:428
 #, c-format
-msgid "unordered stage entries for '%s'"
-msgstr "неподредени записи за „%s“"
+msgid "did you mean `--%s` (with two dashes)?"
+msgstr "„--%s“ (с 2 тирета) ли имахте предвид?"
 
-#: read-cache.c:1971 read-cache.c:2262 rerere.c:565 rerere.c:599 rerere.c:1111
-#: submodule.c:1628 builtin/add.c:538 builtin/check-ignore.c:181
-#: builtin/checkout.c:502 builtin/checkout.c:688 builtin/clean.c:991
-#: builtin/commit.c:364 builtin/diff-tree.c:122 builtin/grep.c:507
-#: builtin/mv.c:146 builtin/reset.c:247 builtin/rm.c:290
-#: builtin/submodule--helper.c:332
-msgid "index file corrupt"
-msgstr "файлът с индекса е повреден"
+#: parse-options.c:666 parse-options.c:971
+#, c-format
+msgid "alias of --%s"
+msgstr "псевдоним на „--%s“"
 
-#: read-cache.c:2115
+#: parse-options.c:862
 #, c-format
-msgid "unable to create load_cache_entries thread: %s"
-msgstr "не може да се създаде нишка за зареждане на обектите от кеша: %s"
+msgid "unknown option `%s'"
+msgstr "непозната опция: „%s“"
 
-#: read-cache.c:2128
+#: parse-options.c:864
 #, c-format
-msgid "unable to join load_cache_entries thread: %s"
-msgstr "не може да се изчака нишка за зареждане на обектите от кеша: %s"
+msgid "unknown switch `%c'"
+msgstr "непознат флаг „%c“"
 
-#: read-cache.c:2161
+#: parse-options.c:866
 #, c-format
-msgid "%s: index file open failed"
-msgstr "%s: неуспешно отваряне на файла на индекса"
+msgid "unknown non-ascii option in string: `%s'"
+msgstr "непозната стойност извън „ascii“ в низа: „%s“"
+
+#: parse-options.c:890
+msgid "..."
+msgstr "…"
 
-#: read-cache.c:2165
+#: parse-options.c:909
 #, c-format
-msgid "%s: cannot stat the open index"
-msgstr "%s: не може да се получи информация за отворения индекс със „stat“"
+msgid "usage: %s"
+msgstr "употреба: %s"
 
-#: read-cache.c:2169
+#. TRANSLATORS: the colon here should align with the
+#. one in "usage: %s" translation.
+#.
+#: parse-options.c:915
 #, c-format
-msgid "%s: index file smaller than expected"
-msgstr "%s: файлът на индекса е по-малък от очакваното"
+msgid "   or: %s"
+msgstr "     или: %s"
 
-#: read-cache.c:2173
+#: parse-options.c:918
 #, c-format
-msgid "%s: unable to map index file"
-msgstr "%s: неуспешно заделяне на съответстваща памет чрез „mmap“ на индекса"
+msgid "    %s"
+msgstr "    %s"
+
+#: parse-options.c:957
+msgid "-NUM"
+msgstr "-ЧИСЛО"
 
-#: read-cache.c:2215
+#: path.c:915
 #, c-format
-msgid "unable to create load_index_extensions thread: %s"
+msgid "Could not make %s writable by group"
+msgstr "Не могат да се дадат права за запис в директорията „%s“ на групата"
+
+#: pathspec.c:130
+msgid "Escape character '\\' not allowed as last character in attr value"
 msgstr ""
-"не може да се създаде нишка за зареждане на разширенията на индекса: %s"
+"Екраниращият знак „\\“не може да е последен знак в стойността на атрибут"
+
+#: pathspec.c:148
+msgid "Only one 'attr:' specification is allowed."
+msgstr "Позволено е само едно указване на „attr:“."
+
+#: pathspec.c:151
+msgid "attr spec must not be empty"
+msgstr "„attr:“ трябва да указва стойност"
 
-#: read-cache.c:2242
+#: pathspec.c:194
 #, c-format
-msgid "unable to join load_index_extensions thread: %s"
+msgid "invalid attribute name %s"
+msgstr "неправилно име на атрибут: „%s“"
+
+#: pathspec.c:259
+msgid "global 'glob' and 'noglob' pathspec settings are incompatible"
+msgstr "глобалните настройки за пътища „glob“ и „noglob“ са несъвместими"
+
+#: pathspec.c:266
+msgid ""
+"global 'literal' pathspec setting is incompatible with all other global "
+"pathspec settings"
 msgstr ""
-"не може да се създаде нишка за зареждане на разширенията на индекса: %s"
+"глобалната настройка за дословни пътища „literal“ е несъвместима с всички "
+"други глобални настройки за пътища"
 
-#: read-cache.c:2274
-#, c-format
-msgid "could not freshen shared index '%s'"
-msgstr "споделеният индекс „%s“ не може да се обнови"
+#: pathspec.c:306
+msgid "invalid parameter for pathspec magic 'prefix'"
+msgstr "неправилен параметър за опцията за магически пътища „prefix“"
 
-#: read-cache.c:2321
+#: pathspec.c:327
 #, c-format
-msgid "broken index, expect %s in %s, got %s"
-msgstr "гÑ\80еÑ\88ки Ð² Ð¸Ð½Ð´ÐµÐºÑ\81а â\80\94 Ð² â\80\9e%2$sâ\80\9c Ñ\81е Ð¾Ñ\87аква â\80\9e%1$sâ\80\9c, Ð° Ð±Ðµ Ð¿Ð¾Ð»Ñ\83Ñ\87ено â\80\9e%3$s“"
+msgid "Invalid pathspec magic '%.*s' in '%s'"
+msgstr "Ð\9dепÑ\80авилна Ñ\81Ñ\82ойноÑ\81Ñ\82 Ð·Ð° Ð¾Ð¿Ñ\86иÑ\8fÑ\82а Ð·Ð° Ð¼Ð°Ð³Ð¸Ñ\87еÑ\81ки Ð¿Ñ\8aÑ\82иÑ\89а â\80\9e%.*sâ\80\9c Ð² â\80\9e%s“"
 
-#: read-cache.c:3017 strbuf.c:1171 wrapper.c:633 builtin/merge.c:1140
+#: pathspec.c:332
 #, c-format
-msgid "could not close '%s'"
-msgstr "„%s“ не може да се затвори"
+msgid "Missing ')' at the end of pathspec magic in '%s'"
+msgstr "Знакът „)“ липсва в опцията за магически пътища в „%s“"
 
-#: read-cache.c:3120 sequencer.c:2479 sequencer.c:4231
+#: pathspec.c:370
 #, c-format
-msgid "could not stat '%s'"
-msgstr "неÑ\83Ñ\81пеÑ\88но Ð¸Ð·Ð¿Ñ\8aлнение Ð½Ð° â\80\9estatâ\80\9c Ð²Ñ\8aÑ\80Ñ\85Ñ\83 „%s“"
+msgid "Unimplemented pathspec magic '%c' in '%s'"
+msgstr "Ð\9cагиÑ\87еÑ\81киÑ\82е Ð¿Ñ\8aÑ\82иÑ\89а â\80\9e%câ\80\9c Ñ\81а Ð±ÐµÐ· Ñ\80еализаÑ\86иÑ\8f Ð·Ð° „%s“"
 
-#: read-cache.c:3133
+#: pathspec.c:429
 #, c-format
-msgid "unable to open git dir: %s"
-msgstr "не може да се отвори директорията на git: %s"
+msgid "%s: 'literal' and 'glob' are incompatible"
+msgstr "%s: опциите „literal“ и „glob“ са несъвместими"
 
-#: read-cache.c:3145
+#: pathspec.c:445
 #, c-format
-msgid "unable to unlink: %s"
-msgstr "неуспешно изтриване на „%s“"
+msgid "%s: '%s' is outside repository at '%s'"
+msgstr "%s: „%s“ е извън хранилището при „%s“"
 
-#: read-cache.c:3170
+#: pathspec.c:521
 #, c-format
-msgid "cannot fix permission bits on '%s'"
-msgstr "правата за достъп до „%s“ не могат да бъдат поправени"
+msgid "'%s' (mnemonic: '%c')"
+msgstr "„%s“ (клавиш: „%c“)"
 
-#: read-cache.c:3319
+#: pathspec.c:531
 #, c-format
-msgid "%s: cannot drop to stage #0"
-msgstr "%s: Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ð¿Ñ\80емине ÐºÑ\8aм ÐµÑ\82ап â\84\960"
+msgid "%s: pathspec magic not supported by this command: %s"
+msgstr "%s: Ð¼Ð°Ð³Ð¸Ñ\87еÑ\81киÑ\82е Ð¿Ñ\8aÑ\82иÑ\89а Ð½Ðµ Ñ\81е Ð¿Ð¾Ð´Ð´Ñ\8aÑ\80жаÑ\82 Ð¾Ñ\82 ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°Ñ\82а â\80\9e%sâ\80\9c"
 
-#: rebase-interactive.c:11
-msgid ""
-"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 ""
-"Може да промените това с командите „git rebase --edit-todo“ и „git rebase --"
-"continue“ след това.\n"
-"Може и да преустановите пребазирането с командата „git rebase --abort“.\n"
+#: pathspec.c:598
+#, c-format
+msgid "pathspec '%s' is beyond a symbolic link"
+msgstr "пътят „%s“ е след символна връзка"
 
-#: rebase-interactive.c:33
+#: pathspec.c:643
 #, c-format
-msgid ""
-"unrecognized setting %s for option rebase.missingCommitsCheck. Ignoring."
-msgstr ""
-"Непозната стойност „%s“ за настройката „rebase.missingCommitsCheck“.  "
-"Настройката се прескача."
+msgid "line is badly quoted: %s"
+msgstr "неправилно цитиран ред: %s"
 
-#: rebase-interactive.c:42
-msgid ""
-"\n"
-"Commands:\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"
-"b, break = stop here (continue rebase later with 'git rebase --continue')\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"
+#: pkt-line.c:92
+msgid "unable to write flush packet"
+msgstr "пакетът за изчистване на буферите не може да се запише"
+
+#: pkt-line.c:99
+msgid "unable to write delim packet"
+msgstr "разделящият пакет не може да се запише"
+
+#: pkt-line.c:106
+msgid "unable to write stateless separator packet"
+msgstr "разделящият пакет без запазване на състояние не може да се запише"
+
+#: pkt-line.c:113
+msgid "flush packet write failed"
+msgstr "неуспешно изчистване на буферите при запис на пакет"
+
+#: pkt-line.c:153 pkt-line.c:239
+msgid "protocol error: impossibly long line"
+msgstr "протоколна грешка: прекалено дълъг ред"
+
+#: pkt-line.c:169 pkt-line.c:171
+msgid "packet write with format failed"
+msgstr "неуспешен запис на пакет с формат"
+
+#: pkt-line.c:203
+msgid "packet write failed - data exceeds max packet size"
+msgstr ""
+"неуспешен запис на пакетен файл — данните надвишават максималният размер на "
+"пакет"
+
+#: pkt-line.c:210 pkt-line.c:217
+msgid "packet write failed"
+msgstr "неуспешен запис на пакет"
+
+#: pkt-line.c:302
+msgid "read error"
+msgstr "грешка при четене"
+
+#: pkt-line.c:310
+msgid "the remote end hung up unexpectedly"
+msgstr "отдалеченото хранилище неочаквано прекъсна връзката"
+
+#: pkt-line.c:338
+#, c-format
+msgid "protocol error: bad line length character: %.4s"
+msgstr "протоколна грешка: неправилeн знак за дължина на ред: %.4s"
+
+#: pkt-line.c:352 pkt-line.c:357
+#, c-format
+msgid "protocol error: bad line length %d"
+msgstr "протоколна грешка: неправилна дължина на ред: %d"
+
+#: pkt-line.c:373 sideband.c:165
+#, c-format
+msgid "remote error: %s"
+msgstr "отдалечена грешка: %s"
+
+#: preload-index.c:125
+msgid "Refreshing index"
+msgstr "Обновяване на индекса"
+
+#: preload-index.c:144
+#, c-format
+msgid "unable to create threaded lstat: %s"
+msgstr "не може да се създаде нишка за изпълнението на „lstat“: %s"
+
+#: pretty.c:984
+msgid "unable to parse --pretty format"
+msgstr "аргументът към опцията „--pretty“ не може да се анализира"
+
+#: promisor-remote.c:30
+msgid "promisor-remote: unable to fork off fetch subprocess"
+msgstr "хранилище-гарант: неуспешно създаване на процес за доставяне"
+
+#: promisor-remote.c:35 promisor-remote.c:37
+msgid "promisor-remote: could not write to fetch subprocess"
+msgstr "хранилище-гарант: не може да се пише към процеса за доставяне"
+
+#: promisor-remote.c:41
+msgid "promisor-remote: could not close stdin to fetch subprocess"
+msgstr ""
+"хранилище-гарант: стандартният вход на процеса за доставяне не може да се "
+"затвори"
+
+#: promisor-remote.c:53
+#, c-format
+msgid "promisor remote name cannot begin with '/': %s"
+msgstr ""
+"името отдалеченото хранилище-гарант не може за започва със знака „/“: %s"
+
+#: prune-packed.c:35
+msgid "Removing duplicate objects"
+msgstr "Изтриване на повтарящите се обекти"
+
+#: range-diff.c:78
+msgid "could not start `log`"
+msgstr "командата за журнала с подавания „log“ не може да се стартира"
+
+#: range-diff.c:80
+msgid "could not read `log` output"
+msgstr ""
+"изходът от командата за журнала с подавания „log“ не може да се прочете"
+
+#: range-diff.c:101 sequencer.c:5318
+#, c-format
+msgid "could not parse commit '%s'"
+msgstr "подаването „%s“ не може да бъде анализирано"
+
+#: range-diff.c:115
+#, c-format
+msgid ""
+"could not parse first line of `log` output: did not start with 'commit ': "
+"'%s'"
+msgstr ""
+"първият ред от изхода на командата „log“ не може да се анализира, защото не "
+"започва с „commit “: „%s“"
+
+#: range-diff.c:140
+#, c-format
+msgid "could not parse git header '%.*s'"
+msgstr "заглавната част на git „%.*s“ не може да се анализира"
+
+#: range-diff.c:306
+msgid "failed to generate diff"
+msgstr "неуспешно търсене на разлика"
+
+#: range-diff.c:558
+msgid "--left-only and --right-only are mutually exclusive"
+msgstr "опциите „--left-only“ и „--right-only“ са несъвместими"
+
+#: range-diff.c:561 range-diff.c:563
+#, c-format
+msgid "could not parse log for '%s'"
+msgstr "журналът с подаванията на „%s“ не може да бъде анализиран"
+
+#: read-cache.c:682
+#, c-format
+msgid "will not add file alias '%s' ('%s' already exists in index)"
+msgstr ""
+"няма да бъде добавен псевдоним за файл „%s“ („%s“ вече съществува в индекса)"
+
+#: read-cache.c:698
+msgid "cannot create an empty blob in the object database"
+msgstr "в базата от данни за обектите не може да се създаде празен обект-BLOB"
+
+#: read-cache.c:720
+#, c-format
+msgid "%s: can only add regular files, symbolic links or git-directories"
+msgstr ""
+"%s: може да добавяте само обикновени файлове, символни връзки и директории "
+"на git"
+
+#: read-cache.c:725
+#, c-format
+msgid "'%s' does not have a commit checked out"
+msgstr "не е изтеглено подаване в „%s“"
+
+#: read-cache.c:777
+#, c-format
+msgid "unable to index file '%s'"
+msgstr "файлът „%s“ не може да бъде индексиран"
+
+#: read-cache.c:796
+#, c-format
+msgid "unable to add '%s' to index"
+msgstr "„%s“ не може да се добави в индекса"
+
+#: read-cache.c:807
+#, c-format
+msgid "unable to stat '%s'"
+msgstr "„stat“ не може да се изпълни върху „%s“"
+
+#: read-cache.c:1318
+#, c-format
+msgid "'%s' appears as both a file and as a directory"
+msgstr "„%s“ съществува и като файл, и като директория"
+
+#: read-cache.c:1532
+msgid "Refresh index"
+msgstr "Обновяване на индекса"
+
+#: read-cache.c:1657
+#, c-format
+msgid ""
+"index.version set, but the value is invalid.\n"
+"Using version %i"
+msgstr ""
+"Зададена е неправилна стойност на настройката „index.version“.\n"
+"Ще се ползва версия %i"
+
+#: read-cache.c:1667
+#, c-format
+msgid ""
+"GIT_INDEX_VERSION set, but the value is invalid.\n"
+"Using version %i"
+msgstr ""
+"Зададена е неправилна стойност на променливата на средата "
+"„GIT_INDEX_VERSION“.\n"
+"Ще се ползва версия %i"
+
+#: read-cache.c:1723
+#, c-format
+msgid "bad signature 0x%08x"
+msgstr "неправилен подпис: „0x%08x“"
+
+#: read-cache.c:1726
+#, c-format
+msgid "bad index version %d"
+msgstr "неправилна версия на индекса %d"
+
+#: read-cache.c:1735
+msgid "bad index file sha1 signature"
+msgstr "неправилен подпис за контролна сума по SHA1 на файла на индекса"
+
+#: read-cache.c:1765
+#, c-format
+msgid "index uses %.4s extension, which we do not understand"
+msgstr ""
+"индексът ползва разширение „%.4s“, което не се поддържа от тази версия на git"
+
+#: read-cache.c:1767
+#, c-format
+msgid "ignoring %.4s extension"
+msgstr "игнориране на разширението „%.4s“"
+
+#: read-cache.c:1804
+#, c-format
+msgid "unknown index entry format 0x%08x"
+msgstr "непознат формат на запис в индекса: „0x%08x“"
+
+#: read-cache.c:1820
+#, c-format
+msgid "malformed name field in the index, near path '%s'"
+msgstr "неправилно име на поле в индекса близо до пътя „%s“"
+
+#: read-cache.c:1877
+msgid "unordered stage entries in index"
+msgstr "неподредени записи в индекса"
+
+#: read-cache.c:1880
+#, c-format
+msgid "multiple stage entries for merged file '%s'"
+msgstr "множество записи за слетия файл „%s“"
+
+#: read-cache.c:1883
+#, c-format
+msgid "unordered stage entries for '%s'"
+msgstr "неподредени записи за „%s“"
+
+#: read-cache.c:1989 read-cache.c:2280 rerere.c:549 rerere.c:583 rerere.c:1095
+#: submodule.c:1634 builtin/add.c:546 builtin/check-ignore.c:181
+#: builtin/checkout.c:504 builtin/checkout.c:690 builtin/clean.c:991
+#: builtin/commit.c:364 builtin/diff-tree.c:122 builtin/grep.c:505
+#: builtin/mv.c:146 builtin/reset.c:247 builtin/rm.c:290
+#: builtin/submodule--helper.c:332
+msgid "index file corrupt"
+msgstr "файлът с индекса е повреден"
+
+#: read-cache.c:2133
+#, c-format
+msgid "unable to create load_cache_entries thread: %s"
+msgstr "не може да се създаде нишка за зареждане на обектите от кеша: %s"
+
+#: read-cache.c:2146
+#, c-format
+msgid "unable to join load_cache_entries thread: %s"
+msgstr "не може да се изчака нишка за зареждане на обектите от кеша: %s"
+
+#: read-cache.c:2179
+#, c-format
+msgid "%s: index file open failed"
+msgstr "%s: неуспешно отваряне на файла на индекса"
+
+#: read-cache.c:2183
+#, c-format
+msgid "%s: cannot stat the open index"
+msgstr "%s: не може да се получи информация за отворения индекс със „stat“"
+
+#: read-cache.c:2187
+#, c-format
+msgid "%s: index file smaller than expected"
+msgstr "%s: файлът на индекса е по-малък от очакваното"
+
+#: read-cache.c:2191
+#, c-format
+msgid "%s: unable to map index file"
+msgstr "%s: неуспешно заделяне на съответстваща памет чрез „mmap“ на индекса"
+
+#: read-cache.c:2233
+#, c-format
+msgid "unable to create load_index_extensions thread: %s"
+msgstr ""
+"не може да се създаде нишка за зареждане на разширенията на индекса: %s"
+
+#: read-cache.c:2260
+#, c-format
+msgid "unable to join load_index_extensions thread: %s"
+msgstr ""
+"не може да се създаде нишка за зареждане на разширенията на индекса: %s"
+
+#: read-cache.c:2292
+#, c-format
+msgid "could not freshen shared index '%s'"
+msgstr "споделеният индекс „%s“ не може да се обнови"
+
+#: read-cache.c:2339
+#, c-format
+msgid "broken index, expect %s in %s, got %s"
+msgstr "грешки в индекса — в „%2$s“ се очаква „%1$s“, а бе получено „%3$s“"
+
+#: read-cache.c:3035 strbuf.c:1171 wrapper.c:633 builtin/merge.c:1141
+#, c-format
+msgid "could not close '%s'"
+msgstr "„%s“ не може да се затвори"
+
+#: read-cache.c:3138 sequencer.c:2487 sequencer.c:4239
+#, c-format
+msgid "could not stat '%s'"
+msgstr "неуспешно изпълнение на „stat“ върху „%s“"
+
+#: read-cache.c:3151
+#, c-format
+msgid "unable to open git dir: %s"
+msgstr "не може да се отвори директорията на git: %s"
+
+#: read-cache.c:3163
+#, c-format
+msgid "unable to unlink: %s"
+msgstr "неуспешно изтриване на „%s“"
+
+#: read-cache.c:3188
+#, c-format
+msgid "cannot fix permission bits on '%s'"
+msgstr "правата за достъп до „%s“ не могат да бъдат поправени"
+
+#: read-cache.c:3337
+#, c-format
+msgid "%s: cannot drop to stage #0"
+msgstr "%s: не може да се премине към етап №0"
+
+#: rebase-interactive.c:11
+msgid ""
+"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 ""
+"Може да промените това с командите „git rebase --edit-todo“ и „git rebase --"
+"continue“ след това.\n"
+"Може и да преустановите пребазирането с командата „git rebase --abort“.\n"
+
+#: rebase-interactive.c:33
+#, c-format
+msgid ""
+"unrecognized setting %s for option rebase.missingCommitsCheck. Ignoring."
+msgstr ""
+"Непозната стойност „%s“ за настройката „rebase.missingCommitsCheck“.  "
+"Настройката се прескача."
+
+#: rebase-interactive.c:42
+msgid ""
+"\n"
+"Commands:\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"
+"b, break = stop here (continue rebase later with 'git rebase --continue')\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"
@@ -6137,14 +6753,14 @@ msgstr ""
 "Ако изтриете всичко, пребазирането ще бъде преустановено.\n"
 "\n"
 
-#: rebase-interactive.c:110 rerere.c:485 rerere.c:692 sequencer.c:3607
-#: sequencer.c:3633 sequencer.c:5416 builtin/fsck.c:347 builtin/rebase.c:270
+#: rebase-interactive.c:110 rerere.c:469 rerere.c:676 sequencer.c:3615
+#: sequencer.c:3641 sequencer.c:5424 builtin/fsck.c:329 builtin/rebase.c:272
 #, c-format
 msgid "could not write '%s'"
 msgstr "„%s“ не може да се запише"
 
-#: rebase-interactive.c:116 builtin/rebase.c:202 builtin/rebase.c:228
-#: builtin/rebase.c:252
+#: rebase-interactive.c:116 builtin/rebase.c:204 builtin/rebase.c:230
+#: builtin/rebase.c:254
 #, c-format
 msgid "could not write '%s'."
 msgstr "„%s“ не може да се запише."
@@ -6175,14 +6791,14 @@ msgstr ""
 "предупреждение)\n"
 "или „error“ (считане за грешка).\n"
 
-#: rebase-interactive.c:233 rebase-interactive.c:238 sequencer.c:2394
-#: builtin/rebase.c:188 builtin/rebase.c:213 builtin/rebase.c:239
-#: builtin/rebase.c:264
+#: rebase-interactive.c:233 rebase-interactive.c:238 sequencer.c:2402
+#: builtin/rebase.c:190 builtin/rebase.c:215 builtin/rebase.c:241
+#: builtin/rebase.c:266
 #, c-format
 msgid "could not read '%s'."
 msgstr "от „%s“ не може да се чете."
 
-#: ref-filter.c:42 wt-status.c:1973
+#: ref-filter.c:42 wt-status.c:1975
 msgid "gone"
 msgstr "изтрит"
 
@@ -6201,2285 +6817,1933 @@ msgstr "назад с %d"
 msgid "ahead %d, behind %d"
 msgstr "напред с %d, назад с %d"
 
-#: ref-filter.c:169
+#: ref-filter.c:175
 #, c-format
 msgid "expected format: %%(color:<color>)"
 msgstr "очакван формат: %%(color:ЦВЯТ)"
 
-#: ref-filter.c:171
+#: ref-filter.c:177
 #, c-format
 msgid "unrecognized color: %%(color:%s)"
 msgstr "непознат цвят: %%(color:%s)"
 
-#: ref-filter.c:193
+#: ref-filter.c:199
 #, c-format
 msgid "Integer value expected refname:lstrip=%s"
 msgstr "очаква се цяло число за „refname:lstrip=%s“"
 
-#: ref-filter.c:197
+#: ref-filter.c:203
 #, c-format
 msgid "Integer value expected refname:rstrip=%s"
 msgstr "очаква се цяло число за „refname:rstrip=%s“"
 
-#: ref-filter.c:199
+#: ref-filter.c:205
 #, c-format
 msgid "unrecognized %%(%s) argument: %s"
 msgstr "непознат аргумент за „%%(%s)“: %s"
 
-#: ref-filter.c:254
+#: ref-filter.c:260
 #, c-format
 msgid "%%(objecttype) does not take arguments"
 msgstr "%%(objecttype) не приема аргументи"
 
-#: ref-filter.c:276
+#: ref-filter.c:282
 #, c-format
 msgid "unrecognized %%(objectsize) argument: %s"
 msgstr "непознат аргумент за %%(objectsize): %s"
 
-#: ref-filter.c:284
+#: ref-filter.c:290
 #, c-format
 msgid "%%(deltabase) does not take arguments"
 msgstr "%%(deltabase) не приема аргументи"
 
-#: ref-filter.c:296
+#: ref-filter.c:302
 #, c-format
 msgid "%%(body) does not take arguments"
 msgstr "%%(body) не приема аргументи"
 
-#: ref-filter.c:309
+#: ref-filter.c:315
 #, c-format
 msgid "unrecognized %%(subject) argument: %s"
 msgstr "непознат аргумент за %%(subject): %s"
 
-#: ref-filter.c:330
+#: ref-filter.c:334
+#, c-format
+msgid "expected %%(trailers:key=<value>)"
+msgstr "очаква се %%(trailers:КЛЮЧ=СТОЙНОСТ)"
+
+#: ref-filter.c:336
 #, c-format
 msgid "unknown %%(trailers) argument: %s"
 msgstr "непознат аргумент „%%(trailers)“: %s"
 
-#: ref-filter.c:363
+#: ref-filter.c:367
 #, c-format
 msgid "positive value expected contents:lines=%s"
 msgstr "очаква се положителна стойност за „contents:lines=%s“"
 
-#: ref-filter.c:365
+#: ref-filter.c:369
 #, c-format
 msgid "unrecognized %%(contents) argument: %s"
 msgstr "непознат аргумент за %%(contents): %s"
 
-#: ref-filter.c:380
+#: ref-filter.c:384
 #, c-format
 msgid "positive value expected '%s' in %%(%s)"
 msgstr "очаква се положителна стойност за „%s“ в %%(%s)"
 
-#: ref-filter.c:384
+#: ref-filter.c:388
 #, c-format
 msgid "unrecognized argument '%s' in %%(%s)"
 msgstr "непознат аргумент „%s“ в %%(%s)"
 
-#: ref-filter.c:398
+#: ref-filter.c:402
 #, c-format
 msgid "unrecognized email option: %s"
 msgstr "непозната опция за е-поща: %s"
 
-#: ref-filter.c:428
-#, c-format
-msgid "expected format: %%(align:<width>,<position>)"
-msgstr "очакван формат: %%(align:ШИРОЧИНА,ПОЗИЦИЯ)"
-
-#: ref-filter.c:440
-#, c-format
-msgid "unrecognized position:%s"
-msgstr "непозната позиция: %s"
-
-#: ref-filter.c:447
-#, c-format
-msgid "unrecognized width:%s"
-msgstr "непозната широчина: %s"
-
-#: ref-filter.c:456
-#, c-format
-msgid "unrecognized %%(align) argument: %s"
-msgstr "непознат аргумент за %%(align): %s"
-
-#: ref-filter.c:464
-#, c-format
-msgid "positive width expected with the %%(align) atom"
-msgstr "очаква се положителна широчина с лексемата „%%(align)“"
-
-#: ref-filter.c:482
-#, c-format
-msgid "unrecognized %%(if) argument: %s"
-msgstr "непознат аргумент за „%%(if)“: %s"
-
-#: ref-filter.c:584
-#, c-format
-msgid "malformed field name: %.*s"
-msgstr "неправилно име на обект: „%.*s“"
-
-#: ref-filter.c:611
-#, c-format
-msgid "unknown field name: %.*s"
-msgstr "непознато име на обект: „%.*s“"
-
-#: ref-filter.c:615
-#, c-format
-msgid ""
-"not a git repository, but the field '%.*s' requires access to object data"
-msgstr "не е хранилище на git, а полето „%.*s“ изисква достъп данни на обектни"
-
-#: ref-filter.c:739
-#, c-format
-msgid "format: %%(if) atom used without a %%(then) atom"
-msgstr "формат: лексемата %%(if) е използвана без съответната ѝ %%(then)"
-
-#: ref-filter.c:802
-#, c-format
-msgid "format: %%(then) atom used without an %%(if) atom"
-msgstr "формат: лексемата %%(then) е използвана без съответната ѝ %%(if)"
-
-#: ref-filter.c:804
-#, c-format
-msgid "format: %%(then) atom used more than once"
-msgstr "формат: лексемата %%(then) е използвана повече от един път"
-
-#: ref-filter.c:806
-#, c-format
-msgid "format: %%(then) atom used after %%(else)"
-msgstr "формат: лексемата %%(then) е използвана след %%(else)"
-
-#: ref-filter.c:834
-#, c-format
-msgid "format: %%(else) atom used without an %%(if) atom"
-msgstr "формат: лексемата %%(else) е използвана без съответната ѝ %%(if)"
-
-#: ref-filter.c:836
-#, c-format
-msgid "format: %%(else) atom used without a %%(then) atom"
-msgstr "формат: лексемата %%(else) е използвана без съответната ѝ %%(then)"
-
-#: ref-filter.c:838
-#, c-format
-msgid "format: %%(else) atom used more than once"
-msgstr "формат: лексемата %%(else) е използвана повече от един път"
-
-#: ref-filter.c:853
-#, c-format
-msgid "format: %%(end) atom used without corresponding atom"
-msgstr "формат: лексемата %%(end) е използвана без съответната ѝ"
-
-#: ref-filter.c:910
-#, c-format
-msgid "malformed format string %s"
-msgstr "неправилен форматиращ низ „%s“"
-
-#: ref-filter.c:1549
-#, c-format
-msgid "no branch, rebasing %s"
-msgstr "извън клон, пребазиране на „%s“"
-
-#: ref-filter.c:1552
-#, c-format
-msgid "no branch, rebasing detached HEAD %s"
-msgstr "извън клон, пребазиране на несвързан указател „HEAD“ при „%s“"
-
-#: ref-filter.c:1555
-#, c-format
-msgid "no branch, bisect started on %s"
-msgstr "извън клон, двоично търсене от „%s“"
-
-#: ref-filter.c:1565
-msgid "no branch"
-msgstr "извън клон"
-
-#: ref-filter.c:1599 ref-filter.c:1808
-#, c-format
-msgid "missing object %s for %s"
-msgstr "обектът „%s“ липсва за „%s“"
-
-#: ref-filter.c:1609
-#, c-format
-msgid "parse_object_buffer failed on %s for %s"
-msgstr "неуспешно анализиране чрез „parse_object_buffer“ на „%s“ за „%s“"
-
-#: ref-filter.c:2062
-#, c-format
-msgid "malformed object at '%s'"
-msgstr "обект със сгрешен формат при „%s“"
-
-#: ref-filter.c:2151
-#, c-format
-msgid "ignoring ref with broken name %s"
-msgstr "игнориране на указателя с грешно име „%s“"
-
-#: ref-filter.c:2156 refs.c:676
-#, c-format
-msgid "ignoring broken ref %s"
-msgstr "игнориране на повредения указател „%s“"
-
-#: ref-filter.c:2472
-#, c-format
-msgid "format: %%(end) atom missing"
-msgstr "грешка във форма̀та: липсва лексемата %%(end)"
-
-#: ref-filter.c:2571
-#, c-format
-msgid "malformed object name %s"
-msgstr "неправилно име на обект „%s“"
-
-#: ref-filter.c:2576
-#, c-format
-msgid "option `%s' must point to a commit"
-msgstr "опцията „%s“ не сочи към подаване"
-
-#: refs.c:264
-#, c-format
-msgid "%s does not point to a valid object!"
-msgstr "„%s“ не сочи към позволен обект!"
-
-#: refs.c:566
-#, c-format
-msgid ""
-"Using '%s' as the name for the initial branch. This default branch name\n"
-"is subject to change. To configure the initial branch name to use in all\n"
-"of your new repositories, which will suppress this warning, call:\n"
-"\n"
-"\tgit config --global init.defaultBranch <name>\n"
-"\n"
-"Names commonly chosen instead of 'master' are 'main', 'trunk' and\n"
-"'development'. The just-created branch can be renamed via this command:\n"
-"\n"
-"\tgit branch -m <name>\n"
-msgstr ""
-"Първоначалният клон ще се казва „%s“.  Това може да се промени.  Можете да "
-"зададете\n"
-"настройката и да спрете това съобщение.  За това изпълнете:\n"
-"\n"
-"    git config --global init.defaultBranch ИМЕ\n"
-"\n"
-"Често ползвани варианти вместо „master“ са „main“, „trunk“ и „development“.\n"
-"За да преименувата току що създаден клон, изпълнете:\n"
-"\n"
-"    git branch -m ИМЕ\n"
-
-#: refs.c:588
-#, c-format
-msgid "could not retrieve `%s`"
-msgstr "„%s“ не може да бъде получен"
-
-#: refs.c:598
-#, c-format
-msgid "invalid branch name: %s = %s"
-msgstr "неправилно име на клон: „%s = %s“"
-
-#: refs.c:674
-#, c-format
-msgid "ignoring dangling symref %s"
-msgstr "игнориране на указател на обект извън клон „%s“"
-
-#: refs.c:911
-#, c-format
-msgid "log for ref %s has gap after %s"
-msgstr "има пропуски в журнала с подаванията за указателя „%s“ след „%s“"
-
-#: refs.c:917
-#, c-format
-msgid "log for ref %s unexpectedly ended on %s"
-msgstr "журналът с подаванията за указателя „%s“ свършва неочаквано след „%s“"
-
-#: refs.c:976
-#, c-format
-msgid "log for %s is empty"
-msgstr "журналът с подаванията за указателя „%s“ е празен"
-
-#: refs.c:1068
-#, c-format
-msgid "refusing to update ref with bad name '%s'"
-msgstr "указател не може да се обнови с грешно име „%s“"
-
-#: refs.c:1139
-#, c-format
-msgid "update_ref failed for ref '%s': %s"
-msgstr "неуспешно обновяване на указателя „%s“: %s"
-
-#: refs.c:1963
-#, c-format
-msgid "multiple updates for ref '%s' not allowed"
-msgstr "не са позволени повече от една промени на указателя „%s“"
-
-#: refs.c:2043
-msgid "ref updates forbidden inside quarantine environment"
-msgstr "обновяванията на указатели са забранени в среди под карантина"
-
-#: refs.c:2054
-msgid "ref updates aborted by hook"
-msgstr "обновяванията на указатели са преустановени от кука"
-
-#: refs.c:2154 refs.c:2184
-#, c-format
-msgid "'%s' exists; cannot create '%s'"
-msgstr "„%s“ съществува, не може да се създаде „%s“"
-
-#: refs.c:2160 refs.c:2195
-#, c-format
-msgid "cannot process '%s' and '%s' at the same time"
-msgstr "невъзможно е едновременно да се обработват „%s“ и „%s“"
-
-#: refs/files-backend.c:1228
-#, c-format
-msgid "could not remove reference %s"
-msgstr "Указателят „%s“ не може да бъде изтрит"
-
-#: refs/files-backend.c:1242 refs/packed-backend.c:1542
-#: refs/packed-backend.c:1552
-#, c-format
-msgid "could not delete reference %s: %s"
-msgstr "Указателят „%s“ не може да бъде изтрит: %s"
-
-#: refs/files-backend.c:1245 refs/packed-backend.c:1555
-#, c-format
-msgid "could not delete references: %s"
-msgstr "Указателите не може да бъдат изтрити: %s"
-
-#: refspec.c:170
-#, c-format
-msgid "invalid refspec '%s'"
-msgstr "неправилен указател: „%s“"
-
-#: remote.c:351
-#, c-format
-msgid "config remote shorthand cannot begin with '/': %s"
-msgstr ""
-"съкращението за отдалечено хранилище не може за започва със знака „/“: %s"
-
-#: remote.c:399
-msgid "more than one receivepack given, using the first"
-msgstr "зададен е повече от един пакет за получаване, ще се ползва първият"
-
-#: remote.c:407
-msgid "more than one uploadpack given, using the first"
-msgstr "зададен е повече от един пакет за изпращане, ще се ползва първият"
-
-#: remote.c:590
-#, c-format
-msgid "Cannot fetch both %s and %s to %s"
-msgstr "Невъзможно е да се доставят едновременно и „%s“, и „%s“ към „%s“"
-
-#: remote.c:594
-#, c-format
-msgid "%s usually tracks %s, not %s"
-msgstr "„%s“ обикновено следи „%s“, а не „%s“"
-
-#: remote.c:598
+#: ref-filter.c:432
 #, c-format
-msgid "%s tracks both %s and %s"
-msgstr "„%s“ следи както „%s“, така и „%s“"
+msgid "expected format: %%(align:<width>,<position>)"
+msgstr "очакван формат: %%(align:ШИРОЧИНА,ПОЗИЦИЯ)"
 
-#: remote.c:666
+#: ref-filter.c:444
 #, c-format
-msgid "key '%s' of pattern had no '*'"
-msgstr "клÑ\8eÑ\87 â\80\9e%sâ\80\9c Ð½Ð° Ñ\88аблона Ð½Ðµ Ñ\81Ñ\8aдÑ\8aÑ\80жа â\80\9e\80\9c"
+msgid "unrecognized position:%s"
+msgstr "непознаÑ\82а Ð¿Ð¾Ð·Ð¸Ñ\86иÑ\8f: %s"
 
-#: remote.c:676
+#: ref-filter.c:451
 #, c-format
-msgid "value '%s' of pattern has no '*'"
-msgstr "стойност „%s“ на шаблона не съдържа „*“"
+msgid "unrecognized width:%s"
+msgstr "непозната широчина: %s"
 
-#: remote.c:1073
+#: ref-filter.c:460
 #, c-format
-msgid "src refspec %s does not match any"
-msgstr "указателят на версия-източник „%s“ не съвпада с никой обект"
+msgid "unrecognized %%(align) argument: %s"
+msgstr "непознат аргумент за %%(align): %s"
 
-#: remote.c:1078
+#: ref-filter.c:468
 #, c-format
-msgid "src refspec %s matches more than one"
-msgstr "указателят на версия-източник „%s“ съвпада с повече от един обект"
+msgid "positive width expected with the %%(align) atom"
+msgstr "очаква се положителна широчина с лексемата „%%(align)“"
 
-#. TRANSLATORS: "matches '%s'%" is the <dst> part of "git push
-#. <remote> <src>:<dst>" push, and "being pushed ('%s')" is
-#. the <src>.
-#.
-#: remote.c:1093
+#: ref-filter.c:486
 #, c-format
-msgid ""
-"The destination you provided is not a full refname (i.e.,\n"
-"starting with \"refs/\"). We tried to guess what you meant by:\n"
-"\n"
-"- Looking for a ref that matches '%s' on the remote side.\n"
-"- Checking if the <src> being pushed ('%s')\n"
-"  is a ref in \"refs/{heads,tags}/\". If so we add a corresponding\n"
-"  refs/{heads,tags}/ prefix on the remote side.\n"
-"\n"
-"Neither worked, so we gave up. You must fully qualify the ref."
-msgstr ""
-"Зададената цел не е пълно име на указател (не започва с „refs/“).\n"
-"Бяха пробвани следните варианти:\n"
-"\n"
-"  ⁃ указател от отдалеченото хранилище, който да съответства на „%s“;\n"
-"  ⁃ дали изтласкваният ИЗТОЧНИК („%s“) е указател в „refs/{heads,tags}/“.\n"
-"    При съвпадение се добавя съответен префикс „refs/{heads,tags}/“ за\n"
-"    отдалеченото хранилище.\n"
-"\n"
-"Никой от вариантите не сработи.  Трябва сами да укажете пълното име на\n"
-"указателя."
+msgid "unrecognized %%(if) argument: %s"
+msgstr "непознат аргумент за „%%(if)“: %s"
 
-#: remote.c:1113
+#: ref-filter.c:588
 #, c-format
-msgid ""
-"The <src> part of the refspec is a commit object.\n"
-"Did you mean to create a new branch by pushing to\n"
-"'%s:refs/heads/%s'?"
-msgstr ""
-"ИЗТОЧНИКът е обект-подаване.  Не целите ли всъщност да създадете нов клон "
-"като\n"
-"изтласкате към „%s:refs/heads/%s“?"
+msgid "malformed field name: %.*s"
+msgstr "неправилно име на обект: „%.*s“"
 
-#: remote.c:1118
+#: ref-filter.c:615
 #, c-format
-msgid ""
-"The <src> part of the refspec is a tag object.\n"
-"Did you mean to create a new tag by pushing to\n"
-"'%s:refs/tags/%s'?"
-msgstr ""
-"ИЗТОЧНИКът е обект-етикет.  Не целите ли всъщност да създадете нов клон "
-"като\n"
-"изтласкате към „%s:refs/tags/%s“?"
+msgid "unknown field name: %.*s"
+msgstr "непознато име на обект: „%.*s“"
 
-#: remote.c:1123
+#: ref-filter.c:619
 #, c-format
 msgid ""
-"The <src> part of the refspec is a tree object.\n"
-"Did you mean to tag a new tree by pushing to\n"
-"'%s:refs/tags/%s'?"
-msgstr ""
-"ИЗТОЧНИКът е обект-дърво.  Не целите ли всъщност да създадете нов клон като\n"
-"изтласкате към „%s:refs/tags/%s“?"
+"not a git repository, but the field '%.*s' requires access to object data"
+msgstr "не е хранилище на git, а полето „%.*s“ изисква достъп данни на обектни"
 
-#: remote.c:1128
+#: ref-filter.c:743
 #, c-format
-msgid ""
-"The <src> part of the refspec is a blob object.\n"
-"Did you mean to tag a new blob by pushing to\n"
-"'%s:refs/tags/%s'?"
-msgstr ""
-"ИЗТОЧНИКът е обект-BLOB.  Не целите ли всъщност да създадете нов клон като\n"
-"изтласкате към „%s:refs/tags/%s“?"
+msgid "format: %%(if) atom used without a %%(then) atom"
+msgstr "формат: лексемата %%(if) е използвана без съответната ѝ %%(then)"
 
-#: remote.c:1164
+#: ref-filter.c:806
 #, c-format
-msgid "%s cannot be resolved to branch"
-msgstr "не е открит клон съответстващ на „%s“"
+msgid "format: %%(then) atom used without an %%(if) atom"
+msgstr "формат: лексемата %%(then) е използвана без съответната ѝ %%(if)"
 
-#: remote.c:1175
+#: ref-filter.c:808
 #, c-format
-msgid "unable to delete '%s': remote ref does not exist"
-msgstr "„%s“ не може да се изтрие: отдалечения указател не съществува"
+msgid "format: %%(then) atom used more than once"
+msgstr "формат: лексемата %%(then) е използвана повече от един път"
 
-#: remote.c:1187
+#: ref-filter.c:810
 #, c-format
-msgid "dst refspec %s matches more than one"
-msgstr "Ñ\83казаÑ\82елÑ\8fÑ\82 Ð½Ð° Ð²ÐµÑ\80Ñ\81иÑ\8f\86ел â\80\9e%sâ\80\9c Ñ\81Ñ\8aвпада Ñ\81 Ð¿Ð¾Ð²ÐµÑ\87е Ð¾Ñ\82 ÐµÐ´Ð¸Ð½ Ð¾Ð±ÐµÐºÑ\82"
+msgid "format: %%(then) atom used after %%(else)"
+msgstr "Ñ\84оÑ\80маÑ\82: Ð»ÐµÐºÑ\81емаÑ\82а %%(then) Ðµ Ð¸Ð·Ð¿Ð¾Ð»Ð·Ð²Ð°Ð½Ð° Ñ\81лед %%(else)"
 
-#: remote.c:1194
+#: ref-filter.c:838
 #, c-format
-msgid "dst ref %s receives from more than one src"
-msgstr ""
-"указателят на версия-цел „%s“ съответства и ще получава от повече от един "
-"източник"
-
-#: remote.c:1714 remote.c:1815
-msgid "HEAD does not point to a branch"
-msgstr "Указателят „HEAD“ не сочи към клон"
+msgid "format: %%(else) atom used without an %%(if) atom"
+msgstr "формат: лексемата %%(else) е използвана без съответната ѝ %%(if)"
 
-#: remote.c:1723
+#: ref-filter.c:840
 #, c-format
-msgid "no such branch: '%s'"
-msgstr "няма клон на име „%s“"
+msgid "format: %%(else) atom used without a %%(then) atom"
+msgstr "формат: лексемата %%(else) е използвана без съответната ѝ %%(then)"
 
-#: remote.c:1726
+#: ref-filter.c:842
 #, c-format
-msgid "no upstream configured for branch '%s'"
-msgstr "не е зададен клон-източник за клона „%s“"
+msgid "format: %%(else) atom used more than once"
+msgstr "формат: лексемата %%(else) е използвана повече от един път"
 
-#: remote.c:1732
+#: ref-filter.c:857
 #, c-format
-msgid "upstream branch '%s' not stored as a remote-tracking branch"
-msgstr "клонът-източник „%s“ не е съхранен като следящ клон"
+msgid "format: %%(end) atom used without corresponding atom"
+msgstr "формат: лексемата %%(end) е използвана без съответната ѝ"
 
-#: remote.c:1747
+#: ref-filter.c:914
 #, c-format
-msgid "push destination '%s' on remote '%s' has no local tracking branch"
-msgstr ""
-"липсва локален следящ клон за местоположението за изтласкване „%s“ в "
-"хранилището „%s“"
+msgid "malformed format string %s"
+msgstr "неправилен форматиращ низ „%s“"
 
-#: remote.c:1759
+#: ref-filter.c:1555
 #, c-format
-msgid "branch '%s' has no remote for pushing"
-msgstr "няма информация клонът „%s“ да следи някой друг"
+msgid "(no branch, rebasing %s)"
+msgstr "(извън клон, пребазиране на „%s“)"
 
-#: remote.c:1769
+#: ref-filter.c:1558
 #, c-format
-msgid "push refspecs for '%s' do not include '%s'"
-msgstr "указателят за изтласкване на „%s“ не включва „%s“"
-
-#: remote.c:1782
-msgid "push has no destination (push.default is 'nothing')"
-msgstr "указателят за изтласкване не включва цел („push.default“ е „nothing“)"
+msgid "(no branch, rebasing detached HEAD %s)"
+msgstr "(извън клон, пребазиране на несвързан указател „HEAD“ при „%s“)"
 
-#: remote.c:1804
-msgid "cannot resolve 'simple' push to a single destination"
-msgstr "простото (simple) изтласкване не съответства на една цел"
-
-#: remote.c:1933
+#: ref-filter.c:1561
 #, c-format
-msgid "couldn't find remote ref %s"
-msgstr "отдалеченият указател „%s“ не може да бъде открит"
+msgid "(no branch, bisect started on %s)"
+msgstr "(извън клон, двоично търсене от „%s“)"
 
-#: remote.c:1946
+#: ref-filter.c:1565
 #, c-format
-msgid "* Ignoring funny ref '%s' locally"
-msgstr "• прескачане на неочаквания локален указател „%s“"
+msgid "(HEAD detached at %s)"
+msgstr "(указателят „HEAD“ не е свързан и е при „%s“)"
 
-#: remote.c:2109
+#: ref-filter.c:1568
 #, c-format
-msgid "Your branch is based on '%s', but the upstream is gone.\n"
-msgstr "Този клон следи „%s“, но следеният клон е изтрит.\n"
+msgid "(HEAD detached from %s)"
+msgstr "(указателят „HEAD“ не е свързан и е отделѐн от „%s“)"
 
-#: remote.c:2113
-msgid "  (use \"git branch --unset-upstream\" to fixup)\n"
-msgstr "  (за да коригирате това, използвайте „git branch --unset-upstream“)\n"
+#: ref-filter.c:1571
+msgid "(no branch)"
+msgstr "(извън клон)"
 
-#: remote.c:2116
+#: ref-filter.c:1603 ref-filter.c:1812
 #, c-format
-msgid "Your branch is up to date with '%s'.\n"
-msgstr "Ð\9aлонÑ\8aÑ\82 Ðµ Ð¾Ð±Ð½Ð¾Ð²ÐµÐ½ ÐºÑ\8aм â\80\9e%sâ\80\9c.\n"
+msgid "missing object %s for %s"
+msgstr "обекÑ\82Ñ\8aÑ\82 â\80\9e%sâ\80\9c Ð»Ð¸Ð¿Ñ\81ва Ð·Ð° â\80\9e%sâ\80\9c"
 
-#: remote.c:2120
+#: ref-filter.c:1613
 #, c-format
-msgid "Your branch and '%s' refer to different commits.\n"
-msgstr "Ð\9aлонÑ\8aÑ\82 Ð²Ð¸ Ð¸ â\80\9e%sâ\80\9c Ñ\81оÑ\87аÑ\82 ÐºÑ\8aм Ñ\80азлиÑ\87ни Ð¿Ð¾Ð´Ð°Ð²Ð°Ð½Ð¸Ñ\8f.\n"
+msgid "parse_object_buffer failed on %s for %s"
+msgstr "неÑ\83Ñ\81пеÑ\88но Ð°Ð½Ð°Ð»Ð¸Ð·Ð¸Ñ\80ане Ñ\87Ñ\80ез â\80\9eparse_object_bufferâ\80\9c Ð½Ð° â\80\9e%sâ\80\9c Ð·Ð° â\80\9e%sâ\80\9c"
 
-#: remote.c:2123
+#: ref-filter.c:1996
 #, c-format
-msgid "  (use \"%s\" for details)\n"
-msgstr "  (за повече информация ползвайте „%s“)\n"
+msgid "malformed object at '%s'"
+msgstr "обект със сгрешен формат при „%s“"
 
-#: remote.c:2127
+#: ref-filter.c:2085
 #, 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:2133
-msgid "  (use \"git push\" to publish your local commits)\n"
-msgstr "  (публикувайте локалните си промени чрез „git push“)\n"
+msgid "ignoring ref with broken name %s"
+msgstr "игнориране на указателя с грешно име „%s“"
 
-#: remote.c:2136
+#: ref-filter.c:2090 refs.c:676
 #, 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] "Клонът ви е с %2$d подаване зад „%1$s“ и може да бъде превъртян.\n"
-msgstr[1] "Клонът ви е с %2$d подавания зад „%1$s“ и може да бъде превъртян.\n"
-
-#: remote.c:2144
-msgid "  (use \"git pull\" to update your local branch)\n"
-msgstr "  (обновете локалния си клон чрез „git pull“)\n"
+msgid "ignoring broken ref %s"
+msgstr "игнориране на повредения указател „%s“"
 
-#: remote.c:2147
+#: ref-filter.c:2430
 #, c-format
-msgid ""
-"Your branch and '%s' have diverged,\n"
-"and have %d and %d different commit each, respectively.\n"
-msgid_plural ""
-"Your branch and '%s' have diverged,\n"
-"and have %d and %d different commits each, respectively.\n"
-msgstr[0] ""
-"Текущият клон се е отделил от „%s“,\n"
-"двата имат съответно по %d и %d несъвпадащи подавания.\n"
-msgstr[1] ""
-"Текущият клон се е отделил от „%s“,\n"
-"двата имат съответно по %d и %d несъвпадащи подавания.\n"
-
-#: remote.c:2157
-msgid "  (use \"git pull\" to merge the remote branch into yours)\n"
-msgstr "  (слейте отдалечения клон в локалния чрез „git pull“)\n"
+msgid "format: %%(end) atom missing"
+msgstr "грешка във форма̀та: липсва лексемата %%(end)"
 
-#: remote.c:2349
+#: ref-filter.c:2529
 #, c-format
-msgid "cannot parse expected object name '%s'"
-msgstr "оÑ\87акваноÑ\82о Ð¸Ð¼Ðµ Ð½Ð° Ð¾Ð±ÐµÐºÑ\82 â\80\9e%sâ\80\9c Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð±Ñ\8aде Ð°Ð½Ð°Ð»Ð¸Ð·Ð¸Ñ\80ано"
+msgid "malformed object name %s"
+msgstr "непÑ\80авилно Ð¸Ð¼Ðµ Ð½Ð° Ð¾Ð±ÐµÐºÑ\82 â\80\9e%sâ\80\9c"
 
-#: replace-object.c:21
+#: ref-filter.c:2534
 #, c-format
-msgid "bad replace ref name: %s"
-msgstr "непÑ\80авилно Ð¸Ð¼Ðµ Ð½Ð° Ñ\83казаÑ\82ел Ð·Ð° Ð·Ð°Ð¼Ñ\8fна: â\80\9e%sâ\80\9c"
+msgid "option `%s' must point to a commit"
+msgstr "опÑ\86иÑ\8fÑ\82а â\80\9e%sâ\80\9c Ð½Ðµ Ñ\81оÑ\87и ÐºÑ\8aм Ð¿Ð¾Ð´Ð°Ð²Ð°Ð½Ðµ"
 
-#: replace-object.c:30
+#: refs.c:264
 #, c-format
-msgid "duplicate replace ref: %s"
-msgstr "повтарящ се указател за замяна: „%s“"
+msgid "%s does not point to a valid object!"
+msgstr "„%s“ не сочи към позволен обект!"
 
-#: replace-object.c:82
+#: refs.c:566
 #, c-format
-msgid "replace depth too high for object %s"
-msgstr "дълбочината на замяна е прекалено голяма за обекта: „%s“"
+msgid ""
+"Using '%s' as the name for the initial branch. This default branch name\n"
+"is subject to change. To configure the initial branch name to use in all\n"
+"of your new repositories, which will suppress this warning, call:\n"
+"\n"
+"\tgit config --global init.defaultBranch <name>\n"
+"\n"
+"Names commonly chosen instead of 'master' are 'main', 'trunk' and\n"
+"'development'. The just-created branch can be renamed via this command:\n"
+"\n"
+"\tgit branch -m <name>\n"
+msgstr ""
+"Първоначалният клон ще се казва „%s“.  Това може да се промени.  Можете да "
+"зададете\n"
+"настройката и да спрете това съобщение.  За това изпълнете:\n"
+"\n"
+"    git config --global init.defaultBranch ИМЕ\n"
+"\n"
+"Често ползвани варианти вместо „master“ са „main“, „trunk“ и „development“.\n"
+"За да преименувата току що създаден клон, изпълнете:\n"
+"\n"
+"    git branch -m ИМЕ\n"
 
-#: rerere.c:217 rerere.c:226 rerere.c:229
-msgid "corrupt MERGE_RR"
-msgstr "повреден „MERGE_RR“ (запис за коригиране на конфликт)"
+#: refs.c:588
+#, c-format
+msgid "could not retrieve `%s`"
+msgstr "„%s“ не може да бъде получен"
 
-#: rerere.c:264 rerere.c:269
-msgid "unable to write rerere record"
-msgstr "приложеното коригиране на конфликт не може да бъде записано"
+#: refs.c:598
+#, c-format
+msgid "invalid branch name: %s = %s"
+msgstr "неправилно име на клон: „%s = %s“"
 
-#: rerere.c:495
+#: refs.c:674
 #, c-format
-msgid "there were errors while writing '%s' (%s)"
-msgstr "гÑ\80еÑ\88ки Ð¿Ñ\80и Ð·Ð°Ð¿Ð¸Ñ\81ванеÑ\82о Ð½Ð° â\80\9e%sâ\80\9c (%s)"
+msgid "ignoring dangling symref %s"
+msgstr "игноÑ\80иÑ\80ане Ð½Ð° Ñ\83казаÑ\82ел Ð½Ð° Ð¾Ð±ÐµÐºÑ\82 Ð¸Ð·Ð²Ñ\8aн ÐºÐ»Ð¾Ð½ â\80\9e%sâ\80\9c"
 
-#: rerere.c:498
+#: refs.c:922
 #, c-format
-msgid "failed to flush '%s'"
-msgstr "гÑ\80еÑ\88ка Ð¿Ñ\80и Ð¸Ð·Ñ\87иÑ\81Ñ\82ванеÑ\82о Ð½Ð° Ð±Ñ\83Ñ\84еÑ\80иÑ\82е Ð¿Ñ\80и Ð·Ð°Ð¿Ð¸Ñ\81ванеÑ\82о Ð½Ð° „%s“"
+msgid "log for ref %s has gap after %s"
+msgstr "има Ð¿Ñ\80опÑ\83Ñ\81ки Ð² Ð¶Ñ\83Ñ\80нала Ñ\81 Ð¿Ð¾Ð´Ð°Ð²Ð°Ð½Ð¸Ñ\8fÑ\82а Ð·Ð° Ñ\83казаÑ\82елÑ\8f â\80\9e%sâ\80\9c Ñ\81лед „%s“"
 
-#: rerere.c:503 rerere.c:1039
+#: refs.c:929
 #, c-format
-msgid "could not parse conflict hunks in '%s'"
-msgstr "паÑ\80Ñ\87еÑ\82аÑ\82а Ñ\81 ÐºÐ¾Ð½Ñ\84ликÑ\82и Ð² â\80\9e%sâ\80\9c Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ð°Ð½Ð°Ð»Ð¸Ð·Ð¸Ñ\80аÑ\82"
+msgid "log for ref %s unexpectedly ended on %s"
+msgstr "жÑ\83Ñ\80налÑ\8aÑ\82 Ñ\81 Ð¿Ð¾Ð´Ð°Ð²Ð°Ð½Ð¸Ñ\8fÑ\82а Ð·Ð° Ñ\83казаÑ\82елÑ\8f â\80\9e%sâ\80\9c Ñ\81вÑ\8aÑ\80Ñ\88ва Ð½ÐµÐ¾Ñ\87аквано Ñ\81лед â\80\9e%sâ\80\9c"
 
-#: rerere.c:684
+#: refs.c:994
 #, c-format
-msgid "failed utime() on '%s'"
-msgstr "неÑ\83Ñ\81пеÑ\88но Ð·Ð°Ð´Ð°Ð²Ð°Ð½Ðµ Ð½Ð° Ð²Ñ\80еме Ð½Ð° Ð´Ð¾Ñ\81Ñ\82Ñ\8aп/Ñ\81Ñ\8aздаване Ñ\87Ñ\80ез â\80\9eutimeâ\80\9c Ð½Ð° â\80\9e%sâ\80\9c"
+msgid "log for %s is empty"
+msgstr "жÑ\83Ñ\80налÑ\8aÑ\82 Ñ\81 Ð¿Ð¾Ð´Ð°Ð²Ð°Ð½Ð¸Ñ\8fÑ\82а Ð·Ð° Ñ\83казаÑ\82елÑ\8f â\80\9e%sâ\80\9c Ðµ Ð¿Ñ\80азен"
 
-#: rerere.c:694
+#: refs.c:1086
 #, c-format
-msgid "writing '%s' failed"
-msgstr "неуспешен запис на „%s“"
+msgid "refusing to update ref with bad name '%s'"
+msgstr "указател не може да се обнови с грешно име „%s“"
 
-#: rerere.c:714
+#: refs.c:1157
 #, c-format
-msgid "Staged '%s' using previous resolution."
-msgstr ""
-"„%s“ е добавен към индекса с преизползване на запазена корекция при сливане"
+msgid "update_ref failed for ref '%s': %s"
+msgstr "неуспешно обновяване на указателя „%s“: %s"
 
-#: rerere.c:753
+#: refs.c:2051
 #, c-format
-msgid "Recorded resolution for '%s'."
-msgstr "Ð\9aоÑ\80екÑ\86иÑ\8fÑ\82а Ð½Ð° ÐºÐ¾Ð½Ñ\84ликÑ\82а Ð¿Ñ\80и Ñ\81ливане Ð½Ð° â\80\9e%sâ\80\9c Ðµ Ð·Ð°Ð¿Ð°Ð·ÐµÐ½Ð°."
+msgid "multiple updates for ref '%s' not allowed"
+msgstr "не Ñ\81а Ð¿Ð¾Ð·Ð²Ð¾Ð»ÐµÐ½Ð¸ Ð¿Ð¾Ð²ÐµÑ\87е Ð¾Ñ\82 ÐµÐ´Ð½Ð° Ð¿Ñ\80омени Ð½Ð° Ñ\83казаÑ\82елÑ\8f â\80\9e%sâ\80\9c"
 
-#: rerere.c:788
-#, c-format
-msgid "Resolved '%s' using previous resolution."
-msgstr ""
-"Конфликтът при сливане на „%s“ е коригиран с преизползване на предишна "
-"корекция."
+#: refs.c:2131
+msgid "ref updates forbidden inside quarantine environment"
+msgstr "обновяванията на указатели са забранени в среди под карантина"
 
-#: rerere.c:803
-#, c-format
-msgid "cannot unlink stray '%s'"
-msgstr "излишният обект „%s“ не може да се изтрие"
+#: refs.c:2142
+msgid "ref updates aborted by hook"
+msgstr "обновяванията на указатели са преустановени от кука"
 
-#: rerere.c:807
+#: refs.c:2242 refs.c:2272
 #, c-format
-msgid "Recorded preimage for '%s'"
-msgstr "Предварителният вариант на „%s“ е запазен"
+msgid "'%s' exists; cannot create '%s'"
+msgstr "„%s“ съществува, не може да се създаде „%s“"
 
-#: rerere.c:881 submodule.c:2082 builtin/log.c:1992
-#: builtin/submodule--helper.c:1878 builtin/submodule--helper.c:1890
+#: refs.c:2248 refs.c:2283
 #, c-format
-msgid "could not create directory '%s'"
-msgstr "Ð\94иÑ\80екÑ\82оÑ\80иÑ\8fÑ\82а â\80\9e%sâ\80\9c Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð±Ñ\8aде Ñ\81Ñ\8aздадена"
+msgid "cannot process '%s' and '%s' at the same time"
+msgstr "невÑ\8aзможно Ðµ ÐµÐ´Ð½Ð¾Ð²Ñ\80еменно Ð´Ð° Ñ\81е Ð¾Ð±Ñ\80абоÑ\82ваÑ\82 â\80\9e%sâ\80\9c Ð¸ â\80\9e%sâ\80\9c"
 
-#: rerere.c:1057
+#: refs/files-backend.c:1228
 #, c-format
-msgid "failed to update conflicted state in '%s'"
-msgstr "конÑ\84ликÑ\82Ñ\8aÑ\82 Ð² â\80\9e%sâ\80\9c Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ð¾Ð±Ð½Ð¾Ð²Ð¸"
+msgid "could not remove reference %s"
+msgstr "УказаÑ\82елÑ\8fÑ\82 â\80\9e%sâ\80\9c Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð±Ñ\8aде Ð¸Ð·Ñ\82Ñ\80иÑ\82"
 
-#: rerere.c:1068 rerere.c:1075
+#: refs/files-backend.c:1242 refs/packed-backend.c:1542
+#: refs/packed-backend.c:1552
 #, c-format
-msgid "no remembered resolution for '%s'"
-msgstr "липÑ\81ва Ð·Ð°Ð¿Ð°Ð·ÐµÐ½Ð° ÐºÐ¾Ñ\80екÑ\86иÑ\8f Ð½Ð° ÐºÐ¾Ð½Ñ\84ликÑ\82 Ð¿Ñ\80и â\80\9e%sâ\80\9c"
+msgid "could not delete reference %s: %s"
+msgstr "УказаÑ\82елÑ\8fÑ\82 â\80\9e%sâ\80\9c Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð±Ñ\8aде Ð¸Ð·Ñ\82Ñ\80иÑ\82: %s"
 
-#: rerere.c:1077
+#: refs/files-backend.c:1245 refs/packed-backend.c:1555
 #, c-format
-msgid "cannot unlink '%s'"
-msgstr "„%s“ не може да се изтрие"
+msgid "could not delete references: %s"
+msgstr "Указателите не може да бъдат изтрити: %s"
 
-#: rerere.c:1087
+#: refspec.c:170
 #, c-format
-msgid "Updated preimage for '%s'"
-msgstr "Ð\9fÑ\80едваÑ\80иÑ\82елниÑ\8fÑ\82 Ð²Ð°Ñ\80ианÑ\82 Ð½Ð° â\80\9e%sâ\80\9c Ðµ Ð¾Ð±Ð½Ð¾Ð²ÐµÐ½"
+msgid "invalid refspec '%s'"
+msgstr "непÑ\80авилен Ñ\83казаÑ\82ел: â\80\9e%sâ\80\9c"
 
-#: rerere.c:1096
+#: remote.c:351
 #, c-format
-msgid "Forgot resolution for '%s'\n"
-msgstr "Запазената корекция на конфликт при „%s“ е премахната\n"
+msgid "config remote shorthand cannot begin with '/': %s"
+msgstr ""
+"съкращението за отдалечено хранилище не може за започва със знака „/“: %s"
 
-#: rerere.c:1199
-msgid "unable to open rr-cache directory"
-msgstr "диÑ\80екÑ\82оÑ\80иÑ\8fÑ\82а â\80\9err-cacheâ\80\9c Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ð¾Ñ\82воÑ\80и"
+#: remote.c:399
+msgid "more than one receivepack given, using the first"
+msgstr "зададен Ðµ Ð¿Ð¾Ð²ÐµÑ\87е Ð¾Ñ\82 ÐµÐ´Ð¸Ð½ Ð¿Ð°ÐºÐµÑ\82 Ð·Ð° Ð¿Ð¾Ð»Ñ\83Ñ\87аване, Ñ\89е Ñ\81е Ð¿Ð¾Ð»Ð·Ð²Ð° Ð¿Ñ\8aÑ\80виÑ\8fÑ\82"
 
-#: reset.c:42
-msgid "could not determine HEAD revision"
-msgstr "не Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ð¾Ð¿Ñ\80едели ÐºÑ\8aм ÐºÐ°ÐºÐ²Ð¾ Ð´Ð° Ñ\81оÑ\87и Ñ\83казаÑ\82елÑ\8fÑ\82 â\80\9eHEADâ\80\9c"
+#: remote.c:407
+msgid "more than one uploadpack given, using the first"
+msgstr "зададен Ðµ Ð¿Ð¾Ð²ÐµÑ\87е Ð¾Ñ\82 ÐµÐ´Ð¸Ð½ Ð¿Ð°ÐºÐµÑ\82 Ð·Ð° Ð¸Ð·Ð¿Ñ\80аÑ\89ане, Ñ\89е Ñ\81е Ð¿Ð¾Ð»Ð·Ð²Ð° Ð¿Ñ\8aÑ\80виÑ\8fÑ\82"
 
-#: reset.c:70 reset.c:76 sequencer.c:3460
+#: remote.c:590
 #, c-format
-msgid "failed to find tree of %s"
-msgstr "дървото, сочено от „%s“, не може да бъде открито"
-
-#: revision.c:2336
-msgid "--unpacked=<packfile> no longer supported"
-msgstr "опцията „--unpacked=ПАКЕТЕН_ФАЙЛ“ вече не се поддържа"
+msgid "Cannot fetch both %s and %s to %s"
+msgstr "Невъзможно е да се доставят едновременно и „%s“, и „%s“ към „%s“"
 
-#: revision.c:2356
+#: remote.c:594
 #, c-format
-msgid "unknown value for --diff-merges: %s"
-msgstr "непозната стойност за опцията „--diff-merges“: „%s“"
-
-#: revision.c:2694
-msgid "your current branch appears to be broken"
-msgstr "Текущият клон е повреден"
+msgid "%s usually tracks %s, not %s"
+msgstr "„%s“ обикновено следи „%s“, а не „%s“"
 
-#: revision.c:2697
+#: remote.c:598
 #, c-format
-msgid "your current branch '%s' does not have any commits yet"
-msgstr "Текущият клон „%s“ е без подавания "
-
-#: revision.c:2907
-msgid "-L does not yet support diff formats besides -p and -s"
-msgstr ""
-"опцията „-L“ поддържа единствено форматирането на разликите според опциите „-"
-"p“ и „-s“"
-
-#: run-command.c:764
-msgid "open /dev/null failed"
-msgstr "неуспешно отваряне на „/dev/null“"
+msgid "%s tracks both %s and %s"
+msgstr "„%s“ следи както „%s“, така и „%s“"
 
-#: run-command.c:1271
+#: remote.c:666
 #, c-format
-msgid "cannot create async thread: %s"
-msgstr "не Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ñ\81Ñ\8aздаде Ð°Ñ\81инÑ\85Ñ\80онна Ð½Ð¸Ñ\88ка: %s"
+msgid "key '%s' of pattern had no '*'"
+msgstr "клÑ\8eÑ\87 â\80\9e%sâ\80\9c Ð½Ð° Ñ\88аблона Ð½Ðµ Ñ\81Ñ\8aдÑ\8aÑ\80жа â\80\9e\80\9c"
 
-#: run-command.c:1335
+#: remote.c:676
 #, c-format
-msgid ""
-"The '%s' hook was ignored because it's not set as executable.\n"
-"You can disable this warning with `git config advice.ignoredHook false`."
-msgstr ""
-"Куката „%s“ се прескача, защото липсват права за изпълнение.\n"
-"За да изключите това предупреждение, изпълнете:\n"
-"    git config advice.ignoredHook false"
-
-#: send-pack.c:146
-msgid "unexpected flush packet while reading remote unpack status"
-msgstr ""
-"неочакван изчистващ пакет „flush“ при изчитане на състоянието от "
-"отдалеченото разпакетиране"
+msgid "value '%s' of pattern has no '*'"
+msgstr "стойност „%s“ на шаблона не съдържа „*“"
 
-#: send-pack.c:148
+#: remote.c:1083
 #, c-format
-msgid "unable to parse remote unpack status: %s"
-msgstr ""
-"състоянието от отдалеченото разпакетиране не може да бъде анализирано: %s"
+msgid "src refspec %s does not match any"
+msgstr "указателят на версия-източник „%s“ не съвпада с никой обект"
 
-#: send-pack.c:150
+#: remote.c:1088
 #, c-format
-msgid "remote unpack failed: %s"
-msgstr "неуспешно отдалечено разпакетиране: %s"
-
-#: send-pack.c:374
-msgid "failed to sign the push certificate"
-msgstr "сертификатът за изтласкване не може да бъде подписан"
-
-#: send-pack.c:467
-msgid "the receiving end does not support this repository's hash algorithm"
-msgstr ""
-"отсрещната страна не поддържа алгоритъма за контролни суми на това хранилище"
-
-#: send-pack.c:476
-msgid "the receiving end does not support --signed push"
-msgstr "отсрещната страна не поддържа изтласкване с опцията „--signed“"
+msgid "src refspec %s matches more than one"
+msgstr "указателят на версия-източник „%s“ съвпада с повече от един обект"
 
-#: send-pack.c:478
+#. TRANSLATORS: "matches '%s'%" is the <dst> part of "git push
+#. <remote> <src>:<dst>" push, and "being pushed ('%s')" is
+#. the <src>.
+#.
+#: remote.c:1103
+#, c-format
 msgid ""
-"not sending a push certificate since the receiving end does not support --"
-"signed push"
+"The destination you provided is not a full refname (i.e.,\n"
+"starting with \"refs/\"). We tried to guess what you meant by:\n"
+"\n"
+"- Looking for a ref that matches '%s' on the remote side.\n"
+"- Checking if the <src> being pushed ('%s')\n"
+"  is a ref in \"refs/{heads,tags}/\". If so we add a corresponding\n"
+"  refs/{heads,tags}/ prefix on the remote side.\n"
+"\n"
+"Neither worked, so we gave up. You must fully qualify the ref."
 msgstr ""
-"отсрещната страна не поддържа изтласкване с опцията „--signed“, затова не се "
-"използва сертификат"
-
-#: send-pack.c:490
-msgid "the receiving end does not support --atomic push"
-msgstr "получаващата страна не поддържа изтласкване с опцията „--atomic“"
-
-#: send-pack.c:495
-msgid "the receiving end does not support push options"
-msgstr "отсрещната страна не поддържа опции при изтласкване"
-
-#: sequencer.c:195
-#, c-format
-msgid "invalid commit message cleanup mode '%s'"
-msgstr "несъществуващ режим на изчистване „%s“ на съобщение при подаване"
-
-#: sequencer.c:323
-#, c-format
-msgid "could not delete '%s'"
-msgstr "„%s“ не може да бъде изтрит"
+"Зададената цел не е пълно име на указател (не започва с „refs/“).\n"
+"Бяха пробвани следните варианти:\n"
+"\n"
+"  ⁃ указател от отдалеченото хранилище, който да съответства на „%s“;\n"
+"  ⁃ дали изтласкваният ИЗТОЧНИК („%s“) е указател в „refs/{heads,tags}/“.\n"
+"    При съвпадение се добавя съответен префикс „refs/{heads,tags}/“ за\n"
+"    отдалеченото хранилище.\n"
+"\n"
+"Никой от вариантите не сработи.  Трябва сами да укажете пълното име на\n"
+"указателя."
 
-#: sequencer.c:343 builtin/rebase.c:755 builtin/rebase.c:1596 builtin/rm.c:385
+#: remote.c:1123
 #, c-format
-msgid "could not remove '%s'"
-msgstr "„%s“ не може да бъде изтрит"
-
-#: sequencer.c:353
-msgid "revert"
-msgstr "отмяна"
-
-#: sequencer.c:355
-msgid "cherry-pick"
-msgstr "отбиране"
-
-#: sequencer.c:357
-msgid "rebase"
-msgstr "пребазиране"
+msgid ""
+"The <src> part of the refspec is a commit object.\n"
+"Did you mean to create a new branch by pushing to\n"
+"'%s:refs/heads/%s'?"
+msgstr ""
+"ИЗТОЧНИКът е обект-подаване.  Не целите ли всъщност да създадете нов клон "
+"като\n"
+"изтласкате към „%s:refs/heads/%s“?"
 
-#: sequencer.c:359
+#: remote.c:1128
 #, c-format
-msgid "unknown action: %d"
-msgstr "неизвестно действие: %d"
-
-#: sequencer.c:418
 msgid ""
-"after resolving the conflicts, mark the corrected paths\n"
-"with 'git add <paths>' or 'git rm <paths>'"
+"The <src> part of the refspec is a tag object.\n"
+"Did you mean to create a new tag by pushing to\n"
+"'%s:refs/tags/%s'?"
 msgstr ""
-"след коригирането на конфликтите, отбележете съответните\n"
-"пътища с „git add ПЪТ…“ или „git rm ПЪТ…“."
+"ИЗТОЧНИКът е обект-етикет.  Не целите ли всъщност да създадете нов клон "
+"като\n"
+"изтласкате към „%s:refs/tags/%s“?"
 
-#: sequencer.c:421
+#: remote.c:1133
+#, c-format
 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'"
+"The <src> part of the refspec is a tree object.\n"
+"Did you mean to tag a new tree by pushing to\n"
+"'%s:refs/tags/%s'?"
 msgstr ""
-"след коригирането на конфликтите, отбележете съответните\n"
-"пътища с „git add ПЪТ…“ или „git rm ПЪТ…“, след което\n"
-"подайте резултата с командата „git commit'“."
+"ИЗТОЧНИКът е обект-дърво.  Не целите ли всъщност да създадете нов клон като\n"
+"изтласкате към „%s:refs/tags/%s“?"
 
-#: sequencer.c:434 sequencer.c:3062
+#: remote.c:1138
 #, c-format
-msgid "could not lock '%s'"
-msgstr "„%s“ не може да се заключи"
+msgid ""
+"The <src> part of the refspec is a blob object.\n"
+"Did you mean to tag a new blob by pushing to\n"
+"'%s:refs/tags/%s'?"
+msgstr ""
+"ИЗТОЧНИКът е обект-BLOB.  Не целите ли всъщност да създадете нов клон като\n"
+"изтласкате към „%s:refs/tags/%s“?"
 
-#: sequencer.c:436 sequencer.c:2861 sequencer.c:3066 sequencer.c:3080
-#: sequencer.c:3337 sequencer.c:5326 strbuf.c:1168 wrapper.c:631
+#: remote.c:1174
 #, c-format
-msgid "could not write to '%s'"
-msgstr "в â\80\9e%sâ\80\9c Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ð¿Ð¸Ñ\88е"
+msgid "%s cannot be resolved to branch"
+msgstr "не Ðµ Ð¾Ñ\82кÑ\80иÑ\82 ÐºÐ»Ð¾Ð½ Ñ\81Ñ\8aоÑ\82веÑ\82Ñ\81Ñ\82ваÑ\89 Ð½Ð° â\80\9e%sâ\80\9c"
 
-#: sequencer.c:441
+#: remote.c:1185
 #, c-format
-msgid "could not write eol to '%s'"
-msgstr "краят на ред не може да се запише в „%s“"
+msgid "unable to delete '%s': remote ref does not exist"
+msgstr "„%s“ не може да се изтрие: отдалечения указател не съществува"
 
-#: sequencer.c:446 sequencer.c:2866 sequencer.c:3068 sequencer.c:3082
-#: sequencer.c:3345
+#: remote.c:1197
 #, c-format
-msgid "failed to finalize '%s'"
-msgstr "„%s“ не може да се завърши"
+msgid "dst refspec %s matches more than one"
+msgstr "указателят на версия-цел „%s“ съвпада с повече от един обект"
 
-#: sequencer.c:485
+#: remote.c:1204
 #, c-format
-msgid "your local changes would be overwritten by %s."
-msgstr "локалните ви промени ще бъдат презаписани при %s."
+msgid "dst ref %s receives from more than one src"
+msgstr ""
+"указателят на версия-цел „%s“ съответства и ще получава от повече от един "
+"източник"
 
-#: sequencer.c:489
-msgid "commit your changes or stash them to proceed."
-msgstr "подайÑ\82е Ð¸Ð»Ð¸ Ñ\81каÑ\82айÑ\82е Ð¿Ñ\80омениÑ\82е, Ð·Ð° Ð´Ð° Ð¿Ñ\80одÑ\8aлжиÑ\82е"
+#: remote.c:1724 remote.c:1825
+msgid "HEAD does not point to a branch"
+msgstr "УказаÑ\82елÑ\8fÑ\82 â\80\9eHEADâ\80\9c Ð½Ðµ Ñ\81оÑ\87и ÐºÑ\8aм ÐºÐ»Ð¾Ð½"
 
-#: sequencer.c:521
+#: remote.c:1733
 #, c-format
-msgid "%s: fast-forward"
-msgstr "%s: превъртане"
+msgid "no such branch: '%s'"
+msgstr "няма клон на име „%s“"
 
-#: sequencer.c:560 builtin/tag.c:566
+#: remote.c:1736
 #, c-format
-msgid "Invalid cleanup mode %s"
-msgstr "Ð\9dеÑ\81Ñ\8aÑ\89еÑ\81Ñ\82вÑ\83ваÑ\89 Ñ\80ежим Ð½Ð° Ð¸Ð·Ñ\87иÑ\81Ñ\82ване „%s“"
+msgid "no upstream configured for branch '%s'"
+msgstr "не Ðµ Ð·Ð°Ð´Ð°Ð´ÐµÐ½ ÐºÐ»Ð¾Ð½-изÑ\82оÑ\87ник Ð·Ð° ÐºÐ»Ð¾Ð½Ð° „%s“"
 
-#. TRANSLATORS: %s will be "revert", "cherry-pick" or
-#. "rebase".
-#.
-#: sequencer.c:670
+#: remote.c:1742
 #, c-format
-msgid "%s: Unable to write new index file"
-msgstr "%s: новият индекс не може да бъде запазен"
-
-#: sequencer.c:687
-msgid "unable to update cache tree"
-msgstr "дървото на кеша не може да бъде обновено"
-
-#: sequencer.c:701
-msgid "could not resolve HEAD commit"
-msgstr "подаването, сочено от указателя „HEAD“, не може да бъде открито"
+msgid "upstream branch '%s' not stored as a remote-tracking branch"
+msgstr "клонът-източник „%s“ не е съхранен като следящ клон"
 
-#: sequencer.c:781
+#: remote.c:1757
 #, c-format
-msgid "no key present in '%.*s'"
-msgstr "в „%.*s“ няма ключове"
+msgid "push destination '%s' on remote '%s' has no local tracking branch"
+msgstr ""
+"липсва локален следящ клон за местоположението за изтласкване „%s“ в "
+"хранилището „%s“"
 
-#: sequencer.c:792
+#: remote.c:1769
 #, c-format
-msgid "unable to dequote value of '%s'"
-msgstr "цитирането на стойността на „%s“ не може да бъде изчистено"
+msgid "branch '%s' has no remote for pushing"
+msgstr "няма информация клонът „%s“ да следи някой друг"
 
-#: sequencer.c:829 wrapper.c:201 wrapper.c:371 builtin/am.c:710
-#: builtin/am.c:802 builtin/merge.c:1135 builtin/rebase.c:908
+#: remote.c:1779
 #, c-format
-msgid "could not open '%s' for reading"
-msgstr "файлът не може да бъде прочетен: „%s“"
-
-#: sequencer.c:839
-msgid "'GIT_AUTHOR_NAME' already given"
-msgstr "настройката за автор „GIT_AUTHOR_NAME“ вече е зададена"
+msgid "push refspecs for '%s' do not include '%s'"
+msgstr "указателят за изтласкване на „%s“ не включва „%s“"
 
-#: sequencer.c:844
-msgid "'GIT_AUTHOR_EMAIL' already given"
-msgstr "настройката за е-поща „GIT_AUTHOR_EMAIL“ вече е зададена"
+#: remote.c:1792
+msgid "push has no destination (push.default is 'nothing')"
+msgstr "указателят за изтласкване не включва цел („push.default“ е „nothing“)"
 
-#: sequencer.c:849
-msgid "'GIT_AUTHOR_DATE' already given"
-msgstr "наÑ\81Ñ\82Ñ\80ойкаÑ\82а Ð·Ð° Ð´Ð°Ñ\82а â\80\9eGIT_AUTHOR_DATEâ\80\9c Ð²ÐµÑ\87е Ðµ Ð·Ð°Ð´Ð°Ð´ÐµÐ½Ð°"
+#: remote.c:1814
+msgid "cannot resolve 'simple' push to a single destination"
+msgstr "пÑ\80оÑ\81Ñ\82оÑ\82о (simple) Ð¸Ð·Ñ\82лаÑ\81кване Ð½Ðµ Ñ\81Ñ\8aоÑ\82веÑ\82Ñ\81Ñ\82ва Ð½Ð° ÐµÐ´Ð½Ð° Ñ\86ел"
 
-#: sequencer.c:853
+#: remote.c:1943
 #, c-format
-msgid "unknown variable '%s'"
-msgstr "непозната променлива „%s“"
-
-#: sequencer.c:858
-msgid "missing 'GIT_AUTHOR_NAME'"
-msgstr "настройката за автор „GIT_AUTHOR_NAME“ липсва"
-
-#: sequencer.c:860
-msgid "missing 'GIT_AUTHOR_EMAIL'"
-msgstr "настройката за е-поща „GIT_AUTHOR_EMAIL“ липсва"
-
-#: sequencer.c:862
-msgid "missing 'GIT_AUTHOR_DATE'"
-msgstr "настройката за дата „GIT_AUTHOR_DATE“ липсва"
+msgid "couldn't find remote ref %s"
+msgstr "отдалеченият указател „%s“ не може да бъде открит"
 
-#: sequencer.c:927
+#: remote.c:1956
 #, c-format
-msgid ""
-"you have staged changes in your working tree\n"
-"If these changes are meant to be squashed into the previous commit, run:\n"
-"\n"
-"  git commit --amend %s\n"
-"\n"
-"If they are meant to go into a new commit, run:\n"
-"\n"
-"  git commit %s\n"
-"\n"
-"In both cases, once you're done, continue with:\n"
-"\n"
-"  git rebase --continue\n"
-msgstr ""
-"в това работно дърво има скатани промени.\n"
-"Ако искате да ги вкарате в предишното подаване, изпълнете:\n"
-"\n"
-"    git commit --amend %s\n"
-"\n"
-"Ако искате да създадете ново подаване, изпълнете:\n"
-"\n"
-"    git commit %s\n"
-"\n"
-"И в двата случая продължавате след това с командата:\n"
-"\n"
-"    git rebase --continue\n"
+msgid "* Ignoring funny ref '%s' locally"
+msgstr "• прескачане на неочаквания локален указател „%s“"
 
-#: sequencer.c:1208
-msgid "'prepare-commit-msg' hook failed"
-msgstr ""
-"неуспешно изпълнение на куката при промяна на съобщението при подаване "
-"(prepare-commit-msg)"
+#: remote.c:2119
+#, c-format
+msgid "Your branch is based on '%s', but the upstream is gone.\n"
+msgstr "Този клон следи „%s“, но следеният клон е изтрит.\n"
 
-#: sequencer.c:1214
-msgid ""
-"Your name and email address were configured automatically based\n"
-"on your username and hostname. Please check that they are accurate.\n"
-"You can suppress this message by setting them explicitly. Run the\n"
-"following command and follow the instructions in your editor to edit\n"
-"your configuration file:\n"
-"\n"
-"    git config --global --edit\n"
-"\n"
-"After doing this, you may fix the identity used for this commit with:\n"
-"\n"
-"    git commit --amend --reset-author\n"
-msgstr ""
-"Името и адресът за е-поща са настроени автоматично на базата на името на\n"
-"потребителя и името на машината.  Проверете дали са верни.  Можете да "
-"спрете\n"
-"това съобщение като изрично зададете стойностите.  Изпълнете следната "
-"команда\n"
-"и следвайте инструкциите в текстовия ви редактор, за да редактирате\n"
-"конфигурационния файл:\n"
-"\n"
-"    git config --global --edit\n"
-"\n"
-"След като направите това, можете да коригирате информацията за автора на\n"
-"текущото подаване чрез:\n"
-"\n"
-"    git commit --amend --reset-author\n"
+#: remote.c:2123
+msgid "  (use \"git branch --unset-upstream\" to fixup)\n"
+msgstr "  (за да коригирате това, използвайте „git branch --unset-upstream“)\n"
 
-#: sequencer.c:1227
-msgid ""
-"Your name and email address were configured automatically based\n"
-"on your username and hostname. Please check that they are accurate.\n"
-"You can suppress this message by setting them explicitly:\n"
-"\n"
-"    git config --global user.name \"Your Name\"\n"
-"    git config --global user.email you@example.com\n"
-"\n"
-"After doing this, you may fix the identity used for this commit with:\n"
-"\n"
-"    git commit --amend --reset-author\n"
-msgstr ""
-"Името и адресът за е-поща са настроени автоматично на базата на името на\n"
-"потребителя и името на машината.  Проверете дали са верни.  Можете да "
-"спрете\n"
-"това съобщение като изрично зададете стойностите:\n"
-"\n"
-"    git config --global user.name \"Вашето Име\"\n"
-"    git config --global user.email пенчо@example.com\n"
-"\n"
-"След като направите това, можете да коригирате информацията за автора на\n"
-"текущото подаване чрез:\n"
-"\n"
-"    git commit --amend --reset-author\n"
+#: remote.c:2126
+#, c-format
+msgid "Your branch is up to date with '%s'.\n"
+msgstr "Клонът е обновен към „%s“.\n"
 
-#: sequencer.c:1269
-msgid "couldn't look up newly created commit"
-msgstr "току що създаденото подаване не може да бъде открито"
+#: remote.c:2130
+#, c-format
+msgid "Your branch and '%s' refer to different commits.\n"
+msgstr "Клонът ви и „%s“ сочат към различни подавания.\n"
 
-#: sequencer.c:1271
-msgid "could not parse newly created commit"
-msgstr "току що създаденото подаване не може да бъде анализирано"
+#: remote.c:2133
+#, c-format
+msgid "  (use \"%s\" for details)\n"
+msgstr "  (за повече информация ползвайте „%s“)\n"
 
-#: sequencer.c:1317
-msgid "unable to resolve HEAD after creating commit"
-msgstr ""
-"състоянието сочено от указателя „HEAD“ не може да бъде открито след "
-"подаването"
+#: remote.c:2137
+#, c-format
+msgid "Your branch is ahead of '%s' by %d commit.\n"
+msgid_plural "Your branch is ahead of '%s' by %d commits.\n"
+msgstr[0] "Клонът ви е с %2$d подаване пред „%1$s“.\n"
+msgstr[1] "Клонът ви е с %2$d подавания пред „%1$s“.\n"
 
-#: sequencer.c:1319
-msgid "detached HEAD"
-msgstr "несвързан връх „HEAD“"
+#: remote.c:2143
+msgid "  (use \"git push\" to publish your local commits)\n"
+msgstr "  (публикувайте локалните си промени чрез „git push“)\n"
 
-#: sequencer.c:1323
-msgid " (root-commit)"
-msgstr " (начално подаване)"
+#: remote.c:2146
+#, c-format
+msgid "Your branch is behind '%s' by %d commit, and can be fast-forwarded.\n"
+msgid_plural ""
+"Your branch is behind '%s' by %d commits, and can be fast-forwarded.\n"
+msgstr[0] "Клонът ви е с %2$d подаване зад „%1$s“ и може да бъде превъртян.\n"
+msgstr[1] "Клонът ви е с %2$d подавания зад „%1$s“ и може да бъде превъртян.\n"
 
-#: sequencer.c:1344
-msgid "could not parse HEAD"
-msgstr "указателят „HEAD“ не може да бъде анализиран"
+#: remote.c:2154
+msgid "  (use \"git pull\" to update your local branch)\n"
+msgstr "  (обновете локалния си клон чрез „git pull“)\n"
 
-#: sequencer.c:1346
+#: remote.c:2157
 #, c-format
-msgid "HEAD %s is not a commit!"
-msgstr "указателят „HEAD“ „%s“ сочи към нещо, което не е подаване!"
+msgid ""
+"Your branch and '%s' have diverged,\n"
+"and have %d and %d different commit each, respectively.\n"
+msgid_plural ""
+"Your branch and '%s' have diverged,\n"
+"and have %d and %d different commits each, respectively.\n"
+msgstr[0] ""
+"Текущият клон се е отделил от „%s“,\n"
+"двата имат съответно по %d и %d несъвпадащи подавания.\n"
+msgstr[1] ""
+"Текущият клон се е отделил от „%s“,\n"
+"двата имат съответно по %d и %d несъвпадащи подавания.\n"
 
-#: sequencer.c:1350 sequencer.c:1425 builtin/commit.c:1577
-msgid "could not parse HEAD commit"
-msgstr "върховото подаване „HEAD“ не може да бъде прочетено"
+#: remote.c:2167
+msgid "  (use \"git pull\" to merge the remote branch into yours)\n"
+msgstr "  (слейте отдалечения клон в локалния чрез „git pull“)\n"
 
-#: sequencer.c:1403 sequencer.c:2100
-msgid "unable to parse commit author"
-msgstr "авторът на подаването не може да бъде анализиран"
+#: remote.c:2359
+#, c-format
+msgid "cannot parse expected object name '%s'"
+msgstr "очакваното име на обект „%s“ не може да бъде анализирано"
 
-#: sequencer.c:1414 builtin/am.c:1566 builtin/merge.c:701
-msgid "git write-tree failed to write a tree"
-msgstr "Командата „git write-tree“ не успя да запише обект-дърво"
+#: replace-object.c:21
+#, c-format
+msgid "bad replace ref name: %s"
+msgstr "неправилно име на указател за замяна: „%s“"
 
-#: sequencer.c:1447 sequencer.c:1565
+#: replace-object.c:30
 #, c-format
-msgid "unable to read commit message from '%s'"
-msgstr "съобщението за подаване не може да бъде прочетено от „%s“"
+msgid "duplicate replace ref: %s"
+msgstr "повтарящ се указател за замяна: „%s“"
 
-#: sequencer.c:1476 sequencer.c:1508
+#: replace-object.c:82
 #, c-format
-msgid "invalid author identity '%s'"
-msgstr "непÑ\80авилна Ñ\81амолиÑ\87ноÑ\81Ñ\82 Ð·Ð° Ð°Ð²Ñ\82оÑ\80: „%s“"
+msgid "replace depth too high for object %s"
+msgstr "дÑ\8aлбоÑ\87инаÑ\82а Ð½Ð° Ð·Ð°Ð¼Ñ\8fна Ðµ Ð¿Ñ\80екалено Ð³Ð¾Ð»Ñ\8fма Ð·Ð° Ð¾Ð±ÐµÐºÑ\82а: „%s“"
 
-#: sequencer.c:1482
-msgid "corrupt author: missing date information"
-msgstr "повредена информация за автор: липсва дата"
+#: rerere.c:201 rerere.c:210 rerere.c:213
+msgid "corrupt MERGE_RR"
+msgstr "повреден „MERGE_RR“ (запис за коригиране на конфликт)"
 
-#: sequencer.c:1521 builtin/am.c:1593 builtin/commit.c:1678 builtin/merge.c:904
-#: builtin/merge.c:929 t/helper/test-fast-rebase.c:78
-msgid "failed to write commit object"
-msgstr "обектът за подаването не може да бъде записан"
+#: rerere.c:248 rerere.c:253
+msgid "unable to write rerere record"
+msgstr "приложеното коригиране на конфликт не може да бъде записано"
 
-#: sequencer.c:1548 sequencer.c:4283 t/helper/test-fast-rebase.c:198
+#: rerere.c:479
 #, c-format
-msgid "could not update %s"
-msgstr "„%s“ не може да се обнови"
+msgid "there were errors while writing '%s' (%s)"
+msgstr "грешки при записването на „%s“ (%s)"
 
-#: sequencer.c:1597
+#: rerere.c:482
 #, c-format
-msgid "could not parse commit %s"
-msgstr "подаванеÑ\82о â\80\9e%sâ\80\9c Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð±Ñ\8aде Ð°Ð½Ð°Ð»Ð¸Ð·Ð¸Ñ\80ано"
+msgid "failed to flush '%s'"
+msgstr "гÑ\80еÑ\88ка Ð¿Ñ\80и Ð¸Ð·Ñ\87иÑ\81Ñ\82ванеÑ\82о Ð½Ð° Ð±Ñ\83Ñ\84еÑ\80иÑ\82е Ð¿Ñ\80и Ð·Ð°Ð¿Ð¸Ñ\81ванеÑ\82о Ð½Ð° â\80\9e%sâ\80\9c"
 
-#: sequencer.c:1602
+#: rerere.c:487 rerere.c:1023
 #, c-format
-msgid "could not parse parent commit %s"
-msgstr "родителското подаване „%s“ не може да бъде анализирано"
+msgid "could not parse conflict hunks in '%s'"
+msgstr "парчетата с конфликти в „%s“ не може да се анализират"
 
-#: sequencer.c:1685 sequencer.c:1796
+#: rerere.c:668
 #, c-format
-msgid "unknown command: %d"
-msgstr "непозната команда: %d"
+msgid "failed utime() on '%s'"
+msgstr "неуспешно задаване на време на достъп/създаване чрез „utime“ на „%s“"
 
-#: sequencer.c:1743 sequencer.c:1768
+#: rerere.c:678
 #, c-format
-msgid "This is a combination of %d commits."
-msgstr "Това е обединение от %d подавания"
-
-#: sequencer.c:1753
-msgid "need a HEAD to fixup"
-msgstr "За вкарване в предходното подаване ви трябва указател „HEAD“"
-
-#: sequencer.c:1755 sequencer.c:3372
-msgid "could not read HEAD"
-msgstr "указателят „HEAD“ не може да се прочете"
+msgid "writing '%s' failed"
+msgstr "неуспешен запис на „%s“"
 
-#: sequencer.c:1757
-msgid "could not read HEAD's commit message"
+#: rerere.c:698
+#, c-format
+msgid "Staged '%s' using previous resolution."
 msgstr ""
-"съобщението за подаване към указателя „HEAD“ не може да бъде прочетено: %s"
+"„%s“ е добавен към индекса с преизползване на запазена корекция при сливане"
 
-#: sequencer.c:1763
+#: rerere.c:737
 #, c-format
-msgid "cannot write '%s'"
-msgstr "„%s“ не може да се запази"
-
-#: sequencer.c:1770 git-rebase--preserve-merges.sh:486
-msgid "This is the 1st commit message:"
-msgstr "Това е 1-то съобщение при подаване:"
+msgid "Recorded resolution for '%s'."
+msgstr "Корекцията на конфликта при сливане на „%s“ е запазена."
 
-#: sequencer.c:1778
+#: rerere.c:772
 #, c-format
-msgid "could not read commit message of %s"
-msgstr "съобщението за подаване към „%s“ не може да бъде прочетено"
+msgid "Resolved '%s' using previous resolution."
+msgstr ""
+"Конфликтът при сливане на „%s“ е коригиран с преизползване на предишна "
+"корекция."
 
-#: sequencer.c:1785
+#: rerere.c:787
 #, c-format
-msgid "This is the commit message #%d:"
-msgstr "Това Ðµ Ñ\81Ñ\8aобÑ\89ение Ð¿Ñ\80и Ð¿Ð¾Ð´Ð°Ð²Ð°Ð½Ðµ â\84\96%d:"
+msgid "cannot unlink stray '%s'"
+msgstr "излиÑ\88ниÑ\8fÑ\82 Ð¾Ð±ÐµÐºÑ\82 â\80\9e%sâ\80\9c Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ð¸Ð·Ñ\82Ñ\80ие"
 
-#: sequencer.c:1791
+#: rerere.c:791
 #, c-format
-msgid "The commit message #%d will be skipped:"
-msgstr "Съобщение при подаване №%d ще бъде прескочено:"
-
-#: sequencer.c:1879
-msgid "your index file is unmerged."
-msgstr "индексът не е слят."
-
-#: sequencer.c:1886
-msgid "cannot fixup root commit"
-msgstr "началното подаване не може да се вкара в предходното му"
+msgid "Recorded preimage for '%s'"
+msgstr "Предварителният вариант на „%s“ е запазен"
 
-#: sequencer.c:1905
+#: rerere.c:865 submodule.c:2088 builtin/log.c:1991
+#: builtin/submodule--helper.c:1878 builtin/submodule--helper.c:1890
 #, c-format
-msgid "commit %s is a merge but no -m option was given."
-msgstr "подаванеÑ\82о â\80\9e%sâ\80\9c Ðµ Ñ\81ливане, Ð½Ð¾ Ð½Ðµ Ðµ Ð´Ð°Ð´ÐµÐ½Ð° Ð¾Ð¿Ñ\86иÑ\8fÑ\82а â\80\9e-mâ\80\9c"
+msgid "could not create directory '%s'"
+msgstr "Ð\94иÑ\80екÑ\82оÑ\80иÑ\8fÑ\82а â\80\9e%sâ\80\9c Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð±Ñ\8aде Ñ\81Ñ\8aздадена"
 
-#: sequencer.c:1913 sequencer.c:1921
+#: rerere.c:1041
 #, c-format
-msgid "commit %s does not have parent %d"
-msgstr "подаванеÑ\82о â\80\9e%sâ\80\9c Ð½Ñ\8fма Ñ\80одиÑ\82ел %d"
+msgid "failed to update conflicted state in '%s'"
+msgstr "конÑ\84ликÑ\82Ñ\8aÑ\82 Ð² â\80\9e%sâ\80\9c Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ð¾Ð±Ð½Ð¾Ð²Ð¸"
 
-#: sequencer.c:1927
+#: rerere.c:1052 rerere.c:1059
 #, c-format
-msgid "cannot get commit message for %s"
-msgstr "неÑ\83Ñ\81пеÑ\88но Ð¸Ð·Ð²Ð»Ð¸Ñ\87ане Ð½Ð° Ñ\81Ñ\8aобÑ\89ениеÑ\82о Ð·Ð° Ð¿Ð¾Ð´Ð°Ð²Ð°Ð½Ðµ Ð½Ð° „%s“"
+msgid "no remembered resolution for '%s'"
+msgstr "липÑ\81ва Ð·Ð°Ð¿Ð°Ð·ÐµÐ½Ð° ÐºÐ¾Ñ\80екÑ\86иÑ\8f Ð½Ð° ÐºÐ¾Ð½Ñ\84ликÑ\82 Ð¿Ñ\80и „%s“"
 
-#. TRANSLATORS: The first %s will be a "todo" command like
-#. "revert" or "pick", the second %s a SHA1.
-#: sequencer.c:1946
+#: rerere.c:1061
 #, c-format
-msgid "%s: cannot parse parent commit %s"
-msgstr "%s: неразпозната стойност за родителското подаване „%s“"
+msgid "cannot unlink '%s'"
+msgstr "„%s“ не може да се изтрие"
 
-#: sequencer.c:2011
+#: rerere.c:1071
 #, c-format
-msgid "could not rename '%s' to '%s'"
-msgstr "„%s“ не може да се преименува на „%s“"
+msgid "Updated preimage for '%s'"
+msgstr "Предварителният вариант на „%s“ е обновен"
 
-#: sequencer.c:2071
+#: rerere.c:1080
 #, c-format
-msgid "could not revert %s... %s"
-msgstr "подаването „%s“… не може да бъде отменено: „%s“"
+msgid "Forgot resolution for '%s'\n"
+msgstr "Запазената корекция на конфликт при „%s“ е премахната\n"
+
+#: rerere.c:1191
+msgid "unable to open rr-cache directory"
+msgstr "директорията „rr-cache“ не може да се отвори"
+
+#: reset.c:42
+msgid "could not determine HEAD revision"
+msgstr "не може да се определи към какво да сочи указателят „HEAD“"
 
-#: sequencer.c:2072
+#: reset.c:70 reset.c:76 sequencer.c:3468
 #, c-format
-msgid "could not apply %s... %s"
-msgstr "подаването „%s“… не може да бъде приложено: „%s“"
+msgid "failed to find tree of %s"
+msgstr "дървото, сочено от „%s“, не може да бъде открито"
+
+#: revision.c:2338
+msgid "--unpacked=<packfile> no longer supported"
+msgstr "опцията „--unpacked=ПАКЕТЕН_ФАЙЛ“ вече не се поддържа"
+
+#: revision.c:2668
+msgid "your current branch appears to be broken"
+msgstr "Текущият клон е повреден"
 
-#: sequencer.c:2092
+#: revision.c:2671
 #, c-format
-msgid "dropping %s %s -- patch contents already upstream\n"
-msgstr "пÑ\80еÑ\81каÑ\87ане Ð½Ð° %s %s â\80\94 ÐºÑ\80Ñ\8aпкаÑ\82а Ð²ÐµÑ\87е Ðµ Ð¿Ñ\80иложена\n"
+msgid "your current branch '%s' does not have any commits yet"
+msgstr "ТекÑ\83Ñ\89иÑ\8fÑ\82 ÐºÐ»Ð¾Ð½ â\80\9e%sâ\80\9c Ðµ Ð±ÐµÐ· Ð¿Ð¾Ð´Ð°Ð²Ð°Ð½Ð¸Ñ\8f "
 
-#: sequencer.c:2150
+#: revision.c:2877
+msgid "-L does not yet support diff formats besides -p and -s"
+msgstr ""
+"опцията „-L“ поддържа единствено форматирането на разликите според опциите „-"
+"p“ и „-s“"
+
+#: run-command.c:767
+msgid "open /dev/null failed"
+msgstr "неуспешно отваряне на „/dev/null“"
+
+#: run-command.c:1274
 #, c-format
-msgid "git %s: failed to read the index"
-msgstr "git %s: неуспешно изчитане на индекса"
+msgid "cannot create async thread: %s"
+msgstr "не може да се създаде асинхронна нишка: %s"
 
-#: sequencer.c:2157
+#: run-command.c:1338
 #, c-format
-msgid "git %s: failed to refresh the index"
-msgstr "git %s: неуспешно обновяване на индекса"
+msgid ""
+"The '%s' hook was ignored because it's not set as executable.\n"
+"You can disable this warning with `git config advice.ignoredHook false`."
+msgstr ""
+"Куката „%s“ се прескача, защото липсват права за изпълнение.\n"
+"За да изключите това предупреждение, изпълнете:\n"
+"    git config advice.ignoredHook false"
+
+#: send-pack.c:146
+msgid "unexpected flush packet while reading remote unpack status"
+msgstr ""
+"неочакван изчистващ пакет „flush“ при изчитане на състоянието от "
+"отдалеченото разпакетиране"
 
-#: sequencer.c:2234
+#: send-pack.c:148
 #, c-format
-msgid "%s does not accept arguments: '%s'"
-msgstr "„%s“ не приема аргументи: „%s“"
+msgid "unable to parse remote unpack status: %s"
+msgstr ""
+"състоянието от отдалеченото разпакетиране не може да бъде анализирано: %s"
 
-#: sequencer.c:2243
+#: send-pack.c:150
 #, c-format
-msgid "missing arguments for %s"
-msgstr "„%s“ изисква аргументи"
+msgid "remote unpack failed: %s"
+msgstr "неуспешно отдалечено разпакетиране: %s"
+
+#: send-pack.c:374
+msgid "failed to sign the push certificate"
+msgstr "сертификатът за изтласкване не може да бъде подписан"
+
+#: send-pack.c:467
+msgid "the receiving end does not support this repository's hash algorithm"
+msgstr ""
+"отсрещната страна не поддържа алгоритъма за контролни суми на това хранилище"
+
+#: send-pack.c:476
+msgid "the receiving end does not support --signed push"
+msgstr "отсрещната страна не поддържа изтласкване с опцията „--signed“"
+
+#: send-pack.c:478
+msgid ""
+"not sending a push certificate since the receiving end does not support --"
+"signed push"
+msgstr ""
+"отсрещната страна не поддържа изтласкване с опцията „--signed“, затова не се "
+"използва сертификат"
+
+#: send-pack.c:490
+msgid "the receiving end does not support --atomic push"
+msgstr "получаващата страна не поддържа изтласкване с опцията „--atomic“"
+
+#: send-pack.c:495
+msgid "the receiving end does not support push options"
+msgstr "отсрещната страна не поддържа опции при изтласкване"
 
-#: sequencer.c:2274
+#: sequencer.c:195
 #, c-format
-msgid "could not parse '%s'"
-msgstr "„%s“ не може да се анализира"
+msgid "invalid commit message cleanup mode '%s'"
+msgstr "несъществуващ режим на изчистване „%s“ на съобщение при подаване"
 
-#: sequencer.c:2335
+#: sequencer.c:323
 #, c-format
-msgid "invalid line %d: %.*s"
-msgstr "неправилен ред %d: %.*s"
+msgid "could not delete '%s'"
+msgstr "„%s“ не може да бъде изтрит"
 
-#: sequencer.c:2346
+#: sequencer.c:343 builtin/rebase.c:757 builtin/rebase.c:1602 builtin/rm.c:385
 #, c-format
-msgid "cannot '%s' without a previous commit"
-msgstr "Без предишно подаване не може да се изпълни „%s“"
+msgid "could not remove '%s'"
+msgstr "„%s“ не може да бъде изтрит"
 
-#: sequencer.c:2432
-msgid "cancelling a cherry picking in progress"
-msgstr "пÑ\80еÑ\83Ñ\81Ñ\82ановÑ\8fване Ð½Ð° Ð¸Ð·Ð²Ñ\8aÑ\80Ñ\88ваноÑ\82о Ð² Ð¼Ð¾Ð¼ÐµÐ½Ñ\82а Ð¾Ñ\82биÑ\80ане Ð½Ð° Ð¿Ð¾Ð´Ð°Ð²Ð°Ð½Ð¸Ñ\8f"
+#: sequencer.c:353
+msgid "revert"
+msgstr "оÑ\82мÑ\8fна"
 
-#: sequencer.c:2441
-msgid "cancelling a revert in progress"
-msgstr "пÑ\80еÑ\83Ñ\81Ñ\82ановÑ\8fване Ð½Ð° Ð¸Ð·Ð²Ñ\8aÑ\80Ñ\88ваноÑ\82о Ð² Ð¼Ð¾Ð¼ÐµÐ½Ñ\82а Ð¾Ñ\82мÑ\8fна Ð½Ð° Ð¿Ð¾Ð´Ð°Ð²ане"
+#: sequencer.c:355
+msgid "cherry-pick"
+msgstr "оÑ\82биÑ\80ане"
 
-#: sequencer.c:2485
-msgid "please fix this using 'git rebase --edit-todo'."
-msgstr "коÑ\80игиÑ\80айÑ\82е Ñ\82ова Ñ\87Ñ\80ез â\80\9egit rebase --edit-todoâ\80\9c."
+#: sequencer.c:357
+msgid "rebase"
+msgstr "пÑ\80ебазиÑ\80ане"
 
-#: sequencer.c:2487
+#: sequencer.c:359
 #, c-format
-msgid "unusable instruction sheet: '%s'"
-msgstr "неизползваем файл с описание на предстоящите действия: „%s“"
-
-#: sequencer.c:2492
-msgid "no commits parsed."
-msgstr "никое от подаванията не може да се разпознае."
+msgid "unknown action: %d"
+msgstr "неизвестно действие: %d"
 
-#: sequencer.c:2503
-msgid "cannot cherry-pick during a revert."
+#: sequencer.c:418
+msgid ""
+"after resolving the conflicts, mark the corrected paths\n"
+"with 'git add <paths>' or 'git rm <paths>'"
 msgstr ""
-"по време на отмяна на подаване не може да се извърши отбиране на подаване."
+"след коригирането на конфликтите, отбележете съответните\n"
+"пътища с „git add ПЪТ…“ или „git rm ПЪТ…“."
 
-#: sequencer.c:2505
-msgid "cannot revert during a cherry-pick."
-msgstr "по време на отбиране не може да се извърши отмяна на подаване."
+#: sequencer.c:421
+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 ""
+"след коригирането на конфликтите, отбележете съответните\n"
+"пътища с „git add ПЪТ…“ или „git rm ПЪТ…“, след което\n"
+"подайте резултата с командата „git commit'“."
 
-#: sequencer.c:2583
+#: sequencer.c:434 sequencer.c:3070
 #, c-format
-msgid "invalid value for %s: %s"
-msgstr "неправилна стойност за „%s“: „%s“"
-
-#: sequencer.c:2690
-msgid "unusable squash-onto"
-msgstr "подаването, в което другите да се вкарат, не може да се използва"
+msgid "could not lock '%s'"
+msgstr "„%s“ не може да се заключи"
 
-#: sequencer.c:2710
+#: sequencer.c:436 sequencer.c:2869 sequencer.c:3074 sequencer.c:3088
+#: sequencer.c:3345 sequencer.c:5334 strbuf.c:1168 wrapper.c:631
 #, c-format
-msgid "malformed options sheet: '%s'"
-msgstr "непÑ\80авилен Ñ\84айл Ñ\81 Ð¾Ð¿Ñ\86ии: â\80\9e%sâ\80\9c"
+msgid "could not write to '%s'"
+msgstr "в â\80\9e%sâ\80\9c Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ð¿Ð¸Ñ\88е"
 
-#: sequencer.c:2803 sequencer.c:4636
-msgid "empty commit set passed"
-msgstr "зададено е празно множество от подавания"
+#: sequencer.c:441
+#, c-format
+msgid "could not write eol to '%s'"
+msgstr "краят на ред не може да се запише в „%s“"
 
-#: sequencer.c:2820
-msgid "revert is already in progress"
-msgstr "в момента вече се извършва отмяна на подавания"
+#: sequencer.c:446 sequencer.c:2874 sequencer.c:3076 sequencer.c:3090
+#: sequencer.c:3353
+#, c-format
+msgid "failed to finalize '%s'"
+msgstr "„%s“ не може да се завърши"
 
-#: sequencer.c:2822
+#: sequencer.c:485
 #, c-format
-msgid "try \"git revert (--continue | %s--abort | --quit)\""
-msgstr "използвайÑ\82е â\80\9egit cherry-pick (--continue | %s--abort | --quit)â\80\9c"
+msgid "your local changes would be overwritten by %s."
+msgstr "локалниÑ\82е Ð²Ð¸ Ð¿Ñ\80омени Ñ\89е Ð±Ñ\8aдаÑ\82 Ð¿Ñ\80езапиÑ\81ани Ð¿Ñ\80и %s."
 
-#: sequencer.c:2825
-msgid "cherry-pick is already in progress"
-msgstr "в Ð¼Ð¾Ð¼ÐµÐ½Ñ\82а Ð²ÐµÑ\87е Ñ\81е Ð¸Ð·Ð²Ñ\8aÑ\80Ñ\88ва Ð¾Ñ\82биÑ\80ане Ð½Ð° Ð¿Ð¾Ð´Ð°Ð²Ð°Ð½Ð¸Ñ\8f"
+#: sequencer.c:489
+msgid "commit your changes or stash them to proceed."
+msgstr "подайÑ\82е Ð¸Ð»Ð¸ Ñ\81каÑ\82айÑ\82е Ð¿Ñ\80омениÑ\82е, Ð·Ð° Ð´Ð° Ð¿Ñ\80одÑ\8aлжиÑ\82е"
 
-#: sequencer.c:2827
+#: sequencer.c:521
 #, c-format
-msgid "try \"git cherry-pick (--continue | %s--abort | --quit)\""
-msgstr "използвайте „git cherry-pick (--continue | %s--abort | --quit)“"
+msgid "%s: fast-forward"
+msgstr "%s: превъртане"
 
-#: sequencer.c:2841
+#: sequencer.c:560 builtin/tag.c:598
 #, c-format
-msgid "could not create sequencer directory '%s'"
-msgstr ""
-"директорията за определянето на последователността „%s“ не може да бъде "
-"създадена"
-
-#: sequencer.c:2856
-msgid "could not lock HEAD"
-msgstr "указателят „HEAD“ не може да се заключи"
+msgid "Invalid cleanup mode %s"
+msgstr "Несъществуващ режим на изчистване „%s“"
 
-#: sequencer.c:2916 sequencer.c:4371
-msgid "no cherry-pick or revert in progress"
-msgstr ""
-"в момента не се извършва отбиране на подавания или пребазиране на клона"
+#. TRANSLATORS: %s will be "revert", "cherry-pick" or
+#. "rebase".
+#.
+#: sequencer.c:670
+#, c-format
+msgid "%s: Unable to write new index file"
+msgstr "%s: новият индекс не може да бъде запазен"
 
-#: sequencer.c:2918 sequencer.c:2929
-msgid "cannot resolve HEAD"
-msgstr "Ð\9fодаванеÑ\82о Ñ\81оÑ\87ено Ð¾Ñ\82 Ñ\83казаÑ\82елÑ\8f â\80\9eHEADâ\80\9c Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð±Ñ\8aде Ð¾Ñ\82кÑ\80иÑ\82о"
+#: sequencer.c:684
+msgid "unable to update cache tree"
+msgstr "дÑ\8aÑ\80воÑ\82о Ð½Ð° ÐºÐµÑ\88а Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð±Ñ\8aде Ð¾Ð±Ð½Ð¾Ð²ÐµÐ½о"
 
-#: sequencer.c:2920 sequencer.c:2964
-msgid "cannot abort from a branch yet to be born"
-msgstr ""
-"действието не може да бъде преустановено, когато сте на клон, който тепърва "
-"предстои да бъде създаден"
+#: sequencer.c:698
+msgid "could not resolve HEAD commit"
+msgstr "подаването, сочено от указателя „HEAD“, не може да бъде открито"
 
-#: sequencer.c:2950 builtin/grep.c:756
+#: sequencer.c:778
 #, c-format
-msgid "cannot open '%s'"
-msgstr "„%s“ не може да бъде отворен"
+msgid "no key present in '%.*s'"
+msgstr "в „%.*s“ няма ключове"
 
-#: sequencer.c:2952
+#: sequencer.c:789
 #, c-format
-msgid "cannot read '%s': %s"
-msgstr "„%s“ не може да бъде прочетен: %s"
-
-#: sequencer.c:2953
-msgid "unexpected end of file"
-msgstr "неочакван край на файл"
+msgid "unable to dequote value of '%s'"
+msgstr "цитирането на стойността на „%s“ не може да бъде изчистено"
 
-#: sequencer.c:2959
+#: sequencer.c:826 wrapper.c:201 wrapper.c:371 builtin/am.c:710
+#: builtin/am.c:802 builtin/merge.c:1136 builtin/rebase.c:910
 #, c-format
-msgid "stored pre-cherry-pick HEAD file '%s' is corrupt"
-msgstr ""
-"запазеният преди започването на отбирането файл за указателя „HEAD“ — „%s“ е "
-"повреден"
-
-#: sequencer.c:2970
-msgid "You seem to have moved HEAD. Not rewinding, check your HEAD!"
-msgstr ""
-"Изглежда указателят „HEAD“ е променен.  Проверете към какво сочи.\n"
-"Не се правят промени."
-
-#: sequencer.c:3011
-msgid "no revert in progress"
-msgstr "в момента не тече пребазиране"
+msgid "could not open '%s' for reading"
+msgstr "файлът не може да бъде прочетен: „%s“"
 
-#: sequencer.c:3020
-msgid "no cherry-pick in progress"
-msgstr "в Ð¼Ð¾Ð¼ÐµÐ½Ñ\82а Ð½Ðµ Ñ\81е Ð¸Ð·Ð²Ñ\8aÑ\80Ñ\88ва Ð¾Ñ\82биÑ\80ане Ð½Ð° Ð¿Ð¾Ð´Ð°Ð²Ð°Ð½Ð¸Ñ\8f"
+#: sequencer.c:836
+msgid "'GIT_AUTHOR_NAME' already given"
+msgstr "наÑ\81Ñ\82Ñ\80ойкаÑ\82а Ð·Ð° Ð°Ð²Ñ\82оÑ\80 â\80\9eGIT_AUTHOR_NAMEâ\80\9c Ð²ÐµÑ\87е Ðµ Ð·Ð°Ð´Ð°Ð´ÐµÐ½Ð°"
 
-#: sequencer.c:3030
-msgid "failed to skip the commit"
-msgstr "неÑ\83Ñ\81пеÑ\88но Ð¿Ñ\80еÑ\81каÑ\87ане Ð½Ð° Ð¿Ð¾Ð´Ð°Ð²Ð°Ð½ÐµÑ\82о"
+#: sequencer.c:841
+msgid "'GIT_AUTHOR_EMAIL' already given"
+msgstr "наÑ\81Ñ\82Ñ\80ойкаÑ\82а Ð·Ð° Ðµ-поÑ\89а â\80\9eGIT_AUTHOR_EMAILâ\80\9c Ð²ÐµÑ\87е Ðµ Ð·Ð°Ð´Ð°Ð´ÐµÐ½Ð°"
 
-#: sequencer.c:3037
-msgid "there is nothing to skip"
-msgstr "няма какво да се прескочи"
+#: sequencer.c:846
+msgid "'GIT_AUTHOR_DATE' already given"
+msgstr "настройката за дата „GIT_AUTHOR_DATE“ вече е зададена"
 
-#: sequencer.c:3040
+#: sequencer.c:850
 #, c-format
-msgid ""
-"have you committed already?\n"
-"try \"git %s --continue\""
-msgstr ""
-"подали ли сте вече?  Пробвайте с:\n"
-"\n"
-"    git %s --continue"
+msgid "unknown variable '%s'"
+msgstr "непозната променлива „%s“"
 
-#: sequencer.c:3202 sequencer.c:4263
-msgid "cannot read HEAD"
-msgstr "указателят „HEAD“ не може да бъде прочетен"
+#: sequencer.c:855
+msgid "missing 'GIT_AUTHOR_NAME'"
+msgstr "настройката за автор „GIT_AUTHOR_NAME“ липсва"
 
-#: sequencer.c:3219
-#, c-format
-msgid "unable to copy '%s' to '%s'"
-msgstr "„%s“ не може да се копира като „%s“"
+#: sequencer.c:857
+msgid "missing 'GIT_AUTHOR_EMAIL'"
+msgstr "настройката за е-поща „GIT_AUTHOR_EMAIL“ липсва"
 
-#: sequencer.c:3227
+#: sequencer.c:859
+msgid "missing 'GIT_AUTHOR_DATE'"
+msgstr "настройката за дата „GIT_AUTHOR_DATE“ липсва"
+
+#: sequencer.c:924
 #, c-format
 msgid ""
-"You can amend the commit now, with\n"
+"you have staged changes in your working tree\n"
+"If these changes are meant to be squashed into the previous commit, run:\n"
 "\n"
 "  git commit --amend %s\n"
 "\n"
-"Once you are satisfied with your changes, run\n"
+"If they are meant to go into a new commit, run:\n"
+"\n"
+"  git commit %s\n"
+"\n"
+"In both cases, once you're done, continue with:\n"
 "\n"
 "  git rebase --continue\n"
 msgstr ""
-"Може да промените подаването с командата:\n"
+"в това работно дърво има скатани промени.\n"
+"Ако искате да ги вкарате в предишното подаване, изпълнете:\n"
 "\n"
 "    git commit --amend %s\n"
 "\n"
-"След като привършите, продължете с командата:\n"
+"Ако искате да създадете ново подаване, изпълнете:\n"
+"\n"
+"    git commit %s\n"
+"\n"
+"И в двата случая продължавате след това с командата:\n"
 "\n"
 "    git rebase --continue\n"
 
-#: sequencer.c:3237
-#, c-format
-msgid "Could not apply %s... %.*s"
-msgstr "Подаването „%s“… не може да бъде приложено: „%.*s“"
-
-#: sequencer.c:3244
-#, c-format
-msgid "Could not merge %.*s"
-msgstr "Невъзможно сливане на „%.*s“"
-
-#: sequencer.c:3258 sequencer.c:3262 builtin/difftool.c:640
-#, c-format
-msgid "could not copy '%s' to '%s'"
-msgstr "„%s“ не може да се копира като „%s“"
+#: sequencer.c:1211
+msgid "'prepare-commit-msg' hook failed"
+msgstr ""
+"неуспешно изпълнение на куката при промяна на съобщението при подаване "
+"(prepare-commit-msg)"
 
-#: sequencer.c:3274
-#, c-format
-msgid "Executing: %s\n"
-msgstr "В момента се изпълнява: %s\n"
+#: sequencer.c:1217
+msgid ""
+"Your name and email address were configured automatically based\n"
+"on your username and hostname. Please check that they are accurate.\n"
+"You can suppress this message by setting them explicitly. Run the\n"
+"following command and follow the instructions in your editor to edit\n"
+"your configuration file:\n"
+"\n"
+"    git config --global --edit\n"
+"\n"
+"After doing this, you may fix the identity used for this commit with:\n"
+"\n"
+"    git commit --amend --reset-author\n"
+msgstr ""
+"Името и адресът за е-поща са настроени автоматично на базата на името на\n"
+"потребителя и името на машината.  Проверете дали са верни.  Можете да "
+"спрете\n"
+"това съобщение като изрично зададете стойностите.  Изпълнете следната "
+"команда\n"
+"и следвайте инструкциите в текстовия ви редактор, за да редактирате\n"
+"конфигурационния файл:\n"
+"\n"
+"    git config --global --edit\n"
+"\n"
+"След като направите това, можете да коригирате информацията за автора на\n"
+"текущото подаване чрез:\n"
+"\n"
+"    git commit --amend --reset-author\n"
 
-#: sequencer.c:3289
-#, c-format
+#: sequencer.c:1230
 msgid ""
-"execution failed: %s\n"
-"%sYou can fix the problem, and then run\n"
+"Your name and email address were configured automatically based\n"
+"on your username and hostname. Please check that they are accurate.\n"
+"You can suppress this message by setting them explicitly:\n"
 "\n"
-"  git rebase --continue\n"
+"    git config --global user.name \"Your Name\"\n"
+"    git config --global user.email you@example.com\n"
 "\n"
+"After doing this, you may fix the identity used for this commit with:\n"
+"\n"
+"    git commit --amend --reset-author\n"
 msgstr ""
-"неуспешно изпълнение: %s\n"
-"%sМоже да коригирате проблема, след което изпълнете:\n"
+"Името и адресът за е-поща са настроени автоматично на базата на името на\n"
+"потребителя и името на машината.  Проверете дали са верни.  Можете да "
+"спрете\n"
+"това съобщение като изрично зададете стойностите:\n"
 "\n"
-"    git rebase --continue\n"
+"    git config --global user.name \"Вашето Име\"\n"
+"    git config --global user.email пенчо@example.com\n"
 "\n"
+"След като направите това, можете да коригирате информацията за автора на\n"
+"текущото подаване чрез:\n"
+"\n"
+"    git commit --amend --reset-author\n"
 
-#: sequencer.c:3295
-msgid "and made changes to the index and/or the working tree\n"
-msgstr "и променѝ индекса и/или работното дърво\n"
+#: sequencer.c:1272
+msgid "couldn't look up newly created commit"
+msgstr "току що създаденото подаване не може да бъде открито"
+
+#: sequencer.c:1274
+msgid "could not parse newly created commit"
+msgstr "току що създаденото подаване не може да бъде анализирано"
+
+#: sequencer.c:1320
+msgid "unable to resolve HEAD after creating commit"
+msgstr ""
+"състоянието сочено от указателя „HEAD“ не може да бъде открито след "
+"подаването"
+
+#: sequencer.c:1322
+msgid "detached HEAD"
+msgstr "несвързан връх „HEAD“"
+
+#: sequencer.c:1326
+msgid " (root-commit)"
+msgstr " (начално подаване)"
+
+#: sequencer.c:1347
+msgid "could not parse HEAD"
+msgstr "указателят „HEAD“ не може да бъде анализиран"
+
+#: sequencer.c:1349
+#, c-format
+msgid "HEAD %s is not a commit!"
+msgstr "указателят „HEAD“ „%s“ сочи към нещо, което не е подаване!"
+
+#: sequencer.c:1353 sequencer.c:1431 builtin/commit.c:1577
+msgid "could not parse HEAD commit"
+msgstr "върховото подаване „HEAD“ не може да бъде прочетено"
+
+#: sequencer.c:1409 sequencer.c:2108
+msgid "unable to parse commit author"
+msgstr "авторът на подаването не може да бъде анализиран"
+
+#: sequencer.c:1420 builtin/am.c:1566 builtin/merge.c:702
+msgid "git write-tree failed to write a tree"
+msgstr "Командата „git write-tree“ не успя да запише обект-дърво"
+
+#: sequencer.c:1453 sequencer.c:1573
+#, c-format
+msgid "unable to read commit message from '%s'"
+msgstr "съобщението за подаване не може да бъде прочетено от „%s“"
+
+#: sequencer.c:1484 sequencer.c:1516
+#, c-format
+msgid "invalid author identity '%s'"
+msgstr "неправилна самоличност за автор: „%s“"
+
+#: sequencer.c:1490
+msgid "corrupt author: missing date information"
+msgstr "повредена информация за автор: липсва дата"
+
+#: sequencer.c:1529 builtin/am.c:1593 builtin/commit.c:1678 builtin/merge.c:905
+#: builtin/merge.c:930 t/helper/test-fast-rebase.c:78
+msgid "failed to write commit object"
+msgstr "обектът за подаването не може да бъде записан"
 
-#: sequencer.c:3301
+#: sequencer.c:1556 sequencer.c:4291 t/helper/test-fast-rebase.c:198
 #, c-format
-msgid ""
-"execution succeeded: %s\n"
-"but left changes to the index and/or the working tree\n"
-"Commit or stash your changes, and then run\n"
-"\n"
-"  git rebase --continue\n"
-"\n"
-msgstr ""
-"Успешно изпълнение: %s\n"
-"Остават още промени в индекса или работното дърво.\n"
-"Трябва да ги подадете или скатаете и след това изпълнете:\n"
-"\n"
-"    git rebase --continue\n"
-"\n"
+msgid "could not update %s"
+msgstr "„%s“ не може да се обнови"
 
-#: sequencer.c:3362
+#: sequencer.c:1605
 #, c-format
-msgid "illegal label name: '%.*s'"
-msgstr "непÑ\80авилно Ð¸Ð¼Ðµ Ð½Ð° ÐµÑ\82икеÑ\82: â\80\9e%.*sâ\80\9c"
+msgid "could not parse commit %s"
+msgstr "подаванеÑ\82о â\80\9e%sâ\80\9c Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð±Ñ\8aде Ð°Ð½Ð°Ð»Ð¸Ð·Ð¸Ñ\80ано"
 
-#: sequencer.c:3416
-msgid "writing fake root commit"
-msgstr "запазване на фалшиво начално подаване"
+#: sequencer.c:1610
+#, c-format
+msgid "could not parse parent commit %s"
+msgstr "родителското подаване „%s“ не може да бъде анализирано"
 
-#: sequencer.c:3421
-msgid "writing squash-onto"
-msgstr "запазване на подаването, в което другите да се вкарат"
+#: sequencer.c:1693 sequencer.c:1804
+#, c-format
+msgid "unknown command: %d"
+msgstr "непозната команда: %d"
 
-#: sequencer.c:3505
+#: sequencer.c:1751 sequencer.c:1776
 #, c-format
-msgid "could not resolve '%s'"
-msgstr "„%s“ не може да бъде открит"
+msgid "This is a combination of %d commits."
+msgstr "Това е обединение от %d подавания"
 
-#: sequencer.c:3538
-msgid "cannot merge without a current revision"
-msgstr "без Ñ\82екÑ\83Ñ\89о Ð¿Ð¾Ð´Ð°Ð²Ð°Ð½Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ñ\81лива"
+#: sequencer.c:1761
+msgid "need a HEAD to fixup"
+msgstr "Ð\97а Ð²ÐºÐ°Ñ\80ване Ð² Ð¿Ñ\80едÑ\85одноÑ\82о Ð¿Ð¾Ð´Ð°Ð²Ð°Ð½Ðµ Ð²Ð¸ Ñ\82Ñ\80Ñ\8fбва Ñ\83казаÑ\82ел â\80\9eHEADâ\80\9c"
 
-#: sequencer.c:3560
-#, c-format
-msgid "unable to parse '%.*s'"
-msgstr "„%.*s“ не може да се анализира"
+#: sequencer.c:1763 sequencer.c:3380
+msgid "could not read HEAD"
+msgstr "указателят „HEAD“ не може да се прочете"
+
+#: sequencer.c:1765
+msgid "could not read HEAD's commit message"
+msgstr ""
+"съобщението за подаване към указателя „HEAD“ не може да бъде прочетено: %s"
 
-#: sequencer.c:3569
+#: sequencer.c:1771
 #, c-format
-msgid "nothing to merge: '%.*s'"
-msgstr "няма нищо за сливане: „%.*s“"
+msgid "cannot write '%s'"
+msgstr "„%s“ не може да се запази"
 
-#: sequencer.c:3581
-msgid "octopus merge cannot be executed on top of a [new root]"
-msgstr "вÑ\8aÑ\80Ñ\85Ñ\83 Ð½Ð°Ñ\87ално Ð¿Ð¾Ð´Ð°Ð²Ð°Ð½Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ð¸Ð·Ð²Ñ\8aÑ\80Ñ\88и Ð¼Ð½Ð¾Ð¶ÐµÑ\81Ñ\82вено Ñ\81ливане"
+#: sequencer.c:1778 git-rebase--preserve-merges.sh:486
+msgid "This is the 1st commit message:"
+msgstr "Това Ðµ 1-Ñ\82о Ñ\81Ñ\8aобÑ\89ение Ð¿Ñ\80и Ð¿Ð¾Ð´Ð°Ð²Ð°Ð½Ðµ:"
 
-#: sequencer.c:3597
+#: sequencer.c:1786
 #, c-format
-msgid "could not get commit message of '%s'"
-msgstr "съобщението за подаване към „%s“ не може да бъде получено"
+msgid "could not read commit message of %s"
+msgstr "съобщението за подаване към „%s“ не може да бъде прочетено"
 
-#: sequencer.c:3780
+#: sequencer.c:1793
 #, c-format
-msgid "could not even attempt to merge '%.*s'"
-msgstr "сливането на „%.*s“ не може даже да започне"
+msgid "This is the commit message #%d:"
+msgstr "Това е съобщение при подаване №%d:"
 
-#: sequencer.c:3796
-msgid "merge: Unable to write new index file"
-msgstr "сливане: новият индекс не може да бъде запазен"
+#: sequencer.c:1799
+#, c-format
+msgid "The commit message #%d will be skipped:"
+msgstr "Съобщение при подаване №%d ще бъде прескочено:"
 
-#: sequencer.c:3870
-msgid "Cannot autostash"
-msgstr "Ð\9dе Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ñ\81каÑ\82ае Ð°Ð²Ñ\82омаÑ\82иÑ\87но"
+#: sequencer.c:1887
+msgid "your index file is unmerged."
+msgstr "индекÑ\81Ñ\8aÑ\82 Ð½Ðµ Ðµ Ñ\81лÑ\8fÑ\82."
 
-#: sequencer.c:3873
+#: sequencer.c:1894
+msgid "cannot fixup root commit"
+msgstr "началното подаване не може да се вкара в предходното му"
+
+#: sequencer.c:1913
 #, c-format
-msgid "Unexpected stash response: '%s'"
-msgstr "Ð\9dеоÑ\87акван Ñ\80езÑ\83лÑ\82аÑ\82 Ð¿Ñ\80и Ñ\81каÑ\82аване: â\80\9e%s“"
+msgid "commit %s is a merge but no -m option was given."
+msgstr "подаванеÑ\82о â\80\9e%sâ\80\9c Ðµ Ñ\81ливане, Ð½Ð¾ Ð½Ðµ Ðµ Ð´Ð°Ð´ÐµÐ½Ð° Ð¾Ð¿Ñ\86иÑ\8fÑ\82а â\80\9e-m“"
 
-#: sequencer.c:3879
+#: sequencer.c:1921 sequencer.c:1929
 #, c-format
-msgid "Could not create directory for '%s'"
-msgstr "Ð\94иÑ\80екÑ\82оÑ\80иÑ\8fÑ\82а Ð·Ð° â\80\9e%sâ\80\9c Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð±Ñ\8aде Ñ\81Ñ\8aздадена"
+msgid "commit %s does not have parent %d"
+msgstr "подаванеÑ\82о â\80\9e%sâ\80\9c Ð½Ñ\8fма Ñ\80одиÑ\82ел %d"
 
-#: sequencer.c:3882
+#: sequencer.c:1935
 #, c-format
-msgid "Created autostash: %s\n"
-msgstr "Ð\90вÑ\82омаÑ\82иÑ\87но Ñ\81каÑ\82ано: â\80\9e%sâ\80\9c\n"
+msgid "cannot get commit message for %s"
+msgstr "неÑ\83Ñ\81пеÑ\88но Ð¸Ð·Ð²Ð»Ð¸Ñ\87ане Ð½Ð° Ñ\81Ñ\8aобÑ\89ениеÑ\82о Ð·Ð° Ð¿Ð¾Ð´Ð°Ð²Ð°Ð½Ðµ Ð½Ð° â\80\9e%sâ\80\9c"
 
-#: sequencer.c:3886
-msgid "could not reset --hard"
-msgstr "неуспешно изпълнение на „git reset --hard“"
+#. TRANSLATORS: The first %s will be a "todo" command like
+#. "revert" or "pick", the second %s a SHA1.
+#: sequencer.c:1954
+#, c-format
+msgid "%s: cannot parse parent commit %s"
+msgstr "%s: неразпозната стойност за родителското подаване „%s“"
 
-#: sequencer.c:3911
+#: sequencer.c:2019
 #, c-format
-msgid "Applied autostash.\n"
-msgstr "Автоматично скатаното е приложено.\n"
+msgid "could not rename '%s' to '%s'"
+msgstr "„%s“ не може да се преименува на „%s“"
 
-#: sequencer.c:3923
+#: sequencer.c:2079
 #, c-format
-msgid "cannot store %s"
-msgstr "„%s“ не може да бъде запазен"
+msgid "could not revert %s... %s"
+msgstr "подаването „%s“… не може да бъде отменено: „%s“"
 
-#: sequencer.c:3926
+#: sequencer.c:2080
 #, c-format
-msgid ""
-"%s\n"
-"Your changes are safe in the stash.\n"
-"You can run \"git stash pop\" or \"git stash drop\" at any time.\n"
-msgstr ""
-"%s\n"
-"Промените ви са надеждно скатани.  Можете да пробвате да ги приложите чрез\n"
-"„git stash pop“ или да ги изхвърлите чрез „git stash drop“, когато "
-"поискате.\n"
+msgid "could not apply %s... %s"
+msgstr "подаването „%s“… не може да бъде приложено: „%s“"
 
-#: sequencer.c:3931
-msgid "Applying autostash resulted in conflicts."
-msgstr "Конфликти при прилагането на автоматично скатаното."
+#: sequencer.c:2100
+#, c-format
+msgid "dropping %s %s -- patch contents already upstream\n"
+msgstr "прескачане на %s %s — кръпката вече е приложена\n"
 
-#: sequencer.c:3932
-msgid "Autostash exists; creating a new stash entry."
-msgstr "Вече има запис за автоматично скатано, затова се създава нов запис."
+#: sequencer.c:2158
+#, c-format
+msgid "git %s: failed to read the index"
+msgstr "git %s: неуспешно изчитане на индекса"
 
-#: sequencer.c:4025 git-rebase--preserve-merges.sh:769
-msgid "could not detach HEAD"
-msgstr "указателят „HEAD“ не може да се отдели"
+#: sequencer.c:2165
+#, c-format
+msgid "git %s: failed to refresh the index"
+msgstr "git %s: неуспешно обновяване на индекса"
 
-#: sequencer.c:4040
+#: sequencer.c:2242
 #, c-format
-msgid "Stopped at HEAD\n"
-msgstr "Бе спряно при „HEAD“\n"
+msgid "%s does not accept arguments: '%s'"
+msgstr "„%s“ не приема аргументи: „%s“"
 
-#: sequencer.c:4042
+#: sequencer.c:2251
 #, c-format
-msgid "Stopped at %s\n"
-msgstr "Бе спряно при „%s“\n"
+msgid "missing arguments for %s"
+msgstr "„%s“ изисква аргументи"
 
-#: sequencer.c:4050
+#: sequencer.c:2282
 #, 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"
+msgid "could not parse '%s'"
+msgstr "„%s“ не може да се анализира"
 
-#: sequencer.c:4096
+#: sequencer.c:2343
 #, c-format
-msgid "Rebasing (%d/%d)%s"
-msgstr "Ð\9fÑ\80ебазиÑ\80ане (%d/%d)%s"
+msgid "invalid line %d: %.*s"
+msgstr "непÑ\80авилен Ñ\80ед %d: %.*s"
 
-#: sequencer.c:4141
+#: sequencer.c:2354
 #, c-format
-msgid "Stopped at %s...  %.*s\n"
-msgstr "Спиране при „%s“…  %.*s\n"
+msgid "cannot '%s' without a previous commit"
+msgstr "Без предишно подаване не може да се изпълни „%s“"
+
+#: sequencer.c:2440
+msgid "cancelling a cherry picking in progress"
+msgstr "преустановяване на извършваното в момента отбиране на подавания"
+
+#: sequencer.c:2449
+msgid "cancelling a revert in progress"
+msgstr "преустановяване на извършваното в момента отмяна на подаване"
+
+#: sequencer.c:2493
+msgid "please fix this using 'git rebase --edit-todo'."
+msgstr "коригирайте това чрез „git rebase --edit-todo“."
 
-#: sequencer.c:4212
+#: sequencer.c:2495
 #, c-format
-msgid "unknown command %d"
-msgstr "непознаÑ\82а ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° %d"
+msgid "unusable instruction sheet: '%s'"
+msgstr "неизползваем Ñ\84айл Ñ\81 Ð¾Ð¿Ð¸Ñ\81ание Ð½Ð° Ð¿Ñ\80едÑ\81Ñ\82оÑ\8fÑ\89иÑ\82е Ð´ÐµÐ¹Ñ\81Ñ\82виÑ\8f: â\80\9e%sâ\80\9c"
 
-#: sequencer.c:4271
-msgid "could not read orig-head"
-msgstr "указателят за „orig-head“ не може да се прочете"
+#: sequencer.c:2500
+msgid "no commits parsed."
+msgstr "никое от подаванията не може да се разпознае."
 
-#: sequencer.c:4276
-msgid "could not read 'onto'"
-msgstr "указателят за „onto“ не може да се прочете"
+#: sequencer.c:2511
+msgid "cannot cherry-pick during a revert."
+msgstr ""
+"по време на отмяна на подаване не може да се извърши отбиране на подаване."
+
+#: sequencer.c:2513
+msgid "cannot revert during a cherry-pick."
+msgstr "по време на отбиране не може да се извърши отмяна на подаване."
 
-#: sequencer.c:4290
+#: sequencer.c:2591
 #, c-format
-msgid "could not update HEAD to %s"
-msgstr "„HEAD“ не може да бъде обновен до „%s“"
+msgid "invalid value for %s: %s"
+msgstr "неправилна стойност за „%s“: „%s“"
+
+#: sequencer.c:2698
+msgid "unusable squash-onto"
+msgstr "подаването, в което другите да се вкарат, не може да се използва"
 
-#: sequencer.c:4350
+#: sequencer.c:2718
 #, c-format
-msgid "Successfully rebased and updated %s.\n"
-msgstr "УÑ\81пеÑ\88но Ð¿Ñ\80ебазиÑ\80ане Ð¸ Ð¾Ð±Ð½Ð¾Ð²Ñ\8fване Ð½Ð° â\80\9e%sâ\80\9c.\n"
+msgid "malformed options sheet: '%s'"
+msgstr "непÑ\80авилен Ñ\84айл Ñ\81 Ð¾Ð¿Ñ\86ии: â\80\9e%sâ\80\9c"
 
-#: sequencer.c:4383
-msgid "cannot rebase: You have unstaged changes."
-msgstr "не Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð¿Ñ\80ебазиÑ\80аÑ\82е, Ð·Ð°Ñ\89оÑ\82о Ð¸Ð¼Ð° Ð¿Ñ\80омени, ÐºÐ¾Ð¸Ñ\82о Ð½Ðµ Ñ\81а Ð² Ð¸Ð½Ð´ÐµÐºÑ\81а."
+#: sequencer.c:2811 sequencer.c:4644
+msgid "empty commit set passed"
+msgstr "зададено Ðµ Ð¿Ñ\80азно Ð¼Ð½Ð¾Ð¶ÐµÑ\81Ñ\82во Ð¾Ñ\82 Ð¿Ð¾Ð´Ð°Ð²Ð°Ð½Ð¸Ñ\8f"
 
-#: sequencer.c:4392
-msgid "cannot amend non-existing commit"
-msgstr "неÑ\81Ñ\8aÑ\89еÑ\81Ñ\82вÑ\83ваÑ\89о Ð¿Ð¾Ð´Ð°Ð²Ð°Ð½Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ð¿Ð¾Ð¿Ñ\80ави"
+#: sequencer.c:2828
+msgid "revert is already in progress"
+msgstr "в Ð¼Ð¾Ð¼ÐµÐ½Ñ\82а Ð²ÐµÑ\87е Ñ\81е Ð¸Ð·Ð²Ñ\8aÑ\80Ñ\88ва Ð¾Ñ\82мÑ\8fна Ð½Ð° Ð¿Ð¾Ð´Ð°Ð²Ð°Ð½Ð¸Ñ\8f"
 
-#: sequencer.c:4394
+#: sequencer.c:2830
 #, c-format
-msgid "invalid file: '%s'"
-msgstr "непÑ\80авилен Ñ\84айл: â\80\9e%s“"
+msgid "try \"git revert (--continue | %s--abort | --quit)\""
+msgstr "използвайÑ\82е â\80\9egit cherry-pick (--continue | %s--abort | --quit)“"
 
-#: sequencer.c:4396
+#: sequencer.c:2833
+msgid "cherry-pick is already in progress"
+msgstr "в момента вече се извършва отбиране на подавания"
+
+#: sequencer.c:2835
 #, c-format
-msgid "invalid contents: '%s'"
-msgstr "непÑ\80авилно Ñ\81Ñ\8aдÑ\8aÑ\80жание: â\80\9e%s“"
+msgid "try \"git cherry-pick (--continue | %s--abort | --quit)\""
+msgstr "използвайÑ\82е â\80\9egit cherry-pick (--continue | %s--abort | --quit)“"
 
-#: sequencer.c:4399
-msgid ""
-"\n"
-"You have uncommitted changes in your working tree. Please, commit them\n"
-"first and then run 'git rebase --continue' again."
+#: sequencer.c:2849
+#, c-format
+msgid "could not create sequencer directory '%s'"
 msgstr ""
-"\n"
-"В работното дърво има неподадени промени.  Първо ги подайте, а след това\n"
-"отново изпълнете „git rebase --continue“."
+"директорията за определянето на последователността „%s“ не може да бъде "
+"създадена"
 
-#: sequencer.c:4435 sequencer.c:4474
-#, c-format
-msgid "could not write file: '%s'"
-msgstr "файлът „%s“ не може да бъде записан"
+#: sequencer.c:2864
+msgid "could not lock HEAD"
+msgstr "указателят „HEAD“ не може да се заключи"
 
-#: sequencer.c:4490
-msgid "could not remove CHERRY_PICK_HEAD"
-msgstr "указателят „CHERRY_PICK_HEAD“ не може да бъде изтрит"
+#: sequencer.c:2924 sequencer.c:4379
+msgid "no cherry-pick or revert in progress"
+msgstr ""
+"в момента не се извършва отбиране на подавания или пребазиране на клона"
 
-#: sequencer.c:4497
-msgid "could not commit staged changes."
-msgstr "пÑ\80омениÑ\82е Ð² Ð¸Ð½Ð´ÐµÐºÑ\81а Ð½Ðµ Ð¼Ð¾Ð³Ð°Ñ\82 Ð´Ð° Ð±Ñ\8aдаÑ\82 Ð¿Ð¾Ð´Ð°Ð´ÐµÐ½Ð¸."
+#: sequencer.c:2926 sequencer.c:2937
+msgid "cannot resolve HEAD"
+msgstr "Ð\9fодаванеÑ\82о Ñ\81оÑ\87ено Ð¾Ñ\82 Ñ\83казаÑ\82елÑ\8f â\80\9eHEADâ\80\9c Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð±Ñ\8aде Ð¾Ñ\82кÑ\80иÑ\82о"
 
-#: sequencer.c:4613
+#: sequencer.c:2928 sequencer.c:2972
+msgid "cannot abort from a branch yet to be born"
+msgstr ""
+"действието не може да бъде преустановено, когато сте на клон, който тепърва "
+"предстои да бъде създаден"
+
+#: sequencer.c:2958 builtin/grep.c:757
 #, c-format
-msgid "%s: can't cherry-pick a %s"
-msgstr "%s: не може да се отбере „%s“"
+msgid "cannot open '%s'"
+msgstr "„%s“ не може да бъде отворен"
 
-#: sequencer.c:4617
+#: sequencer.c:2960
 #, c-format
-msgid "%s: bad revision"
-msgstr "%s: неправилна версия"
+msgid "cannot read '%s': %s"
+msgstr "„%s“ не може да бъде прочетен: %s"
 
-#: sequencer.c:4652
-msgid "can't revert as initial commit"
-msgstr "пÑ\8aÑ\80вонаÑ\87алноÑ\82о Ð¿Ð¾Ð´Ð°Ð²Ð°Ð½Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð±Ñ\8aде Ð¾Ñ\82менено"
+#: sequencer.c:2961
+msgid "unexpected end of file"
+msgstr "неоÑ\87акван ÐºÑ\80ай Ð½Ð° Ñ\84айл"
 
-#: sequencer.c:5129
-msgid "make_script: unhandled options"
-msgstr "make_script: неподдържани опции"
+#: sequencer.c:2967
+#, c-format
+msgid "stored pre-cherry-pick HEAD file '%s' is corrupt"
+msgstr ""
+"запазеният преди започването на отбирането файл за указателя „HEAD“ — „%s“ е "
+"повреден"
 
-#: sequencer.c:5132
-msgid "make_script: error preparing revisions"
-msgstr "make_script: грешка при подготовката на версии"
+#: sequencer.c:2978
+msgid "You seem to have moved HEAD. Not rewinding, check your HEAD!"
+msgstr ""
+"Изглежда указателят „HEAD“ е променен.  Проверете към какво сочи.\n"
+"Не се правят промени."
 
-#: sequencer.c:5374 sequencer.c:5391
-msgid "nothing to do"
-msgstr "нÑ\8fма ÐºÐ°ÐºÐ²Ð¾ Ð´Ð° Ñ\81е Ð¿Ñ\80ави"
+#: sequencer.c:3019
+msgid "no revert in progress"
+msgstr "в Ð¼Ð¾Ð¼ÐµÐ½Ñ\82а Ð½Ðµ Ñ\82еÑ\87е Ð¿Ñ\80ебазиÑ\80ане"
 
-#: sequencer.c:5410
-msgid "could not skip unnecessary pick commands"
-msgstr "излиÑ\88ниÑ\82е ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ Ð·Ð° Ð¾Ñ\82биÑ\80ане Ð½Ðµ Ð±Ñ\8fÑ\85а Ð¿Ñ\80еÑ\81коÑ\87ени"
+#: sequencer.c:3028
+msgid "no cherry-pick in progress"
+msgstr "в Ð¼Ð¾Ð¼ÐµÐ½Ñ\82а Ð½Ðµ Ñ\81е Ð¸Ð·Ð²Ñ\8aÑ\80Ñ\88ва Ð¾Ñ\82биÑ\80ане Ð½Ð° Ð¿Ð¾Ð´Ð°Ð²Ð°Ð½Ð¸Ñ\8f"
 
-#: sequencer.c:5504
-msgid "the script was already rearranged."
-msgstr "скриптът вече е преподреден."
+#: sequencer.c:3038
+msgid "failed to skip the commit"
+msgstr "неуспешно прескачане на подаването"
 
-#: setup.c:133
-#, c-format
-msgid "'%s' is outside repository at '%s'"
-msgstr "„%s“ е извън хранилището при „%s“"
+#: sequencer.c:3045
+msgid "there is nothing to skip"
+msgstr "няма какво да се прескочи"
 
-#: setup.c:185
+#: sequencer.c:3048
 #, c-format
 msgid ""
-"%s: no such path in the working tree.\n"
-"Use 'git <command> -- <path>...' to specify paths that do not exist locally."
+"have you committed already?\n"
+"try \"git %s --continue\""
 msgstr ""
-"%s: в това работно дърво няма такъв път.\n"
-"За да указвате пътища, които локално не съществуват, използвайте:\n"
+"подали ли сте вече?  Пробвайте с:\n"
 "\n"
-"    git КОМАНДА -- ПЪТ…"
+"    git %s --continue"
 
-#: setup.c:198
-#, c-format
-msgid ""
-"ambiguous argument '%s': unknown revision or path not in the working tree.\n"
-"Use '--' to separate paths from revisions, like this:\n"
-"'git <command> [<revision>...] -- [<file>...]'"
-msgstr ""
-"нееднозначен аргумент „%s: непозната версия или пътят не е част от работното "
-"дърво.\n"
-"Разделяйте пътищата от версиите с „--“, ето така:\n"
-"\n"
-"    git КОМАНДА [ВЕРСИЯ…] -- [ФАЙЛ…]"
+#: sequencer.c:3210 sequencer.c:4271
+msgid "cannot read HEAD"
+msgstr "указателят „HEAD“ не може да бъде прочетен"
 
-#: setup.c:264
+#: sequencer.c:3227
 #, c-format
-msgid "option '%s' must come before non-option arguments"
-msgstr "опцията „%s“ трябва да е преди първия аргумент, който не е опция"
+msgid "unable to copy '%s' to '%s'"
+msgstr "„%s“ не може да се копира като „%s“"
 
-#: setup.c:283
+#: sequencer.c:3235
 #, c-format
 msgid ""
-"ambiguous argument '%s': both revision and filename\n"
-"Use '--' to separate paths from revisions, like this:\n"
-"'git <command> [<revision>...] -- [<file>...]'"
-msgstr ""
-"нееднозначен аргумент „%s“: както версия, така и път.\n"
-"Разделяйте пътищата от версиите с „--“, ето така:\n"
+"You can amend the commit now, with\n"
 "\n"
-"    git КОМАНДА [ВЕРСИЯ…] -- [ФАЙЛ…]"
-
-#: setup.c:419
-msgid "unable to set up work tree using invalid config"
+"  git commit --amend %s\n"
+"\n"
+"Once you are satisfied with your changes, run\n"
+"\n"
+"  git rebase --continue\n"
 msgstr ""
-"не може да се зададе текуща работна директория при неправилни настройки"
-
-#: setup.c:423
-msgid "this operation must be run in a work tree"
-msgstr "тази команда трябва да се изпълни в работно дърво"
-
-#: setup.c:661
-#, c-format
-msgid "Expected git repo version <= %d, found %d"
-msgstr "Очаква се версия на хранилището на git <= %d, а не %d"
-
-#: setup.c:669
-msgid "unknown repository extensions found:"
-msgstr "открити са непознати разширения в хранилището:"
-
-#: setup.c:681
-msgid "repo version is 0, but v1-only extensions found:"
-msgstr "версията на хранилището е 0, но са открити разширения за версия 1:"
+"Може да промените подаването с командата:\n"
+"\n"
+"    git commit --amend %s\n"
+"\n"
+"След като привършите, продължете с командата:\n"
+"\n"
+"    git rebase --continue\n"
 
-#: setup.c:700
+#: sequencer.c:3245
 #, c-format
-msgid "error opening '%s'"
-msgstr "„%s“ не може да се отвори"
+msgid "Could not apply %s... %.*s"
+msgstr "Подаването „%s“… не може да бъде приложено: „%.*s“"
 
-#: setup.c:702
+#: sequencer.c:3252
 #, c-format
-msgid "too large to be a .git file: '%s'"
-msgstr "пÑ\80екалено Ð³Ð¾Ð»Ñ\8fм Ñ\84айл â\80\9e.gitâ\80\9c: â\80\9e%s“"
+msgid "Could not merge %.*s"
+msgstr "Ð\9dевÑ\8aзможно Ñ\81ливане Ð½Ð° â\80\9e%.*s“"
 
-#: setup.c:704
+#: sequencer.c:3266 sequencer.c:3270 builtin/difftool.c:640
 #, c-format
-msgid "error reading %s"
-msgstr "грешка при прочитане на „%s“"
+msgid "could not copy '%s' to '%s'"
+msgstr "„%s“ не може да се копира като „%s“"
 
-#: setup.c:706
+#: sequencer.c:3282
 #, c-format
-msgid "invalid gitfile format: %s"
-msgstr "непÑ\80авилен Ñ\84оÑ\80маÑ\82 Ð½Ð° gitfile: %s"
+msgid "Executing: %s\n"
+msgstr "Ð\92 Ð¼Ð¾Ð¼ÐµÐ½Ñ\82а Ñ\81е Ð¸Ð·Ð¿Ñ\8aлнÑ\8fва: %s\n"
 
-#: setup.c:708
+#: sequencer.c:3297
 #, c-format
-msgid "no path in gitfile: %s"
-msgstr "липсва път в gitfile: „%s“"
+msgid ""
+"execution failed: %s\n"
+"%sYou can fix the problem, and then run\n"
+"\n"
+"  git rebase --continue\n"
+"\n"
+msgstr ""
+"неуспешно изпълнение: %s\n"
+"%sМоже да коригирате проблема, след което изпълнете:\n"
+"\n"
+"    git rebase --continue\n"
+"\n"
 
-#: setup.c:710
-#, c-format
-msgid "not a git repository: %s"
-msgstr "не е хранилище на Git: %s"
+#: sequencer.c:3303
+msgid "and made changes to the index and/or the working tree\n"
+msgstr "и променѝ индекса и/или работното дърво\n"
 
-#: setup.c:812
+#: sequencer.c:3309
 #, c-format
-msgid "'$%s' too big"
-msgstr "„%s“ е прекалено голям"
+msgid ""
+"execution succeeded: %s\n"
+"but left changes to the index and/or the working tree\n"
+"Commit or stash your changes, and then run\n"
+"\n"
+"  git rebase --continue\n"
+"\n"
+msgstr ""
+"Успешно изпълнение: %s\n"
+"Остават още промени в индекса или работното дърво.\n"
+"Трябва да ги подадете или скатаете и след това изпълнете:\n"
+"\n"
+"    git rebase --continue\n"
+"\n"
 
-#: setup.c:826
+#: sequencer.c:3370
 #, c-format
-msgid "not a git repository: '%s'"
-msgstr "не е хранилище на git: „%s“"
+msgid "illegal label name: '%.*s'"
+msgstr "неправилно име на етикет: „%.*s“"
 
-#: setup.c:855 setup.c:857 setup.c:888
-#, c-format
-msgid "cannot chdir to '%s'"
-msgstr "не може да се влезе в директорията „%s“"
+#: sequencer.c:3424
+msgid "writing fake root commit"
+msgstr "запазване на фалшиво начално подаване"
 
-#: setup.c:860 setup.c:916 setup.c:926 setup.c:965 setup.c:973
-msgid "cannot come back to cwd"
-msgstr "пÑ\80оÑ\86еÑ\81Ñ\8aÑ\82 Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ð²Ñ\8aÑ\80не ÐºÑ\8aм Ð¿Ñ\80едиÑ\88наÑ\82а Ñ\80абоÑ\82на Ð´Ð¸Ñ\80екÑ\82оÑ\80иÑ\8f"
+#: sequencer.c:3429
+msgid "writing squash-onto"
+msgstr "запазване Ð½Ð° Ð¿Ð¾Ð´Ð°Ð²Ð°Ð½ÐµÑ\82о, Ð² ÐºÐ¾ÐµÑ\82о Ð´Ñ\80Ñ\83гиÑ\82е Ð´Ð° Ñ\81е Ð²ÐºÐ°Ñ\80аÑ\82"
 
-#: setup.c:987
+#: sequencer.c:3513
 #, c-format
-msgid "failed to stat '%*s%s%s'"
-msgstr "не може да бъде получена информация чрез „stat“ за „%*s%s%s“"
+msgid "could not resolve '%s'"
+msgstr "„%s“ не може да бъде открит"
 
-#: setup.c:1225
-msgid "Unable to read current working directory"
-msgstr "ТекÑ\83Ñ\89аÑ\82а Ñ\80абоÑ\82на Ð´Ð¸Ñ\80екÑ\82оÑ\80иÑ\8f Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð±Ñ\8aде Ð¿Ñ\80оÑ\87еÑ\82ена"
+#: sequencer.c:3546
+msgid "cannot merge without a current revision"
+msgstr "без Ñ\82екÑ\83Ñ\89о Ð¿Ð¾Ð´Ð°Ð²Ð°Ð½Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ñ\81лива"
 
-#: setup.c:1234 setup.c:1240
+#: sequencer.c:3568
 #, c-format
-msgid "cannot change to '%s'"
-msgstr "не може да се влезе в директорията „%s“"
+msgid "unable to parse '%.*s'"
+msgstr "„%.*s“ не може да се анализира"
 
-#: setup.c:1245
+#: sequencer.c:3577
 #, c-format
-msgid "not a git repository (or any of the parent directories): %s"
-msgstr ""
-"нито тази, нито която и да е от по-горните директории, не е хранилище на "
-"git: %s"
+msgid "nothing to merge: '%.*s'"
+msgstr "няма нищо за сливане: „%.*s“"
 
-#: setup.c:1251
+#: sequencer.c:3589
+msgid "octopus merge cannot be executed on top of a [new root]"
+msgstr "върху начално подаване не може да се извърши множествено сливане"
+
+#: sequencer.c:3605
 #, 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 ""
-"нито тази, нито която и да е от по-горните директории (до точката на "
-"монтиране „%s“), не е хранилище на git.\n"
-"Git работи в рамките на една файлова система, защото променливата на средата "
-"„GIT_DISCOVERY_ACROSS_FILESYSTEM“ не е зададена."
+msgid "could not get commit message of '%s'"
+msgstr "съобщението за подаване към „%s“ не може да бъде получено"
 
-#: setup.c:1362
+#: sequencer.c:3788
 #, c-format
-msgid ""
-"problem with core.sharedRepository filemode value (0%.3o).\n"
-"The owner of files must always have read and write permissions."
-msgstr ""
-"зададеният в „core.sharedRepository“ режим за достъп до файлове е неправилен "
-"(0%.3o).\n"
-"Собственикът на файла трябва да има права за писане и четене."
+msgid "could not even attempt to merge '%.*s'"
+msgstr "сливането на „%.*s“ не може даже да започне"
 
-#: setup.c:1409
-msgid "open /dev/null or dup failed"
-msgstr "неуспешно изпълнение на „open“ или „dup“ върху „/dev/null“"
+#: sequencer.c:3804
+msgid "merge: Unable to write new index file"
+msgstr "сливане: новият индекс не може да бъде запазен"
 
-#: setup.c:1424
-msgid "fork failed"
-msgstr "неÑ\83Ñ\81пеÑ\88но Ñ\81Ñ\8aздаване Ð½Ð° Ð¿Ñ\80оÑ\86еÑ\81 Ñ\87Ñ\80ез â\80\9eforkâ\80\9c"
+#: sequencer.c:3878
+msgid "Cannot autostash"
+msgstr "Ð\9dе Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ñ\81каÑ\82ае Ð°Ð²Ñ\82омаÑ\82иÑ\87но"
 
-#: setup.c:1429
-msgid "setsid failed"
-msgstr "неуспешно изпълнение на „setsid“"
+#: sequencer.c:3881
+#, c-format
+msgid "Unexpected stash response: '%s'"
+msgstr "Неочакван резултат при скатаване: „%s“"
+
+#: sequencer.c:3887
+#, c-format
+msgid "Could not create directory for '%s'"
+msgstr "Директорията за „%s“ не може да бъде създадена"
+
+#: sequencer.c:3890
+#, c-format
+msgid "Created autostash: %s\n"
+msgstr "Автоматично скатано: „%s“\n"
 
-#: sha1-file.c:480
-#, c-format
-msgid "object directory %s does not exist; check .git/objects/info/alternates"
-msgstr ""
-"директорията за обекти „%s“ не съществува, проверете „.git/objects/info/"
-"alternates“"
+#: sequencer.c:3894
+msgid "could not reset --hard"
+msgstr "неуспешно изпълнение на „git reset --hard“"
 
-#: sha1-file.c:531
+#: sequencer.c:3919
 #, c-format
-msgid "unable to normalize alternate object path: %s"
-msgstr "алÑ\82еÑ\80наÑ\82ивниÑ\8fÑ\82 Ð¿Ñ\8aÑ\82 ÐºÑ\8aм Ð¾Ð±ÐµÐºÑ\82и Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð±Ñ\8aде Ð½Ð¾Ñ\80мализиÑ\80ан: â\80\9e%sâ\80\9c"
+msgid "Applied autostash.\n"
+msgstr "Ð\90вÑ\82омаÑ\82иÑ\87но Ñ\81каÑ\82аноÑ\82о Ðµ Ð¿Ñ\80иложено.\n"
 
-#: sha1-file.c:603
+#: sequencer.c:3931
 #, c-format
-msgid "%s: ignoring alternate object stores, nesting too deep"
-msgstr ""
-"%s: алтернативните хранилища за обекти се пренебрегват поради прекалено "
-"дълбоко влагане"
+msgid "cannot store %s"
+msgstr "„%s“ не може да бъде запазен"
 
-#: sha1-file.c:610
+#: sequencer.c:3934
 #, c-format
-msgid "unable to normalize object directory: %s"
-msgstr "директорията за обекти „%s“ не може да бъде нормализирана"
+msgid ""
+"%s\n"
+"Your changes are safe in the stash.\n"
+"You can run \"git stash pop\" or \"git stash drop\" at any time.\n"
+msgstr ""
+"%s\n"
+"Промените ви са надеждно скатани.  Можете да пробвате да ги приложите чрез\n"
+"„git stash pop“ или да ги изхвърлите чрез „git stash drop“, когато "
+"поискате.\n"
 
-#: sha1-file.c:653
-msgid "unable to fdopen alternates lockfile"
-msgstr "заклÑ\8eÑ\87ваÑ\89иÑ\8fÑ\82 Ñ\84айл Ð·Ð° Ð°Ð»Ñ\82еÑ\80наÑ\82ивиÑ\82е Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ð¾Ñ\82воÑ\80и Ñ\81 â\80\9efdopenâ\80\9c"
+#: sequencer.c:3939
+msgid "Applying autostash resulted in conflicts."
+msgstr "Ð\9aонÑ\84ликÑ\82и Ð¿Ñ\80и Ð¿Ñ\80илаганеÑ\82о Ð½Ð° Ð°Ð²Ñ\82омаÑ\82иÑ\87но Ñ\81каÑ\82аноÑ\82о."
 
-#: sha1-file.c:671
-msgid "unable to read alternates file"
-msgstr "файлът с алтернативите не може да бъде прочетен"
+#: sequencer.c:3940
+msgid "Autostash exists; creating a new stash entry."
+msgstr "Вече има запис за автоматично скатано, затова се създава нов запис."
 
-#: sha1-file.c:678
-msgid "unable to move new alternates file into place"
-msgstr "новият файл с алтернативите не може да бъде преместен на мястото му"
+#: sequencer.c:4033 git-rebase--preserve-merges.sh:769
+msgid "could not detach HEAD"
+msgstr "указателят „HEAD“ не може да се отдели"
 
-#: sha1-file.c:713
+#: sequencer.c:4048
 #, c-format
-msgid "path '%s' does not exist"
-msgstr "пÑ\8aÑ\82Ñ\8fÑ\82 â\80\9e%sâ\80\9c Ð½Ðµ Ñ\81Ñ\8aÑ\89еÑ\81Ñ\82вÑ\83ва."
+msgid "Stopped at HEAD\n"
+msgstr "Ð\91е Ñ\81пÑ\80Ñ\8fно Ð¿Ñ\80и â\80\9eHEADâ\80\9c\n"
 
-#: sha1-file.c:734
+#: sequencer.c:4050
 #, c-format
-msgid "reference repository '%s' as a linked checkout is not supported yet."
-msgstr "вÑ\81е Ð¾Ñ\89е Ð½Ðµ Ñ\81е Ð¿Ð¾Ð´Ð´Ñ\8aÑ\80жа ÐµÑ\82алонно Ñ\85Ñ\80анилиÑ\89е â\80\9e%sâ\80\9c ÐºÐ°Ñ\82о Ñ\81вÑ\8aÑ\80зано."
+msgid "Stopped at %s\n"
+msgstr "Ð\91е Ñ\81пÑ\80Ñ\8fно Ð¿Ñ\80и â\80\9e%sâ\80\9c\n"
 
-#: sha1-file.c:740
+#: sequencer.c:4058
 #, c-format
-msgid "reference repository '%s' is not a local repository."
-msgstr "еталонното хранилище „%s“ не е локално"
+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"
 
-#: sha1-file.c:746
+#: sequencer.c:4104
 #, c-format
-msgid "reference repository '%s' is shallow"
-msgstr "еÑ\82алонноÑ\82о Ñ\85Ñ\80анилиÑ\89е â\80\9e%sâ\80\9c Ðµ Ð¿Ð»Ð¸Ñ\82ко"
+msgid "Rebasing (%d/%d)%s"
+msgstr "Ð\9fÑ\80ебазиÑ\80ане (%d/%d)%s"
 
-#: sha1-file.c:754
+#: sequencer.c:4149
 #, c-format
-msgid "reference repository '%s' is grafted"
-msgstr "еÑ\82алонноÑ\82о Ñ\85Ñ\80анилиÑ\89е â\80\9e%sâ\80\9c Ðµ Ñ\81 Ð¿Ñ\80иÑ\81аждане"
+msgid "Stopped at %s...  %.*s\n"
+msgstr "СпиÑ\80ане Ð¿Ñ\80и â\80\9e%sâ\80\9câ\80¦  %.*s\n"
 
-#: sha1-file.c:814
+#: sequencer.c:4220
 #, c-format
-msgid "invalid line while parsing alternate refs: %s"
-msgstr "неправилен ред при анализа на алтернативните указатели: „%s“"
+msgid "unknown command %d"
+msgstr "непозната команда %d"
 
-#: sha1-file.c:964
-#, c-format
-msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
-msgstr ""
-"неуспешен опит за „mmap“ %<PRIuMAX>, което е над позволеното %<PRIuMAX>"
+#: sequencer.c:4279
+msgid "could not read orig-head"
+msgstr "указателят за „orig-head“ не може да се прочете"
 
-#: sha1-file.c:985
-msgid "mmap failed"
-msgstr "неуспешно изпълнение на „mmap“"
+#: sequencer.c:4284
+msgid "could not read 'onto'"
+msgstr "указателят за „onto“ не може да се прочете"
 
-#: sha1-file.c:1149
+#: sequencer.c:4298
 #, c-format
-msgid "object file %s is empty"
-msgstr "файлът с обектите „%s“ е празен"
+msgid "could not update HEAD to %s"
+msgstr "„HEAD“ не може да бъде обновен до „%s“"
 
-#: sha1-file.c:1284 sha1-file.c:2477
+#: sequencer.c:4358
 #, c-format
-msgid "corrupt loose object '%s'"
-msgstr "непакеÑ\82иÑ\80аниÑ\8fÑ\82 Ð¾Ð±ÐµÐºÑ\82 â\80\9e%sâ\80\9c Ðµ Ð¿Ð¾Ð²Ñ\80еден"
+msgid "Successfully rebased and updated %s.\n"
+msgstr "УÑ\81пеÑ\88но Ð¿Ñ\80ебазиÑ\80ане Ð¸ Ð¾Ð±Ð½Ð¾Ð²Ñ\8fване Ð½Ð° â\80\9e%sâ\80\9c.\n"
 
-#: sha1-file.c:1286 sha1-file.c:2481
-#, c-format
-msgid "garbage at end of loose object '%s'"
-msgstr "грешни данни в края на непакетирания обект „%s“"
+#: sequencer.c:4391
+msgid "cannot rebase: You have unstaged changes."
+msgstr "не може да пребазирате, защото има промени, които не са в индекса."
 
-#: sha1-file.c:1328
-msgid "invalid object type"
-msgstr "неправилен вид обект"
+#: sequencer.c:4400
+msgid "cannot amend non-existing commit"
+msgstr "несъществуващо подаване не може да се поправи"
 
-#: sha1-file.c:1412
+#: sequencer.c:4402
 #, c-format
-msgid "unable to unpack %s header with --allow-unknown-type"
-msgstr ""
-"заглавната част „%s“ не може да се разпакетира с опцията „--allow-unknown-"
-"type“"
+msgid "invalid file: '%s'"
+msgstr "неправилен файл: „%s“"
 
-#: sha1-file.c:1415
+#: sequencer.c:4404
 #, c-format
-msgid "unable to unpack %s header"
-msgstr "заглавнаÑ\82а Ñ\87аÑ\81Ñ\82 Ð½Ð° â\80\9e%sâ\80\9c Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð±Ñ\8aде Ñ\80азпакеÑ\82иÑ\80ана"
+msgid "invalid contents: '%s'"
+msgstr "непÑ\80авилно Ñ\81Ñ\8aдÑ\8aÑ\80жание: â\80\9e%sâ\80\9c"
 
-#: sha1-file.c:1421
-#, c-format
-msgid "unable to parse %s header with --allow-unknown-type"
+#: sequencer.c:4407
+msgid ""
+"\n"
+"You have uncommitted changes in your working tree. Please, commit them\n"
+"first and then run 'git rebase --continue' again."
 msgstr ""
-"заглавната част „%s“ не може да се анализира с опцията „--allow-unknown-type“"
-
-#: sha1-file.c:1424
-#, c-format
-msgid "unable to parse %s header"
-msgstr "заглавната част на „%s“ не може да бъде анализирана"
+"\n"
+"В работното дърво има неподадени промени.  Първо ги подайте, а след това\n"
+"отново изпълнете „git rebase --continue“."
 
-#: sha1-file.c:1651
+#: sequencer.c:4443 sequencer.c:4482
 #, c-format
-msgid "failed to read object %s"
-msgstr "обектът „%s“ не може да бъде прочетен"
+msgid "could not write file: '%s'"
+msgstr "файлът „%s“ не може да бъде записан"
 
-#: sha1-file.c:1655
-#, c-format
-msgid "replacement %s not found for %s"
-msgstr "заместителят „%s“ на „%s“ не може да бъде открит"
+#: sequencer.c:4498
+msgid "could not remove CHERRY_PICK_HEAD"
+msgstr "указателят „CHERRY_PICK_HEAD“ не може да бъде изтрит"
 
-#: sha1-file.c:1659
-#, c-format
-msgid "loose object %s (stored in %s) is corrupt"
-msgstr "непакетираният обект „%s“ (в „%s“) е повреден"
+#: sequencer.c:4505
+msgid "could not commit staged changes."
+msgstr "промените в индекса не могат да бъдат подадени."
 
-#: sha1-file.c:1663
+#: sequencer.c:4621
 #, c-format
-msgid "packed object %s (stored in %s) is corrupt"
-msgstr "пакетираният обект „%s“ (в „%s“) е повреден"
+msgid "%s: can't cherry-pick a %s"
+msgstr "%s: не може да се отбере „%s“"
 
-#: sha1-file.c:1768
+#: sequencer.c:4625
 #, c-format
-msgid "unable to write file %s"
-msgstr "файлът „%s“ не може да бъде записан"
+msgid "%s: bad revision"
+msgstr "%s: неправилна версия"
 
-#: sha1-file.c:1775
-#, c-format
-msgid "unable to set permission to '%s'"
-msgstr "правата за достъп до „%s“ не могат да бъдат зададени"
+#: sequencer.c:4660
+msgid "can't revert as initial commit"
+msgstr "първоначалното подаване не може да бъде отменено"
 
-#: sha1-file.c:1782
-msgid "file write error"
-msgstr "грешка при запис на файл"
+#: sequencer.c:5137
+msgid "make_script: unhandled options"
+msgstr "make_script: неподдържани опции"
 
-#: sha1-file.c:1802
-msgid "error when closing loose object file"
-msgstr "грешка при затварянето на файла с непакетиран обект"
+#: sequencer.c:5140
+msgid "make_script: error preparing revisions"
+msgstr "make_script: грешка при подготовката на версии"
 
-#: sha1-file.c:1867
-#, c-format
-msgid "insufficient permission for adding an object to repository database %s"
-msgstr ""
-"няма права за добавяне на обект към базата от данни на хранилището „%s“"
+#: sequencer.c:5382 sequencer.c:5399
+msgid "nothing to do"
+msgstr "няма какво да се прави"
 
-#: sha1-file.c:1869
-msgid "unable to create temporary file"
-msgstr "не Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð±Ñ\8aде Ñ\81Ñ\8aздаден Ð²Ñ\80еменен Ñ\84айл"
+#: sequencer.c:5418
+msgid "could not skip unnecessary pick commands"
+msgstr "излиÑ\88ниÑ\82е ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ Ð·Ð° Ð¾Ñ\82биÑ\80ане Ð½Ðµ Ð±Ñ\8fÑ\85а Ð¿Ñ\80еÑ\81коÑ\87ени"
 
-#: sha1-file.c:1893
-msgid "unable to write loose object file"
-msgstr "грешка при записа на файла с непакетиран обект"
+#: sequencer.c:5512
+msgid "the script was already rearranged."
+msgstr "скриптът вече е преподреден."
 
-#: sha1-file.c:1899
+#: setup.c:133
 #, c-format
-msgid "unable to deflate new object %s (%d)"
-msgstr "новият обект „%s“ не може да се компресира с „deflate“: %d"
+msgid "'%s' is outside repository at '%s'"
+msgstr "„%s“ е извън хранилището при „%s“"
 
-#: sha1-file.c:1903
+#: setup.c:185
 #, c-format
-msgid "deflateEnd on object %s failed (%d)"
-msgstr "неуспешно приключване на „deflate“ върху „%s“: %d"
+msgid ""
+"%s: no such path in the working tree.\n"
+"Use 'git <command> -- <path>...' to specify paths that do not exist locally."
+msgstr ""
+"%s: в това работно дърво няма такъв път.\n"
+"За да указвате пътища, които локално не съществуват, използвайте:\n"
+"\n"
+"    git КОМАНДА -- ПЪТ…"
 
-#: sha1-file.c:1907
+#: setup.c:198
 #, c-format
-msgid "confused by unstable object source data for %s"
-msgstr "грешка поради нестабилния източник данни за обектите „%s“"
+msgid ""
+"ambiguous argument '%s': unknown revision or path not in the working tree.\n"
+"Use '--' to separate paths from revisions, like this:\n"
+"'git <command> [<revision>...] -- [<file>...]'"
+msgstr ""
+"нееднозначен аргумент „%s: непозната версия или пътят не е част от работното "
+"дърво.\n"
+"Разделяйте пътищата от версиите с „--“, ето така:\n"
+"\n"
+"    git КОМАНДА [ВЕРСИЯ…] -- [ФАЙЛ…]"
 
-#: sha1-file.c:1917 builtin/pack-objects.c:1086
+#: setup.c:264
 #, c-format
-msgid "failed utime() on %s"
-msgstr "неÑ\83Ñ\81пеÑ\88но Ð·Ð°Ð´Ð°Ð²Ð°Ð½Ðµ Ð½Ð° Ð²Ñ\80еме Ð½Ð° Ð´Ð¾Ñ\81Ñ\82Ñ\8aп/Ñ\81Ñ\8aздаване Ñ\87Ñ\80ез â\80\9eutimeâ\80\9c Ð½Ð° â\80\9e%sâ\80\9c"
+msgid "option '%s' must come before non-option arguments"
+msgstr "опÑ\86иÑ\8fÑ\82а â\80\9e%sâ\80\9c Ñ\82Ñ\80Ñ\8fбва Ð´Ð° Ðµ Ð¿Ñ\80еди Ð¿Ñ\8aÑ\80виÑ\8f Ð°Ñ\80гÑ\83менÑ\82, ÐºÐ¾Ð¹Ñ\82о Ð½Ðµ Ðµ Ð¾Ð¿Ñ\86иÑ\8f"
 
-#: sha1-file.c:1994
+#: setup.c:283
 #, c-format
-msgid "cannot read object for %s"
-msgstr "обектът за „%s“ не може да се прочете"
-
-#: sha1-file.c:2045
-msgid "corrupt commit"
-msgstr "повредено подаване"
+msgid ""
+"ambiguous argument '%s': both revision and filename\n"
+"Use '--' to separate paths from revisions, like this:\n"
+"'git <command> [<revision>...] -- [<file>...]'"
+msgstr ""
+"нееднозначен аргумент „%s“: както версия, така и път.\n"
+"Разделяйте пътищата от версиите с „--“, ето така:\n"
+"\n"
+"    git КОМАНДА [ВЕРСИЯ…] -- [ФАЙЛ…]"
 
-#: sha1-file.c:2053
-msgid "corrupt tag"
-msgstr "повреден етикет"
+#: setup.c:419
+msgid "unable to set up work tree using invalid config"
+msgstr ""
+"не може да се зададе текуща работна директория при неправилни настройки"
 
-#: sha1-file.c:2153
-#, c-format
-msgid "read error while indexing %s"
-msgstr "грешка при четене по време на индексиране на „%s“"
+#: setup.c:423
+msgid "this operation must be run in a work tree"
+msgstr "тази команда трябва да се изпълни в работно дърво"
 
-#: sha1-file.c:2156
+#: setup.c:661
 #, c-format
-msgid "short read while indexing %s"
-msgstr "непÑ\8aлно Ð¿Ñ\80оÑ\87иÑ\82ане Ð¿Ð¾ Ð²Ñ\80еме Ð½Ð° Ð¸Ð½Ð´ÐµÐºÑ\81иÑ\80ане Ð½Ð° â\80\9e%sâ\80\9c"
+msgid "Expected git repo version <= %d, found %d"
+msgstr "Ð\9eÑ\87аква Ñ\81е Ð²ÐµÑ\80Ñ\81иÑ\8f Ð½Ð° Ñ\85Ñ\80анилиÑ\89еÑ\82о Ð½Ð° git <= %d, Ð° Ð½Ðµ %d"
 
-#: sha1-file.c:2229 sha1-file.c:2239
-#, c-format
-msgid "%s: failed to insert into database"
-msgstr "„%s“ не може да се вмъкне в базата от данни"
+#: setup.c:669
+msgid "unknown repository extensions found:"
+msgstr "открити са непознати разширения в хранилището:"
 
-#: sha1-file.c:2245
-#, c-format
-msgid "%s: unsupported file type"
-msgstr "неподдържан вид файл: „%s“"
+#: setup.c:681
+msgid "repo version is 0, but v1-only extensions found:"
+msgstr "версията на хранилището е 0, но са открити разширения за версия 1:"
 
-#: sha1-file.c:2269
+#: setup.c:700
 #, c-format
-msgid "%s is not a valid object"
-msgstr "â\80\9e%sâ\80\9c Ðµ Ð½ÐµÐ¿Ñ\80авилен Ð¾Ð±ÐµÐºÑ\82"
+msgid "error opening '%s'"
+msgstr "â\80\9e%sâ\80\9c Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ð¾Ñ\82воÑ\80и"
 
-#: sha1-file.c:2271
+#: setup.c:702
 #, c-format
-msgid "%s is not a valid '%s' object"
-msgstr "„%s“ е неправилен обект от вид „%s“"
+msgid "too large to be a .git file: '%s'"
+msgstr "прекалено голям файл „.git“: „%s“"
 
-#: sha1-file.c:2298 builtin/index-pack.c:192
+#: setup.c:704
 #, c-format
-msgid "unable to open %s"
-msgstr "обекÑ\82Ñ\8aÑ\82 â\80\9e%sâ\80\9c Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð±Ñ\8aде Ð¾Ñ\82воÑ\80ен"
+msgid "error reading %s"
+msgstr "гÑ\80еÑ\88ка Ð¿Ñ\80и Ð¿Ñ\80оÑ\87иÑ\82ане Ð½Ð° â\80\9e%sâ\80\9c"
 
-#: sha1-file.c:2488 sha1-file.c:2541
+#: setup.c:706
 #, c-format
-msgid "hash mismatch for %s (expected %s)"
-msgstr "непÑ\80авилна ÐºÐ¾Ð½Ñ\82Ñ\80олна Ñ\81Ñ\83ма Ð·Ð° â\80\9e%sâ\80\9c (Ñ\82Ñ\80Ñ\8fбва Ð´Ð° Ðµ %s)"
+msgid "invalid gitfile format: %s"
+msgstr "непÑ\80авилен Ñ\84оÑ\80маÑ\82 Ð½Ð° gitfile: %s"
 
-#: sha1-file.c:2512
+#: setup.c:708
 #, c-format
-msgid "unable to mmap %s"
-msgstr "неÑ\83Ñ\81пеÑ\88но Ð¸Ð·Ð¿Ñ\8aлнение Ð½Ð° â\80\9emmapâ\80\9c Ð²Ñ\8aÑ\80Ñ\85Ñ\83 „%s“"
+msgid "no path in gitfile: %s"
+msgstr "липÑ\81ва Ð¿Ñ\8aÑ\82 Ð² gitfile: „%s“"
 
-#: sha1-file.c:2517
+#: setup.c:710
 #, c-format
-msgid "unable to unpack header of %s"
-msgstr "заглавнаÑ\82а Ñ\87аÑ\81Ñ\82 Ð½Ð° â\80\9e%sâ\80\9c Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð±Ñ\8aде Ñ\80азпакеÑ\82иÑ\80ана"
+msgid "not a git repository: %s"
+msgstr "не Ðµ Ñ\85Ñ\80анилиÑ\89е Ð½Ð° Git: %s"
 
-#: sha1-file.c:2523
+#: setup.c:812
 #, c-format
-msgid "unable to parse header of %s"
-msgstr "заглавната част на „%s“ не може да бъде анализирана"
+msgid "'$%s' too big"
+msgstr "„%s“ е прекалено голям"
 
-#: sha1-file.c:2534
+#: setup.c:826
 #, c-format
-msgid "unable to unpack contents of %s"
-msgstr "съдържанието на „%s“ не може да бъде разпакетирано"
+msgid "not a git repository: '%s'"
+msgstr "не е хранилище на git: „%s“"
 
-#: sha1-name.c:486
+#: setup.c:855 setup.c:857 setup.c:888
 #, c-format
-msgid "short SHA1 %s is ambiguous"
-msgstr "късият SHA1 „%s“ не е еднозначен"
-
-#: sha1-name.c:497
-msgid "The candidates are:"
-msgstr "Възможностите са:"
+msgid "cannot chdir to '%s'"
+msgstr "не може да се влезе в директорията „%s“"
 
-#: sha1-name.c:796
-msgid ""
-"Git normally never creates a ref that ends with 40 hex characters\n"
-"because it will be ignored when you just specify 40-hex. These refs\n"
-"may be created by mistake. For example,\n"
-"\n"
-"  git switch -c $br $(git rev-parse ...)\n"
-"\n"
-"where \"$br\" is somehow empty and a 40-hex ref is created. Please\n"
-"examine these refs and maybe delete them. Turn this message off by\n"
-"running \"git config advice.objectNameWarning false\""
-msgstr ""
-"При нормална работа Git никога не създава указатели, които завършват\n"
-"с 40 шестнадесетични знака, защото стандартно те ще бъдат прескачани.\n"
-"Възможно е такива указатели да са създадени случайно.  Например:\n"
-"\n"
-"    git switch -c $BRANCH $(git rev-parse …)\n"
-"\n"
-"където стойността на променливата на средата BRANCH е празна, при което\n"
-"се създава подобен указател.  Прегледайте тези указатели и ги изтрийте.\n"
-"За да изключите това съобщение, изпълнете:\n"
-"\n"
-"    git config advice.objectNameWarning false"
+#: setup.c:860 setup.c:916 setup.c:926 setup.c:965 setup.c:973
+msgid "cannot come back to cwd"
+msgstr "процесът не може да се върне към предишната работна директория"
 
-#: sha1-name.c:916
+#: setup.c:987
 #, c-format
-msgid "log for '%.*s' only goes back to %s"
-msgstr "жÑ\83Ñ\80налÑ\8aÑ\82 Ð·Ð° â\80\9e%.*sâ\80\9c Ñ\81Ñ\82ига Ñ\81амо Ð´Ð¾ â\80\9e%s“"
+msgid "failed to stat '%*s%s%s'"
+msgstr "не Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð±Ñ\8aде Ð¿Ð¾Ð»Ñ\83Ñ\87ена Ð¸Ð½Ñ\84оÑ\80маÑ\86иÑ\8f Ñ\87Ñ\80ез â\80\9estatâ\80\9c Ð·Ð° â\80\9e%*s%s%s“"
 
-#: sha1-name.c:924
-#, c-format
-msgid "log for '%.*s' only has %d entries"
-msgstr "журналът за „%.*s“ съдържа само %d записа"
+#: setup.c:1225
+msgid "Unable to read current working directory"
+msgstr "Текущата работна директория не може да бъде прочетена"
 
-#: sha1-name.c:1702
+#: setup.c:1234 setup.c:1240
 #, c-format
-msgid "path '%s' exists on disk, but not in '%.*s'"
-msgstr "пÑ\8aÑ\82Ñ\8fÑ\82 â\80\9e%sâ\80\9c Ñ\81Ñ\8aÑ\89еÑ\81Ñ\82вÑ\83ва Ð½Ð° Ð´Ð¸Ñ\81ка, Ð½Ð¾ Ð½Ðµ Ð¸ Ð² â\80\9e%.*s“"
+msgid "cannot change to '%s'"
+msgstr "не Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ð²Ð»ÐµÐ·Ðµ Ð² Ð´Ð¸Ñ\80екÑ\82оÑ\80иÑ\8fÑ\82а â\80\9e%s“"
 
-#: sha1-name.c:1708
+#: setup.c:1245
 #, c-format
-msgid ""
-"path '%s' exists, but not '%s'\n"
-"hint: Did you mean '%.*s:%s' aka '%.*s:./%s'?"
+msgid "not a git repository (or any of the parent directories): %s"
 msgstr ""
-"пътят „%s“ съществува на диска, но не е в „%s“\n"
-"Пробвайте с „%.*s:%s“, което е същото като „%.*s:./%s“."
-
-#: sha1-name.c:1717
-#, c-format
-msgid "path '%s' does not exist in '%.*s'"
-msgstr "пътят „%s“ не съществува в „%.*s“"
+"нито тази, нито която и да е от по-горните директории, не е хранилище на "
+"git: %s"
 
-#: sha1-name.c:1745
+#: setup.c:1251
 #, c-format
 msgid ""
-"path '%s' is in the index, but not at stage %d\n"
-"hint: Did you mean ':%d:%s'?"
+"not a git repository (or any parent up to mount point %s)\n"
+"Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set)."
 msgstr ""
-"пътят „%s“ е в индекса, но не версия %d\n"
-"Пробвайте с „%d:%s“."
+"нито тази, нито която и да е от по-горните директории (до точката на "
+"монтиране „%s“), не е хранилище на git.\n"
+"Git работи в рамките на една файлова система, защото променливата на средата "
+"„GIT_DISCOVERY_ACROSS_FILESYSTEM“ не е зададена."
 
-#: sha1-name.c:1761
+#: setup.c:1362
 #, c-format
 msgid ""
-"path '%s' is in the index, but not '%s'\n"
-"hint: Did you mean ':%d:%s' aka ':%d:./%s'?"
+"problem with core.sharedRepository filemode value (0%.3o).\n"
+"The owner of files must always have read and write permissions."
 msgstr ""
-"пътят „%s“ е в индекса, но не в „%s“\n"
-"Пробвайте с „%d:%s“, което е същото като „%d:./%s“."
-
-#: sha1-name.c:1769
-#, c-format
-msgid "path '%s' exists on disk, but not in the index"
-msgstr "пътят „%s“ съществува на диска, но не е в индекса"
+"зададеният в „core.sharedRepository“ режим за достъп до файлове е неправилен "
+"(0%.3o).\n"
+"Собственикът на файла трябва да има права за писане и четене."
 
-#: sha1-name.c:1771
-#, c-format
-msgid "path '%s' does not exist (neither on disk nor in the index)"
-msgstr "пътят „%s“ не съществува нито на диска, нито в индекса"
+#: setup.c:1409
+msgid "open /dev/null or dup failed"
+msgstr "неуспешно изпълнение на „open“ или „dup“ върху „/dev/null“"
 
-#: sha1-name.c:1784
-msgid "relative path syntax can't be used outside working tree"
-msgstr "оÑ\82ноÑ\81иÑ\82елен Ð¿Ñ\8aÑ\82 Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ð¿Ð¾Ð»Ð·Ð²Ð° Ð¸Ð·Ð²Ñ\8aн Ñ\80абоÑ\82ноÑ\82о Ð´Ñ\8aÑ\80во"
+#: setup.c:1424
+msgid "fork failed"
+msgstr "неÑ\83Ñ\81пеÑ\88но Ñ\81Ñ\8aздаване Ð½Ð° Ð¿Ñ\80оÑ\86еÑ\81 Ñ\87Ñ\80ез â\80\9eforkâ\80\9c"
 
-#: sha1-name.c:1922
-#, c-format
-msgid "invalid object name '%.*s'."
-msgstr "неправилно име на обект: „%.*s“"
+#: setup.c:1429
+msgid "setsid failed"
+msgstr "неуспешно изпълнение на „setsid“"
 
 #. TRANSLATORS: IEC 80000-13:2008 gibibyte
 #: strbuf.c:848
@@ -8534,7 +8798,7 @@ msgstr[0] "%u байт/сек."
 msgstr[1] "%u байта/сек."
 
 #: strbuf.c:1166 wrapper.c:199 wrapper.c:369 builtin/am.c:719
-#: builtin/rebase.c:864
+#: builtin/rebase.c:866
 #, c-format
 msgid "could not open '%s' for writing"
 msgstr "„%s“ не може да бъде отворен за запис"
@@ -8600,12 +8864,12 @@ msgstr "в неподготвения подмодул „%s“"
 msgid "Pathspec '%s' is in submodule '%.*s'"
 msgstr "Пътят „%s“ е в подмодула „%.*s“"
 
-#: submodule.c:434
+#: submodule.c:435
 #, c-format
 msgid "bad --ignore-submodules argument: %s"
 msgstr "неправилен аргумент за „--ignore-submodules“: „%s“"
 
-#: submodule.c:816
+#: submodule.c:817
 #, c-format
 msgid ""
 "Submodule in commit %s at path: '%s' collides with a submodule named the "
@@ -8614,12 +8878,12 @@ msgstr ""
 "Подмодулът при подаване %s на пътя „%s“ е различен от другия модул със "
 "същото име, затова първият се прескача."
 
-#: submodule.c:919
+#: submodule.c:920
 #, c-format
 msgid "submodule entry '%s' (%s) is a %s, not a commit"
 msgstr "записът за подмодула „%s“ (%s) е %s, а не подаване!"
 
-#: submodule.c:1004
+#: submodule.c:1005
 #, c-format
 msgid ""
 "Could not run 'git rev-list <commits> --not --remotes -n 1' command in "
@@ -8628,36 +8892,36 @@ msgstr ""
 "Командата „git rev-list ПОДАВАНИЯ --not --remotes -n 1“ не може да се "
 "изпълни в подмодула „%s“"
 
-#: submodule.c:1127
+#: submodule.c:1128
 #, c-format
 msgid "process for submodule '%s' failed"
 msgstr "процесът за подмодула „%s“ завърши неуспешно"
 
-#: submodule.c:1156 builtin/branch.c:680 builtin/submodule--helper.c:2469
+#: submodule.c:1157 builtin/branch.c:689 builtin/submodule--helper.c:2469
 msgid "Failed to resolve HEAD as a valid ref."
 msgstr "Не може да се открие към какво сочи указателят „HEAD“"
 
-#: submodule.c:1167
+#: submodule.c:1168
 #, c-format
 msgid "Pushing submodule '%s'\n"
 msgstr "Изтласкване на подмодула „%s“\n"
 
-#: submodule.c:1170
+#: submodule.c:1171
 #, c-format
 msgid "Unable to push submodule '%s'\n"
 msgstr "Подмодулът „%s“ не може да бъде изтласкан\n"
 
-#: submodule.c:1462
+#: submodule.c:1463
 #, c-format
 msgid "Fetching submodule %s%s\n"
 msgstr "Доставяне на подмодула „%s%s“\n"
 
-#: submodule.c:1492
+#: submodule.c:1497
 #, c-format
 msgid "Could not access submodule '%s'\n"
 msgstr "Подмодулът „%s“ не може да бъде достъпен\n"
 
-#: submodule.c:1646
+#: submodule.c:1652
 #, c-format
 msgid ""
 "Errors during submodule fetch:\n"
@@ -8666,63 +8930,63 @@ msgstr ""
 "Грешки при доставяне на подмодул:\n"
 "%s"
 
-#: submodule.c:1671
+#: submodule.c:1677
 #, c-format
 msgid "'%s' not recognized as a git repository"
 msgstr "„%s“ не е хранилище на git"
 
-#: submodule.c:1688
+#: submodule.c:1694
 #, c-format
 msgid "Could not run 'git status --porcelain=2' in submodule %s"
 msgstr ""
 "Командата „git status --porcelain=2“ не може да се изпълни в подмодула „%s“"
 
-#: submodule.c:1729
+#: submodule.c:1735
 #, c-format
 msgid "'git status --porcelain=2' failed in submodule %s"
 msgstr ""
 "командата „git status --porcelain=2“ не може да се изпълни в подмодула „%s“"
 
-#: submodule.c:1804
+#: submodule.c:1810
 #, c-format
 msgid "could not start 'git status' in submodule '%s'"
 msgstr "командата „git status“ не може да се изпълни в подмодула „%s“"
 
-#: submodule.c:1817
+#: submodule.c:1823
 #, c-format
 msgid "could not run 'git status' in submodule '%s'"
 msgstr "командата „git status“ не може да се изпълни в подмодула „%s“"
 
-#: submodule.c:1832
+#: submodule.c:1838
 #, c-format
 msgid "Could not unset core.worktree setting in submodule '%s'"
 msgstr "Настройката „core.worktree“ не може да се изтрие в подмодула „%s“"
 
-#: submodule.c:1859 submodule.c:2169
+#: submodule.c:1865 submodule.c:2175
 #, c-format
 msgid "could not recurse into submodule '%s'"
 msgstr "неуспешна обработка на поддиректориите в подмодула „%s“"
 
-#: submodule.c:1880
+#: submodule.c:1886
 msgid "could not reset submodule index"
 msgstr "неуспешно зануляване на индекса на подмодула"
 
-#: submodule.c:1922
+#: submodule.c:1928
 #, c-format
 msgid "submodule '%s' has dirty index"
 msgstr "индексът на подмодула „%s“ не е чист"
 
-#: submodule.c:1974
+#: submodule.c:1980
 #, c-format
 msgid "Submodule '%s' could not be updated."
 msgstr "Подмодулът „%s“ не може да се обнови."
 
-#: submodule.c:2042
+#: submodule.c:2048
 #, c-format
 msgid "submodule git dir '%s' is inside git dir '%.*s'"
 msgstr "„%s“ (директория на подмодул) е в директорията на git: „%.*s“"
 
-#: submodule.c:2063
+#: submodule.c:2069
 #, c-format
 msgid ""
 "relocate_gitdir for submodule '%s' with more than one worktree not supported"
@@ -8730,17 +8994,17 @@ msgstr ""
 "не се поддържа „relocate_gitdir“ за подмодула „%s“, който има повече от едно "
 "работно дърво"
 
-#: submodule.c:2075 submodule.c:2134
+#: submodule.c:2081 submodule.c:2140
 #, c-format
 msgid "could not lookup name for submodule '%s'"
 msgstr "името на подмодула „%s“ не може да бъде намерено"
 
-#: submodule.c:2079
+#: submodule.c:2085
 #, c-format
 msgid "refusing to move '%s' into an existing git dir"
 msgstr "„%s“ не може да се премести в съществуваща директория на git"
 
-#: submodule.c:2086
+#: submodule.c:2092
 #, c-format
 msgid ""
 "Migrating git directory of '%s%s' from\n"
@@ -8751,11 +9015,11 @@ msgstr ""
 "„%s“ към\n"
 "„%s“\n"
 
-#: submodule.c:2214
+#: submodule.c:2220
 msgid "could not start ls-files in .."
 msgstr "„ls-stat“ не може да се стартира в „..“"
 
-#: submodule.c:2254
+#: submodule.c:2260
 #, c-format
 msgid "ls-tree returned unexpected return code %d"
 msgstr "„ls-tree“ завърши с неочакван изходен код: %d"
@@ -8786,7 +9050,7 @@ msgstr "празна завършваща лексема в епилога „%.
 msgid "could not read input file '%s'"
 msgstr "входният файл „%s“ не може да бъде прочетен"
 
-#: trailer.c:751
+#: trailer.c:751 builtin/mktag.c:91
 msgid "could not read from stdin"
 msgstr "от стандартния вход не може да се чете"
 
@@ -8862,7 +9126,7 @@ msgstr "неуспешно изпълнение на бързо внасяне"
 msgid "error while running fast-import"
 msgstr "грешка при изпълнението на бързо внасяне"
 
-#: transport-helper.c:549 transport-helper.c:1236
+#: transport-helper.c:549 transport-helper.c:1237
 #, c-format
 msgid "could not read ref %s"
 msgstr "указателят „%s“ не може да се прочете"
@@ -8880,7 +9144,7 @@ msgstr "протоколът не поддържа задаването на п
 msgid "invalid remote service path"
 msgstr "неправилен път на отдалечената услуга"
 
-#: transport-helper.c:661 transport.c:1446
+#: transport-helper.c:661 transport.c:1447
 msgid "operation not supported by protocol"
 msgstr "опцията не се поддържа от протокола"
 
@@ -8964,52 +9228,52 @@ msgstr ""
 "Няма общи указатели, не са указани никакви указатели —\n"
 "нищо няма да бъде направено.  Пробвайте да укажете клон.\n"
 
-#: transport-helper.c:1213
+#: transport-helper.c:1214
 #, c-format
 msgid "unsupported object format '%s'"
 msgstr "обект с неподдържан формат „%s“"
 
-#: transport-helper.c:1222
+#: transport-helper.c:1223
 #, c-format
 msgid "malformed response in ref list: %s"
 msgstr "неправилен отговор в списъка с указатели: „%s“"
 
-#: transport-helper.c:1374
+#: transport-helper.c:1375
 #, c-format
 msgid "read(%s) failed"
 msgstr "неуспешно четене на „%s“"
 
-#: transport-helper.c:1401
+#: transport-helper.c:1402
 #, c-format
 msgid "write(%s) failed"
 msgstr "неуспешен запис в „%s“"
 
-#: transport-helper.c:1450
+#: transport-helper.c:1451
 #, c-format
 msgid "%s thread failed"
 msgstr "неуспешно изпълнение на нишката „%s“"
 
-#: transport-helper.c:1454
+#: transport-helper.c:1455
 #, c-format
 msgid "%s thread failed to join: %s"
 msgstr "завършването на нишката „%s“ не може да се изчака: „%s“"
 
-#: transport-helper.c:1473 transport-helper.c:1477
+#: transport-helper.c:1474 transport-helper.c:1478
 #, c-format
 msgid "can't start thread for copying data: %s"
 msgstr "неуспешно стартиране на нишка за копиране на данните: „%s“"
 
-#: transport-helper.c:1514
+#: transport-helper.c:1515
 #, c-format
 msgid "%s process failed to wait"
 msgstr "процесът на „%s“ не успя да изчака чрез „waitpid“"
 
-#: transport-helper.c:1518
+#: transport-helper.c:1519
 #, c-format
 msgid "%s process failed"
 msgstr "неуспешно изпълнение на „%s“"
 
-#: transport-helper.c:1536 transport-helper.c:1545
+#: transport-helper.c:1537 transport-helper.c:1546
 msgid "can't start thread for copying data"
 msgstr "неуспешно стартиране на нишка за копиране на данните"
 
@@ -9097,23 +9361,23 @@ msgstr ""
 msgid "Aborting."
 msgstr "Преустановяване на действието."
 
-#: transport.c:1315
+#: transport.c:1316
 msgid "failed to push all needed submodules"
 msgstr "неуспешно изтласкване на всички необходими подмодули"
 
-#: tree-walk.c:32
+#: tree-walk.c:33
 msgid "too-short tree object"
 msgstr "прекалено кратък обект-дърво"
 
-#: tree-walk.c:38
+#: tree-walk.c:39
 msgid "malformed mode in tree entry"
 msgstr "неправилни права за достъп в запис в дърво"
 
-#: tree-walk.c:42
+#: tree-walk.c:43
 msgid "empty filename in tree entry"
 msgstr "празно име на файл в запис в дърво"
 
-#: tree-walk.c:117
+#: tree-walk.c:118
 msgid "too-short tree file"
 msgstr "прекалено кратък файл-дърво"
 
@@ -9370,7 +9634,7 @@ msgstr ""
 msgid "Updating index flags"
 msgstr "Обновяване на флаговете на индекса"
 
-#: upload-pack.c:1550
+#: upload-pack.c:1543
 msgid "expected flush after fetch arguments"
 msgstr "след аргументите на „fetch“ се очаква изчистване на буферите"
 
@@ -9407,73 +9671,105 @@ msgstr "неправилна част от пътя „..“"
 msgid "Fetching objects"
 msgstr "Доставяне на обектите"
 
-#: worktree.c:236 builtin/am.c:2103
+#: worktree.c:238 builtin/am.c:2103
 #, c-format
 msgid "failed to read '%s'"
 msgstr "„%s“ не може да бъде прочетен"
 
-#: worktree.c:283
+#: worktree.c:304
 #, c-format
 msgid "'%s' at main working tree is not the repository directory"
 msgstr "„%s“ в основното работно дърво не е директорията на хранилището"
 
-#: worktree.c:294
+#: worktree.c:315
 #, c-format
 msgid "'%s' file does not contain absolute path to the working tree location"
 msgstr ""
 "файлът „%s“ не съдържа абсолютния път към местоположението на работното дърво"
 
-#: worktree.c:306
+#: worktree.c:327
 #, c-format
 msgid "'%s' does not exist"
 msgstr "„%s“ не съществува."
 
-#: worktree.c:312
+#: worktree.c:333
 #, c-format
 msgid "'%s' is not a .git file, error code %d"
 msgstr "„%s“ не е файл на .git, код за грешка: %d"
 
-#: worktree.c:321
+#: worktree.c:342
 #, c-format
 msgid "'%s' does not point back to '%s'"
 msgstr "„%s“ не сочи към обратно към „%s“"
 
-#: worktree.c:587
+#: worktree.c:608
 msgid "not a directory"
 msgstr "не е директория"
 
-#: worktree.c:596
+#: worktree.c:617
 msgid ".git is not a file"
 msgstr "„.git“ не е файл"
 
-#: worktree.c:598
+#: worktree.c:619
 msgid ".git file broken"
 msgstr "„.git“ е повреден"
 
-#: worktree.c:600
+#: worktree.c:621
 msgid ".git file incorrect"
 msgstr "„.git“ е неправилен"
 
-#: worktree.c:670
+#: worktree.c:727
 msgid "not a valid path"
 msgstr "неправилен път"
 
-#: worktree.c:676
+#: worktree.c:733
 msgid "unable to locate repository; .git is not a file"
 msgstr "не може да се открие хранилище: „.git“ не е файл"
 
-#: worktree.c:679
+#: worktree.c:737
+msgid "unable to locate repository; .git file does not reference a repository"
+msgstr "не може да се открие хранилище: файлът „.git“ не сочи към хранилище"
+
+#: worktree.c:741
 msgid "unable to locate repository; .git file broken"
 msgstr "не може да се открие хранилище: „.git“ е повреден"
 
-#: worktree.c:685
+#: worktree.c:747
 msgid "gitdir unreadable"
 msgstr "директорията „gitdir“ не може да се прочете"
 
-#: worktree.c:689
+#: worktree.c:751
 msgid "gitdir incorrect"
 msgstr "неправилна директория „gitdir“"
 
+#: worktree.c:776
+msgid "not a valid directory"
+msgstr "не е валидна директория"
+
+#: worktree.c:782
+msgid "gitdir file does not exist"
+msgstr "файлът „gitdir“ не съществува"
+
+#: worktree.c:787 worktree.c:796
+#, c-format
+msgid "unable to read gitdir file (%s)"
+msgstr "файлът „gitdir“ не може да бъде прочетен (%s)"
+
+#: worktree.c:806
+#, c-format
+msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
+msgstr ""
+"изчитането върна по-малко байтове от очакваното (очаквани: %<PRIuMAX> байта, "
+"получени: %<PRIuMAX>)"
+
+#: worktree.c:814
+msgid "invalid gitdir file"
+msgstr "неправилен файл „gitdir“"
+
+#: worktree.c:822
+msgid "gitdir file points to non-existent location"
+msgstr "файлът „gitdir“ сочи несъществуващо местоположение"
+
 #: wrapper.c:197 wrapper.c:367
 #, c-format
 msgid "could not open '%s' for reading and writing"
@@ -9525,11 +9821,11 @@ msgid "  (use \"git rm <file>...\" to mark resolution)"
 msgstr ""
 "  (използвайте „git rm ФАЙЛ…“, за да укажете разрешаването на конфликта)"
 
-#: wt-status.c:211 wt-status.c:1070
+#: wt-status.c:211 wt-status.c:1072
 msgid "Changes to be committed:"
 msgstr "Промени, които ще бъдат подадени:"
 
-#: wt-status.c:234 wt-status.c:1079
+#: wt-status.c:234 wt-status.c:1081
 msgid "Changes not staged for commit:"
 msgstr "Промени, които не са в индекса за подаване:"
 
@@ -9634,22 +9930,22 @@ msgstr "променено съдържание, "
 msgid "untracked content, "
 msgstr "неследено съдържание, "
 
-#: wt-status.c:903
+#: wt-status.c:905
 #, 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:934
+#: wt-status.c:936
 msgid "Submodules changed but not updated:"
 msgstr "Подмодулите са променени, но не са обновени:"
 
-#: wt-status.c:936
+#: wt-status.c:938
 msgid "Submodule changes to be committed:"
 msgstr "Промени в подмодулите за подаване:"
 
-#: wt-status.c:1018
+#: wt-status.c:1020
 msgid ""
 "Do not modify or remove the line above.\n"
 "Everything below it will be ignored."
@@ -9657,7 +9953,7 @@ msgstr ""
 "Не променяйте и не изтривайте горния ред.\n"
 "Всичко отдолу ще бъде изтрито."
 
-#: wt-status.c:1110
+#: wt-status.c:1112
 #, c-format
 msgid ""
 "\n"
@@ -9668,263 +9964,271 @@ msgstr ""
 "Изчисляването на броя различаващи се подавания отне %.2f сек.\n"
 "За да избегнете това, ползвайте „--no-ahead-behind“.\n"
 
-#: wt-status.c:1140
+#: wt-status.c:1142
 msgid "You have unmerged paths."
 msgstr "Някои пътища не са слети."
 
-#: wt-status.c:1143
+#: wt-status.c:1145
 msgid "  (fix conflicts and run \"git commit\")"
 msgstr "  (коригирайте конфликтите и изпълнете „git commit“)"
 
-#: wt-status.c:1145
+#: wt-status.c:1147
 msgid "  (use \"git merge --abort\" to abort the merge)"
 msgstr "  (използвайте „git merge --abort“, за да преустановите сливането)"
 
-#: wt-status.c:1149
+#: wt-status.c:1151
 msgid "All conflicts fixed but you are still merging."
 msgstr "Всички конфликти са решени, но продължавате сливането."
 
-#: wt-status.c:1152
+#: wt-status.c:1154
 msgid "  (use \"git commit\" to conclude merge)"
 msgstr "  (използвайте „git commit“, за да завършите сливането)"
 
-#: wt-status.c:1161
+#: wt-status.c:1163
 msgid "You are in the middle of an am session."
 msgstr "В момента прилагате поредица от кръпки чрез „git am“."
 
-#: wt-status.c:1164
+#: wt-status.c:1166
 msgid "The current patch is empty."
 msgstr "Текущата кръпка е празна."
 
-#: wt-status.c:1168
+#: wt-status.c:1170
 msgid "  (fix conflicts and then run \"git am --continue\")"
 msgstr "  (коригирайте конфликтите и изпълнете „git am --continue“)"
 
-#: wt-status.c:1170
+#: wt-status.c:1172
 msgid "  (use \"git am --skip\" to skip this patch)"
 msgstr "  (използвайте „git am --skip“, за да пропуснете тази кръпка)"
 
-#: wt-status.c:1172
+#: wt-status.c:1174
 msgid "  (use \"git am --abort\" to restore the original branch)"
 msgstr ""
 "  (използвайте „git am --abort“, за да възстановите първоначалния клон)"
 
-#: wt-status.c:1305
+#: wt-status.c:1307
 msgid "git-rebase-todo is missing."
 msgstr "„git-rebase-todo“ липсва."
 
-#: wt-status.c:1307
+#: wt-status.c:1309
 msgid "No commands done."
 msgstr "Не са изпълнени команди."
 
-#: wt-status.c:1310
+#: wt-status.c:1312
 #, 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:1321
+#: wt-status.c:1323
 #, c-format
 msgid "  (see more in file %s)"
 msgstr "  (повече информация има във файла „%s“)"
 
-#: wt-status.c:1326
+#: wt-status.c:1328
 msgid "No commands remaining."
 msgstr "Не остават повече команди."
 
-#: wt-status.c:1329
+#: wt-status.c:1331
 #, 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:1337
+#: wt-status.c:1339
 msgid "  (use \"git rebase --edit-todo\" to view and edit)"
 msgstr ""
 "  (използвайте „git rebase --edit-todo“, за да разгледате и редактирате)"
 
-#: wt-status.c:1349
+#: wt-status.c:1351
 #, c-format
 msgid "You are currently rebasing branch '%s' on '%s'."
 msgstr "В момента пребазирате клона „%s“ върху „%s“."
 
-#: wt-status.c:1354
+#: wt-status.c:1356
 msgid "You are currently rebasing."
 msgstr "В момента пребазирате."
 
-#: wt-status.c:1367
+#: wt-status.c:1369
 msgid "  (fix conflicts and then run \"git rebase --continue\")"
 msgstr "  (коригирайте конфликтите и използвайте „git rebase --continue“)"
 
-#: wt-status.c:1369
+#: wt-status.c:1371
 msgid "  (use \"git rebase --skip\" to skip this patch)"
 msgstr "  (използвайте „git rebase --skip“, за да пропуснете тази кръпка)"
 
-#: wt-status.c:1371
+#: wt-status.c:1373
 msgid "  (use \"git rebase --abort\" to check out the original branch)"
 msgstr ""
 "  (използвайте „git rebase --abort“, за да възстановите първоначалния клон)"
 
-#: wt-status.c:1378
+#: wt-status.c:1380
 msgid "  (all conflicts fixed: run \"git rebase --continue\")"
 msgstr "  (всички конфликти са коригирани: изпълнете „git rebase --continue“)"
 
-#: wt-status.c:1382
+#: wt-status.c:1384
 #, c-format
 msgid ""
 "You are currently splitting a commit while rebasing branch '%s' on '%s'."
 msgstr "В момента разделяте подаване докато пребазирате клона „%s“ върху „%s“."
 
-#: wt-status.c:1387
+#: wt-status.c:1389
 msgid "You are currently splitting a commit during a rebase."
 msgstr "В момента разделяте подаване докато пребазирате."
 
-#: wt-status.c:1390
+#: wt-status.c:1392
 msgid "  (Once your working directory is clean, run \"git rebase --continue\")"
 msgstr ""
 "  (След като работното ви дърво стане чисто, използвайте „git rebase --"
 "continue“)"
 
-#: wt-status.c:1394
+#: wt-status.c:1396
 #, c-format
 msgid "You are currently editing a commit while rebasing branch '%s' on '%s'."
 msgstr ""
 "В момента редактирате подаване докато пребазирате клона „%s“ върху „%s“."
 
-#: wt-status.c:1399
+#: wt-status.c:1401
 msgid "You are currently editing a commit during a rebase."
 msgstr "В момента редактирате подаване докато пребазирате."
 
-#: wt-status.c:1402
+#: wt-status.c:1404
 msgid "  (use \"git commit --amend\" to amend the current commit)"
 msgstr ""
 "  (използвайте „git commit --amend“, за да редактирате текущото подаване)"
 
-#: wt-status.c:1404
+#: wt-status.c:1406
 msgid ""
 "  (use \"git rebase --continue\" once you are satisfied with your changes)"
 msgstr ""
 "  (използвайте „git rebase --continue“, след като завършите промените си)"
 
-#: wt-status.c:1415
+#: wt-status.c:1417
 msgid "Cherry-pick currently in progress."
 msgstr "В момента се извършва отбиране на подавания."
 
-#: wt-status.c:1418
+#: wt-status.c:1420
 #, c-format
 msgid "You are currently cherry-picking commit %s."
 msgstr "В момента отбирате подаването „%s“."
 
-#: wt-status.c:1425
+#: wt-status.c:1427
 msgid "  (fix conflicts and run \"git cherry-pick --continue\")"
 msgstr "  (коригирайте конфликтите и изпълнете „git cherry-pick --continue“)"
 
-#: wt-status.c:1428
+#: wt-status.c:1430
 msgid "  (run \"git cherry-pick --continue\" to continue)"
 msgstr "  (за да продължите, изпълнете „git cherry-pick --continue“)"
 
-#: wt-status.c:1431
+#: wt-status.c:1433
 msgid "  (all conflicts fixed: run \"git cherry-pick --continue\")"
 msgstr ""
 "  (всички конфликти са коригирани, изпълнете „git cherry-pick --continue“)"
 
-#: wt-status.c:1433
+#: wt-status.c:1435
 msgid "  (use \"git cherry-pick --skip\" to skip this patch)"
 msgstr "  (използвайте „git cherry-pick --skip“, за да пропуснете тази кръпка)"
 
-#: wt-status.c:1435
+#: wt-status.c:1437
 msgid "  (use \"git cherry-pick --abort\" to cancel the cherry-pick operation)"
 msgstr ""
 "  (използвайте „git cherry-pick --abort“, за да отмените всички действия с "
 "отбиране)"
 
-#: wt-status.c:1445
+#: wt-status.c:1447
 msgid "Revert currently in progress."
 msgstr "В момента тече отмяна на подаване."
 
-#: wt-status.c:1448
+#: wt-status.c:1450
 #, c-format
 msgid "You are currently reverting commit %s."
 msgstr "В момента отменяте подаване „%s“."
 
-#: wt-status.c:1454
+#: wt-status.c:1456
 msgid "  (fix conflicts and run \"git revert --continue\")"
 msgstr "  (коригирайте конфликтите и изпълнете „git revert --continue“)"
 
-#: wt-status.c:1457
+#: wt-status.c:1459
 msgid "  (run \"git revert --continue\" to continue)"
 msgstr "  (за да продължите, изпълнете „git revert --continue“)"
 
-#: wt-status.c:1460
+#: wt-status.c:1462
 msgid "  (all conflicts fixed: run \"git revert --continue\")"
 msgstr "  (всички конфликти са коригирани, изпълнете „git revert --continue“)"
 
-#: wt-status.c:1462
+#: wt-status.c:1464
 msgid "  (use \"git revert --skip\" to skip this patch)"
 msgstr "  (използвайте „git revert --skip“, за да пропуснете тази кръпка)"
 
-#: wt-status.c:1464
+#: wt-status.c:1466
 msgid "  (use \"git revert --abort\" to cancel the revert operation)"
 msgstr ""
 "  (използвайте „git revert --abort“, за да преустановите отмяната на "
 "подаване)"
 
-#: wt-status.c:1474
+#: wt-status.c:1476
 #, c-format
 msgid "You are currently bisecting, started from branch '%s'."
 msgstr "В момента търсите двоично, като сте стартирали от клон „%s“."
 
-#: wt-status.c:1478
+#: wt-status.c:1480
 msgid "You are currently bisecting."
 msgstr "В момента търсите двоично."
 
-#: wt-status.c:1481
+#: wt-status.c:1483
 msgid "  (use \"git bisect reset\" to get back to the original branch)"
 msgstr ""
 "  (използвайте „git bisect reset“, за да се върнете към първоначалното "
 "състояние и клон)"
 
-#: wt-status.c:1492
+#: wt-status.c:1494
 #, c-format
 msgid "You are in a sparse checkout with %d%% of tracked files present."
 msgstr ""
 "Намирате се в частично изтеглено хранилище с %d%% налични, следени файла."
 
-#: wt-status.c:1731
+#: wt-status.c:1733
 msgid "On branch "
 msgstr "На клон "
 
-#: wt-status.c:1738
+#: wt-status.c:1740
 msgid "interactive rebase in progress; onto "
 msgstr "извършвате интерактивно пребазиране върху "
 
-#: wt-status.c:1740
+#: wt-status.c:1742
 msgid "rebase in progress; onto "
 msgstr "извършвате пребазиране върху "
 
-#: wt-status.c:1750
+#: wt-status.c:1747
+msgid "HEAD detached at "
+msgstr "Указателят „HEAD“ не е свързан и е при "
+
+#: wt-status.c:1749
+msgid "HEAD detached from "
+msgstr "Указателят „HEAD“ не е свързан и е отделѐн от "
+
+#: wt-status.c:1752
 msgid "Not currently on any branch."
 msgstr "Извън всички клони."
 
-#: wt-status.c:1767
+#: wt-status.c:1769
 msgid "Initial commit"
 msgstr "Първоначално подаване"
 
-#: wt-status.c:1768
+#: wt-status.c:1770
 msgid "No commits yet"
 msgstr "Все още липсват подавания"
 
-#: wt-status.c:1782
+#: wt-status.c:1784
 msgid "Untracked files"
 msgstr "Неследени файлове"
 
-#: wt-status.c:1784
+#: wt-status.c:1786
 msgid "Ignored files"
 msgstr "Игнорирани файлове"
 
-#: wt-status.c:1788
+#: wt-status.c:1790
 #, c-format
 msgid ""
 "It took %.2f seconds to enumerate untracked files. 'status -uno'\n"
@@ -9936,32 +10240,32 @@ msgstr ""
 "изпълнението, но ще трябва да добавяте новите файлове ръчно.\n"
 "За повече подробности погледнете „git status help“."
 
-#: wt-status.c:1794
+#: wt-status.c:1796
 #, c-format
 msgid "Untracked files not listed%s"
 msgstr "Неследените файлове не са изведени%s"
 
-#: wt-status.c:1796
+#: wt-status.c:1798
 msgid " (use -u option to show untracked files)"
 msgstr " (използвайте опцията „-u“, за да изведете неследените файлове)"
 
-#: wt-status.c:1802
+#: wt-status.c:1804
 msgid "No changes"
 msgstr "Няма промени"
 
-#: wt-status.c:1807
+#: wt-status.c:1809
 #, c-format
 msgid "no changes added to commit (use \"git add\" and/or \"git commit -a\")\n"
 msgstr ""
 "към индекса за подаване не са добавени промени (използвайте „git add“ и/или "
 "„git commit -a“)\n"
 
-#: wt-status.c:1811
+#: wt-status.c:1813
 #, c-format
 msgid "no changes added to commit\n"
 msgstr "към индекса за подаване не са добавени промени\n"
 
-#: wt-status.c:1815
+#: wt-status.c:1817
 #, c-format
 msgid ""
 "nothing added to commit but untracked files present (use \"git add\" to "
@@ -9970,66 +10274,66 @@ msgstr ""
 "към индекса за подаване не са добавени промени, но има нови файлове "
 "(използвайте „git add“, за да започне тяхното следене)\n"
 
-#: wt-status.c:1819
+#: wt-status.c:1821
 #, c-format
 msgid "nothing added to commit but untracked files present\n"
 msgstr "към индекса за подаване не са добавени промени, но има нови файлове\n"
 
-#: wt-status.c:1823
+#: wt-status.c:1825
 #, c-format
 msgid "nothing to commit (create/copy files and use \"git add\" to track)\n"
 msgstr ""
 "липсват каквито и да е промени (създайте или копирайте файлове и използвайте "
 "„git add“, за да започне тяхното следене)\n"
 
-#: wt-status.c:1827 wt-status.c:1833
+#: wt-status.c:1829 wt-status.c:1835
 #, c-format
 msgid "nothing to commit\n"
 msgstr "липсват каквито и да е промени\n"
 
-#: wt-status.c:1830
+#: wt-status.c:1832
 #, c-format
 msgid "nothing to commit (use -u to show untracked files)\n"
 msgstr ""
 "липсват каквито и да е промени (използвайте опцията „-u“, за да се изведат и "
 "неследените файлове)\n"
 
-#: wt-status.c:1835
+#: wt-status.c:1837
 #, c-format
 msgid "nothing to commit, working tree clean\n"
 msgstr "липсват каквито и да е промени, работното дърво е чисто\n"
 
-#: wt-status.c:1940
+#: wt-status.c:1942
 msgid "No commits yet on "
 msgstr "Все още липсват подавания в "
 
-#: wt-status.c:1944
+#: wt-status.c:1946
 msgid "HEAD (no branch)"
 msgstr "HEAD (извън клон)"
 
-#: wt-status.c:1975
+#: wt-status.c:1977
 msgid "different"
 msgstr "различен"
 
-#: wt-status.c:1977 wt-status.c:1985
+#: wt-status.c:1979 wt-status.c:1987
 msgid "behind "
 msgstr "назад с "
 
-#: wt-status.c:1980 wt-status.c:1983
+#: wt-status.c:1982 wt-status.c:1985
 msgid "ahead "
 msgstr "напред с "
 
 #. TRANSLATORS: the action is e.g. "pull with rebase"
-#: wt-status.c:2505
+#: wt-status.c:2507
 #, c-format
 msgid "cannot %s: You have unstaged changes."
 msgstr "не може да извършите „%s“, защото има промени, които не са в индекса."
 
-#: wt-status.c:2511
+#: wt-status.c:2513
 msgid "additionally, your index contains uncommitted changes."
 msgstr "освен това в индекса има неподадени промени."
 
-#: wt-status.c:2513
+#: wt-status.c:2515
 #, c-format
 msgid "cannot %s: Your index contains uncommitted changes."
 msgstr "не може да извършите „%s“, защото в индекса има неподадени промени."
@@ -10043,132 +10347,137 @@ msgstr "неуспешно изтриване на „%s“"
 msgid "git add [<options>] [--] <pathspec>..."
 msgstr "git add [ОПЦИЯ…] [--] ПЪТ…"
 
-#: builtin/add.c:88
+#: builtin/add.c:58
+#, c-format
+msgid "cannot chmod %cx '%s'"
+msgstr "правата на „%2$s“ не може да се зададат да са %1$cx"
+
+#: builtin/add.c:96
 #, c-format
 msgid "unexpected diff status %c"
 msgstr "неочакван изходен код при генериране на разлика: %c"
 
-#: builtin/add.c:93 builtin/commit.c:285
+#: builtin/add.c:101 builtin/commit.c:285
 msgid "updating files failed"
 msgstr "неуспешно обновяване на файловете"
 
-#: builtin/add.c:103
+#: builtin/add.c:111
 #, c-format
 msgid "remove '%s'\n"
 msgstr "изтриване на „%s“\n"
 
-#: builtin/add.c:178
+#: builtin/add.c:186
 msgid "Unstaged changes after refreshing the index:"
 msgstr "Промени, които и след обновяването на индекса не са добавени към него:"
 
-#: builtin/add.c:272 builtin/rev-parse.c:908
+#: builtin/add.c:280 builtin/rev-parse.c:991
 msgid "Could not read the index"
 msgstr "Индексът не може да бъде прочетен"
 
-#: builtin/add.c:283
+#: builtin/add.c:291
 #, c-format
 msgid "Could not open '%s' for writing."
 msgstr "Файлът „%s“ не може да бъде отворен за запис."
 
-#: builtin/add.c:287
+#: builtin/add.c:295
 msgid "Could not write patch"
 msgstr "Кръпката не може да бъде записана"
 
-#: builtin/add.c:290
+#: builtin/add.c:298
 msgid "editing patch failed"
 msgstr "неуспешно редактиране на кръпка"
 
-#: builtin/add.c:293
+#: builtin/add.c:301
 #, c-format
 msgid "Could not stat '%s'"
 msgstr "Не може да се получи информация чрез „stat“ за файла „%s“"
 
-#: builtin/add.c:295
+#: builtin/add.c:303
 msgid "Empty patch. Aborted."
 msgstr "Празна кръпка, преустановяване на действието."
 
-#: builtin/add.c:300
+#: builtin/add.c:308
 #, c-format
 msgid "Could not apply '%s'"
 msgstr "Кръпката „%s“ не може да бъде приложена"
 
-#: builtin/add.c:308
+#: builtin/add.c:316
 msgid "The following paths are ignored by one of your .gitignore files:\n"
 msgstr ""
 "Следните пътища ще бъдат игнорирани според някой от файловете „.gitignore“:\n"
 
-#: builtin/add.c:328 builtin/clean.c:904 builtin/fetch.c:166 builtin/mv.c:124
+#: builtin/add.c:336 builtin/clean.c:904 builtin/fetch.c:169 builtin/mv.c:124
 #: builtin/prune-packed.c:14 builtin/pull.c:204 builtin/push.c:559
 #: builtin/remote.c:1427 builtin/rm.c:242 builtin/send-pack.c:190
 msgid "dry run"
 msgstr "пробно изпълнение"
 
-#: builtin/add.c:331
+#: builtin/add.c:339
 msgid "interactive picking"
 msgstr "интерактивно отбиране на промени"
 
-#: builtin/add.c:332 builtin/checkout.c:1547 builtin/reset.c:308
+#: builtin/add.c:340 builtin/checkout.c:1546 builtin/reset.c:308
 msgid "select hunks interactively"
 msgstr "интерактивен избор на парчета код"
 
-#: builtin/add.c:333
+#: builtin/add.c:341
 msgid "edit current diff and apply"
 msgstr "редактиране на текущата разлика и прилагане"
 
-#: builtin/add.c:334
+#: builtin/add.c:342
 msgid "allow adding otherwise ignored files"
 msgstr "добавяне и на иначе игнорираните файлове"
 
-#: builtin/add.c:335
+#: builtin/add.c:343
 msgid "update tracked files"
 msgstr "обновяване на следените файлове"
 
-#: builtin/add.c:336
+#: builtin/add.c:344
 msgid "renormalize EOL of tracked files (implies -u)"
 msgstr "уеднаквяване на знаците за край на файл (включва опцията „-u“)"
 
-#: builtin/add.c:337
+#: builtin/add.c:345
 msgid "record only the fact that the path will be added later"
 msgstr "отбелязване само на факта, че пътят ще бъде добавен по-късно"
 
-#: builtin/add.c:338
+#: builtin/add.c:346
 msgid "add changes from all tracked and untracked files"
 msgstr "добавяне на всички промени в следените и неследените файлове"
 
-#: builtin/add.c:341
+#: builtin/add.c:349
 msgid "ignore paths removed in the working tree (same as --no-all)"
 msgstr ""
 "игнориране на пътищата, които са изтрити от работното дърво (същото като „--"
 "no-all“)"
 
-#: builtin/add.c:343
+#: builtin/add.c:351
 msgid "don't add, only refresh the index"
 msgstr "без добавяне на нови файлове, само обновяване на индекса"
 
-#: builtin/add.c:344
+#: builtin/add.c:352
 msgid "just skip files which cannot be added because of errors"
 msgstr ""
 "прескачане на файловете, които не могат да бъдат добавени поради грешки"
 
-#: builtin/add.c:345
+#: builtin/add.c:353
 msgid "check if - even missing - files are ignored in dry run"
 msgstr ""
 "проверка, че при пробно изпълнение всички файлове, дори и изтритите, се "
 "игнорират"
 
-#: builtin/add.c:347 builtin/update-index.c:1004
+#: builtin/add.c:355 builtin/update-index.c:1004
 msgid "override the executable bit of the listed files"
 msgstr "изрично задаване на стойността на флага дали файлът е изпълним"
 
-#: builtin/add.c:349
+#: builtin/add.c:357
 msgid "warn when adding an embedded repository"
 msgstr "предупреждаване при добавяне на вградено хранилище"
 
-#: builtin/add.c:351
+#: builtin/add.c:359
 msgid "backend for `git stash -p`"
 msgstr "реализация на „git stash -p“"
 
-#: builtin/add.c:369
+#: builtin/add.c:377
 #, c-format
 msgid ""
 "You've added another git repository inside your current repository.\n"
@@ -10199,12 +10508,12 @@ msgstr ""
 "\n"
 "За повече информация погледнете „git help submodule“."
 
-#: builtin/add.c:397
+#: builtin/add.c:405
 #, c-format
 msgid "adding embedded git repository: %s"
 msgstr "добавяне на вградено хранилище: %s"
 
-#: builtin/add.c:416
+#: builtin/add.c:424
 msgid ""
 "Use -f if you really want to add them.\n"
 "Turn this message off by running\n"
@@ -10215,50 +10524,50 @@ msgstr ""
 "\n"
 "    git config advice.addIgnoredFile false"
 
-#: builtin/add.c:425
+#: builtin/add.c:433
 msgid "adding files failed"
 msgstr "неуспешно добавяне на файлове"
 
-#: builtin/add.c:453 builtin/commit.c:345
+#: builtin/add.c:461 builtin/commit.c:345
 msgid "--pathspec-from-file is incompatible with --interactive/--patch"
 msgstr ""
 "опцията „--pathspec-from-file“ е несъвместима с всяка от опциите „--"
 "interactive“/„--patch“"
 
-#: builtin/add.c:470
+#: builtin/add.c:478
 msgid "--pathspec-from-file is incompatible with --edit"
 msgstr "опциите „--pathspec-from-file“ и „--edit“ са несъвместими"
 
-#: builtin/add.c:482
+#: builtin/add.c:490
 msgid "-A and -u are mutually incompatible"
 msgstr "опциите „-A“ и „-u“ са несъвместими"
 
-#: builtin/add.c:485
+#: builtin/add.c:493
 msgid "Option --ignore-missing can only be used together with --dry-run"
 msgstr "Опцията „--ignore-missing“ изисква „--dry-run“"
 
-#: builtin/add.c:489
+#: builtin/add.c:497
 #, c-format
 msgid "--chmod param '%s' must be either -x or +x"
 msgstr "параметърът към „--chmod“ — „%s“ може да е или „-x“, или „+x“"
 
-#: builtin/add.c:507 builtin/checkout.c:1715 builtin/commit.c:351
-#: builtin/reset.c:328 builtin/rm.c:272 builtin/stash.c:1502
+#: builtin/add.c:515 builtin/checkout.c:1714 builtin/commit.c:351
+#: builtin/reset.c:328 builtin/rm.c:272 builtin/stash.c:1569
 msgid "--pathspec-from-file is incompatible with pathspec arguments"
 msgstr ""
 "опцията „--pathspec-from-file“ е несъвместима с аргументи, указващи пътища"
 
-#: builtin/add.c:514 builtin/checkout.c:1727 builtin/commit.c:357
-#: builtin/reset.c:334 builtin/rm.c:278 builtin/stash.c:1508
+#: builtin/add.c:522 builtin/checkout.c:1726 builtin/commit.c:357
+#: builtin/reset.c:334 builtin/rm.c:278 builtin/stash.c:1575
 msgid "--pathspec-file-nul requires --pathspec-from-file"
 msgstr "опцията „--pathspec-file-nul“ изисква опция „--pathspec-from-file“"
 
-#: builtin/add.c:518
+#: builtin/add.c:526
 #, c-format
 msgid "Nothing specified, nothing added.\n"
 msgstr "Нищо не е зададено и нищо не е добавено.\n"
 
-#: builtin/add.c:520
+#: builtin/add.c:528
 msgid ""
 "Maybe you wanted to say 'git add .'?\n"
 "Turn this message off by running\n"
@@ -10522,7 +10831,7 @@ msgid "allow fall back on 3way merging if needed"
 msgstr "да се преминава към тройно сливане при нужда."
 
 #: builtin/am.c:2225 builtin/init-db.c:560 builtin/prune-packed.c:16
-#: builtin/repack.c:335 builtin/stash.c:815
+#: builtin/repack.c:334 builtin/stash.c:882
 msgid "be quiet"
 msgstr "без извеждане на информация"
 
@@ -10568,17 +10877,17 @@ msgid "pass it through git-apply"
 msgstr "прекарване през „git-apply“"
 
 #: builtin/am.c:2263 builtin/commit.c:1395 builtin/fmt-merge-msg.c:17
-#: builtin/fmt-merge-msg.c:20 builtin/grep.c:903 builtin/merge.c:260
+#: builtin/fmt-merge-msg.c:20 builtin/grep.c:904 builtin/merge.c:261
 #: builtin/pull.c:141 builtin/pull.c:200 builtin/pull.c:217
-#: builtin/rebase.c:1341 builtin/repack.c:346 builtin/repack.c:350
-#: builtin/repack.c:352 builtin/show-branch.c:650 builtin/show-ref.c:172
-#: builtin/tag.c:404 parse-options.h:154 parse-options.h:175
+#: builtin/rebase.c:1347 builtin/repack.c:345 builtin/repack.c:349
+#: builtin/repack.c:351 builtin/show-branch.c:650 builtin/show-ref.c:172
+#: builtin/tag.c:436 parse-options.h:154 parse-options.h:175
 #: parse-options.h:316
 msgid "n"
 msgstr "БРОЙ"
 
-#: builtin/am.c:2269 builtin/branch.c:661 builtin/bugreport.c:136
-#: builtin/for-each-ref.c:38 builtin/replace.c:556 builtin/tag.c:438
+#: builtin/am.c:2269 builtin/branch.c:670 builtin/bugreport.c:136
+#: builtin/for-each-ref.c:38 builtin/replace.c:556 builtin/tag.c:470
 #: builtin/verify-tag.c:38
 msgid "format"
 msgstr "ФОРМАТ"
@@ -10604,15 +10913,15 @@ msgid "skip the current patch"
 msgstr "прескачане на текущата кръпка"
 
 #: builtin/am.c:2287
-msgid "restore the original branch and abort the patching operation."
+msgid "restore the original branch and abort the patching operation"
 msgstr ""
 "възстановяване на първоначалното състояние на клона и преустановяване на "
-"прилагането на кръпката."
+"прилагането на кръпката"
 
 #: builtin/am.c:2290
-msgid "abort the patching operation but keep HEAD where it is."
+msgid "abort the patching operation but keep HEAD where it is"
 msgstr ""
-"преустановяване на прилагането на кръпката без промяна към кое сочи „HEAD“."
+"преустановяване на прилагането на кръпката без промяна към кое сочи „HEAD“"
 
 #: builtin/am.c:2294
 msgid "show the patch being applied"
@@ -10627,12 +10936,12 @@ msgid "use current timestamp for author date"
 msgstr "използване на текущото време като това за автор"
 
 #: builtin/am.c:2303 builtin/commit-tree.c:120 builtin/commit.c:1515
-#: builtin/merge.c:297 builtin/pull.c:175 builtin/rebase.c:536
-#: builtin/rebase.c:1394 builtin/revert.c:117 builtin/tag.c:419
+#: builtin/merge.c:298 builtin/pull.c:175 builtin/rebase.c:538
+#: builtin/rebase.c:1400 builtin/revert.c:117 builtin/tag.c:451
 msgid "key-id"
 msgstr "ИДЕНТИФИКАТОР_НА_КЛЮЧ"
 
-#: builtin/am.c:2304 builtin/rebase.c:537 builtin/rebase.c:1395
+#: builtin/am.c:2304 builtin/rebase.c:539 builtin/rebase.c:1401
 msgid "GPG-sign commits"
 msgstr "подписване на подаванията с GPG"
 
@@ -10716,23 +11025,10 @@ msgid "git bisect--helper --bisect-reset [<commit>]"
 msgstr "git bisect--helper --bisect-reset [ПОДАВАНЕ]"
 
 #: builtin/bisect--helper.c:24
-msgid ""
-"git bisect--helper --bisect-write [--no-log] <state> <revision> <good_term> "
-"<bad_term>"
-msgstr ""
-"git bisect--helper --bisect-write [--no-log] СЪСТОЯНИЕ ВЕРСИЯ ДОБРО ЛОШО"
-
-#: builtin/bisect--helper.c:25
-msgid ""
-"git bisect--helper --bisect-check-and-set-terms <command> <good_term> "
-"<bad_term>"
-msgstr "git bisect--helper --bisect-check-and-set-terms КОМАНДА ДОБРО"
-
-#: builtin/bisect--helper.c:26
 msgid "git bisect--helper --bisect-next-check <good_term> <bad_term> [<term>]"
 msgstr "git bisect--helper --bisect-next-check ЛОШО ДОБРО УПРАВЛЯВАЩА_ДУМА"
 
-#: builtin/bisect--helper.c:27
+#: builtin/bisect--helper.c:25
 msgid ""
 "git bisect--helper --bisect-terms [--term-good | --term-old | --term-bad | --"
 "term-new]"
@@ -10740,7 +11036,7 @@ msgstr ""
 "git bisect--helper --bisect-terms [--term-good | --term-old | --term-bad | --"
 "term-new]"
 
-#: builtin/bisect--helper.c:28
+#: builtin/bisect--helper.c:26
 msgid ""
 "git bisect--helper --bisect-start [--term-{new,bad}=<term> --term-{old,good}"
 "=<term>] [--no-checkout] [--first-parent] [<bad> [<good>...]] [--] "
@@ -10749,62 +11045,66 @@ msgstr ""
 "git bisect--helper --bisect-start [--term-{new,bad}=ЛОШО --term-{old,good}"
 "=ДОБРО] [--no-checkout] [--first-parent] [ЛОШО [ДОБРО…]] [--] [ПЪТ…]"
 
-#: builtin/bisect--helper.c:30
+#: builtin/bisect--helper.c:28
 msgid "git bisect--helper --bisect-next"
 msgstr "git bisect--helper --bisect-next"
 
-#: builtin/bisect--helper.c:31
-msgid "git bisect--helper --bisect-auto-next"
-msgstr "git bisect--helper --bisect-auto-next"
-
-#: builtin/bisect--helper.c:32
+#: builtin/bisect--helper.c:29
 msgid "git bisect--helper --bisect-state (bad|new) [<rev>]"
 msgstr "git bisect--helper --bisect-reset (ЛОШО) [ВЕРСИЯ]"
 
-#: builtin/bisect--helper.c:33
+#: builtin/bisect--helper.c:30
 msgid "git bisect--helper --bisect-state (good|old) [<rev>...]"
 msgstr "git bisect--helper --bisect-reset (ДОБРО) [ВЕРСИЯ…]"
 
-#: builtin/bisect--helper.c:108
+#: builtin/bisect--helper.c:31
+msgid "git bisect--helper --bisect-replay <filename>"
+msgstr "git bisect--helper --bisect-next ИМЕ_НА_ФАЙЛ"
+
+#: builtin/bisect--helper.c:32
+msgid "git bisect--helper --bisect-skip [(<rev>|<range>)...]"
+msgstr "git bisect--helper --bisect-reset [(ВЕРСИЯ|ДИАПАЗОН)…]"
+
+#: builtin/bisect--helper.c:107
 #, c-format
 msgid "cannot open file '%s' in mode '%s'"
 msgstr "файлът „%s“ не може да се отвори в режим „%s“"
 
-#: builtin/bisect--helper.c:115
+#: builtin/bisect--helper.c:114
 #, c-format
 msgid "could not write to file '%s'"
 msgstr "във файла „%s“ не може да се пише"
 
-#: builtin/bisect--helper.c:154
+#: builtin/bisect--helper.c:153
 #, c-format
 msgid "'%s' is not a valid term"
 msgstr "„%s“ е неправилна управляваща дума"
 
-#: builtin/bisect--helper.c:158
+#: builtin/bisect--helper.c:157
 #, c-format
 msgid "can't use the builtin command '%s' as a term"
 msgstr "„%s“ е вградена команда и не може да се използва като управляваща дума"
 
-#: builtin/bisect--helper.c:168
+#: builtin/bisect--helper.c:167
 #, c-format
 msgid "can't change the meaning of the term '%s'"
 msgstr "не може да смените значението на управляващата дума „%s“"
 
-#: builtin/bisect--helper.c:178
+#: builtin/bisect--helper.c:177
 msgid "please use two different terms"
 msgstr "използвайте две различни управляващи думи"
 
-#: builtin/bisect--helper.c:194
+#: builtin/bisect--helper.c:193
 #, c-format
 msgid "We are not bisecting.\n"
 msgstr "В момента не се извършва двоично търсене.\n"
 
-#: builtin/bisect--helper.c:202
+#: builtin/bisect--helper.c:201
 #, c-format
 msgid "'%s' is not a valid commit"
 msgstr "„%s“ не е подаване"
 
-#: builtin/bisect--helper.c:211
+#: builtin/bisect--helper.c:210
 #, c-format
 msgid ""
 "could not check out original HEAD '%s'. Try 'git bisect reset <commit>'."
@@ -10812,27 +11112,27 @@ msgstr ""
 "първоначално указаното „%s“ в указателя „HEAD“ не може да бъде\n"
 "изтеглено.  Пробвайте да изпълните командата „git bisect reset ПОДАВАНЕ“."
 
-#: builtin/bisect--helper.c:255
+#: builtin/bisect--helper.c:254
 #, c-format
 msgid "Bad bisect_write argument: %s"
 msgstr "Неправилен аргумент на функцията „bisect_write“: „%s“"
 
-#: builtin/bisect--helper.c:260
+#: builtin/bisect--helper.c:259
 #, c-format
 msgid "couldn't get the oid of the rev '%s'"
 msgstr "идентификаторът на обект на версия „%s“ не може да бъде получен"
 
-#: builtin/bisect--helper.c:272
+#: builtin/bisect--helper.c:271
 #, c-format
 msgid "couldn't open the file '%s'"
 msgstr "файлът „%s“ не може да бъде отворен"
 
-#: builtin/bisect--helper.c:298
+#: builtin/bisect--helper.c:297
 #, c-format
 msgid "Invalid command: you're currently in a %s/%s bisect"
 msgstr "Неправилна команда: в момента се изпълнява двоично търсене по %s/%s."
 
-#: builtin/bisect--helper.c:325
+#: builtin/bisect--helper.c:324
 #, c-format
 msgid ""
 "You need to give me at least one %s and %s revision.\n"
@@ -10841,7 +11141,7 @@ msgstr ""
 "Трябва да зададете поне една „%s“ и една „%s“ версия.  (Това може да се\n"
 "направи съответно и чрез командите „git bisect %s“ и „git bisect %s“.)"
 
-#: builtin/bisect--helper.c:329
+#: builtin/bisect--helper.c:328
 #, c-format
 msgid ""
 "You need to start by \"git bisect start\".\n"
@@ -10852,7 +11152,7 @@ msgstr ""
 "Трябва да зададете поне една „%s“ и една „%s“ версия.  (Това може да се\n"
 "направи съответно и чрез командите „git bisect %s“ и „git bisect %s“.)"
 
-#: builtin/bisect--helper.c:349
+#: builtin/bisect--helper.c:348
 #, c-format
 msgid "bisecting only with a %s commit"
 msgstr "двоично търсене само по „%s“ подаване."
@@ -10861,15 +11161,15 @@ msgstr "двоично търсене само по „%s“ подаване."
 #. translation. The program will only accept English input
 #. at this point.
 #.
-#: builtin/bisect--helper.c:357
+#: builtin/bisect--helper.c:356
 msgid "Are you sure [Y/n]? "
 msgstr "Да се продължи ли? „Y“ —  ДА, „n“ — не"
 
-#: builtin/bisect--helper.c:418
+#: builtin/bisect--helper.c:417
 msgid "no terms defined"
 msgstr "не са указани управляващи думи"
 
-#: builtin/bisect--helper.c:421
+#: builtin/bisect--helper.c:420
 #, c-format
 msgid ""
 "Your current terms are %s for the old state\n"
@@ -10878,7 +11178,7 @@ msgstr ""
 "Текущите управляващи думи са: %s за старото състояние\n"
 "и %s за новото състояние.\n"
 
-#: builtin/bisect--helper.c:431
+#: builtin/bisect--helper.c:430
 #, c-format
 msgid ""
 "invalid argument %s for 'git bisect terms'.\n"
@@ -10887,56 +11187,56 @@ msgstr ""
 "на „git bisect terms“ е подаден неправилен аргумент „%s“\n"
 "Поддържат се опциите „--term-good“/„--term-old“ и „--term-bad„/„--term-new“."
 
-#: builtin/bisect--helper.c:498
+#: builtin/bisect--helper.c:497 builtin/bisect--helper.c:1014
 msgid "revision walk setup failed\n"
 msgstr "неуспешно настройване на обхождането на версиите\n"
 
-#: builtin/bisect--helper.c:520
+#: builtin/bisect--helper.c:519
 #, c-format
 msgid "could not open '%s' for appending"
 msgstr "файлът „%s“ не може да се отвори за добавяне"
 
-#: builtin/bisect--helper.c:639 builtin/bisect--helper.c:652
+#: builtin/bisect--helper.c:638 builtin/bisect--helper.c:651
 msgid "'' is not a valid term"
 msgstr "„“ е неправилна управляваща дума"
 
-#: builtin/bisect--helper.c:662
+#: builtin/bisect--helper.c:661
 #, c-format
 msgid "unrecognized option: '%s'"
 msgstr "непозната опция: %s"
 
-#: builtin/bisect--helper.c:666
+#: builtin/bisect--helper.c:665
 #, c-format
 msgid "'%s' does not appear to be a valid revision"
 msgstr "„%s“ не изглежда като указател към версия"
 
-#: builtin/bisect--helper.c:697
+#: builtin/bisect--helper.c:696
 msgid "bad HEAD - I need a HEAD"
 msgstr "Неправилен указател „HEAD“"
 
-#: builtin/bisect--helper.c:712
+#: builtin/bisect--helper.c:711
 #, c-format
 msgid "checking out '%s' failed. Try 'git bisect start <valid-branch>'."
 msgstr ""
 "Неуспешно преминаване към „%s“.  Изпълнете командата „git bisect start "
 "СЪЩЕСТВУВАЩ_КЛОН“."
 
-#: builtin/bisect--helper.c:733
+#: builtin/bisect--helper.c:732
 msgid "won't bisect on cg-seek'ed tree"
 msgstr ""
 "не може да се търси двоично, когато е изпълнена командата „cg-seek“ от "
 "„cogito“"
 
-#: builtin/bisect--helper.c:736
+#: builtin/bisect--helper.c:735
 msgid "bad HEAD - strange symbolic ref"
 msgstr "Неправилен указател „HEAD“ — необичаен символен указател"
 
-#: builtin/bisect--helper.c:756
+#: builtin/bisect--helper.c:755
 #, c-format
 msgid "invalid ref: '%s'"
 msgstr "неправилен указател: „%s“"
 
-#: builtin/bisect--helper.c:814
+#: builtin/bisect--helper.c:813
 msgid "You need to start by \"git bisect start\"\n"
 msgstr "Започнете като изпълните командата „git bisect start“\n"
 
@@ -10944,94 +11244,105 @@ msgstr "Започнете като изпълните командата „git
 #. translation. The program will only accept English input
 #. at this point.
 #.
-#: builtin/bisect--helper.c:825
+#: builtin/bisect--helper.c:824
 msgid "Do you want me to do it for you [Y/n]? "
 msgstr "Да се извърши ли автоматично? „Y“ —  ДА, „n“ — не"
 
-#: builtin/bisect--helper.c:843
+#: builtin/bisect--helper.c:842
 msgid "Please call `--bisect-state` with at least one argument"
 msgstr "Опцията „--bisect-state“ изисква поне един аргумент"
 
-#: builtin/bisect--helper.c:856
+#: builtin/bisect--helper.c:855
 #, c-format
 msgid "'git bisect %s' can take only one argument."
 msgstr "Командата „git bisect %s“ приема само един аргумент."
 
-#: builtin/bisect--helper.c:868 builtin/bisect--helper.c:879
+#: builtin/bisect--helper.c:867 builtin/bisect--helper.c:878
 #, c-format
 msgid "Bad rev input: %s"
 msgstr "Неправилна версия: „%s“"
 
-#: builtin/bisect--helper.c:924
+#: builtin/bisect--helper.c:912
+msgid "We are not bisecting."
+msgstr "В момента не се извършва двоично търсене."
+
+#: builtin/bisect--helper.c:962
+#, c-format
+msgid "'%s'?? what are you talking about?"
+msgstr ""
+"Непозната команда „%s“.  Възможностите са: „start“, „skip“, „good“, „bad“ (и "
+"вариантите им)"
+
+#: builtin/bisect--helper.c:974
+#, c-format
+msgid "cannot read file '%s' for replaying"
+msgstr ""
+"файлът „%s“ не може да бъде прочетен, за да се изпълнят командите от него "
+"наново"
+
+#: builtin/bisect--helper.c:1047
 msgid "reset the bisection state"
 msgstr "изчистване на състоянието на двоичното търсене"
 
-#: builtin/bisect--helper.c:926
-msgid "write out the bisection state in BISECT_LOG"
-msgstr "запис на състоянието на двоичното търсене в „BISECT_LOG“"
-
-#: builtin/bisect--helper.c:928
-msgid "check and set terms in a bisection state"
-msgstr ""
-"проверка и задаване на управляващи думи към състоянието на двоичното търсене"
-
-#: builtin/bisect--helper.c:930
+#: builtin/bisect--helper.c:1049
 msgid "check whether bad or good terms exist"
 msgstr "проверка дали съществуват одобряващи/отхвърлящи управляващи думи"
 
-#: builtin/bisect--helper.c:932
+#: builtin/bisect--helper.c:1051
 msgid "print out the bisect terms"
 msgstr "извеждане на управляващите думи"
 
-#: builtin/bisect--helper.c:934
+#: builtin/bisect--helper.c:1053
 msgid "start the bisect session"
 msgstr "начало на двоично търсене"
 
-#: builtin/bisect--helper.c:936
+#: builtin/bisect--helper.c:1055
 msgid "find the next bisection commit"
 msgstr "откриване на следващото подаване при двоично търсене"
 
-#: builtin/bisect--helper.c:938
-msgid "verify the next bisection state then checkout the next bisection commit"
-msgstr ""
-"проверка на следващото състояние и преминаване към следващото подаване при "
-"двоично търсене"
-
-#: builtin/bisect--helper.c:940
+#: builtin/bisect--helper.c:1057
 msgid "mark the state of ref (or refs)"
 msgstr "задаване на състоянието на указателя/ите"
 
-#: builtin/bisect--helper.c:942
+#: builtin/bisect--helper.c:1059
+msgid "list the bisection steps so far"
+msgstr "извеждане на стъпките на двоичното търсене досега"
+
+#: builtin/bisect--helper.c:1061
+msgid "replay the bisection process from the given file"
+msgstr "наново изпълнение на двоичното търсене чрез дадения файл"
+
+#: builtin/bisect--helper.c:1063
+msgid "skip some commits for checkout"
+msgstr "прескачане на някои подавания при изтегляне"
+
+#: builtin/bisect--helper.c:1065
 msgid "no log for BISECT_WRITE"
 msgstr "липсва запис за „BISECT_WRITE“"
 
-#: builtin/bisect--helper.c:957
+#: builtin/bisect--helper.c:1080
 msgid "--bisect-reset requires either no argument or a commit"
 msgstr "опцията „--bisect-reset“ изисква или 0 аргументи, или 1 — подаване"
 
-#: builtin/bisect--helper.c:961
-msgid "--bisect-write requires either 4 or 5 arguments"
-msgstr "опцията „--bisect-write“ изисква 4 или 5 аргумента"
-
-#: builtin/bisect--helper.c:967
-msgid "--check-and-set-terms requires 3 arguments"
-msgstr "опцията „--check-and-set-terms“ изисква 3 аргумента"
-
-#: builtin/bisect--helper.c:973
+#: builtin/bisect--helper.c:1085
 msgid "--bisect-next-check requires 2 or 3 arguments"
 msgstr "опцията „--bisect-next-check“ изисква 2 или 3 аргумента"
 
-#: builtin/bisect--helper.c:979
+#: builtin/bisect--helper.c:1091
 msgid "--bisect-terms requires 0 or 1 argument"
 msgstr "опцията „--bisect-terms“ изисква 0 или 1 аргумента"
 
-#: builtin/bisect--helper.c:988
+#: builtin/bisect--helper.c:1100
 msgid "--bisect-next requires 0 arguments"
 msgstr "опцията „--bisect-next“ не приема аргументи"
 
-#: builtin/bisect--helper.c:994
-msgid "--bisect-auto-next requires 0 arguments"
-msgstr "опцията „--bisect-auto-next“ не приема аргументи"
+#: builtin/bisect--helper.c:1111
+msgid "--bisect-log requires 0 arguments"
+msgstr "опцията „--bisect-log“ не приема аргументи"
+
+#: builtin/bisect--helper.c:1116
+msgid "no logfile given"
+msgstr "не е зададен журнален файл"
 
 #: builtin/blame.c:32
 msgid "git blame [<options>] [<rev-opts>] [<rev>] [--] <file>"
@@ -11050,155 +11361,158 @@ msgstr "трябва да е цвят: %s"
 msgid "must end with a color"
 msgstr "трябва да завършва с цвят"
 
-#: builtin/blame.c:730
+#: builtin/blame.c:728
 #, c-format
 msgid "invalid color '%s' in color.blame.repeatedLines"
 msgstr "неправилен цвят „%s“ в „color.blame.repeatedLines“"
 
-#: builtin/blame.c:748
+#: builtin/blame.c:746
 msgid "invalid value for blame.coloring"
 msgstr "неправилна стойност за „blame.coloring“"
 
-#: builtin/blame.c:847
+#: builtin/blame.c:845
 #, c-format
 msgid "cannot find revision %s to ignore"
 msgstr "версията за прескачане „%s“ не може да бъде открита"
 
-#: builtin/blame.c:869
-msgid "Show blame entries as we find them, incrementally"
-msgstr "Ð\98звеждане на авторството с намирането му, последователно"
+#: builtin/blame.c:867
+msgid "show blame entries as we find them, incrementally"
+msgstr "извеждане на авторството с намирането му, последователно"
 
-#: builtin/blame.c:870
-msgid "Do not show object names of boundary commits (Default: off)"
+#: builtin/blame.c:868
+msgid "do not show object names of boundary commits (Default: off)"
 msgstr ""
-"Ð\91ез извеждане на имената на обектите за граничните подавания (стандартно "
+"без извеждане на имената на обектите за граничните подавания (стандартно "
 "опцията е изключена)"
 
-#: builtin/blame.c:871
-msgid "Do not treat root commits as boundaries (Default: off)"
+#: builtin/blame.c:869
+msgid "do not treat root commits as boundaries (Default: off)"
 msgstr ""
-"Ð\9dачалните подавания да не се считат за гранични (стандартно опцията е "
+"началните подавания да не се считат за гранични (стандартно опцията е "
 "изключена)"
 
+#: builtin/blame.c:870
+msgid "show work cost statistics"
+msgstr "извеждане на статистика за извършените действия"
+
+#: builtin/blame.c:871 builtin/checkout.c:1503 builtin/clone.c:92
+#: builtin/commit-graph.c:84 builtin/commit-graph.c:222 builtin/fetch.c:175
+#: builtin/merge.c:297 builtin/multi-pack-index.c:27 builtin/pull.c:119
+#: builtin/push.c:575 builtin/send-pack.c:198
+msgid "force progress reporting"
+msgstr "извеждане на напредъка"
+
 #: builtin/blame.c:872
-msgid "Show work cost statistics"
-msgstr "Ð\98звеждане Ð½Ð° Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82ика Ð·Ð° Ð¸Ð·Ð²Ñ\8aÑ\80Ñ\88ениÑ\82е Ð´ÐµÐ¹Ñ\81Ñ\82виÑ\8f"
+msgid "show output score for blame entries"
+msgstr "извеждане Ð½Ð° Ð´Ð¾Ð¿Ñ\8aлниÑ\82елна Ð¸Ð½Ñ\84оÑ\80маÑ\86иÑ\8f Ð·Ð° Ð¾Ð¿Ñ\80еделÑ\8fнеÑ\82о Ð½Ð° Ð°Ð²Ñ\82оÑ\80Ñ\81Ñ\82воÑ\82о"
 
 #: builtin/blame.c:873
-msgid "Force progress reporting"
-msgstr "Принудително извеждане на напредъка"
+msgid "show original filename (Default: auto)"
+msgstr ""
+"извеждане на първоначалното име на файл (стандартно това е автоматично)"
 
 #: builtin/blame.c:874
-msgid "Show output score for blame entries"
-msgstr "Извеждане на допълнителна информация за определянето на авторството"
+msgid "show original linenumber (Default: off)"
+msgstr ""
+"извеждане на първоначалния номер на ред (стандартно опцията е изключена)"
 
 #: builtin/blame.c:875
-msgid "Show original filename (Default: auto)"
-msgstr ""
-"Извеждане на първоначалното име на файл (стандартно това е автоматично)"
+msgid "show in a format designed for machine consumption"
+msgstr "извеждане във формат за по-нататъшна обработка"
 
 #: builtin/blame.c:876
-msgid "Show original linenumber (Default: off)"
+msgid "show porcelain format with per-line commit information"
 msgstr ""
-"Извеждане на първоначалният номер на ред (стандартно опцията е изключена)"
+"извеждане във формат за команди от потребителско ниво с информация на всеки "
+"ред"
 
 #: builtin/blame.c:877
-msgid "Show in a format designed for machine consumption"
-msgstr "Извеждане във формат за по-нататъшна обработка"
+msgid "use the same output mode as git-annotate (Default: off)"
+msgstr ""
+"използване на същия формат като „git-annotate“ (стандартно опцията е "
+"изключена)"
 
 #: builtin/blame.c:878
-msgid "Show porcelain format with per-line commit information"
-msgstr ""
-"Извеждане във формат за команди от потребителско ниво с информация на всеки "
-"ред"
+msgid "show raw timestamp (Default: off)"
+msgstr "извеждане на неформатирани времена (стандартно опцията е изключена)"
 
 #: builtin/blame.c:879
-msgid "Use the same output mode as git-annotate (Default: off)"
-msgstr ""
-"Използване на същия формат като „git-annotate“ (стандартно опцията е "
-"изключена)"
+msgid "show long commit SHA1 (Default: off)"
+msgstr "извеждане на пълните суми по SHA1 (стандартно опцията е изключена)"
 
 #: builtin/blame.c:880
-msgid "Show raw timestamp (Default: off)"
-msgstr "Ð\98звеждане Ð½Ð° Ð½ÐµÑ\84оÑ\80маÑ\82иÑ\80ани Ð²Ñ\80емена (стандартно опцията е изключена)"
+msgid "suppress author name and timestamp (Default: off)"
+msgstr "без Ð¸Ð¼Ðµ Ð½Ð° Ð°Ð²Ñ\82оÑ\80 Ð¸ Ð²Ñ\80еме Ð½Ð° Ð¿Ñ\80омÑ\8fна (стандартно опцията е изключена)"
 
 #: builtin/blame.c:881
-msgid "Show long commit SHA1 (Default: off)"
-msgstr "Извеждане на пълните суми по SHA1 (стандартно опцията е изключена)"
-
-#: builtin/blame.c:882
-msgid "Suppress author name and timestamp (Default: off)"
-msgstr "Без име на автор и време на промяна (стандартно опцията е изключена)"
-
-#: builtin/blame.c:883
-msgid "Show author email instead of name (Default: off)"
+msgid "show author email instead of name (Default: off)"
 msgstr ""
-"Ð\98звеждане на е-пощата на автора, а не името му (стандартно опцията е "
+"извеждане на е-пощата на автора, а не името му (стандартно опцията е "
 "изключена)"
 
-#: builtin/blame.c:884
-msgid "Ignore whitespace differences"
-msgstr "Ð\91ез разлики в знаците за интервали"
+#: builtin/blame.c:882
+msgid "ignore whitespace differences"
+msgstr "без разлики в знаците за интервали"
 
-#: builtin/blame.c:885 builtin/log.c:1813
+#: builtin/blame.c:883 builtin/log.c:1812
 msgid "rev"
 msgstr "ВЕРС"
 
-#: builtin/blame.c:885
-msgid "Ignore <rev> when blaming"
-msgstr "Ð\9fрескачане на ВЕРСията при извеждане на авторството"
+#: builtin/blame.c:883
+msgid "ignore <rev> when blaming"
+msgstr "прескачане на ВЕРСията при извеждане на авторството"
 
-#: builtin/blame.c:886
-msgid "Ignore revisions from <file>"
-msgstr "Ð\9fÑ\80еÑ\81каÑ\87ане Ð½Ð° Ð²ÐµÑ\80Ñ\81ииÑ\82е Ñ\83казани Ð²Ñ\8aв Ð¤Ð\90Ð\99Ð\9bа Ð¿Ñ\80и Ð¸Ð·Ð²ÐµÐ¶Ð´Ð°Ð½Ðµ Ð½Ð° Ð°Ð²Ñ\82оÑ\80Ñ\81Ñ\82воÑ\82о"
+#: builtin/blame.c:884
+msgid "ignore revisions from <file>"
+msgstr "пÑ\80еÑ\81каÑ\87ане Ð½Ð° Ð²ÐµÑ\80Ñ\81ииÑ\82е Ñ\83казани Ð²Ñ\8aв Ð¤Ð\90Ð\99Ð\9bа"
 
-#: builtin/blame.c:887
+#: builtin/blame.c:885
 msgid "color redundant metadata from previous line differently"
 msgstr ""
 "оцветяване на повтарящите се метаданни от предишния ред в различен цвят"
 
-#: builtin/blame.c:888
+#: builtin/blame.c:886
 msgid "color lines by age"
 msgstr "оцветяване на редовете по възраст"
 
-#: builtin/blame.c:889
-msgid "Spend extra cycles to find better match"
-msgstr "Ð\94опълнителни изчисления за по-добри резултати"
+#: builtin/blame.c:887
+msgid "spend extra cycles to find better match"
+msgstr "допълнителни изчисления за по-добри резултати"
 
-#: builtin/blame.c:890
-msgid "Use revisions from <file> instead of calling git-rev-list"
-msgstr "Ð\98зÑ\87иÑ\82ане Ð½Ð° Ð²ÐµÑ\80Ñ\81ииÑ\82е Ð¾Ñ\82 Ð¤Ð\90Ð\99Ð\9b, а не чрез изпълнение на „git-rev-list“"
+#: builtin/blame.c:888
+msgid "use revisions from <file> instead of calling git-rev-list"
+msgstr "изÑ\87иÑ\82ане Ð½Ð° Ð²ÐµÑ\80Ñ\81ииÑ\82е Ð¾Ñ\82 Ð¤Ð\90Ð\99Ð\9bа, а не чрез изпълнение на „git-rev-list“"
 
-#: builtin/blame.c:891
-msgid "Use <file>'s contents as the final image"
-msgstr "Ð\98зползване на съдържанието на ФАЙЛа като крайно положение"
+#: builtin/blame.c:889
+msgid "use <file>'s contents as the final image"
+msgstr "използване на съдържанието на ФАЙЛа като крайно положение"
 
-#: builtin/blame.c:892 builtin/blame.c:893
+#: builtin/blame.c:890 builtin/blame.c:891
 msgid "score"
 msgstr "напасване на редовете"
 
-#: builtin/blame.c:892
-msgid "Find line copies within and across files"
+#: builtin/blame.c:890
+msgid "find line copies within and across files"
 msgstr ""
-"Търсене на копирани редове както в рамките на един файл, така и от един файл "
+"търсене на копирани редове както в рамките на един файл, така и от един файл "
 "към друг"
 
-#: builtin/blame.c:893
-msgid "Find line movements within and across files"
+#: builtin/blame.c:891
+msgid "find line movements within and across files"
 msgstr ""
-"Търсене на преместени редове както в рамките на един файл, така и от един "
+"търсене на преместени редове както в рамките на един файл, така и от един "
 "файл към друг"
 
-#: builtin/blame.c:894
+#: builtin/blame.c:892
 msgid "range"
 msgstr "диапазон"
 
-#: builtin/blame.c:895
-msgid "Process only line range <start>,<end> or function :<funcname>"
+#: builtin/blame.c:893
+msgid "process only line range <start>,<end> or function :<funcname>"
 msgstr ""
-"Ð\98нформация само за редовете в диапазона НАЧАЛО,КРАЙ или само на :ФУНКЦИЯта"
+"информация само за редовете в диапазона НАЧАЛО,КРАЙ или само на :ФУНКЦИЯта"
 
-#: builtin/blame.c:947
+#: builtin/blame.c:945
 msgid "--progress can't be used with --incremental or porcelain formats"
 msgstr ""
 "опцията „--progress“ е несъвместима с „--incremental“ и форма̀та на командите "
@@ -11212,18 +11526,18 @@ msgstr ""
 #. your language may need more or fewer display
 #. columns.
 #.
-#: builtin/blame.c:998
+#: builtin/blame.c:996
 msgid "4 years, 11 months ago"
 msgstr "преди 4 години и 11 месеца"
 
-#: builtin/blame.c:1114
+#: builtin/blame.c:1112
 #, c-format
 msgid "file %s has only %lu line"
 msgid_plural "file %s has only %lu lines"
 msgstr[0] "има само %2$lu ред във файла „%1$s“"
 msgstr[1] "има само %2$lu реда във файла „%1$s“"
 
-#: builtin/blame.c:1159
+#: builtin/blame.c:1157
 msgid "Blaming lines"
 msgstr "Редове с авторство"
 
@@ -11291,118 +11605,108 @@ msgstr ""
 msgid "Update of config-file failed"
 msgstr "Неуспешно обновяване на конфигурационния файл"
 
-#: builtin/branch.c:220
+#: builtin/branch.c:223
 msgid "cannot use -a with -d"
 msgstr "Опцията „-a“ е несъвместима с опцията „-d“"
 
-#: builtin/branch.c:226
+#: builtin/branch.c:230
 msgid "Couldn't look up commit object for HEAD"
 msgstr "Обектът-подаване, сочен от указателя „HEAD“, не може да бъде открит"
 
-#: builtin/branch.c:240
+#: builtin/branch.c:244
 #, c-format
 msgid "Cannot delete branch '%s' checked out at '%s'"
 msgstr "Не можете да изтриете клона „%s“, който е изтеглен в пътя „%s“"
 
-#: builtin/branch.c:255
+#: builtin/branch.c:259
 #, c-format
 msgid "remote-tracking branch '%s' not found."
 msgstr "следящият клон „%s“ не може да бъде открит."
 
-#: builtin/branch.c:256
+#: builtin/branch.c:260
 #, c-format
 msgid "branch '%s' not found."
 msgstr "клонът „%s“ не може да бъде открит."
 
-#: builtin/branch.c:271
-#, c-format
-msgid "Error deleting remote-tracking branch '%s'"
-msgstr "Грешка при изтриването на следящия клон „%s“"
-
-#: builtin/branch.c:272
-#, c-format
-msgid "Error deleting branch '%s'"
-msgstr "Грешка при изтриването на клона „%s“"
-
-#: builtin/branch.c:279
+#: builtin/branch.c:291
 #, c-format
 msgid "Deleted remote-tracking branch %s (was %s).\n"
 msgstr "Изтрит следящ клон „%s“ (той сочеше към „%s“).\n"
 
-#: builtin/branch.c:280
+#: builtin/branch.c:292
 #, c-format
 msgid "Deleted branch %s (was %s).\n"
 msgstr "Изтрит клон „%s“ (той сочеше към „%s“).\n"
 
-#: builtin/branch.c:429 builtin/tag.c:61
+#: builtin/branch.c:438 builtin/tag.c:61
 msgid "unable to parse format string"
 msgstr "форматиращият низ не може да бъде анализиран: %s"
 
-#: builtin/branch.c:460
+#: builtin/branch.c:469
 msgid "could not resolve HEAD"
 msgstr "подаването, сочено от указателя „HEAD“, не може да се установи"
 
-#: builtin/branch.c:466
+#: builtin/branch.c:475
 #, c-format
 msgid "HEAD (%s) points outside of refs/heads/"
 msgstr "„HEAD“ (%s) сочи извън директорията „refs/heads“"
 
-#: builtin/branch.c:481
+#: builtin/branch.c:490
 #, c-format
 msgid "Branch %s is being rebased at %s"
 msgstr "Клонът „%s“ се пребазира върху „%s“"
 
-#: builtin/branch.c:485
+#: builtin/branch.c:494
 #, c-format
 msgid "Branch %s is being bisected at %s"
 msgstr "Търси се двоично в клона „%s“ при „%s“"
 
-#: builtin/branch.c:502
+#: builtin/branch.c:511
 msgid "cannot copy the current branch while not on any."
 msgstr "не можете да копирате текущия клон, защото сте извън който и да е клон"
 
-#: builtin/branch.c:504
+#: builtin/branch.c:513
 msgid "cannot rename the current branch while not on any."
 msgstr ""
 "не можете да преименувате текущия клон, защото сте извън който и да е клон"
 
-#: builtin/branch.c:515
+#: builtin/branch.c:524
 #, c-format
 msgid "Invalid branch name: '%s'"
 msgstr "Неправилно име на клон: „%s“"
 
-#: builtin/branch.c:544
+#: builtin/branch.c:553
 msgid "Branch rename failed"
 msgstr "Неуспешно преименуване на клон"
 
-#: builtin/branch.c:546
+#: builtin/branch.c:555
 msgid "Branch copy failed"
 msgstr "Неуспешно копиране на клон"
 
-#: builtin/branch.c:550
+#: builtin/branch.c:559
 #, c-format
 msgid "Created a copy of a misnamed branch '%s'"
 msgstr "Клонът с неправилно име „%s“ е копиран"
 
-#: builtin/branch.c:553
+#: builtin/branch.c:562
 #, c-format
 msgid "Renamed a misnamed branch '%s' away"
 msgstr "Клонът с неправилно име „%s“ е преименуван"
 
-#: builtin/branch.c:559
+#: builtin/branch.c:568
 #, c-format
 msgid "Branch renamed to %s, but HEAD is not updated!"
 msgstr "Клонът е преименуван на „%s“, но указателят „HEAD“ не е обновен"
 
-#: builtin/branch.c:568
+#: builtin/branch.c:577
 msgid "Branch is renamed, but update of config-file failed"
 msgstr "Клонът е преименуван, но конфигурационният файл не е обновен"
 
-#: builtin/branch.c:570
+#: builtin/branch.c:579
 msgid "Branch is copied, but update of config-file failed"
 msgstr "Клонът е копиран, но конфигурационният файл не е обновен"
 
-#: builtin/branch.c:586
+#: builtin/branch.c:595
 #, c-format
 msgid ""
 "Please edit the description for the branch\n"
@@ -11413,183 +11717,183 @@ msgstr ""
 "    %s\n"
 "Редовете, които започват с „%c“, ще бъдат пропуснати.\n"
 
-#: builtin/branch.c:620
+#: builtin/branch.c:629
 msgid "Generic options"
 msgstr "Общи настройки"
 
-#: builtin/branch.c:622
+#: builtin/branch.c:631
 msgid "show hash and subject, give twice for upstream branch"
 msgstr ""
 "извеждане на контролната сума и темата.  Повтарянето на опцията прибавя "
 "отдалечените клони"
 
-#: builtin/branch.c:623
+#: builtin/branch.c:632
 msgid "suppress informational messages"
 msgstr "без информационни съобщения"
 
-#: builtin/branch.c:624
+#: builtin/branch.c:633
 msgid "set up tracking mode (see git-pull(1))"
 msgstr "задаване на режима на следене (виж git-pull(1))"
 
-#: builtin/branch.c:626
+#: builtin/branch.c:635
 msgid "do not use"
 msgstr "да не се ползва"
 
-#: builtin/branch.c:628 builtin/rebase.c:532
+#: builtin/branch.c:637 builtin/rebase.c:534
 msgid "upstream"
 msgstr "клон-източник"
 
-#: builtin/branch.c:628
+#: builtin/branch.c:637
 msgid "change the upstream info"
 msgstr "смяна на клона-източник"
 
-#: builtin/branch.c:629
+#: builtin/branch.c:638
 msgid "unset the upstream info"
 msgstr "изчистване на информацията за клон-източник"
 
-#: builtin/branch.c:630
+#: builtin/branch.c:639
 msgid "use colored output"
 msgstr "цветен изход"
 
-#: builtin/branch.c:631
+#: builtin/branch.c:640
 msgid "act on remote-tracking branches"
 msgstr "действие върху следящите клони"
 
-#: builtin/branch.c:633 builtin/branch.c:635
+#: builtin/branch.c:642 builtin/branch.c:644
 msgid "print only branches that contain the commit"
 msgstr "извеждане само на клоните, които съдържат това ПОДАВАНЕ"
 
-#: builtin/branch.c:634 builtin/branch.c:636
+#: builtin/branch.c:643 builtin/branch.c:645
 msgid "print only branches that don't contain the commit"
 msgstr "извеждане само на клоните, които не съдържат това ПОДАВАНЕ"
 
-#: builtin/branch.c:639
+#: builtin/branch.c:648
 msgid "Specific git-branch actions:"
 msgstr "Специални действия на „git-branch“:"
 
-#: builtin/branch.c:640
+#: builtin/branch.c:649
 msgid "list both remote-tracking and local branches"
 msgstr "извеждане както на следящите, така и на локалните клони"
 
-#: builtin/branch.c:642
+#: builtin/branch.c:651
 msgid "delete fully merged branch"
 msgstr "изтриване на клони, които са напълно слети"
 
-#: builtin/branch.c:643
+#: builtin/branch.c:652
 msgid "delete branch (even if not merged)"
 msgstr "изтриване и на клони, които не са напълно слети"
 
-#: builtin/branch.c:644
+#: builtin/branch.c:653
 msgid "move/rename a branch and its reflog"
 msgstr ""
 "преместване/преименуване на клон и принадлежащият му журнал на указателите"
 
-#: builtin/branch.c:645
+#: builtin/branch.c:654
 msgid "move/rename a branch, even if target exists"
 msgstr "преместване/преименуване на клон, дори ако има вече клон с такова име"
 
-#: builtin/branch.c:646
+#: builtin/branch.c:655
 msgid "copy a branch and its reflog"
 msgstr "копиране на клон и принадлежащия му журнал на указателите"
 
-#: builtin/branch.c:647
+#: builtin/branch.c:656
 msgid "copy a branch, even if target exists"
 msgstr "копиране на клон, дори ако има вече клон с такова име"
 
-#: builtin/branch.c:648
+#: builtin/branch.c:657
 msgid "list branch names"
 msgstr "извеждане на имената на клоните"
 
-#: builtin/branch.c:649
+#: builtin/branch.c:658
 msgid "show current branch name"
 msgstr "извеждане на името на текущия клон"
 
-#: builtin/branch.c:650
+#: builtin/branch.c:659
 msgid "create the branch's reflog"
 msgstr "създаване на журнала на указателите на клона"
 
-#: builtin/branch.c:652
+#: builtin/branch.c:661
 msgid "edit the description for the branch"
 msgstr "редактиране на описанието на клона"
 
-#: builtin/branch.c:653
+#: builtin/branch.c:662
 msgid "force creation, move/rename, deletion"
 msgstr "принудително създаване, преместване, преименуване, изтриване"
 
-#: builtin/branch.c:654
+#: builtin/branch.c:663
 msgid "print only branches that are merged"
 msgstr "извеждане само на слетите клони"
 
-#: builtin/branch.c:655
+#: builtin/branch.c:664
 msgid "print only branches that are not merged"
 msgstr "извеждане само на неслетите клони"
 
-#: builtin/branch.c:656
+#: builtin/branch.c:665
 msgid "list branches in columns"
 msgstr "извеждане по колони"
 
-#: builtin/branch.c:658 builtin/for-each-ref.c:42 builtin/notes.c:415
+#: builtin/branch.c:667 builtin/for-each-ref.c:42 builtin/notes.c:415
 #: builtin/notes.c:418 builtin/notes.c:581 builtin/notes.c:584
-#: builtin/tag.c:434
+#: builtin/tag.c:466
 msgid "object"
 msgstr "ОБЕКТ"
 
-#: builtin/branch.c:659
+#: builtin/branch.c:668
 msgid "print only branches of the object"
 msgstr "извеждане само на клоните на ОБЕКТА"
 
-#: builtin/branch.c:660 builtin/for-each-ref.c:48 builtin/tag.c:441
+#: builtin/branch.c:669 builtin/for-each-ref.c:48 builtin/tag.c:473
 msgid "sorting and filtering are case insensitive"
 msgstr "подредбата и филтрирането третират еднакво малките и главните букви"
 
-#: builtin/branch.c:661 builtin/for-each-ref.c:38 builtin/tag.c:439
+#: builtin/branch.c:670 builtin/for-each-ref.c:38 builtin/tag.c:471
 #: builtin/verify-tag.c:38
 msgid "format to use for the output"
 msgstr "ФОРМАТ за изхода"
 
-#: builtin/branch.c:684 builtin/clone.c:790
+#: builtin/branch.c:693 builtin/clone.c:790
 msgid "HEAD not found below refs/heads!"
 msgstr "В директорията „refs/heads“ липсва файл „HEAD“"
 
-#: builtin/branch.c:708
+#: builtin/branch.c:717
 msgid "--column and --verbose are incompatible"
 msgstr "Опциите „--column“ и „--verbose“ са несъвместими"
 
-#: builtin/branch.c:723 builtin/branch.c:777 builtin/branch.c:786
+#: builtin/branch.c:732 builtin/branch.c:788 builtin/branch.c:797
 msgid "branch name required"
 msgstr "Необходимо е име на клон"
 
-#: builtin/branch.c:753
+#: builtin/branch.c:764
 msgid "Cannot give description to detached HEAD"
 msgstr "Не може да зададете описание на несвързан „HEAD“"
 
-#: builtin/branch.c:758
+#: builtin/branch.c:769
 msgid "cannot edit description of more than one branch"
 msgstr "Не може да редактирате описанието на повече от един клон едновременно"
 
-#: builtin/branch.c:765
+#: builtin/branch.c:776
 #, c-format
 msgid "No commit on branch '%s' yet."
 msgstr "В клона „%s“ все още няма подавания."
 
-#: builtin/branch.c:768
+#: builtin/branch.c:779
 #, c-format
 msgid "No branch named '%s'."
 msgstr "Липсва клон на име „%s“."
 
-#: builtin/branch.c:783
+#: builtin/branch.c:794
 msgid "too many branches for a copy operation"
 msgstr "прекалено много клони за копиране"
 
-#: builtin/branch.c:792
+#: builtin/branch.c:803
 msgid "too many arguments for a rename operation"
 msgstr "прекалено много аргументи към командата за преименуване"
 
-#: builtin/branch.c:797
+#: builtin/branch.c:808
 msgid "too many arguments to set new upstream"
 msgstr "прекалено много аргументи към командата за следене"
 
-#: builtin/branch.c:801
+#: builtin/branch.c:812
 #, c-format
 msgid ""
 "could not set upstream of HEAD to %s when it does not point to any branch."
@@ -11597,31 +11901,31 @@ msgstr ""
 "Следеното от „HEAD“ не може да се зададе да е „%s“, защото то не сочи към "
 "никой клон."
 
-#: builtin/branch.c:804 builtin/branch.c:827
+#: builtin/branch.c:815 builtin/branch.c:838
 #, c-format
 msgid "no such branch '%s'"
 msgstr "Няма клон на име „%s“."
 
-#: builtin/branch.c:808
+#: builtin/branch.c:819
 #, c-format
 msgid "branch '%s' does not exist"
 msgstr "Не съществува клон на име „%s“."
 
-#: builtin/branch.c:821
+#: builtin/branch.c:832
 msgid "too many arguments to unset upstream"
 msgstr "прекалено много аргументи към командата за спиране на следене"
 
-#: builtin/branch.c:825
+#: builtin/branch.c:836
 msgid "could not unset upstream of HEAD when it does not point to any branch."
 msgstr ""
 "Следеното от „HEAD“ не може да махне, защото то не сочи към никой клон."
 
-#: builtin/branch.c:831
+#: builtin/branch.c:842
 #, c-format
 msgid "Branch '%s' has no upstream information"
 msgstr "Няма информация клонът „%s“ да следи някой друг"
 
-#: builtin/branch.c:841
+#: builtin/branch.c:852
 msgid ""
 "The -a, and -r, options to 'git branch' do not take a branch name.\n"
 "Did you mean to use: -a|-r --list <pattern>?"
@@ -11629,7 +11933,7 @@ msgstr ""
 "Опциите „-a“ и „-r“ на „git branch“ са несъвместими с име на клон.\n"
 "Пробвайте с: „-a|-r --list ШАБЛОН“"
 
-#: builtin/branch.c:845
+#: builtin/branch.c:856
 msgid ""
 "the '--set-upstream' option is no longer supported. Please use '--track' or "
 "'--set-upstream-to' instead."
@@ -11750,19 +12054,19 @@ msgstr "git bundle list-heads ФАЙЛ [ИМЕ_НА_УКАЗАТЕЛ…]"
 msgid "git bundle unbundle <file> [<refname>...]"
 msgstr "git bundle unbundle ФАЙЛ [ИМЕ_НА_УКАЗАТЕЛ…]"
 
-#: builtin/bundle.c:67 builtin/pack-objects.c:3480
+#: builtin/bundle.c:67 builtin/pack-objects.c:3495
 msgid "do not show progress meter"
 msgstr "без извеждане на напредъка"
 
-#: builtin/bundle.c:69 builtin/pack-objects.c:3482
+#: builtin/bundle.c:69 builtin/pack-objects.c:3497
 msgid "show progress meter"
 msgstr "извеждане на напредъка"
 
-#: builtin/bundle.c:71 builtin/pack-objects.c:3484
+#: builtin/bundle.c:71 builtin/pack-objects.c:3499
 msgid "show progress meter during object writing phase"
 msgstr "извеждане на напредъка във фазата на запазване на обектите"
 
-#: builtin/bundle.c:74 builtin/pack-objects.c:3487
+#: builtin/bundle.c:74 builtin/pack-objects.c:3502
 msgid "similar to --all-progress when progress meter is shown"
 msgstr ""
 "същото действие като опцията „--all-progress“ при извеждането на напредъка"
@@ -11913,8 +12217,8 @@ msgstr "изчитане на имената на файловете от ста
 msgid "terminate input and output records by a NUL character"
 msgstr "разделяне на входните и изходните записи с нулевия знак „NUL“"
 
-#: builtin/check-ignore.c:21 builtin/checkout.c:1500 builtin/gc.c:541
-#: builtin/worktree.c:561
+#: builtin/check-ignore.c:21 builtin/checkout.c:1499 builtin/gc.c:549
+#: builtin/worktree.c:489
 msgid "suppress progress reporting"
 msgstr "без показване на напредъка"
 
@@ -11967,54 +12271,54 @@ msgstr "контактът не може да бъде анализиран: %s"
 msgid "no contacts specified"
 msgstr "не са указани контакти"
 
-#: builtin/checkout-index.c:139
+#: builtin/checkout-index.c:152
 msgid "git checkout-index [<options>] [--] [<file>...]"
 msgstr "git checkout-index [ОПЦИЯ…] [--] [ФАЙЛ…]"
 
-#: builtin/checkout-index.c:156
+#: builtin/checkout-index.c:169
 msgid "stage should be between 1 and 3 or all"
 msgstr "етапът трябва да е „1“, „2“, „3“ или „all“ (всички)"
 
-#: builtin/checkout-index.c:173
+#: builtin/checkout-index.c:186
 msgid "check out all files in the index"
 msgstr "изтегляне на всички файлове в индекса"
 
-#: builtin/checkout-index.c:174
+#: builtin/checkout-index.c:187
 msgid "force overwrite of existing files"
 msgstr "презаписване на файловете, дори и да съществуват"
 
-#: builtin/checkout-index.c:176
+#: builtin/checkout-index.c:189
 msgid "no warning for existing files and files not in index"
 msgstr "без предупреждения при липсващи файлове и файлове не в индекса"
 
-#: builtin/checkout-index.c:178
+#: builtin/checkout-index.c:191
 msgid "don't checkout new files"
 msgstr "без изтегляне на нови файлове"
 
-#: builtin/checkout-index.c:180
+#: builtin/checkout-index.c:193
 msgid "update stat information in the index file"
 msgstr "обновяване на информацията получена чрез „stat“ за файловете в индекса"
 
-#: builtin/checkout-index.c:184
+#: builtin/checkout-index.c:197
 msgid "read list of paths from the standard input"
 msgstr "изчитане на пътищата от стандартния вход"
 
-#: builtin/checkout-index.c:186
+#: builtin/checkout-index.c:199
 msgid "write the content to temporary files"
 msgstr "записване на съдържанието във временни файлове"
 
-#: builtin/checkout-index.c:187 builtin/column.c:31
+#: builtin/checkout-index.c:200 builtin/column.c:31
 #: builtin/submodule--helper.c:1824 builtin/submodule--helper.c:1827
 #: builtin/submodule--helper.c:1835 builtin/submodule--helper.c:2333
-#: builtin/worktree.c:757
+#: builtin/worktree.c:717
 msgid "string"
 msgstr "НИЗ"
 
-#: builtin/checkout-index.c:188
+#: builtin/checkout-index.c:201
 msgid "when creating files, prepend <string>"
 msgstr "при създаването на нови файлове да се добавя префикса НИЗ"
 
-#: builtin/checkout-index.c:190
+#: builtin/checkout-index.c:203
 msgid "copy out the files from named stage"
 msgstr "копиране на файловете от това състояние на сливане"
 
@@ -12117,16 +12421,16 @@ msgstr "опцията „%s“ е задължителна, когато „%s
 msgid "'%s' or '%s' cannot be used with %s"
 msgstr "опцията „%3$s“ е несъвместима както с „%1$s“, така и с „%2$s“"
 
-#: builtin/checkout.c:541 builtin/checkout.c:548
+#: builtin/checkout.c:543 builtin/checkout.c:550
 #, c-format
 msgid "path '%s' is unmerged"
 msgstr "пътят „%s“ не е слят"
 
-#: builtin/checkout.c:716
+#: builtin/checkout.c:718
 msgid "you need to resolve your current index first"
 msgstr "първо трябва да коригирате индекса си"
 
-#: builtin/checkout.c:770
+#: builtin/checkout.c:772
 #, c-format
 msgid ""
 "cannot continue with staged changes in the following files:\n"
@@ -12136,50 +12440,50 @@ msgstr ""
 "индекса:\n"
 "%s"
 
-#: builtin/checkout.c:866
+#: builtin/checkout.c:865
 #, c-format
 msgid "Can not do reflog for '%s': %s\n"
 msgstr "Журналът на указателите за „%s“ не може да се проследи: %s\n"
 
-#: builtin/checkout.c:908
+#: builtin/checkout.c:907
 msgid "HEAD is now at"
 msgstr "Указателят „HEAD“ в момента сочи към"
 
-#: builtin/checkout.c:912 builtin/clone.c:721 t/helper/test-fast-rebase.c:202
+#: builtin/checkout.c:911 builtin/clone.c:721 t/helper/test-fast-rebase.c:202
 msgid "unable to update HEAD"
 msgstr "Указателят „HEAD“ не може да бъде обновен"
 
-#: builtin/checkout.c:916
+#: builtin/checkout.c:915
 #, c-format
 msgid "Reset branch '%s'\n"
 msgstr "Зануляване на клона „%s“\n"
 
-#: builtin/checkout.c:919
+#: builtin/checkout.c:918
 #, c-format
 msgid "Already on '%s'\n"
 msgstr "Вече сте на „%s“\n"
 
-#: builtin/checkout.c:923
+#: builtin/checkout.c:922
 #, c-format
 msgid "Switched to and reset branch '%s'\n"
 msgstr "Преминаване към клона „%s“ и зануляване на промените\n"
 
-#: builtin/checkout.c:925 builtin/checkout.c:1356
+#: builtin/checkout.c:924 builtin/checkout.c:1355
 #, c-format
 msgid "Switched to a new branch '%s'\n"
 msgstr "Преминахте към новия клон „%s“\n"
 
-#: builtin/checkout.c:927
+#: builtin/checkout.c:926
 #, c-format
 msgid "Switched to branch '%s'\n"
 msgstr "Преминахте към клона „%s“\n"
 
-#: builtin/checkout.c:978
+#: builtin/checkout.c:977
 #, c-format
 msgid " ... and %d more.\n"
 msgstr "… и още %d.\n"
 
-#: builtin/checkout.c:984
+#: builtin/checkout.c:983
 #, c-format
 msgid ""
 "Warning: you are leaving %d commit behind, not connected to\n"
@@ -12201,7 +12505,7 @@ msgstr[1] ""
 "\n"
 "%s\n"
 
-#: builtin/checkout.c:1003
+#: builtin/checkout.c:1002
 #, c-format
 msgid ""
 "If you want to keep it by creating a new branch, this may be a good time\n"
@@ -12228,19 +12532,19 @@ msgstr[1] ""
 "    git branch ИМЕ_НА_НОВИЯ_КЛОН %s\n"
 "\n"
 
-#: builtin/checkout.c:1038
+#: builtin/checkout.c:1037
 msgid "internal error in revision walk"
 msgstr "вътрешна грешка при обхождането на версиите"
 
-#: builtin/checkout.c:1042
+#: builtin/checkout.c:1041
 msgid "Previous HEAD position was"
 msgstr "Преди това „HEAD“ сочеше към"
 
-#: builtin/checkout.c:1082 builtin/checkout.c:1351
+#: builtin/checkout.c:1081 builtin/checkout.c:1350
 msgid "You are on a branch yet to be born"
 msgstr "В момента сте на клон, който все още не е създаден"
 
-#: builtin/checkout.c:1164
+#: builtin/checkout.c:1163
 #, c-format
 msgid ""
 "'%s' could be both a local file and a tracking branch.\n"
@@ -12249,7 +12553,7 @@ msgstr ""
 "„%s“ може да е както локален файл, така и следящ клон.  За уточняване\n"
 "ползвайте разделителя „--“ (и евентуално опцията „--no-guess“)"
 
-#: builtin/checkout.c:1171
+#: builtin/checkout.c:1170
 msgid ""
 "If you meant to check out a remote tracking branch on, e.g. 'origin',\n"
 "you can do so by fully qualifying the name with the --track option:\n"
@@ -12271,51 +12575,51 @@ msgstr ""
 "\n"
 "    checkout.defaultRemote=origin"
 
-#: builtin/checkout.c:1181
+#: builtin/checkout.c:1180
 #, c-format
 msgid "'%s' matched multiple (%d) remote tracking branches"
 msgstr "„%s“ напасва с множество (%d) отдалечени клони"
 
-#: builtin/checkout.c:1247
+#: builtin/checkout.c:1246
 msgid "only one reference expected"
 msgstr "очаква се само един указател"
 
-#: builtin/checkout.c:1264
+#: builtin/checkout.c:1263
 #, c-format
 msgid "only one reference expected, %d given."
 msgstr "очаква се един указател, а сте подали %d."
 
-#: builtin/checkout.c:1310 builtin/worktree.c:342 builtin/worktree.c:510
+#: builtin/checkout.c:1309 builtin/worktree.c:270 builtin/worktree.c:438
 #, c-format
 msgid "invalid reference: %s"
 msgstr "неправилен указател: %s"
 
-#: builtin/checkout.c:1323 builtin/checkout.c:1689
+#: builtin/checkout.c:1322 builtin/checkout.c:1688
 #, c-format
 msgid "reference is not a tree: %s"
 msgstr "указателят не сочи към обект-дърво: %s"
 
-#: builtin/checkout.c:1370
+#: builtin/checkout.c:1369
 #, c-format
 msgid "a branch is expected, got tag '%s'"
 msgstr "очаква се клон, а не етикет — „%s“"
 
-#: builtin/checkout.c:1372
+#: builtin/checkout.c:1371
 #, c-format
 msgid "a branch is expected, got remote branch '%s'"
 msgstr "очаква се локален, а не отдалечен клон — „%s“"
 
-#: builtin/checkout.c:1373 builtin/checkout.c:1381
+#: builtin/checkout.c:1372 builtin/checkout.c:1380
 #, c-format
 msgid "a branch is expected, got '%s'"
 msgstr "очаква се клон, а не „%s“"
 
-#: builtin/checkout.c:1376
+#: builtin/checkout.c:1375
 #, c-format
 msgid "a branch is expected, got commit '%s'"
 msgstr "очаква се клон, а не подаване — „%s“"
 
-#: builtin/checkout.c:1392
+#: builtin/checkout.c:1391
 msgid ""
 "cannot switch branch while merging\n"
 "Consider \"git merge --quit\" or \"git worktree add\"."
@@ -12323,7 +12627,7 @@ msgstr ""
 "по време на сливане не може да преминете към друг клон.\n"
 "Пробвайте с „git merge --quit“ или „git worktree add“."
 
-#: builtin/checkout.c:1396
+#: builtin/checkout.c:1395
 msgid ""
 "cannot switch branch in the middle of an am session\n"
 "Consider \"git am --quit\" or \"git worktree add\"."
@@ -12332,7 +12636,7 @@ msgstr ""
 "клон.\n"
 "Пробвайте с „git am --quit“ или „git worktree add“."
 
-#: builtin/checkout.c:1400
+#: builtin/checkout.c:1399
 msgid ""
 "cannot switch branch while rebasing\n"
 "Consider \"git rebase --quit\" or \"git worktree add\"."
@@ -12340,7 +12644,7 @@ msgstr ""
 "по време на пребазиране не може да преминете към друг клон.\n"
 "Пробвайте с „git rebase --quit“ или „git worktree add“."
 
-#: builtin/checkout.c:1404
+#: builtin/checkout.c:1403
 msgid ""
 "cannot switch branch while cherry-picking\n"
 "Consider \"git cherry-pick --quit\" or \"git worktree add\"."
@@ -12348,7 +12652,7 @@ msgstr ""
 "по време на отбиране на подавания не може да преминете към друг клон.\n"
 "Пробвайте с „git cherry-pick --quit“ или „git worktree add“."
 
-#: builtin/checkout.c:1408
+#: builtin/checkout.c:1407
 msgid ""
 "cannot switch branch while reverting\n"
 "Consider \"git revert --quit\" or \"git worktree add\"."
@@ -12356,146 +12660,139 @@ msgstr ""
 "по време на отмяна на подавания не може да преминете към друг клон.\n"
 "Пробвайте с „git revert --quit“ или „git worktree add“."
 
-#: builtin/checkout.c:1412
+#: builtin/checkout.c:1411
 msgid "you are switching branch while bisecting"
 msgstr "преминаване към друг клон по време на двоично търсене"
 
-#: builtin/checkout.c:1419
+#: builtin/checkout.c:1418
 msgid "paths cannot be used with switching branches"
 msgstr "задаването на път е несъвместимо с преминаването от един клон към друг"
 
-#: builtin/checkout.c:1422 builtin/checkout.c:1426 builtin/checkout.c:1430
+#: builtin/checkout.c:1421 builtin/checkout.c:1425 builtin/checkout.c:1429
 #, c-format
 msgid "'%s' cannot be used with switching branches"
 msgstr "опцията „%s“ е несъвместима с преминаването от един клон към друг"
 
-#: builtin/checkout.c:1434 builtin/checkout.c:1437 builtin/checkout.c:1440
-#: builtin/checkout.c:1445 builtin/checkout.c:1450
+#: builtin/checkout.c:1433 builtin/checkout.c:1436 builtin/checkout.c:1439
+#: builtin/checkout.c:1444 builtin/checkout.c:1449
 #, c-format
 msgid "'%s' cannot be used with '%s'"
 msgstr "опцията „%s“ е несъвместима с „%s“"
 
-#: builtin/checkout.c:1447
+#: builtin/checkout.c:1446
 #, c-format
 msgid "'%s' cannot take <start-point>"
 msgstr "опцията „%s“ е несъвместима със задаването на НАЧАЛО"
 
-#: builtin/checkout.c:1455
+#: builtin/checkout.c:1454
 #, c-format
 msgid "Cannot switch branch to a non-commit '%s'"
 msgstr ""
 "За да преминете към клон, подайте указател, който сочи към подаване.  „%s“ "
 "не е такъв"
 
-#: builtin/checkout.c:1462
+#: builtin/checkout.c:1461
 msgid "missing branch or commit argument"
 msgstr "липсва аргумент — клон или подаване"
 
-#: builtin/checkout.c:1504 builtin/clone.c:92 builtin/commit-graph.c:84
-#: builtin/commit-graph.c:222 builtin/fetch.c:172 builtin/merge.c:296
-#: builtin/multi-pack-index.c:27 builtin/pull.c:119 builtin/push.c:575
-#: builtin/send-pack.c:198
-msgid "force progress reporting"
-msgstr "извеждане на напредъка"
-
-#: builtin/checkout.c:1505
+#: builtin/checkout.c:1504
 msgid "perform a 3-way merge with the new branch"
 msgstr "извършване на тройно сливане с новия клон"
 
-#: builtin/checkout.c:1506 builtin/log.c:1800 parse-options.h:322
+#: builtin/checkout.c:1505 builtin/log.c:1799 parse-options.h:322
 msgid "style"
 msgstr "СТИЛ"
 
-#: builtin/checkout.c:1507
+#: builtin/checkout.c:1506
 msgid "conflict style (merge or diff3)"
 msgstr "действие при конфликт (сливане или тройна разлика)"
 
-#: builtin/checkout.c:1519 builtin/worktree.c:558
+#: builtin/checkout.c:1518 builtin/worktree.c:486
 msgid "detach HEAD at named commit"
 msgstr "отделяне на указателя „HEAD“ към указаното подаване"
 
-#: builtin/checkout.c:1520
+#: builtin/checkout.c:1519
 msgid "set upstream info for new branch"
 msgstr "задаване на кой клон бива следен при създаването на новия клон"
 
-#: builtin/checkout.c:1522
+#: builtin/checkout.c:1521
 msgid "force checkout (throw away local modifications)"
 msgstr "принудително изтегляне (вашите промени ще бъдат занулени)"
 
-#: builtin/checkout.c:1524
+#: builtin/checkout.c:1523
 msgid "new-branch"
 msgstr "НОВ_КЛОН"
 
-#: builtin/checkout.c:1524
+#: builtin/checkout.c:1523
 msgid "new unparented branch"
 msgstr "нов клон без родител"
 
-#: builtin/checkout.c:1526 builtin/merge.c:300
+#: builtin/checkout.c:1525 builtin/merge.c:301
 msgid "update ignored files (default)"
 msgstr "обновяване на игнорираните файлове (стандартно)"
 
-#: builtin/checkout.c:1529
+#: builtin/checkout.c:1528
 msgid "do not check if another worktree is holding the given ref"
 msgstr "без проверка дали друго работно дърво държи указателя"
 
-#: builtin/checkout.c:1542
+#: builtin/checkout.c:1541
 msgid "checkout our version for unmerged files"
 msgstr "изтегляне на вашата версия на неслетите файлове"
 
-#: builtin/checkout.c:1545
+#: builtin/checkout.c:1544
 msgid "checkout their version for unmerged files"
 msgstr "изтегляне на чуждата версия на неслетите файлове"
 
-#: builtin/checkout.c:1549
+#: builtin/checkout.c:1548
 msgid "do not limit pathspecs to sparse entries only"
 msgstr "без ограничаване на изброените пътища само до частично изтеглените"
 
-#: builtin/checkout.c:1604
+#: builtin/checkout.c:1603
 #, c-format
 msgid "-%c, -%c and --orphan are mutually exclusive"
 msgstr "Опциите „-%c“, „-%c“ и „--orphan“ са несъвместими една с друга"
 
-#: builtin/checkout.c:1608
+#: builtin/checkout.c:1607
 msgid "-p and --overlay are mutually exclusive"
 msgstr "опциите „-p“ и „--overlay“ са несъвместими"
 
-#: builtin/checkout.c:1645
+#: builtin/checkout.c:1644
 msgid "--track needs a branch name"
 msgstr "опцията „--track“ изисква име на клон"
 
-#: builtin/checkout.c:1650
+#: builtin/checkout.c:1649
 #, c-format
 msgid "missing branch name; try -%c"
 msgstr "липсва име на клон, използвайте опцията „-%c“"
 
-#: builtin/checkout.c:1682
+#: builtin/checkout.c:1681
 #, c-format
 msgid "could not resolve %s"
 msgstr "„%s“ не може да бъде открит"
 
-#: builtin/checkout.c:1698
+#: builtin/checkout.c:1697
 msgid "invalid path specification"
 msgstr "указан е неправилен път"
 
-#: builtin/checkout.c:1705
+#: builtin/checkout.c:1704
 #, c-format
 msgid "'%s' is not a commit and a branch '%s' cannot be created from it"
 msgstr "„%s“ не е подаване, затова от него не може да се създаде клон „%s“"
 
-#: builtin/checkout.c:1709
+#: builtin/checkout.c:1708
 #, c-format
 msgid "git checkout: --detach does not take a path argument '%s'"
 msgstr "git checkout: опцията „--detach“ не приема аргумент-път „%s“"
 
-#: builtin/checkout.c:1718
+#: builtin/checkout.c:1717
 msgid "--pathspec-from-file is incompatible with --detach"
 msgstr "опциите „--pathspec-from-file“ и „--detach“ са несъвместими"
 
-#: builtin/checkout.c:1721 builtin/reset.c:325 builtin/stash.c:1499
+#: builtin/checkout.c:1720 builtin/reset.c:325 builtin/stash.c:1566
 msgid "--pathspec-from-file is incompatible with --patch"
 msgstr "опциите „--pathspec-from-file“ и „--patch“ са несъвместими"
 
-#: builtin/checkout.c:1734
+#: builtin/checkout.c:1733
 msgid ""
 "git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
 "checking out of the index."
@@ -12503,74 +12800,74 @@ msgstr ""
 "git checkout: опциите „--ours“/„--theirs“, „--force“ и „--merge“\n"
 "са несъвместими с изтегляне от индекса."
 
-#: builtin/checkout.c:1739
+#: builtin/checkout.c:1738
 msgid "you must specify path(s) to restore"
 msgstr "трябва да укажете поне един път за възстановяване"
 
-#: builtin/checkout.c:1765 builtin/checkout.c:1767 builtin/checkout.c:1816
-#: builtin/checkout.c:1818 builtin/clone.c:122 builtin/remote.c:170
-#: builtin/remote.c:172 builtin/submodule--helper.c:2719 builtin/worktree.c:554
-#: builtin/worktree.c:556
+#: builtin/checkout.c:1764 builtin/checkout.c:1766 builtin/checkout.c:1815
+#: builtin/checkout.c:1817 builtin/clone.c:122 builtin/remote.c:170
+#: builtin/remote.c:172 builtin/submodule--helper.c:2719 builtin/worktree.c:482
+#: builtin/worktree.c:484
 msgid "branch"
 msgstr "клон"
 
-#: builtin/checkout.c:1766
+#: builtin/checkout.c:1765
 msgid "create and checkout a new branch"
 msgstr "създаване и преминаване към нов клон"
 
-#: builtin/checkout.c:1768
+#: builtin/checkout.c:1767
 msgid "create/reset and checkout a branch"
 msgstr "създаване/зануляване на клон и преминаване към него"
 
-#: builtin/checkout.c:1769
+#: builtin/checkout.c:1768
 msgid "create reflog for new branch"
 msgstr "създаване на журнал на указателите за нов клон"
 
-#: builtin/checkout.c:1771
+#: builtin/checkout.c:1770
 msgid "second guess 'git checkout <no-such-branch>' (default)"
 msgstr ""
 "опит за отгатване на име на клон след неуспешен опит с „git checkout "
 "НЕСЪЩЕСТВУВАЩ_КЛОН“ (стандартно)"
 
-#: builtin/checkout.c:1772
+#: builtin/checkout.c:1771
 msgid "use overlay mode (default)"
 msgstr "използване на припокриващ режим (стандартно)"
 
-#: builtin/checkout.c:1817
+#: builtin/checkout.c:1816
 msgid "create and switch to a new branch"
 msgstr "създаване и преминаване към нов клон"
 
-#: builtin/checkout.c:1819
+#: builtin/checkout.c:1818
 msgid "create/reset and switch to a branch"
 msgstr "създаване/зануляване на клон и преминаване към него"
 
-#: builtin/checkout.c:1821
+#: builtin/checkout.c:1820
 msgid "second guess 'git switch <no-such-branch>'"
 msgstr ""
 "опит за отгатване на име на клон след неуспешен опит с „git switch "
 "НЕСЪЩЕСТВУВАЩ_КЛОН“"
 
-#: builtin/checkout.c:1823
+#: builtin/checkout.c:1822
 msgid "throw away local modifications"
 msgstr "зануляване на локалните промени"
 
-#: builtin/checkout.c:1857
+#: builtin/checkout.c:1856
 msgid "which tree-ish to checkout from"
 msgstr "към кой указател към дърво да се премине"
 
-#: builtin/checkout.c:1859
+#: builtin/checkout.c:1858
 msgid "restore the index"
 msgstr "възстановяване на индекса"
 
-#: builtin/checkout.c:1861
+#: builtin/checkout.c:1860
 msgid "restore the working tree (default)"
 msgstr "възстановяване на работното дърво (стандартно)"
 
-#: builtin/checkout.c:1863
+#: builtin/checkout.c:1862
 msgid "ignore unmerged entries"
 msgstr "пренебрегване на неслетите елементи"
 
-#: builtin/checkout.c:1864
+#: builtin/checkout.c:1863
 msgid "use overlay mode"
 msgstr "използване на припокриващ режим"
 
@@ -12714,8 +13011,8 @@ msgid "remove whole directories"
 msgstr "изтриване на цели директории"
 
 #: builtin/clean.c:909 builtin/describe.c:565 builtin/describe.c:567
-#: builtin/grep.c:921 builtin/log.c:183 builtin/log.c:185
-#: builtin/ls-files.c:558 builtin/name-rev.c:526 builtin/name-rev.c:528
+#: builtin/grep.c:922 builtin/log.c:184 builtin/log.c:186
+#: builtin/ls-files.c:573 builtin/name-rev.c:526 builtin/name-rev.c:528
 #: builtin/show-ref.c:179
 msgid "pattern"
 msgstr "ШАБЛОН"
@@ -12813,7 +13110,7 @@ msgid "use --reference only while cloning"
 msgstr "опцията „--reference“ може да се използва само при клониране"
 
 #: builtin/clone.c:120 builtin/column.c:27 builtin/init-db.c:563
-#: builtin/merge-file.c:46 builtin/pack-objects.c:3546 builtin/repack.c:358
+#: builtin/merge-file.c:46 builtin/pack-objects.c:3561 builtin/repack.c:357
 msgid "name"
 msgstr "ИМЕ"
 
@@ -12829,7 +13126,7 @@ msgstr "изтегляне на този КЛОН, а не соченият от
 msgid "path to git-upload-pack on the remote"
 msgstr "път към командата „git-upload-pack“ на отдалеченото хранилище"
 
-#: builtin/clone.c:126 builtin/fetch.c:173 builtin/grep.c:860
+#: builtin/clone.c:126 builtin/fetch.c:176 builtin/grep.c:861
 #: builtin/pull.c:208
 msgid "depth"
 msgstr "ДЪЛБОЧИНА"
@@ -12838,7 +13135,7 @@ msgstr "ДЪЛБОЧИНА"
 msgid "create a shallow clone of that depth"
 msgstr "плитко клониране до тази ДЪЛБОЧИНА"
 
-#: builtin/clone.c:128 builtin/fetch.c:175 builtin/pack-objects.c:3535
+#: builtin/clone.c:128 builtin/fetch.c:178 builtin/pack-objects.c:3550
 #: builtin/pull.c:211
 msgid "time"
 msgstr "ВРЕМЕ"
@@ -12847,12 +13144,12 @@ msgstr "ВРЕМЕ"
 msgid "create a shallow clone since a specific time"
 msgstr "плитко клониране до момент във времето"
 
-#: builtin/clone.c:130 builtin/fetch.c:177 builtin/fetch.c:200
-#: builtin/pull.c:214 builtin/pull.c:239 builtin/rebase.c:1317
+#: builtin/clone.c:130 builtin/fetch.c:180 builtin/fetch.c:203
+#: builtin/pull.c:214 builtin/pull.c:239 builtin/rebase.c:1323
 msgid "revision"
 msgstr "ВЕРСИЯ"
 
-#: builtin/clone.c:131 builtin/fetch.c:178 builtin/pull.c:215
+#: builtin/clone.c:131 builtin/fetch.c:181 builtin/pull.c:215
 msgid "deepen history of shallow clone, excluding rev"
 msgstr "задълбочаване на историята на плитко хранилище до изключващ указател"
 
@@ -12888,22 +13185,22 @@ msgstr "КЛЮЧ=СТОЙНОСТ"
 msgid "set config inside the new repository"
 msgstr "задаване на настройките на новото хранилище"
 
-#: builtin/clone.c:143 builtin/fetch.c:195 builtin/ls-remote.c:76
+#: builtin/clone.c:143 builtin/fetch.c:198 builtin/ls-remote.c:77
 #: builtin/pull.c:230 builtin/push.c:584 builtin/send-pack.c:196
 msgid "server-specific"
 msgstr "специфични за сървъра"
 
-#: builtin/clone.c:143 builtin/fetch.c:195 builtin/ls-remote.c:76
+#: builtin/clone.c:143 builtin/fetch.c:198 builtin/ls-remote.c:77
 #: builtin/pull.c:231 builtin/push.c:584 builtin/send-pack.c:197
 msgid "option to transmit"
 msgstr "опция за пренос"
 
-#: builtin/clone.c:144 builtin/fetch.c:196 builtin/pull.c:234
+#: builtin/clone.c:144 builtin/fetch.c:199 builtin/pull.c:234
 #: builtin/push.c:585
 msgid "use IPv4 addresses only"
 msgstr "само адреси IPv4"
 
-#: builtin/clone.c:146 builtin/fetch.c:198 builtin/pull.c:237
+#: builtin/clone.c:146 builtin/fetch.c:201 builtin/pull.c:237
 #: builtin/push.c:587
 msgid "use IPv6 addresses only"
 msgstr "само адреси IPv6"
@@ -13013,70 +13310,70 @@ msgstr "не може да се извърши пакетиране за изч
 msgid "cannot unlink temporary alternates file"
 msgstr "временният файл за алтернативни обекти не може да бъде изтрит"
 
-#: builtin/clone.c:992 builtin/receive-pack.c:2493
+#: builtin/clone.c:993 builtin/receive-pack.c:2493
 msgid "Too many arguments."
 msgstr "Прекалено много аргументи."
 
-#: builtin/clone.c:996
+#: builtin/clone.c:997
 msgid "You must specify a repository to clone."
 msgstr "Трябва да укажете кое хранилище искате да клонирате."
 
-#: builtin/clone.c:1009
+#: builtin/clone.c:1010
 #, c-format
 msgid "--bare and --origin %s options are incompatible."
 msgstr "опциите „--bare“ и „--origin %s“ са несъвместими."
 
-#: builtin/clone.c:1012
+#: builtin/clone.c:1013
 msgid "--bare and --separate-git-dir are incompatible."
 msgstr "опциите „--bare“ и „--separate-git-dir“ са несъвместими."
 
-#: builtin/clone.c:1025
+#: builtin/clone.c:1026
 #, c-format
 msgid "repository '%s' does not exist"
 msgstr "не съществува хранилище „%s“"
 
-#: builtin/clone.c:1029 builtin/fetch.c:1841
+#: builtin/clone.c:1030 builtin/fetch.c:1951
 #, c-format
 msgid "depth %s is not a positive number"
 msgstr "дълбочината трябва да е положително цяло число, а не „%s“"
 
-#: builtin/clone.c:1039
+#: builtin/clone.c:1040
 #, c-format
 msgid "destination path '%s' already exists and is not an empty directory."
 msgstr "целевият път „%s“ съществува и не е празна директория."
 
-#: builtin/clone.c:1045
+#: builtin/clone.c:1046
 #, c-format
 msgid "repository path '%s' already exists and is not an empty directory."
 msgstr "пътят в хранилището „%s“ съществува и не е празна директория."
 
-#: builtin/clone.c:1059
+#: builtin/clone.c:1060
 #, c-format
 msgid "working tree '%s' already exists."
 msgstr "в „%s“ вече съществува работно дърво."
 
-#: builtin/clone.c:1074 builtin/clone.c:1095 builtin/difftool.c:271
-#: builtin/log.c:1987 builtin/worktree.c:354 builtin/worktree.c:386
+#: builtin/clone.c:1075 builtin/clone.c:1096 builtin/difftool.c:271
+#: builtin/log.c:1986 builtin/worktree.c:282 builtin/worktree.c:314
 #, c-format
 msgid "could not create leading directories of '%s'"
 msgstr "родителските директории на „%s“ не могат да бъдат създадени"
 
-#: builtin/clone.c:1079
+#: builtin/clone.c:1080
 #, c-format
 msgid "could not create work tree dir '%s'"
 msgstr "работното дърво в „%s“ не може да бъде създадено."
 
-#: builtin/clone.c:1099
+#: builtin/clone.c:1100
 #, c-format
 msgid "Cloning into bare repository '%s'...\n"
 msgstr "Клониране и създаване на голо хранилище в „%s“…\n"
 
-#: builtin/clone.c:1101
+#: builtin/clone.c:1102
 #, c-format
 msgid "Cloning into '%s'...\n"
 msgstr "Клониране и създаване на хранилище в „%s“…\n"
 
-#: builtin/clone.c:1125
+#: builtin/clone.c:1126
 msgid ""
 "clone --recursive is not compatible with both --reference and --reference-if-"
 "able"
@@ -13084,49 +13381,49 @@ msgstr ""
 "Опцията „--recursive“ е несъвместима с опциите „--reference“ и „--reference-"
 "if-able“"
 
-#: builtin/clone.c:1169 builtin/remote.c:200 builtin/remote.c:705
+#: builtin/clone.c:1170 builtin/remote.c:200 builtin/remote.c:705
 #, c-format
 msgid "'%s' is not a valid remote name"
 msgstr "„%s“ е неправилно име за отдалечено хранилище"
 
-#: builtin/clone.c:1210
+#: builtin/clone.c:1211
 msgid "--depth is ignored in local clones; use file:// instead."
 msgstr ""
 "При локално клониране опцията „--depth“ се прескача.  Ползвайте схемата "
 "„file://“."
 
-#: builtin/clone.c:1212
+#: builtin/clone.c:1213
 msgid "--shallow-since is ignored in local clones; use file:// instead."
 msgstr ""
 "При локално клониране опцията „--shallow-since“ се прескача.  Ползвайте "
 "схемата „file://“."
 
-#: builtin/clone.c:1214
+#: builtin/clone.c:1215
 msgid "--shallow-exclude is ignored in local clones; use file:// instead."
 msgstr ""
 "При локално клониране опцията „--shallow-exclude“ се прескача.  Ползвайте "
 "схемата „file://“."
 
-#: builtin/clone.c:1216
+#: builtin/clone.c:1217
 msgid "--filter is ignored in local clones; use file:// instead."
 msgstr ""
 "При локално клониране опцията „--filter“ се прескача.  Ползвайте схемата "
 "„file://“."
 
-#: builtin/clone.c:1219
+#: builtin/clone.c:1220
 msgid "source repository is shallow, ignoring --local"
 msgstr "клонираното хранилище е плитко, затова опцията „--local“ се прескача"
 
-#: builtin/clone.c:1224
+#: builtin/clone.c:1225
 msgid "--local is ignored"
 msgstr "опцията „--local“ се прескача"
 
-#: builtin/clone.c:1311 builtin/clone.c:1319
+#: builtin/clone.c:1315 builtin/clone.c:1323
 #, c-format
 msgid "Remote branch %s not found in upstream %s"
 msgstr "Отдалеченият клон „%s“ липсва в клонираното хранилище „%s“"
 
-#: builtin/clone.c:1322
+#: builtin/clone.c:1326
 msgid "You appear to have cloned an empty repository."
 msgstr "Изглежда клонирахте празно хранилище."
 
@@ -13185,13 +13482,13 @@ msgid "could not find object directory matching %s"
 msgstr "директорията с обекти, която отговаря на „%s“, не може да бъде открита"
 
 #: builtin/commit-graph.c:80 builtin/commit-graph.c:210
-#: builtin/commit-graph.c:316 builtin/fetch.c:184 builtin/log.c:1769
+#: builtin/commit-graph.c:316 builtin/fetch.c:187 builtin/log.c:1768
 msgid "dir"
 msgstr "директория"
 
 #: builtin/commit-graph.c:81 builtin/commit-graph.c:211
 #: builtin/commit-graph.c:317
-msgid "The object directory to store the graph"
+msgid "the object directory to store the graph"
 msgstr "ДИРекторията_с_ОБЕКТИ за запазване на гра̀фа"
 
 #: builtin/commit-graph.c:83
@@ -13285,7 +13582,7 @@ msgstr ""
 msgid "duplicate parent %s ignored"
 msgstr "прескачане на повтарящ се родител: „%s“"
 
-#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:555
+#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:557
 #, c-format
 msgid "not a valid object name %s"
 msgstr "неправилно име на обект: „%s“"
@@ -13313,9 +13610,9 @@ msgstr "родител"
 msgid "id of a parent commit object"
 msgstr "ИДЕНТИФИКАТОР на обекта за подаването-родител"
 
-#: builtin/commit-tree.c:114 builtin/commit.c:1504 builtin/merge.c:281
-#: builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1470
-#: builtin/tag.c:413
+#: builtin/commit-tree.c:114 builtin/commit.c:1504 builtin/merge.c:282
+#: builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1537
+#: builtin/tag.c:445
 msgid "message"
 msgstr "СЪОБЩЕНИЕ"
 
@@ -13327,7 +13624,7 @@ msgstr "СЪОБЩЕНИЕ при подаване"
 msgid "read commit log message from file"
 msgstr "изчитане на съобщението за подаване от ФАЙЛ"
 
-#: builtin/commit-tree.c:121 builtin/commit.c:1516 builtin/merge.c:298
+#: builtin/commit-tree.c:121 builtin/commit.c:1516 builtin/merge.c:299
 #: builtin/pull.c:176 builtin/revert.c:118
 msgid "GPG sign commit"
 msgstr "подписване на подаването с GPG"
@@ -13490,7 +13787,7 @@ msgstr ""
 msgid "could not lookup commit %s"
 msgstr "следното подаване не може да бъде открито: %s"
 
-#: builtin/commit.c:729 builtin/shortlog.c:425
+#: builtin/commit.c:729 builtin/shortlog.c:413
 #, c-format
 msgid "(reading log message from standard input)\n"
 msgstr "(изчитане на съобщението за подаване от стандартния вход)\n"
@@ -13589,7 +13886,7 @@ msgstr "Индексът не може да бъде прочетен"
 msgid "Error building trees"
 msgstr "Грешка при изграждане на дърветата"
 
-#: builtin/commit.c:1011 builtin/tag.c:276
+#: builtin/commit.c:1011 builtin/tag.c:308
 #, c-format
 msgid "Please supply the message using either -m or -F option.\n"
 msgstr "Подайте съобщението с някоя от опциите „-m“ или „-F“.\n"
@@ -13685,7 +13982,7 @@ msgid "version"
 msgstr "версия"
 
 #: builtin/commit.c:1374 builtin/commit.c:1533 builtin/push.c:560
-#: builtin/worktree.c:725
+#: builtin/worktree.c:679
 msgid "machine-readable output"
 msgstr "формат на изхода за четене от програма"
 
@@ -13699,7 +13996,7 @@ msgstr "разделяне на елементите с нулевия знак
 
 #: builtin/commit.c:1382 builtin/commit.c:1386 builtin/commit.c:1541
 #: builtin/fast-export.c:1198 builtin/fast-export.c:1201
-#: builtin/fast-export.c:1204 builtin/rebase.c:1406 parse-options.h:336
+#: builtin/fast-export.c:1204 builtin/rebase.c:1412 parse-options.h:336
 msgid "mode"
 msgstr "РЕЖИМ"
 
@@ -13760,7 +14057,7 @@ msgstr "добавяне на разликата към шаблона за съ
 msgid "Commit message options"
 msgstr "Опции за съобщението при подаване"
 
-#: builtin/commit.c:1501 builtin/merge.c:285 builtin/tag.c:415
+#: builtin/commit.c:1501 builtin/merge.c:286 builtin/tag.c:447
 msgid "read message from file"
 msgstr "взимане на съобщението от ФАЙЛ"
 
@@ -13772,7 +14069,7 @@ msgstr "АВТОР"
 msgid "override author for commit"
 msgstr "задаване на АВТОР за подаването"
 
-#: builtin/commit.c:1503 builtin/gc.c:542
+#: builtin/commit.c:1503 builtin/gc.c:550
 msgid "date"
 msgstr "ДАТА"
 
@@ -13781,7 +14078,7 @@ msgid "override date for commit"
 msgstr "задаване на ДАТА за подаването"
 
 #: builtin/commit.c:1505 builtin/commit.c:1506 builtin/commit.c:1507
-#: builtin/commit.c:1508 parse-options.h:328 ref-filter.h:87
+#: builtin/commit.c:1508 parse-options.h:328 ref-filter.h:90
 msgid "commit"
 msgstr "ПОДАВАНЕ"
 
@@ -13810,7 +14107,7 @@ msgid "the commit is authored by me now (used with -C/-c/--amend)"
 msgstr ""
 "смяна на автора да съвпада с подаващия (използва се с „-C“/„-c“/„--amend“)"
 
-#: builtin/commit.c:1510 builtin/log.c:1744 builtin/merge.c:301
+#: builtin/commit.c:1510 builtin/log.c:1743 builtin/merge.c:302
 #: builtin/pull.c:145 builtin/revert.c:110
 msgid "add a Signed-off-by trailer"
 msgstr "добавяне на епилог за подпис „Signed-off-by“"
@@ -14468,41 +14765,41 @@ msgstr "опциите „-stdin“ и „--merge-base“ са несъвмес
 msgid "--merge-base only works with two commits"
 msgstr "опцията „--merge-base“ изисква точно две подавания"
 
-#: builtin/diff.c:91
+#: builtin/diff.c:92
 #, c-format
 msgid "'%s': not a regular file or symlink"
 msgstr "„%s“: не е нито обикновен файл, нито символна връзка"
 
-#: builtin/diff.c:258
+#: builtin/diff.c:259
 #, c-format
 msgid "invalid option: %s"
 msgstr "неправилна опция: %s"
 
-#: builtin/diff.c:375
+#: builtin/diff.c:376
 #, c-format
 msgid "%s...%s: no merge base"
 msgstr "„%s..%s“: липсва база за сливане"
 
-#: builtin/diff.c:485
+#: builtin/diff.c:486
 msgid "Not a git repository"
 msgstr "Не е хранилище на Git"
 
-#: builtin/diff.c:530 builtin/grep.c:681
+#: builtin/diff.c:532 builtin/grep.c:682
 #, c-format
 msgid "invalid object '%s' given."
 msgstr "зададен е неправилен обект „%s“."
 
-#: builtin/diff.c:541
+#: builtin/diff.c:543
 #, c-format
 msgid "more than two blobs given: '%s'"
 msgstr "зададени са повече от 2 обекта-BLOB: „%s“"
 
-#: builtin/diff.c:546
+#: builtin/diff.c:548
 #, c-format
 msgid "unhandled object '%s' given."
 msgstr "зададен е неподдържан обект „%s“."
 
-#: builtin/diff.c:580
+#: builtin/diff.c:582
 #, c-format
 msgid "%s...%s: multiple merge bases, using %s"
 msgstr "%s...%s: много бази за сливане, ще се ползва „%s“"
@@ -14686,40 +14983,40 @@ msgstr ""
 "как да се обработват съобщенията за подаване, които са в друго кодиране"
 
 #: builtin/fast-export.c:1208
-msgid "Dump marks to this file"
-msgstr "Ð\97апазване на маркерите в този ФАЙЛ"
+msgid "dump marks to this file"
+msgstr "запазване на маркерите в този ФАЙЛ"
 
 #: builtin/fast-export.c:1210
-msgid "Import marks from this file"
-msgstr "Ð\92насяне на маркерите от този ФАЙЛ"
+msgid "import marks from this file"
+msgstr "внасяне на маркерите от този ФАЙЛ"
 
 #: builtin/fast-export.c:1214
-msgid "Import marks from this file if it exists"
-msgstr "Ð\92насяне на маркерите от този ФАЙЛ, ако съществува"
+msgid "import marks from this file if it exists"
+msgstr "внасяне на маркерите от този ФАЙЛ, ако съществува"
 
 #: builtin/fast-export.c:1216
-msgid "Fake a tagger when tags lack one"
-msgstr "Ð\94а Ñ\81е Ð¸Ð·Ð¿Ð¾Ð»Ð·Ð²Ð° Ð¸Ð·ÐºÑ\83Ñ\81Ñ\82вено Ð¸Ð¼Ðµ Ð½Ð° Ñ\87овек Ð¿Ñ\80и Ð»Ð¸Ð¿Ñ\81а Ð½Ð° Ð·Ð°Ð´Ð°Ð²Ð°Ñ\89 етикета"
+msgid "fake a tagger when tags lack one"
+msgstr "да Ñ\81е Ð¸Ð·Ð¿Ð¾Ð»Ð·Ð²Ð° Ð¸Ð·ÐºÑ\83Ñ\81Ñ\82вено Ð¸Ð¼Ðµ Ð½Ð° Ñ\87овек Ð¿Ñ\80и Ð»Ð¸Ð¿Ñ\81а Ð½Ð° Ñ\81Ñ\8aздаÑ\82ел Ð½Ð° етикета"
 
 #: builtin/fast-export.c:1218
-msgid "Output full tree for each commit"
-msgstr "Ð\98звеждане на цялото дърво за всяко подаване"
+msgid "output full tree for each commit"
+msgstr "извеждане на цялото дърво за всяко подаване"
 
 #: builtin/fast-export.c:1220
-msgid "Use the done feature to terminate the stream"
-msgstr "Ð\98зползване на маркер за завършване на потока"
+msgid "use the done feature to terminate the stream"
+msgstr "използване на маркер за завършване на потока"
 
 #: builtin/fast-export.c:1221
-msgid "Skip output of blob data"
-msgstr "Ð\91ез извеждане на съдържанието на обектите-BLOB"
+msgid "skip output of blob data"
+msgstr "без извеждане на съдържанието на обектите-BLOB"
 
-#: builtin/fast-export.c:1222 builtin/log.c:1816
+#: builtin/fast-export.c:1222 builtin/log.c:1815
 msgid "refspec"
 msgstr "УКАЗАТЕЛ_НА_ВЕРСИЯ"
 
 #: builtin/fast-export.c:1223
-msgid "Apply refspec to exported refs"
-msgstr "Ð\9fрилагане на УКАЗАТЕЛя_НА_ВЕРСИЯ към изнесените указатели"
+msgid "apply refspec to exported refs"
+msgstr "прилагане на УКАЗАТЕЛя_НА_ВЕРСИЯ към изнесените указатели"
 
 #: builtin/fast-export.c:1224
 msgid "anonymize output"
@@ -14734,18 +15031,18 @@ msgid "convert <from> to <to> in anonymized output"
 msgstr "заместване ОТ със КЪМ в анонимизирания изход"
 
 #: builtin/fast-export.c:1229
-msgid "Reference parents which are not in fast-export stream by object id"
+msgid "reference parents which are not in fast-export stream by object id"
 msgstr ""
-"Указване на родителите, които не са в потока на бързо изнасяне, с "
+"указване на родителите, които не са в потока на бързо изнасяне, с "
 "идентификатор на обект"
 
 #: builtin/fast-export.c:1231
-msgid "Show original object ids of blobs/commits"
-msgstr "Ð\98звеждане на първоначалните идентификатори на обектите BLOB/подавяния"
+msgid "show original object ids of blobs/commits"
+msgstr "извеждане на първоначалните идентификатори на обектите BLOB/подавяния"
 
 #: builtin/fast-export.c:1233
-msgid "Label tags with mark ids"
-msgstr "Ð\97адаване на идентификатори на маркери на етикетите"
+msgid "label tags with mark ids"
+msgstr "задаване на идентификатори на маркери на етикетите"
 
 #: builtin/fast-export.c:1256
 msgid "--anonymize-map without --anonymize does not make sense"
@@ -14784,7 +15081,7 @@ msgstr "Опцията за презапис на подмодул изискв
 msgid "feature '%s' forbidden in input without --allow-unsafe-features"
 msgstr "„%s“ изисква изричното задаване на опцията „--allow-unsafe-features“"
 
-#: builtin/fetch-pack.c:241
+#: builtin/fetch-pack.c:242
 #, c-format
 msgid "Lockfile created but not reported: %s"
 msgstr "Заключващият файл е създаден, но не е докладван: „%s“"
@@ -14805,94 +15102,98 @@ msgstr "git fetch --multiple [ОПЦИЯ…] [(ХРАНИЛИЩЕ | ГРУПА)
 msgid "git fetch --all [<options>]"
 msgstr "git fetch --all [ОПЦИЯ…]"
 
-#: builtin/fetch.c:119
+#: builtin/fetch.c:120
 msgid "fetch.parallel cannot be negative"
 msgstr "опцията „fetch.parallel“ трябва да е неотрицателна"
 
-#: builtin/fetch.c:142 builtin/pull.c:185
+#: builtin/fetch.c:143 builtin/pull.c:185
 msgid "fetch from all remotes"
 msgstr "доставяне от всички отдалечени хранилища"
 
-#: builtin/fetch.c:144 builtin/pull.c:245
+#: builtin/fetch.c:145 builtin/pull.c:245
 msgid "set upstream for git pull/fetch"
 msgstr "задаване на клон за следене за издърпване/доставяне"
 
-#: builtin/fetch.c:146 builtin/pull.c:188
+#: builtin/fetch.c:147 builtin/pull.c:188
 msgid "append to .git/FETCH_HEAD instead of overwriting"
 msgstr "добавяне към „.git/FETCH_HEAD“ вместо замяна"
 
-#: builtin/fetch.c:148 builtin/pull.c:191
+#: builtin/fetch.c:149
+msgid "use atomic transaction to update references"
+msgstr "изискване на атомарни операции за обновяване на указателите"
+
+#: builtin/fetch.c:151 builtin/pull.c:191
 msgid "path to upload pack on remote end"
 msgstr "отдалечен път, където да се качи пакетът"
 
-#: builtin/fetch.c:149
+#: builtin/fetch.c:152
 msgid "force overwrite of local reference"
 msgstr "принудително презаписване на локален указател"
 
-#: builtin/fetch.c:151
+#: builtin/fetch.c:154
 msgid "fetch from multiple remotes"
 msgstr "доставяне от множество отдалечени хранилища"
 
-#: builtin/fetch.c:153 builtin/pull.c:195
+#: builtin/fetch.c:156 builtin/pull.c:195
 msgid "fetch all tags and associated objects"
 msgstr "доставяне на всички етикети и принадлежащи обекти"
 
-#: builtin/fetch.c:155
+#: builtin/fetch.c:158
 msgid "do not fetch all tags (--no-tags)"
 msgstr "без доставянето на всички етикети „--no-tags“"
 
-#: builtin/fetch.c:157
+#: builtin/fetch.c:160
 msgid "number of submodules fetched in parallel"
 msgstr "брой подмодули доставени паралелно"
 
-#: builtin/fetch.c:159 builtin/pull.c:198
+#: builtin/fetch.c:162 builtin/pull.c:198
 msgid "prune remote-tracking branches no longer on remote"
 msgstr "окастряне на клоните следящи вече несъществуващи отдалечени клони"
 
-#: builtin/fetch.c:161
+#: builtin/fetch.c:164
 msgid "prune local tags no longer on remote and clobber changed tags"
 msgstr ""
 "окастряне на локалните етикети, които вече не съществуват в отдалеченото "
 "хранилище и презаписване на променените"
 
-#: builtin/fetch.c:162 builtin/fetch.c:187 builtin/pull.c:122
+#: builtin/fetch.c:165 builtin/fetch.c:190 builtin/pull.c:122
 msgid "on-demand"
 msgstr "ПРИ НУЖДА"
 
-#: builtin/fetch.c:163
+#: builtin/fetch.c:166
 msgid "control recursive fetching of submodules"
 msgstr "управление на рекурсивното доставяне на подмодулите"
 
-#: builtin/fetch.c:168
+#: builtin/fetch.c:171
 msgid "write fetched references to the FETCH_HEAD file"
 msgstr "запазване на доставените указатели във файла „FETCH_HEAD“"
 
-#: builtin/fetch.c:169 builtin/pull.c:206
+#: builtin/fetch.c:172 builtin/pull.c:206
 msgid "keep downloaded pack"
 msgstr "запазване на изтеглените пакети с обекти"
 
-#: builtin/fetch.c:171
+#: builtin/fetch.c:174
 msgid "allow updating of HEAD ref"
 msgstr "позволяване на обновяването на указателя „HEAD“"
 
-#: builtin/fetch.c:174 builtin/fetch.c:180 builtin/pull.c:209
+#: builtin/fetch.c:177 builtin/fetch.c:183 builtin/pull.c:209
 #: builtin/pull.c:218
 msgid "deepen history of shallow clone"
 msgstr "задълбочаване на историята на плитко хранилище"
 
-#: builtin/fetch.c:176 builtin/pull.c:212
+#: builtin/fetch.c:179 builtin/pull.c:212
 msgid "deepen history of shallow repository based on time"
 msgstr "задълбочаване на историята на плитко хранилище до определено време"
 
-#: builtin/fetch.c:182 builtin/pull.c:221
+#: builtin/fetch.c:185 builtin/pull.c:221
 msgid "convert to a complete repository"
 msgstr "превръщане в пълно хранилище"
 
-#: builtin/fetch.c:185
+#: builtin/fetch.c:188
 msgid "prepend this to submodule path output"
 msgstr "добавяне на това пред пътя на подмодула"
 
-#: builtin/fetch.c:188
+#: builtin/fetch.c:191
 msgid ""
 "default for recursive fetching of submodules (lower priority than config "
 "files)"
@@ -14900,98 +15201,98 @@ msgstr ""
 "стандартно рекурсивно изтегляне на подмодулите (файловете с настройки са с "
 "приоритет)"
 
-#: builtin/fetch.c:192 builtin/pull.c:224
+#: builtin/fetch.c:195 builtin/pull.c:224
 msgid "accept refs that update .git/shallow"
 msgstr "приемане на указатели, които обновяват „.git/shallow“"
 
-#: builtin/fetch.c:193 builtin/pull.c:226
+#: builtin/fetch.c:196 builtin/pull.c:226
 msgid "refmap"
 msgstr "КАРТА_С_УКАЗАТЕЛИ"
 
-#: builtin/fetch.c:194 builtin/pull.c:227
+#: builtin/fetch.c:197 builtin/pull.c:227
 msgid "specify fetch refmap"
 msgstr "указване на КАРТАта_С_УКАЗАТЕЛИ за доставяне"
 
-#: builtin/fetch.c:201 builtin/pull.c:240
+#: builtin/fetch.c:204 builtin/pull.c:240
 msgid "report that we have only objects reachable from this object"
 msgstr "докладване, че всички обекти могат са достижими при започване от този"
 
-#: builtin/fetch.c:204 builtin/fetch.c:206
+#: builtin/fetch.c:207 builtin/fetch.c:209
 msgid "run 'maintenance --auto' after fetching"
 msgstr "изпълняване на „maintenance --auto“ след доставяне"
 
-#: builtin/fetch.c:208 builtin/pull.c:243
+#: builtin/fetch.c:211 builtin/pull.c:243
 msgid "check for forced-updates on all updated branches"
 msgstr "проверка за принудителни обновявания на всички клони"
 
-#: builtin/fetch.c:210
+#: builtin/fetch.c:213
 msgid "write the commit-graph after fetching"
 msgstr "запазване на гра̀фа с подаванията след доставяне"
 
-#: builtin/fetch.c:212
+#: builtin/fetch.c:215
 msgid "accept refspecs from stdin"
 msgstr "четене на указателите от стандартния вход"
 
-#: builtin/fetch.c:523
+#: builtin/fetch.c:526
 msgid "Couldn't find remote ref HEAD"
 msgstr "Указателят „HEAD“ в отдалеченото хранилище не може да бъде открит"
 
-#: builtin/fetch.c:677
+#: builtin/fetch.c:697
 #, c-format
 msgid "configuration fetch.output contains invalid value %s"
 msgstr "настройката „fetch.output“ е с неправилна стойност „%s“"
 
-#: builtin/fetch.c:775
+#: builtin/fetch.c:796
 #, c-format
 msgid "object %s not found"
 msgstr "обектът „%s“ липсва"
 
-#: builtin/fetch.c:779
+#: builtin/fetch.c:800
 msgid "[up to date]"
 msgstr "[актуален]"
 
-#: builtin/fetch.c:792 builtin/fetch.c:808 builtin/fetch.c:880
+#: builtin/fetch.c:813 builtin/fetch.c:829 builtin/fetch.c:901
 msgid "[rejected]"
 msgstr "[отхвърлен]"
 
-#: builtin/fetch.c:793
+#: builtin/fetch.c:814
 msgid "can't fetch in current branch"
 msgstr "в текущия клон не може да се доставя"
 
-#: builtin/fetch.c:803
+#: builtin/fetch.c:824
 msgid "[tag update]"
 msgstr "[обновяване на етикетите]"
 
-#: builtin/fetch.c:804 builtin/fetch.c:841 builtin/fetch.c:863
-#: builtin/fetch.c:875
+#: builtin/fetch.c:825 builtin/fetch.c:862 builtin/fetch.c:884
+#: builtin/fetch.c:896
 msgid "unable to update local ref"
 msgstr "локален указател не може да бъде обновен"
 
-#: builtin/fetch.c:808
+#: builtin/fetch.c:829
 msgid "would clobber existing tag"
 msgstr "съществуващ етикет ще бъде презаписан"
 
-#: builtin/fetch.c:830
+#: builtin/fetch.c:851
 msgid "[new tag]"
 msgstr "[нов етикет]"
 
-#: builtin/fetch.c:833
+#: builtin/fetch.c:854
 msgid "[new branch]"
 msgstr "[нов клон]"
 
-#: builtin/fetch.c:836
+#: builtin/fetch.c:857
 msgid "[new ref]"
 msgstr "[нов указател]"
 
-#: builtin/fetch.c:875
+#: builtin/fetch.c:896
 msgid "forced update"
 msgstr "принудително обновяване"
 
-#: builtin/fetch.c:880
+#: builtin/fetch.c:901
 msgid "non-fast-forward"
 msgstr "същинско сливане"
 
-#: builtin/fetch.c:901
+#: builtin/fetch.c:1005
 msgid ""
 "Fetch normally indicates which branches had a forced update,\n"
 "but that check has been disabled. To re-enable, use '--show-forced-updates'\n"
@@ -15002,7 +15303,7 @@ msgstr ""
 "\n"
 "    git config fetch.showForcedUpdates true"
 
-#: builtin/fetch.c:905
+#: builtin/fetch.c:1009
 #, c-format
 msgid ""
 "It took %.2f seconds to check forced updates. You can use\n"
@@ -15016,24 +15317,24 @@ msgstr ""
 "\n"
 "    git config fetch.showForcedUpdates false\n"
 
-#: builtin/fetch.c:939
+#: builtin/fetch.c:1041
 #, c-format
 msgid "%s did not send all necessary objects\n"
 msgstr "хранилището „%s“ не изпрати всички необходими обекти\n"
 
-#: builtin/fetch.c:960
+#: builtin/fetch.c:1069
 #, c-format
 msgid "reject %s because shallow roots are not allowed to be updated"
 msgstr ""
 "отхвърляне на върха „%s“, защото плитките хранилища не могат да бъдат "
 "обновявани"
 
-#: builtin/fetch.c:1053 builtin/fetch.c:1191
+#: builtin/fetch.c:1146 builtin/fetch.c:1297
 #, c-format
 msgid "From %.*s\n"
 msgstr "От %.*s\n"
 
-#: builtin/fetch.c:1064
+#: builtin/fetch.c:1168
 #, c-format
 msgid ""
 "some local refs could not be updated; try running\n"
@@ -15043,57 +15344,57 @@ msgstr ""
 "„git remote prune %s“, за да премахнете остарелите клони, които\n"
 "предизвикват конфликта"
 
-#: builtin/fetch.c:1161
+#: builtin/fetch.c:1267
 #, c-format
 msgid "   (%s will become dangling)"
 msgstr "   (обектът „%s“ ще се окаже извън клон)"
 
-#: builtin/fetch.c:1162
+#: builtin/fetch.c:1268
 #, c-format
 msgid "   (%s has become dangling)"
 msgstr "   (обектът „%s“ вече е извън клон)"
 
-#: builtin/fetch.c:1194
+#: builtin/fetch.c:1300
 msgid "[deleted]"
 msgstr "[изтрит]"
 
-#: builtin/fetch.c:1195 builtin/remote.c:1118
+#: builtin/fetch.c:1301 builtin/remote.c:1118
 msgid "(none)"
 msgstr "(нищо)"
 
-#: builtin/fetch.c:1218
+#: builtin/fetch.c:1324
 #, c-format
 msgid "Refusing to fetch into current branch %s of non-bare repository"
 msgstr "Не може да доставите в текущия клон „%s“ на хранилище, което не е голо"
 
-#: builtin/fetch.c:1237
+#: builtin/fetch.c:1343
 #, c-format
 msgid "Option \"%s\" value \"%s\" is not valid for %s"
 msgstr "Стойността „%2$s“ за опцията „%1$s“ не е съвместима с „%3$s“"
 
-#: builtin/fetch.c:1240
+#: builtin/fetch.c:1346
 #, c-format
 msgid "Option \"%s\" is ignored for %s\n"
 msgstr "Опцията „%s“ се прескача при „%s“\n"
 
-#: builtin/fetch.c:1448
+#: builtin/fetch.c:1558
 msgid "multiple branches detected, incompatible with --set-upstream"
 msgstr ""
 "засечени са множество клони, това е несъвместимо с опцията „--set-upstream“"
 
-#: builtin/fetch.c:1463
+#: builtin/fetch.c:1573
 msgid "not setting upstream for a remote remote-tracking branch"
 msgstr "не може да указвате клон за следене на отдалечен етикет"
 
-#: builtin/fetch.c:1465
+#: builtin/fetch.c:1575
 msgid "not setting upstream for a remote tag"
 msgstr "не може да указвате клон за следене на отдалечен етикет"
 
-#: builtin/fetch.c:1467
+#: builtin/fetch.c:1577
 msgid "unknown branch type"
 msgstr "непознат вид клон"
 
-#: builtin/fetch.c:1469
+#: builtin/fetch.c:1579
 msgid ""
 "no source branch found.\n"
 "you need to specify exactly one branch with the --set-upstream option."
@@ -15101,22 +15402,22 @@ msgstr ""
 "не е открит клон за следене.\n"
 "Трябва изрично да зададете един клон с опцията „--set-upstream option“."
 
-#: builtin/fetch.c:1598 builtin/fetch.c:1661
+#: builtin/fetch.c:1708 builtin/fetch.c:1771
 #, c-format
 msgid "Fetching %s\n"
 msgstr "Доставяне на „%s“\n"
 
-#: builtin/fetch.c:1608 builtin/fetch.c:1663 builtin/remote.c:101
+#: builtin/fetch.c:1718 builtin/fetch.c:1773 builtin/remote.c:101
 #, c-format
 msgid "Could not fetch %s"
 msgstr "„%s“ не може да се достави"
 
-#: builtin/fetch.c:1620
+#: builtin/fetch.c:1730
 #, c-format
 msgid "could not fetch '%s' (exit code: %d)\n"
 msgstr "„%s“ не може да се достави (изходният код е: %d)\n"
 
-#: builtin/fetch.c:1724
+#: builtin/fetch.c:1834
 msgid ""
 "No remote repository specified.  Please, specify either a URL or a\n"
 "remote name from which new revisions should be fetched."
@@ -15124,45 +15425,45 @@ msgstr ""
 "Не сте указали отдалечено хранилище.  Задайте или адрес, или име\n"
 "на отдалечено хранилище, откъдето да се доставят новите версии."
 
-#: builtin/fetch.c:1760
+#: builtin/fetch.c:1870
 msgid "You need to specify a tag name."
 msgstr "Трябва да укажете име на етикет."
 
-#: builtin/fetch.c:1825
+#: builtin/fetch.c:1935
 msgid "Negative depth in --deepen is not supported"
 msgstr "Отрицателна дълбочина като аргумент на „--deepen“ не се поддържа"
 
-#: builtin/fetch.c:1827
+#: builtin/fetch.c:1937
 msgid "--deepen and --depth are mutually exclusive"
 msgstr "опциите „--deepen“ и „--depth“ са несъвместими"
 
-#: builtin/fetch.c:1832
+#: builtin/fetch.c:1942
 msgid "--depth and --unshallow cannot be used together"
 msgstr "опциите „--depth“ и „--unshallow“ са несъвместими"
 
-#: builtin/fetch.c:1834
+#: builtin/fetch.c:1944
 msgid "--unshallow on a complete repository does not make sense"
 msgstr "не можете да използвате опцията „--unshallow“ върху пълно хранилище"
 
-#: builtin/fetch.c:1851
+#: builtin/fetch.c:1961
 msgid "fetch --all does not take a repository argument"
 msgstr "към „git fetch --all“ не можете да добавите аргумент — хранилище"
 
-#: builtin/fetch.c:1853
+#: builtin/fetch.c:1963
 msgid "fetch --all does not make sense with refspecs"
 msgstr ""
 "към „git fetch --all“ не можете да добавите аргумент — указател на версия"
 
-#: builtin/fetch.c:1862
+#: builtin/fetch.c:1972
 #, c-format
 msgid "No such remote or remote group: %s"
 msgstr "Няма нито отдалечено хранилище, нито група от хранилища на име „%s“"
 
-#: builtin/fetch.c:1869
+#: builtin/fetch.c:1979
 msgid "Fetching a group and specifying refspecs does not make sense"
 msgstr "Указването на група и указването на версия са несъвместими"
 
-#: builtin/fetch.c:1887
+#: builtin/fetch.c:1997
 msgid ""
 "--filter can only be used with the remote configured in extensions."
 "partialclone"
@@ -15170,7 +15471,12 @@ msgstr ""
 "опцията „--filter“ може да се ползва само с отдалеченото хранилище указано в "
 "настройката „extensions.partialClone“"
 
-#: builtin/fetch.c:1891
+#: builtin/fetch.c:2001
+msgid "--atomic can only be used when fetching from one remote"
+msgstr ""
+"опцията „--atomic“ поддържа доставяне само от едно отдалечено хранилище"
+
+#: builtin/fetch.c:2005
 msgid "--stdin can only be used when fetching from one remote"
 msgstr "опцията „--stdin“ поддържа доставяне само от едно отдалечено хранилище"
 
@@ -15238,7 +15544,7 @@ msgstr "цитиране подходящо за tcl"
 msgid "show only <n> matched refs"
 msgstr "извеждане само на този БРОЙ напаснати указатели"
 
-#: builtin/for-each-ref.c:39 builtin/tag.c:440
+#: builtin/for-each-ref.c:39 builtin/tag.c:472
 msgid "respect format colors"
 msgstr "спазване на цветовете на форма̀та"
 
@@ -15278,32 +15584,32 @@ msgstr "настройка, която съдържа списък с пътищ
 msgid "missing --config=<config>"
 msgstr "липсва --config=НАСТРОЙКА"
 
-#: builtin/fsck.c:69 builtin/fsck.c:148 builtin/fsck.c:149
+#: builtin/fsck.c:69 builtin/fsck.c:130 builtin/fsck.c:131
 msgid "unknown"
 msgstr "непознат"
 
 #. TRANSLATORS: e.g. error in tree 01bfda: <more explanation>
-#: builtin/fsck.c:101 builtin/fsck.c:121
+#: builtin/fsck.c:83 builtin/fsck.c:103
 #, c-format
 msgid "error in %s %s: %s"
 msgstr "грешка в %s „%s“: %s"
 
 #. TRANSLATORS: e.g. warning in tree 01bfda: <more explanation>
-#: builtin/fsck.c:115
+#: builtin/fsck.c:97
 #, c-format
 msgid "warning in %s %s: %s"
 msgstr "предупреждение за %s „%s“: %s"
 
-#: builtin/fsck.c:144 builtin/fsck.c:147
+#: builtin/fsck.c:126 builtin/fsck.c:129
 #, c-format
 msgid "broken link from %7s %s"
 msgstr "скъсана връзка от %7s %s"
 
-#: builtin/fsck.c:156
+#: builtin/fsck.c:138
 msgid "wrong object type in link"
 msgstr "неправилен вид обект във връзката"
 
-#: builtin/fsck.c:172
+#: builtin/fsck.c:154
 #, c-format
 msgid ""
 "broken link from %7s %s\n"
@@ -15312,212 +15618,212 @@ msgstr ""
 "скъсана връзка от %7s %s\n"
 "              към %7s %s"
 
-#: builtin/fsck.c:283
+#: builtin/fsck.c:265
 #, c-format
 msgid "missing %s %s"
 msgstr "липсващ обект: %s „%s“"
 
-#: builtin/fsck.c:310
+#: builtin/fsck.c:292
 #, c-format
 msgid "unreachable %s %s"
 msgstr "недостижим обект: %s „%s“"
 
-#: builtin/fsck.c:330
+#: builtin/fsck.c:312
 #, c-format
 msgid "dangling %s %s"
 msgstr "извън клон: %s „%s“"
 
-#: builtin/fsck.c:340
+#: builtin/fsck.c:322
 msgid "could not create lost-found"
 msgstr "„lost-found“ не може да се създаде"
 
-#: builtin/fsck.c:351
+#: builtin/fsck.c:333
 #, c-format
 msgid "could not finish '%s'"
 msgstr "„%s“ не може да се завърши"
 
-#: builtin/fsck.c:368
+#: builtin/fsck.c:350
 #, c-format
 msgid "Checking %s"
 msgstr "Проверка на „%s“"
 
-#: builtin/fsck.c:406
+#: builtin/fsck.c:388
 #, c-format
 msgid "Checking connectivity (%d objects)"
 msgstr "Проверка на свързаността (%d обекта)"
 
-#: builtin/fsck.c:425
+#: builtin/fsck.c:407
 #, c-format
 msgid "Checking %s %s"
 msgstr "Проверяване на %s „%s“"
 
-#: builtin/fsck.c:430
+#: builtin/fsck.c:412
 msgid "broken links"
 msgstr "скъсани връзки"
 
-#: builtin/fsck.c:439
+#: builtin/fsck.c:421
 #, c-format
 msgid "root %s"
 msgstr "начална директория „%s“"
 
-#: builtin/fsck.c:447
+#: builtin/fsck.c:429
 #, c-format
 msgid "tagged %s %s (%s) in %s"
 msgstr "приложен етикет „%s“ върху „%s“ (%s) в „%s“"
 
-#: builtin/fsck.c:476
+#: builtin/fsck.c:458
 #, c-format
 msgid "%s: object corrupt or missing"
 msgstr "%s: липсващ или повреден обект"
 
-#: builtin/fsck.c:501
+#: builtin/fsck.c:483
 #, c-format
 msgid "%s: invalid reflog entry %s"
 msgstr "%s: неправилен запис в журнала за указатели „%s“"
 
-#: builtin/fsck.c:515
+#: builtin/fsck.c:497
 #, c-format
 msgid "Checking reflog %s->%s"
 msgstr "Проверка на журнала на указателите: „%s“ до „%s“"
 
-#: builtin/fsck.c:549
+#: builtin/fsck.c:531
 #, c-format
 msgid "%s: invalid sha1 pointer %s"
 msgstr "„%s“: неправилен указател за SHA1: „%s“"
 
-#: builtin/fsck.c:556
+#: builtin/fsck.c:538
 #, c-format
 msgid "%s: not a commit"
 msgstr "%s: не е подаване!"
 
-#: builtin/fsck.c:610
+#: builtin/fsck.c:592
 msgid "notice: No default references"
 msgstr "внимание: няма указатели по подразбиране"
 
-#: builtin/fsck.c:625
+#: builtin/fsck.c:607
 #, c-format
 msgid "%s: object corrupt or missing: %s"
 msgstr "„%s“: липсващ обект: „%s“"
 
-#: builtin/fsck.c:638
+#: builtin/fsck.c:620
 #, c-format
 msgid "%s: object could not be parsed: %s"
 msgstr "„%s“: не може да се анализира: „%s“"
 
-#: builtin/fsck.c:658
+#: builtin/fsck.c:640
 #, c-format
 msgid "bad sha1 file: %s"
 msgstr "неправилен ред с контролна сума по SHA1: „%s“"
 
-#: builtin/fsck.c:673
+#: builtin/fsck.c:655
 msgid "Checking object directory"
 msgstr "Проверка на директория с обекти"
 
-#: builtin/fsck.c:676
+#: builtin/fsck.c:658
 msgid "Checking object directories"
 msgstr "Проверка на директориите с обекти"
 
-#: builtin/fsck.c:691
+#: builtin/fsck.c:673
 #, c-format
 msgid "Checking %s link"
 msgstr "Проверка на връзките на „%s“"
 
 #
-#: builtin/fsck.c:696 builtin/index-pack.c:865
+#: builtin/fsck.c:678 builtin/index-pack.c:865
 #, c-format
 msgid "invalid %s"
 msgstr "неправилен указател „%s“"
 
-#: builtin/fsck.c:703
+#: builtin/fsck.c:685
 #, c-format
 msgid "%s points to something strange (%s)"
 msgstr "„%s“ сочи към нещо необичайно (%s)"
 
-#: builtin/fsck.c:709
+#: builtin/fsck.c:691
 #, c-format
 msgid "%s: detached HEAD points at nothing"
 msgstr "%s: несвързаният връх „HEAD“ не сочи към нищо"
 
-#: builtin/fsck.c:713
+#: builtin/fsck.c:695
 #, c-format
 msgid "notice: %s points to an unborn branch (%s)"
 msgstr "предупреждение: „%s“ сочи към все още несъществуващ клон (%s)"
 
-#: builtin/fsck.c:725
+#: builtin/fsck.c:707
 msgid "Checking cache tree"
 msgstr "Проверка на дървото на кеша"
 
-#: builtin/fsck.c:730
+#: builtin/fsck.c:712
 #, c-format
 msgid "%s: invalid sha1 pointer in cache-tree"
 msgstr "„%s“: неправилен указател за SHA1 в дървото на кеша"
 
-#: builtin/fsck.c:739
+#: builtin/fsck.c:721
 msgid "non-tree in cache-tree"
 msgstr "в дървото на кеша има нещо, което не е дърво"
 
-#: builtin/fsck.c:770
+#: builtin/fsck.c:752
 msgid "git fsck [<options>] [<object>...]"
 msgstr "git fsck [ОПЦИЯ…] [ОБЕКТ…]"
 
-#: builtin/fsck.c:776
+#: builtin/fsck.c:758
 msgid "show unreachable objects"
 msgstr "показване на недостижимите обекти"
 
-#: builtin/fsck.c:777
+#: builtin/fsck.c:759
 msgid "show dangling objects"
 msgstr "показване на обектите извън клоните"
 
-#: builtin/fsck.c:778
+#: builtin/fsck.c:760
 msgid "report tags"
 msgstr "показване на етикетите"
 
-#: builtin/fsck.c:779
+#: builtin/fsck.c:761
 msgid "report root nodes"
 msgstr "показване на кореновите възли"
 
-#: builtin/fsck.c:780
+#: builtin/fsck.c:762
 msgid "make index objects head nodes"
 msgstr "задаване на обекти от индекса да са коренови"
 
-#: builtin/fsck.c:781
+#: builtin/fsck.c:763
 msgid "make reflogs head nodes (default)"
 msgstr "проследяване и на указателите от журнала с указателите (стандартно)"
 
-#: builtin/fsck.c:782
+#: builtin/fsck.c:764
 msgid "also consider packs and alternate objects"
 msgstr "допълнително да се проверяват пакетите и алтернативните обекти"
 
-#: builtin/fsck.c:783
+#: builtin/fsck.c:765
 msgid "check only connectivity"
 msgstr "проверка само на връзката"
 
-#: builtin/fsck.c:784
+#: builtin/fsck.c:766 builtin/mktag.c:78
 msgid "enable more strict checking"
 msgstr "по-строги проверки"
 
-#: builtin/fsck.c:786
+#: builtin/fsck.c:768
 msgid "write dangling objects in .git/lost-found"
 msgstr "запазване на обектите извън клоните в директорията „.git/lost-found“"
 
-#: builtin/fsck.c:787 builtin/prune.c:134
+#: builtin/fsck.c:769 builtin/prune.c:134
 msgid "show progress"
 msgstr "показване на напредъка"
 
-#: builtin/fsck.c:788
+#: builtin/fsck.c:770
 msgid "show verbose names for reachable objects"
 msgstr "показване на подробни имена на достижимите обекти"
 
-#: builtin/fsck.c:847 builtin/index-pack.c:261
+#: builtin/fsck.c:829 builtin/index-pack.c:261
 msgid "Checking objects"
 msgstr "Проверка на обектите"
 
-#: builtin/fsck.c:875
+#: builtin/fsck.c:857
 #, c-format
 msgid "%s: object missing"
 msgstr "„%s“: липсващ обект"
 
-#: builtin/fsck.c:886
+#: builtin/fsck.c:868
 #, c-format
 msgid "invalid parameter: expected sha1, got '%s'"
 msgstr "неправилен параметър: очаква се SHA1, а бе получено: „%s“"
@@ -15526,27 +15832,27 @@ msgstr "неправилен параметър: очаква се SHA1, а бе
 msgid "git gc [<options>]"
 msgstr "git gc [ОПЦИЯ…]"
 
-#: builtin/gc.c:94
+#: builtin/gc.c:93
 #, c-format
 msgid "Failed to fstat %s: %s"
 msgstr "Неуспешно изпълнение на „fstat“ върху „%s“: %s"
 
-#: builtin/gc.c:130
+#: builtin/gc.c:129
 #, c-format
 msgid "failed to parse '%s' value '%s'"
 msgstr "стойността на „%s“ — „%s“ не може да се анализира"
 
-#: builtin/gc.c:479 builtin/init-db.c:58
+#: builtin/gc.c:487 builtin/init-db.c:58
 #, c-format
 msgid "cannot stat '%s'"
 msgstr "не може да се получи информация чрез „stat“ за директорията „%s“"
 
-#: builtin/gc.c:488 builtin/notes.c:240 builtin/tag.c:530
+#: builtin/gc.c:496 builtin/notes.c:240 builtin/tag.c:562
 #, c-format
 msgid "cannot read '%s'"
 msgstr "файлът „%s“ не може да бъде прочетен"
 
-#: builtin/gc.c:495
+#: builtin/gc.c:503
 #, c-format
 msgid ""
 "The last gc run reported the following. Please correct the root cause\n"
@@ -15563,58 +15869,58 @@ msgstr ""
 "\n"
 "%s"
 
-#: builtin/gc.c:543
+#: builtin/gc.c:551
 msgid "prune unreferenced objects"
 msgstr "окастряне на обектите, към които нищо не сочи"
 
-#: builtin/gc.c:545
+#: builtin/gc.c:553
 msgid "be more thorough (increased runtime)"
 msgstr "изчерпателно търсене на боклука (за сметка на повече време работа)"
 
-#: builtin/gc.c:546
+#: builtin/gc.c:554
 msgid "enable auto-gc mode"
 msgstr "включване на автоматичното събиране на боклука (auto-gc)"
 
-#: builtin/gc.c:549
+#: builtin/gc.c:557
 msgid "force running gc even if there may be another gc running"
 msgstr ""
 "изрично стартиране на събирането на боклука, дори и ако вече работи друго "
 "събиране"
 
-#: builtin/gc.c:552
+#: builtin/gc.c:560
 msgid "repack all other packs except the largest pack"
 msgstr "препакетиране на всичко без най-големия пакет"
 
-#: builtin/gc.c:569
+#: builtin/gc.c:576
 #, c-format
 msgid "failed to parse gc.logexpiry value %s"
 msgstr "неразпозната стойност на „gc.logexpiry“ %s"
 
-#: builtin/gc.c:580
+#: builtin/gc.c:587
 #, c-format
 msgid "failed to parse prune expiry value %s"
 msgstr "неразпозната стойност на периода за окастряне: %s"
 
-#: builtin/gc.c:600
+#: builtin/gc.c:607
 #, c-format
 msgid "Auto packing the repository in background for optimum performance.\n"
 msgstr ""
 "Автоматично пакетиране на заден фон на хранилището за по-добра "
 "производителност.\n"
 
-#: builtin/gc.c:602
+#: builtin/gc.c:609
 #, c-format
 msgid "Auto packing the repository for optimum performance.\n"
 msgstr "Автоматично пакетиране на хранилището за по-добра производителност.\n"
 
-#: builtin/gc.c:603
+#: builtin/gc.c:610
 #, c-format
 msgid "See \"git help gc\" for manual housekeeping.\n"
 msgstr ""
 "Погледнете ръководството за повече информация как да изпълните „git help "
 "gc“.\n"
 
-#: builtin/gc.c:643
+#: builtin/gc.c:650
 #, c-format
 msgid ""
 "gc is already running on machine '%s' pid %<PRIuMAX> (use --force if not)"
@@ -15623,148 +15929,175 @@ msgstr ""
 "процеса: %<PRIuMAX> (ако сте сигурни, че това не е вярно, това използвайте\n"
 "опцията „--force“)"
 
-#: builtin/gc.c:698
+#: builtin/gc.c:705
 msgid ""
 "There are too many unreachable loose objects; run 'git prune' to remove them."
 msgstr ""
 "Има прекалено много недостижими, непакетирани обекти.\n"
 "Използвайте „git prune“, за да ги окастрите."
 
-#: builtin/gc.c:708
+#: builtin/gc.c:715
 msgid ""
 "git maintenance run [--auto] [--[no-]quiet] [--task=<task>] [--schedule]"
 msgstr ""
 "git maintenance run [--auto] [--[no-]quiet] [--task=ЗАДАЧА] [--schedule]"
 
-#: builtin/gc.c:738
+#: builtin/gc.c:745
 msgid "--no-schedule is not allowed"
 msgstr "опцията „--no-schedule“ не е позволена"
 
-#: builtin/gc.c:743
+#: builtin/gc.c:750
 #, c-format
 msgid "unrecognized --schedule argument '%s'"
 msgstr "непознат аргумент към „--schedule“: %s"
 
-#: builtin/gc.c:862
+#: builtin/gc.c:869
 msgid "failed to write commit-graph"
 msgstr "графът с подаванията не може да бъде записан"
 
-#: builtin/gc.c:901
+#: builtin/gc.c:914
 msgid "failed to fill remotes"
 msgstr "неуспешно попълване на следящите клони"
 
-#: builtin/gc.c:1024
+#: builtin/gc.c:1037
 msgid "failed to start 'git pack-objects' process"
 msgstr "процесът за командата „git pack-objects“ не може да бъде стартиран"
 
-#: builtin/gc.c:1041
+#: builtin/gc.c:1054
 msgid "failed to finish 'git pack-objects' process"
 msgstr "процесът за командата „git pack-objects“ не може да завърши"
 
-#: builtin/gc.c:1093
+#: builtin/gc.c:1106
 msgid "failed to write multi-pack-index"
 msgstr "индексът за множество пакети не може да бъде записан"
 
-#: builtin/gc.c:1111
+#: builtin/gc.c:1124
 msgid "'git multi-pack-index expire' failed"
 msgstr "неуспешно изпълнение на „git multi-pack-index expire“"
 
-#: builtin/gc.c:1172
+#: builtin/gc.c:1185
 msgid "'git multi-pack-index repack' failed"
 msgstr "неуспешно изпълнение на „git multi-pack-index repack“"
 
-#: builtin/gc.c:1181
+#: builtin/gc.c:1194
 msgid ""
 "skipping incremental-repack task because core.multiPackIndex is disabled"
 msgstr ""
 "задачата „incremental-repack“ се прескача, защото настройката „core."
 "multiPackIndex“ е изключена"
 
-#: builtin/gc.c:1279
+#: builtin/gc.c:1298
 #, c-format
 msgid "lock file '%s' exists, skipping maintenance"
 msgstr "заключващият файл „%s“ съществува.  Действието се прескача"
 
-#: builtin/gc.c:1309
+#: builtin/gc.c:1328
 #, c-format
 msgid "task '%s' failed"
 msgstr "неуспешно изпълнение на задачата „%s“"
 
-#: builtin/gc.c:1389
+#: builtin/gc.c:1410
 #, c-format
 msgid "'%s' is not a valid task"
 msgstr "„%s“ не е правилна задача"
 
-#: builtin/gc.c:1394
+#: builtin/gc.c:1415
 #, c-format
 msgid "task '%s' cannot be selected multiple times"
 msgstr "задачата „%s“ не може да се избере повече от веднъж"
 
-#: builtin/gc.c:1409
+#: builtin/gc.c:1430
 msgid "run tasks based on the state of the repository"
 msgstr "изпълняване на задачи според състоянието на хранилището"
 
-#: builtin/gc.c:1410
+#: builtin/gc.c:1431
 msgid "frequency"
 msgstr "честота"
 
-#: builtin/gc.c:1411
+#: builtin/gc.c:1432
 msgid "run tasks based on frequency"
 msgstr "изпълняване на задачи по график"
 
-#: builtin/gc.c:1414
+#: builtin/gc.c:1435
 msgid "do not report progress or other information over stderr"
 msgstr "без извеждане на напредъка и друга информация на стандартния изход"
 
-#: builtin/gc.c:1415
+#: builtin/gc.c:1436
 msgid "task"
 msgstr "задача"
 
-#: builtin/gc.c:1416
+#: builtin/gc.c:1437
 msgid "run a specific task"
 msgstr "изпълнение на определена задача"
 
-#: builtin/gc.c:1433
+#: builtin/gc.c:1454
 msgid "use at most one of --auto and --schedule=<frequency>"
 msgstr ""
 "може да се указва максимум една от опциите „--auto“ и „--schedule=ЧЕСТОТА“"
 
-#: builtin/gc.c:1467
+#: builtin/gc.c:1497
 msgid "failed to run 'git config'"
 msgstr "неуспешно изпълнение на „git config“"
 
-#: builtin/gc.c:1512
-msgid "another process is scheduling background maintenance"
-msgstr "друг процес задава поддръжката на заден фон"
+#: builtin/gc.c:1562
+#, c-format
+msgid "failed to expand path '%s'"
+msgstr "грешка при заместването на пътя „%s“"
+
+#: builtin/gc.c:1591
+msgid "failed to start launchctl"
+msgstr "неуспешно стартиране на „launchctl“."
+
+#: builtin/gc.c:1628
+#, c-format
+msgid "failed to create directories for '%s'"
+msgstr "директориите за „%s“ не може да бъдат създадени"
+
+#: builtin/gc.c:1689
+#, c-format
+msgid "failed to bootstrap service %s"
+msgstr "услугата „%s“ не може се настрои първоначално"
 
-#: builtin/gc.c:1525
+#: builtin/gc.c:1760
+msgid "failed to create temp xml file"
+msgstr "неуспешно създаване на временен файл за xml"
+
+#: builtin/gc.c:1850
+msgid "failed to start schtasks"
+msgstr "задачите за периодично изпълнение не може да се стартират"
+
+#: builtin/gc.c:1894
 msgid "failed to run 'crontab -l'; your system might not support 'cron'"
 msgstr ""
 "неуспешно изпълнение на „crontab -l“.  Системата ви може да не поддържа "
 "„cron“"
 
-#: builtin/gc.c:1544
+#: builtin/gc.c:1911
 msgid "failed to run 'crontab'; your system might not support 'cron'"
 msgstr ""
 "неуспешно изпълнение на „crontab“.  Системата ви може да не поддържа „cron“"
 
-#: builtin/gc.c:1550
+#: builtin/gc.c:1915
 msgid "failed to open stdin of 'crontab'"
 msgstr "стандартният вход на „crontab“ не може да се отвори"
 
-#: builtin/gc.c:1592
+#: builtin/gc.c:1956
 msgid "'crontab' died"
 msgstr "процесът на „crontab“ умря"
 
-#: builtin/gc.c:1605
+#: builtin/gc.c:1990
+msgid "another process is scheduling background maintenance"
+msgstr "друг процес задава поддръжката на заден фон"
+
+#: builtin/gc.c:2009
 msgid "failed to add repo to global config"
 msgstr "неуспешно добавяне на хранилище към файла с глобални настройки"
 
-#: builtin/gc.c:1615
+#: builtin/gc.c:2019
 msgid "git maintenance <subcommand> [<options>]"
 msgstr "git maintenance ПОДКОМАНДА [ОПЦИЯ…]"
 
-#: builtin/gc.c:1634
+#: builtin/gc.c:2038
 #, c-format
 msgid "invalid subcommand: %s"
 msgstr "неправилна подкоманда: „%s“"
@@ -15773,12 +16106,12 @@ msgstr "неправилна подкоманда: „%s“"
 msgid "git grep [<options>] [-e] <pattern> [<rev>...] [[--] <path>...]"
 msgstr "git grep [ОПЦИЯ…] [-e] ШАБЛОН [ВЕРСИЯ…] [[--] ПЪТ…]"
 
-#: builtin/grep.c:225
+#: builtin/grep.c:223
 #, c-format
 msgid "grep: failed to create thread: %s"
 msgstr "grep: неуспешно създаване на нишка: %s"
 
-#: builtin/grep.c:279
+#: builtin/grep.c:277
 #, c-format
 msgid "invalid number of threads specified (%d) for %s"
 msgstr "зададен е неправилен брой нишки (%d) за %s"
@@ -15787,271 +16120,271 @@ msgstr "зададен е неправилен брой нишки (%d) за %s"
 #. variable for tweaking threads, currently
 #. grep.threads
 #.
-#: builtin/grep.c:287 builtin/index-pack.c:1576 builtin/index-pack.c:1766
-#: builtin/pack-objects.c:2936
+#: builtin/grep.c:285 builtin/index-pack.c:1589 builtin/index-pack.c:1808
+#: builtin/pack-objects.c:2944
 #, c-format
 msgid "no threads support, ignoring %s"
 msgstr "липсва поддръжка за нишки.  „%s“ ще се пренебрегне"
 
-#: builtin/grep.c:475 builtin/grep.c:600 builtin/grep.c:640
+#: builtin/grep.c:473 builtin/grep.c:601 builtin/grep.c:641
 #, c-format
 msgid "unable to read tree (%s)"
 msgstr "дървото не може да бъде прочетено (%s)"
 
-#: builtin/grep.c:655
+#: builtin/grep.c:656
 #, c-format
 msgid "unable to grep from object of type %s"
 msgstr "не може да се изпълни „grep“ от обект от вида %s"
 
-#: builtin/grep.c:736
+#: builtin/grep.c:737
 #, c-format
 msgid "switch `%c' expects a numerical value"
 msgstr "опцията „%c“ очаква число за аргумент"
 
-#: builtin/grep.c:835
+#: builtin/grep.c:836
 msgid "search in index instead of in the work tree"
 msgstr "търсене в индекса, а не в работното дърво"
 
-#: builtin/grep.c:837
+#: builtin/grep.c:838
 msgid "find in contents not managed by git"
 msgstr "търсене и във файловете, които не са под управлението на git"
 
-#: builtin/grep.c:839
+#: builtin/grep.c:840
 msgid "search in both tracked and untracked files"
 msgstr "търсене и в следените, и в неследените файлове"
 
-#: builtin/grep.c:841
+#: builtin/grep.c:842
 msgid "ignore files specified via '.gitignore'"
 msgstr "игнориране на файловете указани в „.gitignore“"
 
-#: builtin/grep.c:843
+#: builtin/grep.c:844
 msgid "recursively search in each submodule"
 msgstr "рекурсивно търсене във всички подмодули"
 
-#: builtin/grep.c:846
+#: builtin/grep.c:847
 msgid "show non-matching lines"
 msgstr "извеждане на редовете, които не съвпадат"
 
-#: builtin/grep.c:848
+#: builtin/grep.c:849
 msgid "case insensitive matching"
 msgstr "без значение на регистъра на буквите (главни/малки)"
 
-#: builtin/grep.c:850
+#: builtin/grep.c:851
 msgid "match patterns only at word boundaries"
 msgstr "напасване на шаблоните само по границите на думите"
 
-#: builtin/grep.c:852
+#: builtin/grep.c:853
 msgid "process binary files as text"
 msgstr "обработване на двоичните файлове като текстови"
 
-#: builtin/grep.c:854
+#: builtin/grep.c:855
 msgid "don't match patterns in binary files"
 msgstr "прескачане на двоичните файлове"
 
-#: builtin/grep.c:857
+#: builtin/grep.c:858
 msgid "process binary files with textconv filters"
 msgstr ""
 "обработване на двоичните файлове чрез филтри за преобразуване към текст"
 
-#: builtin/grep.c:859
+#: builtin/grep.c:860
 msgid "search in subdirectories (default)"
 msgstr "търсене в поддиректориите (стандартно)"
 
-#: builtin/grep.c:861
+#: builtin/grep.c:862
 msgid "descend at most <depth> levels"
 msgstr "навлизане максимално на тази ДЪЛБОЧИНА в дървото"
 
-#: builtin/grep.c:865
+#: builtin/grep.c:866
 msgid "use extended POSIX regular expressions"
 msgstr "разширени регулярни изрази по POSIX"
 
-#: builtin/grep.c:868
+#: builtin/grep.c:869
 msgid "use basic POSIX regular expressions (default)"
 msgstr "основни регулярни изрази по POSIX (стандартно)"
 
-#: builtin/grep.c:871
+#: builtin/grep.c:872
 msgid "interpret patterns as fixed strings"
 msgstr "шаблоните са дословни низове"
 
-#: builtin/grep.c:874
+#: builtin/grep.c:875
 msgid "use Perl-compatible regular expressions"
 msgstr "регулярни изрази на Perl"
 
-#: builtin/grep.c:877
+#: builtin/grep.c:878
 msgid "show line numbers"
 msgstr "извеждане на номерата на редовете"
 
-#: builtin/grep.c:878
+#: builtin/grep.c:879
 msgid "show column number of first match"
 msgstr "извеждане на номера на колоната на първото напасване"
 
-#: builtin/grep.c:879
+#: builtin/grep.c:880
 msgid "don't show filenames"
 msgstr "без извеждане на имената на файловете"
 
-#: builtin/grep.c:880
+#: builtin/grep.c:881
 msgid "show filenames"
 msgstr "извеждане на имената на файловете"
 
-#: builtin/grep.c:882
+#: builtin/grep.c:883
 msgid "show filenames relative to top directory"
 msgstr ""
 "извеждане на относителните имена на файловете спрямо основната директория на "
 "хранилището"
 
-#: builtin/grep.c:884
+#: builtin/grep.c:885
 msgid "show only filenames instead of matching lines"
 msgstr "извеждане само на имената на файловете без напасващите редове"
 
-#: builtin/grep.c:886
+#: builtin/grep.c:887
 msgid "synonym for --files-with-matches"
 msgstr "псевдоним на „--files-with-matches“"
 
-#: builtin/grep.c:889
+#: builtin/grep.c:890
 msgid "show only the names of files without match"
 msgstr ""
 "извеждане само на имената на файловете, които не съдържат ред, напасващ на "
 "шаблона"
 
-#: builtin/grep.c:891
+#: builtin/grep.c:892
 msgid "print NUL after filenames"
 msgstr "извеждане на нулевия знак „NUL“ след всяко име на файл"
 
-#: builtin/grep.c:894
+#: builtin/grep.c:895
 msgid "show only matching parts of a line"
 msgstr "извеждане само на частите на редовете, които съвпадат"
 
-#: builtin/grep.c:896
+#: builtin/grep.c:897
 msgid "show the number of matches instead of matching lines"
 msgstr "извеждане на броя на съвпаденията вместо напасващите редове"
 
-#: builtin/grep.c:897
+#: builtin/grep.c:898
 msgid "highlight matches"
 msgstr "оцветяване на напасванията"
 
-#: builtin/grep.c:899
+#: builtin/grep.c:900
 msgid "print empty line between matches from different files"
 msgstr "извеждане на празен ред между напасванията от различни файлове"
 
-#: builtin/grep.c:901
+#: builtin/grep.c:902
 msgid "show filename only once above matches from same file"
 msgstr ""
 "извеждане на името на файла само веднъж за всички напасвания от този файл"
 
-#: builtin/grep.c:904
+#: builtin/grep.c:905
 msgid "show <n> context lines before and after matches"
 msgstr "извеждане на такъв БРОЙ редове преди и след напасванията"
 
-#: builtin/grep.c:907
+#: builtin/grep.c:908
 msgid "show <n> context lines before matches"
 msgstr "извеждане на такъв БРОЙ редове преди напасванията"
 
-#: builtin/grep.c:909
+#: builtin/grep.c:910
 msgid "show <n> context lines after matches"
 msgstr "извеждане на такъв БРОЙ редове след напасванията"
 
-#: builtin/grep.c:911
+#: builtin/grep.c:912
 msgid "use <n> worker threads"
 msgstr "използване на такъв БРОЙ работещи нишки"
 
-#: builtin/grep.c:912
+#: builtin/grep.c:913
 msgid "shortcut for -C NUM"
 msgstr "псевдоним на „-C БРОЙ“"
 
-#: builtin/grep.c:915
+#: builtin/grep.c:916
 msgid "show a line with the function name before matches"
 msgstr "извеждане на ред с името на функцията, в която е напаснат шаблона"
 
-#: builtin/grep.c:917
+#: builtin/grep.c:918
 msgid "show the surrounding function"
 msgstr "извеждане на обхващащата функция"
 
-#: builtin/grep.c:920
+#: builtin/grep.c:921
 msgid "read patterns from file"
 msgstr "изчитане на шаблоните от ФАЙЛ"
 
-#: builtin/grep.c:922
+#: builtin/grep.c:923
 msgid "match <pattern>"
 msgstr "напасване на ШАБЛОН"
 
-#: builtin/grep.c:924
+#: builtin/grep.c:925
 msgid "combine patterns specified with -e"
 msgstr "комбиниране на шаблоните указани с опцията „-e“"
 
-#: builtin/grep.c:936
+#: builtin/grep.c:937
 msgid "indicate hit with exit status without output"
 msgstr ""
 "без извеждане на стандартния изход.  Изходният код указва наличието на "
 "напасване"
 
-#: builtin/grep.c:938
+#: builtin/grep.c:939
 msgid "show only matches from files that match all patterns"
 msgstr ""
 "извеждане на редове само от файловете, които напасват на всички шаблони"
 
-#: builtin/grep.c:940
-msgid "show parse tree for grep expression"
-msgstr "извеждане на дървото за анализ на регулярния израз"
-
-#: builtin/grep.c:944
+#: builtin/grep.c:942
 msgid "pager"
 msgstr "програма за преглед по страници"
 
-#: builtin/grep.c:944
+#: builtin/grep.c:942
 msgid "show matching files in the pager"
 msgstr "извеждане на съвпадащите файлове в програма за преглед по страници"
 
-#: builtin/grep.c:948
+#: builtin/grep.c:946
 msgid "allow calling of grep(1) (ignored by this build)"
 msgstr ""
 "позволяване на стартирането на grep(1) (текущият компилат пренебрегва тази "
 "опция)"
 
-#: builtin/grep.c:1014
+#: builtin/grep.c:1012
 msgid "no pattern given"
 msgstr "не сте задали шаблон"
 
-#: builtin/grep.c:1050
+#: builtin/grep.c:1048
 msgid "--no-index or --untracked cannot be used with revs"
 msgstr "опциите „--cached“ и „--untracked“ са несъвместими с версии."
 
-#: builtin/grep.c:1058
+#: builtin/grep.c:1056
 #, c-format
 msgid "unable to resolve revision: %s"
 msgstr "версията „%s“ не може бъде открита"
 
-#: builtin/grep.c:1088
+#: builtin/grep.c:1086
 msgid "--untracked not supported with --recurse-submodules"
 msgstr "опциите „--untracked“ и „--recurse-submodules“ са несъвместими"
 
-#: builtin/grep.c:1092
+#: builtin/grep.c:1090
 msgid "invalid option combination, ignoring --threads"
 msgstr "неправилна комбинация от опции, „--threads“ ще се пренебрегне"
 
-#: builtin/grep.c:1095 builtin/pack-objects.c:3655
+#: builtin/grep.c:1093 builtin/pack-objects.c:3672
 msgid "no threads support, ignoring --threads"
 msgstr "липсва поддръжка за нишки.  „--threads“ ще се пренебрегне"
 
-#: builtin/grep.c:1098 builtin/index-pack.c:1573 builtin/pack-objects.c:2933
+#: builtin/grep.c:1096 builtin/index-pack.c:1586 builtin/pack-objects.c:2941
 #, c-format
 msgid "invalid number of threads specified (%d)"
 msgstr "зададен е неправилен брой нишки: %d"
 
-#: builtin/grep.c:1132
+#: builtin/grep.c:1130
 msgid "--open-files-in-pager only works on the worktree"
 msgstr "опцията „--open-files-in-pager“ изисква търсене в работното дърво"
 
-#: builtin/grep.c:1158
+#: builtin/grep.c:1156
 msgid "--cached or --untracked cannot be used with --no-index"
 msgstr "опциите „--cached“ и „--untracked“ са несъвместими с „--no-index“"
 
-#: builtin/grep.c:1164
+#: builtin/grep.c:1159
+msgid "--untracked cannot be used with --cached"
+msgstr "опциите „--untracked“ и „--cached“ са несъвместими"
+
+#: builtin/grep.c:1165
 msgid "--[no-]exclude-standard cannot be used for tracked contents"
 msgstr ""
 "опциите „--(no-)exclude-standard“ са несъвместими с търсене по следени "
 "файлове"
 
-#: builtin/grep.c:1172
+#: builtin/grep.c:1173
 msgid "both --cached and trees are given"
 msgstr "опцията „--cached“ е несъвместима със задаване на дърво"
 
@@ -16186,12 +16519,12 @@ msgstr ""
 "никоя програма за преглед на информационните страници не успя да обработи "
 "заявката"
 
-#: builtin/help.c:520 builtin/help.c:531 git.c:337
+#: builtin/help.c:520 builtin/help.c:531 git.c:340
 #, c-format
 msgid "'%s' is aliased to '%s'"
 msgstr "„%s“ е псевдоним на „%s“"
 
-#: builtin/help.c:534 git.c:369
+#: builtin/help.c:534 git.c:372
 #, c-format
 msgid "bad alias.%s string: %s"
 msgstr "неправилен низ за настройката „alias.%s“: „%s“"
@@ -16239,7 +16572,7 @@ msgstr "грешка при четене на входните данни"
 msgid "used more bytes than were available"
 msgstr "използвани са повече от наличните байтове"
 
-#: builtin/index-pack.c:324 builtin/pack-objects.c:619
+#: builtin/index-pack.c:324 builtin/pack-objects.c:624
 msgid "pack too large for current definition of off_t"
 msgstr "пакетният файл е прекалено голям за текущата стойност на типа „off_t“"
 
@@ -16247,7 +16580,7 @@ msgstr "пакетният файл е прекалено голям за тек
 msgid "pack exceeds maximum allowed size"
 msgstr "пакетният файл надвишава максималния възможен размер"
 
-#: builtin/index-pack.c:342 builtin/repack.c:286
+#: builtin/index-pack.c:342
 #, c-format
 msgid "unable to create '%s'"
 msgstr "пакетният файл „%s“ не може да бъде създаден"
@@ -16339,7 +16672,7 @@ msgstr "грешка при проверката на пакетирани об
 #: builtin/index-pack.c:870
 #, c-format
 msgid "Not all child objects of %s are reachable"
-msgstr "Ð\9dÑ\8fкои Ð¾Ð±ÐµÐºÑ\82и, Ð½Ð°Ñ\81ледниÑ\86и Ð½Ð° â\80\9e%sâ\80\9c, Ð½Ðµ Ð¼Ð¾Ð³Ð°Ñ\82 да бъдат достигнати"
+msgstr "Ð\9dÑ\8fкои Ð¾Ð±ÐµÐºÑ\82и, Ð½Ð°Ñ\81ледниÑ\86и Ð½Ð° â\80\9e%sâ\80\9c, Ð½Ðµ Ð¼Ð¾Ð¶Ðµ да бъдат достигнати"
 
 #: builtin/index-pack.c:931 builtin/index-pack.c:978
 msgid "failed to apply delta"
@@ -16376,7 +16709,7 @@ msgstr ""
 msgid "Resolving deltas"
 msgstr "Откриване на съответните разлики"
 
-#: builtin/index-pack.c:1249 builtin/pack-objects.c:2697
+#: builtin/index-pack.c:1249 builtin/pack-objects.c:2707
 #, c-format
 msgid "unable to create thread: %s"
 msgstr "не може да се създаде нишка: %s"
@@ -16419,10 +16752,10 @@ msgstr "добавеният обект не може да се компреси
 msgid "local object %s is corrupt"
 msgstr "локалният обект „%s“ е повреден"
 
-#: builtin/index-pack.c:1444
+#: builtin/index-pack.c:1445
 #, c-format
-msgid "packfile name '%s' does not end with '.pack'"
-msgstr "името на пакетния файл „%s“ не завършва на „.pack“"
+msgid "packfile name '%s' does not end with '.%s'"
+msgstr "името на пакетния файл „%s“ не завършва с „%s“"
 
 #: builtin/index-pack.c:1469
 #, c-format
@@ -16434,79 +16767,83 @@ msgstr "грешка при запис на файла „%s“ „%s“"
 msgid "cannot close written %s file '%s'"
 msgstr "грешка при затварянето на записания файл „%s“ „%s“"
 
-#: builtin/index-pack.c:1501
+#: builtin/index-pack.c:1503
 msgid "error while closing pack file"
 msgstr "грешка при затварянето на пакетния файл"
 
-#: builtin/index-pack.c:1515
+#: builtin/index-pack.c:1517
 msgid "cannot store pack file"
 msgstr "пакетният файл не може да бъде запазен"
 
-#: builtin/index-pack.c:1523
+#: builtin/index-pack.c:1525
 msgid "cannot store index file"
 msgstr "файлът за индекса не може да бъде съхранен"
 
-#: builtin/index-pack.c:1567 builtin/pack-objects.c:2944
+#: builtin/index-pack.c:1534
+msgid "cannot store reverse index file"
+msgstr "файлът за индекса не може да бъде съхранен"
+
+#: builtin/index-pack.c:1580 builtin/pack-objects.c:2952
 #, c-format
 msgid "bad pack.indexversion=%<PRIu32>"
 msgstr "зададена е неправилна версия пакетиране: „pack.indexversion=%<PRIu32>“"
 
-#: builtin/index-pack.c:1631
+#: builtin/index-pack.c:1650
 #, c-format
 msgid "Cannot open existing pack file '%s'"
 msgstr "Съществуващият пакетен файл „%s“ не може да бъде отворен"
 
-#: builtin/index-pack.c:1633
+#: builtin/index-pack.c:1652
 #, c-format
 msgid "Cannot open existing pack idx file for '%s'"
 msgstr "Съществуващият индекс за пакетния файл „%s“ не може да бъде отворен"
 
-#: builtin/index-pack.c:1681
+#: builtin/index-pack.c:1700
 #, c-format
 msgid "non delta: %d object"
 msgid_plural "non delta: %d objects"
 msgstr[0] "%d обект не е разлика"
 msgstr[1] "%d обекта не са разлика"
 
-#: builtin/index-pack.c:1688
+#: builtin/index-pack.c:1707
 #, 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:1728
+#: builtin/index-pack.c:1765
 msgid "Cannot come back to cwd"
 msgstr "Процесът не може да се върне към предишната работна директория"
 
-#: builtin/index-pack.c:1777 builtin/index-pack.c:1780
-#: builtin/index-pack.c:1796 builtin/index-pack.c:1800
+#: builtin/index-pack.c:1819 builtin/index-pack.c:1822
+#: builtin/index-pack.c:1838 builtin/index-pack.c:1842
 #, c-format
 msgid "bad %s"
 msgstr "неправилна стойност „%s“"
 
-#: builtin/index-pack.c:1806 builtin/init-db.c:392 builtin/init-db.c:625
+#: builtin/index-pack.c:1848 builtin/init-db.c:392 builtin/init-db.c:625
 #, c-format
 msgid "unknown hash algorithm '%s'"
 msgstr "непознат алгоритъм за контролни суми „%s“"
 
-#: builtin/index-pack.c:1821
+#: builtin/index-pack.c:1867
 msgid "--fix-thin cannot be used without --stdin"
 msgstr "опцията „--fix-thin“ изисква „--stdin“"
 
-#: builtin/index-pack.c:1823
+#: builtin/index-pack.c:1869
 msgid "--stdin requires a git repository"
 msgstr "„--stdin“ изисква хранилище на git"
 
-#: builtin/index-pack.c:1825
+#: builtin/index-pack.c:1871
 msgid "--object-format cannot be used with --stdin"
 msgstr "опцията „--object-format“ и „--stdin“ са несъвместими"
 
-#: builtin/index-pack.c:1831
+#: builtin/index-pack.c:1886
 msgid "--verify with no packfile name given"
 msgstr "опцията „--verify“ изисква име на пакетен файл"
 
-#: builtin/index-pack.c:1892 builtin/unpack-objects.c:582
+#: builtin/index-pack.c:1956 builtin/unpack-objects.c:582
 msgid "fsck error in pack objects"
 msgstr "грешка при проверка с „fsck“ на пакетните обекти"
 
@@ -16728,132 +17065,132 @@ msgstr "опцията „--trailer“ е несъвместима с „--name-
 msgid "no input file given for in-place editing"
 msgstr "не е зададен входен файл за редактиране на място"
 
-#: builtin/log.c:58
+#: builtin/log.c:59
 msgid "git log [<options>] [<revision-range>] [[--] <path>...]"
 msgstr "git log [ОПЦИЯ…] [ДИАПАЗОН_НА_ВЕРСИИТЕ] [[--] ПЪТ…]"
 
-#: builtin/log.c:59
+#: builtin/log.c:60
 msgid "git show [<options>] <object>..."
 msgstr "git show [ОПЦИЯ…] ОБЕКТ…"
 
-#: builtin/log.c:112
+#: builtin/log.c:113
 #, c-format
 msgid "invalid --decorate option: %s"
 msgstr "неправилна опция „--decorate“: %s"
 
-#: builtin/log.c:179
+#: builtin/log.c:180
 msgid "show source"
 msgstr "извеждане на изходния код"
 
-#: builtin/log.c:180
-msgid "Use mail map file"
+#: builtin/log.c:181
+msgid "use mail map file"
 msgstr ""
-"Ð\98зползване на файл за съответствията на имената и адресите на е-поща („."
+"използване на файл за съответствията на имената и адресите на е-поща („."
 "mailmap“)"
 
-#: builtin/log.c:183
+#: builtin/log.c:184
 msgid "only decorate refs that match <pattern>"
 msgstr "специален формат само на указателите напасващи на ШАБЛОНа"
 
-#: builtin/log.c:185
+#: builtin/log.c:186
 msgid "do not decorate refs that match <pattern>"
 msgstr "без специален формат на указателите напасващи на ШАБЛОНа"
 
-#: builtin/log.c:186
+#: builtin/log.c:187
 msgid "decorate options"
 msgstr "настройки на форма̀та на извежданата информация"
 
-#: builtin/log.c:189
+#: builtin/log.c:190
 msgid ""
-"Trace the evolution of line range <start>,<end> or function :<funcname> in "
+"trace the evolution of line range <start>,<end> or function :<funcname> in "
 "<file>"
 msgstr ""
-"Ð\9fроследяване на еволюцията на диапазона от редове НАЧАЛО,КРАЙ или :ФУНКЦИЯта "
+"проследяване на еволюцията на диапазона от редове НАЧАЛО,КРАЙ или :ФУНКЦИЯта "
 "във ФАЙЛа"
 
-#: builtin/log.c:212
+#: builtin/log.c:213
 msgid "-L<range>:<file> cannot be used with pathspec"
 msgstr "опцията „-LДИАПАЗОН:ФАЙЛ“ не може да се ползва с път"
 
-#: builtin/log.c:302
+#: builtin/log.c:303
 #, c-format
 msgid "Final output: %d %s\n"
 msgstr "Резултат: %d %s\n"
 
-#: builtin/log.c:564
+#: builtin/log.c:566
 #, c-format
 msgid "git show %s: bad file"
 msgstr "git show %s: повреден файл"
 
-#: builtin/log.c:579 builtin/log.c:674
+#: builtin/log.c:581 builtin/log.c:671
 #, c-format
 msgid "could not read object %s"
 msgstr "обектът не може да бъде прочетен: %s"
 
-#: builtin/log.c:699
+#: builtin/log.c:696
 #, c-format
 msgid "unknown type: %d"
 msgstr "неизвестен вид: %d"
 
-#: builtin/log.c:848
+#: builtin/log.c:841
 #, c-format
 msgid "%s: invalid cover from description mode"
 msgstr "%s: неправилно придружаващо писмо от режима на описание"
 
-#: builtin/log.c:855
+#: builtin/log.c:848
 msgid "format.headers without value"
 msgstr "не е зададена стойност на „format.headers“"
 
-#: builtin/log.c:984
+#: builtin/log.c:977
 #, c-format
 msgid "cannot open patch file %s"
 msgstr "файлът-кръпка „%s“ не може да бъде отворен"
 
-#: builtin/log.c:1001
+#: builtin/log.c:994
 msgid "need exactly one range"
 msgstr "трябва да зададете точно един диапазон"
 
-#: builtin/log.c:1011
+#: builtin/log.c:1004
 msgid "not a range"
 msgstr "не е диапазон"
 
-#: builtin/log.c:1175
+#: builtin/log.c:1168
 msgid "cover letter needs email format"
 msgstr "придружаващото писмо трябва да е форматирано като е-писмо"
 
-#: builtin/log.c:1181
+#: builtin/log.c:1174
 msgid "failed to create cover-letter file"
 msgstr "неуспешно създаване на придружаващо писмо"
 
-#: builtin/log.c:1262
+#: builtin/log.c:1261
 #, c-format
 msgid "insane in-reply-to: %s"
 msgstr "неправилен формат на заглавната част за отговор „in-reply-to“: %s"
 
-#: builtin/log.c:1289
+#: builtin/log.c:1288
 msgid "git format-patch [<options>] [<since> | <revision-range>]"
 msgstr "git format-patch [ОПЦИЯ…] [ОТ | ДИАПАЗОН_НА_ВЕРСИИТЕ]"
 
-#: builtin/log.c:1347
+#: builtin/log.c:1346
 msgid "two output directories?"
 msgstr "може да укажете максимум една директория за изход"
 
-#: builtin/log.c:1498 builtin/log.c:2318 builtin/log.c:2320 builtin/log.c:2332
+#: builtin/log.c:1497 builtin/log.c:2317 builtin/log.c:2319 builtin/log.c:2331
 #, c-format
 msgid "unknown commit %s"
 msgstr "непознато подаване: „%s“"
 
-#: builtin/log.c:1509 builtin/replace.c:58 builtin/replace.c:207
+#: builtin/log.c:1508 builtin/replace.c:58 builtin/replace.c:207
 #: builtin/replace.c:210
 #, c-format
 msgid "failed to resolve '%s' as a valid ref"
 msgstr "„%s“ не е указател или не сочи към нищо"
 
-#: builtin/log.c:1518
+#: builtin/log.c:1517
 msgid "could not find exact merge base"
 msgstr "точната база за сливане не може да бъде открита"
 
-#: builtin/log.c:1528
+#: builtin/log.c:1527
 msgid ""
 "failed to get upstream, if you want to record base commit automatically,\n"
 "please use git branch --set-upstream-to to track a remote branch.\n"
@@ -16863,303 +17200,303 @@ msgstr ""
 "зададете, използвайте „git branch --set-upstream-to“.\n"
 "Можете ръчно да зададете базово подаване чрез „--base=<base-commit-id>“."
 
-#: builtin/log.c:1551
+#: builtin/log.c:1550
 msgid "failed to find exact merge base"
 msgstr "точната база при сливане не може да бъде открита"
 
-#: builtin/log.c:1568
+#: builtin/log.c:1567
 msgid "base commit should be the ancestor of revision list"
 msgstr "базовото подаване трябва да е предшественикът на списъка с версиите"
 
-#: builtin/log.c:1578
+#: builtin/log.c:1577
 msgid "base commit shouldn't be in revision list"
 msgstr "базовото подаване не може да е в списъка с версиите"
 
-#: builtin/log.c:1636
+#: builtin/log.c:1635
 msgid "cannot get patch id"
 msgstr "идентификаторът на кръпката не може да бъде получен"
 
-#: builtin/log.c:1693
+#: builtin/log.c:1692
 msgid "failed to infer range-diff origin of current series"
 msgstr ""
 "неуспешно определяне на началото на диапазонната разлика на текущата поредица"
 
-#: builtin/log.c:1695
+#: builtin/log.c:1694
 #, c-format
 msgid "using '%s' as range-diff origin of current series"
 msgstr ""
 "„%s“ се ползва като началото на диапазонната разлика на текущата поредица"
 
-#: builtin/log.c:1739
+#: builtin/log.c:1738
 msgid "use [PATCH n/m] even with a single patch"
 msgstr "номерация „[PATCH n/m]“ дори и при единствена кръпка"
 
-#: builtin/log.c:1742
+#: builtin/log.c:1741
 msgid "use [PATCH] even with multiple patches"
 msgstr "номерация „[PATCH]“ дори и при множество кръпки"
 
-#: builtin/log.c:1746
+#: builtin/log.c:1745
 msgid "print patches to standard out"
 msgstr "извеждане на кръпките на стандартния изход"
 
-#: builtin/log.c:1748
+#: builtin/log.c:1747
 msgid "generate a cover letter"
 msgstr "създаване на придружаващо писмо"
 
-#: builtin/log.c:1750
+#: builtin/log.c:1749
 msgid "use simple number sequence for output file names"
 msgstr "проста числова последователност за имената на файловете-кръпки"
 
-#: builtin/log.c:1751
+#: builtin/log.c:1750
 msgid "sfx"
 msgstr "ЗНАЦИ"
 
-#: builtin/log.c:1752
+#: builtin/log.c:1751
 msgid "use <sfx> instead of '.patch'"
 msgstr "използване на тези ЗНАЦИ за суфикс вместо „.patch“"
 
-#: builtin/log.c:1754
+#: builtin/log.c:1753
 msgid "start numbering patches at <n> instead of 1"
 msgstr "номерирането на кръпките да започва от този БРОЙ, а не с 1"
 
-#: builtin/log.c:1756
+#: builtin/log.c:1755
 msgid "mark the series as Nth re-roll"
 msgstr "отбелязване, че това е N-тата поредна редакция на поредицата от кръпки"
 
-#: builtin/log.c:1758
+#: builtin/log.c:1757
 msgid "max length of output filename"
 msgstr "максимална дължина на име на всеки пакетен файл"
 
-#: builtin/log.c:1760
-msgid "Use [RFC PATCH] instead of [PATCH]"
-msgstr "Ð\98зползване на „[RFC PATCH]“ вместо „[PATCH]“"
+#: builtin/log.c:1759
+msgid "use [RFC PATCH] instead of [PATCH]"
+msgstr "използване на „[RFC PATCH]“ вместо „[PATCH]“"
 
-#: builtin/log.c:1763
+#: builtin/log.c:1762
 msgid "cover-from-description-mode"
 msgstr "режим-придружаващо-писмо-по-описание"
 
-#: builtin/log.c:1764
+#: builtin/log.c:1763
 msgid "generate parts of a cover letter based on a branch's description"
 msgstr ""
 "генериране на частите на придружаващото писмо на базата на описанието на "
 "клона"
 
-#: builtin/log.c:1766
-msgid "Use [<prefix>] instead of [PATCH]"
-msgstr "Ð\98зползване на този „[ПРЕФИКС]“ вместо „[PATCH]“"
+#: builtin/log.c:1765
+msgid "use [<prefix>] instead of [PATCH]"
+msgstr "използване на този „[ПРЕФИКС]“ вместо „[PATCH]“"
 
-#: builtin/log.c:1769
+#: builtin/log.c:1768
 msgid "store resulting files in <dir>"
 msgstr "запазване на изходните файлове в тази ДИРЕКТОРИЯ"
 
-#: builtin/log.c:1772
+#: builtin/log.c:1771
 msgid "don't strip/add [PATCH]"
 msgstr "без добавяне/махане на префикса „[PATCH]“"
 
-#: builtin/log.c:1775
+#: builtin/log.c:1774
 msgid "don't output binary diffs"
 msgstr "без извеждане на разлики между двоични файлове"
 
-#: builtin/log.c:1777
+#: builtin/log.c:1776
 msgid "output all-zero hash in From header"
 msgstr "в заглавната част „From:“ (от) контролната сума да е само от нули"
 
-#: builtin/log.c:1779
+#: builtin/log.c:1778
 msgid "don't include a patch matching a commit upstream"
 msgstr "без кръпки, които присъстват в следения клон"
 
-#: builtin/log.c:1781
+#: builtin/log.c:1780
 msgid "show patch format instead of default (patch + stat)"
 msgstr ""
 "извеждане във формат за кръпки, а на в стандартния (кръпка и статистика)"
 
-#: builtin/log.c:1783
+#: builtin/log.c:1782
 msgid "Messaging"
 msgstr "Опции при изпращане"
 
-#: builtin/log.c:1784
+#: builtin/log.c:1783
 msgid "header"
 msgstr "ЗАГЛАВНА_ЧАСТ"
 
-#: builtin/log.c:1785
+#: builtin/log.c:1784
 msgid "add email header"
 msgstr "добавяне на тази ЗАГЛАВНА_ЧАСТ"
 
-#: builtin/log.c:1786 builtin/log.c:1787
+#: builtin/log.c:1785 builtin/log.c:1786
 msgid "email"
 msgstr "Е-ПОЩА"
 
-#: builtin/log.c:1786
+#: builtin/log.c:1785
 msgid "add To: header"
 msgstr "добавяне на заглавна част „To:“ (до)"
 
-#: builtin/log.c:1787
+#: builtin/log.c:1786
 msgid "add Cc: header"
 msgstr "добавяне на заглавна част „Cc:“ (и до)"
 
-#: builtin/log.c:1788
+#: builtin/log.c:1787
 msgid "ident"
 msgstr "ИДЕНТИЧНОСТ"
 
-#: builtin/log.c:1789
+#: builtin/log.c:1788
 msgid "set From address to <ident> (or committer ident if absent)"
 msgstr ""
 "задаване на адреса в заглавната част „From“ (от) да е тази ИДЕНТИЧНОСТ.  Ако "
 "не е зададена такава, се взима адреса на подаващия"
 
-#: builtin/log.c:1791
+#: builtin/log.c:1790
 msgid "message-id"
 msgstr "ИДЕНТИФИКАТОР_НА_СЪОБЩЕНИЕ"
 
-#: builtin/log.c:1792
+#: builtin/log.c:1791
 msgid "make first mail a reply to <message-id>"
 msgstr ""
 "първото съобщение да е в отговор на е-писмото с този "
 "ИДЕНТИФИКАТОР_НА_СЪОБЩЕНИЕ"
 
-#: builtin/log.c:1793 builtin/log.c:1796
+#: builtin/log.c:1792 builtin/log.c:1795
 msgid "boundary"
 msgstr "граница"
 
-#: builtin/log.c:1794
+#: builtin/log.c:1793
 msgid "attach the patch"
 msgstr "прикрепяне на кръпката"
 
-#: builtin/log.c:1797
+#: builtin/log.c:1796
 msgid "inline the patch"
 msgstr "включване на кръпката в текста на писмата"
 
-#: builtin/log.c:1801
+#: builtin/log.c:1800
 msgid "enable message threading, styles: shallow, deep"
 msgstr ""
 "използване на нишки за съобщенията.  СТИЛът е „shallow“ (плитък) или "
 "„deep“ (дълбок)"
 
-#: builtin/log.c:1803
+#: builtin/log.c:1802
 msgid "signature"
 msgstr "подпис"
 
-#: builtin/log.c:1804
+#: builtin/log.c:1803
 msgid "add a signature"
 msgstr "добавяне на поле за подпис"
 
-#: builtin/log.c:1805
+#: builtin/log.c:1804
 msgid "base-commit"
 msgstr "БАЗОВО_ПОДАВАНЕ"
 
-#: builtin/log.c:1806
+#: builtin/log.c:1805
 msgid "add prerequisite tree info to the patch series"
 msgstr "добавяне на необходимото БАЗово дърво към поредицата от кръпки"
 
-#: builtin/log.c:1809
+#: builtin/log.c:1808
 msgid "add a signature from a file"
 msgstr "добавяне на подпис от файл"
 
-#: builtin/log.c:1810
+#: builtin/log.c:1809
 msgid "don't print the patch filenames"
 msgstr "без извеждане на имената на кръпките"
 
-#: builtin/log.c:1812
+#: builtin/log.c:1811
 msgid "show progress while generating patches"
 msgstr "извеждане на напредъка във фазата на създаване на кръпките"
 
-#: builtin/log.c:1814
+#: builtin/log.c:1813
 msgid "show changes against <rev> in cover letter or single patch"
 msgstr ""
 "показване на промените спрямо ВЕРСията в придружаващото писмо или единствена "
 "кръпка"
 
-#: builtin/log.c:1817
+#: builtin/log.c:1816
 msgid "show changes against <refspec> in cover letter or single patch"
 msgstr ""
 "показване на промените спрямо указателя на ВЕРСията в придружаващото писмо "
 "или единствена кръпка"
 
-#: builtin/log.c:1819
+#: builtin/log.c:1818
 msgid "percentage by which creation is weighted"
 msgstr "процент за претегляне при оценка на създаването"
 
-#: builtin/log.c:1905
+#: builtin/log.c:1904
 #, c-format
 msgid "invalid ident line: %s"
 msgstr "грешна идентичност: %s"
 
-#: builtin/log.c:1920
+#: builtin/log.c:1919
 msgid "-n and -k are mutually exclusive"
 msgstr "опциите „-n“ и „-k“ са несъвместими"
 
-#: builtin/log.c:1922
+#: builtin/log.c:1921
 msgid "--subject-prefix/--rfc and -k are mutually exclusive"
 msgstr "опциите „--subject-prefix“/„-rfc“ и „-k“ са несъвместими"
 
-#: builtin/log.c:1930
+#: builtin/log.c:1929
 msgid "--name-only does not make sense"
 msgstr "опцията „--name-only“ е несъвместима с генерирането на кръпки"
 
-#: builtin/log.c:1932
+#: builtin/log.c:1931
 msgid "--name-status does not make sense"
 msgstr "опцията „--name-status“ е несъвместима с генерирането на кръпки"
 
-#: builtin/log.c:1934
+#: builtin/log.c:1933
 msgid "--check does not make sense"
 msgstr "опцията „--check“ е несъвместима с генерирането на кръпки"
 
-#: builtin/log.c:1956
+#: builtin/log.c:1955
 msgid "--stdout, --output, and --output-directory are mutually exclusive"
 msgstr ""
 "Опциите „--stdout“, „--output“ и „--output-directory“ са несъвместими една с "
 "друга"
 
-#: builtin/log.c:2079
+#: builtin/log.c:2078
 msgid "--interdiff requires --cover-letter or single patch"
 msgstr ""
 "опцията „--interdiff“ изисква опция „--cover-letter“ или единствена кръпка"
 
-#: builtin/log.c:2083
+#: builtin/log.c:2082
 msgid "Interdiff:"
 msgstr "Разлика в разликите:"
 
-#: builtin/log.c:2084
+#: builtin/log.c:2083
 #, c-format
 msgid "Interdiff against v%d:"
 msgstr "Разлика в разликите спрямо v%d:"
 
-#: builtin/log.c:2090
+#: builtin/log.c:2089
 msgid "--creation-factor requires --range-diff"
 msgstr "опцията „--creation-factor“ изисква опция „--range-diff“"
 
-#: builtin/log.c:2094
+#: builtin/log.c:2093
 msgid "--range-diff requires --cover-letter or single patch"
 msgstr ""
 "опцията „--range-diff“ изисква опция „--cover-letter“ или единствена кръпка"
 
-#: builtin/log.c:2102
+#: builtin/log.c:2101
 msgid "Range-diff:"
 msgstr "Диапазонна разлика:"
 
-#: builtin/log.c:2103
+#: builtin/log.c:2102
 #, c-format
 msgid "Range-diff against v%d:"
 msgstr "Диапазонна разлика спрямо v%d:"
 
-#: builtin/log.c:2114
+#: builtin/log.c:2113
 #, c-format
 msgid "unable to read signature file '%s'"
 msgstr "файлът „%s“ с подпис не може да бъде прочетен"
 
-#: builtin/log.c:2150
+#: builtin/log.c:2149
 msgid "Generating patches"
 msgstr "Създаване на кръпки"
 
-#: builtin/log.c:2194
+#: builtin/log.c:2193
 msgid "failed to create output files"
 msgstr "неуспешно създаване на изходни файлове"
 
-#: builtin/log.c:2253
+#: builtin/log.c:2252
 msgid "git cherry [-v] [<upstream> [<head> [<limit>]]]"
 msgstr "git cherry [-v] [ОТДАЛЕЧЕН_КЛОН [ВРЪХ [ПРЕДЕЛ]]]"
 
-#: builtin/log.c:2307
+#: builtin/log.c:2306
 #, c-format
 msgid ""
 "Could not find a tracked remote branch, please specify <upstream> manually.\n"
@@ -17167,112 +17504,116 @@ msgstr ""
 "Следеният отдалечен клон не бе открит, затова изрично задайте "
 "ОТДАЛЕЧЕН_КЛОН.\n"
 
-#: builtin/ls-files.c:471
+#: builtin/ls-files.c:486
 msgid "git ls-files [<options>] [<file>...]"
 msgstr "git ls-files [ОПЦИЯ…] [ФАЙЛ…]"
 
-#: builtin/ls-files.c:527
+#: builtin/ls-files.c:542
 msgid "identify the file status with tags"
 msgstr "извеждане на състоянието на файловете с еднобуквени флагове"
 
-#: builtin/ls-files.c:529
+#: builtin/ls-files.c:544
 msgid "use lowercase letters for 'assume unchanged' files"
 msgstr "малки букви за файловете, които да се счетат за непроменени"
 
-#: builtin/ls-files.c:531
+#: builtin/ls-files.c:546
 msgid "use lowercase letters for 'fsmonitor clean' files"
 msgstr "малки букви за файловете за командата „fsmonitor clean“"
 
-#: builtin/ls-files.c:533
+#: builtin/ls-files.c:548
 msgid "show cached files in the output (default)"
 msgstr "извеждане на кешираните файлове (стандартно)"
 
-#: builtin/ls-files.c:535
+#: builtin/ls-files.c:550
 msgid "show deleted files in the output"
 msgstr "извеждане на изтритите файлове"
 
-#: builtin/ls-files.c:537
+#: builtin/ls-files.c:552
 msgid "show modified files in the output"
 msgstr "извеждане на променените файлове"
 
-#: builtin/ls-files.c:539
+#: builtin/ls-files.c:554
 msgid "show other files in the output"
 msgstr "извеждане на другите файлове"
 
-#: builtin/ls-files.c:541
+#: builtin/ls-files.c:556
 msgid "show ignored files in the output"
 msgstr "извеждане на игнорираните файлове"
 
-#: builtin/ls-files.c:544
+#: builtin/ls-files.c:559
 msgid "show staged contents' object name in the output"
 msgstr "извеждане на името на обекта за съдържанието на индекса"
 
-#: builtin/ls-files.c:546
+#: builtin/ls-files.c:561
 msgid "show files on the filesystem that need to be removed"
 msgstr "извеждане на файловете, които трябва да бъдат изтрити"
 
-#: builtin/ls-files.c:548
+#: builtin/ls-files.c:563
 msgid "show 'other' directories' names only"
 msgstr "извеждане само на името на другите (неследените) директории"
 
-#: builtin/ls-files.c:550
+#: builtin/ls-files.c:565
 msgid "show line endings of files"
 msgstr "извеждане на знаците за край на ред във файловете"
 
-#: builtin/ls-files.c:552
+#: builtin/ls-files.c:567
 msgid "don't show empty directories"
 msgstr "без извеждане на празните директории"
 
-#: builtin/ls-files.c:555
+#: builtin/ls-files.c:570
 msgid "show unmerged files in the output"
 msgstr "извеждане на неслетите файлове"
 
-#: builtin/ls-files.c:557
+#: builtin/ls-files.c:572
 msgid "show resolve-undo information"
 msgstr "извеждане на информацията за отмяна на разрешените подавания"
 
-#: builtin/ls-files.c:559
+#: builtin/ls-files.c:574
 msgid "skip files matching pattern"
 msgstr "прескачане на файловете напасващи ШАБЛОНа"
 
-#: builtin/ls-files.c:562
+#: builtin/ls-files.c:577
 msgid "exclude patterns are read from <file>"
 msgstr "шаблоните за игнориране да се прочетат от този ФАЙЛ"
 
-#: builtin/ls-files.c:565
+#: builtin/ls-files.c:580
 msgid "read additional per-directory exclude patterns in <file>"
 msgstr ""
 "изчитане на допълнителните шаблони за игнориране по директория от този ФАЙЛ"
 
-#: builtin/ls-files.c:567
+#: builtin/ls-files.c:582
 msgid "add the standard git exclusions"
 msgstr "добавяне на стандартно игнорираните от Git файлове"
 
-#: builtin/ls-files.c:571
+#: builtin/ls-files.c:586
 msgid "make the output relative to the project top directory"
 msgstr "пътищата да са относителни спрямо основната директория на проекта"
 
-#: builtin/ls-files.c:574
+#: builtin/ls-files.c:589
 msgid "recurse through submodules"
 msgstr "рекурсивно обхождане подмодулите"
 
-#: builtin/ls-files.c:576
+#: builtin/ls-files.c:591
 msgid "if any <file> is not in the index, treat this as an error"
 msgstr "грешка, ако някой от тези ФАЙЛове не е в индекса"
 
-#: builtin/ls-files.c:577
+#: builtin/ls-files.c:592
 msgid "tree-ish"
 msgstr "УКАЗАТЕЛ_КЪМ_ДЪРВО"
 
-#: builtin/ls-files.c:578
+#: builtin/ls-files.c:593
 msgid "pretend that paths removed since <tree-ish> are still present"
 msgstr ""
 "считане, че пътищата изтрити след УКАЗАТЕЛя_КЪМ_ДЪРВО все още съществуват"
 
-#: builtin/ls-files.c:580
+#: builtin/ls-files.c:595
 msgid "show debugging data"
 msgstr "извеждане на информацията за изчистване на грешки"
 
+#: builtin/ls-files.c:597
+msgid "suppress duplicate entries"
+msgstr "без повтаряне на записите"
+
 #: builtin/ls-remote.c:9
 msgid ""
 "git ls-remote [--heads] [--tags] [--refs] [--upload-pack=<exec>]\n"
@@ -17283,39 +17624,39 @@ msgstr ""
 "                     [-q | --quiet] [--exit-code] [--get-url]\n"
 "                     [--symref] [ХРАНИЛИЩЕ [УКАЗАТЕЛ…]]"
 
-#: builtin/ls-remote.c:59
+#: builtin/ls-remote.c:60
 msgid "do not print remote URL"
 msgstr "без извеждане на адресите на отдалечените хранилища"
 
-#: builtin/ls-remote.c:60 builtin/ls-remote.c:62 builtin/rebase.c:1398
+#: builtin/ls-remote.c:61 builtin/ls-remote.c:63 builtin/rebase.c:1404
 msgid "exec"
 msgstr "КОМАНДА"
 
-#: builtin/ls-remote.c:61 builtin/ls-remote.c:63
+#: builtin/ls-remote.c:62 builtin/ls-remote.c:64
 msgid "path of git-upload-pack on the remote host"
 msgstr "път към командата „git-upload-pack“ на отдалечената машина"
 
-#: builtin/ls-remote.c:65
+#: builtin/ls-remote.c:66
 msgid "limit to tags"
 msgstr "само етикетите"
 
-#: builtin/ls-remote.c:66
+#: builtin/ls-remote.c:67
 msgid "limit to heads"
 msgstr "само върховете"
 
-#: builtin/ls-remote.c:67
+#: builtin/ls-remote.c:68
 msgid "do not show peeled tags"
 msgstr "без проследяване на непреките етикети"
 
-#: builtin/ls-remote.c:69
+#: builtin/ls-remote.c:70
 msgid "take url.<base>.insteadOf into account"
 msgstr "взимане предвид на „url.БАЗА.insteadOf“"
 
-#: builtin/ls-remote.c:72
+#: builtin/ls-remote.c:73
 msgid "exit with exit code 2 if no matching refs are found"
 msgstr "изход с код 2, ако не се открият съвпадащи указатели"
 
-#: builtin/ls-remote.c:75
+#: builtin/ls-remote.c:76
 msgid "show underlying ref in addition to the object pointed by it"
 msgstr "извеждане на указателя заедно с обекта сочен от него"
 
@@ -17474,196 +17815,196 @@ msgstr "указателят „%s“ не може да бъде изтрит"
 msgid "Merging %s with %s\n"
 msgstr "Сливане на „%s“ с „%s“\n"
 
-#: builtin/merge.c:57
+#: builtin/merge.c:58
 msgid "git merge [<options>] [<commit>...]"
 msgstr "git merge [ОПЦИЯ…] [ПОДАВАНЕ…]"
 
-#: builtin/merge.c:58
+#: builtin/merge.c:59
 msgid "git merge --abort"
 msgstr "git merge --abort"
 
-#: builtin/merge.c:59
+#: builtin/merge.c:60
 msgid "git merge --continue"
 msgstr "git merge --continue"
 
-#: builtin/merge.c:122
+#: builtin/merge.c:123
 msgid "switch `m' requires a value"
 msgstr "опцията „-m“ изисква стойност"
 
-#: builtin/merge.c:145
+#: builtin/merge.c:146
 #, c-format
 msgid "option `%s' requires a value"
 msgstr "опцията „%s“ изисква стойност"
 
-#: builtin/merge.c:198
+#: builtin/merge.c:199
 #, c-format
 msgid "Could not find merge strategy '%s'.\n"
 msgstr "Няма такава стратегия за сливане: „%s“.\n"
 
-#: builtin/merge.c:199
+#: builtin/merge.c:200
 #, c-format
 msgid "Available strategies are:"
 msgstr "Наличните стратегии са:"
 
-#: builtin/merge.c:204
+#: builtin/merge.c:205
 #, c-format
 msgid "Available custom strategies are:"
 msgstr "Допълнителните стратегии са:"
 
-#: builtin/merge.c:255 builtin/pull.c:133
+#: builtin/merge.c:256 builtin/pull.c:133
 msgid "do not show a diffstat at the end of the merge"
 msgstr "без извеждане на статистиката след завършване на сливане"
 
-#: builtin/merge.c:258 builtin/pull.c:136
+#: builtin/merge.c:259 builtin/pull.c:136
 msgid "show a diffstat at the end of the merge"
 msgstr "извеждане на статистиката след завършване на сливане"
 
-#: builtin/merge.c:259 builtin/pull.c:139
+#: builtin/merge.c:260 builtin/pull.c:139
 msgid "(synonym to --stat)"
 msgstr "(псевдоним на „--stat“)"
 
-#: builtin/merge.c:261 builtin/pull.c:142
+#: builtin/merge.c:262 builtin/pull.c:142
 msgid "add (at most <n>) entries from shortlog to merge commit message"
 msgstr ""
 "добавяне (на максимум такъв БРОЙ) записи от съкратения журнал в съобщението "
 "за подаване"
 
-#: builtin/merge.c:264 builtin/pull.c:148
+#: builtin/merge.c:265 builtin/pull.c:148
 msgid "create a single commit instead of doing a merge"
 msgstr "създаване на едно подаване вместо извършване на сливане"
 
-#: builtin/merge.c:266 builtin/pull.c:151
+#: builtin/merge.c:267 builtin/pull.c:151
 msgid "perform a commit if the merge succeeds (default)"
 msgstr "извършване на подаване при успешно сливане (стандартно действие)"
 
-#: builtin/merge.c:268 builtin/pull.c:154
+#: builtin/merge.c:269 builtin/pull.c:154
 msgid "edit message before committing"
 msgstr "редактиране на съобщението преди подаване"
 
-#: builtin/merge.c:270
+#: builtin/merge.c:271
 msgid "allow fast-forward (default)"
 msgstr "позволяване на превъртане (стандартно действие)"
 
-#: builtin/merge.c:272 builtin/pull.c:161
+#: builtin/merge.c:273 builtin/pull.c:161
 msgid "abort if fast-forward is not possible"
 msgstr "преустановяване, ако превъртането е невъзможно"
 
-#: builtin/merge.c:276 builtin/pull.c:164
+#: builtin/merge.c:277 builtin/pull.c:164
 msgid "verify that the named commit has a valid GPG signature"
 msgstr "проверка, че указаното подаване е с правилен подпис на GPG"
 
-#: builtin/merge.c:277 builtin/notes.c:787 builtin/pull.c:168
-#: builtin/rebase.c:539 builtin/rebase.c:1412 builtin/revert.c:114
+#: builtin/merge.c:278 builtin/notes.c:787 builtin/pull.c:168
+#: builtin/rebase.c:541 builtin/rebase.c:1418 builtin/revert.c:114
 msgid "strategy"
 msgstr "СТРАТЕГИЯ"
 
-#: builtin/merge.c:278 builtin/pull.c:169
+#: builtin/merge.c:279 builtin/pull.c:169
 msgid "merge strategy to use"
 msgstr "СТРАТЕГИЯ за сливане, която да се ползва"
 
-#: builtin/merge.c:279 builtin/pull.c:172
+#: builtin/merge.c:280 builtin/pull.c:172
 msgid "option=value"
 msgstr "ОПЦИЯ=СТОЙНОСТ"
 
-#: builtin/merge.c:280 builtin/pull.c:173
+#: builtin/merge.c:281 builtin/pull.c:173
 msgid "option for selected merge strategy"
 msgstr "ОПЦИЯ за избраната стратегия за сливане"
 
-#: builtin/merge.c:282
+#: builtin/merge.c:283
 msgid "merge commit message (for a non-fast-forward merge)"
 msgstr "СЪОБЩЕНИЕ при подаването със сливане (при същински сливания)"
 
-#: builtin/merge.c:289
+#: builtin/merge.c:290
 msgid "abort the current in-progress merge"
 msgstr "преустановяване на текущото сливане"
 
-#: builtin/merge.c:291
+#: builtin/merge.c:292
 msgid "--abort but leave index and working tree alone"
 msgstr "преустановяване без промяна на индекса и работното дърво"
 
-#: builtin/merge.c:293
+#: builtin/merge.c:294
 msgid "continue the current in-progress merge"
 msgstr "продължаване на текущото сливане"
 
-#: builtin/merge.c:295 builtin/pull.c:180
+#: builtin/merge.c:296 builtin/pull.c:180
 msgid "allow merging unrelated histories"
 msgstr "позволяване на сливане на независими истории"
 
-#: builtin/merge.c:302
+#: builtin/merge.c:303
 msgid "bypass pre-merge-commit and commit-msg hooks"
 msgstr ""
 "без изпълнение на куките преди подаване и сливане и при промяна на "
 "съобщението за подаване (pre-merge-commit и commit-msg)"
 
-#: builtin/merge.c:319
+#: builtin/merge.c:320
 msgid "could not run stash."
 msgstr "не може да се извърши скатаване"
 
-#: builtin/merge.c:324
+#: builtin/merge.c:325
 msgid "stash failed"
 msgstr "неуспешно скатаване"
 
-#: builtin/merge.c:329
+#: builtin/merge.c:330
 #, c-format
 msgid "not a valid object: %s"
 msgstr "неправилен обект: „%s“"
 
-#: builtin/merge.c:351 builtin/merge.c:368
+#: builtin/merge.c:352 builtin/merge.c:369
 msgid "read-tree failed"
 msgstr "неуспешно прочитане на обект-дърво"
 
-#: builtin/merge.c:398
+#: builtin/merge.c:399
 msgid " (nothing to squash)"
 msgstr " (няма какво да се вкара)"
 
-#: builtin/merge.c:409
+#: builtin/merge.c:410
 #, c-format
 msgid "Squash commit -- not updating HEAD\n"
 msgstr "Вкарано подаване — указателят „HEAD“ няма да бъде обновен\n"
 
-#: builtin/merge.c:459
+#: builtin/merge.c:460
 #, c-format
 msgid "No merge message -- not updating HEAD\n"
 msgstr ""
 "Липсва съобщение при подаване — указателят „HEAD“ няма да бъде обновен\n"
 
-#: builtin/merge.c:510
+#: builtin/merge.c:511
 #, c-format
 msgid "'%s' does not point to a commit"
 msgstr "„%s“ не сочи към подаване"
 
-#: builtin/merge.c:597
+#: builtin/merge.c:598
 #, c-format
 msgid "Bad branch.%s.mergeoptions string: %s"
 msgstr "Неправилен низ за настройката „branch.%s.mergeoptions“: „%s“"
 
-#: builtin/merge.c:723
+#: builtin/merge.c:724
 msgid "Not handling anything other than two heads merge."
 msgstr "Поддържа се само сливане на точно две истории."
 
-#: builtin/merge.c:736
+#: builtin/merge.c:737
 #, c-format
 msgid "Unknown option for merge-recursive: -X%s"
 msgstr "Непозната опция за рекурсивното сливане „merge-recursive“: „-X%s“"
 
-#: builtin/merge.c:755 t/helper/test-fast-rebase.c:209
+#: builtin/merge.c:756 t/helper/test-fast-rebase.c:209
 #, c-format
 msgid "unable to write %s"
 msgstr "„%s“ не може да бъде записан"
 
-#: builtin/merge.c:807
+#: builtin/merge.c:808
 #, c-format
 msgid "Could not read from '%s'"
 msgstr "От „%s“ не може да се чете"
 
-#: builtin/merge.c:816
+#: builtin/merge.c:817
 #, c-format
 msgid "Not committing merge; use 'git commit' to complete the merge.\n"
 msgstr ""
 "Сливането няма да бъде подадено.  За завършването му и подаването му "
 "използвайте командата „git commit“.\n"
 
-#: builtin/merge.c:822
+#: builtin/merge.c:823
 msgid ""
 "Please enter a commit message to explain why this merge is necessary,\n"
 "especially if it merges an updated upstream into a topic branch.\n"
@@ -17672,11 +18013,11 @@ msgstr ""
 "В съобщението при подаване добавете информация за причината за\n"
 "сливането, особено ако сливате обновен отдалечен клон в тематичен клон.\n"
 
-#: builtin/merge.c:827
+#: builtin/merge.c:828
 msgid "An empty message aborts the commit.\n"
 msgstr "Празно съобщение предотвратява подаването.\n"
 
-#: builtin/merge.c:830
+#: builtin/merge.c:831
 #, c-format
 msgid ""
 "Lines starting with '%c' will be ignored, and an empty message aborts\n"
@@ -17685,76 +18026,76 @@ msgstr ""
 "Редовете, които започват с „%c“, ще бъдат пропуснати, а празно\n"
 "съобщение преустановява подаването.\n"
 
-#: builtin/merge.c:883
+#: builtin/merge.c:884
 msgid "Empty commit message."
 msgstr "Празно съобщение при подаване."
 
-#: builtin/merge.c:898
+#: builtin/merge.c:899
 #, c-format
 msgid "Wonderful.\n"
 msgstr "Първият етап на сливането завърши.\n"
 
-#: builtin/merge.c:959
+#: builtin/merge.c:960
 #, c-format
 msgid "Automatic merge failed; fix conflicts and then commit the result.\n"
 msgstr ""
 "Неуспешно автоматично сливане — коригирайте конфликтите и подайте "
 "резултата.\n"
 
-#: builtin/merge.c:998
+#: builtin/merge.c:999
 msgid "No current branch."
 msgstr "Няма текущ клон."
 
-#: builtin/merge.c:1000
+#: builtin/merge.c:1001
 msgid "No remote for the current branch."
 msgstr "Текущият клон не следи никой."
 
-#: builtin/merge.c:1002
+#: builtin/merge.c:1003
 msgid "No default upstream defined for the current branch."
 msgstr "Текущият клон не следи никой клон."
 
-#: builtin/merge.c:1007
+#: builtin/merge.c:1008
 #, c-format
 msgid "No remote-tracking branch for %s from %s"
 msgstr "Никой клон не следи клона „%s“ от хранилището „%s“"
 
-#: builtin/merge.c:1064
+#: builtin/merge.c:1065
 #, c-format
 msgid "Bad value '%s' in environment '%s'"
 msgstr "Неправилна стойност „%s“ в средата „%s“"
 
-#: builtin/merge.c:1167
+#: builtin/merge.c:1168
 #, c-format
 msgid "not something we can merge in %s: %s"
 msgstr "не може да се слее в „%s“: %s"
 
-#: builtin/merge.c:1201
+#: builtin/merge.c:1202
 msgid "not something we can merge"
 msgstr "не може да се слее"
 
-#: builtin/merge.c:1311
+#: builtin/merge.c:1312
 msgid "--abort expects no arguments"
 msgstr "опцията „--abort“ не приема аргументи"
 
-#: builtin/merge.c:1315
+#: builtin/merge.c:1316
 msgid "There is no merge to abort (MERGE_HEAD missing)."
 msgstr ""
 "Не може да преустановите сливане, защото в момента не се извършва такова "
 "(липсва указател „MERGE_HEAD“)."
 
-#: builtin/merge.c:1333
+#: builtin/merge.c:1334
 msgid "--quit expects no arguments"
 msgstr "опцията „--quit“ не приема аргументи"
 
-#: builtin/merge.c:1346
+#: builtin/merge.c:1347
 msgid "--continue expects no arguments"
 msgstr "опцията „--continue“ не приема аргументи"
 
-#: builtin/merge.c:1350
+#: builtin/merge.c:1351
 msgid "There is no merge in progress (MERGE_HEAD missing)."
 msgstr "В момента не се извършва сливане (липсва указател „MERGE_HEAD“)."
 
-#: builtin/merge.c:1366
+#: builtin/merge.c:1367
 msgid ""
 "You have not concluded your merge (MERGE_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -17762,7 +18103,7 @@ msgstr ""
 "Не сте завършили сливане.  (Указателят „MERGE_HEAD“ съществува).\n"
 "Подайте промените си, преди да започнете ново сливане."
 
-#: builtin/merge.c:1373
+#: builtin/merge.c:1374
 msgid ""
 "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -17770,109 +18111,150 @@ msgstr ""
 "Не сте завършили отбиране на подаване (указателят „CHERRY_PICK_HEAD“\n"
 "съществува).  Подайте промените си, преди да започнете ново сливане."
 
-#: builtin/merge.c:1376
+#: builtin/merge.c:1377
 msgid "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists)."
 msgstr ""
 "Не сте завършили отбиране на подаване (указателят „CHERRY_PICK_HEAD“\n"
 "съществува)."
 
-#: builtin/merge.c:1390
+#: builtin/merge.c:1391
 msgid "You cannot combine --squash with --no-ff."
 msgstr "Опцията „--squash“ е несъвместима с „--no-ff“."
 
-#: builtin/merge.c:1392
+#: builtin/merge.c:1393
 msgid "You cannot combine --squash with --commit."
 msgstr "Опцията „--squash“ е несъвместима с „--commit“."
 
-#: builtin/merge.c:1408
+#: builtin/merge.c:1409
 msgid "No commit specified and merge.defaultToUpstream not set."
 msgstr ""
 "Не е указано подаване и настройката „merge.defaultToUpstream“ не е зададена."
 
-#: builtin/merge.c:1425
+#: builtin/merge.c:1426
 msgid "Squash commit into empty head not supported yet"
 msgstr "Вкарване на подаване във връх без история все още не се поддържа"
 
-#: builtin/merge.c:1427
+#: builtin/merge.c:1428
 msgid "Non-fast-forward commit does not make sense into an empty head"
 msgstr ""
 "Понеже върхът е без история, всички сливания са превъртания, не може да се "
 "извърши същинско сливане изисквано от опцията „--no-ff“"
 
-#: builtin/merge.c:1432
+#: builtin/merge.c:1433
 #, c-format
 msgid "%s - not something we can merge"
 msgstr "„%s“ — не е нещо, което може да се слее"
 
-#: builtin/merge.c:1434
+#: builtin/merge.c:1435
 msgid "Can merge only exactly one commit into empty head"
 msgstr "Можете да слеете точно едно подаване във връх без история"
 
-#: builtin/merge.c:1515
+#: builtin/merge.c:1516
 msgid "refusing to merge unrelated histories"
 msgstr "независими истории не може да се слеят"
 
-#: builtin/merge.c:1524
+#: builtin/merge.c:1525
 msgid "Already up to date."
 msgstr "Вече е обновено."
 
-#: builtin/merge.c:1534
+#: builtin/merge.c:1535
 #, c-format
 msgid "Updating %s..%s\n"
 msgstr "Обновяване „%s..%s“\n"
 
-#: builtin/merge.c:1580
+#: builtin/merge.c:1581
 #, c-format
 msgid "Trying really trivial in-index merge...\n"
 msgstr "Проба със сливане в рамките на индекса…\n"
 
-#: builtin/merge.c:1587
+#: builtin/merge.c:1588
 #, c-format
 msgid "Nope.\n"
 msgstr "Неуспешно сливане.\n"
 
-#: builtin/merge.c:1612
+#: builtin/merge.c:1613
 msgid "Already up to date. Yeeah!"
 msgstr "Вече е обновено!"
 
-#: builtin/merge.c:1618
+#: builtin/merge.c:1619
 msgid "Not possible to fast-forward, aborting."
 msgstr "Не може да се извърши превъртане, преустановяване на действието."
 
-#: builtin/merge.c:1646 builtin/merge.c:1711
+#: builtin/merge.c:1647 builtin/merge.c:1712
 #, c-format
 msgid "Rewinding the tree to pristine...\n"
 msgstr "Привеждане на дървото към първоначалното…\n"
 
-#: builtin/merge.c:1650
+#: builtin/merge.c:1651
 #, c-format
 msgid "Trying merge strategy %s...\n"
 msgstr "Пробване със стратегията за сливане „%s“…\n"
 
-#: builtin/merge.c:1702
+#: builtin/merge.c:1703
 #, c-format
 msgid "No merge strategy handled the merge.\n"
 msgstr "Никоя стратегия за сливане не може да извърши сливането.\n"
 
-#: builtin/merge.c:1704
+#: builtin/merge.c:1705
 #, c-format
 msgid "Merge with strategy %s failed.\n"
 msgstr "Неуспешно сливане със стратегия „%s“.\n"
 
-#: builtin/merge.c:1713
+#: builtin/merge.c:1714
 #, c-format
 msgid "Using the %s to prepare resolving by hand.\n"
 msgstr ""
 "Ползва се стратегията „%s“, която ще подготви дървото за коригиране на "
 "ръка.\n"
 
-#: builtin/merge.c:1727
+#: builtin/merge.c:1728
 #, c-format
 msgid "Automatic merge went well; stopped before committing as requested\n"
 msgstr ""
 "Автоматичното сливане завърши успешно.  Самото подаване не е извършено, "
 "защото бе зададена опцията „--no-commit“.\n"
 
+#: builtin/mktag.c:10
+msgid "git mktag"
+msgstr "git mktag"
+
+#: builtin/mktag.c:30
+#, c-format
+msgid "warning: tag input does not pass fsck: %s"
+msgstr "ПРЕДУПРЕЖДЕНИЕ: аргументът-етикет не минава проверка с „fsck“: %s"
+
+#: builtin/mktag.c:41
+#, c-format
+msgid "error: tag input does not pass fsck: %s"
+msgstr "ГРЕШКА: аргументът-етикет не минава проверка с „fsck“: %s"
+
+#: builtin/mktag.c:44
+#, c-format
+msgid "%d (FSCK_IGNORE?) should never trigger this callback"
+msgstr "%d (FSCK_IGNORE?) никога не трябва да задейства тази функция"
+
+#: builtin/mktag.c:59
+#, c-format
+msgid "could not read tagged object '%s'"
+msgstr "обектът с етикет не може да бъде прочетен: %s"
+
+#: builtin/mktag.c:62
+#, c-format
+msgid "object '%s' tagged as '%s', but is a '%s' type"
+msgstr "обектът „%s“ е с етикет за %s, но е %s"
+
+#: builtin/mktag.c:99
+msgid "tag on stdin did not pass our strict fsck check"
+msgstr "етикетът на стандартния вход не преминава строгата проверка с „fsck“"
+
+#: builtin/mktag.c:102
+msgid "tag on stdin did not refer to a valid object"
+msgstr "етикетът на стандартния вход не сочи към правилен обект"
+
+#: builtin/mktag.c:105 builtin/tag.c:232
+msgid "unable to write tag file"
+msgstr "файлът за етикета не може да бъде запазен"
+
 #: builtin/mktree.c:66
 msgid "git mktree [-z] [--missing] [--batch]"
 msgstr "git mktree [-z] [--missing] [--batch]"
@@ -17911,7 +18293,10 @@ msgstr ""
 "при препакетиране пакетните файлове, които са с по-малък от този размер, да "
 "се обединяват в пакети с по-голям от този размер"
 
-#: builtin/multi-pack-index.c:50 builtin/prune-packed.c:25
+#: builtin/multi-pack-index.c:50 builtin/notes.c:376 builtin/notes.c:431
+#: builtin/notes.c:509 builtin/notes.c:521 builtin/notes.c:598
+#: builtin/notes.c:665 builtin/notes.c:815 builtin/notes.c:963
+#: builtin/notes.c:985 builtin/prune-packed.c:25 builtin/tag.c:575
 msgid "too many arguments"
 msgstr "прекалено много аргументи"
 
@@ -18017,7 +18402,7 @@ msgstr "%s, обект: „%s“, цел: „%s“"
 msgid "Renaming %s to %s\n"
 msgstr "Преименуване на „%s“ на „%s“\n"
 
-#: builtin/mv.c:280 builtin/remote.c:785 builtin/repack.c:484
+#: builtin/mv.c:280 builtin/remote.c:785 builtin/repack.c:483
 #, c-format
 msgid "renaming '%s' failed"
 msgstr "неуспешно преименуване на „%s“"
@@ -18211,7 +18596,7 @@ msgstr "обектът-бележка не може да бъде записан
 msgid "the note contents have been left in %s"
 msgstr "съдържанието на бележката е във файла „%s“"
 
-#: builtin/notes.c:242 builtin/tag.c:533
+#: builtin/notes.c:242 builtin/tag.c:565
 #, c-format
 msgid "could not open or read '%s'"
 msgstr "файлът „%s“ не може да бъде отворен или прочетен"
@@ -18254,12 +18639,6 @@ msgstr ""
 "няма да се извърши „%s“ върху бележките в „%s“, защото са извън „refs/"
 "notes/“."
 
-#: builtin/notes.c:376 builtin/notes.c:431 builtin/notes.c:509
-#: builtin/notes.c:521 builtin/notes.c:598 builtin/notes.c:665
-#: builtin/notes.c:815 builtin/notes.c:963 builtin/notes.c:985
-msgid "too many parameters"
-msgstr "прекалено много параметри"
-
 #: builtin/notes.c:389 builtin/notes.c:678
 #, c-format
 msgid "no note found for object %s."
@@ -18319,8 +18698,8 @@ msgstr ""
 "опцията „--stdin“)"
 
 #: builtin/notes.c:517
-msgid "too few parameters"
-msgstr "пÑ\80екалено Ð¼Ð°Ð»ÐºÐ¾ Ð¿Ð°Ñ\80амеÑ\82Ñ\80и"
+msgid "too few arguments"
+msgstr "пÑ\80екалено Ð¼Ð°Ð»ÐºÐ¾ Ð°Ñ\80гÑ\83менÑ\82и"
 
 #: builtin/notes.c:538
 #, c-format
@@ -18452,7 +18831,7 @@ msgstr ""
 "резултата с „git notes merge --commit“ или преустановете сливането с "
 "командата „git notes merge --abort“.\n"
 
-#: builtin/notes.c:897 builtin/tag.c:546
+#: builtin/notes.c:897 builtin/tag.c:578
 #, c-format
 msgid "Failed to resolve '%s' as a valid ref."
 msgstr "Не може да се открие към какво сочи „%s“."
@@ -18470,7 +18849,7 @@ msgstr "опитът за изтриването на несъществуващ
 msgid "read object names from the standard input"
 msgstr "изчитане на имената на обектите от стандартния вход"
 
-#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:220
+#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:148
 msgid "do not remove, show only"
 msgstr "само извеждане без действително окастряне"
 
@@ -18486,7 +18865,7 @@ msgstr "УКАЗАТЕЛ_ЗА_БЕЛЕЖКА"
 msgid "use notes from <notes-ref>"
 msgstr "да се използва бележката сочена от този УКАЗАТЕЛ_ЗА_БЕЛЕЖКА"
 
-#: builtin/notes.c:1034 builtin/stash.c:1604
+#: builtin/notes.c:1034 builtin/stash.c:1671
 #, c-format
 msgid "unknown subcommand: %s"
 msgstr "непозната подкоманда: %s"
@@ -18504,107 +18883,121 @@ msgstr ""
 "git pack-objects [ОПЦИЯ…] ПРЕФИКС_НА_ИМЕТО [< СПИСЪК_С_УКАЗАТЕЛИ | < "
 "СПИСЪК_С_ОБЕКТИ]"
 
-#: builtin/pack-objects.c:443
+#: builtin/pack-objects.c:440
+#, c-format
+msgid ""
+"write_reuse_object: could not locate %s, expected at offset %<PRIuMAX> in "
+"pack %s"
+msgstr ""
+"write_reuse_object: „%s“ не може да се открие, а се очакваше при отместване "
+"%<PRIuMAX> в пакетния файл „%s“"
+
+#: builtin/pack-objects.c:448
 #, c-format
 msgid "bad packed object CRC for %s"
 msgstr "лоша контролна сума за пакетирания обект „%s“"
 
-#: builtin/pack-objects.c:454
+#: builtin/pack-objects.c:459
 #, c-format
 msgid "corrupt packed object for %s"
 msgstr "пакетиран обект с грешки за „%s“"
 
-#: builtin/pack-objects.c:585
+#: builtin/pack-objects.c:590
 #, c-format
 msgid "recursive delta detected for object %s"
 msgstr "рекурсивна разлика за обект „%s“"
 
-#: builtin/pack-objects.c:796
+#: builtin/pack-objects.c:801
 #, c-format
 msgid "ordered %u objects, expected %<PRIu32>"
 msgstr "подредени бяха %u обекта, а се очакваха %<PRIu32>"
 
-#: builtin/pack-objects.c:1004
+#: builtin/pack-objects.c:896
+#, c-format
+msgid "expected object at offset %<PRIuMAX> in pack %s"
+msgstr "очаква се обект при отместване %<PRIuMAX> в пакетния файл „%s“"
+
+#: builtin/pack-objects.c:1015
 msgid "disabling bitmap writing, packs are split due to pack.packSizeLimit"
 msgstr ""
 "изключване на записването на битовата маска, пакетите са разделени поради "
 "стойността на „pack.packSizeLimit“"
 
-#: builtin/pack-objects.c:1017
+#: builtin/pack-objects.c:1028
 msgid "Writing objects"
 msgstr "Записване на обектите"
 
-#: builtin/pack-objects.c:1078 builtin/update-index.c:90
+#: builtin/pack-objects.c:1089 builtin/update-index.c:90
 #, c-format
 msgid "failed to stat %s"
 msgstr "не може да бъде получена информация чрез „stat“ за „%s“"
 
-#: builtin/pack-objects.c:1131
+#: builtin/pack-objects.c:1141
 #, c-format
 msgid "wrote %<PRIu32> objects while expecting %<PRIu32>"
 msgstr "бяха записани %<PRIu32> обекти, а се очакваха %<PRIu32>"
 
-#: builtin/pack-objects.c:1348
+#: builtin/pack-objects.c:1358
 msgid "disabling bitmap writing, as some objects are not being packed"
 msgstr ""
 "изключване на записването на битовата маска, защото някои обекти няма да се "
 "пакетират"
 
-#: builtin/pack-objects.c:1796
+#: builtin/pack-objects.c:1806
 #, c-format
 msgid "delta base offset overflow in pack for %s"
 msgstr "прекалено далечно начало на отместването за обектите-разлика за „%s“"
 
-#: builtin/pack-objects.c:1805
+#: builtin/pack-objects.c:1815
 #, c-format
 msgid "delta base offset out of bound for %s"
 msgstr "недостижимо начало на отместването за обектите-разлика за „%s“"
 
-#: builtin/pack-objects.c:2086
+#: builtin/pack-objects.c:2096
 msgid "Counting objects"
 msgstr "Преброяване на обектите"
 
-#: builtin/pack-objects.c:2231
+#: builtin/pack-objects.c:2241
 #, c-format
 msgid "unable to parse object header of %s"
 msgstr "заглавната част на „%s“ не може да бъде анализирана"
 
-#: builtin/pack-objects.c:2301 builtin/pack-objects.c:2317
-#: builtin/pack-objects.c:2327
+#: builtin/pack-objects.c:2311 builtin/pack-objects.c:2327
+#: builtin/pack-objects.c:2337
 #, c-format
 msgid "object %s cannot be read"
 msgstr "обектът „%s“ не може да се прочете"
 
-#: builtin/pack-objects.c:2304 builtin/pack-objects.c:2331
+#: builtin/pack-objects.c:2314 builtin/pack-objects.c:2341
 #, c-format
 msgid "object %s inconsistent object length (%<PRIuMAX> vs %<PRIuMAX>)"
 msgstr "обектът „%s“ е с неправилна дължина (%<PRIuMAX>, а не %<PRIuMAX>)"
 
-#: builtin/pack-objects.c:2341
+#: builtin/pack-objects.c:2351
 msgid "suboptimal pack - out of memory"
 msgstr "неоптимизиран пакет — паметта свърши"
 
-#: builtin/pack-objects.c:2656
+#: builtin/pack-objects.c:2666
 #, c-format
 msgid "Delta compression using up to %d threads"
 msgstr "Делта компресията ще използва до %d нишки"
 
-#: builtin/pack-objects.c:2795
+#: builtin/pack-objects.c:2805
 #, c-format
 msgid "unable to pack objects reachable from tag %s"
 msgstr ""
 "обектите, които могат да бъдат достигнати от етикета „%s“, не може да бъдат "
 "пакетирани"
 
-#: builtin/pack-objects.c:2883
+#: builtin/pack-objects.c:2891
 msgid "Compressing objects"
 msgstr "Компресиране на обектите"
 
-#: builtin/pack-objects.c:2889
+#: builtin/pack-objects.c:2897
 msgid "inconsistency with delta count"
 msgstr "неправилен брой разлики"
 
-#: builtin/pack-objects.c:2961
+#: builtin/pack-objects.c:2976
 #, c-format
 msgid ""
 "value of uploadpack.blobpackfileuri must be of the form '<object-hash> <pack-"
@@ -18613,7 +19006,7 @@ msgstr ""
 "стойността на „uploadpack.blobpackfileuri“ трябва да е във формат "
 "„СУМА_НА_ОБЕКТ СУМА_НА_ПАКЕТ АДРЕС“ (получена е „%s“)"
 
-#: builtin/pack-objects.c:2964
+#: builtin/pack-objects.c:2979
 #, c-format
 msgid ""
 "object already configured in another uploadpack.blobpackfileuri (got '%s')"
@@ -18621,7 +19014,7 @@ msgstr ""
 "вече има настройка за обекта в друг ред „uploadpack."
 "blobpackfileuri“ (получена е „%s“)"
 
-#: builtin/pack-objects.c:2993
+#: builtin/pack-objects.c:3008
 #, c-format
 msgid ""
 "expected edge object ID, got garbage:\n"
@@ -18630,7 +19023,7 @@ msgstr ""
 "очаква се идентификатор на краен обект, а не:\n"
 " %s"
 
-#: builtin/pack-objects.c:2999
+#: builtin/pack-objects.c:3014
 #, c-format
 msgid ""
 "expected object ID, got garbage:\n"
@@ -18639,253 +19032,253 @@ msgstr ""
 "очаква се идентификатор на обект, а не:\n"
 " %s"
 
-#: builtin/pack-objects.c:3097
+#: builtin/pack-objects.c:3112
 msgid "invalid value for --missing"
 msgstr "неправилна стойност за „--missing“"
 
-#: builtin/pack-objects.c:3156 builtin/pack-objects.c:3264
+#: builtin/pack-objects.c:3171 builtin/pack-objects.c:3279
 msgid "cannot open pack index"
 msgstr "индексът на пакетния файл не може да бъде отворен"
 
-#: builtin/pack-objects.c:3187
+#: builtin/pack-objects.c:3202
 #, c-format
 msgid "loose object at %s could not be examined"
 msgstr "непакетираният обект в „%s“ не може да бъде анализиран"
 
-#: builtin/pack-objects.c:3272
+#: builtin/pack-objects.c:3287
 msgid "unable to force loose object"
 msgstr "оставането на обекта непакетиран не може да бъде наложено"
 
-#: builtin/pack-objects.c:3365
+#: builtin/pack-objects.c:3380
 #, c-format
 msgid "not a rev '%s'"
 msgstr "„%s“ не е версия"
 
-#: builtin/pack-objects.c:3368
+#: builtin/pack-objects.c:3383
 #, c-format
 msgid "bad revision '%s'"
 msgstr "неправилна версия „%s“"
 
-#: builtin/pack-objects.c:3393
+#: builtin/pack-objects.c:3408
 msgid "unable to add recent objects"
 msgstr "скорошните обекти не могат да бъдат добавени"
 
-#: builtin/pack-objects.c:3446
+#: builtin/pack-objects.c:3461
 #, c-format
 msgid "unsupported index version %s"
 msgstr "неподдържана версия на индекса „%s“"
 
-#: builtin/pack-objects.c:3450
+#: builtin/pack-objects.c:3465
 #, c-format
 msgid "bad index version '%s'"
 msgstr "неправилна версия на индекса „%s“"
 
-#: builtin/pack-objects.c:3488
+#: builtin/pack-objects.c:3503
 msgid "<version>[,<offset>]"
 msgstr "ВЕРСИЯ[,ОТМЕСТВАНЕ]"
 
-#: builtin/pack-objects.c:3489
+#: builtin/pack-objects.c:3504
 msgid "write the pack index file in the specified idx format version"
 msgstr ""
 "запазване на индекса на пакетните файлове във форма̀та с указаната версия"
 
-#: builtin/pack-objects.c:3492
+#: builtin/pack-objects.c:3507
 msgid "maximum size of each output pack file"
 msgstr "максимален размер на всеки пакетен файл"
 
-#: builtin/pack-objects.c:3494
+#: builtin/pack-objects.c:3509
 msgid "ignore borrowed objects from alternate object store"
 msgstr "игнориране на обектите заети от други хранилища на обекти"
 
-#: builtin/pack-objects.c:3496
+#: builtin/pack-objects.c:3511
 msgid "ignore packed objects"
 msgstr "игнориране на пакетираните обекти"
 
-#: builtin/pack-objects.c:3498
+#: builtin/pack-objects.c:3513
 msgid "limit pack window by objects"
 msgstr "ограничаване на прозореца за пакетиране по брой обекти"
 
-#: builtin/pack-objects.c:3500
+#: builtin/pack-objects.c:3515
 msgid "limit pack window by memory in addition to object limit"
 msgstr ""
 "ограничаване на прозореца за пакетиране и по памет освен по брой обекти"
 
-#: builtin/pack-objects.c:3502
+#: builtin/pack-objects.c:3517
 msgid "maximum length of delta chain allowed in the resulting pack"
 msgstr ""
 "максимална дължина на веригата от разлики, която е позволена в пакетния файл"
 
-#: builtin/pack-objects.c:3504
+#: builtin/pack-objects.c:3519
 msgid "reuse existing deltas"
 msgstr "преизползване на съществуващите разлики"
 
-#: builtin/pack-objects.c:3506
+#: builtin/pack-objects.c:3521
 msgid "reuse existing objects"
 msgstr "преизползване на съществуващите обекти"
 
-#: builtin/pack-objects.c:3508
+#: builtin/pack-objects.c:3523
 msgid "use OFS_DELTA objects"
 msgstr "използване на обекти „OFS_DELTA“"
 
-#: builtin/pack-objects.c:3510
+#: builtin/pack-objects.c:3525
 msgid "use threads when searching for best delta matches"
 msgstr ""
 "стартиране на нишки за претърсване на най-добрите съвпадения на разликите"
 
-#: builtin/pack-objects.c:3512
+#: builtin/pack-objects.c:3527
 msgid "do not create an empty pack output"
 msgstr "без създаване на празен пакетен файл"
 
-#: builtin/pack-objects.c:3514
+#: builtin/pack-objects.c:3529
 msgid "read revision arguments from standard input"
 msgstr "изчитане на версиите от стандартния вход"
 
-#: builtin/pack-objects.c:3516
+#: builtin/pack-objects.c:3531
 msgid "limit the objects to those that are not yet packed"
 msgstr "ограничаване до все още непакетираните обекти"
 
-#: builtin/pack-objects.c:3519
+#: builtin/pack-objects.c:3534
 msgid "include objects reachable from any reference"
 msgstr ""
 "включване на всички обекти, които могат да се достигнат от произволен "
 "указател"
 
-#: builtin/pack-objects.c:3522
+#: builtin/pack-objects.c:3537
 msgid "include objects referred by reflog entries"
 msgstr "включване и на обектите сочени от записите в журнала на указателите"
 
-#: builtin/pack-objects.c:3525
+#: builtin/pack-objects.c:3540
 msgid "include objects referred to by the index"
 msgstr "включване и на обектите сочени от индекса"
 
-#: builtin/pack-objects.c:3528
+#: builtin/pack-objects.c:3543
 msgid "output pack to stdout"
 msgstr "извеждане на пакета на стандартния изход"
 
-#: builtin/pack-objects.c:3530
+#: builtin/pack-objects.c:3545
 msgid "include tag objects that refer to objects to be packed"
 msgstr ""
 "включване и на обектите-етикети, които сочат към обектите, които ще бъдат "
 "пакетирани"
 
-#: builtin/pack-objects.c:3532
+#: builtin/pack-objects.c:3547
 msgid "keep unreachable objects"
 msgstr "запазване на недостижимите обекти"
 
-#: builtin/pack-objects.c:3534
+#: builtin/pack-objects.c:3549
 msgid "pack loose unreachable objects"
 msgstr "пакетиране и на недостижимите обекти"
 
-#: builtin/pack-objects.c:3536
+#: builtin/pack-objects.c:3551
 msgid "unpack unreachable objects newer than <time>"
 msgstr "разпакетиране на недостижимите обекти, които са по-нови от това ВРЕМЕ"
 
-#: builtin/pack-objects.c:3539
+#: builtin/pack-objects.c:3554
 msgid "use the sparse reachability algorithm"
 msgstr "използване на алгоритъм за частична достижимост"
 
-#: builtin/pack-objects.c:3541
+#: builtin/pack-objects.c:3556
 msgid "create thin packs"
 msgstr "създаване на съкратени пакети"
 
-#: builtin/pack-objects.c:3543
+#: builtin/pack-objects.c:3558
 msgid "create packs suitable for shallow fetches"
 msgstr "пакетиране подходящо за плитко доставяне"
 
-#: builtin/pack-objects.c:3545
+#: builtin/pack-objects.c:3560
 msgid "ignore packs that have companion .keep file"
 msgstr "игнориране на пакетите, които са придружени от файл „.keep“"
 
-#: builtin/pack-objects.c:3547
+#: builtin/pack-objects.c:3562
 msgid "ignore this pack"
 msgstr "пропускане на този пакет"
 
-#: builtin/pack-objects.c:3549
+#: builtin/pack-objects.c:3564
 msgid "pack compression level"
 msgstr "ниво на компресиране при пакетиране"
 
-#: builtin/pack-objects.c:3551
+#: builtin/pack-objects.c:3566
 msgid "do not hide commits by grafts"
 msgstr ""
 "извеждане на всички родители — дори и тези, които нормално са скрити при "
 "присажданията"
 
-#: builtin/pack-objects.c:3553
+#: builtin/pack-objects.c:3568
 msgid "use a bitmap index if available to speed up counting objects"
 msgstr ""
 "използване на съществуващи индекси на база битови маски за ускоряване на "
 "преброяването на обектите"
 
-#: builtin/pack-objects.c:3555
+#: builtin/pack-objects.c:3570
 msgid "write a bitmap index together with the pack index"
 msgstr ""
 "запазване и на индекс на база побитова маска, заедно с индекса за пакета"
 
-#: builtin/pack-objects.c:3559
+#: builtin/pack-objects.c:3574
 msgid "write a bitmap index if possible"
 msgstr "записване на индекси на база битови маски при възможност"
 
-#: builtin/pack-objects.c:3563
+#: builtin/pack-objects.c:3578
 msgid "handling for missing objects"
 msgstr "как да се обработват липсващите обекти"
 
-#: builtin/pack-objects.c:3566
+#: builtin/pack-objects.c:3581
 msgid "do not pack objects in promisor packfiles"
 msgstr "без пакетиране на обекти в гарантиращи пакети"
 
-#: builtin/pack-objects.c:3568
+#: builtin/pack-objects.c:3583
 msgid "respect islands during delta compression"
 msgstr "без промяна на групите при делта компресия"
 
-#: builtin/pack-objects.c:3570
+#: builtin/pack-objects.c:3585
 msgid "protocol"
 msgstr "протокол"
 
-#: builtin/pack-objects.c:3571
+#: builtin/pack-objects.c:3586
 msgid "exclude any configured uploadpack.blobpackfileuri with this protocol"
 msgstr "без ползване на настройки „uploadpack.blobpackfileuri“ с този протокол"
 
-#: builtin/pack-objects.c:3600
+#: builtin/pack-objects.c:3617
 #, c-format
 msgid "delta chain depth %d is too deep, forcing %d"
 msgstr "веригата с разлики е прекалено дълбока — %d, ще се ползва %d"
 
-#: builtin/pack-objects.c:3605
+#: builtin/pack-objects.c:3622
 #, c-format
 msgid "pack.deltaCacheLimit is too high, forcing %d"
 msgstr ""
 "Стойността на настройката „pack.deltaCacheLimit“ е прекалено голяма.  Ще се "
 "ползва %d"
 
-#: builtin/pack-objects.c:3659
+#: builtin/pack-objects.c:3676
 msgid "--max-pack-size cannot be used to build a pack for transfer"
 msgstr ""
 "опцията „--max-pack-size“ не може да се използва за създаване на пакетни "
 "файлове за пренос"
 
-#: builtin/pack-objects.c:3661
+#: builtin/pack-objects.c:3678
 msgid "minimum pack size limit is 1 MiB"
 msgstr "минималният размер на пакетите е 1 MiB"
 
-#: builtin/pack-objects.c:3666
+#: builtin/pack-objects.c:3683
 msgid "--thin cannot be used to build an indexable pack"
 msgstr ""
 "опцията „--thin“не може да се използва за създаване на пакетни файлове с "
 "индекс"
 
-#: builtin/pack-objects.c:3669
+#: builtin/pack-objects.c:3686
 msgid "--keep-unreachable and --unpack-unreachable are incompatible"
 msgstr "опциите „--keep-unreachable“ и „--unpack-unreachable“ са несъвместими"
 
-#: builtin/pack-objects.c:3675
+#: builtin/pack-objects.c:3692
 msgid "cannot use --filter without --stdout"
 msgstr "опцията „-filter“ изисква „-stdout“"
 
-#: builtin/pack-objects.c:3735
+#: builtin/pack-objects.c:3752
 msgid "Enumerating objects"
 msgstr "Изброяване на обектите"
 
-#: builtin/pack-objects.c:3766
+#: builtin/pack-objects.c:3783
 #, c-format
 msgid ""
 "Total %<PRIu32> (delta %<PRIu32>), reused %<PRIu32> (delta %<PRIu32>), pack-"
@@ -18894,6 +19287,20 @@ msgstr ""
 "Общо: %<PRIu32> (разлики: %<PRIu32>), преизползвани: %<PRIu32> (разлики: "
 "%<PRIu32>), преизползвани при пакетиране: %<PRIu32>"
 
+#: builtin/pack-redundant.c:601
+msgid ""
+"'git pack-redundant' is nominated for removal.\n"
+"If you still use this command, please add an extra\n"
+"option, '--i-still-use-this', on the command line\n"
+"and let us know you still use it by sending an e-mail\n"
+"to <git@vger.kernel.org>.  Thanks.\n"
+msgstr ""
+"Командата „git pack-redundant“ е остаряла и предстои\n"
+"пълното ѝ премахване.  Ако все още я ползвате, добавете\n"
+"опцията „--i-still-use-this“ на командния ред и молим да\n"
+"ни известите с е-писмо до пощенския списък:\n"
+"<git@vger.kernel.org>.\n"
+
 #: builtin/pack-refs.c:8
 msgid "git pack-refs [<options>]"
 msgstr "git pack-refs [ОПЦИЯ…]"
@@ -18951,7 +19358,7 @@ msgstr "Опции при сливане"
 msgid "incorporate changes by rebasing rather than merging"
 msgstr "внасяне на промените чрез пребазиране, а не чрез сливане"
 
-#: builtin/pull.c:158 builtin/rebase.c:490 builtin/revert.c:126
+#: builtin/pull.c:158 builtin/rebase.c:492 builtin/revert.c:126
 msgid "allow fast-forward"
 msgstr "позволяване на превъртания"
 
@@ -18976,36 +19383,7 @@ msgstr "брой подмодули издърпани паралелно"
 msgid "Invalid value for pull.ff: %s"
 msgstr "Неправилна стойност за „pull.ff“: „%s“"
 
-#: builtin/pull.c:348
-msgid ""
-"Pulling without specifying how to reconcile divergent branches is\n"
-"discouraged. You can squelch this message by running one of the following\n"
-"commands sometime before your next pull:\n"
-"\n"
-"  git config pull.rebase false  # merge (the default strategy)\n"
-"  git config pull.rebase true   # rebase\n"
-"  git config pull.ff only       # fast-forward only\n"
-"\n"
-"You can replace \"git config\" with \"git config --global\" to set a "
-"default\n"
-"preference for all repositories. You can also pass --rebase, --no-rebase,\n"
-"or --ff-only on the command line to override the configured default per\n"
-"invocation.\n"
-msgstr ""
-"Не се насърчава издърпване без указване на стратегията за съгласуване на\n"
-"клоните.  За да заглушите това съобщение, изпълнете някоя от следните\n"
-"команди преди следващото издърпване:\n"
-"\n"
-"  git config pull.rebase false  # сливане (стандартна стратегия)\n"
-"  git config pull.rebase true   # пребазиране\n"
-"  git config pull.ff only       # само превъртане\n"
-"\n"
-"За да зададете стандартната настройка за всички свои хранилища, добавете и\n"
-"опцията „--global“.  За да укажете стратегия при конкретно издърпване,\n"
-"използвайте опциите „--rebase“, „--no-rebase“, „--ff-only“.  Те са с\n"
-"приоритет пред настройките.\n"
-
-#: builtin/pull.c:458
+#: builtin/pull.c:445
 msgid ""
 "There is no candidate for rebasing against among the refs that you just "
 "fetched."
@@ -19013,14 +19391,14 @@ msgstr ""
 "Между указателите, които току що доставихте, няма подходящ кандидат, върху "
 "който да пребазирате."
 
-#: builtin/pull.c:460
+#: builtin/pull.c:447
 msgid ""
 "There are no candidates for merging among the refs that you just fetched."
 msgstr ""
 "Между указателите, които току що доставихте, няма подходящ кандидат, който "
 "да слеете."
 
-#: builtin/pull.c:461
+#: builtin/pull.c:448
 msgid ""
 "Generally this means that you provided a wildcard refspec which had no\n"
 "matches on the remote end."
@@ -19028,7 +19406,7 @@ msgstr ""
 "Най вероятно сте подали шаблон за указатели, който не е напаснал с нищо в "
 "отдалеченото хранилище."
 
-#: builtin/pull.c:464
+#: builtin/pull.c:451
 #, c-format
 msgid ""
 "You asked to pull from the remote '%s', but did not specify\n"
@@ -19039,43 +19417,43 @@ msgstr ""
 "Понеже това не е хранилището по подразбиране на текущия клон, трябва\n"
 "да укажете отдалечения клон на командния ред."
 
-#: builtin/pull.c:469 builtin/rebase.c:1246
+#: builtin/pull.c:456 builtin/rebase.c:1253
 msgid "You are not currently on a branch."
 msgstr "Извън всички клони."
 
-#: builtin/pull.c:471 builtin/pull.c:486
+#: builtin/pull.c:458 builtin/pull.c:473
 msgid "Please specify which branch you want to rebase against."
 msgstr "Укажете върху кой клон искате да пребазирате."
 
-#: builtin/pull.c:473 builtin/pull.c:488
+#: builtin/pull.c:460 builtin/pull.c:475
 msgid "Please specify which branch you want to merge with."
 msgstr "Укажете кой клон искате да слеете."
 
-#: builtin/pull.c:474 builtin/pull.c:489
+#: builtin/pull.c:461 builtin/pull.c:476
 msgid "See git-pull(1) for details."
 msgstr "За повече информация погледнете ръководството „git-pull(1)“"
 
-#: builtin/pull.c:476 builtin/pull.c:482 builtin/pull.c:491
-#: builtin/rebase.c:1252
+#: builtin/pull.c:463 builtin/pull.c:469 builtin/pull.c:478
+#: builtin/rebase.c:1259
 msgid "<remote>"
 msgstr "ОТДАЛЕЧЕНО_ХРАНИЛИЩЕ"
 
-#: builtin/pull.c:476 builtin/pull.c:491 builtin/pull.c:496
+#: builtin/pull.c:463 builtin/pull.c:478 builtin/pull.c:483
 msgid "<branch>"
 msgstr "КЛОН"
 
-#: builtin/pull.c:484 builtin/rebase.c:1244
+#: builtin/pull.c:471 builtin/rebase.c:1251
 msgid "There is no tracking information for the current branch."
 msgstr "Текущият клон не следи никой."
 
-#: builtin/pull.c:493
+#: builtin/pull.c:480
 msgid ""
 "If you wish to set tracking information for this branch you can do so with:"
 msgstr ""
 "Ако искате да зададете информация за следен клон, можете да направите това с "
 "командата:"
 
-#: builtin/pull.c:498
+#: builtin/pull.c:485
 #, c-format
 msgid ""
 "Your configuration specifies to merge with the ref '%s'\n"
@@ -19084,28 +19462,57 @@ msgstr ""
 "За сливане е указан отдалеченият указател „%s“,\n"
 "но такъв не е доставен."
 
-#: builtin/pull.c:609
+#: builtin/pull.c:596
 #, c-format
 msgid "unable to access commit %s"
 msgstr "недостъпно подаване: %s"
 
-#: builtin/pull.c:915
+#: builtin/pull.c:902
 msgid "ignoring --verify-signatures for rebase"
 msgstr "без „--verify-signatures“ при пребазиране"
 
-#: builtin/pull.c:972
+#: builtin/pull.c:930
+msgid ""
+"Pulling without specifying how to reconcile divergent branches is\n"
+"discouraged. You can squelch this message by running one of the following\n"
+"commands sometime before your next pull:\n"
+"\n"
+"  git config pull.rebase false  # merge (the default strategy)\n"
+"  git config pull.rebase true   # rebase\n"
+"  git config pull.ff only       # fast-forward only\n"
+"\n"
+"You can replace \"git config\" with \"git config --global\" to set a "
+"default\n"
+"preference for all repositories. You can also pass --rebase, --no-rebase,\n"
+"or --ff-only on the command line to override the configured default per\n"
+"invocation.\n"
+msgstr ""
+"Не се насърчава издърпване без указване на стратегията за съгласуване на\n"
+"клоните.  За да заглушите това съобщение, изпълнете някоя от следните\n"
+"команди преди следващото издърпване:\n"
+"\n"
+"  git config pull.rebase false  # сливане (стандартна стратегия)\n"
+"  git config pull.rebase true   # пребазиране\n"
+"  git config pull.ff only       # само превъртане\n"
+"\n"
+"За да зададете стандартната настройка за всички свои хранилища, добавете и\n"
+"опцията „--global“.  За да укажете стратегия при конкретно издърпване,\n"
+"използвайте опциите „--rebase“, „--no-rebase“, „--ff-only“.  Те са с\n"
+"приоритет пред настройките.\n"
+
+#: builtin/pull.c:991
 msgid "Updating an unborn branch with changes added to the index."
 msgstr "Обновяване на все още несъздаден клон с промените от индекса"
 
-#: builtin/pull.c:976
+#: builtin/pull.c:995
 msgid "pull with rebase"
 msgstr "издърпване с пребазиране"
 
-#: builtin/pull.c:977
+#: builtin/pull.c:996
 msgid "please commit or stash them."
 msgstr "трябва да подадете или скатаете промените."
 
-#: builtin/pull.c:1002
+#: builtin/pull.c:1021
 #, c-format
 msgid ""
 "fetch updated the current branch head.\n"
@@ -19115,7 +19522,7 @@ msgstr ""
 "доставянето обнови върха на текущия клон.  Работното\n"
 "ви копие бе превъртяно от подаване „%s“."
 
-#: builtin/pull.c:1008
+#: builtin/pull.c:1027
 #, c-format
 msgid ""
 "Cannot fast-forward your working tree.\n"
@@ -19132,15 +19539,15 @@ msgstr ""
 "    git reset --hard\n"
 "за връщане към нормално състояние."
 
-#: builtin/pull.c:1023
+#: builtin/pull.c:1042
 msgid "Cannot merge multiple branches into empty head."
 msgstr "Не може да сливате множество клони в празен върхов указател."
 
-#: builtin/pull.c:1027
+#: builtin/pull.c:1046
 msgid "Cannot rebase onto multiple branches."
 msgstr "Не може да пребазирате върху повече от един клон."
 
-#: builtin/pull.c:1041
+#: builtin/pull.c:1067
 msgid "cannot rebase with locally recorded submodule modifications"
 msgstr ""
 "пребазирането е невъзможно заради локално записаните промени по подмодулите"
@@ -19466,44 +19873,52 @@ msgstr "опциите „--all“ и „--mirror“ са несъвместим
 msgid "push options must not have new line characters"
 msgstr "опциите за изтласкване не трябва да съдържат знак за нов ред"
 
-#: builtin/range-diff.c:8
+#: builtin/range-diff.c:9
 msgid "git range-diff [<options>] <old-base>..<old-tip> <new-base>..<new-tip>"
 msgstr "git range-diff [ОПЦИЯ…] СТАРА_БАЗА..СТАР_ВРЪХ НОВА_БАЗА..НОВ_ВРЪХ"
 
-#: builtin/range-diff.c:9
+#: builtin/range-diff.c:10
 msgid "git range-diff [<options>] <old-tip>...<new-tip>"
 msgstr "git range-diff [ОПЦИЯ…] СТАР_ВРЪХ...НОВ_ВРЪХ"
 
-#: builtin/range-diff.c:10
+#: builtin/range-diff.c:11
 msgid "git range-diff [<options>] <base> <old-tip> <new-tip>"
 msgstr "git range-diff [ОПЦИЯ…] БАЗА СТАР_ВРЪХ НОВ_ВРЪХ"
 
-#: builtin/range-diff.c:22
+#: builtin/range-diff.c:28
 msgid "Percentage by which creation is weighted"
 msgstr "Процент за оценка на създаването"
 
-#: builtin/range-diff.c:24
+#: builtin/range-diff.c:30
 msgid "use simple diff colors"
 msgstr "използване на прости цветове за разликите"
 
-#: builtin/range-diff.c:26
+#: builtin/range-diff.c:32
 msgid "notes"
 msgstr "бележки"
 
-#: builtin/range-diff.c:26
+#: builtin/range-diff.c:32
 msgid "passed to 'git log'"
 msgstr "подава се на командата „git log“"
 
-#: builtin/range-diff.c:50 builtin/range-diff.c:54
+#: builtin/range-diff.c:35
+msgid "only emit output related to the first range"
+msgstr "извеждане само на информацията за първия диапазон"
+
+#: builtin/range-diff.c:37
+msgid "only emit output related to the second range"
+msgstr "извеждане само на информацията за втория диапазон"
+
+#: builtin/range-diff.c:60 builtin/range-diff.c:64
 #, c-format
-msgid "no .. in range: '%s'"
-msgstr "„..“ липсва в диапазона „%s“"
+msgid "not a commit range: '%s'"
+msgstr "не е диапазон с подавания: „%s“"
 
-#: builtin/range-diff.c:64
+#: builtin/range-diff.c:74
 msgid "single arg format must be symmetric range"
 msgstr "вариантът с единствен аргумент изисква симетричен диапазон"
 
-#: builtin/range-diff.c:79
+#: builtin/range-diff.c:89
 msgid "need two commit ranges"
 msgstr "необходими са два диапазона с подавания"
 
@@ -19608,197 +20023,197 @@ msgstr ""
 msgid "git rebase --continue | --abort | --skip | --edit-todo"
 msgstr "git rebase --continue | --abort | --skip | --edit-todo"
 
-#: builtin/rebase.c:193 builtin/rebase.c:217 builtin/rebase.c:244
+#: builtin/rebase.c:195 builtin/rebase.c:219 builtin/rebase.c:246
 #, c-format
 msgid "unusable todo list: '%s'"
 msgstr "неуспешно изтриване на списъка за изпълнение: „%s“"
 
-#: builtin/rebase.c:310
+#: builtin/rebase.c:312
 #, c-format
 msgid "could not create temporary %s"
 msgstr "не може да се създаде временна директория „%s“"
 
-#: builtin/rebase.c:316
+#: builtin/rebase.c:318
 msgid "could not mark as interactive"
 msgstr "невъзможно задаване на интерактивна работа"
 
-#: builtin/rebase.c:369
+#: builtin/rebase.c:371
 msgid "could not generate todo list"
 msgstr "файлът с командите не може да се генерира"
 
-#: builtin/rebase.c:411
+#: builtin/rebase.c:413
 msgid "a base commit must be provided with --upstream or --onto"
 msgstr "опциите „--upstream“ и „--onto“ изискват базово подаване"
 
-#: builtin/rebase.c:480
+#: builtin/rebase.c:482
 msgid "git rebase--interactive [<options>]"
 msgstr "git rebase--interactive [ОПЦИЯ…]"
 
-#: builtin/rebase.c:493 builtin/rebase.c:1388
+#: builtin/rebase.c:495 builtin/rebase.c:1394
 msgid "keep commits which start empty"
 msgstr "запазванe на първоначално празните подавания"
 
-#: builtin/rebase.c:497 builtin/revert.c:128
+#: builtin/rebase.c:499 builtin/revert.c:128
 msgid "allow commits with empty messages"
 msgstr "позволяване на празни съобщения при подаване"
 
-#: builtin/rebase.c:499
+#: builtin/rebase.c:501
 msgid "rebase merge commits"
 msgstr "пребазиране на подаванията със сливания"
 
-#: builtin/rebase.c:501
+#: builtin/rebase.c:503
 msgid "keep original branch points of cousins"
 msgstr ""
 "запазване на първоначалните точки на разклоняване на сестринските клони"
 
-#: builtin/rebase.c:503
+#: builtin/rebase.c:505
 msgid "move commits that begin with squash!/fixup!"
 msgstr "преместване на подаванията, които започват със „squash!“/“fixup!“"
 
-#: builtin/rebase.c:504
+#: builtin/rebase.c:506
 msgid "sign commits"
 msgstr "подписване на подаванията"
 
-#: builtin/rebase.c:506 builtin/rebase.c:1327
+#: builtin/rebase.c:508 builtin/rebase.c:1333
 msgid "display a diffstat of what changed upstream"
 msgstr "извеждане на статистика с промените в следения клон"
 
-#: builtin/rebase.c:508
+#: builtin/rebase.c:510
 msgid "continue rebase"
 msgstr "продължаване на пребазирането"
 
-#: builtin/rebase.c:510
+#: builtin/rebase.c:512
 msgid "skip commit"
 msgstr "прескачане на подаване"
 
-#: builtin/rebase.c:511
+#: builtin/rebase.c:513
 msgid "edit the todo list"
 msgstr "редактиране на списъка с команди за изпълнение"
 
-#: builtin/rebase.c:513
+#: builtin/rebase.c:515
 msgid "show the current patch"
 msgstr "извеждане на текущата кръпка"
 
-#: builtin/rebase.c:516
+#: builtin/rebase.c:518
 msgid "shorten commit ids in the todo list"
 msgstr "съкратени идентификатори в списъка за изпълнение"
 
-#: builtin/rebase.c:518
+#: builtin/rebase.c:520
 msgid "expand commit ids in the todo list"
 msgstr "пълни идентификатори в списъка за изпълнение"
 
-#: builtin/rebase.c:520
+#: builtin/rebase.c:522
 msgid "check the todo list"
 msgstr "проверка на списъка за изпълнение"
 
-#: builtin/rebase.c:522
+#: builtin/rebase.c:524
 msgid "rearrange fixup/squash lines"
 msgstr ""
 "преподреждане на редовете за вкарване на подаванията подаванията в "
 "предходните им със и без смени на съобщението"
 
-#: builtin/rebase.c:524
+#: builtin/rebase.c:526
 msgid "insert exec commands in todo list"
 msgstr "вмъкване на командите за изпълнение в списъка за изпълнение"
 
-#: builtin/rebase.c:525
+#: builtin/rebase.c:527
 msgid "onto"
 msgstr "върху"
 
-#: builtin/rebase.c:528
+#: builtin/rebase.c:530
 msgid "restrict-revision"
 msgstr "ограничена версия"
 
-#: builtin/rebase.c:528
+#: builtin/rebase.c:530
 msgid "restrict revision"
 msgstr "ограничена версия"
 
-#: builtin/rebase.c:530
+#: builtin/rebase.c:532
 msgid "squash-onto"
 msgstr "подаване, в което другите да се вкарат"
 
-#: builtin/rebase.c:531
+#: builtin/rebase.c:533
 msgid "squash onto"
 msgstr "подаване, в което другите да се вкарат"
 
-#: builtin/rebase.c:533
+#: builtin/rebase.c:535
 msgid "the upstream commit"
 msgstr "подаване на източника"
 
-#: builtin/rebase.c:535
+#: builtin/rebase.c:537
 msgid "head-name"
 msgstr "име на върха"
 
-#: builtin/rebase.c:535
+#: builtin/rebase.c:537
 msgid "head name"
 msgstr "име на върха"
 
-#: builtin/rebase.c:540
+#: builtin/rebase.c:542
 msgid "rebase strategy"
 msgstr "стратегия на пребазиране"
 
-#: builtin/rebase.c:541
+#: builtin/rebase.c:543
 msgid "strategy-opts"
 msgstr "опции на стратегията"
 
-#: builtin/rebase.c:542
+#: builtin/rebase.c:544
 msgid "strategy options"
 msgstr "опции на стратегията"
 
-#: builtin/rebase.c:543
+#: builtin/rebase.c:545
 msgid "switch-to"
 msgstr "преминаване към"
 
-#: builtin/rebase.c:544
+#: builtin/rebase.c:546
 msgid "the branch or commit to checkout"
 msgstr "клонът, към който да се премине"
 
-#: builtin/rebase.c:545
+#: builtin/rebase.c:547
 msgid "onto-name"
 msgstr "име на база"
 
-#: builtin/rebase.c:545
+#: builtin/rebase.c:547
 msgid "onto name"
 msgstr "име на база"
 
-#: builtin/rebase.c:546
+#: builtin/rebase.c:548
 msgid "cmd"
 msgstr "команда"
 
-#: builtin/rebase.c:546
+#: builtin/rebase.c:548
 msgid "the command to run"
 msgstr "команда за изпълнение"
 
-#: builtin/rebase.c:549 builtin/rebase.c:1421
+#: builtin/rebase.c:551 builtin/rebase.c:1427
 msgid "automatically re-schedule any `exec` that fails"
 msgstr ""
 "автоматично подаване за повторно изпълнение на командите завършили с неуспех"
 
-#: builtin/rebase.c:565
+#: builtin/rebase.c:567
 msgid "--[no-]rebase-cousins has no effect without --rebase-merges"
 msgstr "опциите „--[no-]rebase-cousins“ изискват опцията „--rebase-merges“"
 
-#: builtin/rebase.c:581
+#: builtin/rebase.c:583
 #, c-format
 msgid "%s requires the merge backend"
 msgstr "„%s“ изисква пребазиране"
 
-#: builtin/rebase.c:624
+#: builtin/rebase.c:626
 #, c-format
 msgid "could not get 'onto': '%s'"
 msgstr "не може да се премине към новата база, зададена с „onto“: „%s“"
 
-#: builtin/rebase.c:641
+#: builtin/rebase.c:643
 #, c-format
 msgid "invalid orig-head: '%s'"
 msgstr "неправилен указател към първоначален връх „orig-head“: „%s“"
 
-#: builtin/rebase.c:666
+#: builtin/rebase.c:668
 #, c-format
 msgid "ignoring invalid allow_rerere_autoupdate: '%s'"
 msgstr "неправилната стойност на „allow_rerere_autoupdate“ се прескача: „%s“"
 
-#: builtin/rebase.c:811 git-rebase--preserve-merges.sh:81
+#: builtin/rebase.c:813 git-rebase--preserve-merges.sh:81
 msgid ""
 "Resolve all conflicts manually, mark them as resolved with\n"
 "\"git add/rm <conflicted_files>\", then run \"git rebase --continue\".\n"
@@ -19812,7 +20227,7 @@ msgstr ""
 "За да откажете пребазирането и да се върнете към първоначалното състояние,\n"
 "изпълнете „git rebase --abort“."
 
-#: builtin/rebase.c:894
+#: builtin/rebase.c:896
 #, c-format
 msgid ""
 "\n"
@@ -19830,7 +20245,7 @@ msgstr ""
 "\n"
 "В резултат те не могат да се пребазират."
 
-#: builtin/rebase.c:1220
+#: builtin/rebase.c:1227
 #, c-format
 msgid ""
 "unrecognized empty type '%s'; valid values are \"drop\", \"keep\", and \"ask"
@@ -19839,7 +20254,7 @@ msgstr ""
 "неправилна стойност „%s“: вариантите са „drop“ (прескачане), "
 "„keep“ (запазване) и „ask“ (питане)"
 
-#: builtin/rebase.c:1238
+#: builtin/rebase.c:1245
 #, c-format
 msgid ""
 "%s\n"
@@ -19856,7 +20271,7 @@ msgstr ""
 "    git rebase КЛОН\n"
 "\n"
 
-#: builtin/rebase.c:1254
+#: builtin/rebase.c:1261
 #, c-format
 msgid ""
 "If you wish to set tracking information for this branch you can do so with:\n"
@@ -19869,154 +20284,154 @@ msgstr ""
 "\n"
 "    git branch --set-upstream-to=%s/КЛОН %s\n"
 
-#: builtin/rebase.c:1284
+#: builtin/rebase.c:1291
 msgid "exec commands cannot contain newlines"
 msgstr "командите за изпълнение не може да съдържат нови редове"
 
-#: builtin/rebase.c:1288
+#: builtin/rebase.c:1295
 msgid "empty exec command"
 msgstr "празна команда за изпълнение"
 
-#: builtin/rebase.c:1318
+#: builtin/rebase.c:1324
 msgid "rebase onto given branch instead of upstream"
 msgstr "пребазиране върху зададения, а не следения клон"
 
-#: builtin/rebase.c:1320
+#: builtin/rebase.c:1326
 msgid "use the merge-base of upstream and branch as the current base"
 msgstr "за текуща база да се ползва базата за сливане на клона и следеното"
 
-#: builtin/rebase.c:1322
+#: builtin/rebase.c:1328
 msgid "allow pre-rebase hook to run"
 msgstr "позволяване на куката преди пребазиране да се изпълни"
 
-#: builtin/rebase.c:1324
+#: builtin/rebase.c:1330
 msgid "be quiet. implies --no-stat"
 msgstr "без извеждане на информация.  Включва опцията „--no-stat“"
 
-#: builtin/rebase.c:1330
+#: builtin/rebase.c:1336
 msgid "do not show diffstat of what changed upstream"
 msgstr "без извеждане на статистика с промените в следения клон"
 
-#: builtin/rebase.c:1333
+#: builtin/rebase.c:1339
 msgid "add a Signed-off-by trailer to each commit"
 msgstr "добавяне на епилог за подпис „Signed-off-by“ към всяко подаване"
 
-#: builtin/rebase.c:1336
+#: builtin/rebase.c:1342
 msgid "make committer date match author date"
 msgstr "датата на подаващия да отговаря на датата на автора"
 
-#: builtin/rebase.c:1338
+#: builtin/rebase.c:1344
 msgid "ignore author date and use current date"
 msgstr "да се ползва днешна дата, а не тази на автора"
 
-#: builtin/rebase.c:1340
+#: builtin/rebase.c:1346
 msgid "synonym of --reset-author-date"
 msgstr "псевдоним на „--reset-author-date“"
 
-#: builtin/rebase.c:1342 builtin/rebase.c:1346
+#: builtin/rebase.c:1348 builtin/rebase.c:1352
 msgid "passed to 'git apply'"
 msgstr "подава се на командата „git apply“"
 
-#: builtin/rebase.c:1344
+#: builtin/rebase.c:1350
 msgid "ignore changes in whitespace"
 msgstr "без промени в празните знаци"
 
-#: builtin/rebase.c:1348 builtin/rebase.c:1351
+#: builtin/rebase.c:1354 builtin/rebase.c:1357
 msgid "cherry-pick all commits, even if unchanged"
 msgstr "отбиране на всички подавания дори да няма промени"
 
-#: builtin/rebase.c:1353
+#: builtin/rebase.c:1359
 msgid "continue"
 msgstr "продължаване"
 
-#: builtin/rebase.c:1356
+#: builtin/rebase.c:1362
 msgid "skip current patch and continue"
 msgstr "прескачане на текущата кръпка и продължаване"
 
-#: builtin/rebase.c:1358
+#: builtin/rebase.c:1364
 msgid "abort and check out the original branch"
 msgstr "преустановяване и възстановяване на първоначалния клон"
 
-#: builtin/rebase.c:1361
+#: builtin/rebase.c:1367
 msgid "abort but keep HEAD where it is"
 msgstr "преустановяване без промяна към какво сочи „HEAD“"
 
-#: builtin/rebase.c:1362
+#: builtin/rebase.c:1368
 msgid "edit the todo list during an interactive rebase"
 msgstr "редактиране на файла с команди при интерактивно пребазиране"
 
-#: builtin/rebase.c:1365
+#: builtin/rebase.c:1371
 msgid "show the patch file being applied or merged"
 msgstr "показване на кръпката, която се прилага или слива"
 
-#: builtin/rebase.c:1368
+#: builtin/rebase.c:1374
 msgid "use apply strategies to rebase"
 msgstr "при пребазиране да се ползва стратегия с прилагане"
 
-#: builtin/rebase.c:1372
+#: builtin/rebase.c:1378
 msgid "use merging strategies to rebase"
 msgstr "при пребазиране да се ползва стратегия със сливане"
 
-#: builtin/rebase.c:1376
+#: builtin/rebase.c:1382
 msgid "let the user edit the list of commits to rebase"
 msgstr ""
 "позволяване на потребителя да редактира списъка с подавания за пребазиране"
 
-#: builtin/rebase.c:1380
+#: builtin/rebase.c:1386
 msgid "(DEPRECATED) try to recreate merges instead of ignoring them"
 msgstr "(ОСТАРЯЛО) пресъздаване на сливанията вместо да се прескачат"
 
-#: builtin/rebase.c:1385
+#: builtin/rebase.c:1391
 msgid "how to handle commits that become empty"
 msgstr "как да се обработват оказалите се празни подавания"
 
-#: builtin/rebase.c:1392
+#: builtin/rebase.c:1398
 msgid "move commits that begin with squash!/fixup! under -i"
 msgstr ""
 "преместване на подаванията, които започват със „squash!“/“fixup!“ при „-i“"
 
-#: builtin/rebase.c:1399
+#: builtin/rebase.c:1405
 msgid "add exec lines after each commit of the editable list"
 msgstr ""
 "добавяне на редове с команди за изпълнение след всяко подаване в "
 "редактирания списък"
 
-#: builtin/rebase.c:1403
+#: builtin/rebase.c:1409
 msgid "allow rebasing commits with empty messages"
 msgstr "позволяване на пребазиране на подавания с празни съобщения"
 
-#: builtin/rebase.c:1407
+#: builtin/rebase.c:1413
 msgid "try to rebase merges instead of skipping them"
 msgstr "опит за пребазиране на сливанията вместо те да се прескачат"
 
-#: builtin/rebase.c:1410
+#: builtin/rebase.c:1416
 msgid "use 'merge-base --fork-point' to refine upstream"
 msgstr ""
 "за доуточняването на следения клон, използвайте:\n"
 "\n"
 "    git merge-base --fork-point"
 
-#: builtin/rebase.c:1412
+#: builtin/rebase.c:1418
 msgid "use the given merge strategy"
 msgstr "използване на зададената стратегията на сливане"
 
-#: builtin/rebase.c:1414 builtin/revert.c:115
+#: builtin/rebase.c:1420 builtin/revert.c:115
 msgid "option"
 msgstr "опция"
 
-#: builtin/rebase.c:1415
+#: builtin/rebase.c:1421
 msgid "pass the argument through to the merge strategy"
 msgstr "аргументът да се подаде на стратегията за сливане"
 
-#: builtin/rebase.c:1418
+#: builtin/rebase.c:1424
 msgid "rebase all reachable commits up to the root(s)"
 msgstr "пребазиране на всички достижими подавания до началното им подаване"
 
-#: builtin/rebase.c:1423
+#: builtin/rebase.c:1429
 msgid "apply all changes, even those already present upstream"
 msgstr "прилагане на всички промени, дори и наличните вече в следеното"
 
-#: builtin/rebase.c:1440
+#: builtin/rebase.c:1446
 msgid ""
 "the rebase.useBuiltin support has been removed!\n"
 "See its entry in 'git help config' for details."
@@ -20024,45 +20439,45 @@ msgstr ""
 "поддръжката на „rebase.useBuiltin“ е премахната.\n"
 "За повече информация вижте „git help config“."
 
-#: builtin/rebase.c:1446
+#: builtin/rebase.c:1452
 msgid "It looks like 'git am' is in progress. Cannot rebase."
 msgstr ""
 "Изглежда, че сега се прилагат кръпки чрез командата „git-am“.  Не може да "
 "пребазирате в момента."
 
-#: builtin/rebase.c:1487
+#: builtin/rebase.c:1493
 msgid ""
 "git rebase --preserve-merges is deprecated. Use --rebase-merges instead."
 msgstr ""
 "Опцията „--preserve-merges“ е остаряла.  Ползвайте „--rebase-merges“ вместо "
 "нея."
 
-#: builtin/rebase.c:1492
+#: builtin/rebase.c:1498
 msgid "cannot combine '--keep-base' with '--onto'"
 msgstr "опциите „--keep-base“ и „--onto“ са несъвместими"
 
-#: builtin/rebase.c:1494
+#: builtin/rebase.c:1500
 msgid "cannot combine '--keep-base' with '--root'"
 msgstr "опциите „--keep-base“ и „--root“ са несъвместими"
 
-#: builtin/rebase.c:1498
+#: builtin/rebase.c:1504
 msgid "cannot combine '--root' with '--fork-point'"
 msgstr "опциите „--root“ и „--fork-point“ са несъвместими"
 
-#: builtin/rebase.c:1501
+#: builtin/rebase.c:1507
 msgid "No rebase in progress?"
 msgstr "Изглежда в момента не тече пребазиране"
 
-#: builtin/rebase.c:1505
+#: builtin/rebase.c:1511
 msgid "The --edit-todo action can only be used during interactive rebase."
 msgstr ""
 "Опцията „--edit-todo“ е достъпна само по време на интерактивно пребазиране."
 
-#: builtin/rebase.c:1528 t/helper/test-fast-rebase.c:123
+#: builtin/rebase.c:1534 t/helper/test-fast-rebase.c:123
 msgid "Cannot read HEAD"
 msgstr "Указателят „HEAD“ не може да бъде прочетен"
 
-#: builtin/rebase.c:1540
+#: builtin/rebase.c:1546
 msgid ""
 "You must edit all merge conflicts and then\n"
 "mark them as resolved using git add"
@@ -20070,16 +20485,16 @@ msgstr ""
 "Трябва да редактирате всички конфликти при сливането.  След това\n"
 "отбележете коригирането им чрез командата „git add“"
 
-#: builtin/rebase.c:1559
+#: builtin/rebase.c:1565
 msgid "could not discard worktree changes"
 msgstr "промените в работното дърво не могат да бъдат занулени"
 
-#: builtin/rebase.c:1578
+#: builtin/rebase.c:1584
 #, c-format
 msgid "could not move back to %s"
 msgstr "връщането към „%s“ е невъзможно"
 
-#: builtin/rebase.c:1624
+#: builtin/rebase.c:1630
 #, c-format
 msgid ""
 "It seems that there is already a %s directory, and\n"
@@ -20100,138 +20515,138 @@ msgstr ""
 "за\n"
 "да не загубите случайно промени.\n"
 
-#: builtin/rebase.c:1652
+#: builtin/rebase.c:1658
 msgid "switch `C' expects a numerical value"
 msgstr "опцията „C“ очаква число за аргумент"
 
-#: builtin/rebase.c:1694
+#: builtin/rebase.c:1700
 #, c-format
 msgid "Unknown mode: %s"
 msgstr "Неизвестна стратегия: „%s“"
 
-#: builtin/rebase.c:1733
+#: builtin/rebase.c:1739
 msgid "--strategy requires --merge or --interactive"
 msgstr ""
 "опцията „--strategy“ изисква някоя от опциите „--merge“ или „--interactive“"
 
-#: builtin/rebase.c:1763
+#: builtin/rebase.c:1769
 msgid "cannot combine apply options with merge options"
 msgstr "опциите за „apply“ са несъвместими с опциите за сливане"
 
-#: builtin/rebase.c:1776
+#: builtin/rebase.c:1782
 #, c-format
 msgid "Unknown rebase backend: %s"
 msgstr "Непозната реализация на пребазиране: %s"
 
-#: builtin/rebase.c:1806
+#: builtin/rebase.c:1812
 msgid "--reschedule-failed-exec requires --exec or --interactive"
 msgstr ""
 "опцията „--reschedule-failed-exec“ изисква някоя от опциите „--exec“ или „--"
 "interactive“"
 
-#: builtin/rebase.c:1826
+#: builtin/rebase.c:1832
 msgid "cannot combine '--preserve-merges' with '--rebase-merges'"
 msgstr "опциите „--preserve-merges“ и „--rebase-merges“ са несъвместими"
 
-#: builtin/rebase.c:1830
+#: builtin/rebase.c:1836
 msgid ""
 "error: cannot combine '--preserve-merges' with '--reschedule-failed-exec'"
 msgstr ""
 "ГРЕШКА: опциите „--preserve-merges“ и „--reschedule-failed-exec“ са "
 "несъвместими"
 
-#: builtin/rebase.c:1854
+#: builtin/rebase.c:1860
 #, c-format
 msgid "invalid upstream '%s'"
 msgstr "неправилен следен клон: „%s“"
 
-#: builtin/rebase.c:1860
+#: builtin/rebase.c:1866
 msgid "Could not create new root commit"
 msgstr "Не може да се създаде ново начално подаване"
 
-#: builtin/rebase.c:1886
+#: builtin/rebase.c:1892
 #, c-format
 msgid "'%s': need exactly one merge base with branch"
 msgstr "„%s“: изисква се точно една база за сливане с клона"
 
-#: builtin/rebase.c:1889
+#: builtin/rebase.c:1895
 #, c-format
 msgid "'%s': need exactly one merge base"
 msgstr "„%s“: изисква се точно една база за пребазиране"
 
-#: builtin/rebase.c:1897
+#: builtin/rebase.c:1903
 #, c-format
 msgid "Does not point to a valid commit '%s'"
 msgstr "Указателят „%s“ не сочи към подаване"
 
-#: builtin/rebase.c:1923
+#: builtin/rebase.c:1931
 #, c-format
 msgid "fatal: no such branch/commit '%s'"
 msgstr "ФАТАЛНА ГРЕШКА: не съществува клон „%s“"
 
-#: builtin/rebase.c:1931 builtin/submodule--helper.c:40
+#: builtin/rebase.c:1939 builtin/submodule--helper.c:40
 #: builtin/submodule--helper.c:2414
 #, c-format
 msgid "No such ref: %s"
 msgstr "Такъв указател няма: %s"
 
-#: builtin/rebase.c:1942
+#: builtin/rebase.c:1950
 msgid "Could not resolve HEAD to a revision"
 msgstr "Подаването, сочено от указателя „HEAD“, не може да бъде открито"
 
-#: builtin/rebase.c:1963
+#: builtin/rebase.c:1971
 msgid "Please commit or stash them."
 msgstr "Промените трябва или да се подадат, или да се скатаят."
 
-#: builtin/rebase.c:1999
+#: builtin/rebase.c:2007
 #, c-format
 msgid "could not switch to %s"
 msgstr "не може да се премине към „%s“"
 
-#: builtin/rebase.c:2010
+#: builtin/rebase.c:2018
 msgid "HEAD is up to date."
 msgstr "Указателят „HEAD“ е напълно актуален."
 
-#: builtin/rebase.c:2012
+#: builtin/rebase.c:2020
 #, c-format
 msgid "Current branch %s is up to date.\n"
 msgstr "Текущият клон „%s“ е напълно актуален.\n"
 
-#: builtin/rebase.c:2020
+#: builtin/rebase.c:2028
 msgid "HEAD is up to date, rebase forced."
 msgstr "Указателят „HEAD“ е напълно актуален — принудително пребазиране"
 
-#: builtin/rebase.c:2022
+#: builtin/rebase.c:2030
 #, c-format
 msgid "Current branch %s is up to date, rebase forced.\n"
 msgstr "Текущият клон „%s“ е напълно актуален — принудително пребазиране\n"
 
-#: builtin/rebase.c:2030
+#: builtin/rebase.c:2038
 msgid "The pre-rebase hook refused to rebase."
 msgstr "Куката за изпълнение преди пребазиране отхвърли пребазирането."
 
-#: builtin/rebase.c:2037
+#: builtin/rebase.c:2045
 #, c-format
 msgid "Changes to %s:\n"
 msgstr "Промените в „%s“:\n"
 
-#: builtin/rebase.c:2040
+#: builtin/rebase.c:2048
 #, c-format
 msgid "Changes from %s to %s:\n"
 msgstr "Промените от „%s“ към „%s“:\n"
 
-#: builtin/rebase.c:2065
+#: builtin/rebase.c:2073
 #, c-format
 msgid "First, rewinding head to replay your work on top of it...\n"
 msgstr ""
 "Първо, указателят „HEAD“ започва да сочи към базата, върху която "
 "пребазирате…\n"
 
-#: builtin/rebase.c:2074
+#: builtin/rebase.c:2082
 msgid "Could not detach HEAD"
 msgstr "Указателят „HEAD“ не може да се отделѝ"
 
-#: builtin/rebase.c:2083
+#: builtin/rebase.c:2091
 #, c-format
 msgid "Fast-forwarded %s to %s.\n"
 msgstr "Превъртане на „%s“ към „%s“.\n"
@@ -20328,36 +20743,36 @@ msgstr "git reflog exists УКАЗАТЕЛ"
 msgid "'%s' is not a valid timestamp"
 msgstr "„%s“ не е правилна стойност за време"
 
-#: builtin/reflog.c:606
+#: builtin/reflog.c:609
 #, c-format
 msgid "Marking reachable objects..."
 msgstr "Отбелязване на достижимите обекти…"
 
-#: builtin/reflog.c:644
+#: builtin/reflog.c:647
 #, c-format
 msgid "%s points nowhere!"
 msgstr "„%s“ не сочи наникъде!"
 
-#: builtin/reflog.c:696
+#: builtin/reflog.c:699
 msgid "no reflog specified to delete"
 msgstr "не е указан журнал с подавания за изтриване"
 
-#: builtin/reflog.c:705
+#: builtin/reflog.c:708
 #, c-format
 msgid "not a reflog: %s"
 msgstr "„%s“ не е журнал с подавания"
 
-#: builtin/reflog.c:710
+#: builtin/reflog.c:713
 #, c-format
 msgid "no reflog for '%s'"
 msgstr "липсва журнал с подаванията за „%s“"
 
-#: builtin/reflog.c:756
+#: builtin/reflog.c:759
 #, c-format
 msgid "invalid ref format: %s"
 msgstr "неправилен формат на указател: %s"
 
-#: builtin/reflog.c:765
+#: builtin/reflog.c:768
 msgid "git reflog [ show | expire | delete | exists ]"
 msgstr "git reflog [ show | expire | delete | exists ]"
 
@@ -20881,11 +21296,11 @@ msgstr "Такъв адрес не е открит: %s"
 msgid "Will not delete all non-push URLs"
 msgstr "Никой от адресите, които не са за изтласкване, няма да се изтрие"
 
-#: builtin/repack.c:25
+#: builtin/repack.c:26
 msgid "git repack [<options>]"
 msgstr "git repack [ОПЦИЯ…]"
 
-#: builtin/repack.c:30
+#: builtin/repack.c:31
 msgid ""
 "Incremental repacks are incompatible with bitmap indexes.  Use\n"
 "--no-write-bitmap-index or disable the pack.writebitmaps configuration."
@@ -20894,131 +21309,131 @@ msgstr ""
 "Ползвайте опцията --no-write-bitmap-index или изключете настройката\n"
 "„pack.writebitmaps“."
 
-#: builtin/repack.c:197
+#: builtin/repack.c:198
 msgid "could not start pack-objects to repack promisor objects"
 msgstr ""
 "командата „pack-objects“ не може да се стартира за препакетирането на "
 "гарантиращите обекти"
 
-#: builtin/repack.c:268 builtin/repack.c:447
+#: builtin/repack.c:270 builtin/repack.c:446
 msgid "repack: Expecting full hex object ID lines only from pack-objects."
 msgstr ""
 "repack: от „pack-objects“ се изискват редове само с пълни шестнайсетични "
 "указатели."
 
-#: builtin/repack.c:295
+#: builtin/repack.c:294
 msgid "could not finish pack-objects to repack promisor objects"
 msgstr ""
 "командата „pack-objects“ не може да завърши за препакетирането на "
 "гарантиращите обекти"
 
-#: builtin/repack.c:323
+#: builtin/repack.c:322
 msgid "pack everything in a single pack"
 msgstr "пакетиране на всичко в пакет"
 
-#: builtin/repack.c:325
+#: builtin/repack.c:324
 msgid "same as -a, and turn unreachable objects loose"
 msgstr ""
 "същото като опцията „-a“.  Допълнително — недостижимите обекти да станат "
 "непакетирани"
 
-#: builtin/repack.c:328
+#: builtin/repack.c:327
 msgid "remove redundant packs, and run git-prune-packed"
 msgstr ""
 "премахване на ненужните пакетирани файлове и изпълнение на командата „git-"
 "prune-packed“"
 
-#: builtin/repack.c:330
+#: builtin/repack.c:329
 msgid "pass --no-reuse-delta to git-pack-objects"
 msgstr "подаване на опцията „--no-reuse-delta“ на командата „git-pack-objects“"
 
-#: builtin/repack.c:332
+#: builtin/repack.c:331
 msgid "pass --no-reuse-object to git-pack-objects"
 msgstr ""
 "подаване на опцията „--no-reuse-object“ на командата „git-pack-objects“"
 
-#: builtin/repack.c:334
+#: builtin/repack.c:333
 msgid "do not run git-update-server-info"
 msgstr "без изпълнение на командата „git-update-server-info“"
 
-#: builtin/repack.c:337
+#: builtin/repack.c:336
 msgid "pass --local to git-pack-objects"
 msgstr "подаване на опцията „--local“ на командата „git-pack-objects“"
 
-#: builtin/repack.c:339
+#: builtin/repack.c:338
 msgid "write bitmap index"
 msgstr "създаване и записване на индекси на база битови маски"
 
-#: builtin/repack.c:341
+#: builtin/repack.c:340
 msgid "pass --delta-islands to git-pack-objects"
 msgstr "подаване на опцията „--delta-islands“ на командата „git-pack-objects“"
 
-#: builtin/repack.c:342
+#: builtin/repack.c:341
 msgid "approxidate"
 msgstr "евристична дата"
 
-#: builtin/repack.c:343
+#: builtin/repack.c:342
 msgid "with -A, do not loosen objects older than this"
 msgstr ""
 "при комбинирането с опцията „-A“ — без разпакетиране на обектите по стари от "
 "това"
 
-#: builtin/repack.c:345
+#: builtin/repack.c:344
 msgid "with -a, repack unreachable objects"
 msgstr "с „-a“ — препакетиране на недостижимите обекти"
 
-#: builtin/repack.c:347
+#: builtin/repack.c:346
 msgid "size of the window used for delta compression"
 msgstr "размер на прозореца за делта компресията"
 
-#: builtin/repack.c:348 builtin/repack.c:354
+#: builtin/repack.c:347 builtin/repack.c:353
 msgid "bytes"
 msgstr "байтове"
 
-#: builtin/repack.c:349
+#: builtin/repack.c:348
 msgid "same as the above, but limit memory size instead of entries count"
 msgstr ""
 "същото като горната опция, но ограничението да е по размер на паметта, а не "
 "по броя на обектите"
 
-#: builtin/repack.c:351
+#: builtin/repack.c:350
 msgid "limits the maximum delta depth"
 msgstr "ограничаване на максималната дълбочина на делтата"
 
-#: builtin/repack.c:353
+#: builtin/repack.c:352
 msgid "limits the maximum number of threads"
 msgstr "ограничаване на максималния брой нишки"
 
-#: builtin/repack.c:355
+#: builtin/repack.c:354
 msgid "maximum size of each packfile"
 msgstr "максимален размер на всеки пакет"
 
-#: builtin/repack.c:357
+#: builtin/repack.c:356
 msgid "repack objects in packs marked with .keep"
 msgstr "препакетиране на обектите в пакети белязани с „.keep“"
 
-#: builtin/repack.c:359
+#: builtin/repack.c:358
 msgid "do not repack this pack"
 msgstr "без препакетиране на този пакет"
 
-#: builtin/repack.c:369
+#: builtin/repack.c:368
 msgid "cannot delete packs in a precious-objects repo"
 msgstr "пакетите в хранилище с важни обекти не може да се трият"
 
-#: builtin/repack.c:373
+#: builtin/repack.c:372
 msgid "--keep-unreachable and -A are incompatible"
 msgstr "Опциите „--keep-unreachable“ и „-A“ са несъвместими"
 
-#: builtin/repack.c:456
+#: builtin/repack.c:455
 msgid "Nothing new to pack."
 msgstr "Нищо ново за пакетиране"
 
-#: builtin/repack.c:486
+#: builtin/repack.c:485
 #, c-format
 msgid "missing required file: %s"
 msgstr "липсва задължителния файл „%s“"
 
-#: builtin/repack.c:488
+#: builtin/repack.c:487
 #, c-format
 msgid "could not unlink: %s"
 msgstr "неуспешно изтриване на „%s“"
@@ -21352,8 +21767,8 @@ msgstr "Указателят „HEAD“ сочи към „%s“"
 msgid "Cannot do a %s reset in the middle of a merge."
 msgstr "Не може да се извърши %s зануляване по време на сливане."
 
-#: builtin/reset.c:295 builtin/stash.c:520 builtin/stash.c:594
-#: builtin/stash.c:618
+#: builtin/reset.c:295 builtin/stash.c:587 builtin/stash.c:661
+#: builtin/stash.c:685
 msgid "be quiet, only report errors"
 msgstr "по-малко подробности, да се извеждат само грешките"
 
@@ -21440,19 +21855,19 @@ msgstr "Индексът не може да бъде занулен към ве
 msgid "Could not write new index file."
 msgstr "Новият индекс не може да бъде записан."
 
-#: builtin/rev-list.c:499
+#: builtin/rev-list.c:534
 msgid "cannot combine --exclude-promisor-objects and --missing"
 msgstr "опциите „--exclude-promisor-objects“ и „--missing“ и са несъвместими"
 
-#: builtin/rev-list.c:560
+#: builtin/rev-list.c:595
 msgid "object filtering requires --objects"
 msgstr "филтрирането на обекти изисква опцията „--objects“"
 
-#: builtin/rev-list.c:610
+#: builtin/rev-list.c:651
 msgid "rev-list does not support display of notes"
 msgstr "командата „rev-list“ не поддържа извеждането на бележки"
 
-#: builtin/rev-list.c:615
+#: builtin/rev-list.c:656
 msgid "marked counting is incompatible with --objects"
 msgstr "опцията „--objects“ е несъвместима с изброяването"
 
@@ -21699,54 +22114,52 @@ msgstr "git shortlog [ОПЦИЯ…] [ДИАПАЗОН_НА_ВЕРСИИТЕ] [[
 msgid "git log --pretty=short | git shortlog [<options>]"
 msgstr "git log --pretty=short | git shortlog [ОПЦИЯ…]"
 
-#: builtin/shortlog.c:135
+#: builtin/shortlog.c:123
 msgid "using multiple --group options with stdin is not supported"
 msgstr "повече от една опции „--group“ са несъвместими със стандартния вход"
 
-#: builtin/shortlog.c:145
+#: builtin/shortlog.c:133
 msgid "using --group=trailer with stdin is not supported"
 msgstr "опцията „--group=trailer“ е несъвместима със стандартния вход"
 
-#: builtin/shortlog.c:335
+#: builtin/shortlog.c:323
 #, c-format
 msgid "unknown group type: %s"
 msgstr "неизвестен вид група: %s"
 
-#: builtin/shortlog.c:363
-msgid "Group by committer rather than author"
-msgstr "Ð\93рупиране по подаващ, а не по автор"
+#: builtin/shortlog.c:351
+msgid "group by committer rather than author"
+msgstr "групиране по подаващ, а не по автор"
 
-#: builtin/shortlog.c:366
+#: builtin/shortlog.c:354
 msgid "sort output according to the number of commits per author"
 msgstr "подредба на подаванията по броя подавания от автор"
 
-#: builtin/shortlog.c:368
-msgid "Suppress commit descriptions, only provides commit count"
-msgstr "Ð\91ез описания на подаванията — да се показва само броя подавания"
+#: builtin/shortlog.c:356
+msgid "suppress commit descriptions, only provides commit count"
+msgstr "без описания на подаванията — да се показва само броя подавания"
 
-#: builtin/shortlog.c:370
-msgid "Show the email address of each author"
-msgstr "Ð\98звеждане на адреса на е-поща за всеки автор"
+#: builtin/shortlog.c:358
+msgid "show the email address of each author"
+msgstr "извеждане на адреса на е-поща за всеки автор"
 
-#: builtin/shortlog.c:371
+#: builtin/shortlog.c:359
 msgid "<w>[,<i1>[,<i2>]]"
 msgstr "<ШИРОЧИНА>[,<ОТСТЪП_1>[,<ОТСТЪП_2>]]"
 
-#: builtin/shortlog.c:372
-msgid "Linewrap output"
-msgstr ""
-"Пренасяне на редовете до тази обща ШИРОЧИНА (76), с ОТСТЪП_1 (6) за първия "
-"ред и ОТСТЪП_2 (9) за останалите"
+#: builtin/shortlog.c:360
+msgid "linewrap output"
+msgstr "пренасяне на редовете"
 
-#: builtin/shortlog.c:374
+#: builtin/shortlog.c:362
 msgid "field"
 msgstr "поле"
 
-#: builtin/shortlog.c:375
-msgid "Group by field"
-msgstr "Ð\93рупиране по поле"
+#: builtin/shortlog.c:363
+msgid "group by field"
+msgstr "групиране по поле"
 
-#: builtin/shortlog.c:403
+#: builtin/shortlog.c:391
 msgid "too many arguments given outside repository"
 msgstr "прекалено много аргументи извън хранилище"
 
@@ -21948,73 +22361,73 @@ msgstr ""
 msgid "git sparse-checkout (init|list|set|add|reapply|disable) <options>"
 msgstr "git sparse-checkout (init|list|set|add|reapply|disable) ОПЦИЯ…"
 
-#: builtin/sparse-checkout.c:50
+#: builtin/sparse-checkout.c:45
 msgid "git sparse-checkout list"
 msgstr "git sparse-checkout list"
 
-#: builtin/sparse-checkout.c:76
+#: builtin/sparse-checkout.c:71
 msgid "this worktree is not sparse (sparse-checkout file may not exist)"
 msgstr ""
 "това не е частично работно дърво (вероятно липсва файл „sparse-checkout“)"
 
-#: builtin/sparse-checkout.c:228
+#: builtin/sparse-checkout.c:223
 msgid "failed to create directory for sparse-checkout file"
 msgstr "директорията за частично изтегляне „%s“ не може да бъде създадена"
 
-#: builtin/sparse-checkout.c:269
+#: builtin/sparse-checkout.c:264
 msgid "unable to upgrade repository format to enable worktreeConfig"
 msgstr ""
 "настройката „worktreeConfig“ не може да се включи, защото форматът на "
 "хранилището не може да се обнови"
 
-#: builtin/sparse-checkout.c:271
+#: builtin/sparse-checkout.c:266
 msgid "failed to set extensions.worktreeConfig setting"
 msgstr "неуспешно задаване на настройката „extensions.worktreeConfig“"
 
-#: builtin/sparse-checkout.c:288
+#: builtin/sparse-checkout.c:283
 msgid "git sparse-checkout init [--cone]"
 msgstr "git sparse-checkout init [--cone]"
 
-#: builtin/sparse-checkout.c:307
+#: builtin/sparse-checkout.c:302
 msgid "initialize the sparse-checkout in cone mode"
 msgstr "инициализиране на частичното изтегляне в пътеводен режим"
 
-#: builtin/sparse-checkout.c:344
+#: builtin/sparse-checkout.c:339
 #, c-format
 msgid "failed to open '%s'"
 msgstr "„%s“ не може да се отвори"
 
-#: builtin/sparse-checkout.c:401
+#: builtin/sparse-checkout.c:396
 #, c-format
 msgid "could not normalize path %s"
 msgstr "пътят „%s“  не може да се нормализира"
 
-#: builtin/sparse-checkout.c:413
+#: builtin/sparse-checkout.c:408
 msgid "git sparse-checkout (set|add) (--stdin | <patterns>)"
 msgstr "git sparse-checkout (set|add) (--stdin | ШАБЛОН…)"
 
-#: builtin/sparse-checkout.c:438
+#: builtin/sparse-checkout.c:433
 #, c-format
 msgid "unable to unquote C-style string '%s'"
 msgstr "цитирането на низ, форматиран за C — „%s“ не може да бъде изчистено"
 
-#: builtin/sparse-checkout.c:492 builtin/sparse-checkout.c:516
+#: builtin/sparse-checkout.c:487 builtin/sparse-checkout.c:511
 msgid "unable to load existing sparse-checkout patterns"
 msgstr "шаблоните за частично изтегляне не могат да се заредят"
 
-#: builtin/sparse-checkout.c:561
+#: builtin/sparse-checkout.c:556
 msgid "read patterns from standard in"
 msgstr "изчитане на шаблоните от стандартния вход"
 
-#: builtin/sparse-checkout.c:576
+#: builtin/sparse-checkout.c:571
 msgid "git sparse-checkout reapply"
 msgstr "git sparse-checkout reapply"
 
-#: builtin/sparse-checkout.c:595
+#: builtin/sparse-checkout.c:590
 msgid "git sparse-checkout disable"
 msgstr "git sparse-checkout disable"
 
-#: builtin/sparse-checkout.c:623
+#: builtin/sparse-checkout.c:618
 msgid "error while refreshing working directory"
 msgstr "грешка при обновяване на работната директория"
 
@@ -22104,155 +22517,166 @@ msgid "%s is not a valid reference"
 msgstr "„%s“ е неправилно име за указател"
 
 #: builtin/stash.c:225
-msgid "git stash clear with parameters is unimplemented"
+msgid "git stash clear with arguments is unimplemented"
 msgstr "командата „git stash clear“ не поддържа аргументи"
 
-#: builtin/stash.c:404
+#: builtin/stash.c:429
+#, c-format
+msgid ""
+"WARNING: Untracked file in way of tracked file!  Renaming\n"
+"            %s -> %s\n"
+"         to make room.\n"
+msgstr ""
+"ПРЕДУПРЕЖДЕНИЕ: Неследен файл на мястото на следен!  Преименуване\n"
+"            „%s“ на „%s“\n"
+"         за да се направи място.\n"
+
+#: builtin/stash.c:490
 msgid "cannot apply a stash in the middle of a merge"
 msgstr "по време на сливане не може да приложите нещо скатано"
 
-#: builtin/stash.c:415
+#: builtin/stash.c:501
 #, c-format
 msgid "could not generate diff %s^!."
 msgstr "файлът с разликите „%s^!“ не може да се генерира"
 
-#: builtin/stash.c:422
+#: builtin/stash.c:508
 msgid "conflicts in index. Try without --index."
 msgstr ""
 "в индекса има конфликти.  Пробвайте да изпълните командата без опцията „--"
 "index“."
 
-#: builtin/stash.c:428
+#: builtin/stash.c:514
 msgid "could not save index tree"
 msgstr "дървото сочено от индекса не може да бъде запазено"
 
-#: builtin/stash.c:437
+#: builtin/stash.c:523
 msgid "could not restore untracked files from stash"
 msgstr "неследени файлове не могат да се възстановят от скатаното"
 
-#: builtin/stash.c:451
+#: builtin/stash.c:537
 #, c-format
 msgid "Merging %s with %s"
 msgstr "Сливане на „%s“ с „%s“"
 
-#: builtin/stash.c:461
+#: builtin/stash.c:547
 msgid "Index was not unstashed."
 msgstr "Индексът не е изваден от скатаното."
 
-#: builtin/stash.c:522 builtin/stash.c:620
+#: builtin/stash.c:589 builtin/stash.c:687
 msgid "attempt to recreate the index"
 msgstr "опит за повторно създаване на индекса"
 
-#: builtin/stash.c:566
+#: builtin/stash.c:633
 #, c-format
 msgid "Dropped %s (%s)"
 msgstr "Изтрито: „%s“ (%s)"
 
-#: builtin/stash.c:569
+#: builtin/stash.c:636
 #, c-format
 msgid "%s: Could not drop stash entry"
 msgstr "Скатаното „%s“ не може да бъде изтрито"
 
-#: builtin/stash.c:582
+#: builtin/stash.c:649
 #, c-format
 msgid "'%s' is not a stash reference"
 msgstr "„%s“ не е указател към нещо скатано"
 
-#: builtin/stash.c:632
+#: builtin/stash.c:699
 msgid "The stash entry is kept in case you need it again."
 msgstr "Скатаното е запазено в случай, че ви потрябва отново."
 
-#: builtin/stash.c:655
+#: builtin/stash.c:722
 msgid "No branch name specified"
 msgstr "Не е указано име на клон"
 
-#: builtin/stash.c:799 builtin/stash.c:836
+#: builtin/stash.c:866 builtin/stash.c:903
 #, c-format
 msgid "Cannot update %s with %s"
 msgstr "Указателят „%s“ не може да бъде обновен да сочи към „%s“"
 
-#: builtin/stash.c:817 builtin/stash.c:1471 builtin/stash.c:1536
+#: builtin/stash.c:884 builtin/stash.c:1538 builtin/stash.c:1603
 msgid "stash message"
 msgstr "съобщение при скатаване"
 
-#: builtin/stash.c:827
+#: builtin/stash.c:894
 msgid "\"git stash store\" requires one <commit> argument"
 msgstr "командата „git stash store“ изисква точно един аргумент-ПОДАВАНЕ"
 
-#: builtin/stash.c:1042
+#: builtin/stash.c:1109
 msgid "No changes selected"
 msgstr "Не са избрани никакви промени"
 
-#: builtin/stash.c:1142
+#: builtin/stash.c:1209
 msgid "You do not have the initial commit yet"
 msgstr "Все още липсва първоначално подаване"
 
-#: builtin/stash.c:1169
+#: builtin/stash.c:1236
 msgid "Cannot save the current index state"
 msgstr "Състоянието на текущия индекс не може да бъде запазено"
 
-#: builtin/stash.c:1178
+#: builtin/stash.c:1245
 msgid "Cannot save the untracked files"
 msgstr "Неследените файлове не могат да се запазят"
 
-#: builtin/stash.c:1189 builtin/stash.c:1198
+#: builtin/stash.c:1256 builtin/stash.c:1265
 msgid "Cannot save the current worktree state"
 msgstr "Състоянието на работното дърво не може да бъде запазено"
 
-#: builtin/stash.c:1226
+#: builtin/stash.c:1293
 msgid "Cannot record working tree state"
 msgstr "Състоянието на работното дърво не може да бъде запазено"
 
-#: builtin/stash.c:1275
+#: builtin/stash.c:1342
 msgid "Can't use --patch and --include-untracked or --all at the same time"
 msgstr "Опцията „--patch“ е несъвместима с „--include-untracked“ и „--all“"
 
-#: builtin/stash.c:1291
+#: builtin/stash.c:1358
 msgid "Did you forget to 'git add'?"
 msgstr "Пробвайте да използвате „git add“"
 
-#: builtin/stash.c:1306
+#: builtin/stash.c:1373
 msgid "No local changes to save"
 msgstr "Няма никакви локални промени за скатаване"
 
-#: builtin/stash.c:1313
+#: builtin/stash.c:1380
 msgid "Cannot initialize stash"
 msgstr "Скатаването не може да стартира"
 
-#: builtin/stash.c:1328
+#: builtin/stash.c:1395
 msgid "Cannot save the current status"
 msgstr "Текущото състояние не може да бъде запазено"
 
-#: builtin/stash.c:1333
+#: builtin/stash.c:1400
 #, c-format
 msgid "Saved working directory and index state %s"
 msgstr "Състоянието на работната директория и индекса e запазено: „%s“"
 
-#: builtin/stash.c:1423
+#: builtin/stash.c:1490
 msgid "Cannot remove worktree changes"
 msgstr "Промените в работното дърво не могат да бъдат занулени"
 
-#: builtin/stash.c:1462 builtin/stash.c:1527
+#: builtin/stash.c:1529 builtin/stash.c:1594
 msgid "keep index"
 msgstr "запазване на индекса"
 
-#: builtin/stash.c:1464 builtin/stash.c:1529
+#: builtin/stash.c:1531 builtin/stash.c:1596
 msgid "stash in patch mode"
 msgstr "скатаване в режим за кръпки"
 
-#: builtin/stash.c:1465 builtin/stash.c:1530
+#: builtin/stash.c:1532 builtin/stash.c:1597
 msgid "quiet mode"
 msgstr "без извеждане на информация"
 
-#: builtin/stash.c:1467 builtin/stash.c:1532
+#: builtin/stash.c:1534 builtin/stash.c:1599
 msgid "include untracked files in stash"
 msgstr "скатаване и на неследените файлове"
 
-#: builtin/stash.c:1469 builtin/stash.c:1534
+#: builtin/stash.c:1536 builtin/stash.c:1601
 msgid "include ignore files"
 msgstr "скатаване и на игнорираните файлове"
 
-#: builtin/stash.c:1569
+#: builtin/stash.c:1636
 msgid ""
 "the stash.useBuiltin support has been removed!\n"
 "See its entry in 'git help config' for details."
@@ -22331,12 +22755,13 @@ msgstr ""
 "."
 
 #: builtin/submodule--helper.c:565
-msgid "Suppress output of entering each submodule command"
-msgstr "Ð\91ез извеждане на изход при въвеждането на всяка команда за подмодули"
+msgid "suppress output of entering each submodule command"
+msgstr "без извеждане на изход при въвеждането на всяка команда за подмодули"
 
-#: builtin/submodule--helper.c:567 builtin/submodule--helper.c:1487
-msgid "Recurse into nested submodules"
-msgstr "Рекурсивно обхождане на подмодулите"
+#: builtin/submodule--helper.c:567 builtin/submodule--helper.c:888
+#: builtin/submodule--helper.c:1487
+msgid "recurse into nested submodules"
+msgstr "рекурсивно обхождане на подмодулите"
 
 #: builtin/submodule--helper.c:572
 msgid "git submodule--helper foreach [--quiet] [--recursive] [--] <command>"
@@ -22373,8 +22798,8 @@ msgstr ""
 "Неуспешно регистриране на режима на обновяване за пътя към подмодул „%s“"
 
 #: builtin/submodule--helper.c:709
-msgid "Suppress output for initializing a submodule"
-msgstr "Ð\91ез извеждане на информация при инициализирането на подмодул"
+msgid "suppress output for initializing a submodule"
+msgstr "без извеждане на информация при инициализирането на подмодул"
 
 #: builtin/submodule--helper.c:714
 msgid "git submodule--helper init [<options>] [<path>]"
@@ -22396,21 +22821,17 @@ msgid "failed to recurse into submodule '%s'"
 msgstr "неуспешно рекурсивно обхождане на подмодула „%s“"
 
 #: builtin/submodule--helper.c:886 builtin/submodule--helper.c:1623
-msgid "Suppress submodule status output"
-msgstr "Ð\91ез изход за състоянието на подмодула"
+msgid "suppress submodule status output"
+msgstr "без изход за състоянието на подмодула"
 
 #: builtin/submodule--helper.c:887
 msgid ""
-"Use commit stored in the index instead of the one stored in the submodule "
+"use commit stored in the index instead of the one stored in the submodule "
 "HEAD"
 msgstr ""
-"Ð\98зползване на подаването указано в индекса, а не това от указателя „HEAD“ на "
+"използване на подаването указано в индекса, а не това от указателя „HEAD“ на "
 "подмодула"
 
-#: builtin/submodule--helper.c:888
-msgid "recurse into nested submodules"
-msgstr "рекурсивно обхождане на подмодулите"
-
 #: builtin/submodule--helper.c:893
 msgid "git submodule status [--quiet] [--cached] [--recursive] [<path>...]"
 msgstr "git submodule status [--quiet] [--cached] [--recursive] [ПЪТ…]"
@@ -22497,8 +22918,8 @@ msgid "failed to update remote for submodule '%s'"
 msgstr "отдалеченият адрес на подмодула „%s“ не може да бъде променен"
 
 #: builtin/submodule--helper.c:1485
-msgid "Suppress output of synchronizing submodule url"
-msgstr "Ð\91ез извеждане на информация при синхронизирането на подмодул"
+msgid "suppress output of synchronizing submodule url"
+msgstr "без извеждане на информация при синхронизирането на подмодул"
 
 #: builtin/submodule--helper.c:1492
 msgid "git submodule--helper sync [--quiet] [--recursive] [<path>]"
@@ -22544,14 +22965,14 @@ msgid "Submodule '%s' (%s) unregistered for path '%s'\n"
 msgstr "Регистрацията на подмодула „%s“ (%s) за пътя „%s“ е премахната\n"
 
 #: builtin/submodule--helper.c:1624
-msgid "Remove submodule working trees even if they contain local changes"
+msgid "remove submodule working trees even if they contain local changes"
 msgstr ""
-"Ð\98зтриване на работните дървета на подмодулите, дори когато те съдържат "
+"изтриване на работните дървета на подмодулите, дори когато те съдържат "
 "локални промени"
 
 #: builtin/submodule--helper.c:1625
-msgid "Unregister all submodules"
-msgstr "Ð\9fремахване на регистрациите на всички подмодули"
+msgid "unregister all submodules"
+msgstr "премахване на регистрациите на всички подмодули"
 
 #: builtin/submodule--helper.c:1630
 msgid ""
@@ -22701,8 +23122,8 @@ msgstr ""
 "„none“ (нищо да не се прави)"
 
 #: builtin/submodule--helper.c:2340
-msgid "Create a shallow clone truncated to the specified number of revisions"
-msgstr "Ð\9fлитко клониране, отрязано до указания брой версии"
+msgid "create a shallow clone truncated to the specified number of revisions"
+msgstr "извÑ\8aÑ\80Ñ\88ване Ð½Ð° Ð¿литко клониране, отрязано до указания брой версии"
 
 #: builtin/submodule--helper.c:2343
 msgid "parallel jobs"
@@ -22772,8 +23193,8 @@ msgid "please make sure that the .gitmodules file is in the working tree"
 msgstr "файлът „.gitmodules“ трябва да е в работното дърво"
 
 #: builtin/submodule--helper.c:2681
-msgid "Suppress output for setting url of a submodule"
-msgstr "Ð\91ез извеждане на информация при задаването на адреса на подмодул"
+msgid "suppress output for setting url of a submodule"
+msgstr "без извеждане на информация при задаването на адреса на подмодул"
 
 #: builtin/submodule--helper.c:2685
 msgid "git submodule--helper set-url [--quiet] <path> <newurl>"
@@ -22804,7 +23225,7 @@ msgstr "необходимо е една от опциите „--branch“ и 
 msgid "--branch and --default are mutually exclusive"
 msgstr "опциите „--branch“ и „--default“ са несъвместими"
 
-#: builtin/submodule--helper.c:2792 git.c:438 git.c:711
+#: builtin/submodule--helper.c:2792 git.c:441 git.c:714
 #, c-format
 msgid "%s doesn't support --super-prefix"
 msgstr "„%s“ не поддържа опцията „--super-prefix“"
@@ -22874,12 +23295,12 @@ msgstr "git tag -v [--format=ФОРМАТ] ЕТИКЕТ…"
 msgid "tag '%s' not found."
 msgstr "етикетът „%s“ не е открит."
 
-#: builtin/tag.c:105
+#: builtin/tag.c:124
 #, c-format
 msgid "Deleted tag '%s' (was %s)\n"
 msgstr "Изтрит е етикетът „%s“ (бе „%s“)\n"
 
-#: builtin/tag.c:135
+#: builtin/tag.c:159
 #, c-format
 msgid ""
 "\n"
@@ -22892,7 +23313,7 @@ msgstr ""
 "    %s\n"
 "Редовете, които започват с „%c“, ще бъдат пропуснати.\n"
 
-#: builtin/tag.c:139
+#: builtin/tag.c:163
 #, c-format
 msgid ""
 "\n"
@@ -22907,15 +23328,11 @@ msgstr ""
 "Редовете, които започват с „%c“, също ще бъдат включени — може да ги "
 "изтриете вие.\n"
 
-#: builtin/tag.c:198
+#: builtin/tag.c:230
 msgid "unable to sign the tag"
 msgstr "етикетът не може да бъде подписан"
 
-#: builtin/tag.c:200
-msgid "unable to write tag file"
-msgstr "файлът за етикета не може да бъде запазен"
-
-#: builtin/tag.c:216
+#: builtin/tag.c:248
 #, c-format
 msgid ""
 "You have created a nested tag. The object referred to by your new tag is\n"
@@ -22929,138 +23346,134 @@ msgstr ""
 "\n"
 "    git tag -f %s %s^{}"
 
-#: builtin/tag.c:232
+#: builtin/tag.c:264
 msgid "bad object type."
 msgstr "неправилен вид обект."
 
-#: builtin/tag.c:285
+#: builtin/tag.c:317
 msgid "no tag message?"
 msgstr "липсва съобщение за етикета"
 
-#: builtin/tag.c:292
+#: builtin/tag.c:324
 #, c-format
 msgid "The tag message has been left in %s\n"
 msgstr "Съобщението за етикета е запазено във файла „%s“\n"
 
-#: builtin/tag.c:403
+#: builtin/tag.c:435
 msgid "list tag names"
 msgstr "извеждане на имената на етикетите"
 
-#: builtin/tag.c:405
+#: builtin/tag.c:437
 msgid "print <n> lines of each tag message"
 msgstr "извеждане на този БРОЙ редове от всяко съобщение за етикет"
 
-#: builtin/tag.c:407
+#: builtin/tag.c:439
 msgid "delete tags"
 msgstr "изтриване на етикети"
 
-#: builtin/tag.c:408
+#: builtin/tag.c:440
 msgid "verify tags"
 msgstr "проверка на етикети"
 
-#: builtin/tag.c:410
+#: builtin/tag.c:442
 msgid "Tag creation options"
 msgstr "Опции при създаването на етикети"
 
-#: builtin/tag.c:412
+#: builtin/tag.c:444
 msgid "annotated tag, needs a message"
 msgstr "анотирането на етикети изисква съобщение"
 
-#: builtin/tag.c:414
+#: builtin/tag.c:446
 msgid "tag message"
 msgstr "СЪОБЩЕНИЕ за етикет"
 
-#: builtin/tag.c:416
+#: builtin/tag.c:448
 msgid "force edit of tag message"
 msgstr "принудително редактиране на съобщение за етикет"
 
-#: builtin/tag.c:417
+#: builtin/tag.c:449
 msgid "annotated and GPG-signed tag"
 msgstr "анотиран етикет с подпис по GPG"
 
-#: builtin/tag.c:420
+#: builtin/tag.c:452
 msgid "use another key to sign the tag"
 msgstr "използване на друг ключ за подписването на етикет"
 
-#: builtin/tag.c:421
+#: builtin/tag.c:453
 msgid "replace the tag if exists"
 msgstr "замяна на етикета, ако съществува"
 
-#: builtin/tag.c:422 builtin/update-ref.c:505
+#: builtin/tag.c:454 builtin/update-ref.c:505
 msgid "create a reflog"
 msgstr "създаване на журнал на указателите"
 
-#: builtin/tag.c:424
+#: builtin/tag.c:456
 msgid "Tag listing options"
 msgstr "Опции за извеждането на етикети"
 
-#: builtin/tag.c:425
+#: builtin/tag.c:457
 msgid "show tag list in columns"
 msgstr "извеждане на списъка на етикетите по колони"
 
-#: builtin/tag.c:426 builtin/tag.c:428
+#: builtin/tag.c:458 builtin/tag.c:460
 msgid "print only tags that contain the commit"
 msgstr "извеждане само на етикетите, които съдържат подаването"
 
-#: builtin/tag.c:427 builtin/tag.c:429
+#: builtin/tag.c:459 builtin/tag.c:461
 msgid "print only tags that don't contain the commit"
 msgstr "извеждане само на етикетите, които не съдържат подаването"
 
-#: builtin/tag.c:430
+#: builtin/tag.c:462
 msgid "print only tags that are merged"
 msgstr "извеждане само на слетите етикети"
 
-#: builtin/tag.c:431
+#: builtin/tag.c:463
 msgid "print only tags that are not merged"
 msgstr "извеждане само на неслетите етикети"
 
-#: builtin/tag.c:435
+#: builtin/tag.c:467
 msgid "print only tags of the object"
 msgstr "извеждане само на етикетите на ОБЕКТА"
 
-#: builtin/tag.c:483
+#: builtin/tag.c:515
 msgid "--column and -n are incompatible"
 msgstr "Опциите „--column“ и „-n“ са несъвместими"
 
-#: builtin/tag.c:505
+#: builtin/tag.c:537
 msgid "-n option is only allowed in list mode"
 msgstr "Опцията „-n“ изисква режим на списък."
 
-#: builtin/tag.c:507
+#: builtin/tag.c:539
 msgid "--contains option is only allowed in list mode"
 msgstr "Опцията „-contains“ изисква режим на списък."
 
-#: builtin/tag.c:509
+#: builtin/tag.c:541
 msgid "--no-contains option is only allowed in list mode"
 msgstr "Опцията „-contains“ изисква  режим на списък."
 
-#: builtin/tag.c:511
+#: builtin/tag.c:543
 msgid "--points-at option is only allowed in list mode"
 msgstr "Опцията „-points-at“ изисква режим на списък."
 
-#: builtin/tag.c:513
+#: builtin/tag.c:545
 msgid "--merged and --no-merged options are only allowed in list mode"
 msgstr "Опциите „--merged“ и „--no-merged“ изискват режим на списък."
 
-#: builtin/tag.c:524
+#: builtin/tag.c:556
 msgid "only one -F or -m option is allowed."
 msgstr "Опциите „-F“ и „-m“ са несъвместими."
 
-#: builtin/tag.c:543
-msgid "too many params"
-msgstr "Прекалено много аргументи"
-
-#: builtin/tag.c:549
+#: builtin/tag.c:581
 #, c-format
 msgid "'%s' is not a valid tag name."
 msgstr "„%s“ е неправилно име за етикет."
 
-#: builtin/tag.c:554
+#: builtin/tag.c:586
 #, c-format
 msgid "tag '%s' already exists"
 msgstr "етикетът „%s“ вече съществува"
 
-#: builtin/tag.c:585
+#: builtin/tag.c:617
 #, c-format
 msgid "Updated tag '%s' (was %s)\n"
 msgstr "Обновен етикет „%s“ (бе „%s“)\n"
@@ -23437,91 +23850,63 @@ msgstr "git verify-tag [-v | --verbose] [--format=ФОРМАТ] ЕТИКЕТ…"
 msgid "print tag contents"
 msgstr "извеждане на съдържанието на ЕТИКЕТи"
 
-#: builtin/worktree.c:17
+#: builtin/worktree.c:18
 msgid "git worktree add [<options>] <path> [<commit-ish>]"
 msgstr "git worktree add [ОПЦИЯ…] ПЪТ [УКАЗАТЕЛ_КЪМ_ПОДАВАНЕ]"
 
-#: builtin/worktree.c:18
+#: builtin/worktree.c:19
 msgid "git worktree list [<options>]"
 msgstr "git worktree list [ОПЦИЯ…]"
 
-#: builtin/worktree.c:19
+#: builtin/worktree.c:20
 msgid "git worktree lock [<options>] <path>"
 msgstr "git worktree lock [ОПЦИЯ…] [ПЪТ]"
 
-#: builtin/worktree.c:20
+#: builtin/worktree.c:21
 msgid "git worktree move <worktree> <new-path>"
 msgstr "git worktree move [ДЪРВО] [НОВ_ПЪТ]"
 
-#: builtin/worktree.c:21
+#: builtin/worktree.c:22
 msgid "git worktree prune [<options>]"
 msgstr "git worktree prune [ОПЦИЯ…]"
 
-#: builtin/worktree.c:22
+#: builtin/worktree.c:23
 msgid "git worktree remove [<options>] <worktree>"
 msgstr "git worktree remove [ОПЦИЯ…] [ДЪРВО]"
 
-#: builtin/worktree.c:23
+#: builtin/worktree.c:24
 msgid "git worktree unlock <path>"
 msgstr "git worktree unlock [ПЪТ]"
 
-#: builtin/worktree.c:60 builtin/worktree.c:973
+#: builtin/worktree.c:61 builtin/worktree.c:933
 #, c-format
 msgid "failed to delete '%s'"
 msgstr "неуспешно изтриване на „%s“"
 
-#: builtin/worktree.c:85
-msgid "not a valid directory"
-msgstr "не е валидна директория"
-
-#: builtin/worktree.c:91
-msgid "gitdir file does not exist"
-msgstr "файлът „gitdir“ не съществува"
-
-#: builtin/worktree.c:96 builtin/worktree.c:105
-#, c-format
-msgid "unable to read gitdir file (%s)"
-msgstr "файлът „gitdir“ не може да бъде прочетен (%s)"
-
-#: builtin/worktree.c:115
-#, c-format
-msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
-msgstr ""
-"изчитането върна по-малко байтове от очакваното (очаквани: %<PRIuMAX> байта, "
-"получени: %<PRIuMAX>)"
-
-#: builtin/worktree.c:123
-msgid "invalid gitdir file"
-msgstr "неправилен файл „gitdir“"
-
-#: builtin/worktree.c:131
-msgid "gitdir file points to non-existent location"
-msgstr "файлът „gitdir“ сочи несъществуващо местоположение"
-
-#: builtin/worktree.c:146
+#: builtin/worktree.c:74
 #, c-format
 msgid "Removing %s/%s: %s"
 msgstr "Изтриване на „%s/%s“: %s"
 
-#: builtin/worktree.c:221
+#: builtin/worktree.c:149
 msgid "report pruned working trees"
 msgstr "докладване на окастрените работни дървета"
 
-#: builtin/worktree.c:223
+#: builtin/worktree.c:151
 msgid "expire working trees older than <time>"
 msgstr "обявяване на работните копия по-стари от това ВРЕМЕ за остарели"
 
-#: builtin/worktree.c:293
+#: builtin/worktree.c:221
 #, c-format
 msgid "'%s' already exists"
 msgstr "„%s“ вече съществува"
 
-#: builtin/worktree.c:302
+#: builtin/worktree.c:230
 #, c-format
 msgid "unusable worktree destination '%s'"
 msgstr "целта не може да се ползва за работно дърво: „%s“"
 
-#: builtin/worktree.c:307
+#: builtin/worktree.c:235
 #, c-format
 msgid ""
 "'%s' is a missing but locked worktree;\n"
@@ -23531,7 +23916,7 @@ msgstr ""
 "За изрично задаване ползвайте „%s -f -f“, а за изчистване —\n"
 "„unlock“, „prune“ или „remove“"
 
-#: builtin/worktree.c:309
+#: builtin/worktree.c:237
 #, c-format
 msgid ""
 "'%s' is a missing but already registered worktree;\n"
@@ -23541,120 +23926,133 @@ msgstr ""
 "За изрично задаване ползвайте „%s -f“, а за изчистване —\n"
 "„prune“ или „remove“"
 
-#: builtin/worktree.c:360
+#: builtin/worktree.c:288
 #, c-format
 msgid "could not create directory of '%s'"
 msgstr "директорията „%s“ не може да бъде създадена"
 
-#: builtin/worktree.c:494 builtin/worktree.c:500
+#: builtin/worktree.c:422 builtin/worktree.c:428
 #, c-format
 msgid "Preparing worktree (new branch '%s')"
 msgstr "Приготвяне на работното дърво (нов клон „%s“)"
 
-#: builtin/worktree.c:496
+#: builtin/worktree.c:424
 #, c-format
 msgid "Preparing worktree (resetting branch '%s'; was at %s)"
 msgstr ""
 "Приготвяне на работното дърво (зануляване на клона „%s“, който сочеше към "
 "„%s“)"
 
-#: builtin/worktree.c:505
+#: builtin/worktree.c:433
 #, c-format
 msgid "Preparing worktree (checking out '%s')"
 msgstr "Приготвяне на работното дърво (изтегляне на „%s“)"
 
-#: builtin/worktree.c:511
+#: builtin/worktree.c:439
 #, c-format
 msgid "Preparing worktree (detached HEAD %s)"
 msgstr "Подготвяне на работно дърво (указателят „HEAD“ не свързан: %s)"
 
-#: builtin/worktree.c:552
+#: builtin/worktree.c:480
 msgid "checkout <branch> even if already checked out in other worktree"
 msgstr "Изтегляне КЛОНа, дори и да е изтеглен в друго работно дърво"
 
-#: builtin/worktree.c:555
+#: builtin/worktree.c:483
 msgid "create a new branch"
 msgstr "създаване на нов клон"
 
-#: builtin/worktree.c:557
+#: builtin/worktree.c:485
 msgid "create or reset a branch"
 msgstr "създаване или зануляване на клони"
 
-#: builtin/worktree.c:559
+#: builtin/worktree.c:487
 msgid "populate the new working tree"
 msgstr "подготвяне на новото работно дърво"
 
-#: builtin/worktree.c:560
+#: builtin/worktree.c:488
 msgid "keep the new working tree locked"
 msgstr "новото работно дърво да остане заключено"
 
-#: builtin/worktree.c:563
+#: builtin/worktree.c:491
 msgid "set up tracking mode (see git-branch(1))"
 msgstr "задаване на режима на следене (виж git-branch(1))"
 
-#: builtin/worktree.c:566
+#: builtin/worktree.c:494
 msgid "try to match the new branch name with a remote-tracking branch"
 msgstr "опит за напасване на името на новия клон с това на следящ клон"
 
-#: builtin/worktree.c:574
+#: builtin/worktree.c:502
 msgid "-b, -B, and --detach are mutually exclusive"
 msgstr "Опциите „-b“, „-B“ и „--detach“ са несъвместими една с друга"
 
-#: builtin/worktree.c:635
+#: builtin/worktree.c:563
 msgid "--[no-]track can only be used if a new branch is created"
 msgstr "„--[no-]track“ може да се използва само при създаването на нов клон"
 
-#: builtin/worktree.c:758
+#: builtin/worktree.c:680
+msgid "show extended annotations and reasons, if available"
+msgstr "извеждане на подробни анотации и обяснения, ако такива са налични"
+
+#: builtin/worktree.c:682
+msgid "add 'prunable' annotation to worktrees older than <time>"
+msgstr ""
+"добавяне на анотация за окастряне на работните копия по-стари от това ВРЕМЕ"
+
+#: builtin/worktree.c:691
+msgid "--verbose and --porcelain are mutually exclusive"
+msgstr "опциите „--verbose“ и „--porcelain“ са несъвместими"
+
+#: builtin/worktree.c:718
 msgid "reason for locking"
 msgstr "причина за заключване"
 
-#: builtin/worktree.c:770 builtin/worktree.c:803 builtin/worktree.c:877
-#: builtin/worktree.c:1001
+#: builtin/worktree.c:730 builtin/worktree.c:763 builtin/worktree.c:837
+#: builtin/worktree.c:961
 #, c-format
 msgid "'%s' is not a working tree"
 msgstr "„%s“ не е работно дърво"
 
-#: builtin/worktree.c:772 builtin/worktree.c:805
+#: builtin/worktree.c:732 builtin/worktree.c:765
 msgid "The main working tree cannot be locked or unlocked"
 msgstr "Основното дърво не може да се отключи или заключи"
 
-#: builtin/worktree.c:777
+#: builtin/worktree.c:737
 #, c-format
 msgid "'%s' is already locked, reason: %s"
 msgstr "„%s“ вече е заключено, защото „%s“"
 
-#: builtin/worktree.c:779
+#: builtin/worktree.c:739
 #, c-format
 msgid "'%s' is already locked"
 msgstr "„%s“ вече е заключено"
 
-#: builtin/worktree.c:807
+#: builtin/worktree.c:767
 #, c-format
 msgid "'%s' is not locked"
 msgstr "„%s“ не е заключено"
 
-#: builtin/worktree.c:848
+#: builtin/worktree.c:808
 msgid "working trees containing submodules cannot be moved or removed"
 msgstr ""
 "не може да местите или изтривате работни дървета, в които има подмодули"
 
-#: builtin/worktree.c:856
+#: builtin/worktree.c:816
 msgid "force move even if worktree is dirty or locked"
 msgstr ""
 "принудително преместване, дори работното дърво да не е чисто или да е "
 "заключено"
 
-#: builtin/worktree.c:879 builtin/worktree.c:1003
+#: builtin/worktree.c:839 builtin/worktree.c:963
 #, c-format
 msgid "'%s' is a main working tree"
 msgstr "„%s“ е основно работно дърво"
 
-#: builtin/worktree.c:884
+#: builtin/worktree.c:844
 #, c-format
 msgid "could not figure out destination name from '%s'"
 msgstr "името на целта не може да се определи от „%s“"
 
-#: builtin/worktree.c:897
+#: builtin/worktree.c:857
 #, c-format
 msgid ""
 "cannot move a locked working tree, lock reason: %s\n"
@@ -23663,7 +24061,7 @@ msgstr ""
 "не може да преместите заключено работно дърво, причина за заключването: %s\n"
 "или го отключете, или го преместете принудително с „move -f -f“"
 
-#: builtin/worktree.c:899
+#: builtin/worktree.c:859
 msgid ""
 "cannot move a locked working tree;\n"
 "use 'move -f -f' to override or unlock first"
@@ -23671,41 +24069,41 @@ msgstr ""
 "не може да преместите заключено работно дърво:\n"
 "или го отключете, или го преместете принудително с „move -f -f“"
 
-#: builtin/worktree.c:902
+#: builtin/worktree.c:862
 #, c-format
 msgid "validation failed, cannot move working tree: %s"
 msgstr ""
 "проверките са неуспешни, работното дърво не може да бъде преместено: %s"
 
-#: builtin/worktree.c:907
+#: builtin/worktree.c:867
 #, c-format
 msgid "failed to move '%s' to '%s'"
 msgstr "„%s“ не може да се премести в „%s“"
 
-#: builtin/worktree.c:953
+#: builtin/worktree.c:913
 #, c-format
 msgid "failed to run 'git status' on '%s'"
 msgstr "неуспешно изпълнение на „git status“ върху „%s“"
 
-#: builtin/worktree.c:957
+#: builtin/worktree.c:917
 #, c-format
 msgid "'%s' contains modified or untracked files, use --force to delete it"
 msgstr ""
 "„%s“ съдържа променени или нови файлове, за принудително изтриване е "
 "необходима опцията „--force“"
 
-#: builtin/worktree.c:962
+#: builtin/worktree.c:922
 #, c-format
 msgid "failed to run 'git status' on '%s', code %d"
 msgstr ""
 "командата „git status“ не може да се изпълни за „%s“, код за грешка: %d"
 
-#: builtin/worktree.c:985
+#: builtin/worktree.c:945
 msgid "force removal even if worktree is dirty or locked"
 msgstr ""
 "принудително изтриване, дори работното дърво да не е чисто или да е заключено"
 
-#: builtin/worktree.c:1008
+#: builtin/worktree.c:968
 #, c-format
 msgid ""
 "cannot remove a locked working tree, lock reason: %s\n"
@@ -23714,7 +24112,7 @@ msgstr ""
 "не може да изтриете заключено работно дърво, причина за заключването: %s\n"
 "или го отключете, или го изтрийте принудително с „remove -f -f“"
 
-#: builtin/worktree.c:1010
+#: builtin/worktree.c:970
 msgid ""
 "cannot remove a locked working tree;\n"
 "use 'remove -f -f' to override or unlock first"
@@ -23722,17 +24120,17 @@ msgstr ""
 "не може да изтриете заключено работно дърво:\n"
 "или го отключете, или го изтрийте принудително с „remove -f -f“"
 
-#: builtin/worktree.c:1013
+#: builtin/worktree.c:973
 #, c-format
 msgid "validation failed, cannot remove working tree: %s"
 msgstr "проверките са неуспешни, работното дърво не може да бъде изтрито: %s"
 
-#: builtin/worktree.c:1037
+#: builtin/worktree.c:997
 #, c-format
 msgid "repair: %s: %s"
 msgstr "поправяне: %s: „%s“"
 
-#: builtin/worktree.c:1040
+#: builtin/worktree.c:1000
 #, c-format
 msgid "error: %s: %s"
 msgstr "грешка: %s: „%s“"
@@ -23753,15 +24151,23 @@ msgstr "запис на обект-дърво за поддиректорият
 msgid "only useful for debugging"
 msgstr "само за изчистване на грешки"
 
-#: http-fetch.c:114
+#: http-fetch.c:118
 #, c-format
 msgid "argument to --packfile must be a valid hash (got '%s')"
 msgstr "опцията „--packfile“ изисква валидна контролна сума (а не „%s“)"
 
-#: http-fetch.c:122
+#: http-fetch.c:128
 msgid "not a git repository"
 msgstr "не е хранилище на Git"
 
+#: http-fetch.c:134
+msgid "--packfile requires --index-pack-args"
+msgstr "опцията „--packfile“ изисква опция „--index-pack-args“"
+
+#: http-fetch.c:143
+msgid "--index-pack-args can only be used with --packfile"
+msgstr "опцията „--index-pack-args“ изисква опция „--packfile“"
+
 #: t/helper/test-fast-rebase.c:141
 msgid "unhandled options"
 msgstr "неподдържани опции"
@@ -23794,15 +24200,18 @@ msgid ""
 "           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--"
 "bare]\n"
 "           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]\n"
+"           [--super-prefix=<path>] [--config-env=<name>=<envvar>]\n"
 "           <command> [<args>]"
 msgstr ""
 "git [--version] [--help] [-C ПЪТ] [-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"
+"           [--super-prefix=ПЪТ] [--config-env=ИМЕ=ПРОМЕНЛИВА_НА_СРЕДАТА]\n"
 "           КОМАНДА [АРГ…]"
 
-#: git.c:35
+#: git.c:36
 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"
@@ -23816,47 +24225,47 @@ msgstr ""
 "някое определено ПОНЯТИЕ използвайте „git help ПОНЯТИЕ“.  За преглед на\n"
 "системата за помощ използвайте „git help git“."
 
-#: git.c:187
+#: git.c:188
 #, c-format
 msgid "no directory given for --git-dir\n"
 msgstr "опцията „--git-dir“ изисква директория\n"
 
-#: git.c:201
+#: git.c:202
 #, c-format
 msgid "no namespace given for --namespace\n"
 msgstr "опцията „--namespace“ изисква име\n"
 
-#: git.c:215
+#: git.c:216
 #, c-format
 msgid "no directory given for --work-tree\n"
 msgstr "опцията „--work-tree“ изисква директория\n"
 
-#: git.c:229
+#: git.c:230
 #, c-format
 msgid "no prefix given for --super-prefix\n"
 msgstr "опцията „--super-prefix“ изисква префикс\n"
 
-#: git.c:251
+#: git.c:252
 #, c-format
 msgid "-c expects a configuration string\n"
 msgstr "опцията „-c“ изисква низ за настройка\n"
 
-#: git.c:289
+#: git.c:292
 #, c-format
 msgid "no directory given for -C\n"
 msgstr "опцията „-C“ изисква директория\n"
 
-#: git.c:315
+#: git.c:318
 #, c-format
 msgid "unknown option: %s\n"
 msgstr "непозната опция: „%s“\n"
 
-#: git.c:364
+#: git.c:367
 #, c-format
 msgid "while expanding alias '%s': '%s'"
 msgstr "при заместването на псевдоним „%s“: „%s“"
 
-#: git.c:373
+#: git.c:376
 #, c-format
 msgid ""
 "alias '%s' changes environment variables.\n"
@@ -23865,39 +24274,39 @@ msgstr ""
 "псевдонимът „%s“ променя променливи на средата.\n"
 "За това може да ползвате „!git“ в псевдонима"
 
-#: git.c:380
+#: git.c:383
 #, c-format
 msgid "empty alias for %s"
 msgstr "празен псевдоним за „%s“"
 
-#: git.c:383
+#: git.c:386
 #, c-format
 msgid "recursive alias: %s"
 msgstr "зациклен псевдоним: „%s“"
 
-#: git.c:465
+#: git.c:468
 msgid "write failure on standard output"
 msgstr "грешка при запис на стандартния изход"
 
-#: git.c:467
+#: git.c:470
 msgid "unknown write failure on standard output"
 msgstr "неизвестна грешка при запис на стандартния изход"
 
-#: git.c:469
+#: git.c:472
 msgid "close failed on standard output"
 msgstr "грешка при затваряне на стандартния изход"
 
-#: git.c:820
+#: git.c:823
 #, c-format
 msgid "alias loop detected: expansion of '%s' does not terminate:%s"
 msgstr "зацикляне в псевдонимите: заместванията на „%s“ не приключват:%s"
 
-#: git.c:870
+#: git.c:873
 #, c-format
 msgid "cannot handle %s as a builtin"
 msgstr "„%s“ не може да се обработи като вградена команда"
 
-#: git.c:883
+#: git.c:886
 #, c-format
 msgid ""
 "usage: %s\n"
@@ -23906,14 +24315,14 @@ msgstr ""
 "употреба: %s\n"
 "\n"
 
-#: git.c:903
+#: git.c:906
 #, c-format
 msgid "expansion of alias '%s' failed; '%s' is not a git command\n"
 msgstr ""
 "неуспешно заместване на псевдонима „%s“ — резултатът „%s“ не е команда на "
 "git\n"
 
-#: git.c:915
+#: git.c:918
 #, c-format
 msgid "failed to run command '%s': %s\n"
 msgstr "командата „%s“ не може да се изпълни: %s\n"
@@ -24162,11 +24571,11 @@ msgstr ""
 "при ползването на „--pathspec-from-file“, пътищата са разделени с нулевия "
 "знак „NUL“"
 
-#: ref-filter.h:96
+#: ref-filter.h:99
 msgid "key"
 msgstr "КЛЮЧ"
 
-#: ref-filter.h:96
+#: ref-filter.h:99
 msgid "field name to sort on"
 msgstr "име на полето, по което да е подредбата"
 
@@ -24176,14 +24585,6 @@ msgstr ""
 "при възможност преизползване на решението на конфликта за обновяване на "
 "индекса"
 
-#: wt-status.h:80
-msgid "HEAD detached at "
-msgstr "Указателят „HEAD“ не е свързан и е при "
-
-#: wt-status.h:81
-msgid "HEAD detached from "
-msgstr "Указателят „HEAD“ не е свързан и е отделѐн от "
-
 #: command-list.h:50
 msgid "Add file contents to the index"
 msgstr "Добавяне на съдържанието на файла към индекса"
@@ -24529,8 +24930,8 @@ msgid "Write and verify multi-pack-indexes"
 msgstr "Запис и проверка на индексите за множество пакети"
 
 #: command-list.h:132
-msgid "Creates a tag object"
-msgstr "Създаване на обект-етикет"
+msgid "Creates a tag object with extra validation"
+msgstr "Създаване на обект-етикет с допълнителни проверки"
 
 #: command-list.h:133
 msgid "Build a tree-object from ls-tree formatted text"
@@ -24838,72 +25239,55 @@ msgid "Specifies intentionally untracked files to ignore"
 msgstr "Указване на неследени файлове, които да бъдат нарочно пренебрегвани"
 
 #: command-list.h:209
+msgid "Map author/committer names and/or E-Mail addresses"
+msgstr "Съответствия на имена на автор/подаващ и/или адреси на е-поща"
+
+#: command-list.h:210
 msgid "Defining submodule properties"
 msgstr "Дефиниране на свойствата на подмодулите"
 
-#: command-list.h:210
+#: command-list.h:211
 msgid "Git namespaces"
 msgstr "Пространства от имена на Git"
 
-#: command-list.h:211
+#: command-list.h:212
 msgid "Helper programs to interact with remote repositories"
 msgstr "Помощни програми за работа с отдалечените хранилища"
 
-#: command-list.h:212
+#: command-list.h:213
 msgid "Git Repository Layout"
 msgstr "Устройство на хранилището на Git"
 
-#: command-list.h:213
+#: command-list.h:214
 msgid "Specifying revisions and ranges for Git"
 msgstr "Указване на версии и диапазони в Git"
 
-#: command-list.h:214
+#: command-list.h:215
 msgid "Mounting one repository inside another"
 msgstr "Монтиране на едно хранилище в друго"
 
-#: command-list.h:215
+#: command-list.h:216
 msgid "A tutorial introduction to Git: part two"
 msgstr "Въвеждащ урок за Git: втора част"
 
-#: command-list.h:216
+#: command-list.h:217
 msgid "A tutorial introduction to Git"
 msgstr "Въвеждащ урок за Git"
 
-#: command-list.h:217
+#: command-list.h:218
 msgid "An overview of recommended workflows with Git"
 msgstr "Общ преглед на препоръчваните начини за работа с Git"
 
-#: git-bisect.sh:48
-#, sh-format
-msgid "Bad rev input: $arg"
-msgstr "Неправилна версия: „${arg}“"
-
-#: git-bisect.sh:82
-msgid "No logfile given"
-msgstr "Не е зададен журнален файл"
-
-#: git-bisect.sh:83
-#, sh-format
-msgid "cannot read $file for replaying"
-msgstr ""
-"Журналният файл „${file}“ не може да бъде прочетен, за да се изпълнят "
-"командите от него наново"
-
-#: git-bisect.sh:105
-msgid "?? what are you talking about?"
-msgstr ""
-"Непозната команда.  Възможните варианти са: „start“, „good“, „bad“, „skip“"
-
-#: git-bisect.sh:115
+#: git-bisect.sh:68
 msgid "bisect run failed: no command provided."
 msgstr "неуспешно двоично търсене, не е зададена команда."
 
-#: git-bisect.sh:120
+#: git-bisect.sh:73
 #, sh-format
 msgid "running $command"
 msgstr "изпълнение на командата „${command}“"
 
-#: git-bisect.sh:127
+#: git-bisect.sh:80
 #, sh-format
 msgid ""
 "bisect run failed:\n"
@@ -24913,11 +25297,11 @@ msgstr ""
 "изходният код от командата „${command}“ е ${res} — това е извън интервала "
 "[0, 128)"
 
-#: git-bisect.sh:152
+#: git-bisect.sh:105
 msgid "bisect run cannot continue any more"
 msgstr "двоичното търсене не може да продължи"
 
-#: git-bisect.sh:158
+#: git-bisect.sh:111
 #, sh-format
 msgid ""
 "bisect run failed:\n"
@@ -24926,14 +25310,10 @@ msgstr ""
 "неуспешно двоично търсене:\n"
 "функцията „bisect-state ${state}“ завърши с код за грешка ${res}"
 
-#: git-bisect.sh:165
+#: git-bisect.sh:118
 msgid "bisect run success"
 msgstr "успешно двоично търсене"
 
-#: git-bisect.sh:173
-msgid "We are not bisecting."
-msgstr "В момента не се извършва двоично търсене."
-
 #: git-merge-octopus.sh:46
 msgid ""
 "Error: Your local changes to the following files would be overwritten by "
index 2131ed7fa3b40d6bb1ad3cfd6f71e7b985b4587d..cd60e5bec83a603f6a250a7b89453fd8b5805c45 100644 (file)
--- a/po/ca.po
+++ b/po/ca.po
@@ -14,7 +14,7 @@
 #   chunk            |  fragment
 #   delta            |  diferència
 #   deprecated       |  en desús
-#   dry              |  simulació
+#   dry-run          |  fer una prova
 #   fatal            |  fatal
 #   flush            |  buidar / buidatge
 #   hook             |  lligam
@@ -9865,7 +9865,7 @@ msgstr "Els camins següents s'ignoren per un dels vostres fitxers .gitignore:\n
 #: builtin/prune-packed.c:14 builtin/pull.c:204 builtin/push.c:559
 #: builtin/remote.c:1427 builtin/rm.c:242 builtin/send-pack.c:190
 msgid "dry run"
-msgstr "marxa en sec"
+msgstr "fer una prova"
 
 #: builtin/add.c:331
 msgid "interactive picking"
@@ -9916,8 +9916,7 @@ msgstr "només omet els fitxers que no es poden afegir a causa d'errors"
 #: builtin/add.c:345
 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"
+"comproveu si els fitxers, fins i tot els absents, s'ignoren en una fer una prova"
 
 #: builtin/add.c:347 builtin/update-index.c:1004
 msgid "override the executable bit of the listed files"
@@ -13303,7 +13302,7 @@ msgid ""
 "with '%c' will be ignored, and an empty message aborts the commit.\n"
 msgstr ""
 "Introduïu el missatge de comissió dels vostres canvis.\n"
-"S'ignoraran les línies que comencin amb «%c», i un missatge de\n"
+"S'ignoraran les línies que comencin amb «%c». Un missatge de\n"
 "comissió buit avorta la comissió.\n"
 
 #: builtin/commit.c:876
@@ -13554,7 +13553,7 @@ msgstr ""
 
 #: builtin/commit.c:1509
 msgid "the commit is authored by me now (used with -C/-c/--amend)"
-msgstr "l'autor de la comissió ja sóc jo (s'usa amb -C/-c/--amend)"
+msgstr "l'autor de la comissió soc jo ara (s'usa amb -C/-c/--amend)"
 
 #: builtin/commit.c:1510 builtin/log.c:1744 builtin/merge.c:301
 #: builtin/pull.c:145 builtin/revert.c:110
@@ -15394,7 +15393,7 @@ msgstr ""
 #: builtin/gc.c:708
 msgid ""
 "git maintenance run [--auto] [--[no-]quiet] [--task=<task>] [--schedule]"
-msgstr 
+msgstr ""
 "git maintenance run [--auto] [--[no-]quiet] [--task=<task>] [--schedule]"
 
 #: builtin/gc.c:738
@@ -18758,17 +18757,17 @@ msgid ""
 "invocation.\n"
 msgstr ""
 "Baixar sense especificar com conciliar branques divergents està\n"
-"desaconsellat. Podeu desactivar aquest missatge executant una de les següents\n"
-"comandes abans de la propera baixada:\n"
+"desaconsellat. Podeu desactivar aquest missatge executant una de les\n"
+"següents ordres abans de la propera baixada:\n"
 "\n"
 "  git config pull.rebase false  # merge (estratègia per defecte)\n"
 "  git config pull.rebase true   # rebase\n"
 "  git config pull.ff only       # només fast-forward\n"
 "\n"
-"Podeu reemplaçar «git config» per «git config --global» per a establir una preferència\n"
-"per defecte per a tots els dipòsits. Podeu també usar -rebase, --no-rebase,\n"
-"o --ff-only en la línia d'ordres per sobreescriure el valor per defecte configuratW\n"
-"en aquesta execució.\n"
+"Podeu reemplaçar «git config» per «git config --global» per a establir una\n"
+"preferència per defecte per a tots els dipòsits. Podeu també usar --rebase,\n"
+"--no-rebase o --ff-only en la línia d'ordres per sobreescriure el valor\n"
+"per defecte configuració en aquesta execució.\n"
 
 #: builtin/pull.c:458
 msgid ""
index e1f4149b33a570a383aa4b72b5e2eccc9713c76e..aff78ea3f3688e1c079d3a3f60d057e155eb3a4e 100644 (file)
--- a/po/de.po
+++ b/po/de.po
@@ -8,8 +8,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Git\n"
 "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2020-12-21 07:10+0800\n"
-"PO-Revision-Date: 2020-12-19 14:01+0100\n"
+"POT-Creation-Date: 2021-03-04 22:41+0800\n"
+"PO-Revision-Date: 2021-03-03 20:13+0100\n"
 "Last-Translator: Matthias Rüster <matthias.ruester@gmail.com>\n"
 "Language-Team: Matthias Rüster <matthias.ruester@gmail.com>\n"
 "Language: de\n"
@@ -17,15 +17,16 @@ 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.4.2\n"
 
 #: add-interactive.c:376
 #, c-format
 msgid "Huh (%s)?"
 msgstr "Wie bitte (%s)?"
 
-#: add-interactive.c:529 add-interactive.c:830 reset.c:65 sequencer.c:3284
-#: sequencer.c:3735 sequencer.c:3890 builtin/rebase.c:1532
-#: builtin/rebase.c:1955
+#: add-interactive.c:529 add-interactive.c:830 reset.c:65 sequencer.c:3292
+#: sequencer.c:3743 sequencer.c:3898 builtin/rebase.c:1538
+#: builtin/rebase.c:1963
 msgid "could not read index"
 msgstr "Index konnte nicht gelesen werden"
 
@@ -53,9 +54,9 @@ msgstr "Aktualisieren"
 msgid "could not stage '%s'"
 msgstr "Konnte '%s' nicht zum Commit vormerken."
 
-#: add-interactive.c:703 add-interactive.c:892 reset.c:89 sequencer.c:3478
+#: add-interactive.c:703 add-interactive.c:892 reset.c:89 sequencer.c:3486
 msgid "could not write index"
-msgstr "Konnte Index nicht schreiben."
+msgstr "konnte Index nicht schreiben"
 
 #: add-interactive.c:706 git-add--interactive.perl:626
 #, c-format, perl-format
@@ -97,7 +98,7 @@ msgstr "Keine unversionierten Dateien.\n"
 
 #: add-interactive.c:868 git-add--interactive.perl:687
 msgid "Add untracked"
-msgstr "unversionierte Dateien hinzufügen"
+msgstr "Unversionierte Dateien hinzufügen"
 
 #: add-interactive.c:895 git-add--interactive.perl:623
 #, c-format, perl-format
@@ -211,7 +212,7 @@ msgstr "aus Staging-Area entfernt"
 
 #: add-interactive.c:1144 apply.c:4987 apply.c:4990 builtin/am.c:2257
 #: builtin/am.c:2260 builtin/bugreport.c:134 builtin/clone.c:124
-#: builtin/fetch.c:147 builtin/merge.c:284 builtin/pull.c:190
+#: builtin/fetch.c:150 builtin/merge.c:285 builtin/pull.c:190
 #: builtin/submodule--helper.c:409 builtin/submodule--helper.c:1818
 #: builtin/submodule--helper.c:1821 builtin/submodule--helper.c:2326
 #: builtin/submodule--helper.c:2329 builtin/submodule--helper.c:2572
@@ -818,7 +819,7 @@ msgstr ""
 msgid "Exiting because of an unresolved conflict."
 msgstr "Beende wegen unaufgelöstem Konflikt."
 
-#: advice.c:281 builtin/merge.c:1369
+#: advice.c:281 builtin/merge.c:1370
 msgid "You have not concluded your merge (MERGE_HEAD exists)."
 msgstr "Sie haben Ihren Merge nicht abgeschlossen (MERGE_HEAD existiert)."
 
@@ -901,18 +902,15 @@ msgstr "--cached und --3way können nicht gemeinsam verwendet werden."
 
 #: apply.c:140
 msgid "--3way outside a repository"
-msgstr ""
-"Die Option --3way kann nicht außerhalb eines Repositories verwendet werden."
+msgstr "--3way kann nicht außerhalb eines Repositories verwendet werden"
 
 #: apply.c:151
 msgid "--index outside a repository"
-msgstr ""
-"Die Option --index kann nicht außerhalb eines Repositories verwendet werden."
+msgstr "--index kann nicht außerhalb eines Repositories verwendet werden"
 
 #: apply.c:154
 msgid "--cached outside a repository"
-msgstr ""
-"Die Option --cached kann nicht außerhalb eines Repositories verwendet werden."
+msgstr "--cached kann nicht außerhalb eines Repositories verwendet werden"
 
 #: apply.c:801
 #, c-format
@@ -927,7 +925,7 @@ msgstr "Ausführung des regulären Ausdrucks gab %d zurück. Eingabe: %s"
 #: apply.c:884
 #, c-format
 msgid "unable to find filename in patch at line %d"
-msgstr "Konnte keinen Dateinamen in Zeile %d des Patches finden."
+msgstr "konnte keinen Dateinamen in Zeile %d des Patches finden"
 
 #: apply.c:922
 #, c-format
@@ -1132,7 +1130,8 @@ msgstr "Anwendung des Patches fehlgeschlagen: %s:%ld"
 msgid "cannot checkout %s"
 msgstr "kann %s nicht auschecken"
 
-#: apply.c:3405 apply.c:3416 apply.c:3462 midx.c:73 setup.c:308
+#: apply.c:3405 apply.c:3416 apply.c:3462 midx.c:86 pack-revindex.c:213
+#: setup.c:308
 #, c-format
 msgid "failed to read %s"
 msgstr "Fehler beim Lesen von %s"
@@ -1293,7 +1292,7 @@ msgstr "kann internen Speicher für eben erstellte Datei %s nicht erzeugen"
 msgid "unable to add cache entry for %s"
 msgstr "kann für %s keinen Eintrag in den Zwischenspeicher hinzufügen"
 
-#: apply.c:4374 builtin/bisect--helper.c:524
+#: apply.c:4374 builtin/bisect--helper.c:523
 #, c-format
 msgid "failed to write to '%s'"
 msgstr "Fehler beim Schreiben nach '%s'"
@@ -1329,7 +1328,7 @@ msgstr[1] "Wende Patch %%s mit %d Zurückweisungen an..."
 msgid "truncating .rej filename to %.*s.rej"
 msgstr "Verkürze Name von .rej Datei zu %.*s.rej"
 
-#: apply.c:4576 builtin/fetch.c:927 builtin/fetch.c:1228
+#: apply.c:4576 builtin/fetch.c:933 builtin/fetch.c:1334
 #, c-format
 msgid "cannot open %s"
 msgstr "kann '%s' nicht öffnen"
@@ -1383,7 +1382,7 @@ msgid_plural "%d lines applied after fixing whitespace errors."
 msgstr[0] "%d Zeile nach Behebung von Whitespace-Fehlern angewendet."
 msgstr[1] "%d Zeilen nach Behebung von Whitespace-Fehlern angewendet."
 
-#: apply.c:4960 builtin/add.c:618 builtin/mv.c:304 builtin/rm.c:406
+#: apply.c:4960 builtin/add.c:626 builtin/mv.c:304 builtin/rm.c:406
 msgid "Unable to write new index file"
 msgstr "Konnte neue Index-Datei nicht schreiben."
 
@@ -1412,8 +1411,7 @@ msgstr "hinzugefügte Zeilen des Patches ignorieren"
 #: apply.c:4999
 msgid "instead of applying the patch, output diffstat for the input"
 msgstr ""
-"anstatt der Anwendung des Patches, den \"diffstat\" für die Eingabe "
-"ausgegeben"
+"statt den Patch anzuwenden, den \"diffstat\" für die Eingabe ausgegeben"
 
 #: apply.c:5003
 msgid "show number of added and deleted lines in decimal notation"
@@ -1423,13 +1421,12 @@ msgstr ""
 #: apply.c:5005
 msgid "instead of applying the patch, output a summary for the input"
 msgstr ""
-"anstatt der Anwendung des Patches, eine Zusammenfassung für die Eingabe "
-"ausgeben"
+"statt den Patch anzuwenden, eine Zusammenfassung für die Eingabe ausgeben"
 
 #: apply.c:5007
 msgid "instead of applying the patch, see if the patch is applicable"
 msgstr ""
-"anstatt der Anwendung des Patches, zeige ob Patch angewendet werden kann"
+"statt den Patch anzuwenden, anzeigen ob der Patch angewendet werden kann"
 
 #: apply.c:5009
 msgid "make sure the patch is applicable to the current index"
@@ -1463,7 +1460,7 @@ msgstr ""
 "einen temporären Index, basierend auf den integrierten Index-Informationen, "
 "erstellen"
 
-#: apply.c:5025 builtin/checkout-index.c:182 builtin/ls-files.c:525
+#: apply.c:5025 builtin/checkout-index.c:195 builtin/ls-files.c:540
 msgid "paths are separated with NUL character"
 msgstr "Pfade sind getrennt durch NUL Zeichen"
 
@@ -1474,7 +1471,7 @@ msgstr ""
 
 #: apply.c:5028 builtin/am.c:2245 builtin/interpret-trailers.c:98
 #: builtin/interpret-trailers.c:100 builtin/interpret-trailers.c:102
-#: builtin/pack-objects.c:3562 builtin/rebase.c:1346
+#: builtin/pack-objects.c:3577 builtin/rebase.c:1352
 msgid "action"
 msgstr "Aktion"
 
@@ -1503,9 +1500,9 @@ msgstr ""
 msgid "allow overlapping hunks"
 msgstr "sich überlappende Patch-Blöcke erlauben"
 
-#: apply.c:5045 builtin/add.c:329 builtin/check-ignore.c:22
-#: builtin/commit.c:1364 builtin/count-objects.c:98 builtin/fsck.c:775
-#: builtin/log.c:2287 builtin/mv.c:123 builtin/read-tree.c:128
+#: apply.c:5045 builtin/add.c:337 builtin/check-ignore.c:22
+#: builtin/commit.c:1364 builtin/count-objects.c:98 builtin/fsck.c:757
+#: builtin/log.c:2286 builtin/mv.c:123 builtin/read-tree.c:128
 msgid "be verbose"
 msgstr "erweiterte Ausgaben"
 
@@ -1593,14 +1590,14 @@ msgstr "git archive --remote <Repository> [--exec <Programm>] --list"
 msgid "cannot read %s"
 msgstr "Kann %s nicht lesen."
 
-#: archive.c:345 sequencer.c:459 sequencer.c:1736 sequencer.c:2886
-#: sequencer.c:3327 sequencer.c:3436 builtin/am.c:249 builtin/commit.c:786
-#: builtin/merge.c:1138
+#: archive.c:345 sequencer.c:459 sequencer.c:1744 sequencer.c:2894
+#: sequencer.c:3335 sequencer.c:3444 builtin/am.c:249 builtin/commit.c:786
+#: builtin/merge.c:1139
 #, c-format
 msgid "could not read '%s'"
 msgstr "Konnte '%s' nicht lesen"
 
-#: archive.c:430 builtin/add.c:181 builtin/add.c:594 builtin/rm.c:315
+#: archive.c:430 builtin/add.c:189 builtin/add.c:602 builtin/rm.c:315
 #, c-format
 msgid "pathspec '%s' did not match any files"
 msgstr "Pfadspezifikation '%s' stimmt mit keinen Dateien überein"
@@ -1608,7 +1605,7 @@ msgstr "Pfadspezifikation '%s' stimmt mit keinen Dateien überein"
 #: archive.c:454
 #, c-format
 msgid "no such ref: %.*s"
-msgstr "Keine solche Referenz: %.*s"
+msgstr "Referenz nicht gefunden: %.*s"
 
 #: archive.c:460
 #, c-format
@@ -1642,7 +1639,7 @@ msgstr "Format"
 msgid "archive format"
 msgstr "Archivformat"
 
-#: archive.c:556 builtin/log.c:1765
+#: archive.c:556 builtin/log.c:1764
 msgid "prefix"
 msgstr "Präfix"
 
@@ -1650,11 +1647,11 @@ msgstr "Präfix"
 msgid "prepend prefix to each pathname in the archive"
 msgstr "einen Präfix vor jeden Pfadnamen in dem Archiv stellen"
 
-#: archive.c:558 archive.c:561 builtin/blame.c:886 builtin/blame.c:890
-#: builtin/blame.c:891 builtin/commit-tree.c:117 builtin/config.c:135
+#: archive.c:558 archive.c:561 builtin/blame.c:884 builtin/blame.c:888
+#: builtin/blame.c:889 builtin/commit-tree.c:117 builtin/config.c:135
 #: builtin/fast-export.c:1207 builtin/fast-export.c:1209
-#: builtin/fast-export.c:1213 builtin/grep.c:919 builtin/hash-object.c:105
-#: builtin/ls-files.c:561 builtin/ls-files.c:564 builtin/notes.c:412
+#: builtin/fast-export.c:1213 builtin/grep.c:920 builtin/hash-object.c:105
+#: builtin/ls-files.c:576 builtin/ls-files.c:579 builtin/notes.c:412
 #: builtin/notes.c:578 builtin/read-tree.c:123 parse-options.h:190
 msgid "file"
 msgstr "Datei"
@@ -1707,7 +1704,7 @@ msgstr "Unerwartete Option --remote"
 
 #: archive.c:584
 msgid "Option --exec can only be used together with --remote"
-msgstr "Die Option --exec kann nur zusammen mit --remote verwendet werden."
+msgstr "Die Option --exec kann nur zusammen mit --remote verwendet werden"
 
 #: archive.c:586
 msgid "Unexpected option --output"
@@ -1716,7 +1713,7 @@ msgstr "Unerwartete Option --output"
 #: archive.c:588
 msgid "Options --add-file and --remote cannot be used together"
 msgstr ""
-"Die Optionen --add-file und --remote können nicht gemeinsam verwendet werden."
+"Die Optionen --add-file und --remote können nicht gemeinsam verwendet werden"
 
 #: archive.c:610
 #, c-format
@@ -1821,12 +1818,12 @@ msgstr "binäre Suche: eine Merge-Basis muss geprüft werden\n"
 msgid "a %s revision is needed"
 msgstr "ein %s Commit wird benötigt"
 
-#: bisect.c:941 builtin/notes.c:177 builtin/tag.c:255
+#: bisect.c:941 builtin/notes.c:177 builtin/tag.c:287
 #, c-format
 msgid "could not create file '%s'"
 msgstr "konnte Datei '%s' nicht erstellen"
 
-#: bisect.c:987 builtin/merge.c:152
+#: bisect.c:987 builtin/merge.c:153
 #, c-format
 msgid "could not read file '%s'"
 msgstr "Konnte Datei '%s' nicht lesen"
@@ -1844,10 +1841,10 @@ msgstr "%s war sowohl %s als auch %s\n"
 #, c-format
 msgid ""
 "No testable commit found.\n"
-"Maybe you started with bad path parameters?\n"
+"Maybe you started with bad path arguments?\n"
 msgstr ""
 "Kein testbarer Commit gefunden.\n"
-"Vielleicht starteten Sie mit falschen Pfad-Parametern?\n"
+"Vielleicht starteten Sie mit schlechten Pfad-Argumenten?\n"
 
 #: bisect.c:1095
 #, c-format
@@ -1882,11 +1879,11 @@ msgstr ""
 "endgültigen\n"
 "Commits"
 
-#: blame.c:2821 bundle.c:213 ref-filter.c:2272 remote.c:2031 sequencer.c:2138
-#: sequencer.c:4633 submodule.c:855 builtin/commit.c:1045 builtin/log.c:409
-#: builtin/log.c:1023 builtin/log.c:1625 builtin/log.c:2046 builtin/log.c:2336
-#: builtin/merge.c:423 builtin/pack-objects.c:3380 builtin/pack-objects.c:3395
-#: builtin/shortlog.c:267
+#: blame.c:2821 bundle.c:213 ref-filter.c:2206 remote.c:2041 sequencer.c:2146
+#: sequencer.c:4641 submodule.c:856 builtin/commit.c:1045 builtin/log.c:411
+#: builtin/log.c:1016 builtin/log.c:1624 builtin/log.c:2045 builtin/log.c:2335
+#: builtin/merge.c:424 builtin/pack-objects.c:3395 builtin/pack-objects.c:3410
+#: builtin/shortlog.c:255
 msgid "revision walk setup failed"
 msgstr "Einrichtung des Revisionsgangs fehlgeschlagen"
 
@@ -1900,7 +1897,7 @@ msgstr ""
 #: blame.c:2850
 #, c-format
 msgid "no such path %s in %s"
-msgstr "Pfad %s nicht in %s"
+msgstr "Pfad %s nicht in %s gefunden"
 
 #: blame.c:2861
 #, c-format
@@ -2069,7 +2066,7 @@ msgstr "'%s' sieht nicht wie eine v2 oder v3 Paketdatei aus"
 msgid "unrecognized header: %s%s (%d)"
 msgstr "nicht erkannter Kopfbereich: %s%s (%d)"
 
-#: bundle.c:136 rerere.c:480 rerere.c:690 sequencer.c:2390 sequencer.c:3176
+#: bundle.c:136 rerere.c:464 rerere.c:674 sequencer.c:2398 sequencer.c:3184
 #: builtin/commit.c:814
 #, c-format
 msgid "could not open '%s'"
@@ -2113,279 +2110,292 @@ msgstr "Konnte Paketobjekte nicht erstellen"
 msgid "pack-objects died"
 msgstr "Erstellung der Paketobjekte abgebrochen"
 
-#: bundle.c:379
-msgid "rev-list died"
-msgstr "\"rev-list\" abgebrochen"
-
-#: bundle.c:428
+#: bundle.c:386
 #, c-format
 msgid "ref '%s' is excluded by the rev-list options"
 msgstr "Referenz '%s' wird durch \"rev-list\" Optionen ausgeschlossen"
 
-#: bundle.c:498
+#: bundle.c:490
 #, c-format
 msgid "unsupported bundle version %d"
 msgstr "nicht unterstützte Paket-Version %d"
 
-#: bundle.c:500
+#: bundle.c:492
 #, c-format
 msgid "cannot write bundle version %d with algorithm %s"
 msgstr "kann Paket-Version %d nicht mit Algorithmus %s schreiben"
 
-#: bundle.c:522 builtin/log.c:209 builtin/log.c:1927 builtin/shortlog.c:408
+#: bundle.c:510 builtin/log.c:210 builtin/log.c:1926 builtin/shortlog.c:396
 #, c-format
 msgid "unrecognized argument: %s"
 msgstr "nicht erkanntes Argument: %s"
 
-#: bundle.c:530
+#: bundle.c:539
 msgid "Refusing to create empty bundle."
 msgstr "Erstellung eines leeren Pakets zurückgewiesen."
 
-#: bundle.c:540
+#: bundle.c:549
 #, c-format
 msgid "cannot create '%s'"
 msgstr "kann '%s' nicht erstellen"
 
-#: bundle.c:565
+#: bundle.c:574
 msgid "index-pack died"
 msgstr "Erstellung der Paketindexdatei abgebrochen"
 
+#: chunk-format.c:113
+msgid "terminating chunk id appears earlier than expected"
+msgstr "abschließende Chunk-ID erscheint eher als erwartet"
+
+#: chunk-format.c:122
+#, c-format
+msgid "improper chunk offset(s) %<PRIx64> and %<PRIx64>"
+msgstr "unzulässige(r) Chunk-Offset(s) %<PRIx64> und %<PRIx64>"
+
+#: chunk-format.c:129
+#, c-format
+msgid "duplicate chunk ID %<PRIx32> found"
+msgstr "doppelte Chunk-ID %<PRIx32> gefunden"
+
+#: chunk-format.c:143
+#, c-format
+msgid "final chunk has non-zero id %<PRIx32>"
+msgstr "letzter Chunk hat nicht-Null ID %<PRIx32>"
+
 #: color.c:329
 #, c-format
 msgid "invalid color value: %.*s"
 msgstr "Ungültiger Farbwert: %.*s"
 
-#: commit-graph.c:188 midx.c:47
+#: commit-graph.c:197 midx.c:46
 msgid "invalid hash version"
 msgstr "ungültige Hash-Version"
 
-#: commit-graph.c:246
+#: commit-graph.c:255
 msgid "commit-graph file is too small"
-msgstr "Commit-Graph-Datei ist zu klein."
+msgstr "Commit-Graph-Datei ist zu klein"
 
-#: commit-graph.c:311
+#: commit-graph.c:348
 #, c-format
 msgid "commit-graph signature %X does not match signature %X"
 msgstr "Commit-Graph-Signatur %X stimmt nicht mit Signatur %X überein."
 
-#: commit-graph.c:318
+#: commit-graph.c:355
 #, c-format
 msgid "commit-graph version %X does not match version %X"
 msgstr "Commit-Graph-Version %X stimmt nicht mit Version %X überein."
 
-#: commit-graph.c:325
+#: commit-graph.c:362
 #, c-format
 msgid "commit-graph hash version %X does not match version %X"
 msgstr "Hash-Version des Commit-Graph %X stimmt nicht mit Version %X überein."
 
-#: commit-graph.c:342
+#: commit-graph.c:379
 #, c-format
 msgid "commit-graph file is too small to hold %u chunks"
 msgstr "Commit-Graph-Datei ist zu klein, um %u Chunks zu enthalten"
 
-#: commit-graph.c:361
-#, c-format
-msgid "commit-graph improper chunk offset %08x%08x"
-msgstr "Unzulässiger Commit-Graph Chunk-Offset %08x%08x"
-
-#: commit-graph.c:433
-#, c-format
-msgid "commit-graph chunk id %08x appears multiple times"
-msgstr "Commit-Graph Chunk-Id %08x kommt mehrfach vor."
-
-#: commit-graph.c:499
+#: commit-graph.c:472
 msgid "commit-graph has no base graphs chunk"
 msgstr "Commit-Graph hat keinen Basis-Graph-Chunk"
 
-#: commit-graph.c:509
+#: commit-graph.c:482
 msgid "commit-graph chain does not match"
 msgstr "Commit-Graph Verkettung stimmt nicht überein."
 
-#: commit-graph.c:557
+#: commit-graph.c:530
 #, c-format
 msgid "invalid commit-graph chain: line '%s' not a hash"
 msgstr "Ungültige Commit-Graph Verkettung: Zeile '%s' ist kein Hash"
 
-#: commit-graph.c:581
+#: commit-graph.c:554
 msgid "unable to find all commit-graph files"
 msgstr "Konnte nicht alle Commit-Graph-Dateien finden."
 
-#: commit-graph.c:721 commit-graph.c:785
+#: commit-graph.c:735 commit-graph.c:772
 msgid "invalid commit position. commit-graph is likely corrupt"
 msgstr "Ungültige Commit-Position. Commit-Graph ist wahrscheinlich beschädigt."
 
-#: commit-graph.c:742
+#: commit-graph.c:756
 #, c-format
 msgid "could not find commit %s"
 msgstr "Konnte Commit %s nicht finden."
 
-#: commit-graph.c:1036 builtin/am.c:1292
+#: commit-graph.c:789
+msgid "commit-graph requires overflow generation data but has none"
+msgstr "Commit-Graph erfordert Überlaufgenerierungsdaten, aber hat keine"
+
+#: commit-graph.c:1065 builtin/am.c:1292
 #, c-format
 msgid "unable to parse commit %s"
 msgstr "Konnte Commit '%s' nicht parsen."
 
-#: commit-graph.c:1252 builtin/pack-objects.c:2864
+#: commit-graph.c:1327 builtin/pack-objects.c:2872
 #, c-format
 msgid "unable to get type of object %s"
 msgstr "Konnte Art von Objekt '%s' nicht bestimmen."
 
-#: commit-graph.c:1283
+#: commit-graph.c:1358
 msgid "Loading known commits in commit graph"
 msgstr "Lade bekannte Commits in Commit-Graph"
 
-#: commit-graph.c:1300
+#: commit-graph.c:1375
 msgid "Expanding reachable commits in commit graph"
 msgstr "Erweitere erreichbare Commits in Commit-Graph"
 
-#: commit-graph.c:1320
+#: commit-graph.c:1395
 msgid "Clearing commit marks in commit graph"
 msgstr "Lösche Commit-Markierungen in Commit-Graph"
 
-#: commit-graph.c:1339
+#: commit-graph.c:1414
+msgid "Computing commit graph topological levels"
+msgstr "Topologische Ebenen des Commit-Graph werden berechnet"
+
+#: commit-graph.c:1467
 msgid "Computing commit graph generation numbers"
 msgstr "Commit-Graph Generationsnummern berechnen"
 
-#: commit-graph.c:1406
+#: commit-graph.c:1548
 msgid "Computing commit changed paths Bloom filters"
 msgstr "Berechnung der Bloom-Filter für veränderte Pfade des Commits"
 
-#: commit-graph.c:1483
+#: commit-graph.c:1625
 msgid "Collecting referenced commits"
 msgstr "Sammle referenzierte Commits"
 
-#: commit-graph.c:1508
+#: commit-graph.c:1650
 #, c-format
 msgid "Finding commits for commit graph in %d pack"
 msgid_plural "Finding commits for commit graph in %d packs"
 msgstr[0] "Suche Commits für Commit-Graph in %d Paket"
 msgstr[1] "Suche Commits für Commit-Graph in %d Paketen"
 
-#: commit-graph.c:1521
+#: commit-graph.c:1663
 #, c-format
 msgid "error adding pack %s"
 msgstr "Fehler beim Hinzufügen von Paket %s."
 
-#: commit-graph.c:1525
+#: commit-graph.c:1667
 #, c-format
 msgid "error opening index for %s"
 msgstr "Fehler beim Öffnen des Index für %s."
 
-#: commit-graph.c:1562
+#: commit-graph.c:1704
 msgid "Finding commits for commit graph among packed objects"
 msgstr "Suche Commits für Commit-Graph in gepackten Objekten"
 
-#: commit-graph.c:1580
+#: commit-graph.c:1722
 msgid "Finding extra edges in commit graph"
 msgstr "Suche zusätzliche Ränder in Commit-Graph"
 
-#: commit-graph.c:1628
+#: commit-graph.c:1771
 msgid "failed to write correct number of base graph ids"
 msgstr "Fehler beim Schreiben der korrekten Anzahl von Basis-Graph-IDs."
 
-#: commit-graph.c:1670 midx.c:819
+#: commit-graph.c:1802 midx.c:794
 #, c-format
 msgid "unable to create leading directories of %s"
 msgstr "Konnte führende Verzeichnisse von '%s' nicht erstellen."
 
-#: commit-graph.c:1683
+#: commit-graph.c:1815
 msgid "unable to create temporary graph layer"
 msgstr "konnte temporäre Graphen-Schicht nicht erstellen"
 
-#: commit-graph.c:1688
+#: commit-graph.c:1820
 #, c-format
 msgid "unable to adjust shared permissions for '%s'"
 msgstr "konnte geteilte Zugriffsberechtigungen für '%s' nicht ändern"
 
-#: commit-graph.c:1758
+#: commit-graph.c:1879
 #, c-format
 msgid "Writing out commit graph in %d pass"
 msgid_plural "Writing out commit graph in %d passes"
 msgstr[0] "Schreibe Commit-Graph in %d Durchgang"
 msgstr[1] "Schreibe Commit-Graph in %d Durchgängen"
 
-#: commit-graph.c:1803
+#: commit-graph.c:1915
 msgid "unable to open commit-graph chain file"
 msgstr "konnte Commit-Graph Chain-Datei nicht öffnen"
 
-#: commit-graph.c:1819
+#: commit-graph.c:1931
 msgid "failed to rename base commit-graph file"
 msgstr "konnte Basis-Commit-Graph-Datei nicht umbenennen"
 
-#: commit-graph.c:1839
+#: commit-graph.c:1951
 msgid "failed to rename temporary commit-graph file"
 msgstr "konnte temporäre Commit-Graph-Datei nicht umbenennen"
 
-#: commit-graph.c:1965
+#: commit-graph.c:2084
 msgid "Scanning merged commits"
 msgstr "Durchsuche zusammengeführte Commits"
 
-#: commit-graph.c:2009
+#: commit-graph.c:2128
 msgid "Merging commit-graph"
 msgstr "Zusammenführen von Commit-Graph"
 
-#: commit-graph.c:2115
+#: commit-graph.c:2235
 msgid "attempting to write a commit-graph, but 'core.commitGraph' is disabled"
 msgstr ""
 "versuche einen Commit-Graph zu schreiben, aber 'core.commitGraph' ist "
 "deaktiviert"
 
-#: commit-graph.c:2214
+#: commit-graph.c:2342
 msgid "too many commits to write graph"
 msgstr "zu viele Commits zum Schreiben des Graphen"
 
-#: commit-graph.c:2307
+#: commit-graph.c:2440
 msgid "the commit-graph file has incorrect checksum and is likely corrupt"
 msgstr ""
 "die Commit-Graph-Datei hat eine falsche Prüfsumme und ist wahrscheinlich "
 "beschädigt"
 
-#: commit-graph.c:2317
+#: commit-graph.c:2450
 #, c-format
 msgid "commit-graph has incorrect OID order: %s then %s"
 msgstr "Commit-Graph hat fehlerhafte OID-Reihenfolge: %s dann %s"
 
-#: commit-graph.c:2327 commit-graph.c:2342
+#: commit-graph.c:2460 commit-graph.c:2475
 #, c-format
 msgid "commit-graph has incorrect fanout value: fanout[%d] = %u != %u"
 msgstr "Commit-Graph hat fehlerhaften Fanout-Wert: fanout[%d] = %u != %u"
 
-#: commit-graph.c:2334
+#: commit-graph.c:2467
 #, c-format
 msgid "failed to parse commit %s from commit-graph"
 msgstr "konnte Commit %s von Commit-Graph nicht parsen"
 
-#: commit-graph.c:2352
+#: commit-graph.c:2485
 msgid "Verifying commits in commit graph"
 msgstr "Commit in Commit-Graph überprüfen"
 
-#: commit-graph.c:2367
+#: commit-graph.c:2500
 #, c-format
 msgid "failed to parse commit %s from object database for commit-graph"
 msgstr ""
 "Fehler beim Parsen des Commits %s von Objekt-Datenbank für Commit-Graph"
 
-#: commit-graph.c:2374
+#: commit-graph.c:2507
 #, c-format
 msgid "root tree OID for commit %s in commit-graph is %s != %s"
 msgstr ""
 "OID des Wurzelverzeichnisses für Commit %s in Commit-Graph ist %s != %s"
 
-#: commit-graph.c:2384
+#: commit-graph.c:2517
 #, c-format
 msgid "commit-graph parent list for commit %s is too long"
 msgstr "Commit-Graph Vorgänger-Liste für Commit %s ist zu lang"
 
-#: commit-graph.c:2393
+#: commit-graph.c:2526
 #, c-format
 msgid "commit-graph parent for %s is %s != %s"
 msgstr "Commit-Graph-Vorgänger für %s ist %s != %s"
 
-#: commit-graph.c:2407
+#: commit-graph.c:2540
 #, c-format
 msgid "commit-graph parent list for commit %s terminates early"
 msgstr "Commit-Graph Vorgänger-Liste für Commit %s endet zu früh"
 
-#: commit-graph.c:2412
+#: commit-graph.c:2545
 #, c-format
 msgid ""
 "commit-graph has generation number zero for commit %s, but non-zero elsewhere"
@@ -2393,7 +2403,7 @@ msgstr ""
 "Commit-Graph hat Generationsnummer null für Commit %s, aber sonst ungleich "
 "null"
 
-#: commit-graph.c:2416
+#: commit-graph.c:2549
 #, c-format
 msgid ""
 "commit-graph has non-zero generation number for commit %s, but zero elsewhere"
@@ -2401,18 +2411,18 @@ msgstr ""
 "Commit-Graph hat Generationsnummer ungleich null für Commit %s, aber sonst "
 "null"
 
-#: commit-graph.c:2432
+#: commit-graph.c:2566
 #, c-format
-msgid "commit-graph generation for commit %s is %u != %u"
-msgstr "Commit-Graph Erstellung für Commit %s ist %u != %u"
+msgid "commit-graph generation for commit %s is %<PRIuMAX> < %<PRIuMAX>"
+msgstr "Commit-Graph Erstellung für Commit %s ist %<PRIuMAX> < %<PRIuMAX>"
 
-#: commit-graph.c:2438
+#: commit-graph.c:2572
 #, c-format
 msgid "commit date for commit %s in commit-graph is %<PRIuMAX> != %<PRIuMAX>"
 msgstr ""
 "Commit-Datum für Commit %s in Commit-Graph ist %<PRIuMAX> != %<PRIuMAX>"
 
-#: commit.c:52 sequencer.c:2879 builtin/am.c:359 builtin/am.c:403
+#: commit.c:52 sequencer.c:2887 builtin/am.c:359 builtin/am.c:403
 #: builtin/am.c:1371 builtin/am.c:2018 builtin/replace.c:457
 #, c-format
 msgid "could not parse %s"
@@ -2444,28 +2454,28 @@ msgstr ""
 "Sie können diese Meldung unterdrücken, indem Sie\n"
 "\"git config advice.graftFileDeprecated false\" ausführen."
 
-#: commit.c:1172
+#: commit.c:1223
 #, c-format
 msgid "Commit %s has an untrusted GPG signature, allegedly by %s."
 msgstr ""
 "Commit %s hat eine nicht vertrauenswürdige GPG-Signatur, angeblich von %s."
 
-#: commit.c:1176
+#: commit.c:1227
 #, c-format
 msgid "Commit %s has a bad GPG signature allegedly by %s."
 msgstr "Commit %s hat eine ungültige GPG-Signatur, angeblich von %s."
 
-#: commit.c:1179
+#: commit.c:1230
 #, c-format
 msgid "Commit %s does not have a GPG signature."
 msgstr "Commit %s hat keine GPG-Signatur."
 
-#: commit.c:1182
+#: commit.c:1233
 #, c-format
 msgid "Commit %s has a good GPG signature by %s\n"
 msgstr "Commit %s hat eine gültige GPG-Signatur von %s\n"
 
-#: commit.c:1436
+#: commit.c:1487
 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"
@@ -2481,7 +2491,7 @@ msgstr ""
 msgid "memory exhausted"
 msgstr "Speicher verbraucht"
 
-#: config.c:125
+#: config.c:126
 #, c-format
 msgid ""
 "exceeded maximum include depth (%d) while including\n"
@@ -2497,306 +2507,350 @@ msgstr ""
 "überschritten.\n"
 "Das könnte durch zirkulare Includes entstanden sein."
 
-#: config.c:141
+#: config.c:142
 #, c-format
 msgid "could not expand include path '%s'"
 msgstr "Konnte Include-Pfad '%s' nicht erweitern."
 
-#: config.c:152
+#: config.c:153
 msgid "relative config includes must come from files"
 msgstr "Relative Includes von Konfigurationen müssen aus Dateien kommen."
 
-#: config.c:198
+#: config.c:199
 msgid "relative config include conditionals must come from files"
 msgstr ""
 "Bedingungen für das Einbinden von Konfigurationen aus relativen Pfaden "
 "müssen\n"
 "aus Dateien kommen."
 
-#: config.c:378
+#: config.c:396
+#, c-format
+msgid "invalid config format: %s"
+msgstr "ungültiges Konfigurationsformat: %s"
+
+#: config.c:400
+#, c-format
+msgid "missing environment variable name for configuration '%.*s'"
+msgstr "fehlender Name der Umgebungsvariable für Konfiguration '%.*s'"
+
+#: config.c:405
+#, c-format
+msgid "missing environment variable '%s' for configuration '%.*s'"
+msgstr "fehlende Umgebungsvariable '%s' für Konfiguration '%.*s'"
+
+#: config.c:442
 #, c-format
 msgid "key does not contain a section: %s"
 msgstr "Schlüssel enthält keine Sektion: %s"
 
-#: config.c:384
+#: config.c:448
 #, c-format
 msgid "key does not contain variable name: %s"
 msgstr "Schlüssel enthält keinen Variablennamen: %s"
 
-#: config.c:408 sequencer.c:2580
+#: config.c:472 sequencer.c:2588
 #, c-format
 msgid "invalid key: %s"
 msgstr "Ungültiger Schlüssel: %s"
 
-#: config.c:414
+#: config.c:478
 #, c-format
 msgid "invalid key (newline): %s"
 msgstr "Ungültiger Schlüssel (neue Zeile): %s"
 
-#: config.c:450 config.c:462
+#: config.c:511
+msgid "empty config key"
+msgstr "leerer Konfigurationsschlüssel"
+
+#: config.c:529 config.c:541
 #, c-format
 msgid "bogus config parameter: %s"
 msgstr "Fehlerhafter Konfigurationsparameter: %s"
 
-#: config.c:497
+#: config.c:555 config.c:572 config.c:579 config.c:588
 #, c-format
 msgid "bogus format in %s"
 msgstr "Fehlerhaftes Format in %s"
 
-#: config.c:836
+#: config.c:622
+#, c-format
+msgid "bogus count in %s"
+msgstr "falsche Zählung in %s"
+
+#: config.c:626
+#, c-format
+msgid "too many entries in %s"
+msgstr "zu viele Einträge in %s"
+
+#: config.c:636
+#, c-format
+msgid "missing config key %s"
+msgstr "fehlender Konfigurationsschlüssel %s"
+
+#: config.c:644
+#, c-format
+msgid "missing config value %s"
+msgstr "fehlender Konfigurationswert %s"
+
+#: config.c:995
 #, c-format
 msgid "bad config line %d in blob %s"
 msgstr "Ungültige Konfigurationszeile %d in Blob %s"
 
-#: config.c:840
+#: config.c:999
 #, c-format
 msgid "bad config line %d in file %s"
 msgstr "Ungültige Konfigurationszeile %d in Datei %s"
 
-#: config.c:844
+#: config.c:1003
 #, c-format
 msgid "bad config line %d in standard input"
 msgstr "Ungültige Konfigurationszeile %d in Standard-Eingabe"
 
-#: config.c:848
+#: config.c:1007
 #, c-format
 msgid "bad config line %d in submodule-blob %s"
 msgstr "Ungültige Konfigurationszeile %d in Submodul-Blob %s"
 
-#: config.c:852
+#: config.c:1011
 #, c-format
 msgid "bad config line %d in command line %s"
 msgstr "Ungültige Konfigurationszeile %d in Kommandozeile %s"
 
-#: config.c:856
+#: config.c:1015
 #, c-format
 msgid "bad config line %d in %s"
 msgstr "Ungültige Konfigurationszeile %d in %s"
 
-#: config.c:993
+#: config.c:1152
 msgid "out of range"
 msgstr "Außerhalb des Bereichs"
 
-#: config.c:993
+#: config.c:1152
 msgid "invalid unit"
 msgstr "Ungültige Einheit"
 
-#: config.c:994
+#: config.c:1153
 #, c-format
 msgid "bad numeric config value '%s' for '%s': %s"
 msgstr "Ungültiger numerischer Wert '%s' für Konfiguration '%s': %s"
 
-#: config.c:1013
+#: config.c:1163
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in blob %s: %s"
 msgstr "Ungültiger numerischer Wert '%s' für Konfiguration '%s' in Blob %s: %s"
 
-#: config.c:1016
+#: config.c:1166
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in file %s: %s"
 msgstr ""
 "Ungültiger numerischer Wert '%s' für Konfiguration '%s' in Datei %s: %s"
 
-#: config.c:1019
+#: config.c:1169
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in standard input: %s"
 msgstr ""
 "Ungültiger numerischer Wert '%s' für Konfiguration '%s' in Standard-Eingabe: "
 "%s"
 
-#: config.c:1022
+#: config.c:1172
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in submodule-blob %s: %s"
 msgstr ""
 "Ungültiger numerischer Wert '%s' für Konfiguration '%s' in Submodul-Blob %s: "
 "%s"
 
-#: config.c:1025
+#: config.c:1175
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in command line %s: %s"
 msgstr ""
 "Ungültiger numerischer Wert '%s' für Konfiguration '%s' in Befehlszeile %s: "
 "%s"
 
-#: config.c:1028
+#: config.c:1178
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in %s: %s"
 msgstr "Ungültiger numerischer Wert '%s' für Konfiguration '%s' in %s: %s"
 
-#: config.c:1123
+#: config.c:1194
+#, c-format
+msgid "bad boolean config value '%s' for '%s'"
+msgstr "ungültiger boolescher Konfigurationswert '%s' für '%s'"
+
+#: config.c:1289
 #, c-format
 msgid "failed to expand user dir in: '%s'"
 msgstr "Fehler beim Erweitern des Nutzerverzeichnisses in: '%s'"
 
-#: config.c:1132
+#: config.c:1298
 #, c-format
 msgid "'%s' for '%s' is not a valid timestamp"
 msgstr "'%s' ist kein gültiger Zeitstempel für '%s'"
 
-#: config.c:1223
+#: config.c:1391
 #, c-format
 msgid "abbrev length out of range: %d"
 msgstr "Länge für Abkürzung von Commit-IDs außerhalb des Bereichs: %d"
 
-#: config.c:1237 config.c:1248
+#: config.c:1405 config.c:1416
 #, c-format
 msgid "bad zlib compression level %d"
 msgstr "ungültiger zlib Komprimierungsgrad %d"
 
-#: config.c:1340
+#: config.c:1508
 msgid "core.commentChar should only be one character"
 msgstr "core.commentChar sollte nur ein Zeichen sein"
 
-#: config.c:1373
+#: config.c:1541
 #, c-format
 msgid "invalid mode for object creation: %s"
 msgstr "Ungültiger Modus für Objekterstellung: %s"
 
-#: config.c:1445
+#: config.c:1613
 #, c-format
 msgid "malformed value for %s"
 msgstr "Ungültiger Wert für %s."
 
-#: config.c:1471
+#: config.c:1639
 #, c-format
 msgid "malformed value for %s: %s"
 msgstr "Ungültiger Wert für %s: %s"
 
-#: config.c:1472
+#: config.c:1640
 msgid "must be one of nothing, matching, simple, upstream or current"
 msgstr ""
 "Muss einer von diesen sein: nothing, matching, simple, upstream, current"
 
-#: config.c:1533 builtin/pack-objects.c:3649
+#: config.c:1701 builtin/pack-objects.c:3666
 #, c-format
 msgid "bad pack compression level %d"
 msgstr "ungültiger Komprimierungsgrad (%d) für Paketierung"
 
-#: config.c:1655
+#: config.c:1823
 #, c-format
 msgid "unable to load config blob object '%s'"
 msgstr "Konnte Blob-Objekt '%s' für Konfiguration nicht laden."
 
-#: config.c:1658
+#: config.c:1826
 #, c-format
 msgid "reference '%s' does not point to a blob"
 msgstr "Referenz '%s' zeigt auf keinen Blob."
 
-#: config.c:1675
+#: config.c:1843
 #, c-format
 msgid "unable to resolve config blob '%s'"
 msgstr "Konnte Blob '%s' für Konfiguration nicht auflösen."
 
-#: config.c:1705
+#: config.c:1873
 #, c-format
 msgid "failed to parse %s"
 msgstr "Fehler beim Parsen von %s."
 
-#: config.c:1759
+#: config.c:1927
 msgid "unable to parse command-line config"
 msgstr ""
 "Konnte die über die Befehlszeile angegebene Konfiguration nicht parsen."
 
-#: config.c:2122
+#: config.c:2290
 msgid "unknown error occurred while reading the configuration files"
 msgstr ""
 "Es trat ein unbekannter Fehler beim Lesen der Konfigurationsdateien auf."
 
-#: config.c:2296
+#: config.c:2464
 #, c-format
 msgid "Invalid %s: '%s'"
 msgstr "Ungültiger %s: '%s'"
 
-#: config.c:2341
+#: config.c:2509
 #, c-format
 msgid "splitIndex.maxPercentChange value '%d' should be between 0 and 100"
 msgstr ""
 "Der Wert '%d' von splitIndex.maxPercentChange sollte zwischen 0 und 100 "
 "liegen."
 
-#: config.c:2387
+#: config.c:2555
 #, c-format
 msgid "unable to parse '%s' from command-line config"
 msgstr ""
 "Konnte Wert '%s' aus der über die Befehlszeile angegebenen Konfiguration\n"
 "nicht parsen."
 
-#: config.c:2389
+#: config.c:2557
 #, c-format
 msgid "bad config variable '%s' in file '%s' at line %d"
 msgstr "ungültige Konfigurationsvariable '%s' in Datei '%s' bei Zeile %d"
 
-#: config.c:2473
+#: config.c:2641
 #, c-format
 msgid "invalid section name '%s'"
 msgstr "Ungültiger Sektionsname '%s'"
 
-#: config.c:2505
+#: config.c:2673
 #, c-format
 msgid "%s has multiple values"
 msgstr "%s hat mehrere Werte"
 
-#: config.c:2534
+#: config.c:2702
 #, c-format
 msgid "failed to write new configuration file %s"
 msgstr "Konnte neue Konfigurationsdatei '%s' nicht schreiben."
 
-#: config.c:2786 config.c:3112
+#: config.c:2954 config.c:3280
 #, c-format
 msgid "could not lock config file %s"
 msgstr "Konnte Konfigurationsdatei '%s' nicht sperren."
 
-#: config.c:2797
+#: config.c:2965
 #, c-format
 msgid "opening %s"
 msgstr "Öffne %s"
 
-#: config.c:2834 builtin/config.c:361
+#: config.c:3002 builtin/config.c:361
 #, c-format
 msgid "invalid pattern: %s"
 msgstr "Ungültiges Muster: %s"
 
-#: config.c:2859
+#: config.c:3027
 #, c-format
 msgid "invalid config file %s"
 msgstr "Ungültige Konfigurationsdatei %s"
 
-#: config.c:2872 config.c:3125
+#: config.c:3040 config.c:3293
 #, c-format
 msgid "fstat on %s failed"
 msgstr "fstat auf %s fehlgeschlagen"
 
-#: config.c:2883
+#: config.c:3051
 #, c-format
 msgid "unable to mmap '%s'"
 msgstr "mmap für '%s' fehlgeschlagen"
 
-#: config.c:2892 config.c:3130
+#: config.c:3060 config.c:3298
 #, c-format
 msgid "chmod on %s failed"
 msgstr "chmod auf %s fehlgeschlagen"
 
-#: config.c:2977 config.c:3227
+#: config.c:3145 config.c:3395
 #, c-format
 msgid "could not write config file %s"
 msgstr "Konnte Konfigurationsdatei %s nicht schreiben."
 
-#: config.c:3011
+#: config.c:3179
 #, c-format
 msgid "could not set '%s' to '%s'"
 msgstr "Konnte '%s' nicht zu '%s' setzen."
 
-#: config.c:3013 builtin/remote.c:657 builtin/remote.c:855 builtin/remote.c:863
+#: config.c:3181 builtin/remote.c:657 builtin/remote.c:855 builtin/remote.c:863
 #, c-format
 msgid "could not unset '%s'"
 msgstr "Konnte '%s' nicht aufheben."
 
-#: config.c:3103
+#: config.c:3271
 #, c-format
 msgid "invalid section name: %s"
 msgstr "Ungültiger Sektionsname: %s"
 
-#: config.c:3270
+#: config.c:3438
 #, c-format
 msgid "missing value for '%s'"
 msgstr "Fehlender Wert für '%s'"
@@ -2861,45 +2915,45 @@ msgstr "ungültiges Paket"
 msgid "protocol error: unexpected '%s'"
 msgstr "Protokollfehler: unerwartetes '%s'"
 
-#: connect.c:473
+#: connect.c:497
 #, c-format
 msgid "unknown object format '%s' specified by server"
 msgstr "unbekanntes Objekt-Format '%s' vom Server angegeben"
 
-#: connect.c:500
+#: connect.c:526
 #, c-format
 msgid "invalid ls-refs response: %s"
 msgstr "ungültige ls-refs Antwort: %s"
 
-#: connect.c:504
+#: connect.c:530
 msgid "expected flush after ref listing"
 msgstr "Flush nach Auflistung der Referenzen erwartet"
 
-#: connect.c:507
+#: connect.c:533
 msgid "expected response end packet after ref listing"
 msgstr "Antwort-Endpaket nach Auflistung der Referenzen erwartet"
 
-#: connect.c:640
+#: connect.c:666
 #, c-format
 msgid "protocol '%s' is not supported"
 msgstr "Protokoll '%s' wird nicht unterstützt"
 
-#: connect.c:691
+#: connect.c:717
 msgid "unable to set SO_KEEPALIVE on socket"
 msgstr "kann SO_KEEPALIVE bei Socket nicht setzen"
 
-#: connect.c:731 connect.c:794
+#: connect.c:757 connect.c:820
 #, c-format
 msgid "Looking up %s ... "
 msgstr "Suche nach %s ..."
 
-#: connect.c:735
+#: connect.c:761
 #, c-format
 msgid "unable to look up %s (port %s) (%s)"
 msgstr "Fehler bei Suche nach %s (Port %s) (%s)."
 
 #. TRANSLATORS: this is the end of "Looking up %s ... "
-#: connect.c:739 connect.c:810
+#: connect.c:765 connect.c:836
 #, c-format
 msgid ""
 "done.\n"
@@ -2908,7 +2962,7 @@ msgstr ""
 "Fertig.\n"
 "Verbinde nach %s (Port %s) ... "
 
-#: connect.c:761 connect.c:838
+#: connect.c:787 connect.c:864
 #, c-format
 msgid ""
 "unable to connect to %s:\n"
@@ -2918,62 +2972,65 @@ msgstr ""
 "%s"
 
 #. TRANSLATORS: this is the end of "Connecting to %s (port %s) ... "
-#: connect.c:767 connect.c:844
+#: connect.c:793 connect.c:870
 msgid "done."
 msgstr "Fertig."
 
-#: connect.c:798
+#: connect.c:824
 #, c-format
 msgid "unable to look up %s (%s)"
 msgstr "Fehler bei der Suche nach %s (%s)"
 
-#: connect.c:804
+#: connect.c:830
 #, c-format
 msgid "unknown port %s"
 msgstr "Unbekannter Port %s"
 
-#: connect.c:941 connect.c:1271
+#: connect.c:967 connect.c:1299
 #, c-format
 msgid "strange hostname '%s' blocked"
 msgstr "Merkwürdigen Hostnamen '%s' blockiert."
 
-#: connect.c:943
+#: connect.c:969
 #, c-format
 msgid "strange port '%s' blocked"
 msgstr "Merkwürdigen Port '%s' blockiert."
 
-#: connect.c:953
+#: connect.c:979
 #, c-format
 msgid "cannot start proxy %s"
 msgstr "Kann Proxy %s nicht starten."
 
-#: connect.c:1024
+#: connect.c:1050
 msgid "no path specified; see 'git help pull' for valid url syntax"
-msgstr ""
-"Kein Pfad angegeben; siehe 'git help pull' für eine gültige URL-Syntax."
+msgstr "kein Pfad angegeben; siehe 'git help pull' für eine gültige URL-Syntax"
+
+#: connect.c:1190
+msgid "newline is forbidden in git:// hosts and repo paths"
+msgstr "Zeilenumbruch ist in git:// Hosts und Repository-Pfaden verboten"
 
-#: connect.c:1219
+#: connect.c:1247
 msgid "ssh variant 'simple' does not support -4"
-msgstr "SSH-Variante 'simple' unterstützt kein -4."
+msgstr "SSH-Variante 'simple' unterstützt kein -4"
 
-#: connect.c:1231
+#: connect.c:1259
 msgid "ssh variant 'simple' does not support -6"
-msgstr "SSH-Variante 'simple' unterstützt kein -6."
+msgstr "SSH-Variante 'simple' unterstützt kein -6"
 
-#: connect.c:1248
+#: connect.c:1276
 msgid "ssh variant 'simple' does not support setting port"
-msgstr "SSH-Variante 'simple' unterstützt nicht das Setzen eines Ports."
+msgstr "SSH-Variante 'simple' unterstützt nicht das Setzen eines Ports"
 
-#: connect.c:1360
+#: connect.c:1388
 #, c-format
 msgid "strange pathname '%s' blocked"
-msgstr "Merkwürdigen Pfadnamen '%s' blockiert."
+msgstr "Merkwürdigen Pfadnamen '%s' blockiert"
 
-#: connect.c:1408
+#: connect.c:1436
 msgid "unable to fork"
-msgstr "Kann Prozess nicht starten."
+msgstr "kann Prozess nicht starten"
 
-#: connected.c:108 builtin/fsck.c:209 builtin/prune.c:45
+#: connected.c:108 builtin/fsck.c:191 builtin/prune.c:45
 msgid "Checking connectivity"
 msgstr "Prüfe Konnektivität"
 
@@ -2997,7 +3054,7 @@ msgstr "Unerlaubte crlf_action %d"
 #: convert.c:207
 #, c-format
 msgid "CRLF would be replaced by LF in %s"
-msgstr "CRLF würde in %s durch LF ersetzt werden."
+msgstr "CRLF würde in %s durch LF ersetzt werden"
 
 #: convert.c:209
 #, c-format
@@ -3012,7 +3069,7 @@ msgstr ""
 #: convert.c:217
 #, c-format
 msgid "LF would be replaced by CRLF in %s"
-msgstr "LF würde in %s durch CRLF ersetzt werden."
+msgstr "LF würde in %s durch CRLF ersetzt werden"
 
 #: convert.c:219
 #, c-format
@@ -3027,7 +3084,7 @@ msgstr ""
 #: convert.c:284
 #, c-format
 msgid "BOM is prohibited in '%s' if encoded as %s"
-msgstr "BOM ist in '%s' unzulässig, wenn als %s codiert."
+msgstr "BOM ist in '%s' unzulässig, wenn als %s codiert"
 
 #: convert.c:291
 #, c-format
@@ -3041,7 +3098,7 @@ msgstr ""
 #: convert.c:304
 #, c-format
 msgid "BOM is required in '%s' if encoded as %s"
-msgstr "BOM ist erforderlich in '%s', wenn als %s codiert."
+msgstr "BOM ist erforderlich in '%s', wenn als %s codiert"
 
 #: convert.c:306
 #, c-format
@@ -3056,45 +3113,45 @@ msgstr ""
 #: convert.c:419 convert.c:490
 #, c-format
 msgid "failed to encode '%s' from %s to %s"
-msgstr "Fehler beim Codieren von '%s' von %s nach %s."
+msgstr "Fehler beim Codieren von '%s' von %s nach %s"
 
 #: convert.c:462
 #, c-format
 msgid "encoding '%s' from %s to %s and back is not the same"
-msgstr "Die Codierung '%s' von %s nach %s und zurück ist nicht dasselbe."
+msgstr "Codierung von '%s' von %s nach %s und zurück ist nicht dasselbe"
 
 #: convert.c:665
 #, c-format
 msgid "cannot fork to run external filter '%s'"
-msgstr "Kann externen Filter '%s' nicht starten."
+msgstr "kann externen Filter '%s' nicht starten"
 
 #: convert.c:685
 #, c-format
 msgid "cannot feed the input to external filter '%s'"
-msgstr "Kann Eingaben nicht an externen Filter '%s' übergeben."
+msgstr "kann Eingaben nicht an externen Filter '%s' übergeben"
 
 #: convert.c:692
 #, c-format
 msgid "external filter '%s' failed %d"
-msgstr "Externer Filter '%s' fehlgeschlagen %d"
+msgstr "externer Filter '%s' fehlgeschlagen %d"
 
 #: convert.c:727 convert.c:730
 #, c-format
 msgid "read from external filter '%s' failed"
-msgstr "Lesen von externem Filter '%s' fehlgeschlagen."
+msgstr "Lesen von externem Filter '%s' fehlgeschlagen"
 
 #: convert.c:733 convert.c:788
 #, c-format
 msgid "external filter '%s' failed"
-msgstr "Externer Filter '%s' fehlgeschlagen."
+msgstr "externer Filter '%s' fehlgeschlagen"
 
 #: convert.c:837
 msgid "unexpected filter type"
-msgstr "Unerwartete Filterart."
+msgstr "unerwartete Filterart"
 
 #: convert.c:848
 msgid "path name too long for external filter"
-msgstr "Pfadname zu lang für externen Filter."
+msgstr "Pfadname zu lang für externen Filter"
 
 #: convert.c:940
 #, c-format
@@ -3102,21 +3159,22 @@ msgid ""
 "external filter '%s' is not available anymore although not all paths have "
 "been filtered"
 msgstr ""
-"Externer Filter '%s' nicht mehr verfügbar. Nicht alle Pfade wurden gefiltert."
+"externer Filter '%s' nicht mehr verfügbar, obwohl nicht alle Pfade gefiltert "
+"wurden"
 
 #: convert.c:1240
 msgid "true/false are no valid working-tree-encodings"
-msgstr "true/false sind keine gültigen Codierungen im Arbeitsverzeichnis."
+msgstr "true/false sind keine gültigen Codierungen im Arbeitsverzeichnis"
 
 #: convert.c:1428 convert.c:1462
 #, c-format
 msgid "%s: clean filter '%s' failed"
-msgstr "%s: clean-Filter '%s' fehlgeschlagen."
+msgstr "%s: clean-Filter '%s' fehlgeschlagen"
 
 #: convert.c:1508
 #, c-format
 msgid "%s: smudge filter %s failed"
-msgstr "%s: smudge-Filter '%s' fehlgeschlagen."
+msgstr "%s: smudge-Filter '%s' fehlgeschlagen"
 
 #: credential.c:96
 #, c-format
@@ -3241,6 +3299,11 @@ msgstr ""
 msgid "Marked %d islands, done.\n"
 msgstr "%d Delta-Islands markiert, fertig.\n"
 
+#: diff-merges.c:70
+#, c-format
+msgid "unknown value for --diff-merges: %s"
+msgstr "unbekannter Wert für --diff-merges: %s"
+
 #: diff-lib.c:534
 msgid "--merge-base does not work with ranges"
 msgstr "--merge-base funktioniert nicht mit Bereichen"
@@ -3328,31 +3391,31 @@ msgstr ""
 msgid "external diff died, stopping at %s"
 msgstr "externes Diff-Programm unerwartet beendet, angehalten bei %s"
 
-#: diff.c:4625
+#: diff.c:4628
 msgid "--name-only, --name-status, --check and -s are mutually exclusive"
 msgstr ""
 "--name-only, --name-status, --check und -s schließen sich gegenseitig aus"
 
-#: diff.c:4628
+#: diff.c:4631
 msgid "-G, -S and --find-object are mutually exclusive"
 msgstr "-G, -S und --find-object schließen sich gegenseitig aus"
 
-#: diff.c:4707
+#: diff.c:4710
 msgid "--follow requires exactly one pathspec"
 msgstr "--follow erfordert genau eine Pfadspezifikation"
 
-#: diff.c:4755
+#: diff.c:4758
 #, c-format
 msgid "invalid --stat value: %s"
 msgstr "Ungültiger --stat Wert: %s"
 
-#: diff.c:4760 diff.c:4765 diff.c:4770 diff.c:4775 diff.c:5303
+#: diff.c:4763 diff.c:4768 diff.c:4773 diff.c:4778 diff.c:5306
 #: parse-options.c:197 parse-options.c:201 builtin/commit-graph.c:180
 #, c-format
 msgid "%s expects a numerical value"
 msgstr "%s erwartet einen numerischen Wert."
 
-#: diff.c:4792
+#: diff.c:4795
 #, c-format
 msgid ""
 "Failed to parse --dirstat/-X option parameter:\n"
@@ -3361,42 +3424,42 @@ msgstr ""
 "Fehler beim Parsen des --dirstat/-X Optionsparameters:\n"
 "%s"
 
-#: diff.c:4877
+#: diff.c:4880
 #, c-format
 msgid "unknown change class '%c' in --diff-filter=%s"
 msgstr "unbekannte Änderungsklasse '%c' in --diff-filter=%s"
 
-#: diff.c:4901
+#: diff.c:4904
 #, c-format
 msgid "unknown value after ws-error-highlight=%.*s"
 msgstr "unbekannter Wert nach ws-error-highlight=%.*s"
 
-#: diff.c:4915
+#: diff.c:4918
 #, c-format
 msgid "unable to resolve '%s'"
 msgstr "konnte '%s' nicht auflösen"
 
-#: diff.c:4965 diff.c:4971
+#: diff.c:4968 diff.c:4974
 #, c-format
 msgid "%s expects <n>/<m> form"
 msgstr "%s erwartet die Form <n>/<m>"
 
-#: diff.c:4983
+#: diff.c:4986
 #, c-format
 msgid "%s expects a character, got '%s'"
 msgstr "%s erwartet ein Zeichen, '%s' bekommen"
 
-#: diff.c:5004
+#: diff.c:5007
 #, c-format
 msgid "bad --color-moved argument: %s"
 msgstr "ungültiges --color-moved Argument: %s"
 
-#: diff.c:5023
+#: diff.c:5026
 #, c-format
 msgid "invalid mode '%s' in --color-moved-ws"
 msgstr "ungültiger Modus '%s' in --color-moved-ws"
 
-#: diff.c:5063
+#: diff.c:5066
 msgid ""
 "option diff-algorithm accepts \"myers\", \"minimal\", \"patience\" and "
 "\"histogram\""
@@ -3404,157 +3467,157 @@ msgstr ""
 "Option diff-algorithm akzeptiert: \"myers\", \"minimal\", \"patience\" and "
 "\"histogram\""
 
-#: diff.c:5099 diff.c:5119
+#: diff.c:5102 diff.c:5122
 #, c-format
 msgid "invalid argument to %s"
 msgstr "ungültiges Argument für %s"
 
-#: diff.c:5223
+#: diff.c:5226
 #, c-format
 msgid "invalid regex given to -I: '%s'"
 msgstr "ungültiger regulärer Ausdruck für -I gegeben: '%s'"
 
-#: diff.c:5272
+#: diff.c:5275
 #, c-format
 msgid "failed to parse --submodule option parameter: '%s'"
 msgstr "Fehler beim Parsen des --submodule Optionsparameters: '%s'"
 
-#: diff.c:5328
+#: diff.c:5331
 #, c-format
 msgid "bad --word-diff argument: %s"
 msgstr "ungültiges --word-diff Argument: %s"
 
-#: diff.c:5351
+#: diff.c:5367
 msgid "Diff output format options"
 msgstr "Diff-Optionen zu Ausgabeformaten"
 
-#: diff.c:5353 diff.c:5359
+#: diff.c:5369 diff.c:5375
 msgid "generate patch"
 msgstr "Patch erzeugen"
 
-#: diff.c:5356 builtin/log.c:178
+#: diff.c:5372 builtin/log.c:179
 msgid "suppress diff output"
 msgstr "Ausgabe der Unterschiede unterdrücken"
 
-#: diff.c:5361 diff.c:5475 diff.c:5482
+#: diff.c:5377 diff.c:5491 diff.c:5498
 msgid "<n>"
 msgstr "<n>"
 
-#: diff.c:5362 diff.c:5365
+#: diff.c:5378 diff.c:5381
 msgid "generate diffs with <n> lines context"
 msgstr "Unterschiede mit <n> Zeilen des Kontextes erstellen"
 
-#: diff.c:5367
+#: diff.c:5383
 msgid "generate the diff in raw format"
 msgstr "Unterschiede im Rohformat erstellen"
 
-#: diff.c:5370
+#: diff.c:5386
 msgid "synonym for '-p --raw'"
 msgstr "Synonym für '-p --raw'"
 
-#: diff.c:5374
+#: diff.c:5390
 msgid "synonym for '-p --stat'"
 msgstr "Synonym für '-p --stat'"
 
-#: diff.c:5378
+#: diff.c:5394
 msgid "machine friendly --stat"
 msgstr "maschinenlesbare Ausgabe von --stat"
 
-#: diff.c:5381
+#: diff.c:5397
 msgid "output only the last line of --stat"
 msgstr "nur die letzte Zeile von --stat ausgeben"
 
-#: diff.c:5383 diff.c:5391
+#: diff.c:5399 diff.c:5407
 msgid "<param1,param2>..."
 msgstr "<Parameter1,Parameter2>..."
 
-#: diff.c:5384
+#: diff.c:5400
 msgid ""
 "output the distribution of relative amount of changes for each sub-directory"
 msgstr ""
 "die Verteilung des relativen Umfangs der Änderungen für jedes "
 "Unterverzeichnis ausgeben"
 
-#: diff.c:5388
+#: diff.c:5404
 msgid "synonym for --dirstat=cumulative"
 msgstr "Synonym für --dirstat=cumulative"
 
-#: diff.c:5392
+#: diff.c:5408
 msgid "synonym for --dirstat=files,param1,param2..."
 msgstr "Synonym für --dirstat=files,Parameter1,Parameter2..."
 
-#: diff.c:5396
+#: diff.c:5412
 msgid "warn if changes introduce conflict markers or whitespace errors"
 msgstr ""
 "warnen, wenn Änderungen Konfliktmarker oder Whitespace-Fehler einbringen"
 
-#: diff.c:5399
+#: diff.c:5415
 msgid "condensed summary such as creations, renames and mode changes"
 msgstr ""
 "gekürzte Zusammenfassung, wie z.B. Erstellungen, Umbenennungen und "
 "Änderungen der Datei-Rechte"
 
-#: diff.c:5402
+#: diff.c:5418
 msgid "show only names of changed files"
 msgstr "nur Dateinamen der geänderten Dateien anzeigen"
 
-#: diff.c:5405
+#: diff.c:5421
 msgid "show only names and status of changed files"
 msgstr "nur Dateinamen und Status der geänderten Dateien anzeigen"
 
-#: diff.c:5407
+#: diff.c:5423
 msgid "<width>[,<name-width>[,<count>]]"
 msgstr "<Breite>[,<Namens-Breite>[,<Anzahl>]]"
 
-#: diff.c:5408
+#: diff.c:5424
 msgid "generate diffstat"
 msgstr "Zusammenfassung der Unterschiede erzeugen"
 
-#: diff.c:5410 diff.c:5413 diff.c:5416
+#: diff.c:5426 diff.c:5429 diff.c:5432
 msgid "<width>"
 msgstr "<Breite>"
 
-#: diff.c:5411
+#: diff.c:5427
 msgid "generate diffstat with a given width"
 msgstr "Zusammenfassung der Unterschiede mit gegebener Breite erzeugen"
 
-#: diff.c:5414
+#: diff.c:5430
 msgid "generate diffstat with a given name width"
 msgstr "Zusammenfassung der Unterschiede mit gegebener Namens-Breite erzeugen"
 
-#: diff.c:5417
+#: diff.c:5433
 msgid "generate diffstat with a given graph width"
 msgstr "Zusammenfassung der Unterschiede mit gegebener Graph-Breite erzeugen"
 
-#: diff.c:5419
+#: diff.c:5435
 msgid "<count>"
 msgstr "<Anzahl>"
 
-#: diff.c:5420
+#: diff.c:5436
 msgid "generate diffstat with limited lines"
 msgstr "Zusammenfassung der Unterschiede mit begrenzten Zeilen erzeugen"
 
-#: diff.c:5423
+#: diff.c:5439
 msgid "generate compact summary in diffstat"
 msgstr "kompakte Zusammenstellung in Zusammenfassung der Unterschiede erzeugen"
 
-#: diff.c:5426
+#: diff.c:5442
 msgid "output a binary diff that can be applied"
 msgstr "eine binäre Differenz ausgeben, dass angewendet werden kann"
 
-#: diff.c:5429
+#: diff.c:5445
 msgid "show full pre- and post-image object names on the \"index\" lines"
 msgstr "vollständige Objekt-Namen in den \"index\"-Zeilen anzeigen"
 
-#: diff.c:5431
+#: diff.c:5447
 msgid "show colored diff"
 msgstr "farbige Unterschiede anzeigen"
 
-#: diff.c:5432
+#: diff.c:5448
 msgid "<kind>"
 msgstr "<Art>"
 
-#: diff.c:5433
+#: diff.c:5449
 msgid ""
 "highlight whitespace errors in the 'context', 'old' or 'new' lines in the "
 "diff"
@@ -3562,7 +3625,7 @@ msgstr ""
 "Whitespace-Fehler in den Zeilen 'context', 'old' oder 'new' bei den "
 "Unterschieden hervorheben"
 
-#: diff.c:5436
+#: diff.c:5452
 msgid ""
 "do not munge pathnames and use NULs as output field terminators in --raw or "
 "--numstat"
@@ -3570,91 +3633,91 @@ msgstr ""
 "die Pfadnamen nicht verschleiern und NUL-Zeichen als Schlusszeichen in "
 "Ausgabefeldern bei --raw oder --numstat nutzen"
 
-#: diff.c:5439 diff.c:5442 diff.c:5445 diff.c:5554
+#: diff.c:5455 diff.c:5458 diff.c:5461 diff.c:5570
 msgid "<prefix>"
 msgstr "<Präfix>"
 
-#: diff.c:5440
+#: diff.c:5456
 msgid "show the given source prefix instead of \"a/\""
 msgstr "den gegebenen Quell-Präfix statt \"a/\" anzeigen"
 
-#: diff.c:5443
+#: diff.c:5459
 msgid "show the given destination prefix instead of \"b/\""
 msgstr "den gegebenen Ziel-Präfix statt \"b/\" anzeigen"
 
-#: diff.c:5446
+#: diff.c:5462
 msgid "prepend an additional prefix to every line of output"
 msgstr "einen zusätzlichen Präfix bei jeder Ausgabezeile voranstellen"
 
-#: diff.c:5449
+#: diff.c:5465
 msgid "do not show any source or destination prefix"
 msgstr "keine Quell- oder Ziel-Präfixe anzeigen"
 
-#: diff.c:5452
+#: diff.c:5468
 msgid "show context between diff hunks up to the specified number of lines"
 msgstr ""
 "Kontext zwischen Unterschied-Blöcken bis zur angegebenen Anzahl von Zeilen "
 "anzeigen"
 
-#: diff.c:5456 diff.c:5461 diff.c:5466
+#: diff.c:5472 diff.c:5477 diff.c:5482
 msgid "<char>"
 msgstr "<Zeichen>"
 
-#: diff.c:5457
+#: diff.c:5473
 msgid "specify the character to indicate a new line instead of '+'"
 msgstr "das Zeichen festlegen, das eine neue Zeile kennzeichnet (statt '+')"
 
-#: diff.c:5462
+#: diff.c:5478
 msgid "specify the character to indicate an old line instead of '-'"
 msgstr "das Zeichen festlegen, das eine alte Zeile kennzeichnet (statt '-')"
 
-#: diff.c:5467
+#: diff.c:5483
 msgid "specify the character to indicate a context instead of ' '"
 msgstr "das Zeichen festlegen, das den Kontext kennzeichnet (statt ' ')"
 
-#: diff.c:5470
+#: diff.c:5486
 msgid "Diff rename options"
 msgstr "Diff-Optionen zur Umbenennung"
 
-#: diff.c:5471
+#: diff.c:5487
 msgid "<n>[/<m>]"
 msgstr "<n>[/<m>]"
 
-#: diff.c:5472
+#: diff.c:5488
 msgid "break complete rewrite changes into pairs of delete and create"
 msgstr ""
 "teile komplette Rewrite-Änderungen in Änderungen mit \"löschen\" und "
 "\"erstellen\""
 
-#: diff.c:5476
+#: diff.c:5492
 msgid "detect renames"
 msgstr "Umbenennungen erkennen"
 
-#: diff.c:5480
+#: diff.c:5496
 msgid "omit the preimage for deletes"
 msgstr "Preimage für Löschungen weglassen"
 
-#: diff.c:5483
+#: diff.c:5499
 msgid "detect copies"
 msgstr "Kopien erkennen"
 
-#: diff.c:5487
+#: diff.c:5503
 msgid "use unmodified files as source to find copies"
 msgstr "ungeänderte Dateien als Quelle zum Finden von Kopien nutzen"
 
-#: diff.c:5489
+#: diff.c:5505
 msgid "disable rename detection"
 msgstr "Erkennung von Umbenennungen deaktivieren"
 
-#: diff.c:5492
+#: diff.c:5508
 msgid "use empty blobs as rename source"
 msgstr "leere Blobs als Quelle von Umbenennungen nutzen"
 
-#: diff.c:5494
+#: diff.c:5510
 msgid "continue listing the history of a file beyond renames"
 msgstr "Auflistung der Historie einer Datei nach Umbenennung fortführen"
 
-#: diff.c:5497
+#: diff.c:5513
 msgid ""
 "prevent rename/copy detection if the number of rename/copy targets exceeds "
 "given limit"
@@ -3662,164 +3725,164 @@ msgstr ""
 "Erkennung von Umbenennungen und Kopien verhindern, wenn die Anzahl der Ziele "
 "für Umbenennungen und Kopien das gegebene Limit überschreitet"
 
-#: diff.c:5499
+#: diff.c:5515
 msgid "Diff algorithm options"
 msgstr "Diff Algorithmus-Optionen"
 
-#: diff.c:5501
+#: diff.c:5517
 msgid "produce the smallest possible diff"
 msgstr "die kleinstmöglichen Änderungen erzeugen"
 
-#: diff.c:5504
+#: diff.c:5520
 msgid "ignore whitespace when comparing lines"
 msgstr "Whitespace-Änderungen beim Vergleich von Zeilen ignorieren"
 
-#: diff.c:5507
+#: diff.c:5523
 msgid "ignore changes in amount of whitespace"
 msgstr "Änderungen bei der Anzahl von Whitespace ignorieren"
 
-#: diff.c:5510
+#: diff.c:5526
 msgid "ignore changes in whitespace at EOL"
 msgstr "Whitespace-Änderungen am Zeilenende ignorieren"
 
-#: diff.c:5513
+#: diff.c:5529
 msgid "ignore carrier-return at the end of line"
 msgstr "den Zeilenumbruch am Ende der Zeile ignorieren"
 
-#: diff.c:5516
+#: diff.c:5532
 msgid "ignore changes whose lines are all blank"
 msgstr "Änderungen in leeren Zeilen ignorieren"
 
-#: diff.c:5518 diff.c:5540 diff.c:5543 diff.c:5588
+#: diff.c:5534 diff.c:5556 diff.c:5559 diff.c:5604
 msgid "<regex>"
 msgstr "<Regex>"
 
-#: diff.c:5519
+#: diff.c:5535
 msgid "ignore changes whose all lines match <regex>"
 msgstr ""
 "Änderungen ignorieren, bei denen alle Zeilen mit <Regex> übereinstimmen"
 
-#: diff.c:5522
+#: diff.c:5538
 msgid "heuristic to shift diff hunk boundaries for easy reading"
 msgstr ""
 "Heuristik, um Grenzen der Änderungsblöcke für bessere Lesbarkeit zu "
 "verschieben"
 
-#: diff.c:5525
+#: diff.c:5541
 msgid "generate diff using the \"patience diff\" algorithm"
 msgstr "Änderungen durch Nutzung des Algorithmus \"Patience Diff\" erzeugen"
 
-#: diff.c:5529
+#: diff.c:5545
 msgid "generate diff using the \"histogram diff\" algorithm"
 msgstr "Änderungen durch Nutzung des Algorithmus \"Histogram Diff\" erzeugen"
 
-#: diff.c:5531
+#: diff.c:5547
 msgid "<algorithm>"
 msgstr "<Algorithmus>"
 
-#: diff.c:5532
+#: diff.c:5548
 msgid "choose a diff algorithm"
 msgstr "einen Algorithmus für Änderungen wählen"
 
-#: diff.c:5534
+#: diff.c:5550
 msgid "<text>"
 msgstr "<Text>"
 
-#: diff.c:5535
+#: diff.c:5551
 msgid "generate diff using the \"anchored diff\" algorithm"
 msgstr "Änderungen durch Nutzung des Algorithmus \"Anchored Diff\" erzeugen"
 
-#: diff.c:5537 diff.c:5546 diff.c:5549
+#: diff.c:5553 diff.c:5562 diff.c:5565
 msgid "<mode>"
 msgstr "<Modus>"
 
-#: diff.c:5538
+#: diff.c:5554
 msgid "show word diff, using <mode> to delimit changed words"
 msgstr "Wort-Änderungen zeigen, nutze <Modus>, um Wörter abzugrenzen"
 
-#: diff.c:5541
+#: diff.c:5557
 msgid "use <regex> to decide what a word is"
 msgstr "<Regex> nutzen, um zu entscheiden, was ein Wort ist"
 
-#: diff.c:5544
+#: diff.c:5560
 msgid "equivalent to --word-diff=color --word-diff-regex=<regex>"
 msgstr "entsprechend wie --word-diff=color --word-diff-regex=<Regex>"
 
-#: diff.c:5547
+#: diff.c:5563
 msgid "moved lines of code are colored differently"
 msgstr "verschobene Codezeilen sind andersfarbig"
 
-#: diff.c:5550
+#: diff.c:5566
 msgid "how white spaces are ignored in --color-moved"
 msgstr "wie Whitespaces in --color-moved ignoriert werden"
 
-#: diff.c:5553
+#: diff.c:5569
 msgid "Other diff options"
 msgstr "Andere Diff-Optionen"
 
-#: diff.c:5555
+#: diff.c:5571
 msgid "when run from subdir, exclude changes outside and show relative paths"
 msgstr ""
 "wenn vom Unterverzeichnis aufgerufen, schließe Änderungen außerhalb aus und "
 "zeige relative Pfade an"
 
-#: diff.c:5559
+#: diff.c:5575
 msgid "treat all files as text"
 msgstr "alle Dateien als Text behandeln"
 
-#: diff.c:5561
+#: diff.c:5577
 msgid "swap two inputs, reverse the diff"
 msgstr "die beiden Eingaben vertauschen und die Änderungen umkehren"
 
-#: diff.c:5563
+#: diff.c:5579
 msgid "exit with 1 if there were differences, 0 otherwise"
 msgstr ""
 "mit Exit-Status 1 beenden, wenn Änderungen vorhanden sind, andernfalls mit 0"
 
-#: diff.c:5565
+#: diff.c:5581
 msgid "disable all output of the program"
 msgstr "alle Ausgaben vom Programm deaktivieren"
 
-#: diff.c:5567
+#: diff.c:5583
 msgid "allow an external diff helper to be executed"
 msgstr "erlaube die Ausführung eines externes Programms für Änderungen"
 
-#: diff.c:5569
+#: diff.c:5585
 msgid "run external text conversion filters when comparing binary files"
 msgstr ""
 "Führe externe Text-Konvertierungsfilter aus, wenn binäre Dateien vergleicht "
 "werden"
 
-#: diff.c:5571
+#: diff.c:5587
 msgid "<when>"
 msgstr "<wann>"
 
-#: diff.c:5572
+#: diff.c:5588
 msgid "ignore changes to submodules in the diff generation"
 msgstr ""
 "Änderungen in Submodulen während der Erstellung der Unterschiede ignorieren"
 
-#: diff.c:5575
+#: diff.c:5591
 msgid "<format>"
 msgstr "<Format>"
 
-#: diff.c:5576
+#: diff.c:5592
 msgid "specify how differences in submodules are shown"
 msgstr "angeben, wie Unterschiede in Submodulen gezeigt werden"
 
-#: diff.c:5580
+#: diff.c:5596
 msgid "hide 'git add -N' entries from the index"
 msgstr "'git add -N' Einträge vom Index verstecken"
 
-#: diff.c:5583
+#: diff.c:5599
 msgid "treat 'git add -N' entries as real in the index"
 msgstr "'git add -N' Einträge im Index als echt behandeln"
 
-#: diff.c:5585
+#: diff.c:5601
 msgid "<string>"
 msgstr "<Zeichenkette>"
 
-#: diff.c:5586
+#: diff.c:5602
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "string"
@@ -3827,7 +3890,7 @@ msgstr ""
 "nach Unterschieden suchen, welche die Anzahl des Vorkommens der angegebenen "
 "Zeichenkette verändern"
 
-#: diff.c:5589
+#: diff.c:5605
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "regex"
@@ -3835,25 +3898,37 @@ msgstr ""
 "nach Unterschieden suchen, welche die Anzahl des Vorkommens des angegebenen "
 "regulären Ausdrucks verändern"
 
-#: diff.c:5592
+#: diff.c:5608
 msgid "show all changes in the changeset with -S or -G"
 msgstr "alle Änderungen im Changeset mit -S oder -G anzeigen"
 
-#: diff.c:5595
+#: diff.c:5611
 msgid "treat <string> in -S as extended POSIX regular expression"
 msgstr ""
 "<Zeichenkette> bei -S als erweiterten POSIX regulären Ausdruck behandeln"
 
-#: diff.c:5598
+#: diff.c:5614
 msgid "control the order in which files appear in the output"
 msgstr ""
 "die Reihenfolge kontrollieren, in der die Dateien in der Ausgabe erscheinen"
 
-#: diff.c:5599
+#: diff.c:5615 diff.c:5618
+msgid "<path>"
+msgstr "<Pfad>"
+
+#: diff.c:5616
+msgid "show the change in the specified path first"
+msgstr "die Änderung des angegebenen Pfades zuerst anzeigen"
+
+#: diff.c:5619
+msgid "skip the output to the specified path"
+msgstr "überspringe die Ausgabe bis zum angegebenen Pfad"
+
+#: diff.c:5621
 msgid "<object-id>"
 msgstr "<Objekt-ID>"
 
-#: diff.c:5600
+#: diff.c:5622
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "object"
@@ -3861,33 +3936,33 @@ msgstr ""
 "nach Unterschieden suchen, welche die Anzahl des Vorkommens des angegebenen "
 "Objektes verändern"
 
-#: diff.c:5602
+#: diff.c:5624
 msgid "[(A|C|D|M|R|T|U|X|B)...[*]]"
 msgstr "[(A|C|D|M|R|T|U|X|B)...[*]]"
 
-#: diff.c:5603
+#: diff.c:5625
 msgid "select files by diff type"
 msgstr "Dateien anhand der Art der Änderung wählen"
 
-#: diff.c:5605
+#: diff.c:5627
 msgid "<file>"
 msgstr "<Datei>"
 
-#: diff.c:5606
+#: diff.c:5628
 msgid "Output to a specific file"
 msgstr "Ausgabe zu einer bestimmten Datei"
 
-#: diff.c:6263
+#: diff.c:6285
 msgid "inexact rename detection was skipped due to too many files."
 msgstr ""
 "ungenaue Erkennung für Umbenennungen wurde aufgrund zu vieler Dateien\n"
 "übersprungen."
 
-#: diff.c:6266
+#: diff.c:6288
 msgid "only found copies from modified paths due to too many files."
 msgstr "nur Kopien von geänderten Pfaden, aufgrund zu vieler Dateien, gefunden"
 
-#: diff.c:6269
+#: diff.c:6291
 #, c-format
 msgid ""
 "you may want to set your %s variable to at least %d and retry the command."
@@ -3900,10 +3975,15 @@ msgstr ""
 msgid "failed to read orderfile '%s'"
 msgstr "Fehler beim Lesen der Reihenfolgedatei '%s'"
 
-#: diffcore-rename.c:592
+#: diffcore-rename.c:786
 msgid "Performing inexact rename detection"
 msgstr "Führe Erkennung für ungenaue Umbenennung aus"
 
+#: diffcore-rotate.c:29
+#, c-format
+msgid "No such path '%s' in the diff"
+msgstr "Pfad '%s' nicht im Diff gefunden"
+
 #: dir.c:578
 #, c-format
 msgid "pathspec '%s' did not match any file(s) known to git"
@@ -3950,17 +4030,17 @@ msgstr ""
 "Cache für unversionierte Dateien ist auf diesem System oder\n"
 "für dieses Verzeichnis deaktiviert"
 
-#: dir.c:3520
+#: dir.c:3534
 #, c-format
 msgid "index file corrupt in repo %s"
 msgstr "Index-Datei in Repository %s beschädigt"
 
-#: dir.c:3565 dir.c:3570
+#: dir.c:3579 dir.c:3584
 #, c-format
 msgid "could not create directories for %s"
 msgstr "Konnte Verzeichnisse für '%s' nicht erstellen"
 
-#: dir.c:3599
+#: dir.c:3613
 #, c-format
 msgid "could not migrate git directory from '%s' to '%s'"
 msgstr "Konnte Git-Verzeichnis nicht von '%s' nach '%s' migrieren"
@@ -3979,12 +4059,12 @@ msgstr "Filtere Inhalt"
 msgid "could not stat file '%s'"
 msgstr "konnte Datei '%s' nicht lesen"
 
-#: environment.c:150
+#: environment.c:152
 #, c-format
 msgid "bad git namespace path \"%s\""
 msgstr "ungültiger Git-Namespace-Pfad \"%s\""
 
-#: environment.c:337
+#: environment.c:335
 #, c-format
 msgid "could not set GIT_DIR to '%s'"
 msgstr "konnte GIT_DIR nicht zu '%s' setzen"
@@ -4019,32 +4099,32 @@ msgstr "konnte nicht zum Remote schreiben"
 msgid "--stateless-rpc requires multi_ack_detailed"
 msgstr "--stateless-rpc benötigt multi_ack_detailed"
 
-#: fetch-pack.c:378 fetch-pack.c:1406
+#: fetch-pack.c:378 fetch-pack.c:1457
 #, c-format
 msgid "invalid shallow line: %s"
 msgstr "ungültige shallow-Zeile: %s"
 
-#: fetch-pack.c:384 fetch-pack.c:1412
+#: fetch-pack.c:384 fetch-pack.c:1463
 #, c-format
 msgid "invalid unshallow line: %s"
 msgstr "ungültige unshallow-Zeile: %s"
 
-#: fetch-pack.c:386 fetch-pack.c:1414
+#: fetch-pack.c:386 fetch-pack.c:1465
 #, c-format
 msgid "object not found: %s"
 msgstr "Objekt nicht gefunden: %s"
 
-#: fetch-pack.c:389 fetch-pack.c:1417
+#: fetch-pack.c:389 fetch-pack.c:1468
 #, c-format
 msgid "error in object: %s"
 msgstr "Fehler in Objekt: %s"
 
-#: fetch-pack.c:391 fetch-pack.c:1419
+#: fetch-pack.c:391 fetch-pack.c:1470
 #, c-format
 msgid "no shallow found: %s"
 msgstr "kein shallow-Objekt gefunden: %s"
 
-#: fetch-pack.c:394 fetch-pack.c:1423
+#: fetch-pack.c:394 fetch-pack.c:1474
 #, c-format
 msgid "expected shallow/unshallow, got %s"
 msgstr "shallow/unshallow erwartet, %s bekommen"
@@ -4082,171 +4162,175 @@ msgstr "Markiere %s als vollständig"
 msgid "already have %s (%s)"
 msgstr "habe %s (%s) bereits"
 
-#: fetch-pack.c:827
+#: fetch-pack.c:844
 msgid "fetch-pack: unable to fork off sideband demultiplexer"
 msgstr "fetch-pack: Fehler beim Starten des sideband demultiplexer"
 
-#: fetch-pack.c:835
+#: fetch-pack.c:852
 msgid "protocol error: bad pack header"
 msgstr "Protokollfehler: ungültiger Pack-Header"
 
-#: fetch-pack.c:919
+#: fetch-pack.c:946
 #, c-format
 msgid "fetch-pack: unable to fork off %s"
 msgstr "fetch-pack: konnte %s nicht starten"
 
-#: fetch-pack.c:937
+#: fetch-pack.c:952
+msgid "fetch-pack: invalid index-pack output"
+msgstr "fetch-pack: ungültige index-pack Ausgabe"
+
+#: fetch-pack.c:969
 #, c-format
 msgid "%s failed"
 msgstr "%s fehlgeschlagen"
 
-#: fetch-pack.c:939
+#: fetch-pack.c:971
 msgid "error in sideband demultiplexer"
 msgstr "Fehler in sideband demultiplexer"
 
-#: fetch-pack.c:982
+#: fetch-pack.c:1031
 #, c-format
 msgid "Server version is %.*s"
 msgstr "Server-Version ist %.*s"
 
-#: fetch-pack.c:990 fetch-pack.c:996 fetch-pack.c:999 fetch-pack.c:1005
-#: fetch-pack.c:1009 fetch-pack.c:1013 fetch-pack.c:1017 fetch-pack.c:1021
-#: fetch-pack.c:1025 fetch-pack.c:1029 fetch-pack.c:1033 fetch-pack.c:1037
-#: fetch-pack.c:1043 fetch-pack.c:1049 fetch-pack.c:1054 fetch-pack.c:1059
+#: fetch-pack.c:1039 fetch-pack.c:1045 fetch-pack.c:1048 fetch-pack.c:1054
+#: fetch-pack.c:1058 fetch-pack.c:1062 fetch-pack.c:1066 fetch-pack.c:1070
+#: fetch-pack.c:1074 fetch-pack.c:1078 fetch-pack.c:1082 fetch-pack.c:1086
+#: fetch-pack.c:1092 fetch-pack.c:1098 fetch-pack.c:1103 fetch-pack.c:1108
 #, c-format
 msgid "Server supports %s"
 msgstr "Server unterstützt %s"
 
-#: fetch-pack.c:992
+#: fetch-pack.c:1041
 msgid "Server does not support shallow clients"
 msgstr "Server unterstützt keine shallow-Clients"
 
-#: fetch-pack.c:1052
+#: fetch-pack.c:1101
 msgid "Server does not support --shallow-since"
 msgstr "Server unterstützt kein --shallow-since"
 
-#: fetch-pack.c:1057
+#: fetch-pack.c:1106
 msgid "Server does not support --shallow-exclude"
 msgstr "Server unterstützt kein --shallow-exclude"
 
-#: fetch-pack.c:1061
+#: fetch-pack.c:1110
 msgid "Server does not support --deepen"
 msgstr "Server unterstützt kein --deepen"
 
-#: fetch-pack.c:1063
+#: fetch-pack.c:1112
 msgid "Server does not support this repository's object format"
 msgstr "Server unterstützt das Objekt-Format dieses Repositories nicht"
 
-#: fetch-pack.c:1076
+#: fetch-pack.c:1125
 msgid "no common commits"
 msgstr "keine gemeinsamen Commits"
 
-#: fetch-pack.c:1088 fetch-pack.c:1628
+#: fetch-pack.c:1138 fetch-pack.c:1682
 msgid "git fetch-pack: fetch failed."
 msgstr "git fetch-pack: Abholen fehlgeschlagen."
 
-#: fetch-pack.c:1214
+#: fetch-pack.c:1265
 #, c-format
 msgid "mismatched algorithms: client %s; server %s"
 msgstr "Algorithmen stimmen nicht überein: Client %s; Server %s"
 
-#: fetch-pack.c:1218
+#: fetch-pack.c:1269
 #, c-format
 msgid "the server does not support algorithm '%s'"
 msgstr "der Server unterstützt Algorithmus '%s' nicht"
 
-#: fetch-pack.c:1238
+#: fetch-pack.c:1289
 msgid "Server does not support shallow requests"
 msgstr "Server unterstützt keine shallow-Anfragen"
 
-#: fetch-pack.c:1245
+#: fetch-pack.c:1296
 msgid "Server supports filter"
 msgstr "Server unterstützt Filter"
 
-#: fetch-pack.c:1284
+#: fetch-pack.c:1335
 msgid "unable to write request to remote"
 msgstr "konnte Anfrage nicht zum Remote schreiben"
 
-#: fetch-pack.c:1302
+#: fetch-pack.c:1353
 #, c-format
 msgid "error reading section header '%s'"
 msgstr "Fehler beim Lesen von Sektionskopf '%s'."
 
-#: fetch-pack.c:1308
+#: fetch-pack.c:1359
 #, c-format
 msgid "expected '%s', received '%s'"
 msgstr "'%s' erwartet, '%s' empfangen"
 
-#: fetch-pack.c:1369
+#: fetch-pack.c:1420
 #, c-format
 msgid "unexpected acknowledgment line: '%s'"
 msgstr "Unerwartete Acknowledgment-Zeile: '%s'"
 
-#: fetch-pack.c:1374
+#: fetch-pack.c:1425
 #, c-format
 msgid "error processing acks: %d"
 msgstr "Fehler beim Verarbeiten von ACKS: %d"
 
-#: fetch-pack.c:1384
+#: fetch-pack.c:1435
 msgid "expected packfile to be sent after 'ready'"
 msgstr "Erwartete Versand einer Packdatei nach 'ready'."
 
-#: fetch-pack.c:1386
+#: fetch-pack.c:1437
 msgid "expected no other sections to be sent after no 'ready'"
 msgstr "Erwartete keinen Versand einer anderen Sektion ohne 'ready'."
 
-#: fetch-pack.c:1428
+#: fetch-pack.c:1479
 #, c-format
 msgid "error processing shallow info: %d"
 msgstr "Fehler beim Verarbeiten von Shallow-Informationen: %d"
 
-#: fetch-pack.c:1475
+#: fetch-pack.c:1526
 #, c-format
 msgid "expected wanted-ref, got '%s'"
 msgstr "wanted-ref erwartet, '%s' bekommen"
 
-#: fetch-pack.c:1480
+#: fetch-pack.c:1531
 #, c-format
 msgid "unexpected wanted-ref: '%s'"
 msgstr "unerwartetes wanted-ref: '%s'"
 
-#: fetch-pack.c:1485
+#: fetch-pack.c:1536
 #, c-format
 msgid "error processing wanted refs: %d"
 msgstr "Fehler beim Verarbeiten von wanted-refs: %d"
 
-#: fetch-pack.c:1515
+#: fetch-pack.c:1566
 msgid "git fetch-pack: expected response end packet"
 msgstr "git fetch-pack: Antwort-Endpaket erwartet"
 
-#: fetch-pack.c:1897
+#: fetch-pack.c:1960
 msgid "no matching remote head"
 msgstr "kein übereinstimmender Remote-Branch"
 
-#: fetch-pack.c:1920 builtin/clone.c:693
+#: fetch-pack.c:1983 builtin/clone.c:693
 msgid "remote did not send all necessary objects"
 msgstr "Remote-Repository hat nicht alle erforderlichen Objekte gesendet"
 
-#: fetch-pack.c:1947
+#: fetch-pack.c:2010
 #, c-format
 msgid "no such remote ref %s"
-msgstr "keine solche Remote-Referenz %s"
+msgstr "Remote-Referenz %s nicht gefunden"
 
-#: fetch-pack.c:1950
+#: fetch-pack.c:2013
 #, c-format
 msgid "Server does not allow request for unadvertised object %s"
 msgstr "Der Server lehnt Anfrage nach nicht angebotenem Objekt %s ab."
 
-#: gpg-interface.c:272
+#: gpg-interface.c:273
 msgid "could not create temporary file"
 msgstr "konnte temporäre Datei nicht erstellen"
 
-#: gpg-interface.c:275
+#: gpg-interface.c:276
 #, c-format
 msgid "failed writing detached signature to '%s'"
 msgstr "Fehler beim Schreiben der losgelösten Signatur nach '%s'"
 
-#: gpg-interface.c:457
+#: gpg-interface.c:470
 msgid "gpg failed to sign the data"
 msgstr "gpg beim Signieren der Daten fehlgeschlagen"
 
@@ -4255,7 +4339,7 @@ msgstr "gpg beim Signieren der Daten fehlgeschlagen"
 msgid "ignore invalid color '%.*s' in log.graphColors"
 msgstr "Ignoriere ungültige Farbe '%.*s' in log.graphColors"
 
-#: grep.c:640
+#: grep.c:543
 msgid ""
 "given pattern contains NULL byte (via -f <file>). This is only supported "
 "with -P under PCRE v2"
@@ -4263,18 +4347,18 @@ msgstr ""
 "Angegebenes Muster enthält NULL Byte (über -f <Datei>). Das wird nur mit -"
 "Punter PCRE v2 unterstützt."
 
-#: grep.c:2100
+#: grep.c:1906
 #, c-format
 msgid "'%s': unable to read %s"
 msgstr "'%s': konnte %s nicht lesen"
 
-#: grep.c:2117 setup.c:176 builtin/clone.c:412 builtin/diff.c:89
+#: grep.c:1923 setup.c:176 builtin/clone.c:412 builtin/diff.c:90
 #: builtin/rm.c:135
 #, c-format
 msgid "failed to stat '%s'"
 msgstr "Konnte '%s' nicht lesen"
 
-#: grep.c:2128
+#: grep.c:1934
 #, c-format
 msgid "'%s': short read"
 msgstr "'%s': read() zu kurz"
@@ -4344,7 +4428,7 @@ msgstr "Vorhandene Git-Befehle anderswo in Ihrem $PATH"
 msgid "These are common Git commands used in various situations:"
 msgstr "Allgemeine Git-Befehle, verwendet in verschiedenen Situationen:"
 
-#: help.c:365 git.c:99
+#: help.c:365 git.c:100
 #, c-format
 msgid "unsupported command listing type '%s'"
 msgstr "Nicht unterstützte Art zur Befehlsauflistung '%s'."
@@ -4588,127 +4672,51 @@ msgstr ""
 msgid "Unable to create '%s.lock': %s"
 msgstr "Konnte '%s.lock' nicht erstellen: %s"
 
-#: ls-refs.c:109
-msgid "expected flush after ls-refs arguments"
-msgstr "erwartete Flush nach Argumenten für die Auflistung der Referenzen"
-
-#: merge-ort-wrappers.c:13 merge-recursive.c:3672
-#, c-format
-msgid ""
-"Your local changes to the following files would be overwritten by merge:\n"
-"  %s"
-msgstr ""
-"Ihre lokalen Änderungen in den folgenden Dateien würden durch den Merge\n"
-"überschrieben werden:\n"
-"  %s"
-
-#: merge-ort-wrappers.c:33 merge-recursive.c:3436
-#, c-format
-msgid "Already up to date!"
-msgstr "Bereits aktuell!"
-
-#: merge-recursive.c:356
-msgid "(bad commit)\n"
-msgstr "(ungültiger Commit)\n"
-
-#: merge-recursive.c:379
-#, c-format
-msgid "add_cacheinfo failed for path '%s'; merge aborting."
-msgstr "add_cacheinfo für Pfad '%s' fehlgeschlagen; Merge wird abgebrochen."
-
-#: merge-recursive.c:388
-#, c-format
-msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
-msgstr ""
-"add_cacheinfo zur Aktualisierung für Pfad '%s' fehlgeschlagen;\n"
-"Merge wird abgebrochen."
-
-#: merge-recursive.c:874
-#, c-format
-msgid "failed to create path '%s'%s"
-msgstr "Fehler beim Erstellen des Pfades '%s'%s"
-
-#: merge-recursive.c:885
-#, c-format
-msgid "Removing %s to make room for subdirectory\n"
-msgstr "Entferne %s, um Platz für Unterverzeichnis zu schaffen\n"
-
-#: merge-recursive.c:899 merge-recursive.c:918
-msgid ": perhaps a D/F conflict?"
-msgstr ": vielleicht ein Verzeichnis/Datei-Konflikt?"
-
-#: merge-recursive.c:908
-#, c-format
-msgid "refusing to lose untracked file at '%s'"
-msgstr "verweigere, da unversionierte Dateien in '%s' verloren gehen würden"
-
-#: merge-recursive.c:949 builtin/cat-file.c:41
-#, c-format
-msgid "cannot read object %s '%s'"
-msgstr "kann Objekt %s '%s' nicht lesen"
-
-#: merge-recursive.c:954
-#, c-format
-msgid "blob expected for %s '%s'"
-msgstr "Blob erwartet für %s '%s'"
-
-#: merge-recursive.c:979
-#, c-format
-msgid "failed to open '%s': %s"
-msgstr "Fehler beim Öffnen von '%s': %s"
-
-#: merge-recursive.c:990
+#: ls-refs.c:37
 #, c-format
-msgid "failed to symlink '%s': %s"
-msgstr "Fehler beim Erstellen einer symbolischen Verknüpfung für '%s': %s"
+msgid "invalid value '%s' for lsrefs.unborn"
+msgstr "ungültiger Wert '%s' für lsrefs.unborn"
 
-#: merge-recursive.c:995
-#, c-format
-msgid "do not know what to do with %06o %s '%s'"
-msgstr "weiß nicht was mit %06o %s '%s' zu machen ist"
+#: ls-refs.c:167
+msgid "expected flush after ls-refs arguments"
+msgstr "erwartete Flush nach Argumenten für die Auflistung der Referenzen"
 
-#: merge-recursive.c:1191
+#: merge-ort.c:888 merge-recursive.c:1191
 #, c-format
 msgid "Failed to merge submodule %s (not checked out)"
 msgstr "Fehler beim Merge von Submodul %s (nicht ausgecheckt)."
 
-#: merge-recursive.c:1198
+#: merge-ort.c:897 merge-recursive.c:1198
 #, c-format
 msgid "Failed to merge submodule %s (commits not present)"
 msgstr "Fehler beim Merge von Submodul %s (Commits nicht vorhanden)."
 
-#: merge-recursive.c:1205
+#: merge-ort.c:906 merge-recursive.c:1205
 #, c-format
 msgid "Failed to merge submodule %s (commits don't follow merge-base)"
 msgstr "Fehler beim Merge von Submodul %s (Commits folgen keiner Merge-Basis)"
 
-#: merge-recursive.c:1213 merge-recursive.c:1225
+#: merge-ort.c:916 merge-ort.c:923
 #, c-format
-msgid "Fast-forwarding submodule %s to the following commit:"
-msgstr "Spule Submodul %s zu dem folgenden Commit vor:"
+msgid "Note: Fast-forwarding submodule %s to %s"
+msgstr "Hinweis: Spule Submodul %s vor zu %s"
 
-#: merge-recursive.c:1216 merge-recursive.c:1228
+#: merge-ort.c:944
 #, c-format
-msgid "Fast-forwarding submodule %s"
-msgstr "Spule Submodul %s vor"
+msgid "Failed to merge submodule %s"
+msgstr "Fehler beim Zusammenführen von Submodul %s"
 
-#: merge-recursive.c:1251
+#: merge-ort.c:951
 #, c-format
-msgid "Failed to merge submodule %s (merge following commits not found)"
+msgid ""
+"Failed to merge submodule %s, but a possible merge resolution exists:\n"
+"%s\n"
 msgstr ""
-"Fehler beim Merge von Submodule %s (dem Merge nachfolgende Commits nicht "
-"gefunden)"
-
-#: merge-recursive.c:1255
-#, c-format
-msgid "Failed to merge submodule %s (not fast-forward)"
-msgstr "Fehler beim Merge von Submodul %s (kein Vorspulen)"
-
-#: merge-recursive.c:1256
-msgid "Found a possible merge resolution for the submodule:\n"
-msgstr "Mögliche Auflösung des Merges für Submodul gefunden:\n"
+"Fehler beim Zusammenführen von Submodul %s, aber es ist eine mögliche "
+"Auflösung des Merges vorhanden:\n"
+"%s\n"
 
-#: merge-recursive.c:1259
+#: merge-ort.c:955 merge-recursive.c:1259
 #, c-format
 msgid ""
 "If this is correct simply add it to the index for example\n"
@@ -4725,63 +4733,337 @@ msgstr ""
 "\n"
 "hinzu, um diesen Vorschlag zu akzeptieren.\n"
 
-#: merge-recursive.c:1268
+#: merge-ort.c:968
 #, c-format
-msgid "Failed to merge submodule %s (multiple merges found)"
-msgstr "Fehler beim Merge von Submodul %s (mehrere Merges gefunden)"
+msgid ""
+"Failed to merge submodule %s, but multiple possible merges exist:\n"
+"%s"
+msgstr ""
+"Fehler beim Zusammenführen von Submodul %s, aber mehrere mögliche Merges "
+"sind vorhanden:\n"
+"%s"
 
-#: merge-recursive.c:1341
+#: merge-ort.c:1127 merge-recursive.c:1341
 msgid "Failed to execute internal merge"
 msgstr "Fehler bei Ausführung des internen Merges"
 
-#: merge-recursive.c:1346
+#: merge-ort.c:1132 merge-recursive.c:1346
 #, c-format
 msgid "Unable to add %s to database"
 msgstr "Konnte %s nicht zur Datenbank hinzufügen"
 
-#: merge-recursive.c:1378
+#: merge-ort.c:1139 merge-recursive.c:1378
 #, c-format
 msgid "Auto-merging %s"
 msgstr "automatischer Merge von %s"
 
-#: merge-recursive.c:1402
+#: merge-ort.c:1278 merge-recursive.c:2100
 #, c-format
-msgid "Error: Refusing to lose untracked file at %s; writing to %s instead."
+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 ""
-"Fehler: Verweigere unversionierte Datei bei %s zu verlieren;\n"
-"schreibe stattdessen nach %s."
+"KONFLIKT (implizite Verzeichnisumbenennung): Existierende Datei/Pfad bei %s "
+"im\n"
+"Weg von impliziter Verzeichnisumbenennung, die versucht, einen oder mehrere\n"
+"Pfade dahin zu setzen: %s."
 
-#: merge-recursive.c:1474
+#: merge-ort.c:1288 merge-recursive.c:2110
 #, c-format
 msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
-"in tree."
+"CONFLICT (implicit dir rename): Cannot map more than one path to %s; "
+"implicit directory renames tried to put these paths there: %s"
 msgstr ""
-"KONFLIKT (%s/löschen): %s gelöscht in %s und %s in %s. Stand %s von %s wurde "
-"im Arbeitsbereich gelassen."
+"KONFLIKT (implizite Verzeichnisumbenennung): Kann nicht mehr als ein Pfad "
+"zu\n"
+"%s mappen; implizite Verzeichnisumbenennungen versuchten diese Pfade dahin\n"
+"zu setzen: %s"
 
-#: merge-recursive.c:1479
+#: merge-ort.c:1471
 #, c-format
 msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
-"left in tree."
+"CONFLICT (directory rename split): Unclear where to rename %s to; it was "
+"renamed to multiple other directories, with no destination getting a "
+"majority of the files."
 msgstr ""
-"KONFLIKT (%s/löschen): %s gelöscht in %s und %s nach %s in %s. Stand %s von "
-"%s wurde im Arbeitsbereich gelassen."
+"KONFLIKT (Aufteilung Verzeichnisumbenennung): Unklar, wo %s zu platzieren "
+"ist; es wurde zu mehreren anderen Verzeichnissen umbenannt, ohne dass ein "
+"Ziel die Mehrheit der Dateien erhält."
 
-#: merge-recursive.c:1486
+#: merge-ort.c:1637 merge-recursive.c:2447
 #, c-format
 msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
-"in tree at %s."
+"WARNING: Avoiding applying %s -> %s rename to %s, because %s itself was "
+"renamed."
 msgstr ""
-"KONFLIKT (%s/löschen): %s gelöscht in %s und %s in %s. Stand %s von %s wurde "
-"im Arbeitsbereich bei %s gelassen."
+"WARNUNG: Vermeide Umbenennung %s -> %s von %s, weil %s selbst umbenannt "
+"wurde."
 
-#: merge-recursive.c:1491
+#: merge-ort.c:1781 merge-recursive.c:3215
 #, c-format
 msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
+"Path updated: %s added in %s inside a directory that was renamed in %s; "
+"moving it to %s."
+msgstr ""
+"Pfad aktualisiert: %s hinzugefügt in %s innerhalb eines Verzeichnisses, das "
+"umbenannt wurde in %s; Verschiebe es nach %s."
+
+#: merge-ort.c:1788 merge-recursive.c:3222
+#, c-format
+msgid ""
+"Path updated: %s renamed to %s in %s, inside a directory that was renamed in "
+"%s; moving it to %s."
+msgstr ""
+"Pfad aktualisiert: %s umbenannt nach %s in %s, innerhalb eines "
+"Verzeichnisses, das umbenannt wurde in %s; Verschiebe es nach %s."
+
+#: merge-ort.c:1801 merge-recursive.c:3218
+#, c-format
+msgid ""
+"CONFLICT (file location): %s added in %s inside a directory that was renamed "
+"in %s, suggesting it should perhaps be moved to %s."
+msgstr ""
+"KONFLIKT (Speicherort): %s hinzugefügt in %s innerhalb eines Verzeichnisses, "
+"das umbenannt wurde in %s, es sollte vielleicht nach %s verschoben werden."
+
+#: merge-ort.c:1809 merge-recursive.c:3225
+#, c-format
+msgid ""
+"CONFLICT (file location): %s renamed to %s in %s, inside a directory that "
+"was renamed in %s, suggesting it should perhaps be moved to %s."
+msgstr ""
+"KONFLIKT (Speicherort): %s umbenannt nach %s in %s, innerhalb eines "
+"Verzeichnisses, das umbenannt wurde in %s, es sollte vielleicht nach %s "
+"verschoben werden."
+
+#: merge-ort.c:1952
+#, c-format
+msgid "CONFLICT (rename/rename): %s renamed to %s in %s and to %s in %s."
+msgstr ""
+"KONFLIKT (umbenennen/umbenennen): %s zu %s in %s umbenannt und zu %s in %s."
+
+#: merge-ort.c:2047
+#, c-format
+msgid ""
+"CONFLICT (rename involved in collision): rename of %s -> %s has content "
+"conflicts AND collides with another path; this may result in nested conflict "
+"markers."
+msgstr ""
+"KONFLIKT (Umbenennung in Kollision beteiligt): Umbenennung von %s -> %s hat "
+"Inhaltskonflikte UND kollidiert mit einem anderen Pfad; dies kann zu "
+"verschachtelten Konfliktmarkierungen führen."
+
+#: merge-ort.c:2066 merge-ort.c:2090
+#, c-format
+msgid "CONFLICT (rename/delete): %s renamed to %s in %s, but deleted in %s."
+msgstr ""
+"KONFLIKT (umbenennen/löschen): %s zu %s in %s umbenannt, aber in %s gelöscht."
+
+#: merge-ort.c:2735
+#, c-format
+msgid ""
+"CONFLICT (file/directory): directory in the way of %s from %s; moving it to "
+"%s instead."
+msgstr ""
+"KONFLIKT (Datei/Verzeichnis): Verzeichnis im Weg von %s aus %s; stattdessen "
+"nach %s verschieben."
+
+#: merge-ort.c:2808
+#, c-format
+msgid ""
+"CONFLICT (distinct types): %s had different types on each side; renamed %s "
+"of them so each can be recorded somewhere."
+msgstr ""
+"KONFLIKT (verschiedene Typen): %s hatte unterschiedliche Typen auf jeder "
+"Seite; %s wurde(n) umbenannt, damit jeder irgendwo aufgezeichnet werden kann."
+
+#: merge-ort.c:2812
+msgid "both"
+msgstr "beide"
+
+#: merge-ort.c:2812
+msgid "one"
+msgstr "einer"
+
+#: merge-ort.c:2907 merge-recursive.c:3052
+msgid "content"
+msgstr "Inhalt"
+
+#: merge-ort.c:2909 merge-recursive.c:3056
+msgid "add/add"
+msgstr "hinzufügen/hinzufügen"
+
+#: merge-ort.c:2911 merge-recursive.c:3101
+msgid "submodule"
+msgstr "Submodul"
+
+#: merge-ort.c:2913 merge-recursive.c:3102
+#, c-format
+msgid "CONFLICT (%s): Merge conflict in %s"
+msgstr "KONFLIKT (%s): Merge-Konflikt in %s"
+
+#: merge-ort.c:2938
+#, c-format
+msgid ""
+"CONFLICT (modify/delete): %s deleted in %s and modified in %s.  Version %s "
+"of %s left in tree."
+msgstr ""
+"KONFLIKT (ändern/löschen): %s gelöscht in %s und geändert in %s. Stand %s "
+"von %s wurde im Arbeitsbereich gelassen."
+
+#. TRANSLATORS: The %s arguments are: 1) tree hash of a merge
+#. base, and 2-3) the trees for the two trees we're merging.
+#.
+#: merge-ort.c:3406
+#, c-format
+msgid "collecting merge info failed for trees %s, %s, %s"
+msgstr ""
+"Sammeln von Merge-Informationen für die Referenzen %s, %s, %s fehlgeschlagen"
+
+#: merge-ort-wrappers.c:13 merge-recursive.c:3661
+#, c-format
+msgid ""
+"Your local changes to the following files would be overwritten by merge:\n"
+"  %s"
+msgstr ""
+"Ihre lokalen Änderungen in den folgenden Dateien würden durch den Merge\n"
+"überschrieben werden:\n"
+"  %s"
+
+#: merge-ort-wrappers.c:33 merge-recursive.c:3436
+#, c-format
+msgid "Already up to date!"
+msgstr "Bereits aktuell!"
+
+#: merge-recursive.c:356
+msgid "(bad commit)\n"
+msgstr "(ungültiger Commit)\n"
+
+#: merge-recursive.c:379
+#, c-format
+msgid "add_cacheinfo failed for path '%s'; merge aborting."
+msgstr "add_cacheinfo für Pfad '%s' fehlgeschlagen; Merge wird abgebrochen."
+
+#: merge-recursive.c:388
+#, c-format
+msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
+msgstr ""
+"add_cacheinfo zur Aktualisierung für Pfad '%s' fehlgeschlagen;\n"
+"Merge wird abgebrochen."
+
+#: merge-recursive.c:874
+#, c-format
+msgid "failed to create path '%s'%s"
+msgstr "Fehler beim Erstellen des Pfades '%s'%s"
+
+#: merge-recursive.c:885
+#, c-format
+msgid "Removing %s to make room for subdirectory\n"
+msgstr "Entferne %s, um Platz für Unterverzeichnis zu schaffen\n"
+
+#: merge-recursive.c:899 merge-recursive.c:918
+msgid ": perhaps a D/F conflict?"
+msgstr ": vielleicht ein Verzeichnis/Datei-Konflikt?"
+
+#: merge-recursive.c:908
+#, c-format
+msgid "refusing to lose untracked file at '%s'"
+msgstr "verweigere, da unversionierte Dateien in '%s' verloren gehen würden"
+
+#: merge-recursive.c:949 builtin/cat-file.c:41
+#, c-format
+msgid "cannot read object %s '%s'"
+msgstr "kann Objekt %s '%s' nicht lesen"
+
+#: merge-recursive.c:954
+#, c-format
+msgid "blob expected for %s '%s'"
+msgstr "Blob erwartet für %s '%s'"
+
+#: merge-recursive.c:979
+#, c-format
+msgid "failed to open '%s': %s"
+msgstr "Fehler beim Öffnen von '%s': %s"
+
+#: merge-recursive.c:990
+#, c-format
+msgid "failed to symlink '%s': %s"
+msgstr "Fehler beim Erstellen einer symbolischen Verknüpfung für '%s': %s"
+
+#: merge-recursive.c:995
+#, c-format
+msgid "do not know what to do with %06o %s '%s'"
+msgstr "weiß nicht was mit %06o %s '%s' zu machen ist"
+
+#: merge-recursive.c:1213 merge-recursive.c:1225
+#, c-format
+msgid "Fast-forwarding submodule %s to the following commit:"
+msgstr "Spule Submodul %s zu dem folgenden Commit vor:"
+
+#: merge-recursive.c:1216 merge-recursive.c:1228
+#, c-format
+msgid "Fast-forwarding submodule %s"
+msgstr "Spule Submodul %s vor"
+
+#: merge-recursive.c:1251
+#, c-format
+msgid "Failed to merge submodule %s (merge following commits not found)"
+msgstr ""
+"Fehler beim Merge von Submodule %s (dem Merge nachfolgende Commits nicht "
+"gefunden)"
+
+#: merge-recursive.c:1255
+#, c-format
+msgid "Failed to merge submodule %s (not fast-forward)"
+msgstr "Fehler beim Merge von Submodul %s (kein Vorspulen)"
+
+#: merge-recursive.c:1256
+msgid "Found a possible merge resolution for the submodule:\n"
+msgstr "Mögliche Auflösung des Merges für Submodul gefunden:\n"
+
+#: merge-recursive.c:1268
+#, c-format
+msgid "Failed to merge submodule %s (multiple merges found)"
+msgstr "Fehler beim Merge von Submodul %s (mehrere Merges gefunden)"
+
+#: merge-recursive.c:1402
+#, c-format
+msgid "Error: Refusing to lose untracked file at %s; writing to %s instead."
+msgstr ""
+"Fehler: Verweigere unversionierte Datei bei %s zu verlieren;\n"
+"schreibe stattdessen nach %s."
+
+#: merge-recursive.c:1474
+#, c-format
+msgid ""
+"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
+"in tree."
+msgstr ""
+"KONFLIKT (%s/löschen): %s gelöscht in %s und %s in %s. Stand %s von %s wurde "
+"im Arbeitsbereich gelassen."
+
+#: merge-recursive.c:1479
+#, c-format
+msgid ""
+"CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
+"left in tree."
+msgstr ""
+"KONFLIKT (%s/löschen): %s gelöscht in %s und %s nach %s in %s. Stand %s von "
+"%s wurde im Arbeitsbereich gelassen."
+
+#: merge-recursive.c:1486
+#, c-format
+msgid ""
+"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
+"in tree at %s."
+msgstr ""
+"KONFLIKT (%s/löschen): %s gelöscht in %s und %s in %s. Stand %s von %s wurde "
+"im Arbeitsbereich bei %s gelassen."
+
+#: merge-recursive.c:1491
+#, 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 ""
 "KONFLIKT (%s/löschen): %s gelöscht in %s und %s nach %s in %s. Stand %s von "
@@ -4859,28 +5141,6 @@ msgstr ""
 "wobei\n"
 "keines dieser Ziele die Mehrheit der Dateien erhielt."
 
-#: merge-recursive.c:2100
-#, c-format
-msgid ""
-"CONFLICT (implicit dir rename): Existing file/dir at %s in the way of "
-"implicit directory rename(s) putting the following path(s) there: %s."
-msgstr ""
-"KONFLIKT (implizite Verzeichnisumbenennung): Existierende Datei/Pfad bei %s "
-"im\n"
-"Weg von impliziter Verzeichnisumbenennung, die versucht, einen oder mehrere\n"
-"Pfade dahin zu setzen: %s."
-
-#: merge-recursive.c:2110
-#, c-format
-msgid ""
-"CONFLICT (implicit dir rename): Cannot map more than one path to %s; "
-"implicit directory renames tried to put these paths there: %s"
-msgstr ""
-"KONFLIKT (implizite Verzeichnisumbenennung): Kann nicht mehr als ein Pfad "
-"zu\n"
-"%s mappen; implizite Verzeichnisumbenennungen versuchten diese Pfade dahin\n"
-"zu setzen: %s"
-
 #: merge-recursive.c:2202
 #, c-format
 msgid ""
@@ -4890,15 +5150,6 @@ msgstr ""
 "KONFLIKT (umbenennen/umbenennen): Benenne Verzeichnis um %s->%s in %s.\n"
 "Benenne Verzeichnis um %s->%s in %s"
 
-#: merge-recursive.c:2447
-#, c-format
-msgid ""
-"WARNING: Avoiding applying %s -> %s rename to %s, because %s itself was "
-"renamed."
-msgstr ""
-"WARNUNG: Vermeide Umbenennung %s -> %s von %s, weil %s selbst umbenannt "
-"wurde."
-
 #: merge-recursive.c:2973
 #, c-format
 msgid "cannot read object %s"
@@ -4917,70 +5168,16 @@ msgstr "ändern"
 msgid "modified"
 msgstr "geändert"
 
-#: merge-recursive.c:3052
-msgid "content"
-msgstr "Inhalt"
-
-#: merge-recursive.c:3056
-msgid "add/add"
-msgstr "hinzufügen/hinzufügen"
-
 #: merge-recursive.c:3079
 #, c-format
 msgid "Skipped %s (merged same as existing)"
 msgstr "%s ausgelassen (Ergebnis des Merges existiert bereits)"
 
-#: merge-recursive.c:3101
-msgid "submodule"
-msgstr "Submodul"
-
-#: merge-recursive.c:3102
-#, c-format
-msgid "CONFLICT (%s): Merge conflict in %s"
-msgstr "KONFLIKT (%s): Merge-Konflikt in %s"
-
 #: merge-recursive.c:3132
 #, c-format
 msgid "Adding as %s instead"
 msgstr "Füge stattdessen als %s hinzu"
 
-#: merge-recursive.c:3215
-#, c-format
-msgid ""
-"Path updated: %s added in %s inside a directory that was renamed in %s; "
-"moving it to %s."
-msgstr ""
-"Pfad aktualisiert: %s hinzugefügt in %s innerhalb eines Verzeichnisses, das "
-"umbenannt wurde in %s; Verschiebe es nach %s."
-
-#: merge-recursive.c:3218
-#, c-format
-msgid ""
-"CONFLICT (file location): %s added in %s inside a directory that was renamed "
-"in %s, suggesting it should perhaps be moved to %s."
-msgstr ""
-"KONFLIKT (Speicherort): %s hinzugefügt in %s innerhalb eines Verzeichnisses, "
-"das umbenannt wurde in %s, es sollte vielleicht nach %s verschoben werden."
-
-#: merge-recursive.c:3222
-#, c-format
-msgid ""
-"Path updated: %s renamed to %s in %s, inside a directory that was renamed in "
-"%s; moving it to %s."
-msgstr ""
-"Pfad aktualisiert: %s umbenannt nach %s in %s, innerhalb eines "
-"Verzeichnisses, das umbenannt wurde in %s; Verschiebe es nach %s."
-
-#: merge-recursive.c:3225
-#, c-format
-msgid ""
-"CONFLICT (file location): %s renamed to %s in %s, inside a directory that "
-"was renamed in %s, suggesting it should perhaps be moved to %s."
-msgstr ""
-"KONFLIKT (Speicherort): %s umbenannt nach %s in %s, innerhalb eines "
-"Verzeichnisses, das umbenannt wurde in %s, es sollte vielleicht nach %s "
-"verschoben werden."
-
 #: merge-recursive.c:3339
 #, c-format
 msgid "Removing %s"
@@ -5016,27 +5213,28 @@ msgstr "KONFLIKT (hinzufügen/hinzufügen): Merge-Konflikt in %s"
 msgid "merging of trees %s and %s failed"
 msgstr "Zusammenführen der \"Tree\"-Objekte %s und %s fehlgeschlagen"
 
-#: merge-recursive.c:3550
+#: merge-recursive.c:3539
 msgid "Merging:"
 msgstr "Merge:"
 
-#: merge-recursive.c:3563
+#: merge-recursive.c:3552
 #, c-format
 msgid "found %u common ancestor:"
 msgid_plural "found %u common ancestors:"
 msgstr[0] "%u gemeinsamen Vorgänger-Commit gefunden"
 msgstr[1] "%u gemeinsame Vorgänger-Commits gefunden"
 
-#: merge-recursive.c:3613
+#: merge-recursive.c:3602
 msgid "merge returned no commit"
 msgstr "Merge hat keinen Commit zurückgegeben"
 
-#: merge-recursive.c:3769
+#: merge-recursive.c:3758
 #, c-format
 msgid "Could not parse object '%s'"
 msgstr "Konnte Objekt '%s' nicht parsen."
 
-#: merge-recursive.c:3787 builtin/merge.c:711 builtin/merge.c:895
+#: merge-recursive.c:3776 builtin/merge.c:712 builtin/merge.c:896
+#: builtin/stash.c:471
 msgid "Unable to write index."
 msgstr "Konnte Index nicht schreiben."
 
@@ -5044,118 +5242,110 @@ msgstr "Konnte Index nicht schreiben."
 msgid "failed to read the cache"
 msgstr "Lesen des Zwischenspeichers fehlgeschlagen"
 
-#: merge.c:109 rerere.c:720 builtin/am.c:1883 builtin/am.c:1917
-#: builtin/checkout.c:573 builtin/checkout.c:829 builtin/clone.c:817
+#: merge.c:109 rerere.c:704 builtin/am.c:1883 builtin/am.c:1917
+#: builtin/checkout.c:575 builtin/checkout.c:828 builtin/clone.c:817
 #: builtin/stash.c:265
 msgid "unable to write new index file"
 msgstr "Konnte neue Index-Datei nicht schreiben."
 
-#: midx.c:80
+#: midx.c:62
+msgid "multi-pack-index OID fanout is of the wrong size"
+msgstr "multi-pack-index OID fanout hat die falsche Größe"
+
+#: midx.c:93
 #, c-format
 msgid "multi-pack-index file %s is too small"
 msgstr "multi-pack-index-Datei %s ist zu klein."
 
-#: midx.c:96
+#: midx.c:109
 #, c-format
 msgid "multi-pack-index signature 0x%08x does not match signature 0x%08x"
 msgstr ""
 "multi-pack-index-Signatur 0x%08x stimmt nicht mit Signatur 0x%08x überein."
 
-#: midx.c:101
+#: midx.c:114
 #, c-format
 msgid "multi-pack-index version %d not recognized"
 msgstr "multi-pack-index-Version %d nicht erkannt."
 
-#: midx.c:106
+#: midx.c:119
 #, c-format
 msgid "multi-pack-index hash version %u does not match version %u"
 msgstr "multi-pack-index Hash-Version %u stimmt nicht mit Version %u überein"
 
-#: midx.c:123
-msgid "invalid chunk offset (too large)"
-msgstr "Ungültiger Chunk-Offset (zu groß)"
-
-#: midx.c:147
-msgid "terminating multi-pack-index chunk id appears earlier than expected"
-msgstr "Abschließende multi-pack-index Chunk-Id erscheint eher als erwartet."
-
-#: midx.c:160
+#: midx.c:136
 msgid "multi-pack-index missing required pack-name chunk"
-msgstr "multi-pack-index fehlt erforderlicher pack-name Chunk."
+msgstr "multi-pack-index fehlt erforderlicher Pack-Namen Chunk"
 
-#: midx.c:162
+#: midx.c:138
 msgid "multi-pack-index missing required OID fanout chunk"
-msgstr "multi-pack-index fehlt erforderlicher OID fanout Chunk."
+msgstr "multi-pack-index fehlt erforderlicher OID fanout Chunk"
 
-#: midx.c:164
+#: midx.c:140
 msgid "multi-pack-index missing required OID lookup chunk"
-msgstr "multi-pack-index fehlt erforderlicher OID lookup Chunk."
+msgstr "multi-pack-index fehlt erforderlicher OID lookup Chunk"
 
-#: midx.c:166
+#: midx.c:142
 msgid "multi-pack-index missing required object offsets chunk"
-msgstr "multi-pack-index fehlt erforderlicher object offset Chunk."
+msgstr "multi-pack-index fehlt erforderlicher Objekt offset Chunk"
 
-#: midx.c:180
+#: midx.c:158
 #, c-format
 msgid "multi-pack-index pack names out of order: '%s' before '%s'"
 msgstr "Falsche Reihenfolge bei multi-pack-index Pack-Namen: '%s' vor '%s'"
 
-#: midx.c:223
+#: midx.c:202
 #, c-format
 msgid "bad pack-int-id: %u (%u total packs)"
 msgstr "Ungültige pack-int-id: %u (%u Pakete insgesamt)"
 
-#: midx.c:273
+#: midx.c:252
 msgid "multi-pack-index stores a 64-bit offset, but off_t is too small"
 msgstr ""
-"multi-pack-index speichert einen 64-Bit Offset, aber off_t ist zu klein."
+"multi-pack-index speichert einen 64-Bit Offset, aber off_t ist zu klein"
 
-#: midx.c:480
+#: midx.c:467
 #, c-format
 msgid "failed to add packfile '%s'"
-msgstr "Fehler beim Hinzufügen von Packdatei '%s'."
+msgstr "Fehler beim Hinzufügen von Packdatei '%s'"
 
-#: midx.c:486
+#: midx.c:473
 #, c-format
 msgid "failed to open pack-index '%s'"
 msgstr "Fehler beim Öffnen von pack-index '%s'"
 
-#: midx.c:546
+#: midx.c:533
 #, c-format
 msgid "failed to locate object %d in packfile"
-msgstr "Fehler beim Lokalisieren von Objekt %d in Packdatei."
+msgstr "Fehler beim Lokalisieren von Objekt %d in Packdatei"
 
-#: midx.c:846
+#: midx.c:821
 msgid "Adding packfiles to multi-pack-index"
 msgstr "Packdateien zum multi-pack-index hinzufügen"
 
-#: midx.c:879
+#: midx.c:855
 #, c-format
 msgid "did not see pack-file %s to drop"
 msgstr "Pack-Datei %s zum Weglassen nicht gefunden"
 
-#: midx.c:931
+#: midx.c:904
 msgid "no pack files to index."
 msgstr "keine Packdateien zum Indizieren."
 
-#: midx.c:982
-msgid "Writing chunks to multi-pack-index"
-msgstr "Chunks zum multi-pack-index schreiben"
-
-#: midx.c:1060
+#: midx.c:965
 #, c-format
 msgid "failed to clear multi-pack-index at %s"
 msgstr "Fehler beim Löschen des multi-pack-index bei %s"
 
-#: midx.c:1116
+#: midx.c:1021
 msgid "multi-pack-index file exists, but failed to parse"
 msgstr "multi-pack-index-Datei existiert, aber das Parsen schlug fehl"
 
-#: midx.c:1124
+#: midx.c:1029
 msgid "Looking for referenced packfiles"
 msgstr "Suche nach referenzierten Pack-Dateien"
 
-#: midx.c:1139
+#: midx.c:1044
 #, c-format
 msgid ""
 "oid fanout out of order: fanout[%d] = %<PRIx32> > %<PRIx32> = fanout[%d]"
@@ -5163,69 +5353,69 @@ msgstr ""
 "Ungültige oid fanout Reihenfolge: fanout[%d] = %<PRIx32> > %<PRIx32> = "
 "fanout[%d]"
 
-#: midx.c:1144
+#: midx.c:1049
 msgid "the midx contains no oid"
 msgstr "das midx enthält keine oid"
 
-#: midx.c:1153
+#: midx.c:1058
 msgid "Verifying OID order in multi-pack-index"
 msgstr "Verifiziere OID-Reihenfolge im multi-pack-index"
 
-#: midx.c:1162
+#: midx.c:1067
 #, c-format
 msgid "oid lookup out of order: oid[%d] = %s >= %s = oid[%d]"
 msgstr "Ungültige oid lookup Reihenfolge: oid[%d] = %s >= %s = oid[%d]"
 
-#: midx.c:1182
+#: midx.c:1087
 msgid "Sorting objects by packfile"
 msgstr "Sortiere Objekte nach Pack-Datei"
 
-#: midx.c:1189
+#: midx.c:1094
 msgid "Verifying object offsets"
 msgstr "Überprüfe Objekt-Offsets"
 
-#: midx.c:1205
+#: midx.c:1110
 #, c-format
 msgid "failed to load pack entry for oid[%d] = %s"
 msgstr "Fehler beim Laden des Pack-Eintrags für oid[%d] = %s"
 
-#: midx.c:1211
+#: midx.c:1116
 #, c-format
 msgid "failed to load pack-index for packfile %s"
 msgstr "Fehler beim Laden des Pack-Index für Packdatei %s"
 
-#: midx.c:1220
+#: midx.c:1125
 #, c-format
 msgid "incorrect object offset for oid[%d] = %s: %<PRIx64> != %<PRIx64>"
 msgstr "Falscher Objekt-Offset für oid[%d] = %s: %<PRIx64> != %<PRIx64>"
 
-#: midx.c:1245
+#: midx.c:1150
 msgid "Counting referenced objects"
 msgstr "Referenzierte Objekte zählen"
 
-#: midx.c:1255
+#: midx.c:1160
 msgid "Finding and deleting unreferenced packfiles"
 msgstr "Suchen und Löschen von unreferenzierten Pack-Dateien"
 
-#: midx.c:1446
+#: midx.c:1351
 msgid "could not start pack-objects"
 msgstr "Konnte 'pack-objects' nicht ausführen"
 
-#: midx.c:1466
+#: midx.c:1371
 msgid "could not finish pack-objects"
 msgstr "Konnte 'pack-objects' nicht beenden"
 
-#: name-hash.c:537
+#: name-hash.c:538
 #, c-format
 msgid "unable to create lazy_dir thread: %s"
 msgstr "Kann lazy_dir Thread nicht erzeugen: %s"
 
-#: name-hash.c:559
+#: name-hash.c:560
 #, c-format
 msgid "unable to create lazy_name thread: %s"
 msgstr "Kann lazy_name Thread nicht erzeugen: %s"
 
-#: name-hash.c:565
+#: name-hash.c:566
 #, c-format
 msgid "unable to join lazy_name thread: %s"
 msgstr "Kann lazy_name Thread nicht beitreten: %s"
@@ -5275,3023 +5465,3087 @@ msgstr ""
 msgid "Bad %s value: '%s'"
 msgstr "Ungültiger %s Wert: '%s'"
 
-#: object.c:53
+#: object-file.c:480
 #, c-format
-msgid "invalid object type \"%s\""
-msgstr "Ungültiger Objekttyp \"%s\""
+msgid "object directory %s does not exist; check .git/objects/info/alternates"
+msgstr ""
+"Objektverzeichnis %s existiert nicht; prüfe .git/objects/info/alternates"
 
-#: object.c:173
+#: object-file.c:531
 #, c-format
-msgid "object %s is a %s, not a %s"
-msgstr "Objekt %s ist ein %s, kein %s"
+msgid "unable to normalize alternate object path: %s"
+msgstr "Konnte alternativen Objektpfad '%s' nicht normalisieren."
 
-#: object.c:233
+#: object-file.c:603
 #, c-format
-msgid "object %s has unknown type id %d"
-msgstr "Objekt %s hat eine unbekannte Typ-Identifikation %d"
+msgid "%s: ignoring alternate object stores, nesting too deep"
+msgstr "%s: ignoriere alternative Objektspeicher - Verschachtelung zu tief"
 
-#: object.c:246
+#: object-file.c:610
 #, c-format
-msgid "unable to parse object: %s"
-msgstr "Konnte Objekt '%s' nicht parsen."
+msgid "unable to normalize object directory: %s"
+msgstr "Konnte Objektverzeichnis '%s' nicht normalisieren."
 
-#: object.c:266 object.c:278
-#, c-format
-msgid "hash mismatch %s"
-msgstr "Hash stimmt nicht mit %s überein."
+#: object-file.c:653
+msgid "unable to fdopen alternates lockfile"
+msgstr "Konnte fdopen nicht auf Lock-Datei für \"alternates\" aufrufen."
 
-#: pack-bitmap.c:815 pack-bitmap.c:821 builtin/pack-objects.c:2216
-#, c-format
-msgid "unable to get size of %s"
-msgstr "Konnte Größe von %s nicht bestimmen."
+#: object-file.c:671
+msgid "unable to read alternates file"
+msgstr "Konnte \"alternates\"-Datei nicht lesen."
 
-#: packfile.c:615
-msgid "offset before end of packfile (broken .idx?)"
-msgstr "Offset vor Ende der Packdatei (fehlerhafte Indexdatei?)"
+#: object-file.c:678
+msgid "unable to move new alternates file into place"
+msgstr "Konnte neue \"alternates\"-Datei nicht übernehmen."
 
-#: packfile.c:1907
+#: object-file.c:713
 #, c-format
-msgid "offset before start of pack index for %s (corrupt index?)"
-msgstr "Offset vor Beginn des Pack-Index für %s (beschädigter Index?)"
+msgid "path '%s' does not exist"
+msgstr "Pfad '%s' existiert nicht"
 
-#: packfile.c:1911
+#: object-file.c:734
 #, c-format
-msgid "offset beyond end of pack index for %s (truncated index?)"
-msgstr "Offset hinter Ende des Pack-Index für %s (abgeschnittener Index?)"
+msgid "reference repository '%s' as a linked checkout is not supported yet."
+msgstr ""
+"Referenziertes Repository '%s' wird noch nicht als verknüpftes\n"
+"Arbeitsverzeichnis unterstützt."
 
-#: parse-options-cb.c:20 parse-options-cb.c:24
+#: object-file.c:740
 #, c-format
-msgid "option `%s' expects a numerical value"
-msgstr "Option `%s' erwartet einen numerischen Wert."
+msgid "reference repository '%s' is not a local repository."
+msgstr "Referenziertes Repository '%s' ist kein lokales Repository."
 
-#: parse-options-cb.c:41
+#: object-file.c:746
 #, c-format
-msgid "malformed expiration date '%s'"
-msgstr "Fehlerhaftes Ablaufdatum '%s'"
+msgid "reference repository '%s' is shallow"
+msgstr ""
+"Referenziertes Repository '%s' hat eine unvollständige Historie (shallow)."
 
-#: parse-options-cb.c:54
+#: object-file.c:754
 #, c-format
-msgid "option `%s' expects \"always\", \"auto\", or \"never\""
-msgstr "Option `%s' erwartet \"always\", \"auto\" oder \"never\"."
+msgid "reference repository '%s' is grafted"
+msgstr ""
+"Referenziertes Repository '%s' ist mit künstlichen Vorgängern (\"grafts\") "
+"eingehängt."
 
-#: parse-options-cb.c:132 parse-options-cb.c:149
+#: object-file.c:814
 #, c-format
-msgid "malformed object name '%s'"
-msgstr "fehlerhafter Objekt-Name '%s'"
+msgid "invalid line while parsing alternate refs: %s"
+msgstr "Ungültige Zeile beim Parsen alternativer Referenzen: %s"
 
-#: parse-options.c:38
+#: object-file.c:964
 #, c-format
-msgid "%s requires a value"
-msgstr "%s erfordert einen Wert."
+msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
+msgstr "Versuche mmap %<PRIuMAX> über Limit %<PRIuMAX>."
 
-#: parse-options.c:73
-#, c-format
-msgid "%s is incompatible with %s"
-msgstr "%s ist inkompatibel mit %s."
+#: object-file.c:985
+msgid "mmap failed"
+msgstr "mmap fehlgeschlagen"
 
-#: parse-options.c:78
+#: object-file.c:1149
 #, c-format
-msgid "%s : incompatible with something else"
-msgstr "%s: inkompatibel mit etwas anderem"
+msgid "object file %s is empty"
+msgstr "Objektdatei %s ist leer."
 
-#: parse-options.c:92 parse-options.c:96 parse-options.c:317
+#: object-file.c:1284 object-file.c:2477
 #, c-format
-msgid "%s takes no value"
-msgstr "%s erwartet keinen Wert"
+msgid "corrupt loose object '%s'"
+msgstr "Fehlerhaftes loses Objekt '%s'."
 
-#: parse-options.c:94
+#: object-file.c:1286 object-file.c:2481
 #, c-format
-msgid "%s isn't available"
-msgstr "%s ist nicht verfügbar."
+msgid "garbage at end of loose object '%s'"
+msgstr "Nutzlose Daten am Ende von losem Objekt '%s'."
 
-#: parse-options.c:217
-#, c-format
-msgid "%s expects a non-negative integer value with an optional k/m/g suffix"
-msgstr ""
-"%s erwartet einen nicht-negativen Integer-Wert mit einem optionalen k/m/g "
-"Suffix"
+#: object-file.c:1328
+msgid "invalid object type"
+msgstr "ungültiger Objekt-Typ"
 
-#: parse-options.c:386
+#: object-file.c:1412
 #, c-format
-msgid "ambiguous option: %s (could be --%s%s or --%s%s)"
-msgstr "Mehrdeutige Option: %s (kann --%s%s oder --%s%s sein)"
+msgid "unable to unpack %s header with --allow-unknown-type"
+msgstr "Konnte %s Kopfbereich nicht mit --allow-unknown-type entpacken."
 
-#: parse-options.c:420 parse-options.c:428
+#: object-file.c:1415
 #, c-format
-msgid "did you mean `--%s` (with two dashes)?"
-msgstr "Meinten Sie `--%s` (mit zwei Strichen)?"
+msgid "unable to unpack %s header"
+msgstr "Konnte %s Kopfbereich nicht entpacken."
 
-#: parse-options.c:666 parse-options.c:971
+#: object-file.c:1421
 #, c-format
-msgid "alias of --%s"
-msgstr "Alias für --%s"
+msgid "unable to parse %s header with --allow-unknown-type"
+msgstr "Konnte %s Kopfbereich mit --allow-unknown-type nicht parsen."
 
-#: parse-options.c:862
+#: object-file.c:1424
 #, c-format
-msgid "unknown option `%s'"
-msgstr "Unbekannte Option: `%s'"
+msgid "unable to parse %s header"
+msgstr "Konnte %s Kopfbereich nicht parsen."
 
-#: parse-options.c:864
+#: object-file.c:1651
 #, c-format
-msgid "unknown switch `%c'"
-msgstr "Unbekannter Schalter `%c'"
+msgid "failed to read object %s"
+msgstr "Konnte Objekt %s nicht lesen."
 
-#: parse-options.c:866
+#: object-file.c:1655
 #, c-format
-msgid "unknown non-ascii option in string: `%s'"
-msgstr "Unbekannte nicht-Ascii Option in String: `%s'"
-
-#: parse-options.c:890
-msgid "..."
-msgstr "..."
+msgid "replacement %s not found for %s"
+msgstr "Ersetzung %s für %s nicht gefunden."
 
-#: parse-options.c:909
+#: object-file.c:1659
 #, c-format
-msgid "usage: %s"
-msgstr "Verwendung: %s"
+msgid "loose object %s (stored in %s) is corrupt"
+msgstr "Loses Objekt %s (gespeichert in %s) ist beschädigt."
 
-#. TRANSLATORS: the colon here should align with the
-#. one in "usage: %s" translation.
-#.
-#: parse-options.c:915
+#: object-file.c:1663
 #, c-format
-msgid "   or: %s"
-msgstr "      oder: %s"
+msgid "packed object %s (stored in %s) is corrupt"
+msgstr "Gepacktes Objekt %s (gespeichert in %s) ist beschädigt."
 
-#: parse-options.c:918
+#: object-file.c:1768
 #, c-format
-msgid "    %s"
-msgstr "    %s"
-
-#: parse-options.c:957
-msgid "-NUM"
-msgstr "-NUM"
+msgid "unable to write file %s"
+msgstr "Konnte Datei %s nicht schreiben."
 
-#: path.c:915
+#: object-file.c:1775
 #, c-format
-msgid "Could not make %s writable by group"
-msgstr "Konnte Gruppenschreibrecht für %s nicht setzen."
-
-#: pathspec.c:130
-msgid "Escape character '\\' not allowed as last character in attr value"
-msgstr "Escape-Zeichen '\\' als letztes Zeichen in Attributwert nicht erlaubt"
+msgid "unable to set permission to '%s'"
+msgstr "Konnte Zugriffsberechtigung auf '%s' nicht setzen."
 
-#: pathspec.c:148
-msgid "Only one 'attr:' specification is allowed."
-msgstr "Es ist nur eine Angabe von 'attr:' erlaubt."
+#: object-file.c:1782
+msgid "file write error"
+msgstr "Fehler beim Schreiben einer Datei."
 
-#: pathspec.c:151
-msgid "attr spec must not be empty"
-msgstr "Angabe von 'attr:' darf nicht leer sein"
+#: object-file.c:1802
+msgid "error when closing loose object file"
+msgstr "Fehler beim Schließen der Datei für lose Objekte."
 
-#: pathspec.c:194
+#: object-file.c:1867
 #, c-format
-msgid "invalid attribute name %s"
-msgstr "Ungültiger Attributname %s"
-
-#: pathspec.c:259
-msgid "global 'glob' and 'noglob' pathspec settings are incompatible"
+msgid "insufficient permission for adding an object to repository database %s"
 msgstr ""
-"Globale Einstellungen zur Pfadspezifikation 'glob' und 'noglob' sind "
-"inkompatibel."
+"Unzureichende Berechtigung zum Hinzufügen eines Objektes zur Repository-"
+"Datenbank %s"
 
-#: pathspec.c:266
-msgid ""
-"global 'literal' pathspec setting is incompatible with all other global "
-"pathspec settings"
-msgstr ""
-"Globale Einstellung zur Pfadspezifikation 'literal' ist inkompatibel\n"
-"mit allen anderen Optionen."
+#: object-file.c:1869
+msgid "unable to create temporary file"
+msgstr "Konnte temporäre Datei nicht erstellen."
 
-#: pathspec.c:306
-msgid "invalid parameter for pathspec magic 'prefix'"
-msgstr "ungültiger Parameter für Pfadspezifikationsangabe 'prefix'"
+#: object-file.c:1893
+msgid "unable to write loose object file"
+msgstr "Fehler beim Schreiben der Datei für lose Objekte."
 
-#: pathspec.c:327
+#: object-file.c:1899
 #, c-format
-msgid "Invalid pathspec magic '%.*s' in '%s'"
-msgstr "ungültige Pfadspezifikationsangabe '%.*s' in '%s'"
+msgid "unable to deflate new object %s (%d)"
+msgstr "Konnte neues Objekt %s (%d) nicht komprimieren."
 
-#: pathspec.c:332
+#: object-file.c:1903
 #, c-format
-msgid "Missing ')' at the end of pathspec magic in '%s'"
-msgstr "Fehlendes ')' am Ende der Pfadspezifikationsangabe in '%s'"
+msgid "deflateEnd on object %s failed (%d)"
+msgstr "deflateEnd auf Objekt %s fehlgeschlagen (%d)"
 
-#: pathspec.c:370
+#: object-file.c:1907
 #, c-format
-msgid "Unimplemented pathspec magic '%c' in '%s'"
-msgstr "nicht unterstützte Pfadspezifikationsangabe '%c' in '%s'"
-
-#: pathspec.c:429
-#, c-format
-msgid "%s: 'literal' and 'glob' are incompatible"
-msgstr "%s: 'literal' und 'glob' sind inkompatibel"
+msgid "confused by unstable object source data for %s"
+msgstr "Fehler wegen instabilen Objektquelldaten für %s"
 
-#: pathspec.c:445
+#: object-file.c:1917 builtin/pack-objects.c:1097
 #, c-format
-msgid "%s: '%s' is outside repository at '%s'"
-msgstr "%s: '%s' liegt außerhalb des Repositories von '%s'"
+msgid "failed utime() on %s"
+msgstr "Fehler beim Aufruf von utime() auf '%s'."
 
-#: pathspec.c:521
+#: object-file.c:1994
 #, c-format
-msgid "'%s' (mnemonic: '%c')"
-msgstr "'%s' (Kürzel: '%c')"
+msgid "cannot read object for %s"
+msgstr "Kann Objekt für %s nicht lesen."
 
-#: pathspec.c:531
-#, c-format
-msgid "%s: pathspec magic not supported by this command: %s"
-msgstr ""
-"%s: Pfadspezifikationsangabe wird von diesem Befehl nicht unterstützt: %s"
+#: object-file.c:2045
+msgid "corrupt commit"
+msgstr "fehlerhafter Commit"
 
-#: pathspec.c:598
-#, c-format
-msgid "pathspec '%s' is beyond a symbolic link"
-msgstr "Pfadspezifikation '%s' ist hinter einer symbolischen Verknüpfung"
+#: object-file.c:2053
+msgid "corrupt tag"
+msgstr "fehlerhaftes Tag"
 
-#: pathspec.c:643
+#: object-file.c:2153
 #, c-format
-msgid "line is badly quoted: %s"
-msgstr "Zeile enthält falsche Anführungszeichen: %s"
-
-#: pkt-line.c:92
-msgid "unable to write flush packet"
-msgstr "konnte Flush-Paket nicht schreiben"
-
-#: pkt-line.c:99
-msgid "unable to write delim packet"
-msgstr "konnte Delim-Paket nicht schreiben"
-
-#: pkt-line.c:106
-msgid "unable to write stateless separator packet"
-msgstr "konnte zustandsloses Separator-Paket nicht schreiben"
-
-#: pkt-line.c:113
-msgid "flush packet write failed"
-msgstr "Flush beim Schreiben des Pakets fehlgeschlagen."
-
-#: pkt-line.c:153 pkt-line.c:239
-msgid "protocol error: impossibly long line"
-msgstr "Protokollfehler: unmöglich lange Zeile"
+msgid "read error while indexing %s"
+msgstr "Lesefehler beim Indizieren von '%s'."
 
-#: pkt-line.c:169 pkt-line.c:171
-msgid "packet write with format failed"
-msgstr "Schreiben des Pakets mit Format fehlgeschlagen."
+#: object-file.c:2156
+#, c-format
+msgid "short read while indexing %s"
+msgstr "read() zu kurz beim Indizieren von '%s'."
 
-#: pkt-line.c:203
-msgid "packet write failed - data exceeds max packet size"
-msgstr ""
-"Schreiben des Pakets fehlgeschlagen - Daten überschreiten maximale Paketgröße"
+#: object-file.c:2229 object-file.c:2239
+#, c-format
+msgid "%s: failed to insert into database"
+msgstr "%s: Fehler beim Einfügen in die Datenbank"
 
-#: pkt-line.c:210 pkt-line.c:217
-msgid "packet write failed"
-msgstr "Schreiben des Pakets fehlgeschlagen."
+#: object-file.c:2245
+#, c-format
+msgid "%s: unsupported file type"
+msgstr "%s: nicht unterstützte Dateiart"
 
-#: pkt-line.c:302
-msgid "read error"
-msgstr "Lesefehler"
+#: object-file.c:2269
+#, c-format
+msgid "%s is not a valid object"
+msgstr "%s ist kein gültiges Objekt"
 
-#: pkt-line.c:310
-msgid "the remote end hung up unexpectedly"
-msgstr "Die Gegenseite hat unerwartet abgebrochen."
+#: object-file.c:2271
+#, c-format
+msgid "%s is not a valid '%s' object"
+msgstr "%s ist kein gültiges '%s' Objekt"
 
-#: pkt-line.c:338
+#: object-file.c:2298 builtin/index-pack.c:192
 #, c-format
-msgid "protocol error: bad line length character: %.4s"
-msgstr "Protokollfehler: ungültiges Zeichen für Zeilenlänge: %.4s"
+msgid "unable to open %s"
+msgstr "kann %s nicht öffnen"
 
-#: pkt-line.c:352 pkt-line.c:357
+#: object-file.c:2488 object-file.c:2541
 #, c-format
-msgid "protocol error: bad line length %d"
-msgstr "Protokollfehler: ungültige Zeilenlänge %d"
+msgid "hash mismatch for %s (expected %s)"
+msgstr "Hash für %s stimmt nicht überein (%s erwartet)."
 
-#: pkt-line.c:373 sideband.c:165
+#: object-file.c:2512
 #, c-format
-msgid "remote error: %s"
-msgstr "Fehler am anderen Ende: %s"
+msgid "unable to mmap %s"
+msgstr "Konnte mmap nicht auf %s ausführen."
 
-#: preload-index.c:119
-msgid "Refreshing index"
-msgstr "Aktualisiere Index"
+#: object-file.c:2517
+#, c-format
+msgid "unable to unpack header of %s"
+msgstr "Konnte Kopfbereich von %s nicht entpacken."
 
-#: preload-index.c:138
+#: object-file.c:2523
 #, c-format
-msgid "unable to create threaded lstat: %s"
-msgstr "Kann Thread für lstat nicht erzeugen: %s"
+msgid "unable to parse header of %s"
+msgstr "Konnte Kopfbereich von %s nicht parsen."
 
-#: pretty.c:983
-msgid "unable to parse --pretty format"
-msgstr "Konnte --pretty Format nicht parsen."
+#: object-file.c:2534
+#, c-format
+msgid "unable to unpack contents of %s"
+msgstr "Konnte Inhalt von %s nicht entpacken."
 
-#: promisor-remote.c:30
-msgid "promisor-remote: unable to fork off fetch subprocess"
-msgstr "Promisor-Remote: konnte Fetch-Subprozess nicht abspalten"
+#: object-name.c:486
+#, c-format
+msgid "short object ID %s is ambiguous"
+msgstr "kurze Objekt-ID %s ist mehrdeutig"
 
-#: promisor-remote.c:35 promisor-remote.c:37
-msgid "promisor-remote: could not write to fetch subprocess"
-msgstr "Promisor-Remote: konnte nicht zum Fetch-Subprozess schreiben"
+#: object-name.c:497
+msgid "The candidates are:"
+msgstr "Die Kandidaten sind:"
 
-#: promisor-remote.c:41
-msgid "promisor-remote: could not close stdin to fetch subprocess"
+#: object-name.c:796
+msgid ""
+"Git normally never creates a ref that ends with 40 hex characters\n"
+"because it will be ignored when you just specify 40-hex. These refs\n"
+"may be created by mistake. For example,\n"
+"\n"
+"  git switch -c $br $(git rev-parse ...)\n"
+"\n"
+"where \"$br\" is somehow empty and a 40-hex ref is created. Please\n"
+"examine these refs and maybe delete them. Turn this message off by\n"
+"running \"git config advice.objectNameWarning false\""
 msgstr ""
-"Promisor-Remote: konnte Standard-Eingabe des Fetch-Subprozesses nicht "
-"schließen"
+"Git erzeugt normalerweise keine Referenzen die mit\n"
+"40 Hex-Zeichen enden, da diese ignoriert werden wenn\n"
+"Sie diese angeben. Diese Referenzen könnten aus Versehen\n"
+"erzeugt worden sein. Zum Beispiel,\n"
+"\n"
+"  git switch -c $br $(git rev-parse ...)\n"
+"\n"
+"wobei \"$br\" leer ist und eine 40-Hex-Referenz erzeugt\n"
+"wurde. Bitte prüfen Sie diese Referenzen und löschen\n"
+"Sie sie gegebenenfalls. Unterdrücken Sie diese Meldung\n"
+"indem Sie \"git config advice.objectNameWarning false\"\n"
+"ausführen."
 
-#: promisor-remote.c:53
+#: object-name.c:916
 #, c-format
-msgid "promisor remote name cannot begin with '/': %s"
-msgstr "Promisor-Remote-Name kann nicht mit '/' beginnen: %s"
+msgid "log for '%.*s' only goes back to %s"
+msgstr "Log für '%.*s' geht nur bis %s zurück"
 
-#: prune-packed.c:35
-msgid "Removing duplicate objects"
-msgstr "Lösche doppelte Objekte"
+#: object-name.c:924
+#, c-format
+msgid "log for '%.*s' only has %d entries"
+msgstr "Log für '%.*s' hat nur %d Einträge"
 
-#: range-diff.c:77
-msgid "could not start `log`"
-msgstr "Konnte `log` nicht starten."
+#: object-name.c:1702
+#, c-format
+msgid "path '%s' exists on disk, but not in '%.*s'"
+msgstr "Pfad '%s' befindet sich im Dateisystem, aber nicht in '%.*s'"
 
-#: range-diff.c:79
-msgid "could not read `log` output"
-msgstr "Konnte Ausgabe von `log` nicht lesen."
+#: object-name.c:1708
+#, c-format
+msgid ""
+"path '%s' exists, but not '%s'\n"
+"hint: Did you mean '%.*s:%s' aka '%.*s:./%s'?"
+msgstr ""
+"Pfad '%s' existiert, aber nicht '%s'\n"
+"Hinweis: Meinten Sie '%.*s:%s' auch bekannt als '%.*s:./%s'?"
 
-#: range-diff.c:98 sequencer.c:5310
+#: object-name.c:1717
 #, c-format
-msgid "could not parse commit '%s'"
-msgstr "Konnte Commit '%s' nicht parsen."
+msgid "path '%s' does not exist in '%.*s'"
+msgstr "Pfad '%s' existiert nicht in '%.*s'"
 
-#: range-diff.c:112
+#: object-name.c:1745
 #, c-format
 msgid ""
-"could not parse first line of `log` output: did not start with 'commit ': "
-"'%s'"
+"path '%s' is in the index, but not at stage %d\n"
+"hint: Did you mean ':%d:%s'?"
 msgstr ""
-"konnte erste Zeile der Ausgabe von `log` nicht parsen: fängt nicht mit "
-"'commit ' an: '%s'"
+"Pfad '%s' ist im Index, aber nicht in Stufe %d\n"
+"Hinweis: Meinten Sie ':%d:%s'?"
 
-#: range-diff.c:137
+#: object-name.c:1761
 #, c-format
-msgid "could not parse git header '%.*s'"
-msgstr "Konnte Git-Header '%.*s' nicht parsen."
-
-#: range-diff.c:299
-msgid "failed to generate diff"
-msgstr "Fehler beim Generieren des Diffs."
+msgid ""
+"path '%s' is in the index, but not '%s'\n"
+"hint: Did you mean ':%d:%s' aka ':%d:./%s'?"
+msgstr ""
+"Pfad '%s' ist im Index, aber nicht '%s'\n"
+"Hinweis: Meinten Sie ':%d:%s' auch bekannt als ':%d:./%s'?"
 
-#: range-diff.c:532 range-diff.c:534
+#: object-name.c:1769
 #, c-format
-msgid "could not parse log for '%s'"
-msgstr "Konnte Log für '%s' nicht parsen."
+msgid "path '%s' exists on disk, but not in the index"
+msgstr "Pfad '%s' existiert im Dateisystem, aber nicht im Index"
 
-#: read-cache.c:682
+#: object-name.c:1771
 #, c-format
-msgid "will not add file alias '%s' ('%s' already exists in index)"
+msgid "path '%s' does not exist (neither on disk nor in the index)"
+msgstr "Pfad '%s' existiert nicht (weder im Dateisystem noch im Index)"
+
+#: object-name.c:1784
+msgid "relative path syntax can't be used outside working tree"
 msgstr ""
-"Dateialias '%s' wird nicht hinzugefügt ('%s' existiert bereits im Index)."
+"Die Syntax für relative Pfade kann nicht außerhalb des Arbeitsverzeichnisses "
+"benutzt werden."
 
-#: read-cache.c:698
-msgid "cannot create an empty blob in the object database"
-msgstr "Kann keinen leeren Blob in die Objektdatenbank schreiben."
+#: object-name.c:1922
+#, c-format
+msgid "invalid object name '%.*s'."
+msgstr "ungültiger Objektname '%.*s'."
 
-#: read-cache.c:720
+#: object.c:53
 #, c-format
-msgid "%s: can only add regular files, symbolic links or git-directories"
-msgstr ""
-"%s: Kann nur reguläre Dateien, symbolische Links oder Git-Verzeichnisse "
-"hinzufügen."
+msgid "invalid object type \"%s\""
+msgstr "Ungültiger Objekttyp \"%s\""
 
-#: read-cache.c:725
+#: object.c:173
 #, c-format
-msgid "'%s' does not have a commit checked out"
-msgstr "'%s' hat keinen Commit ausgecheckt"
+msgid "object %s is a %s, not a %s"
+msgstr "Objekt %s ist ein %s, kein %s"
 
-#: read-cache.c:777
+#: object.c:233
 #, c-format
-msgid "unable to index file '%s'"
-msgstr "Konnte Datei '%s' nicht indizieren."
+msgid "object %s has unknown type id %d"
+msgstr "Objekt %s hat eine unbekannte Typ-Identifikation %d"
 
-#: read-cache.c:796
+#: object.c:246
 #, c-format
-msgid "unable to add '%s' to index"
-msgstr "Konnte '%s' nicht dem Index hinzufügen."
+msgid "unable to parse object: %s"
+msgstr "Konnte Objekt '%s' nicht parsen."
 
-#: read-cache.c:807
+#: object.c:266 object.c:278
 #, c-format
-msgid "unable to stat '%s'"
-msgstr "Konnte '%s' nicht lesen."
+msgid "hash mismatch %s"
+msgstr "Hash stimmt nicht mit %s überein."
 
-#: read-cache.c:1318
+#: pack-bitmap.c:843 pack-bitmap.c:849 builtin/pack-objects.c:2226
 #, c-format
-msgid "'%s' appears as both a file and as a directory"
-msgstr "'%s' scheint eine Datei und ein Verzeichnis zu sein."
+msgid "unable to get size of %s"
+msgstr "Konnte Größe von %s nicht bestimmen."
 
-#: read-cache.c:1524
-msgid "Refresh index"
-msgstr "Aktualisiere Index"
+#: pack-bitmap.c:1489 builtin/rev-list.c:92
+#, c-format
+msgid "unable to get disk usage of %s"
+msgstr "konnte Festplattennutzung von %s nicht bekommen"
 
-#: read-cache.c:1639
+#: pack-revindex.c:220
 #, c-format
-msgid ""
-"index.version set, but the value is invalid.\n"
-"Using version %i"
-msgstr ""
-"index.version gesetzt, aber Wert ungültig.\n"
-"Verwende Version %i"
+msgid "reverse-index file %s is too small"
+msgstr "Reverse-Index-Datei %s ist zu klein"
 
-#: read-cache.c:1649
+#: pack-revindex.c:225
 #, c-format
-msgid ""
-"GIT_INDEX_VERSION set, but the value is invalid.\n"
-"Using version %i"
-msgstr ""
-"GIT_INDEX_VERSION gesetzt, aber Wert ungültig.\n"
-"Verwende Version %i"
+msgid "reverse-index file %s is corrupt"
+msgstr "Reverse-Index-Datei %s ist beschädigt"
 
-#: read-cache.c:1705
+#: pack-revindex.c:233
 #, c-format
-msgid "bad signature 0x%08x"
-msgstr "Ungültige Signatur 0x%08x"
+msgid "reverse-index file %s has unknown signature"
+msgstr "Reverse-Index-Datei %s hat eine unbekannte Signatur"
 
-#: read-cache.c:1708
+#: pack-revindex.c:237
 #, c-format
-msgid "bad index version %d"
-msgstr "Ungültige Index-Version %d"
+msgid "reverse-index file %s has unsupported version %<PRIu32>"
+msgstr "Reverse-Index-Datei %s hat nicht unterstützte Version %<PRIu32>"
 
-#: read-cache.c:1717
-msgid "bad index file sha1 signature"
-msgstr "Ungültige SHA1-Signatur der Index-Datei."
+#: pack-revindex.c:242
+#, c-format
+msgid "reverse-index file %s has unsupported hash id %<PRIu32>"
+msgstr "Reverse-Index-Datei %s hat nicht unterstützte Hash-ID %<PRIu32>"
+
+#: pack-write.c:236
+msgid "cannot both write and verify reverse index"
+msgstr ""
+"Reverse-Index kann nicht gleichzeitig geschrieben und verifiziert werden"
 
-#: read-cache.c:1747
+#: pack-write.c:257
 #, c-format
-msgid "index uses %.4s extension, which we do not understand"
-msgstr "Index verwendet Erweiterung %.4s, welche wir nicht unterstützen."
+msgid "could not stat: %s"
+msgstr "konnte nicht lesen: %s"
 
-#: read-cache.c:1749
+#: pack-write.c:269
 #, c-format
-msgid "ignoring %.4s extension"
-msgstr "Ignoriere Erweiterung %.4s"
+msgid "failed to make %s readable"
+msgstr "Fehler beim lesbar machen von %s"
 
-#: read-cache.c:1786
+#: pack-write.c:508
 #, c-format
-msgid "unknown index entry format 0x%08x"
-msgstr "Unbekanntes Format für Index-Eintrag 0x%08x"
+msgid "could not write '%s' promisor file"
+msgstr "konnte Promisor-Datei '%s' nicht schreiben"
+
+#: packfile.c:625
+msgid "offset before end of packfile (broken .idx?)"
+msgstr "Offset vor Ende der Packdatei (fehlerhafte Indexdatei?)"
 
-#: read-cache.c:1802
+#: packfile.c:1934
 #, c-format
-msgid "malformed name field in the index, near path '%s'"
-msgstr "Ungültiges Namensfeld im Index, in der Nähe von Pfad '%s'."
+msgid "offset before start of pack index for %s (corrupt index?)"
+msgstr "Offset vor Beginn des Pack-Index für %s (beschädigter Index?)"
 
-#: read-cache.c:1859
-msgid "unordered stage entries in index"
-msgstr "Ungeordnete Stage-Einträge im Index."
+#: packfile.c:1938
+#, c-format
+msgid "offset beyond end of pack index for %s (truncated index?)"
+msgstr "Offset hinter Ende des Pack-Index für %s (abgeschnittener Index?)"
 
-#: read-cache.c:1862
+#: parse-options-cb.c:20 parse-options-cb.c:24
 #, c-format
-msgid "multiple stage entries for merged file '%s'"
-msgstr "Mehrere Stage-Einträge für zusammengeführte Datei '%s'."
+msgid "option `%s' expects a numerical value"
+msgstr "Option `%s' erwartet einen numerischen Wert."
 
-#: read-cache.c:1865
+#: parse-options-cb.c:41
 #, c-format
-msgid "unordered stage entries for '%s'"
-msgstr "Ungeordnete Stage-Einträge für '%s'."
+msgid "malformed expiration date '%s'"
+msgstr "Fehlerhaftes Ablaufdatum '%s'"
 
-#: read-cache.c:1971 read-cache.c:2262 rerere.c:565 rerere.c:599 rerere.c:1111
-#: submodule.c:1628 builtin/add.c:538 builtin/check-ignore.c:181
-#: builtin/checkout.c:502 builtin/checkout.c:688 builtin/clean.c:991
-#: builtin/commit.c:364 builtin/diff-tree.c:122 builtin/grep.c:507
-#: builtin/mv.c:146 builtin/reset.c:247 builtin/rm.c:290
-#: builtin/submodule--helper.c:332
-msgid "index file corrupt"
-msgstr "Index-Datei beschädigt"
+#: parse-options-cb.c:54
+#, c-format
+msgid "option `%s' expects \"always\", \"auto\", or \"never\""
+msgstr "Option `%s' erwartet \"always\", \"auto\" oder \"never\"."
 
-#: read-cache.c:2115
+#: parse-options-cb.c:132 parse-options-cb.c:149
 #, c-format
-msgid "unable to create load_cache_entries thread: %s"
-msgstr "Kann Thread für load_cache_entries nicht erzeugen: %s"
+msgid "malformed object name '%s'"
+msgstr "fehlerhafter Objekt-Name '%s'"
 
-#: read-cache.c:2128
+#: parse-options.c:38
 #, c-format
-msgid "unable to join load_cache_entries thread: %s"
-msgstr "Kann Thread für load_cache_entries nicht erzeugen: %s"
+msgid "%s requires a value"
+msgstr "%s erfordert einen Wert."
 
-#: read-cache.c:2161
+#: parse-options.c:73
 #, c-format
-msgid "%s: index file open failed"
-msgstr "%s: Öffnen der Index-Datei fehlgeschlagen."
+msgid "%s is incompatible with %s"
+msgstr "%s ist inkompatibel mit %s."
 
-#: read-cache.c:2165
+#: parse-options.c:78
 #, c-format
-msgid "%s: cannot stat the open index"
-msgstr "%s: Kann geöffneten Index nicht lesen."
+msgid "%s : incompatible with something else"
+msgstr "%s: inkompatibel mit etwas anderem"
 
-#: read-cache.c:2169
+#: parse-options.c:92 parse-options.c:96 parse-options.c:317
 #, c-format
-msgid "%s: index file smaller than expected"
-msgstr "%s: Index-Datei ist kleiner als erwartet."
+msgid "%s takes no value"
+msgstr "%s erwartet keinen Wert"
 
-#: read-cache.c:2173
+#: parse-options.c:94
 #, c-format
-msgid "%s: unable to map index file"
-msgstr "%s: Konnte Index-Datei nicht einlesen."
+msgid "%s isn't available"
+msgstr "%s ist nicht verfügbar."
 
-#: read-cache.c:2215
+#: parse-options.c:217
 #, c-format
-msgid "unable to create load_index_extensions thread: %s"
-msgstr "Kann Thread für load_index_extensions nicht erzeugen: %s"
+msgid "%s expects a non-negative integer value with an optional k/m/g suffix"
+msgstr ""
+"%s erwartet einen nicht-negativen Integer-Wert mit einem optionalen k/m/g "
+"Suffix"
 
-#: read-cache.c:2242
+#: parse-options.c:386
 #, c-format
-msgid "unable to join load_index_extensions thread: %s"
-msgstr "Kann Thread für load_index_extensions nicht beitreten: %s"
+msgid "ambiguous option: %s (could be --%s%s or --%s%s)"
+msgstr "Mehrdeutige Option: %s (kann --%s%s oder --%s%s sein)"
 
-#: read-cache.c:2274
+#: parse-options.c:420 parse-options.c:428
 #, c-format
-msgid "could not freshen shared index '%s'"
-msgstr "Konnte geteilten Index '%s' nicht aktualisieren."
+msgid "did you mean `--%s` (with two dashes)?"
+msgstr "Meinten Sie `--%s` (mit zwei Strichen)?"
 
-#: read-cache.c:2321
+#: parse-options.c:666 parse-options.c:971
 #, c-format
-msgid "broken index, expect %s in %s, got %s"
-msgstr "Fehlerhafter Index. Erwartete %s in %s, erhielt %s."
+msgid "alias of --%s"
+msgstr "Alias für --%s"
 
-#: read-cache.c:3017 strbuf.c:1171 wrapper.c:633 builtin/merge.c:1140
+#: parse-options.c:862
 #, c-format
-msgid "could not close '%s'"
-msgstr "Konnte '%s' nicht schließen."
+msgid "unknown option `%s'"
+msgstr "Unbekannte Option: `%s'"
 
-#: read-cache.c:3120 sequencer.c:2479 sequencer.c:4231
+#: parse-options.c:864
 #, c-format
-msgid "could not stat '%s'"
-msgstr "Konnte '%s' nicht lesen."
+msgid "unknown switch `%c'"
+msgstr "Unbekannter Schalter `%c'"
 
-#: read-cache.c:3133
+#: parse-options.c:866
 #, c-format
-msgid "unable to open git dir: %s"
-msgstr "konnte Git-Verzeichnis nicht öffnen: %s"
+msgid "unknown non-ascii option in string: `%s'"
+msgstr "Unbekannte nicht-Ascii Option in String: `%s'"
+
+#: parse-options.c:890
+msgid "..."
+msgstr "..."
 
-#: read-cache.c:3145
+#: parse-options.c:909
 #, c-format
-msgid "unable to unlink: %s"
-msgstr "Konnte '%s' nicht entfernen."
+msgid "usage: %s"
+msgstr "Verwendung: %s"
 
-#: read-cache.c:3170
+#. TRANSLATORS: the colon here should align with the
+#. one in "usage: %s" translation.
+#.
+#: parse-options.c:915
 #, c-format
-msgid "cannot fix permission bits on '%s'"
-msgstr "Konnte Zugriffsberechtigung auf '%s' nicht setzen."
+msgid "   or: %s"
+msgstr "      oder: %s"
 
-#: read-cache.c:3319
+#: parse-options.c:918
 #, c-format
-msgid "%s: cannot drop to stage #0"
-msgstr "%s: Kann nicht auf Stufe #0 wechseln."
+msgid "    %s"
+msgstr "    %s"
 
-#: rebase-interactive.c:11
-msgid ""
-"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 ""
-"Sie können das mit 'git rebase --edit-todo' beheben. Führen Sie danach\n"
-"'git rebase --continue' aus.\n"
-"Oder Sie können den Rebase mit 'git rebase --abort' abbrechen.\n"
+#: parse-options.c:957
+msgid "-NUM"
+msgstr "-NUM"
 
-#: rebase-interactive.c:33
+#: path.c:915
 #, c-format
-msgid ""
-"unrecognized setting %s for option rebase.missingCommitsCheck. Ignoring."
-msgstr ""
-"Nicht erkannte Einstellung %s für Option rebase.missingCommitsCheck. "
-"Ignoriere."
+msgid "Could not make %s writable by group"
+msgstr "Konnte Gruppenschreibrecht für %s nicht setzen."
 
-#: rebase-interactive.c:42
-msgid ""
-"\n"
-"Commands:\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"
-"b, break = stop here (continue rebase later with 'git rebase --continue')\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"
-"Befehle:\n"
-"p, pick <Commit> = Commit verwenden\n"
-"r, reword <Commit> = Commit verwenden, aber Commit-Beschreibung bearbeiten\n"
-"e, edit <Commit> = Commit verwenden, aber zum Nachbessern anhalten\n"
-"s, squash <Commit> = Commit verwenden, aber mit vorherigem Commit vereinen\n"
-"f, fixup <Commit> = wie \"squash\", aber diese Commit-Beschreibung "
-"verwerfen\n"
-"x, exec <Commit> = Befehl (Rest der Zeile) mittels Shell ausführen\n"
-"b, break = hier anhalten (Rebase später mit 'git rebase --continue' "
-"fortsetzen)\n"
-"d, drop <Commit> = Commit entfernen\n"
-"l, label <Label> = aktuellen HEAD mit Label versehen\n"
-"t, reset <Label> = HEAD zu einem Label umsetzen\n"
-"m, merge [-C <Commit> | -c <Commit>] <Label> [# <eineZeile>]\n"
-".       Merge-Commit mit der originalen Merge-Commit-Beschreibung erstellen\n"
-".       (oder die eine Zeile, wenn keine originale Merge-Commit-"
-"Beschreibung\n"
-".       spezifiziert ist). Benutzen Sie -c <Commit> zum Bearbeiten der\n"
-".       Commit-Beschreibung.\n"
-"\n"
-"Diese Zeilen können umsortiert werden; Sie werden von oben nach unten\n"
-"ausgeführt.\n"
+#: pathspec.c:130
+msgid "Escape character '\\' not allowed as last character in attr value"
+msgstr "Escape-Zeichen '\\' als letztes Zeichen in Attributwert nicht erlaubt"
 
-#: rebase-interactive.c:63
+#: pathspec.c:148
+msgid "Only one 'attr:' specification is allowed."
+msgstr "Es ist nur eine Angabe von 'attr:' erlaubt."
+
+#: pathspec.c:151
+msgid "attr spec must not be empty"
+msgstr "Angabe von 'attr:' darf nicht leer sein"
+
+#: pathspec.c:194
 #, c-format
-msgid "Rebase %s onto %s (%d command)"
-msgid_plural "Rebase %s onto %s (%d commands)"
-msgstr[0] "Rebase von %s auf %s (%d Kommando)"
-msgstr[1] "Rebase von %s auf %s (%d Kommandos)"
+msgid "invalid attribute name %s"
+msgstr "Ungültiger Attributname %s"
 
-#: rebase-interactive.c:72 git-rebase--preserve-merges.sh:218
-msgid ""
-"\n"
-"Do not remove any line. Use 'drop' explicitly to remove a commit.\n"
+#: pathspec.c:259
+msgid "global 'glob' and 'noglob' pathspec settings are incompatible"
 msgstr ""
-"\n"
-"Keine Zeile entfernen. Benutzen Sie 'drop', um explizit einen Commit zu\n"
-"entfernen.\n"
+"Globale Einstellungen zur Pfadspezifikation 'glob' und 'noglob' sind "
+"inkompatibel."
 
-#: rebase-interactive.c:75 git-rebase--preserve-merges.sh:222
+#: pathspec.c:266
 msgid ""
-"\n"
-"If you remove a line here THAT COMMIT WILL BE LOST.\n"
+"global 'literal' pathspec setting is incompatible with all other global "
+"pathspec settings"
 msgstr ""
-"\n"
-"Wenn Sie hier eine Zeile entfernen, wird DIESER COMMIT VERLOREN GEHEN.\n"
+"Globale Einstellung zur Pfadspezifikation 'literal' ist inkompatibel\n"
+"mit allen anderen Optionen."
 
-#: rebase-interactive.c:81 git-rebase--preserve-merges.sh:861
-msgid ""
-"\n"
-"You are editing the todo file of an ongoing interactive rebase.\n"
-"To continue rebase after editing, run:\n"
-"    git rebase --continue\n"
-"\n"
-msgstr ""
-"\n"
-"Sie bearbeiten gerade die TODO-Datei eines laufenden interaktiven Rebase.\n"
-"Um den Rebase nach dem Editieren fortzusetzen, führen Sie aus:\n"
-"    git rebase --continue\n"
-"\n"
-
-#: rebase-interactive.c:86 git-rebase--preserve-merges.sh:938
-msgid ""
-"\n"
-"However, if you remove everything, the rebase will be aborted.\n"
-"\n"
-msgstr ""
-"\n"
-"Wenn Sie jedoch alles löschen, wird der Rebase abgebrochen.\n"
-"\n"
+#: pathspec.c:306
+msgid "invalid parameter for pathspec magic 'prefix'"
+msgstr "ungültiger Parameter für Pfadspezifikationsangabe 'prefix'"
 
-#: rebase-interactive.c:110 rerere.c:485 rerere.c:692 sequencer.c:3607
-#: sequencer.c:3633 sequencer.c:5416 builtin/fsck.c:347 builtin/rebase.c:270
+#: pathspec.c:327
 #, c-format
-msgid "could not write '%s'"
-msgstr "Konnte '%s' nicht schreiben."
+msgid "Invalid pathspec magic '%.*s' in '%s'"
+msgstr "ungültige Pfadspezifikationsangabe '%.*s' in '%s'"
 
-#: rebase-interactive.c:116 builtin/rebase.c:202 builtin/rebase.c:228
-#: builtin/rebase.c:252
+#: pathspec.c:332
 #, c-format
-msgid "could not write '%s'."
-msgstr "Konnte '%s' nicht schreiben."
+msgid "Missing ')' at the end of pathspec magic in '%s'"
+msgstr "Fehlendes ')' am Ende der Pfadspezifikationsangabe in '%s'"
 
-#: rebase-interactive.c:193
+#: pathspec.c:370
 #, c-format
-msgid ""
-"Warning: some commits may have been dropped accidentally.\n"
-"Dropped commits (newer to older):\n"
-msgstr ""
-"Warnung: Einige Commits könnten aus Versehen entfernt worden sein.\n"
-"Entfernte Commits (neu zu alt):\n"
+msgid "Unimplemented pathspec magic '%c' in '%s'"
+msgstr "nicht unterstützte Pfadspezifikationsangabe '%c' in '%s'"
 
-#: rebase-interactive.c:200
+#: pathspec.c:429
 #, c-format
-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"
-"The possible behaviours are: ignore, warn, error.\n"
-"\n"
-msgstr ""
-"Um diese Meldung zu vermeiden, benutzen Sie \"drop\", um exlizit Commits zu\n"
-"entfernen.\n"
-"\n"
-"Benutzen Sie 'git config rebase.missingCommitsCheck', um die Stufe der\n"
-"Warnungen zu ändern.\n"
-"Die möglichen Verhaltensweisen sind: ignore, warn, error.\n"
+msgid "%s: 'literal' and 'glob' are incompatible"
+msgstr "%s: 'literal' und 'glob' sind inkompatibel"
 
-#: rebase-interactive.c:233 rebase-interactive.c:238 sequencer.c:2394
-#: builtin/rebase.c:188 builtin/rebase.c:213 builtin/rebase.c:239
-#: builtin/rebase.c:264
+#: pathspec.c:445
 #, c-format
-msgid "could not read '%s'."
-msgstr "Konnte '%s' nicht lesen."
-
-#: ref-filter.c:42 wt-status.c:1973
-msgid "gone"
-msgstr "entfernt"
+msgid "%s: '%s' is outside repository at '%s'"
+msgstr "%s: '%s' liegt außerhalb des Repositories von '%s'"
 
-#: ref-filter.c:43
+#: pathspec.c:521
 #, c-format
-msgid "ahead %d"
-msgstr "%d voraus"
+msgid "'%s' (mnemonic: '%c')"
+msgstr "'%s' (Kürzel: '%c')"
 
-#: ref-filter.c:44
+#: pathspec.c:531
 #, c-format
-msgid "behind %d"
-msgstr "%d hinterher"
+msgid "%s: pathspec magic not supported by this command: %s"
+msgstr ""
+"%s: Pfadspezifikationsangabe wird von diesem Befehl nicht unterstützt: %s"
 
-#: ref-filter.c:45
+#: pathspec.c:598
 #, c-format
-msgid "ahead %d, behind %d"
-msgstr "%d voraus, %d hinterher"
+msgid "pathspec '%s' is beyond a symbolic link"
+msgstr "Pfadspezifikation '%s' ist hinter einer symbolischen Verknüpfung"
 
-#: ref-filter.c:169
+#: pathspec.c:643
 #, c-format
-msgid "expected format: %%(color:<color>)"
-msgstr "Erwartetes Format: %%(color:<Farbe>)"
+msgid "line is badly quoted: %s"
+msgstr "Zeile enthält falsche Anführungszeichen: %s"
 
-#: ref-filter.c:171
-#, c-format
-msgid "unrecognized color: %%(color:%s)"
-msgstr "nicht erkannte Farbe: %%(color:%s)"
+#: pkt-line.c:92
+msgid "unable to write flush packet"
+msgstr "konnte Flush-Paket nicht schreiben"
 
-#: ref-filter.c:193
-#, c-format
-msgid "Integer value expected refname:lstrip=%s"
-msgstr "Positiver Wert erwartet refname:lstrip=%s"
+#: pkt-line.c:99
+msgid "unable to write delim packet"
+msgstr "konnte Delim-Paket nicht schreiben"
 
-#: ref-filter.c:197
-#, c-format
-msgid "Integer value expected refname:rstrip=%s"
-msgstr "Positiver Wert erwartet refname:rstrip=%s"
+#: pkt-line.c:106
+msgid "unable to write stateless separator packet"
+msgstr "konnte zustandsloses Separator-Paket nicht schreiben"
 
-#: ref-filter.c:199
-#, c-format
-msgid "unrecognized %%(%s) argument: %s"
-msgstr "nicht erkanntes %%(%s) Argument: %s"
+#: pkt-line.c:113
+msgid "flush packet write failed"
+msgstr "Flush beim Schreiben des Pakets fehlgeschlagen."
 
-#: ref-filter.c:254
-#, c-format
-msgid "%%(objecttype) does not take arguments"
-msgstr "%%(objecttype) akzeptiert keine Argumente"
+#: pkt-line.c:153 pkt-line.c:239
+msgid "protocol error: impossibly long line"
+msgstr "Protokollfehler: unmöglich lange Zeile"
 
-#: ref-filter.c:276
-#, c-format
-msgid "unrecognized %%(objectsize) argument: %s"
-msgstr "nicht erkanntes %%(objectsize) Argument: %s"
+#: pkt-line.c:169 pkt-line.c:171
+msgid "packet write with format failed"
+msgstr "Schreiben des Pakets mit Format fehlgeschlagen."
 
-#: ref-filter.c:284
-#, c-format
-msgid "%%(deltabase) does not take arguments"
-msgstr "%%(deltabase) akzeptiert keine Argumente"
+#: pkt-line.c:203
+msgid "packet write failed - data exceeds max packet size"
+msgstr ""
+"Schreiben des Pakets fehlgeschlagen - Daten überschreiten maximale Paketgröße"
 
-#: ref-filter.c:296
-#, c-format
-msgid "%%(body) does not take arguments"
-msgstr "%%(body) akzeptiert keine Argumente"
+#: pkt-line.c:210 pkt-line.c:217
+msgid "packet write failed"
+msgstr "Schreiben des Pakets fehlgeschlagen."
 
-#: ref-filter.c:309
-#, c-format
-msgid "unrecognized %%(subject) argument: %s"
-msgstr "nicht erkanntes %%(subject) Argument: %s"
+#: pkt-line.c:302
+msgid "read error"
+msgstr "Lesefehler"
 
-#: ref-filter.c:330
-#, c-format
-msgid "unknown %%(trailers) argument: %s"
-msgstr "unbekanntes %%(trailers) Argument: %s"
+#: pkt-line.c:310
+msgid "the remote end hung up unexpectedly"
+msgstr "Die Gegenseite hat unerwartet abgebrochen."
 
-#: ref-filter.c:363
+#: pkt-line.c:338
 #, c-format
-msgid "positive value expected contents:lines=%s"
-msgstr "Positiver Wert erwartet contents:lines=%s"
+msgid "protocol error: bad line length character: %.4s"
+msgstr "Protokollfehler: ungültiges Zeichen für Zeilenlänge: %.4s"
 
-#: ref-filter.c:365
+#: pkt-line.c:352 pkt-line.c:357
 #, c-format
-msgid "unrecognized %%(contents) argument: %s"
-msgstr "nicht erkanntes %%(contents) Argument: %s"
+msgid "protocol error: bad line length %d"
+msgstr "Protokollfehler: ungültige Zeilenlänge %d"
 
-#: ref-filter.c:380
+#: pkt-line.c:373 sideband.c:165
 #, c-format
-msgid "positive value expected '%s' in %%(%s)"
-msgstr "positiver Wert erwartet '%s' in %%(%s)"
+msgid "remote error: %s"
+msgstr "Fehler am anderen Ende: %s"
 
-#: ref-filter.c:384
-#, c-format
-msgid "unrecognized argument '%s' in %%(%s)"
-msgstr "nicht erkanntes Argument '%s' in %%(%s)"
+#: preload-index.c:125
+msgid "Refreshing index"
+msgstr "Aktualisiere Index"
 
-#: ref-filter.c:398
+#: preload-index.c:144
 #, c-format
-msgid "unrecognized email option: %s"
-msgstr "nicht erkannte E-Mail Option: %s"
+msgid "unable to create threaded lstat: %s"
+msgstr "Kann Thread für lstat nicht erzeugen: %s"
 
-#: ref-filter.c:428
-#, c-format
-msgid "expected format: %%(align:<width>,<position>)"
-msgstr "erwartetes Format: %%(align:<Breite>,<Position>)"
+#: pretty.c:984
+msgid "unable to parse --pretty format"
+msgstr "Konnte --pretty Format nicht parsen."
 
-#: ref-filter.c:440
-#, c-format
-msgid "unrecognized position:%s"
-msgstr "nicht erkannte Position:%s"
+#: promisor-remote.c:30
+msgid "promisor-remote: unable to fork off fetch subprocess"
+msgstr "Promisor-Remote: konnte Fetch-Subprozess nicht abspalten"
 
-#: ref-filter.c:447
-#, c-format
-msgid "unrecognized width:%s"
-msgstr "nicht erkannte Breite:%s"
+#: promisor-remote.c:35 promisor-remote.c:37
+msgid "promisor-remote: could not write to fetch subprocess"
+msgstr "Promisor-Remote: konnte nicht zum Fetch-Subprozess schreiben"
 
-#: ref-filter.c:456
-#, c-format
-msgid "unrecognized %%(align) argument: %s"
-msgstr "nicht erkanntes %%(align) Argument: %s"
+#: promisor-remote.c:41
+msgid "promisor-remote: could not close stdin to fetch subprocess"
+msgstr ""
+"Promisor-Remote: konnte Standard-Eingabe des Fetch-Subprozesses nicht "
+"schließen"
 
-#: ref-filter.c:464
+#: promisor-remote.c:53
 #, c-format
-msgid "positive width expected with the %%(align) atom"
-msgstr "Positive Breitenangabe für %%(align) erwartet"
+msgid "promisor remote name cannot begin with '/': %s"
+msgstr "Promisor-Remote-Name kann nicht mit '/' beginnen: %s"
 
-#: ref-filter.c:482
-#, c-format
-msgid "unrecognized %%(if) argument: %s"
-msgstr "nicht erkanntes %%(if) Argument: %s"
+#: prune-packed.c:35
+msgid "Removing duplicate objects"
+msgstr "Lösche doppelte Objekte"
 
-#: ref-filter.c:584
-#, c-format
-msgid "malformed field name: %.*s"
-msgstr "Fehlerhafter Feldname: %.*s"
+#: range-diff.c:78
+msgid "could not start `log`"
+msgstr "Konnte `log` nicht starten."
+
+#: range-diff.c:80
+msgid "could not read `log` output"
+msgstr "Konnte Ausgabe von `log` nicht lesen."
 
-#: ref-filter.c:611
+#: range-diff.c:101 sequencer.c:5318
 #, c-format
-msgid "unknown field name: %.*s"
-msgstr "Unbekannter Feldname: %.*s"
+msgid "could not parse commit '%s'"
+msgstr "Konnte Commit '%s' nicht parsen."
 
-#: ref-filter.c:615
+#: range-diff.c:115
 #, c-format
 msgid ""
-"not a git repository, but the field '%.*s' requires access to object data"
+"could not parse first line of `log` output: did not start with 'commit ': "
+"'%s'"
 msgstr ""
-"Kein Git-Repository, aber das Feld '%.*s' erfordert Zugriff auf Objektdaten."
+"konnte erste Zeile der Ausgabe von `log` nicht parsen: fängt nicht mit "
+"'commit ' an: '%s'"
 
-#: ref-filter.c:739
+#: range-diff.c:140
 #, c-format
-msgid "format: %%(if) atom used without a %%(then) atom"
-msgstr "format: %%(if) Atom ohne ein %%(then) Atom verwendet"
+msgid "could not parse git header '%.*s'"
+msgstr "Konnte Git-Header '%.*s' nicht parsen."
 
-#: ref-filter.c:802
-#, c-format
-msgid "format: %%(then) atom used without an %%(if) atom"
-msgstr "format: %%(then) Atom ohne ein %%(if) Atom verwendet"
+#: range-diff.c:306
+msgid "failed to generate diff"
+msgstr "Fehler beim Generieren des Diffs."
 
-#: ref-filter.c:804
-#, c-format
-msgid "format: %%(then) atom used more than once"
-msgstr "format: %%(then) Atom mehr als einmal verwendet"
+#: range-diff.c:558
+msgid "--left-only and --right-only are mutually exclusive"
+msgstr "--left-only und --right-only schließen sich gegenseitig aus"
 
-#: ref-filter.c:806
+#: range-diff.c:561 range-diff.c:563
 #, c-format
-msgid "format: %%(then) atom used after %%(else)"
-msgstr "format: %%(then) Atom nach %%(else) verwendet"
+msgid "could not parse log for '%s'"
+msgstr "Konnte Log für '%s' nicht parsen."
 
-#: ref-filter.c:834
+#: read-cache.c:682
 #, c-format
-msgid "format: %%(else) atom used without an %%(if) atom"
-msgstr "format: %%(else) Atom ohne ein %%(if) Atom verwendet"
+msgid "will not add file alias '%s' ('%s' already exists in index)"
+msgstr ""
+"Dateialias '%s' wird nicht hinzugefügt ('%s' existiert bereits im Index)."
 
-#: ref-filter.c:836
-#, c-format
-msgid "format: %%(else) atom used without a %%(then) atom"
-msgstr "Format: %%(else) Atom ohne ein %%(then) Atom verwendet"
-
-#: ref-filter.c:838
-#, c-format
-msgid "format: %%(else) atom used more than once"
-msgstr "Format: %%(end) Atom mehr als einmal verwendet"
+#: read-cache.c:698
+msgid "cannot create an empty blob in the object database"
+msgstr "Kann keinen leeren Blob in die Objektdatenbank schreiben."
 
-#: ref-filter.c:853
+#: read-cache.c:720
 #, c-format
-msgid "format: %%(end) atom used without corresponding atom"
-msgstr "Format: %%(end) Atom ohne zugehöriges Atom verwendet"
+msgid "%s: can only add regular files, symbolic links or git-directories"
+msgstr ""
+"%s: Kann nur reguläre Dateien, symbolische Links oder Git-Verzeichnisse "
+"hinzufügen."
 
-#: ref-filter.c:910
+#: read-cache.c:725
 #, c-format
-msgid "malformed format string %s"
-msgstr "Fehlerhafter Formatierungsstring %s"
+msgid "'%s' does not have a commit checked out"
+msgstr "'%s' hat keinen Commit ausgecheckt"
 
-#: ref-filter.c:1549
+#: read-cache.c:777
 #, c-format
-msgid "no branch, rebasing %s"
-msgstr "kein Branch, Rebase von %s"
+msgid "unable to index file '%s'"
+msgstr "Konnte Datei '%s' nicht indizieren."
 
-#: ref-filter.c:1552
+#: read-cache.c:796
 #, c-format
-msgid "no branch, rebasing detached HEAD %s"
-msgstr "kein Branch, Rebase von losgelöstem HEAD %s"
+msgid "unable to add '%s' to index"
+msgstr "Konnte '%s' nicht dem Index hinzufügen."
 
-#: ref-filter.c:1555
+#: read-cache.c:807
 #, c-format
-msgid "no branch, bisect started on %s"
-msgstr "kein Branch, binäre Suche begonnen bei %s"
-
-#: ref-filter.c:1565
-msgid "no branch"
-msgstr "kein Branch"
+msgid "unable to stat '%s'"
+msgstr "konnte '%s' nicht lesen"
 
-#: ref-filter.c:1599 ref-filter.c:1808
+#: read-cache.c:1318
 #, c-format
-msgid "missing object %s for %s"
-msgstr "Objekt %s fehlt für %s"
+msgid "'%s' appears as both a file and as a directory"
+msgstr "'%s' scheint eine Datei und ein Verzeichnis zu sein"
 
-#: ref-filter.c:1609
-#, c-format
-msgid "parse_object_buffer failed on %s for %s"
-msgstr "parse_object_buffer bei %s für %s fehlgeschlagen"
+#: read-cache.c:1532
+msgid "Refresh index"
+msgstr "Aktualisiere Index"
 
-#: ref-filter.c:2062
+#: read-cache.c:1657
 #, c-format
-msgid "malformed object at '%s'"
-msgstr "fehlerhaftes Objekt bei '%s'"
+msgid ""
+"index.version set, but the value is invalid.\n"
+"Using version %i"
+msgstr ""
+"index.version gesetzt, aber Wert ungültig.\n"
+"Verwende Version %i"
 
-#: ref-filter.c:2151
+#: read-cache.c:1667
 #, c-format
-msgid "ignoring ref with broken name %s"
-msgstr "Ignoriere Referenz mit fehlerhaftem Namen %s"
+msgid ""
+"GIT_INDEX_VERSION set, but the value is invalid.\n"
+"Using version %i"
+msgstr ""
+"GIT_INDEX_VERSION gesetzt, aber Wert ungültig.\n"
+"Verwende Version %i"
 
-#: ref-filter.c:2156 refs.c:676
+#: read-cache.c:1723
 #, c-format
-msgid "ignoring broken ref %s"
-msgstr "Ignoriere fehlerhafte Referenz %s"
+msgid "bad signature 0x%08x"
+msgstr "Ungültige Signatur 0x%08x"
 
-#: ref-filter.c:2472
+#: read-cache.c:1726
 #, c-format
-msgid "format: %%(end) atom missing"
-msgstr "Format: %%(end) Atom fehlt"
+msgid "bad index version %d"
+msgstr "Ungültige Index-Version %d"
 
-#: ref-filter.c:2571
-#, c-format
-msgid "malformed object name %s"
-msgstr "missgebildeter Objektname %s"
+#: read-cache.c:1735
+msgid "bad index file sha1 signature"
+msgstr "Ungültige SHA1-Signatur der Index-Datei."
 
-#: ref-filter.c:2576
+#: read-cache.c:1765
 #, c-format
-msgid "option `%s' must point to a commit"
-msgstr "die Option `%s' muss auf einen Commit zeigen"
+msgid "index uses %.4s extension, which we do not understand"
+msgstr "Index verwendet Erweiterung %.4s, welche wir nicht unterstützen."
 
-#: refs.c:264
+#: read-cache.c:1767
 #, c-format
-msgid "%s does not point to a valid object!"
-msgstr "%s zeigt auf kein gültiges Objekt!"
+msgid "ignoring %.4s extension"
+msgstr "Ignoriere Erweiterung %.4s"
 
-#: refs.c:566
+#: read-cache.c:1804
 #, c-format
-msgid ""
-"Using '%s' as the name for the initial branch. This default branch name\n"
-"is subject to change. To configure the initial branch name to use in all\n"
-"of your new repositories, which will suppress this warning, call:\n"
-"\n"
-"\tgit config --global init.defaultBranch <name>\n"
-"\n"
-"Names commonly chosen instead of 'master' are 'main', 'trunk' and\n"
-"'development'. The just-created branch can be renamed via this command:\n"
-"\n"
-"\tgit branch -m <name>\n"
-msgstr ""
-"Als Name für den initialen Branch wurde '%s' benutzt. Dieser\n"
-"Standard-Branchname kann sich ändern. Um den Namen des initialen Branches\n"
-"zu konfigurieren, der in allen neuen Repositories verwendet werden soll und\n"
-"um diese Warnung zu unterdrücken, führen Sie aus:\n"
-"\n"
-"\tgit config --global init.defaultBranch <Name>\n"
-"\n"
-"Häufig gewählte Namen statt 'master' sind 'main', 'trunk' und\n"
-"'development'. Der gerade erstellte Branch kann mit diesem Befehl\n"
-"umbenannt werden:\n"
-"\n"
-"\tgit branch -m <Name>\n"
+msgid "unknown index entry format 0x%08x"
+msgstr "Unbekanntes Format für Index-Eintrag 0x%08x"
 
-#: refs.c:588
+#: read-cache.c:1820
 #, c-format
-msgid "could not retrieve `%s`"
-msgstr "konnte `%s` nicht abrufen"
+msgid "malformed name field in the index, near path '%s'"
+msgstr "Ungültiges Namensfeld im Index, in der Nähe von Pfad '%s'."
 
-#: refs.c:598
-#, c-format
-msgid "invalid branch name: %s = %s"
-msgstr "ungültiger Branchname: %s = %s"
+#: read-cache.c:1877
+msgid "unordered stage entries in index"
+msgstr "Ungeordnete Stage-Einträge im Index."
 
-#: refs.c:674
+#: read-cache.c:1880
 #, c-format
-msgid "ignoring dangling symref %s"
-msgstr "Ignoriere unreferenzierte symbolische Referenz %s"
+msgid "multiple stage entries for merged file '%s'"
+msgstr "Mehrere Stage-Einträge für zusammengeführte Datei '%s'."
 
-#: refs.c:911
+#: read-cache.c:1883
 #, c-format
-msgid "log for ref %s has gap after %s"
-msgstr "Log für Referenz %s hat eine Lücke nach %s."
+msgid "unordered stage entries for '%s'"
+msgstr "Ungeordnete Stage-Einträge für '%s'."
 
-#: refs.c:917
-#, c-format
-msgid "log for ref %s unexpectedly ended on %s"
-msgstr "Log für Referenz %s unerwartet bei %s beendet."
+#: read-cache.c:1989 read-cache.c:2280 rerere.c:549 rerere.c:583 rerere.c:1095
+#: submodule.c:1634 builtin/add.c:546 builtin/check-ignore.c:181
+#: builtin/checkout.c:504 builtin/checkout.c:690 builtin/clean.c:991
+#: builtin/commit.c:364 builtin/diff-tree.c:122 builtin/grep.c:505
+#: builtin/mv.c:146 builtin/reset.c:247 builtin/rm.c:290
+#: builtin/submodule--helper.c:332
+msgid "index file corrupt"
+msgstr "Index-Datei beschädigt"
 
-#: refs.c:976
+#: read-cache.c:2133
 #, c-format
-msgid "log for %s is empty"
-msgstr "Log für %s ist leer."
+msgid "unable to create load_cache_entries thread: %s"
+msgstr "Kann Thread für load_cache_entries nicht erzeugen: %s"
 
-#: refs.c:1068
+#: read-cache.c:2146
 #, c-format
-msgid "refusing to update ref with bad name '%s'"
-msgstr "verweigere Aktualisierung einer Referenz mit fehlerhaftem Namen '%s'"
+msgid "unable to join load_cache_entries thread: %s"
+msgstr "Kann Thread für load_cache_entries nicht erzeugen: %s"
 
-#: refs.c:1139
+#: read-cache.c:2179
 #, c-format
-msgid "update_ref failed for ref '%s': %s"
-msgstr "update_ref für Referenz '%s' fehlgeschlagen: %s"
+msgid "%s: index file open failed"
+msgstr "%s: Öffnen der Index-Datei fehlgeschlagen."
 
-#: refs.c:1963
+#: read-cache.c:2183
 #, c-format
-msgid "multiple updates for ref '%s' not allowed"
-msgstr "mehrere Aktualisierungen für Referenz '%s' nicht erlaubt"
-
-#: refs.c:2043
-msgid "ref updates forbidden inside quarantine environment"
-msgstr ""
-"Aktualisierungen von Referenzen ist innerhalb der Quarantäne-Umgebung "
-"verboten"
-
-#: refs.c:2054
-msgid "ref updates aborted by hook"
-msgstr "Aktualisierungen von Referenzen durch Hook abgebrochen"
+msgid "%s: cannot stat the open index"
+msgstr "%s: Kann geöffneten Index nicht lesen."
 
-#: refs.c:2154 refs.c:2184
+#: read-cache.c:2187
 #, c-format
-msgid "'%s' exists; cannot create '%s'"
-msgstr "'%s' existiert; kann '%s' nicht erstellen"
+msgid "%s: index file smaller than expected"
+msgstr "%s: Index-Datei ist kleiner als erwartet."
 
-#: refs.c:2160 refs.c:2195
+#: read-cache.c:2191
 #, c-format
-msgid "cannot process '%s' and '%s' at the same time"
-msgstr "kann '%s' und '%s' nicht zur selben Zeit verarbeiten"
+msgid "%s: unable to map index file"
+msgstr "%s: Konnte Index-Datei nicht einlesen."
 
-#: refs/files-backend.c:1228
+#: read-cache.c:2233
 #, c-format
-msgid "could not remove reference %s"
-msgstr "konnte Referenz %s nicht löschen"
+msgid "unable to create load_index_extensions thread: %s"
+msgstr "Kann Thread für load_index_extensions nicht erzeugen: %s"
 
-#: refs/files-backend.c:1242 refs/packed-backend.c:1542
-#: refs/packed-backend.c:1552
+#: read-cache.c:2260
 #, c-format
-msgid "could not delete reference %s: %s"
-msgstr "konnte Referenz %s nicht entfernen: %s"
+msgid "unable to join load_index_extensions thread: %s"
+msgstr "Kann Thread für load_index_extensions nicht beitreten: %s"
 
-#: refs/files-backend.c:1245 refs/packed-backend.c:1555
+#: read-cache.c:2292
 #, c-format
-msgid "could not delete references: %s"
-msgstr "konnte Referenzen nicht entfernen: %s"
+msgid "could not freshen shared index '%s'"
+msgstr "Konnte geteilten Index '%s' nicht aktualisieren."
 
-#: refspec.c:170
+#: read-cache.c:2339
 #, c-format
-msgid "invalid refspec '%s'"
-msgstr "ungültige Refspec '%s'"
+msgid "broken index, expect %s in %s, got %s"
+msgstr "Fehlerhafter Index. Erwartete %s in %s, erhielt %s."
 
-#: remote.c:351
+#: read-cache.c:3035 strbuf.c:1171 wrapper.c:633 builtin/merge.c:1141
 #, c-format
-msgid "config remote shorthand cannot begin with '/': %s"
-msgstr ""
-"Kürzel für Remote-Repository in der Konfiguration kann nicht mit '/' "
-"beginnen: %s"
-
-#: remote.c:399
-msgid "more than one receivepack given, using the first"
-msgstr "Mehr als ein receivepack-Befehl angegeben, benutze den ersten."
-
-#: remote.c:407
-msgid "more than one uploadpack given, using the first"
-msgstr "Mehr als ein uploadpack-Befehl angegeben, benutze den ersten."
+msgid "could not close '%s'"
+msgstr "Konnte '%s' nicht schließen."
 
-#: remote.c:590
+#: read-cache.c:3138 sequencer.c:2487 sequencer.c:4239
 #, c-format
-msgid "Cannot fetch both %s and %s to %s"
-msgstr "Kann 'fetch' nicht für sowohl %s als auch %s nach %s ausführen."
+msgid "could not stat '%s'"
+msgstr "Konnte '%s' nicht lesen."
 
-#: remote.c:594
+#: read-cache.c:3151
 #, c-format
-msgid "%s usually tracks %s, not %s"
-msgstr "%s folgt üblicherweise %s, nicht %s"
+msgid "unable to open git dir: %s"
+msgstr "konnte Git-Verzeichnis nicht öffnen: %s"
 
-#: remote.c:598
+#: read-cache.c:3163
 #, c-format
-msgid "%s tracks both %s and %s"
-msgstr "%s folgt sowohl %s als auch %s"
+msgid "unable to unlink: %s"
+msgstr "Konnte '%s' nicht entfernen."
 
-#: remote.c:666
+#: read-cache.c:3188
 #, c-format
-msgid "key '%s' of pattern had no '*'"
-msgstr "Schlüssel '%s' des Musters hatte kein '*'."
+msgid "cannot fix permission bits on '%s'"
+msgstr "Konnte Zugriffsberechtigung auf '%s' nicht setzen."
 
-#: remote.c:676
+#: read-cache.c:3337
 #, c-format
-msgid "value '%s' of pattern has no '*'"
-msgstr "Wert '%s' des Musters hat kein '*'."
+msgid "%s: cannot drop to stage #0"
+msgstr "%s: Kann nicht auf Stufe #0 wechseln."
 
-#: remote.c:1073
-#, c-format
-msgid "src refspec %s does not match any"
-msgstr "Src-Refspec %s entspricht keiner Referenz."
+#: rebase-interactive.c:11
+msgid ""
+"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 ""
+"Sie können das mit 'git rebase --edit-todo' beheben. Führen Sie danach\n"
+"'git rebase --continue' aus.\n"
+"Oder Sie können den Rebase mit 'git rebase --abort' abbrechen.\n"
 
-#: remote.c:1078
+#: rebase-interactive.c:33
 #, c-format
-msgid "src refspec %s matches more than one"
-msgstr "Src-Refspec %s entspricht mehr als einer Referenz."
+msgid ""
+"unrecognized setting %s for option rebase.missingCommitsCheck. Ignoring."
+msgstr ""
+"Nicht erkannte Einstellung %s für Option rebase.missingCommitsCheck. "
+"Ignoriere."
 
-#. TRANSLATORS: "matches '%s'%" is the <dst> part of "git push
-#. <remote> <src>:<dst>" push, and "being pushed ('%s')" is
-#. the <src>.
-#.
-#: remote.c:1093
-#, c-format
+#: rebase-interactive.c:42
 msgid ""
-"The destination you provided is not a full refname (i.e.,\n"
-"starting with \"refs/\"). We tried to guess what you meant by:\n"
 "\n"
-"- Looking for a ref that matches '%s' on the remote side.\n"
-"- Checking if the <src> being pushed ('%s')\n"
-"  is a ref in \"refs/{heads,tags}/\". If so we add a corresponding\n"
-"  refs/{heads,tags}/ prefix on the remote side.\n"
+"Commands:\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"
+"b, break = stop here (continue rebase later with 'git rebase --continue')\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"
-"Neither worked, so we gave up. You must fully qualify the ref."
+"These lines can be re-ordered; they are executed from top to bottom.\n"
 msgstr ""
-"Das angegebene Ziel ist kein vollständiger Referenzname (startet mit \"refs/"
-"\").\n"
-"Wir versuchten zu erraten, was Sie meinten, mit:\n"
 "\n"
-"- Suche einer Referenz, die mit '%s' übereinstimmt, auf der Remote-Seite\n"
-"- Prüfung, ob die versendete <Quelle> ('%s') eine Referenz in \"refs/{heads,"
-"tags}\"\n"
-"  ist, in dessen Falle wir einen entsprechenden refs/{heads,tags} Präfix "
-"auf\n"
-"  der Remote-Seite hinzufügen würden.\n"
+"Befehle:\n"
+"p, pick <Commit> = Commit verwenden\n"
+"r, reword <Commit> = Commit verwenden, aber Commit-Beschreibung bearbeiten\n"
+"e, edit <Commit> = Commit verwenden, aber zum Nachbessern anhalten\n"
+"s, squash <Commit> = Commit verwenden, aber mit vorherigem Commit vereinen\n"
+"f, fixup <Commit> = wie \"squash\", aber diese Commit-Beschreibung "
+"verwerfen\n"
+"x, exec <Commit> = Befehl (Rest der Zeile) mittels Shell ausführen\n"
+"b, break = hier anhalten (Rebase später mit 'git rebase --continue' "
+"fortsetzen)\n"
+"d, drop <Commit> = Commit entfernen\n"
+"l, label <Label> = aktuellen HEAD mit Label versehen\n"
+"t, reset <Label> = HEAD zu einem Label umsetzen\n"
+"m, merge [-C <Commit> | -c <Commit>] <Label> [# <eineZeile>]\n"
+".       Merge-Commit mit der originalen Merge-Commit-Beschreibung erstellen\n"
+".       (oder die eine Zeile, wenn keine originale Merge-Commit-"
+"Beschreibung\n"
+".       spezifiziert ist). Benutzen Sie -c <Commit> zum Bearbeiten der\n"
+".       Commit-Beschreibung.\n"
 "\n"
-"Keines hat funktioniert, sodass wir aufgegeben haben. Sie müssen die\n"
-"Referenz mit vollqualifizierten Namen angeben."
+"Diese Zeilen können umsortiert werden; Sie werden von oben nach unten\n"
+"ausgeführt.\n"
 
-#: remote.c:1113
+#: rebase-interactive.c:63
 #, c-format
+msgid "Rebase %s onto %s (%d command)"
+msgid_plural "Rebase %s onto %s (%d commands)"
+msgstr[0] "Rebase von %s auf %s (%d Kommando)"
+msgstr[1] "Rebase von %s auf %s (%d Kommandos)"
+
+#: rebase-interactive.c:72 git-rebase--preserve-merges.sh:218
 msgid ""
-"The <src> part of the refspec is a commit object.\n"
-"Did you mean to create a new branch by pushing to\n"
-"'%s:refs/heads/%s'?"
+"\n"
+"Do not remove any line. Use 'drop' explicitly to remove a commit.\n"
 msgstr ""
-"Der <Quelle> Teil der Refspec ist ein Commit-Objekt.\n"
-"Meinten Sie, einen neuen Branch mittels Push nach\n"
-"'%s:refs/heads/%s' zu erstellen?"
+"\n"
+"Keine Zeile entfernen. Benutzen Sie 'drop', um explizit einen Commit zu\n"
+"entfernen.\n"
 
-#: remote.c:1118
-#, c-format
+#: rebase-interactive.c:75 git-rebase--preserve-merges.sh:222
 msgid ""
-"The <src> part of the refspec is a tag object.\n"
-"Did you mean to create a new tag by pushing to\n"
-"'%s:refs/tags/%s'?"
+"\n"
+"If you remove a line here THAT COMMIT WILL BE LOST.\n"
 msgstr ""
-"Der <Quelle> Teil der Refspec ist ein Tag-Objekt.\n"
-"Meinten Sie, einen neuen Tag mittels Push nach\n"
-"'%s:refs/tags/%s' zu erstellen?"
+"\n"
+"Wenn Sie hier eine Zeile entfernen, wird DIESER COMMIT VERLOREN GEHEN.\n"
 
-#: remote.c:1123
-#, c-format
+#: rebase-interactive.c:81 git-rebase--preserve-merges.sh:861
 msgid ""
-"The <src> part of the refspec is a tree object.\n"
-"Did you mean to tag a new tree by pushing to\n"
-"'%s:refs/tags/%s'?"
+"\n"
+"You are editing the todo file of an ongoing interactive rebase.\n"
+"To continue rebase after editing, run:\n"
+"    git rebase --continue\n"
+"\n"
 msgstr ""
-"Der <Quelle> Teil der Refspec ist ein Tree-Objekt.\n"
-"Meinten Sie, einen Tag für ein neues Tree-Objekt\n"
-"mittels Push nach '%s:refs/tags/'%s' zu erstellen?"
+"\n"
+"Sie bearbeiten gerade die TODO-Datei eines laufenden interaktiven Rebase.\n"
+"Um den Rebase nach dem Editieren fortzusetzen, führen Sie aus:\n"
+"    git rebase --continue\n"
+"\n"
 
-#: remote.c:1128
-#, c-format
+#: rebase-interactive.c:86 git-rebase--preserve-merges.sh:938
 msgid ""
-"The <src> part of the refspec is a blob object.\n"
-"Did you mean to tag a new blob by pushing to\n"
-"'%s:refs/tags/%s'?"
+"\n"
+"However, if you remove everything, the rebase will be aborted.\n"
+"\n"
 msgstr ""
-"Der <Quelle> Teil der Refspec ist ein Blob-Objekt.\n"
-"Meinten Sie, einen Tag für ein neues Blob-Objekt\n"
-"mittels Push nach '%s:refs/tags/%s' zu erstellen?"
+"\n"
+"Wenn Sie jedoch alles löschen, wird der Rebase abgebrochen.\n"
+"\n"
 
-#: remote.c:1164
+#: rebase-interactive.c:110 rerere.c:469 rerere.c:676 sequencer.c:3615
+#: sequencer.c:3641 sequencer.c:5424 builtin/fsck.c:329 builtin/rebase.c:272
 #, c-format
-msgid "%s cannot be resolved to branch"
-msgstr "%s kann nicht zu Branch aufgelöst werden."
+msgid "could not write '%s'"
+msgstr "Konnte '%s' nicht schreiben."
 
-#: remote.c:1175
+#: rebase-interactive.c:116 builtin/rebase.c:204 builtin/rebase.c:230
+#: builtin/rebase.c:254
 #, c-format
-msgid "unable to delete '%s': remote ref does not exist"
-msgstr "Konnte '%s' nicht löschen: Remote-Referenz existiert nicht."
+msgid "could not write '%s'."
+msgstr "Konnte '%s' nicht schreiben."
 
-#: remote.c:1187
+#: rebase-interactive.c:193
 #, c-format
-msgid "dst refspec %s matches more than one"
-msgstr "Dst-Refspec %s entspricht mehr als einer Referenz."
+msgid ""
+"Warning: some commits may have been dropped accidentally.\n"
+"Dropped commits (newer to older):\n"
+msgstr ""
+"Warnung: Einige Commits könnten aus Versehen entfernt worden sein.\n"
+"Entfernte Commits (neu zu alt):\n"
 
-#: remote.c:1194
+#: rebase-interactive.c:200
 #, c-format
-msgid "dst ref %s receives from more than one src"
-msgstr "Dst-Referenz %s empfängt von mehr als einer Quelle"
+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"
+"The possible behaviours are: ignore, warn, error.\n"
+"\n"
+msgstr ""
+"Um diese Meldung zu vermeiden, benutzen Sie \"drop\", um exlizit Commits zu\n"
+"entfernen.\n"
+"\n"
+"Benutzen Sie 'git config rebase.missingCommitsCheck', um die Stufe der\n"
+"Warnungen zu ändern.\n"
+"Die möglichen Verhaltensweisen sind: ignore, warn, error.\n"
 
-#: remote.c:1714 remote.c:1815
-msgid "HEAD does not point to a branch"
-msgstr "HEAD zeigt auf keinen Branch"
+#: rebase-interactive.c:233 rebase-interactive.c:238 sequencer.c:2402
+#: builtin/rebase.c:190 builtin/rebase.c:215 builtin/rebase.c:241
+#: builtin/rebase.c:266
+#, c-format
+msgid "could not read '%s'."
+msgstr "Konnte '%s' nicht lesen."
+
+#: ref-filter.c:42 wt-status.c:1975
+msgid "gone"
+msgstr "entfernt"
 
-#: remote.c:1723
+#: ref-filter.c:43
 #, c-format
-msgid "no such branch: '%s'"
-msgstr "Kein solcher Branch: '%s'"
+msgid "ahead %d"
+msgstr "%d voraus"
 
-#: remote.c:1726
+#: ref-filter.c:44
 #, c-format
-msgid "no upstream configured for branch '%s'"
-msgstr "Kein Upstream-Branch für Branch '%s' konfiguriert."
+msgid "behind %d"
+msgstr "%d hinterher"
 
-#: remote.c:1732
+#: ref-filter.c:45
 #, c-format
-msgid "upstream branch '%s' not stored as a remote-tracking branch"
-msgstr "Upstream-Branch '%s' nicht als Remote-Tracking-Branch gespeichert"
+msgid "ahead %d, behind %d"
+msgstr "%d voraus, %d hinterher"
 
-#: remote.c:1747
+#: ref-filter.c:175
 #, c-format
-msgid "push destination '%s' on remote '%s' has no local tracking branch"
-msgstr ""
-"Ziel für \"push\" '%s' auf Remote-Repository '%s' hat keinen lokal gefolgten "
-"Branch"
+msgid "expected format: %%(color:<color>)"
+msgstr "Erwartetes Format: %%(color:<Farbe>)"
 
-#: remote.c:1759
+#: ref-filter.c:177
 #, c-format
-msgid "branch '%s' has no remote for pushing"
-msgstr "Branch '%s' hat keinen Upstream-Branch gesetzt"
+msgid "unrecognized color: %%(color:%s)"
+msgstr "nicht erkannte Farbe: %%(color:%s)"
 
-#: remote.c:1769
+#: ref-filter.c:199
 #, c-format
-msgid "push refspecs for '%s' do not include '%s'"
-msgstr "Push-Refspecs für '%s' beinhalten nicht '%s'"
+msgid "Integer value expected refname:lstrip=%s"
+msgstr "Positiver Wert erwartet refname:lstrip=%s"
 
-#: remote.c:1782
-msgid "push has no destination (push.default is 'nothing')"
-msgstr "kein Ziel für \"push\" (push.default ist 'nothing')"
+#: ref-filter.c:203
+#, c-format
+msgid "Integer value expected refname:rstrip=%s"
+msgstr "Positiver Wert erwartet refname:rstrip=%s"
 
-#: remote.c:1804
-msgid "cannot resolve 'simple' push to a single destination"
-msgstr "kann einzelnes Ziel für \"push\" im Modus 'simple' nicht auflösen"
+#: ref-filter.c:205
+#, c-format
+msgid "unrecognized %%(%s) argument: %s"
+msgstr "nicht erkanntes %%(%s) Argument: %s"
 
-#: remote.c:1933
+#: ref-filter.c:260
 #, c-format
-msgid "couldn't find remote ref %s"
-msgstr "Konnte Remote-Referenz %s nicht finden."
+msgid "%%(objecttype) does not take arguments"
+msgstr "%%(objecttype) akzeptiert keine Argumente"
 
-#: remote.c:1946
+#: ref-filter.c:282
 #, c-format
-msgid "* Ignoring funny ref '%s' locally"
-msgstr "* Ignoriere sonderbare Referenz '%s' lokal"
+msgid "unrecognized %%(objectsize) argument: %s"
+msgstr "nicht erkanntes %%(objectsize) Argument: %s"
 
-#: remote.c:2109
+#: ref-filter.c:290
 #, c-format
-msgid "Your branch is based on '%s', but the upstream is gone.\n"
-msgstr ""
-"Ihr Branch basiert auf '%s', aber der Upstream-Branch wurde entfernt.\n"
+msgid "%%(deltabase) does not take arguments"
+msgstr "%%(deltabase) akzeptiert keine Argumente"
 
-#: remote.c:2113
-msgid "  (use \"git branch --unset-upstream\" to fixup)\n"
-msgstr "  (benutzen Sie \"git branch --unset-upstream\" zum Beheben)\n"
+#: ref-filter.c:302
+#, c-format
+msgid "%%(body) does not take arguments"
+msgstr "%%(body) akzeptiert keine Argumente"
 
-#: remote.c:2116
+#: ref-filter.c:315
 #, c-format
-msgid "Your branch is up to date with '%s'.\n"
-msgstr "Ihr Branch ist auf demselben Stand wie '%s'.\n"
+msgid "unrecognized %%(subject) argument: %s"
+msgstr "nicht erkanntes %%(subject) Argument: %s"
 
-#: remote.c:2120
+#: ref-filter.c:334
 #, c-format
-msgid "Your branch and '%s' refer to different commits.\n"
-msgstr "Ihr Branch und '%s' zeigen auf unterschiedliche Commits.\n"
+msgid "expected %%(trailers:key=<value>)"
+msgstr "%%(trailers:key=<Wert>) erwartet"
 
-#: remote.c:2123
+#: ref-filter.c:336
 #, c-format
-msgid "  (use \"%s\" for details)\n"
-msgstr "  (benutzen Sie \"%s\" für Details)\n"
+msgid "unknown %%(trailers) argument: %s"
+msgstr "unbekanntes %%(trailers) Argument: %s"
 
-#: remote.c:2127
+#: ref-filter.c:367
 #, 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] "Ihr Branch ist %2$d Commit vor '%1$s'.\n"
-msgstr[1] "Ihr Branch ist %2$d Commits vor '%1$s'.\n"
+msgid "positive value expected contents:lines=%s"
+msgstr "Positiver Wert erwartet contents:lines=%s"
 
-#: remote.c:2133
-msgid "  (use \"git push\" to publish your local commits)\n"
-msgstr "  (benutzen Sie \"git push\", um lokale Commits zu publizieren)\n"
+#: ref-filter.c:369
+#, c-format
+msgid "unrecognized %%(contents) argument: %s"
+msgstr "nicht erkanntes %%(contents) Argument: %s"
 
-#: remote.c:2136
+#: ref-filter.c:384
 #, 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] ""
-"Ihr Branch ist %2$d Commit hinter '%1$s', und kann vorgespult werden.\n"
-msgstr[1] ""
-"Ihr Branch ist %2$d Commits hinter '%1$s', und kann vorgespult werden.\n"
+msgid "positive value expected '%s' in %%(%s)"
+msgstr "positiver Wert erwartet '%s' in %%(%s)"
 
-#: remote.c:2144
-msgid "  (use \"git pull\" to update your local branch)\n"
-msgstr ""
-"  (benutzen Sie \"git pull\", um Ihren lokalen Branch zu aktualisieren)\n"
+#: ref-filter.c:388
+#, c-format
+msgid "unrecognized argument '%s' in %%(%s)"
+msgstr "nicht erkanntes Argument '%s' in %%(%s)"
 
-#: remote.c:2147
+#: ref-filter.c:402
 #, c-format
-msgid ""
-"Your branch and '%s' have diverged,\n"
-"and have %d and %d different commit each, respectively.\n"
-msgid_plural ""
-"Your branch and '%s' have diverged,\n"
-"and have %d and %d different commits each, respectively.\n"
-msgstr[0] ""
-"Ihr Branch und '%s' sind divergiert,\n"
-"und haben jeweils %d und %d unterschiedliche Commits.\n"
-msgstr[1] ""
-"Ihr Branch und '%s' sind divergiert,\n"
-"und haben jeweils %d und %d unterschiedliche Commits.\n"
+msgid "unrecognized email option: %s"
+msgstr "nicht erkannte E-Mail Option: %s"
 
-#: remote.c:2157
-msgid "  (use \"git pull\" to merge the remote branch into yours)\n"
-msgstr ""
-"  (benutzen Sie \"git pull\", um Ihren Branch mit dem Remote-Branch "
-"zusammenzuführen)\n"
+#: ref-filter.c:432
+#, c-format
+msgid "expected format: %%(align:<width>,<position>)"
+msgstr "erwartetes Format: %%(align:<Breite>,<Position>)"
 
-#: remote.c:2349
+#: ref-filter.c:444
 #, c-format
-msgid "cannot parse expected object name '%s'"
-msgstr "Kann erwarteten Objektnamen '%s' nicht parsen."
+msgid "unrecognized position:%s"
+msgstr "nicht erkannte Position:%s"
 
-#: replace-object.c:21
+#: ref-filter.c:451
 #, c-format
-msgid "bad replace ref name: %s"
-msgstr "ungültiger Name für ersetzende Referenz: %s"
+msgid "unrecognized width:%s"
+msgstr "nicht erkannte Breite:%s"
 
-#: replace-object.c:30
+#: ref-filter.c:460
 #, c-format
-msgid "duplicate replace ref: %s"
-msgstr "doppelte ersetzende Referenz: %s"
+msgid "unrecognized %%(align) argument: %s"
+msgstr "nicht erkanntes %%(align) Argument: %s"
 
-#: replace-object.c:82
+#: ref-filter.c:468
 #, c-format
-msgid "replace depth too high for object %s"
-msgstr "Ersetzungstiefe zu hoch für Objekt %s"
+msgid "positive width expected with the %%(align) atom"
+msgstr "Positive Breitenangabe für %%(align) erwartet"
 
-#: rerere.c:217 rerere.c:226 rerere.c:229
-msgid "corrupt MERGE_RR"
-msgstr "Fehlerhaftes MERGE_RR"
+#: ref-filter.c:486
+#, c-format
+msgid "unrecognized %%(if) argument: %s"
+msgstr "nicht erkanntes %%(if) Argument: %s"
 
-#: rerere.c:264 rerere.c:269
-msgid "unable to write rerere record"
-msgstr "Konnte Rerere-Eintrag nicht schreiben."
+#: ref-filter.c:588
+#, c-format
+msgid "malformed field name: %.*s"
+msgstr "Fehlerhafter Feldname: %.*s"
 
-#: rerere.c:495
+#: ref-filter.c:615
 #, c-format
-msgid "there were errors while writing '%s' (%s)"
-msgstr "Fehler beim Schreiben von '%s' (%s)."
+msgid "unknown field name: %.*s"
+msgstr "Unbekannter Feldname: %.*s"
 
-#: rerere.c:498
+#: ref-filter.c:619
 #, c-format
-msgid "failed to flush '%s'"
-msgstr "Flush bei '%s' fehlgeschlagen."
+msgid ""
+"not a git repository, but the field '%.*s' requires access to object data"
+msgstr ""
+"Kein Git-Repository, aber das Feld '%.*s' erfordert Zugriff auf Objektdaten."
 
-#: rerere.c:503 rerere.c:1039
+#: ref-filter.c:743
 #, c-format
-msgid "could not parse conflict hunks in '%s'"
-msgstr "Konnte Konflikt-Blöcke in '%s' nicht parsen."
+msgid "format: %%(if) atom used without a %%(then) atom"
+msgstr "format: %%(if) Atom ohne ein %%(then) Atom verwendet"
 
-#: rerere.c:684
+#: ref-filter.c:806
 #, c-format
-msgid "failed utime() on '%s'"
-msgstr "Fehler beim Aufruf von utime() auf '%s'."
+msgid "format: %%(then) atom used without an %%(if) atom"
+msgstr "format: %%(then) Atom ohne ein %%(if) Atom verwendet"
 
-#: rerere.c:694
+#: ref-filter.c:808
 #, c-format
-msgid "writing '%s' failed"
-msgstr "Schreiben von '%s' fehlgeschlagen."
+msgid "format: %%(then) atom used more than once"
+msgstr "format: %%(then) Atom mehr als einmal verwendet"
 
-#: rerere.c:714
+#: ref-filter.c:810
 #, c-format
-msgid "Staged '%s' using previous resolution."
-msgstr "'%s' mit vorheriger Konfliktauflösung zum Commit vorgemerkt."
+msgid "format: %%(then) atom used after %%(else)"
+msgstr "format: %%(then) Atom nach %%(else) verwendet"
 
-#: rerere.c:753
+#: ref-filter.c:838
 #, c-format
-msgid "Recorded resolution for '%s'."
-msgstr "Konfliktauflösung für '%s' aufgezeichnet."
+msgid "format: %%(else) atom used without an %%(if) atom"
+msgstr "format: %%(else) Atom ohne ein %%(if) Atom verwendet"
 
-#: rerere.c:788
+#: ref-filter.c:840
 #, c-format
-msgid "Resolved '%s' using previous resolution."
-msgstr "Konflikte in '%s' mit vorheriger Konfliktauflösung beseitigt."
+msgid "format: %%(else) atom used without a %%(then) atom"
+msgstr "Format: %%(else) Atom ohne ein %%(then) Atom verwendet"
 
-#: rerere.c:803
+#: ref-filter.c:842
 #, c-format
-msgid "cannot unlink stray '%s'"
-msgstr "Kann '%s' nicht löschen."
+msgid "format: %%(else) atom used more than once"
+msgstr "Format: %%(end) Atom mehr als einmal verwendet"
 
-#: rerere.c:807
+#: ref-filter.c:857
 #, c-format
-msgid "Recorded preimage for '%s'"
-msgstr "Preimage für '%s' aufgezeichnet."
+msgid "format: %%(end) atom used without corresponding atom"
+msgstr "Format: %%(end) Atom ohne zugehöriges Atom verwendet"
 
-#: rerere.c:881 submodule.c:2082 builtin/log.c:1992
-#: builtin/submodule--helper.c:1878 builtin/submodule--helper.c:1890
+#: ref-filter.c:914
 #, c-format
-msgid "could not create directory '%s'"
-msgstr "Konnte Verzeichnis '%s' nicht erstellen."
+msgid "malformed format string %s"
+msgstr "Fehlerhafter Formatierungsstring %s"
 
-#: rerere.c:1057
+#: ref-filter.c:1555
 #, c-format
-msgid "failed to update conflicted state in '%s'"
-msgstr "Fehler beim Aktualisieren des Konflikt-Status in '%s'."
+msgid "(no branch, rebasing %s)"
+msgstr "(kein Branch, Rebase von %s)"
 
-#: rerere.c:1068 rerere.c:1075
+#: ref-filter.c:1558
 #, c-format
-msgid "no remembered resolution for '%s'"
-msgstr "Keine aufgezeichnete Konfliktauflösung für '%s'."
+msgid "(no branch, rebasing detached HEAD %s)"
+msgstr "(kein Branch, Rebase von losgelöstem HEAD %s)"
 
-#: rerere.c:1077
+#: ref-filter.c:1561
 #, c-format
-msgid "cannot unlink '%s'"
-msgstr "Kann '%s' nicht löschen."
+msgid "(no branch, bisect started on %s)"
+msgstr "(kein Branch, binäre Suche begonnen bei %s)"
 
-#: rerere.c:1087
+#: ref-filter.c:1565
 #, c-format
-msgid "Updated preimage for '%s'"
-msgstr "Preimage für '%s' aktualisiert."
+msgid "(HEAD detached at %s)"
+msgstr "(HEAD losgelöst bei %s)"
 
-#: rerere.c:1096
+#: ref-filter.c:1568
 #, c-format
-msgid "Forgot resolution for '%s'\n"
-msgstr "Aufgezeichnete Konfliktauflösung für '%s' gelöscht.\n"
+msgid "(HEAD detached from %s)"
+msgstr "(HEAD losgelöst von %s)"
 
-#: rerere.c:1199
-msgid "unable to open rr-cache directory"
-msgstr "Konnte rr-cache Verzeichnis nicht öffnen."
+#: ref-filter.c:1571
+msgid "(no branch)"
+msgstr "(kein Branch)"
 
-#: reset.c:42
-msgid "could not determine HEAD revision"
-msgstr "Konnte HEAD-Commit nicht bestimmen."
+#: ref-filter.c:1603 ref-filter.c:1812
+#, c-format
+msgid "missing object %s for %s"
+msgstr "Objekt %s fehlt für %s"
 
-#: reset.c:70 reset.c:76 sequencer.c:3460
+#: ref-filter.c:1613
 #, c-format
-msgid "failed to find tree of %s"
-msgstr "Fehler beim Finden des \"Tree\"-Objektes von %s."
+msgid "parse_object_buffer failed on %s for %s"
+msgstr "parse_object_buffer bei %s für %s fehlgeschlagen"
 
-#: revision.c:2336
-msgid "--unpacked=<packfile> no longer supported"
-msgstr "--unpacked=<Pack-Datei> wird nicht länger unterstützt"
+#: ref-filter.c:1996
+#, c-format
+msgid "malformed object at '%s'"
+msgstr "fehlerhaftes Objekt bei '%s'"
 
-#: revision.c:2356
+#: ref-filter.c:2085
 #, c-format
-msgid "unknown value for --diff-merges: %s"
-msgstr "unbekannter Wert für --diff-merges: %s"
+msgid "ignoring ref with broken name %s"
+msgstr "Ignoriere Referenz mit fehlerhaftem Namen %s"
 
-#: revision.c:2694
-msgid "your current branch appears to be broken"
-msgstr "Ihr aktueller Branch scheint fehlerhaft zu sein."
+#: ref-filter.c:2090 refs.c:676
+#, c-format
+msgid "ignoring broken ref %s"
+msgstr "Ignoriere fehlerhafte Referenz %s"
 
-#: revision.c:2697
+#: ref-filter.c:2430
 #, c-format
-msgid "your current branch '%s' does not have any commits yet"
-msgstr "Ihr aktueller Branch '%s' hat noch keine Commits."
+msgid "format: %%(end) atom missing"
+msgstr "Format: %%(end) Atom fehlt"
 
-#: revision.c:2907
-msgid "-L does not yet support diff formats besides -p and -s"
-msgstr "-L unterstützt noch keine anderen Diff-Formate außer -p und -s"
+#: ref-filter.c:2529
+#, c-format
+msgid "malformed object name %s"
+msgstr "missgebildeter Objektname %s"
 
-#: run-command.c:764
-msgid "open /dev/null failed"
-msgstr "Öffnen von /dev/null fehlgeschlagen"
+#: ref-filter.c:2534
+#, c-format
+msgid "option `%s' must point to a commit"
+msgstr "die Option `%s' muss auf einen Commit zeigen"
 
-#: run-command.c:1271
+#: refs.c:264
 #, c-format
-msgid "cannot create async thread: %s"
-msgstr "Konnte Thread für async nicht erzeugen: %s"
+msgid "%s does not point to a valid object!"
+msgstr "%s zeigt auf kein gültiges Objekt!"
 
-#: run-command.c:1335
+#: refs.c:566
 #, c-format
 msgid ""
-"The '%s' hook was ignored because it's not set as executable.\n"
-"You can disable this warning with `git config advice.ignoredHook false`."
+"Using '%s' as the name for the initial branch. This default branch name\n"
+"is subject to change. To configure the initial branch name to use in all\n"
+"of your new repositories, which will suppress this warning, call:\n"
+"\n"
+"\tgit config --global init.defaultBranch <name>\n"
+"\n"
+"Names commonly chosen instead of 'master' are 'main', 'trunk' and\n"
+"'development'. The just-created branch can be renamed via this command:\n"
+"\n"
+"\tgit branch -m <name>\n"
 msgstr ""
-"Der '%s' Hook wurde ignoriert, weil er nicht als ausführbar markiert ist.\n"
-"Sie können diese Warnung mit `git config advice.ignoredHook false` "
-"deaktivieren."
-
-#: send-pack.c:146
-msgid "unexpected flush packet while reading remote unpack status"
-msgstr "Unerwartetes Flush-Paket beim Lesen des Remote-Unpack-Status."
+"Als Name für den initialen Branch wurde '%s' benutzt. Dieser\n"
+"Standard-Branchname kann sich ändern. Um den Namen des initialen Branches\n"
+"zu konfigurieren, der in allen neuen Repositories verwendet werden soll und\n"
+"um diese Warnung zu unterdrücken, führen Sie aus:\n"
+"\n"
+"\tgit config --global init.defaultBranch <Name>\n"
+"\n"
+"Häufig gewählte Namen statt 'master' sind 'main', 'trunk' und\n"
+"'development'. Der gerade erstellte Branch kann mit diesem Befehl\n"
+"umbenannt werden:\n"
+"\n"
+"\tgit branch -m <Name>\n"
 
-#: send-pack.c:148
+#: refs.c:588
 #, c-format
-msgid "unable to parse remote unpack status: %s"
-msgstr "Konnte Status des Entpackens der Gegenseite nicht parsen: %s"
+msgid "could not retrieve `%s`"
+msgstr "konnte `%s` nicht abrufen"
 
-#: send-pack.c:150
+#: refs.c:598
 #, c-format
-msgid "remote unpack failed: %s"
-msgstr "Entpacken auf der Gegenseite fehlgeschlagen: %s"
-
-#: send-pack.c:374
-msgid "failed to sign the push certificate"
-msgstr "Fehler beim Signieren des \"push\"-Zertifikates"
-
-#: send-pack.c:467
-msgid "the receiving end does not support this repository's hash algorithm"
-msgstr ""
-"die Gegenseite unterstützt nicht den Hash-Algorithmus dieses Repositories"
+msgid "invalid branch name: %s = %s"
+msgstr "ungültiger Branchname: %s = %s"
 
-#: send-pack.c:476
-msgid "the receiving end does not support --signed push"
-msgstr ""
-"die Gegenseite unterstützt keinen signierten Versand (\"--signed push\")"
+#: refs.c:674
+#, c-format
+msgid "ignoring dangling symref %s"
+msgstr "Ignoriere unreferenzierte symbolische Referenz %s"
 
-#: send-pack.c:478
-msgid ""
-"not sending a push certificate since the receiving end does not support --"
-"signed push"
-msgstr ""
-"kein Versand des \"push\"-Zertifikates, da die Gegenseite keinen signierten\n"
-"Versand (\"--signed push\") unterstützt"
+#: refs.c:922
+#, c-format
+msgid "log for ref %s has gap after %s"
+msgstr "Log für Referenz %s hat eine Lücke nach %s."
 
-#: send-pack.c:490
-msgid "the receiving end does not support --atomic push"
-msgstr "die Gegenseite unterstützt keinen atomaren Versand (\"--atomic push\")"
+#: refs.c:929
+#, c-format
+msgid "log for ref %s unexpectedly ended on %s"
+msgstr "Log für Referenz %s unerwartet bei %s beendet."
 
-#: send-pack.c:495
-msgid "the receiving end does not support push options"
-msgstr "die Gegenseite unterstützt keine Push-Optionen"
+#: refs.c:994
+#, c-format
+msgid "log for %s is empty"
+msgstr "Log für %s ist leer."
 
-#: sequencer.c:195
+#: refs.c:1086
 #, c-format
-msgid "invalid commit message cleanup mode '%s'"
-msgstr "Ungültiger \"cleanup\"-Modus '%s' für Commit-Beschreibungen."
+msgid "refusing to update ref with bad name '%s'"
+msgstr "verweigere Aktualisierung einer Referenz mit fehlerhaftem Namen '%s'"
 
-#: sequencer.c:323
+#: refs.c:1157
 #, c-format
-msgid "could not delete '%s'"
-msgstr "Konnte '%s' nicht löschen."
+msgid "update_ref failed for ref '%s': %s"
+msgstr "update_ref für Referenz '%s' fehlgeschlagen: %s"
 
-#: sequencer.c:343 builtin/rebase.c:755 builtin/rebase.c:1596 builtin/rm.c:385
+#: refs.c:2051
 #, c-format
-msgid "could not remove '%s'"
-msgstr "Konnte '%s' nicht löschen"
+msgid "multiple updates for ref '%s' not allowed"
+msgstr "mehrere Aktualisierungen für Referenz '%s' nicht erlaubt"
 
-#: sequencer.c:353
-msgid "revert"
-msgstr "Revert"
+#: refs.c:2131
+msgid "ref updates forbidden inside quarantine environment"
+msgstr ""
+"Aktualisierungen von Referenzen ist innerhalb der Quarantäne-Umgebung "
+"verboten"
 
-#: sequencer.c:355
-msgid "cherry-pick"
-msgstr "Cherry-Pick"
+#: refs.c:2142
+msgid "ref updates aborted by hook"
+msgstr "Aktualisierungen von Referenzen durch Hook abgebrochen"
 
-#: sequencer.c:357
-msgid "rebase"
-msgstr "Rebase"
+#: refs.c:2242 refs.c:2272
+#, c-format
+msgid "'%s' exists; cannot create '%s'"
+msgstr "'%s' existiert; kann '%s' nicht erstellen"
 
-#: sequencer.c:359
+#: refs.c:2248 refs.c:2283
 #, c-format
-msgid "unknown action: %d"
-msgstr "Unbekannte Aktion: %d"
+msgid "cannot process '%s' and '%s' at the same time"
+msgstr "kann '%s' und '%s' nicht zur selben Zeit verarbeiten"
 
-#: sequencer.c:418
-msgid ""
-"after resolving the conflicts, mark the corrected paths\n"
-"with 'git add <paths>' or 'git rm <paths>'"
-msgstr ""
-"nach Auflösung der Konflikte markieren Sie die korrigierten Pfade\n"
-"mit 'git add <Pfade>' oder 'git rm <Pfade>'"
+#: refs/files-backend.c:1228
+#, c-format
+msgid "could not remove reference %s"
+msgstr "konnte Referenz %s nicht löschen"
 
-#: sequencer.c:421
-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'"
+#: refs/files-backend.c:1242 refs/packed-backend.c:1542
+#: refs/packed-backend.c:1552
+#, c-format
+msgid "could not delete reference %s: %s"
+msgstr "konnte Referenz %s nicht entfernen: %s"
+
+#: refs/files-backend.c:1245 refs/packed-backend.c:1555
+#, c-format
+msgid "could not delete references: %s"
+msgstr "konnte Referenzen nicht entfernen: %s"
+
+#: refspec.c:170
+#, c-format
+msgid "invalid refspec '%s'"
+msgstr "ungültige Refspec '%s'"
+
+#: remote.c:351
+#, c-format
+msgid "config remote shorthand cannot begin with '/': %s"
 msgstr ""
-"nach Auflösung der Konflikte markieren Sie die korrigierten Pfade\n"
-"mit 'git add <Pfade>' oder 'git rm <Pfade>' und tragen Sie das Ergebnis mit\n"
-"'git commit' ein"
+"Kürzel für Remote-Repository in der Konfiguration kann nicht mit '/' "
+"beginnen: %s"
 
-#: sequencer.c:434 sequencer.c:3062
+#: remote.c:399
+msgid "more than one receivepack given, using the first"
+msgstr "Mehr als ein receivepack-Befehl angegeben, benutze den ersten."
+
+#: remote.c:407
+msgid "more than one uploadpack given, using the first"
+msgstr "Mehr als ein uploadpack-Befehl angegeben, benutze den ersten."
+
+#: remote.c:590
 #, c-format
-msgid "could not lock '%s'"
-msgstr "Konnte '%s' nicht sperren"
+msgid "Cannot fetch both %s and %s to %s"
+msgstr "Kann 'fetch' nicht für sowohl %s als auch %s nach %s ausführen."
 
-#: sequencer.c:436 sequencer.c:2861 sequencer.c:3066 sequencer.c:3080
-#: sequencer.c:3337 sequencer.c:5326 strbuf.c:1168 wrapper.c:631
+#: remote.c:594
 #, c-format
-msgid "could not write to '%s'"
-msgstr "Konnte nicht nach '%s' schreiben."
+msgid "%s usually tracks %s, not %s"
+msgstr "%s folgt üblicherweise %s, nicht %s"
 
-#: sequencer.c:441
+#: remote.c:598
 #, c-format
-msgid "could not write eol to '%s'"
-msgstr "Konnte EOL nicht nach '%s' schreiben."
+msgid "%s tracks both %s and %s"
+msgstr "%s folgt sowohl %s als auch %s"
 
-#: sequencer.c:446 sequencer.c:2866 sequencer.c:3068 sequencer.c:3082
-#: sequencer.c:3345
+#: remote.c:666
 #, c-format
-msgid "failed to finalize '%s'"
-msgstr "Fehler beim Fertigstellen von '%s'."
+msgid "key '%s' of pattern had no '*'"
+msgstr "Schlüssel '%s' des Musters hatte kein '*'."
 
-#: sequencer.c:485
+#: remote.c:676
 #, c-format
-msgid "your local changes would be overwritten by %s."
-msgstr "Ihre lokalen Änderungen würden durch den %s überschrieben werden."
+msgid "value '%s' of pattern has no '*'"
+msgstr "Wert '%s' des Musters hat kein '*'."
 
-#: sequencer.c:489
-msgid "commit your changes or stash them to proceed."
+#: remote.c:1083
+#, c-format
+msgid "src refspec %s does not match any"
+msgstr "Src-Refspec %s entspricht keiner Referenz."
+
+#: remote.c:1088
+#, c-format
+msgid "src refspec %s matches more than one"
+msgstr "Src-Refspec %s entspricht mehr als einer Referenz."
+
+#. TRANSLATORS: "matches '%s'%" is the <dst> part of "git push
+#. <remote> <src>:<dst>" push, and "being pushed ('%s')" is
+#. the <src>.
+#.
+#: remote.c:1103
+#, c-format
+msgid ""
+"The destination you provided is not a full refname (i.e.,\n"
+"starting with \"refs/\"). We tried to guess what you meant by:\n"
+"\n"
+"- Looking for a ref that matches '%s' on the remote side.\n"
+"- Checking if the <src> being pushed ('%s')\n"
+"  is a ref in \"refs/{heads,tags}/\". If so we add a corresponding\n"
+"  refs/{heads,tags}/ prefix on the remote side.\n"
+"\n"
+"Neither worked, so we gave up. You must fully qualify the ref."
 msgstr ""
-"Committen Sie Ihre Änderungen oder benutzen Sie \"stash\", um fortzufahren."
+"Das angegebene Ziel ist kein vollständiger Referenzname (startet mit \"refs/"
+"\").\n"
+"Wir versuchten zu erraten, was Sie meinten, mit:\n"
+"\n"
+"- Suche einer Referenz, die mit '%s' übereinstimmt, auf der Remote-Seite\n"
+"- Prüfung, ob die versendete <Quelle> ('%s') eine Referenz in \"refs/{heads,"
+"tags}\"\n"
+"  ist, in dessen Falle wir einen entsprechenden refs/{heads,tags} Präfix "
+"auf\n"
+"  der Remote-Seite hinzufügen würden.\n"
+"\n"
+"Keines hat funktioniert, sodass wir aufgegeben haben. Sie müssen die\n"
+"Referenz mit vollqualifizierten Namen angeben."
 
-#: sequencer.c:521
+#: remote.c:1123
 #, c-format
-msgid "%s: fast-forward"
-msgstr "%s: Vorspulen"
+msgid ""
+"The <src> part of the refspec is a commit object.\n"
+"Did you mean to create a new branch by pushing to\n"
+"'%s:refs/heads/%s'?"
+msgstr ""
+"Der <Quelle> Teil der Refspec ist ein Commit-Objekt.\n"
+"Meinten Sie, einen neuen Branch mittels Push nach\n"
+"'%s:refs/heads/%s' zu erstellen?"
 
-#: sequencer.c:560 builtin/tag.c:566
+#: remote.c:1128
 #, c-format
-msgid "Invalid cleanup mode %s"
-msgstr "Ungültiger \"cleanup\" Modus %s"
+msgid ""
+"The <src> part of the refspec is a tag object.\n"
+"Did you mean to create a new tag by pushing to\n"
+"'%s:refs/tags/%s'?"
+msgstr ""
+"Der <Quelle> Teil der Refspec ist ein Tag-Objekt.\n"
+"Meinten Sie, einen neuen Tag mittels Push nach\n"
+"'%s:refs/tags/%s' zu erstellen?"
 
-#. TRANSLATORS: %s will be "revert", "cherry-pick" or
-#. "rebase".
-#.
-#: sequencer.c:670
+#: remote.c:1133
 #, c-format
-msgid "%s: Unable to write new index file"
-msgstr "%s: Konnte neue Index-Datei nicht schreiben"
+msgid ""
+"The <src> part of the refspec is a tree object.\n"
+"Did you mean to tag a new tree by pushing to\n"
+"'%s:refs/tags/%s'?"
+msgstr ""
+"Der <Quelle> Teil der Refspec ist ein Tree-Objekt.\n"
+"Meinten Sie, einen Tag für ein neues Tree-Objekt\n"
+"mittels Push nach '%s:refs/tags/'%s' zu erstellen?"
 
-#: sequencer.c:687
-msgid "unable to update cache tree"
-msgstr "Konnte Cache-Verzeichnis nicht aktualisieren."
+#: remote.c:1138
+#, c-format
+msgid ""
+"The <src> part of the refspec is a blob object.\n"
+"Did you mean to tag a new blob by pushing to\n"
+"'%s:refs/tags/%s'?"
+msgstr ""
+"Der <Quelle> Teil der Refspec ist ein Blob-Objekt.\n"
+"Meinten Sie, einen Tag für ein neues Blob-Objekt\n"
+"mittels Push nach '%s:refs/tags/%s' zu erstellen?"
 
-#: sequencer.c:701
-msgid "could not resolve HEAD commit"
-msgstr "Konnte HEAD-Commit nicht auflösen."
+#: remote.c:1174
+#, c-format
+msgid "%s cannot be resolved to branch"
+msgstr "%s kann nicht zu Branch aufgelöst werden."
 
-#: sequencer.c:781
+#: remote.c:1185
 #, c-format
-msgid "no key present in '%.*s'"
-msgstr "Kein Schlüssel in '%.*s' vorhanden."
+msgid "unable to delete '%s': remote ref does not exist"
+msgstr "Konnte '%s' nicht löschen: Remote-Referenz existiert nicht."
 
-#: sequencer.c:792
+#: remote.c:1197
 #, c-format
-msgid "unable to dequote value of '%s'"
-msgstr "Konnte Anführungszeichen von '%s' nicht entfernen."
+msgid "dst refspec %s matches more than one"
+msgstr "Dst-Refspec %s entspricht mehr als einer Referenz."
 
-#: sequencer.c:829 wrapper.c:201 wrapper.c:371 builtin/am.c:710
-#: builtin/am.c:802 builtin/merge.c:1135 builtin/rebase.c:908
+#: remote.c:1204
 #, c-format
-msgid "could not open '%s' for reading"
-msgstr "Konnte '%s' nicht zum Lesen öffnen."
+msgid "dst ref %s receives from more than one src"
+msgstr "Dst-Referenz %s empfängt von mehr als einer Quelle"
 
-#: sequencer.c:839
-msgid "'GIT_AUTHOR_NAME' already given"
-msgstr "'GIT_AUTHOR_NAME' bereits angegeben."
+#: remote.c:1724 remote.c:1825
+msgid "HEAD does not point to a branch"
+msgstr "HEAD zeigt auf keinen Branch"
 
-#: sequencer.c:844
-msgid "'GIT_AUTHOR_EMAIL' already given"
-msgstr "'GIT_AUTHOR_EMAIL' bereits angegeben."
+#: remote.c:1733
+#, c-format
+msgid "no such branch: '%s'"
+msgstr "Branch nicht gefunden: '%s'"
 
-#: sequencer.c:849
-msgid "'GIT_AUTHOR_DATE' already given"
-msgstr "'GIT_AUTHOR_DATE' bereits angegeben."
+#: remote.c:1736
+#, c-format
+msgid "no upstream configured for branch '%s'"
+msgstr "Kein Upstream-Branch für Branch '%s' konfiguriert."
 
-#: sequencer.c:853
+#: remote.c:1742
 #, c-format
-msgid "unknown variable '%s'"
-msgstr "Unbekannte Variable '%s'"
+msgid "upstream branch '%s' not stored as a remote-tracking branch"
+msgstr "Upstream-Branch '%s' nicht als Remote-Tracking-Branch gespeichert"
 
-#: sequencer.c:858
-msgid "missing 'GIT_AUTHOR_NAME'"
-msgstr "'GIT_AUTHOR_NAME' fehlt."
+#: remote.c:1757
+#, c-format
+msgid "push destination '%s' on remote '%s' has no local tracking branch"
+msgstr ""
+"Ziel für \"push\" '%s' auf Remote-Repository '%s' hat keinen lokal gefolgten "
+"Branch"
 
-#: sequencer.c:860
-msgid "missing 'GIT_AUTHOR_EMAIL'"
-msgstr "'GIT_AUTHOR_EMAIL' fehlt."
+#: remote.c:1769
+#, c-format
+msgid "branch '%s' has no remote for pushing"
+msgstr "Branch '%s' hat keinen Upstream-Branch gesetzt"
 
-#: sequencer.c:862
-msgid "missing 'GIT_AUTHOR_DATE'"
-msgstr "'GIT_AUTHOR_DATE' fehlt."
+#: remote.c:1779
+#, c-format
+msgid "push refspecs for '%s' do not include '%s'"
+msgstr "Push-Refspecs für '%s' beinhalten nicht '%s'"
 
-#: sequencer.c:927
+#: remote.c:1792
+msgid "push has no destination (push.default is 'nothing')"
+msgstr "kein Ziel für \"push\" (push.default ist 'nothing')"
+
+#: remote.c:1814
+msgid "cannot resolve 'simple' push to a single destination"
+msgstr "kann einzelnes Ziel für \"push\" im Modus 'simple' nicht auflösen"
+
+#: remote.c:1943
 #, c-format
-msgid ""
-"you have staged changes in your working tree\n"
-"If these changes are meant to be squashed into the previous commit, run:\n"
-"\n"
-"  git commit --amend %s\n"
-"\n"
-"If they are meant to go into a new commit, run:\n"
-"\n"
-"  git commit %s\n"
-"\n"
-"In both cases, once you're done, continue with:\n"
-"\n"
-"  git rebase --continue\n"
-msgstr ""
-"Es befinden sich zum Commit vorgemerkte Änderungen in Ihrem "
-"Arbeitsverzeichnis.\n"
-"Wenn diese Änderungen in den vorherigen Commit aufgenommen werden sollen,\n"
-"führen Sie aus:\n"
-"\n"
-"  git commit --amend %s\n"
-"\n"
-"Wenn daraus ein neuer Commit erzeugt werden soll, führen Sie aus:\n"
-"\n"
-"  git commit %s\n"
-"\n"
-"Im Anschluss führen Sie zum Fortfahren aus:\n"
-"\n"
-"  git rebase --continue\n"
+msgid "couldn't find remote ref %s"
+msgstr "Konnte Remote-Referenz %s nicht finden."
 
-#: sequencer.c:1208
-msgid "'prepare-commit-msg' hook failed"
-msgstr "'prepare-commit-msg' Hook fehlgeschlagen."
+#: remote.c:1956
+#, c-format
+msgid "* Ignoring funny ref '%s' locally"
+msgstr "* Ignoriere sonderbare Referenz '%s' lokal"
 
-#: sequencer.c:1214
-msgid ""
-"Your name and email address were configured automatically based\n"
-"on your username and hostname. Please check that they are accurate.\n"
-"You can suppress this message by setting them explicitly. Run the\n"
-"following command and follow the instructions in your editor to edit\n"
-"your configuration file:\n"
-"\n"
-"    git config --global --edit\n"
-"\n"
-"After doing this, you may fix the identity used for this commit with:\n"
-"\n"
-"    git commit --amend --reset-author\n"
+#: remote.c:2119
+#, c-format
+msgid "Your branch is based on '%s', but the upstream is gone.\n"
 msgstr ""
-"Ihr Name und E-Mail Adresse wurden automatisch auf Basis\n"
-"Ihres Benutzer- und Rechnernamens konfiguriert. Bitte prüfen Sie, dass\n"
-"diese zutreffend sind. Sie können diese Meldung unterdrücken, indem Sie\n"
-"diese explizit setzen. Führen Sie dazu den folgenden Befehl aus und folgen\n"
-"Sie den Anweisungen in Ihrem Editor, um die Konfigurationsdatei zu "
-"bearbeiten:\n"
-"\n"
-"    git config --global --edit\n"
-"\n"
-"Nachdem Sie das getan haben, können Sie Ihre Identität für diesen Commit\n"
-"ändern mit:\n"
-"\n"
-"    git commit --amend --reset-author\n"
+"Ihr Branch basiert auf '%s', aber der Upstream-Branch wurde entfernt.\n"
 
-#: sequencer.c:1227
-msgid ""
-"Your name and email address were configured automatically based\n"
-"on your username and hostname. Please check that they are accurate.\n"
-"You can suppress this message by setting them explicitly:\n"
-"\n"
-"    git config --global user.name \"Your Name\"\n"
-"    git config --global user.email you@example.com\n"
-"\n"
-"After doing this, you may fix the identity used for this commit with:\n"
-"\n"
-"    git commit --amend --reset-author\n"
-msgstr ""
-"Ihr Name und E-Mail Adresse wurden automatisch auf Basis\n"
-"Ihres Benutzer- und Rechnernamens konfiguriert. Bitte prüfen Sie, dass\n"
-"diese zutreffend sind. Sie können diese Meldung unterdrücken, indem Sie\n"
-"diese explizit setzen:\n"
-"\n"
-"    git config --global user.name \"Ihr Name\"\n"
-"    git config --global user.email ihre@emailadresse.de\n"
-"\n"
-"Nachdem Sie das getan haben, können Sie Ihre Identität für diesen Commit "
-"ändern:\n"
-"\n"
-"    git commit --amend --reset-author\n"
+#: remote.c:2123
+msgid "  (use \"git branch --unset-upstream\" to fixup)\n"
+msgstr "  (benutzen Sie \"git branch --unset-upstream\" zum Beheben)\n"
 
-#: sequencer.c:1269
-msgid "couldn't look up newly created commit"
-msgstr "Konnte neu erstellten Commit nicht nachschlagen."
+#: remote.c:2126
+#, c-format
+msgid "Your branch is up to date with '%s'.\n"
+msgstr "Ihr Branch ist auf demselben Stand wie '%s'.\n"
 
-#: sequencer.c:1271
-msgid "could not parse newly created commit"
-msgstr "Konnte neu erstellten Commit nicht analysieren."
+#: remote.c:2130
+#, c-format
+msgid "Your branch and '%s' refer to different commits.\n"
+msgstr "Ihr Branch und '%s' zeigen auf unterschiedliche Commits.\n"
 
-#: sequencer.c:1317
-msgid "unable to resolve HEAD after creating commit"
-msgstr "Konnte HEAD nicht auflösen, nachdem der Commit erstellt wurde."
+#: remote.c:2133
+#, c-format
+msgid "  (use \"%s\" for details)\n"
+msgstr "  (benutzen Sie \"%s\" für Details)\n"
 
-#: sequencer.c:1319
-msgid "detached HEAD"
-msgstr "losgelöster HEAD"
+#: remote.c:2137
+#, c-format
+msgid "Your branch is ahead of '%s' by %d commit.\n"
+msgid_plural "Your branch is ahead of '%s' by %d commits.\n"
+msgstr[0] "Ihr Branch ist %2$d Commit vor '%1$s'.\n"
+msgstr[1] "Ihr Branch ist %2$d Commits vor '%1$s'.\n"
 
-#: sequencer.c:1323
-msgid " (root-commit)"
-msgstr " (Root-Commit)"
+#: remote.c:2143
+msgid "  (use \"git push\" to publish your local commits)\n"
+msgstr "  (benutzen Sie \"git push\", um lokale Commits zu publizieren)\n"
+
+#: remote.c:2146
+#, c-format
+msgid "Your branch is behind '%s' by %d commit, and can be fast-forwarded.\n"
+msgid_plural ""
+"Your branch is behind '%s' by %d commits, and can be fast-forwarded.\n"
+msgstr[0] ""
+"Ihr Branch ist %2$d Commit hinter '%1$s', und kann vorgespult werden.\n"
+msgstr[1] ""
+"Ihr Branch ist %2$d Commits hinter '%1$s', und kann vorgespult werden.\n"
+
+#: remote.c:2154
+msgid "  (use \"git pull\" to update your local branch)\n"
+msgstr ""
+"  (benutzen Sie \"git pull\", um Ihren lokalen Branch zu aktualisieren)\n"
+
+#: remote.c:2157
+#, c-format
+msgid ""
+"Your branch and '%s' have diverged,\n"
+"and have %d and %d different commit each, respectively.\n"
+msgid_plural ""
+"Your branch and '%s' have diverged,\n"
+"and have %d and %d different commits each, respectively.\n"
+msgstr[0] ""
+"Ihr Branch und '%s' sind divergiert,\n"
+"und haben jeweils %d und %d unterschiedliche Commits.\n"
+msgstr[1] ""
+"Ihr Branch und '%s' sind divergiert,\n"
+"und haben jeweils %d und %d unterschiedliche Commits.\n"
+
+#: remote.c:2167
+msgid "  (use \"git pull\" to merge the remote branch into yours)\n"
+msgstr ""
+"  (benutzen Sie \"git pull\", um Ihren Branch mit dem Remote-Branch "
+"zusammenzuführen)\n"
+
+#: remote.c:2359
+#, c-format
+msgid "cannot parse expected object name '%s'"
+msgstr "Kann erwarteten Objektnamen '%s' nicht parsen."
 
-#: sequencer.c:1344
-msgid "could not parse HEAD"
-msgstr "Konnte HEAD nicht parsen."
+#: replace-object.c:21
+#, c-format
+msgid "bad replace ref name: %s"
+msgstr "ungültiger Name für ersetzende Referenz: %s"
 
-#: sequencer.c:1346
+#: replace-object.c:30
 #, c-format
-msgid "HEAD %s is not a commit!"
-msgstr "HEAD %s ist kein Commit!"
+msgid "duplicate replace ref: %s"
+msgstr "doppelte ersetzende Referenz: %s"
 
-#: sequencer.c:1350 sequencer.c:1425 builtin/commit.c:1577
-msgid "could not parse HEAD commit"
-msgstr "Konnte Commit von HEAD nicht analysieren."
+#: replace-object.c:82
+#, c-format
+msgid "replace depth too high for object %s"
+msgstr "Ersetzungstiefe zu hoch für Objekt %s"
 
-#: sequencer.c:1403 sequencer.c:2100
-msgid "unable to parse commit author"
-msgstr "Konnte Commit-Autor nicht parsen."
+#: rerere.c:201 rerere.c:210 rerere.c:213
+msgid "corrupt MERGE_RR"
+msgstr "Fehlerhaftes MERGE_RR"
 
-#: sequencer.c:1414 builtin/am.c:1566 builtin/merge.c:701
-msgid "git write-tree failed to write a tree"
-msgstr "\"git write-tree\" schlug beim Schreiben eines \"Tree\"-Objektes fehl"
+#: rerere.c:248 rerere.c:253
+msgid "unable to write rerere record"
+msgstr "Konnte Rerere-Eintrag nicht schreiben."
 
-#: sequencer.c:1447 sequencer.c:1565
+#: rerere.c:479
 #, c-format
-msgid "unable to read commit message from '%s'"
-msgstr "Konnte Commit-Beschreibung von '%s' nicht lesen."
+msgid "there were errors while writing '%s' (%s)"
+msgstr "Fehler beim Schreiben von '%s' (%s)."
 
-#: sequencer.c:1476 sequencer.c:1508
+#: rerere.c:482
 #, c-format
-msgid "invalid author identity '%s'"
-msgstr "ungültige Autor-Identität '%s'"
-
-#: sequencer.c:1482
-msgid "corrupt author: missing date information"
-msgstr "unbrauchbarer Autor: Datumsinformationen fehlen"
+msgid "failed to flush '%s'"
+msgstr "Flush bei '%s' fehlgeschlagen."
 
-#: sequencer.c:1521 builtin/am.c:1593 builtin/commit.c:1678 builtin/merge.c:904
-#: builtin/merge.c:929 t/helper/test-fast-rebase.c:78
-msgid "failed to write commit object"
-msgstr "Fehler beim Schreiben des Commit-Objektes."
+#: rerere.c:487 rerere.c:1023
+#, c-format
+msgid "could not parse conflict hunks in '%s'"
+msgstr "Konnte Konflikt-Blöcke in '%s' nicht parsen."
 
-#: sequencer.c:1548 sequencer.c:4283 t/helper/test-fast-rebase.c:198
+#: rerere.c:668
 #, c-format
-msgid "could not update %s"
-msgstr "Konnte %s nicht aktualisieren."
+msgid "failed utime() on '%s'"
+msgstr "Fehler beim Aufruf von utime() auf '%s'."
 
-#: sequencer.c:1597
+#: rerere.c:678
 #, c-format
-msgid "could not parse commit %s"
-msgstr "Konnte Commit %s nicht parsen."
+msgid "writing '%s' failed"
+msgstr "Schreiben von '%s' fehlgeschlagen."
 
-#: sequencer.c:1602
+#: rerere.c:698
 #, c-format
-msgid "could not parse parent commit %s"
-msgstr "Konnte Eltern-Commit %s nicht parsen."
+msgid "Staged '%s' using previous resolution."
+msgstr "'%s' mit vorheriger Konfliktauflösung zum Commit vorgemerkt."
 
-#: sequencer.c:1685 sequencer.c:1796
+#: rerere.c:737
 #, c-format
-msgid "unknown command: %d"
-msgstr "Unbekannter Befehl: %d"
+msgid "Recorded resolution for '%s'."
+msgstr "Konfliktauflösung für '%s' aufgezeichnet."
 
-#: sequencer.c:1743 sequencer.c:1768
+#: rerere.c:772
 #, c-format
-msgid "This is a combination of %d commits."
-msgstr "Das ist eine Kombination aus %d Commits."
+msgid "Resolved '%s' using previous resolution."
+msgstr "Konflikte in '%s' mit vorheriger Konfliktauflösung beseitigt."
 
-#: sequencer.c:1753
-msgid "need a HEAD to fixup"
-msgstr "benötige HEAD für fixup"
+#: rerere.c:787
+#, c-format
+msgid "cannot unlink stray '%s'"
+msgstr "Kann '%s' nicht löschen."
 
-#: sequencer.c:1755 sequencer.c:3372
-msgid "could not read HEAD"
-msgstr "Konnte HEAD nicht lesen"
+#: rerere.c:791
+#, c-format
+msgid "Recorded preimage for '%s'"
+msgstr "Preimage für '%s' aufgezeichnet."
 
-#: sequencer.c:1757
-msgid "could not read HEAD's commit message"
-msgstr "Konnte Commit-Beschreibung von HEAD nicht lesen"
+#: rerere.c:865 submodule.c:2088 builtin/log.c:1991
+#: builtin/submodule--helper.c:1878 builtin/submodule--helper.c:1890
+#, c-format
+msgid "could not create directory '%s'"
+msgstr "Konnte Verzeichnis '%s' nicht erstellen."
 
-#: sequencer.c:1763
+#: rerere.c:1041
 #, c-format
-msgid "cannot write '%s'"
-msgstr "kann '%s' nicht schreiben"
+msgid "failed to update conflicted state in '%s'"
+msgstr "Fehler beim Aktualisieren des Konflikt-Status in '%s'."
 
-#: sequencer.c:1770 git-rebase--preserve-merges.sh:486
-msgid "This is the 1st commit message:"
-msgstr "Das ist die erste Commit-Beschreibung:"
+#: rerere.c:1052 rerere.c:1059
+#, c-format
+msgid "no remembered resolution for '%s'"
+msgstr "Keine aufgezeichnete Konfliktauflösung für '%s'."
 
-#: sequencer.c:1778
+#: rerere.c:1061
 #, c-format
-msgid "could not read commit message of %s"
-msgstr "Konnte Commit-Beschreibung von %s nicht lesen."
+msgid "cannot unlink '%s'"
+msgstr "Kann '%s' nicht löschen."
 
-#: sequencer.c:1785
+#: rerere.c:1071
 #, c-format
-msgid "This is the commit message #%d:"
-msgstr "Das ist Commit-Beschreibung #%d:"
+msgid "Updated preimage for '%s'"
+msgstr "Preimage für '%s' aktualisiert."
 
-#: sequencer.c:1791
+#: rerere.c:1080
 #, c-format
-msgid "The commit message #%d will be skipped:"
-msgstr "Die Commit-Beschreibung #%d wird ausgelassen:"
+msgid "Forgot resolution for '%s'\n"
+msgstr "Aufgezeichnete Konfliktauflösung für '%s' gelöscht.\n"
 
-#: sequencer.c:1879
-msgid "your index file is unmerged."
-msgstr "Ihre Index-Datei ist nicht zusammengeführt."
+#: rerere.c:1191
+msgid "unable to open rr-cache directory"
+msgstr "Konnte rr-cache Verzeichnis nicht öffnen."
 
-#: sequencer.c:1886
-msgid "cannot fixup root commit"
-msgstr "kann fixup nicht auf Root-Commit anwenden"
+#: reset.c:42
+msgid "could not determine HEAD revision"
+msgstr "Konnte HEAD-Commit nicht bestimmen."
 
-#: sequencer.c:1905
+#: reset.c:70 reset.c:76 sequencer.c:3468
 #, c-format
-msgid "commit %s is a merge but no -m option was given."
-msgstr "Commit %s ist ein Merge, aber die Option -m wurde nicht angegeben."
+msgid "failed to find tree of %s"
+msgstr "Fehler beim Finden des \"Tree\"-Objektes von %s."
 
-#: sequencer.c:1913 sequencer.c:1921
-#, c-format
-msgid "commit %s does not have parent %d"
-msgstr "Commit %s hat keinen Eltern-Commit %d"
+#: revision.c:2338
+msgid "--unpacked=<packfile> no longer supported"
+msgstr "--unpacked=<Pack-Datei> wird nicht länger unterstützt"
 
-#: sequencer.c:1927
-#, c-format
-msgid "cannot get commit message for %s"
-msgstr "Kann keine Commit-Beschreibung für %s bekommen."
+#: revision.c:2668
+msgid "your current branch appears to be broken"
+msgstr "Ihr aktueller Branch scheint fehlerhaft zu sein."
 
-#. TRANSLATORS: The first %s will be a "todo" command like
-#. "revert" or "pick", the second %s a SHA1.
-#: sequencer.c:1946
+#: revision.c:2671
 #, c-format
-msgid "%s: cannot parse parent commit %s"
-msgstr "%s: kann Eltern-Commit %s nicht parsen"
+msgid "your current branch '%s' does not have any commits yet"
+msgstr "Ihr aktueller Branch '%s' hat noch keine Commits."
 
-#: sequencer.c:2011
-#, c-format
-msgid "could not rename '%s' to '%s'"
-msgstr "Konnte '%s' nicht zu '%s' umbenennen."
+#: revision.c:2877
+msgid "-L does not yet support diff formats besides -p and -s"
+msgstr "-L unterstützt noch keine anderen Diff-Formate außer -p und -s"
 
-#: sequencer.c:2071
-#, c-format
-msgid "could not revert %s... %s"
-msgstr "Konnte \"revert\" nicht auf %s... (%s) ausführen"
+#: run-command.c:767
+msgid "open /dev/null failed"
+msgstr "Öffnen von /dev/null fehlgeschlagen"
 
-#: sequencer.c:2072
+#: run-command.c:1274
 #, c-format
-msgid "could not apply %s... %s"
-msgstr "Konnte %s... (%s) nicht anwenden"
+msgid "cannot create async thread: %s"
+msgstr "Konnte Thread für async nicht erzeugen: %s"
 
-#: sequencer.c:2092
+#: run-command.c:1338
 #, c-format
-msgid "dropping %s %s -- patch contents already upstream\n"
-msgstr "Weglassen von %s %s -- Patch-Inhalte sind bereits im Upstream-Branch\n"
+msgid ""
+"The '%s' hook was ignored because it's not set as executable.\n"
+"You can disable this warning with `git config advice.ignoredHook false`."
+msgstr ""
+"Der '%s' Hook wurde ignoriert, weil er nicht als ausführbar markiert ist.\n"
+"Sie können diese Warnung mit `git config advice.ignoredHook false` "
+"deaktivieren."
 
-#: sequencer.c:2150
-#, c-format
-msgid "git %s: failed to read the index"
-msgstr "git %s: Fehler beim Lesen des Index"
+#: send-pack.c:146
+msgid "unexpected flush packet while reading remote unpack status"
+msgstr "Unerwartetes Flush-Paket beim Lesen des Remote-Unpack-Status."
 
-#: sequencer.c:2157
+#: send-pack.c:148
 #, c-format
-msgid "git %s: failed to refresh the index"
-msgstr "git %s: Fehler beim Aktualisieren des Index"
+msgid "unable to parse remote unpack status: %s"
+msgstr "Konnte Status des Entpackens der Gegenseite nicht parsen: %s"
 
-#: sequencer.c:2234
+#: send-pack.c:150
 #, c-format
-msgid "%s does not accept arguments: '%s'"
-msgstr "%s akzeptiert keine Argumente: '%s'"
+msgid "remote unpack failed: %s"
+msgstr "Entpacken auf der Gegenseite fehlgeschlagen: %s"
 
-#: sequencer.c:2243
-#, c-format
-msgid "missing arguments for %s"
-msgstr "Fehlende Argumente für %s."
+#: send-pack.c:374
+msgid "failed to sign the push certificate"
+msgstr "Fehler beim Signieren des \"push\"-Zertifikates"
+
+#: send-pack.c:467
+msgid "the receiving end does not support this repository's hash algorithm"
+msgstr ""
+"die Gegenseite unterstützt nicht den Hash-Algorithmus dieses Repositories"
+
+#: send-pack.c:476
+msgid "the receiving end does not support --signed push"
+msgstr ""
+"die Gegenseite unterstützt keinen signierten Versand (\"--signed push\")"
+
+#: send-pack.c:478
+msgid ""
+"not sending a push certificate since the receiving end does not support --"
+"signed push"
+msgstr ""
+"kein Versand des \"push\"-Zertifikates, da die Gegenseite keinen signierten\n"
+"Versand (\"--signed push\") unterstützt"
+
+#: send-pack.c:490
+msgid "the receiving end does not support --atomic push"
+msgstr "die Gegenseite unterstützt keinen atomaren Versand (\"--atomic push\")"
+
+#: send-pack.c:495
+msgid "the receiving end does not support push options"
+msgstr "die Gegenseite unterstützt keine Push-Optionen"
 
-#: sequencer.c:2274
+#: sequencer.c:195
 #, c-format
-msgid "could not parse '%s'"
-msgstr "Konnte '%s' nicht parsen."
+msgid "invalid commit message cleanup mode '%s'"
+msgstr "Ungültiger \"cleanup\"-Modus '%s' für Commit-Beschreibungen."
 
-#: sequencer.c:2335
+#: sequencer.c:323
 #, c-format
-msgid "invalid line %d: %.*s"
-msgstr "Ungültige Zeile %d: %.*s"
+msgid "could not delete '%s'"
+msgstr "Konnte '%s' nicht löschen."
 
-#: sequencer.c:2346
+#: sequencer.c:343 builtin/rebase.c:757 builtin/rebase.c:1602 builtin/rm.c:385
 #, c-format
-msgid "cannot '%s' without a previous commit"
-msgstr "Kann '%s' nicht ohne vorherigen Commit ausführen"
+msgid "could not remove '%s'"
+msgstr "Konnte '%s' nicht löschen"
 
-#: sequencer.c:2432
-msgid "cancelling a cherry picking in progress"
-msgstr "Abbrechen eines laufenden \"cherry-pick\""
+#: sequencer.c:353
+msgid "revert"
+msgstr "Revert"
 
-#: sequencer.c:2441
-msgid "cancelling a revert in progress"
-msgstr "Abbrechen eines laufenden \"revert\""
+#: sequencer.c:355
+msgid "cherry-pick"
+msgstr "Cherry-Pick"
 
-#: sequencer.c:2485
-msgid "please fix this using 'git rebase --edit-todo'."
-msgstr ""
-"Bitte beheben Sie dieses, indem Sie 'git rebase --edit-todo' ausführen."
+#: sequencer.c:357
+msgid "rebase"
+msgstr "Rebase"
 
-#: sequencer.c:2487
+#: sequencer.c:359
 #, c-format
-msgid "unusable instruction sheet: '%s'"
-msgstr "Unbenutzbares Instruktionsblatt: '%s'"
-
-#: sequencer.c:2492
-msgid "no commits parsed."
-msgstr "Keine Commits geparst."
+msgid "unknown action: %d"
+msgstr "Unbekannte Aktion: %d"
 
-#: sequencer.c:2503
-msgid "cannot cherry-pick during a revert."
-msgstr "Kann Cherry-Pick nicht während eines Reverts ausführen."
+#: sequencer.c:418
+msgid ""
+"after resolving the conflicts, mark the corrected paths\n"
+"with 'git add <paths>' or 'git rm <paths>'"
+msgstr ""
+"nach Auflösung der Konflikte markieren Sie die korrigierten Pfade\n"
+"mit 'git add <Pfade>' oder 'git rm <Pfade>'"
 
-#: sequencer.c:2505
-msgid "cannot revert during a cherry-pick."
-msgstr "Kann Revert nicht während eines Cherry-Picks ausführen."
+#: sequencer.c:421
+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 ""
+"nach Auflösung der Konflikte markieren Sie die korrigierten Pfade\n"
+"mit 'git add <Pfade>' oder 'git rm <Pfade>' und tragen Sie das Ergebnis mit\n"
+"'git commit' ein"
 
-#: sequencer.c:2583
+#: sequencer.c:434 sequencer.c:3070
 #, c-format
-msgid "invalid value for %s: %s"
-msgstr "Ungültiger Wert für %s: %s"
-
-#: sequencer.c:2690
-msgid "unusable squash-onto"
-msgstr "Unbenutzbares squash-onto."
+msgid "could not lock '%s'"
+msgstr "Konnte '%s' nicht sperren"
 
-#: sequencer.c:2710
+#: sequencer.c:436 sequencer.c:2869 sequencer.c:3074 sequencer.c:3088
+#: sequencer.c:3345 sequencer.c:5334 strbuf.c:1168 wrapper.c:631
 #, c-format
-msgid "malformed options sheet: '%s'"
-msgstr "Fehlerhaftes Optionsblatt: '%s'"
+msgid "could not write to '%s'"
+msgstr "Konnte nicht nach '%s' schreiben."
 
-#: sequencer.c:2803 sequencer.c:4636
-msgid "empty commit set passed"
-msgstr "leere Menge von Commits übergeben"
+#: sequencer.c:441
+#, c-format
+msgid "could not write eol to '%s'"
+msgstr "Konnte EOL nicht nach '%s' schreiben."
 
-#: sequencer.c:2820
-msgid "revert is already in progress"
-msgstr "\"revert\" ist bereits im Gange"
+#: sequencer.c:446 sequencer.c:2874 sequencer.c:3076 sequencer.c:3090
+#: sequencer.c:3353
+#, c-format
+msgid "failed to finalize '%s'"
+msgstr "Fehler beim Fertigstellen von '%s'."
 
-#: sequencer.c:2822
+#: sequencer.c:485
 #, c-format
-msgid "try \"git revert (--continue | %s--abort | --quit)\""
-msgstr "Versuchen Sie \"git revert (--continue | %s--abort | --quit)\""
+msgid "your local changes would be overwritten by %s."
+msgstr "Ihre lokalen Änderungen würden durch den %s überschrieben werden."
 
-#: sequencer.c:2825
-msgid "cherry-pick is already in progress"
-msgstr "\"cherry-pick\" wird bereits durchgeführt"
+#: sequencer.c:489
+msgid "commit your changes or stash them to proceed."
+msgstr ""
+"Committen Sie Ihre Änderungen oder benutzen Sie \"stash\", um fortzufahren."
 
-#: sequencer.c:2827
+#: sequencer.c:521
 #, c-format
-msgid "try \"git cherry-pick (--continue | %s--abort | --quit)\""
-msgstr "Versuchen Sie \"git cherry-pick (--continue | %s--abort | --quit)\""
+msgid "%s: fast-forward"
+msgstr "%s: Vorspulen"
 
-#: sequencer.c:2841
+#: sequencer.c:560 builtin/tag.c:598
 #, c-format
-msgid "could not create sequencer directory '%s'"
-msgstr "Konnte \"sequencer\"-Verzeichnis '%s' nicht erstellen."
-
-#: sequencer.c:2856
-msgid "could not lock HEAD"
-msgstr "Konnte HEAD nicht sperren"
+msgid "Invalid cleanup mode %s"
+msgstr "Ungültiger \"cleanup\" Modus %s"
 
-#: sequencer.c:2916 sequencer.c:4371
-msgid "no cherry-pick or revert in progress"
-msgstr "kein \"cherry-pick\" oder \"revert\" im Gange"
+#. TRANSLATORS: %s will be "revert", "cherry-pick" or
+#. "rebase".
+#.
+#: sequencer.c:670
+#, c-format
+msgid "%s: Unable to write new index file"
+msgstr "%s: Konnte neue Index-Datei nicht schreiben"
 
-#: sequencer.c:2918 sequencer.c:2929
-msgid "cannot resolve HEAD"
-msgstr "kann HEAD nicht auflösen"
+#: sequencer.c:684
+msgid "unable to update cache tree"
+msgstr "Konnte Cache-Verzeichnis nicht aktualisieren."
 
-#: sequencer.c:2920 sequencer.c:2964
-msgid "cannot abort from a branch yet to be born"
-msgstr "kann nicht abbrechen: bin auf einem Branch, der noch nicht geboren ist"
+#: sequencer.c:698
+msgid "could not resolve HEAD commit"
+msgstr "Konnte HEAD-Commit nicht auflösen."
 
-#: sequencer.c:2950 builtin/grep.c:756
+#: sequencer.c:778
 #, c-format
-msgid "cannot open '%s'"
-msgstr "kann '%s' nicht öffnen"
+msgid "no key present in '%.*s'"
+msgstr "Kein Schlüssel in '%.*s' vorhanden."
 
-#: sequencer.c:2952
+#: sequencer.c:789
 #, c-format
-msgid "cannot read '%s': %s"
-msgstr "Kann '%s' nicht lesen: %s"
-
-#: sequencer.c:2953
-msgid "unexpected end of file"
-msgstr "Unerwartetes Dateiende"
+msgid "unable to dequote value of '%s'"
+msgstr "Konnte Anführungszeichen von '%s' nicht entfernen."
 
-#: sequencer.c:2959
+#: sequencer.c:826 wrapper.c:201 wrapper.c:371 builtin/am.c:710
+#: builtin/am.c:802 builtin/merge.c:1136 builtin/rebase.c:910
 #, c-format
-msgid "stored pre-cherry-pick HEAD file '%s' is corrupt"
-msgstr "gespeicherte \"pre-cherry-pick\" HEAD Datei '%s' ist beschädigt"
-
-#: sequencer.c:2970
-msgid "You seem to have moved HEAD. Not rewinding, check your HEAD!"
-msgstr ""
-"Sie scheinen HEAD verändert zu haben. Keine Rückspulung, prüfen Sie HEAD."
-
-#: sequencer.c:3011
-msgid "no revert in progress"
-msgstr "Kein Revert im Gange"
+msgid "could not open '%s' for reading"
+msgstr "Konnte '%s' nicht zum Lesen öffnen."
 
-#: sequencer.c:3020
-msgid "no cherry-pick in progress"
-msgstr "kein \"cherry-pick\" im Gange"
+#: sequencer.c:836
+msgid "'GIT_AUTHOR_NAME' already given"
+msgstr "'GIT_AUTHOR_NAME' bereits angegeben."
 
-#: sequencer.c:3030
-msgid "failed to skip the commit"
-msgstr "Überspringen des Commits fehlgeschlagen"
+#: sequencer.c:841
+msgid "'GIT_AUTHOR_EMAIL' already given"
+msgstr "'GIT_AUTHOR_EMAIL' bereits angegeben."
 
-#: sequencer.c:3037
-msgid "there is nothing to skip"
-msgstr "Nichts zum Überspringen vorhanden"
+#: sequencer.c:846
+msgid "'GIT_AUTHOR_DATE' already given"
+msgstr "'GIT_AUTHOR_DATE' bereits angegeben."
 
-#: sequencer.c:3040
+#: sequencer.c:850
 #, c-format
-msgid ""
-"have you committed already?\n"
-"try \"git %s --continue\""
-msgstr ""
-"Haben Sie bereits committet?\n"
-"Versuchen Sie \"git %s --continue\""
+msgid "unknown variable '%s'"
+msgstr "Unbekannte Variable '%s'"
 
-#: sequencer.c:3202 sequencer.c:4263
-msgid "cannot read HEAD"
-msgstr "Kann HEAD nicht lesen"
+#: sequencer.c:855
+msgid "missing 'GIT_AUTHOR_NAME'"
+msgstr "'GIT_AUTHOR_NAME' fehlt."
 
-#: sequencer.c:3219
-#, c-format
-msgid "unable to copy '%s' to '%s'"
-msgstr "Konnte '%s' nicht nach '%s' kopieren."
+#: sequencer.c:857
+msgid "missing 'GIT_AUTHOR_EMAIL'"
+msgstr "'GIT_AUTHOR_EMAIL' fehlt."
 
-#: sequencer.c:3227
+#: sequencer.c:859
+msgid "missing 'GIT_AUTHOR_DATE'"
+msgstr "'GIT_AUTHOR_DATE' fehlt."
+
+#: sequencer.c:924
 #, c-format
 msgid ""
-"You can amend the commit now, with\n"
+"you have staged changes in your working tree\n"
+"If these changes are meant to be squashed into the previous commit, run:\n"
 "\n"
 "  git commit --amend %s\n"
 "\n"
-"Once you are satisfied with your changes, run\n"
+"If they are meant to go into a new commit, run:\n"
+"\n"
+"  git commit %s\n"
+"\n"
+"In both cases, once you're done, continue with:\n"
 "\n"
 "  git rebase --continue\n"
 msgstr ""
-"Sie können den Commit nun nachbessern mit:\n"
+"Es befinden sich zum Commit vorgemerkte Änderungen in Ihrem "
+"Arbeitsverzeichnis.\n"
+"Wenn diese Änderungen in den vorherigen Commit aufgenommen werden sollen,\n"
+"führen Sie aus:\n"
 "\n"
 "  git commit --amend %s\n"
 "\n"
-"Sobald Sie mit Ihren Änderungen zufrieden sind, führen Sie aus:\n"
+"Wenn daraus ein neuer Commit erzeugt werden soll, führen Sie aus:\n"
+"\n"
+"  git commit %s\n"
+"\n"
+"Im Anschluss führen Sie zum Fortfahren aus:\n"
 "\n"
 "  git rebase --continue\n"
 
-#: sequencer.c:3237
-#, c-format
-msgid "Could not apply %s... %.*s"
-msgstr "Konnte %s... (%.*s) nicht anwenden"
-
-#: sequencer.c:3244
-#, c-format
-msgid "Could not merge %.*s"
-msgstr "Konnte \"%.*s\" nicht zusammenführen."
-
-#: sequencer.c:3258 sequencer.c:3262 builtin/difftool.c:640
-#, c-format
-msgid "could not copy '%s' to '%s'"
-msgstr "Konnte '%s' nicht nach '%s' kopieren."
-
-#: sequencer.c:3274
-#, c-format
-msgid "Executing: %s\n"
-msgstr "Führe aus: %s\n"
+#: sequencer.c:1211
+msgid "'prepare-commit-msg' hook failed"
+msgstr "'prepare-commit-msg' Hook fehlgeschlagen."
 
-#: sequencer.c:3289
-#, c-format
+#: sequencer.c:1217
 msgid ""
-"execution failed: %s\n"
-"%sYou can fix the problem, and then run\n"
+"Your name and email address were configured automatically based\n"
+"on your username and hostname. Please check that they are accurate.\n"
+"You can suppress this message by setting them explicitly. Run the\n"
+"following command and follow the instructions in your editor to edit\n"
+"your configuration file:\n"
 "\n"
-"  git rebase --continue\n"
+"    git config --global --edit\n"
 "\n"
+"After doing this, you may fix the identity used for this commit with:\n"
+"\n"
+"    git commit --amend --reset-author\n"
 msgstr ""
-"Ausführung fehlgeschlagen: %s\n"
-"%sSie können das Problem beheben, und dann\n"
+"Ihr Name und E-Mail Adresse wurden automatisch auf Basis\n"
+"Ihres Benutzer- und Rechnernamens konfiguriert. Bitte prüfen Sie, dass\n"
+"diese zutreffend sind. Sie können diese Meldung unterdrücken, indem Sie\n"
+"diese explizit setzen. Führen Sie dazu den folgenden Befehl aus und folgen\n"
+"Sie den Anweisungen in Ihrem Editor, um die Konfigurationsdatei zu "
+"bearbeiten:\n"
 "\n"
-"\tgit rebase --continue\n"
+"    git config --global --edit\n"
 "\n"
-"ausführen.\n"
-
-#: sequencer.c:3295
-msgid "and made changes to the index and/or the working tree\n"
-msgstr "Der Index und/oder das Arbeitsverzeichnis wurde geändert.\n"
+"Nachdem Sie das getan haben, können Sie Ihre Identität für diesen Commit\n"
+"ändern mit:\n"
+"\n"
+"    git commit --amend --reset-author\n"
 
-#: sequencer.c:3301
-#, c-format
+#: sequencer.c:1230
 msgid ""
-"execution succeeded: %s\n"
-"but left changes to the index and/or the working tree\n"
-"Commit or stash your changes, and then run\n"
+"Your name and email address were configured automatically based\n"
+"on your username and hostname. Please check that they are accurate.\n"
+"You can suppress this message by setting them explicitly:\n"
 "\n"
-"  git rebase --continue\n"
+"    git config --global user.name \"Your Name\"\n"
+"    git config --global user.email you@example.com\n"
+"\n"
+"After doing this, you may fix the identity used for this commit with:\n"
 "\n"
+"    git commit --amend --reset-author\n"
 msgstr ""
-"Ausführung erfolgreich: %s\n"
-"Aber Änderungen in Index oder Arbeitsverzeichnis verblieben.\n"
-"Committen Sie Ihre Änderungen oder benutzen Sie \"stash\".\n"
-"Führen Sie dann aus:\n"
+"Ihr Name und E-Mail Adresse wurden automatisch auf Basis\n"
+"Ihres Benutzer- und Rechnernamens konfiguriert. Bitte prüfen Sie, dass\n"
+"diese zutreffend sind. Sie können diese Meldung unterdrücken, indem Sie\n"
+"diese explizit setzen:\n"
 "\n"
-"  git rebase --continue\n"
+"    git config --global user.name \"Ihr Name\"\n"
+"    git config --global user.email ihre@emailadresse.de\n"
 "\n"
+"Nachdem Sie das getan haben, können Sie Ihre Identität für diesen Commit "
+"ändern:\n"
+"\n"
+"    git commit --amend --reset-author\n"
 
-#: sequencer.c:3362
-#, c-format
-msgid "illegal label name: '%.*s'"
-msgstr "Unerlaubter Beschriftungsname: '%.*s'"
-
-#: sequencer.c:3416
-msgid "writing fake root commit"
-msgstr "unechten Root-Commit schreiben"
-
-#: sequencer.c:3421
-msgid "writing squash-onto"
-msgstr "squash-onto schreiben"
-
-#: sequencer.c:3505
-#, c-format
-msgid "could not resolve '%s'"
-msgstr "Konnte '%s' nicht auflösen."
-
-#: sequencer.c:3538
-msgid "cannot merge without a current revision"
-msgstr "Kann nicht ohne einen aktuellen Commit mergen."
-
-#: sequencer.c:3560
-#, c-format
-msgid "unable to parse '%.*s'"
-msgstr "Konnte '%.*s' nicht parsen."
-
-#: sequencer.c:3569
-#, c-format
-msgid "nothing to merge: '%.*s'"
-msgstr "Nichts zum Zusammenführen: '%.*s'"
-
-#: sequencer.c:3581
-msgid "octopus merge cannot be executed on top of a [new root]"
-msgstr ""
-"Oktopus-Merge kann nicht auf Basis von [neuem Root-Commit] ausgeführt werden."
+#: sequencer.c:1272
+msgid "couldn't look up newly created commit"
+msgstr "Konnte neu erstellten Commit nicht nachschlagen."
 
-#: sequencer.c:3597
-#, c-format
-msgid "could not get commit message of '%s'"
-msgstr "Konnte keine Commit-Beschreibung von '%s' bekommen."
+#: sequencer.c:1274
+msgid "could not parse newly created commit"
+msgstr "Konnte neu erstellten Commit nicht analysieren."
 
-#: sequencer.c:3780
-#, c-format
-msgid "could not even attempt to merge '%.*s'"
-msgstr "Konnte nicht einmal versuchen '%.*s' zu mergen."
+#: sequencer.c:1320
+msgid "unable to resolve HEAD after creating commit"
+msgstr "Konnte HEAD nicht auflösen, nachdem der Commit erstellt wurde."
 
-#: sequencer.c:3796
-msgid "merge: Unable to write new index file"
-msgstr "merge: Konnte neue Index-Datei nicht schreiben."
+#: sequencer.c:1322
+msgid "detached HEAD"
+msgstr "losgelöster HEAD"
 
-#: sequencer.c:3870
-msgid "Cannot autostash"
-msgstr "Kann automatischen Stash nicht erzeugen."
+#: sequencer.c:1326
+msgid " (root-commit)"
+msgstr " (Root-Commit)"
 
-#: sequencer.c:3873
-#, c-format
-msgid "Unexpected stash response: '%s'"
-msgstr "Unerwartete 'stash'-Antwort: '%s'"
+#: sequencer.c:1347
+msgid "could not parse HEAD"
+msgstr "Konnte HEAD nicht parsen."
 
-#: sequencer.c:3879
+#: sequencer.c:1349
 #, c-format
-msgid "Could not create directory for '%s'"
-msgstr "Konnte Verzeichnis für '%s' nicht erstellen."
+msgid "HEAD %s is not a commit!"
+msgstr "HEAD %s ist kein Commit!"
 
-#: sequencer.c:3882
-#, c-format
-msgid "Created autostash: %s\n"
-msgstr "Automatischen Stash erzeugt: %s\n"
+#: sequencer.c:1353 sequencer.c:1431 builtin/commit.c:1577
+msgid "could not parse HEAD commit"
+msgstr "Konnte Commit von HEAD nicht analysieren."
 
-#: sequencer.c:3886
-msgid "could not reset --hard"
-msgstr "Konnte 'reset --hard' nicht ausführen."
+#: sequencer.c:1409 sequencer.c:2108
+msgid "unable to parse commit author"
+msgstr "Konnte Commit-Autor nicht parsen."
 
-#: sequencer.c:3911
-#, c-format
-msgid "Applied autostash.\n"
-msgstr "Automatischen Stash angewendet.\n"
+#: sequencer.c:1420 builtin/am.c:1566 builtin/merge.c:702
+msgid "git write-tree failed to write a tree"
+msgstr "\"git write-tree\" schlug beim Schreiben eines \"Tree\"-Objektes fehl"
 
-#: sequencer.c:3923
+#: sequencer.c:1453 sequencer.c:1573
 #, c-format
-msgid "cannot store %s"
-msgstr "kann %s nicht speichern"
+msgid "unable to read commit message from '%s'"
+msgstr "Konnte Commit-Beschreibung von '%s' nicht lesen."
 
-#: sequencer.c:3926
+#: sequencer.c:1484 sequencer.c:1516
 #, c-format
-msgid ""
-"%s\n"
-"Your changes are safe in the stash.\n"
-"You can run \"git stash pop\" or \"git stash drop\" at any time.\n"
-msgstr ""
-"%s\n"
-"Ihre Änderungen sind im Stash sicher.\n"
-"Sie können jederzeit \"git stash pop\" oder \"git stash drop\" ausführen.\n"
-
-#: sequencer.c:3931
-msgid "Applying autostash resulted in conflicts."
-msgstr "Beim Anwenden des automatischen Stash traten Konflikte auf."
-
-#: sequencer.c:3932
-msgid "Autostash exists; creating a new stash entry."
-msgstr "Automatischer Stash existiert; ein neuer Stash-Eintrag wird erstellt."
+msgid "invalid author identity '%s'"
+msgstr "ungültige Autor-Identität '%s'"
 
-#: sequencer.c:4025 git-rebase--preserve-merges.sh:769
-msgid "could not detach HEAD"
-msgstr "Konnte HEAD nicht loslösen"
+#: sequencer.c:1490
+msgid "corrupt author: missing date information"
+msgstr "unbrauchbarer Autor: Datumsinformationen fehlen"
 
-#: sequencer.c:4040
-#, c-format
-msgid "Stopped at HEAD\n"
-msgstr "Angehalten bei HEAD\n"
+#: sequencer.c:1529 builtin/am.c:1593 builtin/commit.c:1678 builtin/merge.c:905
+#: builtin/merge.c:930 t/helper/test-fast-rebase.c:78
+msgid "failed to write commit object"
+msgstr "Fehler beim Schreiben des Commit-Objektes."
 
-#: sequencer.c:4042
+#: sequencer.c:1556 sequencer.c:4291 t/helper/test-fast-rebase.c:198
 #, c-format
-msgid "Stopped at %s\n"
-msgstr "Angehalten bei %s\n"
+msgid "could not update %s"
+msgstr "Konnte %s nicht aktualisieren."
 
-#: sequencer.c:4050
+#: sequencer.c:1605
 #, 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 ""
-"Konnte TODO-Befehl nicht ausführen\n"
-"\n"
-"    %.*s\n"
-"Dieser wurde neu angesetzt; Um den Befehl zu bearbeiten, bevor fortgesetzt "
-"wird,\n"
-"bearbeiten Sie bitte zuerst die TODO-Liste:\n"
-"\n"
-"    git rebase --edit-todo\n"
-"    git rebase --continue\n"
+msgid "could not parse commit %s"
+msgstr "Konnte Commit %s nicht parsen."
 
-#: sequencer.c:4096
+#: sequencer.c:1610
 #, c-format
-msgid "Rebasing (%d/%d)%s"
-msgstr "Rebase (%d/%d)%s"
+msgid "could not parse parent commit %s"
+msgstr "Konnte Eltern-Commit %s nicht parsen."
 
-#: sequencer.c:4141
+#: sequencer.c:1693 sequencer.c:1804
 #, c-format
-msgid "Stopped at %s...  %.*s\n"
-msgstr "Angehalten bei %s... %.*s\n"
+msgid "unknown command: %d"
+msgstr "Unbekannter Befehl: %d"
 
-#: sequencer.c:4212
+#: sequencer.c:1751 sequencer.c:1776
 #, c-format
-msgid "unknown command %d"
-msgstr "Unbekannter Befehl %d"
+msgid "This is a combination of %d commits."
+msgstr "Das ist eine Kombination aus %d Commits."
 
-#: sequencer.c:4271
-msgid "could not read orig-head"
-msgstr "Konnte orig-head nicht lesen."
+#: sequencer.c:1761
+msgid "need a HEAD to fixup"
+msgstr "benötige HEAD für fixup"
 
-#: sequencer.c:4276
-msgid "could not read 'onto'"
-msgstr "Konnte 'onto' nicht lesen."
+#: sequencer.c:1763 sequencer.c:3380
+msgid "could not read HEAD"
+msgstr "Konnte HEAD nicht lesen"
 
-#: sequencer.c:4290
-#, c-format
-msgid "could not update HEAD to %s"
-msgstr "Konnte HEAD nicht auf %s aktualisieren."
+#: sequencer.c:1765
+msgid "could not read HEAD's commit message"
+msgstr "Konnte Commit-Beschreibung von HEAD nicht lesen"
 
-#: sequencer.c:4350
+#: sequencer.c:1771
 #, c-format
-msgid "Successfully rebased and updated %s.\n"
-msgstr "Erfolgreich Rebase ausgeführt und %s aktualisiert.\n"
+msgid "cannot write '%s'"
+msgstr "kann '%s' nicht schreiben"
 
-#: sequencer.c:4383
-msgid "cannot rebase: You have unstaged changes."
-msgstr ""
-"Rebase nicht möglich: Sie haben Änderungen, die nicht zum Commit\n"
-"vorgemerkt sind."
+#: sequencer.c:1778 git-rebase--preserve-merges.sh:486
+msgid "This is the 1st commit message:"
+msgstr "Das ist die erste Commit-Beschreibung:"
 
-#: sequencer.c:4392
-msgid "cannot amend non-existing commit"
-msgstr "Kann nicht existierenden Commit nicht nachbessern."
+#: sequencer.c:1786
+#, c-format
+msgid "could not read commit message of %s"
+msgstr "Konnte Commit-Beschreibung von %s nicht lesen."
 
-#: sequencer.c:4394
+#: sequencer.c:1793
 #, c-format
-msgid "invalid file: '%s'"
-msgstr "Ungültige Datei: '%s'"
+msgid "This is the commit message #%d:"
+msgstr "Das ist Commit-Beschreibung #%d:"
 
-#: sequencer.c:4396
+#: sequencer.c:1799
 #, c-format
-msgid "invalid contents: '%s'"
-msgstr "Ungültige Inhalte: '%s'"
+msgid "The commit message #%d will be skipped:"
+msgstr "Die Commit-Beschreibung #%d wird ausgelassen:"
 
-#: sequencer.c:4399
-msgid ""
-"\n"
-"You have uncommitted changes in your working tree. Please, commit them\n"
-"first and then run 'git rebase --continue' again."
-msgstr ""
-"\n"
-"Sie haben nicht committete Änderungen in Ihrem Arbeitsverzeichnis. Bitte\n"
-"committen Sie diese zuerst und führen Sie dann 'git rebase --continue'\n"
-"erneut aus."
+#: sequencer.c:1887
+msgid "your index file is unmerged."
+msgstr "Ihre Index-Datei ist nicht zusammengeführt."
 
-#: sequencer.c:4435 sequencer.c:4474
-#, c-format
-msgid "could not write file: '%s'"
-msgstr "Konnte Datei nicht schreiben: '%s'"
+#: sequencer.c:1894
+msgid "cannot fixup root commit"
+msgstr "kann fixup nicht auf Root-Commit anwenden"
 
-#: sequencer.c:4490
-msgid "could not remove CHERRY_PICK_HEAD"
-msgstr "Konnte CHERRY_PICK_HEAD nicht löschen."
+#: sequencer.c:1913
+#, c-format
+msgid "commit %s is a merge but no -m option was given."
+msgstr "Commit %s ist ein Merge, aber die Option -m wurde nicht angegeben."
 
-#: sequencer.c:4497
-msgid "could not commit staged changes."
-msgstr "Konnte Änderungen aus der Staging-Area nicht committen."
+#: sequencer.c:1921 sequencer.c:1929
+#, c-format
+msgid "commit %s does not have parent %d"
+msgstr "Commit %s hat keinen Eltern-Commit %d"
 
-#: sequencer.c:4613
+#: sequencer.c:1935
 #, c-format
-msgid "%s: can't cherry-pick a %s"
-msgstr "%s: %s kann nicht in \"cherry-pick\" benutzt werden"
+msgid "cannot get commit message for %s"
+msgstr "Kann keine Commit-Beschreibung für %s bekommen."
 
-#: sequencer.c:4617
+#. TRANSLATORS: The first %s will be a "todo" command like
+#. "revert" or "pick", the second %s a SHA1.
+#: sequencer.c:1954
 #, c-format
-msgid "%s: bad revision"
-msgstr "%s: ungültiger Commit"
+msgid "%s: cannot parse parent commit %s"
+msgstr "%s: kann Eltern-Commit %s nicht parsen"
 
-#: sequencer.c:4652
-msgid "can't revert as initial commit"
-msgstr "Kann nicht als allerersten Commit einen Revert ausführen."
+#: sequencer.c:2019
+#, c-format
+msgid "could not rename '%s' to '%s'"
+msgstr "Konnte '%s' nicht zu '%s' umbenennen."
 
-#: sequencer.c:5129
-msgid "make_script: unhandled options"
-msgstr "make_script: unbehandelte Optionen"
+#: sequencer.c:2079
+#, c-format
+msgid "could not revert %s... %s"
+msgstr "Konnte \"revert\" nicht auf %s... (%s) ausführen"
 
-#: sequencer.c:5132
-msgid "make_script: error preparing revisions"
-msgstr "make_script: Fehler beim Vorbereiten der Commits"
+#: sequencer.c:2080
+#, c-format
+msgid "could not apply %s... %s"
+msgstr "Konnte %s... (%s) nicht anwenden"
 
-#: sequencer.c:5374 sequencer.c:5391
-msgid "nothing to do"
-msgstr "Nichts zu tun."
+#: sequencer.c:2100
+#, c-format
+msgid "dropping %s %s -- patch contents already upstream\n"
+msgstr "Weglassen von %s %s -- Patch-Inhalte sind bereits im Upstream-Branch\n"
 
-#: sequencer.c:5410
-msgid "could not skip unnecessary pick commands"
-msgstr "Konnte unnötige \"pick\"-Befehle nicht auslassen."
+#: sequencer.c:2158
+#, c-format
+msgid "git %s: failed to read the index"
+msgstr "git %s: Fehler beim Lesen des Index"
 
-#: sequencer.c:5504
-msgid "the script was already rearranged."
-msgstr "Das Script wurde bereits umgeordnet."
+#: sequencer.c:2165
+#, c-format
+msgid "git %s: failed to refresh the index"
+msgstr "git %s: Fehler beim Aktualisieren des Index"
 
-#: setup.c:133
+#: sequencer.c:2242
 #, c-format
-msgid "'%s' is outside repository at '%s'"
-msgstr "'%s' liegt außerhalb des Repositories von '%s'"
+msgid "%s does not accept arguments: '%s'"
+msgstr "%s akzeptiert keine Argumente: '%s'"
 
-#: setup.c:185
+#: sequencer.c:2251
 #, 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 ""
-"%s: kein solcher Pfad im Arbeitsverzeichnis.\n"
-"Benutzen Sie 'git <Befehl> -- <Pfad>...' zur Angabe von Pfaden, die lokal\n"
-"nicht existieren."
+msgid "missing arguments for %s"
+msgstr "Fehlende Argumente für %s."
 
-#: setup.c:198
+#: sequencer.c:2282
 #, c-format
-msgid ""
-"ambiguous argument '%s': unknown revision or path not in the working tree.\n"
-"Use '--' to separate paths from revisions, like this:\n"
-"'git <command> [<revision>...] -- [<file>...]'"
-msgstr ""
-"mehrdeutiges Argument '%s': unbekannter Commit oder Pfad existiert nicht\n"
-"im Arbeitsverzeichnis\n"
-"Benutzen Sie '--', um Pfade und Commits zu trennen, ähnlich wie:\n"
-"'git <Befehl> [<Commit>...] -- [<Datei>...]'"
+msgid "could not parse '%s'"
+msgstr "Konnte '%s' nicht parsen."
 
-#: setup.c:264
+#: sequencer.c:2343
 #, c-format
-msgid "option '%s' must come before non-option arguments"
-msgstr ""
-"Die Option '%s' muss vor den Argumenten kommen, die keine Optionen sind."
+msgid "invalid line %d: %.*s"
+msgstr "Ungültige Zeile %d: %.*s"
 
-#: setup.c:283
+#: sequencer.c:2354
 #, c-format
-msgid ""
-"ambiguous argument '%s': both revision and filename\n"
-"Use '--' to separate paths from revisions, like this:\n"
-"'git <command> [<revision>...] -- [<file>...]'"
-msgstr ""
-"mehrdeutiges Argument '%s': sowohl Commit als auch Dateiname\n"
-"Benutzen Sie '--', um Pfade und Commits zu trennen, ähnlich wie:\n"
-"'git <Befehl> [<Commit>...] -- [<Datei>...]'"
+msgid "cannot '%s' without a previous commit"
+msgstr "Kann '%s' nicht ohne vorherigen Commit ausführen"
 
-#: setup.c:419
-msgid "unable to set up work tree using invalid config"
-msgstr ""
-"Konnte Arbeitsverzeichnis mit ungültiger Konfiguration nicht einrichten."
+#: sequencer.c:2440
+msgid "cancelling a cherry picking in progress"
+msgstr "Abbrechen eines laufenden \"cherry-pick\""
 
-#: setup.c:423
-msgid "this operation must be run in a work tree"
-msgstr "Diese Operation muss in einem Arbeitsverzeichnis ausgeführt werden."
+#: sequencer.c:2449
+msgid "cancelling a revert in progress"
+msgstr "Abbrechen eines laufenden \"revert\""
+
+#: sequencer.c:2493
+msgid "please fix this using 'git rebase --edit-todo'."
+msgstr ""
+"Bitte beheben Sie dieses, indem Sie 'git rebase --edit-todo' ausführen."
 
-#: setup.c:661
+#: sequencer.c:2495
 #, c-format
-msgid "Expected git repo version <= %d, found %d"
-msgstr "Erwartete Git-Repository-Version <= %d, %d gefunden"
+msgid "unusable instruction sheet: '%s'"
+msgstr "Unbenutzbares Instruktionsblatt: '%s'"
 
-#: setup.c:669
-msgid "unknown repository extensions found:"
-msgstr "Unbekannte Repository-Erweiterungen gefunden:"
+#: sequencer.c:2500
+msgid "no commits parsed."
+msgstr "Keine Commits geparst."
 
-#: setup.c:681
-msgid "repo version is 0, but v1-only extensions found:"
-msgstr "Repository-Version ist 0, aber Erweiterungen nur für v1 gefunden:"
+#: sequencer.c:2511
+msgid "cannot cherry-pick during a revert."
+msgstr "Kann Cherry-Pick nicht während eines Reverts ausführen."
 
-#: setup.c:700
-#, c-format
-msgid "error opening '%s'"
-msgstr "Fehler beim Öffnen von '%s'."
+#: sequencer.c:2513
+msgid "cannot revert during a cherry-pick."
+msgstr "Kann Revert nicht während eines Cherry-Picks ausführen."
 
-#: setup.c:702
+#: sequencer.c:2591
 #, c-format
-msgid "too large to be a .git file: '%s'"
-msgstr "Zu groß, um eine .git-Datei zu sein: '%s'"
+msgid "invalid value for %s: %s"
+msgstr "Ungültiger Wert für %s: %s"
 
-#: setup.c:704
-#, c-format
-msgid "error reading %s"
-msgstr "Fehler beim Lesen von '%s'."
+#: sequencer.c:2698
+msgid "unusable squash-onto"
+msgstr "Unbenutzbares squash-onto."
 
-#: setup.c:706
+#: sequencer.c:2718
 #, c-format
-msgid "invalid gitfile format: %s"
-msgstr "Ungültiges gitfile-Format: %s"
+msgid "malformed options sheet: '%s'"
+msgstr "Fehlerhaftes Optionsblatt: '%s'"
 
-#: setup.c:708
+#: sequencer.c:2811 sequencer.c:4644
+msgid "empty commit set passed"
+msgstr "leere Menge von Commits übergeben"
+
+#: sequencer.c:2828
+msgid "revert is already in progress"
+msgstr "\"revert\" ist bereits im Gange"
+
+#: sequencer.c:2830
 #, c-format
-msgid "no path in gitfile: %s"
-msgstr "Kein Pfad in gitfile: %s"
+msgid "try \"git revert (--continue | %s--abort | --quit)\""
+msgstr "Versuchen Sie \"git revert (--continue | %s--abort | --quit)\""
 
-#: setup.c:710
+#: sequencer.c:2833
+msgid "cherry-pick is already in progress"
+msgstr "\"cherry-pick\" wird bereits durchgeführt"
+
+#: sequencer.c:2835
 #, c-format
-msgid "not a git repository: %s"
-msgstr "Kein Git-Repository: %s"
+msgid "try \"git cherry-pick (--continue | %s--abort | --quit)\""
+msgstr "Versuchen Sie \"git cherry-pick (--continue | %s--abort | --quit)\""
 
-#: setup.c:812
+#: sequencer.c:2849
 #, c-format
-msgid "'$%s' too big"
-msgstr "'$%s' zu groß"
+msgid "could not create sequencer directory '%s'"
+msgstr "Konnte \"sequencer\"-Verzeichnis '%s' nicht erstellen."
 
-#: setup.c:826
+#: sequencer.c:2864
+msgid "could not lock HEAD"
+msgstr "Konnte HEAD nicht sperren"
+
+#: sequencer.c:2924 sequencer.c:4379
+msgid "no cherry-pick or revert in progress"
+msgstr "kein \"cherry-pick\" oder \"revert\" im Gange"
+
+#: sequencer.c:2926 sequencer.c:2937
+msgid "cannot resolve HEAD"
+msgstr "kann HEAD nicht auflösen"
+
+#: sequencer.c:2928 sequencer.c:2972
+msgid "cannot abort from a branch yet to be born"
+msgstr "kann nicht abbrechen: bin auf einem Branch, der noch nicht geboren ist"
+
+#: sequencer.c:2958 builtin/grep.c:757
 #, c-format
-msgid "not a git repository: '%s'"
-msgstr "Kein Git-Repository: '%s'"
+msgid "cannot open '%s'"
+msgstr "kann '%s' nicht öffnen"
 
-#: setup.c:855 setup.c:857 setup.c:888
+#: sequencer.c:2960
 #, c-format
-msgid "cannot chdir to '%s'"
-msgstr "Kann nicht in Verzeichnis '%s' wechseln."
+msgid "cannot read '%s': %s"
+msgstr "Kann '%s' nicht lesen: %s"
 
-#: setup.c:860 setup.c:916 setup.c:926 setup.c:965 setup.c:973
-msgid "cannot come back to cwd"
-msgstr "Kann nicht zum aktuellen Arbeitsverzeichnis zurückwechseln."
+#: sequencer.c:2961
+msgid "unexpected end of file"
+msgstr "Unerwartetes Dateiende"
 
-#: setup.c:987
+#: sequencer.c:2967
 #, c-format
-msgid "failed to stat '%*s%s%s'"
-msgstr "Konnte '%*s%s%s' nicht lesen."
+msgid "stored pre-cherry-pick HEAD file '%s' is corrupt"
+msgstr "gespeicherte \"pre-cherry-pick\" HEAD Datei '%s' ist beschädigt"
 
-#: setup.c:1225
-msgid "Unable to read current working directory"
-msgstr "Konnte aktuelles Arbeitsverzeichnis nicht lesen."
+#: sequencer.c:2978
+msgid "You seem to have moved HEAD. Not rewinding, check your HEAD!"
+msgstr ""
+"Sie scheinen HEAD verändert zu haben. Keine Rückspulung, prüfen Sie HEAD."
 
-#: setup.c:1234 setup.c:1240
-#, c-format
-msgid "cannot change to '%s'"
-msgstr "Kann nicht nach '%s' wechseln."
+#: sequencer.c:3019
+msgid "no revert in progress"
+msgstr "Kein Revert im Gange"
 
-#: setup.c:1245
-#, c-format
-msgid "not a git repository (or any of the parent directories): %s"
-msgstr "Kein Git-Repository (oder irgendeines der Elternverzeichnisse): %s"
+#: sequencer.c:3028
+msgid "no cherry-pick in progress"
+msgstr "kein \"cherry-pick\" im Gange"
 
-#: setup.c:1251
+#: sequencer.c:3038
+msgid "failed to skip the commit"
+msgstr "Überspringen des Commits fehlgeschlagen"
+
+#: sequencer.c:3045
+msgid "there is nothing to skip"
+msgstr "Nichts zum Überspringen vorhanden"
+
+#: sequencer.c:3048
 #, 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)."
+"have you committed already?\n"
+"try \"git %s --continue\""
 msgstr ""
-"Kein Git-Repository (oder irgendein Elternverzeichnis bis zum Einhängepunkt "
-"%s)\n"
-"Stoppe bei Dateisystemgrenze (GIT_DISCOVERY_ACROSS_FILESYSTEM nicht gesetzt)."
+"Haben Sie bereits committet?\n"
+"Versuchen Sie \"git %s --continue\""
 
-#: setup.c:1362
+#: sequencer.c:3210 sequencer.c:4271
+msgid "cannot read HEAD"
+msgstr "Kann HEAD nicht lesen"
+
+#: sequencer.c:3227
+#, c-format
+msgid "unable to copy '%s' to '%s'"
+msgstr "Konnte '%s' nicht nach '%s' kopieren."
+
+#: sequencer.c:3235
 #, c-format
 msgid ""
-"problem with core.sharedRepository filemode value (0%.3o).\n"
-"The owner of files must always have read and write permissions."
+"You can amend the commit now, with\n"
+"\n"
+"  git commit --amend %s\n"
+"\n"
+"Once you are satisfied with your changes, run\n"
+"\n"
+"  git rebase --continue\n"
 msgstr ""
-"Problem mit Wert für Dateimodus (0%.3o) von core.sharedRepository.\n"
-"Der Besitzer der Dateien muss immer Lese- und Schreibrechte haben."
+"Sie können den Commit nun nachbessern mit:\n"
+"\n"
+"  git commit --amend %s\n"
+"\n"
+"Sobald Sie mit Ihren Änderungen zufrieden sind, führen Sie aus:\n"
+"\n"
+"  git rebase --continue\n"
 
-#: setup.c:1409
-msgid "open /dev/null or dup failed"
-msgstr "Öffnen von /dev/null oder dup fehlgeschlagen."
+#: sequencer.c:3245
+#, c-format
+msgid "Could not apply %s... %.*s"
+msgstr "Konnte %s... (%.*s) nicht anwenden"
 
-#: setup.c:1424
-msgid "fork failed"
-msgstr "fork fehlgeschlagen"
+#: sequencer.c:3252
+#, c-format
+msgid "Could not merge %.*s"
+msgstr "Konnte \"%.*s\" nicht zusammenführen."
 
-#: setup.c:1429
-msgid "setsid failed"
-msgstr "setsid fehlgeschlagen"
+#: sequencer.c:3266 sequencer.c:3270 builtin/difftool.c:640
+#, c-format
+msgid "could not copy '%s' to '%s'"
+msgstr "Konnte '%s' nicht nach '%s' kopieren."
 
-#: sha1-file.c:480
+#: sequencer.c:3282
 #, c-format
-msgid "object directory %s does not exist; check .git/objects/info/alternates"
-msgstr ""
-"Objektverzeichnis %s existiert nicht; prüfe .git/objects/info/alternates"
+msgid "Executing: %s\n"
+msgstr "Führe aus: %s\n"
 
-#: sha1-file.c:531
+#: sequencer.c:3297
 #, c-format
-msgid "unable to normalize alternate object path: %s"
-msgstr "Konnte alternativen Objektpfad '%s' nicht normalisieren."
+msgid ""
+"execution failed: %s\n"
+"%sYou can fix the problem, and then run\n"
+"\n"
+"  git rebase --continue\n"
+"\n"
+msgstr ""
+"Ausführung fehlgeschlagen: %s\n"
+"%sSie können das Problem beheben, und dann\n"
+"\n"
+"\tgit rebase --continue\n"
+"\n"
+"ausführen.\n"
 
-#: sha1-file.c:603
+#: sequencer.c:3303
+msgid "and made changes to the index and/or the working tree\n"
+msgstr "Der Index und/oder das Arbeitsverzeichnis wurde geändert.\n"
+
+#: sequencer.c:3309
 #, c-format
-msgid "%s: ignoring alternate object stores, nesting too deep"
-msgstr "%s: ignoriere alternative Objektspeicher - Verschachtelung zu tief"
+msgid ""
+"execution succeeded: %s\n"
+"but left changes to the index and/or the working tree\n"
+"Commit or stash your changes, and then run\n"
+"\n"
+"  git rebase --continue\n"
+"\n"
+msgstr ""
+"Ausführung erfolgreich: %s\n"
+"Aber Änderungen in Index oder Arbeitsverzeichnis verblieben.\n"
+"Committen Sie Ihre Änderungen oder benutzen Sie \"stash\".\n"
+"Führen Sie dann aus:\n"
+"\n"
+"  git rebase --continue\n"
+"\n"
 
-#: sha1-file.c:610
+#: sequencer.c:3370
 #, c-format
-msgid "unable to normalize object directory: %s"
-msgstr "Konnte Objektverzeichnis '%s' nicht normalisieren."
+msgid "illegal label name: '%.*s'"
+msgstr "Unerlaubter Beschriftungsname: '%.*s'"
 
-#: sha1-file.c:653
-msgid "unable to fdopen alternates lockfile"
-msgstr "Konnte fdopen nicht auf Lock-Datei für \"alternates\" aufrufen."
+#: sequencer.c:3424
+msgid "writing fake root commit"
+msgstr "unechten Root-Commit schreiben"
 
-#: sha1-file.c:671
-msgid "unable to read alternates file"
-msgstr "Konnte \"alternates\"-Datei nicht lesen."
+#: sequencer.c:3429
+msgid "writing squash-onto"
+msgstr "squash-onto schreiben"
 
-#: sha1-file.c:678
-msgid "unable to move new alternates file into place"
-msgstr "Konnte neue \"alternates\"-Datei nicht übernehmen."
+#: sequencer.c:3513
+#, c-format
+msgid "could not resolve '%s'"
+msgstr "Konnte '%s' nicht auflösen."
+
+#: sequencer.c:3546
+msgid "cannot merge without a current revision"
+msgstr "Kann nicht ohne einen aktuellen Commit mergen."
 
-#: sha1-file.c:713
+#: sequencer.c:3568
 #, c-format
-msgid "path '%s' does not exist"
-msgstr "Pfad '%s' existiert nicht"
+msgid "unable to parse '%.*s'"
+msgstr "Konnte '%.*s' nicht parsen."
 
-#: sha1-file.c:734
+#: sequencer.c:3577
 #, c-format
-msgid "reference repository '%s' as a linked checkout is not supported yet."
+msgid "nothing to merge: '%.*s'"
+msgstr "Nichts zum Zusammenführen: '%.*s'"
+
+#: sequencer.c:3589
+msgid "octopus merge cannot be executed on top of a [new root]"
 msgstr ""
-"Referenziertes Repository '%s' wird noch nicht als verknüpftes\n"
-"Arbeitsverzeichnis unterstützt."
+"Oktopus-Merge kann nicht auf Basis von [neuem Root-Commit] ausgeführt werden."
 
-#: sha1-file.c:740
+#: sequencer.c:3605
 #, c-format
-msgid "reference repository '%s' is not a local repository."
-msgstr "Referenziertes Repository '%s' ist kein lokales Repository."
+msgid "could not get commit message of '%s'"
+msgstr "Konnte keine Commit-Beschreibung von '%s' bekommen."
 
-#: sha1-file.c:746
+#: sequencer.c:3788
 #, c-format
-msgid "reference repository '%s' is shallow"
-msgstr ""
-"Referenziertes Repository '%s' hat eine unvollständige Historie (shallow)."
+msgid "could not even attempt to merge '%.*s'"
+msgstr "Konnte nicht einmal versuchen '%.*s' zu mergen."
+
+#: sequencer.c:3804
+msgid "merge: Unable to write new index file"
+msgstr "merge: Konnte neue Index-Datei nicht schreiben."
 
-#: sha1-file.c:754
+#: sequencer.c:3878
+msgid "Cannot autostash"
+msgstr "Kann automatischen Stash nicht erzeugen."
+
+#: sequencer.c:3881
 #, c-format
-msgid "reference repository '%s' is grafted"
-msgstr ""
-"Referenziertes Repository '%s' ist mit künstlichen Vorgängern (\"grafts\") "
-"eingehängt."
+msgid "Unexpected stash response: '%s'"
+msgstr "Unerwartete 'stash'-Antwort: '%s'"
 
-#: sha1-file.c:814
+#: sequencer.c:3887
 #, c-format
-msgid "invalid line while parsing alternate refs: %s"
-msgstr "Ungültige Zeile beim Parsen alternativer Referenzen: %s"
+msgid "Could not create directory for '%s'"
+msgstr "Konnte Verzeichnis für '%s' nicht erstellen."
 
-#: sha1-file.c:964
+#: sequencer.c:3890
 #, c-format
-msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
-msgstr "Versuche mmap %<PRIuMAX> über Limit %<PRIuMAX>."
+msgid "Created autostash: %s\n"
+msgstr "Automatischen Stash erzeugt: %s\n"
 
-#: sha1-file.c:985
-msgid "mmap failed"
-msgstr "mmap fehlgeschlagen"
+#: sequencer.c:3894
+msgid "could not reset --hard"
+msgstr "Konnte 'reset --hard' nicht ausführen."
 
-#: sha1-file.c:1149
+#: sequencer.c:3919
 #, c-format
-msgid "object file %s is empty"
-msgstr "Objektdatei %s ist leer."
+msgid "Applied autostash.\n"
+msgstr "Automatischen Stash angewendet.\n"
 
-#: sha1-file.c:1284 sha1-file.c:2477
+#: sequencer.c:3931
 #, c-format
-msgid "corrupt loose object '%s'"
-msgstr "Fehlerhaftes loses Objekt '%s'."
+msgid "cannot store %s"
+msgstr "kann %s nicht speichern"
 
-#: sha1-file.c:1286 sha1-file.c:2481
+#: sequencer.c:3934
 #, c-format
-msgid "garbage at end of loose object '%s'"
-msgstr "Nutzlose Daten am Ende von losem Objekt '%s'."
+msgid ""
+"%s\n"
+"Your changes are safe in the stash.\n"
+"You can run \"git stash pop\" or \"git stash drop\" at any time.\n"
+msgstr ""
+"%s\n"
+"Ihre Änderungen sind im Stash sicher.\n"
+"Sie können jederzeit \"git stash pop\" oder \"git stash drop\" ausführen.\n"
 
-#: sha1-file.c:1328
-msgid "invalid object type"
-msgstr "ungültiger Objekt-Typ"
+#: sequencer.c:3939
+msgid "Applying autostash resulted in conflicts."
+msgstr "Beim Anwenden des automatischen Stash traten Konflikte auf."
 
-#: sha1-file.c:1412
-#, c-format
-msgid "unable to unpack %s header with --allow-unknown-type"
-msgstr "Konnte %s Kopfbereich nicht mit --allow-unknown-type entpacken."
+#: sequencer.c:3940
+msgid "Autostash exists; creating a new stash entry."
+msgstr "Automatischer Stash existiert; ein neuer Stash-Eintrag wird erstellt."
 
-#: sha1-file.c:1415
-#, c-format
-msgid "unable to unpack %s header"
-msgstr "Konnte %s Kopfbereich nicht entpacken."
+#: sequencer.c:4033 git-rebase--preserve-merges.sh:769
+msgid "could not detach HEAD"
+msgstr "Konnte HEAD nicht loslösen"
 
-#: sha1-file.c:1421
+#: sequencer.c:4048
 #, c-format
-msgid "unable to parse %s header with --allow-unknown-type"
-msgstr "Konnte %s Kopfbereich mit --allow-unknown-type nicht parsen."
+msgid "Stopped at HEAD\n"
+msgstr "Angehalten bei HEAD\n"
 
-#: sha1-file.c:1424
+#: sequencer.c:4050
 #, c-format
-msgid "unable to parse %s header"
-msgstr "Konnte %s Kopfbereich nicht parsen."
+msgid "Stopped at %s\n"
+msgstr "Angehalten bei %s\n"
 
-#: sha1-file.c:1651
+#: sequencer.c:4058
 #, c-format
-msgid "failed to read object %s"
-msgstr "Konnte Objekt %s nicht lesen."
+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 ""
+"Konnte TODO-Befehl nicht ausführen\n"
+"\n"
+"    %.*s\n"
+"Dieser wurde neu angesetzt; Um den Befehl zu bearbeiten, bevor fortgesetzt "
+"wird,\n"
+"bearbeiten Sie bitte zuerst die TODO-Liste:\n"
+"\n"
+"    git rebase --edit-todo\n"
+"    git rebase --continue\n"
 
-#: sha1-file.c:1655
+#: sequencer.c:4104
 #, c-format
-msgid "replacement %s not found for %s"
-msgstr "Ersetzung %s für %s nicht gefunden."
+msgid "Rebasing (%d/%d)%s"
+msgstr "Rebase (%d/%d)%s"
 
-#: sha1-file.c:1659
+#: sequencer.c:4149
 #, c-format
-msgid "loose object %s (stored in %s) is corrupt"
-msgstr "Loses Objekt %s (gespeichert in %s) ist beschädigt."
+msgid "Stopped at %s...  %.*s\n"
+msgstr "Angehalten bei %s... %.*s\n"
 
-#: sha1-file.c:1663
+#: sequencer.c:4220
 #, c-format
-msgid "packed object %s (stored in %s) is corrupt"
-msgstr "Gepacktes Objekt %s (gespeichert in %s) ist beschädigt."
+msgid "unknown command %d"
+msgstr "Unbekannter Befehl %d"
 
-#: sha1-file.c:1768
+#: sequencer.c:4279
+msgid "could not read orig-head"
+msgstr "Konnte orig-head nicht lesen."
+
+#: sequencer.c:4284
+msgid "could not read 'onto'"
+msgstr "Konnte 'onto' nicht lesen."
+
+#: sequencer.c:4298
 #, c-format
-msgid "unable to write file %s"
-msgstr "Konnte Datei %s nicht schreiben."
+msgid "could not update HEAD to %s"
+msgstr "Konnte HEAD nicht auf %s aktualisieren."
 
-#: sha1-file.c:1775
+#: sequencer.c:4358
 #, c-format
-msgid "unable to set permission to '%s'"
-msgstr "Konnte Zugriffsberechtigung auf '%s' nicht setzen."
+msgid "Successfully rebased and updated %s.\n"
+msgstr "Erfolgreich Rebase ausgeführt und %s aktualisiert.\n"
 
-#: sha1-file.c:1782
-msgid "file write error"
-msgstr "Fehler beim Schreiben einer Datei."
+#: sequencer.c:4391
+msgid "cannot rebase: You have unstaged changes."
+msgstr ""
+"Rebase nicht möglich: Sie haben Änderungen, die nicht zum Commit\n"
+"vorgemerkt sind."
 
-#: sha1-file.c:1802
-msgid "error when closing loose object file"
-msgstr "Fehler beim Schließen der Datei für lose Objekte."
+#: sequencer.c:4400
+msgid "cannot amend non-existing commit"
+msgstr "Kann nicht existierenden Commit nicht nachbessern."
 
-#: sha1-file.c:1867
+#: sequencer.c:4402
 #, c-format
-msgid "insufficient permission for adding an object to repository database %s"
-msgstr ""
-"Unzureichende Berechtigung zum Hinzufügen eines Objektes zur Repository-"
-"Datenbank %s"
+msgid "invalid file: '%s'"
+msgstr "Ungültige Datei: '%s'"
 
-#: sha1-file.c:1869
-msgid "unable to create temporary file"
-msgstr "Konnte temporäre Datei nicht erstellen."
+#: sequencer.c:4404
+#, c-format
+msgid "invalid contents: '%s'"
+msgstr "Ungültige Inhalte: '%s'"
 
-#: sha1-file.c:1893
-msgid "unable to write loose object file"
-msgstr "Fehler beim Schreiben der Datei für lose Objekte."
+#: sequencer.c:4407
+msgid ""
+"\n"
+"You have uncommitted changes in your working tree. Please, commit them\n"
+"first and then run 'git rebase --continue' again."
+msgstr ""
+"\n"
+"Sie haben nicht committete Änderungen in Ihrem Arbeitsverzeichnis. Bitte\n"
+"committen Sie diese zuerst und führen Sie dann 'git rebase --continue'\n"
+"erneut aus."
 
-#: sha1-file.c:1899
+#: sequencer.c:4443 sequencer.c:4482
 #, c-format
-msgid "unable to deflate new object %s (%d)"
-msgstr "Konnte neues Objekt %s (%d) nicht komprimieren."
+msgid "could not write file: '%s'"
+msgstr "Konnte Datei nicht schreiben: '%s'"
 
-#: sha1-file.c:1903
-#, c-format
-msgid "deflateEnd on object %s failed (%d)"
-msgstr "deflateEnd auf Objekt %s fehlgeschlagen (%d)"
+#: sequencer.c:4498
+msgid "could not remove CHERRY_PICK_HEAD"
+msgstr "Konnte CHERRY_PICK_HEAD nicht löschen."
 
-#: sha1-file.c:1907
-#, c-format
-msgid "confused by unstable object source data for %s"
-msgstr "Fehler wegen instabilen Objektquelldaten für %s"
+#: sequencer.c:4505
+msgid "could not commit staged changes."
+msgstr "Konnte Änderungen aus der Staging-Area nicht committen."
 
-#: sha1-file.c:1917 builtin/pack-objects.c:1086
+#: sequencer.c:4621
 #, c-format
-msgid "failed utime() on %s"
-msgstr "Fehler beim Aufruf von utime() auf '%s'."
+msgid "%s: can't cherry-pick a %s"
+msgstr "%s: %s kann nicht in \"cherry-pick\" benutzt werden"
 
-#: sha1-file.c:1994
+#: sequencer.c:4625
 #, c-format
-msgid "cannot read object for %s"
-msgstr "Kann Objekt für %s nicht lesen."
+msgid "%s: bad revision"
+msgstr "%s: ungültiger Commit"
 
-#: sha1-file.c:2045
-msgid "corrupt commit"
-msgstr "fehlerhafter Commit"
+#: sequencer.c:4660
+msgid "can't revert as initial commit"
+msgstr "Kann nicht als allerersten Commit einen Revert ausführen."
 
-#: sha1-file.c:2053
-msgid "corrupt tag"
-msgstr "fehlerhaftes Tag"
+#: sequencer.c:5137
+msgid "make_script: unhandled options"
+msgstr "make_script: unbehandelte Optionen"
 
-#: sha1-file.c:2153
-#, c-format
-msgid "read error while indexing %s"
-msgstr "Lesefehler beim Indizieren von '%s'."
+#: sequencer.c:5140
+msgid "make_script: error preparing revisions"
+msgstr "make_script: Fehler beim Vorbereiten der Commits"
+
+#: sequencer.c:5382 sequencer.c:5399
+msgid "nothing to do"
+msgstr "Nichts zu tun."
+
+#: sequencer.c:5418
+msgid "could not skip unnecessary pick commands"
+msgstr "Konnte unnötige \"pick\"-Befehle nicht auslassen."
+
+#: sequencer.c:5512
+msgid "the script was already rearranged."
+msgstr "Das Script wurde bereits umgeordnet."
 
-#: sha1-file.c:2156
+#: setup.c:133
 #, c-format
-msgid "short read while indexing %s"
-msgstr "read() zu kurz beim Indizieren von '%s'."
+msgid "'%s' is outside repository at '%s'"
+msgstr "'%s' liegt außerhalb des Repositories von '%s'"
 
-#: sha1-file.c:2229 sha1-file.c:2239
+#: setup.c:185
 #, c-format
-msgid "%s: failed to insert into database"
-msgstr "%s: Fehler beim Einfügen in die Datenbank"
+msgid ""
+"%s: no such path in the working tree.\n"
+"Use 'git <command> -- <path>...' to specify paths that do not exist locally."
+msgstr ""
+"%s: Pfad nicht im Arbeitsverzeichnis gefunden.\n"
+"Benutzen Sie 'git <Befehl> -- <Pfad>...' zur Angabe von Pfaden, die lokal\n"
+"nicht existieren."
 
-#: sha1-file.c:2245
+#: setup.c:198
 #, c-format
-msgid "%s: unsupported file type"
-msgstr "%s: nicht unterstützte Dateiart"
+msgid ""
+"ambiguous argument '%s': unknown revision or path not in the working tree.\n"
+"Use '--' to separate paths from revisions, like this:\n"
+"'git <command> [<revision>...] -- [<file>...]'"
+msgstr ""
+"mehrdeutiges Argument '%s': unbekannter Commit oder Pfad existiert nicht\n"
+"im Arbeitsverzeichnis\n"
+"Benutzen Sie '--', um Pfade und Commits zu trennen, ähnlich wie:\n"
+"'git <Befehl> [<Commit>...] -- [<Datei>...]'"
 
-#: sha1-file.c:2269
+#: setup.c:264
 #, c-format
-msgid "%s is not a valid object"
-msgstr "%s ist kein gültiges Objekt"
+msgid "option '%s' must come before non-option arguments"
+msgstr ""
+"Die Option '%s' muss vor den Argumenten kommen, die keine Optionen sind."
 
-#: sha1-file.c:2271
+#: setup.c:283
 #, c-format
-msgid "%s is not a valid '%s' object"
-msgstr "%s ist kein gültiges '%s' Objekt"
+msgid ""
+"ambiguous argument '%s': both revision and filename\n"
+"Use '--' to separate paths from revisions, like this:\n"
+"'git <command> [<revision>...] -- [<file>...]'"
+msgstr ""
+"mehrdeutiges Argument '%s': sowohl Commit als auch Dateiname\n"
+"Benutzen Sie '--', um Pfade und Commits zu trennen, ähnlich wie:\n"
+"'git <Befehl> [<Commit>...] -- [<Datei>...]'"
+
+#: setup.c:419
+msgid "unable to set up work tree using invalid config"
+msgstr ""
+"Konnte Arbeitsverzeichnis mit ungültiger Konfiguration nicht einrichten."
+
+#: setup.c:423
+msgid "this operation must be run in a work tree"
+msgstr "Diese Operation muss in einem Arbeitsverzeichnis ausgeführt werden."
 
-#: sha1-file.c:2298 builtin/index-pack.c:192
+#: setup.c:661
 #, c-format
-msgid "unable to open %s"
-msgstr "kann %s nicht öffnen"
+msgid "Expected git repo version <= %d, found %d"
+msgstr "Erwartete Git-Repository-Version <= %d, %d gefunden"
+
+#: setup.c:669
+msgid "unknown repository extensions found:"
+msgstr "Unbekannte Repository-Erweiterungen gefunden:"
+
+#: setup.c:681
+msgid "repo version is 0, but v1-only extensions found:"
+msgstr "Repository-Version ist 0, aber Erweiterungen nur für v1 gefunden:"
 
-#: sha1-file.c:2488 sha1-file.c:2541
+#: setup.c:700
 #, c-format
-msgid "hash mismatch for %s (expected %s)"
-msgstr "Hash für %s stimmt nicht überein (%s erwartet)."
+msgid "error opening '%s'"
+msgstr "Fehler beim Öffnen von '%s'."
 
-#: sha1-file.c:2512
+#: setup.c:702
 #, c-format
-msgid "unable to mmap %s"
-msgstr "Konnte mmap nicht auf %s ausführen."
+msgid "too large to be a .git file: '%s'"
+msgstr "Zu groß, um eine .git-Datei zu sein: '%s'"
 
-#: sha1-file.c:2517
+#: setup.c:704
 #, c-format
-msgid "unable to unpack header of %s"
-msgstr "Konnte Kopfbereich von %s nicht entpacken."
+msgid "error reading %s"
+msgstr "Fehler beim Lesen von '%s'."
 
-#: sha1-file.c:2523
+#: setup.c:706
 #, c-format
-msgid "unable to parse header of %s"
-msgstr "Konnte Kopfbereich von %s nicht parsen."
+msgid "invalid gitfile format: %s"
+msgstr "Ungültiges gitfile-Format: %s"
 
-#: sha1-file.c:2534
+#: setup.c:708
 #, c-format
-msgid "unable to unpack contents of %s"
-msgstr "Konnte Inhalt von %s nicht entpacken."
+msgid "no path in gitfile: %s"
+msgstr "Kein Pfad in gitfile: %s"
 
-#: sha1-name.c:486
+#: setup.c:710
 #, c-format
-msgid "short SHA1 %s is ambiguous"
-msgstr "Kurzer SHA-1 %s ist mehrdeutig."
-
-#: sha1-name.c:497
-msgid "The candidates are:"
-msgstr "Die Kandidaten sind:"
+msgid "not a git repository: %s"
+msgstr "Kein Git-Repository: %s"
 
-#: sha1-name.c:796
-msgid ""
-"Git normally never creates a ref that ends with 40 hex characters\n"
-"because it will be ignored when you just specify 40-hex. These refs\n"
-"may be created by mistake. For example,\n"
-"\n"
-"  git switch -c $br $(git rev-parse ...)\n"
-"\n"
-"where \"$br\" is somehow empty and a 40-hex ref is created. Please\n"
-"examine these refs and maybe delete them. Turn this message off by\n"
-"running \"git config advice.objectNameWarning false\""
-msgstr ""
-"Git erzeugt normalerweise keine Referenzen die mit\n"
-"40 Hex-Zeichen enden, da diese ignoriert werden wenn\n"
-"Sie diese angeben. Diese Referenzen könnten aus Versehen\n"
-"erzeugt worden sein. Zum Beispiel,\n"
-"\n"
-"  git switch -c $br $(git rev-parse ...)\n"
-"\n"
-"wobei \"$br\" leer ist und eine 40-Hex-Referenz erzeugt\n"
-"wurde. Bitte prüfen Sie diese Referenzen und löschen\n"
-"Sie sie gegebenenfalls. Unterdrücken Sie diese Meldung\n"
-"indem Sie \"git config advice.objectNameWarning false\"\n"
-"ausführen."
+#: setup.c:812
+#, c-format
+msgid "'$%s' too big"
+msgstr "'$%s' zu groß"
 
-#: sha1-name.c:916
+#: setup.c:826
 #, c-format
-msgid "log for '%.*s' only goes back to %s"
-msgstr "Log für '%.*s' geht nur bis %s zurück"
+msgid "not a git repository: '%s'"
+msgstr "Kein Git-Repository: '%s'"
 
-#: sha1-name.c:924
+#: setup.c:855 setup.c:857 setup.c:888
 #, c-format
-msgid "log for '%.*s' only has %d entries"
-msgstr "Log für '%.*s' hat nur %d Einträge"
+msgid "cannot chdir to '%s'"
+msgstr "Kann nicht in Verzeichnis '%s' wechseln."
+
+#: setup.c:860 setup.c:916 setup.c:926 setup.c:965 setup.c:973
+msgid "cannot come back to cwd"
+msgstr "Kann nicht zum aktuellen Arbeitsverzeichnis zurückwechseln."
 
-#: sha1-name.c:1702
+#: setup.c:987
 #, c-format
-msgid "path '%s' exists on disk, but not in '%.*s'"
-msgstr "Pfad '%s' befindet sich im Dateisystem, aber nicht in '%.*s'"
+msgid "failed to stat '%*s%s%s'"
+msgstr "Konnte '%*s%s%s' nicht lesen."
 
-#: sha1-name.c:1708
+#: setup.c:1225
+msgid "Unable to read current working directory"
+msgstr "Konnte aktuelles Arbeitsverzeichnis nicht lesen."
+
+#: setup.c:1234 setup.c:1240
 #, c-format
-msgid ""
-"path '%s' exists, but not '%s'\n"
-"hint: Did you mean '%.*s:%s' aka '%.*s:./%s'?"
-msgstr ""
-"Pfad '%s' existiert, aber nicht '%s'\n"
-"Hinweis: Meinten Sie '%.*s:%s' auch bekannt als '%.*s:./%s'?"
+msgid "cannot change to '%s'"
+msgstr "Kann nicht nach '%s' wechseln."
 
-#: sha1-name.c:1717
+#: setup.c:1245
 #, c-format
-msgid "path '%s' does not exist in '%.*s'"
-msgstr "Pfad '%s' existiert nicht in '%.*s'"
+msgid "not a git repository (or any of the parent directories): %s"
+msgstr "Kein Git-Repository (oder irgendeines der Elternverzeichnisse): %s"
 
-#: sha1-name.c:1745
+#: setup.c:1251
 #, c-format
 msgid ""
-"path '%s' is in the index, but not at stage %d\n"
-"hint: Did you mean ':%d:%s'?"
+"not a git repository (or any parent up to mount point %s)\n"
+"Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set)."
 msgstr ""
-"Pfad '%s' ist im Index, aber nicht in Stufe %d\n"
-"Hinweis: Meinten Sie ':%d:%s'?"
+"Kein Git-Repository (oder irgendein Elternverzeichnis bis zum Einhängepunkt "
+"%s)\n"
+"Stoppe bei Dateisystemgrenze (GIT_DISCOVERY_ACROSS_FILESYSTEM nicht gesetzt)."
 
-#: sha1-name.c:1761
+#: setup.c:1362
 #, c-format
 msgid ""
-"path '%s' is in the index, but not '%s'\n"
-"hint: Did you mean ':%d:%s' aka ':%d:./%s'?"
+"problem with core.sharedRepository filemode value (0%.3o).\n"
+"The owner of files must always have read and write permissions."
 msgstr ""
-"Pfad '%s' ist im Index, aber nicht '%s'\n"
-"Hinweis: Meinten Sie ':%d:%s' auch bekannt als ':%d:./%s'?"
-
-#: sha1-name.c:1769
-#, c-format
-msgid "path '%s' exists on disk, but not in the index"
-msgstr "Pfad '%s' existiert im Dateisystem, aber nicht im Index"
+"Problem mit Wert für Dateimodus (0%.3o) von core.sharedRepository.\n"
+"Der Besitzer der Dateien muss immer Lese- und Schreibrechte haben."
 
-#: sha1-name.c:1771
-#, c-format
-msgid "path '%s' does not exist (neither on disk nor in the index)"
-msgstr "Pfad '%s' existiert nicht (weder im Dateisystem noch im Index)"
+#: setup.c:1409
+msgid "open /dev/null or dup failed"
+msgstr "Öffnen von /dev/null oder dup fehlgeschlagen."
 
-#: sha1-name.c:1784
-msgid "relative path syntax can't be used outside working tree"
-msgstr ""
-"Die Syntax für relative Pfade kann nicht außerhalb des Arbeitsverzeichnisses "
-"benutzt werden."
+#: setup.c:1424
+msgid "fork failed"
+msgstr "fork fehlgeschlagen"
 
-#: sha1-name.c:1922
-#, c-format
-msgid "invalid object name '%.*s'."
-msgstr "ungültiger Objektname '%.*s'."
+#: setup.c:1429
+msgid "setsid failed"
+msgstr "setsid fehlgeschlagen"
 
 #. TRANSLATORS: IEC 80000-13:2008 gibibyte
 #: strbuf.c:848
@@ -8346,7 +8600,7 @@ msgstr[0] "%u Byte/s"
 msgstr[1] "%u Bytes/s"
 
 #: strbuf.c:1166 wrapper.c:199 wrapper.c:369 builtin/am.c:719
-#: builtin/rebase.c:864
+#: builtin/rebase.c:866
 #, c-format
 msgid "could not open '%s' for writing"
 msgstr "Konnte '%s' nicht zum Schreiben öffnen."
@@ -8412,12 +8666,12 @@ msgstr "In nicht ausgechecktem Submodul '%s'."
 msgid "Pathspec '%s' is in submodule '%.*s'"
 msgstr "Pfadspezifikation '%s' befindet sich in Submodul '%.*s'"
 
-#: submodule.c:434
+#: submodule.c:435
 #, c-format
 msgid "bad --ignore-submodules argument: %s"
 msgstr "ungültiges --ignore-submodules Argument: %s"
 
-#: submodule.c:816
+#: submodule.c:817
 #, c-format
 msgid ""
 "Submodule in commit %s at path: '%s' collides with a submodule named the "
@@ -8426,12 +8680,12 @@ msgstr ""
 "Submodul in Commit %s beim Pfad: '%s' hat den gleichen Namen wie ein "
 "Submodul. Wird übersprungen."
 
-#: submodule.c:919
+#: submodule.c:920
 #, c-format
 msgid "submodule entry '%s' (%s) is a %s, not a commit"
 msgstr "Submodul-Eintrag '%s' (%s) ist ein %s, kein Commit."
 
-#: submodule.c:1004
+#: submodule.c:1005
 #, c-format
 msgid ""
 "Could not run 'git rev-list <commits> --not --remotes -n 1' command in "
@@ -8440,36 +8694,36 @@ msgstr ""
 "Konnte 'git rev-list <Commits> --not --remotes -n 1' nicht in Submodul '%s' "
 "ausführen."
 
-#: submodule.c:1127
+#: submodule.c:1128
 #, c-format
 msgid "process for submodule '%s' failed"
 msgstr "Prozess für Submodul '%s' fehlgeschlagen"
 
-#: submodule.c:1156 builtin/branch.c:680 builtin/submodule--helper.c:2469
+#: submodule.c:1157 builtin/branch.c:689 builtin/submodule--helper.c:2469
 msgid "Failed to resolve HEAD as a valid ref."
 msgstr "Konnte HEAD nicht als gültige Referenz auflösen."
 
-#: submodule.c:1167
+#: submodule.c:1168
 #, c-format
 msgid "Pushing submodule '%s'\n"
 msgstr "Pushe Submodul '%s'\n"
 
-#: submodule.c:1170
+#: submodule.c:1171
 #, c-format
 msgid "Unable to push submodule '%s'\n"
 msgstr "Kann Push für Submodul '%s' nicht ausführen\n"
 
-#: submodule.c:1462
+#: submodule.c:1463
 #, c-format
 msgid "Fetching submodule %s%s\n"
 msgstr "Anfordern des Submoduls %s%s\n"
 
-#: submodule.c:1492
+#: submodule.c:1497
 #, c-format
 msgid "Could not access submodule '%s'\n"
 msgstr "Konnte nicht auf Submodul '%s' zugreifen\n"
 
-#: submodule.c:1646
+#: submodule.c:1652
 #, c-format
 msgid ""
 "Errors during submodule fetch:\n"
@@ -8478,62 +8732,62 @@ msgstr ""
 "Fehler während des Anforderns der Submodule:\n"
 "%s"
 
-#: submodule.c:1671
+#: submodule.c:1677
 #, c-format
 msgid "'%s' not recognized as a git repository"
 msgstr "'%s' nicht als Git-Repository erkannt"
 
-#: submodule.c:1688
+#: submodule.c:1694
 #, c-format
 msgid "Could not run 'git status --porcelain=2' in submodule %s"
 msgstr "Konnte 'git status --porcelain=2' nicht in Submodul %s ausführen"
 
-#: submodule.c:1729
+#: submodule.c:1735
 #, c-format
 msgid "'git status --porcelain=2' failed in submodule %s"
 msgstr "'git status --porcelain=2' ist in Submodul %s fehlgeschlagen"
 
-#: submodule.c:1804
+#: submodule.c:1810
 #, c-format
 msgid "could not start 'git status' in submodule '%s'"
 msgstr "Konnte 'git status' in Submodul '%s' nicht starten."
 
-#: submodule.c:1817
+#: submodule.c:1823
 #, c-format
 msgid "could not run 'git status' in submodule '%s'"
 msgstr "Konnte 'git status' in Submodul '%s' nicht ausführen."
 
-#: submodule.c:1832
+#: submodule.c:1838
 #, c-format
 msgid "Could not unset core.worktree setting in submodule '%s'"
 msgstr "Konnte core.worktree Einstellung in Submodul '%s' nicht aufheben."
 
-#: submodule.c:1859 submodule.c:2169
+#: submodule.c:1865 submodule.c:2175
 #, c-format
 msgid "could not recurse into submodule '%s'"
 msgstr "Fehler bei Rekursion in Submodul-Pfad '%s'"
 
-#: submodule.c:1880
+#: submodule.c:1886
 msgid "could not reset submodule index"
 msgstr "konnte Index des Submoduls nicht zurücksetzen"
 
-#: submodule.c:1922
+#: submodule.c:1928
 #, c-format
 msgid "submodule '%s' has dirty index"
 msgstr "Submodul '%s' hat einen geänderten Index."
 
-#: submodule.c:1974
+#: submodule.c:1980
 #, c-format
 msgid "Submodule '%s' could not be updated."
 msgstr "Submodule '%s' konnte nicht aktualisiert werden."
 
-#: submodule.c:2042
+#: submodule.c:2048
 #, c-format
 msgid "submodule git dir '%s' is inside git dir '%.*s'"
 msgstr ""
 "Git-Verzeichnis des Submoduls '%s' ist im Git-Verzeichnis '%.*s' enthalten."
 
-#: submodule.c:2063
+#: submodule.c:2069
 #, c-format
 msgid ""
 "relocate_gitdir for submodule '%s' with more than one worktree not supported"
@@ -8541,17 +8795,17 @@ msgstr ""
 "relocate_gitdir für Submodul '%s' mit mehr als einem Arbeitsverzeichnis\n"
 "wird nicht unterstützt"
 
-#: submodule.c:2075 submodule.c:2134
+#: submodule.c:2081 submodule.c:2140
 #, c-format
 msgid "could not lookup name for submodule '%s'"
 msgstr "Konnte Name für Submodul '%s' nicht nachschlagen."
 
-#: submodule.c:2079
+#: submodule.c:2085
 #, c-format
 msgid "refusing to move '%s' into an existing git dir"
 msgstr "Verschieben von '%s' in ein existierendes Git-Verzeichnis verweigert."
 
-#: submodule.c:2086
+#: submodule.c:2092
 #, c-format
 msgid ""
 "Migrating git directory of '%s%s' from\n"
@@ -8562,11 +8816,11 @@ msgstr ""
 "'%s' nach\n"
 "'%s'\n"
 
-#: submodule.c:2214
+#: submodule.c:2220
 msgid "could not start ls-files in .."
 msgstr "Konnte 'ls-files' nicht in .. starten"
 
-#: submodule.c:2254
+#: submodule.c:2260
 #, c-format
 msgid "ls-tree returned unexpected return code %d"
 msgstr "ls-tree mit unerwartetem Rückgabewert %d beendet"
@@ -8597,7 +8851,7 @@ msgstr "leerer Anhang-Token in Anhang '%.*s'"
 msgid "could not read input file '%s'"
 msgstr "Konnte Eingabe-Datei '%s' nicht lesen"
 
-#: trailer.c:751
+#: trailer.c:751 builtin/mktag.c:91
 msgid "could not read from stdin"
 msgstr "konnte nicht von der Standard-Eingabe lesen"
 
@@ -8671,7 +8925,7 @@ msgstr "konnte \"fast-import\" nicht ausführen"
 msgid "error while running fast-import"
 msgstr "Fehler beim Ausführen von 'fast-import'."
 
-#: transport-helper.c:549 transport-helper.c:1236
+#: transport-helper.c:549 transport-helper.c:1237
 #, c-format
 msgid "could not read ref %s"
 msgstr "konnte Referenz %s nicht lesen"
@@ -8690,7 +8944,7 @@ msgstr ""
 msgid "invalid remote service path"
 msgstr "ungültiger Remote-Service Pfad."
 
-#: transport-helper.c:661 transport.c:1446
+#: transport-helper.c:661 transport.c:1447
 msgid "operation not supported by protocol"
 msgstr "die Operation wird von dem Protokoll nicht unterstützt"
 
@@ -8769,52 +9023,52 @@ msgstr ""
 "Keine gemeinsamen Referenzen und nichts spezifiziert; keine Ausführung.\n"
 "Vielleicht sollten Sie einen Branch angeben.\n"
 
-#: transport-helper.c:1213
+#: transport-helper.c:1214
 #, c-format
 msgid "unsupported object format '%s'"
 msgstr "nicht unterstütztes Objekt-Format '%s'"
 
-#: transport-helper.c:1222
+#: transport-helper.c:1223
 #, c-format
 msgid "malformed response in ref list: %s"
 msgstr "Ungültige Antwort in Referenzliste: %s"
 
-#: transport-helper.c:1374
+#: transport-helper.c:1375
 #, c-format
 msgid "read(%s) failed"
 msgstr "Lesen von %s fehlgeschlagen."
 
-#: transport-helper.c:1401
+#: transport-helper.c:1402
 #, c-format
 msgid "write(%s) failed"
 msgstr "Schreiben von %s fehlgeschlagen."
 
-#: transport-helper.c:1450
+#: transport-helper.c:1451
 #, c-format
 msgid "%s thread failed"
 msgstr "Thread %s fehlgeschlagen."
 
-#: transport-helper.c:1454
+#: transport-helper.c:1455
 #, c-format
 msgid "%s thread failed to join: %s"
 msgstr "Fehler beim Beitreten zu Thread %s: %s"
 
-#: transport-helper.c:1473 transport-helper.c:1477
+#: transport-helper.c:1474 transport-helper.c:1478
 #, c-format
 msgid "can't start thread for copying data: %s"
 msgstr "Kann Thread zum Kopieren von Daten nicht starten: %s"
 
-#: transport-helper.c:1514
+#: transport-helper.c:1515
 #, c-format
 msgid "%s process failed to wait"
 msgstr "Fehler beim Warten von Prozess %s."
 
-#: transport-helper.c:1518
+#: transport-helper.c:1519
 #, c-format
 msgid "%s process failed"
 msgstr "Prozess %s fehlgeschlagen"
 
-#: transport-helper.c:1536 transport-helper.c:1545
+#: transport-helper.c:1537 transport-helper.c:1546
 msgid "can't start thread for copying data"
 msgstr "Kann Thread zum Kopieren von Daten nicht starten."
 
@@ -8903,23 +9157,23 @@ msgstr ""
 msgid "Aborting."
 msgstr "Abbruch."
 
-#: transport.c:1315
+#: transport.c:1316
 msgid "failed to push all needed submodules"
 msgstr "Fehler beim Versand aller erforderlichen Submodule."
 
-#: tree-walk.c:32
+#: tree-walk.c:33
 msgid "too-short tree object"
 msgstr "zu kurzes Tree-Objekt"
 
-#: tree-walk.c:38
+#: tree-walk.c:39
 msgid "malformed mode in tree entry"
 msgstr "fehlerhafter Modus in Tree-Eintrag"
 
-#: tree-walk.c:42
+#: tree-walk.c:43
 msgid "empty filename in tree entry"
 msgstr "leerer Dateiname in Tree-Eintrag"
 
-#: tree-walk.c:117
+#: tree-walk.c:118
 msgid "too-short tree file"
 msgstr "zu kurze Tree-Datei"
 
@@ -9197,7 +9451,7 @@ msgstr ""
 msgid "Updating index flags"
 msgstr "Aktualisiere Index-Markierungen"
 
-#: upload-pack.c:1550
+#: upload-pack.c:1543
 msgid "expected flush after fetch arguments"
 msgstr "erwartete Flush nach Abrufen der Argumente"
 
@@ -9234,72 +9488,103 @@ msgstr "ungültiges '..' Pfadsegment"
 msgid "Fetching objects"
 msgstr "Anfordern der Objekte"
 
-#: worktree.c:236 builtin/am.c:2103
+#: worktree.c:238 builtin/am.c:2103
 #, c-format
 msgid "failed to read '%s'"
 msgstr "Fehler beim Lesen von '%s'"
 
-#: worktree.c:283
+#: worktree.c:304
 #, c-format
 msgid "'%s' at main working tree is not the repository directory"
 msgstr "'%s' im Hauptarbeitsverzeichnis ist nicht das Repository-Verzeichnis."
 
-#: worktree.c:294
+#: worktree.c:315
 #, c-format
 msgid "'%s' file does not contain absolute path to the working tree location"
 msgstr "'%s' Datei enthält nicht den absoluten Pfad zum Arbeitsverzeichnis."
 
-#: worktree.c:306
+#: worktree.c:327
 #, c-format
 msgid "'%s' does not exist"
 msgstr "'%s' existiert nicht."
 
-#: worktree.c:312
+#: worktree.c:333
 #, c-format
 msgid "'%s' is not a .git file, error code %d"
 msgstr "'%s' ist keine .git-Datei, Fehlercode %d"
 
-#: worktree.c:321
+#: worktree.c:342
 #, c-format
 msgid "'%s' does not point back to '%s'"
 msgstr "'%s' zeigt nicht zurück auf '%s'"
 
-#: worktree.c:587
+#: worktree.c:608
 msgid "not a directory"
 msgstr "kein Verzeichnis"
 
-#: worktree.c:596
+#: worktree.c:617
 msgid ".git is not a file"
 msgstr ".git ist keine Datei"
 
-#: worktree.c:598
+#: worktree.c:619
 msgid ".git file broken"
 msgstr ".git-Datei kaputt"
 
-#: worktree.c:600
+#: worktree.c:621
 msgid ".git file incorrect"
 msgstr ".git-Datei fehlerhaft"
 
-#: worktree.c:670
+#: worktree.c:727
 msgid "not a valid path"
 msgstr "kein gültiger Pfad"
 
-#: worktree.c:676
+#: worktree.c:733
 msgid "unable to locate repository; .git is not a file"
 msgstr "Konnte Repository nicht finden; .git ist keine Datei"
 
-#: worktree.c:679
+#: worktree.c:737
+msgid "unable to locate repository; .git file does not reference a repository"
+msgstr ""
+"konnte Repository nicht finden; .git-Datei referenziert kein Repository"
+
+#: worktree.c:741
 msgid "unable to locate repository; .git file broken"
 msgstr "Konnte Repository nicht finden; .git-Datei ist kaputt"
 
-#: worktree.c:685
+#: worktree.c:747
 msgid "gitdir unreadable"
 msgstr "gitdir nicht lesbar"
 
-#: worktree.c:689
+#: worktree.c:751
 msgid "gitdir incorrect"
 msgstr "gitdir fehlerhaft"
 
+#: worktree.c:776
+msgid "not a valid directory"
+msgstr "kein gültiges Verzeichnis"
+
+#: worktree.c:782
+msgid "gitdir file does not exist"
+msgstr "gitdir-Datei existiert nicht"
+
+#: worktree.c:787 worktree.c:796
+#, c-format
+msgid "unable to read gitdir file (%s)"
+msgstr "konnte gitdir-Datei nicht lesen (%s)"
+
+#: worktree.c:806
+#, c-format
+msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
+msgstr "read() zu kurz (%<PRIuMAX> Bytes erwartet, %<PRIuMAX> gelesen)"
+
+#: worktree.c:814
+msgid "invalid gitdir file"
+msgstr "ungültige gitdir-Datei"
+
+#: worktree.c:822
+msgid "gitdir file points to non-existent location"
+msgstr "gitdir-Datei verweist auf nicht existierenden Ort"
+
 #: wrapper.c:197 wrapper.c:367
 #, c-format
 msgid "could not open '%s' for reading and writing"
@@ -9353,11 +9638,11 @@ msgid "  (use \"git rm <file>...\" to mark resolution)"
 msgstr ""
 "  (benutzen Sie \"git add/rm <Datei>...\", um die Auflösung zu markieren)"
 
-#: wt-status.c:211 wt-status.c:1070
+#: wt-status.c:211 wt-status.c:1072
 msgid "Changes to be committed:"
 msgstr "Zum Commit vorgemerkte Änderungen:"
 
-#: wt-status.c:234 wt-status.c:1079
+#: wt-status.c:234 wt-status.c:1081
 msgid "Changes not staged for commit:"
 msgstr "Änderungen, die nicht zum Commit vorgemerkt sind:"
 
@@ -9465,22 +9750,22 @@ msgstr "geänderter Inhalt, "
 msgid "untracked content, "
 msgstr "unversionierter Inhalt, "
 
-#: wt-status.c:903
+#: wt-status.c:905
 #, c-format
 msgid "Your stash currently has %d entry"
 msgid_plural "Your stash currently has %d entries"
 msgstr[0] "Ihr Stash hat gerade %d Eintrag"
 msgstr[1] "Ihr Stash hat gerade %d Einträge"
 
-#: wt-status.c:934
+#: wt-status.c:936
 msgid "Submodules changed but not updated:"
 msgstr "Submodule geändert, aber nicht aktualisiert:"
 
-#: wt-status.c:936
+#: wt-status.c:938
 msgid "Submodule changes to be committed:"
 msgstr "Änderungen in Submodul zum Committen:"
 
-#: wt-status.c:1018
+#: wt-status.c:1020
 msgid ""
 "Do not modify or remove the line above.\n"
 "Everything below it will be ignored."
@@ -9488,7 +9773,7 @@ msgstr ""
 "Ändern oder entfernen Sie nicht die obige Zeile.\n"
 "Alles unterhalb von ihr wird ignoriert."
 
-#: wt-status.c:1110
+#: wt-status.c:1112
 #, c-format
 msgid ""
 "\n"
@@ -9500,114 +9785,114 @@ msgstr ""
 "berechnen.\n"
 "Sie können '--no-ahead-behind' benutzen, um das zu verhindern.\n"
 
-#: wt-status.c:1140
+#: wt-status.c:1142
 msgid "You have unmerged paths."
 msgstr "Sie haben nicht zusammengeführte Pfade."
 
-#: wt-status.c:1143
+#: wt-status.c:1145
 msgid "  (fix conflicts and run \"git commit\")"
 msgstr "  (beheben Sie die Konflikte und führen Sie \"git commit\" aus)"
 
-#: wt-status.c:1145
+#: wt-status.c:1147
 msgid "  (use \"git merge --abort\" to abort the merge)"
 msgstr "  (benutzen Sie \"git merge --abort\", um den Merge abzubrechen)"
 
-#: wt-status.c:1149
+#: wt-status.c:1151
 msgid "All conflicts fixed but you are still merging."
 msgstr "Alle Konflikte sind behoben, aber Sie sind immer noch beim Merge."
 
-#: wt-status.c:1152
+#: wt-status.c:1154
 msgid "  (use \"git commit\" to conclude merge)"
 msgstr "  (benutzen Sie \"git commit\", um den Merge abzuschließen)"
 
-#: wt-status.c:1161
+#: wt-status.c:1163
 msgid "You are in the middle of an am session."
 msgstr "Eine \"am\"-Sitzung ist im Gange."
 
-#: wt-status.c:1164
+#: wt-status.c:1166
 msgid "The current patch is empty."
 msgstr "Der aktuelle Patch ist leer."
 
-#: wt-status.c:1168
+#: wt-status.c:1170
 msgid "  (fix conflicts and then run \"git am --continue\")"
 msgstr ""
 "  (beheben Sie die Konflikte und führen Sie dann \"git am --continue\" aus)"
 
-#: wt-status.c:1170
+#: wt-status.c:1172
 msgid "  (use \"git am --skip\" to skip this patch)"
 msgstr "  (benutzen Sie \"git am --skip\", um diesen Patch auszulassen)"
 
-#: wt-status.c:1172
+#: wt-status.c:1174
 msgid "  (use \"git am --abort\" to restore the original branch)"
 msgstr ""
 "  (benutzen Sie \"git am --abort\", um den ursprünglichen Branch "
 "wiederherzustellen)"
 
-#: wt-status.c:1305
+#: wt-status.c:1307
 msgid "git-rebase-todo is missing."
 msgstr "git-rebase-todo fehlt."
 
-#: wt-status.c:1307
+#: wt-status.c:1309
 msgid "No commands done."
 msgstr "Keine Befehle ausgeführt."
 
-#: wt-status.c:1310
+#: wt-status.c:1312
 #, c-format
 msgid "Last command done (%d command done):"
 msgid_plural "Last commands done (%d commands done):"
 msgstr[0] "Zuletzt ausgeführter Befehl (%d Befehl ausgeführt):"
 msgstr[1] "Zuletzt ausgeführte Befehle (%d Befehle ausgeführt):"
 
-#: wt-status.c:1321
+#: wt-status.c:1323
 #, c-format
 msgid "  (see more in file %s)"
 msgstr "  (mehr Informationen in Datei %s)"
 
-#: wt-status.c:1326
+#: wt-status.c:1328
 msgid "No commands remaining."
 msgstr "Keine Befehle verbleibend."
 
-#: wt-status.c:1329
+#: wt-status.c:1331
 #, c-format
 msgid "Next command to do (%d remaining command):"
 msgid_plural "Next commands to do (%d remaining commands):"
 msgstr[0] "Nächster auszuführender Befehl (%d Befehle verbleibend):"
 msgstr[1] "Nächste auszuführende Befehle (%d Befehle verbleibend):"
 
-#: wt-status.c:1337
+#: wt-status.c:1339
 msgid "  (use \"git rebase --edit-todo\" to view and edit)"
 msgstr "  (benutzen Sie \"git rebase --edit-todo\" zum Ansehen und Bearbeiten)"
 
-#: wt-status.c:1349
+#: wt-status.c:1351
 #, c-format
 msgid "You are currently rebasing branch '%s' on '%s'."
 msgstr "Sie sind gerade beim Rebase von Branch '%s' auf '%s'."
 
-#: wt-status.c:1354
+#: wt-status.c:1356
 msgid "You are currently rebasing."
 msgstr "Sie sind gerade beim Rebase."
 
-#: wt-status.c:1367
+#: wt-status.c:1369
 msgid "  (fix conflicts and then run \"git rebase --continue\")"
 msgstr ""
 "  (beheben Sie die Konflikte und führen Sie dann \"git rebase --continue\" "
 "aus)"
 
-#: wt-status.c:1369
+#: wt-status.c:1371
 msgid "  (use \"git rebase --skip\" to skip this patch)"
 msgstr "  (benutzen Sie \"git rebase --skip\", um diesen Patch auszulassen)"
 
-#: wt-status.c:1371
+#: wt-status.c:1373
 msgid "  (use \"git rebase --abort\" to check out the original branch)"
 msgstr ""
 "  (benutzen Sie \"git rebase --abort\", um den ursprünglichen Branch "
 "auszuchecken)"
 
-#: wt-status.c:1378
+#: wt-status.c:1380
 msgid "  (all conflicts fixed: run \"git rebase --continue\")"
 msgstr "  (alle Konflikte behoben: führen Sie \"git rebase --continue\" aus)"
 
-#: wt-status.c:1382
+#: wt-status.c:1384
 #, c-format
 msgid ""
 "You are currently splitting a commit while rebasing branch '%s' on '%s'."
@@ -9615,162 +9900,170 @@ msgstr ""
 "Sie teilen gerade einen Commit auf, während ein Rebase von Branch '%s' auf "
 "'%s' im Gange ist."
 
-#: wt-status.c:1387
+#: wt-status.c:1389
 msgid "You are currently splitting a commit during a rebase."
 msgstr "Sie teilen gerade einen Commit während eines Rebase auf."
 
-#: wt-status.c:1390
+#: wt-status.c:1392
 msgid "  (Once your working directory is clean, run \"git rebase --continue\")"
 msgstr ""
 "  (Sobald Ihr Arbeitsverzeichnis unverändert ist, führen Sie \"git rebase --"
 "continue\" aus)"
 
-#: wt-status.c:1394
+#: wt-status.c:1396
 #, c-format
 msgid "You are currently editing a commit while rebasing branch '%s' on '%s'."
 msgstr ""
 "Sie editieren gerade einen Commit während eines Rebase von Branch '%s' auf "
 "'%s'."
 
-#: wt-status.c:1399
+#: wt-status.c:1401
 msgid "You are currently editing a commit during a rebase."
 msgstr "Sie editieren gerade einen Commit während eines Rebase."
 
-#: wt-status.c:1402
+#: wt-status.c:1404
 msgid "  (use \"git commit --amend\" to amend the current commit)"
 msgstr ""
 "  (benutzen Sie \"git commit --amend\", um den aktuellen Commit "
 "nachzubessern)"
 
-#: wt-status.c:1404
+#: wt-status.c:1406
 msgid ""
 "  (use \"git rebase --continue\" once you are satisfied with your changes)"
 msgstr ""
 "  (benutzen Sie \"git rebase --continue\" sobald Ihre Änderungen "
 "abgeschlossen sind)"
 
-#: wt-status.c:1415
+#: wt-status.c:1417
 msgid "Cherry-pick currently in progress."
 msgstr "Cherry-pick zurzeit im Gange."
 
-#: wt-status.c:1418
+#: wt-status.c:1420
 #, c-format
 msgid "You are currently cherry-picking commit %s."
 msgstr "Sie führen gerade \"cherry-pick\" von Commit %s aus."
 
-#: wt-status.c:1425
+#: wt-status.c:1427
 msgid "  (fix conflicts and run \"git cherry-pick --continue\")"
 msgstr ""
 "  (beheben Sie die Konflikte und führen Sie dann \"git cherry-pick --continue"
 "\" aus)"
 
-#: wt-status.c:1428
+#: wt-status.c:1430
 msgid "  (run \"git cherry-pick --continue\" to continue)"
 msgstr "  (Führen Sie \"git cherry-pick --continue\" aus, um weiterzumachen)"
 
-#: wt-status.c:1431
+#: wt-status.c:1433
 msgid "  (all conflicts fixed: run \"git cherry-pick --continue\")"
 msgstr ""
 "  (alle Konflikte behoben: führen Sie \"git cherry-pick --continue\" aus)"
 
-#: wt-status.c:1433
+#: wt-status.c:1435
 msgid "  (use \"git cherry-pick --skip\" to skip this patch)"
 msgstr ""
 "  (benutzen Sie \"git cherry-pick --skip\", um diesen Patch auszulassen)"
 
-#: wt-status.c:1435
+#: wt-status.c:1437
 msgid "  (use \"git cherry-pick --abort\" to cancel the cherry-pick operation)"
 msgstr ""
 "  (benutzen Sie \"git cherry-pick --abort\", um die Cherry-Pick-Operation "
 "abzubrechen)"
 
-#: wt-status.c:1445
+#: wt-status.c:1447
 msgid "Revert currently in progress."
 msgstr "Revert zurzeit im Gange."
 
-#: wt-status.c:1448
+#: wt-status.c:1450
 #, c-format
 msgid "You are currently reverting commit %s."
 msgstr "Sie sind gerade beim Revert von Commit '%s'."
 
-#: wt-status.c:1454
+#: wt-status.c:1456
 msgid "  (fix conflicts and run \"git revert --continue\")"
 msgstr ""
 "  (beheben Sie die Konflikte und führen Sie dann \"git revert --continue\" "
 "aus)"
 
-#: wt-status.c:1457
+#: wt-status.c:1459
 msgid "  (run \"git revert --continue\" to continue)"
 msgstr "  (Führen Sie \"git revert --continue\", um weiterzumachen)"
 
-#: wt-status.c:1460
+#: wt-status.c:1462
 msgid "  (all conflicts fixed: run \"git revert --continue\")"
 msgstr "  (alle Konflikte behoben: führen Sie \"git revert --continue\" aus)"
 
-#: wt-status.c:1462
+#: wt-status.c:1464
 msgid "  (use \"git revert --skip\" to skip this patch)"
 msgstr "  (benutzen Sie \"git revert --skip\", um diesen Patch auszulassen)"
 
-#: wt-status.c:1464
+#: wt-status.c:1466
 msgid "  (use \"git revert --abort\" to cancel the revert operation)"
 msgstr ""
 "  (benutzen Sie \"git revert --abort\", um die Revert-Operation abzubrechen)"
 
-#: wt-status.c:1474
+#: wt-status.c:1476
 #, c-format
 msgid "You are currently bisecting, started from branch '%s'."
 msgstr "Sie sind gerade bei einer binären Suche, gestartet von Branch '%s'."
 
-#: wt-status.c:1478
+#: wt-status.c:1480
 msgid "You are currently bisecting."
 msgstr "Sie sind gerade bei einer binären Suche."
 
-#: wt-status.c:1481
+#: wt-status.c:1483
 msgid "  (use \"git bisect reset\" to get back to the original branch)"
 msgstr ""
 "  (benutzen Sie \"git bisect reset\", um zum ursprünglichen Branch "
 "zurückzukehren)"
 
-#: wt-status.c:1492
+#: wt-status.c:1494
 #, c-format
 msgid "You are in a sparse checkout with %d%% of tracked files present."
 msgstr ""
 "Sie sind in einem partiellen Checkout mit %d%% vorhandenen versionierten "
 "Dateien."
 
-#: wt-status.c:1731
+#: wt-status.c:1733
 msgid "On branch "
 msgstr "Auf Branch "
 
-#: wt-status.c:1738
+#: wt-status.c:1740
 msgid "interactive rebase in progress; onto "
 msgstr "interaktives Rebase im Gange; auf "
 
-#: wt-status.c:1740
+#: wt-status.c:1742
 msgid "rebase in progress; onto "
 msgstr "Rebase im Gange; auf "
 
-#: wt-status.c:1750
+#: wt-status.c:1747
+msgid "HEAD detached at "
+msgstr "HEAD losgelöst bei "
+
+#: wt-status.c:1749
+msgid "HEAD detached from "
+msgstr "HEAD losgelöst von "
+
+#: wt-status.c:1752
 msgid "Not currently on any branch."
 msgstr "Im Moment auf keinem Branch."
 
-#: wt-status.c:1767
+#: wt-status.c:1769
 msgid "Initial commit"
 msgstr "Initialer Commit"
 
-#: wt-status.c:1768
+#: wt-status.c:1770
 msgid "No commits yet"
 msgstr "Noch keine Commits"
 
-#: wt-status.c:1782
+#: wt-status.c:1784
 msgid "Untracked files"
 msgstr "Unversionierte Dateien"
 
-#: wt-status.c:1784
+#: wt-status.c:1786
 msgid "Ignored files"
 msgstr "Ignorierte Dateien"
 
-#: wt-status.c:1788
+#: wt-status.c:1790
 #, c-format
 msgid ""
 "It took %.2f seconds to enumerate untracked files. 'status -uno'\n"
@@ -9781,32 +10074,32 @@ msgstr ""
 "'status -uno' könnte das beschleunigen, aber Sie müssen darauf achten,\n"
 "neue Dateien selbstständig hinzuzufügen (siehe 'git help status')."
 
-#: wt-status.c:1794
+#: wt-status.c:1796
 #, c-format
 msgid "Untracked files not listed%s"
 msgstr "Unversionierte Dateien nicht aufgelistet%s"
 
-#: wt-status.c:1796
+#: wt-status.c:1798
 msgid " (use -u option to show untracked files)"
 msgstr " (benutzen Sie die Option -u, um unversionierte Dateien anzuzeigen)"
 
-#: wt-status.c:1802
+#: wt-status.c:1804
 msgid "No changes"
 msgstr "Keine Änderungen"
 
-#: wt-status.c:1807
+#: wt-status.c:1809
 #, c-format
 msgid "no changes added to commit (use \"git add\" and/or \"git commit -a\")\n"
 msgstr ""
 "keine Änderungen zum Commit vorgemerkt (benutzen Sie \"git add\" und/oder "
 "\"git commit -a\")\n"
 
-#: wt-status.c:1811
+#: wt-status.c:1813
 #, c-format
 msgid "no changes added to commit\n"
 msgstr "keine Änderungen zum Commit vorgemerkt\n"
 
-#: wt-status.c:1815
+#: wt-status.c:1817
 #, c-format
 msgid ""
 "nothing added to commit but untracked files present (use \"git add\" to "
@@ -9815,67 +10108,67 @@ msgstr ""
 "nichts zum Commit vorgemerkt, aber es gibt unversionierte Dateien\n"
 "(benutzen Sie \"git add\" zum Versionieren)\n"
 
-#: wt-status.c:1819
+#: wt-status.c:1821
 #, c-format
 msgid "nothing added to commit but untracked files present\n"
 msgstr "nichts zum Commit vorgemerkt, aber es gibt unversionierte Dateien\n"
 
-#: wt-status.c:1823
+#: wt-status.c:1825
 #, c-format
 msgid "nothing to commit (create/copy files and use \"git add\" to track)\n"
 msgstr ""
 "nichts zu committen (erstellen/kopieren Sie Dateien und benutzen\n"
 "Sie \"git add\" zum Versionieren)\n"
 
-#: wt-status.c:1827 wt-status.c:1833
+#: wt-status.c:1829 wt-status.c:1835
 #, c-format
 msgid "nothing to commit\n"
 msgstr "nichts zu committen\n"
 
-#: wt-status.c:1830
+#: wt-status.c:1832
 #, c-format
 msgid "nothing to commit (use -u to show untracked files)\n"
 msgstr ""
 "nichts zu committen (benutzen Sie die Option -u, um unversionierte Dateien "
 "anzuzeigen)\n"
 
-#: wt-status.c:1835
+#: wt-status.c:1837
 #, c-format
 msgid "nothing to commit, working tree clean\n"
 msgstr "nichts zu committen, Arbeitsverzeichnis unverändert\n"
 
-#: wt-status.c:1940
+#: wt-status.c:1942
 msgid "No commits yet on "
 msgstr "Noch keine Commits in "
 
-#: wt-status.c:1944
+#: wt-status.c:1946
 msgid "HEAD (no branch)"
 msgstr "HEAD (kein Branch)"
 
-#: wt-status.c:1975
+#: wt-status.c:1977
 msgid "different"
 msgstr "unterschiedlich"
 
-#: wt-status.c:1977 wt-status.c:1985
+#: wt-status.c:1979 wt-status.c:1987
 msgid "behind "
 msgstr "hinterher "
 
-#: wt-status.c:1980 wt-status.c:1983
+#: wt-status.c:1982 wt-status.c:1985
 msgid "ahead "
 msgstr "voraus "
 
 #. TRANSLATORS: the action is e.g. "pull with rebase"
-#: wt-status.c:2505
+#: wt-status.c:2507
 #, c-format
 msgid "cannot %s: You have unstaged changes."
 msgstr ""
 "%s nicht möglich: Sie haben Änderungen, die nicht zum Commit vorgemerkt sind."
 
-#: wt-status.c:2511
+#: wt-status.c:2513
 msgid "additionally, your index contains uncommitted changes."
 msgstr "Zusätzlich enthält die Staging-Area nicht committete Änderungen."
 
-#: wt-status.c:2513
+#: wt-status.c:2515
 #, c-format
 msgid "cannot %s: Your index contains uncommitted changes."
 msgstr ""
@@ -9890,134 +10183,139 @@ msgstr "Konnte '%s' nicht entfernen."
 msgid "git add [<options>] [--] <pathspec>..."
 msgstr "git add [<Optionen>] [--] <Pfadspezifikation>..."
 
-#: builtin/add.c:88
+#: builtin/add.c:58
+#, c-format
+msgid "cannot chmod %cx '%s'"
+msgstr "kann chmod %cx '%s' nicht ausführen"
+
+#: builtin/add.c:96
 #, c-format
 msgid "unexpected diff status %c"
 msgstr "unerwarteter Differenz-Status %c"
 
-#: builtin/add.c:93 builtin/commit.c:285
+#: builtin/add.c:101 builtin/commit.c:285
 msgid "updating files failed"
 msgstr "Aktualisierung der Dateien fehlgeschlagen"
 
-#: builtin/add.c:103
+#: builtin/add.c:111
 #, c-format
 msgid "remove '%s'\n"
 msgstr "lösche '%s'\n"
 
-#: builtin/add.c:178
+#: builtin/add.c:186
 msgid "Unstaged changes after refreshing the index:"
 msgstr ""
 "Nicht zum Commit vorgemerkte Änderungen nach Aktualisierung der Staging-Area:"
 
-#: builtin/add.c:272 builtin/rev-parse.c:908
+#: builtin/add.c:280 builtin/rev-parse.c:991
 msgid "Could not read the index"
 msgstr "Konnte den Index nicht lesen"
 
-#: builtin/add.c:283
+#: builtin/add.c:291
 #, c-format
 msgid "Could not open '%s' for writing."
 msgstr "Konnte '%s' nicht zum Schreiben öffnen."
 
-#: builtin/add.c:287
+#: builtin/add.c:295
 msgid "Could not write patch"
 msgstr "Konnte Patch nicht schreiben"
 
-#: builtin/add.c:290
+#: builtin/add.c:298
 msgid "editing patch failed"
 msgstr "Bearbeitung des Patches fehlgeschlagen"
 
-#: builtin/add.c:293
+#: builtin/add.c:301
 #, c-format
 msgid "Could not stat '%s'"
 msgstr "Konnte Verzeichnis '%s' nicht lesen"
 
-#: builtin/add.c:295
+#: builtin/add.c:303
 msgid "Empty patch. Aborted."
 msgstr "Leerer Patch. Abgebrochen."
 
-#: builtin/add.c:300
+#: builtin/add.c:308
 #, c-format
 msgid "Could not apply '%s'"
 msgstr "Konnte '%s' nicht anwenden."
 
-#: builtin/add.c:308
+#: builtin/add.c:316
 msgid "The following paths are ignored by one of your .gitignore files:\n"
 msgstr ""
 "Die folgenden Pfade werden durch eine Ihrer \".gitignore\" Dateien "
 "ignoriert:\n"
 
-#: builtin/add.c:328 builtin/clean.c:904 builtin/fetch.c:166 builtin/mv.c:124
+#: builtin/add.c:336 builtin/clean.c:904 builtin/fetch.c:169 builtin/mv.c:124
 #: builtin/prune-packed.c:14 builtin/pull.c:204 builtin/push.c:559
 #: builtin/remote.c:1427 builtin/rm.c:242 builtin/send-pack.c:190
 msgid "dry run"
 msgstr "Probelauf"
 
-#: builtin/add.c:331
+#: builtin/add.c:339
 msgid "interactive picking"
 msgstr "interaktives Auswählen"
 
-#: builtin/add.c:332 builtin/checkout.c:1547 builtin/reset.c:308
+#: builtin/add.c:340 builtin/checkout.c:1546 builtin/reset.c:308
 msgid "select hunks interactively"
 msgstr "Blöcke interaktiv auswählen"
 
-#: builtin/add.c:333
+#: builtin/add.c:341
 msgid "edit current diff and apply"
 msgstr "aktuelle Unterschiede editieren und anwenden"
 
-#: builtin/add.c:334
+#: builtin/add.c:342
 msgid "allow adding otherwise ignored files"
 msgstr "das Hinzufügen andernfalls ignorierter Dateien erlauben"
 
-#: builtin/add.c:335
+#: builtin/add.c:343
 msgid "update tracked files"
 msgstr "versionierte Dateien aktualisieren"
 
-#: builtin/add.c:336
+#: builtin/add.c:344
 msgid "renormalize EOL of tracked files (implies -u)"
 msgstr ""
 "erneutes Normalisieren der Zeilenenden von versionierten Dateien (impliziert "
 "-u)"
 
-#: builtin/add.c:337
+#: builtin/add.c:345
 msgid "record only the fact that the path will be added later"
 msgstr "nur speichern, dass der Pfad später hinzugefügt werden soll"
 
-#: builtin/add.c:338
+#: builtin/add.c:346
 msgid "add changes from all tracked and untracked files"
 msgstr ""
 "Änderungen von allen versionierten und unversionierten Dateien hinzufügen"
 
-#: builtin/add.c:341
+#: builtin/add.c:349
 msgid "ignore paths removed in the working tree (same as --no-all)"
 msgstr "gelöschte Pfade im Arbeitsverzeichnis ignorieren (genau wie --no-all)"
 
-#: builtin/add.c:343
+#: builtin/add.c:351
 msgid "don't add, only refresh the index"
 msgstr "nichts hinzufügen, nur den Index aktualisieren"
 
-#: builtin/add.c:344
+#: builtin/add.c:352
 msgid "just skip files which cannot be added because of errors"
 msgstr ""
 "Dateien überspringen, die aufgrund von Fehlern nicht hinzugefügt werden "
 "konnten"
 
-#: builtin/add.c:345
+#: builtin/add.c:353
 msgid "check if - even missing - files are ignored in dry run"
 msgstr "prüfen ob - auch fehlende - Dateien im Probelauf ignoriert werden"
 
-#: builtin/add.c:347 builtin/update-index.c:1004
+#: builtin/add.c:355 builtin/update-index.c:1004
 msgid "override the executable bit of the listed files"
 msgstr "das \"ausführbar\"-Bit der aufgelisteten Dateien überschreiben"
 
-#: builtin/add.c:349
+#: builtin/add.c:357
 msgid "warn when adding an embedded repository"
 msgstr "warnen wenn eingebettetes Repository hinzugefügt wird"
 
-#: builtin/add.c:351
+#: builtin/add.c:359
 msgid "backend for `git stash -p`"
 msgstr "Backend für `git stash -p`"
 
-#: builtin/add.c:369
+#: builtin/add.c:377
 #, c-format
 msgid ""
 "You've added another git repository inside your current repository.\n"
@@ -10051,12 +10349,12 @@ msgstr ""
 "\n"
 "Siehe \"git help submodule\" für weitere Informationen."
 
-#: builtin/add.c:397
+#: builtin/add.c:405
 #, c-format
 msgid "adding embedded git repository: %s"
 msgstr "Füge eingebettetes Repository hinzu: %s"
 
-#: builtin/add.c:416
+#: builtin/add.c:424
 msgid ""
 "Use -f if you really want to add them.\n"
 "Turn this message off by running\n"
@@ -10066,52 +10364,48 @@ msgstr ""
 "Um diese Meldung abzuschalten, führen Sie folgenden Befehl aus:\n"
 "\"git config advice.addIgnoredFile false\""
 
-#: builtin/add.c:425
+#: builtin/add.c:433
 msgid "adding files failed"
 msgstr "Hinzufügen von Dateien fehlgeschlagen"
 
-#: builtin/add.c:453 builtin/commit.c:345
+#: builtin/add.c:461 builtin/commit.c:345
 msgid "--pathspec-from-file is incompatible with --interactive/--patch"
-msgstr ""
-"Die Optionen --pathspec-from-file und --interactive/--patch sind "
-"inkompatibel."
+msgstr "--pathspec-from-file und --interactive/--patch sind inkompatibel"
 
-#: builtin/add.c:470
+#: builtin/add.c:478
 msgid "--pathspec-from-file is incompatible with --edit"
-msgstr "Die Optionen --pathspec-from-file und --edit sind inkompatibel."
+msgstr "--pathspec-from-file und --edit sind inkompatibel"
 
-#: builtin/add.c:482
+#: builtin/add.c:490
 msgid "-A and -u are mutually incompatible"
-msgstr "Die Optionen -A und -u sind zueinander inkompatibel."
+msgstr "-A und -u sind zueinander inkompatibel"
 
-#: builtin/add.c:485
+#: builtin/add.c:493
 msgid "Option --ignore-missing can only be used together with --dry-run"
 msgstr ""
-"Die Option --ignore-missing kann nur zusammen mit --dry-run verwendet werden."
+"Die Option --ignore-missing kann nur zusammen mit --dry-run verwendet werden"
 
-#: builtin/add.c:489
+#: builtin/add.c:497
 #, c-format
 msgid "--chmod param '%s' must be either -x or +x"
 msgstr "--chmod Parameter '%s' muss entweder -x oder +x sein"
 
-#: builtin/add.c:507 builtin/checkout.c:1715 builtin/commit.c:351
-#: builtin/reset.c:328 builtin/rm.c:272 builtin/stash.c:1502
+#: builtin/add.c:515 builtin/checkout.c:1714 builtin/commit.c:351
+#: builtin/reset.c:328 builtin/rm.c:272 builtin/stash.c:1569
 msgid "--pathspec-from-file is incompatible with pathspec arguments"
-msgstr ""
-"Die Option --pathspec-from-file ist inkompatibel mit\n"
-"Pfadspezifikation-Argumenten."
+msgstr "--pathspec-from-file ist inkompatibel mit Pfadspezifikation-Argumenten"
 
-#: builtin/add.c:514 builtin/checkout.c:1727 builtin/commit.c:357
-#: builtin/reset.c:334 builtin/rm.c:278 builtin/stash.c:1508
+#: builtin/add.c:522 builtin/checkout.c:1726 builtin/commit.c:357
+#: builtin/reset.c:334 builtin/rm.c:278 builtin/stash.c:1575
 msgid "--pathspec-file-nul requires --pathspec-from-file"
-msgstr "Die Option --pathspec-file-nul benötigt --pathspec-from-file"
+msgstr "--pathspec-file-nul benötigt --pathspec-from-file"
 
-#: builtin/add.c:518
+#: builtin/add.c:526
 #, c-format
 msgid "Nothing specified, nothing added.\n"
 msgstr "Nichts spezifiziert, nichts hinzugefügt.\n"
 
-#: builtin/add.c:520
+#: builtin/add.c:528
 msgid ""
 "Maybe you wanted to say 'git add .'?\n"
 "Turn this message off by running\n"
@@ -10375,7 +10669,7 @@ msgid "allow fall back on 3way merging if needed"
 msgstr "erlaube, falls notwendig, das Zurückfallen auf einen 3-Wege-Merge"
 
 #: builtin/am.c:2225 builtin/init-db.c:560 builtin/prune-packed.c:16
-#: builtin/repack.c:335 builtin/stash.c:815
+#: builtin/repack.c:334 builtin/stash.c:882
 msgid "be quiet"
 msgstr "weniger Ausgaben"
 
@@ -10418,17 +10712,17 @@ msgid "pass it through git-apply"
 msgstr "an git-apply übergeben"
 
 #: builtin/am.c:2263 builtin/commit.c:1395 builtin/fmt-merge-msg.c:17
-#: builtin/fmt-merge-msg.c:20 builtin/grep.c:903 builtin/merge.c:260
+#: builtin/fmt-merge-msg.c:20 builtin/grep.c:904 builtin/merge.c:261
 #: builtin/pull.c:141 builtin/pull.c:200 builtin/pull.c:217
-#: builtin/rebase.c:1341 builtin/repack.c:346 builtin/repack.c:350
-#: builtin/repack.c:352 builtin/show-branch.c:650 builtin/show-ref.c:172
-#: builtin/tag.c:404 parse-options.h:154 parse-options.h:175
+#: builtin/rebase.c:1347 builtin/repack.c:345 builtin/repack.c:349
+#: builtin/repack.c:351 builtin/show-branch.c:650 builtin/show-ref.c:172
+#: builtin/tag.c:436 parse-options.h:154 parse-options.h:175
 #: parse-options.h:316
 msgid "n"
 msgstr "Anzahl"
 
-#: builtin/am.c:2269 builtin/branch.c:661 builtin/bugreport.c:136
-#: builtin/for-each-ref.c:38 builtin/replace.c:556 builtin/tag.c:438
+#: builtin/am.c:2269 builtin/branch.c:670 builtin/bugreport.c:136
+#: builtin/for-each-ref.c:38 builtin/replace.c:556 builtin/tag.c:470
 #: builtin/verify-tag.c:38
 msgid "format"
 msgstr "Format"
@@ -10454,12 +10748,12 @@ msgid "skip the current patch"
 msgstr "den aktuellen Patch auslassen"
 
 #: builtin/am.c:2287
-msgid "restore the original branch and abort the patching operation."
+msgid "restore the original branch and abort the patching operation"
 msgstr ""
 "ursprünglichen Branch wiederherstellen und Anwendung der Patches abbrechen"
 
 #: builtin/am.c:2290
-msgid "abort the patching operation but keep HEAD where it is."
+msgid "abort the patching operation but keep HEAD where it is"
 msgstr "Patch-Operation abbrechen, aber HEAD an aktueller Stelle belassen"
 
 #: builtin/am.c:2294
@@ -10475,12 +10769,12 @@ msgid "use current timestamp for author date"
 msgstr "aktuellen Zeitstempel als Autor-Datum verwenden"
 
 #: builtin/am.c:2303 builtin/commit-tree.c:120 builtin/commit.c:1515
-#: builtin/merge.c:297 builtin/pull.c:175 builtin/rebase.c:536
-#: builtin/rebase.c:1394 builtin/revert.c:117 builtin/tag.c:419
+#: builtin/merge.c:298 builtin/pull.c:175 builtin/rebase.c:538
+#: builtin/rebase.c:1400 builtin/revert.c:117 builtin/tag.c:451
 msgid "key-id"
 msgstr "GPG-Schlüsselkennung"
 
-#: builtin/am.c:2304 builtin/rebase.c:537 builtin/rebase.c:1395
+#: builtin/am.c:2304 builtin/rebase.c:539 builtin/rebase.c:1401
 msgid "GPG-sign commits"
 msgstr "Commits mit GPG signieren"
 
@@ -10561,28 +10855,12 @@ msgid "git bisect--helper --bisect-reset [<commit>]"
 msgstr "git bisect--helper --bisect-reset [<Commit>]"
 
 #: builtin/bisect--helper.c:24
-msgid ""
-"git bisect--helper --bisect-write [--no-log] <state> <revision> <good_term> "
-"<bad_term>"
-msgstr ""
-"git bisect--helper --bisect-write [--no-log] <Zustand> <Revision> "
-"<Begriff_gut> <Begriff_schlecht>"
-
-#: builtin/bisect--helper.c:25
-msgid ""
-"git bisect--helper --bisect-check-and-set-terms <command> <good_term> "
-"<bad_term>"
-msgstr ""
-"git bisect--helper --bisect-check-and-set-terms <Befehl> <Begriff_gut> "
-"<Begriff_schlecht>"
-
-#: builtin/bisect--helper.c:26
 msgid "git bisect--helper --bisect-next-check <good_term> <bad_term> [<term>]"
 msgstr ""
 "git bisect--helper --bisect-next-check <Begriff_gut> <Begriff_schlecht> "
 "[<Begriff>]"
 
-#: builtin/bisect--helper.c:27
+#: builtin/bisect--helper.c:25
 msgid ""
 "git bisect--helper --bisect-terms [--term-good | --term-old | --term-bad | --"
 "term-new]"
@@ -10590,7 +10868,7 @@ msgstr ""
 "git bisect--helper --bisect-terms [--term-good | --term-old | --term-bad | --"
 "term-new]"
 
-#: builtin/bisect--helper.c:28
+#: builtin/bisect--helper.c:26
 msgid ""
 "git bisect--helper --bisect-start [--term-{new,bad}=<term> --term-{old,good}"
 "=<term>] [--no-checkout] [--first-parent] [<bad> [<good>...]] [--] "
@@ -10600,62 +10878,66 @@ msgstr ""
 "good}=<Begriff>] [--no-checkout] [--first-parent] [<schlecht> [<gut>...]] "
 "[--] [<Pfade>...]"
 
-#: builtin/bisect--helper.c:30
+#: builtin/bisect--helper.c:28
 msgid "git bisect--helper --bisect-next"
 msgstr "git bisect--helper --bisect-next"
 
-#: builtin/bisect--helper.c:31
-msgid "git bisect--helper --bisect-auto-next"
-msgstr "git bisect--helper --bisect-auto-next"
-
-#: builtin/bisect--helper.c:32
+#: builtin/bisect--helper.c:29
 msgid "git bisect--helper --bisect-state (bad|new) [<rev>]"
 msgstr "git bisect--helper --bisect-state (bad|new) [<Commit>]"
 
-#: builtin/bisect--helper.c:33
+#: builtin/bisect--helper.c:30
 msgid "git bisect--helper --bisect-state (good|old) [<rev>...]"
 msgstr "git bisect--helper --bisect-state (good|old) [<Commit>...]"
 
-#: builtin/bisect--helper.c:108
+#: builtin/bisect--helper.c:31
+msgid "git bisect--helper --bisect-replay <filename>"
+msgstr "git bisect--helper --bisect-replay <Dateiname>"
+
+#: builtin/bisect--helper.c:32
+msgid "git bisect--helper --bisect-skip [(<rev>|<range>)...]"
+msgstr "git bisect--helper --bisect-skip [(<Commit>|<Bereich>)...]"
+
+#: builtin/bisect--helper.c:107
 #, c-format
 msgid "cannot open file '%s' in mode '%s'"
 msgstr "kann Datei '%s' nicht im Modus '%s' öffnen"
 
-#: builtin/bisect--helper.c:115
+#: builtin/bisect--helper.c:114
 #, c-format
 msgid "could not write to file '%s'"
 msgstr "konnte nicht in Datei '%s' schreiben"
 
-#: builtin/bisect--helper.c:154
+#: builtin/bisect--helper.c:153
 #, c-format
 msgid "'%s' is not a valid term"
 msgstr "'%s' ist kein gültiger Begriff"
 
-#: builtin/bisect--helper.c:158
+#: builtin/bisect--helper.c:157
 #, c-format
 msgid "can't use the builtin command '%s' as a term"
 msgstr "kann den eingebauten Befehl '%s' nicht als Begriff verwenden"
 
-#: builtin/bisect--helper.c:168
+#: builtin/bisect--helper.c:167
 #, c-format
 msgid "can't change the meaning of the term '%s'"
 msgstr "kann die Bedeutung von dem Begriff '%s' nicht ändern"
 
-#: builtin/bisect--helper.c:178
+#: builtin/bisect--helper.c:177
 msgid "please use two different terms"
 msgstr "bitte verwenden Sie zwei verschiedene Begriffe"
 
-#: builtin/bisect--helper.c:194
+#: builtin/bisect--helper.c:193
 #, c-format
 msgid "We are not bisecting.\n"
 msgstr "Keine binäre Suche im Gange.\n"
 
-#: builtin/bisect--helper.c:202
+#: builtin/bisect--helper.c:201
 #, c-format
 msgid "'%s' is not a valid commit"
 msgstr "'%s' ist kein gültiger Commit"
 
-#: builtin/bisect--helper.c:211
+#: builtin/bisect--helper.c:210
 #, c-format
 msgid ""
 "could not check out original HEAD '%s'. Try 'git bisect reset <commit>'."
@@ -10663,27 +10945,27 @@ msgstr ""
 "Konnte den ursprünglichen HEAD '%s' nicht auschecken.\n"
 "Versuchen Sie 'git bisect reset <Commit>'."
 
-#: builtin/bisect--helper.c:255
+#: builtin/bisect--helper.c:254
 #, c-format
 msgid "Bad bisect_write argument: %s"
 msgstr "Ungültiges \"bisect_write\" Argument: %s"
 
-#: builtin/bisect--helper.c:260
+#: builtin/bisect--helper.c:259
 #, c-format
 msgid "couldn't get the oid of the rev '%s'"
-msgstr "Konnte die OID der Revision '%s' nicht erhalten."
+msgstr "konnte die OID der Revision '%s' nicht erhalten"
 
-#: builtin/bisect--helper.c:272
+#: builtin/bisect--helper.c:271
 #, c-format
 msgid "couldn't open the file '%s'"
-msgstr "Konnte die Datei '%s' nicht öffnen."
+msgstr "konnte die Datei '%s' nicht öffnen"
 
-#: builtin/bisect--helper.c:298
+#: builtin/bisect--helper.c:297
 #, c-format
 msgid "Invalid command: you're currently in a %s/%s bisect"
-msgstr "Ungültiger Befehl: Sie sind gerade bei einer binären %s/%s Suche."
+msgstr "Ungültiger Befehl: Sie sind gerade innerhalb einer binären %s/%s Suche"
 
-#: builtin/bisect--helper.c:325
+#: builtin/bisect--helper.c:324
 #, c-format
 msgid ""
 "You need to give me at least one %s and %s revision.\n"
@@ -10692,7 +10974,7 @@ msgstr ""
 "Sie müssen mindestens einen \"%s\" und einen \"%s\" Commit angeben.\n"
 "Sie können dafür \"git bisect %s\" und \"git bisect %s\" benutzen."
 
-#: builtin/bisect--helper.c:329
+#: builtin/bisect--helper.c:328
 #, c-format
 msgid ""
 "You need to start by \"git bisect start\".\n"
@@ -10703,24 +10985,24 @@ msgstr ""
 "Danach müssen Sie mindestens einen \"%s\" und einen \"%s\" Commit angeben.\n"
 "Sie können dafür \"git bisect %s\" und \"git bisect %s\" benutzen."
 
-#: builtin/bisect--helper.c:349
+#: builtin/bisect--helper.c:348
 #, c-format
 msgid "bisecting only with a %s commit"
-msgstr "Binäre Suche nur mit einem %s Commit."
+msgstr "binäre Suche nur mit einem %s Commit"
 
 #. TRANSLATORS: Make sure to include [Y] and [n] in your
 #. translation. The program will only accept English input
 #. at this point.
 #.
-#: builtin/bisect--helper.c:357
+#: builtin/bisect--helper.c:356
 msgid "Are you sure [Y/n]? "
 msgstr "Sind Sie sicher [Y/n]? "
 
-#: builtin/bisect--helper.c:418
+#: builtin/bisect--helper.c:417
 msgid "no terms defined"
-msgstr "Keine Begriffe definiert."
+msgstr "keine Begriffe definiert"
 
-#: builtin/bisect--helper.c:421
+#: builtin/bisect--helper.c:420
 #, c-format
 msgid ""
 "Your current terms are %s for the old state\n"
@@ -10729,7 +11011,7 @@ msgstr ""
 "Ihre aktuellen Begriffe sind %s für den alten Zustand\n"
 "und %s für den neuen Zustand.\n"
 
-#: builtin/bisect--helper.c:431
+#: builtin/bisect--helper.c:430
 #, c-format
 msgid ""
 "invalid argument %s for 'git bisect terms'.\n"
@@ -10738,55 +11020,55 @@ msgstr ""
 "Ungültiges Argument %s für 'git bisect terms'.\n"
 "Unterstützte Optionen sind: --term-good|--term-old und --term-bad|--term-new."
 
-#: builtin/bisect--helper.c:498
+#: builtin/bisect--helper.c:497 builtin/bisect--helper.c:1014
 msgid "revision walk setup failed\n"
 msgstr "Einrichtung des Revisionsgangs fehlgeschlagen\n"
 
-#: builtin/bisect--helper.c:520
+#: builtin/bisect--helper.c:519
 #, c-format
 msgid "could not open '%s' for appending"
 msgstr "konnte '%s' nicht zum Anhängen öffnen"
 
-#: builtin/bisect--helper.c:639 builtin/bisect--helper.c:652
+#: builtin/bisect--helper.c:638 builtin/bisect--helper.c:651
 msgid "'' is not a valid term"
 msgstr "'' ist kein gültiger Begriff"
 
-#: builtin/bisect--helper.c:662
+#: builtin/bisect--helper.c:661
 #, c-format
 msgid "unrecognized option: '%s'"
 msgstr "nicht erkannte Option: '%s'"
 
-#: builtin/bisect--helper.c:666
+#: builtin/bisect--helper.c:665
 #, c-format
 msgid "'%s' does not appear to be a valid revision"
 msgstr "'%s' scheint kein gültiger Commit zu sein"
 
-#: builtin/bisect--helper.c:697
+#: builtin/bisect--helper.c:696
 msgid "bad HEAD - I need a HEAD"
 msgstr "ungültiger HEAD - HEAD wird benötigt"
 
-#: builtin/bisect--helper.c:712
+#: builtin/bisect--helper.c:711
 #, c-format
 msgid "checking out '%s' failed. Try 'git bisect start <valid-branch>'."
 msgstr ""
 "Auschecken von '%s' fehlgeschlagen. Versuchen Sie 'git bisect start "
 "<gültiger-Branch>'."
 
-#: builtin/bisect--helper.c:733
+#: builtin/bisect--helper.c:732
 msgid "won't bisect on cg-seek'ed tree"
 msgstr ""
 "binäre Suche auf einem durch 'cg-seek' geändertem Verzeichnis nicht möglich"
 
-#: builtin/bisect--helper.c:736
+#: builtin/bisect--helper.c:735
 msgid "bad HEAD - strange symbolic ref"
 msgstr "ungültiger HEAD - merkwürdige symbolische Referenz"
 
-#: builtin/bisect--helper.c:756
+#: builtin/bisect--helper.c:755
 #, c-format
 msgid "invalid ref: '%s'"
 msgstr "ungültige Referenz: '%s'"
 
-#: builtin/bisect--helper.c:814
+#: builtin/bisect--helper.c:813
 msgid "You need to start by \"git bisect start\"\n"
 msgstr "Sie müssen mit \"git bisect start\" beginnen\n"
 
@@ -10794,93 +11076,101 @@ msgstr "Sie müssen mit \"git bisect start\" beginnen\n"
 #. translation. The program will only accept English input
 #. at this point.
 #.
-#: builtin/bisect--helper.c:825
+#: builtin/bisect--helper.c:824
 msgid "Do you want me to do it for you [Y/n]? "
 msgstr "Wollen Sie, dass ich es für Sie mache [Y/n]? "
 
-#: builtin/bisect--helper.c:843
+#: builtin/bisect--helper.c:842
 msgid "Please call `--bisect-state` with at least one argument"
 msgstr "Bitte führen Sie `--bisect-state` mit mindestens einem Argument aus"
 
-#: builtin/bisect--helper.c:856
+#: builtin/bisect--helper.c:855
 #, c-format
 msgid "'git bisect %s' can take only one argument."
 msgstr "'git bisect %s' kann nur ein Argument entgegennehmen."
 
-#: builtin/bisect--helper.c:868 builtin/bisect--helper.c:879
+#: builtin/bisect--helper.c:867 builtin/bisect--helper.c:878
 #, c-format
 msgid "Bad rev input: %s"
 msgstr "Ungültige Referenz-Eingabe: %s"
 
-#: builtin/bisect--helper.c:924
-msgid "reset the bisection state"
-msgstr "den Zustand der binären Suche zurücksetzen"
+#: builtin/bisect--helper.c:912
+msgid "We are not bisecting."
+msgstr "Keine binäre Suche im Gange."
+
+#: builtin/bisect--helper.c:962
+#, c-format
+msgid "'%s'?? what are you talking about?"
+msgstr "'%s'?? Was reden Sie da?"
 
-#: builtin/bisect--helper.c:926
-msgid "write out the bisection state in BISECT_LOG"
-msgstr "den Zustand der binären Suche nach BISECT_LOG schreiben"
+#: builtin/bisect--helper.c:974
+#, c-format
+msgid "cannot read file '%s' for replaying"
+msgstr "kann Datei '%s' nicht für die Wiederholung lesen"
 
-#: builtin/bisect--helper.c:928
-msgid "check and set terms in a bisection state"
-msgstr "Begriffe innerhalb einer binären Suche prüfen und setzen"
+#: builtin/bisect--helper.c:1047
+msgid "reset the bisection state"
+msgstr "den Zustand der binären Suche zurücksetzen"
 
-#: builtin/bisect--helper.c:930
+#: builtin/bisect--helper.c:1049
 msgid "check whether bad or good terms exist"
 msgstr "prüfen, ob Begriffe für gute und schlechte Commits existieren"
 
-#: builtin/bisect--helper.c:932
+#: builtin/bisect--helper.c:1051
 msgid "print out the bisect terms"
 msgstr "die Begriffe für die binäre Suche ausgeben"
 
-#: builtin/bisect--helper.c:934
+#: builtin/bisect--helper.c:1053
 msgid "start the bisect session"
 msgstr "Sitzung für binäre Suche starten"
 
-#: builtin/bisect--helper.c:936
+#: builtin/bisect--helper.c:1055
 msgid "find the next bisection commit"
 msgstr "nächsten Commit für die binäre Suche finden"
 
-#: builtin/bisect--helper.c:938
-msgid "verify the next bisection state then checkout the next bisection commit"
-msgstr ""
-"überprüfe den nächsten Zustand der binären Suche, checke dann den nächsten "
-"Commit der binären Suche aus"
-
-#: builtin/bisect--helper.c:940
+#: builtin/bisect--helper.c:1057
 msgid "mark the state of ref (or refs)"
 msgstr "den Status der Referenz(en) markieren"
 
-#: builtin/bisect--helper.c:942
+#: builtin/bisect--helper.c:1059
+msgid "list the bisection steps so far"
+msgstr "die bisherigen Schritte der binären Suche auflisten"
+
+#: builtin/bisect--helper.c:1061
+msgid "replay the bisection process from the given file"
+msgstr "binäre Suche aus der angegebenen Datei wiederholen"
+
+#: builtin/bisect--helper.c:1063
+msgid "skip some commits for checkout"
+msgstr "einige Commits für das Auschecken überspringen"
+
+#: builtin/bisect--helper.c:1065
 msgid "no log for BISECT_WRITE"
 msgstr "kein Log für BISECT_WRITE"
 
-#: builtin/bisect--helper.c:957
+#: builtin/bisect--helper.c:1080
 msgid "--bisect-reset requires either no argument or a commit"
 msgstr "--bisect-reset benötigt entweder kein Argument oder ein Commit"
 
-#: builtin/bisect--helper.c:961
-msgid "--bisect-write requires either 4 or 5 arguments"
-msgstr "--bisect-write benötigt entweder 4 oder 5 Argumente"
-
-#: builtin/bisect--helper.c:967
-msgid "--check-and-set-terms requires 3 arguments"
-msgstr "--check-and-set-terms benötigt 3 Argumente"
-
-#: builtin/bisect--helper.c:973
+#: builtin/bisect--helper.c:1085
 msgid "--bisect-next-check requires 2 or 3 arguments"
 msgstr "--bisect-next-check benötigt 2 oder 3 Argumente"
 
-#: builtin/bisect--helper.c:979
+#: builtin/bisect--helper.c:1091
 msgid "--bisect-terms requires 0 or 1 argument"
 msgstr "--bisect-terms benötigt 0 oder 1 Argument"
 
-#: builtin/bisect--helper.c:988
+#: builtin/bisect--helper.c:1100
 msgid "--bisect-next requires 0 arguments"
 msgstr "--bisect-next benötigt 0 Argumente"
 
-#: builtin/bisect--helper.c:994
-msgid "--bisect-auto-next requires 0 arguments"
-msgstr "--bisect-auto-next benötigt 0 Argumente"
+#: builtin/bisect--helper.c:1111
+msgid "--bisect-log requires 0 arguments"
+msgstr "--bisect-log benötigt 0 Argumente"
+
+#: builtin/bisect--helper.c:1116
+msgid "no logfile given"
+msgstr "keine Log-Datei angegeben"
 
 #: builtin/blame.c:32
 msgid "git blame [<options>] [<rev-opts>] [<rev>] [--] <file>"
@@ -10899,142 +11189,146 @@ msgstr "erwarte eine Farbe: %s"
 msgid "must end with a color"
 msgstr "muss mit einer Farbe enden"
 
-#: builtin/blame.c:730
+#: builtin/blame.c:728
 #, c-format
 msgid "invalid color '%s' in color.blame.repeatedLines"
 msgstr "ungültige Farbe '%s' in color.blame.repeatedLines"
 
-#: builtin/blame.c:748
+#: builtin/blame.c:746
 msgid "invalid value for blame.coloring"
 msgstr "ungültiger Wert für blame.coloring"
 
-#: builtin/blame.c:847
+#: builtin/blame.c:845
 #, c-format
 msgid "cannot find revision %s to ignore"
 msgstr "konnte Commit %s zum Ignorieren nicht finden"
 
-#: builtin/blame.c:869
-msgid "Show blame entries as we find them, incrementally"
-msgstr "\"blame\"-Einträge schrittweise anzeigen, während wir sie generieren"
+#: builtin/blame.c:867
+msgid "show blame entries as we find them, incrementally"
+msgstr "\"blame\"-Einträge schrittweise anzeigen, während wir sie finden"
 
-#: builtin/blame.c:870
-msgid "Do not show object names of boundary commits (Default: off)"
-msgstr "Zeige keine Objektnamen für Grenz-Commits an (Standard: aus)"
+#: builtin/blame.c:868
+msgid "do not show object names of boundary commits (Default: off)"
+msgstr "keine Objektnamen für Grenz-Commits anzeigen (Standard: aus)"
 
-#: builtin/blame.c:871
-msgid "Do not treat root commits as boundaries (Default: off)"
+#: builtin/blame.c:869
+msgid "do not treat root commits as boundaries (Default: off)"
 msgstr "Root-Commits nicht als Grenzen behandeln (Standard: aus)"
 
-#: builtin/blame.c:872
-msgid "Show work cost statistics"
+#: builtin/blame.c:870
+msgid "show work cost statistics"
 msgstr "Statistiken zum Arbeitsaufwand anzeigen"
 
-#: builtin/blame.c:873
-msgid "Force progress reporting"
+#: builtin/blame.c:871 builtin/checkout.c:1503 builtin/clone.c:92
+#: builtin/commit-graph.c:84 builtin/commit-graph.c:222 builtin/fetch.c:175
+#: builtin/merge.c:297 builtin/multi-pack-index.c:27 builtin/pull.c:119
+#: builtin/push.c:575 builtin/send-pack.c:198
+msgid "force progress reporting"
 msgstr "Fortschrittsanzeige erzwingen"
 
-#: builtin/blame.c:874
-msgid "Show output score for blame entries"
+#: builtin/blame.c:872
+msgid "show output score for blame entries"
 msgstr "Ausgabebewertung für \"blame\"-Einträge anzeigen"
 
-#: builtin/blame.c:875
-msgid "Show original filename (Default: auto)"
+#: builtin/blame.c:873
+msgid "show original filename (Default: auto)"
 msgstr "ursprünglichen Dateinamen anzeigen (Standard: auto)"
 
-#: builtin/blame.c:876
-msgid "Show original linenumber (Default: off)"
+#: builtin/blame.c:874
+msgid "show original linenumber (Default: off)"
 msgstr "ursprüngliche Zeilennummer anzeigen (Standard: aus)"
 
-#: builtin/blame.c:877
-msgid "Show in a format designed for machine consumption"
+#: builtin/blame.c:875
+msgid "show in a format designed for machine consumption"
 msgstr "Anzeige in einem Format für maschinelle Auswertung"
 
-#: builtin/blame.c:878
-msgid "Show porcelain format with per-line commit information"
+#: builtin/blame.c:876
+msgid "show porcelain format with per-line commit information"
 msgstr ""
 "Anzeige in Format für Fremdprogramme mit Commit-Informationen pro Zeile"
 
-#: builtin/blame.c:879
-msgid "Use the same output mode as git-annotate (Default: off)"
+#: builtin/blame.c:877
+msgid "use the same output mode as git-annotate (Default: off)"
 msgstr ""
-"Den gleichen Ausgabemodus benutzen wie \"git-annotate\" (Standard: aus)"
+"den gleichen Ausgabemodus benutzen wie \"git-annotate\" (Standard: aus)"
 
-#: builtin/blame.c:880
-msgid "Show raw timestamp (Default: off)"
-msgstr "Unbearbeiteten Zeitstempel anzeigen (Standard: aus)"
+#: builtin/blame.c:878
+msgid "show raw timestamp (Default: off)"
+msgstr "unbearbeiteten Zeitstempel anzeigen (Standard: aus)"
 
-#: builtin/blame.c:881
-msgid "Show long commit SHA1 (Default: off)"
-msgstr "Langen Commit-SHA1 anzeigen (Standard: aus)"
+#: builtin/blame.c:879
+msgid "show long commit SHA1 (Default: off)"
+msgstr "langen Commit-SHA1 anzeigen (Standard: aus)"
 
-#: builtin/blame.c:882
-msgid "Suppress author name and timestamp (Default: off)"
-msgstr "Den Namen des Autors und den Zeitstempel unterdrücken (Standard: aus)"
+#: builtin/blame.c:880
+msgid "suppress author name and timestamp (Default: off)"
+msgstr "den Namen des Autors und den Zeitstempel unterdrücken (Standard: aus)"
 
-#: builtin/blame.c:883
-msgid "Show author email instead of name (Default: off)"
+#: builtin/blame.c:881
+msgid "show author email instead of name (Default: off)"
 msgstr ""
-"Anstatt des Namens die E-Mail-Adresse des Autors anzeigen (Standard: aus)"
+"statt des Namens die E-Mail-Adresse des Autors anzeigen (Standard: aus)"
 
-#: builtin/blame.c:884
-msgid "Ignore whitespace differences"
-msgstr "Unterschiede im Whitespace ignorieren"
+#: builtin/blame.c:882
+msgid "ignore whitespace differences"
+msgstr "Whitespace-Unterschiede ignorieren"
 
-#: builtin/blame.c:885 builtin/log.c:1813
+#: builtin/blame.c:883 builtin/log.c:1812
 msgid "rev"
 msgstr "Commit"
 
-#: builtin/blame.c:885
-msgid "Ignore <rev> when blaming"
-msgstr "Ignoriere <Commit> beim Ausführen von 'blame'"
+#: builtin/blame.c:883
+msgid "ignore <rev> when blaming"
+msgstr "ignoriere <Commit> beim Ausführen von 'blame'"
 
-#: builtin/blame.c:886
-msgid "Ignore revisions from <file>"
-msgstr "Ignoriere Commits aus <Datei>"
+#: builtin/blame.c:884
+msgid "ignore revisions from <file>"
+msgstr "ignoriere Commits aus <Datei>"
 
-#: builtin/blame.c:887
+#: builtin/blame.c:885
 msgid "color redundant metadata from previous line differently"
 msgstr "redundante Metadaten der vorherigen Zeile unterschiedlich einfärben"
 
-#: builtin/blame.c:888
+#: builtin/blame.c:886
 msgid "color lines by age"
 msgstr "Zeilen nach Alter einfärben"
 
-#: builtin/blame.c:889
-msgid "Spend extra cycles to find better match"
-msgstr "Länger arbeiten, um bessere Übereinstimmungen zu finden"
+#: builtin/blame.c:887
+msgid "spend extra cycles to find better match"
+msgstr ""
+"mehr Arbeitsschritte ausführen, um eine bessere Übereinstimmung zu finden"
 
-#: builtin/blame.c:890
-msgid "Use revisions from <file> instead of calling git-rev-list"
-msgstr "Commits von <Datei> benutzen, anstatt \"git-rev-list\" aufzurufen"
+#: builtin/blame.c:888
+msgid "use revisions from <file> instead of calling git-rev-list"
+msgstr "Commits von <Datei> benutzen, statt \"git-rev-list\" aufzurufen"
 
-#: builtin/blame.c:891
-msgid "Use <file>'s contents as the final image"
+#: builtin/blame.c:889
+msgid "use <file>'s contents as the final image"
 msgstr "Inhalte der <Datei>en als endgültiges Abbild benutzen"
 
-#: builtin/blame.c:892 builtin/blame.c:893
+#: builtin/blame.c:890 builtin/blame.c:891
 msgid "score"
 msgstr "Bewertung"
 
-#: builtin/blame.c:892
-msgid "Find line copies within and across files"
+#: builtin/blame.c:890
+msgid "find line copies within and across files"
 msgstr "kopierte Zeilen innerhalb oder zwischen Dateien finden"
 
-#: builtin/blame.c:893
-msgid "Find line movements within and across files"
+#: builtin/blame.c:891
+msgid "find line movements within and across files"
 msgstr "verschobene Zeilen innerhalb oder zwischen Dateien finden"
 
-#: builtin/blame.c:894
+#: builtin/blame.c:892
 msgid "range"
 msgstr "Bereich"
 
-#: builtin/blame.c:895
-msgid "Process only line range <start>,<end> or function :<funcname>"
+#: builtin/blame.c:893
+msgid "process only line range <start>,<end> or function :<funcname>"
 msgstr ""
-"Nur Zeilen im Bereich <Start>,<Ende> oder Funktion :<Funktionsname> "
+"nur Zeilen im Bereich <Start>,<Ende> oder Funktion :<Funktionsname> "
 "verarbeiten"
 
-#: builtin/blame.c:947
+#: builtin/blame.c:945
 msgid "--progress can't be used with --incremental or porcelain formats"
 msgstr ""
 "--progress kann nicht mit --incremental oder Formaten für Fremdprogramme\n"
@@ -11048,18 +11342,18 @@ msgstr ""
 #. your language may need more or fewer display
 #. columns.
 #.
-#: builtin/blame.c:998
+#: builtin/blame.c:996
 msgid "4 years, 11 months ago"
 msgstr "vor 4 Jahren und 11 Monaten"
 
-#: builtin/blame.c:1114
+#: builtin/blame.c:1112
 #, c-format
 msgid "file %s has only %lu line"
 msgid_plural "file %s has only %lu lines"
 msgstr[0] "Datei %s hat nur %lu Zeile"
 msgstr[1] "Datei %s hat nur %lu Zeilen"
 
-#: builtin/blame.c:1159
+#: builtin/blame.c:1157
 msgid "Blaming lines"
 msgstr "Verarbeite Zeilen"
 
@@ -11128,124 +11422,114 @@ msgstr ""
 msgid "Update of config-file failed"
 msgstr "Aktualisierung der Konfigurationsdatei fehlgeschlagen."
 
-#: builtin/branch.c:220
+#: builtin/branch.c:223
 msgid "cannot use -a with -d"
 msgstr "kann -a nicht mit -d benutzen"
 
-#: builtin/branch.c:226
+#: builtin/branch.c:230
 msgid "Couldn't look up commit object for HEAD"
 msgstr "Konnte Commit-Objekt für HEAD nicht nachschlagen."
 
-#: builtin/branch.c:240
+#: builtin/branch.c:244
 #, c-format
 msgid "Cannot delete branch '%s' checked out at '%s'"
 msgstr "Kann Branch '%s' nicht entfernen, ausgecheckt in '%s'."
 
-#: builtin/branch.c:255
+#: builtin/branch.c:259
 #, c-format
 msgid "remote-tracking branch '%s' not found."
 msgstr "Remote-Tracking-Branch '%s' nicht gefunden"
 
-#: builtin/branch.c:256
+#: builtin/branch.c:260
 #, c-format
 msgid "branch '%s' not found."
 msgstr "Branch '%s' nicht gefunden."
 
-#: builtin/branch.c:271
-#, c-format
-msgid "Error deleting remote-tracking branch '%s'"
-msgstr "Fehler beim Entfernen des Remote-Tracking-Branches '%s'"
-
-#: builtin/branch.c:272
-#, c-format
-msgid "Error deleting branch '%s'"
-msgstr "Fehler beim Entfernen des Branches '%s'"
-
-#: builtin/branch.c:279
+#: builtin/branch.c:291
 #, c-format
 msgid "Deleted remote-tracking branch %s (was %s).\n"
 msgstr "Remote-Tracking-Branch %s entfernt (war %s).\n"
 
-#: builtin/branch.c:280
+#: builtin/branch.c:292
 #, c-format
 msgid "Deleted branch %s (was %s).\n"
 msgstr "Branch %s entfernt (war %s).\n"
 
-#: builtin/branch.c:429 builtin/tag.c:61
+#: builtin/branch.c:438 builtin/tag.c:61
 msgid "unable to parse format string"
 msgstr "Konnte Formatierungsstring nicht parsen."
 
-#: builtin/branch.c:460
+#: builtin/branch.c:469
 msgid "could not resolve HEAD"
 msgstr "Konnte HEAD-Commit nicht auflösen."
 
-#: builtin/branch.c:466
+#: builtin/branch.c:475
 #, c-format
 msgid "HEAD (%s) points outside of refs/heads/"
 msgstr "HEAD (%s) wurde nicht unter \"refs/heads/\" gefunden!"
 
-#: builtin/branch.c:481
+#: builtin/branch.c:490
 #, c-format
 msgid "Branch %s is being rebased at %s"
 msgstr "Branch %s wird auf %s umgesetzt"
 
-#: builtin/branch.c:485
+#: builtin/branch.c:494
 #, c-format
 msgid "Branch %s is being bisected at %s"
 msgstr "Binäre Suche von Branch %s zu %s im Gange"
 
-#: builtin/branch.c:502
+#: builtin/branch.c:511
 msgid "cannot copy the current branch while not on any."
 msgstr ""
 "Kann den aktuellen Branch nicht kopieren, solange Sie sich auf keinem "
 "befinden."
 
-#: builtin/branch.c:504
+#: builtin/branch.c:513
 msgid "cannot rename the current branch while not on any."
 msgstr ""
 "Kann aktuellen Branch nicht umbenennen, solange Sie sich auf keinem befinden."
 
-#: builtin/branch.c:515
+#: builtin/branch.c:524
 #, c-format
 msgid "Invalid branch name: '%s'"
 msgstr "Ungültiger Branchname: '%s'"
 
-#: builtin/branch.c:544
+#: builtin/branch.c:553
 msgid "Branch rename failed"
 msgstr "Umbenennung des Branches fehlgeschlagen"
 
-#: builtin/branch.c:546
+#: builtin/branch.c:555
 msgid "Branch copy failed"
 msgstr "Kopie des Branches fehlgeschlagen"
 
-#: builtin/branch.c:550
+#: builtin/branch.c:559
 #, c-format
 msgid "Created a copy of a misnamed branch '%s'"
 msgstr "Kopie eines falsch benannten Branches '%s' erstellt."
 
-#: builtin/branch.c:553
+#: builtin/branch.c:562
 #, c-format
 msgid "Renamed a misnamed branch '%s' away"
 msgstr "falsch benannten Branch '%s' umbenannt"
 
-#: builtin/branch.c:559
+#: builtin/branch.c:568
 #, c-format
 msgid "Branch renamed to %s, but HEAD is not updated!"
 msgstr "Branch umbenannt zu %s, aber HEAD ist nicht aktualisiert!"
 
-#: builtin/branch.c:568
+#: builtin/branch.c:577
 msgid "Branch is renamed, but update of config-file failed"
 msgstr ""
 "Branch ist umbenannt, aber die Aktualisierung der Konfigurationsdatei ist "
 "fehlgeschlagen."
 
-#: builtin/branch.c:570
+#: builtin/branch.c:579
 msgid "Branch is copied, but update of config-file failed"
 msgstr ""
 "Branch wurde kopiert, aber die Aktualisierung der Konfigurationsdatei ist\n"
 "fehlgeschlagen."
 
-#: builtin/branch.c:586
+#: builtin/branch.c:595
 #, c-format
 msgid ""
 "Please edit the description for the branch\n"
@@ -11256,181 +11540,181 @@ msgstr ""
 "  %s\n"
 "Zeilen, die mit '%c' beginnen, werden entfernt.\n"
 
-#: builtin/branch.c:620
+#: builtin/branch.c:629
 msgid "Generic options"
 msgstr "Allgemeine Optionen"
 
-#: builtin/branch.c:622
+#: builtin/branch.c:631
 msgid "show hash and subject, give twice for upstream branch"
 msgstr "Hash und Betreff anzeigen; -vv: zusätzlich Upstream-Branch"
 
-#: builtin/branch.c:623
+#: builtin/branch.c:632
 msgid "suppress informational messages"
 msgstr "Informationsmeldungen unterdrücken"
 
-#: builtin/branch.c:624
+#: builtin/branch.c:633
 msgid "set up tracking mode (see git-pull(1))"
 msgstr "Modus zum Folgen von Branches einstellen (siehe git-pull(1))"
 
-#: builtin/branch.c:626
+#: builtin/branch.c:635
 msgid "do not use"
 msgstr "nicht verwenden"
 
-#: builtin/branch.c:628 builtin/rebase.c:532
+#: builtin/branch.c:637 builtin/rebase.c:534
 msgid "upstream"
 msgstr "Upstream"
 
-#: builtin/branch.c:628
+#: builtin/branch.c:637
 msgid "change the upstream info"
 msgstr "Informationen zum Upstream-Branch ändern"
 
-#: builtin/branch.c:629
+#: builtin/branch.c:638
 msgid "unset the upstream info"
 msgstr "Informationen zum Upstream-Branch entfernen"
 
-#: builtin/branch.c:630
+#: builtin/branch.c:639
 msgid "use colored output"
 msgstr "farbige Ausgaben verwenden"
 
-#: builtin/branch.c:631
+#: builtin/branch.c:640
 msgid "act on remote-tracking branches"
 msgstr "auf Remote-Tracking-Branches wirken"
 
-#: builtin/branch.c:633 builtin/branch.c:635
+#: builtin/branch.c:642 builtin/branch.c:644
 msgid "print only branches that contain the commit"
 msgstr "nur Branches ausgeben, die diesen Commit enthalten"
 
-#: builtin/branch.c:634 builtin/branch.c:636
+#: builtin/branch.c:643 builtin/branch.c:645
 msgid "print only branches that don't contain the commit"
 msgstr "nur Branches ausgeben, die diesen Commit nicht enthalten"
 
-#: builtin/branch.c:639
+#: builtin/branch.c:648
 msgid "Specific git-branch actions:"
 msgstr "spezifische Aktionen für \"git-branch\":"
 
-#: builtin/branch.c:640
+#: builtin/branch.c:649
 msgid "list both remote-tracking and local branches"
 msgstr "Remote-Tracking und lokale Branches auflisten"
 
-#: builtin/branch.c:642
+#: builtin/branch.c:651
 msgid "delete fully merged branch"
 msgstr "vollständig zusammengeführten Branch entfernen"
 
-#: builtin/branch.c:643
+#: builtin/branch.c:652
 msgid "delete branch (even if not merged)"
 msgstr "Branch löschen (auch wenn nicht zusammengeführt)"
 
-#: builtin/branch.c:644
+#: builtin/branch.c:653
 msgid "move/rename a branch and its reflog"
 msgstr "einen Branch und dessen Reflog verschieben/umbenennen"
 
-#: builtin/branch.c:645
+#: builtin/branch.c:654
 msgid "move/rename a branch, even if target exists"
 msgstr ""
 "einen Branch verschieben/umbenennen, auch wenn das Ziel bereits existiert"
 
-#: builtin/branch.c:646
+#: builtin/branch.c:655
 msgid "copy a branch and its reflog"
 msgstr "einen Branch und dessen Reflog kopieren"
 
-#: builtin/branch.c:647
+#: builtin/branch.c:656
 msgid "copy a branch, even if target exists"
 msgstr "einen Branch kopieren, auch wenn das Ziel bereits existiert"
 
-#: builtin/branch.c:648
+#: builtin/branch.c:657
 msgid "list branch names"
 msgstr "Branchnamen auflisten"
 
-#: builtin/branch.c:649
+#: builtin/branch.c:658
 msgid "show current branch name"
 msgstr "Zeige aktuellen Branch-Namen."
 
-#: builtin/branch.c:650
+#: builtin/branch.c:659
 msgid "create the branch's reflog"
 msgstr "das Reflog des Branches erzeugen"
 
-#: builtin/branch.c:652
+#: builtin/branch.c:661
 msgid "edit the description for the branch"
 msgstr "die Beschreibung für den Branch bearbeiten"
 
-#: builtin/branch.c:653
+#: builtin/branch.c:662
 msgid "force creation, move/rename, deletion"
 msgstr "Erstellung, Verschiebung/Umbenennung oder Löschung erzwingen"
 
-#: builtin/branch.c:654
+#: builtin/branch.c:663
 msgid "print only branches that are merged"
 msgstr "nur zusammengeführte Branches ausgeben"
 
-#: builtin/branch.c:655
+#: builtin/branch.c:664
 msgid "print only branches that are not merged"
 msgstr "nur nicht zusammengeführte Branches ausgeben"
 
-#: builtin/branch.c:656
+#: builtin/branch.c:665
 msgid "list branches in columns"
 msgstr "Branches in Spalten auflisten"
 
-#: builtin/branch.c:658 builtin/for-each-ref.c:42 builtin/notes.c:415
+#: builtin/branch.c:667 builtin/for-each-ref.c:42 builtin/notes.c:415
 #: builtin/notes.c:418 builtin/notes.c:581 builtin/notes.c:584
-#: builtin/tag.c:434
+#: builtin/tag.c:466
 msgid "object"
 msgstr "Objekt"
 
-#: builtin/branch.c:659
+#: builtin/branch.c:668
 msgid "print only branches of the object"
 msgstr "nur Branches von diesem Objekt ausgeben"
 
-#: builtin/branch.c:660 builtin/for-each-ref.c:48 builtin/tag.c:441
+#: builtin/branch.c:669 builtin/for-each-ref.c:48 builtin/tag.c:473
 msgid "sorting and filtering are case insensitive"
 msgstr "Sortierung und Filterung sind unabhängig von Groß- und Kleinschreibung"
 
-#: builtin/branch.c:661 builtin/for-each-ref.c:38 builtin/tag.c:439
+#: builtin/branch.c:670 builtin/for-each-ref.c:38 builtin/tag.c:471
 #: builtin/verify-tag.c:38
 msgid "format to use for the output"
 msgstr "für die Ausgabe zu verwendendes Format"
 
-#: builtin/branch.c:684 builtin/clone.c:790
+#: builtin/branch.c:693 builtin/clone.c:790
 msgid "HEAD not found below refs/heads!"
 msgstr "HEAD wurde nicht unter \"refs/heads\" gefunden!"
 
-#: builtin/branch.c:708
+#: builtin/branch.c:717
 msgid "--column and --verbose are incompatible"
-msgstr "Die Optionen --column und --verbose sind inkompatibel."
+msgstr "--column und --verbose sind inkompatibel"
 
-#: builtin/branch.c:723 builtin/branch.c:777 builtin/branch.c:786
+#: builtin/branch.c:732 builtin/branch.c:788 builtin/branch.c:797
 msgid "branch name required"
 msgstr "Branchname erforderlich"
 
-#: builtin/branch.c:753
+#: builtin/branch.c:764
 msgid "Cannot give description to detached HEAD"
 msgstr "zu losgelöstem HEAD kann keine Beschreibung hinterlegt werden"
 
-#: builtin/branch.c:758
+#: builtin/branch.c:769
 msgid "cannot edit description of more than one branch"
 msgstr "Beschreibung von mehr als einem Branch kann nicht bearbeitet werden"
 
-#: builtin/branch.c:765
+#: builtin/branch.c:776
 #, c-format
 msgid "No commit on branch '%s' yet."
 msgstr "Noch kein Commit in Branch '%s'."
 
-#: builtin/branch.c:768
+#: builtin/branch.c:779
 #, c-format
 msgid "No branch named '%s'."
 msgstr "Branch '%s' nicht vorhanden."
 
-#: builtin/branch.c:783
+#: builtin/branch.c:794
 msgid "too many branches for a copy operation"
 msgstr "zu viele Branches für eine Kopieroperation angegeben"
 
-#: builtin/branch.c:792
+#: builtin/branch.c:803
 msgid "too many arguments for a rename operation"
 msgstr "zu viele Argumente für eine Umbenennen-Operation angegeben"
 
-#: builtin/branch.c:797
+#: builtin/branch.c:808
 msgid "too many arguments to set new upstream"
 msgstr "zu viele Argumente angegeben, um Upstream-Branch zu setzen"
 
-#: builtin/branch.c:801
+#: builtin/branch.c:812
 #, c-format
 msgid ""
 "could not set upstream of HEAD to %s when it does not point to any branch."
@@ -11438,34 +11722,34 @@ msgstr ""
 "Konnte keinen neuen Upstream-Branch von HEAD zu %s setzen, da dieser auf\n"
 "keinen Branch zeigt."
 
-#: builtin/branch.c:804 builtin/branch.c:827
+#: builtin/branch.c:815 builtin/branch.c:838
 #, c-format
 msgid "no such branch '%s'"
-msgstr "Kein solcher Branch '%s'"
+msgstr "Branch '%s' nicht gefunden"
 
-#: builtin/branch.c:808
+#: builtin/branch.c:819
 #, c-format
 msgid "branch '%s' does not exist"
 msgstr "Branch '%s' existiert nicht"
 
-#: builtin/branch.c:821
+#: builtin/branch.c:832
 msgid "too many arguments to unset upstream"
 msgstr ""
 "zu viele Argumente angegeben, um Konfiguration zu Upstream-Branch zu "
 "entfernen"
 
-#: builtin/branch.c:825
+#: builtin/branch.c:836
 msgid "could not unset upstream of HEAD when it does not point to any branch."
 msgstr ""
 "Konnte Konfiguration zu Upstream-Branch von HEAD nicht entfernen, da dieser\n"
 "auf keinen Branch zeigt."
 
-#: builtin/branch.c:831
+#: builtin/branch.c:842
 #, c-format
 msgid "Branch '%s' has no upstream information"
 msgstr "Branch '%s' hat keinen Upstream-Branch gesetzt"
 
-#: builtin/branch.c:841
+#: builtin/branch.c:852
 msgid ""
 "The -a, and -r, options to 'git branch' do not take a branch name.\n"
 "Did you mean to use: -a|-r --list <pattern>?"
@@ -11474,7 +11758,7 @@ msgstr ""
 "verwendet werden.\n"
 "Wollten Sie -a|-r --list <Muster> benutzen?"
 
-#: builtin/branch.c:845
+#: builtin/branch.c:856
 msgid ""
 "the '--set-upstream' option is no longer supported. Please use '--track' or "
 "'--set-upstream-to' instead."
@@ -11596,19 +11880,19 @@ msgstr "git bundle list-heads <Datei> [<Referenzname>...]"
 msgid "git bundle unbundle <file> [<refname>...]"
 msgstr "git bundle unbundle <Datei> [<Referenzname>...]"
 
-#: builtin/bundle.c:67 builtin/pack-objects.c:3480
+#: builtin/bundle.c:67 builtin/pack-objects.c:3495
 msgid "do not show progress meter"
 msgstr "keine Fortschrittsanzeige anzeigen"
 
-#: builtin/bundle.c:69 builtin/pack-objects.c:3482
+#: builtin/bundle.c:69 builtin/pack-objects.c:3497
 msgid "show progress meter"
 msgstr "Fortschrittsanzeige anzeigen"
 
-#: builtin/bundle.c:71 builtin/pack-objects.c:3484
+#: builtin/bundle.c:71 builtin/pack-objects.c:3499
 msgid "show progress meter during object writing phase"
 msgstr "Forschrittsanzeige während des Schreibens von Objekten anzeigen"
 
-#: builtin/bundle.c:74 builtin/pack-objects.c:3487
+#: builtin/bundle.c:74 builtin/pack-objects.c:3502
 msgid "similar to --all-progress when progress meter is shown"
 msgstr "ähnlich zu --all-progress wenn Fortschrittsanzeige darstellt wird"
 
@@ -11755,8 +12039,8 @@ msgstr "Dateinamen von der Standard-Eingabe lesen"
 msgid "terminate input and output records by a NUL character"
 msgstr "Einträge von Ein- und Ausgabe mit NUL-Zeichen abschließen"
 
-#: builtin/check-ignore.c:21 builtin/checkout.c:1500 builtin/gc.c:541
-#: builtin/worktree.c:561
+#: builtin/check-ignore.c:21 builtin/checkout.c:1499 builtin/gc.c:549
+#: builtin/worktree.c:489
 msgid "suppress progress reporting"
 msgstr "Fortschrittsanzeige unterdrücken"
 
@@ -11774,7 +12058,7 @@ msgstr "Angabe von Pfadnamen kann nicht gemeinsam mit --stdin verwendet werden"
 
 #: builtin/check-ignore.c:166
 msgid "-z only makes sense with --stdin"
-msgstr "Die Option -z kann nur mit --stdin verwendet werden."
+msgstr "-z kann nur mit --stdin verwendet werden"
 
 #: builtin/check-ignore.c:168
 msgid "no path specified"
@@ -11782,12 +12066,11 @@ msgstr "kein Pfad angegeben"
 
 #: builtin/check-ignore.c:172
 msgid "--quiet is only valid with a single pathname"
-msgstr "Die Option --quiet ist nur mit einem einzelnen Pfadnamen gültig."
+msgstr "--quiet ist nur mit einem einzelnen Pfadnamen gültig"
 
 #: builtin/check-ignore.c:174
 msgid "cannot have both --quiet and --verbose"
-msgstr ""
-"Die Optionen --quiet und --verbose können nicht gemeinsam verwendet werden."
+msgstr "--quiet und --verbose können nicht gemeinsam verwendet werden"
 
 #: builtin/check-ignore.c:177
 msgid "--non-matching is only valid with --verbose"
@@ -11810,57 +12093,57 @@ msgstr "Konnte Kontakt '%s' nicht parsen."
 msgid "no contacts specified"
 msgstr "keine Kontakte angegeben"
 
-#: builtin/checkout-index.c:139
+#: builtin/checkout-index.c:152
 msgid "git checkout-index [<options>] [--] [<file>...]"
 msgstr "git checkout-index [<Optionen>] [--] [<Datei>...]"
 
-#: builtin/checkout-index.c:156
+#: builtin/checkout-index.c:169
 msgid "stage should be between 1 and 3 or all"
 msgstr "--stage sollte zwischen 1 und 3 oder 'all' sein"
 
-#: builtin/checkout-index.c:173
+#: builtin/checkout-index.c:186
 msgid "check out all files in the index"
 msgstr "alle Dateien im Index auschecken"
 
-#: builtin/checkout-index.c:174
+#: builtin/checkout-index.c:187
 msgid "force overwrite of existing files"
 msgstr "das Überschreiben bereits existierender Dateien erzwingen"
 
-#: builtin/checkout-index.c:176
+#: builtin/checkout-index.c:189
 msgid "no warning for existing files and files not in index"
 msgstr ""
 "keine Warnung für existierende Dateien, und Dateien, die sich nicht im Index "
 "befinden"
 
-#: builtin/checkout-index.c:178
+#: builtin/checkout-index.c:191
 msgid "don't checkout new files"
 msgstr "keine neuen Dateien auschecken"
 
-#: builtin/checkout-index.c:180
+#: builtin/checkout-index.c:193
 msgid "update stat information in the index file"
 msgstr "Dateiinformationen in der Index-Datei aktualisieren"
 
-#: builtin/checkout-index.c:184
+#: builtin/checkout-index.c:197
 msgid "read list of paths from the standard input"
 msgstr "eine Liste von Pfaden von der Standard-Eingabe lesen"
 
-#: builtin/checkout-index.c:186
+#: builtin/checkout-index.c:199
 msgid "write the content to temporary files"
 msgstr "den Inhalt in temporäre Dateien schreiben"
 
-#: builtin/checkout-index.c:187 builtin/column.c:31
+#: builtin/checkout-index.c:200 builtin/column.c:31
 #: builtin/submodule--helper.c:1824 builtin/submodule--helper.c:1827
 #: builtin/submodule--helper.c:1835 builtin/submodule--helper.c:2333
-#: builtin/worktree.c:757
+#: builtin/worktree.c:717
 msgid "string"
 msgstr "Zeichenkette"
 
-#: builtin/checkout-index.c:188
+#: builtin/checkout-index.c:201
 msgid "when creating files, prepend <string>"
 msgstr ""
 "wenn Dateien erzeugt werden, stelle <Zeichenkette> dem Dateinamen voran"
 
-#: builtin/checkout-index.c:190
+#: builtin/checkout-index.c:203
 msgid "copy out the files from named stage"
 msgstr "Dateien von dem benannten Stand kopieren"
 
@@ -11963,16 +12246,16 @@ msgstr "'%s' kann nur genutzt werden, wenn '%s' nicht verwendet wird"
 msgid "'%s' or '%s' cannot be used with %s"
 msgstr "'%s' oder '%s' kann nicht mit %s verwendet werden"
 
-#: builtin/checkout.c:541 builtin/checkout.c:548
+#: builtin/checkout.c:543 builtin/checkout.c:550
 #, c-format
 msgid "path '%s' is unmerged"
 msgstr "Pfad '%s' ist nicht zusammengeführt."
 
-#: builtin/checkout.c:716
+#: builtin/checkout.c:718
 msgid "you need to resolve your current index first"
 msgstr "Sie müssen zuerst die Konflikte in Ihrem aktuellen Index auflösen."
 
-#: builtin/checkout.c:770
+#: builtin/checkout.c:772
 #, c-format
 msgid ""
 "cannot continue with staged changes in the following files:\n"
@@ -11981,50 +12264,50 @@ msgstr ""
 "Kann nicht mit vorgemerkten Änderungen in folgenden Dateien fortsetzen:\n"
 "%s"
 
-#: builtin/checkout.c:866
+#: builtin/checkout.c:865
 #, c-format
 msgid "Can not do reflog for '%s': %s\n"
 msgstr "Kann \"reflog\" für '%s' nicht durchführen: %s\n"
 
-#: builtin/checkout.c:908
+#: builtin/checkout.c:907
 msgid "HEAD is now at"
 msgstr "HEAD ist jetzt bei"
 
-#: builtin/checkout.c:912 builtin/clone.c:721 t/helper/test-fast-rebase.c:202
+#: builtin/checkout.c:911 builtin/clone.c:721 t/helper/test-fast-rebase.c:202
 msgid "unable to update HEAD"
 msgstr "Konnte HEAD nicht aktualisieren."
 
-#: builtin/checkout.c:916
+#: builtin/checkout.c:915
 #, c-format
 msgid "Reset branch '%s'\n"
 msgstr "Setze Branch '%s' neu\n"
 
-#: builtin/checkout.c:919
+#: builtin/checkout.c:918
 #, c-format
 msgid "Already on '%s'\n"
 msgstr "Bereits auf '%s'\n"
 
-#: builtin/checkout.c:923
+#: builtin/checkout.c:922
 #, c-format
 msgid "Switched to and reset branch '%s'\n"
 msgstr "Zu umgesetztem Branch '%s' gewechselt\n"
 
-#: builtin/checkout.c:925 builtin/checkout.c:1356
+#: builtin/checkout.c:924 builtin/checkout.c:1355
 #, c-format
 msgid "Switched to a new branch '%s'\n"
 msgstr "Zu neuem Branch '%s' gewechselt\n"
 
-#: builtin/checkout.c:927
+#: builtin/checkout.c:926
 #, c-format
 msgid "Switched to branch '%s'\n"
 msgstr "Zu Branch '%s' gewechselt\n"
 
-#: builtin/checkout.c:978
+#: builtin/checkout.c:977
 #, c-format
 msgid " ... and %d more.\n"
 msgstr " ... und %d weitere.\n"
 
-#: builtin/checkout.c:984
+#: builtin/checkout.c:983
 #, c-format
 msgid ""
 "Warning: you are leaving %d commit behind, not connected to\n"
@@ -12047,7 +12330,7 @@ msgstr[1] ""
 "\n"
 "%s\n"
 
-#: builtin/checkout.c:1003
+#: builtin/checkout.c:1002
 #, c-format
 msgid ""
 "If you want to keep it by creating a new branch, this may be a good time\n"
@@ -12074,19 +12357,19 @@ msgstr[1] ""
 " git branch <neuer-Branchname> %s\n"
 "\n"
 
-#: builtin/checkout.c:1038
+#: builtin/checkout.c:1037
 msgid "internal error in revision walk"
 msgstr "interner Fehler im Revisionsgang"
 
-#: builtin/checkout.c:1042
+#: builtin/checkout.c:1041
 msgid "Previous HEAD position was"
 msgstr "Vorherige Position von HEAD war"
 
-#: builtin/checkout.c:1082 builtin/checkout.c:1351
+#: builtin/checkout.c:1081 builtin/checkout.c:1350
 msgid "You are on a branch yet to be born"
 msgstr "Sie sind auf einem Branch, der noch nicht geboren ist"
 
-#: builtin/checkout.c:1164
+#: builtin/checkout.c:1163
 #, c-format
 msgid ""
 "'%s' could be both a local file and a tracking branch.\n"
@@ -12096,7 +12379,7 @@ msgstr ""
 "Bitte benutzen Sie -- (und optional --no-guess), um diese\n"
 "eindeutig voneinander zu unterscheiden."
 
-#: builtin/checkout.c:1171
+#: builtin/checkout.c:1170
 msgid ""
 "If you meant to check out a remote tracking branch on, e.g. 'origin',\n"
 "you can do so by fully qualifying the name with the --track option:\n"
@@ -12119,51 +12402,51 @@ msgstr ""
 "bevorzugen möchten, z.B. 'origin', können Sie die Einstellung\n"
 "checkout.defaultRemote=origin in Ihrer Konfiguration setzen."
 
-#: builtin/checkout.c:1181
+#: builtin/checkout.c:1180
 #, c-format
 msgid "'%s' matched multiple (%d) remote tracking branches"
 msgstr "'%s' entspricht mehreren (%d) Remote-Tracking-Branches"
 
-#: builtin/checkout.c:1247
+#: builtin/checkout.c:1246
 msgid "only one reference expected"
 msgstr "nur eine Referenz erwartet"
 
-#: builtin/checkout.c:1264
+#: builtin/checkout.c:1263
 #, c-format
 msgid "only one reference expected, %d given."
 msgstr "nur eine Referenz erwartet, %d gegeben."
 
-#: builtin/checkout.c:1310 builtin/worktree.c:342 builtin/worktree.c:510
+#: builtin/checkout.c:1309 builtin/worktree.c:270 builtin/worktree.c:438
 #, c-format
 msgid "invalid reference: %s"
 msgstr "Ungültige Referenz: %s"
 
-#: builtin/checkout.c:1323 builtin/checkout.c:1689
+#: builtin/checkout.c:1322 builtin/checkout.c:1688
 #, c-format
 msgid "reference is not a tree: %s"
 msgstr "Referenz ist kein \"Tree\"-Objekt: %s"
 
-#: builtin/checkout.c:1370
+#: builtin/checkout.c:1369
 #, c-format
 msgid "a branch is expected, got tag '%s'"
 msgstr "Ein Branch wird erwartet, Tag '%s' bekommen"
 
-#: builtin/checkout.c:1372
+#: builtin/checkout.c:1371
 #, c-format
 msgid "a branch is expected, got remote branch '%s'"
 msgstr "Ein Branch wird erwartet, Remote-Branch '%s' bekommen"
 
-#: builtin/checkout.c:1373 builtin/checkout.c:1381
+#: builtin/checkout.c:1372 builtin/checkout.c:1380
 #, c-format
 msgid "a branch is expected, got '%s'"
 msgstr "Ein Branch wird erwartet, '%s' bekommen"
 
-#: builtin/checkout.c:1376
+#: builtin/checkout.c:1375
 #, c-format
 msgid "a branch is expected, got commit '%s'"
 msgstr "Ein Branch wird erwartet, Commit '%s' bekommen"
 
-#: builtin/checkout.c:1392
+#: builtin/checkout.c:1391
 msgid ""
 "cannot switch branch while merging\n"
 "Consider \"git merge --quit\" or \"git worktree add\"."
@@ -12171,7 +12454,7 @@ msgstr ""
 "Der Branch kann nicht während eines Merges gewechselt werden.\n"
 "Ziehen Sie \"git merge --quit\" oder \"git worktree add\" in Betracht."
 
-#: builtin/checkout.c:1396
+#: builtin/checkout.c:1395
 msgid ""
 "cannot switch branch in the middle of an am session\n"
 "Consider \"git am --quit\" or \"git worktree add\"."
@@ -12180,7 +12463,7 @@ msgstr ""
 "werden.\n"
 "Ziehen Sie \"git am --quit\" oder \"git worktree add\" in Betracht."
 
-#: builtin/checkout.c:1400
+#: builtin/checkout.c:1399
 msgid ""
 "cannot switch branch while rebasing\n"
 "Consider \"git rebase --quit\" or \"git worktree add\"."
@@ -12189,7 +12472,7 @@ msgstr ""
 "werden.\n"
 "Ziehen Sie \"git rebase --quit\" oder \"git worktree add\" in Betracht."
 
-#: builtin/checkout.c:1404
+#: builtin/checkout.c:1403
 msgid ""
 "cannot switch branch while cherry-picking\n"
 "Consider \"git cherry-pick --quit\" or \"git worktree add\"."
@@ -12198,7 +12481,7 @@ msgstr ""
 "gewechselt werden.\n"
 "Ziehen Sie \"git cherry-pick --quit\" oder \"git worktree add\" in Betracht."
 
-#: builtin/checkout.c:1408
+#: builtin/checkout.c:1407
 msgid ""
 "cannot switch branch while reverting\n"
 "Consider \"git revert --quit\" or \"git worktree add\"."
@@ -12207,147 +12490,140 @@ msgstr ""
 "werden.\n"
 "Ziehen Sie \"git revert --quit\" oder \"git worktree add\" in Betracht."
 
-#: builtin/checkout.c:1412
+#: builtin/checkout.c:1411
 msgid "you are switching branch while bisecting"
 msgstr "Sie wechseln den Branch während einer binären Suche"
 
-#: builtin/checkout.c:1419
+#: builtin/checkout.c:1418
 msgid "paths cannot be used with switching branches"
 msgstr "Pfade können nicht beim Wechseln von Branches verwendet werden"
 
-#: builtin/checkout.c:1422 builtin/checkout.c:1426 builtin/checkout.c:1430
+#: builtin/checkout.c:1421 builtin/checkout.c:1425 builtin/checkout.c:1429
 #, c-format
 msgid "'%s' cannot be used with switching branches"
 msgstr "'%s' kann nicht beim Wechseln von Branches verwendet werden"
 
-#: builtin/checkout.c:1434 builtin/checkout.c:1437 builtin/checkout.c:1440
-#: builtin/checkout.c:1445 builtin/checkout.c:1450
+#: builtin/checkout.c:1433 builtin/checkout.c:1436 builtin/checkout.c:1439
+#: builtin/checkout.c:1444 builtin/checkout.c:1449
 #, c-format
 msgid "'%s' cannot be used with '%s'"
 msgstr "'%s' kann nicht mit '%s' verwendet werden"
 
-#: builtin/checkout.c:1447
+#: builtin/checkout.c:1446
 #, c-format
 msgid "'%s' cannot take <start-point>"
 msgstr "'%s' kann nicht <Startpunkt> bekommen"
 
-#: builtin/checkout.c:1455
+#: builtin/checkout.c:1454
 #, c-format
 msgid "Cannot switch branch to a non-commit '%s'"
 msgstr "Kann Branch nicht zu Nicht-Commit '%s' wechseln"
 
-#: builtin/checkout.c:1462
+#: builtin/checkout.c:1461
 msgid "missing branch or commit argument"
 msgstr "Branch- oder Commit-Argument fehlt"
 
-#: builtin/checkout.c:1504 builtin/clone.c:92 builtin/commit-graph.c:84
-#: builtin/commit-graph.c:222 builtin/fetch.c:172 builtin/merge.c:296
-#: builtin/multi-pack-index.c:27 builtin/pull.c:119 builtin/push.c:575
-#: builtin/send-pack.c:198
-msgid "force progress reporting"
-msgstr "Fortschrittsanzeige erzwingen"
-
-#: builtin/checkout.c:1505
+#: builtin/checkout.c:1504
 msgid "perform a 3-way merge with the new branch"
 msgstr "einen 3-Wege-Merge mit dem neuen Branch ausführen"
 
-#: builtin/checkout.c:1506 builtin/log.c:1800 parse-options.h:322
+#: builtin/checkout.c:1505 builtin/log.c:1799 parse-options.h:322
 msgid "style"
 msgstr "Stil"
 
-#: builtin/checkout.c:1507
+#: builtin/checkout.c:1506
 msgid "conflict style (merge or diff3)"
 msgstr "Konfliktstil (merge oder diff3)"
 
-#: builtin/checkout.c:1519 builtin/worktree.c:558
+#: builtin/checkout.c:1518 builtin/worktree.c:486
 msgid "detach HEAD at named commit"
 msgstr "HEAD bei benanntem Commit loslösen"
 
-#: builtin/checkout.c:1520
+#: builtin/checkout.c:1519
 msgid "set upstream info for new branch"
 msgstr "Informationen zum Upstream-Branch für den neuen Branch setzen"
 
-#: builtin/checkout.c:1522
+#: builtin/checkout.c:1521
 msgid "force checkout (throw away local modifications)"
 msgstr "Auschecken erzwingen (verwirft lokale Änderungen)"
 
-#: builtin/checkout.c:1524
+#: builtin/checkout.c:1523
 msgid "new-branch"
 msgstr "neuer Branch"
 
-#: builtin/checkout.c:1524
+#: builtin/checkout.c:1523
 msgid "new unparented branch"
 msgstr "neuer Branch ohne Eltern-Commit"
 
-#: builtin/checkout.c:1526 builtin/merge.c:300
+#: builtin/checkout.c:1525 builtin/merge.c:301
 msgid "update ignored files (default)"
 msgstr "ignorierte Dateien aktualisieren (Standard)"
 
-#: builtin/checkout.c:1529
+#: builtin/checkout.c:1528
 msgid "do not check if another worktree is holding the given ref"
 msgstr ""
 "Prüfung, ob die Referenz bereits in einem anderen Arbeitsverzeichnis "
 "ausgecheckt wurde, deaktivieren"
 
-#: builtin/checkout.c:1542
+#: builtin/checkout.c:1541
 msgid "checkout our version for unmerged files"
 msgstr "unsere Variante für nicht zusammengeführte Dateien auschecken"
 
-#: builtin/checkout.c:1545
+#: builtin/checkout.c:1544
 msgid "checkout their version for unmerged files"
 msgstr "ihre Variante für nicht zusammengeführte Dateien auschecken"
 
-#: builtin/checkout.c:1549
+#: builtin/checkout.c:1548
 msgid "do not limit pathspecs to sparse entries only"
 msgstr "keine Einschränkung bei Pfadspezifikationen zum partiellen Auschecken"
 
-#: builtin/checkout.c:1604
+#: builtin/checkout.c:1603
 #, c-format
 msgid "-%c, -%c and --orphan are mutually exclusive"
-msgstr "die Optionen -%c, -%c und --orphan schließen sich gegenseitig aus"
+msgstr "-%c, -%c und --orphan schließen sich gegenseitig aus"
 
-#: builtin/checkout.c:1608
+#: builtin/checkout.c:1607
 msgid "-p and --overlay are mutually exclusive"
-msgstr "-p und --overlay schließen sich gegenseitig aus."
+msgstr "-p und --overlay schließen sich gegenseitig aus"
 
-#: builtin/checkout.c:1645
+#: builtin/checkout.c:1644
 msgid "--track needs a branch name"
-msgstr "Bei der Option --track muss ein Branchname angegeben werden."
+msgstr "--track benötigt ein Branchname"
 
-#: builtin/checkout.c:1650
+#: builtin/checkout.c:1649
 #, c-format
 msgid "missing branch name; try -%c"
 msgstr "kein Branchname; versuchen Sie -%c"
 
-#: builtin/checkout.c:1682
+#: builtin/checkout.c:1681
 #, c-format
 msgid "could not resolve %s"
-msgstr "Konnte %s nicht auflösen."
+msgstr "konnte %s nicht auflösen"
 
-#: builtin/checkout.c:1698
+#: builtin/checkout.c:1697
 msgid "invalid path specification"
 msgstr "ungültige Pfadspezifikation"
 
-#: builtin/checkout.c:1705
+#: builtin/checkout.c:1704
 #, c-format
 msgid "'%s' is not a commit and a branch '%s' cannot be created from it"
 msgstr ""
 "'%s' ist kein Commit und es kann kein Branch '%s' aus diesem erstellt werden."
 
-#: builtin/checkout.c:1709
+#: builtin/checkout.c:1708
 #, c-format
 msgid "git checkout: --detach does not take a path argument '%s'"
 msgstr "git checkout: --detach nimmt kein Pfad-Argument '%s'"
 
-#: builtin/checkout.c:1718
+#: builtin/checkout.c:1717
 msgid "--pathspec-from-file is incompatible with --detach"
-msgstr "Die Optionen --pathspec-from-file und --detach sind inkompatibel."
+msgstr "--pathspec-from-file und --detach sind inkompatibel"
 
-#: builtin/checkout.c:1721 builtin/reset.c:325 builtin/stash.c:1499
+#: builtin/checkout.c:1720 builtin/reset.c:325 builtin/stash.c:1566
 msgid "--pathspec-from-file is incompatible with --patch"
-msgstr "Die Optionen --pathspec-from-file und --patch sind inkompatibel."
+msgstr "--pathspec-from-file und --patch sind inkompatibel"
 
-#: builtin/checkout.c:1734
+#: builtin/checkout.c:1733
 msgid ""
 "git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
 "checking out of the index."
@@ -12355,70 +12631,70 @@ msgstr ""
 "git checkout: --ours/--theirs, --force und --merge sind inkompatibel wenn\n"
 "Sie aus dem Index auschecken."
 
-#: builtin/checkout.c:1739
+#: builtin/checkout.c:1738
 msgid "you must specify path(s) to restore"
 msgstr "Sie müssen Pfad(e) zur Wiederherstellung angeben."
 
-#: builtin/checkout.c:1765 builtin/checkout.c:1767 builtin/checkout.c:1816
-#: builtin/checkout.c:1818 builtin/clone.c:122 builtin/remote.c:170
-#: builtin/remote.c:172 builtin/submodule--helper.c:2719 builtin/worktree.c:554
-#: builtin/worktree.c:556
+#: builtin/checkout.c:1764 builtin/checkout.c:1766 builtin/checkout.c:1815
+#: builtin/checkout.c:1817 builtin/clone.c:122 builtin/remote.c:170
+#: builtin/remote.c:172 builtin/submodule--helper.c:2719 builtin/worktree.c:482
+#: builtin/worktree.c:484
 msgid "branch"
 msgstr "Branch"
 
-#: builtin/checkout.c:1766
+#: builtin/checkout.c:1765
 msgid "create and checkout a new branch"
 msgstr "einen neuen Branch erzeugen und auschecken"
 
-#: builtin/checkout.c:1768
+#: builtin/checkout.c:1767
 msgid "create/reset and checkout a branch"
 msgstr "einen Branch erstellen/umsetzen und auschecken"
 
-#: builtin/checkout.c:1769
+#: builtin/checkout.c:1768
 msgid "create reflog for new branch"
 msgstr "das Reflog für den neuen Branch erzeugen"
 
-#: builtin/checkout.c:1771
+#: builtin/checkout.c:1770
 msgid "second guess 'git checkout <no-such-branch>' (default)"
 msgstr "Zweite Vermutung 'git checkout <kein-solcher-Branch>' (Standard)"
 
-#: builtin/checkout.c:1772
+#: builtin/checkout.c:1771
 msgid "use overlay mode (default)"
 msgstr "benutze Overlay-Modus (Standard)"
 
-#: builtin/checkout.c:1817
+#: builtin/checkout.c:1816
 msgid "create and switch to a new branch"
 msgstr "einen neuen Branch erzeugen und dahin wechseln"
 
-#: builtin/checkout.c:1819
+#: builtin/checkout.c:1818
 msgid "create/reset and switch to a branch"
 msgstr "einen Branch erstellen/umsetzen und dahin wechseln"
 
-#: builtin/checkout.c:1821
+#: builtin/checkout.c:1820
 msgid "second guess 'git switch <no-such-branch>'"
 msgstr "Zweite Vermutung 'git switch <kein-solcher-Branch>'"
 
-#: builtin/checkout.c:1823
+#: builtin/checkout.c:1822
 msgid "throw away local modifications"
 msgstr "lokale Änderungen verwerfen"
 
-#: builtin/checkout.c:1857
+#: builtin/checkout.c:1856
 msgid "which tree-ish to checkout from"
 msgstr "Von welcher Commit-Referenz ausgecheckt werden soll"
 
-#: builtin/checkout.c:1859
+#: builtin/checkout.c:1858
 msgid "restore the index"
 msgstr "Index wiederherstellen"
 
-#: builtin/checkout.c:1861
+#: builtin/checkout.c:1860
 msgid "restore the working tree (default)"
 msgstr "das Arbeitsverzeichnis wiederherstellen (Standard)"
 
-#: builtin/checkout.c:1863
+#: builtin/checkout.c:1862
 msgid "ignore unmerged entries"
 msgstr "ignoriere nicht zusammengeführte Einträge"
 
-#: builtin/checkout.c:1864
+#: builtin/checkout.c:1863
 msgid "use overlay mode"
 msgstr "benutze Overlay-Modus"
 
@@ -12563,8 +12839,8 @@ msgid "remove whole directories"
 msgstr "ganze Verzeichnisse löschen"
 
 #: builtin/clean.c:909 builtin/describe.c:565 builtin/describe.c:567
-#: builtin/grep.c:921 builtin/log.c:183 builtin/log.c:185
-#: builtin/ls-files.c:558 builtin/name-rev.c:526 builtin/name-rev.c:528
+#: builtin/grep.c:922 builtin/log.c:184 builtin/log.c:186
+#: builtin/ls-files.c:573 builtin/name-rev.c:526 builtin/name-rev.c:528
 #: builtin/show-ref.c:179
 msgid "pattern"
 msgstr "Muster"
@@ -12599,7 +12875,7 @@ msgstr ""
 
 #: builtin/clean.c:944
 msgid "-x and -X cannot be used together"
-msgstr "Die Optionen -x und -X können nicht gemeinsam verwendet werden."
+msgstr "-x und -X können nicht gemeinsam verwendet werden"
 
 #: builtin/clone.c:45
 msgid "git clone [<options>] [--] <repo> [<dir>]"
@@ -12660,7 +12936,7 @@ msgid "use --reference only while cloning"
 msgstr "--reference nur während des Klonens benutzen"
 
 #: builtin/clone.c:120 builtin/column.c:27 builtin/init-db.c:563
-#: builtin/merge-file.c:46 builtin/pack-objects.c:3546 builtin/repack.c:358
+#: builtin/merge-file.c:46 builtin/pack-objects.c:3561 builtin/repack.c:357
 msgid "name"
 msgstr "Name"
 
@@ -12676,7 +12952,7 @@ msgstr "<Branch> auschecken, anstatt HEAD des Remote-Repositories"
 msgid "path to git-upload-pack on the remote"
 msgstr "Pfad zu \"git-upload-pack\" auf der Gegenseite"
 
-#: builtin/clone.c:126 builtin/fetch.c:173 builtin/grep.c:860
+#: builtin/clone.c:126 builtin/fetch.c:176 builtin/grep.c:861
 #: builtin/pull.c:208
 msgid "depth"
 msgstr "Tiefe"
@@ -12686,7 +12962,7 @@ msgid "create a shallow clone of that depth"
 msgstr ""
 "einen Klon mit unvollständiger Historie (shallow) in dieser Tiefe erstellen"
 
-#: builtin/clone.c:128 builtin/fetch.c:175 builtin/pack-objects.c:3535
+#: builtin/clone.c:128 builtin/fetch.c:178 builtin/pack-objects.c:3550
 #: builtin/pull.c:211
 msgid "time"
 msgstr "Zeit"
@@ -12698,12 +12974,12 @@ msgstr ""
 "Zeit\n"
 "erstellen"
 
-#: builtin/clone.c:130 builtin/fetch.c:177 builtin/fetch.c:200
-#: builtin/pull.c:214 builtin/pull.c:239 builtin/rebase.c:1317
+#: builtin/clone.c:130 builtin/fetch.c:180 builtin/fetch.c:203
+#: builtin/pull.c:214 builtin/pull.c:239 builtin/rebase.c:1323
 msgid "revision"
 msgstr "Commit"
 
-#: builtin/clone.c:131 builtin/fetch.c:178 builtin/pull.c:215
+#: builtin/clone.c:131 builtin/fetch.c:181 builtin/pull.c:215
 msgid "deepen history of shallow clone, excluding rev"
 msgstr ""
 "die Historie eines Klons mit unvollständiger Historie (shallow) mittels\n"
@@ -12738,22 +13014,22 @@ msgstr "Schlüssel=Wert"
 msgid "set config inside the new repository"
 msgstr "Konfiguration innerhalb des neuen Repositories setzen"
 
-#: builtin/clone.c:143 builtin/fetch.c:195 builtin/ls-remote.c:76
+#: builtin/clone.c:143 builtin/fetch.c:198 builtin/ls-remote.c:77
 #: builtin/pull.c:230 builtin/push.c:584 builtin/send-pack.c:196
 msgid "server-specific"
 msgstr "serverspezifisch"
 
-#: builtin/clone.c:143 builtin/fetch.c:195 builtin/ls-remote.c:76
+#: builtin/clone.c:143 builtin/fetch.c:198 builtin/ls-remote.c:77
 #: builtin/pull.c:231 builtin/push.c:584 builtin/send-pack.c:197
 msgid "option to transmit"
 msgstr "Option übertragen"
 
-#: builtin/clone.c:144 builtin/fetch.c:196 builtin/pull.c:234
+#: builtin/clone.c:144 builtin/fetch.c:199 builtin/pull.c:234
 #: builtin/push.c:585
 msgid "use IPv4 addresses only"
 msgstr "nur IPv4-Adressen benutzen"
 
-#: builtin/clone.c:146 builtin/fetch.c:198 builtin/pull.c:237
+#: builtin/clone.c:146 builtin/fetch.c:201 builtin/pull.c:237
 #: builtin/push.c:587
 msgid "use IPv6 addresses only"
 msgstr "nur IPv6-Adressen benutzen"
@@ -12857,71 +13133,71 @@ msgstr "Kann \"repack\" zum Aufräumen nicht aufrufen"
 msgid "cannot unlink temporary alternates file"
 msgstr "Kann temporäre \"alternates\"-Datei nicht entfernen"
 
-#: builtin/clone.c:992 builtin/receive-pack.c:2493
+#: builtin/clone.c:993 builtin/receive-pack.c:2493
 msgid "Too many arguments."
 msgstr "Zu viele Argumente."
 
-#: builtin/clone.c:996
+#: builtin/clone.c:997
 msgid "You must specify a repository to clone."
 msgstr "Sie müssen ein Repository zum Klonen angeben."
 
-#: builtin/clone.c:1009
+#: builtin/clone.c:1010
 #, c-format
 msgid "--bare and --origin %s options are incompatible."
-msgstr "Die Optionen --bare und --origin %s sind inkompatibel."
+msgstr "--bare und --origin %s sind inkompatibel."
 
-#: builtin/clone.c:1012
+#: builtin/clone.c:1013
 msgid "--bare and --separate-git-dir are incompatible."
-msgstr "Die Optionen --bare und --separate-git-dir sind inkompatibel."
+msgstr "--bare und --separate-git-dir sind inkompatibel."
 
-#: builtin/clone.c:1025
+#: builtin/clone.c:1026
 #, c-format
 msgid "repository '%s' does not exist"
-msgstr "Repository '%s' existiert nicht."
+msgstr "Repository '%s' existiert nicht"
 
-#: builtin/clone.c:1029 builtin/fetch.c:1841
+#: builtin/clone.c:1030 builtin/fetch.c:1951
 #, c-format
 msgid "depth %s is not a positive number"
 msgstr "Tiefe %s ist keine positive Zahl"
 
-#: builtin/clone.c:1039
+#: builtin/clone.c:1040
 #, c-format
 msgid "destination path '%s' already exists and is not an empty directory."
 msgstr "Zielpfad '%s' existiert bereits und ist kein leeres Verzeichnis."
 
-#: builtin/clone.c:1045
+#: builtin/clone.c:1046
 #, c-format
 msgid "repository path '%s' already exists and is not an empty directory."
 msgstr ""
 "Pfad des Repositories '%s' existiert bereits und ist kein leeres Verzeichnis."
 
-#: builtin/clone.c:1059
+#: builtin/clone.c:1060
 #, c-format
 msgid "working tree '%s' already exists."
 msgstr "Arbeitsverzeichnis '%s' existiert bereits."
 
-#: builtin/clone.c:1074 builtin/clone.c:1095 builtin/difftool.c:271
-#: builtin/log.c:1987 builtin/worktree.c:354 builtin/worktree.c:386
+#: builtin/clone.c:1075 builtin/clone.c:1096 builtin/difftool.c:271
+#: builtin/log.c:1986 builtin/worktree.c:282 builtin/worktree.c:314
 #, c-format
 msgid "could not create leading directories of '%s'"
 msgstr "Konnte führende Verzeichnisse von '%s' nicht erstellen."
 
-#: builtin/clone.c:1079
+#: builtin/clone.c:1080
 #, c-format
 msgid "could not create work tree dir '%s'"
 msgstr "Konnte Arbeitsverzeichnis '%s' nicht erstellen"
 
-#: builtin/clone.c:1099
+#: builtin/clone.c:1100
 #, c-format
 msgid "Cloning into bare repository '%s'...\n"
 msgstr "Klone in Bare-Repository '%s' ...\n"
 
-#: builtin/clone.c:1101
+#: builtin/clone.c:1102
 #, c-format
 msgid "Cloning into '%s'...\n"
 msgstr "Klone nach '%s' ...\n"
 
-#: builtin/clone.c:1125
+#: builtin/clone.c:1126
 msgid ""
 "clone --recursive is not compatible with both --reference and --reference-if-"
 "able"
@@ -12929,50 +13205,51 @@ msgstr ""
 "'clone --recursive' ist nicht kompatibel mit --reference und --reference-if-"
 "able"
 
-#: builtin/clone.c:1169 builtin/remote.c:200 builtin/remote.c:705
+#: builtin/clone.c:1170 builtin/remote.c:200 builtin/remote.c:705
 #, c-format
 msgid "'%s' is not a valid remote name"
 msgstr "'%s' ist kein gültiger Name für ein Remote-Repository"
 
-#: builtin/clone.c:1210
+#: builtin/clone.c:1211
 msgid "--depth is ignored in local clones; use file:// instead."
 msgstr ""
-"Die Option --depth wird in lokalen Klonen ignoriert; benutzen Sie "
-"stattdessen file://"
+"--depth wird in lokalen Klonen ignoriert; benutzen Sie stattdessen \"file://"
+"\"."
 
-#: builtin/clone.c:1212
+#: builtin/clone.c:1213
 msgid "--shallow-since is ignored in local clones; use file:// instead."
 msgstr ""
 "--shallow-since wird in lokalen Klonen ignoriert; benutzen Sie stattdessen "
-"file://"
+"\"file://\"."
 
-#: builtin/clone.c:1214
+#: builtin/clone.c:1215
 msgid "--shallow-exclude is ignored in local clones; use file:// instead."
 msgstr ""
 "--shallow-exclude wird in lokalen Klonen ignoriert; benutzen Sie stattdessen "
-"file://"
+"\"file://\"."
 
-#: builtin/clone.c:1216
+#: builtin/clone.c:1217
 msgid "--filter is ignored in local clones; use file:// instead."
 msgstr ""
-"--filter wird in lokalen Klonen ignoriert; benutzen Sie stattdessen file://"
+"--filter wird in lokalen Klonen ignoriert; benutzen Sie stattdessen \"file://"
+"\"."
 
-#: builtin/clone.c:1219
+#: builtin/clone.c:1220
 msgid "source repository is shallow, ignoring --local"
 msgstr ""
 "Quelle ist ein Repository mit unvollständiger Historie (shallow),\n"
 "ignoriere --local"
 
-#: builtin/clone.c:1224
+#: builtin/clone.c:1225
 msgid "--local is ignored"
 msgstr "--local wird ignoriert"
 
-#: builtin/clone.c:1311 builtin/clone.c:1319
+#: builtin/clone.c:1315 builtin/clone.c:1323
 #, c-format
 msgid "Remote branch %s not found in upstream %s"
 msgstr "Remote-Branch %s nicht im Upstream-Repository %s gefunden"
 
-#: builtin/clone.c:1322
+#: builtin/clone.c:1326
 msgid "You appear to have cloned an empty repository."
 msgstr "Sie scheinen ein leeres Repository geklont zu haben."
 
@@ -13006,7 +13283,7 @@ msgstr "Abstand zwischen Spalten"
 
 #: builtin/column.c:51
 msgid "--command must be the first argument"
-msgstr "Die Option --command muss an erster Stelle stehen."
+msgstr "--command muss an erster Stelle stehen"
 
 #: builtin/commit-graph.c:13 builtin/commit-graph.c:22
 msgid ""
@@ -13031,14 +13308,14 @@ msgid "could not find object directory matching %s"
 msgstr "konnte Objekt-Verzeichnis nicht finden, dass '%s' entsprechen soll"
 
 #: builtin/commit-graph.c:80 builtin/commit-graph.c:210
-#: builtin/commit-graph.c:316 builtin/fetch.c:184 builtin/log.c:1769
+#: builtin/commit-graph.c:316 builtin/fetch.c:187 builtin/log.c:1768
 msgid "dir"
 msgstr "Verzeichnis"
 
 #: builtin/commit-graph.c:81 builtin/commit-graph.c:211
 #: builtin/commit-graph.c:317
-msgid "The object directory to store the graph"
-msgstr "Das Objektverzeichnis zum Speichern des Graphen."
+msgid "the object directory to store the graph"
+msgstr "das Objektverzeichnis zum Speichern des Graphen"
 
 #: builtin/commit-graph.c:83
 msgid "if the commit-graph is split, only verify the tip file"
@@ -13132,7 +13409,7 @@ msgstr ""
 msgid "duplicate parent %s ignored"
 msgstr "doppelter Vorgänger %s ignoriert"
 
-#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:555
+#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:557
 #, c-format
 msgid "not a valid object name %s"
 msgstr "Kein gültiger Objektname: %s"
@@ -13160,9 +13437,9 @@ msgstr "Eltern-Commit"
 msgid "id of a parent commit object"
 msgstr "ID eines Eltern-Commit-Objektes."
 
-#: builtin/commit-tree.c:114 builtin/commit.c:1504 builtin/merge.c:281
-#: builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1470
-#: builtin/tag.c:413
+#: builtin/commit-tree.c:114 builtin/commit.c:1504 builtin/merge.c:282
+#: builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1537
+#: builtin/tag.c:445
 msgid "message"
 msgstr "Beschreibung"
 
@@ -13174,7 +13451,7 @@ msgstr "Commit-Beschreibung"
 msgid "read commit log message from file"
 msgstr "Commit-Beschreibung von Datei lesen"
 
-#: builtin/commit-tree.c:121 builtin/commit.c:1516 builtin/merge.c:298
+#: builtin/commit-tree.c:121 builtin/commit.c:1516 builtin/merge.c:299
 #: builtin/pull.c:176 builtin/revert.c:118
 msgid "GPG sign commit"
 msgstr "Commit mit GPG signieren"
@@ -13330,7 +13607,7 @@ msgstr ""
 msgid "could not lookup commit %s"
 msgstr "Konnte Commit %s nicht nachschlagen"
 
-#: builtin/commit.c:729 builtin/shortlog.c:425
+#: builtin/commit.c:729 builtin/shortlog.c:413
 #, c-format
 msgid "(reading log message from standard input)\n"
 msgstr "(lese Log-Nachricht von Standard-Eingabe)\n"
@@ -13430,7 +13707,7 @@ msgstr "Kann Index nicht lesen"
 msgid "Error building trees"
 msgstr "Fehler beim Erzeugen der \"Tree\"-Objekte"
 
-#: builtin/commit.c:1011 builtin/tag.c:276
+#: builtin/commit.c:1011 builtin/tag.c:308
 #, c-format
 msgid "Please supply the message using either -m or -F option.\n"
 msgstr ""
@@ -13455,13 +13732,11 @@ msgstr "Ungültiger Modus '%s' für unversionierte Dateien"
 
 #: builtin/commit.c:1127
 msgid "--long and -z are incompatible"
-msgstr "Die Optionen --long und -z sind inkompatibel."
+msgstr "--long und -z sind inkompatibel"
 
 #: builtin/commit.c:1171
 msgid "Using both --reset-author and --author does not make sense"
-msgstr ""
-"Die Optionen --reset-author und --author können nicht gemeinsam verwendet "
-"werden."
+msgstr "--reset-author und --author können nicht gemeinsam verwendet werden"
 
 #: builtin/commit.c:1180
 msgid "You have nothing to amend."
@@ -13482,7 +13757,7 @@ msgstr "Ein Rebase ist im Gange -- kann \"--amend\" nicht ausführen."
 #: builtin/commit.c:1190
 msgid "Options --squash and --fixup cannot be used together"
 msgstr ""
-"Die Optionen --squash und --fixup können nicht gemeinsam verwendet werden."
+"Die Optionen --squash und --fixup können nicht gemeinsam verwendet werden"
 
 #: builtin/commit.c:1200
 msgid "Only one of -c/-C/-F/--fixup can be used."
@@ -13494,8 +13769,7 @@ msgstr "Die Option -m kann nicht mit -c/-C/-F kombiniert werden."
 
 #: builtin/commit.c:1211
 msgid "--reset-author can be used only with -C, -c or --amend."
-msgstr ""
-"Die Option --reset--author kann nur mit -C, -c oder --amend verwendet werden."
+msgstr "--reset--author kann nur mit -C, -c oder --amend verwendet werden"
 
 #: builtin/commit.c:1229
 msgid "Only one of --include/--only/--all/--interactive/--patch can be used."
@@ -13529,7 +13803,7 @@ msgid "version"
 msgstr "Version"
 
 #: builtin/commit.c:1374 builtin/commit.c:1533 builtin/push.c:560
-#: builtin/worktree.c:725
+#: builtin/worktree.c:679
 msgid "machine-readable output"
 msgstr "maschinenlesbare Ausgabe"
 
@@ -13543,7 +13817,7 @@ msgstr "Einträge mit NUL-Zeichen abschließen"
 
 #: builtin/commit.c:1382 builtin/commit.c:1386 builtin/commit.c:1541
 #: builtin/fast-export.c:1198 builtin/fast-export.c:1201
-#: builtin/fast-export.c:1204 builtin/rebase.c:1406 parse-options.h:336
+#: builtin/fast-export.c:1204 builtin/rebase.c:1412 parse-options.h:336
 msgid "mode"
 msgstr "Modus"
 
@@ -13602,7 +13876,7 @@ msgstr "Unterschiede in Commit-Beschreibungsvorlage anzeigen"
 msgid "Commit message options"
 msgstr "Optionen für Commit-Beschreibung"
 
-#: builtin/commit.c:1501 builtin/merge.c:285 builtin/tag.c:415
+#: builtin/commit.c:1501 builtin/merge.c:286 builtin/tag.c:447
 msgid "read message from file"
 msgstr "Beschreibung von Datei lesen"
 
@@ -13614,7 +13888,7 @@ msgstr "Autor"
 msgid "override author for commit"
 msgstr "Autor eines Commits überschreiben"
 
-#: builtin/commit.c:1503 builtin/gc.c:542
+#: builtin/commit.c:1503 builtin/gc.c:550
 msgid "date"
 msgstr "Datum"
 
@@ -13623,7 +13897,7 @@ msgid "override date for commit"
 msgstr "Datum eines Commits überschreiben"
 
 #: builtin/commit.c:1505 builtin/commit.c:1506 builtin/commit.c:1507
-#: builtin/commit.c:1508 parse-options.h:328 ref-filter.h:87
+#: builtin/commit.c:1508 parse-options.h:328 ref-filter.h:90
 msgid "commit"
 msgstr "Commit"
 
@@ -13651,7 +13925,7 @@ msgstr ""
 msgid "the commit is authored by me now (used with -C/-c/--amend)"
 msgstr "Sie als Autor des Commits setzen (verwendet mit -C/-c/--amend)"
 
-#: builtin/commit.c:1510 builtin/log.c:1744 builtin/merge.c:301
+#: builtin/commit.c:1510 builtin/log.c:1743 builtin/merge.c:302
 #: builtin/pull.c:145 builtin/revert.c:110
 msgid "add a Signed-off-by trailer"
 msgstr "eine Signed-off-by Zeile hinzufügen"
@@ -14079,7 +14353,7 @@ msgstr ""
 #: builtin/config.c:943 builtin/config.c:954
 #, c-format
 msgid "no such section: %s"
-msgstr "Keine solche Sektion: %s"
+msgstr "Sektion nicht gefunden: %s"
 
 #: builtin/count-objects.c:90
 msgid "git count-objects [-v] [-H | --human-readable]"
@@ -14278,7 +14552,7 @@ msgstr ""
 
 #: builtin/describe.c:593
 msgid "--long is incompatible with --abbrev=0"
-msgstr "Die Optionen --long und --abbrev=0 sind inkompatibel."
+msgstr "--long und --abbrev=0 sind inkompatibel"
 
 #: builtin/describe.c:622
 msgid "No names found, cannot describe anything."
@@ -14286,11 +14560,11 @@ msgstr "Keine Namen gefunden, kann nichts beschreiben."
 
 #: builtin/describe.c:673
 msgid "--dirty is incompatible with commit-ishes"
-msgstr "Die Option --dirty kann nicht mit Commits verwendet werden."
+msgstr "--dirty kann nicht mit Commits verwendet werden"
 
 #: builtin/describe.c:675
 msgid "--broken is incompatible with commit-ishes"
-msgstr "Die Option --broken kann nicht mit Commits verwendet werden."
+msgstr "--broken kann nicht mit Commits verwendet werden"
 
 #: builtin/diff-tree.c:155
 msgid "--stdin and --merge-base are mutually exclusive"
@@ -14300,41 +14574,41 @@ msgstr "--stdin und --merge-base schließen sich gegenseitig aus"
 msgid "--merge-base only works with two commits"
 msgstr "--merge-base funktioniert nur mit zwei Commits"
 
-#: builtin/diff.c:91
+#: builtin/diff.c:92
 #, c-format
 msgid "'%s': not a regular file or symlink"
 msgstr "'%s': keine reguläre Datei oder symbolische Verknüpfung"
 
-#: builtin/diff.c:258
+#: builtin/diff.c:259
 #, c-format
 msgid "invalid option: %s"
 msgstr "Ungültige Option: %s"
 
-#: builtin/diff.c:375
+#: builtin/diff.c:376
 #, c-format
 msgid "%s...%s: no merge base"
 msgstr "%s...%s: keine Merge-Basis"
 
-#: builtin/diff.c:485
+#: builtin/diff.c:486
 msgid "Not a git repository"
 msgstr "Kein Git-Repository"
 
-#: builtin/diff.c:530 builtin/grep.c:681
+#: builtin/diff.c:532 builtin/grep.c:682
 #, c-format
 msgid "invalid object '%s' given."
 msgstr "Objekt '%s' ist ungültig."
 
-#: builtin/diff.c:541
+#: builtin/diff.c:543
 #, c-format
 msgid "more than two blobs given: '%s'"
 msgstr "Mehr als zwei Blobs angegeben: '%s'"
 
-#: builtin/diff.c:546
+#: builtin/diff.c:548
 #, c-format
 msgid "unhandled object '%s' given."
 msgstr "unbehandeltes Objekt '%s' angegeben"
 
-#: builtin/diff.c:580
+#: builtin/diff.c:582
 #, c-format
 msgid "%s...%s: multiple merge bases, using %s"
 msgstr "%s...%s: mehrere Merge-Basen, nutze %s"
@@ -14391,7 +14665,7 @@ msgstr "Sie könnten diese aufräumen oder wiederherstellen."
 
 #: builtin/difftool.c:696
 msgid "use `diff.guitool` instead of `diff.tool`"
-msgstr "`diff.guitool` anstatt `diff.tool` benutzen"
+msgstr "`diff.guitool` statt `diff.tool` benutzen"
 
 #: builtin/difftool.c:698
 msgid "perform a full-directory diff"
@@ -14519,39 +14793,39 @@ msgstr ""
 "Auswählen der Behandlung von Commit-Beschreibungen bei wechselndem Encoding"
 
 #: builtin/fast-export.c:1208
-msgid "Dump marks to this file"
+msgid "dump marks to this file"
 msgstr "Markierungen in diese Datei schreiben"
 
 #: builtin/fast-export.c:1210
-msgid "Import marks from this file"
+msgid "import marks from this file"
 msgstr "Markierungen von dieser Datei importieren"
 
 #: builtin/fast-export.c:1214
-msgid "Import marks from this file if it exists"
+msgid "import marks from this file if it exists"
 msgstr "Markierungen von dieser Datei importieren, wenn diese existiert"
 
 #: builtin/fast-export.c:1216
-msgid "Fake a tagger when tags lack one"
-msgstr "künstlich einen Tag-Ersteller erzeugen, wenn das Tag keinen hat"
+msgid "fake a tagger when tags lack one"
+msgstr "einen Tag-Ersteller vortäuschen, wenn das Tag keinen hat"
 
 #: builtin/fast-export.c:1218
-msgid "Output full tree for each commit"
+msgid "output full tree for each commit"
 msgstr "für jeden Commit das gesamte Verzeichnis ausgeben"
 
 #: builtin/fast-export.c:1220
-msgid "Use the done feature to terminate the stream"
+msgid "use the done feature to terminate the stream"
 msgstr "die \"done\"-Funktion benutzen, um den Datenstrom abzuschließen"
 
 #: builtin/fast-export.c:1221
-msgid "Skip output of blob data"
+msgid "skip output of blob data"
 msgstr "Ausgabe von Blob-Daten überspringen"
 
-#: builtin/fast-export.c:1222 builtin/log.c:1816
+#: builtin/fast-export.c:1222 builtin/log.c:1815
 msgid "refspec"
 msgstr "Refspec"
 
 #: builtin/fast-export.c:1223
-msgid "Apply refspec to exported refs"
+msgid "apply refspec to exported refs"
 msgstr "Refspec auf exportierte Referenzen anwenden"
 
 #: builtin/fast-export.c:1224
@@ -14567,17 +14841,17 @@ msgid "convert <from> to <to> in anonymized output"
 msgstr "konvertiere <von> zu <nach> in anonymisierter Ausgabe"
 
 #: builtin/fast-export.c:1229
-msgid "Reference parents which are not in fast-export stream by object id"
+msgid "reference parents which are not in fast-export stream by object id"
 msgstr ""
 "Eltern, die nicht im Fast-Export-Stream sind, anhand ihrer Objekt-ID "
 "referenzieren"
 
 #: builtin/fast-export.c:1231
-msgid "Show original object ids of blobs/commits"
+msgid "show original object ids of blobs/commits"
 msgstr "originale Objekt-IDs von Blobs/Commits anzeigen"
 
 #: builtin/fast-export.c:1233
-msgid "Label tags with mark ids"
+msgid "label tags with mark ids"
 msgstr "Tags mit Markierungs-IDs beschriften"
 
 #: builtin/fast-export.c:1256
@@ -14619,7 +14893,7 @@ msgstr "Format 'Name:Dateiname' für Submodul-Rewrite-Option erwartet"
 msgid "feature '%s' forbidden in input without --allow-unsafe-features"
 msgstr "Feature '%s' verboten in Eingabe ohne Option --allow-unsafe-features"
 
-#: builtin/fetch-pack.c:241
+#: builtin/fetch-pack.c:242
 #, c-format
 msgid "Lockfile created but not reported: %s"
 msgstr "Lock-Datei erstellt, aber nicht gemeldet: %s"
@@ -14640,100 +14914,104 @@ msgstr "git fetch --multiple [<Optionen>] [(<Repository> | <Gruppe>)...]"
 msgid "git fetch --all [<options>]"
 msgstr "git fetch --all [<Optionen>]"
 
-#: builtin/fetch.c:119
+#: builtin/fetch.c:120
 msgid "fetch.parallel cannot be negative"
 msgstr "fetch.parallel kann nicht negativ sein"
 
-#: builtin/fetch.c:142 builtin/pull.c:185
+#: builtin/fetch.c:143 builtin/pull.c:185
 msgid "fetch from all remotes"
 msgstr "fordert von allen Remote-Repositories an"
 
-#: builtin/fetch.c:144 builtin/pull.c:245
+#: builtin/fetch.c:145 builtin/pull.c:245
 msgid "set upstream for git pull/fetch"
 msgstr "Upstream für \"git pull/fetch\" setzen"
 
-#: builtin/fetch.c:146 builtin/pull.c:188
+#: builtin/fetch.c:147 builtin/pull.c:188
 msgid "append to .git/FETCH_HEAD instead of overwriting"
-msgstr "an .git/FETCH_HEAD anhängen, anstatt zu überschreiben"
+msgstr "an .git/FETCH_HEAD anhängen statt zu überschreiben"
+
+#: builtin/fetch.c:149
+msgid "use atomic transaction to update references"
+msgstr "atomare Transaktionen nutzen, um Referenzen zu aktualisieren"
 
-#: builtin/fetch.c:148 builtin/pull.c:191
+#: builtin/fetch.c:151 builtin/pull.c:191
 msgid "path to upload pack on remote end"
 msgstr "Pfad des Programms zum Hochladen von Paketen auf der Gegenseite"
 
-#: builtin/fetch.c:149
+#: builtin/fetch.c:152
 msgid "force overwrite of local reference"
 msgstr "das Überschreiben einer lokalen Referenz erzwingen"
 
-#: builtin/fetch.c:151
+#: builtin/fetch.c:154
 msgid "fetch from multiple remotes"
 msgstr "von mehreren Remote-Repositories anfordern"
 
-#: builtin/fetch.c:153 builtin/pull.c:195
+#: builtin/fetch.c:156 builtin/pull.c:195
 msgid "fetch all tags and associated objects"
 msgstr "alle Tags und verbundene Objekte anfordern"
 
-#: builtin/fetch.c:155
+#: builtin/fetch.c:158
 msgid "do not fetch all tags (--no-tags)"
 msgstr "nicht alle Tags anfordern (--no-tags)"
 
-#: builtin/fetch.c:157
+#: builtin/fetch.c:160
 msgid "number of submodules fetched in parallel"
 msgstr "Anzahl der parallel anzufordernden Submodule"
 
-#: builtin/fetch.c:159 builtin/pull.c:198
+#: builtin/fetch.c:162 builtin/pull.c:198
 msgid "prune remote-tracking branches no longer on remote"
 msgstr ""
 "Remote-Tracking-Branches entfernen, die sich nicht mehr im Remote-Repository "
 "befinden"
 
-#: builtin/fetch.c:161
+#: builtin/fetch.c:164
 msgid "prune local tags no longer on remote and clobber changed tags"
 msgstr ""
 "lokale Tags entfernen, die sich nicht mehr im Remote-Repository befinden, "
 "und geänderte Tags aktualisieren"
 
-#: builtin/fetch.c:162 builtin/fetch.c:187 builtin/pull.c:122
+#: builtin/fetch.c:165 builtin/fetch.c:190 builtin/pull.c:122
 msgid "on-demand"
 msgstr "bei-Bedarf"
 
-#: builtin/fetch.c:163
+#: builtin/fetch.c:166
 msgid "control recursive fetching of submodules"
 msgstr "rekursive Anforderungen von Submodulen kontrollieren"
 
-#: builtin/fetch.c:168
+#: builtin/fetch.c:171
 msgid "write fetched references to the FETCH_HEAD file"
 msgstr "schreibe angeforderte Referenzen in die FETCH_HEAD-Datei"
 
-#: builtin/fetch.c:169 builtin/pull.c:206
+#: builtin/fetch.c:172 builtin/pull.c:206
 msgid "keep downloaded pack"
 msgstr "heruntergeladenes Paket behalten"
 
-#: builtin/fetch.c:171
+#: builtin/fetch.c:174
 msgid "allow updating of HEAD ref"
 msgstr "Aktualisierung der \"HEAD\"-Referenz erlauben"
 
-#: builtin/fetch.c:174 builtin/fetch.c:180 builtin/pull.c:209
+#: builtin/fetch.c:177 builtin/fetch.c:183 builtin/pull.c:209
 #: builtin/pull.c:218
 msgid "deepen history of shallow clone"
 msgstr ""
 "die Historie eines Klons mit unvollständiger Historie (shallow) vertiefen"
 
-#: builtin/fetch.c:176 builtin/pull.c:212
+#: builtin/fetch.c:179 builtin/pull.c:212
 msgid "deepen history of shallow repository based on time"
 msgstr ""
 "die Historie eines Klons mit unvollständiger Historie (shallow) auf "
 "Zeitbasis\n"
 "vertiefen"
 
-#: builtin/fetch.c:182 builtin/pull.c:221
+#: builtin/fetch.c:185 builtin/pull.c:221
 msgid "convert to a complete repository"
 msgstr "zu einem vollständigen Repository konvertieren"
 
-#: builtin/fetch.c:185
+#: builtin/fetch.c:188
 msgid "prepend this to submodule path output"
 msgstr "dies an die Ausgabe der Submodul-Pfade voranstellen"
 
-#: builtin/fetch.c:188
+#: builtin/fetch.c:191
 msgid ""
 "default for recursive fetching of submodules (lower priority than config "
 "files)"
@@ -14741,100 +15019,100 @@ msgstr ""
 "Standard für die rekursive Anforderung von Submodulen (geringere Priorität\n"
 "als Konfigurationsdateien)"
 
-#: builtin/fetch.c:192 builtin/pull.c:224
+#: builtin/fetch.c:195 builtin/pull.c:224
 msgid "accept refs that update .git/shallow"
 msgstr "Referenzen, die .git/shallow aktualisieren, akzeptieren"
 
-#: builtin/fetch.c:193 builtin/pull.c:226
+#: builtin/fetch.c:196 builtin/pull.c:226
 msgid "refmap"
 msgstr "Refmap"
 
-#: builtin/fetch.c:194 builtin/pull.c:227
+#: builtin/fetch.c:197 builtin/pull.c:227
 msgid "specify fetch refmap"
 msgstr "Refmap für 'fetch' angeben"
 
-#: builtin/fetch.c:201 builtin/pull.c:240
+#: builtin/fetch.c:204 builtin/pull.c:240
 msgid "report that we have only objects reachable from this object"
 msgstr ""
 "ausgeben, dass wir nur Objekte haben, die von diesem Objekt aus erreichbar "
 "sind"
 
-#: builtin/fetch.c:204 builtin/fetch.c:206
+#: builtin/fetch.c:207 builtin/fetch.c:209
 msgid "run 'maintenance --auto' after fetching"
 msgstr "führe 'maintenance --auto' nach \"fetch\" aus"
 
-#: builtin/fetch.c:208 builtin/pull.c:243
+#: builtin/fetch.c:211 builtin/pull.c:243
 msgid "check for forced-updates on all updated branches"
 msgstr "Prüfe auf erzwungene Aktualisierungen in allen aktualisierten Branches"
 
-#: builtin/fetch.c:210
+#: builtin/fetch.c:213
 msgid "write the commit-graph after fetching"
 msgstr "Schreibe den Commit-Graph nach \"fetch\""
 
-#: builtin/fetch.c:212
+#: builtin/fetch.c:215
 msgid "accept refspecs from stdin"
 msgstr "akzeptiere Refspecs von der Standard-Eingabe"
 
-#: builtin/fetch.c:523
+#: builtin/fetch.c:526
 msgid "Couldn't find remote ref HEAD"
 msgstr "Konnte Remote-Referenz von HEAD nicht finden."
 
-#: builtin/fetch.c:677
+#: builtin/fetch.c:697
 #, c-format
 msgid "configuration fetch.output contains invalid value %s"
 msgstr "Konfiguration fetch.output enthält ungültigen Wert %s"
 
-#: builtin/fetch.c:775
+#: builtin/fetch.c:796
 #, c-format
 msgid "object %s not found"
 msgstr "Objekt %s nicht gefunden"
 
-#: builtin/fetch.c:779
+#: builtin/fetch.c:800
 msgid "[up to date]"
 msgstr "[aktuell]"
 
-#: builtin/fetch.c:792 builtin/fetch.c:808 builtin/fetch.c:880
+#: builtin/fetch.c:813 builtin/fetch.c:829 builtin/fetch.c:901
 msgid "[rejected]"
 msgstr "[zurückgewiesen]"
 
-#: builtin/fetch.c:793
+#: builtin/fetch.c:814
 msgid "can't fetch in current branch"
 msgstr "kann \"fetch\" im aktuellen Branch nicht ausführen"
 
-#: builtin/fetch.c:803
+#: builtin/fetch.c:824
 msgid "[tag update]"
 msgstr "[Tag Aktualisierung]"
 
-#: builtin/fetch.c:804 builtin/fetch.c:841 builtin/fetch.c:863
-#: builtin/fetch.c:875
+#: builtin/fetch.c:825 builtin/fetch.c:862 builtin/fetch.c:884
+#: builtin/fetch.c:896
 msgid "unable to update local ref"
 msgstr "kann lokale Referenz nicht aktualisieren"
 
-#: builtin/fetch.c:808
+#: builtin/fetch.c:829
 msgid "would clobber existing tag"
 msgstr "würde bestehende Tags verändern"
 
-#: builtin/fetch.c:830
+#: builtin/fetch.c:851
 msgid "[new tag]"
 msgstr "[neues Tag]"
 
-#: builtin/fetch.c:833
+#: builtin/fetch.c:854
 msgid "[new branch]"
 msgstr "[neuer Branch]"
 
-#: builtin/fetch.c:836
+#: builtin/fetch.c:857
 msgid "[new ref]"
 msgstr "[neue Referenz]"
 
-#: builtin/fetch.c:875
+#: builtin/fetch.c:896
 msgid "forced update"
 msgstr "Aktualisierung erzwungen"
 
-#: builtin/fetch.c:880
+#: builtin/fetch.c:901
 msgid "non-fast-forward"
 msgstr "kein Vorspulen"
 
-#: builtin/fetch.c:901
+#: builtin/fetch.c:1005
 msgid ""
 "Fetch normally indicates which branches had a forced update,\n"
 "but that check has been disabled. To re-enable, use '--show-forced-updates'\n"
@@ -14845,7 +15123,7 @@ msgstr ""
 "aktivieren, nutzen Sie die Option '--show-forced-updated' oder führen\n"
 "Sie 'git config fetch.showForcedUpdates true' aus."
 
-#: builtin/fetch.c:905
+#: builtin/fetch.c:1009
 #, c-format
 msgid ""
 "It took %.2f seconds to check forced updates. You can use\n"
@@ -14858,12 +15136,12 @@ msgstr ""
 "'git config fetch.showForcedUpdates false' ausführen, um diese Überprüfung\n"
 "zu umgehen.\n"
 
-#: builtin/fetch.c:939
+#: builtin/fetch.c:1041
 #, c-format
 msgid "%s did not send all necessary objects\n"
 msgstr "%s hat nicht alle erforderlichen Objekte gesendet\n"
 
-#: builtin/fetch.c:960
+#: builtin/fetch.c:1069
 #, c-format
 msgid "reject %s because shallow roots are not allowed to be updated"
 msgstr ""
@@ -14871,12 +15149,12 @@ msgstr ""
 "unvollständiger\n"
 "Historie (shallow) nicht aktualisiert werden dürfen."
 
-#: builtin/fetch.c:1053 builtin/fetch.c:1191
+#: builtin/fetch.c:1146 builtin/fetch.c:1297
 #, c-format
 msgid "From %.*s\n"
 msgstr "Von %.*s\n"
 
-#: builtin/fetch.c:1064
+#: builtin/fetch.c:1168
 #, c-format
 msgid ""
 "some local refs could not be updated; try running\n"
@@ -14885,58 +15163,58 @@ msgstr ""
 "Einige lokale Referenzen konnten nicht aktualisiert werden; versuchen Sie\n"
 "'git remote prune %s', um jeden älteren, widersprüchlichen Branch zu löschen."
 
-#: builtin/fetch.c:1161
+#: builtin/fetch.c:1267
 #, c-format
 msgid "   (%s will become dangling)"
 msgstr "   (%s wird unreferenziert)"
 
-#: builtin/fetch.c:1162
+#: builtin/fetch.c:1268
 #, c-format
 msgid "   (%s has become dangling)"
 msgstr "   (%s wurde unreferenziert)"
 
-#: builtin/fetch.c:1194
+#: builtin/fetch.c:1300
 msgid "[deleted]"
 msgstr "[gelöscht]"
 
-#: builtin/fetch.c:1195 builtin/remote.c:1118
+#: builtin/fetch.c:1301 builtin/remote.c:1118
 msgid "(none)"
 msgstr "(nichts)"
 
-#: builtin/fetch.c:1218
+#: builtin/fetch.c:1324
 #, c-format
 msgid "Refusing to fetch into current branch %s of non-bare repository"
 msgstr ""
 "Der \"fetch\" in den aktuellen Branch %s von einem Nicht-Bare-Repository "
 "wurde verweigert."
 
-#: builtin/fetch.c:1237
+#: builtin/fetch.c:1343
 #, c-format
 msgid "Option \"%s\" value \"%s\" is not valid for %s"
 msgstr "Option \"%s\" Wert \"%s\" ist nicht gültig für %s"
 
-#: builtin/fetch.c:1240
+#: builtin/fetch.c:1346
 #, c-format
 msgid "Option \"%s\" is ignored for %s\n"
 msgstr "Option \"%s\" wird ignoriert für %s\n"
 
-#: builtin/fetch.c:1448
+#: builtin/fetch.c:1558
 msgid "multiple branches detected, incompatible with --set-upstream"
 msgstr "Mehrere Branches erkannt, inkompatibel mit --set-upstream"
 
-#: builtin/fetch.c:1463
+#: builtin/fetch.c:1573
 msgid "not setting upstream for a remote remote-tracking branch"
 msgstr "Setze keinen Upstream für einen entfernten Remote-Tracking-Branch."
 
-#: builtin/fetch.c:1465
+#: builtin/fetch.c:1575
 msgid "not setting upstream for a remote tag"
 msgstr "Setze keinen Upstream für einen Tag eines Remote-Repositories."
 
-#: builtin/fetch.c:1467
+#: builtin/fetch.c:1577
 msgid "unknown branch type"
 msgstr "Unbekannter Branch-Typ"
 
-#: builtin/fetch.c:1469
+#: builtin/fetch.c:1579
 msgid ""
 "no source branch found.\n"
 "you need to specify exactly one branch with the --set-upstream option."
@@ -14944,22 +15222,22 @@ msgstr ""
 "Keinen Quell-Branch gefunden.\n"
 "Sie müssen bei der Option --set-upstream genau einen Branch angeben."
 
-#: builtin/fetch.c:1598 builtin/fetch.c:1661
+#: builtin/fetch.c:1708 builtin/fetch.c:1771
 #, c-format
 msgid "Fetching %s\n"
 msgstr "Fordere an von %s\n"
 
-#: builtin/fetch.c:1608 builtin/fetch.c:1663 builtin/remote.c:101
+#: builtin/fetch.c:1718 builtin/fetch.c:1773 builtin/remote.c:101
 #, c-format
 msgid "Could not fetch %s"
 msgstr "Konnte nicht von %s anfordern"
 
-#: builtin/fetch.c:1620
+#: builtin/fetch.c:1730
 #, c-format
 msgid "could not fetch '%s' (exit code: %d)\n"
 msgstr "Konnte '%s' nicht anfordern (Exit-Code: %d)\n"
 
-#: builtin/fetch.c:1724
+#: builtin/fetch.c:1834
 msgid ""
 "No remote repository specified.  Please, specify either a URL or a\n"
 "remote name from which new revisions should be fetched."
@@ -14968,49 +15246,48 @@ msgstr ""
 "oder den Namen des Remote-Repositories an, von welchem neue\n"
 "Commits angefordert werden sollen."
 
-#: builtin/fetch.c:1760
+#: builtin/fetch.c:1870
 msgid "You need to specify a tag name."
 msgstr "Sie müssen den Namen des Tags angeben."
 
-#: builtin/fetch.c:1825
+#: builtin/fetch.c:1935
 msgid "Negative depth in --deepen is not supported"
 msgstr "Negative Tiefe wird von --deepen nicht unterstützt."
 
-#: builtin/fetch.c:1827
+#: builtin/fetch.c:1937
 msgid "--deepen and --depth are mutually exclusive"
 msgstr "--deepen und --depth schließen sich gegenseitig aus"
 
-#: builtin/fetch.c:1832
+#: builtin/fetch.c:1942
 msgid "--depth and --unshallow cannot be used together"
-msgstr ""
-"Die Optionen --depth und --unshallow können nicht gemeinsam verwendet werden."
+msgstr "--depth und --unshallow können nicht gemeinsam verwendet werden"
 
-#: builtin/fetch.c:1834
+#: builtin/fetch.c:1944
 msgid "--unshallow on a complete repository does not make sense"
 msgstr ""
-"Die Option --unshallow kann nicht in einem Repository mit vollständiger "
-"Historie verwendet werden."
+"--unshallow kann nicht in einem Repository mit vollständiger Historie "
+"verwendet werden"
 
-#: builtin/fetch.c:1851
+#: builtin/fetch.c:1961
 msgid "fetch --all does not take a repository argument"
 msgstr "fetch --all akzeptiert kein Repository als Argument"
 
-#: builtin/fetch.c:1853
+#: builtin/fetch.c:1963
 msgid "fetch --all does not make sense with refspecs"
-msgstr "fetch --all kann nicht mit Refspecs verwendet werden."
+msgstr "fetch --all kann nicht mit Refspecs verwendet werden"
 
-#: builtin/fetch.c:1862
+#: builtin/fetch.c:1972
 #, c-format
 msgid "No such remote or remote group: %s"
-msgstr "Kein Remote-Repository (einzeln oder Gruppe): %s"
+msgstr "Remote-Repository (einzeln oder Gruppe) nicht gefunden: %s"
 
-#: builtin/fetch.c:1869
+#: builtin/fetch.c:1979
 msgid "Fetching a group and specifying refspecs does not make sense"
 msgstr ""
 "Das Abholen einer Gruppe von Remote-Repositories kann nicht mit der Angabe\n"
 "von Refspecs verwendet werden."
 
-#: builtin/fetch.c:1887
+#: builtin/fetch.c:1997
 msgid ""
 "--filter can only be used with the remote configured in extensions."
 "partialclone"
@@ -15018,11 +15295,17 @@ msgstr ""
 "--filter kann nur mit den Remote-Repositories verwendet werden,\n"
 "die in extensions.partialclone konfiguriert sind"
 
-#: builtin/fetch.c:1891
+#: builtin/fetch.c:2001
+msgid "--atomic can only be used when fetching from one remote"
+msgstr ""
+"--atomic kann nur verwendet werden, wenn nur von einem Remote-Repository "
+"abgefragt wird"
+
+#: builtin/fetch.c:2005
 msgid "--stdin can only be used when fetching from one remote"
 msgstr ""
-"die Option --stdin kann nur verwendet werden, wenn nur von einem Remote-\n"
-"Repository abgefragt wird"
+"--stdin kann nur verwendet werden, wenn nur von einem Remote-Repository "
+"abgefragt wird"
 
 #: builtin/fmt-merge-msg.c:7
 msgid ""
@@ -15087,7 +15370,7 @@ msgstr "Platzhalter als Tcl-String formatieren"
 msgid "show only <n> matched refs"
 msgstr "nur <n> passende Referenzen anzeigen"
 
-#: builtin/for-each-ref.c:39 builtin/tag.c:440
+#: builtin/for-each-ref.c:39 builtin/tag.c:472
 msgid "respect format colors"
 msgstr "Formatfarben beachten"
 
@@ -15127,32 +15410,32 @@ msgstr "Konfigurationsschlüssel für eine Liste von Repository-Pfaden"
 msgid "missing --config=<config>"
 msgstr "Option --config=<Konfiguration> fehlt"
 
-#: builtin/fsck.c:69 builtin/fsck.c:148 builtin/fsck.c:149
+#: builtin/fsck.c:69 builtin/fsck.c:130 builtin/fsck.c:131
 msgid "unknown"
 msgstr "unbekannt"
 
 #. TRANSLATORS: e.g. error in tree 01bfda: <more explanation>
-#: builtin/fsck.c:101 builtin/fsck.c:121
+#: builtin/fsck.c:83 builtin/fsck.c:103
 #, c-format
 msgid "error in %s %s: %s"
 msgstr "Fehler in %s %s: %s"
 
 #. TRANSLATORS: e.g. warning in tree 01bfda: <more explanation>
-#: builtin/fsck.c:115
+#: builtin/fsck.c:97
 #, c-format
 msgid "warning in %s %s: %s"
 msgstr "Warnung in %s %s: %s"
 
-#: builtin/fsck.c:144 builtin/fsck.c:147
+#: builtin/fsck.c:126 builtin/fsck.c:129
 #, c-format
 msgid "broken link from %7s %s"
 msgstr "fehlerhafte Verknüpfung von %7s %s"
 
-#: builtin/fsck.c:156
+#: builtin/fsck.c:138
 msgid "wrong object type in link"
 msgstr "falscher Objekttyp in Verknüpfung"
 
-#: builtin/fsck.c:172
+#: builtin/fsck.c:154
 #, c-format
 msgid ""
 "broken link from %7s %s\n"
@@ -15161,211 +15444,211 @@ msgstr ""
 "fehlerhafte Verknüpfung von %7s %s\n"
 "                       nach %7s %s"
 
-#: builtin/fsck.c:283
+#: builtin/fsck.c:265
 #, c-format
 msgid "missing %s %s"
 msgstr "%s %s fehlt"
 
-#: builtin/fsck.c:310
+#: builtin/fsck.c:292
 #, c-format
 msgid "unreachable %s %s"
 msgstr "%s %s nicht erreichbar"
 
-#: builtin/fsck.c:330
+#: builtin/fsck.c:312
 #, c-format
 msgid "dangling %s %s"
 msgstr "%s %s unreferenziert"
 
-#: builtin/fsck.c:340
+#: builtin/fsck.c:322
 msgid "could not create lost-found"
 msgstr "Konnte lost-found nicht erstellen."
 
-#: builtin/fsck.c:351
+#: builtin/fsck.c:333
 #, c-format
 msgid "could not finish '%s'"
 msgstr "Konnte '%s' nicht abschließen."
 
-#: builtin/fsck.c:368
+#: builtin/fsck.c:350
 #, c-format
 msgid "Checking %s"
 msgstr "Prüfe %s"
 
-#: builtin/fsck.c:406
+#: builtin/fsck.c:388
 #, c-format
 msgid "Checking connectivity (%d objects)"
 msgstr "Prüfe Konnektivität (%d Objekte)"
 
-#: builtin/fsck.c:425
+#: builtin/fsck.c:407
 #, c-format
 msgid "Checking %s %s"
 msgstr "Prüfe %s %s"
 
-#: builtin/fsck.c:430
+#: builtin/fsck.c:412
 msgid "broken links"
 msgstr "Fehlerhafte Verknüpfungen"
 
-#: builtin/fsck.c:439
+#: builtin/fsck.c:421
 #, c-format
 msgid "root %s"
 msgstr "Wurzel %s"
 
-#: builtin/fsck.c:447
+#: builtin/fsck.c:429
 #, c-format
 msgid "tagged %s %s (%s) in %s"
 msgstr "%s %s (%s) in %s getaggt"
 
-#: builtin/fsck.c:476
+#: builtin/fsck.c:458
 #, c-format
 msgid "%s: object corrupt or missing"
 msgstr "%s: Objekt fehlerhaft oder nicht vorhanden"
 
-#: builtin/fsck.c:501
+#: builtin/fsck.c:483
 #, c-format
 msgid "%s: invalid reflog entry %s"
 msgstr "%s: Ungültiger Reflog-Eintrag %s"
 
-#: builtin/fsck.c:515
+#: builtin/fsck.c:497
 #, c-format
 msgid "Checking reflog %s->%s"
 msgstr "Prüfe Reflog %s->%s"
 
-#: builtin/fsck.c:549
+#: builtin/fsck.c:531
 #, c-format
 msgid "%s: invalid sha1 pointer %s"
 msgstr "%s: Ungültiger SHA1-Zeiger %s"
 
-#: builtin/fsck.c:556
+#: builtin/fsck.c:538
 #, c-format
 msgid "%s: not a commit"
 msgstr "%s: kein Commit"
 
-#: builtin/fsck.c:610
+#: builtin/fsck.c:592
 msgid "notice: No default references"
 msgstr "Notiz: Keine Standardreferenzen"
 
-#: builtin/fsck.c:625
+#: builtin/fsck.c:607
 #, c-format
 msgid "%s: object corrupt or missing: %s"
 msgstr "%s: Objekt fehlerhaft oder nicht vorhanden: %s"
 
-#: builtin/fsck.c:638
+#: builtin/fsck.c:620
 #, c-format
 msgid "%s: object could not be parsed: %s"
 msgstr "%s: Objekt konnte nicht geparst werden: %s"
 
-#: builtin/fsck.c:658
+#: builtin/fsck.c:640
 #, c-format
 msgid "bad sha1 file: %s"
 msgstr "Ungültige SHA1-Datei: %s"
 
-#: builtin/fsck.c:673
+#: builtin/fsck.c:655
 msgid "Checking object directory"
 msgstr "Prüfe Objekt-Verzeichnis"
 
-#: builtin/fsck.c:676
+#: builtin/fsck.c:658
 msgid "Checking object directories"
 msgstr "Prüfe Objekt-Verzeichnisse"
 
-#: builtin/fsck.c:691
+#: builtin/fsck.c:673
 #, c-format
 msgid "Checking %s link"
 msgstr "Prüfe %s Verknüpfung"
 
-#: builtin/fsck.c:696 builtin/index-pack.c:865
+#: builtin/fsck.c:678 builtin/index-pack.c:865
 #, c-format
 msgid "invalid %s"
 msgstr "Ungültiger Objekt-Typ %s"
 
-#: builtin/fsck.c:703
+#: builtin/fsck.c:685
 #, c-format
 msgid "%s points to something strange (%s)"
 msgstr "%s zeigt auf etwas seltsames (%s)"
 
-#: builtin/fsck.c:709
+#: builtin/fsck.c:691
 #, c-format
 msgid "%s: detached HEAD points at nothing"
 msgstr "%s: losgelöster HEAD zeigt auf nichts"
 
-#: builtin/fsck.c:713
+#: builtin/fsck.c:695
 #, c-format
 msgid "notice: %s points to an unborn branch (%s)"
 msgstr "Notiz: %s zeigt auf einen ungeborenen Branch (%s)"
 
-#: builtin/fsck.c:725
+#: builtin/fsck.c:707
 msgid "Checking cache tree"
 msgstr "Prüfe Cache-Verzeichnis"
 
-#: builtin/fsck.c:730
+#: builtin/fsck.c:712
 #, c-format
 msgid "%s: invalid sha1 pointer in cache-tree"
 msgstr "%s: Ungültiger SHA1-Zeiger in Cache-Verzeichnis"
 
-#: builtin/fsck.c:739
+#: builtin/fsck.c:721
 msgid "non-tree in cache-tree"
 msgstr "non-tree in Cache-Verzeichnis"
 
-#: builtin/fsck.c:770
+#: builtin/fsck.c:752
 msgid "git fsck [<options>] [<object>...]"
 msgstr "git fsck [<Optionen>] [<Objekt>...]"
 
-#: builtin/fsck.c:776
+#: builtin/fsck.c:758
 msgid "show unreachable objects"
 msgstr "unerreichbare Objekte anzeigen"
 
-#: builtin/fsck.c:777
+#: builtin/fsck.c:759
 msgid "show dangling objects"
 msgstr "unreferenzierte Objekte anzeigen"
 
-#: builtin/fsck.c:778
+#: builtin/fsck.c:760
 msgid "report tags"
 msgstr "Tags melden"
 
-#: builtin/fsck.c:779
+#: builtin/fsck.c:761
 msgid "report root nodes"
 msgstr "Hauptwurzeln melden"
 
-#: builtin/fsck.c:780
+#: builtin/fsck.c:762
 msgid "make index objects head nodes"
 msgstr "Index-Objekte in Erreichbarkeitsprüfung einbeziehen"
 
-#: builtin/fsck.c:781
+#: builtin/fsck.c:763
 msgid "make reflogs head nodes (default)"
 msgstr "Reflogs in Erreichbarkeitsprüfung einbeziehen (Standard)"
 
-#: builtin/fsck.c:782
+#: builtin/fsck.c:764
 msgid "also consider packs and alternate objects"
 msgstr "ebenso Pakete und alternative Objekte betrachten"
 
-#: builtin/fsck.c:783
+#: builtin/fsck.c:765
 msgid "check only connectivity"
 msgstr "nur Konnektivität prüfen"
 
-#: builtin/fsck.c:784
+#: builtin/fsck.c:766 builtin/mktag.c:78
 msgid "enable more strict checking"
 msgstr "genauere Prüfung aktivieren"
 
-#: builtin/fsck.c:786
+#: builtin/fsck.c:768
 msgid "write dangling objects in .git/lost-found"
 msgstr "unreferenzierte Objekte nach .git/lost-found schreiben"
 
-#: builtin/fsck.c:787 builtin/prune.c:134
+#: builtin/fsck.c:769 builtin/prune.c:134
 msgid "show progress"
 msgstr "Fortschrittsanzeige anzeigen"
 
-#: builtin/fsck.c:788
+#: builtin/fsck.c:770
 msgid "show verbose names for reachable objects"
 msgstr "ausführliche Namen für erreichbare Objekte anzeigen"
 
-#: builtin/fsck.c:847 builtin/index-pack.c:261
+#: builtin/fsck.c:829 builtin/index-pack.c:261
 msgid "Checking objects"
 msgstr "Prüfe Objekte"
 
-#: builtin/fsck.c:875
+#: builtin/fsck.c:857
 #, c-format
 msgid "%s: object missing"
 msgstr "%s: Objekt nicht vorhanden"
 
-#: builtin/fsck.c:886
+#: builtin/fsck.c:868
 #, c-format
 msgid "invalid parameter: expected sha1, got '%s'"
 msgstr "Ungültiger Parameter: SHA-1 erwartet, '%s' bekommen"
@@ -15374,27 +15657,27 @@ msgstr "Ungültiger Parameter: SHA-1 erwartet, '%s' bekommen"
 msgid "git gc [<options>]"
 msgstr "git gc [<Optionen>]"
 
-#: builtin/gc.c:94
+#: builtin/gc.c:93
 #, c-format
 msgid "Failed to fstat %s: %s"
 msgstr "Konnte '%s' nicht lesen: %s"
 
-#: builtin/gc.c:130
+#: builtin/gc.c:129
 #, c-format
 msgid "failed to parse '%s' value '%s'"
 msgstr "Fehler beim Parsen von '%s' mit dem Wert '%s'"
 
-#: builtin/gc.c:479 builtin/init-db.c:58
+#: builtin/gc.c:487 builtin/init-db.c:58
 #, c-format
 msgid "cannot stat '%s'"
 msgstr "Kann '%s' nicht lesen"
 
-#: builtin/gc.c:488 builtin/notes.c:240 builtin/tag.c:530
+#: builtin/gc.c:496 builtin/notes.c:240 builtin/tag.c:562
 #, c-format
 msgid "cannot read '%s'"
 msgstr "kann '%s' nicht lesen"
 
-#: builtin/gc.c:495
+#: builtin/gc.c:503
 #, c-format
 msgid ""
 "The last gc run reported the following. Please correct the root cause\n"
@@ -15410,58 +15693,58 @@ msgstr ""
 "\n"
 "%s"
 
-#: builtin/gc.c:543
+#: builtin/gc.c:551
 msgid "prune unreferenced objects"
 msgstr "unreferenzierte Objekte entfernen"
 
-#: builtin/gc.c:545
+#: builtin/gc.c:553
 msgid "be more thorough (increased runtime)"
 msgstr "mehr Gründlichkeit (erhöht Laufzeit)"
 
-#: builtin/gc.c:546
+#: builtin/gc.c:554
 msgid "enable auto-gc mode"
 msgstr "\"auto-gc\" Modus aktivieren"
 
-#: builtin/gc.c:549
+#: builtin/gc.c:557
 msgid "force running gc even if there may be another gc running"
 msgstr ""
 "Ausführung von \"git gc\" erzwingen, selbst wenn ein anderes\n"
 "\"git gc\" bereits ausgeführt wird"
 
-#: builtin/gc.c:552
+#: builtin/gc.c:560
 msgid "repack all other packs except the largest pack"
 msgstr "alle anderen Pakete, außer das größte Paket, neu packen"
 
-#: builtin/gc.c:569
+#: builtin/gc.c:576
 #, c-format
 msgid "failed to parse gc.logexpiry value %s"
 msgstr "Fehler beim Parsen des Wertes '%s' von gc.logexpiry."
 
-#: builtin/gc.c:580
+#: builtin/gc.c:587
 #, c-format
 msgid "failed to parse prune expiry value %s"
 msgstr "Fehler beim Parsen des \"prune expiry\" Wertes %s"
 
-#: builtin/gc.c:600
+#: builtin/gc.c:607
 #, c-format
 msgid "Auto packing the repository in background for optimum performance.\n"
 msgstr ""
 "Die Datenbank des Repositories wird für eine optimale Performance im\n"
 "Hintergrund komprimiert.\n"
 
-#: builtin/gc.c:602
+#: builtin/gc.c:609
 #, c-format
 msgid "Auto packing the repository for optimum performance.\n"
 msgstr ""
 "Die Datenbank des Projektarchivs wird für eine optimale Performance "
 "komprimiert.\n"
 
-#: builtin/gc.c:603
+#: builtin/gc.c:610
 #, c-format
 msgid "See \"git help gc\" for manual housekeeping.\n"
 msgstr "Siehe \"git help gc\" für manuelles Aufräumen.\n"
 
-#: builtin/gc.c:643
+#: builtin/gc.c:650
 #, c-format
 msgid ""
 "gc is already running on machine '%s' pid %<PRIuMAX> (use --force if not)"
@@ -15469,149 +15752,176 @@ msgstr ""
 "\"git gc\" wird bereits auf Maschine '%s' pid %<PRIuMAX> ausgeführt\n"
 "(benutzen Sie --force falls nicht)"
 
-#: builtin/gc.c:698
+#: builtin/gc.c:705
 msgid ""
 "There are too many unreachable loose objects; run 'git prune' to remove them."
 msgstr ""
 "Es gibt zu viele unerreichbare lose Objekte; führen Sie 'git prune' aus, um "
 "diese zu löschen."
 
-#: builtin/gc.c:708
+#: builtin/gc.c:715
 msgid ""
 "git maintenance run [--auto] [--[no-]quiet] [--task=<task>] [--schedule]"
 msgstr ""
 "git maintenance run [--auto] [--[no-]quiet] [--task=<Aufgabe>] [--schedule]"
 
-#: builtin/gc.c:738
+#: builtin/gc.c:745
 msgid "--no-schedule is not allowed"
 msgstr "--no-schedule ist nicht erlaubt"
 
-#: builtin/gc.c:743
+#: builtin/gc.c:750
 #, c-format
 msgid "unrecognized --schedule argument '%s'"
 msgstr "nicht erkanntes --schedule Argument '%s'"
 
-#: builtin/gc.c:862
+#: builtin/gc.c:869
 msgid "failed to write commit-graph"
 msgstr "Fehler beim Schreiben des Commit-Graph"
 
-#: builtin/gc.c:901
+#: builtin/gc.c:914
 msgid "failed to fill remotes"
 msgstr "Fehler beim Eintragen der Remote-Repositories"
 
-#: builtin/gc.c:1024
+#: builtin/gc.c:1037
 msgid "failed to start 'git pack-objects' process"
 msgstr "konnte 'git pack-objects' Prozess nicht starten"
 
-#: builtin/gc.c:1041
+#: builtin/gc.c:1054
 msgid "failed to finish 'git pack-objects' process"
 msgstr "konnte 'git pack-objects' Prozess nicht beenden"
 
-#: builtin/gc.c:1093
+#: builtin/gc.c:1106
 msgid "failed to write multi-pack-index"
 msgstr "Fehler beim Schreiben des multi-pack-index"
 
-#: builtin/gc.c:1111
+#: builtin/gc.c:1124
 msgid "'git multi-pack-index expire' failed"
 msgstr "Fehler beim Ausführen von 'git multi-pack-index expire'"
 
-#: builtin/gc.c:1172
+#: builtin/gc.c:1185
 msgid "'git multi-pack-index repack' failed"
 msgstr "Fehler beim Ausführen von 'git multi-pack-index repack'"
 
-#: builtin/gc.c:1181
+#: builtin/gc.c:1194
 msgid ""
 "skipping incremental-repack task because core.multiPackIndex is disabled"
 msgstr ""
 "Überspringen der Aufgabe 'incremental-repack', weil core.multiPackIndex "
 "deaktiviert ist"
 
-#: builtin/gc.c:1279
+#: builtin/gc.c:1298
 #, c-format
 msgid "lock file '%s' exists, skipping maintenance"
 msgstr "Sperrdatei '%s' existiert, Wartung wird übersprungen"
 
-#: builtin/gc.c:1309
+#: builtin/gc.c:1328
 #, c-format
 msgid "task '%s' failed"
 msgstr "Aufgabe '%s' fehlgeschlagen"
 
-#: builtin/gc.c:1389
+#: builtin/gc.c:1410
 #, c-format
 msgid "'%s' is not a valid task"
 msgstr "'%s' ist keine gültige Aufgabe"
 
-#: builtin/gc.c:1394
+#: builtin/gc.c:1415
 #, c-format
 msgid "task '%s' cannot be selected multiple times"
 msgstr "Aufgabe '%s' kann nicht mehrfach ausgewählt werden"
 
-#: builtin/gc.c:1409
+#: builtin/gc.c:1430
 msgid "run tasks based on the state of the repository"
 msgstr "Aufgaben abhängig vom Zustand des Repositories ausführen"
 
-#: builtin/gc.c:1410
+#: builtin/gc.c:1431
 msgid "frequency"
 msgstr "Häufigkeit"
 
-#: builtin/gc.c:1411
+#: builtin/gc.c:1432
 msgid "run tasks based on frequency"
 msgstr "Aufgaben abhängig von der Häufigkeit ausführen"
 
-#: builtin/gc.c:1414
+#: builtin/gc.c:1435
 msgid "do not report progress or other information over stderr"
 msgstr "zeige keinen Fortschritt oder andere Informationen über stderr"
 
-#: builtin/gc.c:1415
+#: builtin/gc.c:1436
 msgid "task"
 msgstr "Aufgabe"
 
-#: builtin/gc.c:1416
+#: builtin/gc.c:1437
 msgid "run a specific task"
 msgstr "eine bestimmte Aufgabe ausführen"
 
-#: builtin/gc.c:1433
+#: builtin/gc.c:1454
 msgid "use at most one of --auto and --schedule=<frequency>"
 msgstr ""
 "nutzen Sie höchstens eine der Optionen --auto oder --schedule=<Häufigkeit>"
 
-#: builtin/gc.c:1467
+#: builtin/gc.c:1497
 msgid "failed to run 'git config'"
 msgstr "Fehler beim Ausführen von 'git config'"
 
-#: builtin/gc.c:1512
-msgid "another process is scheduling background maintenance"
-msgstr "ein anderer Prozess plant die Hintergrundwartung"
+#: builtin/gc.c:1562
+#, c-format
+msgid "failed to expand path '%s'"
+msgstr "Fehler beim Erweitern des Pfades '%s'"
 
-#: builtin/gc.c:1525
+#: builtin/gc.c:1591
+msgid "failed to start launchctl"
+msgstr "konnte launchctl nicht starten"
+
+#: builtin/gc.c:1628
+#, c-format
+msgid "failed to create directories for '%s'"
+msgstr "Fehler beim Erstellen von Verzeichnissen für '%s'"
+
+#: builtin/gc.c:1689
+#, c-format
+msgid "failed to bootstrap service %s"
+msgstr "Fehler beim Laden des Services %s"
+
+#: builtin/gc.c:1760
+msgid "failed to create temp xml file"
+msgstr "Fehler beim Erstellen der temporären XML-Datei"
+
+#: builtin/gc.c:1850
+msgid "failed to start schtasks"
+msgstr "Fehler beim Starten von schtasks"
+
+#: builtin/gc.c:1894
 msgid "failed to run 'crontab -l'; your system might not support 'cron'"
 msgstr ""
 "Fehler beim Ausführen von 'crontab -l'; Ihr System unterstützt eventuell "
 "'cron' nicht"
 
-#: builtin/gc.c:1544
+#: builtin/gc.c:1911
 msgid "failed to run 'crontab'; your system might not support 'cron'"
 msgstr ""
 "Fehler beim Ausführen von 'crontab'; Ihr System unterstützt eventuell 'cron' "
 "nicht"
 
-#: builtin/gc.c:1550
+#: builtin/gc.c:1915
 msgid "failed to open stdin of 'crontab'"
 msgstr "Fehler beim Öffnen der Standard-Eingabe von 'crontab'"
 
-#: builtin/gc.c:1592
+#: builtin/gc.c:1956
 msgid "'crontab' died"
 msgstr "'crontab' abgebrochen"
 
-#: builtin/gc.c:1605
+#: builtin/gc.c:1990
+msgid "another process is scheduling background maintenance"
+msgstr "ein anderer Prozess plant die Hintergrundwartung"
+
+#: builtin/gc.c:2009
 msgid "failed to add repo to global config"
 msgstr "Repository konnte nicht zur globalen Konfiguration hinzugefügt werden"
 
-#: builtin/gc.c:1615
+#: builtin/gc.c:2019
 msgid "git maintenance <subcommand> [<options>]"
 msgstr "git maintenance <Unterbefehl> [<Optionen>]"
 
-#: builtin/gc.c:1634
+#: builtin/gc.c:2038
 #, c-format
 msgid "invalid subcommand: %s"
 msgstr "ungültiger Unterbefehl: %s"
@@ -15620,12 +15930,12 @@ msgstr "ungültiger Unterbefehl: %s"
 msgid "git grep [<options>] [-e] <pattern> [<rev>...] [[--] <path>...]"
 msgstr "git grep [<Optionen>] [-e] <Muster> [<Commit>...] [[--] <Pfad>...]"
 
-#: builtin/grep.c:225
+#: builtin/grep.c:223
 #, c-format
 msgid "grep: failed to create thread: %s"
 msgstr "grep: Fehler beim Erzeugen eines Thread: %s"
 
-#: builtin/grep.c:279
+#: builtin/grep.c:277
 #, c-format
 msgid "invalid number of threads specified (%d) for %s"
 msgstr "ungültige Anzahl von Threads (%d) für %s angegeben"
@@ -15634,266 +15944,266 @@ msgstr "ungültige Anzahl von Threads (%d) für %s angegeben"
 #. variable for tweaking threads, currently
 #. grep.threads
 #.
-#: builtin/grep.c:287 builtin/index-pack.c:1576 builtin/index-pack.c:1766
-#: builtin/pack-objects.c:2936
+#: builtin/grep.c:285 builtin/index-pack.c:1589 builtin/index-pack.c:1808
+#: builtin/pack-objects.c:2944
 #, c-format
 msgid "no threads support, ignoring %s"
 msgstr "keine Unterstützung von Threads, '%s' wird ignoriert"
 
-#: builtin/grep.c:475 builtin/grep.c:600 builtin/grep.c:640
+#: builtin/grep.c:473 builtin/grep.c:601 builtin/grep.c:641
 #, c-format
 msgid "unable to read tree (%s)"
 msgstr "konnte \"Tree\"-Objekt (%s) nicht lesen"
 
-#: builtin/grep.c:655
+#: builtin/grep.c:656
 #, c-format
 msgid "unable to grep from object of type %s"
 msgstr "kann \"grep\" nicht mit Objekten des Typs %s durchführen"
 
-#: builtin/grep.c:736
+#: builtin/grep.c:737
 #, c-format
 msgid "switch `%c' expects a numerical value"
 msgstr "Schalter '%c' erwartet einen numerischen Wert"
 
-#: builtin/grep.c:835
+#: builtin/grep.c:836
 msgid "search in index instead of in the work tree"
-msgstr "im Index anstatt im Arbeitsverzeichnis suchen"
+msgstr "im Index statt im Arbeitsverzeichnis suchen"
 
-#: builtin/grep.c:837
+#: builtin/grep.c:838
 msgid "find in contents not managed by git"
 msgstr "auch in Inhalten finden, die nicht von Git verwaltet werden"
 
-#: builtin/grep.c:839
+#: builtin/grep.c:840
 msgid "search in both tracked and untracked files"
 msgstr "in versionierten und unversionierten Dateien suchen"
 
-#: builtin/grep.c:841
+#: builtin/grep.c:842
 msgid "ignore files specified via '.gitignore'"
 msgstr "Dateien, die über '.gitignore' angegeben sind, ignorieren"
 
-#: builtin/grep.c:843
+#: builtin/grep.c:844
 msgid "recursively search in each submodule"
 msgstr "rekursive Suche in jedem Submodul"
 
-#: builtin/grep.c:846
+#: builtin/grep.c:847
 msgid "show non-matching lines"
 msgstr "Zeilen ohne Übereinstimmungen anzeigen"
 
-#: builtin/grep.c:848
+#: builtin/grep.c:849
 msgid "case insensitive matching"
 msgstr "Übereinstimmungen unabhängig von Groß- und Kleinschreibung finden"
 
-#: builtin/grep.c:850
+#: builtin/grep.c:851
 msgid "match patterns only at word boundaries"
 msgstr "nur ganze Wörter suchen"
 
-#: builtin/grep.c:852
+#: builtin/grep.c:853
 msgid "process binary files as text"
 msgstr "binäre Dateien als Text verarbeiten"
 
-#: builtin/grep.c:854
+#: builtin/grep.c:855
 msgid "don't match patterns in binary files"
 msgstr "keine Muster in Binärdateien finden"
 
-#: builtin/grep.c:857
+#: builtin/grep.c:858
 msgid "process binary files with textconv filters"
 msgstr "binäre Dateien mit \"textconv\"-Filtern verarbeiten"
 
-#: builtin/grep.c:859
+#: builtin/grep.c:860
 msgid "search in subdirectories (default)"
 msgstr "in Unterverzeichnissen suchen (Standard)"
 
-#: builtin/grep.c:861
+#: builtin/grep.c:862
 msgid "descend at most <depth> levels"
 msgstr "höchstens <Tiefe> Ebenen durchlaufen"
 
-#: builtin/grep.c:865
+#: builtin/grep.c:866
 msgid "use extended POSIX regular expressions"
 msgstr "erweiterte reguläre Ausdrücke aus POSIX verwenden"
 
-#: builtin/grep.c:868
+#: builtin/grep.c:869
 msgid "use basic POSIX regular expressions (default)"
 msgstr "grundlegende reguläre Ausdrücke aus POSIX verwenden (Standard)"
 
-#: builtin/grep.c:871
+#: builtin/grep.c:872
 msgid "interpret patterns as fixed strings"
 msgstr "Muster als feste Zeichenketten interpretieren"
 
-#: builtin/grep.c:874
+#: builtin/grep.c:875
 msgid "use Perl-compatible regular expressions"
 msgstr "Perl-kompatible reguläre Ausdrücke verwenden"
 
-#: builtin/grep.c:877
+#: builtin/grep.c:878
 msgid "show line numbers"
 msgstr "Zeilennummern anzeigen"
 
-#: builtin/grep.c:878
+#: builtin/grep.c:879
 msgid "show column number of first match"
 msgstr "Nummer der Spalte des ersten Treffers anzeigen"
 
-#: builtin/grep.c:879
+#: builtin/grep.c:880
 msgid "don't show filenames"
 msgstr "keine Dateinamen anzeigen"
 
-#: builtin/grep.c:880
+#: builtin/grep.c:881
 msgid "show filenames"
 msgstr "Dateinamen anzeigen"
 
-#: builtin/grep.c:882
+#: builtin/grep.c:883
 msgid "show filenames relative to top directory"
 msgstr "Dateinamen relativ zum Projektverzeichnis anzeigen"
 
-#: builtin/grep.c:884
+#: builtin/grep.c:885
 msgid "show only filenames instead of matching lines"
 msgstr "nur Dateinamen anzeigen anstatt übereinstimmende Zeilen"
 
-#: builtin/grep.c:886
+#: builtin/grep.c:887
 msgid "synonym for --files-with-matches"
 msgstr "Synonym für --files-with-matches"
 
-#: builtin/grep.c:889
+#: builtin/grep.c:890
 msgid "show only the names of files without match"
 msgstr "nur die Dateinamen ohne Übereinstimmungen anzeigen"
 
-#: builtin/grep.c:891
+#: builtin/grep.c:892
 msgid "print NUL after filenames"
 msgstr "NUL-Zeichen nach Dateinamen ausgeben"
 
-#: builtin/grep.c:894
+#: builtin/grep.c:895
 msgid "show only matching parts of a line"
 msgstr "nur übereinstimmende Teile der Zeile anzeigen"
 
-#: builtin/grep.c:896
+#: builtin/grep.c:897
 msgid "show the number of matches instead of matching lines"
 msgstr "anstatt der Zeilen, die Anzahl der übereinstimmenden Zeilen anzeigen"
 
-#: builtin/grep.c:897
+#: builtin/grep.c:898
 msgid "highlight matches"
 msgstr "Übereinstimmungen hervorheben"
 
-#: builtin/grep.c:899
+#: builtin/grep.c:900
 msgid "print empty line between matches from different files"
 msgstr ""
 "eine Leerzeile zwischen Übereinstimmungen in verschiedenen Dateien ausgeben"
 
-#: builtin/grep.c:901
+#: builtin/grep.c:902
 msgid "show filename only once above matches from same file"
 msgstr ""
 "den Dateinamen nur einmal oberhalb der Übereinstimmungen aus dieser Datei "
 "anzeigen"
 
-#: builtin/grep.c:904
+#: builtin/grep.c:905
 msgid "show <n> context lines before and after matches"
 msgstr "<n> Zeilen vor und nach den Übereinstimmungen anzeigen"
 
-#: builtin/grep.c:907
+#: builtin/grep.c:908
 msgid "show <n> context lines before matches"
 msgstr "<n> Zeilen vor den Übereinstimmungen anzeigen"
 
-#: builtin/grep.c:909
+#: builtin/grep.c:910
 msgid "show <n> context lines after matches"
 msgstr "<n> Zeilen nach den Übereinstimmungen anzeigen"
 
-#: builtin/grep.c:911
+#: builtin/grep.c:912
 msgid "use <n> worker threads"
 msgstr "<n> Threads benutzen"
 
-#: builtin/grep.c:912
+#: builtin/grep.c:913
 msgid "shortcut for -C NUM"
 msgstr "Kurzform für -C NUM"
 
-#: builtin/grep.c:915
+#: builtin/grep.c:916
 msgid "show a line with the function name before matches"
 msgstr "eine Zeile mit dem Funktionsnamen vor Übereinstimmungen anzeigen"
 
-#: builtin/grep.c:917
+#: builtin/grep.c:918
 msgid "show the surrounding function"
 msgstr "die umgebende Funktion anzeigen"
 
-#: builtin/grep.c:920
+#: builtin/grep.c:921
 msgid "read patterns from file"
 msgstr "Muster von einer Datei lesen"
 
-#: builtin/grep.c:922
+#: builtin/grep.c:923
 msgid "match <pattern>"
 msgstr "<Muster> finden"
 
-#: builtin/grep.c:924
+#: builtin/grep.c:925
 msgid "combine patterns specified with -e"
 msgstr "Muster kombinieren, die mit -e angegeben wurden"
 
-#: builtin/grep.c:936
+#: builtin/grep.c:937
 msgid "indicate hit with exit status without output"
 msgstr "Übereinstimmungen nur durch Beendigungsstatus anzeigen"
 
-#: builtin/grep.c:938
+#: builtin/grep.c:939
 msgid "show only matches from files that match all patterns"
 msgstr ""
 "nur Übereinstimmungen von Dateien anzeigen, die allen Mustern entsprechen"
 
-#: builtin/grep.c:940
-msgid "show parse tree for grep expression"
-msgstr "geparstes Verzeichnis für \"grep\"-Ausdruck anzeigen"
-
-#: builtin/grep.c:944
+#: builtin/grep.c:942
 msgid "pager"
 msgstr "Anzeigeprogramm"
 
-#: builtin/grep.c:944
+#: builtin/grep.c:942
 msgid "show matching files in the pager"
 msgstr "Dateien mit Übereinstimmungen im Anzeigeprogramm anzeigen"
 
-#: builtin/grep.c:948
+#: builtin/grep.c:946
 msgid "allow calling of grep(1) (ignored by this build)"
 msgstr "den Aufruf von grep(1) erlauben (von dieser Programmversion ignoriert)"
 
-#: builtin/grep.c:1014
+#: builtin/grep.c:1012
 msgid "no pattern given"
 msgstr "Kein Muster angegeben."
 
-#: builtin/grep.c:1050
+#: builtin/grep.c:1048
 msgid "--no-index or --untracked cannot be used with revs"
 msgstr "--no-index oder --untracked können nicht mit Commits verwendet werden"
 
-#: builtin/grep.c:1058
+#: builtin/grep.c:1056
 #, c-format
 msgid "unable to resolve revision: %s"
 msgstr "Konnte Commit nicht auflösen: %s"
 
-#: builtin/grep.c:1088
+#: builtin/grep.c:1086
 msgid "--untracked not supported with --recurse-submodules"
 msgstr "--untracked zusammen mit --recurse-submodules wird nicht unterstützt"
 
-#: builtin/grep.c:1092
+#: builtin/grep.c:1090
 msgid "invalid option combination, ignoring --threads"
 msgstr "Ungültige Kombination von Optionen, --threads wird ignoriert."
 
-#: builtin/grep.c:1095 builtin/pack-objects.c:3655
+#: builtin/grep.c:1093 builtin/pack-objects.c:3672
 msgid "no threads support, ignoring --threads"
 msgstr "Keine Unterstützung für Threads, --threads wird ignoriert."
 
-#: builtin/grep.c:1098 builtin/index-pack.c:1573 builtin/pack-objects.c:2933
+#: builtin/grep.c:1096 builtin/index-pack.c:1586 builtin/pack-objects.c:2941
 #, c-format
 msgid "invalid number of threads specified (%d)"
 msgstr "ungültige Anzahl von Threads angegeben (%d)"
 
-#: builtin/grep.c:1132
+#: builtin/grep.c:1130
 msgid "--open-files-in-pager only works on the worktree"
 msgstr ""
-"Die Option --open-files-in-pager kann nur innerhalb des "
-"Arbeitsverzeichnisses verwendet werden."
+"--open-files-in-pager kann nur innerhalb des Arbeitsverzeichnisses verwendet "
+"werden"
 
-#: builtin/grep.c:1158
+#: builtin/grep.c:1156
 msgid "--cached or --untracked cannot be used with --no-index"
-msgstr "--cached und --untracked können nicht mit --no-index verwendet werden."
+msgstr "--cached und --untracked können nicht mit --no-index verwendet werden"
 
-#: builtin/grep.c:1164
+#: builtin/grep.c:1159
+msgid "--untracked cannot be used with --cached"
+msgstr "--untracked kann nicht mit --cached verwendet werden"
+
+#: builtin/grep.c:1165
 msgid "--[no-]exclude-standard cannot be used for tracked contents"
 msgstr ""
 "--[no-]exclude-standard kann nicht mit versionierten Inhalten verwendet "
-"werden."
+"werden"
 
-#: builtin/grep.c:1172
+#: builtin/grep.c:1173
 msgid "both --cached and trees are given"
 msgstr "--cached und \"Tree\"-Objekte angegeben"
 
@@ -16026,12 +16336,12 @@ msgstr "kein Handbuch-Betrachter konnte mit dieser Anfrage umgehen"
 msgid "no info viewer handled the request"
 msgstr "kein Informations-Betrachter konnte mit dieser Anfrage umgehen"
 
-#: builtin/help.c:520 builtin/help.c:531 git.c:337
+#: builtin/help.c:520 builtin/help.c:531 git.c:340
 #, c-format
 msgid "'%s' is aliased to '%s'"
 msgstr "Für '%s' wurde der Alias '%s' angelegt."
 
-#: builtin/help.c:534 git.c:369
+#: builtin/help.c:534 git.c:372
 #, c-format
 msgid "bad alias.%s string: %s"
 msgstr "Ungültiger alias.%s String: %s"
@@ -16079,7 +16389,7 @@ msgstr "Fehler beim Lesen der Eingabe"
 msgid "used more bytes than were available"
 msgstr "verwendete mehr Bytes als verfügbar waren"
 
-#: builtin/index-pack.c:324 builtin/pack-objects.c:619
+#: builtin/index-pack.c:324 builtin/pack-objects.c:624
 msgid "pack too large for current definition of off_t"
 msgstr "Paket ist zu groß für die aktuelle Definition von off_t"
 
@@ -16087,7 +16397,7 @@ msgstr "Paket ist zu groß für die aktuelle Definition von off_t"
 msgid "pack exceeds maximum allowed size"
 msgstr "Paket überschreitet die maximal erlaubte Größe"
 
-#: builtin/index-pack.c:342 builtin/repack.c:286
+#: builtin/index-pack.c:342
 #, c-format
 msgid "unable to create '%s'"
 msgstr "konnte '%s' nicht erstellen"
@@ -16213,7 +16523,7 @@ msgstr "Fehler beim Ausführen von \"parse_pack_objects()\""
 msgid "Resolving deltas"
 msgstr "Löse Unterschiede auf"
 
-#: builtin/index-pack.c:1249 builtin/pack-objects.c:2697
+#: builtin/index-pack.c:1249 builtin/pack-objects.c:2707
 #, c-format
 msgid "unable to create thread: %s"
 msgstr "kann Thread nicht erzeugen: %s"
@@ -16251,10 +16561,10 @@ msgstr "Konnte angehängtes Objekt (%d) nicht komprimieren"
 msgid "local object %s is corrupt"
 msgstr "lokales Objekt %s ist beschädigt"
 
-#: builtin/index-pack.c:1444
+#: builtin/index-pack.c:1445
 #, c-format
-msgid "packfile name '%s' does not end with '.pack'"
-msgstr "Name der Paketdatei '%s' endet nicht mit '.pack'"
+msgid "packfile name '%s' does not end with '.%s'"
+msgstr "Name der Paketdatei '%s' endet nicht mit '.%s'"
 
 #: builtin/index-pack.c:1469
 #, c-format
@@ -16266,79 +16576,83 @@ msgstr "Kann %s Datei '%s' nicht schreiben."
 msgid "cannot close written %s file '%s'"
 msgstr "Kann eben geschriebene %s Datei '%s' nicht schließen."
 
-#: builtin/index-pack.c:1501
+#: builtin/index-pack.c:1503
 msgid "error while closing pack file"
 msgstr "Fehler beim Schließen der Paketdatei"
 
-#: builtin/index-pack.c:1515
+#: builtin/index-pack.c:1517
 msgid "cannot store pack file"
 msgstr "Kann Paketdatei nicht speichern"
 
-#: builtin/index-pack.c:1523
+#: builtin/index-pack.c:1525
 msgid "cannot store index file"
 msgstr "Kann Indexdatei nicht speichern"
 
-#: builtin/index-pack.c:1567 builtin/pack-objects.c:2944
+#: builtin/index-pack.c:1534
+msgid "cannot store reverse index file"
+msgstr "kann Reverse-Index-Datei nicht speichern"
+
+#: builtin/index-pack.c:1580 builtin/pack-objects.c:2952
 #, c-format
 msgid "bad pack.indexversion=%<PRIu32>"
 msgstr "\"pack.indexversion=%<PRIu32>\" ist ungültig"
 
-#: builtin/index-pack.c:1631
+#: builtin/index-pack.c:1650
 #, c-format
 msgid "Cannot open existing pack file '%s'"
 msgstr "Kann existierende Paketdatei '%s' nicht öffnen"
 
-#: builtin/index-pack.c:1633
+#: builtin/index-pack.c:1652
 #, c-format
 msgid "Cannot open existing pack idx file for '%s'"
 msgstr "Kann existierende Indexdatei für Paket '%s' nicht öffnen"
 
-#: builtin/index-pack.c:1681
+#: builtin/index-pack.c:1700
 #, c-format
 msgid "non delta: %d object"
 msgid_plural "non delta: %d objects"
 msgstr[0] "kein Unterschied: %d Objekt"
 msgstr[1] "kein Unterschied: %d Objekte"
 
-#: builtin/index-pack.c:1688
+#: builtin/index-pack.c:1707
 #, c-format
 msgid "chain length = %d: %lu object"
 msgid_plural "chain length = %d: %lu objects"
 msgstr[0] "Länge der Objekt-Liste = %d: %lu Objekt"
 msgstr[1] "Länge der Objekt-Liste = %d: %lu Objekte"
 
-#: builtin/index-pack.c:1728
+#: builtin/index-pack.c:1765
 msgid "Cannot come back to cwd"
 msgstr "Kann nicht zurück zum Arbeitsverzeichnis wechseln"
 
-#: builtin/index-pack.c:1777 builtin/index-pack.c:1780
-#: builtin/index-pack.c:1796 builtin/index-pack.c:1800
+#: builtin/index-pack.c:1819 builtin/index-pack.c:1822
+#: builtin/index-pack.c:1838 builtin/index-pack.c:1842
 #, c-format
 msgid "bad %s"
 msgstr "%s ist ungültig"
 
-#: builtin/index-pack.c:1806 builtin/init-db.c:392 builtin/init-db.c:625
+#: builtin/index-pack.c:1848 builtin/init-db.c:392 builtin/init-db.c:625
 #, c-format
 msgid "unknown hash algorithm '%s'"
 msgstr "unbekannter Hash-Algorithmus '%s'"
 
-#: builtin/index-pack.c:1821
+#: builtin/index-pack.c:1867
 msgid "--fix-thin cannot be used without --stdin"
-msgstr "Die Option --fix-thin kann nicht ohne --stdin verwendet werden."
+msgstr "--fix-thin kann nicht ohne --stdin verwendet werden"
 
-#: builtin/index-pack.c:1823
+#: builtin/index-pack.c:1869
 msgid "--stdin requires a git repository"
 msgstr "--stdin erfordert ein Git-Repository"
 
-#: builtin/index-pack.c:1825
+#: builtin/index-pack.c:1871
 msgid "--object-format cannot be used with --stdin"
-msgstr "Die Option --object-format kann nicht mit --stdin verwendet werden."
+msgstr "--object-format kann nicht mit --stdin verwendet werden"
 
-#: builtin/index-pack.c:1831
+#: builtin/index-pack.c:1886
 msgid "--verify with no packfile name given"
-msgstr "Die Option --verify wurde ohne Namen der Paketdatei angegeben."
+msgstr "--verify wurde ohne Namen der Paketdatei angegeben"
 
-#: builtin/index-pack.c:1892 builtin/unpack-objects.c:582
+#: builtin/index-pack.c:1956 builtin/unpack-objects.c:582
 msgid "fsck error in pack objects"
 msgstr "fsck Fehler beim Packen von Objekten"
 
@@ -16549,139 +16863,137 @@ msgstr "Anhang/Anhänge hinzufügen"
 
 #: builtin/interpret-trailers.c:123
 msgid "--trailer with --only-input does not make sense"
-msgstr ""
-"Die Optionen --trailer und --only-input können nicht gemeinsam verwendet "
-"werden."
+msgstr "--trailer und --only-input können nicht gemeinsam verwendet werden"
 
 #: builtin/interpret-trailers.c:133
 msgid "no input file given for in-place editing"
 msgstr "keine Datei zur direkten Bearbeitung angegeben"
 
-#: builtin/log.c:58
+#: builtin/log.c:59
 msgid "git log [<options>] [<revision-range>] [[--] <path>...]"
 msgstr "git log [<Optionen>] [<Commitbereich>] [[--] <Pfad>...]"
 
-#: builtin/log.c:59
+#: builtin/log.c:60
 msgid "git show [<options>] <object>..."
 msgstr "git show [<Optionen>] <Objekt>..."
 
-#: builtin/log.c:112
+#: builtin/log.c:113
 #, c-format
 msgid "invalid --decorate option: %s"
 msgstr "Ungültige Option für --decorate: %s"
 
-#: builtin/log.c:179
+#: builtin/log.c:180
 msgid "show source"
 msgstr "Quelle anzeigen"
 
-#: builtin/log.c:180
-msgid "Use mail map file"
+#: builtin/log.c:181
+msgid "use mail map file"
 msgstr "\"mailmap\"-Datei verwenden"
 
-#: builtin/log.c:183
+#: builtin/log.c:184
 msgid "only decorate refs that match <pattern>"
 msgstr "\"decorate\" nur bei Referenzen anwenden, die <Muster> entsprechen"
 
-#: builtin/log.c:185
+#: builtin/log.c:186
 msgid "do not decorate refs that match <pattern>"
 msgstr "\"decorate\" nicht bei Referenzen anwenden, die <Muster> entsprechen"
 
-#: builtin/log.c:186
+#: builtin/log.c:187
 msgid "decorate options"
 msgstr "decorate-Optionen"
 
-#: builtin/log.c:189
+#: builtin/log.c:190
 msgid ""
-"Trace the evolution of line range <start>,<end> or function :<funcname> in "
+"trace the evolution of line range <start>,<end> or function :<funcname> in "
 "<file>"
 msgstr ""
 "Entwicklung der Zeilen vom Bereich <Start>,<Ende> oder Funktion :"
 "<Funktionsname> in <Datei> verfolgen"
 
-#: builtin/log.c:212
+#: builtin/log.c:213
 msgid "-L<range>:<file> cannot be used with pathspec"
 msgstr "-L<Bereich>:<Datei> kann nicht mit Pfadspezifikation verwendet werden"
 
-#: builtin/log.c:302
+#: builtin/log.c:303
 #, c-format
 msgid "Final output: %d %s\n"
 msgstr "letzte Ausgabe: %d %s\n"
 
-#: builtin/log.c:564
+#: builtin/log.c:566
 #, c-format
 msgid "git show %s: bad file"
 msgstr "git show %s: ungültige Datei"
 
-#: builtin/log.c:579 builtin/log.c:674
+#: builtin/log.c:581 builtin/log.c:671
 #, c-format
 msgid "could not read object %s"
 msgstr "Konnte Objekt %s nicht lesen."
 
-#: builtin/log.c:699
+#: builtin/log.c:696
 #, c-format
 msgid "unknown type: %d"
 msgstr "Unbekannter Typ: %d"
 
-#: builtin/log.c:848
+#: builtin/log.c:841
 #, c-format
 msgid "%s: invalid cover from description mode"
 msgstr ""
 "%s: Ungültiger Modus für Erstellung des Deckblattes aus der Beschreibung"
 
-#: builtin/log.c:855
+#: builtin/log.c:848
 msgid "format.headers without value"
 msgstr "format.headers ohne Wert"
 
-#: builtin/log.c:984
+#: builtin/log.c:977
 #, c-format
 msgid "cannot open patch file %s"
 msgstr "Kann Patch-Datei %s nicht öffnen"
 
-#: builtin/log.c:1001
+#: builtin/log.c:994
 msgid "need exactly one range"
 msgstr "Brauche genau einen Commit-Bereich."
 
-#: builtin/log.c:1011
+#: builtin/log.c:1004
 msgid "not a range"
 msgstr "Kein Commit-Bereich."
 
-#: builtin/log.c:1175
+#: builtin/log.c:1168
 msgid "cover letter needs email format"
 msgstr "Anschreiben benötigt E-Mail-Format"
 
-#: builtin/log.c:1181
+#: builtin/log.c:1174
 msgid "failed to create cover-letter file"
 msgstr "Fehler beim Erstellen der Datei für das Anschreiben."
 
-#: builtin/log.c:1262
+#: builtin/log.c:1261
 #, c-format
 msgid "insane in-reply-to: %s"
 msgstr "ungültiges in-reply-to: %s"
 
-#: builtin/log.c:1289
+#: builtin/log.c:1288
 msgid "git format-patch [<options>] [<since> | <revision-range>]"
 msgstr "git format-patch [<Optionen>] [<seit> | <Commitbereich>]"
 
-#: builtin/log.c:1347
+#: builtin/log.c:1346
 msgid "two output directories?"
 msgstr "Zwei Ausgabeverzeichnisse?"
 
-#: builtin/log.c:1498 builtin/log.c:2318 builtin/log.c:2320 builtin/log.c:2332
+#: builtin/log.c:1497 builtin/log.c:2317 builtin/log.c:2319 builtin/log.c:2331
 #, c-format
 msgid "unknown commit %s"
 msgstr "Unbekannter Commit %s"
 
-#: builtin/log.c:1509 builtin/replace.c:58 builtin/replace.c:207
+#: builtin/log.c:1508 builtin/replace.c:58 builtin/replace.c:207
 #: builtin/replace.c:210
 #, c-format
 msgid "failed to resolve '%s' as a valid ref"
 msgstr "Konnte '%s' nicht als gültige Referenz auflösen."
 
-#: builtin/log.c:1518
+#: builtin/log.c:1517
 msgid "could not find exact merge base"
 msgstr "Konnte keine exakte Merge-Basis finden."
 
-#: builtin/log.c:1528
+#: builtin/log.c:1527
 msgid ""
 "failed to get upstream, if you want to record base commit automatically,\n"
 "please use git branch --set-upstream-to to track a remote branch.\n"
@@ -16692,291 +17004,291 @@ msgstr ""
 "'git branch --set-upstream-to', um einem Remote-Branch zu folgen.\n"
 "Oder geben Sie den Basis-Commit mit '--base=<Basis-Commit-Id>' manuell an."
 
-#: builtin/log.c:1551
+#: builtin/log.c:1550
 msgid "failed to find exact merge base"
 msgstr "Fehler beim Finden einer exakten Merge-Basis."
 
-#: builtin/log.c:1568
+#: builtin/log.c:1567
 msgid "base commit should be the ancestor of revision list"
 msgstr "Basis-Commit sollte der Vorgänger der Revisionsliste sein."
 
-#: builtin/log.c:1578
+#: builtin/log.c:1577
 msgid "base commit shouldn't be in revision list"
 msgstr "Basis-Commit sollte nicht in der Revisionsliste enthalten sein."
 
-#: builtin/log.c:1636
+#: builtin/log.c:1635
 msgid "cannot get patch id"
 msgstr "kann Patch-Id nicht lesen"
 
-#: builtin/log.c:1693
+#: builtin/log.c:1692
 msgid "failed to infer range-diff origin of current series"
 msgstr "Fehler beim Ableiten des range-diff Ursprungs der aktuellen Serie"
 
-#: builtin/log.c:1695
+#: builtin/log.c:1694
 #, c-format
 msgid "using '%s' as range-diff origin of current series"
 msgstr "nutze '%s' als range-diff Ursprung der aktuellen Serie"
 
-#: builtin/log.c:1739
+#: builtin/log.c:1738
 msgid "use [PATCH n/m] even with a single patch"
 msgstr "[PATCH n/m] auch mit einzelnem Patch verwenden"
 
-#: builtin/log.c:1742
+#: builtin/log.c:1741
 msgid "use [PATCH] even with multiple patches"
 msgstr "[PATCH] auch mit mehreren Patches verwenden"
 
-#: builtin/log.c:1746
+#: builtin/log.c:1745
 msgid "print patches to standard out"
 msgstr "Ausgabe der Patches in Standard-Ausgabe"
 
-#: builtin/log.c:1748
+#: builtin/log.c:1747
 msgid "generate a cover letter"
 msgstr "ein Deckblatt erzeugen"
 
-#: builtin/log.c:1750
+#: builtin/log.c:1749
 msgid "use simple number sequence for output file names"
 msgstr "einfache Nummernfolge für die Namen der Ausgabedateien verwenden"
 
-#: builtin/log.c:1751
+#: builtin/log.c:1750
 msgid "sfx"
 msgstr "Dateiendung"
 
-#: builtin/log.c:1752
+#: builtin/log.c:1751
 msgid "use <sfx> instead of '.patch'"
-msgstr "<Dateiendung> anstatt '.patch' verwenden"
+msgstr "<Dateiendung> statt '.patch' verwenden"
 
-#: builtin/log.c:1754
+#: builtin/log.c:1753
 msgid "start numbering patches at <n> instead of 1"
-msgstr "die Nummerierung der Patches bei <n> anstatt bei 1 beginnen"
+msgstr "die Nummerierung der Patches bei <n> statt bei 1 beginnen"
 
-#: builtin/log.c:1756
+#: builtin/log.c:1755
 msgid "mark the series as Nth re-roll"
 msgstr "die Serie als n-te Fassung kennzeichnen"
 
-#: builtin/log.c:1758
+#: builtin/log.c:1757
 msgid "max length of output filename"
 msgstr "maximale Länge des Dateinamens für die Ausgabe"
 
-#: builtin/log.c:1760
-msgid "Use [RFC PATCH] instead of [PATCH]"
-msgstr "[RFC PATCH] anstatt [PATCH] verwenden"
+#: builtin/log.c:1759
+msgid "use [RFC PATCH] instead of [PATCH]"
+msgstr "[RFC PATCH] statt [PATCH] verwenden"
 
-#: builtin/log.c:1763
+#: builtin/log.c:1762
 msgid "cover-from-description-mode"
 msgstr "Modus für Erstellung des Deckblattes aus der Beschreibung"
 
-#: builtin/log.c:1764
+#: builtin/log.c:1763
 msgid "generate parts of a cover letter based on a branch's description"
 msgstr ""
 "Erzeuge Teile des Deckblattes basierend auf der Beschreibung des Branches"
 
-#: builtin/log.c:1766
-msgid "Use [<prefix>] instead of [PATCH]"
-msgstr "Nutze [<Präfix>] statt [PATCH]"
+#: builtin/log.c:1765
+msgid "use [<prefix>] instead of [PATCH]"
+msgstr "nutze [<Präfix>] statt [PATCH]"
 
-#: builtin/log.c:1769
+#: builtin/log.c:1768
 msgid "store resulting files in <dir>"
 msgstr "erzeugte Dateien in <Verzeichnis> speichern"
 
-#: builtin/log.c:1772
+#: builtin/log.c:1771
 msgid "don't strip/add [PATCH]"
 msgstr "[PATCH] nicht entfernen/hinzufügen"
 
-#: builtin/log.c:1775
+#: builtin/log.c:1774
 msgid "don't output binary diffs"
 msgstr "keine binären Unterschiede ausgeben"
 
-#: builtin/log.c:1777
+#: builtin/log.c:1776
 msgid "output all-zero hash in From header"
 msgstr "Hash mit Nullen in \"From\"-Header ausgeben"
 
-#: builtin/log.c:1779
+#: builtin/log.c:1778
 msgid "don't include a patch matching a commit upstream"
 msgstr ""
 "keine Patches einschließen, die einem Commit im Upstream-Branch entsprechen"
 
-#: builtin/log.c:1781
+#: builtin/log.c:1780
 msgid "show patch format instead of default (patch + stat)"
 msgstr "Patchformat anstatt des Standards anzeigen (Patch + Zusammenfassung)"
 
-#: builtin/log.c:1783
+#: builtin/log.c:1782
 msgid "Messaging"
 msgstr "E-Mail-Einstellungen"
 
-#: builtin/log.c:1784
+#: builtin/log.c:1783
 msgid "header"
 msgstr "Header"
 
-#: builtin/log.c:1785
+#: builtin/log.c:1784
 msgid "add email header"
 msgstr "E-Mail-Header hinzufügen"
 
-#: builtin/log.c:1786 builtin/log.c:1787
+#: builtin/log.c:1785 builtin/log.c:1786
 msgid "email"
 msgstr "E-Mail"
 
-#: builtin/log.c:1786
+#: builtin/log.c:1785
 msgid "add To: header"
 msgstr "\"To:\"-Header hinzufügen"
 
-#: builtin/log.c:1787
+#: builtin/log.c:1786
 msgid "add Cc: header"
 msgstr "\"Cc:\"-Header hinzufügen"
 
-#: builtin/log.c:1788
+#: builtin/log.c:1787
 msgid "ident"
 msgstr "Ident"
 
-#: builtin/log.c:1789
+#: builtin/log.c:1788
 msgid "set From address to <ident> (or committer ident if absent)"
 msgstr ""
 "\"From\"-Adresse auf <Ident> setzen (oder Ident des Commit-Erstellers, wenn "
 "fehlend)"
 
-#: builtin/log.c:1791
+#: builtin/log.c:1790
 msgid "message-id"
 msgstr "message-id"
 
-#: builtin/log.c:1792
+#: builtin/log.c:1791
 msgid "make first mail a reply to <message-id>"
 msgstr "aus erster E-Mail eine Antwort zu <message-id> machen"
 
-#: builtin/log.c:1793 builtin/log.c:1796
+#: builtin/log.c:1792 builtin/log.c:1795
 msgid "boundary"
 msgstr "Grenze"
 
-#: builtin/log.c:1794
+#: builtin/log.c:1793
 msgid "attach the patch"
 msgstr "den Patch anhängen"
 
-#: builtin/log.c:1797
+#: builtin/log.c:1796
 msgid "inline the patch"
 msgstr "den Patch direkt in die Nachricht einfügen"
 
-#: builtin/log.c:1801
+#: builtin/log.c:1800
 msgid "enable message threading, styles: shallow, deep"
 msgstr "Nachrichtenverkettung aktivieren, Stile: shallow, deep"
 
-#: builtin/log.c:1803
+#: builtin/log.c:1802
 msgid "signature"
 msgstr "Signatur"
 
-#: builtin/log.c:1804
+#: builtin/log.c:1803
 msgid "add a signature"
 msgstr "eine Signatur hinzufügen"
 
-#: builtin/log.c:1805
+#: builtin/log.c:1804
 msgid "base-commit"
 msgstr "Basis-Commit"
 
-#: builtin/log.c:1806
+#: builtin/log.c:1805
 msgid "add prerequisite tree info to the patch series"
 msgstr "erforderliche Revisions-Informationen der Patch-Serie hinzufügen"
 
-#: builtin/log.c:1809
+#: builtin/log.c:1808
 msgid "add a signature from a file"
 msgstr "eine Signatur aus einer Datei hinzufügen"
 
-#: builtin/log.c:1810
+#: builtin/log.c:1809
 msgid "don't print the patch filenames"
 msgstr "keine Dateinamen der Patches anzeigen"
 
-#: builtin/log.c:1812
+#: builtin/log.c:1811
 msgid "show progress while generating patches"
 msgstr "Forschrittsanzeige während der Erzeugung der Patches"
 
-#: builtin/log.c:1814
+#: builtin/log.c:1813
 msgid "show changes against <rev> in cover letter or single patch"
 msgstr ""
 "Änderungen gegenüber <Commit> im Deckblatt oder einzelnem Patch anzeigen"
 
-#: builtin/log.c:1817
+#: builtin/log.c:1816
 msgid "show changes against <refspec> in cover letter or single patch"
 msgstr ""
 "Änderungen gegenüber <Refspec> im Deckblatt oder einzelnem Patch anzeigen"
 
-#: builtin/log.c:1819
+#: builtin/log.c:1818
 msgid "percentage by which creation is weighted"
 msgstr "Prozentsatz mit welchem Erzeugung gewichtet wird"
 
-#: builtin/log.c:1905
+#: builtin/log.c:1904
 #, c-format
 msgid "invalid ident line: %s"
 msgstr "Ungültige Identifikationszeile: %s"
 
-#: builtin/log.c:1920
+#: builtin/log.c:1919
 msgid "-n and -k are mutually exclusive"
 msgstr "-n und -k schließen sich gegenseitig aus"
 
-#: builtin/log.c:1922
+#: builtin/log.c:1921
 msgid "--subject-prefix/--rfc and -k are mutually exclusive"
 msgstr "--subject-prefix/--rfc und -k schließen sich gegenseitig aus"
 
-#: builtin/log.c:1930
+#: builtin/log.c:1929
 msgid "--name-only does not make sense"
-msgstr "die Option --name-only kann nicht verwendet werden"
+msgstr "--name-only kann nicht verwendet werden"
 
-#: builtin/log.c:1932
+#: builtin/log.c:1931
 msgid "--name-status does not make sense"
-msgstr "die Option --name-status kann nicht verwendet werden"
+msgstr "--name-status kann nicht verwendet werden"
 
-#: builtin/log.c:1934
+#: builtin/log.c:1933
 msgid "--check does not make sense"
-msgstr "die Option --check kann nicht verwendet werden"
+msgstr "--check kann nicht verwendet werden"
 
-#: builtin/log.c:1956
+#: builtin/log.c:1955
 msgid "--stdout, --output, and --output-directory are mutually exclusive"
 msgstr ""
 "--stdout, --output und --output-directory schließen sich gegenseitig aus"
 
-#: builtin/log.c:2079
+#: builtin/log.c:2078
 msgid "--interdiff requires --cover-letter or single patch"
 msgstr "--interdiff erfordert --cover-letter oder einzelnen Patch"
 
-#: builtin/log.c:2083
+#: builtin/log.c:2082
 msgid "Interdiff:"
 msgstr "Interdiff:"
 
-#: builtin/log.c:2084
+#: builtin/log.c:2083
 #, c-format
 msgid "Interdiff against v%d:"
 msgstr "Interdiff gegen v%d:"
 
-#: builtin/log.c:2090
+#: builtin/log.c:2089
 msgid "--creation-factor requires --range-diff"
 msgstr "--creation-factor erfordert --range-diff"
 
-#: builtin/log.c:2094
+#: builtin/log.c:2093
 msgid "--range-diff requires --cover-letter or single patch"
 msgstr "--range-diff erfordert --cover-letter oder einzelnen Patch."
 
-#: builtin/log.c:2102
+#: builtin/log.c:2101
 msgid "Range-diff:"
 msgstr "Range-Diff:"
 
-#: builtin/log.c:2103
+#: builtin/log.c:2102
 #, c-format
 msgid "Range-diff against v%d:"
 msgstr "Range-Diff gegen v%d:"
 
-#: builtin/log.c:2114
+#: builtin/log.c:2113
 #, c-format
 msgid "unable to read signature file '%s'"
 msgstr "Konnte Signatur-Datei '%s' nicht lesen"
 
-#: builtin/log.c:2150
+#: builtin/log.c:2149
 msgid "Generating patches"
 msgstr "Erzeuge Patches"
 
-#: builtin/log.c:2194
+#: builtin/log.c:2193
 msgid "failed to create output files"
 msgstr "Fehler beim Erstellen der Ausgabedateien."
 
-#: builtin/log.c:2253
+#: builtin/log.c:2252
 msgid "git cherry [-v] [<upstream> [<head> [<limit>]]]"
 msgstr "git cherry [-v] [<Upstream> [<Branch> [<Limit>]]]"
 
-#: builtin/log.c:2307
+#: builtin/log.c:2306
 #, c-format
 msgid ""
 "Could not find a tracked remote branch, please specify <upstream> manually.\n"
@@ -16984,115 +17296,119 @@ msgstr ""
 "Konnte gefolgten Remote-Branch nicht finden, bitte geben Sie <Upstream> "
 "manuell an.\n"
 
-#: builtin/ls-files.c:471
+#: builtin/ls-files.c:486
 msgid "git ls-files [<options>] [<file>...]"
 msgstr "git ls-files [<Optionen>] [<Datei>...]"
 
-#: builtin/ls-files.c:527
+#: builtin/ls-files.c:542
 msgid "identify the file status with tags"
 msgstr "den Dateistatus mit Tags anzeigen"
 
-#: builtin/ls-files.c:529
+#: builtin/ls-files.c:544
 msgid "use lowercase letters for 'assume unchanged' files"
 msgstr ""
 "Kleinbuchstaben für Dateien mit 'assume unchanged' Markierung verwenden"
 
-#: builtin/ls-files.c:531
+#: builtin/ls-files.c:546
 msgid "use lowercase letters for 'fsmonitor clean' files"
 msgstr "Kleinbuchstaben für 'fsmonitor clean' Dateien verwenden"
 
-#: builtin/ls-files.c:533
+#: builtin/ls-files.c:548
 msgid "show cached files in the output (default)"
 msgstr "zwischengespeicherte Dateien in der Ausgabe anzeigen (Standard)"
 
-#: builtin/ls-files.c:535
+#: builtin/ls-files.c:550
 msgid "show deleted files in the output"
 msgstr "entfernte Dateien in der Ausgabe anzeigen"
 
-#: builtin/ls-files.c:537
+#: builtin/ls-files.c:552
 msgid "show modified files in the output"
 msgstr "geänderte Dateien in der Ausgabe anzeigen"
 
-#: builtin/ls-files.c:539
+#: builtin/ls-files.c:554
 msgid "show other files in the output"
 msgstr "sonstige Dateien in der Ausgabe anzeigen"
 
-#: builtin/ls-files.c:541
+#: builtin/ls-files.c:556
 msgid "show ignored files in the output"
 msgstr "ignorierte Dateien in der Ausgabe anzeigen"
 
-#: builtin/ls-files.c:544
+#: builtin/ls-files.c:559
 msgid "show staged contents' object name in the output"
 msgstr ""
 "Objektnamen von Inhalten, die zum Commit vorgemerkt sind, in der Ausgabe "
 "anzeigen"
 
-#: builtin/ls-files.c:546
+#: builtin/ls-files.c:561
 msgid "show files on the filesystem that need to be removed"
 msgstr "Dateien im Dateisystem, die gelöscht werden müssen, anzeigen"
 
-#: builtin/ls-files.c:548
+#: builtin/ls-files.c:563
 msgid "show 'other' directories' names only"
 msgstr "nur Namen von 'sonstigen' Verzeichnissen anzeigen"
 
-#: builtin/ls-files.c:550
+#: builtin/ls-files.c:565
 msgid "show line endings of files"
 msgstr "Zeilenenden von Dateien anzeigen"
 
-#: builtin/ls-files.c:552
+#: builtin/ls-files.c:567
 msgid "don't show empty directories"
 msgstr "keine leeren Verzeichnisse anzeigen"
 
-#: builtin/ls-files.c:555
+#: builtin/ls-files.c:570
 msgid "show unmerged files in the output"
 msgstr "nicht zusammengeführte Dateien in der Ausgabe anzeigen"
 
-#: builtin/ls-files.c:557
+#: builtin/ls-files.c:572
 msgid "show resolve-undo information"
 msgstr "'resolve-undo' Informationen anzeigen"
 
-#: builtin/ls-files.c:559
+#: builtin/ls-files.c:574
 msgid "skip files matching pattern"
 msgstr "Dateien auslassen, die einem Muster entsprechen"
 
-#: builtin/ls-files.c:562
+#: builtin/ls-files.c:577
 msgid "exclude patterns are read from <file>"
 msgstr "Muster, gelesen von <Datei>, ausschließen"
 
-#: builtin/ls-files.c:565
+#: builtin/ls-files.c:580
 msgid "read additional per-directory exclude patterns in <file>"
 msgstr "zusätzliche pro-Verzeichnis Auschlussmuster aus <Datei> auslesen"
 
-#: builtin/ls-files.c:567
+#: builtin/ls-files.c:582
 msgid "add the standard git exclusions"
 msgstr "die standardmäßigen Git-Ausschlüsse hinzufügen"
 
-#: builtin/ls-files.c:571
+#: builtin/ls-files.c:586
 msgid "make the output relative to the project top directory"
 msgstr "Ausgabe relativ zum Projektverzeichnis"
 
-#: builtin/ls-files.c:574
+#: builtin/ls-files.c:589
 msgid "recurse through submodules"
 msgstr "Rekursion in Submodulen durchführen"
 
-#: builtin/ls-files.c:576
+#: builtin/ls-files.c:591
 msgid "if any <file> is not in the index, treat this as an error"
 msgstr "als Fehler behandeln, wenn sich eine <Datei> nicht im Index befindet"
 
-#: builtin/ls-files.c:577
+#: builtin/ls-files.c:592
 msgid "tree-ish"
 msgstr "Commit-Referenz"
 
-#: builtin/ls-files.c:578
+#: builtin/ls-files.c:593
 msgid "pretend that paths removed since <tree-ish> are still present"
 msgstr ""
 "vorgeben, dass Pfade, die seit <Commit-Referenz> gelöscht wurden, immer noch "
 "vorhanden sind"
 
-#: builtin/ls-files.c:580
+#: builtin/ls-files.c:595
 msgid "show debugging data"
 msgstr "Ausgaben zur Fehlersuche anzeigen"
 
+#: builtin/ls-files.c:597
+msgid "suppress duplicate entries"
+msgstr "doppelte Einträge unterdrücken"
+
 #: builtin/ls-remote.c:9
 msgid ""
 "git ls-remote [--heads] [--tags] [--refs] [--upload-pack=<exec>]\n"
@@ -17103,41 +17419,41 @@ msgstr ""
 "                     [-q | --quiet] [--exit-code] [--get-url]\n"
 "                     [--symref] [<Repository> [<Referenzen>...]]"
 
-#: builtin/ls-remote.c:59
+#: builtin/ls-remote.c:60
 msgid "do not print remote URL"
 msgstr "URL des Remote-Repositories nicht ausgeben"
 
-#: builtin/ls-remote.c:60 builtin/ls-remote.c:62 builtin/rebase.c:1398
+#: builtin/ls-remote.c:61 builtin/ls-remote.c:63 builtin/rebase.c:1404
 msgid "exec"
 msgstr "Programm"
 
-#: builtin/ls-remote.c:61 builtin/ls-remote.c:63
+#: builtin/ls-remote.c:62 builtin/ls-remote.c:64
 msgid "path of git-upload-pack on the remote host"
 msgstr "Pfad zu \"git-upload-pack\" auf der Gegenseite"
 
-#: builtin/ls-remote.c:65
+#: builtin/ls-remote.c:66
 msgid "limit to tags"
 msgstr "auf Tags einschränken"
 
-#: builtin/ls-remote.c:66
+#: builtin/ls-remote.c:67
 msgid "limit to heads"
 msgstr "auf Branches einschränken"
 
-#: builtin/ls-remote.c:67
+#: builtin/ls-remote.c:68
 msgid "do not show peeled tags"
 msgstr "keine Tags anzeigen, die andere Tags enthalten"
 
-#: builtin/ls-remote.c:69
+#: builtin/ls-remote.c:70
 msgid "take url.<base>.insteadOf into account"
 msgstr "url.<Basis>.insteadOf berücksichtigen"
 
-#: builtin/ls-remote.c:72
+#: builtin/ls-remote.c:73
 msgid "exit with exit code 2 if no matching refs are found"
 msgstr ""
 "mit Exit-Code 2 beenden, wenn keine übereinstimmenden Referenzen\n"
 "gefunden wurden"
 
-#: builtin/ls-remote.c:75
+#: builtin/ls-remote.c:76
 msgid "show underlying ref in addition to the object pointed by it"
 msgstr "zusätzlich zum Objekt die darauf verweisenden Referenzen anzeigen"
 
@@ -17295,194 +17611,194 @@ msgstr "Konnte Referenz '%s' nicht auflösen"
 msgid "Merging %s with %s\n"
 msgstr "Führe %s mit %s zusammen\n"
 
-#: builtin/merge.c:57
+#: builtin/merge.c:58
 msgid "git merge [<options>] [<commit>...]"
 msgstr "git merge [<Optionen>] [<Commit>...]"
 
-#: builtin/merge.c:58
+#: builtin/merge.c:59
 msgid "git merge --abort"
 msgstr "git merge --abort"
 
-#: builtin/merge.c:59
+#: builtin/merge.c:60
 msgid "git merge --continue"
 msgstr "git merge --continue"
 
-#: builtin/merge.c:122
+#: builtin/merge.c:123
 msgid "switch `m' requires a value"
 msgstr "Schalter 'm' erfordert einen Wert."
 
-#: builtin/merge.c:145
+#: builtin/merge.c:146
 #, c-format
 msgid "option `%s' requires a value"
 msgstr "Option `%s' erfordert einen Wert."
 
-#: builtin/merge.c:198
+#: builtin/merge.c:199
 #, c-format
 msgid "Could not find merge strategy '%s'.\n"
 msgstr "Konnte Merge-Strategie '%s' nicht finden.\n"
 
-#: builtin/merge.c:199
+#: builtin/merge.c:200
 #, c-format
 msgid "Available strategies are:"
 msgstr "Verfügbare Strategien sind:"
 
-#: builtin/merge.c:204
+#: builtin/merge.c:205
 #, c-format
 msgid "Available custom strategies are:"
 msgstr "Verfügbare benutzerdefinierte Strategien sind:"
 
-#: builtin/merge.c:255 builtin/pull.c:133
+#: builtin/merge.c:256 builtin/pull.c:133
 msgid "do not show a diffstat at the end of the merge"
 msgstr "keine Zusammenfassung der Unterschiede am Schluss des Merges anzeigen"
 
-#: builtin/merge.c:258 builtin/pull.c:136
+#: builtin/merge.c:259 builtin/pull.c:136
 msgid "show a diffstat at the end of the merge"
 msgstr "eine Zusammenfassung der Unterschiede am Schluss des Merges anzeigen"
 
-#: builtin/merge.c:259 builtin/pull.c:139
+#: builtin/merge.c:260 builtin/pull.c:139
 msgid "(synonym to --stat)"
 msgstr "(Synonym für --stat)"
 
-#: builtin/merge.c:261 builtin/pull.c:142
+#: builtin/merge.c:262 builtin/pull.c:142
 msgid "add (at most <n>) entries from shortlog to merge commit message"
 msgstr ""
 "(höchstens <n>) Einträge von \"shortlog\" zur Beschreibung des Merge-Commits "
 "hinzufügen"
 
-#: builtin/merge.c:264 builtin/pull.c:148
+#: builtin/merge.c:265 builtin/pull.c:148
 msgid "create a single commit instead of doing a merge"
-msgstr "einen einzelnen Commit anstatt eines Merges erzeugen"
+msgstr "einen einzelnen Commit erzeugen statt einen Merge durchzuführen"
 
-#: builtin/merge.c:266 builtin/pull.c:151
+#: builtin/merge.c:267 builtin/pull.c:151
 msgid "perform a commit if the merge succeeds (default)"
 msgstr "einen Commit durchführen, wenn der Merge erfolgreich war (Standard)"
 
-#: builtin/merge.c:268 builtin/pull.c:154
+#: builtin/merge.c:269 builtin/pull.c:154
 msgid "edit message before committing"
 msgstr "Bearbeitung der Beschreibung vor dem Commit"
 
-#: builtin/merge.c:270
+#: builtin/merge.c:271
 msgid "allow fast-forward (default)"
 msgstr "Vorspulen erlauben (Standard)"
 
-#: builtin/merge.c:272 builtin/pull.c:161
+#: builtin/merge.c:273 builtin/pull.c:161
 msgid "abort if fast-forward is not possible"
 msgstr "abbrechen, wenn kein Vorspulen möglich ist"
 
-#: builtin/merge.c:276 builtin/pull.c:164
+#: builtin/merge.c:277 builtin/pull.c:164
 msgid "verify that the named commit has a valid GPG signature"
 msgstr "den genannten Commit auf eine gültige GPG-Signatur überprüfen"
 
-#: builtin/merge.c:277 builtin/notes.c:787 builtin/pull.c:168
-#: builtin/rebase.c:539 builtin/rebase.c:1412 builtin/revert.c:114
+#: builtin/merge.c:278 builtin/notes.c:787 builtin/pull.c:168
+#: builtin/rebase.c:541 builtin/rebase.c:1418 builtin/revert.c:114
 msgid "strategy"
 msgstr "Strategie"
 
-#: builtin/merge.c:278 builtin/pull.c:169
+#: builtin/merge.c:279 builtin/pull.c:169
 msgid "merge strategy to use"
 msgstr "zu verwendende Merge-Strategie"
 
-#: builtin/merge.c:279 builtin/pull.c:172
+#: builtin/merge.c:280 builtin/pull.c:172
 msgid "option=value"
 msgstr "Option=Wert"
 
-#: builtin/merge.c:280 builtin/pull.c:173
+#: builtin/merge.c:281 builtin/pull.c:173
 msgid "option for selected merge strategy"
 msgstr "Option für ausgewählte Merge-Strategie"
 
-#: builtin/merge.c:282
+#: builtin/merge.c:283
 msgid "merge commit message (for a non-fast-forward merge)"
 msgstr ""
 "Commit-Beschreibung zusammenführen (für einen Merge, der kein Vorspulen war)"
 
-#: builtin/merge.c:289
+#: builtin/merge.c:290
 msgid "abort the current in-progress merge"
 msgstr "den sich im Gange befindlichen Merge abbrechen"
 
-#: builtin/merge.c:291
+#: builtin/merge.c:292
 msgid "--abort but leave index and working tree alone"
 msgstr "--abort, aber Index und Arbeitsverzeichnis unverändert lassen"
 
-#: builtin/merge.c:293
+#: builtin/merge.c:294
 msgid "continue the current in-progress merge"
 msgstr "den sich im Gange befindlichen Merge fortsetzen"
 
-#: builtin/merge.c:295 builtin/pull.c:180
+#: builtin/merge.c:296 builtin/pull.c:180
 msgid "allow merging unrelated histories"
 msgstr "erlaube das Zusammenführen von nicht zusammenhängenden Historien"
 
-#: builtin/merge.c:302
+#: builtin/merge.c:303
 msgid "bypass pre-merge-commit and commit-msg hooks"
 msgstr "Hooks pre-merge-commit und commit-msg umgehen"
 
-#: builtin/merge.c:319
+#: builtin/merge.c:320
 msgid "could not run stash."
 msgstr "Konnte \"stash\" nicht ausführen."
 
-#: builtin/merge.c:324
+#: builtin/merge.c:325
 msgid "stash failed"
 msgstr "\"stash\" fehlgeschlagen"
 
-#: builtin/merge.c:329
+#: builtin/merge.c:330
 #, c-format
 msgid "not a valid object: %s"
 msgstr "kein gültiges Objekt: %s"
 
-#: builtin/merge.c:351 builtin/merge.c:368
+#: builtin/merge.c:352 builtin/merge.c:369
 msgid "read-tree failed"
 msgstr "read-tree fehlgeschlagen"
 
-#: builtin/merge.c:398
+#: builtin/merge.c:399
 msgid " (nothing to squash)"
 msgstr " (nichts zu quetschen)"
 
-#: builtin/merge.c:409
+#: builtin/merge.c:410
 #, c-format
 msgid "Squash commit -- not updating HEAD\n"
 msgstr "Quetsche Commit -- HEAD wird nicht aktualisiert\n"
 
-#: builtin/merge.c:459
+#: builtin/merge.c:460
 #, c-format
 msgid "No merge message -- not updating HEAD\n"
 msgstr "Keine Merge-Commit-Beschreibung -- HEAD wird nicht aktualisiert\n"
 
-#: builtin/merge.c:510
+#: builtin/merge.c:511
 #, c-format
 msgid "'%s' does not point to a commit"
 msgstr "'%s' zeigt auf keinen Commit"
 
-#: builtin/merge.c:597
+#: builtin/merge.c:598
 #, c-format
 msgid "Bad branch.%s.mergeoptions string: %s"
 msgstr "Ungültiger branch.%s.mergeoptions String: %s"
 
-#: builtin/merge.c:723
+#: builtin/merge.c:724
 msgid "Not handling anything other than two heads merge."
 msgstr "Es wird nur der Merge von zwei Branches behandelt."
 
-#: builtin/merge.c:736
+#: builtin/merge.c:737
 #, c-format
 msgid "Unknown option for merge-recursive: -X%s"
 msgstr "Unbekannte Option für merge-recursive: -X%s"
 
-#: builtin/merge.c:755 t/helper/test-fast-rebase.c:209
+#: builtin/merge.c:756 t/helper/test-fast-rebase.c:209
 #, c-format
 msgid "unable to write %s"
 msgstr "konnte %s nicht schreiben"
 
-#: builtin/merge.c:807
+#: builtin/merge.c:808
 #, c-format
 msgid "Could not read from '%s'"
 msgstr "konnte nicht von '%s' lesen"
 
-#: builtin/merge.c:816
+#: builtin/merge.c:817
 #, c-format
 msgid "Not committing merge; use 'git commit' to complete the merge.\n"
 msgstr ""
 "Merge wurde nicht committet; benutzen Sie 'git commit', um den Merge "
 "abzuschließen.\n"
 
-#: builtin/merge.c:822
+#: builtin/merge.c:823
 msgid ""
 "Please enter a commit message to explain why this merge is necessary,\n"
 "especially if it merges an updated upstream into a topic branch.\n"
@@ -17493,11 +17809,11 @@ msgstr ""
 "Upstream-Branch mit einem Thema-Branch zusammenführt.\n"
 "\n"
 
-#: builtin/merge.c:827
+#: builtin/merge.c:828
 msgid "An empty message aborts the commit.\n"
 msgstr "Eine leere Commit-Beschreibung bricht den Commit ab.\n"
 
-#: builtin/merge.c:830
+#: builtin/merge.c:831
 #, c-format
 msgid ""
 "Lines starting with '%c' will be ignored, and an empty message aborts\n"
@@ -17506,75 +17822,75 @@ msgstr ""
 "Zeilen, die mit '%c' beginnen, werden ignoriert,\n"
 "und eine leere Beschreibung bricht den Commit ab.\n"
 
-#: builtin/merge.c:883
+#: builtin/merge.c:884
 msgid "Empty commit message."
 msgstr "Leere Commit-Beschreibung"
 
-#: builtin/merge.c:898
+#: builtin/merge.c:899
 #, c-format
 msgid "Wonderful.\n"
 msgstr "Wunderbar.\n"
 
-#: builtin/merge.c:959
+#: builtin/merge.c:960
 #, c-format
 msgid "Automatic merge failed; fix conflicts and then commit the result.\n"
 msgstr ""
 "Automatischer Merge fehlgeschlagen; beheben Sie die Konflikte und committen "
 "Sie dann das Ergebnis.\n"
 
-#: builtin/merge.c:998
+#: builtin/merge.c:999
 msgid "No current branch."
 msgstr "Sie befinden sich auf keinem Branch."
 
-#: builtin/merge.c:1000
+#: builtin/merge.c:1001
 msgid "No remote for the current branch."
 msgstr "Kein Remote-Repository für den aktuellen Branch."
 
-#: builtin/merge.c:1002
+#: builtin/merge.c:1003
 msgid "No default upstream defined for the current branch."
 msgstr ""
 "Es ist kein Standard-Upstream-Branch für den aktuellen Branch definiert."
 
-#: builtin/merge.c:1007
+#: builtin/merge.c:1008
 #, c-format
 msgid "No remote-tracking branch for %s from %s"
 msgstr "Kein Remote-Tracking-Branch für %s von %s"
 
-#: builtin/merge.c:1064
+#: builtin/merge.c:1065
 #, c-format
 msgid "Bad value '%s' in environment '%s'"
 msgstr "Fehlerhafter Wert '%s' in Umgebungsvariable '%s'"
 
-#: builtin/merge.c:1167
+#: builtin/merge.c:1168
 #, c-format
 msgid "not something we can merge in %s: %s"
 msgstr "nichts was wir in %s zusammenführen können: %s"
 
-#: builtin/merge.c:1201
+#: builtin/merge.c:1202
 msgid "not something we can merge"
 msgstr "nichts was wir zusammenführen können"
 
-#: builtin/merge.c:1311
+#: builtin/merge.c:1312
 msgid "--abort expects no arguments"
 msgstr "--abort akzeptiert keine Argumente"
 
-#: builtin/merge.c:1315
+#: builtin/merge.c:1316
 msgid "There is no merge to abort (MERGE_HEAD missing)."
 msgstr "Es gibt keinen Merge abzubrechen (MERGE_HEAD fehlt)"
 
-#: builtin/merge.c:1333
+#: builtin/merge.c:1334
 msgid "--quit expects no arguments"
 msgstr "--quit erwartet keine Argumente"
 
-#: builtin/merge.c:1346
+#: builtin/merge.c:1347
 msgid "--continue expects no arguments"
 msgstr "--continue erwartet keine Argumente"
 
-#: builtin/merge.c:1350
+#: builtin/merge.c:1351
 msgid "There is no merge in progress (MERGE_HEAD missing)."
 msgstr "Es ist kein Merge im Gange (MERGE_HEAD fehlt)."
 
-#: builtin/merge.c:1366
+#: builtin/merge.c:1367
 msgid ""
 "You have not concluded your merge (MERGE_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -17582,7 +17898,7 @@ msgstr ""
 "Sie haben Ihren Merge nicht abgeschlossen (MERGE_HEAD existiert).\n"
 "Bitte committen Sie Ihre Änderungen, bevor Sie den Merge ausführen."
 
-#: builtin/merge.c:1373
+#: builtin/merge.c:1374
 msgid ""
 "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -17590,105 +17906,147 @@ msgstr ""
 "Sie haben \"cherry-pick\" nicht abgeschlossen (CHERRY_PICK_HEAD existiert).\n"
 "Bitte committen Sie Ihre Änderungen, bevor Sie den Merge ausführen."
 
-#: builtin/merge.c:1376
+#: builtin/merge.c:1377
 msgid "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists)."
 msgstr ""
 "Sie haben \"cherry-pick\" nicht abgeschlossen (CHERRY_PICK_HEAD existiert)."
 
-#: builtin/merge.c:1390
+#: builtin/merge.c:1391
 msgid "You cannot combine --squash with --no-ff."
 msgstr "Sie können --squash nicht mit --no-ff kombinieren."
 
-#: builtin/merge.c:1392
+#: builtin/merge.c:1393
 msgid "You cannot combine --squash with --commit."
 msgstr "Sie können --squash nicht mit --commit kombinieren."
 
-#: builtin/merge.c:1408
+#: builtin/merge.c:1409
 msgid "No commit specified and merge.defaultToUpstream not set."
 msgstr "Kein Commit angegeben und merge.defaultToUpstream ist nicht gesetzt."
 
-#: builtin/merge.c:1425
+#: builtin/merge.c:1426
 msgid "Squash commit into empty head not supported yet"
 msgstr ""
 "Bin auf einem Commit, der noch geboren wird; kann \"squash\" nicht ausführen."
 
-#: builtin/merge.c:1427
+#: builtin/merge.c:1428
 msgid "Non-fast-forward commit does not make sense into an empty head"
 msgstr ""
 "Nicht vorzuspulender Commit kann nicht in einem leeren Branch verwendet "
 "werden."
 
-#: builtin/merge.c:1432
+#: builtin/merge.c:1433
 #, c-format
 msgid "%s - not something we can merge"
 msgstr "%s - nichts was wir zusammenführen können"
 
-#: builtin/merge.c:1434
+#: builtin/merge.c:1435
 msgid "Can merge only exactly one commit into empty head"
 msgstr "Kann nur exakt einen Commit in einem leeren Branch zusammenführen."
 
-#: builtin/merge.c:1515
+#: builtin/merge.c:1516
 msgid "refusing to merge unrelated histories"
 msgstr "Verweigere den Merge von nicht zusammenhängenden Historien."
 
-#: builtin/merge.c:1524
+#: builtin/merge.c:1525
 msgid "Already up to date."
 msgstr "Bereits aktuell."
 
-#: builtin/merge.c:1534
+#: builtin/merge.c:1535
 #, c-format
 msgid "Updating %s..%s\n"
 msgstr "Aktualisiere %s..%s\n"
 
-#: builtin/merge.c:1580
+#: builtin/merge.c:1581
 #, c-format
 msgid "Trying really trivial in-index merge...\n"
 msgstr "Probiere wirklich trivialen \"in-index\"-Merge ...\n"
 
-#: builtin/merge.c:1587
+#: builtin/merge.c:1588
 #, c-format
 msgid "Nope.\n"
 msgstr "Nein.\n"
 
-#: builtin/merge.c:1612
+#: builtin/merge.c:1613
 msgid "Already up to date. Yeeah!"
 msgstr "Bereits aktuell."
 
-#: builtin/merge.c:1618
+#: builtin/merge.c:1619
 msgid "Not possible to fast-forward, aborting."
 msgstr "Vorspulen nicht möglich, breche ab."
 
-#: builtin/merge.c:1646 builtin/merge.c:1711
+#: builtin/merge.c:1647 builtin/merge.c:1712
 #, c-format
 msgid "Rewinding the tree to pristine...\n"
 msgstr "Rücklauf des Verzeichnisses bis zum Ursprung ...\n"
 
-#: builtin/merge.c:1650
+#: builtin/merge.c:1651
 #, c-format
 msgid "Trying merge strategy %s...\n"
 msgstr "Probiere Merge-Strategie %s ...\n"
 
-#: builtin/merge.c:1702
+#: builtin/merge.c:1703
 #, c-format
 msgid "No merge strategy handled the merge.\n"
 msgstr "Keine Merge-Strategie behandelt diesen Merge.\n"
 
-#: builtin/merge.c:1704
+#: builtin/merge.c:1705
 #, c-format
 msgid "Merge with strategy %s failed.\n"
 msgstr "Merge mit Strategie %s fehlgeschlagen.\n"
 
-#: builtin/merge.c:1713
+#: builtin/merge.c:1714
 #, c-format
 msgid "Using the %s to prepare resolving by hand.\n"
 msgstr "Benutzen Sie \"%s\", um die Auflösung per Hand vorzubereiten.\n"
 
-#: builtin/merge.c:1727
+#: builtin/merge.c:1728
 #, c-format
 msgid "Automatic merge went well; stopped before committing as requested\n"
 msgstr ""
 "Automatischer Merge abgeschlossen; halte, wie gewünscht, vor dem Commit an\n"
 
+#: builtin/mktag.c:10
+msgid "git mktag"
+msgstr "git mktag"
+
+#: builtin/mktag.c:30
+#, c-format
+msgid "warning: tag input does not pass fsck: %s"
+msgstr "Warnung: Tag-Eingabe ungültig für fsck: %s"
+
+#: builtin/mktag.c:41
+#, c-format
+msgid "error: tag input does not pass fsck: %s"
+msgstr "Fehler: Tag-Eingabe ungültig für fsck: %s"
+
+#: builtin/mktag.c:44
+#, c-format
+msgid "%d (FSCK_IGNORE?) should never trigger this callback"
+msgstr "%d (FSCK_IGNORE?) sollte diesen Aufruf niemals auslösen"
+
+#: builtin/mktag.c:59
+#, c-format
+msgid "could not read tagged object '%s'"
+msgstr "konnte getaggtes Objekt '%s' nicht lesen"
+
+#: builtin/mktag.c:62
+#, c-format
+msgid "object '%s' tagged as '%s', but is a '%s' type"
+msgstr "Objekt '%s' als '%s' getaggt, aber ist ein '%s' Typ"
+
+#: builtin/mktag.c:99
+msgid "tag on stdin did not pass our strict fsck check"
+msgstr ""
+"Tag von der Standardeingabe für unsere strenge Überprüfung bei fsck ungültig"
+
+#: builtin/mktag.c:102
+msgid "tag on stdin did not refer to a valid object"
+msgstr "Tag von der Standard-Eingabe verweiste nicht auf gültiges Objekt"
+
+#: builtin/mktag.c:105 builtin/tag.c:232
+msgid "unable to write tag file"
+msgstr "konnte Tag-Datei nicht schreiben"
+
 #: builtin/mktree.c:66
 msgid "git mktree [-z] [--missing] [--batch]"
 msgstr "git mktree [-z] [--missing] [--batch]"
@@ -17726,7 +18084,10 @@ msgstr ""
 "Während des Umpackens, sammle Paket-Dateien von geringerer Größe in "
 "einenStapel, welcher größer ist als diese Größe"
 
-#: builtin/multi-pack-index.c:50 builtin/prune-packed.c:25
+#: builtin/multi-pack-index.c:50 builtin/notes.c:376 builtin/notes.c:431
+#: builtin/notes.c:509 builtin/notes.c:521 builtin/notes.c:598
+#: builtin/notes.c:665 builtin/notes.c:815 builtin/notes.c:963
+#: builtin/notes.c:985 builtin/prune-packed.c:25 builtin/tag.c:575
 msgid "too many arguments"
 msgstr "Zu viele Argumente."
 
@@ -17833,7 +18194,7 @@ msgstr "%s, Quelle=%s, Ziel=%s"
 msgid "Renaming %s to %s\n"
 msgstr "Benenne %s nach %s um\n"
 
-#: builtin/mv.c:280 builtin/remote.c:785 builtin/repack.c:484
+#: builtin/mv.c:280 builtin/remote.c:785 builtin/repack.c:483
 #, c-format
 msgid "renaming '%s' failed"
 msgstr "Umbenennung von '%s' fehlgeschlagen"
@@ -18026,7 +18387,7 @@ msgstr "Konnte Notiz-Objekt nicht schreiben"
 msgid "the note contents have been left in %s"
 msgstr "Die Notiz-Inhalte wurden in %s belassen."
 
-#: builtin/notes.c:242 builtin/tag.c:533
+#: builtin/notes.c:242 builtin/tag.c:565
 #, c-format
 msgid "could not open or read '%s'"
 msgstr "konnte '%s' nicht öffnen oder lesen"
@@ -18068,12 +18429,6 @@ msgstr ""
 "Ausführung von %s auf Notizen in %s (außerhalb von refs/notes/) "
 "zurückgewiesen"
 
-#: builtin/notes.c:376 builtin/notes.c:431 builtin/notes.c:509
-#: builtin/notes.c:521 builtin/notes.c:598 builtin/notes.c:665
-#: builtin/notes.c:815 builtin/notes.c:963 builtin/notes.c:985
-msgid "too many parameters"
-msgstr "zu viele Parameter"
-
 #: builtin/notes.c:389 builtin/notes.c:678
 #, c-format
 msgid "no note found for object %s."
@@ -18133,8 +18488,8 @@ msgstr ""
 "stdin)"
 
 #: builtin/notes.c:517
-msgid "too few parameters"
-msgstr "zu wenig Parameter"
+msgid "too few arguments"
+msgstr "zu wenige Argumente"
 
 #: builtin/notes.c:538
 #, c-format
@@ -18266,7 +18621,7 @@ msgstr ""
 "commit',\n"
 "oder brechen Sie den Merge mit 'git notes merge --abort' ab.\n"
 
-#: builtin/notes.c:897 builtin/tag.c:546
+#: builtin/notes.c:897 builtin/tag.c:578
 #, c-format
 msgid "Failed to resolve '%s' as a valid ref."
 msgstr "Konnte '%s' nicht als gültige Referenz auflösen."
@@ -18284,7 +18639,7 @@ msgstr "der Versuch, eine nicht existierende Notiz zu löschen, ist kein Fehler"
 msgid "read object names from the standard input"
 msgstr "Objektnamen von der Standard-Eingabe lesen"
 
-#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:220
+#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:148
 msgid "do not remove, show only"
 msgstr "nicht löschen, nur anzeigen"
 
@@ -18300,7 +18655,7 @@ msgstr "Notiz-Referenz"
 msgid "use notes from <notes-ref>"
 msgstr "Notizen von <Notiz-Referenz> verwenden"
 
-#: builtin/notes.c:1034 builtin/stash.c:1604
+#: builtin/notes.c:1034 builtin/stash.c:1671
 #, c-format
 msgid "unknown subcommand: %s"
 msgstr "Unbekannter Unterbefehl: %s"
@@ -18319,106 +18674,120 @@ msgstr ""
 "git pack-objects [<Optionen>...] <Basis-Name> [< <Referenzliste> | < "
 "<Objektliste>]"
 
-#: builtin/pack-objects.c:443
+#: builtin/pack-objects.c:440
+#, c-format
+msgid ""
+"write_reuse_object: could not locate %s, expected at offset %<PRIuMAX> in "
+"pack %s"
+msgstr ""
+"write_reuse_object: konnte %s nicht finden, erwartet bei Offset %<PRIuMAX> "
+"in Paket %s"
+
+#: builtin/pack-objects.c:448
 #, c-format
 msgid "bad packed object CRC for %s"
 msgstr "Ungültiges CRC für gepacktes Objekt %s."
 
-#: builtin/pack-objects.c:454
+#: builtin/pack-objects.c:459
 #, c-format
 msgid "corrupt packed object for %s"
 msgstr "Fehlerhaftes gepacktes Objekt für %s."
 
-#: builtin/pack-objects.c:585
+#: builtin/pack-objects.c:590
 #, c-format
 msgid "recursive delta detected for object %s"
 msgstr "Rekursiver Unterschied für Objekt %s festgestellt."
 
-#: builtin/pack-objects.c:796
+#: builtin/pack-objects.c:801
 #, c-format
 msgid "ordered %u objects, expected %<PRIu32>"
 msgstr "%u Objekte geordnet, %<PRIu32> erwartet."
 
-#: builtin/pack-objects.c:1004
+#: builtin/pack-objects.c:896
+#, c-format
+msgid "expected object at offset %<PRIuMAX> in pack %s"
+msgstr "Objekt beim Offset %<PRIuMAX> in Paket %s erwartet"
+
+#: builtin/pack-objects.c:1015
 msgid "disabling bitmap writing, packs are split due to pack.packSizeLimit"
 msgstr ""
 "Deaktiviere Schreiben der Bitmap, Pakete wurden durch pack.packSizeLimit\n"
 "aufgetrennt."
 
-#: builtin/pack-objects.c:1017
+#: builtin/pack-objects.c:1028
 msgid "Writing objects"
 msgstr "Schreibe Objekte"
 
-#: builtin/pack-objects.c:1078 builtin/update-index.c:90
+#: builtin/pack-objects.c:1089 builtin/update-index.c:90
 #, c-format
 msgid "failed to stat %s"
 msgstr "Konnte '%s' nicht lesen"
 
-#: builtin/pack-objects.c:1131
+#: builtin/pack-objects.c:1141
 #, c-format
 msgid "wrote %<PRIu32> objects while expecting %<PRIu32>"
 msgstr "Schrieb %<PRIu32> Objekte während %<PRIu32> erwartet waren."
 
-#: builtin/pack-objects.c:1348
+#: builtin/pack-objects.c:1358
 msgid "disabling bitmap writing, as some objects are not being packed"
 msgstr ""
 "Deaktiviere Schreiben der Bitmap, da einige Objekte nicht in eine Pack-"
 "Datei\n"
 "geschrieben wurden."
 
-#: builtin/pack-objects.c:1796
+#: builtin/pack-objects.c:1806
 #, c-format
 msgid "delta base offset overflow in pack for %s"
 msgstr "\"delta base offset\" Überlauf in Paket für %s"
 
-#: builtin/pack-objects.c:1805
+#: builtin/pack-objects.c:1815
 #, c-format
 msgid "delta base offset out of bound for %s"
 msgstr "\"delta base offset\" liegt außerhalb des gültigen Bereichs für %s"
 
-#: builtin/pack-objects.c:2086
+#: builtin/pack-objects.c:2096
 msgid "Counting objects"
 msgstr "Zähle Objekte"
 
-#: builtin/pack-objects.c:2231
+#: builtin/pack-objects.c:2241
 #, c-format
 msgid "unable to parse object header of %s"
 msgstr "Konnte Kopfbereich von Objekt '%s' nicht parsen."
 
-#: builtin/pack-objects.c:2301 builtin/pack-objects.c:2317
-#: builtin/pack-objects.c:2327
+#: builtin/pack-objects.c:2311 builtin/pack-objects.c:2327
+#: builtin/pack-objects.c:2337
 #, c-format
 msgid "object %s cannot be read"
 msgstr "Objekt %s kann nicht gelesen werden."
 
-#: builtin/pack-objects.c:2304 builtin/pack-objects.c:2331
+#: builtin/pack-objects.c:2314 builtin/pack-objects.c:2341
 #, c-format
 msgid "object %s inconsistent object length (%<PRIuMAX> vs %<PRIuMAX>)"
 msgstr "Inkonsistente Objektlänge bei Objekt %s (%<PRIuMAX> vs %<PRIuMAX>)"
 
-#: builtin/pack-objects.c:2341
+#: builtin/pack-objects.c:2351
 msgid "suboptimal pack - out of memory"
 msgstr "ungünstiges Packet - Speicher voll"
 
-#: builtin/pack-objects.c:2656
+#: builtin/pack-objects.c:2666
 #, c-format
 msgid "Delta compression using up to %d threads"
 msgstr "Delta-Kompression verwendet bis zu %d Threads."
 
-#: builtin/pack-objects.c:2795
+#: builtin/pack-objects.c:2805
 #, c-format
 msgid "unable to pack objects reachable from tag %s"
 msgstr "Konnte keine Objekte packen, die von Tag %s erreichbar sind."
 
-#: builtin/pack-objects.c:2883
+#: builtin/pack-objects.c:2891
 msgid "Compressing objects"
 msgstr "Komprimiere Objekte"
 
-#: builtin/pack-objects.c:2889
+#: builtin/pack-objects.c:2897
 msgid "inconsistency with delta count"
 msgstr "Inkonsistenz mit der Anzahl von Deltas"
 
-#: builtin/pack-objects.c:2961
+#: builtin/pack-objects.c:2976
 #, c-format
 msgid ""
 "value of uploadpack.blobpackfileuri must be of the form '<object-hash> <pack-"
@@ -18427,7 +18796,7 @@ msgstr ""
 "Wert für uploadpack.blobpackfileuri muss in der Form '<Objekt-Hash> <Pack-"
 "Hash> <URI>' vorliegen ('%s' erhalten)"
 
-#: builtin/pack-objects.c:2964
+#: builtin/pack-objects.c:2979
 #, c-format
 msgid ""
 "object already configured in another uploadpack.blobpackfileuri (got '%s')"
@@ -18435,7 +18804,7 @@ msgstr ""
 "Objekt bereits in einem anderen uploadpack.blobpackfileuri konfiguriert "
 "('%s' erhalten)"
 
-#: builtin/pack-objects.c:2993
+#: builtin/pack-objects.c:3008
 #, c-format
 msgid ""
 "expected edge object ID, got garbage:\n"
@@ -18444,7 +18813,7 @@ msgstr ""
 "erwartete Randobjekt-ID, erhielt nutzlose Daten:\n"
 " %s"
 
-#: builtin/pack-objects.c:2999
+#: builtin/pack-objects.c:3014
 #, c-format
 msgid ""
 "expected object ID, got garbage:\n"
@@ -18453,250 +18822,250 @@ msgstr ""
 "erwartete Objekt-ID, erhielt nutzlose Daten:\n"
 " %s"
 
-#: builtin/pack-objects.c:3097
+#: builtin/pack-objects.c:3112
 msgid "invalid value for --missing"
 msgstr "ungültiger Wert für --missing"
 
-#: builtin/pack-objects.c:3156 builtin/pack-objects.c:3264
+#: builtin/pack-objects.c:3171 builtin/pack-objects.c:3279
 msgid "cannot open pack index"
 msgstr "kann Paketindex nicht öffnen"
 
-#: builtin/pack-objects.c:3187
+#: builtin/pack-objects.c:3202
 #, c-format
 msgid "loose object at %s could not be examined"
 msgstr "loses Objekt bei %s konnte nicht untersucht werden"
 
-#: builtin/pack-objects.c:3272
+#: builtin/pack-objects.c:3287
 msgid "unable to force loose object"
 msgstr "konnte loses Objekt nicht erzwingen"
 
-#: builtin/pack-objects.c:3365
+#: builtin/pack-objects.c:3380
 #, c-format
 msgid "not a rev '%s'"
 msgstr "'%s' ist kein Commit"
 
-#: builtin/pack-objects.c:3368
+#: builtin/pack-objects.c:3383
 #, c-format
 msgid "bad revision '%s'"
 msgstr "ungültiger Commit '%s'"
 
-#: builtin/pack-objects.c:3393
+#: builtin/pack-objects.c:3408
 msgid "unable to add recent objects"
 msgstr "konnte neuere Objekte nicht hinzufügen"
 
-#: builtin/pack-objects.c:3446
+#: builtin/pack-objects.c:3461
 #, c-format
 msgid "unsupported index version %s"
 msgstr "nicht unterstützte Index-Version %s"
 
-#: builtin/pack-objects.c:3450
+#: builtin/pack-objects.c:3465
 #, c-format
 msgid "bad index version '%s'"
 msgstr "ungültige Index-Version '%s'"
 
-#: builtin/pack-objects.c:3488
+#: builtin/pack-objects.c:3503
 msgid "<version>[,<offset>]"
 msgstr "<Version>[,<Offset>]"
 
-#: builtin/pack-objects.c:3489
+#: builtin/pack-objects.c:3504
 msgid "write the pack index file in the specified idx format version"
 msgstr ""
 "die Index-Datei des Paketes in der angegebenen Indexformat-Version schreiben"
 
-#: builtin/pack-objects.c:3492
+#: builtin/pack-objects.c:3507
 msgid "maximum size of each output pack file"
 msgstr "maximale Größe für jede ausgegebene Paketdatei"
 
-#: builtin/pack-objects.c:3494
+#: builtin/pack-objects.c:3509
 msgid "ignore borrowed objects from alternate object store"
 msgstr "geliehene Objekte von alternativem Objektspeicher ignorieren"
 
-#: builtin/pack-objects.c:3496
+#: builtin/pack-objects.c:3511
 msgid "ignore packed objects"
 msgstr "gepackte Objekte ignorieren"
 
-#: builtin/pack-objects.c:3498
+#: builtin/pack-objects.c:3513
 msgid "limit pack window by objects"
 msgstr "Paketfenster durch Objekte begrenzen"
 
-#: builtin/pack-objects.c:3500
+#: builtin/pack-objects.c:3515
 msgid "limit pack window by memory in addition to object limit"
 msgstr ""
 "Paketfenster, zusätzlich zur Objektbegrenzung, durch Speicher begrenzen"
 
-#: builtin/pack-objects.c:3502
+#: builtin/pack-objects.c:3517
 msgid "maximum length of delta chain allowed in the resulting pack"
 msgstr ""
 "maximale Länge der erlaubten Differenzverkettung im resultierenden Paket"
 
-#: builtin/pack-objects.c:3504
+#: builtin/pack-objects.c:3519
 msgid "reuse existing deltas"
 msgstr "existierende Unterschiede wiederverwenden"
 
-#: builtin/pack-objects.c:3506
+#: builtin/pack-objects.c:3521
 msgid "reuse existing objects"
 msgstr "existierende Objekte wiederverwenden"
 
-#: builtin/pack-objects.c:3508
+#: builtin/pack-objects.c:3523
 msgid "use OFS_DELTA objects"
 msgstr "OFS_DELTA Objekte verwenden"
 
-#: builtin/pack-objects.c:3510
+#: builtin/pack-objects.c:3525
 msgid "use threads when searching for best delta matches"
 msgstr ""
 "Threads bei der Suche nach den besten Übereinstimmungen bei Unterschieden "
 "verwenden"
 
-#: builtin/pack-objects.c:3512
+#: builtin/pack-objects.c:3527
 msgid "do not create an empty pack output"
 msgstr "keine leeren Pakete erzeugen"
 
-#: builtin/pack-objects.c:3514
+#: builtin/pack-objects.c:3529
 msgid "read revision arguments from standard input"
 msgstr "Argumente bezüglich Commits von der Standard-Eingabe lesen"
 
-#: builtin/pack-objects.c:3516
+#: builtin/pack-objects.c:3531
 msgid "limit the objects to those that are not yet packed"
 msgstr "die Objekte zu solchen, die noch nicht gepackt wurden, begrenzen"
 
-#: builtin/pack-objects.c:3519
+#: builtin/pack-objects.c:3534
 msgid "include objects reachable from any reference"
 msgstr "Objekte einschließen, die von jeder Referenz erreichbar sind"
 
-#: builtin/pack-objects.c:3522
+#: builtin/pack-objects.c:3537
 msgid "include objects referred by reflog entries"
 msgstr ""
 "Objekte einschließen, die von Einträgen des Reflogs referenziert werden"
 
-#: builtin/pack-objects.c:3525
+#: builtin/pack-objects.c:3540
 msgid "include objects referred to by the index"
 msgstr "Objekte einschließen, die vom Index referenziert werden"
 
-#: builtin/pack-objects.c:3528
+#: builtin/pack-objects.c:3543
 msgid "output pack to stdout"
 msgstr "Paket in die Standard-Ausgabe schreiben"
 
-#: builtin/pack-objects.c:3530
+#: builtin/pack-objects.c:3545
 msgid "include tag objects that refer to objects to be packed"
 msgstr "Tag-Objekte einschließen, die auf gepackte Objekte referenzieren"
 
-#: builtin/pack-objects.c:3532
+#: builtin/pack-objects.c:3547
 msgid "keep unreachable objects"
 msgstr "nicht erreichbare Objekte behalten"
 
-#: builtin/pack-objects.c:3534
+#: builtin/pack-objects.c:3549
 msgid "pack loose unreachable objects"
 msgstr "nicht erreichbare lose Objekte packen"
 
-#: builtin/pack-objects.c:3536
+#: builtin/pack-objects.c:3551
 msgid "unpack unreachable objects newer than <time>"
 msgstr "nicht erreichbare Objekte entpacken, die neuer als <Zeit> sind"
 
-#: builtin/pack-objects.c:3539
+#: builtin/pack-objects.c:3554
 msgid "use the sparse reachability algorithm"
 msgstr "den \"sparse\" Algorithmus zur Bestimmung der Erreichbarkeit benutzen"
 
-#: builtin/pack-objects.c:3541
+#: builtin/pack-objects.c:3556
 msgid "create thin packs"
 msgstr "dünnere Pakete erzeugen"
 
-#: builtin/pack-objects.c:3543
+#: builtin/pack-objects.c:3558
 msgid "create packs suitable for shallow fetches"
 msgstr ""
 "Pakete geeignet für Abholung mit unvollständiger Historie (shallow) erzeugen"
 
-#: builtin/pack-objects.c:3545
+#: builtin/pack-objects.c:3560
 msgid "ignore packs that have companion .keep file"
 msgstr "Pakete ignorieren, die .keep Dateien haben"
 
-#: builtin/pack-objects.c:3547
+#: builtin/pack-objects.c:3562
 msgid "ignore this pack"
 msgstr "dieses Paket ignorieren"
 
-#: builtin/pack-objects.c:3549
+#: builtin/pack-objects.c:3564
 msgid "pack compression level"
 msgstr "Komprimierungsgrad für Paketierung"
 
-#: builtin/pack-objects.c:3551
+#: builtin/pack-objects.c:3566
 msgid "do not hide commits by grafts"
 msgstr "keine künstlichen Vorgänger-Commits (\"grafts\") verbergen"
 
-#: builtin/pack-objects.c:3553
+#: builtin/pack-objects.c:3568
 msgid "use a bitmap index if available to speed up counting objects"
 msgstr ""
 "Bitmap-Index (falls verfügbar) zur Optimierung der Objektzählung benutzen"
 
-#: builtin/pack-objects.c:3555
+#: builtin/pack-objects.c:3570
 msgid "write a bitmap index together with the pack index"
 msgstr "Bitmap-Index zusammen mit Pack-Index schreiben"
 
-#: builtin/pack-objects.c:3559
+#: builtin/pack-objects.c:3574
 msgid "write a bitmap index if possible"
 msgstr "Bitmap-Index schreiben, wenn möglich"
 
-#: builtin/pack-objects.c:3563
+#: builtin/pack-objects.c:3578
 msgid "handling for missing objects"
 msgstr "Behandlung für fehlende Objekte"
 
-#: builtin/pack-objects.c:3566
+#: builtin/pack-objects.c:3581
 msgid "do not pack objects in promisor packfiles"
 msgstr ""
 "keine Objekte aus Packdateien von partiell geklonten Remote-Repositories "
 "packen"
 
-#: builtin/pack-objects.c:3568
+#: builtin/pack-objects.c:3583
 msgid "respect islands during delta compression"
 msgstr "Delta-Islands bei Delta-Kompression beachten"
 
-#: builtin/pack-objects.c:3570
+#: builtin/pack-objects.c:3585
 msgid "protocol"
 msgstr "Protokoll"
 
-#: builtin/pack-objects.c:3571
+#: builtin/pack-objects.c:3586
 msgid "exclude any configured uploadpack.blobpackfileuri with this protocol"
 msgstr ""
 "jegliche konfigurierte uploadpack.blobpackfileuri für dieses Protkoll "
 "ausschließen"
 
-#: builtin/pack-objects.c:3600
+#: builtin/pack-objects.c:3617
 #, c-format
 msgid "delta chain depth %d is too deep, forcing %d"
 msgstr "Tiefe für Verkettung von Unterschieden %d ist zu tief, erzwinge %d"
 
-#: builtin/pack-objects.c:3605
+#: builtin/pack-objects.c:3622
 #, c-format
 msgid "pack.deltaCacheLimit is too high, forcing %d"
 msgstr "pack.deltaCacheLimit ist zu hoch, erzwinge %d"
 
-#: builtin/pack-objects.c:3659
+#: builtin/pack-objects.c:3676
 msgid "--max-pack-size cannot be used to build a pack for transfer"
 msgstr ""
 "--max-pack-size kann nicht für die Erstellung eines Pakets für eine "
 "Übertragung\n"
 "benutzt werden."
 
-#: builtin/pack-objects.c:3661
+#: builtin/pack-objects.c:3678
 msgid "minimum pack size limit is 1 MiB"
 msgstr "Minimales Limit für die Paketgröße ist 1 MiB."
 
-#: builtin/pack-objects.c:3666
+#: builtin/pack-objects.c:3683
 msgid "--thin cannot be used to build an indexable pack"
 msgstr ""
 "--thin kann nicht benutzt werden, um ein indizierbares Paket zu erstellen."
 
-#: builtin/pack-objects.c:3669
+#: builtin/pack-objects.c:3686
 msgid "--keep-unreachable and --unpack-unreachable are incompatible"
 msgstr "--keep-unreachable und --unpack-unreachable sind inkompatibel"
 
-#: builtin/pack-objects.c:3675
+#: builtin/pack-objects.c:3692
 msgid "cannot use --filter without --stdout"
 msgstr "Kann --filter nicht ohne --stdout benutzen."
 
-#: builtin/pack-objects.c:3735
+#: builtin/pack-objects.c:3752
 msgid "Enumerating objects"
 msgstr "Objekte aufzählen"
 
-#: builtin/pack-objects.c:3766
+#: builtin/pack-objects.c:3783
 #, c-format
 msgid ""
 "Total %<PRIu32> (delta %<PRIu32>), reused %<PRIu32> (delta %<PRIu32>), pack-"
@@ -18705,6 +19074,21 @@ msgstr ""
 "Gesamt %<PRIu32> (Delta %<PRIu32>), Wiederverwendet %<PRIu32> (Delta "
 "%<PRIu32>), Pack wiederverwendet %<PRIu32>"
 
+#: builtin/pack-redundant.c:601
+msgid ""
+"'git pack-redundant' is nominated for removal.\n"
+"If you still use this command, please add an extra\n"
+"option, '--i-still-use-this', on the command line\n"
+"and let us know you still use it by sending an e-mail\n"
+"to <git@vger.kernel.org>.  Thanks.\n"
+msgstr ""
+"'git pack-redundant' ist für die Entfernung vorgesehen.\n"
+"Wenn Sie diesen Befehl weiterhin verwenden, fügen Sie\n"
+"bitte eine zusätzliche Option '--i-still-use-this' in\n"
+"der Befehlszeile hinzu und lassen Sie uns wissen, dass\n"
+"Sie es immer noch verwenden, indem Sie eine E-Mail an\n"
+"<git@vger.kernel.org> senden. Danke.\n"
+
 #: builtin/pack-refs.c:8
 msgid "git pack-refs [<options>]"
 msgstr "git pack-refs [<Optionen>]"
@@ -18764,7 +19148,7 @@ msgstr "Optionen bezogen auf Merge"
 msgid "incorporate changes by rebasing rather than merging"
 msgstr "Integration von Änderungen durch Rebase statt Merge"
 
-#: builtin/pull.c:158 builtin/rebase.c:490 builtin/revert.c:126
+#: builtin/pull.c:158 builtin/rebase.c:492 builtin/revert.c:126
 msgid "allow fast-forward"
 msgstr "Vorspulen erlauben"
 
@@ -18789,37 +19173,7 @@ msgstr "Anzahl der parallel mit 'pull' zu verarbeitenden Submodule"
 msgid "Invalid value for pull.ff: %s"
 msgstr "Ungültiger Wert für pull.ff: %s"
 
-#: builtin/pull.c:348
-msgid ""
-"Pulling without specifying how to reconcile divergent branches is\n"
-"discouraged. You can squelch this message by running one of the following\n"
-"commands sometime before your next pull:\n"
-"\n"
-"  git config pull.rebase false  # merge (the default strategy)\n"
-"  git config pull.rebase true   # rebase\n"
-"  git config pull.ff only       # fast-forward only\n"
-"\n"
-"You can replace \"git config\" with \"git config --global\" to set a "
-"default\n"
-"preference for all repositories. You can also pass --rebase, --no-rebase,\n"
-"or --ff-only on the command line to override the configured default per\n"
-"invocation.\n"
-msgstr ""
-"Es wird davon abgeraten zu Pullen, ohne anzugeben, wie mit abweichenden\n"
-"Branches umgegangen werden soll. Sie können diese Nachricht unterdrücken,\n"
-"indem Sie einen der folgenden Befehle ausführen, bevor der nächste Pull\n"
-"ausgeführt wird:\n"
-"\n"
-"  git config pull.rebase false  # Merge (Standard-Strategie)\n"
-"  git config pull.rebase true   # Rebase\n"
-"  git config pull.ff only       # ausschließlich Vorspulen\n"
-"\n"
-"Sie können statt \"git config\" auch \"git config --global\" nutzen, um\n"
-"einen Standard für alle Repositories festzulegen. Sie können auch die\n"
-"Option --rebase, --no-rebase oder --ff-only auf der Kommandozeile nutzen,\n"
-"um das konfigurierte Standardverhalten pro Aufruf zu überschreiben.\n"
-
-#: builtin/pull.c:458
+#: builtin/pull.c:445
 msgid ""
 "There is no candidate for rebasing against among the refs that you just "
 "fetched."
@@ -18827,14 +19181,14 @@ msgstr ""
 "Es gibt keinen Kandidaten für Rebase innerhalb der Referenzen, die eben "
 "angefordert wurden."
 
-#: builtin/pull.c:460
+#: builtin/pull.c:447
 msgid ""
 "There are no candidates for merging among the refs that you just fetched."
 msgstr ""
 "Es gibt keine Kandidaten für Merge innerhalb der Referenzen, die eben "
 "angefordert wurden."
 
-#: builtin/pull.c:461
+#: builtin/pull.c:448
 msgid ""
 "Generally this means that you provided a wildcard refspec which had no\n"
 "matches on the remote end."
@@ -18842,7 +19196,7 @@ msgstr ""
 "Im Allgemeinen bedeutet das, dass Sie einen Refspec mit Wildcards angegeben\n"
 "haben, der auf der Gegenseite mit keinen Referenzen übereinstimmt."
 
-#: builtin/pull.c:464
+#: builtin/pull.c:451
 #, c-format
 msgid ""
 "You asked to pull from the remote '%s', but did not specify\n"
@@ -18854,38 +19208,38 @@ msgstr ""
 "Repository für den aktuellen Branch ist, müssen Sie einen Branch auf\n"
 "der Befehlszeile angeben."
 
-#: builtin/pull.c:469 builtin/rebase.c:1246
+#: builtin/pull.c:456 builtin/rebase.c:1253
 msgid "You are not currently on a branch."
 msgstr "Im Moment auf keinem Branch."
 
-#: builtin/pull.c:471 builtin/pull.c:486
+#: builtin/pull.c:458 builtin/pull.c:473
 msgid "Please specify which branch you want to rebase against."
 msgstr ""
 "Bitte geben Sie den Branch an, gegen welchen Sie \"rebase\" ausführen "
 "möchten."
 
-#: builtin/pull.c:473 builtin/pull.c:488
+#: builtin/pull.c:460 builtin/pull.c:475
 msgid "Please specify which branch you want to merge with."
 msgstr "Bitte geben Sie den Branch an, welchen Sie zusammenführen möchten."
 
-#: builtin/pull.c:474 builtin/pull.c:489
+#: builtin/pull.c:461 builtin/pull.c:476
 msgid "See git-pull(1) for details."
 msgstr "Siehe git-pull(1) für weitere Details."
 
-#: builtin/pull.c:476 builtin/pull.c:482 builtin/pull.c:491
-#: builtin/rebase.c:1252
+#: builtin/pull.c:463 builtin/pull.c:469 builtin/pull.c:478
+#: builtin/rebase.c:1259
 msgid "<remote>"
 msgstr "<Remote-Repository>"
 
-#: builtin/pull.c:476 builtin/pull.c:491 builtin/pull.c:496
+#: builtin/pull.c:463 builtin/pull.c:478 builtin/pull.c:483
 msgid "<branch>"
 msgstr "<Branch>"
 
-#: builtin/pull.c:484 builtin/rebase.c:1244
+#: builtin/pull.c:471 builtin/rebase.c:1251
 msgid "There is no tracking information for the current branch."
 msgstr "Es gibt keine Tracking-Informationen für den aktuellen Branch."
 
-#: builtin/pull.c:493
+#: builtin/pull.c:480
 msgid ""
 "If you wish to set tracking information for this branch you can do so with:"
 msgstr ""
@@ -18893,7 +19247,7 @@ msgstr ""
 "Sie\n"
 "dies tun mit:"
 
-#: builtin/pull.c:498
+#: builtin/pull.c:485
 #, c-format
 msgid ""
 "Your configuration specifies to merge with the ref '%s'\n"
@@ -18903,30 +19257,60 @@ msgstr ""
 "des Remote-Repositories durchzuführen, aber diese Referenz\n"
 "wurde nicht angefordert."
 
-#: builtin/pull.c:609
+#: builtin/pull.c:596
 #, c-format
 msgid "unable to access commit %s"
 msgstr "Konnte nicht auf Commit '%s' zugreifen."
 
-#: builtin/pull.c:915
+#: builtin/pull.c:902
 msgid "ignoring --verify-signatures for rebase"
 msgstr "Ignoriere --verify-signatures für Rebase"
 
-#: builtin/pull.c:972
+#: builtin/pull.c:930
+msgid ""
+"Pulling without specifying how to reconcile divergent branches is\n"
+"discouraged. You can squelch this message by running one of the following\n"
+"commands sometime before your next pull:\n"
+"\n"
+"  git config pull.rebase false  # merge (the default strategy)\n"
+"  git config pull.rebase true   # rebase\n"
+"  git config pull.ff only       # fast-forward only\n"
+"\n"
+"You can replace \"git config\" with \"git config --global\" to set a "
+"default\n"
+"preference for all repositories. You can also pass --rebase, --no-rebase,\n"
+"or --ff-only on the command line to override the configured default per\n"
+"invocation.\n"
+msgstr ""
+"Es wird davon abgeraten zu Pullen, ohne anzugeben, wie mit abweichenden\n"
+"Branches umgegangen werden soll. Sie können diese Nachricht unterdrücken,\n"
+"indem Sie einen der folgenden Befehle ausführen, bevor der nächste Pull\n"
+"ausgeführt wird:\n"
+"\n"
+"  git config pull.rebase false  # Merge (Standard-Strategie)\n"
+"  git config pull.rebase true   # Rebase\n"
+"  git config pull.ff only       # ausschließlich Vorspulen\n"
+"\n"
+"Sie können statt \"git config\" auch \"git config --global\" nutzen, um\n"
+"einen Standard für alle Repositories festzulegen. Sie können auch die\n"
+"Option --rebase, --no-rebase oder --ff-only auf der Kommandozeile nutzen,\n"
+"um das konfigurierte Standardverhalten pro Aufruf zu überschreiben.\n"
+
+#: builtin/pull.c:991
 msgid "Updating an unborn branch with changes added to the index."
 msgstr ""
 "Aktualisiere einen ungeborenen Branch mit Änderungen, die zum Commit "
 "vorgemerkt sind."
 
-#: builtin/pull.c:976
+#: builtin/pull.c:995
 msgid "pull with rebase"
 msgstr "Pull mit Rebase"
 
-#: builtin/pull.c:977
+#: builtin/pull.c:996
 msgid "please commit or stash them."
 msgstr "Bitte committen Sie die Änderungen oder benutzen Sie \"stash\"."
 
-#: builtin/pull.c:1002
+#: builtin/pull.c:1021
 #, c-format
 msgid ""
 "fetch updated the current branch head.\n"
@@ -18936,7 +19320,7 @@ msgstr ""
 "\"fetch\" aktualisierte die Spitze des aktuellen Branches.\n"
 "Spule Ihr Arbeitsverzeichnis von Commit %s vor."
 
-#: builtin/pull.c:1008
+#: builtin/pull.c:1027
 #, c-format
 msgid ""
 "Cannot fast-forward your working tree.\n"
@@ -18953,15 +19337,15 @@ msgstr ""
 "$ git reset --hard\n"
 "zur Wiederherstellung aus."
 
-#: builtin/pull.c:1023
+#: builtin/pull.c:1042
 msgid "Cannot merge multiple branches into empty head."
 msgstr "Kann nicht mehrere Branches in einen leeren Branch zusammenführen."
 
-#: builtin/pull.c:1027
+#: builtin/pull.c:1046
 msgid "Cannot rebase onto multiple branches."
 msgstr "Kann Rebase nicht auf mehrere Branches ausführen."
 
-#: builtin/pull.c:1041
+#: builtin/pull.c:1067
 msgid "cannot rebase with locally recorded submodule modifications"
 msgstr ""
 "Kann Rebase nicht mit lokal aufgezeichneten Änderungen in Submodulen "
@@ -18977,7 +19361,7 @@ msgstr "Kurzschrift für Tag ohne <Tag>"
 
 #: builtin/push.c:119
 msgid "--delete only accepts plain target ref names"
-msgstr "Die Option --delete akzeptiert nur reine Referenznamen als Ziel."
+msgstr "--delete akzeptiert nur reine Referenznamen als Ziel"
 
 #: builtin/push.c:164
 msgid ""
@@ -19227,11 +19611,11 @@ msgstr "Referenzen atomar versenden"
 
 #: builtin/push.c:601
 msgid "--delete is incompatible with --all, --mirror and --tags"
-msgstr "Die Option --delete ist inkompatibel mit --all, --mirror und --tags."
+msgstr "--delete ist inkompatibel mit --all, --mirror und --tags"
 
 #: builtin/push.c:603
 msgid "--delete doesn't make sense without any refs"
-msgstr "Die Option --delete kann nur mit Referenzen verwendet werden."
+msgstr "--delete kann nur mit Referenzen verwendet werden"
 
 #: builtin/push.c:623
 #, c-format
@@ -19262,68 +19646,76 @@ msgstr ""
 
 #: builtin/push.c:639
 msgid "--all and --tags are incompatible"
-msgstr "Die Optionen --all und --tags sind inkompatibel."
+msgstr "--all und --tags sind inkompatibel"
 
 #: builtin/push.c:641
 msgid "--all can't be combined with refspecs"
-msgstr "Die Option --all kann nicht mit Refspecs kombiniert werden."
+msgstr "--all kann nicht mit Refspecs kombiniert werden"
 
 #: builtin/push.c:645
 msgid "--mirror and --tags are incompatible"
-msgstr "Die Optionen --mirror und --tags sind inkompatibel."
+msgstr "--mirror und --tags sind inkompatibel"
 
 #: builtin/push.c:647
 msgid "--mirror can't be combined with refspecs"
-msgstr "Die Option --mirror kann nicht mit Refspecs kombiniert werden."
+msgstr "--mirror kann nicht mit Refspecs kombiniert werden"
 
 #: builtin/push.c:650
 msgid "--all and --mirror are incompatible"
-msgstr "Die Optionen --all und --mirror sind inkompatibel."
+msgstr "--all und --mirror sind inkompatibel"
 
 #: builtin/push.c:657
 msgid "push options must not have new line characters"
 msgstr "Push-Optionen dürfen keine Zeilenvorschubzeichen haben"
 
-#: builtin/range-diff.c:8
+#: builtin/range-diff.c:9
 msgid "git range-diff [<options>] <old-base>..<old-tip> <new-base>..<new-tip>"
 msgstr ""
 "git range-diff [<Optionen>] <alte-Basis>..<alte-Spitze> <neue-Basis>..<neue-"
 "Spitze>"
 
-#: builtin/range-diff.c:9
+#: builtin/range-diff.c:10
 msgid "git range-diff [<options>] <old-tip>...<new-tip>"
 msgstr "git range-diff [<Optionen>] <alte-Spitze>...<neue-Spitze>"
 
-#: builtin/range-diff.c:10
+#: builtin/range-diff.c:11
 msgid "git range-diff [<options>] <base> <old-tip> <new-tip>"
 msgstr "git range-diff [<Optionen>] <Basis> <alte-Spitze> <neue-Spitze>"
 
-#: builtin/range-diff.c:22
+#: builtin/range-diff.c:28
 msgid "Percentage by which creation is weighted"
 msgstr "Prozentsatz mit welchem Erzeugung gewichtet wird"
 
-#: builtin/range-diff.c:24
+#: builtin/range-diff.c:30
 msgid "use simple diff colors"
 msgstr "einfache Diff-Farben benutzen"
 
-#: builtin/range-diff.c:26
+#: builtin/range-diff.c:32
 msgid "notes"
 msgstr "Notizen"
 
-#: builtin/range-diff.c:26
+#: builtin/range-diff.c:32
 msgid "passed to 'git log'"
 msgstr "an 'git log' übergeben"
 
-#: builtin/range-diff.c:50 builtin/range-diff.c:54
+#: builtin/range-diff.c:35
+msgid "only emit output related to the first range"
+msgstr "nur Ausgaben anzeigen, die sich auf den ersten Bereich beziehen"
+
+#: builtin/range-diff.c:37
+msgid "only emit output related to the second range"
+msgstr "nur Ausgaben anzeigen, die sich auf den zweiten Bereich beziehen"
+
+#: builtin/range-diff.c:60 builtin/range-diff.c:64
 #, c-format
-msgid "no .. in range: '%s'"
-msgstr "Kein .. im Bereich: '%s'"
+msgid "not a commit range: '%s'"
+msgstr "kein Commit-Bereich: '%s'"
 
-#: builtin/range-diff.c:64
+#: builtin/range-diff.c:74
 msgid "single arg format must be symmetric range"
 msgstr "Format mit einfachem Argument muss symmetrischer Bereich sein."
 
-#: builtin/range-diff.c:79
+#: builtin/range-diff.c:89
 msgid "need two commit ranges"
 msgstr "Benötige zwei Commit-Bereiche."
 
@@ -19429,194 +19821,194 @@ msgstr ""
 msgid "git rebase --continue | --abort | --skip | --edit-todo"
 msgstr "git rebase --continue | --abort | --skip | --edit-todo"
 
-#: builtin/rebase.c:193 builtin/rebase.c:217 builtin/rebase.c:244
+#: builtin/rebase.c:195 builtin/rebase.c:219 builtin/rebase.c:246
 #, c-format
 msgid "unusable todo list: '%s'"
 msgstr "Unbenutzbare TODO-Liste: '%s'"
 
-#: builtin/rebase.c:310
+#: builtin/rebase.c:312
 #, c-format
 msgid "could not create temporary %s"
 msgstr "Konnte temporäres Verzeichnis '%s' nicht erstellen."
 
-#: builtin/rebase.c:316
+#: builtin/rebase.c:318
 msgid "could not mark as interactive"
 msgstr "Markierung auf interaktiven Rebase fehlgeschlagen."
 
-#: builtin/rebase.c:369
+#: builtin/rebase.c:371
 msgid "could not generate todo list"
 msgstr "Konnte TODO-Liste nicht erzeugen."
 
-#: builtin/rebase.c:411
+#: builtin/rebase.c:413
 msgid "a base commit must be provided with --upstream or --onto"
 msgstr "Ein Basis-Commit muss mit --upstream oder --onto angegeben werden."
 
-#: builtin/rebase.c:480
+#: builtin/rebase.c:482
 msgid "git rebase--interactive [<options>]"
 msgstr "git rebase--interactive [<Optionen>]"
 
-#: builtin/rebase.c:493 builtin/rebase.c:1388
+#: builtin/rebase.c:495 builtin/rebase.c:1394
 msgid "keep commits which start empty"
 msgstr "behalte Commits, die leer beginnen"
 
-#: builtin/rebase.c:497 builtin/revert.c:128
+#: builtin/rebase.c:499 builtin/revert.c:128
 msgid "allow commits with empty messages"
 msgstr "Commits mit leerer Beschreibung erlauben"
 
-#: builtin/rebase.c:499
+#: builtin/rebase.c:501
 msgid "rebase merge commits"
 msgstr "Rebase auf Merge-Commits ausführen"
 
-#: builtin/rebase.c:501
+#: builtin/rebase.c:503
 msgid "keep original branch points of cousins"
 msgstr "originale Branch-Punkte der Cousins behalten"
 
-#: builtin/rebase.c:503
+#: builtin/rebase.c:505
 msgid "move commits that begin with squash!/fixup!"
 msgstr "Commits verschieben, die mit squash!/fixup! beginnen"
 
-#: builtin/rebase.c:504
+#: builtin/rebase.c:506
 msgid "sign commits"
 msgstr "Commits signieren"
 
-#: builtin/rebase.c:506 builtin/rebase.c:1327
+#: builtin/rebase.c:508 builtin/rebase.c:1333
 msgid "display a diffstat of what changed upstream"
 msgstr ""
 "Zusammenfassung der Unterschiede gegenüber dem Upstream-Branch anzeigen"
 
-#: builtin/rebase.c:508
+#: builtin/rebase.c:510
 msgid "continue rebase"
 msgstr "Rebase fortsetzen"
 
-#: builtin/rebase.c:510
+#: builtin/rebase.c:512
 msgid "skip commit"
 msgstr "Commit auslassen"
 
-#: builtin/rebase.c:511
+#: builtin/rebase.c:513
 msgid "edit the todo list"
 msgstr "die TODO-Liste bearbeiten"
 
-#: builtin/rebase.c:513
+#: builtin/rebase.c:515
 msgid "show the current patch"
 msgstr "den aktuellen Patch anzeigen"
 
-#: builtin/rebase.c:516
+#: builtin/rebase.c:518
 msgid "shorten commit ids in the todo list"
 msgstr "Commit-IDs in der TODO-Liste verkürzen"
 
-#: builtin/rebase.c:518
+#: builtin/rebase.c:520
 msgid "expand commit ids in the todo list"
 msgstr "Commit-IDs in der TODO-Liste erweitern"
 
-#: builtin/rebase.c:520
+#: builtin/rebase.c:522
 msgid "check the todo list"
 msgstr "die TODO-Liste prüfen"
 
-#: builtin/rebase.c:522
+#: builtin/rebase.c:524
 msgid "rearrange fixup/squash lines"
 msgstr "fixup/squash-Zeilen umordnen"
 
-#: builtin/rebase.c:524
+#: builtin/rebase.c:526
 msgid "insert exec commands in todo list"
 msgstr "\"exec\"-Befehle in TODO-Liste einfügen"
 
-#: builtin/rebase.c:525
+#: builtin/rebase.c:527
 msgid "onto"
 msgstr "auf"
 
-#: builtin/rebase.c:528
+#: builtin/rebase.c:530
 msgid "restrict-revision"
 msgstr "Begrenzungscommit"
 
-#: builtin/rebase.c:528
+#: builtin/rebase.c:530
 msgid "restrict revision"
 msgstr "Begrenzungscommit"
 
-#: builtin/rebase.c:530
+#: builtin/rebase.c:532
 msgid "squash-onto"
 msgstr "squash-onto"
 
-#: builtin/rebase.c:531
+#: builtin/rebase.c:533
 msgid "squash onto"
 msgstr "squash onto"
 
-#: builtin/rebase.c:533
+#: builtin/rebase.c:535
 msgid "the upstream commit"
 msgstr "der Upstream-Commit"
 
-#: builtin/rebase.c:535
+#: builtin/rebase.c:537
 msgid "head-name"
 msgstr "head-Name"
 
-#: builtin/rebase.c:535
+#: builtin/rebase.c:537
 msgid "head name"
 msgstr "head-Name"
 
-#: builtin/rebase.c:540
+#: builtin/rebase.c:542
 msgid "rebase strategy"
 msgstr "Rebase-Strategie"
 
-#: builtin/rebase.c:541
+#: builtin/rebase.c:543
 msgid "strategy-opts"
 msgstr "Strategie-Optionen"
 
-#: builtin/rebase.c:542
+#: builtin/rebase.c:544
 msgid "strategy options"
 msgstr "Strategie-Optionen"
 
-#: builtin/rebase.c:543
+#: builtin/rebase.c:545
 msgid "switch-to"
 msgstr "wechseln zu"
 
-#: builtin/rebase.c:544
+#: builtin/rebase.c:546
 msgid "the branch or commit to checkout"
 msgstr "der Branch oder Commit zum Auschecken"
 
-#: builtin/rebase.c:545
+#: builtin/rebase.c:547
 msgid "onto-name"
 msgstr "onto-Name"
 
-#: builtin/rebase.c:545
+#: builtin/rebase.c:547
 msgid "onto name"
 msgstr "onto-Name"
 
-#: builtin/rebase.c:546
+#: builtin/rebase.c:548
 msgid "cmd"
 msgstr "Befehl"
 
-#: builtin/rebase.c:546
+#: builtin/rebase.c:548
 msgid "the command to run"
 msgstr "auszuführender Befehl"
 
-#: builtin/rebase.c:549 builtin/rebase.c:1421
+#: builtin/rebase.c:551 builtin/rebase.c:1427
 msgid "automatically re-schedule any `exec` that fails"
 msgstr "jeden fehlgeschlagenen `exec`-Befehl neu ansetzen"
 
-#: builtin/rebase.c:565
+#: builtin/rebase.c:567
 msgid "--[no-]rebase-cousins has no effect without --rebase-merges"
 msgstr "--[no-]rebase-cousins hat ohne --rebase-merges keine Auswirkung"
 
-#: builtin/rebase.c:581
+#: builtin/rebase.c:583
 #, c-format
 msgid "%s requires the merge backend"
 msgstr "%s erfordert das Merge-Backend"
 
-#: builtin/rebase.c:624
+#: builtin/rebase.c:626
 #, c-format
 msgid "could not get 'onto': '%s'"
 msgstr "Konnte 'onto' nicht bestimmen: '%s'"
 
-#: builtin/rebase.c:641
+#: builtin/rebase.c:643
 #, c-format
 msgid "invalid orig-head: '%s'"
 msgstr "Ungültiges orig-head: '%s'"
 
-#: builtin/rebase.c:666
+#: builtin/rebase.c:668
 #, c-format
 msgid "ignoring invalid allow_rerere_autoupdate: '%s'"
 msgstr "Ignoriere ungültiges allow_rerere_autoupdate: '%s'"
 
-#: builtin/rebase.c:811 git-rebase--preserve-merges.sh:81
+#: builtin/rebase.c:813 git-rebase--preserve-merges.sh:81
 msgid ""
 "Resolve all conflicts manually, mark them as resolved with\n"
 "\"git add/rm <conflicted_files>\", then run \"git rebase --continue\".\n"
@@ -19632,7 +20024,7 @@ msgstr ""
 "Um abzubrechen und zurück zum Zustand vor \"git rebase\" zu gelangen,\n"
 "führen Sie \"git rebase --abort\" aus."
 
-#: builtin/rebase.c:894
+#: builtin/rebase.c:896
 #, c-format
 msgid ""
 "\n"
@@ -19652,7 +20044,7 @@ msgstr ""
 "Infolge dessen kann Git auf diesen Revisionen Rebase nicht\n"
 "ausführen."
 
-#: builtin/rebase.c:1220
+#: builtin/rebase.c:1227
 #, c-format
 msgid ""
 "unrecognized empty type '%s'; valid values are \"drop\", \"keep\", and \"ask"
@@ -19661,7 +20053,7 @@ msgstr ""
 "nicht erkannter leerer Typ '%s'; Gültige Werte sind \"drop\", \"keep\", und "
 "\"ask\"."
 
-#: builtin/rebase.c:1238
+#: builtin/rebase.c:1245
 #, c-format
 msgid ""
 "%s\n"
@@ -19679,7 +20071,7 @@ msgstr ""
 "    git rebase '<Branch>'\n"
 "\n"
 
-#: builtin/rebase.c:1254
+#: builtin/rebase.c:1261
 #, c-format
 msgid ""
 "If you wish to set tracking information for this branch you can do so with:\n"
@@ -19693,154 +20085,152 @@ msgstr ""
 "    git branch --set-upstream-to=%s/<Branch> %s\n"
 "\n"
 
-#: builtin/rebase.c:1284
+#: builtin/rebase.c:1291
 msgid "exec commands cannot contain newlines"
 msgstr "\"exec\"-Befehle können keine neuen Zeilen enthalten"
 
-#: builtin/rebase.c:1288
+#: builtin/rebase.c:1295
 msgid "empty exec command"
 msgstr "Leerer \"exec\"-Befehl."
 
-#: builtin/rebase.c:1318
+#: builtin/rebase.c:1324
 msgid "rebase onto given branch instead of upstream"
 msgstr "Rebase auf angegebenen Branch anstelle des Upstream-Branches ausführen"
 
-#: builtin/rebase.c:1320
+#: builtin/rebase.c:1326
 msgid "use the merge-base of upstream and branch as the current base"
 msgstr "Nutze die Merge-Basis von Upstream und Branch als die aktuelle Basis"
 
-#: builtin/rebase.c:1322
+#: builtin/rebase.c:1328
 msgid "allow pre-rebase hook to run"
 msgstr "Ausführung des pre-rebase-Hooks erlauben"
 
-#: builtin/rebase.c:1324
+#: builtin/rebase.c:1330
 msgid "be quiet. implies --no-stat"
 msgstr "weniger Ausgaben (impliziert --no-stat)"
 
-#: builtin/rebase.c:1330
+#: builtin/rebase.c:1336
 msgid "do not show diffstat of what changed upstream"
 msgstr ""
 "Zusammenfassung der Unterschiede gegenüber dem Upstream-Branch verbergen"
 
-#: builtin/rebase.c:1333
+#: builtin/rebase.c:1339
 msgid "add a Signed-off-by trailer to each commit"
 msgstr "eine Signed-off-by Zeile zu jedem Commit hinzufügen"
 
-#: builtin/rebase.c:1336
+#: builtin/rebase.c:1342
 msgid "make committer date match author date"
 msgstr "Datum des Commit-Erstellers soll mit Datum des Autors übereinstimmen"
 
-#: builtin/rebase.c:1338
+#: builtin/rebase.c:1344
 msgid "ignore author date and use current date"
 msgstr "ignoriere Autor-Datum und nutze aktuelles Datum"
 
-#: builtin/rebase.c:1340
+#: builtin/rebase.c:1346
 msgid "synonym of --reset-author-date"
 msgstr "Synonym für --reset-author-date"
 
-#: builtin/rebase.c:1342 builtin/rebase.c:1346
+#: builtin/rebase.c:1348 builtin/rebase.c:1352
 msgid "passed to 'git apply'"
 msgstr "an 'git apply' übergeben"
 
-#: builtin/rebase.c:1344
+#: builtin/rebase.c:1350
 msgid "ignore changes in whitespace"
 msgstr "Whitespace-Änderungen ignorieren"
 
-#: builtin/rebase.c:1348 builtin/rebase.c:1351
+#: builtin/rebase.c:1354 builtin/rebase.c:1357
 msgid "cherry-pick all commits, even if unchanged"
 msgstr ""
 "Cherry-Pick auf alle Commits ausführen, auch wenn diese unverändert sind"
 
-#: builtin/rebase.c:1353
+#: builtin/rebase.c:1359
 msgid "continue"
 msgstr "fortsetzen"
 
-#: builtin/rebase.c:1356
+#: builtin/rebase.c:1362
 msgid "skip current patch and continue"
 msgstr "den aktuellen Patch auslassen und fortfahren"
 
-#: builtin/rebase.c:1358
+#: builtin/rebase.c:1364
 msgid "abort and check out the original branch"
 msgstr "abbrechen und den ursprünglichen Branch auschecken"
 
-#: builtin/rebase.c:1361
+#: builtin/rebase.c:1367
 msgid "abort but keep HEAD where it is"
 msgstr "abbrechen, aber HEAD an aktueller Stelle belassen"
 
-#: builtin/rebase.c:1362
+#: builtin/rebase.c:1368
 msgid "edit the todo list during an interactive rebase"
 msgstr "TODO-Liste während eines interaktiven Rebase bearbeiten"
 
-#: builtin/rebase.c:1365
+#: builtin/rebase.c:1371
 msgid "show the patch file being applied or merged"
 msgstr "den Patch, der gerade angewendet oder zusammengeführt wird, anzeigen"
 
-#: builtin/rebase.c:1368
+#: builtin/rebase.c:1374
 msgid "use apply strategies to rebase"
 msgstr "Strategien von 'git am' bei Rebase verwenden"
 
-#: builtin/rebase.c:1372
+#: builtin/rebase.c:1378
 msgid "use merging strategies to rebase"
 msgstr "Merge-Strategien beim Rebase verwenden"
 
-#: builtin/rebase.c:1376
+#: builtin/rebase.c:1382
 msgid "let the user edit the list of commits to rebase"
 msgstr "den Benutzer die Liste der Commits für den Rebase bearbeiten lassen"
 
-#: builtin/rebase.c:1380
+#: builtin/rebase.c:1386
 msgid "(DEPRECATED) try to recreate merges instead of ignoring them"
-msgstr ""
-"(VERALTET) Versuche, Merges wiederherzustellen anstatt sie zu ignorieren"
+msgstr "(VERALTET) Versuche, Merges wiederherzustellen statt sie zu ignorieren"
 
-#: builtin/rebase.c:1385
+#: builtin/rebase.c:1391
 msgid "how to handle commits that become empty"
 msgstr "wie sollen Commits behandelt werden, die leer werden"
 
-#: builtin/rebase.c:1392
+#: builtin/rebase.c:1398
 msgid "move commits that begin with squash!/fixup! under -i"
 msgstr "bei -i Commits verschieben, die mit squash!/fixup! beginnen"
 
-#: builtin/rebase.c:1399
+#: builtin/rebase.c:1405
 msgid "add exec lines after each commit of the editable list"
 msgstr "exec-Zeilen nach jedem Commit der editierbaren Liste hinzufügen"
 
-#: builtin/rebase.c:1403
+#: builtin/rebase.c:1409
 msgid "allow rebasing commits with empty messages"
 msgstr "Rebase von Commits mit leerer Beschreibung erlauben"
 
-#: builtin/rebase.c:1407
+#: builtin/rebase.c:1413
 msgid "try to rebase merges instead of skipping them"
-msgstr ""
-"versuchen, Rebase mit Merges auszuführen, anstatt diese zu überspringen"
+msgstr "versuchen, Rebase mit Merges auszuführen, statt diese zu überspringen"
 
-#: builtin/rebase.c:1410
+#: builtin/rebase.c:1416
 msgid "use 'merge-base --fork-point' to refine upstream"
 msgstr ""
 "'git merge-base --fork-point' benutzen, um Upstream-Branch zu bestimmen"
 
-#: builtin/rebase.c:1412
+#: builtin/rebase.c:1418
 msgid "use the given merge strategy"
 msgstr "angegebene Merge-Strategie verwenden"
 
-#: builtin/rebase.c:1414 builtin/revert.c:115
+#: builtin/rebase.c:1420 builtin/revert.c:115
 msgid "option"
 msgstr "Option"
 
-#: builtin/rebase.c:1415
+#: builtin/rebase.c:1421
 msgid "pass the argument through to the merge strategy"
 msgstr "Argument zur Merge-Strategie durchreichen"
 
-#: builtin/rebase.c:1418
+#: builtin/rebase.c:1424
 msgid "rebase all reachable commits up to the root(s)"
 msgstr "Rebase auf alle erreichbaren Commits bis zum Root-Commit ausführen"
 
-#: builtin/rebase.c:1423
+#: builtin/rebase.c:1429
 msgid "apply all changes, even those already present upstream"
 msgstr ""
 "alle Änderungen anwenden, auch jene, die bereits im Upstream-Branch "
 "vorhanden sind"
 
-#: builtin/rebase.c:1440
+#: builtin/rebase.c:1446
 msgid ""
 "the rebase.useBuiltin support has been removed!\n"
 "See its entry in 'git help config' for details."
@@ -19848,44 +20238,44 @@ msgstr ""
 "Die Unterstützung für rebase.useBuiltin wurde entfernt!\n"
 "Siehe dessen Eintrag in 'git help config' für Details."
 
-#: builtin/rebase.c:1446
+#: builtin/rebase.c:1452
 msgid "It looks like 'git am' is in progress. Cannot rebase."
 msgstr "'git-am' scheint im Gange zu sein. Kann Rebase nicht durchführen."
 
-#: builtin/rebase.c:1487
+#: builtin/rebase.c:1493
 msgid ""
 "git rebase --preserve-merges is deprecated. Use --rebase-merges instead."
 msgstr ""
 "'git rebase --preserve-merges' ist veraltet. Benutzen Sie stattdessen '--"
 "rebase-merges'."
 
-#: builtin/rebase.c:1492
+#: builtin/rebase.c:1498
 msgid "cannot combine '--keep-base' with '--onto'"
 msgstr "'--keep-base' kann nicht mit '--onto' kombiniert werden"
 
-#: builtin/rebase.c:1494
+#: builtin/rebase.c:1500
 msgid "cannot combine '--keep-base' with '--root'"
 msgstr "'--keep-base' kann nicht mit '--root' kombiniert werden"
 
-#: builtin/rebase.c:1498
+#: builtin/rebase.c:1504
 msgid "cannot combine '--root' with '--fork-point'"
 msgstr "'--root' kann nicht mit '--fork-point' kombiniert werden"
 
-#: builtin/rebase.c:1501
+#: builtin/rebase.c:1507
 msgid "No rebase in progress?"
 msgstr "Kein Rebase im Gange?"
 
-#: builtin/rebase.c:1505
+#: builtin/rebase.c:1511
 msgid "The --edit-todo action can only be used during interactive rebase."
 msgstr ""
 "Die --edit-todo Aktion kann nur während eines interaktiven Rebase verwendet "
 "werden."
 
-#: builtin/rebase.c:1528 t/helper/test-fast-rebase.c:123
+#: builtin/rebase.c:1534 t/helper/test-fast-rebase.c:123
 msgid "Cannot read HEAD"
 msgstr "Kann HEAD nicht lesen"
 
-#: builtin/rebase.c:1540
+#: builtin/rebase.c:1546
 msgid ""
 "You must edit all merge conflicts and then\n"
 "mark them as resolved using git add"
@@ -19893,16 +20283,16 @@ msgstr ""
 "Sie müssen alle Merge-Konflikte editieren und diese dann\n"
 "mittels \"git add\" als aufgelöst markieren"
 
-#: builtin/rebase.c:1559
+#: builtin/rebase.c:1565
 msgid "could not discard worktree changes"
 msgstr "Konnte Änderungen im Arbeitsverzeichnis nicht verwerfen."
 
-#: builtin/rebase.c:1578
+#: builtin/rebase.c:1584
 #, c-format
 msgid "could not move back to %s"
 msgstr "Konnte nicht zu %s zurückgehen."
 
-#: builtin/rebase.c:1624
+#: builtin/rebase.c:1630
 #, c-format
 msgid ""
 "It seems that there is already a %s directory, and\n"
@@ -19923,138 +20313,138 @@ msgstr ""
 "und führen Sie diesen Befehl nochmal aus. Es wird angehalten, falls noch\n"
 "etwas Schützenswertes vorhanden ist.\n"
 
-#: builtin/rebase.c:1652
+#: builtin/rebase.c:1658
 msgid "switch `C' expects a numerical value"
 msgstr "Schalter `C' erwartet einen numerischen Wert."
 
-#: builtin/rebase.c:1694
+#: builtin/rebase.c:1700
 #, c-format
 msgid "Unknown mode: %s"
 msgstr "Unbekannter Modus: %s"
 
-#: builtin/rebase.c:1733
+#: builtin/rebase.c:1739
 msgid "--strategy requires --merge or --interactive"
 msgstr "--strategy erfordert --merge oder --interactive"
 
-#: builtin/rebase.c:1763
+#: builtin/rebase.c:1769
 msgid "cannot combine apply options with merge options"
 msgstr ""
 "Optionen für \"am\" können nicht mit Optionen für \"merge\" kombiniert "
 "werden."
 
-#: builtin/rebase.c:1776
+#: builtin/rebase.c:1782
 #, c-format
 msgid "Unknown rebase backend: %s"
 msgstr "Unbekanntes Rebase-Backend: %s"
 
-#: builtin/rebase.c:1806
+#: builtin/rebase.c:1812
 msgid "--reschedule-failed-exec requires --exec or --interactive"
 msgstr "--reschedule-failed-exec erfordert --exec oder --interactive"
 
-#: builtin/rebase.c:1826
+#: builtin/rebase.c:1832
 msgid "cannot combine '--preserve-merges' with '--rebase-merges'"
 msgstr ""
 "'--preserve-merges' kann nicht mit '--rebase-merges' kombiniert werden."
 
-#: builtin/rebase.c:1830
+#: builtin/rebase.c:1836
 msgid ""
 "error: cannot combine '--preserve-merges' with '--reschedule-failed-exec'"
 msgstr ""
 "Fehler: '--preserve-merges' kann nicht mit '--reschedule-failed-exec' "
 "kombiniert werden."
 
-#: builtin/rebase.c:1854
+#: builtin/rebase.c:1860
 #, c-format
 msgid "invalid upstream '%s'"
 msgstr "Ungültiger Upstream '%s'"
 
-#: builtin/rebase.c:1860
+#: builtin/rebase.c:1866
 msgid "Could not create new root commit"
 msgstr "Konnte neuen Root-Commit nicht erstellen."
 
-#: builtin/rebase.c:1886
+#: builtin/rebase.c:1892
 #, c-format
 msgid "'%s': need exactly one merge base with branch"
 msgstr "'%s': benötige genau eine Merge-Basis mit dem Branch"
 
-#: builtin/rebase.c:1889
+#: builtin/rebase.c:1895
 #, c-format
 msgid "'%s': need exactly one merge base"
 msgstr "'%s': benötige genau eine Merge-Basis"
 
-#: builtin/rebase.c:1897
+#: builtin/rebase.c:1903
 #, c-format
 msgid "Does not point to a valid commit '%s'"
 msgstr "'%s' zeigt auf keinen gültigen Commit."
 
-#: builtin/rebase.c:1923
+#: builtin/rebase.c:1931
 #, c-format
 msgid "fatal: no such branch/commit '%s'"
 msgstr "fatal: Branch/Commit '%s' nicht gefunden"
 
-#: builtin/rebase.c:1931 builtin/submodule--helper.c:40
+#: builtin/rebase.c:1939 builtin/submodule--helper.c:40
 #: builtin/submodule--helper.c:2414
 #, c-format
 msgid "No such ref: %s"
 msgstr "Referenz nicht gefunden: %s"
 
-#: builtin/rebase.c:1942
+#: builtin/rebase.c:1950
 msgid "Could not resolve HEAD to a revision"
 msgstr "Konnte HEAD zu keinem Commit auflösen."
 
-#: builtin/rebase.c:1963
+#: builtin/rebase.c:1971
 msgid "Please commit or stash them."
 msgstr "Bitte committen Sie die Änderungen oder benutzen Sie \"stash\"."
 
-#: builtin/rebase.c:1999
+#: builtin/rebase.c:2007
 #, c-format
 msgid "could not switch to %s"
 msgstr "Konnte nicht zu %s wechseln."
 
-#: builtin/rebase.c:2010
+#: builtin/rebase.c:2018
 msgid "HEAD is up to date."
 msgstr "HEAD ist aktuell."
 
-#: builtin/rebase.c:2012
+#: builtin/rebase.c:2020
 #, c-format
 msgid "Current branch %s is up to date.\n"
 msgstr "Aktueller Branch %s ist auf dem neuesten Stand.\n"
 
-#: builtin/rebase.c:2020
+#: builtin/rebase.c:2028
 msgid "HEAD is up to date, rebase forced."
 msgstr "HEAD ist aktuell, Rebase erzwungen."
 
-#: builtin/rebase.c:2022
+#: builtin/rebase.c:2030
 #, c-format
 msgid "Current branch %s is up to date, rebase forced.\n"
 msgstr "Aktueller Branch %s ist auf dem neuesten Stand, Rebase erzwungen.\n"
 
-#: builtin/rebase.c:2030
+#: builtin/rebase.c:2038
 msgid "The pre-rebase hook refused to rebase."
 msgstr "Der \"pre-rebase hook\" hat den Rebase zurückgewiesen."
 
-#: builtin/rebase.c:2037
+#: builtin/rebase.c:2045
 #, c-format
 msgid "Changes to %s:\n"
 msgstr "Änderungen zu %s:\n"
 
-#: builtin/rebase.c:2040
+#: builtin/rebase.c:2048
 #, c-format
 msgid "Changes from %s to %s:\n"
 msgstr "Änderungen von %s zu %s:\n"
 
-#: builtin/rebase.c:2065
+#: builtin/rebase.c:2073
 #, c-format
 msgid "First, rewinding head to replay your work on top of it...\n"
 msgstr ""
 "Zunächst wird der Branch zurückgespult, um Ihre Änderungen darauf neu "
 "anzuwenden...\n"
 
-#: builtin/rebase.c:2074
+#: builtin/rebase.c:2082
 msgid "Could not detach HEAD"
 msgstr "Konnte HEAD nicht loslösen."
 
-#: builtin/rebase.c:2083
+#: builtin/rebase.c:2091
 #, c-format
 msgid "Fast-forwarded %s to %s.\n"
 msgstr "Spule %s vor zu %s.\n"
@@ -20151,36 +20541,36 @@ msgstr "git reflog exists <Referenz>"
 msgid "'%s' is not a valid timestamp"
 msgstr "'%s' ist kein gültiger Zeitstempel"
 
-#: builtin/reflog.c:606
+#: builtin/reflog.c:609
 #, c-format
 msgid "Marking reachable objects..."
 msgstr "Markiere nicht erreichbare Objekte..."
 
-#: builtin/reflog.c:644
+#: builtin/reflog.c:647
 #, c-format
 msgid "%s points nowhere!"
 msgstr "%s zeigt auf nichts!"
 
-#: builtin/reflog.c:696
+#: builtin/reflog.c:699
 msgid "no reflog specified to delete"
 msgstr "Kein Reflog zum Löschen angegeben."
 
-#: builtin/reflog.c:705
+#: builtin/reflog.c:708
 #, c-format
 msgid "not a reflog: %s"
 msgstr "Kein Reflog: %s"
 
-#: builtin/reflog.c:710
+#: builtin/reflog.c:713
 #, c-format
 msgid "no reflog for '%s'"
 msgstr "Kein Reflog für '%s'."
 
-#: builtin/reflog.c:756
+#: builtin/reflog.c:759
 #, c-format
 msgid "invalid ref format: %s"
 msgstr "Ungültiges Format für Referenzen: %s"
 
-#: builtin/reflog.c:765
+#: builtin/reflog.c:768
 msgid "git reflog [ show | expire | delete | exists ]"
 msgstr "git reflog [ show | expire | delete | exists ]"
 
@@ -20313,19 +20703,18 @@ msgstr ""
 #: builtin/remote.c:186
 msgid "specifying a master branch makes no sense with --mirror"
 msgstr ""
-"Die Option --mirror kann nicht mit der Angabe eines Hauptbranches verwendet "
-"werden."
+"--mirror kann nicht mit der Angabe eines Hauptbranches verwendet werden"
 
 #: builtin/remote.c:188
 msgid "specifying branches to track makes sense only with fetch mirrors"
 msgstr ""
-"Die Angabe von zu folgenden Branches kann nur mit dem Anfordern von "
-"Spiegelarchiven verwendet werden."
+"die Angabe von zu folgenden Branches kann nur mit dem Anfordern von "
+"Spiegelarchiven verwendet werden"
 
 #: builtin/remote.c:195 builtin/remote.c:700
 #, c-format
 msgid "remote %s already exists."
-msgstr "externes Repository %s existiert bereits"
+msgstr "externes Repository %s existiert bereits."
 
 #: builtin/remote.c:240
 #, c-format
@@ -20364,7 +20753,7 @@ msgstr ""
 #: builtin/remote.c:691 builtin/remote.c:836 builtin/remote.c:946
 #, c-format
 msgid "No such remote: '%s'"
-msgstr "Kein solches Remote-Repository: '%s'"
+msgstr "Remote-Repository nicht gefunden: '%s'"
 
 #: builtin/remote.c:710
 #, c-format
@@ -20651,7 +21040,7 @@ msgstr "entferne veraltete Branches im Remote-Repository nach \"fetch\""
 #: builtin/remote.c:1521 builtin/remote.c:1577 builtin/remote.c:1647
 #, c-format
 msgid "No such remote '%s'"
-msgstr "Kein solches Remote-Repository '%s'"
+msgstr "Remote-Repository '%s' nicht gefunden"
 
 #: builtin/remote.c:1539
 msgid "add branch"
@@ -20688,8 +21077,7 @@ msgstr "URLs löschen"
 
 #: builtin/remote.c:1632
 msgid "--add --delete doesn't make sense"
-msgstr ""
-"Die Optionen --add und --delete können nicht gemeinsam verwendet werden."
+msgstr "--add und --delete können nicht gemeinsam verwendet werden"
 
 #: builtin/remote.c:1673
 #, c-format
@@ -20699,17 +21087,17 @@ msgstr "ungültiges altes URL Format: %s"
 #: builtin/remote.c:1681
 #, c-format
 msgid "No such URL found: %s"
-msgstr "Keine solche URL gefunden: %s"
+msgstr "URL nicht gefunden: %s"
 
 #: builtin/remote.c:1683
 msgid "Will not delete all non-push URLs"
 msgstr "Werde keine URLs entfernen, die nicht für \"push\" bestimmt sind"
 
-#: builtin/repack.c:25
+#: builtin/repack.c:26
 msgid "git repack [<options>]"
 msgstr "git repack [<Optionen>]"
 
-#: builtin/repack.c:30
+#: builtin/repack.c:31
 msgid ""
 "Incremental repacks are incompatible with bitmap indexes.  Use\n"
 "--no-write-bitmap-index or disable the pack.writebitmaps configuration."
@@ -20718,124 +21106,124 @@ msgstr ""
 "--no-write-bitmap-index oder deaktivieren Sie die pack.writebitmaps\n"
 "Konfiguration."
 
-#: builtin/repack.c:197
+#: builtin/repack.c:198
 msgid "could not start pack-objects to repack promisor objects"
 msgstr ""
 "Konnte 'pack-objects' für das Neupacken von Objekten aus partiell geklonten\n"
 "Remote-Repositories nicht starten."
 
-#: builtin/repack.c:268 builtin/repack.c:447
+#: builtin/repack.c:270 builtin/repack.c:446
 msgid "repack: Expecting full hex object ID lines only from pack-objects."
 msgstr ""
 "repack: Erwarte Zeilen mit vollständiger Hex-Objekt-ID nur von pack-objects."
 
-#: builtin/repack.c:295
+#: builtin/repack.c:294
 msgid "could not finish pack-objects to repack promisor objects"
 msgstr ""
 "Konnte 'pack-objects' für das Neupacken von Objekten aus partiell geklonten\n"
 "Remote-Repositories nicht abschließen."
 
-#: builtin/repack.c:323
+#: builtin/repack.c:322
 msgid "pack everything in a single pack"
 msgstr "alles in eine einzige Pack-Datei packen"
 
-#: builtin/repack.c:325
+#: builtin/repack.c:324
 msgid "same as -a, and turn unreachable objects loose"
 msgstr "genau wie -a, unerreichbare Objekte werden aber nicht gelöscht"
 
-#: builtin/repack.c:328
+#: builtin/repack.c:327
 msgid "remove redundant packs, and run git-prune-packed"
 msgstr "redundante Pakete entfernen und \"git-prune-packed\" ausführen"
 
-#: builtin/repack.c:330
+#: builtin/repack.c:329
 msgid "pass --no-reuse-delta to git-pack-objects"
 msgstr "--no-reuse-delta an git-pack-objects übergeben"
 
-#: builtin/repack.c:332
+#: builtin/repack.c:331
 msgid "pass --no-reuse-object to git-pack-objects"
 msgstr "--no-reuse-object an git-pack-objects übergeben"
 
-#: builtin/repack.c:334
+#: builtin/repack.c:333
 msgid "do not run git-update-server-info"
 msgstr "git-update-server-info nicht ausführen"
 
-#: builtin/repack.c:337
+#: builtin/repack.c:336
 msgid "pass --local to git-pack-objects"
 msgstr "--local an git-pack-objects übergeben"
 
-#: builtin/repack.c:339
+#: builtin/repack.c:338
 msgid "write bitmap index"
 msgstr "Bitmap-Index schreiben"
 
-#: builtin/repack.c:341
+#: builtin/repack.c:340
 msgid "pass --delta-islands to git-pack-objects"
 msgstr "--delta-islands an git-pack-objects übergeben"
 
-#: builtin/repack.c:342
+#: builtin/repack.c:341
 msgid "approxidate"
 msgstr "Datumsangabe"
 
-#: builtin/repack.c:343
+#: builtin/repack.c:342
 msgid "with -A, do not loosen objects older than this"
 msgstr "mit -A, keine Objekte älter als dieses Datum löschen"
 
-#: builtin/repack.c:345
+#: builtin/repack.c:344
 msgid "with -a, repack unreachable objects"
 msgstr "mit -a, nicht erreichbare Objekte neu packen"
 
-#: builtin/repack.c:347
+#: builtin/repack.c:346
 msgid "size of the window used for delta compression"
 msgstr "Größe des Fensters für die Delta-Kompression"
 
-#: builtin/repack.c:348 builtin/repack.c:354
+#: builtin/repack.c:347 builtin/repack.c:353
 msgid "bytes"
 msgstr "Bytes"
 
-#: builtin/repack.c:349
+#: builtin/repack.c:348
 msgid "same as the above, but limit memory size instead of entries count"
 msgstr ""
-"gleiches wie oben, aber die Speichergröße anstatt der\n"
-"Anzahl der Einträge limitieren"
+"gleiches wie oben, aber die Speichergröße statt der Anzahl der Einträge "
+"limitieren"
 
-#: builtin/repack.c:351
+#: builtin/repack.c:350
 msgid "limits the maximum delta depth"
 msgstr "die maximale Delta-Tiefe limitieren"
 
-#: builtin/repack.c:353
+#: builtin/repack.c:352
 msgid "limits the maximum number of threads"
 msgstr "maximale Anzahl von Threads limitieren"
 
-#: builtin/repack.c:355
+#: builtin/repack.c:354
 msgid "maximum size of each packfile"
 msgstr "maximale Größe für jede Paketdatei"
 
-#: builtin/repack.c:357
+#: builtin/repack.c:356
 msgid "repack objects in packs marked with .keep"
 msgstr ""
 "Objekte umpacken, die sich in mit .keep markierten Pack-Dateien befinden"
 
-#: builtin/repack.c:359
+#: builtin/repack.c:358
 msgid "do not repack this pack"
 msgstr "dieses Paket nicht neu packen"
 
-#: builtin/repack.c:369
+#: builtin/repack.c:368
 msgid "cannot delete packs in a precious-objects repo"
 msgstr "kann Pack-Dateien in precious-objects Repository nicht löschen"
 
-#: builtin/repack.c:373
+#: builtin/repack.c:372
 msgid "--keep-unreachable and -A are incompatible"
 msgstr "--keep-unreachable und -A sind inkompatibel"
 
-#: builtin/repack.c:456
+#: builtin/repack.c:455
 msgid "Nothing new to pack."
 msgstr "Nichts Neues zum Packen."
 
-#: builtin/repack.c:486
+#: builtin/repack.c:485
 #, c-format
 msgid "missing required file: %s"
 msgstr "benötigte Datei fehlt: %s"
 
-#: builtin/repack.c:488
+#: builtin/repack.c:487
 #, c-format
 msgid "could not unlink: %s"
 msgstr "konnte nicht löschen: %s"
@@ -20986,7 +21374,7 @@ msgid ""
 "instead of --graft"
 msgstr ""
 "Der ursprüngliche Commit '%s' enthält Merge-Tag '%s', der verworfen\n"
-"wird; benutzen Sie --edit anstatt --graft"
+"wird; benutzen Sie --edit statt --graft"
 
 #: builtin/replace.c:469
 #, c-format
@@ -21170,8 +21558,8 @@ msgstr "HEAD ist jetzt bei %s"
 msgid "Cannot do a %s reset in the middle of a merge."
 msgstr "Kann keinen '%s'-Reset durchführen, während ein Merge im Gange ist."
 
-#: builtin/reset.c:295 builtin/stash.c:520 builtin/stash.c:594
-#: builtin/stash.c:618
+#: builtin/reset.c:295 builtin/stash.c:587 builtin/stash.c:661
+#: builtin/stash.c:685
 msgid "be quiet, only report errors"
 msgstr "weniger Ausgaben, nur Fehler melden"
 
@@ -21256,20 +21644,20 @@ msgstr "Konnte Index-Datei nicht zu Commit '%s' setzen."
 msgid "Could not write new index file."
 msgstr "Konnte neue Index-Datei nicht schreiben."
 
-#: builtin/rev-list.c:499
+#: builtin/rev-list.c:534
 msgid "cannot combine --exclude-promisor-objects and --missing"
 msgstr ""
 "--exclude-promisor-objects und --missing können nicht kombiniert werden."
 
-#: builtin/rev-list.c:560
+#: builtin/rev-list.c:595
 msgid "object filtering requires --objects"
 msgstr "Das Filtern von Objekten erfordert --objects."
 
-#: builtin/rev-list.c:610
+#: builtin/rev-list.c:651
 msgid "rev-list does not support display of notes"
 msgstr "rev-list unterstützt keine Anzeige von Notizen"
 
-#: builtin/rev-list.c:615
+#: builtin/rev-list.c:656
 msgid "marked counting is incompatible with --objects"
 msgstr "markiertes Zählen ist inkompatibel mit der Option --objects"
 
@@ -21518,53 +21906,53 @@ msgstr "git shortlog [<Optionen>] [<Commitbereich>] [[--] <Pfad>...]"
 msgid "git log --pretty=short | git shortlog [<options>]"
 msgstr "git log --pretty=short | git shortlog [<Optionen>]"
 
-#: builtin/shortlog.c:135
+#: builtin/shortlog.c:123
 msgid "using multiple --group options with stdin is not supported"
 msgstr "mehrere Optionen --group mit Standard-Eingabe wird nicht unterstützt"
 
-#: builtin/shortlog.c:145
+#: builtin/shortlog.c:133
 msgid "using --group=trailer with stdin is not supported"
 msgstr ""
 "Nutzung von --group=trailer mit Standard-Eingabe wird nicht unterstützt"
 
-#: builtin/shortlog.c:335
+#: builtin/shortlog.c:323
 #, c-format
 msgid "unknown group type: %s"
 msgstr "unbekannter Gruppen-Typ: %s"
 
-#: builtin/shortlog.c:363
-msgid "Group by committer rather than author"
-msgstr "über Commit-Ersteller anstatt Autor gruppieren"
+#: builtin/shortlog.c:351
+msgid "group by committer rather than author"
+msgstr "nach Commit-Ersteller statt Autor gruppieren"
 
-#: builtin/shortlog.c:366
+#: builtin/shortlog.c:354
 msgid "sort output according to the number of commits per author"
 msgstr "die Ausgabe entsprechend der Anzahl von Commits pro Autor sortieren"
 
-#: builtin/shortlog.c:368
-msgid "Suppress commit descriptions, only provides commit count"
+#: builtin/shortlog.c:356
+msgid "suppress commit descriptions, only provides commit count"
 msgstr "Commit-Beschreibungen unterdrücken, nur Anzahl der Commits liefern"
 
-#: builtin/shortlog.c:370
-msgid "Show the email address of each author"
-msgstr "die E-Mail-Adresse von jedem Autor anzeigen"
+#: builtin/shortlog.c:358
+msgid "show the email address of each author"
+msgstr "die E-Mail-Adresse jedes Autors anzeigen"
 
-#: builtin/shortlog.c:371
+#: builtin/shortlog.c:359
 msgid "<w>[,<i1>[,<i2>]]"
 msgstr "<w>[,<i1>[,<i2>]]"
 
-#: builtin/shortlog.c:372
-msgid "Linewrap output"
+#: builtin/shortlog.c:360
+msgid "linewrap output"
 msgstr "Ausgabe mit Zeilenumbrüchen"
 
-#: builtin/shortlog.c:374
+#: builtin/shortlog.c:362
 msgid "field"
 msgstr "Feld"
 
-#: builtin/shortlog.c:375
-msgid "Group by field"
-msgstr "Gruppieren über Feld"
+#: builtin/shortlog.c:363
+msgid "group by field"
+msgstr "Gruppieren nach Feld"
 
-#: builtin/shortlog.c:403
+#: builtin/shortlog.c:391
 msgid "too many arguments given outside repository"
 msgstr "zu viele Argumente außerhalb des Repositories angegeben"
 
@@ -21674,14 +22062,14 @@ msgstr "keine Branches angegeben, und HEAD ist ungültig"
 
 #: builtin/show-branch.c:738
 msgid "--reflog option needs one branch name"
-msgstr "Die Option --reflog benötigt einen Branchnamen."
+msgstr "die Option --reflog benötigt einen Branchnamen"
 
 #: builtin/show-branch.c:741
 #, c-format
 msgid "only %d entry can be shown at one time."
 msgid_plural "only %d entries can be shown at one time."
-msgstr[0] "nur %d Eintrag kann zur selben Zeit angezeigt werden"
-msgstr[1] "nur %d Einträge können zur selben Zeit angezeigt werden"
+msgstr[0] "nur %d Eintrag kann zur selben Zeit angezeigt werden."
+msgstr[1] "nur %d Einträge können zur selben Zeit angezeigt werden."
 
 #: builtin/show-branch.c:745
 #, c-format
@@ -21765,76 +22153,76 @@ msgstr ""
 msgid "git sparse-checkout (init|list|set|add|reapply|disable) <options>"
 msgstr "git sparse-checkout (init|list|set|add|reapply|disable) <Optionen>"
 
-#: builtin/sparse-checkout.c:50
+#: builtin/sparse-checkout.c:45
 msgid "git sparse-checkout list"
 msgstr "git sparse-checkout list"
 
-#: builtin/sparse-checkout.c:76
+#: builtin/sparse-checkout.c:71
 msgid "this worktree is not sparse (sparse-checkout file may not exist)"
 msgstr ""
 "dieses Arbeitsverzeichnis ist nicht partiell (Datei für partieller Checkout "
 "existiert eventuell nicht)"
 
-#: builtin/sparse-checkout.c:228
+#: builtin/sparse-checkout.c:223
 msgid "failed to create directory for sparse-checkout file"
 msgstr ""
 "Fehler beim Erstellen eines Verzeichnisses für Datei eines partiellen "
 "Checkouts"
 
-#: builtin/sparse-checkout.c:269
+#: builtin/sparse-checkout.c:264
 msgid "unable to upgrade repository format to enable worktreeConfig"
 msgstr ""
 "Repository-Format konnte nicht erweitert werden, um worktreeConfig zu "
 "aktivieren"
 
-#: builtin/sparse-checkout.c:271
+#: builtin/sparse-checkout.c:266
 msgid "failed to set extensions.worktreeConfig setting"
 msgstr "Einstellung für extensions.worktreeConfig konnte nicht gesetzt werden"
 
-#: builtin/sparse-checkout.c:288
+#: builtin/sparse-checkout.c:283
 msgid "git sparse-checkout init [--cone]"
 msgstr "git sparse-checkout init [--cone]"
 
-#: builtin/sparse-checkout.c:307
+#: builtin/sparse-checkout.c:302
 msgid "initialize the sparse-checkout in cone mode"
 msgstr "initialisiere den partiellen Checkout im Cone-Modus"
 
-#: builtin/sparse-checkout.c:344
+#: builtin/sparse-checkout.c:339
 #, c-format
 msgid "failed to open '%s'"
 msgstr "Fehler beim Öffnen von '%s'"
 
-#: builtin/sparse-checkout.c:401
+#: builtin/sparse-checkout.c:396
 #, c-format
 msgid "could not normalize path %s"
 msgstr "konnte Pfad '%s' nicht normalisieren"
 
-#: builtin/sparse-checkout.c:413
+#: builtin/sparse-checkout.c:408
 msgid "git sparse-checkout (set|add) (--stdin | <patterns>)"
 msgstr "git sparse-checkout (set|add) (--stdin | <Muster>)"
 
-#: builtin/sparse-checkout.c:438
+#: builtin/sparse-checkout.c:433
 #, c-format
 msgid "unable to unquote C-style string '%s'"
 msgstr "konnte Anführungszeichen von C-Style Zeichenkette '%s' nicht entfernen"
 
-#: builtin/sparse-checkout.c:492 builtin/sparse-checkout.c:516
+#: builtin/sparse-checkout.c:487 builtin/sparse-checkout.c:511
 msgid "unable to load existing sparse-checkout patterns"
 msgstr "konnte die existierenden Muster des partiellen Checkouts nicht laden"
 
-#: builtin/sparse-checkout.c:561
+#: builtin/sparse-checkout.c:556
 msgid "read patterns from standard in"
 msgstr "Muster von der Standard-Eingabe lesen"
 
-#: builtin/sparse-checkout.c:576
+#: builtin/sparse-checkout.c:571
 msgid "git sparse-checkout reapply"
 msgstr "git sparse-checkout reapply"
 
-#: builtin/sparse-checkout.c:595
+#: builtin/sparse-checkout.c:590
 msgid "git sparse-checkout disable"
 msgstr "git sparse-checkout disable"
 
-#: builtin/sparse-checkout.c:623
+#: builtin/sparse-checkout.c:618
 msgid "error while refreshing working directory"
 msgstr "Fehler während der Aktualisierung des Arbeitsverzeichnisses."
 
@@ -21924,156 +22312,168 @@ msgid "%s is not a valid reference"
 msgstr "'%s' ist kein gültiger Referenzname."
 
 #: builtin/stash.c:225
-msgid "git stash clear with parameters is unimplemented"
+msgid "git stash clear with arguments is unimplemented"
 msgstr "git stash clear mit Parametern ist nicht implementiert"
 
-#: builtin/stash.c:404
+#: builtin/stash.c:429
+#, c-format
+msgid ""
+"WARNING: Untracked file in way of tracked file!  Renaming\n"
+"            %s -> %s\n"
+"         to make room.\n"
+msgstr ""
+"WARNUNG: Nicht versionierte Datei im Weg von versionierter Datei! "
+"Umbenennung\n"
+"            %s -> %s\n"
+"         um Platz zu schaffen.\n"
+
+#: builtin/stash.c:490
 msgid "cannot apply a stash in the middle of a merge"
 msgstr "Kann Stash nicht anwenden, solange ein Merge im Gange ist"
 
-#: builtin/stash.c:415
+#: builtin/stash.c:501
 #, c-format
 msgid "could not generate diff %s^!."
 msgstr "Konnte keinen Diff erzeugen %s^!."
 
-#: builtin/stash.c:422
+#: builtin/stash.c:508
 msgid "conflicts in index. Try without --index."
 msgstr "Konflikte im Index. Versuchen Sie es ohne --index."
 
-#: builtin/stash.c:428
+#: builtin/stash.c:514
 msgid "could not save index tree"
 msgstr "Konnte Index-Verzeichnis nicht speichern"
 
-#: builtin/stash.c:437
+#: builtin/stash.c:523
 msgid "could not restore untracked files from stash"
 msgstr "Konnte unversionierte Dateien vom Stash nicht wiederherstellen."
 
-#: builtin/stash.c:451
+#: builtin/stash.c:537
 #, c-format
 msgid "Merging %s with %s"
 msgstr "Führe %s mit %s zusammen"
 
-#: builtin/stash.c:461
+#: builtin/stash.c:547
 msgid "Index was not unstashed."
 msgstr "Index wurde nicht aus dem Stash zurückgeladen."
 
-#: builtin/stash.c:522 builtin/stash.c:620
+#: builtin/stash.c:589 builtin/stash.c:687
 msgid "attempt to recreate the index"
 msgstr "Versuche Index wiederherzustellen."
 
-#: builtin/stash.c:566
+#: builtin/stash.c:633
 #, c-format
 msgid "Dropped %s (%s)"
 msgstr "%s (%s) gelöscht"
 
-#: builtin/stash.c:569
+#: builtin/stash.c:636
 #, c-format
 msgid "%s: Could not drop stash entry"
 msgstr "%s: Konnte Stash-Eintrag nicht löschen"
 
-#: builtin/stash.c:582
+#: builtin/stash.c:649
 #, c-format
 msgid "'%s' is not a stash reference"
 msgstr "'%s' ist keine Stash-Referenz"
 
-#: builtin/stash.c:632
+#: builtin/stash.c:699
 msgid "The stash entry is kept in case you need it again."
 msgstr ""
 "Der Stash-Eintrag wird für den Fall behalten, dass Sie diesen nochmal "
 "benötigen."
 
-#: builtin/stash.c:655
+#: builtin/stash.c:722
 msgid "No branch name specified"
 msgstr "Kein Branchname spezifiziert"
 
-#: builtin/stash.c:799 builtin/stash.c:836
+#: builtin/stash.c:866 builtin/stash.c:903
 #, c-format
 msgid "Cannot update %s with %s"
 msgstr "Kann nicht %s mit %s aktualisieren."
 
-#: builtin/stash.c:817 builtin/stash.c:1471 builtin/stash.c:1536
+#: builtin/stash.c:884 builtin/stash.c:1538 builtin/stash.c:1603
 msgid "stash message"
 msgstr "Stash-Beschreibung"
 
-#: builtin/stash.c:827
+#: builtin/stash.c:894
 msgid "\"git stash store\" requires one <commit> argument"
 msgstr "\"git stash store\" erwartet ein Argument <Commit>"
 
-#: builtin/stash.c:1042
+#: builtin/stash.c:1109
 msgid "No changes selected"
 msgstr "Keine Änderungen ausgewählt"
 
-#: builtin/stash.c:1142
+#: builtin/stash.c:1209
 msgid "You do not have the initial commit yet"
 msgstr "Sie haben bisher noch keinen initialen Commit"
 
-#: builtin/stash.c:1169
+#: builtin/stash.c:1236
 msgid "Cannot save the current index state"
 msgstr "Kann den aktuellen Zustand des Index nicht speichern"
 
-#: builtin/stash.c:1178
+#: builtin/stash.c:1245
 msgid "Cannot save the untracked files"
 msgstr "Kann die unversionierten Dateien nicht speichern"
 
-#: builtin/stash.c:1189 builtin/stash.c:1198
+#: builtin/stash.c:1256 builtin/stash.c:1265
 msgid "Cannot save the current worktree state"
 msgstr "Kann den aktuellen Zustand des Arbeitsverzeichnisses nicht speichern"
 
-#: builtin/stash.c:1226
+#: builtin/stash.c:1293
 msgid "Cannot record working tree state"
 msgstr "Kann Zustand des Arbeitsverzeichnisses nicht aufzeichnen"
 
-#: builtin/stash.c:1275
+#: builtin/stash.c:1342
 msgid "Can't use --patch and --include-untracked or --all at the same time"
 msgstr ""
 "Kann nicht gleichzeitig --patch und --include-untracked oder --all verwenden"
 
-#: builtin/stash.c:1291
+#: builtin/stash.c:1358
 msgid "Did you forget to 'git add'?"
 msgstr "Haben Sie vielleicht 'git add' vergessen?"
 
-#: builtin/stash.c:1306
+#: builtin/stash.c:1373
 msgid "No local changes to save"
 msgstr "Keine lokalen Änderungen zum Speichern"
 
-#: builtin/stash.c:1313
+#: builtin/stash.c:1380
 msgid "Cannot initialize stash"
 msgstr "Kann \"stash\" nicht initialisieren"
 
-#: builtin/stash.c:1328
+#: builtin/stash.c:1395
 msgid "Cannot save the current status"
 msgstr "Kann den aktuellen Status nicht speichern"
 
-#: builtin/stash.c:1333
+#: builtin/stash.c:1400
 #, c-format
 msgid "Saved working directory and index state %s"
 msgstr "Arbeitsverzeichnis und Index-Status %s gespeichert."
 
-#: builtin/stash.c:1423
+#: builtin/stash.c:1490
 msgid "Cannot remove worktree changes"
 msgstr "Kann Änderungen im Arbeitsverzeichnis nicht löschen"
 
-#: builtin/stash.c:1462 builtin/stash.c:1527
+#: builtin/stash.c:1529 builtin/stash.c:1594
 msgid "keep index"
 msgstr "behalte Index"
 
-#: builtin/stash.c:1464 builtin/stash.c:1529
+#: builtin/stash.c:1531 builtin/stash.c:1596
 msgid "stash in patch mode"
 msgstr "Stash in Patch-Modus"
 
-#: builtin/stash.c:1465 builtin/stash.c:1530
+#: builtin/stash.c:1532 builtin/stash.c:1597
 msgid "quiet mode"
 msgstr "weniger Ausgaben"
 
-#: builtin/stash.c:1467 builtin/stash.c:1532
+#: builtin/stash.c:1534 builtin/stash.c:1599
 msgid "include untracked files in stash"
 msgstr "unversionierte Dateien in Stash einbeziehen"
 
-#: builtin/stash.c:1469 builtin/stash.c:1534
+#: builtin/stash.c:1536 builtin/stash.c:1601
 msgid "include ignore files"
 msgstr "ignorierte Dateien einbeziehen"
 
-#: builtin/stash.c:1569
+#: builtin/stash.c:1636
 msgid ""
 "the stash.useBuiltin support has been removed!\n"
 "See its entry in 'git help config' for details."
@@ -22154,13 +22554,12 @@ msgstr ""
 "."
 
 #: builtin/submodule--helper.c:565
-msgid "Suppress output of entering each submodule command"
-msgstr ""
-"Ausgaben beim Betreten und der Befehlsausführung in einem Submodul "
-"unterdrücken"
+msgid "suppress output of entering each submodule command"
+msgstr "Ausgaben beim Betreten eines Submodul-Befehls unterdrücken"
 
-#: builtin/submodule--helper.c:567 builtin/submodule--helper.c:1487
-msgid "Recurse into nested submodules"
+#: builtin/submodule--helper.c:567 builtin/submodule--helper.c:888
+#: builtin/submodule--helper.c:1487
+msgid "recurse into nested submodules"
 msgstr "Rekursion in verschachtelte Submodule durchführen"
 
 #: builtin/submodule--helper.c:572
@@ -22200,7 +22599,7 @@ msgstr ""
 "Konfiguration."
 
 #: builtin/submodule--helper.c:709
-msgid "Suppress output for initializing a submodule"
+msgid "suppress output for initializing a submodule"
 msgstr "Ausgaben bei Initialisierung eines Submoduls unterdrücken"
 
 #: builtin/submodule--helper.c:714
@@ -22223,19 +22622,15 @@ msgid "failed to recurse into submodule '%s'"
 msgstr "Fehler bei Rekursion in Submodul '%s'."
 
 #: builtin/submodule--helper.c:886 builtin/submodule--helper.c:1623
-msgid "Suppress submodule status output"
-msgstr "Ausgabe über Submodul-Status unterdrücken"
+msgid "suppress submodule status output"
+msgstr "Ausgabe des Submodul-Status unterdrücken"
 
 #: builtin/submodule--helper.c:887
 msgid ""
-"Use commit stored in the index instead of the one stored in the submodule "
+"use commit stored in the index instead of the one stored in the submodule "
 "HEAD"
 msgstr ""
-"Benutze den Commit, der im Index gespeichert ist, statt den im Submodul HEAD"
-
-#: builtin/submodule--helper.c:888
-msgid "recurse into nested submodules"
-msgstr "Rekursion in verschachtelte Submodule durchführen"
+"den Commit benutzen, der im Index gespeichert ist, statt den im Submodul HEAD"
 
 #: builtin/submodule--helper.c:893
 msgid "git submodule status [--quiet] [--cached] [--recursive] [<path>...]"
@@ -22321,7 +22716,7 @@ msgid "failed to update remote for submodule '%s'"
 msgstr "Fehler beim Aktualisieren des Remote-Repositories für Submodul '%s'"
 
 #: builtin/submodule--helper.c:1485
-msgid "Suppress output of synchronizing submodule url"
+msgid "suppress output of synchronizing submodule url"
 msgstr "Ausgaben bei der Synchronisierung der Submodul-URLs unterdrücken"
 
 #: builtin/submodule--helper.c:1492
@@ -22368,13 +22763,13 @@ msgid "Submodule '%s' (%s) unregistered for path '%s'\n"
 msgstr "Submodul '%s' (%s) für Pfad '%s' ausgetragen.\n"
 
 #: builtin/submodule--helper.c:1624
-msgid "Remove submodule working trees even if they contain local changes"
+msgid "remove submodule working trees even if they contain local changes"
 msgstr ""
 "Arbeitsverzeichnisse von Submodulen löschen, auch wenn lokale Änderungen "
 "vorliegen"
 
 #: builtin/submodule--helper.c:1625
-msgid "Unregister all submodules"
+msgid "unregister all submodules"
 msgstr "alle Submodule austragen"
 
 #: builtin/submodule--helper.c:1630
@@ -22527,11 +22922,10 @@ msgid "rebase, merge, checkout or none"
 msgstr "rebase, merge, checkout oder none"
 
 #: builtin/submodule--helper.c:2340
-msgid "Create a shallow clone truncated to the specified number of revisions"
+msgid "create a shallow clone truncated to the specified number of revisions"
 msgstr ""
-"Erstellung eines Klons mit unvollständiger Historie (shallow), abgeschnitten "
-"bei\n"
-"der angegebenen Anzahl von Commits."
+"einen Klon mit unvollständiger Historie (shallow) erstellen, abgeschnitten "
+"bei der angegebenen Anzahl von Commits"
 
 #: builtin/submodule--helper.c:2343
 msgid "parallel jobs"
@@ -22605,7 +22999,7 @@ msgstr ""
 "Arbeitsverzeichnis befindet."
 
 #: builtin/submodule--helper.c:2681
-msgid "Suppress output for setting url of a submodule"
+msgid "suppress output for setting url of a submodule"
 msgstr "Ausgaben beim Setzen der URL eines Submoduls unterdrücken"
 
 #: builtin/submodule--helper.c:2685
@@ -22638,7 +23032,7 @@ msgstr "Option --branch oder --default erforderlich"
 msgid "--branch and --default are mutually exclusive"
 msgstr "--branch und --default schließen sich gegenseitig aus"
 
-#: builtin/submodule--helper.c:2792 git.c:438 git.c:711
+#: builtin/submodule--helper.c:2792 git.c:441 git.c:714
 #, c-format
 msgid "%s doesn't support --super-prefix"
 msgstr "%s unterstützt kein --super-prefix"
@@ -22710,12 +23104,12 @@ msgstr "git tag -v [--format=<Format>] <Tagname>..."
 msgid "tag '%s' not found."
 msgstr "Tag '%s' nicht gefunden."
 
-#: builtin/tag.c:105
+#: builtin/tag.c:124
 #, c-format
 msgid "Deleted tag '%s' (was %s)\n"
 msgstr "Tag '%s' gelöscht (war %s)\n"
 
-#: builtin/tag.c:135
+#: builtin/tag.c:159
 #, c-format
 msgid ""
 "\n"
@@ -22728,7 +23122,7 @@ msgstr ""
 "  %s\n"
 "ein. Zeilen, die mit '%c' beginnen, werden ignoriert.\n"
 
-#: builtin/tag.c:139
+#: builtin/tag.c:163
 #, c-format
 msgid ""
 "\n"
@@ -22743,15 +23137,11 @@ msgstr ""
 "ein. Zeilen, die mit '%c' beginnen, werden behalten; Sie dürfen diese\n"
 "selbst entfernen wenn Sie möchten.\n"
 
-#: builtin/tag.c:198
+#: builtin/tag.c:230
 msgid "unable to sign the tag"
 msgstr "konnte Tag nicht signieren"
 
-#: builtin/tag.c:200
-msgid "unable to write tag file"
-msgstr "konnte Tag-Datei nicht schreiben"
-
-#: builtin/tag.c:216
+#: builtin/tag.c:248
 #, c-format
 msgid ""
 "You have created a nested tag. The object referred to by your new tag is\n"
@@ -22765,138 +23155,134 @@ msgstr ""
 "\n"
 "\tgit tag -f %s %s^{}"
 
-#: builtin/tag.c:232
+#: builtin/tag.c:264
 msgid "bad object type."
 msgstr "ungültiger Objekt-Typ"
 
-#: builtin/tag.c:285
+#: builtin/tag.c:317
 msgid "no tag message?"
 msgstr "keine Tag-Beschreibung?"
 
-#: builtin/tag.c:292
+#: builtin/tag.c:324
 #, c-format
 msgid "The tag message has been left in %s\n"
 msgstr "Die Tag-Beschreibung wurde in %s gelassen\n"
 
-#: builtin/tag.c:403
+#: builtin/tag.c:435
 msgid "list tag names"
 msgstr "Tagnamen auflisten"
 
-#: builtin/tag.c:405
+#: builtin/tag.c:437
 msgid "print <n> lines of each tag message"
 msgstr "<n> Zeilen jeder Tag-Beschreibung anzeigen"
 
-#: builtin/tag.c:407
+#: builtin/tag.c:439
 msgid "delete tags"
 msgstr "Tags löschen"
 
-#: builtin/tag.c:408
+#: builtin/tag.c:440
 msgid "verify tags"
 msgstr "Tags überprüfen"
 
-#: builtin/tag.c:410
+#: builtin/tag.c:442
 msgid "Tag creation options"
 msgstr "Optionen für Erstellung von Tags"
 
-#: builtin/tag.c:412
+#: builtin/tag.c:444
 msgid "annotated tag, needs a message"
 msgstr "annotiertes Tag, benötigt eine Beschreibung"
 
-#: builtin/tag.c:414
+#: builtin/tag.c:446
 msgid "tag message"
 msgstr "Tag-Beschreibung"
 
-#: builtin/tag.c:416
+#: builtin/tag.c:448
 msgid "force edit of tag message"
 msgstr "Bearbeitung der Tag-Beschreibung erzwingen"
 
-#: builtin/tag.c:417
+#: builtin/tag.c:449
 msgid "annotated and GPG-signed tag"
 msgstr "annotiertes und GPG-signiertes Tag"
 
-#: builtin/tag.c:420
+#: builtin/tag.c:452
 msgid "use another key to sign the tag"
 msgstr "einen anderen Schlüssel verwenden, um das Tag zu signieren"
 
-#: builtin/tag.c:421
+#: builtin/tag.c:453
 msgid "replace the tag if exists"
 msgstr "das Tag ersetzen, wenn es existiert"
 
-#: builtin/tag.c:422 builtin/update-ref.c:505
+#: builtin/tag.c:454 builtin/update-ref.c:505
 msgid "create a reflog"
 msgstr "Reflog erstellen"
 
-#: builtin/tag.c:424
+#: builtin/tag.c:456
 msgid "Tag listing options"
 msgstr "Optionen für Auflistung der Tags"
 
-#: builtin/tag.c:425
+#: builtin/tag.c:457
 msgid "show tag list in columns"
 msgstr "Liste der Tags in Spalten anzeigen"
 
-#: builtin/tag.c:426 builtin/tag.c:428
+#: builtin/tag.c:458 builtin/tag.c:460
 msgid "print only tags that contain the commit"
 msgstr "nur Tags ausgeben, die diesen Commit beinhalten"
 
-#: builtin/tag.c:427 builtin/tag.c:429
+#: builtin/tag.c:459 builtin/tag.c:461
 msgid "print only tags that don't contain the commit"
 msgstr "nur Tags ausgeben, die diesen Commit nicht enthalten"
 
-#: builtin/tag.c:430
+#: builtin/tag.c:462
 msgid "print only tags that are merged"
 msgstr "nur Tags ausgeben, die gemerged wurden"
 
-#: builtin/tag.c:431
+#: builtin/tag.c:463
 msgid "print only tags that are not merged"
 msgstr "nur Tags ausgeben, die nicht gemerged wurden"
 
-#: builtin/tag.c:435
+#: builtin/tag.c:467
 msgid "print only tags of the object"
 msgstr "nur Tags von dem Objekt ausgeben"
 
-#: builtin/tag.c:483
+#: builtin/tag.c:515
 msgid "--column and -n are incompatible"
 msgstr "--column und -n sind inkompatibel"
 
-#: builtin/tag.c:505
+#: builtin/tag.c:537
 msgid "-n option is only allowed in list mode"
-msgstr "Die Option -n ist nur im Listenmodus erlaubt."
+msgstr "die Option -n ist nur im Listenmodus erlaubt"
 
-#: builtin/tag.c:507
+#: builtin/tag.c:539
 msgid "--contains option is only allowed in list mode"
-msgstr "Die Option --contains ist nur im Listenmodus erlaubt."
+msgstr "--contains ist nur im Listenmodus erlaubt"
 
-#: builtin/tag.c:509
+#: builtin/tag.c:541
 msgid "--no-contains option is only allowed in list mode"
-msgstr "Die Option --no-contains ist nur im Listenmodus erlaubt."
+msgstr "--no-contains ist nur im Listenmodus erlaubt"
 
-#: builtin/tag.c:511
+#: builtin/tag.c:543
 msgid "--points-at option is only allowed in list mode"
-msgstr "Die Option --points-at ist nur im Listenmodus erlaubt."
+msgstr "--points-at ist nur im Listenmodus erlaubt"
 
-#: builtin/tag.c:513
+#: builtin/tag.c:545
 msgid "--merged and --no-merged options are only allowed in list mode"
-msgstr "Die Optionen --merged und --no-merged sind nur im Listenmodus erlaubt."
+msgstr "--merged und --no-merged sind nur im Listenmodus erlaubt"
 
-#: builtin/tag.c:524
+#: builtin/tag.c:556
 msgid "only one -F or -m option is allowed."
 msgstr "nur eine -F oder -m Option ist erlaubt."
 
-#: builtin/tag.c:543
-msgid "too many params"
-msgstr "zu viele Parameter"
-
-#: builtin/tag.c:549
+#: builtin/tag.c:581
 #, c-format
 msgid "'%s' is not a valid tag name."
 msgstr "'%s' ist kein gültiger Tagname."
 
-#: builtin/tag.c:554
+#: builtin/tag.c:586
 #, c-format
 msgid "tag '%s' already exists"
 msgstr "Tag '%s' existiert bereits"
 
-#: builtin/tag.c:585
+#: builtin/tag.c:617
 #, c-format
 msgid "Updated tag '%s' (was %s)\n"
 msgstr "Tag '%s' aktualisiert (war %s)\n"
@@ -23122,24 +23508,24 @@ msgid ""
 "core.splitIndex is set to false; remove or change it, if you really want to "
 "enable split index"
 msgstr ""
-"core.splitIndex ist auf 'false' gesetzt. Entfernen oder ändern Sie dies,\n"
-"wenn sie wirklich das Splitting des Index aktivieren möchten."
+"core.splitIndex ist auf 'false' gesetzt; entfernen oder ändern Sie dies,\n"
+"wenn sie wirklich das Splitting des Index aktivieren möchten"
 
 #: builtin/update-index.c:1182
 msgid ""
 "core.splitIndex is set to true; remove or change it, if you really want to "
 "disable split index"
 msgstr ""
-"core.splitIndex ist auf 'true' gesetzt. Entfernen oder ändern Sie dies,\n"
-"wenn Sie wirklich das Splitting des Index deaktivieren möchten."
+"core.splitIndex ist auf 'true' gesetzt; entfernen oder ändern Sie dies,\n"
+"wenn Sie wirklich das Splitting des Index deaktivieren möchten"
 
 #: builtin/update-index.c:1194
 msgid ""
 "core.untrackedCache is set to true; remove or change it, if you really want "
 "to disable the untracked cache"
 msgstr ""
-"core.untrackedCache ist auf 'true' gesetzt. Entfernen oder ändern Sie dies,\n"
-"wenn Sie wirklich den Cache für unversionierte Dateien deaktivieren möchten."
+"core.untrackedCache ist auf 'true' gesetzt; entfernen oder ändern Sie dies,\n"
+"wenn Sie wirklich den Cache für unversionierte Dateien deaktivieren möchten"
 
 #: builtin/update-index.c:1198
 msgid "Untracked cache disabled"
@@ -23150,9 +23536,9 @@ msgid ""
 "core.untrackedCache is set to false; remove or change it, if you really want "
 "to enable the untracked cache"
 msgstr ""
-"core.untrackedCache ist auf 'false' gesetzt. Entfernen oder ändern Sie "
+"core.untrackedCache ist auf 'false' gesetzt; entfernen oder ändern Sie "
 "dies,\n"
-"wenn sie wirklich den Cache für unversionierte Dateien aktivieren möchten."
+"wenn sie wirklich den Cache für unversionierte Dateien aktivieren möchten"
 
 #: builtin/update-index.c:1210
 #, c-format
@@ -23162,9 +23548,9 @@ msgstr "Cache für unversionierte Dateien für '%s' aktiviert"
 #: builtin/update-index.c:1218
 msgid "core.fsmonitor is unset; set it if you really want to enable fsmonitor"
 msgstr ""
-"core.fsmonitor nicht gesetzt. Setzen Sie es, wenn Sie den Dateisystem-"
+"core.fsmonitor nicht gesetzt; setzen Sie es, wenn Sie den Dateisystem-"
 "Monitor\n"
-"wirklich aktivieren möchten."
+"wirklich aktivieren möchten"
 
 #: builtin/update-index.c:1222
 msgid "fsmonitor enabled"
@@ -23174,7 +23560,7 @@ msgstr "Dateisystem-Monitor aktiviert"
 msgid ""
 "core.fsmonitor is set; remove it if you really want to disable fsmonitor"
 msgstr ""
-"core.fsmonitor ist gesetzt. Löschen Sie es, wenn Sie den Dateisystem-"
+"core.fsmonitor ist gesetzt; löschen Sie es, wenn Sie den Dateisystem-"
 "Monitor\n"
 "wirklich deaktivieren möchten."
 
@@ -23273,89 +23659,63 @@ msgstr "git verify-tag [-v | --verbose] [--format=<Format>] <Tag>..."
 msgid "print tag contents"
 msgstr "Tag-Inhalte ausgeben"
 
-#: builtin/worktree.c:17
+#: builtin/worktree.c:18
 msgid "git worktree add [<options>] <path> [<commit-ish>]"
 msgstr "git worktree add [<Optionen>] <Pfad> [<Commit-Angabe>]"
 
-#: builtin/worktree.c:18
+#: builtin/worktree.c:19
 msgid "git worktree list [<options>]"
 msgstr "git worktree list [<Optionen>]"
 
-#: builtin/worktree.c:19
+#: builtin/worktree.c:20
 msgid "git worktree lock [<options>] <path>"
 msgstr "git worktree lock [<Optionen>] <Pfad>"
 
-#: builtin/worktree.c:20
+#: builtin/worktree.c:21
 msgid "git worktree move <worktree> <new-path>"
 msgstr "git worktree move <Arbeitsverzeichnis> <neuer-Pfad>"
 
-#: builtin/worktree.c:21
+#: builtin/worktree.c:22
 msgid "git worktree prune [<options>]"
 msgstr "git worktree prune [<Optionen>]"
 
-#: builtin/worktree.c:22
+#: builtin/worktree.c:23
 msgid "git worktree remove [<options>] <worktree>"
 msgstr "git worktree remove [<Optionen>] <Arbeitsverzeichnis>"
 
-#: builtin/worktree.c:23
+#: builtin/worktree.c:24
 msgid "git worktree unlock <path>"
 msgstr "git worktree unlock <Pfad>"
 
-#: builtin/worktree.c:60 builtin/worktree.c:973
+#: builtin/worktree.c:61 builtin/worktree.c:933
 #, c-format
 msgid "failed to delete '%s'"
 msgstr "Fehler beim Löschen von '%s'"
 
-#: builtin/worktree.c:85
-msgid "not a valid directory"
-msgstr "kein gültiges Verzeichnis"
-
-#: builtin/worktree.c:91
-msgid "gitdir file does not exist"
-msgstr "gitdir-Datei existiert nicht"
-
-#: builtin/worktree.c:96 builtin/worktree.c:105
-#, c-format
-msgid "unable to read gitdir file (%s)"
-msgstr "konnte gitdir-Datei nicht lesen (%s)"
-
-#: builtin/worktree.c:115
-#, c-format
-msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
-msgstr "read() zu kurz (%<PRIuMAX> Bytes erwartet, %<PRIuMAX> gelesen)"
-
-#: builtin/worktree.c:123
-msgid "invalid gitdir file"
-msgstr "ungültige gitdir-Datei"
-
-#: builtin/worktree.c:131
-msgid "gitdir file points to non-existent location"
-msgstr "gitdir-Datei verweist auf nicht existierenden Ort"
-
-#: builtin/worktree.c:146
+#: builtin/worktree.c:74
 #, c-format
 msgid "Removing %s/%s: %s"
 msgstr "Entferne %s/%s: %s"
 
-#: builtin/worktree.c:221
+#: builtin/worktree.c:149
 msgid "report pruned working trees"
 msgstr "entfernte Arbeitsverzeichnisse ausgeben"
 
-#: builtin/worktree.c:223
+#: builtin/worktree.c:151
 msgid "expire working trees older than <time>"
 msgstr "Arbeitsverzeichnisse älter als <Zeit> verfallen lassen"
 
-#: builtin/worktree.c:293
+#: builtin/worktree.c:221
 #, c-format
 msgid "'%s' already exists"
 msgstr "'%s' existiert bereits"
 
-#: builtin/worktree.c:302
+#: builtin/worktree.c:230
 #, c-format
 msgid "unusable worktree destination '%s'"
 msgstr "nicht nutzbares Ziel des Arbeitsverzeichnisses '%s'"
 
-#: builtin/worktree.c:307
+#: builtin/worktree.c:235
 #, c-format
 msgid ""
 "'%s' is a missing but locked worktree;\n"
@@ -23365,7 +23725,7 @@ msgstr ""
 "Benutzen Sie '%s -f -f' zum Überschreiben, oder 'unlock' und 'prune'\n"
 "oder 'remove' zum Löschen."
 
-#: builtin/worktree.c:309
+#: builtin/worktree.c:237
 #, c-format
 msgid ""
 "'%s' is a missing but already registered worktree;\n"
@@ -23375,124 +23735,137 @@ msgstr ""
 "Benutzen Sie '%s -f' zum Überschreiben, oder 'prune' oder 'remove' zum\n"
 "Löschen."
 
-#: builtin/worktree.c:360
+#: builtin/worktree.c:288
 #, c-format
 msgid "could not create directory of '%s'"
 msgstr "Konnte Verzeichnis '%s' nicht erstellen."
 
-#: builtin/worktree.c:494 builtin/worktree.c:500
+#: builtin/worktree.c:422 builtin/worktree.c:428
 #, c-format
 msgid "Preparing worktree (new branch '%s')"
 msgstr "Bereite Arbeitsverzeichnis vor (neuer Branch '%s')"
 
-#: builtin/worktree.c:496
+#: builtin/worktree.c:424
 #, c-format
 msgid "Preparing worktree (resetting branch '%s'; was at %s)"
 msgstr "Bereite Arbeitsverzeichnis vor (setze Branch '%s' um; war bei %s)"
 
-#: builtin/worktree.c:505
+#: builtin/worktree.c:433
 #, c-format
 msgid "Preparing worktree (checking out '%s')"
 msgstr "Bereite Arbeitsverzeichnis vor (checke '%s' aus)"
 
-#: builtin/worktree.c:511
+#: builtin/worktree.c:439
 #, c-format
 msgid "Preparing worktree (detached HEAD %s)"
 msgstr "Bereite Arbeitsverzeichnis vor (losgelöster HEAD %s)"
 
-#: builtin/worktree.c:552
+#: builtin/worktree.c:480
 msgid "checkout <branch> even if already checked out in other worktree"
 msgstr ""
 "<Branch> auschecken, auch wenn dieser bereits in einem anderen "
 "Arbeitsverzeichnis ausgecheckt ist"
 
-#: builtin/worktree.c:555
+#: builtin/worktree.c:483
 msgid "create a new branch"
 msgstr "neuen Branch erstellen"
 
-#: builtin/worktree.c:557
+#: builtin/worktree.c:485
 msgid "create or reset a branch"
 msgstr "Branch erstellen oder umsetzen"
 
-#: builtin/worktree.c:559
+#: builtin/worktree.c:487
 msgid "populate the new working tree"
 msgstr "das neue Arbeitsverzeichnis auschecken"
 
-#: builtin/worktree.c:560
+#: builtin/worktree.c:488
 msgid "keep the new working tree locked"
 msgstr "das neue Arbeitsverzeichnis gesperrt lassen"
 
-#: builtin/worktree.c:563
+#: builtin/worktree.c:491
 msgid "set up tracking mode (see git-branch(1))"
 msgstr "Modus zum Folgen von Branches einstellen (siehe git-branch(1))"
 
-#: builtin/worktree.c:566
+#: builtin/worktree.c:494
 msgid "try to match the new branch name with a remote-tracking branch"
 msgstr ""
 "versuchen, eine Übereinstimmung des Branch-Namens mit einem\n"
 "Remote-Tracking-Branch herzustellen"
 
-#: builtin/worktree.c:574
+#: builtin/worktree.c:502
 msgid "-b, -B, and --detach are mutually exclusive"
 msgstr "-b, -B und --detach schließen sich gegenseitig aus"
 
-#: builtin/worktree.c:635
+#: builtin/worktree.c:563
 msgid "--[no-]track can only be used if a new branch is created"
 msgstr ""
 "--[no]-track kann nur verwendet werden, wenn ein neuer Branch erstellt wird."
 
-#: builtin/worktree.c:758
+#: builtin/worktree.c:680
+msgid "show extended annotations and reasons, if available"
+msgstr "erweiterte Anmerkungen und Gründe anzeigen, falls vorhanden"
+
+#: builtin/worktree.c:682
+msgid "add 'prunable' annotation to worktrees older than <time>"
+msgstr ""
+"'prunable'-Anmerkung zu Arbeitsverzeichnissen älter als <Zeit> hinzufügen"
+
+#: builtin/worktree.c:691
+msgid "--verbose and --porcelain are mutually exclusive"
+msgstr "--verbose und --porcelain schließen sich gegenseitig aus"
+
+#: builtin/worktree.c:718
 msgid "reason for locking"
 msgstr "Sperrgrund"
 
-#: builtin/worktree.c:770 builtin/worktree.c:803 builtin/worktree.c:877
-#: builtin/worktree.c:1001
+#: builtin/worktree.c:730 builtin/worktree.c:763 builtin/worktree.c:837
+#: builtin/worktree.c:961
 #, c-format
 msgid "'%s' is not a working tree"
 msgstr "'%s' ist kein Arbeitsverzeichnis"
 
-#: builtin/worktree.c:772 builtin/worktree.c:805
+#: builtin/worktree.c:732 builtin/worktree.c:765
 msgid "The main working tree cannot be locked or unlocked"
 msgstr "Das Hauptarbeitsverzeichnis kann nicht gesperrt oder entsperrt werden."
 
-#: builtin/worktree.c:777
+#: builtin/worktree.c:737
 #, c-format
 msgid "'%s' is already locked, reason: %s"
 msgstr "'%s' ist bereits gesperrt, Grund: %s"
 
-#: builtin/worktree.c:779
+#: builtin/worktree.c:739
 #, c-format
 msgid "'%s' is already locked"
 msgstr "'%s' ist bereits gesperrt"
 
-#: builtin/worktree.c:807
+#: builtin/worktree.c:767
 #, c-format
 msgid "'%s' is not locked"
 msgstr "'%s' ist nicht gesperrt"
 
-#: builtin/worktree.c:848
+#: builtin/worktree.c:808
 msgid "working trees containing submodules cannot be moved or removed"
 msgstr ""
 "Arbeitsverzeichnisse, die Submodule enthalten, können nicht verschoben oder\n"
 "entfernt werden."
 
-#: builtin/worktree.c:856
+#: builtin/worktree.c:816
 msgid "force move even if worktree is dirty or locked"
 msgstr ""
 "Verschieben erzwingen, auch wenn das Arbeitsverzeichnis geändert oder "
 "gesperrt ist"
 
-#: builtin/worktree.c:879 builtin/worktree.c:1003
+#: builtin/worktree.c:839 builtin/worktree.c:963
 #, c-format
 msgid "'%s' is a main working tree"
 msgstr "'%s' ist ein Hauptarbeitsverzeichnis"
 
-#: builtin/worktree.c:884
+#: builtin/worktree.c:844
 #, c-format
 msgid "could not figure out destination name from '%s'"
 msgstr "Konnte Zielname aus '%s' nicht bestimmen."
 
-#: builtin/worktree.c:897
+#: builtin/worktree.c:857
 #, c-format
 msgid ""
 "cannot move a locked working tree, lock reason: %s\n"
@@ -23502,7 +23875,7 @@ msgstr ""
 "Benutzen Sie 'move -f -f' zum Überschreiben oder entsperren Sie zuerst\n"
 "das Arbeitsverzeichnis."
 
-#: builtin/worktree.c:899
+#: builtin/worktree.c:859
 msgid ""
 "cannot move a locked working tree;\n"
 "use 'move -f -f' to override or unlock first"
@@ -23511,40 +23884,40 @@ msgstr ""
 "Benutzen Sie 'move -f -f' zum Überschreiben oder entsperren Sie zuerst\n"
 "das Arbeitsverzeichnis."
 
-#: builtin/worktree.c:902
+#: builtin/worktree.c:862
 #, c-format
 msgid "validation failed, cannot move working tree: %s"
 msgstr "Validierung fehlgeschlagen, kann Arbeitszeichnis nicht verschieben: %s"
 
-#: builtin/worktree.c:907
+#: builtin/worktree.c:867
 #, c-format
 msgid "failed to move '%s' to '%s'"
 msgstr "Fehler beim Verschieben von '%s' nach '%s'"
 
-#: builtin/worktree.c:953
+#: builtin/worktree.c:913
 #, c-format
 msgid "failed to run 'git status' on '%s'"
 msgstr "Fehler beim Ausführen von 'git status' auf '%s'"
 
-#: builtin/worktree.c:957
+#: builtin/worktree.c:917
 #, c-format
 msgid "'%s' contains modified or untracked files, use --force to delete it"
 msgstr ""
 "'%s' enthält geänderte oder nicht versionierte Dateien, benutzen Sie --force "
 "zum Löschen"
 
-#: builtin/worktree.c:962
+#: builtin/worktree.c:922
 #, c-format
 msgid "failed to run 'git status' on '%s', code %d"
 msgstr "Fehler beim Ausführen von 'git status' auf '%s'. Code: %d"
 
-#: builtin/worktree.c:985
+#: builtin/worktree.c:945
 msgid "force removal even if worktree is dirty or locked"
 msgstr ""
 "Löschen erzwingen, auch wenn das Arbeitsverzeichnis geändert oder gesperrt "
 "ist"
 
-#: builtin/worktree.c:1008
+#: builtin/worktree.c:968
 #, c-format
 msgid ""
 "cannot remove a locked working tree, lock reason: %s\n"
@@ -23554,7 +23927,7 @@ msgstr ""
 "Benutzen Sie 'remove -f -f' zum Überschreiben oder entsperren Sie zuerst\n"
 "das Arbeitsverzeichnis."
 
-#: builtin/worktree.c:1010
+#: builtin/worktree.c:970
 msgid ""
 "cannot remove a locked working tree;\n"
 "use 'remove -f -f' to override or unlock first"
@@ -23563,17 +23936,17 @@ msgstr ""
 "Benutzen Sie 'remove -f -f' zum Überschreiben oder entsperren Sie zuerst\n"
 "das Arbeitsverzeichnis."
 
-#: builtin/worktree.c:1013
+#: builtin/worktree.c:973
 #, c-format
 msgid "validation failed, cannot remove working tree: %s"
 msgstr "Validierung fehlgeschlagen, kann Arbeitsverzeichnis nicht löschen: %s"
 
-#: builtin/worktree.c:1037
+#: builtin/worktree.c:997
 #, c-format
 msgid "repair: %s: %s"
 msgstr "repariere: %s: %s"
 
-#: builtin/worktree.c:1040
+#: builtin/worktree.c:1000
 #, c-format
 msgid "error: %s: %s"
 msgstr "Fehler: %s: %s"
@@ -23594,15 +23967,23 @@ msgstr "das Tree-Objekt für ein Unterverzeichnis <Präfix> schreiben"
 msgid "only useful for debugging"
 msgstr "nur nützlich für Fehlersuche"
 
-#: http-fetch.c:114
+#: http-fetch.c:118
 #, c-format
 msgid "argument to --packfile must be a valid hash (got '%s')"
 msgstr "Argument für --packfile muss ein gültiger Hash sein ('%s' erhalten)"
 
-#: http-fetch.c:122
+#: http-fetch.c:128
 msgid "not a git repository"
 msgstr "kein Git-Repository"
 
+#: http-fetch.c:134
+msgid "--packfile requires --index-pack-args"
+msgstr "--packfile benötigt --index-pack-args"
+
+#: http-fetch.c:143
+msgid "--index-pack-args can only be used with --packfile"
+msgstr "--index-pack-args kann nur mit --packfile benutzt werden"
+
 #: t/helper/test-fast-rebase.c:141
 msgid "unhandled options"
 msgstr "unbehandelte Optionen"
@@ -23635,6 +24016,7 @@ msgid ""
 "           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--"
 "bare]\n"
 "           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]\n"
+"           [--super-prefix=<path>] [--config-env=<name>=<envvar>]\n"
 "           <command> [<args>]"
 msgstr ""
 "git [--version] [--help] [-C <Pfad>] [-c <Name>=<Wert>]\n"
@@ -23642,9 +24024,10 @@ msgstr ""
 "           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--"
 "bare]\n"
 "           [--git-dir=<Pfad>] [--work-tree=<Pfad>] [--namespace=<Name>]\n"
+"           [--super-prefix=<Pfad>] [--config-env=<Name>=<Variable>]\n"
 "           <Befehl> [<Argumente>]"
 
-#: git.c:35
+#: git.c:36
 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"
@@ -23657,47 +24040,47 @@ msgstr ""
 "Konzept zu erfahren.\n"
 "Benutzen Sie 'git help git' für einen Überblick des Systems."
 
-#: git.c:187
+#: git.c:188
 #, c-format
 msgid "no directory given for --git-dir\n"
 msgstr "Kein Verzeichnis für --git-dir angegeben.\n"
 
-#: git.c:201
+#: git.c:202
 #, c-format
 msgid "no namespace given for --namespace\n"
 msgstr "Kein Namespace für --namespace angegeben.\n"
 
-#: git.c:215
+#: git.c:216
 #, c-format
 msgid "no directory given for --work-tree\n"
 msgstr "Kein Verzeichnis für --work-tree angegeben.\n"
 
-#: git.c:229
+#: git.c:230
 #, c-format
 msgid "no prefix given for --super-prefix\n"
 msgstr "Kein Präfix für --super-prefix angegeben.\n"
 
-#: git.c:251
+#: git.c:252
 #, c-format
 msgid "-c expects a configuration string\n"
 msgstr "-c erwartet einen Konfigurationsstring.\n"
 
-#: git.c:289
+#: git.c:292
 #, c-format
 msgid "no directory given for -C\n"
 msgstr "Kein Verzeichnis für -C angegeben.\n"
 
-#: git.c:315
+#: git.c:318
 #, c-format
 msgid "unknown option: %s\n"
 msgstr "Unbekannte Option: %s\n"
 
-#: git.c:364
+#: git.c:367
 #, c-format
 msgid "while expanding alias '%s': '%s'"
 msgstr "beim Erweitern von Alias '%s': '%s'"
 
-#: git.c:373
+#: git.c:376
 #, c-format
 msgid ""
 "alias '%s' changes environment variables.\n"
@@ -23706,39 +24089,39 @@ msgstr ""
 "Alias '%s' ändert Umgebungsvariablen.\n"
 "Sie können '!git' im Alias benutzen, um dies zu tun."
 
-#: git.c:380
+#: git.c:383
 #, c-format
 msgid "empty alias for %s"
 msgstr "leerer Alias für %s"
 
-#: git.c:383
+#: git.c:386
 #, c-format
 msgid "recursive alias: %s"
 msgstr "rekursiver Alias: %s"
 
-#: git.c:465
+#: git.c:468
 msgid "write failure on standard output"
 msgstr "Fehler beim Schreiben in die Standard-Ausgabe."
 
-#: git.c:467
+#: git.c:470
 msgid "unknown write failure on standard output"
 msgstr "Unbekannter Fehler beim Schreiben in die Standard-Ausgabe."
 
-#: git.c:469
+#: git.c:472
 msgid "close failed on standard output"
 msgstr "Fehler beim Schließen der Standard-Ausgabe."
 
-#: git.c:820
+#: git.c:823
 #, c-format
 msgid "alias loop detected: expansion of '%s' does not terminate:%s"
 msgstr "Alias-Schleife erkannt: Erweiterung von '%s' schließt nicht ab:%s"
 
-#: git.c:870
+#: git.c:873
 #, c-format
 msgid "cannot handle %s as a builtin"
 msgstr "Kann %s nicht als eingebauten Befehl behandeln."
 
-#: git.c:883
+#: git.c:886
 #, c-format
 msgid ""
 "usage: %s\n"
@@ -23747,12 +24130,12 @@ msgstr ""
 "Verwendung: %s\n"
 "\n"
 
-#: git.c:903
+#: git.c:906
 #, c-format
 msgid "expansion of alias '%s' failed; '%s' is not a git command\n"
-msgstr "Erweiterung von Alias '%s' fehlgeschlagen; '%s' ist kein Git-Befehl.\n"
+msgstr "Erweiterung von Alias '%s' fehlgeschlagen; '%s' ist kein Git-Befehl\n"
 
-#: git.c:915
+#: git.c:918
 #, c-format
 msgid "failed to run command '%s': %s\n"
 msgstr "Fehler beim Ausführen von Befehl '%s': %s\n"
@@ -23819,17 +24202,17 @@ msgstr "%sinfo/refs nicht gültig: Ist das ein Git-Repository?"
 
 #: remote-curl.c:408
 msgid "invalid server response; expected service, got flush packet"
-msgstr "Ungültige Antwort des Servers. Service erwartet, Flush-Paket bekommen"
+msgstr "ungültige Antwort des Servers; Service erwartet, Flush-Paket bekommen"
 
 #: remote-curl.c:439
 #, c-format
 msgid "invalid server response; got '%s'"
-msgstr "Ungültige Serverantwort; '%s' bekommen"
+msgstr "ungültige Serverantwort; '%s' bekommen"
 
 #: remote-curl.c:499
 #, c-format
 msgid "repository '%s' not found"
-msgstr "Repository '%s' nicht gefunden."
+msgstr "Repository '%s' nicht gefunden"
 
 #: remote-curl.c:503
 #, c-format
@@ -23992,11 +24375,11 @@ msgid ""
 msgstr ""
 "Mit der Option --pathspec-from-file sind Pfade durch NUL-Zeichen getrennt"
 
-#: ref-filter.h:96
+#: ref-filter.h:99
 msgid "key"
 msgstr "Schüssel"
 
-#: ref-filter.h:96
+#: ref-filter.h:99
 msgid "field name to sort on"
 msgstr "sortiere nach diesem Feld"
 
@@ -24005,14 +24388,6 @@ msgid "update the index with reused conflict resolution if possible"
 msgstr ""
 "Index, wenn möglich, mit wiederverwendeter Konfliktauflösung aktualisieren"
 
-#: wt-status.h:80
-msgid "HEAD detached at "
-msgstr "HEAD losgelöst bei "
-
-#: wt-status.h:81
-msgid "HEAD detached from "
-msgstr "HEAD losgelöst von "
-
 #: command-list.h:50
 msgid "Add file contents to the index"
 msgstr "Dateiinhalte zum Commit vormerken"
@@ -24365,8 +24740,8 @@ msgid "Write and verify multi-pack-indexes"
 msgstr "multi-pack-indexes schreiben und überprüfen"
 
 #: command-list.h:132
-msgid "Creates a tag object"
-msgstr "ein Tag-Objekt erstellen"
+msgid "Creates a tag object with extra validation"
+msgstr "Erstellt ein Tag-Objekt mit zusätzlicher Validierung"
 
 #: command-list.h:133
 msgid "Build a tree-object from ls-tree formatted text"
@@ -24683,69 +25058,55 @@ msgid "Specifies intentionally untracked files to ignore"
 msgstr "Spezifikation von bewusst ignorierten, unversionierten Dateien"
 
 #: command-list.h:209
+msgid "Map author/committer names and/or E-Mail addresses"
+msgstr "Autor/Commit-Ersteller und/oder E-Mail-Adressen zuordnen"
+
+#: command-list.h:210
 msgid "Defining submodule properties"
 msgstr "Definition von Submodul-Eigenschaften"
 
-#: command-list.h:210
+#: command-list.h:211
 msgid "Git namespaces"
 msgstr "Git Namensbereiche"
 
-#: command-list.h:211
+#: command-list.h:212
 msgid "Helper programs to interact with remote repositories"
 msgstr "Hilfsprogramme zur Interaktion mit Remote-Repositories"
 
-#: command-list.h:212
+#: command-list.h:213
 msgid "Git Repository Layout"
 msgstr "Git Repository Aufbau"
 
-#: command-list.h:213
+#: command-list.h:214
 msgid "Specifying revisions and ranges for Git"
 msgstr "Spezifikation von Commits und Bereichen für Git"
 
-#: command-list.h:214
+#: command-list.h:215
 msgid "Mounting one repository inside another"
 msgstr "Einbinden eines Repositories in ein anderes"
 
-#: command-list.h:215
+#: command-list.h:216
 msgid "A tutorial introduction to Git: part two"
 msgstr "eine einführende Anleitung zu Git: Teil zwei"
 
-#: command-list.h:216
+#: command-list.h:217
 msgid "A tutorial introduction to Git"
 msgstr "eine einführende Anleitung zu Git"
 
-#: command-list.h:217
+#: command-list.h:218
 msgid "An overview of recommended workflows with Git"
 msgstr "Eine Übersicht über empfohlene Arbeitsabläufe mit Git"
 
-#: git-bisect.sh:48
-#, sh-format
-msgid "Bad rev input: $arg"
-msgstr "Ungültige Referenz-Eingabe: $arg"
-
-#: git-bisect.sh:82
-msgid "No logfile given"
-msgstr "Keine Log-Datei gegeben"
-
-#: git-bisect.sh:83
-#, sh-format
-msgid "cannot read $file for replaying"
-msgstr "kann $file nicht für das Abspielen lesen"
-
-#: git-bisect.sh:105
-msgid "?? what are you talking about?"
-msgstr "?? Was reden Sie da?"
-
-#: git-bisect.sh:115
+#: git-bisect.sh:68
 msgid "bisect run failed: no command provided."
 msgstr "'bisect run' fehlgeschlagen: kein Befehl angegeben."
 
-#: git-bisect.sh:120
+#: git-bisect.sh:73
 #, sh-format
 msgid "running $command"
 msgstr "führe $command aus"
 
-#: git-bisect.sh:127
+#: git-bisect.sh:80
 #, sh-format
 msgid ""
 "bisect run failed:\n"
@@ -24754,11 +25115,11 @@ msgstr ""
 "'bisect run' fehlgeschlagen:\n"
 "Exit-Code $res von '$command' ist < 0 oder >= 128"
 
-#: git-bisect.sh:152
+#: git-bisect.sh:105
 msgid "bisect run cannot continue any more"
 msgstr "'bisect run' kann nicht mehr fortgesetzt werden"
 
-#: git-bisect.sh:158
+#: git-bisect.sh:111
 #, sh-format
 msgid ""
 "bisect run failed:\n"
@@ -24767,14 +25128,10 @@ msgstr ""
 "'bisect run' fehlgeschlagen:\n"
 "'bisect-state $state' wurde mit Fehlerwert $res beendet"
 
-#: git-bisect.sh:165
+#: git-bisect.sh:118
 msgid "bisect run success"
 msgstr "'bisect run' erfolgreich ausgeführt"
 
-#: git-bisect.sh:173
-msgid "We are not bisecting."
-msgstr "Keine binäre Suche im Gange."
-
 #: git-merge-octopus.sh:46
 msgid ""
 "Error: Your local changes to the following files would be overwritten by "
@@ -25842,7 +26199,7 @@ msgstr ""
 "\n"
 "    * \"./%s\" angeben, wenn Sie eine Datei meinen, oder\n"
 "    * die Option --format-patch angeben, wenn Sie einen Commit-Bereich "
-"meinen\n"
+"meinen.\n"
 
 #: git-send-email.perl:678
 #, perl-format
@@ -25856,7 +26213,7 @@ msgid ""
 "warning: no patches were sent\n"
 msgstr ""
 "fatal: %s: %s\n"
-"Warnung: Es wurden keine Patches versendet.\n"
+"Warnung: Es wurden keine Patches versendet\n"
 
 #: git-send-email.perl:713
 msgid ""
@@ -25865,7 +26222,7 @@ msgid ""
 "\n"
 msgstr ""
 "\n"
-"keine Patch-Dateien angegeben!\n"
+"Keine Patch-Dateien angegeben!\n"
 "\n"
 
 #: git-send-email.perl:726
index 41a72ca6fbdb249fe1bfadc7a37c73e2419c9084..dc895bf3cd3826ffdd7f99fe515f31d963f9c59c 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: 2020-07-10 09:53+0800\n"
-"PO-Revision-Date: 2020-07-26 10:11-0500\n"
+"POT-Creation-Date: 2021-03-04 22:41+0800\n"
+"PO-Revision-Date: 2021-03-07 18:29-0500\n"
 "Last-Translator: christopher.diaz.riv@gmail.com\n"
 "Language-Team: CodeLabora <codelabora@gmail.com>\n"
 "Language: es\n"
@@ -16,235 +16,235 @@ 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.3\n"
+"X-Generator: Poedit 2.4.1\n"
 
-#: add-interactive.c:368
+#: add-interactive.c:376
 #, c-format
 msgid "Huh (%s)?"
 msgstr "¿Ahh (%s)?"
 
-#: add-interactive.c:521 add-interactive.c:822 reset.c:65 sequencer.c:3142
-#: sequencer.c:3581 sequencer.c:3723 builtin/rebase.c:1518
-#: builtin/rebase.c:1919
+#: add-interactive.c:529 add-interactive.c:830 reset.c:65 sequencer.c:3292
+#: sequencer.c:3743 sequencer.c:3898 builtin/rebase.c:1538
+#: builtin/rebase.c:1963
 msgid "could not read index"
 msgstr "no se pudo leer índice"
 
-#: add-interactive.c:576 git-add--interactive.perl:269
+#: add-interactive.c:584 git-add--interactive.perl:269
 #: git-add--interactive.perl:294
 msgid "binary"
 msgstr "binario"
 
-#: add-interactive.c:634 git-add--interactive.perl:278
+#: add-interactive.c:642 git-add--interactive.perl:278
 #: git-add--interactive.perl:332
 msgid "nothing"
 msgstr "nada"
 
-#: add-interactive.c:635 git-add--interactive.perl:314
+#: add-interactive.c:643 git-add--interactive.perl:314
 #: git-add--interactive.perl:329
 msgid "unchanged"
 msgstr "sin cambios"
 
-#: add-interactive.c:672 git-add--interactive.perl:643
+#: add-interactive.c:680 git-add--interactive.perl:641
 msgid "Update"
 msgstr "Actualizar"
 
-#: add-interactive.c:689 add-interactive.c:877
+#: add-interactive.c:697 add-interactive.c:885
 #, c-format
 msgid "could not stage '%s'"
 msgstr "no se pudo poner en stage '%s'"
 
-#: add-interactive.c:695 add-interactive.c:884 reset.c:89 sequencer.c:3336
+#: add-interactive.c:703 add-interactive.c:892 reset.c:89 sequencer.c:3486
 msgid "could not write index"
 msgstr "no se pudo escribir índice"
 
-#: add-interactive.c:698 git-add--interactive.perl:628
+#: add-interactive.c:706 git-add--interactive.perl:626
 #, c-format, 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"
 
-#: add-interactive.c:716 git-add--interactive.perl:678
+#: add-interactive.c:724 git-add--interactive.perl:676
 #, c-format, perl-format
 msgid "note: %s is untracked now.\n"
 msgstr "nota: %s no es rastreado ahora.\n"
 
-#: add-interactive.c:721 apply.c:4110 builtin/checkout.c:294
+#: add-interactive.c:729 apply.c:4125 builtin/checkout.c:295
 #: builtin/reset.c:145
 #, c-format
 msgid "make_cache_entry failed for path '%s'"
 msgstr "make_cache_entry falló para la ruta '%s'"
 
-#: add-interactive.c:751 git-add--interactive.perl:655
+#: add-interactive.c:759 git-add--interactive.perl:653
 msgid "Revert"
 msgstr "Revertir"
 
-#: add-interactive.c:767
+#: add-interactive.c:775
 msgid "Could not parse HEAD^{tree}"
-msgstr "no se pudo analizar HEAD^{tree}"
+msgstr "No se pudo analizar HEAD^{tree}"
 
-#: add-interactive.c:805 git-add--interactive.perl:631
+#: add-interactive.c:813 git-add--interactive.perl:629
 #, c-format, 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"
 
-#: add-interactive.c:856 git-add--interactive.perl:695
+#: add-interactive.c:864 git-add--interactive.perl:693
 #, c-format
 msgid "No untracked files.\n"
 msgstr "No hay archivos sin rastrear.\n"
 
-#: add-interactive.c:860 git-add--interactive.perl:689
+#: add-interactive.c:868 git-add--interactive.perl:687
 msgid "Add untracked"
 msgstr "Agregar no rastreados"
 
-#: add-interactive.c:887 git-add--interactive.perl:625
+#: add-interactive.c:895 git-add--interactive.perl:623
 #, c-format, 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"
 
-#: add-interactive.c:917
+#: add-interactive.c:925
 #, c-format
 msgid "ignoring unmerged: %s"
 msgstr "ignorando lo no fusionado: %s"
 
-#: add-interactive.c:929 add-patch.c:1691 git-add--interactive.perl:1368
+#: add-interactive.c:937 add-patch.c:1751 git-add--interactive.perl:1369
 #, c-format
 msgid "Only binary files changed.\n"
 msgstr "Solo cambiaron archivos binarios.\n"
 
-#: add-interactive.c:931 add-patch.c:1689 git-add--interactive.perl:1370
+#: add-interactive.c:939 add-patch.c:1749 git-add--interactive.perl:1371
 #, c-format
 msgid "No changes.\n"
 msgstr "Sin cambios.\n"
 
-#: add-interactive.c:935 git-add--interactive.perl:1378
+#: add-interactive.c:943 git-add--interactive.perl:1379
 msgid "Patch update"
 msgstr "Actualización del parche"
 
-#: add-interactive.c:974 git-add--interactive.perl:1771
+#: add-interactive.c:982 git-add--interactive.perl:1792
 msgid "Review diff"
 msgstr "Revisión de  diff"
 
-#: add-interactive.c:1002
+#: add-interactive.c:1010
 msgid "show paths with changes"
 msgstr "mostrar rutas con cambios"
 
-#: add-interactive.c:1004
+#: add-interactive.c:1012
 msgid "add working tree state to the staged set of changes"
 msgstr "agregar estado del árbol de trabajo al conjunto de cambios en stage"
 
-#: add-interactive.c:1006
+#: add-interactive.c:1014
 msgid "revert staged set of changes back to the HEAD version"
 msgstr "revertir conjunto de cambios en stage a la versión de HEAD"
 
-#: add-interactive.c:1008
+#: add-interactive.c:1016
 msgid "pick hunks and update selectively"
 msgstr "elegir hunks y actualizar de forma selectiva"
 
-#: add-interactive.c:1010
+#: add-interactive.c:1018
 msgid "view diff between HEAD and index"
 msgstr "ver diff entre HEAD e index"
 
-#: add-interactive.c:1012
+#: add-interactive.c:1020
 msgid "add contents of untracked files to the staged set of changes"
 msgstr ""
 "agregar contenidos de archivos sin rastrear al conjunto de cambios de stage"
 
-#: add-interactive.c:1020 add-interactive.c:1069
+#: add-interactive.c:1028 add-interactive.c:1077
 msgid "Prompt help:"
 msgstr "Mostrar ayuda:"
 
-#: add-interactive.c:1022
+#: add-interactive.c:1030
 msgid "select a single item"
 msgstr "selecciona un único objeto"
 
-#: add-interactive.c:1024
+#: add-interactive.c:1032
 msgid "select a range of items"
 msgstr "selecciona un rango de objetos"
 
-#: add-interactive.c:1026
+#: add-interactive.c:1034
 msgid "select multiple ranges"
 msgstr "selecciona multiples rangos"
 
-#: add-interactive.c:1028 add-interactive.c:1073
+#: add-interactive.c:1036 add-interactive.c:1081
 msgid "select item based on unique prefix"
 msgstr "seleccionar objeto basado en prefijo único"
 
-#: add-interactive.c:1030
+#: add-interactive.c:1038
 msgid "unselect specified items"
 msgstr "quitar objetos especificados"
 
-#: add-interactive.c:1032
+#: add-interactive.c:1040
 msgid "choose all items"
 msgstr "escoger todos los objetos"
 
-#: add-interactive.c:1034
+#: add-interactive.c:1042
 msgid "(empty) finish selecting"
 msgstr "(vacío) finalizar selección"
 
-#: add-interactive.c:1071
+#: add-interactive.c:1079
 msgid "select a numbered item"
 msgstr "selecciona un objeto numerado"
 
-#: add-interactive.c:1075
+#: add-interactive.c:1083
 msgid "(empty) select nothing"
 msgstr "(vacío) selecciona nada"
 
-#: add-interactive.c:1083 builtin/clean.c:816 git-add--interactive.perl:1868
+#: add-interactive.c:1091 builtin/clean.c:816 git-add--interactive.perl:1896
 msgid "*** Commands ***"
 msgstr "*** Comandos ***"
 
-#: add-interactive.c:1084 builtin/clean.c:817 git-add--interactive.perl:1865
+#: add-interactive.c:1092 builtin/clean.c:817 git-add--interactive.perl:1893
 msgid "What now"
 msgstr "Ahora que"
 
-#: add-interactive.c:1136 git-add--interactive.perl:213
+#: add-interactive.c:1144 git-add--interactive.perl:213
 msgid "staged"
 msgstr "rastreado"
 
-#: add-interactive.c:1136 git-add--interactive.perl:213
+#: add-interactive.c:1144 git-add--interactive.perl:213
 msgid "unstaged"
 msgstr "no rastreado"
 
-#: add-interactive.c:1136 apply.c:4967 apply.c:4970 builtin/am.c:2250
-#: builtin/am.c:2253 builtin/clone.c:123 builtin/fetch.c:145
-#: builtin/merge.c:276 builtin/pull.c:190 builtin/submodule--helper.c:409
-#: builtin/submodule--helper.c:1394 builtin/submodule--helper.c:1397
-#: builtin/submodule--helper.c:1902 builtin/submodule--helper.c:1905
-#: builtin/submodule--helper.c:2148 bugreport.c:135
+#: add-interactive.c:1144 apply.c:4987 apply.c:4990 builtin/am.c:2257
+#: builtin/am.c:2260 builtin/bugreport.c:134 builtin/clone.c:124
+#: builtin/fetch.c:150 builtin/merge.c:285 builtin/pull.c:190
+#: builtin/submodule--helper.c:409 builtin/submodule--helper.c:1818
+#: builtin/submodule--helper.c:1821 builtin/submodule--helper.c:2326
+#: builtin/submodule--helper.c:2329 builtin/submodule--helper.c:2572
 #: git-add--interactive.perl:213
 msgid "path"
 msgstr "ruta"
 
-#: add-interactive.c:1143
+#: add-interactive.c:1151
 msgid "could not refresh index"
 msgstr "no se pudo refrescar el index"
 
-#: add-interactive.c:1157 builtin/clean.c:781 git-add--interactive.perl:1782
+#: add-interactive.c:1165 builtin/clean.c:781 git-add--interactive.perl:1803
 #, c-format
 msgid "Bye.\n"
 msgstr "Adiós.\n"
 
-#: add-patch.c:34 git-add--interactive.perl:1430
+#: add-patch.c:34 git-add--interactive.perl:1431
 #, c-format, perl-format
 msgid "Stage mode change [y,n,q,a,d%s,?]? "
 msgstr "¿Cambio de modo de stage [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:35 git-add--interactive.perl:1431
+#: add-patch.c:35 git-add--interactive.perl:1432
 #, c-format, perl-format
 msgid "Stage deletion [y,n,q,a,d%s,?]? "
 msgstr "¿Aplicar stage al borrado [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:36 git-add--interactive.perl:1432
+#: add-patch.c:36 git-add--interactive.perl:1433
 #, c-format, perl-format
 msgid "Stage addition [y,n,q,a,d%s,?]? "
 msgstr "¿Agregar al stage [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:37 git-add--interactive.perl:1433
+#: add-patch.c:37 git-add--interactive.perl:1434
 #, c-format, perl-format
 msgid "Stage this hunk [y,n,q,a,d%s,?]? "
 msgstr "¿Aplicar stage a este hunk [y,n,q,a,d%s,?]? "
@@ -272,22 +272,22 @@ msgstr ""
 "d - no aplicar stage a este hunk o a ninguno de los posteriores en este "
 "archivo\n"
 
-#: add-patch.c:56 git-add--interactive.perl:1436
+#: add-patch.c:56 git-add--interactive.perl:1437
 #, c-format, perl-format
 msgid "Stash mode change [y,n,q,a,d%s,?]? "
 msgstr "¿Aplicar stash al cambio de modo [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:57 git-add--interactive.perl:1437
+#: add-patch.c:57 git-add--interactive.perl:1438
 #, c-format, perl-format
 msgid "Stash deletion [y,n,q,a,d%s,?]? "
 msgstr "¿Aplicar stash al borrado [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:58 git-add--interactive.perl:1438
+#: add-patch.c:58 git-add--interactive.perl:1439
 #, c-format, perl-format
 msgid "Stash addition [y,n,q,a,d%s,?]? "
 msgstr "¿Agregar al stash [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:59 git-add--interactive.perl:1439
+#: add-patch.c:59 git-add--interactive.perl:1440
 #, c-format, perl-format
 msgid "Stash this hunk [y,n,q,a,d%s,?]? "
 msgstr "¿Aplicar stash a este hunk [y,n,q,a,d%s,?]? "
@@ -314,22 +314,22 @@ 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\n"
 
-#: add-patch.c:80 git-add--interactive.perl:1442
+#: add-patch.c:80 git-add--interactive.perl:1443
 #, c-format, perl-format
 msgid "Unstage mode change [y,n,q,a,d%s,?]? "
 msgstr "¿Sacar cambio de modo del stage [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:81 git-add--interactive.perl:1443
+#: add-patch.c:81 git-add--interactive.perl:1444
 #, c-format, perl-format
 msgid "Unstage deletion [y,n,q,a,d%s,?]? "
 msgstr "¿Sacar borrado del stage [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:82 git-add--interactive.perl:1444
+#: add-patch.c:82 git-add--interactive.perl:1445
 #, c-format, perl-format
 msgid "Unstage addition [y,n,q,a,d%s,?]? "
 msgstr "¿Quitar adición al stage [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:83 git-add--interactive.perl:1445
+#: add-patch.c:83 git-add--interactive.perl:1446
 #, c-format, perl-format
 msgid "Unstage this hunk [y,n,q,a,d%s,?]? "
 msgstr "¿Sacar este hunk del stage [y,n,q,a,d%s,?]? "
@@ -357,22 +357,22 @@ msgstr ""
 "d - no sacar del area de stage este hunk o ninguno de los posteriores en el "
 "archivo\n"
 
-#: add-patch.c:103 git-add--interactive.perl:1448
+#: add-patch.c:103 git-add--interactive.perl:1449
 #, c-format, perl-format
 msgid "Apply mode change to index [y,n,q,a,d%s,?]? "
 msgstr "¿Aplicar cambio de modo al índice [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:104 git-add--interactive.perl:1449
+#: add-patch.c:104 git-add--interactive.perl:1450
 #, c-format, perl-format
 msgid "Apply deletion to index [y,n,q,a,d%s,?]? "
 msgstr "¿Aplicar borrado al índice [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:105 git-add--interactive.perl:1450
+#: add-patch.c:105 git-add--interactive.perl:1451
 #, c-format, perl-format
 msgid "Apply addition to index [y,n,q,a,d%s,?]? "
 msgstr "¿Aplicar adición al índice [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:106 git-add--interactive.perl:1451
+#: add-patch.c:106 git-add--interactive.perl:1452
 #, c-format, perl-format
 msgid "Apply this hunk to index [y,n,q,a,d%s,?]? "
 msgstr "¿Aplicar este hunk al índice [y,n,q,a,d%s,?]? "
@@ -399,26 +399,26 @@ 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\n"
 
-#: add-patch.c:126 git-add--interactive.perl:1454
-#: git-add--interactive.perl:1472
+#: add-patch.c:126 git-add--interactive.perl:1455
+#: git-add--interactive.perl:1473
 #, c-format, perl-format
 msgid "Discard mode change from worktree [y,n,q,a,d%s,?]? "
 msgstr "¿Descartar cambio de modo del árbol de trabajo [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:127 git-add--interactive.perl:1455
-#: git-add--interactive.perl:1473
+#: add-patch.c:127 git-add--interactive.perl:1456
+#: git-add--interactive.perl:1474
 #, c-format, perl-format
 msgid "Discard deletion from worktree [y,n,q,a,d%s,?]? "
 msgstr "¿Descartar borrado del árbol de trabajo [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:128 git-add--interactive.perl:1456
-#: git-add--interactive.perl:1474
+#: add-patch.c:128 git-add--interactive.perl:1457
+#: git-add--interactive.perl:1475
 #, c-format, perl-format
 msgid "Discard addition from worktree [y,n,q,a,d%s,?]? "
 msgstr "¿Descartar adición del árbol de trabajo [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:129 git-add--interactive.perl:1457
-#: git-add--interactive.perl:1475
+#: add-patch.c:129 git-add--interactive.perl:1458
+#: git-add--interactive.perl:1476
 #, c-format, perl-format
 msgid "Discard this hunk from worktree [y,n,q,a,d%s,?]? "
 msgstr "¿Descartar este hunk del árbol de trabajo [y,n,q,a,d%s,?]? "
@@ -445,23 +445,23 @@ 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\n"
 
-#: add-patch.c:149 add-patch.c:194 git-add--interactive.perl:1460
+#: add-patch.c:149 add-patch.c:194 git-add--interactive.perl:1461
 #, c-format, perl-format
 msgid "Discard mode change from index and worktree [y,n,q,a,d%s,?]? "
 msgstr ""
 "¿Descartar cambio de modo del índice y el árbol de trabajo [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:150 add-patch.c:195 git-add--interactive.perl:1461
+#: add-patch.c:150 add-patch.c:195 git-add--interactive.perl:1462
 #, c-format, perl-format
 msgid "Discard deletion from index and worktree [y,n,q,a,d%s,?]? "
 msgstr "¿Descartar borrado del índice y el árbol de trabajo [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:151 add-patch.c:196 git-add--interactive.perl:1462
+#: add-patch.c:151 add-patch.c:196 git-add--interactive.perl:1463
 #, c-format, perl-format
 msgid "Discard addition from index and worktree [y,n,q,a,d%s,?]? "
 msgstr "¿Descartar adición del índice y el árbol de trabajo [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:152 add-patch.c:197 git-add--interactive.perl:1463
+#: add-patch.c:152 add-patch.c:197 git-add--interactive.perl:1464
 #, c-format, perl-format
 msgid "Discard this hunk from index and worktree [y,n,q,a,d%s,?]? "
 msgstr ""
@@ -481,24 +481,24 @@ msgstr ""
 "a - descartar este hunk y todos los posteriores en este archivo\n"
 "d - no descartar este hunk o ninguno posterior en el archivo\n"
 
-#: add-patch.c:171 add-patch.c:216 git-add--interactive.perl:1466
+#: add-patch.c:171 add-patch.c:216 git-add--interactive.perl:1467
 #, c-format, perl-format
 msgid "Apply mode change to index and worktree [y,n,q,a,d%s,?]? "
 msgstr ""
 "¿Aplicar cambio de modo para el índice y el árbol de trabajo [y,n,q,a,d"
 "%s,?]? "
 
-#: add-patch.c:172 add-patch.c:217 git-add--interactive.perl:1467
+#: add-patch.c:172 add-patch.c:217 git-add--interactive.perl:1468
 #, c-format, perl-format
 msgid "Apply deletion to index and worktree [y,n,q,a,d%s,?]? "
 msgstr "¿Aplicar borrado al índice y al árbol de trabajo [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:173 add-patch.c:218 git-add--interactive.perl:1468
+#: add-patch.c:173 add-patch.c:218 git-add--interactive.perl:1469
 #, c-format, perl-format
 msgid "Apply addition to index and worktree [y,n,q,a,d%s,?]? "
 msgstr "¿Aplicar adición al índice y al árbol de trabajo [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:174 add-patch.c:219 git-add--interactive.perl:1469
+#: add-patch.c:174 add-patch.c:219 git-add--interactive.perl:1470
 #, c-format, perl-format
 msgid "Apply this hunk to index and worktree [y,n,q,a,d%s,?]? "
 msgstr "¿Aplicar este hunk al índice y árbol de trabajo [y,n,q,a,d,/%s,?]? "
@@ -531,34 +531,34 @@ 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\n"
 
-#: add-patch.c:328
+#: add-patch.c:342
 #, c-format
 msgid "could not parse hunk header '%.*s'"
 msgstr "no se puede analizar hunk header '%.*s'"
 
-#: add-patch.c:347 add-patch.c:351
+#: add-patch.c:361 add-patch.c:365
 #, c-format
 msgid "could not parse colored hunk header '%.*s'"
 msgstr "no se puede analizar hunk header '%.*s'"
 
-#: add-patch.c:405
+#: add-patch.c:419
 msgid "could not parse diff"
 msgstr "no se puede analizar diff"
 
-#: add-patch.c:424
+#: add-patch.c:438
 msgid "could not parse colored diff"
 msgstr "no se pudo analizar diff a colores"
 
-#: add-patch.c:438
+#: add-patch.c:452
 #, c-format
 msgid "failed to run '%s'"
 msgstr "falló al ejecutar '%s'"
 
-#: add-patch.c:602
+#: add-patch.c:611
 msgid "mismatched output from interactive.diffFilter"
 msgstr "output de interactive.diffFilter no concuerda"
 
-#: add-patch.c:603
+#: add-patch.c:612
 msgid ""
 "Your filter must maintain a one-to-one correspondence\n"
 "between its input and output lines."
@@ -566,7 +566,7 @@ msgstr ""
 "Tu filtro tiene que mantener correspondencia de uno a uno\n"
 "entre las líneas de entrada y salida."
 
-#: add-patch.c:776
+#: add-patch.c:790
 #, c-format
 msgid ""
 "expected context line #%d in\n"
@@ -575,7 +575,7 @@ msgstr ""
 "se esperaba línea de contexto #%d en\n"
 "%.*s"
 
-#: add-patch.c:791
+#: add-patch.c:805
 #, c-format
 msgid ""
 "hunks do not overlap:\n"
@@ -588,11 +588,11 @@ msgstr ""
 "\tno acaba con:\n"
 "%.*s"
 
-#: add-patch.c:1067 git-add--interactive.perl:1114
+#: add-patch.c:1081 git-add--interactive.perl:1115
 msgid "Manual hunk edit mode -- see bottom for a quick guide.\n"
 msgstr "Modo de edición manual de hunk -- vea abajo para una guía rápida.\n"
 
-#: add-patch.c:1071
+#: add-patch.c:1085
 #, c-format
 msgid ""
 "---\n"
@@ -606,7 +606,7 @@ msgstr ""
 "Lineas comenzando con  %c serán eliminadas.\n"
 
 #. TRANSLATORS: 'it' refers to the patch mentioned in the previous messages.
-#: add-patch.c:1085 git-add--interactive.perl:1128
+#: add-patch.c:1099 git-add--interactive.perl:1129
 msgid ""
 "If it does not apply cleanly, you will be given an opportunity to\n"
 "edit again.  If all lines of the hunk are removed, then the edit is\n"
@@ -616,11 +616,11 @@ msgstr ""
 "editar nuevamente. Si todas las líneas del hunk son eliminadas, entonces \n"
 "la edición es abortada y el hunk queda sin cambios.\n"
 
-#: add-patch.c:1118
+#: add-patch.c:1132
 msgid "could not parse hunk header"
 msgstr "no se puede analizar hunk header"
 
-#: add-patch.c:1163
+#: add-patch.c:1177
 msgid "'git apply --cached' failed"
 msgstr "falló 'git apply --cached'"
 
@@ -636,26 +636,26 @@ msgstr "falló 'git apply --cached'"
 #. Consider translating (saying "no" discards!) as
 #. (saying "n" for "no" discards!) if the translation
 #. of the word "no" does not start with n.
-#: add-patch.c:1232 git-add--interactive.perl:1241
+#: add-patch.c:1246 git-add--interactive.perl:1242
 msgid ""
 "Your edited hunk does not apply. Edit again (saying \"no\" discards!) [y/n]? "
 msgstr ""
 "Tu hunk editado no aplica. ¿Editar nuevamente (¡decir \"no\" descarta!) [y/"
 "n]? "
 
-#: add-patch.c:1275
+#: add-patch.c:1289
 msgid "The selected hunks do not apply to the index!"
 msgstr "¡Los hunks seleccionados no aplican al índice!"
 
-#: add-patch.c:1276 git-add--interactive.perl:1345
+#: add-patch.c:1290 git-add--interactive.perl:1346
 msgid "Apply them to the worktree anyway? "
 msgstr "¿Aplicarlos al árbol de trabajo de todas maneras? "
 
-#: add-patch.c:1283 git-add--interactive.perl:1348
+#: add-patch.c:1297 git-add--interactive.perl:1349
 msgid "Nothing was applied.\n"
 msgstr "Nada fue aplicado.\n"
 
-#: add-patch.c:1340
+#: add-patch.c:1354
 msgid ""
 "j - leave this hunk undecided, see next undecided hunk\n"
 "J - leave this hunk undecided, see next hunk\n"
@@ -677,73 +677,73 @@ msgstr ""
 "e - editar manualmente el hunk actual\n"
 "? - imprimir ayuda\n"
 
-#: add-patch.c:1463 add-patch.c:1473
+#: add-patch.c:1516 add-patch.c:1526
 msgid "No previous hunk"
 msgstr "No el anterior hunk"
 
-#: add-patch.c:1468 add-patch.c:1478
+#: add-patch.c:1521 add-patch.c:1531
 msgid "No next hunk"
 msgstr "No el siguiente hunk"
 
-#: add-patch.c:1484
+#: add-patch.c:1537
 msgid "No other hunks to goto"
 msgstr "No hay más pedazos para el ir"
 
-#: add-patch.c:1495 git-add--interactive.perl:1594
+#: add-patch.c:1548 git-add--interactive.perl:1606
 msgid "go to which hunk (<ret> to see more)? "
 msgstr "¿a que hunk ir (<enter> para ver más)? "
 
-#: add-patch.c:1496 git-add--interactive.perl:1596
+#: add-patch.c:1549 git-add--interactive.perl:1608
 msgid "go to which hunk? "
 msgstr "¿a que hunk ir? "
 
-#: add-patch.c:1507
+#: add-patch.c:1560
 #, c-format
 msgid "Invalid number: '%s'"
 msgstr "Numero inválido: '%s'"
 
-#: add-patch.c:1512
+#: add-patch.c:1565
 #, c-format
 msgid "Sorry, only %d hunk available."
 msgid_plural "Sorry, only %d hunks available."
 msgstr[0] "Lo siento, solo %d hunk disponible."
 msgstr[1] "Lo siento, solo %d hunks disponibles."
 
-#: add-patch.c:1521
+#: add-patch.c:1574
 msgid "No other hunks to search"
 msgstr "No hay más pedazos para buscar"
 
-#: add-patch.c:1527 git-add--interactive.perl:1640
+#: add-patch.c:1580 git-add--interactive.perl:1661
 msgid "search for regex? "
 msgstr "¿buscar para regexp? "
 
-#: add-patch.c:1542
+#: add-patch.c:1595
 #, c-format
 msgid "Malformed search regexp %s: %s"
 msgstr "Regexp para la búsqueda mal formado %s: %s"
 
-#: add-patch.c:1559
+#: add-patch.c:1612
 msgid "No hunk matches the given pattern"
-msgstr "No hay hunks que concuerden con el patrón entregado."
+msgstr "No hay hunks que concuerden con el patrón entregado"
 
-#: add-patch.c:1566
+#: add-patch.c:1619
 msgid "Sorry, cannot split this hunk"
 msgstr "Perdón, no se puede dividir este pedazo"
 
-#: add-patch.c:1570
+#: add-patch.c:1623
 #, c-format
 msgid "Split into %d hunks."
 msgstr "Cortar en %d hunk."
 
-#: add-patch.c:1574
+#: add-patch.c:1627
 msgid "Sorry, cannot edit this hunk"
 msgstr "Perdón, no se puede editar este pedazo"
 
-#: add-patch.c:1625
+#: add-patch.c:1679
 msgid "'git apply' failed"
 msgstr "falló 'git apply'"
 
-#: advice.c:140
+#: advice.c:143
 #, c-format
 msgid ""
 "\n"
@@ -752,38 +752,38 @@ msgstr ""
 "\n"
 "Desactivar este mensaje con \"git config advice.%s false\""
 
-#: advice.c:156
+#: advice.c:159
 #, c-format
 msgid "%shint: %.*s%s\n"
 msgstr "%sayuda: %.*s%s\n"
 
-#: advice.c:247
+#: advice.c:250
 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:249
+#: advice.c:252
 msgid "Committing is not possible because you have unmerged files."
 msgstr "No es posible realizar un commit porque tienes archivos sin fusionar."
 
-#: advice.c:251
+#: advice.c:254
 msgid "Merging is not possible because you have unmerged files."
 msgstr "No es posible hacer merge porque tienes archivos sin fusionar."
 
-#: advice.c:253
+#: advice.c:256
 msgid "Pulling is not possible because you have unmerged files."
 msgstr "No es posible hacer pull porque tienes archivos sin fusionar."
 
-#: advice.c:255
+#: advice.c:258
 msgid "Reverting is not possible because you have unmerged files."
 msgstr "No es posible revertir porque tienes archivos sin fusionar."
 
-#: advice.c:257
+#: advice.c:260
 #, 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:265
+#: advice.c:268
 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."
@@ -791,23 +791,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:273
+#: advice.c:276
 msgid "Exiting because of an unresolved conflict."
 msgstr "Saliendo porque existe un conflicto sin resolver."
 
-#: advice.c:278 builtin/merge.c:1353
+#: advice.c:281 builtin/merge.c:1370
 msgid "You have not concluded your merge (MERGE_HEAD exists)."
 msgstr "No has concluido tu fusión (MERGE_HEAD existe)."
 
-#: advice.c:280
+#: advice.c:283
 msgid "Please, commit your changes before merging."
 msgstr "Por favor, realiza un commit antes de fusionar."
 
-#: advice.c:281
+#: advice.c:284
 msgid "Exiting because of unfinished merge."
 msgstr "Saliendo por una fusión inconclusa."
 
-#: advice.c:287
+#: advice.c:290
 #, c-format
 msgid ""
 "Note: switching to '%s'.\n"
@@ -1107,7 +1107,8 @@ msgstr "el parche falló: %s:%ld"
 msgid "cannot checkout %s"
 msgstr "no se puede hacer checkout a %s"
 
-#: apply.c:3405 apply.c:3416 apply.c:3462 midx.c:61 setup.c:308
+#: apply.c:3405 apply.c:3416 apply.c:3462 midx.c:86 pack-revindex.c:213
+#: setup.c:308
 #, c-format
 msgid "failed to read %s"
 msgstr "no se pudo leer %s"
@@ -1127,7 +1128,7 @@ msgstr "la ruta %s ha sido renombrada/suprimida"
 msgid "%s: does not exist in index"
 msgstr "%s: no existe en el índice"
 
-#: apply.c:3537 apply.c:3708
+#: apply.c:3537 apply.c:3708 apply.c:3952
 #, c-format
 msgid "%s: does not match index"
 msgstr "%s: no concuerda con el índice"
@@ -1177,182 +1178,182 @@ msgstr "%s: tipo incorrecto"
 msgid "%s has type %o, expected %o"
 msgstr "%s tiene tipo %o, se esperaba %o"
 
-#: apply.c:3878 apply.c:3880 read-cache.c:830 read-cache.c:856
-#: read-cache.c:1325
+#: apply.c:3892 apply.c:3894 read-cache.c:832 read-cache.c:858
+#: read-cache.c:1313
 #, c-format
 msgid "invalid path '%s'"
 msgstr "ruta inválida '%s'"
 
-#: apply.c:3936
+#: apply.c:3950
 #, c-format
 msgid "%s: already exists in index"
 msgstr "%s: ya existe en el índice"
 
-#: apply.c:3939
+#: apply.c:3954
 #, c-format
 msgid "%s: already exists in working directory"
 msgstr "%s: ya existe en el directorio de trabajo"
 
-#: apply.c:3959
+#: apply.c:3974
 #, c-format
 msgid "new mode (%o) of %s does not match old mode (%o)"
 msgstr "nuevo modo (%o) de %s no concuerda con el viejo modo (%o)"
 
-#: apply.c:3964
+#: apply.c:3979
 #, c-format
 msgid "new mode (%o) of %s does not match old mode (%o) of %s"
 msgstr "nuevo modo (%o) de %s no concuerda con el viejo modo (%o) de %s"
 
-#: apply.c:3984
+#: apply.c:3999
 #, c-format
 msgid "affected file '%s' is beyond a symbolic link"
 msgstr "archivo afectado '%s' está tras un enlace simbólico"
 
-#: apply.c:3988
+#: apply.c:4003
 #, c-format
 msgid "%s: patch does not apply"
 msgstr "%s: el parche no aplica"
 
-#: apply.c:4003
+#: apply.c:4018
 #, c-format
 msgid "Checking patch %s..."
 msgstr "Revisando el parche %s..."
 
-#: apply.c:4095
+#: apply.c:4110
 #, c-format
 msgid "sha1 information is lacking or useless for submodule %s"
 msgstr "falta información del sha1 o es inútil para el submódulo %s"
 
-#: apply.c:4102
+#: apply.c:4117
 #, c-format
 msgid "mode change for %s, which is not in current HEAD"
 msgstr "modo cambiado para %s, el cual no se encuentra en el HEAD actual"
 
-#: apply.c:4105
+#: apply.c:4120
 #, c-format
 msgid "sha1 information is lacking or useless (%s)."
 msgstr "falta información sha1 o es inútil (%s)."
 
-#: apply.c:4114
+#: apply.c:4129
 #, c-format
 msgid "could not add %s to temporary index"
 msgstr "no se pudo añadir %s al índice temporal"
 
-#: apply.c:4124
+#: apply.c:4139
 #, c-format
 msgid "could not write temporary index to %s"
 msgstr "no se pudo escribir un índice temporal para %s"
 
-#: apply.c:4262
+#: apply.c:4277
 #, c-format
 msgid "unable to remove %s from index"
 msgstr "no se puede eliminar %s del índice"
 
-#: apply.c:4296
+#: apply.c:4311
 #, c-format
 msgid "corrupt patch for submodule %s"
 msgstr "parche corrupto para el submódulo %s"
 
-#: apply.c:4302
+#: apply.c:4317
 #, c-format
 msgid "unable to stat newly created file '%s'"
 msgstr "no es posible establecer el archivo recién creado '%s'"
 
-#: apply.c:4310
+#: apply.c:4325
 #, c-format
 msgid "unable to create backing store for newly created file %s"
 msgstr ""
 "no es posible crear una copia de seguridad para el archivo recién creado %s"
 
-#: apply.c:4316 apply.c:4461
+#: apply.c:4331 apply.c:4476
 #, c-format
 msgid "unable to add cache entry for %s"
 msgstr "no es posible agregar una entrada en el cache para %s"
 
-#: apply.c:4359
+#: apply.c:4374 builtin/bisect--helper.c:523
 #, c-format
 msgid "failed to write to '%s'"
 msgstr "falló escribir para '%s'"
 
-#: apply.c:4363
+#: apply.c:4378
 #, c-format
 msgid "closing file '%s'"
 msgstr "cerrando archivo '%s'"
 
-#: apply.c:4433
+#: apply.c:4448
 #, c-format
 msgid "unable to write file '%s' mode %o"
 msgstr "no es posible escribir el archivo '%s' modo %o"
 
-#: apply.c:4531
+#: apply.c:4546
 #, c-format
 msgid "Applied patch %s cleanly."
 msgstr "Parche %s aplicado limpiamente."
 
-#: apply.c:4539
+#: apply.c:4554
 msgid "internal error"
 msgstr "error interno"
 
-#: apply.c:4542
+#: apply.c:4557
 #, c-format
 msgid "Applying patch %%s with %d reject..."
 msgid_plural "Applying patch %%s with %d rejects..."
 msgstr[0] "Aplicando parche %%s con %d rechazo..."
 msgstr[1] "Aplicando parche %%s con %d rechazos..."
 
-#: apply.c:4553
+#: apply.c:4568
 #, c-format
 msgid "truncating .rej filename to %.*s.rej"
 msgstr "truncando el nombre de archivo .rej a %.*s.rej"
 
-#: apply.c:4561 builtin/fetch.c:902 builtin/fetch.c:1195
+#: apply.c:4576 builtin/fetch.c:933 builtin/fetch.c:1334
 #, c-format
 msgid "cannot open %s"
 msgstr "no se puede abrir %s"
 
-#: apply.c:4575
+#: apply.c:4590
 #, c-format
 msgid "Hunk #%d applied cleanly."
 msgstr "Hunk #%d aplicado limpiamente."
 
-#: apply.c:4579
+#: apply.c:4594
 #, c-format
 msgid "Rejected hunk #%d."
 msgstr "Hunk #%d rechazado."
 
-#: apply.c:4698
+#: apply.c:4718
 #, c-format
 msgid "Skipped patch '%s'."
 msgstr "Parche '%s' saltado."
 
-#: apply.c:4706
+#: apply.c:4726
 msgid "unrecognized input"
 msgstr "input no reconocido"
 
-#: apply.c:4726
+#: apply.c:4746
 msgid "unable to read index file"
 msgstr "no es posible leer el archivo índice"
 
-#: apply.c:4883
+#: apply.c:4903
 #, c-format
 msgid "can't open patch '%s': %s"
 msgstr "no se puede abrir el parche '%s': %s"
 
-#: apply.c:4910
+#: apply.c:4930
 #, c-format
 msgid "squelched %d whitespace error"
 msgid_plural "squelched %d whitespace errors"
 msgstr[0] "%d error de espacios en blanco aplastado"
 msgstr[1] "%d errores de espacios en blanco aplastados"
 
-#: apply.c:4916 apply.c:4931
+#: apply.c:4936 apply.c:4951
 #, c-format
 msgid "%d line adds whitespace errors."
 msgid_plural "%d lines add whitespace errors."
 msgstr[0] "%d línea agrega errores de espacios en blanco."
 msgstr[1] "%d líneas agregan errores de espacios en blanco."
 
-#: apply.c:4924
+#: apply.c:4944
 #, c-format
 msgid "%d line applied after fixing whitespace errors."
 msgid_plural "%d lines applied after fixing whitespace errors."
@@ -1361,185 +1362,180 @@ msgstr[0] ""
 msgstr[1] ""
 "%d líneas aplicadas después de arreglar los errores de espacios en blanco."
 
-#: apply.c:4940 builtin/add.c:612 builtin/mv.c:301 builtin/rm.c:406
+#: apply.c:4960 builtin/add.c:626 builtin/mv.c:304 builtin/rm.c:406
 msgid "Unable to write new index file"
 msgstr "No es posible escribir el archivo índice"
 
-#: apply.c:4968
+#: apply.c:4988
 msgid "don't apply changes matching the given path"
 msgstr "no aplicar cambios que concuerden con la ruta suministrada"
 
-#: apply.c:4971
+#: apply.c:4991
 msgid "apply changes matching the given path"
 msgstr "aplicar cambios que concuerden con la ruta suministrada"
 
-#: apply.c:4973 builtin/am.c:2259
+#: apply.c:4993 builtin/am.c:2266
 msgid "num"
 msgstr "num"
 
-#: apply.c:4974
+#: apply.c:4994
 msgid "remove <num> leading slashes from traditional diff paths"
 msgstr "eliminar <num> slashes iniciales de las rutas diff tradicionales"
 
-#: apply.c:4977
+#: apply.c:4997
 msgid "ignore additions made by the patch"
 msgstr "ignorar adiciones hechas por el parche"
 
-#: apply.c:4979
+#: apply.c:4999
 msgid "instead of applying the patch, output diffstat for the input"
 msgstr "en lugar de aplicar el parche, mostrar diffstat para la entrada"
 
-#: apply.c:4983
+#: apply.c:5003
 msgid "show number of added and deleted lines in decimal notation"
 msgstr "mostrar el numero de líneas agregadas y eliminadas en notación decimal"
 
-#: apply.c:4985
+#: apply.c:5005
 msgid "instead of applying the patch, output a summary for the input"
 msgstr "en lugar de aplicar el parche, mostrar un resumen para la entrada"
 
-#: apply.c:4987
+#: apply.c:5007
 msgid "instead of applying the patch, see if the patch is applicable"
 msgstr "en lugar de aplicar el parche, ver si el parche es aplicable"
 
-#: apply.c:4989
+#: apply.c:5009
 msgid "make sure the patch is applicable to the current index"
 msgstr "asegurar que el parche es aplicable al índice actual"
 
-#: apply.c:4991
+#: apply.c:5011
 msgid "mark new files with `git add --intent-to-add`"
 msgstr "marca los nuevos archivos con `git add --intent-to-add`"
 
-#: apply.c:4993
+#: apply.c:5013
 msgid "apply a patch without touching the working tree"
 msgstr "aplicar un parche sin tocar el árbol de trabajo"
 
-#: apply.c:4995
+#: apply.c:5015
 msgid "accept a patch that touches outside the working area"
 msgstr "aceptar un parche que toca fuera del área de trabajo"
 
-#: apply.c:4998
+#: apply.c:5018
 msgid "also apply the patch (use with --stat/--summary/--check)"
 msgstr "también aplicar el parche ( usar con --stat/--summary/--check"
 
-#: apply.c:5000
+#: apply.c:5020
 msgid "attempt three-way merge if a patch does not apply"
 msgstr "intentar merge de tres-vías si el parche no aplica"
 
-#: apply.c:5002
+#: apply.c:5022
 msgid "build a temporary index based on embedded index information"
 msgstr ""
 "construir un índice temporal basado en la información del índice incrustado"
 
-#: apply.c:5005 builtin/checkout-index.c:173 builtin/ls-files.c:525
+#: apply.c:5025 builtin/checkout-index.c:195 builtin/ls-files.c:540
 msgid "paths are separated with NUL character"
 msgstr "rutas están separadas con un carácter NULL"
 
-#: apply.c:5007
+#: apply.c:5027
 msgid "ensure at least <n> lines of context match"
 msgstr "asegurar que al menos concuerden <n> líneas del contexto concuerden"
 
-#: apply.c:5008 builtin/am.c:2238 builtin/interpret-trailers.c:98
+#: apply.c:5028 builtin/am.c:2245 builtin/interpret-trailers.c:98
 #: builtin/interpret-trailers.c:100 builtin/interpret-trailers.c:102
-#: builtin/pack-objects.c:3530 builtin/rebase.c:1332
+#: builtin/pack-objects.c:3577 builtin/rebase.c:1352
 msgid "action"
 msgstr "acción"
 
-#: apply.c:5009
+#: apply.c:5029
 msgid "detect new or modified lines that have whitespace errors"
 msgstr ""
 "detectar líneas nuevas o modificadas que contienen errores de espacios en "
 "blanco"
 
-#: apply.c:5012 apply.c:5015
+#: apply.c:5032 apply.c:5035
 msgid "ignore changes in whitespace when finding context"
 msgstr ""
 "ignorar cambios en los espacios en blanco cuando se encuentra el contexto"
 
-#: apply.c:5018
+#: apply.c:5038
 msgid "apply the patch in reverse"
 msgstr "aplicar el parche en reversa"
 
-#: apply.c:5020
+#: apply.c:5040
 msgid "don't expect at least one line of context"
 msgstr "no espera al menos una línea del contexto"
 
-#: apply.c:5022
+#: apply.c:5042
 msgid "leave the rejected hunks in corresponding *.rej files"
 msgstr "dejar los hunks rechazados en los archivos *.rej correspontientes"
 
-#: apply.c:5024
+#: apply.c:5044
 msgid "allow overlapping hunks"
 msgstr "permitir solapamiento de hunks"
 
-#: apply.c:5025 builtin/add.c:323 builtin/check-ignore.c:22
-#: builtin/commit.c:1366 builtin/count-objects.c:98 builtin/fsck.c:775
-#: builtin/log.c:2186 builtin/mv.c:123 builtin/read-tree.c:128
+#: apply.c:5045 builtin/add.c:337 builtin/check-ignore.c:22
+#: builtin/commit.c:1364 builtin/count-objects.c:98 builtin/fsck.c:757
+#: builtin/log.c:2286 builtin/mv.c:123 builtin/read-tree.c:128
 msgid "be verbose"
 msgstr "ser verboso"
 
-#: apply.c:5027
+#: apply.c:5047
 msgid "tolerate incorrectly detected missing new-line at the end of file"
 msgstr ""
 "tolerar nuevas líneas faltantes detectadas incorrectamente al final del "
 "archivo"
 
-#: apply.c:5030
+#: apply.c:5050
 msgid "do not trust the line counts in the hunk headers"
 msgstr "no confiar en el conteo de líneas en los headers del hunk"
 
-#: apply.c:5032 builtin/am.c:2247
+#: apply.c:5052 builtin/am.c:2254
 msgid "root"
 msgstr "raíz"
 
-#: apply.c:5033
+#: apply.c:5053
 msgid "prepend <root> to all filenames"
 msgstr "anteponer <root> a todos los nombres de archivos"
 
-#: archive-tar.c:125 archive-zip.c:351
+#: archive-tar.c:125 archive-zip.c:345
 #, c-format
 msgid "cannot stream blob %s"
 msgstr "no se puede transmitir el blob %s"
 
-#: archive-tar.c:266 archive-zip.c:369
+#: archive-tar.c:265 archive-zip.c:358
 #, c-format
 msgid "unsupported file mode: 0%o (SHA1: %s)"
 msgstr "modo de archivo no soportado: 0%o (SHA1: %s)"
 
-#: archive-tar.c:293 archive-zip.c:359
-#, c-format
-msgid "cannot read %s"
-msgstr "no se puede leer %s"
-
-#: archive-tar.c:465
+#: archive-tar.c:450
 #, c-format
 msgid "unable to start '%s' filter"
 msgstr "no se puede comenzar filtro '%s'"
 
-#: archive-tar.c:468
+#: archive-tar.c:453
 msgid "unable to redirect descriptor"
 msgstr "incapaz de redirigir descriptor"
 
-#: archive-tar.c:475
+#: archive-tar.c:460
 #, c-format
 msgid "'%s' filter reported error"
 msgstr "filtro '%s' reportó un error"
 
-#: archive-zip.c:319
+#: archive-zip.c:318
 #, c-format
 msgid "path is not valid UTF-8: %s"
 msgstr "ruta no válida UTF-8: %s"
 
-#: archive-zip.c:323
+#: archive-zip.c:322
 #, c-format
 msgid "path too long (%d chars, SHA1: %s): %s"
 msgstr "ruta muy larga (%d chars, SHA1: %s): %s"
 
-#: archive-zip.c:480 builtin/pack-objects.c:243 builtin/pack-objects.c:246
+#: archive-zip.c:469 builtin/pack-objects.c:244 builtin/pack-objects.c:247
 #, c-format
 msgid "deflate error (%d)"
 msgstr "error al desinflar (%d)"
 
-#: archive-zip.c:615
+#: archive-zip.c:603
 #, c-format
 msgid "timestamp too large for this system: %<PRIuMAX>"
 msgstr "timestamp muy largo para este sistema: %<PRIuMAX>"
@@ -1563,134 +1559,156 @@ msgstr ""
 msgid "git archive --remote <repo> [--exec <cmd>] --list"
 msgstr "git archive --remote <repo> [--exec <comando>] --list"
 
-#: archive.c:377 builtin/add.c:181 builtin/add.c:588 builtin/rm.c:315
+#: archive.c:192
+#, c-format
+msgid "cannot read %s"
+msgstr "no se puede leer %s"
+
+#: archive.c:345 sequencer.c:459 sequencer.c:1744 sequencer.c:2894
+#: sequencer.c:3335 sequencer.c:3444 builtin/am.c:249 builtin/commit.c:786
+#: builtin/merge.c:1139
+#, c-format
+msgid "could not read '%s'"
+msgstr "no se pudo leer '%s'"
+
+#: archive.c:430 builtin/add.c:189 builtin/add.c:602 builtin/rm.c:315
 #, c-format
 msgid "pathspec '%s' did not match any files"
 msgstr "ruta especificada '%s' no concordó con ninguna carpeta"
 
-#: archive.c:401
+#: archive.c:454
 #, c-format
 msgid "no such ref: %.*s"
 msgstr "no existe el ref: %.*s"
 
-#: archive.c:407
+#: archive.c:460
 #, c-format
 msgid "not a valid object name: %s"
 msgstr "nombre de objeto no válido: %s"
 
-#: archive.c:420
+#: archive.c:473
 #, c-format
 msgid "not a tree object: %s"
 msgstr "no es un objeto tree: %s"
 
-#: archive.c:432
+#: archive.c:485
 msgid "current working directory is untracked"
 msgstr "directorio de trabajo actual no rastreado"
 
-#: archive.c:464
+#: archive.c:526
+#, c-format
+msgid "File not found: %s"
+msgstr "Archivo no encontrado: %s"
+
+#: archive.c:528
+#, c-format
+msgid "Not a regular file: %s"
+msgstr "No es un archivo regular: %s"
+
+#: archive.c:555
 msgid "fmt"
 msgstr "fmt"
 
-#: archive.c:464
+#: archive.c:555
 msgid "archive format"
 msgstr "formato del archivo"
 
-#: archive.c:465 builtin/log.c:1674
+#: archive.c:556 builtin/log.c:1764
 msgid "prefix"
 msgstr "prefijo"
 
-#: archive.c:466
+#: archive.c:557
 msgid "prepend prefix to each pathname in the archive"
 msgstr "anteponer prefijo a cada ruta en el archivo"
 
-#: archive.c:467 builtin/blame.c:861 builtin/blame.c:865 builtin/blame.c:866
-#: builtin/commit-tree.c:117 builtin/config.c:130 builtin/fast-export.c:1208
-#: builtin/fast-export.c:1210 builtin/fast-export.c:1214 builtin/grep.c:907
-#: builtin/hash-object.c:105 builtin/ls-files.c:561 builtin/ls-files.c:564
-#: builtin/notes.c:412 builtin/notes.c:578 builtin/read-tree.c:123
-#: parse-options.h:190
+#: archive.c:558 archive.c:561 builtin/blame.c:884 builtin/blame.c:888
+#: builtin/blame.c:889 builtin/commit-tree.c:117 builtin/config.c:135
+#: builtin/fast-export.c:1207 builtin/fast-export.c:1209
+#: builtin/fast-export.c:1213 builtin/grep.c:920 builtin/hash-object.c:105
+#: builtin/ls-files.c:576 builtin/ls-files.c:579 builtin/notes.c:412
+#: builtin/notes.c:578 builtin/read-tree.c:123 parse-options.h:190
 msgid "file"
 msgstr "carpeta"
 
-#: archive.c:468 builtin/archive.c:90
+#: archive.c:559
+msgid "add untracked file to archive"
+msgstr "incluir archivos sin seguimiento al archivo"
+
+#: archive.c:562 builtin/archive.c:90
 msgid "write the archive to this file"
 msgstr "escribe el archivo en esta carpeta"
 
-#: archive.c:470
+#: archive.c:564
 msgid "read .gitattributes in working directory"
 msgstr "leer .gitattributes en el directorio de trabajo"
 
-#: archive.c:471
+#: archive.c:565
 msgid "report archived files on stderr"
 msgstr "reportar archivos archivados por stderr"
 
-#: archive.c:472
-msgid "store only"
-msgstr "solo guardar"
-
-#: archive.c:473
-msgid "compress faster"
-msgstr "comprimir más rápido"
-
-#: archive.c:481
-msgid "compress better"
-msgstr "comprimir mejor"
+#: archive.c:567
+msgid "set compression level"
+msgstr "configurar nivel de compresión"
 
-#: archive.c:484
+#: archive.c:570
 msgid "list supported archive formats"
 msgstr "listar los formatos de carpeta soportados"
 
-#: archive.c:486 builtin/archive.c:91 builtin/clone.c:113 builtin/clone.c:116
-#: builtin/submodule--helper.c:1406 builtin/submodule--helper.c:1911
+#: archive.c:572 builtin/archive.c:91 builtin/clone.c:114 builtin/clone.c:117
+#: builtin/submodule--helper.c:1830 builtin/submodule--helper.c:2335
 msgid "repo"
 msgstr "repo"
 
-#: archive.c:487 builtin/archive.c:92
+#: archive.c:573 builtin/archive.c:92
 msgid "retrieve the archive from remote repository <repo>"
 msgstr "obtener la carpeta del repositorio remoto <repo>"
 
-#: archive.c:488 builtin/archive.c:93 builtin/difftool.c:715
+#: archive.c:574 builtin/archive.c:93 builtin/difftool.c:714
 #: builtin/notes.c:498
 msgid "command"
 msgstr "comando"
 
-#: archive.c:489 builtin/archive.c:94
+#: archive.c:575 builtin/archive.c:94
 msgid "path to the remote git-upload-archive command"
 msgstr "ruta para el comando git-upload-archivo remoto"
 
-#: archive.c:496
+#: archive.c:582
 msgid "Unexpected option --remote"
 msgstr "Opción inesperada --remote"
 
-#: archive.c:498
+#: archive.c:584
 msgid "Option --exec can only be used together with --remote"
 msgstr "Opción --exec solo puede ser utilizada con --remote"
 
-#: archive.c:500
+#: archive.c:586
 msgid "Unexpected option --output"
 msgstr "Opción inesperada --output"
 
-#: archive.c:522
+#: archive.c:588
+msgid "Options --add-file and --remote cannot be used together"
+msgstr "Opciones --add-file y --remote no pueden ser usadas juntas"
+
+#: archive.c:610
 #, c-format
 msgid "Unknown archive format '%s'"
 msgstr "Formato de carpeta desconocido '%s'"
 
-#: archive.c:529
+#: archive.c:619
 #, c-format
 msgid "Argument not supported for format '%s': -%d"
 msgstr "Argumento no soportado para formato '%s': -%d"
 
-#: attr.c:212
+#: attr.c:202
 #, c-format
 msgid "%.*s is not a valid attribute name"
 msgstr "%.*s no es un nombre de atributo válido"
 
-#: attr.c:369
+#: attr.c:359
 #, c-format
 msgid "%s not allowed: %s:%d"
 msgstr "%s no permitido: %s:%d"
 
-#: attr.c:409
+#: attr.c:399
 msgid ""
 "Negative patterns are ignored in git attributes\n"
 "Use '\\!' for literal leading exclamation."
@@ -1698,22 +1716,22 @@ msgstr ""
 "Los patrones negativos son ignorados en los atributos de git\n"
 "Usa '\\!' para comenzar literalmente con exclamación."
 
-#: bisect.c:468
+#: bisect.c:489
 #, c-format
 msgid "Badly quoted content in file '%s': %s"
 msgstr "Revisa las comillas en el archivo '%s': %s"
 
-#: bisect.c:678
+#: bisect.c:699
 #, c-format
 msgid "We cannot bisect more!\n"
 msgstr "¡No podemos biseccionar más!\n"
 
-#: bisect.c:745
+#: bisect.c:766
 #, c-format
 msgid "Not a valid commit name %s"
 msgstr "No es un nombre de commit válido %s"
 
-#: bisect.c:770
+#: bisect.c:791
 #, c-format
 msgid ""
 "The merge base %s is bad.\n"
@@ -1722,7 +1740,7 @@ msgstr ""
 "La base de fisión %s está mal.\n"
 "Esto quiere decir que el bug ha sido arreglado entre %s y [%s].\n"
 
-#: bisect.c:775
+#: bisect.c:796
 #, c-format
 msgid ""
 "The merge base %s is new.\n"
@@ -1731,7 +1749,7 @@ msgstr ""
 "La base de fisión %s es nueva.\n"
 "Esta propiedad ha cambiado entre %s y [%s].\n"
 
-#: bisect.c:780
+#: bisect.c:801
 #, c-format
 msgid ""
 "The merge base %s is %s.\n"
@@ -1740,7 +1758,7 @@ msgstr ""
 "La base de fisión %s es %s.\n"
 "Esto quiere decir que el primer '%s' commit está entre %s y [%s].\n"
 
-#: bisect.c:788
+#: bisect.c:809
 #, c-format
 msgid ""
 "Some %s revs are not ancestors of the %s rev.\n"
@@ -1751,7 +1769,7 @@ msgstr ""
 "git bisect no puede trabajar bien en este caso.\n"
 "¿Tal vez confundiste la revisión %s y %s?\n"
 
-#: bisect.c:801
+#: bisect.c:822
 #, c-format
 msgid ""
 "the merge base between %s and [%s] must be skipped.\n"
@@ -1762,45 +1780,45 @@ msgstr ""
 "Así que no podemos estar seguros que el primer %s commit está entre%s y %s.\n"
 "Vamos a continuar de todas maneras."
 
-#: bisect.c:840
+#: bisect.c:861
 #, c-format
 msgid "Bisecting: a merge base must be tested\n"
 msgstr "Biseccionando: una base de fisión debe ser probada\n"
 
-#: bisect.c:890
+#: bisect.c:911
 #, c-format
 msgid "a %s revision is needed"
 msgstr "una %s revisión es necesaria"
 
-#: bisect.c:920 builtin/notes.c:177 builtin/tag.c:255
+#: bisect.c:941 builtin/notes.c:177 builtin/tag.c:287
 #, c-format
 msgid "could not create file '%s'"
 msgstr "no se pudo crear el archivo '%s'"
 
-#: bisect.c:966 builtin/merge.c:151
+#: bisect.c:987 builtin/merge.c:153
 #, c-format
 msgid "could not read file '%s'"
 msgstr "no se pudo leer el archivo '%s'"
 
-#: bisect.c:997
+#: bisect.c:1027
 msgid "reading bisect refs failed"
 msgstr "falló leer las refs de bisect"
 
-#: bisect.c:1019
+#: bisect.c:1057
 #, c-format
 msgid "%s was both %s and %s\n"
 msgstr "%s fue tanto %s como %s\n"
 
-#: bisect.c:1028
+#: bisect.c:1066
 #, c-format
 msgid ""
 "No testable commit found.\n"
-"Maybe you started with bad path parameters?\n"
+"Maybe you started with bad path arguments?\n"
 msgstr ""
 "No se encontró commit que se pueda probar.\n"
 "¿Quizás iniciaste con parámetros de rutas incorrectos?\n"
 
-#: bisect.c:1057
+#: bisect.c:1095
 #, c-format
 msgid "(roughly %d step)"
 msgid_plural "(roughly %d steps)"
@@ -1810,7 +1828,7 @@ msgstr[1] "(aproximadamente %d pasos)"
 #. TRANSLATORS: the last %s will be replaced with "(roughly %d
 #. steps)" translation.
 #.
-#: bisect.c:1063
+#: bisect.c:1101
 #, 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"
@@ -1830,11 +1848,11 @@ msgid "--reverse and --first-parent together require specified latest commit"
 msgstr ""
 "--reverse y --first-parent juntos requieren especificar el último commit"
 
-#: blame.c:2821 bundle.c:187 ref-filter.c:2200 remote.c:1924 sequencer.c:2018
-#: sequencer.c:4466 submodule.c:847 builtin/commit.c:1047 builtin/log.c:405
-#: builtin/log.c:1012 builtin/log.c:1541 builtin/log.c:1945 builtin/log.c:2235
-#: builtin/merge.c:415 builtin/pack-objects.c:3348 builtin/pack-objects.c:3363
-#: builtin/shortlog.c:192
+#: blame.c:2821 bundle.c:213 ref-filter.c:2206 remote.c:2041 sequencer.c:2146
+#: sequencer.c:4641 submodule.c:856 builtin/commit.c:1045 builtin/log.c:411
+#: builtin/log.c:1016 builtin/log.c:1624 builtin/log.c:2045 builtin/log.c:2335
+#: builtin/merge.c:424 builtin/pack-objects.c:3395 builtin/pack-objects.c:3410
+#: builtin/shortlog.c:255
 msgid "revision walk setup failed"
 msgstr "falló la configuración del camino de revisión"
 
@@ -2004,366 +2022,384 @@ msgstr "'%s' ya ha sido marcado en '%s'"
 msgid "HEAD of working tree %s is not updated"
 msgstr "HEAD del árbol de trabajo %s no está actualizada"
 
-#: bundle.c:47
+#: bundle.c:41
+#, c-format
+msgid "unrecognized bundle hash algorithm: %s"
+msgstr "algoritmo bundle hash desconocido %s"
+
+#: bundle.c:45
 #, c-format
-msgid "'%s' does not look like a v2 bundle file"
-msgstr "'%s' no se ve como un archivo bundle v2"
+msgid "unknown capability '%s'"
+msgstr "capacidad desconocida '%s'"
 
-#: bundle.c:69
-msgid "unknown hash algorithm length"
-msgstr "largo del algoritmo hash desconocido"
+#: bundle.c:71
+#, c-format
+msgid "'%s' does not look like a v2 or v3 bundle file"
+msgstr "'%s' no se ve como un archivo bundle v2 o v3"
 
-#: bundle.c:84
+#: bundle.c:110
 #, c-format
 msgid "unrecognized header: %s%s (%d)"
 msgstr "header no reconocido %s%s (%d)"
 
-#: bundle.c:110 rerere.c:480 rerere.c:690 sequencer.c:2270 sequencer.c:3034
+#: bundle.c:136 rerere.c:464 rerere.c:674 sequencer.c:2398 sequencer.c:3184
 #: builtin/commit.c:814
 #, c-format
 msgid "could not open '%s'"
 msgstr "no se pudo abrir '%s'"
 
-#: bundle.c:163
+#: bundle.c:189
 msgid "Repository lacks these prerequisite commits:"
 msgstr "Al repositorio le falta estos commits prerrequisito:"
 
-#: bundle.c:166
+#: bundle.c:192
 msgid "need a repository to verify a bundle"
 msgstr "se necesita un repositorio para verificar un bundle"
 
-#: bundle.c:217
+#: bundle.c:243
 #, c-format
 msgid "The bundle contains this ref:"
 msgid_plural "The bundle contains these %d refs:"
 msgstr[0] "El bundle contiene esta referencia:"
 msgstr[1] "El bundle contiene estas %d referencias:"
 
-#: bundle.c:224
+#: bundle.c:250
 msgid "The bundle records a complete history."
 msgstr "El bundle registra una historia completa."
 
-#: bundle.c:226
+#: bundle.c:252
 #, c-format
 msgid "The bundle requires this ref:"
 msgid_plural "The bundle requires these %d refs:"
 msgstr[0] "El bundle requiere esta referencia:"
 msgstr[1] "El bundle requiere estas %d referencias:"
 
-#: bundle.c:293
+#: bundle.c:319
 msgid "unable to dup bundle descriptor"
 msgstr "incapaz de duplicar bundle descriptor"
 
-#: bundle.c:300
+#: bundle.c:326
 msgid "Could not spawn pack-objects"
 msgstr "No se pudo crear los pack-objetcts"
 
-#: bundle.c:311
+#: bundle.c:337
 msgid "pack-objects died"
 msgstr "pack-objects murió"
 
-#: bundle.c:353
-msgid "rev-list died"
-msgstr "rev-list murió"
-
-#: bundle.c:402
+#: bundle.c:386
 #, c-format
 msgid "ref '%s' is excluded by the rev-list options"
 msgstr "referencia '%s' es excluida por las opciones de rev-list"
 
-#: bundle.c:481 builtin/log.c:208 builtin/log.c:1834 builtin/shortlog.c:306
+#: bundle.c:490
+#, c-format
+msgid "unsupported bundle version %d"
+msgstr "versión de bundle no soportada %d"
+
+#: bundle.c:492
+#, c-format
+msgid "cannot write bundle version %d with algorithm %s"
+msgstr "no se puede escribir la versión de paquete %d con el algoritmo %s"
+
+#: bundle.c:510 builtin/log.c:210 builtin/log.c:1926 builtin/shortlog.c:396
 #, c-format
 msgid "unrecognized argument: %s"
 msgstr "argumento no reconocido: %s"
 
-#: bundle.c:489
+#: bundle.c:539
 msgid "Refusing to create empty bundle."
 msgstr "Rechazando crear un bundle vacío."
 
-#: bundle.c:499
+#: bundle.c:549
 #, c-format
 msgid "cannot create '%s'"
 msgstr "no se puede crear '%s'"
 
-#: bundle.c:524
+#: bundle.c:574
 msgid "index-pack died"
 msgstr "index-pack murió"
 
+#: chunk-format.c:113
+msgid "terminating chunk id appears earlier than expected"
+msgstr "terminando porque el id del chunk aparece antes de lo esperado"
+
+#: chunk-format.c:122
+#, c-format
+msgid "improper chunk offset(s) %<PRIx64> and %<PRIx64>"
+msgstr "offset para chunk incorrecto %<PRIx64> y %<PRIx64>"
+
+#: chunk-format.c:129
+#, c-format
+msgid "duplicate chunk ID %<PRIx32> found"
+msgstr "se encontró ID de chuck %<PRIx32> duplicado"
+
+#: chunk-format.c:143
+#, c-format
+msgid "final chunk has non-zero id %<PRIx32>"
+msgstr "chunk final tiene un id distinto de cero %<PRIx32>"
+
 #: color.c:329
 #, c-format
 msgid "invalid color value: %.*s"
 msgstr "color inválido: %.*s"
 
-#: commit-graph.c:238
+#: commit-graph.c:197 midx.c:46
+msgid "invalid hash version"
+msgstr "versión de hash inválida"
+
+#: commit-graph.c:255
 msgid "commit-graph file is too small"
 msgstr "archivo commit-graph es muy pequeño"
 
-#: commit-graph.c:303
+#: commit-graph.c:348
 #, c-format
 msgid "commit-graph signature %X does not match signature %X"
 msgstr "firma %X en commit-graph no concuerda con firma %X"
 
-#: commit-graph.c:310
+#: commit-graph.c:355
 #, c-format
 msgid "commit-graph version %X does not match version %X"
 msgstr "versión de commit-graph %X no concuerda con versión %X"
 
-#: commit-graph.c:317
+#: commit-graph.c:362
 #, c-format
 msgid "commit-graph hash version %X does not match version %X"
 msgstr "versión de hash de commit-graph %X no concuerda con versión %X"
 
-#: commit-graph.c:339
-msgid "commit-graph chunk lookup table entry missing; file may be incomplete"
-msgstr ""
-"falta tabla de lookup del chunk en commit-graph; el archivo puede estar "
-"incompleto"
-
-#: commit-graph.c:349
-#, c-format
-msgid "commit-graph improper chunk offset %08x%08x"
-msgstr "offset del chunk de commit-graph inapropiado %08x%08x"
-
-#: commit-graph.c:417
+#: commit-graph.c:379
 #, c-format
-msgid "commit-graph chunk id %08x appears multiple times"
-msgstr "id de chunk de commit-graph %08x parece tener múltiples tiempos"
+msgid "commit-graph file is too small to hold %u chunks"
+msgstr "commit-graph file es demasiado pequeño para almacenar %u chunks"
 
-#: commit-graph.c:491
+#: commit-graph.c:472
 msgid "commit-graph has no base graphs chunk"
 msgstr "commit-graph no tiene una chunk base de graphs"
 
-#: commit-graph.c:501
+#: commit-graph.c:482
 msgid "commit-graph chain does not match"
 msgstr "cadena commit-graph no concuerda"
 
-#: commit-graph.c:549
+#: commit-graph.c:530
 #, c-format
 msgid "invalid commit-graph chain: line '%s' not a hash"
 msgstr "cadena de commit-graph inválida: línea '%s' no es un hash"
 
-#: commit-graph.c:573
+#: commit-graph.c:554
 msgid "unable to find all commit-graph files"
 msgstr "no es posible encontrar los archivos commit-graph"
 
-#: commit-graph.c:706 commit-graph.c:770
+#: commit-graph.c:735 commit-graph.c:772
 msgid "invalid commit position. commit-graph is likely corrupt"
 msgstr "posición de commit inválida. commit-graph está probablemente corrupto"
 
-#: commit-graph.c:727
+#: commit-graph.c:756
 #, c-format
 msgid "could not find commit %s"
 msgstr "no se pudo encontrar commit %s"
 
-#: commit-graph.c:1009 builtin/am.c:1292
+#: commit-graph.c:789
+msgid "commit-graph requires overflow generation data but has none"
+msgstr ""
+"commit-graph requiere datos de generación de desbordamiento pero no tiene "
+"ninguno"
+
+#: commit-graph.c:1065 builtin/am.c:1292
 #, c-format
 msgid "unable to parse commit %s"
 msgstr "no es posible analizar el commit %s"
 
-#: commit-graph.c:1157
-msgid "Writing changed paths Bloom filters index"
-msgstr "Escribiendo cambios de ruta del índice de filtros Bloom"
-
-#: commit-graph.c:1182
-msgid "Writing changed paths Bloom filters data"
-msgstr "Escribiendo cambios de ruta de datos de filtros Bloom"
-
-#: commit-graph.c:1221 builtin/pack-objects.c:2832
+#: commit-graph.c:1327 builtin/pack-objects.c:2872
 #, c-format
 msgid "unable to get type of object %s"
 msgstr "incapaz de obtener el tipo de objeto: %s"
 
-#: commit-graph.c:1257
+#: commit-graph.c:1358
 msgid "Loading known commits in commit graph"
 msgstr "Cargando commits conocidos en commit graph"
 
-#: commit-graph.c:1274
+#: commit-graph.c:1375
 msgid "Expanding reachable commits in commit graph"
 msgstr "Expandiendo commits alcanzables en commit graph"
 
-#: commit-graph.c:1294
+#: commit-graph.c:1395
 msgid "Clearing commit marks in commit graph"
 msgstr "Limpiando marcas de commits en commit graph"
 
-#: commit-graph.c:1313
+#: commit-graph.c:1414
+msgid "Computing commit graph topological levels"
+msgstr "Calculando niveles topológicos de commit graph"
+
+#: commit-graph.c:1467
 msgid "Computing commit graph generation numbers"
 msgstr "Calculando números de generación de commit graph"
 
-#: commit-graph.c:1367
+#: commit-graph.c:1548
 msgid "Computing commit changed paths Bloom filters"
 msgstr "Calculando números de generación de commit graph"
 
-#: commit-graph.c:1423
+#: commit-graph.c:1625
 msgid "Collecting referenced commits"
 msgstr "Recolectando commits referenciados"
 
-#: commit-graph.c:1447
+#: commit-graph.c:1650
 #, c-format
 msgid "Finding commits for commit graph in %d pack"
 msgid_plural "Finding commits for commit graph in %d packs"
 msgstr[0] "Encontrando commits para commit graph en %d pack"
 msgstr[1] "Encontrando commits para commit graph en %d packs"
 
-#: commit-graph.c:1460
+#: commit-graph.c:1663
 #, c-format
 msgid "error adding pack %s"
 msgstr "error agregando pack %s"
 
-#: commit-graph.c:1464
+#: commit-graph.c:1667
 #, c-format
 msgid "error opening index for %s"
 msgstr "error abriendo index para %s"
 
-#: commit-graph.c:1503
+#: commit-graph.c:1704
 msgid "Finding commits for commit graph among packed objects"
 msgstr "Encontrando commits para commit graph entre los objetos empaquetados"
 
-#: commit-graph.c:1518
-msgid "Counting distinct commits in commit graph"
-msgstr "Contando commits distintos en commit graph"
-
-#: commit-graph.c:1550
+#: commit-graph.c:1722
 msgid "Finding extra edges in commit graph"
 msgstr "Encontrando esquinas extra en commit graph"
 
-#: commit-graph.c:1599
+#: commit-graph.c:1771
 msgid "failed to write correct number of base graph ids"
 msgstr "falló al escribir el número correcto de ids de base graph"
 
-#: commit-graph.c:1633 midx.c:812
+#: commit-graph.c:1802 midx.c:794
 #, c-format
 msgid "unable to create leading directories of %s"
 msgstr "no se pudo crear directorios principales para %s"
 
-#: commit-graph.c:1646
+#: commit-graph.c:1815
 msgid "unable to create temporary graph layer"
 msgstr "no es posible crear un una capa de gráfico temporal"
 
-#: commit-graph.c:1651
+#: commit-graph.c:1820
 #, c-format
 msgid "unable to adjust shared permissions for '%s'"
 msgstr "no se pudo poner permisos a '%s'"
 
-#: commit-graph.c:1728
+#: commit-graph.c:1879
 #, c-format
 msgid "Writing out commit graph in %d pass"
 msgid_plural "Writing out commit graph in %d passes"
 msgstr[0] "Escribiendo commit graph en %d paso"
 msgstr[1] "Escribiendo commit graph en %d pasos"
 
-#: commit-graph.c:1773
+#: commit-graph.c:1915
 msgid "unable to open commit-graph chain file"
 msgstr "no se pudo abrir la cadena de archivos commit-graph"
 
-#: commit-graph.c:1789
+#: commit-graph.c:1931
 msgid "failed to rename base commit-graph file"
 msgstr "no se pudo renombrar el archivo base commit-graph"
 
-#: commit-graph.c:1809
+#: commit-graph.c:1951
 msgid "failed to rename temporary commit-graph file"
 msgstr "falló al renombrar el archivo temporal commit-graph"
 
-#: commit-graph.c:1935
+#: commit-graph.c:2084
 msgid "Scanning merged commits"
 msgstr "Escaneando commits fusionados"
 
-#: commit-graph.c:1946
-#, c-format
-msgid "unexpected duplicate commit id %s"
-msgstr "id de commit duplicado inesperado %s"
-
-#: commit-graph.c:1969
+#: commit-graph.c:2128
 msgid "Merging commit-graph"
 msgstr "Fusionando commit-graph"
 
-#: commit-graph.c:2156
-#, c-format
-msgid "the commit graph format cannot write %d commits"
-msgstr "el formato de gráficos de commit no pudede escribir %d commits"
+#: commit-graph.c:2235
+msgid "attempting to write a commit-graph, but 'core.commitGraph' is disabled"
+msgstr ""
+"intentando escribir un commit-graph, pero 'core.commitGraph' está "
+"deshabilitado"
 
-#: commit-graph.c:2167
+#: commit-graph.c:2342
 msgid "too many commits to write graph"
 msgstr "demasiados commits para escribir el gráfico"
 
-#: commit-graph.c:2260
+#: commit-graph.c:2440
 msgid "the commit-graph file has incorrect checksum and is likely corrupt"
 msgstr ""
 "el archivo de commit-graph tiene checksums incorrectos y probablemente está "
 "corrupto"
 
-#: commit-graph.c:2270
+#: commit-graph.c:2450
 #, c-format
 msgid "commit-graph has incorrect OID order: %s then %s"
 msgstr "commit-graph tiene un orden de OID incorrecto: %s luego %s"
 
-#: commit-graph.c:2280 commit-graph.c:2295
+#: commit-graph.c:2460 commit-graph.c:2475
 #, c-format
 msgid "commit-graph has incorrect fanout value: fanout[%d] = %u != %u"
 msgstr "commit-graph tiene un valor fanout incorrecto: fanout[%d] = %u != %u"
 
-#: commit-graph.c:2287
+#: commit-graph.c:2467
 #, c-format
 msgid "failed to parse commit %s from commit-graph"
 msgstr "falló al analizar commit %s para commit-graph"
 
-#: commit-graph.c:2305
+#: commit-graph.c:2485
 msgid "Verifying commits in commit graph"
 msgstr "Verificando commits en commit graph"
 
-#: commit-graph.c:2320
+#: commit-graph.c:2500
 #, c-format
 msgid "failed to parse commit %s from object database for commit-graph"
 msgstr ""
 "falló al analizar el commit %s de la base de datos de objetos para commit-"
 "graph"
 
-#: commit-graph.c:2327
+#: commit-graph.c:2507
 #, c-format
 msgid "root tree OID for commit %s in commit-graph is %s != %s"
 msgstr "árbol raíz OID para commit %s en commit-graph es %s != %s"
 
-#: commit-graph.c:2337
+#: commit-graph.c:2517
 #, c-format
 msgid "commit-graph parent list for commit %s is too long"
 msgstr "lista padre de commit-graph para commit %s es muy larga"
 
-#: commit-graph.c:2346
+#: commit-graph.c:2526
 #, c-format
 msgid "commit-graph parent for %s is %s != %s"
 msgstr "padre de commit-graph para %s es %s != %s"
 
-#: commit-graph.c:2360
+#: commit-graph.c:2540
 #, c-format
 msgid "commit-graph parent list for commit %s terminates early"
 msgstr "lista padre de commit-graph para commit %s termina antes"
 
-#: commit-graph.c:2365
+#: commit-graph.c:2545
 #, c-format
 msgid ""
 "commit-graph has generation number zero for commit %s, but non-zero elsewhere"
 msgstr ""
 "commit-graph ha generado número cero para %s, pero no-cero para los demás"
 
-#: commit-graph.c:2369
+#: commit-graph.c:2549
 #, c-format
 msgid ""
 "commit-graph has non-zero generation number for commit %s, but zero elsewhere"
 msgstr ""
 "commit-graph tiene generación no-cero para %s, pero cero para los demás"
 
-#: commit-graph.c:2385
+#: commit-graph.c:2566
 #, c-format
-msgid "commit-graph generation for commit %s is %u != %u"
-msgstr "generación commit-graph para commit %s es %u != %u"
+msgid "commit-graph generation for commit %s is %<PRIuMAX> < %<PRIuMAX>"
+msgstr "generación commit-graph para commit %s es %<PRIuMAX> < %<PRIuMAX>"
 
-#: commit-graph.c:2391
+#: commit-graph.c:2572
 #, c-format
 msgid "commit date for commit %s in commit-graph is %<PRIuMAX> != %<PRIuMAX>"
 msgstr ""
 "fecha de commit para commit %s en commit-graph es %<PRIuMAX> != %<PRIuMAX>"
 
-#: commit.c:52 sequencer.c:2739 builtin/am.c:359 builtin/am.c:403
-#: builtin/am.c:1371 builtin/am.c:2013 builtin/replace.c:457
+#: commit.c:52 sequencer.c:2887 builtin/am.c:359 builtin/am.c:403
+#: builtin/am.c:1371 builtin/am.c:2018 builtin/replace.c:457
 #, c-format
 msgid "could not parse %s"
 msgstr "no se puede analizar %s"
@@ -2393,27 +2429,27 @@ msgstr ""
 "Apapa este mensaje ejecutando\n"
 "\"git config advice.graftFileDeprecated false\""
 
-#: commit.c:1172
+#: commit.c:1223
 #, c-format
 msgid "Commit %s has an untrusted GPG signature, allegedly by %s."
 msgstr "Commit %s tiene una firma GPG no confiable, pretendidamente por %s."
 
-#: commit.c:1176
+#: commit.c:1227
 #, c-format
 msgid "Commit %s has a bad GPG signature allegedly by %s."
 msgstr "Commit %s tiene una mala firma GPG pretendidamente por %s."
 
-#: commit.c:1179
+#: commit.c:1230
 #, c-format
 msgid "Commit %s does not have a GPG signature."
 msgstr "Commit %s no tiene una firma GPG."
 
-#: commit.c:1182
+#: commit.c:1233
 #, c-format
 msgid "Commit %s has a good GPG signature by %s\n"
 msgstr "El Commit %s tiene una buena firma GPG por %s\n"
 
-#: commit.c:1436
+#: commit.c:1487
 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"
@@ -2428,7 +2464,7 @@ msgstr ""
 msgid "memory exhausted"
 msgstr "memoria agotada"
 
-#: config.c:125
+#: config.c:126
 #, c-format
 msgid ""
 "exceeded maximum include depth (%d) while including\n"
@@ -2443,293 +2479,337 @@ msgstr ""
 "\t%s\n"
 "Esto puede ser causado por inclusiones circulares."
 
-#: config.c:141
+#: config.c:142
 #, c-format
 msgid "could not expand include path '%s'"
 msgstr "no se pudo expandir rutas de inclusión '%s'"
 
-#: config.c:152
+#: config.c:153
 msgid "relative config includes must come from files"
 msgstr "inclusiones de configuración relativas tienen que venir de archivos"
 
-#: config.c:198
+#: config.c:199
 msgid "relative config include conditionals must come from files"
 msgstr ""
 "la configuración relativa incluye condicionales que deben venir de archivos"
 
-#: config.c:378
+#: config.c:396
+#, c-format
+msgid "invalid config format: %s"
+msgstr "formato config inválido: %s"
+
+#: config.c:400
+#, c-format
+msgid "missing environment variable name for configuration '%.*s'"
+msgstr "falta el nombre de la variable de entorno para la configuración '%.*s'"
+
+#: config.c:405
+#, c-format
+msgid "missing environment variable '%s' for configuration '%.*s'"
+msgstr "Falta la variable de entorno '%s' para la configuración '%.*s'"
+
+#: config.c:442
 #, c-format
 msgid "key does not contain a section: %s"
 msgstr "llave no contiene una sección: %s"
 
-#: config.c:384
+#: config.c:448
 #, c-format
 msgid "key does not contain variable name: %s"
 msgstr "llave no contiene el nombre de variable: %s"
 
-#: config.c:408 sequencer.c:2456
+#: config.c:472 sequencer.c:2588
 #, c-format
 msgid "invalid key: %s"
 msgstr "llave inválida: %s"
 
-#: config.c:414
+#: config.c:478
 #, c-format
 msgid "invalid key (newline): %s"
 msgstr "llave inválida (nueva línea): %s"
 
-#: config.c:450 config.c:462
+#: config.c:511
+msgid "empty config key"
+msgstr "clave de config vacía"
+
+#: config.c:529 config.c:541
 #, c-format
 msgid "bogus config parameter: %s"
 msgstr "parámetro de configuración malogrado: %s"
 
-#: config.c:497
+#: config.c:555 config.c:572 config.c:579 config.c:588
 #, c-format
 msgid "bogus format in %s"
 msgstr "formato malogrado en %s"
 
-#: config.c:836
+#: config.c:622
+#, c-format
+msgid "bogus count in %s"
+msgstr "conteo malogrado en %s"
+
+#: config.c:626
+#, c-format
+msgid "too many entries in %s"
+msgstr "demasiadas entradas en %s"
+
+#: config.c:636
+#, c-format
+msgid "missing config key %s"
+msgstr "llave de configuración faltante %s"
+
+#: config.c:644
+#, c-format
+msgid "missing config value %s"
+msgstr "valor de config faltante para %s"
+
+#: config.c:995
 #, c-format
 msgid "bad config line %d in blob %s"
 msgstr "mala línea de config %d en el blob %s"
 
-#: config.c:840
+#: config.c:999
 #, c-format
 msgid "bad config line %d in file %s"
 msgstr "mala línea de config %d en el archivo %s"
 
-#: config.c:844
+#: config.c:1003
 #, c-format
 msgid "bad config line %d in standard input"
 msgstr "mala línea de config %d en la entrada standard"
 
-#: config.c:848
+#: config.c:1007
 #, 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:852
+#: config.c:1011
 #, 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:856
+#: config.c:1015
 #, c-format
 msgid "bad config line %d in %s"
 msgstr "mala línea de config %d en %s"
 
-#: config.c:993
+#: config.c:1152
 msgid "out of range"
 msgstr "fuera de rango"
 
-#: config.c:993
+#: config.c:1152
 msgid "invalid unit"
 msgstr "unidad inválida"
 
-#: config.c:994
+#: config.c:1153
 #, c-format
 msgid "bad numeric config value '%s' for '%s': %s"
 msgstr "mal valor de config numérica '%s' para '%s': %s"
 
-#: config.c:1013
+#: config.c:1163
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in blob %s: %s"
 msgstr "mal valor de config numérica '%s' para '%s' en el blob %s: %s"
 
-#: config.c:1016
+#: config.c:1166
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in file %s: %s"
 msgstr "mal valor de config numérica '%s' para '%s' en el archivo %s: %s"
 
-#: config.c:1019
+#: config.c:1169
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in standard input: %s"
 msgstr "mal valor de config numérica '%s' para '%s' en la entrada standard: %s"
 
-#: config.c:1022
+#: config.c:1172
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in submodule-blob %s: %s"
 msgstr ""
 "mal valor de config numérica '%s' para '%s' en el submódulo-blob %s: %s"
 
-#: config.c:1025
+#: config.c:1175
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in command line %s: %s"
 msgstr ""
 "mal valor de config numérica '%s' para '%s' en la línea de comando %s: %s"
 
-#: config.c:1028
+#: config.c:1178
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in %s: %s"
 msgstr "mal valor de config numérica '%s' para '%s' en %s: %s"
 
-#: config.c:1123
+#: config.c:1194
+#, c-format
+msgid "bad boolean config value '%s' for '%s'"
+msgstr "mal valor de config booleana '%s' para '%s'"
+
+#: config.c:1289
 #, c-format
 msgid "failed to expand user dir in: '%s'"
 msgstr "falló al expandir el directorio de usuario en: '%s'"
 
-#: config.c:1132
+#: config.c:1298
 #, 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:1223
+#: config.c:1391
 #, c-format
 msgid "abbrev length out of range: %d"
 msgstr "largo de abreviatura fuera de rango: %d"
 
-#: config.c:1237 config.c:1248
+#: config.c:1405 config.c:1416
 #, c-format
 msgid "bad zlib compression level %d"
 msgstr "nivel de compresión de zlib erróneo %d"
 
-#: config.c:1340
+#: config.c:1508
 msgid "core.commentChar should only be one character"
 msgstr "core.commentChar debería tener solo un caracter"
 
-#: config.c:1373
+#: config.c:1541
 #, c-format
 msgid "invalid mode for object creation: %s"
 msgstr "modo inválido de creación de objetos: %s"
 
-#: config.c:1445
+#: config.c:1613
 #, c-format
 msgid "malformed value for %s"
 msgstr "valor malformado para %s"
 
-#: config.c:1471
+#: config.c:1639
 #, c-format
 msgid "malformed value for %s: %s"
 msgstr "valor malformado para %s: %s"
 
-#: config.c:1472
+#: config.c:1640
 msgid "must be one of nothing, matching, simple, upstream or current"
 msgstr "debe ser uno de nothing, matching, simple, upstream o current"
 
-#: config.c:1533 builtin/pack-objects.c:3617
+#: config.c:1701 builtin/pack-objects.c:3666
 #, c-format
 msgid "bad pack compression level %d"
 msgstr "nivel de compresión de pack erróneo %d"
 
-#: config.c:1655
+#: config.c:1823
 #, c-format
 msgid "unable to load config blob object '%s'"
 msgstr "incapaz de cargar configuración de objeto blob '%s'"
 
-#: config.c:1658
+#: config.c:1826
 #, c-format
 msgid "reference '%s' does not point to a blob"
 msgstr "referencia '%s' no apunta a un blob"
 
-#: config.c:1675
+#: config.c:1843
 #, c-format
 msgid "unable to resolve config blob '%s'"
 msgstr "no se posible resolver configuración de blob '%s'"
 
-#: config.c:1705
+#: config.c:1873
 #, c-format
 msgid "failed to parse %s"
 msgstr "no se pudo analizar %s"
 
-#: config.c:1759
+#: config.c:1927
 msgid "unable to parse command-line config"
 msgstr "no es posible analizar la configuración de la línea de comando"
 
-#: config.c:2113
+#: config.c:2290
 msgid "unknown error occurred while reading the configuration files"
 msgstr ""
 "error desconocido ocurrió mientras se leían los archivos de configuración"
 
-#: config.c:2283
+#: config.c:2464
 #, c-format
 msgid "Invalid %s: '%s'"
 msgstr "Inválido %s: '%s'"
 
-#: config.c:2328
+#: config.c:2509
 #, 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:2374
+#: config.c:2555
 #, 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:2376
+#: config.c:2557
 #, 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:2457
+#: config.c:2641
 #, c-format
 msgid "invalid section name '%s'"
 msgstr "nombre de sección inválido '%s'"
 
-#: config.c:2489
+#: config.c:2673
 #, c-format
 msgid "%s has multiple values"
 msgstr "%s tiene múltiples valores"
 
-#: config.c:2518
+#: config.c:2702
 #, c-format
 msgid "failed to write new configuration file %s"
 msgstr "falló al escribir nuevo archivo de configuración %s"
 
-#: config.c:2770 config.c:3094
+#: config.c:2954 config.c:3280
 #, c-format
 msgid "could not lock config file %s"
 msgstr "no se pudo bloquear archivo de configuración %s"
 
-#: config.c:2781
+#: config.c:2965
 #, c-format
 msgid "opening %s"
 msgstr "abriendo %s"
 
-#: config.c:2816 builtin/config.c:344
+#: config.c:3002 builtin/config.c:361
 #, c-format
 msgid "invalid pattern: %s"
 msgstr "patrón inválido: %s"
 
-#: config.c:2841
+#: config.c:3027
 #, c-format
 msgid "invalid config file %s"
 msgstr "archivo de configuración inválido: %s"
 
-#: config.c:2854 config.c:3107
+#: config.c:3040 config.c:3293
 #, c-format
 msgid "fstat on %s failed"
 msgstr "fstat en %s falló"
 
-#: config.c:2865
+#: config.c:3051
 #, c-format
 msgid "unable to mmap '%s'"
 msgstr "no es posible hacer mmap '%s'"
 
-#: config.c:2874 config.c:3112
+#: config.c:3060 config.c:3298
 #, c-format
 msgid "chmod on %s failed"
 msgstr "chmod en %s falló"
 
-#: config.c:2959 config.c:3209
+#: config.c:3145 config.c:3395
 #, c-format
 msgid "could not write config file %s"
 msgstr "no se pudo escribir el archivo de configuración %s"
 
-#: config.c:2993
+#: config.c:3179
 #, c-format
 msgid "could not set '%s' to '%s'"
 msgstr "no se pudo configurar '%s' a '%s'"
 
-#: config.c:2995 builtin/remote.c:655 builtin/remote.c:849 builtin/remote.c:857
+#: config.c:3181 builtin/remote.c:657 builtin/remote.c:855 builtin/remote.c:863
 #, c-format
 msgid "could not unset '%s'"
 msgstr "no se pudo desactivar '%s'"
 
-#: config.c:3085
+#: config.c:3271
 #, c-format
 msgid "invalid section name: %s"
 msgstr "sección de nombre inválida: %s"
 
-#: config.c:3252
+#: config.c:3438
 #, c-format
 msgid "missing value for '%s'"
 msgstr "valor faltante para '%s'"
@@ -2791,45 +2871,45 @@ msgstr "paquete inválido"
 msgid "protocol error: unexpected '%s'"
 msgstr "error de protocolo: '%s' inesperado"
 
-#: connect.c:473
+#: connect.c:497
 #, c-format
 msgid "unknown object format '%s' specified by server"
 msgstr "formato de objeto desconocido '%s' ha sido provisto por el servidor"
 
-#: connect.c:500
+#: connect.c:526
 #, c-format
 msgid "invalid ls-refs response: %s"
 msgstr "respuesta de referencias ls-refs inválida: %s"
 
-#: connect.c:504
+#: connect.c:530
 msgid "expected flush after ref listing"
 msgstr "flush esperado tras listado de refs"
 
-#: connect.c:507
+#: connect.c:533
 msgid "expected response end packet after ref listing"
 msgstr "se esperaba un paquete final luego del ref listing"
 
-#: connect.c:640
+#: connect.c:666
 #, c-format
 msgid "protocol '%s' is not supported"
 msgstr "protocolo '%s' no es soportado"
 
-#: connect.c:691
+#: connect.c:717
 msgid "unable to set SO_KEEPALIVE on socket"
 msgstr "no es posible configurar SO_KEEPALIVE en el socket"
 
-#: connect.c:731 connect.c:794
+#: connect.c:757 connect.c:820
 #, c-format
 msgid "Looking up %s ... "
 msgstr "Revisando %s... "
 
-#: connect.c:735
+#: connect.c:761
 #, c-format
 msgid "unable to look up %s (port %s) (%s)"
 msgstr "no se puede revisar %s (puerto %s) (%s)"
 
 #. TRANSLATORS: this is the end of "Looking up %s ... "
-#: connect.c:739 connect.c:810
+#: connect.c:765 connect.c:836
 #, c-format
 msgid ""
 "done.\n"
@@ -2838,7 +2918,7 @@ msgstr ""
 "hecho.\n"
 "Conectando a %s (puerto %s) ... "
 
-#: connect.c:761 connect.c:838
+#: connect.c:787 connect.c:864
 #, c-format
 msgid ""
 "unable to connect to %s:\n"
@@ -2848,74 +2928,78 @@ msgstr ""
 "%s"
 
 #. TRANSLATORS: this is the end of "Connecting to %s (port %s) ... "
-#: connect.c:767 connect.c:844
+#: connect.c:793 connect.c:870
 msgid "done."
 msgstr "hecho."
 
-#: connect.c:798
+#: connect.c:824
 #, c-format
 msgid "unable to look up %s (%s)"
 msgstr "no es posible revisar %s (%s)"
 
-#: connect.c:804
+#: connect.c:830
 #, c-format
 msgid "unknown port %s"
 msgstr "puerto desconocido %s"
 
-#: connect.c:941 connect.c:1271
+#: connect.c:967 connect.c:1299
 #, c-format
 msgid "strange hostname '%s' blocked"
 msgstr "hostname extraño '%s' bloqueado"
 
-#: connect.c:943
+#: connect.c:969
 #, c-format
 msgid "strange port '%s' blocked"
 msgstr "puerto extraño '%s' bloqueado"
 
-#: connect.c:953
+#: connect.c:979
 #, c-format
 msgid "cannot start proxy %s"
 msgstr "no se puede comenzar proxy %s"
 
-#: connect.c:1024
+#: connect.c:1050
 msgid "no path specified; see 'git help pull' for valid url syntax"
 msgstr ""
 "no hay ruta especificada; vea 'git help pull' para sintaxis de url válidas"
 
-#: connect.c:1219
+#: connect.c:1190
+msgid "newline is forbidden in git:// hosts and repo paths"
+msgstr "la nueva línea está prohibida en git://hosts y rutas de repositorio"
+
+#: connect.c:1247
 msgid "ssh variant 'simple' does not support -4"
 msgstr "variante 'simple' de ssh no soporta -4"
 
-#: connect.c:1231
+#: connect.c:1259
 msgid "ssh variant 'simple' does not support -6"
 msgstr "variante 'simple' de ssh no soporta -6"
 
-#: connect.c:1248
+#: connect.c:1276
 msgid "ssh variant 'simple' does not support setting port"
 msgstr "variante ssh 'simple' no soporta configurar puerto"
 
-#: connect.c:1360
+#: connect.c:1388
 #, c-format
 msgid "strange pathname '%s' blocked"
 msgstr "ruta extraña '%s' bloqueada"
 
-#: connect.c:1407
+#: connect.c:1436
 msgid "unable to fork"
 msgstr "no es posible hacer fork"
 
-#: connected.c:109 builtin/fsck.c:209 builtin/prune.c:45
+#: connected.c:108 builtin/fsck.c:191 builtin/prune.c:45
 msgid "Checking connectivity"
 msgstr "Verificando conectividad"
 
-#: connected.c:121
+#: connected.c:120
 msgid "Could not run 'git rev-list'"
 msgstr "No se pudo correr 'git rev-list'"
 
-#: connected.c:141
+#: connected.c:144
 msgid "failed write to rev-list"
 msgstr "falló escribir a rev-list"
 
-#: connected.c:148
+#: connected.c:149
 msgid "failed to close rev-list's stdin"
 msgstr "falló al cerrar la entrada standard de rev-list"
 
@@ -2990,40 +3074,40 @@ msgstr "falló al codificar '%s' de %s a %s"
 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:668
+#: convert.c:665
 #, c-format
 msgid "cannot fork to run external filter '%s'"
 msgstr "no se puede hacer fork para ejecutar filtros externos '%s'"
 
-#: convert.c:688
+#: convert.c:685
 #, c-format
 msgid "cannot feed the input to external filter '%s'"
 msgstr "no se pueden alimentar de input a los filtros externos '%s'"
 
-#: convert.c:695
+#: convert.c:692
 #, c-format
 msgid "external filter '%s' failed %d"
 msgstr "filtro externo '%s' falló %d"
 
-#: convert.c:730 convert.c:733
+#: convert.c:727 convert.c:730
 #, c-format
 msgid "read from external filter '%s' failed"
 msgstr "lectura de filtro externo '%s' falló"
 
-#: convert.c:736 convert.c:791
+#: convert.c:733 convert.c:788
 #, c-format
 msgid "external filter '%s' failed"
 msgstr "filtro externo '%s' falló"
 
-#: convert.c:840
+#: convert.c:837
 msgid "unexpected filter type"
 msgstr "tipo de filtro inesperado"
 
-#: convert.c:851
+#: convert.c:848
 msgid "path name too long for external filter"
 msgstr "nombre de ruta muy largo para filtro externo"
 
-#: convert.c:943
+#: convert.c:940
 #, c-format
 msgid ""
 "external filter '%s' is not available anymore although not all paths have "
@@ -3032,16 +3116,16 @@ msgstr ""
 "filtro externo '%s' ya no está disponible aunque no todas las rutas han sido "
 "filtradas"
 
-#: convert.c:1243
+#: convert.c:1240
 msgid "true/false are no valid working-tree-encodings"
 msgstr "true/false no son working-tree-encodings válidos"
 
-#: convert.c:1431 convert.c:1465
+#: convert.c:1428 convert.c:1462
 #, c-format
 msgid "%s: clean filter '%s' failed"
 msgstr "%s: falló al limpiar filtro '%s'"
 
-#: convert.c:1511
+#: convert.c:1508
 #, c-format
 msgid "%s: smudge filter %s failed"
 msgstr "%s: filtro smudge %s falló"
@@ -3059,17 +3143,17 @@ msgstr "rehusando trabajar con credenciales faltantes en el campo host"
 msgid "refusing to work with credential missing protocol field"
 msgstr "rehusando trabajar con credenciales faltantes en el campo protocolo"
 
-#: credential.c:396
+#: credential.c:394
 #, c-format
 msgid "url contains a newline in its %s component: %s"
 msgstr "url contiene un espace de línea en su componente %s: %s"
 
-#: credential.c:440
+#: credential.c:438
 #, c-format
 msgid "url has no scheme: %s"
 msgstr "url no tiene scheme: %s"
 
-#: credential.c:513
+#: credential.c:511
 #, c-format
 msgid "credential url cannot be parsed: %s"
 msgstr "url credencial no puede ser analizada: %s"
@@ -3166,6 +3250,31 @@ msgstr "regex isla de config tiene muchos grupos de captura (max=%d)"
 msgid "Marked %d islands, done.\n"
 msgstr "%d islas marcadas, listo.\n"
 
+#: diff-merges.c:70
+#, c-format
+msgid "unknown value for --diff-merges: %s"
+msgstr "valor desconocido para --diff-merges: %s"
+
+#: diff-lib.c:534
+msgid "--merge-base does not work with ranges"
+msgstr "--merge-base no funciona con rangos"
+
+#: diff-lib.c:536
+msgid "--merge-base only works with commits"
+msgstr "--merge-base solo funciona con confirmaciones"
+
+#: diff-lib.c:553
+msgid "unable to get HEAD"
+msgstr "no es posible obtener HEAD"
+
+#: diff-lib.c:560
+msgid "no merge base found"
+msgstr "no se encontró base de fusión"
+
+#: diff-lib.c:562
+msgid "multiple merge bases found"
+msgstr "múltiples bases de fusión encontradas"
+
 #: diff-no-index.c:238
 msgid "git diff --no-index [<options>] <path> <path>"
 msgstr "git diff --no-index [<opciones>] <path> <path>"
@@ -3229,35 +3338,35 @@ msgstr ""
 "Errores en la variable de config 'diff.dirstat' encontrados:\n"
 "%s"
 
-#: diff.c:4243
+#: diff.c:4276
 #, c-format
 msgid "external diff died, stopping at %s"
 msgstr "diff externo murió, deteniendo en %s"
 
-#: diff.c:4589
+#: diff.c:4628
 msgid "--name-only, --name-status, --check and -s are mutually exclusive"
 msgstr "--name-only, --name-status, --check y -s son mutuamente exclusivas"
 
-#: diff.c:4592
+#: diff.c:4631
 msgid "-G, -S and --find-object are mutually exclusive"
 msgstr "-G, -S y --find-object son mutuamente exclusivas"
 
-#: diff.c:4670
+#: diff.c:4710
 msgid "--follow requires exactly one pathspec"
 msgstr "--follow requiere exactamente un pathspec"
 
-#: diff.c:4718
+#: diff.c:4758
 #, c-format
 msgid "invalid --stat value: %s"
 msgstr "valor --stat inválido: %s"
 
-#: diff.c:4723 diff.c:4728 diff.c:4733 diff.c:4738 diff.c:5250
-#: parse-options.c:197 parse-options.c:201
+#: diff.c:4763 diff.c:4768 diff.c:4773 diff.c:4778 diff.c:5306
+#: parse-options.c:197 parse-options.c:201 builtin/commit-graph.c:180
 #, c-format
 msgid "%s expects a numerical value"
 msgstr "%s espera un valor numérico"
 
-#: diff.c:4755
+#: diff.c:4795
 #, c-format
 msgid ""
 "Failed to parse --dirstat/-X option parameter:\n"
@@ -3266,42 +3375,42 @@ msgstr ""
 "Falló al analizar parámetro de opción --dirstat/-X:\n"
 "%s"
 
-#: diff.c:4840
+#: diff.c:4880
 #, c-format
 msgid "unknown change class '%c' in --diff-filter=%s"
 msgstr "cambio de clase desconocido '%c' en --diff-filter=%s"
 
-#: diff.c:4864
+#: diff.c:4904
 #, c-format
 msgid "unknown value after ws-error-highlight=%.*s"
 msgstr "valor desconocido luego de ws-error-highlight=%.*s"
 
-#: diff.c:4878
+#: diff.c:4918
 #, c-format
 msgid "unable to resolve '%s'"
 msgstr "no se puede resolver '%s'"
 
-#: diff.c:4928 diff.c:4934
+#: diff.c:4968 diff.c:4974
 #, c-format
 msgid "%s expects <n>/<m> form"
 msgstr "%s espera forma <n>/<m>"
 
-#: diff.c:4946
+#: diff.c:4986
 #, c-format
 msgid "%s expects a character, got '%s'"
 msgstr "%s esperaba un char, se obtuvo '%s'"
 
-#: diff.c:4967
+#: diff.c:5007
 #, c-format
 msgid "bad --color-moved argument: %s"
 msgstr "mal argumento --color-moved: %s"
 
-#: diff.c:4986
+#: diff.c:5026
 #, c-format
 msgid "invalid mode '%s' in --color-moved-ws"
 msgstr "modo inválido '%s' en --color-moved-ws"
 
-#: diff.c:5026
+#: diff.c:5066
 msgid ""
 "option diff-algorithm accepts \"myers\", \"minimal\", \"patience\" and "
 "\"histogram\""
@@ -3309,154 +3418,159 @@ msgstr ""
 "opción diff-algorithm acepta \"myers\", \"minimal\", \"patience\" e "
 "\"histogram\""
 
-#: diff.c:5062 diff.c:5082
+#: diff.c:5102 diff.c:5122
 #, c-format
 msgid "invalid argument to %s"
 msgstr "argumento inválido para %s"
 
-#: diff.c:5219
+#: diff.c:5226
+#, c-format
+msgid "invalid regex given to -I: '%s'"
+msgstr "regex inválido para -I: '%s'"
+
+#: diff.c:5275
 #, c-format
 msgid "failed to parse --submodule option parameter: '%s'"
 msgstr "falló al analizar parámetro de opción --submodule: '%s'"
 
-#: diff.c:5275
+#: diff.c:5331
 #, c-format
 msgid "bad --word-diff argument: %s"
 msgstr "mal argumento --word-diff: %s"
 
-#: diff.c:5298
+#: diff.c:5367
 msgid "Diff output format options"
 msgstr "Opciones de formato de salida para diff"
 
-#: diff.c:5300 diff.c:5306
+#: diff.c:5369 diff.c:5375
 msgid "generate patch"
 msgstr "generar parche"
 
-#: diff.c:5303 builtin/log.c:177
+#: diff.c:5372 builtin/log.c:179
 msgid "suppress diff output"
 msgstr "suprimir salida de diff"
 
-#: diff.c:5308 diff.c:5422 diff.c:5429
+#: diff.c:5377 diff.c:5491 diff.c:5498
 msgid "<n>"
 msgstr "<n>"
 
-#: diff.c:5309 diff.c:5312
+#: diff.c:5378 diff.c:5381
 msgid "generate diffs with <n> lines context"
 msgstr "genera diffs con <n> líneas de contexto"
 
-#: diff.c:5314
+#: diff.c:5383
 msgid "generate the diff in raw format"
 msgstr "genera el diff en formato raw"
 
-#: diff.c:5317
+#: diff.c:5386
 msgid "synonym for '-p --raw'"
 msgstr "sinónimo para '-p --stat'"
 
-#: diff.c:5321
+#: diff.c:5390
 msgid "synonym for '-p --stat'"
 msgstr "sinónimo para '-p --stat'"
 
-#: diff.c:5325
+#: diff.c:5394
 msgid "machine friendly --stat"
 msgstr "--stat amigable para máquina"
 
-#: diff.c:5328
+#: diff.c:5397
 msgid "output only the last line of --stat"
 msgstr "mostrar solo la última línea para --stat"
 
-#: diff.c:5330 diff.c:5338
+#: diff.c:5399 diff.c:5407
 msgid "<param1,param2>..."
 msgstr "<param1,param2>..."
 
-#: diff.c:5331
+#: diff.c:5400
 msgid ""
 "output the distribution of relative amount of changes for each sub-directory"
 msgstr ""
 "muestra la distribución de cantidades de cambios relativa para cada "
 "subdirectorio"
 
-#: diff.c:5335
+#: diff.c:5404
 msgid "synonym for --dirstat=cumulative"
 msgstr "sinónimo para --dirstat=cumulative"
 
-#: diff.c:5339
+#: diff.c:5408
 msgid "synonym for --dirstat=files,param1,param2..."
 msgstr "sinonimo para --dirstat=archivos,param1,param2..."
 
-#: diff.c:5343
+#: diff.c:5412
 msgid "warn if changes introduce conflict markers or whitespace errors"
 msgstr ""
 "advierte si cambios introducen conflictos de markers o errores de espacios "
 "en blanco"
 
-#: diff.c:5346
+#: diff.c:5415
 msgid "condensed summary such as creations, renames and mode changes"
 msgstr ""
 "resumen condensado de creaciones, cambios de nombres y cambios de modos"
 
-#: diff.c:5349
+#: diff.c:5418
 msgid "show only names of changed files"
 msgstr "mostrar solo nombres de archivos cambiados"
 
-#: diff.c:5352
+#: diff.c:5421
 msgid "show only names and status of changed files"
 msgstr "mostrar solo nombres y estados de archivos cambiados"
 
-#: diff.c:5354
+#: diff.c:5423
 msgid "<width>[,<name-width>[,<count>]]"
 msgstr "<ancho>[,<nombre-ancho>[,<cantidad>]]"
 
-#: diff.c:5355
+#: diff.c:5424
 msgid "generate diffstat"
 msgstr "generar diffstat"
 
-#: diff.c:5357 diff.c:5360 diff.c:5363
+#: diff.c:5426 diff.c:5429 diff.c:5432
 msgid "<width>"
 msgstr "<ancho>"
 
-#: diff.c:5358
+#: diff.c:5427
 msgid "generate diffstat with a given width"
 msgstr "genera diffstat con un ancho dado"
 
-#: diff.c:5361
+#: diff.c:5430
 msgid "generate diffstat with a given name width"
 msgstr "genera diffstat con un nombre de ancho dado"
 
-#: diff.c:5364
+#: diff.c:5433
 msgid "generate diffstat with a given graph width"
 msgstr "genera diffstat con un ancho de graph dado"
 
-#: diff.c:5366
+#: diff.c:5435
 msgid "<count>"
 msgstr "<cantidad>"
 
-#: diff.c:5367
+#: diff.c:5436
 msgid "generate diffstat with limited lines"
 msgstr "genera diffstat con líneas limitadas"
 
-#: diff.c:5370
+#: diff.c:5439
 msgid "generate compact summary in diffstat"
 msgstr "genera un resumen compacto de diffstat"
 
-#: diff.c:5373
+#: diff.c:5442
 msgid "output a binary diff that can be applied"
 msgstr "muestra un diff binario que puede ser aplicado"
 
-#: diff.c:5376
+#: diff.c:5445
 msgid "show full pre- and post-image object names on the \"index\" lines"
 msgstr ""
 "mostrar todo un pre- y post-image de nombres de objetos en las líneas \"index"
 "\""
 
-#: diff.c:5378
+#: diff.c:5447
 msgid "show colored diff"
 msgstr "mostrar diff colorido"
 
-#: diff.c:5379
+#: diff.c:5448
 msgid "<kind>"
 msgstr "<tipo>"
 
-#: diff.c:5380
+#: diff.c:5449
 msgid ""
 "highlight whitespace errors in the 'context', 'old' or 'new' lines in the "
 "diff"
@@ -3464,7 +3578,7 @@ msgstr ""
 "resaltar errores de espacios en blanco en las líneas 'context', 'old' o "
 "'new' del diff"
 
-#: diff.c:5383
+#: diff.c:5452
 msgid ""
 "do not munge pathnames and use NULs as output field terminators in --raw or "
 "--numstat"
@@ -3472,89 +3586,89 @@ msgstr ""
 "no consolidar los pathnames y usar NULs como terminadores de campos en --raw "
 "o --numstat"
 
-#: diff.c:5386 diff.c:5389 diff.c:5392 diff.c:5498
+#: diff.c:5455 diff.c:5458 diff.c:5461 diff.c:5570
 msgid "<prefix>"
 msgstr "<prefijo>"
 
-#: diff.c:5387
+#: diff.c:5456
 msgid "show the given source prefix instead of \"a/\""
 msgstr "mostrar el prefijo de fuente dado en lugar de \"a/\""
 
-#: diff.c:5390
+#: diff.c:5459
 msgid "show the given destination prefix instead of \"b/\""
 msgstr "mostrar el prefijo de destino en lugar de \"b/\""
 
-#: diff.c:5393
+#: diff.c:5462
 msgid "prepend an additional prefix to every line of output"
 msgstr "anteponer un prefijo adicional a cada línea mostrada"
 
-#: diff.c:5396
+#: diff.c:5465
 msgid "do not show any source or destination prefix"
 msgstr "no mostrar ningún prefijo de fuente o destino"
 
-#: diff.c:5399
+#: diff.c:5468
 msgid "show context between diff hunks up to the specified number of lines"
 msgstr ""
 "muestra el contexto entre hunks de diff hasta el número especificado de "
 "líneas"
 
-#: diff.c:5403 diff.c:5408 diff.c:5413
+#: diff.c:5472 diff.c:5477 diff.c:5482
 msgid "<char>"
 msgstr "<char>"
 
-#: diff.c:5404
+#: diff.c:5473
 msgid "specify the character to indicate a new line instead of '+'"
 msgstr "especifica el char para indicar una nueva línea en lugar de '+'"
 
-#: diff.c:5409
+#: diff.c:5478
 msgid "specify the character to indicate an old line instead of '-'"
 msgstr "especifica el char para indicar una línea vieja en lugar de '-'"
 
-#: diff.c:5414
+#: diff.c:5483
 msgid "specify the character to indicate a context instead of ' '"
 msgstr "especifica el char para indicar un contexto en lugar de ' '"
 
-#: diff.c:5417
+#: diff.c:5486
 msgid "Diff rename options"
 msgstr "Opciones de diff rename"
 
-#: diff.c:5418
+#: diff.c:5487
 msgid "<n>[/<m>]"
 msgstr "<n>[/<m>]"
 
-#: diff.c:5419
+#: diff.c:5488
 msgid "break complete rewrite changes into pairs of delete and create"
 msgstr "descomponer los cambios de reescritura en pares de borrar y crear"
 
-#: diff.c:5423
+#: diff.c:5492
 msgid "detect renames"
 msgstr "detectar renombrados"
 
-#: diff.c:5427
+#: diff.c:5496
 msgid "omit the preimage for deletes"
 msgstr "omite la preimage para borrados"
 
-#: diff.c:5430
+#: diff.c:5499
 msgid "detect copies"
 msgstr "detectar copias"
 
-#: diff.c:5434
+#: diff.c:5503
 msgid "use unmodified files as source to find copies"
 msgstr "usa archivos no modificados como fuente para encontrar copias"
 
-#: diff.c:5436
+#: diff.c:5505
 msgid "disable rename detection"
 msgstr "deshabilita detección de renombres"
 
-#: diff.c:5439
+#: diff.c:5508
 msgid "use empty blobs as rename source"
 msgstr "usa blobs vacíos como fuente de renombre"
 
-#: diff.c:5441
+#: diff.c:5510
 msgid "continue listing the history of a file beyond renames"
 msgstr "continua listando el historial de un archivo más allá de renombres"
 
-#: diff.c:5444
+#: diff.c:5513
 msgid ""
 "prevent rename/copy detection if the number of rename/copy targets exceeds "
 "given limit"
@@ -3562,155 +3676,159 @@ msgstr ""
 "previene detección de renombre/copias si el número de objetivos para "
 "renombres/copias excede el límite dado"
 
-#: diff.c:5446
+#: diff.c:5515
 msgid "Diff algorithm options"
 msgstr "Opciones de algoritmos de diff"
 
-#: diff.c:5448
+#: diff.c:5517
 msgid "produce the smallest possible diff"
 msgstr "produce el diff más pequeño posible"
 
-#: diff.c:5451
+#: diff.c:5520
 msgid "ignore whitespace when comparing lines"
 msgstr "ignorar espacios en blanco cuando comparando líneas"
 
-#: diff.c:5454
+#: diff.c:5523
 msgid "ignore changes in amount of whitespace"
 msgstr "ignorar cambios en la cantidad de líneas en blanco"
 
-#: diff.c:5457
+#: diff.c:5526
 msgid "ignore changes in whitespace at EOL"
 msgstr "ignorar cambios en espacios en blanco en EOL"
 
-#: diff.c:5460
+#: diff.c:5529
 msgid "ignore carrier-return at the end of line"
 msgstr "ignora carrier-return al final de la línea"
 
-#: diff.c:5463
+#: diff.c:5532
 msgid "ignore changes whose lines are all blank"
 msgstr "ignora cambios cuyas líneas son todas en blanco"
 
-#: diff.c:5466
+#: diff.c:5534 diff.c:5556 diff.c:5559 diff.c:5604
+msgid "<regex>"
+msgstr "<regex>"
+
+#: diff.c:5535
+msgid "ignore changes whose all lines match <regex>"
+msgstr "ignora cambios cuyas líneas concuerdan con <regex>"
+
+#: diff.c:5538
 msgid "heuristic to shift diff hunk boundaries for easy reading"
 msgstr "heurística para cambiar los límites de hunk para una fácil lectura"
 
-#: diff.c:5469
+#: diff.c:5541
 msgid "generate diff using the \"patience diff\" algorithm"
 msgstr "genera un diff usando algoritmo \"patience diff\""
 
-#: diff.c:5473
+#: diff.c:5545
 msgid "generate diff using the \"histogram diff\" algorithm"
 msgstr "genera un diff usando algoritmo \"histogram diff\""
 
-#: diff.c:5475
+#: diff.c:5547
 msgid "<algorithm>"
 msgstr "<algoritmo>"
 
-#: diff.c:5476
+#: diff.c:5548
 msgid "choose a diff algorithm"
 msgstr "escoge un algoritmo para diff"
 
-#: diff.c:5478
+#: diff.c:5550
 msgid "<text>"
 msgstr "<texto>"
 
-#: diff.c:5479
+#: diff.c:5551
 msgid "generate diff using the \"anchored diff\" algorithm"
 msgstr "genera un diff usando algoritmo \"anchored diff\""
 
-#: diff.c:5481 diff.c:5490 diff.c:5493
+#: diff.c:5553 diff.c:5562 diff.c:5565
 msgid "<mode>"
 msgstr "<modo>"
 
-#: diff.c:5482
+#: diff.c:5554
 msgid "show word diff, using <mode> to delimit changed words"
 msgstr ""
 "muestra diff por palabras usando <modo> para delimitar las palabras cambiadas"
 
-#: diff.c:5484 diff.c:5487 diff.c:5532
-msgid "<regex>"
-msgstr "<regex>"
-
-#: diff.c:5485
+#: diff.c:5557
 msgid "use <regex> to decide what a word is"
 msgstr "usa <regex> para decidir que palabra es"
 
-#: diff.c:5488
+#: diff.c:5560
 msgid "equivalent to --word-diff=color --word-diff-regex=<regex>"
 msgstr "equivalente a --word-diff=color --word-diff-regex=<regex>"
 
-#: diff.c:5491
+#: diff.c:5563
 msgid "moved lines of code are colored differently"
 msgstr "líneas movidas de código están coloreadas diferente"
 
-#: diff.c:5494
+#: diff.c:5566
 msgid "how white spaces are ignored in --color-moved"
 msgstr "como espacios en blanco son ignorados en --color-moved"
 
-#: diff.c:5497
+#: diff.c:5569
 msgid "Other diff options"
 msgstr "Otras opciones de diff"
 
-#: diff.c:5499
+#: diff.c:5571
 msgid "when run from subdir, exclude changes outside and show relative paths"
 msgstr ""
 "cuando ejecutado desde un subdir, excluye cambios del exterior y muestra "
 "paths relativos"
 
-#: diff.c:5503
+#: diff.c:5575
 msgid "treat all files as text"
 msgstr "tratar todos los archivos como texto"
 
-#: diff.c:5505
+#: diff.c:5577
 msgid "swap two inputs, reverse the diff"
 msgstr "cambia dos inputs, invierte el diff"
 
-#: diff.c:5507
+#: diff.c:5579
 msgid "exit with 1 if there were differences, 0 otherwise"
 msgstr "termina con 1 si hubieron diferencias, de lo contrario con 0"
 
-#: diff.c:5509
+#: diff.c:5581
 msgid "disable all output of the program"
 msgstr "deshabilita todo el output del programa"
 
-#: diff.c:5511
+#: diff.c:5583
 msgid "allow an external diff helper to be executed"
 msgstr "permite la ejecución de un diff helper externo"
 
-#: diff.c:5513
+#: diff.c:5585
 msgid "run external text conversion filters when comparing binary files"
 msgstr ""
 "ejecuta filtros de conversión de texto externos cuando comparando binarios"
 
-#: diff.c:5515
+#: diff.c:5587
 msgid "<when>"
 msgstr "<cuando>"
 
-#: diff.c:5516
+#: diff.c:5588
 msgid "ignore changes to submodules in the diff generation"
 msgstr "ignorar cambios a submódulos en la generación de diff"
 
-#: diff.c:5519
+#: diff.c:5591
 msgid "<format>"
 msgstr "<formato>"
 
-#: diff.c:5520
+#: diff.c:5592
 msgid "specify how differences in submodules are shown"
 msgstr "especifica como son mostradas las diferencias en submódulos"
 
-#: diff.c:5524
+#: diff.c:5596
 msgid "hide 'git add -N' entries from the index"
 msgstr "ocultar entradas 'git add -N' del index"
 
-#: diff.c:5527
+#: diff.c:5599
 msgid "treat 'git add -N' entries as real in the index"
 msgstr "trata entradas 'git add -N' como reales en el index"
 
-#: diff.c:5529
+#: diff.c:5601
 msgid "<string>"
 msgstr "<string>"
 
-#: diff.c:5530
+#: diff.c:5602
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "string"
@@ -3718,7 +3836,7 @@ msgstr ""
 "busca por diferencias que cambien el número de ocurrencias para el string "
 "especificado"
 
-#: diff.c:5533
+#: diff.c:5605
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "regex"
@@ -3726,23 +3844,35 @@ msgstr ""
 "busca por diferencias que cambien el número de ocurrencias para el regex "
 "especificado"
 
-#: diff.c:5536
+#: diff.c:5608
 msgid "show all changes in the changeset with -S or -G"
 msgstr "mostrar todos los cambios en el changeset con -S o -G"
 
-#: diff.c:5539
+#: diff.c:5611
 msgid "treat <string> in -S as extended POSIX regular expression"
 msgstr "tratar <string> en -S como una expresión regular extendida de POSIX"
 
-#: diff.c:5542
+#: diff.c:5614
 msgid "control the order in which files appear in the output"
 msgstr "controlar el orden en el que los archivos aparecen en la salida"
 
-#: diff.c:5543
+#: diff.c:5615 diff.c:5618
+msgid "<path>"
+msgstr "<ruta>"
+
+#: diff.c:5616
+msgid "show the change in the specified path first"
+msgstr "mostrar el cambio en la ruta especificada primero"
+
+#: diff.c:5619
+msgid "skip the output to the specified path"
+msgstr "saltar el output de la ruta especificada"
+
+#: diff.c:5621
 msgid "<object-id>"
 msgstr "<id-objeto>"
 
-#: diff.c:5544
+#: diff.c:5622
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "object"
@@ -3750,33 +3880,33 @@ msgstr ""
 "busca por diferencias que cambien el número de ocurrencias para el objeto "
 "especificado"
 
-#: diff.c:5546
+#: diff.c:5624
 msgid "[(A|C|D|M|R|T|U|X|B)...[*]]"
 msgstr "[(A|C|D|M|R|T|U|X|B)...[*]]"
 
-#: diff.c:5547
+#: diff.c:5625
 msgid "select files by diff type"
 msgstr "selecciona archivos por tipo de diff"
 
-#: diff.c:5549
+#: diff.c:5627
 msgid "<file>"
 msgstr "<archivo>"
 
-#: diff.c:5550
+#: diff.c:5628
 msgid "Output to a specific file"
 msgstr "Output a un archivo específico"
 
-#: diff.c:6205
+#: diff.c:6285
 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:6208
+#: diff.c:6288
 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:6211
+#: diff.c:6291
 #, c-format
 msgid ""
 "you may want to set your %s variable to at least %d and retry the command."
@@ -3789,65 +3919,70 @@ msgstr ""
 msgid "failed to read orderfile '%s'"
 msgstr "falló al leer orden de archivos '%s'"
 
-#: diffcore-rename.c:592
+#: diffcore-rename.c:786
 msgid "Performing inexact rename detection"
 msgstr "Realizando una detección de cambios de nombre inexacta"
 
-#: dir.c:573
+#: diffcore-rotate.c:29
+#, c-format
+msgid "No such path '%s' in the diff"
+msgstr "No hay ruta '%s' en el diff"
+
+#: dir.c:578
 #, c-format
 msgid "pathspec '%s' did not match any file(s) known to git"
 msgstr ""
 "ruta especificada '%s' no concordó con ningún archivo(s) conocido por git"
 
-#: dir.c:713 dir.c:742 dir.c:755
+#: dir.c:718 dir.c:747 dir.c:760
 #, c-format
 msgid "unrecognized pattern: '%s'"
 msgstr "patrón desconocido: '%s'"
 
-#: dir.c:772 dir.c:786
+#: dir.c:777 dir.c:791
 #, c-format
 msgid "unrecognized negative pattern: '%s'"
 msgstr "patrón negativo no reconocido: '%s'"
 
-#: dir.c:804
+#: dir.c:809
 #, c-format
 msgid "your sparse-checkout file may have issues: pattern '%s' is repeated"
 msgstr ""
 "tu archivo sparse-checkout tal vez tenga errores: patrón '%s' está repetido"
 
-#: dir.c:814
+#: dir.c:819
 msgid "disabling cone pattern matching"
 msgstr "deshabilitar coincidencia de patrónes cono"
 
-#: dir.c:1191
+#: dir.c:1198
 #, c-format
 msgid "cannot use %s as an exclude file"
 msgstr "no se puede usar %s como archivo de exclusión"
 
-#: dir.c:2296
+#: dir.c:2305
 #, c-format
 msgid "could not open directory '%s'"
 msgstr "no se pudo abrir el directorio '%s'"
 
-#: dir.c:2596
+#: dir.c:2605
 msgid "failed to get kernel name and information"
 msgstr "falló al conseguir la información y nombre del kernel"
 
-#: dir.c:2720
+#: dir.c:2729
 msgid "untracked cache is disabled on this system or location"
 msgstr "untracked cache está desactivado en este sistema o ubicación"
 
-#: dir.c:3502
+#: dir.c:3534
 #, c-format
 msgid "index file corrupt in repo %s"
 msgstr "archivo índice corrompido en repositorio %s"
 
-#: dir.c:3547 dir.c:3552
+#: dir.c:3579 dir.c:3584
 #, c-format
 msgid "could not create directories for %s"
 msgstr "no se pudo crear directorios para %s"
 
-#: dir.c:3581
+#: dir.c:3613
 #, c-format
 msgid "could not migrate git directory from '%s' to '%s'"
 msgstr "no se pudo migrar el directorio git de '%s' a '%s'"
@@ -3866,12 +4001,12 @@ msgstr "Filtrando contenido"
 msgid "could not stat file '%s'"
 msgstr "no se pudo establecer el archivo '%s'"
 
-#: environment.c:150
+#: environment.c:152
 #, c-format
 msgid "bad git namespace path \"%s\""
 msgstr "ruta de namespace de git mala \"%s\""
 
-#: environment.c:337
+#: environment.c:335
 #, c-format
 msgid "could not set GIT_DIR to '%s'"
 msgstr "no se pudo configurar GIT_DIR a '%s'"
@@ -3881,260 +4016,264 @@ msgstr "no se pudo configurar GIT_DIR a '%s'"
 msgid "too many args to run %s"
 msgstr "demasiados argumentos para correr %s"
 
-#: fetch-pack.c:152
+#: fetch-pack.c:177
 msgid "git fetch-pack: expected shallow list"
 msgstr "git fetch-pack: lista poco profunda esperada"
 
-#: fetch-pack.c:155
+#: fetch-pack.c:180
 msgid "git fetch-pack: expected a flush packet after shallow list"
 msgstr ""
 "git fetch-pack: se esperaba un flush packet luego de la lista superficial"
 
-#: fetch-pack.c:166
+#: fetch-pack.c:191
 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:186
+#: fetch-pack.c:211
 #, 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:197
+#: fetch-pack.c:222
 msgid "unable to write to remote"
 msgstr "no se puede escribir al remoto"
 
-#: fetch-pack.c:259
+#: fetch-pack.c:283
 msgid "--stateless-rpc requires multi_ack_detailed"
 msgstr "--stateless-rpc requiere multi_ack_detailed"
 
-#: fetch-pack.c:358 fetch-pack.c:1408
+#: fetch-pack.c:378 fetch-pack.c:1457
 #, c-format
 msgid "invalid shallow line: %s"
 msgstr "línea poco profunda inválida: %s"
 
-#: fetch-pack.c:364 fetch-pack.c:1414
+#: fetch-pack.c:384 fetch-pack.c:1463
 #, c-format
 msgid "invalid unshallow line: %s"
 msgstr "línea superficial inválida: %s"
 
-#: fetch-pack.c:366 fetch-pack.c:1416
+#: fetch-pack.c:386 fetch-pack.c:1465
 #, c-format
 msgid "object not found: %s"
 msgstr "objeto no encontrado: %s"
 
-#: fetch-pack.c:369 fetch-pack.c:1419
+#: fetch-pack.c:389 fetch-pack.c:1468
 #, c-format
 msgid "error in object: %s"
 msgstr "error en objeto: %s"
 
-#: fetch-pack.c:371 fetch-pack.c:1421
+#: fetch-pack.c:391 fetch-pack.c:1470
 #, c-format
 msgid "no shallow found: %s"
 msgstr "superficie no encontrada: %s"
 
-#: fetch-pack.c:374 fetch-pack.c:1425
+#: fetch-pack.c:394 fetch-pack.c:1474
 #, c-format
 msgid "expected shallow/unshallow, got %s"
 msgstr "se esperaba shallow/unshallow, se obtuvo %s"
 
-#: fetch-pack.c:416
+#: fetch-pack.c:434
 #, c-format
 msgid "got %s %d %s"
 msgstr "se obtuvo %s %d %s"
 
-#: fetch-pack.c:433
+#: fetch-pack.c:451
 #, c-format
 msgid "invalid commit %s"
 msgstr "commit inválido %s"
 
-#: fetch-pack.c:464
+#: fetch-pack.c:482
 msgid "giving up"
 msgstr "rindiéndose"
 
-#: fetch-pack.c:477 progress.c:336
+#: fetch-pack.c:495 progress.c:339
 msgid "done"
 msgstr "listo"
 
-#: fetch-pack.c:489
+#: fetch-pack.c:507
 #, c-format
 msgid "got %s (%d) %s"
 msgstr "se obtuvo %s (%d) %s"
 
-#: fetch-pack.c:535
+#: fetch-pack.c:543
 #, c-format
 msgid "Marking %s as complete"
 msgstr "Marcando %s como completa"
 
-#: fetch-pack.c:756
+#: fetch-pack.c:758
 #, c-format
 msgid "already have %s (%s)"
 msgstr "ya se tiene %s (%s)"
 
-#: fetch-pack.c:821
+#: fetch-pack.c:844
 msgid "fetch-pack: unable to fork off sideband demultiplexer"
 msgstr "fetch-pack: no se puede extraer un demultiplexor de banda lateral"
 
-#: fetch-pack.c:829
+#: fetch-pack.c:852
 msgid "protocol error: bad pack header"
 msgstr "error de protocolo: paquete de header erróneo"
 
-#: fetch-pack.c:910
+#: fetch-pack.c:946
 #, c-format
 msgid "fetch-pack: unable to fork off %s"
 msgstr "fetch-pack: no se puede quitar %s"
 
-#: fetch-pack.c:927
+#: fetch-pack.c:952
+msgid "fetch-pack: invalid index-pack output"
+msgstr "fetch-pack: salida de paquete de índice no válida"
+
+#: fetch-pack.c:969
 #, c-format
 msgid "%s failed"
 msgstr "%s falló"
 
-#: fetch-pack.c:929
+#: fetch-pack.c:971
 msgid "error in sideband demultiplexer"
 msgstr "error en demultiplexor de banda lateral"
 
-#: fetch-pack.c:976
+#: fetch-pack.c:1031
 #, c-format
 msgid "Server version is %.*s"
 msgstr "Versión de servidor es %.*s"
 
-#: fetch-pack.c:981 fetch-pack.c:987 fetch-pack.c:990 fetch-pack.c:996
-#: fetch-pack.c:1000 fetch-pack.c:1004 fetch-pack.c:1008 fetch-pack.c:1012
-#: fetch-pack.c:1016 fetch-pack.c:1020 fetch-pack.c:1024 fetch-pack.c:1028
-#: fetch-pack.c:1034 fetch-pack.c:1040 fetch-pack.c:1045 fetch-pack.c:1050
+#: fetch-pack.c:1039 fetch-pack.c:1045 fetch-pack.c:1048 fetch-pack.c:1054
+#: fetch-pack.c:1058 fetch-pack.c:1062 fetch-pack.c:1066 fetch-pack.c:1070
+#: fetch-pack.c:1074 fetch-pack.c:1078 fetch-pack.c:1082 fetch-pack.c:1086
+#: fetch-pack.c:1092 fetch-pack.c:1098 fetch-pack.c:1103 fetch-pack.c:1108
 #, c-format
 msgid "Server supports %s"
 msgstr "El servidor soporta %s"
 
-#: fetch-pack.c:983
+#: fetch-pack.c:1041
 msgid "Server does not support shallow clients"
 msgstr "El servidor no soporta clientes superficiales"
 
-#: fetch-pack.c:1043
+#: fetch-pack.c:1101
 msgid "Server does not support --shallow-since"
 msgstr "El servidor no soporta --shalow-since"
 
-#: fetch-pack.c:1048
+#: fetch-pack.c:1106
 msgid "Server does not support --shallow-exclude"
 msgstr "El servidor no soporta --shalow-exclude"
 
-#: fetch-pack.c:1052
+#: fetch-pack.c:1110
 msgid "Server does not support --deepen"
 msgstr "El servidor no soporta --deepen"
 
-#: fetch-pack.c:1054
+#: fetch-pack.c:1112
 msgid "Server does not support this repository's object format"
 msgstr "El servidor no soporta el formato de objetos de este repositorio"
 
-#: fetch-pack.c:1071
+#: fetch-pack.c:1125
 msgid "no common commits"
 msgstr "no hay commits comunes"
 
-#: fetch-pack.c:1083 fetch-pack.c:1639
+#: fetch-pack.c:1138 fetch-pack.c:1682
 msgid "git fetch-pack: fetch failed."
 msgstr "git fetch-pack: fetch falló."
 
-#: fetch-pack.c:1211
+#: fetch-pack.c:1265
 #, c-format
 msgid "mismatched algorithms: client %s; server %s"
 msgstr "algoritmos no compatibles: cliente %s; servidor %s"
 
-#: fetch-pack.c:1215
+#: fetch-pack.c:1269
 #, c-format
 msgid "the server does not support algorithm '%s'"
 msgstr "servidor no soporta el algoritmo '%s'"
 
-#: fetch-pack.c:1235
+#: fetch-pack.c:1289
 msgid "Server does not support shallow requests"
 msgstr "El servidor no soporta peticiones superficiales"
 
-#: fetch-pack.c:1242
+#: fetch-pack.c:1296
 msgid "Server supports filter"
 msgstr "El servidor soporta filtro"
 
-#: fetch-pack.c:1286
+#: fetch-pack.c:1335
 msgid "unable to write request to remote"
 msgstr "no se puede escribir request al remoto"
 
-#: fetch-pack.c:1304
+#: fetch-pack.c:1353
 #, c-format
 msgid "error reading section header '%s'"
 msgstr "error leyendo sección header '%s'"
 
-#: fetch-pack.c:1310
+#: fetch-pack.c:1359
 #, c-format
 msgid "expected '%s', received '%s'"
 msgstr "se esperaba '%s', se recibió '%s'"
 
-#: fetch-pack.c:1371
+#: fetch-pack.c:1420
 #, c-format
 msgid "unexpected acknowledgment line: '%s'"
 msgstr "línea de confirmación inesperada: '%s'"
 
-#: fetch-pack.c:1376
+#: fetch-pack.c:1425
 #, c-format
 msgid "error processing acks: %d"
 msgstr "error procesando acks: %d"
 
-#: fetch-pack.c:1386
+#: fetch-pack.c:1435
 msgid "expected packfile to be sent after 'ready'"
 msgstr "espere que el packfile sea mandado luego del 'listo'"
 
-#: fetch-pack.c:1388
+#: fetch-pack.c:1437
 msgid "expected no other sections to be sent after no 'ready'"
 msgstr "espere que ninguna otra sección sea enviada luego del 'listo'"
 
-#: fetch-pack.c:1430
+#: fetch-pack.c:1479
 #, c-format
 msgid "error processing shallow info: %d"
 msgstr "error procesando información superficial: %d"
 
-#: fetch-pack.c:1477
+#: fetch-pack.c:1526
 #, c-format
 msgid "expected wanted-ref, got '%s'"
 msgstr "se esperaba wanted-ref, se obtuvo '%s'"
 
-#: fetch-pack.c:1482
+#: fetch-pack.c:1531
 #, c-format
 msgid "unexpected wanted-ref: '%s'"
 msgstr "wanted-ref inesperado: '%s'"
 
-#: fetch-pack.c:1487
+#: fetch-pack.c:1536
 #, c-format
 msgid "error processing wanted refs: %d"
 msgstr "error procesando refs deseadas: %d"
 
-#: fetch-pack.c:1517
+#: fetch-pack.c:1566
 msgid "git fetch-pack: expected response end packet"
 msgstr "git fetch-pack: se espera un paquete final de respuesta"
 
-#: fetch-pack.c:1921
+#: fetch-pack.c:1960
 msgid "no matching remote head"
 msgstr "no concuerda el head remoto"
 
-#: fetch-pack.c:1944 builtin/clone.c:692
+#: fetch-pack.c:1983 builtin/clone.c:693
 msgid "remote did not send all necessary objects"
 msgstr "remoto no mando todos los objetos necesarios"
 
-#: fetch-pack.c:1971
+#: fetch-pack.c:2010
 #, c-format
 msgid "no such remote ref %s"
 msgstr "no existe ref remota %s"
 
-#: fetch-pack.c:1974
+#: fetch-pack.c:2013
 #, c-format
 msgid "Server does not allow request for unadvertised object %s"
 msgstr "El servidor no permite solicitudes de objetos inadvertidos %s"
 
-#: gpg-interface.c:272
+#: gpg-interface.c:273
 msgid "could not create temporary file"
 msgstr "no se pudo crear archivo temporal"
 
-#: gpg-interface.c:275
+#: gpg-interface.c:276
 #, c-format
 msgid "failed writing detached signature to '%s'"
 msgstr "falló al escribir la firma separada para '%s'"
 
-#: gpg-interface.c:457
+#: gpg-interface.c:470
 msgid "gpg failed to sign the data"
 msgstr "gpg falló al firmar la data"
 
@@ -4143,7 +4282,7 @@ msgstr "gpg falló al firmar la data"
 msgid "ignore invalid color '%.*s' in log.graphColors"
 msgstr "ignora color inválido '%.*s' en log.graphColors"
 
-#: grep.c:668
+#: grep.c:543
 msgid ""
 "given pattern contains NULL byte (via -f <file>). This is only supported "
 "with -P under PCRE v2"
@@ -4151,18 +4290,18 @@ msgstr ""
 "el patrón provisto contiene bytes NULL (via -f <archivo>). Esto solo es "
 "soportado con -P bajo PCRE v2"
 
-#: grep.c:2128
+#: grep.c:1906
 #, c-format
 msgid "'%s': unable to read %s"
 msgstr "'%s': no es posible leer %s"
 
-#: grep.c:2145 setup.c:176 builtin/clone.c:411 builtin/diff.c:89
+#: grep.c:1923 setup.c:176 builtin/clone.c:412 builtin/diff.c:90
 #: builtin/rm.c:135
 #, c-format
 msgid "failed to stat '%s'"
 msgstr "falló al marcar '%s'"
 
-#: grep.c:2156
+#: grep.c:1934
 #, c-format
 msgid "'%s': short read"
 msgstr "'%s': lectura corta"
@@ -4219,41 +4358,41 @@ msgstr "Comandos de bajo nivel / Sincronización de repositorios"
 msgid "Low-level Commands / Internal Helpers"
 msgstr "Comandos de bajo nivel / Auxiliares internos"
 
-#: help.c:298
+#: help.c:300
 #, c-format
 msgid "available git commands in '%s'"
 msgstr "comandos disponibles de git en '%s'"
 
-#: help.c:305
+#: help.c:307
 msgid "git commands available from elsewhere on your $PATH"
 msgstr "comandos disponibles de git desde otro lugar en tu $PATH"
 
-#: help.c:314
+#: help.c:316
 msgid "These are common Git commands used in various situations:"
 msgstr "Estos son comandos comunes de Git usados en varias situaciones:"
 
-#: help.c:363 git.c:99
+#: help.c:365 git.c:100
 #, c-format
 msgid "unsupported command listing type '%s'"
 msgstr "comando de listado de tipos no soportado '%s'"
 
-#: help.c:403
-msgid "The common Git guides are:"
-msgstr "Las guías comunes de Git son:"
+#: help.c:405
+msgid "The Git concept guides are:"
+msgstr "Las guías de conceptos de Git son:"
 
-#: help.c:427
+#: help.c:429
 msgid "See 'git help <command>' to read about a specific subcommand"
 msgstr "Vea 'git help <comando>' para leer sobre los subcomandos específicos"
 
-#: help.c:432
+#: help.c:434
 msgid "External commands"
 msgstr "Comandos externos"
 
-#: help.c:447
+#: help.c:449
 msgid "Command aliases"
 msgstr "Aliases de comando"
 
-#: help.c:511
+#: help.c:527
 #, c-format
 msgid ""
 "'%s' appears to be a git command, but we were not\n"
@@ -4262,31 +4401,31 @@ msgstr ""
 "'%s' parece ser un comando de git, pero no hemos\n"
 "podido ejecutarlo. ¿Tal vez git-%s se ha roto?"
 
-#: help.c:570
+#: help.c:543 help.c:631
+#, c-format
+msgid "git: '%s' is not a git command. See 'git --help'."
+msgstr "git: '%s'no es un comando de git. Mira 'git --help'."
+
+#: help.c:591
 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:592
+#: help.c:613
 #, 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:597
+#: help.c:618
 #, c-format
 msgid "Continuing under the assumption that you meant '%s'."
 msgstr "Continuando asumiendo que quisiste decir '%s'."
 
-#: help.c:602
+#: help.c:623
 #, c-format
 msgid "Continuing in %0.1f seconds, assuming that you meant '%s'."
 msgstr "Continuando en %0.1f segundos, asumiendo que tu dijiste '%s'."
 
-#: help.c:610
-#, 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:614
+#: help.c:635
 msgid ""
 "\n"
 "The most similar command is"
@@ -4300,16 +4439,16 @@ msgstr[1] ""
 "\n"
 "Los comandos más similares son"
 
-#: help.c:654
+#: help.c:675
 msgid "git version [<options>]"
 msgstr "git versión [<opciones>]"
 
-#: help.c:709
+#: help.c:730
 #, c-format
 msgid "%s: %s - %s"
 msgstr "%s: %s - %s"
 
-#: help.c:713
+#: help.c:734
 msgid ""
 "\n"
 "Did you mean this?"
@@ -4323,7 +4462,15 @@ msgstr[1] ""
 "\n"
 "¿Quisiste decir alguno de estos?"
 
-#: ident.c:349
+#: ident.c:353
+msgid "Author identity unknown\n"
+msgstr "Identidad del autor desconocido\n"
+
+#: ident.c:356
+msgid "Committer identity unknown\n"
+msgstr "Se desconoce la identidad del autor\n"
+
+#: ident.c:362
 msgid ""
 "\n"
 "*** Please tell me who you are.\n"
@@ -4349,66 +4496,66 @@ msgstr ""
 "Omite --global para configurar tu identidad solo en este repositorio.\n"
 "\n"
 
-#: ident.c:379
+#: ident.c:397
 msgid "no email was given and auto-detection is disabled"
 msgstr "no se entrego ningún email y la detección automática está desactivada"
 
-#: ident.c:384
+#: ident.c:402
 #, c-format
 msgid "unable to auto-detect email address (got '%s')"
 msgstr "no es posible auto-detectar la dirección de correo (se obtuvo '%s')"
 
-#: ident.c:401
+#: ident.c:419
 msgid "no name was given and auto-detection is disabled"
 msgstr "no se entrego ningún nombre y la detección automática está desactivada"
 
-#: ident.c:407
+#: ident.c:425
 #, c-format
 msgid "unable to auto-detect name (got '%s')"
 msgstr "no es posible auto-detectar el nombre (se obtuvo '%s')"
 
-#: ident.c:415
+#: ident.c:433
 #, c-format
 msgid "empty ident name (for <%s>) not allowed"
 msgstr "no se puede tener un nombre vacío (para <%s>)"
 
-#: ident.c:421
+#: ident.c:439
 #, c-format
 msgid "name consists only of disallowed characters: %s"
 msgstr "el nombre consiste solo de caracteres no permitidos: %s"
 
-#: ident.c:436 builtin/commit.c:634
+#: ident.c:454 builtin/commit.c:634
 #, c-format
 msgid "invalid date format: %s"
 msgstr "formato de fecha inválido: %s"
 
-#: list-objects-filter-options.c:58
+#: list-objects-filter-options.c:81
 msgid "expected 'tree:<depth>'"
 msgstr "se esperaba 'tree:<depth>'"
 
-#: list-objects-filter-options.c:73
+#: list-objects-filter-options.c:96
 msgid "sparse:path filters support has been dropped"
 msgstr "soporte para filtros sparse:path ha sido discontinuado"
 
-#: list-objects-filter-options.c:86
+#: list-objects-filter-options.c:109
 #, c-format
 msgid "invalid filter-spec '%s'"
 msgstr "filtro -spec inválido '%s'"
 
-#: list-objects-filter-options.c:102
+#: list-objects-filter-options.c:125
 #, c-format
 msgid "must escape char in sub-filter-spec: '%c'"
 msgstr "tienes que escapar el caracter en sub-filter-spec: '%c'"
 
-#: list-objects-filter-options.c:144
+#: list-objects-filter-options.c:167
 msgid "expected something after combine:"
 msgstr "se espera algo luego de combine:"
 
-#: list-objects-filter-options.c:226
+#: list-objects-filter-options.c:249
 msgid "multiple filter-specs cannot be combined"
 msgstr "no se pueden combinar múltiples tipos de especificaciones de filtro"
 
-#: list-objects-filter-options.c:330
+#: list-objects-filter-options.c:361
 msgid "unable to upgrade repository format to support partial clone"
 msgstr ""
 "no es posible actualizar el formato del repositorio para soportar clonado "
@@ -4464,56 +4611,312 @@ msgstr ""
 msgid "Unable to create '%s.lock': %s"
 msgstr "No se pudo crear '%s.lock': %s"
 
-#: ls-refs.c:109
+#: ls-refs.c:37
+#, c-format
+msgid "invalid value '%s' for lsrefs.unborn"
+msgstr "valor inválido '%s' para lsrefs.unborn"
+
+#: ls-refs.c:167
 msgid "expected flush after ls-refs arguments"
 msgstr "se esperaba un flush luego de argumentos ls-refs"
 
-#: merge-recursive.c:356
-msgid "(bad commit)\n"
-msgstr "(commit erróneo)\n"
-
-#: merge-recursive.c:379
+#: merge-ort.c:888 merge-recursive.c:1191
 #, c-format
-msgid "add_cacheinfo failed for path '%s'; merge aborting."
-msgstr "add_cacheinfo falló para la ruta '%s'; abortando fusión."
+msgid "Failed to merge submodule %s (not checked out)"
+msgstr "Falló al fusionar el submódulo %s (no revisado)"
 
-#: merge-recursive.c:388
+#: merge-ort.c:897 merge-recursive.c:1198
 #, c-format
-msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
-msgstr "add_cacheinfo falló para refrescar la ruta '%s'; abortando fusión."
+msgid "Failed to merge submodule %s (commits not present)"
+msgstr "Falló al fusionar el submódulo %s (commits no presentes)"
 
-#: merge-recursive.c:874
+#: merge-ort.c:906 merge-recursive.c:1205
 #, c-format
-msgid "failed to create path '%s'%s"
-msgstr "falló al crear la ruta '%s'%s"
+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:885
+#: merge-ort.c:916 merge-ort.c:923
 #, c-format
-msgid "Removing %s to make room for subdirectory\n"
-msgstr "Removiendo %s para hacer espacio para un subdirectorio\n"
-
-#: merge-recursive.c:899 merge-recursive.c:918
-msgid ": perhaps a D/F conflict?"
-msgstr ": ¿tal vez un conflicto D/F?"
+msgid "Note: Fast-forwarding submodule %s to %s"
+msgstr "Nota: Fast-forward de submódulo %s a %s"
 
-#: merge-recursive.c:908
+#: merge-ort.c:944
 #, c-format
-msgid "refusing to lose untracked file at '%s'"
-msgstr "rehusando perder el archivo rastreado en '%s'"
+msgid "Failed to merge submodule %s"
+msgstr "falló al fusionar el submódulo %s"
 
-#: merge-recursive.c:949 builtin/cat-file.c:41
+#: merge-ort.c:951
 #, c-format
-msgid "cannot read object %s '%s'"
-msgstr "no se puede leer el objeto %s '%s'"
+msgid ""
+"Failed to merge submodule %s, but a possible merge resolution exists:\n"
+"%s\n"
+msgstr ""
+"Falló al fusionar el submódulo %s, pero existen posibles soluciones de "
+"fusión:\n"
+"%s\n"
 
-#: merge-recursive.c:954
+#: merge-ort.c:955 merge-recursive.c:1259
 #, c-format
-msgid "blob expected for %s '%s'"
-msgstr "se esperaba blob para %s '%s'"
+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:979
+#: merge-ort.c:968
 #, c-format
-msgid "failed to open '%s': %s"
+msgid ""
+"Failed to merge submodule %s, but multiple possible merges exist:\n"
+"%s"
+msgstr ""
+"Falló al fusionar el submódulo %s, pero existen múltipes fusiones posibles:\n"
+"%s"
+
+#: merge-ort.c:1127 merge-recursive.c:1341
+msgid "Failed to execute internal merge"
+msgstr "Falló al ejecutar la fusión interna"
+
+#: merge-ort.c:1132 merge-recursive.c:1346
+#, c-format
+msgid "Unable to add %s to database"
+msgstr "No es posible agregar %s a la base de datos"
+
+#: merge-ort.c:1139 merge-recursive.c:1378
+#, c-format
+msgid "Auto-merging %s"
+msgstr "Auto-fusionando %s"
+
+#: merge-ort.c:1278 merge-recursive.c:2100
+#, c-format
+msgid ""
+"CONFLICT (implicit dir rename): Existing file/dir at %s in the way of "
+"implicit directory rename(s) putting the following path(s) there: %s."
+msgstr ""
+"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-ort.c:1288 merge-recursive.c:2110
+#, c-format
+msgid ""
+"CONFLICT (implicit dir rename): Cannot map more than one path to %s; "
+"implicit directory renames tried to put these paths there: %s"
+msgstr ""
+"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-ort.c:1471
+#, c-format
+msgid ""
+"CONFLICT (directory rename split): Unclear where to rename %s to; it was "
+"renamed to multiple other directories, with no destination getting a "
+"majority of the files."
+msgstr ""
+"CONFLICTO (división de cambio de nombre de directorio): No está claro dónde "
+"cambiar el nombre de %s; se le cambió el nombre a varios otros directorios, "
+"sin que ningún destino obtenga la mayoría de los archivos."
+
+#: merge-ort.c:1637 merge-recursive.c:2447
+#, 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-ort.c:1781 merge-recursive.c:3215
+#, c-format
+msgid ""
+"Path updated: %s added in %s inside a directory that was renamed in %s; "
+"moving it to %s."
+msgstr ""
+"Path actualizado: %s agregado en %s dentro de un directorio que fue "
+"renombrado en %s; moviéndolo a %s."
+
+#: merge-ort.c:1788 merge-recursive.c:3222
+#, c-format
+msgid ""
+"Path updated: %s renamed to %s in %s, inside a directory that was renamed in "
+"%s; moving it to %s."
+msgstr ""
+"Path actualizado: %s renombrado a %s en %s, dentro de un directorio que fue "
+"renombrado en %s; moviéndolo a %s."
+
+#: merge-ort.c:1801 merge-recursive.c:3218
+#, c-format
+msgid ""
+"CONFLICT (file location): %s added in %s inside a directory that was renamed "
+"in %s, suggesting it should perhaps be moved to %s."
+msgstr ""
+"CONFLICTO (ubicación de archivo): %s agregado en %s dentro de un directorio "
+"que fue renombrado en %s, sugerimos que debería ser movido a %s."
+
+#: merge-ort.c:1809 merge-recursive.c:3225
+#, c-format
+msgid ""
+"CONFLICT (file location): %s renamed to %s in %s, inside a directory that "
+"was renamed in %s, suggesting it should perhaps be moved to %s."
+msgstr ""
+"CONFLICTO (ubicación de archivo): %s renombrado a %s en %s, dentro de un "
+"directorio que fue renombrado en %s, sugiriendo que tal vez debería ser "
+"movido a %s."
+
+#: merge-ort.c:1952
+#, c-format
+msgid "CONFLICT (rename/rename): %s renamed to %s in %s and to %s in %s."
+msgstr ""
+"CONFLICTO (renombrar / renombrar): %s renombrado a %s en %s y %s en %s."
+
+#: merge-ort.c:2047
+#, c-format
+msgid ""
+"CONFLICT (rename involved in collision): rename of %s -> %s has content "
+"conflicts AND collides with another path; this may result in nested conflict "
+"markers."
+msgstr ""
+"CONFLICTO (cambio de nombre involucrado en colisión): cambio de nombre de%s -"
+">%s tiene conflictos de contenido Y colisiona con otra ruta; esto puede "
+"resultar en marcadores de conflicto anidados."
+
+#: merge-ort.c:2066 merge-ort.c:2090
+#, c-format
+msgid "CONFLICT (rename/delete): %s renamed to %s in %s, but deleted in %s."
+msgstr ""
+"CONFLICTO (renombrar / eliminar): %s renombrado a %s en %s, pero eliminado "
+"en %s."
+
+#: merge-ort.c:2735
+#, c-format
+msgid ""
+"CONFLICT (file/directory): directory in the way of %s from %s; moving it to "
+"%s instead."
+msgstr ""
+"CONFLICTO (archivo / directorio): directorio en el camino de%s de%s; "
+"moviéndolo a%s en su lugar."
+
+#: merge-ort.c:2808
+#, c-format
+msgid ""
+"CONFLICT (distinct types): %s had different types on each side; renamed %s "
+"of them so each can be recorded somewhere."
+msgstr ""
+"CONFLICTO (tipos distintos):%s tenía tipos diferentes en cada lado; "
+"renombrado%s de ellos para que cada uno pueda ser grabado en algún lugar."
+
+#: merge-ort.c:2812
+msgid "both"
+msgstr "ambos"
+
+#: merge-ort.c:2812
+msgid "one"
+msgstr "uno"
+
+#: merge-ort.c:2907 merge-recursive.c:3052
+msgid "content"
+msgstr "contenido"
+
+#: merge-ort.c:2909 merge-recursive.c:3056
+msgid "add/add"
+msgstr "agregar/agregar"
+
+#: merge-ort.c:2911 merge-recursive.c:3101
+msgid "submodule"
+msgstr "submódulo"
+
+#: merge-ort.c:2913 merge-recursive.c:3102
+#, c-format
+msgid "CONFLICT (%s): Merge conflict in %s"
+msgstr "CONFLICTO (%s): Conflicto de fusión en %s"
+
+#: merge-ort.c:2938
+#, c-format
+msgid ""
+"CONFLICT (modify/delete): %s deleted in %s and modified in %s.  Version %s "
+"of %s left in tree."
+msgstr ""
+"CONFLICTO (modificar / eliminar): %s eliminado en %s y modificado en %s. "
+"Versión %s de %s restante en el árbol."
+
+#. TRANSLATORS: The %s arguments are: 1) tree hash of a merge
+#. base, and 2-3) the trees for the two trees we're merging.
+#.
+#: merge-ort.c:3406
+#, c-format
+msgid "collecting merge info failed for trees %s, %s, %s"
+msgstr ""
+"La recopilación de información de fusión falló para los árboles %s, %s, %s"
+
+#: merge-ort-wrappers.c:13 merge-recursive.c:3661
+#, c-format
+msgid ""
+"Your local changes to the following files would be overwritten by merge:\n"
+"  %s"
+msgstr ""
+"Los cambios locales de los siguientes archivos serán sobreescritos por "
+"merge:\n"
+"  %s"
+
+#: merge-ort-wrappers.c:33 merge-recursive.c:3436
+#, c-format
+msgid "Already up to date!"
+msgstr "¡Ya está actualizado!"
+
+#: merge-recursive.c:356
+msgid "(bad commit)\n"
+msgstr "(commit erróneo)\n"
+
+#: merge-recursive.c:379
+#, c-format
+msgid "add_cacheinfo failed for path '%s'; merge aborting."
+msgstr "add_cacheinfo falló para la ruta '%s'; abortando fusión."
+
+#: merge-recursive.c:388
+#, c-format
+msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
+msgstr "add_cacheinfo falló para refrescar la ruta '%s'; abortando fusión."
+
+#: merge-recursive.c:874
+#, c-format
+msgid "failed to create path '%s'%s"
+msgstr "falló al crear la ruta '%s'%s"
+
+#: merge-recursive.c:885
+#, c-format
+msgid "Removing %s to make room for subdirectory\n"
+msgstr "Removiendo %s para hacer espacio para un subdirectorio\n"
+
+#: merge-recursive.c:899 merge-recursive.c:918
+msgid ": perhaps a D/F conflict?"
+msgstr ": ¿tal vez un conflicto D/F?"
+
+#: merge-recursive.c:908
+#, c-format
+msgid "refusing to lose untracked file at '%s'"
+msgstr "rehusando perder el archivo rastreado en '%s'"
+
+#: merge-recursive.c:949 builtin/cat-file.c:41
+#, c-format
+msgid "cannot read object %s '%s'"
+msgstr "no se puede leer el objeto %s '%s'"
+
+#: merge-recursive.c:954
+#, c-format
+msgid "blob expected for %s '%s'"
+msgstr "se esperaba blob para %s '%s'"
+
+#: merge-recursive.c:979
+#, c-format
+msgid "failed to open '%s': %s"
 msgstr "falló al abrir '%s': %s"
 
 #: merge-recursive.c:990
@@ -4526,21 +4929,6 @@ msgstr "falló al crear el enlace simbólico '%s': %s"
 msgid "do not know what to do with %06o %s '%s'"
 msgstr "no se que hacer con %06o %s '%s'"
 
-#: merge-recursive.c:1191
-#, c-format
-msgid "Failed to merge submodule %s (not checked out)"
-msgstr "Falló al fusionar el submódulo %s (no revisado)"
-
-#: merge-recursive.c:1198
-#, 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:1205
-#, 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:1213 merge-recursive.c:1225
 #, c-format
 msgid "Fast-forwarding submodule %s to the following commit:"
@@ -4566,42 +4954,11 @@ msgstr "Falló al fusionar el submódulo %s (no es posible avance rápido)"
 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:1259
-#, 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:1268
 #, 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:1341
-msgid "Failed to execute internal merge"
-msgstr "Falló al ejecutar la fusión interna"
-
-#: merge-recursive.c:1346
-#, c-format
-msgid "Unable to add %s to database"
-msgstr "No es posible agregar %s a la base de datos"
-
-#: merge-recursive.c:1378
-#, c-format
-msgid "Auto-merging %s"
-msgstr "Auto-fusionando %s"
-
 #: merge-recursive.c:1402
 #, c-format
 msgid "Error: Refusing to lose untracked file at %s; writing to %s instead."
@@ -4713,25 +5070,6 @@ msgstr ""
 "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:2100
-#, c-format
-msgid ""
-"CONFLICT (implicit dir rename): Existing file/dir at %s in the way of "
-"implicit directory rename(s) putting the following path(s) there: %s."
-msgstr ""
-"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:2110
-#, c-format
-msgid ""
-"CONFLICT (implicit dir rename): Cannot map more than one path to %s; "
-"implicit directory renames tried to put these paths there: %s"
-msgstr ""
-"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:2202
 #, c-format
 msgid ""
@@ -4741,15 +5079,6 @@ msgstr ""
 "CONFLICTO (renombrar/renombrar): Renombrar directorio %s->%s en %s. "
 "Renombrar directorio %s->%s en %s"
 
-#: merge-recursive.c:2447
-#, 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:2973
 #, c-format
 msgid "cannot read object %s"
@@ -4768,71 +5097,17 @@ msgstr "modificar"
 msgid "modified"
 msgstr "modificado"
 
-#: merge-recursive.c:3052
-msgid "content"
-msgstr "contenido"
-
-#: merge-recursive.c:3056
-msgid "add/add"
-msgstr "agregar/agregar"
-
 #: merge-recursive.c:3079
 #, c-format
 msgid "Skipped %s (merged same as existing)"
 msgstr "Saltado %s (fusionado como existente)"
 
-#: merge-recursive.c:3101 git-submodule.sh:959
-msgid "submodule"
-msgstr "submódulo"
-
-#: merge-recursive.c:3102
-#, c-format
-msgid "CONFLICT (%s): Merge conflict in %s"
-msgstr "CONFLICTO (%s): Conflicto de fusión en %s"
-
 #: merge-recursive.c:3132
 #, c-format
 msgid "Adding as %s instead"
 msgstr "Agregando más bien como %s"
 
-#: merge-recursive.c:3215
-#, c-format
-msgid ""
-"Path updated: %s added in %s inside a directory that was renamed in %s; "
-"moving it to %s."
-msgstr ""
-"Path actualizado: %s agregado en %s dentro de un directorio que fue "
-"renombrado en %s; moviéndolo a %s."
-
-#: merge-recursive.c:3218
-#, c-format
-msgid ""
-"CONFLICT (file location): %s added in %s inside a directory that was renamed "
-"in %s, suggesting it should perhaps be moved to %s."
-msgstr ""
-"CONFLICTO (ubicación de archivo): %s agregado en %s dentro de un directorio "
-"que fue renombrado en %s, sugerimos que debería ser movido a %s."
-
-#: merge-recursive.c:3222
-#, c-format
-msgid ""
-"Path updated: %s renamed to %s in %s, inside a directory that was renamed in "
-"%s; moving it to %s."
-msgstr ""
-"Path actualizado: %s renombrado a %s en %s, dentro de un directorio que fue "
-"renombrado en %s; moviéndolo a %s."
-
-#: merge-recursive.c:3225
-#, c-format
-msgid ""
-"CONFLICT (file location): %s renamed to %s in %s, inside a directory that "
-"was renamed in %s, suggesting it should perhaps be moved to %s."
-msgstr ""
-"CONFLICTO (ubicación de archivo): %s renombrado a %s en %s, dentro de un "
-"directorio que fue renombrado en %s, sugiriendo que tal vez debería ser "
-"movido a %s."
-
-#: merge-recursive.c:3339
+#: merge-recursive.c:3339
 #, c-format
 msgid "Removing %s"
 msgstr "Eliminando %s"
@@ -4862,46 +5137,33 @@ msgstr "Agregando %s"
 msgid "CONFLICT (add/add): Merge conflict in %s"
 msgstr "CONFLICTO (add/add): Conflicto de merge en %s"
 
-#: merge-recursive.c:3436
-msgid "Already up to date!"
-msgstr "¡Ya está actualizado!"
-
 #: merge-recursive.c:3445
 #, c-format
 msgid "merging of trees %s and %s failed"
 msgstr "falló la fusión de los árboles %s y %s"
 
-#: merge-recursive.c:3549
+#: merge-recursive.c:3539
 msgid "Merging:"
 msgstr "Fusionando:"
 
-#: merge-recursive.c:3562
+#: merge-recursive.c:3552
 #, 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:3612
+#: merge-recursive.c:3602
 msgid "merge returned no commit"
 msgstr "la fusión no devolvió ningún commit"
 
-#: merge-recursive.c:3671
-#, c-format
-msgid ""
-"Your local changes to the following files would be overwritten by merge:\n"
-"  %s"
-msgstr ""
-"Los cambios locales de los siguientes archivos serán sobreescritos por "
-"merge:\n"
-"  %s"
-
-#: merge-recursive.c:3768
+#: merge-recursive.c:3758
 #, c-format
 msgid "Could not parse object '%s'"
 msgstr "No se pudo analizar el objeto '%s'"
 
-#: merge-recursive.c:3786 builtin/merge.c:705 builtin/merge.c:885
+#: merge-recursive.c:3776 builtin/merge.c:712 builtin/merge.c:896
+#: builtin/stash.c:471
 msgid "Unable to write index."
 msgstr "Incapaz de escribir el índice."
 
@@ -4909,187 +5171,181 @@ msgstr "Incapaz de escribir el índice."
 msgid "failed to read the cache"
 msgstr "falló al leer la cache"
 
-#: merge.c:108 rerere.c:720 builtin/am.c:1878 builtin/am.c:1912
-#: builtin/checkout.c:559 builtin/checkout.c:822 builtin/clone.c:816
+#: merge.c:109 rerere.c:704 builtin/am.c:1883 builtin/am.c:1917
+#: builtin/checkout.c:575 builtin/checkout.c:828 builtin/clone.c:817
 #: builtin/stash.c:265
 msgid "unable to write new index file"
 msgstr "no es posible escribir el archivo índice"
 
-#: midx.c:68
+#: midx.c:62
+msgid "multi-pack-index OID fanout is of the wrong size"
+msgstr ""
+"El abanico de OID de índice de paquetes múltiples es del tamaño incorrecto"
+
+#: midx.c:93
 #, c-format
 msgid "multi-pack-index file %s is too small"
 msgstr "archivo multi-pack-index %s es muy pequeño"
 
-#: midx.c:84
+#: midx.c:109
 #, c-format
 msgid "multi-pack-index signature 0x%08x does not match signature 0x%08x"
 msgstr "firma de multi-pack-index 0x%08x no concuerda con firma 0x%08x"
 
-#: midx.c:89
+#: midx.c:114
 #, c-format
 msgid "multi-pack-index version %d not recognized"
 msgstr "versión %d de multi-pack-index no reconocida"
 
-#: midx.c:94
+#: midx.c:119
 #, c-format
-msgid "hash version %u does not match"
-msgstr "versión de hash %u no concuerda"
-
-#: midx.c:108
-msgid "invalid chunk offset (too large)"
-msgstr "offset inválido del conjunto (muy grande)"
-
-#: midx.c:132
-msgid "terminating multi-pack-index chunk id appears earlier than expected"
+msgid "multi-pack-index hash version %u does not match version %u"
 msgstr ""
-"terminando multi-pack-index porque el id del conjunto aparece antes de lo "
-"esperado"
+"La versión de hash de índice de paquetes múltiples %u no coincide con la "
+"versión %u"
 
-#: midx.c:145
+#: midx.c:136
 msgid "multi-pack-index missing required pack-name chunk"
 msgstr "multi-pack-index le falta el conjunto pack-name requerido"
 
-#: midx.c:147
+#: midx.c:138
 msgid "multi-pack-index missing required OID fanout chunk"
 msgstr "multi-pack-index le falta el conjunto OID fanout requerido"
 
-#: midx.c:149
+#: midx.c:140
 msgid "multi-pack-index missing required OID lookup chunk"
 msgstr "multi-pack-index le falta el conjunto OID fanout requerido"
 
-#: midx.c:151
+#: midx.c:142
 msgid "multi-pack-index missing required object offsets chunk"
 msgstr "multi-pack-index le falta el conjunto de offset del objeto requerido"
 
-#: midx.c:165
+#: midx.c:158
 #, c-format
 msgid "multi-pack-index pack names out of order: '%s' before '%s'"
 msgstr "multi-pack-index nombres de paquete fuera de orden:'%s' antes '%s'"
 
-#: midx.c:208
+#: midx.c:202
 #, c-format
 msgid "bad pack-int-id: %u (%u total packs)"
 msgstr "mal pack-int-id: %u (%u paquetes totales)"
 
-#: midx.c:258
+#: midx.c:252
 msgid "multi-pack-index stores a 64-bit offset, but off_t is too small"
 msgstr "multi-pack-index guarda un offset de 64-bit, pero off_t es muy pequeño"
 
-#: midx.c:286
-msgid "error preparing packfile from multi-pack-index"
-msgstr "error preparando packfile de multi-pack-index"
-
-#: midx.c:470
+#: midx.c:467
 #, c-format
 msgid "failed to add packfile '%s'"
 msgstr "falló al agregar packfile '%s'"
 
-#: midx.c:476
+#: midx.c:473
 #, c-format
 msgid "failed to open pack-index '%s'"
 msgstr "falló al abrir pack-index '%s'"
 
-#: midx.c:536
+#: midx.c:533
 #, c-format
 msgid "failed to locate object %d in packfile"
 msgstr "falló al ubicar objeto %d en packfile"
 
-#: midx.c:840
+#: midx.c:821
 msgid "Adding packfiles to multi-pack-index"
 msgstr "Agregando packfiles a multi-pack-index"
 
-#: midx.c:873
+#: midx.c:855
 #, c-format
 msgid "did not see pack-file %s to drop"
 msgstr "no se vió pack-file %s caer"
 
-#: midx.c:925
+#: midx.c:904
 msgid "no pack files to index."
 msgstr "no hay archivos pack para indexar."
 
-#: midx.c:977
-msgid "Writing chunks to multi-pack-index"
-msgstr "Escribiendo chunks a multi-pack-index"
-
-#: midx.c:1056
+#: midx.c:965
 #, c-format
 msgid "failed to clear multi-pack-index at %s"
 msgstr "falló al limpiar multi-pack-index en %s"
 
-#: midx.c:1112
+#: midx.c:1021
+msgid "multi-pack-index file exists, but failed to parse"
+msgstr ""
+"El archivo de índice de paquetes múltiples existe, pero no se pudo analizar"
+
+#: midx.c:1029
 msgid "Looking for referenced packfiles"
 msgstr "Buscando por packfiles referidos"
 
-#: midx.c:1127
+#: midx.c:1044
 #, c-format
 msgid ""
 "oid fanout out of order: fanout[%d] = %<PRIx32> > %<PRIx32> = fanout[%d]"
 msgstr ""
 "oid fanout fuera de orden: fanout[%d] = %<PRIx32> > %<PRIx32> = fanout[%d]"
 
-#: midx.c:1132
+#: midx.c:1049
 msgid "the midx contains no oid"
 msgstr "el midx no contiene oid"
 
-#: midx.c:1141
+#: midx.c:1058
 msgid "Verifying OID order in multi-pack-index"
 msgstr "Verificando orden de OID en multi-pack-index"
 
-#: midx.c:1150
+#: midx.c:1067
 #, c-format
 msgid "oid lookup out of order: oid[%d] = %s >= %s = oid[%d]"
 msgstr "oid lookup fuera de orden: oid[%d] = %s >= %s = oid[%d]"
 
-#: midx.c:1170
+#: midx.c:1087
 msgid "Sorting objects by packfile"
 msgstr "Ordenando objetos por packfile"
 
-#: midx.c:1177
+#: midx.c:1094
 msgid "Verifying object offsets"
 msgstr "Verificando offsets de objetos"
 
-#: midx.c:1193
+#: midx.c:1110
 #, c-format
 msgid "failed to load pack entry for oid[%d] = %s"
 msgstr "fallo al cargar entrada pack para oid[%d] = %s"
 
-#: midx.c:1199
+#: midx.c:1116
 #, c-format
 msgid "failed to load pack-index for packfile %s"
 msgstr "falló al cargar el pack-index para packfile %s"
 
-#: midx.c:1208
+#: midx.c:1125
 #, c-format
 msgid "incorrect object offset for oid[%d] = %s: %<PRIx64> != %<PRIx64>"
 msgstr "offset para objeto incorrecto oid[%d] = %s: %<PRIx64> != %<PRIx64>"
 
-#: midx.c:1233
+#: midx.c:1150
 msgid "Counting referenced objects"
 msgstr "Contando objetos no referenciados"
 
-#: midx.c:1243
+#: midx.c:1160
 msgid "Finding and deleting unreferenced packfiles"
 msgstr "Encontrando y borrando packfiles sin referencias"
 
-#: midx.c:1433
+#: midx.c:1351
 msgid "could not start pack-objects"
 msgstr "no se pudo empezar los pack-objetcts"
 
-#: midx.c:1452
+#: midx.c:1371
 msgid "could not finish pack-objects"
 msgstr "no se pudo finalizar pack-objetcts"
 
-#: name-hash.c:537
+#: name-hash.c:538
 #, c-format
 msgid "unable to create lazy_dir thread: %s"
 msgstr "no es posible crear hilo lazy_dir: %s"
 
-#: name-hash.c:559
+#: name-hash.c:560
 #, c-format
 msgid "unable to create lazy_name thread: %s"
 msgstr "no es posible crear hilo lazy_name: %s"
 
-#: name-hash.c:565
+#: name-hash.c:566
 #, c-format
 msgid "unable to join lazy_name thread: %s"
 msgstr "no es posible unir hilo lazy_name: %s"
@@ -5136,555 +5392,973 @@ msgstr "Rehusando reescribir notas en %s (fuera de refs/notes/)"
 msgid "Bad %s value: '%s'"
 msgstr "Valor erróneo para %s: '%s'"
 
-#: object.c:53
+#: object-file.c:480
 #, c-format
-msgid "invalid object type \"%s\""
-msgstr "tipo de objeto \"%s\" inválido"
+msgid "object directory %s does not exist; check .git/objects/info/alternates"
+msgstr "objeto directorio %s no existe; revisa .git/objects/info/alternates"
 
-#: object.c:173
+#: object-file.c:531
 #, c-format
-msgid "object %s is a %s, not a %s"
-msgstr "objeto %s es un %s, no un %s"
+msgid "unable to normalize alternate object path: %s"
+msgstr "incapaz de normalizar la ruta de objeto alterno: %s"
 
-#: object.c:233
+#: object-file.c:603
 #, c-format
-msgid "object %s has unknown type id %d"
-msgstr "el objeto %s tiene un id de tipo desconocido %d"
+msgid "%s: ignoring alternate object stores, nesting too deep"
+msgstr "%s: ignorando espacios de objetos alternos, anidado muy profundo"
 
-#: object.c:246
+#: object-file.c:610
 #, c-format
-msgid "unable to parse object: %s"
-msgstr "incapaz de analizar objeto: %s"
+msgid "unable to normalize object directory: %s"
+msgstr "incapaz de normalizar directorio de objeto: %s"
 
-#: object.c:266 object.c:278
-#, c-format
-msgid "hash mismatch %s"
-msgstr "hash no concuerda %s"
+#: object-file.c:653
+msgid "unable to fdopen alternates lockfile"
+msgstr "no es posible hacer fdopen en lockfile alternos"
 
-#: pack-bitmap.c:815 pack-bitmap.c:821 builtin/pack-objects.c:2184
-#, c-format
-msgid "unable to get size of %s"
-msgstr "no se pudo obtener el tamaño de %s"
+#: object-file.c:671
+msgid "unable to read alternates file"
+msgstr "no es posible leer archivos alternos"
 
-#: packfile.c:630
-msgid "offset before end of packfile (broken .idx?)"
-msgstr "offset antes del final del paquete (broken .idx?)"
+#: object-file.c:678
+msgid "unable to move new alternates file into place"
+msgstr "no es posible mover archivos alternos en el lugar"
 
-#: packfile.c:1900
+#: object-file.c:713
 #, 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?)"
+msgid "path '%s' does not exist"
+msgstr "ruta '%s' no existe"
 
-#: packfile.c:1904
+#: object-file.c:734
 #, c-format
-msgid "offset beyond end of pack index for %s (truncated index?)"
+msgid "reference repository '%s' as a linked checkout is not supported yet."
 msgstr ""
-"offset más allá del índice de fin de paquete para %s (¿índice truncado?)"
+"repositorio de referencia '%s' como un checkout vinculado no es soportado "
+"todavía."
 
-#: parse-options-cb.c:20 parse-options-cb.c:24
+#: object-file.c:740
 #, c-format
-msgid "option `%s' expects a numerical value"
-msgstr "opción `%s' espera un valor numérico"
+msgid "reference repository '%s' is not a local repository."
+msgstr "repositorio de referencia '%s' no es un repositorio local."
 
-#: parse-options-cb.c:41
+#: object-file.c:746
 #, c-format
-msgid "malformed expiration date '%s'"
-msgstr "fecha de expiración mal formada: '%s'"
+msgid "reference repository '%s' is shallow"
+msgstr "repositorio de referencia '%s' es superficial (shallow)"
 
-#: parse-options-cb.c:54
+#: object-file.c:754
 #, c-format
-msgid "option `%s' expects \"always\", \"auto\", or \"never\""
-msgstr "opción `%s' puede usar \"always\", \"auto\", o \"never\""
+msgid "reference repository '%s' is grafted"
+msgstr "repositorio de referencia '% s' está injertado"
 
-#: parse-options-cb.c:130 parse-options-cb.c:147
+#: object-file.c:814
 #, c-format
-msgid "malformed object name '%s'"
-msgstr "nombre de objeto mal formado '%s'"
+msgid "invalid line while parsing alternate refs: %s"
+msgstr "línea inválida mientras se analizaban refs alternas: %s"
 
-#: parse-options.c:38
+#: object-file.c:964
 #, c-format
-msgid "%s requires a value"
-msgstr "%s requiere un valor"
+msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
+msgstr "intentando usar mmap %<PRIuMAX> sobre límite %<PRIuMAX>"
 
-#: parse-options.c:73
-#, c-format
-msgid "%s is incompatible with %s"
-msgstr "%s es incompatible con %s"
+#: object-file.c:985
+msgid "mmap failed"
+msgstr "mmap falló"
 
-#: parse-options.c:78
+#: object-file.c:1149
 #, c-format
-msgid "%s : incompatible with something else"
-msgstr "%s : incompatible con otra cosa"
+msgid "object file %s is empty"
+msgstr "archivo de objeto %s está vacío"
 
-#: parse-options.c:92 parse-options.c:96 parse-options.c:317
+#: object-file.c:1284 object-file.c:2477
 #, c-format
-msgid "%s takes no value"
-msgstr "%s no toma valores"
+msgid "corrupt loose object '%s'"
+msgstr "objeto perdido corrupto '%s'"
 
-#: parse-options.c:94
+#: object-file.c:1286 object-file.c:2481
 #, c-format
-msgid "%s isn't available"
-msgstr "%s no está disponible"
+msgid "garbage at end of loose object '%s'"
+msgstr "basura al final del objeto perdido '%s'"
 
-#: parse-options.c:217
-#, c-format
-msgid "%s expects a non-negative integer value with an optional k/m/g suffix"
-msgstr "%s espera un valor entero no negativo con un sufijo opcional k/m/g"
+#: object-file.c:1328
+msgid "invalid object type"
+msgstr "tipo de objeto inválido"
 
-#: parse-options.c:386
+#: object-file.c:1412
 #, c-format
-msgid "ambiguous option: %s (could be --%s%s or --%s%s)"
-msgstr "opción ambigua: %s (puede ser --%s%s o --%s%s)"
+msgid "unable to unpack %s header with --allow-unknown-type"
+msgstr "no es posible desempacar header %s con --allow-unknown-type"
 
-#: parse-options.c:420 parse-options.c:428
+#: object-file.c:1415
 #, c-format
-msgid "did you mean `--%s` (with two dashes)?"
-msgstr "¿quisiste decir `--%s` (con dos guiones)?"
+msgid "unable to unpack %s header"
+msgstr "incapaz de desempaquetar header %s"
 
-#: parse-options.c:663 parse-options.c:963
+#: object-file.c:1421
 #, c-format
-msgid "alias of --%s"
-msgstr "alias de --%s"
+msgid "unable to parse %s header with --allow-unknown-type"
+msgstr "no es posible analizar header %s con --allow-unknown-type"
 
-#: parse-options.c:854
+#: object-file.c:1424
 #, c-format
-msgid "unknown option `%s'"
-msgstr "opción `%s' desconocida"
+msgid "unable to parse %s header"
+msgstr "incapaz de analizar header %s"
 
-#: parse-options.c:856
+#: object-file.c:1651
 #, c-format
-msgid "unknown switch `%c'"
-msgstr "switch desconocido `%c'"
+msgid "failed to read object %s"
+msgstr "falló al leer objeto %s"
 
-#: parse-options.c:858
+#: object-file.c:1655
 #, c-format
-msgid "unknown non-ascii option in string: `%s'"
-msgstr "opción desconocida en string no ascii: `%s'"
-
-#: parse-options.c:882
-msgid "..."
-msgstr "..."
+msgid "replacement %s not found for %s"
+msgstr "reemplazo %s no encontrado para %s"
 
-#: parse-options.c:901
+#: object-file.c:1659
 #, c-format
-msgid "usage: %s"
-msgstr "uso: %s"
+msgid "loose object %s (stored in %s) is corrupt"
+msgstr "objeto perdido %s (guardado en %s) está corrompido"
 
-#. TRANSLATORS: the colon here should align with the
-#. one in "usage: %s" translation.
-#.
-#: parse-options.c:907
+#: object-file.c:1663
 #, c-format
-msgid "   or: %s"
-msgstr "   o: %s"
+msgid "packed object %s (stored in %s) is corrupt"
+msgstr "paquete de objeto %s (guardado en %s) está corrompido"
 
-#: parse-options.c:910
+#: object-file.c:1768
 #, c-format
-msgid "    %s"
-msgstr "    %s"
-
-#: parse-options.c:949
-msgid "-NUM"
-msgstr "-NUM"
+msgid "unable to write file %s"
+msgstr "no es posible escribir archivo %s"
 
-#: path.c:915
+#: object-file.c:1775
 #, c-format
-msgid "Could not make %s writable by group"
-msgstr "No se pudo hacer que %s fuera escribible por el grupo"
-
-#: pathspec.c:130
-msgid "Escape character '\\' not allowed as last character in attr value"
-msgstr ""
-"Carácter de escape '\\' no permitido como último carácter en el valor attr"
+msgid "unable to set permission to '%s'"
+msgstr "no se pudo poner permisos a '%s'"
 
-#: pathspec.c:148
-msgid "Only one 'attr:' specification is allowed."
-msgstr "Solo una especificación 'attr' es permitida."
+#: object-file.c:1782
+msgid "file write error"
+msgstr "falló de escritura"
 
-#: pathspec.c:151
-msgid "attr spec must not be empty"
-msgstr "especificación attr no puede estar vacía"
+#: object-file.c:1802
+msgid "error when closing loose object file"
+msgstr "error cerrando el archivo de objeto suelto"
 
-#: pathspec.c:194
+#: object-file.c:1867
 #, c-format
-msgid "invalid attribute name %s"
-msgstr "nombre de atributo %s inválido"
-
-#: pathspec.c:259
-msgid "global 'glob' and 'noglob' pathspec settings are incompatible"
+msgid "insufficient permission for adding an object to repository database %s"
 msgstr ""
-"configuraciones globales de pathspec 'glob' y 'noglob' son incompatibles"
+"permisos insuficientes para agregar un objeto a la base de datos del "
+"repositorio %s"
 
-#: pathspec.c:266
-msgid ""
-"global 'literal' pathspec setting is incompatible with all other global "
-"pathspec settings"
-msgstr ""
-"la configuración global de 'literal' para patrones de ruta es incompatible "
-"con las demás configuraciones globales de patrones de ruta"
+#: object-file.c:1869
+msgid "unable to create temporary file"
+msgstr "no es posible crear un archivo temporal"
 
-#: pathspec.c:306
-msgid "invalid parameter for pathspec magic 'prefix'"
-msgstr "parámetro no válido para el prefijo 'magic pathspec'"
+#: object-file.c:1893
+msgid "unable to write loose object file"
+msgstr "no es posible escribir el archivo de objeto suelto"
 
-#: pathspec.c:327
+#: object-file.c:1899
 #, c-format
-msgid "Invalid pathspec magic '%.*s' in '%s'"
-msgstr "Magic pathspec inválido '%.*s' en '%s'"
+msgid "unable to deflate new object %s (%d)"
+msgstr "no es posible desinflar el objeto nuevo %s (%d)"
 
-#: pathspec.c:332
+#: object-file.c:1903
 #, c-format
-msgid "Missing ')' at the end of pathspec magic in '%s'"
-msgstr "Falta ')' al final del magic pathspec en '%s'"
+msgid "deflateEnd on object %s failed (%d)"
+msgstr "deflateEnd en objeto %s falló (%d)"
 
-#: pathspec.c:370
+#: object-file.c:1907
 #, c-format
-msgid "Unimplemented pathspec magic '%c' in '%s'"
-msgstr "Magic pathspec '%c' no implementado en '%s'"
+msgid "confused by unstable object source data for %s"
+msgstr "confundido por fuente de data de objetos inestable para %s"
 
-#: pathspec.c:429
+#: object-file.c:1917 builtin/pack-objects.c:1097
 #, c-format
-msgid "%s: 'literal' and 'glob' are incompatible"
-msgstr "%s: 'literal' y 'glob' son incompatibles"
+msgid "failed utime() on %s"
+msgstr "falló utime() en %s"
 
-#: pathspec.c:445
+#: object-file.c:1994
 #, c-format
-msgid "%s: '%s' is outside repository at '%s'"
-msgstr "%s: '%s' está fuera del repositorio en '%s'"
+msgid "cannot read object for %s"
+msgstr "no se pudo leer el objeto para %s"
 
-#: pathspec.c:521
-#, c-format
-msgid "'%s' (mnemonic: '%c')"
-msgstr "'%s' (nemotécnico: '%c')"
+#: object-file.c:2045
+msgid "corrupt commit"
+msgstr "commit corrupto"
 
-#: pathspec.c:531
-#, c-format
-msgid "%s: pathspec magic not supported by this command: %s"
-msgstr "%s: magic pathspec no soportado por este comando: %s"
+#: object-file.c:2053
+msgid "corrupt tag"
+msgstr "tag corrupto"
 
-#: pathspec.c:598
+#: object-file.c:2153
 #, c-format
-msgid "pathspec '%s' is beyond a symbolic link"
-msgstr "el patrón de ruta '%s' está detrás de un enlace simbólico"
+msgid "read error while indexing %s"
+msgstr "error leyendo al indexar %s"
 
-#: pathspec.c:643
+#: object-file.c:2156
 #, c-format
-msgid "line is badly quoted: %s"
-msgstr "la línea está mál citada: %s"
-
-#: pkt-line.c:92
-msgid "unable to write flush packet"
-msgstr "no es posible escribir flush packet"
-
-#: pkt-line.c:99
-msgid "unable to write delim packet"
-msgstr "no es posible escribir delim packet"
-
-#: pkt-line.c:106
-msgid "unable to write stateless separator packet"
-msgstr "no es posible escribir un paquete separador sin estado (stateless)"
-
-#: pkt-line.c:113
-msgid "flush packet write failed"
-msgstr "limpieza de escritura de paquetes falló"
+msgid "short read while indexing %s"
+msgstr "lectura corta al indexar %s"
 
-#: pkt-line.c:153 pkt-line.c:239
-msgid "protocol error: impossibly long line"
-msgstr "error de protocolo: línea imposiblemente larga"
+#: object-file.c:2229 object-file.c:2239
+#, c-format
+msgid "%s: failed to insert into database"
+msgstr "%s: falló al insertar en la base de datos"
 
-#: pkt-line.c:169 pkt-line.c:171
-msgid "packet write with format failed"
-msgstr "escritura de paquetes con formato falló"
+#: object-file.c:2245
+#, c-format
+msgid "%s: unsupported file type"
+msgstr "%s: tipo de archivo no soportado"
 
-#: pkt-line.c:203
-msgid "packet write failed - data exceeds max packet size"
-msgstr "fallo al escribir paquete - la data excede al tamaño máximo de paquete"
+#: object-file.c:2269
+#, c-format
+msgid "%s is not a valid object"
+msgstr "%s no es objeto válido"
 
-#: pkt-line.c:210 pkt-line.c:217
-msgid "packet write failed"
-msgstr "escritura de paquetes falló"
+#: object-file.c:2271
+#, c-format
+msgid "%s is not a valid '%s' object"
+msgstr "%s no es un objeto '%s' válido"
 
-#: pkt-line.c:302
-msgid "read error"
-msgstr "error de lectura"
+#: object-file.c:2298 builtin/index-pack.c:192
+#, c-format
+msgid "unable to open %s"
+msgstr "no es posible abrir %s"
 
-#: pkt-line.c:310
-msgid "the remote end hung up unexpectedly"
-msgstr "el remoto se colgó de manera inesperada"
+#: object-file.c:2488 object-file.c:2541
+#, c-format
+msgid "hash mismatch for %s (expected %s)"
+msgstr "hash no concuerda para %s (se esperaba %s)"
 
-#: pkt-line.c:338
+#: object-file.c:2512
 #, c-format
-msgid "protocol error: bad line length character: %.4s"
-msgstr "error de protocolo: mal caracter de largo de línea: %.4s"
+msgid "unable to mmap %s"
+msgstr "no es posible hacer mmap a %s"
 
-#: pkt-line.c:352 pkt-line.c:357
+#: object-file.c:2517
 #, c-format
-msgid "protocol error: bad line length %d"
-msgstr "error de protocolo: mal largo de línea %d"
+msgid "unable to unpack header of %s"
+msgstr "incapaz de desempaquetar header de %s"
 
-#: pkt-line.c:373
+#: object-file.c:2523
 #, c-format
-msgid "remote error: %s"
-msgstr "error remoto: %s"
+msgid "unable to parse header of %s"
+msgstr "incapaz de analizar header de %s"
 
-#: preload-index.c:119
-msgid "Refreshing index"
-msgstr "Refrescando index"
+#: object-file.c:2534
+#, c-format
+msgid "unable to unpack contents of %s"
+msgstr "no es posible desempaquetar contenidos de %s"
 
-#: preload-index.c:138
+#: object-name.c:486
 #, c-format
-msgid "unable to create threaded lstat: %s"
-msgstr "no es posible crear lstat hilado: %s"
+msgid "short object ID %s is ambiguous"
+msgstr "El ID de objeto corto %s es ambiguo"
 
-#: pretty.c:982
-msgid "unable to parse --pretty format"
-msgstr "incapaz de analizar el formato --pretty"
+#: object-name.c:497
+msgid "The candidates are:"
+msgstr "Los candidatos son:"
 
-#: promisor-remote.c:23
-msgid "Remote with no URL"
-msgstr "Remoto sin URL"
+#: object-name.c:796
+msgid ""
+"Git normally never creates a ref that ends with 40 hex characters\n"
+"because it will be ignored when you just specify 40-hex. These refs\n"
+"may be created by mistake. For example,\n"
+"\n"
+"  git switch -c $br $(git rev-parse ...)\n"
+"\n"
+"where \"$br\" is somehow empty and a 40-hex ref is created. Please\n"
+"examine these refs and maybe delete them. Turn this message off by\n"
+"running \"git config advice.objectNameWarning false\""
+msgstr ""
+"Git normalmente nunca crea una ref que termine con 40 caracteres hex\n"
+"porque esto sería ignorado cuando solo se especifiquen 40-hex. Estas refs\n"
+"tal vez sean creadas por error. Por ejemplo,\n"
+"\n"
+"  git switch -c $br $(git rev-parse ...)\n"
+"\n"
+"donde \"$br\" está de alguna manera vacía y una ref de 40-hex es creada. Por "
+"favor\n"
+"examina estas refs y tal vez bórralas. Silencia este mensaje \n"
+"ejecutando \"git config advice.objectNameWarning false\""
 
-#: promisor-remote.c:58
+#: object-name.c:916
 #, c-format
-msgid "promisor remote name cannot begin with '/': %s"
-msgstr "nombre remoto promisor no puede comenzar con '/': %s"
+msgid "log for '%.*s' only goes back to %s"
+msgstr "log para '%.*s' solo va hasta %s"
 
-#: prune-packed.c:35
-msgid "Removing duplicate objects"
-msgstr "Removiendo objetos duplicados"
+#: object-name.c:924
+#, c-format
+msgid "log for '%.*s' only has %d entries"
+msgstr "log para '%.*s' solo tiene %d entradas"
 
-#: range-diff.c:77
-msgid "could not start `log`"
-msgstr "no se pudo comenzar `log`"
+#: object-name.c:1702
+#, c-format
+msgid "path '%s' exists on disk, but not in '%.*s'"
+msgstr "la ruta '%s' existe en disco, pero no en '%.*s'"
 
-#: range-diff.c:79
-msgid "could not read `log` output"
-msgstr "no se pudo leer output de `log`"
+#: object-name.c:1708
+#, c-format
+msgid ""
+"path '%s' exists, but not '%s'\n"
+"hint: Did you mean '%.*s:%s' aka '%.*s:./%s'?"
+msgstr ""
+"ruta '%s' existe, pero no '%s'\n"
+"ayuda: ¿Quisiste decir '%.*s:%s' o '%.*s:./%s'?"
 
-#: range-diff.c:98 sequencer.c:5143
+#: object-name.c:1717
 #, c-format
-msgid "could not parse commit '%s'"
-msgstr "no se pudo analizar commit '%s'"
+msgid "path '%s' does not exist in '%.*s'"
+msgstr "ruta '%s' no existe en '%.*s'"
 
-#: range-diff.c:112
+#: object-name.c:1745
 #, c-format
 msgid ""
-"could not parse first line of `log` output: did not start with 'commit ': "
-"'%s'"
+"path '%s' is in the index, but not at stage %d\n"
+"hint: Did you mean ':%d:%s'?"
 msgstr ""
-"no se pudo leer la primera línea de salida `log`: no comienza con 'commit ': "
-"'%s'"
+"ruta '%s' está en el index, pero no en stage %d\n"
+"ayuda:¿Quisiste decir: '%d:%s'?"
 
-#: range-diff.c:137
+#: object-name.c:1761
 #, c-format
-msgid "could not parse git header '%.*s'"
-msgstr "no se puede analizar git header '%.*s'"
-
-#: range-diff.c:301
-msgid "failed to generate diff"
-msgstr "falló al generar diff"
+msgid ""
+"path '%s' is in the index, but not '%s'\n"
+"hint: Did you mean ':%d:%s' aka ':%d:./%s'?"
+msgstr ""
+"ruta '%s' está en el index, pero no '%s'\n"
+"ayuda:¿Quisiste decir ':%d:%s' o ':%d:./%s'?"
 
-#: range-diff.c:534 range-diff.c:536
+#: object-name.c:1769
 #, c-format
-msgid "could not parse log for '%s'"
-msgstr "no se pudo leer el log para '%s'"
+msgid "path '%s' exists on disk, but not in the index"
+msgstr "ruta '%s' existe en el disco, pero no en el index"
 
-#: read-cache.c:680
+#: object-name.c:1771
 #, c-format
-msgid "will not add file alias '%s' ('%s' already exists in index)"
-msgstr "no agregará alias de archivo '%s' ('%s' ya existe en el index)"
+msgid "path '%s' does not exist (neither on disk nor in the index)"
+msgstr "ruta '%s' no existe (ni en disco ni en el index)"
 
-#: read-cache.c:696
-msgid "cannot create an empty blob in the object database"
-msgstr "no se puede crear un blob vacío en la base de datos de objetos"
+#: object-name.c:1784
+msgid "relative path syntax can't be used outside working tree"
+msgstr ""
+"la sintaxis de ruta relativa no se puede usar fuera del directorio de trabajo"
 
-#: read-cache.c:718
+#: object-name.c:1922
 #, c-format
-msgid "%s: can only add regular files, symbolic links or git-directories"
-msgstr ""
-"%s: solo puede agregar archivos regulares, symbolic links o git-directories"
+msgid "invalid object name '%.*s'."
+msgstr "nombre de objeto no válido: '%.*s'."
 
-#: read-cache.c:723
+#: object.c:53
 #, c-format
-msgid "'%s' does not have a commit checked out"
-msgstr "'%s' no tiene un commit checked out"
+msgid "invalid object type \"%s\""
+msgstr "tipo de objeto \"%s\" inválido"
 
-#: read-cache.c:775
+#: object.c:173
 #, c-format
-msgid "unable to index file '%s'"
-msgstr "no es posible indexar archivo '%s'"
+msgid "object %s is a %s, not a %s"
+msgstr "objeto %s es un %s, no un %s"
 
-#: read-cache.c:794
+#: object.c:233
 #, c-format
-msgid "unable to add '%s' to index"
-msgstr "no es posible agregar '%s' al index"
+msgid "object %s has unknown type id %d"
+msgstr "el objeto %s tiene un id de tipo desconocido %d"
 
-#: read-cache.c:805
+#: object.c:246
 #, c-format
-msgid "unable to stat '%s'"
-msgstr "incapaz de correr stat en '%s'"
+msgid "unable to parse object: %s"
+msgstr "incapaz de analizar objeto: %s"
 
-#: read-cache.c:1330
+#: object.c:266 object.c:278
 #, c-format
-msgid "'%s' appears as both a file and as a directory"
-msgstr "'%s' parece ser un directorio y un archivo a la vez"
+msgid "hash mismatch %s"
+msgstr "hash no concuerda %s"
 
-#: read-cache.c:1536
-msgid "Refresh index"
-msgstr "Refrescar index"
+#: pack-bitmap.c:843 pack-bitmap.c:849 builtin/pack-objects.c:2226
+#, c-format
+msgid "unable to get size of %s"
+msgstr "no se pudo obtener el tamaño de %s"
 
-#: read-cache.c:1651
+#: pack-bitmap.c:1489 builtin/rev-list.c:92
 #, c-format
-msgid ""
-"index.version set, but the value is invalid.\n"
-"Using version %i"
-msgstr ""
-"index.version configurado, pero el valor no es válido.\n"
-"Usando versión %i"
+msgid "unable to get disk usage of %s"
+msgstr "no se puede obtener el uso de disco de %s"
 
-#: read-cache.c:1661
+#: pack-revindex.c:220
 #, c-format
-msgid ""
-"GIT_INDEX_VERSION set, but the value is invalid.\n"
-"Using version %i"
-msgstr ""
-"GIT_INDEX_VERSION configurado, pero el valor no es válido.\n"
-"Usando versión %i"
+msgid "reverse-index file %s is too small"
+msgstr "El archivo de índice inverso %s es demasiado pequeño"
 
-#: read-cache.c:1717
+#: pack-revindex.c:225
 #, c-format
-msgid "bad signature 0x%08x"
-msgstr "mala firma 0x%08x"
+msgid "reverse-index file %s is corrupt"
+msgstr "El archivo de índice inverso %s está dañado"
 
-#: read-cache.c:1720
+#: pack-revindex.c:233
 #, c-format
-msgid "bad index version %d"
-msgstr "mala versión del índice %d"
+msgid "reverse-index file %s has unknown signature"
+msgstr "El archivo de índice inverso %s tiene una firma desconocida"
 
-#: read-cache.c:1729
-msgid "bad index file sha1 signature"
-msgstr "mala firma sha1 del archivo index"
+#: pack-revindex.c:237
+#, c-format
+msgid "reverse-index file %s has unsupported version %<PRIu32>"
+msgstr "archivo reverse-index %s tiene una versión no soportada %<PRIu32>"
 
-#: read-cache.c:1759
+#: pack-revindex.c:242
 #, c-format
-msgid "index uses %.4s extension, which we do not understand"
-msgstr "index usa %.4s extensiones, cosa que no entendemos"
+msgid "reverse-index file %s has unsupported hash id %<PRIu32>"
+msgstr "archivo reverse-index %s tiene un id de hash no soportado %<PRIu32>"
 
-#: read-cache.c:1761
+#: pack-write.c:236
+msgid "cannot both write and verify reverse index"
+msgstr "no puede escribir y verificar el índice inverso"
+
+#: pack-write.c:257
 #, c-format
-msgid "ignoring %.4s extension"
-msgstr "ignorando extensión %.4s"
+msgid "could not stat: %s"
+msgstr "no se pudo estad: %s"
 
-#: read-cache.c:1798
+#: pack-write.c:269
 #, c-format
-msgid "unknown index entry format 0x%08x"
-msgstr "formato de index desconocido 0x%08x"
+msgid "failed to make %s readable"
+msgstr "no pudo hacer %s legible"
 
-#: read-cache.c:1814
+#: pack-write.c:508
 #, c-format
-msgid "malformed name field in the index, near path '%s'"
-msgstr "campo nombre malformado en el index, cerca a ruta '%s'"
+msgid "could not write '%s' promisor file"
+msgstr "no se pudo escribir el archivo promisor '%s'"
 
-#: read-cache.c:1871
-msgid "unordered stage entries in index"
+#: packfile.c:625
+msgid "offset before end of packfile (broken .idx?)"
+msgstr "offset antes del final del paquete (broken .idx?)"
+
+#: packfile.c:1934
+#, c-format
+msgid "offset before start of pack index for %s (corrupt index?)"
+msgstr ""
+"offset antes del comienzo del índice del paquete para %s (¿índice corrupto?)"
+
+#: packfile.c:1938
+#, 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-cb.c:20 parse-options-cb.c:24
+#, c-format
+msgid "option `%s' expects a numerical value"
+msgstr "opción `%s' espera un valor numérico"
+
+#: parse-options-cb.c:41
+#, c-format
+msgid "malformed expiration date '%s'"
+msgstr "fecha de expiración mal formada: '%s'"
+
+#: parse-options-cb.c:54
+#, c-format
+msgid "option `%s' expects \"always\", \"auto\", or \"never\""
+msgstr "opción `%s' puede usar \"always\", \"auto\", o \"never\""
+
+#: parse-options-cb.c:132 parse-options-cb.c:149
+#, c-format
+msgid "malformed object name '%s'"
+msgstr "nombre de objeto mal formado '%s'"
+
+#: parse-options.c:38
+#, c-format
+msgid "%s requires a value"
+msgstr "%s requiere un valor"
+
+#: parse-options.c:73
+#, c-format
+msgid "%s is incompatible with %s"
+msgstr "%s es incompatible con %s"
+
+#: parse-options.c:78
+#, c-format
+msgid "%s : incompatible with something else"
+msgstr "%s : incompatible con otra cosa"
+
+#: parse-options.c:92 parse-options.c:96 parse-options.c:317
+#, c-format
+msgid "%s takes no value"
+msgstr "%s no toma valores"
+
+#: parse-options.c:94
+#, c-format
+msgid "%s isn't available"
+msgstr "%s no está disponible"
+
+#: parse-options.c:217
+#, c-format
+msgid "%s expects a non-negative integer value with an optional k/m/g suffix"
+msgstr "%s espera un valor entero no negativo con un sufijo opcional k/m/g"
+
+#: parse-options.c:386
+#, c-format
+msgid "ambiguous option: %s (could be --%s%s or --%s%s)"
+msgstr "opción ambigua: %s (puede ser --%s%s o --%s%s)"
+
+#: parse-options.c:420 parse-options.c:428
+#, c-format
+msgid "did you mean `--%s` (with two dashes)?"
+msgstr "¿quisiste decir `--%s` (con dos guiones)?"
+
+#: parse-options.c:666 parse-options.c:971
+#, c-format
+msgid "alias of --%s"
+msgstr "alias de --%s"
+
+#: parse-options.c:862
+#, c-format
+msgid "unknown option `%s'"
+msgstr "opción `%s' desconocida"
+
+#: parse-options.c:864
+#, c-format
+msgid "unknown switch `%c'"
+msgstr "switch desconocido `%c'"
+
+#: parse-options.c:866
+#, c-format
+msgid "unknown non-ascii option in string: `%s'"
+msgstr "opción desconocida en string no ascii: `%s'"
+
+#: parse-options.c:890
+msgid "..."
+msgstr "..."
+
+#: parse-options.c:909
+#, c-format
+msgid "usage: %s"
+msgstr "uso: %s"
+
+#. TRANSLATORS: the colon here should align with the
+#. one in "usage: %s" translation.
+#.
+#: parse-options.c:915
+#, c-format
+msgid "   or: %s"
+msgstr "   o: %s"
+
+#: parse-options.c:918
+#, c-format
+msgid "    %s"
+msgstr "    %s"
+
+#: parse-options.c:957
+msgid "-NUM"
+msgstr "-NUM"
+
+#: path.c:915
+#, c-format
+msgid "Could not make %s writable by group"
+msgstr "No se pudo hacer que %s fuera escribible por el grupo"
+
+#: pathspec.c:130
+msgid "Escape character '\\' not allowed as last character in attr value"
+msgstr ""
+"Carácter de escape '\\' no permitido como último carácter en el valor attr"
+
+#: pathspec.c:148
+msgid "Only one 'attr:' specification is allowed."
+msgstr "Solo una especificación 'attr' es permitida."
+
+#: pathspec.c:151
+msgid "attr spec must not be empty"
+msgstr "especificación attr no puede estar vacía"
+
+#: pathspec.c:194
+#, c-format
+msgid "invalid attribute name %s"
+msgstr "nombre de atributo %s inválido"
+
+#: pathspec.c:259
+msgid "global 'glob' and 'noglob' pathspec settings are incompatible"
+msgstr ""
+"configuraciones globales de pathspec 'glob' y 'noglob' son incompatibles"
+
+#: pathspec.c:266
+msgid ""
+"global 'literal' pathspec setting is incompatible with all other global "
+"pathspec settings"
+msgstr ""
+"la configuración global de 'literal' para patrones de ruta es incompatible "
+"con las demás configuraciones globales de patrones de ruta"
+
+#: pathspec.c:306
+msgid "invalid parameter for pathspec magic 'prefix'"
+msgstr "parámetro no válido para el prefijo 'magic pathspec'"
+
+#: pathspec.c:327
+#, c-format
+msgid "Invalid pathspec magic '%.*s' in '%s'"
+msgstr "Magic pathspec inválido '%.*s' en '%s'"
+
+#: pathspec.c:332
+#, c-format
+msgid "Missing ')' at the end of pathspec magic in '%s'"
+msgstr "Falta ')' al final del magic pathspec en '%s'"
+
+#: pathspec.c:370
+#, c-format
+msgid "Unimplemented pathspec magic '%c' in '%s'"
+msgstr "Magic pathspec '%c' no implementado en '%s'"
+
+#: pathspec.c:429
+#, c-format
+msgid "%s: 'literal' and 'glob' are incompatible"
+msgstr "%s: 'literal' y 'glob' son incompatibles"
+
+#: pathspec.c:445
+#, c-format
+msgid "%s: '%s' is outside repository at '%s'"
+msgstr "%s: '%s' está fuera del repositorio en '%s'"
+
+#: pathspec.c:521
+#, c-format
+msgid "'%s' (mnemonic: '%c')"
+msgstr "'%s' (nemotécnico: '%c')"
+
+#: pathspec.c:531
+#, c-format
+msgid "%s: pathspec magic not supported by this command: %s"
+msgstr "%s: magic pathspec no soportado por este comando: %s"
+
+#: pathspec.c:598
+#, c-format
+msgid "pathspec '%s' is beyond a symbolic link"
+msgstr "el patrón de ruta '%s' está detrás de un enlace simbólico"
+
+#: pathspec.c:643
+#, c-format
+msgid "line is badly quoted: %s"
+msgstr "la línea está mál citada: %s"
+
+#: pkt-line.c:92
+msgid "unable to write flush packet"
+msgstr "no es posible escribir flush packet"
+
+#: pkt-line.c:99
+msgid "unable to write delim packet"
+msgstr "no es posible escribir delim packet"
+
+#: pkt-line.c:106
+msgid "unable to write stateless separator packet"
+msgstr "no es posible escribir un paquete separador sin estado (stateless)"
+
+#: pkt-line.c:113
+msgid "flush packet write failed"
+msgstr "limpieza de escritura de paquetes falló"
+
+#: pkt-line.c:153 pkt-line.c:239
+msgid "protocol error: impossibly long line"
+msgstr "error de protocolo: línea imposiblemente larga"
+
+#: pkt-line.c:169 pkt-line.c:171
+msgid "packet write with format failed"
+msgstr "escritura de paquetes con formato falló"
+
+#: pkt-line.c:203
+msgid "packet write failed - data exceeds max packet size"
+msgstr "fallo al escribir paquete - la data excede al tamaño máximo de paquete"
+
+#: pkt-line.c:210 pkt-line.c:217
+msgid "packet write failed"
+msgstr "escritura de paquetes falló"
+
+#: pkt-line.c:302
+msgid "read error"
+msgstr "error de lectura"
+
+#: pkt-line.c:310
+msgid "the remote end hung up unexpectedly"
+msgstr "el remoto se colgó de manera inesperada"
+
+#: pkt-line.c:338
+#, c-format
+msgid "protocol error: bad line length character: %.4s"
+msgstr "error de protocolo: mal caracter de largo de línea: %.4s"
+
+#: pkt-line.c:352 pkt-line.c:357
+#, c-format
+msgid "protocol error: bad line length %d"
+msgstr "error de protocolo: mal largo de línea %d"
+
+#: pkt-line.c:373 sideband.c:165
+#, c-format
+msgid "remote error: %s"
+msgstr "error remoto: %s"
+
+#: preload-index.c:125
+msgid "Refreshing index"
+msgstr "Refrescando index"
+
+#: preload-index.c:144
+#, c-format
+msgid "unable to create threaded lstat: %s"
+msgstr "no es posible crear lstat hilado: %s"
+
+#: pretty.c:984
+msgid "unable to parse --pretty format"
+msgstr "incapaz de analizar el formato --pretty"
+
+#: promisor-remote.c:30
+msgid "promisor-remote: unable to fork off fetch subprocess"
+msgstr "promisor-remote: no se puede bifurcar el subproceso de recuperación"
+
+#: promisor-remote.c:35 promisor-remote.c:37
+msgid "promisor-remote: could not write to fetch subprocess"
+msgstr "proiso-remote: no se pudo escribir para recuperar el subproceso"
+
+#: promisor-remote.c:41
+msgid "promisor-remote: could not close stdin to fetch subprocess"
+msgstr "promisor-remote: no se pudo cerrar stdin para recuperar el subproceso"
+
+#: promisor-remote.c:53
+#, c-format
+msgid "promisor remote name cannot begin with '/': %s"
+msgstr "nombre remoto promisor no puede comenzar con '/': %s"
+
+#: prune-packed.c:35
+msgid "Removing duplicate objects"
+msgstr "Removiendo objetos duplicados"
+
+#: range-diff.c:78
+msgid "could not start `log`"
+msgstr "no se pudo comenzar `log`"
+
+#: range-diff.c:80
+msgid "could not read `log` output"
+msgstr "no se pudo leer output de `log`"
+
+#: range-diff.c:101 sequencer.c:5318
+#, c-format
+msgid "could not parse commit '%s'"
+msgstr "no se pudo analizar commit '%s'"
+
+#: range-diff.c:115
+#, c-format
+msgid ""
+"could not parse first line of `log` output: did not start with 'commit ': "
+"'%s'"
+msgstr ""
+"no se pudo leer la primera línea de salida `log`: no comienza con 'commit ': "
+"'%s'"
+
+#: range-diff.c:140
+#, c-format
+msgid "could not parse git header '%.*s'"
+msgstr "no se puede analizar git header '%.*s'"
+
+#: range-diff.c:306
+msgid "failed to generate diff"
+msgstr "falló al generar diff"
+
+#: range-diff.c:558
+msgid "--left-only and --right-only are mutually exclusive"
+msgstr "--left-only y --right-only son mutuamente exclusivas"
+
+#: range-diff.c:561 range-diff.c:563
+#, c-format
+msgid "could not parse log for '%s'"
+msgstr "no se pudo leer el log para '%s'"
+
+#: read-cache.c:682
+#, c-format
+msgid "will not add file alias '%s' ('%s' already exists in index)"
+msgstr "no agregará alias de archivo '%s' ('%s' ya existe en el index)"
+
+#: read-cache.c:698
+msgid "cannot create an empty blob in the object database"
+msgstr "no se puede crear un blob vacío en la base de datos de objetos"
+
+#: read-cache.c:720
+#, c-format
+msgid "%s: can only add regular files, symbolic links or git-directories"
+msgstr ""
+"%s: solo puede agregar archivos regulares, symbolic links o git-directories"
+
+#: read-cache.c:725
+#, c-format
+msgid "'%s' does not have a commit checked out"
+msgstr "'%s' no tiene un commit checked out"
+
+#: read-cache.c:777
+#, c-format
+msgid "unable to index file '%s'"
+msgstr "no es posible indexar archivo '%s'"
+
+#: read-cache.c:796
+#, c-format
+msgid "unable to add '%s' to index"
+msgstr "no es posible agregar '%s' al index"
+
+#: read-cache.c:807
+#, c-format
+msgid "unable to stat '%s'"
+msgstr "incapaz de correr stat en '%s'"
+
+#: read-cache.c:1318
+#, c-format
+msgid "'%s' appears as both a file and as a directory"
+msgstr "'%s' parece ser un directorio y un archivo a la vez"
+
+#: read-cache.c:1532
+msgid "Refresh index"
+msgstr "Refrescar index"
+
+#: read-cache.c:1657
+#, c-format
+msgid ""
+"index.version set, but the value is invalid.\n"
+"Using version %i"
+msgstr ""
+"index.version configurado, pero el valor no es válido.\n"
+"Usando versión %i"
+
+#: read-cache.c:1667
+#, c-format
+msgid ""
+"GIT_INDEX_VERSION set, but the value is invalid.\n"
+"Using version %i"
+msgstr ""
+"GIT_INDEX_VERSION configurado, pero el valor no es válido.\n"
+"Usando versión %i"
+
+#: read-cache.c:1723
+#, c-format
+msgid "bad signature 0x%08x"
+msgstr "mala firma 0x%08x"
+
+#: read-cache.c:1726
+#, c-format
+msgid "bad index version %d"
+msgstr "mala versión del índice %d"
+
+#: read-cache.c:1735
+msgid "bad index file sha1 signature"
+msgstr "mala firma sha1 del archivo index"
+
+#: read-cache.c:1765
+#, c-format
+msgid "index uses %.4s extension, which we do not understand"
+msgstr "index usa %.4s extensiones, cosa que no entendemos"
+
+#: read-cache.c:1767
+#, c-format
+msgid "ignoring %.4s extension"
+msgstr "ignorando extensión %.4s"
+
+#: read-cache.c:1804
+#, c-format
+msgid "unknown index entry format 0x%08x"
+msgstr "formato de index desconocido 0x%08x"
+
+#: read-cache.c:1820
+#, c-format
+msgid "malformed name field in the index, near path '%s'"
+msgstr "campo nombre malformado en el index, cerca a ruta '%s'"
+
+#: read-cache.c:1877
+msgid "unordered stage entries in index"
 msgstr "entradas en stage desordenadas en index"
 
-#: read-cache.c:1874
+#: read-cache.c:1880
 #, c-format
 msgid "multiple stage entries for merged file '%s'"
 msgstr "múltiples entradas extrañas para archivo fusionado '%s'"
 
-#: read-cache.c:1877
+#: read-cache.c:1883
 #, c-format
 msgid "unordered stage entries for '%s'"
 msgstr "entradas de stage desordenadas para '%s'"
 
-#: read-cache.c:1983 read-cache.c:2271 rerere.c:565 rerere.c:599 rerere.c:1111
-#: submodule.c:1619 builtin/add.c:532 builtin/check-ignore.c:181
-#: builtin/checkout.c:488 builtin/checkout.c:674 builtin/clean.c:991
-#: builtin/commit.c:364 builtin/diff-tree.c:121 builtin/grep.c:507
-#: builtin/mv.c:145 builtin/reset.c:247 builtin/rm.c:290
+#: read-cache.c:1989 read-cache.c:2280 rerere.c:549 rerere.c:583 rerere.c:1095
+#: submodule.c:1634 builtin/add.c:546 builtin/check-ignore.c:181
+#: builtin/checkout.c:504 builtin/checkout.c:690 builtin/clean.c:991
+#: builtin/commit.c:364 builtin/diff-tree.c:122 builtin/grep.c:505
+#: builtin/mv.c:146 builtin/reset.c:247 builtin/rm.c:290
 #: builtin/submodule--helper.c:332
 msgid "index file corrupt"
 msgstr "archivo índice corrompido"
 
-#: read-cache.c:2124
+#: read-cache.c:2133
 #, c-format
 msgid "unable to create load_cache_entries thread: %s"
 msgstr "no es posible crear hilo load_cache_entries: %s"
 
-#: read-cache.c:2137
+#: read-cache.c:2146
 #, c-format
 msgid "unable to join load_cache_entries thread: %s"
 msgstr "no es posible unir hilo load_cache_entires: %s"
 
-#: read-cache.c:2170
+#: read-cache.c:2179
 #, c-format
 msgid "%s: index file open failed"
 msgstr "%s: falló al abrir el archivo index"
 
-#: read-cache.c:2174
+#: read-cache.c:2183
 #, c-format
 msgid "%s: cannot stat the open index"
 msgstr "%s: no se puede hacer stat del index abierto"
 
-#: read-cache.c:2178
+#: read-cache.c:2187
 #, c-format
 msgid "%s: index file smaller than expected"
 msgstr "%s: archivo index más pequeño de lo esperado"
 
-#: read-cache.c:2182
+#: read-cache.c:2191
 #, c-format
 msgid "%s: unable to map index file"
 msgstr "%s: no se pudo mapear el archivo index"
 
-#: read-cache.c:2224
+#: read-cache.c:2233
 #, c-format
 msgid "unable to create load_index_extensions thread: %s"
 msgstr "no es posible crear hilo load_index_extensions: %s"
 
-#: read-cache.c:2251
+#: read-cache.c:2260
 #, c-format
 msgid "unable to join load_index_extensions thread: %s"
 msgstr "no es posible unir hilo load_index_extensions: %s"
 
-#: read-cache.c:2283
+#: read-cache.c:2292
 #, c-format
 msgid "could not freshen shared index '%s'"
 msgstr "no se pudo refrescar el index compartido '%s'"
 
-#: read-cache.c:2330
+#: read-cache.c:2339
 #, c-format
 msgid "broken index, expect %s in %s, got %s"
 msgstr "index roto, se esperaba %s en %s, se obtuvo %s"
 
-#: read-cache.c:3026 strbuf.c:1171 wrapper.c:630 builtin/merge.c:1130
+#: read-cache.c:3035 strbuf.c:1171 wrapper.c:633 builtin/merge.c:1141
 #, c-format
 msgid "could not close '%s'"
 msgstr "no se pudo cerrar '%s'"
 
-#: read-cache.c:3129 sequencer.c:2355 sequencer.c:4066
+#: read-cache.c:3138 sequencer.c:2487 sequencer.c:4239
 #, c-format
 msgid "could not stat '%s'"
 msgstr "no se pudo definir '%s'"
 
-#: read-cache.c:3142
+#: read-cache.c:3151
 #, c-format
 msgid "unable to open git dir: %s"
 msgstr "no es posible abrir el directorio de git: %s"
 
-#: read-cache.c:3154
+#: read-cache.c:3163
 #, c-format
 msgid "unable to unlink: %s"
 msgstr "no es posible eliminar el vinculo: %s"
 
-#: read-cache.c:3179
+#: read-cache.c:3188
 #, c-format
 msgid "cannot fix permission bits on '%s'"
 msgstr "no se pudo arreglar bits de permisos en '%s'"
 
-#: read-cache.c:3328
+#: read-cache.c:3337
 #, c-format
 msgid "%s: cannot drop to stage #0"
 msgstr "%s: no se puede eliminar a stage #0"
@@ -5755,7 +6429,7 @@ msgid_plural "Rebase %s onto %s (%d commands)"
 msgstr[0] "Rebase %s en %s (%d comando)"
 msgstr[1] "Rebase %s en %s (%d comandos)"
 
-#: rebase-interactive.c:72 git-rebase--preserve-merges.sh:228
+#: rebase-interactive.c:72 git-rebase--preserve-merges.sh:218
 msgid ""
 "\n"
 "Do not remove any line. Use 'drop' explicitly to remove a commit.\n"
@@ -5763,7 +6437,7 @@ msgstr ""
 "\n"
 "No eliminar ninguna línea. Usa 'drop' explícitamente para borrar un commit \n"
 
-#: rebase-interactive.c:75 git-rebase--preserve-merges.sh:232
+#: rebase-interactive.c:75 git-rebase--preserve-merges.sh:222
 msgid ""
 "\n"
 "If you remove a line here THAT COMMIT WILL BE LOST.\n"
@@ -5771,7 +6445,7 @@ msgstr ""
 "\n"
 "Si eliminas una línea aquí EL COMMIT SE PERDERÁ.\n"
 
-#: rebase-interactive.c:81 git-rebase--preserve-merges.sh:871
+#: rebase-interactive.c:81 git-rebase--preserve-merges.sh:861
 msgid ""
 "\n"
 "You are editing the todo file of an ongoing interactive rebase.\n"
@@ -5785,7 +6459,7 @@ msgstr ""
 "    git rebase --continue\n"
 "\n"
 
-#: rebase-interactive.c:86 git-rebase--preserve-merges.sh:948
+#: rebase-interactive.c:86 git-rebase--preserve-merges.sh:938
 msgid ""
 "\n"
 "However, if you remove everything, the rebase will be aborted.\n"
@@ -5795,14 +6469,14 @@ msgstr ""
 "Como sea, si quieres borrar todo, el rebase será abortado.\n"
 "\n"
 
-#: rebase-interactive.c:110 rerere.c:485 rerere.c:692 sequencer.c:3463
-#: sequencer.c:3489 sequencer.c:5248 builtin/fsck.c:347 builtin/rebase.c:258
+#: rebase-interactive.c:110 rerere.c:469 rerere.c:676 sequencer.c:3615
+#: sequencer.c:3641 sequencer.c:5424 builtin/fsck.c:329 builtin/rebase.c:272
 #, c-format
 msgid "could not write '%s'"
 msgstr "no se pudo escribir '%s'"
 
-#: rebase-interactive.c:116 builtin/rebase.c:190 builtin/rebase.c:216
-#: builtin/rebase.c:240
+#: rebase-interactive.c:116 builtin/rebase.c:204 builtin/rebase.c:230
+#: builtin/rebase.c:254
 #, c-format
 msgid "could not write '%s'."
 msgstr "no se pudo escribir '%s'."
@@ -5834,14 +6508,14 @@ msgstr ""
 "Los posibles comportamientos son: ignore,warn,error.\n"
 "\n"
 
-#: rebase-interactive.c:233 rebase-interactive.c:238 sequencer.c:2274
-#: builtin/rebase.c:176 builtin/rebase.c:201 builtin/rebase.c:227
-#: builtin/rebase.c:252
+#: rebase-interactive.c:233 rebase-interactive.c:238 sequencer.c:2402
+#: builtin/rebase.c:190 builtin/rebase.c:215 builtin/rebase.c:241
+#: builtin/rebase.c:266
 #, c-format
 msgid "could not read '%s'."
 msgstr "no se puede leer '%s'."
 
-#: ref-filter.c:42 wt-status.c:1977
+#: ref-filter.c:42 wt-status.c:1975
 msgid "gone"
 msgstr "desaparecido"
 
@@ -5860,238 +6534,248 @@ msgstr "detrás %d"
 msgid "ahead %d, behind %d"
 msgstr "delante %d, detrás %d"
 
-#: ref-filter.c:165
+#: ref-filter.c:175
 #, c-format
 msgid "expected format: %%(color:<color>)"
 msgstr "formato esperado: %%(color:<color>)"
 
-#: ref-filter.c:167
+#: ref-filter.c:177
 #, c-format
 msgid "unrecognized color: %%(color:%s)"
 msgstr "color no reconocido: %%(color:%s)"
 
-#: ref-filter.c:189
+#: ref-filter.c:199
 #, c-format
 msgid "Integer value expected refname:lstrip=%s"
 msgstr "Valor entero esperado refname:lstrip=%s"
 
-#: ref-filter.c:193
+#: ref-filter.c:203
 #, c-format
 msgid "Integer value expected refname:rstrip=%s"
 msgstr "Valor entero esperado refname:rstrip=%s"
 
-#: ref-filter.c:195
+#: ref-filter.c:205
 #, c-format
 msgid "unrecognized %%(%s) argument: %s"
 msgstr "argumento: %s no reconocido %%(%s)"
 
-#: ref-filter.c:250
+#: ref-filter.c:260
 #, c-format
 msgid "%%(objecttype) does not take arguments"
 msgstr "%%(objecttype) no toma ningún argumento"
 
-#: ref-filter.c:272
+#: ref-filter.c:282
 #, c-format
 msgid "unrecognized %%(objectsize) argument: %s"
 msgstr "%%(objectsize) no reconocido argumento: %s"
 
-#: ref-filter.c:280
+#: ref-filter.c:290
 #, c-format
 msgid "%%(deltabase) does not take arguments"
 msgstr "%%(deltabase) no toma argumentos"
 
-#: ref-filter.c:292
+#: ref-filter.c:302
 #, c-format
 msgid "%%(body) does not take arguments"
 msgstr "%%(body) no toma ningún argumento"
 
-#: ref-filter.c:301
+#: ref-filter.c:315
 #, c-format
-msgid "%%(subject) does not take arguments"
-msgstr "%%(subject) no toma ningún argumento"
+msgid "unrecognized %%(subject) argument: %s"
+msgstr "argumento %%(sujeto) no reconocido: %s"
 
-#: ref-filter.c:323
+#: ref-filter.c:334
+#, c-format
+msgid "expected %%(trailers:key=<value>)"
+msgstr "se esperaba %%(trailers:key=<value>)"
+
+#: ref-filter.c:336
 #, c-format
 msgid "unknown %%(trailers) argument: %s"
 msgstr "%%(trailers) desconocidos, argumento: %s"
 
-#: ref-filter.c:352
+#: ref-filter.c:367
 #, c-format
 msgid "positive value expected contents:lines=%s"
 msgstr "valor positivo esperado contents:lines=%s"
 
-#: ref-filter.c:354
+#: ref-filter.c:369
 #, c-format
 msgid "unrecognized %%(contents) argument: %s"
 msgstr "argumento %s no reconocido %%(contents)"
 
-#: ref-filter.c:369
+#: ref-filter.c:384
 #, c-format
-msgid "positive value expected objectname:short=%s"
-msgstr "valor positivo esperado objectname:short=%s"
+msgid "positive value expected '%s' in %%(%s)"
+msgstr "valor positivo esperado '%s' en %% (%s)"
 
-#: ref-filter.c:373
+#: ref-filter.c:388
 #, c-format
-msgid "unrecognized %%(objectname) argument: %s"
-msgstr "argumento: %s no reconocido %%(objectname)"
+msgid "unrecognized argument '%s' in %%(%s)"
+msgstr "argumento no reconocido:'%s' en %%(%s)"
 
-#: ref-filter.c:403
+#: ref-filter.c:402
+#, c-format
+msgid "unrecognized email option: %s"
+msgstr "opción de email desconocida: %s"
+
+#: ref-filter.c:432
 #, c-format
 msgid "expected format: %%(align:<width>,<position>)"
 msgstr "formato esperado: %%(align:<ancho>,<posición>)"
 
-#: ref-filter.c:415
+#: ref-filter.c:444
 #, c-format
 msgid "unrecognized position:%s"
 msgstr "posición desconocida: %s"
 
-#: ref-filter.c:422
+#: ref-filter.c:451
 #, c-format
 msgid "unrecognized width:%s"
 msgstr "ancho desconocido: %s"
 
-#: ref-filter.c:431
+#: ref-filter.c:460
 #, c-format
 msgid "unrecognized %%(align) argument: %s"
 msgstr "argumento no reconocido para %%(align): %s"
 
-#: ref-filter.c:439
+#: ref-filter.c:468
 #, c-format
 msgid "positive width expected with the %%(align) atom"
 msgstr "se esperaba un ancho positivo con el átomo %%(align)"
 
-#: ref-filter.c:457
+#: ref-filter.c:486
 #, c-format
 msgid "unrecognized %%(if) argument: %s"
 msgstr "argumento: %s no reconocido %%(if)"
 
-#: ref-filter.c:559
+#: ref-filter.c:588
 #, c-format
 msgid "malformed field name: %.*s"
 msgstr "nombre mal formado de campo: %.*s"
 
-#: ref-filter.c:586
+#: ref-filter.c:615
 #, c-format
 msgid "unknown field name: %.*s"
 msgstr "nombre de campo desconocido: %.*s"
 
-#: ref-filter.c:590
+#: ref-filter.c:619
 #, c-format
 msgid ""
 "not a git repository, but the field '%.*s' requires access to object data"
 msgstr ""
 "no es un repositorio git, pero el campo '%.*s' requiere acceso al objeto data"
 
-#: ref-filter.c:714
+#: ref-filter.c:743
 #, c-format
 msgid "format: %%(if) atom used without a %%(then) atom"
 msgstr "formato: átomo %%(if) usado sin un átomo %%(then)"
 
-#: ref-filter.c:777
+#: ref-filter.c:806
 #, c-format
 msgid "format: %%(then) atom used without an %%(if) atom"
 msgstr "formato: átomo %%(then) usado sin átomo %%(if)"
 
-#: ref-filter.c:779
+#: ref-filter.c:808
 #, c-format
 msgid "format: %%(then) atom used more than once"
 msgstr "formato: átomo %%(then) usado más de una vez"
 
-#: ref-filter.c:781
+#: ref-filter.c:810
 #, c-format
 msgid "format: %%(then) atom used after %%(else)"
 msgstr "formato: átomo %%(then) usado después de %%(else)"
 
-#: ref-filter.c:809
+#: ref-filter.c:838
 #, c-format
 msgid "format: %%(else) atom used without an %%(if) atom"
 msgstr "formato: átomo %%(else) usado sin un átomo %%(if)"
 
-#: ref-filter.c:811
+#: ref-filter.c:840
 #, c-format
 msgid "format: %%(else) atom used without a %%(then) atom"
 msgstr "formato: átomo %%(else) usado sin un átomo %%(then)"
 
-#: ref-filter.c:813
+#: ref-filter.c:842
 #, c-format
 msgid "format: %%(else) atom used more than once"
 msgstr "formato: átomo %%(else) usado más de una vez"
 
-#: ref-filter.c:828
+#: ref-filter.c:857
 #, c-format
 msgid "format: %%(end) atom used without corresponding atom"
 msgstr "formato: átomo %%(end) usado sin átomo correspondiente"
 
-#: ref-filter.c:885
+#: ref-filter.c:914
 #, c-format
 msgid "malformed format string %s"
 msgstr "formato de cadena mal formado %s"
 
-#: ref-filter.c:1486
+#: ref-filter.c:1555
 #, c-format
-msgid "no branch, rebasing %s"
-msgstr "no hay rama, rebasando %s"
+msgid "(no branch, rebasing %s)"
+msgstr "(no hay rama, rebasando %s)"
 
-#: ref-filter.c:1489
+#: ref-filter.c:1558
 #, c-format
-msgid "no branch, rebasing detached HEAD %s"
-msgstr "(o hay rama, rebasando con HEAD desacoplado %s"
+msgid "(no branch, rebasing detached HEAD %s)"
+msgstr "(no una rama, rebasando con HEAD desacoplado %s)"
 
-#: ref-filter.c:1492
+#: ref-filter.c:1561
 #, c-format
-msgid "no branch, bisect started on %s"
-msgstr "no hay rama, comenzando biseccón en  %s"
+msgid "(no branch, bisect started on %s)"
+msgstr "(no hay rama, comenzando biseccón en %s)"
 
-#: ref-filter.c:1502
-msgid "no branch"
-msgstr "sin rama"
+#: ref-filter.c:1565
+#, c-format
+msgid "(HEAD detached at %s)"
+msgstr "(HEAD desacoplado en %s)"
 
-#: ref-filter.c:1538 ref-filter.c:1747
+#: ref-filter.c:1568
+#, c-format
+msgid "(HEAD detached from %s)"
+msgstr "(HEAD desacoplado de %s)"
+
+#: ref-filter.c:1571
+msgid "(no branch)"
+msgstr "(sin rama)"
+
+#: ref-filter.c:1603 ref-filter.c:1812
 #, c-format
 msgid "missing object %s for %s"
 msgstr "falta objeto %s para %s"
 
-#: ref-filter.c:1548
+#: ref-filter.c:1613
 #, c-format
 msgid "parse_object_buffer failed on %s for %s"
 msgstr "parse_object_buffer falló en %s para %s"
 
-#: ref-filter.c:2001
+#: ref-filter.c:1996
 #, c-format
 msgid "malformed object at '%s'"
 msgstr "objeto mal formado en '%s'"
 
-#: ref-filter.c:2090
+#: ref-filter.c:2085
 #, c-format
 msgid "ignoring ref with broken name %s"
 msgstr "ignorando referencia con nombre roto %s"
 
-#: ref-filter.c:2095 refs.c:657
+#: ref-filter.c:2090 refs.c:676
 #, c-format
 msgid "ignoring broken ref %s"
 msgstr "ignorando referencia rota %s"
 
-#: ref-filter.c:2395
+#: ref-filter.c:2430
 #, c-format
 msgid "format: %%(end) atom missing"
 msgstr "formato: falta átomo %%(end)"
 
-#: ref-filter.c:2495
-#, c-format
-msgid "option `%s' is incompatible with --merged"
-msgstr "opción `%s' es incompatible con --merged"
-
-#: ref-filter.c:2498
-#, c-format
-msgid "option `%s' is incompatible with --no-merged"
-msgstr "opción `%s' es incompatible con --no-merged"
-
-#: ref-filter.c:2508
+#: ref-filter.c:2529
 #, c-format
 msgid "malformed object name %s"
 msgstr "nombre de objeto mal formado %s"
 
-#: ref-filter.c:2513
+#: ref-filter.c:2534
 #, c-format
 msgid "option `%s' must point to a commit"
 msgstr "opción '%s' debe apuntar a un commit"
@@ -6101,172 +6785,163 @@ msgstr "opción '%s' debe apuntar a un commit"
 msgid "%s does not point to a valid object!"
 msgstr "¡%s no apunta a ningún objeto válido!"
 
-#: refs.c:572
+#: refs.c:566
 #, c-format
-msgid "could not retrieve `%s`"
-msgstr "no se pudo recibir `%s`"
-
-#: refs.c:579
-#, c-format
-msgid "invalid branch name: %s = %s"
-msgstr "Nombre de rama inválido: %s = %s"
-
-#: refs.c:655
-#, c-format
-msgid "ignoring dangling symref %s"
-msgstr "ignorando referencia rota %s"
-
-#: refs.c:792
-#, c-format
-msgid "could not open '%s' for writing: %s"
-msgstr "no se pudo abrir '%s' para escritura: %s"
-
-#: refs.c:802 refs.c:853
-#, c-format
-msgid "could not read ref '%s'"
-msgstr "no se pudo leer la referencia '%s'"
-
-#: refs.c:808
-#, c-format
-msgid "ref '%s' already exists"
-msgstr "ref '%s' ya existe"
-
-#: refs.c:813
-#, c-format
-msgid "unexpected object ID when writing '%s'"
-msgstr "ID de objecto inesperado al escribir '%s'"
+msgid ""
+"Using '%s' as the name for the initial branch. This default branch name\n"
+"is subject to change. To configure the initial branch name to use in all\n"
+"of your new repositories, which will suppress this warning, call:\n"
+"\n"
+"\tgit config --global init.defaultBranch <name>\n"
+"\n"
+"Names commonly chosen instead of 'master' are 'main', 'trunk' and\n"
+"'development'. The just-created branch can be renamed via this command:\n"
+"\n"
+"\tgit branch -m <name>\n"
+msgstr ""
+"Usando '%s' como el nombre de la rama inicial. Este nombre de rama "
+"predeterminado\n"
+"está sujeto a cambios. Para configurar el nombre de la rama inicial para "
+"usar en todos\n"
+"de sus nuevos repositorios, que suprimirán esta advertencia, llame a:\n"
+"\n"
+"\tgit config --global init.defaultBranch <nombre>\n"
+"\n"
+"Los nombres comúnmente elegidos en lugar de 'maestro' son 'principal', "
+"'troncal' y\n"
+"'desarrollo'. Se puede cambiar el nombre de la rama recién creada mediante "
+"este comando:\n"
+"\n"
+"\tgit branch -m <nombre>\n"
 
-#: refs.c:821 sequencer.c:408 sequencer.c:2721 sequencer.c:2925
-#: sequencer.c:2939 sequencer.c:3195 sequencer.c:5159 strbuf.c:1168
-#: wrapper.c:628
+#: refs.c:588
 #, c-format
-msgid "could not write to '%s'"
-msgstr "no se pudo escribir en '%s'"
+msgid "could not retrieve `%s`"
+msgstr "no se pudo recibir `%s`"
 
-#: refs.c:848 strbuf.c:1166 wrapper.c:196 wrapper.c:366 builtin/am.c:719
-#: builtin/rebase.c:852
-#, c-format
-msgid "could not open '%s' for writing"
-msgstr "no se pudo abrir '%s' para escritura"
+#: refs.c:598
+#, c-format
+msgid "invalid branch name: %s = %s"
+msgstr "nombre de rama inválido: %s = %s"
 
-#: refs.c:855
+#: refs.c:674
 #, c-format
-msgid "unexpected object ID when deleting '%s'"
-msgstr "ID de objecto inesperado al borrar '%s'"
+msgid "ignoring dangling symref %s"
+msgstr "ignorando referencia rota %s"
 
-#: refs.c:986
+#: refs.c:922
 #, c-format
 msgid "log for ref %s has gap after %s"
 msgstr "log de ref %s tiene un vacío tras %s"
 
-#: refs.c:992
+#: refs.c:929
 #, c-format
 msgid "log for ref %s unexpectedly ended on %s"
 msgstr "log de ref %s finalizado inesperadamente en %s"
 
-#: refs.c:1051
+#: refs.c:994
 #, c-format
 msgid "log for %s is empty"
 msgstr "log de %s está vacío"
 
-#: refs.c:1143
+#: refs.c:1086
 #, c-format
 msgid "refusing to update ref with bad name '%s'"
 msgstr "rehusando actualizar ref con mal nombre '%s'"
 
-#: refs.c:1219
+#: refs.c:1157
 #, c-format
 msgid "update_ref failed for ref '%s': %s"
 msgstr "update_ref falló para ref '%s': %s"
 
-#: refs.c:2011
+#: refs.c:2051
 #, c-format
 msgid "multiple updates for ref '%s' not allowed"
 msgstr "múltiples actualizaciones para ref '%s' no permitidas"
 
-#: refs.c:2098
+#: refs.c:2131
 msgid "ref updates forbidden inside quarantine environment"
 msgstr "actualizaciones de ref prohibidas dentro de ambiente de cuarentena"
 
-#: refs.c:2109
+#: refs.c:2142
 msgid "ref updates aborted by hook"
 msgstr "ref update abortado por el hook"
 
-#: refs.c:2209 refs.c:2239
+#: refs.c:2242 refs.c:2272
 #, c-format
 msgid "'%s' exists; cannot create '%s'"
 msgstr "'%s' existe; no se puede crear '%s'"
 
-#: refs.c:2215 refs.c:2250
+#: refs.c:2248 refs.c:2283
 #, c-format
 msgid "cannot process '%s' and '%s' at the same time"
 msgstr "no se puede procesar '%s' y '%s' al mismo tiempo"
 
-#: refs/files-backend.c:1233
+#: refs/files-backend.c:1228
 #, c-format
 msgid "could not remove reference %s"
 msgstr "no se pudo eliminar la referencia %s"
 
-#: refs/files-backend.c:1247 refs/packed-backend.c:1541
-#: refs/packed-backend.c:1551
+#: refs/files-backend.c:1242 refs/packed-backend.c:1542
+#: refs/packed-backend.c:1552
 #, c-format
 msgid "could not delete reference %s: %s"
 msgstr "no se pudo eliminar la referencia %s: %s"
 
-#: refs/files-backend.c:1250 refs/packed-backend.c:1554
+#: refs/files-backend.c:1245 refs/packed-backend.c:1555
 #, c-format
 msgid "could not delete references: %s"
 msgstr "no se pudo eliminar la referencia: %s"
 
-#: refspec.c:137
+#: refspec.c:170
 #, c-format
 msgid "invalid refspec '%s'"
 msgstr "refspec inválido: '%s'"
 
-#: remote.c:355
+#: remote.c:351
 #, c-format
 msgid "config remote shorthand cannot begin with '/': %s"
 msgstr "config remote shorthand no puede comenzar con '/': %s"
 
-#: remote.c:403
+#: remote.c:399
 msgid "more than one receivepack given, using the first"
 msgstr "más de un receivepack dado, usando el primero"
 
-#: remote.c:411
+#: remote.c:407
 msgid "more than one uploadpack given, using the first"
 msgstr "más de un uploadpack dado, usando el primero"
 
-#: remote.c:594
+#: remote.c:590
 #, c-format
 msgid "Cannot fetch both %s and %s to %s"
 msgstr "No se pueden traer ambos %s y %s a %s"
 
-#: remote.c:598
+#: remote.c:594
 #, c-format
 msgid "%s usually tracks %s, not %s"
 msgstr "%s por lo general hace seguimiento a %s, no a %s"
 
-#: remote.c:602
+#: remote.c:598
 #, c-format
 msgid "%s tracks both %s and %s"
 msgstr "%s hace seguimiento tanto a %s como a %s"
 
-#: remote.c:670
+#: remote.c:666
 #, c-format
 msgid "key '%s' of pattern had no '*'"
 msgstr "llave '%s' de patrón no tuvo '*'"
 
-#: remote.c:680
+#: remote.c:676
 #, c-format
 msgid "value '%s' of pattern has no '*'"
 msgstr "valor '%s' del patrón no tiene '*'"
 
-#: remote.c:986
+#: remote.c:1083
 #, c-format
 msgid "src refspec %s does not match any"
 msgstr "src refsoec %s: no concuerda con ninguno"
 
-#: remote.c:991
+#: remote.c:1088
 #, c-format
 msgid "src refspec %s matches more than one"
 msgstr "src refspec %s concuerda con más de uno"
@@ -6275,7 +6950,7 @@ msgstr "src refspec %s concuerda con más de uno"
 #. <remote> <src>:<dst>" push, and "being pushed ('%s')" is
 #. the <src>.
 #.
-#: remote.c:1006
+#: remote.c:1103
 #, c-format
 msgid ""
 "The destination you provided is not a full refname (i.e.,\n"
@@ -6299,7 +6974,7 @@ msgstr ""
 "Ninguno funcionó así que nos dimos por vencidos. Tienes que especificar el "
 "full ref."
 
-#: remote.c:1026
+#: remote.c:1123
 #, c-format
 msgid ""
 "The <src> part of the refspec is a commit object.\n"
@@ -6310,7 +6985,7 @@ msgstr ""
 "¿Quisiste crear un branch nuevo mediante un push a\n"
 "'%s:refs/heads/%s'?"
 
-#: remote.c:1031
+#: remote.c:1128
 #, c-format
 msgid ""
 "The <src> part of the refspec is a tag object.\n"
@@ -6321,7 +6996,7 @@ msgstr ""
 "Did you mean to create a new tag by pushing to\n"
 "'%s:refs/tags/%s'?"
 
-#: remote.c:1036
+#: remote.c:1133
 #, c-format
 msgid ""
 "The <src> part of the refspec is a tree object.\n"
@@ -6332,7 +7007,7 @@ msgstr ""
 "¿Quisiste crear un tag nuevo mediante un push a\n"
 "'%s:refs/heads/%s'?"
 
-#: remote.c:1041
+#: remote.c:1138
 #, c-format
 msgid ""
 "The <src> part of the refspec is a blob object.\n"
@@ -6343,115 +7018,115 @@ msgstr ""
 "¿Quisiste crear un tag nuevo mediante un push a\n"
 "'%s:refs/heads/%s'?"
 
-#: remote.c:1077
+#: remote.c:1174
 #, c-format
 msgid "%s cannot be resolved to branch"
 msgstr "%s no puede ser resolver a un branch"
 
-#: remote.c:1088
+#: remote.c:1185
 #, c-format
 msgid "unable to delete '%s': remote ref does not exist"
 msgstr "no es posible borrar '%s': ref remoto no existe"
 
-#: remote.c:1100
+#: remote.c:1197
 #, c-format
 msgid "dst refspec %s matches more than one"
 msgstr "dst refspec %s concuerda con más de uno"
 
-#: remote.c:1107
+#: remote.c:1204
 #, c-format
 msgid "dst ref %s receives from more than one src"
 msgstr "dst ref %s recibe de más de un src"
 
-#: remote.c:1610 remote.c:1711
+#: remote.c:1724 remote.c:1825
 msgid "HEAD does not point to a branch"
 msgstr "HEAD no apunta a ninguna rama"
 
-#: remote.c:1619
+#: remote.c:1733
 #, c-format
 msgid "no such branch: '%s'"
 msgstr "no existe tal rama: '%s'"
 
-#: remote.c:1622
+#: remote.c:1736
 #, c-format
 msgid "no upstream configured for branch '%s'"
 msgstr "no se ha configurado upstream para la rama '%s'"
 
-#: remote.c:1628
+#: remote.c:1742
 #, c-format
 msgid "upstream branch '%s' not stored as a remote-tracking branch"
 msgstr "la rama '%s' de upstream no es guardad como rama de rastreo remoto"
 
-#: remote.c:1643
+#: remote.c:1757
 #, 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:1655
+#: remote.c:1769
 #, c-format
 msgid "branch '%s' has no remote for pushing"
 msgstr "la rama '%s' no tiene remoto para enviar"
 
-#: remote.c:1665
+#: remote.c:1779
 #, c-format
 msgid "push refspecs for '%s' do not include '%s'"
 msgstr "refspecs del push para '%s' no incluyen '%s'"
 
-#: remote.c:1678
+#: remote.c:1792
 msgid "push has no destination (push.default is 'nothing')"
 msgstr "push no tiene destino (push.default es 'nada')"
 
-#: remote.c:1700
+#: remote.c:1814
 msgid "cannot resolve 'simple' push to a single destination"
 msgstr "no se puede resolver push 'simple' para un destino único"
 
-#: remote.c:1826
+#: remote.c:1943
 #, c-format
 msgid "couldn't find remote ref %s"
 msgstr "no se puedo encontrar ref remota %s"
 
-#: remote.c:1839
+#: remote.c:1956
 #, c-format
 msgid "* Ignoring funny ref '%s' locally"
 msgstr "* Ignorando ref graciosa '%s' localmente"
 
-#: remote.c:2002
+#: remote.c:2119
 #, c-format
 msgid "Your branch is based on '%s', but the upstream is gone.\n"
 msgstr "Tu rama está basada en '%s', pero upstream ha desaparecido.\n"
 
-#: remote.c:2006
+#: remote.c:2123
 msgid "  (use \"git branch --unset-upstream\" to fixup)\n"
 msgstr "  (usa \"git branch --unset-upstream\" para arreglar)\n"
 
-#: remote.c:2009
+#: remote.c:2126
 #, c-format
 msgid "Your branch is up to date with '%s'.\n"
 msgstr "Tu rama está actualizada con '%s'.\n"
 
-#: remote.c:2013
+#: remote.c:2130
 #, c-format
 msgid "Your branch and '%s' refer to different commits.\n"
 msgstr "Tu rama y '%s' refieren a commits diferentes.\n"
 
-#: remote.c:2016
+#: remote.c:2133
 #, c-format
 msgid "  (use \"%s\" for details)\n"
 msgstr "  (usa \"%s\" para detalles)\n"
 
-#: remote.c:2020
+#: remote.c:2137
 #, c-format
 msgid "Your branch is ahead of '%s' by %d commit.\n"
 msgid_plural "Your branch is ahead of '%s' by %d commits.\n"
 msgstr[0] "Tu rama está adelantada a '%s' por %d commit.\n"
 msgstr[1] "Tu rama está adelantada a '%s' por %d commits.\n"
 
-#: remote.c:2026
+#: remote.c:2143
 msgid "  (use \"git push\" to publish your local commits)\n"
 msgstr "  (usa \"git push\" para publicar tus commits locales)\n"
 
-#: remote.c:2029
+#: remote.c:2146
 #, c-format
 msgid "Your branch is behind '%s' by %d commit, and can be fast-forwarded.\n"
 msgid_plural ""
@@ -6461,11 +7136,11 @@ msgstr[0] ""
 msgstr[1] ""
 "Tu rama está detrás de '%s' por %d commits, y puede ser avanzada rápido.\n"
 
-#: remote.c:2037
+#: remote.c:2154
 msgid "  (use \"git pull\" to update your local branch)\n"
 msgstr "  (usa \"git pull\" para actualizar tu rama local)\n"
 
-#: remote.c:2040
+#: remote.c:2157
 #, c-format
 msgid ""
 "Your branch and '%s' have diverged,\n"
@@ -6480,11 +7155,11 @@ msgstr[1] ""
 "Tu rama y '%s' han divergido,\n"
 "y tienen %d y %d commits diferentes cada una respectivamente.\n"
 
-#: remote.c:2050
+#: remote.c:2167
 msgid "  (use \"git pull\" to merge the remote branch into yours)\n"
 msgstr "  (usa \"git pull\" para fusionar la rama remota en la tuya)\n"
 
-#: remote.c:2241
+#: remote.c:2359
 #, c-format
 msgid "cannot parse expected object name '%s'"
 msgstr "no se puede leer el nombre de objeto '%s'"
@@ -6504,101 +7179,96 @@ msgstr "duplicar ref de reemplazo: %s"
 msgid "replace depth too high for object %s"
 msgstr "remplazar profundiad muy elevada para objeto %s"
 
-#: repository.c:94 builtin/init-db.c:188
-#, c-format
-msgid "The hash algorithm %s is not supported in this build."
-msgstr "El algoritmo hash %s no está soportado en este build."
-
-#: rerere.c:217 rerere.c:226 rerere.c:229
+#: rerere.c:201 rerere.c:210 rerere.c:213
 msgid "corrupt MERGE_RR"
 msgstr "MERGE_RR corrupto"
 
-#: rerere.c:264 rerere.c:269
+#: rerere.c:248 rerere.c:253
 msgid "unable to write rerere record"
 msgstr "incapaz de escribir entrada rerere"
 
-#: rerere.c:495
+#: rerere.c:479
 #, c-format
 msgid "there were errors while writing '%s' (%s)"
 msgstr "hubieron errores mientras se escribía '%s' (%s)"
 
-#: rerere.c:498
+#: rerere.c:482
 #, c-format
 msgid "failed to flush '%s'"
 msgstr "falló al hacer flush '%s'"
 
-#: rerere.c:503 rerere.c:1039
+#: rerere.c:487 rerere.c:1023
 #, c-format
 msgid "could not parse conflict hunks in '%s'"
 msgstr "no se pudo analizar hunks en conflicto en '%s'"
 
-#: rerere.c:684
+#: rerere.c:668
 #, c-format
 msgid "failed utime() on '%s'"
 msgstr "falló utime() en '%s'"
 
-#: rerere.c:694
+#: rerere.c:678
 #, c-format
 msgid "writing '%s' failed"
 msgstr "escribiendo '%s' falló"
 
-#: rerere.c:714
+#: rerere.c:698
 #, c-format
 msgid "Staged '%s' using previous resolution."
 msgstr "'%s' puesto en stage usando resolución previa."
 
-#: rerere.c:753
+#: rerere.c:737
 #, c-format
 msgid "Recorded resolution for '%s'."
 msgstr "Resolución guardada para '%s'."
 
-#: rerere.c:788
+#: rerere.c:772
 #, c-format
 msgid "Resolved '%s' using previous resolution."
 msgstr "'%s' resuelto usando resolución previa."
 
-#: rerere.c:803
+#: rerere.c:787
 #, c-format
 msgid "cannot unlink stray '%s'"
 msgstr "no se puede desvincular stray '%s'"
 
-#: rerere.c:807
+#: rerere.c:791
 #, c-format
 msgid "Recorded preimage for '%s'"
 msgstr "Resolución precargada para '%s'"
 
-#: rerere.c:881 submodule.c:2078 builtin/log.c:1891
-#: builtin/submodule--helper.c:1454 builtin/submodule--helper.c:1466
+#: rerere.c:865 submodule.c:2088 builtin/log.c:1991
+#: builtin/submodule--helper.c:1878 builtin/submodule--helper.c:1890
 #, c-format
 msgid "could not create directory '%s'"
 msgstr "no se pudo crear el directorio '%s'"
 
-#: rerere.c:1057
+#: rerere.c:1041
 #, c-format
 msgid "failed to update conflicted state in '%s'"
 msgstr "falló al actualizar estado conflictivo en '%s'"
 
-#: rerere.c:1068 rerere.c:1075
+#: rerere.c:1052 rerere.c:1059
 #, c-format
 msgid "no remembered resolution for '%s'"
 msgstr "resolución para '%s' no recordada"
 
-#: rerere.c:1077
+#: rerere.c:1061
 #, c-format
 msgid "cannot unlink '%s'"
 msgstr "no se puede desvincular '%s'"
 
-#: rerere.c:1087
+#: rerere.c:1071
 #, c-format
 msgid "Updated preimage for '%s'"
 msgstr "Actualizada preimagen para '%s'"
 
-#: rerere.c:1096
+#: rerere.c:1080
 #, c-format
 msgid "Forgot resolution for '%s'\n"
 msgstr "Se olvidó resolución para '%s'\n"
 
-#: rerere.c:1199
+#: rerere.c:1191
 msgid "unable to open rr-cache directory"
 msgstr "no es posible abrir directorio rr-cache"
 
@@ -6606,38 +7276,38 @@ msgstr "no es posible abrir directorio rr-cache"
 msgid "could not determine HEAD revision"
 msgstr "no se pudo determinar revisión HEAD"
 
-#: reset.c:70 reset.c:76 sequencer.c:3318
+#: reset.c:70 reset.c:76 sequencer.c:3468
 #, c-format
 msgid "failed to find tree of %s"
 msgstr "falló al encontrar árbol de %s"
 
-#: revision.c:2661
+#: revision.c:2338
+msgid "--unpacked=<packfile> no longer supported"
+msgstr "--unpacked=<packfile>  ya no es soportado"
+
+#: revision.c:2668
 msgid "your current branch appears to be broken"
 msgstr "tu rama actual parece estar rota"
 
-#: revision.c:2664
+#: revision.c:2671
 #, 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:2873
-msgid "--first-parent is incompatible with --bisect"
-msgstr "--first-parent es incompatible con --bisect"
-
 #: revision.c:2877
 msgid "-L does not yet support diff formats besides -p and -s"
 msgstr "-L no soporta todavía formatos de diff fuera de -p y -s"
 
-#: run-command.c:763
+#: run-command.c:767
 msgid "open /dev/null failed"
 msgstr "falló al abrir /dev/null"
 
-#: run-command.c:1269
+#: run-command.c:1274
 #, c-format
 msgid "cannot create async thread: %s"
 msgstr "no es posible crear hilo async: %s"
 
-#: run-command.c:1333
+#: run-command.c:1338
 #, c-format
 msgid ""
 "The '%s' hook was ignored because it's not set as executable.\n"
@@ -6647,34 +7317,34 @@ msgstr ""
 "Puedes desactivar esta advertencias con `git config advice.ignoredHook "
 "false`."
 
-#: send-pack.c:145
+#: send-pack.c:146
 msgid "unexpected flush packet while reading remote unpack status"
 msgstr ""
 "flush packet inesperado mientras se leía estatus de desempaquetado remoto"
 
-#: send-pack.c:147
+#: send-pack.c:148
 #, c-format
 msgid "unable to parse remote unpack status: %s"
 msgstr "no es posible analizar el estado de desempaquetado remoto: %s"
 
-#: send-pack.c:149
+#: send-pack.c:150
 #, c-format
 msgid "remote unpack failed: %s"
 msgstr "desempaquetado remoto falló: %s"
 
-#: send-pack.c:308
+#: send-pack.c:374
 msgid "failed to sign the push certificate"
 msgstr "falló al firmar el certificado de push"
 
-#: send-pack.c:394
+#: send-pack.c:467
 msgid "the receiving end does not support this repository's hash algorithm"
 msgstr "el destino no soporta el algoritmo de hash de este repositorio"
 
-#: send-pack.c:403
+#: send-pack.c:476
 msgid "the receiving end does not support --signed push"
 msgstr "el final receptor no soporta --signed push"
 
-#: send-pack.c:405
+#: send-pack.c:478
 msgid ""
 "not sending a push certificate since the receiving end does not support --"
 "signed push"
@@ -6682,47 +7352,47 @@ msgstr ""
 "no se manda un certificado de push ya que el destino no soporta push firmado "
 "(--signed )"
 
-#: send-pack.c:417
+#: send-pack.c:490
 msgid "the receiving end does not support --atomic push"
 msgstr "el destino no soporta push atómicos (--atomic)"
 
-#: send-pack.c:422
+#: send-pack.c:495
 msgid "the receiving end does not support push options"
 msgstr "el destino no soporta opciones de push"
 
-#: sequencer.c:192
+#: sequencer.c:195
 #, c-format
 msgid "invalid commit message cleanup mode '%s'"
 msgstr "mensaje de commit inválido, modo cleanup '%s'"
 
-#: sequencer.c:297
+#: sequencer.c:323
 #, c-format
 msgid "could not delete '%s'"
 msgstr "no se pudo borrar '%s'"
 
-#: sequencer.c:316 builtin/rebase.c:743 builtin/rebase.c:1582 builtin/rm.c:385
+#: sequencer.c:343 builtin/rebase.c:757 builtin/rebase.c:1602 builtin/rm.c:385
 #, c-format
 msgid "could not remove '%s'"
 msgstr "no se pudo eliminar'%s'"
 
-#: sequencer.c:326
+#: sequencer.c:353
 msgid "revert"
 msgstr "revertir"
 
-#: sequencer.c:328
+#: sequencer.c:355
 msgid "cherry-pick"
 msgstr "cherry-pick"
 
-#: sequencer.c:330
+#: sequencer.c:357
 msgid "rebase"
 msgstr "rebase"
 
-#: sequencer.c:332
+#: sequencer.c:359
 #, c-format
 msgid "unknown action: %d"
 msgstr "acción desconocida: %d"
 
-#: sequencer.c:390
+#: sequencer.c:418
 msgid ""
 "after resolving the conflicts, mark the corrected paths\n"
 "with 'git add <paths>' or 'git rm <paths>'"
@@ -6730,7 +7400,7 @@ msgstr ""
 "después de resolver los conflictos, marca las rutas corregidas\n"
 "con 'git add <rutas>' o 'git rm <rutas>'"
 
-#: sequencer.c:393
+#: sequencer.c:421
 msgid ""
 "after resolving the conflicts, mark the corrected paths\n"
 "with 'git add <paths>' or 'git rm <paths>'\n"
@@ -6740,43 +7410,43 @@ msgstr ""
 "con 'git add <rutas>' o 'git rm <rutas>'\n"
 "y haz un commit del resultado con 'git commit'"
 
-#: sequencer.c:406 sequencer.c:2921
+#: sequencer.c:434 sequencer.c:3070
 #, c-format
 msgid "could not lock '%s'"
 msgstr "no se pudo bloquear '%s'"
 
-#: sequencer.c:413
+#: sequencer.c:436 sequencer.c:2869 sequencer.c:3074 sequencer.c:3088
+#: sequencer.c:3345 sequencer.c:5334 strbuf.c:1168 wrapper.c:631
+#, c-format
+msgid "could not write to '%s'"
+msgstr "no se pudo escribir en '%s'"
+
+#: sequencer.c:441
 #, c-format
 msgid "could not write eol to '%s'"
 msgstr "no se pudo escribir EOL en '%s'"
 
-#: sequencer.c:418 sequencer.c:2726 sequencer.c:2927 sequencer.c:2941
-#: sequencer.c:3203
+#: sequencer.c:446 sequencer.c:2874 sequencer.c:3076 sequencer.c:3090
+#: sequencer.c:3353
 #, c-format
 msgid "failed to finalize '%s'"
 msgstr "falló al finalizar '%s'"
 
-#: sequencer.c:431 sequencer.c:1620 sequencer.c:2746 sequencer.c:3185
-#: sequencer.c:3294 builtin/am.c:249 builtin/commit.c:786 builtin/merge.c:1128
-#, c-format
-msgid "could not read '%s'"
-msgstr "no se pudo leer '%s'"
-
-#: sequencer.c:457
+#: sequencer.c:485
 #, c-format
 msgid "your local changes would be overwritten by %s."
 msgstr "tus cambios locales serán sobreescritos por %s."
 
-#: sequencer.c:461
+#: sequencer.c:489
 msgid "commit your changes or stash them to proceed."
 msgstr "realiza un commit con tus cambios o aplica un stash para proceder."
 
-#: sequencer.c:493
+#: sequencer.c:521
 #, c-format
 msgid "%s: fast-forward"
 msgstr "%s: avance rápido"
 
-#: sequencer.c:532 builtin/tag.c:566
+#: sequencer.c:560 builtin/tag.c:598
 #, c-format
 msgid "Invalid cleanup mode %s"
 msgstr "Modo cleanup inválido %s"
@@ -6784,65 +7454,65 @@ msgstr "Modo cleanup inválido %s"
 #. TRANSLATORS: %s will be "revert", "cherry-pick" or
 #. "rebase".
 #.
-#: sequencer.c:626
+#: sequencer.c:670
 #, c-format
 msgid "%s: Unable to write new index file"
 msgstr "%s: Incapaz de escribir el nuevo archivo índice"
 
-#: sequencer.c:643
+#: sequencer.c:684
 msgid "unable to update cache tree"
 msgstr "no es posible actualizar el árbol de la caché"
 
-#: sequencer.c:657
+#: sequencer.c:698
 msgid "could not resolve HEAD commit"
 msgstr "no se pudo resolver el commit de HEAD"
 
-#: sequencer.c:737
+#: sequencer.c:778
 #, c-format
 msgid "no key present in '%.*s'"
 msgstr "no hay llave presente en '%.*s'"
 
-#: sequencer.c:748
+#: sequencer.c:789
 #, c-format
 msgid "unable to dequote value of '%s'"
 msgstr "no es posible dequote para '%s'"
 
-#: sequencer.c:785 wrapper.c:198 wrapper.c:368 builtin/am.c:710
-#: builtin/am.c:802 builtin/merge.c:1125 builtin/rebase.c:896
+#: sequencer.c:826 wrapper.c:201 wrapper.c:371 builtin/am.c:710
+#: builtin/am.c:802 builtin/merge.c:1136 builtin/rebase.c:910
 #, c-format
 msgid "could not open '%s' for reading"
 msgstr "no se pudo abrir '%s' para lectura"
 
-#: sequencer.c:795
+#: sequencer.c:836
 msgid "'GIT_AUTHOR_NAME' already given"
 msgstr "'GIT_AUTHOR_NAME' ya proporcionado"
 
-#: sequencer.c:800
+#: sequencer.c:841
 msgid "'GIT_AUTHOR_EMAIL' already given"
 msgstr "'GIT_AUTHOR_EMAIL' ya proporcionado"
 
-#: sequencer.c:805
+#: sequencer.c:846
 msgid "'GIT_AUTHOR_DATE' already given"
 msgstr "'GIT_AUTHOR_DATE' ya proporcionado"
 
-#: sequencer.c:809
+#: sequencer.c:850
 #, c-format
 msgid "unknown variable '%s'"
 msgstr "variable desconocida '%s'"
 
-#: sequencer.c:814
+#: sequencer.c:855
 msgid "missing 'GIT_AUTHOR_NAME'"
 msgstr "falta 'GIT_AUTHOR_NAME'"
 
-#: sequencer.c:816
+#: sequencer.c:857
 msgid "missing 'GIT_AUTHOR_EMAIL'"
 msgstr "falta 'GIT_AUTHOR_EMAIL'"
 
-#: sequencer.c:818
+#: sequencer.c:859
 msgid "missing 'GIT_AUTHOR_DATE'"
 msgstr "falta 'GIT_AUTHOR_DATE'"
 
-#: sequencer.c:867
+#: sequencer.c:924
 #, c-format
 msgid ""
 "you have staged changes in your working tree\n"
@@ -6872,11 +7542,11 @@ msgstr ""
 "\n"
 "  git rebase --continue\n"
 
-#: sequencer.c:1141
+#: sequencer.c:1211
 msgid "'prepare-commit-msg' hook failed"
 msgstr "hook 'prepare-commit-msg' falló"
 
-#: sequencer.c:1147
+#: sequencer.c:1217
 msgid ""
 "Your name and email address were configured automatically based\n"
 "on your username and hostname. Please check that they are accurate.\n"
@@ -6903,7 +7573,7 @@ msgstr ""
 "\n"
 "    git commit --amend --reset-author\n"
 
-#: sequencer.c:1160
+#: sequencer.c:1230
 msgid ""
 "Your name and email address were configured automatically based\n"
 "on your username and hostname. Please check that they are accurate.\n"
@@ -6923,1195 +7593,846 @@ msgstr ""
 "    git config --global user.name \"Tu nombre\"\n"
 "    git config --global user.email you@example.com\n"
 "\n"
-"Tras hacer esto, puedes arreglar tu identidad para este commit con:\n"
-"\n"
-"    git commit --amend --reset-author\n"
-
-#: sequencer.c:1202
-msgid "couldn't look up newly created commit"
-msgstr "no se pudo revisar el commit recién creado"
-
-#: sequencer.c:1204
-msgid "could not parse newly created commit"
-msgstr "no se pudo analizar el commit recién creado"
-
-#: sequencer.c:1250
-msgid "unable to resolve HEAD after creating commit"
-msgstr "no se pudo resolver HEAD tras crear el commit"
-
-#: sequencer.c:1252
-msgid "detached HEAD"
-msgstr "HEAD desacoplado"
-
-#: sequencer.c:1256
-msgid " (root-commit)"
-msgstr " (commit-raíz)"
-
-#: sequencer.c:1277
-msgid "could not parse HEAD"
-msgstr "no se pudo analizar HEAD"
-
-#: sequencer.c:1279
-#, c-format
-msgid "HEAD %s is not a commit!"
-msgstr "¡HEAD %s no es un commit!"
-
-#: sequencer.c:1283 sequencer.c:1357 builtin/commit.c:1579
-msgid "could not parse HEAD commit"
-msgstr "no se pudo analizar el commit de HEAD"
-
-#: sequencer.c:1335 sequencer.c:1980
-msgid "unable to parse commit author"
-msgstr "no es posible analizar el autor del commit"
-
-#: sequencer.c:1346 builtin/am.c:1566 builtin/merge.c:695
-msgid "git write-tree failed to write a tree"
-msgstr "git write-tree falló al escribir el árbol"
-
-#: sequencer.c:1379 sequencer.c:1450
-#, c-format
-msgid "unable to read commit message from '%s'"
-msgstr "no se puede leer el mensaje del commit de '%s'"
-
-#: sequencer.c:1406 builtin/am.c:1588 builtin/commit.c:1680 builtin/merge.c:894
-#: builtin/merge.c:919
-msgid "failed to write commit object"
-msgstr "falló al escribir el objeto commit"
-
-#: sequencer.c:1433 sequencer.c:4118
-#, c-format
-msgid "could not update %s"
-msgstr "no se puede actualizar %s"
-
-#: sequencer.c:1481
-#, c-format
-msgid "could not parse commit %s"
-msgstr "no se pudo analizar commit %s"
-
-#: sequencer.c:1486
-#, c-format
-msgid "could not parse parent commit %s"
-msgstr "no se pudo analizar el commit padre %s"
-
-#: sequencer.c:1569 sequencer.c:1680
-#, c-format
-msgid "unknown command: %d"
-msgstr "comando desconocido: %d"
-
-#: sequencer.c:1627 sequencer.c:1652
-#, c-format
-msgid "This is a combination of %d commits."
-msgstr "Esta es una combinación de %d commits."
-
-#: sequencer.c:1637
-msgid "need a HEAD to fixup"
-msgstr "se necesita un HEAD para arreglar"
-
-#: sequencer.c:1639 sequencer.c:3230
-msgid "could not read HEAD"
-msgstr "no se pudo leer HEAD"
-
-#: sequencer.c:1641
-msgid "could not read HEAD's commit message"
-msgstr "no se pudo leer el mensaje de commit de HEAD"
-
-#: sequencer.c:1647
-#, c-format
-msgid "cannot write '%s'"
-msgstr "no se puede escribir '%s'"
-
-#: sequencer.c:1654 git-rebase--preserve-merges.sh:496
-msgid "This is the 1st commit message:"
-msgstr "Este es el mensaje del 1er commit:"
-
-#: sequencer.c:1662
-#, c-format
-msgid "could not read commit message of %s"
-msgstr "no se puede leer el mensaje del commit de %s"
-
-#: sequencer.c:1669
-#, c-format
-msgid "This is the commit message #%d:"
-msgstr "Este es el mensaje del commit #%d:"
-
-#: sequencer.c:1675
-#, c-format
-msgid "The commit message #%d will be skipped:"
-msgstr "El mensaje del commit #%d será saltado:"
-
-#: sequencer.c:1763
-msgid "your index file is unmerged."
-msgstr "tu archivo índice no está fusionado."
-
-#: sequencer.c:1770
-msgid "cannot fixup root commit"
-msgstr "no se puede arreglar el commit raíz"
-
-#: sequencer.c:1789
-#, 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 proporcionó la opción -m."
-
-#: sequencer.c:1797 sequencer.c:1805
-#, c-format
-msgid "commit %s does not have parent %d"
-msgstr "el commit %s no tiene un padre %d"
-
-#: sequencer.c:1811
-#, 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:1830
-#, c-format
-msgid "%s: cannot parse parent commit %s"
-msgstr "%s: no se puede analizar el commit padre %s"
-
-#: sequencer.c:1895
-#, c-format
-msgid "could not rename '%s' to '%s'"
-msgstr "no se puede renombrar '%s' a '%s'"
-
-#: sequencer.c:1952
-#, c-format
-msgid "could not revert %s... %s"
-msgstr "no se pudo revertir %s... %s"
-
-#: sequencer.c:1953
-#, c-format
-msgid "could not apply %s... %s"
-msgstr "no se pudo aplicar %s... %s"
-
-#: sequencer.c:1972
-#, c-format
-msgid "dropping %s %s -- patch contents already upstream\n"
-msgstr "botando $%s %s -- contenidos del parche ya están en upstream\n"
-
-#: sequencer.c:2030
-#, c-format
-msgid "git %s: failed to read the index"
-msgstr "git %s: falló al leer el índice"
-
-#: sequencer.c:2037
-#, c-format
-msgid "git %s: failed to refresh the index"
-msgstr "git %s: falló al refrescar el índice"
-
-#: sequencer.c:2114
-#, c-format
-msgid "%s does not accept arguments: '%s'"
-msgstr "%s no acepta los argumentos: '%s'"
-
-#: sequencer.c:2123
-#, c-format
-msgid "missing arguments for %s"
-msgstr "faltan argumentos para para %s"
-
-#: sequencer.c:2154
-#, c-format
-msgid "could not parse '%s'"
-msgstr "no se puede analizar '%s'"
-
-#: sequencer.c:2215
-#, c-format
-msgid "invalid line %d: %.*s"
-msgstr "línea inválida %d: %.*s"
-
-#: sequencer.c:2226
-#, c-format
-msgid "cannot '%s' without a previous commit"
-msgstr "no se puede  '%s' sin un commit previo"
-
-#: sequencer.c:2310
-msgid "cancelling a cherry picking in progress"
-msgstr "cancelando cherry-pick en progreso"
-
-#: sequencer.c:2317
-msgid "cancelling a revert in progress"
-msgstr "cancelando revert en progreso"
-
-#: sequencer.c:2361
-msgid "please fix this using 'git rebase --edit-todo'."
-msgstr "por favor arregle esto usando 'git rebase --edit-todo'."
-
-#: sequencer.c:2363
-#, c-format
-msgid "unusable instruction sheet: '%s'"
-msgstr "hoja de instrucciones inutilizable: '%s'"
-
-#: sequencer.c:2368
-msgid "no commits parsed."
-msgstr "ningún commit analizado."
-
-#: sequencer.c:2379
-msgid "cannot cherry-pick during a revert."
-msgstr "no se puede realizar cherry-pick durante un revert."
-
-#: sequencer.c:2381
-msgid "cannot revert during a cherry-pick."
-msgstr "no se puede realizar un revert durante un cherry-pick."
-
-#: sequencer.c:2459
-#, c-format
-msgid "invalid value for %s: %s"
-msgstr "valor inválido para %s: %s"
-
-#: sequencer.c:2556
-msgid "unusable squash-onto"
-msgstr "squash-onto inservible"
-
-#: sequencer.c:2576
-#, c-format
-msgid "malformed options sheet: '%s'"
-msgstr "hoja de opciones mal formada: '%s'"
-
-#: sequencer.c:2664 sequencer.c:4469
-msgid "empty commit set passed"
-msgstr "conjunto de commits vacío entregado"
-
-#: sequencer.c:2680
-msgid "revert is already in progress"
-msgstr "revert ya está en progreso"
-
-#: sequencer.c:2682
-#, c-format
-msgid "try \"git revert (--continue | %s--abort | --quit)\""
-msgstr "intenta \"git revert (--continue | --quit | %s --abort)\""
-
-#: sequencer.c:2685
-msgid "cherry-pick is already in progress"
-msgstr "cherry-pick ya está en progreso"
-
-#: sequencer.c:2687
-#, c-format
-msgid "try \"git cherry-pick (--continue | %s--abort | --quit)\""
-msgstr "intenta \"git cherry-pick (--continue | --quit | %s --abort)\""
-
-#: sequencer.c:2701
-#, c-format
-msgid "could not create sequencer directory '%s'"
-msgstr "no se pudo crear un directorio secuenciador '%s'"
-
-#: sequencer.c:2716
-msgid "could not lock HEAD"
-msgstr "no se pudo bloquear HEAD"
-
-#: sequencer.c:2776 sequencer.c:4206
-msgid "no cherry-pick or revert in progress"
-msgstr "ningún cherry-pick o revert en progreso"
-
-#: sequencer.c:2778 sequencer.c:2789
-msgid "cannot resolve HEAD"
-msgstr "no se puede resolver HEAD"
-
-#: sequencer.c:2780 sequencer.c:2824
-msgid "cannot abort from a branch yet to be born"
-msgstr "no se puede abortar de una rama por nacer"
-
-#: sequencer.c:2810 builtin/grep.c:744
-#, c-format
-msgid "cannot open '%s'"
-msgstr "no se puede abrir '%s'"
-
-#: sequencer.c:2812
-#, c-format
-msgid "cannot read '%s': %s"
-msgstr "no se puede leer '%s': %s"
-
-#: sequencer.c:2813
-msgid "unexpected end of file"
-msgstr "final de archivo inesperado"
+"Tras hacer esto, puedes arreglar tu identidad para este commit con:\n"
+"\n"
+"    git commit --amend --reset-author\n"
 
-#: sequencer.c:2819
-#, c-format
-msgid "stored pre-cherry-pick HEAD file '%s' is corrupt"
-msgstr "archivo HEAD de pre-cherry-pick guardado '%s' está corrupto"
+#: sequencer.c:1272
+msgid "couldn't look up newly created commit"
+msgstr "no se pudo revisar el commit recién creado"
 
-#: sequencer.c:2830
-msgid "You seem to have moved HEAD. Not rewinding, check your HEAD!"
-msgstr "Parece que se ha movido HEAD. No se hace rebobinado, ¡revisa tu HEAD!"
+#: sequencer.c:1274
+msgid "could not parse newly created commit"
+msgstr "no se pudo analizar el commit recién creado"
 
-#: sequencer.c:2871
-msgid "no revert in progress"
-msgstr "no hay revert en progreso"
+#: sequencer.c:1320
+msgid "unable to resolve HEAD after creating commit"
+msgstr "no se pudo resolver HEAD tras crear el commit"
 
-#: sequencer.c:2879
-msgid "no cherry-pick in progress"
-msgstr "ningún cherry-pick en progreso"
+#: sequencer.c:1322
+msgid "detached HEAD"
+msgstr "HEAD desacoplado"
 
-#: sequencer.c:2889
-msgid "failed to skip the commit"
-msgstr "falló al escribir el commit"
+#: sequencer.c:1326
+msgid " (root-commit)"
+msgstr " (commit-raíz)"
 
-#: sequencer.c:2896
-msgid "there is nothing to skip"
-msgstr "no hay nada que saltar"
+#: sequencer.c:1347
+msgid "could not parse HEAD"
+msgstr "no se pudo analizar HEAD"
 
-#: sequencer.c:2899
+#: sequencer.c:1349
 #, c-format
-msgid ""
-"have you committed already?\n"
-"try \"git %s --continue\""
-msgstr ""
-"¿ya has hecho el commit?\n"
-"intenta \"git %s --continue\""
+msgid "HEAD %s is not a commit!"
+msgstr "¡HEAD %s no es un commit!"
 
-#: sequencer.c:3060 sequencer.c:4098
-msgid "cannot read HEAD"
-msgstr "no se puede leer HEAD"
+#: sequencer.c:1353 sequencer.c:1431 builtin/commit.c:1577
+msgid "could not parse HEAD commit"
+msgstr "no se pudo analizar el commit de HEAD"
 
-#: sequencer.c:3077
-#, c-format
-msgid "unable to copy '%s' to '%s'"
-msgstr "no se pudo copiar '%s' a '%s'"
+#: sequencer.c:1409 sequencer.c:2108
+msgid "unable to parse commit author"
+msgstr "no es posible analizar el autor del commit"
 
-#: sequencer.c:3085
-#, c-format
-msgid ""
-"You can amend the commit now, with\n"
-"\n"
-"  git commit --amend %s\n"
-"\n"
-"Once you are satisfied with your changes, run\n"
-"\n"
-"  git rebase --continue\n"
-msgstr ""
-"Puedes enmendar el commit ahora, con\n"
-"\n"
-"\tgit commit --amend %s\n"
-"\n"
-"Una vez que estés satisfecho con los cambios, ejecuta\n"
-"\n"
-"\tgit rebase --continue\n"
+#: sequencer.c:1420 builtin/am.c:1566 builtin/merge.c:702
+msgid "git write-tree failed to write a tree"
+msgstr "git write-tree falló al escribir el árbol"
 
-#: sequencer.c:3095
+#: sequencer.c:1453 sequencer.c:1573
 #, c-format
-msgid "Could not apply %s... %.*s"
-msgstr "No se pudo aplicar %s... %.*s"
+msgid "unable to read commit message from '%s'"
+msgstr "no se puede leer el mensaje del commit de '%s'"
 
-#: sequencer.c:3102
+#: sequencer.c:1484 sequencer.c:1516
 #, c-format
-msgid "Could not merge %.*s"
-msgstr "No se pudo fusionar %.*s"
+msgid "invalid author identity '%s'"
+msgstr "identidad de autor inválida '%s'"
 
-#: sequencer.c:3116 sequencer.c:3120 builtin/difftool.c:641
-#, c-format
-msgid "could not copy '%s' to '%s'"
-msgstr "no se pudo copiar '%s' a '%s'"
+#: sequencer.c:1490
+msgid "corrupt author: missing date information"
+msgstr "autor corrupto: falta información"
+
+#: sequencer.c:1529 builtin/am.c:1593 builtin/commit.c:1678 builtin/merge.c:905
+#: builtin/merge.c:930 t/helper/test-fast-rebase.c:78
+msgid "failed to write commit object"
+msgstr "falló al escribir el objeto commit"
 
-#: sequencer.c:3132
+#: sequencer.c:1556 sequencer.c:4291 t/helper/test-fast-rebase.c:198
 #, c-format
-msgid "Executing: %s\n"
-msgstr "Ejecutando: %s\n"
+msgid "could not update %s"
+msgstr "no se puede actualizar %s"
 
-#: sequencer.c:3147
+#: sequencer.c:1605
 #, c-format
-msgid ""
-"execution failed: %s\n"
-"%sYou can fix the problem, and then run\n"
-"\n"
-"  git rebase --continue\n"
-"\n"
-msgstr ""
-"ejecución fallida: %s\n"
-"%sPuedes arreglar el problema, y luego ejecutar\n"
-"\n"
-"  git rebase --continue\n"
-"\n"
+msgid "could not parse commit %s"
+msgstr "no se pudo analizar commit %s"
 
-#: sequencer.c:3153
-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:1610
+#, c-format
+msgid "could not parse parent commit %s"
+msgstr "no se pudo analizar el commit padre %s"
 
-#: sequencer.c:3159
+#: sequencer.c:1693 sequencer.c:1804
 #, c-format
-msgid ""
-"execution succeeded: %s\n"
-"but left changes to the index and/or the working tree\n"
-"Commit or stash your changes, and then run\n"
-"\n"
-"  git rebase --continue\n"
-"\n"
-msgstr ""
-"ejecución exitosa: %s\n"
-"pero todavía quedan cambios para el índice o árbol de trabajo.\n"
-"Realiza un commit o stash con tus cambios, y luego ejecuta\n"
-"\n"
-"  git rebase --continue\n"
-"\n"
+msgid "unknown command: %d"
+msgstr "comando desconocido: %d"
 
-#: sequencer.c:3220
+#: sequencer.c:1751 sequencer.c:1776
 #, c-format
-msgid "illegal label name: '%.*s'"
-msgstr "nombre de label ilegal: '%.*s'"
+msgid "This is a combination of %d commits."
+msgstr "Esta es una combinación de %d commits."
 
-#: sequencer.c:3274
-msgid "writing fake root commit"
-msgstr "escribiendo commit raíz falso"
+#: sequencer.c:1761
+msgid "need a HEAD to fixup"
+msgstr "se necesita un HEAD para arreglar"
 
-#: sequencer.c:3279
-msgid "writing squash-onto"
-msgstr "escribiendo squash-onto"
+#: sequencer.c:1763 sequencer.c:3380
+msgid "could not read HEAD"
+msgstr "no se pudo leer HEAD"
 
-#: sequencer.c:3363
+#: sequencer.c:1765
+msgid "could not read HEAD's commit message"
+msgstr "no se pudo leer el mensaje de commit de HEAD"
+
+#: sequencer.c:1771
 #, c-format
-msgid "could not resolve '%s'"
-msgstr "no se pudo resolver '%s'"
+msgid "cannot write '%s'"
+msgstr "no se puede escribir '%s'"
 
-#: sequencer.c:3394
-msgid "cannot merge without a current revision"
-msgstr "no se puede fusionar sin una versión actual"
+#: sequencer.c:1778 git-rebase--preserve-merges.sh:486
+msgid "This is the 1st commit message:"
+msgstr "Este es el mensaje del 1er commit:"
 
-#: sequencer.c:3416
+#: sequencer.c:1786
 #, c-format
-msgid "unable to parse '%.*s'"
-msgstr "no se puede analizar '%.*s'"
+msgid "could not read commit message of %s"
+msgstr "no se puede leer el mensaje del commit de %s"
 
-#: sequencer.c:3425
+#: sequencer.c:1793
 #, c-format
-msgid "nothing to merge: '%.*s'"
-msgstr "nada para fusionar: '%.*s'"
-
-#: sequencer.c:3437
-msgid "octopus merge cannot be executed on top of a [new root]"
-msgstr "fusión octopus no puede ser ejecutada en la punta de un [nuevo root]"
+msgid "This is the commit message #%d:"
+msgstr "Este es el mensaje del commit #%d:"
 
-#: sequencer.c:3453
+#: sequencer.c:1799
 #, c-format
-msgid "could not get commit message of '%s'"
-msgstr "no se puede leer el mensaje del commit '%s'"
+msgid "The commit message #%d will be skipped:"
+msgstr "El mensaje del commit #%d será saltado:"
 
-#: sequencer.c:3613
-#, c-format
-msgid "could not even attempt to merge '%.*s'"
-msgstr "no se pudo intentar fusionar '%.*s'"
+#: sequencer.c:1887
+msgid "your index file is unmerged."
+msgstr "tu archivo índice no está fusionado."
 
-#: sequencer.c:3629
-msgid "merge: Unable to write new index file"
-msgstr "fusión: No se puede escribir el nuevo archivo índice"
+#: sequencer.c:1894
+msgid "cannot fixup root commit"
+msgstr "no se puede arreglar el commit raíz"
 
-#: sequencer.c:3703
-msgid "Cannot autostash"
-msgstr "No se puede ejecutar autostash"
+#: sequencer.c:1913
+#, 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 proporcionó la opción -m."
 
-#: sequencer.c:3706
+#: sequencer.c:1921 sequencer.c:1929
 #, c-format
-msgid "Unexpected stash response: '%s'"
-msgstr "Respuesta de stash inesperada: '%s'"
+msgid "commit %s does not have parent %d"
+msgstr "el commit %s no tiene un padre %d"
 
-#: sequencer.c:3712
+#: sequencer.c:1935
 #, c-format
-msgid "Could not create directory for '%s'"
-msgstr "No se pudo crear el directorio para '%s'"
+msgid "cannot get commit message for %s"
+msgstr "no se puede obtener el mensaje de commit para %s"
 
-#: sequencer.c:3715
+#. TRANSLATORS: The first %s will be a "todo" command like
+#. "revert" or "pick", the second %s a SHA1.
+#: sequencer.c:1954
 #, c-format
-msgid "Created autostash: %s\n"
-msgstr "Autostash creado: %s\n"
+msgid "%s: cannot parse parent commit %s"
+msgstr "%s: no se puede analizar el commit padre %s"
 
-#: sequencer.c:3719
-msgid "could not reset --hard"
-msgstr "no se pudo reset --hard"
+#: sequencer.c:2019
+#, c-format
+msgid "could not rename '%s' to '%s'"
+msgstr "no se puede renombrar '%s' a '%s'"
 
-#: sequencer.c:3744
+#: sequencer.c:2079
 #, c-format
-msgid "Applied autostash.\n"
-msgstr "Autostash aplicado.\n"
+msgid "could not revert %s... %s"
+msgstr "no se pudo revertir %s... %s"
 
-#: sequencer.c:3756
+#: sequencer.c:2080
 #, c-format
-msgid "cannot store %s"
-msgstr "no se puede guardar %s"
+msgid "could not apply %s... %s"
+msgstr "no se pudo aplicar %s... %s"
 
-#: sequencer.c:3759
+#: sequencer.c:2100
 #, c-format
-msgid ""
-"%s\n"
-"Your changes are safe in the stash.\n"
-"You can run \"git stash pop\" or \"git stash drop\" at any time.\n"
-msgstr ""
-"%s\n"
-"Tus cambios están seguros en el stash.\n"
-"Puedes ejecutar \"git stash pop\" o \"git stash drop\" en cualquier "
-"momento.\n"
+msgid "dropping %s %s -- patch contents already upstream\n"
+msgstr "botando $%s %s -- contenidos del parche ya están en upstream\n"
 
-#: sequencer.c:3764
-msgid "Applying autostash resulted in conflicts."
-msgstr "Apicar autostash resultó en conflictos."
+#: sequencer.c:2158
+#, c-format
+msgid "git %s: failed to read the index"
+msgstr "git %s: falló al leer el índice"
 
-#: sequencer.c:3765
-msgid "Autostash exists; creating a new stash entry."
-msgstr "Autostash existe; creando una nueva entrada stash."
+#: sequencer.c:2165
+#, c-format
+msgid "git %s: failed to refresh the index"
+msgstr "git %s: falló al refrescar el índice"
 
-#: sequencer.c:3857
+#: sequencer.c:2242
 #, c-format
-msgid "%s: not a valid OID"
-msgstr "%s no es OID válido"
+msgid "%s does not accept arguments: '%s'"
+msgstr "%s no acepta los argumentos: '%s'"
 
-#: sequencer.c:3862 git-rebase--preserve-merges.sh:779
-msgid "could not detach HEAD"
-msgstr "no se puede desacoplar HEAD"
+#: sequencer.c:2251
+#, c-format
+msgid "missing arguments for %s"
+msgstr "faltan argumentos para para %s"
 
-#: sequencer.c:3877
+#: sequencer.c:2282
 #, c-format
-msgid "Stopped at HEAD\n"
-msgstr "Detenido en HEAD\n"
+msgid "could not parse '%s'"
+msgstr "no se puede analizar '%s'"
 
-#: sequencer.c:3879
+#: sequencer.c:2343
 #, c-format
-msgid "Stopped at %s\n"
-msgstr "Detenido en %s\n"
+msgid "invalid line %d: %.*s"
+msgstr "línea inválida %d: %.*s"
 
-#: sequencer.c:3887
+#: sequencer.c:2354
 #, 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"
+msgid "cannot '%s' without a previous commit"
+msgstr "no se puede  '%s' sin un commit previo"
+
+#: sequencer.c:2440
+msgid "cancelling a cherry picking in progress"
+msgstr "cancelando cherry-pick en progreso"
+
+#: sequencer.c:2449
+msgid "cancelling a revert in progress"
+msgstr "cancelando revert en progreso"
 
-#: sequencer.c:3931
-#, c-format
-msgid "Rebasing (%d/%d)%s"
-msgstr "Aplicando rebase (%d/%d)%s"
+#: sequencer.c:2493
+msgid "please fix this using 'git rebase --edit-todo'."
+msgstr "por favor arregle esto usando 'git rebase --edit-todo'."
 
-#: sequencer.c:3976
+#: sequencer.c:2495
 #, c-format
-msgid "Stopped at %s...  %.*s\n"
-msgstr "Detenido en %s...  %.*s\n"
+msgid "unusable instruction sheet: '%s'"
+msgstr "hoja de instrucciones inutilizable: '%s'"
 
-#: sequencer.c:4047
-#, c-format
-msgid "unknown command %d"
-msgstr "comando desconocido %d"
+#: sequencer.c:2500
+msgid "no commits parsed."
+msgstr "ningún commit analizado."
 
-#: sequencer.c:4106
-msgid "could not read orig-head"
-msgstr "no se puede leer orig-head"
+#: sequencer.c:2511
+msgid "cannot cherry-pick during a revert."
+msgstr "no se puede realizar cherry-pick durante un revert."
 
-#: sequencer.c:4111
-msgid "could not read 'onto'"
-msgstr "no se puede leer 'onto'"
+#: sequencer.c:2513
+msgid "cannot revert during a cherry-pick."
+msgstr "no se puede realizar un revert durante un cherry-pick."
 
-#: sequencer.c:4125
+#: sequencer.c:2591
 #, c-format
-msgid "could not update HEAD to %s"
-msgstr "no se puede actualizar HEAD a %s"
+msgid "invalid value for %s: %s"
+msgstr "valor inválido para %s: %s"
+
+#: sequencer.c:2698
+msgid "unusable squash-onto"
+msgstr "squash-onto inservible"
 
-#: sequencer.c:4185
+#: sequencer.c:2718
 #, c-format
-msgid "Successfully rebased and updated %s.\n"
-msgstr "Rebase aplicado satisfactoriamente y actualizado %s.\n"
+msgid "malformed options sheet: '%s'"
+msgstr "hoja de opciones mal formada: '%s'"
 
-#: sequencer.c:4218
-msgid "cannot rebase: You have unstaged changes."
-msgstr "no se puede realizar rebase: Tienes cambios fuera del área de stage."
+#: sequencer.c:2811 sequencer.c:4644
+msgid "empty commit set passed"
+msgstr "conjunto de commits vacío entregado"
 
-#: sequencer.c:4227
-msgid "cannot amend non-existing commit"
-msgstr "no se puede arreglar un commit no existente"
+#: sequencer.c:2828
+msgid "revert is already in progress"
+msgstr "revert ya está en progreso"
 
-#: sequencer.c:4229
+#: sequencer.c:2830
 #, c-format
-msgid "invalid file: '%s'"
-msgstr "archivo inválido: '%s'"
+msgid "try \"git revert (--continue | %s--abort | --quit)\""
+msgstr "intenta \"git revert (--continue | --quit | %s --abort)\""
 
-#: sequencer.c:4231
-#, c-format
-msgid "invalid contents: '%s'"
-msgstr "contenido inválido: '%s'"
+#: sequencer.c:2833
+msgid "cherry-pick is already in progress"
+msgstr "cherry-pick ya está en progreso"
 
-#: sequencer.c:4234
-msgid ""
-"\n"
-"You have uncommitted changes in your working tree. Please, commit them\n"
-"first and then run 'git rebase --continue' again."
-msgstr ""
-"\n"
-"Tienes cambios fuera de un commit en tu árbol de trabajo. Por favor, realiza "
-"un commit con estos\n"
-"primero y luego ejecuta 'git rebase --continue' de nuevo."
+#: sequencer.c:2835
+#, c-format
+msgid "try \"git cherry-pick (--continue | %s--abort | --quit)\""
+msgstr "intenta \"git cherry-pick (--continue | --quit | %s --abort)\""
 
-#: sequencer.c:4270 sequencer.c:4309
+#: sequencer.c:2849
 #, c-format
-msgid "could not write file: '%s'"
-msgstr "no se pudo escribir el archivo: '%s'"
+msgid "could not create sequencer directory '%s'"
+msgstr "no se pudo crear un directorio secuenciador '%s'"
 
-#: sequencer.c:4324
-msgid "could not remove CHERRY_PICK_HEAD"
-msgstr "no se puede eliminar CHERRY_PICK_HEAD"
+#: sequencer.c:2864
+msgid "could not lock HEAD"
+msgstr "no se pudo bloquear HEAD"
 
-#: sequencer.c:4331
-msgid "could not commit staged changes."
-msgstr "no se pudo realizar el commit con los cambios en el área de stage."
+#: sequencer.c:2924 sequencer.c:4379
+msgid "no cherry-pick or revert in progress"
+msgstr "ningún cherry-pick o revert en progreso"
+
+#: sequencer.c:2926 sequencer.c:2937
+msgid "cannot resolve HEAD"
+msgstr "no se puede resolver HEAD"
+
+#: sequencer.c:2928 sequencer.c:2972
+msgid "cannot abort from a branch yet to be born"
+msgstr "no se puede abortar de una rama por nacer"
 
-#: sequencer.c:4446
+#: sequencer.c:2958 builtin/grep.c:757
 #, c-format
-msgid "%s: can't cherry-pick a %s"
-msgstr "%s: no se puede aplicar cherry-pick a un %s"
+msgid "cannot open '%s'"
+msgstr "no se puede abrir '%s'"
 
-#: sequencer.c:4450
+#: sequencer.c:2960
 #, c-format
-msgid "%s: bad revision"
-msgstr "%s: revisión errónea"
+msgid "cannot read '%s': %s"
+msgstr "no se puede leer '%s': %s"
 
-#: sequencer.c:4485
-msgid "can't revert as initial commit"
-msgstr "no se puede revertir como commit inicial"
+#: sequencer.c:2961
+msgid "unexpected end of file"
+msgstr "final de archivo inesperado"
 
-#: sequencer.c:4962
-msgid "make_script: unhandled options"
-msgstr "make_script: opciones desconocidas"
+#: sequencer.c:2967
+#, c-format
+msgid "stored pre-cherry-pick HEAD file '%s' is corrupt"
+msgstr "archivo HEAD de pre-cherry-pick guardado '%s' está corrupto"
 
-#: sequencer.c:4965
-msgid "make_script: error preparing revisions"
-msgstr "make_script: error preparando revisiones"
+#: sequencer.c:2978
+msgid "You seem to have moved HEAD. Not rewinding, check your HEAD!"
+msgstr "Parece que se ha movido HEAD. No se hace rebobinado, ¡revisa tu HEAD!"
 
-#: sequencer.c:5206 sequencer.c:5223
-msgid "nothing to do"
-msgstr "nada que hacer"
+#: sequencer.c:3019
+msgid "no revert in progress"
+msgstr "no hay revert en progreso"
 
-#: sequencer.c:5242
-msgid "could not skip unnecessary pick commands"
-msgstr "no se pudo saltar los comandos pick innecesarios"
+#: sequencer.c:3028
+msgid "no cherry-pick in progress"
+msgstr "ningún cherry-pick en progreso"
 
-#: sequencer.c:5336
-msgid "the script was already rearranged."
-msgstr "este script ya fue reorganizado."
+#: sequencer.c:3038
+msgid "failed to skip the commit"
+msgstr "falló al escribir el commit"
 
-#: setup.c:133
-#, c-format
-msgid "'%s' is outside repository at '%s'"
-msgstr "'%s' está fuera del repositorio en '%s'"
+#: sequencer.c:3045
+msgid "there is nothing to skip"
+msgstr "no hay nada que saltar"
 
-#: setup.c:185
+#: sequencer.c:3048
 #, c-format
 msgid ""
-"%s: no such path in the working tree.\n"
-"Use 'git <command> -- <path>...' to specify paths that do not exist locally."
+"have you committed already?\n"
+"try \"git %s --continue\""
 msgstr ""
-"%s: no existe la ruta en el árbol de trabajo.\n"
-"Use 'git <comando> -- <ruta>...' para especificar rutas que no existen "
-"localmente."
+"¿ya has hecho el commit?\n"
+"intenta \"git %s --continue\""
 
-#: setup.c:198
-#, c-format
-msgid ""
-"ambiguous argument '%s': unknown revision or path not in the working tree.\n"
-"Use '--' to separate paths from revisions, like this:\n"
-"'git <command> [<revision>...] -- [<file>...]'"
-msgstr ""
-"argumento ambiguo '%s': revisión desconocida o ruta fuera del árbol de "
-"trabajo.\n"
-"Use '--' para separar las rutas de las revisiones, de esta manera:\n"
-"'git <comando> [<revisión>...] -- [<archivo>...]'"
+#: sequencer.c:3210 sequencer.c:4271
+msgid "cannot read HEAD"
+msgstr "no se puede leer HEAD"
 
-#: setup.c:264
+#: sequencer.c:3227
 #, c-format
-msgid "option '%s' must come before non-option arguments"
-msgstr "opción '%s' debe venir antes de argumentos no opcionales"
+msgid "unable to copy '%s' to '%s'"
+msgstr "no se pudo copiar '%s' a '%s'"
 
-#: setup.c:283
+#: sequencer.c:3235
 #, c-format
 msgid ""
-"ambiguous argument '%s': both revision and filename\n"
-"Use '--' to separate paths from revisions, like this:\n"
-"'git <command> [<revision>...] -- [<file>...]'"
-msgstr ""
-"argumento ambiguo '%s': ambos revisión y nombre de archivo\n"
-"Use '--' para separar rutas de revisiones, de esta manera:\n"
-"'git <comando> [<revisión>...] -- [<archivo>...]'"
-
-#: setup.c:419
-msgid "unable to set up work tree using invalid config"
+"You can amend the commit now, with\n"
+"\n"
+"  git commit --amend %s\n"
+"\n"
+"Once you are satisfied with your changes, run\n"
+"\n"
+"  git rebase --continue\n"
 msgstr ""
-"no es posible configurar el directorio de trabajo usando una configuración "
-"inválida"
-
-#: setup.c:423
-msgid "this operation must be run in a work tree"
-msgstr "esta operación debe ser realizada en un árbol de trabajo"
-
-#: setup.c:604
-#, c-format
-msgid "Expected git repo version <= %d, found %d"
-msgstr "Se esperaba versión de git repo  <= %d, encontrada %d"
-
-#: setup.c:612
-msgid "unknown repository extensions found:"
-msgstr "se encontró extensión de repositorio desconocida:"
+"Puedes enmendar el commit ahora, con\n"
+"\n"
+"\tgit commit --amend %s\n"
+"\n"
+"Una vez que estés satisfecho con los cambios, ejecuta\n"
+"\n"
+"\tgit rebase --continue\n"
 
-#: setup.c:631
+#: sequencer.c:3245
 #, c-format
-msgid "error opening '%s'"
-msgstr "error abriendo '%s'"
+msgid "Could not apply %s... %.*s"
+msgstr "No se pudo aplicar %s... %.*s"
 
-#: setup.c:633
+#: sequencer.c:3252
 #, c-format
-msgid "too large to be a .git file: '%s'"
-msgstr "muy grande para ser un archivo .git: '%s'"
+msgid "Could not merge %.*s"
+msgstr "No se pudo fusionar %.*s"
 
-#: setup.c:635
+#: sequencer.c:3266 sequencer.c:3270 builtin/difftool.c:640
 #, c-format
-msgid "error reading %s"
-msgstr "error leyendo %s"
+msgid "could not copy '%s' to '%s'"
+msgstr "no se pudo copiar '%s' a '%s'"
 
-#: setup.c:637
+#: sequencer.c:3282
 #, c-format
-msgid "invalid gitfile format: %s"
-msgstr "formato gitfile inválido: %s"
+msgid "Executing: %s\n"
+msgstr "Ejecutando: %s\n"
 
-#: setup.c:639
+#: sequencer.c:3297
 #, c-format
-msgid "no path in gitfile: %s"
-msgstr "no hay ruta en gitfile: %s"
+msgid ""
+"execution failed: %s\n"
+"%sYou can fix the problem, and then run\n"
+"\n"
+"  git rebase --continue\n"
+"\n"
+msgstr ""
+"ejecución fallida: %s\n"
+"%sPuedes arreglar el problema, y luego ejecutar\n"
+"\n"
+"  git rebase --continue\n"
+"\n"
 
-#: setup.c:641
-#, c-format
-msgid "not a git repository: %s"
-msgstr "no es un repositorio git: %s"
+#: sequencer.c:3303
+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"
 
-#: setup.c:743
+#: sequencer.c:3309
 #, c-format
-msgid "'$%s' too big"
-msgstr "'$%s' muy grande"
+msgid ""
+"execution succeeded: %s\n"
+"but left changes to the index and/or the working tree\n"
+"Commit or stash your changes, and then run\n"
+"\n"
+"  git rebase --continue\n"
+"\n"
+msgstr ""
+"ejecución exitosa: %s\n"
+"pero todavía quedan cambios para el índice o árbol de trabajo.\n"
+"Realiza un commit o stash con tus cambios, y luego ejecuta\n"
+"\n"
+"  git rebase --continue\n"
+"\n"
 
-#: setup.c:757
+#: sequencer.c:3370
 #, c-format
-msgid "not a git repository: '%s'"
-msgstr "no es un repositorio git: '%s'"
+msgid "illegal label name: '%.*s'"
+msgstr "nombre de label ilegal: '%.*s'"
 
-#: setup.c:786 setup.c:788 setup.c:819
-#, c-format
-msgid "cannot chdir to '%s'"
-msgstr "no se puede aplicar chdir a '%s'"
+#: sequencer.c:3424
+msgid "writing fake root commit"
+msgstr "escribiendo commit raíz falso"
 
-#: setup.c:791 setup.c:847 setup.c:857 setup.c:896 setup.c:904
-msgid "cannot come back to cwd"
-msgstr "no se puede volver a cwd"
+#: sequencer.c:3429
+msgid "writing squash-onto"
+msgstr "escribiendo squash-onto"
 
-#: setup.c:918
+#: sequencer.c:3513
 #, c-format
-msgid "failed to stat '%*s%s%s'"
-msgstr "falló al determinar '%*s%s%s'"
+msgid "could not resolve '%s'"
+msgstr "no se pudo resolver '%s'"
 
-#: setup.c:1156
-msgid "Unable to read current working directory"
-msgstr "Incapaz de leer el directorio de trabajo actual"
+#: sequencer.c:3546
+msgid "cannot merge without a current revision"
+msgstr "no se puede fusionar sin una versión actual"
 
-#: setup.c:1165 setup.c:1171
+#: sequencer.c:3568
 #, c-format
-msgid "cannot change to '%s'"
-msgstr "no se puede cambiar a '%s'"
+msgid "unable to parse '%.*s'"
+msgstr "no se puede analizar '%.*s'"
 
-#: setup.c:1176
+#: sequencer.c:3577
 #, 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"
+msgid "nothing to merge: '%.*s'"
+msgstr "nada para fusionar: '%.*s'"
+
+#: sequencer.c:3589
+msgid "octopus merge cannot be executed on top of a [new root]"
+msgstr "fusión octopus no puede ser ejecutada en la punta de un [nuevo root]"
 
-#: setup.c:1182
+#: sequencer.c:3605
 #, c-format
-msgid ""
-"not a git repository (or any parent up to mount point %s)\n"
-"Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set)."
-msgstr ""
-"no es un repositorio git ( o ningún padre en el punto de montado %s)\n"
-"Parando en el límite del sistema de archivos "
-"(GIT_DISCOVERY_ACROSS_FILESYSTEM no establecido)."
+msgid "could not get commit message of '%s'"
+msgstr "no se puede leer el mensaje del commit '%s'"
 
-#: setup.c:1293
+#: sequencer.c:3788
 #, c-format
-msgid ""
-"problem with core.sharedRepository filemode value (0%.3o).\n"
-"The owner of files must always have read and write permissions."
-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."
+msgid "could not even attempt to merge '%.*s'"
+msgstr "no se pudo intentar fusionar '%.*s'"
 
-#: setup.c:1340
-msgid "open /dev/null or dup failed"
-msgstr "falló al abrir /dev/null o dup"
+#: sequencer.c:3804
+msgid "merge: Unable to write new index file"
+msgstr "fusión: No se puede escribir el nuevo archivo índice"
 
-#: setup.c:1355
-msgid "fork failed"
-msgstr "falló fork"
+#: sequencer.c:3878
+msgid "Cannot autostash"
+msgstr "No se puede ejecutar autostash"
 
-#: setup.c:1360
-msgid "setsid failed"
-msgstr "falló setsid"
+#: sequencer.c:3881
+#, c-format
+msgid "Unexpected stash response: '%s'"
+msgstr "Respuesta de stash inesperada: '%s'"
 
-#: sha1-file.c:470
+#: sequencer.c:3887
 #, c-format
-msgid "object directory %s does not exist; check .git/objects/info/alternates"
-msgstr "objeto directorio %s no existe; revisa .git/objects/info/alternates"
+msgid "Could not create directory for '%s'"
+msgstr "No se pudo crear el directorio para '%s'"
 
-#: sha1-file.c:521
+#: sequencer.c:3890
 #, c-format
-msgid "unable to normalize alternate object path: %s"
-msgstr "incapaz de normalizar la ruta de objeto alterno: %s"
+msgid "Created autostash: %s\n"
+msgstr "Autostash creado: %s\n"
 
-#: sha1-file.c:593
+#: sequencer.c:3894
+msgid "could not reset --hard"
+msgstr "no se pudo reset --hard"
+
+#: sequencer.c:3919
 #, c-format
-msgid "%s: ignoring alternate object stores, nesting too deep"
-msgstr "%s: ignorando espacios de objetos alternos, anidado muy profundo"
+msgid "Applied autostash.\n"
+msgstr "Autostash aplicado.\n"
 
-#: sha1-file.c:600
+#: sequencer.c:3931
 #, c-format
-msgid "unable to normalize object directory: %s"
-msgstr "incapaz de normalizar directorio de objeto: %s"
+msgid "cannot store %s"
+msgstr "no se puede guardar %s"
 
-#: sha1-file.c:643
-msgid "unable to fdopen alternates lockfile"
-msgstr "no es posible hacer fdopen en lockfile alternos"
+#: sequencer.c:3934
+#, c-format
+msgid ""
+"%s\n"
+"Your changes are safe in the stash.\n"
+"You can run \"git stash pop\" or \"git stash drop\" at any time.\n"
+msgstr ""
+"%s\n"
+"Tus cambios están seguros en el stash.\n"
+"Puedes ejecutar \"git stash pop\" o \"git stash drop\" en cualquier "
+"momento.\n"
 
-#: sha1-file.c:661
-msgid "unable to read alternates file"
-msgstr "no es posible leer archivos alternos"
+#: sequencer.c:3939
+msgid "Applying autostash resulted in conflicts."
+msgstr "Apicar autostash resultó en conflictos."
 
-#: sha1-file.c:668
-msgid "unable to move new alternates file into place"
-msgstr "no es posible mover archivos alternos en el lugar"
+#: sequencer.c:3940
+msgid "Autostash exists; creating a new stash entry."
+msgstr "Autostash existe; creando una nueva entrada stash."
 
-#: sha1-file.c:703
-#, c-format
-msgid "path '%s' does not exist"
-msgstr "ruta '%s' no existe"
+#: sequencer.c:4033 git-rebase--preserve-merges.sh:769
+msgid "could not detach HEAD"
+msgstr "no se puede desacoplar HEAD"
 
-#: sha1-file.c:724
+#: sequencer.c:4048
 #, 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."
+msgid "Stopped at HEAD\n"
+msgstr "Detenido en HEAD\n"
 
-#: sha1-file.c:730
+#: sequencer.c:4050
 #, c-format
-msgid "reference repository '%s' is not a local repository."
-msgstr "repositorio de referencia '%s' no es un repositorio local."
+msgid "Stopped at %s\n"
+msgstr "Detenido en %s\n"
 
-#: sha1-file.c:736
+#: sequencer.c:4058
 #, c-format
-msgid "reference repository '%s' is shallow"
-msgstr "repositorio de referencia '%s' es superficial (shallow)"
+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"
 
-#: sha1-file.c:744
+#: sequencer.c:4104
 #, c-format
-msgid "reference repository '%s' is grafted"
-msgstr "repositorio de referencia '% s' está injertado"
+msgid "Rebasing (%d/%d)%s"
+msgstr "Aplicando rebase (%d/%d)%s"
 
-#: sha1-file.c:804
+#: sequencer.c:4149
 #, c-format
-msgid "invalid line while parsing alternate refs: %s"
-msgstr "línea inválida mientras se analizaban refs alternas: %s"
+msgid "Stopped at %s...  %.*s\n"
+msgstr "Detenido en %s...  %.*s\n"
 
-#: sha1-file.c:954
+#: sequencer.c:4220
 #, c-format
-msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
-msgstr "intentando usar mmap %<PRIuMAX> sobre límite %<PRIuMAX>"
+msgid "unknown command %d"
+msgstr "comando desconocido %d"
 
-#: sha1-file.c:975
-msgid "mmap failed"
-msgstr "mmap falló"
+#: sequencer.c:4279
+msgid "could not read orig-head"
+msgstr "no se puede leer orig-head"
 
-#: sha1-file.c:1139
-#, c-format
-msgid "object file %s is empty"
-msgstr "archivo de objeto %s está vacío"
+#: sequencer.c:4284
+msgid "could not read 'onto'"
+msgstr "no se puede leer 'onto'"
 
-#: sha1-file.c:1274 sha1-file.c:2454
+#: sequencer.c:4298
 #, c-format
-msgid "corrupt loose object '%s'"
-msgstr "objeto perdido corrupto '%s'"
+msgid "could not update HEAD to %s"
+msgstr "no se puede actualizar HEAD a %s"
 
-#: sha1-file.c:1276 sha1-file.c:2458
+#: sequencer.c:4358
 #, c-format
-msgid "garbage at end of loose object '%s'"
-msgstr "basura al final del objeto perdido '%s'"
+msgid "Successfully rebased and updated %s.\n"
+msgstr "Rebase aplicado satisfactoriamente y actualizado %s.\n"
 
-#: sha1-file.c:1318
-msgid "invalid object type"
-msgstr "tipo de objeto inválido"
+#: sequencer.c:4391
+msgid "cannot rebase: You have unstaged changes."
+msgstr "no se puede realizar rebase: Tienes cambios fuera del área de stage."
 
-#: sha1-file.c:1402
-#, c-format
-msgid "unable to unpack %s header with --allow-unknown-type"
-msgstr "no es posible desempacar header %s con --allow-unknown-type"
+#: sequencer.c:4400
+msgid "cannot amend non-existing commit"
+msgstr "no se puede arreglar un commit no existente"
 
-#: sha1-file.c:1405
+#: sequencer.c:4402
 #, c-format
-msgid "unable to unpack %s header"
-msgstr "incapaz de desempaquetar header %s"
+msgid "invalid file: '%s'"
+msgstr "archivo inválido: '%s'"
 
-#: sha1-file.c:1411
+#: sequencer.c:4404
 #, c-format
-msgid "unable to parse %s header with --allow-unknown-type"
-msgstr "no es posible analizar header %s con --allow-unknown-type"
+msgid "invalid contents: '%s'"
+msgstr "contenido inválido: '%s'"
 
-#: sha1-file.c:1414
-#, c-format
-msgid "unable to parse %s header"
-msgstr "incapaz de analizar header %s"
+#: sequencer.c:4407
+msgid ""
+"\n"
+"You have uncommitted changes in your working tree. Please, commit them\n"
+"first and then run 'git rebase --continue' again."
+msgstr ""
+"\n"
+"Tienes cambios fuera de un commit en tu árbol de trabajo. Por favor, realiza "
+"un commit con estos\n"
+"primero y luego ejecuta 'git rebase --continue' de nuevo."
 
-#: sha1-file.c:1640
+#: sequencer.c:4443 sequencer.c:4482
 #, c-format
-msgid "failed to read object %s"
-msgstr "falló al leer objeto %s"
+msgid "could not write file: '%s'"
+msgstr "no se pudo escribir el archivo: '%s'"
 
-#: sha1-file.c:1644
-#, c-format
-msgid "replacement %s not found for %s"
-msgstr "reemplazo %s no encontrado para %s"
+#: sequencer.c:4498
+msgid "could not remove CHERRY_PICK_HEAD"
+msgstr "no se puede eliminar CHERRY_PICK_HEAD"
 
-#: sha1-file.c:1648
-#, c-format
-msgid "loose object %s (stored in %s) is corrupt"
-msgstr "objeto perdido %s (guardado en %s) está corrompido"
+#: sequencer.c:4505
+msgid "could not commit staged changes."
+msgstr "no se pudo realizar el commit con los cambios en el área de stage."
 
-#: sha1-file.c:1652
+#: sequencer.c:4621
 #, c-format
-msgid "packed object %s (stored in %s) is corrupt"
-msgstr "paquete de objeto %s (guardado en %s) está corrompido"
+msgid "%s: can't cherry-pick a %s"
+msgstr "%s: no se puede aplicar cherry-pick a un %s"
 
-#: sha1-file.c:1757
+#: sequencer.c:4625
 #, c-format
-msgid "unable to write file %s"
-msgstr "no es posible escribir archivo %s"
+msgid "%s: bad revision"
+msgstr "%s: revisión errónea"
 
-#: sha1-file.c:1764
-#, c-format
-msgid "unable to set permission to '%s'"
-msgstr "no se pudo poner permisos a '%s'"
+#: sequencer.c:4660
+msgid "can't revert as initial commit"
+msgstr "no se puede revertir como commit inicial"
 
-#: sha1-file.c:1771
-msgid "file write error"
-msgstr "falló de escritura"
+#: sequencer.c:5137
+msgid "make_script: unhandled options"
+msgstr "make_script: opciones desconocidas"
 
-#: sha1-file.c:1791
-msgid "error when closing loose object file"
-msgstr "error cerrando el archivo de objeto suelto"
+#: sequencer.c:5140
+msgid "make_script: error preparing revisions"
+msgstr "make_script: error preparando revisiones"
 
-#: sha1-file.c:1856
-#, c-format
-msgid "insufficient permission for adding an object to repository database %s"
-msgstr ""
-"permisos insuficientes para agregar un objeto a la base de datos del "
-"repositorio %s"
+#: sequencer.c:5382 sequencer.c:5399
+msgid "nothing to do"
+msgstr "nada que hacer"
 
-#: sha1-file.c:1858
-msgid "unable to create temporary file"
-msgstr "no es posible crear un archivo temporal"
+#: sequencer.c:5418
+msgid "could not skip unnecessary pick commands"
+msgstr "no se pudo saltar los comandos pick innecesarios"
 
-#: sha1-file.c:1882
-msgid "unable to write loose object file"
-msgstr "no es posible escribir el archivo de objeto suelto"
+#: sequencer.c:5512
+msgid "the script was already rearranged."
+msgstr "este script ya fue reorganizado."
 
-#: sha1-file.c:1888
+#: setup.c:133
 #, c-format
-msgid "unable to deflate new object %s (%d)"
-msgstr "no es posible desinflar el objeto nuevo %s (%d)"
+msgid "'%s' is outside repository at '%s'"
+msgstr "'%s' está fuera del repositorio en '%s'"
 
-#: sha1-file.c:1892
+#: setup.c:185
 #, c-format
-msgid "deflateEnd on object %s failed (%d)"
-msgstr "deflateEnd en objeto %s falló (%d)"
+msgid ""
+"%s: no such path in the working tree.\n"
+"Use 'git <command> -- <path>...' to specify paths that do not exist locally."
+msgstr ""
+"%s: no existe la ruta en el árbol de trabajo.\n"
+"Use 'git <comando> -- <ruta>...' para especificar rutas que no existen "
+"localmente."
 
-#: sha1-file.c:1896
+#: setup.c:198
 #, c-format
-msgid "confused by unstable object source data for %s"
-msgstr "confundido por fuente de data de objetos inestable para %s"
+msgid ""
+"ambiguous argument '%s': unknown revision or path not in the working tree.\n"
+"Use '--' to separate paths from revisions, like this:\n"
+"'git <command> [<revision>...] -- [<file>...]'"
+msgstr ""
+"argumento ambiguo '%s': revisión desconocida o ruta fuera del árbol de "
+"trabajo.\n"
+"Use '--' para separar las rutas de las revisiones, de esta manera:\n"
+"'git <comando> [<revisión>...] -- [<archivo>...]'"
 
-#: sha1-file.c:1906 builtin/pack-objects.c:1085
+#: setup.c:264
 #, c-format
-msgid "failed utime() on %s"
-msgstr "falló utime() en %s"
+msgid "option '%s' must come before non-option arguments"
+msgstr "opción '%s' debe venir antes de argumentos no opcionales"
 
-#: sha1-file.c:1983
+#: setup.c:283
 #, c-format
-msgid "cannot read object for %s"
-msgstr "no se pudo leer el objeto para %s"
-
-#: sha1-file.c:2022
-msgid "corrupt commit"
-msgstr "commit corrupto"
+msgid ""
+"ambiguous argument '%s': both revision and filename\n"
+"Use '--' to separate paths from revisions, like this:\n"
+"'git <command> [<revision>...] -- [<file>...]'"
+msgstr ""
+"argumento ambiguo '%s': ambos revisión y nombre de archivo\n"
+"Use '--' para separar rutas de revisiones, de esta manera:\n"
+"'git <comando> [<revisión>...] -- [<archivo>...]'"
 
-#: sha1-file.c:2030
-msgid "corrupt tag"
-msgstr "tag corrupto"
+#: setup.c:419
+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"
 
-#: sha1-file.c:2130
-#, c-format
-msgid "read error while indexing %s"
-msgstr "error leyendo al indexar %s"
+#: setup.c:423
+msgid "this operation must be run in a work tree"
+msgstr "esta operación debe ser realizada en un árbol de trabajo"
 
-#: sha1-file.c:2133
+#: setup.c:661
 #, c-format
-msgid "short read while indexing %s"
-msgstr "lectura corta al indexar %s"
+msgid "Expected git repo version <= %d, found %d"
+msgstr "Se esperaba versión de git repo  <= %d, encontrada %d"
 
-#: sha1-file.c:2206 sha1-file.c:2216
-#, c-format
-msgid "%s: failed to insert into database"
-msgstr "%s: falló al insertar en la base de datos"
+#: setup.c:669
+msgid "unknown repository extensions found:"
+msgstr "se encontró extensión de repositorio desconocida:"
 
-#: sha1-file.c:2222
-#, c-format
-msgid "%s: unsupported file type"
-msgstr "%s: tipo de archivo no soportado"
+#: setup.c:681
+msgid "repo version is 0, but v1-only extensions found:"
+msgstr "versión de repo es 0, pero extensión v1-only encontrada:"
 
-#: sha1-file.c:2246
+#: setup.c:700
 #, c-format
-msgid "%s is not a valid object"
-msgstr "%s no es objeto válido"
+msgid "error opening '%s'"
+msgstr "error abriendo '%s'"
 
-#: sha1-file.c:2248
+#: setup.c:702
 #, c-format
-msgid "%s is not a valid '%s' object"
-msgstr "%s no es un objeto '%s' válido"
+msgid "too large to be a .git file: '%s'"
+msgstr "muy grande para ser un archivo .git: '%s'"
 
-#: sha1-file.c:2275 builtin/index-pack.c:155
+#: setup.c:704
 #, c-format
-msgid "unable to open %s"
-msgstr "no es posible abrir %s"
+msgid "error reading %s"
+msgstr "error leyendo %s"
 
-#: sha1-file.c:2465 sha1-file.c:2518
+#: setup.c:706
 #, c-format
-msgid "hash mismatch for %s (expected %s)"
-msgstr "hash no concuerda para %s (se esperaba %s)"
+msgid "invalid gitfile format: %s"
+msgstr "formato gitfile inválido: %s"
 
-#: sha1-file.c:2489
+#: setup.c:708
 #, c-format
-msgid "unable to mmap %s"
-msgstr "no es posible hacer mmap a %s"
+msgid "no path in gitfile: %s"
+msgstr "no hay ruta en gitfile: %s"
 
-#: sha1-file.c:2494
+#: setup.c:710
 #, c-format
-msgid "unable to unpack header of %s"
-msgstr "incapaz de desempaquetar header de %s"
+msgid "not a git repository: %s"
+msgstr "no es un repositorio git: %s"
 
-#: sha1-file.c:2500
+#: setup.c:812
 #, c-format
-msgid "unable to parse header of %s"
-msgstr "incapaz de analizar header de %s"
+msgid "'$%s' too big"
+msgstr "'$%s' muy grande"
 
-#: sha1-file.c:2511
+#: setup.c:826
 #, c-format
-msgid "unable to unpack contents of %s"
-msgstr "no es posible desempaquetar contenidos de %s"
+msgid "not a git repository: '%s'"
+msgstr "no es un repositorio git: '%s'"
 
-#: sha1-name.c:486
+#: setup.c:855 setup.c:857 setup.c:888
 #, c-format
-msgid "short SHA1 %s is ambiguous"
-msgstr "SHA1 %s corto es ambiguo"
-
-#: sha1-name.c:497
-msgid "The candidates are:"
-msgstr "Los candidatos son:"
+msgid "cannot chdir to '%s'"
+msgstr "no se puede aplicar chdir a '%s'"
 
-#: sha1-name.c:796
-msgid ""
-"Git normally never creates a ref that ends with 40 hex characters\n"
-"because it will be ignored when you just specify 40-hex. These refs\n"
-"may be created by mistake. For example,\n"
-"\n"
-"  git switch -c $br $(git rev-parse ...)\n"
-"\n"
-"where \"$br\" is somehow empty and a 40-hex ref is created. Please\n"
-"examine these refs and maybe delete them. Turn this message off by\n"
-"running \"git config advice.objectNameWarning false\""
-msgstr ""
-"Git normalmente nunca crea una ref que termine con 40 caracteres hex\n"
-"porque esto sería ignorado cuando solo se especifiquen 40-hex. Estas refs\n"
-"tal vez sean creadas por error. Por ejemplo,\n"
-"\n"
-"  git switch -c $br $(git rev-parse ...)\n"
-"\n"
-"donde \"$br\" está de alguna manera vacía y una ref de 40-hex es creada. Por "
-"favor\n"
-"examina estas refs y tal vez bórralas. Silencia este mensaje \n"
-"ejecutando \"git config advice.objectNameWarning false\""
+#: setup.c:860 setup.c:916 setup.c:926 setup.c:965 setup.c:973
+msgid "cannot come back to cwd"
+msgstr "no se puede volver a cwd"
 
-#: sha1-name.c:916
+#: setup.c:987
 #, c-format
-msgid "log for '%.*s' only goes back to %s"
-msgstr "log para '%.*s' solo va hasta %s"
+msgid "failed to stat '%*s%s%s'"
+msgstr "falló al determinar '%*s%s%s'"
 
-#: sha1-name.c:924
-#, c-format
-msgid "log for '%.*s' only has %d entries"
-msgstr "log para '%.*s' solo tiene %d entradas"
+#: setup.c:1225
+msgid "Unable to read current working directory"
+msgstr "Incapaz de leer el directorio de trabajo actual"
 
-#: sha1-name.c:1689
+#: setup.c:1234 setup.c:1240
 #, c-format
-msgid "path '%s' exists on disk, but not in '%.*s'"
-msgstr "la ruta '%s' existe en disco, pero no en '%.*s'"
+msgid "cannot change to '%s'"
+msgstr "no se puede cambiar a '%s'"
 
-#: sha1-name.c:1695
+#: setup.c:1245
 #, c-format
-msgid ""
-"path '%s' exists, but not '%s'\n"
-"hint: Did you mean '%.*s:%s' aka '%.*s:./%s'?"
+msgid "not a git repository (or any of the parent directories): %s"
 msgstr ""
-"ruta '%s' existe, pero no '%s'\n"
-"ayuda: ¿Quisiste decir '%.*s:%s' o '%.*s:./%s'?"
-
-#: sha1-name.c:1704
-#, c-format
-msgid "path '%s' does not exist in '%.*s'"
-msgstr "ruta '%s' no existe en '%.*s'"
+"no es un repositorio git (ni ninguno de los directorios superiores): %s"
 
-#: sha1-name.c:1732
+#: setup.c:1251
 #, c-format
 msgid ""
-"path '%s' is in the index, but not at stage %d\n"
-"hint: Did you mean ':%d:%s'?"
+"not a git repository (or any parent up to mount point %s)\n"
+"Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set)."
 msgstr ""
-"ruta '%s' está en el index, pero no en stage %d\n"
-"ayuda:¿Quisiste decir: '%d:%s'?"
+"no es un repositorio git ( o ningún padre en el punto de montado %s)\n"
+"Parando en el límite del sistema de archivos "
+"(GIT_DISCOVERY_ACROSS_FILESYSTEM no establecido)."
 
-#: sha1-name.c:1748
+#: setup.c:1362
 #, c-format
 msgid ""
-"path '%s' is in the index, but not '%s'\n"
-"hint: Did you mean ':%d:%s' aka ':%d:./%s'?"
+"problem with core.sharedRepository filemode value (0%.3o).\n"
+"The owner of files must always have read and write permissions."
 msgstr ""
-"ruta '%s' está en el index, pero no '%s'\n"
-"ayuda:¿Quisiste decir ':%d:%s' o ':%d:./%s'?"
-
-#: sha1-name.c:1756
-#, c-format
-msgid "path '%s' exists on disk, but not in the index"
-msgstr "ruta '%s' existe en el disco, pero no en el index"
+"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."
 
-#: sha1-name.c:1758
-#, c-format
-msgid "path '%s' does not exist (neither on disk nor in the index)"
-msgstr "ruta '%s' no existe (ni en disco ni en el index)"
+#: setup.c:1409
+msgid "open /dev/null or dup failed"
+msgstr "falló al abrir /dev/null o dup"
 
-#: sha1-name.c:1771
-msgid "relative path syntax can't be used outside working tree"
-msgstr ""
-"la sintaxis de ruta relativa no se puede usar fuera del directorio de trabajo"
+#: setup.c:1424
+msgid "fork failed"
+msgstr "falló fork"
 
-#: sha1-name.c:1909
-#, c-format
-msgid "invalid object name '%.*s'."
-msgstr "nombre de objeto no válido: '%.*s'."
+#: setup.c:1429
+msgid "setsid failed"
+msgstr "falló setsid"
 
 #. TRANSLATORS: IEC 80000-13:2008 gibibyte
 #: strbuf.c:848
@@ -8165,6 +8486,12 @@ msgid_plural "%u bytes/s"
 msgstr[0] "%u bytes/s"
 msgstr[1] "%u bytes/s"
 
+#: strbuf.c:1166 wrapper.c:199 wrapper.c:369 builtin/am.c:719
+#: builtin/rebase.c:866
+#, c-format
+msgid "could not open '%s' for writing"
+msgstr "no se pudo abrir '%s' para escritura"
+
 #: strbuf.c:1175
 #, c-format
 msgid "could not edit '%s'"
@@ -8225,12 +8552,12 @@ msgstr "en el submódulo no poblado '%s'"
 msgid "Pathspec '%s' is in submodule '%.*s'"
 msgstr "El patrón de ruta '%s' está en el submódulo '%.*s'"
 
-#: submodule.c:434
+#: submodule.c:435
 #, c-format
 msgid "bad --ignore-submodules argument: %s"
 msgstr "mal argumento --ignore-submodules: %s"
 
-#: submodule.c:815
+#: submodule.c:817
 #, c-format
 msgid ""
 "Submodule in commit %s at path: '%s' collides with a submodule named the "
@@ -8239,50 +8566,50 @@ msgstr ""
 "Submódulo en el commit %s en ruta: '%s' colisiona con un submódulo llamado "
 "igual. Saltandolo."
 
-#: submodule.c:910
+#: submodule.c:920
 #, 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:995
+#: submodule.c:1005
 #, c-format
 msgid ""
 "Could not run 'git rev-list <commits> --not --remotes -n 1' command in "
 "submodule %s"
 msgstr ""
-"no se pudo ejecutar comando 'git rev-list <commits> --not --remotes -n 1' en "
+"No se pudo ejecutar comando 'git rev-list <commits> --not --remotes -n 1' en "
 "el submódulo %s"
 
-#: submodule.c:1118
+#: submodule.c:1128
 #, c-format
 msgid "process for submodule '%s' failed"
 msgstr "proceso para submódulo '%s' falló"
 
-#: submodule.c:1147 builtin/branch.c:678 builtin/submodule--helper.c:2045
+#: submodule.c:1157 builtin/branch.c:689 builtin/submodule--helper.c:2469
 msgid "Failed to resolve HEAD as a valid ref."
 msgstr "Falló al resolver HEAD como un ref válido."
 
-#: submodule.c:1158
+#: submodule.c:1168
 #, c-format
 msgid "Pushing submodule '%s'\n"
 msgstr "Empujando submódulo '%s'\n"
 
-#: submodule.c:1161
+#: submodule.c:1171
 #, c-format
 msgid "Unable to push submodule '%s'\n"
 msgstr "No es posible hacer push al submódulo '%s'\n"
 
-#: submodule.c:1453
+#: submodule.c:1463
 #, c-format
 msgid "Fetching submodule %s%s\n"
 msgstr "Haciendo fetch al submódulo %s%s\n"
 
-#: submodule.c:1483
+#: submodule.c:1497
 #, c-format
 msgid "Could not access submodule '%s'\n"
 msgstr "No pudo acceder al submódulo '%s'\n"
 
-#: submodule.c:1637
+#: submodule.c:1652
 #, c-format
 msgid ""
 "Errors during submodule fetch:\n"
@@ -8291,61 +8618,61 @@ msgstr ""
 "Errores durante el fetch del submódulo:\n"
 "%s"
 
-#: submodule.c:1662
+#: submodule.c:1677
 #, c-format
 msgid "'%s' not recognized as a git repository"
 msgstr "'%s' no reconocido como un repositorio git"
 
-#: submodule.c:1679
+#: submodule.c:1694
 #, c-format
 msgid "Could not run 'git status --porcelain=2' in submodule %s"
 msgstr "No se pudo ejecutar 'git status --procelain=2' en el submódulo %s"
 
-#: submodule.c:1720
+#: submodule.c:1735
 #, c-format
 msgid "'git status --porcelain=2' failed in submodule %s"
 msgstr "'git status --procelain=2' falló en el submódulo %s"
 
-#: submodule.c:1800
+#: submodule.c:1810
 #, 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:1813
+#: submodule.c:1823
 #, 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:1828
+#: submodule.c:1838
 #, c-format
 msgid "Could not unset core.worktree setting in submodule '%s'"
 msgstr "No se pudo quitar configuración core.worktree en submódulo '%s'"
 
-#: submodule.c:1855 submodule.c:2165
+#: submodule.c:1865 submodule.c:2175
 #, c-format
 msgid "could not recurse into submodule '%s'"
 msgstr "no pudo recursar en el submódulo '%s'"
 
-#: submodule.c:1876
+#: submodule.c:1886
 msgid "could not reset submodule index"
 msgstr "no se pudo reiniciar el index del submódulo"
 
-#: submodule.c:1918
+#: submodule.c:1928
 #, c-format
 msgid "submodule '%s' has dirty index"
 msgstr "submódulo '%s' tiene un índice corrupto"
 
-#: submodule.c:1970
+#: submodule.c:1980
 #, c-format
 msgid "Submodule '%s' could not be updated."
 msgstr "Submódulo '%s' no pudo ser actualizado."
 
-#: submodule.c:2038
+#: submodule.c:2048
 #, c-format
 msgid "submodule git dir '%s' is inside git dir '%.*s'"
 msgstr "submódulo git dir '%s' esta dentro de git dir '%.*s'"
 
-#: submodule.c:2059
+#: submodule.c:2069
 #, c-format
 msgid ""
 "relocate_gitdir for submodule '%s' with more than one worktree not supported"
@@ -8353,17 +8680,17 @@ msgstr ""
 "relocate_gitdir para el submódulo '%s' con más de un árbol de trabajo no "
 "soportado"
 
-#: submodule.c:2071 submodule.c:2130
+#: submodule.c:2081 submodule.c:2140
 #, c-format
 msgid "could not lookup name for submodule '%s'"
 msgstr "no se pudo resolver el nombre para el submódulo '%s'"
 
-#: submodule.c:2075
+#: submodule.c:2085
 #, c-format
 msgid "refusing to move '%s' into an existing git dir"
 msgstr "rechazando mover '%s' dentro de un directorio git existente"
 
-#: submodule.c:2082
+#: submodule.c:2092
 #, c-format
 msgid ""
 "Migrating git directory of '%s%s' from\n"
@@ -8374,65 +8701,65 @@ msgstr ""
 "'%s' hacia\n"
 "'%s'\n"
 
-#: submodule.c:2210
+#: submodule.c:2220
 msgid "could not start ls-files in .."
 msgstr "no se pudo comenzar ls-files en .."
 
-#: submodule.c:2250
+#: submodule.c:2260
 #, c-format
 msgid "ls-tree returned unexpected return code %d"
 msgstr "ls-tree devolvió un código %d inesperado"
 
-#: trailer.c:238
+#: trailer.c:236
 #, c-format
 msgid "running trailer command '%s' failed"
 msgstr "ejecución del comando de remolque '%s' falló"
 
-#: trailer.c:485 trailer.c:490 trailer.c:495 trailer.c:549 trailer.c:553
-#: trailer.c:557
+#: trailer.c:483 trailer.c:488 trailer.c:493 trailer.c:547 trailer.c:551
+#: trailer.c:555
 #, c-format
 msgid "unknown value '%s' for key '%s'"
 msgstr "valor '%s' desconocido para la clave '%s'"
 
-#: trailer.c:539 trailer.c:544 builtin/remote.c:298 builtin/remote.c:323
+#: trailer.c:537 trailer.c:542 builtin/remote.c:299 builtin/remote.c:324
 #, c-format
 msgid "more than one %s"
 msgstr "más de un %s"
 
-#: trailer.c:730
+#: trailer.c:728
 #, c-format
 msgid "empty trailer token in trailer '%.*s'"
 msgstr "token de remolque vacío en el trailer '%.*s'"
 
-#: trailer.c:750
+#: trailer.c:748
 #, c-format
 msgid "could not read input file '%s'"
 msgstr "no se pudo leer el archivo de entrada '%s'"
 
-#: trailer.c:753
+#: trailer.c:751 builtin/mktag.c:91
 msgid "could not read from stdin"
 msgstr "no se pudo leer desde stdin"
 
-#: trailer.c:1011 wrapper.c:673
+#: trailer.c:1009 wrapper.c:676
 #, c-format
 msgid "could not stat %s"
 msgstr "no se pudo definir %s"
 
-#: trailer.c:1013
+#: trailer.c:1011
 #, c-format
 msgid "file %s is not a regular file"
 msgstr "el archivo %s no es un archivo regular"
 
-#: trailer.c:1015
+#: trailer.c:1013
 #, c-format
 msgid "file %s is not writable by user"
 msgstr "el archivo %s no puede ser escrito por el usuario"
 
-#: trailer.c:1027
+#: trailer.c:1025
 msgid "could not open temporary file"
 msgstr "no se pudo abrir el archivo temporal"
 
-#: trailer.c:1067
+#: trailer.c:1065
 #, c-format
 msgid "could not rename temporary file to %s"
 msgstr "no se pudo renombrar el archivo temporal a %s"
@@ -8481,7 +8808,7 @@ msgstr "no se pudo ejecutar fast-import"
 msgid "error while running fast-import"
 msgstr "error al ejecutar fast-import"
 
-#: transport-helper.c:549 transport-helper.c:1156
+#: transport-helper.c:549 transport-helper.c:1237
 #, c-format
 msgid "could not read ref %s"
 msgstr "no se pudo leer la referencia %s"
@@ -8499,7 +8826,7 @@ msgstr "configurando servicio de ruta remota no soportado por el protocolo"
 msgid "invalid remote service path"
 msgstr "ruta de servicio remoto inválida"
 
-#: transport-helper.c:661 transport.c:1347
+#: transport-helper.c:661 transport.c:1447
 msgid "operation not supported by protocol"
 msgstr "operación no soportada por protocolo"
 
@@ -8508,59 +8835,68 @@ msgstr "operación no soportada por protocolo"
 msgid "can't connect to subservice %s"
 msgstr "no se puede conectar al subservicio %s"
 
-#: transport-helper.c:740
+#: transport-helper.c:745
+msgid "'option' without a matching 'ok/error' directive"
+msgstr "'opción' sin una directiva correspondiente 'ok/error'"
+
+#: transport-helper.c:788
 #, c-format
 msgid "expected ok/error, helper said '%s'"
 msgstr "se esperaba ok/error, helper dijo '%s'"
 
-#: transport-helper.c:793
+#: transport-helper.c:845
 #, c-format
 msgid "helper reported unexpected status of %s"
 msgstr "helper reportó estado inesperado de %s"
 
-#: transport-helper.c:854
+#: transport-helper.c:928
 #, c-format
 msgid "helper %s does not support dry-run"
 msgstr "helper %s no soporta dry-run"
 
-#: transport-helper.c:857
+#: transport-helper.c:931
 #, c-format
 msgid "helper %s does not support --signed"
 msgstr "helper %s no soporta --signed"
 
-#: transport-helper.c:860
+#: transport-helper.c:934
 #, c-format
 msgid "helper %s does not support --signed=if-asked"
 msgstr "helper %s no soporta --signed=if-asked"
 
-#: transport-helper.c:865
+#: transport-helper.c:939
 #, c-format
 msgid "helper %s does not support --atomic"
 msgstr "helper %s no soporta --atomic"
 
-#: transport-helper.c:871
+#: transport-helper.c:943
+#, c-format
+msgid "helper %s does not support --%s"
+msgstr "helper %s no soporta --%s"
+
+#: transport-helper.c:950
 #, c-format
 msgid "helper %s does not support 'push-option'"
 msgstr "helper %s no soporta 'push-option'"
 
-#: transport-helper.c:970
+#: transport-helper.c:1050
 msgid "remote-helper doesn't support push; refspec needed"
 msgstr "remote-helper no soporta push; se necesita refspec"
 
-#: transport-helper.c:975
+#: transport-helper.c:1055
 #, c-format
 msgid "helper %s does not support 'force'"
 msgstr "helper %s no soporta 'force'"
 
-#: transport-helper.c:1022
+#: transport-helper.c:1102
 msgid "couldn't run fast-export"
 msgstr "no se pudo ejecutar fast-export"
 
-#: transport-helper.c:1027
+#: transport-helper.c:1107
 msgid "error while running fast-export"
 msgstr "error al ejecutar fast-export"
 
-#: transport-helper.c:1052
+#: transport-helper.c:1132
 #, c-format
 msgid ""
 "No refs in common and none specified; doing nothing.\n"
@@ -8569,52 +8905,52 @@ msgstr ""
 "No hay refs comunes y ninguno especificado; no se hace nada.\n"
 "Tal vez deberías especificar un branch.\n"
 
-#: transport-helper.c:1133
+#: transport-helper.c:1214
 #, c-format
 msgid "unsupported object format '%s'"
 msgstr "formado de objeto no soportado '%s'"
 
-#: transport-helper.c:1142
+#: transport-helper.c:1223
 #, c-format
 msgid "malformed response in ref list: %s"
 msgstr "respuesta malformada en lista de refs: %s"
 
-#: transport-helper.c:1294
+#: transport-helper.c:1375
 #, c-format
 msgid "read(%s) failed"
 msgstr "leer(%s) falló"
 
-#: transport-helper.c:1321
+#: transport-helper.c:1402
 #, c-format
 msgid "write(%s) failed"
 msgstr "escribir(%s) falló"
 
-#: transport-helper.c:1370
+#: transport-helper.c:1451
 #, c-format
 msgid "%s thread failed"
 msgstr "hilo %s falló"
 
-#: transport-helper.c:1374
+#: transport-helper.c:1455
 #, c-format
 msgid "%s thread failed to join: %s"
 msgstr "hilo %s falló al unirse: %s"
 
-#: transport-helper.c:1393 transport-helper.c:1397
+#: transport-helper.c:1474 transport-helper.c:1478
 #, c-format
 msgid "can't start thread for copying data: %s"
 msgstr "no se puede iniciar el hilo para copiar data: %s"
 
-#: transport-helper.c:1434
+#: transport-helper.c:1515
 #, c-format
 msgid "%s process failed to wait"
 msgstr "proceso %s falló al esperar"
 
-#: transport-helper.c:1438
+#: transport-helper.c:1519
 #, c-format
 msgid "%s process failed"
 msgstr "proceso %s falló"
 
-#: transport-helper.c:1456 transport-helper.c:1465
+#: transport-helper.c:1537 transport-helper.c:1546
 msgid "can't start thread for copying data"
 msgstr "no se puede iniciar hilo para copiar data"
 
@@ -8633,37 +8969,37 @@ msgstr "no se pudo leer el conjunto '%s'"
 msgid "transport: invalid depth option '%s'"
 msgstr "transport: opción inválida '%s'"
 
-#: transport.c:272
+#: transport.c:269
 msgid "see protocol.version in 'git help config' for more details"
 msgstr "ver protocol.version en 'git help config' para más información"
 
-#: transport.c:273
+#: transport.c:270
 msgid "server options require protocol version 2 or later"
 msgstr "opciones del servidor requieren protocolo versión 2 o posterior"
 
-#: transport.c:631
+#: transport.c:727
 msgid "could not parse transport.color.* config"
 msgstr "no se pudo analizar valor de configuración transport.color.*"
 
-#: transport.c:704
+#: transport.c:802
 msgid "support for protocol v2 not implemented yet"
 msgstr "soporte para protocolo v2 no implementado todavía"
 
-#: transport.c:838
+#: transport.c:936
 #, c-format
 msgid "unknown value for config '%s': %s"
 msgstr "valor desconocido para configuración '%s': %s"
 
-#: transport.c:904
+#: transport.c:1002
 #, c-format
 msgid "transport '%s' not allowed"
 msgstr "transporte '%s' no permitido"
 
-#: transport.c:957
+#: transport.c:1055
 msgid "git-over-rsync is no longer supported"
 msgstr "git-over-rsync ya no es soportado"
 
-#: transport.c:1059
+#: transport.c:1157
 #, c-format
 msgid ""
 "The following submodule paths contain changes that can\n"
@@ -8672,7 +9008,7 @@ msgstr ""
 "La siguiente ruta de submódulo contiene cambios que no\n"
 "pueden ser encontrados en ningún remoto:\n"
 
-#: transport.c:1063
+#: transport.c:1161
 #, c-format
 msgid ""
 "\n"
@@ -8699,27 +9035,27 @@ msgstr ""
 "para hacer un push al remoto.\n"
 "\n"
 
-#: transport.c:1071
+#: transport.c:1169
 msgid "Aborting."
 msgstr "Abortando."
 
-#: transport.c:1216
+#: transport.c:1316
 msgid "failed to push all needed submodules"
 msgstr "falló al hacer push a todos los submódulos necesarios"
 
-#: tree-walk.c:32
+#: tree-walk.c:33
 msgid "too-short tree object"
 msgstr "objeto de árbol muy corto"
 
-#: tree-walk.c:38
+#: tree-walk.c:39
 msgid "malformed mode in tree entry"
 msgstr "modo mal formado en la entrada de árbol"
 
-#: tree-walk.c:42
+#: tree-walk.c:43
 msgid "empty filename in tree entry"
 msgstr "nombre de archivo vacío en la entrada de árbol"
 
-#: tree-walk.c:117
+#: tree-walk.c:118
 msgid "too-short tree file"
 msgstr "archivo de árbol muy corto"
 
@@ -8992,7 +9328,7 @@ msgstr ""
 msgid "Updating index flags"
 msgstr "Actualizando flags del index"
 
-#: upload-pack.c:1415
+#: upload-pack.c:1543
 msgid "expected flush after fetch arguments"
 msgstr "se espera flush tras argumentos fetch"
 
@@ -9029,50 +9365,118 @@ msgstr "segmento de ruta '..' inválido"
 msgid "Fetching objects"
 msgstr "Haciendo fetch a objetos"
 
-#: worktree.c:248 builtin/am.c:2098
+#: worktree.c:238 builtin/am.c:2103
 #, c-format
 msgid "failed to read '%s'"
 msgstr "falló al leer '%s'"
 
-#: worktree.c:295
+#: worktree.c:304
 #, c-format
 msgid "'%s' at main working tree is not the repository directory"
 msgstr ""
 "'%s' en el árbol de trabajo principal no es el directorio del repositorio"
 
-#: worktree.c:306
+#: worktree.c:315
 #, c-format
 msgid "'%s' file does not contain absolute path to the working tree location"
 msgstr ""
 "archivo '%s' no contiene una ruta absoluta a la ubicación del árbol de "
 "trabajo"
 
-#: worktree.c:318
+#: worktree.c:327
 #, c-format
 msgid "'%s' does not exist"
 msgstr "'%s' no existe"
 
-#: worktree.c:324
+#: worktree.c:333
 #, c-format
 msgid "'%s' is not a .git file, error code %d"
 msgstr "'%s' no es un archivo .git, código de error %d"
 
-#: worktree.c:333
+#: worktree.c:342
 #, c-format
 msgid "'%s' does not point back to '%s'"
 msgstr "'%s' no apunta de vuelta a '%s'"
 
-#: wrapper.c:194 wrapper.c:364
+#: worktree.c:608
+msgid "not a directory"
+msgstr "no es un directorio"
+
+#: worktree.c:617
+msgid ".git is not a file"
+msgstr ".git no es un archivo"
+
+#: worktree.c:619
+msgid ".git file broken"
+msgstr "archivo .git roto"
+
+#: worktree.c:621
+msgid ".git file incorrect"
+msgstr "archivo .git incorrecto"
+
+#: worktree.c:727
+msgid "not a valid path"
+msgstr "no es una ruta válida"
+
+#: worktree.c:733
+msgid "unable to locate repository; .git is not a file"
+msgstr "no es posible ubicar el repositorio; .git no es un archivo"
+
+#: worktree.c:737
+msgid "unable to locate repository; .git file does not reference a repository"
+msgstr ""
+"incapaz de localizar el repositorio; El archivo .git no hace referencia a un "
+"repositorio"
+
+#: worktree.c:741
+msgid "unable to locate repository; .git file broken"
+msgstr "no es posible ubicar el repositorio; archivo .git roto"
+
+#: worktree.c:747
+msgid "gitdir unreadable"
+msgstr "gitdir ilegible"
+
+#: worktree.c:751
+msgid "gitdir incorrect"
+msgstr "gitdir incorrecto"
+
+#: worktree.c:776
+msgid "not a valid directory"
+msgstr "no en un directorio válido"
+
+#: worktree.c:782
+msgid "gitdir file does not exist"
+msgstr "archivo gitdir no existe"
+
+#: worktree.c:787 worktree.c:796
+#, c-format
+msgid "unable to read gitdir file (%s)"
+msgstr "no es posible leer archivo gitdir (%s)"
+
+#: worktree.c:806
+#, c-format
+msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
+msgstr "lectura corta (se esperaba %<PRIuMAX> bytes, se leyó %<PRIuMAX>)"
+
+#: worktree.c:814
+msgid "invalid gitdir file"
+msgstr "archivo gitdir inválido"
+
+#: worktree.c:822
+msgid "gitdir file points to non-existent location"
+msgstr "archivo gitdir apunta a una ubicación inexistente"
+
+#: wrapper.c:197 wrapper.c:367
 #, c-format
 msgid "could not open '%s' for reading and writing"
 msgstr "no se pudo abrir '%s' para lectura y escritura"
 
-#: wrapper.c:395 wrapper.c:596
+#: wrapper.c:398 wrapper.c:599
 #, c-format
 msgid "unable to access '%s'"
 msgstr "no es posible acceder '%s'"
 
-#: wrapper.c:604
+#: wrapper.c:607
 msgid "unable to get current working directory"
 msgstr "no es posible obtener el directorio de trabajo actual"
 
@@ -9148,79 +9552,79 @@ 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:268
+#: wt-status.c:266
 msgid "both deleted:"
 msgstr "ambos borrados:"
 
-#: wt-status.c:270
+#: wt-status.c:268
 msgid "added by us:"
 msgstr "agregado por nosotros:"
 
-#: wt-status.c:272
+#: wt-status.c:270
 msgid "deleted by them:"
 msgstr "borrados por ellos:"
 
-#: wt-status.c:274
+#: wt-status.c:272
 msgid "added by them:"
 msgstr "agregado por ellos:"
 
-#: wt-status.c:276
+#: wt-status.c:274
 msgid "deleted by us:"
 msgstr "borrado por nosotros:"
 
-#: wt-status.c:278
+#: wt-status.c:276
 msgid "both added:"
 msgstr "ambos agregados:"
 
-#: wt-status.c:280
+#: wt-status.c:278
 msgid "both modified:"
 msgstr "ambos modificados:"
 
-#: wt-status.c:290
+#: wt-status.c:288
 msgid "new file:"
 msgstr "nuevo archivo:"
 
-#: wt-status.c:292
+#: wt-status.c:290
 msgid "copied:"
 msgstr "copiado:"
 
-#: wt-status.c:294
+#: wt-status.c:292
 msgid "deleted:"
 msgstr "borrado:"
 
-#: wt-status.c:296
+#: wt-status.c:294
 msgid "modified:"
 msgstr "modificado:"
 
-#: wt-status.c:298
+#: wt-status.c:296
 msgid "renamed:"
 msgstr "renombrado:"
 
-#: wt-status.c:300
+#: wt-status.c:298
 msgid "typechange:"
 msgstr "cambio de tipo:"
 
-#: wt-status.c:302
+#: wt-status.c:300
 msgid "unknown:"
 msgstr "desconocido:"
 
-#: wt-status.c:304
+#: wt-status.c:302
 msgid "unmerged:"
 msgstr "des-fusionado:"
 
-#: wt-status.c:384
+#: wt-status.c:382
 msgid "new commits, "
 msgstr "nuevos commits, "
 
-#: wt-status.c:386
+#: wt-status.c:384
 msgid "modified content, "
 msgstr "contenido modificado, "
 
-#: wt-status.c:388
+#: wt-status.c:386
 msgid "untracked content, "
 msgstr "contenido no rastreado, "
 
-#: wt-status.c:904
+#: wt-status.c:905
 #, c-format
 msgid "Your stash currently has %d entry"
 msgid_plural "Your stash currently has %d entries"
@@ -9484,6 +9888,14 @@ msgstr "rebase interactivo en progreso; en "
 msgid "rebase in progress; onto "
 msgstr "rebase en progreso; en "
 
+#: wt-status.c:1747
+msgid "HEAD detached at "
+msgstr "HEAD desacoplada en "
+
+#: wt-status.c:1749
+msgid "HEAD detached from "
+msgstr "HEAD desacoplada de "
+
 #: wt-status.c:1752
 msgid "Not currently on any branch."
 msgstr "Actualmente no estás en ninguna rama."
@@ -9534,12 +9946,12 @@ 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:1812
+#: wt-status.c:1813
 #, c-format
 msgid "no changes added to commit\n"
 msgstr "no se agregaron cambios al commit\n"
 
-#: wt-status.c:1815
+#: wt-status.c:1817
 #, c-format
 msgid ""
 "nothing added to commit but untracked files present (use \"git add\" to "
@@ -9548,72 +9960,72 @@ msgstr ""
 "no hay nada agregado al commit pero hay archivos sin seguimiento presentes "
 "(usa \"git add\" para hacerles seguimiento)\n"
 
-#: wt-status.c:1818
+#: wt-status.c:1821
 #, 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:1821
+#: wt-status.c:1825
 #, 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:1824 wt-status.c:1829
+#: wt-status.c:1829 wt-status.c:1835
 #, c-format
 msgid "nothing to commit\n"
 msgstr "nada para hacer commit\n"
 
-#: wt-status.c:1827
+#: wt-status.c:1832
 #, 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:1831
+#: wt-status.c:1837
 #, c-format
 msgid "nothing to commit, working tree clean\n"
 msgstr "nada para hacer commit, el árbol de trabajo está limpio\n"
 
-#: wt-status.c:1944
+#: wt-status.c:1942
 msgid "No commits yet on "
 msgstr "No hay commits todavía en "
 
-#: wt-status.c:1948
+#: wt-status.c:1946
 msgid "HEAD (no branch)"
 msgstr "HEAD (sin rama)"
 
-#: wt-status.c:1979
+#: wt-status.c:1977
 msgid "different"
 msgstr "diferente"
 
-#: wt-status.c:1981 wt-status.c:1989
+#: wt-status.c:1979 wt-status.c:1987
 msgid "behind "
 msgstr "detrás "
 
-#: wt-status.c:1984 wt-status.c:1987
+#: wt-status.c:1982 wt-status.c:1985
 msgid "ahead "
 msgstr "adelante "
 
 #. TRANSLATORS: the action is e.g. "pull with rebase"
-#: wt-status.c:2509
+#: wt-status.c:2507
 #, c-format
 msgid "cannot %s: You have unstaged changes."
 msgstr "no se puede %s: Tienes cambios sin marcar."
 
-#: wt-status.c:2515
+#: wt-status.c:2513
 msgid "additionally, your index contains uncommitted changes."
 msgstr "adicionalmente, tu índice contiene cambios que no están en un commit."
 
-#: wt-status.c:2517
+#: wt-status.c:2515
 #, 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:456
+#: compat/precompose_utf8.c:58 builtin/clone.c:457
 #, c-format
 msgid "failed to unlink '%s'"
 msgstr "falló al desvincular '%s'"
@@ -9622,128 +10034,133 @@ msgstr "falló al desvincular '%s'"
 msgid "git add [<options>] [--] <pathspec>..."
 msgstr "git add [<opción>] [--] <especificación-de-ruta>..."
 
-#: builtin/add.c:88
+#: builtin/add.c:58
+#, c-format
+msgid "cannot chmod %cx '%s'"
+msgstr "no se puede aplicar chmod %cx '%s'"
+
+#: builtin/add.c:96
 #, c-format
 msgid "unexpected diff status %c"
 msgstr "diff status inesperado %c"
 
-#: builtin/add.c:93 builtin/commit.c:285
+#: builtin/add.c:101 builtin/commit.c:285
 msgid "updating files failed"
 msgstr "falló la actualización de carpetas"
 
-#: builtin/add.c:103
+#: builtin/add.c:111
 #, c-format
 msgid "remove '%s'\n"
 msgstr "eliminar '%s'\n"
 
-#: builtin/add.c:178
+#: builtin/add.c:186
 msgid "Unstaged changes after refreshing the index:"
 msgstr "Cambios fuera del área de stage tras refrescar el índice:"
 
-#: builtin/add.c:266 builtin/rev-parse.c:904
+#: builtin/add.c:280 builtin/rev-parse.c:991
 msgid "Could not read the index"
 msgstr "No se pudo leer el índice"
 
-#: builtin/add.c:277
+#: builtin/add.c:291
 #, c-format
 msgid "Could not open '%s' for writing."
 msgstr "No se pudo abrir '%s' para escritura."
 
-#: builtin/add.c:281
+#: builtin/add.c:295
 msgid "Could not write patch"
 msgstr "No se puede escribir el parche"
 
-#: builtin/add.c:284
+#: builtin/add.c:298
 msgid "editing patch failed"
 msgstr "falló la edición del parche"
 
-#: builtin/add.c:287
+#: builtin/add.c:301
 #, c-format
 msgid "Could not stat '%s'"
 msgstr "No se pudo definir '%s'"
 
-#: builtin/add.c:289
+#: builtin/add.c:303
 msgid "Empty patch. Aborted."
 msgstr "Parche vacío. Abortado."
 
-#: builtin/add.c:294
+#: builtin/add.c:308
 #, c-format
 msgid "Could not apply '%s'"
 msgstr "No se pudo aplicar '%s'"
 
-#: builtin/add.c:302
+#: builtin/add.c:316
 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:322 builtin/clean.c:904 builtin/fetch.c:164 builtin/mv.c:124
-#: builtin/prune-packed.c:14 builtin/pull.c:204 builtin/push.c:548
-#: builtin/remote.c:1421 builtin/rm.c:242 builtin/send-pack.c:165
+#: builtin/add.c:336 builtin/clean.c:904 builtin/fetch.c:169 builtin/mv.c:124
+#: builtin/prune-packed.c:14 builtin/pull.c:204 builtin/push.c:559
+#: builtin/remote.c:1427 builtin/rm.c:242 builtin/send-pack.c:190
 msgid "dry run"
 msgstr "dry run ( ejecución en seco)"
 
-#: builtin/add.c:325
+#: builtin/add.c:339
 msgid "interactive picking"
 msgstr "selección interactiva"
 
-#: builtin/add.c:326 builtin/checkout.c:1533 builtin/reset.c:308
+#: builtin/add.c:340 builtin/checkout.c:1546 builtin/reset.c:308
 msgid "select hunks interactively"
 msgstr "elegir hunks de forma interactiva"
 
-#: builtin/add.c:327
+#: builtin/add.c:341
 msgid "edit current diff and apply"
 msgstr "editar diff actual y aplicar"
 
-#: builtin/add.c:328
+#: builtin/add.c:342
 msgid "allow adding otherwise ignored files"
 msgstr "permitir agregar caso contrario ignorar archivos"
 
-#: builtin/add.c:329
+#: builtin/add.c:343
 msgid "update tracked files"
 msgstr "actualizado las carpetas rastreadas"
 
-#: builtin/add.c:330
+#: builtin/add.c:344
 msgid "renormalize EOL of tracked files (implies -u)"
 msgstr "renormalizar EOL de los archivos rastreados (implica -u)"
 
-#: builtin/add.c:331
+#: builtin/add.c:345
 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:332
+#: builtin/add.c:346
 msgid "add changes from all tracked and untracked files"
 msgstr "agregar los cambios de todas las carpetas con y sin seguimiento"
 
-#: builtin/add.c:335
+#: builtin/add.c:349
 msgid "ignore paths removed in the working tree (same as --no-all)"
 msgstr ""
 "ignorar rutas eliminadas en el árbol de trabajo (lo mismo que --no-all)"
 
-#: builtin/add.c:337
+#: builtin/add.c:351
 msgid "don't add, only refresh the index"
 msgstr "no agregar, solo actualizar el índice"
 
-#: builtin/add.c:338
+#: builtin/add.c:352
 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:339
+#: builtin/add.c:353
 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:341 builtin/update-index.c:1004
+#: builtin/add.c:355 builtin/update-index.c:1004
 msgid "override the executable bit of the listed files"
 msgstr "sobrescribir el bit ejecutable de los archivos listados"
 
-#: builtin/add.c:343
+#: builtin/add.c:357
 msgid "warn when adding an embedded repository"
 msgstr "avisar cuando se agrega un repositorio incrustado"
 
-#: builtin/add.c:345
+#: builtin/add.c:359
 msgid "backend for `git stash -p`"
 msgstr "backend para `git stash -p`"
 
-#: builtin/add.c:363
+#: builtin/add.c:377
 #, c-format
 msgid ""
 "You've added another git repository inside your current repository.\n"
@@ -9774,12 +10191,12 @@ msgstr ""
 "\n"
 "Vea \"git help submodule\" para más información."
 
-#: builtin/add.c:391
+#: builtin/add.c:405
 #, c-format
 msgid "adding embedded git repository: %s"
 msgstr "agregando repositorio embebido: %s"
 
-#: builtin/add.c:410
+#: builtin/add.c:424
 msgid ""
 "Use -f if you really want to add them.\n"
 "Turn this message off by running\n"
@@ -9789,47 +10206,47 @@ msgstr ""
 "Desactiva este mensaje ejecutando\n"
 "\"git config advice.addIgnoredFile false\""
 
-#: builtin/add.c:419
+#: builtin/add.c:433
 msgid "adding files failed"
 msgstr "falló al agregar archivos"
 
-#: builtin/add.c:447 builtin/commit.c:345
+#: builtin/add.c:461 builtin/commit.c:345
 msgid "--pathspec-from-file is incompatible with --interactive/--patch"
 msgstr "--pathspec-from-file es incompatible con --interactive/--patch"
 
-#: builtin/add.c:464
+#: builtin/add.c:478
 msgid "--pathspec-from-file is incompatible with --edit"
 msgstr "--pathspec-from-file es incompatible con --edit"
 
-#: builtin/add.c:476
+#: builtin/add.c:490
 msgid "-A and -u are mutually incompatible"
 msgstr "-A y -u son mutuamente incompatibles"
 
-#: builtin/add.c:479
+#: builtin/add.c:493
 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:483
+#: builtin/add.c:497
 #, 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:501 builtin/checkout.c:1701 builtin/commit.c:351
-#: builtin/reset.c:328 builtin/rm.c:272 builtin/stash.c:1506
+#: builtin/add.c:515 builtin/checkout.c:1714 builtin/commit.c:351
+#: builtin/reset.c:328 builtin/rm.c:272 builtin/stash.c:1569
 msgid "--pathspec-from-file is incompatible with pathspec arguments"
 msgstr "--pathspec-from-file es incompatible con argumentos de pathspec"
 
-#: builtin/add.c:508 builtin/checkout.c:1713 builtin/commit.c:357
-#: builtin/reset.c:334 builtin/rm.c:278 builtin/stash.c:1512
+#: builtin/add.c:522 builtin/checkout.c:1726 builtin/commit.c:357
+#: builtin/reset.c:334 builtin/rm.c:278 builtin/stash.c:1575
 msgid "--pathspec-file-nul requires --pathspec-from-file"
 msgstr "--pathspec-file-nul requiere --pathspec-from-file"
 
-#: builtin/add.c:512
+#: builtin/add.c:526
 #, c-format
 msgid "Nothing specified, nothing added.\n"
 msgstr "Nada especificado, nada agregado.\n"
 
-#: builtin/add.c:514
+#: builtin/add.c:528
 msgid ""
 "Maybe you wanted to say 'git add .'?\n"
 "Turn this message off by running\n"
@@ -9887,7 +10304,7 @@ msgstr "offset de zona horaria inválido"
 msgid "Patch format detection failed."
 msgstr "Falló al detectar el formato del parche."
 
-#: builtin/am.c:953 builtin/clone.c:409
+#: builtin/am.c:953 builtin/clone.c:410
 #, c-format
 msgid "failed to create directory '%s'"
 msgstr "falló al crear el directorio '%s'"
@@ -9963,12 +10380,12 @@ msgstr "Falló al fusionar en los cambios."
 msgid "applying to an empty history"
 msgstr "aplicando a un historial vacío"
 
-#: builtin/am.c:1621 builtin/am.c:1625
+#: builtin/am.c:1626 builtin/am.c:1630
 #, c-format
 msgid "cannot resume: %s does not exist."
 msgstr "no se puede continuar: %s no existe."
 
-#: builtin/am.c:1643
+#: builtin/am.c:1648
 msgid "Commit Body is:"
 msgstr "Cuerpo de commit es:"
 
@@ -9976,39 +10393,39 @@ msgstr "Cuerpo de commit es:"
 #. in your translation. The program will only accept English
 #. input at this point.
 #.
-#: builtin/am.c:1653
+#: builtin/am.c:1658
 #, c-format
 msgid "Apply? [y]es/[n]o/[e]dit/[v]iew patch/[a]ccept all: "
 msgstr "¿Aplicar? [y]es/[n]o/[e]dit/[v]iew patch/[a]ccept all: "
 
-#: builtin/am.c:1699 builtin/commit.c:395
+#: builtin/am.c:1704 builtin/commit.c:395
 msgid "unable to write index file"
 msgstr "no es posible escribir en el archivo índice"
 
-#: builtin/am.c:1703
+#: builtin/am.c:1708
 #, c-format
 msgid "Dirty index: cannot apply patches (dirty: %s)"
 msgstr "Índice sucio: no se puede aplicar parches (sucio: %s)"
 
-#: builtin/am.c:1743 builtin/am.c:1811
+#: builtin/am.c:1748 builtin/am.c:1816
 #, c-format
 msgid "Applying: %.*s"
 msgstr "Aplicando: %.*s"
 
-#: builtin/am.c:1760
+#: builtin/am.c:1765
 msgid "No changes -- Patch already applied."
 msgstr "Sin cambios -- parche ya aplicado."
 
-#: builtin/am.c:1766
+#: builtin/am.c:1771
 #, c-format
 msgid "Patch failed at %s %.*s"
 msgstr "El parche falló en %s %.*s"
 
-#: builtin/am.c:1770
+#: builtin/am.c:1775
 msgid "Use 'git am --show-current-patch=diff' to see the failed patch"
 msgstr "Use 'git am --show-current-patch=diff' para ver el parche fallido"
 
-#: builtin/am.c:1814
+#: builtin/am.c:1819
 msgid ""
 "No changes - did you forget to use 'git add'?\n"
 "If there is nothing left to stage, chances are that something else\n"
@@ -10018,7 +10435,7 @@ msgstr ""
 "Si no hay nada en el área de stage, las posibilidad es que algo mas\n"
 "ya haya introducido el mismo cambio; tal vez quieras omitir este parche."
 
-#: builtin/am.c:1821
+#: builtin/am.c:1826
 msgid ""
 "You still have unmerged paths in your index.\n"
 "You should 'git add' each file with resolved conflicts to mark them as "
@@ -10031,17 +10448,17 @@ msgstr ""
 "Se puede ejecutar `git rm` en el archivo para aceptar \"borrado por ellos\" "
 "en él."
 
-#: builtin/am.c:1928 builtin/am.c:1932 builtin/am.c:1944 builtin/reset.c:347
+#: builtin/am.c:1933 builtin/am.c:1937 builtin/am.c:1949 builtin/reset.c:347
 #: builtin/reset.c:355
 #, c-format
 msgid "Could not parse object '%s'."
 msgstr "No se pudo analizar el objeto '%s'."
 
-#: builtin/am.c:1980
+#: builtin/am.c:1985
 msgid "failed to clean index"
 msgstr "falló al limpiar el índice"
 
-#: builtin/am.c:2024
+#: builtin/am.c:2029
 msgid ""
 "You seem to have moved HEAD since the last 'am' failure.\n"
 "Not rewinding to ORIG_HEAD"
@@ -10049,156 +10466,156 @@ msgstr ""
 "Parece haber movido HEAD desde el último falló 'am'.\n"
 "No rebobinando a ORIG_HEAD"
 
-#: builtin/am.c:2131
+#: builtin/am.c:2136
 #, c-format
 msgid "Invalid value for --patch-format: %s"
 msgstr "Valor inválido para --patch-format: %s"
 
-#: builtin/am.c:2171
+#: builtin/am.c:2178
 #, c-format
 msgid "Invalid value for --show-current-patch: %s"
 msgstr "Valor inválido para --show-current-patch: %s"
 
-#: builtin/am.c:2175
+#: builtin/am.c:2182
 #, c-format
 msgid "--show-current-patch=%s is incompatible with --show-current-patch=%s"
 msgstr "--show-current-patch=%s es incompatible con --show-current-patch=%s"
 
-#: builtin/am.c:2206
+#: builtin/am.c:2213
 msgid "git am [<options>] [(<mbox> | <Maildir>)...]"
 msgstr "git am [<opciones>] [(<mbox> | <Directorio-de-correo>)...]"
 
-#: builtin/am.c:2207
+#: builtin/am.c:2214
 msgid "git am [<options>] (--continue | --skip | --abort)"
 msgstr "git am [<opciones>] (--continue | --skip | --abort)"
 
-#: builtin/am.c:2213
+#: builtin/am.c:2220
 msgid "run interactively"
 msgstr "ejecutar de manera interactiva"
 
-#: builtin/am.c:2215
+#: builtin/am.c:2222
 msgid "historical option -- no-op"
 msgstr "opción histórica -- no-op"
 
-#: builtin/am.c:2217
+#: builtin/am.c:2224
 msgid "allow fall back on 3way merging if needed"
 msgstr "permitir retroceso en fusión de 3-vías si es necesario"
 
-#: builtin/am.c:2218 builtin/init-db.c:559 builtin/prune-packed.c:16
-#: builtin/repack.c:306 builtin/stash.c:816
+#: builtin/am.c:2225 builtin/init-db.c:560 builtin/prune-packed.c:16
+#: builtin/repack.c:334 builtin/stash.c:882
 msgid "be quiet"
 msgstr "ser silencioso"
 
-#: builtin/am.c:2220
-msgid "add a Signed-off-by line to the commit message"
+#: builtin/am.c:2227
+msgid "add a Signed-off-by trailer to the commit message"
 msgstr "agregar una línea \"Firmado-por\" al mensaje del commit"
 
-#: builtin/am.c:2223
+#: builtin/am.c:2230
 msgid "recode into utf8 (default)"
 msgstr "recodificar en utf8 (default)"
 
-#: builtin/am.c:2225
+#: builtin/am.c:2232
 msgid "pass -k flag to git-mailinfo"
 msgstr "pasar flag -k a git-mailinfo"
 
-#: builtin/am.c:2227
+#: builtin/am.c:2234
 msgid "pass -b flag to git-mailinfo"
 msgstr "pasar flag -b a git-mailinfo"
 
-#: builtin/am.c:2229
+#: builtin/am.c:2236
 msgid "pass -m flag to git-mailinfo"
 msgstr "pasar flag -m a git-mailinfo"
 
-#: builtin/am.c:2231
+#: builtin/am.c:2238
 msgid "pass --keep-cr flag to git-mailsplit for mbox format"
 msgstr "pasar flag --keep-cr a git-mailsplit para formato mbox"
 
-#: builtin/am.c:2234
+#: builtin/am.c:2241
 msgid "do not pass --keep-cr flag to git-mailsplit independent of am.keepcr"
 msgstr ""
 "no pasar flag --keep-cr a git-mailsplit independientemente de am.keepcr"
 
-#: builtin/am.c:2237
+#: builtin/am.c:2244
 msgid "strip everything before a scissors line"
 msgstr "descubrir todo antes de una línea de tijeras"
 
-#: builtin/am.c:2239 builtin/am.c:2242 builtin/am.c:2245 builtin/am.c:2248
-#: builtin/am.c:2251 builtin/am.c:2254 builtin/am.c:2257 builtin/am.c:2260
-#: builtin/am.c:2266
+#: builtin/am.c:2246 builtin/am.c:2249 builtin/am.c:2252 builtin/am.c:2255
+#: builtin/am.c:2258 builtin/am.c:2261 builtin/am.c:2264 builtin/am.c:2267
+#: builtin/am.c:2273
 msgid "pass it through git-apply"
 msgstr "pasarlo a través de git-apply"
 
-#: builtin/am.c:2256 builtin/commit.c:1397 builtin/fmt-merge-msg.c:17
-#: builtin/fmt-merge-msg.c:20 builtin/grep.c:891 builtin/merge.c:252
+#: builtin/am.c:2263 builtin/commit.c:1395 builtin/fmt-merge-msg.c:17
+#: builtin/fmt-merge-msg.c:20 builtin/grep.c:904 builtin/merge.c:261
 #: builtin/pull.c:141 builtin/pull.c:200 builtin/pull.c:217
-#: builtin/rebase.c:1329 builtin/repack.c:317 builtin/repack.c:321
-#: builtin/repack.c:323 builtin/show-branch.c:650 builtin/show-ref.c:172
-#: builtin/tag.c:404 parse-options.h:154 parse-options.h:175
+#: builtin/rebase.c:1347 builtin/repack.c:345 builtin/repack.c:349
+#: builtin/repack.c:351 builtin/show-branch.c:650 builtin/show-ref.c:172
+#: builtin/tag.c:436 parse-options.h:154 parse-options.h:175
 #: parse-options.h:316
 msgid "n"
 msgstr "n"
 
-#: builtin/am.c:2262 builtin/branch.c:659 builtin/for-each-ref.c:38
-#: builtin/replace.c:556 builtin/tag.c:438 builtin/verify-tag.c:38
-#: bugreport.c:137
+#: builtin/am.c:2269 builtin/branch.c:670 builtin/bugreport.c:136
+#: builtin/for-each-ref.c:38 builtin/replace.c:556 builtin/tag.c:470
+#: builtin/verify-tag.c:38
 msgid "format"
 msgstr "formato"
 
-#: builtin/am.c:2263
+#: builtin/am.c:2270
 msgid "format the patch(es) are in"
 msgstr "formatear el parche(s)"
 
-#: builtin/am.c:2269
+#: builtin/am.c:2276
 msgid "override error message when patch failure occurs"
 msgstr "sobrescribir mensajes de error cuando fallos de parchado ocurran"
 
-#: builtin/am.c:2271
+#: builtin/am.c:2278
 msgid "continue applying patches after resolving a conflict"
 msgstr "continuar aplicando los parches tras resolver conflictos"
 
-#: builtin/am.c:2274
+#: builtin/am.c:2281
 msgid "synonyms for --continue"
 msgstr "sinónimos para --continue"
 
-#: builtin/am.c:2277
+#: builtin/am.c:2284
 msgid "skip the current patch"
 msgstr "saltar el parche actual"
 
-#: builtin/am.c:2280
-msgid "restore the original branch and abort the patching operation."
-msgstr "restaurar la rama original y abortar la operación de parchado."
+#: builtin/am.c:2287
+msgid "restore the original branch and abort the patching operation"
+msgstr "restaurar la rama original y abortar la operación de parcheo"
 
-#: builtin/am.c:2283
-msgid "abort the patching operation but keep HEAD where it is."
-msgstr "abortar la operación de parchado pero mantener HEAD donde está."
+#: builtin/am.c:2290
+msgid "abort the patching operation but keep HEAD where it is"
+msgstr "abortar la operación de parcheo pero mantener HEAD donde está"
 
-#: builtin/am.c:2287
+#: builtin/am.c:2294
 msgid "show the patch being applied"
 msgstr "muestra el parche siendo aplicado"
 
-#: builtin/am.c:2292
+#: builtin/am.c:2299
 msgid "lie about committer date"
 msgstr "mentir sobre la fecha del committer"
 
-#: builtin/am.c:2294
+#: builtin/am.c:2301
 msgid "use current timestamp for author date"
 msgstr "usar el timestamp actual para la fecha del autor"
 
-#: builtin/am.c:2296 builtin/commit-tree.c:120 builtin/commit.c:1517
-#: builtin/merge.c:289 builtin/pull.c:175 builtin/rebase.c:524
-#: builtin/rebase.c:1380 builtin/revert.c:117 builtin/tag.c:419
+#: builtin/am.c:2303 builtin/commit-tree.c:120 builtin/commit.c:1515
+#: builtin/merge.c:298 builtin/pull.c:175 builtin/rebase.c:538
+#: builtin/rebase.c:1400 builtin/revert.c:117 builtin/tag.c:451
 msgid "key-id"
 msgstr "key-id"
 
-#: builtin/am.c:2297 builtin/rebase.c:525 builtin/rebase.c:1381
+#: builtin/am.c:2304 builtin/rebase.c:539 builtin/rebase.c:1401
 msgid "GPG-sign commits"
 msgstr "Commits con firma GPG"
 
-#: builtin/am.c:2300
+#: builtin/am.c:2307
 msgid "(internal use for git-rebase)"
 msgstr "(uso interno para git-rebase)"
 
-#: builtin/am.c:2318
+#: builtin/am.c:2325
 msgid ""
 "The -b/--binary option has been a no-op for long time, and\n"
 "it will be removed. Please do not use it anymore."
@@ -10206,16 +10623,16 @@ msgstr ""
 "La opción -b/--binary ha estado deshabilitada por mucho tiempo, y\n"
 "será eliminada. Por favor no la use más."
 
-#: builtin/am.c:2325
+#: builtin/am.c:2332
 msgid "failed to read the index"
 msgstr "falló al leer el índice"
 
-#: builtin/am.c:2340
+#: builtin/am.c:2347
 #, c-format
 msgid "previous rebase directory %s still exists but mbox given."
 msgstr "directorio de rebase previo %s todavía existe en el mbox dado."
 
-#: builtin/am.c:2364
+#: builtin/am.c:2371
 #, c-format
 msgid ""
 "Stray %s directory found.\n"
@@ -10224,11 +10641,11 @@ msgstr ""
 "Directorio extraviado %s encontrado.\n"
 "Use \"git am --abort\" para borrarlo."
 
-#: builtin/am.c:2370
+#: builtin/am.c:2377
 msgid "Resolve operation not in progress, we are not resuming."
 msgstr "Operación de resolución no está en progreso, no vamos a continuar."
 
-#: builtin/am.c:2380
+#: builtin/am.c:2387
 msgid "interactive mode requires patches on the command line"
 msgstr "modo interactivo requiere parches en la línea de comando"
 
@@ -10266,43 +10683,15 @@ msgstr "git archive: error de protocolo"
 msgid "git archive: expected a flush"
 msgstr "git archive: se esperaba un flush"
 
-#: builtin/bisect--helper.c:22
-msgid "git bisect--helper --next-all [--no-checkout]"
-msgstr "git bisect--helper --next-all [--no-checkout]"
-
 #: builtin/bisect--helper.c:23
-msgid "git bisect--helper --write-terms <bad_term> <good_term>"
-msgstr "git bisect--helper --write-terms <mal_término> <buen_término>"
-
-#: builtin/bisect--helper.c:24
-msgid "git bisect--helper --bisect-clean-state"
-msgstr "git bisect--helper --bisect-clean-state"
-
-#: builtin/bisect--helper.c:25
 msgid "git bisect--helper --bisect-reset [<commit>]"
 msgstr "git bisect--helper --bisect-reset [<commit>]"
 
-#: builtin/bisect--helper.c:26
-msgid ""
-"git bisect--helper --bisect-write [--no-log] <state> <revision> <good_term> "
-"<bad_term>"
-msgstr ""
-"git bisect--helper --bisect-write [--no-log] <estado> <revision> <buen_term> "
-"<mal_term>"
-
-#: builtin/bisect--helper.c:27
-msgid ""
-"git bisect--helper --bisect-check-and-set-terms <command> <good_term> "
-"<bad_term>"
-msgstr ""
-"git bisect--helper --bisect-check-and-set-terms <comando> <buen_term> "
-"<mal_term>"
-
-#: builtin/bisect--helper.c:28
+#: builtin/bisect--helper.c:24
 msgid "git bisect--helper --bisect-next-check <good_term> <bad_term> [<term>]"
 msgstr "git bisect--helper --bisect-next-check <buen_term> <mal_term> [<term>]"
 
-#: builtin/bisect--helper.c:29
+#: builtin/bisect--helper.c:25
 msgid ""
 "git bisect--helper --bisect-terms [--term-good | --term-old | --term-bad | --"
 "term-new]"
@@ -10310,48 +10699,76 @@ msgstr ""
 "git bisect--helper --bisect-terms [--term-good | --term-old | --term-bad | --"
 "term-new]"
 
-#: builtin/bisect--helper.c:30
+#: builtin/bisect--helper.c:26
 msgid ""
-"git bisect--helper --bisect-start [--term-{old,good}=<term> --term-{new,bad}"
-"=<term>][--no-checkout] [<bad> [<good>...]] [--] [<paths>...]"
+"git bisect--helper --bisect-start [--term-{new,bad}=<term> --term-{old,good}"
+"=<term>] [--no-checkout] [--first-parent] [<bad> [<good>...]] [--] "
+"[<paths>...]"
 msgstr ""
-"git bisect--helper --bisect-start [--term-{old,good}=<término> --term-{new,"
-"bad}=<término>][--no-checkout] [<malo> [<bueno>...]] [--] [<rutas>...]"
+"git bisect--helper --bisect-start [--term-{new,bad}=<término> --term-{old,"
+"good}=<término>] [--no-checkout] [--first-parent] [<malo> [<bueno>...]] [--] "
+"[<rutas>...]"
+
+#: builtin/bisect--helper.c:28
+msgid "git bisect--helper --bisect-next"
+msgstr "git bisect--helper --bisect-next"
+
+#: builtin/bisect--helper.c:29
+msgid "git bisect--helper --bisect-state (bad|new) [<rev>]"
+msgstr "git bisect--helper --bisect-state (bad|new) [<rev>]"
+
+#: builtin/bisect--helper.c:30
+msgid "git bisect--helper --bisect-state (good|old) [<rev>...]"
+msgstr "git bisect--helper --bisect-state (good|old) [<rev>...]"
+
+#: builtin/bisect--helper.c:31
+msgid "git bisect--helper --bisect-replay <filename>"
+msgstr "git bisect--helper --bisect-replay <archivio>"
 
-#: builtin/bisect--helper.c:86
+#: builtin/bisect--helper.c:32
+msgid "git bisect--helper --bisect-skip [(<rev>|<range>)...]"
+msgstr "git bisect--helper --bisect-skip [(<rev>|<rango>)...]"
+
+#: builtin/bisect--helper.c:107
+#, c-format
+msgid "cannot open file '%s' in mode '%s'"
+msgstr "no se puede abrir archivo '%s' en modo '%s'"
+
+#: builtin/bisect--helper.c:114
+#, c-format
+msgid "could not write to file '%s'"
+msgstr "no se pudo escribir al archivo '%s'"
+
+#: builtin/bisect--helper.c:153
 #, c-format
 msgid "'%s' is not a valid term"
 msgstr "'%s' no es un término válido"
 
-#: builtin/bisect--helper.c:90
+#: builtin/bisect--helper.c:157
 #, c-format
 msgid "can't use the builtin command '%s' as a term"
 msgstr "no se puede usar el comando nativo '%s' como un término"
 
-#: builtin/bisect--helper.c:100
+#: builtin/bisect--helper.c:167
 #, c-format
 msgid "can't change the meaning of the term '%s'"
 msgstr "no se puede cambiar el significado del término '%s'"
 
-#: builtin/bisect--helper.c:111
+#: builtin/bisect--helper.c:177
 msgid "please use two different terms"
 msgstr "por favor use dos términos diferentes"
 
-#: builtin/bisect--helper.c:118
-msgid "could not open the file BISECT_TERMS"
-msgstr "no se pudo abrir el archivo BISECT_TERMS"
-
-#: builtin/bisect--helper.c:155
+#: builtin/bisect--helper.c:193
 #, c-format
 msgid "We are not bisecting.\n"
 msgstr "No estamos bisecando.\n"
 
-#: builtin/bisect--helper.c:163
+#: builtin/bisect--helper.c:201
 #, c-format
 msgid "'%s' is not a valid commit"
 msgstr "'%s' no es un commit válido"
 
-#: builtin/bisect--helper.c:172
+#: builtin/bisect--helper.c:210
 #, c-format
 msgid ""
 "could not check out original HEAD '%s'. Try 'git bisect reset <commit>'."
@@ -10359,27 +10776,27 @@ msgstr ""
 "no se pudo hacer check out al HEAD original '%s'. Intenta 'git bisect reset "
 "<commit>'."
 
-#: builtin/bisect--helper.c:216
+#: builtin/bisect--helper.c:254
 #, c-format
 msgid "Bad bisect_write argument: %s"
 msgstr "Mal argumento bisect_write: %s"
 
-#: builtin/bisect--helper.c:221
+#: builtin/bisect--helper.c:259
 #, c-format
 msgid "couldn't get the oid of the rev '%s'"
 msgstr "no se puede obtener el oid de la rev '%s'"
 
-#: builtin/bisect--helper.c:233
+#: builtin/bisect--helper.c:271
 #, c-format
 msgid "couldn't open the file '%s'"
 msgstr "no se pudo abrir el archivo '%s'"
 
-#: builtin/bisect--helper.c:259
+#: builtin/bisect--helper.c:297
 #, c-format
 msgid "Invalid command: you're currently in a %s/%s bisect"
 msgstr "Comando inválido: actualmente se encuentra en un bisect %s/%s"
 
-#: builtin/bisect--helper.c:286
+#: builtin/bisect--helper.c:324
 #, c-format
 msgid ""
 "You need to give me at least one %s and %s revision.\n"
@@ -10388,7 +10805,7 @@ msgstr ""
 "Tienes que dar al menos un %s y un %s revision.\n"
 "Se puede ver \"git bisect %s\" y \"git bisect %s\" para eso."
 
-#: builtin/bisect--helper.c:290
+#: builtin/bisect--helper.c:328
 #, c-format
 msgid ""
 "You need to start by \"git bisect start\".\n"
@@ -10399,7 +10816,7 @@ msgstr ""
 "Después tienes que entregar al menos un %s y una revision %s.\n"
 "Puedes usar \"git bisect %s\" y \"git bisect %s\" para eso."
 
-#: builtin/bisect--helper.c:310
+#: builtin/bisect--helper.c:348
 #, c-format
 msgid "bisecting only with a %s commit"
 msgstr "haciendo bisect solo con un commit %s"
@@ -10408,15 +10825,15 @@ msgstr "haciendo bisect solo con un commit %s"
 #. translation. The program will only accept English input
 #. at this point.
 #.
-#: builtin/bisect--helper.c:318
+#: builtin/bisect--helper.c:356
 msgid "Are you sure [Y/n]? "
 msgstr "¿Estás seguro [Y/n]? "
 
-#: builtin/bisect--helper.c:379
+#: builtin/bisect--helper.c:417
 msgid "no terms defined"
 msgstr "no hay términos definidos"
 
-#: builtin/bisect--helper.c:382
+#: builtin/bisect--helper.c:420
 #, c-format
 msgid ""
 "Your current terms are %s for the old state\n"
@@ -10425,7 +10842,7 @@ msgstr ""
 "Tus términos actuales son %s para el estado viejo\n"
 "y %s para el estado nuevo.\n"
 
-#: builtin/bisect--helper.c:392
+#: builtin/bisect--helper.c:430
 #, c-format
 msgid ""
 "invalid argument %s for 'git bisect terms'.\n"
@@ -10434,267 +10851,308 @@ msgstr ""
 "argumento inválido %s para 'git bisect terms'.\n"
 "Las opciones soportadas son: --term-good|--term-old y --term-bad|--term-new."
 
-#: builtin/bisect--helper.c:460 builtin/bisect--helper.c:473
+#: builtin/bisect--helper.c:497 builtin/bisect--helper.c:1014
+msgid "revision walk setup failed\n"
+msgstr "la configuración del recorrido de revisión falló\n"
+
+#: builtin/bisect--helper.c:519
+#, c-format
+msgid "could not open '%s' for appending"
+msgstr "no se pudo abrir '%s' en modo append"
+
+#: builtin/bisect--helper.c:638 builtin/bisect--helper.c:651
 msgid "'' is not a valid term"
 msgstr "'' no es un término válido"
 
-#: builtin/bisect--helper.c:483
+#: builtin/bisect--helper.c:661
 #, c-format
 msgid "unrecognized option: '%s'"
 msgstr "opción desconocida: '%s'"
 
-#: builtin/bisect--helper.c:487
+#: builtin/bisect--helper.c:665
 #, c-format
 msgid "'%s' does not appear to be a valid revision"
 msgstr "'%s' no parece ser una revisión válida"
 
-#: builtin/bisect--helper.c:519
+#: builtin/bisect--helper.c:696
 msgid "bad HEAD - I need a HEAD"
 msgstr "mal HEAD - Necesito un HEAD"
 
-#: builtin/bisect--helper.c:534
+#: builtin/bisect--helper.c:711
 #, c-format
 msgid "checking out '%s' failed. Try 'git bisect start <valid-branch>'."
 msgstr ""
 "error al hacer checkout '%s'. Intente 'git bisect start <rama-válida>'."
 
-#: builtin/bisect--helper.c:555
+#: builtin/bisect--helper.c:732
 msgid "won't bisect on cg-seek'ed tree"
 msgstr "no se bisecará en un árbol con cg-seek"
 
-#: builtin/bisect--helper.c:558
+#: builtin/bisect--helper.c:735
 msgid "bad HEAD - strange symbolic ref"
 msgstr "mal HEAD - ref simbólico extraño"
 
-#: builtin/bisect--helper.c:582
+#: builtin/bisect--helper.c:755
 #, c-format
 msgid "invalid ref: '%s'"
 msgstr "ref inválido: '%s'"
 
-#: builtin/bisect--helper.c:638
-msgid "perform 'git bisect next'"
-msgstr "realiza 'git bisect next'"
+#: builtin/bisect--helper.c:813
+msgid "You need to start by \"git bisect start\"\n"
+msgstr "Debes iniciar con \"git bisect start\"\n"
 
-#: builtin/bisect--helper.c:640
-msgid "write the terms to .git/BISECT_TERMS"
-msgstr "escribe los términos a .git/BISECT_TERMS"
+#. TRANSLATORS: Make sure to include [Y] and [n] in your
+#. translation. The program will only accept English input
+#. at this point.
+#.
+#: builtin/bisect--helper.c:824
+msgid "Do you want me to do it for you [Y/n]? "
+msgstr "¿Quieres que lo haga por ti [Y/n]? "
 
-#: builtin/bisect--helper.c:642
-msgid "cleanup the bisection state"
-msgstr "limpiar el estado de bisección"
+#: builtin/bisect--helper.c:842
+msgid "Please call `--bisect-state` with at least one argument"
+msgstr "Llame a `--bisect-state` con al menos un argumento"
 
-#: builtin/bisect--helper.c:644
-msgid "check for expected revs"
-msgstr "revisar por revs esperados"
+#: builtin/bisect--helper.c:855
+#, c-format
+msgid "'git bisect %s' can take only one argument."
+msgstr "'git bisect %s' solo puede tomar un argumento."
 
-#: builtin/bisect--helper.c:646
-msgid "reset the bisection state"
-msgstr "reiniciar el estado de bisect"
+#: builtin/bisect--helper.c:867 builtin/bisect--helper.c:878
+#, c-format
+msgid "Bad rev input: %s"
+msgstr "Mala entrada rev: %s"
 
-#: builtin/bisect--helper.c:648
-msgid "write out the bisection state in BISECT_LOG"
-msgstr "escribir el estado de bisect en BISECT_LOG"
+#: builtin/bisect--helper.c:912
+msgid "We are not bisecting."
+msgstr "No estamos bisecando."
+
+#: builtin/bisect--helper.c:962
+#, c-format
+msgid "'%s'?? what are you talking about?"
+msgstr "'%s'?? ¿De qué estás hablando?"
 
-#: builtin/bisect--helper.c:650
-msgid "check and set terms in a bisection state"
-msgstr "revisar y configurar los terms en el estado de bisect"
+#: builtin/bisect--helper.c:974
+#, c-format
+msgid "cannot read file '%s' for replaying"
+msgstr "no se puede leer '%s' para reproducir"
+
+#: builtin/bisect--helper.c:1047
+msgid "reset the bisection state"
+msgstr "reiniciar el estado de bisect"
 
-#: builtin/bisect--helper.c:652
+#: builtin/bisect--helper.c:1049
 msgid "check whether bad or good terms exist"
 msgstr "revisar si existen términos malos o buenos"
 
-#: builtin/bisect--helper.c:654
+#: builtin/bisect--helper.c:1051
 msgid "print out the bisect terms"
 msgstr "imprimir los terms del bisect"
 
-#: builtin/bisect--helper.c:656
+#: builtin/bisect--helper.c:1053
 msgid "start the bisect session"
 msgstr "comenzar la sesión de bisect"
 
-#: builtin/bisect--helper.c:658
-msgid "update BISECT_HEAD instead of checking out the current commit"
-msgstr "actualiza BISECT_HEAD en lugar de revisar el commit actual"
+#: builtin/bisect--helper.c:1055
+msgid "find the next bisection commit"
+msgstr "encontrar el siguiente commit de bisección"
 
-#: builtin/bisect--helper.c:660
-msgid "no log for BISECT_WRITE"
-msgstr "no hay log para BISECT_WRITE"
+#: builtin/bisect--helper.c:1057
+msgid "mark the state of ref (or refs)"
+msgstr "marcar el estado de ref (o refs)"
 
-#: builtin/bisect--helper.c:678
-msgid "--write-terms requires two arguments"
-msgstr "--write-terms requiere dos argumentos"
+#: builtin/bisect--helper.c:1059
+msgid "list the bisection steps so far"
+msgstr "listar los pasos de bisección hasta ahora"
 
-#: builtin/bisect--helper.c:682
-msgid "--bisect-clean-state requires no arguments"
-msgstr "--bisect-clean-state no requiere argumentos"
+#: builtin/bisect--helper.c:1061
+msgid "replay the bisection process from the given file"
+msgstr "reproducir el proceso de bisección del archivo dado"
 
-#: builtin/bisect--helper.c:689
-msgid "--bisect-reset requires either no argument or a commit"
-msgstr "--bisect-reset requiere un commit o ningún argumento"
+#: builtin/bisect--helper.c:1063
+msgid "skip some commits for checkout"
+msgstr "saltar algunos commits para checkout"
 
-#: builtin/bisect--helper.c:693
-msgid "--bisect-write requires either 4 or 5 arguments"
-msgstr "--bisect-write requiere entre 4 o 5 argumentos"
+#: builtin/bisect--helper.c:1065
+msgid "no log for BISECT_WRITE"
+msgstr "no hay log para BISECT_WRITE"
 
-#: builtin/bisect--helper.c:699
-msgid "--check-and-set-terms requires 3 arguments"
-msgstr "--bisect-clean-state no requiere argumentos"
+#: builtin/bisect--helper.c:1080
+msgid "--bisect-reset requires either no argument or a commit"
+msgstr "--bisect-reset requiere un commit o ningún argumento"
 
-#: builtin/bisect--helper.c:705
+#: builtin/bisect--helper.c:1085
 msgid "--bisect-next-check requires 2 or 3 arguments"
 msgstr "--bisect-next-check requiere 2 o 3 argumentos"
 
-#: builtin/bisect--helper.c:711
+#: builtin/bisect--helper.c:1091
 msgid "--bisect-terms requires 0 or 1 argument"
 msgstr "--bisect-terms requiere 0 o 1 argumentos"
 
-#: builtin/blame.c:31
+#: builtin/bisect--helper.c:1100
+msgid "--bisect-next requires 0 arguments"
+msgstr "--bisect-next requiere 0 argumentos"
+
+#: builtin/bisect--helper.c:1111
+msgid "--bisect-log requires 0 arguments"
+msgstr "--bisect-log requiere 0 argumentos"
+
+#: builtin/bisect--helper.c:1116
+msgid "no logfile given"
+msgstr "ningún logfile proporcionado"
+
+#: builtin/blame.c:32
 msgid "git blame [<options>] [<rev-opts>] [<rev>] [--] <file>"
 msgstr "git blame [<opciones>] [<opciones-rev>] [<revision>] [--] <archivo>"
 
-#: builtin/blame.c:36
+#: builtin/blame.c:37
 msgid "<rev-opts> are documented in git-rev-list(1)"
 msgstr "<rev-opts> están documentadas en git-rev-list(1)"
 
-#: builtin/blame.c:409
+#: builtin/blame.c:410
 #, c-format
 msgid "expecting a color: %s"
 msgstr "esperando un color: %s"
 
-#: builtin/blame.c:416
+#: builtin/blame.c:417
 msgid "must end with a color"
 msgstr "tiene que terminar con un color"
 
-#: builtin/blame.c:729
+#: builtin/blame.c:728
 #, c-format
 msgid "invalid color '%s' in color.blame.repeatedLines"
 msgstr "color inválido '%s' en color.blame.repeatedLines"
 
-#: builtin/blame.c:747
+#: builtin/blame.c:746
 msgid "invalid value for blame.coloring"
 msgstr "valor inválido para blame.coloring"
 
-#: builtin/blame.c:822
+#: builtin/blame.c:845
 #, c-format
 msgid "cannot find revision %s to ignore"
 msgstr "no se pudo encontrar revision %s para ignorar"
 
-#: builtin/blame.c:844
-msgid "Show blame entries as we find them, incrementally"
-msgstr "Mostrar las entradas blame como las encontramos, incrementalmente"
+#: builtin/blame.c:867
+msgid "show blame entries as we find them, incrementally"
+msgstr "mostrar las entradas blame como las encontramos, incrementalmente"
 
-#: builtin/blame.c:845
-msgid "Show blank SHA-1 for boundary commits (Default: off)"
-msgstr "Mostrar SHA-1 en blanco para commits extremos (Default: off)"
+#: builtin/blame.c:868
+msgid "do not show object names of boundary commits (Default: off)"
+msgstr "no mostrar nombres de objetos de commits extremos (Default: off)"
 
-#: builtin/blame.c:846
-msgid "Do not treat root commits as boundaries (Default: off)"
-msgstr "No tratar commits raíces como extremos (Default: off)"
+#: builtin/blame.c:869
+msgid "do not treat root commits as boundaries (Default: off)"
+msgstr "no tratar commits raíces como extremos (Default: off)"
 
-#: builtin/blame.c:847
-msgid "Show work cost statistics"
-msgstr "Mostrar estadísticas de costo de trabajo"
+#: builtin/blame.c:870
+msgid "show work cost statistics"
+msgstr "mostrar estadísticas de costo de trabajo"
 
-#: builtin/blame.c:848
-msgid "Force progress reporting"
-msgstr "Forzar el reporte de progreso"
+#: builtin/blame.c:871 builtin/checkout.c:1503 builtin/clone.c:92
+#: builtin/commit-graph.c:84 builtin/commit-graph.c:222 builtin/fetch.c:175
+#: builtin/merge.c:297 builtin/multi-pack-index.c:27 builtin/pull.c:119
+#: builtin/push.c:575 builtin/send-pack.c:198
+msgid "force progress reporting"
+msgstr "forzar el reporte de progreso"
 
-#: builtin/blame.c:849
-msgid "Show output score for blame entries"
-msgstr "Mostrar la puntuación de salida de las entradas de blame"
+#: builtin/blame.c:872
+msgid "show output score for blame entries"
+msgstr "mostrar la puntuación de salida de las entradas de blame"
 
-#: builtin/blame.c:850
-msgid "Show original filename (Default: auto)"
-msgstr "Mostrar nombre original del archivo (Default: auto)"
+#: builtin/blame.c:873
+msgid "show original filename (Default: auto)"
+msgstr "mostrar nombre original del archivo (Default: auto)"
 
-#: builtin/blame.c:851
-msgid "Show original linenumber (Default: off)"
-msgstr "Mostrar número de línea original (Default: off)"
+#: builtin/blame.c:874
+msgid "show original linenumber (Default: off)"
+msgstr "mostrar número de línea original (Default: off)"
 
-#: builtin/blame.c:852
-msgid "Show in a format designed for machine consumption"
-msgstr "Mostrar en un formato diseñado para consumo de máquina"
+#: builtin/blame.c:875
+msgid "show in a format designed for machine consumption"
+msgstr "mostrar en un formato diseñado para consumo de máquina"
 
-#: builtin/blame.c:853
-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:876
+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:854
-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:877
+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:855
-msgid "Show raw timestamp (Default: off)"
-msgstr "Mostrar timestamp en formato raw (Default: off)"
+#: builtin/blame.c:878
+msgid "show raw timestamp (Default: off)"
+msgstr "mostrar timestamp en formato raw (Default: off)"
 
-#: builtin/blame.c:856
-msgid "Show long commit SHA1 (Default: off)"
-msgstr "Mostrar SHA1 del commit en formato largo (Default: off)"
+#: builtin/blame.c:879
+msgid "show long commit SHA1 (Default: off)"
+msgstr "mostrar SHA1 del commit en formato largo (Default: off)"
 
-#: builtin/blame.c:857
-msgid "Suppress author name and timestamp (Default: off)"
-msgstr "Suprimir nombre del autor y timestamp (Default: off)"
+#: builtin/blame.c:880
+msgid "suppress author name and timestamp (Default: off)"
+msgstr "suprimir nombre del autor y timestamp (Default: off)"
 
-#: builtin/blame.c:858
-msgid "Show author email instead of name (Default: off)"
-msgstr "Mostrar en cambio el email del autor (Default: off)"
+#: builtin/blame.c:881
+msgid "show author email instead of name (Default: off)"
+msgstr "mostrar en cambio el email del autor (Default: off)"
 
-#: builtin/blame.c:859
-msgid "Ignore whitespace differences"
-msgstr "Ignorar diferencias de espacios en blanco"
+#: builtin/blame.c:882
+msgid "ignore whitespace differences"
+msgstr "ignorar diferencias de espacios en blanco"
 
-#: builtin/blame.c:860 builtin/log.c:1721
+#: builtin/blame.c:883 builtin/log.c:1812
 msgid "rev"
 msgstr "rev"
 
-#: builtin/blame.c:860
-msgid "Ignore <rev> when blaming"
-msgstr "Ignorar <rev> durante el blame"
+#: builtin/blame.c:883
+msgid "ignore <rev> when blaming"
+msgstr "ignorar <rev> durante el blame"
 
-#: builtin/blame.c:861
-msgid "Ignore revisions from <file>"
-msgstr "Ignorar revisiones de <archivo>"
+#: builtin/blame.c:884
+msgid "ignore revisions from <file>"
+msgstr "ignorar revisiones de <archivo>"
 
-#: builtin/blame.c:862
+#: builtin/blame.c:885
 msgid "color redundant metadata from previous line differently"
 msgstr "colorear metadata redundante de líneas previas de manera diferente"
 
-#: builtin/blame.c:863
+#: builtin/blame.c:886
 msgid "color lines by age"
 msgstr "colorear líneas por edad"
 
-#: builtin/blame.c:864
-msgid "Spend extra cycles to find better match"
-msgstr "Ocupo más ciclos para encontrar mejoras resultados"
+#: builtin/blame.c:887
+msgid "spend extra cycles to find better match"
+msgstr "ocupar más ciclos para encontrar mejoras resultados"
 
-#: builtin/blame.c:865
-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:888
+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:866
-msgid "Use <file>'s contents as the final image"
-msgstr "Usar contenido de <archivo> como imagen final"
+#: builtin/blame.c:889
+msgid "use <file>'s contents as the final image"
+msgstr "usar contenido de <archivo> como imagen final"
 
-#: builtin/blame.c:867 builtin/blame.c:868
+#: builtin/blame.c:890 builtin/blame.c:891
 msgid "score"
 msgstr "puntaje"
 
-#: builtin/blame.c:867
-msgid "Find line copies within and across files"
-msgstr "Encontrar copias de líneas entre y a través de archivos"
+#: builtin/blame.c:890
+msgid "find line copies within and across files"
+msgstr "encontrar copias de líneas entre y a través de archivos"
 
-#: builtin/blame.c:868
-msgid "Find line movements within and across files"
-msgstr "Encontrar movimientos de líneas entre y a través de archivos"
+#: builtin/blame.c:891
+msgid "find line movements within and across files"
+msgstr "encontrar movimientos de líneas entre y a través de archivos"
 
-#: builtin/blame.c:869
-msgid "n,m"
-msgstr "n,m"
+#: builtin/blame.c:892
+msgid "range"
+msgstr "rango"
 
-#: builtin/blame.c:869
-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:893
+msgid "process only line range <start>,<end> or function :<funcname>"
+msgstr ""
+"Procesar solo el rango de líneas <inicio>,<fin> o función: <nombre-función>"
 
-#: builtin/blame.c:921
+#: builtin/blame.c:945
 msgid "--progress can't be used with --incremental or porcelain formats"
 msgstr "--progress no puede ser usado con --incremental o formatos porcelana"
 
@@ -10706,24 +11164,24 @@ msgstr "--progress no puede ser usado con --incremental o formatos porcelana"
 #. your language may need more or fewer display
 #. columns.
 #.
-#: builtin/blame.c:972
+#: builtin/blame.c:996
 msgid "4 years, 11 months ago"
 msgstr "hace 4 años, 11 meses"
 
-#: builtin/blame.c:1087
+#: builtin/blame.c:1112
 #, 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:1133
+#: builtin/blame.c:1157
 msgid "Blaming lines"
 msgstr "Blaming a líneas"
 
 #: builtin/branch.c:29
-msgid "git branch [<options>] [-r | -a] [--merged | --no-merged]"
-msgstr "git branch [<opciones>] [-r | -a] [--merged | --no-merged]"
+msgid "git branch [<options>] [-r | -a] [--merged] [--no-merged]"
+msgstr "git branch [<opciones>] [-r | -a] [--merged] [--no-merged]"
 
 #: builtin/branch.c:30
 msgid "git branch [<options>] [-l] [-f] <branch-name> [<start-point>]"
@@ -10785,121 +11243,111 @@ msgstr ""
 msgid "Update of config-file failed"
 msgstr "Falló de actualización de config-file"
 
-#: builtin/branch.c:220
+#: builtin/branch.c:223
 msgid "cannot use -a with -d"
 msgstr "no se puede usar-a con -d"
 
-#: builtin/branch.c:226
+#: builtin/branch.c:230
 msgid "Couldn't look up commit object for HEAD"
 msgstr "No se pudo revisar el objeto commit para HEAD"
 
-#: builtin/branch.c:240
+#: builtin/branch.c:244
 #, c-format
 msgid "Cannot delete branch '%s' checked out at '%s'"
 msgstr "No se puede borrar rama '%s' que cuenta con checkout en '%s'"
 
-#: builtin/branch.c:255
+#: builtin/branch.c:259
 #, c-format
 msgid "remote-tracking branch '%s' not found."
 msgstr "rama de rastreo remoto '%s' no encontrada."
 
-#: builtin/branch.c:256
+#: builtin/branch.c:260
 #, c-format
 msgid "branch '%s' not found."
 msgstr "rama '%s' no encontrada."
 
-#: builtin/branch.c:271
-#, c-format
-msgid "Error deleting remote-tracking branch '%s'"
-msgstr "Error al eliminar la rama de rastreo remota '%s'"
-
-#: builtin/branch.c:272
-#, c-format
-msgid "Error deleting branch '%s'"
-msgstr "Error al eliminar la rama '%s'"
-
-#: builtin/branch.c:279
+#: builtin/branch.c:291
 #, c-format
 msgid "Deleted remote-tracking branch %s (was %s).\n"
 msgstr "Eliminada la rama de rastreo remota %s (era %s).\n"
 
-#: builtin/branch.c:280
+#: builtin/branch.c:292
 #, c-format
 msgid "Deleted branch %s (was %s).\n"
 msgstr "Eliminada la rama %s (era %s)..\n"
 
-#: builtin/branch.c:429 builtin/tag.c:61
+#: builtin/branch.c:438 builtin/tag.c:61
 msgid "unable to parse format string"
 msgstr "no es posible analizar el string de formato"
 
-#: builtin/branch.c:460
+#: builtin/branch.c:469
 msgid "could not resolve HEAD"
 msgstr "no se pudo resolver HEAD"
 
-#: builtin/branch.c:466
+#: builtin/branch.c:475
 #, c-format
 msgid "HEAD (%s) points outside of refs/heads/"
 msgstr "HEAD (%s) apunta fuera de refs/heads/"
 
-#: builtin/branch.c:481
+#: builtin/branch.c:490
 #, c-format
 msgid "Branch %s is being rebased at %s"
 msgstr "Rama %s está siendo rebasada en %s"
 
-#: builtin/branch.c:485
+#: builtin/branch.c:494
 #, c-format
 msgid "Branch %s is being bisected at %s"
 msgstr "Rama %s está siendo bisecada en %s"
 
-#: builtin/branch.c:502
+#: builtin/branch.c:511
 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:504
+#: builtin/branch.c:513
 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:515
+#: builtin/branch.c:524
 #, c-format
 msgid "Invalid branch name: '%s'"
 msgstr "Nombre de rama inválido: '%s'"
 
-#: builtin/branch.c:542
+#: builtin/branch.c:553
 msgid "Branch rename failed"
 msgstr "Cambio de nombre de rama fallido"
 
-#: builtin/branch.c:544
+#: builtin/branch.c:555
 msgid "Branch copy failed"
 msgstr "Copiado de rama fallido"
 
-#: builtin/branch.c:548
+#: builtin/branch.c:559
 #, c-format
 msgid "Created a copy of a misnamed branch '%s'"
 msgstr "Copia creada de la rama malnombrada '%s'"
 
-#: builtin/branch.c:551
+#: builtin/branch.c:562
 #, c-format
 msgid "Renamed a misnamed branch '%s' away"
 msgstr "Rama mal llamada '%s' renombrada"
 
-#: builtin/branch.c:557
+#: builtin/branch.c:568
 #, 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:566
+#: builtin/branch.c:577
 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:568
+#: builtin/branch.c:579
 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:584
+#: builtin/branch.c:595
 #, c-format
 msgid ""
 "Please edit the description for the branch\n"
@@ -10910,180 +11358,180 @@ msgstr ""
 "%s\n"
 "Las líneas que comiencen con '%c' serán eliminadas.\n"
 
-#: builtin/branch.c:618
+#: builtin/branch.c:629
 msgid "Generic options"
 msgstr "Opciones genéricas"
 
-#: builtin/branch.c:620
+#: builtin/branch.c:631
 msgid "show hash and subject, give twice for upstream branch"
 msgstr "mostrar hash y tema, dar dos veces para rama upstream"
 
-#: builtin/branch.c:621
+#: builtin/branch.c:632
 msgid "suppress informational messages"
 msgstr "suprimir mensajes informativos"
 
-#: builtin/branch.c:622
+#: builtin/branch.c:633
 msgid "set up tracking mode (see git-pull(1))"
 msgstr "configurando modo tracking (mirar git-pull(1))"
 
-#: builtin/branch.c:624
+#: builtin/branch.c:635
 msgid "do not use"
 msgstr "no usar"
 
-#: builtin/branch.c:626 builtin/rebase.c:520
+#: builtin/branch.c:637 builtin/rebase.c:534
 msgid "upstream"
 msgstr "upstream"
 
-#: builtin/branch.c:626
+#: builtin/branch.c:637
 msgid "change the upstream info"
 msgstr "cambiar info de upstream"
 
-#: builtin/branch.c:627
+#: builtin/branch.c:638
 msgid "unset the upstream info"
 msgstr "desconfigurando la info de upstream"
 
-#: builtin/branch.c:628
+#: builtin/branch.c:639
 msgid "use colored output"
 msgstr "usar salida con colores"
 
-#: builtin/branch.c:629
+#: builtin/branch.c:640
 msgid "act on remote-tracking branches"
 msgstr "actuar en ramas de traqueo remoto"
 
-#: builtin/branch.c:631 builtin/branch.c:633
+#: builtin/branch.c:642 builtin/branch.c:644
 msgid "print only branches that contain the commit"
 msgstr "mostrar solo ramas que contienen el commit"
 
-#: builtin/branch.c:632 builtin/branch.c:634
+#: builtin/branch.c:643 builtin/branch.c:645
 msgid "print only branches that don't contain the commit"
 msgstr "mostrar solo ramas que no contienen el commit"
 
-#: builtin/branch.c:637
+#: builtin/branch.c:648
 msgid "Specific git-branch actions:"
 msgstr "Acciones específicas de git-branch:"
 
-#: builtin/branch.c:638
+#: builtin/branch.c:649
 msgid "list both remote-tracking and local branches"
 msgstr "listar ramas de remote-tracking y locales"
 
-#: builtin/branch.c:640
+#: builtin/branch.c:651
 msgid "delete fully merged branch"
 msgstr "borrar ramas totalmente fusionadas"
 
-#: builtin/branch.c:641
+#: builtin/branch.c:652
 msgid "delete branch (even if not merged)"
 msgstr "borrar rama (incluso si no está fusionada)"
 
-#: builtin/branch.c:642
+#: builtin/branch.c:653
 msgid "move/rename a branch and its reflog"
 msgstr "mover/renombrar una rama y su reflog"
 
-#: builtin/branch.c:643
+#: builtin/branch.c:654
 msgid "move/rename a branch, even if target exists"
 msgstr "mover/renombrar una rama, incluso si el destino existe"
 
-#: builtin/branch.c:644
+#: builtin/branch.c:655
 msgid "copy a branch and its reflog"
 msgstr "copiar una rama y su reflog"
 
-#: builtin/branch.c:645
+#: builtin/branch.c:656
 msgid "copy a branch, even if target exists"
 msgstr "copiar una rama, incluso si el objetivo existe"
 
-#: builtin/branch.c:646
+#: builtin/branch.c:657
 msgid "list branch names"
 msgstr "listar nombres de ramas"
 
-#: builtin/branch.c:647
+#: builtin/branch.c:658
 msgid "show current branch name"
 msgstr "muestra el nombre de branch actual"
 
-#: builtin/branch.c:648
+#: builtin/branch.c:659
 msgid "create the branch's reflog"
 msgstr "crea el reflog de la rama"
 
-#: builtin/branch.c:650
+#: builtin/branch.c:661
 msgid "edit the description for the branch"
 msgstr "edita la descripción de la rama"
 
-#: builtin/branch.c:651
+#: builtin/branch.c:662
 msgid "force creation, move/rename, deletion"
 msgstr "fuerza la creación,movimiento/renombrado,borrado"
 
-#: builtin/branch.c:652
+#: builtin/branch.c:663
 msgid "print only branches that are merged"
 msgstr "muestra solo ramas que han sido fusionadas"
 
-#: builtin/branch.c:653
+#: builtin/branch.c:664
 msgid "print only branches that are not merged"
 msgstr "muestra solo ramas que no han sido fusionadas"
 
-#: builtin/branch.c:654
+#: builtin/branch.c:665
 msgid "list branches in columns"
 msgstr "muestra las ramas en columnas"
 
-#: builtin/branch.c:656 builtin/for-each-ref.c:42 builtin/notes.c:415
+#: builtin/branch.c:667 builtin/for-each-ref.c:42 builtin/notes.c:415
 #: builtin/notes.c:418 builtin/notes.c:581 builtin/notes.c:584
-#: builtin/tag.c:434
+#: builtin/tag.c:466
 msgid "object"
 msgstr "objeto"
 
-#: builtin/branch.c:657
+#: builtin/branch.c:668
 msgid "print only branches of the object"
 msgstr "imprimir sólo las ramas del objeto"
 
-#: builtin/branch.c:658 builtin/for-each-ref.c:48 builtin/tag.c:441
+#: builtin/branch.c:669 builtin/for-each-ref.c:48 builtin/tag.c:473
 msgid "sorting and filtering are case insensitive"
 msgstr "ordenamiento y filtrado son case-insensitive"
 
-#: builtin/branch.c:659 builtin/for-each-ref.c:38 builtin/tag.c:439
+#: builtin/branch.c:670 builtin/for-each-ref.c:38 builtin/tag.c:471
 #: builtin/verify-tag.c:38
 msgid "format to use for the output"
 msgstr "formato para usar para el output"
 
-#: builtin/branch.c:682 builtin/clone.c:789
+#: builtin/branch.c:693 builtin/clone.c:790
 msgid "HEAD not found below refs/heads!"
 msgstr "¡HEAD no encontrado abajo de refs/heads!"
 
-#: builtin/branch.c:706
+#: builtin/branch.c:717
 msgid "--column and --verbose are incompatible"
 msgstr "--column y --verbose son incompatibles"
 
-#: builtin/branch.c:721 builtin/branch.c:775 builtin/branch.c:784
+#: builtin/branch.c:732 builtin/branch.c:788 builtin/branch.c:797
 msgid "branch name required"
 msgstr "se necesita el nombre de la rama"
 
-#: builtin/branch.c:751
+#: builtin/branch.c:764
 msgid "Cannot give description to detached HEAD"
 msgstr "No se puede dar descripción al HEAD desacoplado"
 
-#: builtin/branch.c:756
+#: builtin/branch.c:769
 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:763
+#: builtin/branch.c:776
 #, c-format
 msgid "No commit on branch '%s' yet."
 msgstr "Aún no hay commits en la rama '%s'."
 
-#: builtin/branch.c:766
+#: builtin/branch.c:779
 #, c-format
 msgid "No branch named '%s'."
 msgstr "No hay ninguna rama llamada '%s'."
 
-#: builtin/branch.c:781
+#: builtin/branch.c:794
 msgid "too many branches for a copy operation"
 msgstr "demasiadas ramas para una operación de copiado"
 
-#: builtin/branch.c:790
+#: builtin/branch.c:803
 msgid "too many arguments for a rename operation"
 msgstr "demasiados argumentos para una operación de renombrado"
 
-#: builtin/branch.c:795
+#: builtin/branch.c:808
 msgid "too many arguments to set new upstream"
 msgstr "demasiados argumentos para configurar un nuevo upstream"
 
-#: builtin/branch.c:799
+#: builtin/branch.c:812
 #, c-format
 msgid ""
 "could not set upstream of HEAD to %s when it does not point to any branch."
@@ -11091,32 +11539,32 @@ msgstr ""
 "no se pudo configurar upstream de HEAD a %s cuando este no apunta a ninguna "
 "rama."
 
-#: builtin/branch.c:802 builtin/branch.c:825
+#: builtin/branch.c:815 builtin/branch.c:838
 #, c-format
 msgid "no such branch '%s'"
 msgstr "no hay tal rama '%s'"
 
-#: builtin/branch.c:806
+#: builtin/branch.c:819
 #, c-format
 msgid "branch '%s' does not exist"
 msgstr "la rama '%s' no existe"
 
-#: builtin/branch.c:819
+#: builtin/branch.c:832
 msgid "too many arguments to unset upstream"
 msgstr "demasiados argumentos para desconfigurar upstream"
 
-#: builtin/branch.c:823
+#: builtin/branch.c:836
 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:829
+#: builtin/branch.c:842
 #, c-format
 msgid "Branch '%s' has no upstream information"
 msgstr "Rama '%s' no tiene información de upstream"
 
-#: builtin/branch.c:839
+#: builtin/branch.c:852
 msgid ""
 "The -a, and -r, options to 'git branch' do not take a branch name.\n"
 "Did you mean to use: -a|-r --list <pattern>?"
@@ -11124,7 +11572,7 @@ msgstr ""
 "Las opciones -a, y -r, de 'git branch' no toman un nombre de rama.\n"
 "¿Quisiste usar: -a|-r --list <patrón>?"
 
-#: builtin/branch.c:843
+#: builtin/branch.c:856
 msgid ""
 "the '--set-upstream' option is no longer supported. Please use '--track' or "
 "'--set-upstream-to' instead."
@@ -11132,6 +11580,104 @@ msgstr ""
 "la opción '--set-upstream' ya no es soportada. Considere usar '--track' o '--"
 "set-upstream-to' en cambio."
 
+#: builtin/bugreport.c:15
+msgid "git version:\n"
+msgstr "versión de git:\n"
+
+#: builtin/bugreport.c:21
+#, c-format
+msgid "uname() failed with error '%s' (%d)\n"
+msgstr "uname() falló con error '%s' (%d)\n"
+
+#: builtin/bugreport.c:31
+msgid "compiler info: "
+msgstr "información del compilador: "
+
+#: builtin/bugreport.c:34
+msgid "libc info: "
+msgstr "información de libc: "
+
+#: builtin/bugreport.c:80
+msgid "not run from a git repository - no hooks to show\n"
+msgstr "no ejecutado desde un repositorio git - no hay hooks para mostrar\n"
+
+#: builtin/bugreport.c:90
+msgid "git bugreport [-o|--output-directory <file>] [-s|--suffix <format>]"
+msgstr ""
+"git bugreport [-o|--output-directory <archivo>] [-s|--suffix <formato>]"
+
+#: builtin/bugreport.c:97
+msgid ""
+"Thank you for filling out a Git bug report!\n"
+"Please answer the following questions to help us understand your issue.\n"
+"\n"
+"What did you do before the bug happened? (Steps to reproduce your issue)\n"
+"\n"
+"What did you expect to happen? (Expected behavior)\n"
+"\n"
+"What happened instead? (Actual behavior)\n"
+"\n"
+"What's different between what you expected and what actually happened?\n"
+"\n"
+"Anything else you want to add:\n"
+"\n"
+"Please review the rest of the bug report below.\n"
+"You can delete any lines you don't wish to share.\n"
+msgstr ""
+"¡Gracias por prepara un reporte de bug de Git!\n"
+"Por favor responde las siguientes preguntas para ayudarnos a entender el "
+"problema.\n"
+"\n"
+"¿Qué hiciste antes de que sucediera el bug? (Pasos para reproducir el "
+"problema)\n"
+"\n"
+"¿Qué esperabas que sucediera? (Comportamiento esperado)\n"
+"\n"
+"¿Qué sucedio en lugar de eso? (Comportamiento real)\n"
+"\n"
+"¿Qué es diferente entre lo que esperabas y lo que pasó?\n"
+"\n"
+"Cualquier cosa que quieras agregar:\n"
+"\n"
+"Por favor revisa el resto del reporte abajo.\n"
+"Puedes borrar cualquier línea que no desees compartir.\n"
+
+#: builtin/bugreport.c:135
+msgid "specify a destination for the bugreport file"
+msgstr "especificar el destino para el archivo de reporte de bug"
+
+#: builtin/bugreport.c:137
+msgid "specify a strftime format suffix for the filename"
+msgstr "especificar el sufijo formato strftime para el nombre del archivo"
+
+#: builtin/bugreport.c:159
+#, c-format
+msgid "could not create leading directories for '%s'"
+msgstr "no se pudo crear directorios principales para '%s'"
+
+#: builtin/bugreport.c:166
+msgid "System Info"
+msgstr "Información del sistema"
+
+#: builtin/bugreport.c:169
+msgid "Enabled Hooks"
+msgstr "Activar Hooks"
+
+#: builtin/bugreport.c:176
+#, c-format
+msgid "couldn't create a new file at '%s'"
+msgstr "no se pudo crear un archivo en '%s'"
+
+#: builtin/bugreport.c:179
+#, c-format
+msgid "unable to write to %s"
+msgstr "no es posible escribir en %s"
+
+#: builtin/bugreport.c:189
+#, c-format
+msgid "Created new report at '%s'.\n"
+msgstr "Crear un nuevo reporte en '%s'.\n"
+
 #: builtin/bundle.c:15 builtin/bundle.c:23
 msgid "git bundle create [<options>] <file> <git-rev-list args>"
 msgstr "git bundle create [<opciones>] <file> <git-rev-list args>"
@@ -11148,44 +11694,48 @@ msgstr "git bundle list-heads <archivo> [<nombre-de-ref>...]"
 msgid "git bundle unbundle <file> [<refname>...]"
 msgstr "git bundle unbundle <archivo> [<nombre-de-ref>...]"
 
-#: builtin/bundle.c:66 builtin/pack-objects.c:3448
+#: builtin/bundle.c:67 builtin/pack-objects.c:3495
 msgid "do not show progress meter"
 msgstr "no mostrar medidor de progreso"
 
-#: builtin/bundle.c:68 builtin/pack-objects.c:3450
+#: builtin/bundle.c:69 builtin/pack-objects.c:3497
 msgid "show progress meter"
 msgstr "mostrar medidor de progreso"
 
-#: builtin/bundle.c:70 builtin/pack-objects.c:3452
+#: builtin/bundle.c:71 builtin/pack-objects.c:3499
 msgid "show progress meter during object writing phase"
 msgstr "mostrar medidor de progreso durante la fase de escritura de objeto"
 
-#: builtin/bundle.c:73 builtin/pack-objects.c:3455
+#: builtin/bundle.c:74 builtin/pack-objects.c:3502
 msgid "similar to --all-progress when progress meter is shown"
 msgstr "similar a --all-progress cuando medidor de progreso es mostrado"
 
-#: builtin/bundle.c:93
+#: builtin/bundle.c:76
+msgid "specify bundle format version"
+msgstr "especificar la versión del formato del paquete"
+
+#: builtin/bundle.c:96
 msgid "Need a repository to create a bundle."
 msgstr "Se necesita un repositorio para agrupar."
 
-#: builtin/bundle.c:104
+#: builtin/bundle.c:107
 msgid "do not show bundle details"
 msgstr "no mostrar detalles del bundle"
 
-#: builtin/bundle.c:119
+#: builtin/bundle.c:122
 #, c-format
 msgid "%s is okay\n"
 msgstr "%s está bien\n"
 
-#: builtin/bundle.c:160
+#: builtin/bundle.c:163
 msgid "Need a repository to unbundle."
 msgstr "Se necesita un repositorio para desagrupar."
 
-#: builtin/bundle.c:168 builtin/remote.c:1686
+#: builtin/bundle.c:171 builtin/remote.c:1700
 msgid "be verbose; must be placed before a subcommand"
 msgstr "ser verboso; tiene que ser agregado antes de un subcomando"
 
-#: builtin/bundle.c:190 builtin/remote.c:1717
+#: builtin/bundle.c:193 builtin/remote.c:1731
 #, c-format
 msgid "Unknown subcommand: %s"
 msgstr "Sub-comando desconocido: %s"
@@ -11238,7 +11788,7 @@ msgstr "para objetos blob, ejecuta textconv en el contenido del objeto"
 msgid "for blob objects, run filters on object's content"
 msgstr "para objetos blob, ejecuta filters en el contenido del objeto"
 
-#: builtin/cat-file.c:648 git-submodule.sh:958
+#: builtin/cat-file.c:648
 msgid "blob"
 msgstr "blob"
 
@@ -11299,8 +11849,8 @@ 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:21 builtin/checkout.c:1486 builtin/gc.c:537
-#: builtin/worktree.c:561
+#: builtin/check-ignore.c:21 builtin/checkout.c:1499 builtin/gc.c:549
+#: builtin/worktree.c:489
 msgid "suppress progress reporting"
 msgstr "suprimir el reporte de progreso"
 
@@ -11353,56 +11903,56 @@ msgstr "no es posible analizar el contacto: %s"
 msgid "no contacts specified"
 msgstr "contactos no especificados"
 
-#: builtin/checkout-index.c:131
+#: builtin/checkout-index.c:152
 msgid "git checkout-index [<options>] [--] [<file>...]"
 msgstr "git checkout-index [<opciones>] [--] [<archivo>...]"
 
-#: builtin/checkout-index.c:148
+#: builtin/checkout-index.c:169
 msgid "stage should be between 1 and 3 or all"
 msgstr "stage tiene que estar entre 1 y 3 o all"
 
-#: builtin/checkout-index.c:164
+#: builtin/checkout-index.c:186
 msgid "check out all files in the index"
 msgstr "revisar todos los archivos en el índice"
 
-#: builtin/checkout-index.c:165
+#: builtin/checkout-index.c:187
 msgid "force overwrite of existing files"
 msgstr "forzar sobreescritura de los archivos existentes"
 
-#: builtin/checkout-index.c:167
+#: builtin/checkout-index.c:189
 msgid "no warning for existing files and files not in index"
 msgstr ""
 "no hay advertencias para los archivos existentes y los archivos no están en "
 "el índice"
 
-#: builtin/checkout-index.c:169
+#: builtin/checkout-index.c:191
 msgid "don't checkout new files"
 msgstr "no revisar archivos nuevos"
 
-#: builtin/checkout-index.c:171
+#: builtin/checkout-index.c:193
 msgid "update stat information in the index file"
 msgstr "actualizar información de estado en el archivo índice"
 
-#: builtin/checkout-index.c:175
+#: builtin/checkout-index.c:197
 msgid "read list of paths from the standard input"
 msgstr "leer lista de rutas desde standard input"
 
-#: builtin/checkout-index.c:177
+#: builtin/checkout-index.c:199
 msgid "write the content to temporary files"
 msgstr "escribir el contenido en un archivo temporal"
 
-#: builtin/checkout-index.c:178 builtin/column.c:31
-#: builtin/submodule--helper.c:1400 builtin/submodule--helper.c:1403
-#: builtin/submodule--helper.c:1411 builtin/submodule--helper.c:1909
-#: builtin/worktree.c:754
+#: builtin/checkout-index.c:200 builtin/column.c:31
+#: builtin/submodule--helper.c:1824 builtin/submodule--helper.c:1827
+#: builtin/submodule--helper.c:1835 builtin/submodule--helper.c:2333
+#: builtin/worktree.c:717
 msgid "string"
 msgstr "string"
 
-#: builtin/checkout-index.c:179
+#: builtin/checkout-index.c:201
 msgid "when creating files, prepend <string>"
 msgstr "cuando cree archivos, anteponer <string>"
 
-#: builtin/checkout-index.c:181
+#: builtin/checkout-index.c:203
 msgid "copy out the files from named stage"
 msgstr "copiar los archivos del stage nombrado"
 
@@ -11437,83 +11987,83 @@ msgstr "ruta '%s' no tiene su versión"
 msgid "path '%s' does not have all necessary versions"
 msgstr "ruta '%s' no tiene todas las versiones necesarias"
 
-#: builtin/checkout.c:256
+#: builtin/checkout.c:258
 #, c-format
 msgid "path '%s' does not have necessary versions"
 msgstr "ruta '%s' no tiene versiones necesarias"
 
-#: builtin/checkout.c:274
+#: builtin/checkout.c:275
 #, c-format
 msgid "path '%s': cannot merge"
 msgstr "ruta '%s': no se puede fusionar"
 
-#: builtin/checkout.c:290
+#: builtin/checkout.c:291
 #, c-format
 msgid "Unable to add merge result for '%s'"
 msgstr "Incapaz de agregar resultados de fusión a '%s'"
 
-#: builtin/checkout.c:395
+#: builtin/checkout.c:396
 #, c-format
 msgid "Recreated %d merge conflict"
 msgid_plural "Recreated %d merge conflicts"
 msgstr[0] "Recreado %d conflicto de merge"
 msgstr[1] "Recreados %d conflictos de merge"
 
-#: builtin/checkout.c:400
+#: builtin/checkout.c:401
 #, c-format
 msgid "Updated %d path from %s"
 msgid_plural "Updated %d paths from %s"
 msgstr[0] "Actualizada %d ruta para %s"
 msgstr[1] "Actualizadas %d rutas para %s"
 
-#: builtin/checkout.c:407
+#: builtin/checkout.c:408
 #, c-format
 msgid "Updated %d path from the index"
 msgid_plural "Updated %d paths from the index"
 msgstr[0] "Actualizada %d ruta desde el index"
 msgstr[1] "Actualizadas %d rutas desde el index"
 
-#: builtin/checkout.c:430 builtin/checkout.c:433 builtin/checkout.c:436
-#: builtin/checkout.c:440
+#: builtin/checkout.c:431 builtin/checkout.c:434 builtin/checkout.c:437
+#: builtin/checkout.c:441
 #, c-format
 msgid "'%s' cannot be used with updating paths"
 msgstr "'%s' no puede ser usada con rutas actualizadas"
 
-#: builtin/checkout.c:443 builtin/checkout.c:446
+#: builtin/checkout.c:444 builtin/checkout.c:447
 #, c-format
 msgid "'%s' cannot be used with %s"
 msgstr "'%s' no puede ser usado con %s"
 
-#: builtin/checkout.c:450
+#: builtin/checkout.c:451
 #, c-format
 msgid "Cannot update paths and switch to branch '%s' at the same time."
 msgstr "No se puede actualizar rutas y cambiar a la rama '%s' al mismo tiempo."
 
-#: builtin/checkout.c:454
+#: builtin/checkout.c:455
 #, c-format
 msgid "neither '%s' or '%s' is specified"
 msgstr "ni '%s' o '%s' están especificados"
 
-#: builtin/checkout.c:458
+#: builtin/checkout.c:459
 #, c-format
 msgid "'%s' must be used when '%s' is not specified"
 msgstr "'%s' tiene que ser usado cuando '%s' no es especificado"
 
-#: builtin/checkout.c:463 builtin/checkout.c:468
+#: builtin/checkout.c:464 builtin/checkout.c:469
 #, c-format
 msgid "'%s' or '%s' cannot be used with %s"
 msgstr "'%s' o '%s' no puede ser usado con %s"
 
-#: builtin/checkout.c:527 builtin/checkout.c:534
+#: builtin/checkout.c:543 builtin/checkout.c:550
 #, c-format
 msgid "path '%s' is unmerged"
 msgstr "ruta '%s' no esta fusionada"
 
-#: builtin/checkout.c:702
+#: builtin/checkout.c:718
 msgid "you need to resolve your current index first"
 msgstr "necesitas resolver tu índice actual primero"
 
-#: builtin/checkout.c:756
+#: builtin/checkout.c:772
 #, c-format
 msgid ""
 "cannot continue with staged changes in the following files:\n"
@@ -11522,50 +12072,50 @@ msgstr ""
 "no se puede continuar con los cambios en stage en los siguientes archivos:\n"
 "%s"
 
-#: builtin/checkout.c:859
+#: builtin/checkout.c:865
 #, c-format
 msgid "Can not do reflog for '%s': %s\n"
 msgstr "No se puede hacer reflog para '%s': %s\n"
 
-#: builtin/checkout.c:901
+#: builtin/checkout.c:907
 msgid "HEAD is now at"
 msgstr "HEAD está ahora en"
 
-#: builtin/checkout.c:905 builtin/clone.c:720
+#: builtin/checkout.c:911 builtin/clone.c:721 t/helper/test-fast-rebase.c:202
 msgid "unable to update HEAD"
 msgstr "no es posible actualizar  HEAD"
 
-#: builtin/checkout.c:909
+#: builtin/checkout.c:915
 #, c-format
 msgid "Reset branch '%s'\n"
 msgstr "Reiniciar rama '%s'\n"
 
-#: builtin/checkout.c:912
+#: builtin/checkout.c:918
 #, c-format
 msgid "Already on '%s'\n"
 msgstr "Ya en '%s'\n"
 
-#: builtin/checkout.c:916
+#: builtin/checkout.c:922
 #, c-format
 msgid "Switched to and reset branch '%s'\n"
 msgstr "Rama reiniciada y cambiada a '%s'\n"
 
-#: builtin/checkout.c:918 builtin/checkout.c:1342
+#: builtin/checkout.c:924 builtin/checkout.c:1355
 #, c-format
 msgid "Switched to a new branch '%s'\n"
 msgstr "Cambiado a nueva rama '%s'\n"
 
-#: builtin/checkout.c:920
+#: builtin/checkout.c:926
 #, c-format
 msgid "Switched to branch '%s'\n"
 msgstr "Cambiado a rama '%s'\n"
 
-#: builtin/checkout.c:971
+#: builtin/checkout.c:977
 #, c-format
 msgid " ... and %d more.\n"
 msgstr " ... y %d más.\n"
 
-#: builtin/checkout.c:977
+#: builtin/checkout.c:983
 #, c-format
 msgid ""
 "Warning: you are leaving %d commit behind, not connected to\n"
@@ -11588,7 +12138,7 @@ msgstr[1] ""
 "\n"
 "%s\n"
 
-#: builtin/checkout.c:996
+#: builtin/checkout.c:1002
 #, c-format
 msgid ""
 "If you want to keep it by creating a new branch, this may be a good time\n"
@@ -11615,19 +12165,19 @@ msgstr[1] ""
 " git branch <nombre-de-rama> %s\n"
 "\n"
 
-#: builtin/checkout.c:1031
+#: builtin/checkout.c:1037
 msgid "internal error in revision walk"
 msgstr "error interno en camino de revisión"
 
-#: builtin/checkout.c:1035
+#: builtin/checkout.c:1041
 msgid "Previous HEAD position was"
 msgstr "La posición previa de HEAD era"
 
-#: builtin/checkout.c:1075 builtin/checkout.c:1337
+#: builtin/checkout.c:1081 builtin/checkout.c:1350
 msgid "You are on a branch yet to be born"
 msgstr "Estás en una rama por nacer"
 
-#: builtin/checkout.c:1150
+#: builtin/checkout.c:1163
 #, c-format
 msgid ""
 "'%s' could be both a local file and a tracking branch.\n"
@@ -11636,7 +12186,7 @@ msgstr ""
 "'%s' puede ser tanto un archivo local como una rama de rastreo.\n"
 "Por favor use -- (y opcionalmente --no-guess) para desambiguar"
 
-#: builtin/checkout.c:1157
+#: builtin/checkout.c:1170
 msgid ""
 "If you meant to check out a remote tracking branch on, e.g. 'origin',\n"
 "you can do so by fully qualifying the name with the --track option:\n"
@@ -11657,51 +12207,51 @@ msgstr ""
 "de nombre <nombre> remota, como 'origin', considera configurar\n"
 "checkout.defaultRemote=origin en tu configuración."
 
-#: builtin/checkout.c:1167
+#: builtin/checkout.c:1180
 #, c-format
 msgid "'%s' matched multiple (%d) remote tracking branches"
 msgstr "'%s' concordó con multiples (%d) ramas de rastreo remoto"
 
-#: builtin/checkout.c:1233
+#: builtin/checkout.c:1246
 msgid "only one reference expected"
 msgstr "solo una referencia esperada"
 
-#: builtin/checkout.c:1250
+#: builtin/checkout.c:1263
 #, c-format
 msgid "only one reference expected, %d given."
 msgstr "solo una referencia esperada, %d entregadas."
 
-#: builtin/checkout.c:1296 builtin/worktree.c:342 builtin/worktree.c:510
+#: builtin/checkout.c:1309 builtin/worktree.c:270 builtin/worktree.c:438
 #, c-format
 msgid "invalid reference: %s"
 msgstr "referencia inválida: %s"
 
-#: builtin/checkout.c:1309 builtin/checkout.c:1675
+#: builtin/checkout.c:1322 builtin/checkout.c:1688
 #, c-format
 msgid "reference is not a tree: %s"
 msgstr "la referencia no es n árbol: %s"
 
-#: builtin/checkout.c:1356
+#: builtin/checkout.c:1369
 #, c-format
 msgid "a branch is expected, got tag '%s'"
 msgstr "se esperaba un branch, se obtuvo tag '%s'"
 
-#: builtin/checkout.c:1358
+#: builtin/checkout.c:1371
 #, c-format
 msgid "a branch is expected, got remote branch '%s'"
 msgstr "se espera una rama, se obtuvo una rama remota '%s'"
 
-#: builtin/checkout.c:1359 builtin/checkout.c:1367
+#: builtin/checkout.c:1372 builtin/checkout.c:1380
 #, c-format
 msgid "a branch is expected, got '%s'"
 msgstr "se esperaba branch, se obuto '%s'"
 
-#: builtin/checkout.c:1362
+#: builtin/checkout.c:1375
 #, c-format
 msgid "a branch is expected, got commit '%s'"
 msgstr "se espera una rama, se obtuvo commit '%s'"
 
-#: builtin/checkout.c:1378
+#: builtin/checkout.c:1391
 msgid ""
 "cannot switch branch while merging\n"
 "Consider \"git merge --quit\" or \"git worktree add\"."
@@ -11709,7 +12259,7 @@ msgstr ""
 "no se puede cambiar de branch durante un merge\n"
 "Considera \"git merge --quit\" o \"git worktree add\"."
 
-#: builtin/checkout.c:1382
+#: builtin/checkout.c:1395
 msgid ""
 "cannot switch branch in the middle of an am session\n"
 "Consider \"git am --quit\" or \"git worktree add\"."
@@ -11717,7 +12267,7 @@ msgstr ""
 "no se puede cambiar de branch en medio de una sesión de am\n"
 "Considera \"git am --quit\" o \"git worktree add\"."
 
-#: builtin/checkout.c:1386
+#: builtin/checkout.c:1399
 msgid ""
 "cannot switch branch while rebasing\n"
 "Consider \"git rebase --quit\" or \"git worktree add\"."
@@ -11725,7 +12275,7 @@ msgstr ""
 "no se puede cambiar de branch durante un rebase\n"
 "Considera \"git rebase --quit\" o \"git worktree add\"."
 
-#: builtin/checkout.c:1390
+#: builtin/checkout.c:1403
 msgid ""
 "cannot switch branch while cherry-picking\n"
 "Consider \"git cherry-pick --quit\" or \"git worktree add\"."
@@ -11733,7 +12283,7 @@ msgstr ""
 "no se puede cambiar de branch durante un cherry-pick\n"
 "Considera \"git cherry-pick --quit\" o \"git worktree add\"."
 
-#: builtin/checkout.c:1394
+#: builtin/checkout.c:1407
 msgid ""
 "cannot switch branch while reverting\n"
 "Consider \"git revert --quit\" or \"git worktree add\"."
@@ -11741,144 +12291,137 @@ msgstr ""
 "no se puede cambiar de branch durante un revert\n"
 "Considera \"git revert --quit\" o \"git worktree add\"."
 
-#: builtin/checkout.c:1398
+#: builtin/checkout.c:1411
 msgid "you are switching branch while bisecting"
 msgstr "estás cambiando ramas durante un bisect"
 
-#: builtin/checkout.c:1405
+#: builtin/checkout.c:1418
 msgid "paths cannot be used with switching branches"
 msgstr "rutas no pueden ser usadas con cambios de rama"
 
-#: builtin/checkout.c:1408 builtin/checkout.c:1412 builtin/checkout.c:1416
+#: builtin/checkout.c:1421 builtin/checkout.c:1425 builtin/checkout.c:1429
 #, c-format
 msgid "'%s' cannot be used with switching branches"
 msgstr "'%s' no puede ser usado con cambios de ramas"
 
-#: builtin/checkout.c:1420 builtin/checkout.c:1423 builtin/checkout.c:1426
-#: builtin/checkout.c:1431 builtin/checkout.c:1436
+#: builtin/checkout.c:1433 builtin/checkout.c:1436 builtin/checkout.c:1439
+#: builtin/checkout.c:1444 builtin/checkout.c:1449
 #, c-format
 msgid "'%s' cannot be used with '%s'"
 msgstr "'%s' no puede ser usado con '%s'"
 
-#: builtin/checkout.c:1433
+#: builtin/checkout.c:1446
 #, c-format
 msgid "'%s' cannot take <start-point>"
 msgstr "'%s' no puede tomar <punto de partida>"
 
-#: builtin/checkout.c:1441
+#: builtin/checkout.c:1454
 #, 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:1448
+#: builtin/checkout.c:1461
 msgid "missing branch or commit argument"
 msgstr "falta branch o commit como argumento"
 
-#: builtin/checkout.c:1490 builtin/clone.c:91 builtin/commit-graph.c:82
-#: builtin/commit-graph.c:189 builtin/fetch.c:168 builtin/merge.c:288
-#: builtin/multi-pack-index.c:27 builtin/pull.c:119 builtin/push.c:561
-#: builtin/send-pack.c:173
-msgid "force progress reporting"
-msgstr "forzar el reporte de progreso"
-
-#: builtin/checkout.c:1491
+#: builtin/checkout.c:1504
 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:1492 builtin/log.c:1709 parse-options.h:322
+#: builtin/checkout.c:1505 builtin/log.c:1799 parse-options.h:322
 msgid "style"
 msgstr "estilo"
 
-#: builtin/checkout.c:1493
+#: builtin/checkout.c:1506
 msgid "conflict style (merge or diff3)"
 msgstr "conflicto de estilos (merge o diff3)"
 
-#: builtin/checkout.c:1505 builtin/worktree.c:558
+#: builtin/checkout.c:1518 builtin/worktree.c:486
 msgid "detach HEAD at named commit"
 msgstr "desacoplar HEAD en el commit nombrado"
 
-#: builtin/checkout.c:1506
+#: builtin/checkout.c:1519
 msgid "set upstream info for new branch"
 msgstr "configurar info de upstream para una rama nueva"
 
-#: builtin/checkout.c:1508
+#: builtin/checkout.c:1521
 msgid "force checkout (throw away local modifications)"
 msgstr "forzar el checkout (descartar modificaciones locales)"
 
-#: builtin/checkout.c:1510
+#: builtin/checkout.c:1523
 msgid "new-branch"
 msgstr "nueva-rama"
 
-#: builtin/checkout.c:1510
+#: builtin/checkout.c:1523
 msgid "new unparented branch"
 msgstr "nueva rama no emparentada"
 
-#: builtin/checkout.c:1512 builtin/merge.c:292
+#: builtin/checkout.c:1525 builtin/merge.c:301
 msgid "update ignored files (default)"
 msgstr "actualizar archivos ignorados (default)"
 
-#: builtin/checkout.c:1515
+#: builtin/checkout.c:1528
 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:1528
+#: builtin/checkout.c:1541
 msgid "checkout our version for unmerged files"
 msgstr "hacer checkout a  nuestra versión para archivos sin fusionar"
 
-#: builtin/checkout.c:1531
+#: builtin/checkout.c:1544
 msgid "checkout their version for unmerged files"
 msgstr "hacer checkout a su versión para los archivos sin fusionar"
 
-#: builtin/checkout.c:1535
+#: builtin/checkout.c:1548
 msgid "do not limit pathspecs to sparse entries only"
 msgstr "no limitar pathspecs a dispersar entradas solamente"
 
-#: builtin/checkout.c:1590
+#: builtin/checkout.c:1603
 #, c-format
 msgid "-%c, -%c and --orphan are mutually exclusive"
 msgstr "-%c, -%c y --orphan son mutuamente exclusivas"
 
-#: builtin/checkout.c:1594
+#: builtin/checkout.c:1607
 msgid "-p and --overlay are mutually exclusive"
 msgstr "-p y --overlay son mutuamente exclusivas"
 
-#: builtin/checkout.c:1631
+#: builtin/checkout.c:1644
 msgid "--track needs a branch name"
 msgstr "--track necesita el nombre de una rama"
 
-#: builtin/checkout.c:1636
+#: builtin/checkout.c:1649
 #, c-format
 msgid "missing branch name; try -%c"
 msgstr "falta nombre de rama; prueba -%c"
 
-#: builtin/checkout.c:1668
+#: builtin/checkout.c:1681
 #, c-format
 msgid "could not resolve %s"
 msgstr "no se pudo resolver %s"
 
-#: builtin/checkout.c:1684
+#: builtin/checkout.c:1697
 msgid "invalid path specification"
 msgstr "especificación de ruta inválida"
 
-#: builtin/checkout.c:1691
+#: builtin/checkout.c:1704
 #, 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:1695
+#: builtin/checkout.c:1708
 #, 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:1704
+#: builtin/checkout.c:1717
 msgid "--pathspec-from-file is incompatible with --detach"
 msgstr "--pathspec-from-file es incompatible con --detach"
 
-#: builtin/checkout.c:1707 builtin/reset.c:325 builtin/stash.c:1503
+#: builtin/checkout.c:1720 builtin/reset.c:325 builtin/stash.c:1566
 msgid "--pathspec-from-file is incompatible with --patch"
 msgstr "--pathspec-from-file es incompatible con --patch"
 
-#: builtin/checkout.c:1718
+#: builtin/checkout.c:1733
 msgid ""
 "git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
 "checking out of the index."
@@ -11886,70 +12429,70 @@ msgstr ""
 "git checkout: --ours/--theirs, --force y --merge son incompatibles cuando\n"
 "se revisa fuera del índice."
 
-#: builtin/checkout.c:1723
+#: builtin/checkout.c:1738
 msgid "you must specify path(s) to restore"
 msgstr "debes especificar path(s) para restaurar"
 
-#: builtin/checkout.c:1749 builtin/checkout.c:1751 builtin/checkout.c:1800
-#: builtin/checkout.c:1802 builtin/clone.c:121 builtin/remote.c:170
-#: builtin/remote.c:172 builtin/submodule--helper.c:2295 builtin/worktree.c:554
-#: builtin/worktree.c:556
+#: builtin/checkout.c:1764 builtin/checkout.c:1766 builtin/checkout.c:1815
+#: builtin/checkout.c:1817 builtin/clone.c:122 builtin/remote.c:170
+#: builtin/remote.c:172 builtin/submodule--helper.c:2719 builtin/worktree.c:482
+#: builtin/worktree.c:484
 msgid "branch"
 msgstr "rama"
 
-#: builtin/checkout.c:1750
+#: builtin/checkout.c:1765
 msgid "create and checkout a new branch"
 msgstr "crear y hacer checkout a una nueva rama"
 
-#: builtin/checkout.c:1752
+#: builtin/checkout.c:1767
 msgid "create/reset and checkout a branch"
 msgstr "crear/reiniciar y hacer checkout a una rama"
 
-#: builtin/checkout.c:1753
+#: builtin/checkout.c:1768
 msgid "create reflog for new branch"
 msgstr "crear un reflog para una nueva rama"
 
-#: builtin/checkout.c:1755
+#: builtin/checkout.c:1770
 msgid "second guess 'git checkout <no-such-branch>' (default)"
 msgstr "adivinar segunda opción 'git checkout <no-hay-tal-rama>' (default)"
 
-#: builtin/checkout.c:1756
+#: builtin/checkout.c:1771
 msgid "use overlay mode (default)"
 msgstr "usar modo overlay (default)"
 
-#: builtin/checkout.c:1801
+#: builtin/checkout.c:1816
 msgid "create and switch to a new branch"
 msgstr "crear y hacer switch a una nueva rama"
 
-#: builtin/checkout.c:1803
+#: builtin/checkout.c:1818
 msgid "create/reset and switch to a branch"
 msgstr "crear/reiniciar y hacer switch a una rama"
 
-#: builtin/checkout.c:1805
+#: builtin/checkout.c:1820
 msgid "second guess 'git switch <no-such-branch>'"
 msgstr "adivinar segunda opción 'git checkout <no-hay-tal-rama>'"
 
-#: builtin/checkout.c:1807
+#: builtin/checkout.c:1822
 msgid "throw away local modifications"
 msgstr "descartar modificaciones locales"
 
-#: builtin/checkout.c:1841
+#: builtin/checkout.c:1856
 msgid "which tree-ish to checkout from"
 msgstr "de qué árbol hacer el checkout"
 
-#: builtin/checkout.c:1843
+#: builtin/checkout.c:1858
 msgid "restore the index"
 msgstr "restaurar el index"
 
-#: builtin/checkout.c:1845
+#: builtin/checkout.c:1860
 msgid "restore the working tree (default)"
 msgstr "restaurar el árbol de trabajo (default)"
 
-#: builtin/checkout.c:1847
+#: builtin/checkout.c:1862
 msgid "ignore unmerged entries"
 msgstr "ignorar entradas no fusionadas"
 
-#: builtin/checkout.c:1848
+#: builtin/checkout.c:1863
 msgid "use overlay mode"
 msgstr "usar modo overlay"
 
@@ -11989,7 +12532,7 @@ msgstr "falló al borrar %s"
 msgid "could not lstat %s\n"
 msgstr "no se pudo lstat %s\n"
 
-#: builtin/clean.c:302 git-add--interactive.perl:595
+#: builtin/clean.c:302 git-add--interactive.perl:593
 #, c-format
 msgid ""
 "Prompt help:\n"
@@ -12002,7 +12545,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:604
+#: builtin/clean.c:306 git-add--interactive.perl:602
 #, c-format
 msgid ""
 "Prompt help:\n"
@@ -12023,8 +12566,8 @@ msgstr ""
 "*          - escoger todos los objetos\n"
 "           - (vacío) terminar selección\n"
 
-#: builtin/clean.c:521 git-add--interactive.perl:570
-#: git-add--interactive.perl:575
+#: builtin/clean.c:521 git-add--interactive.perl:568
+#: git-add--interactive.perl:573
 #, c-format, perl-format
 msgid "Huh (%s)?\n"
 msgstr "¿Ahh (%s)?\n"
@@ -12094,8 +12637,8 @@ msgid "remove whole directories"
 msgstr "borrar directorios completos"
 
 #: builtin/clean.c:909 builtin/describe.c:565 builtin/describe.c:567
-#: builtin/grep.c:909 builtin/log.c:182 builtin/log.c:184
-#: builtin/ls-files.c:558 builtin/name-rev.c:526 builtin/name-rev.c:528
+#: builtin/grep.c:922 builtin/log.c:184 builtin/log.c:186
+#: builtin/ls-files.c:573 builtin/name-rev.c:526 builtin/name-rev.c:528
 #: builtin/show-ref.c:179
 msgid "pattern"
 msgstr "patrón"
@@ -12136,163 +12679,163 @@ msgstr "-x y -X no pueden ser usadas juntas"
 msgid "git clone [<options>] [--] <repo> [<dir>]"
 msgstr "git clone [<opciones>] [--] <repo> [<directorio>]"
 
-#: builtin/clone.c:93
+#: builtin/clone.c:94
 msgid "don't create a checkout"
 msgstr "no crear checkout"
 
-#: builtin/clone.c:94 builtin/clone.c:96 builtin/init-db.c:554
+#: builtin/clone.c:95 builtin/clone.c:97 builtin/init-db.c:555
 msgid "create a bare repository"
 msgstr "crear un repositorio vacío"
 
-#: builtin/clone.c:98
+#: builtin/clone.c:99
 msgid "create a mirror repository (implies bare)"
 msgstr "crear un repositorio espejo (implica vacío)"
 
-#: builtin/clone.c:100
+#: builtin/clone.c:101
 msgid "to clone from a local repository"
 msgstr "clonar de un repositorio local"
 
-#: builtin/clone.c:102
+#: builtin/clone.c:103
 msgid "don't use local hardlinks, always copy"
 msgstr "no usar hardlinks, siempre copiar"
 
-#: builtin/clone.c:104
+#: builtin/clone.c:105
 msgid "setup as shared repository"
 msgstr "configurar como repositorio compartido"
 
-#: builtin/clone.c:106
+#: builtin/clone.c:107
 msgid "pathspec"
 msgstr "pathspec"
 
-#: builtin/clone.c:106
+#: builtin/clone.c:107
 msgid "initialize submodules in the clone"
 msgstr "inicializar submódulos en el clonado"
 
-#: builtin/clone.c:110
+#: builtin/clone.c:111
 msgid "number of submodules cloned in parallel"
 msgstr "numero de submódulos clonados en paralelo"
 
-#: builtin/clone.c:111 builtin/init-db.c:551
+#: builtin/clone.c:112 builtin/init-db.c:552
 msgid "template-directory"
 msgstr "directorio-template"
 
-#: builtin/clone.c:112 builtin/init-db.c:552
+#: builtin/clone.c:113 builtin/init-db.c:553
 msgid "directory from which templates will be used"
 msgstr "directorio del cual los templates serán usados"
 
-#: builtin/clone.c:114 builtin/clone.c:116 builtin/submodule--helper.c:1407
-#: builtin/submodule--helper.c:1912
+#: builtin/clone.c:115 builtin/clone.c:117 builtin/submodule--helper.c:1831
+#: builtin/submodule--helper.c:2336
 msgid "reference repository"
 msgstr "repositorio de referencia"
 
-#: builtin/clone.c:118 builtin/submodule--helper.c:1409
-#: builtin/submodule--helper.c:1914
+#: builtin/clone.c:119 builtin/submodule--helper.c:1833
+#: builtin/submodule--helper.c:2338
 msgid "use --reference only while cloning"
 msgstr "usa--reference  solamente si estás clonado"
 
-#: builtin/clone.c:119 builtin/column.c:27 builtin/init-db.c:562
-#: builtin/merge-file.c:46 builtin/pack-objects.c:3514 builtin/repack.c:329
+#: builtin/clone.c:120 builtin/column.c:27 builtin/init-db.c:563
+#: builtin/merge-file.c:46 builtin/pack-objects.c:3561 builtin/repack.c:357
 msgid "name"
 msgstr "nombre"
 
-#: builtin/clone.c:120
+#: builtin/clone.c:121
 msgid "use <name> instead of 'origin' to track upstream"
 msgstr "use <nombre> en lugar de 'origin' para rastrear upstream"
 
-#: builtin/clone.c:122
+#: builtin/clone.c:123
 msgid "checkout <branch> instead of the remote's HEAD"
 msgstr "checkout <rama> en lugar de HEAD remota"
 
-#: builtin/clone.c:124
+#: builtin/clone.c:125
 msgid "path to git-upload-pack on the remote"
 msgstr "ruta para git-upload-pack en el remoto"
 
-#: builtin/clone.c:125 builtin/fetch.c:169 builtin/grep.c:848
+#: builtin/clone.c:126 builtin/fetch.c:176 builtin/grep.c:861
 #: builtin/pull.c:208
 msgid "depth"
 msgstr "profundidad"
 
-#: builtin/clone.c:126
+#: builtin/clone.c:127
 msgid "create a shallow clone of that depth"
 msgstr "crear un clon superficial para esa profundidad"
 
-#: builtin/clone.c:127 builtin/fetch.c:171 builtin/pack-objects.c:3503
+#: builtin/clone.c:128 builtin/fetch.c:178 builtin/pack-objects.c:3550
 #: builtin/pull.c:211
 msgid "time"
 msgstr "tiempo"
 
-#: builtin/clone.c:128
+#: builtin/clone.c:129
 msgid "create a shallow clone since a specific time"
 msgstr "crear un clon superficial desde el tiempo específico"
 
-#: builtin/clone.c:129 builtin/fetch.c:173 builtin/fetch.c:196
-#: builtin/pull.c:214 builtin/pull.c:239 builtin/rebase.c:1304
+#: builtin/clone.c:130 builtin/fetch.c:180 builtin/fetch.c:203
+#: builtin/pull.c:214 builtin/pull.c:239 builtin/rebase.c:1323
 msgid "revision"
 msgstr "revision"
 
-#: builtin/clone.c:130 builtin/fetch.c:174 builtin/pull.c:215
+#: builtin/clone.c:131 builtin/fetch.c:181 builtin/pull.c:215
 msgid "deepen history of shallow clone, excluding rev"
 msgstr "ahondando historia de clon superficial, excluyendo rev"
 
-#: builtin/clone.c:132 builtin/submodule--helper.c:1419
-#: builtin/submodule--helper.c:1928
+#: builtin/clone.c:133 builtin/submodule--helper.c:1843
+#: builtin/submodule--helper.c:2352
 msgid "clone only one branch, HEAD or --branch"
 msgstr "clonar solo una rama,HEAD o --branch"
 
-#: builtin/clone.c:134
+#: builtin/clone.c:135
 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:136
+#: builtin/clone.c:137
 msgid "any cloned submodules will be shallow"
 msgstr "cualquier submódulo clonado será superficial"
 
-#: builtin/clone.c:137 builtin/init-db.c:560
+#: builtin/clone.c:138 builtin/init-db.c:561
 msgid "gitdir"
 msgstr "gitdir"
 
-#: builtin/clone.c:138 builtin/init-db.c:561
+#: builtin/clone.c:139 builtin/init-db.c:562
 msgid "separate git dir from working tree"
 msgstr "separa git dir del árbol de trabajo"
 
-#: builtin/clone.c:139
+#: builtin/clone.c:140
 msgid "key=value"
 msgstr "llave=valor"
 
-#: builtin/clone.c:140
+#: builtin/clone.c:141
 msgid "set config inside the new repository"
 msgstr "configurar config dentro del nuevo repositorio"
 
-#: builtin/clone.c:142 builtin/fetch.c:191 builtin/ls-remote.c:76
-#: builtin/pull.c:230 builtin/push.c:570 builtin/send-pack.c:171
+#: builtin/clone.c:143 builtin/fetch.c:198 builtin/ls-remote.c:77
+#: builtin/pull.c:230 builtin/push.c:584 builtin/send-pack.c:196
 msgid "server-specific"
 msgstr "especifico-de-servidor"
 
-#: builtin/clone.c:142 builtin/fetch.c:191 builtin/ls-remote.c:76
-#: builtin/pull.c:231 builtin/push.c:570 builtin/send-pack.c:172
+#: builtin/clone.c:143 builtin/fetch.c:198 builtin/ls-remote.c:77
+#: builtin/pull.c:231 builtin/push.c:584 builtin/send-pack.c:197
 msgid "option to transmit"
 msgstr "opción para trasmitir"
 
-#: builtin/clone.c:143 builtin/fetch.c:192 builtin/pull.c:234
-#: builtin/push.c:571
+#: builtin/clone.c:144 builtin/fetch.c:199 builtin/pull.c:234
+#: builtin/push.c:585
 msgid "use IPv4 addresses only"
 msgstr "solo usar direcciones IPv4"
 
-#: builtin/clone.c:145 builtin/fetch.c:194 builtin/pull.c:237
-#: builtin/push.c:573
+#: builtin/clone.c:146 builtin/fetch.c:201 builtin/pull.c:237
+#: builtin/push.c:587
 msgid "use IPv6 addresses only"
 msgstr "solo usar direcciones IPv6"
 
-#: builtin/clone.c:149
+#: builtin/clone.c:150
 msgid "any cloned submodules will use their remote-tracking branch"
 msgstr "cualquier submódulo clonado usará su branch de rastreo remoto"
 
-#: builtin/clone.c:151
+#: builtin/clone.c:152
 msgid "initialize sparse-checkout file to include only files at root"
 msgstr ""
 "inicializar archivo sparse-checkout para incluir solo archivos en la raíz"
 
-#: builtin/clone.c:287
+#: builtin/clone.c:288
 msgid ""
 "No directory name could be guessed.\n"
 "Please specify a directory on the command line"
@@ -12300,42 +12843,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:340
+#: builtin/clone.c:341
 #, 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:413
+#: builtin/clone.c:414
 #, c-format
 msgid "%s exists and is not a directory"
 msgstr "%s existe pero no es un directorio"
 
-#: builtin/clone.c:431
+#: builtin/clone.c:432
 #, c-format
 msgid "failed to start iterator over '%s'"
 msgstr "falló al iniciar el iterador sobre '%s'"
 
-#: builtin/clone.c:462
+#: builtin/clone.c:463
 #, c-format
 msgid "failed to create link '%s'"
 msgstr "falló al crear link '%s'"
 
-#: builtin/clone.c:466
+#: builtin/clone.c:467
 #, c-format
 msgid "failed to copy file to '%s'"
 msgstr "falló al copiar archivo a '%s'"
 
-#: builtin/clone.c:471
+#: builtin/clone.c:472
 #, c-format
 msgid "failed to iterate over '%s'"
 msgstr "falló al iterar sobre '%s'"
 
-#: builtin/clone.c:498
+#: builtin/clone.c:499
 #, c-format
 msgid "done.\n"
 msgstr "hecho.\n"
 
-#: builtin/clone.c:512
+#: builtin/clone.c:513
 msgid ""
 "Clone succeeded, but checkout failed.\n"
 "You can inspect what was checked out with 'git status'\n"
@@ -12345,100 +12888,105 @@ msgstr ""
 "Puedes inspeccionar a qué se hizo checkout con 'git status'\n"
 "y volver a intentarlo con 'git restore --source=HEAD :/'\n"
 
-#: builtin/clone.c:589
+#: builtin/clone.c:590
 #, 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:708
+#: builtin/clone.c:709
 #, c-format
 msgid "unable to update %s"
 msgstr "incapaz de actualizar %s"
 
-#: builtin/clone.c:756
+#: builtin/clone.c:757
 msgid "failed to initialize sparse-checkout"
 msgstr "falló al inicializar sparse-checkout"
 
-#: builtin/clone.c:779
+#: builtin/clone.c:780
 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:811
+#: builtin/clone.c:812
 msgid "unable to checkout working tree"
 msgstr "no es posible realizar checkout en el árbol de trabajo"
 
-#: builtin/clone.c:868
+#: builtin/clone.c:887
 msgid "unable to write parameters to config file"
 msgstr "no es posible escribir parámetros al archivo config"
 
-#: builtin/clone.c:931
+#: builtin/clone.c:950
 msgid "cannot repack to clean up"
 msgstr "no se puede reempaquetar para limpiar"
 
-#: builtin/clone.c:933
+#: builtin/clone.c:952
 msgid "cannot unlink temporary alternates file"
 msgstr "no se puede desvincular archivos alternos temporales"
 
-#: builtin/clone.c:971 builtin/receive-pack.c:1982
+#: builtin/clone.c:993 builtin/receive-pack.c:2493
 msgid "Too many arguments."
 msgstr "Muchos argumentos."
 
-#: builtin/clone.c:975
+#: builtin/clone.c:997
 msgid "You must specify a repository to clone."
 msgstr "Tienes que especificar un repositorio para clonar."
 
-#: builtin/clone.c:988
+#: builtin/clone.c:1010
 #, c-format
 msgid "--bare and --origin %s options are incompatible."
 msgstr "Las opciones --bare y --origin %s son incompatibles."
 
-#: builtin/clone.c:991
+#: builtin/clone.c:1013
 msgid "--bare and --separate-git-dir are incompatible."
 msgstr "--bare y --separate-git-dir son incompatibles."
 
-#: builtin/clone.c:1007
+#: builtin/clone.c:1026
 #, c-format
 msgid "repository '%s' does not exist"
 msgstr "repositorio '%s' no existe"
 
-#: builtin/clone.c:1011 builtin/fetch.c:1794
+#: builtin/clone.c:1030 builtin/fetch.c:1951
 #, c-format
 msgid "depth %s is not a positive number"
 msgstr "profundidad %s no es un numero positivo"
 
-#: builtin/clone.c:1021
+#: builtin/clone.c:1040
 #, 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:1033
+#: builtin/clone.c:1046
+#, c-format
+msgid "repository path '%s' already exists and is not an empty directory."
+msgstr "La ruta del repositorio '%s' ya existe y no es un directorio vacío."
+
+#: builtin/clone.c:1060
 #, c-format
 msgid "working tree '%s' already exists."
 msgstr "directorio de trabajo '%s' ya existe."
 
-#: builtin/clone.c:1048 builtin/clone.c:1069 builtin/difftool.c:271
-#: builtin/log.c:1886 builtin/worktree.c:354 builtin/worktree.c:386
+#: builtin/clone.c:1075 builtin/clone.c:1096 builtin/difftool.c:271
+#: builtin/log.c:1986 builtin/worktree.c:282 builtin/worktree.c:314
 #, c-format
 msgid "could not create leading directories of '%s'"
 msgstr "no se pudo crear directorios principales de '%s'"
 
-#: builtin/clone.c:1053
+#: builtin/clone.c:1080
 #, c-format
 msgid "could not create work tree dir '%s'"
 msgstr "no se pudo crear un árbol de trabajo '%s'"
 
-#: builtin/clone.c:1073
+#: builtin/clone.c:1100
 #, c-format
 msgid "Cloning into bare repository '%s'...\n"
 msgstr "Clonando en un repositorio vacío '%s'...\n"
 
-#: builtin/clone.c:1075
+#: builtin/clone.c:1102
 #, c-format
 msgid "Cloning into '%s'...\n"
 msgstr "Clonando en '%s'...\n"
 
-#: builtin/clone.c:1099
+#: builtin/clone.c:1126
 msgid ""
 "clone --recursive is not compatible with both --reference and --reference-if-"
 "able"
@@ -12446,36 +12994,41 @@ msgstr ""
 "clone --recursive no es compatible con --reference y --reference-if-able al "
 "mismo tiempo"
 
-#: builtin/clone.c:1164
+#: builtin/clone.c:1170 builtin/remote.c:200 builtin/remote.c:705
+#, c-format
+msgid "'%s' is not a valid remote name"
+msgstr "'%s' no es un nombre remoto válido"
+
+#: builtin/clone.c:1211
 msgid "--depth is ignored in local clones; use file:// instead."
 msgstr "--depth es ignorada en clonaciones locales; usa file:// más bien."
 
-#: builtin/clone.c:1166
+#: builtin/clone.c:1213
 msgid "--shallow-since is ignored in local clones; use file:// instead."
 msgstr "--shallow-since es ignorado en el clon local; use file:// ."
 
-#: builtin/clone.c:1168
+#: builtin/clone.c:1215
 msgid "--shallow-exclude is ignored in local clones; use file:// instead."
 msgstr "--shallow-exclude es ignorado en clones locales; use file://."
 
-#: builtin/clone.c:1170
+#: builtin/clone.c:1217
 msgid "--filter is ignored in local clones; use file:// instead."
 msgstr "--filter es ignorado en clones locales; usa file:// en su lugar."
 
-#: builtin/clone.c:1173
+#: builtin/clone.c:1220
 msgid "source repository is shallow, ignoring --local"
 msgstr "repositorio fuente es superficial, ignorando --local"
 
-#: builtin/clone.c:1178
+#: builtin/clone.c:1225
 msgid "--local is ignored"
 msgstr "--local es ignorado"
 
-#: builtin/clone.c:1262 builtin/clone.c:1270
+#: builtin/clone.c:1315 builtin/clone.c:1323
 #, c-format
 msgid "Remote branch %s not found in upstream %s"
 msgstr "Rama remota %s no encontrada en upstream %s"
 
-#: builtin/clone.c:1273
+#: builtin/clone.c:1326
 msgid "You appear to have cloned an empty repository."
 msgstr "Pareces haber clonado un repositorio sin contenido."
 
@@ -12511,102 +13064,106 @@ msgstr "Realizando padding entre columnas"
 msgid "--command must be the first argument"
 msgstr "--command debe ser el primer argumento"
 
-#: builtin/commit-graph.c:13 builtin/commit-graph.c:21
+#: builtin/commit-graph.c:13 builtin/commit-graph.c:22
 msgid ""
 "git commit-graph verify [--object-dir <objdir>] [--shallow] [--[no-]progress]"
 msgstr ""
 "git commit-graph verify [--object-dir <objdir>] [--shallow] [--[no-]progress]"
 
-#: builtin/commit-graph.c:14 builtin/commit-graph.c:26
+#: builtin/commit-graph.c:14 builtin/commit-graph.c:27
 msgid ""
 "git commit-graph write [--object-dir <objdir>] [--append] [--"
 "split[=<strategy>]] [--reachable|--stdin-packs|--stdin-commits] [--changed-"
-"paths] [--[no-]progress] <split options>"
+"paths] [--[no-]max-new-filters <n>] [--[no-]progress] <split options>"
 msgstr ""
-"git commit-graph write [--object-dir <objeto dir>] [--append] [--"
+"git commit-graph write [--object-dir <objdir>] [--append] [--"
 "split[=<estrategia>]] [--reachable|--stdin-packs|--stdin-commits] [--changed-"
-"paths] [--[no-]progress] <opciones de split>"
+"paths] [--[no-]max-new-filters <n>] [--[no-]progress] <opciones de split>"
 
-#: builtin/commit-graph.c:62
+#: builtin/commit-graph.c:64
 #, c-format
 msgid "could not find object directory matching %s"
 msgstr "no se pudo entoncrar el objeto directorio concordante con %s"
 
-#: builtin/commit-graph.c:78 builtin/commit-graph.c:177
-#: builtin/commit-graph.c:276 builtin/fetch.c:180 builtin/log.c:1678
+#: builtin/commit-graph.c:80 builtin/commit-graph.c:210
+#: builtin/commit-graph.c:316 builtin/fetch.c:187 builtin/log.c:1768
 msgid "dir"
 msgstr "dir"
 
-#: builtin/commit-graph.c:79 builtin/commit-graph.c:178
-#: builtin/commit-graph.c:277
-msgid "The object directory to store the graph"
-msgstr "El directorio de objetos para guardar el gráfico"
+#: builtin/commit-graph.c:81 builtin/commit-graph.c:211
+#: builtin/commit-graph.c:317
+msgid "the object directory to store the graph"
+msgstr "el directorio de objetos para guardar el gráfico"
 
-#: builtin/commit-graph.c:81
+#: builtin/commit-graph.c:83
 msgid "if the commit-graph is split, only verify the tip file"
 msgstr "si el commit-graph está cortado, solo verifica la punta del archivo"
 
-#: builtin/commit-graph.c:104
+#: builtin/commit-graph.c:106
 #, c-format
 msgid "Could not open commit-graph '%s'"
 msgstr "No se pudo abrir commit-graph '%s'"
 
-#: builtin/commit-graph.c:138
+#: builtin/commit-graph.c:142
 #, c-format
 msgid "unrecognized --split argument, %s"
 msgstr "argumento --split no reconocido, %s"
 
-#: builtin/commit-graph.c:151
+#: builtin/commit-graph.c:155
 #, c-format
 msgid "unexpected non-hex object ID: %s"
 msgstr "ID de objeto no hex inesperado :%s"
 
-#: builtin/commit-graph.c:156
+#: builtin/commit-graph.c:160
 #, c-format
 msgid "invalid object: %s"
 msgstr "no es un objeto válido: %s"
 
-#: builtin/commit-graph.c:180
+#: builtin/commit-graph.c:213
 msgid "start walk at all refs"
 msgstr "comenzar caminata en todas las refs"
 
-#: builtin/commit-graph.c:182
+#: builtin/commit-graph.c:215
 msgid "scan pack-indexes listed by stdin for commits"
 msgstr "escanear paquete de índices por stdin por commits"
 
-#: builtin/commit-graph.c:184
+#: builtin/commit-graph.c:217
 msgid "start walk at commits listed by stdin"
 msgstr "comenzar a caminar a los commits listados por stdin"
 
-#: builtin/commit-graph.c:186
+#: builtin/commit-graph.c:219
 msgid "include all commits already in the commit-graph file"
 msgstr "inclye todos los commits que ya están en el archivo commit-graph"
 
-#: builtin/commit-graph.c:188
+#: builtin/commit-graph.c:221
 msgid "enable computation for changed paths"
 msgstr "habilitar computación para rutas cambiadas"
 
-#: builtin/commit-graph.c:191
+#: builtin/commit-graph.c:224
 msgid "allow writing an incremental commit-graph file"
 msgstr "permitir escribir un archivo commit-graph incremental"
 
-#: builtin/commit-graph.c:195
+#: builtin/commit-graph.c:228
 msgid "maximum number of commits in a non-base split commit-graph"
 msgstr "máximo número de commits en un commit-graph sin base cortada"
 
-#: builtin/commit-graph.c:197
+#: builtin/commit-graph.c:230
 msgid "maximum ratio between two levels of a split commit-graph"
 msgstr "radio máximo entre dos niveles de corte de commit-graph"
 
-#: builtin/commit-graph.c:199
+#: builtin/commit-graph.c:232
 msgid "only expire files older than a given date-time"
 msgstr "expirar objetos más viejos a una fecha dada"
 
-#: builtin/commit-graph.c:215
+#: builtin/commit-graph.c:234
+msgid "maximum number of changed-path Bloom filters to compute"
+msgstr "número máximo de cambios de ruta de filtro Bloom para computar"
+
+#: builtin/commit-graph.c:255
 msgid "use at most one of --reachable, --stdin-commits, or --stdin-packs"
 msgstr "use como máximo uno de --reachable, --stdin-commits, o --stdin-packs"
 
-#: builtin/commit-graph.c:245
+#: builtin/commit-graph.c:287
 msgid "Collecting commits from input"
 msgstr "Recolectando commits del input"
 
@@ -12623,7 +13180,7 @@ msgstr ""
 msgid "duplicate parent %s ignored"
 msgstr "padre duplicado %s ignorado"
 
-#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:547
+#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:557
 #, c-format
 msgid "not a valid object name %s"
 msgstr "no es un nombre de objeto válido %s"
@@ -12651,13 +13208,13 @@ msgstr "padre"
 msgid "id of a parent commit object"
 msgstr "id del objeto commit padre"
 
-#: builtin/commit-tree.c:114 builtin/commit.c:1506 builtin/merge.c:273
-#: builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1474
-#: builtin/tag.c:413
+#: builtin/commit-tree.c:114 builtin/commit.c:1504 builtin/merge.c:282
+#: builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1537
+#: builtin/tag.c:445
 msgid "message"
 msgstr "mensaje"
 
-#: builtin/commit-tree.c:115 builtin/commit.c:1506
+#: builtin/commit-tree.c:115 builtin/commit.c:1504
 msgid "commit message"
 msgstr "mensaje del commit"
 
@@ -12665,7 +13222,7 @@ msgstr "mensaje del commit"
 msgid "read commit log message from file"
 msgstr "leer mensaje de commit desde un archivo"
 
-#: builtin/commit-tree.c:121 builtin/commit.c:1518 builtin/merge.c:290
+#: builtin/commit-tree.c:121 builtin/commit.c:1516 builtin/merge.c:299
 #: builtin/pull.c:176 builtin/revert.c:118
 msgid "GPG sign commit"
 msgstr "Firmar commit con GPG"
@@ -12815,12 +13372,12 @@ msgstr ""
 "no es posible seleccionar un carácter de comentario que no es usado\n"
 "en el mensaje de commit actual"
 
-#: builtin/commit.c:717 builtin/commit.c:750 builtin/commit.c:1099
+#: builtin/commit.c:717 builtin/commit.c:750 builtin/commit.c:1097
 #, c-format
 msgid "could not lookup commit %s"
 msgstr "no se pudo revisar el commit %s"
 
-#: builtin/commit.c:729 builtin/shortlog.c:319
+#: builtin/commit.c:729 builtin/shortlog.c:413
 #, c-format
 msgid "(reading log message from standard input)\n"
 msgstr "(leyendo mensajes de logs desde standard input)\n"
@@ -12846,37 +13403,35 @@ msgstr "no se pudo leer MERGE_MSG"
 msgid "could not write commit template"
 msgstr "no se pudo escribir el template del commit"
 
-#: builtin/commit.c:852
-#, c-format
+#: builtin/commit.c:853
 msgid ""
 "\n"
 "It looks like you may be committing a merge.\n"
-"If this is not correct, please remove the file\n"
-"\t%s\n"
+"If this is not correct, please run\n"
+"\tgit update-ref -d MERGE_HEAD\n"
 "and try again.\n"
 msgstr ""
 "\n"
-"Parece que estás haciendo un commit con una fusión dentro.\n"
-"Si esto no es correcto, por favor elimina el archivo\n"
-"\t%s\n"
-"y vuelve a intentar.\n"
+"Parece que está realizando una fusión.\n"
+"Si esto no es correcto, ejecute\n"
+"\tgit update-ref -d MERGE_HEAD\n"
+"e intenta de nuevo.\n"
 
-#: builtin/commit.c:857
-#, c-format
+#: builtin/commit.c:858
 msgid ""
 "\n"
 "It looks like you may be committing a cherry-pick.\n"
-"If this is not correct, please remove the file\n"
-"\t%s\n"
+"If this is not correct, please run\n"
+"\tgit update-ref -d CHERRY_PICK_HEAD\n"
 "and try again.\n"
 msgstr ""
 "\n"
-"Parece que puedes estar haciendo un commit a un cherry-pick.\n"
-"Si esto no es correcto, por favor elimina el archivo\n"
-"\t%s\n"
-"y vuelve a intentar.\n"
+"Parece que puede estar cometiendo una selección de cerebros.\n"
+"Si esto no es correcto, ejecute\n"
+"\tgit update-ref -d CHERRY_PICK_HEAD\n"
+"e intenta de nuevo.\n"
 
-#: builtin/commit.c:870
+#: builtin/commit.c:868
 #, c-format
 msgid ""
 "Please enter the commit message for your changes. Lines starting\n"
@@ -12886,7 +13441,7 @@ msgstr ""
 " líneas que comiencen con '%c' serán ignoradas, y un mensaje\n"
 " vacío aborta el commit.\n"
 
-#: builtin/commit.c:878
+#: builtin/commit.c:876
 #, c-format
 msgid ""
 "Please enter the commit message for your changes. Lines starting\n"
@@ -12898,147 +13453,147 @@ msgstr ""
 " usted mismo si lo desea.\n"
 "Un mensaje vacío aborta el commit.\n"
 
-#: builtin/commit.c:895
+#: builtin/commit.c:893
 #, c-format
 msgid "%sAuthor:    %.*s <%.*s>"
 msgstr "%sAutor:     %.*s <%.*s>"
 
-#: builtin/commit.c:903
+#: builtin/commit.c:901
 #, c-format
 msgid "%sDate:      %s"
 msgstr "%sFecha:     %s"
 
-#: builtin/commit.c:910
+#: builtin/commit.c:908
 #, c-format
 msgid "%sCommitter: %.*s <%.*s>"
 msgstr "%sCommitter: %.*s <%.*s>"
 
-#: builtin/commit.c:928
+#: builtin/commit.c:926
 msgid "Cannot read index"
 msgstr "No se puede leer el índice"
 
-#: builtin/commit.c:999
+#: builtin/commit.c:997
 msgid "Error building trees"
 msgstr "Error al construir los árboles"
 
-#: builtin/commit.c:1013 builtin/tag.c:276
+#: builtin/commit.c:1011 builtin/tag.c:308
 #, 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:1057
+#: builtin/commit.c:1055
 #, 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:1071
+#: builtin/commit.c:1069
 #, c-format
 msgid "Invalid ignored mode '%s'"
 msgstr "Modo ignorado inválido '%s'"
 
-#: builtin/commit.c:1089 builtin/commit.c:1333
+#: builtin/commit.c:1087 builtin/commit.c:1331
 #, c-format
 msgid "Invalid untracked files mode '%s'"
 msgstr "Modo inválido de los archivos no rastreados '%s'"
 
-#: builtin/commit.c:1129
+#: builtin/commit.c:1127
 msgid "--long and -z are incompatible"
 msgstr "--long y -z son incompatibles"
 
-#: builtin/commit.c:1173
+#: builtin/commit.c:1171
 msgid "Using both --reset-author and --author does not make sense"
 msgstr "Usar ambos --reset-author y --author no tiene sentido"
 
-#: builtin/commit.c:1182
+#: builtin/commit.c:1180
 msgid "You have nothing to amend."
 msgstr "No tienes nada que enmendar."
 
-#: builtin/commit.c:1185
+#: builtin/commit.c:1183
 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:1187
+#: builtin/commit.c:1185
 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:1189
+#: builtin/commit.c:1187
 msgid "You are in the middle of a rebase -- cannot amend."
 msgstr "Estás en medio de una fusión -- no puedes enmendar."
 
-#: builtin/commit.c:1192
+#: builtin/commit.c:1190
 msgid "Options --squash and --fixup cannot be used together"
 msgstr "Opciones --squash y --fixup no pueden ser usadas juntas"
 
-#: builtin/commit.c:1202
+#: builtin/commit.c:1200
 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:1204
+#: builtin/commit.c:1202
 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:1213
+#: builtin/commit.c:1211
 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:1231
+#: builtin/commit.c:1229
 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:1237
+#: builtin/commit.c:1235
 #, c-format
 msgid "paths '%s ...' with -a does not make sense"
 msgstr "paths '%s ...' con -a no tiene sentido"
 
-#: builtin/commit.c:1368 builtin/commit.c:1529
+#: builtin/commit.c:1366 builtin/commit.c:1527
 msgid "show status concisely"
 msgstr "mostrar status de manera concisa"
 
-#: builtin/commit.c:1370 builtin/commit.c:1531
+#: builtin/commit.c:1368 builtin/commit.c:1529
 msgid "show branch information"
 msgstr "mostrar información de la rama"
 
-#: builtin/commit.c:1372
+#: builtin/commit.c:1370
 msgid "show stash information"
 msgstr "mostrar información del stash"
 
-#: builtin/commit.c:1374 builtin/commit.c:1533
+#: builtin/commit.c:1372 builtin/commit.c:1531
 msgid "compute full ahead/behind values"
 msgstr "calcular todos los valores delante/atrás"
 
-#: builtin/commit.c:1376
+#: builtin/commit.c:1374
 msgid "version"
 msgstr "version"
 
-#: builtin/commit.c:1376 builtin/commit.c:1535 builtin/push.c:549
-#: builtin/worktree.c:722
+#: builtin/commit.c:1374 builtin/commit.c:1533 builtin/push.c:560
+#: builtin/worktree.c:679
 msgid "machine-readable output"
 msgstr "output formato-maquina"
 
-#: builtin/commit.c:1379 builtin/commit.c:1537
+#: builtin/commit.c:1377 builtin/commit.c:1535
 msgid "show status in long format (default)"
 msgstr "mostrar status en formato largo (default)"
 
-#: builtin/commit.c:1382 builtin/commit.c:1540
+#: builtin/commit.c:1380 builtin/commit.c:1538
 msgid "terminate entries with NUL"
 msgstr "terminar entradas con NUL"
 
-#: builtin/commit.c:1384 builtin/commit.c:1388 builtin/commit.c:1543
-#: builtin/fast-export.c:1199 builtin/fast-export.c:1202
-#: builtin/fast-export.c:1205 builtin/rebase.c:1392 parse-options.h:336
+#: builtin/commit.c:1382 builtin/commit.c:1386 builtin/commit.c:1541
+#: builtin/fast-export.c:1198 builtin/fast-export.c:1201
+#: builtin/fast-export.c:1204 builtin/rebase.c:1412 parse-options.h:336
 msgid "mode"
 msgstr "modo"
 
-#: builtin/commit.c:1385 builtin/commit.c:1543
+#: builtin/commit.c:1383 builtin/commit.c:1541
 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:1389
+#: builtin/commit.c:1387
 msgid ""
 "show ignored files, optional modes: traditional, matching, no. (Default: "
 "traditional)"
@@ -13046,11 +13601,11 @@ msgstr ""
 "mostrar archivos ignorados, modos opcionales: traditional, matching, no. "
 "(Predeterminado: traditional)"
 
-#: builtin/commit.c:1391 parse-options.h:192
+#: builtin/commit.c:1389 parse-options.h:192
 msgid "when"
 msgstr "cuando"
 
-#: builtin/commit.c:1392
+#: builtin/commit.c:1390
 msgid ""
 "ignore changes to submodules, optional when: all, dirty, untracked. "
 "(Default: all)"
@@ -13058,173 +13613,173 @@ msgstr ""
 "ignorar cambios en submódulos, opcional cuando: all,dirty,untracked. "
 "(Default: all)"
 
-#: builtin/commit.c:1394
+#: builtin/commit.c:1392
 msgid "list untracked files in columns"
 msgstr "listar en columnas los archivos sin seguimiento"
 
-#: builtin/commit.c:1395
+#: builtin/commit.c:1393
 msgid "do not detect renames"
 msgstr "no detectar renombrados"
 
-#: builtin/commit.c:1397
+#: builtin/commit.c:1395
 msgid "detect renames, optionally set similarity index"
 msgstr "detectar renombres, opcionalmente configurar similaridad de índice"
 
-#: builtin/commit.c:1417
+#: builtin/commit.c:1415
 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:1499
+#: builtin/commit.c:1497
 msgid "suppress summary after successful commit"
 msgstr "suprime summary tras un commit exitoso"
 
-#: builtin/commit.c:1500
+#: builtin/commit.c:1498
 msgid "show diff in commit message template"
 msgstr "mostrar diff en el template del mensaje de commit"
 
-#: builtin/commit.c:1502
+#: builtin/commit.c:1500
 msgid "Commit message options"
 msgstr "Opciones para el mensaje del commit"
 
-#: builtin/commit.c:1503 builtin/merge.c:277 builtin/tag.c:415
+#: builtin/commit.c:1501 builtin/merge.c:286 builtin/tag.c:447
 msgid "read message from file"
 msgstr "leer mensaje desde un archivo"
 
-#: builtin/commit.c:1504
+#: builtin/commit.c:1502
 msgid "author"
 msgstr "autor"
 
-#: builtin/commit.c:1504
+#: builtin/commit.c:1502
 msgid "override author for commit"
 msgstr "sobrescribe el autor del commit"
 
-#: builtin/commit.c:1505 builtin/gc.c:538
+#: builtin/commit.c:1503 builtin/gc.c:550
 msgid "date"
 msgstr "fecha"
 
-#: builtin/commit.c:1505
+#: builtin/commit.c:1503
 msgid "override date for commit"
 msgstr "sobrescribe la fecha del commit"
 
-#: builtin/commit.c:1507 builtin/commit.c:1508 builtin/commit.c:1509
-#: builtin/commit.c:1510 parse-options.h:328 ref-filter.h:92
+#: builtin/commit.c:1505 builtin/commit.c:1506 builtin/commit.c:1507
+#: builtin/commit.c:1508 parse-options.h:328 ref-filter.h:90
 msgid "commit"
 msgstr "confirmar"
 
-#: builtin/commit.c:1507
+#: builtin/commit.c:1505
 msgid "reuse and edit message from specified commit"
 msgstr "reusar y editar el mensaje de un commit especifico"
 
-#: builtin/commit.c:1508
+#: builtin/commit.c:1506
 msgid "reuse message from specified commit"
 msgstr "reusar el mensaje de un commit especifico"
 
-#: builtin/commit.c:1509
+#: builtin/commit.c:1507
 msgid "use autosquash formatted message to fixup specified commit"
 msgstr ""
 "usar mensaje de formato autosquash para arreglar el commit especificado"
 
-#: builtin/commit.c:1510
+#: builtin/commit.c:1508
 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:1511
+#: builtin/commit.c:1509
 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:1512 builtin/log.c:1655 builtin/merge.c:293
+#: builtin/commit.c:1510 builtin/log.c:1743 builtin/merge.c:302
 #: builtin/pull.c:145 builtin/revert.c:110
-msgid "add Signed-off-by:"
-msgstr "agregar Signed-off-by: (firmado por)"
+msgid "add a Signed-off-by trailer"
+msgstr "agregar un firmado por al final"
 
-#: builtin/commit.c:1513
+#: builtin/commit.c:1511
 msgid "use specified template file"
 msgstr "usar archivo de template especificado"
 
-#: builtin/commit.c:1514
+#: builtin/commit.c:1512
 msgid "force edit of commit"
 msgstr "forzar la edición del commit"
 
-#: builtin/commit.c:1516
+#: builtin/commit.c:1514
 msgid "include status in commit message template"
 msgstr "incluir status en el template del mensaje de commit"
 
-#: builtin/commit.c:1521
+#: builtin/commit.c:1519
 msgid "Commit contents options"
 msgstr "Opciones para el contenido del commit"
 
-#: builtin/commit.c:1522
+#: builtin/commit.c:1520
 msgid "commit all changed files"
 msgstr "confirmar todos los archivos cambiados"
 
-#: builtin/commit.c:1523
+#: builtin/commit.c:1521
 msgid "add specified files to index for commit"
 msgstr "agregar archivos específicos al índice para confirmar"
 
-#: builtin/commit.c:1524
+#: builtin/commit.c:1522
 msgid "interactively add files"
 msgstr "agregar archivos interactivamente"
 
-#: builtin/commit.c:1525
+#: builtin/commit.c:1523
 msgid "interactively add changes"
 msgstr "agregar cambios interactivamente"
 
-#: builtin/commit.c:1526
+#: builtin/commit.c:1524
 msgid "commit only specified files"
 msgstr "sólo confirmar archivos específicos"
 
-#: builtin/commit.c:1527
+#: builtin/commit.c:1525
 msgid "bypass pre-commit and commit-msg hooks"
 msgstr "evitar los capturadores (hooks) de pre-commit y commit-msg"
 
-#: builtin/commit.c:1528
+#: builtin/commit.c:1526
 msgid "show what would be committed"
 msgstr "mostrar lo que sería incluido en el commit"
 
-#: builtin/commit.c:1541
+#: builtin/commit.c:1539
 msgid "amend previous commit"
 msgstr "enmendar commit previo"
 
-#: builtin/commit.c:1542
+#: builtin/commit.c:1540
 msgid "bypass post-rewrite hook"
 msgstr "gancho bypass post reescritura"
 
-#: builtin/commit.c:1549
+#: builtin/commit.c:1547
 msgid "ok to record an empty change"
 msgstr "ok al grabar un cambio vacío"
 
-#: builtin/commit.c:1551
+#: builtin/commit.c:1549
 msgid "ok to record a change with an empty message"
 msgstr "ok al grabar un cambio con un mensaje vacío"
 
-#: builtin/commit.c:1624
+#: builtin/commit.c:1622
 #, c-format
 msgid "Corrupt MERGE_HEAD file (%s)"
 msgstr "Archivo MERGE_HEAD (%s) corrupto"
 
-#: builtin/commit.c:1631
+#: builtin/commit.c:1629
 msgid "could not read MERGE_MODE"
 msgstr "no se pudo leer MERGE_MODE"
 
-#: builtin/commit.c:1652
+#: builtin/commit.c:1650
 #, c-format
 msgid "could not read commit message: %s"
 msgstr "no se pudo leer el mensaje de commit: %s"
 
-#: builtin/commit.c:1659
+#: builtin/commit.c:1657
 #, 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:1664
+#: builtin/commit.c:1662
 #, 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:1698
+#: builtin/commit.c:1696
 msgid ""
 "repository has been updated, but unable to write\n"
 "new_index file. Check that disk is not full and quota is\n"
@@ -13238,212 +13793,220 @@ msgstr ""
 msgid "git config [<options>]"
 msgstr "git config [<opciones>]"
 
-#: builtin/config.c:104 builtin/env--helper.c:23
+#: builtin/config.c:109 builtin/env--helper.c:27
 #, c-format
 msgid "unrecognized --type argument, %s"
 msgstr "argumento --type no reconocido, %s"
 
-#: builtin/config.c:116
+#: builtin/config.c:121
 msgid "only one type at a time"
 msgstr "solo un tipo a la vez"
 
-#: builtin/config.c:125
+#: builtin/config.c:130
 msgid "Config file location"
 msgstr "Ubicación del archivo configuración"
 
-#: builtin/config.c:126
+#: builtin/config.c:131
 msgid "use global config file"
 msgstr "usar archivo de config global"
 
-#: builtin/config.c:127
+#: builtin/config.c:132
 msgid "use system config file"
 msgstr "usar archivo de config del sistema"
 
-#: builtin/config.c:128
+#: builtin/config.c:133
 msgid "use repository config file"
 msgstr "usar archivo de config del repositorio"
 
-#: builtin/config.c:129
+#: builtin/config.c:134
 msgid "use per-worktree config file"
 msgstr "usar un archivo de config por árbol de trabajo"
 
-#: builtin/config.c:130
+#: builtin/config.c:135
 msgid "use given config file"
 msgstr "usar archivo config especificado"
 
-#: builtin/config.c:131
+#: builtin/config.c:136
 msgid "blob-id"
 msgstr "blob-id"
 
-#: builtin/config.c:131
+#: builtin/config.c:136
 msgid "read config from given blob object"
 msgstr "leer config del objeto blob suministrado"
 
-#: builtin/config.c:132
+#: builtin/config.c:137
 msgid "Action"
 msgstr "Acción"
 
-#: builtin/config.c:133
-msgid "get value: name [value-regex]"
-msgstr "obtener valor: nombre [valor-regex]"
+#: builtin/config.c:138
+msgid "get value: name [value-pattern]"
+msgstr "obtener valor: nombre [patrón de valor]"
 
-#: builtin/config.c:134
-msgid "get all values: key [value-regex]"
-msgstr "obtener todos los valores: llave [valores-regex]"
+#: builtin/config.c:139
+msgid "get all values: key [value-pattern]"
+msgstr "obtener todos los valores: clave [patrón de valor]"
 
-#: builtin/config.c:135
-msgid "get values for regexp: name-regex [value-regex]"
-msgstr "obtener valores para una regexp: nombre-regex [valor-regex]"
+#: builtin/config.c:140
+msgid "get values for regexp: name-regex [value-pattern]"
+msgstr "obtener valores para regexp: name-regex [value-pattern]"
 
-#: builtin/config.c:136
+#: builtin/config.c:141
 msgid "get value specific for the URL: section[.var] URL"
 msgstr "obtener valor especifico para el URL: sección[.var] URL"
 
-#: builtin/config.c:137
-msgid "replace all matching variables: name value [value_regex]"
+#: builtin/config.c:142
+msgid "replace all matching variables: name value [value-pattern]"
 msgstr ""
-"remplazar todas las variables que concuerden: nombre valor [valor_regex]"
+"reemplazar todas las variables coincidentes: nombre valor [valor-patrón]"
 
-#: builtin/config.c:138
+#: builtin/config.c:143
 msgid "add a new variable: name value"
 msgstr "agregar nueva variable: nombre valor"
 
-#: builtin/config.c:139
-msgid "remove a variable: name [value-regex]"
-msgstr "borrar una variable. nombre [valor-regex]"
+#: builtin/config.c:144
+msgid "remove a variable: name [value-pattern]"
+msgstr "eliminar una variable: nombre [patrón de valor]"
 
-#: builtin/config.c:140
-msgid "remove all matches: name [value-regex]"
-msgstr "borrar todas las concurrencias: nombre [valor-regex]"
+#: builtin/config.c:145
+msgid "remove all matches: name [value-pattern]"
+msgstr "eliminar todas las coincidencias: nombre [patrón de valor]"
 
-#: builtin/config.c:141
+#: builtin/config.c:146
 msgid "rename section: old-name new-name"
 msgstr "renombrar sección: nombre-viejo nombre-nuevo"
 
-#: builtin/config.c:142
+#: builtin/config.c:147
 msgid "remove a section: name"
 msgstr "borrar una sección: nombre"
 
-#: builtin/config.c:143
+#: builtin/config.c:148
 msgid "list all"
 msgstr "listar todo"
 
-#: builtin/config.c:144
+#: builtin/config.c:149
+msgid "use string equality when comparing values to 'value-pattern'"
+msgstr "use la igualdad de cadenas al comparar valores con 'patrón de valor'"
+
+#: builtin/config.c:150
 msgid "open an editor"
 msgstr "abrir el editor"
 
-#: builtin/config.c:145
+#: builtin/config.c:151
 msgid "find the color configured: slot [default]"
 msgstr "encontrar el color configurado: slot [default]"
 
-#: builtin/config.c:146
+#: builtin/config.c:152
 msgid "find the color setting: slot [stdout-is-tty]"
 msgstr "encontrar las opciones del color: slot [stdout-es-tty]"
 
-#: builtin/config.c:147
+#: builtin/config.c:153
 msgid "Type"
 msgstr "Tipo"
 
-#: builtin/config.c:148 builtin/env--helper.c:38
+#: builtin/config.c:154 builtin/env--helper.c:43
 msgid "value is given this type"
 msgstr "al valor se ha dado este tipo"
 
-#: builtin/config.c:149
+#: builtin/config.c:155
 msgid "value is \"true\" or \"false\""
 msgstr "valor es \"true\" o \"false\""
 
-#: builtin/config.c:150
+#: builtin/config.c:156
 msgid "value is decimal number"
 msgstr "valor es un numero decimal"
 
-#: builtin/config.c:151
+#: builtin/config.c:157
 msgid "value is --bool or --int"
 msgstr "valor es --bool o --int"
 
-#: builtin/config.c:152
+#: builtin/config.c:158
+msgid "value is --bool or string"
+msgstr "el valor es --bool o cadena"
+
+#: builtin/config.c:159
 msgid "value is a path (file or directory name)"
 msgstr "valor es una ruta (archivo o nombre de directorio)"
 
-#: builtin/config.c:153
+#: builtin/config.c:160
 msgid "value is an expiry date"
 msgstr "valor es una fecha de expiración"
 
-#: builtin/config.c:154
+#: builtin/config.c:161
 msgid "Other"
 msgstr "Otro"
 
-#: builtin/config.c:155
+#: builtin/config.c:162
 msgid "terminate values with NUL byte"
 msgstr "terminar valores con un byte NULL"
 
-#: builtin/config.c:156
+#: builtin/config.c:163
 msgid "show variable names only"
 msgstr "mostrar solo nombres de variables"
 
-#: builtin/config.c:157
+#: builtin/config.c:164
 msgid "respect include directives on lookup"
 msgstr "respetar directivas include en la búsqueda"
 
-#: builtin/config.c:158
+#: builtin/config.c:165
 msgid "show origin of config (file, standard input, blob, command line)"
 msgstr "mostrar el origen de configuración (archivo, stdin, blob, comando)"
 
-#: builtin/config.c:159
+#: builtin/config.c:166
 msgid "show scope of config (worktree, local, global, system, command)"
 msgstr ""
 "mostrar el scope de la configuración (worktree, local, global, system, "
 "command)"
 
-#: builtin/config.c:160 builtin/env--helper.c:40
+#: builtin/config.c:167 builtin/env--helper.c:45
 msgid "value"
 msgstr "valor"
 
-#: builtin/config.c:160
+#: builtin/config.c:167
 msgid "with --get, use default value when missing entry"
 msgstr "con --get, usa el valor por defecto cuando falta una entrada"
 
-#: builtin/config.c:174
+#: builtin/config.c:181
 #, c-format
 msgid "wrong number of arguments, should be %d"
 msgstr "número de argumentos inválidos, deberían ser %d"
 
-#: builtin/config.c:176
+#: builtin/config.c:183
 #, c-format
 msgid "wrong number of arguments, should be from %d to %d"
 msgstr "número de argumentos inválidos, deberían ser de %d a %d"
 
-#: builtin/config.c:324
+#: builtin/config.c:339
 #, c-format
 msgid "invalid key pattern: %s"
 msgstr "patrón de llave inválido: %s"
 
-#: builtin/config.c:360
+#: builtin/config.c:377
 #, 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:417
+#: builtin/config.c:441
 #, c-format
 msgid "cannot parse color '%s'"
 msgstr "no se analizar color '%s'"
 
-#: builtin/config.c:459
+#: builtin/config.c:483
 msgid "unable to parse default color value"
 msgstr "no es posible analizar el valor por defecto de color"
 
-#: builtin/config.c:512 builtin/config.c:768
+#: builtin/config.c:536 builtin/config.c:833
 msgid "not in a git directory"
 msgstr "no en un directorio git"
 
-#: builtin/config.c:515
+#: builtin/config.c:539
 msgid "writing to stdin is not supported"
 msgstr "escribir en stdin no está soportado"
 
-#: builtin/config.c:518
+#: builtin/config.c:542
 msgid "writing config blobs is not supported"
 msgstr "escribir blobs de configuración no está soportado"
 
-#: builtin/config.c:603
+#: builtin/config.c:627
 #, c-format
 msgid ""
 "# This is Git's per-user configuration file.\n"
@@ -13458,23 +14021,27 @@ msgstr ""
 "#\tname = %s\n"
 "#\temail = %s\n"
 
-#: builtin/config.c:627
+#: builtin/config.c:652
 msgid "only one config file at a time"
 msgstr "solo un archivo de configuración a la vez"
 
-#: builtin/config.c:632
+#: builtin/config.c:658
 msgid "--local can only be used inside a git repository"
 msgstr "--local solo puedo ser usado dentro de un repositorio"
 
-#: builtin/config.c:635
+#: builtin/config.c:660
 msgid "--blob can only be used inside a git repository"
 msgstr "--blob solo puede ser usado dentro de un repositorio"
 
-#: builtin/config.c:655
+#: builtin/config.c:662
+msgid "--worktree can only be used inside a git repository"
+msgstr "--worktree solo se puede usar dentro de un repositorio de git"
+
+#: builtin/config.c:684
 msgid "$HOME not set"
 msgstr "$HOME no está configurado"
 
-#: builtin/config.c:679
+#: builtin/config.c:708
 msgid ""
 "--worktree cannot be used with multiple working trees unless the config\n"
 "extension worktreeConfig is enabled. Please read \"CONFIGURATION FILE\"\n"
@@ -13486,52 +14053,56 @@ msgstr ""
 "\"\n"
 "en \"git help worktree\" para más detalles"
 
-#: builtin/config.c:714
+#: builtin/config.c:743
 msgid "--get-color and variable type are incoherent"
 msgstr "--get-color y tipo de variable incoherente"
 
-#: builtin/config.c:719
+#: builtin/config.c:748
 msgid "only one action at a time"
 msgstr "solo una acción a la vez"
 
-#: builtin/config.c:732
+#: builtin/config.c:761
 msgid "--name-only is only applicable to --list or --get-regexp"
 msgstr "--name-only solo es aplicable para --list o --get-regexp"
 
-#: builtin/config.c:738
+#: builtin/config.c:767
 msgid ""
 "--show-origin is only applicable to --get, --get-all, --get-regexp, and --"
 "list"
 msgstr ""
 "--show-origin solo es aplicable para --get, --get-all, --get-regexp, y --list"
 
-#: builtin/config.c:744
+#: builtin/config.c:773
 msgid "--default is only applicable to --get"
 msgstr "--default solo es aplicable para --get"
 
-#: builtin/config.c:757
+#: builtin/config.c:806
+msgid "--fixed-value only applies with 'value-pattern'"
+msgstr "--fixed-value solo se aplica con 'value-pattern'"
+
+#: builtin/config.c:822
 #, c-format
 msgid "unable to read config file '%s'"
 msgstr "no se puede leer el archivo de configuración '%s'"
 
-#: builtin/config.c:760
+#: builtin/config.c:825
 msgid "error processing config file(s)"
 msgstr "error al procesar archivo(s) de configuración"
 
-#: builtin/config.c:770
+#: builtin/config.c:835
 msgid "editing stdin is not supported"
 msgstr "editar stdin no está soportado"
 
-#: builtin/config.c:772
+#: builtin/config.c:837
 msgid "editing blobs is not supported"
 msgstr "editar blobs no está soportado"
 
-#: builtin/config.c:786
+#: builtin/config.c:851
 #, c-format
 msgid "cannot create configuration file %s"
 msgstr "no se puede crear el archivo de configuración %s"
 
-#: builtin/config.c:799
+#: builtin/config.c:864
 #, c-format
 msgid ""
 "cannot overwrite multiple values with a single value\n"
@@ -13540,7 +14111,7 @@ msgstr ""
 "no se puede sobrescribir múltiples valores con un único valor\n"
 "\tUse una regexp, --add o --replace-all para cambiar %s."
 
-#: builtin/config.c:873 builtin/config.c:884
+#: builtin/config.c:943 builtin/config.c:954
 #, c-format
 msgid "no such section: %s"
 msgstr "no existe la sección: %s"
@@ -13553,6 +14124,38 @@ msgstr "git count-objects [-v] [-H | --human-readable]"
 msgid "print sizes in human readable format"
 msgstr "mostrar tamaños en formato legible para humano"
 
+#: builtin/credential-cache--daemon.c:226
+#, c-format
+msgid ""
+"The permissions on your socket directory are too loose; other\n"
+"users may be able to read your cached credentials. Consider running:\n"
+"\n"
+"\tchmod 0700 %s"
+msgstr ""
+"Los permisos en tu directorio de socket son demasiado flojos; otros\n"
+"usuarios pueden leer sus credenciales almacenadas en caché. Considera "
+"ejecutar:\n"
+"\n"
+"\tchmod 0700 %s"
+
+#: builtin/credential-cache--daemon.c:275
+msgid "print debugging messages to stderr"
+msgstr "mostrar mensajes de debug en stderr"
+
+#: builtin/credential-cache--daemon.c:315
+msgid "credential-cache--daemon unavailable; no unix socket support"
+msgstr "credential-cache--daemon no disponible; sin soporte de socket Unix"
+
+#: builtin/credential-cache.c:154
+msgid "credential-cache unavailable; no unix socket support"
+msgstr "credential-cache no disponible; sin soporte de socket Unix"
+
+#: builtin/credential-store.c:66
+#, c-format
+msgid "unable to get credential storage lock in %d ms"
+msgstr ""
+"no se puede obtener el bloqueo de almacenamiento de credenciales en %d ms"
+
 #: builtin/describe.c:26
 msgid "git describe [<options>] [<commit-ish>...]"
 msgstr "git describe [<opciones>] [<commit-ish>...]"
@@ -13717,41 +14320,49 @@ msgstr "--dirty es incompatible con commit-ismos"
 msgid "--broken is incompatible with commit-ishes"
 msgstr "--broken es incompatible con commit-ismos"
 
-#: builtin/diff.c:91
+#: builtin/diff-tree.c:155
+msgid "--stdin and --merge-base are mutually exclusive"
+msgstr "--stdin and --merge-baseson mutuamente exclusivas"
+
+#: builtin/diff-tree.c:157
+msgid "--merge-base only works with two commits"
+msgstr "--merge-base solo funciona con dos commits"
+
+#: builtin/diff.c:92
 #, c-format
 msgid "'%s': not a regular file or symlink"
 msgstr "'%s': no es un archivo regular o un enlace simbólico"
 
-#: builtin/diff.c:242
+#: builtin/diff.c:259
 #, c-format
 msgid "invalid option: %s"
 msgstr "opción inválida: %s"
 
-#: builtin/diff.c:359
+#: builtin/diff.c:376
 #, c-format
 msgid "%s...%s: no merge base"
 msgstr "%s...%s: se neceista una base de fusión"
 
-#: builtin/diff.c:469
+#: builtin/diff.c:486
 msgid "Not a git repository"
 msgstr "No es un repositorio git"
 
-#: builtin/diff.c:514
+#: builtin/diff.c:532 builtin/grep.c:682
 #, c-format
 msgid "invalid object '%s' given."
 msgstr "objeto '%s' entregado no es válido."
 
-#: builtin/diff.c:525
+#: builtin/diff.c:543
 #, c-format
 msgid "more than two blobs given: '%s'"
 msgstr "más de dos blobs entregados: '%s'"
 
-#: builtin/diff.c:530
+#: builtin/diff.c:548
 #, c-format
 msgid "unhandled object '%s' given."
 msgstr "objeto no manejado '%s' entregado."
 
-#: builtin/diff.c:564
+#: builtin/diff.c:582
 #, c-format
 msgid "%s...%s: multiple merge bases, using %s"
 msgstr "%s...%s: múltiples bases de fusión, usando %s"
@@ -13780,7 +14391,7 @@ msgstr "no se pudo leer el archivo symlink %s"
 msgid "could not read object %s for symlink %s"
 msgstr "no se pudo leer el objeto %s para el symlink %s"
 
-#: builtin/difftool.c:413
+#: builtin/difftool.c:412
 msgid ""
 "combined diff formats('-c' and '--cc') are not supported in\n"
 "directory diff mode('-d' and '--dir-diff')."
@@ -13788,54 +14399,54 @@ msgstr ""
 "formatos combinados de diff ('-c' y '--cc') no soportados en\n"
 "modo diff para directorio('-d' y '--dir-diff')."
 
-#: builtin/difftool.c:634
+#: builtin/difftool.c:633
 #, c-format
 msgid "both files modified: '%s' and '%s'."
 msgstr "ambos archivos modificados: '%s' y '%s'."
 
-#: builtin/difftool.c:636
+#: builtin/difftool.c:635
 msgid "working tree file has been left."
 msgstr "archivo del árbol de trabajo ha sido dejado."
 
-#: builtin/difftool.c:647
+#: builtin/difftool.c:646
 #, c-format
 msgid "temporary files exist in '%s'."
 msgstr "archivo temporal existe en '%s'."
 
-#: builtin/difftool.c:648
+#: builtin/difftool.c:647
 msgid "you may want to cleanup or recover these."
 msgstr "tal vez desees limpiar o recuperar estos."
 
-#: builtin/difftool.c:697
+#: builtin/difftool.c:696
 msgid "use `diff.guitool` instead of `diff.tool`"
 msgstr "use `diff.guitool` en lugar de `diff.tool`"
 
-#: builtin/difftool.c:699
+#: builtin/difftool.c:698
 msgid "perform a full-directory diff"
 msgstr "realizar un diff de todo el directorio"
 
-#: builtin/difftool.c:701
+#: builtin/difftool.c:700
 msgid "do not prompt before launching a diff tool"
 msgstr "no mostrar antes de lanzar una herramienta de diff"
 
-#: builtin/difftool.c:706
+#: builtin/difftool.c:705
 msgid "use symlinks in dir-diff mode"
 msgstr "usar enlaces simbólicos en modo dir-diff"
 
-#: builtin/difftool.c:707
+#: builtin/difftool.c:706
 msgid "tool"
 msgstr "herramienta"
 
-#: builtin/difftool.c:708
+#: builtin/difftool.c:707
 msgid "use the specified diff tool"
 msgstr "usar la herramienta de diff especificada"
 
-#: builtin/difftool.c:710
+#: builtin/difftool.c:709
 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:713
+#: builtin/difftool.c:712
 msgid ""
 "make 'git-difftool' exit when an invoked diff tool returns a non - zero exit "
 "code"
@@ -13843,31 +14454,31 @@ msgstr ""
 "hacer que 'git-difftool' salga cuando una herramienta de diff retorne un "
 "código de salida distinto de cero"
 
-#: builtin/difftool.c:716
+#: builtin/difftool.c:715
 msgid "specify a custom command for viewing diffs"
 msgstr "especificar un comando personalizado para ver diffs"
 
-#: builtin/difftool.c:717
+#: builtin/difftool.c:716
 msgid "passed to `diff`"
 msgstr "pasado a `diff`"
 
-#: builtin/difftool.c:732
+#: builtin/difftool.c:731
 msgid "difftool requires worktree or --no-index"
 msgstr "difftool requiere un árbol de trabajo o --no-index"
 
-#: builtin/difftool.c:739
+#: builtin/difftool.c:738
 msgid "--dir-diff is incompatible with --no-index"
 msgstr "--dirty-diff es incompatible con --no-index"
 
-#: builtin/difftool.c:742
+#: builtin/difftool.c:741
 msgid "--gui, --tool and --extcmd are mutually exclusive"
 msgstr "--gui, --tool y --extcmd son mutuamente exclusivas"
 
-#: builtin/difftool.c:750
+#: builtin/difftool.c:749
 msgid "no <tool> given for --tool=<tool>"
 msgstr "no se ha proporcionado <herramienta> para --tool=<herramienta>"
 
-#: builtin/difftool.c:757
+#: builtin/difftool.c:756
 msgid "no <cmd> given for --extcmd=<cmd>"
 msgstr "no se ha entregado <comando> para --extcmd=<comando>"
 
@@ -13875,24 +14486,24 @@ msgstr "no se ha entregado <comando> para --extcmd=<comando>"
 msgid "git env--helper --type=[bool|ulong] <options> <env-var>"
 msgstr "git env--helper --type=[bool|ulong] <opciones> <env-var>"
 
-#: builtin/env--helper.c:37 builtin/hash-object.c:98
+#: builtin/env--helper.c:42 builtin/hash-object.c:98
 msgid "type"
 msgstr "tipo"
 
-#: builtin/env--helper.c:41
+#: builtin/env--helper.c:46
 msgid "default for git_env_*(...) to fall back on"
 msgstr "default para git_env_*(...) es hacer fallback en"
 
-#: builtin/env--helper.c:43
+#: builtin/env--helper.c:48
 msgid "be quiet only use git_env_*() value as exit code"
 msgstr "ser silencioso solo usar valor git_env_*() como código de salida"
 
-#: builtin/env--helper.c:62
+#: builtin/env--helper.c:67
 #, c-format
 msgid "option `--default' expects a boolean value with `--type=bool`, not `%s`"
 msgstr "opción `--default' espera un valor boolean con `--type=bool`, no `%s`"
 
-#: builtin/env--helper.c:77
+#: builtin/env--helper.c:82
 #, c-format
 msgid ""
 "option `--default' expects an unsigned long value with `--type=ulong`, not `"
@@ -13910,96 +14521,127 @@ msgstr ""
 "Error: No se puede exportar los tags anidados a menos que --mark-tags sea "
 "especificado."
 
-#: builtin/fast-export.c:1178
+#: builtin/fast-export.c:1177
 msgid "--anonymize-map token cannot be empty"
 msgstr "token --anonymize-map no puede estar vacío"
 
-#: builtin/fast-export.c:1198
+#: builtin/fast-export.c:1197
 msgid "show progress after <n> objects"
 msgstr "mostrar progreso después de <n> objetos"
 
-#: builtin/fast-export.c:1200
+#: builtin/fast-export.c:1199
 msgid "select handling of signed tags"
 msgstr "seleccionar el manejo de tags firmados"
 
-#: builtin/fast-export.c:1203
+#: builtin/fast-export.c:1202
 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:1206
+#: builtin/fast-export.c:1205
 msgid "select handling of commit messages in an alternate encoding"
 msgstr "seleccionar el manejo de mensajes de commit en un encoding diferente"
 
-#: builtin/fast-export.c:1209
-msgid "Dump marks to this file"
-msgstr "Volcar marcas a este archivo"
+#: builtin/fast-export.c:1208
+msgid "dump marks to this file"
+msgstr "volcar marcas a este archivo"
 
-#: builtin/fast-export.c:1211
-msgid "Import marks from this file"
-msgstr "Importar marcas de este archivo"
+#: builtin/fast-export.c:1210
+msgid "import marks from this file"
+msgstr "importar marcas de este archivo"
 
-#: builtin/fast-export.c:1215
-msgid "Import marks from this file if it exists"
-msgstr "Importar marcas de este archivo si existe"
+#: builtin/fast-export.c:1214
+msgid "import marks from this file if it exists"
+msgstr "importar marcas de este archivo si existe"
 
-#: builtin/fast-export.c:1217
-msgid "Fake a tagger when tags lack one"
-msgstr "Falsificar un tagger cuando les falta uno"
+#: builtin/fast-export.c:1216
+msgid "fake a tagger when tags lack one"
+msgstr "falsificar un tagger cuando les falta uno"
 
-#: builtin/fast-export.c:1219
-msgid "Output full tree for each commit"
-msgstr "Mostrar todo el árbol para cada commit"
+#: builtin/fast-export.c:1218
+msgid "output full tree for each commit"
+msgstr "mostrar todo el árbol para cada commit"
 
-#: builtin/fast-export.c:1221
-msgid "Use the done feature to terminate the stream"
-msgstr "Use el feature done para terminar el stream"
+#: builtin/fast-export.c:1220
+msgid "use the done feature to terminate the stream"
+msgstr "use el feature done para terminar el stream"
 
-#: builtin/fast-export.c:1222
-msgid "Skip output of blob data"
-msgstr "Saltar el output de data blob"
+#: builtin/fast-export.c:1221
+msgid "skip output of blob data"
+msgstr "saltar el output de data blob"
 
-#: builtin/fast-export.c:1223 builtin/log.c:1724
+#: builtin/fast-export.c:1222 builtin/log.c:1815
 msgid "refspec"
 msgstr "refspec"
 
-#: builtin/fast-export.c:1224
-msgid "Apply refspec to exported refs"
-msgstr "Aplicar refspec para los refs exportados"
+#: builtin/fast-export.c:1223
+msgid "apply refspec to exported refs"
+msgstr "aplicar refspec para los refs exportados"
 
-#: builtin/fast-export.c:1225
+#: builtin/fast-export.c:1224
 msgid "anonymize output"
 msgstr "anonimizar la salida"
 
-#: builtin/fast-export.c:1226
+#: builtin/fast-export.c:1225
 msgid "from:to"
 msgstr "de:para"
 
-#: builtin/fast-export.c:1227
+#: builtin/fast-export.c:1226
 msgid "convert <from> to <to> in anonymized output"
 msgstr "convertir <de> a <para> en output anonimizado"
 
-#: builtin/fast-export.c:1230
-msgid "Reference parents which are not in fast-export stream by object id"
+#: builtin/fast-export.c:1229
+msgid "reference parents which are not in fast-export stream by object id"
 msgstr ""
-"Padres de la referencia que no estan en fast-export stream por id de objeto"
+"padres de la referencia que no estan en fast-export stream por id de objeto"
 
-#: builtin/fast-export.c:1232
-msgid "Show original object ids of blobs/commits"
-msgstr "Mostrar ids de objetos originales para blobs/commits"
+#: builtin/fast-export.c:1231
+msgid "show original object ids of blobs/commits"
+msgstr "mostrar ids de objetos originales para blobs/commits"
 
-#: builtin/fast-export.c:1234
-msgid "Label tags with mark ids"
-msgstr "Marcar tags con ids de mark"
+#: builtin/fast-export.c:1233
+msgid "label tags with mark ids"
+msgstr "marcar tags con ids de mark"
 
-#: builtin/fast-export.c:1257
+#: builtin/fast-export.c:1256
 msgid "--anonymize-map without --anonymize does not make sense"
 msgstr "--anonymize-map sin --anonymize no tiene sentido"
 
-#: builtin/fast-export.c:1272
+#: builtin/fast-export.c:1271
 msgid "Cannot pass both --import-marks and --import-marks-if-exists"
 msgstr "No se puede pasar ambos --import-marks y --import-marks-if-exists"
 
-#: builtin/fetch-pack.c:245
+#: builtin/fast-import.c:3088
+#, c-format
+msgid "Missing from marks for submodule '%s'"
+msgstr "Faltan marcas from para el submódulo '%s'"
+
+#: builtin/fast-import.c:3090
+#, c-format
+msgid "Missing to marks for submodule '%s'"
+msgstr "Faltan marcas to para el submódulo '%s'"
+
+#: builtin/fast-import.c:3225
+#, c-format
+msgid "Expected 'mark' command, got %s"
+msgstr "Se esperaba comando 'mark', se obtuvo %s"
+
+#: builtin/fast-import.c:3230
+#, c-format
+msgid "Expected 'to' command, got %s"
+msgstr "Se esperaba comando 'to', se obtuvo %s"
+
+#: builtin/fast-import.c:3322
+msgid "Expected format name:filename for submodule rewrite option"
+msgstr ""
+"Formato esperado de nombre:nombre de archivo para la opción de sobreescribir "
+"submódulo"
+
+#: builtin/fast-import.c:3377
+#, c-format
+msgid "feature '%s' forbidden in input without --allow-unsafe-features"
+msgstr "característica '%s' prohibida en input sin --allow-unsafe-features"
+
+#: builtin/fetch-pack.c:242
 #, c-format
 msgid "Lockfile created but not reported: %s"
 msgstr "Lockfile creado pero no reportado: %s"
@@ -14020,90 +14662,98 @@ msgstr "git fetch --multiple [<opciones>] [(<repositorio> | <grupo>)...]"
 msgid "git fetch --all [<options>]"
 msgstr "git fetch --all [<opciones>]"
 
-#: builtin/fetch.c:117
+#: builtin/fetch.c:120
 msgid "fetch.parallel cannot be negative"
 msgstr "fetch.parallel no puede ser negativo"
 
-#: builtin/fetch.c:140 builtin/pull.c:185
+#: builtin/fetch.c:143 builtin/pull.c:185
 msgid "fetch from all remotes"
 msgstr "extraer de todos los remotos"
 
-#: builtin/fetch.c:142 builtin/pull.c:245
+#: builtin/fetch.c:145 builtin/pull.c:245
 msgid "set upstream for git pull/fetch"
 msgstr "configurar upstream para git pulll/fetch"
 
-#: builtin/fetch.c:144 builtin/pull.c:188
+#: builtin/fetch.c:147 builtin/pull.c:188
 msgid "append to .git/FETCH_HEAD instead of overwriting"
 msgstr "adjuntar a .git/FETCH_HEAD en lugar de sobrescribir"
 
-#: builtin/fetch.c:146 builtin/pull.c:191
+#: builtin/fetch.c:149
+msgid "use atomic transaction to update references"
+msgstr "usar transacción atómica para actualizar referencias"
+
+#: builtin/fetch.c:151 builtin/pull.c:191
 msgid "path to upload pack on remote end"
 msgstr "ruta para cargar el paquete al final del remoto"
 
-#: builtin/fetch.c:147
+#: builtin/fetch.c:152
 msgid "force overwrite of local reference"
 msgstr "forzar sobrescritura de referencia local"
 
-#: builtin/fetch.c:149
+#: builtin/fetch.c:154
 msgid "fetch from multiple remotes"
 msgstr "extraer de múltiples remotos"
 
-#: builtin/fetch.c:151 builtin/pull.c:195
+#: builtin/fetch.c:156 builtin/pull.c:195
 msgid "fetch all tags and associated objects"
 msgstr "extraer todos los tags y objetos asociados"
 
-#: builtin/fetch.c:153
+#: builtin/fetch.c:158
 msgid "do not fetch all tags (--no-tags)"
 msgstr "no extraer todos los tags (--no-tags)"
 
-#: builtin/fetch.c:155
+#: builtin/fetch.c:160
 msgid "number of submodules fetched in parallel"
 msgstr "número de submódulos extraídos en paralelo"
 
-#: builtin/fetch.c:157 builtin/pull.c:198
+#: builtin/fetch.c:162 builtin/pull.c:198
 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:159
+#: builtin/fetch.c:164
 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:160 builtin/fetch.c:183 builtin/pull.c:122
+#: builtin/fetch.c:165 builtin/fetch.c:190 builtin/pull.c:122
 msgid "on-demand"
 msgstr "en demanda"
 
-#: builtin/fetch.c:161
+#: builtin/fetch.c:166
 msgid "control recursive fetching of submodules"
 msgstr "controlar extracción recursiva de submódulos"
 
-#: builtin/fetch.c:165 builtin/pull.c:206
+#: builtin/fetch.c:171
+msgid "write fetched references to the FETCH_HEAD file"
+msgstr "escribir referencias obtenidas en el archivo FETCH_HEAD"
+
+#: builtin/fetch.c:172 builtin/pull.c:206
 msgid "keep downloaded pack"
 msgstr "mantener el paquete descargado"
 
-#: builtin/fetch.c:167
+#: builtin/fetch.c:174
 msgid "allow updating of HEAD ref"
 msgstr "permitir actualizar la ref HEAD"
 
-#: builtin/fetch.c:170 builtin/fetch.c:176 builtin/pull.c:209
+#: builtin/fetch.c:177 builtin/fetch.c:183 builtin/pull.c:209
 #: builtin/pull.c:218
 msgid "deepen history of shallow clone"
 msgstr "historia profunda de un clon superficial"
 
-#: builtin/fetch.c:172 builtin/pull.c:212
+#: builtin/fetch.c:179 builtin/pull.c:212
 msgid "deepen history of shallow repository based on time"
 msgstr "historia profunda de un repositorio superficial basado en tiempo"
 
-#: builtin/fetch.c:178 builtin/pull.c:221
+#: builtin/fetch.c:185 builtin/pull.c:221
 msgid "convert to a complete repository"
 msgstr "convertir a un repositorio completo"
 
-#: builtin/fetch.c:181
+#: builtin/fetch.c:188
 msgid "prepend this to submodule path output"
 msgstr "anteponer esto a salida de la ruta del submódulo"
 
-#: builtin/fetch.c:184
+#: builtin/fetch.c:191
 msgid ""
 "default for recursive fetching of submodules (lower priority than config "
 "files)"
@@ -14111,94 +14761,98 @@ msgstr ""
 "default para extracción recursiva de submódulos (menor prioridad que "
 "archivos de configuración)"
 
-#: builtin/fetch.c:188 builtin/pull.c:224
+#: builtin/fetch.c:195 builtin/pull.c:224
 msgid "accept refs that update .git/shallow"
 msgstr "aceptar refs que actualicen .git/shallow"
 
-#: builtin/fetch.c:189 builtin/pull.c:226
+#: builtin/fetch.c:196 builtin/pull.c:226
 msgid "refmap"
 msgstr "refmap"
 
-#: builtin/fetch.c:190 builtin/pull.c:227
+#: builtin/fetch.c:197 builtin/pull.c:227
 msgid "specify fetch refmap"
 msgstr "especificar extracción de refmap"
 
-#: builtin/fetch.c:197 builtin/pull.c:240
+#: builtin/fetch.c:204 builtin/pull.c:240
 msgid "report that we have only objects reachable from this object"
 msgstr "reporta que solo tenemos objetos alcanzables de este objeto"
 
-#: builtin/fetch.c:200
-msgid "run 'gc --auto' after fetching"
-msgstr "ejecutar 'gc --auto' tras el fetch"
+#: builtin/fetch.c:207 builtin/fetch.c:209
+msgid "run 'maintenance --auto' after fetching"
+msgstr "ejecute 'maintenance --auto' después de buscar"
 
-#: builtin/fetch.c:202 builtin/pull.c:243
+#: builtin/fetch.c:211 builtin/pull.c:243
 msgid "check for forced-updates on all updated branches"
 msgstr "verificar updates forzados en todos los branch actualizados"
 
-#: builtin/fetch.c:204
+#: builtin/fetch.c:213
 msgid "write the commit-graph after fetching"
 msgstr "escribir commit-graph luego del fetch"
 
-#: builtin/fetch.c:514
+#: builtin/fetch.c:215
+msgid "accept refspecs from stdin"
+msgstr "aceptar refspecs de stdin"
+
+#: builtin/fetch.c:526
 msgid "Couldn't find remote ref HEAD"
 msgstr "No se puedo encontrar ref remota HEAD"
 
-#: builtin/fetch.c:654
+#: builtin/fetch.c:697
 #, 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:752
+#: builtin/fetch.c:796
 #, c-format
 msgid "object %s not found"
 msgstr "objeto %s no encontrado"
 
-#: builtin/fetch.c:756
+#: builtin/fetch.c:800
 msgid "[up to date]"
 msgstr "[actualizado]"
 
-#: builtin/fetch.c:769 builtin/fetch.c:785 builtin/fetch.c:857
+#: builtin/fetch.c:813 builtin/fetch.c:829 builtin/fetch.c:901
 msgid "[rejected]"
 msgstr "[rechazado]"
 
-#: builtin/fetch.c:770
+#: builtin/fetch.c:814
 msgid "can't fetch in current branch"
 msgstr "no se puede traer en la rama actual"
 
-#: builtin/fetch.c:780
+#: builtin/fetch.c:824
 msgid "[tag update]"
 msgstr "[actualización de tag]"
 
-#: builtin/fetch.c:781 builtin/fetch.c:818 builtin/fetch.c:840
-#: builtin/fetch.c:852
+#: builtin/fetch.c:825 builtin/fetch.c:862 builtin/fetch.c:884
+#: builtin/fetch.c:896
 msgid "unable to update local ref"
 msgstr "no se posible actualizar el ref local"
 
-#: builtin/fetch.c:785
+#: builtin/fetch.c:829
 msgid "would clobber existing tag"
 msgstr "podría golpear tag existente"
 
-#: builtin/fetch.c:807
+#: builtin/fetch.c:851
 msgid "[new tag]"
 msgstr "[nuevo tag]"
 
-#: builtin/fetch.c:810
+#: builtin/fetch.c:854
 msgid "[new branch]"
 msgstr "[nueva rama]"
 
-#: builtin/fetch.c:813
+#: builtin/fetch.c:857
 msgid "[new ref]"
 msgstr "[nueva referencia]"
 
-#: builtin/fetch.c:852
+#: builtin/fetch.c:896
 msgid "forced update"
 msgstr "actualización forzada"
 
-#: builtin/fetch.c:857
+#: builtin/fetch.c:901
 msgid "non-fast-forward"
 msgstr "avance lento"
 
-#: builtin/fetch.c:878
+#: builtin/fetch.c:1005
 msgid ""
 "Fetch normally indicates which branches had a forced update,\n"
 "but that check has been disabled. To re-enable, use '--show-forced-updates'\n"
@@ -14209,7 +14863,7 @@ msgstr ""
 "show-forced-updates'\n"
 "o ejecute 'git config fetch.showForcedUpdates true'."
 
-#: builtin/fetch.c:882
+#: builtin/fetch.c:1009
 #, c-format
 msgid ""
 "It took %.2f seconds to check forced updates. You can use\n"
@@ -14222,22 +14876,22 @@ msgstr ""
 "false'\n"
 "para evitar esta validación.\n"
 
-#: builtin/fetch.c:914
+#: builtin/fetch.c:1041
 #, c-format
 msgid "%s did not send all necessary objects\n"
 msgstr "%s no envió todos los objetos necesarios\n"
 
-#: builtin/fetch.c:935
+#: builtin/fetch.c:1069
 #, 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:1020 builtin/fetch.c:1158
+#: builtin/fetch.c:1146 builtin/fetch.c:1297
 #, c-format
 msgid "From %.*s\n"
 msgstr "Desde %.*s\n"
 
-#: builtin/fetch.c:1031
+#: builtin/fetch.c:1168
 #, c-format
 msgid ""
 "some local refs could not be updated; try running\n"
@@ -14246,56 +14900,56 @@ msgstr ""
 "algunos refs locales no pudieron ser actualizados; intente ejecutar\n"
 " 'git remote prune %s' para eliminar cualquier rama vieja o conflictiva"
 
-#: builtin/fetch.c:1128
+#: builtin/fetch.c:1267
 #, c-format
 msgid "   (%s will become dangling)"
 msgstr "   (%s se pondrá colgado)"
 
-#: builtin/fetch.c:1129
+#: builtin/fetch.c:1268
 #, c-format
 msgid "   (%s has become dangling)"
 msgstr "   (%s se ha colgado)"
 
-#: builtin/fetch.c:1161
+#: builtin/fetch.c:1300
 msgid "[deleted]"
 msgstr "[eliminado]"
 
-#: builtin/fetch.c:1162 builtin/remote.c:1112
+#: builtin/fetch.c:1301 builtin/remote.c:1118
 msgid "(none)"
 msgstr "(nada)"
 
-#: builtin/fetch.c:1185
+#: builtin/fetch.c:1324
 #, 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:1204
+#: builtin/fetch.c:1343
 #, 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:1207
+#: builtin/fetch.c:1346
 #, c-format
 msgid "Option \"%s\" is ignored for %s\n"
 msgstr "Opción \"%s\" es ignorada por %s\n"
 
-#: builtin/fetch.c:1415
+#: builtin/fetch.c:1558
 msgid "multiple branches detected, incompatible with --set-upstream"
 msgstr "múltiples ramas detectadas, incompatible con --set-upstream"
 
-#: builtin/fetch.c:1430
+#: builtin/fetch.c:1573
 msgid "not setting upstream for a remote remote-tracking branch"
 msgstr "no configurar upstream para una rama de rastreo remoto"
 
-#: builtin/fetch.c:1432
+#: builtin/fetch.c:1575
 msgid "not setting upstream for a remote tag"
 msgstr "no configurar upstream para un tag remoto"
 
-#: builtin/fetch.c:1434
+#: builtin/fetch.c:1577
 msgid "unknown branch type"
 msgstr "tipo de branch desconocido"
 
-#: builtin/fetch.c:1436
+#: builtin/fetch.c:1579
 msgid ""
 "no source branch found.\n"
 "you need to specify exactly one branch with the --set-upstream option."
@@ -14303,22 +14957,22 @@ msgstr ""
 "no se encontró rama fuente.\n"
 "tienes que especificar exactamente una rama con la opción --set-upstream."
 
-#: builtin/fetch.c:1562 builtin/fetch.c:1625
+#: builtin/fetch.c:1708 builtin/fetch.c:1771
 #, c-format
 msgid "Fetching %s\n"
 msgstr "Extrayendo %s\n"
 
-#: builtin/fetch.c:1572 builtin/fetch.c:1627 builtin/remote.c:101
+#: builtin/fetch.c:1718 builtin/fetch.c:1773 builtin/remote.c:101
 #, c-format
 msgid "Could not fetch %s"
 msgstr "No se pudo extraer %s"
 
-#: builtin/fetch.c:1584
+#: builtin/fetch.c:1730
 #, c-format
 msgid "could not fetch '%s' (exit code: %d)\n"
 msgstr "no se pudo hacer fetch a '%s' (código de salida: %d)\n"
 
-#: builtin/fetch.c:1687
+#: builtin/fetch.c:1834
 msgid ""
 "No remote repository specified.  Please, specify either a URL or a\n"
 "remote name from which new revisions should be fetched."
@@ -14326,44 +14980,44 @@ 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:1724
+#: builtin/fetch.c:1870
 msgid "You need to specify a tag name."
 msgstr "Tienes que especificar un nombre de tag."
 
-#: builtin/fetch.c:1778
+#: builtin/fetch.c:1935
 msgid "Negative depth in --deepen is not supported"
 msgstr "Profundidad negativa en --deepen no soportada"
 
-#: builtin/fetch.c:1780
+#: builtin/fetch.c:1937
 msgid "--deepen and --depth are mutually exclusive"
 msgstr "--deepen y --depth son mutuamente exclusivas"
 
-#: builtin/fetch.c:1785
+#: builtin/fetch.c:1942
 msgid "--depth and --unshallow cannot be used together"
 msgstr "--depth y --unshallow no pueden ser usadas juntas"
 
-#: builtin/fetch.c:1787
+#: builtin/fetch.c:1944
 msgid "--unshallow on a complete repository does not make sense"
 msgstr "--unshallow no tiene sentido en un repositorio completo"
 
-#: builtin/fetch.c:1800
+#: builtin/fetch.c:1961
 msgid "fetch --all does not take a repository argument"
 msgstr "fetch --all no toma un argumento de repositorio"
 
-#: builtin/fetch.c:1802
+#: builtin/fetch.c:1963
 msgid "fetch --all does not make sense with refspecs"
 msgstr "fetch --all no tiene sentido con refspecs"
 
-#: builtin/fetch.c:1811
+#: builtin/fetch.c:1972
 #, c-format
 msgid "No such remote or remote group: %s"
 msgstr "No existe el remoto o grupo remoto: %s"
 
-#: builtin/fetch.c:1818
+#: builtin/fetch.c:1979
 msgid "Fetching a group and specifying refspecs does not make sense"
 msgstr "Extraer un grupo y especificar un refspecs no tiene sentido"
 
-#: builtin/fetch.c:1836
+#: builtin/fetch.c:1997
 msgid ""
 "--filter can only be used with the remote configured in extensions."
 "partialclone"
@@ -14371,6 +15025,14 @@ msgstr ""
 "--filter solo puede ser usado con el remoto configurado en extensions."
 "partialClone"
 
+#: builtin/fetch.c:2001
+msgid "--atomic can only be used when fetching from one remote"
+msgstr "--atomic solo se puede usar cuando se busca desde un control remoto"
+
+#: builtin/fetch.c:2005
+msgid "--stdin can only be used when fetching from one remote"
+msgstr "--stdin solo se puede usar cuando se busca desde un control remoto"
+
 #: builtin/fmt-merge-msg.c:7
 msgid ""
 "git fmt-merge-msg [-m <message>] [--log[=<n>] | --no-log] [--file <file>]"
@@ -14406,8 +15068,8 @@ msgid "git for-each-ref [--points-at <object>]"
 msgstr "git for-each-ref [--points-at <objeto>]"
 
 #: builtin/for-each-ref.c:12
-msgid "git for-each-ref [(--merged | --no-merged) [<commit>]]"
-msgstr "git for-each-ref [(--merged | --no-merged) [<commit>]]"
+msgid "git for-each-ref [--merged [<commit>]] [--no-merged [<commit>]]"
+msgstr "git for-each-ref [--merged [<commit>]] [--no-merged [<commit>]]"
 
 #: builtin/for-each-ref.c:13
 msgid "git for-each-ref [--contains [<commit>]] [--no-contains [<commit>]]"
@@ -14433,7 +15095,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:440
+#: builtin/for-each-ref.c:39 builtin/tag.c:472
 msgid "respect format colors"
 msgstr "respetar el formato de colores"
 
@@ -14457,32 +15119,48 @@ 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:69 builtin/fsck.c:148 builtin/fsck.c:149
+#: builtin/for-each-repo.c:9
+msgid "git for-each-repo --config=<config> <command-args>"
+msgstr "git for-each-repo --config=<config> <argumetnos-de-comando>"
+
+#: builtin/for-each-repo.c:37
+msgid "config"
+msgstr "config"
+
+#: builtin/for-each-repo.c:38
+msgid "config key storing a list of repository paths"
+msgstr "clave de configuración que almacena una lista de rutas de repositorio"
+
+#: builtin/for-each-repo.c:46
+msgid "missing --config=<config>"
+msgstr "falta --config=<config>"
+
+#: builtin/fsck.c:69 builtin/fsck.c:130 builtin/fsck.c:131
 msgid "unknown"
 msgstr "desconocido"
 
 #. TRANSLATORS: e.g. error in tree 01bfda: <more explanation>
-#: builtin/fsck.c:101 builtin/fsck.c:121
+#: builtin/fsck.c:83 builtin/fsck.c:103
 #, c-format
 msgid "error in %s %s: %s"
 msgstr "error en %s %s: %s"
 
 #. TRANSLATORS: e.g. warning in tree 01bfda: <more explanation>
-#: builtin/fsck.c:115
+#: builtin/fsck.c:97
 #, c-format
 msgid "warning in %s %s: %s"
 msgstr "peligro en %s %s: %s"
 
-#: builtin/fsck.c:144 builtin/fsck.c:147
+#: builtin/fsck.c:126 builtin/fsck.c:129
 #, c-format
 msgid "broken link from %7s %s"
 msgstr "link roto de %7s %s"
 
-#: builtin/fsck.c:156
+#: builtin/fsck.c:138
 msgid "wrong object type in link"
 msgstr "tipo de objeto equivocado en link"
 
-#: builtin/fsck.c:172
+#: builtin/fsck.c:154
 #, c-format
 msgid ""
 "broken link from %7s %s\n"
@@ -14491,240 +15169,240 @@ msgstr ""
 "link roto de %7s %s\n"
 "              a %7s %s"
 
-#: builtin/fsck.c:283
+#: builtin/fsck.c:265
 #, c-format
 msgid "missing %s %s"
 msgstr "faltan %s %s"
 
-#: builtin/fsck.c:310
+#: builtin/fsck.c:292
 #, c-format
 msgid "unreachable %s %s"
 msgstr "inalcanzable %s %s"
 
-#: builtin/fsck.c:330
+#: builtin/fsck.c:312
 #, c-format
 msgid "dangling %s %s"
 msgstr "actualizando %s %s"
 
-#: builtin/fsck.c:340
+#: builtin/fsck.c:322
 msgid "could not create lost-found"
 msgstr "no se pudo crear lost-found"
 
-#: builtin/fsck.c:351
+#: builtin/fsck.c:333
 #, c-format
 msgid "could not finish '%s'"
 msgstr "no se pudo finalizar '%s'"
 
-#: builtin/fsck.c:368
+#: builtin/fsck.c:350
 #, c-format
 msgid "Checking %s"
 msgstr "Revisando %s"
 
-#: builtin/fsck.c:406
+#: builtin/fsck.c:388
 #, c-format
 msgid "Checking connectivity (%d objects)"
 msgstr "Verificando conectividad (%d objetos)"
 
-#: builtin/fsck.c:425
+#: builtin/fsck.c:407
 #, c-format
 msgid "Checking %s %s"
 msgstr "Revisando %s %s"
 
-#: builtin/fsck.c:430
+#: builtin/fsck.c:412
 msgid "broken links"
 msgstr "links rotos"
 
-#: builtin/fsck.c:439
+#: builtin/fsck.c:421
 #, c-format
 msgid "root %s"
 msgstr "raíz %s"
 
-#: builtin/fsck.c:447
+#: builtin/fsck.c:429
 #, c-format
 msgid "tagged %s %s (%s) in %s"
 msgstr "tag %s %s (%s) en %s"
 
-#: builtin/fsck.c:476
+#: builtin/fsck.c:458
 #, c-format
 msgid "%s: object corrupt or missing"
 msgstr "%s: objecto corrupto o faltante"
 
-#: builtin/fsck.c:501
+#: builtin/fsck.c:483
 #, c-format
 msgid "%s: invalid reflog entry %s"
 msgstr "%s: referencia inválida %s"
 
-#: builtin/fsck.c:515
+#: builtin/fsck.c:497
 #, c-format
 msgid "Checking reflog %s->%s"
 msgstr "Revisando reflog %s->%s"
 
-#: builtin/fsck.c:549
+#: builtin/fsck.c:531
 #, c-format
 msgid "%s: invalid sha1 pointer %s"
 msgstr "%s: puntero sha1 inválido %s"
 
-#: builtin/fsck.c:556
+#: builtin/fsck.c:538
 #, c-format
 msgid "%s: not a commit"
 msgstr "%s: no es un commit"
 
-#: builtin/fsck.c:610
+#: builtin/fsck.c:592
 msgid "notice: No default references"
 msgstr "aviso: No hay referencias por defecto"
 
-#: builtin/fsck.c:625
+#: builtin/fsck.c:607
 #, c-format
 msgid "%s: object corrupt or missing: %s"
 msgstr "%s: objeto corrupto o no encontrado: %s"
 
-#: builtin/fsck.c:638
+#: builtin/fsck.c:620
 #, c-format
 msgid "%s: object could not be parsed: %s"
 msgstr "%s: no se puede analizar objeto: %s"
 
-#: builtin/fsck.c:658
+#: builtin/fsck.c:640
 #, c-format
 msgid "bad sha1 file: %s"
 msgstr "mal sha1 de archivo: %s"
 
-#: builtin/fsck.c:673
+#: builtin/fsck.c:655
 msgid "Checking object directory"
 msgstr "Revisando directorio de objetos"
 
-#: builtin/fsck.c:676
+#: builtin/fsck.c:658
 msgid "Checking object directories"
 msgstr "Revisando objetos directorios"
 
-#: builtin/fsck.c:691
+#: builtin/fsck.c:673
 #, c-format
 msgid "Checking %s link"
 msgstr "Revisando link %s"
 
-#: builtin/fsck.c:696 builtin/index-pack.c:843
+#: builtin/fsck.c:678 builtin/index-pack.c:865
 #, c-format
 msgid "invalid %s"
 msgstr "%s inválido"
 
-#: builtin/fsck.c:703
+#: builtin/fsck.c:685
 #, c-format
 msgid "%s points to something strange (%s)"
 msgstr "%s apunta a algo extraño (%s)"
 
-#: builtin/fsck.c:709
+#: builtin/fsck.c:691
 #, c-format
 msgid "%s: detached HEAD points at nothing"
 msgstr "%s: HEAD desacoplado apunta a nada"
 
-#: builtin/fsck.c:713
+#: builtin/fsck.c:695
 #, c-format
 msgid "notice: %s points to an unborn branch (%s)"
 msgstr "aviso: %s apunta a un branch no nacido (%s)"
 
-#: builtin/fsck.c:725
+#: builtin/fsck.c:707
 msgid "Checking cache tree"
 msgstr "Revisando el cache tree"
 
-#: builtin/fsck.c:730
+#: builtin/fsck.c:712
 #, c-format
 msgid "%s: invalid sha1 pointer in cache-tree"
 msgstr "%s: puntero inválido sha1 en cache-tree"
 
-#: builtin/fsck.c:739
+#: builtin/fsck.c:721
 msgid "non-tree in cache-tree"
 msgstr "non-tree en cache-tree"
 
-#: builtin/fsck.c:770
+#: builtin/fsck.c:752
 msgid "git fsck [<options>] [<object>...]"
 msgstr "git fsck [<opciones>] [<objeto>...]"
 
-#: builtin/fsck.c:776
+#: builtin/fsck.c:758
 msgid "show unreachable objects"
 msgstr "mostrar objetos ilegibles"
 
-#: builtin/fsck.c:777
+#: builtin/fsck.c:759
 msgid "show dangling objects"
 msgstr "mostrar objetos colgados"
 
-#: builtin/fsck.c:778
+#: builtin/fsck.c:760
 msgid "report tags"
 msgstr "reportar tags"
 
-#: builtin/fsck.c:779
+#: builtin/fsck.c:761
 msgid "report root nodes"
 msgstr "reportar nodos raíz"
 
-#: builtin/fsck.c:780
+#: builtin/fsck.c:762
 msgid "make index objects head nodes"
 msgstr "hacer objetos índices cabezas de nodos"
 
-#: builtin/fsck.c:781
+#: builtin/fsck.c:763
 msgid "make reflogs head nodes (default)"
 msgstr "hacer reflogs cabeza de nodos (default)"
 
-#: builtin/fsck.c:782
+#: builtin/fsck.c:764
 msgid "also consider packs and alternate objects"
 msgstr "también considerar paquetes y objetos alternos"
 
-#: builtin/fsck.c:783
+#: builtin/fsck.c:765
 msgid "check only connectivity"
 msgstr "revisar solo conectividad"
 
-#: builtin/fsck.c:784
+#: builtin/fsck.c:766 builtin/mktag.c:78
 msgid "enable more strict checking"
 msgstr "habilitar revisión más estricta"
 
-#: builtin/fsck.c:786
+#: builtin/fsck.c:768
 msgid "write dangling objects in .git/lost-found"
 msgstr "escribir objetos colgados en .git/lost-found"
 
-#: builtin/fsck.c:787 builtin/prune.c:134
+#: builtin/fsck.c:769 builtin/prune.c:134
 msgid "show progress"
 msgstr "mostrar progreso"
 
-#: builtin/fsck.c:788
+#: builtin/fsck.c:770
 msgid "show verbose names for reachable objects"
 msgstr "mostrar nombres verboso para objetos alcanzables"
 
-#: builtin/fsck.c:847 builtin/index-pack.c:225
+#: builtin/fsck.c:829 builtin/index-pack.c:261
 msgid "Checking objects"
 msgstr "Revisando objetos"
 
-#: builtin/fsck.c:875
+#: builtin/fsck.c:857
 #, c-format
 msgid "%s: object missing"
 msgstr "%s: objeto faltante"
 
-#: builtin/fsck.c:886
+#: builtin/fsck.c:868
 #, c-format
 msgid "invalid parameter: expected sha1, got '%s'"
 msgstr "parámetro inválido: sha1 esperado, se obtuvo '%s'"
 
-#: builtin/gc.c:35
+#: builtin/gc.c:39
 msgid "git gc [<options>]"
 msgstr "git gc [<opciones>]"
 
-#: builtin/gc.c:90
+#: builtin/gc.c:93
 #, c-format
 msgid "Failed to fstat %s: %s"
 msgstr "Falló el fstat %s: %s"
 
-#: builtin/gc.c:126
+#: builtin/gc.c:129
 #, c-format
 msgid "failed to parse '%s' value '%s'"
 msgstr "falló al analizar '%s' valor '%s'"
 
-#: builtin/gc.c:475 builtin/init-db.c:57
+#: builtin/gc.c:487 builtin/init-db.c:58
 #, c-format
 msgid "cannot stat '%s'"
 msgstr "no se pudo definir '%s'"
 
-#: builtin/gc.c:484 builtin/notes.c:240 builtin/tag.c:530
+#: builtin/gc.c:496 builtin/notes.c:240 builtin/tag.c:562
 #, c-format
 msgid "cannot read '%s'"
 msgstr "no se puede leer '%s'"
 
-#: builtin/gc.c:491
+#: builtin/gc.c:503
 #, c-format
 msgid ""
 "The last gc run reported the following. Please correct the root cause\n"
@@ -14739,54 +15417,54 @@ msgstr ""
 "\n"
 "%s"
 
-#: builtin/gc.c:539
+#: builtin/gc.c:551
 msgid "prune unreferenced objects"
 msgstr "limpiar objetos no referenciados"
 
-#: builtin/gc.c:541
+#: builtin/gc.c:553
 msgid "be more thorough (increased runtime)"
 msgstr "ser más exhaustivo (aumentar runtime)"
 
-#: builtin/gc.c:542
+#: builtin/gc.c:554
 msgid "enable auto-gc mode"
 msgstr "habilitar modo auto-gc"
 
-#: builtin/gc.c:545
+#: builtin/gc.c:557
 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:548
+#: builtin/gc.c:560
 msgid "repack all other packs except the largest pack"
 msgstr "reempaquetar todos los otros paquetes excepto el paquete más grande"
 
-#: builtin/gc.c:565
+#: builtin/gc.c:576
 #, c-format
 msgid "failed to parse gc.logexpiry value %s"
 msgstr "falló al analizar valor %s de gc.logexpirity"
 
-#: builtin/gc.c:576
+#: builtin/gc.c:587
 #, c-format
 msgid "failed to parse prune expiry value %s"
 msgstr "falló al analizar valor %s de prune expiry"
 
-#: builtin/gc.c:596
+#: builtin/gc.c:607
 #, 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:598
+#: builtin/gc.c:609
 #, c-format
 msgid "Auto packing the repository for optimum performance.\n"
 msgstr "Auto empaquetado del repositorio para performance óptimo.\n"
 
-#: builtin/gc.c:599
+#: builtin/gc.c:610
 #, c-format
 msgid "See \"git help gc\" for manual housekeeping.\n"
 msgstr "Vea \"git help gc\" para limpieza manual.\n"
 
-#: builtin/gc.c:639
+#: builtin/gc.c:650
 #, c-format
 msgid ""
 "gc is already running on machine '%s' pid %<PRIuMAX> (use --force if not)"
@@ -14794,23 +15472,187 @@ msgstr ""
 "gc ya está ejecutándose en la máquina '%s' pid %<PRIuMAX> (use --force so no "
 "es así)"
 
-#: builtin/gc.c:694
+#: builtin/gc.c:705
 msgid ""
 "There are too many unreachable loose objects; run 'git prune' to remove them."
 msgstr ""
 "Hay muchos objetos sueltos inalcanzables; ejecute 'git prune' para "
 "eliminarlos."
 
+#: builtin/gc.c:715
+msgid ""
+"git maintenance run [--auto] [--[no-]quiet] [--task=<task>] [--schedule]"
+msgstr ""
+"git maintenance run [--auto] [--[no-]quiet] [--task=<task>] [--schedule]"
+
+#: builtin/gc.c:745
+msgid "--no-schedule is not allowed"
+msgstr "--no-schedule no está permitido"
+
+#: builtin/gc.c:750
+#, c-format
+msgid "unrecognized --schedule argument '%s'"
+msgstr "argumento --schedule no reconocido, '%s'"
+
+#: builtin/gc.c:869
+msgid "failed to write commit-graph"
+msgstr "no se pudo escribir el commit-graph"
+
+#: builtin/gc.c:914
+msgid "failed to fill remotes"
+msgstr "falló al borrar remotos"
+
+#: builtin/gc.c:1037
+msgid "failed to start 'git pack-objects' process"
+msgstr "no pudo iniciar el proceso 'git pack-objects'"
+
+#: builtin/gc.c:1054
+msgid "failed to finish 'git pack-objects' process"
+msgstr "no pudo finalizar el proceso 'git pack-objects'"
+
+#: builtin/gc.c:1106
+msgid "failed to write multi-pack-index"
+msgstr "no se pudo escribir el índice de paquetes múltiples"
+
+#: builtin/gc.c:1124
+msgid "'git multi-pack-index expire' failed"
+msgstr "'git multi-pack-index expire' falló"
+
+#: builtin/gc.c:1185
+msgid "'git multi-pack-index repack' failed"
+msgstr "'git multi-pack-index repack' falló"
+
+#: builtin/gc.c:1194
+msgid ""
+"skipping incremental-repack task because core.multiPackIndex is disabled"
+msgstr ""
+"omitiendo la tarea de reempaquetado incremental porque core.multiPackIndex "
+"está deshabilitado"
+
+#: builtin/gc.c:1298
+#, c-format
+msgid "lock file '%s' exists, skipping maintenance"
+msgstr "el archivo de bloqueo '%s' existe, omitiendo el mantenimiento"
+
+#: builtin/gc.c:1328
+#, c-format
+msgid "task '%s' failed"
+msgstr "tarea '%s' falló"
+
+#: builtin/gc.c:1410
+#, c-format
+msgid "'%s' is not a valid task"
+msgstr "'%s' no es una tarea válida"
+
+#: builtin/gc.c:1415
+#, c-format
+msgid "task '%s' cannot be selected multiple times"
+msgstr "tarea '%s' no puede ser seleccionada múltipes veces"
+
+#: builtin/gc.c:1430
+msgid "run tasks based on the state of the repository"
+msgstr "ejecutar tareas basadas en el estado del repositorio"
+
+#: builtin/gc.c:1431
+msgid "frequency"
+msgstr "frecuencia"
+
+#: builtin/gc.c:1432
+msgid "run tasks based on frequency"
+msgstr "ejecutar tareas basado en frecuencia"
+
+#: builtin/gc.c:1435
+msgid "do not report progress or other information over stderr"
+msgstr "no reportar progreso u otra información por medio de stderr"
+
+#: builtin/gc.c:1436
+msgid "task"
+msgstr "tarea"
+
+#: builtin/gc.c:1437
+msgid "run a specific task"
+msgstr "ruta a tarea específica"
+
+#: builtin/gc.c:1454
+msgid "use at most one of --auto and --schedule=<frequency>"
+msgstr "usar como máximo una entre --auto y --schedule=<frecuencia>"
+
+#: builtin/gc.c:1497
+msgid "failed to run 'git config'"
+msgstr "no pudo ejecutar 'git config'"
+
+#: builtin/gc.c:1562
+#, c-format
+msgid "failed to expand path '%s'"
+msgstr "falló al expandir la ruta '%s'"
+
+#: builtin/gc.c:1591
+msgid "failed to start launchctl"
+msgstr "Falló al iniciar launchctl."
+
+#: builtin/gc.c:1628
+#, c-format
+msgid "failed to create directories for '%s'"
+msgstr "falló al crear directorios para '%s'"
+
+#: builtin/gc.c:1689
+#, c-format
+msgid "failed to bootstrap service %s"
+msgstr "falló al generar el servicio %s"
+
+#: builtin/gc.c:1760
+msgid "failed to create temp xml file"
+msgstr "no se pudo crear el archivo temp xml"
+
+#: builtin/gc.c:1850
+msgid "failed to start schtasks"
+msgstr "no pudo iniciar schtasks"
+
+#: builtin/gc.c:1894
+msgid "failed to run 'crontab -l'; your system might not support 'cron'"
+msgstr ""
+"no pudo ejecutar 'crontab -l'; es posible que su sistema no soporte 'cron'"
+
+#: builtin/gc.c:1911
+msgid "failed to run 'crontab'; your system might not support 'cron'"
+msgstr ""
+"no pudo ejecutar 'crontab'; es posible que su sistema no soporte 'cron'"
+
+#: builtin/gc.c:1915
+msgid "failed to open stdin of 'crontab'"
+msgstr "no pudo abrir stdin de 'crontab'"
+
+#: builtin/gc.c:1956
+msgid "'crontab' died"
+msgstr "'crontab' murió"
+
+#: builtin/gc.c:1990
+msgid "another process is scheduling background maintenance"
+msgstr "otro proceso está programando el mantenimiento en segundo plano"
+
+#: builtin/gc.c:2009
+msgid "failed to add repo to global config"
+msgstr "no se pudo agregar el repositorio a la configuración global"
+
+#: builtin/gc.c:2019
+msgid "git maintenance <subcommand> [<options>]"
+msgstr "git maintenance <subcomando> [<opciones>]"
+
+#: builtin/gc.c:2038
+#, c-format
+msgid "invalid subcommand: %s"
+msgstr "subcomando no válido: %s"
+
 #: builtin/grep.c:30
 msgid "git grep [<options>] [-e] <pattern> [<rev>...] [[--] <path>...]"
 msgstr "git grep [<opciones>] [-e] <patrón> [<rev>...] [[--] <ruta>...]"
 
-#: builtin/grep.c:225
+#: builtin/grep.c:223
 #, c-format
 msgid "grep: failed to create thread: %s"
 msgstr "grep: falló al crear el hilo: %s"
 
-#: builtin/grep.c:279
+#: builtin/grep.c:277
 #, c-format
 msgid "invalid number of threads specified (%d) for %s"
 msgstr "número inválido de hilos especificado (%d) para %s"
@@ -14819,262 +15661,262 @@ msgstr "número inválido de hilos especificado (%d) para %s"
 #. variable for tweaking threads, currently
 #. grep.threads
 #.
-#: builtin/grep.c:287 builtin/index-pack.c:1537 builtin/index-pack.c:1727
-#: builtin/pack-objects.c:2904
+#: builtin/grep.c:285 builtin/index-pack.c:1589 builtin/index-pack.c:1808
+#: builtin/pack-objects.c:2944
 #, c-format
 msgid "no threads support, ignoring %s"
 msgstr "no hay soporte para hilos, ignorando %s"
 
-#: builtin/grep.c:475 builtin/grep.c:600 builtin/grep.c:640
+#: builtin/grep.c:473 builtin/grep.c:601 builtin/grep.c:641
 #, c-format
 msgid "unable to read tree (%s)"
 msgstr "no es posible leer el  árbol (%s)"
 
-#: builtin/grep.c:655
+#: builtin/grep.c:656
 #, c-format
 msgid "unable to grep from object of type %s"
 msgstr "no es posible realizar grep del objeto de tipo %s"
 
-#: builtin/grep.c:724
+#: builtin/grep.c:737
 #, c-format
 msgid "switch `%c' expects a numerical value"
 msgstr "switch `%c' espera un valor numérico"
 
-#: builtin/grep.c:823
+#: builtin/grep.c:836
 msgid "search in index instead of in the work tree"
 msgstr "buscar en el índice en lugar del árbol de trabajo"
 
-#: builtin/grep.c:825
+#: builtin/grep.c:838
 msgid "find in contents not managed by git"
 msgstr "encontrar en contenidos no manejados por git"
 
-#: builtin/grep.c:827
+#: builtin/grep.c:840
 msgid "search in both tracked and untracked files"
 msgstr "buscar en archivos rastreados y no rastreados"
 
-#: builtin/grep.c:829
+#: builtin/grep.c:842
 msgid "ignore files specified via '.gitignore'"
 msgstr "ignorar archivos especificados via '.gitignore'"
 
-#: builtin/grep.c:831
+#: builtin/grep.c:844
 msgid "recursively search in each submodule"
 msgstr "búsqueda recursiva en cada submódulo"
 
-#: builtin/grep.c:834
+#: builtin/grep.c:847
 msgid "show non-matching lines"
 msgstr "mostrar líneas que no concuerdan"
 
-#: builtin/grep.c:836
+#: builtin/grep.c:849
 msgid "case insensitive matching"
 msgstr "búsqueda insensible a mayúsculas"
 
-#: builtin/grep.c:838
+#: builtin/grep.c:851
 msgid "match patterns only at word boundaries"
 msgstr "concordar patrón solo a los límites de las palabras"
 
-#: builtin/grep.c:840
+#: builtin/grep.c:853
 msgid "process binary files as text"
 msgstr "procesar archivos binarios como texto"
 
-#: builtin/grep.c:842
+#: builtin/grep.c:855
 msgid "don't match patterns in binary files"
 msgstr "no concordar patrones en archivos binarios"
 
-#: builtin/grep.c:845
+#: builtin/grep.c:858
 msgid "process binary files with textconv filters"
 msgstr "procesar archivos binarios con filtros textconv"
 
-#: builtin/grep.c:847
+#: builtin/grep.c:860
 msgid "search in subdirectories (default)"
 msgstr "buscar en subdirectorios (default)"
 
-#: builtin/grep.c:849
+#: builtin/grep.c:862
 msgid "descend at most <depth> levels"
 msgstr "descender como máximo <valor-de-profundiad>  niveles"
 
-#: builtin/grep.c:853
+#: builtin/grep.c:866
 msgid "use extended POSIX regular expressions"
 msgstr "usar expresiones regulares POSIX extendidas"
 
-#: builtin/grep.c:856
+#: builtin/grep.c:869
 msgid "use basic POSIX regular expressions (default)"
 msgstr "usar expresiones regulares POSIX (default)"
 
-#: builtin/grep.c:859
+#: builtin/grep.c:872
 msgid "interpret patterns as fixed strings"
 msgstr "interpretar patrones como strings arreglados"
 
-#: builtin/grep.c:862
+#: builtin/grep.c:875
 msgid "use Perl-compatible regular expressions"
 msgstr "usar expresiones regulares compatibles con Perl"
 
-#: builtin/grep.c:865
+#: builtin/grep.c:878
 msgid "show line numbers"
 msgstr "mostrar números de línea"
 
-#: builtin/grep.c:866
+#: builtin/grep.c:879
 msgid "show column number of first match"
 msgstr "mostrar el número de columna de la primer coincidencia"
 
-#: builtin/grep.c:867
+#: builtin/grep.c:880
 msgid "don't show filenames"
 msgstr "no mostrar nombres de archivo"
 
-#: builtin/grep.c:868
+#: builtin/grep.c:881
 msgid "show filenames"
 msgstr "mostrar nombres de archivo"
 
-#: builtin/grep.c:870
+#: builtin/grep.c:883
 msgid "show filenames relative to top directory"
 msgstr "mostrar nombres de archivo relativos al directorio superior"
 
-#: builtin/grep.c:872
+#: builtin/grep.c:885
 msgid "show only filenames instead of matching lines"
 msgstr "mostrar solo nombres de archivos en lugar de líneas encontradas"
 
-#: builtin/grep.c:874
+#: builtin/grep.c:887
 msgid "synonym for --files-with-matches"
 msgstr "sinónimo para --files-with-matches"
 
-#: builtin/grep.c:877
+#: builtin/grep.c:890
 msgid "show only the names of files without match"
 msgstr "mostrar solo los nombres de archivos sin coincidencias"
 
-#: builtin/grep.c:879
+#: builtin/grep.c:892
 msgid "print NUL after filenames"
 msgstr "imprimir NUL después del nombre de archivo"
 
-#: builtin/grep.c:882
+#: builtin/grep.c:895
 msgid "show only matching parts of a line"
 msgstr "mostrar solo partes que concuerdan de una línea"
 
-#: builtin/grep.c:884
+#: builtin/grep.c:897
 msgid "show the number of matches instead of matching lines"
 msgstr "mostrar el número de concordancias en lugar de las líneas concordantes"
 
-#: builtin/grep.c:885
+#: builtin/grep.c:898
 msgid "highlight matches"
 msgstr "resaltar concordancias"
 
-#: builtin/grep.c:887
+#: builtin/grep.c:900
 msgid "print empty line between matches from different files"
 msgstr "imprimir una línea vacía entre coincidencias de diferentes archivos"
 
-#: builtin/grep.c:889
+#: builtin/grep.c:902
 msgid "show filename only once above matches from same file"
 msgstr ""
 "mostrar el nombre de archivo solo una vez para concordancias en el mismo "
 "archivo"
 
-#: builtin/grep.c:892
+#: builtin/grep.c:905
 msgid "show <n> context lines before and after matches"
 msgstr "mostrar <n> líneas de contexto antes y después de la concordancia"
 
-#: builtin/grep.c:895
+#: builtin/grep.c:908
 msgid "show <n> context lines before matches"
 msgstr "mostrar <n> líneas de contexto antes de las concordancias"
 
-#: builtin/grep.c:897
+#: builtin/grep.c:910
 msgid "show <n> context lines after matches"
 msgstr "mostrar <n> líneas de context después de las concordancias"
 
-#: builtin/grep.c:899
+#: builtin/grep.c:912
 msgid "use <n> worker threads"
 msgstr "usar <n> hilos de trabajo"
 
-#: builtin/grep.c:900
+#: builtin/grep.c:913
 msgid "shortcut for -C NUM"
 msgstr "atajo para -C NUM"
 
-#: builtin/grep.c:903
+#: builtin/grep.c:916
 msgid "show a line with the function name before matches"
 msgstr ""
 "mostrar una línea con el nombre de la función antes de las concordancias"
 
-#: builtin/grep.c:905
+#: builtin/grep.c:918
 msgid "show the surrounding function"
 msgstr "mostrar la función circundante"
 
-#: builtin/grep.c:908
+#: builtin/grep.c:921
 msgid "read patterns from file"
 msgstr "leer patrones del archivo"
 
-#: builtin/grep.c:910
+#: builtin/grep.c:923
 msgid "match <pattern>"
 msgstr "concordar <patrón>"
 
-#: builtin/grep.c:912
+#: builtin/grep.c:925
 msgid "combine patterns specified with -e"
 msgstr "combinar patrones especificados con -e"
 
-#: builtin/grep.c:924
+#: builtin/grep.c:937
 msgid "indicate hit with exit status without output"
 msgstr "indicar concordancia con exit status sin output"
 
-#: builtin/grep.c:926
+#: builtin/grep.c:939
 msgid "show only matches from files that match all patterns"
 msgstr ""
 "mostrar solo concordancias con archivos que concuerdan todos los patrones"
 
-#: builtin/grep.c:928
-msgid "show parse tree for grep expression"
-msgstr "mostrar árbol analizado para la expresión grep"
-
-#: builtin/grep.c:932
+#: builtin/grep.c:942
 msgid "pager"
 msgstr "paginador"
 
-#: builtin/grep.c:932
+#: builtin/grep.c:942
 msgid "show matching files in the pager"
 msgstr "mostrar archivos concordantes en el paginador"
 
-#: builtin/grep.c:936
+#: builtin/grep.c:946
 msgid "allow calling of grep(1) (ignored by this build)"
 msgstr "permitir el llamado de grep(1) (ignorado por esta build)"
 
-#: builtin/grep.c:1003
+#: builtin/grep.c:1012
 msgid "no pattern given"
 msgstr "no se ha entregado patrón"
 
-#: builtin/grep.c:1039
+#: builtin/grep.c:1048
 msgid "--no-index or --untracked cannot be used with revs"
 msgstr "--no-index o --untracked no se puede usar con revs"
 
-#: builtin/grep.c:1047
+#: builtin/grep.c:1056
 #, c-format
 msgid "unable to resolve revision: %s"
 msgstr "no se posible resolver revisión: %s"
 
-#: builtin/grep.c:1077
+#: builtin/grep.c:1086
 msgid "--untracked not supported with --recurse-submodules"
 msgstr "--untracked no es soportada con --recurse-submodules"
 
-#: builtin/grep.c:1081
+#: builtin/grep.c:1090
 msgid "invalid option combination, ignoring --threads"
 msgstr "combinación de opciones inválida, ignorando --threads"
 
-#: builtin/grep.c:1084 builtin/pack-objects.c:3623
+#: builtin/grep.c:1093 builtin/pack-objects.c:3672
 msgid "no threads support, ignoring --threads"
 msgstr "no se soportan hilos, ignorando --threads"
 
-#: builtin/grep.c:1087 builtin/index-pack.c:1534 builtin/pack-objects.c:2901
+#: builtin/grep.c:1096 builtin/index-pack.c:1586 builtin/pack-objects.c:2941
 #, c-format
 msgid "invalid number of threads specified (%d)"
 msgstr "número inválido de hilos especificado (%d)"
 
-#: builtin/grep.c:1121
+#: builtin/grep.c:1130
 msgid "--open-files-in-pager only works on the worktree"
 msgstr "--open-files-in-pager solo funciona en el árbol de trabajo"
 
-#: builtin/grep.c:1147
+#: builtin/grep.c:1156
 msgid "--cached or --untracked cannot be used with --no-index"
 msgstr "--cached o --untracked no pueden ser usadas con --no-index"
 
-#: builtin/grep.c:1153
+#: builtin/grep.c:1159
+msgid "--untracked cannot be used with --cached"
+msgstr "--untracked no se puede usar con --cached"
+
+#: builtin/grep.c:1165
 msgid "--[no-]exclude-standard cannot be used for tracked contents"
 msgstr "--[no-]exclude-standard no puede ser usada para contenido rastreado"
 
-#: builtin/grep.c:1161
+#: builtin/grep.c:1173
 msgid "both --cached and trees are given"
 msgstr "--cached y árboles han sido entregados"
 
@@ -15207,12 +16049,12 @@ msgstr "ningún visualizador de manual proceso la petición"
 msgid "no info viewer handled the request"
 msgstr "ningún visor de info manejo la petición"
 
-#: builtin/help.c:520 builtin/help.c:531 git.c:337
+#: builtin/help.c:520 builtin/help.c:531 git.c:340
 #, c-format
 msgid "'%s' is aliased to '%s'"
 msgstr "'%s' tiene el alias '%s'"
 
-#: builtin/help.c:534 git.c:367
+#: builtin/help.c:534 git.c:372
 #, c-format
 msgid "bad alias.%s string: %s"
 msgstr "mal alias.%s string: %s"
@@ -15226,353 +16068,357 @@ msgstr "uso: %s%s"
 msgid "'git help config' for more information"
 msgstr "'git help config' para más información"
 
-#: builtin/index-pack.c:185
+#: builtin/index-pack.c:221
 #, c-format
 msgid "object type mismatch at %s"
 msgstr "el tipo del objeto no concuerda en %s"
 
-#: builtin/index-pack.c:205
+#: builtin/index-pack.c:241
 #, c-format
 msgid "did not receive expected object %s"
 msgstr "no se recibió el objeto esperado %s"
 
-#: builtin/index-pack.c:208
+#: builtin/index-pack.c:244
 #, c-format
 msgid "object %s: expected type %s, found %s"
 msgstr "objeto %s: tipo esperado %s, encontrado %s"
 
-#: builtin/index-pack.c:258
+#: builtin/index-pack.c:294
 #, 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:268
+#: builtin/index-pack.c:304
 msgid "early EOF"
 msgstr "EOF temprano"
 
-#: builtin/index-pack.c:269
+#: builtin/index-pack.c:305
 msgid "read error on input"
 msgstr "leer error en input"
 
-#: builtin/index-pack.c:281
+#: builtin/index-pack.c:317
 msgid "used more bytes than were available"
 msgstr "se usaron más bytes de los disponibles"
 
-#: builtin/index-pack.c:288 builtin/pack-objects.c:618
+#: builtin/index-pack.c:324 builtin/pack-objects.c:624
 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:291 builtin/unpack-objects.c:95
+#: builtin/index-pack.c:327 builtin/unpack-objects.c:95
 msgid "pack exceeds maximum allowed size"
 msgstr "paquete excede el máximo tamaño permitido"
 
-#: builtin/index-pack.c:306 builtin/repack.c:250
+#: builtin/index-pack.c:342
 #, c-format
 msgid "unable to create '%s'"
 msgstr "no se puede crear '%s'"
 
-#: builtin/index-pack.c:312
+#: builtin/index-pack.c:348
 #, c-format
 msgid "cannot open packfile '%s'"
 msgstr "no se puede abrir el archivo de paquete '%s'"
 
-#: builtin/index-pack.c:326
+#: builtin/index-pack.c:362
 msgid "pack signature mismatch"
 msgstr "firma del paquete no concuerda"
 
-#: builtin/index-pack.c:328
+#: builtin/index-pack.c:364
 #, c-format
 msgid "pack version %<PRIu32> unsupported"
 msgstr "versión de paquete %<PRIu32> no soportada"
 
-#: builtin/index-pack.c:346
+#: builtin/index-pack.c:382
 #, 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:466
+#: builtin/index-pack.c:488
 #, c-format
 msgid "inflate returned %d"
 msgstr "inflate devolvió %d"
 
-#: builtin/index-pack.c:515
+#: builtin/index-pack.c:537
 msgid "offset value overflow for delta base object"
 msgstr "valor de offset desbordado para el objeto base delta"
 
-#: builtin/index-pack.c:523
+#: builtin/index-pack.c:545
 msgid "delta base offset is out of bound"
 msgstr "offset de base delta está fuera de límites"
 
-#: builtin/index-pack.c:531
+#: builtin/index-pack.c:553
 #, c-format
 msgid "unknown object type %d"
 msgstr "tipo de objeto %d desconocido"
 
-#: builtin/index-pack.c:562
+#: builtin/index-pack.c:584
 msgid "cannot pread pack file"
 msgstr "no se puede propagar el paquete"
 
-#: builtin/index-pack.c:564
+#: builtin/index-pack.c:586
 #, 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:590
+#: builtin/index-pack.c:612
 msgid "serious inflate inconsistency"
 msgstr "inconsistencia seria en inflate"
 
-#: builtin/index-pack.c:735 builtin/index-pack.c:741 builtin/index-pack.c:765
-#: builtin/index-pack.c:804 builtin/index-pack.c:813
+#: builtin/index-pack.c:757 builtin/index-pack.c:763 builtin/index-pack.c:787
+#: builtin/index-pack.c:826 builtin/index-pack.c:835
 #, c-format
 msgid "SHA1 COLLISION FOUND WITH %s !"
 msgstr "¡COLISIÓN DE TIPO SHA1 ENCONTRADA CON %s !"
 
-#: builtin/index-pack.c:738 builtin/pack-objects.c:170
-#: builtin/pack-objects.c:230 builtin/pack-objects.c:325
+#: builtin/index-pack.c:760 builtin/pack-objects.c:171
+#: builtin/pack-objects.c:231 builtin/pack-objects.c:326
 #, c-format
 msgid "unable to read %s"
 msgstr "no se posible leer %s"
 
-#: builtin/index-pack.c:802
+#: builtin/index-pack.c:824
 #, 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:810
+#: builtin/index-pack.c:832
 #, c-format
 msgid "cannot read existing object %s"
 msgstr "no se puede leer el objeto existente %s"
 
-#: builtin/index-pack.c:824
+#: builtin/index-pack.c:846
 #, c-format
 msgid "invalid blob object %s"
 msgstr "objeto blob %s inválido"
 
-#: builtin/index-pack.c:827 builtin/index-pack.c:846
+#: builtin/index-pack.c:849 builtin/index-pack.c:868
 msgid "fsck error in packed object"
 msgstr "error de fsck en el objeto empaquetado"
 
-#: builtin/index-pack.c:848
+#: builtin/index-pack.c:870
 #, 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:920 builtin/index-pack.c:951
+#: builtin/index-pack.c:931 builtin/index-pack.c:978
 msgid "failed to apply delta"
 msgstr "falló al aplicar delta"
 
-#: builtin/index-pack.c:1121
+#: builtin/index-pack.c:1161
 msgid "Receiving objects"
 msgstr "Recibiendo objetos"
 
-#: builtin/index-pack.c:1121
+#: builtin/index-pack.c:1161
 msgid "Indexing objects"
 msgstr "Indexando objetos"
 
-#: builtin/index-pack.c:1155
+#: builtin/index-pack.c:1195
 msgid "pack is corrupted (SHA1 mismatch)"
 msgstr "paquete está corrompido (SHA1 no concuerda)"
 
-#: builtin/index-pack.c:1160
+#: builtin/index-pack.c:1200
 msgid "cannot fstat packfile"
 msgstr "no se puede fstat al archivo de paquete"
 
-#: builtin/index-pack.c:1163
+#: builtin/index-pack.c:1203
 msgid "pack has junk at the end"
 msgstr "el paquete tiene basura al final"
 
-#: builtin/index-pack.c:1175
+#: builtin/index-pack.c:1215
 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:1198
+#: builtin/index-pack.c:1238
 msgid "Resolving deltas"
 msgstr "Resolviendo deltas"
 
-#: builtin/index-pack.c:1208 builtin/pack-objects.c:2665
+#: builtin/index-pack.c:1249 builtin/pack-objects.c:2707
 #, c-format
 msgid "unable to create thread: %s"
 msgstr "no es posible crear hilo: %s"
 
-#: builtin/index-pack.c:1249
+#: builtin/index-pack.c:1282
 msgid "confusion beyond insanity"
 msgstr "confusión más allá de la locura"
 
-#: builtin/index-pack.c:1255
+#: builtin/index-pack.c:1288
 #, 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:1267
+#: builtin/index-pack.c:1300
 #, c-format
 msgid "Unexpected tail checksum for %s (disk corruption?)"
 msgstr "Tail checksum para %s inesperada (¿corrupción de disco?)"
 
-#: builtin/index-pack.c:1271
+#: builtin/index-pack.c:1304
 #, 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:1295
+#: builtin/index-pack.c:1328
 #, c-format
 msgid "unable to deflate appended object (%d)"
 msgstr "no es posible desinflar el objeto adjunto (%d)"
 
-#: builtin/index-pack.c:1391
+#: builtin/index-pack.c:1424
 #, c-format
 msgid "local object %s is corrupt"
 msgstr "objeto local %s está corrompido"
 
-#: builtin/index-pack.c:1405
+#: builtin/index-pack.c:1445
 #, c-format
-msgid "packfile name '%s' does not end with '.pack'"
-msgstr "nombre '%s' de archivo de paquete no termina con '.pack'"
+msgid "packfile name '%s' does not end with '.%s'"
+msgstr "el nombre del archivo de paquete '%s' no termina con '.%s'"
 
-#: builtin/index-pack.c:1430
+#: builtin/index-pack.c:1469
 #, c-format
 msgid "cannot write %s file '%s'"
 msgstr "no se puede escribir %s en el archivo '%s'"
 
-#: builtin/index-pack.c:1438
+#: builtin/index-pack.c:1477
 #, c-format
 msgid "cannot close written %s file '%s'"
 msgstr "no se puede cerrar escrito %s en archivo '%s'"
 
-#: builtin/index-pack.c:1462
+#: builtin/index-pack.c:1503
 msgid "error while closing pack file"
 msgstr "error mientras se cierra el archivo paquete"
 
-#: builtin/index-pack.c:1476
+#: builtin/index-pack.c:1517
 msgid "cannot store pack file"
 msgstr "no se puede guardar el archivo paquete"
 
-#: builtin/index-pack.c:1484
+#: builtin/index-pack.c:1525
 msgid "cannot store index file"
 msgstr "no se puede guardar el archivo índice"
 
-#: builtin/index-pack.c:1528 builtin/pack-objects.c:2912
+#: builtin/index-pack.c:1534
+msgid "cannot store reverse index file"
+msgstr "no se puede almacenar el archivo de índice inverso"
+
+#: builtin/index-pack.c:1580 builtin/pack-objects.c:2952
 #, c-format
 msgid "bad pack.indexversion=%<PRIu32>"
 msgstr "mal pack.indexversion=%<PRIu32>"
 
-#: builtin/index-pack.c:1592
+#: builtin/index-pack.c:1650
 #, c-format
 msgid "Cannot open existing pack file '%s'"
 msgstr "No se puede abrir el archivo paquete existente '%s'"
 
-#: builtin/index-pack.c:1594
+#: builtin/index-pack.c:1652
 #, 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:1642
+#: builtin/index-pack.c:1700
 #, 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:1649
+#: builtin/index-pack.c:1707
 #, 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:1689
+#: builtin/index-pack.c:1765
 msgid "Cannot come back to cwd"
 msgstr "No se puede regresar a cwd"
 
-#: builtin/index-pack.c:1738 builtin/index-pack.c:1741
-#: builtin/index-pack.c:1757 builtin/index-pack.c:1761
+#: builtin/index-pack.c:1819 builtin/index-pack.c:1822
+#: builtin/index-pack.c:1838 builtin/index-pack.c:1842
 #, c-format
 msgid "bad %s"
 msgstr "mal %s"
 
-#: builtin/index-pack.c:1767 builtin/init-db.c:392 builtin/init-db.c:621
+#: builtin/index-pack.c:1848 builtin/init-db.c:392 builtin/init-db.c:625
 #, c-format
 msgid "unknown hash algorithm '%s'"
 msgstr "algoritmo hash desconocido '%s'"
 
-#: builtin/index-pack.c:1782
+#: builtin/index-pack.c:1867
 msgid "--fix-thin cannot be used without --stdin"
 msgstr "--fix-thin no puede ser usada sin --stdin"
 
-#: builtin/index-pack.c:1784
+#: builtin/index-pack.c:1869
 msgid "--stdin requires a git repository"
 msgstr "--stdin requiere un repositorio git"
 
-#: builtin/index-pack.c:1786
+#: builtin/index-pack.c:1871
 msgid "--object-format cannot be used with --stdin"
 msgstr "--object-format no se puede usar con --stdin"
 
-#: builtin/index-pack.c:1792
+#: builtin/index-pack.c:1886
 msgid "--verify with no packfile name given"
 msgstr "--verify no recibió ningún nombre de archivo de paquete"
 
-#: builtin/index-pack.c:1840 builtin/unpack-objects.c:582
+#: builtin/index-pack.c:1956 builtin/unpack-objects.c:582
 msgid "fsck error in pack objects"
 msgstr "error de fsck en objetos paquete"
 
-#: builtin/init-db.c:63
+#: builtin/init-db.c:64
 #, c-format
 msgid "cannot stat template '%s'"
 msgstr "no se pudo definir template '%s'"
 
-#: builtin/init-db.c:68
+#: builtin/init-db.c:69
 #, c-format
 msgid "cannot opendir '%s'"
 msgstr "no se puede abrir directorio '%s'"
 
-#: builtin/init-db.c:80
+#: builtin/init-db.c:81
 #, c-format
 msgid "cannot readlink '%s'"
 msgstr "no se puede leer link '%s'"
 
-#: builtin/init-db.c:82
+#: builtin/init-db.c:83
 #, c-format
 msgid "cannot symlink '%s' '%s'"
 msgstr "no se puede crear symlink '%s' '%s'"
 
-#: builtin/init-db.c:88
+#: builtin/init-db.c:89
 #, c-format
 msgid "cannot copy '%s' to '%s'"
 msgstr "no se puede copiar '%s' a '%s'"
 
-#: builtin/init-db.c:92
+#: builtin/init-db.c:93
 #, c-format
 msgid "ignoring template %s"
 msgstr "ignorando template %s"
 
-#: builtin/init-db.c:123
+#: builtin/init-db.c:124
 #, c-format
 msgid "templates not found in %s"
 msgstr "template no encontrado en %s"
 
-#: builtin/init-db.c:138
+#: builtin/init-db.c:139
 #, c-format
 msgid "not copying templates from '%s': %s"
 msgstr "no se copian templates de '%s': %s"
 
-#: builtin/init-db.c:276
+#: builtin/init-db.c:275
 #, c-format
 msgid "invalid initial branch name: '%s'"
 msgstr "nombre de rama inicial inválido: '%s'"
 
-#: builtin/init-db.c:368
+#: builtin/init-db.c:367
 #, c-format
 msgid "unable to handle file type %d"
 msgstr "no es posible manejar el tipo de archivo %d"
 
-#: builtin/init-db.c:371
+#: builtin/init-db.c:370
 #, c-format
 msgid "unable to move %s to %s"
 msgstr "no se puede mover %s a %s"
@@ -15586,32 +16432,32 @@ msgstr "intentar reinicializar el repositorio con un hash diferente"
 msgid "%s already exists"
 msgstr "%s ya existe"
 
-#: builtin/init-db.c:444
+#: builtin/init-db.c:445
 #, c-format
 msgid "re-init: ignored --initial-branch=%s"
 msgstr "re-init: ignorando --initial-branch=%s"
 
-#: builtin/init-db.c:475
+#: builtin/init-db.c:476
 #, c-format
 msgid "Reinitialized existing shared Git repository in %s%s\n"
 msgstr "Reinicializado el repositorio Git compartido existente en %s%s\n"
 
-#: builtin/init-db.c:476
+#: builtin/init-db.c:477
 #, c-format
 msgid "Reinitialized existing Git repository in %s%s\n"
 msgstr "Reinicializado el repositorio Git existente en %s%s\n"
 
-#: builtin/init-db.c:480
+#: builtin/init-db.c:481
 #, c-format
 msgid "Initialized empty shared Git repository in %s%s\n"
 msgstr "Inicializado repositorio Git compartido vacío en %s%s\n"
 
-#: builtin/init-db.c:481
+#: builtin/init-db.c:482
 #, c-format
 msgid "Initialized empty Git repository in %s%s\n"
 msgstr "Inicializado repositorio Git vacío en %s%s\n"
 
-#: builtin/init-db.c:530
+#: builtin/init-db.c:531
 msgid ""
 "git init [-q | --quiet] [--bare] [--template=<template-directory>] [--"
 "shared[=<permissions>]] [<directory>]"
@@ -15619,38 +16465,42 @@ msgstr ""
 "git init [-q | --quiet] [--bare] [--template=<directorio-template>] [--"
 "shared[=<permisos>]] [<directorio>]"
 
-#: builtin/init-db.c:556
+#: builtin/init-db.c:557
 msgid "permissions"
 msgstr "permisos"
 
-#: builtin/init-db.c:557
+#: builtin/init-db.c:558
 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:563
+#: builtin/init-db.c:564
 msgid "override the name of the initial branch"
 msgstr "sobrescribir el nombre de la rama inicial"
 
-#: builtin/init-db.c:564
+#: builtin/init-db.c:565 builtin/verify-pack.c:74
 msgid "hash"
 msgstr "hash"
 
-#: builtin/init-db.c:565 builtin/show-index.c:22
+#: builtin/init-db.c:566 builtin/show-index.c:22 builtin/verify-pack.c:75
 msgid "specify the hash algorithm to use"
 msgstr "especificar el algoritmo hash a usar"
 
-#: builtin/init-db.c:598 builtin/init-db.c:603
+#: builtin/init-db.c:573
+msgid "--separate-git-dir and --bare are mutually exclusive"
+msgstr "--separate-git-dir y --bare son mutuamente excluyentes"
+
+#: builtin/init-db.c:602 builtin/init-db.c:607
 #, c-format
 msgid "cannot mkdir %s"
 msgstr "no se pude crear directorio %s"
 
-#: builtin/init-db.c:607
+#: builtin/init-db.c:611 builtin/init-db.c:666
 #, c-format
 msgid "cannot chdir to %s"
 msgstr "no se puede aplicar chdir a %s"
 
-#: builtin/init-db.c:634
+#: builtin/init-db.c:638
 #, c-format
 msgid ""
 "%s (or --work-tree=<directory>) not allowed without specifying %s (or --git-"
@@ -15659,11 +16509,15 @@ msgstr ""
 "%s (o --work-tree=<directorio>) no se permite sin especificar %s (o --git-"
 "dir=<directorio>)"
 
-#: builtin/init-db.c:662
+#: builtin/init-db.c:690
 #, c-format
 msgid "Cannot access work tree '%s'"
 msgstr "No se puede acceder al árbol de trabajo '%s'"
 
+#: builtin/init-db.c:695
+msgid "--separate-git-dir incompatible with bare repository"
+msgstr "--separate-git-dir incompatible con el repositorio desnudo"
+
 #: builtin/interpret-trailers.c:16
 msgid ""
 "git interpret-trailers [--in-place] [--trim-empty] [(--trailer "
@@ -15728,126 +16582,130 @@ msgstr "--trailer con --only-input no tiene sentido"
 msgid "no input file given for in-place editing"
 msgstr "no se entregó archivo de entrada para edición en lugar"
 
-#: builtin/log.c:57
+#: builtin/log.c:59
 msgid "git log [<options>] [<revision-range>] [[--] <path>...]"
 msgstr "git log [<opciones>] [<rango-de-revisión>] [[--] <ruta>...]"
 
-#: builtin/log.c:58
+#: builtin/log.c:60
 msgid "git show [<options>] <object>..."
 msgstr "git show [<opciones>] <objeto>..."
 
-#: builtin/log.c:111
+#: builtin/log.c:113
 #, c-format
 msgid "invalid --decorate option: %s"
 msgstr "opción --decorate inválida: %s"
 
-#: builtin/log.c:178
+#: builtin/log.c:180
 msgid "show source"
 msgstr "mostrar fuente"
 
-#: builtin/log.c:179
-msgid "Use mail map file"
-msgstr "Usar archivo de mapa de mail"
+#: builtin/log.c:181
+msgid "use mail map file"
+msgstr "usar archivo de mapa de mail"
 
-#: builtin/log.c:182
+#: builtin/log.c:184
 msgid "only decorate refs that match <pattern>"
 msgstr "solo decorar refs que concuerden con <patrón>"
 
-#: builtin/log.c:184
+#: builtin/log.c:186
 msgid "do not decorate refs that match <pattern>"
 msgstr "no decorar refs que concuerden con <patrón>"
 
-#: builtin/log.c:185
+#: builtin/log.c:187
 msgid "decorate options"
 msgstr "opciones de decorado"
 
-#: builtin/log.c:188
-msgid "Process line range n,m in file, counting from 1"
-msgstr "Procesar rango de líneas n,m en archivo, contando desde 1"
+#: builtin/log.c:190
+msgid ""
+"trace the evolution of line range <start>,<end> or function :<funcname> in "
+"<file>"
+msgstr ""
+"rastrear la evolución del rango de línea <inicio>, <fin> o función: <nombre-"
+"funcion> en <archivo>"
+
+#: builtin/log.c:213
+msgid "-L<range>:<file> cannot be used with pathspec"
+msgstr "-L<rango>:<archivo> no se puede usar con pathspec"
 
-#: builtin/log.c:298
+#: builtin/log.c:303
 #, c-format
 msgid "Final output: %d %s\n"
 msgstr "Salida final: %d %s\n"
 
-#: builtin/log.c:556
+#: builtin/log.c:566
 #, c-format
 msgid "git show %s: bad file"
 msgstr "git show %s: mal archivo"
 
-#: builtin/log.c:571 builtin/log.c:666
+#: builtin/log.c:581 builtin/log.c:671
 #, c-format
 msgid "could not read object %s"
 msgstr "no se pudo leer objeto %s"
 
-#: builtin/log.c:691
+#: builtin/log.c:696
 #, c-format
 msgid "unknown type: %d"
 msgstr "tipo desconocido: %d"
 
-#: builtin/log.c:835
+#: builtin/log.c:841
 #, c-format
 msgid "%s: invalid cover from description mode"
 msgstr "%s: modo cover from description inválido"
 
-#: builtin/log.c:842
+#: builtin/log.c:848
 msgid "format.headers without value"
 msgstr "formate.headers. sin valor"
 
-#: builtin/log.c:957
-msgid "name of output directory is too long"
-msgstr "nombre del directorio de salida es muy largo"
-
-#: builtin/log.c:973
+#: builtin/log.c:977
 #, c-format
 msgid "cannot open patch file %s"
 msgstr "no se puede abrir archivo patch %s"
 
-#: builtin/log.c:990
+#: builtin/log.c:994
 msgid "need exactly one range"
 msgstr "necesita exactamente un rango"
 
-#: builtin/log.c:1000
+#: builtin/log.c:1004
 msgid "not a range"
 msgstr "no es un rango"
 
-#: builtin/log.c:1164
+#: builtin/log.c:1168
 msgid "cover letter needs email format"
 msgstr "letras de portada necesita formato email"
 
-#: builtin/log.c:1170
+#: builtin/log.c:1174
 msgid "failed to create cover-letter file"
 msgstr "falló al crear los archivos cover-letter"
 
-#: builtin/log.c:1249
+#: builtin/log.c:1261
 #, c-format
 msgid "insane in-reply-to: %s"
 msgstr "insano in-reply-to: %s"
 
-#: builtin/log.c:1276
+#: builtin/log.c:1288
 msgid "git format-patch [<options>] [<since> | <revision-range>]"
 msgstr "git format-patch [<opciones>] [<desde> | <rango-de-revisiones>]"
 
-#: builtin/log.c:1334
+#: builtin/log.c:1346
 msgid "two output directories?"
 msgstr "¿dos directorios de salida?"
 
-#: builtin/log.c:1445 builtin/log.c:2217 builtin/log.c:2219 builtin/log.c:2231
+#: builtin/log.c:1497 builtin/log.c:2317 builtin/log.c:2319 builtin/log.c:2331
 #, c-format
 msgid "unknown commit %s"
 msgstr "commit desconocido %s"
 
-#: builtin/log.c:1455 builtin/replace.c:58 builtin/replace.c:207
+#: builtin/log.c:1508 builtin/replace.c:58 builtin/replace.c:207
 #: builtin/replace.c:210
 #, c-format
 msgid "failed to resolve '%s' as a valid ref"
 msgstr "falló al resolver '%s' como ref válida"
 
-#: builtin/log.c:1460
+#: builtin/log.c:1517
 msgid "could not find exact merge base"
 msgstr "no se pudo encontrar una base de fusión exacta"
 
-#: builtin/log.c:1464
+#: builtin/log.c:1527
 msgid ""
 "failed to get upstream, if you want to record base commit automatically,\n"
 "please use git branch --set-upstream-to to track a remote branch.\n"
@@ -15859,281 +16717,290 @@ msgstr ""
 "O puedes especificar un commit base mediante --base=<id-commit-base> "
 "manualmente"
 
-#: builtin/log.c:1484
+#: builtin/log.c:1550
 msgid "failed to find exact merge base"
 msgstr "falló al encontrar una base de fusión exacta"
 
-#: builtin/log.c:1495
+#: builtin/log.c:1567
 msgid "base commit should be the ancestor of revision list"
 msgstr "el commit base debe ser el ancestro de la lista de revisión"
 
-#: builtin/log.c:1499
+#: builtin/log.c:1577
 msgid "base commit shouldn't be in revision list"
 msgstr "el commit base no debe estar en la lista de revisión"
 
-#: builtin/log.c:1552
+#: builtin/log.c:1635
 msgid "cannot get patch id"
 msgstr "no se puede obtener id de patch"
 
-#: builtin/log.c:1604
-msgid "failed to infer range-diff ranges"
-msgstr "falló al inferir rangos range-diff"
+#: builtin/log.c:1692
+msgid "failed to infer range-diff origin of current series"
+msgstr "falló al inferir rangos range-diff de la serie actual"
+
+#: builtin/log.c:1694
+#, c-format
+msgid "using '%s' as range-diff origin of current series"
+msgstr "usando '%s' como origen de diferencia de rango de la serie actual"
 
-#: builtin/log.c:1650
+#: builtin/log.c:1738
 msgid "use [PATCH n/m] even with a single patch"
 msgstr "use [PATCH n/m] incluso con un único parche"
 
-#: builtin/log.c:1653
+#: builtin/log.c:1741
 msgid "use [PATCH] even with multiple patches"
 msgstr "use [PATCH] incluso con múltiples parches"
 
-#: builtin/log.c:1657
+#: builtin/log.c:1745
 msgid "print patches to standard out"
 msgstr "mostrar parches en standard out"
 
-#: builtin/log.c:1659
+#: builtin/log.c:1747
 msgid "generate a cover letter"
 msgstr "generar letra de cover"
 
-#: builtin/log.c:1661
+#: builtin/log.c:1749
 msgid "use simple number sequence for output file names"
 msgstr ""
 "usar una secuencia simple de números para salida de nombres de archivos"
 
-#: builtin/log.c:1662
+#: builtin/log.c:1750
 msgid "sfx"
 msgstr "sfx"
 
-#: builtin/log.c:1663
+#: builtin/log.c:1751
 msgid "use <sfx> instead of '.patch'"
 msgstr "use <sfx> en lugar de '.patch'"
 
-#: builtin/log.c:1665
+#: builtin/log.c:1753
 msgid "start numbering patches at <n> instead of 1"
 msgstr "comenzar a numerar los parches desde <n> en lugar de 1"
 
-#: builtin/log.c:1667
+#: builtin/log.c:1755
 msgid "mark the series as Nth re-roll"
 msgstr "marcar las series como Nth re-roll"
 
-#: builtin/log.c:1669
-msgid "Use [RFC PATCH] instead of [PATCH]"
-msgstr "Use [RFC PATCH] en lugar de [PATCH]"
+#: builtin/log.c:1757
+msgid "max length of output filename"
+msgstr "tamaño máximo de nombre de archivo resultante"
+
+#: builtin/log.c:1759
+msgid "use [RFC PATCH] instead of [PATCH]"
+msgstr "use [RFC PATCH] en lugar de [PATCH]"
 
-#: builtin/log.c:1672
+#: builtin/log.c:1762
 msgid "cover-from-description-mode"
 msgstr "modo-cover-from-description"
 
-#: builtin/log.c:1673
+#: builtin/log.c:1763
 msgid "generate parts of a cover letter based on a branch's description"
 msgstr ""
 "genera partes de una carta de presentación basado en la descripción de la "
 "rama"
 
-#: builtin/log.c:1675
-msgid "Use [<prefix>] instead of [PATCH]"
-msgstr "Use [<prefijo>] en lugar de [PATCH]"
+#: builtin/log.c:1765
+msgid "use [<prefix>] instead of [PATCH]"
+msgstr "use [<prefijo>] en lugar de [PATCH]"
 
-#: builtin/log.c:1678
+#: builtin/log.c:1768
 msgid "store resulting files in <dir>"
 msgstr "guardar archivos resultantes en <dir>"
 
-#: builtin/log.c:1681
+#: builtin/log.c:1771
 msgid "don't strip/add [PATCH]"
 msgstr "no cortar/agregar [PATCH]"
 
-#: builtin/log.c:1684
+#: builtin/log.c:1774
 msgid "don't output binary diffs"
 msgstr "no mostrar diffs binarios"
 
-#: builtin/log.c:1686
+#: builtin/log.c:1776
 msgid "output all-zero hash in From header"
 msgstr "salida como hash de todos-ceros en la cabecera From"
 
-#: builtin/log.c:1688
+#: builtin/log.c:1778
 msgid "don't include a patch matching a commit upstream"
 msgstr "no incluya un parche que coincida con un commit en upstream"
 
-#: builtin/log.c:1690
+#: builtin/log.c:1780
 msgid "show patch format instead of default (patch + stat)"
 msgstr "mostrar formato de parche en lugar del default (parche + stat)"
 
-#: builtin/log.c:1692
+#: builtin/log.c:1782
 msgid "Messaging"
 msgstr "Mensajeando"
 
-#: builtin/log.c:1693
+#: builtin/log.c:1783
 msgid "header"
 msgstr "cabezal"
 
-#: builtin/log.c:1694
+#: builtin/log.c:1784
 msgid "add email header"
 msgstr "agregar cabecera email"
 
-#: builtin/log.c:1695 builtin/log.c:1696
+#: builtin/log.c:1785 builtin/log.c:1786
 msgid "email"
 msgstr "email"
 
-#: builtin/log.c:1695
+#: builtin/log.c:1785
 msgid "add To: header"
 msgstr "agregar cabecera To:"
 
-#: builtin/log.c:1696
+#: builtin/log.c:1786
 msgid "add Cc: header"
 msgstr "agregar cabecera Cc:"
 
-#: builtin/log.c:1697
+#: builtin/log.c:1787
 msgid "ident"
 msgstr "ident"
 
-#: builtin/log.c:1698
+#: builtin/log.c:1788
 msgid "set From address to <ident> (or committer ident if absent)"
 msgstr ""
 "configurar dirección From a <ident> ( o identidad de committer si está "
 "ausente)"
 
-#: builtin/log.c:1700
+#: builtin/log.c:1790
 msgid "message-id"
 msgstr "id de mensaje"
 
-#: builtin/log.c:1701
+#: builtin/log.c:1791
 msgid "make first mail a reply to <message-id>"
 msgstr "hacer primer mail una respuesta a <id de mensaje>"
 
-#: builtin/log.c:1702 builtin/log.c:1705
+#: builtin/log.c:1792 builtin/log.c:1795
 msgid "boundary"
 msgstr "límite"
 
-#: builtin/log.c:1703
+#: builtin/log.c:1793
 msgid "attach the patch"
 msgstr "adjuntar el parche"
 
-#: builtin/log.c:1706
+#: builtin/log.c:1796
 msgid "inline the patch"
 msgstr "poner el parche en línea"
 
-#: builtin/log.c:1710
+#: builtin/log.c:1800
 msgid "enable message threading, styles: shallow, deep"
 msgstr "habilitar hilos de mensajes, estilos: superficial, profundo"
 
-#: builtin/log.c:1712
+#: builtin/log.c:1802
 msgid "signature"
 msgstr "firma"
 
-#: builtin/log.c:1713
+#: builtin/log.c:1803
 msgid "add a signature"
 msgstr "agregar una firma"
 
-#: builtin/log.c:1714
+#: builtin/log.c:1804
 msgid "base-commit"
 msgstr "commit-base"
 
-#: builtin/log.c:1715
+#: builtin/log.c:1805
 msgid "add prerequisite tree info to the patch series"
 msgstr ""
 "agregar información de árbol de requisitos previos a la serie de parches"
 
-#: builtin/log.c:1717
+#: builtin/log.c:1808
 msgid "add a signature from a file"
 msgstr "agregar una firma de un archivo"
 
-#: builtin/log.c:1718
+#: builtin/log.c:1809
 msgid "don't print the patch filenames"
 msgstr "no mostrar los nombres de archivos de los parches"
 
-#: builtin/log.c:1720
+#: builtin/log.c:1811
 msgid "show progress while generating patches"
 msgstr "mostrar medidor de progreso mientras se generan los parches"
 
-#: builtin/log.c:1722
+#: builtin/log.c:1813
 msgid "show changes against <rev> in cover letter or single patch"
 msgstr "muestra cambios contra <rev> en cover letter o en un solo parche"
 
-#: builtin/log.c:1725
+#: builtin/log.c:1816
 msgid "show changes against <refspec> in cover letter or single patch"
 msgstr "muestra cambios contra <refspec> en cover letter o en un solo parche"
 
-#: builtin/log.c:1727
+#: builtin/log.c:1818
 msgid "percentage by which creation is weighted"
 msgstr "porcentaje por el cual la creación es pesada"
 
-#: builtin/log.c:1812
+#: builtin/log.c:1904
 #, c-format
 msgid "invalid ident line: %s"
 msgstr "línea de identificación inválida: %s"
 
-#: builtin/log.c:1827
+#: builtin/log.c:1919
 msgid "-n and -k are mutually exclusive"
 msgstr "-n y -k son mutuamente exclusivas"
 
-#: builtin/log.c:1829
+#: builtin/log.c:1921
 msgid "--subject-prefix/--rfc and -k are mutually exclusive"
 msgstr "--subject-prefix/--rfc y -k son mutuamente exclusivos"
 
-#: builtin/log.c:1837
+#: builtin/log.c:1929
 msgid "--name-only does not make sense"
 msgstr "--name-only no tiene sentido"
 
-#: builtin/log.c:1839
+#: builtin/log.c:1931
 msgid "--name-status does not make sense"
 msgstr "--name-status no tiene sentido"
 
-#: builtin/log.c:1841
+#: builtin/log.c:1933
 msgid "--check does not make sense"
 msgstr "--check no tiene sentido"
 
-#: builtin/log.c:1874
-msgid "standard output, or directory, which one?"
-msgstr "¿salida standard, o directorio, cual?"
+#: builtin/log.c:1955
+msgid "--stdout, --output, and --output-directory are mutually exclusive"
+msgstr "--stdout, --output, and --output-directory son mutuamente exclusivas"
 
-#: builtin/log.c:1978
+#: builtin/log.c:2078
 msgid "--interdiff requires --cover-letter or single patch"
 msgstr "--interdiff requiere --cover-letter o un parche único"
 
-#: builtin/log.c:1982
+#: builtin/log.c:2082
 msgid "Interdiff:"
 msgstr "Interdiff:"
 
-#: builtin/log.c:1983
+#: builtin/log.c:2083
 #, c-format
 msgid "Interdiff against v%d:"
 msgstr "Interdiff contra v%d:"
 
-#: builtin/log.c:1989
+#: builtin/log.c:2089
 msgid "--creation-factor requires --range-diff"
 msgstr "--creation-factor requiere --range-diff"
 
-#: builtin/log.c:1993
+#: builtin/log.c:2093
 msgid "--range-diff requires --cover-letter or single patch"
 msgstr "--range-diff requiere --cover-letter o parche único"
 
-#: builtin/log.c:2001
+#: builtin/log.c:2101
 msgid "Range-diff:"
 msgstr "Range-diff:"
 
-#: builtin/log.c:2002
+#: builtin/log.c:2102
 #, c-format
 msgid "Range-diff against v%d:"
 msgstr "Range-diff contra v%d:"
 
-#: builtin/log.c:2013
+#: builtin/log.c:2113
 #, c-format
 msgid "unable to read signature file '%s'"
 msgstr "no se puede leer la firma del archivo '%s'"
 
-#: builtin/log.c:2049
+#: builtin/log.c:2149
 msgid "Generating patches"
 msgstr "Generando parches"
 
-#: builtin/log.c:2093
+#: builtin/log.c:2193
 msgid "failed to create output files"
 msgstr "falló al crear los archivos de salida"
 
-#: builtin/log.c:2152
+#: builtin/log.c:2252
 msgid "git cherry [-v] [<upstream> [<head> [<limit>]]]"
 msgstr "git cherry [-v] [<upstream> [<head> [<límite>]]]"
 
-#: builtin/log.c:2206
+#: builtin/log.c:2306
 #, c-format
 msgid ""
 "Could not find a tracked remote branch, please specify <upstream> manually.\n"
@@ -16141,114 +17008,118 @@ msgstr ""
 "No se pudo encontrar una rama remota rastreada, por favor especifique "
 "<upstream> manualmente.\n"
 
-#: builtin/ls-files.c:471
+#: builtin/ls-files.c:486
 msgid "git ls-files [<options>] [<file>...]"
 msgstr "git ls-files [<opciones>] [<archivo>...]"
 
-#: builtin/ls-files.c:527
+#: builtin/ls-files.c:542
 msgid "identify the file status with tags"
 msgstr "identifique el estado del archivo con tags"
 
-#: builtin/ls-files.c:529
+#: builtin/ls-files.c:544
 msgid "use lowercase letters for 'assume unchanged' files"
 msgstr "usar letras minúsculas para archivos 'asumidos sin cambios'"
 
-#: builtin/ls-files.c:531
+#: builtin/ls-files.c:546
 msgid "use lowercase letters for 'fsmonitor clean' files"
 msgstr "usar letras minúsculas para archivos de 'fsmonitor clean'"
 
-#: builtin/ls-files.c:533
+#: builtin/ls-files.c:548
 msgid "show cached files in the output (default)"
 msgstr "mostrar archivos en caché en la salida (default)"
 
-#: builtin/ls-files.c:535
+#: builtin/ls-files.c:550
 msgid "show deleted files in the output"
 msgstr "mostrar archivos borrados en la salida"
 
-#: builtin/ls-files.c:537
+#: builtin/ls-files.c:552
 msgid "show modified files in the output"
 msgstr "mostrar archivos modificados en la salida"
 
-#: builtin/ls-files.c:539
+#: builtin/ls-files.c:554
 msgid "show other files in the output"
 msgstr "mostrar otros archivos en la salida"
 
-#: builtin/ls-files.c:541
+#: builtin/ls-files.c:556
 msgid "show ignored files in the output"
 msgstr "mostrar archivos ignorados en la salida"
 
-#: builtin/ls-files.c:544
+#: builtin/ls-files.c:559
 msgid "show staged contents' object name in the output"
 msgstr ""
 "mostrar contenido de nombres de objetos en el área de stage en la salida"
 
-#: builtin/ls-files.c:546
+#: builtin/ls-files.c:561
 msgid "show files on the filesystem that need to be removed"
 msgstr "mostrar archivos en el filesystem que necesitan ser borrados"
 
-#: builtin/ls-files.c:548
+#: builtin/ls-files.c:563
 msgid "show 'other' directories' names only"
 msgstr "mostrar solo nombres de 'directorios otros'"
 
-#: builtin/ls-files.c:550
+#: builtin/ls-files.c:565
 msgid "show line endings of files"
 msgstr "mostrar finales de línea de archivos"
 
-#: builtin/ls-files.c:552
+#: builtin/ls-files.c:567
 msgid "don't show empty directories"
 msgstr "no mostrar directorios vacíos"
 
-#: builtin/ls-files.c:555
+#: builtin/ls-files.c:570
 msgid "show unmerged files in the output"
 msgstr "mostrar archivos no fusionados en la salida"
 
-#: builtin/ls-files.c:557
+#: builtin/ls-files.c:572
 msgid "show resolve-undo information"
 msgstr "mostrar información resolver-deshacer"
 
-#: builtin/ls-files.c:559
+#: builtin/ls-files.c:574
 msgid "skip files matching pattern"
 msgstr "saltar archivos que concuerden con el patrón"
 
-#: builtin/ls-files.c:562
+#: builtin/ls-files.c:577
 msgid "exclude patterns are read from <file>"
 msgstr "excluir patrones leídos de <archivo>"
 
-#: builtin/ls-files.c:565
+#: builtin/ls-files.c:580
 msgid "read additional per-directory exclude patterns in <file>"
 msgstr ""
 "leer patrones de exclusión de manera adicional por directorio en <archivo>"
 
-#: builtin/ls-files.c:567
+#: builtin/ls-files.c:582
 msgid "add the standard git exclusions"
 msgstr "agregar las exclusiones standard de git"
 
-#: builtin/ls-files.c:571
+#: builtin/ls-files.c:586
 msgid "make the output relative to the project top directory"
 msgstr "hacer la salida relativa al directorio principal del proyecto"
 
-#: builtin/ls-files.c:574
+#: builtin/ls-files.c:589
 msgid "recurse through submodules"
 msgstr "recurrir a través de submódulos"
 
-#: builtin/ls-files.c:576
+#: builtin/ls-files.c:591
 msgid "if any <file> is not in the index, treat this as an error"
 msgstr "si cualquier <archivo> no está en el índice, tratarlo como un error"
 
-#: builtin/ls-files.c:577
+#: builtin/ls-files.c:592
 msgid "tree-ish"
 msgstr "árbol-ismo"
 
-#: builtin/ls-files.c:578
+#: builtin/ls-files.c:593
 msgid "pretend that paths removed since <tree-ish> are still present"
 msgstr ""
 "fingir que las rutas han sido borradas ya que todavía hay <árbol-ismos> "
 "presentes"
 
-#: builtin/ls-files.c:580
+#: builtin/ls-files.c:595
 msgid "show debugging data"
 msgstr "mostrar data de debug"
 
+#: builtin/ls-files.c:597
+msgid "suppress duplicate entries"
+msgstr "suprimir entradas duplicadas"
+
 #: builtin/ls-remote.c:9
 msgid ""
 "git ls-remote [--heads] [--tags] [--refs] [--upload-pack=<exec>]\n"
@@ -16259,39 +17130,39 @@ msgstr ""
 "                     [-q | --quiet] [--exit-code] [--get-url]\n"
 "                     [--symref] [<repositorio> [<refs>...]]"
 
-#: builtin/ls-remote.c:59
+#: builtin/ls-remote.c:60
 msgid "do not print remote URL"
 msgstr "no mostrar el URL remoto"
 
-#: builtin/ls-remote.c:60 builtin/ls-remote.c:62 builtin/rebase.c:1384
+#: builtin/ls-remote.c:61 builtin/ls-remote.c:63 builtin/rebase.c:1404
 msgid "exec"
 msgstr "ejecutar"
 
-#: builtin/ls-remote.c:61 builtin/ls-remote.c:63
+#: builtin/ls-remote.c:62 builtin/ls-remote.c:64
 msgid "path of git-upload-pack on the remote host"
 msgstr "ruta de git-upload-pack en el host remoto"
 
-#: builtin/ls-remote.c:65
+#: builtin/ls-remote.c:66
 msgid "limit to tags"
 msgstr "limitar a tags"
 
-#: builtin/ls-remote.c:66
+#: builtin/ls-remote.c:67
 msgid "limit to heads"
 msgstr "limitar a heads"
 
-#: builtin/ls-remote.c:67
+#: builtin/ls-remote.c:68
 msgid "do not show peeled tags"
 msgstr "no mostrar tags pelados"
 
-#: builtin/ls-remote.c:69
+#: builtin/ls-remote.c:70
 msgid "take url.<base>.insteadOf into account"
 msgstr "tomar url.<base>.insteadOf en cuenta"
 
-#: builtin/ls-remote.c:72
+#: 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:75
+#: 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"
 
@@ -16448,193 +17319,193 @@ msgstr "no se pudo resolver ref '%s'"
 msgid "Merging %s with %s\n"
 msgstr "Fusionando %s con %s\n"
 
-#: builtin/merge.c:56
+#: builtin/merge.c:58
 msgid "git merge [<options>] [<commit>...]"
 msgstr "git merge [<opciones>] [<commit>...]"
 
-#: builtin/merge.c:57
+#: builtin/merge.c:59
 msgid "git merge --abort"
 msgstr "git merge --abort"
 
-#: builtin/merge.c:58
+#: builtin/merge.c:60
 msgid "git merge --continue"
 msgstr "git merge --continue"
 
-#: builtin/merge.c:121
+#: builtin/merge.c:123
 msgid "switch `m' requires a value"
 msgstr "cambiar `m' requiere un valor"
 
-#: builtin/merge.c:144
+#: builtin/merge.c:146
 #, c-format
 msgid "option `%s' requires a value"
 msgstr "opción `%s' requiere un valor"
 
-#: builtin/merge.c:190
+#: builtin/merge.c:199
 #, c-format
 msgid "Could not find merge strategy '%s'.\n"
 msgstr "No se pudo encontrar estrategia de fusión '%s'.\n"
 
-#: builtin/merge.c:191
+#: builtin/merge.c:200
 #, c-format
 msgid "Available strategies are:"
 msgstr "Estrategias disponibles son:"
 
-#: builtin/merge.c:196
+#: builtin/merge.c:205
 #, c-format
 msgid "Available custom strategies are:"
 msgstr "Estrategias personalizadas disponibles son:"
 
-#: builtin/merge.c:247 builtin/pull.c:133
+#: builtin/merge.c:256 builtin/pull.c:133
 msgid "do not show a diffstat at the end of the merge"
 msgstr "no mostrar un diffstat al final de la fusión"
 
-#: builtin/merge.c:250 builtin/pull.c:136
+#: builtin/merge.c:259 builtin/pull.c:136
 msgid "show a diffstat at the end of the merge"
 msgstr "mostrar un diffstat al final de la fusión"
 
-#: builtin/merge.c:251 builtin/pull.c:139
+#: builtin/merge.c:260 builtin/pull.c:139
 msgid "(synonym to --stat)"
 msgstr "(sinónimo para --stat)"
 
-#: builtin/merge.c:253 builtin/pull.c:142
+#: builtin/merge.c:262 builtin/pull.c:142
 msgid "add (at most <n>) entries from shortlog to merge commit message"
 msgstr ""
 "agregar (como máximo <n>) entradas del shortlog al mensaje del commit de "
 "fusión"
 
-#: builtin/merge.c:256 builtin/pull.c:148
+#: builtin/merge.c:265 builtin/pull.c:148
 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:258 builtin/pull.c:151
+#: builtin/merge.c:267 builtin/pull.c:151
 msgid "perform a commit if the merge succeeds (default)"
 msgstr "realizar un commit si la fusión es exitosa (default)"
 
-#: builtin/merge.c:260 builtin/pull.c:154
+#: builtin/merge.c:269 builtin/pull.c:154
 msgid "edit message before committing"
 msgstr "editar mensaje antes de realizar commit"
 
-#: builtin/merge.c:262
+#: builtin/merge.c:271
 msgid "allow fast-forward (default)"
 msgstr "permitir fast-forwars (default)"
 
-#: builtin/merge.c:264 builtin/pull.c:161
+#: builtin/merge.c:273 builtin/pull.c:161
 msgid "abort if fast-forward is not possible"
 msgstr "abortar si fast-forward no es posible"
 
-#: builtin/merge.c:268 builtin/pull.c:164
+#: builtin/merge.c:277 builtin/pull.c:164
 msgid "verify that the named commit has a valid GPG signature"
 msgstr "verificar que el commit nombrado tiene una firma GPG válida"
 
-#: builtin/merge.c:269 builtin/notes.c:787 builtin/pull.c:168
-#: builtin/rebase.c:527 builtin/rebase.c:1398 builtin/revert.c:114
+#: builtin/merge.c:278 builtin/notes.c:787 builtin/pull.c:168
+#: builtin/rebase.c:541 builtin/rebase.c:1418 builtin/revert.c:114
 msgid "strategy"
 msgstr "estrategia"
 
-#: builtin/merge.c:270 builtin/pull.c:169
+#: builtin/merge.c:279 builtin/pull.c:169
 msgid "merge strategy to use"
 msgstr "estrategia de fusión para usar"
 
-#: builtin/merge.c:271 builtin/pull.c:172
+#: builtin/merge.c:280 builtin/pull.c:172
 msgid "option=value"
 msgstr "opción=valor"
 
-#: builtin/merge.c:272 builtin/pull.c:173
+#: builtin/merge.c:281 builtin/pull.c:173
 msgid "option for selected merge strategy"
 msgstr "opción para la estrategia de fusión seleccionada"
 
-#: builtin/merge.c:274
+#: builtin/merge.c:283
 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:281
+#: builtin/merge.c:290
 msgid "abort the current in-progress merge"
 msgstr "abortar la fusión en progreso actual"
 
-#: builtin/merge.c:283
+#: builtin/merge.c:292
 msgid "--abort but leave index and working tree alone"
 msgstr "--abort pero deja el índice y el árbol de trabajo solos"
 
-#: builtin/merge.c:285
+#: builtin/merge.c:294
 msgid "continue the current in-progress merge"
 msgstr "continuar la fusión en progreso actual"
 
-#: builtin/merge.c:287 builtin/pull.c:180
+#: builtin/merge.c:296 builtin/pull.c:180
 msgid "allow merging unrelated histories"
 msgstr "permitir fusionar historias no relacionadas"
 
-#: builtin/merge.c:294
+#: builtin/merge.c:303
 msgid "bypass pre-merge-commit and commit-msg hooks"
 msgstr "hacer un bypass a hooks pre-merge-commit y commit-msg"
 
-#: builtin/merge.c:311
+#: builtin/merge.c:320
 msgid "could not run stash."
 msgstr "no se pudo ejecutar stash."
 
-#: builtin/merge.c:316
+#: builtin/merge.c:325
 msgid "stash failed"
 msgstr "stash falló"
 
-#: builtin/merge.c:321
+#: builtin/merge.c:330
 #, c-format
 msgid "not a valid object: %s"
 msgstr "no es un objeto válido: %s"
 
-#: builtin/merge.c:343 builtin/merge.c:360
+#: builtin/merge.c:352 builtin/merge.c:369
 msgid "read-tree failed"
 msgstr "lectura de árbol falló"
 
-#: builtin/merge.c:390
+#: builtin/merge.c:399
 msgid " (nothing to squash)"
 msgstr " (nada para hacer squash)"
 
-#: builtin/merge.c:401
+#: builtin/merge.c:410
 #, c-format
 msgid "Squash commit -- not updating HEAD\n"
 msgstr "Commit de squash -- no actualizando HEAD\n"
 
-#: builtin/merge.c:451
+#: builtin/merge.c:460
 #, c-format
 msgid "No merge message -- not updating HEAD\n"
 msgstr "No hay mensaje de fusión -- no actualizando HEAD\n"
 
-#: builtin/merge.c:502
+#: builtin/merge.c:511
 #, c-format
 msgid "'%s' does not point to a commit"
 msgstr "'%s' no apunta a ningún commit"
 
-#: builtin/merge.c:589
+#: builtin/merge.c:598
 #, c-format
 msgid "Bad branch.%s.mergeoptions string: %s"
 msgstr "Mal string branch.%s.mergeoptions: %s"
 
-#: builtin/merge.c:716
+#: builtin/merge.c:724
 msgid "Not handling anything other than two heads merge."
 msgstr "No manejando nada más que fusión de dos heads."
 
-#: builtin/merge.c:730
+#: builtin/merge.c:737
 #, c-format
 msgid "Unknown option for merge-recursive: -X%s"
 msgstr "Opción desconocida para merge-recursive: -X%s"
 
-#: builtin/merge.c:745
+#: builtin/merge.c:756 t/helper/test-fast-rebase.c:209
 #, c-format
 msgid "unable to write %s"
 msgstr "no es posible escribir %s"
 
-#: builtin/merge.c:797
+#: builtin/merge.c:808
 #, c-format
 msgid "Could not read from '%s'"
 msgstr "No se puedo leer de '%s'"
 
-#: builtin/merge.c:806
+#: builtin/merge.c:817
 #, c-format
 msgid "Not committing merge; use 'git commit' to complete the merge.\n"
 msgstr ""
 "No se realiza commit de la fusión; use 'git commit' para completar la "
 "fusión.\n"
 
-#: builtin/merge.c:812
+#: builtin/merge.c:823
 msgid ""
 "Please enter a commit message to explain why this merge is necessary,\n"
 "especially if it merges an updated upstream into a topic branch.\n"
@@ -16646,11 +17517,11 @@ msgstr ""
 "tópico.\n"
 "\n"
 
-#: builtin/merge.c:817
+#: builtin/merge.c:828
 msgid "An empty message aborts the commit.\n"
 msgstr "Un mensaje vacío aborta el commit.\n"
 
-#: builtin/merge.c:820
+#: builtin/merge.c:831
 #, c-format
 msgid ""
 "Lines starting with '%c' will be ignored, and an empty message aborts\n"
@@ -16659,74 +17530,74 @@ msgstr ""
 "Líneas comenzando con '%c' serán ignoradas, y un mensaje vacío aborta\n"
 " el commit.\n"
 
-#: builtin/merge.c:873
+#: builtin/merge.c:884
 msgid "Empty commit message."
 msgstr "Mensaje de commit vacío."
 
-#: builtin/merge.c:888
+#: builtin/merge.c:899
 #, c-format
 msgid "Wonderful.\n"
 msgstr "Maravilloso.\n"
 
-#: builtin/merge.c:949
+#: builtin/merge.c:960
 #, 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:988
+#: builtin/merge.c:999
 msgid "No current branch."
 msgstr "No rama actual."
 
-#: builtin/merge.c:990
+#: builtin/merge.c:1001
 msgid "No remote for the current branch."
 msgstr "No hay remoto para la rama actual."
 
-#: builtin/merge.c:992
+#: builtin/merge.c:1003
 msgid "No default upstream defined for the current branch."
 msgstr "Por defecto, no hay un upstream  definido para la rama actual."
 
-#: builtin/merge.c:997
+#: builtin/merge.c:1008
 #, 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:1054
+#: builtin/merge.c:1065
 #, c-format
 msgid "Bad value '%s' in environment '%s'"
 msgstr "Valor erróneo '%s' en el entorno '%s'"
 
-#: builtin/merge.c:1157
+#: builtin/merge.c:1168
 #, c-format
 msgid "not something we can merge in %s: %s"
 msgstr "nada que podamos fusionar en %s: %s"
 
-#: builtin/merge.c:1191
+#: builtin/merge.c:1202
 msgid "not something we can merge"
 msgstr "nada que podamos fusionar"
 
-#: builtin/merge.c:1295
+#: builtin/merge.c:1312
 msgid "--abort expects no arguments"
 msgstr "--abort no espera argumentos"
 
-#: builtin/merge.c:1299
+#: builtin/merge.c:1316
 msgid "There is no merge to abort (MERGE_HEAD missing)."
 msgstr "No hay una fusión para abortar (falta MERGE_HEAD)"
 
-#: builtin/merge.c:1317
+#: builtin/merge.c:1334
 msgid "--quit expects no arguments"
 msgstr "--quit no espera argumentos"
 
-#: builtin/merge.c:1330
+#: builtin/merge.c:1347
 msgid "--continue expects no arguments"
 msgstr "--continue no espera argumentos"
 
-#: builtin/merge.c:1334
+#: builtin/merge.c:1351
 msgid "There is no merge in progress (MERGE_HEAD missing)."
 msgstr "No hay fusión en progreso (falta MERGE_HEAD)."
 
-#: builtin/merge.c:1350
+#: builtin/merge.c:1367
 msgid ""
 "You have not concluded your merge (MERGE_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -16734,7 +17605,7 @@ msgstr ""
 "No has concluido la fusión (existe MERGE_HEAD).\n"
 "Por favor, realiza un commit con los cambios antes de fusionar."
 
-#: builtin/merge.c:1357
+#: builtin/merge.c:1374
 msgid ""
 "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -16742,102 +17613,143 @@ msgstr ""
 "No has concluido el cherry-pick (existe CHERRY_PICK_HEAD).\n"
 "Por favor, realiza un commit con los cambios antes de fusionar."
 
-#: builtin/merge.c:1360
+#: builtin/merge.c:1377
 msgid "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists)."
 msgstr "No has concluido el cherry-pick (existe CHERRY_PICK_HEAD)."
 
-#: builtin/merge.c:1374
+#: builtin/merge.c:1391
 msgid "You cannot combine --squash with --no-ff."
 msgstr "No se puede combinar --squash con --no-ff."
 
-#: builtin/merge.c:1376
+#: builtin/merge.c:1393
 msgid "You cannot combine --squash with --commit."
 msgstr "No se puede combinar --squash con --commit."
 
-#: builtin/merge.c:1392
+#: builtin/merge.c:1409
 msgid "No commit specified and merge.defaultToUpstream not set."
 msgstr ""
 "No hay commit especificado y merge.defaultToUpstream no está configurado."
 
-#: builtin/merge.c:1409
+#: builtin/merge.c:1426
 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:1411
+#: builtin/merge.c:1428
 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:1416
+#: builtin/merge.c:1433
 #, c-format
 msgid "%s - not something we can merge"
 msgstr "%s - nada que podamos fusionar"
 
-#: builtin/merge.c:1418
+#: builtin/merge.c:1435
 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:1499
+#: builtin/merge.c:1516
 msgid "refusing to merge unrelated histories"
 msgstr "rehusando fusionar historias no relacionadas"
 
-#: builtin/merge.c:1508
+#: builtin/merge.c:1525
 msgid "Already up to date."
 msgstr "Ya está actualizado."
 
-#: builtin/merge.c:1518
+#: builtin/merge.c:1535
 #, c-format
 msgid "Updating %s..%s\n"
 msgstr "Actualizando %s..%s\n"
 
-#: builtin/merge.c:1564
+#: builtin/merge.c:1581
 #, c-format
 msgid "Trying really trivial in-index merge...\n"
 msgstr "Intentando fusión en índice realmente trivial...\n"
 
-#: builtin/merge.c:1571
+#: builtin/merge.c:1588
 #, c-format
 msgid "Nope.\n"
 msgstr "Nop.\n"
 
-#: builtin/merge.c:1596
+#: builtin/merge.c:1613
 msgid "Already up to date. Yeeah!"
 msgstr "Ya está actualizado. ¡Oh, yeaahh!"
 
-#: builtin/merge.c:1602
+#: builtin/merge.c:1619
 msgid "Not possible to fast-forward, aborting."
 msgstr "No es posible hacer fast-forward, abortando."
 
-#: builtin/merge.c:1630 builtin/merge.c:1695
+#: builtin/merge.c:1647 builtin/merge.c:1712
 #, c-format
 msgid "Rewinding the tree to pristine...\n"
 msgstr "Rebobinando el árbol a original...\n"
 
-#: builtin/merge.c:1634
+#: builtin/merge.c:1651
 #, c-format
 msgid "Trying merge strategy %s...\n"
 msgstr "Intentando estrategia de fusión %s...\n"
 
-#: builtin/merge.c:1686
+#: builtin/merge.c:1703
 #, c-format
 msgid "No merge strategy handled the merge.\n"
 msgstr "Ninguna estrategia de fusión manejó la fusión.\n"
 
-#: builtin/merge.c:1688
+#: builtin/merge.c:1705
 #, c-format
 msgid "Merge with strategy %s failed.\n"
 msgstr "Fusionar con estrategia %s falló.\n"
 
-#: builtin/merge.c:1697
+#: builtin/merge.c:1714
 #, 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:1711
+#: builtin/merge.c:1728
 #, c-format
 msgid "Automatic merge went well; stopped before committing as requested\n"
 msgstr ""
 "Fusión automática fue bien; detenida antes del commit como se solicitó\n"
 
+#: builtin/mktag.c:10
+msgid "git mktag"
+msgstr "git mktag"
+
+#: builtin/mktag.c:30
+#, c-format
+msgid "warning: tag input does not pass fsck: %s"
+msgstr "peligro: información de tag no pasa fsck: %s"
+
+#: builtin/mktag.c:41
+#, c-format
+msgid "error: tag input does not pass fsck: %s"
+msgstr "error: valor de tag no pasa fsck: %s"
+
+#: builtin/mktag.c:44
+#, c-format
+msgid "%d (FSCK_IGNORE?) should never trigger this callback"
+msgstr "%d (FSCK_IGNORE?) nunca debería activar esta devolución de llamada"
+
+#: builtin/mktag.c:59
+#, c-format
+msgid "could not read tagged object '%s'"
+msgstr "no se pudo leer objeto de tag '%s'"
+
+#: builtin/mktag.c:62
+#, c-format
+msgid "object '%s' tagged as '%s', but is a '%s' type"
+msgstr "objeto '%s' es taggeado como '%s', pero es un tipo '%s'"
+
+#: builtin/mktag.c:99
+msgid "tag on stdin did not pass our strict fsck check"
+msgstr "etiqueta en stdin no pasó nuestro estricto control fsck"
+
+#: builtin/mktag.c:102
+msgid "tag on stdin did not refer to a valid object"
+msgstr "tag en stdin no se refería a un objeto válido"
+
+#: builtin/mktag.c:105 builtin/tag.c:232
+msgid "unable to write tag file"
+msgstr "incapaz de escribir el archivo de tag"
+
 #: builtin/mktree.c:66
 msgid "git mktree [-z] [--missing] [--batch]"
 msgstr "git mktree [-z] [--missing] [--batch]"
@@ -16874,7 +17786,10 @@ msgstr ""
 "durante el repack, recolectar los pack-files de tamaño menor en un batch que "
 "es más grande que este tamaño"
 
-#: builtin/multi-pack-index.c:50 builtin/prune-packed.c:25
+#: builtin/multi-pack-index.c:50 builtin/notes.c:376 builtin/notes.c:431
+#: builtin/notes.c:509 builtin/notes.c:521 builtin/notes.c:598
+#: builtin/notes.c:665 builtin/notes.c:815 builtin/notes.c:963
+#: builtin/notes.c:985 builtin/prune-packed.c:25 builtin/tag.c:575
 msgid "too many arguments"
 msgstr "muchos argumentos"
 
@@ -16915,68 +17830,72 @@ msgstr "forzar mover/renombrar incluso si el objetivo existe"
 msgid "skip move/rename errors"
 msgstr "saltar errores de mover/renombrar"
 
-#: builtin/mv.c:169
+#: builtin/mv.c:170
 #, c-format
 msgid "destination '%s' is not a directory"
 msgstr "destino '%s' no es un directorio"
 
-#: builtin/mv.c:180
+#: builtin/mv.c:181
 #, c-format
 msgid "Checking rename of '%s' to '%s'\n"
 msgstr "Revisando cambio de nombre de '%s' a '%s'\n"
 
-#: builtin/mv.c:184
+#: builtin/mv.c:185
 msgid "bad source"
 msgstr "mala fuente"
 
-#: builtin/mv.c:187
+#: builtin/mv.c:188
 msgid "can not move directory into itself"
 msgstr "no se pude mover un directorio en sí mismo"
 
-#: builtin/mv.c:190
+#: builtin/mv.c:191
 msgid "cannot move directory over file"
 msgstr "no se puede mover un directorio dentro de un archivo"
 
-#: builtin/mv.c:199
+#: builtin/mv.c:200
 msgid "source directory is empty"
 msgstr "directorio de fuente está vacío"
 
-#: builtin/mv.c:224
+#: builtin/mv.c:225
 msgid "not under version control"
 msgstr "no se encuentra bajo control de versión"
 
 #: builtin/mv.c:227
+msgid "conflicted"
+msgstr "en conflicto"
+
+#: builtin/mv.c:230
 msgid "destination exists"
 msgstr "destino existe"
 
-#: builtin/mv.c:235
+#: builtin/mv.c:238
 #, c-format
 msgid "overwriting '%s'"
 msgstr "sobrescribiendo '%s'"
 
-#: builtin/mv.c:238
+#: builtin/mv.c:241
 msgid "Cannot overwrite"
 msgstr "No se puede sobrescribir"
 
-#: builtin/mv.c:241
+#: builtin/mv.c:244
 msgid "multiple sources for the same target"
 msgstr "múltiples fuentes para el mismo objetivo"
 
-#: builtin/mv.c:243
+#: builtin/mv.c:246
 msgid "destination directory does not exist"
 msgstr "el directorio de destino no existe"
 
-#: builtin/mv.c:250
+#: builtin/mv.c:253
 #, c-format
 msgid "%s, source=%s, destination=%s"
 msgstr "%s, fuente=%s, destino=%s"
 
-#: builtin/mv.c:271
+#: builtin/mv.c:274
 #, c-format
 msgid "Renaming %s to %s\n"
 msgstr "Renombrando %s a %s\n"
 
-#: builtin/mv.c:277 builtin/remote.c:781 builtin/repack.c:520
+#: builtin/mv.c:280 builtin/remote.c:785 builtin/repack.c:483
 #, c-format
 msgid "renaming '%s' failed"
 msgstr "renombrando '%s' falló"
@@ -16994,8 +17913,8 @@ msgid "git name-rev [<options>] --stdin"
 msgstr "git name-rev [<opciones>] --stdin"
 
 #: builtin/name-rev.c:524
-msgid "print only names (no SHA-1)"
-msgstr "imprimir sólo nombres (sin SHA-1)"
+msgid "print only ref-based names (no object names)"
+msgstr "imprimir solo nombres basados en referencias (sin nombres de objetos)"
 
 #: builtin/name-rev.c:525
 msgid "only use tags to name the commits"
@@ -17170,7 +18089,7 @@ 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:242 builtin/tag.c:533
+#: builtin/notes.c:242 builtin/tag.c:565
 #, c-format
 msgid "could not open or read '%s'"
 msgstr "no se pudo abrir o leer '%s'"
@@ -17210,12 +18129,6 @@ msgstr "falló al copiar notas de '%s' a '%s'"
 msgid "refusing to %s notes in %s (outside of refs/notes/)"
 msgstr "rechazando %s notas en %s (fuera de refs/notes/)"
 
-#: builtin/notes.c:376 builtin/notes.c:431 builtin/notes.c:509
-#: builtin/notes.c:521 builtin/notes.c:598 builtin/notes.c:665
-#: builtin/notes.c:815 builtin/notes.c:963 builtin/notes.c:985
-msgid "too many parameters"
-msgstr "demasiados parámetros"
-
 #: builtin/notes.c:389 builtin/notes.c:678
 #, c-format
 msgid "no note found for object %s."
@@ -17273,8 +18186,8 @@ msgid "load rewriting config for <command> (implies --stdin)"
 msgstr "cargar configuración de reescritura para <comando> (implica --stdin)"
 
 #: builtin/notes.c:517
-msgid "too few parameters"
-msgstr "muy pocos parámetros"
+msgid "too few arguments"
+msgstr "muy pocos argumentos"
 
 #: builtin/notes.c:538
 #, c-format
@@ -17403,7 +18316,7 @@ msgstr ""
 "commit con el resultado 'git notes merge --commit', o aborte la fusión con "
 "'git notes merge --abort'.\n"
 
-#: builtin/notes.c:897 builtin/tag.c:546
+#: builtin/notes.c:897 builtin/tag.c:578
 #, c-format
 msgid "Failed to resolve '%s' as a valid ref."
 msgstr "Falló al resolver '%s' como una ref válida."
@@ -17421,7 +18334,7 @@ msgstr "intentar eliminar 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:954 builtin/prune.c:132 builtin/worktree.c:220
+#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:148
 msgid "do not remove, show only"
 msgstr "no eliminar, solo mostrar"
 
@@ -17437,125 +18350,139 @@ msgstr "referencia-de-notas"
 msgid "use notes from <notes-ref>"
 msgstr "usar notas desde <referencia-de-notas>"
 
-#: builtin/notes.c:1034 builtin/stash.c:1608
+#: builtin/notes.c:1034 builtin/stash.c:1671
 #, c-format
 msgid "unknown subcommand: %s"
 msgstr "subcomando desconocido: %s"
 
-#: builtin/pack-objects.c:53
+#: builtin/pack-objects.c:54
 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:54
+#: builtin/pack-objects.c:55
 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:442
+#: builtin/pack-objects.c:440
+#, c-format
+msgid ""
+"write_reuse_object: could not locate %s, expected at offset %<PRIuMAX> in "
+"pack %s"
+msgstr ""
+"write_reuse_object: no se pudo localizar %s, se esperaba en el "
+"desplazamiento %<PRIuMAX> en el paquete %s"
+
+#: builtin/pack-objects.c:448
 #, c-format
 msgid "bad packed object CRC for %s"
 msgstr "mal paquete de objeto CRC para %s"
 
-#: builtin/pack-objects.c:453
+#: builtin/pack-objects.c:459
 #, c-format
 msgid "corrupt packed object for %s"
 msgstr "objeto empaquetado corrupto para %s"
 
-#: builtin/pack-objects.c:584
+#: builtin/pack-objects.c:590
 #, c-format
 msgid "recursive delta detected for object %s"
 msgstr "delta recursivo encontrado para objeto %s"
 
-#: builtin/pack-objects.c:795
+#: builtin/pack-objects.c:801
 #, c-format
 msgid "ordered %u objects, expected %<PRIu32>"
 msgstr "%u objetos ordenados, esperados %<PRIu32>"
 
-#: builtin/pack-objects.c:1003
+#: builtin/pack-objects.c:896
+#, c-format
+msgid "expected object at offset %<PRIuMAX> in pack %s"
+msgstr "objeto esperado en el desplazamiento %<PRIuMAX> en el paquete %s"
+
+#: builtin/pack-objects.c:1015
 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:1016
+#: builtin/pack-objects.c:1028
 msgid "Writing objects"
 msgstr "Escribiendo objetos"
 
-#: builtin/pack-objects.c:1077 builtin/update-index.c:90
+#: builtin/pack-objects.c:1089 builtin/update-index.c:90
 #, c-format
 msgid "failed to stat %s"
 msgstr "falló al iniciar %s"
 
-#: builtin/pack-objects.c:1130
+#: builtin/pack-objects.c:1141
 #, c-format
 msgid "wrote %<PRIu32> objects while expecting %<PRIu32>"
 msgstr "%<PRIu32> objetos escritos mientras se esperaban %<PRIu32>"
 
-#: builtin/pack-objects.c:1347
+#: builtin/pack-objects.c:1358
 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:1774
+#: builtin/pack-objects.c:1806
 #, c-format
 msgid "delta base offset overflow in pack for %s"
 msgstr "overflow de offset en la base de delta en paquete para %s"
 
-#: builtin/pack-objects.c:1783
+#: builtin/pack-objects.c:1815
 #, c-format
 msgid "delta base offset out of bound for %s"
 msgstr "outbound de offset en la base de delta para %s"
 
-#: builtin/pack-objects.c:2054
+#: builtin/pack-objects.c:2096
 msgid "Counting objects"
 msgstr "Contando objetos"
 
-#: builtin/pack-objects.c:2199
+#: builtin/pack-objects.c:2241
 #, c-format
 msgid "unable to parse object header of %s"
 msgstr "incapaz de analizar header del objeto %s"
 
-#: builtin/pack-objects.c:2269 builtin/pack-objects.c:2285
-#: builtin/pack-objects.c:2295
+#: builtin/pack-objects.c:2311 builtin/pack-objects.c:2327
+#: builtin/pack-objects.c:2337
 #, c-format
 msgid "object %s cannot be read"
 msgstr "objeto %s no puede ser leído"
 
-#: builtin/pack-objects.c:2272 builtin/pack-objects.c:2299
+#: builtin/pack-objects.c:2314 builtin/pack-objects.c:2341
 #, c-format
 msgid "object %s inconsistent object length (%<PRIuMAX> vs %<PRIuMAX>)"
 msgstr ""
 "objeto %s inconsistente con el largo del objeto (%<PRIuMAX> vs %<PRIuMAX>)"
 
-#: builtin/pack-objects.c:2309
+#: builtin/pack-objects.c:2351
 msgid "suboptimal pack - out of memory"
 msgstr "suboptimal pack - fuera de memoria"
 
-#: builtin/pack-objects.c:2624
+#: builtin/pack-objects.c:2666
 #, c-format
 msgid "Delta compression using up to %d threads"
 msgstr "Compresión delta usando hasta %d hilos"
 
-#: builtin/pack-objects.c:2763
+#: builtin/pack-objects.c:2805
 #, c-format
 msgid "unable to pack objects reachable from tag %s"
 msgstr "no es posible empaquetar objetos alcanzables desde tag %s"
 
-#: builtin/pack-objects.c:2851
+#: builtin/pack-objects.c:2891
 msgid "Compressing objects"
 msgstr "Comprimiendo objetos"
 
-#: builtin/pack-objects.c:2857
+#: builtin/pack-objects.c:2897
 msgid "inconsistency with delta count"
 msgstr "inconsistencia con la cuenta de delta"
 
-#: builtin/pack-objects.c:2929
+#: builtin/pack-objects.c:2976
 #, c-format
 msgid ""
 "value of uploadpack.blobpackfileuri must be of the form '<object-hash> <pack-"
@@ -17564,7 +18491,7 @@ msgstr ""
 "valor para uploadpack.blobpackfileuri tiene que ser de la forma '<hash-de-"
 "objeto> <hash-de-pack> <uri>' (se tuvo '%s')"
 
-#: builtin/pack-objects.c:2932
+#: builtin/pack-objects.c:2979
 #, c-format
 msgid ""
 "object already configured in another uploadpack.blobpackfileuri (got '%s')"
@@ -17572,7 +18499,7 @@ msgstr ""
 "objeto ya está configurado en otro uploadpack.blobpackfileuri (se obtuvo "
 "'%s')"
 
-#: builtin/pack-objects.c:2961
+#: builtin/pack-objects.c:3008
 #, c-format
 msgid ""
 "expected edge object ID, got garbage:\n"
@@ -17581,7 +18508,7 @@ msgstr ""
 "se espseraba ID de objeto al borde, se obtuvo basura:\n"
 "%s"
 
-#: builtin/pack-objects.c:2967
+#: builtin/pack-objects.c:3014
 #, c-format
 msgid ""
 "expected object ID, got garbage:\n"
@@ -17590,240 +18517,240 @@ msgstr ""
 "se esperaba ID de objeto, se obtuvo basuta:\n"
 "%s"
 
-#: builtin/pack-objects.c:3065
+#: builtin/pack-objects.c:3112
 msgid "invalid value for --missing"
 msgstr "valor inválido para --missing"
 
-#: builtin/pack-objects.c:3124 builtin/pack-objects.c:3232
+#: builtin/pack-objects.c:3171 builtin/pack-objects.c:3279
 msgid "cannot open pack index"
 msgstr "no se puede abrir índice de paquetes"
 
-#: builtin/pack-objects.c:3155
+#: builtin/pack-objects.c:3202
 #, c-format
 msgid "loose object at %s could not be examined"
 msgstr "objeto perdido en %s no pudo ser examinado"
 
-#: builtin/pack-objects.c:3240
+#: builtin/pack-objects.c:3287
 msgid "unable to force loose object"
 msgstr "incapaz de forzar un objeto perdido"
 
-#: builtin/pack-objects.c:3333
+#: builtin/pack-objects.c:3380
 #, c-format
 msgid "not a rev '%s'"
 msgstr "no es una rev '%s'"
 
-#: builtin/pack-objects.c:3336
+#: builtin/pack-objects.c:3383
 #, c-format
 msgid "bad revision '%s'"
 msgstr "mala revisión '%s'"
 
-#: builtin/pack-objects.c:3361
+#: builtin/pack-objects.c:3408
 msgid "unable to add recent objects"
 msgstr "incapaz de añadir objetos recientes"
 
-#: builtin/pack-objects.c:3414
+#: builtin/pack-objects.c:3461
 #, c-format
 msgid "unsupported index version %s"
 msgstr "versión de índice no soportada %s"
 
-#: builtin/pack-objects.c:3418
+#: builtin/pack-objects.c:3465
 #, c-format
 msgid "bad index version '%s'"
 msgstr "mala versión del índice '%s'"
 
-#: builtin/pack-objects.c:3456
+#: builtin/pack-objects.c:3503
 msgid "<version>[,<offset>]"
 msgstr "<versión>[,<offset>]"
 
-#: builtin/pack-objects.c:3457
+#: builtin/pack-objects.c:3504
 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:3460
+#: builtin/pack-objects.c:3507
 msgid "maximum size of each output pack file"
 msgstr "tamaño máximo de cada paquete resultante"
 
-#: builtin/pack-objects.c:3462
+#: builtin/pack-objects.c:3509
 msgid "ignore borrowed objects from alternate object store"
 msgstr "ignorar objetos prestados de otros almacenes de objetos"
 
-#: builtin/pack-objects.c:3464
+#: builtin/pack-objects.c:3511
 msgid "ignore packed objects"
 msgstr "ignorar objetos paquete"
 
-#: builtin/pack-objects.c:3466
+#: builtin/pack-objects.c:3513
 msgid "limit pack window by objects"
 msgstr "limitar ventana de paquete por objetos"
 
-#: builtin/pack-objects.c:3468
+#: builtin/pack-objects.c:3515
 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:3470
+#: builtin/pack-objects.c:3517
 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:3472
+#: builtin/pack-objects.c:3519
 msgid "reuse existing deltas"
 msgstr "reusar deltas existentes"
 
-#: builtin/pack-objects.c:3474
+#: builtin/pack-objects.c:3521
 msgid "reuse existing objects"
 msgstr "reutilizar objetos existentes"
 
-#: builtin/pack-objects.c:3476
+#: builtin/pack-objects.c:3523
 msgid "use OFS_DELTA objects"
 msgstr "usar objetos OFS_DELTA"
 
-#: builtin/pack-objects.c:3478
+#: builtin/pack-objects.c:3525
 msgid "use threads when searching for best delta matches"
 msgstr "usar hilos cuando se busque para mejores concordancias de delta"
 
-#: builtin/pack-objects.c:3480
+#: builtin/pack-objects.c:3527
 msgid "do not create an empty pack output"
 msgstr "no crear un paquete resultante vacío"
 
-#: builtin/pack-objects.c:3482
+#: builtin/pack-objects.c:3529
 msgid "read revision arguments from standard input"
 msgstr "leer argumentos de revisión de standard input"
 
-#: builtin/pack-objects.c:3484
+#: builtin/pack-objects.c:3531
 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:3487
+#: builtin/pack-objects.c:3534
 msgid "include objects reachable from any reference"
 msgstr "incluir objetos alcanzables por cualquier referencia"
 
-#: builtin/pack-objects.c:3490
+#: builtin/pack-objects.c:3537
 msgid "include objects referred by reflog entries"
 msgstr "incluir objetos referidos por entradas de reflog"
 
-#: builtin/pack-objects.c:3493
+#: builtin/pack-objects.c:3540
 msgid "include objects referred to by the index"
 msgstr "incluir objetos referidos por el índice"
 
-#: builtin/pack-objects.c:3496
+#: builtin/pack-objects.c:3543
 msgid "output pack to stdout"
 msgstr "mostrar paquete en stdout"
 
-#: builtin/pack-objects.c:3498
+#: builtin/pack-objects.c:3545
 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:3500
+#: builtin/pack-objects.c:3547
 msgid "keep unreachable objects"
 msgstr "mantener objetos inalcanzables"
 
-#: builtin/pack-objects.c:3502
+#: builtin/pack-objects.c:3549
 msgid "pack loose unreachable objects"
 msgstr "empaquetar objetos sueltos inalcanzables"
 
-#: builtin/pack-objects.c:3504
+#: builtin/pack-objects.c:3551
 msgid "unpack unreachable objects newer than <time>"
 msgstr "desempaquetar objetos inalcanzables más nuevos que <tiempo>"
 
-#: builtin/pack-objects.c:3507
+#: builtin/pack-objects.c:3554
 msgid "use the sparse reachability algorithm"
 msgstr "usar el algoritmo sparse reachability"
 
-#: builtin/pack-objects.c:3509
+#: builtin/pack-objects.c:3556
 msgid "create thin packs"
 msgstr "crear paquetes delgados"
 
-#: builtin/pack-objects.c:3511
+#: builtin/pack-objects.c:3558
 msgid "create packs suitable for shallow fetches"
 msgstr "crear paquetes adecuados para fetches superficiales"
 
-#: builtin/pack-objects.c:3513
+#: builtin/pack-objects.c:3560
 msgid "ignore packs that have companion .keep file"
 msgstr "ignorar paquetes que tienen un archivo .keep acompañante"
 
-#: builtin/pack-objects.c:3515
+#: builtin/pack-objects.c:3562
 msgid "ignore this pack"
 msgstr "ignorar este paquete"
 
-#: builtin/pack-objects.c:3517
+#: builtin/pack-objects.c:3564
 msgid "pack compression level"
 msgstr "nivel de compresión del paquete"
 
-#: builtin/pack-objects.c:3519
+#: builtin/pack-objects.c:3566
 msgid "do not hide commits by grafts"
 msgstr "no ocultar commits por injertos"
 
-#: builtin/pack-objects.c:3521
+#: builtin/pack-objects.c:3568
 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:3523
+#: builtin/pack-objects.c:3570
 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:3527
+#: builtin/pack-objects.c:3574
 msgid "write a bitmap index if possible"
 msgstr "escribir un índice de bitmap si es posible"
 
-#: builtin/pack-objects.c:3531
+#: builtin/pack-objects.c:3578
 msgid "handling for missing objects"
 msgstr "manejo de objetos perdidos"
 
-#: builtin/pack-objects.c:3534
+#: builtin/pack-objects.c:3581
 msgid "do not pack objects in promisor packfiles"
 msgstr "no se puede empaquetar objetos en packfiles promisores"
 
-#: builtin/pack-objects.c:3536
+#: builtin/pack-objects.c:3583
 msgid "respect islands during delta compression"
 msgstr "respetar islas durante la compresión delta"
 
-#: builtin/pack-objects.c:3538
+#: builtin/pack-objects.c:3585
 msgid "protocol"
 msgstr "protocolo"
 
-#: builtin/pack-objects.c:3539
+#: builtin/pack-objects.c:3586
 msgid "exclude any configured uploadpack.blobpackfileuri with this protocol"
 msgstr ""
 "excluyendo cualquier uploadpack.blobpackfileuri configurado con este "
 "protocolo"
 
-#: builtin/pack-objects.c:3568
+#: builtin/pack-objects.c:3617
 #, 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:3573
+#: builtin/pack-objects.c:3622
 #, c-format
 msgid "pack.deltaCacheLimit is too high, forcing %d"
 msgstr "pack.deltaCacheLimit es muy grande, forzando %d"
 
-#: builtin/pack-objects.c:3627
+#: builtin/pack-objects.c:3676
 msgid "--max-pack-size cannot be used to build a pack for transfer"
 msgstr ""
 "--max-pack-size no puede ser usado para construir un paquete para "
 "transferencia"
 
-#: builtin/pack-objects.c:3629
+#: builtin/pack-objects.c:3678
 msgid "minimum pack size limit is 1 MiB"
 msgstr "tamaño mínimo del paquete es 1 MiB"
 
-#: builtin/pack-objects.c:3634
+#: builtin/pack-objects.c:3683
 msgid "--thin cannot be used to build an indexable pack"
 msgstr "--thin no puede ser usado para construir un paquete indexable"
 
-#: builtin/pack-objects.c:3637
+#: builtin/pack-objects.c:3686
 msgid "--keep-unreachable and --unpack-unreachable are incompatible"
 msgstr "--keep-unreachable y --unpack-unreachable son incompatibles"
 
-#: builtin/pack-objects.c:3643
+#: builtin/pack-objects.c:3692
 msgid "cannot use --filter without --stdout"
 msgstr "no se puede usar--filter sin --stdout"
 
-#: builtin/pack-objects.c:3703
+#: builtin/pack-objects.c:3752
 msgid "Enumerating objects"
 msgstr "Enumerando objetos"
 
-#: builtin/pack-objects.c:3734
+#: builtin/pack-objects.c:3783
 #, c-format
 msgid ""
 "Total %<PRIu32> (delta %<PRIu32>), reused %<PRIu32> (delta %<PRIu32>), pack-"
@@ -17832,6 +18759,20 @@ msgstr ""
 "Total %<PRIu32> (delta %<PRIu32>), reusado %<PRIu32> (delta %<PRIu32>), pack-"
 "reusado %<PRIu32>"
 
+#: builtin/pack-redundant.c:601
+msgid ""
+"'git pack-redundant' is nominated for removal.\n"
+"If you still use this command, please add an extra\n"
+"option, '--i-still-use-this', on the command line\n"
+"and let us know you still use it by sending an e-mail\n"
+"to <git@vger.kernel.org>.  Thanks.\n"
+msgstr ""
+"'git pack-redundant' está nominado para su eliminación.\n"
+"Si todavía usa este comando, agregue un extra\n"
+"opción, '--i-still-use-this', en la línea de comando\n"
+"y háganos saber que todavía lo usa enviando un correo electrónico\n"
+"a <git@vger.kernel.org>. Gracias.\n"
+
 #: builtin/pack-refs.c:8
 msgid "git pack-refs [<options>]"
 msgstr "git pack-refs [<opciones>]"
@@ -17890,7 +18831,7 @@ msgstr "Opciones relacionadas a fusión"
 msgid "incorporate changes by rebasing rather than merging"
 msgstr "incorporar cambios por rebase en lugar de fusión"
 
-#: builtin/pull.c:158 builtin/rebase.c:478 builtin/revert.c:126
+#: builtin/pull.c:158 builtin/rebase.c:492 builtin/revert.c:126
 msgid "allow fast-forward"
 msgstr "permitir fast-forward"
 
@@ -17915,49 +18856,19 @@ msgstr "número de submódulos que realizan pull en paralelo"
 msgid "Invalid value for pull.ff: %s"
 msgstr "Valor inválido para pull.ff: %s"
 
-#: builtin/pull.c:349
-msgid ""
-"Pulling without specifying how to reconcile divergent branches is\n"
-"discouraged. You can squelch this message by running one of the following\n"
-"commands sometime before your next pull:\n"
-"\n"
-"  git config pull.rebase false  # merge (the default strategy)\n"
-"  git config pull.rebase true   # rebase\n"
-"  git config pull.ff only       # fast-forward only\n"
-"\n"
-"You can replace \"git config\" with \"git config --global\" to set a "
-"default\n"
-"preference for all repositories. You can also pass --rebase, --no-rebase,\n"
-"or --ff-only on the command line to override the configured default per\n"
-"invocation.\n"
-msgstr ""
-"Hacer un pull sin especificar cómo reconciliar las ramas es poco\n"
-"recomendable. Puedes eliminar este mensaje usando uno de los\n"
-"siguientes comandos antes de tu siguiente pull:\n"
-"\n"
-"  git config pull.rebase false  # hacer merge (estrategia por defecto)\n"
-"  git config pull.rebase true   # aplicar rebase\n"
-"  git config pull.ff only       # aplicar solo fast-forward\n"
-"\n"
-"Puedes reemplazar \"git config\" con \"git config --global\" para aplicar\n"
-"la preferencia en todos los repositorios. Puedes también pasar --rebase,\n"
-"--no-rebase, o --ff-only en el comando para sobreescribir la configuración\n"
-"por defecto en cada invocación.\n"
-"\n"
-
-#: builtin/pull.c:459
+#: builtin/pull.c:445
 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:461
+#: builtin/pull.c:447
 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:462
+#: builtin/pull.c:448
 msgid ""
 "Generally this means that you provided a wildcard refspec which had no\n"
 "matches on the remote end."
@@ -17966,7 +18877,7 @@ msgstr ""
 "tiene\n"
 "concordancia en el final remoto."
 
-#: builtin/pull.c:465
+#: builtin/pull.c:451
 #, c-format
 msgid ""
 "You asked to pull from the remote '%s', but did not specify\n"
@@ -17977,44 +18888,43 @@ 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:470 builtin/rebase.c:1234 git-parse-remote.sh:73
+#: builtin/pull.c:456 builtin/rebase.c:1253
 msgid "You are not currently on a branch."
 msgstr "No te encuentras actualmente en la rama."
 
-#: builtin/pull.c:472 builtin/pull.c:487 git-parse-remote.sh:79
+#: builtin/pull.c:458 builtin/pull.c:473
 msgid "Please specify which branch you want to rebase against."
 msgstr "Por favor especifica a qué rama quieres rebasar."
 
-#: builtin/pull.c:474 builtin/pull.c:489 git-parse-remote.sh:82
+#: builtin/pull.c:460 builtin/pull.c:475
 msgid "Please specify which branch you want to merge with."
 msgstr "Por favor especifica a qué rama quieres fusionar."
 
-#: builtin/pull.c:475 builtin/pull.c:490
+#: builtin/pull.c:461 builtin/pull.c:476
 msgid "See git-pull(1) for details."
 msgstr "Ver git-pull(1) para detalles."
 
-#: builtin/pull.c:477 builtin/pull.c:483 builtin/pull.c:492
-#: builtin/rebase.c:1240 git-parse-remote.sh:64
+#: builtin/pull.c:463 builtin/pull.c:469 builtin/pull.c:478
+#: builtin/rebase.c:1259
 msgid "<remote>"
 msgstr "<remoto>"
 
-#: builtin/pull.c:477 builtin/pull.c:492 builtin/pull.c:497
-#: git-parse-remote.sh:65
+#: builtin/pull.c:463 builtin/pull.c:478 builtin/pull.c:483
 msgid "<branch>"
 msgstr "<rama>"
 
-#: builtin/pull.c:485 builtin/rebase.c:1232 git-parse-remote.sh:75
+#: builtin/pull.c:471 builtin/rebase.c:1251
 msgid "There is no tracking information for the current branch."
 msgstr "No hay información de rastreo para la rama actual."
 
-#: builtin/pull.c:494 git-parse-remote.sh:95
+#: builtin/pull.c:480
 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:499
+#: builtin/pull.c:485
 #, c-format
 msgid ""
 "Your configuration specifies to merge with the ref '%s'\n"
@@ -18023,28 +18933,58 @@ 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:610
+#: builtin/pull.c:596
 #, c-format
 msgid "unable to access commit %s"
 msgstr "no es posible acceder al commit %s"
 
-#: builtin/pull.c:895
+#: builtin/pull.c:902
 msgid "ignoring --verify-signatures for rebase"
 msgstr "ignorando --verify-signatures para rebase"
 
-#: builtin/pull.c:955
+#: builtin/pull.c:930
+msgid ""
+"Pulling without specifying how to reconcile divergent branches is\n"
+"discouraged. You can squelch this message by running one of the following\n"
+"commands sometime before your next pull:\n"
+"\n"
+"  git config pull.rebase false  # merge (the default strategy)\n"
+"  git config pull.rebase true   # rebase\n"
+"  git config pull.ff only       # fast-forward only\n"
+"\n"
+"You can replace \"git config\" with \"git config --global\" to set a "
+"default\n"
+"preference for all repositories. You can also pass --rebase, --no-rebase,\n"
+"or --ff-only on the command line to override the configured default per\n"
+"invocation.\n"
+msgstr ""
+"Hacer un pull sin especificar cómo reconciliar las ramas es poco\n"
+"recomendable. Puedes eliminar este mensaje usando uno de los\n"
+"siguientes comandos antes de tu siguiente pull:\n"
+"\n"
+"  git config pull.rebase false  # hacer merge (estrategia por defecto)\n"
+"  git config pull.rebase true   # aplicar rebase\n"
+"  git config pull.ff only       # aplicar solo fast-forward\n"
+"\n"
+"Puedes reemplazar \"git config\" con \"git config --global\" para aplicar\n"
+"la preferencia en todos los repositorios. Puedes también pasar --rebase,\n"
+"--no-rebase, o --ff-only en el comando para sobreescribir la configuración\n"
+"por defecto en cada invocación.\n"
+"\n"
+
+#: builtin/pull.c:991
 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:959
+#: builtin/pull.c:995
 msgid "pull with rebase"
 msgstr "pull con rebase"
 
-#: builtin/pull.c:960
+#: builtin/pull.c:996
 msgid "please commit or stash them."
 msgstr "por favor realiza un commit o un stash con ellos."
 
-#: builtin/pull.c:985
+#: builtin/pull.c:1021
 #, c-format
 msgid ""
 "fetch updated the current branch head.\n"
@@ -18055,7 +18995,7 @@ msgstr ""
 "realizando fast-forward al árbol de trabajo\n"
 "desde commit %s."
 
-#: builtin/pull.c:991
+#: builtin/pull.c:1027
 #, c-format
 msgid ""
 "Cannot fast-forward your working tree.\n"
@@ -18072,15 +19012,15 @@ msgstr ""
 "$ git reset --hard\n"
 "para recuperar."
 
-#: builtin/pull.c:1006
+#: builtin/pull.c:1042
 msgid "Cannot merge multiple branches into empty head."
 msgstr "No se puede fusionar múltiples ramas en un head vacío."
 
-#: builtin/pull.c:1010
+#: builtin/pull.c:1046
 msgid "Cannot rebase onto multiple branches."
 msgstr "No se puede rebasar en múltiples ramas."
 
-#: builtin/pull.c:1018
+#: builtin/pull.c:1067
 msgid "cannot rebase with locally recorded submodule modifications"
 msgstr ""
 "no se puede rebasar con modificaciones de submódulos grabadas localmente"
@@ -18090,15 +19030,15 @@ msgid "git push [<options>] [<repository> [<refspec>...]]"
 msgstr ""
 "git push [<opciones>] [<repositorio> [<especificaciones-de-referencia>...]]"
 
-#: builtin/push.c:112
+#: builtin/push.c:111
 msgid "tag shorthand without <tag>"
 msgstr "taquigrafía de tag sin <tag>"
 
-#: builtin/push.c:122
+#: builtin/push.c:119
 msgid "--delete only accepts plain target ref names"
 msgstr "--delete solo acepta como objetivos nombres de ref planos"
 
-#: builtin/push.c:168
+#: builtin/push.c:164
 msgid ""
 "\n"
 "To choose either option permanently, see push.default in 'git help config'."
@@ -18107,7 +19047,7 @@ msgstr ""
 "Para elegir si la opción es permanente, mira push.default en 'git help "
 "config'."
 
-#: builtin/push.c:171
+#: builtin/push.c:167
 #, c-format
 msgid ""
 "The upstream branch of your current branch does not match\n"
@@ -18132,7 +19072,7 @@ msgstr ""
 "    git push %s HEAD\n"
 "%s"
 
-#: builtin/push.c:186
+#: builtin/push.c:182
 #, c-format
 msgid ""
 "You are not currently on a branch.\n"
@@ -18147,7 +19087,7 @@ msgstr ""
 "\n"
 "\tgit push %s HEAD:<nombre-de-rama-remota>\n"
 
-#: builtin/push.c:200
+#: builtin/push.c:194
 #, c-format
 msgid ""
 "The current branch %s has no upstream branch.\n"
@@ -18161,12 +19101,12 @@ msgstr ""
 "\n"
 "\tgit push --set-upstream %s %s\n"
 
-#: builtin/push.c:208
+#: builtin/push.c:202
 #, 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:211
+#: builtin/push.c:205
 #, c-format
 msgid ""
 "You are pushing to remote '%s', which is not the upstream of\n"
@@ -18177,13 +19117,13 @@ msgstr ""
 "la rama actual '%s', sin decirme qué poner en el push\n"
 "para actualizar en qué rama de remoto."
 
-#: builtin/push.c:270
+#: builtin/push.c:260
 msgid ""
 "You didn't specify any refspecs to push, and push.default is \"nothing\"."
 msgstr ""
 "No se especificó ningún refspecs para hacer push, y push.default es \"nada\"."
 
-#: builtin/push.c:277
+#: builtin/push.c:267
 msgid ""
 "Updates were rejected because the tip of your current branch is behind\n"
 "its remote counterpart. Integrate the remote changes (e.g.\n"
@@ -18195,7 +19135,7 @@ msgstr ""
 "'git pull ...') antes de hacer push de nuevo.\n"
 "Mira 'Note about fast-forwards' en 'git push --help' para más detalles."
 
-#: builtin/push.c:283
+#: builtin/push.c:273
 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"
@@ -18208,7 +19148,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:289
+#: builtin/push.c:279
 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"
@@ -18222,12 +19162,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:296
+#: builtin/push.c:286
 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:299
+#: builtin/push.c:289
 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"
@@ -18237,99 +19177,117 @@ 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:361
+#: builtin/push.c:294
+msgid ""
+"Updates were rejected because the tip of the remote-tracking\n"
+"branch has been updated since the last checkout. You may want\n"
+"to integrate those changes locally (e.g., 'git pull ...')\n"
+"before forcing an update.\n"
+msgstr ""
+"Las actualizaciones se rechazaron porque la sugerencia del seguimiento "
+"remoto\n"
+"rama se ha actualizado desde la última vez que se realizó la compra. Es "
+"posible que desee\n"
+"para integrar esos cambios localmente (por ejemplo, 'git pull ...')\n"
+"antes de forzar una actualización.\n"
+
+#: builtin/push.c:364
 #, c-format
 msgid "Pushing to %s\n"
 msgstr "Haciendo push a %s\n"
 
-#: builtin/push.c:368
+#: builtin/push.c:371
 #, c-format
 msgid "failed to push some refs to '%s'"
 msgstr "falló el push de algunas referencias a '%s'"
 
-#: builtin/push.c:542
+#: builtin/push.c:553
 msgid "repository"
 msgstr "repositorio"
 
-#: builtin/push.c:543 builtin/send-pack.c:164
+#: builtin/push.c:554 builtin/send-pack.c:189
 msgid "push all refs"
 msgstr "realizar push a todas las refs"
 
-#: builtin/push.c:544 builtin/send-pack.c:166
+#: builtin/push.c:555 builtin/send-pack.c:191
 msgid "mirror all refs"
 msgstr "realizar mirror a todas las refs"
 
-#: builtin/push.c:546
+#: builtin/push.c:557
 msgid "delete refs"
 msgstr "borrar refs"
 
-#: builtin/push.c:547
+#: builtin/push.c:558
 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:550 builtin/send-pack.c:167
+#: builtin/push.c:561 builtin/send-pack.c:192
 msgid "force updates"
 msgstr "forzar actualizaciones"
 
-#: builtin/push.c:551 builtin/send-pack.c:179
+#: builtin/push.c:562 builtin/send-pack.c:204
 msgid "<refname>:<expect>"
 msgstr "<refname>:<expect>"
 
-#: builtin/push.c:552 builtin/send-pack.c:180
+#: builtin/push.c:563 builtin/send-pack.c:205
 msgid "require old value of ref to be at this value"
 msgstr "requiere haber valor viejo de ref en este valor"
 
-#: builtin/push.c:555
+#: builtin/push.c:566 builtin/send-pack.c:208
+msgid "require remote updates to be integrated locally"
+msgstr "requieren que las actualizaciones remotas se integren localmente"
+
+#: builtin/push.c:569
 msgid "control recursive pushing of submodules"
 msgstr "controlar push recursivo de submódulos"
 
-#: builtin/push.c:556 builtin/send-pack.c:174
+#: builtin/push.c:570 builtin/send-pack.c:199
 msgid "use thin pack"
 msgstr "usar empaquetado delgado"
 
-#: builtin/push.c:557 builtin/push.c:558 builtin/send-pack.c:161
-#: builtin/send-pack.c:162
+#: builtin/push.c:571 builtin/push.c:572 builtin/send-pack.c:186
+#: builtin/send-pack.c:187
 msgid "receive pack program"
 msgstr "recibir programa de paquete"
 
-#: builtin/push.c:559
+#: builtin/push.c:573
 msgid "set upstream for git pull/status"
 msgstr "configurar upstream para git pulll/status"
 
-#: builtin/push.c:562
+#: builtin/push.c:576
 msgid "prune locally removed refs"
 msgstr "recortando refs eliminadas localmente"
 
-#: builtin/push.c:564
+#: builtin/push.c:578
 msgid "bypass pre-push hook"
 msgstr "hacer un bypass al hook pre-push"
 
-#: builtin/push.c:565
+#: builtin/push.c:579
 msgid "push missing but relevant tags"
 msgstr "realizar push de tags faltantes pero relevantes"
 
-#: builtin/push.c:567 builtin/send-pack.c:168
+#: builtin/push.c:581 builtin/send-pack.c:193
 msgid "GPG sign the push"
 msgstr "Firmar con GPG el push"
 
-#: builtin/push.c:569 builtin/send-pack.c:175
+#: builtin/push.c:583 builtin/send-pack.c:200
 msgid "request atomic transaction on remote side"
 msgstr "solicitar transacción atómica en el lado remoto"
 
-#: builtin/push.c:587
+#: builtin/push.c:601
 msgid "--delete is incompatible with --all, --mirror and --tags"
 msgstr "--delete es incompatible con --all, --mirror y --tags"
 
-#: builtin/push.c:589
+#: builtin/push.c:603
 msgid "--delete doesn't make sense without any refs"
 msgstr "--delete no tiene sentido sin ninguna referencia"
 
-#: builtin/push.c:609
+#: builtin/push.c:623
 #, c-format
 msgid "bad repository '%s'"
 msgstr "mal repositorio '%s'"
 
-#: builtin/push.c:610
+#: builtin/push.c:624
 msgid ""
 "No configured push destination.\n"
 "Either specify the URL from the command-line or configure a remote "
@@ -18351,70 +19309,78 @@ msgstr ""
 "\n"
 "    git push <nombre>\n"
 
-#: builtin/push.c:625
+#: builtin/push.c:639
 msgid "--all and --tags are incompatible"
 msgstr "--all y --tags son incompatibles"
 
-#: builtin/push.c:627
+#: builtin/push.c:641
 msgid "--all can't be combined with refspecs"
 msgstr "--all no puede ser combinada con refspecs"
 
-#: builtin/push.c:631
+#: builtin/push.c:645
 msgid "--mirror and --tags are incompatible"
 msgstr "--mirror y --tags son incompatibles"
 
-#: builtin/push.c:633
+#: builtin/push.c:647
 msgid "--mirror can't be combined with refspecs"
 msgstr "--mirror no puede ser combinado con refspecs"
 
-#: builtin/push.c:636
+#: builtin/push.c:650
 msgid "--all and --mirror are incompatible"
 msgstr "--all y --mirror son incompatibles"
 
-#: builtin/push.c:640
+#: builtin/push.c:657
 msgid "push options must not have new line characters"
 msgstr "opciones de push no pueden tener caracteres de línea nueva"
 
-#: builtin/range-diff.c:8
+#: builtin/range-diff.c:9
 msgid "git range-diff [<options>] <old-base>..<old-tip> <new-base>..<new-tip>"
 msgstr ""
 "git range-diff [<opciones>] <base-vieja>..<punta-vieja> <base-nueva>..<punta-"
 "nueva>"
 
-#: builtin/range-diff.c:9
+#: builtin/range-diff.c:10
 msgid "git range-diff [<options>] <old-tip>...<new-tip>"
 msgstr "git range-diff [<opciones>] <punta-vieja>...<punta-nueva>"
 
-#: builtin/range-diff.c:10
+#: builtin/range-diff.c:11
 msgid "git range-diff [<options>] <base> <old-tip> <new-tip>"
 msgstr "git range-diff [<opciones>] <base> <punta-vieja> <punta-nueva>"
 
-#: builtin/range-diff.c:22
+#: builtin/range-diff.c:28
 msgid "Percentage by which creation is weighted"
 msgstr "Porcentaje por el cual la creación es pesada"
 
-#: builtin/range-diff.c:24
+#: builtin/range-diff.c:30
 msgid "use simple diff colors"
 msgstr "usar colores simples de diff"
 
-#: builtin/range-diff.c:26
+#: builtin/range-diff.c:32
 msgid "notes"
 msgstr "notas"
 
-#: builtin/range-diff.c:26
+#: builtin/range-diff.c:32
 msgid "passed to 'git log'"
 msgstr "pasado a 'git log'"
 
-#: builtin/range-diff.c:50 builtin/range-diff.c:54
+#: builtin/range-diff.c:35
+msgid "only emit output related to the first range"
+msgstr "solo emite salida relacionada con el primer rango"
+
+#: builtin/range-diff.c:37
+msgid "only emit output related to the second range"
+msgstr "solo emite salida relacionada con el segundo rango"
+
+#: builtin/range-diff.c:60 builtin/range-diff.c:64
 #, c-format
-msgid "no .. in range: '%s'"
-msgstr "no .. en rango: '%s'"
+msgid "not a commit range: '%s'"
+msgstr "no es un rango de commit: '%s'"
 
-#: builtin/range-diff.c:64
+#: builtin/range-diff.c:74
 msgid "single arg format must be symmetric range"
 msgstr "argumento único de formato debe ser un rango simétrico"
 
-#: builtin/range-diff.c:79
+#: builtin/range-diff.c:89
 msgid "need two commit ranges"
 msgstr "se necesitan dos rangos de commits"
 
@@ -18519,193 +19485,193 @@ msgstr ""
 msgid "git rebase --continue | --abort | --skip | --edit-todo"
 msgstr "git rebase --continue | --abort | --skip | --edit-todo"
 
-#: builtin/rebase.c:181 builtin/rebase.c:205 builtin/rebase.c:232
+#: builtin/rebase.c:195 builtin/rebase.c:219 builtin/rebase.c:246
 #, c-format
 msgid "unusable todo list: '%s'"
 msgstr "lista de pendientes inutilizable: '%s'"
 
-#: builtin/rebase.c:298
+#: builtin/rebase.c:312
 #, c-format
 msgid "could not create temporary %s"
 msgstr "no se pudo crear archivo temporal %s"
 
-#: builtin/rebase.c:304
+#: builtin/rebase.c:318
 msgid "could not mark as interactive"
 msgstr "no se pudo marcar como interactivo"
 
-#: builtin/rebase.c:358
+#: builtin/rebase.c:371
 msgid "could not generate todo list"
 msgstr "no se pudo generar lista de pendientes"
 
-#: builtin/rebase.c:399
+#: builtin/rebase.c:413
 msgid "a base commit must be provided with --upstream or --onto"
 msgstr "un commit base tiene que ser provisto con --upstream o --onto"
 
-#: builtin/rebase.c:468
+#: builtin/rebase.c:482
 msgid "git rebase--interactive [<options>]"
 msgstr "git rebase--interactive [<opciones>]"
 
-#: builtin/rebase.c:481 builtin/rebase.c:1374
+#: builtin/rebase.c:495 builtin/rebase.c:1394
 msgid "keep commits which start empty"
 msgstr "mantener commits que comienzan con vacío"
 
-#: builtin/rebase.c:485 builtin/revert.c:128
+#: builtin/rebase.c:499 builtin/revert.c:128
 msgid "allow commits with empty messages"
 msgstr "permitir commits con mensajes vacíos"
 
-#: builtin/rebase.c:487
+#: builtin/rebase.c:501
 msgid "rebase merge commits"
 msgstr "rebasando commits de fusión"
 
-#: builtin/rebase.c:489
+#: builtin/rebase.c:503
 msgid "keep original branch points of cousins"
 msgstr "mantener puntos originales de la rama de sus primos"
 
-#: builtin/rebase.c:491
+#: builtin/rebase.c:505
 msgid "move commits that begin with squash!/fixup!"
 msgstr "mover commits que comienzan con squash!/fixup!"
 
-#: builtin/rebase.c:492
+#: builtin/rebase.c:506
 msgid "sign commits"
 msgstr "firmar commits"
 
-#: builtin/rebase.c:494 builtin/rebase.c:1314
+#: builtin/rebase.c:508 builtin/rebase.c:1333
 msgid "display a diffstat of what changed upstream"
 msgstr "mostrar un diffstat de lo que cambió en upstream"
 
-#: builtin/rebase.c:496
+#: builtin/rebase.c:510
 msgid "continue rebase"
 msgstr "continuar rebase"
 
-#: builtin/rebase.c:498
+#: builtin/rebase.c:512
 msgid "skip commit"
 msgstr "saltar commit"
 
-#: builtin/rebase.c:499
+#: builtin/rebase.c:513
 msgid "edit the todo list"
 msgstr "editar la lista de pendientes"
 
-#: builtin/rebase.c:501
+#: builtin/rebase.c:515
 msgid "show the current patch"
 msgstr "mostrar el parche actual"
 
-#: builtin/rebase.c:504
+#: builtin/rebase.c:518
 msgid "shorten commit ids in the todo list"
 msgstr "ids de commits cortos en la lista de pendientes"
 
-#: builtin/rebase.c:506
+#: builtin/rebase.c:520
 msgid "expand commit ids in the todo list"
 msgstr "expandir ids de commits en la lista de pendientes"
 
-#: builtin/rebase.c:508
+#: builtin/rebase.c:522
 msgid "check the todo list"
 msgstr "revisar la lista de pendientes"
 
-#: builtin/rebase.c:510
+#: builtin/rebase.c:524
 msgid "rearrange fixup/squash lines"
 msgstr "reorganizar líneas fixup/squash"
 
-#: builtin/rebase.c:512
+#: builtin/rebase.c:526
 msgid "insert exec commands in todo list"
 msgstr "insertar comando exec en la lista de pendientes"
 
-#: builtin/rebase.c:513
+#: builtin/rebase.c:527
 msgid "onto"
 msgstr "hacia"
 
-#: builtin/rebase.c:516
+#: builtin/rebase.c:530
 msgid "restrict-revision"
 msgstr "restrict-revision"
 
-#: builtin/rebase.c:516
+#: builtin/rebase.c:530
 msgid "restrict revision"
 msgstr "restringir revision"
 
-#: builtin/rebase.c:518
+#: builtin/rebase.c:532
 msgid "squash-onto"
 msgstr "squash-onto"
 
-#: builtin/rebase.c:519
+#: builtin/rebase.c:533
 msgid "squash onto"
 msgstr "squash hacia"
 
-#: builtin/rebase.c:521
+#: builtin/rebase.c:535
 msgid "the upstream commit"
 msgstr "el commit de upstream"
 
-#: builtin/rebase.c:523
+#: builtin/rebase.c:537
 msgid "head-name"
 msgstr "head-name"
 
-#: builtin/rebase.c:523
+#: builtin/rebase.c:537
 msgid "head name"
 msgstr "nombre de head"
 
-#: builtin/rebase.c:528
+#: builtin/rebase.c:542
 msgid "rebase strategy"
 msgstr "estrategia de rebase"
 
-#: builtin/rebase.c:529
+#: builtin/rebase.c:543
 msgid "strategy-opts"
 msgstr "strategy-opts"
 
-#: builtin/rebase.c:530
+#: builtin/rebase.c:544
 msgid "strategy options"
 msgstr "opciones de estrategia"
 
-#: builtin/rebase.c:531
+#: builtin/rebase.c:545
 msgid "switch-to"
 msgstr "cambiar a"
 
-#: builtin/rebase.c:532
+#: builtin/rebase.c:546
 msgid "the branch or commit to checkout"
 msgstr "la rama o commit para hacer checkout"
 
-#: builtin/rebase.c:533
+#: builtin/rebase.c:547
 msgid "onto-name"
 msgstr "hacia-nombre"
 
-#: builtin/rebase.c:533
+#: builtin/rebase.c:547
 msgid "onto name"
 msgstr "hacia nombre"
 
-#: builtin/rebase.c:534
+#: builtin/rebase.c:548
 msgid "cmd"
 msgstr "cmd"
 
-#: builtin/rebase.c:534
+#: builtin/rebase.c:548
 msgid "the command to run"
 msgstr "el comando para ejecutar"
 
-#: builtin/rebase.c:537 builtin/rebase.c:1407
+#: builtin/rebase.c:551 builtin/rebase.c:1427
 msgid "automatically re-schedule any `exec` that fails"
 msgstr "reprogramar automaticamente cualquier `exec` que falle"
 
-#: builtin/rebase.c:553
+#: builtin/rebase.c:567
 msgid "--[no-]rebase-cousins has no effect without --rebase-merges"
 msgstr "--[no-]rebase-cousins no tiene efecto sin --rebase-merges"
 
-#: builtin/rebase.c:569
+#: builtin/rebase.c:583
 #, c-format
 msgid "%s requires the merge backend"
 msgstr "%s requiere un backend de fusión"
 
-#: builtin/rebase.c:612
+#: builtin/rebase.c:626
 #, c-format
 msgid "could not get 'onto': '%s'"
 msgstr "no se pudo conseguir 'onto': '%s'"
 
-#: builtin/rebase.c:629
+#: builtin/rebase.c:643
 #, c-format
 msgid "invalid orig-head: '%s'"
 msgstr "orig-head inválido: '%s'"
 
-#: builtin/rebase.c:654
+#: builtin/rebase.c:668
 #, c-format
 msgid "ignoring invalid allow_rerere_autoupdate: '%s'"
 msgstr "ignorando inválido allow_rerere_autoupdate: '%s'"
 
-#: builtin/rebase.c:799 git-rebase--preserve-merges.sh:81
+#: builtin/rebase.c:813 git-rebase--preserve-merges.sh:81
 msgid ""
 "Resolve all conflicts manually, mark them as resolved with\n"
 "\"git add/rm <conflicted_files>\", then run \"git rebase --continue\".\n"
@@ -18720,7 +19686,7 @@ msgstr ""
 "Para abortar y regresar al estado previo al \"git rebase\", ejecuta \"git "
 "rebase --abort\"."
 
-#: builtin/rebase.c:882
+#: builtin/rebase.c:896
 #, c-format
 msgid ""
 "\n"
@@ -18739,7 +19705,7 @@ msgstr ""
 "\n"
 "Como resultado, git no puede hacer rebase con ellos."
 
-#: builtin/rebase.c:1208
+#: builtin/rebase.c:1227
 #, c-format
 msgid ""
 "unrecognized empty type '%s'; valid values are \"drop\", \"keep\", and \"ask"
@@ -18748,7 +19714,7 @@ msgstr ""
 "tipo '%s' vacío y desconocido; valores válidos son \"drop\", \"keep\", y "
 "\"ask\"."
 
-#: builtin/rebase.c:1226
+#: builtin/rebase.c:1245
 #, c-format
 msgid ""
 "%s\n"
@@ -18765,7 +19731,7 @@ msgstr ""
 "    git rebase '<rama>'\n"
 "\n"
 
-#: builtin/rebase.c:1242
+#: builtin/rebase.c:1261
 #, c-format
 msgid ""
 "If you wish to set tracking information for this branch you can do so with:\n"
@@ -18778,137 +19744,149 @@ msgstr ""
 "    git branch --set-upstream-to=%s/<rama> %s\n"
 "\n"
 
-#: builtin/rebase.c:1272
+#: builtin/rebase.c:1291
 msgid "exec commands cannot contain newlines"
 msgstr "comandos exec no pueden contener newlines"
 
-#: builtin/rebase.c:1276
+#: builtin/rebase.c:1295
 msgid "empty exec command"
 msgstr "comando exec vacío"
 
-#: builtin/rebase.c:1305
+#: builtin/rebase.c:1324
 msgid "rebase onto given branch instead of upstream"
 msgstr "haciendo rebase hacia rama dada en lugar de upstream"
 
-#: builtin/rebase.c:1307
+#: builtin/rebase.c:1326
 msgid "use the merge-base of upstream and branch as the current base"
 msgstr "usar la base de fusión de upstream y la rama como base actual"
 
-#: builtin/rebase.c:1309
+#: builtin/rebase.c:1328
 msgid "allow pre-rebase hook to run"
 msgstr "permitir ejecutar hook pre-rebase"
 
-#: builtin/rebase.c:1311
+#: builtin/rebase.c:1330
 msgid "be quiet. implies --no-stat"
 msgstr "ser silencioso implica --no-stat"
 
-#: builtin/rebase.c:1317
+#: builtin/rebase.c:1336
 msgid "do not show diffstat of what changed upstream"
 msgstr "no mostrar un diffstat de lo que cambió en upstream"
 
-#: builtin/rebase.c:1320
-msgid "add a Signed-off-by: line to each commit"
+#: builtin/rebase.c:1339
+msgid "add a Signed-off-by trailer to each commit"
 msgstr "agregar una línea \"Firmado-por\" al mensaje de cada commit"
 
-#: builtin/rebase.c:1322 builtin/rebase.c:1326 builtin/rebase.c:1328
-msgid "passed to 'git am'"
-msgstr "pasado a 'git am'"
+#: builtin/rebase.c:1342
+msgid "make committer date match author date"
+msgstr "hacer que la fecha del commit concuerde con la fecha de autoría"
+
+#: builtin/rebase.c:1344
+msgid "ignore author date and use current date"
+msgstr "ignorar la fecha del autor y usar la fecha actual"
+
+#: builtin/rebase.c:1346
+msgid "synonym of --reset-author-date"
+msgstr "sinónimo para --reset-author-date"
 
-#: builtin/rebase.c:1330 builtin/rebase.c:1332
+#: builtin/rebase.c:1348 builtin/rebase.c:1352
 msgid "passed to 'git apply'"
 msgstr "pasado a 'git-apply'"
 
-#: builtin/rebase.c:1334 builtin/rebase.c:1337
+#: builtin/rebase.c:1350
+msgid "ignore changes in whitespace"
+msgstr "ignorar cambios en espacios en blanco"
+
+#: builtin/rebase.c:1354 builtin/rebase.c:1357
 msgid "cherry-pick all commits, even if unchanged"
 msgstr "cherry-pick todos los commits, incluso si no han cambiado"
 
-#: builtin/rebase.c:1339
+#: builtin/rebase.c:1359
 msgid "continue"
 msgstr "continuar"
 
-#: builtin/rebase.c:1342
+#: builtin/rebase.c:1362
 msgid "skip current patch and continue"
 msgstr "saltar el parche y continuar"
 
-#: builtin/rebase.c:1344
+#: builtin/rebase.c:1364
 msgid "abort and check out the original branch"
 msgstr "aborta y revisa la rama original"
 
-#: builtin/rebase.c:1347
+#: builtin/rebase.c:1367
 msgid "abort but keep HEAD where it is"
 msgstr "aborta pero mantiene HEAD donde está"
 
-#: builtin/rebase.c:1348
+#: builtin/rebase.c:1368
 msgid "edit the todo list during an interactive rebase"
 msgstr "editar la lista de pendientes durante el rebase interactivo"
 
-#: builtin/rebase.c:1351
+#: builtin/rebase.c:1371
 msgid "show the patch file being applied or merged"
 msgstr "muestra el archivo parche siendo aplicado o fusionado"
 
-#: builtin/rebase.c:1354
+#: builtin/rebase.c:1374
 msgid "use apply strategies to rebase"
 msgstr "usar estrategias de apply para el rebase"
 
-#: builtin/rebase.c:1358
+#: builtin/rebase.c:1378
 msgid "use merging strategies to rebase"
 msgstr "usar estrategias de fusión para el rebase"
 
-#: builtin/rebase.c:1362
+#: builtin/rebase.c:1382
 msgid "let the user edit the list of commits to rebase"
 msgstr "permitir al usuario editar la lista de commits para rebasar"
 
-#: builtin/rebase.c:1366
+#: builtin/rebase.c:1386
 msgid "(DEPRECATED) try to recreate merges instead of ignoring them"
 msgstr "(DEPRECADO) intentar recrear merges en lugar de ignorarlos"
 
-#: builtin/rebase.c:1371
+#: builtin/rebase.c:1391
 msgid "how to handle commits that become empty"
 msgstr "como manejar commits que se vuelven vacíos"
 
-#: builtin/rebase.c:1378
+#: builtin/rebase.c:1398
 msgid "move commits that begin with squash!/fixup! under -i"
 msgstr "mover commits que comienzan con squash!/fixup! bajo -i"
 
-#: builtin/rebase.c:1385
+#: builtin/rebase.c:1405
 msgid "add exec lines after each commit of the editable list"
 msgstr "agregar líneas exec tras cada acommit de la lista editable"
 
-#: builtin/rebase.c:1389
+#: builtin/rebase.c:1409
 msgid "allow rebasing commits with empty messages"
 msgstr "permitir rebase commits con mensajes vacíos"
 
-#: builtin/rebase.c:1393
+#: builtin/rebase.c:1413
 msgid "try to rebase merges instead of skipping them"
 msgstr "intentar fusiones por rebase en lugar de saltarlas"
 
-#: builtin/rebase.c:1396
+#: builtin/rebase.c:1416
 msgid "use 'merge-base --fork-point' to refine upstream"
 msgstr "use 'merge-base --fork-point' para refinar upstream"
 
-#: builtin/rebase.c:1398
+#: builtin/rebase.c:1418
 msgid "use the given merge strategy"
 msgstr "usar la estrategia de merge dada"
 
-#: builtin/rebase.c:1400 builtin/revert.c:115
+#: builtin/rebase.c:1420 builtin/revert.c:115
 msgid "option"
 msgstr "opción"
 
-#: builtin/rebase.c:1401
+#: builtin/rebase.c:1421
 msgid "pass the argument through to the merge strategy"
 msgstr "pasar el argumento para la estrategia de fusión"
 
-#: builtin/rebase.c:1404
+#: builtin/rebase.c:1424
 msgid "rebase all reachable commits up to the root(s)"
 msgstr "hacer rebase a todos los commits alcanzables hasta la raíz(raíces)"
 
-#: builtin/rebase.c:1409
+#: builtin/rebase.c:1429
 msgid "apply all changes, even those already present upstream"
 msgstr ""
 "aplicar todos los cambios, incluso aquellos que ya están presentes en "
 "upstream"
 
-#: builtin/rebase.c:1426
+#: builtin/rebase.c:1446
 msgid ""
 "the rebase.useBuiltin support has been removed!\n"
 "See its entry in 'git help config' for details."
@@ -18916,42 +19894,42 @@ msgstr ""
 "el soporte para rebase.useBuiltin ha sido eliminado!\n"
 "Vea su entrada en 'git help config' para detalles."
 
-#: builtin/rebase.c:1432
+#: builtin/rebase.c:1452
 msgid "It looks like 'git am' is in progress. Cannot rebase."
 msgstr "Parece que 'git am' está en progreso. No se puede rebasar."
 
-#: builtin/rebase.c:1473
+#: builtin/rebase.c:1493
 msgid ""
 "git rebase --preserve-merges is deprecated. Use --rebase-merges instead."
 msgstr ""
 "git rebase --preserve-merges está deprecado. Use --rebase-merges en su lugar."
 
-#: builtin/rebase.c:1478
+#: builtin/rebase.c:1498
 msgid "cannot combine '--keep-base' with '--onto'"
 msgstr "no se puede combinar '--keep-base' con '--onto'"
 
-#: builtin/rebase.c:1480
+#: builtin/rebase.c:1500
 msgid "cannot combine '--keep-base' with '--root'"
 msgstr "no se puede combinar '--keep-base' con '--root'"
 
-#: builtin/rebase.c:1484
+#: builtin/rebase.c:1504
 msgid "cannot combine '--root' with '--fork-point'"
 msgstr "no se puede combinar '--root' con '--fork-point'"
 
-#: builtin/rebase.c:1487
+#: builtin/rebase.c:1507
 msgid "No rebase in progress?"
 msgstr "¿No hay rebase en progreso?"
 
-#: builtin/rebase.c:1491
+#: builtin/rebase.c:1511
 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."
 
-#: builtin/rebase.c:1514
+#: builtin/rebase.c:1534 t/helper/test-fast-rebase.c:123
 msgid "Cannot read HEAD"
 msgstr "No se puede leer el HEAD"
 
-#: builtin/rebase.c:1526
+#: builtin/rebase.c:1546
 msgid ""
 "You must edit all merge conflicts and then\n"
 "mark them as resolved using git add"
@@ -18959,16 +19937,16 @@ msgstr ""
 "Tienes que editar todos los conflictos de fusión y luego\n"
 "marcarlos como resueltos usando git add"
 
-#: builtin/rebase.c:1545
+#: builtin/rebase.c:1565
 msgid "could not discard worktree changes"
 msgstr "no se pudo descartar los cambios del árbol de trabajo"
 
-#: builtin/rebase.c:1564
+#: builtin/rebase.c:1584
 #, c-format
 msgid "could not move back to %s"
 msgstr "no se puede regresar a %s"
 
-#: builtin/rebase.c:1610
+#: builtin/rebase.c:1630
 #, c-format
 msgid ""
 "It seems that there is already a %s directory, and\n"
@@ -18989,135 +19967,135 @@ msgstr ""
 "y ejecútame nuevamente. Me estoy deteniendo en caso de que tengas\n"
 "algo de valor ahí.\n"
 
-#: builtin/rebase.c:1638
+#: builtin/rebase.c:1658
 msgid "switch `C' expects a numerical value"
 msgstr "switch `C' espera un valor numérico"
 
-#: builtin/rebase.c:1680
+#: builtin/rebase.c:1700
 #, c-format
 msgid "Unknown mode: %s"
 msgstr "Modo desconocido: %s"
 
-#: builtin/rebase.c:1702
+#: builtin/rebase.c:1739
 msgid "--strategy requires --merge or --interactive"
 msgstr "--strategy requiere --merge o --interactive"
 
-#: builtin/rebase.c:1732
+#: builtin/rebase.c:1769
 msgid "cannot combine apply options with merge options"
 msgstr "no se pueden combinar opciones de apply con opciones de merge"
 
-#: builtin/rebase.c:1745
+#: builtin/rebase.c:1782
 #, c-format
 msgid "Unknown rebase backend: %s"
 msgstr "Backend de rebase desconocido: %s"
 
-#: builtin/rebase.c:1770
+#: builtin/rebase.c:1812
 msgid "--reschedule-failed-exec requires --exec or --interactive"
 msgstr "--reschedule-failed-exec requiere --exec o --interactive"
 
-#: builtin/rebase.c:1790
+#: builtin/rebase.c:1832
 msgid "cannot combine '--preserve-merges' with '--rebase-merges'"
 msgstr "no se puede combinar '--preserve-merges' con '--rebase-merges'"
 
-#: builtin/rebase.c:1794
+#: builtin/rebase.c:1836
 msgid ""
 "error: cannot combine '--preserve-merges' with '--reschedule-failed-exec'"
 msgstr ""
 "error: no se puede combinar '--preserve-merges' con '--reschedule-failed-"
 "exec'"
 
-#: builtin/rebase.c:1818
+#: builtin/rebase.c:1860
 #, c-format
 msgid "invalid upstream '%s'"
 msgstr "upstream inválido '%s'"
 
-#: builtin/rebase.c:1824
+#: builtin/rebase.c:1866
 msgid "Could not create new root commit"
 msgstr "No se pudo crear commit raíz nuevo"
 
-#: builtin/rebase.c:1850
+#: builtin/rebase.c:1892
 #, c-format
 msgid "'%s': need exactly one merge base with branch"
 msgstr "'%s': necesita exactamente una base de fusión con rama"
 
-#: builtin/rebase.c:1853
+#: builtin/rebase.c:1895
 #, c-format
 msgid "'%s': need exactly one merge base"
 msgstr "'%s': necesita exactamente una base de fusión"
 
-#: builtin/rebase.c:1861
+#: builtin/rebase.c:1903
 #, c-format
 msgid "Does not point to a valid commit '%s'"
 msgstr "No apunta a un commit válido '%s'"
 
-#: builtin/rebase.c:1887
+#: builtin/rebase.c:1931
 #, c-format
 msgid "fatal: no such branch/commit '%s'"
 msgstr "fatal: no existe la rama/commit: '%s'"
 
-#: builtin/rebase.c:1895 builtin/submodule--helper.c:40
-#: builtin/submodule--helper.c:1990
+#: builtin/rebase.c:1939 builtin/submodule--helper.c:40
+#: builtin/submodule--helper.c:2414
 #, c-format
 msgid "No such ref: %s"
 msgstr "No existe ref: %s"
 
-#: builtin/rebase.c:1906
+#: builtin/rebase.c:1950
 msgid "Could not resolve HEAD to a revision"
 msgstr "No se pudo resolver HEAD a una revisión"
 
-#: builtin/rebase.c:1927
+#: builtin/rebase.c:1971
 msgid "Please commit or stash them."
 msgstr "Por favor, confírmalos o guárdalos."
 
-#: builtin/rebase.c:1963
+#: builtin/rebase.c:2007
 #, c-format
 msgid "could not switch to %s"
 msgstr "no se pudo cambiar a %s"
 
-#: builtin/rebase.c:1974
+#: builtin/rebase.c:2018
 msgid "HEAD is up to date."
 msgstr "HEAD está actualizado."
 
-#: builtin/rebase.c:1976
+#: builtin/rebase.c:2020
 #, c-format
 msgid "Current branch %s is up to date.\n"
 msgstr "La rama actual %s está actualizada.\n"
 
-#: builtin/rebase.c:1984
+#: builtin/rebase.c:2028
 msgid "HEAD is up to date, rebase forced."
 msgstr "HEAD está actualizado, rebase forzado."
 
-#: builtin/rebase.c:1986
+#: builtin/rebase.c:2030
 #, c-format
 msgid "Current branch %s is up to date, rebase forced.\n"
 msgstr "Rama actual %s está actualizada, rebase forzado.\n"
 
-#: builtin/rebase.c:1994
+#: builtin/rebase.c:2038
 msgid "The pre-rebase hook refused to rebase."
 msgstr "El hook pre-rebase rechazó el rebase."
 
-#: builtin/rebase.c:2001
+#: builtin/rebase.c:2045
 #, c-format
 msgid "Changes to %s:\n"
 msgstr "Cambios a %s:\n"
 
-#: builtin/rebase.c:2004
+#: builtin/rebase.c:2048
 #, c-format
 msgid "Changes from %s to %s:\n"
 msgstr "Cambios desde %s a %s:\n"
 
-#: builtin/rebase.c:2029
+#: builtin/rebase.c:2073
 #, c-format
 msgid "First, rewinding head to replay your work on top of it...\n"
 msgstr ""
 "En primer lugar, rebobinando HEAD para después reproducir tus cambios encima "
 "de ésta...\n"
 
-#: builtin/rebase.c:2038
+#: builtin/rebase.c:2082
 msgid "Could not detach HEAD"
 msgstr "No se puede desacoplar HEAD"
 
-#: builtin/rebase.c:2047
+#: builtin/rebase.c:2091
 #, c-format
 msgid "Fast-forwarded %s to %s.\n"
 msgstr "Avance rápido de %s a %s.\n"
@@ -19126,7 +20104,7 @@ msgstr "Avance rápido de %s a %s.\n"
 msgid "git receive-pack <git-dir>"
 msgstr "git receive-pack <git-dir>"
 
-#: builtin/receive-pack.c:844
+#: builtin/receive-pack.c:1276
 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"
@@ -19159,7 +20137,7 @@ msgstr ""
 "Para suprimir este mensaje y mantener el comportamiento predeterminado,\n"
 "configura 'receive.denyCurrentBranch' a 'refuse'."
 
-#: builtin/receive-pack.c:864
+#: builtin/receive-pack.c:1296
 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"
@@ -19180,11 +20158,11 @@ msgstr ""
 "\n"
 "Para suprimir este mensaje, puedes configurarlo en 'refuse'."
 
-#: builtin/receive-pack.c:1970
+#: builtin/receive-pack.c:2481
 msgid "quiet"
 msgstr "tranquilo"
 
-#: builtin/receive-pack.c:1984
+#: builtin/receive-pack.c:2495
 msgid "You must specify a directory."
 msgstr "Se tiene que especificar un directorio."
 
@@ -19215,36 +20193,36 @@ msgstr "git reflog existe <ref>"
 msgid "'%s' is not a valid timestamp"
 msgstr "'%s' no es una marca de tiempo válida"
 
-#: builtin/reflog.c:606
+#: builtin/reflog.c:609
 #, c-format
 msgid "Marking reachable objects..."
 msgstr "Marcando objectos alcanzables..."
 
-#: builtin/reflog.c:644
+#: builtin/reflog.c:647
 #, c-format
 msgid "%s points nowhere!"
 msgstr "¡%s apunta a ningún lado!"
 
-#: builtin/reflog.c:696
+#: builtin/reflog.c:699
 msgid "no reflog specified to delete"
 msgstr "no reflog especificado para borrar"
 
-#: builtin/reflog.c:705
+#: builtin/reflog.c:708
 #, c-format
 msgid "not a reflog: %s"
 msgstr "no es una reflog: %s"
 
-#: builtin/reflog.c:710
+#: builtin/reflog.c:713
 #, c-format
 msgid "no reflog for '%s'"
 msgstr "no reflog para '%s'"
 
-#: builtin/reflog.c:756
+#: builtin/reflog.c:759
 #, c-format
 msgid "invalid ref format: %s"
 msgstr "formato inválido: %s"
 
-#: builtin/reflog.c:765
+#: builtin/reflog.c:768
 msgid "git reflog [ show | expire | delete | exists ]"
 msgstr "git reflog [ show | expire | delete | exists ]"
 
@@ -19382,40 +20360,35 @@ msgstr "especificar una rama master no tiene sentido con --mirror"
 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:195 builtin/remote.c:696
+#: builtin/remote.c:195 builtin/remote.c:700
 #, c-format
 msgid "remote %s already exists."
 msgstr "remoto %s ya existe."
 
-#: builtin/remote.c:199 builtin/remote.c:700
-#, c-format
-msgid "'%s' is not a valid remote name"
-msgstr "'%s' no es un nombre remoto válido"
-
-#: builtin/remote.c:239
+#: builtin/remote.c:240
 #, c-format
 msgid "Could not setup master '%s'"
 msgstr "No se pudo configurar master '%s'"
 
-#: builtin/remote.c:354
+#: builtin/remote.c:355
 #, c-format
 msgid "Could not get fetch map for refspec %s"
 msgstr "No se pudo realizar el fetch al mapa para refspec %s"
 
-#: builtin/remote.c:453 builtin/remote.c:461
+#: builtin/remote.c:454 builtin/remote.c:462
 msgid "(matching)"
 msgstr "(concordando)"
 
-#: builtin/remote.c:465
+#: builtin/remote.c:466
 msgid "(delete)"
 msgstr "(eliminar)"
 
-#: builtin/remote.c:653
+#: builtin/remote.c:655
 #, c-format
 msgid "could not set '%s'"
 msgstr "no se pudo configurar '%s'"
 
-#: builtin/remote.c:658
+#: builtin/remote.c:660
 #, c-format
 msgid ""
 "The %s configuration remote.pushDefault in:\n"
@@ -19426,17 +20399,17 @@ msgstr ""
 "\t%s:%d\n"
 "ahora nombra al remoto inexistente '%s'"
 
-#: builtin/remote.c:689 builtin/remote.c:832 builtin/remote.c:940
+#: builtin/remote.c:691 builtin/remote.c:836 builtin/remote.c:946
 #, c-format
 msgid "No such remote: '%s'"
 msgstr "No existe el remoto '%s'"
 
-#: builtin/remote.c:706
+#: builtin/remote.c:710
 #, 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:726
+#: builtin/remote.c:730
 #, c-format
 msgid ""
 "Not updating non-default fetch refspec\n"
@@ -19447,17 +20420,17 @@ msgstr ""
 "\t%s\n"
 "\tPor favor actualice la configuración manualmente si es necesario."
 
-#: builtin/remote.c:766
+#: builtin/remote.c:770
 #, c-format
 msgid "deleting '%s' failed"
 msgstr "borrando '%s' falló"
 
-#: builtin/remote.c:800
+#: builtin/remote.c:804
 #, c-format
 msgid "creating '%s' failed"
 msgstr "creando '%s' falló"
 
-#: builtin/remote.c:876
+#: builtin/remote.c:882
 msgid ""
 "Note: A branch outside the refs/remotes/ hierarchy was not removed;\n"
 "to delete it, use:"
@@ -19472,118 +20445,118 @@ msgstr[1] ""
 "eliminadas;\n"
 "para borrarlas, use:"
 
-#: builtin/remote.c:890
+#: builtin/remote.c:896
 #, c-format
 msgid "Could not remove config section '%s'"
 msgstr "No se pudo borrar la sección de configuración '%s'"
 
-#: builtin/remote.c:993
+#: builtin/remote.c:999
 #, c-format
 msgid " new (next fetch will store in remotes/%s)"
 msgstr " nuevo (siguiente fetch se guardará en remotes/%s)"
 
-#: builtin/remote.c:996
+#: builtin/remote.c:1002
 msgid " tracked"
 msgstr " rastreada"
 
-#: builtin/remote.c:998
+#: builtin/remote.c:1004
 msgid " stale (use 'git remote prune' to remove)"
 msgstr " viejo ( use 'git remote prune' para eliminar)"
 
-#: builtin/remote.c:1000
+#: builtin/remote.c:1006
 msgid " ???"
 msgstr " ???"
 
-#: builtin/remote.c:1041
+#: builtin/remote.c:1047
 #, c-format
 msgid "invalid branch.%s.merge; cannot rebase onto > 1 branch"
 msgstr "inválido branch.%s.merge; no se puede rebasar en > 1 rama"
 
-#: builtin/remote.c:1050
+#: builtin/remote.c:1056
 #, c-format
 msgid "rebases interactively onto remote %s"
 msgstr "rebasa interactivamente en remoto %s"
 
-#: builtin/remote.c:1052
+#: builtin/remote.c:1058
 #, c-format
 msgid "rebases interactively (with merges) onto remote %s"
 msgstr "rebasa interactivamente (con fusiones) en remoto %s"
 
-#: builtin/remote.c:1055
+#: builtin/remote.c:1061
 #, c-format
 msgid "rebases onto remote %s"
 msgstr "rebasa sobre el remoto %s"
 
-#: builtin/remote.c:1059
+#: builtin/remote.c:1065
 #, c-format
 msgid " merges with remote %s"
 msgstr " se fusiona con remoto %s"
 
-#: builtin/remote.c:1062
+#: builtin/remote.c:1068
 #, c-format
 msgid "merges with remote %s"
 msgstr "fusiona con remoto %s"
 
-#: builtin/remote.c:1065
+#: builtin/remote.c:1071
 #, c-format
 msgid "%-*s    and with remote %s\n"
 msgstr "%-*s y con el remoto %s\n"
 
-#: builtin/remote.c:1108
+#: builtin/remote.c:1114
 msgid "create"
 msgstr "crear"
 
-#: builtin/remote.c:1111
+#: builtin/remote.c:1117
 msgid "delete"
 msgstr "borrar"
 
-#: builtin/remote.c:1115
+#: builtin/remote.c:1121
 msgid "up to date"
 msgstr "actualizado"
 
-#: builtin/remote.c:1118
+#: builtin/remote.c:1124
 msgid "fast-forwardable"
 msgstr "puede realizar fast-forward"
 
-#: builtin/remote.c:1121
+#: builtin/remote.c:1127
 msgid "local out of date"
 msgstr "desactualizado local"
 
-#: builtin/remote.c:1128
+#: builtin/remote.c:1134
 #, c-format
 msgid "    %-*s forces to %-*s (%s)"
 msgstr "    %-*s fuerza a %-*s (%s)"
 
-#: builtin/remote.c:1131
+#: builtin/remote.c:1137
 #, c-format
 msgid "    %-*s pushes to %-*s (%s)"
 msgstr "    %-*s publica a %-*s (%s)"
 
-#: builtin/remote.c:1135
+#: builtin/remote.c:1141
 #, c-format
 msgid "    %-*s forces to %s"
 msgstr "    %-*s fuerza a %s"
 
-#: builtin/remote.c:1138
+#: builtin/remote.c:1144
 #, c-format
 msgid "    %-*s pushes to %s"
 msgstr "    %-*s publica a %s"
 
-#: builtin/remote.c:1206
+#: builtin/remote.c:1212
 msgid "do not query remotes"
 msgstr "no consultar remotos"
 
-#: builtin/remote.c:1233
+#: builtin/remote.c:1239
 #, c-format
 msgid "* remote %s"
 msgstr "* remoto %s"
 
-#: builtin/remote.c:1234
+#: builtin/remote.c:1240
 #, c-format
 msgid "  Fetch URL: %s"
 msgstr "  URL  para obtener: %s"
 
-#: builtin/remote.c:1235 builtin/remote.c:1251 builtin/remote.c:1390
+#: builtin/remote.c:1241 builtin/remote.c:1257 builtin/remote.c:1396
 msgid "(no URL)"
 msgstr "(sin URL)"
 
@@ -19591,185 +20564,185 @@ msgstr "(sin URL)"
 #. with the one in " Fetch URL: %s"
 #. translation.
 #.
-#: builtin/remote.c:1249 builtin/remote.c:1251
+#: builtin/remote.c:1255 builtin/remote.c:1257
 #, c-format
 msgid "  Push  URL: %s"
 msgstr "  URL para publicar: %s"
 
-#: builtin/remote.c:1253 builtin/remote.c:1255 builtin/remote.c:1257
+#: builtin/remote.c:1259 builtin/remote.c:1261 builtin/remote.c:1263
 #, c-format
 msgid "  HEAD branch: %s"
 msgstr "  Rama HEAD: %s"
 
-#: builtin/remote.c:1253
+#: builtin/remote.c:1259
 msgid "(not queried)"
 msgstr "(no consultado)"
 
-#: builtin/remote.c:1255
+#: builtin/remote.c:1261
 msgid "(unknown)"
 msgstr "(desconocido)"
 
-#: builtin/remote.c:1259
+#: builtin/remote.c:1265
 #, 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:1271
+#: builtin/remote.c:1277
 #, c-format
 msgid "  Remote branch:%s"
 msgid_plural "  Remote branches:%s"
 msgstr[0] "  Rama remota:%s"
 msgstr[1] "  Ramas remotas:%s"
 
-#: builtin/remote.c:1274 builtin/remote.c:1300
+#: builtin/remote.c:1280 builtin/remote.c:1306
 msgid " (status not queried)"
 msgstr " (estado no consultado)"
 
-#: builtin/remote.c:1283
+#: builtin/remote.c:1289
 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:1291
+#: builtin/remote.c:1297
 msgid "  Local refs will be mirrored by 'git push'"
 msgstr "  Las referencias locales serán reflejadas por 'git push'"
 
-#: builtin/remote.c:1297
+#: builtin/remote.c:1303
 #, 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:1318
+#: builtin/remote.c:1324
 msgid "set refs/remotes/<name>/HEAD according to remote"
 msgstr "configurar refs/remotes/<nombre>/HEAD de acuerdo al remoto"
 
-#: builtin/remote.c:1320
+#: builtin/remote.c:1326
 msgid "delete refs/remotes/<name>/HEAD"
 msgstr "borrar refs/remotos/<nombre>/HEAD"
 
-#: builtin/remote.c:1335
+#: builtin/remote.c:1341
 msgid "Cannot determine remote HEAD"
 msgstr "No se puede determinar el HEAD remoto"
 
-#: builtin/remote.c:1337
+#: builtin/remote.c:1343
 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:1347
+#: builtin/remote.c:1353
 #, c-format
 msgid "Could not delete %s"
 msgstr "No se pudo borrar %s"
 
-#: builtin/remote.c:1355
+#: builtin/remote.c:1361
 #, c-format
 msgid "Not a valid ref: %s"
 msgstr "No es un ref válido: %s"
 
-#: builtin/remote.c:1357
+#: builtin/remote.c:1363
 #, c-format
 msgid "Could not setup %s"
 msgstr "No se pudo configurar %s"
 
-#: builtin/remote.c:1375
+#: builtin/remote.c:1381
 #, c-format
 msgid " %s will become dangling!"
 msgstr " ¡%s será colgado!"
 
-#: builtin/remote.c:1376
+#: builtin/remote.c:1382
 #, c-format
 msgid " %s has become dangling!"
 msgstr " ¡%s ha sido colgado!"
 
-#: builtin/remote.c:1386
+#: builtin/remote.c:1392
 #, c-format
 msgid "Pruning %s"
 msgstr "Recortando %s"
 
-#: builtin/remote.c:1387
+#: builtin/remote.c:1393
 #, c-format
 msgid "URL: %s"
 msgstr "URL: %s"
 
-#: builtin/remote.c:1403
+#: builtin/remote.c:1409
 #, c-format
 msgid " * [would prune] %s"
 msgstr " * [ejecutará prune] %s"
 
-#: builtin/remote.c:1406
+#: builtin/remote.c:1412
 #, c-format
 msgid " * [pruned] %s"
 msgstr " * [prune realizado] %s"
 
-#: builtin/remote.c:1451
+#: builtin/remote.c:1457
 msgid "prune remotes after fetching"
 msgstr "recortar remotos tras realizar fetch"
 
-#: builtin/remote.c:1514 builtin/remote.c:1568 builtin/remote.c:1636
+#: builtin/remote.c:1521 builtin/remote.c:1577 builtin/remote.c:1647
 #, c-format
 msgid "No such remote '%s'"
 msgstr "No existe el remoto '%s'"
 
-#: builtin/remote.c:1530
+#: builtin/remote.c:1539
 msgid "add branch"
 msgstr "agregar rama"
 
-#: builtin/remote.c:1537
+#: builtin/remote.c:1546
 msgid "no remote specified"
 msgstr "no hay remotos especificados"
 
-#: builtin/remote.c:1554
+#: builtin/remote.c:1563
 msgid "query push URLs rather than fetch URLs"
 msgstr "consultar URLs de push en lugar de URLs de fetch"
 
-#: builtin/remote.c:1556
+#: builtin/remote.c:1565
 msgid "return all URLs"
 msgstr "retornar todos los URLs"
 
-#: builtin/remote.c:1584
+#: builtin/remote.c:1595
 #, c-format
 msgid "no URLs configured for remote '%s'"
 msgstr "no hay URLs configurados para remoto '%s'"
 
-#: builtin/remote.c:1610
+#: builtin/remote.c:1621
 msgid "manipulate push URLs"
 msgstr "manipular URLs de push"
 
-#: builtin/remote.c:1612
+#: builtin/remote.c:1623
 msgid "add URL"
 msgstr "agregar URL"
 
-#: builtin/remote.c:1614
+#: builtin/remote.c:1625
 msgid "delete URLs"
 msgstr "borrar URLs"
 
-#: builtin/remote.c:1621
+#: builtin/remote.c:1632
 msgid "--add --delete doesn't make sense"
 msgstr "--add --delete no tiene sentido"
 
-#: builtin/remote.c:1660
+#: builtin/remote.c:1673
 #, c-format
 msgid "Invalid old URL pattern: %s"
 msgstr "Patrón de URL viejo inválido: %s"
 
-#: builtin/remote.c:1668
+#: builtin/remote.c:1681
 #, c-format
 msgid "No such URL found: %s"
 msgstr "No se encontró URL: %s"
 
-#: builtin/remote.c:1670
+#: builtin/remote.c:1683
 msgid "Will not delete all non-push URLs"
 msgstr "No borrará todos los URLs de no-push"
 
-#: builtin/repack.c:25
+#: builtin/repack.c:26
 msgid "git repack [<options>]"
 msgstr "git repack [<opciones>]"
 
-#: builtin/repack.c:30
+#: builtin/repack.c:31
 msgid ""
 "Incremental repacks are incompatible with bitmap indexes.  Use\n"
 "--no-write-bitmap-index or disable the pack.writebitmaps configuration."
@@ -19777,137 +20750,123 @@ 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:193
+#: builtin/repack.c:198
 msgid "could not start pack-objects to repack promisor objects"
 msgstr "no se puede iniciar pack-objects para reempaquetar objetos promisores"
 
-#: builtin/repack.c:232 builtin/repack.c:418
+#: builtin/repack.c:270 builtin/repack.c:446
 msgid "repack: Expecting full hex object ID lines only from pack-objects."
 msgstr ""
 "repack: Esperando líneas de ID de objeto en full hex solo desde pack-objects."
 
-#: builtin/repack.c:256
+#: builtin/repack.c:294
 msgid "could not finish pack-objects to repack promisor objects"
 msgstr ""
 "no se puede finalizar pack-objects para reempaquetar objetos promisores"
 
-#: builtin/repack.c:294
+#: builtin/repack.c:322
 msgid "pack everything in a single pack"
 msgstr "empaquetar todo en un único paquete"
 
-#: builtin/repack.c:296
+#: builtin/repack.c:324
 msgid "same as -a, and turn unreachable objects loose"
 msgstr "lo mismo que -a, y pierde objetos inaccesibles"
 
-#: builtin/repack.c:299
+#: builtin/repack.c:327
 msgid "remove redundant packs, and run git-prune-packed"
 msgstr "eliminar paquetes redundantes, y ejecutar git-prune-packed"
 
-#: builtin/repack.c:301
+#: builtin/repack.c:329
 msgid "pass --no-reuse-delta to git-pack-objects"
 msgstr "pasar --no-reuse-delta a git-pack-objects"
 
-#: builtin/repack.c:303
+#: builtin/repack.c:331
 msgid "pass --no-reuse-object to git-pack-objects"
 msgstr "pasar --no-reuse-object a git-pack-objects"
 
-#: builtin/repack.c:305
+#: builtin/repack.c:333
 msgid "do not run git-update-server-info"
 msgstr "no ejecutar git-update-server-info"
 
-#: builtin/repack.c:308
+#: builtin/repack.c:336
 msgid "pass --local to git-pack-objects"
 msgstr "pasar --local a git-pack-objects"
 
-#: builtin/repack.c:310
+#: builtin/repack.c:338
 msgid "write bitmap index"
 msgstr "escribir un índice de bitmap"
 
-#: builtin/repack.c:312
+#: builtin/repack.c:340
 msgid "pass --delta-islands to git-pack-objects"
 msgstr "pasar --delta-islands a git-pack-objects"
 
-#: builtin/repack.c:313
+#: builtin/repack.c:341
 msgid "approxidate"
 msgstr "aproxime"
 
-#: builtin/repack.c:314
+#: builtin/repack.c:342
 msgid "with -A, do not loosen objects older than this"
 msgstr "con -A, no perder objetos más antiguos que este"
 
-#: builtin/repack.c:316
+#: builtin/repack.c:344
 msgid "with -a, repack unreachable objects"
 msgstr "con -a, re empaquetar objetos inalcanzables"
 
-#: builtin/repack.c:318
+#: builtin/repack.c:346
 msgid "size of the window used for delta compression"
 msgstr "tamaño de la ventana usado para la compresión delta"
 
-#: builtin/repack.c:319 builtin/repack.c:325
+#: builtin/repack.c:347 builtin/repack.c:353
 msgid "bytes"
 msgstr "bytes"
 
-#: builtin/repack.c:320
+#: builtin/repack.c:348
 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:322
+#: builtin/repack.c:350
 msgid "limits the maximum delta depth"
 msgstr "limita la profundidad máxima del delta"
 
-#: builtin/repack.c:324
+#: builtin/repack.c:352
 msgid "limits the maximum number of threads"
 msgstr "limita el número máximo de hilos"
 
-#: builtin/repack.c:326
+#: builtin/repack.c:354
 msgid "maximum size of each packfile"
 msgstr "tamaño máximo de cada paquete"
 
-#: builtin/repack.c:328
+#: builtin/repack.c:356
 msgid "repack objects in packs marked with .keep"
 msgstr "re-empaquetar objetos en paquetes marcados con .keep"
 
-#: builtin/repack.c:330
+#: builtin/repack.c:358
 msgid "do not repack this pack"
 msgstr "no reempaquetar este paquete"
 
-#: builtin/repack.c:340
+#: builtin/repack.c:368
 msgid "cannot delete packs in a precious-objects repo"
 msgstr "no se pueden borrar paquetes en un repositorio de objetos-preciosos"
 
-#: builtin/repack.c:344
+#: builtin/repack.c:372
 msgid "--keep-unreachable and -A are incompatible"
 msgstr "--keep-unreachable y -A son incompatibles"
 
-#: builtin/repack.c:427
+#: builtin/repack.c:455
 msgid "Nothing new to pack."
 msgstr "Nada nuevo para empaquetar."
 
-#: builtin/repack.c:488
+#: builtin/repack.c:485
 #, c-format
-msgid ""
-"WARNING: Some packs in use have been renamed by\n"
-"WARNING: prefixing old- to their name, in order to\n"
-"WARNING: replace them with the new version of the\n"
-"WARNING: file.  But the operation failed, and the\n"
-"WARNING: attempt to rename them back to their\n"
-"WARNING: original names also failed.\n"
-"WARNING: Please rename them in %s manually:\n"
-msgstr ""
-"WARNING: Algunos packs en uso han sido renombrados\n"
-"WARNING: agregando el prefijo old- a sus nombres,para\n"
-"WARNING: reemplazarlos con la nueva versión del\n"
-"WARNING: archivo. Pero la operación falló, y el intento\n"
-"WARNING: de renombrarlos a sus nombres originales\n"
-"WARNING: también falló.\n"
-"WARNING: Por favor renombralos en %s manualmente:\n"
+msgid "missing required file: %s"
+msgstr "falta archivo requerido: %s"
 
-#: builtin/repack.c:536
+#: builtin/repack.c:487
 #, c-format
-msgid "failed to remove '%s'"
-msgstr "falló al eliminar'%s'"
+msgid "could not unlink: %s"
+msgstr "no se pudo desvincular: %s"
 
 #: builtin/replace.c:22
 msgid "git replace [-f] <object> <replacement>"
@@ -20237,8 +21196,8 @@ msgstr "HEAD está ahora en %s"
 msgid "Cannot do a %s reset in the middle of a merge."
 msgstr "No se puede realziar un reset %s  en medio de una fusión."
 
-#: builtin/reset.c:295 builtin/stash.c:520 builtin/stash.c:595
-#: builtin/stash.c:619
+#: builtin/reset.c:295 builtin/stash.c:587 builtin/stash.c:661
+#: builtin/stash.c:685
 msgid "be quiet, only report errors"
 msgstr "ser silencioso, solo reportar errores"
 
@@ -20323,19 +21282,19 @@ msgstr "No se puede reiniciar el índice a la revisión '%s'."
 msgid "Could not write new index file."
 msgstr "No se puede escribir un nuevo archivo índice."
 
-#: builtin/rev-list.c:499
+#: builtin/rev-list.c:534
 msgid "cannot combine --exclude-promisor-objects and --missing"
 msgstr "no se puede combinar --exclude-promisor-objects y --missing"
 
-#: builtin/rev-list.c:560
+#: builtin/rev-list.c:595
 msgid "object filtering requires --objects"
 msgstr "filtrado de objetos requiere --objects"
 
-#: builtin/rev-list.c:610
+#: builtin/rev-list.c:651
 msgid "rev-list does not support display of notes"
 msgstr "rev-list no soporta mostrar notas"
 
-#: builtin/rev-list.c:615
+#: builtin/rev-list.c:656
 msgid "marked counting is incompatible with --objects"
 msgstr "conteo de marcas es incompatible con --objects"
 
@@ -20448,11 +21407,11 @@ msgstr "preservar commits iniciales vacíos"
 msgid "keep redundant, empty commits"
 msgstr "mantener commits redundantes, vacíos"
 
-#: builtin/revert.c:232
+#: builtin/revert.c:239
 msgid "revert failed"
 msgstr "falló al revertir"
 
-#: builtin/revert.c:245
+#: builtin/revert.c:252
 msgid "cherry-pick failed"
 msgstr "cherry-pick falló"
 
@@ -20554,55 +21513,76 @@ msgstr ""
 "[<ref>...]\n"
 "  --all y especificaciones <ref> explícitas son mutuamente exclusivas."
 
-#: builtin/send-pack.c:163
+#: builtin/send-pack.c:188
 msgid "remote name"
 msgstr "nombre remoto"
 
-#: builtin/send-pack.c:176
+#: builtin/send-pack.c:201
 msgid "use stateless RPC protocol"
 msgstr "usar protocolo RPC sin estado"
 
-#: builtin/send-pack.c:177
+#: builtin/send-pack.c:202
 msgid "read refs from stdin"
 msgstr "leer refs de stdin"
 
-#: builtin/send-pack.c:178
+#: builtin/send-pack.c:203
 msgid "print status from remote helper"
 msgstr "mostrar status del remote helper"
 
-#: builtin/shortlog.c:14
+#: builtin/shortlog.c:16
 msgid "git shortlog [<options>] [<revision-range>] [[--] <path>...]"
 msgstr "git shortlog [<opciones>] [<rango-de-revisión>] [[--] <ruta>...]"
 
-#: builtin/shortlog.c:15
+#: builtin/shortlog.c:17
 msgid "git log --pretty=short | git shortlog [<options>]"
 msgstr "git log --pretty=short | git shorlog [<opciones>]"
 
-#: builtin/shortlog.c:264
-msgid "Group by committer rather than author"
-msgstr "Agrupar por committer en lugar de autor"
+#: builtin/shortlog.c:123
+msgid "using multiple --group options with stdin is not supported"
+msgstr "no se admite el uso de múltiples opciones de grupo --group con stdin"
 
-#: builtin/shortlog.c:266
+#: builtin/shortlog.c:133
+msgid "using --group=trailer with stdin is not supported"
+msgstr "el uso de --group = trailer con stdin no es compatible"
+
+#: builtin/shortlog.c:323
+#, c-format
+msgid "unknown group type: %s"
+msgstr "tipo de grupo desconocido: %s"
+
+#: builtin/shortlog.c:351
+msgid "group by committer rather than author"
+msgstr "agrupar por committer en lugar de autor"
+
+#: builtin/shortlog.c:354
 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:268
-msgid "Suppress commit descriptions, only provides commit count"
-msgstr "Suprimir descripción de commits, solo proveer cuenta de commits"
+#: builtin/shortlog.c:356
+msgid "suppress commit descriptions, only provides commit count"
+msgstr "suprimir descripción de commits, solo proveer cuenta de commits"
 
-#: 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:358
+msgid "show the email address of each author"
+msgstr "mostrar la dirección de correo de cada autor"
 
-#: builtin/shortlog.c:271
+#: builtin/shortlog.c:359
 msgid "<w>[,<i1>[,<i2>]]"
 msgstr "<w>[,<i1>[,<i2>]]"
 
-#: builtin/shortlog.c:272
-msgid "Linewrap output"
-msgstr "Salida de línea"
+#: builtin/shortlog.c:360
+msgid "linewrap output"
+msgstr "salida de línea"
 
-#: builtin/shortlog.c:301
+#: builtin/shortlog.c:362
+msgid "field"
+msgstr "campo"
+
+#: builtin/shortlog.c:363
+msgid "group by field"
+msgstr "agrupar por campo"
+
+#: builtin/shortlog.c:391
 msgid "too many arguments given outside repository"
 msgstr "demasiados argumentos dados fuera del repositorio"
 
@@ -20797,62 +21777,74 @@ msgstr "mostrar refs de stdin que no están en el repositorio local"
 msgid "git sparse-checkout (init|list|set|add|reapply|disable) <options>"
 msgstr "git sparse-checkout (init|list|set|add|reapply|disable) <opciones>"
 
-#: builtin/sparse-checkout.c:64
+#: builtin/sparse-checkout.c:45
+msgid "git sparse-checkout list"
+msgstr "git sparse-checkout list"
+
+#: builtin/sparse-checkout.c:71
 msgid "this worktree is not sparse (sparse-checkout file may not exist)"
 msgstr ""
 "este árbol de trabajo no tiene sparse (archivo sparese-checkout tal vez no "
 "existe)"
 
-#: builtin/sparse-checkout.c:216
+#: builtin/sparse-checkout.c:223
 msgid "failed to create directory for sparse-checkout file"
 msgstr "falló al crear directorio para el archivo sparse-checkout"
 
-#: builtin/sparse-checkout.c:257
+#: builtin/sparse-checkout.c:264
 msgid "unable to upgrade repository format to enable worktreeConfig"
 msgstr ""
 "no es posible actualizar el formato de repositorio para habilitar "
 "worktreeConfig"
 
-#: builtin/sparse-checkout.c:259
+#: builtin/sparse-checkout.c:266
 msgid "failed to set extensions.worktreeConfig setting"
 msgstr "falló al configurar opción extensions.worktreeConfig"
 
-#: builtin/sparse-checkout.c:276
+#: builtin/sparse-checkout.c:283
 msgid "git sparse-checkout init [--cone]"
 msgstr "git sparse-checkout init [--cone]"
 
-#: builtin/sparse-checkout.c:295
+#: builtin/sparse-checkout.c:302
 msgid "initialize the sparse-checkout in cone mode"
 msgstr "inicializa el sparse-checkout en modo cono"
 
-#: builtin/sparse-checkout.c:332
+#: builtin/sparse-checkout.c:339
 #, c-format
 msgid "failed to open '%s'"
 msgstr "falló al abrir '%s'"
 
-#: builtin/sparse-checkout.c:389
+#: builtin/sparse-checkout.c:396
 #, c-format
 msgid "could not normalize path %s"
 msgstr "no se pudo normalizar la ruta %s"
 
-#: builtin/sparse-checkout.c:401
+#: builtin/sparse-checkout.c:408
 msgid "git sparse-checkout (set|add) (--stdin | <patterns>)"
 msgstr "git sparse-checkout (set|add) (--stdin | <patrones>)"
 
-#: builtin/sparse-checkout.c:426
+#: builtin/sparse-checkout.c:433
 #, c-format
 msgid "unable to unquote C-style string '%s'"
 msgstr "no es posible dequote para la cadena de estilo C '%s'"
 
-#: builtin/sparse-checkout.c:480 builtin/sparse-checkout.c:504
+#: builtin/sparse-checkout.c:487 builtin/sparse-checkout.c:511
 msgid "unable to load existing sparse-checkout patterns"
 msgstr "no se pudo cargar patrones de sparse-checkout existentes"
 
-#: builtin/sparse-checkout.c:549
+#: builtin/sparse-checkout.c:556
 msgid "read patterns from standard in"
 msgstr "leer patrones de standard in"
 
-#: builtin/sparse-checkout.c:586
+#: builtin/sparse-checkout.c:571
+msgid "git sparse-checkout reapply"
+msgstr "git sparse-checkout reapply"
+
+#: builtin/sparse-checkout.c:590
+msgid "git sparse-checkout disable"
+msgstr "git sparse-checkout disable"
+
+#: builtin/sparse-checkout.c:618
 msgid "error while refreshing working directory"
 msgstr "error al refrescar directorio de trabajo"
 
@@ -20942,153 +21934,165 @@ msgid "%s is not a valid reference"
 msgstr "%s no es una referencia válida"
 
 #: builtin/stash.c:225
-msgid "git stash clear with parameters is unimplemented"
-msgstr "git stash clear con parámetros no está implementado"
+msgid "git stash clear with arguments is unimplemented"
+msgstr "git stash clear con argumentos no está implementado"
+
+#: builtin/stash.c:429
+#, c-format
+msgid ""
+"WARNING: Untracked file in way of tracked file!  Renaming\n"
+"            %s -> %s\n"
+"         to make room.\n"
+msgstr ""
+"ADVERTENCIA: Archivo sin seguimiento en forma de archivo con seguimiento. "
+"Renombrar\n"
+"             %s ->%s\n"
+"          Para hacer espacio.\n"
 
-#: builtin/stash.c:404
+#: builtin/stash.c:490
 msgid "cannot apply a stash in the middle of a merge"
 msgstr "no se puede aplicar un stash en medio de un merge"
 
-#: builtin/stash.c:415
+#: builtin/stash.c:501
 #, c-format
 msgid "could not generate diff %s^!."
 msgstr "no se pudo generar diff %s^!."
 
-#: builtin/stash.c:422
-msgid "conflicts in index.Try without --index."
+#: builtin/stash.c:508
+msgid "conflicts in index. Try without --index."
 msgstr "conflictos en índice. Intente sin --index."
 
-#: builtin/stash.c:428
+#: builtin/stash.c:514
 msgid "could not save index tree"
 msgstr "no se puede guardar el índice del árbol"
 
-#: builtin/stash.c:437
+#: builtin/stash.c:523
 msgid "could not restore untracked files from stash"
 msgstr "no se pueden restaurar archivos no rastreados de la entrada stash"
 
-#: builtin/stash.c:451
+#: builtin/stash.c:537
 #, c-format
 msgid "Merging %s with %s"
 msgstr "Fusionando %s con %s"
 
-#: builtin/stash.c:461
+#: builtin/stash.c:547
 msgid "Index was not unstashed."
 msgstr "El índice no fue sacado de stash."
 
-#: builtin/stash.c:522 builtin/stash.c:621
+#: builtin/stash.c:589 builtin/stash.c:687
 msgid "attempt to recreate the index"
 msgstr "intento de recrear el index"
 
-#: builtin/stash.c:555
+#: builtin/stash.c:633
 #, c-format
 msgid "Dropped %s (%s)"
 msgstr "Botado %s (%s)"
 
-#: builtin/stash.c:558
+#: builtin/stash.c:636
 #, c-format
 msgid "%s: Could not drop stash entry"
 msgstr "%s: No se pudo borrar entrada stash"
 
-#: builtin/stash.c:583
+#: builtin/stash.c:649
 #, c-format
 msgid "'%s' is not a stash reference"
 msgstr "'%s' no es una referencia stash"
 
-#: builtin/stash.c:633
+#: builtin/stash.c:699
 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."
 
-#: builtin/stash.c:656
+#: builtin/stash.c:722
 msgid "No branch name specified"
 msgstr "No se especificó el nombre de la rama"
 
-#: builtin/stash.c:800 builtin/stash.c:837
+#: builtin/stash.c:866 builtin/stash.c:903
 #, c-format
 msgid "Cannot update %s with %s"
 msgstr "No se puede actualizar %s con %s"
 
-#: builtin/stash.c:818 builtin/stash.c:1475 builtin/stash.c:1540
+#: builtin/stash.c:884 builtin/stash.c:1538 builtin/stash.c:1603
 msgid "stash message"
 msgstr "mensaje de stash"
 
-#: builtin/stash.c:828
+#: builtin/stash.c:894
 msgid "\"git stash store\" requires one <commit> argument"
 msgstr "\"git stash store\" requiere un argumento <commit>"
 
-#: builtin/stash.c:1046
+#: builtin/stash.c:1109
 msgid "No changes selected"
 msgstr "Sin cambios seleccionados"
 
-#: builtin/stash.c:1146
+#: builtin/stash.c:1209
 msgid "You do not have the initial commit yet"
 msgstr "Aún no tienes un commit inicial"
 
-#: builtin/stash.c:1173
+#: builtin/stash.c:1236
 msgid "Cannot save the current index state"
 msgstr "No se puede guardar el estado actual del índice"
 
-#: builtin/stash.c:1182
+#: builtin/stash.c:1245
 msgid "Cannot save the untracked files"
 msgstr "No se pueden guardar los archivos no rastreados"
 
-#: builtin/stash.c:1193 builtin/stash.c:1202
+#: builtin/stash.c:1256 builtin/stash.c:1265
 msgid "Cannot save the current worktree state"
 msgstr "No se puede guardar el estado actual del árbol de trabajo"
 
-#: builtin/stash.c:1230
+#: builtin/stash.c:1293
 msgid "Cannot record working tree state"
 msgstr "No se puede grabar el estado del árbol de trabajo"
 
-#: builtin/stash.c:1279
+#: builtin/stash.c:1342
 msgid "Can't use --patch and --include-untracked or --all at the same time"
 msgstr "No se puede usar --patch y --include-untracked o --all al mismo tiempo"
 
-#: builtin/stash.c:1295
+#: builtin/stash.c:1358
 msgid "Did you forget to 'git add'?"
 msgstr "¿Olvidaste 'git add'?"
 
-#: builtin/stash.c:1310
+#: builtin/stash.c:1373
 msgid "No local changes to save"
 msgstr "No hay cambios locales para guardar"
 
-#: builtin/stash.c:1317
+#: builtin/stash.c:1380
 msgid "Cannot initialize stash"
 msgstr "No se puede inicializar stash"
 
-#: builtin/stash.c:1332
+#: builtin/stash.c:1395
 msgid "Cannot save the current status"
 msgstr "No se puede guardar el estado actual"
 
-#: builtin/stash.c:1337
+#: builtin/stash.c:1400
 #, c-format
 msgid "Saved working directory and index state %s"
 msgstr "Directorio de trabajo guardado y estado de índice %s"
 
-#: builtin/stash.c:1427
+#: builtin/stash.c:1490
 msgid "Cannot remove worktree changes"
 msgstr "No se pueden eliminar cambios del árbol de trabajo"
 
-#: builtin/stash.c:1466 builtin/stash.c:1531
+#: builtin/stash.c:1529 builtin/stash.c:1594
 msgid "keep index"
 msgstr "mantener index"
 
-#: builtin/stash.c:1468 builtin/stash.c:1533
+#: builtin/stash.c:1531 builtin/stash.c:1596
 msgid "stash in patch mode"
 msgstr "stash en modo patch"
 
-#: builtin/stash.c:1469 builtin/stash.c:1534
+#: builtin/stash.c:1532 builtin/stash.c:1597
 msgid "quiet mode"
 msgstr "modo tranquilo"
 
-#: builtin/stash.c:1471 builtin/stash.c:1536
+#: builtin/stash.c:1534 builtin/stash.c:1599
 msgid "include untracked files in stash"
 msgstr "incluir archivos sin seguimiento en stash"
 
-#: builtin/stash.c:1473 builtin/stash.c:1538
+#: builtin/stash.c:1536 builtin/stash.c:1601
 msgid "include ignore files"
 msgstr "incluir archivos ignorados"
 
-#: builtin/stash.c:1573
+#: builtin/stash.c:1636
 msgid ""
 "the stash.useBuiltin support has been removed!\n"
 "See its entry in 'git help config' for details."
@@ -21113,7 +22117,7 @@ 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:47 builtin/submodule--helper.c:1999
+#: builtin/submodule--helper.c:47 builtin/submodule--helper.c:2423
 #, c-format
 msgid "Expecting a full ref name, got %s"
 msgstr "Se esperaba un nombre de ref completo, se obtuvo %s"
@@ -21127,7 +22131,7 @@ msgstr "subomdule--helper print-default-remote no toma argumentos"
 msgid "cannot strip one component off url '%s'"
 msgstr "no se puede quitar un componente del url '%s'"
 
-#: builtin/submodule--helper.c:410 builtin/submodule--helper.c:1395
+#: builtin/submodule--helper.c:410 builtin/submodule--helper.c:1819
 msgid "alternative anchor for relative paths"
 msgstr "ancho alternativo para rutas relativas"
 
@@ -21135,8 +22139,8 @@ msgstr "ancho alternativo para rutas relativas"
 msgid "git submodule--helper list [--prefix=<path>] [<path>...]"
 msgstr "git submodule--helper list [--prefix=<ruta>] [<ruta>...]"
 
-#: builtin/submodule--helper.c:472 builtin/submodule--helper.c:630
-#: builtin/submodule--helper.c:653
+#: builtin/submodule--helper.c:472 builtin/submodule--helper.c:629
+#: builtin/submodule--helper.c:652
 #, c-format
 msgid "No url found for submodule path '%s' in .gitmodules"
 msgstr "No se encontró url para la ruta del submódulo '%s' en .gitmodules"
@@ -21167,12 +22171,13 @@ msgstr ""
 "."
 
 #: builtin/submodule--helper.c:565
-msgid "Suppress output of entering each submodule command"
-msgstr "Suprime la salida al inicializar cada comando de submódulo"
+msgid "suppress output of entering each submodule command"
+msgstr "suprime la salida al inicializar cada comando de submódulo"
 
-#: builtin/submodule--helper.c:567 builtin/submodule--helper.c:1063
-msgid "Recurse into nested submodules"
-msgstr "Recursar en submódulos anidados"
+#: builtin/submodule--helper.c:567 builtin/submodule--helper.c:888
+#: builtin/submodule--helper.c:1487
+msgid "recurse into nested submodules"
+msgstr "recursar en submódulos anidados"
 
 #: builtin/submodule--helper.c:572
 msgid "git submodule--helper foreach [--quiet] [--recursive] [--] <command>"
@@ -21187,105 +22192,158 @@ msgstr ""
 "no se pudo encontrar configuración '%s'. Asumiendo que este repositorio es "
 "su propio upstream autoritativo."
 
-#: builtin/submodule--helper.c:667
+#: builtin/submodule--helper.c:666
 #, c-format
 msgid "Failed to register url for submodule path '%s'"
 msgstr "Falló al registrar el url para la ruta del submódulo '%s'"
 
-#: builtin/submodule--helper.c:671
+#: builtin/submodule--helper.c:670
 #, c-format
 msgid "Submodule '%s' (%s) registered for path '%s'\n"
 msgstr "Submódulo '%s' (%s) registrado para ruta '%s'\n"
 
-#: builtin/submodule--helper.c:681
+#: builtin/submodule--helper.c:680
 #, c-format
 msgid "warning: command update mode suggested for submodule '%s'\n"
 msgstr ""
 "peligro: modo de actualización de comandos sugerido para el submódulo '%s'\n"
 
-#: builtin/submodule--helper.c:688
+#: builtin/submodule--helper.c:687
 #, c-format
 msgid "Failed to register update mode for submodule path '%s'"
 msgstr ""
 "Error al registrar el modo de actualización para la ruta del submódulo '%s'"
 
-#: builtin/submodule--helper.c:710
-msgid "Suppress output for initializing a submodule"
-msgstr "Suprime la salida para inicializar un submódulo"
+#: builtin/submodule--helper.c:709
+msgid "suppress output for initializing a submodule"
+msgstr "suprime la salida para inicializar un submódulo"
 
-#: builtin/submodule--helper.c:715
+#: builtin/submodule--helper.c:714
 msgid "git submodule--helper init [<options>] [<path>]"
 msgstr "git submodule--helper init [<opciones>] [<path>]"
 
-#: builtin/submodule--helper.c:789 builtin/submodule--helper.c:924
+#: builtin/submodule--helper.c:787 builtin/submodule--helper.c:922
 #, 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:837
+#: builtin/submodule--helper.c:835
 #, 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:864 builtin/submodule--helper.c:1033
+#: builtin/submodule--helper.c:862 builtin/submodule--helper.c:1457
 #, c-format
 msgid "failed to recurse into submodule '%s'"
 msgstr "falló al recursar en el submódulo '%s'"
 
-#: builtin/submodule--helper.c:888 builtin/submodule--helper.c:1199
-msgid "Suppress submodule status output"
-msgstr "Suprimir output del estado del submódulo"
+#: builtin/submodule--helper.c:886 builtin/submodule--helper.c:1623
+msgid "suppress submodule status output"
+msgstr "suprimir output del estado del submódulo"
 
-#: builtin/submodule--helper.c:889
+#: builtin/submodule--helper.c:887
 msgid ""
-"Use commit stored in the index instead of the one stored in the submodule "
+"use commit stored in the index instead of the one stored in the submodule "
 "HEAD"
 msgstr ""
-"Usar el commit guardado en el índice en lugar del guardado en el submódulo "
+"usar el commit guardado en el índice en lugar del guardado en el submódulo "
 "HEAD"
 
-#: builtin/submodule--helper.c:890
-msgid "recurse into nested submodules"
-msgstr "recursar en submódulos anidados"
-
-#: builtin/submodule--helper.c:895
+#: builtin/submodule--helper.c:893
 msgid "git submodule status [--quiet] [--cached] [--recursive] [<path>...]"
 msgstr "git submodule status [--quiet] [--cached] [--recursive] [<ruta>...]"
 
-#: builtin/submodule--helper.c:919
+#: builtin/submodule--helper.c:917
 msgid "git submodule--helper name <path>"
 msgstr "git submodule--helper name <ruta>"
 
-#: builtin/submodule--helper.c:983
+#: builtin/submodule--helper.c:989
+#, c-format
+msgid "* %s %s(blob)->%s(submodule)"
+msgstr "* %s %s(blob)->%s(submodule)"
+
+#: builtin/submodule--helper.c:992
+#, c-format
+msgid "* %s %s(submodule)->%s(blob)"
+msgstr "* %s %s(submodule)->%s(blob)"
+
+#: builtin/submodule--helper.c:1005
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: builtin/submodule--helper.c:1055
+#, c-format
+msgid "couldn't hash object from '%s'"
+msgstr "no se pudo realizar hash del objeto '%s'"
+
+#: builtin/submodule--helper.c:1059
+#, c-format
+msgid "unexpected mode %o\n"
+msgstr "modo %o inesperado\n"
+
+#: builtin/submodule--helper.c:1300
+msgid "use the commit stored in the index instead of the submodule HEAD"
+msgstr ""
+"usar el commit guardado en el índice en lugar del guardado en el submódulo "
+"HEAD"
+
+#: builtin/submodule--helper.c:1302
+msgid "to compare the commit in the index with that in the submodule HEAD"
+msgstr ""
+"usar el commit guardado en el índice para comparar con el guardado en el "
+"submódulo HEAD"
+
+#: builtin/submodule--helper.c:1304
+msgid "skip submodules with 'ignore_config' value set to 'all'"
+msgstr "omitir submódulos con el valor 'ignore_config' establecido en 'all'"
+
+#: builtin/submodule--helper.c:1306
+msgid "limit the summary size"
+msgstr "limitar el tamaño de resumen"
+
+#: builtin/submodule--helper.c:1311
+msgid "git submodule--helper summary [<options>] [<commit>] [--] [<path>]"
+msgstr "git submodule--helper summary [<options>] [<commit>] [--] [<path>]"
+
+#: builtin/submodule--helper.c:1335
+msgid "could not fetch a revision for HEAD"
+msgstr "no se puede obtener la revisión para HEAD"
+
+#: builtin/submodule--helper.c:1340
+msgid "--cached and --files are mutually exclusive"
+msgstr "--cached y --files son mutuamente exclusivos"
+
+#: builtin/submodule--helper.c:1407
 #, c-format
 msgid "Synchronizing submodule url for '%s'\n"
 msgstr "Sincronizando url del submódulo para '%s'\n"
 
-#: builtin/submodule--helper.c:989
+#: builtin/submodule--helper.c:1413
 #, 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:1003
+#: builtin/submodule--helper.c:1427
 #, 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:1014
+#: builtin/submodule--helper.c:1438
 #, 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:1061
-msgid "Suppress output of synchronizing submodule url"
-msgstr "Suprime la salida del url del submódulo que se sincroniza"
+#: builtin/submodule--helper.c:1485
+msgid "suppress output of synchronizing submodule url"
+msgstr "suprime la salida del url del submódulo que se sincroniza"
 
-#: builtin/submodule--helper.c:1068
+#: builtin/submodule--helper.c:1492
 msgid "git submodule--helper sync [--quiet] [--recursive] [<path>]"
 msgstr "git submodule--helper sync [--quiet] [--recursive] [<ruta>]"
 
-#: builtin/submodule--helper.c:1122
+#: builtin/submodule--helper.c:1546
 #, c-format
 msgid ""
 "Submodule work tree '%s' contains a .git directory (use 'rm -rf' if you "
@@ -21294,7 +22352,7 @@ msgstr ""
 "El árbol de trabajo del submódulo '%s' contiene un directorio .git (use 'rm -"
 "rf' si realmente quieres eliminarlo incluyendo todo en su historia)"
 
-#: builtin/submodule--helper.c:1134
+#: builtin/submodule--helper.c:1558
 #, c-format
 msgid ""
 "Submodule work tree '%s' contains local modifications; use '-f' to discard "
@@ -21303,46 +22361,46 @@ msgstr ""
 "El árbol de trabajo del submódulo '%s' contiene modificaciones locales; usa "
 "'-f' para descartarlas"
 
-#: builtin/submodule--helper.c:1142
+#: builtin/submodule--helper.c:1566
 #, c-format
 msgid "Cleared directory '%s'\n"
 msgstr "Directorio '%s' limpiado\n"
 
-#: builtin/submodule--helper.c:1144
+#: builtin/submodule--helper.c:1568
 #, 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:1155
+#: builtin/submodule--helper.c:1579
 #, 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:1171
+#: builtin/submodule--helper.c:1595
 #, 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:1200
-msgid "Remove submodule working trees even if they contain local changes"
+#: builtin/submodule--helper.c:1624
+msgid "remove submodule working trees even if they contain local changes"
 msgstr ""
-"Remover árboles de trabajo de submódulos incluso si contienen cambios locales"
+"remover árboles de trabajo de submódulos incluso si contienen cambios locales"
 
-#: builtin/submodule--helper.c:1201
-msgid "Unregister all submodules"
-msgstr "Quitar todos los submódulos"
+#: builtin/submodule--helper.c:1625
+msgid "unregister all submodules"
+msgstr "quitar todos los submódulos"
 
-#: builtin/submodule--helper.c:1206
+#: builtin/submodule--helper.c:1630
 msgid ""
 "git submodule deinit [--quiet] [-f | --force] [--all | [--] [<path>...]]"
 msgstr ""
 "git submodule deinit [--quiet] [-f | --force] [--all | [--] [<ruta>...]]"
 
-#: builtin/submodule--helper.c:1220
+#: builtin/submodule--helper.c:1644
 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:1289
+#: builtin/submodule--helper.c:1713
 msgid ""
 "An alternate computed from a superproject's alternate is invalid.\n"
 "To allow Git to clone without an alternate in such a case, set\n"
@@ -21356,46 +22414,46 @@ msgstr ""
 "con\n"
 "'--reference-if-able' en lugar de '--reference'."
 
-#: builtin/submodule--helper.c:1328 builtin/submodule--helper.c:1331
+#: builtin/submodule--helper.c:1752 builtin/submodule--helper.c:1755
 #, c-format
 msgid "submodule '%s' cannot add alternate: %s"
 msgstr "submódulo '%s' no puede agregar alterno: %s"
 
-#: builtin/submodule--helper.c:1367
+#: builtin/submodule--helper.c:1791
 #, c-format
 msgid "Value '%s' for submodule.alternateErrorStrategy is not recognized"
 msgstr "Valor '%s' para submodule.alternateErrorStrategy no es reconocido"
 
-#: builtin/submodule--helper.c:1374
+#: builtin/submodule--helper.c:1798
 #, c-format
 msgid "Value '%s' for submodule.alternateLocation is not recognized"
 msgstr "Valor '%s' para submodule.alternateLocation no es reconocido"
 
-#: builtin/submodule--helper.c:1398
+#: builtin/submodule--helper.c:1822
 msgid "where the new submodule will be cloned to"
 msgstr "a donde el nuevo submódulo será clonado"
 
-#: builtin/submodule--helper.c:1401
+#: builtin/submodule--helper.c:1825
 msgid "name of the new submodule"
 msgstr "nombre del nuevo submódulo"
 
-#: builtin/submodule--helper.c:1404
+#: builtin/submodule--helper.c:1828
 msgid "url where to clone the submodule from"
 msgstr "url de dónde clonar el submódulo"
 
-#: builtin/submodule--helper.c:1412
+#: builtin/submodule--helper.c:1836
 msgid "depth for shallow clones"
 msgstr "profundidad para clones superficiales"
 
-#: builtin/submodule--helper.c:1415 builtin/submodule--helper.c:1924
+#: builtin/submodule--helper.c:1839 builtin/submodule--helper.c:2348
 msgid "force cloning progress"
 msgstr "forzar el proceso de clonado"
 
-#: builtin/submodule--helper.c:1417 builtin/submodule--helper.c:1926
+#: builtin/submodule--helper.c:1841 builtin/submodule--helper.c:2350
 msgid "disallow cloning into non-empty directory"
 msgstr "no permitir clonar en directorios no vacíos"
 
-#: builtin/submodule--helper.c:1424
+#: builtin/submodule--helper.c:1848
 msgid ""
 "git submodule--helper clone [--prefix=<path>] [--quiet] [--reference "
 "<repository>] [--name <name>] [--depth <depth>] [--single-branch] --url "
@@ -21405,104 +22463,104 @@ msgstr ""
 "<repositorio>] [--name <nombre>] [--depth <profundidad>] [--single-branch] --"
 "url <url> --path <ruta>"
 
-#: builtin/submodule--helper.c:1449
+#: builtin/submodule--helper.c:1873
 #, c-format
 msgid "refusing to create/use '%s' in another submodule's git dir"
 msgstr "rechazando crear/usar '%s' en el directorio de git de otro submódulo"
 
-#: builtin/submodule--helper.c:1460
+#: builtin/submodule--helper.c:1884
 #, 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:1464
+#: builtin/submodule--helper.c:1888
 #, c-format
 msgid "directory not empty: '%s'"
 msgstr "directorio no está vacío: '%s'"
 
-#: builtin/submodule--helper.c:1476
+#: builtin/submodule--helper.c:1900
 #, 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:1512
+#: builtin/submodule--helper.c:1936
 #, c-format
 msgid "Invalid update mode '%s' for submodule path '%s'"
 msgstr "Modo de actualización inválido '%s' para ruta de submódulo '%s'"
 
-#: builtin/submodule--helper.c:1516
+#: builtin/submodule--helper.c:1940
 #, c-format
 msgid "Invalid update mode '%s' configured for submodule path '%s'"
 msgstr ""
 "Modo de actualización inválido '%s' configurado para ruta de submódulo '%s'"
 
-#: builtin/submodule--helper.c:1617
+#: builtin/submodule--helper.c:2041
 #, c-format
 msgid "Submodule path '%s' not initialized"
 msgstr "Ruta de submódulo '%s' no inicializada"
 
-#: builtin/submodule--helper.c:1621
+#: builtin/submodule--helper.c:2045
 msgid "Maybe you want to use 'update --init'?"
 msgstr "¿Tal vez quieres usar 'update --init'?"
 
-#: builtin/submodule--helper.c:1651
+#: builtin/submodule--helper.c:2075
 #, c-format
 msgid "Skipping unmerged submodule %s"
 msgstr "Saltando submódulo %s no fusionado"
 
-#: builtin/submodule--helper.c:1680
+#: builtin/submodule--helper.c:2104
 #, c-format
 msgid "Skipping submodule '%s'"
 msgstr "Saltando submódulo '%s'"
 
-#: builtin/submodule--helper.c:1830
+#: builtin/submodule--helper.c:2254
 #, c-format
 msgid "Failed to clone '%s'. Retry scheduled"
 msgstr "Falló al clonar '%s'. Reintento programado"
 
-#: builtin/submodule--helper.c:1841
+#: builtin/submodule--helper.c:2265
 #, c-format
 msgid "Failed to clone '%s' a second time, aborting"
 msgstr "Falló al clonar '%s' una segunda vez, abortando"
 
-#: builtin/submodule--helper.c:1903 builtin/submodule--helper.c:2149
+#: builtin/submodule--helper.c:2327 builtin/submodule--helper.c:2573
 msgid "path into the working tree"
 msgstr "ruta hacia el árbol de trabajo"
 
-#: builtin/submodule--helper.c:1906
+#: builtin/submodule--helper.c:2330
 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:1910
+#: builtin/submodule--helper.c:2334
 msgid "rebase, merge, checkout or none"
 msgstr "rebase, merge, checkout o none"
 
-#: builtin/submodule--helper.c:1916
-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:2340
+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:1919
+#: builtin/submodule--helper.c:2343
 msgid "parallel jobs"
 msgstr "trabajos paralelos"
 
-#: builtin/submodule--helper.c:1921
+#: builtin/submodule--helper.c:2345
 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:1922
+#: builtin/submodule--helper.c:2346
 msgid "don't print cloning progress"
 msgstr "no mostrar el progreso de clonado"
 
-#: builtin/submodule--helper.c:1933
+#: builtin/submodule--helper.c:2357
 msgid "git submodule--helper update-clone [--prefix=<path>] [<path>...]"
 msgstr "git submodule--helper update-clone [--prefix=<ruta>] [<ruta>...]"
 
-#: builtin/submodule--helper.c:1946
+#: builtin/submodule--helper.c:2370
 msgid "bad value for update parameter"
 msgstr "mal valor para parámetro update"
 
-#: builtin/submodule--helper.c:1994
+#: builtin/submodule--helper.c:2418
 #, c-format
 msgid ""
 "Submodule (%s) branch configured to inherit branch from superproject, but "
@@ -21511,85 +22569,85 @@ msgstr ""
 "Rama de submódulo (%s) configurada para heredar rama del superproyecto, pero "
 "el superproyecto no está en ninguna rama"
 
-#: builtin/submodule--helper.c:2117
+#: builtin/submodule--helper.c:2541
 #, c-format
 msgid "could not get a repository handle for submodule '%s'"
 msgstr "no se pudo conseguir un handle para el submódulo '%s'"
 
-#: builtin/submodule--helper.c:2150
+#: builtin/submodule--helper.c:2574
 msgid "recurse into submodules"
 msgstr "recurrir a submódulos"
 
-#: builtin/submodule--helper.c:2156
+#: builtin/submodule--helper.c:2580
 msgid "git submodule--helper absorb-git-dirs [<options>] [<path>...]"
 msgstr "git submodule--helper absorb-git-dirs [<opciones>] [<path>...]"
 
-#: builtin/submodule--helper.c:2212
+#: builtin/submodule--helper.c:2636
 msgid "check if it is safe to write to the .gitmodules file"
 msgstr "revisar is es seguro escribir el archivo .gitmodules"
 
-#: builtin/submodule--helper.c:2215
+#: builtin/submodule--helper.c:2639
 msgid "unset the config in the .gitmodules file"
 msgstr "desconfigura la opción en elarchivo .gitmodules"
 
-#: builtin/submodule--helper.c:2220
+#: builtin/submodule--helper.c:2644
 msgid "git submodule--helper config <name> [<value>]"
 msgstr "git submodule--helper config <nombre> [<valor>]"
 
-#: builtin/submodule--helper.c:2221
+#: builtin/submodule--helper.c:2645
 msgid "git submodule--helper config --unset <name>"
 msgstr "git submodule--helper config --unset <nombre>"
 
-#: builtin/submodule--helper.c:2222
+#: builtin/submodule--helper.c:2646
 msgid "git submodule--helper config --check-writeable"
 msgstr "git submodule--helper config --check-writeable"
 
-#: builtin/submodule--helper.c:2241 git-submodule.sh:176
+#: builtin/submodule--helper.c:2665 git-submodule.sh:150
 #, sh-format
 msgid "please make sure that the .gitmodules file is in the working tree"
 msgstr ""
 "por favor asegúrate que el archivo .gitmodules está en el árbol de trabajo"
 
-#: builtin/submodule--helper.c:2257
-msgid "Suppress output for setting url of a submodule"
-msgstr "Suprime la salida para inicializar la url de un submódulo"
+#: builtin/submodule--helper.c:2681
+msgid "suppress output for setting url of a submodule"
+msgstr "suprime la salida para inicializar la url de un submódulo"
 
-#: builtin/submodule--helper.c:2261
+#: builtin/submodule--helper.c:2685
 msgid "git submodule--helper set-url [--quiet] <path> <newurl>"
 msgstr "git submodule--helper set-url [--quiet] <ruta> <nueva url>"
 
-#: builtin/submodule--helper.c:2294
+#: builtin/submodule--helper.c:2718
 msgid "set the default tracking branch to master"
 msgstr "configurar la rama de rastreo por defecto a master"
 
-#: builtin/submodule--helper.c:2296
+#: builtin/submodule--helper.c:2720
 msgid "set the default tracking branch"
 msgstr "configurar la rama de rastreo por defecto"
 
-#: builtin/submodule--helper.c:2300
+#: builtin/submodule--helper.c:2724
 msgid "git submodule--helper set-branch [-q|--quiet] (-d|--default) <path>"
 msgstr "git submodule--helper set-branch [-q|--quiet] (-d|--default) <ruta>"
 
-#: builtin/submodule--helper.c:2301
+#: builtin/submodule--helper.c:2725
 msgid ""
 "git submodule--helper set-branch [-q|--quiet] (-b|--branch) <branch> <path>"
 msgstr ""
 "git submodule--helper set-branch [-q|--quiet] (-b|--branch) <rama> <ruta>"
 
-#: builtin/submodule--helper.c:2308
+#: builtin/submodule--helper.c:2732
 msgid "--branch or --default required"
 msgstr "--branch o --default requeridos"
 
-#: builtin/submodule--helper.c:2311
+#: builtin/submodule--helper.c:2735
 msgid "--branch and --default are mutually exclusive"
 msgstr "--branch y --default son mutuamente exclusivos"
 
-#: builtin/submodule--helper.c:2367 git.c:436 git.c:683
+#: builtin/submodule--helper.c:2792 git.c:441 git.c:714
 #, c-format
 msgid "%s doesn't support --super-prefix"
 msgstr "%s no soporta --super-prefix"
 
-#: builtin/submodule--helper.c:2373
+#: builtin/submodule--helper.c:2798
 #, c-format
 msgid "'%s' is not a valid submodule--helper subcommand"
 msgstr "'%s' no es un comando submodule--helper válido"
@@ -21614,11 +22672,11 @@ msgstr "eliminar referencia simbólica"
 msgid "shorten ref output"
 msgstr "salida de referencia más corta"
 
-#: builtin/symbolic-ref.c:43 builtin/update-ref.c:486
+#: builtin/symbolic-ref.c:43 builtin/update-ref.c:499
 msgid "reason"
 msgstr "razón"
 
-#: builtin/symbolic-ref.c:43 builtin/update-ref.c:486
+#: builtin/symbolic-ref.c:43 builtin/update-ref.c:499
 msgid "reason of the update"
 msgstr "razón de la actualización"
 
@@ -21638,11 +22696,13 @@ msgstr "git tag -d <nombre-de-tag>..."
 msgid ""
 "git tag -l [-n[<num>]] [--contains <commit>] [--no-contains <commit>] [--"
 "points-at <object>]\n"
-"\t\t[--format=<format>] [--[no-]merged [<commit>]] [<pattern>...]"
+"\t\t[--format=<format>] [--merged <commit>] [--no-merged <commit>] "
+"[<pattern>...]"
 msgstr ""
 "git tag -l [-n[<num>]] [--contains <commit>] [--no-contains <commit>] [--"
 "points-at <objeto>]\n"
-"\t\t[--format=<formato>] [--[no-]merged [<commit>]] [<patrón>...]"
+"\t\t[--format=<formato>] [--merged <commit>] [--no-merged <commit>] "
+"[<patrón>...]"
 
 #: builtin/tag.c:30
 msgid "git tag -v [--format=<format>] <tagname>..."
@@ -21653,12 +22713,12 @@ msgstr "git tag -v [--format=<formato>] <nombre-de-tag>..."
 msgid "tag '%s' not found."
 msgstr "tag '%s' no encontrado."
 
-#: builtin/tag.c:105
+#: builtin/tag.c:124
 #, c-format
 msgid "Deleted tag '%s' (was %s)\n"
 msgstr "Etiqueta '%s' eliminada (era %s)\n"
 
-#: builtin/tag.c:135
+#: builtin/tag.c:159
 #, c-format
 msgid ""
 "\n"
@@ -21671,7 +22731,7 @@ msgstr ""
 "  %s\n"
 "Las líneas que comienzan con '%c' serán ignoradas.\n"
 
-#: builtin/tag.c:139
+#: builtin/tag.c:163
 #, c-format
 msgid ""
 "\n"
@@ -21686,15 +22746,11 @@ msgstr ""
 "Las líneas que comienzan con '%c' serán conservadas; puedes eliminarlas por "
 "ti mismo si quieres hacerlo.\n"
 
-#: builtin/tag.c:198
+#: builtin/tag.c:230
 msgid "unable to sign the tag"
 msgstr "incapaz de firmar tag"
 
-#: builtin/tag.c:200
-msgid "unable to write tag file"
-msgstr "incapaz de escribir el archivo de tag"
-
-#: builtin/tag.c:216
+#: builtin/tag.c:248
 #, c-format
 msgid ""
 "You have created a nested tag. The object referred to by your new tag is\n"
@@ -21707,138 +22763,134 @@ msgstr ""
 "\n"
 "\tgit tag -f %s %s^{}"
 
-#: builtin/tag.c:232
+#: builtin/tag.c:264
 msgid "bad object type."
 msgstr "tipo de objeto erróneo."
 
-#: builtin/tag.c:285
+#: builtin/tag.c:317
 msgid "no tag message?"
 msgstr "¿Sin mensaje de tag?"
 
-#: builtin/tag.c:292
+#: builtin/tag.c:324
 #, 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:403
+#: builtin/tag.c:435
 msgid "list tag names"
 msgstr "listar nombres de tags"
 
-#: builtin/tag.c:405
+#: builtin/tag.c:437
 msgid "print <n> lines of each tag message"
 msgstr "imprimir <n> líneas de cada mensaje de tag"
 
-#: builtin/tag.c:407
+#: builtin/tag.c:439
 msgid "delete tags"
 msgstr "eliminar tags"
 
-#: builtin/tag.c:408
+#: builtin/tag.c:440
 msgid "verify tags"
 msgstr "verificar tags"
 
-#: builtin/tag.c:410
+#: builtin/tag.c:442
 msgid "Tag creation options"
 msgstr "Opciones de creación de tags"
 
-#: builtin/tag.c:412
+#: builtin/tag.c:444
 msgid "annotated tag, needs a message"
 msgstr "tags anotadas necesitan un mensaje"
 
-#: builtin/tag.c:414
+#: builtin/tag.c:446
 msgid "tag message"
 msgstr "mensaje de tag"
 
-#: builtin/tag.c:416
+#: builtin/tag.c:448
 msgid "force edit of tag message"
 msgstr "forzar la edición del mensaje de tag"
 
-#: builtin/tag.c:417
+#: builtin/tag.c:449
 msgid "annotated and GPG-signed tag"
 msgstr "tag anotado y firmado con GPG"
 
-#: builtin/tag.c:420
+#: builtin/tag.c:452
 msgid "use another key to sign the tag"
 msgstr "usar otra clave para firmar el tag"
 
-#: builtin/tag.c:421
+#: builtin/tag.c:453
 msgid "replace the tag if exists"
 msgstr "remplazar tag si existe"
 
-#: builtin/tag.c:422 builtin/update-ref.c:492
+#: builtin/tag.c:454 builtin/update-ref.c:505
 msgid "create a reflog"
 msgstr "crear un reflog"
 
-#: builtin/tag.c:424
+#: builtin/tag.c:456
 msgid "Tag listing options"
 msgstr "Opciones de listado de tag"
 
-#: builtin/tag.c:425
+#: builtin/tag.c:457
 msgid "show tag list in columns"
 msgstr "mostrar lista de tags en columnas"
 
-#: builtin/tag.c:426 builtin/tag.c:428
+#: builtin/tag.c:458 builtin/tag.c:460
 msgid "print only tags that contain the commit"
 msgstr "mostrar solo tags que contienen el commit"
 
-#: builtin/tag.c:427 builtin/tag.c:429
+#: builtin/tag.c:459 builtin/tag.c:461
 msgid "print only tags that don't contain the commit"
 msgstr "mostrar solo tags que no contienen el commit"
 
-#: builtin/tag.c:430
+#: builtin/tag.c:462
 msgid "print only tags that are merged"
 msgstr "sólo imprimir las tags que están fusionadas"
 
-#: builtin/tag.c:431
+#: builtin/tag.c:463
 msgid "print only tags that are not merged"
 msgstr "sólo imprimir las tags que no están fusionadas"
 
-#: builtin/tag.c:435
+#: builtin/tag.c:467
 msgid "print only tags of the object"
 msgstr "sólo imprimir tags de el objeto"
 
-#: builtin/tag.c:483
+#: builtin/tag.c:515
 msgid "--column and -n are incompatible"
 msgstr "--column y -n son incompatibles"
 
-#: builtin/tag.c:505
+#: builtin/tag.c:537
 msgid "-n option is only allowed in list mode"
 msgstr "opción -n solo es permitida en modo lista"
 
-#: builtin/tag.c:507
+#: builtin/tag.c:539
 msgid "--contains option is only allowed in list mode"
 msgstr "opción --contains solo es permitido en modo lista"
 
-#: builtin/tag.c:509
+#: builtin/tag.c:541
 msgid "--no-contains option is only allowed in list mode"
 msgstr "opción --no-contains solo es permitida en modo lista"
 
-#: builtin/tag.c:511
+#: builtin/tag.c:543
 msgid "--points-at option is only allowed in list mode"
 msgstr "opción --points-at solo es permitida en modo lista"
 
-#: builtin/tag.c:513
+#: builtin/tag.c:545
 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:524
+#: builtin/tag.c:556
 msgid "only one -F or -m option is allowed."
 msgstr "sólo se permite una de las opciones, -m ó -F."
 
-#: builtin/tag.c:543
-msgid "too many params"
-msgstr "demasiados parámetros"
-
-#: builtin/tag.c:549
+#: builtin/tag.c:581
 #, c-format
 msgid "'%s' is not a valid tag name."
 msgstr "'%s' no es un nombre de tag válido."
 
-#: builtin/tag.c:554
+#: builtin/tag.c:586
 #, c-format
 msgid "tag '%s' already exists"
 msgstr "el tag '%s' ya existe"
 
-#: builtin/tag.c:585
+#: builtin/tag.c:617
 #, c-format
 msgid "Updated tag '%s' (was %s)\n"
 msgstr "Etiqueta '%s' actualizada (era %s)\n"
@@ -22123,19 +23175,19 @@ msgstr ""
 msgid "git update-ref [<options>] --stdin [-z]"
 msgstr "git update-ref [<opciones>] --stdin [-z]"
 
-#: builtin/update-ref.c:487
+#: builtin/update-ref.c:500
 msgid "delete the reference"
 msgstr "eliminar la referencia"
 
-#: builtin/update-ref.c:489
+#: builtin/update-ref.c:502
 msgid "update <refname> not the one it points to"
 msgstr "actualiza <refname> no a lo que apunta"
 
-#: builtin/update-ref.c:490
+#: builtin/update-ref.c:503
 msgid "stdin has NUL-terminated arguments"
 msgstr "stdin tiene argumentos terminados en NUL"
 
-#: builtin/update-ref.c:491
+#: builtin/update-ref.c:504
 msgid "read updates from stdin"
 msgstr "lee actualizaciones de stdin"
 
@@ -22179,15 +23231,15 @@ msgstr "imprimir contenido del commit"
 msgid "print raw gpg status output"
 msgstr "muestra la salida de status gpg en formato raw"
 
-#: builtin/verify-pack.c:55
+#: builtin/verify-pack.c:59
 msgid "git verify-pack [-v | --verbose] [-s | --stat-only] <pack>..."
 msgstr "git verify-pack [-v | --verbose] [-s | --stat-only] <paquete>..."
 
-#: builtin/verify-pack.c:65
+#: builtin/verify-pack.c:70
 msgid "verbose"
 msgstr "verboso"
 
-#: builtin/verify-pack.c:67
+#: builtin/verify-pack.c:72
 msgid "show statistics only"
 msgstr "solo mostrar estadísticas"
 
@@ -22199,89 +23251,63 @@ msgstr "git verify-tag [-v | --verbose] [--format=<formato>] <tag>..."
 msgid "print tag contents"
 msgstr "imprimir contenido del tag"
 
-#: builtin/worktree.c:17
+#: builtin/worktree.c:18
 msgid "git worktree add [<options>] <path> [<commit-ish>]"
 msgstr "git worktree add [<opciones>] <ruta> [<commit-ish>]"
 
-#: builtin/worktree.c:18
+#: builtin/worktree.c:19
 msgid "git worktree list [<options>]"
 msgstr "git worktree list [<opciones>]"
 
-#: builtin/worktree.c:19
+#: builtin/worktree.c:20
 msgid "git worktree lock [<options>] <path>"
 msgstr "git worktree lock [<opciones>] <ruta>"
 
-#: builtin/worktree.c:20
+#: builtin/worktree.c:21
 msgid "git worktree move <worktree> <new-path>"
 msgstr "git worktree move <worktree> <nueva-ruta>"
 
-#: builtin/worktree.c:21
+#: builtin/worktree.c:22
 msgid "git worktree prune [<options>]"
 msgstr "git worktree prune [<opciones>]"
 
-#: builtin/worktree.c:22
+#: builtin/worktree.c:23
 msgid "git worktree remove [<options>] <worktree>"
 msgstr "git worktree remove [<opciones>] <worktree>"
 
-#: builtin/worktree.c:23
+#: builtin/worktree.c:24
 msgid "git worktree unlock <path>"
 msgstr "git worktree unlock <ruta>"
 
-#: builtin/worktree.c:60 builtin/worktree.c:972
+#: builtin/worktree.c:61 builtin/worktree.c:933
 #, c-format
 msgid "failed to delete '%s'"
 msgstr "falló al borrar '%s'"
 
-#: builtin/worktree.c:85
-msgid "not a valid directory"
-msgstr "no en un directorio válido"
-
-#: builtin/worktree.c:91
-msgid "gitdir file does not exist"
-msgstr "archivo gitdir no existe"
-
-#: builtin/worktree.c:96 builtin/worktree.c:105
-#, c-format
-msgid "unable to read gitdir file (%s)"
-msgstr "no es posible leer archivo gitdir (%s)"
-
-#: builtin/worktree.c:115
-#, c-format
-msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
-msgstr "lectura corta (se esperaba %<PRIuMAX> bytes, se leyó %<PRIuMAX>)"
-
-#: builtin/worktree.c:123
-msgid "invalid gitdir file"
-msgstr "archivo gitdir inválido"
-
-#: builtin/worktree.c:131
-msgid "gitdir file points to non-existent location"
-msgstr "archivo gitdir apunta a una ubicación inexistente"
-
-#: builtin/worktree.c:146
+#: builtin/worktree.c:74
 #, c-format
 msgid "Removing %s/%s: %s"
 msgstr "Eliminando %s/%s: %s"
 
-#: builtin/worktree.c:221
+#: builtin/worktree.c:149
 msgid "report pruned working trees"
 msgstr "reporta árboles de trabajo recortados"
 
-#: builtin/worktree.c:223
+#: builtin/worktree.c:151
 msgid "expire working trees older than <time>"
 msgstr "expirar árboles de trabajo más viejos a <tiempo>"
 
-#: builtin/worktree.c:293
+#: builtin/worktree.c:221
 #, c-format
 msgid "'%s' already exists"
 msgstr "'%s' ya existe"
 
-#: builtin/worktree.c:302
+#: builtin/worktree.c:230
 #, c-format
 msgid "unusable worktree destination '%s'"
 msgstr "destino de worktree inutilizable '%s'"
 
-#: builtin/worktree.c:307
+#: builtin/worktree.c:235
 #, c-format
 msgid ""
 "'%s' is a missing but locked worktree;\n"
@@ -22291,7 +23317,7 @@ msgstr ""
 "usa '%s -f -f' para sobreescribir, o 'unlock' y 'prune' o 'remove' para "
 "limpiar"
 
-#: builtin/worktree.c:309
+#: builtin/worktree.c:237
 #, c-format
 msgid ""
 "'%s' is a missing but already registered worktree;\n"
@@ -22300,119 +23326,132 @@ msgstr ""
 "'%s' es un árbol de trabajo faltante pero ya registrado;\n"
 "usa '%s -f' para sobreescribir, o 'prune' o 'remove' para limpiar"
 
-#: builtin/worktree.c:360
+#: builtin/worktree.c:288
 #, c-format
 msgid "could not create directory of '%s'"
 msgstr "no se pudo crear directorio de '%s'"
 
-#: builtin/worktree.c:494 builtin/worktree.c:500
+#: builtin/worktree.c:422 builtin/worktree.c:428
 #, c-format
 msgid "Preparing worktree (new branch '%s')"
 msgstr "Preparando árbol de trabajo (nueva rama '%s')"
 
-#: builtin/worktree.c:496
+#: builtin/worktree.c:424
 #, 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:505
+#: builtin/worktree.c:433
 #, c-format
 msgid "Preparing worktree (checking out '%s')"
 msgstr "Preparando árbol de trabajo (haciendo checkout a '%s')"
 
-#: builtin/worktree.c:511
+#: builtin/worktree.c:439
 #, c-format
 msgid "Preparing worktree (detached HEAD %s)"
 msgstr "Preparando árbol de trabajo (HEAD desacoplado %s)"
 
-#: builtin/worktree.c:552
+#: builtin/worktree.c:480
 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:555
+#: builtin/worktree.c:483
 msgid "create a new branch"
 msgstr "crear una nueva rama"
 
-#: builtin/worktree.c:557
+#: builtin/worktree.c:485
 msgid "create or reset a branch"
 msgstr "crear o restablecer una rama"
 
-#: builtin/worktree.c:559
+#: builtin/worktree.c:487
 msgid "populate the new working tree"
 msgstr "popular el nuevo árbol de trabajo"
 
-#: builtin/worktree.c:560
+#: builtin/worktree.c:488
 msgid "keep the new working tree locked"
 msgstr "mantener el nuevo árbol de trabajo bloqueado"
 
-#: builtin/worktree.c:563
+#: builtin/worktree.c:491
 msgid "set up tracking mode (see git-branch(1))"
 msgstr "configurando modo tracking (mirar git-branch(1))"
 
-#: builtin/worktree.c:566
+#: builtin/worktree.c:494
 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:574
+#: builtin/worktree.c:502
 msgid "-b, -B, and --detach are mutually exclusive"
 msgstr "-b, -B, y --detach son mutuamente exclusivas"
 
-#: builtin/worktree.c:635
+#: builtin/worktree.c:563
 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:755
+#: builtin/worktree.c:680
+msgid "show extended annotations and reasons, if available"
+msgstr "mostrar anotaciones ampliadas y motivos, si están disponibles"
+
+#: builtin/worktree.c:682
+msgid "add 'prunable' annotation to worktrees older than <time>"
+msgstr ""
+"agregue la anotación 'podable' a los árboles de trabajo anteriores a <tiempo>"
+
+#: builtin/worktree.c:691
+msgid "--verbose and --porcelain are mutually exclusive"
+msgstr "--verbose and --porcelain son mutuamente exclusivas"
+
+#: builtin/worktree.c:718
 msgid "reason for locking"
 msgstr "razón para bloquear"
 
-#: builtin/worktree.c:767 builtin/worktree.c:800 builtin/worktree.c:874
-#: builtin/worktree.c:1000
+#: builtin/worktree.c:730 builtin/worktree.c:763 builtin/worktree.c:837
+#: builtin/worktree.c:961
 #, c-format
 msgid "'%s' is not a working tree"
 msgstr "'%s' no es un árbol de trabajo"
 
-#: builtin/worktree.c:769 builtin/worktree.c:802
+#: builtin/worktree.c:732 builtin/worktree.c:765
 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:774
+#: builtin/worktree.c:737
 #, c-format
 msgid "'%s' is already locked, reason: %s"
 msgstr "'%s' ya está bloqueado; razón: %s"
 
-#: builtin/worktree.c:776
+#: builtin/worktree.c:739
 #, c-format
 msgid "'%s' is already locked"
 msgstr "'%s' ya está bloqueado"
 
-#: builtin/worktree.c:804
+#: builtin/worktree.c:767
 #, c-format
 msgid "'%s' is not locked"
 msgstr "'%s' no está bloqueado"
 
-#: builtin/worktree.c:845
+#: builtin/worktree.c:808
 msgid "working trees containing submodules cannot be moved or removed"
 msgstr ""
 "árboles de trabajo conteniendo submódulos no puede ser movidos o eliminado"
 
-#: builtin/worktree.c:853
+#: builtin/worktree.c:816
 msgid "force move even if worktree is dirty or locked"
 msgstr "forzar move incluso si el árbol de trabajo está sucio o bloqueado"
 
-#: builtin/worktree.c:876 builtin/worktree.c:1002
+#: builtin/worktree.c:839 builtin/worktree.c:963
 #, c-format
 msgid "'%s' is a main working tree"
 msgstr "'%s' es un árbol de trabajo principal"
 
-#: builtin/worktree.c:881
+#: builtin/worktree.c:844
 #, 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:894
+#: builtin/worktree.c:857
 #, c-format
 msgid ""
 "cannot move a locked working tree, lock reason: %s\n"
@@ -22421,7 +23460,7 @@ msgstr ""
 "no se puede mover un árbol de trabajo bloqueado, motivo del bloqueo: %s\n"
 "use 'move -f -f' para sobreescribir o desbloquear primero"
 
-#: builtin/worktree.c:896
+#: builtin/worktree.c:859
 msgid ""
 "cannot move a locked working tree;\n"
 "use 'move -f -f' to override or unlock first"
@@ -22429,232 +23468,115 @@ msgstr ""
 "no se puede mover un árbol de trabajo bloqueado;\n"
 "use 'move -f -f' para sobreescribir o desbloquear primero"
 
-#: builtin/worktree.c:899
-#, c-format
-msgid "validation failed, cannot move working tree: %s"
-msgstr "falló validación, no se puede mover el árbol de trabajo: %s"
-
-#: builtin/worktree.c:904
-#, c-format
-msgid "failed to move '%s' to '%s'"
-msgstr "falló al mover '%s' a '%s'"
-
-#: builtin/worktree.c:952
-#, c-format
-msgid "failed to run 'git status' on '%s'"
-msgstr "falló al ejecutar 'git status' en '%s'"
-
-#: builtin/worktree.c:956
-#, c-format
-msgid "'%s' contains modified or untracked files, use --force to delete it"
-msgstr ""
-"'%s' contiene archivos no rastreados o modificados, use --force para borrarlo"
-
-#: builtin/worktree.c:961
-#, c-format
-msgid "failed to run 'git status' on '%s', code %d"
-msgstr "no se pudo ejecutar 'git status' en '%s', código %d"
-
-#: builtin/worktree.c:984
-msgid "force removal even if worktree is dirty or locked"
-msgstr "forzar remoción incluso si el árbol de trabajo está sucio o bloqueado"
-
-#: builtin/worktree.c:1007
-#, c-format
-msgid ""
-"cannot remove a locked working tree, lock reason: %s\n"
-"use 'remove -f -f' to override or unlock first"
-msgstr ""
-"no se pueden eliminar árbol de trabajo bloqueado, razón del bloqueo: %s\n"
-"use 'remove -f -f' para sobreescribir o desbloquear primero"
-
-#: builtin/worktree.c:1009
-msgid ""
-"cannot remove a locked working tree;\n"
-"use 'remove -f -f' to override or unlock first"
-msgstr ""
-"no se pueden eliminar árbol de trabajo bloqueado;\n"
-"use 'remove -f -f' para sobreescribir o desbloquear primero"
-
-#: builtin/worktree.c:1012
-#, c-format
-msgid "validation failed, cannot remove working tree: %s"
-msgstr "falló validación, no se puede eliminar árbol de trabajo: %s"
-
-#: builtin/write-tree.c:15
-msgid "git write-tree [--missing-ok] [--prefix=<prefix>/]"
-msgstr "git write-tree [--missing-ok] [--prefix=<prefijo>/]"
-
-#: builtin/write-tree.c:28
-msgid "<prefix>/"
-msgstr "<prefijo>/"
-
-#: builtin/write-tree.c:29
-msgid "write tree object for a subdirectory <prefix>"
-msgstr "escribir objeto de  árbol para un subdirectorio <prefijo>"
-
-#: builtin/write-tree.c:31
-msgid "only useful for debugging"
-msgstr "sólo útil para depurar"
-
-#: bugreport.c:15
-msgid "git version:\n"
-msgstr "versión de git:\n"
-
-#: bugreport.c:21
-#, c-format
-msgid "uname() failed with error '%s' (%d)\n"
-msgstr "uname() falló con error '%s' (%d)\n"
-
-#: bugreport.c:31
-msgid "compiler info: "
-msgstr "información del compilador: "
-
-#: bugreport.c:34
-msgid "libc info: "
-msgstr "información de libc: "
-
-#: bugreport.c:80
-msgid "not run from a git repository - no hooks to show\n"
-msgstr "no ejecutado desde un repositorio git - no hay hooks para mostrar\n"
-
-#: bugreport.c:90
-msgid "git bugreport [-o|--output-directory <file>] [-s|--suffix <format>]"
-msgstr ""
-"git bugreport [-o|--output-directory <archivo>] [-s|--suffix <formato>]"
-
-#: bugreport.c:97
-msgid ""
-"Thank you for filling out a Git bug report!\n"
-"Please answer the following questions to help us understand your issue.\n"
-"\n"
-"What did you do before the bug happened? (Steps to reproduce your issue)\n"
-"\n"
-"What did you expect to happen? (Expected behavior)\n"
-"\n"
-"What happened instead? (Actual behavior)\n"
-"\n"
-"What's different between what you expected and what actually happened?\n"
-"\n"
-"Anything else you want to add:\n"
-"\n"
-"Please review the rest of the bug report below.\n"
-"You can delete any lines you don't wish to share.\n"
-msgstr ""
-"¡Gracias por prepara un reporte de bug de Git!\n"
-"Por favor responde las siguientes preguntas para ayudarnos a entender el "
-"problema.\n"
-"\n"
-"¿Qué hiciste antes de que sucediera el bug? (Pasos para reproducir el "
-"problema)\n"
-"\n"
-"¿Qué esperabas que sucediera? (Comportamiento esperado)\n"
-"\n"
-"¿Qué sucedio en lugar de eso? (Comportamiento real)\n"
-"\n"
-"¿Qué es diferente entre lo que esperabas y lo que pasó?\n"
-"\n"
-"Cualquier cosa que quieras agregar:\n"
-"\n"
-"Por favor revisa el resto del reporte abajo.\n"
-"Puedes borrar cualquier línea que no desees compartir.\n"
-
-#: bugreport.c:136
-msgid "specify a destination for the bugreport file"
-msgstr "especificar el destino para el archivo de reporte de bug"
-
-#: bugreport.c:138
-msgid "specify a strftime format suffix for the filename"
-msgstr "especificar el sufijo formato strftime para el nombre del archivo."
-
-#: bugreport.c:162
-#, c-format
-msgid "could not create leading directories for '%s'"
-msgstr "no se pudo crear directorios principales para '%s'"
-
-#: bugreport.c:169
-msgid "System Info"
-msgstr "Información del sistema"
+#: builtin/worktree.c:862
+#, c-format
+msgid "validation failed, cannot move working tree: %s"
+msgstr "falló validación, no se puede mover el árbol de trabajo: %s"
 
-#: bugreport.c:172
-msgid "Enabled Hooks"
-msgstr "Activar Hooks"
+#: builtin/worktree.c:867
+#, c-format
+msgid "failed to move '%s' to '%s'"
+msgstr "falló al mover '%s' a '%s'"
 
-#: bugreport.c:180
+#: builtin/worktree.c:913
 #, c-format
-msgid "couldn't create a new file at '%s'"
-msgstr "no se pudo crear un archivo en '%s'"
+msgid "failed to run 'git status' on '%s'"
+msgstr "falló al ejecutar 'git status' en '%s'"
 
-#: bugreport.c:184
+#: builtin/worktree.c:917
 #, c-format
-msgid "unable to write to %s"
-msgstr "no es posible escribir en %s"
+msgid "'%s' contains modified or untracked files, use --force to delete it"
+msgstr ""
+"'%s' contiene archivos no rastreados o modificados, use --force para borrarlo"
 
-#: bugreport.c:194
+#: builtin/worktree.c:922
 #, c-format
-msgid "Created new report at '%s'.\n"
-msgstr "Crear un nuevo reporte en '%s'.\n"
+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:945
+msgid "force removal even if worktree is dirty or locked"
+msgstr "forzar remoción incluso si el árbol de trabajo está sucio o bloqueado"
 
-#: fast-import.c:3100
+#: builtin/worktree.c:968
 #, c-format
-msgid "Missing from marks for submodule '%s'"
-msgstr "Faltan marcas from para el submódulo '%s'"
+msgid ""
+"cannot remove a locked working tree, lock reason: %s\n"
+"use 'remove -f -f' to override or unlock first"
+msgstr ""
+"no se pueden eliminar árbol de trabajo bloqueado, razón del bloqueo: %s\n"
+"use 'remove -f -f' para sobreescribir o desbloquear primero"
+
+#: builtin/worktree.c:970
+msgid ""
+"cannot remove a locked working tree;\n"
+"use 'remove -f -f' to override or unlock first"
+msgstr ""
+"no se pueden eliminar árbol de trabajo bloqueado;\n"
+"use 'remove -f -f' para sobreescribir o desbloquear primero"
 
-#: fast-import.c:3102
+#: builtin/worktree.c:973
 #, c-format
-msgid "Missing to marks for submodule '%s'"
-msgstr "Faltan marcas to para el submódulo '%s'"
+msgid "validation failed, cannot remove working tree: %s"
+msgstr "falló validación, no se puede eliminar árbol de trabajo: %s"
 
-#: fast-import.c:3237
+#: builtin/worktree.c:997
 #, c-format
-msgid "Expected 'mark' command, got %s"
-msgstr "Se esperaba comando 'mark', se obtuvo %s"
+msgid "repair: %s: %s"
+msgstr "reparar: %s: %s"
 
-#: fast-import.c:3242
+#: builtin/worktree.c:1000
 #, c-format
-msgid "Expected 'to' command, got %s"
-msgstr "Se esperaba comando 'to', se obtuvo %s"
+msgid "error: %s: %s"
+msgstr "error: %s: %s"
 
-#: fast-import.c:3334
-msgid "Expected format name:filename for submodule rewrite option"
-msgstr ""
-"Formato esperado de nombre:nombre de archivo para la opción de sobreescribir "
-"submódulo"
+#: builtin/write-tree.c:15
+msgid "git write-tree [--missing-ok] [--prefix=<prefix>/]"
+msgstr "git write-tree [--missing-ok] [--prefix=<prefijo>/]"
 
-#: fast-import.c:3388
-#, c-format
-msgid "feature '%s' forbidden in input without --allow-unsafe-features"
-msgstr "característica '%s' prohibida en input sin --allow-unsafe-features"
+#: builtin/write-tree.c:28
+msgid "<prefix>/"
+msgstr "<prefijo>/"
+
+#: builtin/write-tree.c:29
+msgid "write tree object for a subdirectory <prefix>"
+msgstr "escribir objeto de  árbol para un subdirectorio <prefijo>"
+
+#: builtin/write-tree.c:31
+msgid "only useful for debugging"
+msgstr "sólo útil para depurar"
 
-#: http-fetch.c:111
+#: http-fetch.c:118
 #, c-format
 msgid "argument to --packfile must be a valid hash (got '%s')"
 msgstr "argumento para --packfile tiene que se un hash válido (se obtuvo '%s')"
 
-#: credential-cache--daemon.c:223
-#, c-format
-msgid ""
-"The permissions on your socket directory are too loose; other\n"
-"users may be able to read your cached credentials. Consider running:\n"
-"\n"
-"\tchmod 0700 %s"
-msgstr ""
-"Los permisos en tu directorio de socket son demasiado flojos; otros\n"
-"usuarios pueden leer sus credenciales almacenadas en caché. Considera "
-"ejecutar:\n"
-"\n"
-"\tchmod 0700 %s"
+#: http-fetch.c:128
+msgid "not a git repository"
+msgstr "no es un repositorio git"
 
-#: credential-cache--daemon.c:272
-msgid "print debugging messages to stderr"
-msgstr "mostrar mensajes de debug en stderr"
+#: http-fetch.c:134
+msgid "--packfile requires --index-pack-args"
+msgstr "--packfile requiere --index-pack-args"
+
+#: http-fetch.c:143
+msgid "--index-pack-args can only be used with --packfile"
+msgstr "--index-pack-args solo se puede usar con --packfile"
+
+#: t/helper/test-fast-rebase.c:141
+msgid "unhandled options"
+msgstr "opciones no manejadas"
+
+#: t/helper/test-fast-rebase.c:146
+msgid "error preparing revisions"
+msgstr "error al preparar revisiones"
 
-#: t/helper/test-reach.c:152
+#: t/helper/test-reach.c:154
 #, c-format
 msgid "commit %s is not marked reachable"
 msgstr "commit %s no está marcado como alcanzable"
 
-#: t/helper/test-reach.c:162
+#: t/helper/test-reach.c:164
 msgid "too many commits marked reachable"
 msgstr "demasiados commits marcados como alcanzables"
 
@@ -22673,16 +23595,19 @@ msgid ""
 "           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--"
 "bare]\n"
 "           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]\n"
+"           [--super-prefix=<path>] [--config-env=<name>=<envvar>]\n"
 "           <command> [<args>]"
 msgstr ""
 "git [--version] [--help] [-C <ruta>] [-c <nombre>=<valor>]\n"
-"           [--exec-path[=<ruta>]] [--html-path] [--man-path] [--info-path]\n"
-"           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--"
+"            [--exec-path [= <path>]] [--html-path] [--man-path] [--info-"
+"path]\n"
+"            [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--"
 "bare]\n"
-"           [--git-dir=<ruta>] [--work-tree=<ruta>] [--namespace=<nombre>]\n"
-"           <comando> [<args>]"
+"            [--git-dir=<ruta>] [--work-tree=<ruta>] [--namespace=<nombre>]\n"
+"            [--super-prefix=<ruta>] [--config-env=<nombre>=<envvar>]\n"
+"            <comando> [<args>]"
 
-#: git.c:35
+#: git.c:36
 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"
@@ -22694,47 +23619,47 @@ msgstr ""
 "para leer sobre un subcomando o concepto específico.\n"
 "Mira 'git help git' para una vista general del sistema."
 
-#: git.c:187
+#: git.c:188
 #, c-format
 msgid "no directory given for --git-dir\n"
 msgstr "no se entregó directorio para --git-dir\n"
 
-#: git.c:201
+#: git.c:202
 #, c-format
 msgid "no namespace given for --namespace\n"
 msgstr "no se entregó namespace para --namespace\n"
 
-#: git.c:215
+#: git.c:216
 #, c-format
 msgid "no directory given for --work-tree\n"
 msgstr "no se entregó directorio para --work-tree\n"
 
-#: git.c:229
+#: git.c:230
 #, c-format
 msgid "no prefix given for --super-prefix\n"
 msgstr "no se entregó prefijo para --super-prefix\n"
 
-#: git.c:251
+#: git.c:252
 #, c-format
 msgid "-c expects a configuration string\n"
 msgstr "-c espera un string de configuración\n"
 
-#: git.c:289
+#: git.c:292
 #, c-format
 msgid "no directory given for -C\n"
 msgstr "no se entregó directorio para -C\n"
 
-#: git.c:315
+#: git.c:318
 #, c-format
 msgid "unknown option: %s\n"
 msgstr "opción %s desconocida\n"
 
-#: git.c:362
+#: git.c:367
 #, c-format
 msgid "while expanding alias '%s': '%s'"
 msgstr "al expandir el alias '%s':'%s'"
 
-#: git.c:371
+#: git.c:376
 #, c-format
 msgid ""
 "alias '%s' changes environment variables.\n"
@@ -22743,39 +23668,39 @@ msgstr ""
 "alias '%s' cambia las variables de entorno.\n"
 "Puedes usar '!git' en el alias para hacer esto"
 
-#: git.c:378
+#: git.c:383
 #, c-format
 msgid "empty alias for %s"
 msgstr "alias vacío para %s"
 
-#: git.c:381
+#: git.c:386
 #, c-format
 msgid "recursive alias: %s"
 msgstr "alias recursivo: %s"
 
-#: git.c:463
+#: git.c:468
 msgid "write failure on standard output"
 msgstr "error de escritura en standard output"
 
-#: git.c:465
+#: git.c:470
 msgid "unknown write failure on standard output"
 msgstr "error desconocido de escritura en standard output"
 
-#: git.c:467
+#: git.c:472
 msgid "close failed on standard output"
 msgstr "cierre falló en standard output"
 
-#: git.c:792
+#: git.c:823
 #, c-format
 msgid "alias loop detected: expansion of '%s' does not terminate:%s"
 msgstr "bucle de alias detectado: expansión de '%s' no termina: %s"
 
-#: git.c:842
+#: git.c:873
 #, c-format
 msgid "cannot handle %s as a builtin"
 msgstr "no se puede manejar %s como un builtin"
 
-#: git.c:855
+#: git.c:886
 #, c-format
 msgid ""
 "usage: %s\n"
@@ -22786,12 +23711,12 @@ msgstr ""
 "\n"
 "\n"
 
-#: git.c:875
+#: git.c:906
 #, 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:887
+#: git.c:918
 #, c-format
 msgid "failed to run command '%s': %s\n"
 msgstr "falló al ejecutar comando '%s': %s\n"
@@ -22845,137 +23770,137 @@ msgstr ""
 "  preguntaba por: %s\n"
 "   redireccionamiento: %s"
 
-#: remote-curl.c:168
+#: remote-curl.c:183
 #, c-format
 msgid "invalid quoting in push-option value: '%s'"
 msgstr "quoting inválido en valor de push-option: '%s'"
 
-#: remote-curl.c:295
+#: remote-curl.c:307
 #, c-format
 msgid "%sinfo/refs not valid: is this a git repository?"
 msgstr "%sinfo/refs no es válido: ¿es este un repositorio git?"
 
-#: remote-curl.c:396
+#: remote-curl.c:408
 msgid "invalid server response; expected service, got flush packet"
 msgstr ""
 "respuesta de servidor inválida; se esperaba servicio, se obtuvo un flush "
 "packet"
 
-#: remote-curl.c:427
+#: remote-curl.c:439
 #, c-format
 msgid "invalid server response; got '%s'"
 msgstr "respuesta de servidor inválida; se obtuvo '%s'"
 
-#: remote-curl.c:487
+#: remote-curl.c:499
 #, c-format
 msgid "repository '%s' not found"
 msgstr "repositorio '%s' no encontrado"
 
-#: remote-curl.c:491
+#: remote-curl.c:503
 #, c-format
 msgid "Authentication failed for '%s'"
 msgstr "Autenticación falló para '%s'"
 
-#: remote-curl.c:495
+#: remote-curl.c:507
 #, c-format
 msgid "unable to access '%s': %s"
 msgstr "no es posible acceder '%s':%s"
 
-#: remote-curl.c:501
+#: remote-curl.c:513
 #, c-format
 msgid "redirecting to %s"
 msgstr "redirigiendo a %s"
 
-#: remote-curl.c:630
+#: remote-curl.c:642
 msgid "shouldn't have EOF when not gentle on EOF"
 msgstr "no debería tener EOF cuando no es gentil en EOF"
 
-#: remote-curl.c:642
+#: remote-curl.c:654
 msgid "remote server sent stateless separator"
 msgstr "el servidor remoto envió un separador sin estado (stateless)"
 
-#: remote-curl.c:712
+#: remote-curl.c:724
 msgid "unable to rewind rpc post data - try increasing http.postBuffer"
 msgstr ""
 "no es posible rebobinar rpc post data - intenta incrementando http.postBuffer"
 
-#: remote-curl.c:742
+#: remote-curl.c:754
 #, c-format
 msgid "remote-curl: bad line length character: %.4s"
 msgstr "remote-curl: mal caracter de largo de línea: %.4s"
 
-#: remote-curl.c:744
+#: remote-curl.c:756
 msgid "remote-curl: unexpected response end packet"
 msgstr "remote-curl: packet de respuesta final inesperado"
 
-#: remote-curl.c:820
+#: remote-curl.c:832
 #, c-format
 msgid "RPC failed; %s"
 msgstr "RPC falló; %s"
 
-#: remote-curl.c:860
+#: remote-curl.c:872
 msgid "cannot handle pushes this big"
 msgstr "no se puede manejar pushes tan grandes"
 
-#: remote-curl.c:975
+#: remote-curl.c:987
 #, c-format
 msgid "cannot deflate request; zlib deflate error %d"
 msgstr "no se puede desinflar el request; zlib deflate error %d"
 
-#: remote-curl.c:979
+#: remote-curl.c:991
 #, c-format
 msgid "cannot deflate request; zlib end error %d"
 msgstr "no se puede desinflar el request; zlib end error %d"
 
-#: remote-curl.c:1029
+#: remote-curl.c:1041
 #, c-format
 msgid "%d bytes of length header were received"
 msgstr "%d bytes de header de longitud fueron recibidos"
 
-#: remote-curl.c:1031
+#: remote-curl.c:1043
 #, c-format
 msgid "%d bytes of body are still expected"
 msgstr "%d bytes de cuerpo se siguen esperando"
 
-#: remote-curl.c:1120
+#: remote-curl.c:1132
 msgid "dumb http transport does not support shallow capabilities"
 msgstr "dump http transport no soporta capacidades superficiales"
 
-#: remote-curl.c:1135
+#: remote-curl.c:1147
 msgid "fetch failed."
 msgstr "fetch falló."
 
-#: remote-curl.c:1183
+#: remote-curl.c:1193
 msgid "cannot fetch by sha1 over smart http"
 msgstr "no se puede hacer fetch por sha1 sobre smart http"
 
-#: remote-curl.c:1227 remote-curl.c:1233
+#: remote-curl.c:1237 remote-curl.c:1243
 #, c-format
 msgid "protocol error: expected sha/ref, got '%s'"
 msgstr "error de protocolo: se esperaba sha/ref, se obtuvo '%s'"
 
-#: remote-curl.c:1245 remote-curl.c:1360
+#: remote-curl.c:1255 remote-curl.c:1373
 #, c-format
 msgid "http transport does not support %s"
 msgstr "http transport no soporta %s"
 
-#: remote-curl.c:1281
+#: remote-curl.c:1291
 msgid "git-http-push failed"
 msgstr "git-http-push falló"
 
-#: remote-curl.c:1466
+#: remote-curl.c:1479
 msgid "remote-curl: usage: git remote-curl <remote> [<url>]"
 msgstr "remote-curl: uso: git remote-curl <remote> [<url>]"
 
-#: remote-curl.c:1498
+#: remote-curl.c:1511
 msgid "remote-curl: error reading command stream from git"
 msgstr "remote-curl: error leyendo command stream de git"
 
-#: remote-curl.c:1505
+#: remote-curl.c:1518
 msgid "remote-curl: fetch attempted without a local repo"
 msgstr "remote-curl: fetch intentado sin un repositorio local"
 
-#: remote-curl.c:1546
+#: remote-curl.c:1559
 #, c-format
 msgid "remote-curl: unknown command '%s' from git"
 msgstr "remote-curl: comando '%s' desconocido de git"
@@ -22988,11 +23913,11 @@ msgstr "no hay información disponible del compilador\n"
 msgid "no libc information available\n"
 msgstr "no hay información disponible de libc\n"
 
-#: list-objects-filter-options.h:85
+#: list-objects-filter-options.h:91
 msgid "args"
 msgstr "args"
 
-#: list-objects-filter-options.h:86
+#: list-objects-filter-options.h:92
 msgid "object filtering"
 msgstr "filtrado de objeto"
 
@@ -23013,8 +23938,8 @@ msgid "be more quiet"
 msgstr "ser más discreto"
 
 #: parse-options.h:317
-msgid "use <n> digits to display SHA-1s"
-msgstr "usa <n> dígitos para mostrar SHA-1s"
+msgid "use <n> digits to display object names"
+msgstr "use <n> dígitos para mostrar los nombres de los objetos"
 
 #: parse-options.h:336
 msgid "how to strip spaces and #comments from message"
@@ -23031,11 +23956,11 @@ msgstr ""
 "con --pathspec-from-file, elementos de pathspec son separados con caracter "
 "NUL"
 
-#: ref-filter.h:101
+#: ref-filter.h:99
 msgid "key"
 msgstr "clave"
 
-#: ref-filter.h:101
+#: ref-filter.h:99
 msgid "field name to sort on"
 msgstr "nombre del campo por el cuál ordenar"
 
@@ -23045,14 +23970,6 @@ msgstr ""
 "actualizar el índice con la resolución de conflictos reutilizada si es "
 "posible"
 
-#: wt-status.h:80
-msgid "HEAD detached at "
-msgstr "HEAD desacoplada en "
-
-#: wt-status.h:81
-msgid "HEAD detached from "
-msgstr "HEAD desacoplada de "
-
 #: command-list.h:50
 msgid "Add file contents to the index"
 msgstr "Agrega contenido de carpetas al índice"
@@ -23256,533 +24173,505 @@ msgid "Output information on each ref"
 msgstr "Información de output en cada ref"
 
 #: command-list.h:99
+msgid "Run a Git command on a list of repositories"
+msgstr "Ejecute un comando de Git en una lista de repositorios"
+
+#: command-list.h:100
 msgid "Prepare patches for e-mail submission"
 msgstr "Prepara parches para ser enviados por e-mail"
 
-#: command-list.h:100
+#: command-list.h:101
 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:101
+#: command-list.h:102
 msgid "Cleanup unnecessary files and optimize the local repository"
 msgstr "Limpia archivos innecesarios y optimiza el repositorio local"
 
-#: command-list.h:102
+#: command-list.h:103
 msgid "Extract commit ID from an archive created using git-archive"
 msgstr "Extrae el ID de commit de un archivo creado usando git-archive"
 
-#: command-list.h:103
+#: command-list.h:104
 msgid "Print lines matching a pattern"
 msgstr "Imprime las líneas que concuerdan con el patron"
 
-#: command-list.h:104
+#: command-list.h:105
 msgid "A portable graphical interface to Git"
 msgstr "Una interfaz gráfica portátil para Git"
 
-#: command-list.h:105
+#: command-list.h:106
 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:106
+#: command-list.h:107
 msgid "Display help information about Git"
 msgstr "Mostrar información sobre Git"
 
-#: command-list.h:107
+#: command-list.h:108
 msgid "Server side implementation of Git over HTTP"
 msgstr "Implementación de lado de servidor de Git por HTTP"
 
-#: command-list.h:108
+#: command-list.h:109
 msgid "Download from a remote Git repository via HTTP"
 msgstr "Descarga de un repositorio Git remoto vía HTTP"
 
-#: command-list.h:109
+#: command-list.h:110
 msgid "Push objects over HTTP/DAV to another repository"
 msgstr "Empuja objetos por HTTP/DAV a otro repositorio"
 
-#: command-list.h:110
+#: command-list.h:111
 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:111
+#: command-list.h:112
 msgid "Build pack index file for an existing packed archive"
 msgstr "Constuye un archivo de índice para un archivo empaquetado existente"
 
-#: command-list.h:112
+#: command-list.h:113
 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"
 
-#: command-list.h:113
+#: command-list.h:114
 msgid "Instantly browse your working repository in gitweb"
 msgstr "Buscar instantáneamente tu repositorio de trabajo en gitweb"
 
-#: command-list.h:114
+#: command-list.h:115
 msgid "Add or parse structured information in commit messages"
 msgstr "Agregar o analizar información estructurada en mensajes de commit"
 
-#: command-list.h:115
+#: command-list.h:116
 msgid "The Git repository browser"
 msgstr "El navegador de repositorio Git"
 
-#: command-list.h:116
+#: command-list.h:117
 msgid "Show commit logs"
 msgstr "Muestra los logs de los commits"
 
-#: command-list.h:117
+#: command-list.h:118
 msgid "Show information about files in the index and the working tree"
 msgstr "Muestra información sobre archivos in el índice y el árbol de trabajo"
 
-#: command-list.h:118
+#: command-list.h:119
 msgid "List references in a remote repository"
 msgstr "Lista referencias en un repositorio remoto"
 
-#: command-list.h:119
+#: command-list.h:120
 msgid "List the contents of a tree object"
 msgstr "Lista los contenidos de un objeto árbol"
 
-#: command-list.h:120
+#: command-list.h:121
 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:121
+#: command-list.h:122
 msgid "Simple UNIX mbox splitter program"
 msgstr "Programa divisor de mbox simple de UNIX"
 
-#: command-list.h:122
+#: command-list.h:123
+msgid "Run tasks to optimize Git repository data"
+msgstr "Ejecute tareas para optimizar los datos del repositorio de Git"
+
+#: command-list.h:124
 msgid "Join two or more development histories together"
 msgstr "Junta dos o más historiales de desarrollo juntos"
 
-#: command-list.h:123
+#: command-list.h:125
 msgid "Find as good common ancestors as possible for a merge"
 msgstr "Encuentra un ancestro común bueno para una posible fusión"
 
-#: command-list.h:124
+#: command-list.h:126
 msgid "Run a three-way file merge"
 msgstr "Ejecuta una fusión de tres vías en un archivo"
 
-#: command-list.h:125
+#: command-list.h:127
 msgid "Run a merge for files needing merging"
 msgstr "Ejecuta una fusión para archivos que la necesitan"
 
-#: command-list.h:126
+#: command-list.h:128
 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:127
+#: command-list.h:129
 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:128
+#: command-list.h:130
 msgid "Show three-way merge without touching index"
 msgstr "Mostrar fusión de tres vías sin tocar el índice"
 
-#: command-list.h:129
+#: command-list.h:131
 msgid "Write and verify multi-pack-indexes"
 msgstr "Escribe y verifica archivos multi-pack-index"
 
-#: command-list.h:130
-msgid "Creates a tag object"
-msgstr "Crea un objeto tag"
+#: command-list.h:132
+msgid "Creates a tag object with extra validation"
+msgstr "Crea un objeto de etiqueta con validación adicional"
 
-#: command-list.h:131
+#: command-list.h:133
 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:132
+#: command-list.h:134
 msgid "Move or rename a file, a directory, or a symlink"
 msgstr "Mueve o cambia el nombre a archivos, directorios o enlaces simbólicos"
 
-#: command-list.h:133
+#: command-list.h:135
 msgid "Find symbolic names for given revs"
 msgstr "Encontrar nombres simbólicos para revs dados"
 
-#: command-list.h:134
+#: command-list.h:136
 msgid "Add or inspect object notes"
 msgstr "Agrega o inspecciona objetos nota"
 
-#: command-list.h:135
+#: command-list.h:137
 msgid "Import from and submit to Perforce repositories"
 msgstr "Importar desde y enviar a repositorios Perforce"
 
-#: command-list.h:136
+#: command-list.h:138
 msgid "Create a packed archive of objects"
 msgstr "Crea un archivo de objetos empaquetados"
 
-#: command-list.h:137
+#: command-list.h:139
 msgid "Find redundant pack files"
 msgstr "Encuentra archivos empaquetados de manera redundante"
 
-#: command-list.h:138
+#: command-list.h:140
 msgid "Pack heads and tags for efficient repository access"
 msgstr "Empaqueta heads y tags para un acceso eficiente al repositorio"
 
-#: command-list.h:139
-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:140
+#: command-list.h:141
 msgid "Compute unique ID for a patch"
 msgstr "Calcular ID único para un parche"
 
-#: command-list.h:141
+#: command-list.h:142
 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:142
+#: command-list.h:143
 msgid "Remove extra objects that are already in pack files"
 msgstr "Remover objetos extra que ya están en archivos empaquetados"
 
-#: command-list.h:143
+#: command-list.h:144
 msgid "Fetch from and integrate with another repository or a local branch"
 msgstr "Realiza un fetch e integra con otro repositorio o rama local"
 
-#: command-list.h:144
+#: command-list.h:145
 msgid "Update remote refs along with associated objects"
 msgstr "Actualiza referencias remotas junto con sus objetos asociados"
 
-#: command-list.h:145
+#: command-list.h:146
 msgid "Applies a quilt patchset onto the current branch"
 msgstr "Aplica un parche quilt en la rama actual"
 
-#: command-list.h:146
+#: command-list.h:147
 msgid "Compare two commit ranges (e.g. two versions of a branch)"
 msgstr "Compara dos rangos de commits (por ejemplo dos versions de un branch)"
 
-#: command-list.h:147
+#: command-list.h:148
 msgid "Reads tree information into the index"
 msgstr "Lee información del ábol en el índice"
 
-#: command-list.h:148
+#: command-list.h:149
 msgid "Reapply commits on top of another base tip"
 msgstr "Vuelve a aplicar commits en la punta de otra rama"
 
-#: command-list.h:149
+#: command-list.h:150
 msgid "Receive what is pushed into the repository"
 msgstr "Recibir lo que es empujado en el respositorio"
 
-#: command-list.h:150
+#: command-list.h:151
 msgid "Manage reflog information"
 msgstr "Gestionar información de reflog"
 
-#: command-list.h:151
+#: command-list.h:152
 msgid "Manage set of tracked repositories"
 msgstr "Gestiona un conjunto de repositorios rastreados"
 
-#: command-list.h:152
+#: command-list.h:153
 msgid "Pack unpacked objects in a repository"
 msgstr "Empaquetar objetos no empaquetados en un repositorio"
 
-#: command-list.h:153
+#: command-list.h:154
 msgid "Create, list, delete refs to replace objects"
 msgstr "Crea, lista, borra referencias para reemplazar objetos"
 
-#: command-list.h:154
+#: command-list.h:155
 msgid "Generates a summary of pending changes"
 msgstr "Genera un resumen de cambios pendientes"
 
-#: command-list.h:155
+#: command-list.h:156
 msgid "Reuse recorded resolution of conflicted merges"
 msgstr "Reutilizar la resolución registrada de fusiones conflictivas"
 
-#: command-list.h:156
+#: command-list.h:157
 msgid "Reset current HEAD to the specified state"
 msgstr "Reinicia el HEAD actual a un estado especifico"
 
-#: command-list.h:157
+#: command-list.h:158
 msgid "Restore working tree files"
 msgstr "Restaurar archivos de árboles de trabajo"
 
-#: command-list.h:158
+#: command-list.h:159
 msgid "Revert some existing commits"
 msgstr "Revierte algunos commits existentes"
 
-#: command-list.h:159
+#: command-list.h:160
 msgid "Lists commit objects in reverse chronological order"
 msgstr "Lista objetos commit en orden cronológico inverso"
 
-#: command-list.h:160
+#: command-list.h:161
 msgid "Pick out and massage parameters"
 msgstr "Seleccionar y masajear los parámetros"
 
-#: command-list.h:161
+#: command-list.h:162
 msgid "Remove files from the working tree and from the index"
 msgstr "Borra archivos del árbol de trabajo y del índice"
 
-#: command-list.h:162
+#: command-list.h:163
 msgid "Send a collection of patches as emails"
 msgstr "Envía una colección de parches como e-mails"
 
-#: command-list.h:163
+#: command-list.h:164
 msgid "Push objects over Git protocol to another repository"
 msgstr "Empujar objetos por protocolo Git a otro repositorio"
 
-#: command-list.h:164
+#: command-list.h:165
 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:165
+#: command-list.h:166
 msgid "Summarize 'git log' output"
 msgstr "Resumir la salida 'git log'"
 
-#: command-list.h:166
+#: command-list.h:167
 msgid "Show various types of objects"
 msgstr "Muestra varios tipos de objetos"
 
-#: command-list.h:167
+#: command-list.h:168
 msgid "Show branches and their commits"
 msgstr "Mostrar ramas y sus commits"
 
-#: command-list.h:168
+#: command-list.h:169
 msgid "Show packed archive index"
 msgstr "Mostrar el índice de archivo empaquetado"
 
-#: command-list.h:169
+#: command-list.h:170
 msgid "List references in a local repository"
 msgstr "Listar referencias en el repositorio local"
 
-#: command-list.h:170
+#: command-list.h:171
 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:171
+#: command-list.h:172
 msgid "Common Git shell script setup code"
 msgstr "Código de configuración de script de shell común de Git"
 
-#: command-list.h:172
+#: command-list.h:173
 msgid "Initialize and modify the sparse-checkout"
 msgstr "Inicializa y modifica el sparse-checkout"
 
-#: command-list.h:173
+#: command-list.h:174
 msgid "Stash the changes in a dirty working directory away"
 msgstr ""
 "Poner en un stash los cambios en un directorio de trabajo sucio de todas "
 "maneras"
 
-#: command-list.h:174
+#: command-list.h:175
 msgid "Add file contents to the staging area"
 msgstr "Agrega contenidos de un archivo al área de staging"
 
-#: command-list.h:175
+#: command-list.h:176
 msgid "Show the working tree status"
 msgstr "Muestra el estado del árbol de trabajo"
 
-#: command-list.h:176
+#: command-list.h:177
 msgid "Remove unnecessary whitespace"
 msgstr "Eliminar el espacio en blanco innecesario"
 
-#: command-list.h:177
+#: command-list.h:178
 msgid "Initialize, update or inspect submodules"
 msgstr "Inicializa, actualiza o inspecciona submódulos"
 
-#: command-list.h:178
+#: command-list.h:179
 msgid "Bidirectional operation between a Subversion repository and Git"
 msgstr "Operación bidireccional entre un repositorio Subversion y Git"
 
-#: command-list.h:179
+#: command-list.h:180
 msgid "Switch branches"
 msgstr "Cambiar branches"
 
-#: command-list.h:180
+#: command-list.h:181
 msgid "Read, modify and delete symbolic refs"
 msgstr "Lee, modifica y borra referencias simbólicas"
 
-#: command-list.h:181
+#: command-list.h:182
 msgid "Create, list, delete or verify a tag object signed with GPG"
 msgstr "Crea, lista, borra o verifica un tag de objeto firmado con GPG"
 
-#: command-list.h:182
+#: command-list.h:183
 msgid "Creates a temporary file with a blob's contents"
 msgstr "Crea un archivo temporal con contenidos de un blob"
 
-#: command-list.h:183
+#: command-list.h:184
 msgid "Unpack objects from a packed archive"
 msgstr "Desempaqueta objetos de un archivo empaquetado"
 
-#: command-list.h:184
+#: command-list.h:185
 msgid "Register file contents in the working tree to the index"
 msgstr "Registra contenidos de archivos en el árbol de trabajo al índice"
 
-#: command-list.h:185
+#: command-list.h:186
 msgid "Update the object name stored in a ref safely"
 msgstr ""
 "Actualiza el nombre del objeto almacenado en una referencia de forma segura"
 
-#: command-list.h:186
+#: command-list.h:187
 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:187
+#: command-list.h:188
 msgid "Send archive back to git-archive"
 msgstr "Enviar archivo a git-archive"
 
-#: command-list.h:188
+#: command-list.h:189
 msgid "Send objects packed back to git-fetch-pack"
 msgstr "Enviar objetos empaquetados a git-fetch-pack"
 
-#: command-list.h:189
+#: command-list.h:190
 msgid "Show a Git logical variable"
 msgstr "Mostrar una variable lógica de Git"
 
-#: command-list.h:190
+#: command-list.h:191
 msgid "Check the GPG signature of commits"
 msgstr "Verificar firma GPG de commits"
 
-#: command-list.h:191
+#: command-list.h:192
 msgid "Validate packed Git archive files"
 msgstr "Valida archivos Git empaquetados"
 
-#: command-list.h:192
+#: command-list.h:193
 msgid "Check the GPG signature of tags"
 msgstr "Verifica la firma GPG de etiquetas"
 
-#: command-list.h:193
+#: command-list.h:194
 msgid "Git web interface (web frontend to Git repositories)"
 msgstr "Interfaz web Git (interfaz web para repositorios Git)"
 
-#: command-list.h:194
+#: command-list.h:195
 msgid "Show logs with difference each commit introduces"
 msgstr "Muestra logs con las diferencias que cada commit introduce"
 
-#: command-list.h:195
+#: command-list.h:196
 msgid "Manage multiple working trees"
 msgstr "Gestiona múltiples árboles de trabajo"
 
-#: command-list.h:196
+#: command-list.h:197
 msgid "Create a tree object from the current index"
 msgstr "Crea un objeto árbol del índice actual"
 
-#: command-list.h:197
+#: command-list.h:198
 msgid "Defining attributes per path"
 msgstr "Definiendo atributos por ruta"
 
-#: command-list.h:198
+#: command-list.h:199
 msgid "Git command-line interface and conventions"
 msgstr "Interfaz y convenciones de línea de comandos de Git"
 
-#: command-list.h:199
+#: command-list.h:200
 msgid "A Git core tutorial for developers"
 msgstr "Un tutorial básico de Git para desarrolladores"
 
-#: command-list.h:200
+#: command-list.h:201
+msgid "Providing usernames and passwords to Git"
+msgstr "Proporcionar nombres de usuario y contraseñas a Git"
+
+#: command-list.h:202
 msgid "Git for CVS users"
 msgstr "Git para usuarios CVS"
 
-#: command-list.h:201
+#: command-list.h:203
 msgid "Tweaking diff output"
 msgstr "Afinar la salida de diff"
 
-#: command-list.h:202
+#: command-list.h:204
 msgid "A useful minimum set of commands for Everyday Git"
 msgstr "Un conjunto mínimo útil de comandos diarios de Git"
 
-#: command-list.h:203
+#: command-list.h:205
 msgid "Frequently asked questions about using Git"
 msgstr "Preguntas frecuentes sobre el uso de Git"
 
-#: command-list.h:204
+#: command-list.h:206
 msgid "A Git Glossary"
 msgstr "Un Glosario de Git"
 
-#: command-list.h:205
+#: command-list.h:207
 msgid "Hooks used by Git"
 msgstr "Hooks utilizados por Git"
 
-#: command-list.h:206
+#: command-list.h:208
 msgid "Specifies intentionally untracked files to ignore"
 msgstr "Especifica de forma intencional archivos sin seguimiento a ignorar"
 
-#: command-list.h:207
+#: command-list.h:209
+msgid "Map author/committer names and/or E-Mail addresses"
+msgstr ""
+"Mapear nombres de autor/ nombre de commiter y/o direcciones de correo "
+"electrónico"
+
+#: command-list.h:210
 msgid "Defining submodule properties"
 msgstr "Definiendo las propiedades del submódulo"
 
-#: command-list.h:208
+#: command-list.h:211
 msgid "Git namespaces"
 msgstr "Namespaces de Git"
 
-#: command-list.h:209
+#: command-list.h:212
+msgid "Helper programs to interact with remote repositories"
+msgstr "Programas de ayuda para interactuar con repositorios remotos"
+
+#: command-list.h:213
 msgid "Git Repository Layout"
 msgstr "Disposición del repositorio Git"
 
-#: command-list.h:210
+#: command-list.h:214
 msgid "Specifying revisions and ranges for Git"
 msgstr "Especificando revisiones y rangos para Git"
 
-#: command-list.h:211
+#: command-list.h:215
 msgid "Mounting one repository inside another"
 msgstr "Montando un repositorio dentro de otro"
 
-#: command-list.h:212
+#: command-list.h:216
 msgid "A tutorial introduction to Git: part two"
 msgstr "Un tutorial de introducción a Git: parte dos"
 
-#: command-list.h:213
+#: command-list.h:217
 msgid "A tutorial introduction to Git"
 msgstr "Un tutorial de introducción para Git"
 
-#: command-list.h:214
+#: command-list.h:218
 msgid "An overview of recommended workflows with Git"
 msgstr "Una visión general de flujos de trabajo recomendados con Git"
 
-#: git-bisect.sh:54
-msgid "You need to start by \"git bisect start\""
-msgstr "Debes iniciar con \"git bisect start\""
-
-#. TRANSLATORS: Make sure to include [Y] and [n] in your
-#. translation. The program will only accept English input
-#. at this point.
-#: git-bisect.sh:60
-msgid "Do you want me to do it for you [Y/n]? "
-msgstr "¿Quieres que lo haga por ti [Y/n]? "
-
-#: git-bisect.sh:101
-#, sh-format
-msgid "Bad rev input: $arg"
-msgstr "Mala entrada rev: $arg"
-
-#: git-bisect.sh:121
-#, sh-format
-msgid "Bad rev input: $bisected_head"
-msgstr "Mala entrada rev: $bisected_head"
-
-#: git-bisect.sh:130
-#, sh-format
-msgid "Bad rev input: $rev"
-msgstr "Mala entrada rev: $rev"
-
-#: git-bisect.sh:139
-#, sh-format
-msgid "'git bisect $TERM_BAD' can take only one argument."
-msgstr "'git bisect $TERM_BAD' solo puede tomar un argumento."
-
-#: git-bisect.sh:209
-msgid "No logfile given"
-msgstr "Ningún logfile proporcionado"
-
-#: git-bisect.sh:210
-#, sh-format
-msgid "cannot read $file for replaying"
-msgstr "no se puede leer $file para reproducir"
-
-#: git-bisect.sh:233
-msgid "?? what are you talking about?"
-msgstr "?? ¿De qué estás hablando?"
-
-#: git-bisect.sh:243
+#: git-bisect.sh:68
 msgid "bisect run failed: no command provided."
 msgstr "bisect falló: no se proveyó comando."
 
-#: git-bisect.sh:248
+#: git-bisect.sh:73
 #, sh-format
 msgid "running $command"
 msgstr "ejecutando $command"
 
-#: git-bisect.sh:255
+#: git-bisect.sh:80
 #, sh-format
 msgid ""
 "bisect run failed:\n"
@@ -23791,27 +24680,23 @@ msgstr ""
 "bisect falló:\n"
 "código de salida $res de '$command' es <0 o >=128"
 
-#: git-bisect.sh:281
+#: git-bisect.sh:105
 msgid "bisect run cannot continue any more"
 msgstr "bisect no puede seguir continuando"
 
-#: git-bisect.sh:287
+#: git-bisect.sh:111
 #, sh-format
 msgid ""
 "bisect run failed:\n"
-"'bisect_state $state' exited with error code $res"
+"'bisect-state $state' exited with error code $res"
 msgstr ""
-"bisect falló:\n"
-"'bisect_state $state' salió con código de error $res"
+"bisect run falló:\n"
+"'bisect-state $state' salió con el código de error $res"
 
-#: git-bisect.sh:294
+#: git-bisect.sh:118
 msgid "bisect run success"
 msgstr "bisect exitoso"
 
-#: git-bisect.sh:302
-msgid "We are not bisecting."
-msgstr "No estamos bisecando."
-
 #: git-merge-octopus.sh:46
 msgid ""
 "Error: Your local changes to the following files would be overwritten by "
@@ -23852,50 +24737,50 @@ 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-submodule.sh:205
+#: git-submodule.sh:179
 msgid "Relative path can only be used from the toplevel of the working tree"
 msgstr ""
 "La ruta relativa sólo se puede usar desde el nivel superior del árbol de "
 "trabajo"
 
-#: git-submodule.sh:215
+#: git-submodule.sh:189
 #, 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:234
+#: git-submodule.sh:208
 #, sh-format
 msgid "'$sm_path' already exists in the index"
 msgstr "'$sm_path' ya existe en el índice"
 
-#: git-submodule.sh:237
+#: git-submodule.sh:211
 #, 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:244
+#: git-submodule.sh:218
 #, sh-format
 msgid "'$sm_path' does not have a commit checked out"
 msgstr "'$sm_path' no tiene un commit checked out"
 
-#: git-submodule.sh:275
+#: 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:277
+#: 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:285
+#: 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:287
+#: git-submodule.sh:261
 #, sh-format
 msgid ""
 "If you want to reuse this local git directory instead of cloning again from\n"
@@ -23912,39 +24797,39 @@ msgstr ""
 "o no estás seguro de lo que esto significa, escoge otro nombre con la opción "
 "'--name'."
 
-#: git-submodule.sh:293
+#: 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:305
+#: 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:310
+#: git-submodule.sh:284
 #, sh-format
 msgid "Failed to add submodule '$sm_path'"
 msgstr "Falló al agregar el submódulo '$sm_path'"
 
-#: git-submodule.sh:319
+#: git-submodule.sh:293
 #, sh-format
 msgid "Failed to register submodule '$sm_path'"
 msgstr "Falló al registrar el submódulo '$sm_path'"
 
-#: git-submodule.sh:592
+#: git-submodule.sh:568
 #, 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:602
+#: git-submodule.sh:578
 #, 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:607
+#: git-submodule.sh:583
 #, sh-format
 msgid ""
 "Unable to find current ${remote_name}/${branch} revision in submodule path "
@@ -23953,7 +24838,7 @@ msgstr ""
 "No es posible encontrar revisión actual ${remote_name}/${branch} en la ruta "
 "de submódulo  '$sm_path'"
 
-#: git-submodule.sh:625
+#: git-submodule.sh:601
 #, sh-format
 msgid ""
 "Unable to fetch in submodule path '$displaypath'; trying to directly fetch "
@@ -23962,7 +24847,7 @@ msgstr ""
 "No es posible realizar fetch en la ruta de submódulo '$displaypath'; "
 "intentando hacer un fetch directo $sha1:"
 
-#: git-submodule.sh:631
+#: git-submodule.sh:607
 #, sh-format
 msgid ""
 "Fetched in submodule path '$displaypath', but it did not contain $sha1. "
@@ -23971,85 +24856,55 @@ msgstr ""
 "Fetch realizado en ruta de submódulo '$displaypath', pero no contenía $sha1. "
 "Fetch directo del commit falló."
 
-#: git-submodule.sh:638
+#: git-submodule.sh:614
 #, 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:639
+#: git-submodule.sh:615
 #, sh-format
 msgid "Submodule path '$displaypath': checked out '$sha1'"
 msgstr "Ruta de submódulo '$displaypath': check out realizado a '$sha1'"
 
-#: git-submodule.sh:643
+#: git-submodule.sh:619
 #, 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:644
+#: git-submodule.sh:620
 #, sh-format
 msgid "Submodule path '$displaypath': rebased into '$sha1'"
 msgstr "Ruta de submódulo '$displaypath': rebasada en '$sha1'"
 
-#: git-submodule.sh:649
+#: git-submodule.sh:625
 #, 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:650
+#: git-submodule.sh:626
 #, sh-format
 msgid "Submodule path '$displaypath': merged in '$sha1'"
 msgstr "Ruta de submódulo '$displaypath': fusionada en '$sha1'"
 
-#: git-submodule.sh:655
+#: git-submodule.sh:631
 #, 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:656
+#: git-submodule.sh:632
 #, sh-format
 msgid "Submodule path '$displaypath': '$command $sha1'"
 msgstr "Ruta de submódulo '$displaypath': '$command $sha1'"
 
-#: git-submodule.sh:687
+#: git-submodule.sh:663
 #, sh-format
 msgid "Failed to recurse into submodule path '$displaypath'"
 msgstr "Falló al recurrir en la ruta de submódulo '$displaypath'"
 
-#: git-submodule.sh:852
-msgid "The --cached option cannot be used with the --files option"
-msgstr "La opción --cached no puede ser usada con la opción --files"
-
-#: git-submodule.sh:904
-#, sh-format
-msgid "unexpected mode $mod_dst"
-msgstr "modo $mod_dst inesperado"
-
-#: git-submodule.sh:924
-#, sh-format
-msgid "  Warn: $display_name doesn't contain commit $sha1_src"
-msgstr "  Advertencia: $display_name no contiene el commit $sha1_src"
-
-#: git-submodule.sh:927
-#, sh-format
-msgid "  Warn: $display_name doesn't contain commit $sha1_dst"
-msgstr "  Advertencia: $display_name no contiene el commit $sha1_dst"
-
-#: git-submodule.sh:930
-#, sh-format
-msgid "  Warn: $display_name doesn't contain commits $sha1_src and $sha1_dst"
-msgstr ""
-"  Advertencia: $display_name no contiene los commits $sha1_src y $sha1_dst"
-
-#: git-parse-remote.sh:89
-#, sh-format
-msgid "See git-${cmd}(1) for details."
-msgstr "Véase git-${cmd}(1) para más detalles."
-
 #: git-rebase--preserve-merges.sh:109
 msgid "Applied autostash."
 msgstr "Autostash aplicado."
@@ -24075,7 +24930,7 @@ msgstr ""
 msgid "Rebasing ($new_count/$total)"
 msgstr "Rebasando ($new_count/$total)"
 
-#: git-rebase--preserve-merges.sh:207
+#: git-rebase--preserve-merges.sh:197
 msgid ""
 "\n"
 "Commands:\n"
@@ -24115,7 +24970,7 @@ msgstr ""
 "Estas líneas pueden ser reordenadas; son ejecutadas desde arriba hacia "
 "abajo.\n"
 
-#: git-rebase--preserve-merges.sh:270
+#: git-rebase--preserve-merges.sh:260
 #, sh-format
 msgid ""
 "You can amend the commit now, with\n"
@@ -24134,83 +24989,83 @@ msgstr ""
 "\n"
 "\tgit rebase --continue"
 
-#: git-rebase--preserve-merges.sh:295
+#: git-rebase--preserve-merges.sh:285
 #, sh-format
 msgid "$sha1: not a commit that can be picked"
 msgstr "$sha1: no es un commit que pueda ser cogido"
 
-#: git-rebase--preserve-merges.sh:334
+#: git-rebase--preserve-merges.sh:324
 #, sh-format
 msgid "Invalid commit name: $sha1"
 msgstr "Nombre de commit inválido: $sha1"
 
-#: git-rebase--preserve-merges.sh:364
+#: git-rebase--preserve-merges.sh:354
 msgid "Cannot write current commit's replacement sha1"
 msgstr "No se puede escribir el remplazo sha1 del commit actual"
 
-#: git-rebase--preserve-merges.sh:415
+#: git-rebase--preserve-merges.sh:405
 #, sh-format
 msgid "Fast-forward to $sha1"
 msgstr "Avance rápido a $sha1"
 
-#: git-rebase--preserve-merges.sh:417
+#: git-rebase--preserve-merges.sh:407
 #, sh-format
 msgid "Cannot fast-forward to $sha1"
 msgstr "No se puede realizar avance rápido a $sha1"
 
-#: git-rebase--preserve-merges.sh:426
+#: git-rebase--preserve-merges.sh:416
 #, sh-format
 msgid "Cannot move HEAD to $first_parent"
 msgstr "No se puede mover HEAD a $first_parent"
 
-#: git-rebase--preserve-merges.sh:431
+#: git-rebase--preserve-merges.sh:421
 #, sh-format
 msgid "Refusing to squash a merge: $sha1"
 msgstr "Rehusando a ejecutar squash en fusión: $sha1"
 
-#: git-rebase--preserve-merges.sh:449
+#: git-rebase--preserve-merges.sh:439
 #, sh-format
 msgid "Error redoing merge $sha1"
 msgstr "Error rehaciendo fusión $sha1"
 
-#: git-rebase--preserve-merges.sh:458
+#: git-rebase--preserve-merges.sh:448
 #, sh-format
 msgid "Could not pick $sha1"
 msgstr "No se pudo coger $sha1"
 
-#: git-rebase--preserve-merges.sh:467
+#: git-rebase--preserve-merges.sh:457
 #, sh-format
 msgid "This is the commit message #${n}:"
 msgstr "Este es el mensaje del commit #${n}:"
 
-#: git-rebase--preserve-merges.sh:472
+#: git-rebase--preserve-merges.sh:462
 #, sh-format
 msgid "The commit message #${n} will be skipped:"
 msgstr "El mensaje del commit  #${n} será ignorado:"
 
-#: git-rebase--preserve-merges.sh:483
+#: git-rebase--preserve-merges.sh:473
 #, 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--preserve-merges.sh:492
+#: git-rebase--preserve-merges.sh:482
 #, sh-format
 msgid "Cannot write $fixup_msg"
 msgstr "No se puede escribir $fixup_msg"
 
-#: git-rebase--preserve-merges.sh:495
+#: git-rebase--preserve-merges.sh:485
 msgid "This is a combination of 2 commits."
 msgstr "Esto es una combinación de 2 commits."
 
-#: git-rebase--preserve-merges.sh:536 git-rebase--preserve-merges.sh:579
-#: git-rebase--preserve-merges.sh:582
+#: git-rebase--preserve-merges.sh:526 git-rebase--preserve-merges.sh:569
+#: git-rebase--preserve-merges.sh:572
 #, sh-format
 msgid "Could not apply $sha1... $rest"
 msgstr "No se puede aplicar $sha1... $rest"
 
-#: git-rebase--preserve-merges.sh:611
+#: git-rebase--preserve-merges.sh:601
 #, sh-format
 msgid ""
 "Could not amend commit after successfully picking $sha1... $rest\n"
@@ -24227,31 +25082,31 @@ msgstr ""
 "problema antes\n"
 "de que sea capaz de reformular el commit."
 
-#: git-rebase--preserve-merges.sh:626
+#: git-rebase--preserve-merges.sh:616
 #, sh-format
 msgid "Stopped at $sha1_abbrev... $rest"
 msgstr "Detenido en $sha1_abbrev... $rest"
 
-#: git-rebase--preserve-merges.sh:641
+#: git-rebase--preserve-merges.sh:631
 #, sh-format
 msgid "Cannot '$squash_style' without a previous commit"
 msgstr "No se puede '$squash_style' sin un commit previo"
 
-#: git-rebase--preserve-merges.sh:683
+#: git-rebase--preserve-merges.sh:673
 #, sh-format
 msgid "Executing: $rest"
 msgstr "Ejecutando: $rest"
 
-#: git-rebase--preserve-merges.sh:691
+#: git-rebase--preserve-merges.sh:681
 #, sh-format
 msgid "Execution failed: $rest"
 msgstr "Ejecución fallida: $rest"
 
-#: git-rebase--preserve-merges.sh:693
+#: git-rebase--preserve-merges.sh:683
 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--preserve-merges.sh:695
+#: git-rebase--preserve-merges.sh:685
 msgid ""
 "You can fix the problem, and then run\n"
 "\n"
@@ -24262,7 +25117,7 @@ msgstr ""
 "\tgit rebase --continue"
 
 #. TRANSLATORS: after these lines is a command to be issued by the user
-#: git-rebase--preserve-merges.sh:708
+#: git-rebase--preserve-merges.sh:698
 #, sh-format
 msgid ""
 "Execution succeeded: $rest\n"
@@ -24277,25 +25132,25 @@ msgstr ""
 "\n"
 "\tgit rebase --continue"
 
-#: git-rebase--preserve-merges.sh:719
+#: git-rebase--preserve-merges.sh:709
 #, sh-format
 msgid "Unknown command: $command $sha1 $rest"
 msgstr "Comando desconocido: $command $sha1 $rest"
 
-#: git-rebase--preserve-merges.sh:720
+#: git-rebase--preserve-merges.sh:710
 msgid "Please fix this using 'git rebase --edit-todo'."
 msgstr "Por favor, corrige esto usando 'git rebase --edit-todo'."
 
-#: git-rebase--preserve-merges.sh:755
+#: git-rebase--preserve-merges.sh:745
 #, sh-format
 msgid "Successfully rebased and updated $head_name."
 msgstr "$head_name rebasado y actualizado satisfactoriamente."
 
-#: git-rebase--preserve-merges.sh:812
+#: git-rebase--preserve-merges.sh:802
 msgid "Could not remove CHERRY_PICK_HEAD"
 msgstr "No se pudo eliminar CHERRY_PICK_HEAD"
 
-#: git-rebase--preserve-merges.sh:817
+#: git-rebase--preserve-merges.sh:807
 #, sh-format
 msgid ""
 "You have staged changes in your working tree.\n"
@@ -24326,12 +25181,12 @@ msgstr ""
 "\n"
 "  git rebase --continue\n"
 
-#: git-rebase--preserve-merges.sh:834
+#: git-rebase--preserve-merges.sh:824
 msgid "Error trying to find the author identity to amend commit"
 msgstr ""
 "Error tratando de encontrar la identidad del autor para remediar el commit"
 
-#: git-rebase--preserve-merges.sh:839
+#: git-rebase--preserve-merges.sh:829
 msgid ""
 "You have uncommitted changes in your working tree. Please commit them\n"
 "first and then run 'git rebase --continue' again."
@@ -24339,44 +25194,44 @@ 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--preserve-merges.sh:844 git-rebase--preserve-merges.sh:848
+#: git-rebase--preserve-merges.sh:834 git-rebase--preserve-merges.sh:838
 msgid "Could not commit staged changes."
 msgstr "No se pudo realizar el commit con los cambios en el área de stage."
 
-#: git-rebase--preserve-merges.sh:879 git-rebase--preserve-merges.sh:965
+#: git-rebase--preserve-merges.sh:869 git-rebase--preserve-merges.sh:955
 msgid "Could not execute editor"
 msgstr "No se pudo ejecutar el editor"
 
-#: git-rebase--preserve-merges.sh:900
+#: git-rebase--preserve-merges.sh:890
 #, sh-format
 msgid "Could not checkout $switch_to"
 msgstr "No se pudo actualizar el árbol de trabajo a $switch_to"
 
-#: git-rebase--preserve-merges.sh:907
+#: git-rebase--preserve-merges.sh:897
 msgid "No HEAD?"
 msgstr "¿Sin HEAD?"
 
-#: git-rebase--preserve-merges.sh:908
+#: git-rebase--preserve-merges.sh:898
 #, sh-format
 msgid "Could not create temporary $state_dir"
 msgstr "No se pudo crear $state_dir temporalmente"
 
-#: git-rebase--preserve-merges.sh:911
+#: git-rebase--preserve-merges.sh:901
 msgid "Could not mark as interactive"
 msgstr "No se pudo marcar como interactivo"
 
-#: git-rebase--preserve-merges.sh:943
+#: git-rebase--preserve-merges.sh:933
 #, 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--preserve-merges.sh:955
+#: git-rebase--preserve-merges.sh:945
 msgid "Note that empty commits are commented out"
 msgstr "Tenga en cuenta que los commits vacíos están comentados"
 
-#: git-rebase--preserve-merges.sh:997 git-rebase--preserve-merges.sh:1002
+#: git-rebase--preserve-merges.sh:987 git-rebase--preserve-merges.sh:992
 msgid "Could not init rewritten commits"
 msgstr "No se puede inicializar los commits reescritos"
 
@@ -24455,14 +25310,14 @@ msgstr "Incapaz de determinar la ruta absoluta del directorio git"
 msgid "%12s %12s %s"
 msgstr "%12s %12s %s"
 
-#: git-add--interactive.perl:634
+#: git-add--interactive.perl:632
 #, 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:1055
+#: git-add--interactive.perl:1056
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for staging."
@@ -24470,7 +25325,7 @@ msgstr ""
 "Si el parche aplica limpiamente, el hunk editado sera marcado\n"
 "inmediatamente para el área de stage."
 
-#: git-add--interactive.perl:1058
+#: git-add--interactive.perl:1059
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for stashing."
@@ -24478,7 +25333,7 @@ msgstr ""
 "Si el parche aplica limpiamente, el hunk editado sera marcado\n"
 "inmediatamente para aplicar stash."
 
-#: git-add--interactive.perl:1061
+#: git-add--interactive.perl:1062
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for unstaging."
@@ -24486,8 +25341,8 @@ msgstr ""
 "Si el parche aplica limpiamente, el hunk editado sera marcado\n"
 "inmediatamente para sacar del área de stage."
 
-#: git-add--interactive.perl:1064 git-add--interactive.perl:1073
-#: git-add--interactive.perl:1079
+#: git-add--interactive.perl:1065 git-add--interactive.perl:1074
+#: git-add--interactive.perl:1080
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for applying."
@@ -24495,8 +25350,8 @@ msgstr ""
 "Si el parche aplica de forma limpia, el hunk editado sera marcado \n"
 "inmediatamente para aplicar."
 
-#: git-add--interactive.perl:1067 git-add--interactive.perl:1070
-#: git-add--interactive.perl:1076
+#: git-add--interactive.perl:1068 git-add--interactive.perl:1071
+#: git-add--interactive.perl:1077
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for discarding."
@@ -24504,12 +25359,12 @@ msgstr ""
 "Si el parche aplica de forma limpia, el hunk editado sera marcado\n"
 "inmediatamente para descarte."
 
-#: git-add--interactive.perl:1113
+#: git-add--interactive.perl:1114
 #, perl-format
 msgid "failed to open hunk edit file for writing: %s"
 msgstr "falló al abrir el archivo de adición del hunk para escritura: %s"
 
-#: git-add--interactive.perl:1120
+#: git-add--interactive.perl:1121
 #, perl-format
 msgid ""
 "---\n"
@@ -24522,12 +25377,12 @@ msgstr ""
 "Para eliminar '%s' líneas, bórrelas.\n"
 "Lineas comenzando con  %s serán eliminadas.\n"
 
-#: git-add--interactive.perl:1142
+#: git-add--interactive.perl:1143
 #, perl-format
 msgid "failed to open hunk edit file for reading: %s"
 msgstr "falló al abrir el archivo de edición del hunk para lectura: %s"
 
-#: git-add--interactive.perl:1250
+#: git-add--interactive.perl:1251
 msgid ""
 "y - stage this hunk\n"
 "n - do not stage this hunk\n"
@@ -24542,7 +25397,7 @@ msgstr ""
 "d - no aplicar stage a este hunk o a ninguno de los posteriores en este "
 "archivo"
 
-#: git-add--interactive.perl:1256
+#: git-add--interactive.perl:1257
 msgid ""
 "y - stash this hunk\n"
 "n - do not stash this hunk\n"
@@ -24556,7 +25411,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:1262
+#: git-add--interactive.perl:1263
 msgid ""
 "y - unstage this hunk\n"
 "n - do not unstage this hunk\n"
@@ -24571,7 +25426,7 @@ msgstr ""
 "d - no sacar del area de stage este hunk o ninguno de los posteriores en el "
 "archivo"
 
-#: git-add--interactive.perl:1268
+#: git-add--interactive.perl:1269
 msgid ""
 "y - apply this hunk to index\n"
 "n - do not apply this hunk to index\n"
@@ -24585,7 +25440,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:1274 git-add--interactive.perl:1292
+#: git-add--interactive.perl:1275 git-add--interactive.perl:1293
 msgid ""
 "y - discard this hunk from worktree\n"
 "n - do not discard this hunk from worktree\n"
@@ -24599,7 +25454,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:1280
+#: git-add--interactive.perl:1281
 msgid ""
 "y - discard this hunk from index and worktree\n"
 "n - do not discard this hunk from index and worktree\n"
@@ -24613,7 +25468,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:1286
+#: git-add--interactive.perl:1287
 msgid ""
 "y - apply this hunk to index and worktree\n"
 "n - do not apply this hunk to index and worktree\n"
@@ -24627,7 +25482,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:1298
+#: git-add--interactive.perl:1299
 msgid ""
 "y - apply this hunk to worktree\n"
 "n - do not apply this hunk to worktree\n"
@@ -24641,7 +25496,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:1313
+#: git-add--interactive.perl:1314
 msgid ""
 "g - select a hunk to go to\n"
 "/ - search for a hunk matching the given regex\n"
@@ -24663,90 +25518,90 @@ msgstr ""
 "e - editar manualmente el hunk actual\n"
 "? - imprimir ayuda\n"
 
-#: git-add--interactive.perl:1344
+#: git-add--interactive.perl:1345
 msgid "The selected hunks do not apply to the index!\n"
 msgstr "¡Los hunks seleccionados no aplican al índice!\n"
 
-#: git-add--interactive.perl:1359
+#: git-add--interactive.perl:1360
 #, perl-format
 msgid "ignoring unmerged: %s\n"
 msgstr "ignorando lo no fusionado: %s\n"
 
-#: git-add--interactive.perl:1478
+#: git-add--interactive.perl:1479
 #, perl-format
 msgid "Apply mode change to worktree [y,n,q,a,d%s,?]? "
 msgstr "¿Aplicar cambio de modo para el árbol de trabajo [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1479
+#: git-add--interactive.perl:1480
 #, perl-format
 msgid "Apply deletion to worktree [y,n,q,a,d%s,?]? "
 msgstr "¿Aplicar borrado al árbol de trabajo [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1480
+#: git-add--interactive.perl:1481
 #, perl-format
 msgid "Apply addition to worktree [y,n,q,a,d%s,?]? "
 msgstr "¿Aplicar adición al árbol de trabajo [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1481
+#: git-add--interactive.perl:1482
 #, perl-format
 msgid "Apply this hunk to worktree [y,n,q,a,d%s,?]? "
 msgstr "¿Aplicar este hunk al árbol de trabajo [y,n,q,a,d,/%s,?]? "
 
-#: git-add--interactive.perl:1587
+#: git-add--interactive.perl:1599
 msgid "No other hunks to goto\n"
 msgstr "No hay más pedazos para el ir\n"
 
-#: git-add--interactive.perl:1605
+#: git-add--interactive.perl:1617
 #, perl-format
 msgid "Invalid number: '%s'\n"
 msgstr "Numero inválido: '%s'\n"
 
-#: git-add--interactive.perl:1610
+#: git-add--interactive.perl:1622
 #, 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:1636
+#: git-add--interactive.perl:1657
 msgid "No other hunks to search\n"
 msgstr "No hay más pedazos para buscar\n"
 
-#: git-add--interactive.perl:1653
+#: git-add--interactive.perl:1674
 #, perl-format
 msgid "Malformed search regexp %s: %s\n"
 msgstr "Regexp para la búsqueda mal formado %s: %s\n"
 
-#: git-add--interactive.perl:1663
+#: git-add--interactive.perl:1684
 msgid "No hunk matches the given pattern\n"
 msgstr "No hay hunks que concuerden con el patrón entregado.\n"
 
-#: git-add--interactive.perl:1675 git-add--interactive.perl:1697
+#: git-add--interactive.perl:1696 git-add--interactive.perl:1718
 msgid "No previous hunk\n"
 msgstr "No el anterior hunk\n"
 
-#: git-add--interactive.perl:1684 git-add--interactive.perl:1703
+#: git-add--interactive.perl:1705 git-add--interactive.perl:1724
 msgid "No next hunk\n"
 msgstr "No el siguiente hunk\n"
 
-#: git-add--interactive.perl:1709
+#: git-add--interactive.perl:1730
 msgid "Sorry, cannot split this hunk\n"
 msgstr "Perdón, no se puede dividir este pedazo\n"
 
-#: git-add--interactive.perl:1715
+#: git-add--interactive.perl:1736
 #, 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:1725
+#: git-add--interactive.perl:1746
 msgid "Sorry, cannot edit this hunk\n"
 msgstr "Perdón, no se puede editar este pedazo\n"
 
 #. TRANSLATORS: please do not translate the command names
 #. 'status', 'update', 'revert', etc.
-#: git-add--interactive.perl:1790
+#: git-add--interactive.perl:1811
 msgid ""
 "status        - show paths with changes\n"
 "update        - add working tree state to the staged set of changes\n"
@@ -24766,19 +25621,19 @@ msgstr ""
 "add untracked - agrega contenidos de archivos no rastreados al grupo de "
 "cambios del area de stage\n"
 
-#: git-add--interactive.perl:1807 git-add--interactive.perl:1812
-#: git-add--interactive.perl:1815 git-add--interactive.perl:1822
-#: git-add--interactive.perl:1825 git-add--interactive.perl:1832
-#: git-add--interactive.perl:1836 git-add--interactive.perl:1842
+#: git-add--interactive.perl:1828 git-add--interactive.perl:1840
+#: git-add--interactive.perl:1843 git-add--interactive.perl:1850
+#: git-add--interactive.perl:1853 git-add--interactive.perl:1860
+#: git-add--interactive.perl:1864 git-add--interactive.perl:1870
 msgid "missing --"
 msgstr "falta --"
 
-#: git-add--interactive.perl:1838
+#: git-add--interactive.perl:1866
 #, perl-format
 msgid "unknown --patch mode: %s"
 msgstr "modo --patch desconocido: %s"
 
-#: git-add--interactive.perl:1844 git-add--interactive.perl:1850
+#: git-add--interactive.perl:1872 git-add--interactive.perl:1878
 #, perl-format
 msgid "invalid argument %s, expecting --"
 msgstr "argumento inválido %s, se esperaba --"
@@ -24795,27 +25650,39 @@ msgstr "el offset del tiempo local es mayor o igual a 24 horas\n"
 msgid "the editor exited uncleanly, aborting everything"
 msgstr "el editor se cerro inapropiadamente, abortando todo"
 
-#: git-send-email.perl:310
+#: git-send-email.perl:312
 #, perl-format
 msgid ""
 "'%s' contains an intermediate version of the email you were composing.\n"
 msgstr ""
 "'%s' contiene una versión intermedia del correo que se estaba generando.\n"
 
-#: git-send-email.perl:315
+#: git-send-email.perl:317
 #, perl-format
 msgid "'%s.final' contains the composed email.\n"
 msgstr "'%s.final' contiene el email generado.\n"
 
-#: git-send-email.perl:408
+#: git-send-email.perl:410
 msgid "--dump-aliases incompatible with other options\n"
 msgstr "--dump-aliases no es compatible con otras opciones.\n"
 
-#: git-send-email.perl:481 git-send-email.perl:683
+#: git-send-email.perl:484
+msgid ""
+"fatal: found configuration options for 'sendmail'\n"
+"git-send-email is configured with the sendemail.* options - note the 'e'.\n"
+"Set sendemail.forbidSendmailVariables to false to disable this check.\n"
+msgstr ""
+"fatal: opciones de configuración encontradas para 'sendmail'\n"
+"git-send-email está configurado con las opciones sendemail. * - tenga en "
+"cuenta la 'e'.\n"
+"Establezca sendemail.forbidSendmailVariables en false para deshabilitar esta "
+"verificación.\n"
+
+#: git-send-email.perl:489 git-send-email.perl:691
 msgid "Cannot run git format-patch from outside a repository\n"
 msgstr "No se puede ejecutar git format-patch desde fuera del repositorio.\n"
 
-#: git-send-email.perl:484
+#: git-send-email.perl:492
 msgid ""
 "`batch-size` and `relogin` must be specified together (via command-line or "
 "configuration option)\n"
@@ -24823,37 +25690,37 @@ msgstr ""
 "`batch-size` y `relogin` deben ser especificados juntos (via la línea de "
 "comando o por opción de configuración)\n"
 
-#: git-send-email.perl:497
+#: git-send-email.perl:505
 #, perl-format
 msgid "Unknown --suppress-cc field: '%s'\n"
 msgstr "Campo --suppress-cc desconocido: '%s'\n"
 
-#: git-send-email.perl:528
+#: git-send-email.perl:536
 #, perl-format
 msgid "Unknown --confirm setting: '%s'\n"
 msgstr "Configuración --confirm desconocida: '%s'\n"
 
-#: git-send-email.perl:556
+#: git-send-email.perl:564
 #, perl-format
 msgid "warning: sendmail alias with quotes is not supported: %s\n"
 msgstr "peligro: alias de sendmail  con comillas no es soportado: %s\n"
 
-#: git-send-email.perl:558
+#: git-send-email.perl:566
 #, perl-format
 msgid "warning: `:include:` not supported: %s\n"
 msgstr "peligro: `:include:` no soportado: %s\n"
 
-#: git-send-email.perl:560
+#: git-send-email.perl:568
 #, perl-format
 msgid "warning: `/file` or `|pipe` redirection not supported: %s\n"
 msgstr "advertencia: redirección `/file` o `|pipe` no soportada : %s\n"
 
-#: git-send-email.perl:565
+#: git-send-email.perl:573
 #, perl-format
 msgid "warning: sendmail line is not recognized: %s\n"
 msgstr "advertencia: línea sendmail no reconocida: %s\n"
 
-#: git-send-email.perl:649
+#: git-send-email.perl:657
 #, perl-format
 msgid ""
 "File '%s' exists but it could also be the range of commits\n"
@@ -24868,12 +25735,12 @@ msgstr ""
 "    * Diciendo \"./%s\" si se quiere decir un archivo; o\n"
 "    * Agregando la opción --format-patch si se quiere decir un rango.\n"
 
-#: git-send-email.perl:670
+#: git-send-email.perl:678
 #, perl-format
 msgid "Failed to opendir %s: %s"
 msgstr "Falló al abrir directorio %s: %s"
 
-#: git-send-email.perl:694
+#: git-send-email.perl:702
 #, perl-format
 msgid ""
 "fatal: %s: %s\n"
@@ -24882,7 +25749,7 @@ msgstr ""
 "fatal: %s: %s\n"
 "peligro: no se mandaron parches\n"
 
-#: git-send-email.perl:705
+#: git-send-email.perl:713
 msgid ""
 "\n"
 "No patch files specified!\n"
@@ -24892,17 +25759,17 @@ msgstr ""
 "No se especificaron parches!\n"
 "\n"
 
-#: git-send-email.perl:718
+#: git-send-email.perl:726
 #, perl-format
 msgid "No subject line in %s?"
 msgstr "¿No hay línea de subject en %s?"
 
-#: git-send-email.perl:728
+#: git-send-email.perl:736
 #, perl-format
 msgid "Failed to open for writing %s: %s"
 msgstr "Falló al abrir para escritura %s: %s"
 
-#: git-send-email.perl:739
+#: git-send-email.perl:747
 msgid ""
 "Lines beginning in \"GIT:\" will be removed.\n"
 "Consider including an overall diffstat or table of contents\n"
@@ -24916,27 +25783,27 @@ msgstr ""
 "\n"
 "Limpiar el contenido de body si no deseas mandar un resumen.\n"
 
-#: git-send-email.perl:763
+#: git-send-email.perl:771
 #, perl-format
 msgid "Failed to open %s: %s"
 msgstr "Falló al abrir %s: %s"
 
-#: git-send-email.perl:780
+#: git-send-email.perl:788
 #, perl-format
 msgid "Failed to open %s.final: %s"
 msgstr "Falló al abrir %s.final: %s"
 
-#: git-send-email.perl:823
+#: git-send-email.perl:831
 msgid "Summary email is empty, skipping it\n"
 msgstr "Archivo de resumen está vacío, saltando al siguiente\n"
 
 #. TRANSLATORS: please keep [y/N] as is.
-#: git-send-email.perl:858
+#: git-send-email.perl:866
 #, perl-format
 msgid "Are you sure you want to use <%s> [y/N]? "
 msgstr "¿Estás seguro de que deseas usar <%s> [y/N]? "
 
-#: git-send-email.perl:913
+#: git-send-email.perl:921
 msgid ""
 "The following files are 8bit, but do not declare a Content-Transfer-"
 "Encoding.\n"
@@ -24944,11 +25811,11 @@ msgstr ""
 "Los siguientes archivos son 8bit, pero no declaran un Content-Transfer-"
 "Encoding.\n"
 
-#: git-send-email.perl:918
+#: git-send-email.perl:926
 msgid "Which 8bit encoding should I declare [UTF-8]? "
 msgstr "¿Que codificación de 8bit debería declarar [UTF-8]? "
 
-#: git-send-email.perl:926
+#: git-send-email.perl:934
 #, perl-format
 msgid ""
 "Refusing to send because the patch\n"
@@ -24961,22 +25828,22 @@ msgstr ""
 "tiene el template  '*** SUBJECT HERE ***'. Agrega --force si realmente lo "
 "deseas mandar.\n"
 
-#: git-send-email.perl:945
+#: git-send-email.perl:953
 msgid "To whom should the emails be sent (if anyone)?"
 msgstr "¿A quien se deben mandar los correos (si existe)?"
 
-#: git-send-email.perl:963
+#: git-send-email.perl:971
 #, perl-format
 msgid "fatal: alias '%s' expands to itself\n"
 msgstr "fatal: alias '%s' se expande a si mismo\n"
 
-#: git-send-email.perl:975
+#: git-send-email.perl:983
 msgid "Message-ID to be used as In-Reply-To for the first email (if any)? "
 msgstr ""
 "¿Qué id de mensaje será usado como En-Respuesta-Para en el primer email (si "
 "existe alguno)? "
 
-#: git-send-email.perl:1033 git-send-email.perl:1041
+#: git-send-email.perl:1041 git-send-email.perl:1049
 #, perl-format
 msgid "error: unable to extract a valid address from: %s\n"
 msgstr "error: no es posible extraer una dirección válida de %s\n"
@@ -24984,16 +25851,16 @@ msgstr "error: no es posible extraer una dirección válida de %s\n"
 #. TRANSLATORS: Make sure to include [q] [d] [e] in your
 #. translation. The program will only accept English input
 #. at this point.
-#: git-send-email.perl:1045
+#: git-send-email.perl:1053
 msgid "What to do with this address? ([q]uit|[d]rop|[e]dit): "
 msgstr "¿Que hacer con esta dirección? ([q]salir|[d]botar|[e]ditar): "
 
-#: git-send-email.perl:1362
+#: git-send-email.perl:1370
 #, perl-format
 msgid "CA path \"%s\" does not exist"
 msgstr "Ruta CA \"%s\" no existe"
 
-#: git-send-email.perl:1445
+#: git-send-email.perl:1453
 msgid ""
 "    The Cc list above has been expanded by additional\n"
 "    addresses found in the patch commit message. By default\n"
@@ -25021,134 +25888,397 @@ msgstr ""
 #. 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:1460
+#: git-send-email.perl:1468
 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:1463
+#: git-send-email.perl:1471
 msgid "Send this email reply required"
 msgstr "Necesitas mandar esta respuesta de email"
 
-#: git-send-email.perl:1491
+#: git-send-email.perl:1499
 msgid "The required SMTP server is not properly defined."
 msgstr "El servidor SMTP no esta definido adecuadamente."
 
-#: git-send-email.perl:1538
+#: git-send-email.perl:1546
 #, perl-format
 msgid "Server does not support STARTTLS! %s"
 msgstr "¡El servidor no soporta STARTTLS! %s"
 
-#: git-send-email.perl:1543 git-send-email.perl:1547
+#: git-send-email.perl:1551 git-send-email.perl:1555
 #, perl-format
 msgid "STARTTLS failed! %s"
 msgstr "¡Falló STARTTLS! %s"
 
-#: git-send-email.perl:1556
+#: git-send-email.perl:1564
 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:1574
+#: git-send-email.perl:1582
 #, perl-format
 msgid "Failed to send %s\n"
 msgstr "Falló al enviar %s\n"
 
-#: git-send-email.perl:1577
+#: git-send-email.perl:1585
 #, perl-format
 msgid "Dry-Sent %s\n"
 msgstr "Dry-Sent %s\n"
 
-#: git-send-email.perl:1577
+#: git-send-email.perl:1585
 #, perl-format
 msgid "Sent %s\n"
 msgstr "Enviado %s\n"
 
-#: git-send-email.perl:1579
+#: git-send-email.perl:1587
 msgid "Dry-OK. Log says:\n"
 msgstr "Dry-OK. Log dice:\n"
 
-#: git-send-email.perl:1579
+#: git-send-email.perl:1587
 msgid "OK. Log says:\n"
 msgstr "OK. Log dice:\n"
 
-#: git-send-email.perl:1591
+#: git-send-email.perl:1599
 msgid "Result: "
 msgstr "Resultado: "
 
-#: git-send-email.perl:1594
+#: git-send-email.perl:1602
 msgid "Result: OK\n"
 msgstr "Resultado: OK\n"
 
-#: git-send-email.perl:1612
+#: git-send-email.perl:1620
 #, perl-format
 msgid "can't open file %s"
 msgstr "no se puede abrir el archivo %s"
 
-#: git-send-email.perl:1659 git-send-email.perl:1679
+#: git-send-email.perl:1667 git-send-email.perl:1687
 #, 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:1665
+#: git-send-email.perl:1673
 #, 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:1722
+#: git-send-email.perl:1730
 #, 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:1757
+#: git-send-email.perl:1765
 #, 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:1868
+#: git-send-email.perl:1876
 #, perl-format
 msgid "(%s) Could not execute '%s'"
 msgstr "(%s) no se pudo ejecutar '%s'"
 
-#: git-send-email.perl:1875
+#: git-send-email.perl:1883
 #, perl-format
 msgid "(%s) Adding %s: %s from: '%s'\n"
 msgstr "(%s) Agregando %s: %s de: '%s'\n"
 
-#: git-send-email.perl:1879
+#: git-send-email.perl:1887
 #, perl-format
 msgid "(%s) failed to close pipe to '%s'"
 msgstr "(%s) falló al cerrar el pipe para '%s'"
 
-#: git-send-email.perl:1909
+#: git-send-email.perl:1917
 msgid "cannot send message as 7bit"
 msgstr "no se puede mandar mensaje como 7bit"
 
-#: git-send-email.perl:1917
+#: git-send-email.perl:1925
 msgid "invalid transfer encoding"
 msgstr "codificación de transferencia inválida"
 
-#: git-send-email.perl:1958 git-send-email.perl:2010 git-send-email.perl:2020
+#: git-send-email.perl:1966 git-send-email.perl:2018 git-send-email.perl:2028
 #, perl-format
 msgid "unable to open %s: %s\n"
 msgstr "no es posible abrir %s: %s\n"
 
-#: git-send-email.perl:1961
+#: git-send-email.perl:1969
 #, perl-format
 msgid "%s: patch contains a line longer than 998 characters"
 msgstr "%s: el parche contiene una línea con más de 998 caracteres"
 
-#: git-send-email.perl:1978
+#: git-send-email.perl:1986
 #, 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:1982
+#: git-send-email.perl:1990
 #, perl-format
 msgid "Do you really want to send %s? [y|N]: "
 msgstr "¿Realmente deseas mandar %s?[y|N]: "
 
+#~ msgid "store only"
+#~ msgstr "solo guardar"
+
+#~ msgid "compress faster"
+#~ msgstr "comprimir más rápido"
+
+#~ msgid "compress better"
+#~ msgstr "comprimir mejor"
+
+#~ msgid "unknown hash algorithm length"
+#~ msgstr "largo del algoritmo hash desconocido"
+
+#~ msgid "rev-list died"
+#~ msgstr "rev-list murió"
+
+#~ msgid ""
+#~ "commit-graph chunk lookup table entry missing; file may be incomplete"
+#~ msgstr ""
+#~ "falta tabla de lookup del chunk en commit-graph; el archivo puede estar "
+#~ "incompleto"
+
+#, c-format
+#~ msgid "commit-graph improper chunk offset %08x%08x"
+#~ msgstr "offset del chunk de commit-graph inapropiado %08x%08x"
+
+#, c-format
+#~ msgid "commit-graph chunk id %08x appears multiple times"
+#~ msgstr "id de chunk de commit-graph %08x parece tener múltiples tiempos"
+
+#~ msgid "Writing changed paths Bloom filters index"
+#~ msgstr "Escribiendo cambios de ruta del índice de filtros Bloom"
+
+#~ msgid "Counting distinct commits in commit graph"
+#~ msgstr "Contando commits distintos en commit graph"
+
+#, c-format
+#~ msgid "unexpected duplicate commit id %s"
+#~ msgstr "id de commit duplicado inesperado %s"
+
+#, c-format
+#~ msgid "the commit graph format cannot write %d commits"
+#~ msgstr "el formato de gráficos de commit no pudede escribir %d commits"
+
+#, c-format
+#~ msgid "hash version %u does not match"
+#~ msgstr "versión de hash %u no concuerda"
+
+#~ msgid "invalid chunk offset (too large)"
+#~ msgstr "offset inválido del conjunto (muy grande)"
+
+#~ msgid "error preparing packfile from multi-pack-index"
+#~ msgstr "error preparando packfile de multi-pack-index"
+
+#~ msgid "Writing chunks to multi-pack-index"
+#~ msgstr "Escribiendo chunks a multi-pack-index"
+
+#~ msgid "Remote with no URL"
+#~ msgstr "Remoto sin URL"
+
+#, c-format
+#~ msgid "%%(subject) does not take arguments"
+#~ msgstr "%%(subject) no toma ningún argumento"
+
+#, c-format
+#~ msgid "positive value expected objectname:short=%s"
+#~ msgstr "valor positivo esperado objectname:short=%s"
+
+#, c-format
+#~ msgid "unrecognized %%(objectname) argument: %s"
+#~ msgstr "argumento: %s no reconocido %%(objectname)"
+
+#, c-format
+#~ msgid "option `%s' is incompatible with --merged"
+#~ msgstr "opción `%s' es incompatible con --merged"
+
+#, c-format
+#~ msgid "option `%s' is incompatible with --no-merged"
+#~ msgstr "opción `%s' es incompatible con --no-merged"
+
+#, c-format
+#~ msgid "could not open '%s' for writing: %s"
+#~ msgstr "no se pudo abrir '%s' para escritura: %s"
+
+#, c-format
+#~ msgid "could not read ref '%s'"
+#~ msgstr "no se pudo leer la referencia '%s'"
+
+#, c-format
+#~ msgid "ref '%s' already exists"
+#~ msgstr "ref '%s' ya existe"
+
+#, c-format
+#~ msgid "unexpected object ID when writing '%s'"
+#~ msgstr "ID de objecto inesperado al escribir '%s'"
+
+#, c-format
+#~ msgid "unexpected object ID when deleting '%s'"
+#~ msgstr "ID de objecto inesperado al borrar '%s'"
+
+#, c-format
+#~ msgid "The hash algorithm %s is not supported in this build."
+#~ msgstr "El algoritmo hash %s no está soportado en este build."
+
+#, c-format
+#~ msgid "%s: not a valid OID"
+#~ msgstr "%s no es OID válido"
+
+#~ msgid "git bisect--helper --next-all [--no-checkout]"
+#~ msgstr "git bisect--helper --next-all [--no-checkout]"
+
+#~ msgid "git bisect--helper --write-terms <bad_term> <good_term>"
+#~ msgstr "git bisect--helper --write-terms <mal_término> <buen_término>"
+
+#~ msgid ""
+#~ "git bisect--helper --bisect-write [--no-log] <state> <revision> "
+#~ "<good_term> <bad_term>"
+#~ msgstr ""
+#~ "git bisect--helper --bisect-write [--no-log] <estado> <revision> "
+#~ "<buen_term> <mal_term>"
+
+#~ msgid ""
+#~ "git bisect--helper --bisect-check-and-set-terms <command> <good_term> "
+#~ "<bad_term>"
+#~ msgstr ""
+#~ "git bisect--helper --bisect-check-and-set-terms <comando> <buen_term> "
+#~ "<mal_term>"
+
+#~ msgid "could not open the file BISECT_TERMS"
+#~ msgstr "no se pudo abrir el archivo BISECT_TERMS"
+
+#~ msgid "perform 'git bisect next'"
+#~ msgstr "realiza 'git bisect next'"
+
+#~ msgid "write the terms to .git/BISECT_TERMS"
+#~ msgstr "escribe los términos a .git/BISECT_TERMS"
+
+#~ msgid "cleanup the bisection state"
+#~ msgstr "limpiar el estado de bisección"
+
+#~ msgid "check for expected revs"
+#~ msgstr "revisar por revs esperados"
+
+#~ msgid "write out the bisection state in BISECT_LOG"
+#~ msgstr "escribir el estado de bisect en BISECT_LOG"
+
+#~ msgid "check and set terms in a bisection state"
+#~ msgstr "revisar y configurar los terms en el estado de bisect"
+
+#~ msgid "update BISECT_HEAD instead of checking out the current commit"
+#~ msgstr "actualiza BISECT_HEAD en lugar de revisar el commit actual"
+
+#~ msgid "--write-terms requires two arguments"
+#~ msgstr "--write-terms requiere dos argumentos"
+
+#~ msgid "--bisect-clean-state requires no arguments"
+#~ msgstr "--bisect-clean-state no requiere argumentos"
+
+#~ msgid "--bisect-write requires either 4 or 5 arguments"
+#~ msgstr "--bisect-write requiere entre 4 o 5 argumentos"
+
+#~ msgid "--check-and-set-terms requires 3 arguments"
+#~ msgstr "--bisect-clean-state no requiere argumentos"
+
+#~ msgid "Force progress reporting"
+#~ msgstr "Forzar el reporte de progreso"
+
+#~ msgid "n,m"
+#~ msgstr "n,m"
+
+#, c-format
+#~ msgid "Error deleting remote-tracking branch '%s'"
+#~ msgstr "Error al eliminar la rama de rastreo remota '%s'"
+
+#, c-format
+#~ msgid "Error deleting branch '%s'"
+#~ msgstr "Error al eliminar la rama '%s'"
+
+#~ msgid "show parse tree for grep expression"
+#~ msgstr "mostrar árbol analizado para la expresión grep"
+
+#~ msgid "Process line range n,m in file, counting from 1"
+#~ msgstr "Procesar rango de líneas n,m en archivo, contando desde 1"
+
+#~ msgid "name of output directory is too long"
+#~ msgstr "nombre del directorio de salida es muy largo"
+
+#~ msgid "standard output, or directory, which one?"
+#~ msgstr "¿salida standard, o directorio, cual?"
+
+#~ msgid "print only names (no SHA-1)"
+#~ msgstr "imprimir sólo nombres (sin SHA-1)"
+
+#~ msgid "too many parameters"
+#~ msgstr "demasiados parámetros"
+
+#~ msgid "too few parameters"
+#~ msgstr "muy pocos parámetros"
+
+#~ msgid "passed to 'git am'"
+#~ msgstr "pasado a 'git am'"
+
+#, c-format
+#~ msgid ""
+#~ "WARNING: Some packs in use have been renamed by\n"
+#~ "WARNING: prefixing old- to their name, in order to\n"
+#~ "WARNING: replace them with the new version of the\n"
+#~ "WARNING: file.  But the operation failed, and the\n"
+#~ "WARNING: attempt to rename them back to their\n"
+#~ "WARNING: original names also failed.\n"
+#~ "WARNING: Please rename them in %s manually:\n"
+#~ msgstr ""
+#~ "WARNING: Algunos packs en uso han sido renombrados\n"
+#~ "WARNING: agregando el prefijo old- a sus nombres,para\n"
+#~ "WARNING: reemplazarlos con la nueva versión del\n"
+#~ "WARNING: archivo. Pero la operación falló, y el intento\n"
+#~ "WARNING: de renombrarlos a sus nombres originales\n"
+#~ "WARNING: también falló.\n"
+#~ "WARNING: Por favor renombralos en %s manualmente:\n"
+
+#, c-format
+#~ msgid "failed to remove '%s'"
+#~ msgstr "falló al eliminar'%s'"
+
+#~ msgid "Recurse into nested submodules"
+#~ msgstr "Recursar en submódulos anidados"
+
+#~ msgid "too many params"
+#~ msgstr "demasiados parámetros"
+
+#~ msgid "Routines to help parsing remote repository access parameters"
+#~ msgstr ""
+#~ "Rutinas para ayudar a analizar los parámetros de acceso del repositorio "
+#~ "remoto"
+
+#, sh-format
+#~ msgid "Bad rev input: $bisected_head"
+#~ msgstr "Mala entrada rev: $bisected_head"
+
+#, sh-format
+#~ msgid "Bad rev input: $rev"
+#~ msgstr "Mala entrada rev: $rev"
+
+#~ msgid "The --cached option cannot be used with the --files option"
+#~ msgstr "La opción --cached no puede ser usada con la opción --files"
+
+#, sh-format
+#~ msgid "  Warn: $display_name doesn't contain commit $sha1_src"
+#~ msgstr "  Advertencia: $display_name no contiene el commit $sha1_src"
+
+#, sh-format
+#~ msgid "  Warn: $display_name doesn't contain commit $sha1_dst"
+#~ msgstr "  Advertencia: $display_name no contiene el commit $sha1_dst"
+
+#, sh-format
+#~ msgid ""
+#~ "  Warn: $display_name doesn't contain commits $sha1_src and $sha1_dst"
+#~ msgstr ""
+#~ "  Advertencia: $display_name no contiene los commits $sha1_src y $sha1_dst"
+
+#, sh-format
+#~ msgid "See git-${cmd}(1) for details."
+#~ msgstr "Véase git-${cmd}(1) para más detalles."
+
 #, c-format
 #~ msgid "Finding commits for commit graph from %d ref"
 #~ msgid_plural "Finding commits for commit graph from %d refs"
@@ -25346,9 +26476,6 @@ msgstr "¿Realmente deseas mandar %s?[y|N]: "
 #~ msgid "malformed ident line"
 #~ msgstr "línea de entrada mal formada"
 
-#~ msgid "corrupted author without date information"
-#~ msgstr "autor corrupto sin información de fecha"
-
 #, c-format
 #~ msgid "could not parse '%.*s'"
 #~ msgstr "no se puede analizar '%.*s'"
@@ -25386,18 +26513,6 @@ msgstr "¿Realmente deseas mandar %s?[y|N]: "
 #~ msgid "no HEAD?"
 #~ msgstr "¿Sin HEAD?"
 
-#~ msgid "make committer date match author date"
-#~ msgstr "hacer que la fecha del commit concuerde con la fecha de autoría"
-
-#~ msgid "ignore author date and use current date"
-#~ msgstr "ignorar la fecha del autor y usar la fecha actual"
-
-#~ msgid "synonym of --reset-author-date"
-#~ msgstr "sinónimo para --reset-author-date"
-
-#~ msgid "ignore changes in whitespace"
-#~ msgstr "ignorar cambios en espacios en blanco"
-
 #~ msgid "preserve empty commits during rebase"
 #~ msgstr "preservar commits vacíos durante el rebase"
 
@@ -25414,10 +26529,6 @@ msgstr "¿Realmente deseas mandar %s?[y|N]: "
 #~ "$sm_path\n"
 #~ "Usa -f si en verdad quieres agregarlo."
 
-#, c-format
-#~ msgid "unable to get tree for %s"
-#~ msgstr "no se pudo obtener árbol para %s"
-
 #~ msgid "Use an experimental heuristic to improve diffs"
 #~ msgstr "Usar un heurístico experimental para mejorar los diffs"
 
@@ -25489,12 +26600,6 @@ msgstr "¿Realmente deseas mandar %s?[y|N]: "
 #~ msgid "Server supports ofs-delta"
 #~ msgstr "El servidor soporta ofs-delta"
 
-#~ msgid "(HEAD detached at %s)"
-#~ msgstr "(HEAD desacoplado en %s)"
-
-#~ msgid "(HEAD detached from %s)"
-#~ msgstr "(HEAD desacoplado de %s)"
-
 #~ msgid "Checking out files"
 #~ msgstr "Revisando archivos"
 
@@ -25522,9 +26627,6 @@ msgstr "¿Realmente deseas mandar %s?[y|N]: "
 #~ msgid "unrecognized verb: %s"
 #~ msgstr "verbo no reconocido: %s"
 
-#~ msgid "hash version %X does not match version %X"
-#~ msgstr "versión de hash %X no concuerda con versión %X"
-
 #~ msgid "option '%s' requires a value"
 #~ msgstr "opción '%s' requiere un valor"
 
index f0191c219bc8f0bdf0478704b7a0307b246f13e8..71d9e14d4c162748773e9e74d2d382efa2799d88 100644 (file)
--- a/po/fr.po
+++ b/po/fr.po
@@ -76,8 +76,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: git\n"
 "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2020-12-21 07:10+0800\n"
-"PO-Revision-Date: 2020-12-21 18:52+0100\n"
+"POT-Creation-Date: 2021-03-04 22:41+0800\n"
+"PO-Revision-Date: 2021-03-04 21:45+0100\n"
 "Last-Translator: Cédric Malard <c.malard-git@valdun.net>\n"
 "Language-Team: Jean-Noël Avila <jn.avila@free.fr>\n"
 "Language: fr\n"
@@ -92,9 +92,9 @@ msgstr ""
 msgid "Huh (%s)?"
 msgstr "Hein (%s) ?"
 
-#: add-interactive.c:529 add-interactive.c:830 reset.c:65 sequencer.c:3284
-#: sequencer.c:3735 sequencer.c:3890 builtin/rebase.c:1532
-#: builtin/rebase.c:1955
+#: add-interactive.c:529 add-interactive.c:830 reset.c:65 sequencer.c:3292
+#: sequencer.c:3743 sequencer.c:3898 builtin/rebase.c:1538
+#: builtin/rebase.c:1963
 msgid "could not read index"
 msgstr "impossible de lire l'index"
 
@@ -122,7 +122,7 @@ msgstr "Mise à jour"
 msgid "could not stage '%s'"
 msgstr "impossible d'indexer '%s'"
 
-#: add-interactive.c:703 add-interactive.c:892 reset.c:89 sequencer.c:3478
+#: add-interactive.c:703 add-interactive.c:892 reset.c:89 sequencer.c:3486
 msgid "could not write index"
 msgstr "impossible d'écrire l'index"
 
@@ -283,7 +283,7 @@ msgstr "non-indexé"
 
 #: add-interactive.c:1144 apply.c:4987 apply.c:4990 builtin/am.c:2257
 #: builtin/am.c:2260 builtin/bugreport.c:134 builtin/clone.c:124
-#: builtin/fetch.c:147 builtin/merge.c:284 builtin/pull.c:190
+#: builtin/fetch.c:150 builtin/merge.c:285 builtin/pull.c:190
 #: builtin/submodule--helper.c:409 builtin/submodule--helper.c:1818
 #: builtin/submodule--helper.c:1821 builtin/submodule--helper.c:2326
 #: builtin/submodule--helper.c:2329 builtin/submodule--helper.c:2572
@@ -868,7 +868,7 @@ msgstr ""
 msgid "Exiting because of an unresolved conflict."
 msgstr "Abandon à cause de conflit non résolu."
 
-#: advice.c:281 builtin/merge.c:1369
+#: advice.c:281 builtin/merge.c:1370
 msgid "You have not concluded your merge (MERGE_HEAD exists)."
 msgstr "Vous n'avez pas terminé votre fusion (MERGE_HEAD existe)."
 
@@ -1182,7 +1182,8 @@ msgstr "le patch a échoué : %s:%ld"
 msgid "cannot checkout %s"
 msgstr "extraction de %s impossible"
 
-#: apply.c:3405 apply.c:3416 apply.c:3462 midx.c:73 setup.c:308
+#: apply.c:3405 apply.c:3416 apply.c:3462 midx.c:86 pack-revindex.c:213
+#: setup.c:308
 #, c-format
 msgid "failed to read %s"
 msgstr "échec de la lecture de %s"
@@ -1347,7 +1348,7 @@ msgstr ""
 msgid "unable to add cache entry for %s"
 msgstr "ajout de l'élément de cache %s impossible"
 
-#: apply.c:4374 builtin/bisect--helper.c:524
+#: apply.c:4374 builtin/bisect--helper.c:523
 #, c-format
 msgid "failed to write to '%s'"
 msgstr "échec de l'écriture dans '%s'"
@@ -1383,7 +1384,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:4576 builtin/fetch.c:927 builtin/fetch.c:1228
+#: apply.c:4576 builtin/fetch.c:933 builtin/fetch.c:1334
 #, c-format
 msgid "cannot open %s"
 msgstr "impossible d'ouvrir %s"
@@ -1437,7 +1438,7 @@ 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:4960 builtin/add.c:618 builtin/mv.c:304 builtin/rm.c:406
+#: apply.c:4960 builtin/add.c:626 builtin/mv.c:304 builtin/rm.c:406
 msgid "Unable to write new index file"
 msgstr "Impossible d'écrire le nouveau fichier d'index"
 
@@ -1507,7 +1508,7 @@ msgid "build a temporary index based on embedded index information"
 msgstr ""
 "construire un index temporaire fondé sur l'information de l'index embarqué"
 
-#: apply.c:5025 builtin/checkout-index.c:182 builtin/ls-files.c:525
+#: apply.c:5025 builtin/checkout-index.c:195 builtin/ls-files.c:540
 msgid "paths are separated with NUL character"
 msgstr "les chemins sont séparés par un caractère NUL"
 
@@ -1517,7 +1518,7 @@ msgstr "s'assurer d'au moins <n> lignes de correspondance de contexte"
 
 #: apply.c:5028 builtin/am.c:2245 builtin/interpret-trailers.c:98
 #: builtin/interpret-trailers.c:100 builtin/interpret-trailers.c:102
-#: builtin/pack-objects.c:3562 builtin/rebase.c:1346
+#: builtin/pack-objects.c:3577 builtin/rebase.c:1352
 msgid "action"
 msgstr "action"
 
@@ -1547,9 +1548,9 @@ msgstr "laisser les sections rejetées dans les fichiers *.rej correspondants"
 msgid "allow overlapping hunks"
 msgstr "accepter les recouvrements de sections"
 
-#: apply.c:5045 builtin/add.c:329 builtin/check-ignore.c:22
-#: builtin/commit.c:1364 builtin/count-objects.c:98 builtin/fsck.c:775
-#: builtin/log.c:2287 builtin/mv.c:123 builtin/read-tree.c:128
+#: apply.c:5045 builtin/add.c:337 builtin/check-ignore.c:22
+#: builtin/commit.c:1364 builtin/count-objects.c:98 builtin/fsck.c:757
+#: builtin/log.c:2286 builtin/mv.c:123 builtin/read-tree.c:128
 msgid "be verbose"
 msgstr "mode verbeux"
 
@@ -1639,14 +1640,14 @@ msgstr "git archive --remote <dépôt> [--exec <commande>] --list"
 msgid "cannot read %s"
 msgstr "impossible de lire %s"
 
-#: archive.c:345 sequencer.c:459 sequencer.c:1736 sequencer.c:2886
-#: sequencer.c:3327 sequencer.c:3436 builtin/am.c:249 builtin/commit.c:786
-#: builtin/merge.c:1138
+#: archive.c:345 sequencer.c:459 sequencer.c:1744 sequencer.c:2894
+#: sequencer.c:3335 sequencer.c:3444 builtin/am.c:249 builtin/commit.c:786
+#: builtin/merge.c:1139
 #, c-format
 msgid "could not read '%s'"
 msgstr "impossible de lire '%s'"
 
-#: archive.c:430 builtin/add.c:181 builtin/add.c:594 builtin/rm.c:315
+#: archive.c:430 builtin/add.c:189 builtin/add.c:602 builtin/rm.c:315
 #, c-format
 msgid "pathspec '%s' did not match any files"
 msgstr "le chemin '%s' ne correspond à aucun fichier"
@@ -1688,7 +1689,7 @@ msgstr "fmt"
 msgid "archive format"
 msgstr "format d'archive"
 
-#: archive.c:556 builtin/log.c:1765
+#: archive.c:556 builtin/log.c:1764
 msgid "prefix"
 msgstr "préfixe"
 
@@ -1696,11 +1697,11 @@ msgstr "préfixe"
 msgid "prepend prefix to each pathname in the archive"
 msgstr "préfixer chaque chemin de fichier dans l'archive"
 
-#: archive.c:558 archive.c:561 builtin/blame.c:886 builtin/blame.c:890
-#: builtin/blame.c:891 builtin/commit-tree.c:117 builtin/config.c:135
+#: archive.c:558 archive.c:561 builtin/blame.c:884 builtin/blame.c:888
+#: builtin/blame.c:889 builtin/commit-tree.c:117 builtin/config.c:135
 #: builtin/fast-export.c:1207 builtin/fast-export.c:1209
-#: builtin/fast-export.c:1213 builtin/grep.c:919 builtin/hash-object.c:105
-#: builtin/ls-files.c:561 builtin/ls-files.c:564 builtin/notes.c:412
+#: builtin/fast-export.c:1213 builtin/grep.c:920 builtin/hash-object.c:105
+#: builtin/ls-files.c:576 builtin/ls-files.c:579 builtin/notes.c:412
 #: builtin/notes.c:578 builtin/read-tree.c:123 parse-options.h:190
 msgid "file"
 msgstr "fichier"
@@ -1867,12 +1868,12 @@ msgstr "Bissection : une base de fusion doit être testée\n"
 msgid "a %s revision is needed"
 msgstr "une révision %s est nécessaire"
 
-#: bisect.c:941 builtin/notes.c:177 builtin/tag.c:255
+#: bisect.c:941 builtin/notes.c:177 builtin/tag.c:287
 #, c-format
 msgid "could not create file '%s'"
 msgstr "impossible de créer le fichier '%s'"
 
-#: bisect.c:987 builtin/merge.c:152
+#: bisect.c:987 builtin/merge.c:153
 #, c-format
 msgid "could not read file '%s'"
 msgstr "impossible de lire le fichier '%s'"
@@ -1890,10 +1891,10 @@ msgstr "%s était à la fois %s et %s\n"
 #, c-format
 msgid ""
 "No testable commit found.\n"
-"Maybe you started with bad path parameters?\n"
+"Maybe you started with bad path arguments?\n"
 msgstr ""
 "Aucun commit testable n'a été trouvé\n"
-"Peut-être avez-vous démarré avec un mauvais paramètre de chemin ?\n"
+"Peut-être avez-vous démarré avec un mauvais arguement de chemin ?\n"
 
 #: bisect.c:1095
 #, c-format
@@ -1926,11 +1927,11 @@ msgstr ""
 "--reverse et --first-parent ensemble nécessitent la spécification d'un "
 "dernier commit"
 
-#: blame.c:2821 bundle.c:213 ref-filter.c:2272 remote.c:2031 sequencer.c:2138
-#: sequencer.c:4633 submodule.c:855 builtin/commit.c:1045 builtin/log.c:409
-#: builtin/log.c:1023 builtin/log.c:1625 builtin/log.c:2046 builtin/log.c:2336
-#: builtin/merge.c:423 builtin/pack-objects.c:3380 builtin/pack-objects.c:3395
-#: builtin/shortlog.c:267
+#: blame.c:2821 bundle.c:213 ref-filter.c:2206 remote.c:2041 sequencer.c:2146
+#: sequencer.c:4641 submodule.c:856 builtin/commit.c:1045 builtin/log.c:411
+#: builtin/log.c:1016 builtin/log.c:1624 builtin/log.c:2045 builtin/log.c:2335
+#: builtin/merge.c:424 builtin/pack-objects.c:3395 builtin/pack-objects.c:3410
+#: builtin/shortlog.c:255
 msgid "revision walk setup failed"
 msgstr "échec de la préparation du parcours des révisions"
 
@@ -2119,7 +2120,7 @@ msgstr "'%s' ne semble pas être un fichier colis v2 our v3"
 msgid "unrecognized header: %s%s (%d)"
 msgstr "en-tête non reconnu : %s%s (%d)"
 
-#: bundle.c:136 rerere.c:480 rerere.c:690 sequencer.c:2390 sequencer.c:3176
+#: bundle.c:136 rerere.c:464 rerere.c:674 sequencer.c:2398 sequencer.c:3184
 #: builtin/commit.c:814
 #, c-format
 msgid "could not open '%s'"
@@ -2163,291 +2164,306 @@ msgstr "Impossible de créer des objets groupés"
 msgid "pack-objects died"
 msgstr "les objets groupés ont disparu"
 
-#: bundle.c:379
-msgid "rev-list died"
-msgstr "rev-list a disparu"
-
-#: bundle.c:428
+#: bundle.c:386
 #, c-format
 msgid "ref '%s' is excluded by the rev-list options"
 msgstr "la référence '%s' est exclue par les options de rev-list"
 
-#: bundle.c:498
+#: bundle.c:490
 #, c-format
 msgid "unsupported bundle version %d"
 msgstr "version de colis non supportée %d"
 
-#: bundle.c:500
+#: bundle.c:492
 #, c-format
 msgid "cannot write bundle version %d with algorithm %s"
 msgstr "impossible d'écrire une version de colis %d avec l'algorithme %s"
 
-#: bundle.c:522 builtin/log.c:209 builtin/log.c:1927 builtin/shortlog.c:408
+#: bundle.c:510 builtin/log.c:210 builtin/log.c:1926 builtin/shortlog.c:396
 #, c-format
 msgid "unrecognized argument: %s"
 msgstr "argument non reconnu : %s"
 
-#: bundle.c:530
+#: bundle.c:539
 msgid "Refusing to create empty bundle."
 msgstr "Refus de créer un colis vide."
 
-#: bundle.c:540
+#: bundle.c:549
 #, c-format
 msgid "cannot create '%s'"
 msgstr "impossible de créer '%s'"
 
-#: bundle.c:565
+#: bundle.c:574
 msgid "index-pack died"
 msgstr "l'index de groupe a disparu"
 
+#: chunk-format.c:113
+msgid "terminating chunk id appears earlier than expected"
+msgstr "l'identifiant de terminaison de tronçon apparaît plus tôt qu'attendu"
+
+#: chunk-format.c:122
+#, c-format
+msgid "improper chunk offset(s) %<PRIx64> and %<PRIx64>"
+msgstr "décalage(s) de section incorrect(s) %<PRIx64> et %<PRIx64>"
+
+#: chunk-format.c:129
+#, c-format
+msgid "duplicate chunk ID %<PRIx32> found"
+msgstr "ID de section dupliqué %<PRIx32>"
+
+#: chunk-format.c:143
+#, c-format
+msgid "final chunk has non-zero id %<PRIx32>"
+msgstr "la section finale a un id non nul %<PRIx32>"
+
 #: color.c:329
 #, c-format
 msgid "invalid color value: %.*s"
 msgstr "Valeur invalide de couleur : %.*s"
 
-#: commit-graph.c:188 midx.c:47
+#: commit-graph.c:197 midx.c:46
 msgid "invalid hash version"
 msgstr "version d'empreinte invalide"
 
-#: commit-graph.c:246
+#: commit-graph.c:255
 msgid "commit-graph file is too small"
 msgstr "le graphe de commit est trop petit"
 
-#: commit-graph.c:311
+#: commit-graph.c:348
 #, c-format
 msgid "commit-graph signature %X does not match signature %X"
 msgstr ""
 "la signature du graphe de commit %X ne correspond pas à la signature %X"
 
-#: commit-graph.c:318
+#: commit-graph.c:355
 #, c-format
 msgid "commit-graph version %X does not match version %X"
 msgstr "la version %X du graphe de commit ne correspond pas à la version %X"
 
-#: commit-graph.c:325
+#: commit-graph.c:362
 #, c-format
 msgid "commit-graph hash version %X does not match version %X"
 msgstr ""
 "l'empreinte de la version %X du graphe de commit ne correspond pas à la "
 "version %X"
 
-#: commit-graph.c:342
+#: commit-graph.c:379
 #, c-format
 msgid "commit-graph file is too small to hold %u chunks"
 msgstr "le graphe de commit est trop petit pour contenir %u sections"
 
-#: commit-graph.c:361
-#, c-format
-msgid "commit-graph improper chunk offset %08x%08x"
-msgstr "décalage de bloc %08x%08x du graphe de commit inadéquat"
-
-#: commit-graph.c:433
-#, c-format
-msgid "commit-graph chunk id %08x appears multiple times"
-msgstr "l'id de bloc de graphe de commit %08x apparaît des multiples fois"
-
-#: commit-graph.c:499
+#: commit-graph.c:472
 msgid "commit-graph has no base graphs chunk"
 msgstr "le graphe de commit n'a pas de section de graphes de base"
 
-#: commit-graph.c:509
+#: commit-graph.c:482
 msgid "commit-graph chain does not match"
 msgstr "la chaîne de graphe de commit ne correspond pas"
 
-#: commit-graph.c:557
+#: commit-graph.c:530
 #, c-format
 msgid "invalid commit-graph chain: line '%s' not a hash"
 msgstr ""
 "chaîne de graphe de commit invalide : la ligne '%s' n'est pas une empreinte"
 
-#: commit-graph.c:581
+#: commit-graph.c:554
 msgid "unable to find all commit-graph files"
 msgstr "impossible de trouver tous les fichiers du graphe de commit"
 
-#: commit-graph.c:721 commit-graph.c:785
+#: commit-graph.c:735 commit-graph.c:772
 msgid "invalid commit position. commit-graph is likely corrupt"
 msgstr ""
 "position de commit invalide. Le graphe de commit est vraisemblablement "
 "corrompu"
 
-#: commit-graph.c:742
+#: commit-graph.c:756
 #, c-format
 msgid "could not find commit %s"
 msgstr "impossible de trouver le commit %s"
 
-#: commit-graph.c:1036 builtin/am.c:1292
+#: commit-graph.c:789
+msgid "commit-graph requires overflow generation data but has none"
+msgstr ""
+"le graphe de commits requiert des données de génération de débordement mais "
+"n'en contient pas"
+
+#: commit-graph.c:1065 builtin/am.c:1292
 #, c-format
 msgid "unable to parse commit %s"
 msgstr "impossible d'analyser le commit %s"
 
-#: commit-graph.c:1252 builtin/pack-objects.c:2864
+#: commit-graph.c:1327 builtin/pack-objects.c:2872
 #, c-format
 msgid "unable to get type of object %s"
 msgstr "impossible d'obtenir le type de l'objet %s"
 
-#: commit-graph.c:1283
+#: commit-graph.c:1358
 msgid "Loading known commits in commit graph"
 msgstr "Lecture des commits connus dans un graphe de commit"
 
-#: commit-graph.c:1300
+#: commit-graph.c:1375
 msgid "Expanding reachable commits in commit graph"
 msgstr "Expansion des commits joignables dans un graphe de commit"
 
-#: commit-graph.c:1320
+#: commit-graph.c:1395
 msgid "Clearing commit marks in commit graph"
 msgstr "Suppression les marques de commit dans le graphe de commits"
 
-#: commit-graph.c:1339
+#: commit-graph.c:1414
+msgid "Computing commit graph topological levels"
+msgstr "Calcul des niveaux topologiques du graphe de commits"
+
+#: commit-graph.c:1467
 msgid "Computing commit graph generation numbers"
 msgstr "Calcul des chiffres de génération du graphe de commits"
 
-#: commit-graph.c:1406
+#: commit-graph.c:1548
 msgid "Computing commit changed paths Bloom filters"
 msgstr "Calcul des filtres Bloom des chemins modifiés du commit"
 
-#: commit-graph.c:1483
+#: commit-graph.c:1625
 msgid "Collecting referenced commits"
 msgstr "Collecte des commits référencés"
 
-#: commit-graph.c:1508
+#: commit-graph.c:1650
 #, c-format
 msgid "Finding commits for commit graph in %d pack"
 msgid_plural "Finding commits for commit graph in %d packs"
 msgstr[0] "Recherche de commits pour un graphe de commits dans %d paquet"
 msgstr[1] "Recherche de commits pour un graphe de commits dans %d paquets"
 
-#: commit-graph.c:1521
+#: commit-graph.c:1663
 #, c-format
 msgid "error adding pack %s"
 msgstr "erreur à l'ajout du packet %s"
 
-#: commit-graph.c:1525
+#: commit-graph.c:1667
 #, c-format
 msgid "error opening index for %s"
 msgstr "erreur à l'ouverture de l'index pour %s"
 
-#: commit-graph.c:1562
+#: commit-graph.c:1704
 msgid "Finding commits for commit graph among packed objects"
 msgstr ""
 "Recherche de commits pour un graphe de commits parmi les objets empaquetés"
 
-#: commit-graph.c:1580
+#: commit-graph.c:1722
 msgid "Finding extra edges in commit graph"
 msgstr "Recherche d'arêtes supplémentaires dans un graphe de commits"
 
-#: commit-graph.c:1628
+#: commit-graph.c:1771
 msgid "failed to write correct number of base graph ids"
 msgstr "échec à l'écriture le nombre correct d'id de base de fusion"
 
-#: commit-graph.c:1670 midx.c:819
+#: commit-graph.c:1802 midx.c:794
 #, c-format
 msgid "unable to create leading directories of %s"
 msgstr "impossible de créer les répertoires de premier niveau de %s"
 
-#: commit-graph.c:1683
+#: commit-graph.c:1815
 msgid "unable to create temporary graph layer"
 msgstr "impossible de créer une couche de graphe temporaire"
 
-#: commit-graph.c:1688
+#: commit-graph.c:1820
 #, c-format
 msgid "unable to adjust shared permissions for '%s'"
 msgstr "impossible de régler les droits partagés pour '%s'"
 
-#: commit-graph.c:1758
+#: commit-graph.c:1879
 #, c-format
 msgid "Writing out commit graph in %d pass"
 msgid_plural "Writing out commit graph in %d passes"
 msgstr[0] "Écriture le graphe de commits en %d passe"
 msgstr[1] "Écriture le graphe de commits en %d passes"
 
-#: commit-graph.c:1803
+#: commit-graph.c:1915
 msgid "unable to open commit-graph chain file"
 msgstr "impossible d'ouvrir le fichier de graphe de commit"
 
-#: commit-graph.c:1819
+#: commit-graph.c:1931
 msgid "failed to rename base commit-graph file"
 msgstr "échec du renommage du fichier de graphe de commits"
 
-#: commit-graph.c:1839
+#: commit-graph.c:1951
 msgid "failed to rename temporary commit-graph file"
 msgstr "impossible de renommer le fichier temporaire de graphe de commits"
 
-#: commit-graph.c:1965
+#: commit-graph.c:2084
 msgid "Scanning merged commits"
 msgstr "Analyse des commits de fusion"
 
-#: commit-graph.c:2009
+#: commit-graph.c:2128
 msgid "Merging commit-graph"
 msgstr "fusion du graphe de commits"
 
-#: commit-graph.c:2115
+#: commit-graph.c:2235
 msgid "attempting to write a commit-graph, but 'core.commitGraph' is disabled"
 msgstr ""
 "essai d'écriture de graphe de commits, mais 'core.commitGraph' est désactivé"
 
-#: commit-graph.c:2214
+#: commit-graph.c:2342
 msgid "too many commits to write graph"
 msgstr "trop de commits pour écrire un graphe"
 
-#: commit-graph.c:2307
+#: commit-graph.c:2440
 msgid "the commit-graph file has incorrect checksum and is likely corrupt"
 msgstr ""
 "le graphe de commit a une somme de contrôle incorrecte et est "
 "vraisemblablement corrompu"
 
-#: commit-graph.c:2317
+#: commit-graph.c:2450
 #, c-format
 msgid "commit-graph has incorrect OID order: %s then %s"
 msgstr "le graphe de commit a un ordre d'OID incorrect : %s puis %s"
 
-#: commit-graph.c:2327 commit-graph.c:2342
+#: commit-graph.c:2460 commit-graph.c:2475
 #, c-format
 msgid "commit-graph has incorrect fanout value: fanout[%d] = %u != %u"
 msgstr ""
 "le graphe de commit a une valeur de dispersion incorrecte : dispersion[%d] = "
 "%u != %u"
 
-#: commit-graph.c:2334
+#: commit-graph.c:2467
 #, c-format
 msgid "failed to parse commit %s from commit-graph"
 msgstr "échec de l'analyse le commit %s depuis le graphe de commits"
 
-#: commit-graph.c:2352
+#: commit-graph.c:2485
 msgid "Verifying commits in commit graph"
 msgstr "Verification des commits dans le graphe de commits"
 
-#: commit-graph.c:2367
+#: commit-graph.c:2500
 #, c-format
 msgid "failed to parse commit %s from object database for commit-graph"
 msgstr ""
 "échec de l'analyse du commit %s depuis la base de données d'objets pour le "
 "graphe de commit"
 
-#: commit-graph.c:2374
+#: commit-graph.c:2507
 #, c-format
 msgid "root tree OID for commit %s in commit-graph is %s != %s"
 msgstr ""
 "l'OID de l'arbre racine pour le commit %s dans le graphe de commit est %s != "
 "%s"
 
-#: commit-graph.c:2384
+#: commit-graph.c:2517
 #, c-format
 msgid "commit-graph parent list for commit %s is too long"
 msgstr ""
 "la liste des parents du graphe de commit pour le commit %s est trop longue"
 
-#: commit-graph.c:2393
+#: commit-graph.c:2526
 #, c-format
 msgid "commit-graph parent for %s is %s != %s"
 msgstr "le parent du graphe de commit pour %s est %s != %s"
 
-#: commit-graph.c:2407
+#: commit-graph.c:2540
 #, c-format
 msgid "commit-graph parent list for commit %s terminates early"
 msgstr ""
 "la liste de parents du graphe de commit pour le commit %s se termine trop tôt"
 
-#: commit-graph.c:2412
+#: commit-graph.c:2545
 #, c-format
 msgid ""
 "commit-graph has generation number zero for commit %s, but non-zero elsewhere"
@@ -2455,7 +2471,7 @@ msgstr ""
 "le graphe de commit a un numéro de génération nul pour le commit %s, mais "
 "non-nul ailleurs"
 
-#: commit-graph.c:2416
+#: commit-graph.c:2549
 #, c-format
 msgid ""
 "commit-graph has non-zero generation number for commit %s, but zero elsewhere"
@@ -2463,19 +2479,21 @@ msgstr ""
 "le graphe de commit a un numéro de génération non-nul pour le commit %s, "
 "mais nul ailleurs"
 
-#: commit-graph.c:2432
+#: commit-graph.c:2566
 #, c-format
-msgid "commit-graph generation for commit %s is %u != %u"
-msgstr "la génération du graphe de commit pour le commit %s est %u != %u"
+msgid "commit-graph generation for commit %s is %<PRIuMAX> < %<PRIuMAX>"
+msgstr ""
+"la génération du graphe de commit pour le commit %s est %<PRIuMAX> < "
+"%<PRIuMAX>"
 
-#: commit-graph.c:2438
+#: commit-graph.c:2572
 #, c-format
 msgid "commit date for commit %s in commit-graph is %<PRIuMAX> != %<PRIuMAX>"
 msgstr ""
 "la date de validation pour le commit %s dans le graphe de commit est "
 "%<PRIuMAX> != %<PRIuMAX>"
 
-#: commit.c:52 sequencer.c:2879 builtin/am.c:359 builtin/am.c:403
+#: commit.c:52 sequencer.c:2887 builtin/am.c:359 builtin/am.c:403
 #: builtin/am.c:1371 builtin/am.c:2018 builtin/replace.c:457
 #, c-format
 msgid "could not parse %s"
@@ -2506,27 +2524,27 @@ msgstr ""
 "Supprimez ce message en lançant\n"
 "\"git config advice.graftFileDeprecated false\""
 
-#: commit.c:1172
+#: commit.c:1223
 #, c-format
 msgid "Commit %s has an untrusted GPG signature, allegedly by %s."
 msgstr "La validation %s a une signature GPG non fiable, prétendument par %s."
 
-#: commit.c:1176
+#: commit.c:1227
 #, c-format
 msgid "Commit %s has a bad GPG signature allegedly by %s."
 msgstr "La validation %s a une mauvaise signature GPG prétendument par %s."
 
-#: commit.c:1179
+#: commit.c:1230
 #, c-format
 msgid "Commit %s does not have a GPG signature."
 msgstr "La validation %s n'a pas de signature GPG."
 
-#: commit.c:1182
+#: commit.c:1233
 #, c-format
 msgid "Commit %s has a good GPG signature by %s\n"
 msgstr "La validation %s a une signature GPG correcte par %s\n"
 
-#: commit.c:1436
+#: commit.c:1487
 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"
@@ -2542,7 +2560,7 @@ msgstr ""
 msgid "memory exhausted"
 msgstr "plus de mémoire"
 
-#: config.c:125
+#: config.c:126
 #, c-format
 msgid ""
 "exceeded maximum include depth (%d) while including\n"
@@ -2557,306 +2575,350 @@ msgstr ""
 "\t%s\n"
 "possibilité d'inclusions multiples."
 
-#: config.c:141
+#: config.c:142
 #, c-format
 msgid "could not expand include path '%s'"
 msgstr "expansion impossible du chemin d'inclusion '%s'"
 
-#: config.c:152
+#: config.c:153
 msgid "relative config includes must come from files"
 msgstr "les inclusions de configuration relatives doivent venir de fichiers"
 
-#: config.c:198
+#: config.c:199
 msgid "relative config include conditionals must come from files"
 msgstr ""
 "les conditions d'inclusion de configuration relative doivent venir de "
 "fichiers"
 
-#: config.c:378
+#: config.c:396
+#, c-format
+msgid "invalid config format: %s"
+msgstr "format de config invalide : %s"
+
+#: config.c:400
+#, c-format
+msgid "missing environment variable name for configuration '%.*s'"
+msgstr "nom de variable d'environnement manquant pour le configuration '%.*s'"
+
+#: config.c:405
+#, c-format
+msgid "missing environment variable '%s' for configuration '%.*s'"
+msgstr "variable d'environnement '%s' manquante pour le configuration '%.*s'"
+
+#: config.c:442
 #, c-format
 msgid "key does not contain a section: %s"
 msgstr "la clé ne contient pas de section: %s"
 
-#: config.c:384
+#: config.c:448
 #, c-format
 msgid "key does not contain variable name: %s"
 msgstr "la clé ne contient pas de nom de variable : %s"
 
-#: config.c:408 sequencer.c:2580
+#: config.c:472 sequencer.c:2588
 #, c-format
 msgid "invalid key: %s"
 msgstr "clé invalide : %s"
 
-#: config.c:414
+#: config.c:478
 #, c-format
 msgid "invalid key (newline): %s"
 msgstr "clé invalide (retour chariot) : %s"
 
-#: config.c:450 config.c:462
+#: config.c:511
+msgid "empty config key"
+msgstr "clé de configuration vide"
+
+#: config.c:529 config.c:541
 #, c-format
 msgid "bogus config parameter: %s"
 msgstr "paramètre de configuration mal formé: %s"
 
-#: config.c:497
+#: config.c:555 config.c:572 config.c:579 config.c:588
 #, c-format
 msgid "bogus format in %s"
 msgstr "formatage mal formé dans %s"
 
-#: config.c:836
+#: config.c:622
+#, c-format
+msgid "bogus count in %s"
+msgstr "compte faux dans %s"
+
+#: config.c:626
+#, c-format
+msgid "too many entries in %s"
+msgstr "trop d'entrées dans %s"
+
+#: config.c:636
+#, c-format
+msgid "missing config key %s"
+msgstr "clé de configuration %s manquante"
+
+#: config.c:644
+#, c-format
+msgid "missing config value %s"
+msgstr "valeur de config manquante %s"
+
+#: config.c:995
 #, c-format
 msgid "bad config line %d in blob %s"
 msgstr "ligne %d de config incorrecte dans le blob %s"
 
-#: config.c:840
+#: config.c:999
 #, c-format
 msgid "bad config line %d in file %s"
 msgstr "ligne %d de config incorrecte dans le fichier %s"
 
-#: config.c:844
+#: config.c:1003
 #, c-format
 msgid "bad config line %d in standard input"
 msgstr "ligne %d de config incorrecte dans l'entrée standard"
 
-#: config.c:848
+#: config.c:1007
 #, 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:852
+#: config.c:1011
 #, 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:856
+#: config.c:1015
 #, c-format
 msgid "bad config line %d in %s"
 msgstr "ligne %d de config incorrecte dans %s"
 
-#: config.c:993
+#: config.c:1152
 msgid "out of range"
 msgstr "hors plage"
 
-#: config.c:993
+#: config.c:1152
 msgid "invalid unit"
 msgstr "unité invalide"
 
-#: config.c:994
+#: config.c:1153
 #, c-format
 msgid "bad numeric config value '%s' for '%s': %s"
 msgstr "valeur numérique de configuration invalide '%s' pour '%s' : %s"
 
-#: config.c:1013
+#: config.c:1163
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in blob %s: %s"
 msgstr ""
 "valeur numérique de configuration incorrecte '%s' pour '%s' dans le blob "
 "%s : %s"
 
-#: config.c:1016
+#: config.c:1166
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in file %s: %s"
 msgstr ""
 "valeur numérique de configuration incorrecte '%s' pour '%s' dans le fichier "
 "%s : %s"
 
-#: config.c:1019
+#: config.c:1169
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in standard input: %s"
 msgstr ""
 "valeur numérique de configuration incorrecte '%s' pour '%s' dans l'entrée "
 "standard : %s"
 
-#: config.c:1022
+#: config.c:1172
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in submodule-blob %s: %s"
 msgstr ""
 "valeur numérique de configuration incorrecte '%s' pour '%s' dans le blob de "
 "sous-module %s : %s"
 
-#: config.c:1025
+#: config.c:1175
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in command line %s: %s"
 msgstr ""
 "valeur numérique de configuration incorrecte '%s' pour '%s' dans la ligne de "
 "commande %s : %s"
 
-#: config.c:1028
+#: config.c:1178
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in %s: %s"
 msgstr ""
 "valeur numérique de configuration incorrecte '%s' pour '%s' dans %s : %s"
 
-#: config.c:1123
+#: config.c:1194
+#, c-format
+msgid "bad boolean config value '%s' for '%s'"
+msgstr "valeur booléenne de configuration invalide '%s' pour '%s'"
+
+#: config.c:1289
 #, c-format
 msgid "failed to expand user dir in: '%s'"
 msgstr "impossible d'étendre le répertoire utilisateur dans : '%s'"
 
-#: config.c:1132
+#: config.c:1298
 #, c-format
 msgid "'%s' for '%s' is not a valid timestamp"
 msgstr "'%s' pour '%s' n'est pas un horodatage valide"
 
-#: config.c:1223
+#: config.c:1391
 #, c-format
 msgid "abbrev length out of range: %d"
 msgstr "longueur d'abbrev hors plage : %d"
 
-#: config.c:1237 config.c:1248
+#: config.c:1405 config.c:1416
 #, c-format
 msgid "bad zlib compression level %d"
 msgstr "niveau de compression zlib incorrect %d"
 
-#: config.c:1340
+#: config.c:1508
 msgid "core.commentChar should only be one character"
 msgstr "core.commentChar ne devrait être qu'un unique caractère"
 
-#: config.c:1373
+#: config.c:1541
 #, c-format
 msgid "invalid mode for object creation: %s"
 msgstr "mode invalide pour la création d'objet : %s"
 
-#: config.c:1445
+#: config.c:1613
 #, c-format
 msgid "malformed value for %s"
 msgstr "valeur mal formée pour %s"
 
-#: config.c:1471
+#: config.c:1639
 #, c-format
 msgid "malformed value for %s: %s"
 msgstr "valeur mal formée pour %s : %s"
 
-#: config.c:1472
+#: config.c:1640
 msgid "must be one of nothing, matching, simple, upstream or current"
 msgstr "doit être parmi nothing, matching, simple, upstream ou current"
 
-#: config.c:1533 builtin/pack-objects.c:3649
+#: config.c:1701 builtin/pack-objects.c:3666
 #, c-format
 msgid "bad pack compression level %d"
 msgstr "niveau de compression du paquet %d"
 
-#: config.c:1655
+#: config.c:1823
 #, c-format
 msgid "unable to load config blob object '%s'"
 msgstr "impossible de charger l'objet blob de config '%s'"
 
-#: config.c:1658
+#: config.c:1826
 #, c-format
 msgid "reference '%s' does not point to a blob"
 msgstr "la référence '%s' ne pointe pas sur un blob"
 
-#: config.c:1675
+#: config.c:1843
 #, c-format
 msgid "unable to resolve config blob '%s'"
 msgstr "impossible de résoudre le blob de config '%s'"
 
-#: config.c:1705
+#: config.c:1873
 #, c-format
 msgid "failed to parse %s"
 msgstr "échec de l'analyse de %s"
 
-#: config.c:1759
+#: config.c:1927
 msgid "unable to parse command-line config"
 msgstr "lecture de la configuration de ligne de commande impossible"
 
-#: config.c:2122
+#: config.c:2290
 msgid "unknown error occurred while reading the configuration files"
 msgstr "erreur inconnue pendant la lecture des fichiers de configuration"
 
-#: config.c:2296
+#: config.c:2464
 #, c-format
 msgid "Invalid %s: '%s'"
 msgstr "%s invalide : '%s'"
 
-#: config.c:2341
+#: config.c:2509
 #, 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:2387
+#: config.c:2555
 #, 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:2389
+#: config.c:2557
 #, 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:2473
+#: config.c:2641
 #, c-format
 msgid "invalid section name '%s'"
 msgstr "nom de section invalide '%s'"
 
-#: config.c:2505
+#: config.c:2673
 #, c-format
 msgid "%s has multiple values"
 msgstr "%s a des valeurs multiples"
 
-#: config.c:2534
+#: config.c:2702
 #, c-format
 msgid "failed to write new configuration file %s"
 msgstr "impossible d'écrire le fichier de configuration %s"
 
-#: config.c:2786 config.c:3112
+#: config.c:2954 config.c:3280
 #, c-format
 msgid "could not lock config file %s"
 msgstr "impossible de verrouiller le fichier de configuration %s"
 
-#: config.c:2797
+#: config.c:2965
 #, c-format
 msgid "opening %s"
 msgstr "ouverture de %s"
 
-#: config.c:2834 builtin/config.c:361
+#: config.c:3002 builtin/config.c:361
 #, c-format
 msgid "invalid pattern: %s"
 msgstr "motif invalide : %s"
 
-#: config.c:2859
+#: config.c:3027
 #, c-format
 msgid "invalid config file %s"
 msgstr "fichier de configuration invalide %s"
 
-#: config.c:2872 config.c:3125
+#: config.c:3040 config.c:3293
 #, c-format
 msgid "fstat on %s failed"
 msgstr "échec de fstat sur %s"
 
-#: config.c:2883
+#: config.c:3051
 #, c-format
 msgid "unable to mmap '%s'"
 msgstr "impossible de réaliser un map de '%s'"
 
-#: config.c:2892 config.c:3130
+#: config.c:3060 config.c:3298
 #, c-format
 msgid "chmod on %s failed"
 msgstr "échec de chmod sur %s"
 
-#: config.c:2977 config.c:3227
+#: config.c:3145 config.c:3395
 #, c-format
 msgid "could not write config file %s"
 msgstr "impossible d'écrire le fichier de configuration %s"
 
-#: config.c:3011
+#: config.c:3179
 #, c-format
 msgid "could not set '%s' to '%s'"
 msgstr "impossible de régler '%s' à '%s'"
 
-#: config.c:3013 builtin/remote.c:657 builtin/remote.c:855 builtin/remote.c:863
+#: config.c:3181 builtin/remote.c:657 builtin/remote.c:855 builtin/remote.c:863
 #, c-format
 msgid "could not unset '%s'"
 msgstr "impossible de désinitialiser '%s'"
 
-#: config.c:3103
+#: config.c:3271
 #, c-format
 msgid "invalid section name: %s"
 msgstr "nom de section invalide : %s"
 
-#: config.c:3270
+#: config.c:3438
 #, c-format
 msgid "missing value for '%s'"
 msgstr "valeur manquante pour '%s'"
@@ -2918,45 +2980,45 @@ msgstr "paquet invalide"
 msgid "protocol error: unexpected '%s'"
 msgstr "erreur de protocole : '%s' attendu"
 
-#: connect.c:473
+#: connect.c:497
 #, c-format
 msgid "unknown object format '%s' specified by server"
 msgstr "format d'objet spécifié par le serveur inconnu '%s'"
 
-#: connect.c:500
+#: connect.c:526
 #, c-format
 msgid "invalid ls-refs response: %s"
 msgstr "réponse à ls-ref invalide : %s"
 
-#: connect.c:504
+#: connect.c:530
 msgid "expected flush after ref listing"
 msgstr "vidage attendu après le listage de références"
 
-#: connect.c:507
+#: connect.c:533
 msgid "expected response end packet after ref listing"
 msgstr "paquet de fin de réponse attendu après le listage de références"
 
-#: connect.c:640
+#: connect.c:666
 #, c-format
 msgid "protocol '%s' is not supported"
 msgstr "le protocole '%s' n'est pas supporté"
 
-#: connect.c:691
+#: connect.c:717
 msgid "unable to set SO_KEEPALIVE on socket"
 msgstr "impossible de positionner SO_KEEPALIVE sur la socket"
 
-#: connect.c:731 connect.c:794
+#: connect.c:757 connect.c:820
 #, c-format
 msgid "Looking up %s ... "
 msgstr "Recherche de %s… "
 
-#: connect.c:735
+#: connect.c:761
 #, c-format
 msgid "unable to look up %s (port %s) (%s)"
 msgstr "impossible de rechercher %s (port %s) (%s)"
 
 #. TRANSLATORS: this is the end of "Looking up %s ... "
-#: connect.c:739 connect.c:810
+#: connect.c:765 connect.c:836
 #, c-format
 msgid ""
 "done.\n"
@@ -2965,7 +3027,7 @@ msgstr ""
 "fait.\n"
 "Connexion à %s (port %s)… "
 
-#: connect.c:761 connect.c:838
+#: connect.c:787 connect.c:864
 #, c-format
 msgid ""
 "unable to connect to %s:\n"
@@ -2975,63 +3037,68 @@ msgstr ""
 "%s"
 
 #. TRANSLATORS: this is the end of "Connecting to %s (port %s) ... "
-#: connect.c:767 connect.c:844
+#: connect.c:793 connect.c:870
 msgid "done."
 msgstr "fait."
 
-#: connect.c:798
+#: connect.c:824
 #, c-format
 msgid "unable to look up %s (%s)"
 msgstr "impossible de rechercher %s (%s)"
 
-#: connect.c:804
+#: connect.c:830
 #, c-format
 msgid "unknown port %s"
 msgstr "port inconnu %s"
 
-#: connect.c:941 connect.c:1271
+#: connect.c:967 connect.c:1299
 #, c-format
 msgid "strange hostname '%s' blocked"
 msgstr "nom d'hôte étrange '%s' bloqué"
 
-#: connect.c:943
+#: connect.c:969
 #, c-format
 msgid "strange port '%s' blocked"
 msgstr "port étrange '%s' bloqué"
 
-#: connect.c:953
+#: connect.c:979
 #, c-format
 msgid "cannot start proxy %s"
 msgstr "impossible de démarrer un proxy %s"
 
-#: connect.c:1024
+#: connect.c:1050
 msgid "no path specified; see 'git help pull' for valid url syntax"
 msgstr ""
 "aucun chemin spécifié ; référez-vous à 'git help pull' pour une syntaxe "
 "d'URL valide"
 
-#: connect.c:1219
+#: connect.c:1190
+msgid "newline is forbidden in git:// hosts and repo paths"
+msgstr ""
+"le retour chariot est interdit dans les hôtes git:// et les chemins de dépôt"
+
+#: connect.c:1247
 msgid "ssh variant 'simple' does not support -4"
 msgstr "la variante ssh 'simple' ne supporte pas -4"
 
-#: connect.c:1231
+#: connect.c:1259
 msgid "ssh variant 'simple' does not support -6"
 msgstr "la variante ssh 'simple' ne supporte pas -6"
 
-#: connect.c:1248
+#: connect.c:1276
 msgid "ssh variant 'simple' does not support setting port"
 msgstr "la variante ssh 'simple' ne supporte pas de spécifier le port"
 
-#: connect.c:1360
+#: connect.c:1388
 #, c-format
 msgid "strange pathname '%s' blocked"
 msgstr "chemin étrange '%s' bloqué"
 
-#: connect.c:1408
+#: connect.c:1436
 msgid "unable to fork"
 msgstr "fork impossible"
 
-#: connected.c:108 builtin/fsck.c:209 builtin/prune.c:45
+#: connected.c:108 builtin/fsck.c:191 builtin/prune.c:45
 msgid "Checking connectivity"
 msgstr "Vérification de la connectivité"
 
@@ -3302,6 +3369,11 @@ msgstr ""
 msgid "Marked %d islands, done.\n"
 msgstr "Marquage de %d îlots, fait.\n"
 
+#: diff-merges.c:70
+#, c-format
+msgid "unknown value for --diff-merges: %s"
+msgstr "valeur inconnue pour --diff-merges : %s"
+
 #: diff-lib.c:534
 msgid "--merge-base does not work with ranges"
 msgstr "--merge-base ne fonctionne pas avec des plages"
@@ -3391,30 +3463,30 @@ msgstr ""
 msgid "external diff died, stopping at %s"
 msgstr "l'application de diff externe a disparu, arrêt à %s"
 
-#: diff.c:4625
+#: diff.c:4628
 msgid "--name-only, --name-status, --check and -s are mutually exclusive"
 msgstr "--name-only, --name-status, --check et -s sont mutuellement exclusifs"
 
-#: diff.c:4628
+#: diff.c:4631
 msgid "-G, -S and --find-object are mutually exclusive"
 msgstr "-G, -S et --find-object sont mutuellement exclusifs"
 
-#: diff.c:4707
+#: diff.c:4710
 msgid "--follow requires exactly one pathspec"
 msgstr "--follow a besoin d'une spécification de chemin unique"
 
-#: diff.c:4755
+#: diff.c:4758
 #, c-format
 msgid "invalid --stat value: %s"
 msgstr "valeur invalide de --stat : %s"
 
-#: diff.c:4760 diff.c:4765 diff.c:4770 diff.c:4775 diff.c:5303
+#: diff.c:4763 diff.c:4768 diff.c:4773 diff.c:4778 diff.c:5306
 #: parse-options.c:197 parse-options.c:201 builtin/commit-graph.c:180
 #, c-format
 msgid "%s expects a numerical value"
 msgstr "%s attend une valeur numérique"
 
-#: diff.c:4792
+#: diff.c:4795
 #, c-format
 msgid ""
 "Failed to parse --dirstat/-X option parameter:\n"
@@ -3423,42 +3495,42 @@ msgstr ""
 "Impossible d'analyser le paramètre de l'option --dirstat/-X :\n"
 "%s"
 
-#: diff.c:4877
+#: diff.c:4880
 #, c-format
 msgid "unknown change class '%c' in --diff-filter=%s"
 msgstr "classe de modification inconnue '%c' dans --diff-fileter=%s"
 
-#: diff.c:4901
+#: diff.c:4904
 #, c-format
 msgid "unknown value after ws-error-highlight=%.*s"
 msgstr "valeur inconnue après ws-error-highlight=%.*s"
 
-#: diff.c:4915
+#: diff.c:4918
 #, c-format
 msgid "unable to resolve '%s'"
 msgstr "impossible de résoudre '%s'"
 
-#: diff.c:4965 diff.c:4971
+#: diff.c:4968 diff.c:4974
 #, c-format
 msgid "%s expects <n>/<m> form"
 msgstr "forme <n>/<m> attendue par %s"
 
-#: diff.c:4983
+#: diff.c:4986
 #, c-format
 msgid "%s expects a character, got '%s'"
 msgstr "caractère attendu par %s, '%s' trouvé"
 
-#: diff.c:5004
+#: diff.c:5007
 #, c-format
 msgid "bad --color-moved argument: %s"
 msgstr "mauvais argument --color-moved : %s"
 
-#: diff.c:5023
+#: diff.c:5026
 #, c-format
 msgid "invalid mode '%s' in --color-moved-ws"
 msgstr "mode invalide '%s' dans --color-moved-ws"
 
-#: diff.c:5063
+#: diff.c:5066
 msgid ""
 "option diff-algorithm accepts \"myers\", \"minimal\", \"patience\" and "
 "\"histogram\""
@@ -3466,160 +3538,160 @@ msgstr ""
 "l'option diff-algorithm accept \"myers\", \"minimal\", \"patience\" et "
 "\"histogram\""
 
-#: diff.c:5099 diff.c:5119
+#: diff.c:5102 diff.c:5122
 #, c-format
 msgid "invalid argument to %s"
 msgstr "argument invalide pour %s"
 
-#: diff.c:5223
+#: diff.c:5226
 #, c-format
 msgid "invalid regex given to -I: '%s'"
 msgstr "regex invalide fournie à -I : '%s'"
 
-#: diff.c:5272
+#: diff.c:5275
 #, c-format
 msgid "failed to parse --submodule option parameter: '%s'"
 msgstr "échec de l'analyse du paramètre de l'option --submodule : '%s'"
 
-#: diff.c:5328
+#: diff.c:5331
 #, c-format
 msgid "bad --word-diff argument: %s"
 msgstr "mauvais argument pour --word-diff : %s"
 
-#: diff.c:5351
+#: diff.c:5367
 msgid "Diff output format options"
 msgstr "Options de format de sortie de diff"
 
-#: diff.c:5353 diff.c:5359
+#: diff.c:5369 diff.c:5375
 msgid "generate patch"
 msgstr "générer la rustine"
 
-#: diff.c:5356 builtin/log.c:178
+#: diff.c:5372 builtin/log.c:179
 msgid "suppress diff output"
 msgstr "supprimer la sortie des différences"
 
-#: diff.c:5361 diff.c:5475 diff.c:5482
+#: diff.c:5377 diff.c:5491 diff.c:5498
 msgid "<n>"
 msgstr "<n>"
 
-#: diff.c:5362 diff.c:5365
+#: diff.c:5378 diff.c:5381
 msgid "generate diffs with <n> lines context"
 msgstr "générer les diffs avec <n> lignes de contexte"
 
-#: diff.c:5367
+#: diff.c:5383
 msgid "generate the diff in raw format"
 msgstr "générer le diff en format brut"
 
-#: diff.c:5370
+#: diff.c:5386
 msgid "synonym for '-p --raw'"
 msgstr "synonyme de '-p --raw'"
 
-#: diff.c:5374
+#: diff.c:5390
 msgid "synonym for '-p --stat'"
 msgstr "synonyme de '-p --stat'"
 
-#: diff.c:5378
+#: diff.c:5394
 msgid "machine friendly --stat"
 msgstr "--stat pour traitement automatique"
 
-#: diff.c:5381
+#: diff.c:5397
 msgid "output only the last line of --stat"
 msgstr "afficher seulement la dernière ligne de --stat"
 
-#: diff.c:5383 diff.c:5391
+#: diff.c:5399 diff.c:5407
 msgid "<param1,param2>..."
 msgstr "<param1,param2>..."
 
-#: diff.c:5384
+#: diff.c:5400
 msgid ""
 "output the distribution of relative amount of changes for each sub-directory"
 msgstr ""
 "afficher la distribution des quantités de modifications relatives pour "
 "chaque sous-répertoire"
 
-#: diff.c:5388
+#: diff.c:5404
 msgid "synonym for --dirstat=cumulative"
 msgstr "synonyme pour --dirstat=cumulative"
 
-#: diff.c:5392
+#: diff.c:5408
 msgid "synonym for --dirstat=files,param1,param2..."
 msgstr "synonyme pour --dirstat=files,param1,param2..."
 
-#: diff.c:5396
+#: diff.c:5412
 msgid "warn if changes introduce conflict markers or whitespace errors"
 msgstr ""
 "avertir si les modifications introduisent des marqueurs de conflit ou des "
 "erreurs d'espace"
 
-#: diff.c:5399
+#: diff.c:5415
 msgid "condensed summary such as creations, renames and mode changes"
 msgstr ""
 "résumé succinct tel que les créations, les renommages et les modifications "
 "de mode"
 
-#: diff.c:5402
+#: diff.c:5418
 msgid "show only names of changed files"
 msgstr "n'afficher que les noms de fichiers modifiés"
 
-#: diff.c:5405
+#: diff.c:5421
 msgid "show only names and status of changed files"
 msgstr "n'afficher que les noms et les status des fichiers modifiés"
 
-#: diff.c:5407
+#: diff.c:5423
 msgid "<width>[,<name-width>[,<count>]]"
 msgstr "<largeur>[,<largeur-de-nom>[,<compte>]]"
 
-#: diff.c:5408
+#: diff.c:5424
 msgid "generate diffstat"
 msgstr "générer un diffstat"
 
-#: diff.c:5410 diff.c:5413 diff.c:5416
+#: diff.c:5426 diff.c:5429 diff.c:5432
 msgid "<width>"
 msgstr "<largeur>"
 
-#: diff.c:5411
+#: diff.c:5427
 msgid "generate diffstat with a given width"
 msgstr "générer un diffstat avec la largeur indiquée"
 
-#: diff.c:5414
+#: diff.c:5430
 msgid "generate diffstat with a given name width"
 msgstr "génerer un diffstat avec la largeur de nom indiquée"
 
-#: diff.c:5417
+#: diff.c:5433
 msgid "generate diffstat with a given graph width"
 msgstr "génerer un diffstat avec la largeur de graphe indiquée"
 
-#: diff.c:5419
+#: diff.c:5435
 msgid "<count>"
 msgstr "<compte>"
 
-#: diff.c:5420
+#: diff.c:5436
 msgid "generate diffstat with limited lines"
 msgstr "générer un diffstat avec des lignes limitées"
 
-#: diff.c:5423
+#: diff.c:5439
 msgid "generate compact summary in diffstat"
 msgstr "générer une résumé compact dans le diffstat"
 
-#: diff.c:5426
+#: diff.c:5442
 msgid "output a binary diff that can be applied"
 msgstr "produire un diff binaire qui peut être appliqué"
 
-#: diff.c:5429
+#: diff.c:5445
 msgid "show full pre- and post-image object names on the \"index\" lines"
 msgstr ""
 "afficher les noms complets des objets pre- et post-image sur les lignes "
 "\"index\""
 
-#: diff.c:5431
+#: diff.c:5447
 msgid "show colored diff"
 msgstr "afficher un diff coloré"
 
-#: diff.c:5432
+#: diff.c:5448
 msgid "<kind>"
 msgstr "<sorte>"
 
-#: diff.c:5433
+#: diff.c:5449
 msgid ""
 "highlight whitespace errors in the 'context', 'old' or 'new' lines in the "
 "diff"
@@ -3627,7 +3699,7 @@ msgstr ""
 "surligner les erreurs d'espace dans les lignes 'contexte', 'ancien', "
 "'nouveau' dans le diff"
 
-#: diff.c:5436
+#: diff.c:5452
 msgid ""
 "do not munge pathnames and use NULs as output field terminators in --raw or "
 "--numstat"
@@ -3635,93 +3707,93 @@ msgstr ""
 "ne pas compresser les chemins et utiliser des NULs comme terminateurs de "
 "champs dans --raw ou --numstat"
 
-#: diff.c:5439 diff.c:5442 diff.c:5445 diff.c:5554
+#: diff.c:5455 diff.c:5458 diff.c:5461 diff.c:5570
 msgid "<prefix>"
 msgstr "<préfixe>"
 
-#: diff.c:5440
+#: diff.c:5456
 msgid "show the given source prefix instead of \"a/\""
 msgstr "afficher le préfixe de source indiqué au lieu de \"a/\""
 
-#: diff.c:5443
+#: diff.c:5459
 msgid "show the given destination prefix instead of \"b/\""
 msgstr "afficher le préfixe de destination indiqué au lieu de \"b/\""
 
-#: diff.c:5446
+#: diff.c:5462
 msgid "prepend an additional prefix to every line of output"
 msgstr "préfixer toutes les lignes en sortie avec la chaîne indiquée"
 
-#: diff.c:5449
+#: diff.c:5465
 msgid "do not show any source or destination prefix"
 msgstr "n'afficher aucun préfixe, ni de source, ni de destination"
 
-#: diff.c:5452
+#: diff.c:5468
 msgid "show context between diff hunks up to the specified number of lines"
 msgstr ""
 "afficher le contexte entre les sections à concurrence du nombre de ligne "
 "indiqué"
 
-#: diff.c:5456 diff.c:5461 diff.c:5466
+#: diff.c:5472 diff.c:5477 diff.c:5482
 msgid "<char>"
 msgstr "<caractère>"
 
-#: diff.c:5457
+#: diff.c:5473
 msgid "specify the character to indicate a new line instead of '+'"
 msgstr "spécifier le caractère pour indiquer une nouvelle ligne au lieu de '+'"
 
-#: diff.c:5462
+#: diff.c:5478
 msgid "specify the character to indicate an old line instead of '-'"
 msgstr "spécifier le caractère pour indiquer une ancienne ligne au lieu de '-'"
 
-#: diff.c:5467
+#: diff.c:5483
 msgid "specify the character to indicate a context instead of ' '"
 msgstr ""
 "spécifier le caractère pour indiquer une ligne de contexte au lieu de ' '"
 
-#: diff.c:5470
+#: diff.c:5486
 msgid "Diff rename options"
 msgstr "Options de renommage de diff"
 
-#: diff.c:5471
+#: diff.c:5487
 msgid "<n>[/<m>]"
 msgstr "<n>[/<m>]"
 
-#: diff.c:5472
+#: diff.c:5488
 msgid "break complete rewrite changes into pairs of delete and create"
 msgstr ""
 "casser les modifications d'une réécrire complète en paires de suppression et "
 "création"
 
-#: diff.c:5476
+#: diff.c:5492
 msgid "detect renames"
 msgstr "détecter les renommages"
 
-#: diff.c:5480
+#: diff.c:5496
 msgid "omit the preimage for deletes"
 msgstr "supprimer la pré-image pour les suppressions"
 
-#: diff.c:5483
+#: diff.c:5499
 msgid "detect copies"
 msgstr "détecter les copies"
 
-#: diff.c:5487
+#: diff.c:5503
 msgid "use unmodified files as source to find copies"
 msgstr ""
 "utiliser les fichiers non-modifiés comme sources pour trouver des copies"
 
-#: diff.c:5489
+#: diff.c:5505
 msgid "disable rename detection"
 msgstr "désactiver la détection de renommage"
 
-#: diff.c:5492
+#: diff.c:5508
 msgid "use empty blobs as rename source"
 msgstr "utiliser des blobs vides comme source de renommage"
 
-#: diff.c:5494
+#: diff.c:5510
 msgid "continue listing the history of a file beyond renames"
 msgstr "continuer à afficher l'historique d'un fichier au delà des renommages"
 
-#: diff.c:5497
+#: diff.c:5513
 msgid ""
 "prevent rename/copy detection if the number of rename/copy targets exceeds "
 "given limit"
@@ -3729,165 +3801,165 @@ msgstr ""
 "empêcher la détection de renommage/copie si le nombre de cibles de renommage/"
 "copie excède la limite indiquée"
 
-#: diff.c:5499
+#: diff.c:5515
 msgid "Diff algorithm options"
 msgstr "Options de l'algorithme de diff"
 
-#: diff.c:5501
+#: diff.c:5517
 msgid "produce the smallest possible diff"
 msgstr "produire le diff le plus petit possible"
 
-#: diff.c:5504
+#: diff.c:5520
 msgid "ignore whitespace when comparing lines"
 msgstr "ignorer les espaces lors de la comparaison de ligne"
 
-#: diff.c:5507
+#: diff.c:5523
 msgid "ignore changes in amount of whitespace"
 msgstr "ignorer des modifications du nombre d'espaces"
 
-#: diff.c:5510
+#: diff.c:5526
 msgid "ignore changes in whitespace at EOL"
 msgstr "ignorer des modifications d'espace en fin de ligne"
 
-#: diff.c:5513
+#: diff.c:5529
 msgid "ignore carrier-return at the end of line"
 msgstr "ignore le retour chariot en fin de ligne"
 
-#: diff.c:5516
+#: diff.c:5532
 msgid "ignore changes whose lines are all blank"
 msgstr "ignorer les modifications dont les lignes sont vides"
 
-#: diff.c:5518 diff.c:5540 diff.c:5543 diff.c:5588
+#: diff.c:5534 diff.c:5556 diff.c:5559 diff.c:5604
 msgid "<regex>"
 msgstr "<regex>"
 
-#: diff.c:5519
+#: diff.c:5535
 msgid "ignore changes whose all lines match <regex>"
 msgstr "ignorer les modifications dont les lignes correspondent à <regex>"
 
-#: diff.c:5522
+#: diff.c:5538
 msgid "heuristic to shift diff hunk boundaries for easy reading"
 msgstr ""
 "heuristique qui déplace les limites de sections de diff pour faciliter la "
 "lecture"
 
-#: diff.c:5525
+#: diff.c:5541
 msgid "generate diff using the \"patience diff\" algorithm"
 msgstr "générer un diff en utilisant l'algorithme de différence \"patience\""
 
-#: diff.c:5529
+#: diff.c:5545
 msgid "generate diff using the \"histogram diff\" algorithm"
 msgstr ""
 "générer un diff en utilisant l'algorithme de différence \"histogramme\""
 
-#: diff.c:5531
+#: diff.c:5547
 msgid "<algorithm>"
 msgstr "<algorithme>"
 
-#: diff.c:5532
+#: diff.c:5548
 msgid "choose a diff algorithm"
 msgstr "choisir un algorithme de différence"
 
-#: diff.c:5534
+#: diff.c:5550
 msgid "<text>"
 msgstr "<texte>"
 
-#: diff.c:5535
+#: diff.c:5551
 msgid "generate diff using the \"anchored diff\" algorithm"
 msgstr "générer un diff en utilisant l'algorithme de différence \"ancré\""
 
-#: diff.c:5537 diff.c:5546 diff.c:5549
+#: diff.c:5553 diff.c:5562 diff.c:5565
 msgid "<mode>"
 msgstr "<mode>"
 
-#: diff.c:5538
+#: diff.c:5554
 msgid "show word diff, using <mode> to delimit changed words"
 msgstr ""
 "afficher des différences par mot, en utilisant <mode> pour délimiter les "
 "mots modifiés"
 
-#: diff.c:5541
+#: diff.c:5557
 msgid "use <regex> to decide what a word is"
 msgstr "utiliser <regex> pour décider ce qu'est un mot"
 
-#: diff.c:5544
+#: diff.c:5560
 msgid "equivalent to --word-diff=color --word-diff-regex=<regex>"
 msgstr "équivalent à --word-diff=color --word-diff-regex=<regex>"
 
-#: diff.c:5547
+#: diff.c:5563
 msgid "moved lines of code are colored differently"
 msgstr "les lignes déplacées sont colorées différemment"
 
-#: diff.c:5550
+#: diff.c:5566
 msgid "how white spaces are ignored in --color-moved"
 msgstr "comment les espaces sont ignorés dans --color-moved"
 
-#: diff.c:5553
+#: diff.c:5569
 msgid "Other diff options"
 msgstr "Autres options diff"
 
-#: diff.c:5555
+#: diff.c:5571
 msgid "when run from subdir, exclude changes outside and show relative paths"
 msgstr ""
 "lancé depuis un sous-répertoire, exclure les modifications en dehors et "
 "afficher les chemins relatifs"
 
-#: diff.c:5559
+#: diff.c:5575
 msgid "treat all files as text"
 msgstr "traiter les fichiers comme texte"
 
-#: diff.c:5561
+#: diff.c:5577
 msgid "swap two inputs, reverse the diff"
 msgstr "échanger les entrées, inverser le diff"
 
-#: diff.c:5563
+#: diff.c:5579
 msgid "exit with 1 if there were differences, 0 otherwise"
 msgstr "sortir un code d'erreur 1 s'il y avait de différences, 0 sinon"
 
-#: diff.c:5565
+#: diff.c:5581
 msgid "disable all output of the program"
 msgstr "désactiver tous les affichages du programme"
 
-#: diff.c:5567
+#: diff.c:5583
 msgid "allow an external diff helper to be executed"
 msgstr "autoriser l'exécution d'un assistant externe de diff"
 
-#: diff.c:5569
+#: diff.c:5585
 msgid "run external text conversion filters when comparing binary files"
 msgstr ""
 "lancer les filtres externes de conversion en texte lors de la comparaison de "
 "fichiers binaires"
 
-#: diff.c:5571
+#: diff.c:5587
 msgid "<when>"
 msgstr "<quand>"
 
-#: diff.c:5572
+#: diff.c:5588
 msgid "ignore changes to submodules in the diff generation"
 msgstr ""
 "ignorer les modifications dans les sous-modules lors de la génération de diff"
 
-#: diff.c:5575
+#: diff.c:5591
 msgid "<format>"
 msgstr "<format>"
 
-#: diff.c:5576
+#: diff.c:5592
 msgid "specify how differences in submodules are shown"
 msgstr "spécifier comment les différences dans les sous-modules sont affichées"
 
-#: diff.c:5580
+#: diff.c:5596
 msgid "hide 'git add -N' entries from the index"
 msgstr "masquer les entrées 'git add -N' de l'index"
 
-#: diff.c:5583
+#: diff.c:5599
 msgid "treat 'git add -N' entries as real in the index"
 msgstr "traiter les entrées 'git add -N' comme réelles dans l'index"
 
-#: diff.c:5585
+#: diff.c:5601
 msgid "<string>"
 msgstr "<chaîne>"
 
-#: diff.c:5586
+#: diff.c:5602
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "string"
@@ -3895,7 +3967,7 @@ msgstr ""
 "rechercher les différences qui modifient le nombre d'occurrences de la "
 "chaîne spécifiée"
 
-#: diff.c:5589
+#: diff.c:5605
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "regex"
@@ -3903,26 +3975,38 @@ msgstr ""
 "rechercher les différences qui modifient le nombre d'occurrences de la regex "
 "spécifiée"
 
-#: diff.c:5592
+#: diff.c:5608
 msgid "show all changes in the changeset with -S or -G"
 msgstr ""
 "afficher toutes les modifications dans l'ensemble de modifications avec -S "
 "ou -G"
 
-#: diff.c:5595
+#: diff.c:5611
 msgid "treat <string> in -S as extended POSIX regular expression"
 msgstr ""
 "traiter <chaîne> dans -S comme une expression rationnelle POSIX étendue"
 
-#: diff.c:5598
+#: diff.c:5614
 msgid "control the order in which files appear in the output"
 msgstr "contrôler l'ordre dans lequel les fichiers apparaissent dans la sortie"
 
-#: diff.c:5599
+#: diff.c:5615 diff.c:5618
+msgid "<path>"
+msgstr "<chemin>"
+
+#: diff.c:5616
+msgid "show the change in the specified path first"
+msgstr "afficher la modification dans les fichier spécifié en premier"
+
+#: diff.c:5619
+msgid "skip the output to the specified path"
+msgstr "sauter la sortie pour le chemin spécifié"
+
+#: diff.c:5621
 msgid "<object-id>"
 msgstr "<id-objet>"
 
-#: diff.c:5600
+#: diff.c:5622
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "object"
@@ -3930,35 +4014,35 @@ msgstr ""
 "rechercher les différences qui modifient le nombre d'occurrences de l'objet "
 "indiqué"
 
-#: diff.c:5602
+#: diff.c:5624
 msgid "[(A|C|D|M|R|T|U|X|B)...[*]]"
 msgstr "[(A|C|D|M|R|T|U|X|B)...[*]]"
 
-#: diff.c:5603
+#: diff.c:5625
 msgid "select files by diff type"
 msgstr "sélectionner les fichiers par types de diff"
 
-#: diff.c:5605
+#: diff.c:5627
 msgid "<file>"
 msgstr "<fichier>"
 
-#: diff.c:5606
+#: diff.c:5628
 msgid "Output to a specific file"
 msgstr "Sortie vers un fichier spécifié"
 
-#: diff.c:6263
+#: diff.c:6285
 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:6266
+#: diff.c:6288
 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:6269
+#: diff.c:6291
 #, c-format
 msgid ""
 "you may want to set your %s variable to at least %d and retry the command."
@@ -3971,10 +4055,15 @@ msgstr ""
 msgid "failed to read orderfile '%s'"
 msgstr "impossible de lire le fichier de commande '%s'"
 
-#: diffcore-rename.c:592
+#: diffcore-rename.c:786
 msgid "Performing inexact rename detection"
 msgstr "Détection de renommage inexact en cours"
 
+#: diffcore-rotate.c:29
+#, c-format
+msgid "No such path '%s' in the diff"
+msgstr "pas de chemin '%s' dans la diff"
+
 #: dir.c:578
 #, c-format
 msgid "pathspec '%s' did not match any file(s) known to git"
@@ -4020,17 +4109,17 @@ msgstr "echec de l'obtention d'information de kernel"
 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:3520
+#: dir.c:3534
 #, c-format
 msgid "index file corrupt in repo %s"
 msgstr "fichier d'index corrompu dans le dépôt %s"
 
-#: dir.c:3565 dir.c:3570
+#: dir.c:3579 dir.c:3584
 #, c-format
 msgid "could not create directories for %s"
 msgstr "impossible de créer les répertoires pour %s"
 
-#: dir.c:3599
+#: dir.c:3613
 #, c-format
 msgid "could not migrate git directory from '%s' to '%s'"
 msgstr "impossible de migrer le répertoire git de '%s' vers '%s'"
@@ -4051,12 +4140,12 @@ msgstr "Filtrage du contenu"
 msgid "could not stat file '%s'"
 msgstr "impossible de stat le fichier '%s'"
 
-#: environment.c:150
+#: environment.c:152
 #, c-format
 msgid "bad git namespace path \"%s\""
 msgstr "Espaces de nom de Git \"%s\""
 
-#: environment.c:337
+#: environment.c:335
 #, c-format
 msgid "could not set GIT_DIR to '%s'"
 msgstr "impossible de régler GIT_DIR à '%s'"
@@ -4092,32 +4181,32 @@ msgstr "impossible d'écrire sur un distant"
 msgid "--stateless-rpc requires multi_ack_detailed"
 msgstr "--stateless-rpc nécessite multi_ack_detailed"
 
-#: fetch-pack.c:378 fetch-pack.c:1406
+#: fetch-pack.c:378 fetch-pack.c:1457
 #, c-format
 msgid "invalid shallow line: %s"
 msgstr "ligne de superficiel invalide : %s"
 
-#: fetch-pack.c:384 fetch-pack.c:1412
+#: fetch-pack.c:384 fetch-pack.c:1463
 #, c-format
 msgid "invalid unshallow line: %s"
 msgstr "ligne de fin de superficiel invalide : %s"
 
-#: fetch-pack.c:386 fetch-pack.c:1414
+#: fetch-pack.c:386 fetch-pack.c:1465
 #, c-format
 msgid "object not found: %s"
 msgstr "objet non trouvé : %s"
 
-#: fetch-pack.c:389 fetch-pack.c:1417
+#: fetch-pack.c:389 fetch-pack.c:1468
 #, c-format
 msgid "error in object: %s"
 msgstr "Erreur dans l'objet : %s"
 
-#: fetch-pack.c:391 fetch-pack.c:1419
+#: fetch-pack.c:391 fetch-pack.c:1470
 #, c-format
 msgid "no shallow found: %s"
 msgstr "Pas de superficiel trouvé : %s"
 
-#: fetch-pack.c:394 fetch-pack.c:1423
+#: fetch-pack.c:394 fetch-pack.c:1474
 #, c-format
 msgid "expected shallow/unshallow, got %s"
 msgstr "superficiel/non superficiel attendu, %s trouvé"
@@ -4155,171 +4244,175 @@ msgstr "Marquage de %s comme terminé"
 msgid "already have %s (%s)"
 msgstr "%s déjà possédé (%s)"
 
-#: fetch-pack.c:827
+#: fetch-pack.c:844
 msgid "fetch-pack: unable to fork off sideband demultiplexer"
 msgstr "fetch-pack : impossible de dupliquer le démultiplexeur latéral"
 
-#: fetch-pack.c:835
+#: fetch-pack.c:852
 msgid "protocol error: bad pack header"
 msgstr "erreur de protocole : mauvais entête de paquet"
 
-#: fetch-pack.c:919
+#: fetch-pack.c:946
 #, c-format
 msgid "fetch-pack: unable to fork off %s"
 msgstr "fetch-pack : impossible de dupliquer %s"
 
-#: fetch-pack.c:937
+#: fetch-pack.c:952
+msgid "fetch-pack: invalid index-pack output"
+msgstr "fetch-pack : sortie d'index de pack invalide"
+
+#: fetch-pack.c:969
 #, c-format
 msgid "%s failed"
 msgstr "échec de %s"
 
-#: fetch-pack.c:939
+#: fetch-pack.c:971
 msgid "error in sideband demultiplexer"
 msgstr "erreur dans le démultiplexer latéral"
 
-#: fetch-pack.c:982
+#: fetch-pack.c:1031
 #, c-format
 msgid "Server version is %.*s"
 msgstr "La version du serveur est %.*s"
 
-#: fetch-pack.c:990 fetch-pack.c:996 fetch-pack.c:999 fetch-pack.c:1005
-#: fetch-pack.c:1009 fetch-pack.c:1013 fetch-pack.c:1017 fetch-pack.c:1021
-#: fetch-pack.c:1025 fetch-pack.c:1029 fetch-pack.c:1033 fetch-pack.c:1037
-#: fetch-pack.c:1043 fetch-pack.c:1049 fetch-pack.c:1054 fetch-pack.c:1059
+#: fetch-pack.c:1039 fetch-pack.c:1045 fetch-pack.c:1048 fetch-pack.c:1054
+#: fetch-pack.c:1058 fetch-pack.c:1062 fetch-pack.c:1066 fetch-pack.c:1070
+#: fetch-pack.c:1074 fetch-pack.c:1078 fetch-pack.c:1082 fetch-pack.c:1086
+#: fetch-pack.c:1092 fetch-pack.c:1098 fetch-pack.c:1103 fetch-pack.c:1108
 #, c-format
 msgid "Server supports %s"
 msgstr "Le serveur supporte %s"
 
-#: fetch-pack.c:992
+#: fetch-pack.c:1041
 msgid "Server does not support shallow clients"
 msgstr "Le serveur ne supporte les clients superficiels"
 
-#: fetch-pack.c:1052
+#: fetch-pack.c:1101
 msgid "Server does not support --shallow-since"
 msgstr "Le receveur ne gère pas --shallow-since"
 
-#: fetch-pack.c:1057
+#: fetch-pack.c:1106
 msgid "Server does not support --shallow-exclude"
 msgstr "Le receveur ne gère pas --shallow-exclude"
 
-#: fetch-pack.c:1061
+#: fetch-pack.c:1110
 msgid "Server does not support --deepen"
 msgstr "Le receveur ne gère pas --deepen"
 
-#: fetch-pack.c:1063
+#: fetch-pack.c:1112
 msgid "Server does not support this repository's object format"
 msgstr "Le serveur ne supporte pas ce format d'objets de ce dépôt"
 
-#: fetch-pack.c:1076
+#: fetch-pack.c:1125
 msgid "no common commits"
 msgstr "pas de commit commun"
 
-#: fetch-pack.c:1088 fetch-pack.c:1628
+#: fetch-pack.c:1138 fetch-pack.c:1682
 msgid "git fetch-pack: fetch failed."
 msgstr "git fetch-pack : échec de le récupération."
 
-#: fetch-pack.c:1214
+#: fetch-pack.c:1265
 #, c-format
 msgid "mismatched algorithms: client %s; server %s"
 msgstr "non-correspondance des algorithmes : client %s ; serveur %s"
 
-#: fetch-pack.c:1218
+#: fetch-pack.c:1269
 #, c-format
 msgid "the server does not support algorithm '%s'"
 msgstr "Le serveur ne supporte pas l'algorithme '%s'"
 
-#: fetch-pack.c:1238
+#: fetch-pack.c:1289
 msgid "Server does not support shallow requests"
 msgstr "Le serveur ne supporte pas les requêtes superficielles"
 
-#: fetch-pack.c:1245
+#: fetch-pack.c:1296
 msgid "Server supports filter"
 msgstr "Le serveur supporte filter"
 
-#: fetch-pack.c:1284
+#: fetch-pack.c:1335
 msgid "unable to write request to remote"
 msgstr "impossible d'écrire la requête sur le distant"
 
-#: fetch-pack.c:1302
+#: fetch-pack.c:1353
 #, c-format
 msgid "error reading section header '%s'"
 msgstr "erreur à la lecture de l'entête de section '%s'"
 
-#: fetch-pack.c:1308
+#: fetch-pack.c:1359
 #, c-format
 msgid "expected '%s', received '%s'"
 msgstr "'%s' attendu, '%s' reçu"
 
-#: fetch-pack.c:1369
+#: fetch-pack.c:1420
 #, c-format
 msgid "unexpected acknowledgment line: '%s'"
 msgstr "ligne d'acquittement inattendue : '%s'"
 
-#: fetch-pack.c:1374
+#: fetch-pack.c:1425
 #, c-format
 msgid "error processing acks: %d"
 msgstr "erreur lors du traitement des acquittements : %d"
 
-#: fetch-pack.c:1384
+#: fetch-pack.c:1435
 msgid "expected packfile to be sent after 'ready'"
 msgstr "fichier paquet attendu à envoyer après 'ready'"
 
-#: fetch-pack.c:1386
+#: fetch-pack.c:1437
 msgid "expected no other sections to be sent after no 'ready'"
 msgstr "aucune autre section attendue à envoyer après absence de 'ready'"
 
-#: fetch-pack.c:1428
+#: fetch-pack.c:1479
 #, c-format
 msgid "error processing shallow info: %d"
 msgstr "erreur lors du traitement de l'information de superficialité : %d"
 
-#: fetch-pack.c:1475
+#: fetch-pack.c:1526
 #, c-format
 msgid "expected wanted-ref, got '%s'"
 msgstr "wanted-ref attendu, '%s' trouvé"
 
-#: fetch-pack.c:1480
+#: fetch-pack.c:1531
 #, c-format
 msgid "unexpected wanted-ref: '%s'"
 msgstr "wanted-ref inattendu : '%s'"
 
-#: fetch-pack.c:1485
+#: fetch-pack.c:1536
 #, c-format
 msgid "error processing wanted refs: %d"
 msgstr "erreur lors du traitement des références voulues : %d"
 
-#: fetch-pack.c:1515
+#: fetch-pack.c:1566
 msgid "git fetch-pack: expected response end packet"
 msgstr "git fetch-pack : paquet de fin de réponse attendu"
 
-#: fetch-pack.c:1897
+#: fetch-pack.c:1960
 msgid "no matching remote head"
 msgstr "pas de HEAD distante correspondante"
 
-#: fetch-pack.c:1920 builtin/clone.c:693
+#: fetch-pack.c:1983 builtin/clone.c:693
 msgid "remote did not send all necessary objects"
 msgstr "le serveur distant n'a pas envoyé tous les objets nécessaires"
 
-#: fetch-pack.c:1947
+#: fetch-pack.c:2010
 #, c-format
 msgid "no such remote ref %s"
 msgstr "référence distante inconnue %s"
 
-#: fetch-pack.c:1950
+#: fetch-pack.c:2013
 #, 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:272
+#: gpg-interface.c:273
 msgid "could not create temporary file"
 msgstr "impossible de créer un fichier temporaire"
 
-#: gpg-interface.c:275
+#: gpg-interface.c:276
 #, c-format
 msgid "failed writing detached signature to '%s'"
 msgstr "impossible d'écrire la signature détachée dans '%s'"
 
-#: gpg-interface.c:457
+#: gpg-interface.c:470
 msgid "gpg failed to sign the data"
 msgstr "gpg n'a pas pu signer les données"
 
@@ -4328,7 +4421,7 @@ msgstr "gpg n'a pas pu signer les données"
 msgid "ignore invalid color '%.*s' in log.graphColors"
 msgstr "couleur invalide '%.*s' ignorée dans log.graphColors"
 
-#: grep.c:640
+#: grep.c:543
 msgid ""
 "given pattern contains NULL byte (via -f <file>). This is only supported "
 "with -P under PCRE v2"
@@ -4336,18 +4429,18 @@ msgstr ""
 "le motif fourni contient des octets NUL (via -f <fichier>). Ce n'est "
 "supporté qu'avec -P avec PCRE v2"
 
-#: grep.c:2100
+#: grep.c:1906
 #, c-format
 msgid "'%s': unable to read %s"
 msgstr "'%s' : lecture de %s impossible"
 
-#: grep.c:2117 setup.c:176 builtin/clone.c:412 builtin/diff.c:89
+#: grep.c:1923 setup.c:176 builtin/clone.c:412 builtin/diff.c:90
 #: builtin/rm.c:135
 #, c-format
 msgid "failed to stat '%s'"
 msgstr "échec du stat de '%s'"
 
-#: grep.c:2128
+#: grep.c:1934
 #, c-format
 msgid "'%s': short read"
 msgstr "'%s' : lecture tronquée"
@@ -4418,7 +4511,7 @@ msgstr "commandes git disponibles depuis un autre endroit de votre $PATH"
 msgid "These are common Git commands used in various situations:"
 msgstr "Ci-dessous les commandes Git habituelles dans diverses situations :"
 
-#: help.c:365 git.c:99
+#: help.c:365 git.c:100
 #, c-format
 msgid "unsupported command listing type '%s'"
 msgstr "type de liste de commandes non supporté '%s'"
@@ -4664,126 +4757,53 @@ msgstr ""
 msgid "Unable to create '%s.lock': %s"
 msgstr "Impossible de créer '%s.lock' : %s"
 
-#: ls-refs.c:109
-msgid "expected flush after ls-refs arguments"
-msgstr "vidage attendu après les arguments ls-refs"
-
-#: merge-ort-wrappers.c:13 merge-recursive.c:3672
-#, c-format
-msgid ""
-"Your local changes to the following files would be overwritten by merge:\n"
-"  %s"
-msgstr ""
-"Vos modifications locales aux fichiers suivants seraient écrasées par la "
-"fusion :\n"
-"  %s"
-
-#: merge-ort-wrappers.c:33 merge-recursive.c:3436
-#, c-format
-msgid "Already up to date!"
-msgstr "Déjà à jour !"
-
-#: merge-recursive.c:356
-msgid "(bad commit)\n"
-msgstr "(mauvais commit)\n"
-
-#: merge-recursive.c:379
-#, 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:388
-#, c-format
-msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
-msgstr "échec de addinfo_cache pour le chemin '%s' ; abandon de la fusion."
-
-#: merge-recursive.c:874
-#, c-format
-msgid "failed to create path '%s'%s"
-msgstr "impossible de créer le chemin '%s' %s"
-
-#: merge-recursive.c:885
-#, 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:899 merge-recursive.c:918
-msgid ": perhaps a D/F conflict?"
-msgstr ": peut-être un conflit D/F ?"
-
-#: merge-recursive.c:908
-#, c-format
-msgid "refusing to lose untracked file at '%s'"
-msgstr "refus de perdre le fichier non suivi '%s'"
-
-#: merge-recursive.c:949 builtin/cat-file.c:41
-#, c-format
-msgid "cannot read object %s '%s'"
-msgstr "impossible de lire l'objet %s '%s'"
-
-#: merge-recursive.c:954
-#, c-format
-msgid "blob expected for %s '%s'"
-msgstr "blob attendu pour %s '%s'"
-
-#: merge-recursive.c:979
-#, c-format
-msgid "failed to open '%s': %s"
-msgstr "échec à l'ouverture de '%s' : %s"
-
-#: merge-recursive.c:990
+#: ls-refs.c:37
 #, c-format
-msgid "failed to symlink '%s': %s"
-msgstr "échec à la création du lien symbolique '%s' : %s"
+msgid "invalid value '%s' for lsrefs.unborn"
+msgstr "valeur invalide '%s' pour lsrefs.unborn"
 
-#: merge-recursive.c:995
-#, c-format
-msgid "do not know what to do with %06o %s '%s'"
-msgstr "ne sait pas traiter %06o %s '%s'"
+#: ls-refs.c:167
+msgid "expected flush after ls-refs arguments"
+msgstr "vidage attendu après les arguments ls-refs"
 
-#: merge-recursive.c:1191
+#: merge-ort.c:888 merge-recursive.c:1191
 #, 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:1198
+#: merge-ort.c:897 merge-recursive.c:1198
 #, 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:1205
+#: merge-ort.c:906 merge-recursive.c:1205
 #, 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:1213 merge-recursive.c:1225
+#: merge-ort.c:916 merge-ort.c:923
 #, c-format
-msgid "Fast-forwarding submodule %s to the following commit:"
-msgstr "Avance rapide du sous-module %s au commit suivant :"
+msgid "Note: Fast-forwarding submodule %s to %s"
+msgstr "Note : Avance rapide du sous-module %s à %s"
 
-#: merge-recursive.c:1216 merge-recursive.c:1228
+#: merge-ort.c:944
 #, c-format
-msgid "Fast-forwarding submodule %s"
-msgstr "Avance rapide du sous-module %s"
+msgid "Failed to merge submodule %s"
+msgstr "Échec de la fusion du sous-module %s"
 
-#: merge-recursive.c:1251
+#: merge-ort.c:951
 #, c-format
-msgid "Failed to merge submodule %s (merge following commits not found)"
+msgid ""
+"Failed to merge submodule %s, but a possible merge resolution exists:\n"
+"%s\n"
 msgstr ""
-"Échec de fusion du sous-module %s (fusion suivant les commits non trouvée)"
-
-#: merge-recursive.c:1255
-#, 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:1256
-msgid "Found a possible merge resolution for the submodule:\n"
-msgstr "Résolution possible de fusion trouvée pour le sous-module :\n"
+"Échec de fusion du sous-module %s mais une résolution possible de fusion "
+"existe :\n"
+"%s\n"
 
-#: merge-recursive.c:1259
+#: merge-ort.c:955 merge-recursive.c:1259
 #, c-format
 msgid ""
 "If this is correct simply add it to the index for example\n"
@@ -4800,71 +4820,339 @@ msgstr ""
 "\n"
 "qui acceptera cette suggestion.\n"
 
-#: merge-recursive.c:1268
+#: merge-ort.c:968
 #, c-format
-msgid "Failed to merge submodule %s (multiple merges found)"
-msgstr "Échec de fusion du sous-module %s (plusieurs fusions trouvées)"
+msgid ""
+"Failed to merge submodule %s, but multiple possible merges exist:\n"
+"%s"
+msgstr ""
+"Échec de fusion du sous-module %s mais de multiples solutions de fusion "
+"existent :\n"
+"%s"
 
-#: merge-recursive.c:1341
+#: merge-ort.c:1127 merge-recursive.c:1341
 msgid "Failed to execute internal merge"
 msgstr "Échec à l'exécution de la fusion interne"
 
-#: merge-recursive.c:1346
+#: merge-ort.c:1132 merge-recursive.c:1346
 #, c-format
 msgid "Unable to add %s to database"
 msgstr "Impossible d'ajouter %s à la base de données"
 
-#: merge-recursive.c:1378
+#: merge-ort.c:1139 merge-recursive.c:1378
 #, c-format
 msgid "Auto-merging %s"
 msgstr "Fusion automatique de %s"
 
-#: merge-recursive.c:1402
+#: merge-ort.c:1278 merge-recursive.c:2100
 #, c-format
-msgid "Error: Refusing to lose untracked file at %s; writing to %s instead."
+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 ""
-"Erreur : refus de perdre le fichier non suivi %s ; écriture dans %s à la "
-"place."
+"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:1474
+#: merge-ort.c:1288 merge-recursive.c:2110
 #, c-format
 msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
-"in tree."
+"CONFLICT (implicit dir rename): Cannot map more than one path to %s; "
+"implicit directory renames tried to put these paths there: %s"
 msgstr ""
-"CONFLIT (%s/suppression) : %s supprimé dans %s et %s dans %s. Version %s de "
-"%s laissée dans l'arbre."
+"CONFLIT (renommage implicite de répertoire) : impossible de transformer "
+"plusieurs chemins sur %s ; les chemins concernés sont : %s"
 
-#: merge-recursive.c:1479
+#: merge-ort.c:1471
 #, c-format
 msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
-"left in tree."
+"CONFLICT (directory rename split): Unclear where to rename %s to; it was "
+"renamed to multiple other directories, with no destination getting a "
+"majority of the files."
 msgstr ""
-"CONFLIT (%s/suppression) : %s supprimé dans %s et %s à %s dans %s. Version "
-"%s de %s laissée dans l'arbre."
+"CONFLIT (renommage de répertoire coupé) : le renommage de %s n'est pas clair "
+"parce que le répertoire a été renommé en plusieurs autres répertoires, sans "
+"aucune destination récupérant la majorité des fichiers."
 
-#: merge-recursive.c:1486
+#: merge-ort.c:1637 merge-recursive.c:2447
 #, c-format
 msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
-"in tree at %s."
+"WARNING: Avoiding applying %s -> %s rename to %s, because %s itself was "
+"renamed."
 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."
+"AVERTISSEMENT : ne renomme pas %s->%s dans %s, parce que %s lui-même a été "
+"renommé."
 
-#: merge-recursive.c:1491
+#: merge-ort.c:1781 merge-recursive.c:3215
 #, 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."
+"Path updated: %s added in %s inside a directory that was renamed in %s; "
+"moving it to %s."
 msgstr ""
-"CONFLIT (%s/suppression) : %s supprimé dans %s et %s à %s dans %s. Version "
-"%s de %s laissée dans l'arbre dans le fichier %s."
+"Chemin mis à jour : %s ajouté dans %s dans un répertoire qui a été renommé "
+"en %s ; déplacé dans %s."
 
-#: merge-recursive.c:1526
-msgid "rename"
-msgstr "renommage"
+#: merge-ort.c:1788 merge-recursive.c:3222
+#, c-format
+msgid ""
+"Path updated: %s renamed to %s in %s, inside a directory that was renamed in "
+"%s; moving it to %s."
+msgstr ""
+"Chemin mis à jour : %s renommé en %s dans %s, dans un répertoire qui a été "
+"renommé en %s ; déplacé dans %s."
+
+#: merge-ort.c:1801 merge-recursive.c:3218
+#, c-format
+msgid ""
+"CONFLICT (file location): %s added in %s inside a directory that was renamed "
+"in %s, suggesting it should perhaps be moved to %s."
+msgstr ""
+"CONFLIT (localisation de fichier) : %s ajouté dans %s dans un répertoire qui "
+"a été renommé dans %s, ce qui suggère qu'il devrait peut-être être déplacé "
+"vers %s."
+
+#: merge-ort.c:1809 merge-recursive.c:3225
+#, c-format
+msgid ""
+"CONFLICT (file location): %s renamed to %s in %s, inside a directory that "
+"was renamed in %s, suggesting it should perhaps be moved to %s."
+msgstr ""
+"CONFLIT (localisation de fichier) : %s renommé en %s dans %s, dans un "
+"répertoire qui a été renommé dans %s, ce qui suggère qu'il devrait peut-être "
+"être déplacé vers %s."
+
+#: merge-ort.c:1952
+#, c-format
+msgid "CONFLICT (rename/rename): %s renamed to %s in %s and to %s in %s."
+msgstr ""
+"CONFLIT (renommage/renommage) : %s renommé en %s dans %s et en %s dans %s."
+
+#: merge-ort.c:2047
+#, c-format
+msgid ""
+"CONFLICT (rename involved in collision): rename of %s -> %s has content "
+"conflicts AND collides with another path; this may result in nested conflict "
+"markers."
+msgstr ""
+"CONFLIT (renommage au sein d'une collision) : lre renommage de %s -> %s a "
+"des conflits de contenu ET entre en collision avec un autre chemin ; ceci "
+"peut resulter en des marqueurs de conflit imbriqués."
+
+#: merge-ort.c:2066 merge-ort.c:2090
+#, c-format
+msgid "CONFLICT (rename/delete): %s renamed to %s in %s, but deleted in %s."
+msgstr ""
+"CONFLIT (renommage/suppression) : Renommage de %s en %s dans %s mais "
+"supprimé dans %s."
+
+#: merge-ort.c:2735
+#, c-format
+msgid ""
+"CONFLICT (file/directory): directory in the way of %s from %s; moving it to "
+"%s instead."
+msgstr ""
+"CONFLIT (fichier/répertoire) : répertoire au milieu de %s depuis %s ; "
+"déplacement dans %s à la place."
+
+#: merge-ort.c:2808
+#, c-format
+msgid ""
+"CONFLICT (distinct types): %s had different types on each side; renamed %s "
+"of them so each can be recorded somewhere."
+msgstr ""
+"CONFLIT (types différents) : %s a des types différents des deux côtés ; "
+"renommé la version %s de manière à pouvoir enregistrer les deux quelque part."
+
+#: merge-ort.c:2812
+msgid "both"
+msgstr "les deux"
+
+#: merge-ort.c:2812
+msgid "one"
+msgstr "un"
+
+#: merge-ort.c:2907 merge-recursive.c:3052
+msgid "content"
+msgstr "contenu"
+
+#: merge-ort.c:2909 merge-recursive.c:3056
+msgid "add/add"
+msgstr "ajout/ajout"
+
+#: merge-ort.c:2911 merge-recursive.c:3101
+msgid "submodule"
+msgstr "sous-module"
+
+#: merge-ort.c:2913 merge-recursive.c:3102
+#, c-format
+msgid "CONFLICT (%s): Merge conflict in %s"
+msgstr "CONFLIT (%s) : Conflit de fusion dans %s"
+
+#: merge-ort.c:2938
+#, c-format
+msgid ""
+"CONFLICT (modify/delete): %s deleted in %s and modified in %s.  Version %s "
+"of %s left in tree."
+msgstr ""
+"CONFLIT (modification/suppression) : %s supprimé dans %s et modifié dans %s. "
+"Version %s de %s laissée dans l'arbre."
+
+#. TRANSLATORS: The %s arguments are: 1) tree hash of a merge
+#. base, and 2-3) the trees for the two trees we're merging.
+#.
+#: merge-ort.c:3406
+#, c-format
+msgid "collecting merge info failed for trees %s, %s, %s"
+msgstr "échec de collecte l'information de fusion pour les arbres %s, %s, %s"
+
+#: merge-ort-wrappers.c:13 merge-recursive.c:3661
+#, c-format
+msgid ""
+"Your local changes to the following files would be overwritten by merge:\n"
+"  %s"
+msgstr ""
+"Vos modifications locales aux fichiers suivants seraient écrasées par la "
+"fusion :\n"
+"  %s"
+
+#: merge-ort-wrappers.c:33 merge-recursive.c:3436
+#, c-format
+msgid "Already up to date!"
+msgstr "Déjà à jour !"
+
+#: merge-recursive.c:356
+msgid "(bad commit)\n"
+msgstr "(mauvais commit)\n"
+
+#: merge-recursive.c:379
+#, 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:388
+#, c-format
+msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
+msgstr "échec de addinfo_cache pour le chemin '%s' ; abandon de la fusion."
+
+#: merge-recursive.c:874
+#, c-format
+msgid "failed to create path '%s'%s"
+msgstr "impossible de créer le chemin '%s' %s"
+
+#: merge-recursive.c:885
+#, 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:899 merge-recursive.c:918
+msgid ": perhaps a D/F conflict?"
+msgstr ": peut-être un conflit D/F ?"
+
+#: merge-recursive.c:908
+#, c-format
+msgid "refusing to lose untracked file at '%s'"
+msgstr "refus de perdre le fichier non suivi '%s'"
+
+#: merge-recursive.c:949 builtin/cat-file.c:41
+#, c-format
+msgid "cannot read object %s '%s'"
+msgstr "impossible de lire l'objet %s '%s'"
+
+#: merge-recursive.c:954
+#, c-format
+msgid "blob expected for %s '%s'"
+msgstr "blob attendu pour %s '%s'"
+
+#: merge-recursive.c:979
+#, c-format
+msgid "failed to open '%s': %s"
+msgstr "échec à l'ouverture de '%s' : %s"
+
+#: merge-recursive.c:990
+#, c-format
+msgid "failed to symlink '%s': %s"
+msgstr "échec à la création du lien symbolique '%s' : %s"
+
+#: merge-recursive.c:995
+#, c-format
+msgid "do not know what to do with %06o %s '%s'"
+msgstr "ne sait pas traiter %06o %s '%s'"
+
+#: merge-recursive.c:1213 merge-recursive.c:1225
+#, c-format
+msgid "Fast-forwarding submodule %s to the following commit:"
+msgstr "Avance rapide du sous-module %s au commit suivant :"
+
+#: merge-recursive.c:1216 merge-recursive.c:1228
+#, c-format
+msgid "Fast-forwarding submodule %s"
+msgstr "Avance rapide du sous-module %s"
+
+#: merge-recursive.c:1251
+#, 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:1255
+#, 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:1256
+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:1268
+#, 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:1402
+#, 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:1474
+#, c-format
+msgid ""
+"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
+"in tree."
+msgstr ""
+"CONFLIT (%s/suppression) : %s supprimé dans %s et %s dans %s. Version %s de "
+"%s laissée dans l'arbre."
+
+#: merge-recursive.c:1479
+#, c-format
+msgid ""
+"CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
+"left in tree."
+msgstr ""
+"CONFLIT (%s/suppression) : %s supprimé dans %s et %s à %s dans %s. Version "
+"%s de %s laissée dans l'arbre."
+
+#: merge-recursive.c:1486
+#, c-format
+msgid ""
+"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
+"in tree at %s."
+msgstr ""
+"CONFLIT (%s/suppression) : %s supprimé dans %s et %s dans %s. Version %s de "
+"%s laissée dans l'arbre dans le fichier %s."
+
+#: merge-recursive.c:1491
+#, c-format
+msgid ""
+"CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
+"left in tree at %s."
+msgstr ""
+"CONFLIT (%s/suppression) : %s supprimé dans %s et %s à %s dans %s. Version "
+"%s de %s laissée dans l'arbre dans le fichier %s."
+
+#: merge-recursive.c:1526
+msgid "rename"
+msgstr "renommage"
 
 #: merge-recursive.c:1526
 msgid "renamed"
@@ -4927,24 +5215,6 @@ msgstr ""
 "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:2100
-#, c-format
-msgid ""
-"CONFLICT (implicit dir rename): Existing file/dir at %s in the way of "
-"implicit directory rename(s) putting the following path(s) there: %s."
-msgstr ""
-"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:2110
-#, c-format
-msgid ""
-"CONFLICT (implicit dir rename): Cannot map more than one path to %s; "
-"implicit directory renames tried to put these paths there: %s"
-msgstr ""
-"CONFLIT (renommage implicite de répertoire) : impossible de transformer "
-"plusieurs chemins sur %s ; les chemins concernés sont : %s"
-
 #: merge-recursive.c:2202
 #, c-format
 msgid ""
@@ -4954,15 +5224,6 @@ msgstr ""
 "CONFLIT (renommage/renommage) : renommage du répertoire %s->%s dans %s. "
 "Renommage de répertoire %s->%s dans %s"
 
-#: merge-recursive.c:2447
-#, 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:2973
 #, c-format
 msgid "cannot read object %s"
@@ -4981,72 +5242,17 @@ msgstr "modification"
 msgid "modified"
 msgstr "modifié"
 
-#: merge-recursive.c:3052
-msgid "content"
-msgstr "contenu"
-
-#: merge-recursive.c:3056
-msgid "add/add"
-msgstr "ajout/ajout"
-
 #: merge-recursive.c:3079
 #, c-format
 msgid "Skipped %s (merged same as existing)"
 msgstr "%s sauté (fusion identique à l'existant)"
 
-#: merge-recursive.c:3101
-msgid "submodule"
-msgstr "sous-module"
-
-#: merge-recursive.c:3102
-#, c-format
-msgid "CONFLICT (%s): Merge conflict in %s"
-msgstr "CONFLIT (%s) : Conflit de fusion dans %s"
-
 #: merge-recursive.c:3132
 #, c-format
 msgid "Adding as %s instead"
 msgstr "Ajout plutôt comme %s"
 
-#: merge-recursive.c:3215
-#, c-format
-msgid ""
-"Path updated: %s added in %s inside a directory that was renamed in %s; "
-"moving it to %s."
-msgstr ""
-"Chemin mis à jour : %s ajouté dans %s dans un répertoire qui a été renommé "
-"en %s ; déplacé dans %s."
-
-#: merge-recursive.c:3218
-#, c-format
-msgid ""
-"CONFLICT (file location): %s added in %s inside a directory that was renamed "
-"in %s, suggesting it should perhaps be moved to %s."
-msgstr ""
-"CONFLIT (localisation de fichier) : %s ajouté dans %s dans un répertoire qui "
-"a été renommé dans %s, ce qui suggère qu'il devrait peut-être être déplacé "
-"vers %s."
-
-#: merge-recursive.c:3222
-#, c-format
-msgid ""
-"Path updated: %s renamed to %s in %s, inside a directory that was renamed in "
-"%s; moving it to %s."
-msgstr ""
-"Chemin mis à jour : %s renommé en %s dans %s, dans un répertoire qui a été "
-"renommé en %s ; déplacé dans %s."
-
-#: merge-recursive.c:3225
-#, c-format
-msgid ""
-"CONFLICT (file location): %s renamed to %s in %s, inside a directory that "
-"was renamed in %s, suggesting it should perhaps be moved to %s."
-msgstr ""
-"CONFLIT (localisation de fichier) : %s renommé en %s dans %s, dans un "
-"répertoire qui a été renommé dans %s, ce qui suggère qu'il devrait peut-être "
-"être déplacé vers %s."
-
-#: merge-recursive.c:3339
+#: merge-recursive.c:3339
 #, c-format
 msgid "Removing %s"
 msgstr "Suppression de %s"
@@ -5080,27 +5286,28 @@ msgstr "CONFLIT (ajout/ajout) : Conflit de fusion dans %s"
 msgid "merging of trees %s and %s failed"
 msgstr "échec de fusion des arbres %s et %s"
 
-#: merge-recursive.c:3550
+#: merge-recursive.c:3539
 msgid "Merging:"
 msgstr "Fusion :"
 
-#: merge-recursive.c:3563
+#: merge-recursive.c:3552
 #, 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:3613
+#: merge-recursive.c:3602
 msgid "merge returned no commit"
 msgstr "la fusion n'a pas retourné de commit"
 
-#: merge-recursive.c:3769
+#: merge-recursive.c:3758
 #, c-format
 msgid "Could not parse object '%s'"
 msgstr "Impossible d'analyser l'objet '%s'"
 
-#: merge-recursive.c:3787 builtin/merge.c:711 builtin/merge.c:895
+#: merge-recursive.c:3776 builtin/merge.c:712 builtin/merge.c:896
+#: builtin/stash.c:471
 msgid "Unable to write index."
 msgstr "Impossible d'écrire l'index."
 
@@ -5108,124 +5315,114 @@ msgstr "Impossible d'écrire l'index."
 msgid "failed to read the cache"
 msgstr "impossible de lire le cache"
 
-#: merge.c:109 rerere.c:720 builtin/am.c:1883 builtin/am.c:1917
-#: builtin/checkout.c:573 builtin/checkout.c:829 builtin/clone.c:817
+#: merge.c:109 rerere.c:704 builtin/am.c:1883 builtin/am.c:1917
+#: builtin/checkout.c:575 builtin/checkout.c:828 builtin/clone.c:817
 #: builtin/stash.c:265
 msgid "unable to write new index file"
 msgstr "impossible d'écrire le nouveau fichier d'index"
 
-#: midx.c:80
+#: midx.c:62
+msgid "multi-pack-index OID fanout is of the wrong size"
+msgstr "l'étalement de l'OID d'index multi-paquet n'a pas la bonne taille"
+
+#: midx.c:93
 #, c-format
 msgid "multi-pack-index file %s is too small"
 msgstr "le fichier d'index multi-paquet %s est trop petit"
 
-#: midx.c:96
+#: midx.c:109
 #, c-format
 msgid "multi-pack-index signature 0x%08x does not match signature 0x%08x"
 msgstr ""
 "la signature de l'index multi-paquet 0x%08x ne correspond pas à la signature "
 "0x%08x"
 
-#: midx.c:101
+#: midx.c:114
 #, c-format
 msgid "multi-pack-index version %d not recognized"
 msgstr "la version d'index multi-paquet %d n'est pas reconnue"
 
-#: midx.c:106
+#: midx.c:119
 #, c-format
 msgid "multi-pack-index hash version %u does not match version %u"
 msgstr ""
 "la version d'empreinte d'index multi-paquet %u ne correspond pas à la "
 "version %u"
 
-#: midx.c:123
-msgid "invalid chunk offset (too large)"
-msgstr "décalage de section invalide (trop grand)"
-
-#: midx.c:147
-msgid "terminating multi-pack-index chunk id appears earlier than expected"
-msgstr ""
-"identifiant de terminaison de tronçon d'index multi-paquet terminant "
-"apparaît plus tôt qu'attendu"
-
-#: midx.c:160
+#: midx.c:136
 msgid "multi-pack-index missing required pack-name chunk"
 msgstr "index multi-paquet manque de tronçon de nom de paquet"
 
-#: midx.c:162
+#: midx.c:138
 msgid "multi-pack-index missing required OID fanout chunk"
 msgstr "index multi-paquet manque de tronçon de d'étalement OID requis"
 
-#: midx.c:164
+#: midx.c:140
 msgid "multi-pack-index missing required OID lookup chunk"
-msgstr "index multi-paquet manque de tronçon de recherche OID"
+msgstr "index multi-paquet manque de tronçon de recherche OID requis"
 
-#: midx.c:166
+#: midx.c:142
 msgid "multi-pack-index missing required object offsets chunk"
-msgstr "index multi-paquet manque de tronçon de décalage d'objet"
+msgstr "index multi-paquet manque de tronçon de décalage d'objet requis"
 
-#: midx.c:180
+#: midx.c:158
 #, c-format
 msgid "multi-pack-index pack names out of order: '%s' before '%s'"
 msgstr ""
 "index multi-paquet les noms de paquets sont en désordre : '%s' avant '%s'"
 
-#: midx.c:223
+#: midx.c:202
 #, c-format
 msgid "bad pack-int-id: %u (%u total packs)"
 msgstr "mauvais pack-int-id : %u (%u paquets au total)"
 
-#: midx.c:273
+#: midx.c:252
 msgid "multi-pack-index stores a 64-bit offset, but off_t is too small"
 msgstr ""
 "l'index multi-paquet stock un décalage en 64-bit, mais off_t est trop petit"
 
-#: midx.c:480
+#: midx.c:467
 #, c-format
 msgid "failed to add packfile '%s'"
 msgstr "échec de l'ajout du fichier paquet '%s'"
 
-#: midx.c:486
+#: midx.c:473
 #, c-format
 msgid "failed to open pack-index '%s'"
 msgstr "échec à l'ouverture du fichier paquet '%s'"
 
-#: midx.c:546
+#: midx.c:533
 #, c-format
 msgid "failed to locate object %d in packfile"
 msgstr "échec de localisation de l'objet %d dans le fichier paquet"
 
-#: midx.c:846
+#: midx.c:821
 msgid "Adding packfiles to multi-pack-index"
 msgstr "Ajout de fichiers paquet à un index multi-paquet"
 
-#: midx.c:879
+#: midx.c:855
 #, c-format
 msgid "did not see pack-file %s to drop"
 msgstr "fichier paquet à éliminer %s non trouvé"
 
-#: midx.c:931
+#: midx.c:904
 msgid "no pack files to index."
 msgstr "Aucun fichier paquet à l'index."
 
-#: midx.c:982
-msgid "Writing chunks to multi-pack-index"
-msgstr "Écriture des sections dans l'index multi-paquet"
-
-#: midx.c:1060
+#: midx.c:965
 #, c-format
 msgid "failed to clear multi-pack-index at %s"
 msgstr "échec du nettoyage de l'index de multi-paquet à %s"
 
-#: midx.c:1116
+#: midx.c:1021
 msgid "multi-pack-index file exists, but failed to parse"
 msgstr "le fichier d'index multi-paquet existe mais n'a pu être analysé"
 
-#: midx.c:1124
+#: midx.c:1029
 msgid "Looking for referenced packfiles"
 msgstr "Recherche de fichiers paquets référencés"
 
-#: midx.c:1139
+#: midx.c:1044
 #, c-format
 msgid ""
 "oid fanout out of order: fanout[%d] = %<PRIx32> > %<PRIx32> = fanout[%d]"
@@ -5233,69 +5430,69 @@ msgstr ""
 "étalement oid en désordre : étalement[%d] = %<PRIx32> > %<PRIx32> = "
 "étalement[%d]"
 
-#: midx.c:1144
+#: midx.c:1049
 msgid "the midx contains no oid"
 msgstr "le midx ne contient aucun oid"
 
-#: midx.c:1153
+#: midx.c:1058
 msgid "Verifying OID order in multi-pack-index"
 msgstr "Vérification de l'ordre des OID dans l'index multi-paquet"
 
-#: midx.c:1162
+#: midx.c:1067
 #, c-format
 msgid "oid lookup out of order: oid[%d] = %s >= %s = oid[%d]"
 msgstr "recherche d'oid en désordre : oid[%d] = %s >= %s = oid[%d]"
 
-#: midx.c:1182
+#: midx.c:1087
 msgid "Sorting objects by packfile"
 msgstr "Classement des objets par fichier paquet"
 
-#: midx.c:1189
+#: midx.c:1094
 msgid "Verifying object offsets"
 msgstr "Vérification des décalages des objets"
 
-#: midx.c:1205
+#: midx.c:1110
 #, c-format
 msgid "failed to load pack entry for oid[%d] = %s"
 msgstr "échec de la lecture de l'élément de cache pour oid[%d] = %s"
 
-#: midx.c:1211
+#: midx.c:1116
 #, c-format
 msgid "failed to load pack-index for packfile %s"
 msgstr "impossible de lire le fichier paquet %s"
 
-#: midx.c:1220
+#: midx.c:1125
 #, c-format
 msgid "incorrect object offset for oid[%d] = %s: %<PRIx64> != %<PRIx64>"
 msgstr "décalage d'objet incorrect pour oid[%d] = %s : %<PRIx64> != %<PRIx64>"
 
-#: midx.c:1245
+#: midx.c:1150
 msgid "Counting referenced objects"
 msgstr "Comptage des objets référencés"
 
-#: midx.c:1255
+#: midx.c:1160
 msgid "Finding and deleting unreferenced packfiles"
 msgstr "Recherche et effacement des fichiers paquets non-référencés"
 
-#: midx.c:1446
+#: midx.c:1351
 msgid "could not start pack-objects"
 msgstr "Impossible de démarrer le groupement d'objets"
 
-#: midx.c:1466
+#: midx.c:1371
 msgid "could not finish pack-objects"
 msgstr "Impossible de finir le groupement d'objets"
 
-#: name-hash.c:537
+#: name-hash.c:538
 #, c-format
 msgid "unable to create lazy_dir thread: %s"
 msgstr "impossible de créer le fil lazy_dir : %s"
 
-#: name-hash.c:559
+#: name-hash.c:560
 #, c-format
 msgid "unable to create lazy_name thread: %s"
 msgstr "impossible de créer le fil lazy_name : %s"
 
-#: name-hash.c:565
+#: name-hash.c:566
 #, c-format
 msgid "unable to join lazy_name thread: %s"
 msgstr "impossible de joindre le fil lazy_name : %s"
@@ -5339,1596 +5536,2018 @@ 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:53
+#: object-file.c:480
 #, c-format
-msgid "invalid object type \"%s\""
-msgstr "type d'objet invalide \"%s\""
+msgid "object directory %s does not exist; check .git/objects/info/alternates"
+msgstr ""
+"le répertoire objet %s n'existe pas ; vérifiez .git/objects/info/alternates"
 
-#: object.c:173
+#: object-file.c:531
 #, c-format
-msgid "object %s is a %s, not a %s"
-msgstr "l'objet %s est de type %s, pas de type %s"
+msgid "unable to normalize alternate object path: %s"
+msgstr "impossible de normaliser le chemin d'objet alternatif : %s"
 
-#: object.c:233
+#: object-file.c:603
 #, c-format
-msgid "object %s has unknown type id %d"
-msgstr "l'objet %s a un id de type inconnu %d"
+msgid "%s: ignoring alternate object stores, nesting too deep"
+msgstr "%s : magasins d'objets alternatifs ignorés, récursion trop profonde"
 
-#: object.c:246
+#: object-file.c:610
 #, c-format
-msgid "unable to parse object: %s"
-msgstr "impossible d'analyser l'objet : %s"
+msgid "unable to normalize object directory: %s"
+msgstr "impossible de normaliser le répertoire d'objet : %s"
 
-#: object.c:266 object.c:278
-#, c-format
-msgid "hash mismatch %s"
-msgstr "incohérence de hachage %s"
+#: object-file.c:653
+msgid "unable to fdopen alternates lockfile"
+msgstr "impossible d'ouvrir (fdopen) le fichier verrou des alternatives"
 
-#: pack-bitmap.c:815 pack-bitmap.c:821 builtin/pack-objects.c:2216
-#, c-format
-msgid "unable to get size of %s"
-msgstr "impossible de récupérer la taille de %s"
+#: object-file.c:671
+msgid "unable to read alternates file"
+msgstr "lecture du fichier d'alternatives impossible"
 
-#: packfile.c:615
-msgid "offset before end of packfile (broken .idx?)"
-msgstr "offset avant la fin du fichier paquet (.idx cassé ?)"
+#: object-file.c:678
+msgid "unable to move new alternates file into place"
+msgstr "impossible de déplacer le nouveau fichier d'alternative"
 
-#: packfile.c:1907
+#: object-file.c:713
 #, 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 ?)"
+msgid "path '%s' does not exist"
+msgstr "le chemin '%s' n'existe pas"
 
-#: packfile.c:1911
+#: object-file.c:734
 #, c-format
-msgid "offset beyond end of pack index for %s (truncated index?)"
+msgid "reference repository '%s' as a linked checkout is not supported yet."
 msgstr ""
-"offset au delà de la fin de l'index de paquet pour %s (index tronqué ?)"
+"extraire le dépôt de référence '%s' comme une extraction liée n'est pas "
+"encore supporté."
 
-#: parse-options-cb.c:20 parse-options-cb.c:24
+#: object-file.c:740
 #, c-format
-msgid "option `%s' expects a numerical value"
-msgstr "l'option '%s' attend une valeur numérique"
+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."
 
-#: parse-options-cb.c:41
+#: object-file.c:746
 #, c-format
-msgid "malformed expiration date '%s'"
-msgstr "date d'expiration malformée : '%s'"
+msgid "reference repository '%s' is shallow"
+msgstr "le dépôt de référence '%s' est superficiel"
 
-#: parse-options-cb.c:54
+#: object-file.c:754
 #, c-format
-msgid "option `%s' expects \"always\", \"auto\", or \"never\""
-msgstr "l'option '%s' attend \"always\", \"auto\" ou \"never\""
+msgid "reference repository '%s' is grafted"
+msgstr "le dépôt de référence '%s' est greffé"
 
-#: parse-options-cb.c:132 parse-options-cb.c:149
+#: object-file.c:814
 #, c-format
-msgid "malformed object name '%s'"
-msgstr "nom d'objet malformé '%s'"
+msgid "invalid line while parsing alternate refs: %s"
+msgstr "ligne invalide pendant l'analyse des refs alternatives : %s"
 
-#: parse-options.c:38
+#: object-file.c:964
 #, c-format
-msgid "%s requires a value"
-msgstr "%s a besoin d'une valeur"
+msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
+msgstr "essai de mmap %<PRIuMAX> au delà de la limite %<PRIuMAX>"
 
-#: parse-options.c:73
-#, c-format
-msgid "%s is incompatible with %s"
-msgstr "%s est incompatible avec %s"
+#: object-file.c:985
+msgid "mmap failed"
+msgstr "échec de mmap"
 
-#: parse-options.c:78
+#: object-file.c:1149
 #, c-format
-msgid "%s : incompatible with something else"
-msgstr "%s est incompatible avec toute autre option"
+msgid "object file %s is empty"
+msgstr "le fichier objet %s est vide"
 
-#: parse-options.c:92 parse-options.c:96 parse-options.c:317
+#: object-file.c:1284 object-file.c:2477
 #, c-format
-msgid "%s takes no value"
-msgstr "%s n'accepte aucune valeur"
+msgid "corrupt loose object '%s'"
+msgstr "objet libre corrompu '%s'"
 
-#: parse-options.c:94
+#: object-file.c:1286 object-file.c:2481
 #, c-format
-msgid "%s isn't available"
-msgstr "%s n'est pas disponible"
+msgid "garbage at end of loose object '%s'"
+msgstr "données incorrectes à la fin de l'objet libre '%s'"
 
-#: parse-options.c:217
-#, c-format
-msgid "%s expects a non-negative integer value with an optional k/m/g suffix"
-msgstr "%s attend une valeur entière non négative avec une suffixe k/m/g"
+#: object-file.c:1328
+msgid "invalid object type"
+msgstr "type d'objet invalide"
 
-#: parse-options.c:386
+#: object-file.c:1412
 #, c-format
-msgid "ambiguous option: %s (could be --%s%s or --%s%s)"
-msgstr "option ambigüe : %s (devrait être --%s%s ou --%s%s)"
+msgid "unable to unpack %s header with --allow-unknown-type"
+msgstr "impossible de dépaqueter l'entête %s avec --allow-unknow-type"
 
-#: parse-options.c:420 parse-options.c:428
+#: object-file.c:1415
 #, c-format
-msgid "did you mean `--%s` (with two dashes)?"
-msgstr "vouliez-vous dire `--%s` (avec deux signes moins)?"
+msgid "unable to unpack %s header"
+msgstr "impossible de dépaqueter l'entête %s"
 
-#: parse-options.c:666 parse-options.c:971
+#: object-file.c:1421
 #, c-format
-msgid "alias of --%s"
-msgstr "alias pour --%s"
+msgid "unable to parse %s header with --allow-unknown-type"
+msgstr "impossible d'analyser l'entête %s avec --allow-unknow-type"
 
-#: parse-options.c:862
+#: object-file.c:1424
 #, c-format
-msgid "unknown option `%s'"
-msgstr "option inconnue « %s »"
+msgid "unable to parse %s header"
+msgstr "impossible d'analyser l'entête %s"
 
-#: parse-options.c:864
+#: object-file.c:1651
 #, c-format
-msgid "unknown switch `%c'"
-msgstr "bascule inconnue « %c »"
+msgid "failed to read object %s"
+msgstr "impossible de lire l'objet %s"
 
-#: parse-options.c:866
+#: object-file.c:1655
 #, c-format
-msgid "unknown non-ascii option in string: `%s'"
-msgstr "option non-ascii inconnue dans la chaîne : '%s'"
-
-#: parse-options.c:890
-msgid "..."
-msgstr "..."
+msgid "replacement %s not found for %s"
+msgstr "remplacement %s non trouvé pour %s"
 
-#: parse-options.c:909
+#: object-file.c:1659
 #, c-format
-msgid "usage: %s"
-msgstr "usage : %s"
+msgid "loose object %s (stored in %s) is corrupt"
+msgstr "l'objet libre %s (stocké dans %s) est corrompu"
 
-#. TRANSLATORS: the colon here should align with the
-#. one in "usage: %s" translation.
-#.
-#: parse-options.c:915
+#: object-file.c:1663
 #, c-format
-msgid "   or: %s"
-msgstr "   ou : %s"
+msgid "packed object %s (stored in %s) is corrupt"
+msgstr "l'objet empaqueté %s (stocké dans %s) est corrompu"
 
-#: parse-options.c:918
+#: object-file.c:1768
 #, c-format
-msgid "    %s"
-msgstr "    %s"
-
-#: parse-options.c:957
-msgid "-NUM"
-msgstr "-NUM"
+msgid "unable to write file %s"
+msgstr "impossible d'écrire le fichier %s"
 
-#: path.c:915
+#: object-file.c:1775
 #, c-format
-msgid "Could not make %s writable by group"
-msgstr "Impossible de rendre %s inscriptible pour le groupe"
-
-#: pathspec.c:130
-msgid "Escape character '\\' not allowed as last character in attr value"
-msgstr ""
-"Le caractère d'échappement '\\\\' interdit comme dernier caractère dans une "
-"valeur d'attribut"
+msgid "unable to set permission to '%s'"
+msgstr "impossible de régler les droits de '%s'"
 
-#: pathspec.c:148
-msgid "Only one 'attr:' specification is allowed."
-msgstr "Une seule spécification 'attr:' est autorisée."
+#: object-file.c:1782
+msgid "file write error"
+msgstr "erreur d'écriture d'un fichier"
 
-#: pathspec.c:151
-msgid "attr spec must not be empty"
-msgstr "un spécificateur d'attribut ne peut pas être vide"
+#: object-file.c:1802
+msgid "error when closing loose object file"
+msgstr "erreur en fermeture du fichier d'objet esseulé"
 
-#: pathspec.c:194
+#: object-file.c:1867
 #, c-format
-msgid "invalid attribute name %s"
-msgstr "nom d'attribut invalide %s"
-
-#: pathspec.c:259
-msgid "global 'glob' and 'noglob' pathspec settings are incompatible"
+msgid "insufficient permission for adding an object to repository database %s"
 msgstr ""
-"les réglages de spécificateurs de chemin généraux 'glob' et 'noglob' sont "
-"incompatibles"
+"droits insuffisants pour ajouter un objet à la base de données %s du dépôt"
 
-#: pathspec.c:266
-msgid ""
-"global 'literal' pathspec setting is incompatible with all other global "
-"pathspec settings"
-msgstr ""
-"le réglage global de spécificateur de chemin 'literal' est incompatible avec "
-"tous les autres réglages globaux de spécificateur de chemin"
+#: object-file.c:1869
+msgid "unable to create temporary file"
+msgstr "impossible de créer un fichier temporaire"
 
-#: pathspec.c:306
-msgid "invalid parameter for pathspec magic 'prefix'"
-msgstr "paramètre invalide pour le spécificateur magique de chemin 'prefix'"
+#: object-file.c:1893
+msgid "unable to write loose object file"
+msgstr "impossible d'écrire le fichier d'objet esseulé"
 
-#: pathspec.c:327
+#: object-file.c:1899
 #, c-format
-msgid "Invalid pathspec magic '%.*s' in '%s'"
-msgstr "La spécification magique de chemin '%.*s' est invalide dans '%s'"
+msgid "unable to deflate new object %s (%d)"
+msgstr "impossible de compresser le nouvel objet %s (%d)"
 
-#: pathspec.c:332
+#: object-file.c:1903
 #, c-format
-msgid "Missing ')' at the end of pathspec magic in '%s'"
-msgstr "')' manquante à la fin du spécificateur magique de chemin dans '%s'"
+msgid "deflateEnd on object %s failed (%d)"
+msgstr "échec de deflateEnd sur l'objet %s (%d)"
 
-#: pathspec.c:370
+#: object-file.c:1907
 #, c-format
-msgid "Unimplemented pathspec magic '%c' in '%s'"
-msgstr "Spécificateur magique '%c' non implémenté dans '%s'"
+msgid "confused by unstable object source data for %s"
+msgstr "données de source d'objet instable pour %s"
 
-#: pathspec.c:429
+#: object-file.c:1917 builtin/pack-objects.c:1097
 #, c-format
-msgid "%s: 'literal' and 'glob' are incompatible"
-msgstr "%s : 'literal' et 'glob' sont incompatibles"
+msgid "failed utime() on %s"
+msgstr "échec de utime() sur %s"
 
-#: pathspec.c:445
+#: object-file.c:1994
 #, c-format
-msgid "%s: '%s' is outside repository at '%s'"
-msgstr "%s : '%s' est hors du dépôt à '%s'"
+msgid "cannot read object for %s"
+msgstr "impossible de lire l'objet pour %s"
 
-#: pathspec.c:521
+#: object-file.c:2045
+msgid "corrupt commit"
+msgstr "commit corrompu"
+
+#: object-file.c:2053
+msgid "corrupt tag"
+msgstr "étiquette corrompue"
+
+#: object-file.c:2153
 #, c-format
-msgid "'%s' (mnemonic: '%c')"
-msgstr "'%s' (mnémonique : '%c')"
+msgid "read error while indexing %s"
+msgstr "erreur de lecture à l'indexation de %s"
 
-#: pathspec.c:531
+#: object-file.c:2156
 #, c-format
-msgid "%s: pathspec magic not supported by this command: %s"
-msgstr ""
-"%s : le spécificateur magique de chemin n'est pas supporté par cette "
-"commande : %s"
+msgid "short read while indexing %s"
+msgstr "lecture tronquée pendant l'indexation de %s"
 
-#: pathspec.c:598
+#: object-file.c:2229 object-file.c:2239
 #, c-format
-msgid "pathspec '%s' is beyond a symbolic link"
-msgstr "le chemin '%s' est au-delà d'un lien symbolique"
+msgid "%s: failed to insert into database"
+msgstr "%s : échec de l'insertion dans la base de données"
 
-#: pathspec.c:643
+#: object-file.c:2245
 #, c-format
-msgid "line is badly quoted: %s"
-msgstr "la ligne est mal citée : %s"
+msgid "%s: unsupported file type"
+msgstr "%s : type de fichier non supporté"
 
-#: pkt-line.c:92
-msgid "unable to write flush packet"
-msgstr "impossible d'écrire le paquet de vidage"
+#: object-file.c:2269
+#, c-format
+msgid "%s is not a valid object"
+msgstr "%s n'est pas un objet valide"
 
-#: pkt-line.c:99
-msgid "unable to write delim packet"
-msgstr "impossible d'écrire le paquet de délimitation"
+#: object-file.c:2271
+#, c-format
+msgid "%s is not a valid '%s' object"
+msgstr "%s n'est pas un objet '%s' valide"
 
-#: pkt-line.c:106
-msgid "unable to write stateless separator packet"
-msgstr "impossible d'écrire le paquet de séparateur sans état"
+#: object-file.c:2298 builtin/index-pack.c:192
+#, c-format
+msgid "unable to open %s"
+msgstr "impossible d'ouvrir %s"
 
-#: pkt-line.c:113
-msgid "flush packet write failed"
-msgstr "échec de l'écriture du vidage de paquet"
+#: object-file.c:2488 object-file.c:2541
+#, c-format
+msgid "hash mismatch for %s (expected %s)"
+msgstr "incohérence de hachage pour %s (%s attendu)"
 
-#: pkt-line.c:153 pkt-line.c:239
-msgid "protocol error: impossibly long line"
-msgstr "erreur de protocole : ligne impossiblement trop longue"
+#: object-file.c:2512
+#, c-format
+msgid "unable to mmap %s"
+msgstr "impossible de mmap %s"
 
-#: pkt-line.c:169 pkt-line.c:171
-msgid "packet write with format failed"
-msgstr "échec de l'écriture d'un paquet avec format"
+#: object-file.c:2517
+#, c-format
+msgid "unable to unpack header of %s"
+msgstr "impossible de dépaqueter l'entête de %s"
 
-#: pkt-line.c:203
-msgid "packet write failed - data exceeds max packet size"
-msgstr ""
-"échec de l'écriture d'un paquet ‑ les données dépassent la taille maximale "
-"d'un paquet"
+#: object-file.c:2523
+#, c-format
+msgid "unable to parse header of %s"
+msgstr "impossible d'analyser l'entête de %s"
 
-#: pkt-line.c:210 pkt-line.c:217
-msgid "packet write failed"
-msgstr "échec de l'écriture d'un paquet"
+#: object-file.c:2534
+#, c-format
+msgid "unable to unpack contents of %s"
+msgstr "impossible de dépaqueter le contenu de %s"
 
-#: pkt-line.c:302
-msgid "read error"
-msgstr "erreur de lecture"
+#: object-name.c:486
+#, c-format
+msgid "short object ID %s is ambiguous"
+msgstr "l'id court d'objet %s est ambigu"
 
-#: pkt-line.c:310
-msgid "the remote end hung up unexpectedly"
-msgstr "L'hôte distant a fermé la connexion de manière inattendue"
+#: object-name.c:497
+msgid "The candidates are:"
+msgstr "Les candidats sont :"
 
-#: pkt-line.c:338
-#, c-format
-msgid "protocol error: bad line length character: %.4s"
-msgstr "erreur de protocole : mauvais caractère de longueur de ligne : %.4s"
+#: object-name.c:796
+msgid ""
+"Git normally never creates a ref that ends with 40 hex characters\n"
+"because it will be ignored when you just specify 40-hex. These refs\n"
+"may be created by mistake. For example,\n"
+"\n"
+"  git switch -c $br $(git rev-parse ...)\n"
+"\n"
+"where \"$br\" is somehow empty and a 40-hex ref is created. Please\n"
+"examine these refs and maybe delete them. Turn this message off by\n"
+"running \"git config advice.objectNameWarning false\""
+msgstr ""
+"Git ne crée normalement jamais de référence qui se termine par 40\n"
+"caractères hexa car elle serait ignorée si vous spécifiez juste\n"
+"40-hexa. Ces références peuvent être créées par erreur. Par exemple,\n"
+"\n"
+"  git switch -c $br $(git rev-parse ...)\n"
+"\n"
+"où \"$br\" est d'une manière ou d'une autre vide et une référence 40-hexa "
+"est créée.\n"
+"Veuillez examiner ces références et peut-être les supprimer. Désactivez ce "
+"message\n"
+"en lançant \"git config advice.objectNameWarning false\""
 
-#: pkt-line.c:352 pkt-line.c:357
+#: object-name.c:916
 #, c-format
-msgid "protocol error: bad line length %d"
-msgstr "erreur de protocole : mauvaise longueur de ligne %d"
+msgid "log for '%.*s' only goes back to %s"
+msgstr "le journal de '%.*s' ne remonte qu'à %s"
 
-#: pkt-line.c:373 sideband.c:165
+#: object-name.c:924
 #, c-format
-msgid "remote error: %s"
-msgstr "erreur distante : %s"
-
-#: preload-index.c:119
-msgid "Refreshing index"
-msgstr "Rafraîchissement de l'index"
+msgid "log for '%.*s' only has %d entries"
+msgstr "le journal de '%.*s' n'a que %d entrées"
 
-#: preload-index.c:138
+#: object-name.c:1702
 #, c-format
-msgid "unable to create threaded lstat: %s"
-msgstr "impossible de créer le lstat en fil : %s"
-
-#: pretty.c:983
-msgid "unable to parse --pretty format"
-msgstr "impossible d'analyser le format --pretty"
+msgid "path '%s' exists on disk, but not in '%.*s'"
+msgstr "le chemin '%s' existe sur le disque, mais pas dans '%.*s'"
 
-#: promisor-remote.c:30
-msgid "promisor-remote: unable to fork off fetch subprocess"
+#: object-name.c:1708
+#, c-format
+msgid ""
+"path '%s' exists, but not '%s'\n"
+"hint: Did you mean '%.*s:%s' aka '%.*s:./%s'?"
 msgstr ""
-"promisor-remote : impossible de créer un sous-processus de récupération"
+"le chemin '%s' existe, mais pas '%s'\n"
+"conseil : peut-être vouliez-vous dire '%.*s:%s', soit '%.*s:./%s'"
 
-#: promisor-remote.c:35 promisor-remote.c:37
-msgid "promisor-remote: could not write to fetch subprocess"
+#: object-name.c:1717
+#, c-format
+msgid "path '%s' does not exist in '%.*s'"
+msgstr "le chemin '%s' n'existe pas dans '%.*s'"
+
+#: object-name.c:1745
+#, c-format
+msgid ""
+"path '%s' is in the index, but not at stage %d\n"
+"hint: Did you mean ':%d:%s'?"
 msgstr ""
-"promisor-remote : impossible d'écrire vers un sous-processus de récupération"
+"le chemin '%s' est dans l'index, mais pas à l'étape %d\n"
+"conseil : vous vouliez peut-être dire ':%d:%s' ?"
 
-#: promisor-remote.c:41
-msgid "promisor-remote: could not close stdin to fetch subprocess"
+#: object-name.c:1761
+#, c-format
+msgid ""
+"path '%s' is in the index, but not '%s'\n"
+"hint: Did you mean ':%d:%s' aka ':%d:./%s'?"
 msgstr ""
-"promisor-remote : impossible de fermer l'entrée standard du sous-processus "
-"de récupération"
+"le chemin '%s' est dans l'index, mais pas '%s'\n"
+"conseil : peut-être vouliez-vous dire ':%d:%s', soit '%d:./%s'"
 
-#: promisor-remote.c:53
+#: object-name.c:1769
 #, c-format
-msgid "promisor remote name cannot begin with '/': %s"
-msgstr "un nom de prometteur distant ne peut pas commencer par '/' : %s"
+msgid "path '%s' exists on disk, but not in the index"
+msgstr "le chemin '%s' existe sur le disque, mais pas dans l'index"
 
-#: prune-packed.c:35
-msgid "Removing duplicate objects"
-msgstr "Suppression des objets dupliqués"
+#: object-name.c:1771
+#, c-format
+msgid "path '%s' does not exist (neither on disk nor in the index)"
+msgstr "le chemin '%s' n'existe pas (ni sur le disque, ni dans l'index)"
 
-#: range-diff.c:77
-msgid "could not start `log`"
-msgstr "impossible de démarrer `log`"
+#: object-name.c:1784
+msgid "relative path syntax can't be used outside working tree"
+msgstr ""
+"la syntaxe de chemin relatif ne peut pas être utilisée hors de l'arbre de "
+"travail"
 
-#: range-diff.c:79
-msgid "could not read `log` output"
-msgstr "impossible de lire la sortie de `log`"
+#: object-name.c:1922
+#, c-format
+msgid "invalid object name '%.*s'."
+msgstr "nom d'objet invalide : '%.*s'."
 
-#: range-diff.c:98 sequencer.c:5310
+#: object.c:53
 #, c-format
-msgid "could not parse commit '%s'"
-msgstr "impossible d'analyser le commit '%s'"
+msgid "invalid object type \"%s\""
+msgstr "type d'objet invalide \"%s\""
 
-#: range-diff.c:112
+#: object.c:173
 #, c-format
-msgid ""
-"could not parse first line of `log` output: did not start with 'commit ': "
-"'%s'"
-msgstr ""
-"impossible d'analyser la première ligne de la sortie de `log` : ne commence "
-"pas par 'commit' : '%s'"
+msgid "object %s is a %s, not a %s"
+msgstr "l'objet %s est de type %s, pas de type %s"
 
-#: range-diff.c:137
+#: object.c:233
 #, c-format
-msgid "could not parse git header '%.*s'"
-msgstr "impossible d'analyser l'entête git '%.*s'"
+msgid "object %s has unknown type id %d"
+msgstr "l'objet %s a un id de type inconnu %d"
 
-#: range-diff.c:299
-msgid "failed to generate diff"
-msgstr "échec de la génération de diff"
+#: object.c:246
+#, c-format
+msgid "unable to parse object: %s"
+msgstr "impossible d'analyser l'objet : %s"
 
-#: range-diff.c:532 range-diff.c:534
+#: object.c:266 object.c:278
 #, c-format
-msgid "could not parse log for '%s'"
-msgstr "impossible d'analyser le journal pour '%s'"
+msgid "hash mismatch %s"
+msgstr "incohérence de hachage %s"
 
-#: read-cache.c:682
+#: pack-bitmap.c:843 pack-bitmap.c:849 builtin/pack-objects.c:2226
 #, c-format
-msgid "will not add file alias '%s' ('%s' already exists in index)"
-msgstr "pas d'ajout d'alias de fichier '%s'(« %s » existe déjà dans l'index)"
+msgid "unable to get size of %s"
+msgstr "impossible de récupérer la taille de %s"
 
-#: read-cache.c:698
-msgid "cannot create an empty blob in the object database"
-msgstr "impossible de créer un blob vide dans la base de donnée d'objets"
+#: pack-bitmap.c:1489 builtin/rev-list.c:92
+#, c-format
+msgid "unable to get disk usage of %s"
+msgstr "impossible de récupérer l'utilisation du disque de %s"
 
-#: read-cache.c:720
+#: pack-revindex.c:220
 #, c-format
-msgid "%s: can only add regular files, symbolic links or git-directories"
-msgstr ""
-"%s : ne peut ajouter que des fichiers normaux, des liens symboliques ou des "
-"répertoires git"
+msgid "reverse-index file %s is too small"
+msgstr "le fichier d'index inversé %s est trop petit"
 
-#: read-cache.c:725
+#: pack-revindex.c:225
 #, c-format
-msgid "'%s' does not have a commit checked out"
-msgstr "'%s' n'a pas de commit extrait"
+msgid "reverse-index file %s is corrupt"
+msgstr "le fichier d'index inversé %s est corrompu"
 
-#: read-cache.c:777
+#: pack-revindex.c:233
 #, c-format
-msgid "unable to index file '%s'"
-msgstr "indexation du fichier '%s' impossible"
+msgid "reverse-index file %s has unknown signature"
+msgstr "le fichier d'index inversé %s a une signature inconnue"
 
-#: read-cache.c:796
+#: pack-revindex.c:237
 #, c-format
-msgid "unable to add '%s' to index"
-msgstr "impossible d'ajouter '%s' à l'index"
+msgid "reverse-index file %s has unsupported version %<PRIu32>"
+msgstr "le fichier d'index inverse %s a une version non gérée %<PRIu32>"
 
-#: read-cache.c:807
+#: pack-revindex.c:242
 #, c-format
-msgid "unable to stat '%s'"
-msgstr "fstat de '%s' impossible"
+msgid "reverse-index file %s has unsupported hash id %<PRIu32>"
+msgstr "le fichier d'index inverse %s a un id d'empreinte non géré %<PRIu32>"
 
-#: read-cache.c:1318
+#: pack-write.c:236
+msgid "cannot both write and verify reverse index"
+msgstr "impossible de lire et vérifier à la fois l'index inverse"
+
+#: pack-write.c:257
 #, c-format
-msgid "'%s' appears as both a file and as a directory"
-msgstr "'%s' existe à la fois comme un fichier et un répertoire"
+msgid "could not stat: %s"
+msgstr "stat impossible de %s"
 
-#: read-cache.c:1524
-msgid "Refresh index"
-msgstr "Rafraîchir l'index"
+#: pack-write.c:269
+#, c-format
+msgid "failed to make %s readable"
+msgstr "échec de rendre %s lisible"
 
-#: read-cache.c:1639
+#: pack-write.c:508
 #, c-format
-msgid ""
-"index.version set, but the value is invalid.\n"
-"Using version %i"
-msgstr ""
-"version d'index renseignée, mais la valeur est invalide.\n"
-"Utilisation de la version %i"
+msgid "could not write '%s' promisor file"
+msgstr "impossible d'écrire le fichier de prometteur '%s'"
 
-#: read-cache.c:1649
-#, c-format
-msgid ""
-"GIT_INDEX_VERSION set, but the value is invalid.\n"
-"Using version %i"
-msgstr ""
-"GIT_INDEX_VERSION est renseigné, mais la valeur est invalide.\n"
-"Utilisation de la version %i"
+#: packfile.c:625
+msgid "offset before end of packfile (broken .idx?)"
+msgstr "offset avant la fin du fichier paquet (.idx cassé ?)"
 
-#: read-cache.c:1705
+#: packfile.c:1934
 #, c-format
-msgid "bad signature 0x%08x"
-msgstr "signature incorrecte 0x%08x"
+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 ?)"
 
-#: read-cache.c:1708
+#: packfile.c:1938
 #, c-format
-msgid "bad index version %d"
-msgstr "mauvaise version d'index %d"
-
-#: read-cache.c:1717
-msgid "bad index file sha1 signature"
-msgstr "mauvaise signature sha1 d'index"
+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é ?)"
 
-#: read-cache.c:1747
+#: parse-options-cb.c:20 parse-options-cb.c:24
 #, c-format
-msgid "index uses %.4s extension, which we do not understand"
-msgstr "l'index utilise l'extension %.4s qui n'est pas comprise"
+msgid "option `%s' expects a numerical value"
+msgstr "l'option '%s' attend une valeur numérique"
 
-#: read-cache.c:1749
+#: parse-options-cb.c:41
 #, c-format
-msgid "ignoring %.4s extension"
-msgstr "extension %.4s ignorée"
+msgid "malformed expiration date '%s'"
+msgstr "date d'expiration malformée : '%s'"
 
-#: read-cache.c:1786
+#: parse-options-cb.c:54
 #, c-format
-msgid "unknown index entry format 0x%08x"
-msgstr "format d'entrée d'index inconnu 0x%08x"
+msgid "option `%s' expects \"always\", \"auto\", or \"never\""
+msgstr "l'option '%s' attend \"always\", \"auto\" ou \"never\""
 
-#: read-cache.c:1802
+#: parse-options-cb.c:132 parse-options-cb.c:149
 #, c-format
-msgid "malformed name field in the index, near path '%s'"
-msgstr "champ de nom malformé dans l'index, près du chemin '%s'"
-
-#: read-cache.c:1859
-msgid "unordered stage entries in index"
-msgstr "entrées de préparation non ordonnées dans l'index"
+msgid "malformed object name '%s'"
+msgstr "nom d'objet malformé '%s'"
 
-#: read-cache.c:1862
+#: parse-options.c:38
 #, c-format
-msgid "multiple stage entries for merged file '%s'"
-msgstr "entrées multiples de préparation pour le fichier fusionné '%s'"
+msgid "%s requires a value"
+msgstr "%s a besoin d'une valeur"
 
-#: read-cache.c:1865
+#: parse-options.c:73
 #, c-format
-msgid "unordered stage entries for '%s'"
-msgstr "entrées de préparation non ordonnées pour '%s'"
-
-#: read-cache.c:1971 read-cache.c:2262 rerere.c:565 rerere.c:599 rerere.c:1111
-#: submodule.c:1628 builtin/add.c:538 builtin/check-ignore.c:181
-#: builtin/checkout.c:502 builtin/checkout.c:688 builtin/clean.c:991
-#: builtin/commit.c:364 builtin/diff-tree.c:122 builtin/grep.c:507
-#: builtin/mv.c:146 builtin/reset.c:247 builtin/rm.c:290
-#: builtin/submodule--helper.c:332
-msgid "index file corrupt"
-msgstr "fichier d'index corrompu"
+msgid "%s is incompatible with %s"
+msgstr "%s est incompatible avec %s"
 
-#: read-cache.c:2115
+#: parse-options.c:78
 #, c-format
-msgid "unable to create load_cache_entries thread: %s"
-msgstr "impossible de créer le fil load_cache_entries : %s"
+msgid "%s : incompatible with something else"
+msgstr "%s est incompatible avec toute autre option"
 
-#: read-cache.c:2128
+#: parse-options.c:92 parse-options.c:96 parse-options.c:317
 #, c-format
-msgid "unable to join load_cache_entries thread: %s"
-msgstr "impossible de joindre le fil load_cach_entries : %s"
+msgid "%s takes no value"
+msgstr "%s n'accepte aucune valeur"
 
-#: read-cache.c:2161
+#: parse-options.c:94
 #, c-format
-msgid "%s: index file open failed"
-msgstr "%s : l'ouverture du fichier d'index a échoué"
+msgid "%s isn't available"
+msgstr "%s n'est pas disponible"
 
-#: read-cache.c:2165
+#: parse-options.c:217
 #, c-format
-msgid "%s: cannot stat the open index"
-msgstr "%s : impossible de faire un stat sur l'index ouvert"
+msgid "%s expects a non-negative integer value with an optional k/m/g suffix"
+msgstr "%s attend une valeur entière non négative avec une suffixe k/m/g"
 
-#: read-cache.c:2169
+#: parse-options.c:386
 #, c-format
-msgid "%s: index file smaller than expected"
-msgstr "%s : fichier d'index plus petit qu'attendu"
+msgid "ambiguous option: %s (could be --%s%s or --%s%s)"
+msgstr "option ambigüe : %s (devrait être --%s%s ou --%s%s)"
 
-#: read-cache.c:2173
+#: parse-options.c:420 parse-options.c:428
 #, c-format
-msgid "%s: unable to map index file"
-msgstr "%s : impossible de mapper le fichier d'index"
+msgid "did you mean `--%s` (with two dashes)?"
+msgstr "vouliez-vous dire `--%s` (avec deux signes moins)?"
 
-#: read-cache.c:2215
+#: parse-options.c:666 parse-options.c:971
 #, c-format
-msgid "unable to create load_index_extensions thread: %s"
-msgstr "impossible de créer le fil load_index_extensions : %s"
+msgid "alias of --%s"
+msgstr "alias pour --%s"
 
-#: read-cache.c:2242
+#: parse-options.c:862
 #, c-format
-msgid "unable to join load_index_extensions thread: %s"
-msgstr "impossible de joindre le fil load_index_extensions : %s"
+msgid "unknown option `%s'"
+msgstr "option inconnue « %s »"
 
-#: read-cache.c:2274
+#: parse-options.c:864
 #, c-format
-msgid "could not freshen shared index '%s'"
-msgstr "impossible de rafraîchir l'index partagé '%s'"
+msgid "unknown switch `%c'"
+msgstr "bascule inconnue « %c »"
 
-#: read-cache.c:2321
+#: parse-options.c:866
 #, c-format
-msgid "broken index, expect %s in %s, got %s"
-msgstr "index cassé, %s attendu dans %s, %s obtenu"
+msgid "unknown non-ascii option in string: `%s'"
+msgstr "option non-ascii inconnue dans la chaîne : '%s'"
 
-#: read-cache.c:3017 strbuf.c:1171 wrapper.c:633 builtin/merge.c:1140
-#, c-format
-msgid "could not close '%s'"
-msgstr "impossible de fermer '%s'"
+#: parse-options.c:890
+msgid "..."
+msgstr "..."
 
-#: read-cache.c:3120 sequencer.c:2479 sequencer.c:4231
+#: parse-options.c:909
 #, c-format
-msgid "could not stat '%s'"
-msgstr "stat impossible de '%s'"
+msgid "usage: %s"
+msgstr "usage : %s"
 
-#: read-cache.c:3133
+#. TRANSLATORS: the colon here should align with the
+#. one in "usage: %s" translation.
+#.
+#: parse-options.c:915
 #, c-format
-msgid "unable to open git dir: %s"
-msgstr "impossible d'ouvrir le répertoire git : %s"
+msgid "   or: %s"
+msgstr "   ou : %s"
 
-#: read-cache.c:3145
+#: parse-options.c:918
 #, c-format
-msgid "unable to unlink: %s"
-msgstr "échec lors de l'unlink : %s"
+msgid "    %s"
+msgstr "    %s"
 
-#: read-cache.c:3170
-#, c-format
-msgid "cannot fix permission bits on '%s'"
-msgstr "impossible de régler les bits de droit de '%s'"
+#: parse-options.c:957
+msgid "-NUM"
+msgstr "-NUM"
 
-#: read-cache.c:3319
+#: path.c:915
 #, c-format
-msgid "%s: cannot drop to stage #0"
-msgstr "%s : impossible de revenir à l'étape 0"
+msgid "Could not make %s writable by group"
+msgstr "Impossible de rendre %s inscriptible pour le groupe"
 
-#: rebase-interactive.c:11
-msgid ""
-"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"
+#: pathspec.c:130
+msgid "Escape character '\\' not allowed as last character in attr value"
 msgstr ""
-"Vous pouvez corriger ceci avec 'git rebase --edit-todo' puis lancez 'git "
-"rebase --continue'.\n"
-"Ou vous pouvez abandonner le rebasage avec 'git rebase --abort'.\n"
+"Le caractère d'échappement '\\\\' interdit comme dernier caractère dans une "
+"valeur d'attribut"
 
-#: rebase-interactive.c:33
-#, c-format
-msgid ""
-"unrecognized setting %s for option rebase.missingCommitsCheck. Ignoring."
-msgstr ""
-"paramètre non reconnu %s pour l'option rebase.missingCommitsCheck. Ignoré."
+#: pathspec.c:148
+msgid "Only one 'attr:' specification is allowed."
+msgstr "Une seule spécification 'attr:' est autorisée."
 
-#: rebase-interactive.c:42
-msgid ""
-"\n"
-"Commands:\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"
-"b, break = stop here (continue rebase later with 'git rebase --continue')\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 <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"
-" b, break = s'arrêter ici (on peut continuer ensuite avec 'git rebase --"
-"continue')\n"
-" d, drop <commit> = supprimer le commit\n"
-" l, label <label> = étiqueter la HEAD courante avec un nom\n"
-" t, reset <label> = réinitialiser HEAD à label\n"
-" 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"
+#: pathspec.c:151
+msgid "attr spec must not be empty"
+msgstr "un spécificateur d'attribut ne peut pas être vide"
 
-#: rebase-interactive.c:63
+#: pathspec.c:194
 #, c-format
-msgid "Rebase %s onto %s (%d command)"
-msgid_plural "Rebase %s onto %s (%d commands)"
-msgstr[0] "Rebasage de %s sur %s (%d commande)"
-msgstr[1] "Rebasage de %s sur %s (%d commandes)"
+msgid "invalid attribute name %s"
+msgstr "nom d'attribut invalide %s"
 
-#: rebase-interactive.c:72 git-rebase--preserve-merges.sh:218
-msgid ""
-"\n"
-"Do not remove any line. Use 'drop' explicitly to remove a commit.\n"
+#: pathspec.c:259
+msgid "global 'glob' and 'noglob' pathspec settings are incompatible"
 msgstr ""
-"\n"
-"Ne supprimez aucune ligne. Utilisez 'drop' explicitement pour supprimer un "
-"commit.\n"
+"les réglages de spécificateurs de chemin généraux 'glob' et 'noglob' sont "
+"incompatibles"
 
-#: rebase-interactive.c:75 git-rebase--preserve-merges.sh:222
+#: pathspec.c:266
 msgid ""
-"\n"
-"If you remove a line here THAT COMMIT WILL BE LOST.\n"
+"global 'literal' pathspec setting is incompatible with all other global "
+"pathspec settings"
 msgstr ""
-"\n"
-"Si vous éliminez une ligne ici, LE COMMIT CORRESPONDANT SERA PERDU.\n"
+"le réglage global de spécificateur de chemin 'literal' est incompatible avec "
+"tous les autres réglages globaux de spécificateur de chemin"
 
-#: rebase-interactive.c:81 git-rebase--preserve-merges.sh:861
-msgid ""
-"\n"
-"You are editing the todo file of an ongoing interactive rebase.\n"
-"To continue rebase after editing, run:\n"
-"    git rebase --continue\n"
-"\n"
-msgstr ""
-"\n"
-"Vous êtes en train d'éditer le fichier todo d'un rebasage interactif en "
-"cours.\n"
-"Pour continuer le rebasage après édition, lancez :\n"
-"    git rebase --continue\n"
-"\n"
-
-#: rebase-interactive.c:86 git-rebase--preserve-merges.sh:938
-msgid ""
-"\n"
-"However, if you remove everything, the rebase will be aborted.\n"
-"\n"
-msgstr ""
-"\n"
-"Cependant, si vous effacez tout, le rebasage sera annulé.\n"
-"\n"
+#: pathspec.c:306
+msgid "invalid parameter for pathspec magic 'prefix'"
+msgstr "paramètre invalide pour le spécificateur magique de chemin 'prefix'"
 
-#: rebase-interactive.c:110 rerere.c:485 rerere.c:692 sequencer.c:3607
-#: sequencer.c:3633 sequencer.c:5416 builtin/fsck.c:347 builtin/rebase.c:270
+#: pathspec.c:327
 #, c-format
-msgid "could not write '%s'"
-msgstr "impossible d'écrire '%s'"
+msgid "Invalid pathspec magic '%.*s' in '%s'"
+msgstr "La spécification magique de chemin '%.*s' est invalide dans '%s'"
 
-#: rebase-interactive.c:116 builtin/rebase.c:202 builtin/rebase.c:228
-#: builtin/rebase.c:252
+#: pathspec.c:332
 #, c-format
-msgid "could not write '%s'."
-msgstr "impossible d'écrire '%s'."
+msgid "Missing ')' at the end of pathspec magic in '%s'"
+msgstr "')' manquante à la fin du spécificateur magique de chemin dans '%s'"
 
-#: rebase-interactive.c:193
+#: pathspec.c:370
 #, c-format
-msgid ""
-"Warning: some commits may have been dropped accidentally.\n"
-"Dropped commits (newer to older):\n"
-msgstr ""
-"Attention : certains commits ont pu être accidentellement supprimés.\n"
-"Commits supprimés (du plus jeune au plus vieux) :\n"
+msgid "Unimplemented pathspec magic '%c' in '%s'"
+msgstr "Spécificateur magique '%c' non implémenté dans '%s'"
 
-#: rebase-interactive.c:200
+#: pathspec.c:429
 #, c-format
-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"
-"The possible behaviours are: ignore, warn, error.\n"
-"\n"
-msgstr ""
-"Pour éviter ce message, utilisez \"drop\" pour supprimer explicitement un "
-"commit.\n"
-"\n"
-"Utilisez 'git config rebase.missingCommitsCheck' pour changer le niveau "
-"d'avertissements.\n"
-"Les comportements disponibles sont : ignore, warn, error.\n"
-"\n"
+msgid "%s: 'literal' and 'glob' are incompatible"
+msgstr "%s : 'literal' et 'glob' sont incompatibles"
 
-#: rebase-interactive.c:233 rebase-interactive.c:238 sequencer.c:2394
-#: builtin/rebase.c:188 builtin/rebase.c:213 builtin/rebase.c:239
-#: builtin/rebase.c:264
+#: pathspec.c:445
 #, c-format
-msgid "could not read '%s'."
-msgstr "impossible de lire '%s'."
-
-# à priori on parle d'une branche ici
-#: ref-filter.c:42 wt-status.c:1973
-msgid "gone"
-msgstr "disparue"
+msgid "%s: '%s' is outside repository at '%s'"
+msgstr "%s : '%s' est hors du dépôt à '%s'"
 
-#: ref-filter.c:43
+#: pathspec.c:521
 #, c-format
-msgid "ahead %d"
-msgstr "en avance de %d"
+msgid "'%s' (mnemonic: '%c')"
+msgstr "'%s' (mnémonique : '%c')"
 
-#: ref-filter.c:44
+#: pathspec.c:531
 #, c-format
-msgid "behind %d"
-msgstr "en retard de %d"
+msgid "%s: pathspec magic not supported by this command: %s"
+msgstr ""
+"%s : le spécificateur magique de chemin n'est pas supporté par cette "
+"commande : %s"
 
-#: ref-filter.c:45
+#: pathspec.c:598
 #, c-format
-msgid "ahead %d, behind %d"
-msgstr "en avance de %d, en retard de %d"
+msgid "pathspec '%s' is beyond a symbolic link"
+msgstr "le chemin '%s' est au-delà d'un lien symbolique"
 
-#: ref-filter.c:169
+#: pathspec.c:643
 #, c-format
-msgid "expected format: %%(color:<color>)"
-msgstr "format attendu : %%(color:<couleur>)"
+msgid "line is badly quoted: %s"
+msgstr "la ligne est mal citée : %s"
 
-#: ref-filter.c:171
-#, c-format
-msgid "unrecognized color: %%(color:%s)"
-msgstr "couleur non reconnue : %%(color:%s)"
+#: pkt-line.c:92
+msgid "unable to write flush packet"
+msgstr "impossible d'écrire le paquet de vidage"
 
-#: ref-filter.c:193
-#, c-format
-msgid "Integer value expected refname:lstrip=%s"
-msgstr "Valeur entière attendue refname:lstrip=%s"
+#: pkt-line.c:99
+msgid "unable to write delim packet"
+msgstr "impossible d'écrire le paquet de délimitation"
 
-#: ref-filter.c:197
-#, c-format
-msgid "Integer value expected refname:rstrip=%s"
-msgstr "Valeur entière attendue refname:rstrip=%s"
+#: pkt-line.c:106
+msgid "unable to write stateless separator packet"
+msgstr "impossible d'écrire le paquet de séparateur sans état"
 
-#: ref-filter.c:199
-#, c-format
-msgid "unrecognized %%(%s) argument: %s"
-msgstr "argument %%(%s) non reconnu : %s"
+#: pkt-line.c:113
+msgid "flush packet write failed"
+msgstr "échec de l'écriture du vidage de paquet"
 
-#: ref-filter.c:254
-#, c-format
-msgid "%%(objecttype) does not take arguments"
-msgstr "%%(objecttype) n'accepte pas d'argument"
+#: pkt-line.c:153 pkt-line.c:239
+msgid "protocol error: impossibly long line"
+msgstr "erreur de protocole : ligne impossiblement trop longue"
 
-#: ref-filter.c:276
-#, c-format
-msgid "unrecognized %%(objectsize) argument: %s"
-msgstr "argument %%(objectsize) non reconnu : %s"
+#: pkt-line.c:169 pkt-line.c:171
+msgid "packet write with format failed"
+msgstr "échec de l'écriture d'un paquet avec format"
 
-#: ref-filter.c:284
-#, c-format
-msgid "%%(deltabase) does not take arguments"
-msgstr "%%(deltabase) n'accepte pas d'argument"
+#: pkt-line.c:203
+msgid "packet write failed - data exceeds max packet size"
+msgstr ""
+"échec de l'écriture d'un paquet ‑ les données dépassent la taille maximale "
+"d'un paquet"
 
-#: ref-filter.c:296
-#, c-format
-msgid "%%(body) does not take arguments"
-msgstr "%%(body) n'accepte pas d'argument"
+#: pkt-line.c:210 pkt-line.c:217
+msgid "packet write failed"
+msgstr "échec de l'écriture d'un paquet"
 
-#: ref-filter.c:309
-#, c-format
-msgid "unrecognized %%(subject) argument: %s"
-msgstr "argument %%(subject) non reconnu : %s"
+#: pkt-line.c:302
+msgid "read error"
+msgstr "erreur de lecture"
 
-#: ref-filter.c:330
-#, c-format
-msgid "unknown %%(trailers) argument: %s"
-msgstr "argument %%(trailers) inconnu : %s"
+#: pkt-line.c:310
+msgid "the remote end hung up unexpectedly"
+msgstr "L'hôte distant a fermé la connexion de manière inattendue"
 
-#: ref-filter.c:363
+#: pkt-line.c:338
 #, c-format
-msgid "positive value expected contents:lines=%s"
-msgstr "valeur positive attendue contents:lines=%s"
+msgid "protocol error: bad line length character: %.4s"
+msgstr "erreur de protocole : mauvais caractère de longueur de ligne : %.4s"
 
-#: ref-filter.c:365
+#: pkt-line.c:352 pkt-line.c:357
 #, c-format
-msgid "unrecognized %%(contents) argument: %s"
-msgstr "argument %%(contents) non reconnu : %s"
+msgid "protocol error: bad line length %d"
+msgstr "erreur de protocole : mauvaise longueur de ligne %d"
 
-#: ref-filter.c:380
+#: pkt-line.c:373 sideband.c:165
 #, c-format
-msgid "positive value expected '%s' in %%(%s)"
-msgstr "valeur positive attendue '%s' dans %%(%s)"
+msgid "remote error: %s"
+msgstr "erreur distante : %s"
 
-#: ref-filter.c:384
-#, c-format
-msgid "unrecognized argument '%s' in %%(%s)"
-msgstr "argument '%s' non reconnu dans %%(%s)"
+#: preload-index.c:125
+msgid "Refreshing index"
+msgstr "Rafraîchissement de l'index"
 
-#: ref-filter.c:398
+#: preload-index.c:144
 #, c-format
-msgid "unrecognized email option: %s"
-msgstr "option de courriel non reconnue : %s"
+msgid "unable to create threaded lstat: %s"
+msgstr "impossible de créer le lstat en fil : %s"
 
-#: ref-filter.c:428
-#, c-format
-msgid "expected format: %%(align:<width>,<position>)"
-msgstr "format attendu : %%(align:<largeur>,<position>)"
+#: pretty.c:984
+msgid "unable to parse --pretty format"
+msgstr "impossible d'analyser le format --pretty"
 
-#: ref-filter.c:440
-#, c-format
-msgid "unrecognized position:%s"
-msgstr "position non reconnue : %s"
+#: promisor-remote.c:30
+msgid "promisor-remote: unable to fork off fetch subprocess"
+msgstr ""
+"promisor-remote : impossible de créer un sous-processus de récupération"
 
-#: ref-filter.c:447
-#, c-format
-msgid "unrecognized width:%s"
-msgstr "largeur non reconnue : %s"
+#: promisor-remote.c:35 promisor-remote.c:37
+msgid "promisor-remote: could not write to fetch subprocess"
+msgstr ""
+"promisor-remote : impossible d'écrire vers un sous-processus de récupération"
 
-#: ref-filter.c:456
-#, c-format
-msgid "unrecognized %%(align) argument: %s"
-msgstr "argument %%(align) non reconnu : %s"
+#: promisor-remote.c:41
+msgid "promisor-remote: could not close stdin to fetch subprocess"
+msgstr ""
+"promisor-remote : impossible de fermer l'entrée standard du sous-processus "
+"de récupération"
 
-#: ref-filter.c:464
+#: promisor-remote.c:53
 #, c-format
-msgid "positive width expected with the %%(align) atom"
-msgstr "valeur positive attendue avec l'atome %%(align)"
+msgid "promisor remote name cannot begin with '/': %s"
+msgstr "un nom de prometteur distant ne peut pas commencer par '/' : %s"
 
-#: ref-filter.c:482
-#, c-format
-msgid "unrecognized %%(if) argument: %s"
-msgstr "argument %%(if) non reconnu : %s"
+#: prune-packed.c:35
+msgid "Removing duplicate objects"
+msgstr "Suppression des objets dupliqués"
 
-#: ref-filter.c:584
-#, c-format
-msgid "malformed field name: %.*s"
-msgstr "nom de champ malformé %.*s"
+#: range-diff.c:78
+msgid "could not start `log`"
+msgstr "impossible de démarrer `log`"
+
+#: range-diff.c:80
+msgid "could not read `log` output"
+msgstr "impossible de lire la sortie de `log`"
 
-#: ref-filter.c:611
+#: range-diff.c:101 sequencer.c:5318
 #, c-format
-msgid "unknown field name: %.*s"
-msgstr "nom de champ inconnu : %.*s"
+msgid "could not parse commit '%s'"
+msgstr "impossible d'analyser le commit '%s'"
 
-#: ref-filter.c:615
+#: range-diff.c:115
 #, c-format
 msgid ""
-"not a git repository, but the field '%.*s' requires access to object data"
+"could not parse first line of `log` output: did not start with 'commit ': "
+"'%s'"
 msgstr ""
-"pas un dépôt git, mais le champ '%.*s' nécessite l'accès aux données d'objet"
+"impossible d'analyser la première ligne de la sortie de `log` : ne commence "
+"pas par 'commit' : '%s'"
 
-#: ref-filter.c:739
+#: range-diff.c:140
 #, c-format
-msgid "format: %%(if) atom used without a %%(then) atom"
-msgstr "format : atome %%(if) utilisé sans un atome %%(then)"
+msgid "could not parse git header '%.*s'"
+msgstr "impossible d'analyser l'entête git '%.*s'"
 
-#: ref-filter.c:802
-#, c-format
-msgid "format: %%(then) atom used without an %%(if) atom"
-msgstr "format : atome %%(then) utilisé sans un atome %%(if)"
+#: range-diff.c:306
+msgid "failed to generate diff"
+msgstr "échec de la génération de diff"
 
-#: ref-filter.c:804
-#, c-format
-msgid "format: %%(then) atom used more than once"
-msgstr "format : atome %%(then) utilisé plus d'une fois"
+#: range-diff.c:558
+msgid "--left-only and --right-only are mutually exclusive"
+msgstr "--left-only et --right-only sont mutuellement exclusifs"
 
-#: ref-filter.c:806
+#: range-diff.c:561 range-diff.c:563
 #, c-format
-msgid "format: %%(then) atom used after %%(else)"
-msgstr "format: atome %%(then) utilisé après %%(else)"
+msgid "could not parse log for '%s'"
+msgstr "impossible d'analyser le journal pour '%s'"
 
-#: ref-filter.c:834
+#: read-cache.c:682
 #, c-format
-msgid "format: %%(else) atom used without an %%(if) atom"
-msgstr "format : atome %%(else) utilisé sans un atome %%(if)"
+msgid "will not add file alias '%s' ('%s' already exists in index)"
+msgstr "pas d'ajout d'alias de fichier '%s'(« %s » existe déjà dans l'index)"
 
-#: ref-filter.c:836
-#, c-format
-msgid "format: %%(else) atom used without a %%(then) atom"
-msgstr "format : atome %%(else) utilisé sans un atome %%(then)"
-
-#: ref-filter.c:838
-#, c-format
-msgid "format: %%(else) atom used more than once"
-msgstr "format : atome %%(else) utilisé plus d'une fois"
+#: read-cache.c:698
+msgid "cannot create an empty blob in the object database"
+msgstr "impossible de créer un blob vide dans la base de donnée d'objets"
 
-#: ref-filter.c:853
+#: read-cache.c:720
 #, c-format
-msgid "format: %%(end) atom used without corresponding atom"
-msgstr "format : atome %%(end) utilisé sans atome correspondant"
+msgid "%s: can only add regular files, symbolic links or git-directories"
+msgstr ""
+"%s : ne peut ajouter que des fichiers normaux, des liens symboliques ou des "
+"répertoires git"
 
-#: ref-filter.c:910
+#: read-cache.c:725
 #, c-format
-msgid "malformed format string %s"
-msgstr "Chaîne de formatage mal formée %s"
+msgid "'%s' does not have a commit checked out"
+msgstr "'%s' n'a pas de commit extrait"
 
-#: ref-filter.c:1549
+#: read-cache.c:777
 #, c-format
-msgid "no branch, rebasing %s"
-msgstr "aucune branche, rebasage de %s"
+msgid "unable to index file '%s'"
+msgstr "indexation du fichier '%s' impossible"
 
-#: ref-filter.c:1552
+#: read-cache.c:796
 #, c-format
-msgid "no branch, rebasing detached HEAD %s"
-msgstr "aucune branche, rebasage de la HEAD détachée %s"
+msgid "unable to add '%s' to index"
+msgstr "impossible d'ajouter '%s' à l'index"
 
-#: ref-filter.c:1555
+#: read-cache.c:807
 #, c-format
-msgid "no branch, bisect started on %s"
-msgstr "aucune branche, bisect a démarré sur %s"
-
-#: ref-filter.c:1565
-msgid "no branch"
-msgstr "aucune branche"
+msgid "unable to stat '%s'"
+msgstr "fstat de '%s' impossible"
 
-#: ref-filter.c:1599 ref-filter.c:1808
+#: read-cache.c:1318
 #, c-format
-msgid "missing object %s for %s"
-msgstr "objet manquant %s pour %s"
+msgid "'%s' appears as both a file and as a directory"
+msgstr "'%s' existe à la fois comme un fichier et un répertoire"
 
-#: ref-filter.c:1609
-#, c-format
-msgid "parse_object_buffer failed on %s for %s"
-msgstr "échec de parse_object_buffer sur %s pour %s"
+#: read-cache.c:1532
+msgid "Refresh index"
+msgstr "Rafraîchir l'index"
 
-#: ref-filter.c:2062
+#: read-cache.c:1657
 #, c-format
-msgid "malformed object at '%s'"
-msgstr "objet malformé à '%s'"
+msgid ""
+"index.version set, but the value is invalid.\n"
+"Using version %i"
+msgstr ""
+"version d'index renseignée, mais la valeur est invalide.\n"
+"Utilisation de la version %i"
 
-#: ref-filter.c:2151
+#: read-cache.c:1667
 #, c-format
-msgid "ignoring ref with broken name %s"
-msgstr "réf avec un nom cassé %s ignoré"
+msgid ""
+"GIT_INDEX_VERSION set, but the value is invalid.\n"
+"Using version %i"
+msgstr ""
+"GIT_INDEX_VERSION est renseigné, mais la valeur est invalide.\n"
+"Utilisation de la version %i"
 
-#: ref-filter.c:2156 refs.c:676
+#: read-cache.c:1723
 #, c-format
-msgid "ignoring broken ref %s"
-msgstr "réf cassé %s ignoré"
+msgid "bad signature 0x%08x"
+msgstr "signature incorrecte 0x%08x"
 
-#: ref-filter.c:2472
+#: read-cache.c:1726
 #, c-format
-msgid "format: %%(end) atom missing"
-msgstr "format: atome %%(end) manquant"
+msgid "bad index version %d"
+msgstr "mauvaise version d'index %d"
 
-#: ref-filter.c:2571
-#, c-format
-msgid "malformed object name %s"
-msgstr "nom d'objet malformé %s"
+#: read-cache.c:1735
+msgid "bad index file sha1 signature"
+msgstr "mauvaise signature sha1 d'index"
 
-#: ref-filter.c:2576
+#: read-cache.c:1765
 #, c-format
-msgid "option `%s' must point to a commit"
-msgstr "l'option '%s' doit pointer sur un commit"
+msgid "index uses %.4s extension, which we do not understand"
+msgstr "l'index utilise l'extension %.4s qui n'est pas comprise"
 
-#: refs.c:264
+#: read-cache.c:1767
 #, c-format
-msgid "%s does not point to a valid object!"
-msgstr "%s ne pointe pas sur un objet valide!"
+msgid "ignoring %.4s extension"
+msgstr "extension %.4s ignorée"
 
-#: refs.c:566
+#: read-cache.c:1804
 #, c-format
-msgid ""
-"Using '%s' as the name for the initial branch. This default branch name\n"
-"is subject to change. To configure the initial branch name to use in all\n"
-"of your new repositories, which will suppress this warning, call:\n"
-"\n"
-"\tgit config --global init.defaultBranch <name>\n"
-"\n"
-"Names commonly chosen instead of 'master' are 'main', 'trunk' and\n"
-"'development'. The just-created branch can be renamed via this command:\n"
-"\n"
-"\tgit branch -m <name>\n"
-msgstr ""
-"Utilisation de '%s' comme nom de la branche initiale. Le nom de la branche\n"
-"par défaut peut changer. Pour configurer le nom de la branche initiale\n"
-"pour tous les nouveaux dépôts, et supprimer cet avertissement, lancez :\n"
-"\n"
-"\tgit config --global init.defaultBranch <nom>\n"
-"\n"
-"Les noms les plus utilisés à la place de 'master' sont 'main', 'trunk' et\n"
-"'development'. La branche nouvellement créée peut être rénommée avec :\n"
-"\n"
-"\tgit branch -m <nom>\n"
+msgid "unknown index entry format 0x%08x"
+msgstr "format d'entrée d'index inconnu 0x%08x"
 
-#: refs.c:588
+#: read-cache.c:1820
 #, c-format
-msgid "could not retrieve `%s`"
-msgstr "impossible de récupérer `%s`"
+msgid "malformed name field in the index, near path '%s'"
+msgstr "champ de nom malformé dans l'index, près du chemin '%s'"
 
-#: refs.c:598
-#, c-format
-msgid "invalid branch name: %s = %s"
-msgstr "Nom de branche invalide : %s = %s"
+#: read-cache.c:1877
+msgid "unordered stage entries in index"
+msgstr "entrées de préparation non ordonnées dans l'index"
 
-#: refs.c:674
+#: read-cache.c:1880
 #, c-format
-msgid "ignoring dangling symref %s"
-msgstr "symref pendant %s ignoré"
+msgid "multiple stage entries for merged file '%s'"
+msgstr "entrées multiples de préparation pour le fichier fusionné '%s'"
 
-#: refs.c:911
+#: read-cache.c:1883
 #, c-format
-msgid "log for ref %s has gap after %s"
-msgstr "le journal pour la réf %s contient un trou après %s"
+msgid "unordered stage entries for '%s'"
+msgstr "entrées de préparation non ordonnées pour '%s'"
 
-#: refs.c:917
-#, c-format
-msgid "log for ref %s unexpectedly ended on %s"
-msgstr "le journal pour la réf %s s'arrête de manière inattendue sur %s"
+#: read-cache.c:1989 read-cache.c:2280 rerere.c:549 rerere.c:583 rerere.c:1095
+#: submodule.c:1634 builtin/add.c:546 builtin/check-ignore.c:181
+#: builtin/checkout.c:504 builtin/checkout.c:690 builtin/clean.c:991
+#: builtin/commit.c:364 builtin/diff-tree.c:122 builtin/grep.c:505
+#: builtin/mv.c:146 builtin/reset.c:247 builtin/rm.c:290
+#: builtin/submodule--helper.c:332
+msgid "index file corrupt"
+msgstr "fichier d'index corrompu"
 
-#: refs.c:976
+#: read-cache.c:2133
 #, c-format
-msgid "log for %s is empty"
-msgstr "le journal pour la réf %s est vide"
+msgid "unable to create load_cache_entries thread: %s"
+msgstr "impossible de créer le fil load_cache_entries : %s"
 
-#: refs.c:1068
+#: read-cache.c:2146
 #, c-format
-msgid "refusing to update ref with bad name '%s'"
-msgstr "refus de mettre à jour une réf avec un nom cassé '%s'"
+msgid "unable to join load_cache_entries thread: %s"
+msgstr "impossible de joindre le fil load_cach_entries : %s"
 
-#: refs.c:1139
+#: read-cache.c:2179
 #, c-format
-msgid "update_ref failed for ref '%s': %s"
-msgstr "échec de update_ref pour la réf '%s' : %s"
+msgid "%s: index file open failed"
+msgstr "%s : l'ouverture du fichier d'index a échoué"
 
-#: refs.c:1963
+#: read-cache.c:2183
 #, c-format
-msgid "multiple updates for ref '%s' not allowed"
-msgstr "mises à jour multiples pour la réf '%s' non permises"
-
-#: refs.c:2043
-msgid "ref updates forbidden inside quarantine environment"
-msgstr "mises à jour des références interdites en environnement de quarantaine"
-
-#: refs.c:2054
-msgid "ref updates aborted by hook"
-msgstr "mises à jour des références annulées par le crochet"
+msgid "%s: cannot stat the open index"
+msgstr "%s : impossible de faire un stat sur l'index ouvert"
 
-#: refs.c:2154 refs.c:2184
+#: read-cache.c:2187
 #, c-format
-msgid "'%s' exists; cannot create '%s'"
-msgstr "'%s' existe ; impossible de créer '%s'"
+msgid "%s: index file smaller than expected"
+msgstr "%s : fichier d'index plus petit qu'attendu"
 
-#: refs.c:2160 refs.c:2195
+#: read-cache.c:2191
 #, c-format
-msgid "cannot process '%s' and '%s' at the same time"
-msgstr "impossible de traiter '%s' et '%s' en même temps"
+msgid "%s: unable to map index file"
+msgstr "%s : impossible de mapper le fichier d'index"
 
-#: refs/files-backend.c:1228
+#: read-cache.c:2233
 #, c-format
-msgid "could not remove reference %s"
-msgstr "impossible de supprimer la référence %s"
+msgid "unable to create load_index_extensions thread: %s"
+msgstr "impossible de créer le fil load_index_extensions : %s"
 
-#: refs/files-backend.c:1242 refs/packed-backend.c:1542
-#: refs/packed-backend.c:1552
+#: read-cache.c:2260
 #, c-format
-msgid "could not delete reference %s: %s"
-msgstr "Impossible de supprimer la référence %s : %s"
+msgid "unable to join load_index_extensions thread: %s"
+msgstr "impossible de joindre le fil load_index_extensions : %s"
 
-#: refs/files-backend.c:1245 refs/packed-backend.c:1555
+#: read-cache.c:2292
 #, c-format
-msgid "could not delete references: %s"
-msgstr "impossible de supprimer les références : %s"
+msgid "could not freshen shared index '%s'"
+msgstr "impossible de rafraîchir l'index partagé '%s'"
 
-#: refspec.c:170
+#: read-cache.c:2339
 #, c-format
-msgid "invalid refspec '%s'"
-msgstr "spécificateur de réference invalide : '%s'"
+msgid "broken index, expect %s in %s, got %s"
+msgstr "index cassé, %s attendu dans %s, %s obtenu"
 
-#: remote.c:351
+#: read-cache.c:3035 strbuf.c:1171 wrapper.c:633 builtin/merge.c:1141
 #, c-format
-msgid "config remote shorthand cannot begin with '/': %s"
-msgstr ""
-"un raccourci de configuration de distant ne peut pas commencer par '/' : %s"
-
-#: remote.c:399
-msgid "more than one receivepack given, using the first"
-msgstr "plus d'un receivepack fournis, utilisation du premier"
-
-#: remote.c:407
-msgid "more than one uploadpack given, using the first"
-msgstr "plus d'un uploadpack fournis, utilisation du premier"
+msgid "could not close '%s'"
+msgstr "impossible de fermer '%s'"
 
-#: remote.c:590
+#: read-cache.c:3138 sequencer.c:2487 sequencer.c:4239
 #, c-format
-msgid "Cannot fetch both %s and %s to %s"
-msgstr "Impossible de récupérer à la fois %s et %s pour %s"
+msgid "could not stat '%s'"
+msgstr "stat impossible de '%s'"
 
-#: remote.c:594
+#: read-cache.c:3151
 #, c-format
-msgid "%s usually tracks %s, not %s"
-msgstr "%s suit habituellement %s, pas %s"
+msgid "unable to open git dir: %s"
+msgstr "impossible d'ouvrir le répertoire git : %s"
 
-#: remote.c:598
+#: read-cache.c:3163
 #, c-format
-msgid "%s tracks both %s and %s"
-msgstr "%s suit à la fois %s et %s"
+msgid "unable to unlink: %s"
+msgstr "échec lors de l'unlink : %s"
 
-#: remote.c:666
+#: read-cache.c:3188
 #, c-format
-msgid "key '%s' of pattern had no '*'"
-msgstr "la clé '%s' du modèle n'a pas de '*'"
+msgid "cannot fix permission bits on '%s'"
+msgstr "impossible de régler les bits de droit de '%s'"
 
-#: remote.c:676
+#: read-cache.c:3337
 #, c-format
-msgid "value '%s' of pattern has no '*'"
-msgstr "la valeur '%s' du modèle n'a pas de '*'"
+msgid "%s: cannot drop to stage #0"
+msgstr "%s : impossible de revenir à l'étape 0"
 
-#: remote.c:1073
-#, c-format
-msgid "src refspec %s does not match any"
+#: rebase-interactive.c:11
+msgid ""
+"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 ""
-"le spécificateur de référence source %s ne correspond à aucune référence"
+"Vous pouvez corriger ceci avec 'git rebase --edit-todo' puis lancez 'git "
+"rebase --continue'.\n"
+"Ou vous pouvez abandonner le rebasage avec 'git rebase --abort'.\n"
 
-#: remote.c:1078
+#: rebase-interactive.c:33
 #, c-format
-msgid "src refspec %s matches more than one"
+msgid ""
+"unrecognized setting %s for option rebase.missingCommitsCheck. Ignoring."
 msgstr ""
-"le spécificateur de référence source %s correspond à plus d'une référence"
+"paramètre non reconnu %s pour l'option rebase.missingCommitsCheck. Ignoré."
 
-#. TRANSLATORS: "matches '%s'%" is the <dst> part of "git push
-#. <remote> <src>:<dst>" push, and "being pushed ('%s')" is
-#. the <src>.
-#.
-#: remote.c:1093
-#, c-format
+#: rebase-interactive.c:42
 msgid ""
-"The destination you provided is not a full refname (i.e.,\n"
-"starting with \"refs/\"). We tried to guess what you meant by:\n"
-"\n"
-"- Looking for a ref that matches '%s' on the remote side.\n"
-"- Checking if the <src> being pushed ('%s')\n"
-"  is a ref in \"refs/{heads,tags}/\". If so we add a corresponding\n"
-"  refs/{heads,tags}/ prefix on the remote side.\n"
 "\n"
-"Neither worked, so we gave up. You must fully qualify the ref."
-msgstr ""
-"La destination que vous avez fournie n'est pas un nom de référence complète\n"
-"(c'est-à-dire commençant par \"ref/\"). Essai d'approximation par :\n"
+"Commands:\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"
+"b, break = stop here (continue rebase later with 'git rebase --continue')\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"
-"- Recherche d'une référence qui correspond à '%s' sur le serveur distant.\n"
-"- Vérification si la <source> en cours de poussée ('%s')\n"
-"  est une référence dans \"refs/{heads,tags}/\". Si oui, ajout du préfixe\n"
-"  refs/{heads,tags}/ correspondant du côté distant.\n"
+"These lines can be re-ordered; they are executed from top to bottom.\n"
+msgstr ""
 "\n"
-"Aucune n'a fonctionné, donc abandon. Veuillez spécifier une référence "
-"totalement qualifiée."
+"Commandes :\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"
+" b, break = s'arrêter ici (on peut continuer ensuite avec 'git rebase --"
+"continue')\n"
+" d, drop <commit> = supprimer le commit\n"
+" l, label <label> = étiqueter la HEAD courante avec un nom\n"
+" t, reset <label> = réinitialiser HEAD à label\n"
+" 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"
 
-#: remote.c:1113
+#: rebase-interactive.c:63
 #, c-format
+msgid "Rebase %s onto %s (%d command)"
+msgid_plural "Rebase %s onto %s (%d commands)"
+msgstr[0] "Rebasage de %s sur %s (%d commande)"
+msgstr[1] "Rebasage de %s sur %s (%d commandes)"
+
+#: rebase-interactive.c:72 git-rebase--preserve-merges.sh:218
 msgid ""
-"The <src> part of the refspec is a commit object.\n"
-"Did you mean to create a new branch by pushing to\n"
-"'%s:refs/heads/%s'?"
+"\n"
+"Do not remove any line. Use 'drop' explicitly to remove a commit.\n"
 msgstr ""
-"la partie <source> du spécificateur de référence est un objet commit.\n"
-"Souhaitiez-vous créer une nouvelle branche en poussant sur\n"
-"'%s:refs/heads/%s' ?"
+"\n"
+"Ne supprimez aucune ligne. Utilisez 'drop' explicitement pour supprimer un "
+"commit.\n"
 
-#: remote.c:1118
-#, c-format
+#: rebase-interactive.c:75 git-rebase--preserve-merges.sh:222
 msgid ""
-"The <src> part of the refspec is a tag object.\n"
-"Did you mean to create a new tag by pushing to\n"
-"'%s:refs/tags/%s'?"
+"\n"
+"If you remove a line here THAT COMMIT WILL BE LOST.\n"
 msgstr ""
-"la partie <source> du spécificateur de référence est un objet étiquette.\n"
-"Souhaitiez-vous créer une nouvelle étiquette en poussant sur\n"
-"'%s:refs/tags/%s' ?"
+"\n"
+"Si vous éliminez une ligne ici, LE COMMIT CORRESPONDANT SERA PERDU.\n"
 
-#: remote.c:1123
-#, c-format
+#: rebase-interactive.c:81 git-rebase--preserve-merges.sh:861
 msgid ""
-"The <src> part of the refspec is a tree object.\n"
-"Did you mean to tag a new tree by pushing to\n"
-"'%s:refs/tags/%s'?"
+"\n"
+"You are editing the todo file of an ongoing interactive rebase.\n"
+"To continue rebase after editing, run:\n"
+"    git rebase --continue\n"
+"\n"
 msgstr ""
-"la partie <source> du spécificateur de référence est un objet arbre.\n"
-"Souhaitiez-vous créer un nouvel arbre en poussant sur\n"
-"'%s:refs/tags/%s' ?"
+"\n"
+"Vous êtes en train d'éditer le fichier todo d'un rebasage interactif en "
+"cours.\n"
+"Pour continuer le rebasage après édition, lancez :\n"
+"    git rebase --continue\n"
+"\n"
 
-#: remote.c:1128
-#, c-format
+#: rebase-interactive.c:86 git-rebase--preserve-merges.sh:938
 msgid ""
-"The <src> part of the refspec is a blob object.\n"
-"Did you mean to tag a new blob by pushing to\n"
-"'%s:refs/tags/%s'?"
+"\n"
+"However, if you remove everything, the rebase will be aborted.\n"
+"\n"
 msgstr ""
-"la partie <source> du spécificateur de référence est un objet blob.\n"
-"Souhaitiez-vous créer un nouveau blob en poussant sur\n"
-"'%s:refs/tags/%s' ?"
+"\n"
+"Cependant, si vous effacez tout, le rebasage sera annulé.\n"
+"\n"
 
-#: remote.c:1164
+#: rebase-interactive.c:110 rerere.c:469 rerere.c:676 sequencer.c:3615
+#: sequencer.c:3641 sequencer.c:5424 builtin/fsck.c:329 builtin/rebase.c:272
 #, c-format
-msgid "%s cannot be resolved to branch"
-msgstr "'%s' ne peut pas être résolue comme une branche"
+msgid "could not write '%s'"
+msgstr "impossible d'écrire '%s'"
 
-#: remote.c:1175
+#: rebase-interactive.c:116 builtin/rebase.c:204 builtin/rebase.c:230
+#: builtin/rebase.c:254
 #, c-format
-msgid "unable to delete '%s': remote ref does not exist"
-msgstr "suppression de '%s' impossible : la référence distante n'existe pas"
+msgid "could not write '%s'."
+msgstr "impossible d'écrire '%s'."
 
-#: remote.c:1187
+#: rebase-interactive.c:193
 #, c-format
-msgid "dst refspec %s matches more than one"
+msgid ""
+"Warning: some commits may have been dropped accidentally.\n"
+"Dropped commits (newer to older):\n"
 msgstr ""
-"le spécificateur de référence dst %s correspond à plus d'un spécificateur de "
-"références"
+"Attention : certains commits ont pu être accidentellement supprimés.\n"
+"Commits supprimés (du plus jeune au plus vieux) :\n"
 
-#: remote.c:1194
+#: rebase-interactive.c:200
 #, c-format
-msgid "dst ref %s receives from more than one src"
-msgstr "le spécificateur de référence dst %s reçoit depuis plus d'une source"
+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"
+"The possible behaviours are: ignore, warn, error.\n"
+"\n"
+msgstr ""
+"Pour éviter ce message, utilisez \"drop\" pour supprimer explicitement un "
+"commit.\n"
+"\n"
+"Utilisez 'git config rebase.missingCommitsCheck' pour changer le niveau "
+"d'avertissements.\n"
+"Les comportements disponibles sont : ignore, warn, error.\n"
+"\n"
 
-#: remote.c:1714 remote.c:1815
-msgid "HEAD does not point to a branch"
-msgstr "HEAD ne pointe pas sur une branche"
+#: rebase-interactive.c:233 rebase-interactive.c:238 sequencer.c:2402
+#: builtin/rebase.c:190 builtin/rebase.c:215 builtin/rebase.c:241
+#: builtin/rebase.c:266
+#, c-format
+msgid "could not read '%s'."
+msgstr "impossible de lire '%s'."
+
+# à priori on parle d'une branche ici
+#: ref-filter.c:42 wt-status.c:1975
+msgid "gone"
+msgstr "disparue"
 
-#: remote.c:1723
+#: ref-filter.c:43
 #, c-format
-msgid "no such branch: '%s'"
-msgstr "pas de branche '%s'"
+msgid "ahead %d"
+msgstr "en avance de %d"
 
-#: remote.c:1726
+#: ref-filter.c:44
 #, c-format
-msgid "no upstream configured for branch '%s'"
-msgstr "aucune branche amont configurée pour la branche '%s'"
+msgid "behind %d"
+msgstr "en retard de %d"
 
-#: remote.c:1732
+#: ref-filter.c:45
 #, 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"
+msgid "ahead %d, behind %d"
+msgstr "en avance de %d, en retard de %d"
 
-#: remote.c:1747
+#: ref-filter.c:175
 #, 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"
+msgid "expected format: %%(color:<color>)"
+msgstr "format attendu : %%(color:<couleur>)"
 
-#: remote.c:1759
+#: ref-filter.c:177
 #, c-format
-msgid "branch '%s' has no remote for pushing"
-msgstr "la branche '%s' n'a aucune branche distante de poussée"
+msgid "unrecognized color: %%(color:%s)"
+msgstr "couleur non reconnue : %%(color:%s)"
 
-#: remote.c:1769
+#: ref-filter.c:199
 #, c-format
-msgid "push refspecs for '%s' do not include '%s'"
-msgstr "les références de spec pour '%s' n'incluent pas '%s'"
+msgid "Integer value expected refname:lstrip=%s"
+msgstr "Valeur entière attendue refname:lstrip=%s"
 
-#: remote.c:1782
-msgid "push has no destination (push.default is 'nothing')"
-msgstr "la poussée n'a pas de destination (push.default vaut 'nothing')"
+#: ref-filter.c:203
+#, c-format
+msgid "Integer value expected refname:rstrip=%s"
+msgstr "Valeur entière attendue refname:rstrip=%s"
 
-#: remote.c:1804
-msgid "cannot resolve 'simple' push to a single destination"
-msgstr ""
-"impossible de résoudre une poussée 'simple' pour une destination unique"
+#: ref-filter.c:205
+#, c-format
+msgid "unrecognized %%(%s) argument: %s"
+msgstr "argument %%(%s) non reconnu : %s"
 
-#: remote.c:1933
+#: ref-filter.c:260
 #, c-format
-msgid "couldn't find remote ref %s"
-msgstr "impossible de trouver la référence distante %s"
+msgid "%%(objecttype) does not take arguments"
+msgstr "%%(objecttype) n'accepte pas d'argument"
 
-#: remote.c:1946
+#: ref-filter.c:282
 #, c-format
-msgid "* Ignoring funny ref '%s' locally"
-msgstr "* Référence bizarre '%s' ignorée localement"
+msgid "unrecognized %%(objectsize) argument: %s"
+msgstr "argument %%(objectsize) non reconnu : %s"
 
-#: remote.c:2109
+#: ref-filter.c:290
 #, 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"
+msgid "%%(deltabase) does not take arguments"
+msgstr "%%(deltabase) n'accepte pas d'argument"
 
-#: remote.c:2113
-msgid "  (use \"git branch --unset-upstream\" to fixup)\n"
-msgstr "  (utilisez \"git branch --unset-upstream\" pour corriger)\n"
+#: ref-filter.c:302
+#, c-format
+msgid "%%(body) does not take arguments"
+msgstr "%%(body) n'accepte pas d'argument"
 
-#: remote.c:2116
+#: ref-filter.c:315
 #, c-format
-msgid "Your branch is up to date with '%s'.\n"
-msgstr "Votre branche est à jour avec '%s'.\n"
+msgid "unrecognized %%(subject) argument: %s"
+msgstr "argument %%(subject) non reconnu : %s"
 
-#: remote.c:2120
+#: ref-filter.c:334
 #, 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"
+msgid "expected %%(trailers:key=<value>)"
+msgstr "%%(trailers:key=<value>) attendu"
 
-#: remote.c:2123
+#: ref-filter.c:336
 #, c-format
-msgid "  (use \"%s\" for details)\n"
-msgstr "  (utilisez \"%s\" pour plus de détails)\n"
+msgid "unknown %%(trailers) argument: %s"
+msgstr "argument %%(trailers) inconnu : %s"
 
-#: remote.c:2127
+#: ref-filter.c:367
 #, 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"
+msgid "positive value expected contents:lines=%s"
+msgstr "valeur positive attendue contents:lines=%s"
 
-#: remote.c:2133
-msgid "  (use \"git push\" to publish your local commits)\n"
-msgstr "  (utilisez \"git push\" pour publier vos commits locaux)\n"
+#: ref-filter.c:369
+#, c-format
+msgid "unrecognized %%(contents) argument: %s"
+msgstr "argument %%(contents) non reconnu : %s"
 
-#: remote.c:2136
+#: ref-filter.c:384
 #, c-format
-msgid "Your branch is behind '%s' by %d commit, and can be fast-forwarded.\n"
-msgid_plural ""
-"Your branch is behind '%s' by %d commits, and can be fast-forwarded.\n"
-msgstr[0] ""
-"Votre branche est en retard sur '%s' de %d commit, et peut être mise à jour "
-"en avance rapide.\n"
-msgstr[1] ""
-"Votre branche est en retard sur '%s' de %d commits, et peut être mise à jour "
-"en avance rapide.\n"
+msgid "positive value expected '%s' in %%(%s)"
+msgstr "valeur positive attendue '%s' dans %%(%s)"
 
-#: remote.c:2144
-msgid "  (use \"git pull\" to update your local branch)\n"
-msgstr "  (utilisez \"git pull\" pour mettre à jour votre branche locale)\n"
+#: ref-filter.c:388
+#, c-format
+msgid "unrecognized argument '%s' in %%(%s)"
+msgstr "argument '%s' non reconnu dans %%(%s)"
 
-#: remote.c:2147
+#: ref-filter.c:402
 #, c-format
-msgid ""
-"Your branch and '%s' have diverged,\n"
-"and have %d and %d different commit each, respectively.\n"
-msgid_plural ""
-"Your branch and '%s' have diverged,\n"
-"and have %d and %d different commits each, respectively.\n"
-msgstr[0] ""
-"Votre branche et '%s' ont divergé,\n"
-"et ont %d et %d commit différent chacune respectivement.\n"
-msgstr[1] ""
-"Votre branche et '%s' ont divergé,\n"
-"et ont %d et %d commits différents chacune respectivement.\n"
+msgid "unrecognized email option: %s"
+msgstr "option de courriel non reconnue : %s"
 
-#: remote.c:2157
-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"
+#: ref-filter.c:432
+#, c-format
+msgid "expected format: %%(align:<width>,<position>)"
+msgstr "format attendu : %%(align:<largeur>,<position>)"
 
-#: remote.c:2349
+#: ref-filter.c:444
 #, c-format
-msgid "cannot parse expected object name '%s'"
-msgstr "impossible d'analyser le nom attendu d'objet '%s'"
+msgid "unrecognized position:%s"
+msgstr "position non reconnue : %s"
 
-#: replace-object.c:21
+#: ref-filter.c:451
 #, c-format
-msgid "bad replace ref name: %s"
-msgstr "mauvaise références de remplacement : %s"
+msgid "unrecognized width:%s"
+msgstr "largeur non reconnue : %s"
 
-#: replace-object.c:30
+#: ref-filter.c:460
 #, c-format
-msgid "duplicate replace ref: %s"
-msgstr "référence de remplacement dupliquée : %s"
+msgid "unrecognized %%(align) argument: %s"
+msgstr "argument %%(align) non reconnu : %s"
 
-#: replace-object.c:82
+#: ref-filter.c:468
 #, c-format
-msgid "replace depth too high for object %s"
-msgstr "profondeur de remplacement trop grande pour l'objet %s"
+msgid "positive width expected with the %%(align) atom"
+msgstr "valeur positive attendue avec l'atome %%(align)"
 
-#: rerere.c:217 rerere.c:226 rerere.c:229
-msgid "corrupt MERGE_RR"
-msgstr "MERGE_RR corrompu"
+#: ref-filter.c:486
+#, c-format
+msgid "unrecognized %%(if) argument: %s"
+msgstr "argument %%(if) non reconnu : %s"
 
-#: rerere.c:264 rerere.c:269
-msgid "unable to write rerere record"
-msgstr "impossible d'écrire l'enregistrement rerere"
+#: ref-filter.c:588
+#, c-format
+msgid "malformed field name: %.*s"
+msgstr "nom de champ malformé %.*s"
 
-#: rerere.c:495
+#: ref-filter.c:615
 #, c-format
-msgid "there were errors while writing '%s' (%s)"
-msgstr "il y a eu des erreurs à l'écriture de '%s' (%s)"
+msgid "unknown field name: %.*s"
+msgstr "nom de champ inconnu : %.*s"
 
-#: rerere.c:498
+#: ref-filter.c:619
 #, c-format
-msgid "failed to flush '%s'"
-msgstr "échec du flush de '%s'"
+msgid ""
+"not a git repository, but the field '%.*s' requires access to object data"
+msgstr ""
+"pas un dépôt git, mais le champ '%.*s' nécessite l'accès aux données d'objet"
 
-#: rerere.c:503 rerere.c:1039
+#: ref-filter.c:743
 #, c-format
-msgid "could not parse conflict hunks in '%s'"
-msgstr "impossible d'analyser la section en conflit dans '%s'"
+msgid "format: %%(if) atom used without a %%(then) atom"
+msgstr "format : atome %%(if) utilisé sans un atome %%(then)"
 
-#: rerere.c:684
+#: ref-filter.c:806
 #, c-format
-msgid "failed utime() on '%s'"
-msgstr "échec de utime() sur '%s'"
+msgid "format: %%(then) atom used without an %%(if) atom"
+msgstr "format : atome %%(then) utilisé sans un atome %%(if)"
 
-#: rerere.c:694
+#: ref-filter.c:808
 #, c-format
-msgid "writing '%s' failed"
-msgstr "échec de l'écriture de '%s'"
+msgid "format: %%(then) atom used more than once"
+msgstr "format : atome %%(then) utilisé plus d'une fois"
 
-#: rerere.c:714
+#: ref-filter.c:810
 #, c-format
-msgid "Staged '%s' using previous resolution."
-msgstr "'%s' indexé en utilisant la résolution pré-existante."
+msgid "format: %%(then) atom used after %%(else)"
+msgstr "format: atome %%(then) utilisé après %%(else)"
 
-#: rerere.c:753
+#: ref-filter.c:838
 #, c-format
-msgid "Recorded resolution for '%s'."
-msgstr "Résolution enregistrée pour '%s'."
+msgid "format: %%(else) atom used without an %%(if) atom"
+msgstr "format : atome %%(else) utilisé sans un atome %%(if)"
 
-#: rerere.c:788
+#: ref-filter.c:840
 #, c-format
-msgid "Resolved '%s' using previous resolution."
-msgstr "'%s' résolu en utilisant la résolution pré-existante."
+msgid "format: %%(else) atom used without a %%(then) atom"
+msgstr "format : atome %%(else) utilisé sans un atome %%(then)"
 
-#: rerere.c:803
+#: ref-filter.c:842
 #, c-format
-msgid "cannot unlink stray '%s'"
-msgstr "impossible de délier '%s' qui est errant"
+msgid "format: %%(else) atom used more than once"
+msgstr "format : atome %%(else) utilisé plus d'une fois"
 
-#: rerere.c:807
+#: ref-filter.c:857
 #, c-format
-msgid "Recorded preimage for '%s'"
-msgstr "Pré-image enregistrée pour '%s'"
+msgid "format: %%(end) atom used without corresponding atom"
+msgstr "format : atome %%(end) utilisé sans atome correspondant"
 
-#: rerere.c:881 submodule.c:2082 builtin/log.c:1992
-#: builtin/submodule--helper.c:1878 builtin/submodule--helper.c:1890
+#: ref-filter.c:914
 #, c-format
-msgid "could not create directory '%s'"
-msgstr "impossible de créer le répertoire '%s'"
+msgid "malformed format string %s"
+msgstr "Chaîne de formatage mal formée %s"
 
-#: rerere.c:1057
+#: ref-filter.c:1555
 #, c-format
-msgid "failed to update conflicted state in '%s'"
-msgstr "échec de la mise à jour de l'état en conflit dans '%s'"
+msgid "(no branch, rebasing %s)"
+msgstr "(aucune branche, rebasage de %s)"
 
-#: rerere.c:1068 rerere.c:1075
+#: ref-filter.c:1558
 #, c-format
-msgid "no remembered resolution for '%s'"
-msgstr "Aucune résolution enregistrée pour '%s'"
+msgid "(no branch, rebasing detached HEAD %s)"
+msgstr "(aucune branche, rebasage de la HEAD détachée %s)"
 
-#: rerere.c:1077
+#: ref-filter.c:1561
 #, c-format
-msgid "cannot unlink '%s'"
-msgstr "impossible de délier '%s'"
+msgid "(no branch, bisect started on %s)"
+msgstr "(aucune branche, bisect a démarré sur %s)"
 
-#: rerere.c:1087
+#: ref-filter.c:1565
 #, c-format
-msgid "Updated preimage for '%s'"
-msgstr "Pré-image mise à jour pour '%s'"
+msgid "(HEAD detached at %s)"
+msgstr "(HEAD détachée sur %s)"
 
-#: rerere.c:1096
+#: ref-filter.c:1568
 #, c-format
-msgid "Forgot resolution for '%s'\n"
-msgstr "Résolution  pour '%s' oubliée\n"
+msgid "(HEAD detached from %s)"
+msgstr "(HEAD détachée depuis %s)"
 
-#: rerere.c:1199
-msgid "unable to open rr-cache directory"
-msgstr "impossible d'ouvrir le répertoire rr-cache"
+#: ref-filter.c:1571
+msgid "(no branch)"
+msgstr "(aucune branche)"
 
-#: reset.c:42
-msgid "could not determine HEAD revision"
-msgstr "impossible de déterminer la révision HEAD"
+#: ref-filter.c:1603 ref-filter.c:1812
+#, c-format
+msgid "missing object %s for %s"
+msgstr "objet manquant %s pour %s"
 
-#: reset.c:70 reset.c:76 sequencer.c:3460
+#: ref-filter.c:1613
 #, c-format
-msgid "failed to find tree of %s"
-msgstr "impossible de trouver l'arbre de %s"
+msgid "parse_object_buffer failed on %s for %s"
+msgstr "échec de parse_object_buffer sur %s pour %s"
 
-#: revision.c:2336
-msgid "--unpacked=<packfile> no longer supported"
-msgstr "--unpacked=<fichier-paquet> n'est plus géré"
+#: ref-filter.c:1996
+#, c-format
+msgid "malformed object at '%s'"
+msgstr "objet malformé à '%s'"
 
-#: revision.c:2356
+#: ref-filter.c:2085
 #, c-format
-msgid "unknown value for --diff-merges: %s"
-msgstr "valeur inconnue pour --diff-merges : %s"
+msgid "ignoring ref with broken name %s"
+msgstr "réf avec un nom cassé %s ignoré"
 
-#: revision.c:2694
-msgid "your current branch appears to be broken"
-msgstr "votre branche actuelle semble cassée"
+#: ref-filter.c:2090 refs.c:676
+#, c-format
+msgid "ignoring broken ref %s"
+msgstr "réf cassé %s ignoré"
 
-#: revision.c:2697
+#: ref-filter.c:2430
 #, c-format
-msgid "your current branch '%s' does not have any commits yet"
-msgstr "votre branche actuelle '%s' ne contient encore aucun commit"
+msgid "format: %%(end) atom missing"
+msgstr "format: atome %%(end) manquant"
 
-#: revision.c:2907
-msgid "-L does not yet support diff formats besides -p and -s"
-msgstr "-L ne supporte pas encore les formats de diff autres que -p et -s"
+#: ref-filter.c:2529
+#, c-format
+msgid "malformed object name %s"
+msgstr "nom d'objet malformé %s"
 
-#: run-command.c:764
-msgid "open /dev/null failed"
-msgstr "échec de l'ouverture de /dev/null"
+#: ref-filter.c:2534
+#, c-format
+msgid "option `%s' must point to a commit"
+msgstr "l'option '%s' doit pointer sur un commit"
 
-#: run-command.c:1271
+#: refs.c:264
 #, c-format
-msgid "cannot create async thread: %s"
-msgstr "impossible de créer un fil asynchrone : %s"
+msgid "%s does not point to a valid object!"
+msgstr "%s ne pointe pas sur un objet valide!"
 
-#: run-command.c:1335
+#: refs.c:566
 #, c-format
 msgid ""
-"The '%s' hook was ignored because it's not set as executable.\n"
-"You can disable this warning with `git config advice.ignoredHook false`."
-msgstr ""
-"Le crochet '%s' a été ignoré parce qu'il n'est pas marqué comme exécutable.\n"
-"Vous pouvez désactiver cet avertissement avec `git config advice.ignoredHook "
-"false`."
-
-#: send-pack.c:146
-msgid "unexpected flush packet while reading remote unpack status"
+"Using '%s' as the name for the initial branch. This default branch name\n"
+"is subject to change. To configure the initial branch name to use in all\n"
+"of your new repositories, which will suppress this warning, call:\n"
+"\n"
+"\tgit config --global init.defaultBranch <name>\n"
+"\n"
+"Names commonly chosen instead of 'master' are 'main', 'trunk' and\n"
+"'development'. The just-created branch can be renamed via this command:\n"
+"\n"
+"\tgit branch -m <name>\n"
 msgstr ""
-"paquet de nettoyage inattendu pendant la lecture de l'état de dépaquetage "
-"distant"
+"Utilisation de '%s' comme nom de la branche initiale. Le nom de la branche\n"
+"par défaut peut changer. Pour configurer le nom de la branche initiale\n"
+"pour tous les nouveaux dépôts, et supprimer cet avertissement, lancez :\n"
+"\n"
+"\tgit config --global init.defaultBranch <nom>\n"
+"\n"
+"Les noms les plus utilisés à la place de 'master' sont 'main', 'trunk' et\n"
+"'development'. La branche nouvellement créée peut être rénommée avec :\n"
+"\n"
+"\tgit branch -m <nom>\n"
 
-#: send-pack.c:148
+#: refs.c:588
 #, c-format
-msgid "unable to parse remote unpack status: %s"
-msgstr "impossible d'analyser l'état de dépaquetage distant : %s"
+msgid "could not retrieve `%s`"
+msgstr "impossible de récupérer `%s`"
 
-#: send-pack.c:150
+#: refs.c:598
 #, c-format
-msgid "remote unpack failed: %s"
-msgstr "le dépaquetage a échoué : %s"
-
-#: send-pack.c:374
-msgid "failed to sign the push certificate"
-msgstr "impossible de signer le certificat de poussée"
-
-#: send-pack.c:467
-msgid "the receiving end does not support this repository's hash algorithm"
-msgstr "Le receveur ne gère pas l'algorithme d'empreinte de ce dépôt"
+msgid "invalid branch name: %s = %s"
+msgstr "Nom de branche invalide : %s = %s"
 
-#: send-pack.c:476
-msgid "the receiving end does not support --signed push"
-msgstr "Le receveur ne gère pas les poussées avec --signed"
+#: refs.c:674
+#, c-format
+msgid "ignoring dangling symref %s"
+msgstr "symref pendant %s ignoré"
 
-#: send-pack.c:478
-msgid ""
-"not sending a push certificate since the receiving end does not support --"
-"signed push"
-msgstr ""
-"pas d'envoi de certificat de poussée car le receveur ne gère pas les "
-"poussées avec --signed"
+#: refs.c:922
+#, c-format
+msgid "log for ref %s has gap after %s"
+msgstr "le journal pour la réf %s contient un trou après %s"
 
-#: send-pack.c:490
-msgid "the receiving end does not support --atomic push"
-msgstr "Le receveur ne gère pas les poussées avec --atomic"
+#: refs.c:929
+#, c-format
+msgid "log for ref %s unexpectedly ended on %s"
+msgstr "le journal pour la réf %s s'arrête de manière inattendue sur %s"
 
-#: send-pack.c:495
-msgid "the receiving end does not support push options"
-msgstr "Le receveur ne gère pas les options de poussées"
+#: refs.c:994
+#, c-format
+msgid "log for %s is empty"
+msgstr "le journal pour la réf %s est vide"
 
-#: sequencer.c:195
+#: refs.c:1086
 #, c-format
-msgid "invalid commit message cleanup mode '%s'"
-msgstr "mode de nettoyage invalide de message de validation '%s'"
+msgid "refusing to update ref with bad name '%s'"
+msgstr "refus de mettre à jour une réf avec un nom cassé '%s'"
 
-#: sequencer.c:323
+#: refs.c:1157
 #, c-format
-msgid "could not delete '%s'"
-msgstr "Impossible de supprimer '%s'"
+msgid "update_ref failed for ref '%s': %s"
+msgstr "échec de update_ref pour la réf '%s' : %s"
 
-#: sequencer.c:343 builtin/rebase.c:755 builtin/rebase.c:1596 builtin/rm.c:385
+#: refs.c:2051
 #, c-format
-msgid "could not remove '%s'"
-msgstr "impossible de supprimer '%s'"
+msgid "multiple updates for ref '%s' not allowed"
+msgstr "mises à jour multiples pour la réf '%s' non permises"
 
-#: sequencer.c:353
-msgid "revert"
-msgstr "revert"
+#: refs.c:2131
+msgid "ref updates forbidden inside quarantine environment"
+msgstr "mises à jour des références interdites en environnement de quarantaine"
 
-#: sequencer.c:355
-msgid "cherry-pick"
-msgstr "cherry-pick"
+#: refs.c:2142
+msgid "ref updates aborted by hook"
+msgstr "mises à jour des références annulées par le crochet"
+
+#: refs.c:2242 refs.c:2272
+#, c-format
+msgid "'%s' exists; cannot create '%s'"
+msgstr "'%s' existe ; impossible de créer '%s'"
+
+#: refs.c:2248 refs.c:2283
+#, c-format
+msgid "cannot process '%s' and '%s' at the same time"
+msgstr "impossible de traiter '%s' et '%s' en même temps"
+
+#: refs/files-backend.c:1228
+#, c-format
+msgid "could not remove reference %s"
+msgstr "impossible de supprimer la référence %s"
+
+#: refs/files-backend.c:1242 refs/packed-backend.c:1542
+#: refs/packed-backend.c:1552
+#, c-format
+msgid "could not delete reference %s: %s"
+msgstr "Impossible de supprimer la référence %s : %s"
+
+#: refs/files-backend.c:1245 refs/packed-backend.c:1555
+#, c-format
+msgid "could not delete references: %s"
+msgstr "impossible de supprimer les références : %s"
+
+#: refspec.c:170
+#, c-format
+msgid "invalid refspec '%s'"
+msgstr "spécificateur de réference invalide : '%s'"
+
+#: remote.c:351
+#, c-format
+msgid "config remote shorthand cannot begin with '/': %s"
+msgstr ""
+"un raccourci de configuration de distant ne peut pas commencer par '/' : %s"
+
+#: remote.c:399
+msgid "more than one receivepack given, using the first"
+msgstr "plus d'un receivepack fournis, utilisation du premier"
+
+#: remote.c:407
+msgid "more than one uploadpack given, using the first"
+msgstr "plus d'un uploadpack fournis, utilisation du premier"
+
+#: remote.c:590
+#, 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:594
+#, c-format
+msgid "%s usually tracks %s, not %s"
+msgstr "%s suit habituellement %s, pas %s"
+
+#: remote.c:598
+#, c-format
+msgid "%s tracks both %s and %s"
+msgstr "%s suit à la fois %s et %s"
+
+#: remote.c:666
+#, c-format
+msgid "key '%s' of pattern had no '*'"
+msgstr "la clé '%s' du modèle n'a pas de '*'"
+
+#: remote.c:676
+#, c-format
+msgid "value '%s' of pattern has no '*'"
+msgstr "la valeur '%s' du modèle n'a pas de '*'"
+
+#: remote.c:1083
+#, c-format
+msgid "src refspec %s does not match any"
+msgstr ""
+"le spécificateur de référence source %s ne correspond à aucune référence"
+
+#: remote.c:1088
+#, c-format
+msgid "src refspec %s matches more than one"
+msgstr ""
+"le spécificateur de référence source %s correspond à plus d'une référence"
+
+#. TRANSLATORS: "matches '%s'%" is the <dst> part of "git push
+#. <remote> <src>:<dst>" push, and "being pushed ('%s')" is
+#. the <src>.
+#.
+#: remote.c:1103
+#, c-format
+msgid ""
+"The destination you provided is not a full refname (i.e.,\n"
+"starting with \"refs/\"). We tried to guess what you meant by:\n"
+"\n"
+"- Looking for a ref that matches '%s' on the remote side.\n"
+"- Checking if the <src> being pushed ('%s')\n"
+"  is a ref in \"refs/{heads,tags}/\". If so we add a corresponding\n"
+"  refs/{heads,tags}/ prefix on the remote side.\n"
+"\n"
+"Neither worked, so we gave up. You must fully qualify the ref."
+msgstr ""
+"La destination que vous avez fournie n'est pas un nom de référence complète\n"
+"(c'est-à-dire commençant par \"ref/\"). Essai d'approximation par :\n"
+"\n"
+"- Recherche d'une référence qui correspond à '%s' sur le serveur distant.\n"
+"- Vérification si la <source> en cours de poussée ('%s')\n"
+"  est une référence dans \"refs/{heads,tags}/\". Si oui, ajout du préfixe\n"
+"  refs/{heads,tags}/ correspondant du côté distant.\n"
+"\n"
+"Aucune n'a fonctionné, donc abandon. Veuillez spécifier une référence "
+"totalement qualifiée."
+
+#: remote.c:1123
+#, c-format
+msgid ""
+"The <src> part of the refspec is a commit object.\n"
+"Did you mean to create a new branch by pushing to\n"
+"'%s:refs/heads/%s'?"
+msgstr ""
+"la partie <source> du spécificateur de référence est un objet commit.\n"
+"Souhaitiez-vous créer une nouvelle branche en poussant sur\n"
+"'%s:refs/heads/%s' ?"
+
+#: remote.c:1128
+#, c-format
+msgid ""
+"The <src> part of the refspec is a tag object.\n"
+"Did you mean to create a new tag by pushing to\n"
+"'%s:refs/tags/%s'?"
+msgstr ""
+"la partie <source> du spécificateur de référence est un objet étiquette.\n"
+"Souhaitiez-vous créer une nouvelle étiquette en poussant sur\n"
+"'%s:refs/tags/%s' ?"
+
+#: remote.c:1133
+#, c-format
+msgid ""
+"The <src> part of the refspec is a tree object.\n"
+"Did you mean to tag a new tree by pushing to\n"
+"'%s:refs/tags/%s'?"
+msgstr ""
+"la partie <source> du spécificateur de référence est un objet arbre.\n"
+"Souhaitiez-vous créer un nouvel arbre en poussant sur\n"
+"'%s:refs/tags/%s' ?"
+
+#: remote.c:1138
+#, c-format
+msgid ""
+"The <src> part of the refspec is a blob object.\n"
+"Did you mean to tag a new blob by pushing to\n"
+"'%s:refs/tags/%s'?"
+msgstr ""
+"la partie <source> du spécificateur de référence est un objet blob.\n"
+"Souhaitiez-vous créer un nouveau blob en poussant sur\n"
+"'%s:refs/tags/%s' ?"
+
+#: remote.c:1174
+#, c-format
+msgid "%s cannot be resolved to branch"
+msgstr "'%s' ne peut pas être résolue comme une branche"
+
+#: remote.c:1185
+#, c-format
+msgid "unable to delete '%s': remote ref does not exist"
+msgstr "suppression de '%s' impossible : la référence distante n'existe pas"
+
+#: remote.c:1197
+#, c-format
+msgid "dst refspec %s matches more than one"
+msgstr ""
+"le spécificateur de référence dst %s correspond à plus d'un spécificateur de "
+"références"
+
+#: remote.c:1204
+#, c-format
+msgid "dst ref %s receives from more than one src"
+msgstr "le spécificateur de référence dst %s reçoit depuis plus d'une source"
+
+#: remote.c:1724 remote.c:1825
+msgid "HEAD does not point to a branch"
+msgstr "HEAD ne pointe pas sur une branche"
+
+#: remote.c:1733
+#, c-format
+msgid "no such branch: '%s'"
+msgstr "pas de branche '%s'"
+
+#: remote.c:1736
+#, c-format
+msgid "no upstream configured for branch '%s'"
+msgstr "aucune branche amont configurée pour la branche '%s'"
+
+#: remote.c:1742
+#, 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:1757
+#, c-format
+msgid "push destination '%s' on remote '%s' has no local tracking branch"
+msgstr ""
+"la destination de poussée '%s' sur le serveur distant '%s' n'a pas de "
+"branche locale de suivi"
+
+#: remote.c:1769
+#, c-format
+msgid "branch '%s' has no remote for pushing"
+msgstr "la branche '%s' n'a aucune branche distante de poussée"
+
+#: remote.c:1779
+#, 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:1792
+msgid "push has no destination (push.default is 'nothing')"
+msgstr "la poussée n'a pas de destination (push.default vaut 'nothing')"
+
+#: remote.c:1814
+msgid "cannot resolve 'simple' push to a single destination"
+msgstr ""
+"impossible de résoudre une poussée 'simple' pour une destination unique"
+
+#: remote.c:1943
+#, c-format
+msgid "couldn't find remote ref %s"
+msgstr "impossible de trouver la référence distante %s"
+
+#: remote.c:1956
+#, c-format
+msgid "* Ignoring funny ref '%s' locally"
+msgstr "* Référence bizarre '%s' ignorée localement"
+
+#: remote.c:2119
+#, 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:2123
+msgid "  (use \"git branch --unset-upstream\" to fixup)\n"
+msgstr "  (utilisez \"git branch --unset-upstream\" pour corriger)\n"
+
+#: remote.c:2126
+#, c-format
+msgid "Your branch is up to date with '%s'.\n"
+msgstr "Votre branche est à jour avec '%s'.\n"
+
+#: remote.c:2130
+#, 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:2133
+#, c-format
+msgid "  (use \"%s\" for details)\n"
+msgstr "  (utilisez \"%s\" pour plus de détails)\n"
+
+#: remote.c:2137
+#, c-format
+msgid "Your branch is ahead of '%s' by %d commit.\n"
+msgid_plural "Your branch is ahead of '%s' by %d commits.\n"
+msgstr[0] "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:2143
+msgid "  (use \"git push\" to publish your local commits)\n"
+msgstr "  (utilisez \"git push\" pour publier vos commits locaux)\n"
+
+#: remote.c:2146
+#, c-format
+msgid "Your branch is behind '%s' by %d commit, and can be fast-forwarded.\n"
+msgid_plural ""
+"Your branch is behind '%s' by %d commits, and can be fast-forwarded.\n"
+msgstr[0] ""
+"Votre branche est en retard sur '%s' de %d commit, et peut être mise à jour "
+"en avance rapide.\n"
+msgstr[1] ""
+"Votre branche est en retard sur '%s' de %d commits, et peut être mise à jour "
+"en avance rapide.\n"
+
+#: remote.c:2154
+msgid "  (use \"git pull\" to update your local branch)\n"
+msgstr "  (utilisez \"git pull\" pour mettre à jour votre branche locale)\n"
+
+#: remote.c:2157
+#, c-format
+msgid ""
+"Your branch and '%s' have diverged,\n"
+"and have %d and %d different commit each, respectively.\n"
+msgid_plural ""
+"Your branch and '%s' have diverged,\n"
+"and have %d and %d different commits each, respectively.\n"
+msgstr[0] ""
+"Votre branche et '%s' ont divergé,\n"
+"et ont %d et %d commit différent chacune respectivement.\n"
+msgstr[1] ""
+"Votre branche et '%s' ont divergé,\n"
+"et ont %d et %d commits différents chacune respectivement.\n"
+
+#: remote.c:2167
+msgid "  (use \"git pull\" to merge the remote branch into yours)\n"
+msgstr ""
+"  (utilisez \"git pull\" pour fusionner la branche distante dans la vôtre)\n"
+
+#: remote.c:2359
+#, c-format
+msgid "cannot parse expected object name '%s'"
+msgstr "impossible d'analyser le nom attendu d'objet '%s'"
+
+#: replace-object.c:21
+#, c-format
+msgid "bad replace ref name: %s"
+msgstr "mauvaise références de remplacement : %s"
+
+#: replace-object.c:30
+#, c-format
+msgid "duplicate replace ref: %s"
+msgstr "référence de remplacement dupliquée : %s"
+
+#: replace-object.c:82
+#, c-format
+msgid "replace depth too high for object %s"
+msgstr "profondeur de remplacement trop grande pour l'objet %s"
+
+#: rerere.c:201 rerere.c:210 rerere.c:213
+msgid "corrupt MERGE_RR"
+msgstr "MERGE_RR corrompu"
+
+#: rerere.c:248 rerere.c:253
+msgid "unable to write rerere record"
+msgstr "impossible d'écrire l'enregistrement rerere"
+
+#: rerere.c:479
+#, c-format
+msgid "there were errors while writing '%s' (%s)"
+msgstr "il y a eu des erreurs à l'écriture de '%s' (%s)"
+
+#: rerere.c:482
+#, c-format
+msgid "failed to flush '%s'"
+msgstr "échec du flush de '%s'"
+
+#: rerere.c:487 rerere.c:1023
+#, c-format
+msgid "could not parse conflict hunks in '%s'"
+msgstr "impossible d'analyser la section en conflit dans '%s'"
+
+#: rerere.c:668
+#, c-format
+msgid "failed utime() on '%s'"
+msgstr "échec de utime() sur '%s'"
+
+#: rerere.c:678
+#, c-format
+msgid "writing '%s' failed"
+msgstr "échec de l'écriture de '%s'"
+
+#: rerere.c:698
+#, c-format
+msgid "Staged '%s' using previous resolution."
+msgstr "'%s' indexé en utilisant la résolution pré-existante."
+
+#: rerere.c:737
+#, c-format
+msgid "Recorded resolution for '%s'."
+msgstr "Résolution enregistrée pour '%s'."
+
+#: rerere.c:772
+#, c-format
+msgid "Resolved '%s' using previous resolution."
+msgstr "'%s' résolu en utilisant la résolution pré-existante."
+
+#: rerere.c:787
+#, c-format
+msgid "cannot unlink stray '%s'"
+msgstr "impossible de délier '%s' qui est errant"
+
+#: rerere.c:791
+#, c-format
+msgid "Recorded preimage for '%s'"
+msgstr "Pré-image enregistrée pour '%s'"
+
+#: rerere.c:865 submodule.c:2088 builtin/log.c:1991
+#: builtin/submodule--helper.c:1878 builtin/submodule--helper.c:1890
+#, c-format
+msgid "could not create directory '%s'"
+msgstr "impossible de créer le répertoire '%s'"
+
+#: rerere.c:1041
+#, c-format
+msgid "failed to update conflicted state in '%s'"
+msgstr "échec de la mise à jour de l'état en conflit dans '%s'"
+
+#: rerere.c:1052 rerere.c:1059
+#, c-format
+msgid "no remembered resolution for '%s'"
+msgstr "Aucune résolution enregistrée pour '%s'"
+
+#: rerere.c:1061
+#, c-format
+msgid "cannot unlink '%s'"
+msgstr "impossible de délier '%s'"
+
+#: rerere.c:1071
+#, c-format
+msgid "Updated preimage for '%s'"
+msgstr "Pré-image mise à jour pour '%s'"
+
+#: rerere.c:1080
+#, c-format
+msgid "Forgot resolution for '%s'\n"
+msgstr "Résolution  pour '%s' oubliée\n"
+
+#: rerere.c:1191
+msgid "unable to open rr-cache directory"
+msgstr "impossible d'ouvrir le répertoire rr-cache"
+
+#: reset.c:42
+msgid "could not determine HEAD revision"
+msgstr "impossible de déterminer la révision HEAD"
+
+#: reset.c:70 reset.c:76 sequencer.c:3468
+#, c-format
+msgid "failed to find tree of %s"
+msgstr "impossible de trouver l'arbre de %s"
+
+#: revision.c:2338
+msgid "--unpacked=<packfile> no longer supported"
+msgstr "--unpacked=<fichier-paquet> n'est plus géré"
+
+#: revision.c:2668
+msgid "your current branch appears to be broken"
+msgstr "votre branche actuelle semble cassée"
+
+#: revision.c:2671
+#, 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:2877
+msgid "-L does not yet support diff formats besides -p and -s"
+msgstr "-L ne supporte pas encore les formats de diff autres que -p et -s"
+
+#: run-command.c:767
+msgid "open /dev/null failed"
+msgstr "échec de l'ouverture de /dev/null"
+
+#: run-command.c:1274
+#, c-format
+msgid "cannot create async thread: %s"
+msgstr "impossible de créer un fil asynchrone : %s"
+
+#: run-command.c:1338
+#, c-format
+msgid ""
+"The '%s' hook was ignored because it's not set as executable.\n"
+"You can disable this warning with `git config advice.ignoredHook false`."
+msgstr ""
+"Le crochet '%s' a été ignoré parce qu'il n'est pas marqué comme exécutable.\n"
+"Vous pouvez désactiver cet avertissement avec `git config advice.ignoredHook "
+"false`."
+
+#: send-pack.c:146
+msgid "unexpected flush packet while reading remote unpack status"
+msgstr ""
+"paquet de nettoyage inattendu pendant la lecture de l'état de dépaquetage "
+"distant"
+
+#: send-pack.c:148
+#, c-format
+msgid "unable to parse remote unpack status: %s"
+msgstr "impossible d'analyser l'état de dépaquetage distant : %s"
+
+#: send-pack.c:150
+#, c-format
+msgid "remote unpack failed: %s"
+msgstr "le dépaquetage a échoué : %s"
+
+#: send-pack.c:374
+msgid "failed to sign the push certificate"
+msgstr "impossible de signer le certificat de poussée"
+
+#: send-pack.c:467
+msgid "the receiving end does not support this repository's hash algorithm"
+msgstr "Le receveur ne gère pas l'algorithme d'empreinte de ce dépôt"
+
+#: send-pack.c:476
+msgid "the receiving end does not support --signed push"
+msgstr "Le receveur ne gère pas les poussées avec --signed"
+
+#: send-pack.c:478
+msgid ""
+"not sending a push certificate since the receiving end does not support --"
+"signed push"
+msgstr ""
+"pas d'envoi de certificat de poussée car le receveur ne gère pas les "
+"poussées avec --signed"
+
+#: send-pack.c:490
+msgid "the receiving end does not support --atomic push"
+msgstr "Le receveur ne gère pas les poussées avec --atomic"
+
+#: send-pack.c:495
+msgid "the receiving end does not support push options"
+msgstr "Le receveur ne gère pas les options de poussées"
+
+#: sequencer.c:195
+#, c-format
+msgid "invalid commit message cleanup mode '%s'"
+msgstr "mode de nettoyage invalide de message de validation '%s'"
+
+#: sequencer.c:323
+#, c-format
+msgid "could not delete '%s'"
+msgstr "Impossible de supprimer '%s'"
+
+#: sequencer.c:343 builtin/rebase.c:757 builtin/rebase.c:1602 builtin/rm.c:385
+#, c-format
+msgid "could not remove '%s'"
+msgstr "impossible de supprimer '%s'"
+
+#: sequencer.c:353
+msgid "revert"
+msgstr "revert"
+
+#: sequencer.c:355
+msgid "cherry-pick"
+msgstr "cherry-pick"
 
 #: sequencer.c:357
 msgid "rebase"
@@ -6957,13 +7576,13 @@ msgstr ""
 "avec 'git add <chemins>' ou 'git rm <chemins>'\n"
 "puis validez le résultat avec 'git commit'"
 
-#: sequencer.c:434 sequencer.c:3062
+#: sequencer.c:434 sequencer.c:3070
 #, c-format
 msgid "could not lock '%s'"
 msgstr "impossible de verrouiller '%s'"
 
-#: sequencer.c:436 sequencer.c:2861 sequencer.c:3066 sequencer.c:3080
-#: sequencer.c:3337 sequencer.c:5326 strbuf.c:1168 wrapper.c:631
+#: sequencer.c:436 sequencer.c:2869 sequencer.c:3074 sequencer.c:3088
+#: sequencer.c:3345 sequencer.c:5334 strbuf.c:1168 wrapper.c:631
 #, c-format
 msgid "could not write to '%s'"
 msgstr "impossible d'écrire dans '%s'"
@@ -6973,8 +7592,8 @@ msgstr "impossible d'écrire dans '%s'"
 msgid "could not write eol to '%s'"
 msgstr "impossible d'écrire la fin de ligne dans '%s'"
 
-#: sequencer.c:446 sequencer.c:2866 sequencer.c:3068 sequencer.c:3082
-#: sequencer.c:3345
+#: sequencer.c:446 sequencer.c:2874 sequencer.c:3076 sequencer.c:3090
+#: sequencer.c:3353
 #, c-format
 msgid "failed to finalize '%s'"
 msgstr "échec lors de la finalisation de '%s'"
@@ -6993,7 +7612,7 @@ msgstr "validez vos modifications ou les remiser pour continuer."
 msgid "%s: fast-forward"
 msgstr "%s : avance rapide"
 
-#: sequencer.c:560 builtin/tag.c:566
+#: sequencer.c:560 builtin/tag.c:598
 #, c-format
 msgid "Invalid cleanup mode %s"
 msgstr "Mode de nettoyage invalide %s"
@@ -7006,60 +7625,60 @@ msgstr "Mode de nettoyage invalide %s"
 msgid "%s: Unable to write new index file"
 msgstr "%s: Impossible d'écrire le nouveau fichier index"
 
-#: sequencer.c:687
+#: sequencer.c:684
 msgid "unable to update cache tree"
 msgstr "impossible de mettre à jour l'arbre de cache"
 
-#: sequencer.c:701
+#: sequencer.c:698
 msgid "could not resolve HEAD commit"
 msgstr "impossible de résoudre le commit HEAD"
 
-#: sequencer.c:781
+#: sequencer.c:778
 #, c-format
 msgid "no key present in '%.*s'"
 msgstr "aucune clé présente dans '%.*s'"
 
-#: sequencer.c:792
+#: sequencer.c:789
 #, c-format
 msgid "unable to dequote value of '%s'"
 msgstr "Impossible de décoter la valeur de '%s'"
 
-#: sequencer.c:829 wrapper.c:201 wrapper.c:371 builtin/am.c:710
-#: builtin/am.c:802 builtin/merge.c:1135 builtin/rebase.c:908
+#: sequencer.c:826 wrapper.c:201 wrapper.c:371 builtin/am.c:710
+#: builtin/am.c:802 builtin/merge.c:1136 builtin/rebase.c:910
 #, c-format
 msgid "could not open '%s' for reading"
 msgstr "impossible d'ouvrir '%s' en lecture"
 
-#: sequencer.c:839
+#: sequencer.c:836
 msgid "'GIT_AUTHOR_NAME' already given"
 msgstr "'GIT_AUTHOR_NAME' déjà fourni"
 
-#: sequencer.c:844
+#: sequencer.c:841
 msgid "'GIT_AUTHOR_EMAIL' already given"
 msgstr "'GIT_AUTHOR_EMAIL' déjà fourni"
 
-#: sequencer.c:849
+#: sequencer.c:846
 msgid "'GIT_AUTHOR_DATE' already given"
 msgstr "'GIT_AUTHOR_DATE' déjà fourni"
 
-#: sequencer.c:853
+#: sequencer.c:850
 #, c-format
 msgid "unknown variable '%s'"
 msgstr "variable inconnue '%s'"
 
-#: sequencer.c:858
+#: sequencer.c:855
 msgid "missing 'GIT_AUTHOR_NAME'"
 msgstr "'GIT_AUTHOR_NAME' manquant"
 
-#: sequencer.c:860
+#: sequencer.c:857
 msgid "missing 'GIT_AUTHOR_EMAIL'"
 msgstr "'GIT_AUTHOR_EMAIL' manquant"
 
-#: sequencer.c:862
+#: sequencer.c:859
 msgid "missing 'GIT_AUTHOR_DATE'"
 msgstr "'GIT_AUTHOR_DATE' manquant"
 
-#: sequencer.c:927
+#: sequencer.c:924
 #, c-format
 msgid ""
 "you have staged changes in your working tree\n"
@@ -7088,11 +7707,11 @@ msgstr ""
 "\n"
 "  git rebase --continue\n"
 
-#: sequencer.c:1208
+#: sequencer.c:1211
 msgid "'prepare-commit-msg' hook failed"
 msgstr "échec du crochet 'prepare-commit-msg'"
 
-#: sequencer.c:1214
+#: sequencer.c:1217
 msgid ""
 "Your name and email address were configured automatically based\n"
 "on your username and hostname. Please check that they are accurate.\n"
@@ -7121,7 +7740,7 @@ msgstr ""
 "\n"
 "    git commit --amend --reset-author\n"
 
-#: sequencer.c:1227
+#: sequencer.c:1230
 msgid ""
 "Your name and email address were configured automatically based\n"
 "on your username and hostname. Please check that they are accurate.\n"
@@ -7147,1205 +7766,846 @@ msgstr ""
 "\n"
 "    git commit --amend --reset-author\n"
 
-#: sequencer.c:1269
+#: sequencer.c:1272
 msgid "couldn't look up newly created commit"
 msgstr "impossible de retrouver le commit nouvellement créé"
 
-#: sequencer.c:1271
+#: sequencer.c:1274
 msgid "could not parse newly created commit"
 msgstr "impossible d'analyser le commit nouvellement créé"
 
-#: sequencer.c:1317
+#: sequencer.c:1320
 msgid "unable to resolve HEAD after creating commit"
 msgstr "impossible de résoudre HEAD après création du commit"
 
-#: sequencer.c:1319
+#: sequencer.c:1322
 msgid "detached HEAD"
 msgstr "HEAD détachée"
 
-#: sequencer.c:1323
+#: sequencer.c:1326
 msgid " (root-commit)"
 msgstr " (commit racine)"
 
-#: sequencer.c:1344
+#: sequencer.c:1347
 msgid "could not parse HEAD"
 msgstr "impossible de lire HEAD"
 
-#: sequencer.c:1346
+#: sequencer.c:1349
 #, c-format
 msgid "HEAD %s is not a commit!"
 msgstr "HEAD %s n'est pas un commit !"
 
-#: sequencer.c:1350 sequencer.c:1425 builtin/commit.c:1577
+#: sequencer.c:1353 sequencer.c:1431 builtin/commit.c:1577
 msgid "could not parse HEAD commit"
 msgstr "impossible d'analyser le commit HEAD"
 
-#: sequencer.c:1403 sequencer.c:2100
+#: sequencer.c:1409 sequencer.c:2108
 msgid "unable to parse commit author"
 msgstr "impossible d'analyser l'auteur du commit"
 
-#: sequencer.c:1414 builtin/am.c:1566 builtin/merge.c:701
+#: sequencer.c:1420 builtin/am.c:1566 builtin/merge.c:702
 msgid "git write-tree failed to write a tree"
 msgstr "git write-tree a échoué à écrire un arbre"
 
-#: sequencer.c:1447 sequencer.c:1565
+#: sequencer.c:1453 sequencer.c:1573
 #, c-format
 msgid "unable to read commit message from '%s'"
 msgstr "impossible de lire le message de validation de '%s'"
 
-#: sequencer.c:1476 sequencer.c:1508
+#: sequencer.c:1484 sequencer.c:1516
 #, c-format
 msgid "invalid author identity '%s'"
 msgstr "identité d'auteur invalide '%s'"
 
-#: sequencer.c:1482
+#: sequencer.c:1490
 msgid "corrupt author: missing date information"
-msgstr "auteur corrompu : information de date manquante"
-
-#: sequencer.c:1521 builtin/am.c:1593 builtin/commit.c:1678 builtin/merge.c:904
-#: builtin/merge.c:929 t/helper/test-fast-rebase.c:78
-msgid "failed to write commit object"
-msgstr "échec de l'écriture de l'objet commit"
-
-#: sequencer.c:1548 sequencer.c:4283 t/helper/test-fast-rebase.c:198
-#, c-format
-msgid "could not update %s"
-msgstr "impossible de mettre à jour %s"
-
-#: sequencer.c:1597
-#, c-format
-msgid "could not parse commit %s"
-msgstr "impossible d'analyser le commit %s"
-
-#: sequencer.c:1602
-#, c-format
-msgid "could not parse parent commit %s"
-msgstr "impossible d'analyser le commit parent %s"
-
-#: sequencer.c:1685 sequencer.c:1796
-#, c-format
-msgid "unknown command: %d"
-msgstr "commande inconnue : %d"
-
-#: sequencer.c:1743 sequencer.c:1768
-#, c-format
-msgid "This is a combination of %d commits."
-msgstr "Ceci est la combinaison de %d commits."
-
-#: sequencer.c:1753
-msgid "need a HEAD to fixup"
-msgstr "une HEAD est nécessaire à la correction"
-
-#: sequencer.c:1755 sequencer.c:3372
-msgid "could not read HEAD"
-msgstr "Impossible de lire HEAD"
-
-#: sequencer.c:1757
-msgid "could not read HEAD's commit message"
-msgstr "impossible de lire le message de validation de HEAD"
-
-#: sequencer.c:1763
-#, c-format
-msgid "cannot write '%s'"
-msgstr "impossible d'écrire '%s'"
-
-#: sequencer.c:1770 git-rebase--preserve-merges.sh:486
-msgid "This is the 1st commit message:"
-msgstr "Ceci est le premier message de validation :"
-
-#: sequencer.c:1778
-#, c-format
-msgid "could not read commit message of %s"
-msgstr "impossible de lire le message de validation de %s"
-
-#: sequencer.c:1785
-#, c-format
-msgid "This is the commit message #%d:"
-msgstr "Ceci est le message de validation numéro %d :"
-
-#: sequencer.c:1791
-#, c-format
-msgid "The commit message #%d will be skipped:"
-msgstr "Le message de validation %d sera ignoré :"
-
-#: sequencer.c:1879
-msgid "your index file is unmerged."
-msgstr "votre fichier d'index n'est pas fusionné."
-
-#: sequencer.c:1886
-msgid "cannot fixup root commit"
-msgstr "impossible de réparer le commit racine"
-
-#: sequencer.c:1905
-#, 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:1913 sequencer.c:1921
-#, c-format
-msgid "commit %s does not have parent %d"
-msgstr "le commit %s n'a pas de parent %d"
-
-#: sequencer.c:1927
-#, 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:1946
-#, c-format
-msgid "%s: cannot parse parent commit %s"
-msgstr "%s : impossible d'analyser le commit parent %s"
-
-#: sequencer.c:2011
-#, c-format
-msgid "could not rename '%s' to '%s'"
-msgstr "impossible de renommer '%s' en '%s'"
-
-#: sequencer.c:2071
-#, c-format
-msgid "could not revert %s... %s"
-msgstr "impossible d'annuler %s... %s"
-
-#: sequencer.c:2072
-#, c-format
-msgid "could not apply %s... %s"
-msgstr "impossible d'appliquer %s... %s"
-
-#: sequencer.c:2092
-#, c-format
-msgid "dropping %s %s -- patch contents already upstream\n"
-msgstr "abandon de %s %s -- le contenu de la rustine déjà en amont\n"
-
-#: sequencer.c:2150
-#, c-format
-msgid "git %s: failed to read the index"
-msgstr "git %s : échec à la lecture de l'index"
-
-#: sequencer.c:2157
-#, c-format
-msgid "git %s: failed to refresh the index"
-msgstr "git %s : échec du rafraîchissement de l'index"
-
-#: sequencer.c:2234
-#, c-format
-msgid "%s does not accept arguments: '%s'"
-msgstr "%s n'accepte pas d'argument : '%s'"
-
-#: sequencer.c:2243
-#, c-format
-msgid "missing arguments for %s"
-msgstr "argument manquant pour %s"
-
-#: sequencer.c:2274
-#, c-format
-msgid "could not parse '%s'"
-msgstr "impossible d'analyser '%s'"
-
-#: sequencer.c:2335
-#, c-format
-msgid "invalid line %d: %.*s"
-msgstr "ligne %d invalide : %.*s"
-
-#: sequencer.c:2346
-#, c-format
-msgid "cannot '%s' without a previous commit"
-msgstr "'%s' impossible avec le commit précédent"
-
-#: sequencer.c:2432
-msgid "cancelling a cherry picking in progress"
-msgstr "annulation d'un picorage en cours"
-
-#: sequencer.c:2441
-msgid "cancelling a revert in progress"
-msgstr "annulation d'un retour en cours"
-
-#: sequencer.c:2485
-msgid "please fix this using 'git rebase --edit-todo'."
-msgstr "veuillez corriger ceci en utilisant 'git rebase --edit-todo'."
-
-#: sequencer.c:2487
-#, c-format
-msgid "unusable instruction sheet: '%s'"
-msgstr "feuille d'instruction inutilisable : '%s'"
-
-#: sequencer.c:2492
-msgid "no commits parsed."
-msgstr "aucun commit analysé."
-
-#: sequencer.c:2503
-msgid "cannot cherry-pick during a revert."
-msgstr "impossible de picorer pendant l'annulation d'un commit."
-
-#: sequencer.c:2505
-msgid "cannot revert during a cherry-pick."
-msgstr "impossible d'annuler un commit pendant un picorage."
-
-#: sequencer.c:2583
-#, c-format
-msgid "invalid value for %s: %s"
-msgstr "valeur invalide pour %s : %s"
-
-#: sequencer.c:2690
-msgid "unusable squash-onto"
-msgstr "\"écrase-sur\" inutilisable"
-
-#: sequencer.c:2710
-#, c-format
-msgid "malformed options sheet: '%s'"
-msgstr "feuille d'options malformée : %s"
-
-#: sequencer.c:2803 sequencer.c:4636
-msgid "empty commit set passed"
-msgstr "l'ensemble de commits spécifié est vide"
-
-#: sequencer.c:2820
-msgid "revert is already in progress"
-msgstr "un retour est déjà en cours"
-
-#: sequencer.c:2822
-#, c-format
-msgid "try \"git revert (--continue | %s--abort | --quit)\""
-msgstr "essayez \"git revert (--continue | %s--abort | --quit)\""
-
-#: sequencer.c:2825
-msgid "cherry-pick is already in progress"
-msgstr "un picorage est déjà en cours"
-
-#: sequencer.c:2827
-#, c-format
-msgid "try \"git cherry-pick (--continue | %s--abort | --quit)\""
-msgstr "essayez \"git cherry-pick (--continue | %s--abort | --quit)\""
-
-#: sequencer.c:2841
-#, c-format
-msgid "could not create sequencer directory '%s'"
-msgstr "impossible de créer le répertoire de séquenceur '%s'"
-
-#: sequencer.c:2856
-msgid "could not lock HEAD"
-msgstr "impossible de verrouiller HEAD"
-
-#: sequencer.c:2916 sequencer.c:4371
-msgid "no cherry-pick or revert in progress"
-msgstr "aucun picorage ou retour en cours"
-
-#: sequencer.c:2918 sequencer.c:2929
-msgid "cannot resolve HEAD"
-msgstr "impossible de résoudre HEAD"
-
-#: sequencer.c:2920 sequencer.c:2964
-msgid "cannot abort from a branch yet to be born"
-msgstr "impossible d'abandonner depuis une branche non encore créée"
-
-#: sequencer.c:2950 builtin/grep.c:756
-#, c-format
-msgid "cannot open '%s'"
-msgstr "impossible d'ouvrir '%s'"
-
-#: sequencer.c:2952
-#, c-format
-msgid "cannot read '%s': %s"
-msgstr "impossible de lire '%s' : %s"
-
-#: sequencer.c:2953
-msgid "unexpected end of file"
-msgstr "fin de fichier inattendue"
-
-#: sequencer.c:2959
-#, 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:2970
-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:3011
-msgid "no revert in progress"
-msgstr "Pas de retour en cours ?"
-
-#: sequencer.c:3020
-msgid "no cherry-pick in progress"
-msgstr "aucun picorage en cours"
-
-#: sequencer.c:3030
-msgid "failed to skip the commit"
-msgstr "échec du saut de commit"
-
-#: sequencer.c:3037
-msgid "there is nothing to skip"
-msgstr "il n'y a rien à sauter"
-
-#: sequencer.c:3040
-#, c-format
-msgid ""
-"have you committed already?\n"
-"try \"git %s --continue\""
-msgstr ""
-"Avez-vous déjà validé ?\n"
-"essayez \"git %s -continue\""
-
-#: sequencer.c:3202 sequencer.c:4263
-msgid "cannot read HEAD"
-msgstr "impossible de lire HEAD"
-
-#: sequencer.c:3219
-#, c-format
-msgid "unable to copy '%s' to '%s'"
-msgstr "impossible de copier '%s' vers '%s'"
-
-#: sequencer.c:3227
-#, c-format
-msgid ""
-"You can amend the commit now, with\n"
-"\n"
-"  git commit --amend %s\n"
-"\n"
-"Once you are satisfied with your changes, run\n"
-"\n"
-"  git rebase --continue\n"
-msgstr ""
-"Vous pouvez corriger le commit maintenant, avec\n"
-"\n"
-"  git commit --amend %s\n"
-"\n"
-"après avoir réalisé vos modifications, lancez\n"
-"\n"
-"  git rebase --continue\n"
+msgstr "auteur corrompu : information de date manquante"
 
-#: sequencer.c:3237
-#, c-format
-msgid "Could not apply %s... %.*s"
-msgstr "impossible d'appliquer %s... %.*s"
+#: sequencer.c:1529 builtin/am.c:1593 builtin/commit.c:1678 builtin/merge.c:905
+#: builtin/merge.c:930 t/helper/test-fast-rebase.c:78
+msgid "failed to write commit object"
+msgstr "échec de l'écriture de l'objet commit"
 
-#: sequencer.c:3244
+#: sequencer.c:1556 sequencer.c:4291 t/helper/test-fast-rebase.c:198
 #, c-format
-msgid "Could not merge %.*s"
-msgstr "Impossible de fusionner %.*s"
+msgid "could not update %s"
+msgstr "impossible de mettre à jour %s"
 
-#: sequencer.c:3258 sequencer.c:3262 builtin/difftool.c:640
+#: sequencer.c:1605
 #, c-format
-msgid "could not copy '%s' to '%s'"
-msgstr "impossible de copier '%s' vers '%s'"
+msgid "could not parse commit %s"
+msgstr "impossible d'analyser le commit %s"
 
-#: sequencer.c:3274
+#: sequencer.c:1610
 #, c-format
-msgid "Executing: %s\n"
-msgstr "Exécution : %s\n"
+msgid "could not parse parent commit %s"
+msgstr "impossible d'analyser le commit parent %s"
 
-#: sequencer.c:3289
+#: sequencer.c:1693 sequencer.c:1804
 #, c-format
-msgid ""
-"execution failed: %s\n"
-"%sYou can fix the problem, and then run\n"
-"\n"
-"  git rebase --continue\n"
-"\n"
-msgstr ""
-"échec d'exécution : %s\n"
-"%sVous pouvez corriger le problème, puis lancer\n"
-"\n"
-"git rebase --continue\n"
-"\n"
-
-#: sequencer.c:3295
-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"
+msgid "unknown command: %d"
+msgstr "commande inconnue : %d"
 
-#: sequencer.c:3301
+#: sequencer.c:1751 sequencer.c:1776
 #, c-format
-msgid ""
-"execution succeeded: %s\n"
-"but left changes to the index and/or the working tree\n"
-"Commit or stash your changes, and then run\n"
-"\n"
-"  git rebase --continue\n"
-"\n"
-msgstr ""
-"L'exécution a réussi : %s\n"
-"mais a laissé des modifications dans l'index ou la copie de travail\n"
-"Validez ou remisez vos modification, puis lancez\n"
-"\n"
-"  git rebase --continue\n"
-"\n"
+msgid "This is a combination of %d commits."
+msgstr "Ceci est la combinaison de %d commits."
 
-#: sequencer.c:3362
-#, c-format
-msgid "illegal label name: '%.*s'"
-msgstr "nom de label illégal '%.*s'"
+#: sequencer.c:1761
+msgid "need a HEAD to fixup"
+msgstr "une HEAD est nécessaire à la correction"
 
-#: sequencer.c:3416
-msgid "writing fake root commit"
-msgstr "écriture d'un commit racine bidon"
+#: sequencer.c:1763 sequencer.c:3380
+msgid "could not read HEAD"
+msgstr "Impossible de lire HEAD"
 
-#: sequencer.c:3421
-msgid "writing squash-onto"
-msgstr "écriture de 'écraser-sur'"
+#: sequencer.c:1765
+msgid "could not read HEAD's commit message"
+msgstr "impossible de lire le message de validation de HEAD"
 
-#: sequencer.c:3505
+#: sequencer.c:1771
 #, c-format
-msgid "could not resolve '%s'"
-msgstr "impossible de résoudre '%s'"
-
-#: sequencer.c:3538
-msgid "cannot merge without a current revision"
-msgstr "impossible de fusionner avec une révision courante"
+msgid "cannot write '%s'"
+msgstr "impossible d'écrire '%s'"
 
-#: sequencer.c:3560
-#, c-format
-msgid "unable to parse '%.*s'"
-msgstr "impossible d'analyser '%.*s'"
+#: sequencer.c:1778 git-rebase--preserve-merges.sh:486
+msgid "This is the 1st commit message:"
+msgstr "Ceci est le premier message de validation :"
 
-#: sequencer.c:3569
+#: sequencer.c:1786
 #, c-format
-msgid "nothing to merge: '%.*s'"
-msgstr "rien à fusionner : '%.*s'"
-
-#: sequencer.c:3581
-msgid "octopus merge cannot be executed on top of a [new root]"
-msgstr ""
-"une fusion octopus ne peut pas être exécutée par dessus une nouvelle racine"
+msgid "could not read commit message of %s"
+msgstr "impossible de lire le message de validation de %s"
 
-#: sequencer.c:3597
+#: sequencer.c:1793
 #, c-format
-msgid "could not get commit message of '%s'"
-msgstr "impossible de lire le message de validation de '%s'"
+msgid "This is the commit message #%d:"
+msgstr "Ceci est le message de validation numéro %d :"
 
-#: sequencer.c:3780
+#: sequencer.c:1799
 #, c-format
-msgid "could not even attempt to merge '%.*s'"
-msgstr "impossible de seulement essayer de fusionner '%.*s'"
+msgid "The commit message #%d will be skipped:"
+msgstr "Le message de validation %d sera ignoré :"
 
-#: sequencer.c:3796
-msgid "merge: Unable to write new index file"
-msgstr "fusion : Impossible d'écrire le nouveau fichier index"
+#: sequencer.c:1887
+msgid "your index file is unmerged."
+msgstr "votre fichier d'index n'est pas fusionné."
 
-#: sequencer.c:3870
-msgid "Cannot autostash"
-msgstr "Autoremisage impossible"
+#: sequencer.c:1894
+msgid "cannot fixup root commit"
+msgstr "impossible de réparer le commit racine"
 
-#: sequencer.c:3873
+#: sequencer.c:1913
 #, c-format
-msgid "Unexpected stash response: '%s'"
-msgstr "réponse de remisage inattendue : '%s'"
+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:3879
+#: sequencer.c:1921 sequencer.c:1929
 #, c-format
-msgid "Could not create directory for '%s'"
-msgstr "Impossible de créer le répertoire pour '%s'"
+msgid "commit %s does not have parent %d"
+msgstr "le commit %s n'a pas de parent %d"
 
-#: sequencer.c:3882
+#: sequencer.c:1935
 #, c-format
-msgid "Created autostash: %s\n"
-msgstr "Autoremisage créé : %s\n"
-
-#: sequencer.c:3886
-msgid "could not reset --hard"
-msgstr "impossible de réinitialiser --hard"
+msgid "cannot get commit message for %s"
+msgstr "impossible d'obtenir un message de validation pour %s"
 
-#: sequencer.c:3911
+#. TRANSLATORS: The first %s will be a "todo" command like
+#. "revert" or "pick", the second %s a SHA1.
+#: sequencer.c:1954
 #, c-format
-msgid "Applied autostash.\n"
-msgstr "Autoremisage appliqué.\n"
+msgid "%s: cannot parse parent commit %s"
+msgstr "%s : impossible d'analyser le commit parent %s"
 
-#: sequencer.c:3923
+#: sequencer.c:2019
 #, c-format
-msgid "cannot store %s"
-msgstr "impossible de stocker %s"
+msgid "could not rename '%s' to '%s'"
+msgstr "impossible de renommer '%s' en '%s'"
 
-#: sequencer.c:3926
+#: sequencer.c:2079
 #, c-format
-msgid ""
-"%s\n"
-"Your changes are safe in the stash.\n"
-"You can run \"git stash pop\" or \"git stash drop\" at any time.\n"
-msgstr ""
-"%s\n"
-"Vos  modifications sont à l'abri dans la remise.\n"
-"Vous pouvez lancer \"git stash pop\" ou \"git stash drop\" à tout moment.\n"
+msgid "could not revert %s... %s"
+msgstr "impossible d'annuler %s... %s"
 
-#: sequencer.c:3931
-msgid "Applying autostash resulted in conflicts."
-msgstr "L'application du remisage automatique a créé des conflits."
+#: sequencer.c:2080
+#, c-format
+msgid "could not apply %s... %s"
+msgstr "impossible d'appliquer %s... %s"
 
-#: sequencer.c:3932
-msgid "Autostash exists; creating a new stash entry."
-msgstr ""
-"Un remisage automatique existe ; création d'une nouvelle entrée de remisage."
+#: sequencer.c:2100
+#, c-format
+msgid "dropping %s %s -- patch contents already upstream\n"
+msgstr "abandon de %s %s -- le contenu de la rustine déjà en amont\n"
 
-#: sequencer.c:4025 git-rebase--preserve-merges.sh:769
-msgid "could not detach HEAD"
-msgstr "Impossible de détacher HEAD"
+#: sequencer.c:2158
+#, c-format
+msgid "git %s: failed to read the index"
+msgstr "git %s : échec à la lecture de l'index"
 
-#: sequencer.c:4040
+#: sequencer.c:2165
 #, c-format
-msgid "Stopped at HEAD\n"
-msgstr "arrêt à HEAD\n"
+msgid "git %s: failed to refresh the index"
+msgstr "git %s : échec du rafraîchissement de l'index"
 
-#: sequencer.c:4042
+#: sequencer.c:2242
 #, c-format
-msgid "Stopped at %s\n"
-msgstr "Arrêté à %s\n"
+msgid "%s does not accept arguments: '%s'"
+msgstr "%s n'accepte pas d'argument : '%s'"
 
-#: sequencer.c:4050
+#: sequencer.c:2251
 #, 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"
+msgid "missing arguments for %s"
+msgstr "argument manquant pour %s"
 
-#: sequencer.c:4096
+#: sequencer.c:2282
 #, c-format
-msgid "Rebasing (%d/%d)%s"
-msgstr "Rebasage (%d/%d)%s"
+msgid "could not parse '%s'"
+msgstr "impossible d'analyser '%s'"
 
-#: sequencer.c:4141
+#: sequencer.c:2343
 #, c-format
-msgid "Stopped at %s...  %.*s\n"
-msgstr "arrêt à %s... %.*s\n"
+msgid "invalid line %d: %.*s"
+msgstr "ligne %d invalide : %.*s"
 
-#: sequencer.c:4212
+#: sequencer.c:2354
 #, c-format
-msgid "unknown command %d"
-msgstr "commande inconnue %d"
+msgid "cannot '%s' without a previous commit"
+msgstr "'%s' impossible avec le commit précédent"
 
-#: sequencer.c:4271
-msgid "could not read orig-head"
-msgstr "impossible de lire orig-head"
+#: sequencer.c:2440
+msgid "cancelling a cherry picking in progress"
+msgstr "annulation d'un picorage en cours"
 
-#: sequencer.c:4276
-msgid "could not read 'onto'"
-msgstr "impossible de lire 'onto'"
+#: sequencer.c:2449
+msgid "cancelling a revert in progress"
+msgstr "annulation d'un retour en cours"
 
-#: sequencer.c:4290
-#, c-format
-msgid "could not update HEAD to %s"
-msgstr "impossible de mettre à jour HEAD sur %s"
+#: sequencer.c:2493
+msgid "please fix this using 'git rebase --edit-todo'."
+msgstr "veuillez corriger ceci en utilisant 'git rebase --edit-todo'."
 
-#: sequencer.c:4350
+#: sequencer.c:2495
 #, c-format
-msgid "Successfully rebased and updated %s.\n"
-msgstr "Rebasage et mise à jour de %s avec succès.\n"
+msgid "unusable instruction sheet: '%s'"
+msgstr "feuille d'instruction inutilisable : '%s'"
 
-#: sequencer.c:4383
-msgid "cannot rebase: You have unstaged changes."
-msgstr "impossible de rebaser : vous avez des modifications non indexées."
+#: sequencer.c:2500
+msgid "no commits parsed."
+msgstr "aucun commit analysé."
 
-#: sequencer.c:4392
-msgid "cannot amend non-existing commit"
-msgstr "impossible de corriger un commit non-existant"
+#: sequencer.c:2511
+msgid "cannot cherry-pick during a revert."
+msgstr "impossible de picorer pendant l'annulation d'un commit."
 
-#: sequencer.c:4394
-#, c-format
-msgid "invalid file: '%s'"
-msgstr "fichier invalide : '%s'"
+#: sequencer.c:2513
+msgid "cannot revert during a cherry-pick."
+msgstr "impossible d'annuler un commit pendant un picorage."
 
-#: sequencer.c:4396
+#: sequencer.c:2591
 #, c-format
-msgid "invalid contents: '%s'"
-msgstr "contenu invalide : '%s'"
+msgid "invalid value for %s: %s"
+msgstr "valeur invalide pour %s : %s"
 
-#: sequencer.c:4399
-msgid ""
-"\n"
-"You have uncommitted changes in your working tree. Please, commit them\n"
-"first and then run 'git rebase --continue' again."
-msgstr ""
-"\n"
-"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:2698
+msgid "unusable squash-onto"
+msgstr "\"écrase-sur\" inutilisable"
 
-#: sequencer.c:4435 sequencer.c:4474
+#: sequencer.c:2718
 #, c-format
-msgid "could not write file: '%s'"
-msgstr "impossible d'écrire le fichier : '%s'"
+msgid "malformed options sheet: '%s'"
+msgstr "feuille d'options malformée : %s"
 
-#: sequencer.c:4490
-msgid "could not remove CHERRY_PICK_HEAD"
-msgstr "impossible de supprimer CHERRY_PICK_HEAD"
+#: sequencer.c:2811 sequencer.c:4644
+msgid "empty commit set passed"
+msgstr "l'ensemble de commits spécifié est vide"
 
-#: sequencer.c:4497
-msgid "could not commit staged changes."
-msgstr "impossible de valider les modifications indexées."
+#: sequencer.c:2828
+msgid "revert is already in progress"
+msgstr "un retour est déjà en cours"
 
-#: sequencer.c:4613
+#: sequencer.c:2830
 #, c-format
-msgid "%s: can't cherry-pick a %s"
-msgstr "%s : impossible de picorer un %s"
+msgid "try \"git revert (--continue | %s--abort | --quit)\""
+msgstr "essayez \"git revert (--continue | %s--abort | --quit)\""
+
+#: sequencer.c:2833
+msgid "cherry-pick is already in progress"
+msgstr "un picorage est déjà en cours"
 
-#: sequencer.c:4617
+#: sequencer.c:2835
 #, c-format
-msgid "%s: bad revision"
-msgstr "%s : mauvaise révision"
-
-#: sequencer.c:4652
-msgid "can't revert as initial commit"
-msgstr "impossible d'annuler en tant que commit initial"
+msgid "try \"git cherry-pick (--continue | %s--abort | --quit)\""
+msgstr "essayez \"git cherry-pick (--continue | %s--abort | --quit)\""
 
-#: sequencer.c:5129
-msgid "make_script: unhandled options"
-msgstr "make_script : options non gérées"
+#: sequencer.c:2849
+#, c-format
+msgid "could not create sequencer directory '%s'"
+msgstr "impossible de créer le répertoire de séquenceur '%s'"
 
-#: sequencer.c:5132
-msgid "make_script: error preparing revisions"
-msgstr "make_script : erreur lors de la préparation des révisions"
+#: sequencer.c:2864
+msgid "could not lock HEAD"
+msgstr "impossible de verrouiller HEAD"
 
-#: sequencer.c:5374 sequencer.c:5391
-msgid "nothing to do"
-msgstr "rien à faire"
+#: sequencer.c:2924 sequencer.c:4379
+msgid "no cherry-pick or revert in progress"
+msgstr "aucun picorage ou retour en cours"
 
-#: sequencer.c:5410
-msgid "could not skip unnecessary pick commands"
-msgstr "impossible d'éviter les commandes de picorage non nécessaires"
+#: sequencer.c:2926 sequencer.c:2937
+msgid "cannot resolve HEAD"
+msgstr "impossible de résoudre HEAD"
 
-#: sequencer.c:5504
-msgid "the script was already rearranged."
-msgstr "le script a déjà été réarrangé."
+#: sequencer.c:2928 sequencer.c:2972
+msgid "cannot abort from a branch yet to be born"
+msgstr "impossible d'abandonner depuis une branche non encore créée"
 
-#: setup.c:133
+#: sequencer.c:2958 builtin/grep.c:757
 #, c-format
-msgid "'%s' is outside repository at '%s'"
-msgstr "'%s' est hors du dépôt à '%s'"
+msgid "cannot open '%s'"
+msgstr "impossible d'ouvrir '%s'"
 
-#: setup.c:185
+#: sequencer.c:2960
 #, 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 ""
-"%s : ce chemin n'existe pas dans la copie de travail.\n"
-"Utilisez 'git <commande> -- <chemin>...' pour spécifier des chemins qui "
-"n'existent pas localement."
+msgid "cannot read '%s': %s"
+msgstr "impossible de lire '%s' : %s"
 
-#: setup.c:198
-#, c-format
-msgid ""
-"ambiguous argument '%s': unknown revision or path not in the working tree.\n"
-"Use '--' to separate paths from revisions, like this:\n"
-"'git <command> [<revision>...] -- [<file>...]'"
-msgstr ""
-"argument '%s' ambigu : révision inconnue ou chemin inexistant.\n"
-"Utilisez '--' pour séparer les chemins des révisions, comme ceci :\n"
-"'git <commande> [<révision>...] -- [<chemin>...]'"
+#: sequencer.c:2961
+msgid "unexpected end of file"
+msgstr "fin de fichier inattendue"
 
-#: setup.c:264
+#: sequencer.c:2967
 #, 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"
+msgid "stored pre-cherry-pick HEAD file '%s' is corrupt"
+msgstr "le fichier HEAD de préparation de picorage '%s' est corrompu"
 
-#: setup.c:283
-#, c-format
-msgid ""
-"ambiguous argument '%s': both revision and filename\n"
-"Use '--' to separate paths from revisions, like this:\n"
-"'git <command> [<revision>...] -- [<file>...]'"
+#: sequencer.c:2978
+msgid "You seem to have moved HEAD. Not rewinding, check your HEAD!"
 msgstr ""
-"argument '%s' ambigu : révision et chemin spécifiés.\n"
-"Utilisez '--' pour séparer les chemins des révisions, comme ceci :\n"
-"'git <commande> [<révision>...] -- [<chemin>...]'"
+"Vous semblez avoir déplacé la HEAD. Pas de rembobinage, vérifiez votre HEAD !"
 
-#: setup.c:419
-msgid "unable to set up work tree using invalid config"
-msgstr ""
-"impossible de mettre en place le répertoire de travail en utilisant une "
-"configuration invalide"
+#: sequencer.c:3019
+msgid "no revert in progress"
+msgstr "Pas de retour en cours ?"
 
-#: setup.c:423
-msgid "this operation must be run in a work tree"
-msgstr "Cette opération doit être effectuée dans un arbre de travail"
+#: sequencer.c:3028
+msgid "no cherry-pick in progress"
+msgstr "aucun picorage en cours"
 
-#: setup.c:661
-#, c-format
-msgid "Expected git repo version <= %d, found %d"
-msgstr "Version attendue du dépôt git <= %d, %d trouvée"
+#: sequencer.c:3038
+msgid "failed to skip the commit"
+msgstr "échec du saut de commit"
 
-#: setup.c:669
-msgid "unknown repository extensions found:"
-msgstr "extensions de dépôt inconnues trouvées :"
+#: sequencer.c:3045
+msgid "there is nothing to skip"
+msgstr "il n'y a rien à sauter"
 
-#: setup.c:681
-msgid "repo version is 0, but v1-only extensions found:"
+#: sequencer.c:3048
+#, c-format
+msgid ""
+"have you committed already?\n"
+"try \"git %s --continue\""
 msgstr ""
-"la version du dépôt est 0, mais des extensions uniquement v1 trouvées :"
+"Avez-vous déjà validé ?\n"
+"essayez \"git %s -continue\""
 
-#: setup.c:700
+#: sequencer.c:3210 sequencer.c:4271
+msgid "cannot read HEAD"
+msgstr "impossible de lire HEAD"
+
+#: sequencer.c:3227
 #, c-format
-msgid "error opening '%s'"
-msgstr "erreur à l'ouverture de '%s'"
+msgid "unable to copy '%s' to '%s'"
+msgstr "impossible de copier '%s' vers '%s'"
 
-#: setup.c:702
+#: sequencer.c:3235
 #, c-format
-msgid "too large to be a .git file: '%s'"
-msgstr "trop gros pour être une fichier .git : '%s'"
+msgid ""
+"You can amend the commit now, with\n"
+"\n"
+"  git commit --amend %s\n"
+"\n"
+"Once you are satisfied with your changes, run\n"
+"\n"
+"  git rebase --continue\n"
+msgstr ""
+"Vous pouvez corriger le commit maintenant, avec\n"
+"\n"
+"  git commit --amend %s\n"
+"\n"
+"après avoir réalisé vos modifications, lancez\n"
+"\n"
+"  git rebase --continue\n"
 
-#: setup.c:704
+#: sequencer.c:3245
 #, c-format
-msgid "error reading %s"
-msgstr "erreur à la lecture de %s"
+msgid "Could not apply %s... %.*s"
+msgstr "impossible d'appliquer %s... %.*s"
 
-#: setup.c:706
+#: sequencer.c:3252
 #, c-format
-msgid "invalid gitfile format: %s"
-msgstr "format de fichier git invalide : %s"
+msgid "Could not merge %.*s"
+msgstr "Impossible de fusionner %.*s"
 
-#: setup.c:708
+#: sequencer.c:3266 sequencer.c:3270 builtin/difftool.c:640
 #, c-format
-msgid "no path in gitfile: %s"
-msgstr "aucun chemin dans le fichier git : %s"
+msgid "could not copy '%s' to '%s'"
+msgstr "impossible de copier '%s' vers '%s'"
 
-#: setup.c:710
+#: sequencer.c:3282
 #, c-format
-msgid "not a git repository: %s"
-msgstr "ce n'est pas un dépôt git : %s"
+msgid "Executing: %s\n"
+msgstr "Exécution : %s\n"
 
-#: setup.c:812
+#: sequencer.c:3297
 #, c-format
-msgid "'$%s' too big"
-msgstr "'$%s' trop gros"
+msgid ""
+"execution failed: %s\n"
+"%sYou can fix the problem, and then run\n"
+"\n"
+"  git rebase --continue\n"
+"\n"
+msgstr ""
+"échec d'exécution : %s\n"
+"%sVous pouvez corriger le problème, puis lancer\n"
+"\n"
+"git rebase --continue\n"
+"\n"
 
-#: setup.c:826
+#: sequencer.c:3303
+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:3309
 #, c-format
-msgid "not a git repository: '%s'"
-msgstr "ce n'est pas un dépôt git : '%s'"
+msgid ""
+"execution succeeded: %s\n"
+"but left changes to the index and/or the working tree\n"
+"Commit or stash your changes, and then run\n"
+"\n"
+"  git rebase --continue\n"
+"\n"
+msgstr ""
+"L'exécution a réussi : %s\n"
+"mais a laissé des modifications dans l'index ou la copie de travail\n"
+"Validez ou remisez vos modification, puis lancez\n"
+"\n"
+"  git rebase --continue\n"
+"\n"
 
-#: setup.c:855 setup.c:857 setup.c:888
+#: sequencer.c:3370
 #, c-format
-msgid "cannot chdir to '%s'"
-msgstr "impossible de se déplacer vers le répertoire (chdir) '%s'"
+msgid "illegal label name: '%.*s'"
+msgstr "nom de label illégal '%.*s'"
 
-#: setup.c:860 setup.c:916 setup.c:926 setup.c:965 setup.c:973
-msgid "cannot come back to cwd"
-msgstr "impossible de revenir au répertoire de travail courant"
+#: sequencer.c:3424
+msgid "writing fake root commit"
+msgstr "écriture d'un commit racine bidon"
 
-#: setup.c:987
+#: sequencer.c:3429
+msgid "writing squash-onto"
+msgstr "écriture de 'écraser-sur'"
+
+#: sequencer.c:3513
 #, c-format
-msgid "failed to stat '%*s%s%s'"
-msgstr "échec du stat de '%*s%s%s'"
+msgid "could not resolve '%s'"
+msgstr "impossible de résoudre '%s'"
 
-#: setup.c:1225
-msgid "Unable to read current working directory"
-msgstr "Impossible d'accéder au répertoire de travail courant"
+#: sequencer.c:3546
+msgid "cannot merge without a current revision"
+msgstr "impossible de fusionner avec une révision courante"
 
-#: setup.c:1234 setup.c:1240
+#: sequencer.c:3568
 #, c-format
-msgid "cannot change to '%s'"
-msgstr "impossible de modifier en '%s'"
+msgid "unable to parse '%.*s'"
+msgstr "impossible d'analyser '%.*s'"
 
-#: setup.c:1245
+#: sequencer.c:3577
 #, 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"
+msgid "nothing to merge: '%.*s'"
+msgstr "rien à fusionner : '%.*s'"
 
-#: setup.c:1251
-#, 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)."
+#: sequencer.c:3589
+msgid "octopus merge cannot be executed on top of a [new root]"
 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)."
+"une fusion octopus ne peut pas être exécutée par dessus une nouvelle racine"
 
-#: setup.c:1362
+#: sequencer.c:3605
 #, 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."
-
-#: setup.c:1409
-msgid "open /dev/null or dup failed"
-msgstr "échec de l'ouverture ou au dup de /dev/null"
+msgid "could not get commit message of '%s'"
+msgstr "impossible de lire le message de validation de '%s'"
 
-#: setup.c:1424
-msgid "fork failed"
-msgstr "échec de la bifurcation"
+#: sequencer.c:3788
+#, c-format
+msgid "could not even attempt to merge '%.*s'"
+msgstr "impossible de seulement essayer de fusionner '%.*s'"
 
-#: setup.c:1429
-msgid "setsid failed"
-msgstr "échec du setsid"
+#: sequencer.c:3804
+msgid "merge: Unable to write new index file"
+msgstr "fusion : Impossible d'écrire le nouveau fichier index"
 
-#: sha1-file.c:480
-#, c-format
-msgid "object directory %s does not exist; check .git/objects/info/alternates"
-msgstr ""
-"le répertoire objet %s n'existe pas ; vérifiez .git/objects/info/alternates"
+#: sequencer.c:3878
+msgid "Cannot autostash"
+msgstr "Autoremisage impossible"
 
-#: sha1-file.c:531
+#: sequencer.c:3881
 #, c-format
-msgid "unable to normalize alternate object path: %s"
-msgstr "impossible de normaliser le chemin d'objet alternatif : %s"
+msgid "Unexpected stash response: '%s'"
+msgstr "réponse de remisage inattendue : '%s'"
 
-#: sha1-file.c:603
+#: sequencer.c:3887
 #, c-format
-msgid "%s: ignoring alternate object stores, nesting too deep"
-msgstr "%s : magasins d'objets alternatifs ignorés, récursion trop profonde"
+msgid "Could not create directory for '%s'"
+msgstr "Impossible de créer le répertoire pour '%s'"
 
-#: sha1-file.c:610
+#: sequencer.c:3890
 #, c-format
-msgid "unable to normalize object directory: %s"
-msgstr "impossible de normaliser le répertoire d'objet : %s"
-
-#: sha1-file.c:653
-msgid "unable to fdopen alternates lockfile"
-msgstr "impossible d'ouvrir (fdopen) le fichier verrou des alternatives"
+msgid "Created autostash: %s\n"
+msgstr "Autoremisage créé : %s\n"
 
-#: sha1-file.c:671
-msgid "unable to read alternates file"
-msgstr "lecture du fichier d'alternatives impossible"
+#: sequencer.c:3894
+msgid "could not reset --hard"
+msgstr "impossible de réinitialiser --hard"
 
-#: sha1-file.c:678
-msgid "unable to move new alternates file into place"
-msgstr "impossible de déplacer le nouveau fichier d'alternative"
+#: sequencer.c:3919
+#, c-format
+msgid "Applied autostash.\n"
+msgstr "Autoremisage appliqué.\n"
 
-#: sha1-file.c:713
+#: sequencer.c:3931
 #, c-format
-msgid "path '%s' does not exist"
-msgstr "le chemin '%s' n'existe pas"
+msgid "cannot store %s"
+msgstr "impossible de stocker %s"
 
-#: sha1-file.c:734
+#: sequencer.c:3934
 #, c-format
-msgid "reference repository '%s' as a linked checkout is not supported yet."
+msgid ""
+"%s\n"
+"Your changes are safe in the stash.\n"
+"You can run \"git stash pop\" or \"git stash drop\" at any time.\n"
 msgstr ""
-"extraire le dépôt de référence '%s' comme une extraction liée n'est pas "
-"encore supporté."
+"%s\n"
+"Vos  modifications sont à l'abri dans la remise.\n"
+"Vous pouvez lancer \"git stash pop\" ou \"git stash drop\" à tout moment.\n"
 
-#: sha1-file.c:740
-#, 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."
+#: sequencer.c:3939
+msgid "Applying autostash resulted in conflicts."
+msgstr "L'application du remisage automatique a créé des conflits."
 
-#: sha1-file.c:746
-#, c-format
-msgid "reference repository '%s' is shallow"
-msgstr "le dépôt de référence '%s' est superficiel"
+#: sequencer.c:3940
+msgid "Autostash exists; creating a new stash entry."
+msgstr ""
+"Un remisage automatique existe ; création d'une nouvelle entrée de remisage."
 
-#: sha1-file.c:754
-#, c-format
-msgid "reference repository '%s' is grafted"
-msgstr "le dépôt de référence '%s' est greffé"
+#: sequencer.c:4033 git-rebase--preserve-merges.sh:769
+msgid "could not detach HEAD"
+msgstr "Impossible de détacher HEAD"
 
-#: sha1-file.c:814
+#: sequencer.c:4048
 #, c-format
-msgid "invalid line while parsing alternate refs: %s"
-msgstr "ligne invalide pendant l'analyse des refs alternatives : %s"
+msgid "Stopped at HEAD\n"
+msgstr "arrêt à HEAD\n"
 
-#: sha1-file.c:964
+#: sequencer.c:4050
 #, c-format
-msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
-msgstr "essai de mmap %<PRIuMAX> au delà de la limite %<PRIuMAX>"
+msgid "Stopped at %s\n"
+msgstr "Arrêté à %s\n"
 
-#: sha1-file.c:985
-msgid "mmap failed"
-msgstr "échec de mmap"
+#: sequencer.c:4058
+#, 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"
 
-#: sha1-file.c:1149
+#: sequencer.c:4104
 #, c-format
-msgid "object file %s is empty"
-msgstr "le fichier objet %s est vide"
+msgid "Rebasing (%d/%d)%s"
+msgstr "Rebasage (%d/%d)%s"
 
-#: sha1-file.c:1284 sha1-file.c:2477
+#: sequencer.c:4149
 #, c-format
-msgid "corrupt loose object '%s'"
-msgstr "objet libre corrompu '%s'"
+msgid "Stopped at %s...  %.*s\n"
+msgstr "arrêt à %s... %.*s\n"
 
-#: sha1-file.c:1286 sha1-file.c:2481
+#: sequencer.c:4220
 #, c-format
-msgid "garbage at end of loose object '%s'"
-msgstr "données incorrectes à la fin de l'objet libre '%s'"
+msgid "unknown command %d"
+msgstr "commande inconnue %d"
 
-#: sha1-file.c:1328
-msgid "invalid object type"
-msgstr "type d'objet invalide"
+#: sequencer.c:4279
+msgid "could not read orig-head"
+msgstr "impossible de lire orig-head"
 
-#: sha1-file.c:1412
-#, c-format
-msgid "unable to unpack %s header with --allow-unknown-type"
-msgstr "impossible de dépaqueter l'entête %s avec --allow-unknow-type"
+#: sequencer.c:4284
+msgid "could not read 'onto'"
+msgstr "impossible de lire 'onto'"
 
-#: sha1-file.c:1415
+#: sequencer.c:4298
 #, c-format
-msgid "unable to unpack %s header"
-msgstr "impossible de dépaqueter l'entête %s"
+msgid "could not update HEAD to %s"
+msgstr "impossible de mettre à jour HEAD sur %s"
 
-#: sha1-file.c:1421
+#: sequencer.c:4358
 #, c-format
-msgid "unable to parse %s header with --allow-unknown-type"
-msgstr "impossible d'analyser l'entête %s avec --allow-unknow-type"
+msgid "Successfully rebased and updated %s.\n"
+msgstr "Rebasage et mise à jour de %s avec succès.\n"
 
-#: sha1-file.c:1424
-#, c-format
-msgid "unable to parse %s header"
-msgstr "impossible d'analyser l'entête %s"
+#: sequencer.c:4391
+msgid "cannot rebase: You have unstaged changes."
+msgstr "impossible de rebaser : vous avez des modifications non indexées."
 
-#: sha1-file.c:1651
-#, c-format
-msgid "failed to read object %s"
-msgstr "impossible de lire l'objet %s"
+#: sequencer.c:4400
+msgid "cannot amend non-existing commit"
+msgstr "impossible de corriger un commit non-existant"
 
-#: sha1-file.c:1655
+#: sequencer.c:4402
 #, c-format
-msgid "replacement %s not found for %s"
-msgstr "remplacement %s non trouvé pour %s"
+msgid "invalid file: '%s'"
+msgstr "fichier invalide : '%s'"
 
-#: sha1-file.c:1659
+#: sequencer.c:4404
 #, c-format
-msgid "loose object %s (stored in %s) is corrupt"
-msgstr "l'objet libre %s (stocké dans %s) est corrompu"
+msgid "invalid contents: '%s'"
+msgstr "contenu invalide : '%s'"
+
+#: sequencer.c:4407
+msgid ""
+"\n"
+"You have uncommitted changes in your working tree. Please, commit them\n"
+"first and then run 'git rebase --continue' again."
+msgstr ""
+"\n"
+"Vous avez des modifications non validées dans votre copie de travail.\n"
+"Veuillez les valider d'abord, puis relancer 'git rebase --continue'."
 
-#: sha1-file.c:1663
+#: sequencer.c:4443 sequencer.c:4482
 #, c-format
-msgid "packed object %s (stored in %s) is corrupt"
-msgstr "l'objet empaqueté %s (stocké dans %s) est corrompu"
+msgid "could not write file: '%s'"
+msgstr "impossible d'écrire le fichier : '%s'"
 
-#: sha1-file.c:1768
+#: sequencer.c:4498
+msgid "could not remove CHERRY_PICK_HEAD"
+msgstr "impossible de supprimer CHERRY_PICK_HEAD"
+
+#: sequencer.c:4505
+msgid "could not commit staged changes."
+msgstr "impossible de valider les modifications indexées."
+
+#: sequencer.c:4621
 #, c-format
-msgid "unable to write file %s"
-msgstr "impossible d'écrire le fichier %s"
+msgid "%s: can't cherry-pick a %s"
+msgstr "%s : impossible de picorer un %s"
 
-#: sha1-file.c:1775
+#: sequencer.c:4625
 #, c-format
-msgid "unable to set permission to '%s'"
-msgstr "impossible de régler les droits de '%s'"
+msgid "%s: bad revision"
+msgstr "%s : mauvaise révision"
 
-#: sha1-file.c:1782
-msgid "file write error"
-msgstr "erreur d'écriture d'un fichier"
+#: sequencer.c:4660
+msgid "can't revert as initial commit"
+msgstr "impossible d'annuler en tant que commit initial"
 
-#: sha1-file.c:1802
-msgid "error when closing loose object file"
-msgstr "erreur en fermeture du fichier d'objet esseulé"
+#: sequencer.c:5137
+msgid "make_script: unhandled options"
+msgstr "make_script : options non gérées"
 
-#: sha1-file.c:1867
-#, c-format
-msgid "insufficient permission for adding an object to repository database %s"
-msgstr ""
-"droits insuffisants pour ajouter un objet à la base de données %s du dépôt"
+#: sequencer.c:5140
+msgid "make_script: error preparing revisions"
+msgstr "make_script : erreur lors de la préparation des révisions"
 
-#: sha1-file.c:1869
-msgid "unable to create temporary file"
-msgstr "impossible de créer un fichier temporaire"
+#: sequencer.c:5382 sequencer.c:5399
+msgid "nothing to do"
+msgstr "rien à faire"
 
-#: sha1-file.c:1893
-msgid "unable to write loose object file"
-msgstr "impossible d'écrire le fichier d'objet esseulé"
+#: sequencer.c:5418
+msgid "could not skip unnecessary pick commands"
+msgstr "impossible d'éviter les commandes de picorage non nécessaires"
 
-#: sha1-file.c:1899
-#, c-format
-msgid "unable to deflate new object %s (%d)"
-msgstr "impossible de compresser le nouvel objet %s (%d)"
+#: sequencer.c:5512
+msgid "the script was already rearranged."
+msgstr "le script a déjà été réarrangé."
 
-#: sha1-file.c:1903
+#: setup.c:133
 #, c-format
-msgid "deflateEnd on object %s failed (%d)"
-msgstr "échec de deflateEnd sur l'objet %s (%d)"
+msgid "'%s' is outside repository at '%s'"
+msgstr "'%s' est hors du dépôt à '%s'"
 
-#: sha1-file.c:1907
+#: setup.c:185
 #, c-format
-msgid "confused by unstable object source data for %s"
-msgstr "données de source d'objet instable pour %s"
+msgid ""
+"%s: no such path in the working tree.\n"
+"Use 'git <command> -- <path>...' to specify paths that do not exist locally."
+msgstr ""
+"%s : ce chemin n'existe pas dans la copie de travail.\n"
+"Utilisez 'git <commande> -- <chemin>...' pour spécifier des chemins qui "
+"n'existent pas localement."
 
-#: sha1-file.c:1917 builtin/pack-objects.c:1086
+#: setup.c:198
 #, c-format
-msgid "failed utime() on %s"
-msgstr "échec de utime() sur %s"
+msgid ""
+"ambiguous argument '%s': unknown revision or path not in the working tree.\n"
+"Use '--' to separate paths from revisions, like this:\n"
+"'git <command> [<revision>...] -- [<file>...]'"
+msgstr ""
+"argument '%s' ambigu : révision inconnue ou chemin inexistant.\n"
+"Utilisez '--' pour séparer les chemins des révisions, comme ceci :\n"
+"'git <commande> [<révision>...] -- [<chemin>...]'"
 
-#: sha1-file.c:1994
+#: setup.c:264
 #, c-format
-msgid "cannot read object for %s"
-msgstr "impossible de lire l'objet pour %s"
-
-#: sha1-file.c:2045
-msgid "corrupt commit"
-msgstr "commit corrompu"
-
-#: sha1-file.c:2053
-msgid "corrupt tag"
-msgstr "étiquette corrompue"
+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"
 
-#: sha1-file.c:2153
+#: setup.c:283
 #, c-format
-msgid "read error while indexing %s"
-msgstr "erreur de lecture à l'indexation de %s"
+msgid ""
+"ambiguous argument '%s': both revision and filename\n"
+"Use '--' to separate paths from revisions, like this:\n"
+"'git <command> [<revision>...] -- [<file>...]'"
+msgstr ""
+"argument '%s' ambigu : révision et chemin spécifiés.\n"
+"Utilisez '--' pour séparer les chemins des révisions, comme ceci :\n"
+"'git <commande> [<révision>...] -- [<chemin>...]'"
 
-#: sha1-file.c:2156
-#, c-format
-msgid "short read while indexing %s"
-msgstr "lecture tronquée pendant l'indexation de %s"
+#: setup.c:419
+msgid "unable to set up work tree using invalid config"
+msgstr ""
+"impossible de mettre en place le répertoire de travail en utilisant une "
+"configuration invalide"
 
-#: sha1-file.c:2229 sha1-file.c:2239
-#, c-format
-msgid "%s: failed to insert into database"
-msgstr "%s : échec de l'insertion dans la base de données"
+#: setup.c:423
+msgid "this operation must be run in a work tree"
+msgstr "Cette opération doit être effectuée dans un arbre de travail"
 
-#: sha1-file.c:2245
+#: setup.c:661
 #, c-format
-msgid "%s: unsupported file type"
-msgstr "%s : type de fichier non supporté"
+msgid "Expected git repo version <= %d, found %d"
+msgstr "Version attendue du dépôt git <= %d, %d trouvée"
 
-#: sha1-file.c:2269
-#, c-format
-msgid "%s is not a valid object"
-msgstr "%s n'est pas un objet valide"
+#: setup.c:669
+msgid "unknown repository extensions found:"
+msgstr "extensions de dépôt inconnues trouvées :"
 
-#: sha1-file.c:2271
-#, c-format
-msgid "%s is not a valid '%s' object"
-msgstr "%s n'est pas un objet '%s' valide"
+#: setup.c:681
+msgid "repo version is 0, but v1-only extensions found:"
+msgstr ""
+"la version du dépôt est 0, mais des extensions uniquement v1 trouvées :"
 
-#: sha1-file.c:2298 builtin/index-pack.c:192
+#: setup.c:700
 #, c-format
-msgid "unable to open %s"
-msgstr "impossible d'ouvrir %s"
+msgid "error opening '%s'"
+msgstr "erreur à l'ouverture de '%s'"
 
-#: sha1-file.c:2488 sha1-file.c:2541
+#: setup.c:702
 #, c-format
-msgid "hash mismatch for %s (expected %s)"
-msgstr "incohérence de hachage pour %s (%s attendu)"
+msgid "too large to be a .git file: '%s'"
+msgstr "trop gros pour être une fichier .git : '%s'"
 
-#: sha1-file.c:2512
+#: setup.c:704
 #, c-format
-msgid "unable to mmap %s"
-msgstr "impossible de mmap %s"
+msgid "error reading %s"
+msgstr "erreur à la lecture de %s"
 
-#: sha1-file.c:2517
+#: setup.c:706
 #, c-format
-msgid "unable to unpack header of %s"
-msgstr "impossible de dépaqueter l'entête de %s"
+msgid "invalid gitfile format: %s"
+msgstr "format de fichier git invalide : %s"
 
-#: sha1-file.c:2523
+#: setup.c:708
 #, c-format
-msgid "unable to parse header of %s"
-msgstr "impossible d'analyser l'entête de %s"
+msgid "no path in gitfile: %s"
+msgstr "aucun chemin dans le fichier git : %s"
 
-#: sha1-file.c:2534
+#: setup.c:710
 #, c-format
-msgid "unable to unpack contents of %s"
-msgstr "impossible de dépaqueter le contenu de %s"
+msgid "not a git repository: %s"
+msgstr "ce n'est pas un dépôt git : %s"
 
-#: sha1-name.c:486
+#: setup.c:812
 #, c-format
-msgid "short SHA1 %s is ambiguous"
-msgstr "le SHA1 court %s est ambigu"
-
-#: sha1-name.c:497
-msgid "The candidates are:"
-msgstr "Les candidats sont :"
-
-#: sha1-name.c:796
-msgid ""
-"Git normally never creates a ref that ends with 40 hex characters\n"
-"because it will be ignored when you just specify 40-hex. These refs\n"
-"may be created by mistake. For example,\n"
-"\n"
-"  git switch -c $br $(git rev-parse ...)\n"
-"\n"
-"where \"$br\" is somehow empty and a 40-hex ref is created. Please\n"
-"examine these refs and maybe delete them. Turn this message off by\n"
-"running \"git config advice.objectNameWarning false\""
-msgstr ""
-"Git ne crée normalement jamais de référence qui se termine par 40\n"
-"caractères hexa car elle serait ignorée si vous spécifiez juste\n"
-"40-hexa. Ces références peuvent être créées par erreur. Par exemple,\n"
-"\n"
-"  git switch -c $br $(git rev-parse ...)\n"
-"\n"
-"où \"$br\" est d'une manière ou d'une autre vide et une référence 40-hexa "
-"est créée.\n"
-"Veuillez examiner ces références et peut-être les supprimer. Désactivez ce "
-"message\n"
-"en lançant \"git config advice.objectNameWarning false\""
+msgid "'$%s' too big"
+msgstr "'$%s' trop gros"
 
-#: sha1-name.c:916
+#: setup.c:826
 #, c-format
-msgid "log for '%.*s' only goes back to %s"
-msgstr "le journal de '%.*s' ne remonte qu'à %s"
+msgid "not a git repository: '%s'"
+msgstr "ce n'est pas un dépôt git : '%s'"
 
-#: sha1-name.c:924
+#: setup.c:855 setup.c:857 setup.c:888
 #, c-format
-msgid "log for '%.*s' only has %d entries"
-msgstr "le journal de '%.*s' n'a que %d entrées"
+msgid "cannot chdir to '%s'"
+msgstr "impossible de se déplacer vers le répertoire (chdir) '%s'"
 
-#: sha1-name.c:1702
+#: setup.c:860 setup.c:916 setup.c:926 setup.c:965 setup.c:973
+msgid "cannot come back to cwd"
+msgstr "impossible de revenir au répertoire de travail courant"
+
+#: setup.c:987
 #, c-format
-msgid "path '%s' exists on disk, but not in '%.*s'"
-msgstr "le chemin '%s' existe sur le disque, mais pas dans '%.*s'"
+msgid "failed to stat '%*s%s%s'"
+msgstr "échec du stat de '%*s%s%s'"
+
+#: setup.c:1225
+msgid "Unable to read current working directory"
+msgstr "Impossible d'accéder au répertoire de travail courant"
 
-#: sha1-name.c:1708
+#: setup.c:1234 setup.c:1240
 #, c-format
-msgid ""
-"path '%s' exists, but not '%s'\n"
-"hint: Did you mean '%.*s:%s' aka '%.*s:./%s'?"
-msgstr ""
-"le chemin '%s' existe, mais pas '%s'\n"
-"conseil : peut-être vouliez-vous dire '%.*s:%s', soit '%.*s:./%s'"
+msgid "cannot change to '%s'"
+msgstr "impossible de modifier en '%s'"
 
-#: sha1-name.c:1717
+#: setup.c:1245
 #, c-format
-msgid "path '%s' does not exist in '%.*s'"
-msgstr "le chemin '%s' n'existe pas dans '%.*s'"
+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"
 
-#: sha1-name.c:1745
+#: setup.c:1251
 #, c-format
 msgid ""
-"path '%s' is in the index, but not at stage %d\n"
-"hint: Did you mean ':%d:%s'?"
+"not a git repository (or any parent up to mount point %s)\n"
+"Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set)."
 msgstr ""
-"le chemin '%s' est dans l'index, mais pas à l'étape %d\n"
-"conseil : vous vouliez peut-être dire ':%d:%s' ?"
+"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)."
 
-#: sha1-name.c:1761
+#: setup.c:1362
 #, c-format
 msgid ""
-"path '%s' is in the index, but not '%s'\n"
-"hint: Did you mean ':%d:%s' aka ':%d:./%s'?"
+"problem with core.sharedRepository filemode value (0%.3o).\n"
+"The owner of files must always have read and write permissions."
 msgstr ""
-"le chemin '%s' est dans l'index, mais pas '%s'\n"
-"conseil : peut-être vouliez-vous dire ':%d:%s', soit '%d:./%s'"
-
-#: sha1-name.c:1769
-#, c-format
-msgid "path '%s' exists on disk, but not in the index"
-msgstr "le chemin '%s' existe sur le disque, mais pas dans l'index"
+"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."
 
-#: sha1-name.c:1771
-#, c-format
-msgid "path '%s' does not exist (neither on disk nor in the index)"
-msgstr "le chemin '%s' n'existe pas (ni sur le disque, ni dans l'index)"
+#: setup.c:1409
+msgid "open /dev/null or dup failed"
+msgstr "échec de l'ouverture ou au dup de /dev/null"
 
-#: sha1-name.c:1784
-msgid "relative path syntax can't be used outside working tree"
-msgstr ""
-"la syntaxe de chemin relatif ne peut pas être utilisée hors de l'arbre de "
-"travail"
+#: setup.c:1424
+msgid "fork failed"
+msgstr "échec de la bifurcation"
 
-#: sha1-name.c:1922
-#, c-format
-msgid "invalid object name '%.*s'."
-msgstr "nom d'objet invalide : '%.*s'."
+#: setup.c:1429
+msgid "setsid failed"
+msgstr "échec du setsid"
 
 #. TRANSLATORS: IEC 80000-13:2008 gibibyte
 #: strbuf.c:848
@@ -8400,7 +8660,7 @@ msgstr[0] "%u octet/s"
 msgstr[1] "%u octets/s"
 
 #: strbuf.c:1166 wrapper.c:199 wrapper.c:369 builtin/am.c:719
-#: builtin/rebase.c:864
+#: builtin/rebase.c:866
 #, c-format
 msgid "could not open '%s' for writing"
 msgstr "impossible d'ouvrir '%s' en écriture"
@@ -8467,12 +8727,12 @@ msgstr "dans le sous-module '%s' non populé"
 msgid "Pathspec '%s' is in submodule '%.*s'"
 msgstr "Le chemin '%s' est dans le sous-module '%.*s'"
 
-#: submodule.c:434
+#: submodule.c:435
 #, c-format
 msgid "bad --ignore-submodules argument: %s"
 msgstr "mauvais argument --ignore-submodules : %s"
 
-#: submodule.c:816
+#: submodule.c:817
 #, c-format
 msgid ""
 "Submodule in commit %s at path: '%s' collides with a submodule named the "
@@ -8481,12 +8741,12 @@ msgstr ""
 "Le sous-module dans le commit %s au chemin : '%s' entre en collision avec un "
 "sous-module du même nom. Ignoré."
 
-#: submodule.c:919
+#: submodule.c:920
 #, 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:1004
+#: submodule.c:1005
 #, c-format
 msgid ""
 "Could not run 'git rev-list <commits> --not --remotes -n 1' command in "
@@ -8495,36 +8755,36 @@ msgstr ""
 "Impossible de lancer la commande 'git rev-list <commits> --not --remotes -n "
 "1' dans le sous-module %s"
 
-#: submodule.c:1127
+#: submodule.c:1128
 #, c-format
 msgid "process for submodule '%s' failed"
 msgstr "le processus pour le sous-module '%s' a échoué"
 
-#: submodule.c:1156 builtin/branch.c:680 builtin/submodule--helper.c:2469
+#: submodule.c:1157 builtin/branch.c:689 builtin/submodule--helper.c:2469
 msgid "Failed to resolve HEAD as a valid ref."
 msgstr "Échec de résolution de HEAD comme référence valide."
 
-#: submodule.c:1167
+#: submodule.c:1168
 #, c-format
 msgid "Pushing submodule '%s'\n"
 msgstr "Poussée du sous-module '%s'\n"
 
-#: submodule.c:1170
+#: submodule.c:1171
 #, c-format
 msgid "Unable to push submodule '%s'\n"
 msgstr "Impossible de pousser le sous-module '%s'\n"
 
-#: submodule.c:1462
+#: submodule.c:1463
 #, c-format
 msgid "Fetching submodule %s%s\n"
 msgstr "Récupération du sous-module %s%s\n"
 
-#: submodule.c:1492
+#: submodule.c:1497
 #, c-format
 msgid "Could not access submodule '%s'\n"
 msgstr "Impossible d'accéder au sous-module '%s'\n"
 
-#: submodule.c:1646
+#: submodule.c:1652
 #, c-format
 msgid ""
 "Errors during submodule fetch:\n"
@@ -8533,63 +8793,63 @@ msgstr ""
 "Erreurs pendant la récupération du sous-module :\n"
 "%s"
 
-#: submodule.c:1671
+#: submodule.c:1677
 #, c-format
 msgid "'%s' not recognized as a git repository"
 msgstr "'%s' n'est pas reconnu comme dépôt git"
 
-#: submodule.c:1688
+#: submodule.c:1694
 #, c-format
 msgid "Could not run 'git status --porcelain=2' in submodule %s"
 msgstr "impossible de lancer 'git status --porcelain=2' dans le sous-module %s"
 
-#: submodule.c:1729
+#: submodule.c:1735
 #, c-format
 msgid "'git status --porcelain=2' failed in submodule %s"
 msgstr "'git status --porcelain=2' a échoué dans le sous-module %s"
 
-#: submodule.c:1804
+#: submodule.c:1810
 #, 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:1817
+#: submodule.c:1823
 #, c-format
 msgid "could not run 'git status' in submodule '%s'"
 msgstr "impossible de lancer 'git status' dans le sous-module '%s'"
 
-#: submodule.c:1832
+#: submodule.c:1838
 #, c-format
 msgid "Could not unset core.worktree setting in submodule '%s'"
 msgstr "Impossible de désactiver core.worktree dans le sous-module '%s'"
 
-#: submodule.c:1859 submodule.c:2169
+#: submodule.c:1865 submodule.c:2175
 #, c-format
 msgid "could not recurse into submodule '%s'"
 msgstr "récursion impossible dans le sous-module '%s'"
 
-#: submodule.c:1880
+#: submodule.c:1886
 msgid "could not reset submodule index"
 msgstr "impossible de réinitialiser l'index du sous-module"
 
-#: submodule.c:1922
+#: submodule.c:1928
 #, c-format
 msgid "submodule '%s' has dirty index"
 msgstr "le sous-module '%s' a un index sale"
 
-#: submodule.c:1974
+#: submodule.c:1980
 #, c-format
 msgid "Submodule '%s' could not be updated."
 msgstr "le sous-module '%s' n'a pas pu être mis à jour."
 
-#: submodule.c:2042
+#: submodule.c:2048
 #, c-format
 msgid "submodule git dir '%s' is inside git dir '%.*s'"
 msgstr ""
 "le répertoire git du sous-module '%s' est à l'intérieur du répertoire git "
 "'%.*s'"
 
-#: submodule.c:2063
+#: submodule.c:2069
 #, c-format
 msgid ""
 "relocate_gitdir for submodule '%s' with more than one worktree not supported"
@@ -8597,17 +8857,17 @@ msgstr ""
 "relocate_gitdir pour le sous-module '%s' avec plus d'un arbre de travail "
 "n'est pas supporté"
 
-#: submodule.c:2075 submodule.c:2134
+#: submodule.c:2081 submodule.c:2140
 #, c-format
 msgid "could not lookup name for submodule '%s'"
 msgstr "impossible de trouve le nom pour le sous-module '%s'"
 
-#: submodule.c:2079
+#: submodule.c:2085
 #, c-format
 msgid "refusing to move '%s' into an existing git dir"
 msgstr "refus de déplacer '%s' dans une répertoire git existant"
 
-#: submodule.c:2086
+#: submodule.c:2092
 #, c-format
 msgid ""
 "Migrating git directory of '%s%s' from\n"
@@ -8618,11 +8878,11 @@ msgstr ""
 "'%s' sur\n"
 "'%s'\n"
 
-#: submodule.c:2214
+#: submodule.c:2220
 msgid "could not start ls-files in .."
 msgstr "impossible de démarrer ls-files dans .."
 
-#: submodule.c:2254
+#: submodule.c:2260
 #, c-format
 msgid "ls-tree returned unexpected return code %d"
 msgstr "ls-tree a renvoyé un code de retour inattendu %d"
@@ -8653,7 +8913,7 @@ msgstr "symbole vide dans la ligne de fin '%.*s'"
 msgid "could not read input file '%s'"
 msgstr "impossible de lire le fichier d'entrée '%s'"
 
-#: trailer.c:751
+#: trailer.c:751 builtin/mktag.c:91
 msgid "could not read from stdin"
 msgstr "Impossible de lire depuis l'entrée standard"
 
@@ -8726,7 +8986,7 @@ msgstr "impossible de lancer fast-import"
 msgid "error while running fast-import"
 msgstr "erreur au lancement de fast-import"
 
-#: transport-helper.c:549 transport-helper.c:1236
+#: transport-helper.c:549 transport-helper.c:1237
 #, c-format
 msgid "could not read ref %s"
 msgstr "impossible de lire la réf %s"
@@ -8746,7 +9006,7 @@ msgstr ""
 msgid "invalid remote service path"
 msgstr "chemin de service distant invalide"
 
-#: transport-helper.c:661 transport.c:1446
+#: transport-helper.c:661 transport.c:1447
 msgid "operation not supported by protocol"
 msgstr "option non supportée par le protocole"
 
@@ -8827,52 +9087,52 @@ msgstr ""
 "Aucune référence en commun et aucune spécfiée ; rien à faire.\n"
 "Vous devriez peut-être spécifier une branche.\n"
 
-#: transport-helper.c:1213
+#: transport-helper.c:1214
 #, c-format
 msgid "unsupported object format '%s'"
 msgstr "format d'objet non géré '%s'"
 
-#: transport-helper.c:1222
+#: transport-helper.c:1223
 #, c-format
 msgid "malformed response in ref list: %s"
 msgstr "réponse malformée dans le liste de réfs : %s"
 
-#: transport-helper.c:1374
+#: transport-helper.c:1375
 #, c-format
 msgid "read(%s) failed"
 msgstr "échec de read(%s)"
 
-#: transport-helper.c:1401
+#: transport-helper.c:1402
 #, c-format
 msgid "write(%s) failed"
 msgstr "échec de write(%s)"
 
-#: transport-helper.c:1450
+#: transport-helper.c:1451
 #, c-format
 msgid "%s thread failed"
 msgstr "échec du fil d'exécution %s"
 
-#: transport-helper.c:1454
+#: transport-helper.c:1455
 #, c-format
 msgid "%s thread failed to join: %s"
 msgstr "échec de jonction du fil d'exécution %s : %s"
 
-#: transport-helper.c:1473 transport-helper.c:1477
+#: transport-helper.c:1474 transport-helper.c:1478
 #, c-format
 msgid "can't start thread for copying data: %s"
 msgstr "impossible de démarrer le fil d'exécution pour copier les données : %s"
 
-#: transport-helper.c:1514
+#: transport-helper.c:1515
 #, c-format
 msgid "%s process failed to wait"
 msgstr "échec du processus %s pour l'attente"
 
-#: transport-helper.c:1518
+#: transport-helper.c:1519
 #, c-format
 msgid "%s process failed"
 msgstr "échec du processus %s"
 
-#: transport-helper.c:1536 transport-helper.c:1545
+#: transport-helper.c:1537 transport-helper.c:1546
 msgid "can't start thread for copying data"
 msgstr "impossible de démarrer le fil d'exécution pour copier les données"
 
@@ -8961,23 +9221,23 @@ msgstr ""
 msgid "Aborting."
 msgstr "Abandon."
 
-#: transport.c:1315
+#: transport.c:1316
 msgid "failed to push all needed submodules"
 msgstr "échec de la poussée de tous les sous-modules nécessaires"
 
-#: tree-walk.c:32
+#: tree-walk.c:33
 msgid "too-short tree object"
 msgstr "objet arbre trop court"
 
-#: tree-walk.c:38
+#: tree-walk.c:39
 msgid "malformed mode in tree entry"
 msgstr "mode invalide dans l'entrée d'arbre"
 
-#: tree-walk.c:42
+#: tree-walk.c:43
 msgid "empty filename in tree entry"
 msgstr "nom de fichier vide dans une entrée de l'arbre"
 
-#: tree-walk.c:117
+#: tree-walk.c:118
 msgid "too-short tree file"
 msgstr "fichier arbre trop court"
 
@@ -9244,7 +9504,7 @@ msgstr ""
 msgid "Updating index flags"
 msgstr "Mise à jour des drapeaux de l'index"
 
-#: upload-pack.c:1550
+#: upload-pack.c:1543
 msgid "expected flush after fetch arguments"
 msgstr "vidage attendu après les arguments de récupération"
 
@@ -9281,75 +9541,107 @@ msgstr "segment de chemin '..' invalide"
 msgid "Fetching objects"
 msgstr "Récupération des objets"
 
-#: worktree.c:236 builtin/am.c:2103
+#: worktree.c:238 builtin/am.c:2103
 #, c-format
 msgid "failed to read '%s'"
 msgstr "échec de la lecture de '%s'"
 
-#: worktree.c:283
+#: worktree.c:304
 #, c-format
 msgid "'%s' at main working tree is not the repository directory"
 msgstr ""
 "'%s' dans l'arbre de travail principal n'est pas le répertoire de dépôt"
 
-#: worktree.c:294
+#: worktree.c:315
 #, c-format
 msgid "'%s' file does not contain absolute path to the working tree location"
 msgstr ""
 "le fichier '%s' ne contient pas de chemin absolu à l'emplacement de l'arbre "
 "de travail"
 
-#: worktree.c:306
+#: worktree.c:327
 #, c-format
 msgid "'%s' does not exist"
 msgstr "'%s' n'existe pas"
 
-#: worktree.c:312
+#: worktree.c:333
 #, c-format
 msgid "'%s' is not a .git file, error code %d"
 msgstr "'%s' n'est pas un fichier .git, code d'erreur %d"
 
-#: worktree.c:321
+#: worktree.c:342
 #, c-format
 msgid "'%s' does not point back to '%s'"
 msgstr "'%s' ne pointe pas en retour sur '%s'"
 
-#: worktree.c:587
+#: worktree.c:608
 msgid "not a directory"
 msgstr "pas un répertoire"
 
-#: worktree.c:596
+#: worktree.c:617
 msgid ".git is not a file"
 msgstr ".git n'est pas un fichier"
 
-#: worktree.c:598
+#: worktree.c:619
 msgid ".git file broken"
 msgstr "fichier .git cassé"
 
-#: worktree.c:600
+#: worktree.c:621
 msgid ".git file incorrect"
 msgstr "fichier .git incorrect"
 
-#: worktree.c:670
+#: worktree.c:727
 msgid "not a valid path"
 msgstr "pas un chemin valide"
 
-#: worktree.c:676
+#: worktree.c:733
 msgid "unable to locate repository; .git is not a file"
 msgstr "impossible de localiser le dépôt ; .git n'est pas un fichier"
 
-#: worktree.c:679
+#: worktree.c:737
+msgid "unable to locate repository; .git file does not reference a repository"
+msgstr ""
+"impossible de localiser le dépôt ; .git ne fait pas référence à un dépôt"
+
+#: worktree.c:741
 msgid "unable to locate repository; .git file broken"
 msgstr "impossible de localiser le dépôt ; fichier .git cassé"
 
-#: worktree.c:685
+#: worktree.c:747
 msgid "gitdir unreadable"
 msgstr "gitdir non lisible"
 
-#: worktree.c:689
+#: worktree.c:751
 msgid "gitdir incorrect"
 msgstr "gitdir incorrect"
 
+#: worktree.c:776
+msgid "not a valid directory"
+msgstr "pas un répertoire valide"
+
+#: worktree.c:782
+msgid "gitdir file does not exist"
+msgstr "le fichier gitdir n'existe pas"
+
+#: worktree.c:787 worktree.c:796
+#, c-format
+msgid "unable to read gitdir file (%s)"
+msgstr "impossible de lire le fichier gitdir (%s)"
+
+#: worktree.c:806
+#, c-format
+msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
+msgstr ""
+"lecture trop courte ( %<PRIuMAX> octets attendus, %<PRIuMAX> octets lus)"
+
+#: worktree.c:814
+msgid "invalid gitdir file"
+msgstr "fichier gitdir invalide"
+
+#: worktree.c:822
+msgid "gitdir file points to non-existent location"
+msgstr "le fichier gitdir pointe sur un endroit inexistant"
+
 #: wrapper.c:197 wrapper.c:367
 #, c-format
 msgid "could not open '%s' for reading and writing"
@@ -9397,11 +9689,11 @@ msgstr ""
 msgid "  (use \"git rm <file>...\" to mark resolution)"
 msgstr "  (utilisez \"git rm <fichier>...\" pour marquer comme résolu)"
 
-#: wt-status.c:211 wt-status.c:1070
+#: wt-status.c:211 wt-status.c:1072
 msgid "Changes to be committed:"
 msgstr "Modifications qui seront validées :"
 
-#: wt-status.c:234 wt-status.c:1079
+#: wt-status.c:234 wt-status.c:1081
 msgid "Changes not staged for commit:"
 msgstr "Modifications qui ne seront pas validées :"
 
@@ -9506,22 +9798,22 @@ msgstr "contenu modifié, "
 msgid "untracked content, "
 msgstr "contenu non suivi, "
 
-#: wt-status.c:903
+#: wt-status.c:905
 #, 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:934
+#: wt-status.c:936
 msgid "Submodules changed but not updated:"
 msgstr "Sous-modules modifiés mais non mis à jour :"
 
-#: wt-status.c:936
+#: wt-status.c:938
 msgid "Submodule changes to be committed:"
 msgstr "Changements du sous-module à valider :"
 
-#: wt-status.c:1018
+#: wt-status.c:1020
 msgid ""
 "Do not modify or remove the line above.\n"
 "Everything below it will be ignored."
@@ -9529,7 +9821,7 @@ msgstr ""
 "Ne touchez pas à la ligne ci-dessus.\n"
 "Tout ce qui suit sera éliminé."
 
-#: wt-status.c:1110
+#: wt-status.c:1112
 #, c-format
 msgid ""
 "\n"
@@ -9541,107 +9833,107 @@ msgstr ""
 "de la branche.\n"
 "Vous pouvez utiliser '--no-ahead-behind' pour éviter ceci.\n"
 
-#: wt-status.c:1140
+#: wt-status.c:1142
 msgid "You have unmerged paths."
 msgstr "Vous avez des chemins non fusionnés."
 
-#: wt-status.c:1143
+#: wt-status.c:1145
 msgid "  (fix conflicts and run \"git commit\")"
 msgstr "  (réglez les conflits puis lancez \"git commit\")"
 
-#: wt-status.c:1145
+#: wt-status.c:1147
 msgid "  (use \"git merge --abort\" to abort the merge)"
 msgstr "  (utilisez \"git merge --abort\" pour annuler la fusion)"
 
-#: wt-status.c:1149
+#: wt-status.c:1151
 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:1152
+#: wt-status.c:1154
 msgid "  (use \"git commit\" to conclude merge)"
 msgstr "  (utilisez \"git commit\" pour terminer la fusion)"
 
-#: wt-status.c:1161
+#: wt-status.c:1163
 msgid "You are in the middle of an am session."
 msgstr "Vous êtes au milieu d'une session am."
 
-#: wt-status.c:1164
+#: wt-status.c:1166
 msgid "The current patch is empty."
 msgstr "Le patch actuel est vide."
 
-#: wt-status.c:1168
+#: wt-status.c:1170
 msgid "  (fix conflicts and then run \"git am --continue\")"
 msgstr "  (réglez les conflits puis lancez \"git am --continue\")"
 
-#: wt-status.c:1170
+#: wt-status.c:1172
 msgid "  (use \"git am --skip\" to skip this patch)"
 msgstr "  (utilisez \"git am --skip\" pour sauter ce patch)"
 
-#: wt-status.c:1172
+#: wt-status.c:1174
 msgid "  (use \"git am --abort\" to restore the original branch)"
 msgstr "  (utilisez \"git am --abort\" pour restaurer la branche d'origine)"
 
-#: wt-status.c:1305
+#: wt-status.c:1307
 msgid "git-rebase-todo is missing."
 msgstr "git-rebase-todo est manquant."
 
-#: wt-status.c:1307
+#: wt-status.c:1309
 msgid "No commands done."
 msgstr "Aucune commande réalisée."
 
-#: wt-status.c:1310
+#: wt-status.c:1312
 #, 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:1321
+#: wt-status.c:1323
 #, c-format
 msgid "  (see more in file %s)"
 msgstr "  (voir plus dans le fichier %s)"
 
-#: wt-status.c:1326
+#: wt-status.c:1328
 msgid "No commands remaining."
 msgstr "Aucune commande restante."
 
-#: wt-status.c:1329
+#: wt-status.c:1331
 #, 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:1337
+#: wt-status.c:1339
 msgid "  (use \"git rebase --edit-todo\" to view and edit)"
 msgstr "  (utilisez \"git rebase --edit-todo\" pour voir et éditer)"
 
-#: wt-status.c:1349
+#: wt-status.c:1351
 #, 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:1354
+#: wt-status.c:1356
 msgid "You are currently rebasing."
 msgstr "Vous êtes en train de rebaser."
 
-#: wt-status.c:1367
+#: wt-status.c:1369
 msgid "  (fix conflicts and then run \"git rebase --continue\")"
 msgstr "  (réglez les conflits puis lancez \"git rebase --continue\")"
 
-#: wt-status.c:1369
+#: wt-status.c:1371
 msgid "  (use \"git rebase --skip\" to skip this patch)"
 msgstr "  (utilisez \"git rebase --skip\" pour sauter ce patch)"
 
-#: wt-status.c:1371
+#: wt-status.c:1373
 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:1378
+#: wt-status.c:1380
 msgid "  (all conflicts fixed: run \"git rebase --continue\")"
 msgstr "  (tous les conflits sont réglés : lancez \"git rebase --continue\")"
 
-#: wt-status.c:1382
+#: wt-status.c:1384
 #, c-format
 msgid ""
 "You are currently splitting a commit while rebasing branch '%s' on '%s'."
@@ -9649,151 +9941,159 @@ msgstr ""
 "Vous êtes actuellement en train de fractionner un commit pendant un rebasage "
 "de la branche '%s' sur '%s'."
 
-#: wt-status.c:1387
+#: wt-status.c:1389
 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:1390
+#: wt-status.c:1392
 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:1394
+#: wt-status.c:1396
 #, 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:1399
+#: wt-status.c:1401
 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:1402
+#: wt-status.c:1404
 msgid "  (use \"git commit --amend\" to amend the current commit)"
 msgstr "  (utilisez \"git commit --amend\" pour corriger le commit actuel)"
 
-#: wt-status.c:1404
+#: wt-status.c:1406
 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:1415
+#: wt-status.c:1417
 msgid "Cherry-pick currently in progress."
 msgstr "Picorage en cours."
 
-#: wt-status.c:1418
+#: wt-status.c:1420
 #, c-format
 msgid "You are currently cherry-picking commit %s."
 msgstr "Vous êtes actuellement en train de picorer le commit %s."
 
-#: wt-status.c:1425
+#: wt-status.c:1427
 msgid "  (fix conflicts and run \"git cherry-pick --continue\")"
 msgstr "  (réglez les conflits puis lancez \"git cherry-pick --continue\")"
 
-#: wt-status.c:1428
+#: wt-status.c:1430
 msgid "  (run \"git cherry-pick --continue\" to continue)"
 msgstr "  (lancez \"git cherry-pick --continue\" pour continuer)"
 
-#: wt-status.c:1431
+#: wt-status.c:1433
 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:1433
+#: wt-status.c:1435
 msgid "  (use \"git cherry-pick --skip\" to skip this patch)"
 msgstr "  (utilisez \"git cherry-pick --skip\" pour sauter ce patch)"
 
-#: wt-status.c:1435
+#: wt-status.c:1437
 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:1445
+#: wt-status.c:1447
 msgid "Revert currently in progress."
 msgstr "Rétablissement en cours."
 
-#: wt-status.c:1448
+#: wt-status.c:1450
 #, c-format
 msgid "You are currently reverting commit %s."
 msgstr "Vous êtes actuellement en train de rétablir le commit %s."
 
-#: wt-status.c:1454
+#: wt-status.c:1456
 msgid "  (fix conflicts and run \"git revert --continue\")"
 msgstr "  (réglez les conflits puis lancez \"git revert --continue\")"
 
-#: wt-status.c:1457
+#: wt-status.c:1459
 msgid "  (run \"git revert --continue\" to continue)"
 msgstr "  (lancez \"git revert --continue\" pour continuer)"
 
-#: wt-status.c:1460
+#: wt-status.c:1462
 msgid "  (all conflicts fixed: run \"git revert --continue\")"
 msgstr "  (tous les conflits sont réglés : lancez \"git revert --continue\")"
 
-#: wt-status.c:1462
+#: wt-status.c:1464
 msgid "  (use \"git revert --skip\" to skip this patch)"
 msgstr "  (utilisez \"git revert --skip\" pour sauter ce patch)"
 
-#: wt-status.c:1464
+#: wt-status.c:1466
 msgid "  (use \"git revert --abort\" to cancel the revert operation)"
 msgstr "  (utilisez \"git revert --abort\" pour annuler le rétablissement)"
 
-#: wt-status.c:1474
+#: wt-status.c:1476
 #, 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:1478
+#: wt-status.c:1480
 msgid "You are currently bisecting."
 msgstr "Vous êtes en cours de bissection."
 
-#: wt-status.c:1481
+#: wt-status.c:1483
 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:1492
+#: wt-status.c:1494
 #, c-format
 msgid "You are in a sparse checkout with %d%% of tracked files present."
 msgstr ""
 "Vous êtes dans une extraction partielle avec %d %% de fichiers suivis "
 "présents."
 
-#: wt-status.c:1731
+#: wt-status.c:1733
 msgid "On branch "
 msgstr "Sur la branche "
 
-#: wt-status.c:1738
+#: wt-status.c:1740
 msgid "interactive rebase in progress; onto "
 msgstr "rebasage interactif en cours ; sur "
 
-#: wt-status.c:1740
+#: wt-status.c:1742
 msgid "rebase in progress; onto "
 msgstr "rebasage en cours ; sur "
 
-#: wt-status.c:1750
+#: wt-status.c:1747
+msgid "HEAD detached at "
+msgstr "HEAD détachée sur "
+
+#: wt-status.c:1749
+msgid "HEAD detached from "
+msgstr "HEAD détachée depuis "
+
+#: wt-status.c:1752
 msgid "Not currently on any branch."
 msgstr "Actuellement sur aucun branche."
 
-#: wt-status.c:1767
+#: wt-status.c:1769
 msgid "Initial commit"
 msgstr "Validation initiale"
 
-#: wt-status.c:1768
+#: wt-status.c:1770
 msgid "No commits yet"
 msgstr "Aucun commit"
 
-#: wt-status.c:1782
+#: wt-status.c:1784
 msgid "Untracked files"
 msgstr "Fichiers non suivis"
 
-#: wt-status.c:1784
+#: wt-status.c:1786
 msgid "Ignored files"
 msgstr "Fichiers ignorés"
 
-#: wt-status.c:1788
+#: wt-status.c:1790
 #, c-format
 msgid ""
 "It took %.2f seconds to enumerate untracked files. 'status -uno'\n"
@@ -9805,32 +10105,32 @@ msgstr ""
 "oublier d'ajouter les nouveaux fichiers par vous-même (voir 'git help "
 "status')."
 
-#: wt-status.c:1794
+#: wt-status.c:1796
 #, c-format
 msgid "Untracked files not listed%s"
 msgstr "Fichiers non suivis non affichés%s"
 
-#: wt-status.c:1796
+#: wt-status.c:1798
 msgid " (use -u option to show untracked files)"
 msgstr " (utilisez -u pour afficher les fichiers non suivis)"
 
-#: wt-status.c:1802
+#: wt-status.c:1804
 msgid "No changes"
 msgstr "Aucune modification"
 
-#: wt-status.c:1807
+#: wt-status.c:1809
 #, c-format
 msgid "no changes added to commit (use \"git add\" and/or \"git commit -a\")\n"
 msgstr ""
 "aucune modification n'a été ajoutée à la validation (utilisez \"git add\" ou "
 "\"git commit -a\")\n"
 
-#: wt-status.c:1811
+#: wt-status.c:1813
 #, c-format
 msgid "no changes added to commit\n"
 msgstr "aucune modification ajoutée à la validation\n"
 
-#: wt-status.c:1815
+#: wt-status.c:1817
 #, c-format
 msgid ""
 "nothing added to commit but untracked files present (use \"git add\" to "
@@ -9839,66 +10139,66 @@ 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:1819
+#: wt-status.c:1821
 #, 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:1823
+#: wt-status.c:1825
 #, 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:1827 wt-status.c:1833
+#: wt-status.c:1829 wt-status.c:1835
 #, c-format
 msgid "nothing to commit\n"
 msgstr "rien à valider\n"
 
-#: wt-status.c:1830
+#: wt-status.c:1832
 #, 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:1835
+#: wt-status.c:1837
 #, c-format
 msgid "nothing to commit, working tree clean\n"
 msgstr "rien à valider, la copie de travail est propre\n"
 
-#: wt-status.c:1940
+#: wt-status.c:1942
 msgid "No commits yet on "
 msgstr "Encore aucun commit sur "
 
-#: wt-status.c:1944
+#: wt-status.c:1946
 msgid "HEAD (no branch)"
 msgstr "HEAD (aucune branche)"
 
-#: wt-status.c:1975
+#: wt-status.c:1977
 msgid "different"
 msgstr "différent"
 
-#: wt-status.c:1977 wt-status.c:1985
+#: wt-status.c:1979 wt-status.c:1987
 msgid "behind "
 msgstr "derrière "
 
-#: wt-status.c:1980 wt-status.c:1983
+#: wt-status.c:1982 wt-status.c:1985
 msgid "ahead "
 msgstr "devant "
 
 #. TRANSLATORS: the action is e.g. "pull with rebase"
-#: wt-status.c:2505
+#: wt-status.c:2507
 #, c-format
 msgid "cannot %s: You have unstaged changes."
 msgstr "Impossible de %s : vous avez des modifications non indexées."
 
-#: wt-status.c:2511
+#: wt-status.c:2513
 msgid "additionally, your index contains uncommitted changes."
 msgstr "de plus, votre index contient des modifications non validées."
 
-#: wt-status.c:2513
+#: wt-status.c:2515
 #, c-format
 msgid "cannot %s: Your index contains uncommitted changes."
 msgstr "%s impossible : votre index contient des modifications non validées."
@@ -9912,131 +10212,136 @@ msgstr "échec pour délier '%s'"
 msgid "git add [<options>] [--] <pathspec>..."
 msgstr "git add [<options>] [--] <chemin>..."
 
-#: builtin/add.c:88
+#: builtin/add.c:58
+#, c-format
+msgid "cannot chmod %cx '%s'"
+msgstr "impossible de chmod %cx '%s'"
+
+#: builtin/add.c:96
 #, c-format
 msgid "unexpected diff status %c"
 msgstr "état de diff inattendu %c"
 
-#: builtin/add.c:93 builtin/commit.c:285
+#: builtin/add.c:101 builtin/commit.c:285
 msgid "updating files failed"
 msgstr "échec de la mise à jour des fichiers"
 
-#: builtin/add.c:103
+#: builtin/add.c:111
 #, c-format
 msgid "remove '%s'\n"
 msgstr "suppression de '%s'\n"
 
-#: builtin/add.c:178
+#: builtin/add.c:186
 msgid "Unstaged changes after refreshing the index:"
 msgstr "Modifications non indexées après rafraîchissement de l'index :"
 
-#: builtin/add.c:272 builtin/rev-parse.c:908
+#: builtin/add.c:280 builtin/rev-parse.c:991
 msgid "Could not read the index"
 msgstr "Impossible de lire l'index"
 
-#: builtin/add.c:283
+#: builtin/add.c:291
 #, c-format
 msgid "Could not open '%s' for writing."
 msgstr "Impossible d'ouvrir '%s' en écriture."
 
-#: builtin/add.c:287
+#: builtin/add.c:295
 msgid "Could not write patch"
 msgstr "Impossible d'écrire le patch"
 
-#: builtin/add.c:290
+#: builtin/add.c:298
 msgid "editing patch failed"
 msgstr "échec de l'édition du patch"
 
-#: builtin/add.c:293
+#: builtin/add.c:301
 #, c-format
 msgid "Could not stat '%s'"
 msgstr "Stat de '%s' impossible"
 
-#: builtin/add.c:295
+#: builtin/add.c:303
 msgid "Empty patch. Aborted."
 msgstr "Patch vide. Abandon."
 
-#: builtin/add.c:300
+#: builtin/add.c:308
 #, c-format
 msgid "Could not apply '%s'"
 msgstr "Impossible d'appliquer '%s'"
 
-#: builtin/add.c:308
+#: builtin/add.c:316
 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:328 builtin/clean.c:904 builtin/fetch.c:166 builtin/mv.c:124
+#: builtin/add.c:336 builtin/clean.c:904 builtin/fetch.c:169 builtin/mv.c:124
 #: builtin/prune-packed.c:14 builtin/pull.c:204 builtin/push.c:559
 #: builtin/remote.c:1427 builtin/rm.c:242 builtin/send-pack.c:190
 msgid "dry run"
 msgstr "simuler l'action"
 
-#: builtin/add.c:331
+#: builtin/add.c:339
 msgid "interactive picking"
 msgstr "sélection interactive"
 
-#: builtin/add.c:332 builtin/checkout.c:1547 builtin/reset.c:308
+#: builtin/add.c:340 builtin/checkout.c:1546 builtin/reset.c:308
 msgid "select hunks interactively"
 msgstr "sélection interactive des sections"
 
-#: builtin/add.c:333
+#: builtin/add.c:341
 msgid "edit current diff and apply"
 msgstr "édition du diff actuel et application"
 
-#: builtin/add.c:334
+#: builtin/add.c:342
 msgid "allow adding otherwise ignored files"
 msgstr "permettre l'ajout de fichiers ignorés"
 
-#: builtin/add.c:335
+#: builtin/add.c:343
 msgid "update tracked files"
 msgstr "mettre à jour les fichiers suivis"
 
-#: builtin/add.c:336
+#: builtin/add.c:344
 msgid "renormalize EOL of tracked files (implies -u)"
 msgstr ""
 "renormaliser les fins de lignes (EOL) des fichiers suivis (implique -u)"
 
-#: builtin/add.c:337
+#: builtin/add.c:345
 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:338
+#: builtin/add.c:346
 msgid "add changes from all tracked and untracked files"
 msgstr "ajouter les modifications de tous les fichiers suivis et non suivis"
 
-#: builtin/add.c:341
+#: builtin/add.c:349
 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:343
+#: builtin/add.c:351
 msgid "don't add, only refresh the index"
 msgstr "ne pas ajouter, juste rafraîchir l'index"
 
-#: builtin/add.c:344
+#: builtin/add.c:352
 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:345
+#: builtin/add.c:353
 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:347 builtin/update-index.c:1004
+#: builtin/add.c:355 builtin/update-index.c:1004
 msgid "override the executable bit of the listed files"
 msgstr "outrepasser le bit exécutable pour les fichiers listés"
 
-#: builtin/add.c:349
+#: builtin/add.c:357
 msgid "warn when adding an embedded repository"
 msgstr "avertir lors de l'ajout d'un dépôt embarqué"
 
-#: builtin/add.c:351
+#: builtin/add.c:359
 msgid "backend for `git stash -p`"
 msgstr "backend pour `git stash -p`"
 
-#: builtin/add.c:369
+#: builtin/add.c:377
 #, c-format
 msgid ""
 "You've added another git repository inside your current repository.\n"
@@ -10067,12 +10372,12 @@ msgstr ""
 "\n"
 "Référez-vous à \"git help submodule\" pour plus d'information."
 
-#: builtin/add.c:397
+#: builtin/add.c:405
 #, c-format
 msgid "adding embedded git repository: %s"
 msgstr "dépôt git embarqué ajouté : %s"
 
-#: builtin/add.c:416
+#: builtin/add.c:424
 msgid ""
 "Use -f if you really want to add them.\n"
 "Turn this message off by running\n"
@@ -10082,48 +10387,48 @@ msgstr ""
 "Éliminez ce message en lançant\n"
 "\"git config advice.addIgnoredFile false\""
 
-#: builtin/add.c:425
+#: builtin/add.c:433
 msgid "adding files failed"
 msgstr "échec de l'ajout de fichiers"
 
-#: builtin/add.c:453 builtin/commit.c:345
+#: builtin/add.c:461 builtin/commit.c:345
 msgid "--pathspec-from-file is incompatible with --interactive/--patch"
 msgstr "--pathspec-from-file est incompatible avec --interactive/--patch"
 
-#: builtin/add.c:470
+#: builtin/add.c:478
 msgid "--pathspec-from-file is incompatible with --edit"
 msgstr "--pathspec-from-file est incompatible avec --edit"
 
-#: builtin/add.c:482
+#: builtin/add.c:490
 msgid "-A and -u are mutually incompatible"
 msgstr "-A et -u sont mutuellement incompatibles"
 
-#: builtin/add.c:485
+#: builtin/add.c:493
 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:489
+#: builtin/add.c:497
 #, 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:507 builtin/checkout.c:1715 builtin/commit.c:351
-#: builtin/reset.c:328 builtin/rm.c:272 builtin/stash.c:1502
+#: builtin/add.c:515 builtin/checkout.c:1714 builtin/commit.c:351
+#: builtin/reset.c:328 builtin/rm.c:272 builtin/stash.c:1569
 msgid "--pathspec-from-file is incompatible with pathspec arguments"
 msgstr "--pathspec-from-file est incompatible avec pathspec arguments"
 
-#: builtin/add.c:514 builtin/checkout.c:1727 builtin/commit.c:357
-#: builtin/reset.c:334 builtin/rm.c:278 builtin/stash.c:1508
+#: builtin/add.c:522 builtin/checkout.c:1726 builtin/commit.c:357
+#: builtin/reset.c:334 builtin/rm.c:278 builtin/stash.c:1575
 msgid "--pathspec-file-nul requires --pathspec-from-file"
 msgstr "--pathspec-file-nul nécessite --pathspec-from-file"
 
-#: builtin/add.c:518
+#: builtin/add.c:526
 #, c-format
 msgid "Nothing specified, nothing added.\n"
 msgstr "Rien de spécifié, rien n'a été ajouté.\n"
 
-#: builtin/add.c:520
+#: builtin/add.c:528
 msgid ""
 "Maybe you wanted to say 'git add .'?\n"
 "Turn this message off by running\n"
@@ -10382,7 +10687,7 @@ msgid "allow fall back on 3way merging if needed"
 msgstr "permettre de revenir à une fusion à 3 points si nécessaire"
 
 #: builtin/am.c:2225 builtin/init-db.c:560 builtin/prune-packed.c:16
-#: builtin/repack.c:335 builtin/stash.c:815
+#: builtin/repack.c:334 builtin/stash.c:882
 msgid "be quiet"
 msgstr "être silencieux"
 
@@ -10426,17 +10731,17 @@ msgid "pass it through git-apply"
 msgstr "le passer jusqu'à git-apply"
 
 #: builtin/am.c:2263 builtin/commit.c:1395 builtin/fmt-merge-msg.c:17
-#: builtin/fmt-merge-msg.c:20 builtin/grep.c:903 builtin/merge.c:260
+#: builtin/fmt-merge-msg.c:20 builtin/grep.c:904 builtin/merge.c:261
 #: builtin/pull.c:141 builtin/pull.c:200 builtin/pull.c:217
-#: builtin/rebase.c:1341 builtin/repack.c:346 builtin/repack.c:350
-#: builtin/repack.c:352 builtin/show-branch.c:650 builtin/show-ref.c:172
-#: builtin/tag.c:404 parse-options.h:154 parse-options.h:175
+#: builtin/rebase.c:1347 builtin/repack.c:345 builtin/repack.c:349
+#: builtin/repack.c:351 builtin/show-branch.c:650 builtin/show-ref.c:172
+#: builtin/tag.c:436 parse-options.h:154 parse-options.h:175
 #: parse-options.h:316
 msgid "n"
 msgstr "n"
 
-#: builtin/am.c:2269 builtin/branch.c:661 builtin/bugreport.c:136
-#: builtin/for-each-ref.c:38 builtin/replace.c:556 builtin/tag.c:438
+#: builtin/am.c:2269 builtin/branch.c:670 builtin/bugreport.c:136
+#: builtin/for-each-ref.c:38 builtin/replace.c:556 builtin/tag.c:470
 #: builtin/verify-tag.c:38
 msgid "format"
 msgstr "format"
@@ -10462,13 +10767,12 @@ msgid "skip the current patch"
 msgstr "sauter le patch courant"
 
 #: builtin/am.c:2287
-msgid "restore the original branch and abort the patching operation."
-msgstr ""
-"restaurer la branche originale et abandonner les applications de patch."
+msgid "restore the original branch and abort the patching operation"
+msgstr "restaurer la branche originale et abandonner les applications de patch"
 
 #: builtin/am.c:2290
-msgid "abort the patching operation but keep HEAD where it is."
-msgstr "abandonne l'opération de patch mais garde HEAD où il est."
+msgid "abort the patching operation but keep HEAD where it is"
+msgstr "abandonne l'opération de patch mais garde HEAD où il est"
 
 #: builtin/am.c:2294
 msgid "show the patch being applied"
@@ -10483,12 +10787,12 @@ msgid "use current timestamp for author date"
 msgstr "utiliser l'horodatage actuel pour la date d'auteur"
 
 #: builtin/am.c:2303 builtin/commit-tree.c:120 builtin/commit.c:1515
-#: builtin/merge.c:297 builtin/pull.c:175 builtin/rebase.c:536
-#: builtin/rebase.c:1394 builtin/revert.c:117 builtin/tag.c:419
+#: builtin/merge.c:298 builtin/pull.c:175 builtin/rebase.c:538
+#: builtin/rebase.c:1400 builtin/revert.c:117 builtin/tag.c:451
 msgid "key-id"
 msgstr "id-clé"
 
-#: builtin/am.c:2304 builtin/rebase.c:537 builtin/rebase.c:1395
+#: builtin/am.c:2304 builtin/rebase.c:539 builtin/rebase.c:1401
 msgid "GPG-sign commits"
 msgstr "signer les commits avec GPG"
 
@@ -10572,28 +10876,12 @@ msgid "git bisect--helper --bisect-reset [<commit>]"
 msgstr "git bisect--helper --bisect-reset [<commit>]"
 
 #: builtin/bisect--helper.c:24
-msgid ""
-"git bisect--helper --bisect-write [--no-log] <state> <revision> <good_term> "
-"<bad_term>"
-msgstr ""
-"git bisect--helper --bisect-write [--no-log] <état> <révision> <terme-pour-"
-"bon> <terme-pour-mauvais>"
-
-#: builtin/bisect--helper.c:25
-msgid ""
-"git bisect--helper --bisect-check-and-set-terms <command> <good_term> "
-"<bad_term>"
-msgstr ""
-"git bisect--helper --bisect-check-and-set-terms <commande> <terme-pour-bon> "
-"<terme-pour-mauvais>"
-
-#: builtin/bisect--helper.c:26
 msgid "git bisect--helper --bisect-next-check <good_term> <bad_term> [<term>]"
 msgstr ""
 "git bisect--helper --bisect-next-check <terme-pour-bon> <terme-pour-mauvais> "
 "[<term>]"
 
-#: builtin/bisect--helper.c:27
+#: builtin/bisect--helper.c:25
 msgid ""
 "git bisect--helper --bisect-terms [--term-good | --term-old | --term-bad | --"
 "term-new]"
@@ -10601,7 +10889,7 @@ msgstr ""
 "git bisect--helper --bisect-terms [--term-good | --term-old | --term-bad | --"
 "term-new]"
 
-#: builtin/bisect--helper.c:28
+#: builtin/bisect--helper.c:26
 msgid ""
 "git bisect--helper --bisect-start [--term-{new,bad}=<term> --term-{old,good}"
 "=<term>] [--no-checkout] [--first-parent] [<bad> [<good>...]] [--] "
@@ -10611,62 +10899,66 @@ msgstr ""
 "=<terme>][--no-checkout] [--first-parent] [<mauvais> [<bon>...]] [--] "
 "[<chemins>...]"
 
-#: builtin/bisect--helper.c:30
+#: builtin/bisect--helper.c:28
 msgid "git bisect--helper --bisect-next"
 msgstr "git bisect--helper --bisect-next"
 
-#: builtin/bisect--helper.c:31
-msgid "git bisect--helper --bisect-auto-next"
-msgstr "git bisect--helper --bisect-auto-next"
-
-#: builtin/bisect--helper.c:32
+#: builtin/bisect--helper.c:29
 msgid "git bisect--helper --bisect-state (bad|new) [<rev>]"
 msgstr "git bisect--helper --bisect-reset (bad|new) [<rév>]"
 
-#: builtin/bisect--helper.c:33
+#: builtin/bisect--helper.c:30
 msgid "git bisect--helper --bisect-state (good|old) [<rev>...]"
 msgstr "git bisect--helper --bisect-reset (good|old) [<rév>...]"
 
-#: builtin/bisect--helper.c:108
+#: builtin/bisect--helper.c:31
+msgid "git bisect--helper --bisect-replay <filename>"
+msgstr "git bisect--helper --bisect-next <nom-de-fichier>"
+
+#: builtin/bisect--helper.c:32
+msgid "git bisect--helper --bisect-skip [(<rev>|<range>)...]"
+msgstr "git bisect--helper --bisect-skip [(<rév>|<plage>)...]"
+
+#: builtin/bisect--helper.c:107
 #, c-format
 msgid "cannot open file '%s' in mode '%s'"
 msgstr "impossible d'ouvrir le fichier '%s' en mode '%s'"
 
-#: builtin/bisect--helper.c:115
+#: builtin/bisect--helper.c:114
 #, c-format
 msgid "could not write to file '%s'"
 msgstr "impossible d'écrire le fichier '%s'"
 
-#: builtin/bisect--helper.c:154
+#: builtin/bisect--helper.c:153
 #, c-format
 msgid "'%s' is not a valid term"
 msgstr "'%s' n'est pas un terme valide"
 
-#: builtin/bisect--helper.c:158
+#: builtin/bisect--helper.c:157
 #, c-format
 msgid "can't use the builtin command '%s' as a term"
 msgstr "impossible d'utiliser la commande incluse '%s' comme terme"
 
-#: builtin/bisect--helper.c:168
+#: builtin/bisect--helper.c:167
 #, c-format
 msgid "can't change the meaning of the term '%s'"
 msgstr "impossible de modifier la signification du terme '%s'"
 
-#: builtin/bisect--helper.c:178
+#: builtin/bisect--helper.c:177
 msgid "please use two different terms"
 msgstr "veuillez utiliser deux termes différents"
 
-#: builtin/bisect--helper.c:194
+#: builtin/bisect--helper.c:193
 #, c-format
 msgid "We are not bisecting.\n"
 msgstr "Pas de bissection en cours.\n"
 
-#: builtin/bisect--helper.c:202
+#: builtin/bisect--helper.c:201
 #, c-format
 msgid "'%s' is not a valid commit"
 msgstr "'%s' n'est pas un commit valide"
 
-#: builtin/bisect--helper.c:211
+#: builtin/bisect--helper.c:210
 #, c-format
 msgid ""
 "could not check out original HEAD '%s'. Try 'git bisect reset <commit>'."
@@ -10674,27 +10966,27 @@ msgstr ""
 "Échec d'extraction de la HEAD d'origine '%s'. Essayez 'git bisect reset "
 "<commit>'."
 
-#: builtin/bisect--helper.c:255
+#: builtin/bisect--helper.c:254
 #, c-format
 msgid "Bad bisect_write argument: %s"
 msgstr "Mauvais argument pour bisect_write : %s"
 
-#: builtin/bisect--helper.c:260
+#: builtin/bisect--helper.c:259
 #, c-format
 msgid "couldn't get the oid of the rev '%s'"
 msgstr "impossible d'obtenir l'oid de la révision '%s'"
 
-#: builtin/bisect--helper.c:272
+#: builtin/bisect--helper.c:271
 #, c-format
 msgid "couldn't open the file '%s'"
 msgstr "impossible d'ouvrir le fichier '%s'"
 
-#: builtin/bisect--helper.c:298
+#: builtin/bisect--helper.c:297
 #, c-format
 msgid "Invalid command: you're currently in a %s/%s bisect"
 msgstr "Commande invalide : vous êtes actuellement dans une bissection %s/%s"
 
-#: builtin/bisect--helper.c:325
+#: builtin/bisect--helper.c:324
 #, c-format
 msgid ""
 "You need to give me at least one %s and %s revision.\n"
@@ -10703,7 +10995,7 @@ msgstr ""
 "Vous devez me donner au moins une révision %s et une révision %s.\n"
 "Vous pouvez utiliser \"git bisect %s\" et \"git bisect %s\" pour cela."
 
-#: builtin/bisect--helper.c:329
+#: builtin/bisect--helper.c:328
 #, c-format
 msgid ""
 "You need to start by \"git bisect start\".\n"
@@ -10714,7 +11006,7 @@ msgstr ""
 "Puis vous devez me donner au moins une révision %s et une révision %s.\n"
 "Vous pouvez utiliser \"git bisect %s\" et \"git bisect %s\" pour cela."
 
-#: builtin/bisect--helper.c:349
+#: builtin/bisect--helper.c:348
 #, c-format
 msgid "bisecting only with a %s commit"
 msgstr "Attention : bissection avec seulement une validation %s"
@@ -10723,15 +11015,15 @@ msgstr "Attention : bissection avec seulement une validation %s"
 #. translation. The program will only accept English input
 #. at this point.
 #.
-#: builtin/bisect--helper.c:357
+#: builtin/bisect--helper.c:356
 msgid "Are you sure [Y/n]? "
 msgstr "Confirmez-vous [Y/n] ? "
 
-#: builtin/bisect--helper.c:418
+#: builtin/bisect--helper.c:417
 msgid "no terms defined"
 msgstr "aucun terme défini"
 
-#: builtin/bisect--helper.c:421
+#: builtin/bisect--helper.c:420
 #, c-format
 msgid ""
 "Your current terms are %s for the old state\n"
@@ -10740,7 +11032,7 @@ msgstr ""
 "Vos termes actuels sont %s pour l'état ancien\n"
 "et %s pour le nouvel état.\n"
 
-#: builtin/bisect--helper.c:431
+#: builtin/bisect--helper.c:430
 #, c-format
 msgid ""
 "invalid argument %s for 'git bisect terms'.\n"
@@ -10750,53 +11042,53 @@ msgstr ""
 "Les options supportées sont : --term-good|--term-old et --term-bad|--term-"
 "new."
 
-#: builtin/bisect--helper.c:498
+#: builtin/bisect--helper.c:497 builtin/bisect--helper.c:1014
 msgid "revision walk setup failed\n"
 msgstr "échec de la préparation du parcours des révisions\n"
 
-#: builtin/bisect--helper.c:520
+#: builtin/bisect--helper.c:519
 #, c-format
 msgid "could not open '%s' for appending"
 msgstr "impossible d'ouvrir '%s' en ajout"
 
-#: builtin/bisect--helper.c:639 builtin/bisect--helper.c:652
+#: builtin/bisect--helper.c:638 builtin/bisect--helper.c:651
 msgid "'' is not a valid term"
 msgstr "'' n'est pas un terme valide"
 
-#: builtin/bisect--helper.c:662
+#: builtin/bisect--helper.c:661
 #, c-format
 msgid "unrecognized option: '%s'"
 msgstr "option non reconnue : '%s'"
 
-#: builtin/bisect--helper.c:666
+#: builtin/bisect--helper.c:665
 #, c-format
 msgid "'%s' does not appear to be a valid revision"
 msgstr "'%s' ne semble être une révision valide"
 
-#: builtin/bisect--helper.c:697
+#: builtin/bisect--helper.c:696
 msgid "bad HEAD - I need a HEAD"
 msgstr "mauvaise HEAD - j'ai besoin d'une HEAD"
 
-#: builtin/bisect--helper.c:712
+#: builtin/bisect--helper.c:711
 #, c-format
 msgid "checking out '%s' failed. Try 'git bisect start <valid-branch>'."
 msgstr ""
 "L'extraction de '%s' a échoué. Essayez 'git bisect start <branche-valide>'."
 
-#: builtin/bisect--helper.c:733
+#: builtin/bisect--helper.c:732
 msgid "won't bisect on cg-seek'ed tree"
 msgstr "refus de bissecter sur un arbre 'cg-seeked'"
 
-#: builtin/bisect--helper.c:736
+#: builtin/bisect--helper.c:735
 msgid "bad HEAD - strange symbolic ref"
 msgstr "mauvaise HEAD - référence symbolique douteuse"
 
-#: builtin/bisect--helper.c:756
+#: builtin/bisect--helper.c:755
 #, c-format
 msgid "invalid ref: '%s'"
 msgstr "réference invalide : '%s'"
 
-#: builtin/bisect--helper.c:814
+#: builtin/bisect--helper.c:813
 msgid "You need to start by \"git bisect start\"\n"
 msgstr "Vous devez démarrer avec \"git bisect start\"\n"
 
@@ -10804,93 +11096,101 @@ msgstr "Vous devez démarrer avec \"git bisect start\"\n"
 #. translation. The program will only accept English input
 #. at this point.
 #.
-#: builtin/bisect--helper.c:825
+#: builtin/bisect--helper.c:824
 msgid "Do you want me to do it for you [Y/n]? "
 msgstr "Souhaitez-vous que je le fasse pour vous [Y/n] ? "
 
-#: builtin/bisect--helper.c:843
+#: builtin/bisect--helper.c:842
 msgid "Please call `--bisect-state` with at least one argument"
 msgstr "Veuillez appeler `--bisect-state` avec au moins un argument"
 
-#: builtin/bisect--helper.c:856
+#: builtin/bisect--helper.c:855
 #, c-format
 msgid "'git bisect %s' can take only one argument."
 msgstr "'git bisect %s' n'accepte qu'un seul argument."
 
-#: builtin/bisect--helper.c:868 builtin/bisect--helper.c:879
+#: builtin/bisect--helper.c:867 builtin/bisect--helper.c:878
 #, c-format
 msgid "Bad rev input: %s"
 msgstr "Mauvaise révision en entrée : %s"
 
-#: builtin/bisect--helper.c:924
-msgid "reset the bisection state"
-msgstr "réinitialiser l'état de la bissection"
+#: builtin/bisect--helper.c:912
+msgid "We are not bisecting."
+msgstr "Pas de bissection en cours."
 
-#: builtin/bisect--helper.c:926
-msgid "write out the bisection state in BISECT_LOG"
-msgstr "écrire l'état de la bissection dans BISECT_LOG"
+#: builtin/bisect--helper.c:962
+#, c-format
+msgid "'%s'?? what are you talking about?"
+msgstr "'%s' ?? de quoi parlez-vous ?"
+
+#: builtin/bisect--helper.c:974
+#, c-format
+msgid "cannot read file '%s' for replaying"
+msgstr "impossible de lire le fichier '%s' pour rejouer"
 
-#: builtin/bisect--helper.c:928
-msgid "check and set terms in a bisection state"
-msgstr "vérifier et régler les termes dans un état de la bissection"
+#: builtin/bisect--helper.c:1047
+msgid "reset the bisection state"
+msgstr "réinitialiser l'état de la bissection"
 
-#: builtin/bisect--helper.c:930
+#: builtin/bisect--helper.c:1049
 msgid "check whether bad or good terms exist"
 msgstr "vérifier si les termes bons ou mauvais existent"
 
-#: builtin/bisect--helper.c:932
+#: builtin/bisect--helper.c:1051
 msgid "print out the bisect terms"
 msgstr "afficher les termes de bissection"
 
-#: builtin/bisect--helper.c:934
+#: builtin/bisect--helper.c:1053
 msgid "start the bisect session"
 msgstr "démarrer une session de bissection"
 
-#: builtin/bisect--helper.c:936
+#: builtin/bisect--helper.c:1055
 msgid "find the next bisection commit"
 msgstr "trouver le prochain commit de bissection"
 
-#: builtin/bisect--helper.c:938
-msgid "verify the next bisection state then checkout the next bisection commit"
-msgstr ""
-"vérifier le prochain état de bissection puis extraire le prochain commit de "
-"bissection"
-
-#: builtin/bisect--helper.c:940
+#: builtin/bisect--helper.c:1057
 msgid "mark the state of ref (or refs)"
 msgstr "marquer l'état d'une références (ou plusieurs)"
 
-#: builtin/bisect--helper.c:942
+#: builtin/bisect--helper.c:1059
+msgid "list the bisection steps so far"
+msgstr "lister les étapes de bissection jusqu'ici"
+
+#: builtin/bisect--helper.c:1061
+msgid "replay the bisection process from the given file"
+msgstr "rejouer le processus de bissection depuis le fichier fourni"
+
+#: builtin/bisect--helper.c:1063
+msgid "skip some commits for checkout"
+msgstr "sauter certains commits pour l'extraction"
+
+#: builtin/bisect--helper.c:1065
 msgid "no log for BISECT_WRITE"
 msgstr "pas de journal pour BISECT_WRITE"
 
-#: builtin/bisect--helper.c:957
+#: builtin/bisect--helper.c:1080
 msgid "--bisect-reset requires either no argument or a commit"
 msgstr "--bisect-reset supporte soit aucun argument, soit un commit"
 
-#: builtin/bisect--helper.c:961
-msgid "--bisect-write requires either 4 or 5 arguments"
-msgstr "--bisect-write supporte soit 4 arguments, soit 5 arguments"
-
-#: builtin/bisect--helper.c:967
-msgid "--check-and-set-terms requires 3 arguments"
-msgstr "--check-and-set-terms exige 3 arguments"
-
-#: builtin/bisect--helper.c:973
+#: builtin/bisect--helper.c:1085
 msgid "--bisect-next-check requires 2 or 3 arguments"
 msgstr "--bisect-next-check exige 2 ou 3 arguments"
 
-#: builtin/bisect--helper.c:979
+#: builtin/bisect--helper.c:1091
 msgid "--bisect-terms requires 0 or 1 argument"
 msgstr "--bisect-terms exige 0 ou 1 argument"
 
-#: builtin/bisect--helper.c:988
+#: builtin/bisect--helper.c:1100
 msgid "--bisect-next requires 0 arguments"
 msgstr "--bisect-next exige 0 argument"
 
-#: builtin/bisect--helper.c:994
-msgid "--bisect-auto-next requires 0 arguments"
-msgstr "--bisect-auto-next exige 0 argument"
+#: builtin/bisect--helper.c:1111
+msgid "--bisect-log requires 0 arguments"
+msgstr "--bisect-log exige 0 argument"
+
+#: builtin/bisect--helper.c:1116
+msgid "no logfile given"
+msgstr "pas de fichier de log donné"
 
 #: builtin/blame.c:32
 msgid "git blame [<options>] [<rev-opts>] [<rev>] [--] <file>"
@@ -10909,147 +11209,150 @@ msgstr "couleur attendue : %s"
 msgid "must end with a color"
 msgstr "doit finir avec une couleur"
 
-#: builtin/blame.c:730
+#: builtin/blame.c:728
 #, c-format
 msgid "invalid color '%s' in color.blame.repeatedLines"
 msgstr "couleur invalide '%s' dans color.blame.repeatedlines"
 
-#: builtin/blame.c:748
+#: builtin/blame.c:746
 msgid "invalid value for blame.coloring"
 msgstr "valeur invalide pour blame.coloring"
 
-#: builtin/blame.c:847
+#: builtin/blame.c:845
 #, c-format
 msgid "cannot find revision %s to ignore"
 msgstr "référence à ignorer %s introuvable"
 
-#: builtin/blame.c:869
-msgid "Show blame entries as we find them, incrementally"
+#: builtin/blame.c:867
+msgid "show blame entries as we find them, incrementally"
 msgstr ""
-"Montrer les éléments de blâme au fur et à mesure de leur découverte, de "
+"montrer les éléments de blâme au fur et à mesure de leur découverte, de "
 "manière incrémentale"
 
-#: builtin/blame.c:870
-msgid "Do not show object names of boundary commits (Default: off)"
+#: builtin/blame.c:868
+msgid "do not show object names of boundary commits (Default: off)"
 msgstr ""
-"Ne pas montrer les noms des objets pour les commits de limite (Défaut : "
+"ne pas montrer les noms des objets pour les commits de limite (Défaut : "
 "désactivé)"
 
-#: builtin/blame.c:871
-msgid "Do not treat root commits as boundaries (Default: off)"
+#: builtin/blame.c:869
+msgid "do not treat root commits as boundaries (Default: off)"
 msgstr ""
-"Ne pas traiter les commits racine comme des limites (Défaut : désactivé)"
+"ne pas traiter les commits racine comme des limites (Défaut : désactivé)"
+
+#: builtin/blame.c:870
+msgid "show work cost statistics"
+msgstr "montrer les statistiques de coût d'activité"
+
+#: builtin/blame.c:871 builtin/checkout.c:1503 builtin/clone.c:92
+#: builtin/commit-graph.c:84 builtin/commit-graph.c:222 builtin/fetch.c:175
+#: builtin/merge.c:297 builtin/multi-pack-index.c:27 builtin/pull.c:119
+#: builtin/push.c:575 builtin/send-pack.c:198
+msgid "force progress reporting"
+msgstr "forcer l'affichage de l'état d'avancement"
 
 #: builtin/blame.c:872
-msgid "Show work cost statistics"
-msgstr "Montrer les statistiques de coût d'activité"
+msgid "show output score for blame entries"
+msgstr "montrer le score de sortie pour les éléments de blâme"
 
 #: builtin/blame.c:873
-msgid "Force progress reporting"
-msgstr "Forcer l'affichage de l'état d'avancement"
+msgid "show original filename (Default: auto)"
+msgstr "montrer les noms de fichier originaux (Défaut : auto)"
 
 #: builtin/blame.c:874
-msgid "Show output score for blame entries"
-msgstr "Montrer le score de sortie pour les éléments de blâme"
+msgid "show original linenumber (Default: off)"
+msgstr "montrer les numéros de lignes originaux (Défaut : désactivé)"
 
 #: builtin/blame.c:875
-msgid "Show original filename (Default: auto)"
-msgstr "Montrer les noms de fichier originaux (Défaut : auto)"
+msgid "show in a format designed for machine consumption"
+msgstr "afficher dans un format propice à la consommation par machine"
 
 #: builtin/blame.c:876
-msgid "Show original linenumber (Default: off)"
-msgstr "Montrer les numéros de lignes originaux (Défaut : désactivé)"
+msgid "show porcelain format with per-line commit information"
+msgstr "afficher en format porcelaine avec l'information de commit par ligne"
 
 #: builtin/blame.c:877
-msgid "Show in a format designed for machine consumption"
-msgstr "Afficher dans un format propice à la consommation par machine"
+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:878
-msgid "Show porcelain format with per-line commit information"
-msgstr "Afficher en format porcelaine avec l'information de commit par ligne"
+msgid "show raw timestamp (Default: off)"
+msgstr "afficher les horodatages bruts (Défaut : désactivé)"
 
 #: builtin/blame.c:879
-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é)"
+msgid "show long commit SHA1 (Default: off)"
+msgstr "afficher les longs SHA1 de commits (Défaut : désactivé)"
 
 #: builtin/blame.c:880
-msgid "Show raw timestamp (Default: off)"
-msgstr "Afficher les horodatages bruts (Défaut : désactivé)"
+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:881
-msgid "Show long commit SHA1 (Default: off)"
-msgstr "Afficher les longs SHA1 de commits (Défaut : désactivé)"
+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:882
-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:883
-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:884
-msgid "Ignore whitespace differences"
-msgstr "Ignorer les différences d'espace"
+msgid "ignore whitespace differences"
+msgstr "ignorer les différences d'espace"
 
-#: builtin/blame.c:885 builtin/log.c:1813
+#: builtin/blame.c:883 builtin/log.c:1812
 msgid "rev"
 msgstr "rév"
 
-#: builtin/blame.c:885
-msgid "Ignore <rev> when blaming"
-msgstr "ignore <rev> pendant le blâme"
+#: builtin/blame.c:883
+msgid "ignore <rev> when blaming"
+msgstr "ignorer <rev> pendant le blâme"
 
-#: builtin/blame.c:886
-msgid "Ignore revisions from <file>"
+#: builtin/blame.c:884
+msgid "ignore revisions from <file>"
 msgstr "ignorer les révisions listées dans <fichier>"
 
-#: builtin/blame.c:887
+#: builtin/blame.c:885
 msgid "color redundant metadata from previous line differently"
 msgstr ""
 "colorer différemment les métadonnées redondantes avec la ligne précédente"
 
-#: builtin/blame.c:888
+#: builtin/blame.c:886
 msgid "color lines by age"
 msgstr "colorier les lignes par âge"
 
-#: builtin/blame.c:889
-msgid "Spend extra cycles to find better match"
+#: builtin/blame.c:887
+msgid "spend extra cycles to find better match"
 msgstr ""
-"Dépenser des cycles supplémentaires pour trouver une meilleure correspondance"
+"dépenser des cycles supplémentaires pour trouver une meilleure correspondance"
 
-#: builtin/blame.c:890
-msgid "Use revisions from <file> instead of calling git-rev-list"
+#: builtin/blame.c:888
+msgid "use revisions from <file> instead of calling git-rev-list"
 msgstr ""
-"Utiliser les révisions du fichier <fichier> au lieu d'appeler git-rev-list"
+"utiliser les révisions du fichier <fichier> au lieu d'appeler git-rev-list"
 
-#: builtin/blame.c:891
-msgid "Use <file>'s contents as the final image"
-msgstr "Utiliser le contenu de <fichier> comme image finale"
+#: builtin/blame.c:889
+msgid "use <file>'s contents as the final image"
+msgstr "utiliser le contenu de <fichier> comme image finale"
 
-#: builtin/blame.c:892 builtin/blame.c:893
+#: builtin/blame.c:890 builtin/blame.c:891
 msgid "score"
 msgstr "score"
 
-#: builtin/blame.c:892
-msgid "Find line copies within and across files"
-msgstr "Trouver les copies de ligne dans et entre les fichiers"
+#: builtin/blame.c:890
+msgid "find line copies within and across files"
+msgstr "trouver les copies de ligne dans et entre les fichiers"
 
-#: builtin/blame.c:893
-msgid "Find line movements within and across files"
-msgstr "Trouver les mouvements de ligne dans et entre les fichiers"
+#: builtin/blame.c:891
+msgid "find line movements within and across files"
+msgstr "trouver les mouvements de ligne dans et entre les fichiers"
 
-#: builtin/blame.c:894
+#: builtin/blame.c:892
 msgid "range"
 msgstr "plage"
 
-#: builtin/blame.c:895
-msgid "Process only line range <start>,<end> or function :<funcname>"
+#: builtin/blame.c:893
+msgid "process only line range <start>,<end> or function :<funcname>"
 msgstr ""
-"Traiter seulement l'intervalle de ligne <début>,<fin> ou la fonction : <nom-"
+"traiter seulement l'intervalle de ligne <début>,<fin> ou la fonction : <nom-"
 "de-fonction>"
 
-#: builtin/blame.c:947
+#: builtin/blame.c:945
 msgid "--progress can't be used with --incremental or porcelain formats"
 msgstr ""
 "--progress ne peut pas être utilisé avec --incremental ou les formats "
@@ -11063,18 +11366,18 @@ msgstr ""
 #. your language may need more or fewer display
 #. columns.
 #.
-#: builtin/blame.c:998
+#: builtin/blame.c:996
 msgid "4 years, 11 months ago"
 msgstr "il y a 10 ans et 11 mois"
 
-#: builtin/blame.c:1114
+#: builtin/blame.c:1112
 #, c-format
 msgid "file %s has only %lu line"
 msgid_plural "file %s has only %lu lines"
 msgstr[0] "le fichier %s n'a qu'%lu ligne"
 msgstr[1] "le fichier %s n'a que %lu lignes"
 
-#: builtin/blame.c:1159
+#: builtin/blame.c:1157
 msgid "Blaming lines"
 msgstr "Assignation de blâme aux lignes"
 
@@ -11144,121 +11447,111 @@ msgstr ""
 msgid "Update of config-file failed"
 msgstr "Échec de la mise à jour du fichier de configuration"
 
-#: builtin/branch.c:220
+#: builtin/branch.c:223
 msgid "cannot use -a with -d"
 msgstr "impossible d'utiliser -a avec -d"
 
-#: builtin/branch.c:226
+#: builtin/branch.c:230
 msgid "Couldn't look up commit object for HEAD"
 msgstr "Impossible de rechercher l'objet commit pour HEAD"
 
-#: builtin/branch.c:240
+#: builtin/branch.c:244
 #, c-format
 msgid "Cannot delete branch '%s' checked out at '%s'"
 msgstr "Impossible de supprimer la branche '%s' extraite dans '%s'"
 
-#: builtin/branch.c:255
+#: builtin/branch.c:259
 #, c-format
 msgid "remote-tracking branch '%s' not found."
 msgstr "branche de suivi '%s' non trouvée."
 
-#: builtin/branch.c:256
+#: builtin/branch.c:260
 #, c-format
 msgid "branch '%s' not found."
 msgstr "branche '%s' non trouvée."
 
-#: builtin/branch.c:271
-#, c-format
-msgid "Error deleting remote-tracking branch '%s'"
-msgstr "Erreur lors de la suppression de la branche de suivi '%s'"
-
-#: builtin/branch.c:272
-#, c-format
-msgid "Error deleting branch '%s'"
-msgstr "Erreur lors de la suppression de la branche '%s'"
-
-#: builtin/branch.c:279
+#: builtin/branch.c:291
 #, c-format
 msgid "Deleted remote-tracking branch %s (was %s).\n"
 msgstr "Branche de suivi %s supprimée (précédemment %s).\n"
 
-#: builtin/branch.c:280
+#: builtin/branch.c:292
 #, c-format
 msgid "Deleted branch %s (was %s).\n"
 msgstr "Branche %s supprimée (précédemment %s).\n"
 
-#: builtin/branch.c:429 builtin/tag.c:61
+#: builtin/branch.c:438 builtin/tag.c:61
 msgid "unable to parse format string"
 msgstr "impossible d'analyser la chaîne de format"
 
-#: builtin/branch.c:460
+#: builtin/branch.c:469
 msgid "could not resolve HEAD"
 msgstr "impossible de résoudre HEAD"
 
-#: builtin/branch.c:466
+#: builtin/branch.c:475
 #, c-format
 msgid "HEAD (%s) points outside of refs/heads/"
 msgstr "HEAD (%s) pointe hors de refs/heads/"
 
-#: builtin/branch.c:481
+#: builtin/branch.c:490
 #, c-format
 msgid "Branch %s is being rebased at %s"
 msgstr "La branche %s est en cours de rebasage sur %s"
 
-#: builtin/branch.c:485
+#: builtin/branch.c:494
 #, c-format
 msgid "Branch %s is being bisected at %s"
 msgstr "La branche %s est en cours de bissection sur %s"
 
-#: builtin/branch.c:502
+#: builtin/branch.c:511
 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:504
+#: builtin/branch.c:513
 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:515
+#: builtin/branch.c:524
 #, c-format
 msgid "Invalid branch name: '%s'"
 msgstr "Nom de branche invalide : '%s'"
 
-#: builtin/branch.c:544
+#: builtin/branch.c:553
 msgid "Branch rename failed"
 msgstr "Échec de renommage de la branche"
 
-#: builtin/branch.c:546
+#: builtin/branch.c:555
 msgid "Branch copy failed"
 msgstr "Échec de copie de la branche"
 
-#: builtin/branch.c:550
+#: builtin/branch.c:559
 #, 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:553
+#: builtin/branch.c:562
 #, c-format
 msgid "Renamed a misnamed branch '%s' away"
 msgstr "Renommage d'une branche mal nommée '%s'"
 
-#: builtin/branch.c:559
+#: builtin/branch.c:568
 #, 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:568
+#: builtin/branch.c:577
 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:570
+#: builtin/branch.c:579
 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:586
+#: builtin/branch.c:595
 #, c-format
 msgid ""
 "Please edit the description for the branch\n"
@@ -11269,180 +11562,180 @@ msgstr ""
 "  %s\n"
 "Les lignes commençant par '%c' seront ignorées.\n"
 
-#: builtin/branch.c:620
+#: builtin/branch.c:629
 msgid "Generic options"
 msgstr "Options génériques"
 
-#: builtin/branch.c:622
+#: builtin/branch.c:631
 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:623
+#: builtin/branch.c:632
 msgid "suppress informational messages"
 msgstr "supprimer les messages d'information"
 
-#: builtin/branch.c:624
+#: builtin/branch.c:633
 msgid "set up tracking mode (see git-pull(1))"
 msgstr "régler le mode de suivi (voir git-pull(1))"
 
-#: builtin/branch.c:626
+#: builtin/branch.c:635
 msgid "do not use"
 msgstr "ne pas utiliser"
 
-#: builtin/branch.c:628 builtin/rebase.c:532
+#: builtin/branch.c:637 builtin/rebase.c:534
 msgid "upstream"
 msgstr "amont"
 
-#: builtin/branch.c:628
+#: builtin/branch.c:637
 msgid "change the upstream info"
 msgstr "modifier l'information amont"
 
-#: builtin/branch.c:629
+#: builtin/branch.c:638
 msgid "unset the upstream info"
 msgstr "désactiver l'information amont"
 
-#: builtin/branch.c:630
+#: builtin/branch.c:639
 msgid "use colored output"
 msgstr "utiliser la coloration dans la sortie"
 
-#: builtin/branch.c:631
+#: builtin/branch.c:640
 msgid "act on remote-tracking branches"
 msgstr "agir sur les branches de suivi distantes"
 
-#: builtin/branch.c:633 builtin/branch.c:635
+#: builtin/branch.c:642 builtin/branch.c:644
 msgid "print only branches that contain the commit"
 msgstr "afficher seulement les branches qui contiennent le commit"
 
-#: builtin/branch.c:634 builtin/branch.c:636
+#: builtin/branch.c:643 builtin/branch.c:645
 msgid "print only branches that don't contain the commit"
 msgstr "afficher seulement les branches qui ne contiennent pas le commit"
 
-#: builtin/branch.c:639
+#: builtin/branch.c:648
 msgid "Specific git-branch actions:"
 msgstr "Actions spécifiques à git-branch :"
 
-#: builtin/branch.c:640
+#: builtin/branch.c:649
 msgid "list both remote-tracking and local branches"
 msgstr "afficher à la fois les branches de suivi et les branches locales"
 
-#: builtin/branch.c:642
+#: builtin/branch.c:651
 msgid "delete fully merged branch"
 msgstr "supprimer une branche totalement fusionnée"
 
-#: builtin/branch.c:643
+#: builtin/branch.c:652
 msgid "delete branch (even if not merged)"
 msgstr "supprimer une branche (même non fusionnée)"
 
-#: builtin/branch.c:644
+#: builtin/branch.c:653
 msgid "move/rename a branch and its reflog"
 msgstr "déplacer/renommer une branche et son reflog"
 
-#: builtin/branch.c:645
+#: builtin/branch.c:654
 msgid "move/rename a branch, even if target exists"
 msgstr "déplacer/renommer une branche, même si la cible existe"
 
-#: builtin/branch.c:646
+#: builtin/branch.c:655
 msgid "copy a branch and its reflog"
 msgstr "copier une branche et son reflog"
 
-#: builtin/branch.c:647
+#: builtin/branch.c:656
 msgid "copy a branch, even if target exists"
 msgstr "copier une branche, même si la cible existe"
 
-#: builtin/branch.c:648
+#: builtin/branch.c:657
 msgid "list branch names"
 msgstr "afficher les noms des branches"
 
-#: builtin/branch.c:649
+#: builtin/branch.c:658
 msgid "show current branch name"
 msgstr "afficher le nom de la branche courante"
 
-#: builtin/branch.c:650
+#: builtin/branch.c:659
 msgid "create the branch's reflog"
 msgstr "créer le reflog de la branche"
 
-#: builtin/branch.c:652
+#: builtin/branch.c:661
 msgid "edit the description for the branch"
 msgstr "éditer la description de la branche"
 
-#: builtin/branch.c:653
+#: builtin/branch.c:662
 msgid "force creation, move/rename, deletion"
 msgstr "forcer la création, le déplacement/renommage, ou la suppression"
 
-#: builtin/branch.c:654
+#: builtin/branch.c:663
 msgid "print only branches that are merged"
 msgstr "afficher seulement les branches qui sont fusionnées"
 
-#: builtin/branch.c:655
+#: builtin/branch.c:664
 msgid "print only branches that are not merged"
 msgstr "afficher seulement les branches qui ne sont pas fusionnées"
 
-#: builtin/branch.c:656
+#: builtin/branch.c:665
 msgid "list branches in columns"
 msgstr "afficher les branches en colonnes"
 
-#: builtin/branch.c:658 builtin/for-each-ref.c:42 builtin/notes.c:415
+#: builtin/branch.c:667 builtin/for-each-ref.c:42 builtin/notes.c:415
 #: builtin/notes.c:418 builtin/notes.c:581 builtin/notes.c:584
-#: builtin/tag.c:434
+#: builtin/tag.c:466
 msgid "object"
 msgstr "objet"
 
-#: builtin/branch.c:659
+#: builtin/branch.c:668
 msgid "print only branches of the object"
 msgstr "afficher seulement les branches de l'objet"
 
-#: builtin/branch.c:660 builtin/for-each-ref.c:48 builtin/tag.c:441
+#: builtin/branch.c:669 builtin/for-each-ref.c:48 builtin/tag.c:473
 msgid "sorting and filtering are case insensitive"
 msgstr "le tri et le filtrage sont non-sensibles à la casse"
 
-#: builtin/branch.c:661 builtin/for-each-ref.c:38 builtin/tag.c:439
+#: builtin/branch.c:670 builtin/for-each-ref.c:38 builtin/tag.c:471
 #: builtin/verify-tag.c:38
 msgid "format to use for the output"
 msgstr "format à utiliser pour la sortie"
 
-#: builtin/branch.c:684 builtin/clone.c:790
+#: builtin/branch.c:693 builtin/clone.c:790
 msgid "HEAD not found below refs/heads!"
 msgstr "HEAD non trouvée sous refs/heads !"
 
-#: builtin/branch.c:708
+#: builtin/branch.c:717
 msgid "--column and --verbose are incompatible"
 msgstr "--column et --verbose sont incompatibles"
 
-#: builtin/branch.c:723 builtin/branch.c:777 builtin/branch.c:786
+#: builtin/branch.c:732 builtin/branch.c:788 builtin/branch.c:797
 msgid "branch name required"
 msgstr "le nom de branche est requis"
 
-#: builtin/branch.c:753
+#: builtin/branch.c:764
 msgid "Cannot give description to detached HEAD"
 msgstr "Impossible de décrire une HEAD détachée"
 
-#: builtin/branch.c:758
+#: builtin/branch.c:769
 msgid "cannot edit description of more than one branch"
 msgstr "impossible d'éditer la description de plus d'une branche"
 
-#: builtin/branch.c:765
+#: builtin/branch.c:776
 #, c-format
 msgid "No commit on branch '%s' yet."
 msgstr "Aucun commit sur la branche '%s'."
 
-#: builtin/branch.c:768
+#: builtin/branch.c:779
 #, c-format
 msgid "No branch named '%s'."
 msgstr "Aucune branche nommée '%s'."
 
-#: builtin/branch.c:783
+#: builtin/branch.c:794
 msgid "too many branches for a copy operation"
 msgstr "trop de branches pour une opération de copie"
 
-#: builtin/branch.c:792
+#: builtin/branch.c:803
 msgid "too many arguments for a rename operation"
 msgstr "trop d'arguments pour une opération de renommage"
 
-#: builtin/branch.c:797
+#: builtin/branch.c:808
 msgid "too many arguments to set new upstream"
 msgstr "trop d'arguments pour spécifier une branche amont"
 
-#: builtin/branch.c:801
+#: builtin/branch.c:812
 #, c-format
 msgid ""
 "could not set upstream of HEAD to %s when it does not point to any branch."
@@ -11450,32 +11743,32 @@ msgstr ""
 "impossible de spécifier une branche amont de HEAD par %s qui ne pointe sur "
 "aucune branche."
 
-#: builtin/branch.c:804 builtin/branch.c:827
+#: builtin/branch.c:815 builtin/branch.c:838
 #, c-format
 msgid "no such branch '%s'"
 msgstr "pas de branche '%s'"
 
-#: builtin/branch.c:808
+#: builtin/branch.c:819
 #, c-format
 msgid "branch '%s' does not exist"
 msgstr "la branche '%s' n'existe pas"
 
-#: builtin/branch.c:821
+#: builtin/branch.c:832
 msgid "too many arguments to unset upstream"
 msgstr "trop d'arguments pour désactiver un amont"
 
-#: builtin/branch.c:825
+#: builtin/branch.c:836
 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:831
+#: builtin/branch.c:842
 #, c-format
 msgid "Branch '%s' has no upstream information"
 msgstr "La branche '%s' n'a aucune information de branche amont"
 
-#: builtin/branch.c:841
+#: builtin/branch.c:852
 msgid ""
 "The -a, and -r, options to 'git branch' do not take a branch name.\n"
 "Did you mean to use: -a|-r --list <pattern>?"
@@ -11484,7 +11777,7 @@ msgstr ""
 "branche.\n"
 "Vouliez-vous plutôt dire -a|-r --list <motif> ?"
 
-#: builtin/branch.c:845
+#: builtin/branch.c:856
 msgid ""
 "the '--set-upstream' option is no longer supported. Please use '--track' or "
 "'--set-upstream-to' instead."
@@ -11606,19 +11899,19 @@ msgstr "git bundle list-heads <fichier> [<nom-de-ref>...]"
 msgid "git bundle unbundle <file> [<refname>...]"
 msgstr "git bundle unbundle <fichier> [<nom-de-ref>...]"
 
-#: builtin/bundle.c:67 builtin/pack-objects.c:3480
+#: builtin/bundle.c:67 builtin/pack-objects.c:3495
 msgid "do not show progress meter"
 msgstr "ne pas afficher la barre de progression"
 
-#: builtin/bundle.c:69 builtin/pack-objects.c:3482
+#: builtin/bundle.c:69 builtin/pack-objects.c:3497
 msgid "show progress meter"
 msgstr "afficher la barre de progression"
 
-#: builtin/bundle.c:71 builtin/pack-objects.c:3484
+#: builtin/bundle.c:71 builtin/pack-objects.c:3499
 msgid "show progress meter during object writing phase"
 msgstr "afficher la barre de progression durant la phase d'écrite des objets"
 
-#: builtin/bundle.c:74 builtin/pack-objects.c:3487
+#: builtin/bundle.c:74 builtin/pack-objects.c:3502
 msgid "similar to --all-progress when progress meter is shown"
 msgstr "similaire à --all-progress quand la barre de progression est affichée"
 
@@ -11764,8 +12057,8 @@ 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:21 builtin/checkout.c:1500 builtin/gc.c:541
-#: builtin/worktree.c:561
+#: builtin/check-ignore.c:21 builtin/checkout.c:1499 builtin/gc.c:549
+#: builtin/worktree.c:489
 msgid "suppress progress reporting"
 msgstr "supprimer l'état d'avancement"
 
@@ -11818,56 +12111,56 @@ msgstr "impossible d'analyser le contact : %s"
 msgid "no contacts specified"
 msgstr "aucun contact spécifié"
 
-#: builtin/checkout-index.c:139
+#: builtin/checkout-index.c:152
 msgid "git checkout-index [<options>] [--] [<file>...]"
 msgstr "git checkout-index [<options>] [--] [<fichier>...]"
 
-#: builtin/checkout-index.c:156
+#: builtin/checkout-index.c:169
 msgid "stage should be between 1 and 3 or all"
 msgstr "stage doit valoir entre 1 et 3, ou all"
 
-#: builtin/checkout-index.c:173
+#: builtin/checkout-index.c:186
 msgid "check out all files in the index"
 msgstr "extraire tous les fichiers présents dans l'index"
 
-#: builtin/checkout-index.c:174
+#: builtin/checkout-index.c:187
 msgid "force overwrite of existing files"
 msgstr "forcer l'écrasement des fichiers existants"
 
-#: builtin/checkout-index.c:176
+#: builtin/checkout-index.c:189
 msgid "no warning for existing files and files not in index"
 msgstr ""
 "pas d'avertissement pour les fichiers existants et les fichiers absents de "
 "l'index"
 
-#: builtin/checkout-index.c:178
+#: builtin/checkout-index.c:191
 msgid "don't checkout new files"
 msgstr "ne pas extraire les nouveaux fichiers"
 
-#: builtin/checkout-index.c:180
+#: builtin/checkout-index.c:193
 msgid "update stat information in the index file"
 msgstr "mettre à jour l'information de stat dans le fichier d'index"
 
-#: builtin/checkout-index.c:184
+#: builtin/checkout-index.c:197
 msgid "read list of paths from the standard input"
 msgstr "lire la liste des chemins depuis l'entrée standard"
 
-#: builtin/checkout-index.c:186
+#: builtin/checkout-index.c:199
 msgid "write the content to temporary files"
 msgstr "écrire le contenu dans des fichiers temporaires"
 
-#: builtin/checkout-index.c:187 builtin/column.c:31
+#: builtin/checkout-index.c:200 builtin/column.c:31
 #: builtin/submodule--helper.c:1824 builtin/submodule--helper.c:1827
 #: builtin/submodule--helper.c:1835 builtin/submodule--helper.c:2333
-#: builtin/worktree.c:757
+#: builtin/worktree.c:717
 msgid "string"
 msgstr "chaîne"
 
-#: builtin/checkout-index.c:188
+#: builtin/checkout-index.c:201
 msgid "when creating files, prepend <string>"
 msgstr "lors de la création de fichiers, préfixer par <chaîne>"
 
-#: builtin/checkout-index.c:190
+#: builtin/checkout-index.c:203
 msgid "copy out the files from named stage"
 msgstr "copier les fichiers depuis l'index nommé"
 
@@ -11971,16 +12264,16 @@ msgstr "'%s' ne peut pas être utilisé quand '%s' n'est pas spécifié"
 msgid "'%s' or '%s' cannot be used with %s"
 msgstr "'%s' ou '%s' ne peut pas être utilisé avec %s"
 
-#: builtin/checkout.c:541 builtin/checkout.c:548
+#: builtin/checkout.c:543 builtin/checkout.c:550
 #, c-format
 msgid "path '%s' is unmerged"
 msgstr "le chemin '%s' n'est pas fusionné"
 
-#: builtin/checkout.c:716
+#: builtin/checkout.c:718
 msgid "you need to resolve your current index first"
 msgstr "vous devez d'abord résoudre votre index courant"
 
-#: builtin/checkout.c:770
+#: builtin/checkout.c:772
 #, c-format
 msgid ""
 "cannot continue with staged changes in the following files:\n"
@@ -11990,50 +12283,50 @@ msgstr ""
 "suivants :\n"
 "%s"
 
-#: builtin/checkout.c:866
+#: builtin/checkout.c:865
 #, c-format
 msgid "Can not do reflog for '%s': %s\n"
 msgstr "Impossible de faire un reflog pour '%s' : %s\n"
 
-#: builtin/checkout.c:908
+#: builtin/checkout.c:907
 msgid "HEAD is now at"
 msgstr "HEAD est maintenant sur"
 
-#: builtin/checkout.c:912 builtin/clone.c:721 t/helper/test-fast-rebase.c:202
+#: builtin/checkout.c:911 builtin/clone.c:721 t/helper/test-fast-rebase.c:202
 msgid "unable to update HEAD"
 msgstr "impossible de mettre à jour HEAD"
 
-#: builtin/checkout.c:916
+#: builtin/checkout.c:915
 #, c-format
 msgid "Reset branch '%s'\n"
 msgstr "Remise à zéro de la branche '%s'\n"
 
-#: builtin/checkout.c:919
+#: builtin/checkout.c:918
 #, c-format
 msgid "Already on '%s'\n"
 msgstr "Déjà sur '%s'\n"
 
-#: builtin/checkout.c:923
+#: builtin/checkout.c:922
 #, c-format
 msgid "Switched to and reset branch '%s'\n"
 msgstr "Basculement et remise à zéro de la branche '%s'\n"
 
-#: builtin/checkout.c:925 builtin/checkout.c:1356
+#: builtin/checkout.c:924 builtin/checkout.c:1355
 #, c-format
 msgid "Switched to a new branch '%s'\n"
 msgstr "Basculement sur la nouvelle branche '%s'\n"
 
-#: builtin/checkout.c:927
+#: builtin/checkout.c:926
 #, c-format
 msgid "Switched to branch '%s'\n"
 msgstr "Basculement sur la branche '%s'\n"
 
-#: builtin/checkout.c:978
+#: builtin/checkout.c:977
 #, c-format
 msgid " ... and %d more.\n"
 msgstr " ... et %d en plus.\n"
 
-#: builtin/checkout.c:984
+#: builtin/checkout.c:983
 #, c-format
 msgid ""
 "Warning: you are leaving %d commit behind, not connected to\n"
@@ -12056,7 +12349,7 @@ msgstr[1] ""
 "\n"
 "%s\n"
 
-#: builtin/checkout.c:1003
+#: builtin/checkout.c:1002
 #, c-format
 msgid ""
 "If you want to keep it by creating a new branch, this may be a good time\n"
@@ -12085,19 +12378,19 @@ msgstr[1] ""
 "git branch <nouvelle-branche> %s\n"
 "\n"
 
-#: builtin/checkout.c:1038
+#: builtin/checkout.c:1037
 msgid "internal error in revision walk"
 msgstr "erreur interne lors du parcours des révisions"
 
-#: builtin/checkout.c:1042
+#: builtin/checkout.c:1041
 msgid "Previous HEAD position was"
 msgstr "La position précédente de HEAD était sur"
 
-#: builtin/checkout.c:1082 builtin/checkout.c:1351
+#: builtin/checkout.c:1081 builtin/checkout.c:1350
 msgid "You are on a branch yet to be born"
 msgstr "Vous êtes sur une branche qui doit encore naître"
 
-#: builtin/checkout.c:1164
+#: builtin/checkout.c:1163
 #, c-format
 msgid ""
 "'%s' could be both a local file and a tracking branch.\n"
@@ -12106,7 +12399,7 @@ msgstr ""
 "'%s' pourrait être un fichier local ou un branche de suivi.\n"
 "Veuillez utiliser -- (et --no-guess en facultatif) pour les distinguer"
 
-#: builtin/checkout.c:1171
+#: builtin/checkout.c:1170
 msgid ""
 "If you meant to check out a remote tracking branch on, e.g. 'origin',\n"
 "you can do so by fully qualifying the name with the --track option:\n"
@@ -12126,51 +12419,51 @@ msgstr ""
 "ambigu, vous pouvez positionner checkout.defaultRemote=origin dans\n"
 "votre config."
 
-#: builtin/checkout.c:1181
+#: builtin/checkout.c:1180
 #, c-format
 msgid "'%s' matched multiple (%d) remote tracking branches"
 msgstr "'%s' correspond à plusieurs (%d) branches de suivi à distance"
 
-#: builtin/checkout.c:1247
+#: builtin/checkout.c:1246
 msgid "only one reference expected"
 msgstr "une seule référence attendue"
 
-#: builtin/checkout.c:1264
+#: builtin/checkout.c:1263
 #, c-format
 msgid "only one reference expected, %d given."
 msgstr "une seule référence attendue, %d fournies."
 
-#: builtin/checkout.c:1310 builtin/worktree.c:342 builtin/worktree.c:510
+#: builtin/checkout.c:1309 builtin/worktree.c:270 builtin/worktree.c:438
 #, c-format
 msgid "invalid reference: %s"
 msgstr "référence invalide : %s"
 
-#: builtin/checkout.c:1323 builtin/checkout.c:1689
+#: builtin/checkout.c:1322 builtin/checkout.c:1688
 #, c-format
 msgid "reference is not a tree: %s"
 msgstr "la référence n'est pas un arbre : %s"
 
-#: builtin/checkout.c:1370
+#: builtin/checkout.c:1369
 #, c-format
 msgid "a branch is expected, got tag '%s'"
 msgstr "branche attendue, mais étiquette '%s' reçue"
 
-#: builtin/checkout.c:1372
+#: builtin/checkout.c:1371
 #, c-format
 msgid "a branch is expected, got remote branch '%s'"
 msgstr "une branche est attendue, mais une branche distante '%s' a été reçue"
 
-#: builtin/checkout.c:1373 builtin/checkout.c:1381
+#: builtin/checkout.c:1372 builtin/checkout.c:1380
 #, c-format
 msgid "a branch is expected, got '%s'"
 msgstr "une branche est attendue, mais '%s' a été reçue"
 
-#: builtin/checkout.c:1376
+#: builtin/checkout.c:1375
 #, c-format
 msgid "a branch is expected, got commit '%s'"
 msgstr "une branche est attendue, mais un commit '%s' a été reçu"
 
-#: builtin/checkout.c:1392
+#: builtin/checkout.c:1391
 msgid ""
 "cannot switch branch while merging\n"
 "Consider \"git merge --quit\" or \"git worktree add\"."
@@ -12178,7 +12471,7 @@ msgstr ""
 "impossible de basculer de branche pendant une fusion\n"
 "Envisagez \"git merge --quit\" ou \"git worktree add\"."
 
-#: builtin/checkout.c:1396
+#: builtin/checkout.c:1395
 msgid ""
 "cannot switch branch in the middle of an am session\n"
 "Consider \"git am --quit\" or \"git worktree add\"."
@@ -12186,7 +12479,7 @@ msgstr ""
 "impossible de basculer de branche pendant une session am\n"
 "Envisagez \"git am --quit\" ou \"git worktree add\"."
 
-#: builtin/checkout.c:1400
+#: builtin/checkout.c:1399
 msgid ""
 "cannot switch branch while rebasing\n"
 "Consider \"git rebase --quit\" or \"git worktree add\"."
@@ -12194,7 +12487,7 @@ msgstr ""
 "impossible de basculer de branche pendant un rebasage\n"
 "Envisagez \"git rebase --quit\" ou \"git worktree add\"."
 
-#: builtin/checkout.c:1404
+#: builtin/checkout.c:1403
 msgid ""
 "cannot switch branch while cherry-picking\n"
 "Consider \"git cherry-pick --quit\" or \"git worktree add\"."
@@ -12202,7 +12495,7 @@ msgstr ""
 "impossible de basculer de branche pendant un picorage\n"
 "Envisagez \"git cherry-pick --quit\" ou \"git worktree add\"."
 
-#: builtin/checkout.c:1408
+#: builtin/checkout.c:1407
 msgid ""
 "cannot switch branch while reverting\n"
 "Consider \"git revert --quit\" or \"git worktree add\"."
@@ -12210,146 +12503,139 @@ msgstr ""
 "impossible de basculer de branche pendant un retour\n"
 "Envisagez \"git revert --quit\" ou \"git worktree add\"."
 
-#: builtin/checkout.c:1412
+#: builtin/checkout.c:1411
 msgid "you are switching branch while bisecting"
 msgstr "Vous basculez de branche en cours de bissection"
 
-#: builtin/checkout.c:1419
+#: builtin/checkout.c:1418
 msgid "paths cannot be used with switching branches"
 msgstr "impossible d'utiliser des chemins avec un basculement de branches"
 
-#: builtin/checkout.c:1422 builtin/checkout.c:1426 builtin/checkout.c:1430
+#: builtin/checkout.c:1421 builtin/checkout.c:1425 builtin/checkout.c:1429
 #, 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:1434 builtin/checkout.c:1437 builtin/checkout.c:1440
-#: builtin/checkout.c:1445 builtin/checkout.c:1450
+#: builtin/checkout.c:1433 builtin/checkout.c:1436 builtin/checkout.c:1439
+#: builtin/checkout.c:1444 builtin/checkout.c:1449
 #, c-format
 msgid "'%s' cannot be used with '%s'"
 msgstr "'%s' ne peut pas être utilisé avec '%s'"
 
-#: builtin/checkout.c:1447
+#: builtin/checkout.c:1446
 #, c-format
 msgid "'%s' cannot take <start-point>"
 msgstr "'%s' n'accepte pas <point-de-départ>"
 
-#: builtin/checkout.c:1455
+#: builtin/checkout.c:1454
 #, 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:1462
+#: builtin/checkout.c:1461
 msgid "missing branch or commit argument"
 msgstr "argument de branche ou de commit manquant"
 
-#: builtin/checkout.c:1504 builtin/clone.c:92 builtin/commit-graph.c:84
-#: builtin/commit-graph.c:222 builtin/fetch.c:172 builtin/merge.c:296
-#: builtin/multi-pack-index.c:27 builtin/pull.c:119 builtin/push.c:575
-#: builtin/send-pack.c:198
-msgid "force progress reporting"
-msgstr "forcer l'affichage de l'état d'avancement"
-
-#: builtin/checkout.c:1505
+#: builtin/checkout.c:1504
 msgid "perform a 3-way merge with the new branch"
 msgstr "effectuer une fusion à 3 points avec la nouvelle branche"
 
-#: builtin/checkout.c:1506 builtin/log.c:1800 parse-options.h:322
+#: builtin/checkout.c:1505 builtin/log.c:1799 parse-options.h:322
 msgid "style"
 msgstr "style"
 
-#: builtin/checkout.c:1507
+#: builtin/checkout.c:1506
 msgid "conflict style (merge or diff3)"
 msgstr "style de conflit (merge (fusion) ou diff3)"
 
-#: builtin/checkout.c:1519 builtin/worktree.c:558
+#: builtin/checkout.c:1518 builtin/worktree.c:486
 msgid "detach HEAD at named commit"
 msgstr "détacher la HEAD au commit nommé"
 
-#: builtin/checkout.c:1520
+#: builtin/checkout.c:1519
 msgid "set upstream info for new branch"
 msgstr "paramétrer les coordonnées de branche amont pour une nouvelle branche"
 
-#: builtin/checkout.c:1522
+#: builtin/checkout.c:1521
 msgid "force checkout (throw away local modifications)"
 msgstr "forcer l'extraction (laisser tomber les modifications locales)"
 
-#: builtin/checkout.c:1524
+#: builtin/checkout.c:1523
 msgid "new-branch"
 msgstr "nouvelle branche"
 
-#: builtin/checkout.c:1524
+#: builtin/checkout.c:1523
 msgid "new unparented branch"
 msgstr "nouvelle branche sans parent"
 
-#: builtin/checkout.c:1526 builtin/merge.c:300
+#: builtin/checkout.c:1525 builtin/merge.c:301
 msgid "update ignored files (default)"
 msgstr "mettre à jour les fichiers ignorés (par défaut)"
 
-#: builtin/checkout.c:1529
+#: builtin/checkout.c:1528
 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:1542
+#: builtin/checkout.c:1541
 msgid "checkout our version for unmerged files"
 msgstr "extraire notre version pour les fichiers non fusionnés"
 
-#: builtin/checkout.c:1545
+#: builtin/checkout.c:1544
 msgid "checkout their version for unmerged files"
 msgstr "extraire leur version pour les fichiers non fusionnés"
 
-#: builtin/checkout.c:1549
+#: builtin/checkout.c:1548
 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:1604
+#: builtin/checkout.c:1603
 #, c-format
 msgid "-%c, -%c and --orphan are mutually exclusive"
 msgstr "-%c, -%c et --orphan sont mutuellement exclusifs"
 
-#: builtin/checkout.c:1608
+#: builtin/checkout.c:1607
 msgid "-p and --overlay are mutually exclusive"
 msgstr "-p et --overlay sont mutuellement exclusifs"
 
-#: builtin/checkout.c:1645
+#: builtin/checkout.c:1644
 msgid "--track needs a branch name"
 msgstr "--track requiert un nom de branche"
 
-#: builtin/checkout.c:1650
+#: builtin/checkout.c:1649
 #, c-format
 msgid "missing branch name; try -%c"
 msgstr "nom de branche manquant ; essayez -%c"
 
-#: builtin/checkout.c:1682
+#: builtin/checkout.c:1681
 #, c-format
 msgid "could not resolve %s"
 msgstr "impossible de résoudre %s"
 
-#: builtin/checkout.c:1698
+#: builtin/checkout.c:1697
 msgid "invalid path specification"
 msgstr "spécification de chemin invalide"
 
-#: builtin/checkout.c:1705
+#: builtin/checkout.c:1704
 #, 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:1709
+#: builtin/checkout.c:1708
 #, 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:1718
+#: builtin/checkout.c:1717
 msgid "--pathspec-from-file is incompatible with --detach"
 msgstr "--pathspec-from-file est incompatible avec --detach"
 
-#: builtin/checkout.c:1721 builtin/reset.c:325 builtin/stash.c:1499
+#: builtin/checkout.c:1720 builtin/reset.c:325 builtin/stash.c:1566
 msgid "--pathspec-from-file is incompatible with --patch"
 msgstr "--pathspec-from-file est incompatible avec --patch"
 
-#: builtin/checkout.c:1734
+#: builtin/checkout.c:1733
 msgid ""
 "git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
 "checking out of the index."
@@ -12357,71 +12643,71 @@ msgstr ""
 "git checkout: --ours/--theirs, --force et --merge sont incompatibles lors\n"
 "de l'extraction de l'index."
 
-#: builtin/checkout.c:1739
+#: builtin/checkout.c:1738
 msgid "you must specify path(s) to restore"
 msgstr "Vous devez spécifier un ou des chemins à restaurer"
 
-#: builtin/checkout.c:1765 builtin/checkout.c:1767 builtin/checkout.c:1816
-#: builtin/checkout.c:1818 builtin/clone.c:122 builtin/remote.c:170
-#: builtin/remote.c:172 builtin/submodule--helper.c:2719 builtin/worktree.c:554
-#: builtin/worktree.c:556
+#: builtin/checkout.c:1764 builtin/checkout.c:1766 builtin/checkout.c:1815
+#: builtin/checkout.c:1817 builtin/clone.c:122 builtin/remote.c:170
+#: builtin/remote.c:172 builtin/submodule--helper.c:2719 builtin/worktree.c:482
+#: builtin/worktree.c:484
 msgid "branch"
 msgstr "branche"
 
-#: builtin/checkout.c:1766
+#: builtin/checkout.c:1765
 msgid "create and checkout a new branch"
 msgstr "créer et extraire une nouvelle branche"
 
-#: builtin/checkout.c:1768
+#: builtin/checkout.c:1767
 msgid "create/reset and checkout a branch"
 msgstr "créer/réinitialiser et extraire une branche"
 
-#: builtin/checkout.c:1769
+#: builtin/checkout.c:1768
 msgid "create reflog for new branch"
 msgstr "créer un reflog pour une nouvelle branche"
 
-#: builtin/checkout.c:1771
+#: builtin/checkout.c:1770
 msgid "second guess 'git checkout <no-such-branch>' (default)"
 msgstr ""
 "essayer d'interpréter 'git checkout <branche-inexistante>' (par défaut)"
 
-#: builtin/checkout.c:1772
+#: builtin/checkout.c:1771
 msgid "use overlay mode (default)"
 msgstr "utiliser le mode de superposition (défaut)"
 
-#: builtin/checkout.c:1817
+#: builtin/checkout.c:1816
 msgid "create and switch to a new branch"
 msgstr "créer et basculer sur une nouvelle branche"
 
-#: builtin/checkout.c:1819
+#: builtin/checkout.c:1818
 msgid "create/reset and switch to a branch"
 msgstr "créer/réinitialiser et basculer sur une branche"
 
-#: builtin/checkout.c:1821
+#: builtin/checkout.c:1820
 msgid "second guess 'git switch <no-such-branch>'"
 msgstr "interpréter 'git switch <branche-inexistante>'"
 
-#: builtin/checkout.c:1823
+#: builtin/checkout.c:1822
 msgid "throw away local modifications"
 msgstr "laisser tomber les modifications locales"
 
-#: builtin/checkout.c:1857
+#: builtin/checkout.c:1856
 msgid "which tree-ish to checkout from"
 msgstr "de quel <arbre-esque> faire l'extraction"
 
-#: builtin/checkout.c:1859
+#: builtin/checkout.c:1858
 msgid "restore the index"
 msgstr "restaurer l'index"
 
-#: builtin/checkout.c:1861
+#: builtin/checkout.c:1860
 msgid "restore the working tree (default)"
 msgstr "restaurer l'arbre de travail (par défaut)"
 
-#: builtin/checkout.c:1863
+#: builtin/checkout.c:1862
 msgid "ignore unmerged entries"
 msgstr "ignorer les entrées non-fusionnées"
 
-#: builtin/checkout.c:1864
+#: builtin/checkout.c:1863
 msgid "use overlay mode"
 msgstr "utiliser le mode de superposition"
 
@@ -12566,8 +12852,8 @@ msgid "remove whole directories"
 msgstr "supprimer les répertoires entiers"
 
 #: builtin/clean.c:909 builtin/describe.c:565 builtin/describe.c:567
-#: builtin/grep.c:921 builtin/log.c:183 builtin/log.c:185
-#: builtin/ls-files.c:558 builtin/name-rev.c:526 builtin/name-rev.c:528
+#: builtin/grep.c:922 builtin/log.c:184 builtin/log.c:186
+#: builtin/ls-files.c:573 builtin/name-rev.c:526 builtin/name-rev.c:528
 #: builtin/show-ref.c:179
 msgid "pattern"
 msgstr "motif"
@@ -12663,7 +12949,7 @@ msgid "use --reference only while cloning"
 msgstr "utiliser seulement --reference pour cloner"
 
 #: builtin/clone.c:120 builtin/column.c:27 builtin/init-db.c:563
-#: builtin/merge-file.c:46 builtin/pack-objects.c:3546 builtin/repack.c:358
+#: builtin/merge-file.c:46 builtin/pack-objects.c:3561 builtin/repack.c:357
 msgid "name"
 msgstr "nom"
 
@@ -12679,7 +12965,7 @@ msgstr "extraire <branche> au lieu de la HEAD du répertoire distant"
 msgid "path to git-upload-pack on the remote"
 msgstr "chemin vers git-upload-pack sur le serveur distant"
 
-#: builtin/clone.c:126 builtin/fetch.c:173 builtin/grep.c:860
+#: builtin/clone.c:126 builtin/fetch.c:176 builtin/grep.c:861
 #: builtin/pull.c:208
 msgid "depth"
 msgstr "profondeur"
@@ -12688,7 +12974,7 @@ msgstr "profondeur"
 msgid "create a shallow clone of that depth"
 msgstr "créer un clone superficiel de cette profondeur"
 
-#: builtin/clone.c:128 builtin/fetch.c:175 builtin/pack-objects.c:3535
+#: builtin/clone.c:128 builtin/fetch.c:178 builtin/pack-objects.c:3550
 #: builtin/pull.c:211
 msgid "time"
 msgstr "heure"
@@ -12697,12 +12983,12 @@ msgstr "heure"
 msgid "create a shallow clone since a specific time"
 msgstr "créer un clone superficiel depuis une date spécifique"
 
-#: builtin/clone.c:130 builtin/fetch.c:177 builtin/fetch.c:200
-#: builtin/pull.c:214 builtin/pull.c:239 builtin/rebase.c:1317
+#: builtin/clone.c:130 builtin/fetch.c:180 builtin/fetch.c:203
+#: builtin/pull.c:214 builtin/pull.c:239 builtin/rebase.c:1323
 msgid "revision"
 msgstr "révision"
 
-#: builtin/clone.c:131 builtin/fetch.c:178 builtin/pull.c:215
+#: builtin/clone.c:131 builtin/fetch.c:181 builtin/pull.c:215
 msgid "deepen history of shallow clone, excluding rev"
 msgstr ""
 "approfondir l'historique d'un clone superficiel en excluant une révision"
@@ -12738,22 +13024,22 @@ msgstr "clé=valeur"
 msgid "set config inside the new repository"
 msgstr "régler la configuration dans le nouveau dépôt"
 
-#: builtin/clone.c:143 builtin/fetch.c:195 builtin/ls-remote.c:76
+#: builtin/clone.c:143 builtin/fetch.c:198 builtin/ls-remote.c:77
 #: builtin/pull.c:230 builtin/push.c:584 builtin/send-pack.c:196
 msgid "server-specific"
 msgstr "spécifique au serveur"
 
-#: builtin/clone.c:143 builtin/fetch.c:195 builtin/ls-remote.c:76
+#: builtin/clone.c:143 builtin/fetch.c:198 builtin/ls-remote.c:77
 #: builtin/pull.c:231 builtin/push.c:584 builtin/send-pack.c:197
 msgid "option to transmit"
 msgstr "option à transmettre"
 
-#: builtin/clone.c:144 builtin/fetch.c:196 builtin/pull.c:234
+#: builtin/clone.c:144 builtin/fetch.c:199 builtin/pull.c:234
 #: builtin/push.c:585
 msgid "use IPv4 addresses only"
 msgstr "n'utiliser que des adresses IPv4"
 
-#: builtin/clone.c:146 builtin/fetch.c:198 builtin/pull.c:237
+#: builtin/clone.c:146 builtin/fetch.c:201 builtin/pull.c:237
 #: builtin/push.c:587
 msgid "use IPv6 addresses only"
 msgstr "n'utiliser que des adresses IPv6"
@@ -12858,71 +13144,71 @@ msgstr "impossible de remballer pour nettoyer"
 msgid "cannot unlink temporary alternates file"
 msgstr "impossible de délier le fichier temporaire alternates"
 
-#: builtin/clone.c:992 builtin/receive-pack.c:2493
+#: builtin/clone.c:993 builtin/receive-pack.c:2493
 msgid "Too many arguments."
 msgstr "Trop d'arguments."
 
-#: builtin/clone.c:996
+#: builtin/clone.c:997
 msgid "You must specify a repository to clone."
 msgstr "Vous devez spécifier un dépôt à cloner."
 
-#: builtin/clone.c:1009
+#: builtin/clone.c:1010
 #, c-format
 msgid "--bare and --origin %s options are incompatible."
 msgstr "les options --bare et --origin %s sont incompatibles."
 
-#: builtin/clone.c:1012
+#: builtin/clone.c:1013
 msgid "--bare and --separate-git-dir are incompatible."
 msgstr "--bare et --separate-git-dir sont incompatibles."
 
-#: builtin/clone.c:1025
+#: builtin/clone.c:1026
 #, c-format
 msgid "repository '%s' does not exist"
 msgstr "le dépôt '%s' n'existe pas"
 
-#: builtin/clone.c:1029 builtin/fetch.c:1841
+#: builtin/clone.c:1030 builtin/fetch.c:1951
 #, c-format
 msgid "depth %s is not a positive number"
 msgstr "la profondeur %s n'est pas un entier positif"
 
-#: builtin/clone.c:1039
+#: builtin/clone.c:1040
 #, 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:1045
+#: builtin/clone.c:1046
 #, c-format
 msgid "repository path '%s' already exists and is not an empty directory."
 msgstr "le chemin du dépôt '%s' existe déjà et n'est pas un répertoire vide."
 
-#: builtin/clone.c:1059
+#: builtin/clone.c:1060
 #, c-format
 msgid "working tree '%s' already exists."
 msgstr "la copie de travail '%s' existe déjà."
 
-#: builtin/clone.c:1074 builtin/clone.c:1095 builtin/difftool.c:271
-#: builtin/log.c:1987 builtin/worktree.c:354 builtin/worktree.c:386
+#: builtin/clone.c:1075 builtin/clone.c:1096 builtin/difftool.c:271
+#: builtin/log.c:1986 builtin/worktree.c:282 builtin/worktree.c:314
 #, 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:1079
+#: builtin/clone.c:1080
 #, 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:1099
+#: builtin/clone.c:1100
 #, c-format
 msgid "Cloning into bare repository '%s'...\n"
 msgstr "Clonage dans le dépôt nu '%s'\n"
 
-#: builtin/clone.c:1101
+#: builtin/clone.c:1102
 #, c-format
 msgid "Cloning into '%s'...\n"
 msgstr "Clonage dans '%s'...\n"
 
-#: builtin/clone.c:1125
+#: builtin/clone.c:1126
 msgid ""
 "clone --recursive is not compatible with both --reference and --reference-if-"
 "able"
@@ -12930,46 +13216,46 @@ msgstr ""
 "clone --recursive n'est pas compatible avec à la fois --reference et --"
 "reference-if-able"
 
-#: builtin/clone.c:1169 builtin/remote.c:200 builtin/remote.c:705
+#: builtin/clone.c:1170 builtin/remote.c:200 builtin/remote.c:705
 #, c-format
 msgid "'%s' is not a valid remote name"
 msgstr "'%s' n'est pas un nom valide de distante"
 
-#: builtin/clone.c:1210
+#: builtin/clone.c:1211
 msgid "--depth is ignored in local clones; use file:// instead."
 msgstr ""
 "--depth est ignoré dans les clones locaux : utilisez plutôt \"file://\"."
 
-#: builtin/clone.c:1212
+#: builtin/clone.c:1213
 msgid "--shallow-since is ignored in local clones; use file:// instead."
 msgstr ""
 "--shallow-since est ignoré dans les clones locaux : utilisez plutôt \"file://"
 "\"."
 
-#: builtin/clone.c:1214
+#: builtin/clone.c:1215
 msgid "--shallow-exclude is ignored in local clones; use file:// instead."
 msgstr ""
 "--shallow-exclude est ignoré dans les clones locaux : utilisez plutôt "
 "\"file://\"."
 
-#: builtin/clone.c:1216
+#: builtin/clone.c:1217
 msgid "--filter is ignored in local clones; use file:// instead."
 msgstr "--filter est ignoré dans les clones locaux ; utilisez plutôt file:// ."
 
-#: builtin/clone.c:1219
+#: builtin/clone.c:1220
 msgid "source repository is shallow, ignoring --local"
 msgstr "le dépôt source est superficiel, option --local ignorée"
 
-#: builtin/clone.c:1224
+#: builtin/clone.c:1225
 msgid "--local is ignored"
 msgstr "--local est ignoré"
 
-#: builtin/clone.c:1311 builtin/clone.c:1319
+#: builtin/clone.c:1315 builtin/clone.c:1323
 #, c-format
 msgid "Remote branch %s not found in upstream %s"
 msgstr "La branche distante %s n'a pas été trouvée dans le dépôt amont %s"
 
-#: builtin/clone.c:1322
+#: builtin/clone.c:1326
 msgid "You appear to have cloned an empty repository."
 msgstr "Vous semblez avoir cloné un dépôt vide."
 
@@ -13027,14 +13313,14 @@ msgid "could not find object directory matching %s"
 msgstr "impossible de trouver le répertoire objet correspondant à %s"
 
 #: builtin/commit-graph.c:80 builtin/commit-graph.c:210
-#: builtin/commit-graph.c:316 builtin/fetch.c:184 builtin/log.c:1769
+#: builtin/commit-graph.c:316 builtin/fetch.c:187 builtin/log.c:1768
 msgid "dir"
 msgstr "répertoire"
 
 #: builtin/commit-graph.c:81 builtin/commit-graph.c:211
 #: builtin/commit-graph.c:317
-msgid "The object directory to store the graph"
-msgstr "Le répertoire d'objet où stocker le graphe"
+msgid "the object directory to store the graph"
+msgstr "le répertoire d'objet où stocker le graphe"
 
 #: builtin/commit-graph.c:83
 msgid "if the commit-graph is split, only verify the tip file"
@@ -13124,7 +13410,7 @@ msgstr ""
 msgid "duplicate parent %s ignored"
 msgstr "le parent dupliqué %s est ignoré"
 
-#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:555
+#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:557
 #, c-format
 msgid "not a valid object name %s"
 msgstr "nom d'objet invalide %s"
@@ -13152,9 +13438,9 @@ msgstr "parent"
 msgid "id of a parent commit object"
 msgstr "id d'un objet commit parent"
 
-#: builtin/commit-tree.c:114 builtin/commit.c:1504 builtin/merge.c:281
-#: builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1470
-#: builtin/tag.c:413
+#: builtin/commit-tree.c:114 builtin/commit.c:1504 builtin/merge.c:282
+#: builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1537
+#: builtin/tag.c:445
 msgid "message"
 msgstr "message"
 
@@ -13166,7 +13452,7 @@ msgstr "message de validation"
 msgid "read commit log message from file"
 msgstr "lire le message de validation depuis un fichier"
 
-#: builtin/commit-tree.c:121 builtin/commit.c:1516 builtin/merge.c:298
+#: builtin/commit-tree.c:121 builtin/commit.c:1516 builtin/merge.c:299
 #: builtin/pull.c:176 builtin/revert.c:118
 msgid "GPG sign commit"
 msgstr "signer la validation avec GPG"
@@ -13322,7 +13608,7 @@ msgstr ""
 msgid "could not lookup commit %s"
 msgstr "impossible de rechercher le commit %s"
 
-#: builtin/commit.c:729 builtin/shortlog.c:425
+#: builtin/commit.c:729 builtin/shortlog.c:413
 #, c-format
 msgid "(reading log message from standard input)\n"
 msgstr "(lecture du message de journal depuis l'entrée standard)\n"
@@ -13420,7 +13706,7 @@ msgstr "Impossible de lire l'index"
 msgid "Error building trees"
 msgstr "Erreur lors de la construction des arbres"
 
-#: builtin/commit.c:1011 builtin/tag.c:276
+#: builtin/commit.c:1011 builtin/tag.c:308
 #, 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"
@@ -13514,7 +13800,7 @@ msgid "version"
 msgstr "version"
 
 #: builtin/commit.c:1374 builtin/commit.c:1533 builtin/push.c:560
-#: builtin/worktree.c:725
+#: builtin/worktree.c:679
 msgid "machine-readable output"
 msgstr "sortie pour traitement automatique"
 
@@ -13528,7 +13814,7 @@ msgstr "terminer les éléments par NUL"
 
 #: builtin/commit.c:1382 builtin/commit.c:1386 builtin/commit.c:1541
 #: builtin/fast-export.c:1198 builtin/fast-export.c:1201
-#: builtin/fast-export.c:1204 builtin/rebase.c:1406 parse-options.h:336
+#: builtin/fast-export.c:1204 builtin/rebase.c:1412 parse-options.h:336
 msgid "mode"
 msgstr "mode"
 
@@ -13589,7 +13875,7 @@ msgstr "afficher les diff dans le modèle de message de validation"
 msgid "Commit message options"
 msgstr "Options du message de validation"
 
-#: builtin/commit.c:1501 builtin/merge.c:285 builtin/tag.c:415
+#: builtin/commit.c:1501 builtin/merge.c:286 builtin/tag.c:447
 msgid "read message from file"
 msgstr "lire le message depuis un fichier"
 
@@ -13601,7 +13887,7 @@ msgstr "auteur"
 msgid "override author for commit"
 msgstr "remplacer l'auteur pour la validation"
 
-#: builtin/commit.c:1503 builtin/gc.c:542
+#: builtin/commit.c:1503 builtin/gc.c:550
 msgid "date"
 msgstr "date"
 
@@ -13610,7 +13896,7 @@ msgid "override date for commit"
 msgstr "remplacer la date pour la validation"
 
 #: builtin/commit.c:1505 builtin/commit.c:1506 builtin/commit.c:1507
-#: builtin/commit.c:1508 parse-options.h:328 ref-filter.h:87
+#: builtin/commit.c:1508 parse-options.h:328 ref-filter.h:90
 msgid "commit"
 msgstr "commit"
 
@@ -13637,7 +13923,7 @@ 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:1510 builtin/log.c:1744 builtin/merge.c:301
+#: builtin/commit.c:1510 builtin/log.c:1743 builtin/merge.c:302
 #: builtin/pull.c:145 builtin/revert.c:110
 msgid "add a Signed-off-by trailer"
 msgstr "ajouter une ligne terminale Signed-off-by"
@@ -14282,41 +14568,41 @@ msgstr "--stdin et --merge-base sont mutuellement exclusifs"
 msgid "--merge-base only works with two commits"
 msgstr "--merge-base ne fonctionne qu'avec deux commits"
 
-#: builtin/diff.c:91
+#: builtin/diff.c:92
 #, c-format
 msgid "'%s': not a regular file or symlink"
 msgstr "'%s' : n'est pas un fichier régulier ni un lien symbolique"
 
-#: builtin/diff.c:258
+#: builtin/diff.c:259
 #, c-format
 msgid "invalid option: %s"
 msgstr "option invalide : %s"
 
-#: builtin/diff.c:375
+#: builtin/diff.c:376
 #, c-format
 msgid "%s...%s: no merge base"
 msgstr "%s..%s: pas de base de fusion"
 
-#: builtin/diff.c:485
+#: builtin/diff.c:486
 msgid "Not a git repository"
 msgstr "Ce n'est pas un dépôt git !"
 
-#: builtin/diff.c:530 builtin/grep.c:681
+#: builtin/diff.c:532 builtin/grep.c:682
 #, c-format
 msgid "invalid object '%s' given."
 msgstr "objet spécifié '%s' invalide."
 
-#: builtin/diff.c:541
+#: builtin/diff.c:543
 #, c-format
 msgid "more than two blobs given: '%s'"
 msgstr "plus de deux blobs spécifiés : '%s'"
 
-#: builtin/diff.c:546
+#: builtin/diff.c:548
 #, c-format
 msgid "unhandled object '%s' given."
 msgstr "objet non géré '%s' spécifié."
 
-#: builtin/diff.c:580
+#: builtin/diff.c:582
 #, c-format
 msgid "%s...%s: multiple merge bases, using %s"
 msgstr "\"%s...%s\" : bases multiples de fusion, utilisation de %s"
@@ -14502,40 +14788,40 @@ msgstr ""
 "alternatif"
 
 #: builtin/fast-export.c:1208
-msgid "Dump marks to this file"
-msgstr "Enregistrer les marques dans ce fichier"
+msgid "dump marks to this file"
+msgstr "enregistrer les marques dans ce fichier"
 
 #: builtin/fast-export.c:1210
-msgid "Import marks from this file"
+msgid "import marks from this file"
 msgstr "importer les marques depuis ce fichier"
 
 #: builtin/fast-export.c:1214
-msgid "Import marks from this file if it exists"
+msgid "import marks from this file if it exists"
 msgstr "importer les marques depuis ce fichier s'il existe"
 
 #: builtin/fast-export.c:1216
-msgid "Fake a tagger when tags lack one"
+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:1218
-msgid "Output full tree for each commit"
-msgstr "Afficher l'arbre complet pour chaque commit"
+msgid "output full tree for each commit"
+msgstr "afficher l'arbre complet pour chaque commit"
 
 #: builtin/fast-export.c:1220
-msgid "Use the done feature to terminate the stream"
-msgstr "Utiliser la fonction \"done\" pour terminer le flux"
+msgid "use the done feature to terminate the stream"
+msgstr "utiliser la fonction \"done\" pour terminer le flux"
 
 #: builtin/fast-export.c:1221
-msgid "Skip output of blob data"
-msgstr "Sauter l'affichage de données de blob"
+msgid "skip output of blob data"
+msgstr "sauter l'affichage de données de blob"
 
-#: builtin/fast-export.c:1222 builtin/log.c:1816
+#: builtin/fast-export.c:1222 builtin/log.c:1815
 msgid "refspec"
 msgstr "spécificateur de référence"
 
 #: builtin/fast-export.c:1223
-msgid "Apply refspec to exported refs"
-msgstr "Appliquer le spécificateur de référence aux références exportées"
+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:1224
 msgid "anonymize output"
@@ -14550,18 +14836,18 @@ msgid "convert <from> to <to> in anonymized output"
 msgstr "convertit <depuis> en <vers> dans la sortie anonymisée"
 
 #: builtin/fast-export.c:1229
-msgid "Reference parents which are not in fast-export stream by object id"
+msgid "reference parents which are not in fast-export stream by object id"
 msgstr ""
-"les parents références qui ne sont pas dans le flux d'export rapide par id "
+"référencer les parents qui ne sont pas dans le flux d'export rapide par id "
 "d'objet"
 
 #: builtin/fast-export.c:1231
-msgid "Show original object ids of blobs/commits"
-msgstr "Afficher les ids d'objet originaux des blobs/commits"
+msgid "show original object ids of blobs/commits"
+msgstr "afficher les ids d'objet originaux des blobs/commits"
 
 #: builtin/fast-export.c:1233
-msgid "Label tags with mark ids"
-msgstr "Marquer les étiquettes avec des ids de marque"
+msgid "label tags with mark ids"
+msgstr "marquer les étiquettes avec des ids de marque"
 
 #: builtin/fast-export.c:1256
 msgid "--anonymize-map without --anonymize does not make sense"
@@ -14604,7 +14890,7 @@ msgid "feature '%s' forbidden in input without --allow-unsafe-features"
 msgstr ""
 "la fonctionnalité '%s' est interdite en entrée sans --allow-unsafe-features"
 
-#: builtin/fetch-pack.c:241
+#: builtin/fetch-pack.c:242
 #, c-format
 msgid "Lockfile created but not reported: %s"
 msgstr "Fichier verrou créé mais non reporté : %s"
@@ -14625,96 +14911,100 @@ msgstr "git fetch --multiple [<options>] [(<dépôt> | <groupe>)...]"
 msgid "git fetch --all [<options>]"
 msgstr "git fetch --all [<options>]"
 
-#: builtin/fetch.c:119
+#: builtin/fetch.c:120
 msgid "fetch.parallel cannot be negative"
 msgstr "fetch.parallel ne peut pas être négatif"
 
-#: builtin/fetch.c:142 builtin/pull.c:185
+#: builtin/fetch.c:143 builtin/pull.c:185
 msgid "fetch from all remotes"
 msgstr "récupérer depuis tous les dépôts distants"
 
-#: builtin/fetch.c:144 builtin/pull.c:245
+#: builtin/fetch.c:145 builtin/pull.c:245
 msgid "set upstream for git pull/fetch"
 msgstr "définir la branche amont pour git pull/fetch"
 
-#: builtin/fetch.c:146 builtin/pull.c:188
+#: builtin/fetch.c:147 builtin/pull.c:188
 msgid "append to .git/FETCH_HEAD instead of overwriting"
 msgstr "ajouter à .git/FETCH_HEAD au lieu de l'écraser"
 
-#: builtin/fetch.c:148 builtin/pull.c:191
+#: builtin/fetch.c:149
+msgid "use atomic transaction to update references"
+msgstr "utiliser une transaction atomique pour mettre à jour les références"
+
+#: builtin/fetch.c:151 builtin/pull.c:191
 msgid "path to upload pack on remote end"
 msgstr "chemin vers lequel télécharger le paquet sur le poste distant"
 
-#: builtin/fetch.c:149
+#: builtin/fetch.c:152
 msgid "force overwrite of local reference"
 msgstr "forcer l'écrasement de la branche locale"
 
-#: builtin/fetch.c:151
+#: builtin/fetch.c:154
 msgid "fetch from multiple remotes"
 msgstr "récupérer depuis plusieurs dépôts distants"
 
-#: builtin/fetch.c:153 builtin/pull.c:195
+#: builtin/fetch.c:156 builtin/pull.c:195
 msgid "fetch all tags and associated objects"
 msgstr "récupérer toutes les étiquettes et leurs objets associés"
 
-#: builtin/fetch.c:155
+#: builtin/fetch.c:158
 msgid "do not fetch all tags (--no-tags)"
 msgstr "ne pas récupérer toutes les étiquettes (--no-tags)"
 
-#: builtin/fetch.c:157
+#: builtin/fetch.c:160
 msgid "number of submodules fetched in parallel"
 msgstr "nombre de sous-modules récupérés en parallèle"
 
-#: builtin/fetch.c:159 builtin/pull.c:198
+#: builtin/fetch.c:162 builtin/pull.c:198
 msgid "prune remote-tracking branches no longer on remote"
 msgstr ""
 "éliminer les branches de suivi distant si la branche n'existe plus dans le "
 "dépôt distant"
 
-#: builtin/fetch.c:161
+#: builtin/fetch.c:164
 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"
 
-#: builtin/fetch.c:162 builtin/fetch.c:187 builtin/pull.c:122
+#: builtin/fetch.c:165 builtin/fetch.c:190 builtin/pull.c:122
 msgid "on-demand"
 msgstr "à la demande"
 
-#: builtin/fetch.c:163
+#: builtin/fetch.c:166
 msgid "control recursive fetching of submodules"
 msgstr "contrôler la récupération récursive dans les sous-modules"
 
-#: builtin/fetch.c:168
+#: builtin/fetch.c:171
 msgid "write fetched references to the FETCH_HEAD file"
 msgstr "écrire les références récupérées dans le fichier FETCH_HEAD"
 
-#: builtin/fetch.c:169 builtin/pull.c:206
+#: builtin/fetch.c:172 builtin/pull.c:206
 msgid "keep downloaded pack"
 msgstr "conserver le paquet téléchargé"
 
-#: builtin/fetch.c:171
+#: builtin/fetch.c:174
 msgid "allow updating of HEAD ref"
 msgstr "permettre la mise à jour de la référence HEAD"
 
-#: builtin/fetch.c:174 builtin/fetch.c:180 builtin/pull.c:209
+#: builtin/fetch.c:177 builtin/fetch.c:183 builtin/pull.c:209
 #: builtin/pull.c:218
 msgid "deepen history of shallow clone"
 msgstr "approfondir l'historique d'un clone superficiel"
 
-#: builtin/fetch.c:176 builtin/pull.c:212
+#: builtin/fetch.c:179 builtin/pull.c:212
 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:182 builtin/pull.c:221
+#: builtin/fetch.c:185 builtin/pull.c:221
 msgid "convert to a complete repository"
 msgstr "convertir en un dépôt complet"
 
-#: builtin/fetch.c:185
+#: builtin/fetch.c:188
 msgid "prepend this to submodule path output"
 msgstr "préfixer ceci à la sortie du chemin du sous-module"
 
-#: builtin/fetch.c:188
+#: builtin/fetch.c:191
 msgid ""
 "default for recursive fetching of submodules (lower priority than config "
 "files)"
@@ -14722,99 +15012,99 @@ 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:192 builtin/pull.c:224
+#: builtin/fetch.c:195 builtin/pull.c:224
 msgid "accept refs that update .git/shallow"
 msgstr "accepter les références qui mettent à jour .git/shallow"
 
-#: builtin/fetch.c:193 builtin/pull.c:226
+#: builtin/fetch.c:196 builtin/pull.c:226
 msgid "refmap"
 msgstr "correspondance de référence"
 
-#: builtin/fetch.c:194 builtin/pull.c:227
+#: builtin/fetch.c:197 builtin/pull.c:227
 msgid "specify fetch refmap"
 msgstr "spécifier une correspondance de référence pour la récupération"
 
-#: builtin/fetch.c:201 builtin/pull.c:240
+#: builtin/fetch.c:204 builtin/pull.c:240
 msgid "report that we have only objects reachable from this object"
 msgstr "rapporte que nous n'avons que des objets joignables depuis cet objet"
 
-#: builtin/fetch.c:204 builtin/fetch.c:206
+#: builtin/fetch.c:207 builtin/fetch.c:209
 msgid "run 'maintenance --auto' after fetching"
 msgstr "lancer 'maintenance --auto' après la récupération"
 
-#: builtin/fetch.c:208 builtin/pull.c:243
+#: builtin/fetch.c:211 builtin/pull.c:243
 msgid "check for forced-updates on all updated branches"
 msgstr "vérifier les mises à jour forcées sur toutes les branches mises à jour"
 
-#: builtin/fetch.c:210
+#: builtin/fetch.c:213
 msgid "write the commit-graph after fetching"
 msgstr "écrire le graphe de commits après le rapatriement"
 
-#: builtin/fetch.c:212
+#: builtin/fetch.c:215
 msgid "accept refspecs from stdin"
 msgstr "lire les spécificateurs de référence depuis l'entrée standard"
 
-#: builtin/fetch.c:523
+#: builtin/fetch.c:526
 msgid "Couldn't find remote ref HEAD"
 msgstr "impossible de trouver la référence HEAD distante"
 
-#: builtin/fetch.c:677
+#: builtin/fetch.c:697
 #, 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:775
+#: builtin/fetch.c:796
 #, c-format
 msgid "object %s not found"
 msgstr "objet %s non trouvé"
 
-#: builtin/fetch.c:779
+#: builtin/fetch.c:800
 msgid "[up to date]"
 msgstr "[à jour]"
 
-#: builtin/fetch.c:792 builtin/fetch.c:808 builtin/fetch.c:880
+#: builtin/fetch.c:813 builtin/fetch.c:829 builtin/fetch.c:901
 msgid "[rejected]"
 msgstr "[rejeté]"
 
-#: builtin/fetch.c:793
+#: builtin/fetch.c:814
 msgid "can't fetch in current branch"
 msgstr "impossible de récupérer dans la branche actuelle"
 
-#: builtin/fetch.c:803
+#: builtin/fetch.c:824
 msgid "[tag update]"
 msgstr "[mise à jour de l'étiquette]"
 
-#: builtin/fetch.c:804 builtin/fetch.c:841 builtin/fetch.c:863
-#: builtin/fetch.c:875
+#: builtin/fetch.c:825 builtin/fetch.c:862 builtin/fetch.c:884
+#: builtin/fetch.c:896
 msgid "unable to update local ref"
 msgstr "impossible de mettre à jour la référence locale"
 
-#: builtin/fetch.c:808
+#: builtin/fetch.c:829
 msgid "would clobber existing tag"
 msgstr "écraserait l'étiquette existante"
 
-#: builtin/fetch.c:830
+#: builtin/fetch.c:851
 msgid "[new tag]"
 msgstr "[nouvelle étiquette]"
 
-#: builtin/fetch.c:833
+#: builtin/fetch.c:854
 msgid "[new branch]"
 msgstr "[nouvelle branche]"
 
-#: builtin/fetch.c:836
+#: builtin/fetch.c:857
 msgid "[new ref]"
 msgstr "[nouvelle référence]"
 
-#: builtin/fetch.c:875
+#: builtin/fetch.c:896
 msgid "forced update"
 msgstr "mise à jour forcée"
 
-#: builtin/fetch.c:880
+#: builtin/fetch.c:901
 msgid "non-fast-forward"
 msgstr "pas en avance rapide"
 
-#: builtin/fetch.c:901
+#: builtin/fetch.c:1005
 msgid ""
 "Fetch normally indicates which branches had a forced update,\n"
 "but that check has been disabled. To re-enable, use '--show-forced-updates'\n"
@@ -14824,7 +15114,7 @@ msgstr ""
 "mais ceci a été désactivé. Pour ré-activer, utilisez le drapeau\n"
 "'--show-forced-update' ou lancez 'git config fetch.showForcedUpdates true'."
 
-#: builtin/fetch.c:905
+#: builtin/fetch.c:1009
 #, c-format
 msgid ""
 "It took %.2f seconds to check forced updates. You can use\n"
@@ -14836,23 +15126,23 @@ msgstr ""
 "Vous pouvez utiliser '--no-show-forced-update' ou lancer\n"
 "'git config fetch.showForcedUpdates false' pour éviter ceci.\n"
 
-#: builtin/fetch.c:939
+#: builtin/fetch.c:1041
 #, 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:960
+#: builtin/fetch.c:1069
 #, 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:1053 builtin/fetch.c:1191
+#: builtin/fetch.c:1146 builtin/fetch.c:1297
 #, c-format
 msgid "From %.*s\n"
 msgstr "Depuis %.*s\n"
 
-#: builtin/fetch.c:1064
+#: builtin/fetch.c:1168
 #, c-format
 msgid ""
 "some local refs could not be updated; try running\n"
@@ -14861,56 +15151,56 @@ 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:1161
+#: builtin/fetch.c:1267
 #, c-format
 msgid "   (%s will become dangling)"
 msgstr "   (%s sera en suspens)"
 
-#: builtin/fetch.c:1162
+#: builtin/fetch.c:1268
 #, c-format
 msgid "   (%s has become dangling)"
 msgstr "   (%s est devenu en suspens)"
 
-#: builtin/fetch.c:1194
+#: builtin/fetch.c:1300
 msgid "[deleted]"
 msgstr "[supprimé]"
 
-#: builtin/fetch.c:1195 builtin/remote.c:1118
+#: builtin/fetch.c:1301 builtin/remote.c:1118
 msgid "(none)"
 msgstr "(aucun(e))"
 
-#: builtin/fetch.c:1218
+#: builtin/fetch.c:1324
 #, 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:1237
+#: builtin/fetch.c:1343
 #, 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:1240
+#: builtin/fetch.c:1346
 #, c-format
 msgid "Option \"%s\" is ignored for %s\n"
 msgstr "L'option \"%s\" est ignorée pour %s\n"
 
-#: builtin/fetch.c:1448
+#: builtin/fetch.c:1558
 msgid "multiple branches detected, incompatible with --set-upstream"
 msgstr "branches multiples détectées, imcompatible avec --set-upstream"
 
-#: builtin/fetch.c:1463
+#: builtin/fetch.c:1573
 msgid "not setting upstream for a remote remote-tracking branch"
 msgstr "dépôt amont non défini pour la branche de suivi à distance"
 
-#: builtin/fetch.c:1465
+#: builtin/fetch.c:1575
 msgid "not setting upstream for a remote tag"
 msgstr "dépôt amont non défini pour l'étiquette distante"
 
-#: builtin/fetch.c:1467
+#: builtin/fetch.c:1577
 msgid "unknown branch type"
 msgstr "type de branche inconnu"
 
-#: builtin/fetch.c:1469
+#: builtin/fetch.c:1579
 msgid ""
 "no source branch found.\n"
 "you need to specify exactly one branch with the --set-upstream option."
@@ -14918,22 +15208,22 @@ msgstr ""
 "Aucune branche source trouvée.\n"
 "Vous devez spécifier exactement une branche avec l'option --set-upstream."
 
-#: builtin/fetch.c:1598 builtin/fetch.c:1661
+#: builtin/fetch.c:1708 builtin/fetch.c:1771
 #, c-format
 msgid "Fetching %s\n"
 msgstr "Récupération de %s\n"
 
-#: builtin/fetch.c:1608 builtin/fetch.c:1663 builtin/remote.c:101
+#: builtin/fetch.c:1718 builtin/fetch.c:1773 builtin/remote.c:101
 #, c-format
 msgid "Could not fetch %s"
 msgstr "Impossible de récupérer %s"
 
-#: builtin/fetch.c:1620
+#: builtin/fetch.c:1730
 #, c-format
 msgid "could not fetch '%s' (exit code: %d)\n"
 msgstr "impossible de récupérer '%s' (code de sortie : %d)\n"
 
-#: builtin/fetch.c:1724
+#: builtin/fetch.c:1834
 msgid ""
 "No remote repository specified.  Please, specify either a URL or a\n"
 "remote name from which new revisions should be fetched."
@@ -14941,46 +15231,46 @@ 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:1760
+#: builtin/fetch.c:1870
 msgid "You need to specify a tag name."
 msgstr "Vous devez spécifier un nom d'étiquette."
 
-#: builtin/fetch.c:1825
+#: builtin/fetch.c:1935
 msgid "Negative depth in --deepen is not supported"
 msgstr "Une profondeur négative dans --deepen n'est pas supportée"
 
-#: builtin/fetch.c:1827
+#: builtin/fetch.c:1937
 msgid "--deepen and --depth are mutually exclusive"
 msgstr "--deepen et --depth sont mutuellement exclusifs"
 
-#: builtin/fetch.c:1832
+#: builtin/fetch.c:1942
 msgid "--depth and --unshallow cannot be used together"
 msgstr "--depth et --unshallow ne peuvent pas être utilisés ensemble"
 
-#: builtin/fetch.c:1834
+#: builtin/fetch.c:1944
 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:1851
+#: builtin/fetch.c:1961
 msgid "fetch --all does not take a repository argument"
 msgstr "fetch --all n'accepte pas d'argument de dépôt"
 
-#: builtin/fetch.c:1853
+#: builtin/fetch.c:1963
 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:1862
+#: builtin/fetch.c:1972
 #, c-format
 msgid "No such remote or remote group: %s"
 msgstr "distant ou groupe distant inexistant : %s"
 
-#: builtin/fetch.c:1869
+#: builtin/fetch.c:1979
 msgid "Fetching a group and specifying refspecs does not make sense"
 msgstr ""
 "La récupération d'un groupe et les spécifications de référence n'ont pas de "
 "sens"
 
-#: builtin/fetch.c:1887
+#: builtin/fetch.c:1997
 msgid ""
 "--filter can only be used with the remote configured in extensions."
 "partialclone"
@@ -14988,7 +15278,11 @@ msgstr ""
 "--filter ne peut être utilisé qu'avec le dépôt distant configuré dans "
 "extensions.partialClone"
 
-#: builtin/fetch.c:1891
+#: builtin/fetch.c:2001
+msgid "--atomic can only be used when fetching from one remote"
+msgstr "--atomic ne peut être utilisée qu'en récupérant depuis un seul distant"
+
+#: builtin/fetch.c:2005
 msgid "--stdin can only be used when fetching from one remote"
 msgstr "--stdin ne peut être utilisée qu'en récupérant depuis un seul distant"
 
@@ -15054,7 +15348,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:440
+#: builtin/for-each-ref.c:39 builtin/tag.c:472
 msgid "respect format colors"
 msgstr "respecter les couleurs de formatage"
 
@@ -15094,32 +15388,32 @@ msgstr "clé de config qui stocke la liste des chemins de dépôts"
 msgid "missing --config=<config>"
 msgstr "--config=<config> manquant"
 
-#: builtin/fsck.c:69 builtin/fsck.c:148 builtin/fsck.c:149
+#: builtin/fsck.c:69 builtin/fsck.c:130 builtin/fsck.c:131
 msgid "unknown"
 msgstr "inconnu"
 
 #. TRANSLATORS: e.g. error in tree 01bfda: <more explanation>
-#: builtin/fsck.c:101 builtin/fsck.c:121
+#: builtin/fsck.c:83 builtin/fsck.c:103
 #, c-format
 msgid "error in %s %s: %s"
 msgstr "erreur dans l'objet %s %s : %s"
 
 #. TRANSLATORS: e.g. warning in tree 01bfda: <more explanation>
-#: builtin/fsck.c:115
+#: builtin/fsck.c:97
 #, c-format
 msgid "warning in %s %s: %s"
 msgstr "avertissement dans l'objet %s %s : %s"
 
-#: builtin/fsck.c:144 builtin/fsck.c:147
+#: builtin/fsck.c:126 builtin/fsck.c:129
 #, c-format
 msgid "broken link from %7s %s"
 msgstr "lien cassé dans l'objet %7s %s"
 
-#: builtin/fsck.c:156
+#: builtin/fsck.c:138
 msgid "wrong object type in link"
 msgstr "type d'objet inconnu dans le lien"
 
-#: builtin/fsck.c:172
+#: builtin/fsck.c:154
 #, c-format
 msgid ""
 "broken link from %7s %s\n"
@@ -15128,212 +15422,212 @@ msgstr ""
 "lien cassé depuis %7s %s\n"
 "             vers %7s %s"
 
-#: builtin/fsck.c:283
+#: builtin/fsck.c:265
 #, c-format
 msgid "missing %s %s"
 msgstr "objet %s manquant %s"
 
-#: builtin/fsck.c:310
+#: builtin/fsck.c:292
 #, c-format
 msgid "unreachable %s %s"
 msgstr "objet %s inatteignable %s"
 
-#: builtin/fsck.c:330
+#: builtin/fsck.c:312
 #, c-format
 msgid "dangling %s %s"
 msgstr "objet %s fantôme %s"
 
-#: builtin/fsck.c:340
+#: builtin/fsck.c:322
 msgid "could not create lost-found"
 msgstr "impossible de créer le fichier lost-found"
 
-#: builtin/fsck.c:351
+#: builtin/fsck.c:333
 #, c-format
 msgid "could not finish '%s'"
 msgstr "impossible de finir '%s'"
 
-#: builtin/fsck.c:368
+#: builtin/fsck.c:350
 #, c-format
 msgid "Checking %s"
 msgstr "Vérification de l'objet %s"
 
-#: builtin/fsck.c:406
+#: builtin/fsck.c:388
 #, c-format
 msgid "Checking connectivity (%d objects)"
 msgstr "Vérification de la connectivité (%d objets)"
 
-#: builtin/fsck.c:425
+#: builtin/fsck.c:407
 #, c-format
 msgid "Checking %s %s"
 msgstr "Vérification de l'objet %s %s"
 
-#: builtin/fsck.c:430
+#: builtin/fsck.c:412
 msgid "broken links"
 msgstr "liens cassés"
 
-#: builtin/fsck.c:439
+#: builtin/fsck.c:421
 #, c-format
 msgid "root %s"
 msgstr "racine %s"
 
-#: builtin/fsck.c:447
+#: builtin/fsck.c:429
 #, c-format
 msgid "tagged %s %s (%s) in %s"
 msgstr "étiquetage de l'objet %s %s (%s) dans %s"
 
-#: builtin/fsck.c:476
+#: builtin/fsck.c:458
 #, c-format
 msgid "%s: object corrupt or missing"
 msgstr "%s : objet corrompu ou manquant"
 
-#: builtin/fsck.c:501
+#: builtin/fsck.c:483
 #, c-format
 msgid "%s: invalid reflog entry %s"
 msgstr "%s : entrée %s de journal de références invalide"
 
-#: builtin/fsck.c:515
+#: builtin/fsck.c:497
 #, c-format
 msgid "Checking reflog %s->%s"
 msgstr "Vérification du journal de réferences %s-> %s"
 
-#: builtin/fsck.c:549
+#: builtin/fsck.c:531
 #, c-format
 msgid "%s: invalid sha1 pointer %s"
 msgstr "%s : pointeur de sha1 invalide %s"
 
-#: builtin/fsck.c:556
+#: builtin/fsck.c:538
 #, c-format
 msgid "%s: not a commit"
 msgstr "l'objet %s n'est pas un commit"
 
-#: builtin/fsck.c:610
+#: builtin/fsck.c:592
 msgid "notice: No default references"
 msgstr "Note : pas de référence par défaut"
 
-#: builtin/fsck.c:625
+#: builtin/fsck.c:607
 #, c-format
 msgid "%s: object corrupt or missing: %s"
 msgstr "%s : objet corrompu ou manquant : %s"
 
-#: builtin/fsck.c:638
+#: builtin/fsck.c:620
 #, c-format
 msgid "%s: object could not be parsed: %s"
 msgstr "%s : impossible d'analyser : %s"
 
-#: builtin/fsck.c:658
+#: builtin/fsck.c:640
 #, c-format
 msgid "bad sha1 file: %s"
 msgstr "mauvais fichier de sha1 : %s"
 
-#: builtin/fsck.c:673
+#: builtin/fsck.c:655
 msgid "Checking object directory"
 msgstr "Vérification du répertoire d'objet"
 
-#: builtin/fsck.c:676
+#: builtin/fsck.c:658
 msgid "Checking object directories"
 msgstr "Vérification des répertoires d'objet"
 
-#: builtin/fsck.c:691
+#: builtin/fsck.c:673
 #, c-format
 msgid "Checking %s link"
 msgstr "Vérification du lien %s"
 
-#: builtin/fsck.c:696 builtin/index-pack.c:865
+#: builtin/fsck.c:678 builtin/index-pack.c:865
 #, c-format
 msgid "invalid %s"
 msgstr "%s invalide"
 
-#: builtin/fsck.c:703
+#: builtin/fsck.c:685
 #, c-format
 msgid "%s points to something strange (%s)"
 msgstr "%s pointe sur quelque chose bizarre (%s)"
 
-#: builtin/fsck.c:709
+#: builtin/fsck.c:691
 #, c-format
 msgid "%s: detached HEAD points at nothing"
 msgstr "%s : la HEAD détachée ne pointe sur rien"
 
-#: builtin/fsck.c:713
+#: builtin/fsck.c:695
 #, c-format
 msgid "notice: %s points to an unborn branch (%s)"
 msgstr "note : %s pointe sur une branche non-née (%s)"
 
-#: builtin/fsck.c:725
+#: builtin/fsck.c:707
 msgid "Checking cache tree"
 msgstr "Vérification de l'arbre cache"
 
-#: builtin/fsck.c:730
+#: builtin/fsck.c:712
 #, c-format
 msgid "%s: invalid sha1 pointer in cache-tree"
 msgstr "%s : pointer sha1 invalide dans l'arbre de cache"
 
-#: builtin/fsck.c:739
+#: builtin/fsck.c:721
 msgid "non-tree in cache-tree"
 msgstr "non-arbre dans l'arbre de cache"
 
-#: builtin/fsck.c:770
+#: builtin/fsck.c:752
 msgid "git fsck [<options>] [<object>...]"
 msgstr "git fsck [<options>] [<objet>...]"
 
-#: builtin/fsck.c:776
+#: builtin/fsck.c:758
 msgid "show unreachable objects"
 msgstr "afficher les objets inaccessibles"
 
-#: builtin/fsck.c:777
+#: builtin/fsck.c:759
 msgid "show dangling objects"
 msgstr "afficher les objets en suspens"
 
-#: builtin/fsck.c:778
+#: builtin/fsck.c:760
 msgid "report tags"
 msgstr "afficher les étiquettes"
 
-#: builtin/fsck.c:779
+#: builtin/fsck.c:761
 msgid "report root nodes"
 msgstr "signaler les nœuds racines"
 
-#: builtin/fsck.c:780
+#: builtin/fsck.c:762
 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:781
+#: builtin/fsck.c:763
 msgid "make reflogs head nodes (default)"
 msgstr "considérer les reflogs comme nœuds tête (par défaut)"
 
-#: builtin/fsck.c:782
+#: builtin/fsck.c:764
 msgid "also consider packs and alternate objects"
 msgstr "inspecter aussi les objets pack et alternatifs"
 
-#: builtin/fsck.c:783
+#: builtin/fsck.c:765
 msgid "check only connectivity"
 msgstr "ne vérifier que la connectivité"
 
-#: builtin/fsck.c:784
+#: builtin/fsck.c:766 builtin/mktag.c:78
 msgid "enable more strict checking"
 msgstr "activer une vérification plus strict"
 
-#: builtin/fsck.c:786
+#: builtin/fsck.c:768
 msgid "write dangling objects in .git/lost-found"
 msgstr "écrire les objets en suspens dans .git/lost-found"
 
-#: builtin/fsck.c:787 builtin/prune.c:134
+#: builtin/fsck.c:769 builtin/prune.c:134
 msgid "show progress"
 msgstr "afficher la progression"
 
-#: builtin/fsck.c:788
+#: builtin/fsck.c:770
 msgid "show verbose names for reachable objects"
 msgstr "afficher les noms étendus pour les objets inaccessibles"
 
-#: builtin/fsck.c:847 builtin/index-pack.c:261
+#: builtin/fsck.c:829 builtin/index-pack.c:261
 msgid "Checking objects"
 msgstr "Vérification des objets"
 
-#: builtin/fsck.c:875
+#: builtin/fsck.c:857
 #, c-format
 msgid "%s: object missing"
 msgstr "%s : objet manquant"
 
-#: builtin/fsck.c:886
+#: builtin/fsck.c:868
 #, c-format
 msgid "invalid parameter: expected sha1, got '%s'"
 msgstr "paramètre invalide : sha-1 attendu, '%s' trouvé"
@@ -15342,27 +15636,27 @@ msgstr "paramètre invalide : sha-1 attendu, '%s' trouvé"
 msgid "git gc [<options>]"
 msgstr "git gc [<options>]"
 
-#: builtin/gc.c:94
+#: builtin/gc.c:93
 #, c-format
 msgid "Failed to fstat %s: %s"
 msgstr "Échec du stat de %s : %s"
 
-#: builtin/gc.c:130
+#: builtin/gc.c:129
 #, c-format
 msgid "failed to parse '%s' value '%s'"
 msgstr "échec de l'analyse de '%s' valeur '%s'"
 
-#: builtin/gc.c:479 builtin/init-db.c:58
+#: builtin/gc.c:487 builtin/init-db.c:58
 #, c-format
 msgid "cannot stat '%s'"
 msgstr "impossible de faire un stat de '%s'"
 
-#: builtin/gc.c:488 builtin/notes.c:240 builtin/tag.c:530
+#: builtin/gc.c:496 builtin/notes.c:240 builtin/tag.c:562
 #, c-format
 msgid "cannot read '%s'"
 msgstr "impossible de lire '%s'"
 
-#: builtin/gc.c:495
+#: builtin/gc.c:503
 #, c-format
 msgid ""
 "The last gc run reported the following. Please correct the root cause\n"
@@ -15378,56 +15672,56 @@ msgstr ""
 "\n"
 "%s"
 
-#: builtin/gc.c:543
+#: builtin/gc.c:551
 msgid "prune unreferenced objects"
 msgstr "éliminer les objets non référencés"
 
-#: builtin/gc.c:545
+#: builtin/gc.c:553
 msgid "be more thorough (increased runtime)"
 msgstr "être plus consciencieux (durée de traitement allongée)"
 
-#: builtin/gc.c:546
+#: builtin/gc.c:554
 msgid "enable auto-gc mode"
 msgstr "activer le mode auto-gc"
 
-#: builtin/gc.c:549
+#: builtin/gc.c:557
 msgid "force running gc even if there may be another gc running"
 msgstr ""
 "forcer le lancement du ramasse-miettes même si un autre ramasse-miettes "
 "tourne déjà"
 
-#: builtin/gc.c:552
+#: builtin/gc.c:560
 msgid "repack all other packs except the largest pack"
 msgstr "recompacter tous les autres paquets excepté le plus gros paquet"
 
-#: builtin/gc.c:569
+#: builtin/gc.c:576
 #, c-format
 msgid "failed to parse gc.logexpiry value %s"
 msgstr "impossible d'analyser gc.logexpiry %s"
 
-#: builtin/gc.c:580
+#: builtin/gc.c:587
 #, c-format
 msgid "failed to parse prune expiry value %s"
 msgstr "impossible d'analyser la valeur d'expiration d'élagage %s"
 
-#: builtin/gc.c:600
+#: builtin/gc.c:607
 #, c-format
 msgid "Auto packing the repository in background for optimum performance.\n"
 msgstr ""
 "Compression automatique du dépôt en tâche de fond pour optimiser les "
 "performances.\n"
 
-#: builtin/gc.c:602
+#: builtin/gc.c:609
 #, 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:603
+#: builtin/gc.c:610
 #, 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:643
+#: builtin/gc.c:650
 #, c-format
 msgid ""
 "gc is already running on machine '%s' pid %<PRIuMAX> (use --force if not)"
@@ -15435,149 +15729,176 @@ 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:698
+#: builtin/gc.c:705
 msgid ""
 "There are too many unreachable loose objects; run 'git prune' to remove them."
 msgstr ""
 "Il y a trop d'objets seuls inaccessibles ; lancez 'git prune' pour les "
 "supprimer."
 
-#: builtin/gc.c:708
+#: builtin/gc.c:715
 msgid ""
 "git maintenance run [--auto] [--[no-]quiet] [--task=<task>] [--schedule]"
 msgstr ""
 "git maintenance run [--auto] [--[no-]quiet] [--task=<tâche>] [--schedule]"
 
-#: builtin/gc.c:738
+#: builtin/gc.c:745
 msgid "--no-schedule is not allowed"
 msgstr "--schedule n'est pas accepté"
 
-#: builtin/gc.c:743
+#: builtin/gc.c:750
 #, c-format
 msgid "unrecognized --schedule argument '%s'"
 msgstr "argument de --schedule non reconnu, '%s'"
 
-#: builtin/gc.c:862
+#: builtin/gc.c:869
 msgid "failed to write commit-graph"
 msgstr "échec de l'écriture du graphe de commits"
 
-#: builtin/gc.c:901
+#: builtin/gc.c:914
 msgid "failed to fill remotes"
 msgstr "échec du remplissage des distants"
 
-#: builtin/gc.c:1024
+#: builtin/gc.c:1037
 msgid "failed to start 'git pack-objects' process"
 msgstr "Impossible de démarrer le processus 'git pack-objects'"
 
-#: builtin/gc.c:1041
+#: builtin/gc.c:1054
 msgid "failed to finish 'git pack-objects' process"
 msgstr "Impossible de finir le processus 'git pack-objects'"
 
-#: builtin/gc.c:1093
+#: builtin/gc.c:1106
 msgid "failed to write multi-pack-index"
 msgstr "échec de l'écriture de l'index de multi-paquet"
 
-#: builtin/gc.c:1111
+#: builtin/gc.c:1124
 msgid "'git multi-pack-index expire' failed"
 msgstr "échec de 'git multi-pack-index expire'"
 
-#: builtin/gc.c:1172
+#: builtin/gc.c:1185
 msgid "'git multi-pack-index repack' failed"
 msgstr "échec de 'git multi-pack-index repack'"
 
-#: builtin/gc.c:1181
+#: builtin/gc.c:1194
 msgid ""
 "skipping incremental-repack task because core.multiPackIndex is disabled"
 msgstr ""
 "tâche incremental-repack ignorée parce que core.multiPackIndex est désactivé"
 
-#: builtin/gc.c:1279
+#: builtin/gc.c:1298
 #, c-format
 msgid "lock file '%s' exists, skipping maintenance"
 msgstr "le fichier verrou '%s' existe, pas de maintenance"
 
-#: builtin/gc.c:1309
+#: builtin/gc.c:1328
 #, c-format
 msgid "task '%s' failed"
 msgstr "échec de la tâche '%s'"
 
-#: builtin/gc.c:1389
+#: builtin/gc.c:1410
 #, c-format
 msgid "'%s' is not a valid task"
 msgstr "'%s' n'est pas une tâche valide"
 
-#: builtin/gc.c:1394
+#: builtin/gc.c:1415
 #, c-format
 msgid "task '%s' cannot be selected multiple times"
 msgstr "la tâche '%s' ne peut pas être sélectionnée plusieurs fois"
 
-#: builtin/gc.c:1409
+#: builtin/gc.c:1430
 msgid "run tasks based on the state of the repository"
 msgstr "lancer les tâches selon l'état du dépôt"
 
-#: builtin/gc.c:1410
+#: builtin/gc.c:1431
 msgid "frequency"
 msgstr "fréquence"
 
-#: builtin/gc.c:1411
+#: builtin/gc.c:1432
 msgid "run tasks based on frequency"
 msgstr "lancer les tâches selon une fréquence"
 
-#: builtin/gc.c:1414
+#: builtin/gc.c:1435
 msgid "do not report progress or other information over stderr"
 msgstr "ne pas afficher le progrès ou d'autres informations sur stderr"
 
-#: builtin/gc.c:1415
+#: builtin/gc.c:1436
 msgid "task"
 msgstr "tâche"
 
-#: builtin/gc.c:1416
+#: builtin/gc.c:1437
 msgid "run a specific task"
 msgstr "lancer une tâche spécifique"
 
-#: builtin/gc.c:1433
+#: builtin/gc.c:1454
 msgid "use at most one of --auto and --schedule=<frequency>"
 msgstr "--auto et --schedule=<fréquence> sont mutuellement exclusifs"
 
-#: builtin/gc.c:1467
+#: builtin/gc.c:1497
 msgid "failed to run 'git config'"
 msgstr "échec du lancement de 'git config'"
 
-#: builtin/gc.c:1512
-msgid "another process is scheduling background maintenance"
-msgstr ""
-"un autre processus est en train de programmer une maintenance en tâche de "
-"fond"
+#: builtin/gc.c:1562
+#, c-format
+msgid "failed to expand path '%s'"
+msgstr "impossible d'étendre le chemin '%s'"
+
+#: builtin/gc.c:1591
+msgid "failed to start launchctl"
+msgstr "échec de démarrage de launchctl"
+
+#: builtin/gc.c:1628
+#, c-format
+msgid "failed to create directories for '%s'"
+msgstr "échec de la création des répertoires pour '%s'"
+
+#: builtin/gc.c:1689
+#, c-format
+msgid "failed to bootstrap service %s"
+msgstr "échec de l'amorçage du service %s"
+
+#: builtin/gc.c:1760
+msgid "failed to create temp xml file"
+msgstr "échec de création du fichier temporaire xml"
+
+#: builtin/gc.c:1850
+msgid "failed to start schtasks"
+msgstr "échec du démarrage de schtasks"
 
-#: builtin/gc.c:1525
+#: builtin/gc.c:1894
 msgid "failed to run 'crontab -l'; your system might not support 'cron'"
 msgstr ""
 "echec du lancement de 'crontab -l' ; votre système n'a pas l'air de fournir "
 "'cron'"
 
-#: builtin/gc.c:1544
+#: builtin/gc.c:1911
 msgid "failed to run 'crontab'; your system might not support 'cron'"
 msgstr ""
 "echec du lancement de 'crontab' ; votre système n'a pas l'air de fournir "
 "'cron'"
 
-#: builtin/gc.c:1550
+#: builtin/gc.c:1915
 msgid "failed to open stdin of 'crontab'"
 msgstr "échec à l'ouverture de stdin de 'crontab'"
 
-#: builtin/gc.c:1592
+#: builtin/gc.c:1956
 msgid "'crontab' died"
 msgstr "'crontab' est mort"
 
-#: builtin/gc.c:1605
+#: builtin/gc.c:1990
+msgid "another process is scheduling background maintenance"
+msgstr ""
+"un autre processus est en train de programmer une maintenance en tâche de "
+"fond"
+
+#: builtin/gc.c:2009
 msgid "failed to add repo to global config"
 msgstr "échec de l'ajout du dépôt à la config globale"
 
-#: builtin/gc.c:1615
+#: builtin/gc.c:2019
 msgid "git maintenance <subcommand> [<options>]"
 msgstr "git maintenance <subcommand> [<options>]"
 
-#: builtin/gc.c:1634
+#: builtin/gc.c:2038
 #, c-format
 msgid "invalid subcommand: %s"
 msgstr "sous-commande invalide : %s"
@@ -15586,12 +15907,12 @@ msgstr "sous-commande invalide : %s"
 msgid "git grep [<options>] [-e] <pattern> [<rev>...] [[--] <path>...]"
 msgstr "git grep [<options>] [-e] <motif> [<révision>...] [[--] <chemin>...]"
 
-#: builtin/grep.c:225
+#: builtin/grep.c:223
 #, c-format
 msgid "grep: failed to create thread: %s"
 msgstr "grep : échec de création du fil: %s"
 
-#: builtin/grep.c:279
+#: builtin/grep.c:277
 #, c-format
 msgid "invalid number of threads specified (%d) for %s"
 msgstr "nombre de fils spécifié invalide (%d) pour %s"
@@ -15600,266 +15921,266 @@ msgstr "nombre de fils spécifié invalide (%d) pour %s"
 #. variable for tweaking threads, currently
 #. grep.threads
 #.
-#: builtin/grep.c:287 builtin/index-pack.c:1576 builtin/index-pack.c:1766
-#: builtin/pack-objects.c:2936
+#: builtin/grep.c:285 builtin/index-pack.c:1589 builtin/index-pack.c:1808
+#: builtin/pack-objects.c:2944
 #, c-format
 msgid "no threads support, ignoring %s"
 msgstr "pas de support des fils, ignore %s"
 
-#: builtin/grep.c:475 builtin/grep.c:600 builtin/grep.c:640
+#: builtin/grep.c:473 builtin/grep.c:601 builtin/grep.c:641
 #, c-format
 msgid "unable to read tree (%s)"
 msgstr "impossible de lire l'arbre (%s)"
 
-#: builtin/grep.c:655
+#: builtin/grep.c:656
 #, c-format
 msgid "unable to grep from object of type %s"
 msgstr "impossible de faire un grep sur un objet de type %s"
 
-#: builtin/grep.c:736
+#: builtin/grep.c:737
 #, c-format
 msgid "switch `%c' expects a numerical value"
 msgstr "l'option '%c' attend une valeur numérique"
 
-#: builtin/grep.c:835
+#: builtin/grep.c:836
 msgid "search in index instead of in the work tree"
 msgstr "rechercher dans l'index plutôt que dans la copie de travail"
 
-#: builtin/grep.c:837
+#: builtin/grep.c:838
 msgid "find in contents not managed by git"
 msgstr "rechercher dans les contenus non gérés par git"
 
-#: builtin/grep.c:839
+#: builtin/grep.c:840
 msgid "search in both tracked and untracked files"
 msgstr "rechercher dans les fichiers suivis et non-suivis"
 
-#: builtin/grep.c:841
+#: builtin/grep.c:842
 msgid "ignore files specified via '.gitignore'"
 msgstr "ignorer les fichiers spécifiés via '.gitignore'"
 
-#: builtin/grep.c:843
+#: builtin/grep.c:844
 msgid "recursively search in each submodule"
 msgstr "rechercher récursivement dans chaque sous-module"
 
-#: builtin/grep.c:846
+#: builtin/grep.c:847
 msgid "show non-matching lines"
 msgstr "afficher les lignes qui ne correspondent pas"
 
-#: builtin/grep.c:848
+#: builtin/grep.c:849
 msgid "case insensitive matching"
 msgstr "correspondance insensible à la casse"
 
-#: builtin/grep.c:850
+#: builtin/grep.c:851
 msgid "match patterns only at word boundaries"
 msgstr "rechercher les motifs aux séparateurs de mots"
 
-#: builtin/grep.c:852
+#: builtin/grep.c:853
 msgid "process binary files as text"
 msgstr "traiter les fichiers binaires comme texte"
 
-#: builtin/grep.c:854
+#: builtin/grep.c:855
 msgid "don't match patterns in binary files"
 msgstr "ne pas chercher les motifs dans les fichiers binaires"
 
-#: builtin/grep.c:857
+#: builtin/grep.c:858
 msgid "process binary files with textconv filters"
 msgstr "traiter les fichiers binaires avec les filtres textconv"
 
-#: builtin/grep.c:859
+#: builtin/grep.c:860
 msgid "search in subdirectories (default)"
 msgstr "rechercher dans les sous-répertoires (défaut)"
 
-#: builtin/grep.c:861
+#: builtin/grep.c:862
 msgid "descend at most <depth> levels"
 msgstr "descendre au plus de <profondeur> dans l'arborescence"
 
-#: builtin/grep.c:865
+#: builtin/grep.c:866
 msgid "use extended POSIX regular expressions"
 msgstr "utiliser des expressions régulières étendues POSIX"
 
-#: builtin/grep.c:868
+#: builtin/grep.c:869
 msgid "use basic POSIX regular expressions (default)"
 msgstr "utiliser des expressions régulières basiques POSIX (par défaut)"
 
-#: builtin/grep.c:871
+#: builtin/grep.c:872
 msgid "interpret patterns as fixed strings"
 msgstr "interpréter les motifs comme de chaînes fixes"
 
-#: builtin/grep.c:874
+#: builtin/grep.c:875
 msgid "use Perl-compatible regular expressions"
 msgstr "utiliser des expressions régulières compatibles avec Perl"
 
-#: builtin/grep.c:877
+#: builtin/grep.c:878
 msgid "show line numbers"
 msgstr "afficher les numéros de ligne"
 
-#: builtin/grep.c:878
+#: builtin/grep.c:879
 msgid "show column number of first match"
 msgstr "afficher le numéro de colonne de la première correspondance"
 
-#: builtin/grep.c:879
+#: builtin/grep.c:880
 msgid "don't show filenames"
 msgstr "ne pas pas afficher les noms de fichier"
 
-#: builtin/grep.c:880
+#: builtin/grep.c:881
 msgid "show filenames"
 msgstr "afficher les noms de fichier"
 
-#: builtin/grep.c:882
+#: builtin/grep.c:883
 msgid "show filenames relative to top directory"
 msgstr "afficher les noms de fichiers relativement au répertoire de base"
 
-#: builtin/grep.c:884
+#: builtin/grep.c:885
 msgid "show only filenames instead of matching lines"
 msgstr "n'afficher que les noms de fichiers au lieu des lignes correspondant"
 
-#: builtin/grep.c:886
+#: builtin/grep.c:887
 msgid "synonym for --files-with-matches"
 msgstr "synonyme pour --files-with-matches"
 
-#: builtin/grep.c:889
+#: builtin/grep.c:890
 msgid "show only the names of files without match"
 msgstr "n'afficher que les noms des fichiers sans correspondance"
 
-#: builtin/grep.c:891
+#: builtin/grep.c:892
 msgid "print NUL after filenames"
 msgstr "imprimer une caractère NUL après le noms de fichier"
 
-#: builtin/grep.c:894
+#: builtin/grep.c:895
 msgid "show only matching parts of a line"
 msgstr "n'afficher que les parties correspondantes d'une ligne"
 
-#: builtin/grep.c:896
+#: builtin/grep.c:897
 msgid "show the number of matches instead of matching lines"
 msgstr "afficher le nombre de correspondances au lieu des lignes correspondant"
 
-#: builtin/grep.c:897
+#: builtin/grep.c:898
 msgid "highlight matches"
 msgstr "mettre en évidence les correspondances"
 
-#: builtin/grep.c:899
+#: builtin/grep.c:900
 msgid "print empty line between matches from different files"
 msgstr ""
 "imprimer une ligne vide entre les correspondances de fichiers différents"
 
-#: builtin/grep.c:901
+#: builtin/grep.c:902
 msgid "show filename only once above matches from same file"
 msgstr ""
 "afficher le nom de fichier une fois au dessus des correspondances du même "
 "fichier"
 
-#: builtin/grep.c:904
+#: builtin/grep.c:905
 msgid "show <n> context lines before and after matches"
 msgstr "afficher <n> lignes de contexte avant et après les correspondances"
 
-#: builtin/grep.c:907
+#: builtin/grep.c:908
 msgid "show <n> context lines before matches"
 msgstr "afficher <n> lignes de contexte avant les correspondances"
 
-#: builtin/grep.c:909
+#: builtin/grep.c:910
 msgid "show <n> context lines after matches"
 msgstr "afficher <n> lignes de contexte après les correspondances"
 
-#: builtin/grep.c:911
+#: builtin/grep.c:912
 msgid "use <n> worker threads"
 msgstr "utiliser <n> fils de travail"
 
-#: builtin/grep.c:912
+#: builtin/grep.c:913
 msgid "shortcut for -C NUM"
 msgstr "raccourci pour -C NUM"
 
-#: builtin/grep.c:915
+#: builtin/grep.c:916
 msgid "show a line with the function name before matches"
 msgstr ""
 "afficher une ligne avec le nom de la fonction avant les correspondances"
 
-#: builtin/grep.c:917
+#: builtin/grep.c:918
 msgid "show the surrounding function"
 msgstr "afficher la fonction contenante"
 
-#: builtin/grep.c:920
+#: builtin/grep.c:921
 msgid "read patterns from file"
 msgstr "lire les motifs depuis fichier"
 
-#: builtin/grep.c:922
+#: builtin/grep.c:923
 msgid "match <pattern>"
 msgstr "rechercher <motif>"
 
-#: builtin/grep.c:924
+#: builtin/grep.c:925
 msgid "combine patterns specified with -e"
 msgstr "combiner les motifs spécifiés par -e"
 
-#: builtin/grep.c:936
+#: builtin/grep.c:937
 msgid "indicate hit with exit status without output"
 msgstr ""
 "indiquer des correspondances avec le code de sortie mais sans rien afficher"
 
-#: builtin/grep.c:938
+#: builtin/grep.c:939
 msgid "show only matches from files that match all patterns"
 msgstr ""
 "n'afficher que les correspondances de fichiers qui correspondent à tous les "
 "motifs"
 
-#: builtin/grep.c:940
-msgid "show parse tree for grep expression"
-msgstr "afficher l'arbre d'analyse pour le motif grep"
-
-#: builtin/grep.c:944
+#: builtin/grep.c:942
 msgid "pager"
 msgstr "pagineur"
 
-#: builtin/grep.c:944
+#: builtin/grep.c:942
 msgid "show matching files in the pager"
 msgstr "afficher les fichiers correspondant dans le pagineur"
 
-#: builtin/grep.c:948
+#: builtin/grep.c:946
 msgid "allow calling of grep(1) (ignored by this build)"
 msgstr "permettre l'appel de grep(1) (ignoré par ce build)"
 
-#: builtin/grep.c:1014
+#: builtin/grep.c:1012
 msgid "no pattern given"
 msgstr "aucun motif fourni"
 
-#: builtin/grep.c:1050
+#: builtin/grep.c:1048
 msgid "--no-index or --untracked cannot be used with revs"
 msgstr ""
 "--no-index ou --untracked ne peuvent pas être utilisés avec des révisions"
 
-#: builtin/grep.c:1058
+#: builtin/grep.c:1056
 #, c-format
 msgid "unable to resolve revision: %s"
 msgstr "impossible de résoudre la révision : %s"
 
-#: builtin/grep.c:1088
+#: builtin/grep.c:1086
 msgid "--untracked not supported with --recurse-submodules"
 msgstr "--untracked non supportée avec --recurse-submodules"
 
-#: builtin/grep.c:1092
+#: builtin/grep.c:1090
 msgid "invalid option combination, ignoring --threads"
 msgstr "option de combinaison invalide, ignore --threads"
 
-#: builtin/grep.c:1095 builtin/pack-objects.c:3655
+#: builtin/grep.c:1093 builtin/pack-objects.c:3672
 msgid "no threads support, ignoring --threads"
 msgstr "pas de support des fils, ignore --threads"
 
-#: builtin/grep.c:1098 builtin/index-pack.c:1573 builtin/pack-objects.c:2933
+#: builtin/grep.c:1096 builtin/index-pack.c:1586 builtin/pack-objects.c:2941
 #, c-format
 msgid "invalid number of threads specified (%d)"
 msgstr "nombre de fils spécifié invalide (%d)"
 
-#: builtin/grep.c:1132
+#: builtin/grep.c:1130
 msgid "--open-files-in-pager only works on the worktree"
 msgstr "--open-files-in-pager ne fonctionne que sur la copie de travail"
 
-#: builtin/grep.c:1158
+#: builtin/grep.c:1156
 msgid "--cached or --untracked cannot be used with --no-index"
 msgstr "--cached ou --untracked ne peuvent pas être utilisés avec --no-index"
 
-#: builtin/grep.c:1164
+#: builtin/grep.c:1159
+msgid "--untracked cannot be used with --cached"
+msgstr "--untracked ne peut pas être utilisé avec --cached"
+
+#: builtin/grep.c:1165
 msgid "--[no-]exclude-standard cannot be used for tracked contents"
 msgstr "--[no-]exclude-standard ne peut pas être utilisé avec du contenu suivi"
 
-#: builtin/grep.c:1172
+#: builtin/grep.c:1173
 msgid "both --cached and trees are given"
 msgstr "--cached et des arbres sont fournis en même temps"
 
@@ -15992,12 +16313,12 @@ msgstr "aucun visualiseur de manuel n'a pris en charge la demande"
 msgid "no info viewer handled the request"
 msgstr "aucun visualiseur de 'info' n'a pris en charge la demande"
 
-#: builtin/help.c:520 builtin/help.c:531 git.c:337
+#: builtin/help.c:520 builtin/help.c:531 git.c:340
 #, c-format
 msgid "'%s' is aliased to '%s'"
 msgstr "'%s' est un alias de '%s'"
 
-#: builtin/help.c:534 git.c:369
+#: builtin/help.c:534 git.c:372
 #, c-format
 msgid "bad alias.%s string: %s"
 msgstr "Mauvais chaîne alias.%s : %s"
@@ -16045,7 +16366,7 @@ msgstr "erreur de lecture sur l'entrée"
 msgid "used more bytes than were available"
 msgstr "plus d'octets utilisés que disponibles"
 
-#: builtin/index-pack.c:324 builtin/pack-objects.c:619
+#: builtin/index-pack.c:324 builtin/pack-objects.c:624
 msgid "pack too large for current definition of off_t"
 msgstr "le paquet est trop grand pour la définition actuelle de off_t"
 
@@ -16053,7 +16374,7 @@ msgstr "le paquet est trop grand pour la définition actuelle de off_t"
 msgid "pack exceeds maximum allowed size"
 msgstr "le paquet dépasse la taille maximale permise"
 
-#: builtin/index-pack.c:342 builtin/repack.c:286
+#: builtin/index-pack.c:342
 #, c-format
 msgid "unable to create '%s'"
 msgstr "impossible de créer '%s'"
@@ -16178,7 +16499,7 @@ msgstr "confusion extrême dans parse_pack_objects()"
 msgid "Resolving deltas"
 msgstr "Résolution des deltas"
 
-#: builtin/index-pack.c:1249 builtin/pack-objects.c:2697
+#: builtin/index-pack.c:1249 builtin/pack-objects.c:2707
 #, c-format
 msgid "unable to create thread: %s"
 msgstr "impossible de créer le fil : %s"
@@ -16217,10 +16538,10 @@ msgstr "impossible de compresser l'objet ajouté (%d)"
 msgid "local object %s is corrupt"
 msgstr "l'objet local %s est corrompu"
 
-#: builtin/index-pack.c:1444
+#: builtin/index-pack.c:1445
 #, c-format
-msgid "packfile name '%s' does not end with '.pack'"
-msgstr "le nom de fichier paquet '%s' ne se termine pas par '.pack'"
+msgid "packfile name '%s' does not end with '.%s'"
+msgstr "le nom de fichier paquet '%s' ne se termine pas par '.%s'"
 
 #: builtin/index-pack.c:1469
 #, c-format
@@ -16232,79 +16553,83 @@ msgstr "impossible d'écrire le fichier %s '%s'"
 msgid "cannot close written %s file '%s'"
 msgstr "impossible de fermer le fichier %s écrit '%s'"
 
-#: builtin/index-pack.c:1501
+#: builtin/index-pack.c:1503
 msgid "error while closing pack file"
 msgstr "erreur en fermeture du fichier paquet"
 
-#: builtin/index-pack.c:1515
+#: builtin/index-pack.c:1517
 msgid "cannot store pack file"
 msgstr "impossible de stocker le fichier paquet"
 
-#: builtin/index-pack.c:1523
+#: builtin/index-pack.c:1525
 msgid "cannot store index file"
 msgstr "impossible de stocker le fichier d'index"
 
-#: builtin/index-pack.c:1567 builtin/pack-objects.c:2944
+#: builtin/index-pack.c:1534
+msgid "cannot store reverse index file"
+msgstr "impossible de stocker le fichier d'index inversé"
+
+#: builtin/index-pack.c:1580 builtin/pack-objects.c:2952
 #, c-format
 msgid "bad pack.indexversion=%<PRIu32>"
 msgstr "mauvais pack.indexversion=%<PRIu32>"
 
-#: builtin/index-pack.c:1631
+#: builtin/index-pack.c:1650
 #, c-format
 msgid "Cannot open existing pack file '%s'"
 msgstr "Impossible d'ouvrir le fichier paquet existant '%s'"
 
-#: builtin/index-pack.c:1633
+#: builtin/index-pack.c:1652
 #, 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:1681
+#: builtin/index-pack.c:1700
 #, 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:1688
+#: builtin/index-pack.c:1707
 #, 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:1728
+#: builtin/index-pack.c:1765
 msgid "Cannot come back to cwd"
 msgstr "Impossible de revenir au répertoire de travail courant"
 
-#: builtin/index-pack.c:1777 builtin/index-pack.c:1780
-#: builtin/index-pack.c:1796 builtin/index-pack.c:1800
+#: builtin/index-pack.c:1819 builtin/index-pack.c:1822
+#: builtin/index-pack.c:1838 builtin/index-pack.c:1842
 #, c-format
 msgid "bad %s"
 msgstr "mauvais %s"
 
-#: builtin/index-pack.c:1806 builtin/init-db.c:392 builtin/init-db.c:625
+#: builtin/index-pack.c:1848 builtin/init-db.c:392 builtin/init-db.c:625
 #, c-format
 msgid "unknown hash algorithm '%s'"
 msgstr "algorithme d'empreinte inconnu '%s'"
 
-#: builtin/index-pack.c:1821
+#: builtin/index-pack.c:1867
 msgid "--fix-thin cannot be used without --stdin"
 msgstr "--fix-thin ne peut pas être utilisé sans --stdin"
 
-#: builtin/index-pack.c:1823
+#: builtin/index-pack.c:1869
 msgid "--stdin requires a git repository"
 msgstr "--stdin requiert un dépôt git"
 
-#: builtin/index-pack.c:1825
+#: builtin/index-pack.c:1871
 msgid "--object-format cannot be used with --stdin"
 msgstr "--object-format ne peut pas être utilisé avec --stdin"
 
-#: builtin/index-pack.c:1831
+#: builtin/index-pack.c:1886
 msgid "--verify with no packfile name given"
 msgstr "--verify sans nom de fichier paquet donné"
 
-#: builtin/index-pack.c:1892 builtin/unpack-objects.c:582
+#: builtin/index-pack.c:1956 builtin/unpack-objects.c:582
 msgid "fsck error in pack objects"
 msgstr "erreur de fsck dans les objets paquets"
 
@@ -16521,131 +16846,131 @@ msgstr "--trailer n'a aucune signification avec --only-input"
 msgid "no input file given for in-place editing"
 msgstr "aucun fichier en entrée pour l'éditon sur place"
 
-#: builtin/log.c:58
+#: builtin/log.c:59
 msgid "git log [<options>] [<revision-range>] [[--] <path>...]"
 msgstr "git log [<options>] [<plage de révisions>] [[--] <chemin>...]"
 
-#: builtin/log.c:59
+#: builtin/log.c:60
 msgid "git show [<options>] <object>..."
 msgstr "git show [<options>] <objet>..."
 
-#: builtin/log.c:112
+#: builtin/log.c:113
 #, c-format
 msgid "invalid --decorate option: %s"
 msgstr "option --decorate invalide : %s"
 
-#: builtin/log.c:179
+#: builtin/log.c:180
 msgid "show source"
 msgstr "afficher la source"
 
-#: builtin/log.c:180
-msgid "Use mail map file"
-msgstr "Utiliser le fichier de correspondance de mail"
+#: builtin/log.c:181
+msgid "use mail map file"
+msgstr "utiliser le fichier de correspondance de mail"
 
-#: builtin/log.c:183
+#: builtin/log.c:184
 msgid "only decorate refs that match <pattern>"
 msgstr "décorer seulement les références correspondant à <motif>"
 
-#: builtin/log.c:185
+#: builtin/log.c:186
 msgid "do not decorate refs that match <pattern>"
 msgstr "ne pas décorer les références correspondant à <motif>"
 
-#: builtin/log.c:186
+#: builtin/log.c:187
 msgid "decorate options"
 msgstr "décorer les options"
 
-#: builtin/log.c:189
+#: builtin/log.c:190
 msgid ""
-"Trace the evolution of line range <start>,<end> or function :<funcname> in "
+"trace the evolution of line range <start>,<end> or function :<funcname> in "
 "<file>"
 msgstr ""
 "tracer l'évolution d'une plage <début>,<fin> ou d'une fonction <nom-de-"
 "fonction> dans <fichier>"
 
-#: builtin/log.c:212
+#: builtin/log.c:213
 msgid "-L<range>:<file> cannot be used with pathspec"
 msgstr ""
 "-L<plage>:<fichier> ne peut pas être utilisé avec une spécificateur de chemin"
 
-#: builtin/log.c:302
+#: builtin/log.c:303
 #, c-format
 msgid "Final output: %d %s\n"
 msgstr "Sortie finale : %d %s\n"
 
-#: builtin/log.c:564
+#: builtin/log.c:566
 #, c-format
 msgid "git show %s: bad file"
 msgstr "git show %s : fichier incorrect"
 
-#: builtin/log.c:579 builtin/log.c:674
+#: builtin/log.c:581 builtin/log.c:671
 #, c-format
 msgid "could not read object %s"
 msgstr "impossible de lire l'objet %s"
 
-#: builtin/log.c:699
+#: builtin/log.c:696
 #, c-format
 msgid "unknown type: %d"
 msgstr "type inconnu : %d"
 
-#: builtin/log.c:848
+#: builtin/log.c:841
 #, c-format
 msgid "%s: invalid cover from description mode"
 msgstr "%s : couverture invalide pour le mode de description"
 
-#: builtin/log.c:855
+#: builtin/log.c:848
 msgid "format.headers without value"
 msgstr "format.headers sans valeur"
 
-#: builtin/log.c:984
+#: builtin/log.c:977
 #, c-format
 msgid "cannot open patch file %s"
 msgstr "impossible d'ouvrir le fichier correctif %s"
 
-#: builtin/log.c:1001
+#: builtin/log.c:994
 msgid "need exactly one range"
 msgstr "exactement une plage nécessaire"
 
-#: builtin/log.c:1011
+#: builtin/log.c:1004
 msgid "not a range"
 msgstr "ceci n'est pas une plage"
 
-#: builtin/log.c:1175
+#: builtin/log.c:1168
 msgid "cover letter needs email format"
 msgstr "la lettre de motivation doit être au format courriel"
 
-#: builtin/log.c:1181
+#: builtin/log.c:1174
 msgid "failed to create cover-letter file"
 msgstr "échec de création du fichier de lettre de motivation"
 
-#: builtin/log.c:1262
+#: builtin/log.c:1261
 #, c-format
 msgid "insane in-reply-to: %s"
 msgstr "in-reply-to aberrant : %s"
 
-#: builtin/log.c:1289
+#: builtin/log.c:1288
 msgid "git format-patch [<options>] [<since> | <revision-range>]"
 msgstr "git format-patch [<options>] [<depuis> | <plage de révisions>]"
 
-#: builtin/log.c:1347
+#: builtin/log.c:1346
 msgid "two output directories?"
 msgstr "deux répertoires de sortie ?"
 
-#: builtin/log.c:1498 builtin/log.c:2318 builtin/log.c:2320 builtin/log.c:2332
+#: builtin/log.c:1497 builtin/log.c:2317 builtin/log.c:2319 builtin/log.c:2331
 #, c-format
 msgid "unknown commit %s"
 msgstr "commit inconnu %s"
 
-#: builtin/log.c:1509 builtin/replace.c:58 builtin/replace.c:207
+#: builtin/log.c:1508 builtin/replace.c:58 builtin/replace.c:207
 #: builtin/replace.c:210
 #, c-format
 msgid "failed to resolve '%s' as a valid ref"
 msgstr "échec à résoudre '%s' comme une référence valide"
 
-#: builtin/log.c:1518
+#: builtin/log.c:1517
 msgid "could not find exact merge base"
 msgstr "impossible de trouver la base de fusion exacte"
 
-#: builtin/log.c:1528
+#: builtin/log.c:1527
 msgid ""
 "failed to get upstream, if you want to record base commit automatically,\n"
 "please use git branch --set-upstream-to to track a remote branch.\n"
@@ -16658,297 +16983,297 @@ msgstr ""
 "Ou vous pouvez spécifier le commit de base par --base=<id-du-commit-de-base> "
 "manuellement"
 
-#: builtin/log.c:1551
+#: builtin/log.c:1550
 msgid "failed to find exact merge base"
 msgstr "échec à trouver la base de fusion exacte"
 
-#: builtin/log.c:1568
+#: builtin/log.c:1567
 msgid "base commit should be the ancestor of revision list"
 msgstr "le commit de base devrait être l'ancêtre de la liste de révisions"
 
-#: builtin/log.c:1578
+#: builtin/log.c:1577
 msgid "base commit shouldn't be in revision list"
 msgstr "le commit de base ne devrait pas faire partie de la liste de révisions"
 
-#: builtin/log.c:1636
+#: builtin/log.c:1635
 msgid "cannot get patch id"
 msgstr "impossible d'obtenir l'id du patch"
 
-#: builtin/log.c:1693
+#: builtin/log.c:1692
 msgid "failed to infer range-diff origin of current series"
 msgstr ""
 "échec d'inférence de l'origine de différence d'intervalles de la série "
 "actuelle"
 
-#: builtin/log.c:1695
+#: builtin/log.c:1694
 #, c-format
 msgid "using '%s' as range-diff origin of current series"
 msgstr ""
 "utilisation de '%s' comme une différence d'intervalle pour la série actuelle"
 
-#: builtin/log.c:1739
+#: builtin/log.c:1738
 msgid "use [PATCH n/m] even with a single patch"
 msgstr "utiliser [PATCH n/m] même avec un patch unique"
 
-#: builtin/log.c:1742
+#: builtin/log.c:1741
 msgid "use [PATCH] even with multiple patches"
 msgstr "utiliser [PATCH] même avec des patchs multiples"
 
-#: builtin/log.c:1746
+#: builtin/log.c:1745
 msgid "print patches to standard out"
 msgstr "afficher les patchs sur la sortie standard"
 
-#: builtin/log.c:1748
+#: builtin/log.c:1747
 msgid "generate a cover letter"
 msgstr "générer une lettre de motivation"
 
-#: builtin/log.c:1750
+#: builtin/log.c:1749
 msgid "use simple number sequence for output file names"
 msgstr ""
 "utiliser une séquence simple de nombres pour les nom des fichiers de sortie"
 
-#: builtin/log.c:1751
+#: builtin/log.c:1750
 msgid "sfx"
 msgstr "sfx"
 
-#: builtin/log.c:1752
+#: builtin/log.c:1751
 msgid "use <sfx> instead of '.patch'"
 msgstr "utiliser <sfx> au lieu de '.patch'"
 
-#: builtin/log.c:1754
+#: builtin/log.c:1753
 msgid "start numbering patches at <n> instead of 1"
 msgstr "démarrer la numérotation des patchs à <n> au lieu de 1"
 
-#: builtin/log.c:1756
+#: builtin/log.c:1755
 msgid "mark the series as Nth re-roll"
 msgstr "marquer la série comme une Nième réédition"
 
-#: builtin/log.c:1758
+#: builtin/log.c:1757
 msgid "max length of output filename"
 msgstr "taille maximum du nom du fichier de sortie"
 
-#: builtin/log.c:1760
-msgid "Use [RFC PATCH] instead of [PATCH]"
+#: builtin/log.c:1759
+msgid "use [RFC PATCH] instead of [PATCH]"
 msgstr "utiliser [RFC PATCH] au lieu de [PATCH]"
 
-#: builtin/log.c:1763
+#: builtin/log.c:1762
 msgid "cover-from-description-mode"
 msgstr "cover-from-description-mode"
 
-#: builtin/log.c:1764
+#: builtin/log.c:1763
 msgid "generate parts of a cover letter based on a branch's description"
 msgstr ""
 "générer des parties de la lettre d'introduction à partir de la description "
 "de la branche"
 
-#: builtin/log.c:1766
-msgid "Use [<prefix>] instead of [PATCH]"
+#: builtin/log.c:1765
+msgid "use [<prefix>] instead of [PATCH]"
 msgstr "utiliser [<préfixe>] au lieu de [PATCH]"
 
-#: builtin/log.c:1769
+#: builtin/log.c:1768
 msgid "store resulting files in <dir>"
 msgstr "stocker les fichiers résultats dans <répertoire>"
 
-#: builtin/log.c:1772
+#: builtin/log.c:1771
 msgid "don't strip/add [PATCH]"
 msgstr "ne pas retirer/ajouter [PATCH]"
 
-#: builtin/log.c:1775
+#: builtin/log.c:1774
 msgid "don't output binary diffs"
 msgstr "ne pas imprimer les diffs binaires"
 
-#: builtin/log.c:1777
+#: builtin/log.c:1776
 msgid "output all-zero hash in From header"
 msgstr "écrire une empreinte à zéro dans l'entête From"
 
-#: builtin/log.c:1779
+#: builtin/log.c:1778
 msgid "don't include a patch matching a commit upstream"
 msgstr "ne pas inclure un patch correspondant à un commit amont"
 
-#: builtin/log.c:1781
+#: builtin/log.c:1780
 msgid "show patch format instead of default (patch + stat)"
 msgstr "afficher le format du patch au lieu du défaut (patch + stat)"
 
-#: builtin/log.c:1783
+#: builtin/log.c:1782
 msgid "Messaging"
 msgstr "Communication"
 
-#: builtin/log.c:1784
+#: builtin/log.c:1783
 msgid "header"
 msgstr "en-tête"
 
-#: builtin/log.c:1785
+#: builtin/log.c:1784
 msgid "add email header"
 msgstr "ajouter l'en-tête de courriel"
 
-#: builtin/log.c:1786 builtin/log.c:1787
+#: builtin/log.c:1785 builtin/log.c:1786
 msgid "email"
 msgstr "courriel"
 
-#: builtin/log.c:1786
+#: builtin/log.c:1785
 msgid "add To: header"
 msgstr "ajouter l'en-tête \"To:\""
 
-#: builtin/log.c:1787
+#: builtin/log.c:1786
 msgid "add Cc: header"
 msgstr "ajouter l'en-tête \"Cc:\""
 
-#: builtin/log.c:1788
+#: builtin/log.c:1787
 msgid "ident"
 msgstr "ident"
 
-#: builtin/log.c:1789
+#: builtin/log.c:1788
 msgid "set From address to <ident> (or committer ident if absent)"
 msgstr ""
 "renseigner l'adresse From à <ident> (ou à l'ident du validateur si absent)"
 
-#: builtin/log.c:1791
+#: builtin/log.c:1790
 msgid "message-id"
 msgstr "id-message"
 
-#: builtin/log.c:1792
+#: builtin/log.c:1791
 msgid "make first mail a reply to <message-id>"
 msgstr "répondre dans le premier message à <id-message>"
 
-#: builtin/log.c:1793 builtin/log.c:1796
+#: builtin/log.c:1792 builtin/log.c:1795
 msgid "boundary"
 msgstr "limite"
 
-#: builtin/log.c:1794
+#: builtin/log.c:1793
 msgid "attach the patch"
 msgstr "attacher le patch"
 
-#: builtin/log.c:1797
+#: builtin/log.c:1796
 msgid "inline the patch"
 msgstr "patch à l'intérieur"
 
-#: builtin/log.c:1801
+#: builtin/log.c:1800
 msgid "enable message threading, styles: shallow, deep"
 msgstr ""
 "activer l'enfilage de message, styles : shallow (superficiel), deep (profond)"
 
-#: builtin/log.c:1803
+#: builtin/log.c:1802
 msgid "signature"
 msgstr "signature"
 
-#: builtin/log.c:1804
+#: builtin/log.c:1803
 msgid "add a signature"
 msgstr "ajouter une signature"
 
-#: builtin/log.c:1805
+#: builtin/log.c:1804
 msgid "base-commit"
 msgstr "commit-de-base"
 
-#: builtin/log.c:1806
+#: builtin/log.c:1805
 msgid "add prerequisite tree info to the patch series"
 msgstr "Ajouter un arbre prérequis à la série de patchs"
 
-#: builtin/log.c:1809
+#: builtin/log.c:1808
 msgid "add a signature from a file"
 msgstr "ajouter une signature depuis un fichier"
 
-#: builtin/log.c:1810
+#: builtin/log.c:1809
 msgid "don't print the patch filenames"
 msgstr "ne pas afficher les noms de fichiers des patchs"
 
-#: builtin/log.c:1812
+#: builtin/log.c:1811
 msgid "show progress while generating patches"
 msgstr ""
 "afficher la barre de progression durant la phase de génération des patchs"
 
-#: builtin/log.c:1814
+#: builtin/log.c:1813
 msgid "show changes against <rev> in cover letter or single patch"
 msgstr ""
 "afficher les modifications par rapport à <rév> dans la première page ou une "
 "rustine"
 
-#: builtin/log.c:1817
+#: builtin/log.c:1816
 msgid "show changes against <refspec> in cover letter or single patch"
 msgstr ""
 "afficher les modifications par rapport à <refspec> dans la première page ou "
 "une rustine"
 
-#: builtin/log.c:1819
+#: builtin/log.c:1818
 msgid "percentage by which creation is weighted"
 msgstr "pourcentage par lequel la création est pondérée"
 
-#: builtin/log.c:1905
+#: builtin/log.c:1904
 #, c-format
 msgid "invalid ident line: %s"
 msgstr "ligne d'identification invalide : %s"
 
-#: builtin/log.c:1920
+#: builtin/log.c:1919
 msgid "-n and -k are mutually exclusive"
 msgstr "-n et -k sont mutuellement exclusifs"
 
-#: builtin/log.c:1922
+#: builtin/log.c:1921
 msgid "--subject-prefix/--rfc and -k are mutually exclusive"
 msgstr "--subject-prefix/--rfc et -k sont mutuellement exclusifs"
 
-#: builtin/log.c:1930
+#: builtin/log.c:1929
 msgid "--name-only does not make sense"
 msgstr "--name-only n'a pas de sens"
 
-#: builtin/log.c:1932
+#: builtin/log.c:1931
 msgid "--name-status does not make sense"
 msgstr "--name-status n'a pas de sens"
 
-#: builtin/log.c:1934
+#: builtin/log.c:1933
 msgid "--check does not make sense"
 msgstr "--check n'a pas de sens"
 
-#: builtin/log.c:1956
+#: builtin/log.c:1955
 msgid "--stdout, --output, and --output-directory are mutually exclusive"
 msgstr "--stdout, --output, et --output-directory sont mutuellement exclusifs"
 
-#: builtin/log.c:2079
+#: builtin/log.c:2078
 msgid "--interdiff requires --cover-letter or single patch"
 msgstr "--interdiff requiert --cover-letter ou une rustine unique"
 
-#: builtin/log.c:2083
+#: builtin/log.c:2082
 msgid "Interdiff:"
 msgstr "Interdiff :"
 
-#: builtin/log.c:2084
+#: builtin/log.c:2083
 #, c-format
 msgid "Interdiff against v%d:"
 msgstr "Interdiff contre v%d :"
 
-#: builtin/log.c:2090
+#: builtin/log.c:2089
 msgid "--creation-factor requires --range-diff"
 msgstr "--creation-factor requiert --range-diff"
 
-#: builtin/log.c:2094
+#: builtin/log.c:2093
 msgid "--range-diff requires --cover-letter or single patch"
 msgstr "--range-diff requiert --cover-letter ou une rustine unique"
 
-#: builtin/log.c:2102
+#: builtin/log.c:2101
 msgid "Range-diff:"
 msgstr "Diff-intervalle :"
 
-#: builtin/log.c:2103
+#: builtin/log.c:2102
 #, c-format
 msgid "Range-diff against v%d:"
 msgstr "Diff-intervalle contre v%d :"
 
-#: builtin/log.c:2114
+#: builtin/log.c:2113
 #, c-format
 msgid "unable to read signature file '%s'"
 msgstr "lecture du fichier de signature '%s' impossible"
 
-#: builtin/log.c:2150
+#: builtin/log.c:2149
 msgid "Generating patches"
 msgstr "Génération des patchs"
 
-#: builtin/log.c:2194
+#: builtin/log.c:2193
 msgid "failed to create output files"
 msgstr "échec de création des fichiers en sortie"
 
-#: builtin/log.c:2253
+#: builtin/log.c:2252
 msgid "git cherry [-v] [<upstream> [<head> [<limit>]]]"
 msgstr "git cherry [-v] [<branche_amont> [<head> [<limite>]]]"
 
-#: builtin/log.c:2307
+#: builtin/log.c:2306
 #, c-format
 msgid ""
 "Could not find a tracked remote branch, please specify <upstream> manually.\n"
@@ -16956,113 +17281,117 @@ msgstr ""
 "Impossible de trouver une branche distante suivie, merci de spécifier "
 "<branche_amont> manuellement.\n"
 
-#: builtin/ls-files.c:471
+#: builtin/ls-files.c:486
 msgid "git ls-files [<options>] [<file>...]"
 msgstr "git ls-files [<options>] [<fichier>...]"
 
-#: builtin/ls-files.c:527
+#: builtin/ls-files.c:542
 msgid "identify the file status with tags"
 msgstr "identifier l'état de fichier avec les étiquettes"
 
-#: builtin/ls-files.c:529
+#: builtin/ls-files.c:544
 msgid "use lowercase letters for 'assume unchanged' files"
 msgstr "utiliser des minuscules pour les fichiers 'assumés inchangés'"
 
-#: builtin/ls-files.c:531
+#: builtin/ls-files.c:546
 msgid "use lowercase letters for 'fsmonitor clean' files"
 msgstr "utiliser des minuscules pour les fichiers 'fsmonitor clean'"
 
-#: builtin/ls-files.c:533
+#: builtin/ls-files.c:548
 msgid "show cached files in the output (default)"
 msgstr "afficher les fichiers mis en cache dans la sortie (défaut)"
 
-#: builtin/ls-files.c:535
+#: builtin/ls-files.c:550
 msgid "show deleted files in the output"
 msgstr "afficher les fichiers supprimés dans la sortie"
 
-#: builtin/ls-files.c:537
+#: builtin/ls-files.c:552
 msgid "show modified files in the output"
 msgstr "afficher les fichiers modifiés dans la sortie"
 
-#: builtin/ls-files.c:539
+#: builtin/ls-files.c:554
 msgid "show other files in the output"
 msgstr "afficher les autres fichiers dans la sortie"
 
-#: builtin/ls-files.c:541
+#: builtin/ls-files.c:556
 msgid "show ignored files in the output"
 msgstr "afficher les fichiers ignorés dans la sortie"
 
-#: builtin/ls-files.c:544
+#: builtin/ls-files.c:559
 msgid "show staged contents' object name in the output"
 msgstr "afficher les nom des objets indexés dans la sortie"
 
-#: builtin/ls-files.c:546
+#: builtin/ls-files.c:561
 msgid "show files on the filesystem that need to be removed"
 msgstr ""
 "afficher les fichiers du système de fichiers qui ont besoin d'être supprimés"
 
-#: builtin/ls-files.c:548
+#: builtin/ls-files.c:563
 msgid "show 'other' directories' names only"
 msgstr "afficher seulement les noms des répertoires 'other'"
 
-#: builtin/ls-files.c:550
+#: builtin/ls-files.c:565
 msgid "show line endings of files"
 msgstr "afficher les fins de lignes des fichiers"
 
-#: builtin/ls-files.c:552
+#: builtin/ls-files.c:567
 msgid "don't show empty directories"
 msgstr "ne pas afficher les répertoires vides"
 
-#: builtin/ls-files.c:555
+#: builtin/ls-files.c:570
 msgid "show unmerged files in the output"
 msgstr "afficher les fichiers non fusionnés dans la sortie"
 
-#: builtin/ls-files.c:557
+#: builtin/ls-files.c:572
 msgid "show resolve-undo information"
 msgstr "afficher l'information resolv-undo"
 
-#: builtin/ls-files.c:559
+#: builtin/ls-files.c:574
 msgid "skip files matching pattern"
 msgstr "sauter les fichiers correspondant au motif"
 
-#: builtin/ls-files.c:562
+#: builtin/ls-files.c:577
 msgid "exclude patterns are read from <file>"
 msgstr "les motifs d'exclusion sont lus depuis <fichier>"
 
-#: builtin/ls-files.c:565
+#: builtin/ls-files.c:580
 msgid "read additional per-directory exclude patterns in <file>"
 msgstr "lire des motifs d'exclusion additionnels par répertoire dans <fichier>"
 
-#: builtin/ls-files.c:567
+#: builtin/ls-files.c:582
 msgid "add the standard git exclusions"
 msgstr "ajouter les exclusions git standard"
 
-#: builtin/ls-files.c:571
+#: builtin/ls-files.c:586
 msgid "make the output relative to the project top directory"
 msgstr "afficher en relatif par rapport au répertoire racine du projet"
 
-#: builtin/ls-files.c:574
+#: builtin/ls-files.c:589
 msgid "recurse through submodules"
 msgstr "parcourir récursivement les sous-modules"
 
-#: builtin/ls-files.c:576
+#: builtin/ls-files.c:591
 msgid "if any <file> is not in the index, treat this as an error"
 msgstr "si un <fichier> n'est pas dans l'index, traiter cela comme une erreur"
 
-#: builtin/ls-files.c:577
+#: builtin/ls-files.c:592
 msgid "tree-ish"
 msgstr "arbre ou apparenté"
 
-#: builtin/ls-files.c:578
+#: builtin/ls-files.c:593
 msgid "pretend that paths removed since <tree-ish> are still present"
 msgstr ""
 "considérer que les chemins supprimés depuis <arbre ou apparenté> sont "
 "toujours présents"
 
-#: builtin/ls-files.c:580
+#: builtin/ls-files.c:595
 msgid "show debugging data"
 msgstr "afficher les données de débogage"
 
+#: builtin/ls-files.c:597
+msgid "suppress duplicate entries"
+msgstr "supprimer les entrées dupliquées"
+
 #: builtin/ls-remote.c:9
 msgid ""
 "git ls-remote [--heads] [--tags] [--refs] [--upload-pack=<exec>]\n"
@@ -17073,41 +17402,41 @@ msgstr ""
 "                     [-q | --quiet] [--exit-code] [--get-url]\n"
 "                     [--symref] [<dépôt> [<références>...]]"
 
-#: builtin/ls-remote.c:59
+#: builtin/ls-remote.c:60
 msgid "do not print remote URL"
 msgstr "ne pas afficher les URL distantes"
 
-#: builtin/ls-remote.c:60 builtin/ls-remote.c:62 builtin/rebase.c:1398
+#: builtin/ls-remote.c:61 builtin/ls-remote.c:63 builtin/rebase.c:1404
 msgid "exec"
 msgstr "exécutable"
 
-#: builtin/ls-remote.c:61 builtin/ls-remote.c:63
+#: builtin/ls-remote.c:62 builtin/ls-remote.c:64
 msgid "path of git-upload-pack on the remote host"
 msgstr "chemin vers git-upload-pack sur le serveur distant"
 
-#: builtin/ls-remote.c:65
+#: builtin/ls-remote.c:66
 msgid "limit to tags"
 msgstr "limiter aux étiquettes"
 
-#: builtin/ls-remote.c:66
+#: builtin/ls-remote.c:67
 msgid "limit to heads"
 msgstr "limiter aux heads"
 
-#: builtin/ls-remote.c:67
+#: builtin/ls-remote.c:68
 msgid "do not show peeled tags"
 msgstr "ne pas afficher les étiquettes pelées"
 
-#: builtin/ls-remote.c:69
+#: builtin/ls-remote.c:70
 msgid "take url.<base>.insteadOf into account"
 msgstr "prendre en compte url.<base>.insteadOf"
 
-#: builtin/ls-remote.c:72
+#: 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:75
+#: 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"
 
@@ -17265,194 +17594,194 @@ msgstr "impossible de résoudre la référence '%s'"
 msgid "Merging %s with %s\n"
 msgstr "Fusion de %s avec %s\n"
 
-#: builtin/merge.c:57
+#: builtin/merge.c:58
 msgid "git merge [<options>] [<commit>...]"
 msgstr "git merge [<options>] [<commit>...]"
 
-#: builtin/merge.c:58
+#: builtin/merge.c:59
 msgid "git merge --abort"
 msgstr "git merge --abort"
 
-#: builtin/merge.c:59
+#: builtin/merge.c:60
 msgid "git merge --continue"
 msgstr "git merge --continue"
 
-#: builtin/merge.c:122
+#: builtin/merge.c:123
 msgid "switch `m' requires a value"
 msgstr "le commutateur `m' a besoin d'une valeur"
 
-#: builtin/merge.c:145
+#: builtin/merge.c:146
 #, c-format
 msgid "option `%s' requires a value"
 msgstr "le commutateur '%s' a besoin d'une valeur"
 
-#: builtin/merge.c:198
+#: builtin/merge.c:199
 #, c-format
 msgid "Could not find merge strategy '%s'.\n"
 msgstr "Impossible de trouver la stratégie de fusion '%s'.\n"
 
-#: builtin/merge.c:199
+#: builtin/merge.c:200
 #, c-format
 msgid "Available strategies are:"
 msgstr "Les stratégies disponibles sont :"
 
-#: builtin/merge.c:204
+#: builtin/merge.c:205
 #, c-format
 msgid "Available custom strategies are:"
 msgstr "Les stratégies personnalisées sont :"
 
-#: builtin/merge.c:255 builtin/pull.c:133
+#: builtin/merge.c:256 builtin/pull.c:133
 msgid "do not show a diffstat at the end of the merge"
 msgstr "ne pas afficher un diffstat à la fin de la fusion"
 
-#: builtin/merge.c:258 builtin/pull.c:136
+#: builtin/merge.c:259 builtin/pull.c:136
 msgid "show a diffstat at the end of the merge"
 msgstr "afficher un diffstat à la fin de la fusion"
 
-#: builtin/merge.c:259 builtin/pull.c:139
+#: builtin/merge.c:260 builtin/pull.c:139
 msgid "(synonym to --stat)"
 msgstr "(synonyme de --stat)"
 
-#: builtin/merge.c:261 builtin/pull.c:142
+#: builtin/merge.c:262 builtin/pull.c:142
 msgid "add (at most <n>) entries from shortlog to merge commit message"
 msgstr ""
 "ajouter (au plus <n>) éléments du journal court au message de validation de "
 "la fusion"
 
-#: builtin/merge.c:264 builtin/pull.c:148
+#: builtin/merge.c:265 builtin/pull.c:148
 msgid "create a single commit instead of doing a merge"
 msgstr "créer une validation unique au lieu de faire une fusion"
 
-#: builtin/merge.c:266 builtin/pull.c:151
+#: builtin/merge.c:267 builtin/pull.c:151
 msgid "perform a commit if the merge succeeds (default)"
 msgstr "effectuer une validation si la fusion réussit (défaut)"
 
-#: builtin/merge.c:268 builtin/pull.c:154
+#: builtin/merge.c:269 builtin/pull.c:154
 msgid "edit message before committing"
 msgstr "éditer le message avant la validation"
 
-#: builtin/merge.c:270
+#: builtin/merge.c:271
 msgid "allow fast-forward (default)"
 msgstr "autoriser l'avance rapide (défaut)"
 
-#: builtin/merge.c:272 builtin/pull.c:161
+#: builtin/merge.c:273 builtin/pull.c:161
 msgid "abort if fast-forward is not possible"
 msgstr "abandonner si l'avance rapide n'est pas possible"
 
-#: builtin/merge.c:276 builtin/pull.c:164
+#: builtin/merge.c:277 builtin/pull.c:164
 msgid "verify that the named commit has a valid GPG signature"
 msgstr "vérifier que le commit nommé a une signature GPG valide"
 
-#: builtin/merge.c:277 builtin/notes.c:787 builtin/pull.c:168
-#: builtin/rebase.c:539 builtin/rebase.c:1412 builtin/revert.c:114
+#: builtin/merge.c:278 builtin/notes.c:787 builtin/pull.c:168
+#: builtin/rebase.c:541 builtin/rebase.c:1418 builtin/revert.c:114
 msgid "strategy"
 msgstr "stratégie"
 
-#: builtin/merge.c:278 builtin/pull.c:169
+#: builtin/merge.c:279 builtin/pull.c:169
 msgid "merge strategy to use"
 msgstr "stratégie de fusion à utiliser"
 
-#: builtin/merge.c:279 builtin/pull.c:172
+#: builtin/merge.c:280 builtin/pull.c:172
 msgid "option=value"
 msgstr "option=valeur"
 
-#: builtin/merge.c:280 builtin/pull.c:173
+#: builtin/merge.c:281 builtin/pull.c:173
 msgid "option for selected merge strategy"
 msgstr "option pour la stratégie de fusion sélectionnée"
 
-#: builtin/merge.c:282
+#: builtin/merge.c:283
 msgid "merge commit message (for a non-fast-forward merge)"
 msgstr ""
 "message de validation de la fusion (pour une fusion sans avance rapide)"
 
-#: builtin/merge.c:289
+#: builtin/merge.c:290
 msgid "abort the current in-progress merge"
 msgstr "abandonner la fusion en cours"
 
-#: builtin/merge.c:291
+#: builtin/merge.c:292
 msgid "--abort but leave index and working tree alone"
 msgstr "--abort mais laisser l'index et l'arbre de travail inchangés"
 
-#: builtin/merge.c:293
+#: builtin/merge.c:294
 msgid "continue the current in-progress merge"
 msgstr "continuer la fusion en cours"
 
-#: builtin/merge.c:295 builtin/pull.c:180
+#: builtin/merge.c:296 builtin/pull.c:180
 msgid "allow merging unrelated histories"
 msgstr "permettre la fusion d'historiques sans rapport"
 
-#: builtin/merge.c:302
+#: builtin/merge.c:303
 msgid "bypass pre-merge-commit and commit-msg hooks"
 msgstr "ne pas utiliser les crochets pre-merge-commit et commit-msg"
 
-#: builtin/merge.c:319
+#: builtin/merge.c:320
 msgid "could not run stash."
 msgstr "impossible de lancer le remisage."
 
-#: builtin/merge.c:324
+#: builtin/merge.c:325
 msgid "stash failed"
 msgstr "échec du remisage"
 
-#: builtin/merge.c:329
+#: builtin/merge.c:330
 #, c-format
 msgid "not a valid object: %s"
 msgstr "pas un objet valide : %s"
 
-#: builtin/merge.c:351 builtin/merge.c:368
+#: builtin/merge.c:352 builtin/merge.c:369
 msgid "read-tree failed"
 msgstr "read-tree a échoué"
 
-#: builtin/merge.c:398
+#: builtin/merge.c:399
 msgid " (nothing to squash)"
 msgstr " (rien à compresser)"
 
-#: builtin/merge.c:409
+#: builtin/merge.c:410
 #, c-format
 msgid "Squash commit -- not updating HEAD\n"
 msgstr "Validation compressée -- HEAD non mise à jour\n"
 
-#: builtin/merge.c:459
+#: builtin/merge.c:460
 #, 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:510
+#: builtin/merge.c:511
 #, c-format
 msgid "'%s' does not point to a commit"
 msgstr "'%s' ne pointe pas sur un commit"
 
-#: builtin/merge.c:597
+#: builtin/merge.c:598
 #, c-format
 msgid "Bad branch.%s.mergeoptions string: %s"
 msgstr "Mauvaise chaîne branch.%s.mergeoptions : %s"
 
-#: builtin/merge.c:723
+#: builtin/merge.c:724
 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:736
+#: builtin/merge.c:737
 #, c-format
 msgid "Unknown option for merge-recursive: -X%s"
 msgstr "Options inconnue pour merge-recursive : -X%s"
 
-#: builtin/merge.c:755 t/helper/test-fast-rebase.c:209
+#: builtin/merge.c:756 t/helper/test-fast-rebase.c:209
 #, c-format
 msgid "unable to write %s"
 msgstr "impossible d'écrire %s"
 
-#: builtin/merge.c:807
+#: builtin/merge.c:808
 #, c-format
 msgid "Could not read from '%s'"
 msgstr "Impossible de lire depuis '%s'"
 
-#: builtin/merge.c:816
+#: builtin/merge.c:817
 #, c-format
 msgid "Not committing merge; use 'git commit' to complete the merge.\n"
 msgstr ""
 "Pas de validation de la fusion ; utilisez 'git commit' pour terminer la "
 "fusion.\n"
 
-#: builtin/merge.c:822
+#: builtin/merge.c:823
 msgid ""
 "Please enter a commit message to explain why this merge is necessary,\n"
 "especially if it merges an updated upstream into a topic branch.\n"
@@ -17464,11 +17793,11 @@ msgstr ""
 "branche de sujet.\n"
 "\n"
 
-#: builtin/merge.c:827
+#: builtin/merge.c:828
 msgid "An empty message aborts the commit.\n"
 msgstr "Un message vide abandonne la validation.\n"
 
-#: builtin/merge.c:830
+#: builtin/merge.c:831
 #, c-format
 msgid ""
 "Lines starting with '%c' will be ignored, and an empty message aborts\n"
@@ -17477,74 +17806,74 @@ msgstr ""
 "Les lignes commençant par '%c' seront ignorées, et un message vide\n"
 "abandonne la validation.\n"
 
-#: builtin/merge.c:883
+#: builtin/merge.c:884
 msgid "Empty commit message."
 msgstr "Message de validation vide."
 
-#: builtin/merge.c:898
+#: builtin/merge.c:899
 #, c-format
 msgid "Wonderful.\n"
 msgstr "Merveilleux.\n"
 
-#: builtin/merge.c:959
+#: builtin/merge.c:960
 #, 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:998
+#: builtin/merge.c:999
 msgid "No current branch."
 msgstr "Pas de branche courante."
 
-#: builtin/merge.c:1000
+#: builtin/merge.c:1001
 msgid "No remote for the current branch."
 msgstr "Pas de branche distante pour la branche courante."
 
-#: builtin/merge.c:1002
+#: builtin/merge.c:1003
 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:1007
+#: builtin/merge.c:1008
 #, c-format
 msgid "No remote-tracking branch for %s from %s"
 msgstr "Pas de branche de suivi pour %s depuis %s"
 
-#: builtin/merge.c:1064
+#: builtin/merge.c:1065
 #, c-format
 msgid "Bad value '%s' in environment '%s'"
 msgstr "Mauvaise valeur '%s' dans l'environnement '%s'"
 
-#: builtin/merge.c:1167
+#: builtin/merge.c:1168
 #, c-format
 msgid "not something we can merge in %s: %s"
 msgstr "pas possible de fusionner ceci dans %s : %s"
 
-#: builtin/merge.c:1201
+#: builtin/merge.c:1202
 msgid "not something we can merge"
 msgstr "pas possible de fusionner ceci"
 
-#: builtin/merge.c:1311
+#: builtin/merge.c:1312
 msgid "--abort expects no arguments"
 msgstr "--abort n'accepte pas d'argument"
 
-#: builtin/merge.c:1315
+#: builtin/merge.c:1316
 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:1333
+#: builtin/merge.c:1334
 msgid "--quit expects no arguments"
 msgstr "--quit n'accepte pas d'argument"
 
-#: builtin/merge.c:1346
+#: builtin/merge.c:1347
 msgid "--continue expects no arguments"
 msgstr "--continue ne supporte aucun argument"
 
-#: builtin/merge.c:1350
+#: builtin/merge.c:1351
 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:1366
+#: builtin/merge.c:1367
 msgid ""
 "You have not concluded your merge (MERGE_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -17552,7 +17881,7 @@ msgstr ""
 "Vous n'avez pas terminé votre fusion (MERGE_HEAD existe).\n"
 "Veuillez valider vos modifications avant de pouvoir fusionner."
 
-#: builtin/merge.c:1373
+#: builtin/merge.c:1374
 msgid ""
 "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -17560,103 +17889,144 @@ msgstr ""
 "Vous n'avez pas terminé votre picorage (CHERRY_PICK_HEAD existe).\n"
 "Veuillez valider vos modifications avant de pouvoir fusionner."
 
-#: builtin/merge.c:1376
+#: builtin/merge.c:1377
 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:1390
+#: builtin/merge.c:1391
 msgid "You cannot combine --squash with --no-ff."
 msgstr "Vous ne pouvez pas combiner --squash avec --no-ff."
 
-#: builtin/merge.c:1392
+#: builtin/merge.c:1393
 msgid "You cannot combine --squash with --commit."
 msgstr "Vous ne pouvez pas combiner --squash avec --commit."
 
-#: builtin/merge.c:1408
+#: builtin/merge.c:1409
 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:1425
+#: builtin/merge.c:1426
 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:1427
+#: builtin/merge.c:1428
 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:1432
+#: builtin/merge.c:1433
 #, c-format
 msgid "%s - not something we can merge"
 msgstr "%s - pas possible de fusionner ceci"
 
-#: builtin/merge.c:1434
+#: builtin/merge.c:1435
 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:1515
+#: builtin/merge.c:1516
 msgid "refusing to merge unrelated histories"
 msgstr "refus de fusionner des historiques sans relation"
 
-#: builtin/merge.c:1524
+#: builtin/merge.c:1525
 msgid "Already up to date."
 msgstr "Déjà à jour."
 
-#: builtin/merge.c:1534
+#: builtin/merge.c:1535
 #, c-format
 msgid "Updating %s..%s\n"
 msgstr "Mise à jour %s..%s\n"
 
-#: builtin/merge.c:1580
+#: builtin/merge.c:1581
 #, c-format
 msgid "Trying really trivial in-index merge...\n"
 msgstr "Essai de fusion vraiment triviale dans l'index...\n"
 
-#: builtin/merge.c:1587
+#: builtin/merge.c:1588
 #, c-format
 msgid "Nope.\n"
 msgstr "Non.\n"
 
-#: builtin/merge.c:1612
+#: builtin/merge.c:1613
 msgid "Already up to date. Yeeah!"
 msgstr "Déjà à jour. Ouais !"
 
-#: builtin/merge.c:1618
+#: builtin/merge.c:1619
 msgid "Not possible to fast-forward, aborting."
 msgstr "Pas possible d'avancer rapidement, abandon."
 
-#: builtin/merge.c:1646 builtin/merge.c:1711
+#: builtin/merge.c:1647 builtin/merge.c:1712
 #, c-format
 msgid "Rewinding the tree to pristine...\n"
 msgstr "Retour de l'arbre à l'original...\n"
 
-#: builtin/merge.c:1650
+#: builtin/merge.c:1651
 #, c-format
 msgid "Trying merge strategy %s...\n"
 msgstr "Essai de la stratégie de fusion %s...\n"
 
-#: builtin/merge.c:1702
+#: builtin/merge.c:1703
 #, 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:1704
+#: builtin/merge.c:1705
 #, c-format
 msgid "Merge with strategy %s failed.\n"
 msgstr "La fusion avec la stratégie %s a échoué.\n"
 
-#: builtin/merge.c:1713
+#: builtin/merge.c:1714
 #, 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:1727
+#: builtin/merge.c:1728
 #, c-format
 msgid "Automatic merge went well; stopped before committing as requested\n"
 msgstr ""
 "La fusion automatique a réussi ; stoppée avant la validation comme demandé\n"
 
+#: builtin/mktag.c:10
+msgid "git mktag"
+msgstr "git mktag"
+
+#: builtin/mktag.c:30
+#, c-format
+msgid "warning: tag input does not pass fsck: %s"
+msgstr "attention : l'entrée d'étiquette ne passe pas fsck : %s"
+
+#: builtin/mktag.c:41
+#, c-format
+msgid "error: tag input does not pass fsck: %s"
+msgstr "erreur : l'entrée d'étiquette ne passe pas fsck : %s"
+
+#: builtin/mktag.c:44
+#, c-format
+msgid "%d (FSCK_IGNORE?) should never trigger this callback"
+msgstr "%d (FSCK_IGNORE?) ne devrait jamais rappeler cette fonction"
+
+#: builtin/mktag.c:59
+#, c-format
+msgid "could not read tagged object '%s'"
+msgstr "impossible de lire l'objet étiqueté '%s'"
+
+#: builtin/mktag.c:62
+#, c-format
+msgid "object '%s' tagged as '%s', but is a '%s' type"
+msgstr "l'objet '%s' étiqueté comme '%s', mais est de type '%s'"
+
+#: builtin/mktag.c:99
+msgid "tag on stdin did not pass our strict fsck check"
+msgstr "l'étiquette sur stdin n'a pas passé le test strict fsck"
+
+#: builtin/mktag.c:102
+msgid "tag on stdin did not refer to a valid object"
+msgstr "l'étiquette sur stdin ne pointe pas sur un objet valide"
+
+#: builtin/mktag.c:105 builtin/tag.c:232
+msgid "unable to write tag file"
+msgstr "impossible d'écrire le fichier d'étiquettes"
+
 #: builtin/mktree.c:66
 msgid "git mktree [-z] [--missing] [--batch]"
 msgstr "git mktree [-z] [--missing] [--batch]"
@@ -17695,7 +18065,10 @@ msgstr ""
 "pendant le repaquetage, collecter les fichiers paquet de plus petite taille "
 "dans un lot plus grand que cette taille"
 
-#: builtin/multi-pack-index.c:50 builtin/prune-packed.c:25
+#: builtin/multi-pack-index.c:50 builtin/notes.c:376 builtin/notes.c:431
+#: builtin/notes.c:509 builtin/notes.c:521 builtin/notes.c:598
+#: builtin/notes.c:665 builtin/notes.c:815 builtin/notes.c:963
+#: builtin/notes.c:985 builtin/prune-packed.c:25 builtin/tag.c:575
 msgid "too many arguments"
 msgstr "trop d'arguments"
 
@@ -17801,7 +18174,7 @@ msgstr "%s, source=%s, destination=%s"
 msgid "Renaming %s to %s\n"
 msgstr "Renommage de %s en %s\n"
 
-#: builtin/mv.c:280 builtin/remote.c:785 builtin/repack.c:484
+#: builtin/mv.c:280 builtin/remote.c:785 builtin/repack.c:483
 #, c-format
 msgid "renaming '%s' failed"
 msgstr "le renommage de '%s' a échoué"
@@ -17995,7 +18368,7 @@ 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:242 builtin/tag.c:533
+#: builtin/notes.c:242 builtin/tag.c:565
 #, c-format
 msgid "could not open or read '%s'"
 msgstr "impossible d'ouvrir ou lire '%s'"
@@ -18035,12 +18408,6 @@ msgstr "impossible de copier les notes de '%s' vers '%s'"
 msgid "refusing to %s notes in %s (outside of refs/notes/)"
 msgstr "Refus de faire %s sur des notes dans %s (hors de refs/notes/)"
 
-#: builtin/notes.c:376 builtin/notes.c:431 builtin/notes.c:509
-#: builtin/notes.c:521 builtin/notes.c:598 builtin/notes.c:665
-#: builtin/notes.c:815 builtin/notes.c:963 builtin/notes.c:985
-msgid "too many parameters"
-msgstr "trop de paramètres"
-
 #: builtin/notes.c:389 builtin/notes.c:678
 #, c-format
 msgid "no note found for object %s."
@@ -18099,8 +18466,8 @@ msgstr ""
 "charger la configuration de réécriture pour <commande> (implique --stdin)"
 
 #: builtin/notes.c:517
-msgid "too few parameters"
-msgstr "pas assez de paramètres"
+msgid "too few arguments"
+msgstr "trop peu d'arguments"
 
 #: builtin/notes.c:538
 #, c-format
@@ -18229,7 +18596,7 @@ msgstr ""
 "validez le résultat avec 'git notes merges --commit', ou abandonnez la "
 "fusion avec 'git notes merge --abort'.\n"
 
-#: builtin/notes.c:897 builtin/tag.c:546
+#: builtin/notes.c:897 builtin/tag.c:578
 #, c-format
 msgid "Failed to resolve '%s' as a valid ref."
 msgstr "Impossible de résoudre '%s' comme une référence valide."
@@ -18248,7 +18615,7 @@ msgstr ""
 msgid "read object names from the standard input"
 msgstr "lire les noms d'objet depuis l'entrée standard"
 
-#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:220
+#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:148
 msgid "do not remove, show only"
 msgstr "ne pas supprimer, afficher seulement"
 
@@ -18264,7 +18631,7 @@ msgstr "références-notes"
 msgid "use notes from <notes-ref>"
 msgstr "utiliser les notes depuis <références-notes>"
 
-#: builtin/notes.c:1034 builtin/stash.c:1604
+#: builtin/notes.c:1034 builtin/stash.c:1671
 #, c-format
 msgid "unknown subcommand: %s"
 msgstr "sous-commande inconnue : %s"
@@ -18283,106 +18650,120 @@ msgstr ""
 "git pack-objects [options...] base-name [< <liste-références> | < <liste-"
 "objets>]"
 
-#: builtin/pack-objects.c:443
+#: builtin/pack-objects.c:440
+#, c-format
+msgid ""
+"write_reuse_object: could not locate %s, expected at offset %<PRIuMAX> in "
+"pack %s"
+msgstr ""
+"write_reuse_object : impossible de localiser %s, attendu à l'offset "
+"%<PRIuMAX> dans le paquet %s"
+
+#: builtin/pack-objects.c:448
 #, c-format
 msgid "bad packed object CRC for %s"
 msgstr "mauvais CRC d'objet empaqueté pour %s"
 
-#: builtin/pack-objects.c:454
+#: builtin/pack-objects.c:459
 #, c-format
 msgid "corrupt packed object for %s"
 msgstr "objet empaqueté corrompu pour %s"
 
-#: builtin/pack-objects.c:585
+#: builtin/pack-objects.c:590
 #, c-format
 msgid "recursive delta detected for object %s"
 msgstr "delta récursif détecté pour l'objet %s"
 
-#: builtin/pack-objects.c:796
+#: builtin/pack-objects.c:801
 #, c-format
 msgid "ordered %u objects, expected %<PRIu32>"
 msgstr "%u objets commandés, %<PRIu32> attendus"
 
-#: builtin/pack-objects.c:1004
+#: builtin/pack-objects.c:896
+#, c-format
+msgid "expected object at offset %<PRIuMAX> in pack %s"
+msgstr "objet attendu à l'offset %<PRIuMAX> dans le paquet %s"
+
+#: builtin/pack-objects.c:1015
 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:1017
+#: builtin/pack-objects.c:1028
 msgid "Writing objects"
 msgstr "Écriture des objets"
 
-#: builtin/pack-objects.c:1078 builtin/update-index.c:90
+#: builtin/pack-objects.c:1089 builtin/update-index.c:90
 #, c-format
 msgid "failed to stat %s"
 msgstr "échec du stat de %s"
 
-#: builtin/pack-objects.c:1131
+#: builtin/pack-objects.c:1141
 #, c-format
 msgid "wrote %<PRIu32> objects while expecting %<PRIu32>"
 msgstr "%<PRIu32> objets écrits, %<PRIu32> attendus"
 
-#: builtin/pack-objects.c:1348
+#: builtin/pack-objects.c:1358
 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:1796
+#: builtin/pack-objects.c:1806
 #, c-format
 msgid "delta base offset overflow in pack for %s"
 msgstr "dépassement de décalage de base de delta pour %s"
 
-#: builtin/pack-objects.c:1805
+#: builtin/pack-objects.c:1815
 #, c-format
 msgid "delta base offset out of bound for %s"
 msgstr "décalage de base de delta est hors limite pour %s"
 
-#: builtin/pack-objects.c:2086
+#: builtin/pack-objects.c:2096
 msgid "Counting objects"
 msgstr "Décompte des objets"
 
-#: builtin/pack-objects.c:2231
+#: builtin/pack-objects.c:2241
 #, 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:2301 builtin/pack-objects.c:2317
-#: builtin/pack-objects.c:2327
+#: builtin/pack-objects.c:2311 builtin/pack-objects.c:2327
+#: builtin/pack-objects.c:2337
 #, c-format
 msgid "object %s cannot be read"
 msgstr "l'objet %s ne peut être lu"
 
-#: builtin/pack-objects.c:2304 builtin/pack-objects.c:2331
+#: builtin/pack-objects.c:2314 builtin/pack-objects.c:2341
 #, c-format
 msgid "object %s inconsistent object length (%<PRIuMAX> vs %<PRIuMAX>)"
 msgstr ""
 "objet %s longueur de l'objet inconsistante (%<PRIuMAX> contre %<PRIuMAX>)"
 
-#: builtin/pack-objects.c:2341
+#: builtin/pack-objects.c:2351
 msgid "suboptimal pack - out of memory"
 msgstr "paquet sous-optimal - mémoire insuffisante"
 
-#: builtin/pack-objects.c:2656
+#: builtin/pack-objects.c:2666
 #, c-format
 msgid "Delta compression using up to %d threads"
 msgstr "Compression par delta en utilisant jusqu'à %d fils d'exécution"
 
-#: builtin/pack-objects.c:2795
+#: builtin/pack-objects.c:2805
 #, c-format
 msgid "unable to pack objects reachable from tag %s"
 msgstr "impossible d'empaqueter les objets joignables depuis l'étiquette %s"
 
-#: builtin/pack-objects.c:2883
+#: builtin/pack-objects.c:2891
 msgid "Compressing objects"
 msgstr "Compression des objets"
 
-#: builtin/pack-objects.c:2889
+#: builtin/pack-objects.c:2897
 msgid "inconsistency with delta count"
 msgstr "inconsistance dans le compte de delta"
 
-#: builtin/pack-objects.c:2961
+#: builtin/pack-objects.c:2976
 #, c-format
 msgid ""
 "value of uploadpack.blobpackfileuri must be of the form '<object-hash> <pack-"
@@ -18391,7 +18772,7 @@ msgstr ""
 "la valeur de uploadpack.blobpackfileuri doit être de la forme '<empreinte-d-"
 "objet> <empreinte-de-pack> <uri>' ('%s' reçu)"
 
-#: builtin/pack-objects.c:2964
+#: builtin/pack-objects.c:2979
 #, c-format
 msgid ""
 "object already configured in another uploadpack.blobpackfileuri (got '%s')"
@@ -18399,7 +18780,7 @@ msgstr ""
 "l'objet est déjà configuré dans un autre uploadpack.blobpackfileuri ('%s' "
 "reçu)"
 
-#: builtin/pack-objects.c:2993
+#: builtin/pack-objects.c:3008
 #, c-format
 msgid ""
 "expected edge object ID, got garbage:\n"
@@ -18408,7 +18789,7 @@ msgstr ""
 "ID d'objet de bord attendu, reçu des données illisibles :\n"
 "%s"
 
-#: builtin/pack-objects.c:2999
+#: builtin/pack-objects.c:3014
 #, c-format
 msgid ""
 "expected object ID, got garbage:\n"
@@ -18417,244 +18798,244 @@ msgstr ""
 "ID d'objet attendu, reçu des données illisibles :\n"
 "%s"
 
-#: builtin/pack-objects.c:3097
+#: builtin/pack-objects.c:3112
 msgid "invalid value for --missing"
 msgstr "valeur invalide pour --missing"
 
-#: builtin/pack-objects.c:3156 builtin/pack-objects.c:3264
+#: builtin/pack-objects.c:3171 builtin/pack-objects.c:3279
 msgid "cannot open pack index"
 msgstr "impossible d'ouvrir l'index de paquet"
 
-#: builtin/pack-objects.c:3187
+#: builtin/pack-objects.c:3202
 #, c-format
 msgid "loose object at %s could not be examined"
 msgstr "l'objet libre à %s n'a pas pu être examiné"
 
-#: builtin/pack-objects.c:3272
+#: builtin/pack-objects.c:3287
 msgid "unable to force loose object"
 msgstr "impossible de forcer l'objet libre"
 
-#: builtin/pack-objects.c:3365
+#: builtin/pack-objects.c:3380
 #, c-format
 msgid "not a rev '%s'"
 msgstr "'%s' n'est pas une révision"
 
-#: builtin/pack-objects.c:3368
+#: builtin/pack-objects.c:3383
 #, c-format
 msgid "bad revision '%s'"
 msgstr "mauvaise révision '%s'"
 
-#: builtin/pack-objects.c:3393
+#: builtin/pack-objects.c:3408
 msgid "unable to add recent objects"
 msgstr "impossible d'ajouter les objets récents"
 
-#: builtin/pack-objects.c:3446
+#: builtin/pack-objects.c:3461
 #, c-format
 msgid "unsupported index version %s"
 msgstr "version d'index non supportée %s"
 
-#: builtin/pack-objects.c:3450
+#: builtin/pack-objects.c:3465
 #, c-format
 msgid "bad index version '%s'"
 msgstr "mauvaise version d'index '%s'"
 
-#: builtin/pack-objects.c:3488
+#: builtin/pack-objects.c:3503
 msgid "<version>[,<offset>]"
 msgstr "<version>[,<décalage>]"
 
-#: builtin/pack-objects.c:3489
+#: builtin/pack-objects.c:3504
 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:3492
+#: builtin/pack-objects.c:3507
 msgid "maximum size of each output pack file"
 msgstr "taille maximum de chaque fichier paquet en sortie"
 
-#: builtin/pack-objects.c:3494
+#: builtin/pack-objects.c:3509
 msgid "ignore borrowed objects from alternate object store"
 msgstr "ignorer les objets empruntés à un autre magasin d'objets"
 
-#: builtin/pack-objects.c:3496
+#: builtin/pack-objects.c:3511
 msgid "ignore packed objects"
 msgstr "ignorer les objets empaquetés"
 
-#: builtin/pack-objects.c:3498
+#: builtin/pack-objects.c:3513
 msgid "limit pack window by objects"
 msgstr "limiter la fenêtre d'empaquetage par objets"
 
-#: builtin/pack-objects.c:3500
+#: builtin/pack-objects.c:3515
 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:3502
+#: builtin/pack-objects.c:3517
 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:3504
+#: builtin/pack-objects.c:3519
 msgid "reuse existing deltas"
 msgstr "réutiliser les deltas existants"
 
-#: builtin/pack-objects.c:3506
+#: builtin/pack-objects.c:3521
 msgid "reuse existing objects"
 msgstr "réutiliser les objets existants"
 
-#: builtin/pack-objects.c:3508
+#: builtin/pack-objects.c:3523
 msgid "use OFS_DELTA objects"
 msgstr "utiliser les objets OFS_DELTA"
 
-#: builtin/pack-objects.c:3510
+#: builtin/pack-objects.c:3525
 msgid "use threads when searching for best delta matches"
 msgstr ""
 "utiliser des fils lors de la recherche pour une meilleure correspondance des "
 "deltas"
 
-#: builtin/pack-objects.c:3512
+#: builtin/pack-objects.c:3527
 msgid "do not create an empty pack output"
 msgstr "ne pas créer un paquet vide"
 
-#: builtin/pack-objects.c:3514
+#: builtin/pack-objects.c:3529
 msgid "read revision arguments from standard input"
 msgstr "lire les paramètres de révision depuis l'entrée standard"
 
-#: builtin/pack-objects.c:3516
+#: builtin/pack-objects.c:3531
 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:3519
+#: builtin/pack-objects.c:3534
 msgid "include objects reachable from any reference"
 msgstr "inclure les objets accessibles depuis toute référence"
 
-#: builtin/pack-objects.c:3522
+#: builtin/pack-objects.c:3537
 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:3525
+#: builtin/pack-objects.c:3540
 msgid "include objects referred to by the index"
 msgstr "inclure les objets référencés par l'index"
 
-#: builtin/pack-objects.c:3528
+#: builtin/pack-objects.c:3543
 msgid "output pack to stdout"
 msgstr "afficher l'empaquetage sur la sortie standard"
 
-#: builtin/pack-objects.c:3530
+#: builtin/pack-objects.c:3545
 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:3532
+#: builtin/pack-objects.c:3547
 msgid "keep unreachable objects"
 msgstr "garder les objets inaccessibles"
 
-#: builtin/pack-objects.c:3534
+#: builtin/pack-objects.c:3549
 msgid "pack loose unreachable objects"
 msgstr "empaqueter les objets inaccessibles détachés"
 
-#: builtin/pack-objects.c:3536
+#: builtin/pack-objects.c:3551
 msgid "unpack unreachable objects newer than <time>"
 msgstr "dépaqueter les objets inaccessibles plus récents que <heure>"
 
-#: builtin/pack-objects.c:3539
+#: builtin/pack-objects.c:3554
 msgid "use the sparse reachability algorithm"
 msgstr "utiliser l'algorithme de joignabilité creuse"
 
-#: builtin/pack-objects.c:3541
+#: builtin/pack-objects.c:3556
 msgid "create thin packs"
 msgstr "créer des paquets légers"
 
-#: builtin/pack-objects.c:3543
+#: builtin/pack-objects.c:3558
 msgid "create packs suitable for shallow fetches"
 msgstr "créer des paquets permettant des récupérations superficielles"
 
-#: builtin/pack-objects.c:3545
+#: builtin/pack-objects.c:3560
 msgid "ignore packs that have companion .keep file"
 msgstr "ignorer les paquets qui ont un fichier .keep"
 
-#: builtin/pack-objects.c:3547
+#: builtin/pack-objects.c:3562
 msgid "ignore this pack"
 msgstr "ignorer ce paquet"
 
-#: builtin/pack-objects.c:3549
+#: builtin/pack-objects.c:3564
 msgid "pack compression level"
 msgstr "niveau de compression du paquet"
 
-#: builtin/pack-objects.c:3551
+#: builtin/pack-objects.c:3566
 msgid "do not hide commits by grafts"
 msgstr "ne pas cacher les validations par greffes"
 
-#: builtin/pack-objects.c:3553
+#: builtin/pack-objects.c:3568
 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:3555
+#: builtin/pack-objects.c:3570
 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:3559
+#: builtin/pack-objects.c:3574
 msgid "write a bitmap index if possible"
 msgstr "écrire un index de bitmap si possible"
 
-#: builtin/pack-objects.c:3563
+#: builtin/pack-objects.c:3578
 msgid "handling for missing objects"
 msgstr "gestion des objets manquants"
 
-#: builtin/pack-objects.c:3566
+#: builtin/pack-objects.c:3581
 msgid "do not pack objects in promisor packfiles"
 msgstr "ne pas empaqueter les objets dans les fichiers paquets prometteurs"
 
-#: builtin/pack-objects.c:3568
+#: builtin/pack-objects.c:3583
 msgid "respect islands during delta compression"
 msgstr "respecter les îlots pendant la compression des deltas"
 
-#: builtin/pack-objects.c:3570
+#: builtin/pack-objects.c:3585
 msgid "protocol"
 msgstr "protocole"
 
-#: builtin/pack-objects.c:3571
+#: builtin/pack-objects.c:3586
 msgid "exclude any configured uploadpack.blobpackfileuri with this protocol"
 msgstr "exclure tout uploadpack.blobpackfileuri configuré avec ce protocole"
 
-#: builtin/pack-objects.c:3600
+#: builtin/pack-objects.c:3617
 #, 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:3605
+#: builtin/pack-objects.c:3622
 #, c-format
 msgid "pack.deltaCacheLimit is too high, forcing %d"
 msgstr "pack.deltaCacheLimit est trop grand, forcé à %d"
 
-#: builtin/pack-objects.c:3659
+#: builtin/pack-objects.c:3676
 msgid "--max-pack-size cannot be used to build a pack for transfer"
 msgstr ""
 "--max-pack-size ne peut pas être utilisé pour construire un paquet à "
 "transférer"
 
-#: builtin/pack-objects.c:3661
+#: builtin/pack-objects.c:3678
 msgid "minimum pack size limit is 1 MiB"
 msgstr "la taille limite minimale d'un paquet est 1 MiB"
 
-#: builtin/pack-objects.c:3666
+#: builtin/pack-objects.c:3683
 msgid "--thin cannot be used to build an indexable pack"
 msgstr "--thin ne peut pas être utilisé pour construire un paquet indexable"
 
-#: builtin/pack-objects.c:3669
+#: builtin/pack-objects.c:3686
 msgid "--keep-unreachable and --unpack-unreachable are incompatible"
 msgstr "--keep-unreachable et --unpack-unreachable sont incompatibles"
 
-#: builtin/pack-objects.c:3675
+#: builtin/pack-objects.c:3692
 msgid "cannot use --filter without --stdout"
 msgstr "impossible d'utiliser --filter sans --stdout"
 
-#: builtin/pack-objects.c:3735
+#: builtin/pack-objects.c:3752
 msgid "Enumerating objects"
 msgstr "Énumération des objets"
 
-#: builtin/pack-objects.c:3766
+#: builtin/pack-objects.c:3783
 #, c-format
 msgid ""
 "Total %<PRIu32> (delta %<PRIu32>), reused %<PRIu32> (delta %<PRIu32>), pack-"
@@ -18663,6 +19044,20 @@ msgstr ""
 "Total %<PRIu32> (delta %<PRIu32>), réutilisés %<PRIu32> (delta %<PRIu32>), "
 "réutilisés du pack %<PRIu32>"
 
+#: builtin/pack-redundant.c:601
+msgid ""
+"'git pack-redundant' is nominated for removal.\n"
+"If you still use this command, please add an extra\n"
+"option, '--i-still-use-this', on the command line\n"
+"and let us know you still use it by sending an e-mail\n"
+"to <git@vger.kernel.org>.  Thanks.\n"
+msgstr ""
+"La suppression  de 'git pack-redundant' est prévue.\n"
+"Si vous utilisez cette commande, veuillez ajouter\n"
+"une option supplémentaire, '--i-still-use-this',\n"
+"sur la ligne de commande pour nous avertir par\n"
+"un courriel à <git@vger.kernel.org>. Merci.\n"
+
 #: builtin/pack-refs.c:8
 msgid "git pack-refs [<options>]"
 msgstr "git pack-refs [<options>]"
@@ -18720,7 +19115,7 @@ msgstr "Options relatives à la fusion"
 msgid "incorporate changes by rebasing rather than merging"
 msgstr "incorporer les modifications en rebasant plutôt qu'en fusionnant"
 
-#: builtin/pull.c:158 builtin/rebase.c:490 builtin/revert.c:126
+#: builtin/pull.c:158 builtin/rebase.c:492 builtin/revert.c:126
 msgid "allow fast-forward"
 msgstr "autoriser l'avance rapide"
 
@@ -18745,36 +19140,7 @@ msgstr "nombre de sous-modules tirés en parallèle"
 msgid "Invalid value for pull.ff: %s"
 msgstr "Valeur invalide pour pull.ff : %s"
 
-#: builtin/pull.c:348
-msgid ""
-"Pulling without specifying how to reconcile divergent branches is\n"
-"discouraged. You can squelch this message by running one of the following\n"
-"commands sometime before your next pull:\n"
-"\n"
-"  git config pull.rebase false  # merge (the default strategy)\n"
-"  git config pull.rebase true   # rebase\n"
-"  git config pull.ff only       # fast-forward only\n"
-"\n"
-"You can replace \"git config\" with \"git config --global\" to set a "
-"default\n"
-"preference for all repositories. You can also pass --rebase, --no-rebase,\n"
-"or --ff-only on the command line to override the configured default per\n"
-"invocation.\n"
-msgstr ""
-"Tirer sans spécifier comment réconcilier les branches divergentes\n"
-"est découragé. Vous pouvez éliminer ce message en lançant une des\n"
-"commandes suivantes avant votre prochain tirage :\n"
-"\n"
-"  git config pull.rebase false  # fusion (stratégie par défaut)\n"
-"  git config pull.rebase true   # rebasage\n"
-"  git config pull.ff only       # avance rapide seulement\n"
-"\n"
-"Vous pouvez remplacer \"git config\" par \"git config --global\" pour que\n"
-"ce soit l'option par défaut pour tous les dépôts. Vous pouvez aussi\n"
-"passer --rebase, --no-rebase ou --ff-only sur la ligne de commande pour\n"
-"remplacer à l'invocation la valeur par défaut configurée.\n"
-
-#: builtin/pull.c:458
+#: builtin/pull.c:445
 msgid ""
 "There is no candidate for rebasing against among the refs that you just "
 "fetched."
@@ -18782,14 +19148,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:460
+#: builtin/pull.c:447
 msgid ""
 "There are no candidates for merging among the refs that you just fetched."
 msgstr ""
 "Il n'y a pas de candidate avec laquelle fusionner parmi les références que "
 "vous venez de récupérer."
 
-#: builtin/pull.c:461
+#: builtin/pull.c:448
 msgid ""
 "Generally this means that you provided a wildcard refspec which had no\n"
 "matches on the remote end."
@@ -18797,7 +19163,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:464
+#: builtin/pull.c:451
 #, c-format
 msgid ""
 "You asked to pull from the remote '%s', but did not specify\n"
@@ -18809,43 +19175,43 @@ msgstr ""
 "configuration\n"
 "pour la branche actuelle, vous devez spécifier la branche avec la commande."
 
-#: builtin/pull.c:469 builtin/rebase.c:1246
+#: builtin/pull.c:456 builtin/rebase.c:1253
 msgid "You are not currently on a branch."
 msgstr "Vous n'êtes actuellement sur aucune branche."
 
-#: builtin/pull.c:471 builtin/pull.c:486
+#: builtin/pull.c:458 builtin/pull.c:473
 msgid "Please specify which branch you want to rebase against."
 msgstr "Veuillez spécifier sur quelle branche vous souhaiter rebaser."
 
-#: builtin/pull.c:473 builtin/pull.c:488
+#: builtin/pull.c:460 builtin/pull.c:475
 msgid "Please specify which branch you want to merge with."
 msgstr "Veuillez spécifier une branche avec laquelle fusionner."
 
-#: builtin/pull.c:474 builtin/pull.c:489
+#: builtin/pull.c:461 builtin/pull.c:476
 msgid "See git-pull(1) for details."
 msgstr "Référez-vous à git-pull(1) pour de plus amples détails."
 
-#: builtin/pull.c:476 builtin/pull.c:482 builtin/pull.c:491
-#: builtin/rebase.c:1252
+#: builtin/pull.c:463 builtin/pull.c:469 builtin/pull.c:478
+#: builtin/rebase.c:1259
 msgid "<remote>"
 msgstr "<distant>"
 
-#: builtin/pull.c:476 builtin/pull.c:491 builtin/pull.c:496
+#: builtin/pull.c:463 builtin/pull.c:478 builtin/pull.c:483
 msgid "<branch>"
 msgstr "<branche>"
 
-#: builtin/pull.c:484 builtin/rebase.c:1244
+#: builtin/pull.c:471 builtin/rebase.c:1251
 msgid "There is no tracking information for the current branch."
 msgstr "Pas d'information de suivi distant pour la branche actuelle."
 
-#: builtin/pull.c:493
+#: builtin/pull.c:480
 msgid ""
 "If you wish to set tracking information for this branch you can do so with:"
 msgstr ""
 "Si vous souhaitez indiquer l'information de suivi distant pour cette "
 "branche, vous pouvez le faire avec :"
 
-#: builtin/pull.c:498
+#: builtin/pull.c:485
 #, c-format
 msgid ""
 "Your configuration specifies to merge with the ref '%s'\n"
@@ -18855,30 +19221,59 @@ msgstr ""
 "'%s'\n"
 "du serveur distant, mais cette référence n'a pas été récupérée."
 
-#: builtin/pull.c:609
+#: builtin/pull.c:596
 #, c-format
 msgid "unable to access commit %s"
 msgstr "impossible d'accéder le commit %s"
 
-#: builtin/pull.c:915
+#: builtin/pull.c:902
 msgid "ignoring --verify-signatures for rebase"
 msgstr "--verify-signatures est ignoré pour un rebasage"
 
-#: builtin/pull.c:972
+#: builtin/pull.c:930
+msgid ""
+"Pulling without specifying how to reconcile divergent branches is\n"
+"discouraged. You can squelch this message by running one of the following\n"
+"commands sometime before your next pull:\n"
+"\n"
+"  git config pull.rebase false  # merge (the default strategy)\n"
+"  git config pull.rebase true   # rebase\n"
+"  git config pull.ff only       # fast-forward only\n"
+"\n"
+"You can replace \"git config\" with \"git config --global\" to set a "
+"default\n"
+"preference for all repositories. You can also pass --rebase, --no-rebase,\n"
+"or --ff-only on the command line to override the configured default per\n"
+"invocation.\n"
+msgstr ""
+"Tirer sans spécifier comment réconcilier les branches divergentes\n"
+"est découragé. Vous pouvez éliminer ce message en lançant une des\n"
+"commandes suivantes avant votre prochain tirage :\n"
+"\n"
+"  git config pull.rebase false  # fusion (stratégie par défaut)\n"
+"  git config pull.rebase true   # rebasage\n"
+"  git config pull.ff only       # avance rapide seulement\n"
+"\n"
+"Vous pouvez remplacer \"git config\" par \"git config --global\" pour que\n"
+"ce soit l'option par défaut pour tous les dépôts. Vous pouvez aussi\n"
+"passer --rebase, --no-rebase ou --ff-only sur la ligne de commande pour\n"
+"remplacer à l'invocation la valeur par défaut configurée.\n"
+
+#: builtin/pull.c:991
 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:976
+#: builtin/pull.c:995
 msgid "pull with rebase"
 msgstr "tirer avec un rebasage"
 
-#: builtin/pull.c:977
+#: builtin/pull.c:996
 msgid "please commit or stash them."
 msgstr "veuillez les valider ou les remiser."
 
-#: builtin/pull.c:1002
+#: builtin/pull.c:1021
 #, c-format
 msgid ""
 "fetch updated the current branch head.\n"
@@ -18889,7 +19284,7 @@ msgstr ""
 "avance rapide de votre copie de travail\n"
 "depuis le commit %s."
 
-#: builtin/pull.c:1008
+#: builtin/pull.c:1027
 #, c-format
 msgid ""
 "Cannot fast-forward your working tree.\n"
@@ -18906,15 +19301,15 @@ msgstr ""
 "$ git reset --hard\n"
 "pour régénérer."
 
-#: builtin/pull.c:1023
+#: builtin/pull.c:1042
 msgid "Cannot merge multiple branches into empty head."
 msgstr "Impossible de fusionner de multiples branches sur une tête vide."
 
-#: builtin/pull.c:1027
+#: builtin/pull.c:1046
 msgid "Cannot rebase onto multiple branches."
 msgstr "Impossible de rebaser sur de multiples branches."
 
-#: builtin/pull.c:1041
+#: builtin/pull.c:1067
 msgid "cannot rebase with locally recorded submodule modifications"
 msgstr ""
 "impossible de rebaser avec des modifications de sous-modules enregistrées "
@@ -19242,46 +19637,54 @@ msgstr ""
 "les options de poussée ne peuvent pas contenir de caractères de nouvelle "
 "ligne"
 
-#: builtin/range-diff.c:8
+#: builtin/range-diff.c:9
 msgid "git range-diff [<options>] <old-base>..<old-tip> <new-base>..<new-tip>"
 msgstr ""
 "git range-diff [<options>] <ancienne-base>..<ancien-sommet> <nouvelle-base>.."
 "<nouveau-sommet>"
 
-#: builtin/range-diff.c:9
+#: builtin/range-diff.c:10
 msgid "git range-diff [<options>] <old-tip>...<new-tip>"
 msgstr "git range-diff [<options>] <ancien-sommet>...<nouveau-sommet>"
 
-#: builtin/range-diff.c:10
+#: builtin/range-diff.c:11
 msgid "git range-diff [<options>] <base> <old-tip> <new-tip>"
 msgstr "git range-diff [<options>] <base> <ancien-sommet> <nouveau-sommet>"
 
-#: builtin/range-diff.c:22
+#: builtin/range-diff.c:28
 msgid "Percentage by which creation is weighted"
 msgstr "Pourcentage par lequel la création est pondérée"
 
-#: builtin/range-diff.c:24
+#: builtin/range-diff.c:30
 msgid "use simple diff colors"
 msgstr "utiliser des couleurs de diff simples"
 
-#: builtin/range-diff.c:26
+#: builtin/range-diff.c:32
 msgid "notes"
 msgstr "notes"
 
-#: builtin/range-diff.c:26
+#: builtin/range-diff.c:32
 msgid "passed to 'git log'"
 msgstr "passé à 'git log'"
 
-#: builtin/range-diff.c:50 builtin/range-diff.c:54
+#: builtin/range-diff.c:35
+msgid "only emit output related to the first range"
+msgstr "afficher seulement les sorties liées à la première plage"
+
+#: builtin/range-diff.c:37
+msgid "only emit output related to the second range"
+msgstr "afficher seulement les sorties liées à la deuxième plage"
+
+#: builtin/range-diff.c:60 builtin/range-diff.c:64
 #, c-format
-msgid "no .. in range: '%s'"
-msgstr "pas de .. dans la plage : '%s'"
+msgid "not a commit range: '%s'"
+msgstr "pas une plage de commit : '%s'"
 
-#: builtin/range-diff.c:64
+#: builtin/range-diff.c:74
 msgid "single arg format must be symmetric range"
 msgstr "un format d'argument unique doit être une plage symétrique"
 
-#: builtin/range-diff.c:79
+#: builtin/range-diff.c:89
 msgid "need two commit ranges"
 msgstr "plage entre deux commits requise"
 
@@ -19387,193 +19790,193 @@ msgstr ""
 msgid "git rebase --continue | --abort | --skip | --edit-todo"
 msgstr "git rebase --continue | --abort | --skip | --edit-todo"
 
-#: builtin/rebase.c:193 builtin/rebase.c:217 builtin/rebase.c:244
+#: builtin/rebase.c:195 builtin/rebase.c:219 builtin/rebase.c:246
 #, c-format
 msgid "unusable todo list: '%s'"
 msgstr "liste à faire inutilisable : '%s'"
 
-#: builtin/rebase.c:310
+#: builtin/rebase.c:312
 #, c-format
 msgid "could not create temporary %s"
 msgstr "impossible de créer un fichier temporaire %s"
 
-#: builtin/rebase.c:316
+#: builtin/rebase.c:318
 msgid "could not mark as interactive"
 msgstr "impossible de marquer comme interactif"
 
-#: builtin/rebase.c:369
+#: builtin/rebase.c:371
 msgid "could not generate todo list"
 msgstr "impossible de générer la liste à-faire"
 
-#: builtin/rebase.c:411
+#: builtin/rebase.c:413
 msgid "a base commit must be provided with --upstream or --onto"
 msgstr "un commit de base doit être fourni avec --upstream ou --onto"
 
-#: builtin/rebase.c:480
+#: builtin/rebase.c:482
 msgid "git rebase--interactive [<options>]"
 msgstr "git rebase--interactive [<options>]"
 
-#: builtin/rebase.c:493 builtin/rebase.c:1388
+#: builtin/rebase.c:495 builtin/rebase.c:1394
 msgid "keep commits which start empty"
 msgstr "conserver les commits qui commencent vides"
 
-#: builtin/rebase.c:497 builtin/revert.c:128
+#: builtin/rebase.c:499 builtin/revert.c:128
 msgid "allow commits with empty messages"
 msgstr "autoriser les validations avec des messages vides"
 
-#: builtin/rebase.c:499
+#: builtin/rebase.c:501
 msgid "rebase merge commits"
 msgstr "rebaser les commits de fusion"
 
-#: builtin/rebase.c:501
+#: builtin/rebase.c:503
 msgid "keep original branch points of cousins"
 msgstr "conserver les points de branchement de cousins originaux"
 
-#: builtin/rebase.c:503
+#: builtin/rebase.c:505
 msgid "move commits that begin with squash!/fixup!"
 msgstr "déplacer les commits qui commencent par squash!/fixup!"
 
-#: builtin/rebase.c:504
+#: builtin/rebase.c:506
 msgid "sign commits"
 msgstr "signer les commits"
 
-#: builtin/rebase.c:506 builtin/rebase.c:1327
+#: builtin/rebase.c:508 builtin/rebase.c:1333
 msgid "display a diffstat of what changed upstream"
 msgstr "afficher un diffstat de ce qui a changé en amont"
 
-#: builtin/rebase.c:508
+#: builtin/rebase.c:510
 msgid "continue rebase"
 msgstr "continuer le rebasage"
 
-#: builtin/rebase.c:510
+#: builtin/rebase.c:512
 msgid "skip commit"
 msgstr "sauter le commit"
 
-#: builtin/rebase.c:511
+#: builtin/rebase.c:513
 msgid "edit the todo list"
 msgstr "éditer la liste à-faire"
 
-#: builtin/rebase.c:513
+#: builtin/rebase.c:515
 msgid "show the current patch"
 msgstr "afficher le patch courant"
 
-#: builtin/rebase.c:516
+#: builtin/rebase.c:518
 msgid "shorten commit ids in the todo list"
 msgstr "raccourcir les identifiants de commits dans la liste à-faire"
 
-#: builtin/rebase.c:518
+#: builtin/rebase.c:520
 msgid "expand commit ids in the todo list"
 msgstr "étendre les identifiants de commit dans la liste à-faire"
 
-#: builtin/rebase.c:520
+#: builtin/rebase.c:522
 msgid "check the todo list"
 msgstr "vérifier la liste à-faire"
 
-#: builtin/rebase.c:522
+#: builtin/rebase.c:524
 msgid "rearrange fixup/squash lines"
 msgstr "réarranger les lignes fixup/squash"
 
-#: builtin/rebase.c:524
+#: builtin/rebase.c:526
 msgid "insert exec commands in todo list"
 msgstr "insérer les commandes exec dans la liste à-faire"
 
-#: builtin/rebase.c:525
+#: builtin/rebase.c:527
 msgid "onto"
 msgstr "sur"
 
-#: builtin/rebase.c:528
+#: builtin/rebase.c:530
 msgid "restrict-revision"
 msgstr "restrict-revision"
 
-#: builtin/rebase.c:528
+#: builtin/rebase.c:530
 msgid "restrict revision"
 msgstr "restreindre la révision"
 
-#: builtin/rebase.c:530
+#: builtin/rebase.c:532
 msgid "squash-onto"
 msgstr "écraser-sur"
 
-#: builtin/rebase.c:531
+#: builtin/rebase.c:533
 msgid "squash onto"
 msgstr "écraser sur"
 
-#: builtin/rebase.c:533
+#: builtin/rebase.c:535
 msgid "the upstream commit"
 msgstr "le commit amont"
 
-#: builtin/rebase.c:535
+#: builtin/rebase.c:537
 msgid "head-name"
 msgstr "nom du head"
 
-#: builtin/rebase.c:535
+#: builtin/rebase.c:537
 msgid "head name"
 msgstr "nom du head"
 
-#: builtin/rebase.c:540
+#: builtin/rebase.c:542
 msgid "rebase strategy"
 msgstr "stratégie de rebasage"
 
-#: builtin/rebase.c:541
+#: builtin/rebase.c:543
 msgid "strategy-opts"
 msgstr "options de stratégie"
 
-#: builtin/rebase.c:542
+#: builtin/rebase.c:544
 msgid "strategy options"
 msgstr "options de stratégie"
 
-#: builtin/rebase.c:543
+#: builtin/rebase.c:545
 msgid "switch-to"
 msgstr "switch-to"
 
-#: builtin/rebase.c:544
+#: builtin/rebase.c:546
 msgid "the branch or commit to checkout"
 msgstr "la branche ou le commit à extraire"
 
-#: builtin/rebase.c:545
+#: builtin/rebase.c:547
 msgid "onto-name"
 msgstr "sur-le-nom"
 
-#: builtin/rebase.c:545
+#: builtin/rebase.c:547
 msgid "onto name"
 msgstr "sur le nom"
 
-#: builtin/rebase.c:546
+#: builtin/rebase.c:548
 msgid "cmd"
 msgstr "cmd"
 
-#: builtin/rebase.c:546
+#: builtin/rebase.c:548
 msgid "the command to run"
 msgstr "la commande à lancer"
 
-#: builtin/rebase.c:549 builtin/rebase.c:1421
+#: builtin/rebase.c:551 builtin/rebase.c:1427
 msgid "automatically re-schedule any `exec` that fails"
 msgstr "re-planifier automatiquement tout `exec` qui échoue"
 
-#: builtin/rebase.c:565
+#: builtin/rebase.c:567
 msgid "--[no-]rebase-cousins has no effect without --rebase-merges"
 msgstr "--[no-]rebase-cousins n'a aucun effet sans --rebase-merges"
 
-#: builtin/rebase.c:581
+#: builtin/rebase.c:583
 #, c-format
 msgid "%s requires the merge backend"
 msgstr "%s requiert un moteur de fusion"
 
-#: builtin/rebase.c:624
+#: builtin/rebase.c:626
 #, c-format
 msgid "could not get 'onto': '%s'"
 msgstr "impossible d'accéder 'onto' : '%s'"
 
-#: builtin/rebase.c:641
+#: builtin/rebase.c:643
 #, c-format
 msgid "invalid orig-head: '%s'"
 msgstr "orig-head invalide : '%s'"
 
-#: builtin/rebase.c:666
+#: builtin/rebase.c:668
 #, c-format
 msgid "ignoring invalid allow_rerere_autoupdate: '%s'"
 msgstr "allow_rerere_autoupdate invalide ignoré : '%s'"
 
-#: builtin/rebase.c:811 git-rebase--preserve-merges.sh:81
+#: builtin/rebase.c:813 git-rebase--preserve-merges.sh:81
 msgid ""
 "Resolve all conflicts manually, mark them as resolved with\n"
 "\"git add/rm <conflicted_files>\", then run \"git rebase --continue\".\n"
@@ -19587,7 +19990,7 @@ msgstr ""
 "arrêter\n"
 "et revenir à l'état antérieur à la commande, lancez \"git rebase --abort\"."
 
-#: builtin/rebase.c:894
+#: builtin/rebase.c:896
 #, c-format
 msgid ""
 "\n"
@@ -19606,7 +20009,7 @@ msgstr ""
 "\n"
 "Résultat, git ne peut pas les rebaser."
 
-#: builtin/rebase.c:1220
+#: builtin/rebase.c:1227
 #, c-format
 msgid ""
 "unrecognized empty type '%s'; valid values are \"drop\", \"keep\", and \"ask"
@@ -19615,7 +20018,7 @@ msgstr ""
 "type vide non connu '%s' ; les valeurs valides sont \"drop\" (abandonner), "
 "\"keep\" (garder) et \"ask\" (demander)."
 
-#: builtin/rebase.c:1238
+#: builtin/rebase.c:1245
 #, c-format
 msgid ""
 "%s\n"
@@ -19632,7 +20035,7 @@ msgstr ""
 "    git rebase '<branche>'\n"
 "\n"
 
-#: builtin/rebase.c:1254
+#: builtin/rebase.c:1261
 #, c-format
 msgid ""
 "If you wish to set tracking information for this branch you can do so with:\n"
@@ -19646,149 +20049,149 @@ msgstr ""
 "    git branch --set-upstream-to=%s/<branche> %s\n"
 "\n"
 
-#: builtin/rebase.c:1284
+#: builtin/rebase.c:1291
 msgid "exec commands cannot contain newlines"
 msgstr "les commandes exec ne peut pas contenir de retour à la ligne"
 
-#: builtin/rebase.c:1288
+#: builtin/rebase.c:1295
 msgid "empty exec command"
 msgstr "commande exec vide"
 
-#: builtin/rebase.c:1318
+#: builtin/rebase.c:1324
 msgid "rebase onto given branch instead of upstream"
 msgstr "rebaser sur la branche %s au lieu de la branche amont"
 
-#: builtin/rebase.c:1320
+#: builtin/rebase.c:1326
 msgid "use the merge-base of upstream and branch as the current base"
 msgstr ""
 "utiliser la base de fusion de l'amont et la branche comme base actuelle"
 
-#: builtin/rebase.c:1322
+#: builtin/rebase.c:1328
 msgid "allow pre-rebase hook to run"
 msgstr "permettre le lancement du crochet pre-rebase"
 
-#: builtin/rebase.c:1324
+#: builtin/rebase.c:1330
 msgid "be quiet. implies --no-stat"
 msgstr "être silencieux. implique --no-stat"
 
-#: builtin/rebase.c:1330
+#: builtin/rebase.c:1336
 msgid "do not show diffstat of what changed upstream"
 msgstr "ne pas afficher un diffstat de ce qui a changé en amont"
 
-#: builtin/rebase.c:1333
+#: builtin/rebase.c:1339
 msgid "add a Signed-off-by trailer to each commit"
 msgstr "ajouter une ligne Signed-off-by à chaque message de validation"
 
-#: builtin/rebase.c:1336
+#: builtin/rebase.c:1342
 msgid "make committer date match author date"
 msgstr "mettre la date de validateur à la date auteur"
 
-#: builtin/rebase.c:1338
+#: builtin/rebase.c:1344
 msgid "ignore author date and use current date"
 msgstr "ignorer la date d'auteur et utilise la date actuelle"
 
-#: builtin/rebase.c:1340
+#: builtin/rebase.c:1346
 msgid "synonym of --reset-author-date"
 msgstr "synonyme pour --reset-author-date"
 
-#: builtin/rebase.c:1342 builtin/rebase.c:1346
+#: builtin/rebase.c:1348 builtin/rebase.c:1352
 msgid "passed to 'git apply'"
 msgstr "passé jusqu'à git-apply"
 
-#: builtin/rebase.c:1344
+#: builtin/rebase.c:1350
 msgid "ignore changes in whitespace"
 msgstr "ignorer des modifications d'espaces"
 
-#: builtin/rebase.c:1348 builtin/rebase.c:1351
+#: builtin/rebase.c:1354 builtin/rebase.c:1357
 msgid "cherry-pick all commits, even if unchanged"
 msgstr "picorer tous les commits, même sans modifiant"
 
-#: builtin/rebase.c:1353
+#: builtin/rebase.c:1359
 msgid "continue"
 msgstr "continuer"
 
-#: builtin/rebase.c:1356
+#: builtin/rebase.c:1362
 msgid "skip current patch and continue"
 msgstr "sauter le patch courant et continuer"
 
-#: builtin/rebase.c:1358
+#: builtin/rebase.c:1364
 msgid "abort and check out the original branch"
 msgstr "abandonner et extraire la branche d'origine"
 
-#: builtin/rebase.c:1361
+#: builtin/rebase.c:1367
 msgid "abort but keep HEAD where it is"
 msgstr "abandonne mais garde HEAD où il est"
 
-#: builtin/rebase.c:1362
+#: builtin/rebase.c:1368
 msgid "edit the todo list during an interactive rebase"
 msgstr "éditer la liste à faire lors d'un rebasage interactif"
 
-#: builtin/rebase.c:1365
+#: builtin/rebase.c:1371
 msgid "show the patch file being applied or merged"
 msgstr "afficher le patch en cours d'application ou de fusion"
 
-#: builtin/rebase.c:1368
+#: builtin/rebase.c:1374
 msgid "use apply strategies to rebase"
 msgstr "utiliser des stratégies d'application pour rebaser"
 
-#: builtin/rebase.c:1372
+#: builtin/rebase.c:1378
 msgid "use merging strategies to rebase"
 msgstr "utiliser des stratégies de fusion pour rebaser"
 
-#: builtin/rebase.c:1376
+#: builtin/rebase.c:1382
 msgid "let the user edit the list of commits to rebase"
 msgstr "laisser l'utilisateur éditer la liste des commits à rebaser"
 
-#: builtin/rebase.c:1380
+#: builtin/rebase.c:1386
 msgid "(DEPRECATED) try to recreate merges instead of ignoring them"
 msgstr "(DÉCONSEILLÉ) essayer de recréer les fusions au lieu de les ignorer"
 
-#: builtin/rebase.c:1385
+#: builtin/rebase.c:1391
 msgid "how to handle commits that become empty"
 msgstr "comment gérer les commits qui deviennent vides"
 
-#: builtin/rebase.c:1392
+#: builtin/rebase.c:1398
 msgid "move commits that begin with squash!/fixup! under -i"
 msgstr "déplace les commits qui commencent par squash!/fixup! sous -i"
 
-#: builtin/rebase.c:1399
+#: builtin/rebase.c:1405
 msgid "add exec lines after each commit of the editable list"
 msgstr "ajouter les lignes exec après chaque commit de la liste éditable"
 
-#: builtin/rebase.c:1403
+#: builtin/rebase.c:1409
 msgid "allow rebasing commits with empty messages"
 msgstr "autoriser les commits de rebasage avec des messages vides"
 
-#: builtin/rebase.c:1407
+#: builtin/rebase.c:1413
 msgid "try to rebase merges instead of skipping them"
 msgstr "essayer de rebaser les fusions au lieu de les garder"
 
-#: builtin/rebase.c:1410
+#: builtin/rebase.c:1416
 msgid "use 'merge-base --fork-point' to refine upstream"
 msgstr "utiliser 'merge-base --fork-point' pour raffiner l'amont"
 
-#: builtin/rebase.c:1412
+#: builtin/rebase.c:1418
 msgid "use the given merge strategy"
 msgstr "utiliser la stratégie de fusion indiquée"
 
-#: builtin/rebase.c:1414 builtin/revert.c:115
+#: builtin/rebase.c:1420 builtin/revert.c:115
 msgid "option"
 msgstr "option"
 
-#: builtin/rebase.c:1415
+#: builtin/rebase.c:1421
 msgid "pass the argument through to the merge strategy"
 msgstr "passer les arguments jusqu'à la stratégie de fusion"
 
-#: builtin/rebase.c:1418
+#: builtin/rebase.c:1424
 msgid "rebase all reachable commits up to the root(s)"
 msgstr "rebaser tous les objets inatteignables depuis les racines"
 
-#: builtin/rebase.c:1423
+#: builtin/rebase.c:1429
 msgid "apply all changes, even those already present upstream"
 msgstr ""
 "appliquer toutes les modifications, même celles déjà présentes en amont"
 
-#: builtin/rebase.c:1440
+#: builtin/rebase.c:1446
 msgid ""
 "the rebase.useBuiltin support has been removed!\n"
 "See its entry in 'git help config' for details."
@@ -19796,44 +20199,44 @@ msgstr ""
 "les support de rebase.useBuiltin a été supprimé !\n"
 "Voir son entrée dans 'git help config' pour plus de détails."
 
-#: builtin/rebase.c:1446
+#: builtin/rebase.c:1452
 msgid "It looks like 'git am' is in progress. Cannot rebase."
 msgstr "Il semble que 'git-am' soit en cours. Impossible de rebaser."
 
-#: builtin/rebase.c:1487
+#: builtin/rebase.c:1493
 msgid ""
 "git rebase --preserve-merges is deprecated. Use --rebase-merges instead."
 msgstr ""
 "git rebase --preserve-merges est déconseillé. Utilisez --rebase-merges à la "
 "place."
 
-#: builtin/rebase.c:1492
+#: builtin/rebase.c:1498
 msgid "cannot combine '--keep-base' with '--onto'"
 msgstr "impossible de combiner '--keep-base' avec '--onto'"
 
-#: builtin/rebase.c:1494
+#: builtin/rebase.c:1500
 msgid "cannot combine '--keep-base' with '--root'"
 msgstr "impossible de combiner '--keep-base' avec '--root'"
 
-#: builtin/rebase.c:1498
+#: builtin/rebase.c:1504
 msgid "cannot combine '--root' with '--fork-point'"
 msgstr "impossible de combiner '--root' avec '--fork-point'"
 
-#: builtin/rebase.c:1501
+#: builtin/rebase.c:1507
 msgid "No rebase in progress?"
 msgstr "Pas de rebasage en cours ?"
 
-#: builtin/rebase.c:1505
+#: builtin/rebase.c:1511
 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."
 
-#: builtin/rebase.c:1528 t/helper/test-fast-rebase.c:123
+#: builtin/rebase.c:1534 t/helper/test-fast-rebase.c:123
 msgid "Cannot read HEAD"
 msgstr "Impossible de lire HEAD"
 
-#: builtin/rebase.c:1540
+#: builtin/rebase.c:1546
 msgid ""
 "You must edit all merge conflicts and then\n"
 "mark them as resolved using git add"
@@ -19841,16 +20244,16 @@ msgstr ""
 "Vous devez éditer tous les conflits de fusion et\n"
 "les marquer comme résolus avec git add"
 
-#: builtin/rebase.c:1559
+#: builtin/rebase.c:1565
 msgid "could not discard worktree changes"
 msgstr "Impossible de supprimer les changements de l'arbre de travail"
 
-#: builtin/rebase.c:1578
+#: builtin/rebase.c:1584
 #, c-format
 msgid "could not move back to %s"
 msgstr "Impossible de revenir à %s"
 
-#: builtin/rebase.c:1624
+#: builtin/rebase.c:1630
 #, c-format
 msgid ""
 "It seems that there is already a %s directory, and\n"
@@ -19872,136 +20275,136 @@ msgstr ""
 "chose\n"
 "d'important ici.\n"
 
-#: builtin/rebase.c:1652
+#: builtin/rebase.c:1658
 msgid "switch `C' expects a numerical value"
 msgstr "l'option `C' attend un valeur numérique"
 
-#: builtin/rebase.c:1694
+#: builtin/rebase.c:1700
 #, c-format
 msgid "Unknown mode: %s"
 msgstr "mode inconnu : %s"
 
-#: builtin/rebase.c:1733
+#: builtin/rebase.c:1739
 msgid "--strategy requires --merge or --interactive"
 msgstr "--strategy requiert --merge ou --interactive"
 
-#: builtin/rebase.c:1763
+#: builtin/rebase.c:1769
 msgid "cannot combine apply options with merge options"
 msgstr ""
 "impossible de combiner les options d'application avec les options de fusion"
 
-#: builtin/rebase.c:1776
+#: builtin/rebase.c:1782
 #, c-format
 msgid "Unknown rebase backend: %s"
 msgstr "backend de rebasage inconnu : %s"
 
-#: builtin/rebase.c:1806
+#: builtin/rebase.c:1812
 msgid "--reschedule-failed-exec requires --exec or --interactive"
 msgstr "--reschedule-failed-exec requiert --exec ou --interactive"
 
-#: builtin/rebase.c:1826
+#: builtin/rebase.c:1832
 msgid "cannot combine '--preserve-merges' with '--rebase-merges'"
 msgstr "impossible de combiner '--preserve-merges' avec '--rebase-merges'"
 
-#: builtin/rebase.c:1830
+#: builtin/rebase.c:1836
 msgid ""
 "error: cannot combine '--preserve-merges' with '--reschedule-failed-exec'"
 msgstr ""
 "erreur : impossible de combiner '--preserve-merges' avec '--reschedule-"
 "failed-exec'"
 
-#: builtin/rebase.c:1854
+#: builtin/rebase.c:1860
 #, c-format
 msgid "invalid upstream '%s'"
 msgstr "amont invalide '%s'"
 
-#: builtin/rebase.c:1860
+#: builtin/rebase.c:1866
 msgid "Could not create new root commit"
 msgstr "Impossible de créer un nouveau commit racine"
 
-#: builtin/rebase.c:1886
+#: builtin/rebase.c:1892
 #, c-format
 msgid "'%s': need exactly one merge base with branch"
 msgstr "'%s': exactement une base de fusion nécessaire avec une branche"
 
-#: builtin/rebase.c:1889
+#: builtin/rebase.c:1895
 #, c-format
 msgid "'%s': need exactly one merge base"
 msgstr "'%s': exactement une base de fusion nécessaire"
 
-#: builtin/rebase.c:1897
+#: builtin/rebase.c:1903
 #, c-format
 msgid "Does not point to a valid commit '%s'"
 msgstr "ne pointe pas sur une validation valide : '%s'"
 
-#: builtin/rebase.c:1923
+#: builtin/rebase.c:1931
 #, c-format
 msgid "fatal: no such branch/commit '%s'"
 msgstr "fatal : pas de branche ou commit '%s'"
 
-#: builtin/rebase.c:1931 builtin/submodule--helper.c:40
+#: builtin/rebase.c:1939 builtin/submodule--helper.c:40
 #: builtin/submodule--helper.c:2414
 #, c-format
 msgid "No such ref: %s"
 msgstr "Référence inexistante : %s"
 
-#: builtin/rebase.c:1942
+#: builtin/rebase.c:1950
 msgid "Could not resolve HEAD to a revision"
 msgstr "Impossible de résoudre le commit HEAD vers un révision"
 
-#: builtin/rebase.c:1963
+#: builtin/rebase.c:1971
 msgid "Please commit or stash them."
 msgstr "Veuillez les valider ou les remiser."
 
-#: builtin/rebase.c:1999
+#: builtin/rebase.c:2007
 #, c-format
 msgid "could not switch to %s"
 msgstr "Impossible de basculer vers %s"
 
-#: builtin/rebase.c:2010
+#: builtin/rebase.c:2018
 msgid "HEAD is up to date."
 msgstr "HEAD est à jour."
 
-#: builtin/rebase.c:2012
+#: builtin/rebase.c:2020
 #, c-format
 msgid "Current branch %s is up to date.\n"
 msgstr "La branche courante %s est à jour.\n"
 
-#: builtin/rebase.c:2020
+#: builtin/rebase.c:2028
 msgid "HEAD is up to date, rebase forced."
 msgstr "HEAD est à jour, rebasage forcé."
 
-#: builtin/rebase.c:2022
+#: builtin/rebase.c:2030
 #, c-format
 msgid "Current branch %s is up to date, rebase forced.\n"
 msgstr "La branche courante %s est à jour, rebasage forcé.\n"
 
-#: builtin/rebase.c:2030
+#: builtin/rebase.c:2038
 msgid "The pre-rebase hook refused to rebase."
 msgstr "Le crochet pre-rebase a refusé de rebaser."
 
-#: builtin/rebase.c:2037
+#: builtin/rebase.c:2045
 #, c-format
 msgid "Changes to %s:\n"
 msgstr "Changements vers %s :\n"
 
-#: builtin/rebase.c:2040
+#: builtin/rebase.c:2048
 #, c-format
 msgid "Changes from %s to %s:\n"
 msgstr "Changements de %s sur %s :\n"
 
-#: builtin/rebase.c:2065
+#: builtin/rebase.c:2073
 #, c-format
 msgid "First, rewinding head to replay your work on top of it...\n"
 msgstr ""
 "Rembobinage préalable de head pour pouvoir rejouer votre travail par-"
 "dessus...\n"
 
-#: builtin/rebase.c:2074
+#: builtin/rebase.c:2082
 msgid "Could not detach HEAD"
 msgstr "Impossible de détacher HEAD"
 
-#: builtin/rebase.c:2083
+#: builtin/rebase.c:2091
 #, c-format
 msgid "Fast-forwarded %s to %s.\n"
 msgstr "Avance rapide de %s sur %s.\n"
@@ -20095,36 +20498,36 @@ msgstr "git reflog exists <référence>"
 msgid "'%s' is not a valid timestamp"
 msgstr "'%s' n'est pas un horodatage valide"
 
-#: builtin/reflog.c:606
+#: builtin/reflog.c:609
 #, c-format
 msgid "Marking reachable objects..."
 msgstr "Marquage des objets inaccessibles..."
 
-#: builtin/reflog.c:644
+#: builtin/reflog.c:647
 #, c-format
 msgid "%s points nowhere!"
 msgstr "%s ne pointe nulle part !"
 
-#: builtin/reflog.c:696
+#: builtin/reflog.c:699
 msgid "no reflog specified to delete"
 msgstr "pas de journal de références à supprimer spécifié"
 
-#: builtin/reflog.c:705
+#: builtin/reflog.c:708
 #, c-format
 msgid "not a reflog: %s"
 msgstr "'%s' n'est pas un journal de références"
 
-#: builtin/reflog.c:710
+#: builtin/reflog.c:713
 #, c-format
 msgid "no reflog for '%s'"
 msgstr "pas de journal de références pour '%s'"
 
-#: builtin/reflog.c:756
+#: builtin/reflog.c:759
 #, c-format
 msgid "invalid ref format: %s"
 msgstr "format de référence invalide : %s"
 
-#: builtin/reflog.c:765
+#: builtin/reflog.c:768
 msgid "git reflog [ show | expire | delete | exists ]"
 msgstr "git reflog [ show | expire | delete | exists ]"
 
@@ -20648,11 +21051,11 @@ msgstr "Pas d'URL trouvée : %s"
 msgid "Will not delete all non-push URLs"
 msgstr "Pas de suppression de toutes les URLs non-push"
 
-#: builtin/repack.c:25
+#: builtin/repack.c:26
 msgid "git repack [<options>]"
 msgstr "git repack [<options>]"
 
-#: builtin/repack.c:30
+#: builtin/repack.c:31
 msgid ""
 "Incremental repacks are incompatible with bitmap indexes.  Use\n"
 "--no-write-bitmap-index or disable the pack.writebitmaps configuration."
@@ -20661,122 +21064,122 @@ msgstr ""
 "Utilisez\n"
 "--no-write-bitmap-index ou désactivez le paramètre pack.writebitmaps."
 
-#: builtin/repack.c:197
+#: builtin/repack.c:198
 msgid "could not start pack-objects to repack promisor objects"
 msgstr ""
 "ne pas démarrer pack-objects pour ré-empaqueter les objects de prometteur"
 
-#: builtin/repack.c:268 builtin/repack.c:447
+#: builtin/repack.c:270 builtin/repack.c:446
 msgid "repack: Expecting full hex object ID lines only from pack-objects."
 msgstr ""
 "repack : attente de lignes d'Id d'objets en hexa complet seulement depuis "
 "les objects de paquet."
 
-#: builtin/repack.c:295
+#: builtin/repack.c:294
 msgid "could not finish pack-objects to repack promisor objects"
 msgstr ""
 "impossible de terminer pack-objects  pour ré-empaqueter les objets de "
 "prometteur"
 
-#: builtin/repack.c:323
+#: builtin/repack.c:322
 msgid "pack everything in a single pack"
 msgstr "empaqueter tout dans un seul paquet"
 
-#: builtin/repack.c:325
+#: builtin/repack.c:324
 msgid "same as -a, and turn unreachable objects loose"
 msgstr "identique à -a et transformer les objets inaccessibles en suspens"
 
-#: builtin/repack.c:328
+#: builtin/repack.c:327
 msgid "remove redundant packs, and run git-prune-packed"
 msgstr "supprimer les paquets redondants et lancer git-prune-packed"
 
-#: builtin/repack.c:330
+#: builtin/repack.c:329
 msgid "pass --no-reuse-delta to git-pack-objects"
 msgstr "passer --no-reuse-delta à git-pack-objects"
 
-#: builtin/repack.c:332
+#: builtin/repack.c:331
 msgid "pass --no-reuse-object to git-pack-objects"
 msgstr "passer --no-reuse-object à git-pack-objects"
 
-#: builtin/repack.c:334
+#: builtin/repack.c:333
 msgid "do not run git-update-server-info"
 msgstr "ne pas lancer git update-server-info"
 
-#: builtin/repack.c:337
+#: builtin/repack.c:336
 msgid "pass --local to git-pack-objects"
 msgstr "passer --local à git-pack-objects"
 
-#: builtin/repack.c:339
+#: builtin/repack.c:338
 msgid "write bitmap index"
 msgstr "écrire un index en bitmap"
 
-#: builtin/repack.c:341
+#: builtin/repack.c:340
 msgid "pass --delta-islands to git-pack-objects"
 msgstr "passer --delta-islands à git-pack-objects"
 
-#: builtin/repack.c:342
+#: builtin/repack.c:341
 msgid "approxidate"
 msgstr "date approximative"
 
-#: builtin/repack.c:343
+#: builtin/repack.c:342
 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:345
+#: builtin/repack.c:344
 msgid "with -a, repack unreachable objects"
 msgstr "avec -a, repaquétiser les objets inaccessibles"
 
-#: builtin/repack.c:347
+#: builtin/repack.c:346
 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:348 builtin/repack.c:354
+#: builtin/repack.c:347 builtin/repack.c:353
 msgid "bytes"
 msgstr "octets"
 
-#: builtin/repack.c:349
+#: builtin/repack.c:348
 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:351
+#: builtin/repack.c:350
 msgid "limits the maximum delta depth"
 msgstr "limite la profondeur maximale des deltas"
 
-#: builtin/repack.c:353
+#: builtin/repack.c:352
 msgid "limits the maximum number of threads"
 msgstr "limite le nombre maximal de fils"
 
-#: builtin/repack.c:355
+#: builtin/repack.c:354
 msgid "maximum size of each packfile"
 msgstr "taille maximum de chaque fichier paquet"
 
-#: builtin/repack.c:357
+#: builtin/repack.c:356
 msgid "repack objects in packs marked with .keep"
 msgstr "réempaqueter les objets dans des paquets marqués avec .keep"
 
-#: builtin/repack.c:359
+#: builtin/repack.c:358
 msgid "do not repack this pack"
 msgstr "ne pas rempaqueter ce paquet"
 
-#: builtin/repack.c:369
+#: builtin/repack.c:368
 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:373
+#: builtin/repack.c:372
 msgid "--keep-unreachable and -A are incompatible"
 msgstr "--keep-unreachable et -A sont incompatibles"
 
-#: builtin/repack.c:456
+#: builtin/repack.c:455
 msgid "Nothing new to pack."
 msgstr "Rien de neuf à empaqueter."
 
-#: builtin/repack.c:486
+#: builtin/repack.c:485
 #, c-format
 msgid "missing required file: %s"
 msgstr "fichier nécessaire manquant : %s"
 
-#: builtin/repack.c:488
+#: builtin/repack.c:487
 #, c-format
 msgid "could not unlink: %s"
 msgstr "impossible de délier : '%s'"
@@ -21111,8 +21514,8 @@ msgstr "HEAD est maintenant à %s"
 msgid "Cannot do a %s reset in the middle of a merge."
 msgstr "Impossible de faire un \"reset %s\" au milieu d'une fusion."
 
-#: builtin/reset.c:295 builtin/stash.c:520 builtin/stash.c:594
-#: builtin/stash.c:618
+#: builtin/reset.c:295 builtin/stash.c:587 builtin/stash.c:661
+#: builtin/stash.c:685
 msgid "be quiet, only report errors"
 msgstr "être silencieux, afficher seulement les erreurs"
 
@@ -21200,19 +21603,19 @@ msgstr "Impossible de réinitialiser le fichier d'index à la révision '%s'."
 msgid "Could not write new index file."
 msgstr "Impossible d'écrire le nouveau fichier d'index."
 
-#: builtin/rev-list.c:499
+#: builtin/rev-list.c:534
 msgid "cannot combine --exclude-promisor-objects and --missing"
 msgstr "impossible de combiner --exclude-promisor-objects et --missing"
 
-#: builtin/rev-list.c:560
+#: builtin/rev-list.c:595
 msgid "object filtering requires --objects"
 msgstr "le filtrage d'objet exige --objects"
 
-#: builtin/rev-list.c:610
+#: builtin/rev-list.c:651
 msgid "rev-list does not support display of notes"
 msgstr "rev-list ne supporte l'affichage des notes"
 
-#: builtin/rev-list.c:615
+#: builtin/rev-list.c:656
 msgid "marked counting is incompatible with --objects"
 msgstr "le comptage marqué est incompatible avec --objects"
 
@@ -21457,55 +21860,55 @@ msgstr "git shortlog [<options>] [<intervalle-révisions>] [[--] <chemin>...]"
 msgid "git log --pretty=short | git shortlog [<options>]"
 msgstr "git log --pretty=short | git shortlog [<options>]"
 
-#: builtin/shortlog.c:135
+#: builtin/shortlog.c:123
 msgid "using multiple --group options with stdin is not supported"
 msgstr ""
 "l'utilisation de plusieurs options --group avec stdin n'est pas supportée"
 
-#: builtin/shortlog.c:145
+#: builtin/shortlog.c:133
 msgid "using --group=trailer with stdin is not supported"
 msgstr "l'utilisation de --group=trailer avec stdin n'est pas supportée"
 
-#: builtin/shortlog.c:335
+#: builtin/shortlog.c:323
 #, c-format
 msgid "unknown group type: %s"
 msgstr "type de groupe inconnu : %s"
 
-#: builtin/shortlog.c:363
-msgid "Group by committer rather than author"
-msgstr "Grouper par validateur plutôt que par auteur"
+#: builtin/shortlog.c:351
+msgid "group by committer rather than author"
+msgstr "grouper par validateur plutôt que par auteur"
 
-#: builtin/shortlog.c:366
+#: builtin/shortlog.c:354
 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:368
-msgid "Suppress commit descriptions, only provides commit count"
+#: builtin/shortlog.c:356
+msgid "suppress commit descriptions, only provides commit count"
 msgstr ""
-"Supprimer les descriptions de validation, fournit seulement le nombre de "
+"supprimer les descriptions de validation, fournit seulement le nombre de "
 "validations"
 
-#: builtin/shortlog.c:370
-msgid "Show the email address of each author"
-msgstr "Afficher l'adresse courriel de chaque auteur"
+#: builtin/shortlog.c:358
+msgid "show the email address of each author"
+msgstr "afficher l'adresse courriel de chaque auteur"
 
-#: builtin/shortlog.c:371
+#: builtin/shortlog.c:359
 msgid "<w>[,<i1>[,<i2>]]"
 msgstr "<w>[,<i1>[,<i2>]]"
 
-#: builtin/shortlog.c:372
-msgid "Linewrap output"
-msgstr "Couper les lignes"
+#: builtin/shortlog.c:360
+msgid "linewrap output"
+msgstr "couper les lignes"
 
-#: builtin/shortlog.c:374
+#: builtin/shortlog.c:362
 msgid "field"
 msgstr "champ"
 
-#: builtin/shortlog.c:375
-msgid "Group by field"
-msgstr "Grouper par champ"
+#: builtin/shortlog.c:363
+msgid "group by field"
+msgstr "grouper par champ"
 
-#: builtin/shortlog.c:403
+#: builtin/shortlog.c:391
 msgid "too many arguments given outside repository"
 msgstr "trop d'arguments fournis hors d'un dépôt"
 
@@ -21708,74 +22111,74 @@ msgstr ""
 msgid "git sparse-checkout (init|list|set|add|reapply|disable) <options>"
 msgstr "git sparse-checkout (init|list|set|add|reapply|disable) <options>"
 
-#: builtin/sparse-checkout.c:50
+#: builtin/sparse-checkout.c:45
 msgid "git sparse-checkout list"
 msgstr "git sparse-checkout list"
 
-#: builtin/sparse-checkout.c:76
+#: builtin/sparse-checkout.c:71
 msgid "this worktree is not sparse (sparse-checkout file may not exist)"
 msgstr ""
 "cet arbre de travail n'est pas partiel (le fichier sparse-checkout pourrait "
 "ne pas exister)"
 
-#: builtin/sparse-checkout.c:228
+#: builtin/sparse-checkout.c:223
 msgid "failed to create directory for sparse-checkout file"
 msgstr ""
 "échec de la création du répertoire pour le fichier d'extraction partielle"
 
-#: builtin/sparse-checkout.c:269
+#: builtin/sparse-checkout.c:264
 msgid "unable to upgrade repository format to enable worktreeConfig"
 msgstr ""
 "impossible de mettre à jour le format de dépôt pour activer worktreeConfig"
 
-#: builtin/sparse-checkout.c:271
+#: builtin/sparse-checkout.c:266
 msgid "failed to set extensions.worktreeConfig setting"
 msgstr "échec de paramétrage extensions.worktreeConfig"
 
-#: builtin/sparse-checkout.c:288
+#: builtin/sparse-checkout.c:283
 msgid "git sparse-checkout init [--cone]"
 msgstr "git sparse-checkout init [--cone]"
 
-#: builtin/sparse-checkout.c:307
+#: builtin/sparse-checkout.c:302
 msgid "initialize the sparse-checkout in cone mode"
 msgstr "initialiser l'extraction partielle en mode cone"
 
-#: builtin/sparse-checkout.c:344
+#: builtin/sparse-checkout.c:339
 #, c-format
 msgid "failed to open '%s'"
 msgstr "échec à l'ouverture de '%s'"
 
-#: builtin/sparse-checkout.c:401
+#: builtin/sparse-checkout.c:396
 #, c-format
 msgid "could not normalize path %s"
 msgstr "impossible de normaliser le chemin '%s'"
 
-#: builtin/sparse-checkout.c:413
+#: builtin/sparse-checkout.c:408
 msgid "git sparse-checkout (set|add) (--stdin | <patterns>)"
 msgstr "git sparse-checkout (set|add) (--stdin | <motifs>)"
 
-#: builtin/sparse-checkout.c:438
+#: builtin/sparse-checkout.c:433
 #, c-format
 msgid "unable to unquote C-style string '%s'"
 msgstr "Impossible de décoter la chaîne en style C '%s'"
 
-#: builtin/sparse-checkout.c:492 builtin/sparse-checkout.c:516
+#: builtin/sparse-checkout.c:487 builtin/sparse-checkout.c:511
 msgid "unable to load existing sparse-checkout patterns"
 msgstr "impossible de charger les motifs de l'extraction partielle existants"
 
-#: builtin/sparse-checkout.c:561
+#: builtin/sparse-checkout.c:556
 msgid "read patterns from standard in"
 msgstr "lire les motifs depuis l'entrée standard"
 
-#: builtin/sparse-checkout.c:576
+#: builtin/sparse-checkout.c:571
 msgid "git sparse-checkout reapply"
 msgstr "git sparse-checkout reapply"
 
-#: builtin/sparse-checkout.c:595
+#: builtin/sparse-checkout.c:590
 msgid "git sparse-checkout disable"
 msgstr "git sparse-checkout disable"
 
-#: builtin/sparse-checkout.c:623
+#: builtin/sparse-checkout.c:618
 msgid "error while refreshing working directory"
 msgstr "erreur lors du rafraîchissement du répertoire de travail"
 
@@ -21865,155 +22268,167 @@ msgid "%s is not a valid reference"
 msgstr "%s n'est pas une référence valide"
 
 #: builtin/stash.c:225
-msgid "git stash clear with parameters is unimplemented"
-msgstr "git stash clear avec des paramètres n'est pas implémenté"
+msgid "git stash clear with arguments is unimplemented"
+msgstr "git stash clear avec des arguments n'est pas implémenté"
 
-#: builtin/stash.c:404
+#: builtin/stash.c:429
+#, c-format
+msgid ""
+"WARNING: Untracked file in way of tracked file!  Renaming\n"
+"            %s -> %s\n"
+"         to make room.\n"
+msgstr ""
+"AVERTISSEMENT : un fichier non-suivi en travers d'un fichier suivi ! "
+"Renommage\n"
+"            %s -> %s\n"
+"         pour faire de la place.\n"
+
+#: builtin/stash.c:490
 msgid "cannot apply a stash in the middle of a merge"
 msgstr "impossible d'appliquer un remisage en cours de fusion"
 
-#: builtin/stash.c:415
+#: builtin/stash.c:501
 #, c-format
 msgid "could not generate diff %s^!."
 msgstr "impossible de générer %s^!."
 
-#: builtin/stash.c:422
+#: builtin/stash.c:508
 msgid "conflicts in index. Try without --index."
 msgstr "conflits dans l'index. Essayez sans --index."
 
-#: builtin/stash.c:428
+#: builtin/stash.c:514
 msgid "could not save index tree"
 msgstr "impossible de sauvegarder l'arbre d'index"
 
-#: builtin/stash.c:437
+#: builtin/stash.c:523
 msgid "could not restore untracked files from stash"
 msgstr "impossible de restaurer les fichiers non-suivis depuis le remisage"
 
-#: builtin/stash.c:451
+#: builtin/stash.c:537
 #, c-format
 msgid "Merging %s with %s"
 msgstr "Fusion de %s avec %s"
 
-#: builtin/stash.c:461
+#: builtin/stash.c:547
 msgid "Index was not unstashed."
 msgstr "L'index n'a pas été sorti de remise."
 
-#: builtin/stash.c:522 builtin/stash.c:620
+#: builtin/stash.c:589 builtin/stash.c:687
 msgid "attempt to recreate the index"
 msgstr "tentative de recréer l'index"
 
-#: builtin/stash.c:566
+#: builtin/stash.c:633
 #, c-format
 msgid "Dropped %s (%s)"
 msgstr "%s supprimé (%s)"
 
-#: builtin/stash.c:569
+#: builtin/stash.c:636
 #, c-format
 msgid "%s: Could not drop stash entry"
 msgstr "%s : Impossible de supprimer l'élément de stash"
 
-#: builtin/stash.c:582
+#: builtin/stash.c:649
 #, c-format
 msgid "'%s' is not a stash reference"
 msgstr "'%s' n'est pas une référence de remisage"
 
-#: builtin/stash.c:632
+#: builtin/stash.c:699
 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."
 
-#: builtin/stash.c:655
+#: builtin/stash.c:722
 msgid "No branch name specified"
 msgstr "Aucune branche spécifiée"
 
-#: builtin/stash.c:799 builtin/stash.c:836
+#: builtin/stash.c:866 builtin/stash.c:903
 #, c-format
 msgid "Cannot update %s with %s"
 msgstr "Impossible de mettre à jour %s avec %s"
 
-#: builtin/stash.c:817 builtin/stash.c:1471 builtin/stash.c:1536
+#: builtin/stash.c:884 builtin/stash.c:1538 builtin/stash.c:1603
 msgid "stash message"
 msgstr "message pour le remisage"
 
-#: builtin/stash.c:827
+#: builtin/stash.c:894
 msgid "\"git stash store\" requires one <commit> argument"
 msgstr "\"git stash store\" exige un argument <commit>"
 
-#: builtin/stash.c:1042
+#: builtin/stash.c:1109
 msgid "No changes selected"
 msgstr "Aucun changement sélectionné"
 
-#: builtin/stash.c:1142
+#: builtin/stash.c:1209
 msgid "You do not have the initial commit yet"
 msgstr "Vous n'avez pas encore la validation initiale"
 
-#: builtin/stash.c:1169
+#: builtin/stash.c:1236
 msgid "Cannot save the current index state"
 msgstr "Impossible de sauver l'état courant de l'index"
 
-#: builtin/stash.c:1178
+#: builtin/stash.c:1245
 msgid "Cannot save the untracked files"
 msgstr "Impossible de sauver les fichiers non-suivis"
 
-#: builtin/stash.c:1189 builtin/stash.c:1198
+#: builtin/stash.c:1256 builtin/stash.c:1265
 msgid "Cannot save the current worktree state"
 msgstr "Impossible de sauver l'état courant de la copie de travail"
 
-#: builtin/stash.c:1226
+#: builtin/stash.c:1293
 msgid "Cannot record working tree state"
 msgstr "Impossible d'enregistrer l'état de la copie de travail"
 
-#: builtin/stash.c:1275
+#: builtin/stash.c:1342
 msgid "Can't use --patch and --include-untracked or --all at the same time"
 msgstr ""
 "Impossible d'utiliser --patch et --include-untracked ou --all en même temps"
 
-#: builtin/stash.c:1291
+#: builtin/stash.c:1358
 msgid "Did you forget to 'git add'?"
 msgstr "Vous avez sûrement oublié 'git add' ?"
 
-#: builtin/stash.c:1306
+#: builtin/stash.c:1373
 msgid "No local changes to save"
 msgstr "Pas de modifications locales à sauver"
 
-#: builtin/stash.c:1313
+#: builtin/stash.c:1380
 msgid "Cannot initialize stash"
 msgstr "Impossible d'initialiser le remisage"
 
-#: builtin/stash.c:1328
+#: builtin/stash.c:1395
 msgid "Cannot save the current status"
 msgstr "Impossible de sauver l'état courant"
 
-#: builtin/stash.c:1333
+#: builtin/stash.c:1400
 #, c-format
 msgid "Saved working directory and index state %s"
 msgstr "Arbre de travail et état de l'index sauvegardés dans %s"
 
-#: builtin/stash.c:1423
+#: builtin/stash.c:1490
 msgid "Cannot remove worktree changes"
 msgstr "Impossible de supprimer les changements de la copie de travail"
 
-#: builtin/stash.c:1462 builtin/stash.c:1527
+#: builtin/stash.c:1529 builtin/stash.c:1594
 msgid "keep index"
 msgstr "conserver l'index"
 
-#: builtin/stash.c:1464 builtin/stash.c:1529
+#: builtin/stash.c:1531 builtin/stash.c:1596
 msgid "stash in patch mode"
 msgstr "remiser une mode rustine"
 
-#: builtin/stash.c:1465 builtin/stash.c:1530
+#: builtin/stash.c:1532 builtin/stash.c:1597
 msgid "quiet mode"
 msgstr "mode silencieux"
 
-#: builtin/stash.c:1467 builtin/stash.c:1532
+#: builtin/stash.c:1534 builtin/stash.c:1599
 msgid "include untracked files in stash"
 msgstr "inclure les fichiers non suivis dans la remise"
 
-#: builtin/stash.c:1469 builtin/stash.c:1534
+#: builtin/stash.c:1536 builtin/stash.c:1601
 msgid "include ignore files"
 msgstr "inclure les fichiers ignorés"
 
-#: builtin/stash.c:1569
+#: builtin/stash.c:1636
 msgid ""
 "the stash.useBuiltin support has been removed!\n"
 "See its entry in 'git help config' for details."
@@ -22093,13 +22508,14 @@ msgstr ""
 "."
 
 #: builtin/submodule--helper.c:565
-msgid "Suppress output of entering each submodule command"
+msgid "suppress output of entering each submodule command"
 msgstr ""
-"Supprimer la sortie lors de l'entrée dans chaque commande de sous-module"
+"supprimer la sortie lors de l'entrée dans chaque commande de sous-module"
 
-#: builtin/submodule--helper.c:567 builtin/submodule--helper.c:1487
-msgid "Recurse into nested submodules"
-msgstr "Parcourir récursivement les sous-modules"
+#: builtin/submodule--helper.c:567 builtin/submodule--helper.c:888
+#: builtin/submodule--helper.c:1487
+msgid "recurse into nested submodules"
+msgstr "parcourir récursivement les sous-modules"
 
 #: builtin/submodule--helper.c:572
 msgid "git submodule--helper foreach [--quiet] [--recursive] [--] <command>"
@@ -22139,8 +22555,8 @@ msgstr ""
 "'%s'"
 
 #: builtin/submodule--helper.c:709
-msgid "Suppress output for initializing a submodule"
-msgstr "Supprimer la sortie lors de l'initialisation d'un sous-module"
+msgid "suppress output for initializing a submodule"
+msgstr "supprimer la sortie lors de l'initialisation d'un sous-module"
 
 #: builtin/submodule--helper.c:714
 msgid "git submodule--helper init [<options>] [<path>]"
@@ -22164,21 +22580,17 @@ msgid "failed to recurse into submodule '%s'"
 msgstr "récursion impossible dans le sous-module '%s'"
 
 #: builtin/submodule--helper.c:886 builtin/submodule--helper.c:1623
-msgid "Suppress submodule status output"
+msgid "suppress submodule status output"
 msgstr "supprimer la sortie d'état du sous-module"
 
 #: builtin/submodule--helper.c:887
 msgid ""
-"Use commit stored in the index instead of the one stored in the submodule "
+"use commit stored in the index instead of the one stored in the submodule "
 "HEAD"
 msgstr ""
-"Utiliser le commit stocké dans l'index au lieu de celui stocké dans la HEAD "
+"utiliser le commit stocké dans l'index au lieu de celui stocké dans la HEAD "
 "du sous-module"
 
-#: builtin/submodule--helper.c:888
-msgid "recurse into nested submodules"
-msgstr "parcourir récursivement les sous-modules"
-
 #: builtin/submodule--helper.c:893
 msgid "git submodule status [--quiet] [--cached] [--recursive] [<path>...]"
 msgstr "git submodule status [--quiet] [--cached] [--recursive] [<chemin>...]"
@@ -22264,9 +22676,9 @@ 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:1485
-msgid "Suppress output of synchronizing submodule url"
+msgid "suppress output of synchronizing submodule url"
 msgstr ""
-"Supprimer la sortie lors de la synchronisation de l'URL d'un sous-module"
+"supprimer la sortie lors de la synchronisation de l'URL d'un sous-module"
 
 #: builtin/submodule--helper.c:1492
 msgid "git submodule--helper sync [--quiet] [--recursive] [<path>]"
@@ -22312,14 +22724,14 @@ 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:1624
-msgid "Remove submodule working trees even if they contain local changes"
+msgid "remove submodule working trees even if they contain local changes"
 msgstr ""
-"Ã\89liminer les arbres de travail des sous-modules même s'ils contiennent des "
+"éliminer les arbres de travail des sous-modules même s'ils contiennent des "
 "modifications locales"
 
 #: builtin/submodule--helper.c:1625
-msgid "Unregister all submodules"
-msgstr "Désenregistrer tous les sous-modules"
+msgid "unregister all submodules"
+msgstr "désenregistrer tous les sous-modules"
 
 #: builtin/submodule--helper.c:1630
 msgid ""
@@ -22469,8 +22881,8 @@ msgid "rebase, merge, checkout or none"
 msgstr "valeurs possibles : rebase, merge, checkout ou none"
 
 #: builtin/submodule--helper.c:2340
-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é"
+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:2343
 msgid "parallel jobs"
@@ -22541,8 +22953,8 @@ msgstr ""
 "veuillez vous assurer que le fichier .gitmodules est dans l'arbre de travail"
 
 #: builtin/submodule--helper.c:2681
-msgid "Suppress output for setting url of a submodule"
-msgstr "Supprimer la sortie lors du paramétrage de l'url d'un sous-module"
+msgid "suppress output for setting url of a submodule"
+msgstr "supprimer la sortie lors du paramétrage de l'url d'un sous-module"
 
 #: builtin/submodule--helper.c:2685
 msgid "git submodule--helper set-url [--quiet] <path> <newurl>"
@@ -22575,7 +22987,7 @@ msgstr "--branch ou --default requis"
 msgid "--branch and --default are mutually exclusive"
 msgstr "--branch et --default sont mutuellement exclusifs"
 
-#: builtin/submodule--helper.c:2792 git.c:438 git.c:711
+#: builtin/submodule--helper.c:2792 git.c:441 git.c:714
 #, c-format
 msgid "%s doesn't support --super-prefix"
 msgstr "%s ne gère pas --super-prefix"
@@ -22647,12 +23059,12 @@ msgstr "git tag -v [--format=<format>] <nométiquette>..."
 msgid "tag '%s' not found."
 msgstr "étiquette '%s' non trouvée."
 
-#: builtin/tag.c:105
+#: builtin/tag.c:124
 #, c-format
 msgid "Deleted tag '%s' (was %s)\n"
 msgstr "Étiquette '%s' supprimée (elle était sur %s)\n"
 
-#: builtin/tag.c:135
+#: builtin/tag.c:159
 #, c-format
 msgid ""
 "\n"
@@ -22665,7 +23077,7 @@ msgstr ""
 "  %s\n"
 "Les lignes commençant par '%c' seront ignorées.\n"
 
-#: builtin/tag.c:139
+#: builtin/tag.c:163
 #, c-format
 msgid ""
 "\n"
@@ -22680,15 +23092,11 @@ 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:198
+#: builtin/tag.c:230
 msgid "unable to sign the tag"
 msgstr "impossible de signer l'étiquette"
 
-#: builtin/tag.c:200
-msgid "unable to write tag file"
-msgstr "impossible d'écrire le fichier d'étiquettes"
-
-#: builtin/tag.c:216
+#: builtin/tag.c:248
 #, c-format
 msgid ""
 "You have created a nested tag. The object referred to by your new tag is\n"
@@ -22703,139 +23111,135 @@ msgstr ""
 "\n"
 "\tgit tag -f %s %s^{}"
 
-#: builtin/tag.c:232
+#: builtin/tag.c:264
 msgid "bad object type."
 msgstr "mauvais type d'objet."
 
-#: builtin/tag.c:285
+#: builtin/tag.c:317
 msgid "no tag message?"
 msgstr "pas de message pour l'étiquette ?"
 
-#: builtin/tag.c:292
+#: builtin/tag.c:324
 #, 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:403
+#: builtin/tag.c:435
 msgid "list tag names"
 msgstr "afficher les noms des étiquettes"
 
-#: builtin/tag.c:405
+#: builtin/tag.c:437
 msgid "print <n> lines of each tag message"
 msgstr "affiche <n> lignes de chaque message d'étiquette"
 
-#: builtin/tag.c:407
+#: builtin/tag.c:439
 msgid "delete tags"
 msgstr "supprimer des étiquettes"
 
-#: builtin/tag.c:408
+#: builtin/tag.c:440
 msgid "verify tags"
 msgstr "vérifier des étiquettes"
 
-#: builtin/tag.c:410
+#: builtin/tag.c:442
 msgid "Tag creation options"
 msgstr "Options de création de l'étiquette"
 
-#: builtin/tag.c:412
+#: builtin/tag.c:444
 msgid "annotated tag, needs a message"
 msgstr "étiquette annotée, nécessite un message"
 
-#: builtin/tag.c:414
+#: builtin/tag.c:446
 msgid "tag message"
 msgstr "message pour l'étiquette"
 
-#: builtin/tag.c:416
+#: builtin/tag.c:448
 msgid "force edit of tag message"
 msgstr "forcer l'édition du message d'étiquetage"
 
-#: builtin/tag.c:417
+#: builtin/tag.c:449
 msgid "annotated and GPG-signed tag"
 msgstr "étiquette annotée et signée avec GPG"
 
-#: builtin/tag.c:420
+#: builtin/tag.c:452
 msgid "use another key to sign the tag"
 msgstr "utiliser une autre clé pour signer l'étiquette"
 
-#: builtin/tag.c:421
+#: builtin/tag.c:453
 msgid "replace the tag if exists"
 msgstr "remplacer l'étiquette si elle existe"
 
-#: builtin/tag.c:422 builtin/update-ref.c:505
+#: builtin/tag.c:454 builtin/update-ref.c:505
 msgid "create a reflog"
 msgstr "créer un reflog"
 
-#: builtin/tag.c:424
+#: builtin/tag.c:456
 msgid "Tag listing options"
 msgstr "Options d'affichage des étiquettes"
 
-#: builtin/tag.c:425
+#: builtin/tag.c:457
 msgid "show tag list in columns"
 msgstr "afficher la liste des étiquettes sous forme de colonnes"
 
-#: builtin/tag.c:426 builtin/tag.c:428
+#: builtin/tag.c:458 builtin/tag.c:460
 msgid "print only tags that contain the commit"
 msgstr "afficher seulement les étiquettes qui contiennent la validation"
 
-#: builtin/tag.c:427 builtin/tag.c:429
+#: builtin/tag.c:459 builtin/tag.c:461
 msgid "print only tags that don't contain the commit"
 msgstr "afficher seulement les étiquettes qui ne contiennent pas la validation"
 
-#: builtin/tag.c:430
+#: builtin/tag.c:462
 msgid "print only tags that are merged"
 msgstr "afficher seulement les étiquettes qui sont fusionnées"
 
-#: builtin/tag.c:431
+#: builtin/tag.c:463
 msgid "print only tags that are not merged"
 msgstr "afficher seulement les étiquettes qui ne sont pas fusionnées"
 
-#: builtin/tag.c:435
+#: builtin/tag.c:467
 msgid "print only tags of the object"
 msgstr "afficher seulement les étiquettes de l'objet"
 
-#: builtin/tag.c:483
+#: builtin/tag.c:515
 msgid "--column and -n are incompatible"
 msgstr "--column et -n sont incompatibles"
 
-#: builtin/tag.c:505
+#: builtin/tag.c:537
 msgid "-n option is only allowed in list mode"
 msgstr "l'option -n est autorisée seulement en mode de liste"
 
-#: builtin/tag.c:507
+#: builtin/tag.c:539
 msgid "--contains option is only allowed in list mode"
 msgstr "l'option --contains est autorisée seulement en mode de liste"
 
-#: builtin/tag.c:509
+#: builtin/tag.c:541
 msgid "--no-contains option is only allowed in list mode"
 msgstr "l'option --contains est autorisée seulement en mode liste"
 
-#: builtin/tag.c:511
+#: builtin/tag.c:543
 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:513
+#: builtin/tag.c:545
 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:524
+#: builtin/tag.c:556
 msgid "only one -F or -m option is allowed."
 msgstr "une seule option -F ou -m est autorisée."
 
-#: builtin/tag.c:543
-msgid "too many params"
-msgstr "trop de paramètres"
-
-#: builtin/tag.c:549
+#: builtin/tag.c:581
 #, c-format
 msgid "'%s' is not a valid tag name."
 msgstr "'%s' n'est pas un nom d'étiquette valide."
 
-#: builtin/tag.c:554
+#: builtin/tag.c:586
 #, c-format
 msgid "tag '%s' already exists"
 msgstr "l'étiquette '%s' existe déjà"
 
-#: builtin/tag.c:585
+#: builtin/tag.c:617
 #, c-format
 msgid "Updated tag '%s' (was %s)\n"
 msgstr "Étiquette '%s' mise à jour (elle était sur %s)\n"
@@ -23204,90 +23608,63 @@ msgstr "git verify-tag [-v | --verbose] [--format=<format>] <étiquette>..."
 msgid "print tag contents"
 msgstr "afficher le contenu de l'étiquette"
 
-#: builtin/worktree.c:17
+#: builtin/worktree.c:18
 msgid "git worktree add [<options>] <path> [<commit-ish>]"
 msgstr "git worktree add [<options>] <chemin> [<commit>]"
 
-#: builtin/worktree.c:18
+#: builtin/worktree.c:19
 msgid "git worktree list [<options>]"
 msgstr "git worktree list [<options>]"
 
-#: builtin/worktree.c:19
+#: builtin/worktree.c:20
 msgid "git worktree lock [<options>] <path>"
 msgstr "git worktree lock [<options>] <chemin>"
 
-#: builtin/worktree.c:20
+#: builtin/worktree.c:21
 msgid "git worktree move <worktree> <new-path>"
 msgstr "git worktree move <arbre-de-travail> <nouveau-chemin>"
 
-#: builtin/worktree.c:21
+#: builtin/worktree.c:22
 msgid "git worktree prune [<options>]"
 msgstr "git worktree prune [<options>]"
 
-#: builtin/worktree.c:22
+#: builtin/worktree.c:23
 msgid "git worktree remove [<options>] <worktree>"
 msgstr "git worktree remove [<options>] <arbre-de-travail>"
 
-#: builtin/worktree.c:23
+#: builtin/worktree.c:24
 msgid "git worktree unlock <path>"
 msgstr "git worktree unlock <chemin>"
 
-#: builtin/worktree.c:60 builtin/worktree.c:973
+#: builtin/worktree.c:61 builtin/worktree.c:933
 #, c-format
 msgid "failed to delete '%s'"
 msgstr "échec de la suppression de '%s'"
 
-#: builtin/worktree.c:85
-msgid "not a valid directory"
-msgstr "pas un répertoire valide"
-
-#: builtin/worktree.c:91
-msgid "gitdir file does not exist"
-msgstr "le fichier gitdir n'existe pas"
-
-#: builtin/worktree.c:96 builtin/worktree.c:105
-#, c-format
-msgid "unable to read gitdir file (%s)"
-msgstr "impossible de lire le fichier gitdir (%s)"
-
-#: builtin/worktree.c:115
-#, c-format
-msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
-msgstr ""
-"lecture trop courte ( %<PRIuMAX> octets attendus, %<PRIuMAX> octets lus)"
-
-#: builtin/worktree.c:123
-msgid "invalid gitdir file"
-msgstr "fichier gitdir invalide"
-
-#: builtin/worktree.c:131
-msgid "gitdir file points to non-existent location"
-msgstr "le fichier gitdir pointe sur un endroit inexistant"
-
-#: builtin/worktree.c:146
+#: builtin/worktree.c:74
 #, c-format
 msgid "Removing %s/%s: %s"
 msgstr "Suppression de %s/%s : %s"
 
-#: builtin/worktree.c:221
+#: builtin/worktree.c:149
 msgid "report pruned working trees"
 msgstr "afficher les arbres de travail éliminés"
 
-#: builtin/worktree.c:223
+#: builtin/worktree.c:151
 msgid "expire working trees older than <time>"
 msgstr "faire expirer les arbres de travail plus vieux que <temps>"
 
-#: builtin/worktree.c:293
+#: builtin/worktree.c:221
 #, c-format
 msgid "'%s' already exists"
 msgstr "'%s' existe déjà"
 
-#: builtin/worktree.c:302
+#: builtin/worktree.c:230
 #, c-format
 msgid "unusable worktree destination '%s'"
 msgstr "arbre de travail destination '%s' inutilisable"
 
-#: builtin/worktree.c:307
+#: builtin/worktree.c:235
 #, c-format
 msgid ""
 "'%s' is a missing but locked worktree;\n"
@@ -23297,7 +23674,7 @@ msgstr ""
 "utilisez '%s -f -f' pour passer outre, ou 'unlock' et 'prune' ou 'remove' "
 "pour corriger"
 
-#: builtin/worktree.c:309
+#: builtin/worktree.c:237
 #, c-format
 msgid ""
 "'%s' is a missing but already registered worktree;\n"
@@ -23306,124 +23683,137 @@ msgstr ""
 "'%s' est un arbre de travail manquant mais déjà enregistré ;\n"
 "utilisez '%s -f' pour passer outre, ou 'prune' ou 'remove' pour corriger"
 
-#: builtin/worktree.c:360
+#: builtin/worktree.c:288
 #, c-format
 msgid "could not create directory of '%s'"
 msgstr "impossible de créer le répertoire de '%s'"
 
-#: builtin/worktree.c:494 builtin/worktree.c:500
+#: builtin/worktree.c:422 builtin/worktree.c:428
 #, c-format
 msgid "Preparing worktree (new branch '%s')"
 msgstr "Préparation de l'arbre de travail (nouvelle branche '%s')"
 
-#: builtin/worktree.c:496
+#: builtin/worktree.c:424
 #, 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:505
+#: builtin/worktree.c:433
 #, c-format
 msgid "Preparing worktree (checking out '%s')"
 msgstr "Préparation de l'arbre de travail (extraction de '%s')"
 
-#: builtin/worktree.c:511
+#: builtin/worktree.c:439
 #, c-format
 msgid "Preparing worktree (detached HEAD %s)"
 msgstr "Préparation de l'arbre de travail (HEAD détachée %s)"
 
-#: builtin/worktree.c:552
+#: builtin/worktree.c:480
 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:555
+#: builtin/worktree.c:483
 msgid "create a new branch"
 msgstr "créer une nouvelle branche"
 
-#: builtin/worktree.c:557
+#: builtin/worktree.c:485
 msgid "create or reset a branch"
 msgstr "créer ou réinitialiser une branche"
 
-#: builtin/worktree.c:559
+#: builtin/worktree.c:487
 msgid "populate the new working tree"
 msgstr "remplissage de la nouvelle copie de travail"
 
-#: builtin/worktree.c:560
+#: builtin/worktree.c:488
 msgid "keep the new working tree locked"
 msgstr "conserver le verrou sur le nouvel arbre de travail"
 
-#: builtin/worktree.c:563
+#: builtin/worktree.c:491
 msgid "set up tracking mode (see git-branch(1))"
 msgstr "régler le mode de suivi (voir git-branch(1))"
 
-#: builtin/worktree.c:566
+#: builtin/worktree.c:494
 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:574
+#: builtin/worktree.c:502
 msgid "-b, -B, and --detach are mutually exclusive"
 msgstr "-b, -B et --detach sont mutuellement exclusifs"
 
-#: builtin/worktree.c:635
+#: builtin/worktree.c:563
 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:758
+#: builtin/worktree.c:680
+msgid "show extended annotations and reasons, if available"
+msgstr "afficher les annotations étendues et les raisons, si disponible"
+
+#: builtin/worktree.c:682
+msgid "add 'prunable' annotation to worktrees older than <time>"
+msgstr ""
+"ajouter l'annotation 'prunable' aux arbres de travail plus vieux que <temps>"
+
+#: builtin/worktree.c:691
+msgid "--verbose and --porcelain are mutually exclusive"
+msgstr "--verbose et --porcelain sont mutuellement exclusifs"
+
+#: builtin/worktree.c:718
 msgid "reason for locking"
 msgstr "raison du verrouillage"
 
-#: builtin/worktree.c:770 builtin/worktree.c:803 builtin/worktree.c:877
-#: builtin/worktree.c:1001
+#: builtin/worktree.c:730 builtin/worktree.c:763 builtin/worktree.c:837
+#: builtin/worktree.c:961
 #, c-format
 msgid "'%s' is not a working tree"
 msgstr "'%s' n'est pas une copie de travail"
 
-#: builtin/worktree.c:772 builtin/worktree.c:805
+#: builtin/worktree.c:732 builtin/worktree.c:765
 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:777
+#: builtin/worktree.c:737
 #, c-format
 msgid "'%s' is already locked, reason: %s"
 msgstr "'%s' est déjà verrouillé, car '%s'"
 
-#: builtin/worktree.c:779
+#: builtin/worktree.c:739
 #, c-format
 msgid "'%s' is already locked"
 msgstr "'%s' est déjà verrouillé"
 
-#: builtin/worktree.c:807
+#: builtin/worktree.c:767
 #, c-format
 msgid "'%s' is not locked"
 msgstr "'%s' n'est pas verrouillé"
 
-#: builtin/worktree.c:848
+#: builtin/worktree.c:808
 msgid "working trees containing submodules cannot be moved or removed"
 msgstr ""
 "les arbres de travail contenant des sous-modules ne peuvent pas être "
 "déplacés ou supprimés"
 
-#: builtin/worktree.c:856
+#: builtin/worktree.c:816
 msgid "force move even if worktree is dirty or locked"
 msgstr ""
 "forcer le déplacement même si l'arbre de travail est sale ou verrouillé"
 
-#: builtin/worktree.c:879 builtin/worktree.c:1003
+#: builtin/worktree.c:839 builtin/worktree.c:963
 #, c-format
 msgid "'%s' is a main working tree"
 msgstr "'%s' est un arbre de travail principal"
 
-#: builtin/worktree.c:884
+#: builtin/worktree.c:844
 #, 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:897
+#: builtin/worktree.c:857
 #, c-format
 msgid ""
 "cannot move a locked working tree, lock reason: %s\n"
@@ -23433,7 +23823,7 @@ msgstr ""
 "verrouillage : %s\n"
 "utilisez 'move -f -f' pour outrepasser ou déverrouiller avant"
 
-#: builtin/worktree.c:899
+#: builtin/worktree.c:859
 msgid ""
 "cannot move a locked working tree;\n"
 "use 'move -f -f' to override or unlock first"
@@ -23441,39 +23831,39 @@ msgstr ""
 "impossible de déplacer un arbre de travail verrouillé;\n"
 "utilisez 'move -f -f' pour outrepasser ou déverrouiller avant"
 
-#: builtin/worktree.c:902
+#: builtin/worktree.c:862
 #, 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:907
+#: builtin/worktree.c:867
 #, c-format
 msgid "failed to move '%s' to '%s'"
 msgstr "échec au déplacement de '%s' vers '%s'"
 
-#: builtin/worktree.c:953
+#: builtin/worktree.c:913
 #, c-format
 msgid "failed to run 'git status' on '%s'"
 msgstr "échec du lancement de 'git status' sur '%s'"
 
-#: builtin/worktree.c:957
+#: builtin/worktree.c:917
 #, c-format
 msgid "'%s' contains modified or untracked files, use --force to delete it"
 msgstr ""
 "'%s' contient des fichiers modifiés ou non-suivis, utilisez --force pour le "
 "supprimer"
 
-#: builtin/worktree.c:962
+#: builtin/worktree.c:922
 #, 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:985
+#: builtin/worktree.c:945
 msgid "force removal even if worktree is dirty or locked"
 msgstr ""
 "forcer la suppression même si l'arbre de travail est sale ou verrouillé"
 
-#: builtin/worktree.c:1008
+#: builtin/worktree.c:968
 #, c-format
 msgid ""
 "cannot remove a locked working tree, lock reason: %s\n"
@@ -23483,7 +23873,7 @@ msgstr ""
 "verrouillage : %s\n"
 "utilisez 'move -f -f' pour outrepasser ou déverrouiller avant"
 
-#: builtin/worktree.c:1010
+#: builtin/worktree.c:970
 msgid ""
 "cannot remove a locked working tree;\n"
 "use 'remove -f -f' to override or unlock first"
@@ -23491,18 +23881,18 @@ msgstr ""
 "impossible de supprimer un arbre de travail verrouillé;\n"
 "utilisez 'move -f -f' pour outrepasser ou déverrouiller avant"
 
-#: builtin/worktree.c:1013
+#: builtin/worktree.c:973
 #, c-format
 msgid "validation failed, cannot remove working tree: %s"
 msgstr ""
 "la validation a échoué, impossible de supprimer l'arbre de travail : %s"
 
-#: builtin/worktree.c:1037
+#: builtin/worktree.c:997
 #, c-format
 msgid "repair: %s: %s"
 msgstr "réparation : %s : '%s'"
 
-#: builtin/worktree.c:1040
+#: builtin/worktree.c:1000
 #, c-format
 msgid "error: %s: %s"
 msgstr "erreur : %s : %s"
@@ -23523,15 +23913,23 @@ msgstr "écrire l'objet arbre pour un sous-répertoire <préfixe>"
 msgid "only useful for debugging"
 msgstr "seulement utile pour le débogage"
 
-#: http-fetch.c:114
+#: http-fetch.c:118
 #, c-format
 msgid "argument to --packfile must be a valid hash (got '%s')"
 msgstr "l'argument de --packfile doit être une empreinte valide ('%s' reçu)"
 
-#: http-fetch.c:122
+#: http-fetch.c:128
 msgid "not a git repository"
 msgstr "pas un dépôt git"
 
+#: http-fetch.c:134
+msgid "--packfile requires --index-pack-args"
+msgstr "--packfile nécessite --index-pack-args"
+
+#: http-fetch.c:143
+msgid "--index-pack-args can only be used with --packfile"
+msgstr "--index-pack-args ne peut être utilisé qu'avec --packfile"
+
 #: t/helper/test-fast-rebase.c:141
 msgid "unhandled options"
 msgstr "options non gérées"
@@ -23564,6 +23962,7 @@ msgid ""
 "           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--"
 "bare]\n"
 "           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]\n"
+"           [--super-prefix=<path>] [--config-env=<name>=<envvar>]\n"
 "           <command> [<args>]"
 msgstr ""
 "git [--version] [--help] [-C <chemin>] [-c <nom>=<valeur>]\n"
@@ -23572,9 +23971,11 @@ msgstr ""
 "           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--"
 "bare]\n"
 "           [--git-dir=<chemin>] [--work-tree=<chemin>] [--namespace=<nom>]\n"
+"           [--super-prefix=<chemin>] [--config-env=<nom>=<variable-d-"
+"environnement>]\n"
 "           <commande> [<args>]"
 
-#: git.c:35
+#: git.c:36
 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"
@@ -23586,47 +23987,47 @@ msgstr ""
 "pour en lire plus à propos d'une commande spécifique ou d'un concept.\n"
 "Voir 'git help git' pour un survol du système."
 
-#: git.c:187
+#: git.c:188
 #, c-format
 msgid "no directory given for --git-dir\n"
 msgstr "aucun répertoire fourni pour --git-dir\n"
 
-#: git.c:201
+#: git.c:202
 #, c-format
 msgid "no namespace given for --namespace\n"
 msgstr "aucun espace de nom fournit pour --namespace\n"
 
-#: git.c:215
+#: git.c:216
 #, c-format
 msgid "no directory given for --work-tree\n"
 msgstr "aucun répertoire fourni pour --work-tree\n"
 
-#: git.c:229
+#: git.c:230
 #, c-format
 msgid "no prefix given for --super-prefix\n"
 msgstr "aucun préfixe fourni pour --super-prefix\n"
 
-#: git.c:251
+#: git.c:252
 #, c-format
 msgid "-c expects a configuration string\n"
 msgstr "-c requiert une chaîne de configuration\n"
 
-#: git.c:289
+#: git.c:292
 #, c-format
 msgid "no directory given for -C\n"
 msgstr "aucun répertoire fourni pour -C\n"
 
-#: git.c:315
+#: git.c:318
 #, c-format
 msgid "unknown option: %s\n"
 msgstr "option inconnue : %s\n"
 
-#: git.c:364
+#: git.c:367
 #, c-format
 msgid "while expanding alias '%s': '%s'"
 msgstr "lors de l'expansion de l'alias '%s' : '%s'"
 
-#: git.c:373
+#: git.c:376
 #, c-format
 msgid ""
 "alias '%s' changes environment variables.\n"
@@ -23635,39 +24036,39 @@ msgstr ""
 "l'alias '%s' modifie les variables d'environnement.\n"
 "Vous pouvez utiliser '!git' dans l'alias pour le faire"
 
-#: git.c:380
+#: git.c:383
 #, c-format
 msgid "empty alias for %s"
 msgstr "alias vide pour %s"
 
-#: git.c:383
+#: git.c:386
 #, c-format
 msgid "recursive alias: %s"
 msgstr "alias recursif : %s"
 
-#: git.c:465
+#: git.c:468
 msgid "write failure on standard output"
 msgstr "échec d'écriture sur la sortie standard"
 
-#: git.c:467
+#: git.c:470
 msgid "unknown write failure on standard output"
 msgstr "échec inconnu d'écriture sur la sortie standard"
 
-#: git.c:469
+#: git.c:472
 msgid "close failed on standard output"
 msgstr "échec de fermeture de la sortie standard"
 
-#: git.c:820
+#: git.c:823
 #, c-format
 msgid "alias loop detected: expansion of '%s' does not terminate:%s"
 msgstr "boucle d'alias détectée : l'expansion de '%s' ne finit jamais : %s"
 
-#: git.c:870
+#: git.c:873
 #, c-format
 msgid "cannot handle %s as a builtin"
 msgstr "impossible d'utiliser %s comme une fonction intégrée"
 
-#: git.c:883
+#: git.c:886
 #, c-format
 msgid ""
 "usage: %s\n"
@@ -23676,13 +24077,13 @@ msgstr ""
 "usage : %s\n"
 "\n"
 
-#: git.c:903
+#: git.c:906
 #, 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"
 
-#: git.c:915
+#: git.c:918
 #, c-format
 msgid "failed to run command '%s': %s\n"
 msgstr "échec au lancement de la commande '%s' : %s\n"
@@ -23922,11 +24323,11 @@ msgstr ""
 "avec --pathspec-from-file, les spécificateurs de chemin sont séparés par un "
 "caractère NUL"
 
-#: ref-filter.h:96
+#: ref-filter.h:99
 msgid "key"
 msgstr "clé"
 
-#: ref-filter.h:96
+#: ref-filter.h:99
 msgid "field name to sort on"
 msgstr "nom du champ servant à trier"
 
@@ -23935,14 +24336,6 @@ msgid "update the index with reused conflict resolution if possible"
 msgstr ""
 "met à jour l'index avec les résolutions de conflit réutilisées si possible"
 
-#: wt-status.h:80
-msgid "HEAD detached at "
-msgstr "HEAD détachée sur "
-
-#: wt-status.h:81
-msgid "HEAD detached from "
-msgstr "HEAD détachée depuis "
-
 #: command-list.h:50
 msgid "Add file contents to the index"
 msgstr "Ajouter le contenu de fichiers dans l'index"
@@ -24292,8 +24685,8 @@ msgid "Write and verify multi-pack-indexes"
 msgstr "Écrire et vérifier les index multi-paquet"
 
 #: command-list.h:132
-msgid "Creates a tag object"
-msgstr "Créer un objet étiquette"
+msgid "Creates a tag object with extra validation"
+msgstr "Créer un objet étiquette avec validation supplémentaire"
 
 #: command-list.h:133
 msgid "Build a tree-object from ls-tree formatted text"
@@ -24606,69 +24999,56 @@ msgid "Specifies intentionally untracked files to ignore"
 msgstr "Spécifie les fichiers non-suivis à ignorer intentionnellement"
 
 #: command-list.h:209
+msgid "Map author/committer names and/or E-Mail addresses"
+msgstr ""
+"Fait correspondre les noms d'auteur/validateur avec les adresses de courriel"
+
+#: command-list.h:210
 msgid "Defining submodule properties"
 msgstr "Définition des propriétés de sous-module"
 
-#: command-list.h:210
+#: command-list.h:211
 msgid "Git namespaces"
 msgstr "Espaces de nom de Git"
 
-#: command-list.h:211
+#: command-list.h:212
 msgid "Helper programs to interact with remote repositories"
 msgstr "Programmes assistants pour interagir avec des dépôts distants"
 
-#: command-list.h:212
+#: command-list.h:213
 msgid "Git Repository Layout"
 msgstr "Disposition d'un dépôt Git"
 
-#: command-list.h:213
+#: command-list.h:214
 msgid "Specifying revisions and ranges for Git"
 msgstr "Spécification des révisions et portées pour Git"
 
-#: command-list.h:214
+#: command-list.h:215
 msgid "Mounting one repository inside another"
 msgstr "Montage d'un dépôt dans un autre dépôt"
 
-#: command-list.h:215
+#: command-list.h:216
 msgid "A tutorial introduction to Git: part two"
 msgstr "Une introduction pratique à Git : deuxième partie"
 
-#: command-list.h:216
+#: command-list.h:217
 msgid "A tutorial introduction to Git"
 msgstr "Une introduction pratique à Git"
 
-#: command-list.h:217
+#: command-list.h:218
 msgid "An overview of recommended workflows with Git"
 msgstr "Un aperçu des flux de travail recommandés avec Git"
 
-#: git-bisect.sh:48
-#, sh-format
-msgid "Bad rev input: $arg"
-msgstr "Mauvaise révision en entrée : $arg"
-
-#: git-bisect.sh:82
-msgid "No logfile given"
-msgstr "Pas de fichier de log donné"
-
-#: git-bisect.sh:83
-#, sh-format
-msgid "cannot read $file for replaying"
-msgstr "impossible de lire $file pour rejouer"
-
-#: git-bisect.sh:105
-msgid "?? what are you talking about?"
-msgstr "?? de quoi parlez-vous ?"
-
-#: git-bisect.sh:115
+#: git-bisect.sh:68
 msgid "bisect run failed: no command provided."
 msgstr "la bissection a échoué : aucune commande fournie."
 
-#: git-bisect.sh:120
+#: git-bisect.sh:73
 #, sh-format
 msgid "running $command"
 msgstr "lancement de $command"
 
-#: git-bisect.sh:127
+#: git-bisect.sh:80
 #, sh-format
 msgid ""
 "bisect run failed:\n"
@@ -24677,11 +25057,11 @@ msgstr ""
 "la bissection a échoué :\n"
 "le code retour $res de '$command' est < 0 ou >= 128"
 
-#: git-bisect.sh:152
+#: git-bisect.sh:105
 msgid "bisect run cannot continue any more"
 msgstr "la bissection ne peut plus continuer"
 
-#: git-bisect.sh:158
+#: git-bisect.sh:111
 #, sh-format
 msgid ""
 "bisect run failed:\n"
@@ -24690,14 +25070,10 @@ msgstr ""
 "la bissection a échoué :\n"
 "'bisect-state $state' a retourné le code erreur $res"
 
-#: git-bisect.sh:165
+#: git-bisect.sh:118
 msgid "bisect run success"
 msgstr "succès de la bissection"
 
-#: git-bisect.sh:173
-msgid "We are not bisecting."
-msgstr "Pas de bissection en cours."
-
 #: git-merge-octopus.sh:46
 msgid ""
 "Error: Your local changes to the following files would be overwritten by "
@@ -26013,8 +26389,27 @@ msgstr "%s sauté avec un suffix de sauvegarde '%s'.\n"
 msgid "Do you really want to send %s? [y|N]: "
 msgstr "Souhaitez-vous réellement envoyer %s ?[y|N] : "
 
-#~ msgid "Counting distinct commits in commit graph"
-#~ msgstr "Comptage des commits distincts dans un graphe de commit"
+#~ msgid "repository contains replace objects; skipping commit-graph"
+#~ msgstr ""
+#~ "le dépôt contient des object de remplacement ; saut du graphe de commits"
+
+#~ msgid "repository contains (deprecated) grafts; skipping commit-graph"
+#~ msgstr ""
+#~ "le dépôt contient des greffes (déconseillées) ; saut du graphe de commits"
+
+#~ msgid "repository is shallow; skipping commit-graph"
+#~ msgstr "le dépôt est superficiel ; saut du graphe de commit"
+
+#, c-format
+#~ msgid "commit-graph improper chunk offset %08x%08x"
+#~ msgstr "décalage de bloc %08x%08x du graphe de commit inadéquat"
+
+#, c-format
+#~ msgid "commit-graph chunk id %08x appears multiple times"
+#~ msgstr "l'id de bloc de graphe de commit %08x apparaît des multiples fois"
+
+#~ msgid "invalid chunk offset (too large)"
+#~ msgstr "décalage de section invalide (trop grand)"
 
-#~ msgid "the commit graph format cannot write %d commits"
-#~ msgstr "le graphe de commits ne peut pas écrire %d commits"
+#~ msgid "Writing chunks to multi-pack-index"
+#~ msgstr "Écriture des sections dans l'index multi-paquet"
index 6b5b503775a7c34e113e856fba1f15c70b8bc18b..ee9ba622568087ffcb6363fc190afbb9d07dac40 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: 2020-12-21 07:10+0800\n"
+"POT-Creation-Date: 2021-03-04 22:41+0800\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -23,9 +23,9 @@ msgstr ""
 msgid "Huh (%s)?"
 msgstr ""
 
-#: add-interactive.c:529 add-interactive.c:830 reset.c:65 sequencer.c:3284
-#: sequencer.c:3735 sequencer.c:3890 builtin/rebase.c:1532
-#: builtin/rebase.c:1955
+#: add-interactive.c:529 add-interactive.c:830 reset.c:65 sequencer.c:3292
+#: sequencer.c:3743 sequencer.c:3898 builtin/rebase.c:1538
+#: builtin/rebase.c:1963
 msgid "could not read index"
 msgstr ""
 
@@ -53,7 +53,7 @@ msgstr ""
 msgid "could not stage '%s'"
 msgstr ""
 
-#: add-interactive.c:703 add-interactive.c:892 reset.c:89 sequencer.c:3478
+#: add-interactive.c:703 add-interactive.c:892 reset.c:89 sequencer.c:3486
 msgid "could not write index"
 msgstr ""
 
@@ -211,7 +211,7 @@ msgstr ""
 
 #: add-interactive.c:1144 apply.c:4987 apply.c:4990 builtin/am.c:2257
 #: builtin/am.c:2260 builtin/bugreport.c:134 builtin/clone.c:124
-#: builtin/fetch.c:147 builtin/merge.c:284 builtin/pull.c:190
+#: builtin/fetch.c:150 builtin/merge.c:285 builtin/pull.c:190
 #: builtin/submodule--helper.c:409 builtin/submodule--helper.c:1818
 #: builtin/submodule--helper.c:1821 builtin/submodule--helper.c:2326
 #: builtin/submodule--helper.c:2329 builtin/submodule--helper.c:2572
@@ -707,7 +707,7 @@ msgstr ""
 msgid "Exiting because of an unresolved conflict."
 msgstr ""
 
-#: advice.c:281 builtin/merge.c:1369
+#: advice.c:281 builtin/merge.c:1370
 msgid "You have not concluded your merge (MERGE_HEAD exists)."
 msgstr ""
 
@@ -979,7 +979,8 @@ msgstr ""
 msgid "cannot checkout %s"
 msgstr ""
 
-#: apply.c:3405 apply.c:3416 apply.c:3462 midx.c:73 setup.c:308
+#: apply.c:3405 apply.c:3416 apply.c:3462 midx.c:86 pack-revindex.c:213
+#: setup.c:308
 #, c-format
 msgid "failed to read %s"
 msgstr ""
@@ -1138,7 +1139,7 @@ msgstr ""
 msgid "unable to add cache entry for %s"
 msgstr ""
 
-#: apply.c:4374 builtin/bisect--helper.c:524
+#: apply.c:4374 builtin/bisect--helper.c:523
 #, c-format
 msgid "failed to write to '%s'"
 msgstr ""
@@ -1174,7 +1175,7 @@ msgstr[1] ""
 msgid "truncating .rej filename to %.*s.rej"
 msgstr ""
 
-#: apply.c:4576 builtin/fetch.c:927 builtin/fetch.c:1228
+#: apply.c:4576 builtin/fetch.c:933 builtin/fetch.c:1334
 #, c-format
 msgid "cannot open %s"
 msgstr ""
@@ -1228,7 +1229,7 @@ msgid_plural "%d lines applied after fixing whitespace errors."
 msgstr[0] ""
 msgstr[1] ""
 
-#: apply.c:4960 builtin/add.c:618 builtin/mv.c:304 builtin/rm.c:406
+#: apply.c:4960 builtin/add.c:626 builtin/mv.c:304 builtin/rm.c:406
 msgid "Unable to write new index file"
 msgstr ""
 
@@ -1296,7 +1297,7 @@ msgstr ""
 msgid "build a temporary index based on embedded index information"
 msgstr ""
 
-#: apply.c:5025 builtin/checkout-index.c:182 builtin/ls-files.c:525
+#: apply.c:5025 builtin/checkout-index.c:195 builtin/ls-files.c:540
 msgid "paths are separated with NUL character"
 msgstr ""
 
@@ -1306,7 +1307,7 @@ msgstr ""
 
 #: apply.c:5028 builtin/am.c:2245 builtin/interpret-trailers.c:98
 #: builtin/interpret-trailers.c:100 builtin/interpret-trailers.c:102
-#: builtin/pack-objects.c:3562 builtin/rebase.c:1346
+#: builtin/pack-objects.c:3577 builtin/rebase.c:1352
 msgid "action"
 msgstr ""
 
@@ -1334,9 +1335,9 @@ msgstr ""
 msgid "allow overlapping hunks"
 msgstr ""
 
-#: apply.c:5045 builtin/add.c:329 builtin/check-ignore.c:22
-#: builtin/commit.c:1364 builtin/count-objects.c:98 builtin/fsck.c:775
-#: builtin/log.c:2287 builtin/mv.c:123 builtin/read-tree.c:128
+#: apply.c:5045 builtin/add.c:337 builtin/check-ignore.c:22
+#: builtin/commit.c:1364 builtin/count-objects.c:98 builtin/fsck.c:757
+#: builtin/log.c:2286 builtin/mv.c:123 builtin/read-tree.c:128
 msgid "be verbose"
 msgstr ""
 
@@ -1422,14 +1423,14 @@ msgstr ""
 msgid "cannot read %s"
 msgstr ""
 
-#: archive.c:345 sequencer.c:459 sequencer.c:1736 sequencer.c:2886
-#: sequencer.c:3327 sequencer.c:3436 builtin/am.c:249 builtin/commit.c:786
-#: builtin/merge.c:1138
+#: archive.c:345 sequencer.c:459 sequencer.c:1744 sequencer.c:2894
+#: sequencer.c:3335 sequencer.c:3444 builtin/am.c:249 builtin/commit.c:786
+#: builtin/merge.c:1139
 #, c-format
 msgid "could not read '%s'"
 msgstr ""
 
-#: archive.c:430 builtin/add.c:181 builtin/add.c:594 builtin/rm.c:315
+#: archive.c:430 builtin/add.c:189 builtin/add.c:602 builtin/rm.c:315
 #, c-format
 msgid "pathspec '%s' did not match any files"
 msgstr ""
@@ -1471,7 +1472,7 @@ msgstr ""
 msgid "archive format"
 msgstr ""
 
-#: archive.c:556 builtin/log.c:1765
+#: archive.c:556 builtin/log.c:1764
 msgid "prefix"
 msgstr ""
 
@@ -1479,11 +1480,11 @@ msgstr ""
 msgid "prepend prefix to each pathname in the archive"
 msgstr ""
 
-#: archive.c:558 archive.c:561 builtin/blame.c:886 builtin/blame.c:890
-#: builtin/blame.c:891 builtin/commit-tree.c:117 builtin/config.c:135
+#: archive.c:558 archive.c:561 builtin/blame.c:884 builtin/blame.c:888
+#: builtin/blame.c:889 builtin/commit-tree.c:117 builtin/config.c:135
 #: builtin/fast-export.c:1207 builtin/fast-export.c:1209
-#: builtin/fast-export.c:1213 builtin/grep.c:919 builtin/hash-object.c:105
-#: builtin/ls-files.c:561 builtin/ls-files.c:564 builtin/notes.c:412
+#: builtin/fast-export.c:1213 builtin/grep.c:920 builtin/hash-object.c:105
+#: builtin/ls-files.c:576 builtin/ls-files.c:579 builtin/notes.c:412
 #: builtin/notes.c:578 builtin/read-tree.c:123 parse-options.h:190
 msgid "file"
 msgstr ""
@@ -1634,12 +1635,12 @@ msgstr ""
 msgid "a %s revision is needed"
 msgstr ""
 
-#: bisect.c:941 builtin/notes.c:177 builtin/tag.c:255
+#: bisect.c:941 builtin/notes.c:177 builtin/tag.c:287
 #, c-format
 msgid "could not create file '%s'"
 msgstr ""
 
-#: bisect.c:987 builtin/merge.c:152
+#: bisect.c:987 builtin/merge.c:153
 #, c-format
 msgid "could not read file '%s'"
 msgstr ""
@@ -1657,7 +1658,7 @@ msgstr ""
 #, c-format
 msgid ""
 "No testable commit found.\n"
-"Maybe you started with bad path parameters?\n"
+"Maybe you started with bad path arguments?\n"
 msgstr ""
 
 #: bisect.c:1095
@@ -1689,11 +1690,11 @@ msgstr ""
 msgid "--reverse and --first-parent together require specified latest commit"
 msgstr ""
 
-#: blame.c:2821 bundle.c:213 ref-filter.c:2272 remote.c:2031 sequencer.c:2138
-#: sequencer.c:4633 submodule.c:855 builtin/commit.c:1045 builtin/log.c:409
-#: builtin/log.c:1023 builtin/log.c:1625 builtin/log.c:2046 builtin/log.c:2336
-#: builtin/merge.c:423 builtin/pack-objects.c:3380 builtin/pack-objects.c:3395
-#: builtin/shortlog.c:267
+#: blame.c:2821 bundle.c:213 ref-filter.c:2206 remote.c:2041 sequencer.c:2146
+#: sequencer.c:4641 submodule.c:856 builtin/commit.c:1045 builtin/log.c:411
+#: builtin/log.c:1016 builtin/log.c:1624 builtin/log.c:2045 builtin/log.c:2335
+#: builtin/merge.c:424 builtin/pack-objects.c:3395 builtin/pack-objects.c:3410
+#: builtin/shortlog.c:255
 msgid "revision walk setup failed"
 msgstr ""
 
@@ -1856,7 +1857,7 @@ msgstr ""
 msgid "unrecognized header: %s%s (%d)"
 msgstr ""
 
-#: bundle.c:136 rerere.c:480 rerere.c:690 sequencer.c:2390 sequencer.c:3176
+#: bundle.c:136 rerere.c:464 rerere.c:674 sequencer.c:2398 sequencer.c:3184
 #: builtin/commit.c:814
 #, c-format
 msgid "could not open '%s'"
@@ -1900,295 +1901,308 @@ msgstr ""
 msgid "pack-objects died"
 msgstr ""
 
-#: bundle.c:379
-msgid "rev-list died"
-msgstr ""
-
-#: bundle.c:428
+#: bundle.c:386
 #, c-format
 msgid "ref '%s' is excluded by the rev-list options"
 msgstr ""
 
-#: bundle.c:498
+#: bundle.c:490
 #, c-format
 msgid "unsupported bundle version %d"
 msgstr ""
 
-#: bundle.c:500
+#: bundle.c:492
 #, c-format
 msgid "cannot write bundle version %d with algorithm %s"
 msgstr ""
 
-#: bundle.c:522 builtin/log.c:209 builtin/log.c:1927 builtin/shortlog.c:408
+#: bundle.c:510 builtin/log.c:210 builtin/log.c:1926 builtin/shortlog.c:396
 #, c-format
 msgid "unrecognized argument: %s"
 msgstr ""
 
-#: bundle.c:530
+#: bundle.c:539
 msgid "Refusing to create empty bundle."
 msgstr ""
 
-#: bundle.c:540
+#: bundle.c:549
 #, c-format
 msgid "cannot create '%s'"
 msgstr ""
 
-#: bundle.c:565
+#: bundle.c:574
 msgid "index-pack died"
 msgstr ""
 
+#: chunk-format.c:113
+msgid "terminating chunk id appears earlier than expected"
+msgstr ""
+
+#: chunk-format.c:122
+#, c-format
+msgid "improper chunk offset(s) %<PRIx64> and %<PRIx64>"
+msgstr ""
+
+#: chunk-format.c:129
+#, c-format
+msgid "duplicate chunk ID %<PRIx32> found"
+msgstr ""
+
+#: chunk-format.c:143
+#, c-format
+msgid "final chunk has non-zero id %<PRIx32>"
+msgstr ""
+
 #: color.c:329
 #, c-format
 msgid "invalid color value: %.*s"
 msgstr ""
 
-#: commit-graph.c:188 midx.c:47
+#: commit-graph.c:197 midx.c:46
 msgid "invalid hash version"
 msgstr ""
 
-#: commit-graph.c:246
+#: commit-graph.c:255
 msgid "commit-graph file is too small"
 msgstr ""
 
-#: commit-graph.c:311
+#: commit-graph.c:348
 #, c-format
 msgid "commit-graph signature %X does not match signature %X"
 msgstr ""
 
-#: commit-graph.c:318
+#: commit-graph.c:355
 #, c-format
 msgid "commit-graph version %X does not match version %X"
 msgstr ""
 
-#: commit-graph.c:325
+#: commit-graph.c:362
 #, c-format
 msgid "commit-graph hash version %X does not match version %X"
 msgstr ""
 
-#: commit-graph.c:342
+#: commit-graph.c:379
 #, c-format
 msgid "commit-graph file is too small to hold %u chunks"
 msgstr ""
 
-#: commit-graph.c:361
-#, c-format
-msgid "commit-graph improper chunk offset %08x%08x"
-msgstr ""
-
-#: commit-graph.c:433
-#, c-format
-msgid "commit-graph chunk id %08x appears multiple times"
-msgstr ""
-
-#: commit-graph.c:499
+#: commit-graph.c:472
 msgid "commit-graph has no base graphs chunk"
 msgstr ""
 
-#: commit-graph.c:509
+#: commit-graph.c:482
 msgid "commit-graph chain does not match"
 msgstr ""
 
-#: commit-graph.c:557
+#: commit-graph.c:530
 #, c-format
 msgid "invalid commit-graph chain: line '%s' not a hash"
 msgstr ""
 
-#: commit-graph.c:581
+#: commit-graph.c:554
 msgid "unable to find all commit-graph files"
 msgstr ""
 
-#: commit-graph.c:721 commit-graph.c:785
+#: commit-graph.c:735 commit-graph.c:772
 msgid "invalid commit position. commit-graph is likely corrupt"
 msgstr ""
 
-#: commit-graph.c:742
+#: commit-graph.c:756
 #, c-format
 msgid "could not find commit %s"
 msgstr ""
 
-#: commit-graph.c:1036 builtin/am.c:1292
+#: commit-graph.c:789
+msgid "commit-graph requires overflow generation data but has none"
+msgstr ""
+
+#: commit-graph.c:1065 builtin/am.c:1292
 #, c-format
 msgid "unable to parse commit %s"
 msgstr ""
 
-#: commit-graph.c:1252 builtin/pack-objects.c:2864
+#: commit-graph.c:1327 builtin/pack-objects.c:2872
 #, c-format
 msgid "unable to get type of object %s"
 msgstr ""
 
-#: commit-graph.c:1283
+#: commit-graph.c:1358
 msgid "Loading known commits in commit graph"
 msgstr ""
 
-#: commit-graph.c:1300
+#: commit-graph.c:1375
 msgid "Expanding reachable commits in commit graph"
 msgstr ""
 
-#: commit-graph.c:1320
+#: commit-graph.c:1395
 msgid "Clearing commit marks in commit graph"
 msgstr ""
 
-#: commit-graph.c:1339
+#: commit-graph.c:1414
+msgid "Computing commit graph topological levels"
+msgstr ""
+
+#: commit-graph.c:1467
 msgid "Computing commit graph generation numbers"
 msgstr ""
 
-#: commit-graph.c:1406
+#: commit-graph.c:1548
 msgid "Computing commit changed paths Bloom filters"
 msgstr ""
 
-#: commit-graph.c:1483
+#: commit-graph.c:1625
 msgid "Collecting referenced commits"
 msgstr ""
 
-#: commit-graph.c:1508
+#: commit-graph.c:1650
 #, c-format
 msgid "Finding commits for commit graph in %d pack"
 msgid_plural "Finding commits for commit graph in %d packs"
 msgstr[0] ""
 msgstr[1] ""
 
-#: commit-graph.c:1521
+#: commit-graph.c:1663
 #, c-format
 msgid "error adding pack %s"
 msgstr ""
 
-#: commit-graph.c:1525
+#: commit-graph.c:1667
 #, c-format
 msgid "error opening index for %s"
 msgstr ""
 
-#: commit-graph.c:1562
+#: commit-graph.c:1704
 msgid "Finding commits for commit graph among packed objects"
 msgstr ""
 
-#: commit-graph.c:1580
+#: commit-graph.c:1722
 msgid "Finding extra edges in commit graph"
 msgstr ""
 
-#: commit-graph.c:1628
+#: commit-graph.c:1771
 msgid "failed to write correct number of base graph ids"
 msgstr ""
 
-#: commit-graph.c:1670 midx.c:819
+#: commit-graph.c:1802 midx.c:794
 #, c-format
 msgid "unable to create leading directories of %s"
 msgstr ""
 
-#: commit-graph.c:1683
+#: commit-graph.c:1815
 msgid "unable to create temporary graph layer"
 msgstr ""
 
-#: commit-graph.c:1688
+#: commit-graph.c:1820
 #, c-format
 msgid "unable to adjust shared permissions for '%s'"
 msgstr ""
 
-#: commit-graph.c:1758
+#: commit-graph.c:1879
 #, c-format
 msgid "Writing out commit graph in %d pass"
 msgid_plural "Writing out commit graph in %d passes"
 msgstr[0] ""
 msgstr[1] ""
 
-#: commit-graph.c:1803
+#: commit-graph.c:1915
 msgid "unable to open commit-graph chain file"
 msgstr ""
 
-#: commit-graph.c:1819
+#: commit-graph.c:1931
 msgid "failed to rename base commit-graph file"
 msgstr ""
 
-#: commit-graph.c:1839
+#: commit-graph.c:1951
 msgid "failed to rename temporary commit-graph file"
 msgstr ""
 
-#: commit-graph.c:1965
+#: commit-graph.c:2084
 msgid "Scanning merged commits"
 msgstr ""
 
-#: commit-graph.c:2009
+#: commit-graph.c:2128
 msgid "Merging commit-graph"
 msgstr ""
 
-#: commit-graph.c:2115
+#: commit-graph.c:2235
 msgid "attempting to write a commit-graph, but 'core.commitGraph' is disabled"
 msgstr ""
 
-#: commit-graph.c:2214
+#: commit-graph.c:2342
 msgid "too many commits to write graph"
 msgstr ""
 
-#: commit-graph.c:2307
+#: commit-graph.c:2440
 msgid "the commit-graph file has incorrect checksum and is likely corrupt"
 msgstr ""
 
-#: commit-graph.c:2317
+#: commit-graph.c:2450
 #, c-format
 msgid "commit-graph has incorrect OID order: %s then %s"
 msgstr ""
 
-#: commit-graph.c:2327 commit-graph.c:2342
+#: commit-graph.c:2460 commit-graph.c:2475
 #, c-format
 msgid "commit-graph has incorrect fanout value: fanout[%d] = %u != %u"
 msgstr ""
 
-#: commit-graph.c:2334
+#: commit-graph.c:2467
 #, c-format
 msgid "failed to parse commit %s from commit-graph"
 msgstr ""
 
-#: commit-graph.c:2352
+#: commit-graph.c:2485
 msgid "Verifying commits in commit graph"
 msgstr ""
 
-#: commit-graph.c:2367
+#: commit-graph.c:2500
 #, c-format
 msgid "failed to parse commit %s from object database for commit-graph"
 msgstr ""
 
-#: commit-graph.c:2374
+#: commit-graph.c:2507
 #, c-format
 msgid "root tree OID for commit %s in commit-graph is %s != %s"
 msgstr ""
 
-#: commit-graph.c:2384
+#: commit-graph.c:2517
 #, c-format
 msgid "commit-graph parent list for commit %s is too long"
 msgstr ""
 
-#: commit-graph.c:2393
+#: commit-graph.c:2526
 #, c-format
 msgid "commit-graph parent for %s is %s != %s"
 msgstr ""
 
-#: commit-graph.c:2407
+#: commit-graph.c:2540
 #, c-format
 msgid "commit-graph parent list for commit %s terminates early"
 msgstr ""
 
-#: commit-graph.c:2412
+#: commit-graph.c:2545
 #, c-format
 msgid ""
 "commit-graph has generation number zero for commit %s, but non-zero elsewhere"
 msgstr ""
 
-#: commit-graph.c:2416
+#: commit-graph.c:2549
 #, c-format
 msgid ""
 "commit-graph has non-zero generation number for commit %s, but zero elsewhere"
 msgstr ""
 
-#: commit-graph.c:2432
+#: commit-graph.c:2566
 #, c-format
-msgid "commit-graph generation for commit %s is %u != %u"
+msgid "commit-graph generation for commit %s is %<PRIuMAX> < %<PRIuMAX>"
 msgstr ""
 
-#: commit-graph.c:2438
+#: commit-graph.c:2572
 #, c-format
 msgid "commit date for commit %s in commit-graph is %<PRIuMAX> != %<PRIuMAX>"
 msgstr ""
 
-#: commit.c:52 sequencer.c:2879 builtin/am.c:359 builtin/am.c:403
+#: commit.c:52 sequencer.c:2887 builtin/am.c:359 builtin/am.c:403
 #: builtin/am.c:1371 builtin/am.c:2018 builtin/replace.c:457
 #, c-format
 msgid "could not parse %s"
@@ -2211,27 +2225,27 @@ msgid ""
 "\"git config advice.graftFileDeprecated false\""
 msgstr ""
 
-#: commit.c:1172
+#: commit.c:1223
 #, c-format
 msgid "Commit %s has an untrusted GPG signature, allegedly by %s."
 msgstr ""
 
-#: commit.c:1176
+#: commit.c:1227
 #, c-format
 msgid "Commit %s has a bad GPG signature allegedly by %s."
 msgstr ""
 
-#: commit.c:1179
+#: commit.c:1230
 #, c-format
 msgid "Commit %s does not have a GPG signature."
 msgstr ""
 
-#: commit.c:1182
+#: commit.c:1233
 #, c-format
 msgid "Commit %s has a good GPG signature by %s\n"
 msgstr ""
 
-#: commit.c:1436
+#: commit.c:1487
 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"
@@ -2242,7 +2256,7 @@ msgstr ""
 msgid "memory exhausted"
 msgstr ""
 
-#: config.c:125
+#: config.c:126
 #, c-format
 msgid ""
 "exceeded maximum include depth (%d) while including\n"
@@ -2252,289 +2266,333 @@ msgid ""
 "This might be due to circular includes."
 msgstr ""
 
-#: config.c:141
+#: config.c:142
 #, c-format
 msgid "could not expand include path '%s'"
 msgstr ""
 
-#: config.c:152
+#: config.c:153
 msgid "relative config includes must come from files"
 msgstr ""
 
-#: config.c:198
+#: config.c:199
 msgid "relative config include conditionals must come from files"
 msgstr ""
 
-#: config.c:378
+#: config.c:396
+#, c-format
+msgid "invalid config format: %s"
+msgstr ""
+
+#: config.c:400
+#, c-format
+msgid "missing environment variable name for configuration '%.*s'"
+msgstr ""
+
+#: config.c:405
+#, c-format
+msgid "missing environment variable '%s' for configuration '%.*s'"
+msgstr ""
+
+#: config.c:442
 #, c-format
 msgid "key does not contain a section: %s"
 msgstr ""
 
-#: config.c:384
+#: config.c:448
 #, c-format
 msgid "key does not contain variable name: %s"
 msgstr ""
 
-#: config.c:408 sequencer.c:2580
+#: config.c:472 sequencer.c:2588
 #, c-format
 msgid "invalid key: %s"
 msgstr ""
 
-#: config.c:414
+#: config.c:478
 #, c-format
 msgid "invalid key (newline): %s"
 msgstr ""
 
-#: config.c:450 config.c:462
+#: config.c:511
+msgid "empty config key"
+msgstr ""
+
+#: config.c:529 config.c:541
 #, c-format
 msgid "bogus config parameter: %s"
 msgstr ""
 
-#: config.c:497
+#: config.c:555 config.c:572 config.c:579 config.c:588
 #, c-format
 msgid "bogus format in %s"
 msgstr ""
 
-#: config.c:836
+#: config.c:622
+#, c-format
+msgid "bogus count in %s"
+msgstr ""
+
+#: config.c:626
+#, c-format
+msgid "too many entries in %s"
+msgstr ""
+
+#: config.c:636
+#, c-format
+msgid "missing config key %s"
+msgstr ""
+
+#: config.c:644
+#, c-format
+msgid "missing config value %s"
+msgstr ""
+
+#: config.c:995
 #, c-format
 msgid "bad config line %d in blob %s"
 msgstr ""
 
-#: config.c:840
+#: config.c:999
 #, c-format
 msgid "bad config line %d in file %s"
 msgstr ""
 
-#: config.c:844
+#: config.c:1003
 #, c-format
 msgid "bad config line %d in standard input"
 msgstr ""
 
-#: config.c:848
+#: config.c:1007
 #, c-format
 msgid "bad config line %d in submodule-blob %s"
 msgstr ""
 
-#: config.c:852
+#: config.c:1011
 #, c-format
 msgid "bad config line %d in command line %s"
 msgstr ""
 
-#: config.c:856
+#: config.c:1015
 #, c-format
 msgid "bad config line %d in %s"
 msgstr ""
 
-#: config.c:993
+#: config.c:1152
 msgid "out of range"
 msgstr ""
 
-#: config.c:993
+#: config.c:1152
 msgid "invalid unit"
 msgstr ""
 
-#: config.c:994
+#: config.c:1153
 #, c-format
 msgid "bad numeric config value '%s' for '%s': %s"
 msgstr ""
 
-#: config.c:1013
+#: config.c:1163
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in blob %s: %s"
 msgstr ""
 
-#: config.c:1016
+#: config.c:1166
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in file %s: %s"
 msgstr ""
 
-#: config.c:1019
+#: config.c:1169
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in standard input: %s"
 msgstr ""
 
-#: config.c:1022
+#: config.c:1172
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in submodule-blob %s: %s"
 msgstr ""
 
-#: config.c:1025
+#: config.c:1175
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in command line %s: %s"
 msgstr ""
 
-#: config.c:1028
+#: config.c:1178
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in %s: %s"
 msgstr ""
 
-#: config.c:1123
+#: config.c:1194
+#, c-format
+msgid "bad boolean config value '%s' for '%s'"
+msgstr ""
+
+#: config.c:1289
 #, c-format
 msgid "failed to expand user dir in: '%s'"
 msgstr ""
 
-#: config.c:1132
+#: config.c:1298
 #, c-format
 msgid "'%s' for '%s' is not a valid timestamp"
 msgstr ""
 
-#: config.c:1223
+#: config.c:1391
 #, c-format
 msgid "abbrev length out of range: %d"
 msgstr ""
 
-#: config.c:1237 config.c:1248
+#: config.c:1405 config.c:1416
 #, c-format
 msgid "bad zlib compression level %d"
 msgstr ""
 
-#: config.c:1340
+#: config.c:1508
 msgid "core.commentChar should only be one character"
 msgstr ""
 
-#: config.c:1373
+#: config.c:1541
 #, c-format
 msgid "invalid mode for object creation: %s"
 msgstr ""
 
-#: config.c:1445
+#: config.c:1613
 #, c-format
 msgid "malformed value for %s"
 msgstr ""
 
-#: config.c:1471
+#: config.c:1639
 #, c-format
 msgid "malformed value for %s: %s"
 msgstr ""
 
-#: config.c:1472
+#: config.c:1640
 msgid "must be one of nothing, matching, simple, upstream or current"
 msgstr ""
 
-#: config.c:1533 builtin/pack-objects.c:3649
+#: config.c:1701 builtin/pack-objects.c:3666
 #, c-format
 msgid "bad pack compression level %d"
 msgstr ""
 
-#: config.c:1655
+#: config.c:1823
 #, c-format
 msgid "unable to load config blob object '%s'"
 msgstr ""
 
-#: config.c:1658
+#: config.c:1826
 #, c-format
 msgid "reference '%s' does not point to a blob"
 msgstr ""
 
-#: config.c:1675
+#: config.c:1843
 #, c-format
 msgid "unable to resolve config blob '%s'"
 msgstr ""
 
-#: config.c:1705
+#: config.c:1873
 #, c-format
 msgid "failed to parse %s"
 msgstr ""
 
-#: config.c:1759
+#: config.c:1927
 msgid "unable to parse command-line config"
 msgstr ""
 
-#: config.c:2122
+#: config.c:2290
 msgid "unknown error occurred while reading the configuration files"
 msgstr ""
 
-#: config.c:2296
+#: config.c:2464
 #, c-format
 msgid "Invalid %s: '%s'"
 msgstr ""
 
-#: config.c:2341
+#: config.c:2509
 #, c-format
 msgid "splitIndex.maxPercentChange value '%d' should be between 0 and 100"
 msgstr ""
 
-#: config.c:2387
+#: config.c:2555
 #, c-format
 msgid "unable to parse '%s' from command-line config"
 msgstr ""
 
-#: config.c:2389
+#: config.c:2557
 #, c-format
 msgid "bad config variable '%s' in file '%s' at line %d"
 msgstr ""
 
-#: config.c:2473
+#: config.c:2641
 #, c-format
 msgid "invalid section name '%s'"
 msgstr ""
 
-#: config.c:2505
+#: config.c:2673
 #, c-format
 msgid "%s has multiple values"
 msgstr ""
 
-#: config.c:2534
+#: config.c:2702
 #, c-format
 msgid "failed to write new configuration file %s"
 msgstr ""
 
-#: config.c:2786 config.c:3112
+#: config.c:2954 config.c:3280
 #, c-format
 msgid "could not lock config file %s"
 msgstr ""
 
-#: config.c:2797
+#: config.c:2965
 #, c-format
 msgid "opening %s"
 msgstr ""
 
-#: config.c:2834 builtin/config.c:361
+#: config.c:3002 builtin/config.c:361
 #, c-format
 msgid "invalid pattern: %s"
 msgstr ""
 
-#: config.c:2859
+#: config.c:3027
 #, c-format
 msgid "invalid config file %s"
 msgstr ""
 
-#: config.c:2872 config.c:3125
+#: config.c:3040 config.c:3293
 #, c-format
 msgid "fstat on %s failed"
 msgstr ""
 
-#: config.c:2883
+#: config.c:3051
 #, c-format
 msgid "unable to mmap '%s'"
 msgstr ""
 
-#: config.c:2892 config.c:3130
+#: config.c:3060 config.c:3298
 #, c-format
 msgid "chmod on %s failed"
 msgstr ""
 
-#: config.c:2977 config.c:3227
+#: config.c:3145 config.c:3395
 #, c-format
 msgid "could not write config file %s"
 msgstr ""
 
-#: config.c:3011
+#: config.c:3179
 #, c-format
 msgid "could not set '%s' to '%s'"
 msgstr ""
 
-#: config.c:3013 builtin/remote.c:657 builtin/remote.c:855 builtin/remote.c:863
+#: config.c:3181 builtin/remote.c:657 builtin/remote.c:855 builtin/remote.c:863
 #, c-format
 msgid "could not unset '%s'"
 msgstr ""
 
-#: config.c:3103
+#: config.c:3271
 #, c-format
 msgid "invalid section name: %s"
 msgstr ""
 
-#: config.c:3270
+#: config.c:3438
 #, c-format
 msgid "missing value for '%s'"
 msgstr ""
@@ -2592,52 +2650,52 @@ msgstr ""
 msgid "protocol error: unexpected '%s'"
 msgstr ""
 
-#: connect.c:473
+#: connect.c:497
 #, c-format
 msgid "unknown object format '%s' specified by server"
 msgstr ""
 
-#: connect.c:500
+#: connect.c:526
 #, c-format
 msgid "invalid ls-refs response: %s"
 msgstr ""
 
-#: connect.c:504
+#: connect.c:530
 msgid "expected flush after ref listing"
 msgstr ""
 
-#: connect.c:507
+#: connect.c:533
 msgid "expected response end packet after ref listing"
 msgstr ""
 
-#: connect.c:640
+#: connect.c:666
 #, c-format
 msgid "protocol '%s' is not supported"
 msgstr ""
 
-#: connect.c:691
+#: connect.c:717
 msgid "unable to set SO_KEEPALIVE on socket"
 msgstr ""
 
-#: connect.c:731 connect.c:794
+#: connect.c:757 connect.c:820
 #, c-format
 msgid "Looking up %s ... "
 msgstr ""
 
-#: connect.c:735
+#: connect.c:761
 #, c-format
 msgid "unable to look up %s (port %s) (%s)"
 msgstr ""
 
 #. TRANSLATORS: this is the end of "Looking up %s ... "
-#: connect.c:739 connect.c:810
+#: connect.c:765 connect.c:836
 #, c-format
 msgid ""
 "done.\n"
 "Connecting to %s (port %s) ... "
 msgstr ""
 
-#: connect.c:761 connect.c:838
+#: connect.c:787 connect.c:864
 #, c-format
 msgid ""
 "unable to connect to %s:\n"
@@ -2645,61 +2703,65 @@ msgid ""
 msgstr ""
 
 #. TRANSLATORS: this is the end of "Connecting to %s (port %s) ... "
-#: connect.c:767 connect.c:844
+#: connect.c:793 connect.c:870
 msgid "done."
 msgstr ""
 
-#: connect.c:798
+#: connect.c:824
 #, c-format
 msgid "unable to look up %s (%s)"
 msgstr ""
 
-#: connect.c:804
+#: connect.c:830
 #, c-format
 msgid "unknown port %s"
 msgstr ""
 
-#: connect.c:941 connect.c:1271
+#: connect.c:967 connect.c:1299
 #, c-format
 msgid "strange hostname '%s' blocked"
 msgstr ""
 
-#: connect.c:943
+#: connect.c:969
 #, c-format
 msgid "strange port '%s' blocked"
 msgstr ""
 
-#: connect.c:953
+#: connect.c:979
 #, c-format
 msgid "cannot start proxy %s"
 msgstr ""
 
-#: connect.c:1024
+#: connect.c:1050
 msgid "no path specified; see 'git help pull' for valid url syntax"
 msgstr ""
 
-#: connect.c:1219
+#: connect.c:1190
+msgid "newline is forbidden in git:// hosts and repo paths"
+msgstr ""
+
+#: connect.c:1247
 msgid "ssh variant 'simple' does not support -4"
 msgstr ""
 
-#: connect.c:1231
+#: connect.c:1259
 msgid "ssh variant 'simple' does not support -6"
 msgstr ""
 
-#: connect.c:1248
+#: connect.c:1276
 msgid "ssh variant 'simple' does not support setting port"
 msgstr ""
 
-#: connect.c:1360
+#: connect.c:1388
 #, c-format
 msgid "strange pathname '%s' blocked"
 msgstr ""
 
-#: connect.c:1408
+#: connect.c:1436
 msgid "unable to fork"
 msgstr ""
 
-#: connected.c:108 builtin/fsck.c:209 builtin/prune.c:45
+#: connected.c:108 builtin/fsck.c:191 builtin/prune.c:45
 msgid "Checking connectivity"
 msgstr ""
 
@@ -2952,6 +3014,11 @@ msgstr ""
 msgid "Marked %d islands, done.\n"
 msgstr ""
 
+#: diff-merges.c:70
+#, c-format
+msgid "unknown value for --diff-merges: %s"
+msgstr ""
+
 #: diff-lib.c:534
 msgid "--merge-base does not work with ranges"
 msgstr ""
@@ -3028,527 +3095,539 @@ msgstr ""
 msgid "external diff died, stopping at %s"
 msgstr ""
 
-#: diff.c:4625
+#: diff.c:4628
 msgid "--name-only, --name-status, --check and -s are mutually exclusive"
 msgstr ""
 
-#: diff.c:4628
+#: diff.c:4631
 msgid "-G, -S and --find-object are mutually exclusive"
 msgstr ""
 
-#: diff.c:4707
+#: diff.c:4710
 msgid "--follow requires exactly one pathspec"
 msgstr ""
 
-#: diff.c:4755
+#: diff.c:4758
 #, c-format
 msgid "invalid --stat value: %s"
 msgstr ""
 
-#: diff.c:4760 diff.c:4765 diff.c:4770 diff.c:4775 diff.c:5303
+#: diff.c:4763 diff.c:4768 diff.c:4773 diff.c:4778 diff.c:5306
 #: parse-options.c:197 parse-options.c:201 builtin/commit-graph.c:180
 #, c-format
 msgid "%s expects a numerical value"
 msgstr ""
 
-#: diff.c:4792
+#: diff.c:4795
 #, c-format
 msgid ""
 "Failed to parse --dirstat/-X option parameter:\n"
 "%s"
 msgstr ""
 
-#: diff.c:4877
+#: diff.c:4880
 #, c-format
 msgid "unknown change class '%c' in --diff-filter=%s"
 msgstr ""
 
-#: diff.c:4901
+#: diff.c:4904
 #, c-format
 msgid "unknown value after ws-error-highlight=%.*s"
 msgstr ""
 
-#: diff.c:4915
+#: diff.c:4918
 #, c-format
 msgid "unable to resolve '%s'"
 msgstr ""
 
-#: diff.c:4965 diff.c:4971
+#: diff.c:4968 diff.c:4974
 #, c-format
 msgid "%s expects <n>/<m> form"
 msgstr ""
 
-#: diff.c:4983
+#: diff.c:4986
 #, c-format
 msgid "%s expects a character, got '%s'"
 msgstr ""
 
-#: diff.c:5004
+#: diff.c:5007
 #, c-format
 msgid "bad --color-moved argument: %s"
 msgstr ""
 
-#: diff.c:5023
+#: diff.c:5026
 #, c-format
 msgid "invalid mode '%s' in --color-moved-ws"
 msgstr ""
 
-#: diff.c:5063
+#: diff.c:5066
 msgid ""
 "option diff-algorithm accepts \"myers\", \"minimal\", \"patience\" and "
 "\"histogram\""
 msgstr ""
 
-#: diff.c:5099 diff.c:5119
+#: diff.c:5102 diff.c:5122
 #, c-format
 msgid "invalid argument to %s"
 msgstr ""
 
-#: diff.c:5223
+#: diff.c:5226
 #, c-format
 msgid "invalid regex given to -I: '%s'"
 msgstr ""
 
-#: diff.c:5272
+#: diff.c:5275
 #, c-format
 msgid "failed to parse --submodule option parameter: '%s'"
 msgstr ""
 
-#: diff.c:5328
+#: diff.c:5331
 #, c-format
 msgid "bad --word-diff argument: %s"
 msgstr ""
 
-#: diff.c:5351
+#: diff.c:5367
 msgid "Diff output format options"
 msgstr ""
 
-#: diff.c:5353 diff.c:5359
+#: diff.c:5369 diff.c:5375
 msgid "generate patch"
 msgstr ""
 
-#: diff.c:5356 builtin/log.c:178
+#: diff.c:5372 builtin/log.c:179
 msgid "suppress diff output"
 msgstr ""
 
-#: diff.c:5361 diff.c:5475 diff.c:5482
+#: diff.c:5377 diff.c:5491 diff.c:5498
 msgid "<n>"
 msgstr ""
 
-#: diff.c:5362 diff.c:5365
+#: diff.c:5378 diff.c:5381
 msgid "generate diffs with <n> lines context"
 msgstr ""
 
-#: diff.c:5367
+#: diff.c:5383
 msgid "generate the diff in raw format"
 msgstr ""
 
-#: diff.c:5370
+#: diff.c:5386
 msgid "synonym for '-p --raw'"
 msgstr ""
 
-#: diff.c:5374
+#: diff.c:5390
 msgid "synonym for '-p --stat'"
 msgstr ""
 
-#: diff.c:5378
+#: diff.c:5394
 msgid "machine friendly --stat"
 msgstr ""
 
-#: diff.c:5381
+#: diff.c:5397
 msgid "output only the last line of --stat"
 msgstr ""
 
-#: diff.c:5383 diff.c:5391
+#: diff.c:5399 diff.c:5407
 msgid "<param1,param2>..."
 msgstr ""
 
-#: diff.c:5384
+#: diff.c:5400
 msgid ""
 "output the distribution of relative amount of changes for each sub-directory"
 msgstr ""
 
-#: diff.c:5388
+#: diff.c:5404
 msgid "synonym for --dirstat=cumulative"
 msgstr ""
 
-#: diff.c:5392
+#: diff.c:5408
 msgid "synonym for --dirstat=files,param1,param2..."
 msgstr ""
 
-#: diff.c:5396
+#: diff.c:5412
 msgid "warn if changes introduce conflict markers or whitespace errors"
 msgstr ""
 
-#: diff.c:5399
+#: diff.c:5415
 msgid "condensed summary such as creations, renames and mode changes"
 msgstr ""
 
-#: diff.c:5402
+#: diff.c:5418
 msgid "show only names of changed files"
 msgstr ""
 
-#: diff.c:5405
+#: diff.c:5421
 msgid "show only names and status of changed files"
 msgstr ""
 
-#: diff.c:5407
+#: diff.c:5423
 msgid "<width>[,<name-width>[,<count>]]"
 msgstr ""
 
-#: diff.c:5408
+#: diff.c:5424
 msgid "generate diffstat"
 msgstr ""
 
-#: diff.c:5410 diff.c:5413 diff.c:5416
+#: diff.c:5426 diff.c:5429 diff.c:5432
 msgid "<width>"
 msgstr ""
 
-#: diff.c:5411
+#: diff.c:5427
 msgid "generate diffstat with a given width"
 msgstr ""
 
-#: diff.c:5414
+#: diff.c:5430
 msgid "generate diffstat with a given name width"
 msgstr ""
 
-#: diff.c:5417
+#: diff.c:5433
 msgid "generate diffstat with a given graph width"
 msgstr ""
 
-#: diff.c:5419
+#: diff.c:5435
 msgid "<count>"
 msgstr ""
 
-#: diff.c:5420
+#: diff.c:5436
 msgid "generate diffstat with limited lines"
 msgstr ""
 
-#: diff.c:5423
+#: diff.c:5439
 msgid "generate compact summary in diffstat"
 msgstr ""
 
-#: diff.c:5426
+#: diff.c:5442
 msgid "output a binary diff that can be applied"
 msgstr ""
 
-#: diff.c:5429
+#: diff.c:5445
 msgid "show full pre- and post-image object names on the \"index\" lines"
 msgstr ""
 
-#: diff.c:5431
+#: diff.c:5447
 msgid "show colored diff"
 msgstr ""
 
-#: diff.c:5432
+#: diff.c:5448
 msgid "<kind>"
 msgstr ""
 
-#: diff.c:5433
+#: diff.c:5449
 msgid ""
 "highlight whitespace errors in the 'context', 'old' or 'new' lines in the "
 "diff"
 msgstr ""
 
-#: diff.c:5436
+#: diff.c:5452
 msgid ""
 "do not munge pathnames and use NULs as output field terminators in --raw or "
 "--numstat"
 msgstr ""
 
-#: diff.c:5439 diff.c:5442 diff.c:5445 diff.c:5554
+#: diff.c:5455 diff.c:5458 diff.c:5461 diff.c:5570
 msgid "<prefix>"
 msgstr ""
 
-#: diff.c:5440
+#: diff.c:5456
 msgid "show the given source prefix instead of \"a/\""
 msgstr ""
 
-#: diff.c:5443
+#: diff.c:5459
 msgid "show the given destination prefix instead of \"b/\""
 msgstr ""
 
-#: diff.c:5446
+#: diff.c:5462
 msgid "prepend an additional prefix to every line of output"
 msgstr ""
 
-#: diff.c:5449
+#: diff.c:5465
 msgid "do not show any source or destination prefix"
 msgstr ""
 
-#: diff.c:5452
+#: diff.c:5468
 msgid "show context between diff hunks up to the specified number of lines"
 msgstr ""
 
-#: diff.c:5456 diff.c:5461 diff.c:5466
+#: diff.c:5472 diff.c:5477 diff.c:5482
 msgid "<char>"
 msgstr ""
 
-#: diff.c:5457
+#: diff.c:5473
 msgid "specify the character to indicate a new line instead of '+'"
 msgstr ""
 
-#: diff.c:5462
+#: diff.c:5478
 msgid "specify the character to indicate an old line instead of '-'"
 msgstr ""
 
-#: diff.c:5467
+#: diff.c:5483
 msgid "specify the character to indicate a context instead of ' '"
 msgstr ""
 
-#: diff.c:5470
+#: diff.c:5486
 msgid "Diff rename options"
 msgstr ""
 
-#: diff.c:5471
+#: diff.c:5487
 msgid "<n>[/<m>]"
 msgstr ""
 
-#: diff.c:5472
+#: diff.c:5488
 msgid "break complete rewrite changes into pairs of delete and create"
 msgstr ""
 
-#: diff.c:5476
+#: diff.c:5492
 msgid "detect renames"
 msgstr ""
 
-#: diff.c:5480
+#: diff.c:5496
 msgid "omit the preimage for deletes"
 msgstr ""
 
-#: diff.c:5483
+#: diff.c:5499
 msgid "detect copies"
 msgstr ""
 
-#: diff.c:5487
+#: diff.c:5503
 msgid "use unmodified files as source to find copies"
 msgstr ""
 
-#: diff.c:5489
+#: diff.c:5505
 msgid "disable rename detection"
 msgstr ""
 
-#: diff.c:5492
+#: diff.c:5508
 msgid "use empty blobs as rename source"
 msgstr ""
 
-#: diff.c:5494
+#: diff.c:5510
 msgid "continue listing the history of a file beyond renames"
 msgstr ""
 
-#: diff.c:5497
+#: diff.c:5513
 msgid ""
 "prevent rename/copy detection if the number of rename/copy targets exceeds "
 "given limit"
 msgstr ""
 
-#: diff.c:5499
+#: diff.c:5515
 msgid "Diff algorithm options"
 msgstr ""
 
-#: diff.c:5501
+#: diff.c:5517
 msgid "produce the smallest possible diff"
 msgstr ""
 
-#: diff.c:5504
+#: diff.c:5520
 msgid "ignore whitespace when comparing lines"
 msgstr ""
 
-#: diff.c:5507
+#: diff.c:5523
 msgid "ignore changes in amount of whitespace"
 msgstr ""
 
-#: diff.c:5510
+#: diff.c:5526
 msgid "ignore changes in whitespace at EOL"
 msgstr ""
 
-#: diff.c:5513
+#: diff.c:5529
 msgid "ignore carrier-return at the end of line"
 msgstr ""
 
-#: diff.c:5516
+#: diff.c:5532
 msgid "ignore changes whose lines are all blank"
 msgstr ""
 
-#: diff.c:5518 diff.c:5540 diff.c:5543 diff.c:5588
+#: diff.c:5534 diff.c:5556 diff.c:5559 diff.c:5604
 msgid "<regex>"
 msgstr ""
 
-#: diff.c:5519
+#: diff.c:5535
 msgid "ignore changes whose all lines match <regex>"
 msgstr ""
 
-#: diff.c:5522
+#: diff.c:5538
 msgid "heuristic to shift diff hunk boundaries for easy reading"
 msgstr ""
 
-#: diff.c:5525
+#: diff.c:5541
 msgid "generate diff using the \"patience diff\" algorithm"
 msgstr ""
 
-#: diff.c:5529
+#: diff.c:5545
 msgid "generate diff using the \"histogram diff\" algorithm"
 msgstr ""
 
-#: diff.c:5531
+#: diff.c:5547
 msgid "<algorithm>"
 msgstr ""
 
-#: diff.c:5532
+#: diff.c:5548
 msgid "choose a diff algorithm"
 msgstr ""
 
-#: diff.c:5534
+#: diff.c:5550
 msgid "<text>"
 msgstr ""
 
-#: diff.c:5535
+#: diff.c:5551
 msgid "generate diff using the \"anchored diff\" algorithm"
 msgstr ""
 
-#: diff.c:5537 diff.c:5546 diff.c:5549
+#: diff.c:5553 diff.c:5562 diff.c:5565
 msgid "<mode>"
 msgstr ""
 
-#: diff.c:5538
+#: diff.c:5554
 msgid "show word diff, using <mode> to delimit changed words"
 msgstr ""
 
-#: diff.c:5541
+#: diff.c:5557
 msgid "use <regex> to decide what a word is"
 msgstr ""
 
-#: diff.c:5544
+#: diff.c:5560
 msgid "equivalent to --word-diff=color --word-diff-regex=<regex>"
 msgstr ""
 
-#: diff.c:5547
+#: diff.c:5563
 msgid "moved lines of code are colored differently"
 msgstr ""
 
-#: diff.c:5550
+#: diff.c:5566
 msgid "how white spaces are ignored in --color-moved"
 msgstr ""
 
-#: diff.c:5553
+#: diff.c:5569
 msgid "Other diff options"
 msgstr ""
 
-#: diff.c:5555
+#: diff.c:5571
 msgid "when run from subdir, exclude changes outside and show relative paths"
 msgstr ""
 
-#: diff.c:5559
+#: diff.c:5575
 msgid "treat all files as text"
 msgstr ""
 
-#: diff.c:5561
+#: diff.c:5577
 msgid "swap two inputs, reverse the diff"
 msgstr ""
 
-#: diff.c:5563
+#: diff.c:5579
 msgid "exit with 1 if there were differences, 0 otherwise"
 msgstr ""
 
-#: diff.c:5565
+#: diff.c:5581
 msgid "disable all output of the program"
 msgstr ""
 
-#: diff.c:5567
+#: diff.c:5583
 msgid "allow an external diff helper to be executed"
 msgstr ""
 
-#: diff.c:5569
+#: diff.c:5585
 msgid "run external text conversion filters when comparing binary files"
 msgstr ""
 
-#: diff.c:5571
+#: diff.c:5587
 msgid "<when>"
 msgstr ""
 
-#: diff.c:5572
+#: diff.c:5588
 msgid "ignore changes to submodules in the diff generation"
 msgstr ""
 
-#: diff.c:5575
+#: diff.c:5591
 msgid "<format>"
 msgstr ""
 
-#: diff.c:5576
+#: diff.c:5592
 msgid "specify how differences in submodules are shown"
 msgstr ""
 
-#: diff.c:5580
+#: diff.c:5596
 msgid "hide 'git add -N' entries from the index"
 msgstr ""
 
-#: diff.c:5583
+#: diff.c:5599
 msgid "treat 'git add -N' entries as real in the index"
 msgstr ""
 
-#: diff.c:5585
+#: diff.c:5601
 msgid "<string>"
 msgstr ""
 
-#: diff.c:5586
+#: diff.c:5602
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "string"
 msgstr ""
 
-#: diff.c:5589
+#: diff.c:5605
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "regex"
 msgstr ""
 
-#: diff.c:5592
+#: diff.c:5608
 msgid "show all changes in the changeset with -S or -G"
 msgstr ""
 
-#: diff.c:5595
+#: diff.c:5611
 msgid "treat <string> in -S as extended POSIX regular expression"
 msgstr ""
 
-#: diff.c:5598
+#: diff.c:5614
 msgid "control the order in which files appear in the output"
 msgstr ""
 
-#: diff.c:5599
+#: diff.c:5615 diff.c:5618
+msgid "<path>"
+msgstr ""
+
+#: diff.c:5616
+msgid "show the change in the specified path first"
+msgstr ""
+
+#: diff.c:5619
+msgid "skip the output to the specified path"
+msgstr ""
+
+#: diff.c:5621
 msgid "<object-id>"
 msgstr ""
 
-#: diff.c:5600
+#: diff.c:5622
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "object"
 msgstr ""
 
-#: diff.c:5602
+#: diff.c:5624
 msgid "[(A|C|D|M|R|T|U|X|B)...[*]]"
 msgstr ""
 
-#: diff.c:5603
+#: diff.c:5625
 msgid "select files by diff type"
 msgstr ""
 
-#: diff.c:5605
+#: diff.c:5627
 msgid "<file>"
 msgstr ""
 
-#: diff.c:5606
+#: diff.c:5628
 msgid "Output to a specific file"
 msgstr ""
 
-#: diff.c:6263
+#: diff.c:6285
 msgid "inexact rename detection was skipped due to too many files."
 msgstr ""
 
-#: diff.c:6266
+#: diff.c:6288
 msgid "only found copies from modified paths due to too many files."
 msgstr ""
 
-#: diff.c:6269
+#: diff.c:6291
 #, c-format
 msgid ""
 "you may want to set your %s variable to at least %d and retry the command."
@@ -3559,10 +3638,15 @@ msgstr ""
 msgid "failed to read orderfile '%s'"
 msgstr ""
 
-#: diffcore-rename.c:592
+#: diffcore-rename.c:786
 msgid "Performing inexact rename detection"
 msgstr ""
 
+#: diffcore-rotate.c:29
+#, c-format
+msgid "No such path '%s' in the diff"
+msgstr ""
+
 #: dir.c:578
 #, c-format
 msgid "pathspec '%s' did not match any file(s) known to git"
@@ -3605,17 +3689,17 @@ msgstr ""
 msgid "untracked cache is disabled on this system or location"
 msgstr ""
 
-#: dir.c:3520
+#: dir.c:3534
 #, c-format
 msgid "index file corrupt in repo %s"
 msgstr ""
 
-#: dir.c:3565 dir.c:3570
+#: dir.c:3579 dir.c:3584
 #, c-format
 msgid "could not create directories for %s"
 msgstr ""
 
-#: dir.c:3599
+#: dir.c:3613
 #, c-format
 msgid "could not migrate git directory from '%s' to '%s'"
 msgstr ""
@@ -3634,12 +3718,12 @@ msgstr ""
 msgid "could not stat file '%s'"
 msgstr ""
 
-#: environment.c:150
+#: environment.c:152
 #, c-format
 msgid "bad git namespace path \"%s\""
 msgstr ""
 
-#: environment.c:337
+#: environment.c:335
 #, c-format
 msgid "could not set GIT_DIR to '%s'"
 msgstr ""
@@ -3674,32 +3758,32 @@ msgstr ""
 msgid "--stateless-rpc requires multi_ack_detailed"
 msgstr ""
 
-#: fetch-pack.c:378 fetch-pack.c:1406
+#: fetch-pack.c:378 fetch-pack.c:1457
 #, c-format
 msgid "invalid shallow line: %s"
 msgstr ""
 
-#: fetch-pack.c:384 fetch-pack.c:1412
+#: fetch-pack.c:384 fetch-pack.c:1463
 #, c-format
 msgid "invalid unshallow line: %s"
 msgstr ""
 
-#: fetch-pack.c:386 fetch-pack.c:1414
+#: fetch-pack.c:386 fetch-pack.c:1465
 #, c-format
 msgid "object not found: %s"
 msgstr ""
 
-#: fetch-pack.c:389 fetch-pack.c:1417
+#: fetch-pack.c:389 fetch-pack.c:1468
 #, c-format
 msgid "error in object: %s"
 msgstr ""
 
-#: fetch-pack.c:391 fetch-pack.c:1419
+#: fetch-pack.c:391 fetch-pack.c:1470
 #, c-format
 msgid "no shallow found: %s"
 msgstr ""
 
-#: fetch-pack.c:394 fetch-pack.c:1423
+#: fetch-pack.c:394 fetch-pack.c:1474
 #, c-format
 msgid "expected shallow/unshallow, got %s"
 msgstr ""
@@ -3737,171 +3821,175 @@ msgstr ""
 msgid "already have %s (%s)"
 msgstr ""
 
-#: fetch-pack.c:827
+#: fetch-pack.c:844
 msgid "fetch-pack: unable to fork off sideband demultiplexer"
 msgstr ""
 
-#: fetch-pack.c:835
+#: fetch-pack.c:852
 msgid "protocol error: bad pack header"
 msgstr ""
 
-#: fetch-pack.c:919
+#: fetch-pack.c:946
 #, c-format
 msgid "fetch-pack: unable to fork off %s"
 msgstr ""
 
-#: fetch-pack.c:937
+#: fetch-pack.c:952
+msgid "fetch-pack: invalid index-pack output"
+msgstr ""
+
+#: fetch-pack.c:969
 #, c-format
 msgid "%s failed"
 msgstr ""
 
-#: fetch-pack.c:939
+#: fetch-pack.c:971
 msgid "error in sideband demultiplexer"
 msgstr ""
 
-#: fetch-pack.c:982
+#: fetch-pack.c:1031
 #, c-format
 msgid "Server version is %.*s"
 msgstr ""
 
-#: fetch-pack.c:990 fetch-pack.c:996 fetch-pack.c:999 fetch-pack.c:1005
-#: fetch-pack.c:1009 fetch-pack.c:1013 fetch-pack.c:1017 fetch-pack.c:1021
-#: fetch-pack.c:1025 fetch-pack.c:1029 fetch-pack.c:1033 fetch-pack.c:1037
-#: fetch-pack.c:1043 fetch-pack.c:1049 fetch-pack.c:1054 fetch-pack.c:1059
+#: fetch-pack.c:1039 fetch-pack.c:1045 fetch-pack.c:1048 fetch-pack.c:1054
+#: fetch-pack.c:1058 fetch-pack.c:1062 fetch-pack.c:1066 fetch-pack.c:1070
+#: fetch-pack.c:1074 fetch-pack.c:1078 fetch-pack.c:1082 fetch-pack.c:1086
+#: fetch-pack.c:1092 fetch-pack.c:1098 fetch-pack.c:1103 fetch-pack.c:1108
 #, c-format
 msgid "Server supports %s"
 msgstr ""
 
-#: fetch-pack.c:992
+#: fetch-pack.c:1041
 msgid "Server does not support shallow clients"
 msgstr ""
 
-#: fetch-pack.c:1052
+#: fetch-pack.c:1101
 msgid "Server does not support --shallow-since"
 msgstr ""
 
-#: fetch-pack.c:1057
+#: fetch-pack.c:1106
 msgid "Server does not support --shallow-exclude"
 msgstr ""
 
-#: fetch-pack.c:1061
+#: fetch-pack.c:1110
 msgid "Server does not support --deepen"
 msgstr ""
 
-#: fetch-pack.c:1063
+#: fetch-pack.c:1112
 msgid "Server does not support this repository's object format"
 msgstr ""
 
-#: fetch-pack.c:1076
+#: fetch-pack.c:1125
 msgid "no common commits"
 msgstr ""
 
-#: fetch-pack.c:1088 fetch-pack.c:1628
+#: fetch-pack.c:1138 fetch-pack.c:1682
 msgid "git fetch-pack: fetch failed."
 msgstr ""
 
-#: fetch-pack.c:1214
+#: fetch-pack.c:1265
 #, c-format
 msgid "mismatched algorithms: client %s; server %s"
 msgstr ""
 
-#: fetch-pack.c:1218
+#: fetch-pack.c:1269
 #, c-format
 msgid "the server does not support algorithm '%s'"
 msgstr ""
 
-#: fetch-pack.c:1238
+#: fetch-pack.c:1289
 msgid "Server does not support shallow requests"
 msgstr ""
 
-#: fetch-pack.c:1245
+#: fetch-pack.c:1296
 msgid "Server supports filter"
 msgstr ""
 
-#: fetch-pack.c:1284
+#: fetch-pack.c:1335
 msgid "unable to write request to remote"
 msgstr ""
 
-#: fetch-pack.c:1302
+#: fetch-pack.c:1353
 #, c-format
 msgid "error reading section header '%s'"
 msgstr ""
 
-#: fetch-pack.c:1308
+#: fetch-pack.c:1359
 #, c-format
 msgid "expected '%s', received '%s'"
 msgstr ""
 
-#: fetch-pack.c:1369
+#: fetch-pack.c:1420
 #, c-format
 msgid "unexpected acknowledgment line: '%s'"
 msgstr ""
 
-#: fetch-pack.c:1374
+#: fetch-pack.c:1425
 #, c-format
 msgid "error processing acks: %d"
 msgstr ""
 
-#: fetch-pack.c:1384
+#: fetch-pack.c:1435
 msgid "expected packfile to be sent after 'ready'"
 msgstr ""
 
-#: fetch-pack.c:1386
+#: fetch-pack.c:1437
 msgid "expected no other sections to be sent after no 'ready'"
 msgstr ""
 
-#: fetch-pack.c:1428
+#: fetch-pack.c:1479
 #, c-format
 msgid "error processing shallow info: %d"
 msgstr ""
 
-#: fetch-pack.c:1475
+#: fetch-pack.c:1526
 #, c-format
 msgid "expected wanted-ref, got '%s'"
 msgstr ""
 
-#: fetch-pack.c:1480
+#: fetch-pack.c:1531
 #, c-format
 msgid "unexpected wanted-ref: '%s'"
 msgstr ""
 
-#: fetch-pack.c:1485
+#: fetch-pack.c:1536
 #, c-format
 msgid "error processing wanted refs: %d"
 msgstr ""
 
-#: fetch-pack.c:1515
+#: fetch-pack.c:1566
 msgid "git fetch-pack: expected response end packet"
 msgstr ""
 
-#: fetch-pack.c:1897
+#: fetch-pack.c:1960
 msgid "no matching remote head"
 msgstr ""
 
-#: fetch-pack.c:1920 builtin/clone.c:693
+#: fetch-pack.c:1983 builtin/clone.c:693
 msgid "remote did not send all necessary objects"
 msgstr ""
 
-#: fetch-pack.c:1947
+#: fetch-pack.c:2010
 #, c-format
 msgid "no such remote ref %s"
 msgstr ""
 
-#: fetch-pack.c:1950
+#: fetch-pack.c:2013
 #, c-format
 msgid "Server does not allow request for unadvertised object %s"
 msgstr ""
 
-#: gpg-interface.c:272
+#: gpg-interface.c:273
 msgid "could not create temporary file"
 msgstr ""
 
-#: gpg-interface.c:275
+#: gpg-interface.c:276
 #, c-format
 msgid "failed writing detached signature to '%s'"
 msgstr ""
 
-#: gpg-interface.c:457
+#: gpg-interface.c:470
 msgid "gpg failed to sign the data"
 msgstr ""
 
@@ -3910,24 +3998,24 @@ msgstr ""
 msgid "ignore invalid color '%.*s' in log.graphColors"
 msgstr ""
 
-#: grep.c:640
+#: grep.c:543
 msgid ""
 "given pattern contains NULL byte (via -f <file>). This is only supported "
 "with -P under PCRE v2"
 msgstr ""
 
-#: grep.c:2100
+#: grep.c:1906
 #, c-format
 msgid "'%s': unable to read %s"
 msgstr ""
 
-#: grep.c:2117 setup.c:176 builtin/clone.c:412 builtin/diff.c:89
+#: grep.c:1923 setup.c:176 builtin/clone.c:412 builtin/diff.c:90
 #: builtin/rm.c:135
 #, c-format
 msgid "failed to stat '%s'"
 msgstr ""
 
-#: grep.c:2128
+#: grep.c:1934
 #, c-format
 msgid "'%s': short read"
 msgstr ""
@@ -3997,7 +4085,7 @@ msgstr ""
 msgid "These are common Git commands used in various situations:"
 msgstr ""
 
-#: help.c:365 git.c:99
+#: help.c:365 git.c:100
 #, c-format
 msgid "unsupported command listing type '%s'"
 msgstr ""
@@ -4206,176 +4294,334 @@ msgstr ""
 msgid "Unable to create '%s.lock': %s"
 msgstr ""
 
-#: ls-refs.c:109
+#: ls-refs.c:37
+#, c-format
+msgid "invalid value '%s' for lsrefs.unborn"
+msgstr ""
+
+#: ls-refs.c:167
 msgid "expected flush after ls-refs arguments"
 msgstr ""
 
-#: merge-ort-wrappers.c:13 merge-recursive.c:3672
+#: merge-ort.c:888 merge-recursive.c:1191
 #, c-format
-msgid ""
-"Your local changes to the following files would be overwritten by merge:\n"
-"  %s"
+msgid "Failed to merge submodule %s (not checked out)"
 msgstr ""
 
-#: merge-ort-wrappers.c:33 merge-recursive.c:3436
+#: merge-ort.c:897 merge-recursive.c:1198
 #, c-format
-msgid "Already up to date!"
+msgid "Failed to merge submodule %s (commits not present)"
 msgstr ""
 
-#: merge-recursive.c:356
-msgid "(bad commit)\n"
+#: merge-ort.c:906 merge-recursive.c:1205
+#, c-format
+msgid "Failed to merge submodule %s (commits don't follow merge-base)"
 msgstr ""
 
-#: merge-recursive.c:379
+#: merge-ort.c:916 merge-ort.c:923
 #, c-format
-msgid "add_cacheinfo failed for path '%s'; merge aborting."
+msgid "Note: Fast-forwarding submodule %s to %s"
 msgstr ""
 
-#: merge-recursive.c:388
+#: merge-ort.c:944
 #, c-format
-msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
+msgid "Failed to merge submodule %s"
 msgstr ""
 
-#: merge-recursive.c:874
+#: merge-ort.c:951
 #, c-format
-msgid "failed to create path '%s'%s"
+msgid ""
+"Failed to merge submodule %s, but a possible merge resolution exists:\n"
+"%s\n"
 msgstr ""
 
-#: merge-recursive.c:885
+#: merge-ort.c:955 merge-recursive.c:1259
 #, c-format
-msgid "Removing %s to make room for subdirectory\n"
+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:899 merge-recursive.c:918
-msgid ": perhaps a D/F conflict?"
+#: merge-ort.c:968
+#, c-format
+msgid ""
+"Failed to merge submodule %s, but multiple possible merges exist:\n"
+"%s"
 msgstr ""
 
-#: merge-recursive.c:908
-#, c-format
-msgid "refusing to lose untracked file at '%s'"
+#: merge-ort.c:1127 merge-recursive.c:1341
+msgid "Failed to execute internal merge"
 msgstr ""
 
-#: merge-recursive.c:949 builtin/cat-file.c:41
+#: merge-ort.c:1132 merge-recursive.c:1346
 #, c-format
-msgid "cannot read object %s '%s'"
+msgid "Unable to add %s to database"
 msgstr ""
 
-#: merge-recursive.c:954
+#: merge-ort.c:1139 merge-recursive.c:1378
 #, c-format
-msgid "blob expected for %s '%s'"
+msgid "Auto-merging %s"
 msgstr ""
 
-#: merge-recursive.c:979
+#: merge-ort.c:1278 merge-recursive.c:2100
 #, c-format
-msgid "failed to open '%s': %s"
+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:990
+#: merge-ort.c:1288 merge-recursive.c:2110
 #, c-format
-msgid "failed to symlink '%s': %s"
+msgid ""
+"CONFLICT (implicit dir rename): Cannot map more than one path to %s; "
+"implicit directory renames tried to put these paths there: %s"
 msgstr ""
 
-#: merge-recursive.c:995
+#: merge-ort.c:1471
 #, c-format
-msgid "do not know what to do with %06o %s '%s'"
+msgid ""
+"CONFLICT (directory rename split): Unclear where to rename %s to; it was "
+"renamed to multiple other directories, with no destination getting a "
+"majority of the files."
 msgstr ""
 
-#: merge-recursive.c:1191
+#: merge-ort.c:1637 merge-recursive.c:2447
 #, c-format
-msgid "Failed to merge submodule %s (not checked out)"
+msgid ""
+"WARNING: Avoiding applying %s -> %s rename to %s, because %s itself was "
+"renamed."
 msgstr ""
 
-#: merge-recursive.c:1198
+#: merge-ort.c:1781 merge-recursive.c:3215
 #, c-format
-msgid "Failed to merge submodule %s (commits not present)"
+msgid ""
+"Path updated: %s added in %s inside a directory that was renamed in %s; "
+"moving it to %s."
 msgstr ""
 
-#: merge-recursive.c:1205
+#: merge-ort.c:1788 merge-recursive.c:3222
 #, c-format
-msgid "Failed to merge submodule %s (commits don't follow merge-base)"
+msgid ""
+"Path updated: %s renamed to %s in %s, inside a directory that was renamed in "
+"%s; moving it to %s."
 msgstr ""
 
-#: merge-recursive.c:1213 merge-recursive.c:1225
+#: merge-ort.c:1801 merge-recursive.c:3218
 #, c-format
-msgid "Fast-forwarding submodule %s to the following commit:"
+msgid ""
+"CONFLICT (file location): %s added in %s inside a directory that was renamed "
+"in %s, suggesting it should perhaps be moved to %s."
 msgstr ""
 
-#: merge-recursive.c:1216 merge-recursive.c:1228
+#: merge-ort.c:1809 merge-recursive.c:3225
 #, c-format
-msgid "Fast-forwarding submodule %s"
+msgid ""
+"CONFLICT (file location): %s renamed to %s in %s, inside a directory that "
+"was renamed in %s, suggesting it should perhaps be moved to %s."
 msgstr ""
 
-#: merge-recursive.c:1251
+#: merge-ort.c:1952
 #, c-format
-msgid "Failed to merge submodule %s (merge following commits not found)"
+msgid "CONFLICT (rename/rename): %s renamed to %s in %s and to %s in %s."
 msgstr ""
 
-#: merge-recursive.c:1255
+#: merge-ort.c:2047
 #, c-format
-msgid "Failed to merge submodule %s (not fast-forward)"
+msgid ""
+"CONFLICT (rename involved in collision): rename of %s -> %s has content "
+"conflicts AND collides with another path; this may result in nested conflict "
+"markers."
 msgstr ""
 
-#: merge-recursive.c:1256
-msgid "Found a possible merge resolution for the submodule:\n"
+#: merge-ort.c:2066 merge-ort.c:2090
+#, c-format
+msgid "CONFLICT (rename/delete): %s renamed to %s in %s, but deleted in %s."
 msgstr ""
 
-#: merge-recursive.c:1259
+#: merge-ort.c:2735
 #, 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"
+"CONFLICT (file/directory): directory in the way of %s from %s; moving it to "
+"%s instead."
 msgstr ""
 
-#: merge-recursive.c:1268
+#: merge-ort.c:2808
 #, c-format
-msgid "Failed to merge submodule %s (multiple merges found)"
+msgid ""
+"CONFLICT (distinct types): %s had different types on each side; renamed %s "
+"of them so each can be recorded somewhere."
 msgstr ""
 
-#: merge-recursive.c:1341
-msgid "Failed to execute internal merge"
+#: merge-ort.c:2812
+msgid "both"
 msgstr ""
 
-#: merge-recursive.c:1346
-#, c-format
-msgid "Unable to add %s to database"
+#: merge-ort.c:2812
+msgid "one"
 msgstr ""
 
-#: merge-recursive.c:1378
-#, c-format
-msgid "Auto-merging %s"
+#: merge-ort.c:2907 merge-recursive.c:3052
+msgid "content"
 msgstr ""
 
-#: merge-recursive.c:1402
-#, c-format
-msgid "Error: Refusing to lose untracked file at %s; writing to %s instead."
+#: merge-ort.c:2909 merge-recursive.c:3056
+msgid "add/add"
 msgstr ""
 
-#: merge-recursive.c:1474
+#: merge-ort.c:2911 merge-recursive.c:3101
+msgid "submodule"
+msgstr ""
+
+#: merge-ort.c:2913 merge-recursive.c:3102
 #, c-format
-msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
-"in tree."
+msgid "CONFLICT (%s): Merge conflict in %s"
 msgstr ""
 
-#: merge-recursive.c:1479
+#: merge-ort.c:2938
 #, c-format
 msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
-"left in tree."
+"CONFLICT (modify/delete): %s deleted in %s and modified in %s.  Version %s "
+"of %s left in tree."
 msgstr ""
 
-#: merge-recursive.c:1486
+#. TRANSLATORS: The %s arguments are: 1) tree hash of a merge
+#. base, and 2-3) the trees for the two trees we're merging.
+#.
+#: merge-ort.c:3406
 #, c-format
-msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
-"in tree at %s."
+msgid "collecting merge info failed for trees %s, %s, %s"
 msgstr ""
 
-#: merge-recursive.c:1491
+#: merge-ort-wrappers.c:13 merge-recursive.c:3661
+#, c-format
+msgid ""
+"Your local changes to the following files would be overwritten by merge:\n"
+"  %s"
+msgstr ""
+
+#: merge-ort-wrappers.c:33 merge-recursive.c:3436
+#, c-format
+msgid "Already up to date!"
+msgstr ""
+
+#: merge-recursive.c:356
+msgid "(bad commit)\n"
+msgstr ""
+
+#: merge-recursive.c:379
+#, c-format
+msgid "add_cacheinfo failed for path '%s'; merge aborting."
+msgstr ""
+
+#: merge-recursive.c:388
+#, c-format
+msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
+msgstr ""
+
+#: merge-recursive.c:874
+#, c-format
+msgid "failed to create path '%s'%s"
+msgstr ""
+
+#: merge-recursive.c:885
+#, c-format
+msgid "Removing %s to make room for subdirectory\n"
+msgstr ""
+
+#: merge-recursive.c:899 merge-recursive.c:918
+msgid ": perhaps a D/F conflict?"
+msgstr ""
+
+#: merge-recursive.c:908
+#, c-format
+msgid "refusing to lose untracked file at '%s'"
+msgstr ""
+
+#: merge-recursive.c:949 builtin/cat-file.c:41
+#, c-format
+msgid "cannot read object %s '%s'"
+msgstr ""
+
+#: merge-recursive.c:954
+#, c-format
+msgid "blob expected for %s '%s'"
+msgstr ""
+
+#: merge-recursive.c:979
+#, c-format
+msgid "failed to open '%s': %s"
+msgstr ""
+
+#: merge-recursive.c:990
+#, c-format
+msgid "failed to symlink '%s': %s"
+msgstr ""
+
+#: merge-recursive.c:995
+#, c-format
+msgid "do not know what to do with %06o %s '%s'"
+msgstr ""
+
+#: merge-recursive.c:1213 merge-recursive.c:1225
+#, c-format
+msgid "Fast-forwarding submodule %s to the following commit:"
+msgstr ""
+
+#: merge-recursive.c:1216 merge-recursive.c:1228
+#, c-format
+msgid "Fast-forwarding submodule %s"
+msgstr ""
+
+#: merge-recursive.c:1251
+#, c-format
+msgid "Failed to merge submodule %s (merge following commits not found)"
+msgstr ""
+
+#: merge-recursive.c:1255
+#, c-format
+msgid "Failed to merge submodule %s (not fast-forward)"
+msgstr ""
+
+#: merge-recursive.c:1256
+msgid "Found a possible merge resolution for the submodule:\n"
+msgstr ""
+
+#: merge-recursive.c:1268
+#, c-format
+msgid "Failed to merge submodule %s (multiple merges found)"
+msgstr ""
+
+#: merge-recursive.c:1402
+#, c-format
+msgid "Error: Refusing to lose untracked file at %s; writing to %s instead."
+msgstr ""
+
+#: merge-recursive.c:1474
+#, 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:1479
+#, 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:1486
+#, 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:1491
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
@@ -4439,20 +4685,6 @@ msgid ""
 "getting a majority of the files."
 msgstr ""
 
-#: merge-recursive.c:2100
-#, c-format
-msgid ""
-"CONFLICT (implicit dir rename): Existing file/dir at %s in the way of "
-"implicit directory rename(s) putting the following path(s) there: %s."
-msgstr ""
-
-#: merge-recursive.c:2110
-#, c-format
-msgid ""
-"CONFLICT (implicit dir rename): Cannot map more than one path to %s; "
-"implicit directory renames tried to put these paths there: %s"
-msgstr ""
-
 #: merge-recursive.c:2202
 #, c-format
 msgid ""
@@ -4460,13 +4692,6 @@ msgid ""
 ">%s in %s"
 msgstr ""
 
-#: merge-recursive.c:2447
-#, c-format
-msgid ""
-"WARNING: Avoiding applying %s -> %s rename to %s, because %s itself was "
-"renamed."
-msgstr ""
-
 #: merge-recursive.c:2973
 #, c-format
 msgid "cannot read object %s"
@@ -4485,61 +4710,16 @@ msgstr ""
 msgid "modified"
 msgstr ""
 
-#: merge-recursive.c:3052
-msgid "content"
-msgstr ""
-
-#: merge-recursive.c:3056
-msgid "add/add"
-msgstr ""
-
 #: merge-recursive.c:3079
 #, c-format
 msgid "Skipped %s (merged same as existing)"
 msgstr ""
 
-#: merge-recursive.c:3101
-msgid "submodule"
-msgstr ""
-
-#: merge-recursive.c:3102
-#, c-format
-msgid "CONFLICT (%s): Merge conflict in %s"
-msgstr ""
-
 #: merge-recursive.c:3132
 #, c-format
 msgid "Adding as %s instead"
 msgstr ""
 
-#: merge-recursive.c:3215
-#, c-format
-msgid ""
-"Path updated: %s added in %s inside a directory that was renamed in %s; "
-"moving it to %s."
-msgstr ""
-
-#: merge-recursive.c:3218
-#, c-format
-msgid ""
-"CONFLICT (file location): %s added in %s inside a directory that was renamed "
-"in %s, suggesting it should perhaps be moved to %s."
-msgstr ""
-
-#: merge-recursive.c:3222
-#, c-format
-msgid ""
-"Path updated: %s renamed to %s in %s, inside a directory that was renamed in "
-"%s; moving it to %s."
-msgstr ""
-
-#: merge-recursive.c:3225
-#, c-format
-msgid ""
-"CONFLICT (file location): %s renamed to %s in %s, inside a directory that "
-"was renamed in %s, suggesting it should perhaps be moved to %s."
-msgstr ""
-
 #: merge-recursive.c:3339
 #, c-format
 msgid "Removing %s"
@@ -4573,27 +4753,28 @@ msgstr ""
 msgid "merging of trees %s and %s failed"
 msgstr ""
 
-#: merge-recursive.c:3550
+#: merge-recursive.c:3539
 msgid "Merging:"
 msgstr ""
 
-#: merge-recursive.c:3563
+#: merge-recursive.c:3552
 #, c-format
 msgid "found %u common ancestor:"
 msgid_plural "found %u common ancestors:"
 msgstr[0] ""
 msgstr[1] ""
 
-#: merge-recursive.c:3613
+#: merge-recursive.c:3602
 msgid "merge returned no commit"
 msgstr ""
 
-#: merge-recursive.c:3769
+#: merge-recursive.c:3758
 #, c-format
 msgid "Could not parse object '%s'"
 msgstr ""
 
-#: merge-recursive.c:3787 builtin/merge.c:711 builtin/merge.c:895
+#: merge-recursive.c:3776 builtin/merge.c:712 builtin/merge.c:896
+#: builtin/stash.c:471
 msgid "Unable to write index."
 msgstr ""
 
@@ -4601,184 +4782,176 @@ msgstr ""
 msgid "failed to read the cache"
 msgstr ""
 
-#: merge.c:109 rerere.c:720 builtin/am.c:1883 builtin/am.c:1917
-#: builtin/checkout.c:573 builtin/checkout.c:829 builtin/clone.c:817
+#: merge.c:109 rerere.c:704 builtin/am.c:1883 builtin/am.c:1917
+#: builtin/checkout.c:575 builtin/checkout.c:828 builtin/clone.c:817
 #: builtin/stash.c:265
 msgid "unable to write new index file"
 msgstr ""
 
-#: midx.c:80
+#: midx.c:62
+msgid "multi-pack-index OID fanout is of the wrong size"
+msgstr ""
+
+#: midx.c:93
 #, c-format
 msgid "multi-pack-index file %s is too small"
 msgstr ""
 
-#: midx.c:96
+#: midx.c:109
 #, c-format
 msgid "multi-pack-index signature 0x%08x does not match signature 0x%08x"
 msgstr ""
 
-#: midx.c:101
+#: midx.c:114
 #, c-format
 msgid "multi-pack-index version %d not recognized"
 msgstr ""
 
-#: midx.c:106
+#: midx.c:119
 #, c-format
 msgid "multi-pack-index hash version %u does not match version %u"
 msgstr ""
 
-#: midx.c:123
-msgid "invalid chunk offset (too large)"
-msgstr ""
-
-#: midx.c:147
-msgid "terminating multi-pack-index chunk id appears earlier than expected"
-msgstr ""
-
-#: midx.c:160
+#: midx.c:136
 msgid "multi-pack-index missing required pack-name chunk"
 msgstr ""
 
-#: midx.c:162
+#: midx.c:138
 msgid "multi-pack-index missing required OID fanout chunk"
 msgstr ""
 
-#: midx.c:164
+#: midx.c:140
 msgid "multi-pack-index missing required OID lookup chunk"
 msgstr ""
 
-#: midx.c:166
+#: midx.c:142
 msgid "multi-pack-index missing required object offsets chunk"
 msgstr ""
 
-#: midx.c:180
+#: midx.c:158
 #, c-format
 msgid "multi-pack-index pack names out of order: '%s' before '%s'"
 msgstr ""
 
-#: midx.c:223
+#: midx.c:202
 #, c-format
 msgid "bad pack-int-id: %u (%u total packs)"
 msgstr ""
 
-#: midx.c:273
+#: midx.c:252
 msgid "multi-pack-index stores a 64-bit offset, but off_t is too small"
 msgstr ""
 
-#: midx.c:480
+#: midx.c:467
 #, c-format
 msgid "failed to add packfile '%s'"
 msgstr ""
 
-#: midx.c:486
+#: midx.c:473
 #, c-format
 msgid "failed to open pack-index '%s'"
 msgstr ""
 
-#: midx.c:546
+#: midx.c:533
 #, c-format
 msgid "failed to locate object %d in packfile"
 msgstr ""
 
-#: midx.c:846
+#: midx.c:821
 msgid "Adding packfiles to multi-pack-index"
 msgstr ""
 
-#: midx.c:879
+#: midx.c:855
 #, c-format
 msgid "did not see pack-file %s to drop"
 msgstr ""
 
-#: midx.c:931
+#: midx.c:904
 msgid "no pack files to index."
 msgstr ""
 
-#: midx.c:982
-msgid "Writing chunks to multi-pack-index"
-msgstr ""
-
-#: midx.c:1060
+#: midx.c:965
 #, c-format
 msgid "failed to clear multi-pack-index at %s"
 msgstr ""
 
-#: midx.c:1116
+#: midx.c:1021
 msgid "multi-pack-index file exists, but failed to parse"
 msgstr ""
 
-#: midx.c:1124
+#: midx.c:1029
 msgid "Looking for referenced packfiles"
 msgstr ""
 
-#: midx.c:1139
+#: midx.c:1044
 #, c-format
 msgid ""
 "oid fanout out of order: fanout[%d] = %<PRIx32> > %<PRIx32> = fanout[%d]"
 msgstr ""
 
-#: midx.c:1144
+#: midx.c:1049
 msgid "the midx contains no oid"
 msgstr ""
 
-#: midx.c:1153
+#: midx.c:1058
 msgid "Verifying OID order in multi-pack-index"
 msgstr ""
 
-#: midx.c:1162
+#: midx.c:1067
 #, c-format
 msgid "oid lookup out of order: oid[%d] = %s >= %s = oid[%d]"
 msgstr ""
 
-#: midx.c:1182
+#: midx.c:1087
 msgid "Sorting objects by packfile"
 msgstr ""
 
-#: midx.c:1189
+#: midx.c:1094
 msgid "Verifying object offsets"
 msgstr ""
 
-#: midx.c:1205
+#: midx.c:1110
 #, c-format
 msgid "failed to load pack entry for oid[%d] = %s"
 msgstr ""
 
-#: midx.c:1211
+#: midx.c:1116
 #, c-format
 msgid "failed to load pack-index for packfile %s"
 msgstr ""
 
-#: midx.c:1220
+#: midx.c:1125
 #, c-format
 msgid "incorrect object offset for oid[%d] = %s: %<PRIx64> != %<PRIx64>"
 msgstr ""
 
-#: midx.c:1245
+#: midx.c:1150
 msgid "Counting referenced objects"
 msgstr ""
 
-#: midx.c:1255
+#: midx.c:1160
 msgid "Finding and deleting unreferenced packfiles"
 msgstr ""
 
-#: midx.c:1446
+#: midx.c:1351
 msgid "could not start pack-objects"
 msgstr ""
 
-#: midx.c:1466
+#: midx.c:1371
 msgid "could not finish pack-objects"
 msgstr ""
 
-#: name-hash.c:537
+#: name-hash.c:538
 #, c-format
 msgid "unable to create lazy_dir thread: %s"
 msgstr ""
 
-#: name-hash.c:559
+#: name-hash.c:560
 #, c-format
 msgid "unable to create lazy_name thread: %s"
 msgstr ""
 
-#: name-hash.c:565
+#: name-hash.c:566
 #, c-format
 msgid "unable to join lazy_name thread: %s"
 msgstr ""
@@ -4819,2760 +4992,2823 @@ msgstr ""
 msgid "Bad %s value: '%s'"
 msgstr ""
 
-#: object.c:53
+#: object-file.c:480
 #, c-format
-msgid "invalid object type \"%s\""
+msgid "object directory %s does not exist; check .git/objects/info/alternates"
 msgstr ""
 
-#: object.c:173
+#: object-file.c:531
 #, c-format
-msgid "object %s is a %s, not a %s"
+msgid "unable to normalize alternate object path: %s"
 msgstr ""
 
-#: object.c:233
+#: object-file.c:603
 #, c-format
-msgid "object %s has unknown type id %d"
+msgid "%s: ignoring alternate object stores, nesting too deep"
 msgstr ""
 
-#: object.c:246
+#: object-file.c:610
 #, c-format
-msgid "unable to parse object: %s"
+msgid "unable to normalize object directory: %s"
 msgstr ""
 
-#: object.c:266 object.c:278
-#, c-format
-msgid "hash mismatch %s"
+#: object-file.c:653
+msgid "unable to fdopen alternates lockfile"
 msgstr ""
 
-#: pack-bitmap.c:815 pack-bitmap.c:821 builtin/pack-objects.c:2216
-#, c-format
-msgid "unable to get size of %s"
+#: object-file.c:671
+msgid "unable to read alternates file"
 msgstr ""
 
-#: packfile.c:615
-msgid "offset before end of packfile (broken .idx?)"
+#: object-file.c:678
+msgid "unable to move new alternates file into place"
 msgstr ""
 
-#: packfile.c:1907
+#: object-file.c:713
 #, c-format
-msgid "offset before start of pack index for %s (corrupt index?)"
+msgid "path '%s' does not exist"
 msgstr ""
 
-#: packfile.c:1911
+#: object-file.c:734
 #, c-format
-msgid "offset beyond end of pack index for %s (truncated index?)"
+msgid "reference repository '%s' as a linked checkout is not supported yet."
 msgstr ""
 
-#: parse-options-cb.c:20 parse-options-cb.c:24
+#: object-file.c:740
 #, c-format
-msgid "option `%s' expects a numerical value"
+msgid "reference repository '%s' is not a local repository."
 msgstr ""
 
-#: parse-options-cb.c:41
+#: object-file.c:746
 #, c-format
-msgid "malformed expiration date '%s'"
+msgid "reference repository '%s' is shallow"
 msgstr ""
 
-#: parse-options-cb.c:54
+#: object-file.c:754
 #, c-format
-msgid "option `%s' expects \"always\", \"auto\", or \"never\""
+msgid "reference repository '%s' is grafted"
 msgstr ""
 
-#: parse-options-cb.c:132 parse-options-cb.c:149
+#: object-file.c:814
 #, c-format
-msgid "malformed object name '%s'"
+msgid "invalid line while parsing alternate refs: %s"
 msgstr ""
 
-#: parse-options.c:38
+#: object-file.c:964
 #, c-format
-msgid "%s requires a value"
+msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
 msgstr ""
 
-#: parse-options.c:73
-#, c-format
-msgid "%s is incompatible with %s"
+#: object-file.c:985
+msgid "mmap failed"
 msgstr ""
 
-#: parse-options.c:78
+#: object-file.c:1149
 #, c-format
-msgid "%s : incompatible with something else"
+msgid "object file %s is empty"
 msgstr ""
 
-#: parse-options.c:92 parse-options.c:96 parse-options.c:317
+#: object-file.c:1284 object-file.c:2477
 #, c-format
-msgid "%s takes no value"
+msgid "corrupt loose object '%s'"
 msgstr ""
 
-#: parse-options.c:94
+#: object-file.c:1286 object-file.c:2481
 #, c-format
-msgid "%s isn't available"
+msgid "garbage at end of loose object '%s'"
 msgstr ""
 
-#: parse-options.c:217
-#, c-format
-msgid "%s expects a non-negative integer value with an optional k/m/g suffix"
+#: object-file.c:1328
+msgid "invalid object type"
 msgstr ""
 
-#: parse-options.c:386
+#: object-file.c:1412
 #, c-format
-msgid "ambiguous option: %s (could be --%s%s or --%s%s)"
+msgid "unable to unpack %s header with --allow-unknown-type"
 msgstr ""
 
-#: parse-options.c:420 parse-options.c:428
+#: object-file.c:1415
 #, c-format
-msgid "did you mean `--%s` (with two dashes)?"
+msgid "unable to unpack %s header"
 msgstr ""
 
-#: parse-options.c:666 parse-options.c:971
+#: object-file.c:1421
 #, c-format
-msgid "alias of --%s"
+msgid "unable to parse %s header with --allow-unknown-type"
 msgstr ""
 
-#: parse-options.c:862
+#: object-file.c:1424
 #, c-format
-msgid "unknown option `%s'"
+msgid "unable to parse %s header"
 msgstr ""
 
-#: parse-options.c:864
+#: object-file.c:1651
 #, c-format
-msgid "unknown switch `%c'"
+msgid "failed to read object %s"
 msgstr ""
 
-#: parse-options.c:866
+#: object-file.c:1655
 #, c-format
-msgid "unknown non-ascii option in string: `%s'"
+msgid "replacement %s not found for %s"
 msgstr ""
 
-#: parse-options.c:890
-msgid "..."
+#: object-file.c:1659
+#, c-format
+msgid "loose object %s (stored in %s) is corrupt"
 msgstr ""
 
-#: parse-options.c:909
+#: object-file.c:1663
 #, c-format
-msgid "usage: %s"
+msgid "packed object %s (stored in %s) is corrupt"
 msgstr ""
 
-#. TRANSLATORS: the colon here should align with the
-#. one in "usage: %s" translation.
-#.
-#: parse-options.c:915
+#: object-file.c:1768
 #, c-format
-msgid "   or: %s"
+msgid "unable to write file %s"
 msgstr ""
 
-#: parse-options.c:918
+#: object-file.c:1775
 #, c-format
-msgid "    %s"
+msgid "unable to set permission to '%s'"
 msgstr ""
 
-#: parse-options.c:957
-msgid "-NUM"
+#: object-file.c:1782
+msgid "file write error"
 msgstr ""
 
-#: path.c:915
-#, c-format
-msgid "Could not make %s writable by group"
+#: object-file.c:1802
+msgid "error when closing loose object file"
 msgstr ""
 
-#: pathspec.c:130
-msgid "Escape character '\\' not allowed as last character in attr value"
+#: object-file.c:1867
+#, c-format
+msgid "insufficient permission for adding an object to repository database %s"
 msgstr ""
 
-#: pathspec.c:148
-msgid "Only one 'attr:' specification is allowed."
+#: object-file.c:1869
+msgid "unable to create temporary file"
 msgstr ""
 
-#: pathspec.c:151
-msgid "attr spec must not be empty"
+#: object-file.c:1893
+msgid "unable to write loose object file"
 msgstr ""
 
-#: pathspec.c:194
+#: object-file.c:1899
 #, c-format
-msgid "invalid attribute name %s"
+msgid "unable to deflate new object %s (%d)"
 msgstr ""
 
-#: pathspec.c:259
-msgid "global 'glob' and 'noglob' pathspec settings are incompatible"
+#: object-file.c:1903
+#, c-format
+msgid "deflateEnd on object %s failed (%d)"
 msgstr ""
 
-#: pathspec.c:266
-msgid ""
-"global 'literal' pathspec setting is incompatible with all other global "
-"pathspec settings"
+#: object-file.c:1907
+#, c-format
+msgid "confused by unstable object source data for %s"
 msgstr ""
 
-#: pathspec.c:306
-msgid "invalid parameter for pathspec magic 'prefix'"
+#: object-file.c:1917 builtin/pack-objects.c:1097
+#, c-format
+msgid "failed utime() on %s"
 msgstr ""
 
-#: pathspec.c:327
+#: object-file.c:1994
 #, c-format
-msgid "Invalid pathspec magic '%.*s' in '%s'"
+msgid "cannot read object for %s"
 msgstr ""
 
-#: pathspec.c:332
-#, c-format
-msgid "Missing ')' at the end of pathspec magic in '%s'"
+#: object-file.c:2045
+msgid "corrupt commit"
 msgstr ""
 
-#: pathspec.c:370
-#, c-format
-msgid "Unimplemented pathspec magic '%c' in '%s'"
+#: object-file.c:2053
+msgid "corrupt tag"
 msgstr ""
 
-#: pathspec.c:429
+#: object-file.c:2153
 #, c-format
-msgid "%s: 'literal' and 'glob' are incompatible"
+msgid "read error while indexing %s"
 msgstr ""
 
-#: pathspec.c:445
+#: object-file.c:2156
 #, c-format
-msgid "%s: '%s' is outside repository at '%s'"
+msgid "short read while indexing %s"
 msgstr ""
 
-#: pathspec.c:521
+#: object-file.c:2229 object-file.c:2239
 #, c-format
-msgid "'%s' (mnemonic: '%c')"
+msgid "%s: failed to insert into database"
 msgstr ""
 
-#: pathspec.c:531
+#: object-file.c:2245
 #, c-format
-msgid "%s: pathspec magic not supported by this command: %s"
+msgid "%s: unsupported file type"
 msgstr ""
 
-#: pathspec.c:598
+#: object-file.c:2269
 #, c-format
-msgid "pathspec '%s' is beyond a symbolic link"
+msgid "%s is not a valid object"
 msgstr ""
 
-#: pathspec.c:643
+#: object-file.c:2271
 #, c-format
-msgid "line is badly quoted: %s"
+msgid "%s is not a valid '%s' object"
 msgstr ""
 
-#: pkt-line.c:92
-msgid "unable to write flush packet"
+#: object-file.c:2298 builtin/index-pack.c:192
+#, c-format
+msgid "unable to open %s"
 msgstr ""
 
-#: pkt-line.c:99
-msgid "unable to write delim packet"
+#: object-file.c:2488 object-file.c:2541
+#, c-format
+msgid "hash mismatch for %s (expected %s)"
 msgstr ""
 
-#: pkt-line.c:106
-msgid "unable to write stateless separator packet"
+#: object-file.c:2512
+#, c-format
+msgid "unable to mmap %s"
 msgstr ""
 
-#: pkt-line.c:113
-msgid "flush packet write failed"
+#: object-file.c:2517
+#, c-format
+msgid "unable to unpack header of %s"
 msgstr ""
 
-#: pkt-line.c:153 pkt-line.c:239
-msgid "protocol error: impossibly long line"
+#: object-file.c:2523
+#, c-format
+msgid "unable to parse header of %s"
 msgstr ""
 
-#: pkt-line.c:169 pkt-line.c:171
-msgid "packet write with format failed"
+#: object-file.c:2534
+#, c-format
+msgid "unable to unpack contents of %s"
 msgstr ""
 
-#: pkt-line.c:203
-msgid "packet write failed - data exceeds max packet size"
+#: object-name.c:486
+#, c-format
+msgid "short object ID %s is ambiguous"
 msgstr ""
 
-#: pkt-line.c:210 pkt-line.c:217
-msgid "packet write failed"
+#: object-name.c:497
+msgid "The candidates are:"
 msgstr ""
 
-#: pkt-line.c:302
-msgid "read error"
+#: object-name.c:796
+msgid ""
+"Git normally never creates a ref that ends with 40 hex characters\n"
+"because it will be ignored when you just specify 40-hex. These refs\n"
+"may be created by mistake. For example,\n"
+"\n"
+"  git switch -c $br $(git rev-parse ...)\n"
+"\n"
+"where \"$br\" is somehow empty and a 40-hex ref is created. Please\n"
+"examine these refs and maybe delete them. Turn this message off by\n"
+"running \"git config advice.objectNameWarning false\""
 msgstr ""
 
-#: pkt-line.c:310
-msgid "the remote end hung up unexpectedly"
+#: object-name.c:916
+#, c-format
+msgid "log for '%.*s' only goes back to %s"
 msgstr ""
 
-#: pkt-line.c:338
+#: object-name.c:924
 #, c-format
-msgid "protocol error: bad line length character: %.4s"
+msgid "log for '%.*s' only has %d entries"
 msgstr ""
 
-#: pkt-line.c:352 pkt-line.c:357
+#: object-name.c:1702
 #, c-format
-msgid "protocol error: bad line length %d"
+msgid "path '%s' exists on disk, but not in '%.*s'"
 msgstr ""
 
-#: pkt-line.c:373 sideband.c:165
+#: object-name.c:1708
 #, c-format
-msgid "remote error: %s"
+msgid ""
+"path '%s' exists, but not '%s'\n"
+"hint: Did you mean '%.*s:%s' aka '%.*s:./%s'?"
 msgstr ""
 
-#: preload-index.c:119
-msgid "Refreshing index"
+#: object-name.c:1717
+#, c-format
+msgid "path '%s' does not exist in '%.*s'"
 msgstr ""
 
-#: preload-index.c:138
+#: object-name.c:1745
 #, c-format
-msgid "unable to create threaded lstat: %s"
+msgid ""
+"path '%s' is in the index, but not at stage %d\n"
+"hint: Did you mean ':%d:%s'?"
 msgstr ""
 
-#: pretty.c:983
-msgid "unable to parse --pretty format"
+#: object-name.c:1761
+#, c-format
+msgid ""
+"path '%s' is in the index, but not '%s'\n"
+"hint: Did you mean ':%d:%s' aka ':%d:./%s'?"
 msgstr ""
 
-#: promisor-remote.c:30
-msgid "promisor-remote: unable to fork off fetch subprocess"
+#: object-name.c:1769
+#, c-format
+msgid "path '%s' exists on disk, but not in the index"
 msgstr ""
 
-#: promisor-remote.c:35 promisor-remote.c:37
-msgid "promisor-remote: could not write to fetch subprocess"
+#: object-name.c:1771
+#, c-format
+msgid "path '%s' does not exist (neither on disk nor in the index)"
 msgstr ""
 
-#: promisor-remote.c:41
-msgid "promisor-remote: could not close stdin to fetch subprocess"
+#: object-name.c:1784
+msgid "relative path syntax can't be used outside working tree"
 msgstr ""
 
-#: promisor-remote.c:53
+#: object-name.c:1922
 #, c-format
-msgid "promisor remote name cannot begin with '/': %s"
+msgid "invalid object name '%.*s'."
 msgstr ""
 
-#: prune-packed.c:35
-msgid "Removing duplicate objects"
+#: object.c:53
+#, c-format
+msgid "invalid object type \"%s\""
 msgstr ""
 
-#: range-diff.c:77
-msgid "could not start `log`"
+#: object.c:173
+#, c-format
+msgid "object %s is a %s, not a %s"
 msgstr ""
 
-#: range-diff.c:79
-msgid "could not read `log` output"
+#: object.c:233
+#, c-format
+msgid "object %s has unknown type id %d"
 msgstr ""
 
-#: range-diff.c:98 sequencer.c:5310
+#: object.c:246
 #, c-format
-msgid "could not parse commit '%s'"
+msgid "unable to parse object: %s"
 msgstr ""
 
-#: range-diff.c:112
+#: object.c:266 object.c:278
 #, c-format
-msgid ""
-"could not parse first line of `log` output: did not start with 'commit ': "
-"'%s'"
+msgid "hash mismatch %s"
 msgstr ""
 
-#: range-diff.c:137
+#: pack-bitmap.c:843 pack-bitmap.c:849 builtin/pack-objects.c:2226
 #, c-format
-msgid "could not parse git header '%.*s'"
+msgid "unable to get size of %s"
 msgstr ""
 
-#: range-diff.c:299
-msgid "failed to generate diff"
+#: pack-bitmap.c:1489 builtin/rev-list.c:92
+#, c-format
+msgid "unable to get disk usage of %s"
 msgstr ""
 
-#: range-diff.c:532 range-diff.c:534
+#: pack-revindex.c:220
 #, c-format
-msgid "could not parse log for '%s'"
+msgid "reverse-index file %s is too small"
 msgstr ""
 
-#: read-cache.c:682
+#: pack-revindex.c:225
 #, c-format
-msgid "will not add file alias '%s' ('%s' already exists in index)"
+msgid "reverse-index file %s is corrupt"
 msgstr ""
 
-#: read-cache.c:698
-msgid "cannot create an empty blob in the object database"
+#: pack-revindex.c:233
+#, c-format
+msgid "reverse-index file %s has unknown signature"
 msgstr ""
 
-#: read-cache.c:720
+#: pack-revindex.c:237
 #, c-format
-msgid "%s: can only add regular files, symbolic links or git-directories"
+msgid "reverse-index file %s has unsupported version %<PRIu32>"
 msgstr ""
 
-#: read-cache.c:725
+#: pack-revindex.c:242
 #, c-format
-msgid "'%s' does not have a commit checked out"
+msgid "reverse-index file %s has unsupported hash id %<PRIu32>"
 msgstr ""
 
-#: read-cache.c:777
-#, c-format
-msgid "unable to index file '%s'"
+#: pack-write.c:236
+msgid "cannot both write and verify reverse index"
 msgstr ""
 
-#: read-cache.c:796
+#: pack-write.c:257
 #, c-format
-msgid "unable to add '%s' to index"
+msgid "could not stat: %s"
 msgstr ""
 
-#: read-cache.c:807
+#: pack-write.c:269
 #, c-format
-msgid "unable to stat '%s'"
+msgid "failed to make %s readable"
 msgstr ""
 
-#: read-cache.c:1318
+#: pack-write.c:508
 #, c-format
-msgid "'%s' appears as both a file and as a directory"
+msgid "could not write '%s' promisor file"
 msgstr ""
 
-#: read-cache.c:1524
-msgid "Refresh index"
+#: packfile.c:625
+msgid "offset before end of packfile (broken .idx?)"
 msgstr ""
 
-#: read-cache.c:1639
+#: packfile.c:1934
 #, c-format
-msgid ""
-"index.version set, but the value is invalid.\n"
-"Using version %i"
+msgid "offset before start of pack index for %s (corrupt index?)"
 msgstr ""
 
-#: read-cache.c:1649
+#: packfile.c:1938
 #, c-format
-msgid ""
-"GIT_INDEX_VERSION set, but the value is invalid.\n"
-"Using version %i"
+msgid "offset beyond end of pack index for %s (truncated index?)"
 msgstr ""
 
-#: read-cache.c:1705
+#: parse-options-cb.c:20 parse-options-cb.c:24
 #, c-format
-msgid "bad signature 0x%08x"
+msgid "option `%s' expects a numerical value"
 msgstr ""
 
-#: read-cache.c:1708
+#: parse-options-cb.c:41
 #, c-format
-msgid "bad index version %d"
-msgstr ""
-
-#: read-cache.c:1717
-msgid "bad index file sha1 signature"
+msgid "malformed expiration date '%s'"
 msgstr ""
 
-#: read-cache.c:1747
+#: parse-options-cb.c:54
 #, c-format
-msgid "index uses %.4s extension, which we do not understand"
+msgid "option `%s' expects \"always\", \"auto\", or \"never\""
 msgstr ""
 
-#: read-cache.c:1749
+#: parse-options-cb.c:132 parse-options-cb.c:149
 #, c-format
-msgid "ignoring %.4s extension"
+msgid "malformed object name '%s'"
 msgstr ""
 
-#: read-cache.c:1786
+#: parse-options.c:38
 #, c-format
-msgid "unknown index entry format 0x%08x"
+msgid "%s requires a value"
 msgstr ""
 
-#: read-cache.c:1802
+#: parse-options.c:73
 #, c-format
-msgid "malformed name field in the index, near path '%s'"
+msgid "%s is incompatible with %s"
 msgstr ""
 
-#: read-cache.c:1859
-msgid "unordered stage entries in index"
+#: parse-options.c:78
+#, c-format
+msgid "%s : incompatible with something else"
 msgstr ""
 
-#: read-cache.c:1862
+#: parse-options.c:92 parse-options.c:96 parse-options.c:317
 #, c-format
-msgid "multiple stage entries for merged file '%s'"
+msgid "%s takes no value"
 msgstr ""
 
-#: read-cache.c:1865
+#: parse-options.c:94
 #, c-format
-msgid "unordered stage entries for '%s'"
+msgid "%s isn't available"
 msgstr ""
 
-#: read-cache.c:1971 read-cache.c:2262 rerere.c:565 rerere.c:599 rerere.c:1111
-#: submodule.c:1628 builtin/add.c:538 builtin/check-ignore.c:181
-#: builtin/checkout.c:502 builtin/checkout.c:688 builtin/clean.c:991
-#: builtin/commit.c:364 builtin/diff-tree.c:122 builtin/grep.c:507
-#: builtin/mv.c:146 builtin/reset.c:247 builtin/rm.c:290
-#: builtin/submodule--helper.c:332
-msgid "index file corrupt"
+#: parse-options.c:217
+#, c-format
+msgid "%s expects a non-negative integer value with an optional k/m/g suffix"
 msgstr ""
 
-#: read-cache.c:2115
+#: parse-options.c:386
 #, c-format
-msgid "unable to create load_cache_entries thread: %s"
+msgid "ambiguous option: %s (could be --%s%s or --%s%s)"
 msgstr ""
 
-#: read-cache.c:2128
+#: parse-options.c:420 parse-options.c:428
 #, c-format
-msgid "unable to join load_cache_entries thread: %s"
+msgid "did you mean `--%s` (with two dashes)?"
 msgstr ""
 
-#: read-cache.c:2161
+#: parse-options.c:666 parse-options.c:971
 #, c-format
-msgid "%s: index file open failed"
+msgid "alias of --%s"
 msgstr ""
 
-#: read-cache.c:2165
+#: parse-options.c:862
 #, c-format
-msgid "%s: cannot stat the open index"
+msgid "unknown option `%s'"
 msgstr ""
 
-#: read-cache.c:2169
+#: parse-options.c:864
 #, c-format
-msgid "%s: index file smaller than expected"
+msgid "unknown switch `%c'"
 msgstr ""
 
-#: read-cache.c:2173
+#: parse-options.c:866
 #, c-format
-msgid "%s: unable to map index file"
+msgid "unknown non-ascii option in string: `%s'"
+msgstr ""
+
+#: parse-options.c:890
+msgid "..."
 msgstr ""
 
-#: read-cache.c:2215
+#: parse-options.c:909
 #, c-format
-msgid "unable to create load_index_extensions thread: %s"
+msgid "usage: %s"
 msgstr ""
 
-#: read-cache.c:2242
+#. TRANSLATORS: the colon here should align with the
+#. one in "usage: %s" translation.
+#.
+#: parse-options.c:915
 #, c-format
-msgid "unable to join load_index_extensions thread: %s"
+msgid "   or: %s"
 msgstr ""
 
-#: read-cache.c:2274
+#: parse-options.c:918
 #, c-format
-msgid "could not freshen shared index '%s'"
+msgid "    %s"
 msgstr ""
 
-#: read-cache.c:2321
+#: parse-options.c:957
+msgid "-NUM"
+msgstr ""
+
+#: path.c:915
 #, c-format
-msgid "broken index, expect %s in %s, got %s"
+msgid "Could not make %s writable by group"
+msgstr ""
+
+#: pathspec.c:130
+msgid "Escape character '\\' not allowed as last character in attr value"
+msgstr ""
+
+#: pathspec.c:148
+msgid "Only one 'attr:' specification is allowed."
 msgstr ""
 
-#: read-cache.c:3017 strbuf.c:1171 wrapper.c:633 builtin/merge.c:1140
+#: pathspec.c:151
+msgid "attr spec must not be empty"
+msgstr ""
+
+#: pathspec.c:194
 #, c-format
-msgid "could not close '%s'"
+msgid "invalid attribute name %s"
+msgstr ""
+
+#: pathspec.c:259
+msgid "global 'glob' and 'noglob' pathspec settings are incompatible"
+msgstr ""
+
+#: pathspec.c:266
+msgid ""
+"global 'literal' pathspec setting is incompatible with all other global "
+"pathspec settings"
+msgstr ""
+
+#: pathspec.c:306
+msgid "invalid parameter for pathspec magic 'prefix'"
 msgstr ""
 
-#: read-cache.c:3120 sequencer.c:2479 sequencer.c:4231
+#: pathspec.c:327
 #, c-format
-msgid "could not stat '%s'"
+msgid "Invalid pathspec magic '%.*s' in '%s'"
 msgstr ""
 
-#: read-cache.c:3133
+#: pathspec.c:332
 #, c-format
-msgid "unable to open git dir: %s"
+msgid "Missing ')' at the end of pathspec magic in '%s'"
 msgstr ""
 
-#: read-cache.c:3145
+#: pathspec.c:370
 #, c-format
-msgid "unable to unlink: %s"
+msgid "Unimplemented pathspec magic '%c' in '%s'"
 msgstr ""
 
-#: read-cache.c:3170
+#: pathspec.c:429
 #, c-format
-msgid "cannot fix permission bits on '%s'"
+msgid "%s: 'literal' and 'glob' are incompatible"
 msgstr ""
 
-#: read-cache.c:3319
+#: pathspec.c:445
 #, c-format
-msgid "%s: cannot drop to stage #0"
+msgid "%s: '%s' is outside repository at '%s'"
 msgstr ""
 
-#: rebase-interactive.c:11
-msgid ""
-"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"
+#: pathspec.c:521
+#, c-format
+msgid "'%s' (mnemonic: '%c')"
 msgstr ""
 
-#: rebase-interactive.c:33
+#: pathspec.c:531
 #, c-format
-msgid ""
-"unrecognized setting %s for option rebase.missingCommitsCheck. Ignoring."
+msgid "%s: pathspec magic not supported by this command: %s"
 msgstr ""
 
-#: rebase-interactive.c:42
-msgid ""
-"\n"
-"Commands:\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"
-"b, break = stop here (continue rebase later with 'git rebase --continue')\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"
+#: pathspec.c:598
+#, c-format
+msgid "pathspec '%s' is beyond a symbolic link"
 msgstr ""
 
-#: rebase-interactive.c:63
+#: pathspec.c:643
 #, c-format
-msgid "Rebase %s onto %s (%d command)"
-msgid_plural "Rebase %s onto %s (%d commands)"
-msgstr[0] ""
-msgstr[1] ""
+msgid "line is badly quoted: %s"
+msgstr ""
 
-#: rebase-interactive.c:72 git-rebase--preserve-merges.sh:218
-msgid ""
-"\n"
-"Do not remove any line. Use 'drop' explicitly to remove a commit.\n"
+#: pkt-line.c:92
+msgid "unable to write flush packet"
 msgstr ""
 
-#: rebase-interactive.c:75 git-rebase--preserve-merges.sh:222
-msgid ""
-"\n"
-"If you remove a line here THAT COMMIT WILL BE LOST.\n"
+#: pkt-line.c:99
+msgid "unable to write delim packet"
 msgstr ""
 
-#: rebase-interactive.c:81 git-rebase--preserve-merges.sh:861
-msgid ""
-"\n"
-"You are editing the todo file of an ongoing interactive rebase.\n"
-"To continue rebase after editing, run:\n"
-"    git rebase --continue\n"
-"\n"
+#: pkt-line.c:106
+msgid "unable to write stateless separator packet"
 msgstr ""
 
-#: rebase-interactive.c:86 git-rebase--preserve-merges.sh:938
-msgid ""
-"\n"
-"However, if you remove everything, the rebase will be aborted.\n"
-"\n"
+#: pkt-line.c:113
+msgid "flush packet write failed"
 msgstr ""
 
-#: rebase-interactive.c:110 rerere.c:485 rerere.c:692 sequencer.c:3607
-#: sequencer.c:3633 sequencer.c:5416 builtin/fsck.c:347 builtin/rebase.c:270
-#, c-format
-msgid "could not write '%s'"
+#: pkt-line.c:153 pkt-line.c:239
+msgid "protocol error: impossibly long line"
 msgstr ""
 
-#: rebase-interactive.c:116 builtin/rebase.c:202 builtin/rebase.c:228
-#: builtin/rebase.c:252
-#, c-format
-msgid "could not write '%s'."
+#: pkt-line.c:169 pkt-line.c:171
+msgid "packet write with format failed"
 msgstr ""
 
-#: rebase-interactive.c:193
+#: pkt-line.c:203
+msgid "packet write failed - data exceeds max packet size"
+msgstr ""
+
+#: pkt-line.c:210 pkt-line.c:217
+msgid "packet write failed"
+msgstr ""
+
+#: pkt-line.c:302
+msgid "read error"
+msgstr ""
+
+#: pkt-line.c:310
+msgid "the remote end hung up unexpectedly"
+msgstr ""
+
+#: pkt-line.c:338
 #, c-format
-msgid ""
-"Warning: some commits may have been dropped accidentally.\n"
-"Dropped commits (newer to older):\n"
+msgid "protocol error: bad line length character: %.4s"
 msgstr ""
 
-#: rebase-interactive.c:200
+#: pkt-line.c:352 pkt-line.c:357
 #, c-format
-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"
-"The possible behaviours are: ignore, warn, error.\n"
-"\n"
+msgid "protocol error: bad line length %d"
 msgstr ""
 
-#: rebase-interactive.c:233 rebase-interactive.c:238 sequencer.c:2394
-#: builtin/rebase.c:188 builtin/rebase.c:213 builtin/rebase.c:239
-#: builtin/rebase.c:264
+#: pkt-line.c:373 sideband.c:165
 #, c-format
-msgid "could not read '%s'."
+msgid "remote error: %s"
 msgstr ""
 
-#: ref-filter.c:42 wt-status.c:1973
-msgid "gone"
+#: preload-index.c:125
+msgid "Refreshing index"
 msgstr ""
 
-#: ref-filter.c:43
+#: preload-index.c:144
 #, c-format
-msgid "ahead %d"
+msgid "unable to create threaded lstat: %s"
 msgstr ""
 
-#: ref-filter.c:44
-#, c-format
-msgid "behind %d"
+#: pretty.c:984
+msgid "unable to parse --pretty format"
 msgstr ""
 
-#: ref-filter.c:45
+#: promisor-remote.c:30
+msgid "promisor-remote: unable to fork off fetch subprocess"
+msgstr ""
+
+#: promisor-remote.c:35 promisor-remote.c:37
+msgid "promisor-remote: could not write to fetch subprocess"
+msgstr ""
+
+#: promisor-remote.c:41
+msgid "promisor-remote: could not close stdin to fetch subprocess"
+msgstr ""
+
+#: promisor-remote.c:53
 #, c-format
-msgid "ahead %d, behind %d"
+msgid "promisor remote name cannot begin with '/': %s"
+msgstr ""
+
+#: prune-packed.c:35
+msgid "Removing duplicate objects"
+msgstr ""
+
+#: range-diff.c:78
+msgid "could not start `log`"
+msgstr ""
+
+#: range-diff.c:80
+msgid "could not read `log` output"
 msgstr ""
 
-#: ref-filter.c:169
+#: range-diff.c:101 sequencer.c:5318
 #, c-format
-msgid "expected format: %%(color:<color>)"
+msgid "could not parse commit '%s'"
 msgstr ""
 
-#: ref-filter.c:171
+#: range-diff.c:115
 #, c-format
-msgid "unrecognized color: %%(color:%s)"
+msgid ""
+"could not parse first line of `log` output: did not start with 'commit ': "
+"'%s'"
 msgstr ""
 
-#: ref-filter.c:193
+#: range-diff.c:140
 #, c-format
-msgid "Integer value expected refname:lstrip=%s"
+msgid "could not parse git header '%.*s'"
+msgstr ""
+
+#: range-diff.c:306
+msgid "failed to generate diff"
 msgstr ""
 
-#: ref-filter.c:197
+#: range-diff.c:558
+msgid "--left-only and --right-only are mutually exclusive"
+msgstr ""
+
+#: range-diff.c:561 range-diff.c:563
 #, c-format
-msgid "Integer value expected refname:rstrip=%s"
+msgid "could not parse log for '%s'"
 msgstr ""
 
-#: ref-filter.c:199
+#: read-cache.c:682
 #, c-format
-msgid "unrecognized %%(%s) argument: %s"
+msgid "will not add file alias '%s' ('%s' already exists in index)"
 msgstr ""
 
-#: ref-filter.c:254
+#: read-cache.c:698
+msgid "cannot create an empty blob in the object database"
+msgstr ""
+
+#: read-cache.c:720
 #, c-format
-msgid "%%(objecttype) does not take arguments"
+msgid "%s: can only add regular files, symbolic links or git-directories"
 msgstr ""
 
-#: ref-filter.c:276
+#: read-cache.c:725
 #, c-format
-msgid "unrecognized %%(objectsize) argument: %s"
+msgid "'%s' does not have a commit checked out"
 msgstr ""
 
-#: ref-filter.c:284
+#: read-cache.c:777
 #, c-format
-msgid "%%(deltabase) does not take arguments"
+msgid "unable to index file '%s'"
 msgstr ""
 
-#: ref-filter.c:296
+#: read-cache.c:796
 #, c-format
-msgid "%%(body) does not take arguments"
+msgid "unable to add '%s' to index"
 msgstr ""
 
-#: ref-filter.c:309
+#: read-cache.c:807
 #, c-format
-msgid "unrecognized %%(subject) argument: %s"
+msgid "unable to stat '%s'"
 msgstr ""
 
-#: ref-filter.c:330
+#: read-cache.c:1318
 #, c-format
-msgid "unknown %%(trailers) argument: %s"
+msgid "'%s' appears as both a file and as a directory"
+msgstr ""
+
+#: read-cache.c:1532
+msgid "Refresh index"
 msgstr ""
 
-#: ref-filter.c:363
+#: read-cache.c:1657
 #, c-format
-msgid "positive value expected contents:lines=%s"
+msgid ""
+"index.version set, but the value is invalid.\n"
+"Using version %i"
 msgstr ""
 
-#: ref-filter.c:365
+#: read-cache.c:1667
 #, c-format
-msgid "unrecognized %%(contents) argument: %s"
+msgid ""
+"GIT_INDEX_VERSION set, but the value is invalid.\n"
+"Using version %i"
 msgstr ""
 
-#: ref-filter.c:380
+#: read-cache.c:1723
 #, c-format
-msgid "positive value expected '%s' in %%(%s)"
+msgid "bad signature 0x%08x"
 msgstr ""
 
-#: ref-filter.c:384
+#: read-cache.c:1726
 #, c-format
-msgid "unrecognized argument '%s' in %%(%s)"
+msgid "bad index version %d"
+msgstr ""
+
+#: read-cache.c:1735
+msgid "bad index file sha1 signature"
 msgstr ""
 
-#: ref-filter.c:398
+#: read-cache.c:1765
 #, c-format
-msgid "unrecognized email option: %s"
+msgid "index uses %.4s extension, which we do not understand"
 msgstr ""
 
-#: ref-filter.c:428
+#: read-cache.c:1767
 #, c-format
-msgid "expected format: %%(align:<width>,<position>)"
+msgid "ignoring %.4s extension"
 msgstr ""
 
-#: ref-filter.c:440
+#: read-cache.c:1804
 #, c-format
-msgid "unrecognized position:%s"
+msgid "unknown index entry format 0x%08x"
 msgstr ""
 
-#: ref-filter.c:447
+#: read-cache.c:1820
 #, c-format
-msgid "unrecognized width:%s"
+msgid "malformed name field in the index, near path '%s'"
+msgstr ""
+
+#: read-cache.c:1877
+msgid "unordered stage entries in index"
 msgstr ""
 
-#: ref-filter.c:456
+#: read-cache.c:1880
 #, c-format
-msgid "unrecognized %%(align) argument: %s"
+msgid "multiple stage entries for merged file '%s'"
 msgstr ""
 
-#: ref-filter.c:464
+#: read-cache.c:1883
 #, c-format
-msgid "positive width expected with the %%(align) atom"
+msgid "unordered stage entries for '%s'"
+msgstr ""
+
+#: read-cache.c:1989 read-cache.c:2280 rerere.c:549 rerere.c:583 rerere.c:1095
+#: submodule.c:1634 builtin/add.c:546 builtin/check-ignore.c:181
+#: builtin/checkout.c:504 builtin/checkout.c:690 builtin/clean.c:991
+#: builtin/commit.c:364 builtin/diff-tree.c:122 builtin/grep.c:505
+#: builtin/mv.c:146 builtin/reset.c:247 builtin/rm.c:290
+#: builtin/submodule--helper.c:332
+msgid "index file corrupt"
 msgstr ""
 
-#: ref-filter.c:482
+#: read-cache.c:2133
 #, c-format
-msgid "unrecognized %%(if) argument: %s"
+msgid "unable to create load_cache_entries thread: %s"
 msgstr ""
 
-#: ref-filter.c:584
+#: read-cache.c:2146
 #, c-format
-msgid "malformed field name: %.*s"
+msgid "unable to join load_cache_entries thread: %s"
 msgstr ""
 
-#: ref-filter.c:611
+#: read-cache.c:2179
 #, c-format
-msgid "unknown field name: %.*s"
+msgid "%s: index file open failed"
 msgstr ""
 
-#: ref-filter.c:615
+#: read-cache.c:2183
 #, c-format
-msgid ""
-"not a git repository, but the field '%.*s' requires access to object data"
+msgid "%s: cannot stat the open index"
 msgstr ""
 
-#: ref-filter.c:739
+#: read-cache.c:2187
 #, c-format
-msgid "format: %%(if) atom used without a %%(then) atom"
+msgid "%s: index file smaller than expected"
 msgstr ""
 
-#: ref-filter.c:802
+#: read-cache.c:2191
 #, c-format
-msgid "format: %%(then) atom used without an %%(if) atom"
+msgid "%s: unable to map index file"
 msgstr ""
 
-#: ref-filter.c:804
+#: read-cache.c:2233
 #, c-format
-msgid "format: %%(then) atom used more than once"
+msgid "unable to create load_index_extensions thread: %s"
 msgstr ""
 
-#: ref-filter.c:806
+#: read-cache.c:2260
 #, c-format
-msgid "format: %%(then) atom used after %%(else)"
+msgid "unable to join load_index_extensions thread: %s"
 msgstr ""
 
-#: ref-filter.c:834
+#: read-cache.c:2292
 #, c-format
-msgid "format: %%(else) atom used without an %%(if) atom"
+msgid "could not freshen shared index '%s'"
 msgstr ""
 
-#: ref-filter.c:836
+#: read-cache.c:2339
 #, c-format
-msgid "format: %%(else) atom used without a %%(then) atom"
+msgid "broken index, expect %s in %s, got %s"
 msgstr ""
 
-#: ref-filter.c:838
+#: read-cache.c:3035 strbuf.c:1171 wrapper.c:633 builtin/merge.c:1141
 #, c-format
-msgid "format: %%(else) atom used more than once"
+msgid "could not close '%s'"
 msgstr ""
 
-#: ref-filter.c:853
+#: read-cache.c:3138 sequencer.c:2487 sequencer.c:4239
 #, c-format
-msgid "format: %%(end) atom used without corresponding atom"
+msgid "could not stat '%s'"
 msgstr ""
 
-#: ref-filter.c:910
+#: read-cache.c:3151
 #, c-format
-msgid "malformed format string %s"
+msgid "unable to open git dir: %s"
 msgstr ""
 
-#: ref-filter.c:1549
+#: read-cache.c:3163
 #, c-format
-msgid "no branch, rebasing %s"
+msgid "unable to unlink: %s"
 msgstr ""
 
-#: ref-filter.c:1552
+#: read-cache.c:3188
 #, c-format
-msgid "no branch, rebasing detached HEAD %s"
+msgid "cannot fix permission bits on '%s'"
 msgstr ""
 
-#: ref-filter.c:1555
+#: read-cache.c:3337
 #, c-format
-msgid "no branch, bisect started on %s"
+msgid "%s: cannot drop to stage #0"
 msgstr ""
 
-#: ref-filter.c:1565
-msgid "no branch"
+#: rebase-interactive.c:11
+msgid ""
+"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 ""
 
-#: ref-filter.c:1599 ref-filter.c:1808
+#: rebase-interactive.c:33
 #, c-format
-msgid "missing object %s for %s"
+msgid ""
+"unrecognized setting %s for option rebase.missingCommitsCheck. Ignoring."
 msgstr ""
 
-#: ref-filter.c:1609
-#, c-format
-msgid "parse_object_buffer failed on %s for %s"
+#: rebase-interactive.c:42
+msgid ""
+"\n"
+"Commands:\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"
+"b, break = stop here (continue rebase later with 'git rebase --continue')\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 ""
 
-#: ref-filter.c:2062
+#: rebase-interactive.c:63
 #, c-format
-msgid "malformed object at '%s'"
+msgid "Rebase %s onto %s (%d command)"
+msgid_plural "Rebase %s onto %s (%d commands)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: rebase-interactive.c:72 git-rebase--preserve-merges.sh:218
+msgid ""
+"\n"
+"Do not remove any line. Use 'drop' explicitly to remove a commit.\n"
 msgstr ""
 
-#: ref-filter.c:2151
-#, c-format
-msgid "ignoring ref with broken name %s"
+#: rebase-interactive.c:75 git-rebase--preserve-merges.sh:222
+msgid ""
+"\n"
+"If you remove a line here THAT COMMIT WILL BE LOST.\n"
 msgstr ""
 
-#: ref-filter.c:2156 refs.c:676
-#, c-format
-msgid "ignoring broken ref %s"
+#: rebase-interactive.c:81 git-rebase--preserve-merges.sh:861
+msgid ""
+"\n"
+"You are editing the todo file of an ongoing interactive rebase.\n"
+"To continue rebase after editing, run:\n"
+"    git rebase --continue\n"
+"\n"
 msgstr ""
 
-#: ref-filter.c:2472
-#, c-format
-msgid "format: %%(end) atom missing"
+#: rebase-interactive.c:86 git-rebase--preserve-merges.sh:938
+msgid ""
+"\n"
+"However, if you remove everything, the rebase will be aborted.\n"
+"\n"
 msgstr ""
 
-#: ref-filter.c:2571
+#: rebase-interactive.c:110 rerere.c:469 rerere.c:676 sequencer.c:3615
+#: sequencer.c:3641 sequencer.c:5424 builtin/fsck.c:329 builtin/rebase.c:272
 #, c-format
-msgid "malformed object name %s"
+msgid "could not write '%s'"
 msgstr ""
 
-#: ref-filter.c:2576
+#: rebase-interactive.c:116 builtin/rebase.c:204 builtin/rebase.c:230
+#: builtin/rebase.c:254
 #, c-format
-msgid "option `%s' must point to a commit"
+msgid "could not write '%s'."
 msgstr ""
 
-#: refs.c:264
+#: rebase-interactive.c:193
 #, c-format
-msgid "%s does not point to a valid object!"
+msgid ""
+"Warning: some commits may have been dropped accidentally.\n"
+"Dropped commits (newer to older):\n"
 msgstr ""
 
-#: refs.c:566
+#: rebase-interactive.c:200
 #, c-format
 msgid ""
-"Using '%s' as the name for the initial branch. This default branch name\n"
-"is subject to change. To configure the initial branch name to use in all\n"
-"of your new repositories, which will suppress this warning, call:\n"
-"\n"
-"\tgit config --global init.defaultBranch <name>\n"
+"To avoid this message, use \"drop\" to explicitly remove a commit.\n"
 "\n"
-"Names commonly chosen instead of 'master' are 'main', 'trunk' and\n"
-"'development'. The just-created branch can be renamed via this command:\n"
+"Use 'git config rebase.missingCommitsCheck' to change the level of "
+"warnings.\n"
+"The possible behaviours are: ignore, warn, error.\n"
 "\n"
-"\tgit branch -m <name>\n"
 msgstr ""
 
-#: refs.c:588
+#: rebase-interactive.c:233 rebase-interactive.c:238 sequencer.c:2402
+#: builtin/rebase.c:190 builtin/rebase.c:215 builtin/rebase.c:241
+#: builtin/rebase.c:266
 #, c-format
-msgid "could not retrieve `%s`"
+msgid "could not read '%s'."
 msgstr ""
 
-#: refs.c:598
-#, c-format
-msgid "invalid branch name: %s = %s"
+#: ref-filter.c:42 wt-status.c:1975
+msgid "gone"
 msgstr ""
 
-#: refs.c:674
+#: ref-filter.c:43
 #, c-format
-msgid "ignoring dangling symref %s"
+msgid "ahead %d"
 msgstr ""
 
-#: refs.c:911
+#: ref-filter.c:44
 #, c-format
-msgid "log for ref %s has gap after %s"
+msgid "behind %d"
 msgstr ""
 
-#: refs.c:917
+#: ref-filter.c:45
 #, c-format
-msgid "log for ref %s unexpectedly ended on %s"
+msgid "ahead %d, behind %d"
 msgstr ""
 
-#: refs.c:976
+#: ref-filter.c:175
 #, c-format
-msgid "log for %s is empty"
+msgid "expected format: %%(color:<color>)"
 msgstr ""
 
-#: refs.c:1068
+#: ref-filter.c:177
 #, c-format
-msgid "refusing to update ref with bad name '%s'"
+msgid "unrecognized color: %%(color:%s)"
 msgstr ""
 
-#: refs.c:1139
+#: ref-filter.c:199
 #, c-format
-msgid "update_ref failed for ref '%s': %s"
+msgid "Integer value expected refname:lstrip=%s"
 msgstr ""
 
-#: refs.c:1963
+#: ref-filter.c:203
 #, c-format
-msgid "multiple updates for ref '%s' not allowed"
-msgstr ""
-
-#: refs.c:2043
-msgid "ref updates forbidden inside quarantine environment"
-msgstr ""
-
-#: refs.c:2054
-msgid "ref updates aborted by hook"
+msgid "Integer value expected refname:rstrip=%s"
 msgstr ""
 
-#: refs.c:2154 refs.c:2184
+#: ref-filter.c:205
 #, c-format
-msgid "'%s' exists; cannot create '%s'"
+msgid "unrecognized %%(%s) argument: %s"
 msgstr ""
 
-#: refs.c:2160 refs.c:2195
+#: ref-filter.c:260
 #, c-format
-msgid "cannot process '%s' and '%s' at the same time"
+msgid "%%(objecttype) does not take arguments"
 msgstr ""
 
-#: refs/files-backend.c:1228
+#: ref-filter.c:282
 #, c-format
-msgid "could not remove reference %s"
+msgid "unrecognized %%(objectsize) argument: %s"
 msgstr ""
 
-#: refs/files-backend.c:1242 refs/packed-backend.c:1542
-#: refs/packed-backend.c:1552
+#: ref-filter.c:290
 #, c-format
-msgid "could not delete reference %s: %s"
+msgid "%%(deltabase) does not take arguments"
 msgstr ""
 
-#: refs/files-backend.c:1245 refs/packed-backend.c:1555
+#: ref-filter.c:302
 #, c-format
-msgid "could not delete references: %s"
+msgid "%%(body) does not take arguments"
 msgstr ""
 
-#: refspec.c:170
+#: ref-filter.c:315
 #, c-format
-msgid "invalid refspec '%s'"
+msgid "unrecognized %%(subject) argument: %s"
 msgstr ""
 
-#: remote.c:351
+#: ref-filter.c:334
 #, c-format
-msgid "config remote shorthand cannot begin with '/': %s"
-msgstr ""
-
-#: remote.c:399
-msgid "more than one receivepack given, using the first"
+msgid "expected %%(trailers:key=<value>)"
 msgstr ""
 
-#: remote.c:407
-msgid "more than one uploadpack given, using the first"
+#: ref-filter.c:336
+#, c-format
+msgid "unknown %%(trailers) argument: %s"
 msgstr ""
 
-#: remote.c:590
+#: ref-filter.c:367
 #, c-format
-msgid "Cannot fetch both %s and %s to %s"
+msgid "positive value expected contents:lines=%s"
 msgstr ""
 
-#: remote.c:594
+#: ref-filter.c:369
 #, c-format
-msgid "%s usually tracks %s, not %s"
+msgid "unrecognized %%(contents) argument: %s"
 msgstr ""
 
-#: remote.c:598
+#: ref-filter.c:384
 #, c-format
-msgid "%s tracks both %s and %s"
+msgid "positive value expected '%s' in %%(%s)"
 msgstr ""
 
-#: remote.c:666
+#: ref-filter.c:388
 #, c-format
-msgid "key '%s' of pattern had no '*'"
+msgid "unrecognized argument '%s' in %%(%s)"
 msgstr ""
 
-#: remote.c:676
+#: ref-filter.c:402
 #, c-format
-msgid "value '%s' of pattern has no '*'"
+msgid "unrecognized email option: %s"
 msgstr ""
 
-#: remote.c:1073
+#: ref-filter.c:432
 #, c-format
-msgid "src refspec %s does not match any"
+msgid "expected format: %%(align:<width>,<position>)"
 msgstr ""
 
-#: remote.c:1078
+#: ref-filter.c:444
 #, c-format
-msgid "src refspec %s matches more than one"
+msgid "unrecognized position:%s"
 msgstr ""
 
-#. TRANSLATORS: "matches '%s'%" is the <dst> part of "git push
-#. <remote> <src>:<dst>" push, and "being pushed ('%s')" is
-#. the <src>.
-#.
-#: remote.c:1093
+#: ref-filter.c:451
 #, c-format
-msgid ""
-"The destination you provided is not a full refname (i.e.,\n"
-"starting with \"refs/\"). We tried to guess what you meant by:\n"
-"\n"
-"- Looking for a ref that matches '%s' on the remote side.\n"
-"- Checking if the <src> being pushed ('%s')\n"
-"  is a ref in \"refs/{heads,tags}/\". If so we add a corresponding\n"
-"  refs/{heads,tags}/ prefix on the remote side.\n"
-"\n"
-"Neither worked, so we gave up. You must fully qualify the ref."
+msgid "unrecognized width:%s"
 msgstr ""
 
-#: remote.c:1113
+#: ref-filter.c:460
 #, c-format
-msgid ""
-"The <src> part of the refspec is a commit object.\n"
-"Did you mean to create a new branch by pushing to\n"
-"'%s:refs/heads/%s'?"
+msgid "unrecognized %%(align) argument: %s"
 msgstr ""
 
-#: remote.c:1118
+#: ref-filter.c:468
 #, c-format
-msgid ""
-"The <src> part of the refspec is a tag object.\n"
-"Did you mean to create a new tag by pushing to\n"
-"'%s:refs/tags/%s'?"
+msgid "positive width expected with the %%(align) atom"
 msgstr ""
 
-#: remote.c:1123
+#: ref-filter.c:486
 #, c-format
-msgid ""
-"The <src> part of the refspec is a tree object.\n"
-"Did you mean to tag a new tree by pushing to\n"
-"'%s:refs/tags/%s'?"
+msgid "unrecognized %%(if) argument: %s"
 msgstr ""
 
-#: remote.c:1128
+#: ref-filter.c:588
 #, c-format
-msgid ""
-"The <src> part of the refspec is a blob object.\n"
-"Did you mean to tag a new blob by pushing to\n"
-"'%s:refs/tags/%s'?"
+msgid "malformed field name: %.*s"
 msgstr ""
 
-#: remote.c:1164
+#: ref-filter.c:615
 #, c-format
-msgid "%s cannot be resolved to branch"
+msgid "unknown field name: %.*s"
 msgstr ""
 
-#: remote.c:1175
+#: ref-filter.c:619
 #, c-format
-msgid "unable to delete '%s': remote ref does not exist"
+msgid ""
+"not a git repository, but the field '%.*s' requires access to object data"
 msgstr ""
 
-#: remote.c:1187
+#: ref-filter.c:743
 #, c-format
-msgid "dst refspec %s matches more than one"
+msgid "format: %%(if) atom used without a %%(then) atom"
 msgstr ""
 
-#: remote.c:1194
+#: ref-filter.c:806
 #, c-format
-msgid "dst ref %s receives from more than one src"
+msgid "format: %%(then) atom used without an %%(if) atom"
 msgstr ""
 
-#: remote.c:1714 remote.c:1815
-msgid "HEAD does not point to a branch"
+#: ref-filter.c:808
+#, c-format
+msgid "format: %%(then) atom used more than once"
 msgstr ""
 
-#: remote.c:1723
+#: ref-filter.c:810
 #, c-format
-msgid "no such branch: '%s'"
+msgid "format: %%(then) atom used after %%(else)"
 msgstr ""
 
-#: remote.c:1726
+#: ref-filter.c:838
 #, c-format
-msgid "no upstream configured for branch '%s'"
+msgid "format: %%(else) atom used without an %%(if) atom"
 msgstr ""
 
-#: remote.c:1732
+#: ref-filter.c:840
 #, c-format
-msgid "upstream branch '%s' not stored as a remote-tracking branch"
+msgid "format: %%(else) atom used without a %%(then) atom"
 msgstr ""
 
-#: remote.c:1747
+#: ref-filter.c:842
 #, c-format
-msgid "push destination '%s' on remote '%s' has no local tracking branch"
+msgid "format: %%(else) atom used more than once"
 msgstr ""
 
-#: remote.c:1759
+#: ref-filter.c:857
 #, c-format
-msgid "branch '%s' has no remote for pushing"
+msgid "format: %%(end) atom used without corresponding atom"
 msgstr ""
 
-#: remote.c:1769
+#: ref-filter.c:914
 #, c-format
-msgid "push refspecs for '%s' do not include '%s'"
+msgid "malformed format string %s"
 msgstr ""
 
-#: remote.c:1782
-msgid "push has no destination (push.default is 'nothing')"
+#: ref-filter.c:1555
+#, c-format
+msgid "(no branch, rebasing %s)"
 msgstr ""
 
-#: remote.c:1804
-msgid "cannot resolve 'simple' push to a single destination"
+#: ref-filter.c:1558
+#, c-format
+msgid "(no branch, rebasing detached HEAD %s)"
 msgstr ""
 
-#: remote.c:1933
+#: ref-filter.c:1561
 #, c-format
-msgid "couldn't find remote ref %s"
+msgid "(no branch, bisect started on %s)"
 msgstr ""
 
-#: remote.c:1946
+#: ref-filter.c:1565
 #, c-format
-msgid "* Ignoring funny ref '%s' locally"
+msgid "(HEAD detached at %s)"
 msgstr ""
 
-#: remote.c:2109
+#: ref-filter.c:1568
 #, c-format
-msgid "Your branch is based on '%s', but the upstream is gone.\n"
+msgid "(HEAD detached from %s)"
 msgstr ""
 
-#: remote.c:2113
-msgid "  (use \"git branch --unset-upstream\" to fixup)\n"
+#: ref-filter.c:1571
+msgid "(no branch)"
 msgstr ""
 
-#: remote.c:2116
+#: ref-filter.c:1603 ref-filter.c:1812
 #, c-format
-msgid "Your branch is up to date with '%s'.\n"
+msgid "missing object %s for %s"
 msgstr ""
 
-#: remote.c:2120
+#: ref-filter.c:1613
 #, c-format
-msgid "Your branch and '%s' refer to different commits.\n"
+msgid "parse_object_buffer failed on %s for %s"
 msgstr ""
 
-#: remote.c:2123
+#: ref-filter.c:1996
 #, c-format
-msgid "  (use \"%s\" for details)\n"
+msgid "malformed object at '%s'"
 msgstr ""
 
-#: remote.c:2127
+#: ref-filter.c:2085
 #, 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:2133
-msgid "  (use \"git push\" to publish your local commits)\n"
+msgid "ignoring ref with broken name %s"
 msgstr ""
 
-#: remote.c:2136
+#: ref-filter.c:2090 refs.c:676
 #, 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] ""
-msgstr[1] ""
-
-#: remote.c:2144
-msgid "  (use \"git pull\" to update your local branch)\n"
+msgid "ignoring broken ref %s"
 msgstr ""
 
-#: remote.c:2147
+#: ref-filter.c:2430
 #, c-format
-msgid ""
-"Your branch and '%s' have diverged,\n"
-"and have %d and %d different commit each, respectively.\n"
-msgid_plural ""
-"Your branch and '%s' have diverged,\n"
-"and have %d and %d different commits each, respectively.\n"
-msgstr[0] ""
-msgstr[1] ""
-
-#: remote.c:2157
-msgid "  (use \"git pull\" to merge the remote branch into yours)\n"
+msgid "format: %%(end) atom missing"
 msgstr ""
 
-#: remote.c:2349
+#: ref-filter.c:2529
 #, c-format
-msgid "cannot parse expected object name '%s'"
+msgid "malformed object name %s"
 msgstr ""
 
-#: replace-object.c:21
+#: ref-filter.c:2534
 #, c-format
-msgid "bad replace ref name: %s"
+msgid "option `%s' must point to a commit"
 msgstr ""
 
-#: replace-object.c:30
+#: refs.c:264
 #, c-format
-msgid "duplicate replace ref: %s"
+msgid "%s does not point to a valid object!"
 msgstr ""
 
-#: replace-object.c:82
+#: refs.c:566
 #, c-format
-msgid "replace depth too high for object %s"
+msgid ""
+"Using '%s' as the name for the initial branch. This default branch name\n"
+"is subject to change. To configure the initial branch name to use in all\n"
+"of your new repositories, which will suppress this warning, call:\n"
+"\n"
+"\tgit config --global init.defaultBranch <name>\n"
+"\n"
+"Names commonly chosen instead of 'master' are 'main', 'trunk' and\n"
+"'development'. The just-created branch can be renamed via this command:\n"
+"\n"
+"\tgit branch -m <name>\n"
 msgstr ""
 
-#: rerere.c:217 rerere.c:226 rerere.c:229
-msgid "corrupt MERGE_RR"
+#: refs.c:588
+#, c-format
+msgid "could not retrieve `%s`"
 msgstr ""
 
-#: rerere.c:264 rerere.c:269
-msgid "unable to write rerere record"
+#: refs.c:598
+#, c-format
+msgid "invalid branch name: %s = %s"
 msgstr ""
 
-#: rerere.c:495
+#: refs.c:674
 #, c-format
-msgid "there were errors while writing '%s' (%s)"
+msgid "ignoring dangling symref %s"
 msgstr ""
 
-#: rerere.c:498
+#: refs.c:922
 #, c-format
-msgid "failed to flush '%s'"
+msgid "log for ref %s has gap after %s"
 msgstr ""
 
-#: rerere.c:503 rerere.c:1039
+#: refs.c:929
 #, c-format
-msgid "could not parse conflict hunks in '%s'"
+msgid "log for ref %s unexpectedly ended on %s"
 msgstr ""
 
-#: rerere.c:684
+#: refs.c:994
 #, c-format
-msgid "failed utime() on '%s'"
+msgid "log for %s is empty"
 msgstr ""
 
-#: rerere.c:694
+#: refs.c:1086
 #, c-format
-msgid "writing '%s' failed"
+msgid "refusing to update ref with bad name '%s'"
 msgstr ""
 
-#: rerere.c:714
+#: refs.c:1157
 #, c-format
-msgid "Staged '%s' using previous resolution."
+msgid "update_ref failed for ref '%s': %s"
 msgstr ""
 
-#: rerere.c:753
+#: refs.c:2051
 #, c-format
-msgid "Recorded resolution for '%s'."
+msgid "multiple updates for ref '%s' not allowed"
 msgstr ""
 
-#: rerere.c:788
-#, c-format
-msgid "Resolved '%s' using previous resolution."
+#: refs.c:2131
+msgid "ref updates forbidden inside quarantine environment"
 msgstr ""
 
-#: rerere.c:803
-#, c-format
-msgid "cannot unlink stray '%s'"
+#: refs.c:2142
+msgid "ref updates aborted by hook"
 msgstr ""
 
-#: rerere.c:807
+#: refs.c:2242 refs.c:2272
 #, c-format
-msgid "Recorded preimage for '%s'"
+msgid "'%s' exists; cannot create '%s'"
 msgstr ""
 
-#: rerere.c:881 submodule.c:2082 builtin/log.c:1992
-#: builtin/submodule--helper.c:1878 builtin/submodule--helper.c:1890
+#: refs.c:2248 refs.c:2283
 #, c-format
-msgid "could not create directory '%s'"
+msgid "cannot process '%s' and '%s' at the same time"
 msgstr ""
 
-#: rerere.c:1057
+#: refs/files-backend.c:1228
 #, c-format
-msgid "failed to update conflicted state in '%s'"
+msgid "could not remove reference %s"
 msgstr ""
 
-#: rerere.c:1068 rerere.c:1075
+#: refs/files-backend.c:1242 refs/packed-backend.c:1542
+#: refs/packed-backend.c:1552
 #, c-format
-msgid "no remembered resolution for '%s'"
+msgid "could not delete reference %s: %s"
 msgstr ""
 
-#: rerere.c:1077
+#: refs/files-backend.c:1245 refs/packed-backend.c:1555
 #, c-format
-msgid "cannot unlink '%s'"
+msgid "could not delete references: %s"
 msgstr ""
 
-#: rerere.c:1087
+#: refspec.c:170
 #, c-format
-msgid "Updated preimage for '%s'"
+msgid "invalid refspec '%s'"
 msgstr ""
 
-#: rerere.c:1096
+#: remote.c:351
 #, c-format
-msgid "Forgot resolution for '%s'\n"
+msgid "config remote shorthand cannot begin with '/': %s"
 msgstr ""
 
-#: rerere.c:1199
-msgid "unable to open rr-cache directory"
+#: remote.c:399
+msgid "more than one receivepack given, using the first"
 msgstr ""
 
-#: reset.c:42
-msgid "could not determine HEAD revision"
+#: remote.c:407
+msgid "more than one uploadpack given, using the first"
 msgstr ""
 
-#: reset.c:70 reset.c:76 sequencer.c:3460
+#: remote.c:590
 #, c-format
-msgid "failed to find tree of %s"
-msgstr ""
-
-#: revision.c:2336
-msgid "--unpacked=<packfile> no longer supported"
+msgid "Cannot fetch both %s and %s to %s"
 msgstr ""
 
-#: revision.c:2356
+#: remote.c:594
 #, c-format
-msgid "unknown value for --diff-merges: %s"
+msgid "%s usually tracks %s, not %s"
 msgstr ""
 
-#: revision.c:2694
-msgid "your current branch appears to be broken"
+#: remote.c:598
+#, c-format
+msgid "%s tracks both %s and %s"
 msgstr ""
 
-#: revision.c:2697
+#: remote.c:666
 #, c-format
-msgid "your current branch '%s' does not have any commits yet"
+msgid "key '%s' of pattern had no '*'"
 msgstr ""
 
-#: revision.c:2907
-msgid "-L does not yet support diff formats besides -p and -s"
+#: remote.c:676
+#, c-format
+msgid "value '%s' of pattern has no '*'"
 msgstr ""
 
-#: run-command.c:764
-msgid "open /dev/null failed"
+#: remote.c:1083
+#, c-format
+msgid "src refspec %s does not match any"
 msgstr ""
 
-#: run-command.c:1271
+#: remote.c:1088
 #, c-format
-msgid "cannot create async thread: %s"
+msgid "src refspec %s matches more than one"
 msgstr ""
 
-#: run-command.c:1335
+#. TRANSLATORS: "matches '%s'%" is the <dst> part of "git push
+#. <remote> <src>:<dst>" push, and "being pushed ('%s')" is
+#. the <src>.
+#.
+#: remote.c:1103
 #, c-format
 msgid ""
-"The '%s' hook was ignored because it's not set as executable.\n"
-"You can disable this warning with `git config advice.ignoredHook false`."
+"The destination you provided is not a full refname (i.e.,\n"
+"starting with \"refs/\"). We tried to guess what you meant by:\n"
+"\n"
+"- Looking for a ref that matches '%s' on the remote side.\n"
+"- Checking if the <src> being pushed ('%s')\n"
+"  is a ref in \"refs/{heads,tags}/\". If so we add a corresponding\n"
+"  refs/{heads,tags}/ prefix on the remote side.\n"
+"\n"
+"Neither worked, so we gave up. You must fully qualify the ref."
 msgstr ""
 
-#: send-pack.c:146
-msgid "unexpected flush packet while reading remote unpack status"
+#: remote.c:1123
+#, c-format
+msgid ""
+"The <src> part of the refspec is a commit object.\n"
+"Did you mean to create a new branch by pushing to\n"
+"'%s:refs/heads/%s'?"
 msgstr ""
 
-#: send-pack.c:148
+#: remote.c:1128
 #, c-format
-msgid "unable to parse remote unpack status: %s"
+msgid ""
+"The <src> part of the refspec is a tag object.\n"
+"Did you mean to create a new tag by pushing to\n"
+"'%s:refs/tags/%s'?"
 msgstr ""
 
-#: send-pack.c:150
+#: remote.c:1133
 #, c-format
-msgid "remote unpack failed: %s"
+msgid ""
+"The <src> part of the refspec is a tree object.\n"
+"Did you mean to tag a new tree by pushing to\n"
+"'%s:refs/tags/%s'?"
 msgstr ""
 
-#: send-pack.c:374
-msgid "failed to sign the push certificate"
+#: remote.c:1138
+#, c-format
+msgid ""
+"The <src> part of the refspec is a blob object.\n"
+"Did you mean to tag a new blob by pushing to\n"
+"'%s:refs/tags/%s'?"
 msgstr ""
 
-#: send-pack.c:467
-msgid "the receiving end does not support this repository's hash algorithm"
+#: remote.c:1174
+#, c-format
+msgid "%s cannot be resolved to branch"
 msgstr ""
 
-#: send-pack.c:476
-msgid "the receiving end does not support --signed push"
+#: remote.c:1185
+#, c-format
+msgid "unable to delete '%s': remote ref does not exist"
 msgstr ""
 
-#: send-pack.c:478
-msgid ""
-"not sending a push certificate since the receiving end does not support --"
-"signed push"
+#: remote.c:1197
+#, c-format
+msgid "dst refspec %s matches more than one"
 msgstr ""
 
-#: send-pack.c:490
-msgid "the receiving end does not support --atomic push"
+#: remote.c:1204
+#, c-format
+msgid "dst ref %s receives from more than one src"
 msgstr ""
 
-#: send-pack.c:495
-msgid "the receiving end does not support push options"
+#: remote.c:1724 remote.c:1825
+msgid "HEAD does not point to a branch"
 msgstr ""
 
-#: sequencer.c:195
+#: remote.c:1733
 #, c-format
-msgid "invalid commit message cleanup mode '%s'"
+msgid "no such branch: '%s'"
 msgstr ""
 
-#: sequencer.c:323
+#: remote.c:1736
 #, c-format
-msgid "could not delete '%s'"
+msgid "no upstream configured for branch '%s'"
 msgstr ""
 
-#: sequencer.c:343 builtin/rebase.c:755 builtin/rebase.c:1596 builtin/rm.c:385
+#: remote.c:1742
 #, c-format
-msgid "could not remove '%s'"
+msgid "upstream branch '%s' not stored as a remote-tracking branch"
 msgstr ""
 
-#: sequencer.c:353
-msgid "revert"
+#: remote.c:1757
+#, c-format
+msgid "push destination '%s' on remote '%s' has no local tracking branch"
 msgstr ""
 
-#: sequencer.c:355
-msgid "cherry-pick"
+#: remote.c:1769
+#, c-format
+msgid "branch '%s' has no remote for pushing"
 msgstr ""
 
-#: sequencer.c:357
-msgid "rebase"
+#: remote.c:1779
+#, c-format
+msgid "push refspecs for '%s' do not include '%s'"
 msgstr ""
 
-#: sequencer.c:359
-#, c-format
-msgid "unknown action: %d"
+#: remote.c:1792
+msgid "push has no destination (push.default is 'nothing')"
 msgstr ""
 
-#: sequencer.c:418
-msgid ""
-"after resolving the conflicts, mark the corrected paths\n"
-"with 'git add <paths>' or 'git rm <paths>'"
+#: remote.c:1814
+msgid "cannot resolve 'simple' push to a single destination"
 msgstr ""
 
-#: sequencer.c:421
-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'"
+#: remote.c:1943
+#, c-format
+msgid "couldn't find remote ref %s"
 msgstr ""
 
-#: sequencer.c:434 sequencer.c:3062
+#: remote.c:1956
 #, c-format
-msgid "could not lock '%s'"
+msgid "* Ignoring funny ref '%s' locally"
 msgstr ""
 
-#: sequencer.c:436 sequencer.c:2861 sequencer.c:3066 sequencer.c:3080
-#: sequencer.c:3337 sequencer.c:5326 strbuf.c:1168 wrapper.c:631
+#: remote.c:2119
 #, c-format
-msgid "could not write to '%s'"
+msgid "Your branch is based on '%s', but the upstream is gone.\n"
 msgstr ""
 
-#: sequencer.c:441
-#, c-format
-msgid "could not write eol to '%s'"
+#: remote.c:2123
+msgid "  (use \"git branch --unset-upstream\" to fixup)\n"
 msgstr ""
 
-#: sequencer.c:446 sequencer.c:2866 sequencer.c:3068 sequencer.c:3082
-#: sequencer.c:3345
+#: remote.c:2126
 #, c-format
-msgid "failed to finalize '%s'"
+msgid "Your branch is up to date with '%s'.\n"
 msgstr ""
 
-#: sequencer.c:485
+#: remote.c:2130
 #, c-format
-msgid "your local changes would be overwritten by %s."
+msgid "Your branch and '%s' refer to different commits.\n"
 msgstr ""
 
-#: sequencer.c:489
-msgid "commit your changes or stash them to proceed."
+#: remote.c:2133
+#, c-format
+msgid "  (use \"%s\" for details)\n"
 msgstr ""
 
-#: sequencer.c:521
+#: remote.c:2137
 #, c-format
-msgid "%s: fast-forward"
+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:2143
+msgid "  (use \"git push\" to publish your local commits)\n"
 msgstr ""
 
-#: sequencer.c:560 builtin/tag.c:566
+#: remote.c:2146
 #, c-format
-msgid "Invalid cleanup mode %s"
+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] ""
+msgstr[1] ""
+
+#: remote.c:2154
+msgid "  (use \"git pull\" to update your local branch)\n"
 msgstr ""
 
-#. TRANSLATORS: %s will be "revert", "cherry-pick" or
-#. "rebase".
-#.
-#: sequencer.c:670
+#: remote.c:2157
 #, c-format
-msgid "%s: Unable to write new index file"
-msgstr ""
+msgid ""
+"Your branch and '%s' have diverged,\n"
+"and have %d and %d different commit each, respectively.\n"
+msgid_plural ""
+"Your branch and '%s' have diverged,\n"
+"and have %d and %d different commits each, respectively.\n"
+msgstr[0] ""
+msgstr[1] ""
 
-#: sequencer.c:687
-msgid "unable to update cache tree"
+#: remote.c:2167
+msgid "  (use \"git pull\" to merge the remote branch into yours)\n"
 msgstr ""
 
-#: sequencer.c:701
-msgid "could not resolve HEAD commit"
+#: remote.c:2359
+#, c-format
+msgid "cannot parse expected object name '%s'"
 msgstr ""
 
-#: sequencer.c:781
+#: replace-object.c:21
 #, c-format
-msgid "no key present in '%.*s'"
+msgid "bad replace ref name: %s"
 msgstr ""
 
-#: sequencer.c:792
+#: replace-object.c:30
 #, c-format
-msgid "unable to dequote value of '%s'"
+msgid "duplicate replace ref: %s"
 msgstr ""
 
-#: sequencer.c:829 wrapper.c:201 wrapper.c:371 builtin/am.c:710
-#: builtin/am.c:802 builtin/merge.c:1135 builtin/rebase.c:908
+#: replace-object.c:82
 #, c-format
-msgid "could not open '%s' for reading"
+msgid "replace depth too high for object %s"
 msgstr ""
 
-#: sequencer.c:839
-msgid "'GIT_AUTHOR_NAME' already given"
+#: rerere.c:201 rerere.c:210 rerere.c:213
+msgid "corrupt MERGE_RR"
 msgstr ""
 
-#: sequencer.c:844
-msgid "'GIT_AUTHOR_EMAIL' already given"
+#: rerere.c:248 rerere.c:253
+msgid "unable to write rerere record"
 msgstr ""
 
-#: sequencer.c:849
-msgid "'GIT_AUTHOR_DATE' already given"
+#: rerere.c:479
+#, c-format
+msgid "there were errors while writing '%s' (%s)"
 msgstr ""
 
-#: sequencer.c:853
+#: rerere.c:482
 #, c-format
-msgid "unknown variable '%s'"
+msgid "failed to flush '%s'"
 msgstr ""
 
-#: sequencer.c:858
-msgid "missing 'GIT_AUTHOR_NAME'"
+#: rerere.c:487 rerere.c:1023
+#, c-format
+msgid "could not parse conflict hunks in '%s'"
 msgstr ""
 
-#: sequencer.c:860
-msgid "missing 'GIT_AUTHOR_EMAIL'"
+#: rerere.c:668
+#, c-format
+msgid "failed utime() on '%s'"
 msgstr ""
 
-#: sequencer.c:862
-msgid "missing 'GIT_AUTHOR_DATE'"
+#: rerere.c:678
+#, c-format
+msgid "writing '%s' failed"
 msgstr ""
 
-#: sequencer.c:927
+#: rerere.c:698
 #, c-format
-msgid ""
-"you have staged changes in your working tree\n"
-"If these changes are meant to be squashed into the previous commit, run:\n"
-"\n"
-"  git commit --amend %s\n"
-"\n"
-"If they are meant to go into a new commit, run:\n"
-"\n"
-"  git commit %s\n"
-"\n"
-"In both cases, once you're done, continue with:\n"
-"\n"
-"  git rebase --continue\n"
+msgid "Staged '%s' using previous resolution."
 msgstr ""
 
-#: sequencer.c:1208
-msgid "'prepare-commit-msg' hook failed"
+#: rerere.c:737
+#, c-format
+msgid "Recorded resolution for '%s'."
 msgstr ""
 
-#: sequencer.c:1214
-msgid ""
-"Your name and email address were configured automatically based\n"
-"on your username and hostname. Please check that they are accurate.\n"
-"You can suppress this message by setting them explicitly. Run the\n"
-"following command and follow the instructions in your editor to edit\n"
-"your configuration file:\n"
-"\n"
-"    git config --global --edit\n"
-"\n"
-"After doing this, you may fix the identity used for this commit with:\n"
-"\n"
-"    git commit --amend --reset-author\n"
+#: rerere.c:772
+#, c-format
+msgid "Resolved '%s' using previous resolution."
 msgstr ""
 
-#: sequencer.c:1227
-msgid ""
-"Your name and email address were configured automatically based\n"
-"on your username and hostname. Please check that they are accurate.\n"
-"You can suppress this message by setting them explicitly:\n"
-"\n"
-"    git config --global user.name \"Your Name\"\n"
-"    git config --global user.email you@example.com\n"
-"\n"
-"After doing this, you may fix the identity used for this commit with:\n"
-"\n"
-"    git commit --amend --reset-author\n"
+#: rerere.c:787
+#, c-format
+msgid "cannot unlink stray '%s'"
 msgstr ""
 
-#: sequencer.c:1269
-msgid "couldn't look up newly created commit"
+#: rerere.c:791
+#, c-format
+msgid "Recorded preimage for '%s'"
 msgstr ""
 
-#: sequencer.c:1271
-msgid "could not parse newly created commit"
+#: rerere.c:865 submodule.c:2088 builtin/log.c:1991
+#: builtin/submodule--helper.c:1878 builtin/submodule--helper.c:1890
+#, c-format
+msgid "could not create directory '%s'"
 msgstr ""
 
-#: sequencer.c:1317
-msgid "unable to resolve HEAD after creating commit"
+#: rerere.c:1041
+#, c-format
+msgid "failed to update conflicted state in '%s'"
 msgstr ""
 
-#: sequencer.c:1319
-msgid "detached HEAD"
+#: rerere.c:1052 rerere.c:1059
+#, c-format
+msgid "no remembered resolution for '%s'"
 msgstr ""
 
-#: sequencer.c:1323
-msgid " (root-commit)"
+#: rerere.c:1061
+#, c-format
+msgid "cannot unlink '%s'"
 msgstr ""
 
-#: sequencer.c:1344
-msgid "could not parse HEAD"
+#: rerere.c:1071
+#, c-format
+msgid "Updated preimage for '%s'"
 msgstr ""
 
-#: sequencer.c:1346
+#: rerere.c:1080
 #, c-format
-msgid "HEAD %s is not a commit!"
+msgid "Forgot resolution for '%s'\n"
 msgstr ""
 
-#: sequencer.c:1350 sequencer.c:1425 builtin/commit.c:1577
-msgid "could not parse HEAD commit"
+#: rerere.c:1191
+msgid "unable to open rr-cache directory"
 msgstr ""
 
-#: sequencer.c:1403 sequencer.c:2100
-msgid "unable to parse commit author"
+#: reset.c:42
+msgid "could not determine HEAD revision"
 msgstr ""
 
-#: sequencer.c:1414 builtin/am.c:1566 builtin/merge.c:701
-msgid "git write-tree failed to write a tree"
+#: reset.c:70 reset.c:76 sequencer.c:3468
+#, c-format
+msgid "failed to find tree of %s"
 msgstr ""
 
-#: sequencer.c:1447 sequencer.c:1565
-#, c-format
-msgid "unable to read commit message from '%s'"
+#: revision.c:2338
+msgid "--unpacked=<packfile> no longer supported"
+msgstr ""
+
+#: revision.c:2668
+msgid "your current branch appears to be broken"
 msgstr ""
 
-#: sequencer.c:1476 sequencer.c:1508
+#: revision.c:2671
 #, c-format
-msgid "invalid author identity '%s'"
+msgid "your current branch '%s' does not have any commits yet"
 msgstr ""
 
-#: sequencer.c:1482
-msgid "corrupt author: missing date information"
+#: revision.c:2877
+msgid "-L does not yet support diff formats besides -p and -s"
 msgstr ""
 
-#: sequencer.c:1521 builtin/am.c:1593 builtin/commit.c:1678 builtin/merge.c:904
-#: builtin/merge.c:929 t/helper/test-fast-rebase.c:78
-msgid "failed to write commit object"
+#: run-command.c:767
+msgid "open /dev/null failed"
 msgstr ""
 
-#: sequencer.c:1548 sequencer.c:4283 t/helper/test-fast-rebase.c:198
+#: run-command.c:1274
 #, c-format
-msgid "could not update %s"
+msgid "cannot create async thread: %s"
 msgstr ""
 
-#: sequencer.c:1597
+#: run-command.c:1338
 #, c-format
-msgid "could not parse commit %s"
+msgid ""
+"The '%s' hook was ignored because it's not set as executable.\n"
+"You can disable this warning with `git config advice.ignoredHook false`."
 msgstr ""
 
-#: sequencer.c:1602
-#, c-format
-msgid "could not parse parent commit %s"
+#: send-pack.c:146
+msgid "unexpected flush packet while reading remote unpack status"
 msgstr ""
 
-#: sequencer.c:1685 sequencer.c:1796
+#: send-pack.c:148
 #, c-format
-msgid "unknown command: %d"
+msgid "unable to parse remote unpack status: %s"
 msgstr ""
 
-#: sequencer.c:1743 sequencer.c:1768
+#: send-pack.c:150
 #, c-format
-msgid "This is a combination of %d commits."
+msgid "remote unpack failed: %s"
 msgstr ""
 
-#: sequencer.c:1753
-msgid "need a HEAD to fixup"
+#: send-pack.c:374
+msgid "failed to sign the push certificate"
 msgstr ""
 
-#: sequencer.c:1755 sequencer.c:3372
-msgid "could not read HEAD"
+#: send-pack.c:467
+msgid "the receiving end does not support this repository's hash algorithm"
 msgstr ""
 
-#: sequencer.c:1757
-msgid "could not read HEAD's commit message"
+#: send-pack.c:476
+msgid "the receiving end does not support --signed push"
 msgstr ""
 
-#: sequencer.c:1763
-#, c-format
-msgid "cannot write '%s'"
+#: send-pack.c:478
+msgid ""
+"not sending a push certificate since the receiving end does not support --"
+"signed push"
 msgstr ""
 
-#: sequencer.c:1770 git-rebase--preserve-merges.sh:486
-msgid "This is the 1st commit message:"
+#: send-pack.c:490
+msgid "the receiving end does not support --atomic push"
 msgstr ""
 
-#: sequencer.c:1778
-#, c-format
-msgid "could not read commit message of %s"
+#: send-pack.c:495
+msgid "the receiving end does not support push options"
 msgstr ""
 
-#: sequencer.c:1785
+#: sequencer.c:195
 #, c-format
-msgid "This is the commit message #%d:"
+msgid "invalid commit message cleanup mode '%s'"
 msgstr ""
 
-#: sequencer.c:1791
+#: sequencer.c:323
 #, c-format
-msgid "The commit message #%d will be skipped:"
-msgstr ""
-
-#: sequencer.c:1879
-msgid "your index file is unmerged."
-msgstr ""
-
-#: sequencer.c:1886
-msgid "cannot fixup root commit"
+msgid "could not delete '%s'"
 msgstr ""
 
-#: sequencer.c:1905
+#: sequencer.c:343 builtin/rebase.c:757 builtin/rebase.c:1602 builtin/rm.c:385
 #, c-format
-msgid "commit %s is a merge but no -m option was given."
+msgid "could not remove '%s'"
 msgstr ""
 
-#: sequencer.c:1913 sequencer.c:1921
-#, c-format
-msgid "commit %s does not have parent %d"
+#: sequencer.c:353
+msgid "revert"
 msgstr ""
 
-#: sequencer.c:1927
-#, c-format
-msgid "cannot get commit message for %s"
+#: sequencer.c:355
+msgid "cherry-pick"
 msgstr ""
 
-#. TRANSLATORS: The first %s will be a "todo" command like
-#. "revert" or "pick", the second %s a SHA1.
-#: sequencer.c:1946
-#, c-format
-msgid "%s: cannot parse parent commit %s"
+#: sequencer.c:357
+msgid "rebase"
 msgstr ""
 
-#: sequencer.c:2011
+#: sequencer.c:359
 #, c-format
-msgid "could not rename '%s' to '%s'"
+msgid "unknown action: %d"
 msgstr ""
 
-#: sequencer.c:2071
-#, c-format
-msgid "could not revert %s... %s"
+#: sequencer.c:418
+msgid ""
+"after resolving the conflicts, mark the corrected paths\n"
+"with 'git add <paths>' or 'git rm <paths>'"
 msgstr ""
 
-#: sequencer.c:2072
-#, c-format
-msgid "could not apply %s... %s"
+#: sequencer.c:421
+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:2092
+#: sequencer.c:434 sequencer.c:3070
 #, c-format
-msgid "dropping %s %s -- patch contents already upstream\n"
+msgid "could not lock '%s'"
 msgstr ""
 
-#: sequencer.c:2150
+#: sequencer.c:436 sequencer.c:2869 sequencer.c:3074 sequencer.c:3088
+#: sequencer.c:3345 sequencer.c:5334 strbuf.c:1168 wrapper.c:631
 #, c-format
-msgid "git %s: failed to read the index"
+msgid "could not write to '%s'"
 msgstr ""
 
-#: sequencer.c:2157
+#: sequencer.c:441
 #, c-format
-msgid "git %s: failed to refresh the index"
+msgid "could not write eol to '%s'"
 msgstr ""
 
-#: sequencer.c:2234
+#: sequencer.c:446 sequencer.c:2874 sequencer.c:3076 sequencer.c:3090
+#: sequencer.c:3353
 #, c-format
-msgid "%s does not accept arguments: '%s'"
+msgid "failed to finalize '%s'"
 msgstr ""
 
-#: sequencer.c:2243
+#: sequencer.c:485
 #, c-format
-msgid "missing arguments for %s"
+msgid "your local changes would be overwritten by %s."
 msgstr ""
 
-#: sequencer.c:2274
-#, c-format
-msgid "could not parse '%s'"
+#: sequencer.c:489
+msgid "commit your changes or stash them to proceed."
 msgstr ""
 
-#: sequencer.c:2335
+#: sequencer.c:521
 #, c-format
-msgid "invalid line %d: %.*s"
+msgid "%s: fast-forward"
 msgstr ""
 
-#: sequencer.c:2346
+#: sequencer.c:560 builtin/tag.c:598
 #, c-format
-msgid "cannot '%s' without a previous commit"
+msgid "Invalid cleanup mode %s"
 msgstr ""
 
-#: sequencer.c:2432
-msgid "cancelling a cherry picking in progress"
+#. TRANSLATORS: %s will be "revert", "cherry-pick" or
+#. "rebase".
+#.
+#: sequencer.c:670
+#, c-format
+msgid "%s: Unable to write new index file"
 msgstr ""
 
-#: sequencer.c:2441
-msgid "cancelling a revert in progress"
+#: sequencer.c:684
+msgid "unable to update cache tree"
 msgstr ""
 
-#: sequencer.c:2485
-msgid "please fix this using 'git rebase --edit-todo'."
+#: sequencer.c:698
+msgid "could not resolve HEAD commit"
 msgstr ""
 
-#: sequencer.c:2487
+#: sequencer.c:778
 #, c-format
-msgid "unusable instruction sheet: '%s'"
-msgstr ""
-
-#: sequencer.c:2492
-msgid "no commits parsed."
-msgstr ""
-
-#: sequencer.c:2503
-msgid "cannot cherry-pick during a revert."
+msgid "no key present in '%.*s'"
 msgstr ""
 
-#: sequencer.c:2505
-msgid "cannot revert during a cherry-pick."
+#: sequencer.c:789
+#, c-format
+msgid "unable to dequote value of '%s'"
 msgstr ""
 
-#: sequencer.c:2583
+#: sequencer.c:826 wrapper.c:201 wrapper.c:371 builtin/am.c:710
+#: builtin/am.c:802 builtin/merge.c:1136 builtin/rebase.c:910
 #, c-format
-msgid "invalid value for %s: %s"
+msgid "could not open '%s' for reading"
 msgstr ""
 
-#: sequencer.c:2690
-msgid "unusable squash-onto"
+#: sequencer.c:836
+msgid "'GIT_AUTHOR_NAME' already given"
 msgstr ""
 
-#: sequencer.c:2710
-#, c-format
-msgid "malformed options sheet: '%s'"
+#: sequencer.c:841
+msgid "'GIT_AUTHOR_EMAIL' already given"
 msgstr ""
 
-#: sequencer.c:2803 sequencer.c:4636
-msgid "empty commit set passed"
+#: sequencer.c:846
+msgid "'GIT_AUTHOR_DATE' already given"
 msgstr ""
 
-#: sequencer.c:2820
-msgid "revert is already in progress"
+#: sequencer.c:850
+#, c-format
+msgid "unknown variable '%s'"
 msgstr ""
 
-#: sequencer.c:2822
-#, c-format
-msgid "try \"git revert (--continue | %s--abort | --quit)\""
+#: sequencer.c:855
+msgid "missing 'GIT_AUTHOR_NAME'"
 msgstr ""
 
-#: sequencer.c:2825
-msgid "cherry-pick is already in progress"
+#: sequencer.c:857
+msgid "missing 'GIT_AUTHOR_EMAIL'"
 msgstr ""
 
-#: sequencer.c:2827
-#, c-format
-msgid "try \"git cherry-pick (--continue | %s--abort | --quit)\""
+#: sequencer.c:859
+msgid "missing 'GIT_AUTHOR_DATE'"
 msgstr ""
 
-#: sequencer.c:2841
+#: sequencer.c:924
 #, c-format
-msgid "could not create sequencer directory '%s'"
+msgid ""
+"you have staged changes in your working tree\n"
+"If these changes are meant to be squashed into the previous commit, run:\n"
+"\n"
+"  git commit --amend %s\n"
+"\n"
+"If they are meant to go into a new commit, run:\n"
+"\n"
+"  git commit %s\n"
+"\n"
+"In both cases, once you're done, continue with:\n"
+"\n"
+"  git rebase --continue\n"
 msgstr ""
 
-#: sequencer.c:2856
-msgid "could not lock HEAD"
+#: sequencer.c:1211
+msgid "'prepare-commit-msg' hook failed"
 msgstr ""
 
-#: sequencer.c:2916 sequencer.c:4371
-msgid "no cherry-pick or revert in progress"
+#: sequencer.c:1217
+msgid ""
+"Your name and email address were configured automatically based\n"
+"on your username and hostname. Please check that they are accurate.\n"
+"You can suppress this message by setting them explicitly. Run the\n"
+"following command and follow the instructions in your editor to edit\n"
+"your configuration file:\n"
+"\n"
+"    git config --global --edit\n"
+"\n"
+"After doing this, you may fix the identity used for this commit with:\n"
+"\n"
+"    git commit --amend --reset-author\n"
 msgstr ""
 
-#: sequencer.c:2918 sequencer.c:2929
-msgid "cannot resolve HEAD"
+#: sequencer.c:1230
+msgid ""
+"Your name and email address were configured automatically based\n"
+"on your username and hostname. Please check that they are accurate.\n"
+"You can suppress this message by setting them explicitly:\n"
+"\n"
+"    git config --global user.name \"Your Name\"\n"
+"    git config --global user.email you@example.com\n"
+"\n"
+"After doing this, you may fix the identity used for this commit with:\n"
+"\n"
+"    git commit --amend --reset-author\n"
 msgstr ""
 
-#: sequencer.c:2920 sequencer.c:2964
-msgid "cannot abort from a branch yet to be born"
+#: sequencer.c:1272
+msgid "couldn't look up newly created commit"
 msgstr ""
 
-#: sequencer.c:2950 builtin/grep.c:756
-#, c-format
-msgid "cannot open '%s'"
+#: sequencer.c:1274
+msgid "could not parse newly created commit"
 msgstr ""
 
-#: sequencer.c:2952
-#, c-format
-msgid "cannot read '%s': %s"
+#: sequencer.c:1320
+msgid "unable to resolve HEAD after creating commit"
 msgstr ""
 
-#: sequencer.c:2953
-msgid "unexpected end of file"
+#: sequencer.c:1322
+msgid "detached HEAD"
 msgstr ""
 
-#: sequencer.c:2959
-#, c-format
-msgid "stored pre-cherry-pick HEAD file '%s' is corrupt"
+#: sequencer.c:1326
+msgid " (root-commit)"
 msgstr ""
 
-#: sequencer.c:2970
-msgid "You seem to have moved HEAD. Not rewinding, check your HEAD!"
+#: sequencer.c:1347
+msgid "could not parse HEAD"
 msgstr ""
 
-#: sequencer.c:3011
-msgid "no revert in progress"
+#: sequencer.c:1349
+#, c-format
+msgid "HEAD %s is not a commit!"
 msgstr ""
 
-#: sequencer.c:3020
-msgid "no cherry-pick in progress"
+#: sequencer.c:1353 sequencer.c:1431 builtin/commit.c:1577
+msgid "could not parse HEAD commit"
 msgstr ""
 
-#: sequencer.c:3030
-msgid "failed to skip the commit"
+#: sequencer.c:1409 sequencer.c:2108
+msgid "unable to parse commit author"
 msgstr ""
 
-#: sequencer.c:3037
-msgid "there is nothing to skip"
+#: sequencer.c:1420 builtin/am.c:1566 builtin/merge.c:702
+msgid "git write-tree failed to write a tree"
 msgstr ""
 
-#: sequencer.c:3040
+#: sequencer.c:1453 sequencer.c:1573
 #, c-format
-msgid ""
-"have you committed already?\n"
-"try \"git %s --continue\""
-msgstr ""
-
-#: sequencer.c:3202 sequencer.c:4263
-msgid "cannot read HEAD"
+msgid "unable to read commit message from '%s'"
 msgstr ""
 
-#: sequencer.c:3219
+#: sequencer.c:1484 sequencer.c:1516
 #, c-format
-msgid "unable to copy '%s' to '%s'"
+msgid "invalid author identity '%s'"
 msgstr ""
 
-#: sequencer.c:3227
-#, c-format
-msgid ""
-"You can amend the commit now, with\n"
-"\n"
-"  git commit --amend %s\n"
-"\n"
-"Once you are satisfied with your changes, run\n"
-"\n"
-"  git rebase --continue\n"
+#: sequencer.c:1490
+msgid "corrupt author: missing date information"
 msgstr ""
 
-#: sequencer.c:3237
-#, c-format
-msgid "Could not apply %s... %.*s"
+#: sequencer.c:1529 builtin/am.c:1593 builtin/commit.c:1678 builtin/merge.c:905
+#: builtin/merge.c:930 t/helper/test-fast-rebase.c:78
+msgid "failed to write commit object"
 msgstr ""
 
-#: sequencer.c:3244
+#: sequencer.c:1556 sequencer.c:4291 t/helper/test-fast-rebase.c:198
 #, c-format
-msgid "Could not merge %.*s"
+msgid "could not update %s"
 msgstr ""
 
-#: sequencer.c:3258 sequencer.c:3262 builtin/difftool.c:640
+#: sequencer.c:1605
 #, c-format
-msgid "could not copy '%s' to '%s'"
+msgid "could not parse commit %s"
 msgstr ""
 
-#: sequencer.c:3274
+#: sequencer.c:1610
 #, c-format
-msgid "Executing: %s\n"
+msgid "could not parse parent commit %s"
 msgstr ""
 
-#: sequencer.c:3289
+#: sequencer.c:1693 sequencer.c:1804
 #, c-format
-msgid ""
-"execution failed: %s\n"
-"%sYou can fix the problem, and then run\n"
-"\n"
-"  git rebase --continue\n"
-"\n"
-msgstr ""
-
-#: sequencer.c:3295
-msgid "and made changes to the index and/or the working tree\n"
+msgid "unknown command: %d"
 msgstr ""
 
-#: sequencer.c:3301
+#: sequencer.c:1751 sequencer.c:1776
 #, c-format
-msgid ""
-"execution succeeded: %s\n"
-"but left changes to the index and/or the working tree\n"
-"Commit or stash your changes, and then run\n"
-"\n"
-"  git rebase --continue\n"
-"\n"
+msgid "This is a combination of %d commits."
 msgstr ""
 
-#: sequencer.c:3362
-#, c-format
-msgid "illegal label name: '%.*s'"
+#: sequencer.c:1761
+msgid "need a HEAD to fixup"
 msgstr ""
 
-#: sequencer.c:3416
-msgid "writing fake root commit"
+#: sequencer.c:1763 sequencer.c:3380
+msgid "could not read HEAD"
 msgstr ""
 
-#: sequencer.c:3421
-msgid "writing squash-onto"
+#: sequencer.c:1765
+msgid "could not read HEAD's commit message"
 msgstr ""
 
-#: sequencer.c:3505
+#: sequencer.c:1771
 #, c-format
-msgid "could not resolve '%s'"
-msgstr ""
-
-#: sequencer.c:3538
-msgid "cannot merge without a current revision"
+msgid "cannot write '%s'"
 msgstr ""
 
-#: sequencer.c:3560
-#, c-format
-msgid "unable to parse '%.*s'"
+#: sequencer.c:1778 git-rebase--preserve-merges.sh:486
+msgid "This is the 1st commit message:"
 msgstr ""
 
-#: sequencer.c:3569
+#: sequencer.c:1786
 #, c-format
-msgid "nothing to merge: '%.*s'"
-msgstr ""
-
-#: sequencer.c:3581
-msgid "octopus merge cannot be executed on top of a [new root]"
+msgid "could not read commit message of %s"
 msgstr ""
 
-#: sequencer.c:3597
+#: sequencer.c:1793
 #, c-format
-msgid "could not get commit message of '%s'"
+msgid "This is the commit message #%d:"
 msgstr ""
 
-#: sequencer.c:3780
+#: sequencer.c:1799
 #, c-format
-msgid "could not even attempt to merge '%.*s'"
+msgid "The commit message #%d will be skipped:"
 msgstr ""
 
-#: sequencer.c:3796
-msgid "merge: Unable to write new index file"
+#: sequencer.c:1887
+msgid "your index file is unmerged."
 msgstr ""
 
-#: sequencer.c:3870
-msgid "Cannot autostash"
+#: sequencer.c:1894
+msgid "cannot fixup root commit"
 msgstr ""
 
-#: sequencer.c:3873
+#: sequencer.c:1913
 #, c-format
-msgid "Unexpected stash response: '%s'"
+msgid "commit %s is a merge but no -m option was given."
 msgstr ""
 
-#: sequencer.c:3879
+#: sequencer.c:1921 sequencer.c:1929
 #, c-format
-msgid "Could not create directory for '%s'"
+msgid "commit %s does not have parent %d"
 msgstr ""
 
-#: sequencer.c:3882
+#: sequencer.c:1935
 #, c-format
-msgid "Created autostash: %s\n"
-msgstr ""
-
-#: sequencer.c:3886
-msgid "could not reset --hard"
+msgid "cannot get commit message for %s"
 msgstr ""
 
-#: sequencer.c:3911
+#. TRANSLATORS: The first %s will be a "todo" command like
+#. "revert" or "pick", the second %s a SHA1.
+#: sequencer.c:1954
 #, c-format
-msgid "Applied autostash.\n"
+msgid "%s: cannot parse parent commit %s"
 msgstr ""
 
-#: sequencer.c:3923
+#: sequencer.c:2019
 #, c-format
-msgid "cannot store %s"
+msgid "could not rename '%s' to '%s'"
 msgstr ""
 
-#: sequencer.c:3926
+#: sequencer.c:2079
 #, c-format
-msgid ""
-"%s\n"
-"Your changes are safe in the stash.\n"
-"You can run \"git stash pop\" or \"git stash drop\" at any time.\n"
+msgid "could not revert %s... %s"
 msgstr ""
 
-#: sequencer.c:3931
-msgid "Applying autostash resulted in conflicts."
+#: sequencer.c:2080
+#, c-format
+msgid "could not apply %s... %s"
 msgstr ""
 
-#: sequencer.c:3932
-msgid "Autostash exists; creating a new stash entry."
+#: sequencer.c:2100
+#, c-format
+msgid "dropping %s %s -- patch contents already upstream\n"
 msgstr ""
 
-#: sequencer.c:4025 git-rebase--preserve-merges.sh:769
-msgid "could not detach HEAD"
+#: sequencer.c:2158
+#, c-format
+msgid "git %s: failed to read the index"
 msgstr ""
 
-#: sequencer.c:4040
+#: sequencer.c:2165
 #, c-format
-msgid "Stopped at HEAD\n"
+msgid "git %s: failed to refresh the index"
 msgstr ""
 
-#: sequencer.c:4042
+#: sequencer.c:2242
 #, c-format
-msgid "Stopped at %s\n"
+msgid "%s does not accept arguments: '%s'"
 msgstr ""
 
-#: sequencer.c:4050
+#: sequencer.c:2251
 #, 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"
+msgid "missing arguments for %s"
 msgstr ""
 
-#: sequencer.c:4096
+#: sequencer.c:2282
 #, c-format
-msgid "Rebasing (%d/%d)%s"
+msgid "could not parse '%s'"
 msgstr ""
 
-#: sequencer.c:4141
+#: sequencer.c:2343
 #, c-format
-msgid "Stopped at %s...  %.*s\n"
+msgid "invalid line %d: %.*s"
 msgstr ""
 
-#: sequencer.c:4212
+#: sequencer.c:2354
 #, c-format
-msgid "unknown command %d"
+msgid "cannot '%s' without a previous commit"
 msgstr ""
 
-#: sequencer.c:4271
-msgid "could not read orig-head"
+#: sequencer.c:2440
+msgid "cancelling a cherry picking in progress"
 msgstr ""
 
-#: sequencer.c:4276
-msgid "could not read 'onto'"
+#: sequencer.c:2449
+msgid "cancelling a revert in progress"
 msgstr ""
 
-#: sequencer.c:4290
-#, c-format
-msgid "could not update HEAD to %s"
+#: sequencer.c:2493
+msgid "please fix this using 'git rebase --edit-todo'."
 msgstr ""
 
-#: sequencer.c:4350
+#: sequencer.c:2495
 #, c-format
-msgid "Successfully rebased and updated %s.\n"
+msgid "unusable instruction sheet: '%s'"
 msgstr ""
 
-#: sequencer.c:4383
-msgid "cannot rebase: You have unstaged changes."
+#: sequencer.c:2500
+msgid "no commits parsed."
 msgstr ""
 
-#: sequencer.c:4392
-msgid "cannot amend non-existing commit"
+#: sequencer.c:2511
+msgid "cannot cherry-pick during a revert."
 msgstr ""
 
-#: sequencer.c:4394
-#, c-format
-msgid "invalid file: '%s'"
+#: sequencer.c:2513
+msgid "cannot revert during a cherry-pick."
 msgstr ""
 
-#: sequencer.c:4396
+#: sequencer.c:2591
 #, c-format
-msgid "invalid contents: '%s'"
+msgid "invalid value for %s: %s"
 msgstr ""
 
-#: sequencer.c:4399
-msgid ""
-"\n"
-"You have uncommitted changes in your working tree. Please, commit them\n"
-"first and then run 'git rebase --continue' again."
+#: sequencer.c:2698
+msgid "unusable squash-onto"
 msgstr ""
 
-#: sequencer.c:4435 sequencer.c:4474
+#: sequencer.c:2718
 #, c-format
-msgid "could not write file: '%s'"
+msgid "malformed options sheet: '%s'"
 msgstr ""
 
-#: sequencer.c:4490
-msgid "could not remove CHERRY_PICK_HEAD"
+#: sequencer.c:2811 sequencer.c:4644
+msgid "empty commit set passed"
 msgstr ""
 
-#: sequencer.c:4497
-msgid "could not commit staged changes."
+#: sequencer.c:2828
+msgid "revert is already in progress"
 msgstr ""
 
-#: sequencer.c:4613
+#: sequencer.c:2830
 #, c-format
-msgid "%s: can't cherry-pick a %s"
+msgid "try \"git revert (--continue | %s--abort | --quit)\""
 msgstr ""
 
-#: sequencer.c:4617
-#, c-format
-msgid "%s: bad revision"
+#: sequencer.c:2833
+msgid "cherry-pick is already in progress"
 msgstr ""
 
-#: sequencer.c:4652
-msgid "can't revert as initial commit"
+#: sequencer.c:2835
+#, c-format
+msgid "try \"git cherry-pick (--continue | %s--abort | --quit)\""
 msgstr ""
 
-#: sequencer.c:5129
-msgid "make_script: unhandled options"
+#: sequencer.c:2849
+#, c-format
+msgid "could not create sequencer directory '%s'"
 msgstr ""
 
-#: sequencer.c:5132
-msgid "make_script: error preparing revisions"
+#: sequencer.c:2864
+msgid "could not lock HEAD"
 msgstr ""
 
-#: sequencer.c:5374 sequencer.c:5391
-msgid "nothing to do"
+#: sequencer.c:2924 sequencer.c:4379
+msgid "no cherry-pick or revert in progress"
 msgstr ""
 
-#: sequencer.c:5410
-msgid "could not skip unnecessary pick commands"
+#: sequencer.c:2926 sequencer.c:2937
+msgid "cannot resolve HEAD"
 msgstr ""
 
-#: sequencer.c:5504
-msgid "the script was already rearranged."
+#: sequencer.c:2928 sequencer.c:2972
+msgid "cannot abort from a branch yet to be born"
 msgstr ""
 
-#: setup.c:133
+#: sequencer.c:2958 builtin/grep.c:757
 #, c-format
-msgid "'%s' is outside repository at '%s'"
+msgid "cannot open '%s'"
 msgstr ""
 
-#: setup.c:185
+#: sequencer.c:2960
 #, c-format
-msgid ""
-"%s: no such path in the working tree.\n"
-"Use 'git <command> -- <path>...' to specify paths that do not exist locally."
+msgid "cannot read '%s': %s"
 msgstr ""
 
-#: setup.c:198
-#, c-format
-msgid ""
-"ambiguous argument '%s': unknown revision or path not in the working tree.\n"
-"Use '--' to separate paths from revisions, like this:\n"
-"'git <command> [<revision>...] -- [<file>...]'"
+#: sequencer.c:2961
+msgid "unexpected end of file"
 msgstr ""
 
-#: setup.c:264
+#: sequencer.c:2967
 #, c-format
-msgid "option '%s' must come before non-option arguments"
+msgid "stored pre-cherry-pick HEAD file '%s' is corrupt"
 msgstr ""
 
-#: setup.c:283
-#, c-format
-msgid ""
-"ambiguous argument '%s': both revision and filename\n"
-"Use '--' to separate paths from revisions, like this:\n"
-"'git <command> [<revision>...] -- [<file>...]'"
+#: sequencer.c:2978
+msgid "You seem to have moved HEAD. Not rewinding, check your HEAD!"
 msgstr ""
 
-#: setup.c:419
-msgid "unable to set up work tree using invalid config"
+#: sequencer.c:3019
+msgid "no revert in progress"
 msgstr ""
 
-#: setup.c:423
-msgid "this operation must be run in a work tree"
+#: sequencer.c:3028
+msgid "no cherry-pick in progress"
 msgstr ""
 
-#: setup.c:661
-#, c-format
-msgid "Expected git repo version <= %d, found %d"
+#: sequencer.c:3038
+msgid "failed to skip the commit"
 msgstr ""
 
-#: setup.c:669
-msgid "unknown repository extensions found:"
+#: sequencer.c:3045
+msgid "there is nothing to skip"
 msgstr ""
 
-#: setup.c:681
-msgid "repo version is 0, but v1-only extensions found:"
+#: sequencer.c:3048
+#, c-format
+msgid ""
+"have you committed already?\n"
+"try \"git %s --continue\""
 msgstr ""
 
-#: setup.c:700
+#: sequencer.c:3210 sequencer.c:4271
+msgid "cannot read HEAD"
+msgstr ""
+
+#: sequencer.c:3227
 #, c-format
-msgid "error opening '%s'"
+msgid "unable to copy '%s' to '%s'"
 msgstr ""
 
-#: setup.c:702
+#: sequencer.c:3235
 #, c-format
-msgid "too large to be a .git file: '%s'"
+msgid ""
+"You can amend the commit now, with\n"
+"\n"
+"  git commit --amend %s\n"
+"\n"
+"Once you are satisfied with your changes, run\n"
+"\n"
+"  git rebase --continue\n"
 msgstr ""
 
-#: setup.c:704
+#: sequencer.c:3245
 #, c-format
-msgid "error reading %s"
+msgid "Could not apply %s... %.*s"
 msgstr ""
 
-#: setup.c:706
+#: sequencer.c:3252
 #, c-format
-msgid "invalid gitfile format: %s"
+msgid "Could not merge %.*s"
 msgstr ""
 
-#: setup.c:708
+#: sequencer.c:3266 sequencer.c:3270 builtin/difftool.c:640
 #, c-format
-msgid "no path in gitfile: %s"
+msgid "could not copy '%s' to '%s'"
 msgstr ""
 
-#: setup.c:710
+#: sequencer.c:3282
 #, c-format
-msgid "not a git repository: %s"
+msgid "Executing: %s\n"
 msgstr ""
 
-#: setup.c:812
+#: sequencer.c:3297
 #, c-format
-msgid "'$%s' too big"
+msgid ""
+"execution failed: %s\n"
+"%sYou can fix the problem, and then run\n"
+"\n"
+"  git rebase --continue\n"
+"\n"
 msgstr ""
 
-#: setup.c:826
+#: sequencer.c:3303
+msgid "and made changes to the index and/or the working tree\n"
+msgstr ""
+
+#: sequencer.c:3309
 #, c-format
-msgid "not a git repository: '%s'"
+msgid ""
+"execution succeeded: %s\n"
+"but left changes to the index and/or the working tree\n"
+"Commit or stash your changes, and then run\n"
+"\n"
+"  git rebase --continue\n"
+"\n"
 msgstr ""
 
-#: setup.c:855 setup.c:857 setup.c:888
+#: sequencer.c:3370
 #, c-format
-msgid "cannot chdir to '%s'"
+msgid "illegal label name: '%.*s'"
 msgstr ""
 
-#: setup.c:860 setup.c:916 setup.c:926 setup.c:965 setup.c:973
-msgid "cannot come back to cwd"
+#: sequencer.c:3424
+msgid "writing fake root commit"
 msgstr ""
 
-#: setup.c:987
+#: sequencer.c:3429
+msgid "writing squash-onto"
+msgstr ""
+
+#: sequencer.c:3513
 #, c-format
-msgid "failed to stat '%*s%s%s'"
+msgid "could not resolve '%s'"
 msgstr ""
 
-#: setup.c:1225
-msgid "Unable to read current working directory"
+#: sequencer.c:3546
+msgid "cannot merge without a current revision"
 msgstr ""
 
-#: setup.c:1234 setup.c:1240
+#: sequencer.c:3568
 #, c-format
-msgid "cannot change to '%s'"
+msgid "unable to parse '%.*s'"
 msgstr ""
 
-#: setup.c:1245
+#: sequencer.c:3577
 #, c-format
-msgid "not a git repository (or any of the parent directories): %s"
+msgid "nothing to merge: '%.*s'"
 msgstr ""
 
-#: setup.c:1251
+#: sequencer.c:3589
+msgid "octopus merge cannot be executed on top of a [new root]"
+msgstr ""
+
+#: sequencer.c:3605
 #, 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)."
+msgid "could not get commit message of '%s'"
 msgstr ""
 
-#: setup.c:1362
+#: sequencer.c:3788
 #, c-format
-msgid ""
-"problem with core.sharedRepository filemode value (0%.3o).\n"
-"The owner of files must always have read and write permissions."
+msgid "could not even attempt to merge '%.*s'"
 msgstr ""
 
-#: setup.c:1409
-msgid "open /dev/null or dup failed"
+#: sequencer.c:3804
+msgid "merge: Unable to write new index file"
 msgstr ""
 
-#: setup.c:1424
-msgid "fork failed"
+#: sequencer.c:3878
+msgid "Cannot autostash"
 msgstr ""
 
-#: setup.c:1429
-msgid "setsid failed"
+#: sequencer.c:3881
+#, c-format
+msgid "Unexpected stash response: '%s'"
 msgstr ""
 
-#: sha1-file.c:480
+#: sequencer.c:3887
 #, c-format
-msgid "object directory %s does not exist; check .git/objects/info/alternates"
+msgid "Could not create directory for '%s'"
 msgstr ""
 
-#: sha1-file.c:531
+#: sequencer.c:3890
 #, c-format
-msgid "unable to normalize alternate object path: %s"
+msgid "Created autostash: %s\n"
+msgstr ""
+
+#: sequencer.c:3894
+msgid "could not reset --hard"
 msgstr ""
 
-#: sha1-file.c:603
+#: sequencer.c:3919
 #, c-format
-msgid "%s: ignoring alternate object stores, nesting too deep"
+msgid "Applied autostash.\n"
 msgstr ""
 
-#: sha1-file.c:610
+#: sequencer.c:3931
 #, c-format
-msgid "unable to normalize object directory: %s"
+msgid "cannot store %s"
 msgstr ""
 
-#: sha1-file.c:653
-msgid "unable to fdopen alternates lockfile"
+#: sequencer.c:3934
+#, c-format
+msgid ""
+"%s\n"
+"Your changes are safe in the stash.\n"
+"You can run \"git stash pop\" or \"git stash drop\" at any time.\n"
 msgstr ""
 
-#: sha1-file.c:671
-msgid "unable to read alternates file"
+#: sequencer.c:3939
+msgid "Applying autostash resulted in conflicts."
 msgstr ""
 
-#: sha1-file.c:678
-msgid "unable to move new alternates file into place"
+#: sequencer.c:3940
+msgid "Autostash exists; creating a new stash entry."
 msgstr ""
 
-#: sha1-file.c:713
-#, c-format
-msgid "path '%s' does not exist"
+#: sequencer.c:4033 git-rebase--preserve-merges.sh:769
+msgid "could not detach HEAD"
 msgstr ""
 
-#: sha1-file.c:734
+#: sequencer.c:4048
 #, c-format
-msgid "reference repository '%s' as a linked checkout is not supported yet."
+msgid "Stopped at HEAD\n"
 msgstr ""
 
-#: sha1-file.c:740
+#: sequencer.c:4050
 #, c-format
-msgid "reference repository '%s' is not a local repository."
+msgid "Stopped at %s\n"
 msgstr ""
 
-#: sha1-file.c:746
+#: sequencer.c:4058
 #, c-format
-msgid "reference repository '%s' is shallow"
+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 ""
 
-#: sha1-file.c:754
+#: sequencer.c:4104
 #, c-format
-msgid "reference repository '%s' is grafted"
+msgid "Rebasing (%d/%d)%s"
 msgstr ""
 
-#: sha1-file.c:814
+#: sequencer.c:4149
 #, c-format
-msgid "invalid line while parsing alternate refs: %s"
+msgid "Stopped at %s...  %.*s\n"
 msgstr ""
 
-#: sha1-file.c:964
+#: sequencer.c:4220
 #, c-format
-msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
+msgid "unknown command %d"
 msgstr ""
 
-#: sha1-file.c:985
-msgid "mmap failed"
+#: sequencer.c:4279
+msgid "could not read orig-head"
 msgstr ""
 
-#: sha1-file.c:1149
-#, c-format
-msgid "object file %s is empty"
+#: sequencer.c:4284
+msgid "could not read 'onto'"
 msgstr ""
 
-#: sha1-file.c:1284 sha1-file.c:2477
+#: sequencer.c:4298
 #, c-format
-msgid "corrupt loose object '%s'"
+msgid "could not update HEAD to %s"
 msgstr ""
 
-#: sha1-file.c:1286 sha1-file.c:2481
+#: sequencer.c:4358
 #, c-format
-msgid "garbage at end of loose object '%s'"
-msgstr ""
-
-#: sha1-file.c:1328
-msgid "invalid object type"
+msgid "Successfully rebased and updated %s.\n"
 msgstr ""
 
-#: sha1-file.c:1412
-#, c-format
-msgid "unable to unpack %s header with --allow-unknown-type"
+#: sequencer.c:4391
+msgid "cannot rebase: You have unstaged changes."
 msgstr ""
 
-#: sha1-file.c:1415
-#, c-format
-msgid "unable to unpack %s header"
+#: sequencer.c:4400
+msgid "cannot amend non-existing commit"
 msgstr ""
 
-#: sha1-file.c:1421
+#: sequencer.c:4402
 #, c-format
-msgid "unable to parse %s header with --allow-unknown-type"
+msgid "invalid file: '%s'"
 msgstr ""
 
-#: sha1-file.c:1424
+#: sequencer.c:4404
 #, c-format
-msgid "unable to parse %s header"
+msgid "invalid contents: '%s'"
 msgstr ""
 
-#: sha1-file.c:1651
-#, c-format
-msgid "failed to read object %s"
+#: sequencer.c:4407
+msgid ""
+"\n"
+"You have uncommitted changes in your working tree. Please, commit them\n"
+"first and then run 'git rebase --continue' again."
 msgstr ""
 
-#: sha1-file.c:1655
+#: sequencer.c:4443 sequencer.c:4482
 #, c-format
-msgid "replacement %s not found for %s"
+msgid "could not write file: '%s'"
 msgstr ""
 
-#: sha1-file.c:1659
-#, c-format
-msgid "loose object %s (stored in %s) is corrupt"
+#: sequencer.c:4498
+msgid "could not remove CHERRY_PICK_HEAD"
 msgstr ""
 
-#: sha1-file.c:1663
-#, c-format
-msgid "packed object %s (stored in %s) is corrupt"
+#: sequencer.c:4505
+msgid "could not commit staged changes."
 msgstr ""
 
-#: sha1-file.c:1768
+#: sequencer.c:4621
 #, c-format
-msgid "unable to write file %s"
+msgid "%s: can't cherry-pick a %s"
 msgstr ""
 
-#: sha1-file.c:1775
+#: sequencer.c:4625
 #, c-format
-msgid "unable to set permission to '%s'"
+msgid "%s: bad revision"
 msgstr ""
 
-#: sha1-file.c:1782
-msgid "file write error"
+#: sequencer.c:4660
+msgid "can't revert as initial commit"
 msgstr ""
 
-#: sha1-file.c:1802
-msgid "error when closing loose object file"
+#: sequencer.c:5137
+msgid "make_script: unhandled options"
 msgstr ""
 
-#: sha1-file.c:1867
-#, c-format
-msgid "insufficient permission for adding an object to repository database %s"
+#: sequencer.c:5140
+msgid "make_script: error preparing revisions"
 msgstr ""
 
-#: sha1-file.c:1869
-msgid "unable to create temporary file"
+#: sequencer.c:5382 sequencer.c:5399
+msgid "nothing to do"
 msgstr ""
 
-#: sha1-file.c:1893
-msgid "unable to write loose object file"
+#: sequencer.c:5418
+msgid "could not skip unnecessary pick commands"
 msgstr ""
 
-#: sha1-file.c:1899
-#, c-format
-msgid "unable to deflate new object %s (%d)"
+#: sequencer.c:5512
+msgid "the script was already rearranged."
 msgstr ""
 
-#: sha1-file.c:1903
+#: setup.c:133
 #, c-format
-msgid "deflateEnd on object %s failed (%d)"
+msgid "'%s' is outside repository at '%s'"
 msgstr ""
 
-#: sha1-file.c:1907
+#: setup.c:185
 #, c-format
-msgid "confused by unstable object source data for %s"
+msgid ""
+"%s: no such path in the working tree.\n"
+"Use 'git <command> -- <path>...' to specify paths that do not exist locally."
 msgstr ""
 
-#: sha1-file.c:1917 builtin/pack-objects.c:1086
+#: setup.c:198
 #, c-format
-msgid "failed utime() on %s"
+msgid ""
+"ambiguous argument '%s': unknown revision or path not in the working tree.\n"
+"Use '--' to separate paths from revisions, like this:\n"
+"'git <command> [<revision>...] -- [<file>...]'"
 msgstr ""
 
-#: sha1-file.c:1994
+#: setup.c:264
 #, c-format
-msgid "cannot read object for %s"
+msgid "option '%s' must come before non-option arguments"
 msgstr ""
 
-#: sha1-file.c:2045
-msgid "corrupt commit"
+#: setup.c:283
+#, c-format
+msgid ""
+"ambiguous argument '%s': both revision and filename\n"
+"Use '--' to separate paths from revisions, like this:\n"
+"'git <command> [<revision>...] -- [<file>...]'"
 msgstr ""
 
-#: sha1-file.c:2053
-msgid "corrupt tag"
+#: setup.c:419
+msgid "unable to set up work tree using invalid config"
 msgstr ""
 
-#: sha1-file.c:2153
-#, c-format
-msgid "read error while indexing %s"
+#: setup.c:423
+msgid "this operation must be run in a work tree"
 msgstr ""
 
-#: sha1-file.c:2156
+#: setup.c:661
 #, c-format
-msgid "short read while indexing %s"
+msgid "Expected git repo version <= %d, found %d"
 msgstr ""
 
-#: sha1-file.c:2229 sha1-file.c:2239
-#, c-format
-msgid "%s: failed to insert into database"
+#: setup.c:669
+msgid "unknown repository extensions found:"
 msgstr ""
 
-#: sha1-file.c:2245
-#, c-format
-msgid "%s: unsupported file type"
+#: setup.c:681
+msgid "repo version is 0, but v1-only extensions found:"
 msgstr ""
 
-#: sha1-file.c:2269
+#: setup.c:700
 #, c-format
-msgid "%s is not a valid object"
+msgid "error opening '%s'"
 msgstr ""
 
-#: sha1-file.c:2271
+#: setup.c:702
 #, c-format
-msgid "%s is not a valid '%s' object"
+msgid "too large to be a .git file: '%s'"
 msgstr ""
 
-#: sha1-file.c:2298 builtin/index-pack.c:192
+#: setup.c:704
 #, c-format
-msgid "unable to open %s"
+msgid "error reading %s"
 msgstr ""
 
-#: sha1-file.c:2488 sha1-file.c:2541
+#: setup.c:706
 #, c-format
-msgid "hash mismatch for %s (expected %s)"
+msgid "invalid gitfile format: %s"
 msgstr ""
 
-#: sha1-file.c:2512
+#: setup.c:708
 #, c-format
-msgid "unable to mmap %s"
+msgid "no path in gitfile: %s"
 msgstr ""
 
-#: sha1-file.c:2517
+#: setup.c:710
 #, c-format
-msgid "unable to unpack header of %s"
+msgid "not a git repository: %s"
 msgstr ""
 
-#: sha1-file.c:2523
+#: setup.c:812
 #, c-format
-msgid "unable to parse header of %s"
+msgid "'$%s' too big"
 msgstr ""
 
-#: sha1-file.c:2534
+#: setup.c:826
 #, c-format
-msgid "unable to unpack contents of %s"
+msgid "not a git repository: '%s'"
 msgstr ""
 
-#: sha1-name.c:486
+#: setup.c:855 setup.c:857 setup.c:888
 #, c-format
-msgid "short SHA1 %s is ambiguous"
-msgstr ""
-
-#: sha1-name.c:497
-msgid "The candidates are:"
-msgstr ""
-
-#: sha1-name.c:796
-msgid ""
-"Git normally never creates a ref that ends with 40 hex characters\n"
-"because it will be ignored when you just specify 40-hex. These refs\n"
-"may be created by mistake. For example,\n"
-"\n"
-"  git switch -c $br $(git rev-parse ...)\n"
-"\n"
-"where \"$br\" is somehow empty and a 40-hex ref is created. Please\n"
-"examine these refs and maybe delete them. Turn this message off by\n"
-"running \"git config advice.objectNameWarning false\""
+msgid "cannot chdir to '%s'"
 msgstr ""
 
-#: sha1-name.c:916
-#, c-format
-msgid "log for '%.*s' only goes back to %s"
+#: setup.c:860 setup.c:916 setup.c:926 setup.c:965 setup.c:973
+msgid "cannot come back to cwd"
 msgstr ""
 
-#: sha1-name.c:924
+#: setup.c:987
 #, c-format
-msgid "log for '%.*s' only has %d entries"
+msgid "failed to stat '%*s%s%s'"
 msgstr ""
 
-#: sha1-name.c:1702
-#, c-format
-msgid "path '%s' exists on disk, but not in '%.*s'"
+#: setup.c:1225
+msgid "Unable to read current working directory"
 msgstr ""
 
-#: sha1-name.c:1708
+#: setup.c:1234 setup.c:1240
 #, c-format
-msgid ""
-"path '%s' exists, but not '%s'\n"
-"hint: Did you mean '%.*s:%s' aka '%.*s:./%s'?"
+msgid "cannot change to '%s'"
 msgstr ""
 
-#: sha1-name.c:1717
+#: setup.c:1245
 #, c-format
-msgid "path '%s' does not exist in '%.*s'"
+msgid "not a git repository (or any of the parent directories): %s"
 msgstr ""
 
-#: sha1-name.c:1745
+#: setup.c:1251
 #, c-format
 msgid ""
-"path '%s' is in the index, but not at stage %d\n"
-"hint: Did you mean ':%d:%s'?"
+"not a git repository (or any parent up to mount point %s)\n"
+"Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set)."
 msgstr ""
 
-#: sha1-name.c:1761
+#: setup.c:1362
 #, c-format
 msgid ""
-"path '%s' is in the index, but not '%s'\n"
-"hint: Did you mean ':%d:%s' aka ':%d:./%s'?"
-msgstr ""
-
-#: sha1-name.c:1769
-#, c-format
-msgid "path '%s' exists on disk, but not in the index"
+"problem with core.sharedRepository filemode value (0%.3o).\n"
+"The owner of files must always have read and write permissions."
 msgstr ""
 
-#: sha1-name.c:1771
-#, c-format
-msgid "path '%s' does not exist (neither on disk nor in the index)"
+#: setup.c:1409
+msgid "open /dev/null or dup failed"
 msgstr ""
 
-#: sha1-name.c:1784
-msgid "relative path syntax can't be used outside working tree"
+#: setup.c:1424
+msgid "fork failed"
 msgstr ""
 
-#: sha1-name.c:1922
-#, c-format
-msgid "invalid object name '%.*s'."
+#: setup.c:1429
+msgid "setsid failed"
 msgstr ""
 
 #. TRANSLATORS: IEC 80000-13:2008 gibibyte
@@ -7628,7 +7864,7 @@ msgstr[0] ""
 msgstr[1] ""
 
 #: strbuf.c:1166 wrapper.c:199 wrapper.c:369 builtin/am.c:719
-#: builtin/rebase.c:864
+#: builtin/rebase.c:866
 #, c-format
 msgid "could not open '%s' for writing"
 msgstr ""
@@ -7690,137 +7926,137 @@ msgstr ""
 msgid "Pathspec '%s' is in submodule '%.*s'"
 msgstr ""
 
-#: submodule.c:434
+#: submodule.c:435
 #, c-format
 msgid "bad --ignore-submodules argument: %s"
 msgstr ""
 
-#: submodule.c:816
+#: submodule.c:817
 #, c-format
 msgid ""
 "Submodule in commit %s at path: '%s' collides with a submodule named the "
 "same. Skipping it."
 msgstr ""
 
-#: submodule.c:919
+#: submodule.c:920
 #, c-format
 msgid "submodule entry '%s' (%s) is a %s, not a commit"
 msgstr ""
 
-#: submodule.c:1004
+#: submodule.c:1005
 #, c-format
 msgid ""
 "Could not run 'git rev-list <commits> --not --remotes -n 1' command in "
 "submodule %s"
 msgstr ""
 
-#: submodule.c:1127
+#: submodule.c:1128
 #, c-format
 msgid "process for submodule '%s' failed"
 msgstr ""
 
-#: submodule.c:1156 builtin/branch.c:680 builtin/submodule--helper.c:2469
+#: submodule.c:1157 builtin/branch.c:689 builtin/submodule--helper.c:2469
 msgid "Failed to resolve HEAD as a valid ref."
 msgstr ""
 
-#: submodule.c:1167
+#: submodule.c:1168
 #, c-format
 msgid "Pushing submodule '%s'\n"
 msgstr ""
 
-#: submodule.c:1170
+#: submodule.c:1171
 #, c-format
 msgid "Unable to push submodule '%s'\n"
 msgstr ""
 
-#: submodule.c:1462
+#: submodule.c:1463
 #, c-format
 msgid "Fetching submodule %s%s\n"
 msgstr ""
 
-#: submodule.c:1492
+#: submodule.c:1497
 #, c-format
 msgid "Could not access submodule '%s'\n"
 msgstr ""
 
-#: submodule.c:1646
+#: submodule.c:1652
 #, c-format
 msgid ""
 "Errors during submodule fetch:\n"
 "%s"
 msgstr ""
 
-#: submodule.c:1671
+#: submodule.c:1677
 #, c-format
 msgid "'%s' not recognized as a git repository"
 msgstr ""
 
-#: submodule.c:1688
+#: submodule.c:1694
 #, c-format
 msgid "Could not run 'git status --porcelain=2' in submodule %s"
 msgstr ""
 
-#: submodule.c:1729
+#: submodule.c:1735
 #, c-format
 msgid "'git status --porcelain=2' failed in submodule %s"
 msgstr ""
 
-#: submodule.c:1804
+#: submodule.c:1810
 #, c-format
 msgid "could not start 'git status' in submodule '%s'"
 msgstr ""
 
-#: submodule.c:1817
+#: submodule.c:1823
 #, c-format
 msgid "could not run 'git status' in submodule '%s'"
 msgstr ""
 
-#: submodule.c:1832
+#: submodule.c:1838
 #, c-format
 msgid "Could not unset core.worktree setting in submodule '%s'"
 msgstr ""
 
-#: submodule.c:1859 submodule.c:2169
+#: submodule.c:1865 submodule.c:2175
 #, c-format
 msgid "could not recurse into submodule '%s'"
 msgstr ""
 
-#: submodule.c:1880
+#: submodule.c:1886
 msgid "could not reset submodule index"
 msgstr ""
 
-#: submodule.c:1922
+#: submodule.c:1928
 #, c-format
 msgid "submodule '%s' has dirty index"
 msgstr ""
 
-#: submodule.c:1974
+#: submodule.c:1980
 #, c-format
 msgid "Submodule '%s' could not be updated."
 msgstr ""
 
-#: submodule.c:2042
+#: submodule.c:2048
 #, c-format
 msgid "submodule git dir '%s' is inside git dir '%.*s'"
 msgstr ""
 
-#: submodule.c:2063
+#: submodule.c:2069
 #, c-format
 msgid ""
 "relocate_gitdir for submodule '%s' with more than one worktree not supported"
 msgstr ""
 
-#: submodule.c:2075 submodule.c:2134
+#: submodule.c:2081 submodule.c:2140
 #, c-format
 msgid "could not lookup name for submodule '%s'"
 msgstr ""
 
-#: submodule.c:2079
+#: submodule.c:2085
 #, c-format
 msgid "refusing to move '%s' into an existing git dir"
 msgstr ""
 
-#: submodule.c:2086
+#: submodule.c:2092
 #, c-format
 msgid ""
 "Migrating git directory of '%s%s' from\n"
@@ -7828,11 +8064,11 @@ msgid ""
 "'%s'\n"
 msgstr ""
 
-#: submodule.c:2214
+#: submodule.c:2220
 msgid "could not start ls-files in .."
 msgstr ""
 
-#: submodule.c:2254
+#: submodule.c:2260
 #, c-format
 msgid "ls-tree returned unexpected return code %d"
 msgstr ""
@@ -7863,7 +8099,7 @@ msgstr ""
 msgid "could not read input file '%s'"
 msgstr ""
 
-#: trailer.c:751
+#: trailer.c:751 builtin/mktag.c:91
 msgid "could not read from stdin"
 msgstr ""
 
@@ -7933,7 +8169,7 @@ msgstr ""
 msgid "error while running fast-import"
 msgstr ""
 
-#: transport-helper.c:549 transport-helper.c:1236
+#: transport-helper.c:549 transport-helper.c:1237
 #, c-format
 msgid "could not read ref %s"
 msgstr ""
@@ -7951,7 +8187,7 @@ msgstr ""
 msgid "invalid remote service path"
 msgstr ""
 
-#: transport-helper.c:661 transport.c:1446
+#: transport-helper.c:661 transport.c:1447
 msgid "operation not supported by protocol"
 msgstr ""
 
@@ -8028,52 +8264,52 @@ msgid ""
 "Perhaps you should specify a branch.\n"
 msgstr ""
 
-#: transport-helper.c:1213
+#: transport-helper.c:1214
 #, c-format
 msgid "unsupported object format '%s'"
 msgstr ""
 
-#: transport-helper.c:1222
+#: transport-helper.c:1223
 #, c-format
 msgid "malformed response in ref list: %s"
 msgstr ""
 
-#: transport-helper.c:1374
+#: transport-helper.c:1375
 #, c-format
 msgid "read(%s) failed"
 msgstr ""
 
-#: transport-helper.c:1401
+#: transport-helper.c:1402
 #, c-format
 msgid "write(%s) failed"
 msgstr ""
 
-#: transport-helper.c:1450
+#: transport-helper.c:1451
 #, c-format
 msgid "%s thread failed"
 msgstr ""
 
-#: transport-helper.c:1454
+#: transport-helper.c:1455
 #, c-format
 msgid "%s thread failed to join: %s"
 msgstr ""
 
-#: transport-helper.c:1473 transport-helper.c:1477
+#: transport-helper.c:1474 transport-helper.c:1478
 #, c-format
 msgid "can't start thread for copying data: %s"
 msgstr ""
 
-#: transport-helper.c:1514
+#: transport-helper.c:1515
 #, c-format
 msgid "%s process failed to wait"
 msgstr ""
 
-#: transport-helper.c:1518
+#: transport-helper.c:1519
 #, c-format
 msgid "%s process failed"
 msgstr ""
 
-#: transport-helper.c:1536 transport-helper.c:1545
+#: transport-helper.c:1537 transport-helper.c:1546
 msgid "can't start thread for copying data"
 msgstr ""
 
@@ -8149,23 +8385,23 @@ msgstr ""
 msgid "Aborting."
 msgstr ""
 
-#: transport.c:1315
+#: transport.c:1316
 msgid "failed to push all needed submodules"
 msgstr ""
 
-#: tree-walk.c:32
+#: tree-walk.c:33
 msgid "too-short tree object"
 msgstr ""
 
-#: tree-walk.c:38
+#: tree-walk.c:39
 msgid "malformed mode in tree entry"
 msgstr ""
 
-#: tree-walk.c:42
+#: tree-walk.c:43
 msgid "empty filename in tree entry"
 msgstr ""
 
-#: tree-walk.c:117
+#: tree-walk.c:118
 msgid "too-short tree file"
 msgstr ""
 
@@ -8366,7 +8602,7 @@ msgstr ""
 msgid "Updating index flags"
 msgstr ""
 
-#: upload-pack.c:1550
+#: upload-pack.c:1543
 msgid "expected flush after fetch arguments"
 msgstr ""
 
@@ -8403,72 +8639,102 @@ msgstr ""
 msgid "Fetching objects"
 msgstr ""
 
-#: worktree.c:236 builtin/am.c:2103
+#: worktree.c:238 builtin/am.c:2103
 #, c-format
 msgid "failed to read '%s'"
 msgstr ""
 
-#: worktree.c:283
+#: worktree.c:304
 #, c-format
 msgid "'%s' at main working tree is not the repository directory"
 msgstr ""
 
-#: worktree.c:294
+#: worktree.c:315
 #, c-format
 msgid "'%s' file does not contain absolute path to the working tree location"
 msgstr ""
 
-#: worktree.c:306
+#: worktree.c:327
 #, c-format
 msgid "'%s' does not exist"
 msgstr ""
 
-#: worktree.c:312
+#: worktree.c:333
 #, c-format
 msgid "'%s' is not a .git file, error code %d"
 msgstr ""
 
-#: worktree.c:321
+#: worktree.c:342
 #, c-format
 msgid "'%s' does not point back to '%s'"
 msgstr ""
 
-#: worktree.c:587
+#: worktree.c:608
 msgid "not a directory"
 msgstr ""
 
-#: worktree.c:596
+#: worktree.c:617
 msgid ".git is not a file"
 msgstr ""
 
-#: worktree.c:598
+#: worktree.c:619
 msgid ".git file broken"
 msgstr ""
 
-#: worktree.c:600
+#: worktree.c:621
 msgid ".git file incorrect"
 msgstr ""
 
-#: worktree.c:670
+#: worktree.c:727
 msgid "not a valid path"
 msgstr ""
 
-#: worktree.c:676
+#: worktree.c:733
 msgid "unable to locate repository; .git is not a file"
 msgstr ""
 
-#: worktree.c:679
+#: worktree.c:737
+msgid "unable to locate repository; .git file does not reference a repository"
+msgstr ""
+
+#: worktree.c:741
 msgid "unable to locate repository; .git file broken"
 msgstr ""
 
-#: worktree.c:685
+#: worktree.c:747
 msgid "gitdir unreadable"
 msgstr ""
 
-#: worktree.c:689
+#: worktree.c:751
 msgid "gitdir incorrect"
 msgstr ""
 
+#: worktree.c:776
+msgid "not a valid directory"
+msgstr ""
+
+#: worktree.c:782
+msgid "gitdir file does not exist"
+msgstr ""
+
+#: worktree.c:787 worktree.c:796
+#, c-format
+msgid "unable to read gitdir file (%s)"
+msgstr ""
+
+#: worktree.c:806
+#, c-format
+msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
+msgstr ""
+
+#: worktree.c:814
+msgid "invalid gitdir file"
+msgstr ""
+
+#: worktree.c:822
+msgid "gitdir file points to non-existent location"
+msgstr ""
+
 #: wrapper.c:197 wrapper.c:367
 #, c-format
 msgid "could not open '%s' for reading and writing"
@@ -8512,11 +8778,11 @@ msgstr ""
 msgid "  (use \"git rm <file>...\" to mark resolution)"
 msgstr ""
 
-#: wt-status.c:211 wt-status.c:1070
+#: wt-status.c:211 wt-status.c:1072
 msgid "Changes to be committed:"
 msgstr ""
 
-#: wt-status.c:234 wt-status.c:1079
+#: wt-status.c:234 wt-status.c:1081
 msgid "Changes not staged for commit:"
 msgstr ""
 
@@ -8614,28 +8880,28 @@ msgstr ""
 msgid "untracked content, "
 msgstr ""
 
-#: wt-status.c:903
+#: wt-status.c:905
 #, c-format
 msgid "Your stash currently has %d entry"
 msgid_plural "Your stash currently has %d entries"
 msgstr[0] ""
 msgstr[1] ""
 
-#: wt-status.c:934
+#: wt-status.c:936
 msgid "Submodules changed but not updated:"
 msgstr ""
 
-#: wt-status.c:936
+#: wt-status.c:938
 msgid "Submodule changes to be committed:"
 msgstr ""
 
-#: wt-status.c:1018
+#: wt-status.c:1020
 msgid ""
 "Do not modify or remove the line above.\n"
 "Everything below it will be ignored."
 msgstr ""
 
-#: wt-status.c:1110
+#: wt-status.c:1112
 #, c-format
 msgid ""
 "\n"
@@ -8643,247 +8909,255 @@ msgid ""
 "You can use '--no-ahead-behind' to avoid this.\n"
 msgstr ""
 
-#: wt-status.c:1140
+#: wt-status.c:1142
 msgid "You have unmerged paths."
 msgstr ""
 
-#: wt-status.c:1143
+#: wt-status.c:1145
 msgid "  (fix conflicts and run \"git commit\")"
 msgstr ""
 
-#: wt-status.c:1145
+#: wt-status.c:1147
 msgid "  (use \"git merge --abort\" to abort the merge)"
 msgstr ""
 
-#: wt-status.c:1149
+#: wt-status.c:1151
 msgid "All conflicts fixed but you are still merging."
 msgstr ""
 
-#: wt-status.c:1152
+#: wt-status.c:1154
 msgid "  (use \"git commit\" to conclude merge)"
 msgstr ""
 
-#: wt-status.c:1161
+#: wt-status.c:1163
 msgid "You are in the middle of an am session."
 msgstr ""
 
-#: wt-status.c:1164
+#: wt-status.c:1166
 msgid "The current patch is empty."
 msgstr ""
 
-#: wt-status.c:1168
+#: wt-status.c:1170
 msgid "  (fix conflicts and then run \"git am --continue\")"
 msgstr ""
 
-#: wt-status.c:1170
+#: wt-status.c:1172
 msgid "  (use \"git am --skip\" to skip this patch)"
 msgstr ""
 
-#: wt-status.c:1172
+#: wt-status.c:1174
 msgid "  (use \"git am --abort\" to restore the original branch)"
 msgstr ""
 
-#: wt-status.c:1305
+#: wt-status.c:1307
 msgid "git-rebase-todo is missing."
 msgstr ""
 
-#: wt-status.c:1307
+#: wt-status.c:1309
 msgid "No commands done."
 msgstr ""
 
-#: wt-status.c:1310
+#: wt-status.c:1312
 #, c-format
 msgid "Last command done (%d command done):"
 msgid_plural "Last commands done (%d commands done):"
 msgstr[0] ""
 msgstr[1] ""
 
-#: wt-status.c:1321
+#: wt-status.c:1323
 #, c-format
 msgid "  (see more in file %s)"
 msgstr ""
 
-#: wt-status.c:1326
+#: wt-status.c:1328
 msgid "No commands remaining."
 msgstr ""
 
-#: wt-status.c:1329
+#: wt-status.c:1331
 #, 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:1337
+#: wt-status.c:1339
 msgid "  (use \"git rebase --edit-todo\" to view and edit)"
 msgstr ""
 
-#: wt-status.c:1349
+#: wt-status.c:1351
 #, c-format
 msgid "You are currently rebasing branch '%s' on '%s'."
 msgstr ""
 
-#: wt-status.c:1354
+#: wt-status.c:1356
 msgid "You are currently rebasing."
 msgstr ""
 
-#: wt-status.c:1367
+#: wt-status.c:1369
 msgid "  (fix conflicts and then run \"git rebase --continue\")"
 msgstr ""
 
-#: wt-status.c:1369
+#: wt-status.c:1371
 msgid "  (use \"git rebase --skip\" to skip this patch)"
 msgstr ""
 
-#: wt-status.c:1371
+#: wt-status.c:1373
 msgid "  (use \"git rebase --abort\" to check out the original branch)"
 msgstr ""
 
-#: wt-status.c:1378
+#: wt-status.c:1380
 msgid "  (all conflicts fixed: run \"git rebase --continue\")"
 msgstr ""
 
-#: wt-status.c:1382
+#: wt-status.c:1384
 #, c-format
 msgid ""
 "You are currently splitting a commit while rebasing branch '%s' on '%s'."
 msgstr ""
 
-#: wt-status.c:1387
+#: wt-status.c:1389
 msgid "You are currently splitting a commit during a rebase."
 msgstr ""
 
-#: wt-status.c:1390
+#: wt-status.c:1392
 msgid "  (Once your working directory is clean, run \"git rebase --continue\")"
 msgstr ""
 
-#: wt-status.c:1394
+#: wt-status.c:1396
 #, c-format
 msgid "You are currently editing a commit while rebasing branch '%s' on '%s'."
 msgstr ""
 
-#: wt-status.c:1399
+#: wt-status.c:1401
 msgid "You are currently editing a commit during a rebase."
 msgstr ""
 
-#: wt-status.c:1402
+#: wt-status.c:1404
 msgid "  (use \"git commit --amend\" to amend the current commit)"
 msgstr ""
 
-#: wt-status.c:1404
+#: wt-status.c:1406
 msgid ""
 "  (use \"git rebase --continue\" once you are satisfied with your changes)"
 msgstr ""
 
-#: wt-status.c:1415
+#: wt-status.c:1417
 msgid "Cherry-pick currently in progress."
 msgstr ""
 
-#: wt-status.c:1418
+#: wt-status.c:1420
 #, c-format
 msgid "You are currently cherry-picking commit %s."
 msgstr ""
 
-#: wt-status.c:1425
+#: wt-status.c:1427
 msgid "  (fix conflicts and run \"git cherry-pick --continue\")"
 msgstr ""
 
-#: wt-status.c:1428
+#: wt-status.c:1430
 msgid "  (run \"git cherry-pick --continue\" to continue)"
 msgstr ""
 
-#: wt-status.c:1431
+#: wt-status.c:1433
 msgid "  (all conflicts fixed: run \"git cherry-pick --continue\")"
 msgstr ""
 
-#: wt-status.c:1433
+#: wt-status.c:1435
 msgid "  (use \"git cherry-pick --skip\" to skip this patch)"
 msgstr ""
 
-#: wt-status.c:1435
+#: wt-status.c:1437
 msgid "  (use \"git cherry-pick --abort\" to cancel the cherry-pick operation)"
 msgstr ""
 
-#: wt-status.c:1445
+#: wt-status.c:1447
 msgid "Revert currently in progress."
 msgstr ""
 
-#: wt-status.c:1448
+#: wt-status.c:1450
 #, c-format
 msgid "You are currently reverting commit %s."
 msgstr ""
 
-#: wt-status.c:1454
+#: wt-status.c:1456
 msgid "  (fix conflicts and run \"git revert --continue\")"
 msgstr ""
 
-#: wt-status.c:1457
+#: wt-status.c:1459
 msgid "  (run \"git revert --continue\" to continue)"
 msgstr ""
 
-#: wt-status.c:1460
+#: wt-status.c:1462
 msgid "  (all conflicts fixed: run \"git revert --continue\")"
 msgstr ""
 
-#: wt-status.c:1462
+#: wt-status.c:1464
 msgid "  (use \"git revert --skip\" to skip this patch)"
 msgstr ""
 
-#: wt-status.c:1464
+#: wt-status.c:1466
 msgid "  (use \"git revert --abort\" to cancel the revert operation)"
 msgstr ""
 
-#: wt-status.c:1474
+#: wt-status.c:1476
 #, c-format
 msgid "You are currently bisecting, started from branch '%s'."
 msgstr ""
 
-#: wt-status.c:1478
+#: wt-status.c:1480
 msgid "You are currently bisecting."
 msgstr ""
 
-#: wt-status.c:1481
+#: wt-status.c:1483
 msgid "  (use \"git bisect reset\" to get back to the original branch)"
 msgstr ""
 
-#: wt-status.c:1492
+#: wt-status.c:1494
 #, c-format
 msgid "You are in a sparse checkout with %d%% of tracked files present."
 msgstr ""
 
-#: wt-status.c:1731
+#: wt-status.c:1733
 msgid "On branch "
 msgstr ""
 
-#: wt-status.c:1738
+#: wt-status.c:1740
 msgid "interactive rebase in progress; onto "
 msgstr ""
 
-#: wt-status.c:1740
+#: wt-status.c:1742
 msgid "rebase in progress; onto "
 msgstr ""
 
-#: wt-status.c:1750
+#: wt-status.c:1747
+msgid "HEAD detached at "
+msgstr ""
+
+#: wt-status.c:1749
+msgid "HEAD detached from "
+msgstr ""
+
+#: wt-status.c:1752
 msgid "Not currently on any branch."
 msgstr ""
 
-#: wt-status.c:1767
+#: wt-status.c:1769
 msgid "Initial commit"
 msgstr ""
 
-#: wt-status.c:1768
+#: wt-status.c:1770
 msgid "No commits yet"
 msgstr ""
 
-#: wt-status.c:1782
+#: wt-status.c:1784
 msgid "Untracked files"
 msgstr ""
 
-#: wt-status.c:1784
+#: wt-status.c:1786
 msgid "Ignored files"
 msgstr ""
 
-#: wt-status.c:1788
+#: wt-status.c:1790
 #, c-format
 msgid ""
 "It took %.2f seconds to enumerate untracked files. 'status -uno'\n"
@@ -8891,92 +9165,92 @@ msgid ""
 "new files yourself (see 'git help status')."
 msgstr ""
 
-#: wt-status.c:1794
+#: wt-status.c:1796
 #, c-format
 msgid "Untracked files not listed%s"
 msgstr ""
 
-#: wt-status.c:1796
+#: wt-status.c:1798
 msgid " (use -u option to show untracked files)"
 msgstr ""
 
-#: wt-status.c:1802
+#: wt-status.c:1804
 msgid "No changes"
 msgstr ""
 
-#: wt-status.c:1807
+#: wt-status.c:1809
 #, c-format
 msgid "no changes added to commit (use \"git add\" and/or \"git commit -a\")\n"
 msgstr ""
 
-#: wt-status.c:1811
+#: wt-status.c:1813
 #, c-format
 msgid "no changes added to commit\n"
 msgstr ""
 
-#: wt-status.c:1815
+#: wt-status.c:1817
 #, c-format
 msgid ""
 "nothing added to commit but untracked files present (use \"git add\" to "
 "track)\n"
 msgstr ""
 
-#: wt-status.c:1819
+#: wt-status.c:1821
 #, c-format
 msgid "nothing added to commit but untracked files present\n"
 msgstr ""
 
-#: wt-status.c:1823
+#: wt-status.c:1825
 #, c-format
 msgid "nothing to commit (create/copy files and use \"git add\" to track)\n"
 msgstr ""
 
-#: wt-status.c:1827 wt-status.c:1833
+#: wt-status.c:1829 wt-status.c:1835
 #, c-format
 msgid "nothing to commit\n"
 msgstr ""
 
-#: wt-status.c:1830
+#: wt-status.c:1832
 #, c-format
 msgid "nothing to commit (use -u to show untracked files)\n"
 msgstr ""
 
-#: wt-status.c:1835
+#: wt-status.c:1837
 #, c-format
 msgid "nothing to commit, working tree clean\n"
 msgstr ""
 
-#: wt-status.c:1940
+#: wt-status.c:1942
 msgid "No commits yet on "
 msgstr ""
 
-#: wt-status.c:1944
+#: wt-status.c:1946
 msgid "HEAD (no branch)"
 msgstr ""
 
-#: wt-status.c:1975
+#: wt-status.c:1977
 msgid "different"
 msgstr ""
 
-#: wt-status.c:1977 wt-status.c:1985
+#: wt-status.c:1979 wt-status.c:1987
 msgid "behind "
 msgstr ""
 
-#: wt-status.c:1980 wt-status.c:1983
+#: wt-status.c:1982 wt-status.c:1985
 msgid "ahead "
 msgstr ""
 
 #. TRANSLATORS: the action is e.g. "pull with rebase"
-#: wt-status.c:2505
+#: wt-status.c:2507
 #, c-format
 msgid "cannot %s: You have unstaged changes."
 msgstr ""
 
-#: wt-status.c:2511
+#: wt-status.c:2513
 msgid "additionally, your index contains uncommitted changes."
 msgstr ""
 
-#: wt-status.c:2513
+#: wt-status.c:2515
 #, c-format
 msgid "cannot %s: Your index contains uncommitted changes."
 msgstr ""
@@ -8990,126 +9264,131 @@ msgstr ""
 msgid "git add [<options>] [--] <pathspec>..."
 msgstr ""
 
-#: builtin/add.c:88
+#: builtin/add.c:58
+#, c-format
+msgid "cannot chmod %cx '%s'"
+msgstr ""
+
+#: builtin/add.c:96
 #, c-format
 msgid "unexpected diff status %c"
 msgstr ""
 
-#: builtin/add.c:93 builtin/commit.c:285
+#: builtin/add.c:101 builtin/commit.c:285
 msgid "updating files failed"
 msgstr ""
 
-#: builtin/add.c:103
+#: builtin/add.c:111
 #, c-format
 msgid "remove '%s'\n"
 msgstr ""
 
-#: builtin/add.c:178
+#: builtin/add.c:186
 msgid "Unstaged changes after refreshing the index:"
 msgstr ""
 
-#: builtin/add.c:272 builtin/rev-parse.c:908
+#: builtin/add.c:280 builtin/rev-parse.c:991
 msgid "Could not read the index"
 msgstr ""
 
-#: builtin/add.c:283
+#: builtin/add.c:291
 #, c-format
 msgid "Could not open '%s' for writing."
 msgstr ""
 
-#: builtin/add.c:287
+#: builtin/add.c:295
 msgid "Could not write patch"
 msgstr ""
 
-#: builtin/add.c:290
+#: builtin/add.c:298
 msgid "editing patch failed"
 msgstr ""
 
-#: builtin/add.c:293
+#: builtin/add.c:301
 #, c-format
 msgid "Could not stat '%s'"
 msgstr ""
 
-#: builtin/add.c:295
+#: builtin/add.c:303
 msgid "Empty patch. Aborted."
 msgstr ""
 
-#: builtin/add.c:300
+#: builtin/add.c:308
 #, c-format
 msgid "Could not apply '%s'"
 msgstr ""
 
-#: builtin/add.c:308
+#: builtin/add.c:316
 msgid "The following paths are ignored by one of your .gitignore files:\n"
 msgstr ""
 
-#: builtin/add.c:328 builtin/clean.c:904 builtin/fetch.c:166 builtin/mv.c:124
+#: builtin/add.c:336 builtin/clean.c:904 builtin/fetch.c:169 builtin/mv.c:124
 #: builtin/prune-packed.c:14 builtin/pull.c:204 builtin/push.c:559
 #: builtin/remote.c:1427 builtin/rm.c:242 builtin/send-pack.c:190
 msgid "dry run"
 msgstr ""
 
-#: builtin/add.c:331
+#: builtin/add.c:339
 msgid "interactive picking"
 msgstr ""
 
-#: builtin/add.c:332 builtin/checkout.c:1547 builtin/reset.c:308
+#: builtin/add.c:340 builtin/checkout.c:1546 builtin/reset.c:308
 msgid "select hunks interactively"
 msgstr ""
 
-#: builtin/add.c:333
+#: builtin/add.c:341
 msgid "edit current diff and apply"
 msgstr ""
 
-#: builtin/add.c:334
+#: builtin/add.c:342
 msgid "allow adding otherwise ignored files"
 msgstr ""
 
-#: builtin/add.c:335
+#: builtin/add.c:343
 msgid "update tracked files"
 msgstr ""
 
-#: builtin/add.c:336
+#: builtin/add.c:344
 msgid "renormalize EOL of tracked files (implies -u)"
 msgstr ""
 
-#: builtin/add.c:337
+#: builtin/add.c:345
 msgid "record only the fact that the path will be added later"
 msgstr ""
 
-#: builtin/add.c:338
+#: builtin/add.c:346
 msgid "add changes from all tracked and untracked files"
 msgstr ""
 
-#: builtin/add.c:341
+#: builtin/add.c:349
 msgid "ignore paths removed in the working tree (same as --no-all)"
 msgstr ""
 
-#: builtin/add.c:343
+#: builtin/add.c:351
 msgid "don't add, only refresh the index"
 msgstr ""
 
-#: builtin/add.c:344
+#: builtin/add.c:352
 msgid "just skip files which cannot be added because of errors"
 msgstr ""
 
-#: builtin/add.c:345
+#: builtin/add.c:353
 msgid "check if - even missing - files are ignored in dry run"
 msgstr ""
 
-#: builtin/add.c:347 builtin/update-index.c:1004
+#: builtin/add.c:355 builtin/update-index.c:1004
 msgid "override the executable bit of the listed files"
 msgstr ""
 
-#: builtin/add.c:349
+#: builtin/add.c:357
 msgid "warn when adding an embedded repository"
 msgstr ""
 
-#: builtin/add.c:351
+#: builtin/add.c:359
 msgid "backend for `git stash -p`"
 msgstr ""
 
-#: builtin/add.c:369
+#: builtin/add.c:377
 #, c-format
 msgid ""
 "You've added another git repository inside your current repository.\n"
@@ -9127,59 +9406,59 @@ msgid ""
 "See \"git help submodule\" for more information."
 msgstr ""
 
-#: builtin/add.c:397
+#: builtin/add.c:405
 #, c-format
 msgid "adding embedded git repository: %s"
 msgstr ""
 
-#: builtin/add.c:416
+#: builtin/add.c:424
 msgid ""
 "Use -f if you really want to add them.\n"
 "Turn this message off by running\n"
 "\"git config advice.addIgnoredFile false\""
 msgstr ""
 
-#: builtin/add.c:425
+#: builtin/add.c:433
 msgid "adding files failed"
 msgstr ""
 
-#: builtin/add.c:453 builtin/commit.c:345
+#: builtin/add.c:461 builtin/commit.c:345
 msgid "--pathspec-from-file is incompatible with --interactive/--patch"
 msgstr ""
 
-#: builtin/add.c:470
+#: builtin/add.c:478
 msgid "--pathspec-from-file is incompatible with --edit"
 msgstr ""
 
-#: builtin/add.c:482
+#: builtin/add.c:490
 msgid "-A and -u are mutually incompatible"
 msgstr ""
 
-#: builtin/add.c:485
+#: builtin/add.c:493
 msgid "Option --ignore-missing can only be used together with --dry-run"
 msgstr ""
 
-#: builtin/add.c:489
+#: builtin/add.c:497
 #, c-format
 msgid "--chmod param '%s' must be either -x or +x"
 msgstr ""
 
-#: builtin/add.c:507 builtin/checkout.c:1715 builtin/commit.c:351
-#: builtin/reset.c:328 builtin/rm.c:272 builtin/stash.c:1502
+#: builtin/add.c:515 builtin/checkout.c:1714 builtin/commit.c:351
+#: builtin/reset.c:328 builtin/rm.c:272 builtin/stash.c:1569
 msgid "--pathspec-from-file is incompatible with pathspec arguments"
 msgstr ""
 
-#: builtin/add.c:514 builtin/checkout.c:1727 builtin/commit.c:357
-#: builtin/reset.c:334 builtin/rm.c:278 builtin/stash.c:1508
+#: builtin/add.c:522 builtin/checkout.c:1726 builtin/commit.c:357
+#: builtin/reset.c:334 builtin/rm.c:278 builtin/stash.c:1575
 msgid "--pathspec-file-nul requires --pathspec-from-file"
 msgstr ""
 
-#: builtin/add.c:518
+#: builtin/add.c:526
 #, c-format
 msgid "Nothing specified, nothing added.\n"
 msgstr ""
 
-#: builtin/add.c:520
+#: builtin/add.c:528
 msgid ""
 "Maybe you wanted to say 'git add .'?\n"
 "Turn this message off by running\n"
@@ -9414,7 +9693,7 @@ msgid "allow fall back on 3way merging if needed"
 msgstr ""
 
 #: builtin/am.c:2225 builtin/init-db.c:560 builtin/prune-packed.c:16
-#: builtin/repack.c:335 builtin/stash.c:815
+#: builtin/repack.c:334 builtin/stash.c:882
 msgid "be quiet"
 msgstr ""
 
@@ -9457,17 +9736,17 @@ msgid "pass it through git-apply"
 msgstr ""
 
 #: builtin/am.c:2263 builtin/commit.c:1395 builtin/fmt-merge-msg.c:17
-#: builtin/fmt-merge-msg.c:20 builtin/grep.c:903 builtin/merge.c:260
+#: builtin/fmt-merge-msg.c:20 builtin/grep.c:904 builtin/merge.c:261
 #: builtin/pull.c:141 builtin/pull.c:200 builtin/pull.c:217
-#: builtin/rebase.c:1341 builtin/repack.c:346 builtin/repack.c:350
-#: builtin/repack.c:352 builtin/show-branch.c:650 builtin/show-ref.c:172
-#: builtin/tag.c:404 parse-options.h:154 parse-options.h:175
+#: builtin/rebase.c:1347 builtin/repack.c:345 builtin/repack.c:349
+#: builtin/repack.c:351 builtin/show-branch.c:650 builtin/show-ref.c:172
+#: builtin/tag.c:436 parse-options.h:154 parse-options.h:175
 #: parse-options.h:316
 msgid "n"
 msgstr ""
 
-#: builtin/am.c:2269 builtin/branch.c:661 builtin/bugreport.c:136
-#: builtin/for-each-ref.c:38 builtin/replace.c:556 builtin/tag.c:438
+#: builtin/am.c:2269 builtin/branch.c:670 builtin/bugreport.c:136
+#: builtin/for-each-ref.c:38 builtin/replace.c:556 builtin/tag.c:470
 #: builtin/verify-tag.c:38
 msgid "format"
 msgstr ""
@@ -9493,11 +9772,11 @@ msgid "skip the current patch"
 msgstr ""
 
 #: builtin/am.c:2287
-msgid "restore the original branch and abort the patching operation."
+msgid "restore the original branch and abort the patching operation"
 msgstr ""
 
 #: builtin/am.c:2290
-msgid "abort the patching operation but keep HEAD where it is."
+msgid "abort the patching operation but keep HEAD where it is"
 msgstr ""
 
 #: builtin/am.c:2294
@@ -9513,12 +9792,12 @@ msgid "use current timestamp for author date"
 msgstr ""
 
 #: builtin/am.c:2303 builtin/commit-tree.c:120 builtin/commit.c:1515
-#: builtin/merge.c:297 builtin/pull.c:175 builtin/rebase.c:536
-#: builtin/rebase.c:1394 builtin/revert.c:117 builtin/tag.c:419
+#: builtin/merge.c:298 builtin/pull.c:175 builtin/rebase.c:538
+#: builtin/rebase.c:1400 builtin/revert.c:117 builtin/tag.c:451
 msgid "key-id"
 msgstr ""
 
-#: builtin/am.c:2304 builtin/rebase.c:537 builtin/rebase.c:1395
+#: builtin/am.c:2304 builtin/rebase.c:539 builtin/rebase.c:1401
 msgid "GPG-sign commits"
 msgstr ""
 
@@ -9595,123 +9874,115 @@ msgid "git bisect--helper --bisect-reset [<commit>]"
 msgstr ""
 
 #: builtin/bisect--helper.c:24
-msgid ""
-"git bisect--helper --bisect-write [--no-log] <state> <revision> <good_term> "
-"<bad_term>"
-msgstr ""
-
-#: builtin/bisect--helper.c:25
-msgid ""
-"git bisect--helper --bisect-check-and-set-terms <command> <good_term> "
-"<bad_term>"
-msgstr ""
-
-#: builtin/bisect--helper.c:26
 msgid "git bisect--helper --bisect-next-check <good_term> <bad_term> [<term>]"
 msgstr ""
 
-#: builtin/bisect--helper.c:27
+#: builtin/bisect--helper.c:25
 msgid ""
 "git bisect--helper --bisect-terms [--term-good | --term-old | --term-bad | --"
 "term-new]"
 msgstr ""
 
-#: builtin/bisect--helper.c:28
+#: builtin/bisect--helper.c:26
 msgid ""
 "git bisect--helper --bisect-start [--term-{new,bad}=<term> --term-{old,good}"
 "=<term>] [--no-checkout] [--first-parent] [<bad> [<good>...]] [--] "
 "[<paths>...]"
 msgstr ""
 
-#: builtin/bisect--helper.c:30
+#: builtin/bisect--helper.c:28
 msgid "git bisect--helper --bisect-next"
 msgstr ""
 
-#: builtin/bisect--helper.c:31
-msgid "git bisect--helper --bisect-auto-next"
-msgstr ""
-
-#: builtin/bisect--helper.c:32
+#: builtin/bisect--helper.c:29
 msgid "git bisect--helper --bisect-state (bad|new) [<rev>]"
 msgstr ""
 
-#: builtin/bisect--helper.c:33
+#: builtin/bisect--helper.c:30
 msgid "git bisect--helper --bisect-state (good|old) [<rev>...]"
 msgstr ""
 
-#: builtin/bisect--helper.c:108
+#: builtin/bisect--helper.c:31
+msgid "git bisect--helper --bisect-replay <filename>"
+msgstr ""
+
+#: builtin/bisect--helper.c:32
+msgid "git bisect--helper --bisect-skip [(<rev>|<range>)...]"
+msgstr ""
+
+#: builtin/bisect--helper.c:107
 #, c-format
 msgid "cannot open file '%s' in mode '%s'"
 msgstr ""
 
-#: builtin/bisect--helper.c:115
+#: builtin/bisect--helper.c:114
 #, c-format
 msgid "could not write to file '%s'"
 msgstr ""
 
-#: builtin/bisect--helper.c:154
+#: builtin/bisect--helper.c:153
 #, c-format
 msgid "'%s' is not a valid term"
 msgstr ""
 
-#: builtin/bisect--helper.c:158
+#: builtin/bisect--helper.c:157
 #, c-format
 msgid "can't use the builtin command '%s' as a term"
 msgstr ""
 
-#: builtin/bisect--helper.c:168
+#: builtin/bisect--helper.c:167
 #, c-format
 msgid "can't change the meaning of the term '%s'"
 msgstr ""
 
-#: builtin/bisect--helper.c:178
+#: builtin/bisect--helper.c:177
 msgid "please use two different terms"
 msgstr ""
 
-#: builtin/bisect--helper.c:194
+#: builtin/bisect--helper.c:193
 #, c-format
 msgid "We are not bisecting.\n"
 msgstr ""
 
-#: builtin/bisect--helper.c:202
+#: builtin/bisect--helper.c:201
 #, c-format
 msgid "'%s' is not a valid commit"
 msgstr ""
 
-#: builtin/bisect--helper.c:211
+#: builtin/bisect--helper.c:210
 #, c-format
 msgid ""
 "could not check out original HEAD '%s'. Try 'git bisect reset <commit>'."
 msgstr ""
 
-#: builtin/bisect--helper.c:255
+#: builtin/bisect--helper.c:254
 #, c-format
 msgid "Bad bisect_write argument: %s"
 msgstr ""
 
-#: builtin/bisect--helper.c:260
+#: builtin/bisect--helper.c:259
 #, c-format
 msgid "couldn't get the oid of the rev '%s'"
 msgstr ""
 
-#: builtin/bisect--helper.c:272
+#: builtin/bisect--helper.c:271
 #, c-format
 msgid "couldn't open the file '%s'"
 msgstr ""
 
-#: builtin/bisect--helper.c:298
+#: builtin/bisect--helper.c:297
 #, c-format
 msgid "Invalid command: you're currently in a %s/%s bisect"
 msgstr ""
 
-#: builtin/bisect--helper.c:325
+#: builtin/bisect--helper.c:324
 #, c-format
 msgid ""
 "You need to give me at least one %s and %s revision.\n"
 "You can use \"git bisect %s\" and \"git bisect %s\" for that."
 msgstr ""
 
-#: builtin/bisect--helper.c:329
+#: builtin/bisect--helper.c:328
 #, c-format
 msgid ""
 "You need to start by \"git bisect start\".\n"
@@ -9719,7 +9990,7 @@ msgid ""
 "You can use \"git bisect %s\" and \"git bisect %s\" for that."
 msgstr ""
 
-#: builtin/bisect--helper.c:349
+#: builtin/bisect--helper.c:348
 #, c-format
 msgid "bisecting only with a %s commit"
 msgstr ""
@@ -9728,74 +9999,74 @@ msgstr ""
 #. translation. The program will only accept English input
 #. at this point.
 #.
-#: builtin/bisect--helper.c:357
+#: builtin/bisect--helper.c:356
 msgid "Are you sure [Y/n]? "
 msgstr ""
 
-#: builtin/bisect--helper.c:418
+#: builtin/bisect--helper.c:417
 msgid "no terms defined"
 msgstr ""
 
-#: builtin/bisect--helper.c:421
+#: builtin/bisect--helper.c:420
 #, c-format
 msgid ""
 "Your current terms are %s for the old state\n"
 "and %s for the new state.\n"
 msgstr ""
 
-#: builtin/bisect--helper.c:431
+#: builtin/bisect--helper.c:430
 #, c-format
 msgid ""
 "invalid argument %s for 'git bisect terms'.\n"
 "Supported options are: --term-good|--term-old and --term-bad|--term-new."
 msgstr ""
 
-#: builtin/bisect--helper.c:498
+#: builtin/bisect--helper.c:497 builtin/bisect--helper.c:1014
 msgid "revision walk setup failed\n"
 msgstr ""
 
-#: builtin/bisect--helper.c:520
+#: builtin/bisect--helper.c:519
 #, c-format
 msgid "could not open '%s' for appending"
 msgstr ""
 
-#: builtin/bisect--helper.c:639 builtin/bisect--helper.c:652
+#: builtin/bisect--helper.c:638 builtin/bisect--helper.c:651
 msgid "'' is not a valid term"
 msgstr ""
 
-#: builtin/bisect--helper.c:662
+#: builtin/bisect--helper.c:661
 #, c-format
 msgid "unrecognized option: '%s'"
 msgstr ""
 
-#: builtin/bisect--helper.c:666
+#: builtin/bisect--helper.c:665
 #, c-format
 msgid "'%s' does not appear to be a valid revision"
 msgstr ""
 
-#: builtin/bisect--helper.c:697
+#: builtin/bisect--helper.c:696
 msgid "bad HEAD - I need a HEAD"
 msgstr ""
 
-#: builtin/bisect--helper.c:712
+#: builtin/bisect--helper.c:711
 #, c-format
 msgid "checking out '%s' failed. Try 'git bisect start <valid-branch>'."
 msgstr ""
 
-#: builtin/bisect--helper.c:733
+#: builtin/bisect--helper.c:732
 msgid "won't bisect on cg-seek'ed tree"
 msgstr ""
 
-#: builtin/bisect--helper.c:736
+#: builtin/bisect--helper.c:735
 msgid "bad HEAD - strange symbolic ref"
 msgstr ""
 
-#: builtin/bisect--helper.c:756
+#: builtin/bisect--helper.c:755
 #, c-format
 msgid "invalid ref: '%s'"
 msgstr ""
 
-#: builtin/bisect--helper.c:814
+#: builtin/bisect--helper.c:813
 msgid "You need to start by \"git bisect start\"\n"
 msgstr ""
 
@@ -9803,90 +10074,100 @@ msgstr ""
 #. translation. The program will only accept English input
 #. at this point.
 #.
-#: builtin/bisect--helper.c:825
+#: builtin/bisect--helper.c:824
 msgid "Do you want me to do it for you [Y/n]? "
 msgstr ""
 
-#: builtin/bisect--helper.c:843
+#: builtin/bisect--helper.c:842
 msgid "Please call `--bisect-state` with at least one argument"
 msgstr ""
 
-#: builtin/bisect--helper.c:856
+#: builtin/bisect--helper.c:855
 #, c-format
 msgid "'git bisect %s' can take only one argument."
 msgstr ""
 
-#: builtin/bisect--helper.c:868 builtin/bisect--helper.c:879
+#: builtin/bisect--helper.c:867 builtin/bisect--helper.c:878
 #, c-format
 msgid "Bad rev input: %s"
 msgstr ""
 
-#: builtin/bisect--helper.c:924
-msgid "reset the bisection state"
+#: builtin/bisect--helper.c:912
+msgid "We are not bisecting."
+msgstr ""
+
+#: builtin/bisect--helper.c:962
+#, c-format
+msgid "'%s'?? what are you talking about?"
 msgstr ""
 
-#: builtin/bisect--helper.c:926
-msgid "write out the bisection state in BISECT_LOG"
+#: builtin/bisect--helper.c:974
+#, c-format
+msgid "cannot read file '%s' for replaying"
 msgstr ""
 
-#: builtin/bisect--helper.c:928
-msgid "check and set terms in a bisection state"
+#: builtin/bisect--helper.c:1047
+msgid "reset the bisection state"
 msgstr ""
 
-#: builtin/bisect--helper.c:930
+#: builtin/bisect--helper.c:1049
 msgid "check whether bad or good terms exist"
 msgstr ""
 
-#: builtin/bisect--helper.c:932
+#: builtin/bisect--helper.c:1051
 msgid "print out the bisect terms"
 msgstr ""
 
-#: builtin/bisect--helper.c:934
+#: builtin/bisect--helper.c:1053
 msgid "start the bisect session"
 msgstr ""
 
-#: builtin/bisect--helper.c:936
+#: builtin/bisect--helper.c:1055
 msgid "find the next bisection commit"
 msgstr ""
 
-#: builtin/bisect--helper.c:938
-msgid "verify the next bisection state then checkout the next bisection commit"
+#: builtin/bisect--helper.c:1057
+msgid "mark the state of ref (or refs)"
 msgstr ""
 
-#: builtin/bisect--helper.c:940
-msgid "mark the state of ref (or refs)"
+#: builtin/bisect--helper.c:1059
+msgid "list the bisection steps so far"
 msgstr ""
 
-#: builtin/bisect--helper.c:942
-msgid "no log for BISECT_WRITE"
+#: builtin/bisect--helper.c:1061
+msgid "replay the bisection process from the given file"
 msgstr ""
 
-#: builtin/bisect--helper.c:957
-msgid "--bisect-reset requires either no argument or a commit"
+#: builtin/bisect--helper.c:1063
+msgid "skip some commits for checkout"
 msgstr ""
 
-#: builtin/bisect--helper.c:961
-msgid "--bisect-write requires either 4 or 5 arguments"
+#: builtin/bisect--helper.c:1065
+msgid "no log for BISECT_WRITE"
 msgstr ""
 
-#: builtin/bisect--helper.c:967
-msgid "--check-and-set-terms requires 3 arguments"
+#: builtin/bisect--helper.c:1080
+msgid "--bisect-reset requires either no argument or a commit"
 msgstr ""
 
-#: builtin/bisect--helper.c:973
+#: builtin/bisect--helper.c:1085
 msgid "--bisect-next-check requires 2 or 3 arguments"
 msgstr ""
 
-#: builtin/bisect--helper.c:979
+#: builtin/bisect--helper.c:1091
 msgid "--bisect-terms requires 0 or 1 argument"
 msgstr ""
 
-#: builtin/bisect--helper.c:988
+#: builtin/bisect--helper.c:1100
 msgid "--bisect-next requires 0 arguments"
 msgstr ""
 
-#: builtin/bisect--helper.c:994
-msgid "--bisect-auto-next requires 0 arguments"
+#: builtin/bisect--helper.c:1111
+msgid "--bisect-log requires 0 arguments"
+msgstr ""
+
+#: builtin/bisect--helper.c:1116
+msgid "no logfile given"
 msgstr ""
 
 #: builtin/blame.c:32
@@ -9906,137 +10187,140 @@ msgstr ""
 msgid "must end with a color"
 msgstr ""
 
-#: builtin/blame.c:730
+#: builtin/blame.c:728
 #, c-format
 msgid "invalid color '%s' in color.blame.repeatedLines"
 msgstr ""
 
-#: builtin/blame.c:748
+#: builtin/blame.c:746
 msgid "invalid value for blame.coloring"
 msgstr ""
 
-#: builtin/blame.c:847
+#: builtin/blame.c:845
 #, c-format
 msgid "cannot find revision %s to ignore"
 msgstr ""
 
+#: builtin/blame.c:867
+msgid "show blame entries as we find them, incrementally"
+msgstr ""
+
+#: builtin/blame.c:868
+msgid "do not show object names of boundary commits (Default: off)"
+msgstr ""
+
 #: builtin/blame.c:869
-msgid "Show blame entries as we find them, incrementally"
+msgid "do not treat root commits as boundaries (Default: off)"
 msgstr ""
 
 #: builtin/blame.c:870
-msgid "Do not show object names of boundary commits (Default: off)"
+msgid "show work cost statistics"
 msgstr ""
 
-#: builtin/blame.c:871
-msgid "Do not treat root commits as boundaries (Default: off)"
+#: builtin/blame.c:871 builtin/checkout.c:1503 builtin/clone.c:92
+#: builtin/commit-graph.c:84 builtin/commit-graph.c:222 builtin/fetch.c:175
+#: builtin/merge.c:297 builtin/multi-pack-index.c:27 builtin/pull.c:119
+#: builtin/push.c:575 builtin/send-pack.c:198
+msgid "force progress reporting"
 msgstr ""
 
 #: builtin/blame.c:872
-msgid "Show work cost statistics"
+msgid "show output score for blame entries"
 msgstr ""
 
 #: builtin/blame.c:873
-msgid "Force progress reporting"
+msgid "show original filename (Default: auto)"
 msgstr ""
 
 #: builtin/blame.c:874
-msgid "Show output score for blame entries"
+msgid "show original linenumber (Default: off)"
 msgstr ""
 
 #: builtin/blame.c:875
-msgid "Show original filename (Default: auto)"
+msgid "show in a format designed for machine consumption"
 msgstr ""
 
 #: builtin/blame.c:876
-msgid "Show original linenumber (Default: off)"
+msgid "show porcelain format with per-line commit information"
 msgstr ""
 
 #: builtin/blame.c:877
-msgid "Show in a format designed for machine consumption"
+msgid "use the same output mode as git-annotate (Default: off)"
 msgstr ""
 
 #: builtin/blame.c:878
-msgid "Show porcelain format with per-line commit information"
+msgid "show raw timestamp (Default: off)"
 msgstr ""
 
 #: builtin/blame.c:879
-msgid "Use the same output mode as git-annotate (Default: off)"
+msgid "show long commit SHA1 (Default: off)"
 msgstr ""
 
 #: builtin/blame.c:880
-msgid "Show raw timestamp (Default: off)"
+msgid "suppress author name and timestamp (Default: off)"
 msgstr ""
 
 #: builtin/blame.c:881
-msgid "Show long commit SHA1 (Default: off)"
+msgid "show author email instead of name (Default: off)"
 msgstr ""
 
 #: builtin/blame.c:882
-msgid "Suppress author name and timestamp (Default: off)"
+msgid "ignore whitespace differences"
 msgstr ""
 
-#: builtin/blame.c:883
-msgid "Show author email instead of name (Default: off)"
+#: builtin/blame.c:883 builtin/log.c:1812
+msgid "rev"
 msgstr ""
 
-#: builtin/blame.c:884
-msgid "Ignore whitespace differences"
+#: builtin/blame.c:883
+msgid "ignore <rev> when blaming"
 msgstr ""
 
-#: builtin/blame.c:885 builtin/log.c:1813
-msgid "rev"
+#: builtin/blame.c:884
+msgid "ignore revisions from <file>"
 msgstr ""
 
 #: builtin/blame.c:885
-msgid "Ignore <rev> when blaming"
+msgid "color redundant metadata from previous line differently"
 msgstr ""
 
 #: builtin/blame.c:886
-msgid "Ignore revisions from <file>"
+msgid "color lines by age"
 msgstr ""
 
 #: builtin/blame.c:887
-msgid "color redundant metadata from previous line differently"
+msgid "spend extra cycles to find better match"
 msgstr ""
 
 #: builtin/blame.c:888
-msgid "color lines by age"
+msgid "use revisions from <file> instead of calling git-rev-list"
 msgstr ""
 
 #: builtin/blame.c:889
-msgid "Spend extra cycles to find better match"
-msgstr ""
-
-#: builtin/blame.c:890
-msgid "Use revisions from <file> instead of calling git-rev-list"
-msgstr ""
-
-#: builtin/blame.c:891
-msgid "Use <file>'s contents as the final image"
+msgid "use <file>'s contents as the final image"
 msgstr ""
 
-#: builtin/blame.c:892 builtin/blame.c:893
+#: builtin/blame.c:890 builtin/blame.c:891
 msgid "score"
 msgstr ""
 
-#: builtin/blame.c:892
-msgid "Find line copies within and across files"
+#: builtin/blame.c:890
+msgid "find line copies within and across files"
 msgstr ""
 
-#: builtin/blame.c:893
-msgid "Find line movements within and across files"
+#: builtin/blame.c:891
+msgid "find line movements within and across files"
 msgstr ""
 
-#: builtin/blame.c:894
+#: builtin/blame.c:892
 msgid "range"
 msgstr ""
 
-#: builtin/blame.c:895
-msgid "Process only line range <start>,<end> or function :<funcname>"
+#: builtin/blame.c:893
+msgid "process only line range <start>,<end> or function :<funcname>"
 msgstr ""
 
-#: builtin/blame.c:947
+#: builtin/blame.c:945
 msgid "--progress can't be used with --incremental or porcelain formats"
 msgstr ""
 
@@ -10048,18 +10332,18 @@ msgstr ""
 #. your language may need more or fewer display
 #. columns.
 #.
-#: builtin/blame.c:998
+#: builtin/blame.c:996
 msgid "4 years, 11 months ago"
 msgstr ""
 
-#: builtin/blame.c:1114
+#: builtin/blame.c:1112
 #, c-format
 msgid "file %s has only %lu line"
 msgid_plural "file %s has only %lu lines"
 msgstr[0] ""
 msgstr[1] ""
 
-#: builtin/blame.c:1159
+#: builtin/blame.c:1157
 msgid "Blaming lines"
 msgstr ""
 
@@ -10121,117 +10405,107 @@ msgstr ""
 msgid "Update of config-file failed"
 msgstr ""
 
-#: builtin/branch.c:220
+#: builtin/branch.c:223
 msgid "cannot use -a with -d"
 msgstr ""
 
-#: builtin/branch.c:226
+#: builtin/branch.c:230
 msgid "Couldn't look up commit object for HEAD"
 msgstr ""
 
-#: builtin/branch.c:240
+#: builtin/branch.c:244
 #, c-format
 msgid "Cannot delete branch '%s' checked out at '%s'"
 msgstr ""
 
-#: builtin/branch.c:255
+#: builtin/branch.c:259
 #, c-format
 msgid "remote-tracking branch '%s' not found."
 msgstr ""
 
-#: builtin/branch.c:256
+#: builtin/branch.c:260
 #, c-format
 msgid "branch '%s' not found."
 msgstr ""
 
-#: builtin/branch.c:271
-#, c-format
-msgid "Error deleting remote-tracking branch '%s'"
-msgstr ""
-
-#: builtin/branch.c:272
-#, c-format
-msgid "Error deleting branch '%s'"
-msgstr ""
-
-#: builtin/branch.c:279
+#: builtin/branch.c:291
 #, c-format
 msgid "Deleted remote-tracking branch %s (was %s).\n"
 msgstr ""
 
-#: builtin/branch.c:280
+#: builtin/branch.c:292
 #, c-format
 msgid "Deleted branch %s (was %s).\n"
 msgstr ""
 
-#: builtin/branch.c:429 builtin/tag.c:61
+#: builtin/branch.c:438 builtin/tag.c:61
 msgid "unable to parse format string"
 msgstr ""
 
-#: builtin/branch.c:460
+#: builtin/branch.c:469
 msgid "could not resolve HEAD"
 msgstr ""
 
-#: builtin/branch.c:466
+#: builtin/branch.c:475
 #, c-format
 msgid "HEAD (%s) points outside of refs/heads/"
 msgstr ""
 
-#: builtin/branch.c:481
+#: builtin/branch.c:490
 #, c-format
 msgid "Branch %s is being rebased at %s"
 msgstr ""
 
-#: builtin/branch.c:485
+#: builtin/branch.c:494
 #, c-format
 msgid "Branch %s is being bisected at %s"
 msgstr ""
 
-#: builtin/branch.c:502
+#: builtin/branch.c:511
 msgid "cannot copy the current branch while not on any."
 msgstr ""
 
-#: builtin/branch.c:504
+#: builtin/branch.c:513
 msgid "cannot rename the current branch while not on any."
 msgstr ""
 
-#: builtin/branch.c:515
+#: builtin/branch.c:524
 #, c-format
 msgid "Invalid branch name: '%s'"
 msgstr ""
 
-#: builtin/branch.c:544
+#: builtin/branch.c:553
 msgid "Branch rename failed"
 msgstr ""
 
-#: builtin/branch.c:546
+#: builtin/branch.c:555
 msgid "Branch copy failed"
 msgstr ""
 
-#: builtin/branch.c:550
+#: builtin/branch.c:559
 #, c-format
 msgid "Created a copy of a misnamed branch '%s'"
 msgstr ""
 
-#: builtin/branch.c:553
+#: builtin/branch.c:562
 #, c-format
 msgid "Renamed a misnamed branch '%s' away"
 msgstr ""
 
-#: builtin/branch.c:559
+#: builtin/branch.c:568
 #, c-format
 msgid "Branch renamed to %s, but HEAD is not updated!"
 msgstr ""
 
-#: builtin/branch.c:568
+#: builtin/branch.c:577
 msgid "Branch is renamed, but update of config-file failed"
 msgstr ""
 
-#: builtin/branch.c:570
+#: builtin/branch.c:579
 msgid "Branch is copied, but update of config-file failed"
 msgstr ""
 
-#: builtin/branch.c:586
+#: builtin/branch.c:595
 #, c-format
 msgid ""
 "Please edit the description for the branch\n"
@@ -10239,215 +10513,215 @@ msgid ""
 "Lines starting with '%c' will be stripped.\n"
 msgstr ""
 
-#: builtin/branch.c:620
+#: builtin/branch.c:629
 msgid "Generic options"
 msgstr ""
 
-#: builtin/branch.c:622
+#: builtin/branch.c:631
 msgid "show hash and subject, give twice for upstream branch"
 msgstr ""
 
-#: builtin/branch.c:623
+#: builtin/branch.c:632
 msgid "suppress informational messages"
 msgstr ""
 
-#: builtin/branch.c:624
+#: builtin/branch.c:633
 msgid "set up tracking mode (see git-pull(1))"
 msgstr ""
 
-#: builtin/branch.c:626
+#: builtin/branch.c:635
 msgid "do not use"
 msgstr ""
 
-#: builtin/branch.c:628 builtin/rebase.c:532
+#: builtin/branch.c:637 builtin/rebase.c:534
 msgid "upstream"
 msgstr ""
 
-#: builtin/branch.c:628
+#: builtin/branch.c:637
 msgid "change the upstream info"
 msgstr ""
 
-#: builtin/branch.c:629
+#: builtin/branch.c:638
 msgid "unset the upstream info"
 msgstr ""
 
-#: builtin/branch.c:630
+#: builtin/branch.c:639
 msgid "use colored output"
 msgstr ""
 
-#: builtin/branch.c:631
+#: builtin/branch.c:640
 msgid "act on remote-tracking branches"
 msgstr ""
 
-#: builtin/branch.c:633 builtin/branch.c:635
+#: builtin/branch.c:642 builtin/branch.c:644
 msgid "print only branches that contain the commit"
 msgstr ""
 
-#: builtin/branch.c:634 builtin/branch.c:636
+#: builtin/branch.c:643 builtin/branch.c:645
 msgid "print only branches that don't contain the commit"
 msgstr ""
 
-#: builtin/branch.c:639
+#: builtin/branch.c:648
 msgid "Specific git-branch actions:"
 msgstr ""
 
-#: builtin/branch.c:640
+#: builtin/branch.c:649
 msgid "list both remote-tracking and local branches"
 msgstr ""
 
-#: builtin/branch.c:642
+#: builtin/branch.c:651
 msgid "delete fully merged branch"
 msgstr ""
 
-#: builtin/branch.c:643
+#: builtin/branch.c:652
 msgid "delete branch (even if not merged)"
 msgstr ""
 
-#: builtin/branch.c:644
+#: builtin/branch.c:653
 msgid "move/rename a branch and its reflog"
 msgstr ""
 
-#: builtin/branch.c:645
+#: builtin/branch.c:654
 msgid "move/rename a branch, even if target exists"
 msgstr ""
 
-#: builtin/branch.c:646
+#: builtin/branch.c:655
 msgid "copy a branch and its reflog"
 msgstr ""
 
-#: builtin/branch.c:647
+#: builtin/branch.c:656
 msgid "copy a branch, even if target exists"
 msgstr ""
 
-#: builtin/branch.c:648
+#: builtin/branch.c:657
 msgid "list branch names"
 msgstr ""
 
-#: builtin/branch.c:649
+#: builtin/branch.c:658
 msgid "show current branch name"
 msgstr ""
 
-#: builtin/branch.c:650
+#: builtin/branch.c:659
 msgid "create the branch's reflog"
 msgstr ""
 
-#: builtin/branch.c:652
+#: builtin/branch.c:661
 msgid "edit the description for the branch"
 msgstr ""
 
-#: builtin/branch.c:653
+#: builtin/branch.c:662
 msgid "force creation, move/rename, deletion"
 msgstr ""
 
-#: builtin/branch.c:654
+#: builtin/branch.c:663
 msgid "print only branches that are merged"
 msgstr ""
 
-#: builtin/branch.c:655
+#: builtin/branch.c:664
 msgid "print only branches that are not merged"
 msgstr ""
 
-#: builtin/branch.c:656
+#: builtin/branch.c:665
 msgid "list branches in columns"
 msgstr ""
 
-#: builtin/branch.c:658 builtin/for-each-ref.c:42 builtin/notes.c:415
+#: builtin/branch.c:667 builtin/for-each-ref.c:42 builtin/notes.c:415
 #: builtin/notes.c:418 builtin/notes.c:581 builtin/notes.c:584
-#: builtin/tag.c:434
+#: builtin/tag.c:466
 msgid "object"
 msgstr ""
 
-#: builtin/branch.c:659
+#: builtin/branch.c:668
 msgid "print only branches of the object"
 msgstr ""
 
-#: builtin/branch.c:660 builtin/for-each-ref.c:48 builtin/tag.c:441
+#: builtin/branch.c:669 builtin/for-each-ref.c:48 builtin/tag.c:473
 msgid "sorting and filtering are case insensitive"
 msgstr ""
 
-#: builtin/branch.c:661 builtin/for-each-ref.c:38 builtin/tag.c:439
+#: builtin/branch.c:670 builtin/for-each-ref.c:38 builtin/tag.c:471
 #: builtin/verify-tag.c:38
 msgid "format to use for the output"
 msgstr ""
 
-#: builtin/branch.c:684 builtin/clone.c:790
+#: builtin/branch.c:693 builtin/clone.c:790
 msgid "HEAD not found below refs/heads!"
 msgstr ""
 
-#: builtin/branch.c:708
+#: builtin/branch.c:717
 msgid "--column and --verbose are incompatible"
 msgstr ""
 
-#: builtin/branch.c:723 builtin/branch.c:777 builtin/branch.c:786
+#: builtin/branch.c:732 builtin/branch.c:788 builtin/branch.c:797
 msgid "branch name required"
 msgstr ""
 
-#: builtin/branch.c:753
+#: builtin/branch.c:764
 msgid "Cannot give description to detached HEAD"
 msgstr ""
 
-#: builtin/branch.c:758
+#: builtin/branch.c:769
 msgid "cannot edit description of more than one branch"
 msgstr ""
 
-#: builtin/branch.c:765
+#: builtin/branch.c:776
 #, c-format
 msgid "No commit on branch '%s' yet."
 msgstr ""
 
-#: builtin/branch.c:768
+#: builtin/branch.c:779
 #, c-format
 msgid "No branch named '%s'."
 msgstr ""
 
-#: builtin/branch.c:783
+#: builtin/branch.c:794
 msgid "too many branches for a copy operation"
 msgstr ""
 
-#: builtin/branch.c:792
+#: builtin/branch.c:803
 msgid "too many arguments for a rename operation"
 msgstr ""
 
-#: builtin/branch.c:797
+#: builtin/branch.c:808
 msgid "too many arguments to set new upstream"
 msgstr ""
 
-#: builtin/branch.c:801
+#: builtin/branch.c:812
 #, c-format
 msgid ""
 "could not set upstream of HEAD to %s when it does not point to any branch."
 msgstr ""
 
-#: builtin/branch.c:804 builtin/branch.c:827
+#: builtin/branch.c:815 builtin/branch.c:838
 #, c-format
 msgid "no such branch '%s'"
 msgstr ""
 
-#: builtin/branch.c:808
+#: builtin/branch.c:819
 #, c-format
 msgid "branch '%s' does not exist"
 msgstr ""
 
-#: builtin/branch.c:821
+#: builtin/branch.c:832
 msgid "too many arguments to unset upstream"
 msgstr ""
 
-#: builtin/branch.c:825
+#: builtin/branch.c:836
 msgid "could not unset upstream of HEAD when it does not point to any branch."
 msgstr ""
 
-#: builtin/branch.c:831
+#: builtin/branch.c:842
 #, c-format
 msgid "Branch '%s' has no upstream information"
 msgstr ""
 
-#: builtin/branch.c:841
+#: builtin/branch.c:852
 msgid ""
 "The -a, and -r, options to 'git branch' do not take a branch name.\n"
 "Did you mean to use: -a|-r --list <pattern>?"
 msgstr ""
 
-#: builtin/branch.c:845
+#: builtin/branch.c:856
 msgid ""
 "the '--set-upstream' option is no longer supported. Please use '--track' or "
 "'--set-upstream-to' instead."
@@ -10549,19 +10823,19 @@ msgstr ""
 msgid "git bundle unbundle <file> [<refname>...]"
 msgstr ""
 
-#: builtin/bundle.c:67 builtin/pack-objects.c:3480
+#: builtin/bundle.c:67 builtin/pack-objects.c:3495
 msgid "do not show progress meter"
 msgstr ""
 
-#: builtin/bundle.c:69 builtin/pack-objects.c:3482
+#: builtin/bundle.c:69 builtin/pack-objects.c:3497
 msgid "show progress meter"
 msgstr ""
 
-#: builtin/bundle.c:71 builtin/pack-objects.c:3484
+#: builtin/bundle.c:71 builtin/pack-objects.c:3499
 msgid "show progress meter during object writing phase"
 msgstr ""
 
-#: builtin/bundle.c:74 builtin/pack-objects.c:3487
+#: builtin/bundle.c:74 builtin/pack-objects.c:3502
 msgid "similar to --all-progress when progress meter is shown"
 msgstr ""
 
@@ -10699,8 +10973,8 @@ msgstr ""
 msgid "terminate input and output records by a NUL character"
 msgstr ""
 
-#: builtin/check-ignore.c:21 builtin/checkout.c:1500 builtin/gc.c:541
-#: builtin/worktree.c:561
+#: builtin/check-ignore.c:21 builtin/checkout.c:1499 builtin/gc.c:549
+#: builtin/worktree.c:489
 msgid "suppress progress reporting"
 msgstr ""
 
@@ -10753,54 +11027,54 @@ msgstr ""
 msgid "no contacts specified"
 msgstr ""
 
-#: builtin/checkout-index.c:139
+#: builtin/checkout-index.c:152
 msgid "git checkout-index [<options>] [--] [<file>...]"
 msgstr ""
 
-#: builtin/checkout-index.c:156
+#: builtin/checkout-index.c:169
 msgid "stage should be between 1 and 3 or all"
 msgstr ""
 
-#: builtin/checkout-index.c:173
+#: builtin/checkout-index.c:186
 msgid "check out all files in the index"
 msgstr ""
 
-#: builtin/checkout-index.c:174
+#: builtin/checkout-index.c:187
 msgid "force overwrite of existing files"
 msgstr ""
 
-#: builtin/checkout-index.c:176
+#: builtin/checkout-index.c:189
 msgid "no warning for existing files and files not in index"
 msgstr ""
 
-#: builtin/checkout-index.c:178
+#: builtin/checkout-index.c:191
 msgid "don't checkout new files"
 msgstr ""
 
-#: builtin/checkout-index.c:180
+#: builtin/checkout-index.c:193
 msgid "update stat information in the index file"
 msgstr ""
 
-#: builtin/checkout-index.c:184
+#: builtin/checkout-index.c:197
 msgid "read list of paths from the standard input"
 msgstr ""
 
-#: builtin/checkout-index.c:186
+#: builtin/checkout-index.c:199
 msgid "write the content to temporary files"
 msgstr ""
 
-#: builtin/checkout-index.c:187 builtin/column.c:31
+#: builtin/checkout-index.c:200 builtin/column.c:31
 #: builtin/submodule--helper.c:1824 builtin/submodule--helper.c:1827
 #: builtin/submodule--helper.c:1835 builtin/submodule--helper.c:2333
-#: builtin/worktree.c:757
+#: builtin/worktree.c:717
 msgid "string"
 msgstr ""
 
-#: builtin/checkout-index.c:188
+#: builtin/checkout-index.c:201
 msgid "when creating files, prepend <string>"
 msgstr ""
 
-#: builtin/checkout-index.c:190
+#: builtin/checkout-index.c:203
 msgid "copy out the files from named stage"
 msgstr ""
 
@@ -10902,66 +11176,66 @@ msgstr ""
 msgid "'%s' or '%s' cannot be used with %s"
 msgstr ""
 
-#: builtin/checkout.c:541 builtin/checkout.c:548
+#: builtin/checkout.c:543 builtin/checkout.c:550
 #, c-format
 msgid "path '%s' is unmerged"
 msgstr ""
 
-#: builtin/checkout.c:716
+#: builtin/checkout.c:718
 msgid "you need to resolve your current index first"
 msgstr ""
 
-#: builtin/checkout.c:770
+#: builtin/checkout.c:772
 #, c-format
 msgid ""
 "cannot continue with staged changes in the following files:\n"
 "%s"
 msgstr ""
 
-#: builtin/checkout.c:866
+#: builtin/checkout.c:865
 #, c-format
 msgid "Can not do reflog for '%s': %s\n"
 msgstr ""
 
-#: builtin/checkout.c:908
+#: builtin/checkout.c:907
 msgid "HEAD is now at"
 msgstr ""
 
-#: builtin/checkout.c:912 builtin/clone.c:721 t/helper/test-fast-rebase.c:202
+#: builtin/checkout.c:911 builtin/clone.c:721 t/helper/test-fast-rebase.c:202
 msgid "unable to update HEAD"
 msgstr ""
 
-#: builtin/checkout.c:916
+#: builtin/checkout.c:915
 #, c-format
 msgid "Reset branch '%s'\n"
 msgstr ""
 
-#: builtin/checkout.c:919
+#: builtin/checkout.c:918
 #, c-format
 msgid "Already on '%s'\n"
 msgstr ""
 
-#: builtin/checkout.c:923
+#: builtin/checkout.c:922
 #, c-format
 msgid "Switched to and reset branch '%s'\n"
 msgstr ""
 
-#: builtin/checkout.c:925 builtin/checkout.c:1356
+#: builtin/checkout.c:924 builtin/checkout.c:1355
 #, c-format
 msgid "Switched to a new branch '%s'\n"
 msgstr ""
 
-#: builtin/checkout.c:927
+#: builtin/checkout.c:926
 #, c-format
 msgid "Switched to branch '%s'\n"
 msgstr ""
 
-#: builtin/checkout.c:978
+#: builtin/checkout.c:977
 #, c-format
 msgid " ... and %d more.\n"
 msgstr ""
 
-#: builtin/checkout.c:984
+#: builtin/checkout.c:983
 #, c-format
 msgid ""
 "Warning: you are leaving %d commit behind, not connected to\n"
@@ -10976,7 +11250,7 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
-#: builtin/checkout.c:1003
+#: builtin/checkout.c:1002
 #, c-format
 msgid ""
 "If you want to keep it by creating a new branch, this may be a good time\n"
@@ -10993,26 +11267,26 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
-#: builtin/checkout.c:1038
+#: builtin/checkout.c:1037
 msgid "internal error in revision walk"
 msgstr ""
 
-#: builtin/checkout.c:1042
+#: builtin/checkout.c:1041
 msgid "Previous HEAD position was"
 msgstr ""
 
-#: builtin/checkout.c:1082 builtin/checkout.c:1351
+#: builtin/checkout.c:1081 builtin/checkout.c:1350
 msgid "You are on a branch yet to be born"
 msgstr ""
 
-#: builtin/checkout.c:1164
+#: builtin/checkout.c:1163
 #, c-format
 msgid ""
 "'%s' could be both a local file and a tracking branch.\n"
 "Please use -- (and optionally --no-guess) to disambiguate"
 msgstr ""
 
-#: builtin/checkout.c:1171
+#: builtin/checkout.c:1170
 msgid ""
 "If you meant to check out a remote tracking branch on, e.g. 'origin',\n"
 "you can do so by fully qualifying the name with the --track option:\n"
@@ -11024,287 +11298,280 @@ msgid ""
 "checkout.defaultRemote=origin in your config."
 msgstr ""
 
-#: builtin/checkout.c:1181
+#: builtin/checkout.c:1180
 #, c-format
 msgid "'%s' matched multiple (%d) remote tracking branches"
 msgstr ""
 
-#: builtin/checkout.c:1247
+#: builtin/checkout.c:1246
 msgid "only one reference expected"
 msgstr ""
 
-#: builtin/checkout.c:1264
+#: builtin/checkout.c:1263
 #, c-format
 msgid "only one reference expected, %d given."
 msgstr ""
 
-#: builtin/checkout.c:1310 builtin/worktree.c:342 builtin/worktree.c:510
+#: builtin/checkout.c:1309 builtin/worktree.c:270 builtin/worktree.c:438
 #, c-format
 msgid "invalid reference: %s"
 msgstr ""
 
-#: builtin/checkout.c:1323 builtin/checkout.c:1689
+#: builtin/checkout.c:1322 builtin/checkout.c:1688
 #, c-format
 msgid "reference is not a tree: %s"
 msgstr ""
 
-#: builtin/checkout.c:1370
+#: builtin/checkout.c:1369
 #, c-format
 msgid "a branch is expected, got tag '%s'"
 msgstr ""
 
-#: builtin/checkout.c:1372
+#: builtin/checkout.c:1371
 #, c-format
 msgid "a branch is expected, got remote branch '%s'"
 msgstr ""
 
-#: builtin/checkout.c:1373 builtin/checkout.c:1381
+#: builtin/checkout.c:1372 builtin/checkout.c:1380
 #, c-format
 msgid "a branch is expected, got '%s'"
 msgstr ""
 
-#: builtin/checkout.c:1376
+#: builtin/checkout.c:1375
 #, c-format
 msgid "a branch is expected, got commit '%s'"
 msgstr ""
 
-#: builtin/checkout.c:1392
+#: builtin/checkout.c:1391
 msgid ""
 "cannot switch branch while merging\n"
 "Consider \"git merge --quit\" or \"git worktree add\"."
 msgstr ""
 
-#: builtin/checkout.c:1396
+#: builtin/checkout.c:1395
 msgid ""
 "cannot switch branch in the middle of an am session\n"
 "Consider \"git am --quit\" or \"git worktree add\"."
 msgstr ""
 
-#: builtin/checkout.c:1400
+#: builtin/checkout.c:1399
 msgid ""
 "cannot switch branch while rebasing\n"
 "Consider \"git rebase --quit\" or \"git worktree add\"."
 msgstr ""
 
-#: builtin/checkout.c:1404
+#: builtin/checkout.c:1403
 msgid ""
 "cannot switch branch while cherry-picking\n"
 "Consider \"git cherry-pick --quit\" or \"git worktree add\"."
 msgstr ""
 
-#: builtin/checkout.c:1408
+#: builtin/checkout.c:1407
 msgid ""
 "cannot switch branch while reverting\n"
 "Consider \"git revert --quit\" or \"git worktree add\"."
 msgstr ""
 
-#: builtin/checkout.c:1412
+#: builtin/checkout.c:1411
 msgid "you are switching branch while bisecting"
 msgstr ""
 
-#: builtin/checkout.c:1419
+#: builtin/checkout.c:1418
 msgid "paths cannot be used with switching branches"
 msgstr ""
 
-#: builtin/checkout.c:1422 builtin/checkout.c:1426 builtin/checkout.c:1430
+#: builtin/checkout.c:1421 builtin/checkout.c:1425 builtin/checkout.c:1429
 #, c-format
 msgid "'%s' cannot be used with switching branches"
 msgstr ""
 
-#: builtin/checkout.c:1434 builtin/checkout.c:1437 builtin/checkout.c:1440
-#: builtin/checkout.c:1445 builtin/checkout.c:1450
+#: builtin/checkout.c:1433 builtin/checkout.c:1436 builtin/checkout.c:1439
+#: builtin/checkout.c:1444 builtin/checkout.c:1449
 #, c-format
 msgid "'%s' cannot be used with '%s'"
 msgstr ""
 
-#: builtin/checkout.c:1447
+#: builtin/checkout.c:1446
 #, c-format
 msgid "'%s' cannot take <start-point>"
 msgstr ""
 
-#: builtin/checkout.c:1455
+#: builtin/checkout.c:1454
 #, c-format
 msgid "Cannot switch branch to a non-commit '%s'"
 msgstr ""
 
-#: builtin/checkout.c:1462
+#: builtin/checkout.c:1461
 msgid "missing branch or commit argument"
 msgstr ""
 
-#: builtin/checkout.c:1504 builtin/clone.c:92 builtin/commit-graph.c:84
-#: builtin/commit-graph.c:222 builtin/fetch.c:172 builtin/merge.c:296
-#: builtin/multi-pack-index.c:27 builtin/pull.c:119 builtin/push.c:575
-#: builtin/send-pack.c:198
-msgid "force progress reporting"
-msgstr ""
-
-#: builtin/checkout.c:1505
+#: builtin/checkout.c:1504
 msgid "perform a 3-way merge with the new branch"
 msgstr ""
 
-#: builtin/checkout.c:1506 builtin/log.c:1800 parse-options.h:322
+#: builtin/checkout.c:1505 builtin/log.c:1799 parse-options.h:322
 msgid "style"
 msgstr ""
 
-#: builtin/checkout.c:1507
+#: builtin/checkout.c:1506
 msgid "conflict style (merge or diff3)"
 msgstr ""
 
-#: builtin/checkout.c:1519 builtin/worktree.c:558
+#: builtin/checkout.c:1518 builtin/worktree.c:486
 msgid "detach HEAD at named commit"
 msgstr ""
 
-#: builtin/checkout.c:1520
+#: builtin/checkout.c:1519
 msgid "set upstream info for new branch"
 msgstr ""
 
-#: builtin/checkout.c:1522
+#: builtin/checkout.c:1521
 msgid "force checkout (throw away local modifications)"
 msgstr ""
 
-#: builtin/checkout.c:1524
+#: builtin/checkout.c:1523
 msgid "new-branch"
 msgstr ""
 
-#: builtin/checkout.c:1524
+#: builtin/checkout.c:1523
 msgid "new unparented branch"
 msgstr ""
 
-#: builtin/checkout.c:1526 builtin/merge.c:300
+#: builtin/checkout.c:1525 builtin/merge.c:301
 msgid "update ignored files (default)"
 msgstr ""
 
-#: builtin/checkout.c:1529
+#: builtin/checkout.c:1528
 msgid "do not check if another worktree is holding the given ref"
 msgstr ""
 
-#: builtin/checkout.c:1542
+#: builtin/checkout.c:1541
 msgid "checkout our version for unmerged files"
 msgstr ""
 
-#: builtin/checkout.c:1545
+#: builtin/checkout.c:1544
 msgid "checkout their version for unmerged files"
 msgstr ""
 
-#: builtin/checkout.c:1549
+#: builtin/checkout.c:1548
 msgid "do not limit pathspecs to sparse entries only"
 msgstr ""
 
-#: builtin/checkout.c:1604
+#: builtin/checkout.c:1603
 #, c-format
 msgid "-%c, -%c and --orphan are mutually exclusive"
 msgstr ""
 
-#: builtin/checkout.c:1608
+#: builtin/checkout.c:1607
 msgid "-p and --overlay are mutually exclusive"
 msgstr ""
 
-#: builtin/checkout.c:1645
+#: builtin/checkout.c:1644
 msgid "--track needs a branch name"
 msgstr ""
 
-#: builtin/checkout.c:1650
+#: builtin/checkout.c:1649
 #, c-format
 msgid "missing branch name; try -%c"
 msgstr ""
 
-#: builtin/checkout.c:1682
+#: builtin/checkout.c:1681
 #, c-format
 msgid "could not resolve %s"
 msgstr ""
 
-#: builtin/checkout.c:1698
+#: builtin/checkout.c:1697
 msgid "invalid path specification"
 msgstr ""
 
-#: builtin/checkout.c:1705
+#: builtin/checkout.c:1704
 #, c-format
 msgid "'%s' is not a commit and a branch '%s' cannot be created from it"
 msgstr ""
 
-#: builtin/checkout.c:1709
+#: builtin/checkout.c:1708
 #, c-format
 msgid "git checkout: --detach does not take a path argument '%s'"
 msgstr ""
 
-#: builtin/checkout.c:1718
+#: builtin/checkout.c:1717
 msgid "--pathspec-from-file is incompatible with --detach"
 msgstr ""
 
-#: builtin/checkout.c:1721 builtin/reset.c:325 builtin/stash.c:1499
+#: builtin/checkout.c:1720 builtin/reset.c:325 builtin/stash.c:1566
 msgid "--pathspec-from-file is incompatible with --patch"
 msgstr ""
 
-#: builtin/checkout.c:1734
+#: builtin/checkout.c:1733
 msgid ""
 "git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
 "checking out of the index."
 msgstr ""
 
-#: builtin/checkout.c:1739
+#: builtin/checkout.c:1738
 msgid "you must specify path(s) to restore"
 msgstr ""
 
-#: builtin/checkout.c:1765 builtin/checkout.c:1767 builtin/checkout.c:1816
-#: builtin/checkout.c:1818 builtin/clone.c:122 builtin/remote.c:170
-#: builtin/remote.c:172 builtin/submodule--helper.c:2719 builtin/worktree.c:554
-#: builtin/worktree.c:556
+#: builtin/checkout.c:1764 builtin/checkout.c:1766 builtin/checkout.c:1815
+#: builtin/checkout.c:1817 builtin/clone.c:122 builtin/remote.c:170
+#: builtin/remote.c:172 builtin/submodule--helper.c:2719 builtin/worktree.c:482
+#: builtin/worktree.c:484
 msgid "branch"
 msgstr ""
 
-#: builtin/checkout.c:1766
+#: builtin/checkout.c:1765
 msgid "create and checkout a new branch"
 msgstr ""
 
-#: builtin/checkout.c:1768
+#: builtin/checkout.c:1767
 msgid "create/reset and checkout a branch"
 msgstr ""
 
-#: builtin/checkout.c:1769
+#: builtin/checkout.c:1768
 msgid "create reflog for new branch"
 msgstr ""
 
-#: builtin/checkout.c:1771
+#: builtin/checkout.c:1770
 msgid "second guess 'git checkout <no-such-branch>' (default)"
 msgstr ""
 
-#: builtin/checkout.c:1772
+#: builtin/checkout.c:1771
 msgid "use overlay mode (default)"
 msgstr ""
 
-#: builtin/checkout.c:1817
+#: builtin/checkout.c:1816
 msgid "create and switch to a new branch"
 msgstr ""
 
-#: builtin/checkout.c:1819
+#: builtin/checkout.c:1818
 msgid "create/reset and switch to a branch"
 msgstr ""
 
-#: builtin/checkout.c:1821
+#: builtin/checkout.c:1820
 msgid "second guess 'git switch <no-such-branch>'"
 msgstr ""
 
-#: builtin/checkout.c:1823
+#: builtin/checkout.c:1822
 msgid "throw away local modifications"
 msgstr ""
 
-#: builtin/checkout.c:1857
+#: builtin/checkout.c:1856
 msgid "which tree-ish to checkout from"
 msgstr ""
 
-#: builtin/checkout.c:1859
+#: builtin/checkout.c:1858
 msgid "restore the index"
 msgstr ""
 
-#: builtin/checkout.c:1861
+#: builtin/checkout.c:1860
 msgid "restore the working tree (default)"
 msgstr ""
 
-#: builtin/checkout.c:1863
+#: builtin/checkout.c:1862
 msgid "ignore unmerged entries"
 msgstr ""
 
-#: builtin/checkout.c:1864
+#: builtin/checkout.c:1863
 msgid "use overlay mode"
 msgstr ""
 
@@ -11429,8 +11696,8 @@ msgid "remove whole directories"
 msgstr ""
 
 #: builtin/clean.c:909 builtin/describe.c:565 builtin/describe.c:567
-#: builtin/grep.c:921 builtin/log.c:183 builtin/log.c:185
-#: builtin/ls-files.c:558 builtin/name-rev.c:526 builtin/name-rev.c:528
+#: builtin/grep.c:922 builtin/log.c:184 builtin/log.c:186
+#: builtin/ls-files.c:573 builtin/name-rev.c:526 builtin/name-rev.c:528
 #: builtin/show-ref.c:179
 msgid "pattern"
 msgstr ""
@@ -11522,7 +11789,7 @@ msgid "use --reference only while cloning"
 msgstr ""
 
 #: builtin/clone.c:120 builtin/column.c:27 builtin/init-db.c:563
-#: builtin/merge-file.c:46 builtin/pack-objects.c:3546 builtin/repack.c:358
+#: builtin/merge-file.c:46 builtin/pack-objects.c:3561 builtin/repack.c:357
 msgid "name"
 msgstr ""
 
@@ -11538,7 +11805,7 @@ msgstr ""
 msgid "path to git-upload-pack on the remote"
 msgstr ""
 
-#: builtin/clone.c:126 builtin/fetch.c:173 builtin/grep.c:860
+#: builtin/clone.c:126 builtin/fetch.c:176 builtin/grep.c:861
 #: builtin/pull.c:208
 msgid "depth"
 msgstr ""
@@ -11547,7 +11814,7 @@ msgstr ""
 msgid "create a shallow clone of that depth"
 msgstr ""
 
-#: builtin/clone.c:128 builtin/fetch.c:175 builtin/pack-objects.c:3535
+#: builtin/clone.c:128 builtin/fetch.c:178 builtin/pack-objects.c:3550
 #: builtin/pull.c:211
 msgid "time"
 msgstr ""
@@ -11556,12 +11823,12 @@ msgstr ""
 msgid "create a shallow clone since a specific time"
 msgstr ""
 
-#: builtin/clone.c:130 builtin/fetch.c:177 builtin/fetch.c:200
-#: builtin/pull.c:214 builtin/pull.c:239 builtin/rebase.c:1317
+#: builtin/clone.c:130 builtin/fetch.c:180 builtin/fetch.c:203
+#: builtin/pull.c:214 builtin/pull.c:239 builtin/rebase.c:1323
 msgid "revision"
 msgstr ""
 
-#: builtin/clone.c:131 builtin/fetch.c:178 builtin/pull.c:215
+#: builtin/clone.c:131 builtin/fetch.c:181 builtin/pull.c:215
 msgid "deepen history of shallow clone, excluding rev"
 msgstr ""
 
@@ -11594,22 +11861,22 @@ msgstr ""
 msgid "set config inside the new repository"
 msgstr ""
 
-#: builtin/clone.c:143 builtin/fetch.c:195 builtin/ls-remote.c:76
+#: builtin/clone.c:143 builtin/fetch.c:198 builtin/ls-remote.c:77
 #: builtin/pull.c:230 builtin/push.c:584 builtin/send-pack.c:196
 msgid "server-specific"
 msgstr ""
 
-#: builtin/clone.c:143 builtin/fetch.c:195 builtin/ls-remote.c:76
+#: builtin/clone.c:143 builtin/fetch.c:198 builtin/ls-remote.c:77
 #: builtin/pull.c:231 builtin/push.c:584 builtin/send-pack.c:197
 msgid "option to transmit"
 msgstr ""
 
-#: builtin/clone.c:144 builtin/fetch.c:196 builtin/pull.c:234
+#: builtin/clone.c:144 builtin/fetch.c:199 builtin/pull.c:234
 #: builtin/push.c:585
 msgid "use IPv4 addresses only"
 msgstr ""
 
-#: builtin/clone.c:146 builtin/fetch.c:198 builtin/pull.c:237
+#: builtin/clone.c:146 builtin/fetch.c:201 builtin/pull.c:237
 #: builtin/push.c:587
 msgid "use IPv6 addresses only"
 msgstr ""
@@ -11704,110 +11971,110 @@ msgstr ""
 msgid "cannot unlink temporary alternates file"
 msgstr ""
 
-#: builtin/clone.c:992 builtin/receive-pack.c:2493
+#: builtin/clone.c:993 builtin/receive-pack.c:2493
 msgid "Too many arguments."
 msgstr ""
 
-#: builtin/clone.c:996
+#: builtin/clone.c:997
 msgid "You must specify a repository to clone."
 msgstr ""
 
-#: builtin/clone.c:1009
+#: builtin/clone.c:1010
 #, c-format
 msgid "--bare and --origin %s options are incompatible."
 msgstr ""
 
-#: builtin/clone.c:1012
+#: builtin/clone.c:1013
 msgid "--bare and --separate-git-dir are incompatible."
 msgstr ""
 
-#: builtin/clone.c:1025
+#: builtin/clone.c:1026
 #, c-format
 msgid "repository '%s' does not exist"
 msgstr ""
 
-#: builtin/clone.c:1029 builtin/fetch.c:1841
+#: builtin/clone.c:1030 builtin/fetch.c:1951
 #, c-format
 msgid "depth %s is not a positive number"
 msgstr ""
 
-#: builtin/clone.c:1039
+#: builtin/clone.c:1040
 #, c-format
 msgid "destination path '%s' already exists and is not an empty directory."
 msgstr ""
 
-#: builtin/clone.c:1045
+#: builtin/clone.c:1046
 #, c-format
 msgid "repository path '%s' already exists and is not an empty directory."
 msgstr ""
 
-#: builtin/clone.c:1059
+#: builtin/clone.c:1060
 #, c-format
 msgid "working tree '%s' already exists."
 msgstr ""
 
-#: builtin/clone.c:1074 builtin/clone.c:1095 builtin/difftool.c:271
-#: builtin/log.c:1987 builtin/worktree.c:354 builtin/worktree.c:386
+#: builtin/clone.c:1075 builtin/clone.c:1096 builtin/difftool.c:271
+#: builtin/log.c:1986 builtin/worktree.c:282 builtin/worktree.c:314
 #, c-format
 msgid "could not create leading directories of '%s'"
 msgstr ""
 
-#: builtin/clone.c:1079
+#: builtin/clone.c:1080
 #, c-format
 msgid "could not create work tree dir '%s'"
 msgstr ""
 
-#: builtin/clone.c:1099
+#: builtin/clone.c:1100
 #, c-format
 msgid "Cloning into bare repository '%s'...\n"
 msgstr ""
 
-#: builtin/clone.c:1101
+#: builtin/clone.c:1102
 #, c-format
 msgid "Cloning into '%s'...\n"
 msgstr ""
 
-#: builtin/clone.c:1125
+#: builtin/clone.c:1126
 msgid ""
 "clone --recursive is not compatible with both --reference and --reference-if-"
 "able"
 msgstr ""
 
-#: builtin/clone.c:1169 builtin/remote.c:200 builtin/remote.c:705
+#: builtin/clone.c:1170 builtin/remote.c:200 builtin/remote.c:705
 #, c-format
 msgid "'%s' is not a valid remote name"
 msgstr ""
 
-#: builtin/clone.c:1210
+#: builtin/clone.c:1211
 msgid "--depth is ignored in local clones; use file:// instead."
 msgstr ""
 
-#: builtin/clone.c:1212
+#: builtin/clone.c:1213
 msgid "--shallow-since is ignored in local clones; use file:// instead."
 msgstr ""
 
-#: builtin/clone.c:1214
+#: builtin/clone.c:1215
 msgid "--shallow-exclude is ignored in local clones; use file:// instead."
 msgstr ""
 
-#: builtin/clone.c:1216
+#: builtin/clone.c:1217
 msgid "--filter is ignored in local clones; use file:// instead."
 msgstr ""
 
-#: builtin/clone.c:1219
+#: builtin/clone.c:1220
 msgid "source repository is shallow, ignoring --local"
 msgstr ""
 
-#: builtin/clone.c:1224
+#: builtin/clone.c:1225
 msgid "--local is ignored"
 msgstr ""
 
-#: builtin/clone.c:1311 builtin/clone.c:1319
+#: builtin/clone.c:1315 builtin/clone.c:1323
 #, c-format
 msgid "Remote branch %s not found in upstream %s"
 msgstr ""
 
-#: builtin/clone.c:1322
+#: builtin/clone.c:1326
 msgid "You appear to have cloned an empty repository."
 msgstr ""
 
@@ -11861,13 +12128,13 @@ msgid "could not find object directory matching %s"
 msgstr ""
 
 #: builtin/commit-graph.c:80 builtin/commit-graph.c:210
-#: builtin/commit-graph.c:316 builtin/fetch.c:184 builtin/log.c:1769
+#: builtin/commit-graph.c:316 builtin/fetch.c:187 builtin/log.c:1768
 msgid "dir"
 msgstr ""
 
 #: builtin/commit-graph.c:81 builtin/commit-graph.c:211
 #: builtin/commit-graph.c:317
-msgid "The object directory to store the graph"
+msgid "the object directory to store the graph"
 msgstr ""
 
 #: builtin/commit-graph.c:83
@@ -11953,7 +12220,7 @@ msgstr ""
 msgid "duplicate parent %s ignored"
 msgstr ""
 
-#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:555
+#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:557
 #, c-format
 msgid "not a valid object name %s"
 msgstr ""
@@ -11981,9 +12248,9 @@ msgstr ""
 msgid "id of a parent commit object"
 msgstr ""
 
-#: builtin/commit-tree.c:114 builtin/commit.c:1504 builtin/merge.c:281
-#: builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1470
-#: builtin/tag.c:413
+#: builtin/commit-tree.c:114 builtin/commit.c:1504 builtin/merge.c:282
+#: builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1537
+#: builtin/tag.c:445
 msgid "message"
 msgstr ""
 
@@ -11995,7 +12262,7 @@ msgstr ""
 msgid "read commit log message from file"
 msgstr ""
 
-#: builtin/commit-tree.c:121 builtin/commit.c:1516 builtin/merge.c:298
+#: builtin/commit-tree.c:121 builtin/commit.c:1516 builtin/merge.c:299
 #: builtin/pull.c:176 builtin/revert.c:118
 msgid "GPG sign commit"
 msgstr ""
@@ -12130,7 +12397,7 @@ msgstr ""
 msgid "could not lookup commit %s"
 msgstr ""
 
-#: builtin/commit.c:729 builtin/shortlog.c:425
+#: builtin/commit.c:729 builtin/shortlog.c:413
 #, c-format
 msgid "(reading log message from standard input)\n"
 msgstr ""
@@ -12212,7 +12479,7 @@ msgstr ""
 msgid "Error building trees"
 msgstr ""
 
-#: builtin/commit.c:1011 builtin/tag.c:276
+#: builtin/commit.c:1011 builtin/tag.c:308
 #, c-format
 msgid "Please supply the message using either -m or -F option.\n"
 msgstr ""
@@ -12302,7 +12569,7 @@ msgid "version"
 msgstr ""
 
 #: builtin/commit.c:1374 builtin/commit.c:1533 builtin/push.c:560
-#: builtin/worktree.c:725
+#: builtin/worktree.c:679
 msgid "machine-readable output"
 msgstr ""
 
@@ -12316,7 +12583,7 @@ msgstr ""
 
 #: builtin/commit.c:1382 builtin/commit.c:1386 builtin/commit.c:1541
 #: builtin/fast-export.c:1198 builtin/fast-export.c:1201
-#: builtin/fast-export.c:1204 builtin/rebase.c:1406 parse-options.h:336
+#: builtin/fast-export.c:1204 builtin/rebase.c:1412 parse-options.h:336
 msgid "mode"
 msgstr ""
 
@@ -12368,7 +12635,7 @@ msgstr ""
 msgid "Commit message options"
 msgstr ""
 
-#: builtin/commit.c:1501 builtin/merge.c:285 builtin/tag.c:415
+#: builtin/commit.c:1501 builtin/merge.c:286 builtin/tag.c:447
 msgid "read message from file"
 msgstr ""
 
@@ -12380,7 +12647,7 @@ msgstr ""
 msgid "override author for commit"
 msgstr ""
 
-#: builtin/commit.c:1503 builtin/gc.c:542
+#: builtin/commit.c:1503 builtin/gc.c:550
 msgid "date"
 msgstr ""
 
@@ -12389,7 +12656,7 @@ msgid "override date for commit"
 msgstr ""
 
 #: builtin/commit.c:1505 builtin/commit.c:1506 builtin/commit.c:1507
-#: builtin/commit.c:1508 parse-options.h:328 ref-filter.h:87
+#: builtin/commit.c:1508 parse-options.h:328 ref-filter.h:90
 msgid "commit"
 msgstr ""
 
@@ -12413,7 +12680,7 @@ msgstr ""
 msgid "the commit is authored by me now (used with -C/-c/--amend)"
 msgstr ""
 
-#: builtin/commit.c:1510 builtin/log.c:1744 builtin/merge.c:301
+#: builtin/commit.c:1510 builtin/log.c:1743 builtin/merge.c:302
 #: builtin/pull.c:145 builtin/revert.c:110
 msgid "add a Signed-off-by trailer"
 msgstr ""
@@ -13020,41 +13287,41 @@ msgstr ""
 msgid "--merge-base only works with two commits"
 msgstr ""
 
-#: builtin/diff.c:91
+#: builtin/diff.c:92
 #, c-format
 msgid "'%s': not a regular file or symlink"
 msgstr ""
 
-#: builtin/diff.c:258
+#: builtin/diff.c:259
 #, c-format
 msgid "invalid option: %s"
 msgstr ""
 
-#: builtin/diff.c:375
+#: builtin/diff.c:376
 #, c-format
 msgid "%s...%s: no merge base"
 msgstr ""
 
-#: builtin/diff.c:485
+#: builtin/diff.c:486
 msgid "Not a git repository"
 msgstr ""
 
-#: builtin/diff.c:530 builtin/grep.c:681
+#: builtin/diff.c:532 builtin/grep.c:682
 #, c-format
 msgid "invalid object '%s' given."
 msgstr ""
 
-#: builtin/diff.c:541
+#: builtin/diff.c:543
 #, c-format
 msgid "more than two blobs given: '%s'"
 msgstr ""
 
-#: builtin/diff.c:546
+#: builtin/diff.c:548
 #, c-format
 msgid "unhandled object '%s' given."
 msgstr ""
 
-#: builtin/diff.c:580
+#: builtin/diff.c:582
 #, c-format
 msgid "%s...%s: multiple merge bases, using %s"
 msgstr ""
@@ -13226,39 +13493,39 @@ msgid "select handling of commit messages in an alternate encoding"
 msgstr ""
 
 #: builtin/fast-export.c:1208
-msgid "Dump marks to this file"
+msgid "dump marks to this file"
 msgstr ""
 
 #: builtin/fast-export.c:1210
-msgid "Import marks from this file"
+msgid "import marks from this file"
 msgstr ""
 
 #: builtin/fast-export.c:1214
-msgid "Import marks from this file if it exists"
+msgid "import marks from this file if it exists"
 msgstr ""
 
 #: builtin/fast-export.c:1216
-msgid "Fake a tagger when tags lack one"
+msgid "fake a tagger when tags lack one"
 msgstr ""
 
 #: builtin/fast-export.c:1218
-msgid "Output full tree for each commit"
+msgid "output full tree for each commit"
 msgstr ""
 
 #: builtin/fast-export.c:1220
-msgid "Use the done feature to terminate the stream"
+msgid "use the done feature to terminate the stream"
 msgstr ""
 
 #: builtin/fast-export.c:1221
-msgid "Skip output of blob data"
+msgid "skip output of blob data"
 msgstr ""
 
-#: builtin/fast-export.c:1222 builtin/log.c:1816
+#: builtin/fast-export.c:1222 builtin/log.c:1815
 msgid "refspec"
 msgstr ""
 
 #: builtin/fast-export.c:1223
-msgid "Apply refspec to exported refs"
+msgid "apply refspec to exported refs"
 msgstr ""
 
 #: builtin/fast-export.c:1224
@@ -13274,15 +13541,15 @@ msgid "convert <from> to <to> in anonymized output"
 msgstr ""
 
 #: builtin/fast-export.c:1229
-msgid "Reference parents which are not in fast-export stream by object id"
+msgid "reference parents which are not in fast-export stream by object id"
 msgstr ""
 
 #: builtin/fast-export.c:1231
-msgid "Show original object ids of blobs/commits"
+msgid "show original object ids of blobs/commits"
 msgstr ""
 
 #: builtin/fast-export.c:1233
-msgid "Label tags with mark ids"
+msgid "label tags with mark ids"
 msgstr ""
 
 #: builtin/fast-export.c:1256
@@ -13322,7 +13589,7 @@ msgstr ""
 msgid "feature '%s' forbidden in input without --allow-unsafe-features"
 msgstr ""
 
-#: builtin/fetch-pack.c:241
+#: builtin/fetch-pack.c:242
 #, c-format
 msgid "Lockfile created but not reported: %s"
 msgstr ""
@@ -13343,196 +13610,200 @@ msgstr ""
 msgid "git fetch --all [<options>]"
 msgstr ""
 
-#: builtin/fetch.c:119
+#: builtin/fetch.c:120
 msgid "fetch.parallel cannot be negative"
 msgstr ""
 
-#: builtin/fetch.c:142 builtin/pull.c:185
+#: builtin/fetch.c:143 builtin/pull.c:185
 msgid "fetch from all remotes"
 msgstr ""
 
-#: builtin/fetch.c:144 builtin/pull.c:245
+#: builtin/fetch.c:145 builtin/pull.c:245
 msgid "set upstream for git pull/fetch"
 msgstr ""
 
-#: builtin/fetch.c:146 builtin/pull.c:188
+#: builtin/fetch.c:147 builtin/pull.c:188
 msgid "append to .git/FETCH_HEAD instead of overwriting"
 msgstr ""
 
-#: builtin/fetch.c:148 builtin/pull.c:191
+#: builtin/fetch.c:149
+msgid "use atomic transaction to update references"
+msgstr ""
+
+#: builtin/fetch.c:151 builtin/pull.c:191
 msgid "path to upload pack on remote end"
 msgstr ""
 
-#: builtin/fetch.c:149
+#: builtin/fetch.c:152
 msgid "force overwrite of local reference"
 msgstr ""
 
-#: builtin/fetch.c:151
+#: builtin/fetch.c:154
 msgid "fetch from multiple remotes"
 msgstr ""
 
-#: builtin/fetch.c:153 builtin/pull.c:195
+#: builtin/fetch.c:156 builtin/pull.c:195
 msgid "fetch all tags and associated objects"
 msgstr ""
 
-#: builtin/fetch.c:155
+#: builtin/fetch.c:158
 msgid "do not fetch all tags (--no-tags)"
 msgstr ""
 
-#: builtin/fetch.c:157
+#: builtin/fetch.c:160
 msgid "number of submodules fetched in parallel"
 msgstr ""
 
-#: builtin/fetch.c:159 builtin/pull.c:198
+#: builtin/fetch.c:162 builtin/pull.c:198
 msgid "prune remote-tracking branches no longer on remote"
 msgstr ""
 
-#: builtin/fetch.c:161
+#: builtin/fetch.c:164
 msgid "prune local tags no longer on remote and clobber changed tags"
 msgstr ""
 
-#: builtin/fetch.c:162 builtin/fetch.c:187 builtin/pull.c:122
+#: builtin/fetch.c:165 builtin/fetch.c:190 builtin/pull.c:122
 msgid "on-demand"
 msgstr ""
 
-#: builtin/fetch.c:163
+#: builtin/fetch.c:166
 msgid "control recursive fetching of submodules"
 msgstr ""
 
-#: builtin/fetch.c:168
+#: builtin/fetch.c:171
 msgid "write fetched references to the FETCH_HEAD file"
 msgstr ""
 
-#: builtin/fetch.c:169 builtin/pull.c:206
+#: builtin/fetch.c:172 builtin/pull.c:206
 msgid "keep downloaded pack"
 msgstr ""
 
-#: builtin/fetch.c:171
+#: builtin/fetch.c:174
 msgid "allow updating of HEAD ref"
 msgstr ""
 
-#: builtin/fetch.c:174 builtin/fetch.c:180 builtin/pull.c:209
+#: builtin/fetch.c:177 builtin/fetch.c:183 builtin/pull.c:209
 #: builtin/pull.c:218
 msgid "deepen history of shallow clone"
 msgstr ""
 
-#: builtin/fetch.c:176 builtin/pull.c:212
+#: builtin/fetch.c:179 builtin/pull.c:212
 msgid "deepen history of shallow repository based on time"
 msgstr ""
 
-#: builtin/fetch.c:182 builtin/pull.c:221
+#: builtin/fetch.c:185 builtin/pull.c:221
 msgid "convert to a complete repository"
 msgstr ""
 
-#: builtin/fetch.c:185
+#: builtin/fetch.c:188
 msgid "prepend this to submodule path output"
 msgstr ""
 
-#: builtin/fetch.c:188
+#: builtin/fetch.c:191
 msgid ""
 "default for recursive fetching of submodules (lower priority than config "
 "files)"
 msgstr ""
 
-#: builtin/fetch.c:192 builtin/pull.c:224
+#: builtin/fetch.c:195 builtin/pull.c:224
 msgid "accept refs that update .git/shallow"
 msgstr ""
 
-#: builtin/fetch.c:193 builtin/pull.c:226
+#: builtin/fetch.c:196 builtin/pull.c:226
 msgid "refmap"
 msgstr ""
 
-#: builtin/fetch.c:194 builtin/pull.c:227
+#: builtin/fetch.c:197 builtin/pull.c:227
 msgid "specify fetch refmap"
 msgstr ""
 
-#: builtin/fetch.c:201 builtin/pull.c:240
+#: builtin/fetch.c:204 builtin/pull.c:240
 msgid "report that we have only objects reachable from this object"
 msgstr ""
 
-#: builtin/fetch.c:204 builtin/fetch.c:206
+#: builtin/fetch.c:207 builtin/fetch.c:209
 msgid "run 'maintenance --auto' after fetching"
 msgstr ""
 
-#: builtin/fetch.c:208 builtin/pull.c:243
+#: builtin/fetch.c:211 builtin/pull.c:243
 msgid "check for forced-updates on all updated branches"
 msgstr ""
 
-#: builtin/fetch.c:210
+#: builtin/fetch.c:213
 msgid "write the commit-graph after fetching"
 msgstr ""
 
-#: builtin/fetch.c:212
+#: builtin/fetch.c:215
 msgid "accept refspecs from stdin"
 msgstr ""
 
-#: builtin/fetch.c:523
+#: builtin/fetch.c:526
 msgid "Couldn't find remote ref HEAD"
 msgstr ""
 
-#: builtin/fetch.c:677
+#: builtin/fetch.c:697
 #, c-format
 msgid "configuration fetch.output contains invalid value %s"
 msgstr ""
 
-#: builtin/fetch.c:775
+#: builtin/fetch.c:796
 #, c-format
 msgid "object %s not found"
 msgstr ""
 
-#: builtin/fetch.c:779
+#: builtin/fetch.c:800
 msgid "[up to date]"
 msgstr ""
 
-#: builtin/fetch.c:792 builtin/fetch.c:808 builtin/fetch.c:880
+#: builtin/fetch.c:813 builtin/fetch.c:829 builtin/fetch.c:901
 msgid "[rejected]"
 msgstr ""
 
-#: builtin/fetch.c:793
+#: builtin/fetch.c:814
 msgid "can't fetch in current branch"
 msgstr ""
 
-#: builtin/fetch.c:803
+#: builtin/fetch.c:824
 msgid "[tag update]"
 msgstr ""
 
-#: builtin/fetch.c:804 builtin/fetch.c:841 builtin/fetch.c:863
-#: builtin/fetch.c:875
+#: builtin/fetch.c:825 builtin/fetch.c:862 builtin/fetch.c:884
+#: builtin/fetch.c:896
 msgid "unable to update local ref"
 msgstr ""
 
-#: builtin/fetch.c:808
+#: builtin/fetch.c:829
 msgid "would clobber existing tag"
 msgstr ""
 
-#: builtin/fetch.c:830
+#: builtin/fetch.c:851
 msgid "[new tag]"
 msgstr ""
 
-#: builtin/fetch.c:833
+#: builtin/fetch.c:854
 msgid "[new branch]"
 msgstr ""
 
-#: builtin/fetch.c:836
+#: builtin/fetch.c:857
 msgid "[new ref]"
 msgstr ""
 
-#: builtin/fetch.c:875
+#: builtin/fetch.c:896
 msgid "forced update"
 msgstr ""
 
-#: builtin/fetch.c:880
+#: builtin/fetch.c:901
 msgid "non-fast-forward"
 msgstr ""
 
-#: builtin/fetch.c:901
+#: builtin/fetch.c:1005
 msgid ""
 "Fetch normally indicates which branches had a forced update,\n"
 "but that check has been disabled. To re-enable, use '--show-forced-updates'\n"
 "flag or run 'git config fetch.showForcedUpdates true'."
 msgstr ""
 
-#: builtin/fetch.c:905
+#: builtin/fetch.c:1009
 #, c-format
 msgid ""
 "It took %.2f seconds to check forced updates. You can use\n"
@@ -13541,148 +13812,152 @@ msgid ""
 " to avoid this check.\n"
 msgstr ""
 
-#: builtin/fetch.c:939
+#: builtin/fetch.c:1041
 #, c-format
 msgid "%s did not send all necessary objects\n"
 msgstr ""
 
-#: builtin/fetch.c:960
+#: builtin/fetch.c:1069
 #, c-format
 msgid "reject %s because shallow roots are not allowed to be updated"
 msgstr ""
 
-#: builtin/fetch.c:1053 builtin/fetch.c:1191
+#: builtin/fetch.c:1146 builtin/fetch.c:1297
 #, c-format
 msgid "From %.*s\n"
 msgstr ""
 
-#: builtin/fetch.c:1064
+#: builtin/fetch.c:1168
 #, 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:1161
+#: builtin/fetch.c:1267
 #, c-format
 msgid "   (%s will become dangling)"
 msgstr ""
 
-#: builtin/fetch.c:1162
+#: builtin/fetch.c:1268
 #, c-format
 msgid "   (%s has become dangling)"
 msgstr ""
 
-#: builtin/fetch.c:1194
+#: builtin/fetch.c:1300
 msgid "[deleted]"
 msgstr ""
 
-#: builtin/fetch.c:1195 builtin/remote.c:1118
+#: builtin/fetch.c:1301 builtin/remote.c:1118
 msgid "(none)"
 msgstr ""
 
-#: builtin/fetch.c:1218
+#: builtin/fetch.c:1324
 #, c-format
 msgid "Refusing to fetch into current branch %s of non-bare repository"
 msgstr ""
 
-#: builtin/fetch.c:1237
+#: builtin/fetch.c:1343
 #, c-format
 msgid "Option \"%s\" value \"%s\" is not valid for %s"
 msgstr ""
 
-#: builtin/fetch.c:1240
+#: builtin/fetch.c:1346
 #, c-format
 msgid "Option \"%s\" is ignored for %s\n"
 msgstr ""
 
-#: builtin/fetch.c:1448
+#: builtin/fetch.c:1558
 msgid "multiple branches detected, incompatible with --set-upstream"
 msgstr ""
 
-#: builtin/fetch.c:1463
+#: builtin/fetch.c:1573
 msgid "not setting upstream for a remote remote-tracking branch"
 msgstr ""
 
-#: builtin/fetch.c:1465
+#: builtin/fetch.c:1575
 msgid "not setting upstream for a remote tag"
 msgstr ""
 
-#: builtin/fetch.c:1467
+#: builtin/fetch.c:1577
 msgid "unknown branch type"
 msgstr ""
 
-#: builtin/fetch.c:1469
+#: builtin/fetch.c:1579
 msgid ""
 "no source branch found.\n"
 "you need to specify exactly one branch with the --set-upstream option."
 msgstr ""
 
-#: builtin/fetch.c:1598 builtin/fetch.c:1661
+#: builtin/fetch.c:1708 builtin/fetch.c:1771
 #, c-format
 msgid "Fetching %s\n"
 msgstr ""
 
-#: builtin/fetch.c:1608 builtin/fetch.c:1663 builtin/remote.c:101
+#: builtin/fetch.c:1718 builtin/fetch.c:1773 builtin/remote.c:101
 #, c-format
 msgid "Could not fetch %s"
 msgstr ""
 
-#: builtin/fetch.c:1620
+#: builtin/fetch.c:1730
 #, c-format
 msgid "could not fetch '%s' (exit code: %d)\n"
 msgstr ""
 
-#: builtin/fetch.c:1724
+#: builtin/fetch.c:1834
 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:1760
+#: builtin/fetch.c:1870
 msgid "You need to specify a tag name."
 msgstr ""
 
-#: builtin/fetch.c:1825
+#: builtin/fetch.c:1935
 msgid "Negative depth in --deepen is not supported"
 msgstr ""
 
-#: builtin/fetch.c:1827
+#: builtin/fetch.c:1937
 msgid "--deepen and --depth are mutually exclusive"
 msgstr ""
 
-#: builtin/fetch.c:1832
+#: builtin/fetch.c:1942
 msgid "--depth and --unshallow cannot be used together"
 msgstr ""
 
-#: builtin/fetch.c:1834
+#: builtin/fetch.c:1944
 msgid "--unshallow on a complete repository does not make sense"
 msgstr ""
 
-#: builtin/fetch.c:1851
+#: builtin/fetch.c:1961
 msgid "fetch --all does not take a repository argument"
 msgstr ""
 
-#: builtin/fetch.c:1853
+#: builtin/fetch.c:1963
 msgid "fetch --all does not make sense with refspecs"
 msgstr ""
 
-#: builtin/fetch.c:1862
+#: builtin/fetch.c:1972
 #, c-format
 msgid "No such remote or remote group: %s"
 msgstr ""
 
-#: builtin/fetch.c:1869
+#: builtin/fetch.c:1979
 msgid "Fetching a group and specifying refspecs does not make sense"
 msgstr ""
 
-#: builtin/fetch.c:1887
+#: builtin/fetch.c:1997
 msgid ""
 "--filter can only be used with the remote configured in extensions."
 "partialclone"
 msgstr ""
 
-#: builtin/fetch.c:1891
+#: builtin/fetch.c:2001
+msgid "--atomic can only be used when fetching from one remote"
+msgstr ""
+
+#: builtin/fetch.c:2005
 msgid "--stdin can only be used when fetching from one remote"
 msgstr ""
 
@@ -13747,7 +14022,7 @@ msgstr ""
 msgid "show only <n> matched refs"
 msgstr ""
 
-#: builtin/for-each-ref.c:39 builtin/tag.c:440
+#: builtin/for-each-ref.c:39 builtin/tag.c:472
 msgid "respect format colors"
 msgstr ""
 
@@ -13787,243 +14062,243 @@ msgstr ""
 msgid "missing --config=<config>"
 msgstr ""
 
-#: builtin/fsck.c:69 builtin/fsck.c:148 builtin/fsck.c:149
+#: builtin/fsck.c:69 builtin/fsck.c:130 builtin/fsck.c:131
 msgid "unknown"
 msgstr ""
 
 #. TRANSLATORS: e.g. error in tree 01bfda: <more explanation>
-#: builtin/fsck.c:101 builtin/fsck.c:121
+#: builtin/fsck.c:83 builtin/fsck.c:103
 #, c-format
 msgid "error in %s %s: %s"
 msgstr ""
 
 #. TRANSLATORS: e.g. warning in tree 01bfda: <more explanation>
-#: builtin/fsck.c:115
+#: builtin/fsck.c:97
 #, c-format
 msgid "warning in %s %s: %s"
 msgstr ""
 
-#: builtin/fsck.c:144 builtin/fsck.c:147
+#: builtin/fsck.c:126 builtin/fsck.c:129
 #, c-format
 msgid "broken link from %7s %s"
 msgstr ""
 
-#: builtin/fsck.c:156
+#: builtin/fsck.c:138
 msgid "wrong object type in link"
 msgstr ""
 
-#: builtin/fsck.c:172
+#: builtin/fsck.c:154
 #, c-format
 msgid ""
 "broken link from %7s %s\n"
 "              to %7s %s"
 msgstr ""
 
-#: builtin/fsck.c:283
+#: builtin/fsck.c:265
 #, c-format
 msgid "missing %s %s"
 msgstr ""
 
-#: builtin/fsck.c:310
+#: builtin/fsck.c:292
 #, c-format
 msgid "unreachable %s %s"
 msgstr ""
 
-#: builtin/fsck.c:330
+#: builtin/fsck.c:312
 #, c-format
 msgid "dangling %s %s"
 msgstr ""
 
-#: builtin/fsck.c:340
+#: builtin/fsck.c:322
 msgid "could not create lost-found"
 msgstr ""
 
-#: builtin/fsck.c:351
+#: builtin/fsck.c:333
 #, c-format
 msgid "could not finish '%s'"
 msgstr ""
 
-#: builtin/fsck.c:368
+#: builtin/fsck.c:350
 #, c-format
 msgid "Checking %s"
 msgstr ""
 
-#: builtin/fsck.c:406
+#: builtin/fsck.c:388
 #, c-format
 msgid "Checking connectivity (%d objects)"
 msgstr ""
 
-#: builtin/fsck.c:425
+#: builtin/fsck.c:407
 #, c-format
 msgid "Checking %s %s"
 msgstr ""
 
-#: builtin/fsck.c:430
+#: builtin/fsck.c:412
 msgid "broken links"
 msgstr ""
 
-#: builtin/fsck.c:439
+#: builtin/fsck.c:421
 #, c-format
 msgid "root %s"
 msgstr ""
 
-#: builtin/fsck.c:447
+#: builtin/fsck.c:429
 #, c-format
 msgid "tagged %s %s (%s) in %s"
 msgstr ""
 
-#: builtin/fsck.c:476
+#: builtin/fsck.c:458
 #, c-format
 msgid "%s: object corrupt or missing"
 msgstr ""
 
-#: builtin/fsck.c:501
+#: builtin/fsck.c:483
 #, c-format
 msgid "%s: invalid reflog entry %s"
 msgstr ""
 
-#: builtin/fsck.c:515
+#: builtin/fsck.c:497
 #, c-format
 msgid "Checking reflog %s->%s"
 msgstr ""
 
-#: builtin/fsck.c:549
+#: builtin/fsck.c:531
 #, c-format
 msgid "%s: invalid sha1 pointer %s"
 msgstr ""
 
-#: builtin/fsck.c:556
+#: builtin/fsck.c:538
 #, c-format
 msgid "%s: not a commit"
 msgstr ""
 
-#: builtin/fsck.c:610
+#: builtin/fsck.c:592
 msgid "notice: No default references"
 msgstr ""
 
-#: builtin/fsck.c:625
+#: builtin/fsck.c:607
 #, c-format
 msgid "%s: object corrupt or missing: %s"
 msgstr ""
 
-#: builtin/fsck.c:638
+#: builtin/fsck.c:620
 #, c-format
 msgid "%s: object could not be parsed: %s"
 msgstr ""
 
-#: builtin/fsck.c:658
+#: builtin/fsck.c:640
 #, c-format
 msgid "bad sha1 file: %s"
 msgstr ""
 
-#: builtin/fsck.c:673
+#: builtin/fsck.c:655
 msgid "Checking object directory"
 msgstr ""
 
-#: builtin/fsck.c:676
+#: builtin/fsck.c:658
 msgid "Checking object directories"
 msgstr ""
 
-#: builtin/fsck.c:691
+#: builtin/fsck.c:673
 #, c-format
 msgid "Checking %s link"
 msgstr ""
 
-#: builtin/fsck.c:696 builtin/index-pack.c:865
+#: builtin/fsck.c:678 builtin/index-pack.c:865
 #, c-format
 msgid "invalid %s"
 msgstr ""
 
-#: builtin/fsck.c:703
+#: builtin/fsck.c:685
 #, c-format
 msgid "%s points to something strange (%s)"
 msgstr ""
 
-#: builtin/fsck.c:709
+#: builtin/fsck.c:691
 #, c-format
 msgid "%s: detached HEAD points at nothing"
 msgstr ""
 
-#: builtin/fsck.c:713
+#: builtin/fsck.c:695
 #, c-format
 msgid "notice: %s points to an unborn branch (%s)"
 msgstr ""
 
-#: builtin/fsck.c:725
+#: builtin/fsck.c:707
 msgid "Checking cache tree"
 msgstr ""
 
-#: builtin/fsck.c:730
+#: builtin/fsck.c:712
 #, c-format
 msgid "%s: invalid sha1 pointer in cache-tree"
 msgstr ""
 
-#: builtin/fsck.c:739
+#: builtin/fsck.c:721
 msgid "non-tree in cache-tree"
 msgstr ""
 
-#: builtin/fsck.c:770
+#: builtin/fsck.c:752
 msgid "git fsck [<options>] [<object>...]"
 msgstr ""
 
-#: builtin/fsck.c:776
+#: builtin/fsck.c:758
 msgid "show unreachable objects"
 msgstr ""
 
-#: builtin/fsck.c:777
+#: builtin/fsck.c:759
 msgid "show dangling objects"
 msgstr ""
 
-#: builtin/fsck.c:778
+#: builtin/fsck.c:760
 msgid "report tags"
 msgstr ""
 
-#: builtin/fsck.c:779
+#: builtin/fsck.c:761
 msgid "report root nodes"
 msgstr ""
 
-#: builtin/fsck.c:780
+#: builtin/fsck.c:762
 msgid "make index objects head nodes"
 msgstr ""
 
-#: builtin/fsck.c:781
+#: builtin/fsck.c:763
 msgid "make reflogs head nodes (default)"
 msgstr ""
 
-#: builtin/fsck.c:782
+#: builtin/fsck.c:764
 msgid "also consider packs and alternate objects"
 msgstr ""
 
-#: builtin/fsck.c:783
+#: builtin/fsck.c:765
 msgid "check only connectivity"
 msgstr ""
 
-#: builtin/fsck.c:784
+#: builtin/fsck.c:766 builtin/mktag.c:78
 msgid "enable more strict checking"
 msgstr ""
 
-#: builtin/fsck.c:786
+#: builtin/fsck.c:768
 msgid "write dangling objects in .git/lost-found"
 msgstr ""
 
-#: builtin/fsck.c:787 builtin/prune.c:134
+#: builtin/fsck.c:769 builtin/prune.c:134
 msgid "show progress"
 msgstr ""
 
-#: builtin/fsck.c:788
+#: builtin/fsck.c:770
 msgid "show verbose names for reachable objects"
 msgstr ""
 
-#: builtin/fsck.c:847 builtin/index-pack.c:261
+#: builtin/fsck.c:829 builtin/index-pack.c:261
 msgid "Checking objects"
 msgstr ""
 
-#: builtin/fsck.c:875
+#: builtin/fsck.c:857
 #, c-format
 msgid "%s: object missing"
 msgstr ""
 
-#: builtin/fsck.c:886
+#: builtin/fsck.c:868
 #, c-format
 msgid "invalid parameter: expected sha1, got '%s'"
 msgstr ""
@@ -14032,27 +14307,27 @@ msgstr ""
 msgid "git gc [<options>]"
 msgstr ""
 
-#: builtin/gc.c:94
+#: builtin/gc.c:93
 #, c-format
 msgid "Failed to fstat %s: %s"
 msgstr ""
 
-#: builtin/gc.c:130
+#: builtin/gc.c:129
 #, c-format
 msgid "failed to parse '%s' value '%s'"
 msgstr ""
 
-#: builtin/gc.c:479 builtin/init-db.c:58
+#: builtin/gc.c:487 builtin/init-db.c:58
 #, c-format
 msgid "cannot stat '%s'"
 msgstr ""
 
-#: builtin/gc.c:488 builtin/notes.c:240 builtin/tag.c:530
+#: builtin/gc.c:496 builtin/notes.c:240 builtin/tag.c:562
 #, c-format
 msgid "cannot read '%s'"
 msgstr ""
 
-#: builtin/gc.c:495
+#: builtin/gc.c:503
 #, c-format
 msgid ""
 "The last gc run reported the following. Please correct the root cause\n"
@@ -14062,190 +14337,217 @@ msgid ""
 "%s"
 msgstr ""
 
-#: builtin/gc.c:543
+#: builtin/gc.c:551
 msgid "prune unreferenced objects"
 msgstr ""
 
-#: builtin/gc.c:545
+#: builtin/gc.c:553
 msgid "be more thorough (increased runtime)"
 msgstr ""
 
-#: builtin/gc.c:546
+#: builtin/gc.c:554
 msgid "enable auto-gc mode"
 msgstr ""
 
-#: builtin/gc.c:549
+#: builtin/gc.c:557
 msgid "force running gc even if there may be another gc running"
 msgstr ""
 
-#: builtin/gc.c:552
+#: builtin/gc.c:560
 msgid "repack all other packs except the largest pack"
 msgstr ""
 
-#: builtin/gc.c:569
+#: builtin/gc.c:576
 #, c-format
 msgid "failed to parse gc.logexpiry value %s"
 msgstr ""
 
-#: builtin/gc.c:580
+#: builtin/gc.c:587
 #, c-format
 msgid "failed to parse prune expiry value %s"
 msgstr ""
 
-#: builtin/gc.c:600
+#: builtin/gc.c:607
 #, c-format
 msgid "Auto packing the repository in background for optimum performance.\n"
 msgstr ""
 
-#: builtin/gc.c:602
+#: builtin/gc.c:609
 #, c-format
 msgid "Auto packing the repository for optimum performance.\n"
 msgstr ""
 
-#: builtin/gc.c:603
+#: builtin/gc.c:610
 #, c-format
 msgid "See \"git help gc\" for manual housekeeping.\n"
 msgstr ""
 
-#: builtin/gc.c:643
+#: builtin/gc.c:650
 #, c-format
 msgid ""
 "gc is already running on machine '%s' pid %<PRIuMAX> (use --force if not)"
 msgstr ""
 
-#: builtin/gc.c:698
+#: builtin/gc.c:705
 msgid ""
 "There are too many unreachable loose objects; run 'git prune' to remove them."
 msgstr ""
 
-#: builtin/gc.c:708
+#: builtin/gc.c:715
 msgid ""
 "git maintenance run [--auto] [--[no-]quiet] [--task=<task>] [--schedule]"
 msgstr ""
 
-#: builtin/gc.c:738
+#: builtin/gc.c:745
 msgid "--no-schedule is not allowed"
 msgstr ""
 
-#: builtin/gc.c:743
+#: builtin/gc.c:750
 #, c-format
 msgid "unrecognized --schedule argument '%s'"
 msgstr ""
 
-#: builtin/gc.c:862
+#: builtin/gc.c:869
 msgid "failed to write commit-graph"
 msgstr ""
 
-#: builtin/gc.c:901
+#: builtin/gc.c:914
 msgid "failed to fill remotes"
 msgstr ""
 
-#: builtin/gc.c:1024
+#: builtin/gc.c:1037
 msgid "failed to start 'git pack-objects' process"
 msgstr ""
 
-#: builtin/gc.c:1041
+#: builtin/gc.c:1054
 msgid "failed to finish 'git pack-objects' process"
 msgstr ""
 
-#: builtin/gc.c:1093
+#: builtin/gc.c:1106
 msgid "failed to write multi-pack-index"
 msgstr ""
 
-#: builtin/gc.c:1111
+#: builtin/gc.c:1124
 msgid "'git multi-pack-index expire' failed"
 msgstr ""
 
-#: builtin/gc.c:1172
+#: builtin/gc.c:1185
 msgid "'git multi-pack-index repack' failed"
 msgstr ""
 
-#: builtin/gc.c:1181
+#: builtin/gc.c:1194
 msgid ""
 "skipping incremental-repack task because core.multiPackIndex is disabled"
 msgstr ""
 
-#: builtin/gc.c:1279
+#: builtin/gc.c:1298
 #, c-format
 msgid "lock file '%s' exists, skipping maintenance"
 msgstr ""
 
-#: builtin/gc.c:1309
+#: builtin/gc.c:1328
 #, c-format
 msgid "task '%s' failed"
 msgstr ""
 
-#: builtin/gc.c:1389
+#: builtin/gc.c:1410
 #, c-format
 msgid "'%s' is not a valid task"
 msgstr ""
 
-#: builtin/gc.c:1394
+#: builtin/gc.c:1415
 #, c-format
 msgid "task '%s' cannot be selected multiple times"
 msgstr ""
 
-#: builtin/gc.c:1409
+#: builtin/gc.c:1430
 msgid "run tasks based on the state of the repository"
 msgstr ""
 
-#: builtin/gc.c:1410
+#: builtin/gc.c:1431
 msgid "frequency"
 msgstr ""
 
-#: builtin/gc.c:1411
+#: builtin/gc.c:1432
 msgid "run tasks based on frequency"
 msgstr ""
 
-#: builtin/gc.c:1414
+#: builtin/gc.c:1435
 msgid "do not report progress or other information over stderr"
 msgstr ""
 
-#: builtin/gc.c:1415
+#: builtin/gc.c:1436
 msgid "task"
 msgstr ""
 
-#: builtin/gc.c:1416
+#: builtin/gc.c:1437
 msgid "run a specific task"
 msgstr ""
 
-#: builtin/gc.c:1433
+#: builtin/gc.c:1454
 msgid "use at most one of --auto and --schedule=<frequency>"
 msgstr ""
 
-#: builtin/gc.c:1467
+#: builtin/gc.c:1497
 msgid "failed to run 'git config'"
 msgstr ""
 
-#: builtin/gc.c:1512
-msgid "another process is scheduling background maintenance"
+#: builtin/gc.c:1562
+#, c-format
+msgid "failed to expand path '%s'"
+msgstr ""
+
+#: builtin/gc.c:1591
+msgid "failed to start launchctl"
+msgstr ""
+
+#: builtin/gc.c:1628
+#, c-format
+msgid "failed to create directories for '%s'"
+msgstr ""
+
+#: builtin/gc.c:1689
+#, c-format
+msgid "failed to bootstrap service %s"
 msgstr ""
 
-#: builtin/gc.c:1525
+#: builtin/gc.c:1760
+msgid "failed to create temp xml file"
+msgstr ""
+
+#: builtin/gc.c:1850
+msgid "failed to start schtasks"
+msgstr ""
+
+#: builtin/gc.c:1894
 msgid "failed to run 'crontab -l'; your system might not support 'cron'"
 msgstr ""
 
-#: builtin/gc.c:1544
+#: builtin/gc.c:1911
 msgid "failed to run 'crontab'; your system might not support 'cron'"
 msgstr ""
 
-#: builtin/gc.c:1550
+#: builtin/gc.c:1915
 msgid "failed to open stdin of 'crontab'"
 msgstr ""
 
-#: builtin/gc.c:1592
+#: builtin/gc.c:1956
 msgid "'crontab' died"
 msgstr ""
 
-#: builtin/gc.c:1605
+#: builtin/gc.c:1990
+msgid "another process is scheduling background maintenance"
+msgstr ""
+
+#: builtin/gc.c:2009
 msgid "failed to add repo to global config"
 msgstr ""
 
-#: builtin/gc.c:1615
+#: builtin/gc.c:2019
 msgid "git maintenance <subcommand> [<options>]"
 msgstr ""
 
-#: builtin/gc.c:1634
+#: builtin/gc.c:2038
 #, c-format
 msgid "invalid subcommand: %s"
 msgstr ""
@@ -14254,12 +14556,12 @@ msgstr ""
 msgid "git grep [<options>] [-e] <pattern> [<rev>...] [[--] <path>...]"
 msgstr ""
 
-#: builtin/grep.c:225
+#: builtin/grep.c:223
 #, c-format
 msgid "grep: failed to create thread: %s"
 msgstr ""
 
-#: builtin/grep.c:279
+#: builtin/grep.c:277
 #, c-format
 msgid "invalid number of threads specified (%d) for %s"
 msgstr ""
@@ -14268,258 +14570,258 @@ msgstr ""
 #. variable for tweaking threads, currently
 #. grep.threads
 #.
-#: builtin/grep.c:287 builtin/index-pack.c:1576 builtin/index-pack.c:1766
-#: builtin/pack-objects.c:2936
+#: builtin/grep.c:285 builtin/index-pack.c:1589 builtin/index-pack.c:1808
+#: builtin/pack-objects.c:2944
 #, c-format
 msgid "no threads support, ignoring %s"
 msgstr ""
 
-#: builtin/grep.c:475 builtin/grep.c:600 builtin/grep.c:640
+#: builtin/grep.c:473 builtin/grep.c:601 builtin/grep.c:641
 #, c-format
 msgid "unable to read tree (%s)"
 msgstr ""
 
-#: builtin/grep.c:655
+#: builtin/grep.c:656
 #, c-format
 msgid "unable to grep from object of type %s"
 msgstr ""
 
-#: builtin/grep.c:736
+#: builtin/grep.c:737
 #, c-format
 msgid "switch `%c' expects a numerical value"
 msgstr ""
 
-#: builtin/grep.c:835
+#: builtin/grep.c:836
 msgid "search in index instead of in the work tree"
 msgstr ""
 
-#: builtin/grep.c:837
+#: builtin/grep.c:838
 msgid "find in contents not managed by git"
 msgstr ""
 
-#: builtin/grep.c:839
+#: builtin/grep.c:840
 msgid "search in both tracked and untracked files"
 msgstr ""
 
-#: builtin/grep.c:841
+#: builtin/grep.c:842
 msgid "ignore files specified via '.gitignore'"
 msgstr ""
 
-#: builtin/grep.c:843
+#: builtin/grep.c:844
 msgid "recursively search in each submodule"
 msgstr ""
 
-#: builtin/grep.c:846
+#: builtin/grep.c:847
 msgid "show non-matching lines"
 msgstr ""
 
-#: builtin/grep.c:848
+#: builtin/grep.c:849
 msgid "case insensitive matching"
 msgstr ""
 
-#: builtin/grep.c:850
+#: builtin/grep.c:851
 msgid "match patterns only at word boundaries"
 msgstr ""
 
-#: builtin/grep.c:852
+#: builtin/grep.c:853
 msgid "process binary files as text"
 msgstr ""
 
-#: builtin/grep.c:854
+#: builtin/grep.c:855
 msgid "don't match patterns in binary files"
 msgstr ""
 
-#: builtin/grep.c:857
+#: builtin/grep.c:858
 msgid "process binary files with textconv filters"
 msgstr ""
 
-#: builtin/grep.c:859
+#: builtin/grep.c:860
 msgid "search in subdirectories (default)"
 msgstr ""
 
-#: builtin/grep.c:861
+#: builtin/grep.c:862
 msgid "descend at most <depth> levels"
 msgstr ""
 
-#: builtin/grep.c:865
+#: builtin/grep.c:866
 msgid "use extended POSIX regular expressions"
 msgstr ""
 
-#: builtin/grep.c:868
+#: builtin/grep.c:869
 msgid "use basic POSIX regular expressions (default)"
 msgstr ""
 
-#: builtin/grep.c:871
+#: builtin/grep.c:872
 msgid "interpret patterns as fixed strings"
 msgstr ""
 
-#: builtin/grep.c:874
+#: builtin/grep.c:875
 msgid "use Perl-compatible regular expressions"
 msgstr ""
 
-#: builtin/grep.c:877
+#: builtin/grep.c:878
 msgid "show line numbers"
 msgstr ""
 
-#: builtin/grep.c:878
+#: builtin/grep.c:879
 msgid "show column number of first match"
 msgstr ""
 
-#: builtin/grep.c:879
+#: builtin/grep.c:880
 msgid "don't show filenames"
 msgstr ""
 
-#: builtin/grep.c:880
+#: builtin/grep.c:881
 msgid "show filenames"
 msgstr ""
 
-#: builtin/grep.c:882
+#: builtin/grep.c:883
 msgid "show filenames relative to top directory"
 msgstr ""
 
-#: builtin/grep.c:884
+#: builtin/grep.c:885
 msgid "show only filenames instead of matching lines"
 msgstr ""
 
-#: builtin/grep.c:886
+#: builtin/grep.c:887
 msgid "synonym for --files-with-matches"
 msgstr ""
 
-#: builtin/grep.c:889
+#: builtin/grep.c:890
 msgid "show only the names of files without match"
 msgstr ""
 
-#: builtin/grep.c:891
+#: builtin/grep.c:892
 msgid "print NUL after filenames"
 msgstr ""
 
-#: builtin/grep.c:894
+#: builtin/grep.c:895
 msgid "show only matching parts of a line"
 msgstr ""
 
-#: builtin/grep.c:896
+#: builtin/grep.c:897
 msgid "show the number of matches instead of matching lines"
 msgstr ""
 
-#: builtin/grep.c:897
+#: builtin/grep.c:898
 msgid "highlight matches"
 msgstr ""
 
-#: builtin/grep.c:899
+#: builtin/grep.c:900
 msgid "print empty line between matches from different files"
 msgstr ""
 
-#: builtin/grep.c:901
+#: builtin/grep.c:902
 msgid "show filename only once above matches from same file"
 msgstr ""
 
-#: builtin/grep.c:904
+#: builtin/grep.c:905
 msgid "show <n> context lines before and after matches"
 msgstr ""
 
-#: builtin/grep.c:907
+#: builtin/grep.c:908
 msgid "show <n> context lines before matches"
 msgstr ""
 
-#: builtin/grep.c:909
+#: builtin/grep.c:910
 msgid "show <n> context lines after matches"
 msgstr ""
 
-#: builtin/grep.c:911
+#: builtin/grep.c:912
 msgid "use <n> worker threads"
 msgstr ""
 
-#: builtin/grep.c:912
+#: builtin/grep.c:913
 msgid "shortcut for -C NUM"
 msgstr ""
 
-#: builtin/grep.c:915
+#: builtin/grep.c:916
 msgid "show a line with the function name before matches"
 msgstr ""
 
-#: builtin/grep.c:917
+#: builtin/grep.c:918
 msgid "show the surrounding function"
 msgstr ""
 
-#: builtin/grep.c:920
+#: builtin/grep.c:921
 msgid "read patterns from file"
 msgstr ""
 
-#: builtin/grep.c:922
+#: builtin/grep.c:923
 msgid "match <pattern>"
 msgstr ""
 
-#: builtin/grep.c:924
+#: builtin/grep.c:925
 msgid "combine patterns specified with -e"
 msgstr ""
 
-#: builtin/grep.c:936
+#: builtin/grep.c:937
 msgid "indicate hit with exit status without output"
 msgstr ""
 
-#: builtin/grep.c:938
+#: builtin/grep.c:939
 msgid "show only matches from files that match all patterns"
 msgstr ""
 
-#: builtin/grep.c:940
-msgid "show parse tree for grep expression"
-msgstr ""
-
-#: builtin/grep.c:944
+#: builtin/grep.c:942
 msgid "pager"
 msgstr ""
 
-#: builtin/grep.c:944
+#: builtin/grep.c:942
 msgid "show matching files in the pager"
 msgstr ""
 
-#: builtin/grep.c:948
+#: builtin/grep.c:946
 msgid "allow calling of grep(1) (ignored by this build)"
 msgstr ""
 
-#: builtin/grep.c:1014
+#: builtin/grep.c:1012
 msgid "no pattern given"
 msgstr ""
 
-#: builtin/grep.c:1050
+#: builtin/grep.c:1048
 msgid "--no-index or --untracked cannot be used with revs"
 msgstr ""
 
-#: builtin/grep.c:1058
+#: builtin/grep.c:1056
 #, c-format
 msgid "unable to resolve revision: %s"
 msgstr ""
 
-#: builtin/grep.c:1088
+#: builtin/grep.c:1086
 msgid "--untracked not supported with --recurse-submodules"
 msgstr ""
 
-#: builtin/grep.c:1092
+#: builtin/grep.c:1090
 msgid "invalid option combination, ignoring --threads"
 msgstr ""
 
-#: builtin/grep.c:1095 builtin/pack-objects.c:3655
+#: builtin/grep.c:1093 builtin/pack-objects.c:3672
 msgid "no threads support, ignoring --threads"
 msgstr ""
 
-#: builtin/grep.c:1098 builtin/index-pack.c:1573 builtin/pack-objects.c:2933
+#: builtin/grep.c:1096 builtin/index-pack.c:1586 builtin/pack-objects.c:2941
 #, c-format
 msgid "invalid number of threads specified (%d)"
 msgstr ""
 
-#: builtin/grep.c:1132
+#: builtin/grep.c:1130
 msgid "--open-files-in-pager only works on the worktree"
 msgstr ""
 
-#: builtin/grep.c:1158
+#: builtin/grep.c:1156
 msgid "--cached or --untracked cannot be used with --no-index"
 msgstr ""
 
-#: builtin/grep.c:1164
+#: builtin/grep.c:1159
+msgid "--untracked cannot be used with --cached"
+msgstr ""
+
+#: builtin/grep.c:1165
 msgid "--[no-]exclude-standard cannot be used for tracked contents"
 msgstr ""
 
-#: builtin/grep.c:1172
+#: builtin/grep.c:1173
 msgid "both --cached and trees are given"
 msgstr ""
 
@@ -14644,12 +14946,12 @@ msgstr ""
 msgid "no info viewer handled the request"
 msgstr ""
 
-#: builtin/help.c:520 builtin/help.c:531 git.c:337
+#: builtin/help.c:520 builtin/help.c:531 git.c:340
 #, c-format
 msgid "'%s' is aliased to '%s'"
 msgstr ""
 
-#: builtin/help.c:534 git.c:369
+#: builtin/help.c:534 git.c:372
 #, c-format
 msgid "bad alias.%s string: %s"
 msgstr ""
@@ -14697,7 +14999,7 @@ msgstr ""
 msgid "used more bytes than were available"
 msgstr ""
 
-#: builtin/index-pack.c:324 builtin/pack-objects.c:619
+#: builtin/index-pack.c:324 builtin/pack-objects.c:624
 msgid "pack too large for current definition of off_t"
 msgstr ""
 
@@ -14705,7 +15007,7 @@ msgstr ""
 msgid "pack exceeds maximum allowed size"
 msgstr ""
 
-#: builtin/index-pack.c:342 builtin/repack.c:286
+#: builtin/index-pack.c:342
 #, c-format
 msgid "unable to create '%s'"
 msgstr ""
@@ -14830,7 +15132,7 @@ msgstr ""
 msgid "Resolving deltas"
 msgstr ""
 
-#: builtin/index-pack.c:1249 builtin/pack-objects.c:2697
+#: builtin/index-pack.c:1249 builtin/pack-objects.c:2707
 #, c-format
 msgid "unable to create thread: %s"
 msgstr ""
@@ -14868,9 +15170,9 @@ msgstr ""
 msgid "local object %s is corrupt"
 msgstr ""
 
-#: builtin/index-pack.c:1444
+#: builtin/index-pack.c:1445
 #, c-format
-msgid "packfile name '%s' does not end with '.pack'"
+msgid "packfile name '%s' does not end with '.%s'"
 msgstr ""
 
 #: builtin/index-pack.c:1469
@@ -14883,79 +15185,83 @@ msgstr ""
 msgid "cannot close written %s file '%s'"
 msgstr ""
 
-#: builtin/index-pack.c:1501
+#: builtin/index-pack.c:1503
 msgid "error while closing pack file"
 msgstr ""
 
-#: builtin/index-pack.c:1515
+#: builtin/index-pack.c:1517
 msgid "cannot store pack file"
 msgstr ""
 
-#: builtin/index-pack.c:1523
+#: builtin/index-pack.c:1525
 msgid "cannot store index file"
 msgstr ""
 
-#: builtin/index-pack.c:1567 builtin/pack-objects.c:2944
+#: builtin/index-pack.c:1534
+msgid "cannot store reverse index file"
+msgstr ""
+
+#: builtin/index-pack.c:1580 builtin/pack-objects.c:2952
 #, c-format
 msgid "bad pack.indexversion=%<PRIu32>"
 msgstr ""
 
-#: builtin/index-pack.c:1631
+#: builtin/index-pack.c:1650
 #, c-format
 msgid "Cannot open existing pack file '%s'"
 msgstr ""
 
-#: builtin/index-pack.c:1633
+#: builtin/index-pack.c:1652
 #, c-format
 msgid "Cannot open existing pack idx file for '%s'"
 msgstr ""
 
-#: builtin/index-pack.c:1681
+#: builtin/index-pack.c:1700
 #, c-format
 msgid "non delta: %d object"
 msgid_plural "non delta: %d objects"
 msgstr[0] ""
 msgstr[1] ""
 
-#: builtin/index-pack.c:1688
+#: builtin/index-pack.c:1707
 #, c-format
 msgid "chain length = %d: %lu object"
 msgid_plural "chain length = %d: %lu objects"
 msgstr[0] ""
 msgstr[1] ""
 
-#: builtin/index-pack.c:1728
+#: builtin/index-pack.c:1765
 msgid "Cannot come back to cwd"
 msgstr ""
 
-#: builtin/index-pack.c:1777 builtin/index-pack.c:1780
-#: builtin/index-pack.c:1796 builtin/index-pack.c:1800
+#: builtin/index-pack.c:1819 builtin/index-pack.c:1822
+#: builtin/index-pack.c:1838 builtin/index-pack.c:1842
 #, c-format
 msgid "bad %s"
 msgstr ""
 
-#: builtin/index-pack.c:1806 builtin/init-db.c:392 builtin/init-db.c:625
+#: builtin/index-pack.c:1848 builtin/init-db.c:392 builtin/init-db.c:625
 #, c-format
 msgid "unknown hash algorithm '%s'"
 msgstr ""
 
-#: builtin/index-pack.c:1821
+#: builtin/index-pack.c:1867
 msgid "--fix-thin cannot be used without --stdin"
 msgstr ""
 
-#: builtin/index-pack.c:1823
+#: builtin/index-pack.c:1869
 msgid "--stdin requires a git repository"
 msgstr ""
 
-#: builtin/index-pack.c:1825
+#: builtin/index-pack.c:1871
 msgid "--object-format cannot be used with --stdin"
 msgstr ""
 
-#: builtin/index-pack.c:1831
+#: builtin/index-pack.c:1886
 msgid "--verify with no packfile name given"
 msgstr ""
 
-#: builtin/index-pack.c:1892 builtin/unpack-objects.c:582
+#: builtin/index-pack.c:1956 builtin/unpack-objects.c:582
 msgid "fsck error in pack objects"
 msgstr ""
 
@@ -15166,521 +15472,525 @@ msgstr ""
 msgid "no input file given for in-place editing"
 msgstr ""
 
-#: builtin/log.c:58
+#: builtin/log.c:59
 msgid "git log [<options>] [<revision-range>] [[--] <path>...]"
 msgstr ""
 
-#: builtin/log.c:59
+#: builtin/log.c:60
 msgid "git show [<options>] <object>..."
 msgstr ""
 
-#: builtin/log.c:112
+#: builtin/log.c:113
 #, c-format
 msgid "invalid --decorate option: %s"
 msgstr ""
 
-#: builtin/log.c:179
+#: builtin/log.c:180
 msgid "show source"
 msgstr ""
 
-#: builtin/log.c:180
-msgid "Use mail map file"
+#: builtin/log.c:181
+msgid "use mail map file"
 msgstr ""
 
-#: builtin/log.c:183
+#: builtin/log.c:184
 msgid "only decorate refs that match <pattern>"
 msgstr ""
 
-#: builtin/log.c:185
+#: builtin/log.c:186
 msgid "do not decorate refs that match <pattern>"
 msgstr ""
 
-#: builtin/log.c:186
+#: builtin/log.c:187
 msgid "decorate options"
 msgstr ""
 
-#: builtin/log.c:189
+#: builtin/log.c:190
 msgid ""
-"Trace the evolution of line range <start>,<end> or function :<funcname> in "
+"trace the evolution of line range <start>,<end> or function :<funcname> in "
 "<file>"
 msgstr ""
 
-#: builtin/log.c:212
+#: builtin/log.c:213
 msgid "-L<range>:<file> cannot be used with pathspec"
 msgstr ""
 
-#: builtin/log.c:302
+#: builtin/log.c:303
 #, c-format
 msgid "Final output: %d %s\n"
 msgstr ""
 
-#: builtin/log.c:564
+#: builtin/log.c:566
 #, c-format
 msgid "git show %s: bad file"
 msgstr ""
 
-#: builtin/log.c:579 builtin/log.c:674
+#: builtin/log.c:581 builtin/log.c:671
 #, c-format
 msgid "could not read object %s"
 msgstr ""
 
-#: builtin/log.c:699
+#: builtin/log.c:696
 #, c-format
 msgid "unknown type: %d"
 msgstr ""
 
-#: builtin/log.c:848
+#: builtin/log.c:841
 #, c-format
 msgid "%s: invalid cover from description mode"
 msgstr ""
 
-#: builtin/log.c:855
+#: builtin/log.c:848
 msgid "format.headers without value"
 msgstr ""
 
-#: builtin/log.c:984
+#: builtin/log.c:977
 #, c-format
 msgid "cannot open patch file %s"
 msgstr ""
 
-#: builtin/log.c:1001
+#: builtin/log.c:994
 msgid "need exactly one range"
 msgstr ""
 
-#: builtin/log.c:1011
+#: builtin/log.c:1004
 msgid "not a range"
 msgstr ""
 
-#: builtin/log.c:1175
+#: builtin/log.c:1168
 msgid "cover letter needs email format"
 msgstr ""
 
-#: builtin/log.c:1181
+#: builtin/log.c:1174
 msgid "failed to create cover-letter file"
 msgstr ""
 
-#: builtin/log.c:1262
+#: builtin/log.c:1261
 #, c-format
 msgid "insane in-reply-to: %s"
 msgstr ""
 
-#: builtin/log.c:1289
+#: builtin/log.c:1288
 msgid "git format-patch [<options>] [<since> | <revision-range>]"
 msgstr ""
 
-#: builtin/log.c:1347
+#: builtin/log.c:1346
 msgid "two output directories?"
 msgstr ""
 
-#: builtin/log.c:1498 builtin/log.c:2318 builtin/log.c:2320 builtin/log.c:2332
+#: builtin/log.c:1497 builtin/log.c:2317 builtin/log.c:2319 builtin/log.c:2331
 #, c-format
 msgid "unknown commit %s"
 msgstr ""
 
-#: builtin/log.c:1509 builtin/replace.c:58 builtin/replace.c:207
+#: builtin/log.c:1508 builtin/replace.c:58 builtin/replace.c:207
 #: builtin/replace.c:210
 #, c-format
 msgid "failed to resolve '%s' as a valid ref"
 msgstr ""
 
-#: builtin/log.c:1518
+#: builtin/log.c:1517
 msgid "could not find exact merge base"
 msgstr ""
 
-#: builtin/log.c:1528
+#: builtin/log.c:1527
 msgid ""
 "failed to get upstream, if you want to record base commit automatically,\n"
 "please use git branch --set-upstream-to to track a remote branch.\n"
 "Or you could specify base commit by --base=<base-commit-id> manually"
 msgstr ""
 
-#: builtin/log.c:1551
+#: builtin/log.c:1550
 msgid "failed to find exact merge base"
 msgstr ""
 
-#: builtin/log.c:1568
+#: builtin/log.c:1567
 msgid "base commit should be the ancestor of revision list"
 msgstr ""
 
-#: builtin/log.c:1578
+#: builtin/log.c:1577
 msgid "base commit shouldn't be in revision list"
 msgstr ""
 
-#: builtin/log.c:1636
+#: builtin/log.c:1635
 msgid "cannot get patch id"
 msgstr ""
 
-#: builtin/log.c:1693
+#: builtin/log.c:1692
 msgid "failed to infer range-diff origin of current series"
 msgstr ""
 
-#: builtin/log.c:1695
+#: builtin/log.c:1694
 #, c-format
 msgid "using '%s' as range-diff origin of current series"
 msgstr ""
 
-#: builtin/log.c:1739
+#: builtin/log.c:1738
 msgid "use [PATCH n/m] even with a single patch"
 msgstr ""
 
-#: builtin/log.c:1742
+#: builtin/log.c:1741
 msgid "use [PATCH] even with multiple patches"
 msgstr ""
 
-#: builtin/log.c:1746
+#: builtin/log.c:1745
 msgid "print patches to standard out"
 msgstr ""
 
-#: builtin/log.c:1748
+#: builtin/log.c:1747
 msgid "generate a cover letter"
 msgstr ""
 
-#: builtin/log.c:1750
+#: builtin/log.c:1749
 msgid "use simple number sequence for output file names"
 msgstr ""
 
-#: builtin/log.c:1751
+#: builtin/log.c:1750
 msgid "sfx"
 msgstr ""
 
-#: builtin/log.c:1752
+#: builtin/log.c:1751
 msgid "use <sfx> instead of '.patch'"
 msgstr ""
 
-#: builtin/log.c:1754
+#: builtin/log.c:1753
 msgid "start numbering patches at <n> instead of 1"
 msgstr ""
 
-#: builtin/log.c:1756
+#: builtin/log.c:1755
 msgid "mark the series as Nth re-roll"
 msgstr ""
 
-#: builtin/log.c:1758
+#: builtin/log.c:1757
 msgid "max length of output filename"
 msgstr ""
 
-#: builtin/log.c:1760
-msgid "Use [RFC PATCH] instead of [PATCH]"
+#: builtin/log.c:1759
+msgid "use [RFC PATCH] instead of [PATCH]"
 msgstr ""
 
-#: builtin/log.c:1763
+#: builtin/log.c:1762
 msgid "cover-from-description-mode"
 msgstr ""
 
-#: builtin/log.c:1764
+#: builtin/log.c:1763
 msgid "generate parts of a cover letter based on a branch's description"
 msgstr ""
 
-#: builtin/log.c:1766
-msgid "Use [<prefix>] instead of [PATCH]"
+#: builtin/log.c:1765
+msgid "use [<prefix>] instead of [PATCH]"
 msgstr ""
 
-#: builtin/log.c:1769
+#: builtin/log.c:1768
 msgid "store resulting files in <dir>"
 msgstr ""
 
-#: builtin/log.c:1772
+#: builtin/log.c:1771
 msgid "don't strip/add [PATCH]"
 msgstr ""
 
-#: builtin/log.c:1775
+#: builtin/log.c:1774
 msgid "don't output binary diffs"
 msgstr ""
 
-#: builtin/log.c:1777
+#: builtin/log.c:1776
 msgid "output all-zero hash in From header"
 msgstr ""
 
-#: builtin/log.c:1779
+#: builtin/log.c:1778
 msgid "don't include a patch matching a commit upstream"
 msgstr ""
 
-#: builtin/log.c:1781
+#: builtin/log.c:1780
 msgid "show patch format instead of default (patch + stat)"
 msgstr ""
 
-#: builtin/log.c:1783
+#: builtin/log.c:1782
 msgid "Messaging"
 msgstr ""
 
-#: builtin/log.c:1784
+#: builtin/log.c:1783
 msgid "header"
 msgstr ""
 
-#: builtin/log.c:1785
+#: builtin/log.c:1784
 msgid "add email header"
 msgstr ""
 
-#: builtin/log.c:1786 builtin/log.c:1787
+#: builtin/log.c:1785 builtin/log.c:1786
 msgid "email"
 msgstr ""
 
-#: builtin/log.c:1786
+#: builtin/log.c:1785
 msgid "add To: header"
 msgstr ""
 
-#: builtin/log.c:1787
+#: builtin/log.c:1786
 msgid "add Cc: header"
 msgstr ""
 
-#: builtin/log.c:1788
+#: builtin/log.c:1787
 msgid "ident"
 msgstr ""
 
-#: builtin/log.c:1789
+#: builtin/log.c:1788
 msgid "set From address to <ident> (or committer ident if absent)"
 msgstr ""
 
-#: builtin/log.c:1791
+#: builtin/log.c:1790
 msgid "message-id"
 msgstr ""
 
-#: builtin/log.c:1792
+#: builtin/log.c:1791
 msgid "make first mail a reply to <message-id>"
 msgstr ""
 
-#: builtin/log.c:1793 builtin/log.c:1796
+#: builtin/log.c:1792 builtin/log.c:1795
 msgid "boundary"
 msgstr ""
 
-#: builtin/log.c:1794
+#: builtin/log.c:1793
 msgid "attach the patch"
 msgstr ""
 
-#: builtin/log.c:1797
+#: builtin/log.c:1796
 msgid "inline the patch"
 msgstr ""
 
-#: builtin/log.c:1801
+#: builtin/log.c:1800
 msgid "enable message threading, styles: shallow, deep"
 msgstr ""
 
-#: builtin/log.c:1803
+#: builtin/log.c:1802
 msgid "signature"
 msgstr ""
 
-#: builtin/log.c:1804
+#: builtin/log.c:1803
 msgid "add a signature"
 msgstr ""
 
-#: builtin/log.c:1805
+#: builtin/log.c:1804
 msgid "base-commit"
 msgstr ""
 
-#: builtin/log.c:1806
+#: builtin/log.c:1805
 msgid "add prerequisite tree info to the patch series"
 msgstr ""
 
-#: builtin/log.c:1809
+#: builtin/log.c:1808
 msgid "add a signature from a file"
 msgstr ""
 
-#: builtin/log.c:1810
+#: builtin/log.c:1809
 msgid "don't print the patch filenames"
 msgstr ""
 
-#: builtin/log.c:1812
+#: builtin/log.c:1811
 msgid "show progress while generating patches"
 msgstr ""
 
-#: builtin/log.c:1814
+#: builtin/log.c:1813
 msgid "show changes against <rev> in cover letter or single patch"
 msgstr ""
 
-#: builtin/log.c:1817
+#: builtin/log.c:1816
 msgid "show changes against <refspec> in cover letter or single patch"
 msgstr ""
 
-#: builtin/log.c:1819
+#: builtin/log.c:1818
 msgid "percentage by which creation is weighted"
 msgstr ""
 
-#: builtin/log.c:1905
+#: builtin/log.c:1904
 #, c-format
 msgid "invalid ident line: %s"
 msgstr ""
 
-#: builtin/log.c:1920
+#: builtin/log.c:1919
 msgid "-n and -k are mutually exclusive"
 msgstr ""
 
-#: builtin/log.c:1922
+#: builtin/log.c:1921
 msgid "--subject-prefix/--rfc and -k are mutually exclusive"
 msgstr ""
 
-#: builtin/log.c:1930
+#: builtin/log.c:1929
 msgid "--name-only does not make sense"
 msgstr ""
 
-#: builtin/log.c:1932
+#: builtin/log.c:1931
 msgid "--name-status does not make sense"
 msgstr ""
 
-#: builtin/log.c:1934
+#: builtin/log.c:1933
 msgid "--check does not make sense"
 msgstr ""
 
-#: builtin/log.c:1956
+#: builtin/log.c:1955
 msgid "--stdout, --output, and --output-directory are mutually exclusive"
 msgstr ""
 
-#: builtin/log.c:2079
+#: builtin/log.c:2078
 msgid "--interdiff requires --cover-letter or single patch"
 msgstr ""
 
-#: builtin/log.c:2083
+#: builtin/log.c:2082
 msgid "Interdiff:"
 msgstr ""
 
-#: builtin/log.c:2084
+#: builtin/log.c:2083
 #, c-format
 msgid "Interdiff against v%d:"
 msgstr ""
 
-#: builtin/log.c:2090
+#: builtin/log.c:2089
 msgid "--creation-factor requires --range-diff"
 msgstr ""
 
-#: builtin/log.c:2094
+#: builtin/log.c:2093
 msgid "--range-diff requires --cover-letter or single patch"
 msgstr ""
 
-#: builtin/log.c:2102
+#: builtin/log.c:2101
 msgid "Range-diff:"
 msgstr ""
 
-#: builtin/log.c:2103
+#: builtin/log.c:2102
 #, c-format
 msgid "Range-diff against v%d:"
 msgstr ""
 
-#: builtin/log.c:2114
+#: builtin/log.c:2113
 #, c-format
 msgid "unable to read signature file '%s'"
 msgstr ""
 
-#: builtin/log.c:2150
+#: builtin/log.c:2149
 msgid "Generating patches"
 msgstr ""
 
-#: builtin/log.c:2194
+#: builtin/log.c:2193
 msgid "failed to create output files"
 msgstr ""
 
-#: builtin/log.c:2253
+#: builtin/log.c:2252
 msgid "git cherry [-v] [<upstream> [<head> [<limit>]]]"
 msgstr ""
 
-#: builtin/log.c:2307
+#: builtin/log.c:2306
 #, c-format
 msgid ""
 "Could not find a tracked remote branch, please specify <upstream> manually.\n"
 msgstr ""
 
-#: builtin/ls-files.c:471
+#: builtin/ls-files.c:486
 msgid "git ls-files [<options>] [<file>...]"
 msgstr ""
 
-#: builtin/ls-files.c:527
+#: builtin/ls-files.c:542
 msgid "identify the file status with tags"
 msgstr ""
 
-#: builtin/ls-files.c:529
+#: builtin/ls-files.c:544
 msgid "use lowercase letters for 'assume unchanged' files"
 msgstr ""
 
-#: builtin/ls-files.c:531
+#: builtin/ls-files.c:546
 msgid "use lowercase letters for 'fsmonitor clean' files"
 msgstr ""
 
-#: builtin/ls-files.c:533
+#: builtin/ls-files.c:548
 msgid "show cached files in the output (default)"
 msgstr ""
 
-#: builtin/ls-files.c:535
+#: builtin/ls-files.c:550
 msgid "show deleted files in the output"
 msgstr ""
 
-#: builtin/ls-files.c:537
+#: builtin/ls-files.c:552
 msgid "show modified files in the output"
 msgstr ""
 
-#: builtin/ls-files.c:539
+#: builtin/ls-files.c:554
 msgid "show other files in the output"
 msgstr ""
 
-#: builtin/ls-files.c:541
+#: builtin/ls-files.c:556
 msgid "show ignored files in the output"
 msgstr ""
 
-#: builtin/ls-files.c:544
+#: builtin/ls-files.c:559
 msgid "show staged contents' object name in the output"
 msgstr ""
 
-#: builtin/ls-files.c:546
+#: builtin/ls-files.c:561
 msgid "show files on the filesystem that need to be removed"
 msgstr ""
 
-#: builtin/ls-files.c:548
+#: builtin/ls-files.c:563
 msgid "show 'other' directories' names only"
 msgstr ""
 
-#: builtin/ls-files.c:550
+#: builtin/ls-files.c:565
 msgid "show line endings of files"
 msgstr ""
 
-#: builtin/ls-files.c:552
+#: builtin/ls-files.c:567
 msgid "don't show empty directories"
 msgstr ""
 
-#: builtin/ls-files.c:555
+#: builtin/ls-files.c:570
 msgid "show unmerged files in the output"
 msgstr ""
 
-#: builtin/ls-files.c:557
+#: builtin/ls-files.c:572
 msgid "show resolve-undo information"
 msgstr ""
 
-#: builtin/ls-files.c:559
+#: builtin/ls-files.c:574
 msgid "skip files matching pattern"
 msgstr ""
 
-#: builtin/ls-files.c:562
+#: builtin/ls-files.c:577
 msgid "exclude patterns are read from <file>"
 msgstr ""
 
-#: builtin/ls-files.c:565
+#: builtin/ls-files.c:580
 msgid "read additional per-directory exclude patterns in <file>"
 msgstr ""
 
-#: builtin/ls-files.c:567
+#: builtin/ls-files.c:582
 msgid "add the standard git exclusions"
 msgstr ""
 
-#: builtin/ls-files.c:571
+#: builtin/ls-files.c:586
 msgid "make the output relative to the project top directory"
 msgstr ""
 
-#: builtin/ls-files.c:574
+#: builtin/ls-files.c:589
 msgid "recurse through submodules"
 msgstr ""
 
-#: builtin/ls-files.c:576
+#: builtin/ls-files.c:591
 msgid "if any <file> is not in the index, treat this as an error"
 msgstr ""
 
-#: builtin/ls-files.c:577
+#: builtin/ls-files.c:592
 msgid "tree-ish"
 msgstr ""
 
-#: builtin/ls-files.c:578
+#: builtin/ls-files.c:593
 msgid "pretend that paths removed since <tree-ish> are still present"
 msgstr ""
 
-#: builtin/ls-files.c:580
+#: builtin/ls-files.c:595
 msgid "show debugging data"
 msgstr ""
 
+#: builtin/ls-files.c:597
+msgid "suppress duplicate entries"
+msgstr ""
+
 #: builtin/ls-remote.c:9
 msgid ""
 "git ls-remote [--heads] [--tags] [--refs] [--upload-pack=<exec>]\n"
@@ -15688,39 +15998,39 @@ msgid ""
 "                     [--symref] [<repository> [<refs>...]]"
 msgstr ""
 
-#: builtin/ls-remote.c:59
+#: builtin/ls-remote.c:60
 msgid "do not print remote URL"
 msgstr ""
 
-#: builtin/ls-remote.c:60 builtin/ls-remote.c:62 builtin/rebase.c:1398
+#: builtin/ls-remote.c:61 builtin/ls-remote.c:63 builtin/rebase.c:1404
 msgid "exec"
 msgstr ""
 
-#: builtin/ls-remote.c:61 builtin/ls-remote.c:63
+#: builtin/ls-remote.c:62 builtin/ls-remote.c:64
 msgid "path of git-upload-pack on the remote host"
 msgstr ""
 
-#: builtin/ls-remote.c:65
+#: builtin/ls-remote.c:66
 msgid "limit to tags"
 msgstr ""
 
-#: builtin/ls-remote.c:66
+#: builtin/ls-remote.c:67
 msgid "limit to heads"
 msgstr ""
 
-#: builtin/ls-remote.c:67
+#: builtin/ls-remote.c:68
 msgid "do not show peeled tags"
 msgstr ""
 
-#: builtin/ls-remote.c:69
+#: builtin/ls-remote.c:70
 msgid "take url.<base>.insteadOf into account"
 msgstr ""
 
-#: builtin/ls-remote.c:72
+#: builtin/ls-remote.c:73
 msgid "exit with exit code 2 if no matching refs are found"
 msgstr ""
 
-#: builtin/ls-remote.c:75
+#: builtin/ls-remote.c:76
 msgid "show underlying ref in addition to the object pointed by it"
 msgstr ""
 
@@ -15874,375 +16184,416 @@ msgstr ""
 msgid "Merging %s with %s\n"
 msgstr ""
 
-#: builtin/merge.c:57
+#: builtin/merge.c:58
 msgid "git merge [<options>] [<commit>...]"
 msgstr ""
 
-#: builtin/merge.c:58
+#: builtin/merge.c:59
 msgid "git merge --abort"
 msgstr ""
 
-#: builtin/merge.c:59
+#: builtin/merge.c:60
 msgid "git merge --continue"
 msgstr ""
 
-#: builtin/merge.c:122
+#: builtin/merge.c:123
 msgid "switch `m' requires a value"
 msgstr ""
 
-#: builtin/merge.c:145
+#: builtin/merge.c:146
 #, c-format
 msgid "option `%s' requires a value"
 msgstr ""
 
-#: builtin/merge.c:198
+#: builtin/merge.c:199
 #, c-format
 msgid "Could not find merge strategy '%s'.\n"
 msgstr ""
 
-#: builtin/merge.c:199
+#: builtin/merge.c:200
 #, c-format
 msgid "Available strategies are:"
 msgstr ""
 
-#: builtin/merge.c:204
+#: builtin/merge.c:205
 #, c-format
 msgid "Available custom strategies are:"
 msgstr ""
 
-#: builtin/merge.c:255 builtin/pull.c:133
+#: builtin/merge.c:256 builtin/pull.c:133
 msgid "do not show a diffstat at the end of the merge"
 msgstr ""
 
-#: builtin/merge.c:258 builtin/pull.c:136
+#: builtin/merge.c:259 builtin/pull.c:136
 msgid "show a diffstat at the end of the merge"
 msgstr ""
 
-#: builtin/merge.c:259 builtin/pull.c:139
+#: builtin/merge.c:260 builtin/pull.c:139
 msgid "(synonym to --stat)"
 msgstr ""
 
-#: builtin/merge.c:261 builtin/pull.c:142
+#: builtin/merge.c:262 builtin/pull.c:142
 msgid "add (at most <n>) entries from shortlog to merge commit message"
 msgstr ""
 
-#: builtin/merge.c:264 builtin/pull.c:148
+#: builtin/merge.c:265 builtin/pull.c:148
 msgid "create a single commit instead of doing a merge"
 msgstr ""
 
-#: builtin/merge.c:266 builtin/pull.c:151
+#: builtin/merge.c:267 builtin/pull.c:151
 msgid "perform a commit if the merge succeeds (default)"
 msgstr ""
 
-#: builtin/merge.c:268 builtin/pull.c:154
+#: builtin/merge.c:269 builtin/pull.c:154
 msgid "edit message before committing"
 msgstr ""
 
-#: builtin/merge.c:270
+#: builtin/merge.c:271
 msgid "allow fast-forward (default)"
 msgstr ""
 
-#: builtin/merge.c:272 builtin/pull.c:161
+#: builtin/merge.c:273 builtin/pull.c:161
 msgid "abort if fast-forward is not possible"
 msgstr ""
 
-#: builtin/merge.c:276 builtin/pull.c:164
+#: builtin/merge.c:277 builtin/pull.c:164
 msgid "verify that the named commit has a valid GPG signature"
 msgstr ""
 
-#: builtin/merge.c:277 builtin/notes.c:787 builtin/pull.c:168
-#: builtin/rebase.c:539 builtin/rebase.c:1412 builtin/revert.c:114
+#: builtin/merge.c:278 builtin/notes.c:787 builtin/pull.c:168
+#: builtin/rebase.c:541 builtin/rebase.c:1418 builtin/revert.c:114
 msgid "strategy"
 msgstr ""
 
-#: builtin/merge.c:278 builtin/pull.c:169
+#: builtin/merge.c:279 builtin/pull.c:169
 msgid "merge strategy to use"
 msgstr ""
 
-#: builtin/merge.c:279 builtin/pull.c:172
+#: builtin/merge.c:280 builtin/pull.c:172
 msgid "option=value"
 msgstr ""
 
-#: builtin/merge.c:280 builtin/pull.c:173
+#: builtin/merge.c:281 builtin/pull.c:173
 msgid "option for selected merge strategy"
 msgstr ""
 
-#: builtin/merge.c:282
+#: builtin/merge.c:283
 msgid "merge commit message (for a non-fast-forward merge)"
 msgstr ""
 
-#: builtin/merge.c:289
+#: builtin/merge.c:290
 msgid "abort the current in-progress merge"
 msgstr ""
 
-#: builtin/merge.c:291
+#: builtin/merge.c:292
 msgid "--abort but leave index and working tree alone"
 msgstr ""
 
-#: builtin/merge.c:293
+#: builtin/merge.c:294
 msgid "continue the current in-progress merge"
 msgstr ""
 
-#: builtin/merge.c:295 builtin/pull.c:180
+#: builtin/merge.c:296 builtin/pull.c:180
 msgid "allow merging unrelated histories"
 msgstr ""
 
-#: builtin/merge.c:302
+#: builtin/merge.c:303
 msgid "bypass pre-merge-commit and commit-msg hooks"
 msgstr ""
 
-#: builtin/merge.c:319
+#: builtin/merge.c:320
 msgid "could not run stash."
 msgstr ""
 
-#: builtin/merge.c:324
+#: builtin/merge.c:325
 msgid "stash failed"
 msgstr ""
 
-#: builtin/merge.c:329
+#: builtin/merge.c:330
 #, c-format
 msgid "not a valid object: %s"
 msgstr ""
 
-#: builtin/merge.c:351 builtin/merge.c:368
+#: builtin/merge.c:352 builtin/merge.c:369
 msgid "read-tree failed"
 msgstr ""
 
-#: builtin/merge.c:398
+#: builtin/merge.c:399
 msgid " (nothing to squash)"
 msgstr ""
 
-#: builtin/merge.c:409
+#: builtin/merge.c:410
 #, c-format
 msgid "Squash commit -- not updating HEAD\n"
 msgstr ""
 
-#: builtin/merge.c:459
+#: builtin/merge.c:460
 #, c-format
 msgid "No merge message -- not updating HEAD\n"
 msgstr ""
 
-#: builtin/merge.c:510
+#: builtin/merge.c:511
 #, c-format
 msgid "'%s' does not point to a commit"
 msgstr ""
 
-#: builtin/merge.c:597
+#: builtin/merge.c:598
 #, c-format
 msgid "Bad branch.%s.mergeoptions string: %s"
 msgstr ""
 
-#: builtin/merge.c:723
+#: builtin/merge.c:724
 msgid "Not handling anything other than two heads merge."
 msgstr ""
 
-#: builtin/merge.c:736
+#: builtin/merge.c:737
 #, c-format
 msgid "Unknown option for merge-recursive: -X%s"
 msgstr ""
 
-#: builtin/merge.c:755 t/helper/test-fast-rebase.c:209
+#: builtin/merge.c:756 t/helper/test-fast-rebase.c:209
 #, c-format
 msgid "unable to write %s"
 msgstr ""
 
-#: builtin/merge.c:807
+#: builtin/merge.c:808
 #, c-format
 msgid "Could not read from '%s'"
 msgstr ""
 
-#: builtin/merge.c:816
+#: builtin/merge.c:817
 #, c-format
 msgid "Not committing merge; use 'git commit' to complete the merge.\n"
 msgstr ""
 
-#: builtin/merge.c:822
+#: builtin/merge.c:823
 msgid ""
 "Please enter a commit message to explain why this merge is necessary,\n"
 "especially if it merges an updated upstream into a topic branch.\n"
 "\n"
 msgstr ""
 
-#: builtin/merge.c:827
+#: builtin/merge.c:828
 msgid "An empty message aborts the commit.\n"
 msgstr ""
 
-#: builtin/merge.c:830
+#: builtin/merge.c:831
 #, c-format
 msgid ""
 "Lines starting with '%c' will be ignored, and an empty message aborts\n"
 "the commit.\n"
 msgstr ""
 
-#: builtin/merge.c:883
+#: builtin/merge.c:884
 msgid "Empty commit message."
 msgstr ""
 
-#: builtin/merge.c:898
+#: builtin/merge.c:899
 #, c-format
 msgid "Wonderful.\n"
 msgstr ""
 
-#: builtin/merge.c:959
+#: builtin/merge.c:960
 #, c-format
 msgid "Automatic merge failed; fix conflicts and then commit the result.\n"
 msgstr ""
 
-#: builtin/merge.c:998
+#: builtin/merge.c:999
 msgid "No current branch."
 msgstr ""
 
-#: builtin/merge.c:1000
+#: builtin/merge.c:1001
 msgid "No remote for the current branch."
 msgstr ""
 
-#: builtin/merge.c:1002
+#: builtin/merge.c:1003
 msgid "No default upstream defined for the current branch."
 msgstr ""
 
-#: builtin/merge.c:1007
+#: builtin/merge.c:1008
 #, c-format
 msgid "No remote-tracking branch for %s from %s"
 msgstr ""
 
-#: builtin/merge.c:1064
+#: builtin/merge.c:1065
 #, c-format
 msgid "Bad value '%s' in environment '%s'"
 msgstr ""
 
-#: builtin/merge.c:1167
+#: builtin/merge.c:1168
 #, c-format
 msgid "not something we can merge in %s: %s"
 msgstr ""
 
-#: builtin/merge.c:1201
+#: builtin/merge.c:1202
 msgid "not something we can merge"
 msgstr ""
 
-#: builtin/merge.c:1311
+#: builtin/merge.c:1312
 msgid "--abort expects no arguments"
 msgstr ""
 
-#: builtin/merge.c:1315
+#: builtin/merge.c:1316
 msgid "There is no merge to abort (MERGE_HEAD missing)."
 msgstr ""
 
-#: builtin/merge.c:1333
+#: builtin/merge.c:1334
 msgid "--quit expects no arguments"
 msgstr ""
 
-#: builtin/merge.c:1346
+#: builtin/merge.c:1347
 msgid "--continue expects no arguments"
 msgstr ""
 
-#: builtin/merge.c:1350
+#: builtin/merge.c:1351
 msgid "There is no merge in progress (MERGE_HEAD missing)."
 msgstr ""
 
-#: builtin/merge.c:1366
+#: builtin/merge.c:1367
 msgid ""
 "You have not concluded your merge (MERGE_HEAD exists).\n"
 "Please, commit your changes before you merge."
 msgstr ""
 
-#: builtin/merge.c:1373
+#: builtin/merge.c:1374
 msgid ""
 "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n"
 "Please, commit your changes before you merge."
 msgstr ""
 
-#: builtin/merge.c:1376
+#: builtin/merge.c:1377
 msgid "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists)."
 msgstr ""
 
-#: builtin/merge.c:1390
+#: builtin/merge.c:1391
 msgid "You cannot combine --squash with --no-ff."
 msgstr ""
 
-#: builtin/merge.c:1392
+#: builtin/merge.c:1393
 msgid "You cannot combine --squash with --commit."
 msgstr ""
 
-#: builtin/merge.c:1408
+#: builtin/merge.c:1409
 msgid "No commit specified and merge.defaultToUpstream not set."
 msgstr ""
 
-#: builtin/merge.c:1425
+#: builtin/merge.c:1426
 msgid "Squash commit into empty head not supported yet"
 msgstr ""
 
-#: builtin/merge.c:1427
+#: builtin/merge.c:1428
 msgid "Non-fast-forward commit does not make sense into an empty head"
 msgstr ""
 
-#: builtin/merge.c:1432
+#: builtin/merge.c:1433
 #, c-format
 msgid "%s - not something we can merge"
 msgstr ""
 
-#: builtin/merge.c:1434
+#: builtin/merge.c:1435
 msgid "Can merge only exactly one commit into empty head"
 msgstr ""
 
-#: builtin/merge.c:1515
+#: builtin/merge.c:1516
 msgid "refusing to merge unrelated histories"
 msgstr ""
 
-#: builtin/merge.c:1524
+#: builtin/merge.c:1525
 msgid "Already up to date."
 msgstr ""
 
-#: builtin/merge.c:1534
+#: builtin/merge.c:1535
 #, c-format
 msgid "Updating %s..%s\n"
 msgstr ""
 
-#: builtin/merge.c:1580
+#: builtin/merge.c:1581
 #, c-format
 msgid "Trying really trivial in-index merge...\n"
 msgstr ""
 
-#: builtin/merge.c:1587
+#: builtin/merge.c:1588
 #, c-format
 msgid "Nope.\n"
 msgstr ""
 
-#: builtin/merge.c:1612
+#: builtin/merge.c:1613
 msgid "Already up to date. Yeeah!"
 msgstr ""
 
-#: builtin/merge.c:1618
+#: builtin/merge.c:1619
 msgid "Not possible to fast-forward, aborting."
 msgstr ""
 
-#: builtin/merge.c:1646 builtin/merge.c:1711
+#: builtin/merge.c:1647 builtin/merge.c:1712
 #, c-format
 msgid "Rewinding the tree to pristine...\n"
 msgstr ""
 
-#: builtin/merge.c:1650
+#: builtin/merge.c:1651
+#, c-format
+msgid "Trying merge strategy %s...\n"
+msgstr ""
+
+#: builtin/merge.c:1703
+#, c-format
+msgid "No merge strategy handled the merge.\n"
+msgstr ""
+
+#: builtin/merge.c:1705
+#, c-format
+msgid "Merge with strategy %s failed.\n"
+msgstr ""
+
+#: builtin/merge.c:1714
+#, c-format
+msgid "Using the %s to prepare resolving by hand.\n"
+msgstr ""
+
+#: builtin/merge.c:1728
+#, c-format
+msgid "Automatic merge went well; stopped before committing as requested\n"
+msgstr ""
+
+#: builtin/mktag.c:10
+msgid "git mktag"
+msgstr ""
+
+#: builtin/mktag.c:30
+#, c-format
+msgid "warning: tag input does not pass fsck: %s"
+msgstr ""
+
+#: builtin/mktag.c:41
+#, c-format
+msgid "error: tag input does not pass fsck: %s"
+msgstr ""
+
+#: builtin/mktag.c:44
+#, c-format
+msgid "%d (FSCK_IGNORE?) should never trigger this callback"
+msgstr ""
+
+#: builtin/mktag.c:59
 #, c-format
-msgid "Trying merge strategy %s...\n"
+msgid "could not read tagged object '%s'"
 msgstr ""
 
-#: builtin/merge.c:1702
+#: builtin/mktag.c:62
 #, c-format
-msgid "No merge strategy handled the merge.\n"
+msgid "object '%s' tagged as '%s', but is a '%s' type"
 msgstr ""
 
-#: builtin/merge.c:1704
-#, c-format
-msgid "Merge with strategy %s failed.\n"
+#: builtin/mktag.c:99
+msgid "tag on stdin did not pass our strict fsck check"
 msgstr ""
 
-#: builtin/merge.c:1713
-#, c-format
-msgid "Using the %s to prepare resolving by hand.\n"
+#: builtin/mktag.c:102
+msgid "tag on stdin did not refer to a valid object"
 msgstr ""
 
-#: builtin/merge.c:1727
-#, c-format
-msgid "Automatic merge went well; stopped before committing as requested\n"
+#: builtin/mktag.c:105 builtin/tag.c:232
+msgid "unable to write tag file"
 msgstr ""
 
 #: builtin/mktree.c:66
@@ -16277,7 +16628,10 @@ msgid ""
 "larger than this size"
 msgstr ""
 
-#: builtin/multi-pack-index.c:50 builtin/prune-packed.c:25
+#: builtin/multi-pack-index.c:50 builtin/notes.c:376 builtin/notes.c:431
+#: builtin/notes.c:509 builtin/notes.c:521 builtin/notes.c:598
+#: builtin/notes.c:665 builtin/notes.c:815 builtin/notes.c:963
+#: builtin/notes.c:985 builtin/prune-packed.c:25 builtin/tag.c:575
 msgid "too many arguments"
 msgstr ""
 
@@ -16381,7 +16735,7 @@ msgstr ""
 msgid "Renaming %s to %s\n"
 msgstr ""
 
-#: builtin/mv.c:280 builtin/remote.c:785 builtin/repack.c:484
+#: builtin/mv.c:280 builtin/remote.c:785 builtin/repack.c:483
 #, c-format
 msgid "renaming '%s' failed"
 msgstr ""
@@ -16566,7 +16920,7 @@ msgstr ""
 msgid "the note contents have been left in %s"
 msgstr ""
 
-#: builtin/notes.c:242 builtin/tag.c:533
+#: builtin/notes.c:242 builtin/tag.c:565
 #, c-format
 msgid "could not open or read '%s'"
 msgstr ""
@@ -16606,12 +16960,6 @@ msgstr ""
 msgid "refusing to %s notes in %s (outside of refs/notes/)"
 msgstr ""
 
-#: builtin/notes.c:376 builtin/notes.c:431 builtin/notes.c:509
-#: builtin/notes.c:521 builtin/notes.c:598 builtin/notes.c:665
-#: builtin/notes.c:815 builtin/notes.c:963 builtin/notes.c:985
-msgid "too many parameters"
-msgstr ""
-
 #: builtin/notes.c:389 builtin/notes.c:678
 #, c-format
 msgid "no note found for object %s."
@@ -16667,7 +17015,7 @@ msgid "load rewriting config for <command> (implies --stdin)"
 msgstr ""
 
 #: builtin/notes.c:517
-msgid "too few parameters"
+msgid "too few arguments"
 msgstr ""
 
 #: builtin/notes.c:538
@@ -16787,7 +17135,7 @@ msgid ""
 "abort'.\n"
 msgstr ""
 
-#: builtin/notes.c:897 builtin/tag.c:546
+#: builtin/notes.c:897 builtin/tag.c:578
 #, c-format
 msgid "Failed to resolve '%s' as a valid ref."
 msgstr ""
@@ -16805,7 +17153,7 @@ msgstr ""
 msgid "read object names from the standard input"
 msgstr ""
 
-#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:220
+#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:148
 msgid "do not remove, show only"
 msgstr ""
 
@@ -16821,7 +17169,7 @@ msgstr ""
 msgid "use notes from <notes-ref>"
 msgstr ""
 
-#: builtin/notes.c:1034 builtin/stash.c:1604
+#: builtin/notes.c:1034 builtin/stash.c:1671
 #, c-format
 msgid "unknown subcommand: %s"
 msgstr ""
@@ -16836,361 +17184,382 @@ msgid ""
 "git pack-objects [<options>...] <base-name> [< <ref-list> | < <object-list>]"
 msgstr ""
 
-#: builtin/pack-objects.c:443
+#: builtin/pack-objects.c:440
+#, c-format
+msgid ""
+"write_reuse_object: could not locate %s, expected at offset %<PRIuMAX> in "
+"pack %s"
+msgstr ""
+
+#: builtin/pack-objects.c:448
 #, c-format
 msgid "bad packed object CRC for %s"
 msgstr ""
 
-#: builtin/pack-objects.c:454
+#: builtin/pack-objects.c:459
 #, c-format
 msgid "corrupt packed object for %s"
 msgstr ""
 
-#: builtin/pack-objects.c:585
+#: builtin/pack-objects.c:590
 #, c-format
 msgid "recursive delta detected for object %s"
 msgstr ""
 
-#: builtin/pack-objects.c:796
+#: builtin/pack-objects.c:801
 #, c-format
 msgid "ordered %u objects, expected %<PRIu32>"
 msgstr ""
 
-#: builtin/pack-objects.c:1004
+#: builtin/pack-objects.c:896
+#, c-format
+msgid "expected object at offset %<PRIuMAX> in pack %s"
+msgstr ""
+
+#: builtin/pack-objects.c:1015
 msgid "disabling bitmap writing, packs are split due to pack.packSizeLimit"
 msgstr ""
 
-#: builtin/pack-objects.c:1017
+#: builtin/pack-objects.c:1028
 msgid "Writing objects"
 msgstr ""
 
-#: builtin/pack-objects.c:1078 builtin/update-index.c:90
+#: builtin/pack-objects.c:1089 builtin/update-index.c:90
 #, c-format
 msgid "failed to stat %s"
 msgstr ""
 
-#: builtin/pack-objects.c:1131
+#: builtin/pack-objects.c:1141
 #, c-format
 msgid "wrote %<PRIu32> objects while expecting %<PRIu32>"
 msgstr ""
 
-#: builtin/pack-objects.c:1348
+#: builtin/pack-objects.c:1358
 msgid "disabling bitmap writing, as some objects are not being packed"
 msgstr ""
 
-#: builtin/pack-objects.c:1796
+#: builtin/pack-objects.c:1806
 #, c-format
 msgid "delta base offset overflow in pack for %s"
 msgstr ""
 
-#: builtin/pack-objects.c:1805
+#: builtin/pack-objects.c:1815
 #, c-format
 msgid "delta base offset out of bound for %s"
 msgstr ""
 
-#: builtin/pack-objects.c:2086
+#: builtin/pack-objects.c:2096
 msgid "Counting objects"
 msgstr ""
 
-#: builtin/pack-objects.c:2231
+#: builtin/pack-objects.c:2241
 #, c-format
 msgid "unable to parse object header of %s"
 msgstr ""
 
-#: builtin/pack-objects.c:2301 builtin/pack-objects.c:2317
-#: builtin/pack-objects.c:2327
+#: builtin/pack-objects.c:2311 builtin/pack-objects.c:2327
+#: builtin/pack-objects.c:2337
 #, c-format
 msgid "object %s cannot be read"
 msgstr ""
 
-#: builtin/pack-objects.c:2304 builtin/pack-objects.c:2331
+#: builtin/pack-objects.c:2314 builtin/pack-objects.c:2341
 #, c-format
 msgid "object %s inconsistent object length (%<PRIuMAX> vs %<PRIuMAX>)"
 msgstr ""
 
-#: builtin/pack-objects.c:2341
+#: builtin/pack-objects.c:2351
 msgid "suboptimal pack - out of memory"
 msgstr ""
 
-#: builtin/pack-objects.c:2656
+#: builtin/pack-objects.c:2666
 #, c-format
 msgid "Delta compression using up to %d threads"
 msgstr ""
 
-#: builtin/pack-objects.c:2795
+#: builtin/pack-objects.c:2805
 #, c-format
 msgid "unable to pack objects reachable from tag %s"
 msgstr ""
 
-#: builtin/pack-objects.c:2883
+#: builtin/pack-objects.c:2891
 msgid "Compressing objects"
 msgstr ""
 
-#: builtin/pack-objects.c:2889
+#: builtin/pack-objects.c:2897
 msgid "inconsistency with delta count"
 msgstr ""
 
-#: builtin/pack-objects.c:2961
+#: builtin/pack-objects.c:2976
 #, c-format
 msgid ""
 "value of uploadpack.blobpackfileuri must be of the form '<object-hash> <pack-"
 "hash> <uri>' (got '%s')"
 msgstr ""
 
-#: builtin/pack-objects.c:2964
+#: builtin/pack-objects.c:2979
 #, c-format
 msgid ""
 "object already configured in another uploadpack.blobpackfileuri (got '%s')"
 msgstr ""
 
-#: builtin/pack-objects.c:2993
+#: builtin/pack-objects.c:3008
 #, c-format
 msgid ""
 "expected edge object ID, got garbage:\n"
 " %s"
 msgstr ""
 
-#: builtin/pack-objects.c:2999
+#: builtin/pack-objects.c:3014
 #, c-format
 msgid ""
 "expected object ID, got garbage:\n"
 " %s"
 msgstr ""
 
-#: builtin/pack-objects.c:3097
+#: builtin/pack-objects.c:3112
 msgid "invalid value for --missing"
 msgstr ""
 
-#: builtin/pack-objects.c:3156 builtin/pack-objects.c:3264
+#: builtin/pack-objects.c:3171 builtin/pack-objects.c:3279
 msgid "cannot open pack index"
 msgstr ""
 
-#: builtin/pack-objects.c:3187
+#: builtin/pack-objects.c:3202
 #, c-format
 msgid "loose object at %s could not be examined"
 msgstr ""
 
-#: builtin/pack-objects.c:3272
+#: builtin/pack-objects.c:3287
 msgid "unable to force loose object"
 msgstr ""
 
-#: builtin/pack-objects.c:3365
+#: builtin/pack-objects.c:3380
 #, c-format
 msgid "not a rev '%s'"
 msgstr ""
 
-#: builtin/pack-objects.c:3368
+#: builtin/pack-objects.c:3383
 #, c-format
 msgid "bad revision '%s'"
 msgstr ""
 
-#: builtin/pack-objects.c:3393
+#: builtin/pack-objects.c:3408
 msgid "unable to add recent objects"
 msgstr ""
 
-#: builtin/pack-objects.c:3446
+#: builtin/pack-objects.c:3461
 #, c-format
 msgid "unsupported index version %s"
 msgstr ""
 
-#: builtin/pack-objects.c:3450
+#: builtin/pack-objects.c:3465
 #, c-format
 msgid "bad index version '%s'"
 msgstr ""
 
-#: builtin/pack-objects.c:3488
+#: builtin/pack-objects.c:3503
 msgid "<version>[,<offset>]"
 msgstr ""
 
-#: builtin/pack-objects.c:3489
+#: builtin/pack-objects.c:3504
 msgid "write the pack index file in the specified idx format version"
 msgstr ""
 
-#: builtin/pack-objects.c:3492
+#: builtin/pack-objects.c:3507
 msgid "maximum size of each output pack file"
 msgstr ""
 
-#: builtin/pack-objects.c:3494
+#: builtin/pack-objects.c:3509
 msgid "ignore borrowed objects from alternate object store"
 msgstr ""
 
-#: builtin/pack-objects.c:3496
+#: builtin/pack-objects.c:3511
 msgid "ignore packed objects"
 msgstr ""
 
-#: builtin/pack-objects.c:3498
+#: builtin/pack-objects.c:3513
 msgid "limit pack window by objects"
 msgstr ""
 
-#: builtin/pack-objects.c:3500
+#: builtin/pack-objects.c:3515
 msgid "limit pack window by memory in addition to object limit"
 msgstr ""
 
-#: builtin/pack-objects.c:3502
+#: builtin/pack-objects.c:3517
 msgid "maximum length of delta chain allowed in the resulting pack"
 msgstr ""
 
-#: builtin/pack-objects.c:3504
+#: builtin/pack-objects.c:3519
 msgid "reuse existing deltas"
 msgstr ""
 
-#: builtin/pack-objects.c:3506
+#: builtin/pack-objects.c:3521
 msgid "reuse existing objects"
 msgstr ""
 
-#: builtin/pack-objects.c:3508
+#: builtin/pack-objects.c:3523
 msgid "use OFS_DELTA objects"
 msgstr ""
 
-#: builtin/pack-objects.c:3510
+#: builtin/pack-objects.c:3525
 msgid "use threads when searching for best delta matches"
 msgstr ""
 
-#: builtin/pack-objects.c:3512
+#: builtin/pack-objects.c:3527
 msgid "do not create an empty pack output"
 msgstr ""
 
-#: builtin/pack-objects.c:3514
+#: builtin/pack-objects.c:3529
 msgid "read revision arguments from standard input"
 msgstr ""
 
-#: builtin/pack-objects.c:3516
+#: builtin/pack-objects.c:3531
 msgid "limit the objects to those that are not yet packed"
 msgstr ""
 
-#: builtin/pack-objects.c:3519
+#: builtin/pack-objects.c:3534
 msgid "include objects reachable from any reference"
 msgstr ""
 
-#: builtin/pack-objects.c:3522
+#: builtin/pack-objects.c:3537
 msgid "include objects referred by reflog entries"
 msgstr ""
 
-#: builtin/pack-objects.c:3525
+#: builtin/pack-objects.c:3540
 msgid "include objects referred to by the index"
 msgstr ""
 
-#: builtin/pack-objects.c:3528
+#: builtin/pack-objects.c:3543
 msgid "output pack to stdout"
 msgstr ""
 
-#: builtin/pack-objects.c:3530
+#: builtin/pack-objects.c:3545
 msgid "include tag objects that refer to objects to be packed"
 msgstr ""
 
-#: builtin/pack-objects.c:3532
+#: builtin/pack-objects.c:3547
 msgid "keep unreachable objects"
 msgstr ""
 
-#: builtin/pack-objects.c:3534
+#: builtin/pack-objects.c:3549
 msgid "pack loose unreachable objects"
 msgstr ""
 
-#: builtin/pack-objects.c:3536
+#: builtin/pack-objects.c:3551
 msgid "unpack unreachable objects newer than <time>"
 msgstr ""
 
-#: builtin/pack-objects.c:3539
+#: builtin/pack-objects.c:3554
 msgid "use the sparse reachability algorithm"
 msgstr ""
 
-#: builtin/pack-objects.c:3541
+#: builtin/pack-objects.c:3556
 msgid "create thin packs"
 msgstr ""
 
-#: builtin/pack-objects.c:3543
+#: builtin/pack-objects.c:3558
 msgid "create packs suitable for shallow fetches"
 msgstr ""
 
-#: builtin/pack-objects.c:3545
+#: builtin/pack-objects.c:3560
 msgid "ignore packs that have companion .keep file"
 msgstr ""
 
-#: builtin/pack-objects.c:3547
+#: builtin/pack-objects.c:3562
 msgid "ignore this pack"
 msgstr ""
 
-#: builtin/pack-objects.c:3549
+#: builtin/pack-objects.c:3564
 msgid "pack compression level"
 msgstr ""
 
-#: builtin/pack-objects.c:3551
+#: builtin/pack-objects.c:3566
 msgid "do not hide commits by grafts"
 msgstr ""
 
-#: builtin/pack-objects.c:3553
+#: builtin/pack-objects.c:3568
 msgid "use a bitmap index if available to speed up counting objects"
 msgstr ""
 
-#: builtin/pack-objects.c:3555
+#: builtin/pack-objects.c:3570
 msgid "write a bitmap index together with the pack index"
 msgstr ""
 
-#: builtin/pack-objects.c:3559
+#: builtin/pack-objects.c:3574
 msgid "write a bitmap index if possible"
 msgstr ""
 
-#: builtin/pack-objects.c:3563
+#: builtin/pack-objects.c:3578
 msgid "handling for missing objects"
 msgstr ""
 
-#: builtin/pack-objects.c:3566
+#: builtin/pack-objects.c:3581
 msgid "do not pack objects in promisor packfiles"
 msgstr ""
 
-#: builtin/pack-objects.c:3568
+#: builtin/pack-objects.c:3583
 msgid "respect islands during delta compression"
 msgstr ""
 
-#: builtin/pack-objects.c:3570
+#: builtin/pack-objects.c:3585
 msgid "protocol"
 msgstr ""
 
-#: builtin/pack-objects.c:3571
+#: builtin/pack-objects.c:3586
 msgid "exclude any configured uploadpack.blobpackfileuri with this protocol"
 msgstr ""
 
-#: builtin/pack-objects.c:3600
+#: builtin/pack-objects.c:3617
 #, c-format
 msgid "delta chain depth %d is too deep, forcing %d"
 msgstr ""
 
-#: builtin/pack-objects.c:3605
+#: builtin/pack-objects.c:3622
 #, c-format
 msgid "pack.deltaCacheLimit is too high, forcing %d"
 msgstr ""
 
-#: builtin/pack-objects.c:3659
+#: builtin/pack-objects.c:3676
 msgid "--max-pack-size cannot be used to build a pack for transfer"
 msgstr ""
 
-#: builtin/pack-objects.c:3661
+#: builtin/pack-objects.c:3678
 msgid "minimum pack size limit is 1 MiB"
 msgstr ""
 
-#: builtin/pack-objects.c:3666
+#: builtin/pack-objects.c:3683
 msgid "--thin cannot be used to build an indexable pack"
 msgstr ""
 
-#: builtin/pack-objects.c:3669
+#: builtin/pack-objects.c:3686
 msgid "--keep-unreachable and --unpack-unreachable are incompatible"
 msgstr ""
 
-#: builtin/pack-objects.c:3675
+#: builtin/pack-objects.c:3692
 msgid "cannot use --filter without --stdout"
 msgstr ""
 
-#: builtin/pack-objects.c:3735
+#: builtin/pack-objects.c:3752
 msgid "Enumerating objects"
 msgstr ""
 
-#: builtin/pack-objects.c:3766
+#: builtin/pack-objects.c:3783
 #, c-format
 msgid ""
 "Total %<PRIu32> (delta %<PRIu32>), reused %<PRIu32> (delta %<PRIu32>), pack-"
 "reused %<PRIu32>"
 msgstr ""
 
+#: builtin/pack-redundant.c:601
+msgid ""
+"'git pack-redundant' is nominated for removal.\n"
+"If you still use this command, please add an extra\n"
+"option, '--i-still-use-this', on the command line\n"
+"and let us know you still use it by sending an e-mail\n"
+"to <git@vger.kernel.org>.  Thanks.\n"
+msgstr ""
+
 #: builtin/pack-refs.c:8
 msgid "git pack-refs [<options>]"
 msgstr ""
@@ -17248,7 +17617,7 @@ msgstr ""
 msgid "incorporate changes by rebasing rather than merging"
 msgstr ""
 
-#: builtin/pull.c:158 builtin/rebase.c:490 builtin/revert.c:126
+#: builtin/pull.c:158 builtin/rebase.c:492 builtin/revert.c:126
 msgid "allow fast-forward"
 msgstr ""
 
@@ -17273,41 +17642,24 @@ msgstr ""
 msgid "Invalid value for pull.ff: %s"
 msgstr ""
 
-#: builtin/pull.c:348
-msgid ""
-"Pulling without specifying how to reconcile divergent branches is\n"
-"discouraged. You can squelch this message by running one of the following\n"
-"commands sometime before your next pull:\n"
-"\n"
-"  git config pull.rebase false  # merge (the default strategy)\n"
-"  git config pull.rebase true   # rebase\n"
-"  git config pull.ff only       # fast-forward only\n"
-"\n"
-"You can replace \"git config\" with \"git config --global\" to set a "
-"default\n"
-"preference for all repositories. You can also pass --rebase, --no-rebase,\n"
-"or --ff-only on the command line to override the configured default per\n"
-"invocation.\n"
-msgstr ""
-
-#: builtin/pull.c:458
+#: builtin/pull.c:445
 msgid ""
 "There is no candidate for rebasing against among the refs that you just "
 "fetched."
 msgstr ""
 
-#: builtin/pull.c:460
+#: builtin/pull.c:447
 msgid ""
 "There are no candidates for merging among the refs that you just fetched."
 msgstr ""
 
-#: builtin/pull.c:461
+#: builtin/pull.c:448
 msgid ""
 "Generally this means that you provided a wildcard refspec which had no\n"
 "matches on the remote end."
 msgstr ""
 
-#: builtin/pull.c:464
+#: builtin/pull.c:451
 #, c-format
 msgid ""
 "You asked to pull from the remote '%s', but did not specify\n"
@@ -17315,69 +17667,86 @@ msgid ""
 "for your current branch, you must specify a branch on the command line."
 msgstr ""
 
-#: builtin/pull.c:469 builtin/rebase.c:1246
+#: builtin/pull.c:456 builtin/rebase.c:1253
 msgid "You are not currently on a branch."
 msgstr ""
 
-#: builtin/pull.c:471 builtin/pull.c:486
+#: builtin/pull.c:458 builtin/pull.c:473
 msgid "Please specify which branch you want to rebase against."
 msgstr ""
 
-#: builtin/pull.c:473 builtin/pull.c:488
+#: builtin/pull.c:460 builtin/pull.c:475
 msgid "Please specify which branch you want to merge with."
 msgstr ""
 
-#: builtin/pull.c:474 builtin/pull.c:489
+#: builtin/pull.c:461 builtin/pull.c:476
 msgid "See git-pull(1) for details."
 msgstr ""
 
-#: builtin/pull.c:476 builtin/pull.c:482 builtin/pull.c:491
-#: builtin/rebase.c:1252
+#: builtin/pull.c:463 builtin/pull.c:469 builtin/pull.c:478
+#: builtin/rebase.c:1259
 msgid "<remote>"
 msgstr ""
 
-#: builtin/pull.c:476 builtin/pull.c:491 builtin/pull.c:496
+#: builtin/pull.c:463 builtin/pull.c:478 builtin/pull.c:483
 msgid "<branch>"
 msgstr ""
 
-#: builtin/pull.c:484 builtin/rebase.c:1244
+#: builtin/pull.c:471 builtin/rebase.c:1251
 msgid "There is no tracking information for the current branch."
 msgstr ""
 
-#: builtin/pull.c:493
+#: builtin/pull.c:480
 msgid ""
 "If you wish to set tracking information for this branch you can do so with:"
 msgstr ""
 
-#: builtin/pull.c:498
+#: builtin/pull.c:485
 #, c-format
 msgid ""
 "Your configuration specifies to merge with the ref '%s'\n"
 "from the remote, but no such ref was fetched."
 msgstr ""
 
-#: builtin/pull.c:609
+#: builtin/pull.c:596
 #, c-format
 msgid "unable to access commit %s"
 msgstr ""
 
-#: builtin/pull.c:915
+#: builtin/pull.c:902
 msgid "ignoring --verify-signatures for rebase"
 msgstr ""
 
-#: builtin/pull.c:972
+#: builtin/pull.c:930
+msgid ""
+"Pulling without specifying how to reconcile divergent branches is\n"
+"discouraged. You can squelch this message by running one of the following\n"
+"commands sometime before your next pull:\n"
+"\n"
+"  git config pull.rebase false  # merge (the default strategy)\n"
+"  git config pull.rebase true   # rebase\n"
+"  git config pull.ff only       # fast-forward only\n"
+"\n"
+"You can replace \"git config\" with \"git config --global\" to set a "
+"default\n"
+"preference for all repositories. You can also pass --rebase, --no-rebase,\n"
+"or --ff-only on the command line to override the configured default per\n"
+"invocation.\n"
+msgstr ""
+
+#: builtin/pull.c:991
 msgid "Updating an unborn branch with changes added to the index."
 msgstr ""
 
-#: builtin/pull.c:976
+#: builtin/pull.c:995
 msgid "pull with rebase"
 msgstr ""
 
-#: builtin/pull.c:977
+#: builtin/pull.c:996
 msgid "please commit or stash them."
 msgstr ""
 
-#: builtin/pull.c:1002
+#: builtin/pull.c:1021
 #, c-format
 msgid ""
 "fetch updated the current branch head.\n"
@@ -17385,7 +17754,7 @@ msgid ""
 "commit %s."
 msgstr ""
 
-#: builtin/pull.c:1008
+#: builtin/pull.c:1027
 #, c-format
 msgid ""
 "Cannot fast-forward your working tree.\n"
@@ -17396,15 +17765,15 @@ msgid ""
 "to recover."
 msgstr ""
 
-#: builtin/pull.c:1023
+#: builtin/pull.c:1042
 msgid "Cannot merge multiple branches into empty head."
 msgstr ""
 
-#: builtin/pull.c:1027
+#: builtin/pull.c:1046
 msgid "Cannot rebase onto multiple branches."
 msgstr ""
 
-#: builtin/pull.c:1041
+#: builtin/pull.c:1067
 msgid "cannot rebase with locally recorded submodule modifications"
 msgstr ""
 
@@ -17655,44 +18024,52 @@ msgstr ""
 msgid "push options must not have new line characters"
 msgstr ""
 
-#: builtin/range-diff.c:8
+#: builtin/range-diff.c:9
 msgid "git range-diff [<options>] <old-base>..<old-tip> <new-base>..<new-tip>"
 msgstr ""
 
-#: builtin/range-diff.c:9
+#: builtin/range-diff.c:10
 msgid "git range-diff [<options>] <old-tip>...<new-tip>"
 msgstr ""
 
-#: builtin/range-diff.c:10
+#: builtin/range-diff.c:11
 msgid "git range-diff [<options>] <base> <old-tip> <new-tip>"
 msgstr ""
 
-#: builtin/range-diff.c:22
+#: builtin/range-diff.c:28
 msgid "Percentage by which creation is weighted"
 msgstr ""
 
-#: builtin/range-diff.c:24
+#: builtin/range-diff.c:30
 msgid "use simple diff colors"
 msgstr ""
 
-#: builtin/range-diff.c:26
+#: builtin/range-diff.c:32
 msgid "notes"
 msgstr ""
 
-#: builtin/range-diff.c:26
+#: builtin/range-diff.c:32
 msgid "passed to 'git log'"
 msgstr ""
 
-#: builtin/range-diff.c:50 builtin/range-diff.c:54
+#: builtin/range-diff.c:35
+msgid "only emit output related to the first range"
+msgstr ""
+
+#: builtin/range-diff.c:37
+msgid "only emit output related to the second range"
+msgstr ""
+
+#: builtin/range-diff.c:60 builtin/range-diff.c:64
 #, c-format
-msgid "no .. in range: '%s'"
+msgid "not a commit range: '%s'"
 msgstr ""
 
-#: builtin/range-diff.c:64
+#: builtin/range-diff.c:74
 msgid "single arg format must be symmetric range"
 msgstr ""
 
-#: builtin/range-diff.c:79
+#: builtin/range-diff.c:89
 msgid "need two commit ranges"
 msgstr ""
 
@@ -17790,193 +18167,193 @@ msgstr ""
 msgid "git rebase --continue | --abort | --skip | --edit-todo"
 msgstr ""
 
-#: builtin/rebase.c:193 builtin/rebase.c:217 builtin/rebase.c:244
+#: builtin/rebase.c:195 builtin/rebase.c:219 builtin/rebase.c:246
 #, c-format
 msgid "unusable todo list: '%s'"
 msgstr ""
 
-#: builtin/rebase.c:310
+#: builtin/rebase.c:312
 #, c-format
 msgid "could not create temporary %s"
 msgstr ""
 
-#: builtin/rebase.c:316
+#: builtin/rebase.c:318
 msgid "could not mark as interactive"
 msgstr ""
 
-#: builtin/rebase.c:369
+#: builtin/rebase.c:371
 msgid "could not generate todo list"
 msgstr ""
 
-#: builtin/rebase.c:411
+#: builtin/rebase.c:413
 msgid "a base commit must be provided with --upstream or --onto"
 msgstr ""
 
-#: builtin/rebase.c:480
+#: builtin/rebase.c:482
 msgid "git rebase--interactive [<options>]"
 msgstr ""
 
-#: builtin/rebase.c:493 builtin/rebase.c:1388
+#: builtin/rebase.c:495 builtin/rebase.c:1394
 msgid "keep commits which start empty"
 msgstr ""
 
-#: builtin/rebase.c:497 builtin/revert.c:128
+#: builtin/rebase.c:499 builtin/revert.c:128
 msgid "allow commits with empty messages"
 msgstr ""
 
-#: builtin/rebase.c:499
+#: builtin/rebase.c:501
 msgid "rebase merge commits"
 msgstr ""
 
-#: builtin/rebase.c:501
+#: builtin/rebase.c:503
 msgid "keep original branch points of cousins"
 msgstr ""
 
-#: builtin/rebase.c:503
+#: builtin/rebase.c:505
 msgid "move commits that begin with squash!/fixup!"
 msgstr ""
 
-#: builtin/rebase.c:504
+#: builtin/rebase.c:506
 msgid "sign commits"
 msgstr ""
 
-#: builtin/rebase.c:506 builtin/rebase.c:1327
+#: builtin/rebase.c:508 builtin/rebase.c:1333
 msgid "display a diffstat of what changed upstream"
 msgstr ""
 
-#: builtin/rebase.c:508
+#: builtin/rebase.c:510
 msgid "continue rebase"
 msgstr ""
 
-#: builtin/rebase.c:510
+#: builtin/rebase.c:512
 msgid "skip commit"
 msgstr ""
 
-#: builtin/rebase.c:511
+#: builtin/rebase.c:513
 msgid "edit the todo list"
 msgstr ""
 
-#: builtin/rebase.c:513
+#: builtin/rebase.c:515
 msgid "show the current patch"
 msgstr ""
 
-#: builtin/rebase.c:516
+#: builtin/rebase.c:518
 msgid "shorten commit ids in the todo list"
 msgstr ""
 
-#: builtin/rebase.c:518
+#: builtin/rebase.c:520
 msgid "expand commit ids in the todo list"
 msgstr ""
 
-#: builtin/rebase.c:520
+#: builtin/rebase.c:522
 msgid "check the todo list"
 msgstr ""
 
-#: builtin/rebase.c:522
+#: builtin/rebase.c:524
 msgid "rearrange fixup/squash lines"
 msgstr ""
 
-#: builtin/rebase.c:524
+#: builtin/rebase.c:526
 msgid "insert exec commands in todo list"
 msgstr ""
 
-#: builtin/rebase.c:525
+#: builtin/rebase.c:527
 msgid "onto"
 msgstr ""
 
-#: builtin/rebase.c:528
+#: builtin/rebase.c:530
 msgid "restrict-revision"
 msgstr ""
 
-#: builtin/rebase.c:528
+#: builtin/rebase.c:530
 msgid "restrict revision"
 msgstr ""
 
-#: builtin/rebase.c:530
+#: builtin/rebase.c:532
 msgid "squash-onto"
 msgstr ""
 
-#: builtin/rebase.c:531
+#: builtin/rebase.c:533
 msgid "squash onto"
 msgstr ""
 
-#: builtin/rebase.c:533
+#: builtin/rebase.c:535
 msgid "the upstream commit"
 msgstr ""
 
-#: builtin/rebase.c:535
+#: builtin/rebase.c:537
 msgid "head-name"
 msgstr ""
 
-#: builtin/rebase.c:535
+#: builtin/rebase.c:537
 msgid "head name"
 msgstr ""
 
-#: builtin/rebase.c:540
+#: builtin/rebase.c:542
 msgid "rebase strategy"
 msgstr ""
 
-#: builtin/rebase.c:541
+#: builtin/rebase.c:543
 msgid "strategy-opts"
 msgstr ""
 
-#: builtin/rebase.c:542
+#: builtin/rebase.c:544
 msgid "strategy options"
 msgstr ""
 
-#: builtin/rebase.c:543
+#: builtin/rebase.c:545
 msgid "switch-to"
 msgstr ""
 
-#: builtin/rebase.c:544
+#: builtin/rebase.c:546
 msgid "the branch or commit to checkout"
 msgstr ""
 
-#: builtin/rebase.c:545
+#: builtin/rebase.c:547
 msgid "onto-name"
 msgstr ""
 
-#: builtin/rebase.c:545
+#: builtin/rebase.c:547
 msgid "onto name"
 msgstr ""
 
-#: builtin/rebase.c:546
+#: builtin/rebase.c:548
 msgid "cmd"
 msgstr ""
 
-#: builtin/rebase.c:546
+#: builtin/rebase.c:548
 msgid "the command to run"
 msgstr ""
 
-#: builtin/rebase.c:549 builtin/rebase.c:1421
+#: builtin/rebase.c:551 builtin/rebase.c:1427
 msgid "automatically re-schedule any `exec` that fails"
 msgstr ""
 
-#: builtin/rebase.c:565
+#: builtin/rebase.c:567
 msgid "--[no-]rebase-cousins has no effect without --rebase-merges"
 msgstr ""
 
-#: builtin/rebase.c:581
+#: builtin/rebase.c:583
 #, c-format
 msgid "%s requires the merge backend"
 msgstr ""
 
-#: builtin/rebase.c:624
+#: builtin/rebase.c:626
 #, c-format
 msgid "could not get 'onto': '%s'"
 msgstr ""
 
-#: builtin/rebase.c:641
+#: builtin/rebase.c:643
 #, c-format
 msgid "invalid orig-head: '%s'"
 msgstr ""
 
-#: builtin/rebase.c:666
+#: builtin/rebase.c:668
 #, c-format
 msgid "ignoring invalid allow_rerere_autoupdate: '%s'"
 msgstr ""
 
-#: builtin/rebase.c:811 git-rebase--preserve-merges.sh:81
+#: builtin/rebase.c:813 git-rebase--preserve-merges.sh:81
 msgid ""
 "Resolve all conflicts manually, mark them as resolved with\n"
 "\"git add/rm <conflicted_files>\", then run \"git rebase --continue\".\n"
@@ -17985,7 +18362,7 @@ msgid ""
 "abort\"."
 msgstr ""
 
-#: builtin/rebase.c:894
+#: builtin/rebase.c:896
 #, c-format
 msgid ""
 "\n"
@@ -17997,14 +18374,14 @@ msgid ""
 "As a result, git cannot rebase them."
 msgstr ""
 
-#: builtin/rebase.c:1220
+#: builtin/rebase.c:1227
 #, c-format
 msgid ""
 "unrecognized empty type '%s'; valid values are \"drop\", \"keep\", and \"ask"
 "\"."
 msgstr ""
 
-#: builtin/rebase.c:1238
+#: builtin/rebase.c:1245
 #, c-format
 msgid ""
 "%s\n"
@@ -18015,7 +18392,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: builtin/rebase.c:1254
+#: builtin/rebase.c:1261
 #, c-format
 msgid ""
 "If you wish to set tracking information for this branch you can do so with:\n"
@@ -18024,201 +18401,201 @@ msgid ""
 "\n"
 msgstr ""
 
-#: builtin/rebase.c:1284
+#: builtin/rebase.c:1291
 msgid "exec commands cannot contain newlines"
 msgstr ""
 
-#: builtin/rebase.c:1288
+#: builtin/rebase.c:1295
 msgid "empty exec command"
 msgstr ""
 
-#: builtin/rebase.c:1318
+#: builtin/rebase.c:1324
 msgid "rebase onto given branch instead of upstream"
 msgstr ""
 
-#: builtin/rebase.c:1320
+#: builtin/rebase.c:1326
 msgid "use the merge-base of upstream and branch as the current base"
 msgstr ""
 
-#: builtin/rebase.c:1322
+#: builtin/rebase.c:1328
 msgid "allow pre-rebase hook to run"
 msgstr ""
 
-#: builtin/rebase.c:1324
+#: builtin/rebase.c:1330
 msgid "be quiet. implies --no-stat"
 msgstr ""
 
-#: builtin/rebase.c:1330
+#: builtin/rebase.c:1336
 msgid "do not show diffstat of what changed upstream"
 msgstr ""
 
-#: builtin/rebase.c:1333
+#: builtin/rebase.c:1339
 msgid "add a Signed-off-by trailer to each commit"
 msgstr ""
 
-#: builtin/rebase.c:1336
+#: builtin/rebase.c:1342
 msgid "make committer date match author date"
 msgstr ""
 
-#: builtin/rebase.c:1338
+#: builtin/rebase.c:1344
 msgid "ignore author date and use current date"
 msgstr ""
 
-#: builtin/rebase.c:1340
+#: builtin/rebase.c:1346
 msgid "synonym of --reset-author-date"
 msgstr ""
 
-#: builtin/rebase.c:1342 builtin/rebase.c:1346
+#: builtin/rebase.c:1348 builtin/rebase.c:1352
 msgid "passed to 'git apply'"
 msgstr ""
 
-#: builtin/rebase.c:1344
+#: builtin/rebase.c:1350
 msgid "ignore changes in whitespace"
 msgstr ""
 
-#: builtin/rebase.c:1348 builtin/rebase.c:1351
+#: builtin/rebase.c:1354 builtin/rebase.c:1357
 msgid "cherry-pick all commits, even if unchanged"
 msgstr ""
 
-#: builtin/rebase.c:1353
+#: builtin/rebase.c:1359
 msgid "continue"
 msgstr ""
 
-#: builtin/rebase.c:1356
+#: builtin/rebase.c:1362
 msgid "skip current patch and continue"
 msgstr ""
 
-#: builtin/rebase.c:1358
+#: builtin/rebase.c:1364
 msgid "abort and check out the original branch"
 msgstr ""
 
-#: builtin/rebase.c:1361
+#: builtin/rebase.c:1367
 msgid "abort but keep HEAD where it is"
 msgstr ""
 
-#: builtin/rebase.c:1362
+#: builtin/rebase.c:1368
 msgid "edit the todo list during an interactive rebase"
 msgstr ""
 
-#: builtin/rebase.c:1365
+#: builtin/rebase.c:1371
 msgid "show the patch file being applied or merged"
 msgstr ""
 
-#: builtin/rebase.c:1368
+#: builtin/rebase.c:1374
 msgid "use apply strategies to rebase"
 msgstr ""
 
-#: builtin/rebase.c:1372
+#: builtin/rebase.c:1378
 msgid "use merging strategies to rebase"
 msgstr ""
 
-#: builtin/rebase.c:1376
+#: builtin/rebase.c:1382
 msgid "let the user edit the list of commits to rebase"
 msgstr ""
 
-#: builtin/rebase.c:1380
+#: builtin/rebase.c:1386
 msgid "(DEPRECATED) try to recreate merges instead of ignoring them"
 msgstr ""
 
-#: builtin/rebase.c:1385
+#: builtin/rebase.c:1391
 msgid "how to handle commits that become empty"
 msgstr ""
 
-#: builtin/rebase.c:1392
+#: builtin/rebase.c:1398
 msgid "move commits that begin with squash!/fixup! under -i"
 msgstr ""
 
-#: builtin/rebase.c:1399
+#: builtin/rebase.c:1405
 msgid "add exec lines after each commit of the editable list"
 msgstr ""
 
-#: builtin/rebase.c:1403
+#: builtin/rebase.c:1409
 msgid "allow rebasing commits with empty messages"
 msgstr ""
 
-#: builtin/rebase.c:1407
+#: builtin/rebase.c:1413
 msgid "try to rebase merges instead of skipping them"
 msgstr ""
 
-#: builtin/rebase.c:1410
+#: builtin/rebase.c:1416
 msgid "use 'merge-base --fork-point' to refine upstream"
 msgstr ""
 
-#: builtin/rebase.c:1412
+#: builtin/rebase.c:1418
 msgid "use the given merge strategy"
 msgstr ""
 
-#: builtin/rebase.c:1414 builtin/revert.c:115
+#: builtin/rebase.c:1420 builtin/revert.c:115
 msgid "option"
 msgstr ""
 
-#: builtin/rebase.c:1415
+#: builtin/rebase.c:1421
 msgid "pass the argument through to the merge strategy"
 msgstr ""
 
-#: builtin/rebase.c:1418
+#: builtin/rebase.c:1424
 msgid "rebase all reachable commits up to the root(s)"
 msgstr ""
 
-#: builtin/rebase.c:1423
+#: builtin/rebase.c:1429
 msgid "apply all changes, even those already present upstream"
 msgstr ""
 
-#: builtin/rebase.c:1440
+#: builtin/rebase.c:1446
 msgid ""
 "the rebase.useBuiltin support has been removed!\n"
 "See its entry in 'git help config' for details."
 msgstr ""
 
-#: builtin/rebase.c:1446
+#: builtin/rebase.c:1452
 msgid "It looks like 'git am' is in progress. Cannot rebase."
 msgstr ""
 
-#: builtin/rebase.c:1487
+#: builtin/rebase.c:1493
 msgid ""
 "git rebase --preserve-merges is deprecated. Use --rebase-merges instead."
 msgstr ""
 
-#: builtin/rebase.c:1492
+#: builtin/rebase.c:1498
 msgid "cannot combine '--keep-base' with '--onto'"
 msgstr ""
 
-#: builtin/rebase.c:1494
+#: builtin/rebase.c:1500
 msgid "cannot combine '--keep-base' with '--root'"
 msgstr ""
 
-#: builtin/rebase.c:1498
+#: builtin/rebase.c:1504
 msgid "cannot combine '--root' with '--fork-point'"
 msgstr ""
 
-#: builtin/rebase.c:1501
+#: builtin/rebase.c:1507
 msgid "No rebase in progress?"
 msgstr ""
 
-#: builtin/rebase.c:1505
+#: builtin/rebase.c:1511
 msgid "The --edit-todo action can only be used during interactive rebase."
 msgstr ""
 
-#: builtin/rebase.c:1528 t/helper/test-fast-rebase.c:123
+#: builtin/rebase.c:1534 t/helper/test-fast-rebase.c:123
 msgid "Cannot read HEAD"
 msgstr ""
 
-#: builtin/rebase.c:1540
+#: builtin/rebase.c:1546
 msgid ""
 "You must edit all merge conflicts and then\n"
 "mark them as resolved using git add"
 msgstr ""
 
-#: builtin/rebase.c:1559
+#: builtin/rebase.c:1565
 msgid "could not discard worktree changes"
 msgstr ""
 
-#: builtin/rebase.c:1578
+#: builtin/rebase.c:1584
 #, c-format
 msgid "could not move back to %s"
 msgstr ""
 
-#: builtin/rebase.c:1624
+#: builtin/rebase.c:1630
 #, c-format
 msgid ""
 "It seems that there is already a %s directory, and\n"
@@ -18231,131 +18608,131 @@ msgid ""
 "valuable there.\n"
 msgstr ""
 
-#: builtin/rebase.c:1652
+#: builtin/rebase.c:1658
 msgid "switch `C' expects a numerical value"
 msgstr ""
 
-#: builtin/rebase.c:1694
+#: builtin/rebase.c:1700
 #, c-format
 msgid "Unknown mode: %s"
 msgstr ""
 
-#: builtin/rebase.c:1733
+#: builtin/rebase.c:1739
 msgid "--strategy requires --merge or --interactive"
 msgstr ""
 
-#: builtin/rebase.c:1763
+#: builtin/rebase.c:1769
 msgid "cannot combine apply options with merge options"
 msgstr ""
 
-#: builtin/rebase.c:1776
+#: builtin/rebase.c:1782
 #, c-format
 msgid "Unknown rebase backend: %s"
 msgstr ""
 
-#: builtin/rebase.c:1806
+#: builtin/rebase.c:1812
 msgid "--reschedule-failed-exec requires --exec or --interactive"
 msgstr ""
 
-#: builtin/rebase.c:1826
+#: builtin/rebase.c:1832
 msgid "cannot combine '--preserve-merges' with '--rebase-merges'"
 msgstr ""
 
-#: builtin/rebase.c:1830
+#: builtin/rebase.c:1836
 msgid ""
 "error: cannot combine '--preserve-merges' with '--reschedule-failed-exec'"
 msgstr ""
 
-#: builtin/rebase.c:1854
+#: builtin/rebase.c:1860
 #, c-format
 msgid "invalid upstream '%s'"
 msgstr ""
 
-#: builtin/rebase.c:1860
+#: builtin/rebase.c:1866
 msgid "Could not create new root commit"
 msgstr ""
 
-#: builtin/rebase.c:1886
+#: builtin/rebase.c:1892
 #, c-format
 msgid "'%s': need exactly one merge base with branch"
 msgstr ""
 
-#: builtin/rebase.c:1889
+#: builtin/rebase.c:1895
 #, c-format
 msgid "'%s': need exactly one merge base"
 msgstr ""
 
-#: builtin/rebase.c:1897
+#: builtin/rebase.c:1903
 #, c-format
 msgid "Does not point to a valid commit '%s'"
 msgstr ""
 
-#: builtin/rebase.c:1923
+#: builtin/rebase.c:1931
 #, c-format
 msgid "fatal: no such branch/commit '%s'"
 msgstr ""
 
-#: builtin/rebase.c:1931 builtin/submodule--helper.c:40
+#: builtin/rebase.c:1939 builtin/submodule--helper.c:40
 #: builtin/submodule--helper.c:2414
 #, c-format
 msgid "No such ref: %s"
 msgstr ""
 
-#: builtin/rebase.c:1942
+#: builtin/rebase.c:1950
 msgid "Could not resolve HEAD to a revision"
 msgstr ""
 
-#: builtin/rebase.c:1963
+#: builtin/rebase.c:1971
 msgid "Please commit or stash them."
 msgstr ""
 
-#: builtin/rebase.c:1999
+#: builtin/rebase.c:2007
 #, c-format
 msgid "could not switch to %s"
 msgstr ""
 
-#: builtin/rebase.c:2010
+#: builtin/rebase.c:2018
 msgid "HEAD is up to date."
 msgstr ""
 
-#: builtin/rebase.c:2012
+#: builtin/rebase.c:2020
 #, c-format
 msgid "Current branch %s is up to date.\n"
 msgstr ""
 
-#: builtin/rebase.c:2020
+#: builtin/rebase.c:2028
 msgid "HEAD is up to date, rebase forced."
 msgstr ""
 
-#: builtin/rebase.c:2022
+#: builtin/rebase.c:2030
 #, c-format
 msgid "Current branch %s is up to date, rebase forced.\n"
 msgstr ""
 
-#: builtin/rebase.c:2030
+#: builtin/rebase.c:2038
 msgid "The pre-rebase hook refused to rebase."
 msgstr ""
 
-#: builtin/rebase.c:2037
+#: builtin/rebase.c:2045
 #, c-format
 msgid "Changes to %s:\n"
 msgstr ""
 
-#: builtin/rebase.c:2040
+#: builtin/rebase.c:2048
 #, c-format
 msgid "Changes from %s to %s:\n"
 msgstr ""
 
-#: builtin/rebase.c:2065
+#: builtin/rebase.c:2073
 #, c-format
 msgid "First, rewinding head to replay your work on top of it...\n"
 msgstr ""
 
-#: builtin/rebase.c:2074
+#: builtin/rebase.c:2082
 msgid "Could not detach HEAD"
 msgstr ""
 
-#: builtin/rebase.c:2083
+#: builtin/rebase.c:2091
 #, c-format
 msgid "Fast-forwarded %s to %s.\n"
 msgstr ""
@@ -18423,36 +18800,36 @@ msgstr ""
 msgid "'%s' is not a valid timestamp"
 msgstr ""
 
-#: builtin/reflog.c:606
+#: builtin/reflog.c:609
 #, c-format
 msgid "Marking reachable objects..."
 msgstr ""
 
-#: builtin/reflog.c:644
+#: builtin/reflog.c:647
 #, c-format
 msgid "%s points nowhere!"
 msgstr ""
 
-#: builtin/reflog.c:696
+#: builtin/reflog.c:699
 msgid "no reflog specified to delete"
 msgstr ""
 
-#: builtin/reflog.c:705
+#: builtin/reflog.c:708
 #, c-format
 msgid "not a reflog: %s"
 msgstr ""
 
-#: builtin/reflog.c:710
+#: builtin/reflog.c:713
 #, c-format
 msgid "no reflog for '%s'"
 msgstr ""
 
-#: builtin/reflog.c:756
+#: builtin/reflog.c:759
 #, c-format
 msgid "invalid ref format: %s"
 msgstr ""
 
-#: builtin/reflog.c:765
+#: builtin/reflog.c:768
 msgid "git reflog [ show | expire | delete | exists ]"
 msgstr ""
 
@@ -18949,126 +19326,126 @@ msgstr ""
 msgid "Will not delete all non-push URLs"
 msgstr ""
 
-#: builtin/repack.c:25
+#: builtin/repack.c:26
 msgid "git repack [<options>]"
 msgstr ""
 
-#: builtin/repack.c:30
+#: builtin/repack.c:31
 msgid ""
 "Incremental repacks are incompatible with bitmap indexes.  Use\n"
 "--no-write-bitmap-index or disable the pack.writebitmaps configuration."
 msgstr ""
 
-#: builtin/repack.c:197
+#: builtin/repack.c:198
 msgid "could not start pack-objects to repack promisor objects"
 msgstr ""
 
-#: builtin/repack.c:268 builtin/repack.c:447
+#: builtin/repack.c:270 builtin/repack.c:446
 msgid "repack: Expecting full hex object ID lines only from pack-objects."
 msgstr ""
 
-#: builtin/repack.c:295
+#: builtin/repack.c:294
 msgid "could not finish pack-objects to repack promisor objects"
 msgstr ""
 
-#: builtin/repack.c:323
+#: builtin/repack.c:322
 msgid "pack everything in a single pack"
 msgstr ""
 
-#: builtin/repack.c:325
+#: builtin/repack.c:324
 msgid "same as -a, and turn unreachable objects loose"
 msgstr ""
 
-#: builtin/repack.c:328
+#: builtin/repack.c:327
 msgid "remove redundant packs, and run git-prune-packed"
 msgstr ""
 
-#: builtin/repack.c:330
+#: builtin/repack.c:329
 msgid "pass --no-reuse-delta to git-pack-objects"
 msgstr ""
 
-#: builtin/repack.c:332
+#: builtin/repack.c:331
 msgid "pass --no-reuse-object to git-pack-objects"
 msgstr ""
 
-#: builtin/repack.c:334
+#: builtin/repack.c:333
 msgid "do not run git-update-server-info"
 msgstr ""
 
-#: builtin/repack.c:337
+#: builtin/repack.c:336
 msgid "pass --local to git-pack-objects"
 msgstr ""
 
-#: builtin/repack.c:339
+#: builtin/repack.c:338
 msgid "write bitmap index"
 msgstr ""
 
-#: builtin/repack.c:341
+#: builtin/repack.c:340
 msgid "pass --delta-islands to git-pack-objects"
 msgstr ""
 
-#: builtin/repack.c:342
+#: builtin/repack.c:341
 msgid "approxidate"
 msgstr ""
 
-#: builtin/repack.c:343
+#: builtin/repack.c:342
 msgid "with -A, do not loosen objects older than this"
 msgstr ""
 
-#: builtin/repack.c:345
+#: builtin/repack.c:344
 msgid "with -a, repack unreachable objects"
 msgstr ""
 
-#: builtin/repack.c:347
+#: builtin/repack.c:346
 msgid "size of the window used for delta compression"
 msgstr ""
 
-#: builtin/repack.c:348 builtin/repack.c:354
+#: builtin/repack.c:347 builtin/repack.c:353
 msgid "bytes"
 msgstr ""
 
-#: builtin/repack.c:349
+#: builtin/repack.c:348
 msgid "same as the above, but limit memory size instead of entries count"
 msgstr ""
 
-#: builtin/repack.c:351
+#: builtin/repack.c:350
 msgid "limits the maximum delta depth"
 msgstr ""
 
-#: builtin/repack.c:353
+#: builtin/repack.c:352
 msgid "limits the maximum number of threads"
 msgstr ""
 
-#: builtin/repack.c:355
+#: builtin/repack.c:354
 msgid "maximum size of each packfile"
 msgstr ""
 
-#: builtin/repack.c:357
+#: builtin/repack.c:356
 msgid "repack objects in packs marked with .keep"
 msgstr ""
 
-#: builtin/repack.c:359
+#: builtin/repack.c:358
 msgid "do not repack this pack"
 msgstr ""
 
-#: builtin/repack.c:369
+#: builtin/repack.c:368
 msgid "cannot delete packs in a precious-objects repo"
 msgstr ""
 
-#: builtin/repack.c:373
+#: builtin/repack.c:372
 msgid "--keep-unreachable and -A are incompatible"
 msgstr ""
 
-#: builtin/repack.c:456
+#: builtin/repack.c:455
 msgid "Nothing new to pack."
 msgstr ""
 
-#: builtin/repack.c:486
+#: builtin/repack.c:485
 #, c-format
 msgid "missing required file: %s"
 msgstr ""
 
-#: builtin/repack.c:488
+#: builtin/repack.c:487
 #, c-format
 msgid "could not unlink: %s"
 msgstr ""
@@ -19390,8 +19767,8 @@ msgstr ""
 msgid "Cannot do a %s reset in the middle of a merge."
 msgstr ""
 
-#: builtin/reset.c:295 builtin/stash.c:520 builtin/stash.c:594
-#: builtin/stash.c:618
+#: builtin/reset.c:295 builtin/stash.c:587 builtin/stash.c:661
+#: builtin/stash.c:685
 msgid "be quiet, only report errors"
 msgstr ""
 
@@ -19469,19 +19846,19 @@ msgstr ""
 msgid "Could not write new index file."
 msgstr ""
 
-#: builtin/rev-list.c:499
+#: builtin/rev-list.c:534
 msgid "cannot combine --exclude-promisor-objects and --missing"
 msgstr ""
 
-#: builtin/rev-list.c:560
+#: builtin/rev-list.c:595
 msgid "object filtering requires --objects"
 msgstr ""
 
-#: builtin/rev-list.c:610
+#: builtin/rev-list.c:651
 msgid "rev-list does not support display of notes"
 msgstr ""
 
-#: builtin/rev-list.c:615
+#: builtin/rev-list.c:656
 msgid "marked counting is incompatible with --objects"
 msgstr ""
 
@@ -19704,52 +20081,52 @@ msgstr ""
 msgid "git log --pretty=short | git shortlog [<options>]"
 msgstr ""
 
-#: builtin/shortlog.c:135
+#: builtin/shortlog.c:123
 msgid "using multiple --group options with stdin is not supported"
 msgstr ""
 
-#: builtin/shortlog.c:145
+#: builtin/shortlog.c:133
 msgid "using --group=trailer with stdin is not supported"
 msgstr ""
 
-#: builtin/shortlog.c:335
+#: builtin/shortlog.c:323
 #, c-format
 msgid "unknown group type: %s"
 msgstr ""
 
-#: builtin/shortlog.c:363
-msgid "Group by committer rather than author"
+#: builtin/shortlog.c:351
+msgid "group by committer rather than author"
 msgstr ""
 
-#: builtin/shortlog.c:366
+#: builtin/shortlog.c:354
 msgid "sort output according to the number of commits per author"
 msgstr ""
 
-#: builtin/shortlog.c:368
-msgid "Suppress commit descriptions, only provides commit count"
+#: builtin/shortlog.c:356
+msgid "suppress commit descriptions, only provides commit count"
 msgstr ""
 
-#: builtin/shortlog.c:370
-msgid "Show the email address of each author"
+#: builtin/shortlog.c:358
+msgid "show the email address of each author"
 msgstr ""
 
-#: builtin/shortlog.c:371
+#: builtin/shortlog.c:359
 msgid "<w>[,<i1>[,<i2>]]"
 msgstr ""
 
-#: builtin/shortlog.c:372
-msgid "Linewrap output"
+#: builtin/shortlog.c:360
+msgid "linewrap output"
 msgstr ""
 
-#: builtin/shortlog.c:374
+#: builtin/shortlog.c:362
 msgid "field"
 msgstr ""
 
-#: builtin/shortlog.c:375
-msgid "Group by field"
+#: builtin/shortlog.c:363
+msgid "group by field"
 msgstr ""
 
-#: builtin/shortlog.c:403
+#: builtin/shortlog.c:391
 msgid "too many arguments given outside repository"
 msgstr ""
 
@@ -19937,70 +20314,70 @@ msgstr ""
 msgid "git sparse-checkout (init|list|set|add|reapply|disable) <options>"
 msgstr ""
 
-#: builtin/sparse-checkout.c:50
+#: builtin/sparse-checkout.c:45
 msgid "git sparse-checkout list"
 msgstr ""
 
-#: builtin/sparse-checkout.c:76
+#: builtin/sparse-checkout.c:71
 msgid "this worktree is not sparse (sparse-checkout file may not exist)"
 msgstr ""
 
-#: builtin/sparse-checkout.c:228
+#: builtin/sparse-checkout.c:223
 msgid "failed to create directory for sparse-checkout file"
 msgstr ""
 
-#: builtin/sparse-checkout.c:269
+#: builtin/sparse-checkout.c:264
 msgid "unable to upgrade repository format to enable worktreeConfig"
 msgstr ""
 
-#: builtin/sparse-checkout.c:271
+#: builtin/sparse-checkout.c:266
 msgid "failed to set extensions.worktreeConfig setting"
 msgstr ""
 
-#: builtin/sparse-checkout.c:288
+#: builtin/sparse-checkout.c:283
 msgid "git sparse-checkout init [--cone]"
 msgstr ""
 
-#: builtin/sparse-checkout.c:307
+#: builtin/sparse-checkout.c:302
 msgid "initialize the sparse-checkout in cone mode"
 msgstr ""
 
-#: builtin/sparse-checkout.c:344
+#: builtin/sparse-checkout.c:339
 #, c-format
 msgid "failed to open '%s'"
 msgstr ""
 
-#: builtin/sparse-checkout.c:401
+#: builtin/sparse-checkout.c:396
 #, c-format
 msgid "could not normalize path %s"
 msgstr ""
 
-#: builtin/sparse-checkout.c:413
+#: builtin/sparse-checkout.c:408
 msgid "git sparse-checkout (set|add) (--stdin | <patterns>)"
 msgstr ""
 
-#: builtin/sparse-checkout.c:438
+#: builtin/sparse-checkout.c:433
 #, c-format
 msgid "unable to unquote C-style string '%s'"
 msgstr ""
 
-#: builtin/sparse-checkout.c:492 builtin/sparse-checkout.c:516
+#: builtin/sparse-checkout.c:487 builtin/sparse-checkout.c:511
 msgid "unable to load existing sparse-checkout patterns"
 msgstr ""
 
-#: builtin/sparse-checkout.c:561
+#: builtin/sparse-checkout.c:556
 msgid "read patterns from standard in"
 msgstr ""
 
-#: builtin/sparse-checkout.c:576
+#: builtin/sparse-checkout.c:571
 msgid "git sparse-checkout reapply"
 msgstr ""
 
-#: builtin/sparse-checkout.c:595
+#: builtin/sparse-checkout.c:590
 msgid "git sparse-checkout disable"
 msgstr ""
 
-#: builtin/sparse-checkout.c:623
+#: builtin/sparse-checkout.c:618
 msgid "error while refreshing working directory"
 msgstr ""
 
@@ -20081,153 +20458,161 @@ msgid "%s is not a valid reference"
 msgstr ""
 
 #: builtin/stash.c:225
-msgid "git stash clear with parameters is unimplemented"
+msgid "git stash clear with arguments is unimplemented"
+msgstr ""
+
+#: builtin/stash.c:429
+#, c-format
+msgid ""
+"WARNING: Untracked file in way of tracked file!  Renaming\n"
+"            %s -> %s\n"
+"         to make room.\n"
 msgstr ""
 
-#: builtin/stash.c:404
+#: builtin/stash.c:490
 msgid "cannot apply a stash in the middle of a merge"
 msgstr ""
 
-#: builtin/stash.c:415
+#: builtin/stash.c:501
 #, c-format
 msgid "could not generate diff %s^!."
 msgstr ""
 
-#: builtin/stash.c:422
+#: builtin/stash.c:508
 msgid "conflicts in index. Try without --index."
 msgstr ""
 
-#: builtin/stash.c:428
+#: builtin/stash.c:514
 msgid "could not save index tree"
 msgstr ""
 
-#: builtin/stash.c:437
+#: builtin/stash.c:523
 msgid "could not restore untracked files from stash"
 msgstr ""
 
-#: builtin/stash.c:451
+#: builtin/stash.c:537
 #, c-format
 msgid "Merging %s with %s"
 msgstr ""
 
-#: builtin/stash.c:461
+#: builtin/stash.c:547
 msgid "Index was not unstashed."
 msgstr ""
 
-#: builtin/stash.c:522 builtin/stash.c:620
+#: builtin/stash.c:589 builtin/stash.c:687
 msgid "attempt to recreate the index"
 msgstr ""
 
-#: builtin/stash.c:566
+#: builtin/stash.c:633
 #, c-format
 msgid "Dropped %s (%s)"
 msgstr ""
 
-#: builtin/stash.c:569
+#: builtin/stash.c:636
 #, c-format
 msgid "%s: Could not drop stash entry"
 msgstr ""
 
-#: builtin/stash.c:582
+#: builtin/stash.c:649
 #, c-format
 msgid "'%s' is not a stash reference"
 msgstr ""
 
-#: builtin/stash.c:632
+#: builtin/stash.c:699
 msgid "The stash entry is kept in case you need it again."
 msgstr ""
 
-#: builtin/stash.c:655
+#: builtin/stash.c:722
 msgid "No branch name specified"
 msgstr ""
 
-#: builtin/stash.c:799 builtin/stash.c:836
+#: builtin/stash.c:866 builtin/stash.c:903
 #, c-format
 msgid "Cannot update %s with %s"
 msgstr ""
 
-#: builtin/stash.c:817 builtin/stash.c:1471 builtin/stash.c:1536
+#: builtin/stash.c:884 builtin/stash.c:1538 builtin/stash.c:1603
 msgid "stash message"
 msgstr ""
 
-#: builtin/stash.c:827
+#: builtin/stash.c:894
 msgid "\"git stash store\" requires one <commit> argument"
 msgstr ""
 
-#: builtin/stash.c:1042
+#: builtin/stash.c:1109
 msgid "No changes selected"
 msgstr ""
 
-#: builtin/stash.c:1142
+#: builtin/stash.c:1209
 msgid "You do not have the initial commit yet"
 msgstr ""
 
-#: builtin/stash.c:1169
+#: builtin/stash.c:1236
 msgid "Cannot save the current index state"
 msgstr ""
 
-#: builtin/stash.c:1178
+#: builtin/stash.c:1245
 msgid "Cannot save the untracked files"
 msgstr ""
 
-#: builtin/stash.c:1189 builtin/stash.c:1198
+#: builtin/stash.c:1256 builtin/stash.c:1265
 msgid "Cannot save the current worktree state"
 msgstr ""
 
-#: builtin/stash.c:1226
+#: builtin/stash.c:1293
 msgid "Cannot record working tree state"
 msgstr ""
 
-#: builtin/stash.c:1275
+#: builtin/stash.c:1342
 msgid "Can't use --patch and --include-untracked or --all at the same time"
 msgstr ""
 
-#: builtin/stash.c:1291
+#: builtin/stash.c:1358
 msgid "Did you forget to 'git add'?"
 msgstr ""
 
-#: builtin/stash.c:1306
+#: builtin/stash.c:1373
 msgid "No local changes to save"
 msgstr ""
 
-#: builtin/stash.c:1313
+#: builtin/stash.c:1380
 msgid "Cannot initialize stash"
 msgstr ""
 
-#: builtin/stash.c:1328
+#: builtin/stash.c:1395
 msgid "Cannot save the current status"
 msgstr ""
 
-#: builtin/stash.c:1333
+#: builtin/stash.c:1400
 #, c-format
 msgid "Saved working directory and index state %s"
 msgstr ""
 
-#: builtin/stash.c:1423
+#: builtin/stash.c:1490
 msgid "Cannot remove worktree changes"
 msgstr ""
 
-#: builtin/stash.c:1462 builtin/stash.c:1527
+#: builtin/stash.c:1529 builtin/stash.c:1594
 msgid "keep index"
 msgstr ""
 
-#: builtin/stash.c:1464 builtin/stash.c:1529
+#: builtin/stash.c:1531 builtin/stash.c:1596
 msgid "stash in patch mode"
 msgstr ""
 
-#: builtin/stash.c:1465 builtin/stash.c:1530
+#: builtin/stash.c:1532 builtin/stash.c:1597
 msgid "quiet mode"
 msgstr ""
 
-#: builtin/stash.c:1467 builtin/stash.c:1532
+#: builtin/stash.c:1534 builtin/stash.c:1599
 msgid "include untracked files in stash"
 msgstr ""
 
-#: builtin/stash.c:1469 builtin/stash.c:1534
+#: builtin/stash.c:1536 builtin/stash.c:1601
 msgid "include ignore files"
 msgstr ""
 
-#: builtin/stash.c:1569
+#: builtin/stash.c:1636
 msgid ""
 "the stash.useBuiltin support has been removed!\n"
 "See its entry in 'git help config' for details."
@@ -20298,11 +20683,12 @@ msgid ""
 msgstr ""
 
 #: builtin/submodule--helper.c:565
-msgid "Suppress output of entering each submodule command"
+msgid "suppress output of entering each submodule command"
 msgstr ""
 
-#: builtin/submodule--helper.c:567 builtin/submodule--helper.c:1487
-msgid "Recurse into nested submodules"
+#: builtin/submodule--helper.c:567 builtin/submodule--helper.c:888
+#: builtin/submodule--helper.c:1487
+msgid "recurse into nested submodules"
 msgstr ""
 
 #: builtin/submodule--helper.c:572
@@ -20337,7 +20723,7 @@ msgid "Failed to register update mode for submodule path '%s'"
 msgstr ""
 
 #: builtin/submodule--helper.c:709
-msgid "Suppress output for initializing a submodule"
+msgid "suppress output for initializing a submodule"
 msgstr ""
 
 #: builtin/submodule--helper.c:714
@@ -20360,19 +20746,15 @@ msgid "failed to recurse into submodule '%s'"
 msgstr ""
 
 #: builtin/submodule--helper.c:886 builtin/submodule--helper.c:1623
-msgid "Suppress submodule status output"
+msgid "suppress submodule status output"
 msgstr ""
 
 #: builtin/submodule--helper.c:887
 msgid ""
-"Use commit stored in the index instead of the one stored in the submodule "
+"use commit stored in the index instead of the one stored in the submodule "
 "HEAD"
 msgstr ""
 
-#: builtin/submodule--helper.c:888
-msgid "recurse into nested submodules"
-msgstr ""
-
 #: builtin/submodule--helper.c:893
 msgid "git submodule status [--quiet] [--cached] [--recursive] [<path>...]"
 msgstr ""
@@ -20455,7 +20837,7 @@ msgid "failed to update remote for submodule '%s'"
 msgstr ""
 
 #: builtin/submodule--helper.c:1485
-msgid "Suppress output of synchronizing submodule url"
+msgid "suppress output of synchronizing submodule url"
 msgstr ""
 
 #: builtin/submodule--helper.c:1492
@@ -20497,11 +20879,11 @@ msgid "Submodule '%s' (%s) unregistered for path '%s'\n"
 msgstr ""
 
 #: builtin/submodule--helper.c:1624
-msgid "Remove submodule working trees even if they contain local changes"
+msgid "remove submodule working trees even if they contain local changes"
 msgstr ""
 
 #: builtin/submodule--helper.c:1625
-msgid "Unregister all submodules"
+msgid "unregister all submodules"
 msgstr ""
 
 #: builtin/submodule--helper.c:1630
@@ -20639,7 +21021,7 @@ msgid "rebase, merge, checkout or none"
 msgstr ""
 
 #: builtin/submodule--helper.c:2340
-msgid "Create a shallow clone truncated to the specified number of revisions"
+msgid "create a shallow clone truncated to the specified number of revisions"
 msgstr ""
 
 #: builtin/submodule--helper.c:2343
@@ -20708,7 +21090,7 @@ msgid "please make sure that the .gitmodules file is in the working tree"
 msgstr ""
 
 #: builtin/submodule--helper.c:2681
-msgid "Suppress output for setting url of a submodule"
+msgid "suppress output for setting url of a submodule"
 msgstr ""
 
 #: builtin/submodule--helper.c:2685
@@ -20740,7 +21122,7 @@ msgstr ""
 msgid "--branch and --default are mutually exclusive"
 msgstr ""
 
-#: builtin/submodule--helper.c:2792 git.c:438 git.c:711
+#: builtin/submodule--helper.c:2792 git.c:441 git.c:714
 #, c-format
 msgid "%s doesn't support --super-prefix"
 msgstr ""
@@ -20805,12 +21187,12 @@ msgstr ""
 msgid "tag '%s' not found."
 msgstr ""
 
-#: builtin/tag.c:105
+#: builtin/tag.c:124
 #, c-format
 msgid "Deleted tag '%s' (was %s)\n"
 msgstr ""
 
-#: builtin/tag.c:135
+#: builtin/tag.c:159
 #, c-format
 msgid ""
 "\n"
@@ -20819,7 +21201,7 @@ msgid ""
 "Lines starting with '%c' will be ignored.\n"
 msgstr ""
 
-#: builtin/tag.c:139
+#: builtin/tag.c:163
 #, c-format
 msgid ""
 "\n"
@@ -20829,15 +21211,11 @@ msgid ""
 "want to.\n"
 msgstr ""
 
-#: builtin/tag.c:198
+#: builtin/tag.c:230
 msgid "unable to sign the tag"
 msgstr ""
 
-#: builtin/tag.c:200
-msgid "unable to write tag file"
-msgstr ""
-
-#: builtin/tag.c:216
+#: builtin/tag.c:248
 #, c-format
 msgid ""
 "You have created a nested tag. The object referred to by your new tag is\n"
@@ -20846,138 +21224,134 @@ msgid ""
 "\tgit tag -f %s %s^{}"
 msgstr ""
 
-#: builtin/tag.c:232
+#: builtin/tag.c:264
 msgid "bad object type."
 msgstr ""
 
-#: builtin/tag.c:285
+#: builtin/tag.c:317
 msgid "no tag message?"
 msgstr ""
 
-#: builtin/tag.c:292
+#: builtin/tag.c:324
 #, c-format
 msgid "The tag message has been left in %s\n"
 msgstr ""
 
-#: builtin/tag.c:403
+#: builtin/tag.c:435
 msgid "list tag names"
 msgstr ""
 
-#: builtin/tag.c:405
+#: builtin/tag.c:437
 msgid "print <n> lines of each tag message"
 msgstr ""
 
-#: builtin/tag.c:407
+#: builtin/tag.c:439
 msgid "delete tags"
 msgstr ""
 
-#: builtin/tag.c:408
+#: builtin/tag.c:440
 msgid "verify tags"
 msgstr ""
 
-#: builtin/tag.c:410
+#: builtin/tag.c:442
 msgid "Tag creation options"
 msgstr ""
 
-#: builtin/tag.c:412
+#: builtin/tag.c:444
 msgid "annotated tag, needs a message"
 msgstr ""
 
-#: builtin/tag.c:414
+#: builtin/tag.c:446
 msgid "tag message"
 msgstr ""
 
-#: builtin/tag.c:416
+#: builtin/tag.c:448
 msgid "force edit of tag message"
 msgstr ""
 
-#: builtin/tag.c:417
+#: builtin/tag.c:449
 msgid "annotated and GPG-signed tag"
 msgstr ""
 
-#: builtin/tag.c:420
+#: builtin/tag.c:452
 msgid "use another key to sign the tag"
 msgstr ""
 
-#: builtin/tag.c:421
+#: builtin/tag.c:453
 msgid "replace the tag if exists"
 msgstr ""
 
-#: builtin/tag.c:422 builtin/update-ref.c:505
+#: builtin/tag.c:454 builtin/update-ref.c:505
 msgid "create a reflog"
 msgstr ""
 
-#: builtin/tag.c:424
+#: builtin/tag.c:456
 msgid "Tag listing options"
 msgstr ""
 
-#: builtin/tag.c:425
+#: builtin/tag.c:457
 msgid "show tag list in columns"
 msgstr ""
 
-#: builtin/tag.c:426 builtin/tag.c:428
+#: builtin/tag.c:458 builtin/tag.c:460
 msgid "print only tags that contain the commit"
 msgstr ""
 
-#: builtin/tag.c:427 builtin/tag.c:429
+#: builtin/tag.c:459 builtin/tag.c:461
 msgid "print only tags that don't contain the commit"
 msgstr ""
 
-#: builtin/tag.c:430
+#: builtin/tag.c:462
 msgid "print only tags that are merged"
 msgstr ""
 
-#: builtin/tag.c:431
+#: builtin/tag.c:463
 msgid "print only tags that are not merged"
 msgstr ""
 
-#: builtin/tag.c:435
+#: builtin/tag.c:467
 msgid "print only tags of the object"
 msgstr ""
 
-#: builtin/tag.c:483
+#: builtin/tag.c:515
 msgid "--column and -n are incompatible"
 msgstr ""
 
-#: builtin/tag.c:505
+#: builtin/tag.c:537
 msgid "-n option is only allowed in list mode"
 msgstr ""
 
-#: builtin/tag.c:507
+#: builtin/tag.c:539
 msgid "--contains option is only allowed in list mode"
 msgstr ""
 
-#: builtin/tag.c:509
+#: builtin/tag.c:541
 msgid "--no-contains option is only allowed in list mode"
 msgstr ""
 
-#: builtin/tag.c:511
+#: builtin/tag.c:543
 msgid "--points-at option is only allowed in list mode"
 msgstr ""
 
-#: builtin/tag.c:513
+#: builtin/tag.c:545
 msgid "--merged and --no-merged options are only allowed in list mode"
 msgstr ""
 
-#: builtin/tag.c:524
+#: builtin/tag.c:556
 msgid "only one -F or -m option is allowed."
 msgstr ""
 
-#: builtin/tag.c:543
-msgid "too many params"
-msgstr ""
-
-#: builtin/tag.c:549
+#: builtin/tag.c:581
 #, c-format
 msgid "'%s' is not a valid tag name."
 msgstr ""
 
-#: builtin/tag.c:554
+#: builtin/tag.c:586
 #, c-format
 msgid "tag '%s' already exists"
 msgstr ""
 
-#: builtin/tag.c:585
+#: builtin/tag.c:617
 #, c-format
 msgid "Updated tag '%s' (was %s)\n"
 msgstr ""
@@ -21317,276 +21691,262 @@ msgstr ""
 msgid "print tag contents"
 msgstr ""
 
-#: builtin/worktree.c:17
+#: builtin/worktree.c:18
 msgid "git worktree add [<options>] <path> [<commit-ish>]"
 msgstr ""
 
-#: builtin/worktree.c:18
+#: builtin/worktree.c:19
 msgid "git worktree list [<options>]"
 msgstr ""
 
-#: builtin/worktree.c:19
+#: builtin/worktree.c:20
 msgid "git worktree lock [<options>] <path>"
 msgstr ""
 
-#: builtin/worktree.c:20
+#: builtin/worktree.c:21
 msgid "git worktree move <worktree> <new-path>"
 msgstr ""
 
-#: builtin/worktree.c:21
+#: builtin/worktree.c:22
 msgid "git worktree prune [<options>]"
 msgstr ""
 
-#: builtin/worktree.c:22
+#: builtin/worktree.c:23
 msgid "git worktree remove [<options>] <worktree>"
 msgstr ""
 
-#: builtin/worktree.c:23
+#: builtin/worktree.c:24
 msgid "git worktree unlock <path>"
 msgstr ""
 
-#: builtin/worktree.c:60 builtin/worktree.c:973
+#: builtin/worktree.c:61 builtin/worktree.c:933
 #, c-format
 msgid "failed to delete '%s'"
 msgstr ""
 
-#: builtin/worktree.c:85
-msgid "not a valid directory"
-msgstr ""
-
-#: builtin/worktree.c:91
-msgid "gitdir file does not exist"
-msgstr ""
-
-#: builtin/worktree.c:96 builtin/worktree.c:105
-#, c-format
-msgid "unable to read gitdir file (%s)"
-msgstr ""
-
-#: builtin/worktree.c:115
-#, c-format
-msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
-msgstr ""
-
-#: builtin/worktree.c:123
-msgid "invalid gitdir file"
-msgstr ""
-
-#: builtin/worktree.c:131
-msgid "gitdir file points to non-existent location"
-msgstr ""
-
-#: builtin/worktree.c:146
+#: builtin/worktree.c:74
 #, c-format
 msgid "Removing %s/%s: %s"
 msgstr ""
 
-#: builtin/worktree.c:221
+#: builtin/worktree.c:149
 msgid "report pruned working trees"
 msgstr ""
 
-#: builtin/worktree.c:223
+#: builtin/worktree.c:151
 msgid "expire working trees older than <time>"
 msgstr ""
 
-#: builtin/worktree.c:293
+#: builtin/worktree.c:221
 #, c-format
 msgid "'%s' already exists"
 msgstr ""
 
-#: builtin/worktree.c:302
+#: builtin/worktree.c:230
 #, c-format
 msgid "unusable worktree destination '%s'"
 msgstr ""
 
-#: builtin/worktree.c:307
+#: builtin/worktree.c:235
 #, c-format
 msgid ""
 "'%s' is a missing but locked worktree;\n"
 "use '%s -f -f' to override, or 'unlock' and 'prune' or 'remove' to clear"
 msgstr ""
 
-#: builtin/worktree.c:309
+#: builtin/worktree.c:237
 #, c-format
 msgid ""
 "'%s' is a missing but already registered worktree;\n"
 "use '%s -f' to override, or 'prune' or 'remove' to clear"
 msgstr ""
 
-#: builtin/worktree.c:360
+#: builtin/worktree.c:288
 #, c-format
 msgid "could not create directory of '%s'"
 msgstr ""
 
-#: builtin/worktree.c:494 builtin/worktree.c:500
+#: builtin/worktree.c:422 builtin/worktree.c:428
 #, c-format
 msgid "Preparing worktree (new branch '%s')"
 msgstr ""
 
-#: builtin/worktree.c:496
+#: builtin/worktree.c:424
 #, c-format
 msgid "Preparing worktree (resetting branch '%s'; was at %s)"
 msgstr ""
 
-#: builtin/worktree.c:505
+#: builtin/worktree.c:433
 #, c-format
 msgid "Preparing worktree (checking out '%s')"
 msgstr ""
 
-#: builtin/worktree.c:511
+#: builtin/worktree.c:439
 #, c-format
 msgid "Preparing worktree (detached HEAD %s)"
 msgstr ""
 
-#: builtin/worktree.c:552
+#: builtin/worktree.c:480
 msgid "checkout <branch> even if already checked out in other worktree"
 msgstr ""
 
-#: builtin/worktree.c:555
+#: builtin/worktree.c:483
 msgid "create a new branch"
 msgstr ""
 
-#: builtin/worktree.c:557
+#: builtin/worktree.c:485
 msgid "create or reset a branch"
 msgstr ""
 
-#: builtin/worktree.c:559
+#: builtin/worktree.c:487
 msgid "populate the new working tree"
 msgstr ""
 
-#: builtin/worktree.c:560
+#: builtin/worktree.c:488
 msgid "keep the new working tree locked"
 msgstr ""
 
-#: builtin/worktree.c:563
+#: builtin/worktree.c:491
 msgid "set up tracking mode (see git-branch(1))"
 msgstr ""
 
-#: builtin/worktree.c:566
+#: builtin/worktree.c:494
 msgid "try to match the new branch name with a remote-tracking branch"
 msgstr ""
 
-#: builtin/worktree.c:574
+#: builtin/worktree.c:502
 msgid "-b, -B, and --detach are mutually exclusive"
 msgstr ""
 
-#: builtin/worktree.c:635
+#: builtin/worktree.c:563
 msgid "--[no-]track can only be used if a new branch is created"
 msgstr ""
 
-#: builtin/worktree.c:758
+#: builtin/worktree.c:680
+msgid "show extended annotations and reasons, if available"
+msgstr ""
+
+#: builtin/worktree.c:682
+msgid "add 'prunable' annotation to worktrees older than <time>"
+msgstr ""
+
+#: builtin/worktree.c:691
+msgid "--verbose and --porcelain are mutually exclusive"
+msgstr ""
+
+#: builtin/worktree.c:718
 msgid "reason for locking"
 msgstr ""
 
-#: builtin/worktree.c:770 builtin/worktree.c:803 builtin/worktree.c:877
-#: builtin/worktree.c:1001
+#: builtin/worktree.c:730 builtin/worktree.c:763 builtin/worktree.c:837
+#: builtin/worktree.c:961
 #, c-format
 msgid "'%s' is not a working tree"
 msgstr ""
 
-#: builtin/worktree.c:772 builtin/worktree.c:805
+#: builtin/worktree.c:732 builtin/worktree.c:765
 msgid "The main working tree cannot be locked or unlocked"
 msgstr ""
 
-#: builtin/worktree.c:777
+#: builtin/worktree.c:737
 #, c-format
 msgid "'%s' is already locked, reason: %s"
 msgstr ""
 
-#: builtin/worktree.c:779
+#: builtin/worktree.c:739
 #, c-format
 msgid "'%s' is already locked"
 msgstr ""
 
-#: builtin/worktree.c:807
+#: builtin/worktree.c:767
 #, c-format
 msgid "'%s' is not locked"
 msgstr ""
 
-#: builtin/worktree.c:848
+#: builtin/worktree.c:808
 msgid "working trees containing submodules cannot be moved or removed"
 msgstr ""
 
-#: builtin/worktree.c:856
+#: builtin/worktree.c:816
 msgid "force move even if worktree is dirty or locked"
 msgstr ""
 
-#: builtin/worktree.c:879 builtin/worktree.c:1003
+#: builtin/worktree.c:839 builtin/worktree.c:963
 #, c-format
 msgid "'%s' is a main working tree"
 msgstr ""
 
-#: builtin/worktree.c:884
+#: builtin/worktree.c:844
 #, c-format
 msgid "could not figure out destination name from '%s'"
 msgstr ""
 
-#: builtin/worktree.c:897
+#: builtin/worktree.c:857
 #, c-format
 msgid ""
 "cannot move a locked working tree, lock reason: %s\n"
 "use 'move -f -f' to override or unlock first"
 msgstr ""
 
-#: builtin/worktree.c:899
+#: builtin/worktree.c:859
 msgid ""
 "cannot move a locked working tree;\n"
 "use 'move -f -f' to override or unlock first"
 msgstr ""
 
-#: builtin/worktree.c:902
+#: builtin/worktree.c:862
 #, c-format
 msgid "validation failed, cannot move working tree: %s"
 msgstr ""
 
-#: builtin/worktree.c:907
+#: builtin/worktree.c:867
 #, c-format
 msgid "failed to move '%s' to '%s'"
 msgstr ""
 
-#: builtin/worktree.c:953
+#: builtin/worktree.c:913
 #, c-format
 msgid "failed to run 'git status' on '%s'"
 msgstr ""
 
-#: builtin/worktree.c:957
+#: builtin/worktree.c:917
 #, c-format
 msgid "'%s' contains modified or untracked files, use --force to delete it"
 msgstr ""
 
-#: builtin/worktree.c:962
+#: builtin/worktree.c:922
 #, c-format
 msgid "failed to run 'git status' on '%s', code %d"
 msgstr ""
 
-#: builtin/worktree.c:985
+#: builtin/worktree.c:945
 msgid "force removal even if worktree is dirty or locked"
 msgstr ""
 
-#: builtin/worktree.c:1008
+#: builtin/worktree.c:968
 #, c-format
 msgid ""
 "cannot remove a locked working tree, lock reason: %s\n"
 "use 'remove -f -f' to override or unlock first"
 msgstr ""
 
-#: builtin/worktree.c:1010
+#: builtin/worktree.c:970
 msgid ""
 "cannot remove a locked working tree;\n"
 "use 'remove -f -f' to override or unlock first"
 msgstr ""
 
-#: builtin/worktree.c:1013
+#: builtin/worktree.c:973
 #, c-format
 msgid "validation failed, cannot remove working tree: %s"
 msgstr ""
 
-#: builtin/worktree.c:1037
+#: builtin/worktree.c:997
 #, c-format
 msgid "repair: %s: %s"
 msgstr ""
 
-#: builtin/worktree.c:1040
+#: builtin/worktree.c:1000
 #, c-format
 msgid "error: %s: %s"
 msgstr ""
@@ -21607,15 +21967,23 @@ msgstr ""
 msgid "only useful for debugging"
 msgstr ""
 
-#: http-fetch.c:114
+#: http-fetch.c:118
 #, c-format
 msgid "argument to --packfile must be a valid hash (got '%s')"
 msgstr ""
 
-#: http-fetch.c:122
+#: http-fetch.c:128
 msgid "not a git repository"
 msgstr ""
 
+#: http-fetch.c:134
+msgid "--packfile requires --index-pack-args"
+msgstr ""
+
+#: http-fetch.c:143
+msgid "--index-pack-args can only be used with --packfile"
+msgstr ""
+
 #: t/helper/test-fast-rebase.c:141
 msgid "unhandled options"
 msgstr ""
@@ -21648,10 +22016,11 @@ msgid ""
 "           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--"
 "bare]\n"
 "           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]\n"
+"           [--super-prefix=<path>] [--config-env=<name>=<envvar>]\n"
 "           <command> [<args>]"
 msgstr ""
 
-#: git.c:35
+#: git.c:36
 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"
@@ -21659,98 +22028,98 @@ msgid ""
 "See 'git help git' for an overview of the system."
 msgstr ""
 
-#: git.c:187
+#: git.c:188
 #, c-format
 msgid "no directory given for --git-dir\n"
 msgstr ""
 
-#: git.c:201
+#: git.c:202
 #, c-format
 msgid "no namespace given for --namespace\n"
 msgstr ""
 
-#: git.c:215
+#: git.c:216
 #, c-format
 msgid "no directory given for --work-tree\n"
 msgstr ""
 
-#: git.c:229
+#: git.c:230
 #, c-format
 msgid "no prefix given for --super-prefix\n"
 msgstr ""
 
-#: git.c:251
+#: git.c:252
 #, c-format
 msgid "-c expects a configuration string\n"
 msgstr ""
 
-#: git.c:289
+#: git.c:292
 #, c-format
 msgid "no directory given for -C\n"
 msgstr ""
 
-#: git.c:315
+#: git.c:318
 #, c-format
 msgid "unknown option: %s\n"
 msgstr ""
 
-#: git.c:364
+#: git.c:367
 #, c-format
 msgid "while expanding alias '%s': '%s'"
 msgstr ""
 
-#: git.c:373
+#: git.c:376
 #, c-format
 msgid ""
 "alias '%s' changes environment variables.\n"
 "You can use '!git' in the alias to do this"
 msgstr ""
 
-#: git.c:380
+#: git.c:383
 #, c-format
 msgid "empty alias for %s"
 msgstr ""
 
-#: git.c:383
+#: git.c:386
 #, c-format
 msgid "recursive alias: %s"
 msgstr ""
 
-#: git.c:465
+#: git.c:468
 msgid "write failure on standard output"
 msgstr ""
 
-#: git.c:467
+#: git.c:470
 msgid "unknown write failure on standard output"
 msgstr ""
 
-#: git.c:469
+#: git.c:472
 msgid "close failed on standard output"
 msgstr ""
 
-#: git.c:820
+#: git.c:823
 #, c-format
 msgid "alias loop detected: expansion of '%s' does not terminate:%s"
 msgstr ""
 
-#: git.c:870
+#: git.c:873
 #, c-format
 msgid "cannot handle %s as a builtin"
 msgstr ""
 
-#: git.c:883
+#: git.c:886
 #, c-format
 msgid ""
 "usage: %s\n"
 "\n"
 msgstr ""
 
-#: git.c:903
+#: git.c:906
 #, c-format
 msgid "expansion of alias '%s' failed; '%s' is not a git command\n"
 msgstr ""
 
-#: git.c:915
+#: git.c:918
 #, c-format
 msgid "failed to run command '%s': %s\n"
 msgstr ""
@@ -21980,11 +22349,11 @@ msgid ""
 "with --pathspec-from-file, pathspec elements are separated with NUL character"
 msgstr ""
 
-#: ref-filter.h:96
+#: ref-filter.h:99
 msgid "key"
 msgstr ""
 
-#: ref-filter.h:96
+#: ref-filter.h:99
 msgid "field name to sort on"
 msgstr ""
 
@@ -21992,14 +22361,6 @@ msgstr ""
 msgid "update the index with reused conflict resolution if possible"
 msgstr ""
 
-#: wt-status.h:80
-msgid "HEAD detached at "
-msgstr ""
-
-#: wt-status.h:81
-msgid "HEAD detached from "
-msgstr ""
-
 #: command-list.h:50
 msgid "Add file contents to the index"
 msgstr ""
@@ -22329,7 +22690,7 @@ msgid "Write and verify multi-pack-indexes"
 msgstr ""
 
 #: command-list.h:132
-msgid "Creates a tag object"
+msgid "Creates a tag object with extra validation"
 msgstr ""
 
 #: command-list.h:133
@@ -22637,94 +22998,76 @@ msgid "Specifies intentionally untracked files to ignore"
 msgstr ""
 
 #: command-list.h:209
-msgid "Defining submodule properties"
+msgid "Map author/committer names and/or E-Mail addresses"
 msgstr ""
 
 #: command-list.h:210
-msgid "Git namespaces"
+msgid "Defining submodule properties"
 msgstr ""
 
 #: command-list.h:211
-msgid "Helper programs to interact with remote repositories"
+msgid "Git namespaces"
 msgstr ""
 
 #: command-list.h:212
-msgid "Git Repository Layout"
+msgid "Helper programs to interact with remote repositories"
 msgstr ""
 
 #: command-list.h:213
-msgid "Specifying revisions and ranges for Git"
+msgid "Git Repository Layout"
 msgstr ""
 
 #: command-list.h:214
-msgid "Mounting one repository inside another"
+msgid "Specifying revisions and ranges for Git"
 msgstr ""
 
 #: command-list.h:215
-msgid "A tutorial introduction to Git: part two"
+msgid "Mounting one repository inside another"
 msgstr ""
 
 #: command-list.h:216
-msgid "A tutorial introduction to Git"
+msgid "A tutorial introduction to Git: part two"
 msgstr ""
 
 #: command-list.h:217
-msgid "An overview of recommended workflows with Git"
-msgstr ""
-
-#: git-bisect.sh:48
-#, sh-format
-msgid "Bad rev input: $arg"
-msgstr ""
-
-#: git-bisect.sh:82
-msgid "No logfile given"
-msgstr ""
-
-#: git-bisect.sh:83
-#, sh-format
-msgid "cannot read $file for replaying"
+msgid "A tutorial introduction to Git"
 msgstr ""
 
-#: git-bisect.sh:105
-msgid "?? what are you talking about?"
+#: command-list.h:218
+msgid "An overview of recommended workflows with Git"
 msgstr ""
 
-#: git-bisect.sh:115
+#: git-bisect.sh:68
 msgid "bisect run failed: no command provided."
 msgstr ""
 
-#: git-bisect.sh:120
+#: git-bisect.sh:73
 #, sh-format
 msgid "running $command"
 msgstr ""
 
-#: git-bisect.sh:127
+#: git-bisect.sh:80
 #, sh-format
 msgid ""
 "bisect run failed:\n"
 "exit code $res from '$command' is < 0 or >= 128"
 msgstr ""
 
-#: git-bisect.sh:152
+#: git-bisect.sh:105
 msgid "bisect run cannot continue any more"
 msgstr ""
 
-#: git-bisect.sh:158
+#: git-bisect.sh:111
 #, sh-format
 msgid ""
 "bisect run failed:\n"
 "'bisect-state $state' exited with error code $res"
 msgstr ""
 
-#: git-bisect.sh:165
+#: git-bisect.sh:118
 msgid "bisect run success"
 msgstr ""
 
-#: git-bisect.sh:173
-msgid "We are not bisecting."
-msgstr ""
-
 #: git-merge-octopus.sh:46
 msgid ""
 "Error: Your local changes to the following files would be overwritten by "
diff --git a/po/id.po b/po/id.po
new file mode 100644 (file)
index 0000000..ce9720f
--- /dev/null
+++ b/po/id.po
@@ -0,0 +1,24358 @@
+# Indonesian translations for Git package.
+# Copyright (C) 2021 Bagas Sanjaya
+# This file is distributed under the same license as the Git package.
+# Bagas Sanjaya <bagasdotme@gmail.com>, 2021.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Git\n"
+"Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
+"POT-Creation-Date: 2021-03-04 22:41+0800\n"
+"PO-Revision-Date: 2021-02-20 18:07+0700\n"
+"Last-Translator: Bagas Sanjaya <bagasdotme@gmail.com>\n"
+"Language-Team: Indonesian\n"
+"Language: id\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: add-interactive.c:376
+#, c-format
+msgid "Huh (%s)?"
+msgstr ""
+
+#: add-interactive.c:529 add-interactive.c:830 reset.c:65 sequencer.c:3292
+#: sequencer.c:3743 sequencer.c:3898 builtin/rebase.c:1538
+#: builtin/rebase.c:1963
+msgid "could not read index"
+msgstr ""
+
+#: add-interactive.c:584 git-add--interactive.perl:269
+#: git-add--interactive.perl:294
+msgid "binary"
+msgstr ""
+
+#: add-interactive.c:642 git-add--interactive.perl:278
+#: git-add--interactive.perl:332
+msgid "nothing"
+msgstr ""
+
+#: add-interactive.c:643 git-add--interactive.perl:314
+#: git-add--interactive.perl:329
+msgid "unchanged"
+msgstr ""
+
+#: add-interactive.c:680 git-add--interactive.perl:641
+msgid "Update"
+msgstr ""
+
+#: add-interactive.c:697 add-interactive.c:885
+#, c-format
+msgid "could not stage '%s'"
+msgstr ""
+
+#: add-interactive.c:703 add-interactive.c:892 reset.c:89 sequencer.c:3486
+msgid "could not write index"
+msgstr ""
+
+#: add-interactive.c:706 git-add--interactive.perl:626
+#, c-format, perl-format
+msgid "updated %d path\n"
+msgid_plural "updated %d paths\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: add-interactive.c:724 git-add--interactive.perl:676
+#, c-format, perl-format
+msgid "note: %s is untracked now.\n"
+msgstr ""
+
+#: add-interactive.c:729 apply.c:4125 builtin/checkout.c:295
+#: builtin/reset.c:145
+#, c-format
+msgid "make_cache_entry failed for path '%s'"
+msgstr ""
+
+#: add-interactive.c:759 git-add--interactive.perl:653
+msgid "Revert"
+msgstr ""
+
+#: add-interactive.c:775
+msgid "Could not parse HEAD^{tree}"
+msgstr ""
+
+#: add-interactive.c:813 git-add--interactive.perl:629
+#, c-format, perl-format
+msgid "reverted %d path\n"
+msgid_plural "reverted %d paths\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: add-interactive.c:864 git-add--interactive.perl:693
+#, c-format
+msgid "No untracked files.\n"
+msgstr ""
+
+#: add-interactive.c:868 git-add--interactive.perl:687
+msgid "Add untracked"
+msgstr ""
+
+#: add-interactive.c:895 git-add--interactive.perl:623
+#, c-format, perl-format
+msgid "added %d path\n"
+msgid_plural "added %d paths\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: add-interactive.c:925
+#, c-format
+msgid "ignoring unmerged: %s"
+msgstr ""
+
+#: add-interactive.c:937 add-patch.c:1751 git-add--interactive.perl:1369
+#, c-format
+msgid "Only binary files changed.\n"
+msgstr ""
+
+#: add-interactive.c:939 add-patch.c:1749 git-add--interactive.perl:1371
+#, c-format
+msgid "No changes.\n"
+msgstr ""
+
+#: add-interactive.c:943 git-add--interactive.perl:1379
+msgid "Patch update"
+msgstr ""
+
+#: add-interactive.c:982 git-add--interactive.perl:1792
+msgid "Review diff"
+msgstr ""
+
+#: add-interactive.c:1010
+msgid "show paths with changes"
+msgstr ""
+
+#: add-interactive.c:1012
+msgid "add working tree state to the staged set of changes"
+msgstr ""
+
+#: add-interactive.c:1014
+msgid "revert staged set of changes back to the HEAD version"
+msgstr ""
+
+#: add-interactive.c:1016
+msgid "pick hunks and update selectively"
+msgstr ""
+
+#: add-interactive.c:1018
+msgid "view diff between HEAD and index"
+msgstr ""
+
+#: add-interactive.c:1020
+msgid "add contents of untracked files to the staged set of changes"
+msgstr ""
+
+#: add-interactive.c:1028 add-interactive.c:1077
+msgid "Prompt help:"
+msgstr ""
+
+#: add-interactive.c:1030
+msgid "select a single item"
+msgstr ""
+
+#: add-interactive.c:1032
+msgid "select a range of items"
+msgstr ""
+
+#: add-interactive.c:1034
+msgid "select multiple ranges"
+msgstr ""
+
+#: add-interactive.c:1036 add-interactive.c:1081
+msgid "select item based on unique prefix"
+msgstr ""
+
+#: add-interactive.c:1038
+msgid "unselect specified items"
+msgstr ""
+
+#: add-interactive.c:1040
+msgid "choose all items"
+msgstr ""
+
+#: add-interactive.c:1042
+msgid "(empty) finish selecting"
+msgstr ""
+
+#: add-interactive.c:1079
+msgid "select a numbered item"
+msgstr ""
+
+#: add-interactive.c:1083
+msgid "(empty) select nothing"
+msgstr ""
+
+#: add-interactive.c:1091 builtin/clean.c:816 git-add--interactive.perl:1896
+msgid "*** Commands ***"
+msgstr ""
+
+#: add-interactive.c:1092 builtin/clean.c:817 git-add--interactive.perl:1893
+msgid "What now"
+msgstr ""
+
+#: add-interactive.c:1144 git-add--interactive.perl:213
+msgid "staged"
+msgstr ""
+
+#: add-interactive.c:1144 git-add--interactive.perl:213
+msgid "unstaged"
+msgstr ""
+
+#: add-interactive.c:1144 apply.c:4987 apply.c:4990 builtin/am.c:2257
+#: builtin/am.c:2260 builtin/bugreport.c:134 builtin/clone.c:124
+#: builtin/fetch.c:150 builtin/merge.c:285 builtin/pull.c:190
+#: builtin/submodule--helper.c:409 builtin/submodule--helper.c:1818
+#: builtin/submodule--helper.c:1821 builtin/submodule--helper.c:2326
+#: builtin/submodule--helper.c:2329 builtin/submodule--helper.c:2572
+#: git-add--interactive.perl:213
+msgid "path"
+msgstr ""
+
+#: add-interactive.c:1151
+msgid "could not refresh index"
+msgstr ""
+
+#: add-interactive.c:1165 builtin/clean.c:781 git-add--interactive.perl:1803
+#, c-format
+msgid "Bye.\n"
+msgstr ""
+
+#: add-patch.c:34 git-add--interactive.perl:1431
+#, c-format, perl-format
+msgid "Stage mode change [y,n,q,a,d%s,?]? "
+msgstr ""
+
+#: add-patch.c:35 git-add--interactive.perl:1432
+#, c-format, perl-format
+msgid "Stage deletion [y,n,q,a,d%s,?]? "
+msgstr ""
+
+#: add-patch.c:36 git-add--interactive.perl:1433
+#, c-format, perl-format
+msgid "Stage addition [y,n,q,a,d%s,?]? "
+msgstr ""
+
+#: add-patch.c:37 git-add--interactive.perl:1434
+#, c-format, perl-format
+msgid "Stage this hunk [y,n,q,a,d%s,?]? "
+msgstr ""
+
+#: add-patch.c:39
+msgid ""
+"If the patch applies cleanly, the edited hunk will immediately be marked for "
+"staging."
+msgstr ""
+
+#: add-patch.c:42
+msgid ""
+"y - stage this hunk\n"
+"n - do not stage this hunk\n"
+"q - quit; do not stage this hunk or any of the remaining ones\n"
+"a - stage this hunk and all later hunks in the file\n"
+"d - do not stage this hunk or any of the later hunks in the file\n"
+msgstr ""
+
+#: add-patch.c:56 git-add--interactive.perl:1437
+#, c-format, perl-format
+msgid "Stash mode change [y,n,q,a,d%s,?]? "
+msgstr ""
+
+#: add-patch.c:57 git-add--interactive.perl:1438
+#, c-format, perl-format
+msgid "Stash deletion [y,n,q,a,d%s,?]? "
+msgstr ""
+
+#: add-patch.c:58 git-add--interactive.perl:1439
+#, c-format, perl-format
+msgid "Stash addition [y,n,q,a,d%s,?]? "
+msgstr ""
+
+#: add-patch.c:59 git-add--interactive.perl:1440
+#, c-format, perl-format
+msgid "Stash this hunk [y,n,q,a,d%s,?]? "
+msgstr ""
+
+#: add-patch.c:61
+msgid ""
+"If the patch applies cleanly, the edited hunk will immediately be marked for "
+"stashing."
+msgstr ""
+
+#: add-patch.c:64
+msgid ""
+"y - stash this hunk\n"
+"n - do not stash this hunk\n"
+"q - quit; do not stash this hunk or any of the remaining ones\n"
+"a - stash this hunk and all later hunks in the file\n"
+"d - do not stash this hunk or any of the later hunks in the file\n"
+msgstr ""
+
+#: add-patch.c:80 git-add--interactive.perl:1443
+#, c-format, perl-format
+msgid "Unstage mode change [y,n,q,a,d%s,?]? "
+msgstr ""
+
+#: add-patch.c:81 git-add--interactive.perl:1444
+#, c-format, perl-format
+msgid "Unstage deletion [y,n,q,a,d%s,?]? "
+msgstr ""
+
+#: add-patch.c:82 git-add--interactive.perl:1445
+#, c-format, perl-format
+msgid "Unstage addition [y,n,q,a,d%s,?]? "
+msgstr ""
+
+#: add-patch.c:83 git-add--interactive.perl:1446
+#, c-format, perl-format
+msgid "Unstage this hunk [y,n,q,a,d%s,?]? "
+msgstr ""
+
+#: add-patch.c:85
+msgid ""
+"If the patch applies cleanly, the edited hunk will immediately be marked for "
+"unstaging."
+msgstr ""
+
+#: add-patch.c:88
+msgid ""
+"y - unstage this hunk\n"
+"n - do not unstage this hunk\n"
+"q - quit; do not unstage this hunk or any of the remaining ones\n"
+"a - unstage this hunk and all later hunks in the file\n"
+"d - do not unstage this hunk or any of the later hunks in the file\n"
+msgstr ""
+
+#: add-patch.c:103 git-add--interactive.perl:1449
+#, c-format, perl-format
+msgid "Apply mode change to index [y,n,q,a,d%s,?]? "
+msgstr ""
+
+#: add-patch.c:104 git-add--interactive.perl:1450
+#, c-format, perl-format
+msgid "Apply deletion to index [y,n,q,a,d%s,?]? "
+msgstr ""
+
+#: add-patch.c:105 git-add--interactive.perl:1451
+#, c-format, perl-format
+msgid "Apply addition to index [y,n,q,a,d%s,?]? "
+msgstr ""
+
+#: add-patch.c:106 git-add--interactive.perl:1452
+#, c-format, perl-format
+msgid "Apply this hunk to index [y,n,q,a,d%s,?]? "
+msgstr ""
+
+#: add-patch.c:108 add-patch.c:176 add-patch.c:221
+msgid ""
+"If the patch applies cleanly, the edited hunk will immediately be marked for "
+"applying."
+msgstr ""
+
+#: add-patch.c:111
+msgid ""
+"y - apply this hunk to index\n"
+"n - do not apply this hunk to index\n"
+"q - quit; do not apply this hunk or any of the remaining ones\n"
+"a - apply this hunk and all later hunks in the file\n"
+"d - do not apply this hunk or any of the later hunks in the file\n"
+msgstr ""
+
+#: add-patch.c:126 git-add--interactive.perl:1455
+#: git-add--interactive.perl:1473
+#, c-format, perl-format
+msgid "Discard mode change from worktree [y,n,q,a,d%s,?]? "
+msgstr ""
+
+#: add-patch.c:127 git-add--interactive.perl:1456
+#: git-add--interactive.perl:1474
+#, c-format, perl-format
+msgid "Discard deletion from worktree [y,n,q,a,d%s,?]? "
+msgstr ""
+
+#: add-patch.c:128 git-add--interactive.perl:1457
+#: git-add--interactive.perl:1475
+#, c-format, perl-format
+msgid "Discard addition from worktree [y,n,q,a,d%s,?]? "
+msgstr ""
+
+#: add-patch.c:129 git-add--interactive.perl:1458
+#: git-add--interactive.perl:1476
+#, c-format, perl-format
+msgid "Discard this hunk from worktree [y,n,q,a,d%s,?]? "
+msgstr ""
+
+#: add-patch.c:131 add-patch.c:154 add-patch.c:199
+msgid ""
+"If the patch applies cleanly, the edited hunk will immediately be marked for "
+"discarding."
+msgstr ""
+
+#: add-patch.c:134 add-patch.c:202
+msgid ""
+"y - discard this hunk from worktree\n"
+"n - do not discard this hunk from worktree\n"
+"q - quit; do not discard this hunk or any of the remaining ones\n"
+"a - discard this hunk and all later hunks in the file\n"
+"d - do not discard this hunk or any of the later hunks in the file\n"
+msgstr ""
+
+#: add-patch.c:149 add-patch.c:194 git-add--interactive.perl:1461
+#, c-format, perl-format
+msgid "Discard mode change from index and worktree [y,n,q,a,d%s,?]? "
+msgstr ""
+
+#: add-patch.c:150 add-patch.c:195 git-add--interactive.perl:1462
+#, c-format, perl-format
+msgid "Discard deletion from index and worktree [y,n,q,a,d%s,?]? "
+msgstr ""
+
+#: add-patch.c:151 add-patch.c:196 git-add--interactive.perl:1463
+#, c-format, perl-format
+msgid "Discard addition from index and worktree [y,n,q,a,d%s,?]? "
+msgstr ""
+
+#: add-patch.c:152 add-patch.c:197 git-add--interactive.perl:1464
+#, c-format, perl-format
+msgid "Discard this hunk from index and worktree [y,n,q,a,d%s,?]? "
+msgstr ""
+
+#: add-patch.c:157
+msgid ""
+"y - discard this hunk from index and worktree\n"
+"n - do not discard this hunk from index and worktree\n"
+"q - quit; do not discard this hunk or any of the remaining ones\n"
+"a - discard this hunk and all later hunks in the file\n"
+"d - do not discard this hunk or any of the later hunks in the file\n"
+msgstr ""
+
+#: add-patch.c:171 add-patch.c:216 git-add--interactive.perl:1467
+#, c-format, perl-format
+msgid "Apply mode change to index and worktree [y,n,q,a,d%s,?]? "
+msgstr ""
+
+#: add-patch.c:172 add-patch.c:217 git-add--interactive.perl:1468
+#, c-format, perl-format
+msgid "Apply deletion to index and worktree [y,n,q,a,d%s,?]? "
+msgstr ""
+
+#: add-patch.c:173 add-patch.c:218 git-add--interactive.perl:1469
+#, c-format, perl-format
+msgid "Apply addition to index and worktree [y,n,q,a,d%s,?]? "
+msgstr ""
+
+#: add-patch.c:174 add-patch.c:219 git-add--interactive.perl:1470
+#, c-format, perl-format
+msgid "Apply this hunk to index and worktree [y,n,q,a,d%s,?]? "
+msgstr ""
+
+#: add-patch.c:179
+msgid ""
+"y - apply this hunk to index and worktree\n"
+"n - do not apply this hunk to index and worktree\n"
+"q - quit; do not apply this hunk or any of the remaining ones\n"
+"a - apply this hunk and all later hunks in the file\n"
+"d - do not apply this hunk or any of the later hunks in the file\n"
+msgstr ""
+
+#: add-patch.c:224
+msgid ""
+"y - apply this hunk to worktree\n"
+"n - do not apply this hunk to worktree\n"
+"q - quit; do not apply this hunk or any of the remaining ones\n"
+"a - apply this hunk and all later hunks in the file\n"
+"d - do not apply this hunk or any of the later hunks in the file\n"
+msgstr ""
+
+#: add-patch.c:342
+#, c-format
+msgid "could not parse hunk header '%.*s'"
+msgstr ""
+
+#: add-patch.c:361 add-patch.c:365
+#, c-format
+msgid "could not parse colored hunk header '%.*s'"
+msgstr ""
+
+#: add-patch.c:419
+msgid "could not parse diff"
+msgstr ""
+
+#: add-patch.c:438
+msgid "could not parse colored diff"
+msgstr ""
+
+#: add-patch.c:452
+#, c-format
+msgid "failed to run '%s'"
+msgstr ""
+
+#: add-patch.c:611
+msgid "mismatched output from interactive.diffFilter"
+msgstr ""
+
+#: add-patch.c:612
+msgid ""
+"Your filter must maintain a one-to-one correspondence\n"
+"between its input and output lines."
+msgstr ""
+
+#: add-patch.c:790
+#, c-format
+msgid ""
+"expected context line #%d in\n"
+"%.*s"
+msgstr ""
+
+#: add-patch.c:805
+#, c-format
+msgid ""
+"hunks do not overlap:\n"
+"%.*s\n"
+"\tdoes not end with:\n"
+"%.*s"
+msgstr ""
+
+#: add-patch.c:1081 git-add--interactive.perl:1115
+msgid "Manual hunk edit mode -- see bottom for a quick guide.\n"
+msgstr ""
+
+#: add-patch.c:1085
+#, c-format
+msgid ""
+"---\n"
+"To remove '%c' lines, make them ' ' lines (context).\n"
+"To remove '%c' lines, delete them.\n"
+"Lines starting with %c will be removed.\n"
+msgstr ""
+
+#. TRANSLATORS: 'it' refers to the patch mentioned in the previous messages.
+#: add-patch.c:1099 git-add--interactive.perl:1129
+msgid ""
+"If it does not apply cleanly, you will be given an opportunity to\n"
+"edit again.  If all lines of the hunk are removed, then the edit is\n"
+"aborted and the hunk is left unchanged.\n"
+msgstr ""
+
+#: add-patch.c:1132
+msgid "could not parse hunk header"
+msgstr ""
+
+#: add-patch.c:1177
+msgid "'git apply --cached' failed"
+msgstr ""
+
+#. TRANSLATORS: do not translate [y/n]
+#. The program will only accept that input at this point.
+#. Consider translating (saying "no" discards!) as
+#. (saying "n" for "no" discards!) if the translation
+#. of the word "no" does not start with n.
+#.
+#. TRANSLATORS: do not translate [y/n]
+#. The program will only accept that input
+#. at this point.
+#. Consider translating (saying "no" discards!) as
+#. (saying "n" for "no" discards!) if the translation
+#. of the word "no" does not start with n.
+#: add-patch.c:1246 git-add--interactive.perl:1242
+msgid ""
+"Your edited hunk does not apply. Edit again (saying \"no\" discards!) [y/n]? "
+msgstr ""
+
+#: add-patch.c:1289
+msgid "The selected hunks do not apply to the index!"
+msgstr ""
+
+#: add-patch.c:1290 git-add--interactive.perl:1346
+msgid "Apply them to the worktree anyway? "
+msgstr ""
+
+#: add-patch.c:1297 git-add--interactive.perl:1349
+msgid "Nothing was applied.\n"
+msgstr ""
+
+#: add-patch.c:1354
+msgid ""
+"j - leave this hunk undecided, see next undecided hunk\n"
+"J - leave this hunk undecided, see next hunk\n"
+"k - leave this hunk undecided, see previous undecided hunk\n"
+"K - leave this hunk undecided, see previous hunk\n"
+"g - select a hunk to go to\n"
+"/ - search for a hunk matching the given regex\n"
+"s - split the current hunk into smaller hunks\n"
+"e - manually edit the current hunk\n"
+"? - print help\n"
+msgstr ""
+
+#: add-patch.c:1516 add-patch.c:1526
+msgid "No previous hunk"
+msgstr ""
+
+#: add-patch.c:1521 add-patch.c:1531
+msgid "No next hunk"
+msgstr ""
+
+#: add-patch.c:1537
+msgid "No other hunks to goto"
+msgstr ""
+
+#: add-patch.c:1548 git-add--interactive.perl:1606
+msgid "go to which hunk (<ret> to see more)? "
+msgstr ""
+
+#: add-patch.c:1549 git-add--interactive.perl:1608
+msgid "go to which hunk? "
+msgstr ""
+
+#: add-patch.c:1560
+#, c-format
+msgid "Invalid number: '%s'"
+msgstr ""
+
+#: add-patch.c:1565
+#, c-format
+msgid "Sorry, only %d hunk available."
+msgid_plural "Sorry, only %d hunks available."
+msgstr[0] ""
+msgstr[1] ""
+
+#: add-patch.c:1574
+msgid "No other hunks to search"
+msgstr ""
+
+#: add-patch.c:1580 git-add--interactive.perl:1661
+msgid "search for regex? "
+msgstr ""
+
+#: add-patch.c:1595
+#, c-format
+msgid "Malformed search regexp %s: %s"
+msgstr ""
+
+#: add-patch.c:1612
+msgid "No hunk matches the given pattern"
+msgstr ""
+
+#: add-patch.c:1619
+msgid "Sorry, cannot split this hunk"
+msgstr ""
+
+#: add-patch.c:1623
+#, c-format
+msgid "Split into %d hunks."
+msgstr ""
+
+#: add-patch.c:1627
+msgid "Sorry, cannot edit this hunk"
+msgstr ""
+
+#: add-patch.c:1679
+msgid "'git apply' failed"
+msgstr ""
+
+#: advice.c:143
+#, c-format
+msgid ""
+"\n"
+"Disable this message with \"git config advice.%s false\""
+msgstr ""
+
+#: advice.c:159
+#, c-format
+msgid "%shint: %.*s%s\n"
+msgstr ""
+
+#: advice.c:250
+msgid "Cherry-picking is not possible because you have unmerged files."
+msgstr ""
+
+#: advice.c:252
+msgid "Committing is not possible because you have unmerged files."
+msgstr ""
+
+#: advice.c:254
+msgid "Merging is not possible because you have unmerged files."
+msgstr ""
+
+#: advice.c:256
+msgid "Pulling is not possible because you have unmerged files."
+msgstr ""
+
+#: advice.c:258
+msgid "Reverting is not possible because you have unmerged files."
+msgstr ""
+
+#: advice.c:260
+#, c-format
+msgid "It is not possible to %s because you have unmerged files."
+msgstr ""
+
+#: advice.c:268
+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:276
+msgid "Exiting because of an unresolved conflict."
+msgstr ""
+
+#: advice.c:281 builtin/merge.c:1370
+msgid "You have not concluded your merge (MERGE_HEAD exists)."
+msgstr ""
+
+#: advice.c:283
+msgid "Please, commit your changes before merging."
+msgstr ""
+
+#: advice.c:284
+msgid "Exiting because of unfinished merge."
+msgstr ""
+
+#: advice.c:290
+#, c-format
+msgid ""
+"Note: switching to '%s'.\n"
+"\n"
+"You are in 'detached HEAD' state. You can look around, make experimental\n"
+"changes and commit them, and you can discard any commits you make in this\n"
+"state without impacting any branches by switching back to a branch.\n"
+"\n"
+"If you want to create a new branch to retain commits you create, you may\n"
+"do so (now or later) by using -c with the switch command. Example:\n"
+"\n"
+"  git switch -c <new-branch-name>\n"
+"\n"
+"Or undo this operation with:\n"
+"\n"
+"  git switch -\n"
+"\n"
+"Turn off this advice by setting config variable advice.detachedHead to "
+"false\n"
+"\n"
+msgstr ""
+
+#: alias.c:50
+msgid "cmdline ends with \\"
+msgstr ""
+
+#: alias.c:51
+msgid "unclosed quote"
+msgstr ""
+
+#: apply.c:69
+#, c-format
+msgid "unrecognized whitespace option '%s'"
+msgstr ""
+
+#: apply.c:85
+#, c-format
+msgid "unrecognized whitespace ignore option '%s'"
+msgstr ""
+
+#: apply.c:135
+msgid "--reject and --3way cannot be used together."
+msgstr ""
+
+#: apply.c:137
+msgid "--cached and --3way cannot be used together."
+msgstr ""
+
+#: apply.c:140
+msgid "--3way outside a repository"
+msgstr ""
+
+#: apply.c:151
+msgid "--index outside a repository"
+msgstr ""
+
+#: apply.c:154
+msgid "--cached outside a repository"
+msgstr ""
+
+#: apply.c:801
+#, c-format
+msgid "Cannot prepare timestamp regexp %s"
+msgstr ""
+
+#: apply.c:810
+#, c-format
+msgid "regexec returned %d for input: %s"
+msgstr ""
+
+#: apply.c:884
+#, c-format
+msgid "unable to find filename in patch at line %d"
+msgstr ""
+
+#: apply.c:922
+#, c-format
+msgid "git apply: bad git-diff - expected /dev/null, got %s on line %d"
+msgstr ""
+
+#: apply.c:928
+#, c-format
+msgid "git apply: bad git-diff - inconsistent new filename on line %d"
+msgstr ""
+
+#: apply.c:929
+#, c-format
+msgid "git apply: bad git-diff - inconsistent old filename on line %d"
+msgstr ""
+
+#: apply.c:934
+#, c-format
+msgid "git apply: bad git-diff - expected /dev/null on line %d"
+msgstr ""
+
+#: apply.c:963
+#, c-format
+msgid "invalid mode on line %d: %s"
+msgstr ""
+
+#: apply.c:1282
+#, c-format
+msgid "inconsistent header lines %d and %d"
+msgstr ""
+
+#: apply.c:1372
+#, c-format
+msgid ""
+"git diff header lacks filename information when removing %d leading pathname "
+"component (line %d)"
+msgid_plural ""
+"git diff header lacks filename information when removing %d leading pathname "
+"components (line %d)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: apply.c:1385
+#, c-format
+msgid "git diff header lacks filename information (line %d)"
+msgstr ""
+
+#: apply.c:1481
+#, c-format
+msgid "recount: unexpected line: %.*s"
+msgstr ""
+
+#: apply.c:1550
+#, c-format
+msgid "patch fragment without header at line %d: %.*s"
+msgstr ""
+
+#: apply.c:1753
+msgid "new file depends on old contents"
+msgstr ""
+
+#: apply.c:1755
+msgid "deleted file still has contents"
+msgstr ""
+
+#: apply.c:1789
+#, c-format
+msgid "corrupt patch at line %d"
+msgstr ""
+
+#: apply.c:1826
+#, c-format
+msgid "new file %s depends on old contents"
+msgstr ""
+
+#: apply.c:1828
+#, c-format
+msgid "deleted file %s still has contents"
+msgstr ""
+
+#: apply.c:1831
+#, c-format
+msgid "** warning: file %s becomes empty but is not deleted"
+msgstr ""
+
+#: apply.c:1978
+#, c-format
+msgid "corrupt binary patch at line %d: %.*s"
+msgstr ""
+
+#: apply.c:2015
+#, c-format
+msgid "unrecognized binary patch at line %d"
+msgstr ""
+
+#: apply.c:2177
+#, c-format
+msgid "patch with only garbage at line %d"
+msgstr ""
+
+#: apply.c:2263
+#, c-format
+msgid "unable to read symlink %s"
+msgstr ""
+
+#: apply.c:2267
+#, c-format
+msgid "unable to open or read %s"
+msgstr ""
+
+#: apply.c:2936
+#, c-format
+msgid "invalid start of line: '%c'"
+msgstr ""
+
+#: apply.c:3057
+#, c-format
+msgid "Hunk #%d succeeded at %d (offset %d line)."
+msgid_plural "Hunk #%d succeeded at %d (offset %d lines)."
+msgstr[0] ""
+msgstr[1] ""
+
+#: apply.c:3069
+#, c-format
+msgid "Context reduced to (%ld/%ld) to apply fragment at %d"
+msgstr ""
+
+#: apply.c:3075
+#, c-format
+msgid ""
+"while searching for:\n"
+"%.*s"
+msgstr ""
+
+#: apply.c:3097
+#, c-format
+msgid "missing binary patch data for '%s'"
+msgstr ""
+
+#: apply.c:3105
+#, c-format
+msgid "cannot reverse-apply a binary patch without the reverse hunk to '%s'"
+msgstr ""
+
+#: apply.c:3152
+#, c-format
+msgid "cannot apply binary patch to '%s' without full index line"
+msgstr ""
+
+#: apply.c:3163
+#, c-format
+msgid ""
+"the patch applies to '%s' (%s), which does not match the current contents."
+msgstr ""
+
+#: apply.c:3171
+#, c-format
+msgid "the patch applies to an empty '%s' but it is not empty"
+msgstr ""
+
+#: apply.c:3189
+#, c-format
+msgid "the necessary postimage %s for '%s' cannot be read"
+msgstr ""
+
+#: apply.c:3202
+#, c-format
+msgid "binary patch does not apply to '%s'"
+msgstr ""
+
+#: apply.c:3209
+#, c-format
+msgid "binary patch to '%s' creates incorrect result (expecting %s, got %s)"
+msgstr ""
+
+#: apply.c:3230
+#, c-format
+msgid "patch failed: %s:%ld"
+msgstr ""
+
+#: apply.c:3353
+#, c-format
+msgid "cannot checkout %s"
+msgstr ""
+
+#: apply.c:3405 apply.c:3416 apply.c:3462 midx.c:86 pack-revindex.c:213
+#: setup.c:308
+#, c-format
+msgid "failed to read %s"
+msgstr ""
+
+#: apply.c:3413
+#, c-format
+msgid "reading from '%s' beyond a symbolic link"
+msgstr ""
+
+#: apply.c:3442 apply.c:3685
+#, c-format
+msgid "path %s has been renamed/deleted"
+msgstr ""
+
+#: apply.c:3528 apply.c:3700
+#, c-format
+msgid "%s: does not exist in index"
+msgstr ""
+
+#: apply.c:3537 apply.c:3708 apply.c:3952
+#, c-format
+msgid "%s: does not match index"
+msgstr ""
+
+#: apply.c:3572
+msgid "repository lacks the necessary blob to fall back on 3-way merge."
+msgstr ""
+
+#: apply.c:3575
+#, c-format
+msgid "Falling back to three-way merge...\n"
+msgstr ""
+
+#: apply.c:3591 apply.c:3595
+#, c-format
+msgid "cannot read the current contents of '%s'"
+msgstr ""
+
+#: apply.c:3607
+#, c-format
+msgid "Failed to fall back on three-way merge...\n"
+msgstr ""
+
+#: apply.c:3621
+#, c-format
+msgid "Applied patch to '%s' with conflicts.\n"
+msgstr ""
+
+#: apply.c:3626
+#, c-format
+msgid "Applied patch to '%s' cleanly.\n"
+msgstr ""
+
+#: apply.c:3652
+msgid "removal patch leaves file contents"
+msgstr ""
+
+#: apply.c:3725
+#, c-format
+msgid "%s: wrong type"
+msgstr ""
+
+#: apply.c:3727
+#, c-format
+msgid "%s has type %o, expected %o"
+msgstr ""
+
+#: apply.c:3892 apply.c:3894 read-cache.c:832 read-cache.c:858
+#: read-cache.c:1313
+#, c-format
+msgid "invalid path '%s'"
+msgstr ""
+
+#: apply.c:3950
+#, c-format
+msgid "%s: already exists in index"
+msgstr ""
+
+#: apply.c:3954
+#, c-format
+msgid "%s: already exists in working directory"
+msgstr ""
+
+#: apply.c:3974
+#, c-format
+msgid "new mode (%o) of %s does not match old mode (%o)"
+msgstr ""
+
+#: apply.c:3979
+#, c-format
+msgid "new mode (%o) of %s does not match old mode (%o) of %s"
+msgstr ""
+
+#: apply.c:3999
+#, c-format
+msgid "affected file '%s' is beyond a symbolic link"
+msgstr ""
+
+#: apply.c:4003
+#, c-format
+msgid "%s: patch does not apply"
+msgstr ""
+
+#: apply.c:4018
+#, c-format
+msgid "Checking patch %s..."
+msgstr ""
+
+#: apply.c:4110
+#, c-format
+msgid "sha1 information is lacking or useless for submodule %s"
+msgstr ""
+
+#: apply.c:4117
+#, c-format
+msgid "mode change for %s, which is not in current HEAD"
+msgstr ""
+
+#: apply.c:4120
+#, c-format
+msgid "sha1 information is lacking or useless (%s)."
+msgstr ""
+
+#: apply.c:4129
+#, c-format
+msgid "could not add %s to temporary index"
+msgstr ""
+
+#: apply.c:4139
+#, c-format
+msgid "could not write temporary index to %s"
+msgstr ""
+
+#: apply.c:4277
+#, c-format
+msgid "unable to remove %s from index"
+msgstr ""
+
+#: apply.c:4311
+#, c-format
+msgid "corrupt patch for submodule %s"
+msgstr ""
+
+#: apply.c:4317
+#, c-format
+msgid "unable to stat newly created file '%s'"
+msgstr ""
+
+#: apply.c:4325
+#, c-format
+msgid "unable to create backing store for newly created file %s"
+msgstr ""
+
+#: apply.c:4331 apply.c:4476
+#, c-format
+msgid "unable to add cache entry for %s"
+msgstr ""
+
+#: apply.c:4374 builtin/bisect--helper.c:523
+#, c-format
+msgid "failed to write to '%s'"
+msgstr ""
+
+#: apply.c:4378
+#, c-format
+msgid "closing file '%s'"
+msgstr ""
+
+#: apply.c:4448
+#, c-format
+msgid "unable to write file '%s' mode %o"
+msgstr ""
+
+#: apply.c:4546
+#, c-format
+msgid "Applied patch %s cleanly."
+msgstr ""
+
+#: apply.c:4554
+msgid "internal error"
+msgstr ""
+
+#: apply.c:4557
+#, c-format
+msgid "Applying patch %%s with %d reject..."
+msgid_plural "Applying patch %%s with %d rejects..."
+msgstr[0] ""
+msgstr[1] ""
+
+#: apply.c:4568
+#, c-format
+msgid "truncating .rej filename to %.*s.rej"
+msgstr ""
+
+#: apply.c:4576 builtin/fetch.c:933 builtin/fetch.c:1334
+#, c-format
+msgid "cannot open %s"
+msgstr ""
+
+#: apply.c:4590
+#, c-format
+msgid "Hunk #%d applied cleanly."
+msgstr ""
+
+#: apply.c:4594
+#, c-format
+msgid "Rejected hunk #%d."
+msgstr ""
+
+#: apply.c:4718
+#, c-format
+msgid "Skipped patch '%s'."
+msgstr ""
+
+#: apply.c:4726
+msgid "unrecognized input"
+msgstr ""
+
+#: apply.c:4746
+msgid "unable to read index file"
+msgstr ""
+
+#: apply.c:4903
+#, c-format
+msgid "can't open patch '%s': %s"
+msgstr ""
+
+#: apply.c:4930
+#, c-format
+msgid "squelched %d whitespace error"
+msgid_plural "squelched %d whitespace errors"
+msgstr[0] ""
+msgstr[1] ""
+
+#: apply.c:4936 apply.c:4951
+#, c-format
+msgid "%d line adds whitespace errors."
+msgid_plural "%d lines add whitespace errors."
+msgstr[0] ""
+msgstr[1] ""
+
+#: apply.c:4944
+#, c-format
+msgid "%d line applied after fixing whitespace errors."
+msgid_plural "%d lines applied after fixing whitespace errors."
+msgstr[0] ""
+msgstr[1] ""
+
+#: apply.c:4960 builtin/add.c:626 builtin/mv.c:304 builtin/rm.c:406
+msgid "Unable to write new index file"
+msgstr ""
+
+#: apply.c:4988
+msgid "don't apply changes matching the given path"
+msgstr ""
+
+#: apply.c:4991
+msgid "apply changes matching the given path"
+msgstr ""
+
+#: apply.c:4993 builtin/am.c:2266
+msgid "num"
+msgstr ""
+
+#: apply.c:4994
+msgid "remove <num> leading slashes from traditional diff paths"
+msgstr ""
+
+#: apply.c:4997
+msgid "ignore additions made by the patch"
+msgstr ""
+
+#: apply.c:4999
+msgid "instead of applying the patch, output diffstat for the input"
+msgstr ""
+
+#: apply.c:5003
+msgid "show number of added and deleted lines in decimal notation"
+msgstr ""
+
+#: apply.c:5005
+msgid "instead of applying the patch, output a summary for the input"
+msgstr ""
+
+#: apply.c:5007
+msgid "instead of applying the patch, see if the patch is applicable"
+msgstr ""
+
+#: apply.c:5009
+msgid "make sure the patch is applicable to the current index"
+msgstr ""
+
+#: apply.c:5011
+msgid "mark new files with `git add --intent-to-add`"
+msgstr ""
+
+#: apply.c:5013
+msgid "apply a patch without touching the working tree"
+msgstr ""
+
+#: apply.c:5015
+msgid "accept a patch that touches outside the working area"
+msgstr ""
+
+#: apply.c:5018
+msgid "also apply the patch (use with --stat/--summary/--check)"
+msgstr ""
+
+#: apply.c:5020
+msgid "attempt three-way merge if a patch does not apply"
+msgstr ""
+
+#: apply.c:5022
+msgid "build a temporary index based on embedded index information"
+msgstr ""
+
+#: apply.c:5025 builtin/checkout-index.c:195 builtin/ls-files.c:540
+msgid "paths are separated with NUL character"
+msgstr ""
+
+#: apply.c:5027
+msgid "ensure at least <n> lines of context match"
+msgstr ""
+
+#: apply.c:5028 builtin/am.c:2245 builtin/interpret-trailers.c:98
+#: builtin/interpret-trailers.c:100 builtin/interpret-trailers.c:102
+#: builtin/pack-objects.c:3577 builtin/rebase.c:1352
+msgid "action"
+msgstr ""
+
+#: apply.c:5029
+msgid "detect new or modified lines that have whitespace errors"
+msgstr ""
+
+#: apply.c:5032 apply.c:5035
+msgid "ignore changes in whitespace when finding context"
+msgstr ""
+
+#: apply.c:5038
+msgid "apply the patch in reverse"
+msgstr ""
+
+#: apply.c:5040
+msgid "don't expect at least one line of context"
+msgstr ""
+
+#: apply.c:5042
+msgid "leave the rejected hunks in corresponding *.rej files"
+msgstr ""
+
+#: apply.c:5044
+msgid "allow overlapping hunks"
+msgstr ""
+
+#: apply.c:5045 builtin/add.c:337 builtin/check-ignore.c:22
+#: builtin/commit.c:1364 builtin/count-objects.c:98 builtin/fsck.c:757
+#: builtin/log.c:2286 builtin/mv.c:123 builtin/read-tree.c:128
+msgid "be verbose"
+msgstr ""
+
+#: apply.c:5047
+msgid "tolerate incorrectly detected missing new-line at the end of file"
+msgstr ""
+
+#: apply.c:5050
+msgid "do not trust the line counts in the hunk headers"
+msgstr ""
+
+#: apply.c:5052 builtin/am.c:2254
+msgid "root"
+msgstr ""
+
+#: apply.c:5053
+msgid "prepend <root> to all filenames"
+msgstr ""
+
+#: archive-tar.c:125 archive-zip.c:345
+#, c-format
+msgid "cannot stream blob %s"
+msgstr ""
+
+#: archive-tar.c:265 archive-zip.c:358
+#, c-format
+msgid "unsupported file mode: 0%o (SHA1: %s)"
+msgstr ""
+
+#: archive-tar.c:450
+#, c-format
+msgid "unable to start '%s' filter"
+msgstr ""
+
+#: archive-tar.c:453
+msgid "unable to redirect descriptor"
+msgstr ""
+
+#: archive-tar.c:460
+#, c-format
+msgid "'%s' filter reported error"
+msgstr ""
+
+#: archive-zip.c:318
+#, c-format
+msgid "path is not valid UTF-8: %s"
+msgstr ""
+
+#: archive-zip.c:322
+#, c-format
+msgid "path too long (%d chars, SHA1: %s): %s"
+msgstr ""
+
+#: archive-zip.c:469 builtin/pack-objects.c:244 builtin/pack-objects.c:247
+#, c-format
+msgid "deflate error (%d)"
+msgstr ""
+
+#: archive-zip.c:603
+#, c-format
+msgid "timestamp too large for this system: %<PRIuMAX>"
+msgstr ""
+
+#: archive.c:14
+msgid "git archive [<options>] <tree-ish> [<path>...]"
+msgstr ""
+
+#: archive.c:15
+msgid "git archive --list"
+msgstr ""
+
+#: archive.c:16
+msgid ""
+"git archive --remote <repo> [--exec <cmd>] [<options>] <tree-ish> [<path>...]"
+msgstr ""
+
+#: archive.c:17
+msgid "git archive --remote <repo> [--exec <cmd>] --list"
+msgstr ""
+
+#: archive.c:192
+#, c-format
+msgid "cannot read %s"
+msgstr ""
+
+#: archive.c:345 sequencer.c:459 sequencer.c:1744 sequencer.c:2894
+#: sequencer.c:3335 sequencer.c:3444 builtin/am.c:249 builtin/commit.c:786
+#: builtin/merge.c:1139
+#, c-format
+msgid "could not read '%s'"
+msgstr ""
+
+#: archive.c:430 builtin/add.c:189 builtin/add.c:602 builtin/rm.c:315
+#, c-format
+msgid "pathspec '%s' did not match any files"
+msgstr ""
+
+#: archive.c:454
+#, c-format
+msgid "no such ref: %.*s"
+msgstr ""
+
+#: archive.c:460
+#, c-format
+msgid "not a valid object name: %s"
+msgstr ""
+
+#: archive.c:473
+#, c-format
+msgid "not a tree object: %s"
+msgstr ""
+
+#: archive.c:485
+msgid "current working directory is untracked"
+msgstr ""
+
+#: archive.c:526
+#, c-format
+msgid "File not found: %s"
+msgstr ""
+
+#: archive.c:528
+#, c-format
+msgid "Not a regular file: %s"
+msgstr ""
+
+#: archive.c:555
+msgid "fmt"
+msgstr ""
+
+#: archive.c:555
+msgid "archive format"
+msgstr ""
+
+#: archive.c:556 builtin/log.c:1764
+msgid "prefix"
+msgstr ""
+
+#: archive.c:557
+msgid "prepend prefix to each pathname in the archive"
+msgstr ""
+
+#: archive.c:558 archive.c:561 builtin/blame.c:884 builtin/blame.c:888
+#: builtin/blame.c:889 builtin/commit-tree.c:117 builtin/config.c:135
+#: builtin/fast-export.c:1207 builtin/fast-export.c:1209
+#: builtin/fast-export.c:1213 builtin/grep.c:920 builtin/hash-object.c:105
+#: builtin/ls-files.c:576 builtin/ls-files.c:579 builtin/notes.c:412
+#: builtin/notes.c:578 builtin/read-tree.c:123 parse-options.h:190
+msgid "file"
+msgstr ""
+
+#: archive.c:559
+msgid "add untracked file to archive"
+msgstr ""
+
+#: archive.c:562 builtin/archive.c:90
+msgid "write the archive to this file"
+msgstr ""
+
+#: archive.c:564
+msgid "read .gitattributes in working directory"
+msgstr ""
+
+#: archive.c:565
+msgid "report archived files on stderr"
+msgstr ""
+
+#: archive.c:567
+msgid "set compression level"
+msgstr ""
+
+#: archive.c:570
+msgid "list supported archive formats"
+msgstr ""
+
+#: archive.c:572 builtin/archive.c:91 builtin/clone.c:114 builtin/clone.c:117
+#: builtin/submodule--helper.c:1830 builtin/submodule--helper.c:2335
+msgid "repo"
+msgstr ""
+
+#: archive.c:573 builtin/archive.c:92
+msgid "retrieve the archive from remote repository <repo>"
+msgstr ""
+
+#: archive.c:574 builtin/archive.c:93 builtin/difftool.c:714
+#: builtin/notes.c:498
+msgid "command"
+msgstr ""
+
+#: archive.c:575 builtin/archive.c:94
+msgid "path to the remote git-upload-archive command"
+msgstr ""
+
+#: archive.c:582
+msgid "Unexpected option --remote"
+msgstr ""
+
+#: archive.c:584
+msgid "Option --exec can only be used together with --remote"
+msgstr ""
+
+#: archive.c:586
+msgid "Unexpected option --output"
+msgstr ""
+
+#: archive.c:588
+msgid "Options --add-file and --remote cannot be used together"
+msgstr ""
+
+#: archive.c:610
+#, c-format
+msgid "Unknown archive format '%s'"
+msgstr ""
+
+#: archive.c:619
+#, c-format
+msgid "Argument not supported for format '%s': -%d"
+msgstr ""
+
+#: attr.c:202
+#, c-format
+msgid "%.*s is not a valid attribute name"
+msgstr ""
+
+#: attr.c:359
+#, c-format
+msgid "%s not allowed: %s:%d"
+msgstr ""
+
+#: attr.c:399
+msgid ""
+"Negative patterns are ignored in git attributes\n"
+"Use '\\!' for literal leading exclamation."
+msgstr ""
+
+#: bisect.c:489
+#, c-format
+msgid "Badly quoted content in file '%s': %s"
+msgstr ""
+
+#: bisect.c:699
+#, c-format
+msgid "We cannot bisect more!\n"
+msgstr ""
+
+#: bisect.c:766
+#, c-format
+msgid "Not a valid commit name %s"
+msgstr ""
+
+#: bisect.c:791
+#, 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:796
+#, c-format
+msgid ""
+"The merge base %s is new.\n"
+"The property has changed between %s and [%s].\n"
+msgstr ""
+
+#: bisect.c:801
+#, 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:809
+#, c-format
+msgid ""
+"Some %s revs are not ancestors of the %s rev.\n"
+"git bisect cannot work properly in this case.\n"
+"Maybe you mistook %s and %s revs?\n"
+msgstr ""
+
+#: bisect.c:822
+#, 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 ""
+
+#: bisect.c:861
+#, c-format
+msgid "Bisecting: a merge base must be tested\n"
+msgstr ""
+
+#: bisect.c:911
+#, c-format
+msgid "a %s revision is needed"
+msgstr ""
+
+#: bisect.c:941 builtin/notes.c:177 builtin/tag.c:287
+#, c-format
+msgid "could not create file '%s'"
+msgstr ""
+
+#: bisect.c:987 builtin/merge.c:153
+#, c-format
+msgid "could not read file '%s'"
+msgstr ""
+
+#: bisect.c:1027
+msgid "reading bisect refs failed"
+msgstr ""
+
+#: bisect.c:1057
+#, c-format
+msgid "%s was both %s and %s\n"
+msgstr ""
+
+#: bisect.c:1066
+#, c-format
+msgid ""
+"No testable commit found.\n"
+"Maybe you started with bad path arguments?\n"
+msgstr ""
+
+#: bisect.c:1095
+#, c-format
+msgid "(roughly %d step)"
+msgid_plural "(roughly %d steps)"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: the last %s will be replaced with "(roughly %d
+#. steps)" translation.
+#.
+#: bisect.c:1101
+#, 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:2777
+msgid "--contents and --reverse do not blend well."
+msgstr ""
+
+#: blame.c:2791
+msgid "cannot use --contents with final commit object name"
+msgstr ""
+
+#: blame.c:2812
+msgid "--reverse and --first-parent together require specified latest commit"
+msgstr ""
+
+#: blame.c:2821 bundle.c:213 ref-filter.c:2206 remote.c:2041 sequencer.c:2146
+#: sequencer.c:4641 submodule.c:856 builtin/commit.c:1045 builtin/log.c:411
+#: builtin/log.c:1016 builtin/log.c:1624 builtin/log.c:2045 builtin/log.c:2335
+#: builtin/merge.c:424 builtin/pack-objects.c:3395 builtin/pack-objects.c:3410
+#: builtin/shortlog.c:255
+msgid "revision walk setup failed"
+msgstr "persiapan jalan revisi gagal"
+
+#: blame.c:2839
+msgid ""
+"--reverse --first-parent together require range along first-parent chain"
+msgstr ""
+
+#: blame.c:2850
+#, c-format
+msgid "no such path %s in %s"
+msgstr ""
+
+#: blame.c:2861
+#, c-format
+msgid "cannot read blob %s for path %s"
+msgstr ""
+
+#: branch.c:53
+#, c-format
+msgid ""
+"\n"
+"After fixing the error cause you may try to fix up\n"
+"the remote tracking information by invoking\n"
+"\"git branch --set-upstream-to=%s%s%s\"."
+msgstr ""
+
+#: branch.c:67
+#, c-format
+msgid "Not setting branch %s as its own upstream."
+msgstr ""
+
+#: branch.c:93
+#, c-format
+msgid "Branch '%s' set up to track remote branch '%s' from '%s' by rebasing."
+msgstr ""
+
+#: branch.c:94
+#, c-format
+msgid "Branch '%s' set up to track remote branch '%s' from '%s'."
+msgstr ""
+
+#: branch.c:98
+#, c-format
+msgid "Branch '%s' set up to track local branch '%s' by rebasing."
+msgstr ""
+
+#: branch.c:99
+#, c-format
+msgid "Branch '%s' set up to track local branch '%s'."
+msgstr ""
+
+#: branch.c:104
+#, c-format
+msgid "Branch '%s' set up to track remote ref '%s' by rebasing."
+msgstr ""
+
+#: branch.c:105
+#, c-format
+msgid "Branch '%s' set up to track remote ref '%s'."
+msgstr ""
+
+#: branch.c:109
+#, c-format
+msgid "Branch '%s' set up to track local ref '%s' by rebasing."
+msgstr ""
+
+#: branch.c:110
+#, c-format
+msgid "Branch '%s' set up to track local ref '%s'."
+msgstr ""
+
+#: branch.c:119
+msgid "Unable to write upstream branch configuration"
+msgstr ""
+
+#: branch.c:156
+#, c-format
+msgid "Not tracking: ambiguous information for ref %s"
+msgstr ""
+
+#: branch.c:189
+#, c-format
+msgid "'%s' is not a valid branch name."
+msgstr ""
+
+#: branch.c:208
+#, c-format
+msgid "A branch named '%s' already exists."
+msgstr ""
+
+#: branch.c:213
+msgid "Cannot force update the current branch."
+msgstr ""
+
+#: branch.c:233
+#, c-format
+msgid "Cannot setup tracking information; starting point '%s' is not a branch."
+msgstr ""
+
+#: branch.c:235
+#, c-format
+msgid "the requested upstream branch '%s' does not exist"
+msgstr ""
+
+#: branch.c:237
+msgid ""
+"\n"
+"If you are planning on basing your work on an upstream\n"
+"branch that already exists at the remote, you may need to\n"
+"run \"git fetch\" to retrieve it.\n"
+"\n"
+"If you are planning to push out a new local branch that\n"
+"will track its remote counterpart, you may want to use\n"
+"\"git push -u\" to set the upstream config as you push."
+msgstr ""
+
+#: branch.c:281
+#, c-format
+msgid "Not a valid object name: '%s'."
+msgstr ""
+
+#: branch.c:301
+#, c-format
+msgid "Ambiguous object name: '%s'."
+msgstr ""
+
+#: branch.c:306
+#, c-format
+msgid "Not a valid branch point: '%s'."
+msgstr ""
+
+#: branch.c:365
+#, c-format
+msgid "'%s' is already checked out at '%s'"
+msgstr ""
+
+#: branch.c:388
+#, c-format
+msgid "HEAD of working tree %s is not updated"
+msgstr ""
+
+#: bundle.c:41
+#, c-format
+msgid "unrecognized bundle hash algorithm: %s"
+msgstr ""
+
+#: bundle.c:45
+#, c-format
+msgid "unknown capability '%s'"
+msgstr ""
+
+#: bundle.c:71
+#, c-format
+msgid "'%s' does not look like a v2 or v3 bundle file"
+msgstr ""
+
+#: bundle.c:110
+#, c-format
+msgid "unrecognized header: %s%s (%d)"
+msgstr ""
+
+#: bundle.c:136 rerere.c:464 rerere.c:674 sequencer.c:2398 sequencer.c:3184
+#: builtin/commit.c:814
+#, c-format
+msgid "could not open '%s'"
+msgstr ""
+
+#: bundle.c:189
+msgid "Repository lacks these prerequisite commits:"
+msgstr ""
+
+#: bundle.c:192
+msgid "need a repository to verify a bundle"
+msgstr ""
+
+#: bundle.c:243
+#, c-format
+msgid "The bundle contains this ref:"
+msgid_plural "The bundle contains these %d refs:"
+msgstr[0] ""
+msgstr[1] ""
+
+#: bundle.c:250
+msgid "The bundle records a complete history."
+msgstr ""
+
+#: bundle.c:252
+#, c-format
+msgid "The bundle requires this ref:"
+msgid_plural "The bundle requires these %d refs:"
+msgstr[0] ""
+msgstr[1] ""
+
+#: bundle.c:319
+msgid "unable to dup bundle descriptor"
+msgstr ""
+
+#: bundle.c:326
+msgid "Could not spawn pack-objects"
+msgstr ""
+
+#: bundle.c:337
+msgid "pack-objects died"
+msgstr ""
+
+#: bundle.c:386
+#, c-format
+msgid "ref '%s' is excluded by the rev-list options"
+msgstr ""
+
+#: bundle.c:490
+#, c-format
+msgid "unsupported bundle version %d"
+msgstr ""
+
+#: bundle.c:492
+#, c-format
+msgid "cannot write bundle version %d with algorithm %s"
+msgstr ""
+
+#: bundle.c:510 builtin/log.c:210 builtin/log.c:1926 builtin/shortlog.c:396
+#, c-format
+msgid "unrecognized argument: %s"
+msgstr ""
+
+#: bundle.c:539
+msgid "Refusing to create empty bundle."
+msgstr ""
+
+#: bundle.c:549
+#, c-format
+msgid "cannot create '%s'"
+msgstr ""
+
+#: bundle.c:574
+msgid "index-pack died"
+msgstr ""
+
+#: chunk-format.c:113
+msgid "terminating chunk id appears earlier than expected"
+msgstr ""
+
+#: chunk-format.c:122
+#, c-format
+msgid "improper chunk offset(s) %<PRIx64> and %<PRIx64>"
+msgstr ""
+
+#: chunk-format.c:129
+#, c-format
+msgid "duplicate chunk ID %<PRIx32> found"
+msgstr ""
+
+#: chunk-format.c:143
+#, c-format
+msgid "final chunk has non-zero id %<PRIx32>"
+msgstr ""
+
+#: color.c:329
+#, c-format
+msgid "invalid color value: %.*s"
+msgstr ""
+
+#: commit-graph.c:197 midx.c:46
+msgid "invalid hash version"
+msgstr ""
+
+#: commit-graph.c:255
+msgid "commit-graph file is too small"
+msgstr ""
+
+#: commit-graph.c:348
+#, c-format
+msgid "commit-graph signature %X does not match signature %X"
+msgstr ""
+
+#: commit-graph.c:355
+#, c-format
+msgid "commit-graph version %X does not match version %X"
+msgstr ""
+
+#: commit-graph.c:362
+#, c-format
+msgid "commit-graph hash version %X does not match version %X"
+msgstr ""
+
+#: commit-graph.c:379
+#, c-format
+msgid "commit-graph file is too small to hold %u chunks"
+msgstr ""
+
+#: commit-graph.c:472
+msgid "commit-graph has no base graphs chunk"
+msgstr ""
+
+#: commit-graph.c:482
+msgid "commit-graph chain does not match"
+msgstr ""
+
+#: commit-graph.c:530
+#, c-format
+msgid "invalid commit-graph chain: line '%s' not a hash"
+msgstr ""
+
+#: commit-graph.c:554
+msgid "unable to find all commit-graph files"
+msgstr ""
+
+#: commit-graph.c:735 commit-graph.c:772
+msgid "invalid commit position. commit-graph is likely corrupt"
+msgstr ""
+
+#: commit-graph.c:756
+#, c-format
+msgid "could not find commit %s"
+msgstr ""
+
+#: commit-graph.c:789
+msgid "commit-graph requires overflow generation data but has none"
+msgstr ""
+
+#: commit-graph.c:1065 builtin/am.c:1292
+#, c-format
+msgid "unable to parse commit %s"
+msgstr ""
+
+#: commit-graph.c:1327 builtin/pack-objects.c:2872
+#, c-format
+msgid "unable to get type of object %s"
+msgstr ""
+
+#: commit-graph.c:1358
+msgid "Loading known commits in commit graph"
+msgstr ""
+
+#: commit-graph.c:1375
+msgid "Expanding reachable commits in commit graph"
+msgstr ""
+
+#: commit-graph.c:1395
+msgid "Clearing commit marks in commit graph"
+msgstr ""
+
+#: commit-graph.c:1414
+msgid "Computing commit graph topological levels"
+msgstr ""
+
+#: commit-graph.c:1467
+msgid "Computing commit graph generation numbers"
+msgstr ""
+
+#: commit-graph.c:1548
+msgid "Computing commit changed paths Bloom filters"
+msgstr ""
+
+#: commit-graph.c:1625
+msgid "Collecting referenced commits"
+msgstr ""
+
+#: commit-graph.c:1650
+#, c-format
+msgid "Finding commits for commit graph in %d pack"
+msgid_plural "Finding commits for commit graph in %d packs"
+msgstr[0] ""
+msgstr[1] ""
+
+#: commit-graph.c:1663
+#, c-format
+msgid "error adding pack %s"
+msgstr ""
+
+#: commit-graph.c:1667
+#, c-format
+msgid "error opening index for %s"
+msgstr ""
+
+#: commit-graph.c:1704
+msgid "Finding commits for commit graph among packed objects"
+msgstr ""
+
+#: commit-graph.c:1722
+msgid "Finding extra edges in commit graph"
+msgstr ""
+
+#: commit-graph.c:1771
+msgid "failed to write correct number of base graph ids"
+msgstr ""
+
+#: commit-graph.c:1802 midx.c:794
+#, c-format
+msgid "unable to create leading directories of %s"
+msgstr ""
+
+#: commit-graph.c:1815
+msgid "unable to create temporary graph layer"
+msgstr ""
+
+#: commit-graph.c:1820
+#, c-format
+msgid "unable to adjust shared permissions for '%s'"
+msgstr ""
+
+#: commit-graph.c:1879
+#, c-format
+msgid "Writing out commit graph in %d pass"
+msgid_plural "Writing out commit graph in %d passes"
+msgstr[0] ""
+msgstr[1] ""
+
+#: commit-graph.c:1915
+msgid "unable to open commit-graph chain file"
+msgstr ""
+
+#: commit-graph.c:1931
+msgid "failed to rename base commit-graph file"
+msgstr ""
+
+#: commit-graph.c:1951
+msgid "failed to rename temporary commit-graph file"
+msgstr ""
+
+#: commit-graph.c:2084
+msgid "Scanning merged commits"
+msgstr ""
+
+#: commit-graph.c:2128
+msgid "Merging commit-graph"
+msgstr ""
+
+#: commit-graph.c:2235
+msgid "attempting to write a commit-graph, but 'core.commitGraph' is disabled"
+msgstr ""
+
+#: commit-graph.c:2342
+msgid "too many commits to write graph"
+msgstr ""
+
+#: commit-graph.c:2440
+msgid "the commit-graph file has incorrect checksum and is likely corrupt"
+msgstr ""
+
+#: commit-graph.c:2450
+#, c-format
+msgid "commit-graph has incorrect OID order: %s then %s"
+msgstr ""
+
+#: commit-graph.c:2460 commit-graph.c:2475
+#, c-format
+msgid "commit-graph has incorrect fanout value: fanout[%d] = %u != %u"
+msgstr ""
+
+#: commit-graph.c:2467
+#, c-format
+msgid "failed to parse commit %s from commit-graph"
+msgstr ""
+
+#: commit-graph.c:2485
+msgid "Verifying commits in commit graph"
+msgstr ""
+
+#: commit-graph.c:2500
+#, c-format
+msgid "failed to parse commit %s from object database for commit-graph"
+msgstr ""
+
+#: commit-graph.c:2507
+#, c-format
+msgid "root tree OID for commit %s in commit-graph is %s != %s"
+msgstr ""
+
+#: commit-graph.c:2517
+#, c-format
+msgid "commit-graph parent list for commit %s is too long"
+msgstr ""
+
+#: commit-graph.c:2526
+#, c-format
+msgid "commit-graph parent for %s is %s != %s"
+msgstr ""
+
+#: commit-graph.c:2540
+#, c-format
+msgid "commit-graph parent list for commit %s terminates early"
+msgstr ""
+
+#: commit-graph.c:2545
+#, c-format
+msgid ""
+"commit-graph has generation number zero for commit %s, but non-zero elsewhere"
+msgstr ""
+
+#: commit-graph.c:2549
+#, c-format
+msgid ""
+"commit-graph has non-zero generation number for commit %s, but zero elsewhere"
+msgstr ""
+
+#: commit-graph.c:2566
+#, c-format
+msgid "commit-graph generation for commit %s is %<PRIuMAX> < %<PRIuMAX>"
+msgstr ""
+
+#: commit-graph.c:2572
+#, c-format
+msgid "commit date for commit %s in commit-graph is %<PRIuMAX> != %<PRIuMAX>"
+msgstr ""
+
+#: commit.c:52 sequencer.c:2887 builtin/am.c:359 builtin/am.c:403
+#: builtin/am.c:1371 builtin/am.c:2018 builtin/replace.c:457
+#, c-format
+msgid "could not parse %s"
+msgstr ""
+
+#: commit.c:54
+#, c-format
+msgid "%s %s is not a commit!"
+msgstr ""
+
+#: commit.c:194
+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:1223
+#, c-format
+msgid "Commit %s has an untrusted GPG signature, allegedly by %s."
+msgstr ""
+
+#: commit.c:1227
+#, c-format
+msgid "Commit %s has a bad GPG signature allegedly by %s."
+msgstr ""
+
+#: commit.c:1230
+#, c-format
+msgid "Commit %s does not have a GPG signature."
+msgstr ""
+
+#: commit.c:1233
+#, c-format
+msgid "Commit %s has a good GPG signature by %s\n"
+msgstr ""
+
+#: commit.c:1487
+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 ""
+
+#: compat/obstack.c:406 compat/obstack.c:408
+msgid "memory exhausted"
+msgstr ""
+
+#: config.c:126
+#, c-format
+msgid ""
+"exceeded maximum include depth (%d) while including\n"
+"\t%s\n"
+"from\n"
+"\t%s\n"
+"This might be due to circular includes."
+msgstr ""
+
+#: config.c:142
+#, c-format
+msgid "could not expand include path '%s'"
+msgstr ""
+
+#: config.c:153
+msgid "relative config includes must come from files"
+msgstr ""
+
+#: config.c:199
+msgid "relative config include conditionals must come from files"
+msgstr ""
+
+#: config.c:396
+msgid "invalid config format: %s"
+msgstr ""
+
+#: config.c:400
+#, c-format
+msgid "missing environment variable name for configuration '%.*s'"
+msgstr ""
+
+#: config.c:405
+#, c-format
+msgid "missing environment variable '%s' for configuration '%.*s'"
+msgstr ""
+
+#: config.c:442
+#, c-format
+msgid "key does not contain a section: %s"
+msgstr ""
+
+#: config.c:448
+#, c-format
+msgid "key does not contain variable name: %s"
+msgstr ""
+
+#: config.c:472 sequencer.c:2588
+#, c-format
+msgid "invalid key: %s"
+msgstr ""
+
+#: config.c:478
+#, c-format
+msgid "invalid key (newline): %s"
+msgstr ""
+
+#: config.c:511
+msgid "empty config key"
+msgstr ""
+
+#: config.c:529 config.c:541
+#, c-format
+msgid "bogus config parameter: %s"
+msgstr ""
+
+#: config.c:555 config.c:572 config.c:579 config.c:588
+#, c-format
+msgid "bogus format in %s"
+msgstr ""
+
+#: config.c:622
+#, c-format
+msgid "bogus count in %s"
+msgstr ""
+
+#: config.c:626
+#, c-format
+msgid "too many entries in %s"
+msgstr ""
+
+#: config.c:636
+#, c-format
+msgid "missing config key %s"
+msgstr ""
+
+#: config.c:644
+#, c-format
+msgid "missing config value %s"
+msgstr ""
+
+#: config.c:995
+#, c-format
+msgid "bad config line %d in blob %s"
+msgstr ""
+
+#: config.c:999
+#, c-format
+msgid "bad config line %d in file %s"
+msgstr ""
+
+#: config.c:1003
+#, c-format
+msgid "bad config line %d in standard input"
+msgstr ""
+
+#: config.c:1007
+#, c-format
+msgid "bad config line %d in submodule-blob %s"
+msgstr ""
+
+#: config.c:1011
+#, c-format
+msgid "bad config line %d in command line %s"
+msgstr ""
+
+#: config.c:1015
+#, c-format
+msgid "bad config line %d in %s"
+msgstr ""
+
+#: config.c:1152
+msgid "out of range"
+msgstr ""
+
+#: config.c:1152
+msgid "invalid unit"
+msgstr ""
+
+#: config.c:1153
+#, c-format
+msgid "bad numeric config value '%s' for '%s': %s"
+msgstr ""
+
+#: config.c:1163
+#, c-format
+msgid "bad numeric config value '%s' for '%s' in blob %s: %s"
+msgstr ""
+
+#: config.c:1166
+#, c-format
+msgid "bad numeric config value '%s' for '%s' in file %s: %s"
+msgstr ""
+
+#: config.c:1169
+#, c-format
+msgid "bad numeric config value '%s' for '%s' in standard input: %s"
+msgstr ""
+
+#: config.c:1172
+#, c-format
+msgid "bad numeric config value '%s' for '%s' in submodule-blob %s: %s"
+msgstr ""
+
+#: config.c:1175
+#, c-format
+msgid "bad numeric config value '%s' for '%s' in command line %s: %s"
+msgstr ""
+
+#: config.c:1178
+#, c-format
+msgid "bad numeric config value '%s' for '%s' in %s: %s"
+msgstr ""
+
+#: config.c:1194
+#, c-format
+msgid "bad boolean config value '%s' for '%s'"
+msgstr ""
+
+#: config.c:1289
+#, c-format
+msgid "failed to expand user dir in: '%s'"
+msgstr ""
+
+#: config.c:1298
+#, c-format
+msgid "'%s' for '%s' is not a valid timestamp"
+msgstr ""
+
+#: config.c:1391
+#, c-format
+msgid "abbrev length out of range: %d"
+msgstr ""
+
+#: config.c:1405 config.c:1416
+#, c-format
+msgid "bad zlib compression level %d"
+msgstr ""
+
+#: config.c:1508
+msgid "core.commentChar should only be one character"
+msgstr ""
+
+#: config.c:1541
+#, c-format
+msgid "invalid mode for object creation: %s"
+msgstr ""
+
+#: config.c:1613
+#, c-format
+msgid "malformed value for %s"
+msgstr ""
+
+#: config.c:1639
+#, c-format
+msgid "malformed value for %s: %s"
+msgstr ""
+
+#: config.c:1640
+msgid "must be one of nothing, matching, simple, upstream or current"
+msgstr ""
+
+#: config.c:1701 builtin/pack-objects.c:3666
+#, c-format
+msgid "bad pack compression level %d"
+msgstr ""
+
+#: config.c:1823
+#, c-format
+msgid "unable to load config blob object '%s'"
+msgstr ""
+
+#: config.c:1826
+#, c-format
+msgid "reference '%s' does not point to a blob"
+msgstr ""
+
+#: config.c:1843
+#, c-format
+msgid "unable to resolve config blob '%s'"
+msgstr ""
+
+#: config.c:1873
+#, c-format
+msgid "failed to parse %s"
+msgstr ""
+
+#: config.c:1927
+msgid "unable to parse command-line config"
+msgstr ""
+
+#: config.c:2290
+msgid "unknown error occurred while reading the configuration files"
+msgstr ""
+
+#: config.c:2464
+#, c-format
+msgid "Invalid %s: '%s'"
+msgstr ""
+
+#: config.c:2509
+#, c-format
+msgid "splitIndex.maxPercentChange value '%d' should be between 0 and 100"
+msgstr ""
+
+#: config.c:2555
+#, c-format
+msgid "unable to parse '%s' from command-line config"
+msgstr ""
+
+#: config.c:2557
+#, c-format
+msgid "bad config variable '%s' in file '%s' at line %d"
+msgstr ""
+
+#: config.c:2641
+#, c-format
+msgid "invalid section name '%s'"
+msgstr ""
+
+#: config.c:2673
+#, c-format
+msgid "%s has multiple values"
+msgstr ""
+
+#: config.c:2702
+#, c-format
+msgid "failed to write new configuration file %s"
+msgstr ""
+
+#: config.c:2954 config.c:3280
+#, c-format
+msgid "could not lock config file %s"
+msgstr ""
+
+#: config.c:2965
+#, c-format
+msgid "opening %s"
+msgstr ""
+
+#: config.c:3002 builtin/config.c:361
+#, c-format
+msgid "invalid pattern: %s"
+msgstr ""
+
+#: config.c:3027
+#, c-format
+msgid "invalid config file %s"
+msgstr ""
+
+#: config.c:3040 config.c:3293
+#, c-format
+msgid "fstat on %s failed"
+msgstr ""
+
+#: config.c:3051
+#, c-format
+msgid "unable to mmap '%s'"
+msgstr ""
+
+#: config.c:3060 config.c:3298
+#, c-format
+msgid "chmod on %s failed"
+msgstr ""
+
+#: config.c:3145 config.c:3395
+#, c-format
+msgid "could not write config file %s"
+msgstr ""
+
+#: config.c:3179
+#, c-format
+msgid "could not set '%s' to '%s'"
+msgstr ""
+
+#: config.c:3181 builtin/remote.c:657 builtin/remote.c:855 builtin/remote.c:863
+#, c-format
+msgid "could not unset '%s'"
+msgstr ""
+
+#: config.c:3271
+#, c-format
+msgid "invalid section name: %s"
+msgstr ""
+
+#: config.c:3438
+#, c-format
+msgid "missing value for '%s'"
+msgstr ""
+
+#: connect.c:61
+msgid "the remote end hung up upon initial contact"
+msgstr ""
+
+#: connect.c:63
+msgid ""
+"Could not read from remote repository.\n"
+"\n"
+"Please make sure you have the correct access rights\n"
+"and the repository exists."
+msgstr ""
+
+#: connect.c:81
+#, c-format
+msgid "server doesn't support '%s'"
+msgstr ""
+
+#: connect.c:118
+#, c-format
+msgid "server doesn't support feature '%s'"
+msgstr ""
+
+#: connect.c:129
+msgid "expected flush after capabilities"
+msgstr ""
+
+#: connect.c:263
+#, c-format
+msgid "ignoring capabilities after first line '%s'"
+msgstr ""
+
+#: connect.c:284
+msgid "protocol error: unexpected capabilities^{}"
+msgstr ""
+
+#: connect.c:306
+#, c-format
+msgid "protocol error: expected shallow sha-1, got '%s'"
+msgstr ""
+
+#: connect.c:308
+msgid "repository on the other end cannot be shallow"
+msgstr ""
+
+#: connect.c:347
+msgid "invalid packet"
+msgstr ""
+
+#: connect.c:367
+#, c-format
+msgid "protocol error: unexpected '%s'"
+msgstr ""
+
+#: connect.c:497
+#, c-format
+msgid "unknown object format '%s' specified by server"
+msgstr ""
+
+#: connect.c:526
+#, c-format
+msgid "invalid ls-refs response: %s"
+msgstr ""
+
+#: connect.c:530
+msgid "expected flush after ref listing"
+msgstr ""
+
+#: connect.c:533
+msgid "expected response end packet after ref listing"
+msgstr ""
+
+#: connect.c:666
+#, c-format
+msgid "protocol '%s' is not supported"
+msgstr ""
+
+#: connect.c:717
+msgid "unable to set SO_KEEPALIVE on socket"
+msgstr ""
+
+#: connect.c:757 connect.c:820
+#, c-format
+msgid "Looking up %s ... "
+msgstr ""
+
+#: connect.c:761
+#, c-format
+msgid "unable to look up %s (port %s) (%s)"
+msgstr ""
+
+#. TRANSLATORS: this is the end of "Looking up %s ... "
+#: connect.c:765 connect.c:836
+#, c-format
+msgid ""
+"done.\n"
+"Connecting to %s (port %s) ... "
+msgstr ""
+
+#: connect.c:787 connect.c:864
+#, c-format
+msgid ""
+"unable to connect to %s:\n"
+"%s"
+msgstr ""
+
+#. TRANSLATORS: this is the end of "Connecting to %s (port %s) ... "
+#: connect.c:793 connect.c:870
+msgid "done."
+msgstr ""
+
+#: connect.c:824
+#, c-format
+msgid "unable to look up %s (%s)"
+msgstr ""
+
+#: connect.c:830
+#, c-format
+msgid "unknown port %s"
+msgstr ""
+
+#: connect.c:967 connect.c:1299
+#, c-format
+msgid "strange hostname '%s' blocked"
+msgstr ""
+
+#: connect.c:969
+#, c-format
+msgid "strange port '%s' blocked"
+msgstr ""
+
+#: connect.c:979
+#, c-format
+msgid "cannot start proxy %s"
+msgstr ""
+
+#: connect.c:1050
+msgid "no path specified; see 'git help pull' for valid url syntax"
+msgstr ""
+
+#: connect.c:1190
+msgid "newline is forbidden in git:// hosts and repo paths"
+msgstr ""
+
+#: connect.c:1247
+msgid "ssh variant 'simple' does not support -4"
+msgstr ""
+
+#: connect.c:1259
+msgid "ssh variant 'simple' does not support -6"
+msgstr ""
+
+#: connect.c:1276
+msgid "ssh variant 'simple' does not support setting port"
+msgstr ""
+
+#: connect.c:1388
+#, c-format
+msgid "strange pathname '%s' blocked"
+msgstr ""
+
+#: connect.c:1436
+msgid "unable to fork"
+msgstr ""
+
+#: connected.c:108 builtin/fsck.c:191 builtin/prune.c:45
+msgid "Checking connectivity"
+msgstr ""
+
+#: connected.c:120
+msgid "Could not run 'git rev-list'"
+msgstr ""
+
+#: connected.c:144
+msgid "failed write to rev-list"
+msgstr ""
+
+#: connected.c:149
+msgid "failed to close rev-list's stdin"
+msgstr ""
+
+#: convert.c:194
+#, c-format
+msgid "illegal crlf_action %d"
+msgstr ""
+
+#: convert.c:207
+#, c-format
+msgid "CRLF would be replaced by LF in %s"
+msgstr ""
+
+#: convert.c:209
+#, 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:217
+#, c-format
+msgid "LF would be replaced by CRLF in %s"
+msgstr ""
+
+#: convert.c:219
+#, 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:284
+#, c-format
+msgid "BOM is prohibited in '%s' if encoded as %s"
+msgstr ""
+
+#: convert.c:291
+#, 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:419 convert.c:490
+#, c-format
+msgid "failed to encode '%s' from %s to %s"
+msgstr ""
+
+#: convert.c:462
+#, c-format
+msgid "encoding '%s' from %s to %s and back is not the same"
+msgstr ""
+
+#: convert.c:665
+#, c-format
+msgid "cannot fork to run external filter '%s'"
+msgstr ""
+
+#: convert.c:685
+#, c-format
+msgid "cannot feed the input to external filter '%s'"
+msgstr ""
+
+#: convert.c:692
+#, c-format
+msgid "external filter '%s' failed %d"
+msgstr ""
+
+#: convert.c:727 convert.c:730
+#, c-format
+msgid "read from external filter '%s' failed"
+msgstr ""
+
+#: convert.c:733 convert.c:788
+#, c-format
+msgid "external filter '%s' failed"
+msgstr ""
+
+#: convert.c:837
+msgid "unexpected filter type"
+msgstr ""
+
+#: convert.c:848
+msgid "path name too long for external filter"
+msgstr ""
+
+#: convert.c:940
+#, c-format
+msgid ""
+"external filter '%s' is not available anymore although not all paths have "
+"been filtered"
+msgstr ""
+
+#: convert.c:1240
+msgid "true/false are no valid working-tree-encodings"
+msgstr ""
+
+#: convert.c:1428 convert.c:1462
+#, c-format
+msgid "%s: clean filter '%s' failed"
+msgstr ""
+
+#: convert.c:1508
+#, c-format
+msgid "%s: smudge filter %s failed"
+msgstr ""
+
+#: credential.c:96
+#, c-format
+msgid "skipping credential lookup for key: credential.%s"
+msgstr ""
+
+#: credential.c:112
+msgid "refusing to work with credential missing host field"
+msgstr ""
+
+#: credential.c:114
+msgid "refusing to work with credential missing protocol field"
+msgstr ""
+
+#: credential.c:394
+#, c-format
+msgid "url contains a newline in its %s component: %s"
+msgstr ""
+
+#: credential.c:438
+#, c-format
+msgid "url has no scheme: %s"
+msgstr ""
+
+#: credential.c:511
+#, c-format
+msgid "credential url cannot be parsed: %s"
+msgstr ""
+
+#: date.c:138
+msgid "in the future"
+msgstr ""
+
+#: date.c:144
+#, c-format
+msgid "%<PRIuMAX> second ago"
+msgid_plural "%<PRIuMAX> seconds ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: date.c:151
+#, c-format
+msgid "%<PRIuMAX> minute ago"
+msgid_plural "%<PRIuMAX> minutes ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: date.c:158
+#, c-format
+msgid "%<PRIuMAX> hour ago"
+msgid_plural "%<PRIuMAX> hours ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: date.c:165
+#, c-format
+msgid "%<PRIuMAX> day ago"
+msgid_plural "%<PRIuMAX> days ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: date.c:171
+#, c-format
+msgid "%<PRIuMAX> week ago"
+msgid_plural "%<PRIuMAX> weeks ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: date.c:178
+#, c-format
+msgid "%<PRIuMAX> month ago"
+msgid_plural "%<PRIuMAX> months ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: date.c:189
+#, c-format
+msgid "%<PRIuMAX> year"
+msgid_plural "%<PRIuMAX> years"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: "%s" is "<n> years"
+#: date.c:192
+#, c-format
+msgid "%s, %<PRIuMAX> month ago"
+msgid_plural "%s, %<PRIuMAX> months ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: date.c:197 date.c:202
+#, c-format
+msgid "%<PRIuMAX> year ago"
+msgid_plural "%<PRIuMAX> years ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: delta-islands.c:272
+msgid "Propagating island marks"
+msgstr ""
+
+#: delta-islands.c:290
+#, c-format
+msgid "bad tree object %s"
+msgstr ""
+
+#: delta-islands.c:334
+#, c-format
+msgid "failed to load island regex for '%s': %s"
+msgstr ""
+
+#: delta-islands.c:390
+#, c-format
+msgid "island regex from config has too many capture groups (max=%d)"
+msgstr ""
+
+#: delta-islands.c:467
+#, c-format
+msgid "Marked %d islands, done.\n"
+msgstr ""
+
+#: diff-merges.c:70
+#, c-format
+msgid "unknown value for --diff-merges: %s"
+msgstr ""
+
+#: diff-lib.c:534
+msgid "--merge-base does not work with ranges"
+msgstr ""
+
+#: diff-lib.c:536
+msgid "--merge-base only works with commits"
+msgstr ""
+
+#: diff-lib.c:553
+msgid "unable to get HEAD"
+msgstr ""
+
+#: diff-lib.c:560
+msgid "no merge base found"
+msgstr ""
+
+#: diff-lib.c:562
+msgid "multiple merge bases found"
+msgstr ""
+
+#: diff-no-index.c:238
+msgid "git diff --no-index [<options>] <path> <path>"
+msgstr ""
+
+#: diff-no-index.c:263
+msgid ""
+"Not a git repository. Use --no-index to compare two paths outside a working "
+"tree"
+msgstr ""
+
+#: diff.c:156
+#, c-format
+msgid "  Failed to parse dirstat cut-off percentage '%s'\n"
+msgstr ""
+
+#: diff.c:161
+#, c-format
+msgid "  Unknown dirstat parameter '%s'\n"
+msgstr ""
+
+#: diff.c:297
+msgid ""
+"color moved setting must be one of 'no', 'default', 'blocks', 'zebra', "
+"'dimmed-zebra', 'plain'"
+msgstr ""
+
+#: diff.c:325
+#, c-format
+msgid ""
+"unknown color-moved-ws mode '%s', possible values are 'ignore-space-change', "
+"'ignore-space-at-eol', 'ignore-all-space', 'allow-indentation-change'"
+msgstr ""
+
+#: diff.c:333
+msgid ""
+"color-moved-ws: allow-indentation-change cannot be combined with other "
+"whitespace modes"
+msgstr ""
+
+#: diff.c:410
+#, c-format
+msgid "Unknown value for 'diff.submodule' config variable: '%s'"
+msgstr ""
+
+#: diff.c:470
+#, c-format
+msgid ""
+"Found errors in 'diff.dirstat' config variable:\n"
+"%s"
+msgstr ""
+
+#: diff.c:4276
+#, c-format
+msgid "external diff died, stopping at %s"
+msgstr ""
+
+#: diff.c:4628
+msgid "--name-only, --name-status, --check and -s are mutually exclusive"
+msgstr ""
+
+#: diff.c:4631
+msgid "-G, -S and --find-object are mutually exclusive"
+msgstr ""
+
+#: diff.c:4710
+msgid "--follow requires exactly one pathspec"
+msgstr ""
+
+#: diff.c:4758
+#, c-format
+msgid "invalid --stat value: %s"
+msgstr ""
+
+#: diff.c:4763 diff.c:4768 diff.c:4773 diff.c:4778 diff.c:5306
+#: parse-options.c:197 parse-options.c:201 builtin/commit-graph.c:180
+#, c-format
+msgid "%s expects a numerical value"
+msgstr ""
+
+#: diff.c:4795
+#, c-format
+msgid ""
+"Failed to parse --dirstat/-X option parameter:\n"
+"%s"
+msgstr ""
+
+#: diff.c:4880
+#, c-format
+msgid "unknown change class '%c' in --diff-filter=%s"
+msgstr ""
+
+#: diff.c:4904
+#, c-format
+msgid "unknown value after ws-error-highlight=%.*s"
+msgstr ""
+
+#: diff.c:4918
+#, c-format
+msgid "unable to resolve '%s'"
+msgstr ""
+
+#: diff.c:4968 diff.c:4974
+#, c-format
+msgid "%s expects <n>/<m> form"
+msgstr ""
+
+#: diff.c:4986
+#, c-format
+msgid "%s expects a character, got '%s'"
+msgstr ""
+
+#: diff.c:5007
+#, c-format
+msgid "bad --color-moved argument: %s"
+msgstr ""
+
+#: diff.c:5026
+#, c-format
+msgid "invalid mode '%s' in --color-moved-ws"
+msgstr ""
+
+#: diff.c:5066
+msgid ""
+"option diff-algorithm accepts \"myers\", \"minimal\", \"patience\" and "
+"\"histogram\""
+msgstr ""
+
+#: diff.c:5102 diff.c:5122
+#, c-format
+msgid "invalid argument to %s"
+msgstr ""
+
+#: diff.c:5226
+#, c-format
+msgid "invalid regex given to -I: '%s'"
+msgstr ""
+
+#: diff.c:5275
+#, c-format
+msgid "failed to parse --submodule option parameter: '%s'"
+msgstr ""
+
+#: diff.c:5331
+#, c-format
+msgid "bad --word-diff argument: %s"
+msgstr ""
+
+#: diff.c:5367
+msgid "Diff output format options"
+msgstr ""
+
+#: diff.c:5369 diff.c:5375
+msgid "generate patch"
+msgstr ""
+
+#: diff.c:5372 builtin/log.c:179
+msgid "suppress diff output"
+msgstr ""
+
+#: diff.c:5377 diff.c:5491 diff.c:5498
+msgid "<n>"
+msgstr ""
+
+#: diff.c:5378 diff.c:5381
+msgid "generate diffs with <n> lines context"
+msgstr ""
+
+#: diff.c:5383
+msgid "generate the diff in raw format"
+msgstr ""
+
+#: diff.c:5386
+msgid "synonym for '-p --raw'"
+msgstr ""
+
+#: diff.c:5390
+msgid "synonym for '-p --stat'"
+msgstr ""
+
+#: diff.c:5394
+msgid "machine friendly --stat"
+msgstr ""
+
+#: diff.c:5397
+msgid "output only the last line of --stat"
+msgstr ""
+
+#: diff.c:5399 diff.c:5407
+msgid "<param1,param2>..."
+msgstr ""
+
+#: diff.c:5400
+msgid ""
+"output the distribution of relative amount of changes for each sub-directory"
+msgstr ""
+
+#: diff.c:5404
+msgid "synonym for --dirstat=cumulative"
+msgstr ""
+
+#: diff.c:5408
+msgid "synonym for --dirstat=files,param1,param2..."
+msgstr ""
+
+#: diff.c:5412
+msgid "warn if changes introduce conflict markers or whitespace errors"
+msgstr ""
+
+#: diff.c:5415
+msgid "condensed summary such as creations, renames and mode changes"
+msgstr ""
+
+#: diff.c:5418
+msgid "show only names of changed files"
+msgstr ""
+
+#: diff.c:5421
+msgid "show only names and status of changed files"
+msgstr ""
+
+#: diff.c:5423
+msgid "<width>[,<name-width>[,<count>]]"
+msgstr ""
+
+#: diff.c:5424
+msgid "generate diffstat"
+msgstr ""
+
+#: diff.c:5426 diff.c:5429 diff.c:5432
+msgid "<width>"
+msgstr ""
+
+#: diff.c:5427
+msgid "generate diffstat with a given width"
+msgstr ""
+
+#: diff.c:5430
+msgid "generate diffstat with a given name width"
+msgstr ""
+
+#: diff.c:5433
+msgid "generate diffstat with a given graph width"
+msgstr ""
+
+#: diff.c:5435
+msgid "<count>"
+msgstr ""
+
+#: diff.c:5436
+msgid "generate diffstat with limited lines"
+msgstr ""
+
+#: diff.c:5439
+msgid "generate compact summary in diffstat"
+msgstr ""
+
+#: diff.c:5442
+msgid "output a binary diff that can be applied"
+msgstr ""
+
+#: diff.c:5445
+msgid "show full pre- and post-image object names on the \"index\" lines"
+msgstr ""
+
+#: diff.c:5447
+msgid "show colored diff"
+msgstr ""
+
+#: diff.c:5448
+msgid "<kind>"
+msgstr ""
+
+#: diff.c:5449
+msgid ""
+"highlight whitespace errors in the 'context', 'old' or 'new' lines in the "
+"diff"
+msgstr ""
+
+#: diff.c:5452
+msgid ""
+"do not munge pathnames and use NULs as output field terminators in --raw or "
+"--numstat"
+msgstr ""
+
+#: diff.c:5455 diff.c:5458 diff.c:5461 diff.c:5570
+msgid "<prefix>"
+msgstr ""
+
+#: diff.c:5456
+msgid "show the given source prefix instead of \"a/\""
+msgstr ""
+
+#: diff.c:5459
+msgid "show the given destination prefix instead of \"b/\""
+msgstr ""
+
+#: diff.c:5462
+msgid "prepend an additional prefix to every line of output"
+msgstr ""
+
+#: diff.c:5465
+msgid "do not show any source or destination prefix"
+msgstr ""
+
+#: diff.c:5468
+msgid "show context between diff hunks up to the specified number of lines"
+msgstr ""
+
+#: diff.c:5472 diff.c:5477 diff.c:5482
+msgid "<char>"
+msgstr ""
+
+#: diff.c:5473
+msgid "specify the character to indicate a new line instead of '+'"
+msgstr ""
+
+#: diff.c:5478
+msgid "specify the character to indicate an old line instead of '-'"
+msgstr ""
+
+#: diff.c:5483
+msgid "specify the character to indicate a context instead of ' '"
+msgstr ""
+
+#: diff.c:5486
+msgid "Diff rename options"
+msgstr ""
+
+#: diff.c:5487
+msgid "<n>[/<m>]"
+msgstr ""
+
+#: diff.c:5488
+msgid "break complete rewrite changes into pairs of delete and create"
+msgstr ""
+
+#: diff.c:5492
+msgid "detect renames"
+msgstr ""
+
+#: diff.c:5496
+msgid "omit the preimage for deletes"
+msgstr ""
+
+#: diff.c:5499
+msgid "detect copies"
+msgstr ""
+
+#: diff.c:5503
+msgid "use unmodified files as source to find copies"
+msgstr ""
+
+#: diff.c:5505
+msgid "disable rename detection"
+msgstr ""
+
+#: diff.c:5508
+msgid "use empty blobs as rename source"
+msgstr ""
+
+#: diff.c:5510
+msgid "continue listing the history of a file beyond renames"
+msgstr ""
+
+#: diff.c:5513
+msgid ""
+"prevent rename/copy detection if the number of rename/copy targets exceeds "
+"given limit"
+msgstr ""
+
+#: diff.c:5515
+msgid "Diff algorithm options"
+msgstr ""
+
+#: diff.c:5517
+msgid "produce the smallest possible diff"
+msgstr ""
+
+#: diff.c:5520
+msgid "ignore whitespace when comparing lines"
+msgstr ""
+
+#: diff.c:5523
+msgid "ignore changes in amount of whitespace"
+msgstr ""
+
+#: diff.c:5526
+msgid "ignore changes in whitespace at EOL"
+msgstr ""
+
+#: diff.c:5529
+msgid "ignore carrier-return at the end of line"
+msgstr ""
+
+#: diff.c:5532
+msgid "ignore changes whose lines are all blank"
+msgstr ""
+
+#: diff.c:5534 diff.c:5556 diff.c:5559 diff.c:5604
+msgid "<regex>"
+msgstr ""
+
+#: diff.c:5535
+msgid "ignore changes whose all lines match <regex>"
+msgstr ""
+
+#: diff.c:5538
+msgid "heuristic to shift diff hunk boundaries for easy reading"
+msgstr ""
+
+#: diff.c:5541
+msgid "generate diff using the \"patience diff\" algorithm"
+msgstr ""
+
+#: diff.c:5545
+msgid "generate diff using the \"histogram diff\" algorithm"
+msgstr ""
+
+#: diff.c:5547
+msgid "<algorithm>"
+msgstr ""
+
+#: diff.c:5548
+msgid "choose a diff algorithm"
+msgstr ""
+
+#: diff.c:5550
+msgid "<text>"
+msgstr ""
+
+#: diff.c:5551
+msgid "generate diff using the \"anchored diff\" algorithm"
+msgstr ""
+
+#: diff.c:5553 diff.c:5562 diff.c:5565
+msgid "<mode>"
+msgstr ""
+
+#: diff.c:5554
+msgid "show word diff, using <mode> to delimit changed words"
+msgstr ""
+
+#: diff.c:5557
+msgid "use <regex> to decide what a word is"
+msgstr ""
+
+#: diff.c:5560
+msgid "equivalent to --word-diff=color --word-diff-regex=<regex>"
+msgstr ""
+
+#: diff.c:5563
+msgid "moved lines of code are colored differently"
+msgstr ""
+
+#: diff.c:5566
+msgid "how white spaces are ignored in --color-moved"
+msgstr ""
+
+#: diff.c:5569
+msgid "Other diff options"
+msgstr ""
+
+#: diff.c:5571
+msgid "when run from subdir, exclude changes outside and show relative paths"
+msgstr ""
+
+#: diff.c:5575
+msgid "treat all files as text"
+msgstr ""
+
+#: diff.c:5577
+msgid "swap two inputs, reverse the diff"
+msgstr ""
+
+#: diff.c:5579
+msgid "exit with 1 if there were differences, 0 otherwise"
+msgstr ""
+
+#: diff.c:5581
+msgid "disable all output of the program"
+msgstr ""
+
+#: diff.c:5583
+msgid "allow an external diff helper to be executed"
+msgstr ""
+
+#: diff.c:5585
+msgid "run external text conversion filters when comparing binary files"
+msgstr ""
+
+#: diff.c:5587
+msgid "<when>"
+msgstr ""
+
+#: diff.c:5588
+msgid "ignore changes to submodules in the diff generation"
+msgstr ""
+
+#: diff.c:5591
+msgid "<format>"
+msgstr ""
+
+#: diff.c:5592
+msgid "specify how differences in submodules are shown"
+msgstr ""
+
+#: diff.c:5596
+msgid "hide 'git add -N' entries from the index"
+msgstr ""
+
+#: diff.c:5599
+msgid "treat 'git add -N' entries as real in the index"
+msgstr ""
+
+#: diff.c:5601
+msgid "<string>"
+msgstr ""
+
+#: diff.c:5602
+msgid ""
+"look for differences that change the number of occurrences of the specified "
+"string"
+msgstr ""
+
+#: diff.c:5605
+msgid ""
+"look for differences that change the number of occurrences of the specified "
+"regex"
+msgstr ""
+
+#: diff.c:5608
+msgid "show all changes in the changeset with -S or -G"
+msgstr ""
+
+#: diff.c:5611
+msgid "treat <string> in -S as extended POSIX regular expression"
+msgstr ""
+
+#: diff.c:5614
+msgid "control the order in which files appear in the output"
+msgstr ""
+
+#: diff.c:5615 diff.c:5618
+msgid "<path>"
+msgstr ""
+
+#: diff.c:5616
+msgid "show the change in the specified path first"
+msgstr ""
+
+#: diff.c:5619
+msgid "skip the output to the specified path"
+msgstr ""
+
+#: diff.c:5621
+msgid "<object-id>"
+msgstr ""
+
+#: diff.c:5622
+msgid ""
+"look for differences that change the number of occurrences of the specified "
+"object"
+msgstr ""
+
+#: diff.c:5624
+msgid "[(A|C|D|M|R|T|U|X|B)...[*]]"
+msgstr ""
+
+#: diff.c:5625
+msgid "select files by diff type"
+msgstr ""
+
+#: diff.c:5627
+msgid "<file>"
+msgstr ""
+
+#: diff.c:5628
+msgid "Output to a specific file"
+msgstr ""
+
+#: diff.c:6285
+msgid "inexact rename detection was skipped due to too many files."
+msgstr ""
+
+#: diff.c:6288
+msgid "only found copies from modified paths due to too many files."
+msgstr ""
+
+#: diff.c:6291
+#, c-format
+msgid ""
+"you may want to set your %s variable to at least %d and retry the command."
+msgstr ""
+
+#: diffcore-order.c:24
+#, c-format
+msgid "failed to read orderfile '%s'"
+msgstr ""
+
+#: diffcore-rename.c:786
+msgid "Performing inexact rename detection"
+msgstr ""
+
+#: diffcore-rotate.c:29
+#, c-format
+msgid "No such path '%s' in the diff"
+msgstr ""
+
+#: dir.c:578
+#, c-format
+msgid "pathspec '%s' did not match any file(s) known to git"
+msgstr ""
+
+#: dir.c:718 dir.c:747 dir.c:760
+#, c-format
+msgid "unrecognized pattern: '%s'"
+msgstr ""
+
+#: dir.c:777 dir.c:791
+#, c-format
+msgid "unrecognized negative pattern: '%s'"
+msgstr ""
+
+#: dir.c:809
+#, c-format
+msgid "your sparse-checkout file may have issues: pattern '%s' is repeated"
+msgstr ""
+
+#: dir.c:819
+msgid "disabling cone pattern matching"
+msgstr ""
+
+#: dir.c:1198
+#, c-format
+msgid "cannot use %s as an exclude file"
+msgstr ""
+
+#: dir.c:2305
+#, c-format
+msgid "could not open directory '%s'"
+msgstr ""
+
+#: dir.c:2605
+msgid "failed to get kernel name and information"
+msgstr ""
+
+#: dir.c:2729
+msgid "untracked cache is disabled on this system or location"
+msgstr ""
+
+#: dir.c:3534
+#, c-format
+msgid "index file corrupt in repo %s"
+msgstr ""
+
+#: dir.c:3579 dir.c:3584
+#, c-format
+msgid "could not create directories for %s"
+msgstr ""
+
+#: dir.c:3613
+#, c-format
+msgid "could not migrate git directory from '%s' to '%s'"
+msgstr ""
+
+#: editor.c:74
+#, c-format
+msgid "hint: Waiting for your editor to close the file...%c"
+msgstr ""
+
+#: entry.c:177
+msgid "Filtering content"
+msgstr ""
+
+#: entry.c:478
+#, c-format
+msgid "could not stat file '%s'"
+msgstr ""
+
+#: environment.c:152
+#, c-format
+msgid "bad git namespace path \"%s\""
+msgstr ""
+
+#: environment.c:335
+#, c-format
+msgid "could not set GIT_DIR to '%s'"
+msgstr ""
+
+#: exec-cmd.c:363
+#, c-format
+msgid "too many args to run %s"
+msgstr ""
+
+#: fetch-pack.c:177
+msgid "git fetch-pack: expected shallow list"
+msgstr ""
+
+#: fetch-pack.c:180
+msgid "git fetch-pack: expected a flush packet after shallow list"
+msgstr ""
+
+#: fetch-pack.c:191
+msgid "git fetch-pack: expected ACK/NAK, got a flush packet"
+msgstr ""
+
+#: fetch-pack.c:211
+#, c-format
+msgid "git fetch-pack: expected ACK/NAK, got '%s'"
+msgstr ""
+
+#: fetch-pack.c:222
+msgid "unable to write to remote"
+msgstr ""
+
+#: fetch-pack.c:283
+msgid "--stateless-rpc requires multi_ack_detailed"
+msgstr ""
+
+#: fetch-pack.c:378 fetch-pack.c:1457
+#, c-format
+msgid "invalid shallow line: %s"
+msgstr ""
+
+#: fetch-pack.c:384 fetch-pack.c:1463
+#, c-format
+msgid "invalid unshallow line: %s"
+msgstr ""
+
+#: fetch-pack.c:386 fetch-pack.c:1465
+#, c-format
+msgid "object not found: %s"
+msgstr ""
+
+#: fetch-pack.c:389 fetch-pack.c:1468
+#, c-format
+msgid "error in object: %s"
+msgstr ""
+
+#: fetch-pack.c:391 fetch-pack.c:1470
+#, c-format
+msgid "no shallow found: %s"
+msgstr ""
+
+#: fetch-pack.c:394 fetch-pack.c:1474
+#, c-format
+msgid "expected shallow/unshallow, got %s"
+msgstr ""
+
+#: fetch-pack.c:434
+#, c-format
+msgid "got %s %d %s"
+msgstr ""
+
+#: fetch-pack.c:451
+#, c-format
+msgid "invalid commit %s"
+msgstr ""
+
+#: fetch-pack.c:482
+msgid "giving up"
+msgstr ""
+
+#: fetch-pack.c:495 progress.c:339
+msgid "done"
+msgstr ""
+
+#: fetch-pack.c:507
+#, c-format
+msgid "got %s (%d) %s"
+msgstr ""
+
+#: fetch-pack.c:543
+#, c-format
+msgid "Marking %s as complete"
+msgstr ""
+
+#: fetch-pack.c:758
+#, c-format
+msgid "already have %s (%s)"
+msgstr ""
+
+#: fetch-pack.c:844
+msgid "fetch-pack: unable to fork off sideband demultiplexer"
+msgstr ""
+
+#: fetch-pack.c:852
+msgid "protocol error: bad pack header"
+msgstr ""
+
+#: fetch-pack.c:946
+#, c-format
+msgid "fetch-pack: unable to fork off %s"
+msgstr ""
+
+#: fetch-pack.c:952
+msgid "fetch-pack: invalid index-pack output"
+msgstr ""
+
+#: fetch-pack.c:969
+#, c-format
+msgid "%s failed"
+msgstr ""
+
+#: fetch-pack.c:971
+msgid "error in sideband demultiplexer"
+msgstr ""
+
+#: fetch-pack.c:1031
+#, c-format
+msgid "Server version is %.*s"
+msgstr ""
+
+#: fetch-pack.c:1039 fetch-pack.c:1045 fetch-pack.c:1048 fetch-pack.c:1054
+#: fetch-pack.c:1058 fetch-pack.c:1062 fetch-pack.c:1066 fetch-pack.c:1070
+#: fetch-pack.c:1074 fetch-pack.c:1078 fetch-pack.c:1082 fetch-pack.c:1086
+#: fetch-pack.c:1092 fetch-pack.c:1098 fetch-pack.c:1103 fetch-pack.c:1108
+#, c-format
+msgid "Server supports %s"
+msgstr ""
+
+#: fetch-pack.c:1041
+msgid "Server does not support shallow clients"
+msgstr ""
+
+#: fetch-pack.c:1101
+msgid "Server does not support --shallow-since"
+msgstr ""
+
+#: fetch-pack.c:1106
+msgid "Server does not support --shallow-exclude"
+msgstr ""
+
+#: fetch-pack.c:1110
+msgid "Server does not support --deepen"
+msgstr ""
+
+#: fetch-pack.c:1112
+msgid "Server does not support this repository's object format"
+msgstr ""
+
+#: fetch-pack.c:1125
+msgid "no common commits"
+msgstr ""
+
+#: fetch-pack.c:1138 fetch-pack.c:1682
+msgid "git fetch-pack: fetch failed."
+msgstr ""
+
+#: fetch-pack.c:1265
+#, c-format
+msgid "mismatched algorithms: client %s; server %s"
+msgstr ""
+
+#: fetch-pack.c:1269
+#, c-format
+msgid "the server does not support algorithm '%s'"
+msgstr ""
+
+#: fetch-pack.c:1289
+msgid "Server does not support shallow requests"
+msgstr ""
+
+#: fetch-pack.c:1296
+msgid "Server supports filter"
+msgstr ""
+
+#: fetch-pack.c:1335
+msgid "unable to write request to remote"
+msgstr ""
+
+#: fetch-pack.c:1353
+#, c-format
+msgid "error reading section header '%s'"
+msgstr ""
+
+#: fetch-pack.c:1359
+#, c-format
+msgid "expected '%s', received '%s'"
+msgstr ""
+
+#: fetch-pack.c:1420
+#, c-format
+msgid "unexpected acknowledgment line: '%s'"
+msgstr ""
+
+#: fetch-pack.c:1425
+#, c-format
+msgid "error processing acks: %d"
+msgstr ""
+
+#: fetch-pack.c:1435
+msgid "expected packfile to be sent after 'ready'"
+msgstr ""
+
+#: fetch-pack.c:1437
+msgid "expected no other sections to be sent after no 'ready'"
+msgstr ""
+
+#: fetch-pack.c:1479
+#, c-format
+msgid "error processing shallow info: %d"
+msgstr ""
+
+#: fetch-pack.c:1526
+#, c-format
+msgid "expected wanted-ref, got '%s'"
+msgstr ""
+
+#: fetch-pack.c:1531
+#, c-format
+msgid "unexpected wanted-ref: '%s'"
+msgstr ""
+
+#: fetch-pack.c:1536
+#, c-format
+msgid "error processing wanted refs: %d"
+msgstr ""
+
+#: fetch-pack.c:1566
+msgid "git fetch-pack: expected response end packet"
+msgstr ""
+
+#: fetch-pack.c:1960
+msgid "no matching remote head"
+msgstr ""
+
+#: fetch-pack.c:1983 builtin/clone.c:693
+msgid "remote did not send all necessary objects"
+msgstr ""
+
+#: fetch-pack.c:2010
+#, c-format
+msgid "no such remote ref %s"
+msgstr ""
+
+#: fetch-pack.c:2013
+#, c-format
+msgid "Server does not allow request for unadvertised object %s"
+msgstr ""
+
+#: gpg-interface.c:273
+msgid "could not create temporary file"
+msgstr ""
+
+#: gpg-interface.c:276
+#, c-format
+msgid "failed writing detached signature to '%s'"
+msgstr ""
+
+#: gpg-interface.c:470
+msgid "gpg failed to sign the data"
+msgstr ""
+
+#: graph.c:98
+#, c-format
+msgid "ignore invalid color '%.*s' in log.graphColors"
+msgstr ""
+
+#: grep.c:543
+msgid ""
+"given pattern contains NULL byte (via -f <file>). This is only supported "
+"with -P under PCRE v2"
+msgstr ""
+
+#: grep.c:1906
+#, c-format
+msgid "'%s': unable to read %s"
+msgstr ""
+
+#: grep.c:1923 setup.c:176 builtin/clone.c:412 builtin/diff.c:90
+#: builtin/rm.c:135
+#, c-format
+msgid "failed to stat '%s'"
+msgstr ""
+
+#: grep.c:1934
+#, c-format
+msgid "'%s': short read"
+msgstr ""
+
+#: 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 / Syncing Repositories"
+msgstr ""
+
+#: help.c:38
+msgid "Low-level Commands / Internal Helpers"
+msgstr ""
+
+#: help.c:300
+#, c-format
+msgid "available git commands in '%s'"
+msgstr ""
+
+#: help.c:307
+msgid "git commands available from elsewhere on your $PATH"
+msgstr ""
+
+#: help.c:316
+msgid "These are common Git commands used in various situations:"
+msgstr ""
+
+#: help.c:365 git.c:100
+#, c-format
+msgid "unsupported command listing type '%s'"
+msgstr ""
+
+#: help.c:405
+msgid "The Git concept guides are:"
+msgstr ""
+
+#: help.c:429
+msgid "See 'git help <command>' to read about a specific subcommand"
+msgstr ""
+
+#: help.c:434
+msgid "External commands"
+msgstr ""
+
+#: help.c:449
+msgid "Command aliases"
+msgstr ""
+
+#: help.c:527
+#, 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:543 help.c:631
+#, c-format
+msgid "git: '%s' is not a git command. See 'git --help'."
+msgstr ""
+
+#: help.c:591
+msgid "Uh oh. Your system reports no Git commands at all."
+msgstr ""
+
+#: help.c:613
+#, c-format
+msgid "WARNING: You called a Git command named '%s', which does not exist."
+msgstr ""
+
+#: help.c:618
+#, c-format
+msgid "Continuing under the assumption that you meant '%s'."
+msgstr ""
+
+#: help.c:623
+#, c-format
+msgid "Continuing in %0.1f seconds, assuming that you meant '%s'."
+msgstr ""
+
+#: help.c:635
+msgid ""
+"\n"
+"The most similar command is"
+msgid_plural ""
+"\n"
+"The most similar commands are"
+msgstr[0] ""
+msgstr[1] ""
+
+#: help.c:675
+msgid "git version [<options>]"
+msgstr ""
+
+#: help.c:730
+#, c-format
+msgid "%s: %s - %s"
+msgstr ""
+
+#: help.c:734
+msgid ""
+"\n"
+"Did you mean this?"
+msgid_plural ""
+"\n"
+"Did you mean one of these?"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ident.c:353
+msgid "Author identity unknown\n"
+msgstr ""
+
+#: ident.c:356
+msgid "Committer identity unknown\n"
+msgstr ""
+
+#: ident.c:362
+msgid ""
+"\n"
+"*** Please tell me who you are.\n"
+"\n"
+"Run\n"
+"\n"
+"  git config --global user.email \"you@example.com\"\n"
+"  git config --global user.name \"Your Name\"\n"
+"\n"
+"to set your account's default identity.\n"
+"Omit --global to set the identity only in this repository.\n"
+"\n"
+msgstr ""
+
+#: ident.c:397
+msgid "no email was given and auto-detection is disabled"
+msgstr ""
+
+#: ident.c:402
+#, c-format
+msgid "unable to auto-detect email address (got '%s')"
+msgstr ""
+
+#: ident.c:419
+msgid "no name was given and auto-detection is disabled"
+msgstr ""
+
+#: ident.c:425
+#, c-format
+msgid "unable to auto-detect name (got '%s')"
+msgstr ""
+
+#: ident.c:433
+#, c-format
+msgid "empty ident name (for <%s>) not allowed"
+msgstr ""
+
+#: ident.c:439
+#, c-format
+msgid "name consists only of disallowed characters: %s"
+msgstr ""
+
+#: ident.c:454 builtin/commit.c:634
+#, c-format
+msgid "invalid date format: %s"
+msgstr ""
+
+#: list-objects-filter-options.c:81
+msgid "expected 'tree:<depth>'"
+msgstr ""
+
+#: list-objects-filter-options.c:96
+msgid "sparse:path filters support has been dropped"
+msgstr ""
+
+#: list-objects-filter-options.c:109
+#, c-format
+msgid "invalid filter-spec '%s'"
+msgstr ""
+
+#: list-objects-filter-options.c:125
+#, c-format
+msgid "must escape char in sub-filter-spec: '%c'"
+msgstr ""
+
+#: list-objects-filter-options.c:167
+msgid "expected something after combine:"
+msgstr ""
+
+#: list-objects-filter-options.c:249
+msgid "multiple filter-specs cannot be combined"
+msgstr ""
+
+#: list-objects-filter-options.c:361
+msgid "unable to upgrade repository format to support partial clone"
+msgstr ""
+
+#: list-objects-filter.c:492
+#, c-format
+msgid "unable to access sparse blob in '%s'"
+msgstr ""
+
+#: list-objects-filter.c:495
+#, c-format
+msgid "unable to parse sparse filter data in %s"
+msgstr ""
+
+#: list-objects.c:127
+#, c-format
+msgid "entry '%s' in tree %s has tree mode, but is not a tree"
+msgstr ""
+
+#: list-objects.c:140
+#, c-format
+msgid "entry '%s' in tree %s has blob mode, but is not a blob"
+msgstr ""
+
+#: list-objects.c:375
+#, c-format
+msgid "unable to load root tree for commit %s"
+msgstr ""
+
+#: lockfile.c:152
+#, c-format
+msgid ""
+"Unable to create '%s.lock': %s.\n"
+"\n"
+"Another git process seems to be running in this repository, e.g.\n"
+"an editor opened by 'git commit'. Please make sure all processes\n"
+"are terminated then try again. If it still fails, a git process\n"
+"may have crashed in this repository earlier:\n"
+"remove the file manually to continue."
+msgstr ""
+
+#: lockfile.c:160
+#, c-format
+msgid "Unable to create '%s.lock': %s"
+msgstr ""
+
+#: ls-refs.c:37
+#, c-format
+msgid "invalid value '%s' for lsrefs.unborn"
+msgstr ""
+
+#: ls-refs.c:167
+msgid "expected flush after ls-refs arguments"
+msgstr ""
+
+#: merge-ort.c:888 merge-recursive.c:1191
+#, c-format
+msgid "Failed to merge submodule %s (not checked out)"
+msgstr ""
+
+#: merge-ort.c:897 merge-recursive.c:1198
+#, c-format
+msgid "Failed to merge submodule %s (commits not present)"
+msgstr ""
+
+#: merge-ort.c:906 merge-recursive.c:1205
+#, c-format
+msgid "Failed to merge submodule %s (commits don't follow merge-base)"
+msgstr ""
+
+#: merge-ort.c:916 merge-ort.c:923
+#, c-format
+msgid "Note: Fast-forwarding submodule %s to %s"
+msgstr ""
+
+#: merge-ort.c:944
+msgid "Failed to merge submodule %s"
+msgstr ""
+
+#: merge-ort.c:951
+#, c-format
+msgid ""
+"Failed to merge submodule %s, but a possible merge resolution exists:\n"
+"%s\n"
+msgstr ""
+
+#: merge-ort.c:955 merge-recursive.c:1259
+#, 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-ort.c:968
+#, c-format
+msgid ""
+"Failed to merge submodule %s, but multiple possible merges exist:\n"
+"%s"
+msgstr ""
+
+#: merge-ort.c:1127 merge-recursive.c:1341
+msgid "Failed to execute internal merge"
+msgstr ""
+
+#: merge-ort.c:1132 merge-recursive.c:1346
+#, c-format
+msgid "Unable to add %s to database"
+msgstr ""
+
+#: merge-ort.c:1139 merge-recursive.c:1378
+#, c-format
+msgid "Auto-merging %s"
+msgstr ""
+
+#: merge-ort.c:1278 merge-recursive.c:2100
+#, c-format
+msgid ""
+"CONFLICT (implicit dir rename): Existing file/dir at %s in the way of "
+"implicit directory rename(s) putting the following path(s) there: %s."
+msgstr ""
+
+#: merge-ort.c:1288 merge-recursive.c:2110
+#, c-format
+msgid ""
+"CONFLICT (implicit dir rename): Cannot map more than one path to %s; "
+"implicit directory renames tried to put these paths there: %s"
+msgstr ""
+
+#: merge-ort.c:1471
+#, c-format
+msgid ""
+"CONFLICT (directory rename split): Unclear where to rename %s to; it was "
+"renamed to multiple other directories, with no destination getting a "
+"majority of the files."
+msgstr ""
+
+#: merge-ort.c:1637 merge-recursive.c:2447
+#, c-format
+msgid ""
+"WARNING: Avoiding applying %s -> %s rename to %s, because %s itself was "
+"renamed."
+msgstr ""
+
+#: merge-ort.c:1781 merge-recursive.c:3215
+#, c-format
+msgid ""
+"Path updated: %s added in %s inside a directory that was renamed in %s; "
+"moving it to %s."
+msgstr ""
+
+#: merge-ort.c:1788 merge-recursive.c:3222
+#, c-format
+msgid ""
+"Path updated: %s renamed to %s in %s, inside a directory that was renamed in "
+"%s; moving it to %s."
+msgstr ""
+
+#: merge-ort.c:1801 merge-recursive.c:3218
+#, c-format
+msgid ""
+"CONFLICT (file location): %s added in %s inside a directory that was renamed "
+"in %s, suggesting it should perhaps be moved to %s."
+msgstr ""
+
+#: merge-ort.c:1809 merge-recursive.c:3225
+#, c-format
+msgid ""
+"CONFLICT (file location): %s renamed to %s in %s, inside a directory that "
+"was renamed in %s, suggesting it should perhaps be moved to %s."
+msgstr ""
+
+#: merge-ort.c:1952
+#, c-format
+msgid "CONFLICT (rename/rename): %s renamed to %s in %s and to %s in %s."
+msgstr ""
+
+#: merge-ort.c:2047
+#, c-format
+msgid ""
+"CONFLICT (rename involved in collision): rename of %s -> %s has content "
+"conflicts AND collides with another path; this may result in nested conflict "
+"markers."
+msgstr ""
+
+#: merge-ort.c:2066 merge-ort.c:2090
+#, c-format
+msgid "CONFLICT (rename/delete): %s renamed to %s in %s, but deleted in %s."
+msgstr ""
+
+#: merge-ort.c:2735
+#, c-format
+msgid ""
+"CONFLICT (file/directory): directory in the way of %s from %s; moving it to "
+"%s instead."
+msgstr ""
+
+#: merge-ort.c:2808
+#, c-format
+msgid ""
+"CONFLICT (distinct types): %s had different types on each side; renamed %s "
+"of them so each can be recorded somewhere."
+msgstr ""
+
+#: merge-ort.c:2812
+msgid "both"
+msgstr ""
+
+#: merge-ort.c:2812
+msgid "one"
+msgstr ""
+
+#: merge-ort.c:2907 merge-recursive.c:3052
+msgid "content"
+msgstr ""
+
+#: merge-ort.c:2909 merge-recursive.c:3056
+msgid "add/add"
+msgstr ""
+
+#: merge-ort.c:2911 merge-recursive.c:3101
+msgid "submodule"
+msgstr ""
+
+#: merge-ort.c:2913 merge-recursive.c:3102
+#, c-format
+msgid "CONFLICT (%s): Merge conflict in %s"
+msgstr ""
+
+#: merge-ort.c:2938
+#, c-format
+msgid ""
+"CONFLICT (modify/delete): %s deleted in %s and modified in %s.  Version %s "
+"of %s left in tree."
+msgstr ""
+
+#. TRANSLATORS: The %s arguments are: 1) tree hash of a merge
+#. base, and 2-3) the trees for the two trees we're merging.
+#.
+#: merge-ort.c:3406
+#, c-format
+msgid "collecting merge info failed for trees %s, %s, %s"
+msgstr ""
+
+#: merge-ort-wrappers.c:13 merge-recursive.c:3661
+#, c-format
+msgid ""
+"Your local changes to the following files would be overwritten by merge:\n"
+"  %s"
+msgstr ""
+
+#: merge-ort-wrappers.c:33 merge-recursive.c:3436
+#, c-format
+msgid "Already up to date!"
+msgstr ""
+
+#: merge-recursive.c:356
+msgid "(bad commit)\n"
+msgstr ""
+
+#: merge-recursive.c:379
+#, c-format
+msgid "add_cacheinfo failed for path '%s'; merge aborting."
+msgstr ""
+
+#: merge-recursive.c:388
+#, c-format
+msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
+msgstr ""
+
+#: merge-recursive.c:874
+#, c-format
+msgid "failed to create path '%s'%s"
+msgstr ""
+
+#: merge-recursive.c:885
+#, c-format
+msgid "Removing %s to make room for subdirectory\n"
+msgstr ""
+
+#: merge-recursive.c:899 merge-recursive.c:918
+msgid ": perhaps a D/F conflict?"
+msgstr ""
+
+#: merge-recursive.c:908
+#, c-format
+msgid "refusing to lose untracked file at '%s'"
+msgstr ""
+
+#: merge-recursive.c:949 builtin/cat-file.c:41
+#, c-format
+msgid "cannot read object %s '%s'"
+msgstr ""
+
+#: merge-recursive.c:954
+#, c-format
+msgid "blob expected for %s '%s'"
+msgstr ""
+
+#: merge-recursive.c:979
+#, c-format
+msgid "failed to open '%s': %s"
+msgstr ""
+
+#: merge-recursive.c:990
+#, c-format
+msgid "failed to symlink '%s': %s"
+msgstr ""
+
+#: merge-recursive.c:995
+#, c-format
+msgid "do not know what to do with %06o %s '%s'"
+msgstr ""
+
+#: merge-recursive.c:1213 merge-recursive.c:1225
+#, c-format
+msgid "Fast-forwarding submodule %s to the following commit:"
+msgstr ""
+
+#: merge-recursive.c:1216 merge-recursive.c:1228
+#, c-format
+msgid "Fast-forwarding submodule %s"
+msgstr ""
+
+#: merge-recursive.c:1251
+#, c-format
+msgid "Failed to merge submodule %s (merge following commits not found)"
+msgstr ""
+
+#: merge-recursive.c:1255
+#, c-format
+msgid "Failed to merge submodule %s (not fast-forward)"
+msgstr ""
+
+#: merge-recursive.c:1256
+msgid "Found a possible merge resolution for the submodule:\n"
+msgstr ""
+
+#: merge-recursive.c:1268
+#, c-format
+msgid "Failed to merge submodule %s (multiple merges found)"
+msgstr ""
+
+#: merge-recursive.c:1402
+#, c-format
+msgid "Error: Refusing to lose untracked file at %s; writing to %s instead."
+msgstr ""
+
+#: merge-recursive.c:1474
+#, 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:1479
+#, 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:1486
+#, 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:1491
+#, 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:1526
+msgid "rename"
+msgstr ""
+
+#: merge-recursive.c:1526
+msgid "renamed"
+msgstr ""
+
+#: merge-recursive.c:1577 merge-recursive.c:2484 merge-recursive.c:3129
+#, c-format
+msgid "Refusing to lose dirty file at %s"
+msgstr ""
+
+#: merge-recursive.c:1587
+#, c-format
+msgid "Refusing to lose untracked file at %s, even though it's in the way."
+msgstr ""
+
+#: merge-recursive.c:1645
+#, c-format
+msgid "CONFLICT (rename/add): Rename %s->%s in %s.  Added %s in %s"
+msgstr ""
+
+#: merge-recursive.c:1676
+#, c-format
+msgid "%s is a directory in %s adding as %s instead"
+msgstr ""
+
+#: merge-recursive.c:1681
+#, c-format
+msgid "Refusing to lose untracked file at %s; adding as %s instead"
+msgstr ""
+
+#: merge-recursive.c:1708
+#, c-format
+msgid ""
+"CONFLICT (rename/rename): Rename \"%s\"->\"%s\" in branch \"%s\" rename \"%s"
+"\"->\"%s\" in \"%s\"%s"
+msgstr ""
+
+#: merge-recursive.c:1713
+msgid " (left unresolved)"
+msgstr ""
+
+#: merge-recursive.c:1805
+#, c-format
+msgid "CONFLICT (rename/rename): Rename %s->%s in %s. Rename %s->%s in %s"
+msgstr ""
+
+#: merge-recursive.c:2068
+#, 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:2202
+#, c-format
+msgid ""
+"CONFLICT (rename/rename): Rename directory %s->%s in %s. Rename directory %s-"
+">%s in %s"
+msgstr ""
+
+#: merge-recursive.c:2973
+#, c-format
+msgid "cannot read object %s"
+msgstr ""
+
+#: merge-recursive.c:2976
+#, c-format
+msgid "object %s is not a blob"
+msgstr ""
+
+#: merge-recursive.c:3040
+msgid "modify"
+msgstr ""
+
+#: merge-recursive.c:3040
+msgid "modified"
+msgstr ""
+
+#: merge-recursive.c:3079
+#, c-format
+msgid "Skipped %s (merged same as existing)"
+msgstr ""
+
+#: merge-recursive.c:3132
+#, c-format
+msgid "Adding as %s instead"
+msgstr ""
+
+#: merge-recursive.c:3339
+#, c-format
+msgid "Removing %s"
+msgstr ""
+
+#: merge-recursive.c:3362
+msgid "file/directory"
+msgstr ""
+
+#: merge-recursive.c:3367
+msgid "directory/file"
+msgstr ""
+
+#: merge-recursive.c:3374
+#, c-format
+msgid "CONFLICT (%s): There is a directory with name %s in %s. Adding %s as %s"
+msgstr ""
+
+#: merge-recursive.c:3383
+#, c-format
+msgid "Adding %s"
+msgstr ""
+
+#: merge-recursive.c:3392
+#, c-format
+msgid "CONFLICT (add/add): Merge conflict in %s"
+msgstr ""
+
+#: merge-recursive.c:3445
+#, c-format
+msgid "merging of trees %s and %s failed"
+msgstr ""
+
+#: merge-recursive.c:3539
+msgid "Merging:"
+msgstr ""
+
+#: merge-recursive.c:3552
+#, c-format
+msgid "found %u common ancestor:"
+msgid_plural "found %u common ancestors:"
+msgstr[0] ""
+msgstr[1] ""
+
+#: merge-recursive.c:3602
+msgid "merge returned no commit"
+msgstr ""
+
+#: merge-recursive.c:3758
+#, c-format
+msgid "Could not parse object '%s'"
+msgstr ""
+
+#: merge-recursive.c:3776 builtin/merge.c:712 builtin/merge.c:896
+#: builtin/stash.c:471
+msgid "Unable to write index."
+msgstr ""
+
+#: merge.c:41
+msgid "failed to read the cache"
+msgstr ""
+
+#: merge.c:109 rerere.c:704 builtin/am.c:1883 builtin/am.c:1917
+#: builtin/checkout.c:575 builtin/checkout.c:828 builtin/clone.c:817
+#: builtin/stash.c:265
+msgid "unable to write new index file"
+msgstr ""
+
+#: midx.c:62
+msgid "multi-pack-index OID fanout is of the wrong size"
+msgstr ""
+
+#: midx.c:93
+#, c-format
+msgid "multi-pack-index file %s is too small"
+msgstr ""
+
+#: midx.c:109
+#, c-format
+msgid "multi-pack-index signature 0x%08x does not match signature 0x%08x"
+msgstr ""
+
+#: midx.c:114
+#, c-format
+msgid "multi-pack-index version %d not recognized"
+msgstr ""
+
+#: midx.c:119
+#, c-format
+msgid "multi-pack-index hash version %u does not match version %u"
+msgstr ""
+
+#: midx.c:136
+msgid "multi-pack-index missing required pack-name chunk"
+msgstr ""
+
+#: midx.c:138
+msgid "multi-pack-index missing required OID fanout chunk"
+msgstr ""
+
+#: midx.c:140
+msgid "multi-pack-index missing required OID lookup chunk"
+msgstr ""
+
+#: midx.c:142
+msgid "multi-pack-index missing required object offsets chunk"
+msgstr ""
+
+#: midx.c:158
+#, c-format
+msgid "multi-pack-index pack names out of order: '%s' before '%s'"
+msgstr ""
+
+#: midx.c:202
+#, c-format
+msgid "bad pack-int-id: %u (%u total packs)"
+msgstr ""
+
+#: midx.c:252
+msgid "multi-pack-index stores a 64-bit offset, but off_t is too small"
+msgstr ""
+
+#: midx.c:467
+#, c-format
+msgid "failed to add packfile '%s'"
+msgstr ""
+
+#: midx.c:473
+#, c-format
+msgid "failed to open pack-index '%s'"
+msgstr ""
+
+#: midx.c:533
+#, c-format
+msgid "failed to locate object %d in packfile"
+msgstr ""
+
+#: midx.c:821
+msgid "Adding packfiles to multi-pack-index"
+msgstr ""
+
+#: midx.c:855
+#, c-format
+msgid "did not see pack-file %s to drop"
+msgstr ""
+
+#: midx.c:904
+msgid "no pack files to index."
+msgstr ""
+
+#: midx.c:965
+#, c-format
+msgid "failed to clear multi-pack-index at %s"
+msgstr ""
+
+#: midx.c:1021
+msgid "multi-pack-index file exists, but failed to parse"
+msgstr ""
+
+#: midx.c:1029
+msgid "Looking for referenced packfiles"
+msgstr ""
+
+#: midx.c:1044
+#, c-format
+msgid ""
+"oid fanout out of order: fanout[%d] = %<PRIx32> > %<PRIx32> = fanout[%d]"
+msgstr ""
+
+#: midx.c:1049
+msgid "the midx contains no oid"
+msgstr ""
+
+#: midx.c:1058
+msgid "Verifying OID order in multi-pack-index"
+msgstr ""
+
+#: midx.c:1067
+#, c-format
+msgid "oid lookup out of order: oid[%d] = %s >= %s = oid[%d]"
+msgstr ""
+
+#: midx.c:1087
+msgid "Sorting objects by packfile"
+msgstr ""
+
+#: midx.c:1094
+msgid "Verifying object offsets"
+msgstr ""
+
+#: midx.c:1110
+#, c-format
+msgid "failed to load pack entry for oid[%d] = %s"
+msgstr ""
+
+#: midx.c:1116
+#, c-format
+msgid "failed to load pack-index for packfile %s"
+msgstr ""
+
+#: midx.c:1125
+#, c-format
+msgid "incorrect object offset for oid[%d] = %s: %<PRIx64> != %<PRIx64>"
+msgstr ""
+
+#: midx.c:1150
+msgid "Counting referenced objects"
+msgstr ""
+
+#: midx.c:1160
+msgid "Finding and deleting unreferenced packfiles"
+msgstr ""
+
+#: midx.c:1351
+msgid "could not start pack-objects"
+msgstr ""
+
+#: midx.c:1371
+msgid "could not finish pack-objects"
+msgstr ""
+
+#: name-hash.c:538
+#, c-format
+msgid "unable to create lazy_dir thread: %s"
+msgstr ""
+
+#: name-hash.c:560
+#, c-format
+msgid "unable to create lazy_name thread: %s"
+msgstr ""
+
+#: name-hash.c:566
+#, c-format
+msgid "unable to join lazy_name thread: %s"
+msgstr ""
+
+#: notes-merge.c:277
+#, 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."
+msgstr ""
+
+#: notes-merge.c:284
+#, c-format
+msgid "You have not concluded your notes merge (%s exists)."
+msgstr ""
+
+#: notes-utils.c:46
+msgid "Cannot commit uninitialized/unreferenced notes tree"
+msgstr ""
+
+#: notes-utils.c:105
+#, c-format
+msgid "Bad notes.rewriteMode value: '%s'"
+msgstr ""
+
+#: notes-utils.c:115
+#, c-format
+msgid "Refusing to rewrite notes in %s (outside of refs/notes/)"
+msgstr ""
+
+#. TRANSLATORS: The first %s is the name of
+#. the environment variable, the second %s is
+#. its value.
+#.
+#: notes-utils.c:145
+#, c-format
+msgid "Bad %s value: '%s'"
+msgstr ""
+
+#: object-file.c:480
+#, c-format
+msgid "object directory %s does not exist; check .git/objects/info/alternates"
+msgstr ""
+
+#: object-file.c:531
+#, c-format
+msgid "unable to normalize alternate object path: %s"
+msgstr ""
+
+#: object-file.c:603
+#, c-format
+msgid "%s: ignoring alternate object stores, nesting too deep"
+msgstr ""
+
+#: object-file.c:610
+#, c-format
+msgid "unable to normalize object directory: %s"
+msgstr ""
+
+#: object-file.c:653
+msgid "unable to fdopen alternates lockfile"
+msgstr ""
+
+#: object-file.c:671
+msgid "unable to read alternates file"
+msgstr ""
+
+#: object-file.c:678
+msgid "unable to move new alternates file into place"
+msgstr ""
+
+#: object-file.c:713
+#, c-format
+msgid "path '%s' does not exist"
+msgstr ""
+
+#: object-file.c:734
+#, c-format
+msgid "reference repository '%s' as a linked checkout is not supported yet."
+msgstr ""
+
+#: object-file.c:740
+#, c-format
+msgid "reference repository '%s' is not a local repository."
+msgstr ""
+
+#: object-file.c:746
+#, c-format
+msgid "reference repository '%s' is shallow"
+msgstr ""
+
+#: object-file.c:754
+#, c-format
+msgid "reference repository '%s' is grafted"
+msgstr ""
+
+#: object-file.c:814
+#, c-format
+msgid "invalid line while parsing alternate refs: %s"
+msgstr ""
+
+#: object-file.c:964
+#, c-format
+msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
+msgstr ""
+
+#: object-file.c:985
+msgid "mmap failed"
+msgstr ""
+
+#: object-file.c:1149
+#, c-format
+msgid "object file %s is empty"
+msgstr ""
+
+#: object-file.c:1284 object-file.c:2477
+#, c-format
+msgid "corrupt loose object '%s'"
+msgstr ""
+
+#: object-file.c:1286 object-file.c:2481
+#, c-format
+msgid "garbage at end of loose object '%s'"
+msgstr ""
+
+#: object-file.c:1328
+msgid "invalid object type"
+msgstr ""
+
+#: object-file.c:1412
+#, c-format
+msgid "unable to unpack %s header with --allow-unknown-type"
+msgstr ""
+
+#: object-file.c:1415
+#, c-format
+msgid "unable to unpack %s header"
+msgstr ""
+
+#: object-file.c:1421
+#, c-format
+msgid "unable to parse %s header with --allow-unknown-type"
+msgstr ""
+
+#: object-file.c:1424
+#, c-format
+msgid "unable to parse %s header"
+msgstr ""
+
+#: object-file.c:1651
+#, c-format
+msgid "failed to read object %s"
+msgstr ""
+
+#: object-file.c:1655
+#, c-format
+msgid "replacement %s not found for %s"
+msgstr ""
+
+#: object-file.c:1659
+#, c-format
+msgid "loose object %s (stored in %s) is corrupt"
+msgstr ""
+
+#: object-file.c:1663
+#, c-format
+msgid "packed object %s (stored in %s) is corrupt"
+msgstr ""
+
+#: object-file.c:1768
+#, c-format
+msgid "unable to write file %s"
+msgstr ""
+
+#: object-file.c:1775
+#, c-format
+msgid "unable to set permission to '%s'"
+msgstr ""
+
+#: object-file.c:1782
+msgid "file write error"
+msgstr ""
+
+#: object-file.c:1802
+msgid "error when closing loose object file"
+msgstr ""
+
+#: object-file.c:1867
+#, c-format
+msgid "insufficient permission for adding an object to repository database %s"
+msgstr ""
+
+#: object-file.c:1869
+msgid "unable to create temporary file"
+msgstr ""
+
+#: object-file.c:1893
+msgid "unable to write loose object file"
+msgstr ""
+
+#: object-file.c:1899
+#, c-format
+msgid "unable to deflate new object %s (%d)"
+msgstr ""
+
+#: object-file.c:1903
+#, c-format
+msgid "deflateEnd on object %s failed (%d)"
+msgstr ""
+
+#: object-file.c:1907
+#, c-format
+msgid "confused by unstable object source data for %s"
+msgstr ""
+
+#: object-file.c:1917 builtin/pack-objects.c:1097
+#, c-format
+msgid "failed utime() on %s"
+msgstr ""
+
+#: object-file.c:1994
+#, c-format
+msgid "cannot read object for %s"
+msgstr ""
+
+#: object-file.c:2045
+msgid "corrupt commit"
+msgstr ""
+
+#: object-file.c:2053
+msgid "corrupt tag"
+msgstr ""
+
+#: object-file.c:2153
+#, c-format
+msgid "read error while indexing %s"
+msgstr ""
+
+#: object-file.c:2156
+#, c-format
+msgid "short read while indexing %s"
+msgstr ""
+
+#: object-file.c:2229 object-file.c:2239
+#, c-format
+msgid "%s: failed to insert into database"
+msgstr ""
+
+#: object-file.c:2245
+#, c-format
+msgid "%s: unsupported file type"
+msgstr ""
+
+#: object-file.c:2269
+#, c-format
+msgid "%s is not a valid object"
+msgstr ""
+
+#: object-file.c:2271
+#, c-format
+msgid "%s is not a valid '%s' object"
+msgstr ""
+
+#: object-file.c:2298 builtin/index-pack.c:192
+#, c-format
+msgid "unable to open %s"
+msgstr "tidak dapat membuka %s"
+
+#: object-file.c:2488 object-file.c:2541
+#, c-format
+msgid "hash mismatch for %s (expected %s)"
+msgstr ""
+
+#: object-file.c:2512
+#, c-format
+msgid "unable to mmap %s"
+msgstr ""
+
+#: object-file.c:2517
+#, c-format
+msgid "unable to unpack header of %s"
+msgstr ""
+
+#: object-file.c:2523
+#, c-format
+msgid "unable to parse header of %s"
+msgstr ""
+
+#: object-file.c:2534
+#, c-format
+msgid "unable to unpack contents of %s"
+msgstr ""
+
+#: object-name.c:486
+#, c-format
+msgid "short object ID %s is ambiguous"
+msgstr ""
+
+#: object-name.c:497
+msgid "The candidates are:"
+msgstr ""
+
+#: object-name.c:796
+msgid ""
+"Git normally never creates a ref that ends with 40 hex characters\n"
+"because it will be ignored when you just specify 40-hex. These refs\n"
+"may be created by mistake. For example,\n"
+"\n"
+"  git switch -c $br $(git rev-parse ...)\n"
+"\n"
+"where \"$br\" is somehow empty and a 40-hex ref is created. Please\n"
+"examine these refs and maybe delete them. Turn this message off by\n"
+"running \"git config advice.objectNameWarning false\""
+msgstr ""
+
+#: object-name.c:916
+#, c-format
+msgid "log for '%.*s' only goes back to %s"
+msgstr ""
+
+#: object-name.c:924
+#, c-format
+msgid "log for '%.*s' only has %d entries"
+msgstr ""
+
+#: object-name.c:1702
+#, c-format
+msgid "path '%s' exists on disk, but not in '%.*s'"
+msgstr ""
+
+#: object-name.c:1708
+#, c-format
+msgid ""
+"path '%s' exists, but not '%s'\n"
+"hint: Did you mean '%.*s:%s' aka '%.*s:./%s'?"
+msgstr ""
+
+#: object-name.c:1717
+#, c-format
+msgid "path '%s' does not exist in '%.*s'"
+msgstr ""
+
+#: object-name.c:1745
+#, c-format
+msgid ""
+"path '%s' is in the index, but not at stage %d\n"
+"hint: Did you mean ':%d:%s'?"
+msgstr ""
+
+#: object-name.c:1761
+#, c-format
+msgid ""
+"path '%s' is in the index, but not '%s'\n"
+"hint: Did you mean ':%d:%s' aka ':%d:./%s'?"
+msgstr ""
+
+#: object-name.c:1769
+#, c-format
+msgid "path '%s' exists on disk, but not in the index"
+msgstr ""
+
+#: object-name.c:1771
+#, c-format
+msgid "path '%s' does not exist (neither on disk nor in the index)"
+msgstr ""
+
+#: object-name.c:1784
+msgid "relative path syntax can't be used outside working tree"
+msgstr ""
+
+#: object-name.c:1922
+#, c-format
+msgid "invalid object name '%.*s'."
+msgstr ""
+
+#: object.c:53
+#, c-format
+msgid "invalid object type \"%s\""
+msgstr ""
+
+#: object.c:173
+#, c-format
+msgid "object %s is a %s, not a %s"
+msgstr ""
+
+#: object.c:233
+#, c-format
+msgid "object %s has unknown type id %d"
+msgstr ""
+
+#: object.c:246
+#, c-format
+msgid "unable to parse object: %s"
+msgstr ""
+
+#: object.c:266 object.c:278
+#, c-format
+msgid "hash mismatch %s"
+msgstr ""
+
+#: pack-bitmap.c:843 pack-bitmap.c:849 builtin/pack-objects.c:2226
+#, c-format
+msgid "unable to get size of %s"
+msgstr ""
+
+#: pack-bitmap.c:1489 builtin/rev-list.c:92
+msgid "unable to get disk usage of %s"
+msgstr ""
+
+#: pack-revindex.c:220
+#, c-format
+msgid "reverse-index file %s is too small"
+msgstr ""
+
+#: pack-revindex.c:225
+#, c-format
+msgid "reverse-index file %s is corrupt"
+msgstr ""
+
+#: pack-revindex.c:233
+#, c-format
+msgid "reverse-index file %s has unknown signature"
+msgstr ""
+
+#: pack-revindex.c:237
+#, c-format
+msgid "reverse-index file %s has unsupported version %<PRIu32>"
+msgstr ""
+
+#: pack-revindex.c:242
+#, c-format
+msgid "reverse-index file %s has unsupported hash id %<PRIu32>"
+msgstr ""
+
+#: pack-write.c:236
+msgid "cannot both write and verify reverse index"
+msgstr ""
+
+#: pack-write.c:257
+msgid "could not stat: %s"
+msgstr ""
+
+#: pack-write.c:269
+#, c-format
+msgid "failed to make %s readable"
+msgstr ""
+
+#: pack-write.c:508
+#, c-format
+msgid "could not write '%s' promisor file"
+msgstr ""
+
+#: packfile.c:625
+msgid "offset before end of packfile (broken .idx?)"
+msgstr ""
+
+#: packfile.c:1934
+#, c-format
+msgid "offset before start of pack index for %s (corrupt index?)"
+msgstr ""
+
+#: packfile.c:1938
+#, c-format
+msgid "offset beyond end of pack index for %s (truncated index?)"
+msgstr ""
+
+#: parse-options-cb.c:20 parse-options-cb.c:24
+#, c-format
+msgid "option `%s' expects a numerical value"
+msgstr ""
+
+#: parse-options-cb.c:41
+#, c-format
+msgid "malformed expiration date '%s'"
+msgstr ""
+
+#: parse-options-cb.c:54
+#, c-format
+msgid "option `%s' expects \"always\", \"auto\", or \"never\""
+msgstr ""
+
+#: parse-options-cb.c:132 parse-options-cb.c:149
+#, c-format
+msgid "malformed object name '%s'"
+msgstr ""
+
+#: parse-options.c:38
+#, c-format
+msgid "%s requires a value"
+msgstr ""
+
+#: parse-options.c:73
+#, c-format
+msgid "%s is incompatible with %s"
+msgstr ""
+
+#: parse-options.c:78
+#, c-format
+msgid "%s : incompatible with something else"
+msgstr ""
+
+#: parse-options.c:92 parse-options.c:96 parse-options.c:317
+#, c-format
+msgid "%s takes no value"
+msgstr ""
+
+#: parse-options.c:94
+#, c-format
+msgid "%s isn't available"
+msgstr ""
+
+#: parse-options.c:217
+#, c-format
+msgid "%s expects a non-negative integer value with an optional k/m/g suffix"
+msgstr ""
+
+#: parse-options.c:386
+#, c-format
+msgid "ambiguous option: %s (could be --%s%s or --%s%s)"
+msgstr ""
+
+#: parse-options.c:420 parse-options.c:428
+#, c-format
+msgid "did you mean `--%s` (with two dashes)?"
+msgstr ""
+
+#: parse-options.c:666 parse-options.c:971
+#, c-format
+msgid "alias of --%s"
+msgstr ""
+
+#: parse-options.c:862
+#, c-format
+msgid "unknown option `%s'"
+msgstr ""
+
+#: parse-options.c:864
+#, c-format
+msgid "unknown switch `%c'"
+msgstr ""
+
+#: parse-options.c:866
+#, c-format
+msgid "unknown non-ascii option in string: `%s'"
+msgstr ""
+
+#: parse-options.c:890
+msgid "..."
+msgstr ""
+
+#: parse-options.c:909
+#, c-format
+msgid "usage: %s"
+msgstr ""
+
+#. TRANSLATORS: the colon here should align with the
+#. one in "usage: %s" translation.
+#.
+#: parse-options.c:915
+#, c-format
+msgid "   or: %s"
+msgstr ""
+
+#: parse-options.c:918
+#, c-format
+msgid "    %s"
+msgstr ""
+
+#: parse-options.c:957
+msgid "-NUM"
+msgstr ""
+
+#: path.c:915
+#, c-format
+msgid "Could not make %s writable by group"
+msgstr ""
+
+#: pathspec.c:130
+msgid "Escape character '\\' not allowed as last character in attr value"
+msgstr ""
+
+#: pathspec.c:148
+msgid "Only one 'attr:' specification is allowed."
+msgstr ""
+
+#: pathspec.c:151
+msgid "attr spec must not be empty"
+msgstr ""
+
+#: pathspec.c:194
+#, c-format
+msgid "invalid attribute name %s"
+msgstr ""
+
+#: pathspec.c:259
+msgid "global 'glob' and 'noglob' pathspec settings are incompatible"
+msgstr ""
+
+#: pathspec.c:266
+msgid ""
+"global 'literal' pathspec setting is incompatible with all other global "
+"pathspec settings"
+msgstr ""
+
+#: pathspec.c:306
+msgid "invalid parameter for pathspec magic 'prefix'"
+msgstr ""
+
+#: pathspec.c:327
+#, c-format
+msgid "Invalid pathspec magic '%.*s' in '%s'"
+msgstr ""
+
+#: pathspec.c:332
+#, c-format
+msgid "Missing ')' at the end of pathspec magic in '%s'"
+msgstr ""
+
+#: pathspec.c:370
+#, c-format
+msgid "Unimplemented pathspec magic '%c' in '%s'"
+msgstr ""
+
+#: pathspec.c:429
+#, c-format
+msgid "%s: 'literal' and 'glob' are incompatible"
+msgstr ""
+
+#: pathspec.c:445
+#, c-format
+msgid "%s: '%s' is outside repository at '%s'"
+msgstr ""
+
+#: pathspec.c:521
+#, c-format
+msgid "'%s' (mnemonic: '%c')"
+msgstr ""
+
+#: pathspec.c:531
+#, c-format
+msgid "%s: pathspec magic not supported by this command: %s"
+msgstr ""
+
+#: pathspec.c:598
+#, c-format
+msgid "pathspec '%s' is beyond a symbolic link"
+msgstr ""
+
+#: pathspec.c:643
+#, c-format
+msgid "line is badly quoted: %s"
+msgstr ""
+
+#: pkt-line.c:92
+msgid "unable to write flush packet"
+msgstr ""
+
+#: pkt-line.c:99
+msgid "unable to write delim packet"
+msgstr ""
+
+#: pkt-line.c:106
+msgid "unable to write stateless separator packet"
+msgstr ""
+
+#: pkt-line.c:113
+msgid "flush packet write failed"
+msgstr ""
+
+#: pkt-line.c:153 pkt-line.c:239
+msgid "protocol error: impossibly long line"
+msgstr ""
+
+#: pkt-line.c:169 pkt-line.c:171
+msgid "packet write with format failed"
+msgstr ""
+
+#: pkt-line.c:203
+msgid "packet write failed - data exceeds max packet size"
+msgstr ""
+
+#: pkt-line.c:210 pkt-line.c:217
+msgid "packet write failed"
+msgstr ""
+
+#: pkt-line.c:302
+msgid "read error"
+msgstr ""
+
+#: pkt-line.c:310
+msgid "the remote end hung up unexpectedly"
+msgstr ""
+
+#: pkt-line.c:338
+#, c-format
+msgid "protocol error: bad line length character: %.4s"
+msgstr ""
+
+#: pkt-line.c:352 pkt-line.c:357
+#, c-format
+msgid "protocol error: bad line length %d"
+msgstr ""
+
+#: pkt-line.c:373 sideband.c:165
+#, c-format
+msgid "remote error: %s"
+msgstr ""
+
+#: preload-index.c:125
+msgid "Refreshing index"
+msgstr ""
+
+#: preload-index.c:144
+#, c-format
+msgid "unable to create threaded lstat: %s"
+msgstr ""
+
+#: pretty.c:984
+msgid "unable to parse --pretty format"
+msgstr ""
+
+#: promisor-remote.c:30
+msgid "promisor-remote: unable to fork off fetch subprocess"
+msgstr ""
+
+#: promisor-remote.c:35 promisor-remote.c:37
+msgid "promisor-remote: could not write to fetch subprocess"
+msgstr ""
+
+#: promisor-remote.c:41
+msgid "promisor-remote: could not close stdin to fetch subprocess"
+msgstr ""
+
+#: promisor-remote.c:53
+#, c-format
+msgid "promisor remote name cannot begin with '/': %s"
+msgstr ""
+
+#: prune-packed.c:35
+msgid "Removing duplicate objects"
+msgstr ""
+
+#: range-diff.c:78
+msgid "could not start `log`"
+msgstr ""
+
+#: range-diff.c:80
+msgid "could not read `log` output"
+msgstr ""
+
+#: range-diff.c:101 sequencer.c:5318
+#, c-format
+msgid "could not parse commit '%s'"
+msgstr ""
+
+#: range-diff.c:115
+#, c-format
+msgid ""
+"could not parse first line of `log` output: did not start with 'commit ': "
+"'%s'"
+msgstr ""
+
+#: range-diff.c:140
+#, c-format
+msgid "could not parse git header '%.*s'"
+msgstr ""
+
+#: range-diff.c:306
+msgid "failed to generate diff"
+msgstr ""
+
+#: range-diff.c:558
+msgid "--left-only and --right-only are mutually exclusive"
+msgstr ""
+
+#: range-diff.c:561 range-diff.c:563
+#, c-format
+msgid "could not parse log for '%s'"
+msgstr ""
+
+#: read-cache.c:682
+#, c-format
+msgid "will not add file alias '%s' ('%s' already exists in index)"
+msgstr ""
+
+#: read-cache.c:698
+msgid "cannot create an empty blob in the object database"
+msgstr ""
+
+#: read-cache.c:720
+#, c-format
+msgid "%s: can only add regular files, symbolic links or git-directories"
+msgstr ""
+
+#: read-cache.c:725
+#, c-format
+msgid "'%s' does not have a commit checked out"
+msgstr ""
+
+#: read-cache.c:777
+#, c-format
+msgid "unable to index file '%s'"
+msgstr ""
+
+#: read-cache.c:796
+#, c-format
+msgid "unable to add '%s' to index"
+msgstr ""
+
+#: read-cache.c:807
+#, c-format
+msgid "unable to stat '%s'"
+msgstr ""
+
+#: read-cache.c:1318
+#, c-format
+msgid "'%s' appears as both a file and as a directory"
+msgstr ""
+
+#: read-cache.c:1532
+msgid "Refresh index"
+msgstr ""
+
+#: read-cache.c:1657
+#, c-format
+msgid ""
+"index.version set, but the value is invalid.\n"
+"Using version %i"
+msgstr ""
+
+#: read-cache.c:1667
+#, c-format
+msgid ""
+"GIT_INDEX_VERSION set, but the value is invalid.\n"
+"Using version %i"
+msgstr ""
+
+#: read-cache.c:1723
+#, c-format
+msgid "bad signature 0x%08x"
+msgstr ""
+
+#: read-cache.c:1726
+#, c-format
+msgid "bad index version %d"
+msgstr ""
+
+#: read-cache.c:1735
+msgid "bad index file sha1 signature"
+msgstr ""
+
+#: read-cache.c:1765
+#, c-format
+msgid "index uses %.4s extension, which we do not understand"
+msgstr ""
+
+#: read-cache.c:1767
+#, c-format
+msgid "ignoring %.4s extension"
+msgstr ""
+
+#: read-cache.c:1804
+#, c-format
+msgid "unknown index entry format 0x%08x"
+msgstr ""
+
+#: read-cache.c:1820
+#, c-format
+msgid "malformed name field in the index, near path '%s'"
+msgstr ""
+
+#: read-cache.c:1877
+msgid "unordered stage entries in index"
+msgstr ""
+
+#: read-cache.c:1880
+#, c-format
+msgid "multiple stage entries for merged file '%s'"
+msgstr ""
+
+#: read-cache.c:1883
+#, c-format
+msgid "unordered stage entries for '%s'"
+msgstr ""
+
+#: read-cache.c:1989 read-cache.c:2280 rerere.c:549 rerere.c:583 rerere.c:1095
+#: submodule.c:1634 builtin/add.c:546 builtin/check-ignore.c:181
+#: builtin/checkout.c:504 builtin/checkout.c:690 builtin/clean.c:991
+#: builtin/commit.c:364 builtin/diff-tree.c:122 builtin/grep.c:505
+#: builtin/mv.c:146 builtin/reset.c:247 builtin/rm.c:290
+#: builtin/submodule--helper.c:332
+msgid "index file corrupt"
+msgstr ""
+
+#: read-cache.c:2133
+#, c-format
+msgid "unable to create load_cache_entries thread: %s"
+msgstr ""
+
+#: read-cache.c:2146
+#, c-format
+msgid "unable to join load_cache_entries thread: %s"
+msgstr ""
+
+#: read-cache.c:2179
+#, c-format
+msgid "%s: index file open failed"
+msgstr ""
+
+#: read-cache.c:2183
+#, c-format
+msgid "%s: cannot stat the open index"
+msgstr ""
+
+#: read-cache.c:2187
+#, c-format
+msgid "%s: index file smaller than expected"
+msgstr ""
+
+#: read-cache.c:2191
+#, c-format
+msgid "%s: unable to map index file"
+msgstr ""
+
+#: read-cache.c:2233
+#, c-format
+msgid "unable to create load_index_extensions thread: %s"
+msgstr ""
+
+#: read-cache.c:2260
+#, c-format
+msgid "unable to join load_index_extensions thread: %s"
+msgstr ""
+
+#: read-cache.c:2292
+#, c-format
+msgid "could not freshen shared index '%s'"
+msgstr ""
+
+#: read-cache.c:2339
+#, c-format
+msgid "broken index, expect %s in %s, got %s"
+msgstr ""
+
+#: read-cache.c:3035 strbuf.c:1171 wrapper.c:633 builtin/merge.c:1141
+#, c-format
+msgid "could not close '%s'"
+msgstr ""
+
+#: read-cache.c:3138 sequencer.c:2487 sequencer.c:4239
+#, c-format
+msgid "could not stat '%s'"
+msgstr ""
+
+#: read-cache.c:3151
+#, c-format
+msgid "unable to open git dir: %s"
+msgstr ""
+
+#: read-cache.c:3163
+#, c-format
+msgid "unable to unlink: %s"
+msgstr ""
+
+#: read-cache.c:3188
+#, c-format
+msgid "cannot fix permission bits on '%s'"
+msgstr ""
+
+#: read-cache.c:3337
+#, c-format
+msgid "%s: cannot drop to stage #0"
+msgstr ""
+
+#: rebase-interactive.c:11
+msgid ""
+"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 ""
+
+#: rebase-interactive.c:33
+#, c-format
+msgid ""
+"unrecognized setting %s for option rebase.missingCommitsCheck. Ignoring."
+msgstr ""
+
+#: rebase-interactive.c:42
+msgid ""
+"\n"
+"Commands:\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"
+"b, break = stop here (continue rebase later with 'git rebase --continue')\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 ""
+
+#: rebase-interactive.c:63
+#, c-format
+msgid "Rebase %s onto %s (%d command)"
+msgid_plural "Rebase %s onto %s (%d commands)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: rebase-interactive.c:72 git-rebase--preserve-merges.sh:218
+msgid ""
+"\n"
+"Do not remove any line. Use 'drop' explicitly to remove a commit.\n"
+msgstr ""
+
+#: rebase-interactive.c:75 git-rebase--preserve-merges.sh:222
+msgid ""
+"\n"
+"If you remove a line here THAT COMMIT WILL BE LOST.\n"
+msgstr ""
+
+#: rebase-interactive.c:81 git-rebase--preserve-merges.sh:861
+msgid ""
+"\n"
+"You are editing the todo file of an ongoing interactive rebase.\n"
+"To continue rebase after editing, run:\n"
+"    git rebase --continue\n"
+"\n"
+msgstr ""
+
+#: rebase-interactive.c:86 git-rebase--preserve-merges.sh:938
+msgid ""
+"\n"
+"However, if you remove everything, the rebase will be aborted.\n"
+"\n"
+msgstr ""
+
+#: rebase-interactive.c:110 rerere.c:469 rerere.c:676 sequencer.c:3615
+#: sequencer.c:3641 sequencer.c:5424 builtin/fsck.c:329 builtin/rebase.c:272
+#, c-format
+msgid "could not write '%s'"
+msgstr ""
+
+#: rebase-interactive.c:116 builtin/rebase.c:204 builtin/rebase.c:230
+#: builtin/rebase.c:254
+#, c-format
+msgid "could not write '%s'."
+msgstr ""
+
+#: rebase-interactive.c:193
+#, c-format
+msgid ""
+"Warning: some commits may have been dropped accidentally.\n"
+"Dropped commits (newer to older):\n"
+msgstr ""
+
+#: rebase-interactive.c:200
+#, c-format
+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"
+"The possible behaviours are: ignore, warn, error.\n"
+"\n"
+msgstr ""
+
+#: rebase-interactive.c:233 rebase-interactive.c:238 sequencer.c:2402
+#: builtin/rebase.c:190 builtin/rebase.c:215 builtin/rebase.c:241
+#: builtin/rebase.c:266
+#, c-format
+msgid "could not read '%s'."
+msgstr ""
+
+#: ref-filter.c:42 wt-status.c:1975
+msgid "gone"
+msgstr ""
+
+#: ref-filter.c:43
+#, c-format
+msgid "ahead %d"
+msgstr ""
+
+#: ref-filter.c:44
+#, c-format
+msgid "behind %d"
+msgstr ""
+
+#: ref-filter.c:45
+#, c-format
+msgid "ahead %d, behind %d"
+msgstr ""
+
+#: ref-filter.c:175
+#, c-format
+msgid "expected format: %%(color:<color>)"
+msgstr ""
+
+#: ref-filter.c:177
+#, c-format
+msgid "unrecognized color: %%(color:%s)"
+msgstr ""
+
+#: ref-filter.c:199
+#, c-format
+msgid "Integer value expected refname:lstrip=%s"
+msgstr ""
+
+#: ref-filter.c:203
+#, c-format
+msgid "Integer value expected refname:rstrip=%s"
+msgstr ""
+
+#: ref-filter.c:205
+#, c-format
+msgid "unrecognized %%(%s) argument: %s"
+msgstr ""
+
+#: ref-filter.c:260
+#, c-format
+msgid "%%(objecttype) does not take arguments"
+msgstr ""
+
+#: ref-filter.c:282
+#, c-format
+msgid "unrecognized %%(objectsize) argument: %s"
+msgstr ""
+
+#: ref-filter.c:290
+#, c-format
+msgid "%%(deltabase) does not take arguments"
+msgstr ""
+
+#: ref-filter.c:302
+#, c-format
+msgid "%%(body) does not take arguments"
+msgstr ""
+
+#: ref-filter.c:315
+#, c-format
+msgid "unrecognized %%(subject) argument: %s"
+msgstr ""
+
+#: ref-filter.c:334
+#, c-format
+msgid "expected %%(trailers:key=<value>)"
+msgstr ""
+
+#: ref-filter.c:336
+#, c-format
+msgid "unknown %%(trailers) argument: %s"
+msgstr ""
+
+#: ref-filter.c:367
+#, c-format
+msgid "positive value expected contents:lines=%s"
+msgstr ""
+
+#: ref-filter.c:369
+#, c-format
+msgid "unrecognized %%(contents) argument: %s"
+msgstr ""
+
+#: ref-filter.c:384
+#, c-format
+msgid "positive value expected '%s' in %%(%s)"
+msgstr ""
+
+#: ref-filter.c:388
+#, c-format
+msgid "unrecognized argument '%s' in %%(%s)"
+msgstr ""
+
+#: ref-filter.c:402
+#, c-format
+msgid "unrecognized email option: %s"
+msgstr ""
+
+#: ref-filter.c:432
+#, c-format
+msgid "expected format: %%(align:<width>,<position>)"
+msgstr ""
+
+#: ref-filter.c:444
+#, c-format
+msgid "unrecognized position:%s"
+msgstr ""
+
+#: ref-filter.c:451
+#, c-format
+msgid "unrecognized width:%s"
+msgstr ""
+
+#: ref-filter.c:460
+#, c-format
+msgid "unrecognized %%(align) argument: %s"
+msgstr ""
+
+#: ref-filter.c:468
+#, c-format
+msgid "positive width expected with the %%(align) atom"
+msgstr ""
+
+#: ref-filter.c:486
+#, c-format
+msgid "unrecognized %%(if) argument: %s"
+msgstr ""
+
+#: ref-filter.c:588
+#, c-format
+msgid "malformed field name: %.*s"
+msgstr ""
+
+#: ref-filter.c:615
+#, c-format
+msgid "unknown field name: %.*s"
+msgstr ""
+
+#: ref-filter.c:619
+#, c-format
+msgid ""
+"not a git repository, but the field '%.*s' requires access to object data"
+msgstr ""
+
+#: ref-filter.c:743
+#, c-format
+msgid "format: %%(if) atom used without a %%(then) atom"
+msgstr ""
+
+#: ref-filter.c:806
+#, c-format
+msgid "format: %%(then) atom used without an %%(if) atom"
+msgstr ""
+
+#: ref-filter.c:808
+#, c-format
+msgid "format: %%(then) atom used more than once"
+msgstr ""
+
+#: ref-filter.c:810
+#, c-format
+msgid "format: %%(then) atom used after %%(else)"
+msgstr ""
+
+#: ref-filter.c:838
+#, c-format
+msgid "format: %%(else) atom used without an %%(if) atom"
+msgstr ""
+
+#: ref-filter.c:840
+#, c-format
+msgid "format: %%(else) atom used without a %%(then) atom"
+msgstr ""
+
+#: ref-filter.c:842
+#, c-format
+msgid "format: %%(else) atom used more than once"
+msgstr ""
+
+#: ref-filter.c:857
+#, c-format
+msgid "format: %%(end) atom used without corresponding atom"
+msgstr ""
+
+#: ref-filter.c:914
+#, c-format
+msgid "malformed format string %s"
+msgstr ""
+
+#: ref-filter.c:1555
+#, c-format
+msgid "(no branch, rebasing %s)"
+msgstr ""
+
+#: ref-filter.c:1558
+#, c-format
+msgid "(no branch, rebasing detached HEAD %s)"
+msgstr ""
+
+#: ref-filter.c:1561
+msgid "(no branch, bisect started on %s)"
+msgstr ""
+
+#: ref-filter.c:1565
+#, c-format
+msgid "(HEAD detached at %s)"
+msgstr ""
+
+#: ref-filter.c:1568
+#, c-format
+msgid "(HEAD detached from %s)"
+msgstr ""
+
+#: ref-filter.c:1571
+msgid "(no branch)"
+msgstr ""
+
+#: ref-filter.c:1603 ref-filter.c:1812
+#, c-format
+msgid "missing object %s for %s"
+msgstr ""
+
+#: ref-filter.c:1613
+#, c-format
+msgid "parse_object_buffer failed on %s for %s"
+msgstr ""
+
+#: ref-filter.c:1996
+#, c-format
+msgid "malformed object at '%s'"
+msgstr ""
+
+#: ref-filter.c:2085
+#, c-format
+msgid "ignoring ref with broken name %s"
+msgstr ""
+
+#: ref-filter.c:2090 refs.c:676
+#, c-format
+msgid "ignoring broken ref %s"
+msgstr ""
+
+#: ref-filter.c:2430
+#, c-format
+msgid "format: %%(end) atom missing"
+msgstr ""
+
+#: ref-filter.c:2529
+#, c-format
+msgid "malformed object name %s"
+msgstr ""
+
+#: ref-filter.c:2534
+#, c-format
+msgid "option `%s' must point to a commit"
+msgstr ""
+
+#: refs.c:264
+#, c-format
+msgid "%s does not point to a valid object!"
+msgstr ""
+
+#: refs.c:566
+#, c-format
+msgid ""
+"Using '%s' as the name for the initial branch. This default branch name\n"
+"is subject to change. To configure the initial branch name to use in all\n"
+"of your new repositories, which will suppress this warning, call:\n"
+"\n"
+"\tgit config --global init.defaultBranch <name>\n"
+"\n"
+"Names commonly chosen instead of 'master' are 'main', 'trunk' and\n"
+"'development'. The just-created branch can be renamed via this command:\n"
+"\n"
+"\tgit branch -m <name>\n"
+msgstr ""
+
+#: refs.c:588
+#, c-format
+msgid "could not retrieve `%s`"
+msgstr ""
+
+#: refs.c:598
+#, c-format
+msgid "invalid branch name: %s = %s"
+msgstr ""
+
+#: refs.c:674
+#, c-format
+msgid "ignoring dangling symref %s"
+msgstr ""
+
+#: refs.c:922
+#, c-format
+msgid "log for ref %s has gap after %s"
+msgstr ""
+
+#: refs.c:929
+#, c-format
+msgid "log for ref %s unexpectedly ended on %s"
+msgstr ""
+
+#: refs.c:994
+#, c-format
+msgid "log for %s is empty"
+msgstr ""
+
+#: refs.c:1086
+#, c-format
+msgid "refusing to update ref with bad name '%s'"
+msgstr ""
+
+#: refs.c:1157
+#, c-format
+msgid "update_ref failed for ref '%s': %s"
+msgstr ""
+
+#: refs.c:2051
+#, c-format
+msgid "multiple updates for ref '%s' not allowed"
+msgstr ""
+
+#: refs.c:2131
+msgid "ref updates forbidden inside quarantine environment"
+msgstr ""
+
+#: refs.c:2142
+msgid "ref updates aborted by hook"
+msgstr ""
+
+#: refs.c:2242 refs.c:2272
+#, c-format
+msgid "'%s' exists; cannot create '%s'"
+msgstr ""
+
+#: refs.c:2248 refs.c:2283
+#, c-format
+msgid "cannot process '%s' and '%s' at the same time"
+msgstr ""
+
+#: refs/files-backend.c:1228
+#, c-format
+msgid "could not remove reference %s"
+msgstr ""
+
+#: refs/files-backend.c:1242 refs/packed-backend.c:1542
+#: refs/packed-backend.c:1552
+#, c-format
+msgid "could not delete reference %s: %s"
+msgstr ""
+
+#: refs/files-backend.c:1245 refs/packed-backend.c:1555
+#, c-format
+msgid "could not delete references: %s"
+msgstr ""
+
+#: refspec.c:170
+#, c-format
+msgid "invalid refspec '%s'"
+msgstr ""
+
+#: remote.c:351
+#, c-format
+msgid "config remote shorthand cannot begin with '/': %s"
+msgstr "pintasan konfigurasi remote tidak dapat diawali dengan '/': %s"
+
+#: remote.c:399
+msgid "more than one receivepack given, using the first"
+msgstr "lebih dari satu paket terima diberikan, gunakan yang pertama"
+
+#: remote.c:407
+msgid "more than one uploadpack given, using the first"
+msgstr "lebih dari satu paket unggah diberikan, gunakan yang pertama"
+
+#: remote.c:590
+#, c-format
+msgid "Cannot fetch both %s and %s to %s"
+msgstr "tidak dapat mengambil baik %s dan %s ke %s"
+
+#: remote.c:594
+#, c-format
+msgid "%s usually tracks %s, not %s"
+msgstr "%s biasanya melacak %s, bukan %s"
+
+#: remote.c:598
+#, c-format
+msgid "%s tracks both %s and %s"
+msgstr "%s melacak baik %s dan %s"
+
+#: remote.c:666
+#, c-format
+msgid "key '%s' of pattern had no '*'"
+msgstr "kunci '%s' dari pola tidak ada '*'"
+
+#: remote.c:676
+#, c-format
+msgid "value '%s' of pattern has no '*'"
+msgstr "nilai '%s' dari pola tidak ada '*'"
+
+#: remote.c:1083
+#, c-format
+msgid "src refspec %s does not match any"
+msgstr "spek referensi sumber %s tidak cocok dengan apapun"
+
+#: remote.c:1088
+#, c-format
+msgid "src refspec %s matches more than one"
+msgstr "spek referensi sumber %s cocok dengan lebih dari satu"
+
+#. TRANSLATORS: "matches '%s'%" is the <dst> part of "git push
+#. <remote> <src>:<dst>" push, and "being pushed ('%s')" is
+#. the <src>.
+#.
+#: remote.c:1103
+#, c-format
+msgid ""
+"The destination you provided is not a full refname (i.e.,\n"
+"starting with \"refs/\"). We tried to guess what you meant by:\n"
+"\n"
+"- Looking for a ref that matches '%s' on the remote side.\n"
+"- Checking if the <src> being pushed ('%s')\n"
+"  is a ref in \"refs/{heads,tags}/\". If so we add a corresponding\n"
+"  refs/{heads,tags}/ prefix on the remote side.\n"
+"\n"
+"Neither worked, so we gave up. You must fully qualify the ref."
+msgstr ""
+"Tujuan yang Anda berikan bukan nama referensi penuh (seperti \n"
+"dimulai dengan \"refs/\"). Kami mencoba menebak maksud Anda dengan:\n"
+"- Cari referensi yang cocok dengan '%s' pada sisi remote.\n"
+"- Perika apakah <src> yang sedang didorong ('%s') adalah \n"
+"  referensi pada \"refs/{heads,tags}\". Bila demikian kami \n"
+"  menambahkan awalan refs/{heads,tags}/ yang bersesuaian pada sisi \n"
+"  remote.\n"
+"\n"
+"Kedua-duanya tidak bekerja, jadi kami menyerah. Anda harus kualifikasi\n"
+"penuh referensi."
+
+#: remote.c:1123
+#, c-format
+msgid ""
+"The <src> part of the refspec is a commit object.\n"
+"Did you mean to create a new branch by pushing to\n"
+"'%s:refs/heads/%s'?"
+msgstr ""
+"Bagian <src> dari spek referensi adalah objek komit.\n"
+"Apakah maksud Anda buat cabang baru dengan mendorong ke\n"
+"'%s:refs/heads/%s'?"
+
+#: remote.c:1128
+#, c-format
+msgid ""
+"The <src> part of the refspec is a tag object.\n"
+"Did you mean to create a new tag by pushing to\n"
+"'%s:refs/tags/%s'?"
+msgstr ""
+"Bagian <src> dari spek referensi adalah objek tag.\n"
+"Apakah maksud Anda buat tag baru dengan mendorong ke\n"
+"'%s:refs/tags/%s'?"
+
+#: remote.c:1133
+#, c-format
+msgid ""
+"The <src> part of the refspec is a tree object.\n"
+"Did you mean to tag a new tree by pushing to\n"
+"'%s:refs/tags/%s'?"
+msgstr ""
+"Bagian <src> dari spek referensi adalah objek pohon.\n"
+"Apakah maksud Anda tag pohon dengan mendorong ke\n"
+"'%s:refs/tags/%s'?"
+
+#: remote.c:1138
+#, c-format
+msgid ""
+"The <src> part of the refspec is a blob object.\n"
+"Did you mean to tag a new blob by pushing to\n"
+"'%s:refs/tags/%s'?"
+msgstr ""
+"Bagian <src> dari spek referensi adalah objek blob.\n"
+"Apakah maksud Anda tag blob baru dengan mendorong ke\n"
+"'%s:refs/tags/%s'?"
+
+#: remote.c:1174
+#, c-format
+msgid "%s cannot be resolved to branch"
+msgstr "%s tidak dapat diselesaikan ke cabang"
+
+#: remote.c:1185
+#, c-format
+msgid "unable to delete '%s': remote ref does not exist"
+msgstr "tidak dapat menghapus '%s': referensi remote tidak ada"
+
+#: remote.c:1197
+#, c-format
+msgid "dst refspec %s matches more than one"
+msgstr "spek referensi tujuan %s cocok dengan lebih dari satu"
+
+#: remote.c:1204
+#, c-format
+msgid "dst ref %s receives from more than one src"
+msgstr "referensi tujuan %s menerima dari lebih dari satu sumber"
+
+#: remote.c:1724 remote.c:1825
+msgid "HEAD does not point to a branch"
+msgstr "HEAD tidak menunjuk ke cabang"
+
+#: remote.c:1733
+#, c-format
+msgid "no such branch: '%s'"
+msgstr "tidak ada cabang seperti: '%s'"
+
+#: remote.c:1736
+#, c-format
+msgid "no upstream configured for branch '%s'"
+msgstr "tidak ada hulu yang terkonfigurasi untuk cabang '%s'"
+
+#: remote.c:1742
+#, c-format
+msgid "upstream branch '%s' not stored as a remote-tracking branch"
+msgstr "cabang hulu '%s' tidak disimpan sebagai cabang pelacak remote"
+
+#: remote.c:1757
+#, c-format
+msgid "push destination '%s' on remote '%s' has no local tracking branch"
+msgstr "tujuan dorong '%s' pada remote '%s' tidak ada cabang pelacak lokal"
+
+#: remote.c:1769
+#, c-format
+msgid "branch '%s' has no remote for pushing"
+msgstr "cabang '%s' tidak ada remote untuk didorong"
+
+#: remote.c:1779
+#, c-format
+msgid "push refspecs for '%s' do not include '%s'"
+msgstr "spek referensi dorong untuk '%s' tidak termasuk '%s'"
+
+#: remote.c:1792
+msgid "push has no destination (push.default is 'nothing')"
+msgstr "dorong tidak ada tujuan (push.default yaitu 'nothing')"
+
+#: remote.c:1814
+msgid "cannot resolve 'simple' push to a single destination"
+msgstr "tidak dapat menyelesaikan dorongan 'sederhana' ke satu tujuan"
+
+#: remote.c:1943
+#, c-format
+msgid "couldn't find remote ref %s"
+msgstr "tidak dapat menemukan referensi remote %s"
+
+#: remote.c:1956
+#, c-format
+msgid "* Ignoring funny ref '%s' locally"
+msgstr "* Abaikan referensi lucu '%s' secara lokal"
+
+#: remote.c:2119
+#, c-format
+msgid "Your branch is based on '%s', but the upstream is gone.\n"
+msgstr "Cabang Anda didasarkan pada '%s', tapi hulu sudah tiada.\n"
+
+#: remote.c:2123
+msgid "  (use \"git branch --unset-upstream\" to fixup)\n"
+msgstr "  (gunakan \"git branch --unset-upstream\" untuk perbaiki)\n"
+
+#: remote.c:2126
+#, c-format
+msgid "Your branch is up to date with '%s'.\n"
+msgstr "Cabang Anda mutakhir dengan '%s'.\n"
+
+#: remote.c:2130
+#, c-format
+msgid "Your branch and '%s' refer to different commits.\n"
+msgstr "Cabang Anda dan '%s' merujuk pada komit yang berbeda.\n"
+
+#: remote.c:2133
+#, c-format
+msgid "  (use \"%s\" for details)\n"
+msgstr "  (gunakan \"%s\" untuk selengkapnya)\n"
+
+#: remote.c:2137
+#, c-format
+msgid "Your branch is ahead of '%s' by %d commit.\n"
+msgid_plural "Your branch is ahead of '%s' by %d commits.\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: remote.c:2143
+msgid "  (use \"git push\" to publish your local commits)\n"
+msgstr "  (gunakan \"git push\" untuk terbitkan komit lokal Anda)\n"
+
+#: remote.c:2146
+#, c-format
+msgid "Your branch is behind '%s' by %d commit, and can be fast-forwarded.\n"
+msgid_plural ""
+"Your branch is behind '%s' by %d commits, and can be fast-forwarded.\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: remote.c:2154
+msgid "  (use \"git pull\" to update your local branch)\n"
+msgstr "  (gunakan \"git pull\" untuk perbarui cabang lokal Anda)\n"
+
+#: remote.c:2157
+#, c-format
+msgid ""
+"Your branch and '%s' have diverged,\n"
+"and have %d and %d different commit each, respectively.\n"
+msgid_plural ""
+"Your branch and '%s' have diverged,\n"
+"and have %d and %d different commits each, respectively.\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: remote.c:2167
+msgid "  (use \"git pull\" to merge the remote branch into yours)\n"
+msgstr "  (gunakan \"git pull\" untuk gabungkan cabang remote ke milik Anda)\n"
+
+#: remote.c:2359
+#, c-format
+msgid "cannot parse expected object name '%s'"
+msgstr "tidak dapat mengurai nama object yang diharapkan '%s'"
+
+#: replace-object.c:21
+#, c-format
+msgid "bad replace ref name: %s"
+msgstr ""
+
+#: replace-object.c:30
+#, c-format
+msgid "duplicate replace ref: %s"
+msgstr ""
+
+#: replace-object.c:82
+#, c-format
+msgid "replace depth too high for object %s"
+msgstr ""
+
+#: rerere.c:201 rerere.c:210 rerere.c:213
+msgid "corrupt MERGE_RR"
+msgstr ""
+
+#: rerere.c:248 rerere.c:253
+msgid "unable to write rerere record"
+msgstr ""
+
+#: rerere.c:479
+#, c-format
+msgid "there were errors while writing '%s' (%s)"
+msgstr ""
+
+#: rerere.c:482
+#, c-format
+msgid "failed to flush '%s'"
+msgstr ""
+
+#: rerere.c:487 rerere.c:1023
+#, c-format
+msgid "could not parse conflict hunks in '%s'"
+msgstr ""
+
+#: rerere.c:668
+#, c-format
+msgid "failed utime() on '%s'"
+msgstr ""
+
+#: rerere.c:678
+#, c-format
+msgid "writing '%s' failed"
+msgstr ""
+
+#: rerere.c:698
+#, c-format
+msgid "Staged '%s' using previous resolution."
+msgstr ""
+
+#: rerere.c:737
+#, c-format
+msgid "Recorded resolution for '%s'."
+msgstr ""
+
+#: rerere.c:772
+#, c-format
+msgid "Resolved '%s' using previous resolution."
+msgstr ""
+
+#: rerere.c:787
+#, c-format
+msgid "cannot unlink stray '%s'"
+msgstr ""
+
+#: rerere.c:791
+#, c-format
+msgid "Recorded preimage for '%s'"
+msgstr ""
+
+#: rerere.c:865 submodule.c:2088 builtin/log.c:1991
+#: builtin/submodule--helper.c:1878 builtin/submodule--helper.c:1890
+#, c-format
+msgid "could not create directory '%s'"
+msgstr ""
+
+#: rerere.c:1041
+#, c-format
+msgid "failed to update conflicted state in '%s'"
+msgstr ""
+
+#: rerere.c:1052 rerere.c:1059
+#, c-format
+msgid "no remembered resolution for '%s'"
+msgstr ""
+
+#: rerere.c:1061
+#, c-format
+msgid "cannot unlink '%s'"
+msgstr ""
+
+#: rerere.c:1071
+#, c-format
+msgid "Updated preimage for '%s'"
+msgstr ""
+
+#: rerere.c:1080
+#, c-format
+msgid "Forgot resolution for '%s'\n"
+msgstr ""
+
+#: rerere.c:1191
+msgid "unable to open rr-cache directory"
+msgstr ""
+
+#: reset.c:42
+msgid "could not determine HEAD revision"
+msgstr ""
+
+#: reset.c:70 reset.c:76 sequencer.c:3468
+#, c-format
+msgid "failed to find tree of %s"
+msgstr ""
+
+#: revision.c:2338
+msgid "--unpacked=<packfile> no longer supported"
+msgstr ""
+
+#: revision.c:2668
+msgid "your current branch appears to be broken"
+msgstr ""
+
+#: revision.c:2671
+#, c-format
+msgid "your current branch '%s' does not have any commits yet"
+msgstr ""
+
+#: revision.c:2877
+msgid "-L does not yet support diff formats besides -p and -s"
+msgstr ""
+
+#: run-command.c:767
+msgid "open /dev/null failed"
+msgstr ""
+
+#: run-command.c:1274
+#, c-format
+msgid "cannot create async thread: %s"
+msgstr ""
+
+#: run-command.c:1338
+#, c-format
+msgid ""
+"The '%s' hook was ignored because it's not set as executable.\n"
+"You can disable this warning with `git config advice.ignoredHook false`."
+msgstr ""
+
+#: send-pack.c:146
+msgid "unexpected flush packet while reading remote unpack status"
+msgstr ""
+
+#: send-pack.c:148
+#, c-format
+msgid "unable to parse remote unpack status: %s"
+msgstr ""
+
+#: send-pack.c:150
+#, c-format
+msgid "remote unpack failed: %s"
+msgstr ""
+
+#: send-pack.c:374
+msgid "failed to sign the push certificate"
+msgstr ""
+
+#: send-pack.c:467
+msgid "the receiving end does not support this repository's hash algorithm"
+msgstr ""
+
+#: send-pack.c:476
+msgid "the receiving end does not support --signed push"
+msgstr ""
+
+#: send-pack.c:478
+msgid ""
+"not sending a push certificate since the receiving end does not support --"
+"signed push"
+msgstr ""
+
+#: send-pack.c:490
+msgid "the receiving end does not support --atomic push"
+msgstr ""
+
+#: send-pack.c:495
+msgid "the receiving end does not support push options"
+msgstr ""
+
+#: sequencer.c:195
+#, c-format
+msgid "invalid commit message cleanup mode '%s'"
+msgstr ""
+
+#: sequencer.c:323
+#, c-format
+msgid "could not delete '%s'"
+msgstr ""
+
+#: sequencer.c:343 builtin/rebase.c:757 builtin/rebase.c:1602 builtin/rm.c:385
+#, c-format
+msgid "could not remove '%s'"
+msgstr ""
+
+#: sequencer.c:353
+msgid "revert"
+msgstr ""
+
+#: sequencer.c:355
+msgid "cherry-pick"
+msgstr ""
+
+#: sequencer.c:357
+msgid "rebase"
+msgstr ""
+
+#: sequencer.c:359
+#, c-format
+msgid "unknown action: %d"
+msgstr ""
+
+#: sequencer.c:418
+msgid ""
+"after resolving the conflicts, mark the corrected paths\n"
+"with 'git add <paths>' or 'git rm <paths>'"
+msgstr ""
+
+#: sequencer.c:421
+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:434 sequencer.c:3070
+#, c-format
+msgid "could not lock '%s'"
+msgstr ""
+
+#: sequencer.c:436 sequencer.c:2869 sequencer.c:3074 sequencer.c:3088
+#: sequencer.c:3345 sequencer.c:5334 strbuf.c:1168 wrapper.c:631
+#, c-format
+msgid "could not write to '%s'"
+msgstr ""
+
+#: sequencer.c:441
+#, c-format
+msgid "could not write eol to '%s'"
+msgstr ""
+
+#: sequencer.c:446 sequencer.c:2874 sequencer.c:3076 sequencer.c:3090
+#: sequencer.c:3353
+#, c-format
+msgid "failed to finalize '%s'"
+msgstr ""
+
+#: sequencer.c:485
+#, c-format
+msgid "your local changes would be overwritten by %s."
+msgstr ""
+
+#: sequencer.c:489
+msgid "commit your changes or stash them to proceed."
+msgstr ""
+
+#: sequencer.c:521
+#, c-format
+msgid "%s: fast-forward"
+msgstr ""
+
+#: sequencer.c:560 builtin/tag.c:598
+#, c-format
+msgid "Invalid cleanup mode %s"
+msgstr ""
+
+#. TRANSLATORS: %s will be "revert", "cherry-pick" or
+#. "rebase".
+#.
+#: sequencer.c:670
+#, c-format
+msgid "%s: Unable to write new index file"
+msgstr ""
+
+#: sequencer.c:684
+msgid "unable to update cache tree"
+msgstr ""
+
+#: sequencer.c:698
+msgid "could not resolve HEAD commit"
+msgstr ""
+
+#: sequencer.c:778
+#, c-format
+msgid "no key present in '%.*s'"
+msgstr ""
+
+#: sequencer.c:789
+#, c-format
+msgid "unable to dequote value of '%s'"
+msgstr ""
+
+#: sequencer.c:826 wrapper.c:201 wrapper.c:371 builtin/am.c:710
+#: builtin/am.c:802 builtin/merge.c:1136 builtin/rebase.c:910
+#, c-format
+msgid "could not open '%s' for reading"
+msgstr ""
+
+#: sequencer.c:836
+msgid "'GIT_AUTHOR_NAME' already given"
+msgstr ""
+
+#: sequencer.c:841
+msgid "'GIT_AUTHOR_EMAIL' already given"
+msgstr ""
+
+#: sequencer.c:846
+msgid "'GIT_AUTHOR_DATE' already given"
+msgstr ""
+
+#: sequencer.c:850
+#, c-format
+msgid "unknown variable '%s'"
+msgstr ""
+
+#: sequencer.c:855
+msgid "missing 'GIT_AUTHOR_NAME'"
+msgstr ""
+
+#: sequencer.c:857
+msgid "missing 'GIT_AUTHOR_EMAIL'"
+msgstr ""
+
+#: sequencer.c:859
+msgid "missing 'GIT_AUTHOR_DATE'"
+msgstr ""
+
+#: sequencer.c:924
+#, c-format
+msgid ""
+"you have staged changes in your working tree\n"
+"If these changes are meant to be squashed into the previous commit, run:\n"
+"\n"
+"  git commit --amend %s\n"
+"\n"
+"If they are meant to go into a new commit, run:\n"
+"\n"
+"  git commit %s\n"
+"\n"
+"In both cases, once you're done, continue with:\n"
+"\n"
+"  git rebase --continue\n"
+msgstr ""
+
+#: sequencer.c:1211
+msgid "'prepare-commit-msg' hook failed"
+msgstr ""
+
+#: sequencer.c:1217
+msgid ""
+"Your name and email address were configured automatically based\n"
+"on your username and hostname. Please check that they are accurate.\n"
+"You can suppress this message by setting them explicitly. Run the\n"
+"following command and follow the instructions in your editor to edit\n"
+"your configuration file:\n"
+"\n"
+"    git config --global --edit\n"
+"\n"
+"After doing this, you may fix the identity used for this commit with:\n"
+"\n"
+"    git commit --amend --reset-author\n"
+msgstr ""
+
+#: sequencer.c:1230
+msgid ""
+"Your name and email address were configured automatically based\n"
+"on your username and hostname. Please check that they are accurate.\n"
+"You can suppress this message by setting them explicitly:\n"
+"\n"
+"    git config --global user.name \"Your Name\"\n"
+"    git config --global user.email you@example.com\n"
+"\n"
+"After doing this, you may fix the identity used for this commit with:\n"
+"\n"
+"    git commit --amend --reset-author\n"
+msgstr ""
+
+#: sequencer.c:1272
+msgid "couldn't look up newly created commit"
+msgstr ""
+
+#: sequencer.c:1274
+msgid "could not parse newly created commit"
+msgstr ""
+
+#: sequencer.c:1320
+msgid "unable to resolve HEAD after creating commit"
+msgstr ""
+
+#: sequencer.c:1322
+msgid "detached HEAD"
+msgstr ""
+
+#: sequencer.c:1326
+msgid " (root-commit)"
+msgstr ""
+
+#: sequencer.c:1347
+msgid "could not parse HEAD"
+msgstr ""
+
+#: sequencer.c:1349
+#, c-format
+msgid "HEAD %s is not a commit!"
+msgstr ""
+
+#: sequencer.c:1353 sequencer.c:1431 builtin/commit.c:1577
+msgid "could not parse HEAD commit"
+msgstr ""
+
+#: sequencer.c:1409 sequencer.c:2108
+msgid "unable to parse commit author"
+msgstr ""
+
+#: sequencer.c:1420 builtin/am.c:1566 builtin/merge.c:702
+msgid "git write-tree failed to write a tree"
+msgstr ""
+
+#: sequencer.c:1453 sequencer.c:1573
+#, c-format
+msgid "unable to read commit message from '%s'"
+msgstr ""
+
+#: sequencer.c:1484 sequencer.c:1516
+#, c-format
+msgid "invalid author identity '%s'"
+msgstr ""
+
+#: sequencer.c:1490
+msgid "corrupt author: missing date information"
+msgstr ""
+
+#: sequencer.c:1529 builtin/am.c:1593 builtin/commit.c:1678 builtin/merge.c:905
+#: builtin/merge.c:930 t/helper/test-fast-rebase.c:78
+msgid "failed to write commit object"
+msgstr ""
+
+#: sequencer.c:1556 sequencer.c:4291 t/helper/test-fast-rebase.c:198
+#, c-format
+msgid "could not update %s"
+msgstr ""
+
+#: sequencer.c:1605
+#, c-format
+msgid "could not parse commit %s"
+msgstr ""
+
+#: sequencer.c:1610
+#, c-format
+msgid "could not parse parent commit %s"
+msgstr ""
+
+#: sequencer.c:1693 sequencer.c:1804
+#, c-format
+msgid "unknown command: %d"
+msgstr ""
+
+#: sequencer.c:1751 sequencer.c:1776
+#, c-format
+msgid "This is a combination of %d commits."
+msgstr ""
+
+#: sequencer.c:1761
+msgid "need a HEAD to fixup"
+msgstr ""
+
+#: sequencer.c:1763 sequencer.c:3380
+msgid "could not read HEAD"
+msgstr ""
+
+#: sequencer.c:1765
+msgid "could not read HEAD's commit message"
+msgstr ""
+
+#: sequencer.c:1771
+#, c-format
+msgid "cannot write '%s'"
+msgstr ""
+
+#: sequencer.c:1778 git-rebase--preserve-merges.sh:486
+msgid "This is the 1st commit message:"
+msgstr ""
+
+#: sequencer.c:1786
+#, c-format
+msgid "could not read commit message of %s"
+msgstr ""
+
+#: sequencer.c:1793
+#, c-format
+msgid "This is the commit message #%d:"
+msgstr ""
+
+#: sequencer.c:1799
+#, c-format
+msgid "The commit message #%d will be skipped:"
+msgstr ""
+
+#: sequencer.c:1887
+msgid "your index file is unmerged."
+msgstr ""
+
+#: sequencer.c:1894
+msgid "cannot fixup root commit"
+msgstr ""
+
+#: sequencer.c:1913
+#, c-format
+msgid "commit %s is a merge but no -m option was given."
+msgstr ""
+
+#: sequencer.c:1921 sequencer.c:1929
+#, c-format
+msgid "commit %s does not have parent %d"
+msgstr ""
+
+#: sequencer.c:1935
+#, 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:1954
+#, c-format
+msgid "%s: cannot parse parent commit %s"
+msgstr ""
+
+#: sequencer.c:2019
+#, c-format
+msgid "could not rename '%s' to '%s'"
+msgstr ""
+
+#: sequencer.c:2079
+#, c-format
+msgid "could not revert %s... %s"
+msgstr ""
+
+#: sequencer.c:2080
+#, c-format
+msgid "could not apply %s... %s"
+msgstr ""
+
+#: sequencer.c:2100
+#, c-format
+msgid "dropping %s %s -- patch contents already upstream\n"
+msgstr ""
+
+#: sequencer.c:2158
+#, c-format
+msgid "git %s: failed to read the index"
+msgstr ""
+
+#: sequencer.c:2165
+#, c-format
+msgid "git %s: failed to refresh the index"
+msgstr ""
+
+#: sequencer.c:2242
+#, c-format
+msgid "%s does not accept arguments: '%s'"
+msgstr ""
+
+#: sequencer.c:2251
+#, c-format
+msgid "missing arguments for %s"
+msgstr ""
+
+#: sequencer.c:2282
+#, c-format
+msgid "could not parse '%s'"
+msgstr ""
+
+#: sequencer.c:2343
+#, c-format
+msgid "invalid line %d: %.*s"
+msgstr ""
+
+#: sequencer.c:2354
+#, c-format
+msgid "cannot '%s' without a previous commit"
+msgstr ""
+
+#: sequencer.c:2440
+msgid "cancelling a cherry picking in progress"
+msgstr ""
+
+#: sequencer.c:2449
+msgid "cancelling a revert in progress"
+msgstr ""
+
+#: sequencer.c:2493
+msgid "please fix this using 'git rebase --edit-todo'."
+msgstr ""
+
+#: sequencer.c:2495
+#, c-format
+msgid "unusable instruction sheet: '%s'"
+msgstr ""
+
+#: sequencer.c:2500
+msgid "no commits parsed."
+msgstr ""
+
+#: sequencer.c:2511
+msgid "cannot cherry-pick during a revert."
+msgstr ""
+
+#: sequencer.c:2513
+msgid "cannot revert during a cherry-pick."
+msgstr ""
+
+#: sequencer.c:2591
+#, c-format
+msgid "invalid value for %s: %s"
+msgstr ""
+
+#: sequencer.c:2698
+msgid "unusable squash-onto"
+msgstr ""
+
+#: sequencer.c:2718
+#, c-format
+msgid "malformed options sheet: '%s'"
+msgstr ""
+
+#: sequencer.c:2811 sequencer.c:4644
+msgid "empty commit set passed"
+msgstr ""
+
+#: sequencer.c:2828
+msgid "revert is already in progress"
+msgstr ""
+
+#: sequencer.c:2830
+#, c-format
+msgid "try \"git revert (--continue | %s--abort | --quit)\""
+msgstr ""
+
+#: sequencer.c:2833
+msgid "cherry-pick is already in progress"
+msgstr ""
+
+#: sequencer.c:2835
+#, c-format
+msgid "try \"git cherry-pick (--continue | %s--abort | --quit)\""
+msgstr ""
+
+#: sequencer.c:2849
+#, c-format
+msgid "could not create sequencer directory '%s'"
+msgstr ""
+
+#: sequencer.c:2864
+msgid "could not lock HEAD"
+msgstr ""
+
+#: sequencer.c:2924 sequencer.c:4379
+msgid "no cherry-pick or revert in progress"
+msgstr ""
+
+#: sequencer.c:2926 sequencer.c:2937
+msgid "cannot resolve HEAD"
+msgstr ""
+
+#: sequencer.c:2928 sequencer.c:2972
+msgid "cannot abort from a branch yet to be born"
+msgstr ""
+
+#: sequencer.c:2958 builtin/grep.c:757
+#, c-format
+msgid "cannot open '%s'"
+msgstr ""
+
+#: sequencer.c:2960
+#, c-format
+msgid "cannot read '%s': %s"
+msgstr ""
+
+#: sequencer.c:2961
+msgid "unexpected end of file"
+msgstr ""
+
+#: sequencer.c:2967
+#, c-format
+msgid "stored pre-cherry-pick HEAD file '%s' is corrupt"
+msgstr ""
+
+#: sequencer.c:2978
+msgid "You seem to have moved HEAD. Not rewinding, check your HEAD!"
+msgstr ""
+
+#: sequencer.c:3019
+msgid "no revert in progress"
+msgstr ""
+
+#: sequencer.c:3028
+msgid "no cherry-pick in progress"
+msgstr ""
+
+#: sequencer.c:3038
+msgid "failed to skip the commit"
+msgstr ""
+
+#: sequencer.c:3045
+msgid "there is nothing to skip"
+msgstr ""
+
+#: sequencer.c:3048
+#, c-format
+msgid ""
+"have you committed already?\n"
+"try \"git %s --continue\""
+msgstr ""
+
+#: sequencer.c:3210 sequencer.c:4271
+msgid "cannot read HEAD"
+msgstr ""
+
+#: sequencer.c:3227
+#, c-format
+msgid "unable to copy '%s' to '%s'"
+msgstr ""
+
+#: sequencer.c:3235
+#, c-format
+msgid ""
+"You can amend the commit now, with\n"
+"\n"
+"  git commit --amend %s\n"
+"\n"
+"Once you are satisfied with your changes, run\n"
+"\n"
+"  git rebase --continue\n"
+msgstr ""
+
+#: sequencer.c:3245
+#, c-format
+msgid "Could not apply %s... %.*s"
+msgstr ""
+
+#: sequencer.c:3252
+#, c-format
+msgid "Could not merge %.*s"
+msgstr ""
+
+#: sequencer.c:3266 sequencer.c:3270 builtin/difftool.c:640
+#, c-format
+msgid "could not copy '%s' to '%s'"
+msgstr ""
+
+#: sequencer.c:3282
+#, c-format
+msgid "Executing: %s\n"
+msgstr ""
+
+#: sequencer.c:3297
+#, c-format
+msgid ""
+"execution failed: %s\n"
+"%sYou can fix the problem, and then run\n"
+"\n"
+"  git rebase --continue\n"
+"\n"
+msgstr ""
+
+#: sequencer.c:3303
+msgid "and made changes to the index and/or the working tree\n"
+msgstr ""
+
+#: sequencer.c:3309
+#, c-format
+msgid ""
+"execution succeeded: %s\n"
+"but left changes to the index and/or the working tree\n"
+"Commit or stash your changes, and then run\n"
+"\n"
+"  git rebase --continue\n"
+"\n"
+msgstr ""
+
+#: sequencer.c:3370
+#, c-format
+msgid "illegal label name: '%.*s'"
+msgstr ""
+
+#: sequencer.c:3424
+msgid "writing fake root commit"
+msgstr ""
+
+#: sequencer.c:3429
+msgid "writing squash-onto"
+msgstr ""
+
+#: sequencer.c:3513
+#, c-format
+msgid "could not resolve '%s'"
+msgstr ""
+
+#: sequencer.c:3546
+msgid "cannot merge without a current revision"
+msgstr ""
+
+#: sequencer.c:3568
+#, c-format
+msgid "unable to parse '%.*s'"
+msgstr ""
+
+#: sequencer.c:3577
+#, c-format
+msgid "nothing to merge: '%.*s'"
+msgstr ""
+
+#: sequencer.c:3589
+msgid "octopus merge cannot be executed on top of a [new root]"
+msgstr ""
+
+#: sequencer.c:3605
+#, c-format
+msgid "could not get commit message of '%s'"
+msgstr ""
+
+#: sequencer.c:3788
+#, c-format
+msgid "could not even attempt to merge '%.*s'"
+msgstr ""
+
+#: sequencer.c:3804
+msgid "merge: Unable to write new index file"
+msgstr ""
+
+#: sequencer.c:3878
+msgid "Cannot autostash"
+msgstr ""
+
+#: sequencer.c:3881
+#, c-format
+msgid "Unexpected stash response: '%s'"
+msgstr ""
+
+#: sequencer.c:3887
+#, c-format
+msgid "Could not create directory for '%s'"
+msgstr ""
+
+#: sequencer.c:3890
+#, c-format
+msgid "Created autostash: %s\n"
+msgstr ""
+
+#: sequencer.c:3894
+msgid "could not reset --hard"
+msgstr ""
+
+#: sequencer.c:3919
+#, c-format
+msgid "Applied autostash.\n"
+msgstr ""
+
+#: sequencer.c:3931
+#, c-format
+msgid "cannot store %s"
+msgstr ""
+
+#: sequencer.c:3934
+#, c-format
+msgid ""
+"%s\n"
+"Your changes are safe in the stash.\n"
+"You can run \"git stash pop\" or \"git stash drop\" at any time.\n"
+msgstr ""
+
+#: sequencer.c:3939
+msgid "Applying autostash resulted in conflicts."
+msgstr ""
+
+#: sequencer.c:3940
+msgid "Autostash exists; creating a new stash entry."
+msgstr ""
+
+#: sequencer.c:4033 git-rebase--preserve-merges.sh:769
+msgid "could not detach HEAD"
+msgstr ""
+
+#: sequencer.c:4048
+#, c-format
+msgid "Stopped at HEAD\n"
+msgstr ""
+
+#: sequencer.c:4050
+#, c-format
+msgid "Stopped at %s\n"
+msgstr ""
+
+#: sequencer.c:4058
+#, 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:4104
+#, c-format
+msgid "Rebasing (%d/%d)%s"
+msgstr ""
+
+#: sequencer.c:4149
+#, c-format
+msgid "Stopped at %s...  %.*s\n"
+msgstr ""
+
+#: sequencer.c:4220
+#, c-format
+msgid "unknown command %d"
+msgstr ""
+
+#: sequencer.c:4279
+msgid "could not read orig-head"
+msgstr ""
+
+#: sequencer.c:4284
+msgid "could not read 'onto'"
+msgstr ""
+
+#: sequencer.c:4298
+#, c-format
+msgid "could not update HEAD to %s"
+msgstr ""
+
+#: sequencer.c:4358
+#, c-format
+msgid "Successfully rebased and updated %s.\n"
+msgstr ""
+
+#: sequencer.c:4391
+msgid "cannot rebase: You have unstaged changes."
+msgstr ""
+
+#: sequencer.c:4400
+msgid "cannot amend non-existing commit"
+msgstr ""
+
+#: sequencer.c:4402
+#, c-format
+msgid "invalid file: '%s'"
+msgstr ""
+
+#: sequencer.c:4404
+#, c-format
+msgid "invalid contents: '%s'"
+msgstr ""
+
+#: sequencer.c:4407
+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:4443 sequencer.c:4482
+#, c-format
+msgid "could not write file: '%s'"
+msgstr ""
+
+#: sequencer.c:4498
+msgid "could not remove CHERRY_PICK_HEAD"
+msgstr ""
+
+#: sequencer.c:4505
+msgid "could not commit staged changes."
+msgstr ""
+
+#: sequencer.c:4621
+#, c-format
+msgid "%s: can't cherry-pick a %s"
+msgstr ""
+
+#: sequencer.c:4625
+#, c-format
+msgid "%s: bad revision"
+msgstr ""
+
+#: sequencer.c:4660
+msgid "can't revert as initial commit"
+msgstr ""
+
+#: sequencer.c:5137
+msgid "make_script: unhandled options"
+msgstr ""
+
+#: sequencer.c:5140
+msgid "make_script: error preparing revisions"
+msgstr ""
+
+#: sequencer.c:5382 sequencer.c:5399
+msgid "nothing to do"
+msgstr ""
+
+#: sequencer.c:5418
+msgid "could not skip unnecessary pick commands"
+msgstr ""
+
+#: sequencer.c:5512
+msgid "the script was already rearranged."
+msgstr ""
+
+#: setup.c:133
+#, c-format
+msgid "'%s' is outside repository at '%s'"
+msgstr ""
+
+#: setup.c:185
+#, 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:198
+#, c-format
+msgid ""
+"ambiguous argument '%s': unknown revision or path not in the working tree.\n"
+"Use '--' to separate paths from revisions, like this:\n"
+"'git <command> [<revision>...] -- [<file>...]'"
+msgstr ""
+
+#: setup.c:264
+#, c-format
+msgid "option '%s' must come before non-option arguments"
+msgstr ""
+
+#: setup.c:283
+#, c-format
+msgid ""
+"ambiguous argument '%s': both revision and filename\n"
+"Use '--' to separate paths from revisions, like this:\n"
+"'git <command> [<revision>...] -- [<file>...]'"
+msgstr ""
+
+#: setup.c:419
+msgid "unable to set up work tree using invalid config"
+msgstr ""
+
+#: setup.c:423
+msgid "this operation must be run in a work tree"
+msgstr ""
+
+#: setup.c:661
+#, c-format
+msgid "Expected git repo version <= %d, found %d"
+msgstr ""
+
+#: setup.c:669
+msgid "unknown repository extensions found:"
+msgstr ""
+
+#: setup.c:681
+msgid "repo version is 0, but v1-only extensions found:"
+msgstr ""
+
+#: setup.c:700
+#, c-format
+msgid "error opening '%s'"
+msgstr ""
+
+#: setup.c:702
+#, c-format
+msgid "too large to be a .git file: '%s'"
+msgstr ""
+
+#: setup.c:704
+#, c-format
+msgid "error reading %s"
+msgstr ""
+
+#: setup.c:706
+#, c-format
+msgid "invalid gitfile format: %s"
+msgstr ""
+
+#: setup.c:708
+#, c-format
+msgid "no path in gitfile: %s"
+msgstr ""
+
+#: setup.c:710
+#, c-format
+msgid "not a git repository: %s"
+msgstr ""
+
+#: setup.c:812
+#, c-format
+msgid "'$%s' too big"
+msgstr ""
+
+#: setup.c:826
+#, c-format
+msgid "not a git repository: '%s'"
+msgstr ""
+
+#: setup.c:855 setup.c:857 setup.c:888
+#, c-format
+msgid "cannot chdir to '%s'"
+msgstr ""
+
+#: setup.c:860 setup.c:916 setup.c:926 setup.c:965 setup.c:973
+msgid "cannot come back to cwd"
+msgstr ""
+
+#: setup.c:987
+#, c-format
+msgid "failed to stat '%*s%s%s'"
+msgstr ""
+
+#: setup.c:1225
+msgid "Unable to read current working directory"
+msgstr ""
+
+#: setup.c:1234 setup.c:1240
+#, c-format
+msgid "cannot change to '%s'"
+msgstr ""
+
+#: setup.c:1245
+#, c-format
+msgid "not a git repository (or any of the parent directories): %s"
+msgstr ""
+
+#: setup.c:1251
+#, 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:1362
+#, 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:1409
+msgid "open /dev/null or dup failed"
+msgstr ""
+
+#: setup.c:1424
+msgid "fork failed"
+msgstr ""
+
+#: setup.c:1429
+msgid "setsid failed"
+msgstr ""
+
+#. TRANSLATORS: IEC 80000-13:2008 gibibyte
+#: strbuf.c:848
+#, c-format
+msgid "%u.%2.2u GiB"
+msgstr ""
+
+#. TRANSLATORS: IEC 80000-13:2008 gibibyte/second
+#: strbuf.c:850
+#, c-format
+msgid "%u.%2.2u GiB/s"
+msgstr ""
+
+#. TRANSLATORS: IEC 80000-13:2008 mebibyte
+#: strbuf.c:858
+#, c-format
+msgid "%u.%2.2u MiB"
+msgstr ""
+
+#. TRANSLATORS: IEC 80000-13:2008 mebibyte/second
+#: strbuf.c:860
+#, c-format
+msgid "%u.%2.2u MiB/s"
+msgstr ""
+
+#. TRANSLATORS: IEC 80000-13:2008 kibibyte
+#: strbuf.c:867
+#, c-format
+msgid "%u.%2.2u KiB"
+msgstr ""
+
+#. TRANSLATORS: IEC 80000-13:2008 kibibyte/second
+#: strbuf.c:869
+#, c-format
+msgid "%u.%2.2u KiB/s"
+msgstr ""
+
+#. TRANSLATORS: IEC 80000-13:2008 byte
+#: strbuf.c:875
+#, c-format
+msgid "%u byte"
+msgid_plural "%u bytes"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: IEC 80000-13:2008 byte/second
+#: strbuf.c:877
+#, c-format
+msgid "%u byte/s"
+msgid_plural "%u bytes/s"
+msgstr[0] ""
+msgstr[1] ""
+
+#: strbuf.c:1166 wrapper.c:199 wrapper.c:369 builtin/am.c:719
+#: builtin/rebase.c:866
+#, c-format
+msgid "could not open '%s' for writing"
+msgstr ""
+
+#: strbuf.c:1175
+#, c-format
+msgid "could not edit '%s'"
+msgstr ""
+
+#: submodule-config.c:237
+#, c-format
+msgid "ignoring suspicious submodule name: %s"
+msgstr ""
+
+#: submodule-config.c:304
+msgid "negative values not allowed for submodule.fetchjobs"
+msgstr ""
+
+#: submodule-config.c:402
+#, c-format
+msgid "ignoring '%s' which may be interpreted as a command-line option: %s"
+msgstr ""
+
+#: submodule-config.c:499
+#, c-format
+msgid "invalid value for %s"
+msgstr ""
+
+#: submodule-config.c:766
+#, c-format
+msgid "Could not update .gitmodules entry %s"
+msgstr ""
+
+#: submodule.c:114 submodule.c:143
+msgid "Cannot change unmerged .gitmodules, resolve merge conflicts first"
+msgstr ""
+
+#: submodule.c:118 submodule.c:147
+#, c-format
+msgid "Could not find section in .gitmodules where path=%s"
+msgstr ""
+
+#: submodule.c:154
+#, c-format
+msgid "Could not remove .gitmodules entry for %s"
+msgstr ""
+
+#: submodule.c:165
+msgid "staging updated .gitmodules failed"
+msgstr ""
+
+#: submodule.c:327
+#, c-format
+msgid "in unpopulated submodule '%s'"
+msgstr ""
+
+#: submodule.c:358
+#, c-format
+msgid "Pathspec '%s' is in submodule '%.*s'"
+msgstr ""
+
+#: submodule.c:435
+#, c-format
+msgid "bad --ignore-submodules argument: %s"
+msgstr ""
+
+#: submodule.c:817
+#, c-format
+msgid ""
+"Submodule in commit %s at path: '%s' collides with a submodule named the "
+"same. Skipping it."
+msgstr ""
+
+#: submodule.c:920
+#, c-format
+msgid "submodule entry '%s' (%s) is a %s, not a commit"
+msgstr ""
+
+#: submodule.c:1005
+#, c-format
+msgid ""
+"Could not run 'git rev-list <commits> --not --remotes -n 1' command in "
+"submodule %s"
+msgstr ""
+
+#: submodule.c:1128
+#, c-format
+msgid "process for submodule '%s' failed"
+msgstr ""
+
+#: submodule.c:1157 builtin/branch.c:689 builtin/submodule--helper.c:2469
+msgid "Failed to resolve HEAD as a valid ref."
+msgstr ""
+
+#: submodule.c:1168
+#, c-format
+msgid "Pushing submodule '%s'\n"
+msgstr ""
+
+#: submodule.c:1171
+#, c-format
+msgid "Unable to push submodule '%s'\n"
+msgstr ""
+
+#: submodule.c:1463
+#, c-format
+msgid "Fetching submodule %s%s\n"
+msgstr ""
+
+#: submodule.c:1497
+#, c-format
+msgid "Could not access submodule '%s'\n"
+msgstr ""
+
+#: submodule.c:1652
+#, c-format
+msgid ""
+"Errors during submodule fetch:\n"
+"%s"
+msgstr ""
+
+#: submodule.c:1677
+#, c-format
+msgid "'%s' not recognized as a git repository"
+msgstr ""
+
+#: submodule.c:1694
+#, c-format
+msgid "Could not run 'git status --porcelain=2' in submodule %s"
+msgstr ""
+
+#: submodule.c:1735
+#, c-format
+msgid "'git status --porcelain=2' failed in submodule %s"
+msgstr ""
+
+#: submodule.c:1810
+#, c-format
+msgid "could not start 'git status' in submodule '%s'"
+msgstr ""
+
+#: submodule.c:1823
+#, c-format
+msgid "could not run 'git status' in submodule '%s'"
+msgstr ""
+
+#: submodule.c:1838
+#, c-format
+msgid "Could not unset core.worktree setting in submodule '%s'"
+msgstr ""
+
+#: submodule.c:1865 submodule.c:2175
+#, c-format
+msgid "could not recurse into submodule '%s'"
+msgstr ""
+
+#: submodule.c:1886
+msgid "could not reset submodule index"
+msgstr ""
+
+#: submodule.c:1928
+#, c-format
+msgid "submodule '%s' has dirty index"
+msgstr ""
+
+#: submodule.c:1980
+#, c-format
+msgid "Submodule '%s' could not be updated."
+msgstr ""
+
+#: submodule.c:2048
+#, c-format
+msgid "submodule git dir '%s' is inside git dir '%.*s'"
+msgstr ""
+
+#: submodule.c:2069
+#, c-format
+msgid ""
+"relocate_gitdir for submodule '%s' with more than one worktree not supported"
+msgstr ""
+
+#: submodule.c:2081 submodule.c:2140
+#, c-format
+msgid "could not lookup name for submodule '%s'"
+msgstr ""
+
+#: submodule.c:2085
+#, c-format
+msgid "refusing to move '%s' into an existing git dir"
+msgstr ""
+
+#: submodule.c:2092
+#, c-format
+msgid ""
+"Migrating git directory of '%s%s' from\n"
+"'%s' to\n"
+"'%s'\n"
+msgstr ""
+
+#: submodule.c:2220
+msgid "could not start ls-files in .."
+msgstr ""
+
+#: submodule.c:2260
+#, c-format
+msgid "ls-tree returned unexpected return code %d"
+msgstr ""
+
+#: trailer.c:236
+#, c-format
+msgid "running trailer command '%s' failed"
+msgstr ""
+
+#: trailer.c:483 trailer.c:488 trailer.c:493 trailer.c:547 trailer.c:551
+#: trailer.c:555
+#, c-format
+msgid "unknown value '%s' for key '%s'"
+msgstr ""
+
+#: trailer.c:537 trailer.c:542 builtin/remote.c:299 builtin/remote.c:324
+#, c-format
+msgid "more than one %s"
+msgstr ""
+
+#: trailer.c:728
+#, c-format
+msgid "empty trailer token in trailer '%.*s'"
+msgstr ""
+
+#: trailer.c:748
+#, c-format
+msgid "could not read input file '%s'"
+msgstr ""
+
+#: trailer.c:751 builtin/mktag.c:91
+msgid "could not read from stdin"
+msgstr ""
+
+#: trailer.c:1009 wrapper.c:676
+#, c-format
+msgid "could not stat %s"
+msgstr ""
+
+#: trailer.c:1011
+#, c-format
+msgid "file %s is not a regular file"
+msgstr ""
+
+#: trailer.c:1013
+#, c-format
+msgid "file %s is not writable by user"
+msgstr ""
+
+#: trailer.c:1025
+msgid "could not open temporary file"
+msgstr ""
+
+#: trailer.c:1065
+#, c-format
+msgid "could not rename temporary file to %s"
+msgstr ""
+
+#: transport-helper.c:62 transport-helper.c:91
+msgid "full write to remote helper failed"
+msgstr ""
+
+#: transport-helper.c:145
+#, c-format
+msgid "unable to find remote helper for '%s'"
+msgstr ""
+
+#: transport-helper.c:161 transport-helper.c:575
+msgid "can't dup helper output fd"
+msgstr ""
+
+#: transport-helper.c:214
+#, c-format
+msgid ""
+"unknown mandatory capability %s; this remote helper probably needs newer "
+"version of Git"
+msgstr ""
+
+#: transport-helper.c:220
+msgid "this remote helper should implement refspec capability"
+msgstr ""
+
+#: transport-helper.c:287 transport-helper.c:429
+#, c-format
+msgid "%s unexpectedly said: '%s'"
+msgstr ""
+
+#: transport-helper.c:417
+#, c-format
+msgid "%s also locked %s"
+msgstr ""
+
+#: transport-helper.c:497
+msgid "couldn't run fast-import"
+msgstr ""
+
+#: transport-helper.c:520
+msgid "error while running fast-import"
+msgstr ""
+
+#: transport-helper.c:549 transport-helper.c:1237
+#, c-format
+msgid "could not read ref %s"
+msgstr ""
+
+#: transport-helper.c:594
+#, c-format
+msgid "unknown response to connect: %s"
+msgstr ""
+
+#: transport-helper.c:616
+msgid "setting remote service path not supported by protocol"
+msgstr ""
+
+#: transport-helper.c:618
+msgid "invalid remote service path"
+msgstr ""
+
+#: transport-helper.c:661 transport.c:1447
+msgid "operation not supported by protocol"
+msgstr ""
+
+#: transport-helper.c:664
+#, c-format
+msgid "can't connect to subservice %s"
+msgstr ""
+
+#: transport-helper.c:745
+msgid "'option' without a matching 'ok/error' directive"
+msgstr ""
+
+#: transport-helper.c:788
+#, c-format
+msgid "expected ok/error, helper said '%s'"
+msgstr ""
+
+#: transport-helper.c:845
+#, c-format
+msgid "helper reported unexpected status of %s"
+msgstr ""
+
+#: transport-helper.c:928
+#, c-format
+msgid "helper %s does not support dry-run"
+msgstr ""
+
+#: transport-helper.c:931
+#, c-format
+msgid "helper %s does not support --signed"
+msgstr ""
+
+#: transport-helper.c:934
+#, c-format
+msgid "helper %s does not support --signed=if-asked"
+msgstr ""
+
+#: transport-helper.c:939
+#, c-format
+msgid "helper %s does not support --atomic"
+msgstr ""
+
+#: transport-helper.c:943
+#, c-format
+msgid "helper %s does not support --%s"
+msgstr ""
+
+#: transport-helper.c:950
+#, c-format
+msgid "helper %s does not support 'push-option'"
+msgstr ""
+
+#: transport-helper.c:1050
+msgid "remote-helper doesn't support push; refspec needed"
+msgstr ""
+
+#: transport-helper.c:1055
+#, c-format
+msgid "helper %s does not support 'force'"
+msgstr ""
+
+#: transport-helper.c:1102
+msgid "couldn't run fast-export"
+msgstr ""
+
+#: transport-helper.c:1107
+msgid "error while running fast-export"
+msgstr ""
+
+#: transport-helper.c:1132
+#, c-format
+msgid ""
+"No refs in common and none specified; doing nothing.\n"
+"Perhaps you should specify a branch.\n"
+msgstr ""
+
+#: transport-helper.c:1214
+#, c-format
+msgid "unsupported object format '%s'"
+msgstr ""
+
+#: transport-helper.c:1223
+#, c-format
+msgid "malformed response in ref list: %s"
+msgstr ""
+
+#: transport-helper.c:1375
+#, c-format
+msgid "read(%s) failed"
+msgstr ""
+
+#: transport-helper.c:1402
+#, c-format
+msgid "write(%s) failed"
+msgstr ""
+
+#: transport-helper.c:1451
+#, c-format
+msgid "%s thread failed"
+msgstr ""
+
+#: transport-helper.c:1455
+#, c-format
+msgid "%s thread failed to join: %s"
+msgstr ""
+
+#: transport-helper.c:1474 transport-helper.c:1478
+#, c-format
+msgid "can't start thread for copying data: %s"
+msgstr ""
+
+#: transport-helper.c:1515
+#, c-format
+msgid "%s process failed to wait"
+msgstr ""
+
+#: transport-helper.c:1519
+#, c-format
+msgid "%s process failed"
+msgstr ""
+
+#: transport-helper.c:1537 transport-helper.c:1546
+msgid "can't start thread for copying data"
+msgstr ""
+
+#: transport.c:116
+#, c-format
+msgid "Would set upstream of '%s' to '%s' of '%s'\n"
+msgstr ""
+
+#: transport.c:145
+#, c-format
+msgid "could not read bundle '%s'"
+msgstr ""
+
+#: transport.c:220
+#, c-format
+msgid "transport: invalid depth option '%s'"
+msgstr ""
+
+#: transport.c:269
+msgid "see protocol.version in 'git help config' for more details"
+msgstr ""
+
+#: transport.c:270
+msgid "server options require protocol version 2 or later"
+msgstr ""
+
+#: transport.c:727
+msgid "could not parse transport.color.* config"
+msgstr ""
+
+#: transport.c:802
+msgid "support for protocol v2 not implemented yet"
+msgstr ""
+
+#: transport.c:936
+#, c-format
+msgid "unknown value for config '%s': %s"
+msgstr ""
+
+#: transport.c:1002
+#, c-format
+msgid "transport '%s' not allowed"
+msgstr ""
+
+#: transport.c:1055
+msgid "git-over-rsync is no longer supported"
+msgstr ""
+
+#: transport.c:1157
+#, c-format
+msgid ""
+"The following submodule paths contain changes that can\n"
+"not be found on any remote:\n"
+msgstr ""
+
+#: transport.c:1161
+#, c-format
+msgid ""
+"\n"
+"Please try\n"
+"\n"
+"\tgit push --recurse-submodules=on-demand\n"
+"\n"
+"or cd to the path and use\n"
+"\n"
+"\tgit push\n"
+"\n"
+"to push them to a remote.\n"
+"\n"
+msgstr ""
+
+#: transport.c:1169
+msgid "Aborting."
+msgstr ""
+
+#: transport.c:1316
+msgid "failed to push all needed submodules"
+msgstr ""
+
+#: tree-walk.c:33
+msgid "too-short tree object"
+msgstr ""
+
+#: tree-walk.c:39
+msgid "malformed mode in tree entry"
+msgstr ""
+
+#: tree-walk.c:43
+msgid "empty filename in tree entry"
+msgstr ""
+
+#: tree-walk.c:118
+msgid "too-short tree file"
+msgstr ""
+
+#: unpack-trees.c:113
+#, 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:115
+#, c-format
+msgid ""
+"Your local changes to the following files would be overwritten by checkout:\n"
+"%%s"
+msgstr ""
+
+#: unpack-trees.c:118
+#, 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:120
+#, c-format
+msgid ""
+"Your local changes to the following files would be overwritten by merge:\n"
+"%%s"
+msgstr ""
+
+#: unpack-trees.c:123
+#, 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:125
+#, c-format
+msgid ""
+"Your local changes to the following files would be overwritten by %s:\n"
+"%%s"
+msgstr ""
+
+#: unpack-trees.c:130
+#, c-format
+msgid ""
+"Updating the following directories would lose untracked files in them:\n"
+"%s"
+msgstr ""
+
+#: unpack-trees.c:134
+#, c-format
+msgid ""
+"The following untracked working tree files would be removed by checkout:\n"
+"%%sPlease move or remove them before you switch branches."
+msgstr ""
+
+#: unpack-trees.c:136
+#, c-format
+msgid ""
+"The following untracked working tree files would be removed by checkout:\n"
+"%%s"
+msgstr ""
+
+#: unpack-trees.c:139
+#, 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:141
+#, c-format
+msgid ""
+"The following untracked working tree files would be removed by merge:\n"
+"%%s"
+msgstr ""
+
+#: unpack-trees.c:144
+#, 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:146
+#, c-format
+msgid ""
+"The following untracked working tree files would be removed by %s:\n"
+"%%s"
+msgstr ""
+
+#: unpack-trees.c:152
+#, c-format
+msgid ""
+"The following untracked working tree files would be overwritten by "
+"checkout:\n"
+"%%sPlease move or remove them before you switch branches."
+msgstr ""
+
+#: unpack-trees.c:154
+#, c-format
+msgid ""
+"The following untracked working tree files would be overwritten by "
+"checkout:\n"
+"%%s"
+msgstr ""
+
+#: unpack-trees.c:157
+#, 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:159
+#, c-format
+msgid ""
+"The following untracked working tree files would be overwritten by merge:\n"
+"%%s"
+msgstr ""
+
+#: unpack-trees.c:162
+#, 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:164
+#, c-format
+msgid ""
+"The following untracked working tree files would be overwritten by %s:\n"
+"%%s"
+msgstr ""
+
+#: unpack-trees.c:172
+#, c-format
+msgid "Entry '%s' overlaps with '%s'.  Cannot bind."
+msgstr ""
+
+#: unpack-trees.c:175
+#, c-format
+msgid ""
+"Cannot update submodule:\n"
+"%s"
+msgstr ""
+
+#: unpack-trees.c:178
+#, c-format
+msgid ""
+"The following paths are not up to date and were left despite sparse "
+"patterns:\n"
+"%s"
+msgstr ""
+
+#: unpack-trees.c:180
+#, c-format
+msgid ""
+"The following paths are unmerged and were left despite sparse patterns:\n"
+"%s"
+msgstr ""
+
+#: unpack-trees.c:182
+#, c-format
+msgid ""
+"The following paths were already present and thus not updated despite sparse "
+"patterns:\n"
+"%s"
+msgstr ""
+
+#: unpack-trees.c:262
+#, c-format
+msgid "Aborting\n"
+msgstr ""
+
+#: unpack-trees.c:289
+#, c-format
+msgid ""
+"After fixing the above paths, you may want to run `git sparse-checkout "
+"reapply`.\n"
+msgstr ""
+
+#: unpack-trees.c:350
+msgid "Updating files"
+msgstr ""
+
+#: unpack-trees.c:382
+msgid ""
+"the following paths have collided (e.g. case-sensitive paths\n"
+"on a case-insensitive filesystem) and only one from the same\n"
+"colliding group is in the working tree:\n"
+msgstr ""
+
+#: unpack-trees.c:1498
+msgid "Updating index flags"
+msgstr ""
+
+#: upload-pack.c:1543
+msgid "expected flush after fetch arguments"
+msgstr ""
+
+#: urlmatch.c:163
+msgid "invalid URL scheme name or missing '://' suffix"
+msgstr ""
+
+#: urlmatch.c:187 urlmatch.c:346 urlmatch.c:405
+#, c-format
+msgid "invalid %XX escape sequence"
+msgstr ""
+
+#: urlmatch.c:215
+msgid "missing host and scheme is not 'file:'"
+msgstr ""
+
+#: urlmatch.c:232
+msgid "a 'file:' URL may not have a port number"
+msgstr ""
+
+#: urlmatch.c:247
+msgid "invalid characters in host name"
+msgstr ""
+
+#: urlmatch.c:292 urlmatch.c:303
+msgid "invalid port number"
+msgstr ""
+
+#: urlmatch.c:371
+msgid "invalid '..' path segment"
+msgstr ""
+
+#: walker.c:170
+msgid "Fetching objects"
+msgstr ""
+
+#: worktree.c:238 builtin/am.c:2103
+#, c-format
+msgid "failed to read '%s'"
+msgstr ""
+
+#: worktree.c:304
+#, c-format
+msgid "'%s' at main working tree is not the repository directory"
+msgstr ""
+
+#: worktree.c:315
+#, c-format
+msgid "'%s' file does not contain absolute path to the working tree location"
+msgstr ""
+
+#: worktree.c:327
+#, c-format
+msgid "'%s' does not exist"
+msgstr ""
+
+#: worktree.c:333
+#, c-format
+msgid "'%s' is not a .git file, error code %d"
+msgstr ""
+
+#: worktree.c:342
+#, c-format
+msgid "'%s' does not point back to '%s'"
+msgstr ""
+
+#: worktree.c:608
+msgid "not a directory"
+msgstr ""
+
+#: worktree.c:617
+msgid ".git is not a file"
+msgstr ""
+
+#: worktree.c:619
+msgid ".git file broken"
+msgstr ""
+
+#: worktree.c:621
+msgid ".git file incorrect"
+msgstr ""
+
+#: worktree.c:727
+msgid "not a valid path"
+msgstr ""
+
+#: worktree.c:733
+msgid "unable to locate repository; .git is not a file"
+msgstr ""
+
+#: worktree.c:737
+msgid "unable to locate repository; .git file does not reference a repository"
+msgstr ""
+
+#: worktree.c:741
+msgid "unable to locate repository; .git file broken"
+msgstr ""
+
+#: worktree.c:747
+msgid "gitdir unreadable"
+msgstr ""
+
+#: worktree.c:751
+msgid "gitdir incorrect"
+msgstr ""
+
+#: worktree.c:776
+msgid "not a valid directory"
+msgstr ""
+
+#: worktree.c:782
+msgid "gitdir file does not exist"
+msgstr ""
+
+#: worktree.c:787 worktree.c:796
+#, c-format
+msgid "unable to read gitdir file (%s)"
+msgstr ""
+
+#: worktree.c:806
+#, c-format
+msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
+msgstr ""
+
+#: worktree.c:814
+msgid "invalid gitdir file"
+msgstr ""
+
+#: worktree.c:822
+msgid "gitdir file points to non-existent location"
+msgstr ""
+
+#: wrapper.c:197 wrapper.c:367
+#, c-format
+msgid "could not open '%s' for reading and writing"
+msgstr ""
+
+#: wrapper.c:398 wrapper.c:599
+#, c-format
+msgid "unable to access '%s'"
+msgstr ""
+
+#: wrapper.c:607
+msgid "unable to get current working directory"
+msgstr ""
+
+#: wt-status.c:158
+msgid "Unmerged paths:"
+msgstr "Jalur yang tak tergabung:"
+
+#: wt-status.c:187 wt-status.c:219
+msgid "  (use \"git restore --staged <file>...\" to unstage)"
+msgstr "  (gunakan \"git restore --staged <berkas>...\" untuk menggelar balik)"
+
+#: wt-status.c:190 wt-status.c:222
+#, c-format
+msgid "  (use \"git restore --source=%s --staged <file>...\" to unstage)"
+msgstr ""
+"  (gunakan \"git restore --source=%s --staged <berkas>..\" untuk menggelar "
+"balik)"
+
+#: wt-status.c:193 wt-status.c:225
+msgid "  (use \"git rm --cached <file>...\" to unstage)"
+msgstr "  (gunakan \"git rm --cached <berkas>...\" untuk menggelar balik)"
+
+#: wt-status.c:197
+msgid "  (use \"git add <file>...\" to mark resolution)"
+msgstr "  (gunakan \"git add <berkas>...\" untuk menandai penyelesaian)"
+
+#: wt-status.c:199 wt-status.c:203
+msgid "  (use \"git add/rm <file>...\" as appropriate to mark resolution)"
+msgstr ""
+"  (gunakan \"git add.rm <berkas>...\" sebagaimana mestinya untuk menandai "
+"penyelesaian)"
+
+#: wt-status.c:201
+msgid "  (use \"git rm <file>...\" to mark resolution)"
+msgstr "  (gunakan \"git rm <berkas>\" untuk menandai penyelesaian)"
+
+#: wt-status.c:211 wt-status.c:1072
+msgid "Changes to be committed:"
+msgstr "Perubahan yang akan dikomit:"
+
+#: wt-status.c:234 wt-status.c:1081
+msgid "Changes not staged for commit:"
+msgstr "Perubahan yang tidak digelar untuk komit:"
+
+#: wt-status.c:238
+msgid "  (use \"git add <file>...\" to update what will be committed)"
+msgstr ""
+"  (gunakan \"git add <berkas>...\" untuk memperbarui apa yang akan dikomit)"
+
+#: wt-status.c:240
+msgid "  (use \"git add/rm <file>...\" to update what will be committed)"
+msgstr ""
+"  (gunakan \"git add/rm <berkas>...\" untuk memperbarui apa yang akan "
+"dikomit)"
+
+#: wt-status.c:241
+msgid ""
+"  (use \"git restore <file>...\" to discard changes in working directory)"
+msgstr ""
+"  (gunakan \"git restore <berkas>...\" untuk membuang perubahan di direktori "
+"kerja)"
+
+#: wt-status.c:243
+msgid "  (commit or discard the untracked or modified content in submodules)"
+msgstr ""
+"  (komit atau buang konten yang tak dilacak atau diubah dalam submodul)"
+
+#: wt-status.c:254
+#, c-format
+msgid "  (use \"git %s <file>...\" to include in what will be committed)"
+msgstr "  (use \"git %s <berkas>...\" untuk menyertakan apa yang akan dikomit)"
+
+#: wt-status.c:266
+msgid "both deleted:"
+msgstr "kedua-duanya dihapus:"
+
+#: wt-status.c:268
+msgid "added by us:"
+msgstr "ditambahkan oleh kami:"
+
+#: wt-status.c:270
+msgid "deleted by them:"
+msgstr "dihapus oleh mereka:"
+
+#: wt-status.c:272
+msgid "added by them:"
+msgstr "ditambahkan oleh mereka:"
+
+#: wt-status.c:274
+msgid "deleted by us:"
+msgstr "dihapus oleh kami:"
+
+#: wt-status.c:276
+msgid "both added:"
+msgstr "kedua-duanya ditambah:"
+
+#: wt-status.c:278
+msgid "both modified:"
+msgstr "kedua-duanya diubah:"
+
+#: wt-status.c:288
+msgid "new file:"
+msgstr "berkas baru:"
+
+#: wt-status.c:290
+msgid "copied:"
+msgstr "tersalin:"
+
+#: wt-status.c:292
+msgid "deleted:"
+msgstr "terhapus:"
+
+#: wt-status.c:294
+msgid "modified:"
+msgstr "terubah:"
+
+#: wt-status.c:296
+msgid "renamed:"
+msgstr "terganti nama:"
+
+#: wt-status.c:298
+msgid "typechange:"
+msgstr "tipe perubahan:"
+
+#: wt-status.c:300
+msgid "unknown:"
+msgstr "tidak diketahui:"
+
+#: wt-status.c:302
+msgid "unmerged:"
+msgstr "tidak digabung:"
+
+#: wt-status.c:382
+msgid "new commits, "
+msgstr "komit baru, "
+
+#: wt-status.c:384
+msgid "modified content, "
+msgstr "konten yang dimodifikasi, "
+
+#: wt-status.c:386
+msgid "untracked content, "
+msgstr "konten yang tak dilacak, "
+
+#: wt-status.c:905
+#, c-format
+msgid "Your stash currently has %d entry"
+msgid_plural "Your stash currently has %d entries"
+msgstr[0] "Simpanan Anda saat ini ada %d entri"
+msgstr[1] "Simpanan Anda saat ini ada %d entri"
+
+#: wt-status.c:936
+msgid "Submodules changed but not updated:"
+msgstr "Submodul berubah tapi tak diperbarui:"
+
+#: wt-status.c:938
+msgid "Submodule changes to be committed:"
+msgstr "Perubahan submodul yang akan dikomit:"
+
+#: wt-status.c:1020
+msgid ""
+"Do not modify or remove the line above.\n"
+"Everything below it will be ignored."
+msgstr ""
+"Jangan ubah atau hapus baris diatas.\n"
+"Semua dibawahnya akan diabaikan."
+
+#: wt-status.c:1112
+#, c-format
+msgid ""
+"\n"
+"It took %.2f seconds to compute the branch ahead/behind values.\n"
+"You can use '--no-ahead-behind' to avoid this.\n"
+msgstr ""
+"\n"
+"Butuh %.2f detik untuk menghitung cabang di depan/di belakang nilai.\n"
+"Anda bisa gunakan '--no-ahead-behind' untuk menghindari hal tersebut.\n"
+
+#: wt-status.c:1142
+msgid "You have unmerged paths."
+msgstr "Anda punya jalur yang tak tergabung."
+
+#: wt-status.c:1145
+msgid "  (fix conflicts and run \"git commit\")"
+msgstr "  (selesaikan konflik dan jalankan \"git commit\")"
+
+#: wt-status.c:1147
+msgid "  (use \"git merge --abort\" to abort the merge)"
+msgstr "  (gunakan \"git merge --abort\" untuk membatalkan penggabungan)"
+
+#: wt-status.c:1151
+msgid "All conflicts fixed but you are still merging."
+msgstr "Semua konflik sudah selesai tapi Anda masih menggabungkan."
+
+#: wt-status.c:1154
+msgid "  (use \"git commit\" to conclude merge)"
+msgstr "  (gunakan \"git commit\" untuk mengakhiri penggabungan)"
+
+#: wt-status.c:1163
+msgid "You are in the middle of an am session."
+msgstr "Anda berada ditengah-tengah sesi am."
+
+#: wt-status.c:1166
+msgid "The current patch is empty."
+msgstr "Jalur saat ini kosong"
+
+#: wt-status.c:1170
+msgid "  (fix conflicts and then run \"git am --continue\")"
+msgstr "  (selesaikan konflik lalu jalankan \"git am --continue\")"
+
+#: wt-status.c:1172
+msgid "  (use \"git am --skip\" to skip this patch)"
+msgstr "  (gunakan \"git am --skip\" untuk lewati tambalan ini)"
+
+#: wt-status.c:1174
+msgid "  (use \"git am --abort\" to restore the original branch)"
+msgstr "  (gunakan \"git am --abort\" untuk mengembalikan cabang asal)"
+
+#: wt-status.c:1307
+msgid "git-rebase-todo is missing."
+msgstr "git-rebase-todo hilang."
+
+#: wt-status.c:1309
+msgid "No commands done."
+msgstr "Tidak ada perintah selesai."
+
+#: wt-status.c:1312
+#, c-format
+msgid "Last command done (%d command done):"
+msgid_plural "Last commands done (%d commands done):"
+msgstr[0] "Perintah yang selesai (%d perintah):"
+msgstr[1] "Perintah yang selesai (%d perintah):"
+
+#: wt-status.c:1323
+#, c-format
+msgid "  (see more in file %s)"
+msgstr "  (lihat lebih lanjut di berkas %s)"
+
+#: wt-status.c:1328
+msgid "No commands remaining."
+msgstr "Tidak ada perintah yang tersisa."
+
+#: wt-status.c:1331
+#, c-format
+msgid "Next command to do (%d remaining command):"
+msgid_plural "Next commands to do (%d remaining commands):"
+msgstr[0] "Perintah berikutnya (%d perintah tersisa):"
+msgstr[1] "Perintah berikutnya (%d perintah tersisa):"
+
+#: wt-status.c:1339
+msgid "  (use \"git rebase --edit-todo\" to view and edit)"
+msgstr "  (gunakan \"git rebase --edit-todo\" untuk lihat dan sunting)"
+
+#: wt-status.c:1351
+#, c-format
+msgid "You are currently rebasing branch '%s' on '%s'."
+msgstr "Anda sedang mendasarkan ulang cabang '%s' pada '%s'."
+
+#: wt-status.c:1356
+msgid "You are currently rebasing."
+msgstr "Anda sedang mendasarkan ulang."
+
+#: wt-status.c:1369
+msgid "  (fix conflicts and then run \"git rebase --continue\")"
+msgstr "  (selesaikan konflik lalu jalankan \"git rebase --continue\")"
+
+#: wt-status.c:1371
+msgid "  (use \"git rebase --skip\" to skip this patch)"
+msgstr "  (gunakan \"git rebase --skip\" untuk lewati tambalan ini)"
+
+#: wt-status.c:1373
+msgid "  (use \"git rebase --abort\" to check out the original branch)"
+msgstr "  (gunakan \"git rebase --abort\" untuk check out cabang asal)"
+
+#: wt-status.c:1380
+msgid "  (all conflicts fixed: run \"git rebase --continue\")"
+msgstr "  (semua konflik sudah selesai: jalankan \"git rebase --continue\")"
+
+#: wt-status.c:1384
+#, c-format
+msgid ""
+"You are currently splitting a commit while rebasing branch '%s' on '%s'."
+msgstr ""
+"Anda sedang membelah komit saat mendasarkan ulang cabang '%s' pada '%s'."
+
+#: wt-status.c:1389
+msgid "You are currently splitting a commit during a rebase."
+msgstr "Anda sedang membelah komit saat mendasarkan ulang."
+
+#: wt-status.c:1392
+msgid "  (Once your working directory is clean, run \"git rebase --continue\")"
+msgstr ""
+"  (Setelah direktori kerja Anda bersih, jalankan \"git rebase --continue\")"
+
+#: wt-status.c:1396
+#, c-format
+msgid "You are currently editing a commit while rebasing branch '%s' on '%s'."
+msgstr ""
+"Anda sedang menyunting komit saat mendasarkan ulang cabang '%s' pada '%s'."
+
+#: wt-status.c:1401
+msgid "You are currently editing a commit during a rebase."
+msgstr "Anda sedang menyunting komit saat mendasarkan ulang."
+
+#: wt-status.c:1404
+msgid "  (use \"git commit --amend\" to amend the current commit)"
+msgstr "  (gunakan \"git commit --amend\" untuk mengubah komit saat ini)"
+
+#: wt-status.c:1406
+msgid ""
+"  (use \"git rebase --continue\" once you are satisfied with your changes)"
+msgstr ""
+"  (gunakan \"git rebase --continue\" begitu Anda puas dengan perubahan Anda)"
+
+#: wt-status.c:1417
+msgid "Cherry-pick currently in progress."
+msgstr "Petik ceri sedang berjalan."
+
+#: wt-status.c:1420
+#, c-format
+msgid "You are currently cherry-picking commit %s."
+msgstr "Anda sedang memetik ceri komit %s."
+
+#: wt-status.c:1427
+msgid "  (fix conflicts and run \"git cherry-pick --continue\")"
+msgstr "  (selesaikan konflik dan jalankan \"git cherry-pick --continue\")"
+
+#: wt-status.c:1430
+msgid "  (run \"git cherry-pick --continue\" to continue)"
+msgstr "  (jalankan \"git cherry-pick --continue\" untuk melanjutkan)"
+
+#: wt-status.c:1433
+msgid "  (all conflicts fixed: run \"git cherry-pick --continue\")"
+msgstr ""
+"  (semua konflik sudah selesai: jalankan \"git cherry-pick --continue\")"
+
+#: wt-status.c:1435
+msgid "  (use \"git cherry-pick --skip\" to skip this patch)"
+msgstr "  (gunakan \"git cherry-pick --skip\" untuk lewati tambalan ini)"
+
+#: wt-status.c:1437
+msgid "  (use \"git cherry-pick --abort\" to cancel the cherry-pick operation)"
+msgstr ""
+"  (gunakan \"git cherry-pick --abort\" untuk membatalkan operasi petik ceri)"
+
+#: wt-status.c:1447
+msgid "Revert currently in progress."
+msgstr "Pengembalian sedang berjalang."
+
+#: wt-status.c:1450
+#, c-format
+msgid "You are currently reverting commit %s."
+msgstr "Anda sedang mengembalikan komit %s."
+
+#: wt-status.c:1456
+msgid "  (fix conflicts and run \"git revert --continue\")"
+msgstr "  (selesaikan konflik dan jalankan \"git revert --continue\")"
+
+#: wt-status.c:1459
+msgid "  (run \"git revert --continue\" to continue)"
+msgstr "  (jalankan \"git revert --continue\" untuk melanjutkan)"
+
+#: wt-status.c:1462
+msgid "  (all conflicts fixed: run \"git revert --continue\")"
+msgstr "  (semua konflik sudah selesai: jalankan \"git revert --continue\")"
+
+#: wt-status.c:1464
+msgid "  (use \"git revert --skip\" to skip this patch)"
+msgstr "  (gunakan \"git revert --skip\" untuk lewati tambalan ini)"
+
+#: wt-status.c:1466
+msgid "  (use \"git revert --abort\" to cancel the revert operation)"
+msgstr ""
+"  (gunakan \"git revert --abort\" untuk membatalkan operasi pengembalian)"
+
+#: wt-status.c:1476
+#, c-format
+msgid "You are currently bisecting, started from branch '%s'."
+msgstr "Anda sedang membagi dua, dimulai dari cabang '%s'."
+
+#: wt-status.c:1480
+msgid "You are currently bisecting."
+msgstr "Anda sedang membagi dua."
+
+#: wt-status.c:1483
+msgid "  (use \"git bisect reset\" to get back to the original branch)"
+msgstr "  (gunakan \"git bisect reset\" untuk kembali ke cabang asal)"
+
+#: wt-status.c:1494
+#, c-format
+msgid "You are in a sparse checkout with %d%% of tracked files present."
+msgstr "Anda berada dalam checkout tipis dengan %d%% berkas terlacak ada."
+
+#: wt-status.c:1733
+msgid "On branch "
+msgstr "Pada cabang "
+
+#: wt-status.c:1740
+msgid "interactive rebase in progress; onto "
+msgstr "sedang mendasarkan ulang interaktif; ke "
+
+#: wt-status.c:1742
+msgid "rebase in progress; onto "
+msgstr "sedang mendasarkan ulang; ke "
+
+#: wt-status.c:1747
+msgid "HEAD detached at "
+msgstr ""
+
+#: wt-status.c:1749
+msgid "HEAD detached from "
+msgstr ""
+
+#: wt-status.c:1752
+msgid "Not currently on any branch."
+msgstr "Tidak sedang berada pada cabang apapun."
+
+#: wt-status.c:1769
+msgid "Initial commit"
+msgstr "Komit awal"
+
+#: wt-status.c:1770
+msgid "No commits yet"
+msgstr "Tidak ada komit"
+
+#: wt-status.c:1784
+msgid "Untracked files"
+msgstr "Berkas tak terlacak"
+
+#: wt-status.c:1786
+msgid "Ignored files"
+msgstr "Berkas yang diabaikan"
+
+#: wt-status.c:1790
+#, c-format
+msgid ""
+"It took %.2f seconds to enumerate untracked files. 'status -uno'\n"
+"may speed it up, but you have to be careful not to forget to add\n"
+"new files yourself (see 'git help status')."
+msgstr ""
+"Butuh %.2f detik untuk menghitung berkas tak terlacak. 'status -uno'\n"
+"mungkin bisa mempercepat, tapi Anda harus berhati-hati jangan sampai lupa\n"
+"untuk tambahkan berkas baru sendiri (lihat 'git help status')."
+
+#: wt-status.c:1796
+#, c-format
+msgid "Untracked files not listed%s"
+msgstr "Berkas tak terlacak yang tak disebutkan%s"
+
+#: wt-status.c:1798
+msgid " (use -u option to show untracked files)"
+msgstr " (gunakan opsi -u untuk melihat berkas yang tak terlacak)"
+
+#: wt-status.c:1804
+msgid "No changes"
+msgstr "Tidak ada perubahan"
+
+#: wt-status.c:1809
+#, c-format
+msgid "no changes added to commit (use \"git add\" and/or \"git commit -a\")\n"
+msgstr ""
+"tidak ada perubahan untuk dikomit (gunakan \"git add\" dan/atau \"git commit "
+"-a\")\n"
+
+#: wt-status.c:1813
+#, c-format
+msgid "no changes added to commit\n"
+msgstr "tidak ada perubahan untuk dikomit\n"
+
+#: wt-status.c:1817
+#, c-format
+msgid ""
+"nothing added to commit but untracked files present (use \"git add\" to "
+"track)\n"
+msgstr ""
+"tidak ada perubahan untuk dikomit tapi berkas yang tak terlacak ada(gunakan "
+"\"git add\" untuk lacak)\n"
+
+#: wt-status.c:1821
+#, c-format
+msgid "nothing added to commit but untracked files present\n"
+msgstr "tidak ada perubahan untuk dikomit tapi berkas yang tak terlacak ada\n"
+
+#: wt-status.c:1825
+#, c-format
+msgid "nothing to commit (create/copy files and use \"git add\" to track)\n"
+msgstr ""
+"tidak ada yang dikomit (buat/salin berkas dan gunakan \"git add\" untuk "
+"lacak)\n"
+
+#: wt-status.c:1829 wt-status.c:1835
+#, c-format
+msgid "nothing to commit\n"
+msgstr "tidak ada yang dikomit\n"
+
+#: wt-status.c:1832
+#, c-format
+msgid "nothing to commit (use -u to show untracked files)\n"
+msgstr "tidak ada yang dikomit (gunakan -u untuk lihat berkas tak terlacak)\n"
+
+#: wt-status.c:1837
+#, c-format
+msgid "nothing to commit, working tree clean\n"
+msgstr "tidak ada yang dikomit, pohon kerja bersih\n"
+
+#: wt-status.c:1942
+msgid "No commits yet on "
+msgstr "Tidak ada komit apapun pada "
+
+#: wt-status.c:1946
+msgid "HEAD (no branch)"
+msgstr "HEAD (tanpa cabang)"
+
+#: wt-status.c:1977
+msgid "different"
+msgstr "berbeda"
+
+#: wt-status.c:1979 wt-status.c:1987
+msgid "behind "
+msgstr "di belakang "
+
+#: wt-status.c:1982 wt-status.c:1985
+msgid "ahead "
+msgstr "di depan "
+
+#. TRANSLATORS: the action is e.g. "pull with rebase"
+#: wt-status.c:2507
+#, c-format
+msgid "cannot %s: You have unstaged changes."
+msgstr "tidak dapat %s: Anda punya perubahan yang tidak digelar."
+
+#: wt-status.c:2513
+msgid "additionally, your index contains uncommitted changes."
+msgstr "juga indeks Anda berisi perubahan yang belum dikomit."
+
+#: wt-status.c:2515
+#, c-format
+msgid "cannot %s: Your index contains uncommitted changes."
+msgstr "tidak dapat %s: indeks Anda berisi perubahan yang belum dikomit."
+
+#: compat/precompose_utf8.c:58 builtin/clone.c:457
+#, c-format
+msgid "failed to unlink '%s'"
+msgstr ""
+
+#: builtin/add.c:26
+msgid "git add [<options>] [--] <pathspec>..."
+msgstr ""
+
+#: builtin/add.c:58
+msgid "cannot chmod %cx '%s'"
+msgstr ""
+
+#: builtin/add.c:96
+#, c-format
+msgid "unexpected diff status %c"
+msgstr ""
+
+#: builtin/add.c:101 builtin/commit.c:285
+msgid "updating files failed"
+msgstr ""
+
+#: builtin/add.c:111
+#, c-format
+msgid "remove '%s'\n"
+msgstr ""
+
+#: builtin/add.c:186
+msgid "Unstaged changes after refreshing the index:"
+msgstr ""
+
+#: builtin/add.c:280 builtin/rev-parse.c:991
+msgid "Could not read the index"
+msgstr ""
+
+#: builtin/add.c:291
+#, c-format
+msgid "Could not open '%s' for writing."
+msgstr ""
+
+#: builtin/add.c:295
+msgid "Could not write patch"
+msgstr ""
+
+#: builtin/add.c:298
+msgid "editing patch failed"
+msgstr ""
+
+#: builtin/add.c:301
+#, c-format
+msgid "Could not stat '%s'"
+msgstr ""
+
+#: builtin/add.c:303
+msgid "Empty patch. Aborted."
+msgstr ""
+
+#: builtin/add.c:308
+#, c-format
+msgid "Could not apply '%s'"
+msgstr ""
+
+#: builtin/add.c:316
+msgid "The following paths are ignored by one of your .gitignore files:\n"
+msgstr ""
+
+#: builtin/add.c:336 builtin/clean.c:904 builtin/fetch.c:169 builtin/mv.c:124
+#: builtin/prune-packed.c:14 builtin/pull.c:204 builtin/push.c:559
+#: builtin/remote.c:1427 builtin/rm.c:242 builtin/send-pack.c:190
+msgid "dry run"
+msgstr "latihan"
+
+#: builtin/add.c:339
+msgid "interactive picking"
+msgstr ""
+
+#: builtin/add.c:340 builtin/checkout.c:1546 builtin/reset.c:308
+msgid "select hunks interactively"
+msgstr ""
+
+#: builtin/add.c:341
+msgid "edit current diff and apply"
+msgstr ""
+
+#: builtin/add.c:342
+msgid "allow adding otherwise ignored files"
+msgstr ""
+
+#: builtin/add.c:343
+msgid "update tracked files"
+msgstr ""
+
+#: builtin/add.c:344
+msgid "renormalize EOL of tracked files (implies -u)"
+msgstr ""
+
+#: builtin/add.c:345
+msgid "record only the fact that the path will be added later"
+msgstr ""
+
+#: builtin/add.c:346
+msgid "add changes from all tracked and untracked files"
+msgstr ""
+
+#: builtin/add.c:349
+msgid "ignore paths removed in the working tree (same as --no-all)"
+msgstr ""
+
+#: builtin/add.c:351
+msgid "don't add, only refresh the index"
+msgstr ""
+
+#: builtin/add.c:352
+msgid "just skip files which cannot be added because of errors"
+msgstr ""
+
+#: builtin/add.c:353
+msgid "check if - even missing - files are ignored in dry run"
+msgstr ""
+
+#: builtin/add.c:355 builtin/update-index.c:1004
+msgid "override the executable bit of the listed files"
+msgstr ""
+
+#: builtin/add.c:357
+msgid "warn when adding an embedded repository"
+msgstr ""
+
+#: builtin/add.c:359
+msgid "backend for `git stash -p`"
+msgstr ""
+
+#: builtin/add.c:377
+#, c-format
+msgid ""
+"You've added another git repository inside your current repository.\n"
+"Clones of the outer repository will not contain the contents of\n"
+"the embedded repository and will not know how to obtain it.\n"
+"If you meant to add a submodule, use:\n"
+"\n"
+"\tgit submodule add <url> %s\n"
+"\n"
+"If you added this path by mistake, you can remove it from the\n"
+"index with:\n"
+"\n"
+"\tgit rm --cached %s\n"
+"\n"
+"See \"git help submodule\" for more information."
+msgstr ""
+
+#: builtin/add.c:405
+#, c-format
+msgid "adding embedded git repository: %s"
+msgstr ""
+
+#: builtin/add.c:424
+msgid ""
+"Use -f if you really want to add them.\n"
+"Turn this message off by running\n"
+"\"git config advice.addIgnoredFile false\""
+msgstr ""
+
+#: builtin/add.c:433
+msgid "adding files failed"
+msgstr ""
+
+#: builtin/add.c:461 builtin/commit.c:345
+msgid "--pathspec-from-file is incompatible with --interactive/--patch"
+msgstr ""
+
+#: builtin/add.c:478
+msgid "--pathspec-from-file is incompatible with --edit"
+msgstr ""
+
+#: builtin/add.c:490
+msgid "-A and -u are mutually incompatible"
+msgstr ""
+
+#: builtin/add.c:493
+msgid "Option --ignore-missing can only be used together with --dry-run"
+msgstr ""
+
+#: builtin/add.c:497
+#, c-format
+msgid "--chmod param '%s' must be either -x or +x"
+msgstr ""
+
+#: builtin/add.c:515 builtin/checkout.c:1714 builtin/commit.c:351
+#: builtin/reset.c:328 builtin/rm.c:272 builtin/stash.c:1569
+msgid "--pathspec-from-file is incompatible with pathspec arguments"
+msgstr ""
+
+#: builtin/add.c:522 builtin/checkout.c:1726 builtin/commit.c:357
+#: builtin/reset.c:334 builtin/rm.c:278 builtin/stash.c:1575
+msgid "--pathspec-file-nul requires --pathspec-from-file"
+msgstr ""
+
+#: builtin/add.c:526
+#, c-format
+msgid "Nothing specified, nothing added.\n"
+msgstr ""
+
+#: builtin/add.c:528
+msgid ""
+"Maybe you wanted to say 'git add .'?\n"
+"Turn this message off by running\n"
+"\"git config advice.addEmptyPathspec false\""
+msgstr ""
+
+#: builtin/am.c:352
+msgid "could not parse author script"
+msgstr ""
+
+#: builtin/am.c:436
+#, c-format
+msgid "'%s' was deleted by the applypatch-msg hook"
+msgstr ""
+
+#: builtin/am.c:478
+#, c-format
+msgid "Malformed input line: '%s'."
+msgstr ""
+
+#: builtin/am.c:516
+#, c-format
+msgid "Failed to copy notes from '%s' to '%s'"
+msgstr ""
+
+#: builtin/am.c:542
+msgid "fseek failed"
+msgstr ""
+
+#: builtin/am.c:730
+#, c-format
+msgid "could not parse patch '%s'"
+msgstr ""
+
+#: builtin/am.c:795
+msgid "Only one StGIT patch series can be applied at once"
+msgstr ""
+
+#: builtin/am.c:843
+msgid "invalid timestamp"
+msgstr ""
+
+#: builtin/am.c:848 builtin/am.c:860
+msgid "invalid Date line"
+msgstr ""
+
+#: builtin/am.c:855
+msgid "invalid timezone offset"
+msgstr ""
+
+#: builtin/am.c:948
+msgid "Patch format detection failed."
+msgstr ""
+
+#: builtin/am.c:953 builtin/clone.c:410
+#, c-format
+msgid "failed to create directory '%s'"
+msgstr ""
+
+#: builtin/am.c:958
+msgid "Failed to split patches."
+msgstr ""
+
+#: builtin/am.c:1089
+#, c-format
+msgid "When you have resolved this problem, run \"%s --continue\"."
+msgstr ""
+
+#: builtin/am.c:1090
+#, c-format
+msgid "If you prefer to skip this patch, run \"%s --skip\" instead."
+msgstr ""
+
+#: builtin/am.c:1091
+#, c-format
+msgid "To restore the original branch and stop patching, run \"%s --abort\"."
+msgstr ""
+
+#: builtin/am.c:1174
+msgid "Patch sent with format=flowed; space at the end of lines might be lost."
+msgstr ""
+
+#: builtin/am.c:1202
+msgid "Patch is empty."
+msgstr ""
+
+#: builtin/am.c:1267
+#, c-format
+msgid "missing author line in commit %s"
+msgstr ""
+
+#: builtin/am.c:1270
+#, c-format
+msgid "invalid ident line: %.*s"
+msgstr ""
+
+#: builtin/am.c:1489
+msgid "Repository lacks necessary blobs to fall back on 3-way merge."
+msgstr ""
+
+#: builtin/am.c:1491
+msgid "Using index info to reconstruct a base tree..."
+msgstr ""
+
+#: builtin/am.c:1510
+msgid ""
+"Did you hand edit your patch?\n"
+"It does not apply to blobs recorded in its index."
+msgstr ""
+
+#: builtin/am.c:1516
+msgid "Falling back to patching base and 3-way merge..."
+msgstr ""
+
+#: builtin/am.c:1542
+msgid "Failed to merge in the changes."
+msgstr ""
+
+#: builtin/am.c:1574
+msgid "applying to an empty history"
+msgstr ""
+
+#: builtin/am.c:1626 builtin/am.c:1630
+#, c-format
+msgid "cannot resume: %s does not exist."
+msgstr ""
+
+#: builtin/am.c:1648
+msgid "Commit Body is:"
+msgstr ""
+
+#. TRANSLATORS: Make sure to include [y], [n], [e], [v] and [a]
+#. in your translation. The program will only accept English
+#. input at this point.
+#.
+#: builtin/am.c:1658
+#, c-format
+msgid "Apply? [y]es/[n]o/[e]dit/[v]iew patch/[a]ccept all: "
+msgstr ""
+
+#: builtin/am.c:1704 builtin/commit.c:395
+msgid "unable to write index file"
+msgstr ""
+
+#: builtin/am.c:1708
+#, c-format
+msgid "Dirty index: cannot apply patches (dirty: %s)"
+msgstr ""
+
+#: builtin/am.c:1748 builtin/am.c:1816
+#, c-format
+msgid "Applying: %.*s"
+msgstr ""
+
+#: builtin/am.c:1765
+msgid "No changes -- Patch already applied."
+msgstr ""
+
+#: builtin/am.c:1771
+#, c-format
+msgid "Patch failed at %s %.*s"
+msgstr ""
+
+#: builtin/am.c:1775
+msgid "Use 'git am --show-current-patch=diff' to see the failed patch"
+msgstr ""
+
+#: builtin/am.c:1819
+msgid ""
+"No changes - did you forget to use 'git add'?\n"
+"If there is nothing left to stage, chances are that something else\n"
+"already introduced the same changes; you might want to skip this patch."
+msgstr ""
+
+#: builtin/am.c:1826
+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 might run `git rm` on a file to accept \"deleted by them\" for it."
+msgstr ""
+
+#: builtin/am.c:1933 builtin/am.c:1937 builtin/am.c:1949 builtin/reset.c:347
+#: builtin/reset.c:355
+#, c-format
+msgid "Could not parse object '%s'."
+msgstr "Tidak dapat mengurai objek '%s'."
+
+#: builtin/am.c:1985
+msgid "failed to clean index"
+msgstr ""
+
+#: builtin/am.c:2029
+msgid ""
+"You seem to have moved HEAD since the last 'am' failure.\n"
+"Not rewinding to ORIG_HEAD"
+msgstr ""
+
+#: builtin/am.c:2136
+#, c-format
+msgid "Invalid value for --patch-format: %s"
+msgstr ""
+
+#: builtin/am.c:2178
+#, c-format
+msgid "Invalid value for --show-current-patch: %s"
+msgstr ""
+
+#: builtin/am.c:2182
+#, c-format
+msgid "--show-current-patch=%s is incompatible with --show-current-patch=%s"
+msgstr ""
+
+#: builtin/am.c:2213
+msgid "git am [<options>] [(<mbox> | <Maildir>)...]"
+msgstr ""
+
+#: builtin/am.c:2214
+msgid "git am [<options>] (--continue | --skip | --abort)"
+msgstr ""
+
+#: builtin/am.c:2220
+msgid "run interactively"
+msgstr ""
+
+#: builtin/am.c:2222
+msgid "historical option -- no-op"
+msgstr ""
+
+#: builtin/am.c:2224
+msgid "allow fall back on 3way merging if needed"
+msgstr ""
+
+#: builtin/am.c:2225 builtin/init-db.c:560 builtin/prune-packed.c:16
+#: builtin/repack.c:334 builtin/stash.c:882
+msgid "be quiet"
+msgstr ""
+
+#: builtin/am.c:2227
+msgid "add a Signed-off-by trailer to the commit message"
+msgstr ""
+
+#: builtin/am.c:2230
+msgid "recode into utf8 (default)"
+msgstr ""
+
+#: builtin/am.c:2232
+msgid "pass -k flag to git-mailinfo"
+msgstr ""
+
+#: builtin/am.c:2234
+msgid "pass -b flag to git-mailinfo"
+msgstr ""
+
+#: builtin/am.c:2236
+msgid "pass -m flag to git-mailinfo"
+msgstr ""
+
+#: builtin/am.c:2238
+msgid "pass --keep-cr flag to git-mailsplit for mbox format"
+msgstr ""
+
+#: builtin/am.c:2241
+msgid "do not pass --keep-cr flag to git-mailsplit independent of am.keepcr"
+msgstr ""
+
+#: builtin/am.c:2244
+msgid "strip everything before a scissors line"
+msgstr ""
+
+#: builtin/am.c:2246 builtin/am.c:2249 builtin/am.c:2252 builtin/am.c:2255
+#: builtin/am.c:2258 builtin/am.c:2261 builtin/am.c:2264 builtin/am.c:2267
+#: builtin/am.c:2273
+msgid "pass it through git-apply"
+msgstr ""
+
+#: builtin/am.c:2263 builtin/commit.c:1395 builtin/fmt-merge-msg.c:17
+#: builtin/fmt-merge-msg.c:20 builtin/grep.c:904 builtin/merge.c:261
+#: builtin/pull.c:141 builtin/pull.c:200 builtin/pull.c:217
+#: builtin/rebase.c:1347 builtin/repack.c:345 builtin/repack.c:349
+#: builtin/repack.c:351 builtin/show-branch.c:650 builtin/show-ref.c:172
+#: builtin/tag.c:436 parse-options.h:154 parse-options.h:175
+#: parse-options.h:316
+msgid "n"
+msgstr ""
+
+#: builtin/am.c:2269 builtin/branch.c:670 builtin/bugreport.c:136
+#: builtin/for-each-ref.c:38 builtin/replace.c:556 builtin/tag.c:470
+#: builtin/verify-tag.c:38
+msgid "format"
+msgstr ""
+
+#: builtin/am.c:2270
+msgid "format the patch(es) are in"
+msgstr ""
+
+#: builtin/am.c:2276
+msgid "override error message when patch failure occurs"
+msgstr ""
+
+#: builtin/am.c:2278
+msgid "continue applying patches after resolving a conflict"
+msgstr ""
+
+#: builtin/am.c:2281
+msgid "synonyms for --continue"
+msgstr ""
+
+#: builtin/am.c:2284
+msgid "skip the current patch"
+msgstr ""
+
+#: builtin/am.c:2287
+msgid "restore the original branch and abort the patching operation"
+msgstr ""
+
+#: builtin/am.c:2290
+msgid "abort the patching operation but keep HEAD where it is"
+msgstr ""
+
+#: builtin/am.c:2294
+msgid "show the patch being applied"
+msgstr ""
+
+#: builtin/am.c:2299
+msgid "lie about committer date"
+msgstr ""
+
+#: builtin/am.c:2301
+msgid "use current timestamp for author date"
+msgstr ""
+
+#: builtin/am.c:2303 builtin/commit-tree.c:120 builtin/commit.c:1515
+#: builtin/merge.c:298 builtin/pull.c:175 builtin/rebase.c:538
+#: builtin/rebase.c:1400 builtin/revert.c:117 builtin/tag.c:451
+msgid "key-id"
+msgstr ""
+
+#: builtin/am.c:2304 builtin/rebase.c:539 builtin/rebase.c:1401
+msgid "GPG-sign commits"
+msgstr ""
+
+#: builtin/am.c:2307
+msgid "(internal use for git-rebase)"
+msgstr ""
+
+#: builtin/am.c:2325
+msgid ""
+"The -b/--binary option has been a no-op for long time, and\n"
+"it will be removed. Please do not use it anymore."
+msgstr ""
+
+#: builtin/am.c:2332
+msgid "failed to read the index"
+msgstr ""
+
+#: builtin/am.c:2347
+#, c-format
+msgid "previous rebase directory %s still exists but mbox given."
+msgstr ""
+
+#: builtin/am.c:2371
+#, c-format
+msgid ""
+"Stray %s directory found.\n"
+"Use \"git am --abort\" to remove it."
+msgstr ""
+
+#: builtin/am.c:2377
+msgid "Resolve operation not in progress, we are not resuming."
+msgstr ""
+
+#: builtin/am.c:2387
+msgid "interactive mode requires patches on the command line"
+msgstr ""
+
+#: builtin/apply.c:8
+msgid "git apply [<options>] [<patch>...]"
+msgstr ""
+
+#: builtin/archive.c:17
+#, c-format
+msgid "could not create archive file '%s'"
+msgstr ""
+
+#: builtin/archive.c:20
+msgid "could not redirect output"
+msgstr ""
+
+#: builtin/archive.c:37
+msgid "git archive: Remote with no URL"
+msgstr ""
+
+#: builtin/archive.c:61
+msgid "git archive: expected ACK/NAK, got a flush packet"
+msgstr ""
+
+#: builtin/archive.c:64
+#, c-format
+msgid "git archive: NACK %s"
+msgstr ""
+
+#: builtin/archive.c:65
+msgid "git archive: protocol error"
+msgstr ""
+
+#: builtin/archive.c:69
+msgid "git archive: expected a flush"
+msgstr ""
+
+#: builtin/bisect--helper.c:23
+msgid "git bisect--helper --bisect-reset [<commit>]"
+msgstr ""
+
+#: builtin/bisect--helper.c:24
+msgid "git bisect--helper --bisect-next-check <good_term> <bad_term> [<term>]"
+msgstr ""
+
+#: builtin/bisect--helper.c:25
+msgid ""
+"git bisect--helper --bisect-terms [--term-good | --term-old | --term-bad | --"
+"term-new]"
+msgstr ""
+
+#: builtin/bisect--helper.c:26
+msgid ""
+"git bisect--helper --bisect-start [--term-{new,bad}=<term> --term-{old,good}"
+"=<term>] [--no-checkout] [--first-parent] [<bad> [<good>...]] [--] "
+"[<paths>...]"
+msgstr ""
+
+#: builtin/bisect--helper.c:28
+msgid "git bisect--helper --bisect-next"
+msgstr ""
+
+#: builtin/bisect--helper.c:29
+msgid "git bisect--helper --bisect-state (bad|new) [<rev>]"
+msgstr ""
+
+#: builtin/bisect--helper.c:30
+msgid "git bisect--helper --bisect-state (good|old) [<rev>...]"
+msgstr ""
+
+#: builtin/bisect--helper.c:31
+msgid "git bisect--helper --bisect-replay <filename>"
+msgstr ""
+
+#: builtin/bisect--helper.c:32
+msgid "git bisect--helper --bisect-skip [(<rev>|<range>)...]"
+msgstr ""
+
+#: builtin/bisect--helper.c:107
+#, c-format
+msgid "cannot open file '%s' in mode '%s'"
+msgstr ""
+
+#: builtin/bisect--helper.c:114
+#, c-format
+msgid "could not write to file '%s'"
+msgstr ""
+
+#: builtin/bisect--helper.c:153
+#, c-format
+msgid "'%s' is not a valid term"
+msgstr ""
+
+#: builtin/bisect--helper.c:157
+#, c-format
+msgid "can't use the builtin command '%s' as a term"
+msgstr ""
+
+#: builtin/bisect--helper.c:167
+#, c-format
+msgid "can't change the meaning of the term '%s'"
+msgstr ""
+
+#: builtin/bisect--helper.c:177
+msgid "please use two different terms"
+msgstr ""
+
+#: builtin/bisect--helper.c:193
+#, c-format
+msgid "We are not bisecting.\n"
+msgstr ""
+
+#: builtin/bisect--helper.c:201
+#, c-format
+msgid "'%s' is not a valid commit"
+msgstr ""
+
+#: builtin/bisect--helper.c:210
+#, c-format
+msgid ""
+"could not check out original HEAD '%s'. Try 'git bisect reset <commit>'."
+msgstr ""
+
+#: builtin/bisect--helper.c:254
+#, c-format
+msgid "Bad bisect_write argument: %s"
+msgstr ""
+
+#: builtin/bisect--helper.c:259
+#, c-format
+msgid "couldn't get the oid of the rev '%s'"
+msgstr ""
+
+#: builtin/bisect--helper.c:271
+#, c-format
+msgid "couldn't open the file '%s'"
+msgstr ""
+
+#: builtin/bisect--helper.c:297
+#, c-format
+msgid "Invalid command: you're currently in a %s/%s bisect"
+msgstr ""
+
+#: builtin/bisect--helper.c:324
+#, c-format
+msgid ""
+"You need to give me at least one %s and %s revision.\n"
+"You can use \"git bisect %s\" and \"git bisect %s\" for that."
+msgstr ""
+
+#: builtin/bisect--helper.c:328
+#, c-format
+msgid ""
+"You need to start by \"git bisect start\".\n"
+"You then need to give me at least one %s and %s revision.\n"
+"You can use \"git bisect %s\" and \"git bisect %s\" for that."
+msgstr ""
+
+#: builtin/bisect--helper.c:348
+#, c-format
+msgid "bisecting only with a %s commit"
+msgstr ""
+
+#. TRANSLATORS: Make sure to include [Y] and [n] in your
+#. translation. The program will only accept English input
+#. at this point.
+#.
+#: builtin/bisect--helper.c:356
+msgid "Are you sure [Y/n]? "
+msgstr ""
+
+#: builtin/bisect--helper.c:417
+msgid "no terms defined"
+msgstr ""
+
+#: builtin/bisect--helper.c:420
+#, c-format
+msgid ""
+"Your current terms are %s for the old state\n"
+"and %s for the new state.\n"
+msgstr ""
+
+#: builtin/bisect--helper.c:430
+#, c-format
+msgid ""
+"invalid argument %s for 'git bisect terms'.\n"
+"Supported options are: --term-good|--term-old and --term-bad|--term-new."
+msgstr ""
+
+#: builtin/bisect--helper.c:497 builtin/bisect--helper.c:1014
+msgid "revision walk setup failed\n"
+msgstr ""
+
+#: builtin/bisect--helper.c:519
+#, c-format
+msgid "could not open '%s' for appending"
+msgstr ""
+
+#: builtin/bisect--helper.c:638 builtin/bisect--helper.c:651
+msgid "'' is not a valid term"
+msgstr ""
+
+#: builtin/bisect--helper.c:661
+#, c-format
+msgid "unrecognized option: '%s'"
+msgstr ""
+
+#: builtin/bisect--helper.c:665
+#, c-format
+msgid "'%s' does not appear to be a valid revision"
+msgstr ""
+
+#: builtin/bisect--helper.c:696
+msgid "bad HEAD - I need a HEAD"
+msgstr ""
+
+#: builtin/bisect--helper.c:711
+#, c-format
+msgid "checking out '%s' failed. Try 'git bisect start <valid-branch>'."
+msgstr ""
+
+#: builtin/bisect--helper.c:732
+msgid "won't bisect on cg-seek'ed tree"
+msgstr ""
+
+#: builtin/bisect--helper.c:735
+msgid "bad HEAD - strange symbolic ref"
+msgstr ""
+
+#: builtin/bisect--helper.c:755
+#, c-format
+msgid "invalid ref: '%s'"
+msgstr ""
+
+#: builtin/bisect--helper.c:813
+msgid "You need to start by \"git bisect start\"\n"
+msgstr ""
+
+#. TRANSLATORS: Make sure to include [Y] and [n] in your
+#. translation. The program will only accept English input
+#. at this point.
+#.
+#: builtin/bisect--helper.c:824
+msgid "Do you want me to do it for you [Y/n]? "
+msgstr ""
+
+#: builtin/bisect--helper.c:842
+msgid "Please call `--bisect-state` with at least one argument"
+msgstr ""
+
+#: builtin/bisect--helper.c:855
+#, c-format
+msgid "'git bisect %s' can take only one argument."
+msgstr ""
+
+#: builtin/bisect--helper.c:867 builtin/bisect--helper.c:878
+#, c-format
+msgid "Bad rev input: %s"
+msgstr ""
+
+#: builtin/bisect--helper.c:912
+msgid "We are not bisecting."
+msgstr ""
+
+#: builtin/bisect--helper.c:962
+#, c-format
+msgid "'%s'?? what are you talking about?"
+msgstr ""
+
+#: builtin/bisect--helper.c:974
+msgid "cannot read file '%s' for replaying"
+msgstr ""
+
+#: builtin/bisect--helper.c:1047
+msgid "reset the bisection state"
+msgstr ""
+
+#: builtin/bisect--helper.c:1049
+msgid "check whether bad or good terms exist"
+msgstr ""
+
+#: builtin/bisect--helper.c:1051
+msgid "print out the bisect terms"
+msgstr ""
+
+#: builtin/bisect--helper.c:1053
+msgid "start the bisect session"
+msgstr ""
+
+#: builtin/bisect--helper.c:1055
+msgid "find the next bisection commit"
+msgstr ""
+
+#: builtin/bisect--helper.c:1057
+msgid "mark the state of ref (or refs)"
+msgstr ""
+
+#: builtin/bisect--helper.c:1059
+msgid "list the bisection steps so far"
+msgstr ""
+
+#: builtin/bisect--helper.c:1061
+msgid "replay the bisection process from the given file"
+msgstr ""
+
+#: builtin/bisect--helper.c:1063
+msgid "skip some commits for checkout"
+msgstr ""
+
+#: builtin/bisect--helper.c:1065
+msgid "no log for BISECT_WRITE"
+msgstr ""
+
+#: builtin/bisect--helper.c:1080
+msgid "--bisect-reset requires either no argument or a commit"
+msgstr ""
+
+#: builtin/bisect--helper.c:1085
+msgid "--bisect-next-check requires 2 or 3 arguments"
+msgstr ""
+
+#: builtin/bisect--helper.c:1091
+msgid "--bisect-terms requires 0 or 1 argument"
+msgstr ""
+
+#: builtin/bisect--helper.c:1100
+msgid "--bisect-next requires 0 arguments"
+msgstr ""
+
+#: builtin/bisect--helper.c:1111
+msgid "--bisect-log requires 0 arguments"
+msgstr ""
+
+#: builtin/bisect--helper.c:1116
+msgid "no logfile given"
+msgstr ""
+
+#: builtin/blame.c:32
+msgid "git blame [<options>] [<rev-opts>] [<rev>] [--] <file>"
+msgstr ""
+
+#: builtin/blame.c:37
+msgid "<rev-opts> are documented in git-rev-list(1)"
+msgstr ""
+
+#: builtin/blame.c:410
+#, c-format
+msgid "expecting a color: %s"
+msgstr ""
+
+#: builtin/blame.c:417
+msgid "must end with a color"
+msgstr ""
+
+#: builtin/blame.c:728
+#, c-format
+msgid "invalid color '%s' in color.blame.repeatedLines"
+msgstr ""
+
+#: builtin/blame.c:746
+msgid "invalid value for blame.coloring"
+msgstr ""
+
+#: builtin/blame.c:845
+#, c-format
+msgid "cannot find revision %s to ignore"
+msgstr ""
+
+#: builtin/blame.c:867
+msgid "show blame entries as we find them, incrementally"
+msgstr ""
+
+#: builtin/blame.c:868
+msgid "do not show object names of boundary commits (Default: off)"
+msgstr ""
+
+#: builtin/blame.c:869
+msgid "do not treat root commits as boundaries (Default: off)"
+msgstr ""
+
+#: builtin/blame.c:870
+msgid "show work cost statistics"
+msgstr ""
+
+#: builtin/blame.c:871 builtin/checkout.c:1503 builtin/clone.c:92
+#: builtin/commit-graph.c:84 builtin/commit-graph.c:222 builtin/fetch.c:175
+#: builtin/merge.c:297 builtin/multi-pack-index.c:27 builtin/pull.c:119
+#: builtin/push.c:575 builtin/send-pack.c:198
+msgid "force progress reporting"
+msgstr "paksa laporkan perkembangan"
+
+#: builtin/blame.c:872
+msgid "show output score for blame entries"
+msgstr ""
+
+#: builtin/blame.c:873
+msgid "show original filename (Default: auto)"
+msgstr ""
+
+#: builtin/blame.c:874
+msgid "show original linenumber (Default: off)"
+msgstr ""
+
+#: builtin/blame.c:875
+msgid "show in a format designed for machine consumption"
+msgstr ""
+
+#: builtin/blame.c:876
+msgid "show porcelain format with per-line commit information"
+msgstr ""
+
+#: builtin/blame.c:877
+msgid "use the same output mode as git-annotate (Default: off)"
+msgstr ""
+
+#: builtin/blame.c:878
+msgid "show raw timestamp (Default: off)"
+msgstr ""
+
+#: builtin/blame.c:879
+msgid "show long commit SHA1 (Default: off)"
+msgstr ""
+
+#: builtin/blame.c:880
+msgid "suppress author name and timestamp (Default: off)"
+msgstr ""
+
+#: builtin/blame.c:881
+msgid "show author email instead of name (Default: off)"
+msgstr ""
+
+#: builtin/blame.c:882
+msgid "ignore whitespace differences"
+msgstr ""
+
+#: builtin/blame.c:883 builtin/log.c:1812
+msgid "rev"
+msgstr ""
+
+#: builtin/blame.c:883
+msgid "ignore <rev> when blaming"
+msgstr ""
+
+#: builtin/blame.c:884
+msgid "ignore revisions from <file>"
+msgstr ""
+
+#: builtin/blame.c:885
+msgid "color redundant metadata from previous line differently"
+msgstr ""
+
+#: builtin/blame.c:886
+msgid "color lines by age"
+msgstr ""
+
+#: builtin/blame.c:887
+msgid "spend extra cycles to find better match"
+msgstr ""
+
+#: builtin/blame.c:888
+msgid "use revisions from <file> instead of calling git-rev-list"
+msgstr ""
+
+#: builtin/blame.c:889
+msgid "use <file>'s contents as the final image"
+msgstr ""
+
+#: builtin/blame.c:890 builtin/blame.c:891
+msgid "score"
+msgstr ""
+
+#: builtin/blame.c:890
+msgid "find line copies within and across files"
+msgstr ""
+
+#: builtin/blame.c:891
+msgid "find line movements within and across files"
+msgstr ""
+
+#: builtin/blame.c:892
+msgid "range"
+msgstr ""
+
+#: builtin/blame.c:893
+msgid "process only line range <start>,<end> or function :<funcname>"
+msgstr ""
+
+#: builtin/blame.c:945
+msgid "--progress can't be used with --incremental or porcelain formats"
+msgstr ""
+
+#. TRANSLATORS: This string is used to tell us the
+#. maximum display width for a relative timestamp in
+#. "git blame" output.  For C locale, "4 years, 11
+#. months ago", which takes 22 places, is the longest
+#. among various forms of relative timestamps, but
+#. your language may need more or fewer display
+#. columns.
+#.
+#: builtin/blame.c:996
+msgid "4 years, 11 months ago"
+msgstr ""
+
+#: builtin/blame.c:1112
+#, c-format
+msgid "file %s has only %lu line"
+msgid_plural "file %s has only %lu lines"
+msgstr[0] ""
+msgstr[1] ""
+
+#: builtin/blame.c:1157
+msgid "Blaming lines"
+msgstr ""
+
+#: builtin/branch.c:29
+msgid "git branch [<options>] [-r | -a] [--merged] [--no-merged]"
+msgstr ""
+
+#: builtin/branch.c:30
+msgid "git branch [<options>] [-l] [-f] <branch-name> [<start-point>]"
+msgstr ""
+
+#: builtin/branch.c:31
+msgid "git branch [<options>] [-r] (-d | -D) <branch-name>..."
+msgstr ""
+
+#: builtin/branch.c:32
+msgid "git branch [<options>] (-m | -M) [<old-branch>] <new-branch>"
+msgstr ""
+
+#: builtin/branch.c:33
+msgid "git branch [<options>] (-c | -C) [<old-branch>] <new-branch>"
+msgstr ""
+
+#: builtin/branch.c:34
+msgid "git branch [<options>] [-r | -a] [--points-at]"
+msgstr ""
+
+#: builtin/branch.c:35
+msgid "git branch [<options>] [-r | -a] [--format]"
+msgstr ""
+
+#: builtin/branch.c:154
+#, c-format
+msgid ""
+"deleting branch '%s' that has been merged to\n"
+"         '%s', but not yet merged to HEAD."
+msgstr ""
+
+#: builtin/branch.c:158
+#, c-format
+msgid ""
+"not deleting branch '%s' that is not yet merged to\n"
+"         '%s', even though it is merged to HEAD."
+msgstr ""
+
+#: builtin/branch.c:172
+#, c-format
+msgid "Couldn't look up commit object for '%s'"
+msgstr ""
+
+#: builtin/branch.c:176
+#, c-format
+msgid ""
+"The branch '%s' is not fully merged.\n"
+"If you are sure you want to delete it, run 'git branch -D %s'."
+msgstr ""
+
+#: builtin/branch.c:189
+msgid "Update of config-file failed"
+msgstr ""
+
+#: builtin/branch.c:223
+msgid "cannot use -a with -d"
+msgstr ""
+
+#: builtin/branch.c:230
+msgid "Couldn't look up commit object for HEAD"
+msgstr ""
+
+#: builtin/branch.c:244
+#, c-format
+msgid "Cannot delete branch '%s' checked out at '%s'"
+msgstr ""
+
+#: builtin/branch.c:259
+#, c-format
+msgid "remote-tracking branch '%s' not found."
+msgstr ""
+
+#: builtin/branch.c:260
+#, c-format
+msgid "branch '%s' not found."
+msgstr ""
+
+#: builtin/branch.c:291
+#, c-format
+msgid "Deleted remote-tracking branch %s (was %s).\n"
+msgstr ""
+
+#: builtin/branch.c:292
+#, c-format
+msgid "Deleted branch %s (was %s).\n"
+msgstr ""
+
+#: builtin/branch.c:438 builtin/tag.c:61
+msgid "unable to parse format string"
+msgstr ""
+
+#: builtin/branch.c:469
+msgid "could not resolve HEAD"
+msgstr ""
+
+#: builtin/branch.c:475
+#, c-format
+msgid "HEAD (%s) points outside of refs/heads/"
+msgstr ""
+
+#: builtin/branch.c:490
+#, c-format
+msgid "Branch %s is being rebased at %s"
+msgstr ""
+
+#: builtin/branch.c:494
+#, c-format
+msgid "Branch %s is being bisected at %s"
+msgstr ""
+
+#: builtin/branch.c:511
+msgid "cannot copy the current branch while not on any."
+msgstr ""
+
+#: builtin/branch.c:513
+msgid "cannot rename the current branch while not on any."
+msgstr ""
+
+#: builtin/branch.c:524
+#, c-format
+msgid "Invalid branch name: '%s'"
+msgstr ""
+
+#: builtin/branch.c:553
+msgid "Branch rename failed"
+msgstr ""
+
+#: builtin/branch.c:555
+msgid "Branch copy failed"
+msgstr ""
+
+#: builtin/branch.c:559
+#, c-format
+msgid "Created a copy of a misnamed branch '%s'"
+msgstr ""
+
+#: builtin/branch.c:562
+#, c-format
+msgid "Renamed a misnamed branch '%s' away"
+msgstr ""
+
+#: builtin/branch.c:568
+#, c-format
+msgid "Branch renamed to %s, but HEAD is not updated!"
+msgstr ""
+
+#: builtin/branch.c:577
+msgid "Branch is renamed, but update of config-file failed"
+msgstr ""
+
+#: builtin/branch.c:579
+msgid "Branch is copied, but update of config-file failed"
+msgstr ""
+
+#: builtin/branch.c:595
+#, c-format
+msgid ""
+"Please edit the description for the branch\n"
+"  %s\n"
+"Lines starting with '%c' will be stripped.\n"
+msgstr ""
+
+#: builtin/branch.c:629
+msgid "Generic options"
+msgstr ""
+
+#: builtin/branch.c:631
+msgid "show hash and subject, give twice for upstream branch"
+msgstr ""
+
+#: builtin/branch.c:632
+msgid "suppress informational messages"
+msgstr ""
+
+#: builtin/branch.c:633
+msgid "set up tracking mode (see git-pull(1))"
+msgstr ""
+
+#: builtin/branch.c:635
+msgid "do not use"
+msgstr ""
+
+#: builtin/branch.c:637 builtin/rebase.c:534
+msgid "upstream"
+msgstr ""
+
+#: builtin/branch.c:637
+msgid "change the upstream info"
+msgstr ""
+
+#: builtin/branch.c:638
+msgid "unset the upstream info"
+msgstr ""
+
+#: builtin/branch.c:639
+msgid "use colored output"
+msgstr ""
+
+#: builtin/branch.c:640
+msgid "act on remote-tracking branches"
+msgstr ""
+
+#: builtin/branch.c:642 builtin/branch.c:644
+msgid "print only branches that contain the commit"
+msgstr ""
+
+#: builtin/branch.c:643 builtin/branch.c:645
+msgid "print only branches that don't contain the commit"
+msgstr ""
+
+#: builtin/branch.c:648
+msgid "Specific git-branch actions:"
+msgstr ""
+
+#: builtin/branch.c:649
+msgid "list both remote-tracking and local branches"
+msgstr ""
+
+#: builtin/branch.c:651
+msgid "delete fully merged branch"
+msgstr ""
+
+#: builtin/branch.c:652
+msgid "delete branch (even if not merged)"
+msgstr ""
+
+#: builtin/branch.c:653
+msgid "move/rename a branch and its reflog"
+msgstr ""
+
+#: builtin/branch.c:654
+msgid "move/rename a branch, even if target exists"
+msgstr ""
+
+#: builtin/branch.c:655
+msgid "copy a branch and its reflog"
+msgstr ""
+
+#: builtin/branch.c:656
+msgid "copy a branch, even if target exists"
+msgstr ""
+
+#: builtin/branch.c:657
+msgid "list branch names"
+msgstr ""
+
+#: builtin/branch.c:658
+msgid "show current branch name"
+msgstr ""
+
+#: builtin/branch.c:659
+msgid "create the branch's reflog"
+msgstr ""
+
+#: builtin/branch.c:661
+msgid "edit the description for the branch"
+msgstr ""
+
+#: builtin/branch.c:662
+msgid "force creation, move/rename, deletion"
+msgstr ""
+
+#: builtin/branch.c:663
+msgid "print only branches that are merged"
+msgstr ""
+
+#: builtin/branch.c:664
+msgid "print only branches that are not merged"
+msgstr ""
+
+#: builtin/branch.c:665
+msgid "list branches in columns"
+msgstr ""
+
+#: builtin/branch.c:667 builtin/for-each-ref.c:42 builtin/notes.c:415
+#: builtin/notes.c:418 builtin/notes.c:581 builtin/notes.c:584
+#: builtin/tag.c:466
+msgid "object"
+msgstr ""
+
+#: builtin/branch.c:668
+msgid "print only branches of the object"
+msgstr ""
+
+#: builtin/branch.c:669 builtin/for-each-ref.c:48 builtin/tag.c:473
+msgid "sorting and filtering are case insensitive"
+msgstr ""
+
+#: builtin/branch.c:670 builtin/for-each-ref.c:38 builtin/tag.c:471
+#: builtin/verify-tag.c:38
+msgid "format to use for the output"
+msgstr ""
+
+#: builtin/branch.c:693 builtin/clone.c:790
+msgid "HEAD not found below refs/heads!"
+msgstr ""
+
+#: builtin/branch.c:717
+msgid "--column and --verbose are incompatible"
+msgstr ""
+
+#: builtin/branch.c:732 builtin/branch.c:788 builtin/branch.c:797
+msgid "branch name required"
+msgstr ""
+
+#: builtin/branch.c:764
+msgid "Cannot give description to detached HEAD"
+msgstr ""
+
+#: builtin/branch.c:769
+msgid "cannot edit description of more than one branch"
+msgstr ""
+
+#: builtin/branch.c:776
+#, c-format
+msgid "No commit on branch '%s' yet."
+msgstr ""
+
+#: builtin/branch.c:779
+#, c-format
+msgid "No branch named '%s'."
+msgstr ""
+
+#: builtin/branch.c:794
+msgid "too many branches for a copy operation"
+msgstr ""
+
+#: builtin/branch.c:803
+msgid "too many arguments for a rename operation"
+msgstr ""
+
+#: builtin/branch.c:808
+msgid "too many arguments to set new upstream"
+msgstr ""
+
+#: builtin/branch.c:812
+#, c-format
+msgid ""
+"could not set upstream of HEAD to %s when it does not point to any branch."
+msgstr ""
+
+#: builtin/branch.c:815 builtin/branch.c:838
+#, c-format
+msgid "no such branch '%s'"
+msgstr ""
+
+#: builtin/branch.c:819
+#, c-format
+msgid "branch '%s' does not exist"
+msgstr ""
+
+#: builtin/branch.c:832
+msgid "too many arguments to unset upstream"
+msgstr ""
+
+#: builtin/branch.c:836
+msgid "could not unset upstream of HEAD when it does not point to any branch."
+msgstr ""
+
+#: builtin/branch.c:842
+#, c-format
+msgid "Branch '%s' has no upstream information"
+msgstr ""
+
+#: builtin/branch.c:852
+msgid ""
+"The -a, and -r, options to 'git branch' do not take a branch name.\n"
+"Did you mean to use: -a|-r --list <pattern>?"
+msgstr ""
+
+#: builtin/branch.c:856
+msgid ""
+"the '--set-upstream' option is no longer supported. Please use '--track' or "
+"'--set-upstream-to' instead."
+msgstr ""
+
+#: builtin/bugreport.c:15
+msgid "git version:\n"
+msgstr ""
+
+#: builtin/bugreport.c:21
+#, c-format
+msgid "uname() failed with error '%s' (%d)\n"
+msgstr ""
+
+#: builtin/bugreport.c:31
+msgid "compiler info: "
+msgstr ""
+
+#: builtin/bugreport.c:34
+msgid "libc info: "
+msgstr ""
+
+#: builtin/bugreport.c:80
+msgid "not run from a git repository - no hooks to show\n"
+msgstr ""
+
+#: builtin/bugreport.c:90
+msgid "git bugreport [-o|--output-directory <file>] [-s|--suffix <format>]"
+msgstr ""
+
+#: builtin/bugreport.c:97
+msgid ""
+"Thank you for filling out a Git bug report!\n"
+"Please answer the following questions to help us understand your issue.\n"
+"\n"
+"What did you do before the bug happened? (Steps to reproduce your issue)\n"
+"\n"
+"What did you expect to happen? (Expected behavior)\n"
+"\n"
+"What happened instead? (Actual behavior)\n"
+"\n"
+"What's different between what you expected and what actually happened?\n"
+"\n"
+"Anything else you want to add:\n"
+"\n"
+"Please review the rest of the bug report below.\n"
+"You can delete any lines you don't wish to share.\n"
+msgstr ""
+
+#: builtin/bugreport.c:135
+msgid "specify a destination for the bugreport file"
+msgstr ""
+
+#: builtin/bugreport.c:137
+msgid "specify a strftime format suffix for the filename"
+msgstr ""
+
+#: builtin/bugreport.c:159
+#, c-format
+msgid "could not create leading directories for '%s'"
+msgstr ""
+
+#: builtin/bugreport.c:166
+msgid "System Info"
+msgstr ""
+
+#: builtin/bugreport.c:169
+msgid "Enabled Hooks"
+msgstr ""
+
+#: builtin/bugreport.c:176
+#, c-format
+msgid "couldn't create a new file at '%s'"
+msgstr ""
+
+#: builtin/bugreport.c:179
+#, c-format
+msgid "unable to write to %s"
+msgstr ""
+
+#: builtin/bugreport.c:189
+#, c-format
+msgid "Created new report at '%s'.\n"
+msgstr ""
+
+#: builtin/bundle.c:15 builtin/bundle.c:23
+msgid "git bundle create [<options>] <file> <git-rev-list args>"
+msgstr ""
+
+#: builtin/bundle.c:16 builtin/bundle.c:28
+msgid "git bundle verify [<options>] <file>"
+msgstr ""
+
+#: builtin/bundle.c:17 builtin/bundle.c:33
+msgid "git bundle list-heads <file> [<refname>...]"
+msgstr ""
+
+#: builtin/bundle.c:18 builtin/bundle.c:38
+msgid "git bundle unbundle <file> [<refname>...]"
+msgstr ""
+
+#: builtin/bundle.c:67 builtin/pack-objects.c:3495
+msgid "do not show progress meter"
+msgstr ""
+
+#: builtin/bundle.c:69 builtin/pack-objects.c:3497
+msgid "show progress meter"
+msgstr ""
+
+#: builtin/bundle.c:71 builtin/pack-objects.c:3499
+msgid "show progress meter during object writing phase"
+msgstr ""
+
+#: builtin/bundle.c:74 builtin/pack-objects.c:3502
+msgid "similar to --all-progress when progress meter is shown"
+msgstr ""
+
+#: builtin/bundle.c:76
+msgid "specify bundle format version"
+msgstr ""
+
+#: builtin/bundle.c:96
+msgid "Need a repository to create a bundle."
+msgstr ""
+
+#: builtin/bundle.c:107
+msgid "do not show bundle details"
+msgstr ""
+
+#: builtin/bundle.c:122
+#, c-format
+msgid "%s is okay\n"
+msgstr ""
+
+#: builtin/bundle.c:163
+msgid "Need a repository to unbundle."
+msgstr ""
+
+#: builtin/bundle.c:171 builtin/remote.c:1700
+msgid "be verbose; must be placed before a subcommand"
+msgstr ""
+
+#: builtin/bundle.c:193 builtin/remote.c:1731
+#, c-format
+msgid "Unknown subcommand: %s"
+msgstr ""
+
+#: builtin/cat-file.c:598
+msgid ""
+"git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | -"
+"p | <type> | --textconv | --filters) [--path=<path>] <object>"
+msgstr ""
+
+#: builtin/cat-file.c:599
+msgid ""
+"git cat-file (--batch[=<format>] | --batch-check[=<format>]) [--follow-"
+"symlinks] [--textconv | --filters]"
+msgstr ""
+
+#: builtin/cat-file.c:620
+msgid "only one batch option may be specified"
+msgstr ""
+
+#: builtin/cat-file.c:638
+msgid "<type> can be one of: blob, tree, commit, tag"
+msgstr ""
+
+#: builtin/cat-file.c:639
+msgid "show object type"
+msgstr ""
+
+#: builtin/cat-file.c:640
+msgid "show object size"
+msgstr ""
+
+#: builtin/cat-file.c:642
+msgid "exit with zero when there's no error"
+msgstr ""
+
+#: builtin/cat-file.c:643
+msgid "pretty-print object's content"
+msgstr ""
+
+#: builtin/cat-file.c:645
+msgid "for blob objects, run textconv on object's content"
+msgstr ""
+
+#: builtin/cat-file.c:647
+msgid "for blob objects, run filters on object's content"
+msgstr ""
+
+#: builtin/cat-file.c:648
+msgid "blob"
+msgstr ""
+
+#: builtin/cat-file.c:649
+msgid "use a specific path for --textconv/--filters"
+msgstr ""
+
+#: builtin/cat-file.c:651
+msgid "allow -s and -t to work with broken/corrupt objects"
+msgstr ""
+
+#: builtin/cat-file.c:652
+msgid "buffer --batch output"
+msgstr ""
+
+#: builtin/cat-file.c:654
+msgid "show info and content of objects fed from the standard input"
+msgstr ""
+
+#: builtin/cat-file.c:658
+msgid "show info about objects fed from the standard input"
+msgstr ""
+
+#: builtin/cat-file.c:662
+msgid "follow in-tree symlinks (used with --batch or --batch-check)"
+msgstr ""
+
+#: builtin/cat-file.c:664
+msgid "show all objects with --batch or --batch-check"
+msgstr ""
+
+#: builtin/cat-file.c:666
+msgid "do not order --batch-all-objects output"
+msgstr ""
+
+#: builtin/check-attr.c:13
+msgid "git check-attr [-a | --all | <attr>...] [--] <pathname>..."
+msgstr ""
+
+#: builtin/check-attr.c:14
+msgid "git check-attr --stdin [-z] [-a | --all | <attr>...]"
+msgstr ""
+
+#: builtin/check-attr.c:21
+msgid "report all attributes set on file"
+msgstr ""
+
+#: builtin/check-attr.c:22
+msgid "use .gitattributes only from the index"
+msgstr ""
+
+#: builtin/check-attr.c:23 builtin/check-ignore.c:25 builtin/hash-object.c:102
+msgid "read file names from stdin"
+msgstr ""
+
+#: builtin/check-attr.c:25 builtin/check-ignore.c:27
+msgid "terminate input and output records by a NUL character"
+msgstr ""
+
+#: builtin/check-ignore.c:21 builtin/checkout.c:1499 builtin/gc.c:549
+#: builtin/worktree.c:489
+msgid "suppress progress reporting"
+msgstr ""
+
+#: builtin/check-ignore.c:29
+msgid "show non-matching input paths"
+msgstr ""
+
+#: builtin/check-ignore.c:31
+msgid "ignore index when checking"
+msgstr ""
+
+#: builtin/check-ignore.c:163
+msgid "cannot specify pathnames with --stdin"
+msgstr ""
+
+#: builtin/check-ignore.c:166
+msgid "-z only makes sense with --stdin"
+msgstr ""
+
+#: builtin/check-ignore.c:168
+msgid "no path specified"
+msgstr ""
+
+#: builtin/check-ignore.c:172
+msgid "--quiet is only valid with a single pathname"
+msgstr ""
+
+#: builtin/check-ignore.c:174
+msgid "cannot have both --quiet and --verbose"
+msgstr ""
+
+#: builtin/check-ignore.c:177
+msgid "--non-matching is only valid with --verbose"
+msgstr ""
+
+#: builtin/check-mailmap.c:9
+msgid "git check-mailmap [<options>] <contact>..."
+msgstr ""
+
+#: builtin/check-mailmap.c:14
+msgid "also read contacts from stdin"
+msgstr ""
+
+#: builtin/check-mailmap.c:25
+#, c-format
+msgid "unable to parse contact: %s"
+msgstr ""
+
+#: builtin/check-mailmap.c:48
+msgid "no contacts specified"
+msgstr ""
+
+#: builtin/checkout-index.c:152
+msgid "git checkout-index [<options>] [--] [<file>...]"
+msgstr ""
+
+#: builtin/checkout-index.c:169
+msgid "stage should be between 1 and 3 or all"
+msgstr ""
+
+#: builtin/checkout-index.c:186
+msgid "check out all files in the index"
+msgstr ""
+
+#: builtin/checkout-index.c:187
+msgid "force overwrite of existing files"
+msgstr ""
+
+#: builtin/checkout-index.c:189
+msgid "no warning for existing files and files not in index"
+msgstr ""
+
+#: builtin/checkout-index.c:191
+msgid "don't checkout new files"
+msgstr ""
+
+#: builtin/checkout-index.c:193
+msgid "update stat information in the index file"
+msgstr ""
+
+#: builtin/checkout-index.c:197
+msgid "read list of paths from the standard input"
+msgstr ""
+
+#: builtin/checkout-index.c:199
+msgid "write the content to temporary files"
+msgstr ""
+
+#: builtin/checkout-index.c:200 builtin/column.c:31
+#: builtin/submodule--helper.c:1824 builtin/submodule--helper.c:1827
+#: builtin/submodule--helper.c:1835 builtin/submodule--helper.c:2333
+#: builtin/worktree.c:717
+msgid "string"
+msgstr ""
+
+#: builtin/checkout-index.c:201
+msgid "when creating files, prepend <string>"
+msgstr ""
+
+#: builtin/checkout-index.c:203
+msgid "copy out the files from named stage"
+msgstr ""
+
+#: builtin/checkout.c:31
+msgid "git checkout [<options>] <branch>"
+msgstr "git checkout [<opsi>] <cabang>"
+
+#: builtin/checkout.c:32
+msgid "git checkout [<options>] [<branch>] -- <file>..."
+msgstr "git checkout [<opsi>] [<cabang>] -- <berkas>..."
+
+#: builtin/checkout.c:37
+msgid "git switch [<options>] [<branch>]"
+msgstr "git switch [<opsi>] [<cabang>]"
+
+#: builtin/checkout.c:42
+msgid "git restore [<options>] [--source=<branch>] <file>..."
+msgstr "git restore [<opsi>] [--source=<cabang>] <berkas>..."
+
+#: builtin/checkout.c:188 builtin/checkout.c:227
+#, c-format
+msgid "path '%s' does not have our version"
+msgstr "jalur '%s' tidak punya versi kami"
+
+#: builtin/checkout.c:190 builtin/checkout.c:229
+#, c-format
+msgid "path '%s' does not have their version"
+msgstr "jalur '%s' tidak punya versi mereka"
+
+#: builtin/checkout.c:206
+#, c-format
+msgid "path '%s' does not have all necessary versions"
+msgstr "jalur '%s' tidak punya semua versi yang diperlukan"
+
+#: builtin/checkout.c:258
+#, c-format
+msgid "path '%s' does not have necessary versions"
+msgstr "jalur '%s' tidak punya versi yang diperlukan"
+
+#: builtin/checkout.c:275
+#, c-format
+msgid "path '%s': cannot merge"
+msgstr "jalur '%s': tidak dapat gabung"
+
+#: builtin/checkout.c:291
+#, c-format
+msgid "Unable to add merge result for '%s'"
+msgstr "Tidak dapat menambahkan hasil penggabungan untuk '%s'"
+
+#: builtin/checkout.c:396
+#, c-format
+msgid "Recreated %d merge conflict"
+msgid_plural "Recreated %d merge conflicts"
+msgstr[0] "Konflik penggabungan %d dibuat ulang"
+msgstr[1] "Konflik penggabungan %d dibuat ulang"
+
+#: builtin/checkout.c:401
+#, c-format
+msgid "Updated %d path from %s"
+msgid_plural "Updated %d paths from %s"
+msgstr[0] "%d jalur diperbarui dari %s"
+msgstr[1] "%d jalur diperbarui dari %s"
+
+#: builtin/checkout.c:408
+#, c-format
+msgid "Updated %d path from the index"
+msgid_plural "Updated %d paths from the index"
+msgstr[0] "%d jalur diperbarui dari indeks"
+msgstr[1] "%d jalur diperbarui dari indeks"
+
+#: builtin/checkout.c:431 builtin/checkout.c:434 builtin/checkout.c:437
+#: builtin/checkout.c:441
+#, c-format
+msgid "'%s' cannot be used with updating paths"
+msgstr "'%s' tidak dapat digunakan untuk memperbarui jalur"
+
+#: builtin/checkout.c:444 builtin/checkout.c:447
+#, c-format
+msgid "'%s' cannot be used with %s"
+msgstr "'%s' tidak dapat digunakan untuk %s"
+
+#: builtin/checkout.c:451
+#, c-format
+msgid "Cannot update paths and switch to branch '%s' at the same time."
+msgstr ""
+"Tidak dapat memperbarui jalur dan mengganti ke cabang '%s' dalam waktu yang "
+"bersamaan."
+
+#: builtin/checkout.c:455
+#, c-format
+msgid "neither '%s' or '%s' is specified"
+msgstr "baik '%s' atau '%s' tidak disebutkan"
+
+#: builtin/checkout.c:459
+#, c-format
+msgid "'%s' must be used when '%s' is not specified"
+msgstr "'%s' harus disebutkan ketika '%s' tidak disebutkan"
+
+#: builtin/checkout.c:464 builtin/checkout.c:469
+#, c-format
+msgid "'%s' or '%s' cannot be used with %s"
+msgstr "'%s' atau '%s' tidak dapat digunakan untuk %s"
+
+#: builtin/checkout.c:543 builtin/checkout.c:550
+#, c-format
+msgid "path '%s' is unmerged"
+msgstr "jalur '%s' tak tergabung"
+
+#: builtin/checkout.c:718
+msgid "you need to resolve your current index first"
+msgstr "Anda perlu selesaikan dulu indeks Anda saat ini"
+
+#: builtin/checkout.c:772
+#, c-format
+msgid ""
+"cannot continue with staged changes in the following files:\n"
+"%s"
+msgstr ""
+"tidak dapat melanjutkan dengan perubahan yang tergelar dalam berkas "
+"berikut:\n"
+"%s"
+
+#: builtin/checkout.c:865
+#, c-format
+msgid "Can not do reflog for '%s': %s\n"
+msgstr "Tidak dapat melakukan reflog untuk '%s': %s\n"
+
+#: builtin/checkout.c:907
+msgid "HEAD is now at"
+msgstr "HEAD sekarang berada di"
+
+#: builtin/checkout.c:911 builtin/clone.c:721 t/helper/test-fast-rebase.c:202
+msgid "unable to update HEAD"
+msgstr "tidak dapat memperbarui HEAD"
+
+#: builtin/checkout.c:915
+#, c-format
+msgid "Reset branch '%s'\n"
+msgstr "Ganti ulang cabang '%s'\n"
+
+#: builtin/checkout.c:918
+#, c-format
+msgid "Already on '%s'\n"
+msgstr "Sudah berada pada '%s'\n"
+
+#: builtin/checkout.c:922
+#, c-format
+msgid "Switched to and reset branch '%s'\n"
+msgstr "Ganti ke dan ganti cabang '%s'\n"
+
+#: builtin/checkout.c:924 builtin/checkout.c:1355
+#, c-format
+msgid "Switched to a new branch '%s'\n"
+msgstr "Ganti ke cabang baru '%s'\n"
+
+#: builtin/checkout.c:926
+#, c-format
+msgid "Switched to branch '%s'\n"
+msgstr "Ganti ke cabang '%s'\n"
+
+#: builtin/checkout.c:977
+#, c-format
+msgid " ... and %d more.\n"
+msgstr "... dan %d lainnya.\n"
+
+#: builtin/checkout.c:983
+#, c-format
+msgid ""
+"Warning: you are leaving %d commit behind, not connected to\n"
+"any of your branches:\n"
+"\n"
+"%s\n"
+msgid_plural ""
+"Warning: you are leaving %d commits behind, not connected to\n"
+"any of your branches:\n"
+"\n"
+"%s\n"
+msgstr[0] ""
+"Peringatan: Anda meninggalkan %d komit di belakang, tidak terhubung ke\n"
+"cabang Anda manapun:\n"
+"\n"
+"%s\n"
+msgstr[1] ""
+"Peringatan: Anda meninggalkan %d komit di belakang, tidak terhubung ke\n"
+"cabang Anda manapun:\n"
+"\n"
+"%s\n"
+
+#: builtin/checkout.c:1002
+#, c-format
+msgid ""
+"If you want to keep it by creating a new branch, this may be a good time\n"
+"to do so with:\n"
+"\n"
+" git branch <new-branch-name> %s\n"
+"\n"
+msgid_plural ""
+"If you want to keep them by creating a new branch, this may be a good time\n"
+"to do so with:\n"
+"\n"
+" git branch <new-branch-name> %s\n"
+"\n"
+msgstr[0] ""
+"Jika Anda ingin memelihara itu dengan membuat cabang baru, ini mungkin\n"
+"saat yang tepat untuk dilakukan dengan:\n"
+"git branch <nama-cabang-baru> %s\n"
+msgstr[1] ""
+"Jika Anda ingin memelihara itu dengan membuat cabang baru, ini mungkin\n"
+"saat yang tepat untuk dilakukan dengan:\n"
+"git branch <nama-cabang-baru> %s\n"
+
+#: builtin/checkout.c:1037
+msgid "internal error in revision walk"
+msgstr "kesalahan internal dalam jalan revisi"
+
+#: builtin/checkout.c:1041
+msgid "Previous HEAD position was"
+msgstr "Posisi HEAD sebelumnya adalah"
+
+#: builtin/checkout.c:1081 builtin/checkout.c:1350
+msgid "You are on a branch yet to be born"
+msgstr "Anda berada pada cabang yang belum lahir"
+
+#: builtin/checkout.c:1163
+#, c-format
+msgid ""
+"'%s' could be both a local file and a tracking branch.\n"
+"Please use -- (and optionally --no-guess) to disambiguate"
+msgstr ""
+"'%s' bisa jadi berkas lokal dan cabang pelacak.\n"
+"Mohon gunakan -- (dan secara opsional --no-guess) untuk disambiguasi"
+
+#: builtin/checkout.c:1170
+msgid ""
+"If you meant to check out a remote tracking branch on, e.g. 'origin',\n"
+"you can do so by fully qualifying the name with the --track option:\n"
+"\n"
+"    git checkout --track origin/<name>\n"
+"\n"
+"If you'd like to always have checkouts of an ambiguous <name> prefer\n"
+"one remote, e.g. the 'origin' remote, consider setting\n"
+"checkout.defaultRemote=origin in your config."
+msgstr ""
+"Jika maksud Anda check out cabang pelacak remote, seperti 'origin',\n"
+"Anda bisa lakukan dengan kualifikasi penuh nama dengan opsi --track:\n"
+"\n"
+"    git checkout --track origin/<nama>\n"
+"\n"
+"Jika Anda ingin checkout <nama> ambigu selalu memilih satu remote,\n"
+"seperti remote 'origin', pertimbangkan untuk menyetel\n"
+"checkout.defaultRemote=origin di konfigurasi Anda"
+
+#: builtin/checkout.c:1180
+#, c-format
+msgid "'%s' matched multiple (%d) remote tracking branches"
+msgstr "'%s' cocok dengan banyak (%d) cabang pelacak remote"
+
+#: builtin/checkout.c:1246
+msgid "only one reference expected"
+msgstr "hanya satu referensi yang diharapkan"
+
+#: builtin/checkout.c:1263
+#, c-format
+msgid "only one reference expected, %d given."
+msgstr "hanya satu referensi yang diharapkan, %d diberikan"
+
+#: builtin/checkout.c:1309 builtin/worktree.c:270 builtin/worktree.c:438
+#, c-format
+msgid "invalid reference: %s"
+msgstr "referensi tidak valid: %s"
+
+#: builtin/checkout.c:1322 builtin/checkout.c:1688
+#, c-format
+msgid "reference is not a tree: %s"
+msgstr "referensi bukan pohon: %s"
+
+#: builtin/checkout.c:1369
+#, c-format
+msgid "a branch is expected, got tag '%s'"
+msgstr "sebuah cabang diharapkan, dapat tag '%s'"
+
+#: builtin/checkout.c:1371
+#, c-format
+msgid "a branch is expected, got remote branch '%s'"
+msgstr "sebuah cabang diharapkan, dapat cabang remote '%s'"
+
+#: builtin/checkout.c:1372 builtin/checkout.c:1380
+#, c-format
+msgid "a branch is expected, got '%s'"
+msgstr "sebuah cabang diharapkan, dapat '%s'"
+
+#: builtin/checkout.c:1375
+#, c-format
+msgid "a branch is expected, got commit '%s'"
+msgstr "sebuah cabang diharapkan, dapat komit '%s'"
+
+#: builtin/checkout.c:1391
+msgid ""
+"cannot switch branch while merging\n"
+"Consider \"git merge --quit\" or \"git worktree add\"."
+msgstr ""
+"tidak dapat mengganti cabang saat penggabungan\n"
+"Pertimbangkan untuk menggunakan \"git merge --quit\" atau \"git worktree add"
+"\"."
+
+#: builtin/checkout.c:1395
+msgid ""
+"cannot switch branch in the middle of an am session\n"
+"Consider \"git am --quit\" or \"git worktree add\"."
+msgstr ""
+"tidak dapat mengganti cabang di tengah sesi am\n"
+"Pertimbangkan untuk menggunakan \"git am --quit\" atau \"git worktree add\"."
+
+#: builtin/checkout.c:1399
+msgid ""
+"cannot switch branch while rebasing\n"
+"Consider \"git rebase --quit\" or \"git worktree add\"."
+msgstr ""
+"tidak dapat mengganti cabang saat pendasaran ulang\n"
+"Pertimbangkan untuk menggunakan \"git rebase --quit\" atau \"git worktree add"
+"\"."
+
+#: builtin/checkout.c:1403
+msgid ""
+"cannot switch branch while cherry-picking\n"
+"Consider \"git cherry-pick --quit\" or \"git worktree add\"."
+msgstr ""
+"tidak dapat mengganti cabang saat pemetikan ceri\n"
+"Pertimbangkan untuk menggunakan \"git cherry-pick --quit\" atau \"git "
+"worktree add\"."
+
+#: builtin/checkout.c:1407
+msgid ""
+"cannot switch branch while reverting\n"
+"Consider \"git revert --quit\" or \"git worktree add\"."
+msgstr ""
+"tidak dapat mengganti cabang saat pembalikan\n"
+"Pertimbangkan untuk menggunakan \"git cherry-pick --quit\" atau \"git "
+"worktree add\"."
+
+#: builtin/checkout.c:1411
+msgid "you are switching branch while bisecting"
+msgstr "Anda mengganti cabang saat pembagian dua"
+
+#: builtin/checkout.c:1418
+msgid "paths cannot be used with switching branches"
+msgstr "jalur tidak dapat digunakan dengan mengganti cabang"
+
+#: builtin/checkout.c:1421 builtin/checkout.c:1425 builtin/checkout.c:1429
+#, c-format
+msgid "'%s' cannot be used with switching branches"
+msgstr "'%s' tidak dapat digunakan dengan mengganti cabang"
+
+#: builtin/checkout.c:1433 builtin/checkout.c:1436 builtin/checkout.c:1439
+#: builtin/checkout.c:1444 builtin/checkout.c:1449
+#, c-format
+msgid "'%s' cannot be used with '%s'"
+msgstr "'%s' tidak dapat digunakan dengan '%s'"
+
+#: builtin/checkout.c:1446
+#, c-format
+msgid "'%s' cannot take <start-point>"
+msgstr "'%s' tidak bisa mengambil <titik-awal>"
+
+#: builtin/checkout.c:1454
+#, c-format
+msgid "Cannot switch branch to a non-commit '%s'"
+msgstr "Tidak dapat mengganti cabang ke bukan komit '%s'"
+
+#: builtin/checkout.c:1461
+msgid "missing branch or commit argument"
+msgstr "kehilangan argumen cabang atau komit"
+
+#: builtin/checkout.c:1504
+msgid "perform a 3-way merge with the new branch"
+msgstr "lakukan penggabungan 3 arah dengan cabang baru"
+
+#: builtin/checkout.c:1505 builtin/log.c:1799 parse-options.h:322
+msgid "style"
+msgstr "gaya"
+
+#: builtin/checkout.c:1506
+msgid "conflict style (merge or diff3)"
+msgstr "gaya konflik (merge atau diff3)"
+
+#: builtin/checkout.c:1518 builtin/worktree.c:486
+msgid "detach HEAD at named commit"
+msgstr "lepas HEAD pada komit bernama"
+
+#: builtin/checkout.c:1519
+msgid "set upstream info for new branch"
+msgstr "setel info hulu untuk cabang baru"
+
+#: builtin/checkout.c:1521
+msgid "force checkout (throw away local modifications)"
+msgstr "paksa checkout (buang modifikasi lokal)"
+
+#: builtin/checkout.c:1523
+msgid "new-branch"
+msgstr "cabang baru"
+
+#: builtin/checkout.c:1523
+msgid "new unparented branch"
+msgstr "cabang baru tanpa induk"
+
+#: builtin/checkout.c:1525 builtin/merge.c:301
+msgid "update ignored files (default)"
+msgstr "perbarui berkas yang diabaikan (default)"
+
+#: builtin/checkout.c:1528
+msgid "do not check if another worktree is holding the given ref"
+msgstr ""
+"jangan periksa jika pohon kerja yang lain mempunyai referensi yang diberikan"
+
+#: builtin/checkout.c:1541
+msgid "checkout our version for unmerged files"
+msgstr "checkout versi kami untuk berkas yang tak tergabung"
+
+#: builtin/checkout.c:1544
+msgid "checkout their version for unmerged files"
+msgstr "checkout versi mereka untuk berkas yang tak tergabung"
+
+#: builtin/checkout.c:1548
+msgid "do not limit pathspecs to sparse entries only"
+msgstr "jangan batasi jalur spek hanya ke entri tipis"
+
+#: builtin/checkout.c:1603
+#, c-format
+msgid "-%c, -%c and --orphan are mutually exclusive"
+msgstr "-%c, -%c dan --orphan saling eksklusif"
+
+#: builtin/checkout.c:1607
+msgid "-p and --overlay are mutually exclusive"
+msgstr "-p dan --overlay saling eksklusif"
+
+#: builtin/checkout.c:1644
+msgid "--track needs a branch name"
+msgstr "--track butuh nama cabang"
+
+#: builtin/checkout.c:1649
+#, c-format
+msgid "missing branch name; try -%c"
+msgstr "kehilangan nama cabang; coba -%c"
+
+#: builtin/checkout.c:1681
+#, c-format
+msgid "could not resolve %s"
+msgstr "tidak dapat menyelesaikan %s"
+
+#: builtin/checkout.c:1697
+msgid "invalid path specification"
+msgstr "spesifikasi jalur tidak valid"
+
+#: builtin/checkout.c:1704
+#, c-format
+msgid "'%s' is not a commit and a branch '%s' cannot be created from it"
+msgstr "'%s' bukanlah commit dan cabang '%s' tidak dapat dibuat dari itu"
+
+#: builtin/checkout.c:1708
+#, c-format
+msgid "git checkout: --detach does not take a path argument '%s'"
+msgstr "git checkout: --detach tidak mengambil argumen jalur '%s'"
+
+#: builtin/checkout.c:1717
+msgid "--pathspec-from-file is incompatible with --detach"
+msgstr "--pathspec-from-file tidak kompatible dengan --detach"
+
+#: builtin/checkout.c:1720 builtin/reset.c:325 builtin/stash.c:1566
+msgid "--pathspec-from-file is incompatible with --patch"
+msgstr "--pathspec-from-file tidak kompatibel dengan --patch"
+
+#: builtin/checkout.c:1733
+msgid ""
+"git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
+"checking out of the index."
+msgstr ""
+"git checkout: --ours/theirs, --force dan --merge tidak kompatibel saat\n"
+"men-checkout index"
+
+#: builtin/checkout.c:1738
+msgid "you must specify path(s) to restore"
+msgstr "Anda harus sebutkan jalur untuk dipulihkan"
+
+#: builtin/checkout.c:1764 builtin/checkout.c:1766 builtin/checkout.c:1815
+#: builtin/checkout.c:1817 builtin/clone.c:122 builtin/remote.c:170
+#: builtin/remote.c:172 builtin/submodule--helper.c:2719 builtin/worktree.c:482
+#: builtin/worktree.c:484
+msgid "branch"
+msgstr "cabang"
+
+#: builtin/checkout.c:1765
+msgid "create and checkout a new branch"
+msgstr "buat dan checkout cabang baru"
+
+#: builtin/checkout.c:1767
+msgid "create/reset and checkout a branch"
+msgstr "buat/setel ulang dan checkout cabang"
+
+#: builtin/checkout.c:1768
+msgid "create reflog for new branch"
+msgstr "buat reflog untuk cabang baru"
+
+#: builtin/checkout.c:1770
+msgid "second guess 'git checkout <no-such-branch>' (default)"
+msgstr "tebakan kedua 'git checkout <tidak-ada-cabang-seperti-itu>' (default)"
+
+#: builtin/checkout.c:1771
+msgid "use overlay mode (default)"
+msgstr "gunakan mode hamparan (default)"
+
+#: builtin/checkout.c:1816
+msgid "create and switch to a new branch"
+msgstr "buat dan ganti ke cabang baru"
+
+#: builtin/checkout.c:1818
+msgid "create/reset and switch to a branch"
+msgstr "buat/setel ulang dan ganti ke cabang"
+
+#: builtin/checkout.c:1820
+msgid "second guess 'git switch <no-such-branch>'"
+msgstr "tebakan kedua 'git switch <tidak-ada-cabang-seperti-itu>'"
+
+#: builtin/checkout.c:1822
+msgid "throw away local modifications"
+msgstr "buang modifikasi lokal"
+
+#: builtin/checkout.c:1856
+msgid "which tree-ish to checkout from"
+msgstr "mana mirip-cabang untuk di-checkout"
+
+#: builtin/checkout.c:1858
+msgid "restore the index"
+msgstr "pulihkan indeks"
+
+#: builtin/checkout.c:1860
+msgid "restore the working tree (default)"
+msgstr "pulihkan pohon kerja (default)"
+
+#: builtin/checkout.c:1862
+msgid "ignore unmerged entries"
+msgstr "abaikan entri yang tak tergabung"
+
+#: builtin/checkout.c:1863
+msgid "use overlay mode"
+msgstr "gunakan mode hamparan"
+
+#: builtin/clean.c:29
+msgid ""
+"git clean [-d] [-f] [-i] [-n] [-q] [-e <pattern>] [-x | -X] [--] <paths>..."
+msgstr ""
+
+#: builtin/clean.c:33
+#, c-format
+msgid "Removing %s\n"
+msgstr ""
+
+#: builtin/clean.c:34
+#, c-format
+msgid "Would remove %s\n"
+msgstr ""
+
+#: builtin/clean.c:35
+#, c-format
+msgid "Skipping repository %s\n"
+msgstr ""
+
+#: builtin/clean.c:36
+#, c-format
+msgid "Would skip repository %s\n"
+msgstr ""
+
+#: builtin/clean.c:37
+#, c-format
+msgid "failed to remove %s"
+msgstr ""
+
+#: builtin/clean.c:38
+#, c-format
+msgid "could not lstat %s\n"
+msgstr ""
+
+#: builtin/clean.c:302 git-add--interactive.perl:593
+#, c-format
+msgid ""
+"Prompt help:\n"
+"1          - select a numbered item\n"
+"foo        - select item based on unique prefix\n"
+"           - (empty) select nothing\n"
+msgstr ""
+
+#: builtin/clean.c:306 git-add--interactive.perl:602
+#, c-format
+msgid ""
+"Prompt help:\n"
+"1          - select a single item\n"
+"3-5        - select a range of items\n"
+"2-3,6-9    - select multiple ranges\n"
+"foo        - select item based on unique prefix\n"
+"-...       - unselect specified items\n"
+"*          - choose all items\n"
+"           - (empty) finish selecting\n"
+msgstr ""
+
+#: builtin/clean.c:521 git-add--interactive.perl:568
+#: git-add--interactive.perl:573
+#, c-format, perl-format
+msgid "Huh (%s)?\n"
+msgstr ""
+
+#: builtin/clean.c:661
+#, c-format
+msgid "Input ignore patterns>> "
+msgstr ""
+
+#: builtin/clean.c:696
+#, c-format
+msgid "WARNING: Cannot find items matched by: %s"
+msgstr ""
+
+#: builtin/clean.c:717
+msgid "Select items to delete"
+msgstr ""
+
+#. TRANSLATORS: Make sure to keep [y/N] as is
+#: builtin/clean.c:758
+#, c-format
+msgid "Remove %s [y/N]? "
+msgstr ""
+
+#: builtin/clean.c:789
+msgid ""
+"clean               - start cleaning\n"
+"filter by pattern   - exclude items from deletion\n"
+"select by numbers   - select items to be deleted by numbers\n"
+"ask each            - confirm each deletion (like \"rm -i\")\n"
+"quit                - stop cleaning\n"
+"help                - this screen\n"
+"?                   - help for prompt selection"
+msgstr ""
+
+#: builtin/clean.c:825
+msgid "Would remove the following item:"
+msgid_plural "Would remove the following items:"
+msgstr[0] ""
+msgstr[1] ""
+
+#: builtin/clean.c:841
+msgid "No more files to clean, exiting."
+msgstr ""
+
+#: builtin/clean.c:903
+msgid "do not print names of files removed"
+msgstr ""
+
+#: builtin/clean.c:905
+msgid "force"
+msgstr ""
+
+#: builtin/clean.c:906
+msgid "interactive cleaning"
+msgstr ""
+
+#: builtin/clean.c:908
+msgid "remove whole directories"
+msgstr ""
+
+#: builtin/clean.c:909 builtin/describe.c:565 builtin/describe.c:567
+#: builtin/grep.c:922 builtin/log.c:184 builtin/log.c:186
+#: builtin/ls-files.c:573 builtin/name-rev.c:526 builtin/name-rev.c:528
+#: builtin/show-ref.c:179
+msgid "pattern"
+msgstr ""
+
+#: builtin/clean.c:910
+msgid "add <pattern> to ignore rules"
+msgstr ""
+
+#: builtin/clean.c:911
+msgid "remove ignored files, too"
+msgstr ""
+
+#: builtin/clean.c:913
+msgid "remove only ignored files"
+msgstr ""
+
+#: builtin/clean.c:929
+msgid ""
+"clean.requireForce set to true and neither -i, -n, nor -f given; refusing to "
+"clean"
+msgstr ""
+
+#: builtin/clean.c:932
+msgid ""
+"clean.requireForce defaults to true and neither -i, -n, nor -f given; "
+"refusing to clean"
+msgstr ""
+
+#: builtin/clean.c:944
+msgid "-x and -X cannot be used together"
+msgstr ""
+
+#: builtin/clone.c:45
+msgid "git clone [<options>] [--] <repo> [<dir>]"
+msgstr "git clone [<opsi>] [--] <repo> [<direktori>]"
+
+#: builtin/clone.c:94
+msgid "don't create a checkout"
+msgstr "jangan buat checkout"
+
+#: builtin/clone.c:95 builtin/clone.c:97 builtin/init-db.c:555
+msgid "create a bare repository"
+msgstr "buat repositori bare"
+
+#: builtin/clone.c:99
+msgid "create a mirror repository (implies bare)"
+msgstr "buat repositori cermin (implikasikan bare)"
+
+#: builtin/clone.c:101
+msgid "to clone from a local repository"
+msgstr "kloning dari repositori lokal"
+
+#: builtin/clone.c:103
+msgid "don't use local hardlinks, always copy"
+msgstr "jangan gunakan tautan keras lokal, selalu salin"
+
+#: builtin/clone.c:105
+msgid "setup as shared repository"
+msgstr "siapkan sebagai repositori berbagi"
+
+#: builtin/clone.c:107
+msgid "pathspec"
+msgstr "spek jalur"
+
+#: builtin/clone.c:107
+msgid "initialize submodules in the clone"
+msgstr "inisialisasi submodul dalam klon"
+
+#: builtin/clone.c:111
+msgid "number of submodules cloned in parallel"
+msgstr "jumlah submodul yang diklon secara paralel"
+
+#: builtin/clone.c:112 builtin/init-db.c:552
+msgid "template-directory"
+msgstr "direktori templat"
+
+#: builtin/clone.c:113 builtin/init-db.c:553
+msgid "directory from which templates will be used"
+msgstr "direktori dimana templat akan digunakan"
+
+#: builtin/clone.c:115 builtin/clone.c:117 builtin/submodule--helper.c:1831
+#: builtin/submodule--helper.c:2336
+msgid "reference repository"
+msgstr "repositori rujukan"
+
+#: builtin/clone.c:119 builtin/submodule--helper.c:1833
+#: builtin/submodule--helper.c:2338
+msgid "use --reference only while cloning"
+msgstr "gunakan --reference hanya pada saat kloning"
+
+#: builtin/clone.c:120 builtin/column.c:27 builtin/init-db.c:563
+#: builtin/merge-file.c:46 builtin/pack-objects.c:3561 builtin/repack.c:357
+msgid "name"
+msgstr "nama"
+
+#: builtin/clone.c:121
+msgid "use <name> instead of 'origin' to track upstream"
+msgstr "gunakan <nama> daripada 'origin' untuk lacak hulu"
+
+#: builtin/clone.c:123
+msgid "checkout <branch> instead of the remote's HEAD"
+msgstr "checkout <cabang> daripada HEAD remote"
+
+#: builtin/clone.c:125
+msgid "path to git-upload-pack on the remote"
+msgstr "jalur ke git-upload-pack pada remote"
+
+#: builtin/clone.c:126 builtin/fetch.c:176 builtin/grep.c:861
+#: builtin/pull.c:208
+msgid "depth"
+msgstr "kedalaman"
+
+#: builtin/clone.c:127
+msgid "create a shallow clone of that depth"
+msgstr "buat klon dangkal sedalam kedalaman tersebut"
+
+#: builtin/clone.c:128 builtin/fetch.c:178 builtin/pack-objects.c:3550
+#: builtin/pull.c:211
+msgid "time"
+msgstr "waktu"
+
+#: builtin/clone.c:129
+msgid "create a shallow clone since a specific time"
+msgstr "buat klon dangkal sejak waktu yang disebutkan"
+
+#: builtin/clone.c:130 builtin/fetch.c:180 builtin/fetch.c:203
+#: builtin/pull.c:214 builtin/pull.c:239 builtin/rebase.c:1323
+msgid "revision"
+msgstr "revisi"
+
+#: builtin/clone.c:131 builtin/fetch.c:181 builtin/pull.c:215
+msgid "deepen history of shallow clone, excluding rev"
+msgstr "perdalam riwayat klon dangkal, tidak termasuk rev"
+
+#: builtin/clone.c:133 builtin/submodule--helper.c:1843
+#: builtin/submodule--helper.c:2352
+msgid "clone only one branch, HEAD or --branch"
+msgstr "klon hanya satu cabang, HEAD atau --branch"
+
+#: builtin/clone.c:135
+msgid "don't clone any tags, and make later fetches not to follow them"
+msgstr "jangan klon tag apapun, dan buat pengambilan nanti tidak mengikutinya"
+
+#: builtin/clone.c:137
+msgid "any cloned submodules will be shallow"
+msgstr "submodul yang diklon akan dangkal"
+
+#: builtin/clone.c:138 builtin/init-db.c:561
+msgid "gitdir"
+msgstr "direktori git"
+
+#: builtin/clone.c:139 builtin/init-db.c:562
+msgid "separate git dir from working tree"
+msgstr "pisahkan direktori git dari pohon kerja"
+
+#: builtin/clone.c:140
+msgid "key=value"
+msgstr "kunci=nilai"
+
+#: builtin/clone.c:141
+msgid "set config inside the new repository"
+msgstr "setel konfigurasi di dalam repositori baru"
+
+#: builtin/clone.c:143 builtin/fetch.c:198 builtin/ls-remote.c:77
+#: builtin/pull.c:230 builtin/push.c:584 builtin/send-pack.c:196
+msgid "server-specific"
+msgstr "spesifik ke server"
+
+#: builtin/clone.c:143 builtin/fetch.c:198 builtin/ls-remote.c:77
+#: builtin/pull.c:231 builtin/push.c:584 builtin/send-pack.c:197
+msgid "option to transmit"
+msgstr "opsi untuk transmisi"
+
+#: builtin/clone.c:144 builtin/fetch.c:199 builtin/pull.c:234
+#: builtin/push.c:585
+msgid "use IPv4 addresses only"
+msgstr "gunakan hanya alamat IPv4"
+
+#: builtin/clone.c:146 builtin/fetch.c:201 builtin/pull.c:237
+#: builtin/push.c:587
+msgid "use IPv6 addresses only"
+msgstr "gunakan hanya alamat IPv6"
+
+#: builtin/clone.c:150
+msgid "any cloned submodules will use their remote-tracking branch"
+msgstr "submodul yang diklon akan menggunakan cabang yang melacak remotenya"
+
+#: builtin/clone.c:152
+msgid "initialize sparse-checkout file to include only files at root"
+msgstr ""
+"inisialisasi berkas checkout tipis agar memasukkan hanya berkas pada akar"
+
+#: builtin/clone.c:288
+msgid ""
+"No directory name could be guessed.\n"
+"Please specify a directory on the command line"
+msgstr ""
+"Nama direktori tidak dapat ditebak.\n"
+"Mohon sebutkan direktori pada baris perintah"
+
+#: builtin/clone.c:341
+#, c-format
+msgid "info: Could not add alternate for '%s': %s\n"
+msgstr "info: Tidak dapat menambahkan alternatif untuk '%s': %s\n"
+
+#: builtin/clone.c:414
+#, c-format
+msgid "%s exists and is not a directory"
+msgstr "%s ada dan bukan direktori"
+
+#: builtin/clone.c:432
+#, c-format
+msgid "failed to start iterator over '%s'"
+msgstr "gagal memulai iterator pada '%s'"
+
+#: builtin/clone.c:463
+#, c-format
+msgid "failed to create link '%s'"
+msgstr "gagal membuat tautan '%s'"
+
+#: builtin/clone.c:467
+#, c-format
+msgid "failed to copy file to '%s'"
+msgstr "gagal menyalin berkas ke '%s'"
+
+#: builtin/clone.c:472
+#, c-format
+msgid "failed to iterate over '%s'"
+msgstr "gagal iterasi pada '%s'"
+
+#: builtin/clone.c:499
+#, c-format
+msgid "done.\n"
+msgstr "selesai.\n"
+
+#: builtin/clone.c:513
+msgid ""
+"Clone succeeded, but checkout failed.\n"
+"You can inspect what was checked out with 'git status'\n"
+"and retry with 'git restore --source=HEAD :/'\n"
+msgstr ""
+"Klon sukses, tapi checkout gagal.\n"
+"Anda dapat periksa apa yang dicheckout dengan 'git status'\n"
+"dan coba lagi dengan 'git restore --source=HEAD :/'\n"
+
+#: builtin/clone.c:590
+#, c-format
+msgid "Could not find remote branch %s to clone."
+msgstr "Tidak dapat menemukan cabang remote %s untuk diklon."
+
+#: builtin/clone.c:709
+#, c-format
+msgid "unable to update %s"
+msgstr "tidak dapat memperbarui %s"
+
+#: builtin/clone.c:757
+msgid "failed to initialize sparse-checkout"
+msgstr "gagal menginisalisasi checkout tipis"
+
+#: builtin/clone.c:780
+msgid "remote HEAD refers to nonexistent ref, unable to checkout.\n"
+msgstr ""
+"HEAD remote merujuk pada ref yang tidak ada, tidak dapat men-checkout.\n"
+
+#: builtin/clone.c:812
+msgid "unable to checkout working tree"
+msgstr "tidak dapat men-checkout pohon kerja"
+
+#: builtin/clone.c:887
+msgid "unable to write parameters to config file"
+msgstr "tidak dapat menulis parameter ke berkas konfigurasi"
+
+#: builtin/clone.c:950
+msgid "cannot repack to clean up"
+msgstr "tidak dapat memaket ulang untuk pembersihan"
+
+#: builtin/clone.c:952
+msgid "cannot unlink temporary alternates file"
+msgstr "tidak dapat batal-taut berkas alternatif sementara"
+
+#: builtin/clone.c:993 builtin/receive-pack.c:2493
+msgid "Too many arguments."
+msgstr "Terlalu banyak argumen."
+
+#: builtin/clone.c:997
+msgid "You must specify a repository to clone."
+msgstr "Anda harus sebutkan repositori untuk diklon."
+
+#: builtin/clone.c:1010
+#, c-format
+msgid "--bare and --origin %s options are incompatible."
+msgstr "--bare dan --origin %s tidak kompatibel."
+
+#: builtin/clone.c:1013
+msgid "--bare and --separate-git-dir are incompatible."
+msgstr "--bare dan --separate-git-dir tidak kompatibel."
+
+#: builtin/clone.c:1026
+#, c-format
+msgid "repository '%s' does not exist"
+msgstr "repositori '%s' tidak ada"
+
+#: builtin/clone.c:1030 builtin/fetch.c:1951
+#, c-format
+msgid "depth %s is not a positive number"
+msgstr "kedalaman %s bukan bilangan positif"
+
+#: builtin/clone.c:1040
+#, c-format
+msgid "destination path '%s' already exists and is not an empty directory."
+msgstr "jalur tujuan '%s' sudah ada dan bukan direktori kosong"
+
+#: builtin/clone.c:1046
+#, c-format
+msgid "repository path '%s' already exists and is not an empty directory."
+msgstr "jalur repositori '%s' sudah ada dan bukan direktori kosong"
+
+#: builtin/clone.c:1060
+#, c-format
+msgid "working tree '%s' already exists."
+msgstr "pohon kerja '%s' sudah ada."
+
+#: builtin/clone.c:1075 builtin/clone.c:1096 builtin/difftool.c:271
+#: builtin/log.c:1986 builtin/worktree.c:282 builtin/worktree.c:314
+#, c-format
+msgid "could not create leading directories of '%s'"
+msgstr "tidak dapat membuat direktori pendahulu '%s'"
+
+#: builtin/clone.c:1080
+#, c-format
+msgid "could not create work tree dir '%s'"
+msgstr "tidak dapat membuat direktori pohon kerja '%s'"
+
+#: builtin/clone.c:1100
+#, c-format
+msgid "Cloning into bare repository '%s'...\n"
+msgstr "Kloning ke repositori bare '%s'...\n"
+
+#: builtin/clone.c:1102
+#, c-format
+msgid "Cloning into '%s'...\n"
+msgstr "Kloning ke '%s'...\n"
+
+#: builtin/clone.c:1126
+msgid ""
+"clone --recursive is not compatible with both --reference and --reference-if-"
+"able"
+msgstr ""
+"clone --recursive tidak kompatibel dengan baik --reference dan --reference-"
+"if-able"
+
+#: builtin/clone.c:1170 builtin/remote.c:200 builtin/remote.c:705
+#, c-format
+msgid "'%s' is not a valid remote name"
+msgstr "'%s' bukan nama remote yang valid"
+
+#: builtin/clone.c:1211
+msgid "--depth is ignored in local clones; use file:// instead."
+msgstr "--depth diabaikan di klon lokal; gunakan file:// sebagai gantinya."
+
+#: builtin/clone.c:1213
+msgid "--shallow-since is ignored in local clones; use file:// instead."
+msgstr ""
+"--shallow-since diabaikan di klon lokal; gunakan file:// sebagai gantinya."
+
+#: builtin/clone.c:1215
+msgid "--shallow-exclude is ignored in local clones; use file:// instead."
+msgstr ""
+"--shallow-exclude diabaikan di klon lokal; gunakan file:// sebagai gantinya."
+
+#: builtin/clone.c:1217
+msgid "--filter is ignored in local clones; use file:// instead."
+msgstr "--filter diabaikan di klon lokal; gunakan file:// sebagai gantinya."
+
+#: builtin/clone.c:1220
+msgid "source repository is shallow, ignoring --local"
+msgstr "repositori sumber dangkal, abaikan --local"
+
+#: builtin/clone.c:1225
+msgid "--local is ignored"
+msgstr "--local diabaikan"
+
+#: builtin/clone.c:1315 builtin/clone.c:1323
+#, c-format
+msgid "Remote branch %s not found in upstream %s"
+msgstr "Cabang remote %s tidak ditemukan di hulu %s"
+
+#: builtin/clone.c:1326
+msgid "You appear to have cloned an empty repository."
+msgstr "Anda tampaknya mengklon repositori kosong."
+
+#: builtin/column.c:10
+msgid "git column [<options>]"
+msgstr ""
+
+#: builtin/column.c:27
+msgid "lookup config vars"
+msgstr ""
+
+#: builtin/column.c:28 builtin/column.c:29
+msgid "layout to use"
+msgstr ""
+
+#: builtin/column.c:30
+msgid "Maximum width"
+msgstr ""
+
+#: builtin/column.c:31
+msgid "Padding space on left border"
+msgstr ""
+
+#: builtin/column.c:32
+msgid "Padding space on right border"
+msgstr ""
+
+#: builtin/column.c:33
+msgid "Padding space between columns"
+msgstr ""
+
+#: builtin/column.c:51
+msgid "--command must be the first argument"
+msgstr ""
+
+#: builtin/commit-graph.c:13 builtin/commit-graph.c:22
+msgid ""
+"git commit-graph verify [--object-dir <objdir>] [--shallow] [--[no-]progress]"
+msgstr ""
+
+#: builtin/commit-graph.c:14 builtin/commit-graph.c:27
+msgid ""
+"git commit-graph write [--object-dir <objdir>] [--append] [--"
+"split[=<strategy>]] [--reachable|--stdin-packs|--stdin-commits] [--changed-"
+"paths] [--[no-]max-new-filters <n>] [--[no-]progress] <split options>"
+msgstr ""
+
+#: builtin/commit-graph.c:64
+#, c-format
+msgid "could not find object directory matching %s"
+msgstr ""
+
+#: builtin/commit-graph.c:80 builtin/commit-graph.c:210
+#: builtin/commit-graph.c:316 builtin/fetch.c:187 builtin/log.c:1768
+msgid "dir"
+msgstr ""
+
+#: builtin/commit-graph.c:81 builtin/commit-graph.c:211
+#: builtin/commit-graph.c:317
+msgid "the object directory to store the graph"
+msgstr ""
+
+#: builtin/commit-graph.c:83
+msgid "if the commit-graph is split, only verify the tip file"
+msgstr ""
+
+#: builtin/commit-graph.c:106
+#, c-format
+msgid "Could not open commit-graph '%s'"
+msgstr ""
+
+#: builtin/commit-graph.c:142
+#, c-format
+msgid "unrecognized --split argument, %s"
+msgstr ""
+
+#: builtin/commit-graph.c:155
+#, c-format
+msgid "unexpected non-hex object ID: %s"
+msgstr ""
+
+#: builtin/commit-graph.c:160
+#, c-format
+msgid "invalid object: %s"
+msgstr ""
+
+#: builtin/commit-graph.c:213
+msgid "start walk at all refs"
+msgstr ""
+
+#: builtin/commit-graph.c:215
+msgid "scan pack-indexes listed by stdin for commits"
+msgstr ""
+
+#: builtin/commit-graph.c:217
+msgid "start walk at commits listed by stdin"
+msgstr ""
+
+#: builtin/commit-graph.c:219
+msgid "include all commits already in the commit-graph file"
+msgstr ""
+
+#: builtin/commit-graph.c:221
+msgid "enable computation for changed paths"
+msgstr ""
+
+#: builtin/commit-graph.c:224
+msgid "allow writing an incremental commit-graph file"
+msgstr ""
+
+#: builtin/commit-graph.c:228
+msgid "maximum number of commits in a non-base split commit-graph"
+msgstr ""
+
+#: builtin/commit-graph.c:230
+msgid "maximum ratio between two levels of a split commit-graph"
+msgstr ""
+
+#: builtin/commit-graph.c:232
+msgid "only expire files older than a given date-time"
+msgstr ""
+
+#: builtin/commit-graph.c:234
+msgid "maximum number of changed-path Bloom filters to compute"
+msgstr ""
+
+#: builtin/commit-graph.c:255
+msgid "use at most one of --reachable, --stdin-commits, or --stdin-packs"
+msgstr ""
+
+#: builtin/commit-graph.c:287
+msgid "Collecting commits from input"
+msgstr ""
+
+#: builtin/commit-tree.c:18
+msgid ""
+"git commit-tree [(-p <parent>)...] [-S[<keyid>]] [(-m <message>)...] [(-F "
+"<file>)...] <tree>"
+msgstr ""
+
+#: builtin/commit-tree.c:31
+#, c-format
+msgid "duplicate parent %s ignored"
+msgstr ""
+
+#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:557
+#, c-format
+msgid "not a valid object name %s"
+msgstr ""
+
+#: builtin/commit-tree.c:93
+#, c-format
+msgid "git commit-tree: failed to open '%s'"
+msgstr ""
+
+#: builtin/commit-tree.c:96
+#, c-format
+msgid "git commit-tree: failed to read '%s'"
+msgstr ""
+
+#: builtin/commit-tree.c:98
+#, c-format
+msgid "git commit-tree: failed to close '%s'"
+msgstr ""
+
+#: builtin/commit-tree.c:111
+msgid "parent"
+msgstr ""
+
+#: builtin/commit-tree.c:112
+msgid "id of a parent commit object"
+msgstr ""
+
+#: builtin/commit-tree.c:114 builtin/commit.c:1504 builtin/merge.c:282
+#: builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1537
+#: builtin/tag.c:445
+msgid "message"
+msgstr ""
+
+#: builtin/commit-tree.c:115 builtin/commit.c:1504
+msgid "commit message"
+msgstr ""
+
+#: builtin/commit-tree.c:118
+msgid "read commit log message from file"
+msgstr ""
+
+#: builtin/commit-tree.c:121 builtin/commit.c:1516 builtin/merge.c:299
+#: builtin/pull.c:176 builtin/revert.c:118
+msgid "GPG sign commit"
+msgstr ""
+
+#: builtin/commit-tree.c:133
+msgid "must give exactly one tree"
+msgstr ""
+
+#: builtin/commit-tree.c:140
+msgid "git commit-tree: failed to read"
+msgstr ""
+
+#: builtin/commit.c:41
+msgid "git commit [<options>] [--] <pathspec>..."
+msgstr ""
+
+#: builtin/commit.c:46
+msgid "git status [<options>] [--] <pathspec>..."
+msgstr ""
+
+#: builtin/commit.c:51
+msgid ""
+"You asked to amend the most recent commit, but doing so would make\n"
+"it empty. You can repeat your command with --allow-empty, or you can\n"
+"remove the commit entirely with \"git reset HEAD^\".\n"
+msgstr ""
+
+#: builtin/commit.c:56
+msgid ""
+"The previous cherry-pick is now empty, possibly due to conflict resolution.\n"
+"If you wish to commit it anyway, use:\n"
+"\n"
+"    git commit --allow-empty\n"
+"\n"
+msgstr ""
+
+#: builtin/commit.c:63
+msgid "Otherwise, please use 'git rebase --skip'\n"
+msgstr ""
+
+#: builtin/commit.c:66
+msgid "Otherwise, please use 'git cherry-pick --skip'\n"
+msgstr ""
+
+#: builtin/commit.c:69
+msgid ""
+"and then use:\n"
+"\n"
+"    git cherry-pick --continue\n"
+"\n"
+"to resume cherry-picking the remaining commits.\n"
+"If you wish to skip this commit, use:\n"
+"\n"
+"    git cherry-pick --skip\n"
+"\n"
+msgstr ""
+
+#: builtin/commit.c:312
+msgid "failed to unpack HEAD tree object"
+msgstr ""
+
+#: builtin/commit.c:348
+msgid "--pathspec-from-file with -a does not make sense"
+msgstr ""
+
+#: builtin/commit.c:361
+msgid "No paths with --include/--only does not make sense."
+msgstr ""
+
+#: builtin/commit.c:373
+msgid "unable to create temporary index"
+msgstr ""
+
+#: builtin/commit.c:382
+msgid "interactive add failed"
+msgstr ""
+
+#: builtin/commit.c:397
+msgid "unable to update temporary index"
+msgstr ""
+
+#: builtin/commit.c:399
+msgid "Failed to update main cache tree"
+msgstr ""
+
+#: builtin/commit.c:424 builtin/commit.c:447 builtin/commit.c:495
+msgid "unable to write new_index file"
+msgstr ""
+
+#: builtin/commit.c:476
+msgid "cannot do a partial commit during a merge."
+msgstr ""
+
+#: builtin/commit.c:478
+msgid "cannot do a partial commit during a cherry-pick."
+msgstr ""
+
+#: builtin/commit.c:480
+msgid "cannot do a partial commit during a rebase."
+msgstr ""
+
+#: builtin/commit.c:488
+msgid "cannot read the index"
+msgstr ""
+
+#: builtin/commit.c:507
+msgid "unable to write temporary index file"
+msgstr ""
+
+#: builtin/commit.c:605
+#, c-format
+msgid "commit '%s' lacks author header"
+msgstr ""
+
+#: builtin/commit.c:607
+#, c-format
+msgid "commit '%s' has malformed author line"
+msgstr ""
+
+#: builtin/commit.c:626
+msgid "malformed --author parameter"
+msgstr ""
+
+#: builtin/commit.c:679
+msgid ""
+"unable to select a comment character that is not used\n"
+"in the current commit message"
+msgstr ""
+
+#: builtin/commit.c:717 builtin/commit.c:750 builtin/commit.c:1097
+#, c-format
+msgid "could not lookup commit %s"
+msgstr ""
+
+#: builtin/commit.c:729 builtin/shortlog.c:413
+#, c-format
+msgid "(reading log message from standard input)\n"
+msgstr ""
+
+#: builtin/commit.c:731
+msgid "could not read log from standard input"
+msgstr ""
+
+#: builtin/commit.c:735
+#, c-format
+msgid "could not read log file '%s'"
+msgstr ""
+
+#: builtin/commit.c:766 builtin/commit.c:782
+msgid "could not read SQUASH_MSG"
+msgstr ""
+
+#: builtin/commit.c:773
+msgid "could not read MERGE_MSG"
+msgstr ""
+
+#: builtin/commit.c:833
+msgid "could not write commit template"
+msgstr ""
+
+#: builtin/commit.c:853
+msgid ""
+"\n"
+"It looks like you may be committing a merge.\n"
+"If this is not correct, please run\n"
+"\tgit update-ref -d MERGE_HEAD\n"
+"and try again.\n"
+msgstr ""
+
+#: builtin/commit.c:858
+msgid ""
+"\n"
+"It looks like you may be committing a cherry-pick.\n"
+"If this is not correct, please run\n"
+"\tgit update-ref -d CHERRY_PICK_HEAD\n"
+"and try again.\n"
+msgstr ""
+
+#: builtin/commit.c:868
+#, 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:876
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%c' will be kept; you may remove them yourself if you want to.\n"
+"An empty message aborts the commit.\n"
+msgstr ""
+
+#: builtin/commit.c:893
+#, c-format
+msgid "%sAuthor:    %.*s <%.*s>"
+msgstr ""
+
+#: builtin/commit.c:901
+#, c-format
+msgid "%sDate:      %s"
+msgstr ""
+
+#: builtin/commit.c:908
+#, c-format
+msgid "%sCommitter: %.*s <%.*s>"
+msgstr ""
+
+#: builtin/commit.c:926
+msgid "Cannot read index"
+msgstr ""
+
+#: builtin/commit.c:997
+msgid "Error building trees"
+msgstr ""
+
+#: builtin/commit.c:1011 builtin/tag.c:308
+#, c-format
+msgid "Please supply the message using either -m or -F option.\n"
+msgstr ""
+
+#: builtin/commit.c:1055
+#, c-format
+msgid "--author '%s' is not 'Name <email>' and matches no existing author"
+msgstr ""
+
+#: builtin/commit.c:1069
+#, c-format
+msgid "Invalid ignored mode '%s'"
+msgstr ""
+
+#: builtin/commit.c:1087 builtin/commit.c:1331
+#, c-format
+msgid "Invalid untracked files mode '%s'"
+msgstr ""
+
+#: builtin/commit.c:1127
+msgid "--long and -z are incompatible"
+msgstr ""
+
+#: builtin/commit.c:1171
+msgid "Using both --reset-author and --author does not make sense"
+msgstr ""
+
+#: builtin/commit.c:1180
+msgid "You have nothing to amend."
+msgstr ""
+
+#: builtin/commit.c:1183
+msgid "You are in the middle of a merge -- cannot amend."
+msgstr ""
+
+#: builtin/commit.c:1185
+msgid "You are in the middle of a cherry-pick -- cannot amend."
+msgstr ""
+
+#: builtin/commit.c:1187
+msgid "You are in the middle of a rebase -- cannot amend."
+msgstr ""
+
+#: builtin/commit.c:1190
+msgid "Options --squash and --fixup cannot be used together"
+msgstr ""
+
+#: builtin/commit.c:1200
+msgid "Only one of -c/-C/-F/--fixup can be used."
+msgstr ""
+
+#: builtin/commit.c:1202
+msgid "Option -m cannot be combined with -c/-C/-F."
+msgstr ""
+
+#: builtin/commit.c:1211
+msgid "--reset-author can be used only with -C, -c or --amend."
+msgstr ""
+
+#: builtin/commit.c:1229
+msgid "Only one of --include/--only/--all/--interactive/--patch can be used."
+msgstr ""
+
+#: builtin/commit.c:1235
+#, c-format
+msgid "paths '%s ...' with -a does not make sense"
+msgstr ""
+
+#: builtin/commit.c:1366 builtin/commit.c:1527
+msgid "show status concisely"
+msgstr ""
+
+#: builtin/commit.c:1368 builtin/commit.c:1529
+msgid "show branch information"
+msgstr ""
+
+#: builtin/commit.c:1370
+msgid "show stash information"
+msgstr ""
+
+#: builtin/commit.c:1372 builtin/commit.c:1531
+msgid "compute full ahead/behind values"
+msgstr ""
+
+#: builtin/commit.c:1374
+msgid "version"
+msgstr ""
+
+#: builtin/commit.c:1374 builtin/commit.c:1533 builtin/push.c:560
+#: builtin/worktree.c:679
+msgid "machine-readable output"
+msgstr "keluaran yang dapat dibaca mesin"
+
+#: builtin/commit.c:1377 builtin/commit.c:1535
+msgid "show status in long format (default)"
+msgstr ""
+
+#: builtin/commit.c:1380 builtin/commit.c:1538
+msgid "terminate entries with NUL"
+msgstr ""
+
+#: builtin/commit.c:1382 builtin/commit.c:1386 builtin/commit.c:1541
+#: builtin/fast-export.c:1198 builtin/fast-export.c:1201
+#: builtin/fast-export.c:1204 builtin/rebase.c:1412 parse-options.h:336
+msgid "mode"
+msgstr ""
+
+#: builtin/commit.c:1383 builtin/commit.c:1541
+msgid "show untracked files, optional modes: all, normal, no. (Default: all)"
+msgstr ""
+
+#: builtin/commit.c:1387
+msgid ""
+"show ignored files, optional modes: traditional, matching, no. (Default: "
+"traditional)"
+msgstr ""
+
+#: builtin/commit.c:1389 parse-options.h:192
+msgid "when"
+msgstr ""
+
+#: builtin/commit.c:1390
+msgid ""
+"ignore changes to submodules, optional when: all, dirty, untracked. "
+"(Default: all)"
+msgstr ""
+
+#: builtin/commit.c:1392
+msgid "list untracked files in columns"
+msgstr ""
+
+#: builtin/commit.c:1393
+msgid "do not detect renames"
+msgstr ""
+
+#: builtin/commit.c:1395
+msgid "detect renames, optionally set similarity index"
+msgstr ""
+
+#: builtin/commit.c:1415
+msgid "Unsupported combination of ignored and untracked-files arguments"
+msgstr ""
+
+#: builtin/commit.c:1497
+msgid "suppress summary after successful commit"
+msgstr ""
+
+#: builtin/commit.c:1498
+msgid "show diff in commit message template"
+msgstr ""
+
+#: builtin/commit.c:1500
+msgid "Commit message options"
+msgstr ""
+
+#: builtin/commit.c:1501 builtin/merge.c:286 builtin/tag.c:447
+msgid "read message from file"
+msgstr ""
+
+#: builtin/commit.c:1502
+msgid "author"
+msgstr ""
+
+#: builtin/commit.c:1502
+msgid "override author for commit"
+msgstr ""
+
+#: builtin/commit.c:1503 builtin/gc.c:550
+msgid "date"
+msgstr ""
+
+#: builtin/commit.c:1503
+msgid "override date for commit"
+msgstr ""
+
+#: builtin/commit.c:1505 builtin/commit.c:1506 builtin/commit.c:1507
+#: builtin/commit.c:1508 parse-options.h:328 ref-filter.h:90
+msgid "commit"
+msgstr ""
+
+#: builtin/commit.c:1505
+msgid "reuse and edit message from specified commit"
+msgstr ""
+
+#: builtin/commit.c:1506
+msgid "reuse message from specified commit"
+msgstr ""
+
+#: builtin/commit.c:1507
+msgid "use autosquash formatted message to fixup specified commit"
+msgstr ""
+
+#: builtin/commit.c:1508
+msgid "use autosquash formatted message to squash specified commit"
+msgstr ""
+
+#: builtin/commit.c:1509
+msgid "the commit is authored by me now (used with -C/-c/--amend)"
+msgstr ""
+
+#: builtin/commit.c:1510 builtin/log.c:1743 builtin/merge.c:302
+#: builtin/pull.c:145 builtin/revert.c:110
+msgid "add a Signed-off-by trailer"
+msgstr ""
+
+#: builtin/commit.c:1511
+msgid "use specified template file"
+msgstr ""
+
+#: builtin/commit.c:1512
+msgid "force edit of commit"
+msgstr ""
+
+#: builtin/commit.c:1514
+msgid "include status in commit message template"
+msgstr ""
+
+#: builtin/commit.c:1519
+msgid "Commit contents options"
+msgstr ""
+
+#: builtin/commit.c:1520
+msgid "commit all changed files"
+msgstr ""
+
+#: builtin/commit.c:1521
+msgid "add specified files to index for commit"
+msgstr ""
+
+#: builtin/commit.c:1522
+msgid "interactively add files"
+msgstr ""
+
+#: builtin/commit.c:1523
+msgid "interactively add changes"
+msgstr ""
+
+#: builtin/commit.c:1524
+msgid "commit only specified files"
+msgstr ""
+
+#: builtin/commit.c:1525
+msgid "bypass pre-commit and commit-msg hooks"
+msgstr ""
+
+#: builtin/commit.c:1526
+msgid "show what would be committed"
+msgstr ""
+
+#: builtin/commit.c:1539
+msgid "amend previous commit"
+msgstr ""
+
+#: builtin/commit.c:1540
+msgid "bypass post-rewrite hook"
+msgstr ""
+
+#: builtin/commit.c:1547
+msgid "ok to record an empty change"
+msgstr ""
+
+#: builtin/commit.c:1549
+msgid "ok to record a change with an empty message"
+msgstr ""
+
+#: builtin/commit.c:1622
+#, c-format
+msgid "Corrupt MERGE_HEAD file (%s)"
+msgstr ""
+
+#: builtin/commit.c:1629
+msgid "could not read MERGE_MODE"
+msgstr ""
+
+#: builtin/commit.c:1650
+#, c-format
+msgid "could not read commit message: %s"
+msgstr ""
+
+#: builtin/commit.c:1657
+#, c-format
+msgid "Aborting commit due to empty commit message.\n"
+msgstr ""
+
+#: builtin/commit.c:1662
+#, c-format
+msgid "Aborting commit; you did not edit the message.\n"
+msgstr ""
+
+#: builtin/commit.c:1696
+msgid ""
+"repository has been updated, but unable to write\n"
+"new_index file. Check that disk is not full and quota is\n"
+"not exceeded, and then \"git restore --staged :/\" to recover."
+msgstr ""
+
+#: builtin/config.c:11
+msgid "git config [<options>]"
+msgstr ""
+
+#: builtin/config.c:109 builtin/env--helper.c:27
+#, c-format
+msgid "unrecognized --type argument, %s"
+msgstr ""
+
+#: builtin/config.c:121
+msgid "only one type at a time"
+msgstr ""
+
+#: builtin/config.c:130
+msgid "Config file location"
+msgstr ""
+
+#: builtin/config.c:131
+msgid "use global config file"
+msgstr ""
+
+#: builtin/config.c:132
+msgid "use system config file"
+msgstr ""
+
+#: builtin/config.c:133
+msgid "use repository config file"
+msgstr ""
+
+#: builtin/config.c:134
+msgid "use per-worktree config file"
+msgstr ""
+
+#: builtin/config.c:135
+msgid "use given config file"
+msgstr ""
+
+#: builtin/config.c:136
+msgid "blob-id"
+msgstr ""
+
+#: builtin/config.c:136
+msgid "read config from given blob object"
+msgstr ""
+
+#: builtin/config.c:137
+msgid "Action"
+msgstr ""
+
+#: builtin/config.c:138
+msgid "get value: name [value-pattern]"
+msgstr ""
+
+#: builtin/config.c:139
+msgid "get all values: key [value-pattern]"
+msgstr ""
+
+#: builtin/config.c:140
+msgid "get values for regexp: name-regex [value-pattern]"
+msgstr ""
+
+#: builtin/config.c:141
+msgid "get value specific for the URL: section[.var] URL"
+msgstr ""
+
+#: builtin/config.c:142
+msgid "replace all matching variables: name value [value-pattern]"
+msgstr ""
+
+#: builtin/config.c:143
+msgid "add a new variable: name value"
+msgstr ""
+
+#: builtin/config.c:144
+msgid "remove a variable: name [value-pattern]"
+msgstr ""
+
+#: builtin/config.c:145
+msgid "remove all matches: name [value-pattern]"
+msgstr ""
+
+#: builtin/config.c:146
+msgid "rename section: old-name new-name"
+msgstr ""
+
+#: builtin/config.c:147
+msgid "remove a section: name"
+msgstr ""
+
+#: builtin/config.c:148
+msgid "list all"
+msgstr ""
+
+#: builtin/config.c:149
+msgid "use string equality when comparing values to 'value-pattern'"
+msgstr ""
+
+#: builtin/config.c:150
+msgid "open an editor"
+msgstr ""
+
+#: builtin/config.c:151
+msgid "find the color configured: slot [default]"
+msgstr ""
+
+#: builtin/config.c:152
+msgid "find the color setting: slot [stdout-is-tty]"
+msgstr ""
+
+#: builtin/config.c:153
+msgid "Type"
+msgstr ""
+
+#: builtin/config.c:154 builtin/env--helper.c:43
+msgid "value is given this type"
+msgstr ""
+
+#: builtin/config.c:155
+msgid "value is \"true\" or \"false\""
+msgstr ""
+
+#: builtin/config.c:156
+msgid "value is decimal number"
+msgstr ""
+
+#: builtin/config.c:157
+msgid "value is --bool or --int"
+msgstr ""
+
+#: builtin/config.c:158
+msgid "value is --bool or string"
+msgstr ""
+
+#: builtin/config.c:159
+msgid "value is a path (file or directory name)"
+msgstr ""
+
+#: builtin/config.c:160
+msgid "value is an expiry date"
+msgstr ""
+
+#: builtin/config.c:161
+msgid "Other"
+msgstr ""
+
+#: builtin/config.c:162
+msgid "terminate values with NUL byte"
+msgstr ""
+
+#: builtin/config.c:163
+msgid "show variable names only"
+msgstr ""
+
+#: builtin/config.c:164
+msgid "respect include directives on lookup"
+msgstr ""
+
+#: builtin/config.c:165
+msgid "show origin of config (file, standard input, blob, command line)"
+msgstr ""
+
+#: builtin/config.c:166
+msgid "show scope of config (worktree, local, global, system, command)"
+msgstr ""
+
+#: builtin/config.c:167 builtin/env--helper.c:45
+msgid "value"
+msgstr ""
+
+#: builtin/config.c:167
+msgid "with --get, use default value when missing entry"
+msgstr ""
+
+#: builtin/config.c:181
+#, c-format
+msgid "wrong number of arguments, should be %d"
+msgstr ""
+
+#: builtin/config.c:183
+#, c-format
+msgid "wrong number of arguments, should be from %d to %d"
+msgstr ""
+
+#: builtin/config.c:339
+#, c-format
+msgid "invalid key pattern: %s"
+msgstr ""
+
+#: builtin/config.c:377
+#, c-format
+msgid "failed to format default config value: %s"
+msgstr ""
+
+#: builtin/config.c:441
+#, c-format
+msgid "cannot parse color '%s'"
+msgstr ""
+
+#: builtin/config.c:483
+msgid "unable to parse default color value"
+msgstr ""
+
+#: builtin/config.c:536 builtin/config.c:833
+msgid "not in a git directory"
+msgstr ""
+
+#: builtin/config.c:539
+msgid "writing to stdin is not supported"
+msgstr ""
+
+#: builtin/config.c:542
+msgid "writing config blobs is not supported"
+msgstr ""
+
+#: builtin/config.c:627
+#, c-format
+msgid ""
+"# This is Git's per-user configuration file.\n"
+"[user]\n"
+"# Please adapt and uncomment the following lines:\n"
+"#\tname = %s\n"
+"#\temail = %s\n"
+msgstr ""
+
+#: builtin/config.c:652
+msgid "only one config file at a time"
+msgstr ""
+
+#: builtin/config.c:658
+msgid "--local can only be used inside a git repository"
+msgstr ""
+
+#: builtin/config.c:660
+msgid "--blob can only be used inside a git repository"
+msgstr ""
+
+#: builtin/config.c:662
+msgid "--worktree can only be used inside a git repository"
+msgstr ""
+
+#: builtin/config.c:684
+msgid "$HOME not set"
+msgstr ""
+
+#: builtin/config.c:708
+msgid ""
+"--worktree cannot be used with multiple working trees unless the config\n"
+"extension worktreeConfig is enabled. Please read \"CONFIGURATION FILE\"\n"
+"section in \"git help worktree\" for details"
+msgstr ""
+
+#: builtin/config.c:743
+msgid "--get-color and variable type are incoherent"
+msgstr ""
+
+#: builtin/config.c:748
+msgid "only one action at a time"
+msgstr ""
+
+#: builtin/config.c:761
+msgid "--name-only is only applicable to --list or --get-regexp"
+msgstr ""
+
+#: builtin/config.c:767
+msgid ""
+"--show-origin is only applicable to --get, --get-all, --get-regexp, and --"
+"list"
+msgstr ""
+
+#: builtin/config.c:773
+msgid "--default is only applicable to --get"
+msgstr ""
+
+#: builtin/config.c:806
+msgid "--fixed-value only applies with 'value-pattern'"
+msgstr ""
+
+#: builtin/config.c:822
+#, c-format
+msgid "unable to read config file '%s'"
+msgstr ""
+
+#: builtin/config.c:825
+msgid "error processing config file(s)"
+msgstr ""
+
+#: builtin/config.c:835
+msgid "editing stdin is not supported"
+msgstr ""
+
+#: builtin/config.c:837
+msgid "editing blobs is not supported"
+msgstr ""
+
+#: builtin/config.c:851
+#, c-format
+msgid "cannot create configuration file %s"
+msgstr ""
+
+#: builtin/config.c:864
+#, c-format
+msgid ""
+"cannot overwrite multiple values with a single value\n"
+"       Use a regexp, --add or --replace-all to change %s."
+msgstr ""
+
+#: builtin/config.c:943 builtin/config.c:954
+#, c-format
+msgid "no such section: %s"
+msgstr ""
+
+#: builtin/count-objects.c:90
+msgid "git count-objects [-v] [-H | --human-readable]"
+msgstr ""
+
+#: builtin/count-objects.c:100
+msgid "print sizes in human readable format"
+msgstr ""
+
+#: builtin/credential-cache--daemon.c:226
+#, c-format
+msgid ""
+"The permissions on your socket directory are too loose; other\n"
+"users may be able to read your cached credentials. Consider running:\n"
+"\n"
+"\tchmod 0700 %s"
+msgstr ""
+
+#: builtin/credential-cache--daemon.c:275
+msgid "print debugging messages to stderr"
+msgstr ""
+
+#: builtin/credential-cache--daemon.c:315
+msgid "credential-cache--daemon unavailable; no unix socket support"
+msgstr ""
+
+#: builtin/credential-cache.c:154
+msgid "credential-cache unavailable; no unix socket support"
+msgstr ""
+
+#: builtin/credential-store.c:66
+#, c-format
+msgid "unable to get credential storage lock in %d ms"
+msgstr ""
+
+#: builtin/describe.c:26
+msgid "git describe [<options>] [<commit-ish>...]"
+msgstr ""
+
+#: builtin/describe.c:27
+msgid "git describe [<options>] --dirty"
+msgstr ""
+
+#: builtin/describe.c:63
+msgid "head"
+msgstr ""
+
+#: builtin/describe.c:63
+msgid "lightweight"
+msgstr ""
+
+#: builtin/describe.c:63
+msgid "annotated"
+msgstr ""
+
+#: builtin/describe.c:277
+#, c-format
+msgid "annotated tag %s not available"
+msgstr ""
+
+#: builtin/describe.c:281
+#, c-format
+msgid "tag '%s' is externally known as '%s'"
+msgstr ""
+
+#: builtin/describe.c:328
+#, c-format
+msgid "no tag exactly matches '%s'"
+msgstr ""
+
+#: builtin/describe.c:330
+#, c-format
+msgid "No exact match on refs or tags, searching to describe\n"
+msgstr ""
+
+#: builtin/describe.c:397
+#, c-format
+msgid "finished search at %s\n"
+msgstr ""
+
+#: builtin/describe.c:424
+#, c-format
+msgid ""
+"No annotated tags can describe '%s'.\n"
+"However, there were unannotated tags: try --tags."
+msgstr ""
+
+#: builtin/describe.c:428
+#, c-format
+msgid ""
+"No tags can describe '%s'.\n"
+"Try --always, or create some tags."
+msgstr ""
+
+#: builtin/describe.c:458
+#, c-format
+msgid "traversed %lu commits\n"
+msgstr ""
+
+#: builtin/describe.c:461
+#, c-format
+msgid ""
+"more than %i tags found; listed %i most recent\n"
+"gave up search at %s\n"
+msgstr ""
+
+#: builtin/describe.c:529
+#, c-format
+msgid "describe %s\n"
+msgstr ""
+
+#: builtin/describe.c:532
+#, c-format
+msgid "Not a valid object name %s"
+msgstr ""
+
+#: builtin/describe.c:540
+#, c-format
+msgid "%s is neither a commit nor blob"
+msgstr ""
+
+#: builtin/describe.c:554
+msgid "find the tag that comes after the commit"
+msgstr ""
+
+#: builtin/describe.c:555
+msgid "debug search strategy on stderr"
+msgstr ""
+
+#: builtin/describe.c:556
+msgid "use any ref"
+msgstr ""
+
+#: builtin/describe.c:557
+msgid "use any tag, even unannotated"
+msgstr ""
+
+#: builtin/describe.c:558
+msgid "always use long format"
+msgstr ""
+
+#: builtin/describe.c:559
+msgid "only follow first parent"
+msgstr ""
+
+#: builtin/describe.c:562
+msgid "only output exact matches"
+msgstr ""
+
+#: builtin/describe.c:564
+msgid "consider <n> most recent tags (default: 10)"
+msgstr ""
+
+#: builtin/describe.c:566
+msgid "only consider tags matching <pattern>"
+msgstr ""
+
+#: builtin/describe.c:568
+msgid "do not consider tags matching <pattern>"
+msgstr ""
+
+#: builtin/describe.c:570 builtin/name-rev.c:535
+msgid "show abbreviated commit object as fallback"
+msgstr ""
+
+#: builtin/describe.c:571 builtin/describe.c:574
+msgid "mark"
+msgstr ""
+
+#: builtin/describe.c:572
+msgid "append <mark> on dirty working tree (default: \"-dirty\")"
+msgstr ""
+
+#: builtin/describe.c:575
+msgid "append <mark> on broken working tree (default: \"-broken\")"
+msgstr ""
+
+#: builtin/describe.c:593
+msgid "--long is incompatible with --abbrev=0"
+msgstr ""
+
+#: builtin/describe.c:622
+msgid "No names found, cannot describe anything."
+msgstr ""
+
+#: builtin/describe.c:673
+msgid "--dirty is incompatible with commit-ishes"
+msgstr ""
+
+#: builtin/describe.c:675
+msgid "--broken is incompatible with commit-ishes"
+msgstr ""
+
+#: builtin/diff-tree.c:155
+msgid "--stdin and --merge-base are mutually exclusive"
+msgstr ""
+
+#: builtin/diff-tree.c:157
+msgid "--merge-base only works with two commits"
+msgstr ""
+
+#: builtin/diff.c:92
+#, c-format
+msgid "'%s': not a regular file or symlink"
+msgstr ""
+
+#: builtin/diff.c:259
+#, c-format
+msgid "invalid option: %s"
+msgstr ""
+
+#: builtin/diff.c:376
+#, c-format
+msgid "%s...%s: no merge base"
+msgstr ""
+
+#: builtin/diff.c:486
+msgid "Not a git repository"
+msgstr ""
+
+#: builtin/diff.c:532 builtin/grep.c:682
+#, c-format
+msgid "invalid object '%s' given."
+msgstr ""
+
+#: builtin/diff.c:543
+#, c-format
+msgid "more than two blobs given: '%s'"
+msgstr ""
+
+#: builtin/diff.c:548
+#, c-format
+msgid "unhandled object '%s' given."
+msgstr ""
+
+#: builtin/diff.c:582
+#, c-format
+msgid "%s...%s: multiple merge bases, using %s"
+msgstr ""
+
+#: builtin/difftool.c:30
+msgid "git difftool [<options>] [<commit> [<commit>]] [--] [<path>...]"
+msgstr ""
+
+#: builtin/difftool.c:260
+#, c-format
+msgid "failed: %d"
+msgstr ""
+
+#: builtin/difftool.c:302
+#, c-format
+msgid "could not read symlink %s"
+msgstr ""
+
+#: builtin/difftool.c:304
+#, c-format
+msgid "could not read symlink file %s"
+msgstr ""
+
+#: builtin/difftool.c:312
+#, c-format
+msgid "could not read object %s for symlink %s"
+msgstr ""
+
+#: builtin/difftool.c:412
+msgid ""
+"combined diff formats('-c' and '--cc') are not supported in\n"
+"directory diff mode('-d' and '--dir-diff')."
+msgstr ""
+
+#: builtin/difftool.c:633
+#, c-format
+msgid "both files modified: '%s' and '%s'."
+msgstr ""
+
+#: builtin/difftool.c:635
+msgid "working tree file has been left."
+msgstr ""
+
+#: builtin/difftool.c:646
+#, c-format
+msgid "temporary files exist in '%s'."
+msgstr ""
+
+#: builtin/difftool.c:647
+msgid "you may want to cleanup or recover these."
+msgstr ""
+
+#: builtin/difftool.c:696
+msgid "use `diff.guitool` instead of `diff.tool`"
+msgstr ""
+
+#: builtin/difftool.c:698
+msgid "perform a full-directory diff"
+msgstr ""
+
+#: builtin/difftool.c:700
+msgid "do not prompt before launching a diff tool"
+msgstr ""
+
+#: builtin/difftool.c:705
+msgid "use symlinks in dir-diff mode"
+msgstr ""
+
+#: builtin/difftool.c:706
+msgid "tool"
+msgstr ""
+
+#: builtin/difftool.c:707
+msgid "use the specified diff tool"
+msgstr ""
+
+#: builtin/difftool.c:709
+msgid "print a list of diff tools that may be used with `--tool`"
+msgstr ""
+
+#: builtin/difftool.c:712
+msgid ""
+"make 'git-difftool' exit when an invoked diff tool returns a non - zero exit "
+"code"
+msgstr ""
+
+#: builtin/difftool.c:715
+msgid "specify a custom command for viewing diffs"
+msgstr ""
+
+#: builtin/difftool.c:716
+msgid "passed to `diff`"
+msgstr ""
+
+#: builtin/difftool.c:731
+msgid "difftool requires worktree or --no-index"
+msgstr ""
+
+#: builtin/difftool.c:738
+msgid "--dir-diff is incompatible with --no-index"
+msgstr ""
+
+#: builtin/difftool.c:741
+msgid "--gui, --tool and --extcmd are mutually exclusive"
+msgstr ""
+
+#: builtin/difftool.c:749
+msgid "no <tool> given for --tool=<tool>"
+msgstr ""
+
+#: builtin/difftool.c:756
+msgid "no <cmd> given for --extcmd=<cmd>"
+msgstr ""
+
+#: builtin/env--helper.c:6
+msgid "git env--helper --type=[bool|ulong] <options> <env-var>"
+msgstr ""
+
+#: builtin/env--helper.c:42 builtin/hash-object.c:98
+msgid "type"
+msgstr ""
+
+#: builtin/env--helper.c:46
+msgid "default for git_env_*(...) to fall back on"
+msgstr ""
+
+#: builtin/env--helper.c:48
+msgid "be quiet only use git_env_*() value as exit code"
+msgstr ""
+
+#: builtin/env--helper.c:67
+#, c-format
+msgid "option `--default' expects a boolean value with `--type=bool`, not `%s`"
+msgstr ""
+
+#: builtin/env--helper.c:82
+#, c-format
+msgid ""
+"option `--default' expects an unsigned long value with `--type=ulong`, not `"
+"%s`"
+msgstr ""
+
+#: builtin/fast-export.c:29
+msgid "git fast-export [rev-list-opts]"
+msgstr ""
+
+#: builtin/fast-export.c:868
+msgid "Error: Cannot export nested tags unless --mark-tags is specified."
+msgstr ""
+
+#: builtin/fast-export.c:1177
+msgid "--anonymize-map token cannot be empty"
+msgstr ""
+
+#: builtin/fast-export.c:1197
+msgid "show progress after <n> objects"
+msgstr ""
+
+#: builtin/fast-export.c:1199
+msgid "select handling of signed tags"
+msgstr ""
+
+#: builtin/fast-export.c:1202
+msgid "select handling of tags that tag filtered objects"
+msgstr ""
+
+#: builtin/fast-export.c:1205
+msgid "select handling of commit messages in an alternate encoding"
+msgstr ""
+
+#: builtin/fast-export.c:1208
+msgid "dump marks to this file"
+msgstr ""
+
+#: builtin/fast-export.c:1210
+msgid "import marks from this file"
+msgstr ""
+
+#: builtin/fast-export.c:1214
+msgid "import marks from this file if it exists"
+msgstr ""
+
+#: builtin/fast-export.c:1216
+msgid "fake a tagger when tags lack one"
+msgstr ""
+
+#: builtin/fast-export.c:1218
+msgid "output full tree for each commit"
+msgstr ""
+
+#: builtin/fast-export.c:1220
+msgid "use the done feature to terminate the stream"
+msgstr ""
+
+#: builtin/fast-export.c:1221
+msgid "skip output of blob data"
+msgstr ""
+
+#: builtin/fast-export.c:1222 builtin/log.c:1815
+msgid "refspec"
+msgstr ""
+
+#: builtin/fast-export.c:1223
+msgid "apply refspec to exported refs"
+msgstr ""
+
+#: builtin/fast-export.c:1224
+msgid "anonymize output"
+msgstr ""
+
+#: builtin/fast-export.c:1225
+msgid "from:to"
+msgstr ""
+
+#: builtin/fast-export.c:1226
+msgid "convert <from> to <to> in anonymized output"
+msgstr ""
+
+#: builtin/fast-export.c:1229
+msgid "reference parents which are not in fast-export stream by object id"
+msgstr ""
+
+#: builtin/fast-export.c:1231
+msgid "show original object ids of blobs/commits"
+msgstr ""
+
+#: builtin/fast-export.c:1233
+msgid "label tags with mark ids"
+msgstr ""
+
+#: builtin/fast-export.c:1256
+msgid "--anonymize-map without --anonymize does not make sense"
+msgstr ""
+
+#: builtin/fast-export.c:1271
+msgid "Cannot pass both --import-marks and --import-marks-if-exists"
+msgstr ""
+
+#: builtin/fast-import.c:3088
+#, c-format
+msgid "Missing from marks for submodule '%s'"
+msgstr ""
+
+#: builtin/fast-import.c:3090
+#, c-format
+msgid "Missing to marks for submodule '%s'"
+msgstr ""
+
+#: builtin/fast-import.c:3225
+#, c-format
+msgid "Expected 'mark' command, got %s"
+msgstr ""
+
+#: builtin/fast-import.c:3230
+#, c-format
+msgid "Expected 'to' command, got %s"
+msgstr ""
+
+#: builtin/fast-import.c:3322
+msgid "Expected format name:filename for submodule rewrite option"
+msgstr ""
+
+#: builtin/fast-import.c:3377
+#, c-format
+msgid "feature '%s' forbidden in input without --allow-unsafe-features"
+msgstr ""
+
+#: builtin/fetch-pack.c:242
+#, c-format
+msgid "Lockfile created but not reported: %s"
+msgstr ""
+
+#: builtin/fetch.c:35
+msgid "git fetch [<options>] [<repository> [<refspec>...]]"
+msgstr "git fetch [<opsi>] [<repositori> [<spek referensi>...]]"
+
+#: builtin/fetch.c:36
+msgid "git fetch [<options>] <group>"
+msgstr "git fetch [<opsi>] <grup>"
+
+#: builtin/fetch.c:37
+msgid "git fetch --multiple [<options>] [(<repository> | <group>)...]"
+msgstr "git fetch --multiple [<opsi>] [(<repositori> | <grup>)]"
+
+#: builtin/fetch.c:38
+msgid "git fetch --all [<options>]"
+msgstr "git fetch --all [<opsi>]"
+
+#: builtin/fetch.c:120
+msgid "fetch.parallel cannot be negative"
+msgstr "fetch.parallel tidak dapat bernilai negatif"
+
+#: builtin/fetch.c:143 builtin/pull.c:185
+msgid "fetch from all remotes"
+msgstr "ambil dari semua remote"
+
+#: builtin/fetch.c:145 builtin/pull.c:245
+msgid "set upstream for git pull/fetch"
+msgstr "setel hulu untuk git pull/fetch"
+
+#: builtin/fetch.c:147 builtin/pull.c:188
+msgid "append to .git/FETCH_HEAD instead of overwriting"
+msgstr "tambah ke .git/FETCH_HEAD daripada timpa"
+
+#: builtin/fetch.c:149
+msgid "use atomic transaction to update references"
+msgstr ""
+
+#: builtin/fetch.c:151 builtin/pull.c:191
+msgid "path to upload pack on remote end"
+msgstr "jalur ke paket unggah pada sisi remote"
+
+#: builtin/fetch.c:152
+msgid "force overwrite of local reference"
+msgstr "paksa timpa referensi lokal"
+
+#: builtin/fetch.c:154
+msgid "fetch from multiple remotes"
+msgstr "ambil dari banyak remote"
+
+#: builtin/fetch.c:156 builtin/pull.c:195
+msgid "fetch all tags and associated objects"
+msgstr "ambil semua tag dan objek yang bersesuaian"
+
+#: builtin/fetch.c:158
+msgid "do not fetch all tags (--no-tags)"
+msgstr "jangan ambil semua tag (--no-tags)"
+
+#: builtin/fetch.c:160
+msgid "number of submodules fetched in parallel"
+msgstr "jumlah submodul yang diambil secara bersamaan"
+
+#: builtin/fetch.c:162 builtin/pull.c:198
+msgid "prune remote-tracking branches no longer on remote"
+msgstr "buang cabang pelacak remote yang tidak ada pada remote"
+
+#: builtin/fetch.c:164
+msgid "prune local tags no longer on remote and clobber changed tags"
+msgstr "buang tag lokal yang tidak ada pada remote dan klob tag yang berubah"
+
+#: builtin/fetch.c:165 builtin/fetch.c:190 builtin/pull.c:122
+msgid "on-demand"
+msgstr "sesuai permintaan"
+
+#: builtin/fetch.c:166
+msgid "control recursive fetching of submodules"
+msgstr "kontrol pengambilan submodul rekursif"
+
+#: builtin/fetch.c:171
+msgid "write fetched references to the FETCH_HEAD file"
+msgstr "tulis referensi yang diambil ke berkas FETCH_HEAD"
+
+#: builtin/fetch.c:172 builtin/pull.c:206
+msgid "keep downloaded pack"
+msgstr "simpan paket yang diunduh"
+
+#: builtin/fetch.c:174
+msgid "allow updating of HEAD ref"
+msgstr "bolehkan perbarui referensi HEAD"
+
+#: builtin/fetch.c:177 builtin/fetch.c:183 builtin/pull.c:209
+#: builtin/pull.c:218
+msgid "deepen history of shallow clone"
+msgstr "perdalam riwayat klon dangkal"
+
+#: builtin/fetch.c:179 builtin/pull.c:212
+msgid "deepen history of shallow repository based on time"
+msgstr "perdalam riwayat repositori dangkal berdasarkan waktu"
+
+#: builtin/fetch.c:185 builtin/pull.c:221
+msgid "convert to a complete repository"
+msgstr "ubah ke repositori penuh"
+
+#: builtin/fetch.c:188
+msgid "prepend this to submodule path output"
+msgstr "tambahkan ini ke jalur keluaran submodul"
+
+#: builtin/fetch.c:191
+msgid ""
+"default for recursive fetching of submodules (lower priority than config "
+"files)"
+msgstr ""
+"default untuk ambil submodul secara rekursif (prioritas lebih rendah "
+"dariberkas konfigurasi)"
+
+#: builtin/fetch.c:195 builtin/pull.c:224
+msgid "accept refs that update .git/shallow"
+msgstr "terima referensi yang memperbarui .git/shallow"
+
+#: builtin/fetch.c:196 builtin/pull.c:226
+msgid "refmap"
+msgstr "peta referensi"
+
+#: builtin/fetch.c:197 builtin/pull.c:227
+msgid "specify fetch refmap"
+msgstr "sebutkan ambil peta referensi"
+
+#: builtin/fetch.c:204 builtin/pull.c:240
+msgid "report that we have only objects reachable from this object"
+msgstr ""
+"laporkan bahwa kami hanya punya object yang bisa dicapai dari objek ini"
+
+#: builtin/fetch.c:207 builtin/fetch.c:209
+msgid "run 'maintenance --auto' after fetching"
+msgstr "lakukan 'maintenance --auto' setelah pengambilan"
+
+#: builtin/fetch.c:211 builtin/pull.c:243
+msgid "check for forced-updates on all updated branches"
+msgstr "periksa pembaruan terpaksa pada semua cabang"
+
+#: builtin/fetch.c:213
+msgid "write the commit-graph after fetching"
+msgstr "tulis grafik komit setelah pengambilan"
+
+#: builtin/fetch.c:215
+msgid "accept refspecs from stdin"
+msgstr "terima spek referensi dari masukan standar"
+
+#: builtin/fetch.c:526
+msgid "Couldn't find remote ref HEAD"
+msgstr "tidak dapat menemukan referensi remote HEAD"
+
+#: builtin/fetch.c:697
+#, c-format
+msgid "configuration fetch.output contains invalid value %s"
+msgstr "konfigurasi fetch.output berisi nilai tidak valid %s"
+
+#: builtin/fetch.c:796
+#, c-format
+msgid "object %s not found"
+msgstr "objek %s tidak ditemukan"
+
+#: builtin/fetch.c:800
+msgid "[up to date]"
+msgstr "[terkini]"
+
+#: builtin/fetch.c:813 builtin/fetch.c:829 builtin/fetch.c:901
+msgid "[rejected]"
+msgstr "[tertolak]"
+
+#: builtin/fetch.c:814
+msgid "can't fetch in current branch"
+msgstr "tidak dapat mengambil di cabang saat ini"
+
+#: builtin/fetch.c:824
+msgid "[tag update]"
+msgstr "[pembaruan tag]"
+
+#: builtin/fetch.c:825 builtin/fetch.c:862 builtin/fetch.c:884
+#: builtin/fetch.c:896
+msgid "unable to update local ref"
+msgstr "tidak dapat memperbarui referensi lokal"
+
+#: builtin/fetch.c:829
+msgid "would clobber existing tag"
+msgstr "akan klob tag yang ada"
+
+#: builtin/fetch.c:851
+msgid "[new tag]"
+msgstr "[tag baru]"
+
+#: builtin/fetch.c:854
+msgid "[new branch]"
+msgstr "[cabang baru]"
+
+#: builtin/fetch.c:857
+msgid "[new ref]"
+msgstr "[referensi baru]"
+
+#: builtin/fetch.c:896
+msgid "forced update"
+msgstr "pembaruan terpaksa"
+
+#: builtin/fetch.c:901
+msgid "non-fast-forward"
+msgstr "bukan-maju-cepat"
+
+#: builtin/fetch.c:1005
+msgid ""
+"Fetch normally indicates which branches had a forced update,\n"
+"but that check has been disabled. To re-enable, use '--show-forced-updates'\n"
+"flag or run 'git config fetch.showForcedUpdates true'."
+msgstr ""
+"Ambil secara normal mengindikasikan cabang mana ada pembaruan terpaksa,\n"
+"tapi pemeriksaan tersebut dinonaktifkan. Untuk aktifkan kembali, gunakan\n"
+"'--show-forced-updates' atau jalankan 'git config fetch.showForcedUpdates "
+"true'."
+
+#: builtin/fetch.c:1009
+#, c-format
+msgid ""
+"It took %.2f seconds to check forced updates. You can use\n"
+"'--no-show-forced-updates' or run 'git config fetch.showForcedUpdates "
+"false'\n"
+" to avoid this check.\n"
+msgstr ""
+"Butuh waktu %2.f detik untuk periksa pembaruan terpaksa. Anda dapat\n"
+"menggunakan '--no-show-forced-updates' atau jalankan\n"
+"'git config fetch.showForcedUpdates false'\n"
+" untuk menghindari pemeriksaan ini.\n"
+
+#: builtin/fetch.c:1041
+#, c-format
+msgid "%s did not send all necessary objects\n"
+msgstr "%s tidak mengirim semua objek yang diperlukan\n"
+
+#: builtin/fetch.c:1069
+#, c-format
+msgid "reject %s because shallow roots are not allowed to be updated"
+msgstr "tolak %s karena akar dangkal tidak diperkenankan untuk diperbarui"
+
+#: builtin/fetch.c:1146 builtin/fetch.c:1297
+#, c-format
+msgid "From %.*s\n"
+msgstr "Dari %.*s\n"
+
+#: builtin/fetch.c:1168
+#, c-format
+msgid ""
+"some local refs could not be updated; try running\n"
+" 'git remote prune %s' to remove any old, conflicting branches"
+msgstr ""
+"beberapa referensi lokal tidak dapat diperbarui; coba jalankan\n"
+" 'git remote prune %s' untuk hapus cabang yang lama dan berkonflik"
+
+#: builtin/fetch.c:1267
+#, c-format
+msgid "   (%s will become dangling)"
+msgstr "   (%s akan menjadi terjuntai)"
+
+#: builtin/fetch.c:1268
+#, c-format
+msgid "   (%s has become dangling)"
+msgstr "   (%s telah menjadi terjuntai)"
+
+#: builtin/fetch.c:1300
+msgid "[deleted]"
+msgstr "[dihapus]"
+
+#: builtin/fetch.c:1301 builtin/remote.c:1118
+msgid "(none)"
+msgstr "(tidak ada)"
+
+#: builtin/fetch.c:1324
+#, c-format
+msgid "Refusing to fetch into current branch %s of non-bare repository"
+msgstr "Tolak mengambil ke cabang saat ini %s dari repositori non-bare"
+
+#: builtin/fetch.c:1343
+#, c-format
+msgid "Option \"%s\" value \"%s\" is not valid for %s"
+msgstr "Opsi \"%s\" nilai \"%s\" tidak valid untuk %s"
+
+#: builtin/fetch.c:1346
+#, c-format
+msgid "Option \"%s\" is ignored for %s\n"
+msgstr "Opsi \"%s\" diabaikan untuk %s\n"
+
+#: builtin/fetch.c:1558
+msgid "multiple branches detected, incompatible with --set-upstream"
+msgstr "banyak cabang terdeteksi, tidak kompatibel dengan --set-upstream"
+
+#: builtin/fetch.c:1573
+msgid "not setting upstream for a remote remote-tracking branch"
+msgstr "tidak setel hulu untuk cabang remote pelacak remote"
+
+#: builtin/fetch.c:1575
+msgid "not setting upstream for a remote tag"
+msgstr "tidak setel hulu untuk tag remote"
+
+#: builtin/fetch.c:1577
+msgid "unknown branch type"
+msgstr "tipe cabang tidak diketahui"
+
+#: builtin/fetch.c:1579
+msgid ""
+"no source branch found.\n"
+"you need to specify exactly one branch with the --set-upstream option."
+msgstr ""
+"cabang sumber tidak ditemukan.\n"
+"Anda harus sebutkan tepat satu cabang dengan opsi --set-upstream."
+
+#: builtin/fetch.c:1708 builtin/fetch.c:1771
+#, c-format
+msgid "Fetching %s\n"
+msgstr "Mengambil %s\n"
+
+#: builtin/fetch.c:1718 builtin/fetch.c:1773 builtin/remote.c:101
+#, c-format
+msgid "Could not fetch %s"
+msgstr "Tidak dapat mengambil %s"
+
+#: builtin/fetch.c:1730
+#, c-format
+msgid "could not fetch '%s' (exit code: %d)\n"
+msgstr "tidak dapat mengambil '%s' (kode keluar: %d)\n"
+
+#: builtin/fetch.c:1834
+msgid ""
+"No remote repository specified.  Please, specify either a URL or a\n"
+"remote name from which new revisions should be fetched."
+msgstr ""
+"Repositori remot tidak disebutkan. Mohon sebutkan baik URL atau nama\n"
+"cabang yang mana revisi baru sebaiknya diambil."
+
+#: builtin/fetch.c:1870
+msgid "You need to specify a tag name."
+msgstr "Anda perlu sebutkan nama tag"
+
+#: builtin/fetch.c:1935
+msgid "Negative depth in --deepen is not supported"
+msgstr "Kedalaman negatif di --deepen tidak didukung"
+
+#: builtin/fetch.c:1937
+msgid "--deepen and --depth are mutually exclusive"
+msgstr "--deepen dan --depth saling eksklusif"
+
+#: builtin/fetch.c:1942
+msgid "--depth and --unshallow cannot be used together"
+msgstr "--depth dan --unshallow tidak dapat digunakan bersamaan"
+
+#: builtin/fetch.c:1944
+msgid "--unshallow on a complete repository does not make sense"
+msgstr "--unshallow pada repositori penuh tidak masuk akal"
+
+#: builtin/fetch.c:1961
+msgid "fetch --all does not take a repository argument"
+msgstr "fetch --all tidak mengambil argumen repositori"
+
+#: builtin/fetch.c:1963
+msgid "fetch --all does not make sense with refspecs"
+msgstr "fetch --all tidak masuk akal dengan spek referensi"
+
+#: builtin/fetch.c:1972
+#, c-format
+msgid "No such remote or remote group: %s"
+msgstr "tidak ada remote atau grup remote seperti itu: %s"
+
+#: builtin/fetch.c:1979
+msgid "Fetching a group and specifying refspecs does not make sense"
+msgstr "Ambil grup dan sebutkan spek referensi tidak masuk akal"
+
+#: builtin/fetch.c:1997
+msgid ""
+"--filter can only be used with the remote configured in extensions."
+"partialclone"
+msgstr ""
+"--filter hanya dapat digunakan dengan remote yang terkonfigurasi di "
+"extensions.partialclone"
+
+#: builtin/fetch.c:2001
+msgid "--atomic can only be used when fetching from one remote"
+msgstr "--atomic hanya dapat digunakan saat mengambil dari satu remote"
+
+#: builtin/fetch.c:2005
+msgid "--stdin can only be used when fetching from one remote"
+msgstr "--stdin hanya dapat digunakan saat mengambil dari satu remote"
+
+#: builtin/fmt-merge-msg.c:7
+msgid ""
+"git fmt-merge-msg [-m <message>] [--log[=<n>] | --no-log] [--file <file>]"
+msgstr ""
+
+#: builtin/fmt-merge-msg.c:18
+msgid "populate log with at most <n> entries from shortlog"
+msgstr ""
+
+#: builtin/fmt-merge-msg.c:21
+msgid "alias for --log (deprecated)"
+msgstr ""
+
+#: builtin/fmt-merge-msg.c:24
+msgid "text"
+msgstr ""
+
+#: builtin/fmt-merge-msg.c:25
+msgid "use <text> as start of message"
+msgstr ""
+
+#: builtin/fmt-merge-msg.c:26
+msgid "file to read from"
+msgstr ""
+
+#: builtin/for-each-ref.c:10
+msgid "git for-each-ref [<options>] [<pattern>]"
+msgstr ""
+
+#: builtin/for-each-ref.c:11
+msgid "git for-each-ref [--points-at <object>]"
+msgstr ""
+
+#: builtin/for-each-ref.c:12
+msgid "git for-each-ref [--merged [<commit>]] [--no-merged [<commit>]]"
+msgstr ""
+
+#: builtin/for-each-ref.c:13
+msgid "git for-each-ref [--contains [<commit>]] [--no-contains [<commit>]]"
+msgstr ""
+
+#: builtin/for-each-ref.c:28
+msgid "quote placeholders suitably for shells"
+msgstr ""
+
+#: builtin/for-each-ref.c:30
+msgid "quote placeholders suitably for perl"
+msgstr ""
+
+#: builtin/for-each-ref.c:32
+msgid "quote placeholders suitably for python"
+msgstr ""
+
+#: builtin/for-each-ref.c:34
+msgid "quote placeholders suitably for Tcl"
+msgstr ""
+
+#: builtin/for-each-ref.c:37
+msgid "show only <n> matched refs"
+msgstr ""
+
+#: builtin/for-each-ref.c:39 builtin/tag.c:472
+msgid "respect format colors"
+msgstr ""
+
+#: builtin/for-each-ref.c:42
+msgid "print only refs which points at the given object"
+msgstr ""
+
+#: builtin/for-each-ref.c:44
+msgid "print only refs that are merged"
+msgstr ""
+
+#: builtin/for-each-ref.c:45
+msgid "print only refs that are not merged"
+msgstr ""
+
+#: builtin/for-each-ref.c:46
+msgid "print only refs which contain the commit"
+msgstr ""
+
+#: builtin/for-each-ref.c:47
+msgid "print only refs which don't contain the commit"
+msgstr ""
+
+#: builtin/for-each-repo.c:9
+msgid "git for-each-repo --config=<config> <command-args>"
+msgstr ""
+
+#: builtin/for-each-repo.c:37
+msgid "config"
+msgstr ""
+
+#: builtin/for-each-repo.c:38
+msgid "config key storing a list of repository paths"
+msgstr ""
+
+#: builtin/for-each-repo.c:46
+msgid "missing --config=<config>"
+msgstr ""
+
+#: builtin/fsck.c:69 builtin/fsck.c:130 builtin/fsck.c:131
+msgid "unknown"
+msgstr ""
+
+#. TRANSLATORS: e.g. error in tree 01bfda: <more explanation>
+#: builtin/fsck.c:83 builtin/fsck.c:103
+#, c-format
+msgid "error in %s %s: %s"
+msgstr ""
+
+#. TRANSLATORS: e.g. warning in tree 01bfda: <more explanation>
+#: builtin/fsck.c:97
+#, c-format
+msgid "warning in %s %s: %s"
+msgstr ""
+
+#: builtin/fsck.c:126 builtin/fsck.c:129
+#, c-format
+msgid "broken link from %7s %s"
+msgstr ""
+
+#: builtin/fsck.c:138
+msgid "wrong object type in link"
+msgstr ""
+
+#: builtin/fsck.c:154
+#, c-format
+msgid ""
+"broken link from %7s %s\n"
+"              to %7s %s"
+msgstr ""
+
+#: builtin/fsck.c:265
+#, c-format
+msgid "missing %s %s"
+msgstr ""
+
+#: builtin/fsck.c:292
+#, c-format
+msgid "unreachable %s %s"
+msgstr ""
+
+#: builtin/fsck.c:312
+#, c-format
+msgid "dangling %s %s"
+msgstr ""
+
+#: builtin/fsck.c:322
+msgid "could not create lost-found"
+msgstr ""
+
+#: builtin/fsck.c:333
+#, c-format
+msgid "could not finish '%s'"
+msgstr ""
+
+#: builtin/fsck.c:350
+#, c-format
+msgid "Checking %s"
+msgstr ""
+
+#: builtin/fsck.c:388
+#, c-format
+msgid "Checking connectivity (%d objects)"
+msgstr ""
+
+#: builtin/fsck.c:407
+#, c-format
+msgid "Checking %s %s"
+msgstr ""
+
+#: builtin/fsck.c:412
+msgid "broken links"
+msgstr ""
+
+#: builtin/fsck.c:421
+#, c-format
+msgid "root %s"
+msgstr ""
+
+#: builtin/fsck.c:429
+#, c-format
+msgid "tagged %s %s (%s) in %s"
+msgstr ""
+
+#: builtin/fsck.c:458
+#, c-format
+msgid "%s: object corrupt or missing"
+msgstr ""
+
+#: builtin/fsck.c:483
+#, c-format
+msgid "%s: invalid reflog entry %s"
+msgstr ""
+
+#: builtin/fsck.c:497
+#, c-format
+msgid "Checking reflog %s->%s"
+msgstr ""
+
+#: builtin/fsck.c:531
+#, c-format
+msgid "%s: invalid sha1 pointer %s"
+msgstr ""
+
+#: builtin/fsck.c:538
+#, c-format
+msgid "%s: not a commit"
+msgstr ""
+
+#: builtin/fsck.c:592
+msgid "notice: No default references"
+msgstr ""
+
+#: builtin/fsck.c:607
+#, c-format
+msgid "%s: object corrupt or missing: %s"
+msgstr ""
+
+#: builtin/fsck.c:620
+#, c-format
+msgid "%s: object could not be parsed: %s"
+msgstr ""
+
+#: builtin/fsck.c:640
+#, c-format
+msgid "bad sha1 file: %s"
+msgstr ""
+
+#: builtin/fsck.c:655
+msgid "Checking object directory"
+msgstr ""
+
+#: builtin/fsck.c:658
+msgid "Checking object directories"
+msgstr ""
+
+#: builtin/fsck.c:673
+#, c-format
+msgid "Checking %s link"
+msgstr ""
+
+#: builtin/fsck.c:678 builtin/index-pack.c:865
+#, c-format
+msgid "invalid %s"
+msgstr "%s tidak valid"
+
+#: builtin/fsck.c:685
+#, c-format
+msgid "%s points to something strange (%s)"
+msgstr ""
+
+#: builtin/fsck.c:691
+#, c-format
+msgid "%s: detached HEAD points at nothing"
+msgstr ""
+
+#: builtin/fsck.c:695
+#, c-format
+msgid "notice: %s points to an unborn branch (%s)"
+msgstr ""
+
+#: builtin/fsck.c:707
+msgid "Checking cache tree"
+msgstr ""
+
+#: builtin/fsck.c:712
+#, c-format
+msgid "%s: invalid sha1 pointer in cache-tree"
+msgstr ""
+
+#: builtin/fsck.c:721
+msgid "non-tree in cache-tree"
+msgstr ""
+
+#: builtin/fsck.c:752
+msgid "git fsck [<options>] [<object>...]"
+msgstr ""
+
+#: builtin/fsck.c:758
+msgid "show unreachable objects"
+msgstr ""
+
+#: builtin/fsck.c:759
+msgid "show dangling objects"
+msgstr ""
+
+#: builtin/fsck.c:760
+msgid "report tags"
+msgstr ""
+
+#: builtin/fsck.c:761
+msgid "report root nodes"
+msgstr ""
+
+#: builtin/fsck.c:762
+msgid "make index objects head nodes"
+msgstr ""
+
+#: builtin/fsck.c:763
+msgid "make reflogs head nodes (default)"
+msgstr ""
+
+#: builtin/fsck.c:764
+msgid "also consider packs and alternate objects"
+msgstr ""
+
+#: builtin/fsck.c:765
+msgid "check only connectivity"
+msgstr ""
+
+#: builtin/fsck.c:766 builtin/mktag.c:78
+msgid "enable more strict checking"
+msgstr ""
+
+#: builtin/fsck.c:768
+msgid "write dangling objects in .git/lost-found"
+msgstr ""
+
+#: builtin/fsck.c:769 builtin/prune.c:134
+msgid "show progress"
+msgstr ""
+
+#: builtin/fsck.c:770
+msgid "show verbose names for reachable objects"
+msgstr ""
+
+#: builtin/fsck.c:829 builtin/index-pack.c:261
+msgid "Checking objects"
+msgstr "Memeriksa objek"
+
+#: builtin/fsck.c:857
+#, c-format
+msgid "%s: object missing"
+msgstr ""
+
+#: builtin/fsck.c:868
+#, c-format
+msgid "invalid parameter: expected sha1, got '%s'"
+msgstr ""
+
+#: builtin/gc.c:39
+msgid "git gc [<options>]"
+msgstr ""
+
+#: builtin/gc.c:93
+#, c-format
+msgid "Failed to fstat %s: %s"
+msgstr ""
+
+#: builtin/gc.c:129
+#, c-format
+msgid "failed to parse '%s' value '%s'"
+msgstr ""
+
+#: builtin/gc.c:487 builtin/init-db.c:58
+#, c-format
+msgid "cannot stat '%s'"
+msgstr ""
+
+#: builtin/gc.c:496 builtin/notes.c:240 builtin/tag.c:562
+#, c-format
+msgid "cannot read '%s'"
+msgstr ""
+
+#: builtin/gc.c:503
+#, c-format
+msgid ""
+"The last gc run reported the following. Please correct the root cause\n"
+"and remove %s.\n"
+"Automatic cleanup will not be performed until the file is removed.\n"
+"\n"
+"%s"
+msgstr ""
+
+#: builtin/gc.c:551
+msgid "prune unreferenced objects"
+msgstr ""
+
+#: builtin/gc.c:553
+msgid "be more thorough (increased runtime)"
+msgstr ""
+
+#: builtin/gc.c:554
+msgid "enable auto-gc mode"
+msgstr ""
+
+#: builtin/gc.c:557
+msgid "force running gc even if there may be another gc running"
+msgstr ""
+
+#: builtin/gc.c:560
+msgid "repack all other packs except the largest pack"
+msgstr ""
+
+#: builtin/gc.c:576
+#, c-format
+msgid "failed to parse gc.logexpiry value %s"
+msgstr ""
+
+#: builtin/gc.c:587
+#, c-format
+msgid "failed to parse prune expiry value %s"
+msgstr ""
+
+#: builtin/gc.c:607
+#, c-format
+msgid "Auto packing the repository in background for optimum performance.\n"
+msgstr ""
+
+#: builtin/gc.c:609
+#, c-format
+msgid "Auto packing the repository for optimum performance.\n"
+msgstr ""
+
+#: builtin/gc.c:610
+#, c-format
+msgid "See \"git help gc\" for manual housekeeping.\n"
+msgstr ""
+
+#: builtin/gc.c:650
+#, c-format
+msgid ""
+"gc is already running on machine '%s' pid %<PRIuMAX> (use --force if not)"
+msgstr ""
+
+#: builtin/gc.c:705
+msgid ""
+"There are too many unreachable loose objects; run 'git prune' to remove them."
+msgstr ""
+
+#: builtin/gc.c:715
+msgid ""
+"git maintenance run [--auto] [--[no-]quiet] [--task=<task>] [--schedule]"
+msgstr ""
+
+#: builtin/gc.c:745
+msgid "--no-schedule is not allowed"
+msgstr ""
+
+#: builtin/gc.c:750
+#, c-format
+msgid "unrecognized --schedule argument '%s'"
+msgstr ""
+
+#: builtin/gc.c:869
+msgid "failed to write commit-graph"
+msgstr ""
+
+#: builtin/gc.c:914
+msgid "failed to fill remotes"
+msgstr ""
+
+#: builtin/gc.c:1037
+msgid "failed to start 'git pack-objects' process"
+msgstr ""
+
+#: builtin/gc.c:1054
+msgid "failed to finish 'git pack-objects' process"
+msgstr ""
+
+#: builtin/gc.c:1106
+msgid "failed to write multi-pack-index"
+msgstr ""
+
+#: builtin/gc.c:1124
+msgid "'git multi-pack-index expire' failed"
+msgstr ""
+
+#: builtin/gc.c:1185
+msgid "'git multi-pack-index repack' failed"
+msgstr ""
+
+#: builtin/gc.c:1194
+msgid ""
+"skipping incremental-repack task because core.multiPackIndex is disabled"
+msgstr ""
+
+#: builtin/gc.c:1298
+#, c-format
+msgid "lock file '%s' exists, skipping maintenance"
+msgstr ""
+
+#: builtin/gc.c:1328
+#, c-format
+msgid "task '%s' failed"
+msgstr ""
+
+#: builtin/gc.c:1410
+#, c-format
+msgid "'%s' is not a valid task"
+msgstr ""
+
+#: builtin/gc.c:1415
+#, c-format
+msgid "task '%s' cannot be selected multiple times"
+msgstr ""
+
+#: builtin/gc.c:1430
+msgid "run tasks based on the state of the repository"
+msgstr ""
+
+#: builtin/gc.c:1431
+msgid "frequency"
+msgstr ""
+
+#: builtin/gc.c:1432
+msgid "run tasks based on frequency"
+msgstr ""
+
+#: builtin/gc.c:1435
+msgid "do not report progress or other information over stderr"
+msgstr ""
+
+#: builtin/gc.c:1436
+msgid "task"
+msgstr ""
+
+#: builtin/gc.c:1437
+msgid "run a specific task"
+msgstr ""
+
+#: builtin/gc.c:1454
+msgid "use at most one of --auto and --schedule=<frequency>"
+msgstr ""
+
+#: builtin/gc.c:1497
+msgid "failed to run 'git config'"
+msgstr ""
+
+#: builtin/gc.c:1562
+msgid "failed to expand path '%s'"
+msgstr ""
+
+#: builtin/gc.c:1591
+msgid "failed to start launchctl"
+msgstr ""
+
+#: builtin/gc.c:1628
+msgid "failed to create directories for '%s'"
+msgstr ""
+
+#: builtin/gc.c:1689
+msgid "failed to bootstrap service %s"
+msgstr ""
+
+#: builtin/gc.c:1760
+msgid "failed to create temp xml file"
+msgstr ""
+
+#: builtin/gc.c:1850
+msgid "failed to start schtasks"
+msgstr ""
+
+#: builtin/gc.c:1894
+msgid "failed to run 'crontab -l'; your system might not support 'cron'"
+msgstr ""
+
+#: builtin/gc.c:1911
+msgid "failed to run 'crontab'; your system might not support 'cron'"
+msgstr ""
+
+#: builtin/gc.c:1915
+msgid "failed to open stdin of 'crontab'"
+msgstr ""
+
+#: builtin/gc.c:1956
+msgid "'crontab' died"
+msgstr ""
+
+#: builtin/gc.c:1990
+msgid "another process is scheduling background maintenance"
+msgstr ""
+
+#: builtin/gc.c:2009
+msgid "failed to add repo to global config"
+msgstr ""
+
+#: builtin/gc.c:2019
+msgid "git maintenance <subcommand> [<options>]"
+msgstr ""
+
+#: builtin/gc.c:2038
+#, c-format
+msgid "invalid subcommand: %s"
+msgstr ""
+
+#: builtin/grep.c:30
+msgid "git grep [<options>] [-e] <pattern> [<rev>...] [[--] <path>...]"
+msgstr ""
+
+#: builtin/grep.c:223
+#, c-format
+msgid "grep: failed to create thread: %s"
+msgstr ""
+
+#: builtin/grep.c:277
+#, c-format
+msgid "invalid number of threads specified (%d) for %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the configuration
+#. variable for tweaking threads, currently
+#. grep.threads
+#.
+#: builtin/grep.c:285 builtin/index-pack.c:1589 builtin/index-pack.c:1808
+#: builtin/pack-objects.c:2944
+#, c-format
+msgid "no threads support, ignoring %s"
+msgstr "tidak ada dukungan utas, abaikan %s"
+
+#: builtin/grep.c:473 builtin/grep.c:601 builtin/grep.c:641
+#, c-format
+msgid "unable to read tree (%s)"
+msgstr ""
+
+#: builtin/grep.c:656
+#, c-format
+msgid "unable to grep from object of type %s"
+msgstr ""
+
+#: builtin/grep.c:737
+#, c-format
+msgid "switch `%c' expects a numerical value"
+msgstr ""
+
+#: builtin/grep.c:836
+msgid "search in index instead of in the work tree"
+msgstr ""
+
+#: builtin/grep.c:838
+msgid "find in contents not managed by git"
+msgstr ""
+
+#: builtin/grep.c:840
+msgid "search in both tracked and untracked files"
+msgstr ""
+
+#: builtin/grep.c:842
+msgid "ignore files specified via '.gitignore'"
+msgstr ""
+
+#: builtin/grep.c:844
+msgid "recursively search in each submodule"
+msgstr ""
+
+#: builtin/grep.c:847
+msgid "show non-matching lines"
+msgstr ""
+
+#: builtin/grep.c:849
+msgid "case insensitive matching"
+msgstr ""
+
+#: builtin/grep.c:851
+msgid "match patterns only at word boundaries"
+msgstr ""
+
+#: builtin/grep.c:853
+msgid "process binary files as text"
+msgstr ""
+
+#: builtin/grep.c:855
+msgid "don't match patterns in binary files"
+msgstr ""
+
+#: builtin/grep.c:858
+msgid "process binary files with textconv filters"
+msgstr ""
+
+#: builtin/grep.c:860
+msgid "search in subdirectories (default)"
+msgstr ""
+
+#: builtin/grep.c:862
+msgid "descend at most <depth> levels"
+msgstr ""
+
+#: builtin/grep.c:866
+msgid "use extended POSIX regular expressions"
+msgstr ""
+
+#: builtin/grep.c:869
+msgid "use basic POSIX regular expressions (default)"
+msgstr ""
+
+#: builtin/grep.c:872
+msgid "interpret patterns as fixed strings"
+msgstr ""
+
+#: builtin/grep.c:875
+msgid "use Perl-compatible regular expressions"
+msgstr ""
+
+#: builtin/grep.c:878
+msgid "show line numbers"
+msgstr ""
+
+#: builtin/grep.c:879
+msgid "show column number of first match"
+msgstr ""
+
+#: builtin/grep.c:880
+msgid "don't show filenames"
+msgstr ""
+
+#: builtin/grep.c:881
+msgid "show filenames"
+msgstr ""
+
+#: builtin/grep.c:883
+msgid "show filenames relative to top directory"
+msgstr ""
+
+#: builtin/grep.c:885
+msgid "show only filenames instead of matching lines"
+msgstr ""
+
+#: builtin/grep.c:887
+msgid "synonym for --files-with-matches"
+msgstr ""
+
+#: builtin/grep.c:890
+msgid "show only the names of files without match"
+msgstr ""
+
+#: builtin/grep.c:892
+msgid "print NUL after filenames"
+msgstr ""
+
+#: builtin/grep.c:895
+msgid "show only matching parts of a line"
+msgstr ""
+
+#: builtin/grep.c:897
+msgid "show the number of matches instead of matching lines"
+msgstr ""
+
+#: builtin/grep.c:898
+msgid "highlight matches"
+msgstr ""
+
+#: builtin/grep.c:900
+msgid "print empty line between matches from different files"
+msgstr ""
+
+#: builtin/grep.c:902
+msgid "show filename only once above matches from same file"
+msgstr ""
+
+#: builtin/grep.c:905
+msgid "show <n> context lines before and after matches"
+msgstr ""
+
+#: builtin/grep.c:908
+msgid "show <n> context lines before matches"
+msgstr ""
+
+#: builtin/grep.c:910
+msgid "show <n> context lines after matches"
+msgstr ""
+
+#: builtin/grep.c:912
+msgid "use <n> worker threads"
+msgstr ""
+
+#: builtin/grep.c:913
+msgid "shortcut for -C NUM"
+msgstr ""
+
+#: builtin/grep.c:916
+msgid "show a line with the function name before matches"
+msgstr ""
+
+#: builtin/grep.c:918
+msgid "show the surrounding function"
+msgstr ""
+
+#: builtin/grep.c:921
+msgid "read patterns from file"
+msgstr ""
+
+#: builtin/grep.c:923
+msgid "match <pattern>"
+msgstr ""
+
+#: builtin/grep.c:925
+msgid "combine patterns specified with -e"
+msgstr ""
+
+#: builtin/grep.c:937
+msgid "indicate hit with exit status without output"
+msgstr ""
+
+#: builtin/grep.c:939
+msgid "show only matches from files that match all patterns"
+msgstr ""
+
+#: builtin/grep.c:942
+msgid "pager"
+msgstr ""
+
+#: builtin/grep.c:942
+msgid "show matching files in the pager"
+msgstr ""
+
+#: builtin/grep.c:946
+msgid "allow calling of grep(1) (ignored by this build)"
+msgstr ""
+
+#: builtin/grep.c:1012
+msgid "no pattern given"
+msgstr ""
+
+#: builtin/grep.c:1048
+msgid "--no-index or --untracked cannot be used with revs"
+msgstr ""
+
+#: builtin/grep.c:1056
+#, c-format
+msgid "unable to resolve revision: %s"
+msgstr ""
+
+#: builtin/grep.c:1086
+msgid "--untracked not supported with --recurse-submodules"
+msgstr ""
+
+#: builtin/grep.c:1090
+msgid "invalid option combination, ignoring --threads"
+msgstr ""
+
+#: builtin/grep.c:1093 builtin/pack-objects.c:3672
+msgid "no threads support, ignoring --threads"
+msgstr ""
+
+#: builtin/grep.c:1096 builtin/index-pack.c:1586 builtin/pack-objects.c:2941
+#, c-format
+msgid "invalid number of threads specified (%d)"
+msgstr "jumlah utas tersebut (%d) tidak valid"
+
+#: builtin/grep.c:1130
+msgid "--open-files-in-pager only works on the worktree"
+msgstr ""
+
+#: builtin/grep.c:1156
+msgid "--cached or --untracked cannot be used with --no-index"
+msgstr ""
+
+#: builtin/grep.c:1159
+msgid "--untracked cannot be used with --cached"
+msgstr ""
+
+#: builtin/grep.c:1165
+msgid "--[no-]exclude-standard cannot be used for tracked contents"
+msgstr ""
+
+#: builtin/grep.c:1173
+msgid "both --cached and trees are given"
+msgstr ""
+
+#: builtin/hash-object.c:85
+msgid ""
+"git hash-object [-t <type>] [-w] [--path=<file> | --no-filters] [--stdin] "
+"[--] <file>..."
+msgstr ""
+
+#: builtin/hash-object.c:86
+msgid "git hash-object  --stdin-paths"
+msgstr ""
+
+#: builtin/hash-object.c:98
+msgid "object type"
+msgstr ""
+
+#: builtin/hash-object.c:99
+msgid "write the object into the object database"
+msgstr ""
+
+#: builtin/hash-object.c:101
+msgid "read the object from stdin"
+msgstr ""
+
+#: builtin/hash-object.c:103
+msgid "store file as is without filters"
+msgstr ""
+
+#: builtin/hash-object.c:104
+msgid ""
+"just hash any random garbage to create corrupt objects for debugging Git"
+msgstr ""
+
+#: builtin/hash-object.c:105
+msgid "process file as it were from this path"
+msgstr ""
+
+#: builtin/help.c:47
+msgid "print all available commands"
+msgstr ""
+
+#: builtin/help.c:48
+msgid "exclude guides"
+msgstr ""
+
+#: builtin/help.c:49
+msgid "print list of useful guides"
+msgstr ""
+
+#: builtin/help.c:50
+msgid "print all configuration variable names"
+msgstr ""
+
+#: builtin/help.c:52
+msgid "show man page"
+msgstr ""
+
+#: builtin/help.c:53
+msgid "show manual in web browser"
+msgstr ""
+
+#: builtin/help.c:55
+msgid "show info page"
+msgstr ""
+
+#: builtin/help.c:57
+msgid "print command description"
+msgstr ""
+
+#: builtin/help.c:62
+msgid "git help [--all] [--guides] [--man | --web | --info] [<command>]"
+msgstr ""
+
+#: builtin/help.c:163
+#, c-format
+msgid "unrecognized help format '%s'"
+msgstr ""
+
+#: builtin/help.c:190
+msgid "Failed to start emacsclient."
+msgstr ""
+
+#: builtin/help.c:203
+msgid "Failed to parse emacsclient version."
+msgstr ""
+
+#: builtin/help.c:211
+#, c-format
+msgid "emacsclient version '%d' too old (< 22)."
+msgstr ""
+
+#: builtin/help.c:229 builtin/help.c:251 builtin/help.c:261 builtin/help.c:269
+#, c-format
+msgid "failed to exec '%s'"
+msgstr ""
+
+#: builtin/help.c:307
+#, c-format
+msgid ""
+"'%s': path for unsupported man viewer.\n"
+"Please consider using 'man.<tool>.cmd' instead."
+msgstr ""
+
+#: builtin/help.c:319
+#, c-format
+msgid ""
+"'%s': cmd for supported man viewer.\n"
+"Please consider using 'man.<tool>.path' instead."
+msgstr ""
+
+#: builtin/help.c:436
+#, c-format
+msgid "'%s': unknown man viewer."
+msgstr ""
+
+#: builtin/help.c:453
+msgid "no man viewer handled the request"
+msgstr ""
+
+#: builtin/help.c:461
+msgid "no info viewer handled the request"
+msgstr ""
+
+#: builtin/help.c:520 builtin/help.c:531 git.c:340
+#, c-format
+msgid "'%s' is aliased to '%s'"
+msgstr ""
+
+#: builtin/help.c:534 git.c:372
+#, c-format
+msgid "bad alias.%s string: %s"
+msgstr ""
+
+#: builtin/help.c:563 builtin/help.c:593
+#, c-format
+msgid "usage: %s%s"
+msgstr ""
+
+#: builtin/help.c:577
+msgid "'git help config' for more information"
+msgstr ""
+
+#: builtin/index-pack.c:221
+#, c-format
+msgid "object type mismatch at %s"
+msgstr "tipe objek tidak cocok pada %s"
+
+#: builtin/index-pack.c:241
+#, c-format
+msgid "did not receive expected object %s"
+msgstr "tidak menerima objek yang diharapkan %s"
+
+#: builtin/index-pack.c:244
+#, c-format
+msgid "object %s: expected type %s, found %s"
+msgstr "objek %s: yang diharapkan %s, yang didapat %s"
+
+#: builtin/index-pack.c:294
+#, c-format
+msgid "cannot fill %d byte"
+msgid_plural "cannot fill %d bytes"
+msgstr[0] ""
+msgstr[1] ""
+
+#: builtin/index-pack.c:304
+msgid "early EOF"
+msgstr "EOF awal"
+
+#: builtin/index-pack.c:305
+msgid "read error on input"
+msgstr "kesalahan baca pada masukan"
+
+#: builtin/index-pack.c:317
+msgid "used more bytes than were available"
+msgstr "gunakan lebih banyak pita dari pada yang tersedia"
+
+#: builtin/index-pack.c:324 builtin/pack-objects.c:624
+msgid "pack too large for current definition of off_t"
+msgstr "paket terlalu besar untuk definisi off_t saat ini"
+
+#: builtin/index-pack.c:327 builtin/unpack-objects.c:95
+msgid "pack exceeds maximum allowed size"
+msgstr "paket melebihi ukuran maksimum yang diperbolehkan"
+
+#: builtin/index-pack.c:342
+#, c-format
+msgid "unable to create '%s'"
+msgstr "tidak dapat membuat '%s'"
+
+#: builtin/index-pack.c:348
+#, c-format
+msgid "cannot open packfile '%s'"
+msgstr "tidak dapat membuka berkas paket '%s'"
+
+#: builtin/index-pack.c:362
+msgid "pack signature mismatch"
+msgstr "tanda tangan paket tidak cocok"
+
+#: builtin/index-pack.c:364
+#, c-format
+msgid "pack version %<PRIu32> unsupported"
+msgstr "versi paket %<PRIu32> tidak didukung"
+
+#: builtin/index-pack.c:382
+#, c-format
+msgid "pack has bad object at offset %<PRIuMAX>: %s"
+msgstr "paket ada objek jelek pada offset %<PRIuMAX>: %s"
+
+#: builtin/index-pack.c:488
+#, c-format
+msgid "inflate returned %d"
+msgstr "inflate mengembalikan %d"
+
+#: builtin/index-pack.c:537
+msgid "offset value overflow for delta base object"
+msgstr "nilai offset meluap untuk objek basis delta"
+
+#: builtin/index-pack.c:545
+msgid "delta base offset is out of bound"
+msgstr "offset basis delta di luar jangkauan"
+
+#: builtin/index-pack.c:553
+#, c-format
+msgid "unknown object type %d"
+msgstr "tipe objek tidak diketahui %d"
+
+#: builtin/index-pack.c:584
+msgid "cannot pread pack file"
+msgstr "tidak dapat pread berkas paket"
+
+#: builtin/index-pack.c:586
+#, 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:612
+msgid "serious inflate inconsistency"
+msgstr "inkonsistensi inflate serius"
+
+#: builtin/index-pack.c:757 builtin/index-pack.c:763 builtin/index-pack.c:787
+#: builtin/index-pack.c:826 builtin/index-pack.c:835
+#, c-format
+msgid "SHA1 COLLISION FOUND WITH %s !"
+msgstr "TUMBUKAN SHA1 DITEMUKAN DENGAN %s !"
+
+#: builtin/index-pack.c:760 builtin/pack-objects.c:171
+#: builtin/pack-objects.c:231 builtin/pack-objects.c:326
+#, c-format
+msgid "unable to read %s"
+msgstr "tidak dapat membaca %s"
+
+#: builtin/index-pack.c:824
+#, c-format
+msgid "cannot read existing object info %s"
+msgstr "tidak dapat membaca info objek yang ada %s"
+
+#: builtin/index-pack.c:832
+#, c-format
+msgid "cannot read existing object %s"
+msgstr "tidak dapat membaca objek yang ada %s"
+
+#: builtin/index-pack.c:846
+#, c-format
+msgid "invalid blob object %s"
+msgstr "objek blob tidak valid %s"
+
+#: builtin/index-pack.c:849 builtin/index-pack.c:868
+msgid "fsck error in packed object"
+msgstr "kesalahan fsck dalam objek terpaket"
+
+#: builtin/index-pack.c:870
+#, c-format
+msgid "Not all child objects of %s are reachable"
+msgstr "Tidak semua objek anak dari %s bisa dicapai"
+
+#: builtin/index-pack.c:931 builtin/index-pack.c:978
+msgid "failed to apply delta"
+msgstr "gagal menerapkan delta"
+
+#: builtin/index-pack.c:1161
+msgid "Receiving objects"
+msgstr "Menerima objek"
+
+#: builtin/index-pack.c:1161
+msgid "Indexing objects"
+msgstr "Mengindeks objek"
+
+#: builtin/index-pack.c:1195
+msgid "pack is corrupted (SHA1 mismatch)"
+msgstr "paket rusak (SHA1 tidak cocok)"
+
+#: builtin/index-pack.c:1200
+msgid "cannot fstat packfile"
+msgstr "tidak dapat fstat berkas paket"
+
+#: builtin/index-pack.c:1203
+msgid "pack has junk at the end"
+msgstr "paket memiliki sampah pada ujung"
+
+#: builtin/index-pack.c:1215
+msgid "confusion beyond insanity in parse_pack_objects()"
+msgstr "bingung di luar kegilaan di parse_pack_objects()"
+
+#: builtin/index-pack.c:1238
+msgid "Resolving deltas"
+msgstr "Menguraikan delta"
+
+#: builtin/index-pack.c:1249 builtin/pack-objects.c:2707
+#, c-format
+msgid "unable to create thread: %s"
+msgstr "tidak dapat membuat utas: %s"
+
+#: builtin/index-pack.c:1282
+msgid "confusion beyond insanity"
+msgstr "bingung di luar kegilaan"
+
+#: builtin/index-pack.c:1288
+#, c-format
+msgid "completed with %d local object"
+msgid_plural "completed with %d local objects"
+msgstr[0] ""
+msgstr[1] ""
+
+#: builtin/index-pack.c:1300
+#, c-format
+msgid "Unexpected tail checksum for %s (disk corruption?)"
+msgstr "Checksum ekor tidak diharapkan untuk %s (kerusakan disk?)"
+
+#: builtin/index-pack.c:1304
+#, c-format
+msgid "pack has %d unresolved delta"
+msgid_plural "pack has %d unresolved deltas"
+msgstr[0] ""
+msgstr[1] ""
+
+#: builtin/index-pack.c:1328
+#, c-format
+msgid "unable to deflate appended object (%d)"
+msgstr "tidak dapat menggemboskan objek tertambah (%d)"
+
+#: builtin/index-pack.c:1424
+#, c-format
+msgid "local object %s is corrupt"
+msgstr "objek lokal %s rusak"
+
+#: builtin/index-pack.c:1445
+#, c-format
+msgid "packfile name '%s' does not end with '.%s'"
+msgstr "nama berkas paket '%s' tidak diakhiri dengan '.%s'"
+
+#: builtin/index-pack.c:1469
+#, c-format
+msgid "cannot write %s file '%s'"
+msgstr "tidak dapat menulis %s berkas '%s'"
+
+#: builtin/index-pack.c:1477
+#, c-format
+msgid "cannot close written %s file '%s'"
+msgstr "tidak dapat menutup %s berkas tertulis '%s'"
+
+#: builtin/index-pack.c:1503
+msgid "error while closing pack file"
+msgstr "kesalahan menutup berkas paket"
+
+#: builtin/index-pack.c:1517
+msgid "cannot store pack file"
+msgstr "tidak dapat menyimpan berkas paket"
+
+#: builtin/index-pack.c:1525
+msgid "cannot store index file"
+msgstr "tidak dapat menyimpan berkas indeks"
+
+#: builtin/index-pack.c:1534
+msgid "cannot store reverse index file"
+msgstr "tidak dapat menyimpan berkas indeks balik"
+
+#: builtin/index-pack.c:1580 builtin/pack-objects.c:2952
+#, c-format
+msgid "bad pack.indexversion=%<PRIu32>"
+msgstr "pack.indexversion=%<PRIu32> jelek"
+
+#: builtin/index-pack.c:1650
+#, c-format
+msgid "Cannot open existing pack file '%s'"
+msgstr "tidak dapat membuka berkas paket yang ada '%s'"
+
+#: builtin/index-pack.c:1652
+#, c-format
+msgid "Cannot open existing pack idx file for '%s'"
+msgstr "tidak dapat membuka berkas indeks paket untuk '%s'"
+
+#: builtin/index-pack.c:1700
+#, c-format
+msgid "non delta: %d object"
+msgid_plural "non delta: %d objects"
+msgstr[0] ""
+msgstr[1] ""
+
+#: builtin/index-pack.c:1707
+#, c-format
+msgid "chain length = %d: %lu object"
+msgid_plural "chain length = %d: %lu objects"
+msgstr[0] ""
+msgstr[1] ""
+
+#: builtin/index-pack.c:1765
+msgid "Cannot come back to cwd"
+msgstr "tidak dapat kembali ke direktori kerja saat ini"
+
+#: builtin/index-pack.c:1819 builtin/index-pack.c:1822
+#: builtin/index-pack.c:1838 builtin/index-pack.c:1842
+#, c-format
+msgid "bad %s"
+msgstr "%s jelek"
+
+#: builtin/index-pack.c:1848 builtin/init-db.c:392 builtin/init-db.c:625
+#, c-format
+msgid "unknown hash algorithm '%s'"
+msgstr "algoritma hash tak dikenal '%s'"
+
+#: builtin/index-pack.c:1867
+msgid "--fix-thin cannot be used without --stdin"
+msgstr "--fix-thin tidak dapat digunakan tanpa --stdin"
+
+#: builtin/index-pack.c:1869
+msgid "--stdin requires a git repository"
+msgstr "--stdin memerlukan repositori git"
+
+#: builtin/index-pack.c:1871
+msgid "--object-format cannot be used with --stdin"
+msgstr "--object-format tidak dapat digunakan dengan --stdin"
+
+#: builtin/index-pack.c:1886
+msgid "--verify with no packfile name given"
+msgstr "--verify tanpa nama berkas paket diberikan"
+
+#: builtin/index-pack.c:1956 builtin/unpack-objects.c:582
+msgid "fsck error in pack objects"
+msgstr "kesalahan fsck dalam objek paket"
+
+#: builtin/init-db.c:64
+#, c-format
+msgid "cannot stat template '%s'"
+msgstr "tidak dapat men-stat templat '%s'"
+
+#: builtin/init-db.c:69
+#, c-format
+msgid "cannot opendir '%s'"
+msgstr "tidak dapat membuka direktori '%s'"
+
+#: builtin/init-db.c:81
+#, c-format
+msgid "cannot readlink '%s'"
+msgstr "tidak dapat membaca tautan '%s'"
+
+#: builtin/init-db.c:83
+#, c-format
+msgid "cannot symlink '%s' '%s'"
+msgstr "tidak dapat menautkan simbolik '%s' '%s'"
+
+#: builtin/init-db.c:89
+#, c-format
+msgid "cannot copy '%s' to '%s'"
+msgstr "tidak dapat menyalin '%s' ke '%s'"
+
+#: builtin/init-db.c:93
+#, c-format
+msgid "ignoring template %s"
+msgstr "mengabaikan templat %s"
+
+#: builtin/init-db.c:124
+#, c-format
+msgid "templates not found in %s"
+msgstr "templat tidak ditemukan di %s"
+
+#: builtin/init-db.c:139
+#, c-format
+msgid "not copying templates from '%s': %s"
+msgstr "tidak menyalin templat dari '%s': %s"
+
+#: builtin/init-db.c:275
+#, c-format
+msgid "invalid initial branch name: '%s'"
+msgstr "nama cabang asal salah: '%s'"
+
+#: builtin/init-db.c:367
+#, c-format
+msgid "unable to handle file type %d"
+msgstr "tidak dapat menangani tipe berkas %d"
+
+#: builtin/init-db.c:370
+#, c-format
+msgid "unable to move %s to %s"
+msgstr "tidak dapat memindahkan %s ke %s"
+
+#: builtin/init-db.c:386
+msgid "attempt to reinitialize repository with different hash"
+msgstr "mencoba menginisialisasi ulang repositori dengan hash yang berbeda"
+
+#: builtin/init-db.c:410 builtin/init-db.c:413
+#, c-format
+msgid "%s already exists"
+msgstr "%s sudah ada"
+
+#: builtin/init-db.c:445
+#, c-format
+msgid "re-init: ignored --initial-branch=%s"
+msgstr "re-init: --initial-branch=%s diabaikan"
+
+#: builtin/init-db.c:476
+#, c-format
+msgid "Reinitialized existing shared Git repository in %s%s\n"
+msgstr "Repositori berbagi Git yang sudah ada diinisialisasi ulang di %s%s\n"
+
+#: builtin/init-db.c:477
+#, c-format
+msgid "Reinitialized existing Git repository in %s%s\n"
+msgstr "Repositori Git diinisialisasi ulang di %s%s\n"
+
+#: builtin/init-db.c:481
+#, c-format
+msgid "Initialized empty shared Git repository in %s%s\n"
+msgstr "Repositori berbagi Git kosong diinisialisasi di %s%s\n"
+
+#: builtin/init-db.c:482
+#, c-format
+msgid "Initialized empty Git repository in %s%s\n"
+msgstr "Repositori Git kosong dinisialisasi di %s%s\n"
+
+#: builtin/init-db.c:531
+msgid ""
+"git init [-q | --quiet] [--bare] [--template=<template-directory>] [--"
+"shared[=<permissions>]] [<directory>]"
+msgstr ""
+"git init [-q | --quiet] [--bare] [--template=<direktori-templat>][--"
+"shared[=<perizinan>]] [<direktori>]"
+
+#: builtin/init-db.c:557
+msgid "permissions"
+msgstr "perizinan"
+
+#: builtin/init-db.c:558
+msgid "specify that the git repository is to be shared amongst several users"
+msgstr ""
+"tentukan bahwa repositori git untuk dibagikan di antara beberapa pengguna"
+
+#: builtin/init-db.c:564
+msgid "override the name of the initial branch"
+msgstr "timpa nama cabang asal"
+
+#: builtin/init-db.c:565 builtin/verify-pack.c:74
+msgid "hash"
+msgstr ""
+
+#: builtin/init-db.c:566 builtin/show-index.c:22 builtin/verify-pack.c:75
+msgid "specify the hash algorithm to use"
+msgstr "tentukan algoritma hash yang akan digunakan"
+
+#: builtin/init-db.c:573
+msgid "--separate-git-dir and --bare are mutually exclusive"
+msgstr "--separate-git-dir dan --bare saling eksklusif"
+
+#: builtin/init-db.c:602 builtin/init-db.c:607
+#, c-format
+msgid "cannot mkdir %s"
+msgstr "tidak dapat membuat direktori %s"
+
+#: builtin/init-db.c:611 builtin/init-db.c:666
+#, c-format
+msgid "cannot chdir to %s"
+msgstr "tidak dapat mengganti direktori ke %s"
+
+#: builtin/init-db.c:638
+#, c-format
+msgid ""
+"%s (or --work-tree=<directory>) not allowed without specifying %s (or --git-"
+"dir=<directory>)"
+msgstr ""
+"%s (atau --work-tree=<direktori>) tidak diperbolehkan tanpa sebutkan %s "
+"(atau--git-dir=<direktori>)"
+
+#: builtin/init-db.c:690
+#, c-format
+msgid "Cannot access work tree '%s'"
+msgstr "Tidak dapat mengakses pohon kerja '%s'"
+
+#: builtin/init-db.c:695
+msgid "--separate-git-dir incompatible with bare repository"
+msgstr "--separate-git-dir tidak kompatibel dengan repositori bare"
+
+#: builtin/interpret-trailers.c:16
+msgid ""
+"git interpret-trailers [--in-place] [--trim-empty] [(--trailer "
+"<token>[(=|:)<value>])...] [<file>...]"
+msgstr ""
+
+#: builtin/interpret-trailers.c:95
+msgid "edit files in place"
+msgstr ""
+
+#: builtin/interpret-trailers.c:96
+msgid "trim empty trailers"
+msgstr ""
+
+#: builtin/interpret-trailers.c:99
+msgid "where to place the new trailer"
+msgstr ""
+
+#: builtin/interpret-trailers.c:101
+msgid "action if trailer already exists"
+msgstr ""
+
+#: builtin/interpret-trailers.c:103
+msgid "action if trailer is missing"
+msgstr ""
+
+#: builtin/interpret-trailers.c:105
+msgid "output only the trailers"
+msgstr ""
+
+#: builtin/interpret-trailers.c:106
+msgid "do not apply config rules"
+msgstr ""
+
+#: builtin/interpret-trailers.c:107
+msgid "join whitespace-continued values"
+msgstr ""
+
+#: builtin/interpret-trailers.c:108
+msgid "set parsing options"
+msgstr ""
+
+#: builtin/interpret-trailers.c:110
+msgid "do not treat --- specially"
+msgstr ""
+
+#: builtin/interpret-trailers.c:111
+msgid "trailer"
+msgstr ""
+
+#: builtin/interpret-trailers.c:112
+msgid "trailer(s) to add"
+msgstr ""
+
+#: builtin/interpret-trailers.c:123
+msgid "--trailer with --only-input does not make sense"
+msgstr ""
+
+#: builtin/interpret-trailers.c:133
+msgid "no input file given for in-place editing"
+msgstr ""
+
+#: builtin/log.c:59
+msgid "git log [<options>] [<revision-range>] [[--] <path>...]"
+msgstr ""
+
+#: builtin/log.c:60
+msgid "git show [<options>] <object>..."
+msgstr ""
+
+#: builtin/log.c:113
+#, c-format
+msgid "invalid --decorate option: %s"
+msgstr ""
+
+#: builtin/log.c:180
+msgid "show source"
+msgstr ""
+
+#: builtin/log.c:181
+msgid "use mail map file"
+msgstr ""
+
+#: builtin/log.c:184
+msgid "only decorate refs that match <pattern>"
+msgstr ""
+
+#: builtin/log.c:186
+msgid "do not decorate refs that match <pattern>"
+msgstr ""
+
+#: builtin/log.c:187
+msgid "decorate options"
+msgstr ""
+
+#: builtin/log.c:190
+msgid ""
+"trace the evolution of line range <start>,<end> or function :<funcname> in "
+"<file>"
+msgstr ""
+
+#: builtin/log.c:213
+msgid "-L<range>:<file> cannot be used with pathspec"
+msgstr ""
+
+#: builtin/log.c:303
+#, c-format
+msgid "Final output: %d %s\n"
+msgstr ""
+
+#: builtin/log.c:566
+#, c-format
+msgid "git show %s: bad file"
+msgstr ""
+
+#: builtin/log.c:581 builtin/log.c:671
+#, c-format
+msgid "could not read object %s"
+msgstr ""
+
+#: builtin/log.c:696
+#, c-format
+msgid "unknown type: %d"
+msgstr ""
+
+#: builtin/log.c:841
+#, c-format
+msgid "%s: invalid cover from description mode"
+msgstr ""
+
+#: builtin/log.c:848
+msgid "format.headers without value"
+msgstr ""
+
+#: builtin/log.c:977
+#, c-format
+msgid "cannot open patch file %s"
+msgstr ""
+
+#: builtin/log.c:994
+msgid "need exactly one range"
+msgstr ""
+
+#: builtin/log.c:1004
+msgid "not a range"
+msgstr ""
+
+#: builtin/log.c:1168
+msgid "cover letter needs email format"
+msgstr ""
+
+#: builtin/log.c:1174
+msgid "failed to create cover-letter file"
+msgstr ""
+
+#: builtin/log.c:1261
+#, c-format
+msgid "insane in-reply-to: %s"
+msgstr ""
+
+#: builtin/log.c:1288
+msgid "git format-patch [<options>] [<since> | <revision-range>]"
+msgstr ""
+
+#: builtin/log.c:1346
+msgid "two output directories?"
+msgstr ""
+
+#: builtin/log.c:1497 builtin/log.c:2317 builtin/log.c:2319 builtin/log.c:2331
+#, c-format
+msgid "unknown commit %s"
+msgstr ""
+
+#: builtin/log.c:1508 builtin/replace.c:58 builtin/replace.c:207
+#: builtin/replace.c:210
+#, c-format
+msgid "failed to resolve '%s' as a valid ref"
+msgstr ""
+
+#: builtin/log.c:1517
+msgid "could not find exact merge base"
+msgstr ""
+
+#: builtin/log.c:1527
+msgid ""
+"failed to get upstream, if you want to record base commit automatically,\n"
+"please use git branch --set-upstream-to to track a remote branch.\n"
+"Or you could specify base commit by --base=<base-commit-id> manually"
+msgstr ""
+
+#: builtin/log.c:1550
+msgid "failed to find exact merge base"
+msgstr ""
+
+#: builtin/log.c:1567
+msgid "base commit should be the ancestor of revision list"
+msgstr ""
+
+#: builtin/log.c:1577
+msgid "base commit shouldn't be in revision list"
+msgstr ""
+
+#: builtin/log.c:1635
+msgid "cannot get patch id"
+msgstr ""
+
+#: builtin/log.c:1692
+msgid "failed to infer range-diff origin of current series"
+msgstr ""
+
+#: builtin/log.c:1694
+#, c-format
+msgid "using '%s' as range-diff origin of current series"
+msgstr ""
+
+#: builtin/log.c:1738
+msgid "use [PATCH n/m] even with a single patch"
+msgstr ""
+
+#: builtin/log.c:1741
+msgid "use [PATCH] even with multiple patches"
+msgstr ""
+
+#: builtin/log.c:1745
+msgid "print patches to standard out"
+msgstr ""
+
+#: builtin/log.c:1747
+msgid "generate a cover letter"
+msgstr ""
+
+#: builtin/log.c:1749
+msgid "use simple number sequence for output file names"
+msgstr ""
+
+#: builtin/log.c:1750
+msgid "sfx"
+msgstr ""
+
+#: builtin/log.c:1751
+msgid "use <sfx> instead of '.patch'"
+msgstr ""
+
+#: builtin/log.c:1753
+msgid "start numbering patches at <n> instead of 1"
+msgstr ""
+
+#: builtin/log.c:1755
+msgid "mark the series as Nth re-roll"
+msgstr ""
+
+#: builtin/log.c:1757
+msgid "max length of output filename"
+msgstr ""
+
+#: builtin/log.c:1759
+msgid "use [RFC PATCH] instead of [PATCH]"
+msgstr ""
+
+#: builtin/log.c:1762
+msgid "cover-from-description-mode"
+msgstr ""
+
+#: builtin/log.c:1763
+msgid "generate parts of a cover letter based on a branch's description"
+msgstr ""
+
+#: builtin/log.c:1765
+msgid "use [<prefix>] instead of [PATCH]"
+msgstr ""
+
+#: builtin/log.c:1768
+msgid "store resulting files in <dir>"
+msgstr ""
+
+#: builtin/log.c:1771
+msgid "don't strip/add [PATCH]"
+msgstr ""
+
+#: builtin/log.c:1774
+msgid "don't output binary diffs"
+msgstr ""
+
+#: builtin/log.c:1776
+msgid "output all-zero hash in From header"
+msgstr ""
+
+#: builtin/log.c:1778
+msgid "don't include a patch matching a commit upstream"
+msgstr ""
+
+#: builtin/log.c:1780
+msgid "show patch format instead of default (patch + stat)"
+msgstr ""
+
+#: builtin/log.c:1782
+msgid "Messaging"
+msgstr ""
+
+#: builtin/log.c:1783
+msgid "header"
+msgstr ""
+
+#: builtin/log.c:1784
+msgid "add email header"
+msgstr ""
+
+#: builtin/log.c:1785 builtin/log.c:1786
+msgid "email"
+msgstr ""
+
+#: builtin/log.c:1785
+msgid "add To: header"
+msgstr ""
+
+#: builtin/log.c:1786
+msgid "add Cc: header"
+msgstr ""
+
+#: builtin/log.c:1787
+msgid "ident"
+msgstr ""
+
+#: builtin/log.c:1788
+msgid "set From address to <ident> (or committer ident if absent)"
+msgstr ""
+
+#: builtin/log.c:1790
+msgid "message-id"
+msgstr ""
+
+#: builtin/log.c:1791
+msgid "make first mail a reply to <message-id>"
+msgstr ""
+
+#: builtin/log.c:1792 builtin/log.c:1795
+msgid "boundary"
+msgstr ""
+
+#: builtin/log.c:1793
+msgid "attach the patch"
+msgstr ""
+
+#: builtin/log.c:1796
+msgid "inline the patch"
+msgstr ""
+
+#: builtin/log.c:1800
+msgid "enable message threading, styles: shallow, deep"
+msgstr ""
+
+#: builtin/log.c:1802
+msgid "signature"
+msgstr ""
+
+#: builtin/log.c:1803
+msgid "add a signature"
+msgstr ""
+
+#: builtin/log.c:1804
+msgid "base-commit"
+msgstr ""
+
+#: builtin/log.c:1805
+msgid "add prerequisite tree info to the patch series"
+msgstr ""
+
+#: builtin/log.c:1808
+msgid "add a signature from a file"
+msgstr ""
+
+#: builtin/log.c:1809
+msgid "don't print the patch filenames"
+msgstr ""
+
+#: builtin/log.c:1811
+msgid "show progress while generating patches"
+msgstr ""
+
+#: builtin/log.c:1813
+msgid "show changes against <rev> in cover letter or single patch"
+msgstr ""
+
+#: builtin/log.c:1816
+msgid "show changes against <refspec> in cover letter or single patch"
+msgstr ""
+
+#: builtin/log.c:1818
+msgid "percentage by which creation is weighted"
+msgstr ""
+
+#: builtin/log.c:1904
+#, c-format
+msgid "invalid ident line: %s"
+msgstr ""
+
+#: builtin/log.c:1919
+msgid "-n and -k are mutually exclusive"
+msgstr ""
+
+#: builtin/log.c:1921
+msgid "--subject-prefix/--rfc and -k are mutually exclusive"
+msgstr ""
+
+#: builtin/log.c:1929
+msgid "--name-only does not make sense"
+msgstr ""
+
+#: builtin/log.c:1931
+msgid "--name-status does not make sense"
+msgstr ""
+
+#: builtin/log.c:1933
+msgid "--check does not make sense"
+msgstr ""
+
+#: builtin/log.c:1955
+msgid "--stdout, --output, and --output-directory are mutually exclusive"
+msgstr ""
+
+#: builtin/log.c:2078
+msgid "--interdiff requires --cover-letter or single patch"
+msgstr ""
+
+#: builtin/log.c:2082
+msgid "Interdiff:"
+msgstr ""
+
+#: builtin/log.c:2083
+#, c-format
+msgid "Interdiff against v%d:"
+msgstr ""
+
+#: builtin/log.c:2089
+msgid "--creation-factor requires --range-diff"
+msgstr ""
+
+#: builtin/log.c:2093
+msgid "--range-diff requires --cover-letter or single patch"
+msgstr ""
+
+#: builtin/log.c:2101
+msgid "Range-diff:"
+msgstr ""
+
+#: builtin/log.c:2102
+#, c-format
+msgid "Range-diff against v%d:"
+msgstr ""
+
+#: builtin/log.c:2113
+#, c-format
+msgid "unable to read signature file '%s'"
+msgstr ""
+
+#: builtin/log.c:2149
+msgid "Generating patches"
+msgstr ""
+
+#: builtin/log.c:2193
+msgid "failed to create output files"
+msgstr ""
+
+#: builtin/log.c:2252
+msgid "git cherry [-v] [<upstream> [<head> [<limit>]]]"
+msgstr ""
+
+#: builtin/log.c:2306
+#, c-format
+msgid ""
+"Could not find a tracked remote branch, please specify <upstream> manually.\n"
+msgstr ""
+
+#: builtin/ls-files.c:486
+msgid "git ls-files [<options>] [<file>...]"
+msgstr ""
+
+#: builtin/ls-files.c:542
+msgid "identify the file status with tags"
+msgstr ""
+
+#: builtin/ls-files.c:544
+msgid "use lowercase letters for 'assume unchanged' files"
+msgstr ""
+
+#: builtin/ls-files.c:546
+msgid "use lowercase letters for 'fsmonitor clean' files"
+msgstr ""
+
+#: builtin/ls-files.c:548
+msgid "show cached files in the output (default)"
+msgstr ""
+
+#: builtin/ls-files.c:550
+msgid "show deleted files in the output"
+msgstr ""
+
+#: builtin/ls-files.c:552
+msgid "show modified files in the output"
+msgstr ""
+
+#: builtin/ls-files.c:554
+msgid "show other files in the output"
+msgstr ""
+
+#: builtin/ls-files.c:556
+msgid "show ignored files in the output"
+msgstr ""
+
+#: builtin/ls-files.c:559
+msgid "show staged contents' object name in the output"
+msgstr ""
+
+#: builtin/ls-files.c:561
+msgid "show files on the filesystem that need to be removed"
+msgstr ""
+
+#: builtin/ls-files.c:563
+msgid "show 'other' directories' names only"
+msgstr ""
+
+#: builtin/ls-files.c:565
+msgid "show line endings of files"
+msgstr ""
+
+#: builtin/ls-files.c:567
+msgid "don't show empty directories"
+msgstr ""
+
+#: builtin/ls-files.c:570
+msgid "show unmerged files in the output"
+msgstr ""
+
+#: builtin/ls-files.c:572
+msgid "show resolve-undo information"
+msgstr ""
+
+#: builtin/ls-files.c:574
+msgid "skip files matching pattern"
+msgstr ""
+
+#: builtin/ls-files.c:577
+msgid "exclude patterns are read from <file>"
+msgstr ""
+
+#: builtin/ls-files.c:580
+msgid "read additional per-directory exclude patterns in <file>"
+msgstr ""
+
+#: builtin/ls-files.c:582
+msgid "add the standard git exclusions"
+msgstr ""
+
+#: builtin/ls-files.c:586
+msgid "make the output relative to the project top directory"
+msgstr ""
+
+#: builtin/ls-files.c:589
+msgid "recurse through submodules"
+msgstr ""
+
+#: builtin/ls-files.c:591
+msgid "if any <file> is not in the index, treat this as an error"
+msgstr ""
+
+#: builtin/ls-files.c:592
+msgid "tree-ish"
+msgstr ""
+
+#: builtin/ls-files.c:593
+msgid "pretend that paths removed since <tree-ish> are still present"
+msgstr ""
+
+#: builtin/ls-files.c:595
+msgid "show debugging data"
+msgstr ""
+
+#: builtin/ls-files.c:597
+msgid "suppress duplicate entries"
+msgstr ""
+
+#: 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:60
+msgid "do not print remote URL"
+msgstr ""
+
+#: builtin/ls-remote.c:61 builtin/ls-remote.c:63 builtin/rebase.c:1404
+msgid "exec"
+msgstr ""
+
+#: builtin/ls-remote.c:62 builtin/ls-remote.c:64
+msgid "path of git-upload-pack on the remote host"
+msgstr ""
+
+#: builtin/ls-remote.c:66
+msgid "limit to tags"
+msgstr ""
+
+#: builtin/ls-remote.c:67
+msgid "limit to heads"
+msgstr ""
+
+#: builtin/ls-remote.c:68
+msgid "do not show peeled tags"
+msgstr ""
+
+#: builtin/ls-remote.c:70
+msgid "take url.<base>.insteadOf into account"
+msgstr ""
+
+#: builtin/ls-remote.c:73
+msgid "exit with exit code 2 if no matching refs are found"
+msgstr ""
+
+#: builtin/ls-remote.c:76
+msgid "show underlying ref in addition to the object pointed by it"
+msgstr ""
+
+#: builtin/ls-tree.c:30
+msgid "git ls-tree [<options>] <tree-ish> [<path>...]"
+msgstr ""
+
+#: builtin/ls-tree.c:128
+msgid "only show trees"
+msgstr ""
+
+#: builtin/ls-tree.c:130
+msgid "recurse into subtrees"
+msgstr ""
+
+#: builtin/ls-tree.c:132
+msgid "show trees when recursing"
+msgstr ""
+
+#: builtin/ls-tree.c:135
+msgid "terminate entries with NUL byte"
+msgstr ""
+
+#: builtin/ls-tree.c:136
+msgid "include object size"
+msgstr ""
+
+#: builtin/ls-tree.c:138 builtin/ls-tree.c:140
+msgid "list only filenames"
+msgstr ""
+
+#: builtin/ls-tree.c:143
+msgid "use full path names"
+msgstr ""
+
+#: builtin/ls-tree.c:145
+msgid "list entire tree; not just current directory (implies --full-name)"
+msgstr ""
+
+#: builtin/mailsplit.c:241
+#, c-format
+msgid "empty mbox: '%s'"
+msgstr ""
+
+#: builtin/merge-base.c:32
+msgid "git merge-base [-a | --all] <commit> <commit>..."
+msgstr ""
+
+#: builtin/merge-base.c:33
+msgid "git merge-base [-a | --all] --octopus <commit>..."
+msgstr ""
+
+#: builtin/merge-base.c:34
+msgid "git merge-base --independent <commit>..."
+msgstr ""
+
+#: builtin/merge-base.c:35
+msgid "git merge-base --is-ancestor <commit> <commit>"
+msgstr ""
+
+#: builtin/merge-base.c:36
+msgid "git merge-base --fork-point <ref> [<commit>]"
+msgstr ""
+
+#: builtin/merge-base.c:143
+msgid "output all common ancestors"
+msgstr ""
+
+#: builtin/merge-base.c:145
+msgid "find ancestors for a single n-way merge"
+msgstr ""
+
+#: builtin/merge-base.c:147
+msgid "list revs not reachable from others"
+msgstr ""
+
+#: builtin/merge-base.c:149
+msgid "is the first one ancestor of the other?"
+msgstr ""
+
+#: builtin/merge-base.c:151
+msgid "find where <commit> forked from reflog of <ref>"
+msgstr ""
+
+#: builtin/merge-file.c:9
+msgid ""
+"git merge-file [<options>] [-L <name1> [-L <orig> [-L <name2>]]] <file1> "
+"<orig-file> <file2>"
+msgstr ""
+
+#: builtin/merge-file.c:35
+msgid "send results to standard output"
+msgstr ""
+
+#: builtin/merge-file.c:36
+msgid "use a diff3 based merge"
+msgstr ""
+
+#: builtin/merge-file.c:37
+msgid "for conflicts, use our version"
+msgstr ""
+
+#: builtin/merge-file.c:39
+msgid "for conflicts, use their version"
+msgstr ""
+
+#: builtin/merge-file.c:41
+msgid "for conflicts, use a union version"
+msgstr ""
+
+#: builtin/merge-file.c:44
+msgid "for conflicts, use this marker size"
+msgstr ""
+
+#: builtin/merge-file.c:45
+msgid "do not warn about conflicts"
+msgstr ""
+
+#: builtin/merge-file.c:47
+msgid "set labels for file1/orig-file/file2"
+msgstr ""
+
+#: builtin/merge-recursive.c:47
+#, c-format
+msgid "unknown option %s"
+msgstr ""
+
+#: builtin/merge-recursive.c:53
+#, c-format
+msgid "could not parse object '%s'"
+msgstr ""
+
+#: builtin/merge-recursive.c:57
+#, c-format
+msgid "cannot handle more than %d base. Ignoring %s."
+msgid_plural "cannot handle more than %d bases. Ignoring %s."
+msgstr[0] ""
+msgstr[1] ""
+
+#: builtin/merge-recursive.c:65
+msgid "not handling anything other than two heads merge."
+msgstr ""
+
+#: builtin/merge-recursive.c:74 builtin/merge-recursive.c:76
+#, c-format
+msgid "could not resolve ref '%s'"
+msgstr ""
+
+#: builtin/merge-recursive.c:82
+#, c-format
+msgid "Merging %s with %s\n"
+msgstr ""
+
+#: builtin/merge.c:58
+msgid "git merge [<options>] [<commit>...]"
+msgstr ""
+
+#: builtin/merge.c:59
+msgid "git merge --abort"
+msgstr ""
+
+#: builtin/merge.c:60
+msgid "git merge --continue"
+msgstr ""
+
+#: builtin/merge.c:123
+msgid "switch `m' requires a value"
+msgstr ""
+
+#: builtin/merge.c:146
+#, c-format
+msgid "option `%s' requires a value"
+msgstr ""
+
+#: builtin/merge.c:199
+#, c-format
+msgid "Could not find merge strategy '%s'.\n"
+msgstr ""
+
+#: builtin/merge.c:200
+#, c-format
+msgid "Available strategies are:"
+msgstr ""
+
+#: builtin/merge.c:205
+#, c-format
+msgid "Available custom strategies are:"
+msgstr ""
+
+#: builtin/merge.c:256 builtin/pull.c:133
+msgid "do not show a diffstat at the end of the merge"
+msgstr ""
+
+#: builtin/merge.c:259 builtin/pull.c:136
+msgid "show a diffstat at the end of the merge"
+msgstr ""
+
+#: builtin/merge.c:260 builtin/pull.c:139
+msgid "(synonym to --stat)"
+msgstr ""
+
+#: builtin/merge.c:262 builtin/pull.c:142
+msgid "add (at most <n>) entries from shortlog to merge commit message"
+msgstr ""
+
+#: builtin/merge.c:265 builtin/pull.c:148
+msgid "create a single commit instead of doing a merge"
+msgstr ""
+
+#: builtin/merge.c:267 builtin/pull.c:151
+msgid "perform a commit if the merge succeeds (default)"
+msgstr ""
+
+#: builtin/merge.c:269 builtin/pull.c:154
+msgid "edit message before committing"
+msgstr ""
+
+#: builtin/merge.c:271
+msgid "allow fast-forward (default)"
+msgstr ""
+
+#: builtin/merge.c:273 builtin/pull.c:161
+msgid "abort if fast-forward is not possible"
+msgstr ""
+
+#: builtin/merge.c:277 builtin/pull.c:164
+msgid "verify that the named commit has a valid GPG signature"
+msgstr ""
+
+#: builtin/merge.c:278 builtin/notes.c:787 builtin/pull.c:168
+#: builtin/rebase.c:541 builtin/rebase.c:1418 builtin/revert.c:114
+msgid "strategy"
+msgstr ""
+
+#: builtin/merge.c:279 builtin/pull.c:169
+msgid "merge strategy to use"
+msgstr ""
+
+#: builtin/merge.c:280 builtin/pull.c:172
+msgid "option=value"
+msgstr ""
+
+#: builtin/merge.c:281 builtin/pull.c:173
+msgid "option for selected merge strategy"
+msgstr ""
+
+#: builtin/merge.c:283
+msgid "merge commit message (for a non-fast-forward merge)"
+msgstr ""
+
+#: builtin/merge.c:290
+msgid "abort the current in-progress merge"
+msgstr ""
+
+#: builtin/merge.c:292
+msgid "--abort but leave index and working tree alone"
+msgstr ""
+
+#: builtin/merge.c:294
+msgid "continue the current in-progress merge"
+msgstr ""
+
+#: builtin/merge.c:296 builtin/pull.c:180
+msgid "allow merging unrelated histories"
+msgstr ""
+
+#: builtin/merge.c:303
+msgid "bypass pre-merge-commit and commit-msg hooks"
+msgstr ""
+
+#: builtin/merge.c:320
+msgid "could not run stash."
+msgstr ""
+
+#: builtin/merge.c:325
+msgid "stash failed"
+msgstr ""
+
+#: builtin/merge.c:330
+#, c-format
+msgid "not a valid object: %s"
+msgstr ""
+
+#: builtin/merge.c:352 builtin/merge.c:369
+msgid "read-tree failed"
+msgstr ""
+
+#: builtin/merge.c:399
+msgid " (nothing to squash)"
+msgstr ""
+
+#: builtin/merge.c:410
+#, c-format
+msgid "Squash commit -- not updating HEAD\n"
+msgstr ""
+
+#: builtin/merge.c:460
+#, c-format
+msgid "No merge message -- not updating HEAD\n"
+msgstr ""
+
+#: builtin/merge.c:511
+#, c-format
+msgid "'%s' does not point to a commit"
+msgstr ""
+
+#: builtin/merge.c:598
+#, c-format
+msgid "Bad branch.%s.mergeoptions string: %s"
+msgstr ""
+
+#: builtin/merge.c:724
+msgid "Not handling anything other than two heads merge."
+msgstr ""
+
+#: builtin/merge.c:737
+#, c-format
+msgid "Unknown option for merge-recursive: -X%s"
+msgstr ""
+
+#: builtin/merge.c:756 t/helper/test-fast-rebase.c:209
+#, c-format
+msgid "unable to write %s"
+msgstr ""
+
+#: builtin/merge.c:808
+#, c-format
+msgid "Could not read from '%s'"
+msgstr ""
+
+#: builtin/merge.c:817
+#, c-format
+msgid "Not committing merge; use 'git commit' to complete the merge.\n"
+msgstr ""
+
+#: builtin/merge.c:823
+msgid ""
+"Please enter a commit message to explain why this merge is necessary,\n"
+"especially if it merges an updated upstream into a topic branch.\n"
+"\n"
+msgstr ""
+
+#: builtin/merge.c:828
+msgid "An empty message aborts the commit.\n"
+msgstr ""
+
+#: builtin/merge.c:831
+#, c-format
+msgid ""
+"Lines starting with '%c' will be ignored, and an empty message aborts\n"
+"the commit.\n"
+msgstr ""
+
+#: builtin/merge.c:884
+msgid "Empty commit message."
+msgstr ""
+
+#: builtin/merge.c:899
+#, c-format
+msgid "Wonderful.\n"
+msgstr ""
+
+#: builtin/merge.c:960
+#, c-format
+msgid "Automatic merge failed; fix conflicts and then commit the result.\n"
+msgstr ""
+
+#: builtin/merge.c:999
+msgid "No current branch."
+msgstr ""
+
+#: builtin/merge.c:1001
+msgid "No remote for the current branch."
+msgstr ""
+
+#: builtin/merge.c:1003
+msgid "No default upstream defined for the current branch."
+msgstr ""
+
+#: builtin/merge.c:1008
+#, c-format
+msgid "No remote-tracking branch for %s from %s"
+msgstr ""
+
+#: builtin/merge.c:1065
+#, c-format
+msgid "Bad value '%s' in environment '%s'"
+msgstr ""
+
+#: builtin/merge.c:1168
+#, c-format
+msgid "not something we can merge in %s: %s"
+msgstr ""
+
+#: builtin/merge.c:1202
+msgid "not something we can merge"
+msgstr ""
+
+#: builtin/merge.c:1312
+msgid "--abort expects no arguments"
+msgstr ""
+
+#: builtin/merge.c:1316
+msgid "There is no merge to abort (MERGE_HEAD missing)."
+msgstr ""
+
+#: builtin/merge.c:1334
+msgid "--quit expects no arguments"
+msgstr ""
+
+#: builtin/merge.c:1347
+msgid "--continue expects no arguments"
+msgstr ""
+
+#: builtin/merge.c:1351
+msgid "There is no merge in progress (MERGE_HEAD missing)."
+msgstr ""
+
+#: builtin/merge.c:1367
+msgid ""
+"You have not concluded your merge (MERGE_HEAD exists).\n"
+"Please, commit your changes before you merge."
+msgstr ""
+
+#: builtin/merge.c:1374
+msgid ""
+"You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n"
+"Please, commit your changes before you merge."
+msgstr ""
+
+#: builtin/merge.c:1377
+msgid "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists)."
+msgstr ""
+
+#: builtin/merge.c:1391
+msgid "You cannot combine --squash with --no-ff."
+msgstr ""
+
+#: builtin/merge.c:1393
+msgid "You cannot combine --squash with --commit."
+msgstr ""
+
+#: builtin/merge.c:1409
+msgid "No commit specified and merge.defaultToUpstream not set."
+msgstr ""
+
+#: builtin/merge.c:1426
+msgid "Squash commit into empty head not supported yet"
+msgstr ""
+
+#: builtin/merge.c:1428
+msgid "Non-fast-forward commit does not make sense into an empty head"
+msgstr ""
+
+#: builtin/merge.c:1433
+#, c-format
+msgid "%s - not something we can merge"
+msgstr ""
+
+#: builtin/merge.c:1435
+msgid "Can merge only exactly one commit into empty head"
+msgstr ""
+
+#: builtin/merge.c:1516
+msgid "refusing to merge unrelated histories"
+msgstr ""
+
+#: builtin/merge.c:1525
+msgid "Already up to date."
+msgstr ""
+
+#: builtin/merge.c:1535
+#, c-format
+msgid "Updating %s..%s\n"
+msgstr ""
+
+#: builtin/merge.c:1581
+#, c-format
+msgid "Trying really trivial in-index merge...\n"
+msgstr ""
+
+#: builtin/merge.c:1588
+#, c-format
+msgid "Nope.\n"
+msgstr ""
+
+#: builtin/merge.c:1613
+msgid "Already up to date. Yeeah!"
+msgstr ""
+
+#: builtin/merge.c:1619
+msgid "Not possible to fast-forward, aborting."
+msgstr ""
+
+#: builtin/merge.c:1647 builtin/merge.c:1712
+#, c-format
+msgid "Rewinding the tree to pristine...\n"
+msgstr ""
+
+#: builtin/merge.c:1651
+#, c-format
+msgid "Trying merge strategy %s...\n"
+msgstr ""
+
+#: builtin/merge.c:1703
+#, c-format
+msgid "No merge strategy handled the merge.\n"
+msgstr ""
+
+#: builtin/merge.c:1705
+#, c-format
+msgid "Merge with strategy %s failed.\n"
+msgstr ""
+
+#: builtin/merge.c:1714
+#, c-format
+msgid "Using the %s to prepare resolving by hand.\n"
+msgstr ""
+
+#: builtin/merge.c:1728
+#, c-format
+msgid "Automatic merge went well; stopped before committing as requested\n"
+msgstr ""
+
+#: builtin/mktag.c:10
+msgid "git mktag"
+msgstr ""
+
+#: builtin/mktag.c:30
+#, c-format
+msgid "warning: tag input does not pass fsck: %s"
+msgstr ""
+
+#: builtin/mktag.c:41
+#, c-format
+msgid "error: tag input does not pass fsck: %s"
+msgstr ""
+
+#: builtin/mktag.c:44
+#, c-format
+msgid "%d (FSCK_IGNORE?) should never trigger this callback"
+msgstr ""
+
+#: builtin/mktag.c:59
+msgid "could not read tagged object '%s'"
+msgstr ""
+
+#: builtin/mktag.c:62
+#, c-format
+msgid "object '%s' tagged as '%s', but is a '%s' type"
+msgstr ""
+
+#: builtin/mktag.c:99
+msgid "tag on stdin did not pass our strict fsck check"
+msgstr ""
+
+#: builtin/mktag.c:102
+msgid "tag on stdin did not refer to a valid object"
+msgstr ""
+
+#: builtin/mktag.c:105 builtin/tag.c:232
+msgid "unable to write tag file"
+msgstr ""
+
+#: builtin/mktree.c:66
+msgid "git mktree [-z] [--missing] [--batch]"
+msgstr ""
+
+#: builtin/mktree.c:154
+msgid "input is NUL terminated"
+msgstr ""
+
+#: builtin/mktree.c:155 builtin/write-tree.c:26
+msgid "allow missing objects"
+msgstr ""
+
+#: builtin/mktree.c:156
+msgid "allow creation of more than one tree"
+msgstr ""
+
+#: builtin/multi-pack-index.c:9
+msgid ""
+"git multi-pack-index [<options>] (write|verify|expire|repack --batch-"
+"size=<size>)"
+msgstr ""
+
+#: builtin/multi-pack-index.c:26
+msgid "object directory containing set of packfile and pack-index pairs"
+msgstr ""
+
+#: builtin/multi-pack-index.c:29
+msgid ""
+"during repack, collect pack-files of smaller size into a batch that is "
+"larger than this size"
+msgstr ""
+
+#: builtin/multi-pack-index.c:50 builtin/notes.c:376 builtin/notes.c:431
+#: builtin/notes.c:509 builtin/notes.c:521 builtin/notes.c:598
+#: builtin/notes.c:665 builtin/notes.c:815 builtin/notes.c:963
+#: builtin/notes.c:985 builtin/prune-packed.c:25 builtin/tag.c:575
+msgid "too many arguments"
+msgstr ""
+
+#: builtin/multi-pack-index.c:60
+msgid "--batch-size option is only for 'repack' subcommand"
+msgstr ""
+
+#: builtin/multi-pack-index.c:69
+#, c-format
+msgid "unrecognized subcommand: %s"
+msgstr ""
+
+#: builtin/mv.c:18
+msgid "git mv [<options>] <source>... <destination>"
+msgstr ""
+
+#: builtin/mv.c:83
+#, c-format
+msgid "Directory %s is in index and no submodule?"
+msgstr ""
+
+#: builtin/mv.c:85
+msgid "Please stage your changes to .gitmodules or stash them to proceed"
+msgstr ""
+
+#: builtin/mv.c:103
+#, c-format
+msgid "%.*s is in index"
+msgstr ""
+
+#: builtin/mv.c:125
+msgid "force move/rename even if target exists"
+msgstr ""
+
+#: builtin/mv.c:127
+msgid "skip move/rename errors"
+msgstr ""
+
+#: builtin/mv.c:170
+#, c-format
+msgid "destination '%s' is not a directory"
+msgstr ""
+
+#: builtin/mv.c:181
+#, c-format
+msgid "Checking rename of '%s' to '%s'\n"
+msgstr ""
+
+#: builtin/mv.c:185
+msgid "bad source"
+msgstr ""
+
+#: builtin/mv.c:188
+msgid "can not move directory into itself"
+msgstr ""
+
+#: builtin/mv.c:191
+msgid "cannot move directory over file"
+msgstr ""
+
+#: builtin/mv.c:200
+msgid "source directory is empty"
+msgstr ""
+
+#: builtin/mv.c:225
+msgid "not under version control"
+msgstr ""
+
+#: builtin/mv.c:227
+msgid "conflicted"
+msgstr ""
+
+#: builtin/mv.c:230
+msgid "destination exists"
+msgstr ""
+
+#: builtin/mv.c:238
+#, c-format
+msgid "overwriting '%s'"
+msgstr ""
+
+#: builtin/mv.c:241
+msgid "Cannot overwrite"
+msgstr ""
+
+#: builtin/mv.c:244
+msgid "multiple sources for the same target"
+msgstr ""
+
+#: builtin/mv.c:246
+msgid "destination directory does not exist"
+msgstr ""
+
+#: builtin/mv.c:253
+#, c-format
+msgid "%s, source=%s, destination=%s"
+msgstr ""
+
+#: builtin/mv.c:274
+#, c-format
+msgid "Renaming %s to %s\n"
+msgstr ""
+
+#: builtin/mv.c:280 builtin/remote.c:785 builtin/repack.c:483
+#, c-format
+msgid "renaming '%s' failed"
+msgstr ""
+
+#: builtin/name-rev.c:465
+msgid "git name-rev [<options>] <commit>..."
+msgstr ""
+
+#: builtin/name-rev.c:466
+msgid "git name-rev [<options>] --all"
+msgstr ""
+
+#: builtin/name-rev.c:467
+msgid "git name-rev [<options>] --stdin"
+msgstr ""
+
+#: builtin/name-rev.c:524
+msgid "print only ref-based names (no object names)"
+msgstr ""
+
+#: builtin/name-rev.c:525
+msgid "only use tags to name the commits"
+msgstr ""
+
+#: builtin/name-rev.c:527
+msgid "only use refs matching <pattern>"
+msgstr ""
+
+#: builtin/name-rev.c:529
+msgid "ignore refs matching <pattern>"
+msgstr ""
+
+#: builtin/name-rev.c:531
+msgid "list all commits reachable from all refs"
+msgstr ""
+
+#: builtin/name-rev.c:532
+msgid "read from stdin"
+msgstr ""
+
+#: builtin/name-rev.c:533
+msgid "allow to print `undefined` names (default)"
+msgstr ""
+
+#: builtin/name-rev.c:539
+msgid "dereference tags in the input (internal use)"
+msgstr ""
+
+#: builtin/notes.c:28
+msgid "git notes [--ref <notes-ref>] [list [<object>]]"
+msgstr ""
+
+#: builtin/notes.c:29
+msgid ""
+"git notes [--ref <notes-ref>] add [-f] [--allow-empty] [-m <msg> | -F <file> "
+"| (-c | -C) <object>] [<object>]"
+msgstr ""
+
+#: builtin/notes.c:30
+msgid "git notes [--ref <notes-ref>] copy [-f] <from-object> <to-object>"
+msgstr ""
+
+#: builtin/notes.c:31
+msgid ""
+"git notes [--ref <notes-ref>] append [--allow-empty] [-m <msg> | -F <file> | "
+"(-c | -C) <object>] [<object>]"
+msgstr ""
+
+#: builtin/notes.c:32
+msgid "git notes [--ref <notes-ref>] edit [--allow-empty] [<object>]"
+msgstr ""
+
+#: builtin/notes.c:33
+msgid "git notes [--ref <notes-ref>] show [<object>]"
+msgstr ""
+
+#: builtin/notes.c:34
+msgid ""
+"git notes [--ref <notes-ref>] merge [-v | -q] [-s <strategy>] <notes-ref>"
+msgstr ""
+
+#: builtin/notes.c:35
+msgid "git notes merge --commit [-v | -q]"
+msgstr ""
+
+#: builtin/notes.c:36
+msgid "git notes merge --abort [-v | -q]"
+msgstr ""
+
+#: builtin/notes.c:37
+msgid "git notes [--ref <notes-ref>] remove [<object>...]"
+msgstr ""
+
+#: builtin/notes.c:38
+msgid "git notes [--ref <notes-ref>] prune [-n] [-v]"
+msgstr ""
+
+#: builtin/notes.c:39
+msgid "git notes [--ref <notes-ref>] get-ref"
+msgstr ""
+
+#: builtin/notes.c:44
+msgid "git notes [list [<object>]]"
+msgstr ""
+
+#: builtin/notes.c:49
+msgid "git notes add [<options>] [<object>]"
+msgstr ""
+
+#: builtin/notes.c:54
+msgid "git notes copy [<options>] <from-object> <to-object>"
+msgstr ""
+
+#: builtin/notes.c:55
+msgid "git notes copy --stdin [<from-object> <to-object>]..."
+msgstr ""
+
+#: builtin/notes.c:60
+msgid "git notes append [<options>] [<object>]"
+msgstr ""
+
+#: builtin/notes.c:65
+msgid "git notes edit [<object>]"
+msgstr ""
+
+#: builtin/notes.c:70
+msgid "git notes show [<object>]"
+msgstr ""
+
+#: builtin/notes.c:75
+msgid "git notes merge [<options>] <notes-ref>"
+msgstr ""
+
+#: builtin/notes.c:76
+msgid "git notes merge --commit [<options>]"
+msgstr ""
+
+#: builtin/notes.c:77
+msgid "git notes merge --abort [<options>]"
+msgstr ""
+
+#: builtin/notes.c:82
+msgid "git notes remove [<object>]"
+msgstr ""
+
+#: builtin/notes.c:87
+msgid "git notes prune [<options>]"
+msgstr ""
+
+#: builtin/notes.c:92
+msgid "git notes get-ref"
+msgstr ""
+
+#: builtin/notes.c:97
+msgid "Write/edit the notes for the following object:"
+msgstr ""
+
+#: builtin/notes.c:150
+#, c-format
+msgid "unable to start 'show' for object '%s'"
+msgstr ""
+
+#: builtin/notes.c:154
+msgid "could not read 'show' output"
+msgstr ""
+
+#: builtin/notes.c:162
+#, c-format
+msgid "failed to finish 'show' for object '%s'"
+msgstr ""
+
+#: builtin/notes.c:197
+msgid "please supply the note contents using either -m or -F option"
+msgstr ""
+
+#: builtin/notes.c:206
+msgid "unable to write note object"
+msgstr ""
+
+#: builtin/notes.c:208
+#, c-format
+msgid "the note contents have been left in %s"
+msgstr ""
+
+#: builtin/notes.c:242 builtin/tag.c:565
+#, c-format
+msgid "could not open or read '%s'"
+msgstr ""
+
+#: builtin/notes.c:263 builtin/notes.c:313 builtin/notes.c:315
+#: builtin/notes.c:383 builtin/notes.c:438 builtin/notes.c:526
+#: builtin/notes.c:531 builtin/notes.c:610 builtin/notes.c:672
+#, c-format
+msgid "failed to resolve '%s' as a valid ref."
+msgstr ""
+
+#: builtin/notes.c:265
+#, c-format
+msgid "failed to read object '%s'."
+msgstr ""
+
+#: builtin/notes.c:268
+#, c-format
+msgid "cannot read note data from non-blob object '%s'."
+msgstr ""
+
+#: builtin/notes.c:309
+#, c-format
+msgid "malformed input line: '%s'."
+msgstr ""
+
+#: builtin/notes.c:324
+#, c-format
+msgid "failed to copy notes from '%s' to '%s'"
+msgstr ""
+
+#. TRANSLATORS: the first %s will be replaced by a git
+#. notes command: 'add', 'merge', 'remove', etc.
+#.
+#: builtin/notes.c:356
+#, c-format
+msgid "refusing to %s notes in %s (outside of refs/notes/)"
+msgstr ""
+
+#: builtin/notes.c:389 builtin/notes.c:678
+#, c-format
+msgid "no note found for object %s."
+msgstr ""
+
+#: builtin/notes.c:410 builtin/notes.c:576
+msgid "note contents as a string"
+msgstr ""
+
+#: builtin/notes.c:413 builtin/notes.c:579
+msgid "note contents in a file"
+msgstr ""
+
+#: builtin/notes.c:416 builtin/notes.c:582
+msgid "reuse and edit specified note object"
+msgstr ""
+
+#: builtin/notes.c:419 builtin/notes.c:585
+msgid "reuse specified note object"
+msgstr ""
+
+#: builtin/notes.c:422 builtin/notes.c:588
+msgid "allow storing empty note"
+msgstr ""
+
+#: builtin/notes.c:423 builtin/notes.c:496
+msgid "replace existing notes"
+msgstr ""
+
+#: builtin/notes.c:448
+#, c-format
+msgid ""
+"Cannot add notes. Found existing notes for object %s. Use '-f' to overwrite "
+"existing notes"
+msgstr ""
+
+#: builtin/notes.c:463 builtin/notes.c:544
+#, c-format
+msgid "Overwriting existing notes for object %s\n"
+msgstr ""
+
+#: builtin/notes.c:475 builtin/notes.c:637 builtin/notes.c:902
+#, c-format
+msgid "Removing note for object %s\n"
+msgstr ""
+
+#: builtin/notes.c:497
+msgid "read objects from stdin"
+msgstr ""
+
+#: builtin/notes.c:499
+msgid "load rewriting config for <command> (implies --stdin)"
+msgstr ""
+
+#: builtin/notes.c:517
+msgid "too few arguments"
+msgstr ""
+
+#: builtin/notes.c:538
+#, c-format
+msgid ""
+"Cannot copy notes. Found existing notes for object %s. Use '-f' to overwrite "
+"existing notes"
+msgstr ""
+
+#: builtin/notes.c:550
+#, c-format
+msgid "missing notes on source object %s. Cannot copy."
+msgstr ""
+
+#: builtin/notes.c:603
+#, c-format
+msgid ""
+"The -m/-F/-c/-C options have been deprecated for the 'edit' subcommand.\n"
+"Please use 'git notes add -f -m/-F/-c/-C' instead.\n"
+msgstr ""
+
+#: builtin/notes.c:698
+msgid "failed to delete ref NOTES_MERGE_PARTIAL"
+msgstr ""
+
+#: builtin/notes.c:700
+msgid "failed to delete ref NOTES_MERGE_REF"
+msgstr ""
+
+#: builtin/notes.c:702
+msgid "failed to remove 'git notes merge' worktree"
+msgstr ""
+
+#: builtin/notes.c:722
+msgid "failed to read ref NOTES_MERGE_PARTIAL"
+msgstr ""
+
+#: builtin/notes.c:724
+msgid "could not find commit from NOTES_MERGE_PARTIAL."
+msgstr ""
+
+#: builtin/notes.c:726
+msgid "could not parse commit from NOTES_MERGE_PARTIAL."
+msgstr ""
+
+#: builtin/notes.c:739
+msgid "failed to resolve NOTES_MERGE_REF"
+msgstr ""
+
+#: builtin/notes.c:742
+msgid "failed to finalize notes merge"
+msgstr ""
+
+#: builtin/notes.c:768
+#, c-format
+msgid "unknown notes merge strategy %s"
+msgstr ""
+
+#: builtin/notes.c:784
+msgid "General options"
+msgstr ""
+
+#: builtin/notes.c:786
+msgid "Merge options"
+msgstr ""
+
+#: builtin/notes.c:788
+msgid ""
+"resolve notes conflicts using the given strategy (manual/ours/theirs/union/"
+"cat_sort_uniq)"
+msgstr ""
+
+#: builtin/notes.c:790
+msgid "Committing unmerged notes"
+msgstr ""
+
+#: builtin/notes.c:792
+msgid "finalize notes merge by committing unmerged notes"
+msgstr ""
+
+#: builtin/notes.c:794
+msgid "Aborting notes merge resolution"
+msgstr ""
+
+#: builtin/notes.c:796
+msgid "abort notes merge"
+msgstr ""
+
+#: builtin/notes.c:807
+msgid "cannot mix --commit, --abort or -s/--strategy"
+msgstr ""
+
+#: builtin/notes.c:812
+msgid "must specify a notes ref to merge"
+msgstr ""
+
+#: builtin/notes.c:836
+#, c-format
+msgid "unknown -s/--strategy: %s"
+msgstr ""
+
+#: builtin/notes.c:873
+#, c-format
+msgid "a notes merge into %s is already in-progress at %s"
+msgstr ""
+
+#: builtin/notes.c:876
+#, c-format
+msgid "failed to store link to current notes ref (%s)"
+msgstr ""
+
+#: builtin/notes.c:878
+#, c-format
+msgid ""
+"Automatic notes merge failed. Fix conflicts in %s and commit the result with "
+"'git notes merge --commit', or abort the merge with 'git notes merge --"
+"abort'.\n"
+msgstr ""
+
+#: builtin/notes.c:897 builtin/tag.c:578
+#, c-format
+msgid "Failed to resolve '%s' as a valid ref."
+msgstr ""
+
+#: builtin/notes.c:900
+#, c-format
+msgid "Object %s has no note\n"
+msgstr ""
+
+#: builtin/notes.c:912
+msgid "attempt to remove non-existent note is not an error"
+msgstr ""
+
+#: builtin/notes.c:915
+msgid "read object names from the standard input"
+msgstr ""
+
+#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:148
+msgid "do not remove, show only"
+msgstr ""
+
+#: builtin/notes.c:955
+msgid "report pruned notes"
+msgstr ""
+
+#: builtin/notes.c:998
+msgid "notes-ref"
+msgstr ""
+
+#: builtin/notes.c:999
+msgid "use notes from <notes-ref>"
+msgstr ""
+
+#: builtin/notes.c:1034 builtin/stash.c:1671
+#, c-format
+msgid "unknown subcommand: %s"
+msgstr ""
+
+#: builtin/pack-objects.c:54
+msgid ""
+"git pack-objects --stdout [<options>...] [< <ref-list> | < <object-list>]"
+msgstr ""
+
+#: builtin/pack-objects.c:55
+msgid ""
+"git pack-objects [<options>...] <base-name> [< <ref-list> | < <object-list>]"
+msgstr ""
+
+#: builtin/pack-objects.c:440
+#, c-format
+msgid ""
+"write_reuse_object: could not locate %s, expected at offset %<PRIuMAX> in "
+"pack %s"
+msgstr ""
+
+#: builtin/pack-objects.c:448
+#, c-format
+msgid "bad packed object CRC for %s"
+msgstr ""
+
+#: builtin/pack-objects.c:459
+#, c-format
+msgid "corrupt packed object for %s"
+msgstr ""
+
+#: builtin/pack-objects.c:590
+#, c-format
+msgid "recursive delta detected for object %s"
+msgstr ""
+
+#: builtin/pack-objects.c:801
+#, c-format
+msgid "ordered %u objects, expected %<PRIu32>"
+msgstr ""
+
+#: builtin/pack-objects.c:896
+#, c-format
+msgid "expected object at offset %<PRIuMAX> in pack %s"
+msgstr ""
+
+#: builtin/pack-objects.c:1015
+msgid "disabling bitmap writing, packs are split due to pack.packSizeLimit"
+msgstr ""
+
+#: builtin/pack-objects.c:1028
+msgid "Writing objects"
+msgstr ""
+
+#: builtin/pack-objects.c:1089 builtin/update-index.c:90
+#, c-format
+msgid "failed to stat %s"
+msgstr ""
+
+#: builtin/pack-objects.c:1141
+#, c-format
+msgid "wrote %<PRIu32> objects while expecting %<PRIu32>"
+msgstr ""
+
+#: builtin/pack-objects.c:1358
+msgid "disabling bitmap writing, as some objects are not being packed"
+msgstr ""
+
+#: builtin/pack-objects.c:1806
+#, c-format
+msgid "delta base offset overflow in pack for %s"
+msgstr ""
+
+#: builtin/pack-objects.c:1815
+#, c-format
+msgid "delta base offset out of bound for %s"
+msgstr ""
+
+#: builtin/pack-objects.c:2096
+msgid "Counting objects"
+msgstr ""
+
+#: builtin/pack-objects.c:2241
+#, c-format
+msgid "unable to parse object header of %s"
+msgstr ""
+
+#: builtin/pack-objects.c:2311 builtin/pack-objects.c:2327
+#: builtin/pack-objects.c:2337
+#, c-format
+msgid "object %s cannot be read"
+msgstr ""
+
+#: builtin/pack-objects.c:2314 builtin/pack-objects.c:2341
+#, c-format
+msgid "object %s inconsistent object length (%<PRIuMAX> vs %<PRIuMAX>)"
+msgstr ""
+
+#: builtin/pack-objects.c:2351
+msgid "suboptimal pack - out of memory"
+msgstr ""
+
+#: builtin/pack-objects.c:2666
+#, c-format
+msgid "Delta compression using up to %d threads"
+msgstr ""
+
+#: builtin/pack-objects.c:2805
+#, c-format
+msgid "unable to pack objects reachable from tag %s"
+msgstr ""
+
+#: builtin/pack-objects.c:2891
+msgid "Compressing objects"
+msgstr ""
+
+#: builtin/pack-objects.c:2897
+msgid "inconsistency with delta count"
+msgstr ""
+
+#: builtin/pack-objects.c:2976
+#, c-format
+msgid ""
+"value of uploadpack.blobpackfileuri must be of the form '<object-hash> <pack-"
+"hash> <uri>' (got '%s')"
+msgstr ""
+
+#: builtin/pack-objects.c:2979
+#, c-format
+msgid ""
+"object already configured in another uploadpack.blobpackfileuri (got '%s')"
+msgstr ""
+
+#: builtin/pack-objects.c:3008
+#, c-format
+msgid ""
+"expected edge object ID, got garbage:\n"
+" %s"
+msgstr ""
+
+#: builtin/pack-objects.c:3014
+#, c-format
+msgid ""
+"expected object ID, got garbage:\n"
+" %s"
+msgstr ""
+
+#: builtin/pack-objects.c:3112
+msgid "invalid value for --missing"
+msgstr ""
+
+#: builtin/pack-objects.c:3171 builtin/pack-objects.c:3279
+msgid "cannot open pack index"
+msgstr ""
+
+#: builtin/pack-objects.c:3202
+#, c-format
+msgid "loose object at %s could not be examined"
+msgstr ""
+
+#: builtin/pack-objects.c:3287
+msgid "unable to force loose object"
+msgstr ""
+
+#: builtin/pack-objects.c:3380
+#, c-format
+msgid "not a rev '%s'"
+msgstr ""
+
+#: builtin/pack-objects.c:3383
+#, c-format
+msgid "bad revision '%s'"
+msgstr ""
+
+#: builtin/pack-objects.c:3408
+msgid "unable to add recent objects"
+msgstr ""
+
+#: builtin/pack-objects.c:3461
+#, c-format
+msgid "unsupported index version %s"
+msgstr ""
+
+#: builtin/pack-objects.c:3465
+#, c-format
+msgid "bad index version '%s'"
+msgstr ""
+
+#: builtin/pack-objects.c:3503
+msgid "<version>[,<offset>]"
+msgstr ""
+
+#: builtin/pack-objects.c:3504
+msgid "write the pack index file in the specified idx format version"
+msgstr ""
+
+#: builtin/pack-objects.c:3507
+msgid "maximum size of each output pack file"
+msgstr ""
+
+#: builtin/pack-objects.c:3509
+msgid "ignore borrowed objects from alternate object store"
+msgstr ""
+
+#: builtin/pack-objects.c:3511
+msgid "ignore packed objects"
+msgstr ""
+
+#: builtin/pack-objects.c:3513
+msgid "limit pack window by objects"
+msgstr ""
+
+#: builtin/pack-objects.c:3515
+msgid "limit pack window by memory in addition to object limit"
+msgstr ""
+
+#: builtin/pack-objects.c:3517
+msgid "maximum length of delta chain allowed in the resulting pack"
+msgstr ""
+
+#: builtin/pack-objects.c:3519
+msgid "reuse existing deltas"
+msgstr ""
+
+#: builtin/pack-objects.c:3521
+msgid "reuse existing objects"
+msgstr ""
+
+#: builtin/pack-objects.c:3523
+msgid "use OFS_DELTA objects"
+msgstr ""
+
+#: builtin/pack-objects.c:3525
+msgid "use threads when searching for best delta matches"
+msgstr ""
+
+#: builtin/pack-objects.c:3527
+msgid "do not create an empty pack output"
+msgstr ""
+
+#: builtin/pack-objects.c:3529
+msgid "read revision arguments from standard input"
+msgstr ""
+
+#: builtin/pack-objects.c:3531
+msgid "limit the objects to those that are not yet packed"
+msgstr ""
+
+#: builtin/pack-objects.c:3534
+msgid "include objects reachable from any reference"
+msgstr ""
+
+#: builtin/pack-objects.c:3537
+msgid "include objects referred by reflog entries"
+msgstr ""
+
+#: builtin/pack-objects.c:3540
+msgid "include objects referred to by the index"
+msgstr ""
+
+#: builtin/pack-objects.c:3543
+msgid "output pack to stdout"
+msgstr ""
+
+#: builtin/pack-objects.c:3545
+msgid "include tag objects that refer to objects to be packed"
+msgstr ""
+
+#: builtin/pack-objects.c:3547
+msgid "keep unreachable objects"
+msgstr ""
+
+#: builtin/pack-objects.c:3549
+msgid "pack loose unreachable objects"
+msgstr ""
+
+#: builtin/pack-objects.c:3551
+msgid "unpack unreachable objects newer than <time>"
+msgstr ""
+
+#: builtin/pack-objects.c:3554
+msgid "use the sparse reachability algorithm"
+msgstr ""
+
+#: builtin/pack-objects.c:3556
+msgid "create thin packs"
+msgstr ""
+
+#: builtin/pack-objects.c:3558
+msgid "create packs suitable for shallow fetches"
+msgstr ""
+
+#: builtin/pack-objects.c:3560
+msgid "ignore packs that have companion .keep file"
+msgstr ""
+
+#: builtin/pack-objects.c:3562
+msgid "ignore this pack"
+msgstr ""
+
+#: builtin/pack-objects.c:3564
+msgid "pack compression level"
+msgstr ""
+
+#: builtin/pack-objects.c:3566
+msgid "do not hide commits by grafts"
+msgstr ""
+
+#: builtin/pack-objects.c:3568
+msgid "use a bitmap index if available to speed up counting objects"
+msgstr ""
+
+#: builtin/pack-objects.c:3570
+msgid "write a bitmap index together with the pack index"
+msgstr ""
+
+#: builtin/pack-objects.c:3574
+msgid "write a bitmap index if possible"
+msgstr ""
+
+#: builtin/pack-objects.c:3578
+msgid "handling for missing objects"
+msgstr ""
+
+#: builtin/pack-objects.c:3581
+msgid "do not pack objects in promisor packfiles"
+msgstr ""
+
+#: builtin/pack-objects.c:3583
+msgid "respect islands during delta compression"
+msgstr ""
+
+#: builtin/pack-objects.c:3585
+msgid "protocol"
+msgstr ""
+
+#: builtin/pack-objects.c:3586
+msgid "exclude any configured uploadpack.blobpackfileuri with this protocol"
+msgstr ""
+
+#: builtin/pack-objects.c:3617
+#, c-format
+msgid "delta chain depth %d is too deep, forcing %d"
+msgstr ""
+
+#: builtin/pack-objects.c:3622
+#, c-format
+msgid "pack.deltaCacheLimit is too high, forcing %d"
+msgstr ""
+
+#: builtin/pack-objects.c:3676
+msgid "--max-pack-size cannot be used to build a pack for transfer"
+msgstr ""
+
+#: builtin/pack-objects.c:3678
+msgid "minimum pack size limit is 1 MiB"
+msgstr ""
+
+#: builtin/pack-objects.c:3683
+msgid "--thin cannot be used to build an indexable pack"
+msgstr ""
+
+#: builtin/pack-objects.c:3686
+msgid "--keep-unreachable and --unpack-unreachable are incompatible"
+msgstr ""
+
+#: builtin/pack-objects.c:3692
+msgid "cannot use --filter without --stdout"
+msgstr ""
+
+#: builtin/pack-objects.c:3752
+msgid "Enumerating objects"
+msgstr ""
+
+#: builtin/pack-objects.c:3783
+#, c-format
+msgid ""
+"Total %<PRIu32> (delta %<PRIu32>), reused %<PRIu32> (delta %<PRIu32>), pack-"
+"reused %<PRIu32>"
+msgstr ""
+
+#: builtin/pack-redundant.c:601
+msgid ""
+"'git pack-redundant' is nominated for removal.\n"
+"If you still use this command, please add an extra\n"
+"option, '--i-still-use-this', on the command line\n"
+"and let us know you still use it by sending an e-mail\n"
+"to <git@vger.kernel.org>.  Thanks.\n"
+msgstr ""
+
+#: builtin/pack-refs.c:8
+msgid "git pack-refs [<options>]"
+msgstr ""
+
+#: builtin/pack-refs.c:16
+msgid "pack everything"
+msgstr ""
+
+#: builtin/pack-refs.c:17
+msgid "prune loose refs (default)"
+msgstr ""
+
+#: builtin/prune-packed.c:6
+msgid "git prune-packed [-n | --dry-run] [-q | --quiet]"
+msgstr ""
+
+#: builtin/prune.c:14
+msgid "git prune [-n] [-v] [--progress] [--expire <time>] [--] [<head>...]"
+msgstr ""
+
+#: builtin/prune.c:133
+msgid "report pruned objects"
+msgstr ""
+
+#: builtin/prune.c:136
+msgid "expire objects older than <time>"
+msgstr ""
+
+#: builtin/prune.c:138
+msgid "limit traversal to objects outside promisor packfiles"
+msgstr ""
+
+#: builtin/prune.c:152
+msgid "cannot prune in a precious-objects repo"
+msgstr ""
+
+#: builtin/pull.c:45 builtin/pull.c:47
+#, c-format
+msgid "Invalid value for %s: %s"
+msgstr ""
+
+#: builtin/pull.c:67
+msgid "git pull [<options>] [<repository> [<refspec>...]]"
+msgstr ""
+
+#: builtin/pull.c:123
+msgid "control for recursive fetching of submodules"
+msgstr ""
+
+#: builtin/pull.c:127
+msgid "Options related to merging"
+msgstr ""
+
+#: builtin/pull.c:130
+msgid "incorporate changes by rebasing rather than merging"
+msgstr ""
+
+#: builtin/pull.c:158 builtin/rebase.c:492 builtin/revert.c:126
+msgid "allow fast-forward"
+msgstr ""
+
+#: builtin/pull.c:167 parse-options.h:339
+msgid "automatically stash/stash pop before and after"
+msgstr ""
+
+#: builtin/pull.c:183
+msgid "Options related to fetching"
+msgstr ""
+
+#: builtin/pull.c:193
+msgid "force overwrite of local branch"
+msgstr ""
+
+#: builtin/pull.c:201
+msgid "number of submodules pulled in parallel"
+msgstr ""
+
+#: builtin/pull.c:317
+#, c-format
+msgid "Invalid value for pull.ff: %s"
+msgstr ""
+
+#: builtin/pull.c:445
+msgid ""
+"There is no candidate for rebasing against among the refs that you just "
+"fetched."
+msgstr ""
+
+#: builtin/pull.c:447
+msgid ""
+"There are no candidates for merging among the refs that you just fetched."
+msgstr ""
+
+#: builtin/pull.c:448
+msgid ""
+"Generally this means that you provided a wildcard refspec which had no\n"
+"matches on the remote end."
+msgstr ""
+
+#: builtin/pull.c:451
+#, c-format
+msgid ""
+"You asked to pull from the remote '%s', but did not specify\n"
+"a branch. Because this is not the default configured remote\n"
+"for your current branch, you must specify a branch on the command line."
+msgstr ""
+
+#: builtin/pull.c:456 builtin/rebase.c:1253
+msgid "You are not currently on a branch."
+msgstr ""
+
+#: builtin/pull.c:458 builtin/pull.c:473
+msgid "Please specify which branch you want to rebase against."
+msgstr ""
+
+#: builtin/pull.c:460 builtin/pull.c:475
+msgid "Please specify which branch you want to merge with."
+msgstr ""
+
+#: builtin/pull.c:461 builtin/pull.c:476
+msgid "See git-pull(1) for details."
+msgstr ""
+
+#: builtin/pull.c:463 builtin/pull.c:469 builtin/pull.c:478
+#: builtin/rebase.c:1259
+msgid "<remote>"
+msgstr ""
+
+#: builtin/pull.c:463 builtin/pull.c:478 builtin/pull.c:483
+msgid "<branch>"
+msgstr ""
+
+#: builtin/pull.c:471 builtin/rebase.c:1251
+msgid "There is no tracking information for the current branch."
+msgstr ""
+
+#: builtin/pull.c:480
+msgid ""
+"If you wish to set tracking information for this branch you can do so with:"
+msgstr ""
+
+#: builtin/pull.c:485
+#, c-format
+msgid ""
+"Your configuration specifies to merge with the ref '%s'\n"
+"from the remote, but no such ref was fetched."
+msgstr ""
+
+#: builtin/pull.c:596
+#, c-format
+msgid "unable to access commit %s"
+msgstr ""
+
+#: builtin/pull.c:902
+msgid "ignoring --verify-signatures for rebase"
+msgstr ""
+
+#: builtin/pull.c:930
+msgid ""
+"Pulling without specifying how to reconcile divergent branches is\n"
+"discouraged. You can squelch this message by running one of the following\n"
+"commands sometime before your next pull:\n"
+"\n"
+"  git config pull.rebase false  # merge (the default strategy)\n"
+"  git config pull.rebase true   # rebase\n"
+"  git config pull.ff only       # fast-forward only\n"
+"\n"
+"You can replace \"git config\" with \"git config --global\" to set a "
+"default\n"
+"preference for all repositories. You can also pass --rebase, --no-rebase,\n"
+"or --ff-only on the command line to override the configured default per\n"
+"invocation.\n"
+msgstr ""
+
+#: builtin/pull.c:991
+msgid "Updating an unborn branch with changes added to the index."
+msgstr ""
+
+#: builtin/pull.c:995
+msgid "pull with rebase"
+msgstr ""
+
+#: builtin/pull.c:996
+msgid "please commit or stash them."
+msgstr ""
+
+#: builtin/pull.c:1021
+#, c-format
+msgid ""
+"fetch updated the current branch head.\n"
+"fast-forwarding your working tree from\n"
+"commit %s."
+msgstr ""
+
+#: builtin/pull.c:1027
+#, c-format
+msgid ""
+"Cannot fast-forward your working tree.\n"
+"After making sure that you saved anything precious from\n"
+"$ git diff %s\n"
+"output, run\n"
+"$ git reset --hard\n"
+"to recover."
+msgstr ""
+
+#: builtin/pull.c:1042
+msgid "Cannot merge multiple branches into empty head."
+msgstr ""
+
+#: builtin/pull.c:1046
+msgid "Cannot rebase onto multiple branches."
+msgstr ""
+
+#: builtin/pull.c:1067
+msgid "cannot rebase with locally recorded submodule modifications"
+msgstr ""
+
+#: builtin/push.c:19
+msgid "git push [<options>] [<repository> [<refspec>...]]"
+msgstr "git push [<opsi>] [<repositori> [<spek referensi>...]]"
+
+#: builtin/push.c:111
+msgid "tag shorthand without <tag>"
+msgstr "pintasan tag tanpa <tag>"
+
+#: builtin/push.c:119
+msgid "--delete only accepts plain target ref names"
+msgstr "--delete hanya terima nama target referensi polos"
+
+#: builtin/push.c:164
+msgid ""
+"\n"
+"To choose either option permanently, see push.default in 'git help config'."
+msgstr ""
+"\n"
+"Untuk memilih salah satu opsi secara permanen, lihat push.default di 'git "
+"help config'."
+
+#: builtin/push.c:167
+#, c-format
+msgid ""
+"The upstream branch of your current branch does not match\n"
+"the name of your current branch.  To push to the upstream branch\n"
+"on the remote, use\n"
+"\n"
+"    git push %s HEAD:%s\n"
+"\n"
+"To push to the branch of the same name on the remote, use\n"
+"\n"
+"    git push %s HEAD\n"
+"%s"
+msgstr ""
+"Cabang hulu dari cabang Anda saat ini tidak cocok dengan \n"
+"nama cabang Anda saat ini. Untuk dorong ke cabang hulu pada remote,\n"
+"gunakan\n"
+"\n"
+"    git push %s HEAD:%s\n"
+"\n"
+"Untuk dorong ke cabang bernama sama pada remote, gunakan\n"
+"\n"
+"    git push %s HEAD\n"
+"%s"
+
+#: builtin/push.c:182
+#, c-format
+msgid ""
+"You are not currently on a branch.\n"
+"To push the history leading to the current (detached HEAD)\n"
+"state now, use\n"
+"\n"
+"    git push %s HEAD:<name-of-remote-branch>\n"
+msgstr ""
+"Anda tidak berada pada cabang.\n"
+"Untuk dorong riwayat hingga kondisi saat ini (HEAD terlepas)\n"
+"sekarang, gunakan\n"
+"\n"
+"    git push %s HEAD:<nama-cabang-remote>\n"
+
+#: builtin/push.c:194
+#, c-format
+msgid ""
+"The current branch %s has no upstream branch.\n"
+"To push the current branch and set the remote as upstream, use\n"
+"\n"
+"    git push --set-upstream %s %s\n"
+msgstr ""
+"Cabang saat ini %s tidak punya cabang hulu.\n"
+"Untuk dorong cabang saat ini dan setel remote sebagai hulu, gunakan\n"
+"\n"
+"    git push --set-upstream %s %s\n"
+
+#: builtin/push.c:202
+#, c-format
+msgid "The current branch %s has multiple upstream branches, refusing to push."
+msgstr "Cabang saat ini %s punya banyak cabang hulu, tolak dorong. "
+
+#: builtin/push.c:205
+#, c-format
+msgid ""
+"You are pushing to remote '%s', which is not the upstream of\n"
+"your current branch '%s', without telling me what to push\n"
+"to update which remote branch."
+msgstr ""
+"Anda sedang mendorong ke remote '%s', yang bukan hulu dari\n"
+"cabang Anda saat ini '%s', tanpa beri tahu saya apa yang harus\n"
+"didorong untuk perbarui cabang remote yang mana."
+
+#: builtin/push.c:260
+msgid ""
+"You didn't specify any refspecs to push, and push.default is \"nothing\"."
+msgstr ""
+"Anda tidak sebutkan spek referensi apapun untuk didorong, dan push.default "
+"yaitu \"nothing\""
+
+#: builtin/push.c:267
+msgid ""
+"Updates were rejected because the tip of your current branch is behind\n"
+"its remote counterpart. Integrate the remote changes (e.g.\n"
+"'git pull ...') before pushing again.\n"
+"See the 'Note about fast-forwards' in 'git push --help' for details."
+msgstr ""
+"Pembaruan ditolak karena ujung dari cabang Anda saat ini di belakang\n"
+"pasangan remotenya. Integrasikan perubahan remote (seperti\n"
+"'git pull') sebelum dorong lagi.\n"
+"Lihat 'Note about fast-forwards' di 'git push --help' untuk selengkapnya."
+
+#: builtin/push.c:273
+msgid ""
+"Updates were rejected because a pushed branch tip is behind its remote\n"
+"counterpart. Check out this branch and integrate the remote changes\n"
+"(e.g. 'git pull ...') before pushing again.\n"
+"See the 'Note about fast-forwards' in 'git push --help' for details."
+msgstr ""
+"Pembaruan ditolak karena ujung dari cabang yang didorong di belakang\n"
+"pasangan remotenya. Check out cabang itu dan integrasikan perubahan\n"
+"remote (seperti 'git pull') sebelum dorong lagi.\n"
+"Lihat 'Note about fast-forwards' di 'git push --help' untuk selengkapnya."
+
+#: builtin/push.c:279
+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"
+"to the same ref. You may want to first integrate the remote changes\n"
+"(e.g., 'git pull ...') before pushing again.\n"
+"See the 'Note about fast-forwards' in 'git push --help' for details."
+msgstr ""
+"Pembaruan ditolak karena remote berisi kerja yang Anda tidak punya\n"
+"di lokal. Ini biasanya disebabkan repositori yang lain dorong ke\n"
+"referensi yang sama. Mungkin Anda ingin integrasikan terlebih dahulu\n"
+"perubahan remote (seperti 'git pull') sebelum dorong lagi.\n"
+"Lihat 'Note about fast-forwards' di 'git push --help' untuk selengkapnya."
+
+#: builtin/push.c:286
+msgid "Updates were rejected because the tag already exists in the remote."
+msgstr "Pembaruan ditolak karena tag sudah ada di remote."
+
+#: builtin/push.c:289
+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 ""
+"Anda tidak dapat memperbarui referensi remote yang menunjuk ke objek\n"
+"non komit atau memperbarui referensi remote agar itu memnunjuk ke\n"
+"objek non komit, tanpa menggunakan opsi '--force'.\n"
+
+#: builtin/push.c:294
+msgid ""
+"Updates were rejected because the tip of the remote-tracking\n"
+"branch has been updated since the last checkout. You may want\n"
+"to integrate those changes locally (e.g., 'git pull ...')\n"
+"before forcing an update.\n"
+msgstr ""
+"Pembaruan ditolak karena ujung dari cabang pelacak remote\n"
+"sudah diperbarui sejak checkout terakhir. Mungkin Anda ingin\n"
+"integrasikan perubahan tersebut ke lokal (seperti 'git pull...')\n"
+"sebelum memaksa pembaruan.\n"
+
+#: builtin/push.c:364
+#, c-format
+msgid "Pushing to %s\n"
+msgstr "Mendorong ke %s\n"
+
+#: builtin/push.c:371
+#, c-format
+msgid "failed to push some refs to '%s'"
+msgstr "gagal dorong beberapa referensi ke '%s'"
+
+#: builtin/push.c:553
+msgid "repository"
+msgstr "repositori"
+
+#: builtin/push.c:554 builtin/send-pack.c:189
+msgid "push all refs"
+msgstr "dorong semua referensi"
+
+#: builtin/push.c:555 builtin/send-pack.c:191
+msgid "mirror all refs"
+msgstr "cermin semua referensi"
+
+#: builtin/push.c:557
+msgid "delete refs"
+msgstr "hapus referensi"
+
+#: builtin/push.c:558
+msgid "push tags (can't be used with --all or --mirror)"
+msgstr "dorong tag (tidak dapat digunakan dengan --all atau --mirror)"
+
+#: builtin/push.c:561 builtin/send-pack.c:192
+msgid "force updates"
+msgstr "paksa pembaruan"
+
+#: builtin/push.c:562 builtin/send-pack.c:204
+msgid "<refname>:<expect>"
+msgstr "<nama referensi>:<harapan>"
+
+#: builtin/push.c:563 builtin/send-pack.c:205
+msgid "require old value of ref to be at this value"
+msgstr "memerlukan nilai lama referensi berada pada nilai saat ini"
+
+#: builtin/push.c:566 builtin/send-pack.c:208
+msgid "require remote updates to be integrated locally"
+msgstr "memerlukan pembaruan remote diintegrasikan ke lokal"
+
+#: builtin/push.c:569
+msgid "control recursive pushing of submodules"
+msgstr "kontrol dorong rekursif submodul"
+
+#: builtin/push.c:570 builtin/send-pack.c:199
+msgid "use thin pack"
+msgstr "gunakan paket tipis"
+
+#: builtin/push.c:571 builtin/push.c:572 builtin/send-pack.c:186
+#: builtin/send-pack.c:187
+msgid "receive pack program"
+msgstr "program terima paket"
+
+#: builtin/push.c:573
+msgid "set upstream for git pull/status"
+msgstr "setel hulu untuk git pull/status"
+
+#: builtin/push.c:576
+msgid "prune locally removed refs"
+msgstr "buang referensi terhapus lokal"
+
+#: builtin/push.c:578
+msgid "bypass pre-push hook"
+msgstr "lewati kait pra-dorong"
+
+#: builtin/push.c:579
+msgid "push missing but relevant tags"
+msgstr "dorong tag yang hilang tapi relevan"
+
+#: builtin/push.c:581 builtin/send-pack.c:193
+msgid "GPG sign the push"
+msgstr "Tandatangan GPG dorong"
+
+#: builtin/push.c:583 builtin/send-pack.c:200
+msgid "request atomic transaction on remote side"
+msgstr "minta transaksi atomik pada sisi remote"
+
+#: builtin/push.c:601
+msgid "--delete is incompatible with --all, --mirror and --tags"
+msgstr "--delete tidak kompatibel dengan --all, --mirror dan --tags "
+
+#: builtin/push.c:603
+msgid "--delete doesn't make sense without any refs"
+msgstr "--delete tidak masuk akal tanpa referensi"
+
+#: builtin/push.c:623
+#, c-format
+msgid "bad repository '%s'"
+msgstr "repositori jelek '%s'"
+
+#: builtin/push.c:624
+msgid ""
+"No configured push destination.\n"
+"Either specify the URL from the command-line or configure a remote "
+"repository using\n"
+"\n"
+"    git remote add <name> <url>\n"
+"\n"
+"and then push using the remote name\n"
+"\n"
+"    git push <name>\n"
+msgstr ""
+"Tidak ada tujuan dorong terkonfigurasi.\n"
+"Baik sebutkan URL dari baris perintah atau konfigurasikan repositori remote "
+"dengan menggunakan\n"
+"\n"
+"    git remote add <nama> <url>\n"
+"\n"
+"dan dorong dengan menggunakan nama remote\n"
+"\n"
+"    git push <nama>\n"
+
+#: builtin/push.c:639
+msgid "--all and --tags are incompatible"
+msgstr "--all dan --tags tidak kompatibel"
+
+#: builtin/push.c:641
+msgid "--all can't be combined with refspecs"
+msgstr "--all tidak dapat digabung dengan spek referensi"
+
+#: builtin/push.c:645
+msgid "--mirror and --tags are incompatible"
+msgstr "--mirror dan --tags tidak kompatibel"
+
+#: builtin/push.c:647
+msgid "--mirror can't be combined with refspecs"
+msgstr "--mirror tidak dapat digabungkan dengan spek referensi"
+
+#: builtin/push.c:650
+msgid "--all and --mirror are incompatible"
+msgstr "--all dan --mirror tidak kompatibel"
+
+#: builtin/push.c:657
+msgid "push options must not have new line characters"
+msgstr "opsi dorong harus tidak ada karakter baris baru"
+
+#: builtin/range-diff.c:9
+msgid "git range-diff [<options>] <old-base>..<old-tip> <new-base>..<new-tip>"
+msgstr ""
+
+#: builtin/range-diff.c:10
+msgid "git range-diff [<options>] <old-tip>...<new-tip>"
+msgstr ""
+
+#: builtin/range-diff.c:11
+msgid "git range-diff [<options>] <base> <old-tip> <new-tip>"
+msgstr ""
+
+#: builtin/range-diff.c:28
+msgid "Percentage by which creation is weighted"
+msgstr ""
+
+#: builtin/range-diff.c:30
+msgid "use simple diff colors"
+msgstr ""
+
+#: builtin/range-diff.c:32
+msgid "notes"
+msgstr ""
+
+#: builtin/range-diff.c:32
+msgid "passed to 'git log'"
+msgstr ""
+
+#: builtin/range-diff.c:35
+msgid "only emit output related to the first range"
+msgstr ""
+
+#: builtin/range-diff.c:37
+msgid "only emit output related to the second range"
+msgstr ""
+
+#: builtin/range-diff.c:60 builtin/range-diff.c:64
+#, c-format
+msgid "not a commit range: '%s'"
+msgstr ""
+
+#: builtin/range-diff.c:74
+msgid "single arg format must be symmetric range"
+msgstr ""
+
+#: builtin/range-diff.c:89
+msgid "need two commit ranges"
+msgstr ""
+
+#: builtin/read-tree.c:41
+msgid ""
+"git read-tree [(-m [--trivial] [--aggressive] | --reset | --prefix=<prefix>) "
+"[-u [--exclude-per-directory=<gitignore>] | -i]] [--no-sparse-checkout] [--"
+"index-output=<file>] (--empty | <tree-ish1> [<tree-ish2> [<tree-ish3>]])"
+msgstr ""
+
+#: builtin/read-tree.c:124
+msgid "write resulting index to <file>"
+msgstr ""
+
+#: builtin/read-tree.c:127
+msgid "only empty the index"
+msgstr ""
+
+#: builtin/read-tree.c:129
+msgid "Merging"
+msgstr ""
+
+#: builtin/read-tree.c:131
+msgid "perform a merge in addition to a read"
+msgstr ""
+
+#: builtin/read-tree.c:133
+msgid "3-way merge if no file level merging required"
+msgstr ""
+
+#: builtin/read-tree.c:135
+msgid "3-way merge in presence of adds and removes"
+msgstr ""
+
+#: builtin/read-tree.c:137
+msgid "same as -m, but discard unmerged entries"
+msgstr ""
+
+#: builtin/read-tree.c:138
+msgid "<subdirectory>/"
+msgstr ""
+
+#: builtin/read-tree.c:139
+msgid "read the tree into the index under <subdirectory>/"
+msgstr ""
+
+#: builtin/read-tree.c:142
+msgid "update working tree with merge result"
+msgstr ""
+
+#: builtin/read-tree.c:144
+msgid "gitignore"
+msgstr ""
+
+#: builtin/read-tree.c:145
+msgid "allow explicitly ignored files to be overwritten"
+msgstr ""
+
+#: builtin/read-tree.c:148
+msgid "don't check the working tree after merging"
+msgstr ""
+
+#: builtin/read-tree.c:149
+msgid "don't update the index or the work tree"
+msgstr ""
+
+#: builtin/read-tree.c:151
+msgid "skip applying sparse checkout filter"
+msgstr ""
+
+#: builtin/read-tree.c:153
+msgid "debug unpack-trees"
+msgstr ""
+
+#: builtin/read-tree.c:157
+msgid "suppress feedback messages"
+msgstr ""
+
+#: builtin/read-tree.c:188
+msgid "You need to resolve your current index first"
+msgstr ""
+
+#: builtin/rebase.c:35
+msgid ""
+"git rebase [-i] [options] [--exec <cmd>] [--onto <newbase> | --keep-base] "
+"[<upstream> [<branch>]]"
+msgstr ""
+
+#: builtin/rebase.c:37
+msgid ""
+"git rebase [-i] [options] [--exec <cmd>] [--onto <newbase>] --root [<branch>]"
+msgstr ""
+
+#: builtin/rebase.c:39
+msgid "git rebase --continue | --abort | --skip | --edit-todo"
+msgstr ""
+
+#: builtin/rebase.c:195 builtin/rebase.c:219 builtin/rebase.c:246
+#, c-format
+msgid "unusable todo list: '%s'"
+msgstr ""
+
+#: builtin/rebase.c:312
+#, c-format
+msgid "could not create temporary %s"
+msgstr ""
+
+#: builtin/rebase.c:318
+msgid "could not mark as interactive"
+msgstr ""
+
+#: builtin/rebase.c:371
+msgid "could not generate todo list"
+msgstr ""
+
+#: builtin/rebase.c:413
+msgid "a base commit must be provided with --upstream or --onto"
+msgstr ""
+
+#: builtin/rebase.c:482
+msgid "git rebase--interactive [<options>]"
+msgstr ""
+
+#: builtin/rebase.c:495 builtin/rebase.c:1394
+msgid "keep commits which start empty"
+msgstr ""
+
+#: builtin/rebase.c:499 builtin/revert.c:128
+msgid "allow commits with empty messages"
+msgstr ""
+
+#: builtin/rebase.c:501
+msgid "rebase merge commits"
+msgstr ""
+
+#: builtin/rebase.c:503
+msgid "keep original branch points of cousins"
+msgstr ""
+
+#: builtin/rebase.c:505
+msgid "move commits that begin with squash!/fixup!"
+msgstr ""
+
+#: builtin/rebase.c:506
+msgid "sign commits"
+msgstr ""
+
+#: builtin/rebase.c:508 builtin/rebase.c:1333
+msgid "display a diffstat of what changed upstream"
+msgstr ""
+
+#: builtin/rebase.c:510
+msgid "continue rebase"
+msgstr ""
+
+#: builtin/rebase.c:512
+msgid "skip commit"
+msgstr ""
+
+#: builtin/rebase.c:513
+msgid "edit the todo list"
+msgstr ""
+
+#: builtin/rebase.c:515
+msgid "show the current patch"
+msgstr ""
+
+#: builtin/rebase.c:518
+msgid "shorten commit ids in the todo list"
+msgstr ""
+
+#: builtin/rebase.c:520
+msgid "expand commit ids in the todo list"
+msgstr ""
+
+#: builtin/rebase.c:522
+msgid "check the todo list"
+msgstr ""
+
+#: builtin/rebase.c:524
+msgid "rearrange fixup/squash lines"
+msgstr ""
+
+#: builtin/rebase.c:526
+msgid "insert exec commands in todo list"
+msgstr ""
+
+#: builtin/rebase.c:527
+msgid "onto"
+msgstr ""
+
+#: builtin/rebase.c:530
+msgid "restrict-revision"
+msgstr ""
+
+#: builtin/rebase.c:530
+msgid "restrict revision"
+msgstr ""
+
+#: builtin/rebase.c:532
+msgid "squash-onto"
+msgstr ""
+
+#: builtin/rebase.c:533
+msgid "squash onto"
+msgstr ""
+
+#: builtin/rebase.c:535
+msgid "the upstream commit"
+msgstr ""
+
+#: builtin/rebase.c:537
+msgid "head-name"
+msgstr ""
+
+#: builtin/rebase.c:537
+msgid "head name"
+msgstr ""
+
+#: builtin/rebase.c:542
+msgid "rebase strategy"
+msgstr ""
+
+#: builtin/rebase.c:543
+msgid "strategy-opts"
+msgstr ""
+
+#: builtin/rebase.c:544
+msgid "strategy options"
+msgstr ""
+
+#: builtin/rebase.c:545
+msgid "switch-to"
+msgstr ""
+
+#: builtin/rebase.c:546
+msgid "the branch or commit to checkout"
+msgstr ""
+
+#: builtin/rebase.c:547
+msgid "onto-name"
+msgstr ""
+
+#: builtin/rebase.c:547
+msgid "onto name"
+msgstr ""
+
+#: builtin/rebase.c:548
+msgid "cmd"
+msgstr ""
+
+#: builtin/rebase.c:548
+msgid "the command to run"
+msgstr ""
+
+#: builtin/rebase.c:551 builtin/rebase.c:1427
+msgid "automatically re-schedule any `exec` that fails"
+msgstr ""
+
+#: builtin/rebase.c:567
+msgid "--[no-]rebase-cousins has no effect without --rebase-merges"
+msgstr ""
+
+#: builtin/rebase.c:583
+#, c-format
+msgid "%s requires the merge backend"
+msgstr ""
+
+#: builtin/rebase.c:626
+#, c-format
+msgid "could not get 'onto': '%s'"
+msgstr ""
+
+#: builtin/rebase.c:643
+#, c-format
+msgid "invalid orig-head: '%s'"
+msgstr ""
+
+#: builtin/rebase.c:668
+#, c-format
+msgid "ignoring invalid allow_rerere_autoupdate: '%s'"
+msgstr ""
+
+#: builtin/rebase.c:813 git-rebase--preserve-merges.sh:81
+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\"."
+msgstr ""
+
+#: builtin/rebase.c:896
+#, c-format
+msgid ""
+"\n"
+"git encountered an error while preparing the patches to replay\n"
+"these revisions:\n"
+"\n"
+"    %s\n"
+"\n"
+"As a result, git cannot rebase them."
+msgstr ""
+
+#: builtin/rebase.c:1227
+#, c-format
+msgid ""
+"unrecognized empty type '%s'; valid values are \"drop\", \"keep\", and \"ask"
+"\"."
+msgstr ""
+
+#: builtin/rebase.c:1245
+#, c-format
+msgid ""
+"%s\n"
+"Please specify which branch you want to rebase against.\n"
+"See git-rebase(1) for details.\n"
+"\n"
+"    git rebase '<branch>'\n"
+"\n"
+msgstr ""
+
+#: builtin/rebase.c:1261
+#, c-format
+msgid ""
+"If you wish to set tracking information for this branch you can do so with:\n"
+"\n"
+"    git branch --set-upstream-to=%s/<branch> %s\n"
+"\n"
+msgstr ""
+
+#: builtin/rebase.c:1291
+msgid "exec commands cannot contain newlines"
+msgstr ""
+
+#: builtin/rebase.c:1295
+msgid "empty exec command"
+msgstr ""
+
+#: builtin/rebase.c:1324
+msgid "rebase onto given branch instead of upstream"
+msgstr ""
+
+#: builtin/rebase.c:1326
+msgid "use the merge-base of upstream and branch as the current base"
+msgstr ""
+
+#: builtin/rebase.c:1328
+msgid "allow pre-rebase hook to run"
+msgstr ""
+
+#: builtin/rebase.c:1330
+msgid "be quiet. implies --no-stat"
+msgstr ""
+
+#: builtin/rebase.c:1336
+msgid "do not show diffstat of what changed upstream"
+msgstr ""
+
+#: builtin/rebase.c:1339
+msgid "add a Signed-off-by trailer to each commit"
+msgstr ""
+
+#: builtin/rebase.c:1342
+msgid "make committer date match author date"
+msgstr ""
+
+#: builtin/rebase.c:1344
+msgid "ignore author date and use current date"
+msgstr ""
+
+#: builtin/rebase.c:1346
+msgid "synonym of --reset-author-date"
+msgstr ""
+
+#: builtin/rebase.c:1348 builtin/rebase.c:1352
+msgid "passed to 'git apply'"
+msgstr ""
+
+#: builtin/rebase.c:1350
+msgid "ignore changes in whitespace"
+msgstr ""
+
+#: builtin/rebase.c:1354 builtin/rebase.c:1357
+msgid "cherry-pick all commits, even if unchanged"
+msgstr ""
+
+#: builtin/rebase.c:1359
+msgid "continue"
+msgstr ""
+
+#: builtin/rebase.c:1362
+msgid "skip current patch and continue"
+msgstr ""
+
+#: builtin/rebase.c:1364
+msgid "abort and check out the original branch"
+msgstr ""
+
+#: builtin/rebase.c:1367
+msgid "abort but keep HEAD where it is"
+msgstr ""
+
+#: builtin/rebase.c:1368
+msgid "edit the todo list during an interactive rebase"
+msgstr ""
+
+#: builtin/rebase.c:1371
+msgid "show the patch file being applied or merged"
+msgstr ""
+
+#: builtin/rebase.c:1374
+msgid "use apply strategies to rebase"
+msgstr ""
+
+#: builtin/rebase.c:1378
+msgid "use merging strategies to rebase"
+msgstr ""
+
+#: builtin/rebase.c:1382
+msgid "let the user edit the list of commits to rebase"
+msgstr ""
+
+#: builtin/rebase.c:1386
+msgid "(DEPRECATED) try to recreate merges instead of ignoring them"
+msgstr ""
+
+#: builtin/rebase.c:1391
+msgid "how to handle commits that become empty"
+msgstr ""
+
+#: builtin/rebase.c:1398
+msgid "move commits that begin with squash!/fixup! under -i"
+msgstr ""
+
+#: builtin/rebase.c:1405
+msgid "add exec lines after each commit of the editable list"
+msgstr ""
+
+#: builtin/rebase.c:1409
+msgid "allow rebasing commits with empty messages"
+msgstr ""
+
+#: builtin/rebase.c:1413
+msgid "try to rebase merges instead of skipping them"
+msgstr ""
+
+#: builtin/rebase.c:1416
+msgid "use 'merge-base --fork-point' to refine upstream"
+msgstr ""
+
+#: builtin/rebase.c:1418
+msgid "use the given merge strategy"
+msgstr ""
+
+#: builtin/rebase.c:1420 builtin/revert.c:115
+msgid "option"
+msgstr ""
+
+#: builtin/rebase.c:1421
+msgid "pass the argument through to the merge strategy"
+msgstr ""
+
+#: builtin/rebase.c:1424
+msgid "rebase all reachable commits up to the root(s)"
+msgstr ""
+
+#: builtin/rebase.c:1429
+msgid "apply all changes, even those already present upstream"
+msgstr ""
+
+#: builtin/rebase.c:1446
+msgid ""
+"the rebase.useBuiltin support has been removed!\n"
+"See its entry in 'git help config' for details."
+msgstr ""
+
+#: builtin/rebase.c:1452
+msgid "It looks like 'git am' is in progress. Cannot rebase."
+msgstr ""
+
+#: builtin/rebase.c:1493
+msgid ""
+"git rebase --preserve-merges is deprecated. Use --rebase-merges instead."
+msgstr ""
+
+#: builtin/rebase.c:1498
+msgid "cannot combine '--keep-base' with '--onto'"
+msgstr ""
+
+#: builtin/rebase.c:1500
+msgid "cannot combine '--keep-base' with '--root'"
+msgstr ""
+
+#: builtin/rebase.c:1504
+msgid "cannot combine '--root' with '--fork-point'"
+msgstr ""
+
+#: builtin/rebase.c:1507
+msgid "No rebase in progress?"
+msgstr ""
+
+#: builtin/rebase.c:1511
+msgid "The --edit-todo action can only be used during interactive rebase."
+msgstr ""
+
+#: builtin/rebase.c:1534 t/helper/test-fast-rebase.c:123
+msgid "Cannot read HEAD"
+msgstr ""
+
+#: builtin/rebase.c:1546
+msgid ""
+"You must edit all merge conflicts and then\n"
+"mark them as resolved using git add"
+msgstr ""
+
+#: builtin/rebase.c:1565
+msgid "could not discard worktree changes"
+msgstr ""
+
+#: builtin/rebase.c:1584
+#, c-format
+msgid "could not move back to %s"
+msgstr ""
+
+#: builtin/rebase.c:1630
+#, c-format
+msgid ""
+"It seems that there is already a %s directory, and\n"
+"I wonder if you are in the middle of another rebase.  If that is the\n"
+"case, please try\n"
+"\t%s\n"
+"If that is not the case, please\n"
+"\t%s\n"
+"and run me again.  I am stopping in case you still have something\n"
+"valuable there.\n"
+msgstr ""
+
+#: builtin/rebase.c:1658
+msgid "switch `C' expects a numerical value"
+msgstr ""
+
+#: builtin/rebase.c:1700
+#, c-format
+msgid "Unknown mode: %s"
+msgstr ""
+
+#: builtin/rebase.c:1739
+msgid "--strategy requires --merge or --interactive"
+msgstr ""
+
+#: builtin/rebase.c:1769
+msgid "cannot combine apply options with merge options"
+msgstr ""
+
+#: builtin/rebase.c:1782
+#, c-format
+msgid "Unknown rebase backend: %s"
+msgstr ""
+
+#: builtin/rebase.c:1812
+msgid "--reschedule-failed-exec requires --exec or --interactive"
+msgstr ""
+
+#: builtin/rebase.c:1832
+msgid "cannot combine '--preserve-merges' with '--rebase-merges'"
+msgstr ""
+
+#: builtin/rebase.c:1836
+msgid ""
+"error: cannot combine '--preserve-merges' with '--reschedule-failed-exec'"
+msgstr ""
+
+#: builtin/rebase.c:1860
+#, c-format
+msgid "invalid upstream '%s'"
+msgstr ""
+
+#: builtin/rebase.c:1866
+msgid "Could not create new root commit"
+msgstr ""
+
+#: builtin/rebase.c:1892
+#, c-format
+msgid "'%s': need exactly one merge base with branch"
+msgstr ""
+
+#: builtin/rebase.c:1895
+#, c-format
+msgid "'%s': need exactly one merge base"
+msgstr ""
+
+#: builtin/rebase.c:1903
+#, c-format
+msgid "Does not point to a valid commit '%s'"
+msgstr ""
+
+#: builtin/rebase.c:1931
+#, c-format
+msgid "fatal: no such branch/commit '%s'"
+msgstr ""
+
+#: builtin/rebase.c:1939 builtin/submodule--helper.c:40
+#: builtin/submodule--helper.c:2414
+#, c-format
+msgid "No such ref: %s"
+msgstr ""
+
+#: builtin/rebase.c:1950
+msgid "Could not resolve HEAD to a revision"
+msgstr ""
+
+#: builtin/rebase.c:1971
+msgid "Please commit or stash them."
+msgstr ""
+
+#: builtin/rebase.c:2007
+#, c-format
+msgid "could not switch to %s"
+msgstr ""
+
+#: builtin/rebase.c:2018
+msgid "HEAD is up to date."
+msgstr ""
+
+#: builtin/rebase.c:2020
+#, c-format
+msgid "Current branch %s is up to date.\n"
+msgstr ""
+
+#: builtin/rebase.c:2028
+msgid "HEAD is up to date, rebase forced."
+msgstr ""
+
+#: builtin/rebase.c:2030
+#, c-format
+msgid "Current branch %s is up to date, rebase forced.\n"
+msgstr ""
+
+#: builtin/rebase.c:2038
+msgid "The pre-rebase hook refused to rebase."
+msgstr ""
+
+#: builtin/rebase.c:2045
+#, c-format
+msgid "Changes to %s:\n"
+msgstr ""
+
+#: builtin/rebase.c:2048
+#, c-format
+msgid "Changes from %s to %s:\n"
+msgstr ""
+
+#: builtin/rebase.c:2073
+#, c-format
+msgid "First, rewinding head to replay your work on top of it...\n"
+msgstr ""
+
+#: builtin/rebase.c:2082
+msgid "Could not detach HEAD"
+msgstr ""
+
+#: builtin/rebase.c:2091
+#, c-format
+msgid "Fast-forwarded %s to %s.\n"
+msgstr ""
+
+#: builtin/receive-pack.c:34
+msgid "git receive-pack <git-dir>"
+msgstr ""
+
+#: builtin/receive-pack.c:1276
+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"
+"with what you pushed, and will require 'git reset --hard' to match\n"
+"the work tree to HEAD.\n"
+"\n"
+"You can set the 'receive.denyCurrentBranch' configuration variable\n"
+"to 'ignore' or 'warn' in the remote repository to allow pushing into\n"
+"its current branch; however, this is not recommended unless you\n"
+"arranged to update its work tree to match what you pushed in some\n"
+"other way.\n"
+"\n"
+"To squelch this message and still keep the default behaviour, set\n"
+"'receive.denyCurrentBranch' configuration variable to 'refuse'."
+msgstr ""
+
+#: builtin/receive-pack.c:1296
+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"
+"\n"
+"You can set 'receive.denyDeleteCurrent' configuration variable to\n"
+"'warn' or 'ignore' in the remote repository to allow deleting the\n"
+"current branch, with or without a warning message.\n"
+"\n"
+"To squelch this message, you can set it to 'refuse'."
+msgstr ""
+
+#: builtin/receive-pack.c:2481
+msgid "quiet"
+msgstr ""
+
+#: builtin/receive-pack.c:2495
+msgid "You must specify a directory."
+msgstr ""
+
+#: builtin/reflog.c:17
+msgid ""
+"git reflog expire [--expire=<time>] [--expire-unreachable=<time>] [--"
+"rewrite] [--updateref] [--stale-fix] [--dry-run | -n] [--verbose] [--all] "
+"<refs>..."
+msgstr ""
+
+#: builtin/reflog.c:22
+msgid ""
+"git reflog delete [--rewrite] [--updateref] [--dry-run | -n] [--verbose] "
+"<refs>..."
+msgstr ""
+
+#: builtin/reflog.c:25
+msgid "git reflog exists <ref>"
+msgstr ""
+
+#: builtin/reflog.c:568 builtin/reflog.c:573
+#, c-format
+msgid "'%s' is not a valid timestamp"
+msgstr ""
+
+#: builtin/reflog.c:609
+#, c-format
+msgid "Marking reachable objects..."
+msgstr ""
+
+#: builtin/reflog.c:647
+#, c-format
+msgid "%s points nowhere!"
+msgstr ""
+
+#: builtin/reflog.c:699
+msgid "no reflog specified to delete"
+msgstr ""
+
+#: builtin/reflog.c:708
+#, c-format
+msgid "not a reflog: %s"
+msgstr ""
+
+#: builtin/reflog.c:713
+#, c-format
+msgid "no reflog for '%s'"
+msgstr ""
+
+#: builtin/reflog.c:759
+#, c-format
+msgid "invalid ref format: %s"
+msgstr ""
+
+#: builtin/reflog.c:768
+msgid "git reflog [ show | expire | delete | exists ]"
+msgstr ""
+
+#: builtin/remote.c:17
+msgid "git remote [-v | --verbose]"
+msgstr ""
+
+#: builtin/remote.c:18
+msgid ""
+"git remote add [-t <branch>] [-m <master>] [-f] [--tags | --no-tags] [--"
+"mirror=<fetch|push>] <name> <url>"
+msgstr ""
+
+#: builtin/remote.c:19 builtin/remote.c:39
+msgid "git remote rename <old> <new>"
+msgstr ""
+
+#: builtin/remote.c:20 builtin/remote.c:44
+msgid "git remote remove <name>"
+msgstr ""
+
+#: builtin/remote.c:21 builtin/remote.c:49
+msgid "git remote set-head <name> (-a | --auto | -d | --delete | <branch>)"
+msgstr ""
+
+#: builtin/remote.c:22
+msgid "git remote [-v | --verbose] show [-n] <name>"
+msgstr ""
+
+#: builtin/remote.c:23
+msgid "git remote prune [-n | --dry-run] <name>"
+msgstr ""
+
+#: builtin/remote.c:24
+msgid ""
+"git remote [-v | --verbose] update [-p | --prune] [(<group> | <remote>)...]"
+msgstr ""
+
+#: builtin/remote.c:25
+msgid "git remote set-branches [--add] <name> <branch>..."
+msgstr ""
+
+#: builtin/remote.c:26 builtin/remote.c:75
+msgid "git remote get-url [--push] [--all] <name>"
+msgstr ""
+
+#: builtin/remote.c:27 builtin/remote.c:80
+msgid "git remote set-url [--push] <name> <newurl> [<oldurl>]"
+msgstr ""
+
+#: builtin/remote.c:28 builtin/remote.c:81
+msgid "git remote set-url --add <name> <newurl>"
+msgstr ""
+
+#: builtin/remote.c:29 builtin/remote.c:82
+msgid "git remote set-url --delete <name> <url>"
+msgstr ""
+
+#: builtin/remote.c:34
+msgid "git remote add [<options>] <name> <url>"
+msgstr ""
+
+#: builtin/remote.c:54
+msgid "git remote set-branches <name> <branch>..."
+msgstr ""
+
+#: builtin/remote.c:55
+msgid "git remote set-branches --add <name> <branch>..."
+msgstr ""
+
+#: builtin/remote.c:60
+msgid "git remote show [<options>] <name>"
+msgstr ""
+
+#: builtin/remote.c:65
+msgid "git remote prune [<options>] <name>"
+msgstr ""
+
+#: builtin/remote.c:70
+msgid "git remote update [<options>] [<group> | <remote>]..."
+msgstr ""
+
+#: builtin/remote.c:99
+#, c-format
+msgid "Updating %s"
+msgstr ""
+
+#: builtin/remote.c:131
+msgid ""
+"--mirror is dangerous and deprecated; please\n"
+"\t use --mirror=fetch or --mirror=push instead"
+msgstr ""
+
+#: builtin/remote.c:148
+#, c-format
+msgid "unknown mirror argument: %s"
+msgstr ""
+
+#: builtin/remote.c:164
+msgid "fetch the remote branches"
+msgstr ""
+
+#: builtin/remote.c:166
+msgid "import all tags and associated objects when fetching"
+msgstr ""
+
+#: builtin/remote.c:169
+msgid "or do not fetch any tag at all (--no-tags)"
+msgstr ""
+
+#: builtin/remote.c:171
+msgid "branch(es) to track"
+msgstr ""
+
+#: builtin/remote.c:172
+msgid "master branch"
+msgstr ""
+
+#: builtin/remote.c:174
+msgid "set up remote as a mirror to push to or fetch from"
+msgstr ""
+
+#: builtin/remote.c:186
+msgid "specifying a master branch makes no sense with --mirror"
+msgstr ""
+
+#: builtin/remote.c:188
+msgid "specifying branches to track makes sense only with fetch mirrors"
+msgstr ""
+
+#: builtin/remote.c:195 builtin/remote.c:700
+#, c-format
+msgid "remote %s already exists."
+msgstr ""
+
+#: builtin/remote.c:240
+#, c-format
+msgid "Could not setup master '%s'"
+msgstr ""
+
+#: builtin/remote.c:355
+#, c-format
+msgid "Could not get fetch map for refspec %s"
+msgstr ""
+
+#: builtin/remote.c:454 builtin/remote.c:462
+msgid "(matching)"
+msgstr ""
+
+#: builtin/remote.c:466
+msgid "(delete)"
+msgstr ""
+
+#: builtin/remote.c:655
+#, c-format
+msgid "could not set '%s'"
+msgstr ""
+
+#: builtin/remote.c:660
+#, c-format
+msgid ""
+"The %s configuration remote.pushDefault in:\n"
+"\t%s:%d\n"
+"now names the non-existent remote '%s'"
+msgstr ""
+
+#: builtin/remote.c:691 builtin/remote.c:836 builtin/remote.c:946
+#, c-format
+msgid "No such remote: '%s'"
+msgstr ""
+
+#: builtin/remote.c:710
+#, c-format
+msgid "Could not rename config section '%s' to '%s'"
+msgstr ""
+
+#: builtin/remote.c:730
+#, c-format
+msgid ""
+"Not updating non-default fetch refspec\n"
+"\t%s\n"
+"\tPlease update the configuration manually if necessary."
+msgstr ""
+
+#: builtin/remote.c:770
+#, c-format
+msgid "deleting '%s' failed"
+msgstr ""
+
+#: builtin/remote.c:804
+#, c-format
+msgid "creating '%s' failed"
+msgstr ""
+
+#: builtin/remote.c:882
+msgid ""
+"Note: A branch outside the refs/remotes/ hierarchy was not removed;\n"
+"to delete it, use:"
+msgid_plural ""
+"Note: Some branches outside the refs/remotes/ hierarchy were not removed;\n"
+"to delete them, use:"
+msgstr[0] ""
+msgstr[1] ""
+
+#: builtin/remote.c:896
+#, c-format
+msgid "Could not remove config section '%s'"
+msgstr ""
+
+#: builtin/remote.c:999
+#, c-format
+msgid " new (next fetch will store in remotes/%s)"
+msgstr ""
+
+#: builtin/remote.c:1002
+msgid " tracked"
+msgstr ""
+
+#: builtin/remote.c:1004
+msgid " stale (use 'git remote prune' to remove)"
+msgstr ""
+
+#: builtin/remote.c:1006
+msgid " ???"
+msgstr ""
+
+#: builtin/remote.c:1047
+#, c-format
+msgid "invalid branch.%s.merge; cannot rebase onto > 1 branch"
+msgstr ""
+
+#: builtin/remote.c:1056
+#, c-format
+msgid "rebases interactively onto remote %s"
+msgstr ""
+
+#: builtin/remote.c:1058
+#, c-format
+msgid "rebases interactively (with merges) onto remote %s"
+msgstr ""
+
+#: builtin/remote.c:1061
+#, c-format
+msgid "rebases onto remote %s"
+msgstr ""
+
+#: builtin/remote.c:1065
+#, c-format
+msgid " merges with remote %s"
+msgstr ""
+
+#: builtin/remote.c:1068
+#, c-format
+msgid "merges with remote %s"
+msgstr ""
+
+#: builtin/remote.c:1071
+#, c-format
+msgid "%-*s    and with remote %s\n"
+msgstr ""
+
+#: builtin/remote.c:1114
+msgid "create"
+msgstr ""
+
+#: builtin/remote.c:1117
+msgid "delete"
+msgstr ""
+
+#: builtin/remote.c:1121
+msgid "up to date"
+msgstr ""
+
+#: builtin/remote.c:1124
+msgid "fast-forwardable"
+msgstr ""
+
+#: builtin/remote.c:1127
+msgid "local out of date"
+msgstr ""
+
+#: builtin/remote.c:1134
+#, c-format
+msgid "    %-*s forces to %-*s (%s)"
+msgstr ""
+
+#: builtin/remote.c:1137
+#, c-format
+msgid "    %-*s pushes to %-*s (%s)"
+msgstr ""
+
+#: builtin/remote.c:1141
+#, c-format
+msgid "    %-*s forces to %s"
+msgstr ""
+
+#: builtin/remote.c:1144
+#, c-format
+msgid "    %-*s pushes to %s"
+msgstr ""
+
+#: builtin/remote.c:1212
+msgid "do not query remotes"
+msgstr ""
+
+#: builtin/remote.c:1239
+#, c-format
+msgid "* remote %s"
+msgstr ""
+
+#: builtin/remote.c:1240
+#, c-format
+msgid "  Fetch URL: %s"
+msgstr ""
+
+#: builtin/remote.c:1241 builtin/remote.c:1257 builtin/remote.c:1396
+msgid "(no URL)"
+msgstr ""
+
+#. TRANSLATORS: the colon ':' should align
+#. with the one in " Fetch URL: %s"
+#. translation.
+#.
+#: builtin/remote.c:1255 builtin/remote.c:1257
+#, c-format
+msgid "  Push  URL: %s"
+msgstr ""
+
+#: builtin/remote.c:1259 builtin/remote.c:1261 builtin/remote.c:1263
+#, c-format
+msgid "  HEAD branch: %s"
+msgstr ""
+
+#: builtin/remote.c:1259
+msgid "(not queried)"
+msgstr ""
+
+#: builtin/remote.c:1261
+msgid "(unknown)"
+msgstr ""
+
+#: builtin/remote.c:1265
+#, c-format
+msgid ""
+"  HEAD branch (remote HEAD is ambiguous, may be one of the following):\n"
+msgstr ""
+
+#: builtin/remote.c:1277
+#, c-format
+msgid "  Remote branch:%s"
+msgid_plural "  Remote branches:%s"
+msgstr[0] ""
+msgstr[1] ""
+
+#: builtin/remote.c:1280 builtin/remote.c:1306
+msgid " (status not queried)"
+msgstr ""
+
+#: builtin/remote.c:1289
+msgid "  Local branch configured for 'git pull':"
+msgid_plural "  Local branches configured for 'git pull':"
+msgstr[0] ""
+msgstr[1] ""
+
+#: builtin/remote.c:1297
+msgid "  Local refs will be mirrored by 'git push'"
+msgstr ""
+
+#: builtin/remote.c:1303
+#, 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:1324
+msgid "set refs/remotes/<name>/HEAD according to remote"
+msgstr ""
+
+#: builtin/remote.c:1326
+msgid "delete refs/remotes/<name>/HEAD"
+msgstr ""
+
+#: builtin/remote.c:1341
+msgid "Cannot determine remote HEAD"
+msgstr ""
+
+#: builtin/remote.c:1343
+msgid "Multiple remote HEAD branches. Please choose one explicitly with:"
+msgstr ""
+
+#: builtin/remote.c:1353
+#, c-format
+msgid "Could not delete %s"
+msgstr ""
+
+#: builtin/remote.c:1361
+#, c-format
+msgid "Not a valid ref: %s"
+msgstr ""
+
+#: builtin/remote.c:1363
+#, c-format
+msgid "Could not setup %s"
+msgstr ""
+
+#: builtin/remote.c:1381
+#, c-format
+msgid " %s will become dangling!"
+msgstr ""
+
+#: builtin/remote.c:1382
+#, c-format
+msgid " %s has become dangling!"
+msgstr ""
+
+#: builtin/remote.c:1392
+#, c-format
+msgid "Pruning %s"
+msgstr ""
+
+#: builtin/remote.c:1393
+#, c-format
+msgid "URL: %s"
+msgstr ""
+
+#: builtin/remote.c:1409
+#, c-format
+msgid " * [would prune] %s"
+msgstr ""
+
+#: builtin/remote.c:1412
+#, c-format
+msgid " * [pruned] %s"
+msgstr ""
+
+#: builtin/remote.c:1457
+msgid "prune remotes after fetching"
+msgstr ""
+
+#: builtin/remote.c:1521 builtin/remote.c:1577 builtin/remote.c:1647
+#, c-format
+msgid "No such remote '%s'"
+msgstr ""
+
+#: builtin/remote.c:1539
+msgid "add branch"
+msgstr ""
+
+#: builtin/remote.c:1546
+msgid "no remote specified"
+msgstr ""
+
+#: builtin/remote.c:1563
+msgid "query push URLs rather than fetch URLs"
+msgstr ""
+
+#: builtin/remote.c:1565
+msgid "return all URLs"
+msgstr ""
+
+#: builtin/remote.c:1595
+#, c-format
+msgid "no URLs configured for remote '%s'"
+msgstr ""
+
+#: builtin/remote.c:1621
+msgid "manipulate push URLs"
+msgstr ""
+
+#: builtin/remote.c:1623
+msgid "add URL"
+msgstr ""
+
+#: builtin/remote.c:1625
+msgid "delete URLs"
+msgstr ""
+
+#: builtin/remote.c:1632
+msgid "--add --delete doesn't make sense"
+msgstr ""
+
+#: builtin/remote.c:1673
+#, c-format
+msgid "Invalid old URL pattern: %s"
+msgstr ""
+
+#: builtin/remote.c:1681
+#, c-format
+msgid "No such URL found: %s"
+msgstr ""
+
+#: builtin/remote.c:1683
+msgid "Will not delete all non-push URLs"
+msgstr ""
+
+#: builtin/repack.c:26
+msgid "git repack [<options>]"
+msgstr ""
+
+#: builtin/repack.c:31
+msgid ""
+"Incremental repacks are incompatible with bitmap indexes.  Use\n"
+"--no-write-bitmap-index or disable the pack.writebitmaps configuration."
+msgstr ""
+
+#: builtin/repack.c:198
+msgid "could not start pack-objects to repack promisor objects"
+msgstr ""
+
+#: builtin/repack.c:270 builtin/repack.c:446
+msgid "repack: Expecting full hex object ID lines only from pack-objects."
+msgstr ""
+
+#: builtin/repack.c:294
+msgid "could not finish pack-objects to repack promisor objects"
+msgstr ""
+
+#: builtin/repack.c:322
+msgid "pack everything in a single pack"
+msgstr ""
+
+#: builtin/repack.c:324
+msgid "same as -a, and turn unreachable objects loose"
+msgstr ""
+
+#: builtin/repack.c:327
+msgid "remove redundant packs, and run git-prune-packed"
+msgstr ""
+
+#: builtin/repack.c:329
+msgid "pass --no-reuse-delta to git-pack-objects"
+msgstr ""
+
+#: builtin/repack.c:331
+msgid "pass --no-reuse-object to git-pack-objects"
+msgstr ""
+
+#: builtin/repack.c:333
+msgid "do not run git-update-server-info"
+msgstr ""
+
+#: builtin/repack.c:336
+msgid "pass --local to git-pack-objects"
+msgstr ""
+
+#: builtin/repack.c:338
+msgid "write bitmap index"
+msgstr ""
+
+#: builtin/repack.c:340
+msgid "pass --delta-islands to git-pack-objects"
+msgstr ""
+
+#: builtin/repack.c:341
+msgid "approxidate"
+msgstr ""
+
+#: builtin/repack.c:342
+msgid "with -A, do not loosen objects older than this"
+msgstr ""
+
+#: builtin/repack.c:344
+msgid "with -a, repack unreachable objects"
+msgstr ""
+
+#: builtin/repack.c:346
+msgid "size of the window used for delta compression"
+msgstr ""
+
+#: builtin/repack.c:347 builtin/repack.c:353
+msgid "bytes"
+msgstr ""
+
+#: builtin/repack.c:348
+msgid "same as the above, but limit memory size instead of entries count"
+msgstr ""
+
+#: builtin/repack.c:350
+msgid "limits the maximum delta depth"
+msgstr ""
+
+#: builtin/repack.c:352
+msgid "limits the maximum number of threads"
+msgstr ""
+
+#: builtin/repack.c:354
+msgid "maximum size of each packfile"
+msgstr ""
+
+#: builtin/repack.c:356
+msgid "repack objects in packs marked with .keep"
+msgstr ""
+
+#: builtin/repack.c:358
+msgid "do not repack this pack"
+msgstr ""
+
+#: builtin/repack.c:368
+msgid "cannot delete packs in a precious-objects repo"
+msgstr ""
+
+#: builtin/repack.c:372
+msgid "--keep-unreachable and -A are incompatible"
+msgstr ""
+
+#: builtin/repack.c:455
+msgid "Nothing new to pack."
+msgstr ""
+
+#: builtin/repack.c:485
+#, c-format
+msgid "missing required file: %s"
+msgstr ""
+
+#: builtin/repack.c:487
+#, c-format
+msgid "could not unlink: %s"
+msgstr ""
+
+#: builtin/replace.c:22
+msgid "git replace [-f] <object> <replacement>"
+msgstr ""
+
+#: builtin/replace.c:23
+msgid "git replace [-f] --edit <object>"
+msgstr ""
+
+#: builtin/replace.c:24
+msgid "git replace [-f] --graft <commit> [<parent>...]"
+msgstr ""
+
+#: 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:27
+msgid "git replace [--format=<format>] [-l [<pattern>]]"
+msgstr ""
+
+#: builtin/replace.c:90
+#, c-format
+msgid ""
+"invalid replace format '%s'\n"
+"valid formats are 'short', 'medium' and 'long'"
+msgstr ""
+
+#: builtin/replace.c:125
+#, c-format
+msgid "replace ref '%s' not found"
+msgstr ""
+
+#: builtin/replace.c:141
+#, c-format
+msgid "Deleted replace ref '%s'"
+msgstr ""
+
+#: builtin/replace.c:153
+#, c-format
+msgid "'%s' is not a valid ref name"
+msgstr ""
+
+#: builtin/replace.c:158
+#, c-format
+msgid "replace ref '%s' already exists"
+msgstr ""
+
+#: builtin/replace.c:178
+#, c-format
+msgid ""
+"Objects must be of the same type.\n"
+"'%s' points to a replaced object of type '%s'\n"
+"while '%s' points to a replacement object of type '%s'."
+msgstr ""
+
+#: builtin/replace.c:229
+#, c-format
+msgid "unable to open %s for writing"
+msgstr ""
+
+#: builtin/replace.c:242
+msgid "cat-file reported failure"
+msgstr ""
+
+#: builtin/replace.c:258
+#, c-format
+msgid "unable to open %s for reading"
+msgstr ""
+
+#: builtin/replace.c:272
+msgid "unable to spawn mktree"
+msgstr ""
+
+#: builtin/replace.c:276
+msgid "unable to read from mktree"
+msgstr ""
+
+#: builtin/replace.c:285
+msgid "mktree reported failure"
+msgstr ""
+
+#: builtin/replace.c:289
+msgid "mktree did not return an object name"
+msgstr ""
+
+#: builtin/replace.c:298
+#, c-format
+msgid "unable to fstat %s"
+msgstr ""
+
+#: builtin/replace.c:303
+msgid "unable to write object to database"
+msgstr ""
+
+#: builtin/replace.c:322 builtin/replace.c:378 builtin/replace.c:424
+#: builtin/replace.c:454
+#, c-format
+msgid "not a valid object name: '%s'"
+msgstr ""
+
+#: builtin/replace.c:326
+#, c-format
+msgid "unable to get object type for %s"
+msgstr ""
+
+#: builtin/replace.c:342
+msgid "editing object file failed"
+msgstr ""
+
+#: builtin/replace.c:351
+#, c-format
+msgid "new object is the same as the old one: '%s'"
+msgstr ""
+
+#: builtin/replace.c:384
+#, c-format
+msgid "could not parse %s as a commit"
+msgstr ""
+
+#: builtin/replace.c:416
+#, c-format
+msgid "bad mergetag in commit '%s'"
+msgstr ""
+
+#: builtin/replace.c:418
+#, c-format
+msgid "malformed mergetag in commit '%s'"
+msgstr ""
+
+#: builtin/replace.c:430
+#, c-format
+msgid ""
+"original commit '%s' contains mergetag '%s' that is discarded; use --edit "
+"instead of --graft"
+msgstr ""
+
+#: builtin/replace.c:469
+#, c-format
+msgid "the original commit '%s' has a gpg signature"
+msgstr ""
+
+#: builtin/replace.c:470
+msgid "the signature will be removed in the replacement commit!"
+msgstr ""
+
+#: builtin/replace.c:480
+#, c-format
+msgid "could not write replacement commit for: '%s'"
+msgstr ""
+
+#: builtin/replace.c:488
+#, c-format
+msgid "graft for '%s' unnecessary"
+msgstr ""
+
+#: builtin/replace.c:492
+#, c-format
+msgid "new commit is the same as the old one: '%s'"
+msgstr ""
+
+#: builtin/replace.c:527
+#, c-format
+msgid ""
+"could not convert the following graft(s):\n"
+"%s"
+msgstr ""
+
+#: builtin/replace.c:548
+msgid "list replace refs"
+msgstr ""
+
+#: builtin/replace.c:549
+msgid "delete replace refs"
+msgstr ""
+
+#: builtin/replace.c:550
+msgid "edit existing object"
+msgstr ""
+
+#: builtin/replace.c:551
+msgid "change a commit's parents"
+msgstr ""
+
+#: builtin/replace.c:552
+msgid "convert existing graft file"
+msgstr ""
+
+#: builtin/replace.c:553
+msgid "replace the ref if it exists"
+msgstr ""
+
+#: builtin/replace.c:555
+msgid "do not pretty-print contents for --edit"
+msgstr ""
+
+#: builtin/replace.c:556
+msgid "use this format"
+msgstr ""
+
+#: builtin/replace.c:569
+msgid "--format cannot be used when not listing"
+msgstr ""
+
+#: builtin/replace.c:577
+msgid "-f only makes sense when writing a replacement"
+msgstr ""
+
+#: builtin/replace.c:581
+msgid "--raw only makes sense with --edit"
+msgstr ""
+
+#: builtin/replace.c:587
+msgid "-d needs at least one argument"
+msgstr ""
+
+#: builtin/replace.c:593
+msgid "bad number of arguments"
+msgstr ""
+
+#: builtin/replace.c:599
+msgid "-e needs exactly one argument"
+msgstr ""
+
+#: builtin/replace.c:605
+msgid "-g needs at least one argument"
+msgstr ""
+
+#: builtin/replace.c:611
+msgid "--convert-graft-file takes no argument"
+msgstr ""
+
+#: builtin/replace.c:617
+msgid "only one pattern can be given with -l"
+msgstr ""
+
+#: builtin/rerere.c:13
+msgid "git rerere [clear | forget <path>... | status | remaining | diff | gc]"
+msgstr ""
+
+#: builtin/rerere.c:60
+msgid "register clean resolutions in index"
+msgstr ""
+
+#: builtin/rerere.c:79
+msgid "'git rerere forget' without paths is deprecated"
+msgstr ""
+
+#: builtin/rerere.c:113
+#, c-format
+msgid "unable to generate diff for '%s'"
+msgstr ""
+
+#: builtin/reset.c:32
+msgid ""
+"git reset [--mixed | --soft | --hard | --merge | --keep] [-q] [<commit>]"
+msgstr ""
+"git reset [--mixed | --soft | --hard | --merge | --keep] [-q] [<komit>]"
+
+#: builtin/reset.c:33
+msgid "git reset [-q] [<tree-ish>] [--] <pathspec>..."
+msgstr "git reset [-q] [<mirip-pohon>] [--] <spek jalur>..."
+
+#: builtin/reset.c:34
+msgid ""
+"git reset [-q] [--pathspec-from-file [--pathspec-file-nul]] [<tree-ish>]"
+msgstr ""
+"git reset [-q] [--pathspec-from-file [--pathspec-file-nul]] [<mirip-pohon>]"
+
+#: builtin/reset.c:35
+msgid "git reset --patch [<tree-ish>] [--] [<pathspec>...]"
+msgstr "git reset --patch [<mirip-pohon>] [--] [<pathspec>...]"
+
+#: builtin/reset.c:41
+msgid "mixed"
+msgstr "campuran"
+
+#: builtin/reset.c:41
+msgid "soft"
+msgstr "lunak"
+
+#: builtin/reset.c:41
+msgid "hard"
+msgstr "keras"
+
+#: builtin/reset.c:41
+msgid "merge"
+msgstr "gabungan"
+
+#: builtin/reset.c:41
+msgid "keep"
+msgstr "simpan"
+
+#: builtin/reset.c:83
+msgid "You do not have a valid HEAD."
+msgstr "Anda tidak punya HEAD yang valid."
+
+#: builtin/reset.c:85
+msgid "Failed to find tree of HEAD."
+msgstr "Gagal menemukan pohon HEAD."
+
+#: builtin/reset.c:91
+#, c-format
+msgid "Failed to find tree of %s."
+msgstr "Gagal menemukan pohon dari %s."
+
+#: builtin/reset.c:116
+#, c-format
+msgid "HEAD is now at %s"
+msgstr "HEAD sekarang pada %s"
+
+#: builtin/reset.c:195
+#, c-format
+msgid "Cannot do a %s reset in the middle of a merge."
+msgstr "Tidak dapat lakukan reset %s di tengah-tengah penggabungan."
+
+#: builtin/reset.c:295 builtin/stash.c:587 builtin/stash.c:661
+#: builtin/stash.c:685
+msgid "be quiet, only report errors"
+msgstr "diam, hanya laporkan kesalahan"
+
+#: builtin/reset.c:297
+msgid "reset HEAD and index"
+msgstr "setel ulang HEAD dan indeks"
+
+#: builtin/reset.c:298
+msgid "reset only HEAD"
+msgstr "hanya setel ulang HEAD"
+
+#: builtin/reset.c:300 builtin/reset.c:302
+msgid "reset HEAD, index and working tree"
+msgstr "setel ulang HEAD, indeks dan pohon kerja"
+
+#: builtin/reset.c:304
+msgid "reset HEAD but keep local changes"
+msgstr "setel ulang HEAD tapi simpan perubahan lokal"
+
+#: builtin/reset.c:310
+msgid "record only the fact that removed paths will be added later"
+msgstr "hanya rekam fakta bahwa jalur yang terhapus akan ditambahkan nanti"
+
+#: builtin/reset.c:344
+#, c-format
+msgid "Failed to resolve '%s' as a valid revision."
+msgstr "Gagal menguraikan '%s' sebagai revisi yang valid."
+
+#: builtin/reset.c:352
+#, c-format
+msgid "Failed to resolve '%s' as a valid tree."
+msgstr "Gagal menguraikan '%s' sebagaikan pohon yang valid."
+
+#: builtin/reset.c:361
+msgid "--patch is incompatible with --{hard,mixed,soft}"
+msgstr "--patch tidak kompatibel dengan --{hard,mixed,soft}"
+
+#: builtin/reset.c:371
+msgid "--mixed with paths is deprecated; use 'git reset -- <paths>' instead."
+msgstr ""
+"--mixed dengan jalur usang; sebagai gantinya gunakan 'git reset --<jalur>'."
+
+#: builtin/reset.c:373
+#, c-format
+msgid "Cannot do %s reset with paths."
+msgstr "Tidak dapat lakukan reset %s dengan jalur."
+
+#: builtin/reset.c:388
+#, c-format
+msgid "%s reset is not allowed in a bare repository"
+msgstr "Reset %s tidak diperbolehkan dalam repositori bare"
+
+#: builtin/reset.c:392
+msgid "-N can only be used with --mixed"
+msgstr "-N hanya dapat digunakan dengan --mixed"
+
+#: builtin/reset.c:413
+msgid "Unstaged changes after reset:"
+msgstr "Perubahan tak tergelar setelah setel ulang:"
+
+#: builtin/reset.c:416
+#, c-format
+msgid ""
+"\n"
+"It took %.2f seconds to enumerate unstaged changes after reset.  You can\n"
+"use '--quiet' to avoid this.  Set the config setting reset.quiet to true\n"
+"to make this the default.\n"
+msgstr ""
+"\n"
+"Butuh %.2f detik untuk daftar perubahan tak tergelar setelah setel ulang.\n"
+"Anda dapat menggunakan '--quiet' untuk hindari hal ini. Setel konfigurasi\n"
+"reset.quiet ke true untuk membuat hal tersebut asali.\n"
+
+#: builtin/reset.c:434
+#, c-format
+msgid "Could not reset index file to revision '%s'."
+msgstr "Tidak dapat menyetel ulang berkas indeks ke revisi '%s'."
+
+#: builtin/reset.c:439
+msgid "Could not write new index file."
+msgstr "Tidak dapat menulis berkas indeks baru."
+
+#: builtin/rev-list.c:534
+msgid "cannot combine --exclude-promisor-objects and --missing"
+msgstr ""
+
+#: builtin/rev-list.c:595
+msgid "object filtering requires --objects"
+msgstr ""
+
+#: builtin/rev-list.c:651
+msgid "rev-list does not support display of notes"
+msgstr ""
+
+#: builtin/rev-list.c:656
+msgid "marked counting is incompatible with --objects"
+msgstr ""
+
+#: builtin/rev-parse.c:409
+msgid "git rev-parse --parseopt [<options>] -- [<args>...]"
+msgstr ""
+
+#: builtin/rev-parse.c:414
+msgid "keep the `--` passed as an arg"
+msgstr ""
+
+#: builtin/rev-parse.c:416
+msgid "stop parsing after the first non-option argument"
+msgstr ""
+
+#: builtin/rev-parse.c:419
+msgid "output in stuck long form"
+msgstr ""
+
+#: builtin/rev-parse.c:552
+msgid ""
+"git rev-parse --parseopt [<options>] -- [<args>...]\n"
+"   or: git rev-parse --sq-quote [<arg>...]\n"
+"   or: git rev-parse [<options>] [<arg>...]\n"
+"\n"
+"Run \"git rev-parse --parseopt -h\" for more information on the first usage."
+msgstr ""
+
+#: builtin/revert.c:24
+msgid "git revert [<options>] <commit-ish>..."
+msgstr ""
+
+#: builtin/revert.c:25
+msgid "git revert <subcommand>"
+msgstr ""
+
+#: builtin/revert.c:30
+msgid "git cherry-pick [<options>] <commit-ish>..."
+msgstr ""
+
+#: builtin/revert.c:31
+msgid "git cherry-pick <subcommand>"
+msgstr ""
+
+#: builtin/revert.c:72
+#, c-format
+msgid "option `%s' expects a number greater than zero"
+msgstr ""
+
+#: builtin/revert.c:92
+#, c-format
+msgid "%s: %s cannot be used with %s"
+msgstr ""
+
+#: builtin/revert.c:102
+msgid "end revert or cherry-pick sequence"
+msgstr ""
+
+#: builtin/revert.c:103
+msgid "resume revert or cherry-pick sequence"
+msgstr ""
+
+#: builtin/revert.c:104
+msgid "cancel revert or cherry-pick sequence"
+msgstr ""
+
+#: builtin/revert.c:105
+msgid "skip current commit and continue"
+msgstr ""
+
+#: builtin/revert.c:107
+msgid "don't automatically commit"
+msgstr ""
+
+#: builtin/revert.c:108
+msgid "edit the commit message"
+msgstr ""
+
+#: builtin/revert.c:111
+msgid "parent-number"
+msgstr ""
+
+#: builtin/revert.c:112
+msgid "select mainline parent"
+msgstr ""
+
+#: builtin/revert.c:114
+msgid "merge strategy"
+msgstr ""
+
+#: builtin/revert.c:116
+msgid "option for merge strategy"
+msgstr ""
+
+#: builtin/revert.c:125
+msgid "append commit name"
+msgstr ""
+
+#: builtin/revert.c:127
+msgid "preserve initially empty commits"
+msgstr ""
+
+#: builtin/revert.c:129
+msgid "keep redundant, empty commits"
+msgstr ""
+
+#: builtin/revert.c:239
+msgid "revert failed"
+msgstr ""
+
+#: builtin/revert.c:252
+msgid "cherry-pick failed"
+msgstr ""
+
+#: builtin/rm.c:19
+msgid "git rm [<options>] [--] <file>..."
+msgstr ""
+
+#: builtin/rm.c:207
+msgid ""
+"the following file has staged content different from both the\n"
+"file and the HEAD:"
+msgid_plural ""
+"the following files have staged content different from both the\n"
+"file and the HEAD:"
+msgstr[0] ""
+msgstr[1] ""
+
+#: builtin/rm.c:212
+msgid ""
+"\n"
+"(use -f to force removal)"
+msgstr ""
+
+#: builtin/rm.c:216
+msgid "the following file has changes staged in the index:"
+msgid_plural "the following files have changes staged in the index:"
+msgstr[0] ""
+msgstr[1] ""
+
+#: builtin/rm.c:220 builtin/rm.c:229
+msgid ""
+"\n"
+"(use --cached to keep the file, or -f to force removal)"
+msgstr ""
+
+#: builtin/rm.c:226
+msgid "the following file has local modifications:"
+msgid_plural "the following files have local modifications:"
+msgstr[0] ""
+msgstr[1] ""
+
+#: builtin/rm.c:243
+msgid "do not list removed files"
+msgstr ""
+
+#: builtin/rm.c:244
+msgid "only remove from the index"
+msgstr ""
+
+#: builtin/rm.c:245
+msgid "override the up-to-date check"
+msgstr ""
+
+#: builtin/rm.c:246
+msgid "allow recursive removal"
+msgstr ""
+
+#: builtin/rm.c:248
+msgid "exit with a zero status even if nothing matched"
+msgstr ""
+
+#: builtin/rm.c:282
+msgid "No pathspec was given. Which files should I remove?"
+msgstr ""
+
+#: builtin/rm.c:305
+msgid "please stage your changes to .gitmodules or stash them to proceed"
+msgstr ""
+
+#: builtin/rm.c:323
+#, c-format
+msgid "not removing '%s' recursively without -r"
+msgstr ""
+
+#: builtin/rm.c:362
+#, c-format
+msgid "git rm: unable to remove %s"
+msgstr ""
+
+#: builtin/send-pack.c:20
+msgid ""
+"git send-pack [--all | --mirror] [--dry-run] [--force] [--receive-pack=<git-"
+"receive-pack>] [--verbose] [--thin] [--atomic] [<host>:]<directory> "
+"[<ref>...]\n"
+"  --all and explicit <ref> specification are mutually exclusive."
+msgstr ""
+
+#: builtin/send-pack.c:188
+msgid "remote name"
+msgstr ""
+
+#: builtin/send-pack.c:201
+msgid "use stateless RPC protocol"
+msgstr ""
+
+#: builtin/send-pack.c:202
+msgid "read refs from stdin"
+msgstr ""
+
+#: builtin/send-pack.c:203
+msgid "print status from remote helper"
+msgstr ""
+
+#: builtin/shortlog.c:16
+msgid "git shortlog [<options>] [<revision-range>] [[--] <path>...]"
+msgstr ""
+
+#: builtin/shortlog.c:17
+msgid "git log --pretty=short | git shortlog [<options>]"
+msgstr ""
+
+#: builtin/shortlog.c:123
+msgid "using multiple --group options with stdin is not supported"
+msgstr ""
+
+#: builtin/shortlog.c:133
+msgid "using --group=trailer with stdin is not supported"
+msgstr ""
+
+#: builtin/shortlog.c:323
+#, c-format
+msgid "unknown group type: %s"
+msgstr ""
+
+#: builtin/shortlog.c:351
+msgid "group by committer rather than author"
+msgstr ""
+
+#: builtin/shortlog.c:354
+msgid "sort output according to the number of commits per author"
+msgstr ""
+
+#: builtin/shortlog.c:356
+msgid "suppress commit descriptions, only provides commit count"
+msgstr ""
+
+#: builtin/shortlog.c:358
+msgid "show the email address of each author"
+msgstr ""
+
+#: builtin/shortlog.c:359
+msgid "<w>[,<i1>[,<i2>]]"
+msgstr ""
+
+#: builtin/shortlog.c:360
+msgid "linewrap output"
+msgstr ""
+
+#: builtin/shortlog.c:362
+msgid "field"
+msgstr ""
+
+#: builtin/shortlog.c:363
+msgid "group by field"
+msgstr ""
+
+#: builtin/shortlog.c:391
+msgid "too many arguments given outside repository"
+msgstr ""
+
+#: builtin/show-branch.c:13
+msgid ""
+"git show-branch [-a | --all] [-r | --remotes] [--topo-order | --date-order]\n"
+"\t\t[--current] [--color[=<when>] | --no-color] [--sparse]\n"
+"\t\t[--more=<n> | --list | --independent | --merge-base]\n"
+"\t\t[--no-name | --sha1-name] [--topics] [(<rev> | <glob>)...]"
+msgstr ""
+
+#: builtin/show-branch.c:17
+msgid "git show-branch (-g | --reflog)[=<n>[,<base>]] [--list] [<ref>]"
+msgstr ""
+
+#: builtin/show-branch.c:395
+#, c-format
+msgid "ignoring %s; cannot handle more than %d ref"
+msgid_plural "ignoring %s; cannot handle more than %d refs"
+msgstr[0] ""
+msgstr[1] ""
+
+#: builtin/show-branch.c:548
+#, c-format
+msgid "no matching refs with %s"
+msgstr ""
+
+#: builtin/show-branch.c:645
+msgid "show remote-tracking and local branches"
+msgstr ""
+
+#: builtin/show-branch.c:647
+msgid "show remote-tracking branches"
+msgstr ""
+
+#: builtin/show-branch.c:649
+msgid "color '*!+-' corresponding to the branch"
+msgstr ""
+
+#: builtin/show-branch.c:651
+msgid "show <n> more commits after the common ancestor"
+msgstr ""
+
+#: builtin/show-branch.c:653
+msgid "synonym to more=-1"
+msgstr ""
+
+#: builtin/show-branch.c:654
+msgid "suppress naming strings"
+msgstr ""
+
+#: builtin/show-branch.c:656
+msgid "include the current branch"
+msgstr ""
+
+#: builtin/show-branch.c:658
+msgid "name commits with their object names"
+msgstr ""
+
+#: builtin/show-branch.c:660
+msgid "show possible merge bases"
+msgstr ""
+
+#: builtin/show-branch.c:662
+msgid "show refs unreachable from any other ref"
+msgstr ""
+
+#: builtin/show-branch.c:664
+msgid "show commits in topological order"
+msgstr ""
+
+#: builtin/show-branch.c:667
+msgid "show only commits not on the first branch"
+msgstr ""
+
+#: builtin/show-branch.c:669
+msgid "show merges reachable from only one tip"
+msgstr ""
+
+#: builtin/show-branch.c:671
+msgid "topologically sort, maintaining date order where possible"
+msgstr ""
+
+#: builtin/show-branch.c:674
+msgid "<n>[,<base>]"
+msgstr ""
+
+#: builtin/show-branch.c:675
+msgid "show <n> most recent ref-log entries starting at base"
+msgstr ""
+
+#: builtin/show-branch.c:711
+msgid ""
+"--reflog is incompatible with --all, --remotes, --independent or --merge-base"
+msgstr ""
+
+#: builtin/show-branch.c:735
+msgid "no branches given, and HEAD is not valid"
+msgstr ""
+
+#: builtin/show-branch.c:738
+msgid "--reflog option needs one branch name"
+msgstr ""
+
+#: builtin/show-branch.c:741
+#, c-format
+msgid "only %d entry can be shown at one time."
+msgid_plural "only %d entries can be shown at one time."
+msgstr[0] ""
+msgstr[1] ""
+
+#: builtin/show-branch.c:745
+#, c-format
+msgid "no such ref %s"
+msgstr ""
+
+#: builtin/show-branch.c:831
+#, c-format
+msgid "cannot handle more than %d rev."
+msgid_plural "cannot handle more than %d revs."
+msgstr[0] ""
+msgstr[1] ""
+
+#: builtin/show-branch.c:835
+#, c-format
+msgid "'%s' is not a valid ref."
+msgstr ""
+
+#: builtin/show-branch.c:838
+#, c-format
+msgid "cannot find commit %s (%s)"
+msgstr ""
+
+#: builtin/show-index.c:21
+msgid "hash-algorithm"
+msgstr ""
+
+#: builtin/show-index.c:31
+msgid "Unknown hash algorithm"
+msgstr ""
+
+#: builtin/show-ref.c:12
+msgid ""
+"git show-ref [-q | --quiet] [--verify] [--head] [-d | --dereference] [-s | --"
+"hash[=<n>]] [--abbrev[=<n>]] [--tags] [--heads] [--] [<pattern>...]"
+msgstr ""
+
+#: builtin/show-ref.c:13
+msgid "git show-ref --exclude-existing[=<pattern>]"
+msgstr ""
+
+#: builtin/show-ref.c:162
+msgid "only show tags (can be combined with heads)"
+msgstr ""
+
+#: builtin/show-ref.c:163
+msgid "only show heads (can be combined with tags)"
+msgstr ""
+
+#: builtin/show-ref.c:164
+msgid "stricter reference checking, requires exact ref path"
+msgstr ""
+
+#: builtin/show-ref.c:167 builtin/show-ref.c:169
+msgid "show the HEAD reference, even if it would be filtered out"
+msgstr ""
+
+#: builtin/show-ref.c:171
+msgid "dereference tags into object IDs"
+msgstr ""
+
+#: builtin/show-ref.c:173
+msgid "only show SHA1 hash using <n> digits"
+msgstr ""
+
+#: builtin/show-ref.c:177
+msgid "do not print results to stdout (useful with --verify)"
+msgstr ""
+
+#: builtin/show-ref.c:179
+msgid "show refs from stdin that aren't in local repository"
+msgstr ""
+
+#: builtin/sparse-checkout.c:21
+msgid "git sparse-checkout (init|list|set|add|reapply|disable) <options>"
+msgstr ""
+
+#: builtin/sparse-checkout.c:45
+msgid "git sparse-checkout list"
+msgstr ""
+
+#: builtin/sparse-checkout.c:71
+msgid "this worktree is not sparse (sparse-checkout file may not exist)"
+msgstr ""
+
+#: builtin/sparse-checkout.c:223
+msgid "failed to create directory for sparse-checkout file"
+msgstr ""
+
+#: builtin/sparse-checkout.c:264
+msgid "unable to upgrade repository format to enable worktreeConfig"
+msgstr ""
+
+#: builtin/sparse-checkout.c:266
+msgid "failed to set extensions.worktreeConfig setting"
+msgstr ""
+
+#: builtin/sparse-checkout.c:283
+msgid "git sparse-checkout init [--cone]"
+msgstr ""
+
+#: builtin/sparse-checkout.c:302
+msgid "initialize the sparse-checkout in cone mode"
+msgstr ""
+
+#: builtin/sparse-checkout.c:339
+#, c-format
+msgid "failed to open '%s'"
+msgstr ""
+
+#: builtin/sparse-checkout.c:396
+#, c-format
+msgid "could not normalize path %s"
+msgstr ""
+
+#: builtin/sparse-checkout.c:408
+msgid "git sparse-checkout (set|add) (--stdin | <patterns>)"
+msgstr ""
+
+#: builtin/sparse-checkout.c:433
+#, c-format
+msgid "unable to unquote C-style string '%s'"
+msgstr ""
+
+#: builtin/sparse-checkout.c:487 builtin/sparse-checkout.c:511
+msgid "unable to load existing sparse-checkout patterns"
+msgstr ""
+
+#: builtin/sparse-checkout.c:556
+msgid "read patterns from standard in"
+msgstr ""
+
+#: builtin/sparse-checkout.c:571
+msgid "git sparse-checkout reapply"
+msgstr ""
+
+#: builtin/sparse-checkout.c:590
+msgid "git sparse-checkout disable"
+msgstr ""
+
+#: builtin/sparse-checkout.c:618
+msgid "error while refreshing working directory"
+msgstr ""
+
+#: builtin/stash.c:22 builtin/stash.c:38
+msgid "git stash list [<options>]"
+msgstr ""
+
+#: builtin/stash.c:23 builtin/stash.c:43
+msgid "git stash show [<options>] [<stash>]"
+msgstr ""
+
+#: builtin/stash.c:24 builtin/stash.c:48
+msgid "git stash drop [-q|--quiet] [<stash>]"
+msgstr ""
+
+#: builtin/stash.c:25
+msgid "git stash ( pop | apply ) [--index] [-q|--quiet] [<stash>]"
+msgstr ""
+
+#: builtin/stash.c:26 builtin/stash.c:63
+msgid "git stash branch <branchname> [<stash>]"
+msgstr ""
+
+#: builtin/stash.c:27 builtin/stash.c:68
+msgid "git stash clear"
+msgstr ""
+
+#: builtin/stash.c:28
+msgid ""
+"git stash [push [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet]\n"
+"          [-u|--include-untracked] [-a|--all] [-m|--message <message>]\n"
+"          [--pathspec-from-file=<file> [--pathspec-file-nul]]\n"
+"          [--] [<pathspec>...]]"
+msgstr ""
+
+#: builtin/stash.c:32 builtin/stash.c:85
+msgid ""
+"git stash save [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet]\n"
+"          [-u|--include-untracked] [-a|--all] [<message>]"
+msgstr ""
+
+#: builtin/stash.c:53
+msgid "git stash pop [--index] [-q|--quiet] [<stash>]"
+msgstr ""
+
+#: builtin/stash.c:58
+msgid "git stash apply [--index] [-q|--quiet] [<stash>]"
+msgstr ""
+
+#: builtin/stash.c:73
+msgid "git stash store [-m|--message <message>] [-q|--quiet] <commit>"
+msgstr ""
+
+#: builtin/stash.c:78
+msgid ""
+"git stash [push [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet]\n"
+"          [-u|--include-untracked] [-a|--all] [-m|--message <message>]\n"
+"          [--] [<pathspec>...]]"
+msgstr ""
+
+#: builtin/stash.c:128
+#, c-format
+msgid "'%s' is not a stash-like commit"
+msgstr ""
+
+#: builtin/stash.c:148
+#, c-format
+msgid "Too many revisions specified:%s"
+msgstr ""
+
+#: builtin/stash.c:162
+msgid "No stash entries found."
+msgstr ""
+
+#: builtin/stash.c:176
+#, c-format
+msgid "%s is not a valid reference"
+msgstr ""
+
+#: builtin/stash.c:225
+msgid "git stash clear with arguments is unimplemented"
+msgstr ""
+
+#: builtin/stash.c:429
+#, c-format
+msgid ""
+"WARNING: Untracked file in way of tracked file!  Renaming\n"
+"            %s -> %s\n"
+"         to make room.\n"
+msgstr ""
+
+#: builtin/stash.c:490
+msgid "cannot apply a stash in the middle of a merge"
+msgstr ""
+
+#: builtin/stash.c:501
+#, c-format
+msgid "could not generate diff %s^!."
+msgstr ""
+
+#: builtin/stash.c:508
+msgid "conflicts in index. Try without --index."
+msgstr ""
+
+#: builtin/stash.c:514
+msgid "could not save index tree"
+msgstr ""
+
+#: builtin/stash.c:523
+msgid "could not restore untracked files from stash"
+msgstr ""
+
+#: builtin/stash.c:537
+#, c-format
+msgid "Merging %s with %s"
+msgstr ""
+
+#: builtin/stash.c:547
+msgid "Index was not unstashed."
+msgstr ""
+
+#: builtin/stash.c:589 builtin/stash.c:687
+msgid "attempt to recreate the index"
+msgstr ""
+
+#: builtin/stash.c:633
+#, c-format
+msgid "Dropped %s (%s)"
+msgstr ""
+
+#: builtin/stash.c:636
+#, c-format
+msgid "%s: Could not drop stash entry"
+msgstr ""
+
+#: builtin/stash.c:649
+#, c-format
+msgid "'%s' is not a stash reference"
+msgstr ""
+
+#: builtin/stash.c:699
+msgid "The stash entry is kept in case you need it again."
+msgstr ""
+
+#: builtin/stash.c:722
+msgid "No branch name specified"
+msgstr ""
+
+#: builtin/stash.c:866 builtin/stash.c:903
+#, c-format
+msgid "Cannot update %s with %s"
+msgstr ""
+
+#: builtin/stash.c:884 builtin/stash.c:1538 builtin/stash.c:1603
+msgid "stash message"
+msgstr ""
+
+#: builtin/stash.c:894
+msgid "\"git stash store\" requires one <commit> argument"
+msgstr ""
+
+#: builtin/stash.c:1109
+msgid "No changes selected"
+msgstr ""
+
+#: builtin/stash.c:1209
+msgid "You do not have the initial commit yet"
+msgstr ""
+
+#: builtin/stash.c:1236
+msgid "Cannot save the current index state"
+msgstr ""
+
+#: builtin/stash.c:1245
+msgid "Cannot save the untracked files"
+msgstr ""
+
+#: builtin/stash.c:1256 builtin/stash.c:1265
+msgid "Cannot save the current worktree state"
+msgstr ""
+
+#: builtin/stash.c:1293
+msgid "Cannot record working tree state"
+msgstr ""
+
+#: builtin/stash.c:1342
+msgid "Can't use --patch and --include-untracked or --all at the same time"
+msgstr ""
+
+#: builtin/stash.c:1358
+msgid "Did you forget to 'git add'?"
+msgstr ""
+
+#: builtin/stash.c:1373
+msgid "No local changes to save"
+msgstr ""
+
+#: builtin/stash.c:1380
+msgid "Cannot initialize stash"
+msgstr ""
+
+#: builtin/stash.c:1395
+msgid "Cannot save the current status"
+msgstr ""
+
+#: builtin/stash.c:1400
+#, c-format
+msgid "Saved working directory and index state %s"
+msgstr ""
+
+#: builtin/stash.c:1490
+msgid "Cannot remove worktree changes"
+msgstr ""
+
+#: builtin/stash.c:1529 builtin/stash.c:1594
+msgid "keep index"
+msgstr ""
+
+#: builtin/stash.c:1531 builtin/stash.c:1596
+msgid "stash in patch mode"
+msgstr ""
+
+#: builtin/stash.c:1532 builtin/stash.c:1597
+msgid "quiet mode"
+msgstr ""
+
+#: builtin/stash.c:1534 builtin/stash.c:1599
+msgid "include untracked files in stash"
+msgstr ""
+
+#: builtin/stash.c:1536 builtin/stash.c:1601
+msgid "include ignore files"
+msgstr ""
+
+#: builtin/stash.c:1636
+msgid ""
+"the stash.useBuiltin support has been removed!\n"
+"See its entry in 'git help config' for details."
+msgstr ""
+
+#: builtin/stripspace.c:18
+msgid "git stripspace [-s | --strip-comments]"
+msgstr ""
+
+#: builtin/stripspace.c:19
+msgid "git stripspace [-c | --comment-lines]"
+msgstr ""
+
+#: builtin/stripspace.c:37
+msgid "skip and remove all lines starting with comment character"
+msgstr ""
+
+#: builtin/stripspace.c:40
+msgid "prepend comment character and space to each line"
+msgstr ""
+
+#: builtin/submodule--helper.c:47 builtin/submodule--helper.c:2423
+#, c-format
+msgid "Expecting a full ref name, got %s"
+msgstr ""
+
+#: builtin/submodule--helper.c:64
+msgid "submodule--helper print-default-remote takes no arguments"
+msgstr ""
+
+#: builtin/submodule--helper.c:102
+#, c-format
+msgid "cannot strip one component off url '%s'"
+msgstr ""
+
+#: builtin/submodule--helper.c:410 builtin/submodule--helper.c:1819
+msgid "alternative anchor for relative paths"
+msgstr ""
+
+#: builtin/submodule--helper.c:415
+msgid "git submodule--helper list [--prefix=<path>] [<path>...]"
+msgstr ""
+
+#: builtin/submodule--helper.c:472 builtin/submodule--helper.c:629
+#: builtin/submodule--helper.c:652
+#, c-format
+msgid "No url found for submodule path '%s' in .gitmodules"
+msgstr ""
+
+#: builtin/submodule--helper.c:524
+#, c-format
+msgid "Entering '%s'\n"
+msgstr ""
+
+#: builtin/submodule--helper.c:527
+#, c-format
+msgid ""
+"run_command returned non-zero status for %s\n"
+"."
+msgstr ""
+
+#: builtin/submodule--helper.c:549
+#, c-format
+msgid ""
+"run_command returned non-zero status while recursing in the nested "
+"submodules of %s\n"
+"."
+msgstr ""
+
+#: builtin/submodule--helper.c:565
+msgid "suppress output of entering each submodule command"
+msgstr ""
+
+#: builtin/submodule--helper.c:567 builtin/submodule--helper.c:888
+#: builtin/submodule--helper.c:1487
+msgid "recurse into nested submodules"
+msgstr ""
+
+#: builtin/submodule--helper.c:572
+msgid "git submodule--helper foreach [--quiet] [--recursive] [--] <command>"
+msgstr ""
+
+#: builtin/submodule--helper.c:599
+#, c-format
+msgid ""
+"could not look up configuration '%s'. Assuming this repository is its own "
+"authoritative upstream."
+msgstr ""
+
+#: builtin/submodule--helper.c:666
+#, c-format
+msgid "Failed to register url for submodule path '%s'"
+msgstr ""
+
+#: builtin/submodule--helper.c:670
+#, c-format
+msgid "Submodule '%s' (%s) registered for path '%s'\n"
+msgstr ""
+
+#: builtin/submodule--helper.c:680
+#, c-format
+msgid "warning: command update mode suggested for submodule '%s'\n"
+msgstr ""
+
+#: builtin/submodule--helper.c:687
+#, c-format
+msgid "Failed to register update mode for submodule path '%s'"
+msgstr ""
+
+#: builtin/submodule--helper.c:709
+msgid "suppress output for initializing a submodule"
+msgstr ""
+
+#: builtin/submodule--helper.c:714
+msgid "git submodule--helper init [<options>] [<path>]"
+msgstr ""
+
+#: builtin/submodule--helper.c:787 builtin/submodule--helper.c:922
+#, c-format
+msgid "no submodule mapping found in .gitmodules for path '%s'"
+msgstr ""
+
+#: builtin/submodule--helper.c:835
+#, c-format
+msgid "could not resolve HEAD ref inside the submodule '%s'"
+msgstr ""
+
+#: builtin/submodule--helper.c:862 builtin/submodule--helper.c:1457
+#, c-format
+msgid "failed to recurse into submodule '%s'"
+msgstr ""
+
+#: builtin/submodule--helper.c:886 builtin/submodule--helper.c:1623
+msgid "suppress submodule status output"
+msgstr ""
+
+#: builtin/submodule--helper.c:887
+msgid ""
+"use commit stored in the index instead of the one stored in the submodule "
+"HEAD"
+msgstr ""
+
+#: builtin/submodule--helper.c:893
+msgid "git submodule status [--quiet] [--cached] [--recursive] [<path>...]"
+msgstr ""
+
+#: builtin/submodule--helper.c:917
+msgid "git submodule--helper name <path>"
+msgstr ""
+
+#: builtin/submodule--helper.c:989
+#, c-format
+msgid "* %s %s(blob)->%s(submodule)"
+msgstr ""
+
+#: builtin/submodule--helper.c:992
+#, c-format
+msgid "* %s %s(submodule)->%s(blob)"
+msgstr ""
+
+#: builtin/submodule--helper.c:1005
+#, c-format
+msgid "%s"
+msgstr ""
+
+#: builtin/submodule--helper.c:1055
+#, c-format
+msgid "couldn't hash object from '%s'"
+msgstr ""
+
+#: builtin/submodule--helper.c:1059
+#, c-format
+msgid "unexpected mode %o\n"
+msgstr ""
+
+#: builtin/submodule--helper.c:1300
+msgid "use the commit stored in the index instead of the submodule HEAD"
+msgstr ""
+
+#: builtin/submodule--helper.c:1302
+msgid "to compare the commit in the index with that in the submodule HEAD"
+msgstr ""
+
+#: builtin/submodule--helper.c:1304
+msgid "skip submodules with 'ignore_config' value set to 'all'"
+msgstr ""
+
+#: builtin/submodule--helper.c:1306
+msgid "limit the summary size"
+msgstr ""
+
+#: builtin/submodule--helper.c:1311
+msgid "git submodule--helper summary [<options>] [<commit>] [--] [<path>]"
+msgstr ""
+
+#: builtin/submodule--helper.c:1335
+msgid "could not fetch a revision for HEAD"
+msgstr ""
+
+#: builtin/submodule--helper.c:1340
+msgid "--cached and --files are mutually exclusive"
+msgstr ""
+
+#: builtin/submodule--helper.c:1407
+#, c-format
+msgid "Synchronizing submodule url for '%s'\n"
+msgstr ""
+
+#: builtin/submodule--helper.c:1413
+#, c-format
+msgid "failed to register url for submodule path '%s'"
+msgstr ""
+
+#: builtin/submodule--helper.c:1427
+#, c-format
+msgid "failed to get the default remote for submodule '%s'"
+msgstr ""
+
+#: builtin/submodule--helper.c:1438
+#, c-format
+msgid "failed to update remote for submodule '%s'"
+msgstr ""
+
+#: builtin/submodule--helper.c:1485
+msgid "suppress output of synchronizing submodule url"
+msgstr ""
+
+#: builtin/submodule--helper.c:1492
+msgid "git submodule--helper sync [--quiet] [--recursive] [<path>]"
+msgstr ""
+
+#: builtin/submodule--helper.c:1546
+#, 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:1558
+#, c-format
+msgid ""
+"Submodule work tree '%s' contains local modifications; use '-f' to discard "
+"them"
+msgstr ""
+
+#: builtin/submodule--helper.c:1566
+#, c-format
+msgid "Cleared directory '%s'\n"
+msgstr ""
+
+#: builtin/submodule--helper.c:1568
+#, c-format
+msgid "Could not remove submodule work tree '%s'\n"
+msgstr ""
+
+#: builtin/submodule--helper.c:1579
+#, c-format
+msgid "could not create empty submodule directory %s"
+msgstr ""
+
+#: builtin/submodule--helper.c:1595
+#, c-format
+msgid "Submodule '%s' (%s) unregistered for path '%s'\n"
+msgstr ""
+
+#: builtin/submodule--helper.c:1624
+msgid "remove submodule working trees even if they contain local changes"
+msgstr ""
+
+#: builtin/submodule--helper.c:1625
+msgid "unregister all submodules"
+msgstr ""
+
+#: builtin/submodule--helper.c:1630
+msgid ""
+"git submodule deinit [--quiet] [-f | --force] [--all | [--] [<path>...]]"
+msgstr ""
+
+#: builtin/submodule--helper.c:1644
+msgid "Use '--all' if you really want to deinitialize all submodules"
+msgstr ""
+
+#: builtin/submodule--helper.c:1713
+msgid ""
+"An alternate computed from a superproject's alternate is invalid.\n"
+"To allow Git to clone without an alternate in such a case, set\n"
+"submodule.alternateErrorStrategy to 'info' or, equivalently, clone with\n"
+"'--reference-if-able' instead of '--reference'."
+msgstr ""
+
+#: builtin/submodule--helper.c:1752 builtin/submodule--helper.c:1755
+#, c-format
+msgid "submodule '%s' cannot add alternate: %s"
+msgstr ""
+
+#: builtin/submodule--helper.c:1791
+#, c-format
+msgid "Value '%s' for submodule.alternateErrorStrategy is not recognized"
+msgstr ""
+
+#: builtin/submodule--helper.c:1798
+#, c-format
+msgid "Value '%s' for submodule.alternateLocation is not recognized"
+msgstr ""
+
+#: builtin/submodule--helper.c:1822
+msgid "where the new submodule will be cloned to"
+msgstr ""
+
+#: builtin/submodule--helper.c:1825
+msgid "name of the new submodule"
+msgstr ""
+
+#: builtin/submodule--helper.c:1828
+msgid "url where to clone the submodule from"
+msgstr ""
+
+#: builtin/submodule--helper.c:1836
+msgid "depth for shallow clones"
+msgstr ""
+
+#: builtin/submodule--helper.c:1839 builtin/submodule--helper.c:2348
+msgid "force cloning progress"
+msgstr ""
+
+#: builtin/submodule--helper.c:1841 builtin/submodule--helper.c:2350
+msgid "disallow cloning into non-empty directory"
+msgstr ""
+
+#: builtin/submodule--helper.c:1848
+msgid ""
+"git submodule--helper clone [--prefix=<path>] [--quiet] [--reference "
+"<repository>] [--name <name>] [--depth <depth>] [--single-branch] --url "
+"<url> --path <path>"
+msgstr ""
+
+#: builtin/submodule--helper.c:1873
+#, c-format
+msgid "refusing to create/use '%s' in another submodule's git dir"
+msgstr ""
+
+#: builtin/submodule--helper.c:1884
+#, c-format
+msgid "clone of '%s' into submodule path '%s' failed"
+msgstr ""
+
+#: builtin/submodule--helper.c:1888
+#, c-format
+msgid "directory not empty: '%s'"
+msgstr ""
+
+#: builtin/submodule--helper.c:1900
+#, c-format
+msgid "could not get submodule directory for '%s'"
+msgstr ""
+
+#: builtin/submodule--helper.c:1936
+#, c-format
+msgid "Invalid update mode '%s' for submodule path '%s'"
+msgstr ""
+
+#: builtin/submodule--helper.c:1940
+#, c-format
+msgid "Invalid update mode '%s' configured for submodule path '%s'"
+msgstr ""
+
+#: builtin/submodule--helper.c:2041
+#, c-format
+msgid "Submodule path '%s' not initialized"
+msgstr ""
+
+#: builtin/submodule--helper.c:2045
+msgid "Maybe you want to use 'update --init'?"
+msgstr ""
+
+#: builtin/submodule--helper.c:2075
+#, c-format
+msgid "Skipping unmerged submodule %s"
+msgstr ""
+
+#: builtin/submodule--helper.c:2104
+#, c-format
+msgid "Skipping submodule '%s'"
+msgstr ""
+
+#: builtin/submodule--helper.c:2254
+#, c-format
+msgid "Failed to clone '%s'. Retry scheduled"
+msgstr ""
+
+#: builtin/submodule--helper.c:2265
+#, c-format
+msgid "Failed to clone '%s' a second time, aborting"
+msgstr ""
+
+#: builtin/submodule--helper.c:2327 builtin/submodule--helper.c:2573
+msgid "path into the working tree"
+msgstr ""
+
+#: builtin/submodule--helper.c:2330
+msgid "path into the working tree, across nested submodule boundaries"
+msgstr ""
+
+#: builtin/submodule--helper.c:2334
+msgid "rebase, merge, checkout or none"
+msgstr ""
+
+#: builtin/submodule--helper.c:2340
+msgid "create a shallow clone truncated to the specified number of revisions"
+msgstr ""
+
+#: builtin/submodule--helper.c:2343
+msgid "parallel jobs"
+msgstr ""
+
+#: builtin/submodule--helper.c:2345
+msgid "whether the initial clone should follow the shallow recommendation"
+msgstr ""
+
+#: builtin/submodule--helper.c:2346
+msgid "don't print cloning progress"
+msgstr ""
+
+#: builtin/submodule--helper.c:2357
+msgid "git submodule--helper update-clone [--prefix=<path>] [<path>...]"
+msgstr ""
+
+#: builtin/submodule--helper.c:2370
+msgid "bad value for update parameter"
+msgstr ""
+
+#: builtin/submodule--helper.c:2418
+#, 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:2541
+#, c-format
+msgid "could not get a repository handle for submodule '%s'"
+msgstr ""
+
+#: builtin/submodule--helper.c:2574
+msgid "recurse into submodules"
+msgstr ""
+
+#: builtin/submodule--helper.c:2580
+msgid "git submodule--helper absorb-git-dirs [<options>] [<path>...]"
+msgstr ""
+
+#: builtin/submodule--helper.c:2636
+msgid "check if it is safe to write to the .gitmodules file"
+msgstr ""
+
+#: builtin/submodule--helper.c:2639
+msgid "unset the config in the .gitmodules file"
+msgstr ""
+
+#: builtin/submodule--helper.c:2644
+msgid "git submodule--helper config <name> [<value>]"
+msgstr ""
+
+#: builtin/submodule--helper.c:2645
+msgid "git submodule--helper config --unset <name>"
+msgstr ""
+
+#: builtin/submodule--helper.c:2646
+msgid "git submodule--helper config --check-writeable"
+msgstr ""
+
+#: builtin/submodule--helper.c:2665 git-submodule.sh:150
+#, sh-format
+msgid "please make sure that the .gitmodules file is in the working tree"
+msgstr ""
+
+#: builtin/submodule--helper.c:2681
+msgid "suppress output for setting url of a submodule"
+msgstr ""
+
+#: builtin/submodule--helper.c:2685
+msgid "git submodule--helper set-url [--quiet] <path> <newurl>"
+msgstr ""
+
+#: builtin/submodule--helper.c:2718
+msgid "set the default tracking branch to master"
+msgstr ""
+
+#: builtin/submodule--helper.c:2720
+msgid "set the default tracking branch"
+msgstr ""
+
+#: builtin/submodule--helper.c:2724
+msgid "git submodule--helper set-branch [-q|--quiet] (-d|--default) <path>"
+msgstr ""
+
+#: builtin/submodule--helper.c:2725
+msgid ""
+"git submodule--helper set-branch [-q|--quiet] (-b|--branch) <branch> <path>"
+msgstr ""
+
+#: builtin/submodule--helper.c:2732
+msgid "--branch or --default required"
+msgstr ""
+
+#: builtin/submodule--helper.c:2735
+msgid "--branch and --default are mutually exclusive"
+msgstr ""
+
+#: builtin/submodule--helper.c:2792 git.c:441 git.c:714
+#, c-format
+msgid "%s doesn't support --super-prefix"
+msgstr ""
+
+#: builtin/submodule--helper.c:2798
+#, c-format
+msgid "'%s' is not a valid submodule--helper subcommand"
+msgstr ""
+
+#: builtin/symbolic-ref.c:8
+msgid "git symbolic-ref [<options>] <name> [<ref>]"
+msgstr ""
+
+#: builtin/symbolic-ref.c:9
+msgid "git symbolic-ref -d [-q] <name>"
+msgstr ""
+
+#: builtin/symbolic-ref.c:40
+msgid "suppress error message for non-symbolic (detached) refs"
+msgstr ""
+
+#: builtin/symbolic-ref.c:41
+msgid "delete symbolic ref"
+msgstr ""
+
+#: builtin/symbolic-ref.c:42
+msgid "shorten ref output"
+msgstr ""
+
+#: builtin/symbolic-ref.c:43 builtin/update-ref.c:499
+msgid "reason"
+msgstr ""
+
+#: builtin/symbolic-ref.c:43 builtin/update-ref.c:499
+msgid "reason of the update"
+msgstr ""
+
+#: builtin/tag.c:25
+msgid ""
+"git tag [-a | -s | -u <key-id>] [-f] [-m <msg> | -F <file>]\n"
+"\t\t<tagname> [<head>]"
+msgstr ""
+
+#: builtin/tag.c:27
+msgid "git tag -d <tagname>..."
+msgstr ""
+
+#: builtin/tag.c:28
+msgid ""
+"git tag -l [-n[<num>]] [--contains <commit>] [--no-contains <commit>] [--"
+"points-at <object>]\n"
+"\t\t[--format=<format>] [--merged <commit>] [--no-merged <commit>] "
+"[<pattern>...]"
+msgstr ""
+
+#: builtin/tag.c:30
+msgid "git tag -v [--format=<format>] <tagname>..."
+msgstr ""
+
+#: builtin/tag.c:89
+#, c-format
+msgid "tag '%s' not found."
+msgstr ""
+
+#: builtin/tag.c:124
+#, c-format
+msgid "Deleted tag '%s' (was %s)\n"
+msgstr ""
+
+#: builtin/tag.c:159
+#, c-format
+msgid ""
+"\n"
+"Write a message for tag:\n"
+"  %s\n"
+"Lines starting with '%c' will be ignored.\n"
+msgstr ""
+
+#: builtin/tag.c:163
+#, c-format
+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"
+msgstr ""
+
+#: builtin/tag.c:230
+msgid "unable to sign the tag"
+msgstr ""
+
+#: builtin/tag.c:248
+#, c-format
+msgid ""
+"You have created a nested tag. The object referred to by your new tag is\n"
+"already a tag. If you meant to tag the object that it points to, use:\n"
+"\n"
+"\tgit tag -f %s %s^{}"
+msgstr ""
+
+#: builtin/tag.c:264
+msgid "bad object type."
+msgstr ""
+
+#: builtin/tag.c:317
+msgid "no tag message?"
+msgstr ""
+
+#: builtin/tag.c:324
+#, c-format
+msgid "The tag message has been left in %s\n"
+msgstr ""
+
+#: builtin/tag.c:435
+msgid "list tag names"
+msgstr ""
+
+#: builtin/tag.c:437
+msgid "print <n> lines of each tag message"
+msgstr ""
+
+#: builtin/tag.c:439
+msgid "delete tags"
+msgstr ""
+
+#: builtin/tag.c:440
+msgid "verify tags"
+msgstr ""
+
+#: builtin/tag.c:442
+msgid "Tag creation options"
+msgstr ""
+
+#: builtin/tag.c:444
+msgid "annotated tag, needs a message"
+msgstr ""
+
+#: builtin/tag.c:446
+msgid "tag message"
+msgstr ""
+
+#: builtin/tag.c:448
+msgid "force edit of tag message"
+msgstr ""
+
+#: builtin/tag.c:449
+msgid "annotated and GPG-signed tag"
+msgstr ""
+
+#: builtin/tag.c:452
+msgid "use another key to sign the tag"
+msgstr ""
+
+#: builtin/tag.c:453
+msgid "replace the tag if exists"
+msgstr ""
+
+#: builtin/tag.c:454 builtin/update-ref.c:505
+msgid "create a reflog"
+msgstr ""
+
+#: builtin/tag.c:456
+msgid "Tag listing options"
+msgstr ""
+
+#: builtin/tag.c:457
+msgid "show tag list in columns"
+msgstr ""
+
+#: builtin/tag.c:458 builtin/tag.c:460
+msgid "print only tags that contain the commit"
+msgstr ""
+
+#: builtin/tag.c:459 builtin/tag.c:461
+msgid "print only tags that don't contain the commit"
+msgstr ""
+
+#: builtin/tag.c:462
+msgid "print only tags that are merged"
+msgstr ""
+
+#: builtin/tag.c:463
+msgid "print only tags that are not merged"
+msgstr ""
+
+#: builtin/tag.c:467
+msgid "print only tags of the object"
+msgstr ""
+
+#: builtin/tag.c:515
+msgid "--column and -n are incompatible"
+msgstr ""
+
+#: builtin/tag.c:537
+msgid "-n option is only allowed in list mode"
+msgstr ""
+
+#: builtin/tag.c:539
+msgid "--contains option is only allowed in list mode"
+msgstr ""
+
+#: builtin/tag.c:541
+msgid "--no-contains option is only allowed in list mode"
+msgstr ""
+
+#: builtin/tag.c:543
+msgid "--points-at option is only allowed in list mode"
+msgstr ""
+
+#: builtin/tag.c:545
+msgid "--merged and --no-merged options are only allowed in list mode"
+msgstr ""
+
+#: builtin/tag.c:556
+msgid "only one -F or -m option is allowed."
+msgstr ""
+
+#: builtin/tag.c:581
+#, c-format
+msgid "'%s' is not a valid tag name."
+msgstr ""
+
+#: builtin/tag.c:586
+#, c-format
+msgid "tag '%s' already exists"
+msgstr ""
+
+#: builtin/tag.c:617
+#, c-format
+msgid "Updated tag '%s' (was %s)\n"
+msgstr ""
+
+#: builtin/unpack-objects.c:502
+msgid "Unpacking objects"
+msgstr ""
+
+#: builtin/update-index.c:84
+#, c-format
+msgid "failed to create directory %s"
+msgstr ""
+
+#: builtin/update-index.c:100
+#, c-format
+msgid "failed to create file %s"
+msgstr ""
+
+#: builtin/update-index.c:108
+#, c-format
+msgid "failed to delete file %s"
+msgstr ""
+
+#: builtin/update-index.c:115 builtin/update-index.c:221
+#, c-format
+msgid "failed to delete directory %s"
+msgstr ""
+
+#: builtin/update-index.c:140
+#, c-format
+msgid "Testing mtime in '%s' "
+msgstr ""
+
+#: builtin/update-index.c:154
+msgid "directory stat info does not change after adding a new file"
+msgstr ""
+
+#: builtin/update-index.c:167
+msgid "directory stat info does not change after adding a new directory"
+msgstr ""
+
+#: builtin/update-index.c:180
+msgid "directory stat info changes after updating a file"
+msgstr ""
+
+#: builtin/update-index.c:191
+msgid "directory stat info changes after adding a file inside subdirectory"
+msgstr ""
+
+#: builtin/update-index.c:202
+msgid "directory stat info does not change after deleting a file"
+msgstr ""
+
+#: builtin/update-index.c:215
+msgid "directory stat info does not change after deleting a directory"
+msgstr ""
+
+#: builtin/update-index.c:222
+msgid " OK"
+msgstr ""
+
+#: builtin/update-index.c:591
+msgid "git update-index [<options>] [--] [<file>...]"
+msgstr ""
+
+#: builtin/update-index.c:974
+msgid "continue refresh even when index needs update"
+msgstr ""
+
+#: builtin/update-index.c:977
+msgid "refresh: ignore submodules"
+msgstr ""
+
+#: builtin/update-index.c:980
+msgid "do not ignore new files"
+msgstr ""
+
+#: builtin/update-index.c:982
+msgid "let files replace directories and vice-versa"
+msgstr ""
+
+#: builtin/update-index.c:984
+msgid "notice files missing from worktree"
+msgstr ""
+
+#: builtin/update-index.c:986
+msgid "refresh even if index contains unmerged entries"
+msgstr ""
+
+#: builtin/update-index.c:989
+msgid "refresh stat information"
+msgstr ""
+
+#: builtin/update-index.c:993
+msgid "like --refresh, but ignore assume-unchanged setting"
+msgstr ""
+
+#: builtin/update-index.c:997
+msgid "<mode>,<object>,<path>"
+msgstr ""
+
+#: builtin/update-index.c:998
+msgid "add the specified entry to the index"
+msgstr ""
+
+#: builtin/update-index.c:1008
+msgid "mark files as \"not changing\""
+msgstr ""
+
+#: builtin/update-index.c:1011
+msgid "clear assumed-unchanged bit"
+msgstr ""
+
+#: builtin/update-index.c:1014
+msgid "mark files as \"index-only\""
+msgstr ""
+
+#: builtin/update-index.c:1017
+msgid "clear skip-worktree bit"
+msgstr ""
+
+#: builtin/update-index.c:1020
+msgid "do not touch index-only entries"
+msgstr ""
+
+#: builtin/update-index.c:1022
+msgid "add to index only; do not add content to object database"
+msgstr ""
+
+#: builtin/update-index.c:1024
+msgid "remove named paths even if present in worktree"
+msgstr ""
+
+#: builtin/update-index.c:1026
+msgid "with --stdin: input lines are terminated by null bytes"
+msgstr ""
+
+#: builtin/update-index.c:1028
+msgid "read list of paths to be updated from standard input"
+msgstr ""
+
+#: builtin/update-index.c:1032
+msgid "add entries from standard input to the index"
+msgstr ""
+
+#: builtin/update-index.c:1036
+msgid "repopulate stages #2 and #3 for the listed paths"
+msgstr ""
+
+#: builtin/update-index.c:1040
+msgid "only update entries that differ from HEAD"
+msgstr ""
+
+#: builtin/update-index.c:1044
+msgid "ignore files missing from worktree"
+msgstr ""
+
+#: builtin/update-index.c:1047
+msgid "report actions to standard output"
+msgstr ""
+
+#: builtin/update-index.c:1049
+msgid "(for porcelains) forget saved unresolved conflicts"
+msgstr ""
+
+#: builtin/update-index.c:1053
+msgid "write index in this format"
+msgstr ""
+
+#: builtin/update-index.c:1055
+msgid "enable or disable split index"
+msgstr ""
+
+#: builtin/update-index.c:1057
+msgid "enable/disable untracked cache"
+msgstr ""
+
+#: builtin/update-index.c:1059
+msgid "test if the filesystem supports untracked cache"
+msgstr ""
+
+#: builtin/update-index.c:1061
+msgid "enable untracked cache without testing the filesystem"
+msgstr ""
+
+#: builtin/update-index.c:1063
+msgid "write out the index even if is not flagged as changed"
+msgstr ""
+
+#: builtin/update-index.c:1065
+msgid "enable or disable file system monitor"
+msgstr ""
+
+#: builtin/update-index.c:1067
+msgid "mark files as fsmonitor valid"
+msgstr ""
+
+#: builtin/update-index.c:1070
+msgid "clear fsmonitor valid bit"
+msgstr ""
+
+#: builtin/update-index.c:1173
+msgid ""
+"core.splitIndex is set to false; remove or change it, if you really want to "
+"enable split index"
+msgstr ""
+
+#: builtin/update-index.c:1182
+msgid ""
+"core.splitIndex is set to true; remove or change it, if you really want to "
+"disable split index"
+msgstr ""
+
+#: builtin/update-index.c:1194
+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:1198
+msgid "Untracked cache disabled"
+msgstr ""
+
+#: builtin/update-index.c:1206
+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:1210
+#, c-format
+msgid "Untracked cache enabled for '%s'"
+msgstr ""
+
+#: builtin/update-index.c:1218
+msgid "core.fsmonitor is unset; set it if you really want to enable fsmonitor"
+msgstr ""
+
+#: builtin/update-index.c:1222
+msgid "fsmonitor enabled"
+msgstr ""
+
+#: builtin/update-index.c:1225
+msgid ""
+"core.fsmonitor is set; remove it if you really want to disable fsmonitor"
+msgstr ""
+
+#: builtin/update-index.c:1229
+msgid "fsmonitor disabled"
+msgstr ""
+
+#: builtin/update-ref.c:10
+msgid "git update-ref [<options>] -d <refname> [<old-val>]"
+msgstr ""
+
+#: builtin/update-ref.c:11
+msgid "git update-ref [<options>]    <refname> <new-val> [<old-val>]"
+msgstr ""
+
+#: builtin/update-ref.c:12
+msgid "git update-ref [<options>] --stdin [-z]"
+msgstr ""
+
+#: builtin/update-ref.c:500
+msgid "delete the reference"
+msgstr ""
+
+#: builtin/update-ref.c:502
+msgid "update <refname> not the one it points to"
+msgstr ""
+
+#: builtin/update-ref.c:503
+msgid "stdin has NUL-terminated arguments"
+msgstr ""
+
+#: builtin/update-ref.c:504
+msgid "read updates from stdin"
+msgstr ""
+
+#: builtin/update-server-info.c:7
+msgid "git update-server-info [--force]"
+msgstr ""
+
+#: builtin/update-server-info.c:15
+msgid "update the info files from scratch"
+msgstr ""
+
+#: builtin/upload-pack.c:11
+msgid "git upload-pack [<options>] <dir>"
+msgstr ""
+
+#: builtin/upload-pack.c:23 t/helper/test-serve-v2.c:17
+msgid "quit after a single request/response exchange"
+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:19
+msgid "git verify-commit [-v | --verbose] <commit>..."
+msgstr ""
+
+#: builtin/verify-commit.c:68
+msgid "print commit contents"
+msgstr ""
+
+#: builtin/verify-commit.c:69 builtin/verify-tag.c:37
+msgid "print raw gpg status output"
+msgstr ""
+
+#: builtin/verify-pack.c:59
+msgid "git verify-pack [-v | --verbose] [-s | --stat-only] <pack>..."
+msgstr ""
+
+#: builtin/verify-pack.c:70
+msgid "verbose"
+msgstr ""
+
+#: builtin/verify-pack.c:72
+msgid "show statistics only"
+msgstr ""
+
+#: builtin/verify-tag.c:18
+msgid "git verify-tag [-v | --verbose] [--format=<format>] <tag>..."
+msgstr ""
+
+#: builtin/verify-tag.c:36
+msgid "print tag contents"
+msgstr ""
+
+#: builtin/worktree.c:18
+msgid "git worktree add [<options>] <path> [<commit-ish>]"
+msgstr ""
+
+#: builtin/worktree.c:19
+msgid "git worktree list [<options>]"
+msgstr ""
+
+#: builtin/worktree.c:20
+msgid "git worktree lock [<options>] <path>"
+msgstr ""
+
+#: builtin/worktree.c:21
+msgid "git worktree move <worktree> <new-path>"
+msgstr ""
+
+#: builtin/worktree.c:22
+msgid "git worktree prune [<options>]"
+msgstr ""
+
+#: builtin/worktree.c:23
+msgid "git worktree remove [<options>] <worktree>"
+msgstr ""
+
+#: builtin/worktree.c:24
+msgid "git worktree unlock <path>"
+msgstr ""
+
+#: builtin/worktree.c:61 builtin/worktree.c:933
+#, c-format
+msgid "failed to delete '%s'"
+msgstr ""
+
+#: builtin/worktree.c:74
+#, c-format
+msgid "Removing %s/%s: %s"
+msgstr ""
+
+#: builtin/worktree.c:149
+msgid "report pruned working trees"
+msgstr ""
+
+#: builtin/worktree.c:151
+msgid "expire working trees older than <time>"
+msgstr ""
+
+#: builtin/worktree.c:221
+#, c-format
+msgid "'%s' already exists"
+msgstr ""
+
+#: builtin/worktree.c:230
+#, c-format
+msgid "unusable worktree destination '%s'"
+msgstr ""
+
+#: builtin/worktree.c:235
+#, c-format
+msgid ""
+"'%s' is a missing but locked worktree;\n"
+"use '%s -f -f' to override, or 'unlock' and 'prune' or 'remove' to clear"
+msgstr ""
+
+#: builtin/worktree.c:237
+#, c-format
+msgid ""
+"'%s' is a missing but already registered worktree;\n"
+"use '%s -f' to override, or 'prune' or 'remove' to clear"
+msgstr ""
+
+#: builtin/worktree.c:288
+#, c-format
+msgid "could not create directory of '%s'"
+msgstr ""
+
+#: builtin/worktree.c:422 builtin/worktree.c:428
+#, c-format
+msgid "Preparing worktree (new branch '%s')"
+msgstr ""
+
+#: builtin/worktree.c:424
+#, c-format
+msgid "Preparing worktree (resetting branch '%s'; was at %s)"
+msgstr ""
+
+#: builtin/worktree.c:433
+#, c-format
+msgid "Preparing worktree (checking out '%s')"
+msgstr ""
+
+#: builtin/worktree.c:439
+#, c-format
+msgid "Preparing worktree (detached HEAD %s)"
+msgstr ""
+
+#: builtin/worktree.c:480
+msgid "checkout <branch> even if already checked out in other worktree"
+msgstr ""
+
+#: builtin/worktree.c:483
+msgid "create a new branch"
+msgstr ""
+
+#: builtin/worktree.c:485
+msgid "create or reset a branch"
+msgstr ""
+
+#: builtin/worktree.c:487
+msgid "populate the new working tree"
+msgstr ""
+
+#: builtin/worktree.c:488
+msgid "keep the new working tree locked"
+msgstr ""
+
+#: builtin/worktree.c:491
+msgid "set up tracking mode (see git-branch(1))"
+msgstr ""
+
+#: builtin/worktree.c:494
+msgid "try to match the new branch name with a remote-tracking branch"
+msgstr ""
+
+#: builtin/worktree.c:502
+msgid "-b, -B, and --detach are mutually exclusive"
+msgstr ""
+
+#: builtin/worktree.c:563
+msgid "--[no-]track can only be used if a new branch is created"
+msgstr ""
+
+#: builtin/worktree.c:680
+msgid "show extended annotations and reasons, if available"
+msgstr ""
+
+#: builtin/worktree.c:682
+msgid "add 'prunable' annotation to worktrees older than <time>"
+msgstr ""
+
+#: builtin/worktree.c:691
+msgid "--verbose and --porcelain are mutually exclusive"
+msgstr ""
+
+#: builtin/worktree.c:718
+msgid "reason for locking"
+msgstr ""
+
+#: builtin/worktree.c:730 builtin/worktree.c:763 builtin/worktree.c:837
+#: builtin/worktree.c:961
+#, c-format
+msgid "'%s' is not a working tree"
+msgstr ""
+
+#: builtin/worktree.c:732 builtin/worktree.c:765
+msgid "The main working tree cannot be locked or unlocked"
+msgstr ""
+
+#: builtin/worktree.c:737
+#, c-format
+msgid "'%s' is already locked, reason: %s"
+msgstr ""
+
+#: builtin/worktree.c:739
+#, c-format
+msgid "'%s' is already locked"
+msgstr ""
+
+#: builtin/worktree.c:767
+#, c-format
+msgid "'%s' is not locked"
+msgstr ""
+
+#: builtin/worktree.c:808
+msgid "working trees containing submodules cannot be moved or removed"
+msgstr ""
+
+#: builtin/worktree.c:816
+msgid "force move even if worktree is dirty or locked"
+msgstr ""
+
+#: builtin/worktree.c:839 builtin/worktree.c:963
+#, c-format
+msgid "'%s' is a main working tree"
+msgstr ""
+
+#: builtin/worktree.c:844
+#, c-format
+msgid "could not figure out destination name from '%s'"
+msgstr ""
+
+#: builtin/worktree.c:857
+#, c-format
+msgid ""
+"cannot move a locked working tree, lock reason: %s\n"
+"use 'move -f -f' to override or unlock first"
+msgstr ""
+
+#: builtin/worktree.c:859
+msgid ""
+"cannot move a locked working tree;\n"
+"use 'move -f -f' to override or unlock first"
+msgstr ""
+
+#: builtin/worktree.c:862
+#, c-format
+msgid "validation failed, cannot move working tree: %s"
+msgstr ""
+
+#: builtin/worktree.c:867
+#, c-format
+msgid "failed to move '%s' to '%s'"
+msgstr ""
+
+#: builtin/worktree.c:913
+#, c-format
+msgid "failed to run 'git status' on '%s'"
+msgstr ""
+
+#: builtin/worktree.c:917
+#, c-format
+msgid "'%s' contains modified or untracked files, use --force to delete it"
+msgstr ""
+
+#: builtin/worktree.c:922
+#, c-format
+msgid "failed to run 'git status' on '%s', code %d"
+msgstr ""
+
+#: builtin/worktree.c:945
+msgid "force removal even if worktree is dirty or locked"
+msgstr ""
+
+#: builtin/worktree.c:968
+#, c-format
+msgid ""
+"cannot remove a locked working tree, lock reason: %s\n"
+"use 'remove -f -f' to override or unlock first"
+msgstr ""
+
+#: builtin/worktree.c:970
+msgid ""
+"cannot remove a locked working tree;\n"
+"use 'remove -f -f' to override or unlock first"
+msgstr ""
+
+#: builtin/worktree.c:973
+#, c-format
+msgid "validation failed, cannot remove working tree: %s"
+msgstr ""
+
+#: builtin/worktree.c:997
+#, c-format
+msgid "repair: %s: %s"
+msgstr ""
+
+#: builtin/worktree.c:1000
+#, c-format
+msgid "error: %s: %s"
+msgstr ""
+
+#: builtin/write-tree.c:15
+msgid "git write-tree [--missing-ok] [--prefix=<prefix>/]"
+msgstr ""
+
+#: builtin/write-tree.c:28
+msgid "<prefix>/"
+msgstr ""
+
+#: builtin/write-tree.c:29
+msgid "write tree object for a subdirectory <prefix>"
+msgstr ""
+
+#: builtin/write-tree.c:31
+msgid "only useful for debugging"
+msgstr ""
+
+#: http-fetch.c:118
+#, c-format
+msgid "argument to --packfile must be a valid hash (got '%s')"
+msgstr ""
+
+#: http-fetch.c:128
+msgid "not a git repository"
+msgstr ""
+
+#: http-fetch.c:134
+msgid "--packfile requires --index-pack-args"
+msgstr ""
+
+#: http-fetch.c:143
+msgid "--index-pack-args can only be used with --packfile"
+msgstr ""
+
+#: t/helper/test-fast-rebase.c:141
+msgid "unhandled options"
+msgstr ""
+
+#: t/helper/test-fast-rebase.c:146
+msgid "error preparing revisions"
+msgstr ""
+
+#: t/helper/test-reach.c:154
+#, c-format
+msgid "commit %s is not marked reachable"
+msgstr ""
+
+#: t/helper/test-reach.c:164
+msgid "too many commits marked reachable"
+msgstr ""
+
+#: t/helper/test-serve-v2.c:7
+msgid "test-tool serve-v2 [<options>]"
+msgstr ""
+
+#: t/helper/test-serve-v2.c:19
+msgid "exit immediately after advertising capabilities"
+msgstr ""
+
+#: git.c:28
+msgid ""
+"git [--version] [--help] [-C <path>] [-c <name>=<value>]\n"
+"           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]\n"
+"           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--"
+"bare]\n"
+"           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]\n"
+"           [--super-prefix=<path>] [--config-env=<name>=<envvar>]\n"
+"           <command> [<args>]"
+msgstr ""
+
+#: git.c:36
+msgid ""
+"'git help -a' and 'git help -g' list available subcommands and some\n"
+"concept guides. See 'git help <command>' or 'git help <concept>'\n"
+"to read about a specific subcommand or concept.\n"
+"See 'git help git' for an overview of the system."
+msgstr ""
+
+#: git.c:188
+#, c-format
+msgid "no directory given for --git-dir\n"
+msgstr ""
+
+#: git.c:202
+#, c-format
+msgid "no namespace given for --namespace\n"
+msgstr ""
+
+#: git.c:216
+#, c-format
+msgid "no directory given for --work-tree\n"
+msgstr ""
+
+#: git.c:230
+#, c-format
+msgid "no prefix given for --super-prefix\n"
+msgstr ""
+
+#: git.c:252
+#, c-format
+msgid "-c expects a configuration string\n"
+msgstr ""
+
+#: git.c:292
+#, c-format
+msgid "no directory given for -C\n"
+msgstr ""
+
+#: git.c:318
+#, c-format
+msgid "unknown option: %s\n"
+msgstr ""
+
+#: git.c:367
+#, c-format
+msgid "while expanding alias '%s': '%s'"
+msgstr ""
+
+#: git.c:376
+#, c-format
+msgid ""
+"alias '%s' changes environment variables.\n"
+"You can use '!git' in the alias to do this"
+msgstr ""
+
+#: git.c:383
+#, c-format
+msgid "empty alias for %s"
+msgstr ""
+
+#: git.c:386
+#, c-format
+msgid "recursive alias: %s"
+msgstr ""
+
+#: git.c:468
+msgid "write failure on standard output"
+msgstr ""
+
+#: git.c:470
+msgid "unknown write failure on standard output"
+msgstr ""
+
+#: git.c:472
+msgid "close failed on standard output"
+msgstr ""
+
+#: git.c:823
+#, c-format
+msgid "alias loop detected: expansion of '%s' does not terminate:%s"
+msgstr ""
+
+#: git.c:873
+#, c-format
+msgid "cannot handle %s as a builtin"
+msgstr ""
+
+#: git.c:886
+#, c-format
+msgid ""
+"usage: %s\n"
+"\n"
+msgstr ""
+
+#: git.c:906
+#, c-format
+msgid "expansion of alias '%s' failed; '%s' is not a git command\n"
+msgstr ""
+
+#: git.c:918
+#, c-format
+msgid "failed to run command '%s': %s\n"
+msgstr ""
+
+#: http.c:399
+#, c-format
+msgid "negative value for http.postbuffer; defaulting to %d"
+msgstr ""
+
+#: http.c:420
+msgid "Delegation control is not supported with cURL < 7.22.0"
+msgstr ""
+
+#: http.c:429
+msgid "Public key pinning not supported with cURL < 7.44.0"
+msgstr ""
+
+#: http.c:910
+msgid "CURLSSLOPT_NO_REVOKE not supported with cURL < 7.44.0"
+msgstr ""
+
+#: http.c:989
+msgid "Protocol restrictions not supported with cURL < 7.19.4"
+msgstr ""
+
+#: http.c:1132
+#, c-format
+msgid "Unsupported SSL backend '%s'. Supported SSL backends:"
+msgstr ""
+
+#: http.c:1139
+#, c-format
+msgid "Could not set SSL backend to '%s': cURL was built without SSL backends"
+msgstr ""
+
+#: http.c:1143
+#, c-format
+msgid "Could not set SSL backend to '%s': already set"
+msgstr ""
+
+#: http.c:2025
+#, c-format
+msgid ""
+"unable to update url base from redirection:\n"
+"  asked for: %s\n"
+"   redirect: %s"
+msgstr ""
+
+#: remote-curl.c:183
+#, c-format
+msgid "invalid quoting in push-option value: '%s'"
+msgstr ""
+
+#: remote-curl.c:307
+#, c-format
+msgid "%sinfo/refs not valid: is this a git repository?"
+msgstr ""
+
+#: remote-curl.c:408
+msgid "invalid server response; expected service, got flush packet"
+msgstr ""
+
+#: remote-curl.c:439
+#, c-format
+msgid "invalid server response; got '%s'"
+msgstr ""
+
+#: remote-curl.c:499
+#, c-format
+msgid "repository '%s' not found"
+msgstr ""
+
+#: remote-curl.c:503
+#, c-format
+msgid "Authentication failed for '%s'"
+msgstr ""
+
+#: remote-curl.c:507
+#, c-format
+msgid "unable to access '%s': %s"
+msgstr ""
+
+#: remote-curl.c:513
+#, c-format
+msgid "redirecting to %s"
+msgstr ""
+
+#: remote-curl.c:642
+msgid "shouldn't have EOF when not gentle on EOF"
+msgstr ""
+
+#: remote-curl.c:654
+msgid "remote server sent stateless separator"
+msgstr ""
+
+#: remote-curl.c:724
+msgid "unable to rewind rpc post data - try increasing http.postBuffer"
+msgstr ""
+
+#: remote-curl.c:754
+#, c-format
+msgid "remote-curl: bad line length character: %.4s"
+msgstr ""
+
+#: remote-curl.c:756
+msgid "remote-curl: unexpected response end packet"
+msgstr ""
+
+#: remote-curl.c:832
+#, c-format
+msgid "RPC failed; %s"
+msgstr ""
+
+#: remote-curl.c:872
+msgid "cannot handle pushes this big"
+msgstr ""
+
+#: remote-curl.c:987
+#, c-format
+msgid "cannot deflate request; zlib deflate error %d"
+msgstr ""
+
+#: remote-curl.c:991
+#, c-format
+msgid "cannot deflate request; zlib end error %d"
+msgstr ""
+
+#: remote-curl.c:1041
+#, c-format
+msgid "%d bytes of length header were received"
+msgstr ""
+
+#: remote-curl.c:1043
+#, c-format
+msgid "%d bytes of body are still expected"
+msgstr ""
+
+#: remote-curl.c:1132
+msgid "dumb http transport does not support shallow capabilities"
+msgstr ""
+
+#: remote-curl.c:1147
+msgid "fetch failed."
+msgstr ""
+
+#: remote-curl.c:1193
+msgid "cannot fetch by sha1 over smart http"
+msgstr ""
+
+#: remote-curl.c:1237 remote-curl.c:1243
+#, c-format
+msgid "protocol error: expected sha/ref, got '%s'"
+msgstr ""
+
+#: remote-curl.c:1255 remote-curl.c:1373
+#, c-format
+msgid "http transport does not support %s"
+msgstr ""
+
+#: remote-curl.c:1291
+msgid "git-http-push failed"
+msgstr ""
+
+#: remote-curl.c:1479
+msgid "remote-curl: usage: git remote-curl <remote> [<url>]"
+msgstr ""
+
+#: remote-curl.c:1511
+msgid "remote-curl: error reading command stream from git"
+msgstr ""
+
+#: remote-curl.c:1518
+msgid "remote-curl: fetch attempted without a local repo"
+msgstr ""
+
+#: remote-curl.c:1559
+#, c-format
+msgid "remote-curl: unknown command '%s' from git"
+msgstr ""
+
+#: compat/compiler.h:26
+msgid "no compiler information available\n"
+msgstr ""
+
+#: compat/compiler.h:38
+msgid "no libc information available\n"
+msgstr ""
+
+#: list-objects-filter-options.h:91
+msgid "args"
+msgstr ""
+
+#: list-objects-filter-options.h:92
+msgid "object filtering"
+msgstr ""
+
+#: parse-options.h:183
+msgid "expiry-date"
+msgstr ""
+
+#: parse-options.h:197
+msgid "no-op (backward compatibility)"
+msgstr ""
+
+#: parse-options.h:309
+msgid "be more verbose"
+msgstr ""
+
+#: parse-options.h:311
+msgid "be more quiet"
+msgstr ""
+
+#: parse-options.h:317
+msgid "use <n> digits to display object names"
+msgstr ""
+
+#: parse-options.h:336
+msgid "how to strip spaces and #comments from message"
+msgstr ""
+
+#: parse-options.h:337
+msgid "read pathspec from file"
+msgstr ""
+
+#: parse-options.h:338
+msgid ""
+"with --pathspec-from-file, pathspec elements are separated with NUL character"
+msgstr ""
+
+#: ref-filter.h:99
+msgid "key"
+msgstr ""
+
+#: ref-filter.h:99
+msgid "field name to sort on"
+msgstr ""
+
+#: rerere.h:44
+msgid "update the index with reused conflict resolution if possible"
+msgstr ""
+
+#: command-list.h:50
+msgid "Add file contents to the index"
+msgstr ""
+
+#: 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 a GNU 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 ""
+
+#: 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 ""
+
+#: command-list.h:59
+msgid "Collect information for user to file a bug report"
+msgstr ""
+
+#: command-list.h:60
+msgid "Move objects and refs by archive"
+msgstr ""
+
+#: command-list.h:61
+msgid "Provide content or type and size information for repository objects"
+msgstr ""
+
+#: command-list.h:62
+msgid "Display gitattributes information"
+msgstr ""
+
+#: command-list.h:63
+msgid "Debug gitignore / exclude files"
+msgstr ""
+
+#: command-list.h:64
+msgid "Show canonical names and email addresses of contacts"
+msgstr ""
+
+#: command-list.h:65
+msgid "Switch branches or restore working tree files"
+msgstr ""
+
+#: command-list.h:66
+msgid "Copy files from the index to the working tree"
+msgstr ""
+
+#: command-list.h:67
+msgid "Ensures that a reference name is well formed"
+msgstr ""
+
+#: command-list.h:68
+msgid "Find commits yet to be applied to upstream"
+msgstr ""
+
+#: command-list.h:69
+msgid "Apply the changes introduced by some existing commits"
+msgstr ""
+
+#: command-list.h:70
+msgid "Graphical alternative to git-commit"
+msgstr ""
+
+#: command-list.h:71
+msgid "Remove untracked files from the working tree"
+msgstr ""
+
+#: command-list.h:72
+msgid "Clone a repository into a new directory"
+msgstr ""
+
+#: command-list.h:73
+msgid "Display data in columns"
+msgstr ""
+
+#: command-list.h:74
+msgid "Record changes to the repository"
+msgstr ""
+
+#: command-list.h:75
+msgid "Write and verify Git commit-graph files"
+msgstr ""
+
+#: command-list.h:76
+msgid "Create a new commit object"
+msgstr ""
+
+#: command-list.h:77
+msgid "Get and set repository or global options"
+msgstr ""
+
+#: command-list.h:78
+msgid "Count unpacked number of objects and their disk consumption"
+msgstr ""
+
+#: command-list.h:79
+msgid "Retrieve and store user credentials"
+msgstr ""
+
+#: command-list.h:80
+msgid "Helper to temporarily store passwords in memory"
+msgstr ""
+
+#: command-list.h:81
+msgid "Helper to store credentials on disk"
+msgstr ""
+
+#: command-list.h:82
+msgid "Export a single commit to a CVS checkout"
+msgstr ""
+
+#: command-list.h:83
+msgid "Salvage your data out of another SCM people love to hate"
+msgstr ""
+
+#: command-list.h:84
+msgid "A CVS server emulator for Git"
+msgstr ""
+
+#: command-list.h:85
+msgid "A really simple server for Git repositories"
+msgstr ""
+
+#: command-list.h:86
+msgid "Give an object a human readable name based on an available ref"
+msgstr ""
+
+#: command-list.h:87
+msgid "Show changes between commits, commit and working tree, etc"
+msgstr ""
+
+#: command-list.h:88
+msgid "Compares files in the working tree and the index"
+msgstr ""
+
+#: command-list.h:89
+msgid "Compare a tree to the working tree or index"
+msgstr ""
+
+#: command-list.h:90
+msgid "Compares the content and mode of blobs found via two tree objects"
+msgstr ""
+
+#: command-list.h:91
+msgid "Show changes using common diff tools"
+msgstr ""
+
+#: command-list.h:92
+msgid "Git data exporter"
+msgstr ""
+
+#: command-list.h:93
+msgid "Backend for fast Git data importers"
+msgstr ""
+
+#: command-list.h:94
+msgid "Download objects and refs from another repository"
+msgstr ""
+
+#: command-list.h:95
+msgid "Receive missing objects from another repository"
+msgstr ""
+
+#: command-list.h:96
+msgid "Rewrite branches"
+msgstr ""
+
+#: command-list.h:97
+msgid "Produce a merge commit message"
+msgstr ""
+
+#: command-list.h:98
+msgid "Output information on each ref"
+msgstr ""
+
+#: command-list.h:99
+msgid "Run a Git command on a list of repositories"
+msgstr ""
+
+#: command-list.h:100
+msgid "Prepare patches for e-mail submission"
+msgstr ""
+
+#: command-list.h:101
+msgid "Verifies the connectivity and validity of the objects in the database"
+msgstr ""
+
+#: command-list.h:102
+msgid "Cleanup unnecessary files and optimize the local repository"
+msgstr ""
+
+#: command-list.h:103
+msgid "Extract commit ID from an archive created using git-archive"
+msgstr ""
+
+#: command-list.h:104
+msgid "Print lines matching a pattern"
+msgstr ""
+
+#: command-list.h:105
+msgid "A portable graphical interface to Git"
+msgstr ""
+
+#: command-list.h:106
+msgid "Compute object ID and optionally creates a blob from a file"
+msgstr ""
+
+#: command-list.h:107
+msgid "Display help information about Git"
+msgstr ""
+
+#: command-list.h:108
+msgid "Server side implementation of Git over HTTP"
+msgstr ""
+
+#: command-list.h:109
+msgid "Download from a remote Git repository via HTTP"
+msgstr ""
+
+#: command-list.h:110
+msgid "Push objects over HTTP/DAV to another repository"
+msgstr ""
+
+#: command-list.h:111
+msgid "Send a collection of patches from stdin to an IMAP folder"
+msgstr ""
+
+#: command-list.h:112
+msgid "Build pack index file for an existing packed archive"
+msgstr ""
+
+#: command-list.h:113
+msgid "Create an empty Git repository or reinitialize an existing one"
+msgstr ""
+
+#: command-list.h:114
+msgid "Instantly browse your working repository in gitweb"
+msgstr ""
+
+#: command-list.h:115
+msgid "Add or parse structured information in commit messages"
+msgstr ""
+
+#: command-list.h:116
+msgid "The Git repository browser"
+msgstr ""
+
+#: command-list.h:117
+msgid "Show commit logs"
+msgstr ""
+
+#: command-list.h:118
+msgid "Show information about files in the index and the working tree"
+msgstr ""
+
+#: command-list.h:119
+msgid "List references in a remote repository"
+msgstr ""
+
+#: command-list.h:120
+msgid "List the contents of a tree object"
+msgstr ""
+
+#: command-list.h:121
+msgid "Extracts patch and authorship from a single e-mail message"
+msgstr ""
+
+#: command-list.h:122
+msgid "Simple UNIX mbox splitter program"
+msgstr ""
+
+#: command-list.h:123
+msgid "Run tasks to optimize Git repository data"
+msgstr ""
+
+#: command-list.h:124
+msgid "Join two or more development histories together"
+msgstr ""
+
+#: command-list.h:125
+msgid "Find as good common ancestors as possible for a merge"
+msgstr ""
+
+#: command-list.h:126
+msgid "Run a three-way file merge"
+msgstr ""
+
+#: command-list.h:127
+msgid "Run a merge for files needing merging"
+msgstr ""
+
+#: command-list.h:128
+msgid "The standard helper program to use with git-merge-index"
+msgstr ""
+
+#: command-list.h:129
+msgid "Run merge conflict resolution tools to resolve merge conflicts"
+msgstr ""
+
+#: command-list.h:130
+msgid "Show three-way merge without touching index"
+msgstr ""
+
+#: command-list.h:131
+msgid "Write and verify multi-pack-indexes"
+msgstr ""
+
+#: command-list.h:132
+msgid "Creates a tag object with extra validation"
+msgstr ""
+
+#: command-list.h:133
+msgid "Build a tree-object from ls-tree formatted text"
+msgstr ""
+
+#: command-list.h:134
+msgid "Move or rename a file, a directory, or a symlink"
+msgstr ""
+
+#: command-list.h:135
+msgid "Find symbolic names for given revs"
+msgstr ""
+
+#: command-list.h:136
+msgid "Add or inspect object notes"
+msgstr ""
+
+#: command-list.h:137
+msgid "Import from and submit to Perforce repositories"
+msgstr ""
+
+#: command-list.h:138
+msgid "Create a packed archive of objects"
+msgstr ""
+
+#: command-list.h:139
+msgid "Find redundant pack files"
+msgstr ""
+
+#: command-list.h:140
+msgid "Pack heads and tags for efficient repository access"
+msgstr ""
+
+#: command-list.h:141
+msgid "Compute unique ID for a patch"
+msgstr ""
+
+#: command-list.h:142
+msgid "Prune all unreachable objects from the object database"
+msgstr ""
+
+#: command-list.h:143
+msgid "Remove extra objects that are already in pack files"
+msgstr ""
+
+#: command-list.h:144
+msgid "Fetch from and integrate with another repository or a local branch"
+msgstr ""
+
+#: command-list.h:145
+msgid "Update remote refs along with associated objects"
+msgstr ""
+
+#: command-list.h:146
+msgid "Applies a quilt patchset onto the current branch"
+msgstr ""
+
+#: command-list.h:147
+msgid "Compare two commit ranges (e.g. two versions of a branch)"
+msgstr ""
+
+#: command-list.h:148
+msgid "Reads tree information into the index"
+msgstr ""
+
+#: command-list.h:149
+msgid "Reapply commits on top of another base tip"
+msgstr ""
+
+#: command-list.h:150
+msgid "Receive what is pushed into the repository"
+msgstr ""
+
+#: command-list.h:151
+msgid "Manage reflog information"
+msgstr ""
+
+#: command-list.h:152
+msgid "Manage set of tracked repositories"
+msgstr ""
+
+#: command-list.h:153
+msgid "Pack unpacked objects in a repository"
+msgstr ""
+
+#: command-list.h:154
+msgid "Create, list, delete refs to replace objects"
+msgstr ""
+
+#: command-list.h:155
+msgid "Generates a summary of pending changes"
+msgstr ""
+
+#: command-list.h:156
+msgid "Reuse recorded resolution of conflicted merges"
+msgstr ""
+
+#: command-list.h:157
+msgid "Reset current HEAD to the specified state"
+msgstr ""
+
+#: command-list.h:158
+msgid "Restore working tree files"
+msgstr ""
+
+#: command-list.h:159
+msgid "Revert some existing commits"
+msgstr ""
+
+#: command-list.h:160
+msgid "Lists commit objects in reverse chronological order"
+msgstr ""
+
+#: command-list.h:161
+msgid "Pick out and massage parameters"
+msgstr ""
+
+#: command-list.h:162
+msgid "Remove files from the working tree and from the index"
+msgstr ""
+
+#: command-list.h:163
+msgid "Send a collection of patches as emails"
+msgstr ""
+
+#: command-list.h:164
+msgid "Push objects over Git protocol to another repository"
+msgstr ""
+
+#: command-list.h:165
+msgid "Restricted login shell for Git-only SSH access"
+msgstr ""
+
+#: command-list.h:166
+msgid "Summarize 'git log' output"
+msgstr ""
+
+#: command-list.h:167
+msgid "Show various types of objects"
+msgstr ""
+
+#: command-list.h:168
+msgid "Show branches and their commits"
+msgstr ""
+
+#: command-list.h:169
+msgid "Show packed archive index"
+msgstr ""
+
+#: command-list.h:170
+msgid "List references in a local repository"
+msgstr ""
+
+#: command-list.h:171
+msgid "Git's i18n setup code for shell scripts"
+msgstr ""
+
+#: command-list.h:172
+msgid "Common Git shell script setup code"
+msgstr ""
+
+#: command-list.h:173
+msgid "Initialize and modify the sparse-checkout"
+msgstr ""
+
+#: command-list.h:174
+msgid "Stash the changes in a dirty working directory away"
+msgstr ""
+
+#: command-list.h:175
+msgid "Add file contents to the staging area"
+msgstr ""
+
+#: command-list.h:176
+msgid "Show the working tree status"
+msgstr ""
+
+#: command-list.h:177
+msgid "Remove unnecessary whitespace"
+msgstr ""
+
+#: command-list.h:178
+msgid "Initialize, update or inspect submodules"
+msgstr ""
+
+#: command-list.h:179
+msgid "Bidirectional operation between a Subversion repository and Git"
+msgstr ""
+
+#: command-list.h:180
+msgid "Switch branches"
+msgstr ""
+
+#: command-list.h:181
+msgid "Read, modify and delete symbolic refs"
+msgstr ""
+
+#: command-list.h:182
+msgid "Create, list, delete or verify a tag object signed with GPG"
+msgstr ""
+
+#: command-list.h:183
+msgid "Creates a temporary file with a blob's contents"
+msgstr ""
+
+#: command-list.h:184
+msgid "Unpack objects from a packed archive"
+msgstr ""
+
+#: command-list.h:185
+msgid "Register file contents in the working tree to the index"
+msgstr ""
+
+#: command-list.h:186
+msgid "Update the object name stored in a ref safely"
+msgstr ""
+
+#: command-list.h:187
+msgid "Update auxiliary info file to help dumb servers"
+msgstr ""
+
+#: command-list.h:188
+msgid "Send archive back to git-archive"
+msgstr ""
+
+#: command-list.h:189
+msgid "Send objects packed back to git-fetch-pack"
+msgstr ""
+
+#: command-list.h:190
+msgid "Show a Git logical variable"
+msgstr ""
+
+#: command-list.h:191
+msgid "Check the GPG signature of commits"
+msgstr ""
+
+#: command-list.h:192
+msgid "Validate packed Git archive files"
+msgstr ""
+
+#: command-list.h:193
+msgid "Check the GPG signature of tags"
+msgstr ""
+
+#: command-list.h:194
+msgid "Git web interface (web frontend to Git repositories)"
+msgstr ""
+
+#: command-list.h:195
+msgid "Show logs with difference each commit introduces"
+msgstr ""
+
+#: command-list.h:196
+msgid "Manage multiple working trees"
+msgstr ""
+
+#: command-list.h:197
+msgid "Create a tree object from the current index"
+msgstr ""
+
+#: command-list.h:198
+msgid "Defining attributes per path"
+msgstr ""
+
+#: command-list.h:199
+msgid "Git command-line interface and conventions"
+msgstr ""
+
+#: command-list.h:200
+msgid "A Git core tutorial for developers"
+msgstr ""
+
+#: command-list.h:201
+msgid "Providing usernames and passwords to Git"
+msgstr ""
+
+#: command-list.h:202
+msgid "Git for CVS users"
+msgstr ""
+
+#: command-list.h:203
+msgid "Tweaking diff output"
+msgstr ""
+
+#: command-list.h:204
+msgid "A useful minimum set of commands for Everyday Git"
+msgstr ""
+
+#: command-list.h:205
+msgid "Frequently asked questions about using Git"
+msgstr ""
+
+#: command-list.h:206
+msgid "A Git Glossary"
+msgstr ""
+
+#: command-list.h:207
+msgid "Hooks used by Git"
+msgstr ""
+
+#: command-list.h:208
+msgid "Specifies intentionally untracked files to ignore"
+msgstr ""
+
+#: command-list.h:209
+msgid "Map author/committer names and/or E-Mail addresses"
+msgstr ""
+
+#: command-list.h:210
+msgid "Defining submodule properties"
+msgstr ""
+
+#: command-list.h:211
+msgid "Git namespaces"
+msgstr ""
+
+#: command-list.h:212
+msgid "Helper programs to interact with remote repositories"
+msgstr ""
+
+#: command-list.h:213
+msgid "Git Repository Layout"
+msgstr ""
+
+#: command-list.h:214
+msgid "Specifying revisions and ranges for Git"
+msgstr ""
+
+#: command-list.h:215
+msgid "Mounting one repository inside another"
+msgstr ""
+
+#: command-list.h:216
+msgid "A tutorial introduction to Git: part two"
+msgstr ""
+
+#: command-list.h:217
+msgid "A tutorial introduction to Git"
+msgstr ""
+
+#: command-list.h:218
+msgid "An overview of recommended workflows with Git"
+msgstr ""
+
+#: git-bisect.sh:68
+msgid "bisect run failed: no command provided."
+msgstr ""
+
+#: git-bisect.sh:73
+#, sh-format
+msgid "running $command"
+msgstr ""
+
+#: git-bisect.sh:80
+#, sh-format
+msgid ""
+"bisect run failed:\n"
+"exit code $res from '$command' is < 0 or >= 128"
+msgstr ""
+
+#: git-bisect.sh:105
+msgid "bisect run cannot continue any more"
+msgstr ""
+
+#: git-bisect.sh:111
+#, sh-format
+msgid ""
+"bisect run failed:\n"
+"'bisect-state $state' exited with error code $res"
+msgstr ""
+
+#: git-bisect.sh:118
+msgid "bisect run success"
+msgstr ""
+
+#: git-merge-octopus.sh:46
+msgid ""
+"Error: Your local changes to the following files would be overwritten by "
+"merge"
+msgstr ""
+
+#: git-merge-octopus.sh:61
+msgid "Automated merge did not work."
+msgstr ""
+
+#: git-merge-octopus.sh:62
+msgid "Should not be doing an octopus."
+msgstr ""
+
+#: git-merge-octopus.sh:73
+#, sh-format
+msgid "Unable to find common commit with $pretty_name"
+msgstr ""
+
+#: git-merge-octopus.sh:77
+#, sh-format
+msgid "Already up to date with $pretty_name"
+msgstr ""
+
+#: git-merge-octopus.sh:89
+#, sh-format
+msgid "Fast-forwarding to: $pretty_name"
+msgstr ""
+
+#: git-merge-octopus.sh:97
+#, sh-format
+msgid "Trying simple merge with $pretty_name"
+msgstr ""
+
+#: git-merge-octopus.sh:102
+msgid "Simple merge did not work, trying automatic merge."
+msgstr ""
+
+#: git-submodule.sh:179
+msgid "Relative path can only be used from the toplevel of the working tree"
+msgstr ""
+
+#: git-submodule.sh:189
+#, sh-format
+msgid "repo URL: '$repo' must be absolute or begin with ./|../"
+msgstr ""
+
+#: git-submodule.sh:208
+#, sh-format
+msgid "'$sm_path' already exists in the index"
+msgstr ""
+
+#: git-submodule.sh:211
+#, sh-format
+msgid "'$sm_path' already exists in the index and is not a submodule"
+msgstr ""
+
+#: git-submodule.sh:218
+#, sh-format
+msgid "'$sm_path' does not have a commit checked out"
+msgstr ""
+
+#: git-submodule.sh:249
+#, sh-format
+msgid "Adding existing repo at '$sm_path' to the index"
+msgstr ""
+
+#: git-submodule.sh:251
+#, sh-format
+msgid "'$sm_path' already exists and is not a valid git repo"
+msgstr ""
+
+#: git-submodule.sh:259
+#, sh-format
+msgid "A git directory for '$sm_name' is found locally with remote(s):"
+msgstr ""
+
+#: git-submodule.sh:261
+#, sh-format
+msgid ""
+"If you want to reuse this local git directory instead of cloning again from\n"
+"  $realrepo\n"
+"use the '--force' option. If the local git directory is not the correct "
+"repo\n"
+"or you are unsure what this means choose another name with the '--name' "
+"option."
+msgstr ""
+
+#: git-submodule.sh:267
+#, sh-format
+msgid "Reactivating local git directory for submodule '$sm_name'."
+msgstr ""
+
+#: git-submodule.sh:279
+#, sh-format
+msgid "Unable to checkout submodule '$sm_path'"
+msgstr ""
+
+#: git-submodule.sh:284
+#, sh-format
+msgid "Failed to add submodule '$sm_path'"
+msgstr ""
+
+#: git-submodule.sh:293
+#, sh-format
+msgid "Failed to register submodule '$sm_path'"
+msgstr ""
+
+#: git-submodule.sh:568
+#, sh-format
+msgid "Unable to find current revision in submodule path '$displaypath'"
+msgstr ""
+
+#: git-submodule.sh:578
+#, sh-format
+msgid "Unable to fetch in submodule path '$sm_path'"
+msgstr ""
+
+#: git-submodule.sh:583
+#, sh-format
+msgid ""
+"Unable to find current ${remote_name}/${branch} revision in submodule path "
+"'$sm_path'"
+msgstr ""
+
+#: git-submodule.sh:601
+#, sh-format
+msgid ""
+"Unable to fetch in submodule path '$displaypath'; trying to directly fetch "
+"$sha1:"
+msgstr ""
+
+#: git-submodule.sh:607
+#, sh-format
+msgid ""
+"Fetched in submodule path '$displaypath', but it did not contain $sha1. "
+"Direct fetching of that commit failed."
+msgstr ""
+
+#: git-submodule.sh:614
+#, sh-format
+msgid "Unable to checkout '$sha1' in submodule path '$displaypath'"
+msgstr ""
+
+#: git-submodule.sh:615
+#, sh-format
+msgid "Submodule path '$displaypath': checked out '$sha1'"
+msgstr ""
+
+#: git-submodule.sh:619
+#, sh-format
+msgid "Unable to rebase '$sha1' in submodule path '$displaypath'"
+msgstr ""
+
+#: git-submodule.sh:620
+#, sh-format
+msgid "Submodule path '$displaypath': rebased into '$sha1'"
+msgstr ""
+
+#: git-submodule.sh:625
+#, sh-format
+msgid "Unable to merge '$sha1' in submodule path '$displaypath'"
+msgstr ""
+
+#: git-submodule.sh:626
+#, sh-format
+msgid "Submodule path '$displaypath': merged in '$sha1'"
+msgstr ""
+
+#: git-submodule.sh:631
+#, sh-format
+msgid "Execution of '$command $sha1' failed in submodule path '$displaypath'"
+msgstr ""
+
+#: git-submodule.sh:632
+#, sh-format
+msgid "Submodule path '$displaypath': '$command $sha1'"
+msgstr ""
+
+#: git-submodule.sh:663
+#, sh-format
+msgid "Failed to recurse into submodule path '$displaypath'"
+msgstr ""
+
+#: git-rebase--preserve-merges.sh:109
+msgid "Applied autostash."
+msgstr ""
+
+#: git-rebase--preserve-merges.sh:112
+#, sh-format
+msgid "Cannot store $stash_sha1"
+msgstr ""
+
+#: git-rebase--preserve-merges.sh:113
+msgid ""
+"Applying autostash resulted in conflicts.\n"
+"Your changes are safe in the stash.\n"
+"You can run \"git stash pop\" or \"git stash drop\" at any time.\n"
+msgstr ""
+
+#: git-rebase--preserve-merges.sh:191
+#, sh-format
+msgid "Rebasing ($new_count/$total)"
+msgstr ""
+
+#: git-rebase--preserve-merges.sh:197
+msgid ""
+"\n"
+"Commands:\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 <commit> = 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--preserve-merges.sh:260
+#, sh-format
+msgid ""
+"You can amend the commit now, with\n"
+"\n"
+"\tgit commit --amend $gpg_sign_opt_quoted\n"
+"\n"
+"Once you are satisfied with your changes, run\n"
+"\n"
+"\tgit rebase --continue"
+msgstr ""
+
+#: git-rebase--preserve-merges.sh:285
+#, sh-format
+msgid "$sha1: not a commit that can be picked"
+msgstr ""
+
+#: git-rebase--preserve-merges.sh:324
+#, sh-format
+msgid "Invalid commit name: $sha1"
+msgstr ""
+
+#: git-rebase--preserve-merges.sh:354
+msgid "Cannot write current commit's replacement sha1"
+msgstr ""
+
+#: git-rebase--preserve-merges.sh:405
+#, sh-format
+msgid "Fast-forward to $sha1"
+msgstr ""
+
+#: git-rebase--preserve-merges.sh:407
+#, sh-format
+msgid "Cannot fast-forward to $sha1"
+msgstr ""
+
+#: git-rebase--preserve-merges.sh:416
+#, sh-format
+msgid "Cannot move HEAD to $first_parent"
+msgstr ""
+
+#: git-rebase--preserve-merges.sh:421
+#, sh-format
+msgid "Refusing to squash a merge: $sha1"
+msgstr ""
+
+#: git-rebase--preserve-merges.sh:439
+#, sh-format
+msgid "Error redoing merge $sha1"
+msgstr ""
+
+#: git-rebase--preserve-merges.sh:448
+#, sh-format
+msgid "Could not pick $sha1"
+msgstr ""
+
+#: git-rebase--preserve-merges.sh:457
+#, sh-format
+msgid "This is the commit message #${n}:"
+msgstr ""
+
+#: git-rebase--preserve-merges.sh:462
+#, sh-format
+msgid "The commit message #${n} will be skipped:"
+msgstr ""
+
+#: git-rebase--preserve-merges.sh:473
+#, 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--preserve-merges.sh:482
+#, sh-format
+msgid "Cannot write $fixup_msg"
+msgstr ""
+
+#: git-rebase--preserve-merges.sh:485
+msgid "This is a combination of 2 commits."
+msgstr ""
+
+#: git-rebase--preserve-merges.sh:526 git-rebase--preserve-merges.sh:569
+#: git-rebase--preserve-merges.sh:572
+#, sh-format
+msgid "Could not apply $sha1... $rest"
+msgstr ""
+
+#: git-rebase--preserve-merges.sh:601
+#, sh-format
+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"
+"you are able to reword the commit."
+msgstr ""
+
+#: git-rebase--preserve-merges.sh:616
+#, sh-format
+msgid "Stopped at $sha1_abbrev... $rest"
+msgstr ""
+
+#: git-rebase--preserve-merges.sh:631
+#, sh-format
+msgid "Cannot '$squash_style' without a previous commit"
+msgstr ""
+
+#: git-rebase--preserve-merges.sh:673
+#, sh-format
+msgid "Executing: $rest"
+msgstr ""
+
+#: git-rebase--preserve-merges.sh:681
+#, sh-format
+msgid "Execution failed: $rest"
+msgstr ""
+
+#: git-rebase--preserve-merges.sh:683
+msgid "and made changes to the index and/or the working tree"
+msgstr ""
+
+#: git-rebase--preserve-merges.sh:685
+msgid ""
+"You can fix the problem, and then run\n"
+"\n"
+"\tgit rebase --continue"
+msgstr ""
+
+#. TRANSLATORS: after these lines is a command to be issued by the user
+#: git-rebase--preserve-merges.sh:698
+#, sh-format
+msgid ""
+"Execution succeeded: $rest\n"
+"but left changes to the index and/or the working tree\n"
+"Commit or stash your changes, and then run\n"
+"\n"
+"\tgit rebase --continue"
+msgstr ""
+
+#: git-rebase--preserve-merges.sh:709
+#, sh-format
+msgid "Unknown command: $command $sha1 $rest"
+msgstr ""
+
+#: git-rebase--preserve-merges.sh:710
+msgid "Please fix this using 'git rebase --edit-todo'."
+msgstr ""
+
+#: git-rebase--preserve-merges.sh:745
+#, sh-format
+msgid "Successfully rebased and updated $head_name."
+msgstr ""
+
+#: git-rebase--preserve-merges.sh:802
+msgid "Could not remove CHERRY_PICK_HEAD"
+msgstr ""
+
+#: git-rebase--preserve-merges.sh:807
+#, sh-format
+msgid ""
+"You have staged changes in your working tree.\n"
+"If these changes are meant to be\n"
+"squashed into the previous commit, run:\n"
+"\n"
+"  git commit --amend $gpg_sign_opt_quoted\n"
+"\n"
+"If they are meant to go into a new commit, run:\n"
+"\n"
+"  git commit $gpg_sign_opt_quoted\n"
+"\n"
+"In both cases, once you're done, continue with:\n"
+"\n"
+"  git rebase --continue\n"
+msgstr ""
+
+#: git-rebase--preserve-merges.sh:824
+msgid "Error trying to find the author identity to amend commit"
+msgstr ""
+
+#: git-rebase--preserve-merges.sh:829
+msgid ""
+"You have uncommitted changes in your working tree. Please commit them\n"
+"first and then run 'git rebase --continue' again."
+msgstr ""
+
+#: git-rebase--preserve-merges.sh:834 git-rebase--preserve-merges.sh:838
+msgid "Could not commit staged changes."
+msgstr ""
+
+#: git-rebase--preserve-merges.sh:869 git-rebase--preserve-merges.sh:955
+msgid "Could not execute editor"
+msgstr ""
+
+#: git-rebase--preserve-merges.sh:890
+#, sh-format
+msgid "Could not checkout $switch_to"
+msgstr ""
+
+#: git-rebase--preserve-merges.sh:897
+msgid "No HEAD?"
+msgstr ""
+
+#: git-rebase--preserve-merges.sh:898
+#, sh-format
+msgid "Could not create temporary $state_dir"
+msgstr ""
+
+#: git-rebase--preserve-merges.sh:901
+msgid "Could not mark as interactive"
+msgstr ""
+
+#: git-rebase--preserve-merges.sh:933
+#, sh-format
+msgid "Rebase $shortrevisions onto $shortonto ($todocount command)"
+msgid_plural "Rebase $shortrevisions onto $shortonto ($todocount commands)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: git-rebase--preserve-merges.sh:945
+msgid "Note that empty commits are commented out"
+msgstr ""
+
+#: git-rebase--preserve-merges.sh:987 git-rebase--preserve-merges.sh:992
+msgid "Could not init rewritten commits"
+msgstr ""
+
+#: git-sh-setup.sh:89 git-sh-setup.sh:94
+#, sh-format
+msgid "usage: $dashless $USAGE"
+msgstr ""
+
+#: git-sh-setup.sh:191
+#, sh-format
+msgid "Cannot chdir to $cdup, the toplevel of the working tree"
+msgstr ""
+
+#: git-sh-setup.sh:200 git-sh-setup.sh:207
+#, sh-format
+msgid "fatal: $program_name cannot be used without a working tree."
+msgstr ""
+
+#: git-sh-setup.sh:221
+msgid "Cannot rebase: You have unstaged changes."
+msgstr ""
+
+#: git-sh-setup.sh:224
+msgid "Cannot rewrite branches: You have unstaged changes."
+msgstr ""
+
+#: git-sh-setup.sh:227
+msgid "Cannot pull with rebase: You have unstaged changes."
+msgstr ""
+
+#: git-sh-setup.sh:230
+#, sh-format
+msgid "Cannot $action: You have unstaged changes."
+msgstr ""
+
+#: git-sh-setup.sh:243
+msgid "Cannot rebase: Your index contains uncommitted changes."
+msgstr ""
+
+#: git-sh-setup.sh:246
+msgid "Cannot pull with rebase: Your index contains uncommitted changes."
+msgstr ""
+
+#: git-sh-setup.sh:249
+#, sh-format
+msgid "Cannot $action: Your index contains uncommitted changes."
+msgstr ""
+
+#: git-sh-setup.sh:253
+msgid "Additionally, your index contains uncommitted changes."
+msgstr ""
+
+#: git-sh-setup.sh:373
+msgid "You need to run this command from the toplevel of the working tree."
+msgstr ""
+
+#: git-sh-setup.sh:378
+msgid "Unable to determine absolute path of git directory"
+msgstr ""
+
+#. TRANSLATORS: you can adjust this to align "git add -i" status menu
+#: git-add--interactive.perl:212
+#, perl-format
+msgid "%12s %12s %s"
+msgstr ""
+
+#: git-add--interactive.perl:632
+#, perl-format
+msgid "touched %d path\n"
+msgid_plural "touched %d paths\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: git-add--interactive.perl:1056
+msgid ""
+"If the patch applies cleanly, the edited hunk will immediately be\n"
+"marked for staging."
+msgstr ""
+
+#: git-add--interactive.perl:1059
+msgid ""
+"If the patch applies cleanly, the edited hunk will immediately be\n"
+"marked for stashing."
+msgstr ""
+
+#: git-add--interactive.perl:1062
+msgid ""
+"If the patch applies cleanly, the edited hunk will immediately be\n"
+"marked for unstaging."
+msgstr ""
+
+#: git-add--interactive.perl:1065 git-add--interactive.perl:1074
+#: git-add--interactive.perl:1080
+msgid ""
+"If the patch applies cleanly, the edited hunk will immediately be\n"
+"marked for applying."
+msgstr ""
+
+#: git-add--interactive.perl:1068 git-add--interactive.perl:1071
+#: git-add--interactive.perl:1077
+msgid ""
+"If the patch applies cleanly, the edited hunk will immediately be\n"
+"marked for discarding."
+msgstr ""
+
+#: git-add--interactive.perl:1114
+#, perl-format
+msgid "failed to open hunk edit file for writing: %s"
+msgstr ""
+
+#: git-add--interactive.perl:1121
+#, perl-format
+msgid ""
+"---\n"
+"To remove '%s' lines, make them ' ' lines (context).\n"
+"To remove '%s' lines, delete them.\n"
+"Lines starting with %s will be removed.\n"
+msgstr ""
+
+#: git-add--interactive.perl:1143
+#, perl-format
+msgid "failed to open hunk edit file for reading: %s"
+msgstr ""
+
+#: git-add--interactive.perl:1251
+msgid ""
+"y - stage this hunk\n"
+"n - do not stage this hunk\n"
+"q - quit; do not stage this hunk or any of the remaining ones\n"
+"a - stage this hunk and all later hunks in the file\n"
+"d - do not stage this hunk or any of the later hunks in the file"
+msgstr ""
+
+#: git-add--interactive.perl:1257
+msgid ""
+"y - stash this hunk\n"
+"n - do not stash this hunk\n"
+"q - quit; do not stash this hunk or any of the remaining ones\n"
+"a - stash this hunk and all later hunks in the file\n"
+"d - do not stash this hunk or any of the later hunks in the file"
+msgstr ""
+
+#: git-add--interactive.perl:1263
+msgid ""
+"y - unstage this hunk\n"
+"n - do not unstage this hunk\n"
+"q - quit; do not unstage this hunk or any of the remaining ones\n"
+"a - unstage this hunk and all later hunks in the file\n"
+"d - do not unstage this hunk or any of the later hunks in the file"
+msgstr ""
+
+#: git-add--interactive.perl:1269
+msgid ""
+"y - apply this hunk to index\n"
+"n - do not apply this hunk to index\n"
+"q - quit; do not apply this hunk or any of the remaining ones\n"
+"a - apply this hunk and all later hunks in the file\n"
+"d - do not apply this hunk or any of the later hunks in the file"
+msgstr ""
+
+#: git-add--interactive.perl:1275 git-add--interactive.perl:1293
+msgid ""
+"y - discard this hunk from worktree\n"
+"n - do not discard this hunk from worktree\n"
+"q - quit; do not discard this hunk or any of the remaining ones\n"
+"a - discard this hunk and all later hunks in the file\n"
+"d - do not discard this hunk or any of the later hunks in the file"
+msgstr ""
+
+#: git-add--interactive.perl:1281
+msgid ""
+"y - discard this hunk from index and worktree\n"
+"n - do not discard this hunk from index and worktree\n"
+"q - quit; do not discard this hunk or any of the remaining ones\n"
+"a - discard this hunk and all later hunks in the file\n"
+"d - do not discard this hunk or any of the later hunks in the file"
+msgstr ""
+
+#: git-add--interactive.perl:1287
+msgid ""
+"y - apply this hunk to index and worktree\n"
+"n - do not apply this hunk to index and worktree\n"
+"q - quit; do not apply this hunk or any of the remaining ones\n"
+"a - apply this hunk and all later hunks in the file\n"
+"d - do not apply this hunk or any of the later hunks in the file"
+msgstr ""
+
+#: git-add--interactive.perl:1299
+msgid ""
+"y - apply this hunk to worktree\n"
+"n - do not apply this hunk to worktree\n"
+"q - quit; do not apply this hunk or any of the remaining ones\n"
+"a - apply this hunk and all later hunks in the file\n"
+"d - do not apply this hunk or any of the later hunks in the file"
+msgstr ""
+
+#: git-add--interactive.perl:1314
+msgid ""
+"g - select a hunk to go to\n"
+"/ - search for a hunk matching the given regex\n"
+"j - leave this hunk undecided, see next undecided hunk\n"
+"J - leave this hunk undecided, see next hunk\n"
+"k - leave this hunk undecided, see previous undecided hunk\n"
+"K - leave this hunk undecided, see previous hunk\n"
+"s - split the current hunk into smaller hunks\n"
+"e - manually edit the current hunk\n"
+"? - print help\n"
+msgstr ""
+
+#: git-add--interactive.perl:1345
+msgid "The selected hunks do not apply to the index!\n"
+msgstr ""
+
+#: git-add--interactive.perl:1360
+#, perl-format
+msgid "ignoring unmerged: %s\n"
+msgstr ""
+
+#: git-add--interactive.perl:1479
+#, perl-format
+msgid "Apply mode change to worktree [y,n,q,a,d%s,?]? "
+msgstr ""
+
+#: git-add--interactive.perl:1480
+#, perl-format
+msgid "Apply deletion to worktree [y,n,q,a,d%s,?]? "
+msgstr ""
+
+#: git-add--interactive.perl:1481
+#, perl-format
+msgid "Apply addition to worktree [y,n,q,a,d%s,?]? "
+msgstr ""
+
+#: git-add--interactive.perl:1482
+#, perl-format
+msgid "Apply this hunk to worktree [y,n,q,a,d%s,?]? "
+msgstr ""
+
+#: git-add--interactive.perl:1599
+msgid "No other hunks to goto\n"
+msgstr ""
+
+#: git-add--interactive.perl:1617
+#, perl-format
+msgid "Invalid number: '%s'\n"
+msgstr ""
+
+#: git-add--interactive.perl:1622
+#, 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:1657
+msgid "No other hunks to search\n"
+msgstr ""
+
+#: git-add--interactive.perl:1674
+#, perl-format
+msgid "Malformed search regexp %s: %s\n"
+msgstr ""
+
+#: git-add--interactive.perl:1684
+msgid "No hunk matches the given pattern\n"
+msgstr ""
+
+#: git-add--interactive.perl:1696 git-add--interactive.perl:1718
+msgid "No previous hunk\n"
+msgstr ""
+
+#: git-add--interactive.perl:1705 git-add--interactive.perl:1724
+msgid "No next hunk\n"
+msgstr ""
+
+#: git-add--interactive.perl:1730
+msgid "Sorry, cannot split this hunk\n"
+msgstr ""
+
+#: git-add--interactive.perl:1736
+#, perl-format
+msgid "Split into %d hunk.\n"
+msgid_plural "Split into %d hunks.\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: git-add--interactive.perl:1746
+msgid "Sorry, cannot edit this hunk\n"
+msgstr ""
+
+#. TRANSLATORS: please do not translate the command names
+#. 'status', 'update', 'revert', etc.
+#: git-add--interactive.perl:1811
+msgid ""
+"status        - show paths with changes\n"
+"update        - add working tree state to the staged set of changes\n"
+"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"
+msgstr ""
+
+#: git-add--interactive.perl:1828 git-add--interactive.perl:1840
+#: git-add--interactive.perl:1843 git-add--interactive.perl:1850
+#: git-add--interactive.perl:1853 git-add--interactive.perl:1860
+#: git-add--interactive.perl:1864 git-add--interactive.perl:1870
+msgid "missing --"
+msgstr ""
+
+#: git-add--interactive.perl:1866
+#, perl-format
+msgid "unknown --patch mode: %s"
+msgstr ""
+
+#: git-add--interactive.perl:1872 git-add--interactive.perl:1878
+#, perl-format
+msgid "invalid argument %s, expecting --"
+msgstr ""
+
+#: git-send-email.perl:138
+msgid "local zone differs from GMT by a non-minute interval\n"
+msgstr ""
+
+#: git-send-email.perl:145 git-send-email.perl:151
+msgid "local time offset greater than or equal to 24 hours\n"
+msgstr ""
+
+#: git-send-email.perl:223 git-send-email.perl:229
+msgid "the editor exited uncleanly, aborting everything"
+msgstr ""
+
+#: git-send-email.perl:312
+#, perl-format
+msgid ""
+"'%s' contains an intermediate version of the email you were composing.\n"
+msgstr ""
+
+#: git-send-email.perl:317
+#, perl-format
+msgid "'%s.final' contains the composed email.\n"
+msgstr ""
+
+#: git-send-email.perl:410
+msgid "--dump-aliases incompatible with other options\n"
+msgstr ""
+
+#: git-send-email.perl:484
+msgid ""
+"fatal: found configuration options for 'sendmail'\n"
+"git-send-email is configured with the sendemail.* options - note the 'e'.\n"
+"Set sendemail.forbidSendmailVariables to false to disable this check.\n"
+msgstr ""
+
+#: git-send-email.perl:489 git-send-email.perl:691
+msgid "Cannot run git format-patch from outside a repository\n"
+msgstr ""
+
+#: git-send-email.perl:492
+msgid ""
+"`batch-size` and `relogin` must be specified together (via command-line or "
+"configuration option)\n"
+msgstr ""
+
+#: git-send-email.perl:505
+#, perl-format
+msgid "Unknown --suppress-cc field: '%s'\n"
+msgstr ""
+
+#: git-send-email.perl:536
+#, perl-format
+msgid "Unknown --confirm setting: '%s'\n"
+msgstr ""
+
+#: git-send-email.perl:564
+#, perl-format
+msgid "warning: sendmail alias with quotes is not supported: %s\n"
+msgstr ""
+
+#: git-send-email.perl:566
+#, perl-format
+msgid "warning: `:include:` not supported: %s\n"
+msgstr ""
+
+#: git-send-email.perl:568
+#, perl-format
+msgid "warning: `/file` or `|pipe` redirection not supported: %s\n"
+msgstr ""
+
+#: git-send-email.perl:573
+#, perl-format
+msgid "warning: sendmail line is not recognized: %s\n"
+msgstr ""
+
+#: git-send-email.perl:657
+#, perl-format
+msgid ""
+"File '%s' exists but it could also be the range of commits\n"
+"to produce patches for.  Please disambiguate by...\n"
+"\n"
+"    * Saying \"./%s\" if you mean a file; or\n"
+"    * Giving --format-patch option if you mean a range.\n"
+msgstr ""
+
+#: git-send-email.perl:678
+#, perl-format
+msgid "Failed to opendir %s: %s"
+msgstr ""
+
+#: git-send-email.perl:702
+#, perl-format
+msgid ""
+"fatal: %s: %s\n"
+"warning: no patches were sent\n"
+msgstr ""
+
+#: git-send-email.perl:713
+msgid ""
+"\n"
+"No patch files specified!\n"
+"\n"
+msgstr ""
+
+#: git-send-email.perl:726
+#, perl-format
+msgid "No subject line in %s?"
+msgstr ""
+
+#: git-send-email.perl:736
+#, perl-format
+msgid "Failed to open for writing %s: %s"
+msgstr ""
+
+#: git-send-email.perl:747
+msgid ""
+"Lines beginning in \"GIT:\" will be removed.\n"
+"Consider including an overall diffstat or table of contents\n"
+"for the patch you are writing.\n"
+"\n"
+"Clear the body content if you don't wish to send a summary.\n"
+msgstr ""
+
+#: git-send-email.perl:771
+#, perl-format
+msgid "Failed to open %s: %s"
+msgstr ""
+
+#: git-send-email.perl:788
+#, perl-format
+msgid "Failed to open %s.final: %s"
+msgstr ""
+
+#: git-send-email.perl:831
+msgid "Summary email is empty, skipping it\n"
+msgstr ""
+
+#. TRANSLATORS: please keep [y/N] as is.
+#: git-send-email.perl:866
+#, perl-format
+msgid "Are you sure you want to use <%s> [y/N]? "
+msgstr ""
+
+#: git-send-email.perl:921
+msgid ""
+"The following files are 8bit, but do not declare a Content-Transfer-"
+"Encoding.\n"
+msgstr ""
+
+#: git-send-email.perl:926
+msgid "Which 8bit encoding should I declare [UTF-8]? "
+msgstr ""
+
+#: git-send-email.perl:934
+#, perl-format
+msgid ""
+"Refusing to send because the patch\n"
+"\t%s\n"
+"has the template subject '*** SUBJECT HERE ***'. Pass --force if you really "
+"want to send.\n"
+msgstr ""
+
+#: git-send-email.perl:953
+msgid "To whom should the emails be sent (if anyone)?"
+msgstr ""
+
+#: git-send-email.perl:971
+#, perl-format
+msgid "fatal: alias '%s' expands to itself\n"
+msgstr ""
+
+#: git-send-email.perl:983
+msgid "Message-ID to be used as In-Reply-To for the first email (if any)? "
+msgstr ""
+
+#: git-send-email.perl:1041 git-send-email.perl:1049
+#, perl-format
+msgid "error: unable to extract a valid address from: %s\n"
+msgstr ""
+
+#. TRANSLATORS: Make sure to include [q] [d] [e] in your
+#. translation. The program will only accept English input
+#. at this point.
+#: git-send-email.perl:1053
+msgid "What to do with this address? ([q]uit|[d]rop|[e]dit): "
+msgstr ""
+
+#: git-send-email.perl:1370
+#, perl-format
+msgid "CA path \"%s\" does not exist"
+msgstr ""
+
+#: git-send-email.perl:1453
+msgid ""
+"    The Cc list above has been expanded by additional\n"
+"    addresses found in the patch commit message. By default\n"
+"    send-email prompts before sending whenever this occurs.\n"
+"    This behavior is controlled by the sendemail.confirm\n"
+"    configuration setting.\n"
+"\n"
+"    For additional information, run 'git send-email --help'.\n"
+"    To retain the current behavior, but squelch this message,\n"
+"    run 'git config --global sendemail.confirm auto'.\n"
+"\n"
+msgstr ""
+
+#. TRANSLATORS: Make sure to include [y] [n] [e] [q] [a] in your
+#. translation. The program will only accept English input
+#. at this point.
+#: git-send-email.perl:1468
+msgid "Send this email? ([y]es|[n]o|[e]dit|[q]uit|[a]ll): "
+msgstr ""
+
+#: git-send-email.perl:1471
+msgid "Send this email reply required"
+msgstr ""
+
+#: git-send-email.perl:1499
+msgid "The required SMTP server is not properly defined."
+msgstr ""
+
+#: git-send-email.perl:1546
+#, perl-format
+msgid "Server does not support STARTTLS! %s"
+msgstr ""
+
+#: git-send-email.perl:1551 git-send-email.perl:1555
+#, perl-format
+msgid "STARTTLS failed! %s"
+msgstr ""
+
+#: git-send-email.perl:1564
+msgid "Unable to initialize SMTP properly. Check config and use --smtp-debug."
+msgstr ""
+
+#: git-send-email.perl:1582
+#, perl-format
+msgid "Failed to send %s\n"
+msgstr ""
+
+#: git-send-email.perl:1585
+#, perl-format
+msgid "Dry-Sent %s\n"
+msgstr ""
+
+#: git-send-email.perl:1585
+#, perl-format
+msgid "Sent %s\n"
+msgstr ""
+
+#: git-send-email.perl:1587
+msgid "Dry-OK. Log says:\n"
+msgstr ""
+
+#: git-send-email.perl:1587
+msgid "OK. Log says:\n"
+msgstr ""
+
+#: git-send-email.perl:1599
+msgid "Result: "
+msgstr ""
+
+#: git-send-email.perl:1602
+msgid "Result: OK\n"
+msgstr ""
+
+#: git-send-email.perl:1620
+#, perl-format
+msgid "can't open file %s"
+msgstr ""
+
+#: git-send-email.perl:1667 git-send-email.perl:1687
+#, perl-format
+msgid "(mbox) Adding cc: %s from line '%s'\n"
+msgstr ""
+
+#: git-send-email.perl:1673
+#, perl-format
+msgid "(mbox) Adding to: %s from line '%s'\n"
+msgstr ""
+
+#: git-send-email.perl:1730
+#, perl-format
+msgid "(non-mbox) Adding cc: %s from line '%s'\n"
+msgstr ""
+
+#: git-send-email.perl:1765
+#, perl-format
+msgid "(body) Adding cc: %s from line '%s'\n"
+msgstr ""
+
+#: git-send-email.perl:1876
+#, perl-format
+msgid "(%s) Could not execute '%s'"
+msgstr ""
+
+#: git-send-email.perl:1883
+#, perl-format
+msgid "(%s) Adding %s: %s from: '%s'\n"
+msgstr ""
+
+#: git-send-email.perl:1887
+#, perl-format
+msgid "(%s) failed to close pipe to '%s'"
+msgstr ""
+
+#: git-send-email.perl:1917
+msgid "cannot send message as 7bit"
+msgstr ""
+
+#: git-send-email.perl:1925
+msgid "invalid transfer encoding"
+msgstr ""
+
+#: git-send-email.perl:1966 git-send-email.perl:2018 git-send-email.perl:2028
+#, perl-format
+msgid "unable to open %s: %s\n"
+msgstr ""
+
+#: git-send-email.perl:1969
+#, perl-format
+msgid "%s: patch contains a line longer than 998 characters"
+msgstr ""
+
+#: git-send-email.perl:1986
+#, perl-format
+msgid "Skipping %s with backup suffix '%s'.\n"
+msgstr ""
+
+#. TRANSLATORS: please keep "[y|N]" as is.
+#: git-send-email.perl:1990
+#, perl-format
+msgid "Do you really want to send %s? [y|N]: "
+msgstr ""
index 99517bdbe050593c3d80b036f4857aa33025cb8b..6bb665e846ad974e2bcb68ec8f605eab202bcfd6 100644 (file)
--- a/po/pl.po
+++ b/po/pl.po
 # Nie podoba się?  Bardzo chętnie zobaczę lepsze tłumaczenie.
 #
 # m4sk1n, m4sk1n@vivaldi.net, 2017.
-# Arusekk <arek_koz@o2.pl>, 2020.
+# Arusekk <arek_koz@o2.pl>, 2020, 2021.
 msgid ""
 msgstr ""
 "Project-Id-Version: git\n"
 "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2020-12-21 07:10+0800\n"
-"PO-Revision-Date: 2020-12-23 23:48+0100\n"
+"POT-Creation-Date: 2021-02-26 22:09+0800\n"
+"PO-Revision-Date: 2021-02-27 17:10+0100\n"
 "Last-Translator: Arusekk <arek_koz@o2.pl>\n"
 "Language-Team: Polish\n"
 "Language: pl\n"
@@ -68,16 +68,16 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10"
 " || n%100>=20) ? 1 : 2);\n"
-"X-Generator: Lokalize 20.08.3\n"
+"X-Generator: Lokalize 20.12.2\n"
 
 #: add-interactive.c:376
 #, c-format
 msgid "Huh (%s)?"
 msgstr "Hę (%s)?"
 
-#: add-interactive.c:529 add-interactive.c:830 reset.c:65 sequencer.c:3284
-#: sequencer.c:3735 sequencer.c:3890 builtin/rebase.c:1532
-#: builtin/rebase.c:1955
+#: add-interactive.c:529 add-interactive.c:830 reset.c:65 sequencer.c:3292
+#: sequencer.c:3743 sequencer.c:3898 builtin/rebase.c:1538
+#: builtin/rebase.c:1963
 msgid "could not read index"
 msgstr "nie można odczytać indeksu"
 
@@ -105,7 +105,7 @@ msgstr "Aktualizacja"
 msgid "could not stage '%s'"
 msgstr "nie można przygotować „%s”"
 
-#: add-interactive.c:703 add-interactive.c:892 reset.c:89 sequencer.c:3478
+#: add-interactive.c:703 add-interactive.c:892 reset.c:89 sequencer.c:3486
 msgid "could not write index"
 msgstr "nie można zapisać indeksu"
 
@@ -267,7 +267,7 @@ msgstr "nieprzygotowane"
 
 #: add-interactive.c:1144 apply.c:4987 apply.c:4990 builtin/am.c:2257
 #: builtin/am.c:2260 builtin/bugreport.c:134 builtin/clone.c:124
-#: builtin/fetch.c:147 builtin/merge.c:284 builtin/pull.c:190
+#: builtin/fetch.c:150 builtin/merge.c:285 builtin/pull.c:190
 #: builtin/submodule--helper.c:409 builtin/submodule--helper.c:1818
 #: builtin/submodule--helper.c:1821 builtin/submodule--helper.c:2326
 #: builtin/submodule--helper.c:2329 builtin/submodule--helper.c:2572
@@ -847,7 +847,7 @@ msgstr ""
 msgid "Exiting because of an unresolved conflict."
 msgstr "Wyjście z powodu nierozwiązanego konfliktu."
 
-#: advice.c:281 builtin/merge.c:1369
+#: advice.c:281 builtin/merge.c:1370
 msgid "You have not concluded your merge (MERGE_HEAD exists)."
 msgstr "Nie zwieńczono scalania (MERGE_HEAD istnieje)."
 
@@ -1155,7 +1155,8 @@ msgstr "łatanie nie powiodło się: %s:%ld"
 msgid "cannot checkout %s"
 msgstr "nie można wybrać %s"
 
-#: apply.c:3405 apply.c:3416 apply.c:3462 midx.c:73 setup.c:308
+#: apply.c:3405 apply.c:3416 apply.c:3462 midx.c:73 pack-revindex.c:213
+#: setup.c:308
 #, c-format
 msgid "failed to read %s"
 msgstr "nie można odczytać %s"
@@ -1316,7 +1317,7 @@ msgstr "nie można utworzyć wspierającego składu dla nowo utworzonego pliku %
 msgid "unable to add cache entry for %s"
 msgstr "nie można dodać %s do pamięci podręcznej"
 
-#: apply.c:4374 builtin/bisect--helper.c:524
+#: apply.c:4374 builtin/bisect--helper.c:523
 #, c-format
 msgid "failed to write to '%s'"
 msgstr "nie można pisać do „%s”"
@@ -1353,7 +1354,7 @@ msgstr[2] "Stosowanie łatki %%s z %d odrzuceniami..."
 msgid "truncating .rej filename to %.*s.rej"
 msgstr "ucinanie nazwy pliku .rej do %.*s.rej"
 
-#: apply.c:4576 builtin/fetch.c:927 builtin/fetch.c:1228
+#: apply.c:4576 builtin/fetch.c:933 builtin/fetch.c:1334
 #, c-format
 msgid "cannot open %s"
 msgstr "nie można otworzyć %s"
@@ -1410,7 +1411,7 @@ msgstr[0] "Zastosowano %d wiersz po naprawieniu błędów białych znaków."
 msgstr[1] "Zastosowano %d wiersze po naprawieniu błędów białych znaków."
 msgstr[2] "Zastosowano %d wierszy po naprawieniu błędów białych znaków."
 
-#: apply.c:4960 builtin/add.c:618 builtin/mv.c:304 builtin/rm.c:406
+#: apply.c:4960 builtin/add.c:626 builtin/mv.c:304 builtin/rm.c:406
 msgid "Unable to write new index file"
 msgstr "Nie można zapisać nowego pliku indeksu"
 
@@ -1478,7 +1479,7 @@ msgstr "spróbuj trójstronnego scalania, jeśli łatka się nie stosuje"
 msgid "build a temporary index based on embedded index information"
 msgstr "zbuduj tymczasowy indeks oparty o wbudowane informacje indeksu"
 
-#: apply.c:5025 builtin/checkout-index.c:182 builtin/ls-files.c:525
+#: apply.c:5025 builtin/checkout-index.c:195 builtin/ls-files.c:540
 msgid "paths are separated with NUL character"
 msgstr "ścieżki są rozdzielone znakiem NUL"
 
@@ -1488,7 +1489,7 @@ msgstr "zapewnij przynajmniej <n> wierszy dopasowanego kontekstu"
 
 #: apply.c:5028 builtin/am.c:2245 builtin/interpret-trailers.c:98
 #: builtin/interpret-trailers.c:100 builtin/interpret-trailers.c:102
-#: builtin/pack-objects.c:3562 builtin/rebase.c:1346
+#: builtin/pack-objects.c:3577 builtin/rebase.c:1352
 msgid "action"
 msgstr "działanie"
 
@@ -1516,9 +1517,9 @@ msgstr "zostaw odrzucone skrawki w odpowiednich plikach *.rej"
 msgid "allow overlapping hunks"
 msgstr "zezwól, by skrawki na siebie nachodziły"
 
-#: apply.c:5045 builtin/add.c:329 builtin/check-ignore.c:22
-#: builtin/commit.c:1364 builtin/count-objects.c:98 builtin/fsck.c:775
-#: builtin/log.c:2287 builtin/mv.c:123 builtin/read-tree.c:128
+#: apply.c:5045 builtin/add.c:337 builtin/check-ignore.c:22
+#: builtin/commit.c:1364 builtin/count-objects.c:98 builtin/fsck.c:757
+#: builtin/log.c:2286 builtin/mv.c:123 builtin/read-tree.c:128
 msgid "be verbose"
 msgstr "więcej komunikatów"
 
@@ -1607,14 +1608,14 @@ msgstr "git archive --remote <repozytorium> [--exec <polecenie>] --list"
 msgid "cannot read %s"
 msgstr "nie można odczytać %s"
 
-#: archive.c:345 sequencer.c:459 sequencer.c:1736 sequencer.c:2886
-#: sequencer.c:3327 sequencer.c:3436 builtin/am.c:249 builtin/commit.c:786
-#: builtin/merge.c:1138
+#: archive.c:345 sequencer.c:459 sequencer.c:1744 sequencer.c:2894
+#: sequencer.c:3335 sequencer.c:3444 builtin/am.c:249 builtin/commit.c:786
+#: builtin/merge.c:1139
 #, c-format
 msgid "could not read '%s'"
 msgstr "nie można odczytać „%s”"
 
-#: archive.c:430 builtin/add.c:181 builtin/add.c:594 builtin/rm.c:315
+#: archive.c:430 builtin/add.c:189 builtin/add.c:602 builtin/rm.c:315
 #, c-format
 msgid "pathspec '%s' did not match any files"
 msgstr "ścieżka „%s” nie pasuje do żadnych plików"
@@ -1656,7 +1657,7 @@ msgstr "fmt"
 msgid "archive format"
 msgstr "format archiwum"
 
-#: archive.c:556 builtin/log.c:1765
+#: archive.c:556 builtin/log.c:1764
 msgid "prefix"
 msgstr "prefiks"
 
@@ -1664,11 +1665,11 @@ msgstr "prefiks"
 msgid "prepend prefix to each pathname in the archive"
 msgstr "dodaj prefiks przed każdą ścieżką w archiwum"
 
-#: archive.c:558 archive.c:561 builtin/blame.c:886 builtin/blame.c:890
-#: builtin/blame.c:891 builtin/commit-tree.c:117 builtin/config.c:135
+#: archive.c:558 archive.c:561 builtin/blame.c:884 builtin/blame.c:888
+#: builtin/blame.c:889 builtin/commit-tree.c:117 builtin/config.c:135
 #: builtin/fast-export.c:1207 builtin/fast-export.c:1209
-#: builtin/fast-export.c:1213 builtin/grep.c:919 builtin/hash-object.c:105
-#: builtin/ls-files.c:561 builtin/ls-files.c:564 builtin/notes.c:412
+#: builtin/fast-export.c:1213 builtin/grep.c:920 builtin/hash-object.c:105
+#: builtin/ls-files.c:576 builtin/ls-files.c:579 builtin/notes.c:412
 #: builtin/notes.c:578 builtin/read-tree.c:123 parse-options.h:190
 msgid "file"
 msgstr "plik"
@@ -1833,12 +1834,12 @@ msgstr "Przeszukiwanie: podstawa scalenia musi być sprawdzona\n"
 msgid "a %s revision is needed"
 msgstr "potrzebna jest rewizja %s"
 
-#: bisect.c:941 builtin/notes.c:177 builtin/tag.c:255
+#: bisect.c:941 builtin/notes.c:177 builtin/tag.c:287
 #, c-format
 msgid "could not create file '%s'"
 msgstr "nie można utworzyć pliku „%s”"
 
-#: bisect.c:987 builtin/merge.c:152
+#: bisect.c:987 builtin/merge.c:153
 #, c-format
 msgid "could not read file '%s'"
 msgstr "nie można odczytać pliku „%s”"
@@ -1856,10 +1857,10 @@ msgstr "%s był jednocześnie %s i %s\n"
 #, c-format
 msgid ""
 "No testable commit found.\n"
-"Maybe you started with bad path parameters?\n"
+"Maybe you started with bad path arguments?\n"
 msgstr ""
 "Nie znaleziono sprawdzalnego zapisu.\n"
-"Może zaczęto ze złymi parametrami ścieżek?\n"
+"Może zaczęto ze złymi argumentami ścieżek?\n"
 
 #: bisect.c:1095
 #, c-format
@@ -1892,11 +1893,11 @@ msgstr "--contents i nazwa obiektu ostatniego zapisu wykluczają się"
 msgid "--reverse and --first-parent together require specified latest commit"
 msgstr "--reverse i --first-parent razem wymagają podanego ostatniego zapisu"
 
-#: blame.c:2821 bundle.c:213 ref-filter.c:2272 remote.c:2031 sequencer.c:2138
-#: sequencer.c:4633 submodule.c:855 builtin/commit.c:1045 builtin/log.c:409
-#: builtin/log.c:1023 builtin/log.c:1625 builtin/log.c:2046 builtin/log.c:2336
-#: builtin/merge.c:423 builtin/pack-objects.c:3380 builtin/pack-objects.c:3395
-#: builtin/shortlog.c:267
+#: blame.c:2821 bundle.c:213 ref-filter.c:2202 remote.c:2041 sequencer.c:2146
+#: sequencer.c:4641 submodule.c:856 builtin/commit.c:1045 builtin/log.c:411
+#: builtin/log.c:1016 builtin/log.c:1624 builtin/log.c:2045 builtin/log.c:2335
+#: builtin/merge.c:424 builtin/pack-objects.c:3395 builtin/pack-objects.c:3410
+#: builtin/shortlog.c:255
 msgid "revision walk setup failed"
 msgstr "nie udało się przygotować przejścia rewizji"
 
@@ -2082,7 +2083,7 @@ msgstr "„%s” nie wygląda jak plik wiązki v2 ani v3"
 msgid "unrecognized header: %s%s (%d)"
 msgstr "nierozpoznany nagłówek: %s%s (%d)"
 
-#: bundle.c:136 rerere.c:480 rerere.c:690 sequencer.c:2390 sequencer.c:3176
+#: bundle.c:136 rerere.c:464 rerere.c:674 sequencer.c:2398 sequencer.c:3184
 #: builtin/commit.c:814
 #, c-format
 msgid "could not open '%s'"
@@ -2128,40 +2129,36 @@ msgstr "Nie można uruchomić pack-objects"
 msgid "pack-objects died"
 msgstr "pack-objects padł"
 
-#: bundle.c:379
-msgid "rev-list died"
-msgstr "rev-list padło"
-
-#: bundle.c:428
+#: bundle.c:386
 #, c-format
 msgid "ref '%s' is excluded by the rev-list options"
 msgstr "referencja „%s” jest wyłączona przez opcje listy rewizji"
 
-#: bundle.c:498
+#: bundle.c:490
 #, c-format
 msgid "unsupported bundle version %d"
 msgstr "nieobsługiwana wersja wiązki %d"
 
-#: bundle.c:500
+#: bundle.c:492
 #, c-format
 msgid "cannot write bundle version %d with algorithm %s"
 msgstr "nie można zapisać wersji wiązki %d z algorytmem %s"
 
-#: bundle.c:522 builtin/log.c:209 builtin/log.c:1927 builtin/shortlog.c:408
+#: bundle.c:510 builtin/log.c:210 builtin/log.c:1926 builtin/shortlog.c:396
 #, c-format
 msgid "unrecognized argument: %s"
 msgstr "nierozpoznany argument: %s"
 
-#: bundle.c:530
+#: bundle.c:539
 msgid "Refusing to create empty bundle."
 msgstr "Odmawiam utworzenia pustej wiązki."
 
-#: bundle.c:540
+#: bundle.c:549
 #, c-format
 msgid "cannot create '%s'"
 msgstr "nie można utworzyć „%s”"
 
-#: bundle.c:565
+#: bundle.c:574
 msgid "index-pack died"
 msgstr "index-pack padł"
 
@@ -2170,106 +2167,126 @@ msgstr "index-pack padł"
 msgid "invalid color value: %.*s"
 msgstr "nieprawidłowa wartość koloru: %.*s"
 
-#: commit-graph.c:188 midx.c:47
+#: commit-graph.c:198 midx.c:47
 msgid "invalid hash version"
 msgstr "nieprawidłowa wersja skrótu"
 
-#: commit-graph.c:246
+#: commit-graph.c:219
+msgid "repository contains replace objects; skipping commit-graph"
+msgstr "repozytorium zawiera obiekty zamienne; pomijanie grafu zapisów"
+
+#: commit-graph.c:228
+msgid "repository contains (deprecated) grafts; skipping commit-graph"
+msgstr "repozytorium zawiera (przestarzałe) szczepki; pomijanie grafu zapisów"
+
+#: commit-graph.c:233
+msgid "repository is shallow; skipping commit-graph"
+msgstr "źródłowe repozytorium jest płytkie, pomijanie grafu zapisów"
+
+#: commit-graph.c:264
 msgid "commit-graph file is too small"
 msgstr "plik grafu zapisów jest za mały"
 
-#: commit-graph.c:311
+#: commit-graph.c:329
 #, c-format
 msgid "commit-graph signature %X does not match signature %X"
 msgstr "podpis grafu zapisów %X nie zgadza się z podpisem %X"
 
-#: commit-graph.c:318
+#: commit-graph.c:336
 #, c-format
 msgid "commit-graph version %X does not match version %X"
 msgstr "wersja grafu zapisów %X nie zgadza się z wersją %X"
 
-#: commit-graph.c:325
+#: commit-graph.c:343
 #, c-format
 msgid "commit-graph hash version %X does not match version %X"
 msgstr "wersja skrótu grafu zapisów %X nie zgadza się z wersją %X"
 
-#: commit-graph.c:342
+#: commit-graph.c:360
 #, c-format
 msgid "commit-graph file is too small to hold %u chunks"
 msgstr "plik grafu zapisów jest za mały, żeby przechować %u kawałków"
 
-#: commit-graph.c:361
+#: commit-graph.c:379
 #, c-format
 msgid "commit-graph improper chunk offset %08x%08x"
 msgstr "nieprawidłowe przesunięcie kawałka grafu zapisów %08x%08x"
 
-#: commit-graph.c:433
+#: commit-graph.c:465
 #, c-format
 msgid "commit-graph chunk id %08x appears multiple times"
 msgstr "identyfikator kawałka grafu zapisów %08x pojawia się wiele razy"
 
-#: commit-graph.c:499
+#: commit-graph.c:531
 msgid "commit-graph has no base graphs chunk"
 msgstr "graf zapisów nie ma podstawowego kawałka grafów"
 
-#: commit-graph.c:509
+#: commit-graph.c:541
 msgid "commit-graph chain does not match"
 msgstr "łańcuch grafu zapisów się nie zgadza"
 
-#: commit-graph.c:557
+#: commit-graph.c:589
 #, c-format
 msgid "invalid commit-graph chain: line '%s' not a hash"
 msgstr "nieprawidłowy łańcuch grafu zapisów: wiersz „%s” nie jest skrótem"
 
-#: commit-graph.c:581
+#: commit-graph.c:613
 msgid "unable to find all commit-graph files"
 msgstr "nie znaleziono wszystkich plików grafu zapisów"
 
-#: commit-graph.c:721 commit-graph.c:785
+#: commit-graph.c:794 commit-graph.c:831
 msgid "invalid commit position. commit-graph is likely corrupt"
 msgstr ""
 "nieprawidłowa pozycja zapisu. Graf zapisów jest prawdopodobnie uszkodzony"
 
-#: commit-graph.c:742
+#: commit-graph.c:815
 #, c-format
 msgid "could not find commit %s"
 msgstr "nie znaleziono zapisu %s"
 
-#: commit-graph.c:1036 builtin/am.c:1292
+#: commit-graph.c:848
+msgid "commit-graph requires overflow generation data but has none"
+msgstr "graf zapisów wymaga danych przepełnionych pokoleń, ale ich nie ma"
+
+#: commit-graph.c:1121 builtin/am.c:1292
 #, c-format
 msgid "unable to parse commit %s"
 msgstr "nie można przeanalizować zapisu %s"
 
-#: commit-graph.c:1252 builtin/pack-objects.c:2864
+#: commit-graph.c:1378 builtin/pack-objects.c:2872
 #, c-format
 msgid "unable to get type of object %s"
 msgstr "nie można uzyskać rodzaju obiektu %s"
 
-#: commit-graph.c:1283
+#: commit-graph.c:1409
 msgid "Loading known commits in commit graph"
 msgstr "Ładowanie znanych zapisów w graf zapisów"
 
-#: commit-graph.c:1300
+#: commit-graph.c:1426
 msgid "Expanding reachable commits in commit graph"
 msgstr "Rozwijanie osiągalnych zapisów w grafie zapisów"
 
-#: commit-graph.c:1320
+#: commit-graph.c:1446
 msgid "Clearing commit marks in commit graph"
 msgstr "Czyszczenie znamion zapisów w grafie zapisów"
 
-#: commit-graph.c:1339
+#: commit-graph.c:1465
+msgid "Computing commit graph topological levels"
+msgstr "Obliczanie topologicznych poziomów grafu zapisów"
+
+#: commit-graph.c:1518
 msgid "Computing commit graph generation numbers"
 msgstr "Obliczanie numerów pokoleń grafu zapisów"
 
-#: commit-graph.c:1406
+#: commit-graph.c:1599
 msgid "Computing commit changed paths Bloom filters"
 msgstr "Obliczanie filtrów Blooma zmienionych ścieżek zapisu"
 
-#: commit-graph.c:1483
+#: commit-graph.c:1676
 msgid "Collecting referenced commits"
 msgstr "Zbieranie wspominanych zapisów"
 
-#: commit-graph.c:1508
+#: commit-graph.c:1701
 #, c-format
 msgid "Finding commits for commit graph in %d pack"
 msgid_plural "Finding commits for commit graph in %d packs"
@@ -2277,44 +2294,44 @@ msgstr[0] "Znajdywanie zapisów do grafu zapisów w %d paczce"
 msgstr[1] "Znajdywanie zapisów do grafu zapisów w %d paczkach"
 msgstr[2] "Znajdywanie zapisów do grafu zapisów w %d paczkach"
 
-#: commit-graph.c:1521
+#: commit-graph.c:1714
 #, c-format
 msgid "error adding pack %s"
 msgstr "błąd przy dodawaniu paczki %s"
 
-#: commit-graph.c:1525
+#: commit-graph.c:1718
 #, c-format
 msgid "error opening index for %s"
 msgstr "błąd otwierania indeksu dla %s"
 
-#: commit-graph.c:1562
+#: commit-graph.c:1755
 msgid "Finding commits for commit graph among packed objects"
 msgstr "Znajdywanie zapisów do grafu zapisów wśród spakowanych obiektów"
 
-#: commit-graph.c:1580
+#: commit-graph.c:1773
 msgid "Finding extra edges in commit graph"
 msgstr "Znajdywanie dodatkowych krawędzi w grafie zapisów"
 
-#: commit-graph.c:1628
+#: commit-graph.c:1821
 msgid "failed to write correct number of base graph ids"
 msgstr ""
 "nie można zapisać prawidłowej liczby podstawowych identyfikatorów grafu"
 
-#: commit-graph.c:1670 midx.c:819
+#: commit-graph.c:1863 midx.c:819
 #, c-format
 msgid "unable to create leading directories of %s"
 msgstr "nie można utworzyć wiodących katalogów %s"
 
-#: commit-graph.c:1683
+#: commit-graph.c:1876
 msgid "unable to create temporary graph layer"
 msgstr "nie można utworzyć tymczasowej warstwy grafu"
 
-#: commit-graph.c:1688
+#: commit-graph.c:1881
 #, c-format
 msgid "unable to adjust shared permissions for '%s'"
 msgstr "nie można dostroić współdzielonych uprawnień „%s”"
 
-#: commit-graph.c:1758
+#: commit-graph.c:1966
 #, c-format
 msgid "Writing out commit graph in %d pass"
 msgid_plural "Writing out commit graph in %d passes"
@@ -2322,86 +2339,86 @@ msgstr[0] "Wypisywanie grafu zapisów w %d przebiegu"
 msgstr[1] "Wypisywanie grafu zapisów w %d przebiegach"
 msgstr[2] "Wypisywanie grafu zapisów w %d przebiegach"
 
-#: commit-graph.c:1803
+#: commit-graph.c:2011
 msgid "unable to open commit-graph chain file"
 msgstr "nie można otworzyć pliku łańcucha grafu zapisów"
 
-#: commit-graph.c:1819
+#: commit-graph.c:2027
 msgid "failed to rename base commit-graph file"
 msgstr "nie można zmienić nazwy podstawowego pliku grafu zapisów"
 
-#: commit-graph.c:1839
+#: commit-graph.c:2047
 msgid "failed to rename temporary commit-graph file"
 msgstr "nie można zmienić nazwy tymczasowego pliku grafu zapisów"
 
-#: commit-graph.c:1965
+#: commit-graph.c:2180
 msgid "Scanning merged commits"
 msgstr "Skanowanie scalonych zapisów"
 
-#: commit-graph.c:2009
+#: commit-graph.c:2224
 msgid "Merging commit-graph"
 msgstr "Scalanie grafu zapisów"
 
-#: commit-graph.c:2115
+#: commit-graph.c:2331
 msgid "attempting to write a commit-graph, but 'core.commitGraph' is disabled"
 msgstr "próba wypisania grafu zapisów, ale „core.commitGraph” jest wyłączone"
 
-#: commit-graph.c:2214
+#: commit-graph.c:2438
 msgid "too many commits to write graph"
 msgstr "za dużo zapisów, by wypisać graf"
 
-#: commit-graph.c:2307
+#: commit-graph.c:2536
 msgid "the commit-graph file has incorrect checksum and is likely corrupt"
 msgstr ""
 "plik grafu zapisów ma nieprawidłową sumę kontrolną i jest prawdopodobnie "
 "uszkodzony"
 
-#: commit-graph.c:2317
+#: commit-graph.c:2546
 #, c-format
 msgid "commit-graph has incorrect OID order: %s then %s"
 msgstr "graf zapisów ma nieprawidłową kolejność OID: %s i wtedy %s"
 
-#: commit-graph.c:2327 commit-graph.c:2342
+#: commit-graph.c:2556 commit-graph.c:2571
 #, c-format
 msgid "commit-graph has incorrect fanout value: fanout[%d] = %u != %u"
 msgstr "graf zapisów ma nieprawidłową wartość fanout: fanout[%d] = %u != %u"
 
-#: commit-graph.c:2334
+#: commit-graph.c:2563
 #, c-format
 msgid "failed to parse commit %s from commit-graph"
 msgstr "nie można przetworzyć zapisu %s z grafu zapisów"
 
-#: commit-graph.c:2352
+#: commit-graph.c:2581
 msgid "Verifying commits in commit graph"
 msgstr "Sprawdzanie zapisów w grafie zapisów"
 
-#: commit-graph.c:2367
+#: commit-graph.c:2596
 #, c-format
 msgid "failed to parse commit %s from object database for commit-graph"
 msgstr ""
 "nie można przetworzyć zapisu %s z bazy danych obiektów do grafu zapisów"
 
-#: commit-graph.c:2374
+#: commit-graph.c:2603
 #, c-format
 msgid "root tree OID for commit %s in commit-graph is %s != %s"
 msgstr "OID korzenia drzewa w zapisie %s w grafie zapisów to %s != %s"
 
-#: commit-graph.c:2384
+#: commit-graph.c:2613
 #, c-format
 msgid "commit-graph parent list for commit %s is too long"
 msgstr "lista rodziców grafu zapisów zapisu %s jest za długa"
 
-#: commit-graph.c:2393
+#: commit-graph.c:2622
 #, c-format
 msgid "commit-graph parent for %s is %s != %s"
 msgstr "rodzic grafu zapisów zapisu %s to %s != %s"
 
-#: commit-graph.c:2407
+#: commit-graph.c:2636
 #, c-format
 msgid "commit-graph parent list for commit %s terminates early"
 msgstr "lista rodziców grafu zapisów zapisu %s kończy się przedwcześnie"
 
-#: commit-graph.c:2412
+#: commit-graph.c:2641
 #, c-format
 msgid ""
 "commit-graph has generation number zero for commit %s, but non-zero elsewhere"
@@ -2409,7 +2426,7 @@ msgstr ""
 "graf zapisów ma numer pokolenia zerowy w zapisie %s, ale niezerowy gdzie "
 "indziej"
 
-#: commit-graph.c:2416
+#: commit-graph.c:2645
 #, c-format
 msgid ""
 "commit-graph has non-zero generation number for commit %s, but zero elsewhere"
@@ -2417,18 +2434,18 @@ msgstr ""
 "graf zapisów ma numer pokolenia niezerowy w zapisie %s, ale zerowy gdzie "
 "indziej"
 
-#: commit-graph.c:2432
+#: commit-graph.c:2662
 #, c-format
-msgid "commit-graph generation for commit %s is %u != %u"
-msgstr "pokolenie grafu zapisów zapisu %s to %u != %u"
+msgid "commit-graph generation for commit %s is %<PRIuMAX> < %<PRIuMAX>"
+msgstr "pokolenie grafu zapisów zapisu %s to %<PRIuMAX> < %<PRIuMAX>"
 
-#: commit-graph.c:2438
+#: commit-graph.c:2668
 #, c-format
 msgid "commit date for commit %s in commit-graph is %<PRIuMAX> != %<PRIuMAX>"
 msgstr ""
 "data złożenia w zapisie %s w grafie zapisów to %<PRIuMAX> != %<PRIuMAX>"
 
-#: commit.c:52 sequencer.c:2879 builtin/am.c:359 builtin/am.c:403
+#: commit.c:52 sequencer.c:2887 builtin/am.c:359 builtin/am.c:403
 #: builtin/am.c:1371 builtin/am.c:2018 builtin/replace.c:457
 #, c-format
 msgid "could not parse %s"
@@ -2459,27 +2476,27 @@ msgstr ""
 "Wyłącz ten komunikat uruchamiając\n"
 "„git config advice.graftFileDeprecated false”"
 
-#: commit.c:1172
+#: commit.c:1223
 #, c-format
 msgid "Commit %s has an untrusted GPG signature, allegedly by %s."
 msgstr "Zapis %s ma niezaufany podpis GPG rzekomo od %s."
 
-#: commit.c:1176
+#: commit.c:1227
 #, c-format
 msgid "Commit %s has a bad GPG signature allegedly by %s."
 msgstr "Zapis %s ma zły podpis GPG rzekomo od %s."
 
-#: commit.c:1179
+#: commit.c:1230
 #, c-format
 msgid "Commit %s does not have a GPG signature."
 msgstr "Zapis %s nie ma podpisu GPG."
 
-#: commit.c:1182
+#: commit.c:1233
 #, c-format
 msgid "Commit %s has a good GPG signature by %s\n"
 msgstr "Zapis %s ma dobry podpis GPG od %s\n"
 
-#: commit.c:1436
+#: commit.c:1487
 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"
@@ -2494,7 +2511,7 @@ msgstr ""
 msgid "memory exhausted"
 msgstr "pamięć wyczerpana"
 
-#: config.c:125
+#: config.c:126
 #, c-format
 msgid ""
 "exceeded maximum include depth (%d) while including\n"
@@ -2509,292 +2526,336 @@ msgstr ""
 "\t%s\n"
 "Może to być spowodowane cyklicznymi załączeniami."
 
-#: config.c:141
+#: config.c:142
 #, c-format
 msgid "could not expand include path '%s'"
 msgstr "nie można rozwinąć ścieżki załączeń (include) „%s”"
 
-#: config.c:152
+#: config.c:153
 msgid "relative config includes must come from files"
 msgstr "względne załączenia konfiguracji muszą pochodzić z plików"
 
-#: config.c:198
+#: config.c:199
 msgid "relative config include conditionals must come from files"
 msgstr "względne warunkowe załączenia konfiguracji muszą pochodzić z plików"
 
-#: config.c:378
+#: config.c:396
+#, c-format
+msgid "invalid config format: %s"
+msgstr "nieprawidłowy format ustawień: %s"
+
+#: config.c:400
+#, c-format
+msgid "missing environment variable name for configuration '%.*s'"
+msgstr "brak nazwy zmiennej środowiska dla ustawienia „%.*s”"
+
+#: config.c:405
+#, c-format
+msgid "missing environment variable '%s' for configuration '%.*s'"
+msgstr "brak zmiennej środowiska „%s” dla ustawienia „%.*s”"
+
+#: config.c:442
 #, c-format
 msgid "key does not contain a section: %s"
 msgstr "klucz nie zawiera rozdziału: %s"
 
-#: config.c:384
+#: config.c:448
 #, c-format
 msgid "key does not contain variable name: %s"
 msgstr "klucz nie zawiera nazwy zmiennej: %s"
 
-#: config.c:408 sequencer.c:2580
+#: config.c:472 sequencer.c:2588
 #, c-format
 msgid "invalid key: %s"
 msgstr "nieprawidłowy klucz: %s"
 
-#: config.c:414
+#: config.c:478
 #, c-format
 msgid "invalid key (newline): %s"
 msgstr "błędny klucz (nowy wiersz): %s"
 
-#: config.c:450 config.c:462
+#: config.c:511
+msgid "empty config key"
+msgstr "pusty klucz ustawień"
+
+#: config.c:529 config.c:541
 #, c-format
 msgid "bogus config parameter: %s"
 msgstr "fałszywy parametr konfiguracji: %s"
 
-#: config.c:497
+#: config.c:555 config.c:572 config.c:579 config.c:588
 #, c-format
 msgid "bogus format in %s"
 msgstr "fałszywy format %s"
 
-#: config.c:836
+#: config.c:622
+#, c-format
+msgid "bogus count in %s"
+msgstr "fałszywy licznik w %s"
+
+#: config.c:626
+#, c-format
+msgid "too many entries in %s"
+msgstr "za dużo wpisów w %s"
+
+#: config.c:636
+#, c-format
+msgid "missing config key %s"
+msgstr "brak klucza ustawień %s"
+
+#: config.c:644
+#, c-format
+msgid "missing config value %s"
+msgstr "brakująca wartość ustawienia %s"
+
+#: config.c:995
 #, c-format
 msgid "bad config line %d in blob %s"
 msgstr "zły wiersz konfiguracji %d w blobie %s"
 
-#: config.c:840
+#: config.c:999
 #, c-format
 msgid "bad config line %d in file %s"
 msgstr "zły wiersz konfiguracji %d w pliku %s"
 
-#: config.c:844
+#: config.c:1003
 #, c-format
 msgid "bad config line %d in standard input"
 msgstr "zły wiersz konfiguracji %d na standardowym wejściu"
 
-#: config.c:848
+#: config.c:1007
 #, c-format
 msgid "bad config line %d in submodule-blob %s"
 msgstr "zły wiersz konfiguracji %d w blobie pod-modułu %s"
 
-#: config.c:852
+#: config.c:1011
 #, c-format
 msgid "bad config line %d in command line %s"
 msgstr "zły wiersz konfiguracji %d w wierszu poleceń %s"
 
-#: config.c:856
+#: config.c:1015
 #, c-format
 msgid "bad config line %d in %s"
 msgstr "zły wiersz konfiguracji %d w %s"
 
-#: config.c:993
+#: config.c:1152
 msgid "out of range"
 msgstr "poza zakresem"
 
-#: config.c:993
+#: config.c:1152
 msgid "invalid unit"
 msgstr "nieprawidłowa jednostka"
 
-#: config.c:994
+#: config.c:1153
 #, c-format
 msgid "bad numeric config value '%s' for '%s': %s"
 msgstr "zła liczbowa wartość konfiguracji „%s” dla „%s”: %s"
 
-#: config.c:1013
+#: config.c:1163
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in blob %s: %s"
 msgstr "zła liczbowa wartość konfiguracji „%s” dla „%s” w blobie %s: %s"
 
-#: config.c:1016
+#: config.c:1166
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in file %s: %s"
 msgstr "zła liczbowa wartość konfiguracji „%s” dla „%s” w pliku %s: %s"
 
-#: config.c:1019
+#: config.c:1169
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in standard input: %s"
 msgstr ""
 "zła liczbowa wartość konfiguracji „%s” dla „%s” na standardowym wejściu: %s"
 
-#: config.c:1022
+#: config.c:1172
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in submodule-blob %s: %s"
 msgstr ""
 "zła liczbowa wartość konfiguracji „%s” dla „%s” w blobie pod-modułu %s: %s"
 
-#: config.c:1025
+#: config.c:1175
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in command line %s: %s"
 msgstr ""
 "zła liczbowa wartość konfiguracji „%s” dla „%s” w wierszu poleceń %s: %s"
 
-#: config.c:1028
+#: config.c:1178
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in %s: %s"
 msgstr "zła liczbowa wartość konfiguracji „%s” dla „%s” w %s: %s"
 
-#: config.c:1123
+#: config.c:1194
+#, c-format
+msgid "bad boolean config value '%s' for '%s'"
+msgstr "zła logiczna wartość konfiguracji „%s” w „%s”"
+
+#: config.c:1289
 #, c-format
 msgid "failed to expand user dir in: '%s'"
 msgstr "nie można rozwinąć katalogu użytkownika w: „%s”"
 
-#: config.c:1132
+#: config.c:1298
 #, c-format
 msgid "'%s' for '%s' is not a valid timestamp"
 msgstr "„%s” do „%s” nie jest prawidłowym znacznikiem czasu"
 
-#: config.c:1223
+#: config.c:1391
 #, c-format
 msgid "abbrev length out of range: %d"
 msgstr "długość skrótu poza zakresem: %d"
 
-#: config.c:1237 config.c:1248
+#: config.c:1405 config.c:1416
 #, c-format
 msgid "bad zlib compression level %d"
 msgstr "zły stopień kompresji zlib %d"
 
-#: config.c:1340
+#: config.c:1508
 msgid "core.commentChar should only be one character"
 msgstr "core.commentChar powinno być tylko jednym znakiem"
 
-#: config.c:1373
+#: config.c:1541
 #, c-format
 msgid "invalid mode for object creation: %s"
 msgstr "nieprawidłowy tryb utworzenia obiektu: %s"
 
-#: config.c:1445
+#: config.c:1613
 #, c-format
 msgid "malformed value for %s"
 msgstr "nieprawidłowa wartość %s"
 
-#: config.c:1471
+#: config.c:1639
 #, c-format
 msgid "malformed value for %s: %s"
 msgstr "nieprawidłowa wartość %s: %s"
 
-#: config.c:1472
+#: config.c:1640
 msgid "must be one of nothing, matching, simple, upstream or current"
 msgstr "musi być jednym z nothing, matching, simple, upstream lub current"
 
-#: config.c:1533 builtin/pack-objects.c:3649
+#: config.c:1701 builtin/pack-objects.c:3666
 #, c-format
 msgid "bad pack compression level %d"
 msgstr "zły stopień kompresji paczki %d"
 
-#: config.c:1655
+#: config.c:1823
 #, c-format
 msgid "unable to load config blob object '%s'"
 msgstr "nie można wczytać konfiguracyjnego obiektu blobu „%s”"
 
-#: config.c:1658
+#: config.c:1826
 #, c-format
 msgid "reference '%s' does not point to a blob"
 msgstr "referencja „%s” nie wskazuje blobu"
 
-#: config.c:1675
+#: config.c:1843
 #, c-format
 msgid "unable to resolve config blob '%s'"
 msgstr "nie można rozwiązać blobu konfiguracji „%s”"
 
-#: config.c:1705
+#: config.c:1873
 #, c-format
 msgid "failed to parse %s"
 msgstr "nie można przetworzyć %s"
 
-#: config.c:1759
+#: config.c:1927
 msgid "unable to parse command-line config"
 msgstr "nie można przeanalizować konfiguracji wiersza poleceń"
 
-#: config.c:2122
+#: config.c:2290
 msgid "unknown error occurred while reading the configuration files"
 msgstr "wystąpił nieznany błąd podczas odczytywania plików konfiguracyjnych"
 
-#: config.c:2296
+#: config.c:2464
 #, c-format
 msgid "Invalid %s: '%s'"
 msgstr "Nieprawidłowy %s: „%s”"
 
-#: config.c:2341
+#: config.c:2509
 #, c-format
 msgid "splitIndex.maxPercentChange value '%d' should be between 0 and 100"
 msgstr "wartość splitIndex.maxPercentChange „%d” powinna być pomiędzy 0 a 100"
 
-#: config.c:2387
+#: config.c:2555
 #, c-format
 msgid "unable to parse '%s' from command-line config"
 msgstr "nie można przetworzyć „%s” z konfiguracji wiersza poleceń"
 
-#: config.c:2389
+#: config.c:2557
 #, c-format
 msgid "bad config variable '%s' in file '%s' at line %d"
 msgstr "zła zmienna konfiguracji „%s” w pliku „%s” w wierszu %d"
 
-#: config.c:2473
+#: config.c:2641
 #, c-format
 msgid "invalid section name '%s'"
 msgstr "nieprawidłowa nazwa rozdziału „%s”"
 
-#: config.c:2505
+#: config.c:2673
 #, c-format
 msgid "%s has multiple values"
 msgstr "%s ma wiele wartości"
 
-#: config.c:2534
+#: config.c:2702
 #, c-format
 msgid "failed to write new configuration file %s"
 msgstr "nie można zapisać nowego pliku konfiguracyjnego %s"
 
-#: config.c:2786 config.c:3112
+#: config.c:2954 config.c:3280
 #, c-format
 msgid "could not lock config file %s"
 msgstr "nie można zablokować pliku konfiguracyjnego %s"
 
-#: config.c:2797
+#: config.c:2965
 #, c-format
 msgid "opening %s"
 msgstr "otwieranie %s"
 
-#: config.c:2834 builtin/config.c:361
+#: config.c:3002 builtin/config.c:361
 #, c-format
 msgid "invalid pattern: %s"
 msgstr "nieprawidłowy wzorzec: %s"
 
-#: config.c:2859
+#: config.c:3027
 #, c-format
 msgid "invalid config file %s"
 msgstr "nieprawidłowy plik konfiguracyjny %s"
 
-#: config.c:2872 config.c:3125
+#: config.c:3040 config.c:3293
 #, c-format
 msgid "fstat on %s failed"
 msgstr "fstat na %s nie powiódł się"
 
-#: config.c:2883
+#: config.c:3051
 #, c-format
 msgid "unable to mmap '%s'"
 msgstr "nie można wykonać mmap „%s”"
 
-#: config.c:2892 config.c:3130
+#: config.c:3060 config.c:3298
 #, c-format
 msgid "chmod on %s failed"
 msgstr "chmod na %s nie powiodło się"
 
-#: config.c:2977 config.c:3227
+#: config.c:3145 config.c:3395
 #, c-format
 msgid "could not write config file %s"
 msgstr "nie można zapisać pliku konfiguracji %s"
 
-#: config.c:3011
+#: config.c:3179
 #, c-format
 msgid "could not set '%s' to '%s'"
 msgstr "nie można ustawić „%s” na „%s”"
 
-#: config.c:3013 builtin/remote.c:657 builtin/remote.c:855 builtin/remote.c:863
+#: config.c:3181 builtin/remote.c:657 builtin/remote.c:855 builtin/remote.c:863
 #, c-format
 msgid "could not unset '%s'"
 msgstr "nie można usunąć ustawienia „%s”"
 
-#: config.c:3103
+#: config.c:3271
 #, c-format
 msgid "invalid section name: %s"
 msgstr "nieprawidłowa nazwa rozdziału: %s"
 
-#: config.c:3270
+#: config.c:3438
 #, c-format
 msgid "missing value for '%s'"
 msgstr "brakująca wartość „%s”"
@@ -2856,45 +2917,45 @@ msgstr "nieprawidłowy pakiet"
 msgid "protocol error: unexpected '%s'"
 msgstr "błąd protokołu: nieoczekiwane „%s”"
 
-#: connect.c:473
+#: connect.c:497
 #, c-format
 msgid "unknown object format '%s' specified by server"
 msgstr "serwer podał nieznany format obiektu „%s”"
 
-#: connect.c:500
+#: connect.c:526
 #, c-format
 msgid "invalid ls-refs response: %s"
 msgstr "nieprawidłowa odpowiedź ls-refs: %s"
 
-#: connect.c:504
+#: connect.c:530
 msgid "expected flush after ref listing"
 msgstr "oczekiwano wypróżnienia po wypisaniu referencji"
 
-#: connect.c:507
+#: connect.c:533
 msgid "expected response end packet after ref listing"
 msgstr "oczekiwano pakietu końca odpowiedzi po wypisaniu referencji"
 
-#: connect.c:640
+#: connect.c:666
 #, c-format
 msgid "protocol '%s' is not supported"
 msgstr "protokół „%s” jest niewspierany"
 
-#: connect.c:691
+#: connect.c:717
 msgid "unable to set SO_KEEPALIVE on socket"
 msgstr "nie można ustawić w gnieździe SO_KEEPALIVE"
 
-#: connect.c:731 connect.c:794
+#: connect.c:757 connect.c:820
 #, c-format
 msgid "Looking up %s ... "
 msgstr "Odnajdywanie %s ... "
 
-#: connect.c:735
+#: connect.c:761
 #, c-format
 msgid "unable to look up %s (port %s) (%s)"
 msgstr "nie można odnaleźć %s (port %s) (%s)"
 
 #. TRANSLATORS: this is the end of "Looking up %s ... "
-#: connect.c:739 connect.c:810
+#: connect.c:765 connect.c:836
 #, c-format
 msgid ""
 "done.\n"
@@ -2903,7 +2964,7 @@ msgstr ""
 "gotowe.\n"
 "Łączenie z %s (port %s) ... "
 
-#: connect.c:761 connect.c:838
+#: connect.c:787 connect.c:864
 #, c-format
 msgid ""
 "unable to connect to %s:\n"
@@ -2913,62 +2974,67 @@ msgstr ""
 "%s"
 
 #. TRANSLATORS: this is the end of "Connecting to %s (port %s) ... "
-#: connect.c:767 connect.c:844
+#: connect.c:793 connect.c:870
 msgid "done."
 msgstr "gotowe."
 
-#: connect.c:798
+#: connect.c:824
 #, c-format
 msgid "unable to look up %s (%s)"
 msgstr "nie odnaleziono %s (%s)"
 
-#: connect.c:804
+#: connect.c:830
 #, c-format
 msgid "unknown port %s"
 msgstr "nieznany port %s"
 
-#: connect.c:941 connect.c:1271
+#: connect.c:967 connect.c:1299
 #, c-format
 msgid "strange hostname '%s' blocked"
 msgstr "zablokowano dziwną nazwę hosta „%s”"
 
-#: connect.c:943
+#: connect.c:969
 #, c-format
 msgid "strange port '%s' blocked"
 msgstr "zablokowano dziwny port „%s”"
 
-#: connect.c:953
+#: connect.c:979
 #, c-format
 msgid "cannot start proxy %s"
 msgstr "nie można uruchomić pośrednika %s"
 
-#: connect.c:1024
+#: connect.c:1050
 msgid "no path specified; see 'git help pull' for valid url syntax"
 msgstr ""
 "nie podano ścieżki; zobacz składnię prawidłowych adresów w „git help pull”"
 
-#: connect.c:1219
+#: connect.c:1190
+msgid "newline is forbidden in git:// hosts and repo paths"
+msgstr ""
+"nie można użyć znaku nowego wiersza w adresach git:// i ścieżkach repozytoriów"
+
+#: connect.c:1247
 msgid "ssh variant 'simple' does not support -4"
 msgstr "wariant SSH „simple” nie wspiera -4"
 
-#: connect.c:1231
+#: connect.c:1259
 msgid "ssh variant 'simple' does not support -6"
 msgstr "wariant SSH „simple” nie wspiera -6"
 
-#: connect.c:1248
+#: connect.c:1276
 msgid "ssh variant 'simple' does not support setting port"
 msgstr "wariant SSH „simple” nie wspiera ustawiania portu"
 
-#: connect.c:1360
+#: connect.c:1388
 #, c-format
 msgid "strange pathname '%s' blocked"
 msgstr "zablokowano dziwną ścieżkę „%s”"
 
-#: connect.c:1408
+#: connect.c:1436
 msgid "unable to fork"
 msgstr "nie można wykonać fork"
 
-#: connected.c:108 builtin/fsck.c:209 builtin/prune.c:45
+#: connected.c:108 builtin/fsck.c:191 builtin/prune.c:45
 msgid "Checking connectivity"
 msgstr "Sprawdzanie spójności"
 
@@ -3241,6 +3307,11 @@ msgstr ""
 msgid "Marked %d islands, done.\n"
 msgstr "Oznaczono %d wysp, gotowe.\n"
 
+#: diff-merges.c:70
+#, c-format
+msgid "unknown value for --diff-merges: %s"
+msgstr "nierozpoznana wartość --diff-merges: %s"
+
 #: diff-lib.c:534
 msgid "--merge-base does not work with ranges"
 msgstr "--merge-base nie działa z zakresami"
@@ -3328,30 +3399,30 @@ msgstr ""
 msgid "external diff died, stopping at %s"
 msgstr "zewnętrzny diff padł, zatrzymano na %s"
 
-#: diff.c:4625
+#: diff.c:4628
 msgid "--name-only, --name-status, --check and -s are mutually exclusive"
 msgstr "--name-only, --name-status, --check i -s się wykluczają"
 
-#: diff.c:4628
+#: diff.c:4631
 msgid "-G, -S and --find-object are mutually exclusive"
 msgstr "-G, -S i --find-object się wykluczają"
 
-#: diff.c:4707
+#: diff.c:4710
 msgid "--follow requires exactly one pathspec"
 msgstr "--follow wymaga dokładnie jednej ścieżki"
 
-#: diff.c:4755
+#: diff.c:4758
 #, c-format
 msgid "invalid --stat value: %s"
 msgstr "nieprawidłowa wartość --stat: %s"
 
-#: diff.c:4760 diff.c:4765 diff.c:4770 diff.c:4775 diff.c:5303
+#: diff.c:4763 diff.c:4768 diff.c:4773 diff.c:4778 diff.c:5306
 #: parse-options.c:197 parse-options.c:201 builtin/commit-graph.c:180
 #, c-format
 msgid "%s expects a numerical value"
 msgstr "%s oczekuje wartości liczbowej"
 
-#: diff.c:4792
+#: diff.c:4795
 #, c-format
 msgid ""
 "Failed to parse --dirstat/-X option parameter:\n"
@@ -3360,197 +3431,197 @@ msgstr ""
 "Nie można przetworzyć parametru opcji --dirstat/-X:\n"
 "%s"
 
-#: diff.c:4877
+#: diff.c:4880
 #, c-format
 msgid "unknown change class '%c' in --diff-filter=%s"
 msgstr "nieznana klasa zmian „%c” w --diff-filter=%s"
 
-#: diff.c:4901
+#: diff.c:4904
 #, c-format
 msgid "unknown value after ws-error-highlight=%.*s"
 msgstr "nieznana wartość po ws-error-highlight=%.*s"
 
-#: diff.c:4915
+#: diff.c:4918
 #, c-format
 msgid "unable to resolve '%s'"
 msgstr "nie można rozwiązać „%s”"
 
-#: diff.c:4965 diff.c:4971
+#: diff.c:4968 diff.c:4974
 #, c-format
 msgid "%s expects <n>/<m> form"
 msgstr "%s oczekuje postaci <n>/<m>"
 
-#: diff.c:4983
+#: diff.c:4986
 #, c-format
 msgid "%s expects a character, got '%s'"
 msgstr "%s oczekuje znaku, otrzymano „%s”"
 
-#: diff.c:5004
+#: diff.c:5007
 #, c-format
 msgid "bad --color-moved argument: %s"
 msgstr "zły argument --color-moved: %s"
 
-#: diff.c:5023
+#: diff.c:5026
 #, c-format
 msgid "invalid mode '%s' in --color-moved-ws"
 msgstr "nieprawidłowy tryb „%s” w --color-moved-ws"
 
-#: diff.c:5063
+#: diff.c:5066
 msgid ""
 "option diff-algorithm accepts \"myers\", \"minimal\", \"patience\" and "
 "\"histogram\""
 msgstr ""
 "opcja diff-algorithm przyjmuje „myers”, „minimal”, „patience” i „histogram”"
 
-#: diff.c:5099 diff.c:5119
+#: diff.c:5102 diff.c:5122
 #, c-format
 msgid "invalid argument to %s"
 msgstr "nieprawidłowy argument do %s"
 
-#: diff.c:5223
+#: diff.c:5226
 #, c-format
 msgid "invalid regex given to -I: '%s'"
 msgstr "w -I podano nieprawidłowe wyrażenie regularne: „%s”"
 
-#: diff.c:5272
+#: diff.c:5275
 #, c-format
 msgid "failed to parse --submodule option parameter: '%s'"
 msgstr "nie można przetworzyć parametru opcji --submodule: „%s”"
 
-#: diff.c:5328
+#: diff.c:5331
 #, c-format
 msgid "bad --word-diff argument: %s"
 msgstr "zły argument --word-diff: %s"
 
-#: diff.c:5351
+#: diff.c:5367
 msgid "Diff output format options"
 msgstr "Opcje formatu wyjściowego różnic"
 
-#: diff.c:5353 diff.c:5359
+#: diff.c:5369 diff.c:5375
 msgid "generate patch"
 msgstr "wygeneruj łatkę"
 
-#: diff.c:5356 builtin/log.c:178
+#: diff.c:5372 builtin/log.c:179
 msgid "suppress diff output"
 msgstr "nie wypisuj różnic"
 
-#: diff.c:5361 diff.c:5475 diff.c:5482
+#: diff.c:5377 diff.c:5491 diff.c:5498
 msgid "<n>"
 msgstr "<n>"
 
-#: diff.c:5362 diff.c:5365
+#: diff.c:5378 diff.c:5381
 msgid "generate diffs with <n> lines context"
 msgstr "wygeneruj różnice z <n> wierszami kontekstu"
 
-#: diff.c:5367
+#: diff.c:5383
 msgid "generate the diff in raw format"
 msgstr "wygeneruj różnice w surowym formacie"
 
-#: diff.c:5370
+#: diff.c:5386
 msgid "synonym for '-p --raw'"
 msgstr "synonim do „-p --raw”"
 
-#: diff.c:5374
+#: diff.c:5390
 msgid "synonym for '-p --stat'"
 msgstr "synonim do „-p --stat”"
 
-#: diff.c:5378
+#: diff.c:5394
 msgid "machine friendly --stat"
 msgstr "--stat czytelne dla maszyny"
 
-#: diff.c:5381
+#: diff.c:5397
 msgid "output only the last line of --stat"
 msgstr "wypisz tylko ostatni wiersz --stat"
 
-#: diff.c:5383 diff.c:5391
+#: diff.c:5399 diff.c:5407
 msgid "<param1,param2>..."
 msgstr "<param1,param2>..."
 
-#: diff.c:5384
+#: diff.c:5400
 msgid ""
 "output the distribution of relative amount of changes for each sub-directory"
 msgstr "wypisz rozkład względnej ilości zmian w każdym podkatalogu"
 
-#: diff.c:5388
+#: diff.c:5404
 msgid "synonym for --dirstat=cumulative"
 msgstr "zamiennik na --dirstat=cumulative"
 
-#: diff.c:5392
+#: diff.c:5408
 msgid "synonym for --dirstat=files,param1,param2..."
 msgstr "synonim do --dirstat=files,param1,param2..."
 
-#: diff.c:5396
+#: diff.c:5412
 msgid "warn if changes introduce conflict markers or whitespace errors"
 msgstr ""
 "ostrzegaj, jeśli zmiany wprowadzają znaczniki konfliktów lub błędy białych "
 "znaków"
 
-#: diff.c:5399
+#: diff.c:5415
 msgid "condensed summary such as creations, renames and mode changes"
 msgstr "zwarte podsumowanie takie jak utworzenia czy zmiany nazw i trybów"
 
-#: diff.c:5402
+#: diff.c:5418
 msgid "show only names of changed files"
 msgstr "pokazuj tylko nazwy zmienionych plików"
 
-#: diff.c:5405
+#: diff.c:5421
 msgid "show only names and status of changed files"
 msgstr "pokazuj tylko nazwy i stan zmienionych plików"
 
-#: diff.c:5407
+#: diff.c:5423
 msgid "<width>[,<name-width>[,<count>]]"
 msgstr "<szerokość>[,<szerokość-nazwy>[,<liczba>]]"
 
-#: diff.c:5408
+#: diff.c:5424
 msgid "generate diffstat"
 msgstr "wygeneruj statystyki różnic"
 
-#: diff.c:5410 diff.c:5413 diff.c:5416
+#: diff.c:5426 diff.c:5429 diff.c:5432
 msgid "<width>"
 msgstr "<szerokość>"
 
-#: diff.c:5411
+#: diff.c:5427
 msgid "generate diffstat with a given width"
 msgstr "wygeneruj statystyki różnic o podanej szerokości"
 
-#: diff.c:5414
+#: diff.c:5430
 msgid "generate diffstat with a given name width"
 msgstr "wygeneruj statystyki różnic o podanej szerokości nazw"
 
-#: diff.c:5417
+#: diff.c:5433
 msgid "generate diffstat with a given graph width"
 msgstr "wygeneruj statystyki różnic o podanej szerokości grafu"
 
-#: diff.c:5419
+#: diff.c:5435
 msgid "<count>"
 msgstr "<liczba>"
 
-#: diff.c:5420
+#: diff.c:5436
 msgid "generate diffstat with limited lines"
 msgstr "wygeneruj statystyki różnic o ograniczonych wierszach"
 
-#: diff.c:5423
+#: diff.c:5439
 msgid "generate compact summary in diffstat"
 msgstr "wygeneruj zwięzłe podsumowanie w statystykach różnic"
 
-#: diff.c:5426
+#: diff.c:5442
 msgid "output a binary diff that can be applied"
 msgstr "wypisz binarne różnice, które mogą być zastosowane"
 
-#: diff.c:5429
+#: diff.c:5445
 msgid "show full pre- and post-image object names on the \"index\" lines"
 msgstr ""
 "pokaż pełne nazwy obiektów wstępnego i końcowego obrazu w wierszach „index”"
 
-#: diff.c:5431
+#: diff.c:5447
 msgid "show colored diff"
 msgstr "pokaż kolorowe różnice"
 
-#: diff.c:5432
+#: diff.c:5448
 msgid "<kind>"
 msgstr "<rodzaj>"
 
-#: diff.c:5433
+#: diff.c:5449
 msgid ""
 "highlight whitespace errors in the 'context', 'old' or 'new' lines in the "
 "diff"
@@ -3558,94 +3629,94 @@ msgstr ""
 "podświetl błędy białych znaków w rodzaju wierszy różnic: „context”, „old” "
 "lub „new”"
 
-#: diff.c:5436
+#: diff.c:5452
 msgid ""
 "do not munge pathnames and use NULs as output field terminators in --raw or "
 "--numstat"
 msgstr ""
 "nie męcz ścieżek i użyj znaków NUL do rozdzielenia pól w --raw lub --numstat"
 
-#: diff.c:5439 diff.c:5442 diff.c:5445 diff.c:5554
+#: diff.c:5455 diff.c:5458 diff.c:5461 diff.c:5570
 msgid "<prefix>"
 msgstr "<prefiks>"
 
-#: diff.c:5440
+#: diff.c:5456
 msgid "show the given source prefix instead of \"a/\""
 msgstr "pokaż podany prefiks źródła zamiast „a/”"
 
-#: diff.c:5443
+#: diff.c:5459
 msgid "show the given destination prefix instead of \"b/\""
 msgstr "pokaż podany prefiks celu zamiast „b/”"
 
-#: diff.c:5446
+#: diff.c:5462
 msgid "prepend an additional prefix to every line of output"
 msgstr "dodatkowy prefiks do dodania przed każdym wierszem wyjścia"
 
-#: diff.c:5449
+#: diff.c:5465
 msgid "do not show any source or destination prefix"
 msgstr "nie pokazuj żadnego prefiksu źródła ani celu"
 
-#: diff.c:5452
+#: diff.c:5468
 msgid "show context between diff hunks up to the specified number of lines"
 msgstr "pokaż kontekst między skrawkami różnic do podanej liczby wierszy"
 
-#: diff.c:5456 diff.c:5461 diff.c:5466
+#: diff.c:5472 diff.c:5477 diff.c:5482
 msgid "<char>"
 msgstr "<znak>"
 
-#: diff.c:5457
+#: diff.c:5473
 msgid "specify the character to indicate a new line instead of '+'"
 msgstr "podaj znak wskazujący nowy wiersz zamiast „+”"
 
-#: diff.c:5462
+#: diff.c:5478
 msgid "specify the character to indicate an old line instead of '-'"
 msgstr "podaj znak wskazujący stary wiersz zamiast „-”"
 
-#: diff.c:5467
+#: diff.c:5483
 msgid "specify the character to indicate a context instead of ' '"
 msgstr "podaj znak wskazujący kontekst zamiast odstępu „ ”"
 
-#: diff.c:5470
+#: diff.c:5486
 msgid "Diff rename options"
 msgstr "Opcje zmiany nazw różnic"
 
-#: diff.c:5471
+#: diff.c:5487
 msgid "<n>[/<m>]"
 msgstr "<n>[/<m>]"
 
-#: diff.c:5472
+#: diff.c:5488
 msgid "break complete rewrite changes into pairs of delete and create"
 msgstr "rozbij zmiany zupełnego przepisania na pary usunięć i utworzeń"
 
-#: diff.c:5476
+#: diff.c:5492
 msgid "detect renames"
 msgstr "wykrywaj zmiany nazw"
 
-#: diff.c:5480
+#: diff.c:5496
 msgid "omit the preimage for deletes"
 msgstr "omiń wstępny obraz przy usunięciach"
 
-#: diff.c:5483
+#: diff.c:5499
 msgid "detect copies"
 msgstr "wykrywaj kopie"
 
-#: diff.c:5487
+#: diff.c:5503
 msgid "use unmodified files as source to find copies"
 msgstr "użyj niezmodyfikowanych plików jako źródła do znalezienia kopii"
 
-#: diff.c:5489
+#: diff.c:5505
 msgid "disable rename detection"
 msgstr "wyłącz wykrywanie zmian nazw"
 
-#: diff.c:5492
+#: diff.c:5508
 msgid "use empty blobs as rename source"
 msgstr "użyj pustych blobów jako źródła zmiany nazwy"
 
-#: diff.c:5494
+#: diff.c:5510
 msgid "continue listing the history of a file beyond renames"
 msgstr "kontynuuj wypisywanie historii pliku poza zmianami nazw"
 
-#: diff.c:5497
+#: diff.c:5513
 msgid ""
 "prevent rename/copy detection if the number of rename/copy targets exceeds "
 "given limit"
@@ -3653,165 +3724,165 @@ msgstr ""
 "powstrzymaj wykrywanie zmian nazw i kopii, jeśli liczba zmian nazw / kopii "
 "przekracza podaną granicę"
 
-#: diff.c:5499
+#: diff.c:5515
 msgid "Diff algorithm options"
 msgstr "Opcje algorytmu różnic"
 
-#: diff.c:5501
+#: diff.c:5517
 msgid "produce the smallest possible diff"
 msgstr "wyprodukuj najmniejsze możliwe różnice"
 
-#: diff.c:5504
+#: diff.c:5520
 msgid "ignore whitespace when comparing lines"
 msgstr "ignoruj zmiany w białych znakach przy porównywaniu plików"
 
-#: diff.c:5507
+#: diff.c:5523
 msgid "ignore changes in amount of whitespace"
 msgstr "ignoruj zmiany w liczbie białych znaków"
 
-#: diff.c:5510
+#: diff.c:5526
 msgid "ignore changes in whitespace at EOL"
 msgstr "ignoruj zmiany w białych znakach na końcu wiersza"
 
-#: diff.c:5513
+#: diff.c:5529
 msgid "ignore carrier-return at the end of line"
 msgstr "ignoruj powrót karetki (CR) na końcu wiersza"
 
-#: diff.c:5516
+#: diff.c:5532
 msgid "ignore changes whose lines are all blank"
 msgstr "ignoruj zmiany, których wszystkie wiersze są puste"
 
-#: diff.c:5518 diff.c:5540 diff.c:5543 diff.c:5588
+#: diff.c:5534 diff.c:5556 diff.c:5559 diff.c:5604
 msgid "<regex>"
 msgstr "<wyr-reg>"
 
-#: diff.c:5519
+#: diff.c:5535
 msgid "ignore changes whose all lines match <regex>"
 msgstr "ignoruj zmiany, których wszystkie wiersze pasują do <wyr-reg>"
 
-#: diff.c:5522
+#: diff.c:5538
 msgid "heuristic to shift diff hunk boundaries for easy reading"
 msgstr ""
 "heurystyka do przesunięcia granic skrawków różnic, aby ułatwić czytanie"
 
-#: diff.c:5525
+#: diff.c:5541
 msgid "generate diff using the \"patience diff\" algorithm"
 msgstr "wygeneruj różnice używając algorytmu „cierpliwych różnic”"
 
-#: diff.c:5529
+#: diff.c:5545
 msgid "generate diff using the \"histogram diff\" algorithm"
 msgstr "wygeneruj różnice używając algorytmu „histogramu różnic”"
 
-#: diff.c:5531
+#: diff.c:5547
 msgid "<algorithm>"
 msgstr "<algorytm>"
 
-#: diff.c:5532
+#: diff.c:5548
 msgid "choose a diff algorithm"
 msgstr "wybierz algorytm różnic"
 
-#: diff.c:5534
+#: diff.c:5550
 msgid "<text>"
 msgstr "<tekst>"
 
-#: diff.c:5535
+#: diff.c:5551
 msgid "generate diff using the \"anchored diff\" algorithm"
 msgstr "wygeneruj różnice używając algorytmu „zakotwiczonych różnic”"
 
-#: diff.c:5537 diff.c:5546 diff.c:5549
+#: diff.c:5553 diff.c:5562 diff.c:5565
 msgid "<mode>"
 msgstr "<tryb>"
 
-#: diff.c:5538
+#: diff.c:5554
 msgid "show word diff, using <mode> to delimit changed words"
 msgstr "pokaż różnice słów, używając <trybu> do rozdzielenia zmienionych słów"
 
-#: diff.c:5541
+#: diff.c:5557
 msgid "use <regex> to decide what a word is"
 msgstr "użyj <wyr-reg>, aby zdecydować, czym jest słowo"
 
-#: diff.c:5544
+#: diff.c:5560
 msgid "equivalent to --word-diff=color --word-diff-regex=<regex>"
 msgstr "równoważne --word-diff=color --word-diff-regex=<wyr-reg>"
 
-#: diff.c:5547
+#: diff.c:5563
 msgid "moved lines of code are colored differently"
 msgstr "przeniesione wiersze kodu są kolorowane inaczej"
 
-#: diff.c:5550
+#: diff.c:5566
 msgid "how white spaces are ignored in --color-moved"
 msgstr "jak są ignorowane białe znaki w --color-moved"
 
-#: diff.c:5553
+#: diff.c:5569
 msgid "Other diff options"
 msgstr "Inne opcje różnic"
 
-#: diff.c:5555
+#: diff.c:5571
 msgid "when run from subdir, exclude changes outside and show relative paths"
 msgstr ""
 "kiedy uruchomione z podkatalogu, pomiń zmiany poza nim i pokaż względne "
 "ścieżki"
 
-#: diff.c:5559
+#: diff.c:5575
 msgid "treat all files as text"
 msgstr "traktuj wszystkie pliki jako tekstowe"
 
-#: diff.c:5561
+#: diff.c:5577
 msgid "swap two inputs, reverse the diff"
 msgstr "zamień dwa wejścia, odwróć różnice"
 
-#: diff.c:5563
+#: diff.c:5579
 msgid "exit with 1 if there were differences, 0 otherwise"
 msgstr "wyjdź z 1 jeśli nie ma różnic, 0 w przeciwnym wypadku"
 
-#: diff.c:5565
+#: diff.c:5581
 msgid "disable all output of the program"
 msgstr "wyłącz całe wyjście programu"
 
-#: diff.c:5567
+#: diff.c:5583
 msgid "allow an external diff helper to be executed"
 msgstr "pozwól wykonać zewnętrzny pomocnik różnic"
 
-#: diff.c:5569
+#: diff.c:5585
 msgid "run external text conversion filters when comparing binary files"
 msgstr ""
 "wykonaj zewnętrzne filtry konwersji tekstu przy porównywaniu plików binarnych"
 
-#: diff.c:5571
+#: diff.c:5587
 msgid "<when>"
 msgstr "<kiedy>"
 
-#: diff.c:5572
+#: diff.c:5588
 msgid "ignore changes to submodules in the diff generation"
 msgstr "ignoruj zmiany w pod-modułach przy generowaniu różnic"
 
-#: diff.c:5575
+#: diff.c:5591
 msgid "<format>"
 msgstr "<format>"
 
-#: diff.c:5576
+#: diff.c:5592
 msgid "specify how differences in submodules are shown"
 msgstr "podaj, jak będą pokazywane różnice w pod-modułach"
 
-#: diff.c:5580
+#: diff.c:5596
 msgid "hide 'git add -N' entries from the index"
 msgstr "ukryj elementy „git add -N” z indeksu"
 
-#: diff.c:5583
+#: diff.c:5599
 msgid "treat 'git add -N' entries as real in the index"
 msgstr "traktuj elementy „git add -N” jako prawdziwe w indeksie"
 
-#: diff.c:5585
+#: diff.c:5601
 msgid "<string>"
 msgstr "<łańcuch>"
 
-#: diff.c:5586
+#: diff.c:5602
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "string"
 msgstr "szukaj różnic, które zmieniają liczbę wystąpień podanego łańcucha"
 
-#: diff.c:5589
+#: diff.c:5605
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "regex"
@@ -3819,55 +3890,67 @@ msgstr ""
 "szukaj różnic, które zmieniają liczbę wystąpień podanego wyrażenia "
 "regularnego"
 
-#: diff.c:5592
+#: diff.c:5608
 msgid "show all changes in the changeset with -S or -G"
 msgstr "pokaż wszystkie zmiany w zestawie z -S lub -G"
 
-#: diff.c:5595
+#: diff.c:5611
 msgid "treat <string> in -S as extended POSIX regular expression"
 msgstr "traktuj <łańcuch> w -S jako rozszerzone wyrażenie regularne POSIX"
 
-#: diff.c:5598
+#: diff.c:5614
 msgid "control the order in which files appear in the output"
 msgstr "ustaw kolejność, w jakiej pliki pojawią się na wyjściu"
 
-#: diff.c:5599
+#: diff.c:5615 diff.c:5618
+msgid "<path>"
+msgstr "<ścieżka>"
+
+#: diff.c:5616
+msgid "show the change in the specified path first"
+msgstr "pokaż najpierw zmianę w podanej ścieżce"
+
+#: diff.c:5619
+msgid "skip the output to the specified path"
+msgstr "pomiń wyjście do podanej ścieżki"
+
+#: diff.c:5621
 msgid "<object-id>"
 msgstr "<id-obiektu>"
 
-#: diff.c:5600
+#: diff.c:5622
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "object"
 msgstr "szukaj różnic, które zmieniają liczbę wystąpień podanego obiektu"
 
-#: diff.c:5602
+#: diff.c:5624
 msgid "[(A|C|D|M|R|T|U|X|B)...[*]]"
 msgstr "[(A|C|D|M|R|T|U|X|B)...[*]]"
 
-#: diff.c:5603
+#: diff.c:5625
 msgid "select files by diff type"
 msgstr "wybierz pliki według rodzaju różnic"
 
-#: diff.c:5605
+#: diff.c:5627
 msgid "<file>"
 msgstr "<plik>"
 
-#: diff.c:5606
+#: diff.c:5628
 msgid "Output to a specific file"
 msgstr "Wyjście do podanego pliku"
 
-#: diff.c:6263
+#: diff.c:6285
 msgid "inexact rename detection was skipped due to too many files."
 msgstr ""
 "pominięto wykrywanie niedokładnych zmian nazw z powodu zbyt wielu plików."
 
-#: diff.c:6266
+#: diff.c:6288
 msgid "only found copies from modified paths due to too many files."
 msgstr ""
 "znaleziono kopie tylko ze zmienionych ścieżek z powodu zbyt wielu plików."
 
-#: diff.c:6269
+#: diff.c:6291
 #, c-format
 msgid ""
 "you may want to set your %s variable to at least %d and retry the command."
@@ -3879,10 +3962,15 @@ msgstr ""
 msgid "failed to read orderfile '%s'"
 msgstr "nie można odczytać pliku kolejności „%s”"
 
-#: diffcore-rename.c:592
+#: diffcore-rename.c:555
 msgid "Performing inexact rename detection"
 msgstr "Wykrywanie niedokładnych zmian nazw"
 
+#: diffcore-rotate.c:29
+#, c-format
+msgid "No such path '%s' in the diff"
+msgstr "W różnicy nie ma ścieżki „%s”"
+
 #: dir.c:578
 #, c-format
 msgid "pathspec '%s' did not match any file(s) known to git"
@@ -3926,17 +4014,17 @@ msgstr "nie można uzyskać nazwy i informacji jądra"
 msgid "untracked cache is disabled on this system or location"
 msgstr "pamięć o nieśledzonych jest wyłączona w tym systemie lub położeniu"
 
-#: dir.c:3520
+#: dir.c:3537
 #, c-format
 msgid "index file corrupt in repo %s"
 msgstr "uszkodzony plik indeksu w repozytorium %s"
 
-#: dir.c:3565 dir.c:3570
+#: dir.c:3582 dir.c:3587
 #, c-format
 msgid "could not create directories for %s"
 msgstr "nie można utworzyć katalogów dla %s"
 
-#: dir.c:3599
+#: dir.c:3616
 #, c-format
 msgid "could not migrate git directory from '%s' to '%s'"
 msgstr "nie można zmigrować katalogu gita z „%s” do „%s”"
@@ -3955,12 +4043,12 @@ msgstr "Filtrowanie zawartości"
 msgid "could not stat file '%s'"
 msgstr "nie można wykonać stat na pliku „%s”"
 
-#: environment.c:150
+#: environment.c:152
 #, c-format
 msgid "bad git namespace path \"%s\""
 msgstr "zła ścieżka przestrzeni nazw gita „%s”"
 
-#: environment.c:337
+#: environment.c:335
 #, c-format
 msgid "could not set GIT_DIR to '%s'"
 msgstr "nie można ustawić GIT_DIR na „%s”"
@@ -3995,32 +4083,32 @@ msgstr "nie można pisać do zdalnego repozytorium"
 msgid "--stateless-rpc requires multi_ack_detailed"
 msgstr "--stateless-rpc wymaga multi_ack_detailed"
 
-#: fetch-pack.c:378 fetch-pack.c:1406
+#: fetch-pack.c:378 fetch-pack.c:1400
 #, c-format
 msgid "invalid shallow line: %s"
 msgstr "nieprawidłowy wiersz shallow: %s"
 
-#: fetch-pack.c:384 fetch-pack.c:1412
+#: fetch-pack.c:384 fetch-pack.c:1406
 #, c-format
 msgid "invalid unshallow line: %s"
 msgstr "nieprawidłowy wiersz unshallow: %s"
 
-#: fetch-pack.c:386 fetch-pack.c:1414
+#: fetch-pack.c:386 fetch-pack.c:1408
 #, c-format
 msgid "object not found: %s"
 msgstr "nie znaleziono obiektu: %s"
 
-#: fetch-pack.c:389 fetch-pack.c:1417
+#: fetch-pack.c:389 fetch-pack.c:1411
 #, c-format
 msgid "error in object: %s"
 msgstr "błąd w obiekcie: %s"
 
-#: fetch-pack.c:391 fetch-pack.c:1419
+#: fetch-pack.c:391 fetch-pack.c:1413
 #, c-format
 msgid "no shallow found: %s"
 msgstr "nie znaleziono shallow: %s"
 
-#: fetch-pack.c:394 fetch-pack.c:1423
+#: fetch-pack.c:394 fetch-pack.c:1417
 #, c-format
 msgid "expected shallow/unshallow, got %s"
 msgstr "oczekiwano shallow/unshallow, otrzymano %s"
@@ -4058,171 +4146,171 @@ msgstr "Oznaczam %s jako gotowe"
 msgid "already have %s (%s)"
 msgstr "już mam %s (%s)"
 
-#: fetch-pack.c:827
+#: fetch-pack.c:821
 msgid "fetch-pack: unable to fork off sideband demultiplexer"
 msgstr "fetch-pack: nie można uruchomić rozdzielania pasma bocznego"
 
-#: fetch-pack.c:835
+#: fetch-pack.c:829
 msgid "protocol error: bad pack header"
 msgstr "błąd protokołu: zły nagłówek paczki"
 
-#: fetch-pack.c:919
+#: fetch-pack.c:913
 #, c-format
 msgid "fetch-pack: unable to fork off %s"
 msgstr "fetch-pack: nie można uruchomić %s"
 
-#: fetch-pack.c:937
+#: fetch-pack.c:931
 #, c-format
 msgid "%s failed"
 msgstr "%s nie powiodło się"
 
-#: fetch-pack.c:939
+#: fetch-pack.c:933
 msgid "error in sideband demultiplexer"
 msgstr "błąd rozdzielania pasma bocznego"
 
-#: fetch-pack.c:982
+#: fetch-pack.c:976
 #, c-format
 msgid "Server version is %.*s"
 msgstr "Wersja serwera to %.*s"
 
-#: fetch-pack.c:990 fetch-pack.c:996 fetch-pack.c:999 fetch-pack.c:1005
-#: fetch-pack.c:1009 fetch-pack.c:1013 fetch-pack.c:1017 fetch-pack.c:1021
-#: fetch-pack.c:1025 fetch-pack.c:1029 fetch-pack.c:1033 fetch-pack.c:1037
-#: fetch-pack.c:1043 fetch-pack.c:1049 fetch-pack.c:1054 fetch-pack.c:1059
+#: fetch-pack.c:984 fetch-pack.c:990 fetch-pack.c:993 fetch-pack.c:999
+#: fetch-pack.c:1003 fetch-pack.c:1007 fetch-pack.c:1011 fetch-pack.c:1015
+#: fetch-pack.c:1019 fetch-pack.c:1023 fetch-pack.c:1027 fetch-pack.c:1031
+#: fetch-pack.c:1037 fetch-pack.c:1043 fetch-pack.c:1048 fetch-pack.c:1053
 #, c-format
 msgid "Server supports %s"
 msgstr "Serwer wspiera %s"
 
-#: fetch-pack.c:992
+#: fetch-pack.c:986
 msgid "Server does not support shallow clients"
 msgstr "Serwer nie wspiera płytkich klientów"
 
-#: fetch-pack.c:1052
+#: fetch-pack.c:1046
 msgid "Server does not support --shallow-since"
 msgstr "Serwer nie wspiera --shallow-since"
 
-#: fetch-pack.c:1057
+#: fetch-pack.c:1051
 msgid "Server does not support --shallow-exclude"
 msgstr "Serwer nie wspiera --shallow-exclude"
 
-#: fetch-pack.c:1061
+#: fetch-pack.c:1055
 msgid "Server does not support --deepen"
 msgstr "Serwer nie wspiera --deepen"
 
-#: fetch-pack.c:1063
+#: fetch-pack.c:1057
 msgid "Server does not support this repository's object format"
 msgstr "Serwer nie wspiera formatu obiektów z tego repozytorium"
 
-#: fetch-pack.c:1076
+#: fetch-pack.c:1070
 msgid "no common commits"
 msgstr "brak wspólnych zapisów"
 
-#: fetch-pack.c:1088 fetch-pack.c:1628
+#: fetch-pack.c:1082 fetch-pack.c:1622
 msgid "git fetch-pack: fetch failed."
 msgstr "git fetch-pack: pobieranie nie powiodło się."
 
-#: fetch-pack.c:1214
+#: fetch-pack.c:1208
 #, c-format
 msgid "mismatched algorithms: client %s; server %s"
 msgstr "niezgodne algorytmy: klient %s; serwer %s"
 
-#: fetch-pack.c:1218
+#: fetch-pack.c:1212
 #, c-format
 msgid "the server does not support algorithm '%s'"
 msgstr "serwer nie wspiera algorytmu „%s”"
 
-#: fetch-pack.c:1238
+#: fetch-pack.c:1232
 msgid "Server does not support shallow requests"
 msgstr "Serwer nie wspiera płytkich żądań"
 
-#: fetch-pack.c:1245
+#: fetch-pack.c:1239
 msgid "Server supports filter"
 msgstr "Serwer wspiera filtrowanie"
 
-#: fetch-pack.c:1284
+#: fetch-pack.c:1278
 msgid "unable to write request to remote"
 msgstr "nie można pisać żądania do zdalnej maszyny"
 
-#: fetch-pack.c:1302
+#: fetch-pack.c:1296
 #, c-format
 msgid "error reading section header '%s'"
 msgstr "błąd odczytu nagłówka rozdziału „%s”"
 
-#: fetch-pack.c:1308
+#: fetch-pack.c:1302
 #, c-format
 msgid "expected '%s', received '%s'"
 msgstr "oczekiwano „%s”, odebrano „%s”"
 
-#: fetch-pack.c:1369
+#: fetch-pack.c:1363
 #, c-format
 msgid "unexpected acknowledgment line: '%s'"
 msgstr "nieoczekiwany wiersz potwierdzenia: „%s”"
 
-#: fetch-pack.c:1374
+#: fetch-pack.c:1368
 #, c-format
 msgid "error processing acks: %d"
 msgstr "błąd przetwarzania potwierdzeń: %d"
 
-#: fetch-pack.c:1384
+#: fetch-pack.c:1378
 msgid "expected packfile to be sent after 'ready'"
 msgstr "oczekiwano pliku paczki wysłanego po „ready”"
 
-#: fetch-pack.c:1386
+#: fetch-pack.c:1380
 msgid "expected no other sections to be sent after no 'ready'"
 msgstr "nie oczekiwano innych rozdziałów wysłanych po braku „ready”"
 
-#: fetch-pack.c:1428
+#: fetch-pack.c:1422
 #, c-format
 msgid "error processing shallow info: %d"
 msgstr "błąd przetwarzania płytkich informacji: %d"
 
-#: fetch-pack.c:1475
+#: fetch-pack.c:1469
 #, c-format
 msgid "expected wanted-ref, got '%s'"
 msgstr "oczekiwano wanted-ref, otrzymano %s"
 
-#: fetch-pack.c:1480
+#: fetch-pack.c:1474
 #, c-format
 msgid "unexpected wanted-ref: '%s'"
 msgstr "nieoczekiwana wanted-ref: „%s”"
 
-#: fetch-pack.c:1485
+#: fetch-pack.c:1479
 #, c-format
 msgid "error processing wanted refs: %d"
 msgstr "błąd przetwarzania chcianych referencji: %d"
 
-#: fetch-pack.c:1515
+#: fetch-pack.c:1509
 msgid "git fetch-pack: expected response end packet"
 msgstr "git fetch-pack: oczekiwano pakietu końca odpowiedzi"
 
-#: fetch-pack.c:1897
+#: fetch-pack.c:1891
 msgid "no matching remote head"
 msgstr "brak pasującego zdalnego czoła"
 
-#: fetch-pack.c:1920 builtin/clone.c:693
+#: fetch-pack.c:1914 builtin/clone.c:693
 msgid "remote did not send all necessary objects"
 msgstr "zdalna maszyna nie przysłała wszystkich potrzebnych obiektów"
 
-#: fetch-pack.c:1947
+#: fetch-pack.c:1941
 #, c-format
 msgid "no such remote ref %s"
 msgstr "nie ma takiej zdalnej referencji %s"
 
-#: fetch-pack.c:1950
+#: fetch-pack.c:1944
 #, c-format
 msgid "Server does not allow request for unadvertised object %s"
 msgstr "Serwer nie pozwala na żądanie o nieogłoszony obiekt %s"
 
-#: gpg-interface.c:272
+#: gpg-interface.c:273
 msgid "could not create temporary file"
 msgstr "nie można utworzyć pliku tymczasowego"
 
-#: gpg-interface.c:275
+#: gpg-interface.c:276
 #, c-format
 msgid "failed writing detached signature to '%s'"
 msgstr "nie można zapisać oddzielonego podpisu do „%s”"
 
-#: gpg-interface.c:457
+#: gpg-interface.c:470
 msgid "gpg failed to sign the data"
 msgstr "gpg nie może podpisać danych"
 
@@ -4231,7 +4319,7 @@ msgstr "gpg nie może podpisać danych"
 msgid "ignore invalid color '%.*s' in log.graphColors"
 msgstr "ignoruj nieprawidłowy kolor „%.*s” w log.graphColors"
 
-#: grep.c:640
+#: grep.c:543
 msgid ""
 "given pattern contains NULL byte (via -f <file>). This is only supported "
 "with -P under PCRE v2"
@@ -4239,18 +4327,18 @@ msgstr ""
 "podany wzorzec zawiera znak NUL (przez -f <plik>). To jest wspierane tylko z "
 "-P pod PCRE v2"
 
-#: grep.c:2100
+#: grep.c:1906
 #, c-format
 msgid "'%s': unable to read %s"
 msgstr "„%s”: nie można przeczytać %s"
 
-#: grep.c:2117 setup.c:176 builtin/clone.c:412 builtin/diff.c:89
+#: grep.c:1923 setup.c:176 builtin/clone.c:412 builtin/diff.c:90
 #: builtin/rm.c:135
 #, c-format
 msgid "failed to stat '%s'"
 msgstr "nie można wykonać stat na „%s”'"
 
-#: grep.c:2128
+#: grep.c:1934
 #, c-format
 msgid "'%s': short read"
 msgstr "„%s”: przeczytano mniej niż powinno być"
@@ -4320,7 +4408,7 @@ msgstr "polecenia gita dostępne gdzie indziej w ścieżce $PATH"
 msgid "These are common Git commands used in various situations:"
 msgstr "Oto częste polecenia Gita używane w różnych sytuacjach:"
 
-#: help.c:365 git.c:99
+#: help.c:365 git.c:100
 #, c-format
 msgid "unsupported command listing type '%s'"
 msgstr "nieobsługiwany rodzaj spisu poleceń „%s”"
@@ -4564,124 +4652,50 @@ msgstr ""
 msgid "Unable to create '%s.lock': %s"
 msgstr "Nie można utworzyć „%s.lock”: %s"
 
-#: ls-refs.c:109
-msgid "expected flush after ls-refs arguments"
-msgstr "oczekiwano wypróżnienia po argumentach ls-refs"
-
-#: merge-ort-wrappers.c:13 merge-recursive.c:3672
-#, c-format
-msgid ""
-"Your local changes to the following files would be overwritten by merge:\n"
-"  %s"
-msgstr ""
-"Twoje lokalne zmiany następujących plików zostaną zastąpione przez "
-"scalenie:\n"
-"  %s"
-
-#: merge-ort-wrappers.c:33 merge-recursive.c:3436
-#, c-format
-msgid "Already up to date!"
-msgstr "Już aktualne!"
-
-#: merge-recursive.c:356
-msgid "(bad commit)\n"
-msgstr "(zły zapis)\n"
-
-#: merge-recursive.c:379
-#, c-format
-msgid "add_cacheinfo failed for path '%s'; merge aborting."
-msgstr "add_cacheinfo nie powiodło się na ścieżce „%s”; przerywanie scalania."
-
-#: merge-recursive.c:388
-#, c-format
-msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
-msgstr ""
-"add_cacheinfo nie udało się odświeżyć na ścieżce „%s”; przerywanie scalania."
-
-#: merge-recursive.c:874
-#, c-format
-msgid "failed to create path '%s'%s"
-msgstr "nie można utworzyć ścieżki „%s”%s"
-
-#: merge-recursive.c:885
-#, c-format
-msgid "Removing %s to make room for subdirectory\n"
-msgstr "Usuwanie %s, aby zrobić miejsce na podkatalog\n"
-
-#: merge-recursive.c:899 merge-recursive.c:918
-msgid ": perhaps a D/F conflict?"
-msgstr ": Może konflikt plik/katalog?"
-
-#: merge-recursive.c:908
-#, c-format
-msgid "refusing to lose untracked file at '%s'"
-msgstr "Odmawiam utraty nieśledzonego pliku w „%s”"
-
-#: merge-recursive.c:949 builtin/cat-file.c:41
-#, c-format
-msgid "cannot read object %s '%s'"
-msgstr "nie można odczytać obiektu %s „%s”"
-
-#: merge-recursive.c:954
-#, c-format
-msgid "blob expected for %s '%s'"
-msgstr "oczekiwano blobu w %s „%s”"
-
-#: merge-recursive.c:979
-#, c-format
-msgid "failed to open '%s': %s"
-msgstr "nie można otworzyć „%s”: %s"
-
-#: merge-recursive.c:990
+#: ls-refs.c:37
 #, c-format
-msgid "failed to symlink '%s': %s"
-msgstr "nie można dowiązać „%s”: „%s”"
+msgid "invalid value '%s' for lsrefs.unborn"
+msgstr "nieprawidłowa wartość „%s” lsrefs.unborn"
 
-#: merge-recursive.c:995
-#, c-format
-msgid "do not know what to do with %06o %s '%s'"
-msgstr "nie wiem, co zrobić z %06o %s „%s”"
+#: ls-refs.c:167
+msgid "expected flush after ls-refs arguments"
+msgstr "oczekiwano wypróżnienia po argumentach ls-refs"
 
-#: merge-recursive.c:1191
+#: merge-ort.c:855 merge-recursive.c:1191
 #, c-format
 msgid "Failed to merge submodule %s (not checked out)"
 msgstr "Nie można scalić pod-modułu %s (nie wybrano)"
 
-#: merge-recursive.c:1198
+#: merge-ort.c:864 merge-recursive.c:1198
 #, c-format
 msgid "Failed to merge submodule %s (commits not present)"
 msgstr "Nie można scalić pod-modułu %s (brak zapisów)"
 
-#: merge-recursive.c:1205
+#: merge-ort.c:873 merge-recursive.c:1205
 #, c-format
 msgid "Failed to merge submodule %s (commits don't follow merge-base)"
 msgstr "Nie można scalić pod-modułu %s (zapisy nie śledzą podstawy scalania)"
 
-#: merge-recursive.c:1213 merge-recursive.c:1225
-#, c-format
-msgid "Fast-forwarding submodule %s to the following commit:"
-msgstr "Przewinięcie pod-modułu %s do następującego zapisu:"
-
-#: merge-recursive.c:1216 merge-recursive.c:1228
+#: merge-ort.c:883 merge-ort.c:890
 #, c-format
-msgid "Fast-forwarding submodule %s"
-msgstr "Przewinięcie pod-modułu %s"
+msgid "Note: Fast-forwarding submodule %s to %s"
+msgstr "Uwaga: Przewinięcie pod-modułu %s do %s"
 
-#: merge-recursive.c:1251
+#: merge-ort.c:911
 #, c-format
-msgid "Failed to merge submodule %s (merge following commits not found)"
-msgstr "Nie można scalić pod-modułu %s (nie znaleziono scalenia po zapisie)"
+msgid "Failed to merge submodule %s"
+msgstr "Nie można scalić pod-modułu %s"
 
-#: merge-recursive.c:1255
+#: merge-ort.c:918
 #, c-format
-msgid "Failed to merge submodule %s (not fast-forward)"
-msgstr "Nie można scalić pod-modułu %s (nie przewija się)"
-
-#: merge-recursive.c:1256
-msgid "Found a possible merge resolution for the submodule:\n"
-msgstr "Znaleziono możliwe rozwiązanie scalenia dla pod-modułu:\n"
+msgid ""
+"Failed to merge submodule %s, but a possible merge resolution exists:\n"
+"%s\n"
+msgstr ""
+"Nie można scalić pod-modułu %s, ale istnieje możliwe rozwiązanie:\n"
+"%s\n"
 
-#: merge-recursive.c:1259
+#: merge-ort.c:922 merge-recursive.c:1259
 #, c-format
 msgid ""
 "If this is correct simply add it to the index for example\n"
@@ -4698,71 +4712,341 @@ msgstr ""
 "\n"
 "które przyjmie tylko tę sugestię.\n"
 
-#: merge-recursive.c:1268
+#: merge-ort.c:935
 #, c-format
-msgid "Failed to merge submodule %s (multiple merges found)"
-msgstr "Nie można scalić pod-modułu %s (znaleziono wiele scaleń)"
+msgid ""
+"Failed to merge submodule %s, but multiple possible merges exist:\n"
+"%s"
+msgstr ""
+"Nie można scalić pod-modułu %s, ale istnieją możliwe scalenia:\n"
+"%s"
 
-#: merge-recursive.c:1341
+#: merge-ort.c:1094 merge-recursive.c:1341
 msgid "Failed to execute internal merge"
 msgstr "Nie można wykonać wewnętrznego scalenia"
 
-#: merge-recursive.c:1346
+#: merge-ort.c:1099 merge-recursive.c:1346
 #, c-format
 msgid "Unable to add %s to database"
 msgstr "Nie można dodać %s do bazy danych"
 
-#: merge-recursive.c:1378
+#: merge-ort.c:1106 merge-recursive.c:1378
 #, c-format
 msgid "Auto-merging %s"
 msgstr "Auto-scalanie %s"
 
-#: merge-recursive.c:1402
+#: merge-ort.c:1245 merge-recursive.c:2100
 #, c-format
-msgid "Error: Refusing to lose untracked file at %s; writing to %s instead."
+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 ""
-"Błąd: Odmawiam utraty nieśledzonego pliku w %s; zamiast tego zapisywanie do "
-"%s."
+"KONFLIKT (domyślna zmiana nazwy katalogu): Istniejący plik/katalog %s "
+"zawadza domyślnej zmianie nazwy wstawiając tam następujące ścieżki: %s."
 
-#: merge-recursive.c:1474
+#: merge-ort.c:1255 merge-recursive.c:2110
 #, c-format
 msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
-"in tree."
+"CONFLICT (implicit dir rename): Cannot map more than one path to %s; "
+"implicit directory renames tried to put these paths there: %s"
 msgstr ""
-"KONFLIKT (%s/usunięcie): %s usunięto w %s a %s w %s. Wersja %s pliku %s "
-"pozostaje w drzewie."
+"KONFLIKT (domyślna zmiana nazwy katalogu): Nie można dopasować więcej niż "
+"jednej ścieżki do %s; domyślna zmiana nazwy próbowała wstawić tam "
+"następujące ścieżki: %s"
 
-#: merge-recursive.c:1479
+#: merge-ort.c:1438
 #, c-format
 msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
-"left in tree."
+"CONFLICT (directory rename split): Unclear where to rename %s to; it was "
+"renamed to multiple other directories, with no destination getting a "
+"majority of the files."
 msgstr ""
-"KONFLIKT (%s/usunięcie): %s usunięto w %s a %s do %s w %s. Wersja %s pliku "
-"%s pozostaje w drzewie."
+"KONFLIKT (podział zmiany nazwy katalogu): Nie ma pewności, jak zmienić nazwę "
+"%s; jego nazwa została zmieniona na wiele innych katalogów, a "
+"żaden z celów nie dostał większości plików."
 
-#: merge-recursive.c:1486
+#: merge-ort.c:1604 merge-recursive.c:2447
 #, c-format
 msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
-"in tree at %s."
+"WARNING: Avoiding applying %s -> %s rename to %s, because %s itself was "
+"renamed."
 msgstr ""
-"KONFLIKT (%s/usunięcie): %s usunięto w %s a %s w %s. Wersja %s pliku %s "
-"pozostaje w drzewie na %s."
+"Ostrzeżenie: unikam zastosowania zmiany nazwy %s -> %s na %s, bo %s sam "
+"zmienił nazwę."
 
-#: merge-recursive.c:1491
+#: merge-ort.c:1748 merge-recursive.c:3215
 #, 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."
+"Path updated: %s added in %s inside a directory that was renamed in %s; "
+"moving it to %s."
 msgstr ""
-"KONFLIKT (%s/usunięcie): %s usunięto w %s a %s do %s w %s. Wersja %s pliku "
-"%s pozostaje w drzewie na %s."
-
-#: merge-recursive.c:1526
-msgid "rename"
-msgstr "zmiana nazwy"
+"Zaktualizowano ścieżkę: %s dodano w %s w katalogu, którego nazwa została "
+"zmieniona w %s; przenoszenie go do %s."
+
+#: merge-ort.c:1755 merge-recursive.c:3222
+#, c-format
+msgid ""
+"Path updated: %s renamed to %s in %s, inside a directory that was renamed in "
+"%s; moving it to %s."
+msgstr ""
+"Zaktualizowano ścieżkę: zmieniono nazwę %s na %s w %s w katalogu, którego "
+"nazwa została zmieniona w %s; przenoszenie go do %s."
+
+#: merge-ort.c:1768 merge-recursive.c:3218
+#, c-format
+msgid ""
+"CONFLICT (file location): %s added in %s inside a directory that was renamed "
+"in %s, suggesting it should perhaps be moved to %s."
+msgstr ""
+"KONFLIKT (położenie pliku): %s dodano w %s w katalogu, którego nazwa została "
+"zmieniona w %s, co sugeruje, że być może powinien trafić do %s."
+
+#: merge-ort.c:1776 merge-recursive.c:3225
+#, c-format
+msgid ""
+"CONFLICT (file location): %s renamed to %s in %s, inside a directory that "
+"was renamed in %s, suggesting it should perhaps be moved to %s."
+msgstr ""
+"KONFLIKT (położenie pliku): zmieniono nazwę %s na %s w %s, w katalogu, "
+"którego nazwa została zmieniona w %s, co sugeruje, że być może powinien "
+"trafić do %s."
+
+#: merge-ort.c:1919
+#, c-format
+msgid "CONFLICT (rename/rename): %s renamed to %s in %s and to %s in %s."
+msgstr ""
+"KONFLIKT (zmiana nazwy/zmiana nazwy): zmieniono nazwę %s na %s w %s, a na %s"
+" w %s."
+
+#: merge-ort.c:2014
+#, c-format
+msgid ""
+"CONFLICT (rename involved in collision): rename of %s -> %s has content "
+"conflicts AND collides with another path; this may result in nested conflict "
+"markers."
+msgstr ""
+"KONFLIKT (zmiana nazwy związana z kolizją): zmiana nazwy %s -> %s miała "
+"konflikty zawartości A TAKŻE koliduje z inną ścieżką; może to skutkować"
+" zagnieżdżonymi "
+"znacznikami konfliktu."
+
+#: merge-ort.c:2033 merge-ort.c:2057
+#, c-format
+msgid "CONFLICT (rename/delete): %s renamed to %s in %s, but deleted in %s."
+msgstr ""
+"KONFLIKT (zmiana nazwy/usunięcie): zmieniono nazwę %s na %s w %s, ale"
+" skasowano w %s."
+
+#: merge-ort.c:2683
+#, c-format
+msgid ""
+"CONFLICT (file/directory): directory in the way of %s from %s; moving it to "
+"%s instead."
+msgstr ""
+"KONFLIKT (plik/katalog): katalog zawadza %s z %s; zamiast tego przenoszenie "
+"do %s."
+
+#: merge-ort.c:2756
+#, c-format
+msgid ""
+"CONFLICT (distinct types): %s had different types on each side; renamed %s "
+"of them so each can be recorded somewhere."
+msgstr ""
+"KONFLIKT (różne typy): %s był różnego typu z każdej strony; zmieniono nazwę "
+"%s "
+"z nich, więc każdy może być gdzieś odnotowany."
+
+#: merge-ort.c:2760
+msgid "both"
+msgstr "obu"
+
+#: merge-ort.c:2760
+msgid "one"
+msgstr "jednej"
+
+#: merge-ort.c:2855 merge-recursive.c:3052
+msgid "content"
+msgstr "zawartość"
+
+#: merge-ort.c:2857 merge-recursive.c:3056
+msgid "add/add"
+msgstr "dodano/dodano"
+
+#: merge-ort.c:2859 merge-recursive.c:3101
+msgid "submodule"
+msgstr "pod-moduł"
+
+#: merge-ort.c:2861 merge-recursive.c:3102
+#, c-format
+msgid "CONFLICT (%s): Merge conflict in %s"
+msgstr "KONFLIKT (%s): Konflikt scalania w %s"
+
+#: merge-ort.c:2886
+#, c-format
+msgid ""
+"CONFLICT (modify/delete): %s deleted in %s and modified in %s.  Version %s "
+"of %s left in tree."
+msgstr ""
+"KONFLIKT (zmiana/usunięcie): %s usunięto w %s a zmieniono w %s. Wersja %s "
+"pliku %s pozostaje w drzewie."
+
+#. TRANSLATORS: The %s arguments are: 1) tree hash of a merge
+#. base, and 2-3) the trees for the two trees we're merging.
+#.
+#: merge-ort.c:3354
+#, c-format
+msgid "collecting merge info failed for trees %s, %s, %s"
+msgstr "nie można zebrać informacji o scaleniu w drzewach %s, %s, %s"
+
+#: merge-ort-wrappers.c:13 merge-recursive.c:3661
+#, c-format
+msgid ""
+"Your local changes to the following files would be overwritten by merge:\n"
+"  %s"
+msgstr ""
+"Twoje lokalne zmiany następujących plików zostaną zastąpione przez "
+"scalenie:\n"
+"  %s"
+
+#: merge-ort-wrappers.c:33 merge-recursive.c:3436
+#, c-format
+msgid "Already up to date!"
+msgstr "Już aktualne!"
+
+#: merge-recursive.c:356
+msgid "(bad commit)\n"
+msgstr "(zły zapis)\n"
+
+#: merge-recursive.c:379
+#, c-format
+msgid "add_cacheinfo failed for path '%s'; merge aborting."
+msgstr "add_cacheinfo nie powiodło się na ścieżce „%s”; przerywanie scalania."
+
+#: merge-recursive.c:388
+#, c-format
+msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
+msgstr ""
+"add_cacheinfo nie udało się odświeżyć na ścieżce „%s”; przerywanie scalania."
+
+#: merge-recursive.c:874
+#, c-format
+msgid "failed to create path '%s'%s"
+msgstr "nie można utworzyć ścieżki „%s”%s"
+
+#: merge-recursive.c:885
+#, c-format
+msgid "Removing %s to make room for subdirectory\n"
+msgstr "Usuwanie %s, aby zrobić miejsce na podkatalog\n"
+
+#: merge-recursive.c:899 merge-recursive.c:918
+msgid ": perhaps a D/F conflict?"
+msgstr ": Może konflikt plik/katalog?"
+
+#: merge-recursive.c:908
+#, c-format
+msgid "refusing to lose untracked file at '%s'"
+msgstr "Odmawiam utraty nieśledzonego pliku w „%s”"
+
+#: merge-recursive.c:949 builtin/cat-file.c:41
+#, c-format
+msgid "cannot read object %s '%s'"
+msgstr "nie można odczytać obiektu %s „%s”"
+
+#: merge-recursive.c:954
+#, c-format
+msgid "blob expected for %s '%s'"
+msgstr "oczekiwano blobu w %s „%s”"
+
+#: merge-recursive.c:979
+#, c-format
+msgid "failed to open '%s': %s"
+msgstr "nie można otworzyć „%s”: %s"
+
+#: merge-recursive.c:990
+#, c-format
+msgid "failed to symlink '%s': %s"
+msgstr "nie można dowiązać „%s”: „%s”"
+
+#: merge-recursive.c:995
+#, c-format
+msgid "do not know what to do with %06o %s '%s'"
+msgstr "nie wiem, co zrobić z %06o %s „%s”"
+
+#: merge-recursive.c:1213 merge-recursive.c:1225
+#, c-format
+msgid "Fast-forwarding submodule %s to the following commit:"
+msgstr "Przewinięcie pod-modułu %s do następującego zapisu:"
+
+#: merge-recursive.c:1216 merge-recursive.c:1228
+#, c-format
+msgid "Fast-forwarding submodule %s"
+msgstr "Przewinięcie pod-modułu %s"
+
+#: merge-recursive.c:1251
+#, c-format
+msgid "Failed to merge submodule %s (merge following commits not found)"
+msgstr "Nie można scalić pod-modułu %s (nie znaleziono scalenia po zapisie)"
+
+#: merge-recursive.c:1255
+#, c-format
+msgid "Failed to merge submodule %s (not fast-forward)"
+msgstr "Nie można scalić pod-modułu %s (nie przewija się)"
+
+#: merge-recursive.c:1256
+msgid "Found a possible merge resolution for the submodule:\n"
+msgstr "Znaleziono możliwe rozwiązanie scalenia dla pod-modułu:\n"
+
+#: merge-recursive.c:1268
+#, c-format
+msgid "Failed to merge submodule %s (multiple merges found)"
+msgstr "Nie można scalić pod-modułu %s (znaleziono wiele scaleń)"
+
+#: merge-recursive.c:1402
+#, c-format
+msgid "Error: Refusing to lose untracked file at %s; writing to %s instead."
+msgstr ""
+"Błąd: Odmawiam utraty nieśledzonego pliku w %s; zamiast tego zapisywanie do "
+"%s."
+
+#: merge-recursive.c:1474
+#, c-format
+msgid ""
+"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
+"in tree."
+msgstr ""
+"KONFLIKT (%s/usunięcie): %s usunięto w %s a %s w %s. Wersja %s pliku %s "
+"pozostaje w drzewie."
+
+#: merge-recursive.c:1479
+#, c-format
+msgid ""
+"CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
+"left in tree."
+msgstr ""
+"KONFLIKT (%s/usunięcie): %s usunięto w %s a %s do %s w %s. Wersja %s pliku "
+"%s pozostaje w drzewie."
+
+#: merge-recursive.c:1486
+#, c-format
+msgid ""
+"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
+"in tree at %s."
+msgstr ""
+"KONFLIKT (%s/usunięcie): %s usunięto w %s a %s w %s. Wersja %s pliku %s "
+"pozostaje w drzewie na %s."
+
+#: merge-recursive.c:1491
+#, 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 ""
+"KONFLIKT (%s/usunięcie): %s usunięto w %s a %s do %s w %s. Wersja %s pliku "
+"%s pozostaje w drzewie na %s."
+
+#: merge-recursive.c:1526
+msgid "rename"
+msgstr "zmiana nazwy"
 
 #: merge-recursive.c:1526
 msgid "renamed"
@@ -4826,25 +5110,6 @@ msgstr ""
 "%s, bo nazwa katalogu %s została zmieniona na wiele innych katalogów, a "
 "żaden z celów nie dostał większości plików."
 
-#: merge-recursive.c:2100
-#, c-format
-msgid ""
-"CONFLICT (implicit dir rename): Existing file/dir at %s in the way of "
-"implicit directory rename(s) putting the following path(s) there: %s."
-msgstr ""
-"KONFLIKT (domyślna zmiana nazwy katalogu): Istniejący plik/katalog %s "
-"zawadza domyślnej zmianie nazwy wstawiając tam następujące ścieżki: %s."
-
-#: merge-recursive.c:2110
-#, c-format
-msgid ""
-"CONFLICT (implicit dir rename): Cannot map more than one path to %s; "
-"implicit directory renames tried to put these paths there: %s"
-msgstr ""
-"KONFLIKT (domyślna zmiana nazwy katalogu): Nie można dopasować więcej niż "
-"jednej ścieżki do %s; domyślna zmiana nazwy próbowała wstawić tam "
-"następujące ścieżki: %s"
-
 #: merge-recursive.c:2202
 #, c-format
 msgid ""
@@ -4854,15 +5119,6 @@ msgstr ""
 "KONFLIKT (zmiana nazwy/zmiana nazwy): Zmiana nazwy katalogu %s->%s w %s. "
 "Zmiana nazwy katalogu %s->%s w %s"
 
-#: merge-recursive.c:2447
-#, c-format
-msgid ""
-"WARNING: Avoiding applying %s -> %s rename to %s, because %s itself was "
-"renamed."
-msgstr ""
-"Ostrzeżenie: unikam zastosowania zmiany nazwy %s -> %s na %s, bo %s sam "
-"zmienił nazwę."
-
 #: merge-recursive.c:2973
 #, c-format
 msgid "cannot read object %s"
@@ -4881,71 +5137,17 @@ msgstr "zmiana"
 msgid "modified"
 msgstr "zmieniono"
 
-#: merge-recursive.c:3052
-msgid "content"
-msgstr "zawartość"
-
-#: merge-recursive.c:3056
-msgid "add/add"
-msgstr "dodano/dodano"
-
 #: merge-recursive.c:3079
 #, c-format
 msgid "Skipped %s (merged same as existing)"
 msgstr "Pominięto %s (scalono tak samo jak istniejące)"
 
-#: merge-recursive.c:3101
-msgid "submodule"
-msgstr "pod-moduł"
-
-#: merge-recursive.c:3102
-#, c-format
-msgid "CONFLICT (%s): Merge conflict in %s"
-msgstr "KONFLIKT (%s): Konflikt scalania w %s"
-
 #: merge-recursive.c:3132
 #, c-format
 msgid "Adding as %s instead"
 msgstr "Dodawanie zamiast tego jako %s"
 
-#: merge-recursive.c:3215
-#, c-format
-msgid ""
-"Path updated: %s added in %s inside a directory that was renamed in %s; "
-"moving it to %s."
-msgstr ""
-"Zaktualizowano ścieżkę: %s dodano w %s w katalogu, którego nazwa została "
-"zmieniona w %s; przenoszenie go do %s."
-
-#: merge-recursive.c:3218
-#, c-format
-msgid ""
-"CONFLICT (file location): %s added in %s inside a directory that was renamed "
-"in %s, suggesting it should perhaps be moved to %s."
-msgstr ""
-"KONFLIKT (położenie pliku): %s dodano w %s w katalogu, którego nazwa została "
-"zmieniona w %s, co sugeruje, że być może powinien trafić do %s."
-
-#: merge-recursive.c:3222
-#, c-format
-msgid ""
-"Path updated: %s renamed to %s in %s, inside a directory that was renamed in "
-"%s; moving it to %s."
-msgstr ""
-"Zaktualizowano ścieżkę: zmieniono nazwę %s na %s w %s w katalogu, którego "
-"nazwa została zmieniona w %s; przenoszenie go do %s."
-
-#: merge-recursive.c:3225
-#, c-format
-msgid ""
-"CONFLICT (file location): %s renamed to %s in %s, inside a directory that "
-"was renamed in %s, suggesting it should perhaps be moved to %s."
-msgstr ""
-"KONFLIKT (położenie pliku): zmieniono nazwę %s na %s w %s, w katalogu, "
-"którego nazwa została zmieniona w %s, co sugeruje, że być może powinien "
-"trafić do %s."
-
-#: merge-recursive.c:3339
+#: merge-recursive.c:3339
 #, c-format
 msgid "Removing %s"
 msgstr "Usuwanie %s"
@@ -4978,11 +5180,11 @@ msgstr "KONFLIKT (dodanie/dodanie): Konflikt scalania w %s"
 msgid "merging of trees %s and %s failed"
 msgstr "nie można scalić drzew %s i %s"
 
-#: merge-recursive.c:3550
+#: merge-recursive.c:3539
 msgid "Merging:"
 msgstr "Scalanie:"
 
-#: merge-recursive.c:3563
+#: merge-recursive.c:3552
 #, c-format
 msgid "found %u common ancestor:"
 msgid_plural "found %u common ancestors:"
@@ -4990,16 +5192,17 @@ msgstr[0] "znaleziono %u wspólnego przodka:"
 msgstr[1] "znaleziono %u wspólnych przodków:"
 msgstr[2] "znaleziono %u wspólnych przodków:"
 
-#: merge-recursive.c:3613
+#: merge-recursive.c:3602
 msgid "merge returned no commit"
 msgstr "scalenie nie zwróciło żadnych zapisów"
 
-#: merge-recursive.c:3769
+#: merge-recursive.c:3758
 #, c-format
 msgid "Could not parse object '%s'"
 msgstr "Nie można przetworzyć obiektu „%s”"
 
-#: merge-recursive.c:3787 builtin/merge.c:711 builtin/merge.c:895
+#: merge-recursive.c:3776 builtin/merge.c:712 builtin/merge.c:896
+#: builtin/stash.c:471
 msgid "Unable to write index."
 msgstr "Nie można zapisać indeksu."
 
@@ -5007,8 +5210,8 @@ msgstr "Nie można zapisać indeksu."
 msgid "failed to read the cache"
 msgstr "nie można odczytać pamięci podręcznej"
 
-#: merge.c:109 rerere.c:720 builtin/am.c:1883 builtin/am.c:1917
-#: builtin/checkout.c:573 builtin/checkout.c:829 builtin/clone.c:817
+#: merge.c:109 rerere.c:704 builtin/am.c:1883 builtin/am.c:1917
+#: builtin/checkout.c:575 builtin/checkout.c:828 builtin/clone.c:817
 #: builtin/stash.c:265
 msgid "unable to write new index file"
 msgstr "nie można zapisać nowego pliku indeksu"
@@ -5179,17 +5382,17 @@ msgstr "nie można uruchomić pack-objects"
 msgid "could not finish pack-objects"
 msgstr "nie można zakończyć pack-objects"
 
-#: name-hash.c:537
+#: name-hash.c:538
 #, c-format
 msgid "unable to create lazy_dir thread: %s"
 msgstr "nie można utworzyć wątku lazy_dir: %s"
 
-#: name-hash.c:559
+#: name-hash.c:560
 #, c-format
 msgid "unable to create lazy_name thread: %s"
 msgstr "nie można utworzyć wątku lazy_name: %s"
 
-#: name-hash.c:565
+#: name-hash.c:566
 #, c-format
 msgid "unable to join lazy_name thread: %s"
 msgstr "nie można dołączyć do wątku lazy_name: %s"
@@ -5233,648 +5436,1059 @@ msgstr "Odmawiam przepisania uwag w %s (poza refs/notes/)"
 msgid "Bad %s value: '%s'"
 msgstr "Zła wartość %s: „%s”"
 
-#: object.c:53
+#: object-file.c:480
 #, c-format
-msgid "invalid object type \"%s\""
-msgstr "nieprawidłowy rodzaj obiektu „%s”"
+msgid "object directory %s does not exist; check .git/objects/info/alternates"
+msgstr "katalog obiektów %s nie istnieje; sprawdź .git/objects/info/alternates"
 
-#: object.c:173
+#: object-file.c:531
 #, c-format
-msgid "object %s is a %s, not a %s"
-msgstr "obiekt %s to %s, nie %s"
+msgid "unable to normalize alternate object path: %s"
+msgstr "nie można znormalizować ścieżki alternatywnego obiektu: %s"
 
-#: object.c:233
+#: object-file.c:603
 #, c-format
-msgid "object %s has unknown type id %d"
-msgstr "obiekt %s ma nieznany identyfikator rodzaju %d"
+msgid "%s: ignoring alternate object stores, nesting too deep"
+msgstr ""
+"%s: ignorowanie alternatywnych magazynów obiektów, zagnieżdżenie za głębokie"
 
-#: object.c:246
+#: object-file.c:610
 #, c-format
-msgid "unable to parse object: %s"
-msgstr "nie można przetworzyć obiektu: %s"
+msgid "unable to normalize object directory: %s"
+msgstr "nie można znormalizować katalogu obiektu: %s"
 
-#: object.c:266 object.c:278
-#, c-format
-msgid "hash mismatch %s"
-msgstr "niezgodne skróty %s"
+#: object-file.c:653
+msgid "unable to fdopen alternates lockfile"
+msgstr "nie można wykonać fdopen na pliku blokady alternatywnych obiektów"
 
-#: pack-bitmap.c:815 pack-bitmap.c:821 builtin/pack-objects.c:2216
-#, c-format
-msgid "unable to get size of %s"
-msgstr "nie można uzyskać rozmiaru %s"
+#: object-file.c:671
+msgid "unable to read alternates file"
+msgstr "nie można odczytać pliku alternatywnych obiektów"
 
-#: packfile.c:615
-msgid "offset before end of packfile (broken .idx?)"
-msgstr "pozycja przed końcem pliku paczki (zepsuty .idx?)"
+#: object-file.c:678
+msgid "unable to move new alternates file into place"
+msgstr "nie można przenieść na miejsce nowego pliku alternatywnych obiektów"
 
-#: packfile.c:1907
+#: object-file.c:713
 #, c-format
-msgid "offset before start of pack index for %s (corrupt index?)"
-msgstr "pozycja przed początkiem indeksu paczki dla %s (uszkodzony indeks?)"
+msgid "path '%s' does not exist"
+msgstr "ścieżka „%s” nie istnieje"
 
-#: packfile.c:1911
+#: object-file.c:734
 #, c-format
-msgid "offset beyond end of pack index for %s (truncated index?)"
-msgstr "pozycja za końcem indeksu paczki dla %s (ucięty indeks?)"
+msgid "reference repository '%s' as a linked checkout is not supported yet."
+msgstr ""
+"repozytorium odniesienia „%s” jako łączone wybranie nie jest jeszcze "
+"wspierane."
 
-#: parse-options-cb.c:20 parse-options-cb.c:24
+#: object-file.c:740
 #, c-format
-msgid "option `%s' expects a numerical value"
-msgstr "opcja „%s” oczekuje wartości liczbowej"
+msgid "reference repository '%s' is not a local repository."
+msgstr "repozytorium odniesienia „%s” nie jest lokalnym repozytorium."
 
-#: parse-options-cb.c:41
+#: object-file.c:746
 #, c-format
-msgid "malformed expiration date '%s'"
-msgstr "nieprawidłowa data wygaśnięcia „%s”"
+msgid "reference repository '%s' is shallow"
+msgstr "repozytorium odniesienia „%s” jest płytkie"
 
-#: parse-options-cb.c:54
+#: object-file.c:754
 #, c-format
-msgid "option `%s' expects \"always\", \"auto\", or \"never\""
-msgstr "opcja „%s” oczekuje „always”, „auto” lub „never”"
+msgid "reference repository '%s' is grafted"
+msgstr "repozytorium odniesienia „%s” jest szczepione"
 
-#: parse-options-cb.c:132 parse-options-cb.c:149
+#: object-file.c:814
 #, c-format
-msgid "malformed object name '%s'"
-msgstr "nieprawidłowa nazwa obiektu „%s”"
+msgid "invalid line while parsing alternate refs: %s"
+msgstr "błędny wiersz przy przetwarzaniu alternatywnych referencji: %s"
 
-#: parse-options.c:38
+#: object-file.c:964
 #, c-format
-msgid "%s requires a value"
-msgstr "%s wymaga wartości"
+msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
+msgstr "próba mmap %<PRIuMAX> ponad ograniczeniem %<PRIuMAX>"
 
-#: parse-options.c:73
-#, c-format
-msgid "%s is incompatible with %s"
-msgstr "%s i %s się wykluczają"
+#: object-file.c:985
+msgid "mmap failed"
+msgstr "mmap nie powiodło się"
 
-#: parse-options.c:78
+#: object-file.c:1149
 #, c-format
-msgid "%s : incompatible with something else"
-msgstr "%s : wyklucza się z czymś innym"
+msgid "object file %s is empty"
+msgstr "plik obiektu %s jest pusty"
 
-#: parse-options.c:92 parse-options.c:96 parse-options.c:317
+#: object-file.c:1284 object-file.c:2477
 #, c-format
-msgid "%s takes no value"
-msgstr "%s nie przyjmuje wartości"
+msgid "corrupt loose object '%s'"
+msgstr "uszkodzony wolny obiekt „%s”"
 
-#: parse-options.c:94
+#: object-file.c:1286 object-file.c:2481
 #, c-format
-msgid "%s isn't available"
-msgstr "%s niedostępny"
+msgid "garbage at end of loose object '%s'"
+msgstr "śmieci na końcu wolnego obiektu „%s”"
 
-#: parse-options.c:217
-#, c-format
-msgid "%s expects a non-negative integer value with an optional k/m/g suffix"
-msgstr ""
-"%s oczekuje nieujemnej wartości całkowitej z nieobowiązkowym sufiksem k/m/g"
+#: object-file.c:1328
+msgid "invalid object type"
+msgstr "zły rodzaj obiektu"
 
-#: parse-options.c:386
+#: object-file.c:1412
 #, c-format
-msgid "ambiguous option: %s (could be --%s%s or --%s%s)"
-msgstr "niejednoznaczna opcja: %s (może być --%s%s or --%s%s)"
+msgid "unable to unpack %s header with --allow-unknown-type"
+msgstr "nie można rozpakować nagłówka %s z --allow-unknown-type"
 
-#: parse-options.c:420 parse-options.c:428
+#: object-file.c:1415
 #, c-format
-msgid "did you mean `--%s` (with two dashes)?"
-msgstr "czy chodziło o „--%s” (z dwoma myślnikami)?"
+msgid "unable to unpack %s header"
+msgstr "nie można rozpakować nagłówka %s"
 
-#: parse-options.c:666 parse-options.c:971
+#: object-file.c:1421
 #, c-format
-msgid "alias of --%s"
-msgstr "synonim do --%s"
+msgid "unable to parse %s header with --allow-unknown-type"
+msgstr "nie można przetworzyć nagłówka %s z --allow-unknown-type"
 
-#: parse-options.c:862
+#: object-file.c:1424
 #, c-format
-msgid "unknown option `%s'"
-msgstr "nieznana opcja „%s”"
+msgid "unable to parse %s header"
+msgstr "nie można przetworzyć nagłówka %s"
 
-#: parse-options.c:864
+#: object-file.c:1651
 #, c-format
-msgid "unknown switch `%c'"
-msgstr "nieznany przełącznik „%c”"
+msgid "failed to read object %s"
+msgstr "nie można odczytać obiektu %s"
 
-#: parse-options.c:866
+#: object-file.c:1655
 #, c-format
-msgid "unknown non-ascii option in string: `%s'"
-msgstr "nieznana opcja spoza zakresu ASCII w łańcuchu: „%s”"
-
-#: parse-options.c:890
-msgid "..."
-msgstr "..."
+msgid "replacement %s not found for %s"
+msgstr "nie znaleziono zastępstwa %s dla %s"
 
-#: parse-options.c:909
+#: object-file.c:1659
 #, c-format
-msgid "usage: %s"
-msgstr "użycie: %s"
+msgid "loose object %s (stored in %s) is corrupt"
+msgstr "wolny obiekt %s (przechowywany w %s) jest uszkodzony"
 
-#. TRANSLATORS: the colon here should align with the
-#. one in "usage: %s" translation.
-#.
-#: parse-options.c:915
+#: object-file.c:1663
 #, c-format
-msgid "   or: %s"
-msgstr "   lub: %s"
+msgid "packed object %s (stored in %s) is corrupt"
+msgstr "spakowany obiekt %s (przechowywany w %s) jest uszkodzony"
 
-#: parse-options.c:918
+#: object-file.c:1768
 #, c-format
-msgid "    %s"
-msgstr "    %s"
-
-#: parse-options.c:957
-msgid "-NUM"
-msgstr "-ILE"
+msgid "unable to write file %s"
+msgstr "nie można zapisać pliku %s"
 
-#: path.c:915
+#: object-file.c:1775
 #, c-format
-msgid "Could not make %s writable by group"
-msgstr "Nie można pozwolić grupie zapisywać do %s"
-
-#: pathspec.c:130
-msgid "Escape character '\\' not allowed as last character in attr value"
-msgstr "Znak ucieczki „\\” niedozwolony jako ostatni znak w wartości atrybutu"
+msgid "unable to set permission to '%s'"
+msgstr "nie można ustawić uprawnień na „%s”"
 
-#: pathspec.c:148
-msgid "Only one 'attr:' specification is allowed."
-msgstr "Wolno użyć tylko jednego „attr:”."
+#: object-file.c:1782
+msgid "file write error"
+msgstr "błąd zapisu pliku"
 
-#: pathspec.c:151
-msgid "attr spec must not be empty"
-msgstr "atrybut nie może być pusty"
+#: object-file.c:1802
+msgid "error when closing loose object file"
+msgstr "błąd podczas zamykania pliku wolnego obiektu"
 
-#: pathspec.c:194
+#: object-file.c:1867
 #, c-format
-msgid "invalid attribute name %s"
-msgstr "błędna nazwa atrybutu %s"
-
-#: pathspec.c:259
-msgid "global 'glob' and 'noglob' pathspec settings are incompatible"
-msgstr "globalne ustawienia ścieżek „glob” i „noglob” się wykluczają"
-
-#: pathspec.c:266
-msgid ""
-"global 'literal' pathspec setting is incompatible with all other global "
-"pathspec settings"
+msgid "insufficient permission for adding an object to repository database %s"
 msgstr ""
-"globalne ustawienia ścieżek „literal” i wszystkie inne globalne wykluczają "
-"się"
+"niewystarczające uprawnienia, aby dodać obiekt do bazy danych repozytorium %s"
 
-#: pathspec.c:306
-msgid "invalid parameter for pathspec magic 'prefix'"
-msgstr "nieprawidłowy parametr magicznej ścieżki „prefix:”"
+#: object-file.c:1869
+msgid "unable to create temporary file"
+msgstr "nie można utworzyć tymczasowego pliku"
 
-#: pathspec.c:327
-#, c-format
-msgid "Invalid pathspec magic '%.*s' in '%s'"
-msgstr "Nieprawidłowy magiczny numer ścieżki „%.*s” w „%s”"
+#: object-file.c:1893
+msgid "unable to write loose object file"
+msgstr "nie można zapisać pliku wolnego obiektu"
 
-#: pathspec.c:332
+#: object-file.c:1899
 #, c-format
-msgid "Missing ')' at the end of pathspec magic in '%s'"
-msgstr "Brakujący „)” pod koniec magicznej ścieżki w „%s”"
+msgid "unable to deflate new object %s (%d)"
+msgstr "nie można skompresować nowego obiektu %s (%d)"
 
-#: pathspec.c:370
+#: object-file.c:1903
 #, c-format
-msgid "Unimplemented pathspec magic '%c' in '%s'"
-msgstr "Niezaimplementowany magiczny numer ścieżki „%c” w „%s”"
+msgid "deflateEnd on object %s failed (%d)"
+msgstr "deflateEnd w obiekcie %s nie powiodło się (%d)"
 
-#: pathspec.c:429
+#: object-file.c:1907
 #, c-format
-msgid "%s: 'literal' and 'glob' are incompatible"
-msgstr "%s: „literal” i „glob” się wykluczają"
+msgid "confused by unstable object source data for %s"
+msgstr "zamieszanie przez dane źródłowe niestabilnego obiektu dla %s"
 
-#: pathspec.c:445
+#: object-file.c:1917 builtin/pack-objects.c:1097
 #, c-format
-msgid "%s: '%s' is outside repository at '%s'"
-msgstr "%s: „%s” jest poza repozytorium w „%s”"
+msgid "failed utime() on %s"
+msgstr "nie można wykonać utime() na %s"
 
-#: pathspec.c:521
+#: object-file.c:1994
 #, c-format
-msgid "'%s' (mnemonic: '%c')"
-msgstr "'%s' (skrót: '%c')"
-
-#: pathspec.c:531
-#, c-format
-msgid "%s: pathspec magic not supported by this command: %s"
-msgstr "%s: magiczna ścieżka niewspierana przez to polecenie: %s"
-
-#: pathspec.c:598
-#, c-format
-msgid "pathspec '%s' is beyond a symbolic link"
-msgstr "ścieżka „%s” przechodzi przez dowiązanie"
-
-#: pathspec.c:643
-#, c-format
-msgid "line is badly quoted: %s"
-msgstr "wiersz jest źle zacytowany: %s"
-
-#: pkt-line.c:92
-msgid "unable to write flush packet"
-msgstr "nie można zapisać pakietu wypróżnienia"
-
-#: pkt-line.c:99
-msgid "unable to write delim packet"
-msgstr "nie można zapisać pakietu oddzielającego"
+msgid "cannot read object for %s"
+msgstr "nie można odczytać obiektu do %s"
 
-#: pkt-line.c:106
-msgid "unable to write stateless separator packet"
-msgstr "nie można zapisać bezstanowego pakietu separatora"
+#: object-file.c:2045
+msgid "corrupt commit"
+msgstr "uszkodzony zapis"
 
-#: pkt-line.c:113
-msgid "flush packet write failed"
-msgstr "nie można zapisać pakietu wypróżnienia"
+#: object-file.c:2053
+msgid "corrupt tag"
+msgstr "uszkodzony tag"
 
-#: pkt-line.c:153 pkt-line.c:239
-msgid "protocol error: impossibly long line"
-msgstr "błąd protokołu: niemożliwie długi wiersz"
+#: object-file.c:2153
+#, c-format
+msgid "read error while indexing %s"
+msgstr "błąd odczytu podczas indeksowania %s"
 
-#: pkt-line.c:169 pkt-line.c:171
-msgid "packet write with format failed"
-msgstr "nie można zapisać pakietu z formatem"
+#: object-file.c:2156
+#, c-format
+msgid "short read while indexing %s"
+msgstr "przeczytano mniej niż oczekiwano przy indeksowaniu %s"
 
-#: pkt-line.c:203
-msgid "packet write failed - data exceeds max packet size"
-msgstr ""
-"zapis pakietu nie powiódł się — dane przekraczają maksymalny rozmiar pakietu"
+#: object-file.c:2229 object-file.c:2239
+#, c-format
+msgid "%s: failed to insert into database"
+msgstr "%s: nie można wstawić do bazy danych"
 
-#: pkt-line.c:210 pkt-line.c:217
-msgid "packet write failed"
-msgstr "nie można zapisać pakietu"
+#: object-file.c:2245
+#, c-format
+msgid "%s: unsupported file type"
+msgstr "%s: niewspierany typ pliku"
 
-#: pkt-line.c:302
-msgid "read error"
-msgstr "błąd odczytu"
+#: object-file.c:2269
+#, c-format
+msgid "%s is not a valid object"
+msgstr "%s nie jest prawidłowym obiektem"
 
-#: pkt-line.c:310
-msgid "the remote end hung up unexpectedly"
-msgstr "zdalna maszyna nieoczekiwanie się rozłączyła"
+#: object-file.c:2271
+#, c-format
+msgid "%s is not a valid '%s' object"
+msgstr "%s nie jest prawidłowym obiektem „%s”"
 
-#: pkt-line.c:338
+#: object-file.c:2298 builtin/index-pack.c:192
 #, c-format
-msgid "protocol error: bad line length character: %.4s"
-msgstr "błąd protokołu: zły znak długości wiersza: %.4s"
+msgid "unable to open %s"
+msgstr "nie można otworzyć %s"
 
-#: pkt-line.c:352 pkt-line.c:357
+#: object-file.c:2488 object-file.c:2541
 #, c-format
-msgid "protocol error: bad line length %d"
-msgstr "błąd protokołu: zła długość wiersza %d"
+msgid "hash mismatch for %s (expected %s)"
+msgstr "niezgodne skróty %s (oczekiwano %s)"
 
-#: pkt-line.c:373 sideband.c:165
+#: object-file.c:2512
 #, c-format
-msgid "remote error: %s"
-msgstr "błąd serwera: %s"
+msgid "unable to mmap %s"
+msgstr "nie można wykonać mmap %s"
 
-#: preload-index.c:119
-msgid "Refreshing index"
-msgstr "Odświeżanie indeksu"
+#: object-file.c:2517
+#, c-format
+msgid "unable to unpack header of %s"
+msgstr "nie można rozpakować nagłówka %s"
 
-#: preload-index.c:138
+#: object-file.c:2523
 #, c-format
-msgid "unable to create threaded lstat: %s"
-msgstr "nie można utworzyć wątkowanego lstat: %s"
+msgid "unable to parse header of %s"
+msgstr "nie można przetworzyć nagłówka %s"
 
-#: pretty.c:983
-msgid "unable to parse --pretty format"
-msgstr "nie można przetworzyć formatu --pretty"
+#: object-file.c:2534
+#, c-format
+msgid "unable to unpack contents of %s"
+msgstr "nie można rozpakować zawartości %s"
 
-#: promisor-remote.c:30
-msgid "promisor-remote: unable to fork off fetch subprocess"
-msgstr "promisor-remote: nie można oddzielić pod-procesu pobierania"
+#: object-name.c:486
+#, c-format
+msgid "short object ID %s is ambiguous"
+msgstr "krótki identyfikator %s jest niejednoznaczny"
 
-#: promisor-remote.c:35 promisor-remote.c:37
-msgid "promisor-remote: could not write to fetch subprocess"
-msgstr "promisor-remote: nie można zapisać do pod-procesu pobierania"
+#: object-name.c:497
+msgid "The candidates are:"
+msgstr "Kandydaci to:"
 
-#: promisor-remote.c:41
-msgid "promisor-remote: could not close stdin to fetch subprocess"
+#: object-name.c:796
+msgid ""
+"Git normally never creates a ref that ends with 40 hex characters\n"
+"because it will be ignored when you just specify 40-hex. These refs\n"
+"may be created by mistake. For example,\n"
+"\n"
+"  git switch -c $br $(git rev-parse ...)\n"
+"\n"
+"where \"$br\" is somehow empty and a 40-hex ref is created. Please\n"
+"examine these refs and maybe delete them. Turn this message off by\n"
+"running \"git config advice.objectNameWarning false\""
 msgstr ""
-"promisor-remote: nie można zamknąć standardowego wejścia do pod-procesu "
-"pobierania"
+"Git normalnie nigdy nie tworzy referencji kończącej się czterdziestoma\n"
+"heksadecymalnymi znakami, bo byłyby ignorowane zawsze, gdy podasz\n"
+"tylko tych czterdzieści znaków. Te referencje mogą być utworzone przez\n"
+"pomyłkę.  Na przykład\n"
+"\n"
+"  git switch -c $br $(git rev-parse ...)\n"
+"\n"
+"gdzie „$br” jakoś okazuje się puste i tworzona jest taka nietypowa "
+"referencja.\n"
+"Sprawdź te referencje i może je usuń. Wyłącz ten komunikat za pomocą\n"
+"„git config advice.objectNameWarning false”"
 
-#: promisor-remote.c:53
+#: object-name.c:916
 #, c-format
-msgid "promisor remote name cannot begin with '/': %s"
-msgstr "obiecująca zdalna nazwa nie może zaczynać się od „/”: %s"
+msgid "log for '%.*s' only goes back to %s"
+msgstr "dziennik „%.*s” sięga tylko %s"
 
-#: prune-packed.c:35
-msgid "Removing duplicate objects"
-msgstr "Usuwanie zduplikowanych obiektów"
+#: object-name.c:924
+#, c-format
+msgid "log for '%.*s' only has %d entries"
+msgstr "dziennik „%.*s” ma tylko %d wpisów"
 
-#: range-diff.c:77
-msgid "could not start `log`"
-msgstr "nie można uruchomić „log”"
+#: object-name.c:1702
+#, c-format
+msgid "path '%s' exists on disk, but not in '%.*s'"
+msgstr "ścieżka „%s” istnieje na dysku, ale nie w „%.*s”"
 
-#: range-diff.c:79
-msgid "could not read `log` output"
-msgstr "nie można odczytać wyjścia „log”"
+#: object-name.c:1708
+#, c-format
+msgid ""
+"path '%s' exists, but not '%s'\n"
+"hint: Did you mean '%.*s:%s' aka '%.*s:./%s'?"
+msgstr ""
+"ścieżka „%s” istnieje, ale nie „%s”\n"
+"wskazówka: Czy chodziło o „%.*s:%s” czyli „%.*s:./%s”?"
 
-#: range-diff.c:98 sequencer.c:5310
+#: object-name.c:1717
 #, c-format
-msgid "could not parse commit '%s'"
-msgstr "nie można przetworzyć zapisu „%s”"
+msgid "path '%s' does not exist in '%.*s'"
+msgstr "ścieżka „%s” nie istnieje w „%.*s”"
 
-#: range-diff.c:112
+#: object-name.c:1745
 #, c-format
 msgid ""
-"could not parse first line of `log` output: did not start with 'commit ': "
-"'%s'"
+"path '%s' is in the index, but not at stage %d\n"
+"hint: Did you mean ':%d:%s'?"
 msgstr ""
-"nie można przetworzyć pierwszego wiersza wyjścia „log”: nie zaczynał się od "
-"„zapis”: „%s”"
+"ścieżka „%s” jest w indeksie, ale nie na etapie %d\n"
+"wskazówka: Czy chodziło o „:%d:%s”?"
 
-#: range-diff.c:137
+#: object-name.c:1761
 #, c-format
-msgid "could not parse git header '%.*s'"
-msgstr "nie można przetworzyć nagłówka gita „%.*s”"
-
-#: range-diff.c:299
-msgid "failed to generate diff"
-msgstr "nie można wygenerować różnic"
+msgid ""
+"path '%s' is in the index, but not '%s'\n"
+"hint: Did you mean ':%d:%s' aka ':%d:./%s'?"
+msgstr ""
+"ścieżka „%s” jest w indeksie, ale nie „%s”\n"
+"wskazówka: Czy chodziło o „:%d:%s” czyli „:%d:./%s”?"
 
-#: range-diff.c:532 range-diff.c:534
+#: object-name.c:1769
 #, c-format
-msgid "could not parse log for '%s'"
-msgstr "nie można przetworzyć dziennika do „%s”"
+msgid "path '%s' exists on disk, but not in the index"
+msgstr "ścieżka „%s” istnieje na dysku, ale nie w indeksie"
 
-#: read-cache.c:682
+#: object-name.c:1771
 #, c-format
-msgid "will not add file alias '%s' ('%s' already exists in index)"
-msgstr "nie dodam skrótu pliku „%s” („%s” już widnieje w indeksie)"
+msgid "path '%s' does not exist (neither on disk nor in the index)"
+msgstr "ścieżka „%s” nie istnieje (ani na dysku, ani w indeksie)"
 
-#: read-cache.c:698
-msgid "cannot create an empty blob in the object database"
-msgstr "nie można utworzyć pustego blobu w bazie danych obiektów"
+#: object-name.c:1784
+msgid "relative path syntax can't be used outside working tree"
+msgstr "składnia ścieżki względnej nie może być użyta poza drzewem roboczym"
 
-#: read-cache.c:720
+#: object-name.c:1922
 #, c-format
-msgid "%s: can only add regular files, symbolic links or git-directories"
-msgstr "%s: można dodać tylko zwykłe pliki, dowiązania i katalogi gita"
+msgid "invalid object name '%.*s'."
+msgstr "nieprawidłowa nazwa obiektu: „%.*s”."
 
-#: read-cache.c:725
+#: object.c:53
 #, c-format
-msgid "'%s' does not have a commit checked out"
-msgstr "„%s” nie ma wybranego zapisu"
+msgid "invalid object type \"%s\""
+msgstr "nieprawidłowy rodzaj obiektu „%s”"
 
-#: read-cache.c:777
+#: object.c:173
 #, c-format
-msgid "unable to index file '%s'"
-msgstr "nie można zaindeksować pliku „%s”"
+msgid "object %s is a %s, not a %s"
+msgstr "obiekt %s to %s, nie %s"
 
-#: read-cache.c:796
+#: object.c:233
 #, c-format
-msgid "unable to add '%s' to index"
-msgstr "nie można dodać „%s” do indeksu"
+msgid "object %s has unknown type id %d"
+msgstr "obiekt %s ma nieznany identyfikator rodzaju %d"
 
-#: read-cache.c:807
+#: object.c:246
 #, c-format
-msgid "unable to stat '%s'"
-msgstr "nie można wykonać stat na „%s”"
+msgid "unable to parse object: %s"
+msgstr "nie można przetworzyć obiektu: %s"
 
-#: read-cache.c:1318
+#: object.c:266 object.c:278
 #, c-format
-msgid "'%s' appears as both a file and as a directory"
-msgstr "„%s” widnieje jako i plik, i katalog"
+msgid "hash mismatch %s"
+msgstr "niezgodne skróty %s"
 
-#: read-cache.c:1524
-msgid "Refresh index"
-msgstr "Odśwież indeks"
+#: pack-bitmap.c:843 pack-bitmap.c:849 builtin/pack-objects.c:2226
+#, c-format
+msgid "unable to get size of %s"
+msgstr "nie można uzyskać rozmiaru %s"
 
-#: read-cache.c:1639
+#: pack-bitmap.c:1489 builtin/rev-list.c:92
 #, c-format
-msgid ""
-"index.version set, but the value is invalid.\n"
-"Using version %i"
-msgstr ""
-"ustawiono index.version, ale wartość jest nieprawidłowa.\n"
-"Używanie wersji %i"
+msgid "unable to get disk usage of %s"
+msgstr "nie można uzyskać użycia dysku %s"
 
-#: read-cache.c:1649
+#: pack-revindex.c:220
 #, c-format
-msgid ""
-"GIT_INDEX_VERSION set, but the value is invalid.\n"
-"Using version %i"
-msgstr ""
-"ustawiono GIT_INDEX_VERSION, ale wartość jest nieprawidłowa.\n"
-"Używanie wersji %i"
+msgid "reverse-index file %s is too small"
+msgstr "plik odwrotnego indeksu %s jest za mały"
 
-#: read-cache.c:1705
+#: pack-revindex.c:225
 #, c-format
-msgid "bad signature 0x%08x"
-msgstr "zły podpis 0x%08x"
+msgid "reverse-index file %s is corrupt"
+msgstr "plik odwrotnego indeksu %s jest uszkodzony"
 
-#: read-cache.c:1708
+#: pack-revindex.c:233
 #, c-format
-msgid "bad index version %d"
-msgstr "zła wersja indeksu %d"
+msgid "reverse-index file %s has unknown signature"
+msgstr "plik odwrotnego indeksu %s ma nieznaną sygnaturę"
 
-#: read-cache.c:1717
-msgid "bad index file sha1 signature"
-msgstr "zły skrót SHA-1 pliku indeksu"
+#: pack-revindex.c:237
+#, c-format
+msgid "reverse-index file %s has unsupported version %<PRIu32>"
+msgstr "plik odwrotnego indeksu %s ma niewspieraną wersję %<PRIu32>"
 
-#: read-cache.c:1747
+#: pack-revindex.c:242
 #, c-format
-msgid "index uses %.4s extension, which we do not understand"
-msgstr "indeks używa rozszerzenia %.4s, którego nie rozumiemy"
+msgid "reverse-index file %s has unsupported hash id %<PRIu32>"
+msgstr ""
+"plik odwrotnego indeksu %s ma niewspierany identyfikator skrótu %<PRIu32>"
 
-#: read-cache.c:1749
+#: pack-write.c:236
+msgid "cannot both write and verify reverse index"
+msgstr "nie można i zapisać, i sprawdzić odwrotnego indeksu"
+
+#: pack-write.c:257
 #, c-format
-msgid "ignoring %.4s extension"
-msgstr "pomijanie rozszerzenia %.4s"
+msgid "could not stat: %s"
+msgstr "nie można wykonać stat: %s"
 
-#: read-cache.c:1786
+#: pack-write.c:269
 #, c-format
-msgid "unknown index entry format 0x%08x"
-msgstr "nieznany format elementu indeksu 0x%08x"
+msgid "failed to make %s readable"
+msgstr "nie można dodać praw do odczytu %s"
 
-#: read-cache.c:1802
+#: pack-write.c:502
 #, c-format
-msgid "malformed name field in the index, near path '%s'"
-msgstr "nieprawidłowe pole nazwy w indeksie, blisko ścieżki „%s”"
+msgid "could not write '%s' promisor file"
+msgstr "nie można pisać do obiecującego pliku „%s”"
 
-#: read-cache.c:1859
-msgid "unordered stage entries in index"
-msgstr "nieuporządkowane elementy przygotowane w indeksie"
+#: packfile.c:625
+msgid "offset before end of packfile (broken .idx?)"
+msgstr "pozycja przed końcem pliku paczki (zepsuty .idx?)"
 
-#: read-cache.c:1862
+#: packfile.c:1934
 #, c-format
-msgid "multiple stage entries for merged file '%s'"
-msgstr "wiele elementów w przygotowaniu dla scalonego pliku „%s”"
+msgid "offset before start of pack index for %s (corrupt index?)"
+msgstr "pozycja przed początkiem indeksu paczki dla %s (uszkodzony indeks?)"
 
-#: read-cache.c:1865
+#: packfile.c:1938
 #, c-format
-msgid "unordered stage entries for '%s'"
-msgstr "nieuporządkowane elementy przygotowane w „%s”"
+msgid "offset beyond end of pack index for %s (truncated index?)"
+msgstr "pozycja za końcem indeksu paczki dla %s (ucięty indeks?)"
 
-#: read-cache.c:1971 read-cache.c:2262 rerere.c:565 rerere.c:599 rerere.c:1111
-#: submodule.c:1628 builtin/add.c:538 builtin/check-ignore.c:181
-#: builtin/checkout.c:502 builtin/checkout.c:688 builtin/clean.c:991
-#: builtin/commit.c:364 builtin/diff-tree.c:122 builtin/grep.c:507
-#: builtin/mv.c:146 builtin/reset.c:247 builtin/rm.c:290
-#: builtin/submodule--helper.c:332
-msgid "index file corrupt"
-msgstr "uszkodzony plik indeksu"
+#: parse-options-cb.c:20 parse-options-cb.c:24
+#, c-format
+msgid "option `%s' expects a numerical value"
+msgstr "opcja „%s” oczekuje wartości liczbowej"
 
-#: read-cache.c:2115
+#: parse-options-cb.c:41
 #, c-format
-msgid "unable to create load_cache_entries thread: %s"
-msgstr "nie można utworzyć wątku load_cache_entries: %s"
+msgid "malformed expiration date '%s'"
+msgstr "nieprawidłowa data wygaśnięcia „%s”"
 
-#: read-cache.c:2128
+#: parse-options-cb.c:54
 #, c-format
-msgid "unable to join load_cache_entries thread: %s"
-msgstr "nie można dołączyć do wątku load_cache_entries: %s"
+msgid "option `%s' expects \"always\", \"auto\", or \"never\""
+msgstr "opcja „%s” oczekuje „always”, „auto” lub „never”"
 
-#: read-cache.c:2161
+#: parse-options-cb.c:132 parse-options-cb.c:149
 #, c-format
-msgid "%s: index file open failed"
-msgstr "%s: nie można otworzyć pliku indeksu"
+msgid "malformed object name '%s'"
+msgstr "nieprawidłowa nazwa obiektu „%s”"
 
-#: read-cache.c:2165
+#: parse-options.c:38
 #, c-format
-msgid "%s: cannot stat the open index"
-msgstr "%s: nie można wykonać stat na otwartym indeksie"
+msgid "%s requires a value"
+msgstr "%s wymaga wartości"
 
-#: read-cache.c:2169
+#: parse-options.c:73
 #, c-format
-msgid "%s: index file smaller than expected"
-msgstr "%s: plik indeksu mniejszy niż oczekiwano"
+msgid "%s is incompatible with %s"
+msgstr "%s i %s się wykluczają"
 
-#: read-cache.c:2173
+#: parse-options.c:78
 #, c-format
-msgid "%s: unable to map index file"
-msgstr "%s: nie można wykonać mapowania pliku indeksu"
+msgid "%s : incompatible with something else"
+msgstr "%s : wyklucza się z czymś innym"
 
-#: read-cache.c:2215
+#: parse-options.c:92 parse-options.c:96 parse-options.c:317
 #, c-format
-msgid "unable to create load_index_extensions thread: %s"
-msgstr "nie można utworzyć wątku load_index_extensions: %s"
+msgid "%s takes no value"
+msgstr "%s nie przyjmuje wartości"
 
-#: read-cache.c:2242
+#: parse-options.c:94
 #, c-format
-msgid "unable to join load_index_extensions thread: %s"
-msgstr "nie można złączyć wątku load_index_extensions: %s"
+msgid "%s isn't available"
+msgstr "%s niedostępny"
 
-#: read-cache.c:2274
+#: parse-options.c:217
 #, c-format
-msgid "could not freshen shared index '%s'"
-msgstr "nie można odświeżyć wspólnego indeksu „%s”"
+msgid "%s expects a non-negative integer value with an optional k/m/g suffix"
+msgstr ""
+"%s oczekuje nieujemnej wartości całkowitej z nieobowiązkowym sufiksem k/m/g"
 
-#: read-cache.c:2321
+#: parse-options.c:386
 #, c-format
-msgid "broken index, expect %s in %s, got %s"
-msgstr "zepsuty indeks, oczekiwano %s w %s, otrzymano %s"
+msgid "ambiguous option: %s (could be --%s%s or --%s%s)"
+msgstr "niejednoznaczna opcja: %s (może być --%s%s or --%s%s)"
 
-#: read-cache.c:3017 strbuf.c:1171 wrapper.c:633 builtin/merge.c:1140
+#: parse-options.c:420 parse-options.c:428
 #, c-format
-msgid "could not close '%s'"
-msgstr "nie można zamknąć „%s”"
+msgid "did you mean `--%s` (with two dashes)?"
+msgstr "czy chodziło o „--%s” (z dwoma myślnikami)?"
 
-#: read-cache.c:3120 sequencer.c:2479 sequencer.c:4231
+#: parse-options.c:666 parse-options.c:971
 #, c-format
-msgid "could not stat '%s'"
-msgstr "nie można wykonać stat na „%s”"
+msgid "alias of --%s"
+msgstr "synonim do --%s"
 
-#: read-cache.c:3133
+#: parse-options.c:862
 #, c-format
-msgid "unable to open git dir: %s"
-msgstr "nie można otworzyć katalogu gita: %s"
+msgid "unknown option `%s'"
+msgstr "nieznana opcja „%s”"
 
-#: read-cache.c:3145
+#: parse-options.c:864
 #, c-format
-msgid "unable to unlink: %s"
-msgstr "nie można wykonać unlink: „%s”"
+msgid "unknown switch `%c'"
+msgstr "nieznany przełącznik „%c”"
 
-#: read-cache.c:3170
+#: parse-options.c:866
 #, c-format
-msgid "cannot fix permission bits on '%s'"
-msgstr "nie można naprawić bitów uprawnień w „%s”"
+msgid "unknown non-ascii option in string: `%s'"
+msgstr "nieznana opcja spoza zakresu ASCII w łańcuchu: „%s”"
 
-#: read-cache.c:3319
+#: parse-options.c:890
+msgid "..."
+msgstr "..."
+
+#: parse-options.c:909
 #, c-format
-msgid "%s: cannot drop to stage #0"
-msgstr "%s: nie można zrzucić do etapu nr 0"
+msgid "usage: %s"
+msgstr "użycie: %s"
 
-#: rebase-interactive.c:11
-msgid ""
-"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 ""
-"Możesz to naprawić używając „git rebase --edit-todo” i uruchamiając później "
-"„git rebase --continue”.\n"
-"Albo możesz przerwać przestawianie przez „git rebase --abort”.\n"
+#. TRANSLATORS: the colon here should align with the
+#. one in "usage: %s" translation.
+#.
+#: parse-options.c:915
+#, c-format
+msgid "   or: %s"
+msgstr "   lub: %s"
 
-#: rebase-interactive.c:33
+#: parse-options.c:918
 #, c-format
-msgid ""
-"unrecognized setting %s for option rebase.missingCommitsCheck. Ignoring."
-msgstr "nieznane ustawienie %s opcji rebase.missingCommitsCheck. Ignorowanie."
+msgid "    %s"
+msgstr "    %s"
 
-#: rebase-interactive.c:42
-msgid ""
-"\n"
-"Commands:\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"
-"b, break = stop here (continue rebase later with 'git rebase --continue')\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"
-"Polecenia:\n"
-"p, pick <zapis> = dobierz zapis\n"
-"r, reword <zapis> = użyj zapisu, ale przeredaguj jego komunikat\n"
-"e, edit <zapis> = użyj zapisu, ale zatrzymaj się, żeby go poprawić\n"
-"s, squash <zapis> = użyj zapisu, ale połącz go z poprzednim (spłaszcz)\n"
-"f, fixup <zapis> = jak „squash”, ale odrzuć komunikat tego zapisu\n"
-"x, exec <polecenie> = wykonaj polecenie (resztę wiersza) w powłoce\n"
-"b, break = zatrzymaj się tu (kontynuuj przestawianie przez „git rebase --"
-"continue”)\n"
-"d, drop <zapis> = usuń zapis\n"
-"l, label <etykietka> = nazwij bieżące HEAD\n"
-"t, reset <etykietka> = zresetuj HEAD do etykietki\n"
-"m, merge [-C <zapis> | -c <zapis>] <etykietka> [# <wiersz>]\n"
-".       utwórz zapis scalenia używając pierwotnego komunikatu scalenia\n"
-".       (albo <wiersza>, jeśli nie podano pierwotnego zapisu scalenia.\n"
-".       Użyj -c <zapis>, aby przeredagować komunikat zapisu.\n"
-"Kolejność wierszy może być zmieniona; są wykonywane z góry na dół.\n"
+#: parse-options.c:957
+msgid "-NUM"
+msgstr "-ILE"
 
-#: rebase-interactive.c:63
+#: path.c:915
 #, c-format
-msgid "Rebase %s onto %s (%d command)"
-msgid_plural "Rebase %s onto %s (%d commands)"
-msgstr[0] "Przestawianie %s na %s (%d polecenie)"
-msgstr[1] "Przestawianie %s na %s (%d polecenia)"
-msgstr[2] "Przestawianie %s na %s (%d poleceń)"
+msgid "Could not make %s writable by group"
+msgstr "Nie można pozwolić grupie zapisywać do %s"
 
-#: rebase-interactive.c:72 git-rebase--preserve-merges.sh:218
-msgid ""
-"\n"
-"Do not remove any line. Use 'drop' explicitly to remove a commit.\n"
-msgstr ""
-"\n"
-"Nie usuwaj żadnego wiersza. Użyj jawnie „drop”, żeby usunąć wpis.\n"
+#: pathspec.c:130
+msgid "Escape character '\\' not allowed as last character in attr value"
+msgstr "Znak ucieczki „\\” niedozwolony jako ostatni znak w wartości atrybutu"
 
-#: rebase-interactive.c:75 git-rebase--preserve-merges.sh:222
+#: pathspec.c:148
+msgid "Only one 'attr:' specification is allowed."
+msgstr "Wolno użyć tylko jednego „attr:”."
+
+#: pathspec.c:151
+msgid "attr spec must not be empty"
+msgstr "atrybut nie może być pusty"
+
+#: pathspec.c:194
+#, c-format
+msgid "invalid attribute name %s"
+msgstr "błędna nazwa atrybutu %s"
+
+#: pathspec.c:259
+msgid "global 'glob' and 'noglob' pathspec settings are incompatible"
+msgstr "globalne ustawienia ścieżek „glob” i „noglob” się wykluczają"
+
+#: pathspec.c:266
 msgid ""
-"\n"
-"If you remove a line here THAT COMMIT WILL BE LOST.\n"
+"global 'literal' pathspec setting is incompatible with all other global "
+"pathspec settings"
 msgstr ""
-"\n"
-"Jeśli usuniesz tutaj wiersz, TEN ZAPIS BĘDZIE STRACONY.\n"
+"globalne ustawienia ścieżek „literal” i wszystkie inne globalne wykluczają "
+"się"
 
-#: rebase-interactive.c:81 git-rebase--preserve-merges.sh:861
-msgid ""
+#: pathspec.c:306
+msgid "invalid parameter for pathspec magic 'prefix'"
+msgstr "nieprawidłowy parametr magicznej ścieżki „prefix:”"
+
+#: pathspec.c:327
+#, c-format
+msgid "Invalid pathspec magic '%.*s' in '%s'"
+msgstr "Nieprawidłowy magiczny numer ścieżki „%.*s” w „%s”"
+
+#: pathspec.c:332
+#, c-format
+msgid "Missing ')' at the end of pathspec magic in '%s'"
+msgstr "Brakujący „)” pod koniec magicznej ścieżki w „%s”"
+
+#: pathspec.c:370
+#, c-format
+msgid "Unimplemented pathspec magic '%c' in '%s'"
+msgstr "Niezaimplementowany magiczny numer ścieżki „%c” w „%s”"
+
+#: pathspec.c:429
+#, c-format
+msgid "%s: 'literal' and 'glob' are incompatible"
+msgstr "%s: „literal” i „glob” się wykluczają"
+
+#: pathspec.c:445
+#, c-format
+msgid "%s: '%s' is outside repository at '%s'"
+msgstr "%s: „%s” jest poza repozytorium w „%s”"
+
+#: pathspec.c:521
+#, c-format
+msgid "'%s' (mnemonic: '%c')"
+msgstr "'%s' (skrót: '%c')"
+
+#: pathspec.c:531
+#, c-format
+msgid "%s: pathspec magic not supported by this command: %s"
+msgstr "%s: magiczna ścieżka niewspierana przez to polecenie: %s"
+
+#: pathspec.c:598
+#, c-format
+msgid "pathspec '%s' is beyond a symbolic link"
+msgstr "ścieżka „%s” przechodzi przez dowiązanie"
+
+#: pathspec.c:643
+#, c-format
+msgid "line is badly quoted: %s"
+msgstr "wiersz jest źle zacytowany: %s"
+
+#: pkt-line.c:92
+msgid "unable to write flush packet"
+msgstr "nie można zapisać pakietu wypróżnienia"
+
+#: pkt-line.c:99
+msgid "unable to write delim packet"
+msgstr "nie można zapisać pakietu oddzielającego"
+
+#: pkt-line.c:106
+msgid "unable to write stateless separator packet"
+msgstr "nie można zapisać bezstanowego pakietu separatora"
+
+#: pkt-line.c:113
+msgid "flush packet write failed"
+msgstr "nie można zapisać pakietu wypróżnienia"
+
+#: pkt-line.c:153 pkt-line.c:239
+msgid "protocol error: impossibly long line"
+msgstr "błąd protokołu: niemożliwie długi wiersz"
+
+#: pkt-line.c:169 pkt-line.c:171
+msgid "packet write with format failed"
+msgstr "nie można zapisać pakietu z formatem"
+
+#: pkt-line.c:203
+msgid "packet write failed - data exceeds max packet size"
+msgstr ""
+"zapis pakietu nie powiódł się — dane przekraczają maksymalny rozmiar pakietu"
+
+#: pkt-line.c:210 pkt-line.c:217
+msgid "packet write failed"
+msgstr "nie można zapisać pakietu"
+
+#: pkt-line.c:302
+msgid "read error"
+msgstr "błąd odczytu"
+
+#: pkt-line.c:310
+msgid "the remote end hung up unexpectedly"
+msgstr "zdalna maszyna nieoczekiwanie się rozłączyła"
+
+#: pkt-line.c:338
+#, c-format
+msgid "protocol error: bad line length character: %.4s"
+msgstr "błąd protokołu: zły znak długości wiersza: %.4s"
+
+#: pkt-line.c:352 pkt-line.c:357
+#, c-format
+msgid "protocol error: bad line length %d"
+msgstr "błąd protokołu: zła długość wiersza %d"
+
+#: pkt-line.c:373 sideband.c:165
+#, c-format
+msgid "remote error: %s"
+msgstr "błąd serwera: %s"
+
+#: preload-index.c:119
+msgid "Refreshing index"
+msgstr "Odświeżanie indeksu"
+
+#: preload-index.c:138
+#, c-format
+msgid "unable to create threaded lstat: %s"
+msgstr "nie można utworzyć wątkowanego lstat: %s"
+
+#: pretty.c:984
+msgid "unable to parse --pretty format"
+msgstr "nie można przetworzyć formatu --pretty"
+
+#: promisor-remote.c:30
+msgid "promisor-remote: unable to fork off fetch subprocess"
+msgstr "promisor-remote: nie można oddzielić pod-procesu pobierania"
+
+#: promisor-remote.c:35 promisor-remote.c:37
+msgid "promisor-remote: could not write to fetch subprocess"
+msgstr "promisor-remote: nie można zapisać do pod-procesu pobierania"
+
+#: promisor-remote.c:41
+msgid "promisor-remote: could not close stdin to fetch subprocess"
+msgstr ""
+"promisor-remote: nie można zamknąć standardowego wejścia do pod-procesu "
+"pobierania"
+
+#: promisor-remote.c:53
+#, c-format
+msgid "promisor remote name cannot begin with '/': %s"
+msgstr "obiecująca zdalna nazwa nie może zaczynać się od „/”: %s"
+
+#: prune-packed.c:35
+msgid "Removing duplicate objects"
+msgstr "Usuwanie zduplikowanych obiektów"
+
+#: range-diff.c:78
+msgid "could not start `log`"
+msgstr "nie można uruchomić „log”"
+
+#: range-diff.c:80
+msgid "could not read `log` output"
+msgstr "nie można odczytać wyjścia „log”"
+
+#: range-diff.c:101 sequencer.c:5318
+#, c-format
+msgid "could not parse commit '%s'"
+msgstr "nie można przetworzyć zapisu „%s”"
+
+#: range-diff.c:115
+#, c-format
+msgid ""
+"could not parse first line of `log` output: did not start with 'commit ': "
+"'%s'"
+msgstr ""
+"nie można przetworzyć pierwszego wiersza wyjścia „log”: nie zaczynał się od "
+"„zapis”: „%s”"
+
+#: range-diff.c:140
+#, c-format
+msgid "could not parse git header '%.*s'"
+msgstr "nie można przetworzyć nagłówka gita „%.*s”"
+
+#: range-diff.c:306
+msgid "failed to generate diff"
+msgstr "nie można wygenerować różnic"
+
+#: range-diff.c:558
+msgid "--left-only and --right-only are mutually exclusive"
+msgstr "--left-only i --right-only się wykluczają"
+
+#: range-diff.c:561 range-diff.c:563
+#, c-format
+msgid "could not parse log for '%s'"
+msgstr "nie można przetworzyć dziennika do „%s”"
+
+#: read-cache.c:682
+#, c-format
+msgid "will not add file alias '%s' ('%s' already exists in index)"
+msgstr "nie dodam skrótu pliku „%s” („%s” już widnieje w indeksie)"
+
+#: read-cache.c:698
+msgid "cannot create an empty blob in the object database"
+msgstr "nie można utworzyć pustego blobu w bazie danych obiektów"
+
+#: read-cache.c:720
+#, c-format
+msgid "%s: can only add regular files, symbolic links or git-directories"
+msgstr "%s: można dodać tylko zwykłe pliki, dowiązania i katalogi gita"
+
+#: read-cache.c:725
+#, c-format
+msgid "'%s' does not have a commit checked out"
+msgstr "„%s” nie ma wybranego zapisu"
+
+#: read-cache.c:777
+#, c-format
+msgid "unable to index file '%s'"
+msgstr "nie można zaindeksować pliku „%s”"
+
+#: read-cache.c:796
+#, c-format
+msgid "unable to add '%s' to index"
+msgstr "nie można dodać „%s” do indeksu"
+
+#: read-cache.c:807
+#, c-format
+msgid "unable to stat '%s'"
+msgstr "nie można wykonać stat na „%s”"
+
+#: read-cache.c:1318
+#, c-format
+msgid "'%s' appears as both a file and as a directory"
+msgstr "„%s” widnieje jako i plik, i katalog"
+
+#: read-cache.c:1524
+msgid "Refresh index"
+msgstr "Odśwież indeks"
+
+#: read-cache.c:1639
+#, c-format
+msgid ""
+"index.version set, but the value is invalid.\n"
+"Using version %i"
+msgstr ""
+"ustawiono index.version, ale wartość jest nieprawidłowa.\n"
+"Używanie wersji %i"
+
+#: read-cache.c:1649
+#, c-format
+msgid ""
+"GIT_INDEX_VERSION set, but the value is invalid.\n"
+"Using version %i"
+msgstr ""
+"ustawiono GIT_INDEX_VERSION, ale wartość jest nieprawidłowa.\n"
+"Używanie wersji %i"
+
+#: read-cache.c:1705
+#, c-format
+msgid "bad signature 0x%08x"
+msgstr "zły podpis 0x%08x"
+
+#: read-cache.c:1708
+#, c-format
+msgid "bad index version %d"
+msgstr "zła wersja indeksu %d"
+
+#: read-cache.c:1717
+msgid "bad index file sha1 signature"
+msgstr "zły skrót SHA-1 pliku indeksu"
+
+#: read-cache.c:1747
+#, c-format
+msgid "index uses %.4s extension, which we do not understand"
+msgstr "indeks używa rozszerzenia %.4s, którego nie rozumiemy"
+
+#: read-cache.c:1749
+#, c-format
+msgid "ignoring %.4s extension"
+msgstr "pomijanie rozszerzenia %.4s"
+
+#: read-cache.c:1786
+#, c-format
+msgid "unknown index entry format 0x%08x"
+msgstr "nieznany format elementu indeksu 0x%08x"
+
+#: read-cache.c:1802
+#, c-format
+msgid "malformed name field in the index, near path '%s'"
+msgstr "nieprawidłowe pole nazwy w indeksie, blisko ścieżki „%s”"
+
+#: read-cache.c:1859
+msgid "unordered stage entries in index"
+msgstr "nieuporządkowane elementy przygotowane w indeksie"
+
+#: read-cache.c:1862
+#, c-format
+msgid "multiple stage entries for merged file '%s'"
+msgstr "wiele elementów w przygotowaniu dla scalonego pliku „%s”"
+
+#: read-cache.c:1865
+#, c-format
+msgid "unordered stage entries for '%s'"
+msgstr "nieuporządkowane elementy przygotowane w „%s”"
+
+#: read-cache.c:1971 read-cache.c:2262 rerere.c:549 rerere.c:583 rerere.c:1095
+#: submodule.c:1634 builtin/add.c:546 builtin/check-ignore.c:181
+#: builtin/checkout.c:504 builtin/checkout.c:690 builtin/clean.c:991
+#: builtin/commit.c:364 builtin/diff-tree.c:122 builtin/grep.c:505
+#: builtin/mv.c:146 builtin/reset.c:247 builtin/rm.c:290
+#: builtin/submodule--helper.c:332
+msgid "index file corrupt"
+msgstr "uszkodzony plik indeksu"
+
+#: read-cache.c:2115
+#, c-format
+msgid "unable to create load_cache_entries thread: %s"
+msgstr "nie można utworzyć wątku load_cache_entries: %s"
+
+#: read-cache.c:2128
+#, c-format
+msgid "unable to join load_cache_entries thread: %s"
+msgstr "nie można dołączyć do wątku load_cache_entries: %s"
+
+#: read-cache.c:2161
+#, c-format
+msgid "%s: index file open failed"
+msgstr "%s: nie można otworzyć pliku indeksu"
+
+#: read-cache.c:2165
+#, c-format
+msgid "%s: cannot stat the open index"
+msgstr "%s: nie można wykonać stat na otwartym indeksie"
+
+#: read-cache.c:2169
+#, c-format
+msgid "%s: index file smaller than expected"
+msgstr "%s: plik indeksu mniejszy niż oczekiwano"
+
+#: read-cache.c:2173
+#, c-format
+msgid "%s: unable to map index file"
+msgstr "%s: nie można wykonać mapowania pliku indeksu"
+
+#: read-cache.c:2215
+#, c-format
+msgid "unable to create load_index_extensions thread: %s"
+msgstr "nie można utworzyć wątku load_index_extensions: %s"
+
+#: read-cache.c:2242
+#, c-format
+msgid "unable to join load_index_extensions thread: %s"
+msgstr "nie można złączyć wątku load_index_extensions: %s"
+
+#: read-cache.c:2274
+#, c-format
+msgid "could not freshen shared index '%s'"
+msgstr "nie można odświeżyć wspólnego indeksu „%s”"
+
+#: read-cache.c:2321
+#, c-format
+msgid "broken index, expect %s in %s, got %s"
+msgstr "zepsuty indeks, oczekiwano %s w %s, otrzymano %s"
+
+#: read-cache.c:3017 strbuf.c:1171 wrapper.c:633 builtin/merge.c:1141
+#, c-format
+msgid "could not close '%s'"
+msgstr "nie można zamknąć „%s”"
+
+#: read-cache.c:3120 sequencer.c:2487 sequencer.c:4239
+#, c-format
+msgid "could not stat '%s'"
+msgstr "nie można wykonać stat na „%s”"
+
+#: read-cache.c:3133
+#, c-format
+msgid "unable to open git dir: %s"
+msgstr "nie można otworzyć katalogu gita: %s"
+
+#: read-cache.c:3145
+#, c-format
+msgid "unable to unlink: %s"
+msgstr "nie można wykonać unlink: „%s”"
+
+#: read-cache.c:3170
+#, c-format
+msgid "cannot fix permission bits on '%s'"
+msgstr "nie można naprawić bitów uprawnień w „%s”"
+
+#: read-cache.c:3319
+#, c-format
+msgid "%s: cannot drop to stage #0"
+msgstr "%s: nie można zrzucić do etapu nr 0"
+
+#: rebase-interactive.c:11
+msgid ""
+"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 ""
+"Możesz to naprawić używając „git rebase --edit-todo” i uruchamiając później "
+"„git rebase --continue”.\n"
+"Albo możesz przerwać przestawianie przez „git rebase --abort”.\n"
+
+#: rebase-interactive.c:33
+#, c-format
+msgid ""
+"unrecognized setting %s for option rebase.missingCommitsCheck. Ignoring."
+msgstr "nieznane ustawienie %s opcji rebase.missingCommitsCheck. Ignorowanie."
+
+#: rebase-interactive.c:42
+msgid ""
+"\n"
+"Commands:\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"
+"b, break = stop here (continue rebase later with 'git rebase --continue')\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"
+"Polecenia:\n"
+"p, pick <zapis> = dobierz zapis\n"
+"r, reword <zapis> = użyj zapisu, ale przeredaguj jego komunikat\n"
+"e, edit <zapis> = użyj zapisu, ale zatrzymaj się, żeby go poprawić\n"
+"s, squash <zapis> = użyj zapisu, ale połącz go z poprzednim (spłaszcz)\n"
+"f, fixup <zapis> = jak „squash”, ale odrzuć komunikat tego zapisu\n"
+"x, exec <polecenie> = wykonaj polecenie (resztę wiersza) w powłoce\n"
+"b, break = zatrzymaj się tu (kontynuuj przestawianie przez „git rebase --"
+"continue”)\n"
+"d, drop <zapis> = usuń zapis\n"
+"l, label <etykietka> = nazwij bieżące HEAD\n"
+"t, reset <etykietka> = zresetuj HEAD do etykietki\n"
+"m, merge [-C <zapis> | -c <zapis>] <etykietka> [# <wiersz>]\n"
+".       utwórz zapis scalenia używając pierwotnego komunikatu scalenia\n"
+".       (albo <wiersza>, jeśli nie podano pierwotnego zapisu scalenia.\n"
+".       Użyj -c <zapis>, aby przeredagować komunikat zapisu.\n"
+"Kolejność wierszy może być zmieniona; są wykonywane z góry na dół.\n"
+
+#: rebase-interactive.c:63
+#, c-format
+msgid "Rebase %s onto %s (%d command)"
+msgid_plural "Rebase %s onto %s (%d commands)"
+msgstr[0] "Przestawianie %s na %s (%d polecenie)"
+msgstr[1] "Przestawianie %s na %s (%d polecenia)"
+msgstr[2] "Przestawianie %s na %s (%d poleceń)"
+
+#: rebase-interactive.c:72 git-rebase--preserve-merges.sh:218
+msgid ""
+"\n"
+"Do not remove any line. Use 'drop' explicitly to remove a commit.\n"
+msgstr ""
+"\n"
+"Nie usuwaj żadnego wiersza. Użyj jawnie „drop”, żeby usunąć wpis.\n"
+
+#: rebase-interactive.c:75 git-rebase--preserve-merges.sh:222
+msgid ""
+"\n"
+"If you remove a line here THAT COMMIT WILL BE LOST.\n"
+msgstr ""
+"\n"
+"Jeśli usuniesz tutaj wiersz, TEN ZAPIS BĘDZIE STRACONY.\n"
+
+#: rebase-interactive.c:81 git-rebase--preserve-merges.sh:861
+msgid ""
 "\n"
 "You are editing the todo file of an ongoing interactive rebase.\n"
 "To continue rebase after editing, run:\n"
@@ -5897,14 +6511,14 @@ msgstr ""
 "Jeśli jednak usuniesz wszystko, przestawianie zostanie przerwane.\n"
 "\n"
 
-#: rebase-interactive.c:110 rerere.c:485 rerere.c:692 sequencer.c:3607
-#: sequencer.c:3633 sequencer.c:5416 builtin/fsck.c:347 builtin/rebase.c:270
+#: rebase-interactive.c:110 rerere.c:469 rerere.c:676 sequencer.c:3615
+#: sequencer.c:3641 sequencer.c:5424 builtin/fsck.c:329 builtin/rebase.c:272
 #, c-format
 msgid "could not write '%s'"
 msgstr "nie można pisać do „%s”"
 
-#: rebase-interactive.c:116 builtin/rebase.c:202 builtin/rebase.c:228
-#: builtin/rebase.c:252
+#: rebase-interactive.c:116 builtin/rebase.c:204 builtin/rebase.c:230
+#: builtin/rebase.c:254
 #, c-format
 msgid "could not write '%s'."
 msgstr "nie można pisać do „%s”."
@@ -5934,14 +6548,14 @@ msgstr ""
 "Możliwe zachowania to: ignore, warn, error.\n"
 "\n"
 
-#: rebase-interactive.c:233 rebase-interactive.c:238 sequencer.c:2394
-#: builtin/rebase.c:188 builtin/rebase.c:213 builtin/rebase.c:239
-#: builtin/rebase.c:264
+#: rebase-interactive.c:233 rebase-interactive.c:238 sequencer.c:2402
+#: builtin/rebase.c:190 builtin/rebase.c:215 builtin/rebase.c:241
+#: builtin/rebase.c:266
 #, c-format
 msgid "could not read '%s'."
 msgstr "nie można odczytać „%s”."
 
-#: ref-filter.c:42 wt-status.c:1973
+#: ref-filter.c:42 wt-status.c:1975
 msgid "gone"
 msgstr "nie ma"
 
@@ -6133,24 +6747,34 @@ msgstr "format: atom %%(end) użyty bez odpowiadającego atomu"
 msgid "malformed format string %s"
 msgstr "nieprawidłowy format %s"
 
-#: ref-filter.c:1549
+#: ref-filter.c:1551
 #, c-format
-msgid "no branch, rebasing %s"
-msgstr "brak gałęzi, przestawianie %s"
+msgid "(no branch, rebasing %s)"
+msgstr "(brak gałęzi, przestawianie %s)"
 
-#: ref-filter.c:1552
+#: ref-filter.c:1554
 #, c-format
-msgid "no branch, rebasing detached HEAD %s"
-msgstr "brak gałęzi, przestawianie odłączonego HEAD %s"
+msgid "(no branch, rebasing detached HEAD %s)"
+msgstr "(brak gałęzi, przestawianie odłączonego HEAD %s)"
 
-#: ref-filter.c:1555
+#: ref-filter.c:1557
 #, c-format
-msgid "no branch, bisect started on %s"
-msgstr "brak gałęzi, przeszukiwanie rozpoczęte od %s"
+msgid "(no branch, bisect started on %s)"
+msgstr "(brak gałęzi, przeszukiwanie rozpoczęte od %s)"
 
-#: ref-filter.c:1565
-msgid "no branch"
-msgstr "brak gałęzi"
+#: ref-filter.c:1561
+#, c-format
+msgid "(HEAD detached at %s)"
+msgstr "(HEAD odłączone na %s)"
+
+#: ref-filter.c:1564
+#, c-format
+msgid "(HEAD detached from %s)"
+msgstr "(HEAD odłączone od %s)"
+
+#: ref-filter.c:1567
+msgid "(no branch)"
+msgstr "(brak gałęzi)"
 
 #: ref-filter.c:1599 ref-filter.c:1808
 #, c-format
@@ -6162,32 +6786,32 @@ msgstr "brakujący obiekt %s do %s"
 msgid "parse_object_buffer failed on %s for %s"
 msgstr "parse_object_buffer nie powiodło się na %s do %s"
 
-#: ref-filter.c:2062
+#: ref-filter.c:1992
 #, c-format
 msgid "malformed object at '%s'"
 msgstr "uszkodzony obiekt w „%s”"
 
-#: ref-filter.c:2151
+#: ref-filter.c:2081
 #, c-format
 msgid "ignoring ref with broken name %s"
 msgstr "ignorowanie referencji z zepsutą nazwą %s"
 
-#: ref-filter.c:2156 refs.c:676
+#: ref-filter.c:2086 refs.c:676
 #, c-format
 msgid "ignoring broken ref %s"
 msgstr "ignorowanie zepsutej referencji %s"
 
-#: ref-filter.c:2472
+#: ref-filter.c:2426
 #, c-format
 msgid "format: %%(end) atom missing"
 msgstr "format: brakuje atomu %%(end)"
 
-#: ref-filter.c:2571
+#: ref-filter.c:2525
 #, c-format
 msgid "malformed object name %s"
 msgstr "nieprawidłowa nazwa obiektu %s"
 
-#: ref-filter.c:2576
+#: ref-filter.c:2530
 #, c-format
 msgid "option `%s' must point to a commit"
 msgstr "opcja „%s” musi wskazywać na zapis"
@@ -6218,8 +6842,8 @@ msgstr ""
 "\tgit config --global init.defaultBranch <nazwa>\n"
 "\n"
 "Tradycyjnie było „master”, a inne popularne to „main”, „trunk”\n"
-"i „development”. Nazwę właśnie utworzonej gałęzi można zmienić tym"
-" poleceniem:\n"
+"i „development”. Nazwę właśnie utworzonej gałęzi można zmienić tym "
+"poleceniem:\n"
 "\n"
 "\tgit branch -m <nazwa>\n"
 
@@ -6238,50 +6862,50 @@ msgstr "nieprawidłowa nazwa gałęzi: %s = %s"
 msgid "ignoring dangling symref %s"
 msgstr "ignorowanie wiszącej referencji symbolicznej %s"
 
-#: refs.c:911
+#: refs.c:922
 #, c-format
 msgid "log for ref %s has gap after %s"
 msgstr "dziennik referencji %s ma lukę po %s"
 
-#: refs.c:917
+#: refs.c:929
 #, c-format
 msgid "log for ref %s unexpectedly ended on %s"
 msgstr "dziennik referencji %s nieoczekiwanie się skończył na %s"
 
-#: refs.c:976
+#: refs.c:994
 #, c-format
 msgid "log for %s is empty"
 msgstr "dziennik dla %s jest pusty"
 
-#: refs.c:1068
+#: refs.c:1086
 #, c-format
 msgid "refusing to update ref with bad name '%s'"
 msgstr "odmawiam zaktualizowania referencji ze złą nazwą „%s”"
 
-#: refs.c:1139
+#: refs.c:1157
 #, c-format
 msgid "update_ref failed for ref '%s': %s"
 msgstr "update_ref nie powiodło się dla referencji „%s”: %s"
 
-#: refs.c:1963
+#: refs.c:2051
 #, c-format
 msgid "multiple updates for ref '%s' not allowed"
 msgstr "wiele aktualizacji referencji „%s” niedozwolone"
 
-#: refs.c:2043
+#: refs.c:2131
 msgid "ref updates forbidden inside quarantine environment"
 msgstr "aktualizacje referencji zabronione w środowisku kwarantanny"
 
-#: refs.c:2054
+#: refs.c:2142
 msgid "ref updates aborted by hook"
 msgstr "aktualizacje referencji przerwane przez skrypt repozytorium"
 
-#: refs.c:2154 refs.c:2184
+#: refs.c:2242 refs.c:2272
 #, c-format
 msgid "'%s' exists; cannot create '%s'"
 msgstr "„%s” istnieje; nie można utworzyć „%s”"
 
-#: refs.c:2160 refs.c:2195
+#: refs.c:2248 refs.c:2283
 #, c-format
 msgid "cannot process '%s' and '%s' at the same time"
 msgstr "nie można przetworzyć jednocześnie „%s” i „%s”"
@@ -6345,12 +6969,12 @@ msgstr "klucz „%s” z wzorca nie miał „*”"
 msgid "value '%s' of pattern has no '*'"
 msgstr "wartość „%s” z wzorca nie miała „*”"
 
-#: remote.c:1073
+#: remote.c:1083
 #, c-format
 msgid "src refspec %s does not match any"
 msgstr "źródłowa referencja %s nie pasuje do żadnej"
 
-#: remote.c:1078
+#: remote.c:1088
 #, c-format
 msgid "src refspec %s matches more than one"
 msgstr "źródłowa ścieżka %s pasuje do więcej niż jednej"
@@ -6359,7 +6983,7 @@ msgstr "źródłowa ścieżka %s pasuje do więcej niż jednej"
 #. <remote> <src>:<dst>" push, and "being pushed ('%s')" is
 #. the <src>.
 #.
-#: remote.c:1093
+#: remote.c:1103
 #, c-format
 msgid ""
 "The destination you provided is not a full refname (i.e.,\n"
@@ -6383,7 +7007,7 @@ msgstr ""
 "Żadne nie zadziałało, więc się poddaliśmy. Musisz uzupełnić pełną postać "
 "referencji."
 
-#: remote.c:1113
+#: remote.c:1123
 #, c-format
 msgid ""
 "The <src> part of the refspec is a commit object.\n"
@@ -6394,7 +7018,7 @@ msgstr ""
 "Czy chodziło o utworzenie nowej gałęzi przez wypchnięcie na\n"
 "„%s:refs/heads/%s”?"
 
-#: remote.c:1118
+#: remote.c:1128
 #, c-format
 msgid ""
 "The <src> part of the refspec is a tag object.\n"
@@ -6405,7 +7029,7 @@ msgstr ""
 "Czy chodziło o utworzenie nowego tagu przez wypchnięcie na\n"
 "„%s:refs/tags/%s”?"
 
-#: remote.c:1123
+#: remote.c:1133
 #, c-format
 msgid ""
 "The <src> part of the refspec is a tree object.\n"
@@ -6416,7 +7040,7 @@ msgstr ""
 "Czy chodziło o utworzenie nowego drzewa przez wypchnięcie na\n"
 "„%s:refs/tags/%s”?"
 
-#: remote.c:1128
+#: remote.c:1138
 #, c-format
 msgid ""
 "The <src> part of the refspec is a blob object.\n"
@@ -6427,105 +7051,105 @@ msgstr ""
 "Czy chodziło o utworzenie nowego blobu przez wypchnięcie na\n"
 "„%s:refs/tags/%s”?"
 
-#: remote.c:1164
+#: remote.c:1174
 #, c-format
 msgid "%s cannot be resolved to branch"
 msgstr "nie można rozwiązać %s jako gałęzi"
 
-#: remote.c:1175
+#: remote.c:1185
 #, c-format
 msgid "unable to delete '%s': remote ref does not exist"
 msgstr "nie można usunąć „%s”: zdalna referencja nie istnieje"
 
-#: remote.c:1187
+#: remote.c:1197
 #, c-format
 msgid "dst refspec %s matches more than one"
 msgstr "docelowa referencja %s pasuje do więcej niż jednej"
 
-#: remote.c:1194
+#: remote.c:1204
 #, c-format
 msgid "dst ref %s receives from more than one src"
 msgstr "docelowa referencja %s pobiera z więcej niż jednego źródła"
 
-#: remote.c:1714 remote.c:1815
+#: remote.c:1724 remote.c:1825
 msgid "HEAD does not point to a branch"
 msgstr "HEAD nie wskazuje gałęzi"
 
-#: remote.c:1723
+#: remote.c:1733
 #, c-format
 msgid "no such branch: '%s'"
 msgstr "nie ma takiej gałęzi: „%s”"
 
-#: remote.c:1726
+#: remote.c:1736
 #, c-format
 msgid "no upstream configured for branch '%s'"
 msgstr "gałąź „%s” nie ma ustawionej gałęzi nadrzędnej"
 
-#: remote.c:1732
+#: remote.c:1742
 #, c-format
 msgid "upstream branch '%s' not stored as a remote-tracking branch"
 msgstr "gałąź nadrzędna „%s” nie jest przechowana jako gałąź śledząca"
 
-#: remote.c:1747
+#: remote.c:1757
 #, c-format
 msgid "push destination '%s' on remote '%s' has no local tracking branch"
 msgstr ""
 "cel wypchnięcia „%s” na zdalnym repozytorium „%s” nie ma lokalnej gałęzi "
 "śledzącej"
 
-#: remote.c:1759
+#: remote.c:1769
 #, c-format
 msgid "branch '%s' has no remote for pushing"
 msgstr "Gałąź „%s” nie ma zdalnego repozytorium do wypychania"
 
-#: remote.c:1769
+#: remote.c:1779
 #, c-format
 msgid "push refspecs for '%s' do not include '%s'"
 msgstr "referencje wypychania do „%s” nie zawierają „%s”"
 
-#: remote.c:1782
+#: remote.c:1792
 msgid "push has no destination (push.default is 'nothing')"
 msgstr "wypchnięcie nie ma celu (push.default ma wartość „nothing”)"
 
-#: remote.c:1804
+#: remote.c:1814
 msgid "cannot resolve 'simple' push to a single destination"
 msgstr "nie można rozwiązać „prostego” wypchnięcia do pojedynczego celu"
 
-#: remote.c:1933
+#: remote.c:1943
 #, c-format
 msgid "couldn't find remote ref %s"
 msgstr "nie znaleziono zdalnej referencji %s"
 
-#: remote.c:1946
+#: remote.c:1956
 #, c-format
 msgid "* Ignoring funny ref '%s' locally"
 msgstr "* Pomijanie zabawnej referencji „%s” lokalnie"
 
-#: remote.c:2109
+#: remote.c:2119
 #, c-format
 msgid "Your branch is based on '%s', but the upstream is gone.\n"
 msgstr "Twoja gałąź jest oparta na „%s”, ale jej nadrzędna zniknęła.\n"
 
-#: remote.c:2113
+#: remote.c:2123
 msgid "  (use \"git branch --unset-upstream\" to fixup)\n"
 msgstr "  (użyj „git branch --unset-upstream”, aby naprawić)\n"
 
-#: remote.c:2116
+#: remote.c:2126
 #, c-format
 msgid "Your branch is up to date with '%s'.\n"
 msgstr "Twoja gałąź jest na bieżąco z „%s”.\n"
 
-#: remote.c:2120
+#: remote.c:2130
 #, c-format
 msgid "Your branch and '%s' refer to different commits.\n"
 msgstr "Twoja gałąź i „%s” odnoszą się do innych zapisów.\n"
 
-#: remote.c:2123
+#: remote.c:2133
 #, c-format
 msgid "  (use \"%s\" for details)\n"
 msgstr "  (więcej szczegółów w „%s”)\n"
 
-#: remote.c:2127
+#: remote.c:2137
 #, c-format
 msgid "Your branch is ahead of '%s' by %d commit.\n"
 msgid_plural "Your branch is ahead of '%s' by %d commits.\n"
@@ -6533,11 +7157,11 @@ msgstr[0] "Twoja gałąź jest do przodu względem „%s” o %d zapis.\n"
 msgstr[1] "Twoja gałąź jest do przodu względem „%s” o %d zapisy.\n"
 msgstr[2] "Twoja gałąź jest do przodu względem „%s” o %d zapisów.\n"
 
-#: remote.c:2133
+#: remote.c:2143
 msgid "  (use \"git push\" to publish your local commits)\n"
 msgstr "  (użyj „git push”, aby opublikować swoje zapisy)\n"
 
-#: remote.c:2136
+#: remote.c:2146
 #, c-format
 msgid "Your branch is behind '%s' by %d commit, and can be fast-forwarded.\n"
 msgid_plural ""
@@ -6546,11 +7170,11 @@ msgstr[0] "Twoja gałąź jest za „%s” o %d zapis i może zostać przewinię
 msgstr[1] "Twoja gałąź jest za „%s” o %d zapisy i może zostać przewinięta.\n"
 msgstr[2] "Twoja gałąź jest za „%s” o %d zapisów i może zostać przewinięta.\n"
 
-#: remote.c:2144
+#: remote.c:2154
 msgid "  (use \"git pull\" to update your local branch)\n"
 msgstr "  (użyj „git pull”, aby zaktualizować lokalną gałąź)\n"
 
-#: remote.c:2147
+#: remote.c:2157
 #, c-format
 msgid ""
 "Your branch and '%s' have diverged,\n"
@@ -6568,11 +7192,11 @@ msgstr[2] ""
 "Twoja gałąź i „%s” się rozeszły\n"
 "i mają odpowiednio %d i %d różnych zapisów.\n"
 
-#: remote.c:2157
+#: remote.c:2167
 msgid "  (use \"git pull\" to merge the remote branch into yours)\n"
 msgstr "  (użyj „git pull”, aby scalić zdalną gałąź w swoją)\n"
 
-#: remote.c:2349
+#: remote.c:2359
 #, c-format
 msgid "cannot parse expected object name '%s'"
 msgstr "nie można przetworzyć nazwy obiektu „%s”"
@@ -6592,96 +7216,96 @@ msgstr "podwójna referencja zastępcza: %s"
 msgid "replace depth too high for object %s"
 msgstr "zamień głębokość za dużą dla obiektu %s"
 
-#: rerere.c:217 rerere.c:226 rerere.c:229
+#: rerere.c:201 rerere.c:210 rerere.c:213
 msgid "corrupt MERGE_RR"
 msgstr "uszkodzone MERGE_RR"
 
-#: rerere.c:264 rerere.c:269
+#: rerere.c:248 rerere.c:253
 msgid "unable to write rerere record"
 msgstr "nie można zapisać wpisu rerere"
 
-#: rerere.c:495
+#: rerere.c:479
 #, c-format
 msgid "there were errors while writing '%s' (%s)"
 msgstr "wystąpiły błędy przy zapisywaniu „%s” (%s)"
 
-#: rerere.c:498
+#: rerere.c:482
 #, c-format
 msgid "failed to flush '%s'"
 msgstr "nie można wypróżnić „%s”'"
 
-#: rerere.c:503 rerere.c:1039
+#: rerere.c:487 rerere.c:1023
 #, c-format
 msgid "could not parse conflict hunks in '%s'"
 msgstr "nie można przetworzyć skrawków konfliktu w „%s”"
 
-#: rerere.c:684
+#: rerere.c:668
 #, c-format
 msgid "failed utime() on '%s'"
 msgstr "nie można wykonać utime() na „%s”"
 
-#: rerere.c:694
+#: rerere.c:678
 #, c-format
 msgid "writing '%s' failed"
 msgstr "nie można zapisać „%s”"
 
-#: rerere.c:714
+#: rerere.c:698
 #, c-format
 msgid "Staged '%s' using previous resolution."
 msgstr "Przygotowano „%s” używając poprzedniego rozwiązania."
 
-#: rerere.c:753
+#: rerere.c:737
 #, c-format
 msgid "Recorded resolution for '%s'."
 msgstr "Zapamiętano rozwiązanie dla „%s”."
 
-#: rerere.c:788
+#: rerere.c:772
 #, c-format
 msgid "Resolved '%s' using previous resolution."
 msgstr "Rozwiązano „%s” przy użyciu poprzedniego rozwiązania."
 
-#: rerere.c:803
+#: rerere.c:787
 #, c-format
 msgid "cannot unlink stray '%s'"
 msgstr "nie można usunąć bezpańskiego „%s”"
 
-#: rerere.c:807
+#: rerere.c:791
 #, c-format
 msgid "Recorded preimage for '%s'"
 msgstr "Zapamiętano wstępny obraz „%s”"
 
-#: rerere.c:881 submodule.c:2082 builtin/log.c:1992
+#: rerere.c:865 submodule.c:2088 builtin/log.c:1991
 #: builtin/submodule--helper.c:1878 builtin/submodule--helper.c:1890
 #, c-format
 msgid "could not create directory '%s'"
 msgstr "nie można utworzyć katalogu „%s”"
 
-#: rerere.c:1057
+#: rerere.c:1041
 #, c-format
 msgid "failed to update conflicted state in '%s'"
 msgstr "nie można zaktualizować skonfliktowanego stanu w „%s”"
 
-#: rerere.c:1068 rerere.c:1075
+#: rerere.c:1052 rerere.c:1059
 #, c-format
 msgid "no remembered resolution for '%s'"
 msgstr "brak zapamiętanego wyniku scalenia dla „%s”"
 
-#: rerere.c:1077
+#: rerere.c:1061
 #, c-format
 msgid "cannot unlink '%s'"
 msgstr "nie można usunąć „%s”"
 
-#: rerere.c:1087
+#: rerere.c:1071
 #, c-format
 msgid "Updated preimage for '%s'"
 msgstr "Zaktualizowano wstępny obraz „%s”"
 
-#: rerere.c:1096
+#: rerere.c:1080
 #, c-format
 msgid "Forgot resolution for '%s'\n"
 msgstr "Zapomniano rozwiązanie dla „%s”\n"
 
-#: rerere.c:1199
+#: rerere.c:1191
 msgid "unable to open rr-cache directory"
 msgstr "nie można otworzyć katalogu pamięci podręcznej rr-cache"
 
@@ -6689,43 +7313,38 @@ msgstr "nie można otworzyć katalogu pamięci podręcznej rr-cache"
 msgid "could not determine HEAD revision"
 msgstr "nie można ustalić rewizji HEAD"
 
-#: reset.c:70 reset.c:76 sequencer.c:3460
+#: reset.c:70 reset.c:76 sequencer.c:3468
 #, c-format
 msgid "failed to find tree of %s"
 msgstr "nie znaleziono drzewa %s"
 
-#: revision.c:2336
+#: revision.c:2338
 msgid "--unpacked=<packfile> no longer supported"
-msgstr "--unpacked=<plik-paczki> nie jest już wspierany"
-
-#: revision.c:2356
-#, c-format
-msgid "unknown value for --diff-merges: %s"
-msgstr "nierozpoznana wartość --diff-merges: %s"
+msgstr "--unpacked=<plik-paczki> nie jest już wspierany"
 
-#: revision.c:2694
+#: revision.c:2668
 msgid "your current branch appears to be broken"
 msgstr "twoja obecna gałąź wydaje się być uszkodzona"
 
-#: revision.c:2697
+#: revision.c:2671
 #, c-format
 msgid "your current branch '%s' does not have any commits yet"
 msgstr "twoja obecna gałąź „%s” nie ma jeszcze żadnych zapisów"
 
-#: revision.c:2907
+#: revision.c:2877
 msgid "-L does not yet support diff formats besides -p and -s"
 msgstr "-L nie wspiera jeszcze formatów różnic oprócz -p i -s"
 
-#: run-command.c:764
+#: run-command.c:767
 msgid "open /dev/null failed"
 msgstr "otwarcie /dev/null nie powiodło się"
 
-#: run-command.c:1271
+#: run-command.c:1274
 #, c-format
 msgid "cannot create async thread: %s"
 msgstr "nie można utworzyć asynchronicznego wątku: %s"
 
-#: run-command.c:1335
+#: run-command.c:1338
 #, c-format
 msgid ""
 "The '%s' hook was ignored because it's not set as executable.\n"
@@ -6787,7 +7406,7 @@ msgstr "nieprawidłowy tryb czyszczenia komunikatu zapisu „%s”"
 msgid "could not delete '%s'"
 msgstr "nie można usunąć „%s”"
 
-#: sequencer.c:343 builtin/rebase.c:755 builtin/rebase.c:1596 builtin/rm.c:385
+#: sequencer.c:343 builtin/rebase.c:757 builtin/rebase.c:1602 builtin/rm.c:385
 #, c-format
 msgid "could not remove '%s'"
 msgstr "nie można usunąć „%s”"
@@ -6827,13 +7446,13 @@ msgstr ""
 "z „git add <ścieżki>” lub „git rm <ścieżki>”\n"
 "i złóż wynik za pomocą „git commit”"
 
-#: sequencer.c:434 sequencer.c:3062
+#: sequencer.c:434 sequencer.c:3070
 #, c-format
 msgid "could not lock '%s'"
 msgstr "nie można zablokować „%s”"
 
-#: sequencer.c:436 sequencer.c:2861 sequencer.c:3066 sequencer.c:3080
-#: sequencer.c:3337 sequencer.c:5326 strbuf.c:1168 wrapper.c:631
+#: sequencer.c:436 sequencer.c:2869 sequencer.c:3074 sequencer.c:3088
+#: sequencer.c:3345 sequencer.c:5334 strbuf.c:1168 wrapper.c:631
 #, c-format
 msgid "could not write to '%s'"
 msgstr "nie można pisać do „%s”"
@@ -6843,8 +7462,8 @@ msgstr "nie można pisać do „%s”"
 msgid "could not write eol to '%s'"
 msgstr "nie można pisać końca wiersza do „%s”"
 
-#: sequencer.c:446 sequencer.c:2866 sequencer.c:3068 sequencer.c:3082
-#: sequencer.c:3345
+#: sequencer.c:446 sequencer.c:2874 sequencer.c:3076 sequencer.c:3090
+#: sequencer.c:3353
 #, c-format
 msgid "failed to finalize '%s'"
 msgstr "nie można sfinalizować „%s”"
@@ -6863,7 +7482,7 @@ msgstr "złóż swoje zmiany lub dodaj do schowka, aby kontynuować."
 msgid "%s: fast-forward"
 msgstr "%s: przewijanie"
 
-#: sequencer.c:560 builtin/tag.c:566
+#: sequencer.c:560 builtin/tag.c:598
 #, c-format
 msgid "Invalid cleanup mode %s"
 msgstr "Nieprawidłowy tryb czyszczenia %s"
@@ -6876,60 +7495,60 @@ msgstr "Nieprawidłowy tryb czyszczenia %s"
 msgid "%s: Unable to write new index file"
 msgstr "%s: Nie można zapisać nowego pliku indeksu"
 
-#: sequencer.c:687
+#: sequencer.c:684
 msgid "unable to update cache tree"
 msgstr "nie można zaktualizować drzewa pamięci podręcznej"
 
-#: sequencer.c:701
+#: sequencer.c:698
 msgid "could not resolve HEAD commit"
 msgstr "nie można rozwiązać zapisu HEAD"
 
-#: sequencer.c:781
+#: sequencer.c:778
 #, c-format
 msgid "no key present in '%.*s'"
 msgstr "nie ma żadnego klucza w „%.*s”"
 
-#: sequencer.c:792
+#: sequencer.c:789
 #, c-format
 msgid "unable to dequote value of '%s'"
 msgstr "nie można odcytować wartości „%s”"
 
-#: sequencer.c:829 wrapper.c:201 wrapper.c:371 builtin/am.c:710
-#: builtin/am.c:802 builtin/merge.c:1135 builtin/rebase.c:908
+#: sequencer.c:826 wrapper.c:201 wrapper.c:371 builtin/am.c:710
+#: builtin/am.c:802 builtin/merge.c:1136 builtin/rebase.c:910
 #, c-format
 msgid "could not open '%s' for reading"
 msgstr "nie można otworzyć „%s” do odczytu"
 
-#: sequencer.c:839
+#: sequencer.c:836
 msgid "'GIT_AUTHOR_NAME' already given"
 msgstr "już podano „GIT_AUTHOR_NAME”"
 
-#: sequencer.c:844
+#: sequencer.c:841
 msgid "'GIT_AUTHOR_EMAIL' already given"
 msgstr "już podano „GIT_AUTHOR_EMAIL”"
 
-#: sequencer.c:849
+#: sequencer.c:846
 msgid "'GIT_AUTHOR_DATE' already given"
 msgstr "już podano „GIT_AUTHOR_DATE”"
 
-#: sequencer.c:853
+#: sequencer.c:850
 #, c-format
 msgid "unknown variable '%s'"
 msgstr "nieznana zmienna „%s”"
 
-#: sequencer.c:858
+#: sequencer.c:855
 msgid "missing 'GIT_AUTHOR_NAME'"
 msgstr "brak „GIT_AUTHOR_NAME”"
 
-#: sequencer.c:860
+#: sequencer.c:857
 msgid "missing 'GIT_AUTHOR_EMAIL'"
 msgstr "brak „GIT_AUTHOR_EMAIL”"
 
-#: sequencer.c:862
+#: sequencer.c:859
 msgid "missing 'GIT_AUTHOR_DATE'"
 msgstr "brak „GIT_AUTHOR_DATE”"
 
-#: sequencer.c:927
+#: sequencer.c:924
 #, c-format
 msgid ""
 "you have staged changes in your working tree\n"
@@ -6958,11 +7577,11 @@ msgstr ""
 "\n"
 "  git rebase --continue\n"
 
-#: sequencer.c:1208
+#: sequencer.c:1211
 msgid "'prepare-commit-msg' hook failed"
 msgstr "skrypt „prepare-commit-msg” się nie powiódł"
 
-#: sequencer.c:1214
+#: sequencer.c:1217
 msgid ""
 "Your name and email address were configured automatically based\n"
 "on your username and hostname. Please check that they are accurate.\n"
@@ -6990,7 +7609,7 @@ msgstr ""
 "\n"
 "    git commit --amend --reset-author\n"
 
-#: sequencer.c:1227
+#: sequencer.c:1230
 msgid ""
 "Your name and email address were configured automatically based\n"
 "on your username and hostname. Please check that they are accurate.\n"
@@ -7015,1198 +7634,841 @@ msgstr ""
 "\n"
 "    git commit --amend --reset-author\n"
 
-#: sequencer.c:1269
+#: sequencer.c:1272
 msgid "couldn't look up newly created commit"
 msgstr "nie odnaleziono nowo utworzonego zapisu"
 
-#: sequencer.c:1271
+#: sequencer.c:1274
 msgid "could not parse newly created commit"
 msgstr "nie można przetworzyć nowo utworzonego zapisu"
 
-#: sequencer.c:1317
+#: sequencer.c:1320
 msgid "unable to resolve HEAD after creating commit"
 msgstr "nie można rozwiązać HEAD po utworzeniu zapisu"
 
-#: sequencer.c:1319
+#: sequencer.c:1322
 msgid "detached HEAD"
 msgstr "oddzielone HEAD"
 
-#: sequencer.c:1323
+#: sequencer.c:1326
 msgid " (root-commit)"
 msgstr " (zapis-korzeń)"
 
-#: sequencer.c:1344
+#: sequencer.c:1347
 msgid "could not parse HEAD"
 msgstr "nie można przetworzyć HEAD"
 
-#: sequencer.c:1346
+#: sequencer.c:1349
 #, c-format
 msgid "HEAD %s is not a commit!"
 msgstr "HEAD %s nie jest zapisem!"
 
-#: sequencer.c:1350 sequencer.c:1425 builtin/commit.c:1577
+#: sequencer.c:1353 sequencer.c:1431 builtin/commit.c:1577
 msgid "could not parse HEAD commit"
 msgstr "nie można przetworzyć zapisu HEAD"
 
-#: sequencer.c:1403 sequencer.c:2100
+#: sequencer.c:1409 sequencer.c:2108
 msgid "unable to parse commit author"
 msgstr "nie można przetworzyć autora zapisu %s"
 
-#: sequencer.c:1414 builtin/am.c:1566 builtin/merge.c:701
+#: sequencer.c:1420 builtin/am.c:1566 builtin/merge.c:702
 msgid "git write-tree failed to write a tree"
 msgstr "git write-tree nie może zapisać drzewa"
 
-#: sequencer.c:1447 sequencer.c:1565
+#: sequencer.c:1453 sequencer.c:1573
 #, c-format
 msgid "unable to read commit message from '%s'"
 msgstr "nie można odczytać komunikatu zapisu z „%s”"
 
-#: sequencer.c:1476 sequencer.c:1508
+#: sequencer.c:1484 sequencer.c:1516
 #, c-format
 msgid "invalid author identity '%s'"
 msgstr "nieprawidłowa tożsamość autora „%s”"
 
-#: sequencer.c:1482
+#: sequencer.c:1490
 msgid "corrupt author: missing date information"
 msgstr "uszkodzony autor: brakuje informacji o dacie"
 
-#: sequencer.c:1521 builtin/am.c:1593 builtin/commit.c:1678 builtin/merge.c:904
-#: builtin/merge.c:929 t/helper/test-fast-rebase.c:78
-msgid "failed to write commit object"
-msgstr "nie można zapisać obiektu zapisu"
-
-#: sequencer.c:1548 sequencer.c:4283 t/helper/test-fast-rebase.c:198
-#, c-format
-msgid "could not update %s"
-msgstr "nie można zaktualizować „%s”"
-
-#: sequencer.c:1597
-#, c-format
-msgid "could not parse commit %s"
-msgstr "nie można przetworzyć zapisu %s"
-
-#: sequencer.c:1602
-#, c-format
-msgid "could not parse parent commit %s"
-msgstr "nie można przetworzyć zapisu rodzica %s"
-
-#: sequencer.c:1685 sequencer.c:1796
-#, c-format
-msgid "unknown command: %d"
-msgstr "nieznane pod-polecenie: %d"
-
-#: sequencer.c:1743 sequencer.c:1768
-#, c-format
-msgid "This is a combination of %d commits."
-msgstr "To jest połączenie %d zapisów."
-
-#: sequencer.c:1753
-msgid "need a HEAD to fixup"
-msgstr "potrzeba HEAD do naprawienia"
-
-#: sequencer.c:1755 sequencer.c:3372
-msgid "could not read HEAD"
-msgstr "nie można odczytać HEAD"
-
-#: sequencer.c:1757
-msgid "could not read HEAD's commit message"
-msgstr "nie można odczytać komunikatu zapisu czoła HEAD"
-
-#: sequencer.c:1763
-#, c-format
-msgid "cannot write '%s'"
-msgstr "nie można pisać do „%s”"
-
-#: sequencer.c:1770 git-rebase--preserve-merges.sh:486
-msgid "This is the 1st commit message:"
-msgstr "To jest komunikat pierwszego zapisu:"
-
-#: sequencer.c:1778
-#, c-format
-msgid "could not read commit message of %s"
-msgstr "nie można odczytać komunikatu zapisu %s"
-
-#: sequencer.c:1785
-#, c-format
-msgid "This is the commit message #%d:"
-msgstr "To jest komunikat zapisu nr %d:"
-
-#: sequencer.c:1791
-#, c-format
-msgid "The commit message #%d will be skipped:"
-msgstr "Komunikat zapisu nr %d zostanie pominięty:"
-
-#: sequencer.c:1879
-msgid "your index file is unmerged."
-msgstr "plik indeksu jest niescalony."
-
-#: sequencer.c:1886
-msgid "cannot fixup root commit"
-msgstr "nie można poprawić zapisu korzenia"
-
-#: sequencer.c:1905
-#, c-format
-msgid "commit %s is a merge but no -m option was given."
-msgstr "zapis %s jest scaleniem, a nie podano opcji -m."
-
-#: sequencer.c:1913 sequencer.c:1921
-#, c-format
-msgid "commit %s does not have parent %d"
-msgstr "zapis %s nie ma rodzica %d"
-
-#: sequencer.c:1927
-#, c-format
-msgid "cannot get commit message for %s"
-msgstr "nie można uzyskać komunikatu zapisu dla %s"
-
-#. TRANSLATORS: The first %s will be a "todo" command like
-#. "revert" or "pick", the second %s a SHA1.
-#: sequencer.c:1946
-#, c-format
-msgid "%s: cannot parse parent commit %s"
-msgstr "%s: nie można przetworzyć rodzica zapisu %s"
-
-#: sequencer.c:2011
-#, c-format
-msgid "could not rename '%s' to '%s'"
-msgstr "nie można zmienić nazwy „%s” na „%s”"
-
-#: sequencer.c:2071
-#, c-format
-msgid "could not revert %s... %s"
-msgstr "nie można odwrócić %s... %s"
-
-#: sequencer.c:2072
-#, c-format
-msgid "could not apply %s... %s"
-msgstr "nie można zastosować %s... %s"
-
-#: sequencer.c:2092
-#, c-format
-msgid "dropping %s %s -- patch contents already upstream\n"
-msgstr "gubienie %s %s — zawartość łatki już wcielona w głównym nurcie\n"
-
-#: sequencer.c:2150
-#, c-format
-msgid "git %s: failed to read the index"
-msgstr "git %s: nie można odczytać indeksu"
-
-#: sequencer.c:2157
-#, c-format
-msgid "git %s: failed to refresh the index"
-msgstr "git %s: nie można odświeżyć indeksu"
-
-#: sequencer.c:2234
-#, c-format
-msgid "%s does not accept arguments: '%s'"
-msgstr "%s nie przyjmuje argumentów: „%s”"
-
-#: sequencer.c:2243
-#, c-format
-msgid "missing arguments for %s"
-msgstr "brakujące argumenty dla %s"
-
-#: sequencer.c:2274
-#, c-format
-msgid "could not parse '%s'"
-msgstr "nie można przetworzyć „%s”"
-
-#: sequencer.c:2335
-#, c-format
-msgid "invalid line %d: %.*s"
-msgstr "nieprawidłowy wiersz %d: %.*s"
-
-#: sequencer.c:2346
-#, c-format
-msgid "cannot '%s' without a previous commit"
-msgstr "nie można użyć „%s” bez poprzedniego zapisu"
-
-#: sequencer.c:2432
-msgid "cancelling a cherry picking in progress"
-msgstr "przerywanie trwającego dobierania"
-
-#: sequencer.c:2441
-msgid "cancelling a revert in progress"
-msgstr "przerywanie trwającego odwracania"
-
-#: sequencer.c:2485
-msgid "please fix this using 'git rebase --edit-todo'."
-msgstr "napraw to używając „git rebase --edit-todo”."
-
-#: sequencer.c:2487
-#, c-format
-msgid "unusable instruction sheet: '%s'"
-msgstr "plik z instrukcjami się nie nadaje: „%s”"
-
-#: sequencer.c:2492
-msgid "no commits parsed."
-msgstr "nie przetworzono żadnego zapisu."
-
-#: sequencer.c:2503
-msgid "cannot cherry-pick during a revert."
-msgstr "nie można dobierać w czasie odwracania."
-
-#: sequencer.c:2505
-msgid "cannot revert during a cherry-pick."
-msgstr "nie można odwrócić w czasie dobierania."
-
-#: sequencer.c:2583
-#, c-format
-msgid "invalid value for %s: %s"
-msgstr "nieprawidłowa wartość %s: %s"
-
-#: sequencer.c:2690
-msgid "unusable squash-onto"
-msgstr "spłaszcz-na się nie nadaje"
-
-#: sequencer.c:2710
-#, c-format
-msgid "malformed options sheet: '%s'"
-msgstr "nieprawidłowy plik opcji: „%s”"
-
-#: sequencer.c:2803 sequencer.c:4636
-msgid "empty commit set passed"
-msgstr "podano pusty zbiór zapisów"
-
-#: sequencer.c:2820
-msgid "revert is already in progress"
-msgstr "już trwa dobieranie"
-
-#: sequencer.c:2822
-#, c-format
-msgid "try \"git revert (--continue | %s--abort | --quit)\""
-msgstr "spróbuj „git revert (--continue | %s--abort | --quit)”"
-
-#: sequencer.c:2825
-msgid "cherry-pick is already in progress"
-msgstr "już trwa dobieranie"
-
-#: sequencer.c:2827
-#, c-format
-msgid "try \"git cherry-pick (--continue | %s--abort | --quit)\""
-msgstr "spróbuj „git cherry-pick (--continue | %s--abort | --quit)”"
-
-#: sequencer.c:2841
-#, c-format
-msgid "could not create sequencer directory '%s'"
-msgstr "nie można utworzyć katalogu sekwencjonowania „%s”"
-
-#: sequencer.c:2856
-msgid "could not lock HEAD"
-msgstr "nie można zablokować HEAD"
-
-#: sequencer.c:2916 sequencer.c:4371
-msgid "no cherry-pick or revert in progress"
-msgstr "nie trwa dobieranie ani odwracanie"
-
-#: sequencer.c:2918 sequencer.c:2929
-msgid "cannot resolve HEAD"
-msgstr "nie można rozwiązać HEAD"
-
-#: sequencer.c:2920 sequencer.c:2964
-msgid "cannot abort from a branch yet to be born"
-msgstr "nie można przerwać z gałęzi, która dopiero ma powstać"
-
-#: sequencer.c:2950 builtin/grep.c:756
-#, c-format
-msgid "cannot open '%s'"
-msgstr "nie można otworzyć „%s”"
-
-#: sequencer.c:2952
-#, c-format
-msgid "cannot read '%s': %s"
-msgstr "nie można odczytać „%s”: %s"
-
-#: sequencer.c:2953
-msgid "unexpected end of file"
-msgstr "nieoczekiwany koniec pliku"
-
-#: sequencer.c:2959
-#, c-format
-msgid "stored pre-cherry-pick HEAD file '%s' is corrupt"
-msgstr "zapisany plik HEAD sprzed dobierania „%s” jest uszkodzony"
-
-#: sequencer.c:2970
-msgid "You seem to have moved HEAD. Not rewinding, check your HEAD!"
-msgstr ""
-"Wydaje się, że czoło HEAD się przesunęło.\n"
-"Nie cofam, sprawdź swoje HEAD!"
-
-#: sequencer.c:3011
-msgid "no revert in progress"
-msgstr "nie trwa żadne odwracanie"
-
-#: sequencer.c:3020
-msgid "no cherry-pick in progress"
-msgstr "nie trwa żadne dobieranie"
-
-#: sequencer.c:3030
-msgid "failed to skip the commit"
-msgstr "nie udało się pominąć zapisu"
-
-#: sequencer.c:3037
-msgid "there is nothing to skip"
-msgstr "nie ma nic do pominięcia"
-
-#: sequencer.c:3040
-#, c-format
-msgid ""
-"have you committed already?\n"
-"try \"git %s --continue\""
-msgstr ""
-"zapis już złożony?\n"
-"spróbuj „git %s --continue”"
-
-#: sequencer.c:3202 sequencer.c:4263
-msgid "cannot read HEAD"
-msgstr "nie można odczytać HEAD"
-
-#: sequencer.c:3219
-#, c-format
-msgid "unable to copy '%s' to '%s'"
-msgstr "nie można skopiować „%s” do „%s”"
-
-#: sequencer.c:3227
-#, c-format
-msgid ""
-"You can amend the commit now, with\n"
-"\n"
-"  git commit --amend %s\n"
-"\n"
-"Once you are satisfied with your changes, run\n"
-"\n"
-"  git rebase --continue\n"
-msgstr ""
-"Możesz teraz poprawić zapis przez\n"
-"\n"
-"\tgit commit --amend %s\n"
-"\n"
-"Kiedy zadowolisz się swoimi zmianami, wykonaj\n"
-"\n"
-"\tgit rebase --continue\n"
-
-#: sequencer.c:3237
-#, c-format
-msgid "Could not apply %s... %.*s"
-msgstr "Nie można zastosować %s... %.*s"
-
-#: sequencer.c:3244
-#, c-format
-msgid "Could not merge %.*s"
-msgstr "Nie można scalić %.*s"
+#: sequencer.c:1529 builtin/am.c:1593 builtin/commit.c:1678 builtin/merge.c:905
+#: builtin/merge.c:930 t/helper/test-fast-rebase.c:78
+msgid "failed to write commit object"
+msgstr "nie można zapisać obiektu zapisu"
 
-#: sequencer.c:3258 sequencer.c:3262 builtin/difftool.c:640
+#: sequencer.c:1556 sequencer.c:4291 t/helper/test-fast-rebase.c:198
 #, c-format
-msgid "could not copy '%s' to '%s'"
-msgstr "nie można skopiować „%s” do „%s”"
+msgid "could not update %s"
+msgstr "nie można zaktualizować „%s”"
 
-#: sequencer.c:3274
+#: sequencer.c:1605
 #, c-format
-msgid "Executing: %s\n"
-msgstr "Wykonywanie: %s\n"
+msgid "could not parse commit %s"
+msgstr "nie można przetworzyć zapisu %s"
 
-#: sequencer.c:3289
+#: sequencer.c:1610
 #, c-format
-msgid ""
-"execution failed: %s\n"
-"%sYou can fix the problem, and then run\n"
-"\n"
-"  git rebase --continue\n"
-"\n"
-msgstr ""
-"wykonanie nie powiodło się: %s\n"
-"%sMożesz naprawić problem i uruchomić\n"
-"\n"
-"  git rebase --continue\n"
-"\n"
-
-#: sequencer.c:3295
-msgid "and made changes to the index and/or the working tree\n"
-msgstr "i pozostały zmiany w indeksie i/lub drzewie roboczym\n"
+msgid "could not parse parent commit %s"
+msgstr "nie można przetworzyć zapisu rodzica %s"
 
-#: sequencer.c:3301
+#: sequencer.c:1693 sequencer.c:1804
 #, c-format
-msgid ""
-"execution succeeded: %s\n"
-"but left changes to the index and/or the working tree\n"
-"Commit or stash your changes, and then run\n"
-"\n"
-"  git rebase --continue\n"
-"\n"
-msgstr ""
-"wykonanie powiodło się: %s\n"
-"ale pozostały zmiany w indeksie i/lub drzewie roboczym.\n"
-"Złóż swoje zmiany lub dodaj do schowka, i wtedy wykonaj:\n"
-"\n"
-"  git rebase --continue\n"
-"\n"
+msgid "unknown command: %d"
+msgstr "nieznane pod-polecenie: %d"
 
-#: sequencer.c:3362
+#: sequencer.c:1751 sequencer.c:1776
 #, c-format
-msgid "illegal label name: '%.*s'"
-msgstr "nieprawidłowa nazwa etykietki „%.*s”"
-
-#: sequencer.c:3416
-msgid "writing fake root commit"
-msgstr "zapisywanie fałszywego zapisu korzenia"
+msgid "This is a combination of %d commits."
+msgstr "To jest połączenie %d zapisów."
 
-#: sequencer.c:3421
-msgid "writing squash-onto"
-msgstr "zapisywanie spłaszcz-na"
+#: sequencer.c:1761
+msgid "need a HEAD to fixup"
+msgstr "potrzeba HEAD do naprawienia"
 
-#: sequencer.c:3505
-#, c-format
-msgid "could not resolve '%s'"
-msgstr "nie można rozwiązać „%s”"
+#: sequencer.c:1763 sequencer.c:3380
+msgid "could not read HEAD"
+msgstr "nie można odczytać HEAD"
 
-#: sequencer.c:3538
-msgid "cannot merge without a current revision"
-msgstr "nie można scalić bez bieżącej rewizji"
+#: sequencer.c:1765
+msgid "could not read HEAD's commit message"
+msgstr "nie można odczytać komunikatu zapisu czoła HEAD"
 
-#: sequencer.c:3560
+#: sequencer.c:1771
 #, c-format
-msgid "unable to parse '%.*s'"
-msgstr "nie można przetworzyć „%.*s”"
+msgid "cannot write '%s'"
+msgstr "nie można pisać do „%s”"
 
-#: sequencer.c:3569
-#, c-format
-msgid "nothing to merge: '%.*s'"
-msgstr "nic do scalenia: „%.*s”"
+#: sequencer.c:1778 git-rebase--preserve-merges.sh:486
+msgid "This is the 1st commit message:"
+msgstr "To jest komunikat pierwszego zapisu:"
 
-#: sequencer.c:3581
-msgid "octopus merge cannot be executed on top of a [new root]"
-msgstr "nie można wykonać ośmiorniczego scalenia na szczycie [nowego korzenia]"
+#: sequencer.c:1786
+#, c-format
+msgid "could not read commit message of %s"
+msgstr "nie można odczytać komunikatu zapisu %s"
 
-#: sequencer.c:3597
+#: sequencer.c:1793
 #, c-format
-msgid "could not get commit message of '%s'"
-msgstr "nie można uzyskać komunikatu zapisu „%s”"
+msgid "This is the commit message #%d:"
+msgstr "To jest komunikat zapisu nr %d:"
 
-#: sequencer.c:3780
+#: sequencer.c:1799
 #, c-format
-msgid "could not even attempt to merge '%.*s'"
-msgstr "nie można nawet spróbować scalić „%.*s”"
+msgid "The commit message #%d will be skipped:"
+msgstr "Komunikat zapisu nr %d zostanie pominięty:"
 
-#: sequencer.c:3796
-msgid "merge: Unable to write new index file"
-msgstr "scalanie: Nie można zapisać nowego pliku indeksu"
+#: sequencer.c:1887
+msgid "your index file is unmerged."
+msgstr "plik indeksu jest niescalony."
 
-#: sequencer.c:3870
-msgid "Cannot autostash"
-msgstr "Nie można automatycznie dodać do schowka"
+#: sequencer.c:1894
+msgid "cannot fixup root commit"
+msgstr "nie można poprawić zapisu korzenia"
 
-#: sequencer.c:3873
+#: sequencer.c:1913
 #, c-format
-msgid "Unexpected stash response: '%s'"
-msgstr "Nieoczekiwana odpowiedź schowka: „%s”"
+msgid "commit %s is a merge but no -m option was given."
+msgstr "zapis %s jest scaleniem, a nie podano opcji -m."
 
-#: sequencer.c:3879
+#: sequencer.c:1921 sequencer.c:1929
 #, c-format
-msgid "Could not create directory for '%s'"
-msgstr "Nie można utworzyć katalogu dla „%s”"
+msgid "commit %s does not have parent %d"
+msgstr "zapis %s nie ma rodzica %d"
 
-#: sequencer.c:3882
+#: sequencer.c:1935
 #, c-format
-msgid "Created autostash: %s\n"
-msgstr "Automatycznie zapisano w schowku: %s\n"
+msgid "cannot get commit message for %s"
+msgstr "nie można uzyskać komunikatu zapisu dla %s"
 
-#: sequencer.c:3886
-msgid "could not reset --hard"
-msgstr "nie można zresetować --hard"
+#. TRANSLATORS: The first %s will be a "todo" command like
+#. "revert" or "pick", the second %s a SHA1.
+#: sequencer.c:1954
+#, c-format
+msgid "%s: cannot parse parent commit %s"
+msgstr "%s: nie można przetworzyć rodzica zapisu %s"
 
-#: sequencer.c:3911
+#: sequencer.c:2019
 #, c-format
-msgid "Applied autostash.\n"
-msgstr "Zastosowano zmiany z automatycznego schowka.\n"
+msgid "could not rename '%s' to '%s'"
+msgstr "nie można zmienić nazwy „%s” na „%s”"
 
-#: sequencer.c:3923
+#: sequencer.c:2079
 #, c-format
-msgid "cannot store %s"
-msgstr "nie można zapisać %s"
+msgid "could not revert %s... %s"
+msgstr "nie można odwrócić %s... %s"
 
-#: sequencer.c:3926
+#: sequencer.c:2080
 #, c-format
-msgid ""
-"%s\n"
-"Your changes are safe in the stash.\n"
-"You can run \"git stash pop\" or \"git stash drop\" at any time.\n"
-msgstr ""
-"%s\n"
-"Twoje zmiany są bezpieczne w schowku.\n"
-"Możesz w każdej chwili wykonać „git stash pop” lub „git stash drop”.\n"
+msgid "could not apply %s... %s"
+msgstr "nie można zastosować %s... %s"
 
-#: sequencer.c:3931
-msgid "Applying autostash resulted in conflicts."
-msgstr "Stosowanie zmian z automatycznego schowka spowodowało konflikty."
+#: sequencer.c:2100
+#, c-format
+msgid "dropping %s %s -- patch contents already upstream\n"
+msgstr "gubienie %s %s — zawartość łatki już wcielona w głównym nurcie\n"
 
-#: sequencer.c:3932
-msgid "Autostash exists; creating a new stash entry."
-msgstr ""
-"W schowku istnieje automatyczny wpis; tworzenie nowego wpisu w schowku."
+#: sequencer.c:2158
+#, c-format
+msgid "git %s: failed to read the index"
+msgstr "git %s: nie można odczytać indeksu"
 
-#: sequencer.c:4025 git-rebase--preserve-merges.sh:769
-msgid "could not detach HEAD"
-msgstr "nie można odłączyć HEAD"
+#: sequencer.c:2165
+#, c-format
+msgid "git %s: failed to refresh the index"
+msgstr "git %s: nie można odświeżyć indeksu"
 
-#: sequencer.c:4040
+#: sequencer.c:2242
 #, c-format
-msgid "Stopped at HEAD\n"
-msgstr "Zatrzymano przy HEAD\n"
+msgid "%s does not accept arguments: '%s'"
+msgstr "%s nie przyjmuje argumentów: „%s”"
 
-#: sequencer.c:4042
+#: sequencer.c:2251
 #, c-format
-msgid "Stopped at %s\n"
-msgstr "Zatrzymano przy %s\n"
+msgid "missing arguments for %s"
+msgstr "brakujące argumenty dla %s"
 
-#: sequencer.c:4050
+#: sequencer.c:2282
 #, 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 ""
-"Nie można wykonać polecenia z zadań do zrobienia\n"
-"\n"
-"    %.*s\n"
-"Zostało przeplanowane; Aby zmienić polecenie przed kontynuowaniem,\n"
-"zmień najpierw listę zadań do zrobienia:\n"
-"\n"
-"    git rebase --edit-todo\n"
-"    git rebase --continue\n"
+msgid "could not parse '%s'"
+msgstr "nie można przetworzyć „%s”"
 
-#: sequencer.c:4096
+#: sequencer.c:2343
 #, c-format
-msgid "Rebasing (%d/%d)%s"
-msgstr "Przestawianie (%d/%d)%s"
+msgid "invalid line %d: %.*s"
+msgstr "nieprawidłowy wiersz %d: %.*s"
 
-#: sequencer.c:4141
+#: sequencer.c:2354
 #, c-format
-msgid "Stopped at %s...  %.*s\n"
-msgstr "Zatrzymano na %s... %.*s\n"
+msgid "cannot '%s' without a previous commit"
+msgstr "nie można użyć „%s” bez poprzedniego zapisu"
+
+#: sequencer.c:2440
+msgid "cancelling a cherry picking in progress"
+msgstr "przerywanie trwającego dobierania"
+
+#: sequencer.c:2449
+msgid "cancelling a revert in progress"
+msgstr "przerywanie trwającego odwracania"
+
+#: sequencer.c:2493
+msgid "please fix this using 'git rebase --edit-todo'."
+msgstr "napraw to używając „git rebase --edit-todo”."
 
-#: sequencer.c:4212
+#: sequencer.c:2495
 #, c-format
-msgid "unknown command %d"
-msgstr "nieznane polecenie %d"
+msgid "unusable instruction sheet: '%s'"
+msgstr "plik z instrukcjami się nie nadaje: „%s”"
 
-#: sequencer.c:4271
-msgid "could not read orig-head"
-msgstr "nie można odczytać pierwotnego czoła"
+#: sequencer.c:2500
+msgid "no commits parsed."
+msgstr "nie przetworzono żadnego zapisu."
 
-#: sequencer.c:4276
-msgid "could not read 'onto'"
-msgstr "nie można odczytać „onto”"
+#: sequencer.c:2511
+msgid "cannot cherry-pick during a revert."
+msgstr "nie można dobierać w czasie odwracania."
 
-#: sequencer.c:4290
+#: sequencer.c:2513
+msgid "cannot revert during a cherry-pick."
+msgstr "nie można odwrócić w czasie dobierania."
+
+#: sequencer.c:2591
 #, c-format
-msgid "could not update HEAD to %s"
-msgstr "nie można zapisać HEAD do %s"
+msgid "invalid value for %s: %s"
+msgstr "nieprawidłowa wartość %s: %s"
+
+#: sequencer.c:2698
+msgid "unusable squash-onto"
+msgstr "spłaszcz-na się nie nadaje"
 
-#: sequencer.c:4350
+#: sequencer.c:2718
 #, c-format
-msgid "Successfully rebased and updated %s.\n"
-msgstr "Pomyślnie przestawiono i zaktualizowano %s.\n"
+msgid "malformed options sheet: '%s'"
+msgstr "nieprawidłowy plik opcji: „%s”"
 
-#: sequencer.c:4383
-msgid "cannot rebase: You have unstaged changes."
-msgstr "nie można przestawić: Masz nieprzygotowane zmiany."
+#: sequencer.c:2811 sequencer.c:4644
+msgid "empty commit set passed"
+msgstr "podano pusty zbiór zapisów"
 
-#: sequencer.c:4392
-msgid "cannot amend non-existing commit"
-msgstr "nie można poprawić nieistniejącego obiektu"
+#: sequencer.c:2828
+msgid "revert is already in progress"
+msgstr "już trwa dobieranie"
 
-#: sequencer.c:4394
+#: sequencer.c:2830
 #, c-format
-msgid "invalid file: '%s'"
-msgstr "nieprawidłowy plik: „%s”"
+msgid "try \"git revert (--continue | %s--abort | --quit)\""
+msgstr "spróbuj „git revert (--continue | %s--abort | --quit)”"
 
-#: sequencer.c:4396
-#, c-format
-msgid "invalid contents: '%s'"
-msgstr "nieprawidłowa zawartość: „%s”"
+#: sequencer.c:2833
+msgid "cherry-pick is already in progress"
+msgstr "już trwa dobieranie"
 
-#: sequencer.c:4399
-msgid ""
-"\n"
-"You have uncommitted changes in your working tree. Please, commit them\n"
-"first and then run 'git rebase --continue' again."
-msgstr ""
-"\n"
-"Masz niezłożone zmiany w drzewie roboczym. Najpierw je złóż\n"
-"i wtedy ponownie wykonaj „git rebase --continue”."
+#: sequencer.c:2835
+#, c-format
+msgid "try \"git cherry-pick (--continue | %s--abort | --quit)\""
+msgstr "spróbuj „git cherry-pick (--continue | %s--abort | --quit)”"
 
-#: sequencer.c:4435 sequencer.c:4474
+#: sequencer.c:2849
 #, c-format
-msgid "could not write file: '%s'"
-msgstr "nie można zapisać pliku: „%s”"
+msgid "could not create sequencer directory '%s'"
+msgstr "nie można utworzyć katalogu sekwencjonowania „%s”"
+
+#: sequencer.c:2864
+msgid "could not lock HEAD"
+msgstr "nie można zablokować HEAD"
 
-#: sequencer.c:4490
-msgid "could not remove CHERRY_PICK_HEAD"
-msgstr "nie można usunąć CHERRY_PICK_HEAD"
+#: sequencer.c:2924 sequencer.c:4379
+msgid "no cherry-pick or revert in progress"
+msgstr "nie trwa dobieranie ani odwracanie"
 
-#: sequencer.c:4497
-msgid "could not commit staged changes."
-msgstr "nie udało się złożyć zmian ze schowka."
+#: sequencer.c:2926 sequencer.c:2937
+msgid "cannot resolve HEAD"
+msgstr "nie można rozwiązać HEAD"
+
+#: sequencer.c:2928 sequencer.c:2972
+msgid "cannot abort from a branch yet to be born"
+msgstr "nie można przerwać z gałęzi, która dopiero ma powstać"
 
-#: sequencer.c:4613
+#: sequencer.c:2958 builtin/grep.c:757
 #, c-format
-msgid "%s: can't cherry-pick a %s"
-msgstr "%s: nie można dobrać %s"
+msgid "cannot open '%s'"
+msgstr "nie można otworzyć „%s”"
 
-#: sequencer.c:4617
+#: sequencer.c:2960
 #, c-format
-msgid "%s: bad revision"
-msgstr "%s: zła rewizja"
+msgid "cannot read '%s': %s"
+msgstr "nie można odczytać „%s”: %s"
 
-#: sequencer.c:4652
-msgid "can't revert as initial commit"
-msgstr "nie można odwrócić jako pierwszy zapis"
+#: sequencer.c:2961
+msgid "unexpected end of file"
+msgstr "nieoczekiwany koniec pliku"
 
-#: sequencer.c:5129
-msgid "make_script: unhandled options"
-msgstr "make_script: nieobsłużone opcje"
+#: sequencer.c:2967
+#, c-format
+msgid "stored pre-cherry-pick HEAD file '%s' is corrupt"
+msgstr "zapisany plik HEAD sprzed dobierania „%s” jest uszkodzony"
 
-#: sequencer.c:5132
-msgid "make_script: error preparing revisions"
-msgstr "make_script: błąd przygotowania rewizji"
+#: sequencer.c:2978
+msgid "You seem to have moved HEAD. Not rewinding, check your HEAD!"
+msgstr ""
+"Wydaje się, że czoło HEAD się przesunęło.\n"
+"Nie cofam, sprawdź swoje HEAD!"
 
-#: sequencer.c:5374 sequencer.c:5391
-msgid "nothing to do"
-msgstr "nic do zrobienia"
+#: sequencer.c:3019
+msgid "no revert in progress"
+msgstr "nie trwa żadne odwracanie"
 
-#: sequencer.c:5410
-msgid "could not skip unnecessary pick commands"
-msgstr "nie można pominąć niepotrzebnych poleceń pick"
+#: sequencer.c:3028
+msgid "no cherry-pick in progress"
+msgstr "nie trwa żadne dobieranie"
 
-#: sequencer.c:5504
-msgid "the script was already rearranged."
-msgstr "kolejność skryptu została już zmieniona."
+#: sequencer.c:3038
+msgid "failed to skip the commit"
+msgstr "nie udało się pominąć zapisu"
 
-#: setup.c:133
-#, c-format
-msgid "'%s' is outside repository at '%s'"
-msgstr "„%s” jest poza repozytorium w „%s”"
+#: sequencer.c:3045
+msgid "there is nothing to skip"
+msgstr "nie ma nic do pominięcia"
 
-#: setup.c:185
+#: sequencer.c:3048
 #, c-format
 msgid ""
-"%s: no such path in the working tree.\n"
-"Use 'git <command> -- <path>...' to specify paths that do not exist locally."
+"have you committed already?\n"
+"try \"git %s --continue\""
 msgstr ""
-"%s: nie ma takiej ścieżki w drzewie roboczym.\n"
-"Użyj „git <polecenie> -- <ścieżka>...”, aby podać nieistniejące lokalnie "
-"ścieżki."
+"zapis już złożony?\n"
+"spróbuj „git %s --continue”"
 
-#: setup.c:198
-#, c-format
-msgid ""
-"ambiguous argument '%s': unknown revision or path not in the working tree.\n"
-"Use '--' to separate paths from revisions, like this:\n"
-"'git <command> [<revision>...] -- [<file>...]'"
-msgstr ""
-"niejednoznaczny argument „%s”: nieznana rewizja lub ścieżka niebędąca\n"
-"w drzewie roboczym. Użyj „--” do oddzielenia ścieżek od rewizji:\n"
-"„git <polecenie> [<rewizja>...] -- [<plik>...]”"
+#: sequencer.c:3210 sequencer.c:4271
+msgid "cannot read HEAD"
+msgstr "nie można odczytać HEAD"
 
-#: setup.c:264
+#: sequencer.c:3227
 #, c-format
-msgid "option '%s' must come before non-option arguments"
-msgstr "opcja „%s” musi się znaleźć przed argumentami, nie licząc innych opcji"
+msgid "unable to copy '%s' to '%s'"
+msgstr "nie można skopiować „%s” do „%s”"
 
-#: setup.c:283
+#: sequencer.c:3235
 #, c-format
 msgid ""
-"ambiguous argument '%s': both revision and filename\n"
-"Use '--' to separate paths from revisions, like this:\n"
-"'git <command> [<revision>...] -- [<file>...]'"
-msgstr ""
-"niejednoznaczny argument „%s”: jednocześnie rewizja i nazwa pliku\n"
-"Użyj „--”, aby rozdzielić ścieżki od rewizji:\n"
-"„git <polecenie> [<rewizja>...] -- [<plik>...]”"
-
-#: setup.c:419
-msgid "unable to set up work tree using invalid config"
+"You can amend the commit now, with\n"
+"\n"
+"  git commit --amend %s\n"
+"\n"
+"Once you are satisfied with your changes, run\n"
+"\n"
+"  git rebase --continue\n"
 msgstr ""
-"nie można ustawić drzewa roboczego przy użyciu nieprawidłowej konfiguracji"
-
-#: setup.c:423
-msgid "this operation must be run in a work tree"
-msgstr "to działanie musi być wykonane w drzewie roboczym"
-
-#: setup.c:661
-#, c-format
-msgid "Expected git repo version <= %d, found %d"
-msgstr "Oczekiwano wersji repozytorium gita <= %d, znaleziono %d"
-
-#: setup.c:669
-msgid "unknown repository extensions found:"
-msgstr "znaleziono nieznane rozszerzenia repozytorium:"
-
-#: setup.c:681
-msgid "repo version is 0, but v1-only extensions found:"
-msgstr "wersja repozytorium to 0, ale znaleziono rozszerzenia typowe dla v1"
+"Możesz teraz poprawić zapis przez\n"
+"\n"
+"\tgit commit --amend %s\n"
+"\n"
+"Kiedy zadowolisz się swoimi zmianami, wykonaj\n"
+"\n"
+"\tgit rebase --continue\n"
 
-#: setup.c:700
+#: sequencer.c:3245
 #, c-format
-msgid "error opening '%s'"
-msgstr "nie można otworzyć „%s”"
+msgid "Could not apply %s... %.*s"
+msgstr "Nie można zastosować %s... %.*s"
 
-#: setup.c:702
+#: sequencer.c:3252
 #, c-format
-msgid "too large to be a .git file: '%s'"
-msgstr "za duży jak na plik .git: „%s”"
+msgid "Could not merge %.*s"
+msgstr "Nie można scalić %.*s"
 
-#: setup.c:704
+#: sequencer.c:3266 sequencer.c:3270 builtin/difftool.c:640
 #, c-format
-msgid "error reading %s"
-msgstr "błąd odczytu %s"
+msgid "could not copy '%s' to '%s'"
+msgstr "nie można skopiować „%s” do „%s”"
 
-#: setup.c:706
+#: sequencer.c:3282
 #, c-format
-msgid "invalid gitfile format: %s"
-msgstr "nieprawidłowy format pliku gitfile: %s"
+msgid "Executing: %s\n"
+msgstr "Wykonywanie: %s\n"
 
-#: setup.c:708
+#: sequencer.c:3297
 #, c-format
-msgid "no path in gitfile: %s"
-msgstr "brak ścieżki w pliku gitfile %s"
+msgid ""
+"execution failed: %s\n"
+"%sYou can fix the problem, and then run\n"
+"\n"
+"  git rebase --continue\n"
+"\n"
+msgstr ""
+"wykonanie nie powiodło się: %s\n"
+"%sMożesz naprawić problem i uruchomić\n"
+"\n"
+"  git rebase --continue\n"
+"\n"
 
-#: setup.c:710
-#, c-format
-msgid "not a git repository: %s"
-msgstr "to nie jest repozytorium gita: %s"
+#: sequencer.c:3303
+msgid "and made changes to the index and/or the working tree\n"
+msgstr "i pozostały zmiany w indeksie i/lub drzewie roboczym\n"
 
-#: setup.c:812
+#: sequencer.c:3309
 #, c-format
-msgid "'$%s' too big"
-msgstr "„$%s” za duże"
+msgid ""
+"execution succeeded: %s\n"
+"but left changes to the index and/or the working tree\n"
+"Commit or stash your changes, and then run\n"
+"\n"
+"  git rebase --continue\n"
+"\n"
+msgstr ""
+"wykonanie powiodło się: %s\n"
+"ale pozostały zmiany w indeksie i/lub drzewie roboczym.\n"
+"Złóż swoje zmiany lub dodaj do schowka, i wtedy wykonaj:\n"
+"\n"
+"  git rebase --continue\n"
+"\n"
 
-#: setup.c:826
+#: sequencer.c:3370
 #, c-format
-msgid "not a git repository: '%s'"
-msgstr "to nie jest repozytorium gita: „%s”"
+msgid "illegal label name: '%.*s'"
+msgstr "nieprawidłowa nazwa etykietki „%.*s”"
 
-#: setup.c:855 setup.c:857 setup.c:888
-#, c-format
-msgid "cannot chdir to '%s'"
-msgstr "nie można wejść do „%s”"
+#: sequencer.c:3424
+msgid "writing fake root commit"
+msgstr "zapisywanie fałszywego zapisu korzenia"
 
-#: setup.c:860 setup.c:916 setup.c:926 setup.c:965 setup.c:973
-msgid "cannot come back to cwd"
-msgstr "nie można wrócić do cwd"
+#: sequencer.c:3429
+msgid "writing squash-onto"
+msgstr "zapisywanie spłaszcz-na"
 
-#: setup.c:987
+#: sequencer.c:3513
 #, c-format
-msgid "failed to stat '%*s%s%s'"
-msgstr "nie można wykonać stat na „%*s%s%s”"
+msgid "could not resolve '%s'"
+msgstr "nie można rozwiązać „%s”"
 
-#: setup.c:1225
-msgid "Unable to read current working directory"
-msgstr "Nie można odczytać obecnego katalogu roboczego"
+#: sequencer.c:3546
+msgid "cannot merge without a current revision"
+msgstr "nie można scalić bez bieżącej rewizji"
 
-#: setup.c:1234 setup.c:1240
+#: sequencer.c:3568
 #, c-format
-msgid "cannot change to '%s'"
-msgstr "nie można zmienić na „%s”"
+msgid "unable to parse '%.*s'"
+msgstr "nie można przetworzyć „%.*s”"
 
-#: setup.c:1245
+#: sequencer.c:3577
 #, c-format
-msgid "not a git repository (or any of the parent directories): %s"
-msgstr "to nie jest repozytorium gita (ani żaden z katalogów nadrzędnych): %s"
+msgid "nothing to merge: '%.*s'"
+msgstr "nic do scalenia: „%.*s”"
 
-#: setup.c:1251
+#: sequencer.c:3589
+msgid "octopus merge cannot be executed on top of a [new root]"
+msgstr "nie można wykonać ośmiorniczego scalenia na szczycie [nowego korzenia]"
+
+#: sequencer.c:3605
 #, 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 ""
-"to nie jest repozytorium gita (ani żaden katalog nadrzędny aż do punktu "
-"montowania %s)\n"
-"Zatrzymano na granicy systemu plików (nie ustawiono "
-"GIT_DISCOVERY_ACROSS_FILESYSTEM)."
+msgid "could not get commit message of '%s'"
+msgstr "nie można uzyskać komunikatu zapisu „%s”"
 
-#: setup.c:1362
+#: sequencer.c:3788
 #, c-format
-msgid ""
-"problem with core.sharedRepository filemode value (0%.3o).\n"
-"The owner of files must always have read and write permissions."
-msgstr ""
-"problem z wartością trybu pliku core.sharedRepository (0%.3o).\n"
-"Właściciel plików musi zawsze mieć prawa do odczytu i zapisu."
+msgid "could not even attempt to merge '%.*s'"
+msgstr "nie można nawet spróbować scalić „%.*s”"
 
-#: setup.c:1409
-msgid "open /dev/null or dup failed"
-msgstr "otwarcie /dev/null lub dup() nie powiodło się"
+#: sequencer.c:3804
+msgid "merge: Unable to write new index file"
+msgstr "scalanie: Nie można zapisać nowego pliku indeksu"
 
-#: setup.c:1424
-msgid "fork failed"
-msgstr "fork nie powiódł się"
+#: sequencer.c:3878
+msgid "Cannot autostash"
+msgstr "Nie można automatycznie dodać do schowka"
 
-#: setup.c:1429
-msgid "setsid failed"
-msgstr "setsid nie powiodło się"
+#: sequencer.c:3881
+#, c-format
+msgid "Unexpected stash response: '%s'"
+msgstr "Nieoczekiwana odpowiedź schowka: „%s”"
 
-#: sha1-file.c:480
+#: sequencer.c:3887
 #, c-format
-msgid "object directory %s does not exist; check .git/objects/info/alternates"
-msgstr "katalog obiektów %s nie istnieje; sprawdź .git/objects/info/alternates"
+msgid "Could not create directory for '%s'"
+msgstr "Nie można utworzyć katalogu dla „%s”"
 
-#: sha1-file.c:531
+#: sequencer.c:3890
 #, c-format
-msgid "unable to normalize alternate object path: %s"
-msgstr "nie można znormalizować ścieżki alternatywnego obiektu: %s"
+msgid "Created autostash: %s\n"
+msgstr "Automatycznie zapisano w schowku: %s\n"
+
+#: sequencer.c:3894
+msgid "could not reset --hard"
+msgstr "nie można zresetować --hard"
 
-#: sha1-file.c:603
+#: sequencer.c:3919
 #, c-format
-msgid "%s: ignoring alternate object stores, nesting too deep"
-msgstr ""
-"%s: ignorowanie alternatywnych magazynów obiektów, zagnieżdżenie za głębokie"
+msgid "Applied autostash.\n"
+msgstr "Zastosowano zmiany z automatycznego schowka.\n"
 
-#: sha1-file.c:610
+#: sequencer.c:3931
 #, c-format
-msgid "unable to normalize object directory: %s"
-msgstr "nie można znormalizować katalogu obiektu: %s"
+msgid "cannot store %s"
+msgstr "nie można zapisać %s"
 
-#: sha1-file.c:653
-msgid "unable to fdopen alternates lockfile"
-msgstr "nie można wykonać fdopen na pliku blokady alternatywnych obiektów"
+#: sequencer.c:3934
+#, c-format
+msgid ""
+"%s\n"
+"Your changes are safe in the stash.\n"
+"You can run \"git stash pop\" or \"git stash drop\" at any time.\n"
+msgstr ""
+"%s\n"
+"Twoje zmiany są bezpieczne w schowku.\n"
+"Możesz w każdej chwili wykonać „git stash pop” lub „git stash drop”.\n"
 
-#: sha1-file.c:671
-msgid "unable to read alternates file"
-msgstr "nie można odczytać pliku alternatywnych obiektów"
+#: sequencer.c:3939
+msgid "Applying autostash resulted in conflicts."
+msgstr "Stosowanie zmian z automatycznego schowka spowodowało konflikty."
 
-#: sha1-file.c:678
-msgid "unable to move new alternates file into place"
-msgstr "nie można przenieść na miejsce nowego pliku alternatywnych obiektów"
+#: sequencer.c:3940
+msgid "Autostash exists; creating a new stash entry."
+msgstr ""
+"W schowku istnieje automatyczny wpis; tworzenie nowego wpisu w schowku."
 
-#: sha1-file.c:713
-#, c-format
-msgid "path '%s' does not exist"
-msgstr "ścieżka „%s” nie istnieje"
+#: sequencer.c:4033 git-rebase--preserve-merges.sh:769
+msgid "could not detach HEAD"
+msgstr "nie można odłączyć HEAD"
 
-#: sha1-file.c:734
+#: sequencer.c:4048
 #, c-format
-msgid "reference repository '%s' as a linked checkout is not supported yet."
-msgstr ""
-"repozytorium odniesienia „%s” jako łączone wybranie nie jest jeszcze "
-"wspierane."
+msgid "Stopped at HEAD\n"
+msgstr "Zatrzymano przy HEAD\n"
 
-#: sha1-file.c:740
+#: sequencer.c:4050
 #, c-format
-msgid "reference repository '%s' is not a local repository."
-msgstr "repozytorium odniesienia „%s” nie jest lokalnym repozytorium."
+msgid "Stopped at %s\n"
+msgstr "Zatrzymano przy %s\n"
 
-#: sha1-file.c:746
+#: sequencer.c:4058
 #, c-format
-msgid "reference repository '%s' is shallow"
-msgstr "repozytorium odniesienia „%s” jest płytkie"
+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 ""
+"Nie można wykonać polecenia z zadań do zrobienia\n"
+"\n"
+"    %.*s\n"
+"Zostało przeplanowane; Aby zmienić polecenie przed kontynuowaniem,\n"
+"zmień najpierw listę zadań do zrobienia:\n"
+"\n"
+"    git rebase --edit-todo\n"
+"    git rebase --continue\n"
 
-#: sha1-file.c:754
+#: sequencer.c:4104
 #, c-format
-msgid "reference repository '%s' is grafted"
-msgstr "repozytorium odniesienia „%s” jest szczepione"
+msgid "Rebasing (%d/%d)%s"
+msgstr "Przestawianie (%d/%d)%s"
 
-#: sha1-file.c:814
+#: sequencer.c:4149
 #, c-format
-msgid "invalid line while parsing alternate refs: %s"
-msgstr "błędny wiersz przy przetwarzaniu alternatywnych referencji: %s"
+msgid "Stopped at %s...  %.*s\n"
+msgstr "Zatrzymano na %s... %.*s\n"
 
-#: sha1-file.c:964
+#: sequencer.c:4220
 #, c-format
-msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
-msgstr "próba mmap %<PRIuMAX> ponad ograniczeniem %<PRIuMAX>"
+msgid "unknown command %d"
+msgstr "nieznane polecenie %d"
 
-#: sha1-file.c:985
-msgid "mmap failed"
-msgstr "mmap nie powiodło się"
+#: sequencer.c:4279
+msgid "could not read orig-head"
+msgstr "nie można odczytać pierwotnego czoła"
 
-#: sha1-file.c:1149
-#, c-format
-msgid "object file %s is empty"
-msgstr "plik obiektu %s jest pusty"
+#: sequencer.c:4284
+msgid "could not read 'onto'"
+msgstr "nie można odczytać „onto”"
 
-#: sha1-file.c:1284 sha1-file.c:2477
+#: sequencer.c:4298
 #, c-format
-msgid "corrupt loose object '%s'"
-msgstr "uszkodzony wolny obiekt „%s”"
+msgid "could not update HEAD to %s"
+msgstr "nie można zapisać HEAD do %s"
 
-#: sha1-file.c:1286 sha1-file.c:2481
+#: sequencer.c:4358
 #, c-format
-msgid "garbage at end of loose object '%s'"
-msgstr "śmieci na końcu wolnego obiektu „%s”"
+msgid "Successfully rebased and updated %s.\n"
+msgstr "Pomyślnie przestawiono i zaktualizowano %s.\n"
 
-#: sha1-file.c:1328
-msgid "invalid object type"
-msgstr "zły rodzaj obiektu"
+#: sequencer.c:4391
+msgid "cannot rebase: You have unstaged changes."
+msgstr "nie można przestawić: Masz nieprzygotowane zmiany."
 
-#: sha1-file.c:1412
-#, c-format
-msgid "unable to unpack %s header with --allow-unknown-type"
-msgstr "nie można rozpakować nagłówka %s z --allow-unknown-type"
+#: sequencer.c:4400
+msgid "cannot amend non-existing commit"
+msgstr "nie można poprawić nieistniejącego obiektu"
 
-#: sha1-file.c:1415
+#: sequencer.c:4402
 #, c-format
-msgid "unable to unpack %s header"
-msgstr "nie można rozpakować nagłówka %s"
+msgid "invalid file: '%s'"
+msgstr "nieprawidłowy plik: „%s”"
 
-#: sha1-file.c:1421
+#: sequencer.c:4404
 #, c-format
-msgid "unable to parse %s header with --allow-unknown-type"
-msgstr "nie można przetworzyć nagłówka %s z --allow-unknown-type"
+msgid "invalid contents: '%s'"
+msgstr "nieprawidłowa zawartość: „%s”"
 
-#: sha1-file.c:1424
-#, c-format
-msgid "unable to parse %s header"
-msgstr "nie można przetworzyć nagłówka %s"
+#: sequencer.c:4407
+msgid ""
+"\n"
+"You have uncommitted changes in your working tree. Please, commit them\n"
+"first and then run 'git rebase --continue' again."
+msgstr ""
+"\n"
+"Masz niezłożone zmiany w drzewie roboczym. Najpierw je złóż\n"
+"i wtedy ponownie wykonaj „git rebase --continue”."
 
-#: sha1-file.c:1651
+#: sequencer.c:4443 sequencer.c:4482
 #, c-format
-msgid "failed to read object %s"
-msgstr "nie można odczytać obiektu %s"
+msgid "could not write file: '%s'"
+msgstr "nie można zapisać pliku: „%s”"
 
-#: sha1-file.c:1655
-#, c-format
-msgid "replacement %s not found for %s"
-msgstr "nie znaleziono zastępstwa %s dla %s"
+#: sequencer.c:4498
+msgid "could not remove CHERRY_PICK_HEAD"
+msgstr "nie można usunąć CHERRY_PICK_HEAD"
 
-#: sha1-file.c:1659
-#, c-format
-msgid "loose object %s (stored in %s) is corrupt"
-msgstr "wolny obiekt %s (przechowywany w %s) jest uszkodzony"
+#: sequencer.c:4505
+msgid "could not commit staged changes."
+msgstr "nie udało się złożyć zmian ze schowka."
 
-#: sha1-file.c:1663
+#: sequencer.c:4621
 #, c-format
-msgid "packed object %s (stored in %s) is corrupt"
-msgstr "spakowany obiekt %s (przechowywany w %s) jest uszkodzony"
+msgid "%s: can't cherry-pick a %s"
+msgstr "%s: nie można dobrać %s"
 
-#: sha1-file.c:1768
+#: sequencer.c:4625
 #, c-format
-msgid "unable to write file %s"
-msgstr "nie można zapisać pliku %s"
+msgid "%s: bad revision"
+msgstr "%s: zła rewizja"
 
-#: sha1-file.c:1775
-#, c-format
-msgid "unable to set permission to '%s'"
-msgstr "nie można ustawić uprawnień na „%s”"
+#: sequencer.c:4660
+msgid "can't revert as initial commit"
+msgstr "nie można odwrócić jako pierwszy zapis"
 
-#: sha1-file.c:1782
-msgid "file write error"
-msgstr "błąd zapisu pliku"
+#: sequencer.c:5137
+msgid "make_script: unhandled options"
+msgstr "make_script: nieobsłużone opcje"
 
-#: sha1-file.c:1802
-msgid "error when closing loose object file"
-msgstr "błąd podczas zamykania pliku wolnego obiektu"
+#: sequencer.c:5140
+msgid "make_script: error preparing revisions"
+msgstr "make_script: błąd przygotowania rewizji"
 
-#: sha1-file.c:1867
-#, c-format
-msgid "insufficient permission for adding an object to repository database %s"
-msgstr ""
-"niewystarczające uprawnienia, aby dodać obiekt do bazy danych repozytorium %s"
+#: sequencer.c:5382 sequencer.c:5399
+msgid "nothing to do"
+msgstr "nic do zrobienia"
 
-#: sha1-file.c:1869
-msgid "unable to create temporary file"
-msgstr "nie można utworzyć tymczasowego pliku"
+#: sequencer.c:5418
+msgid "could not skip unnecessary pick commands"
+msgstr "nie można pominąć niepotrzebnych poleceń pick"
 
-#: sha1-file.c:1893
-msgid "unable to write loose object file"
-msgstr "nie można zapisać pliku wolnego obiektu"
+#: sequencer.c:5512
+msgid "the script was already rearranged."
+msgstr "kolejność skryptu została już zmieniona."
 
-#: sha1-file.c:1899
+#: setup.c:133
 #, c-format
-msgid "unable to deflate new object %s (%d)"
-msgstr "nie można skompresować nowego obiektu %s (%d)"
+msgid "'%s' is outside repository at '%s'"
+msgstr "„%s” jest poza repozytorium w „%s”"
 
-#: sha1-file.c:1903
+#: setup.c:185
 #, c-format
-msgid "deflateEnd on object %s failed (%d)"
-msgstr "deflateEnd w obiekcie %s nie powiodło się (%d)"
+msgid ""
+"%s: no such path in the working tree.\n"
+"Use 'git <command> -- <path>...' to specify paths that do not exist locally."
+msgstr ""
+"%s: nie ma takiej ścieżki w drzewie roboczym.\n"
+"Użyj „git <polecenie> -- <ścieżka>...”, aby podać nieistniejące lokalnie "
+"ścieżki."
 
-#: sha1-file.c:1907
+#: setup.c:198
 #, c-format
-msgid "confused by unstable object source data for %s"
-msgstr "zamieszanie przez dane źródłowe niestabilnego obiektu dla %s"
+msgid ""
+"ambiguous argument '%s': unknown revision or path not in the working tree.\n"
+"Use '--' to separate paths from revisions, like this:\n"
+"'git <command> [<revision>...] -- [<file>...]'"
+msgstr ""
+"niejednoznaczny argument „%s”: nieznana rewizja lub ścieżka niebędąca\n"
+"w drzewie roboczym. Użyj „--” do oddzielenia ścieżek od rewizji:\n"
+"„git <polecenie> [<rewizja>...] -- [<plik>...]”"
 
-#: sha1-file.c:1917 builtin/pack-objects.c:1086
+#: setup.c:264
 #, c-format
-msgid "failed utime() on %s"
-msgstr "nie można wykonać utime() na %s"
+msgid "option '%s' must come before non-option arguments"
+msgstr "opcja „%s” musi się znaleźć przed argumentami, nie licząc innych opcji"
 
-#: sha1-file.c:1994
+#: setup.c:283
 #, c-format
-msgid "cannot read object for %s"
-msgstr "nie można odczytać obiektu do %s"
-
-#: sha1-file.c:2045
-msgid "corrupt commit"
-msgstr "uszkodzony zapis"
-
-#: sha1-file.c:2053
-msgid "corrupt tag"
-msgstr "uszkodzony tag"
+msgid ""
+"ambiguous argument '%s': both revision and filename\n"
+"Use '--' to separate paths from revisions, like this:\n"
+"'git <command> [<revision>...] -- [<file>...]'"
+msgstr ""
+"niejednoznaczny argument „%s”: jednocześnie rewizja i nazwa pliku\n"
+"Użyj „--”, aby rozdzielić ścieżki od rewizji:\n"
+"„git <polecenie> [<rewizja>...] -- [<plik>...]”"
 
-#: sha1-file.c:2153
-#, c-format
-msgid "read error while indexing %s"
-msgstr "błąd odczytu podczas indeksowania %s"
+#: setup.c:419
+msgid "unable to set up work tree using invalid config"
+msgstr ""
+"nie można ustawić drzewa roboczego przy użyciu nieprawidłowej konfiguracji"
 
-#: sha1-file.c:2156
-#, c-format
-msgid "short read while indexing %s"
-msgstr "przeczytano mniej niż oczekiwano przy indeksowaniu %s"
+#: setup.c:423
+msgid "this operation must be run in a work tree"
+msgstr "to działanie musi być wykonane w drzewie roboczym"
 
-#: sha1-file.c:2229 sha1-file.c:2239
+#: setup.c:661
 #, c-format
-msgid "%s: failed to insert into database"
-msgstr "%s: nie można wstawić do bazy danych"
+msgid "Expected git repo version <= %d, found %d"
+msgstr "Oczekiwano wersji repozytorium gita <= %d, znaleziono %d"
 
-#: sha1-file.c:2245
-#, c-format
-msgid "%s: unsupported file type"
-msgstr "%s: niewspierany typ pliku"
+#: setup.c:669
+msgid "unknown repository extensions found:"
+msgstr "znaleziono nieznane rozszerzenia repozytorium:"
 
-#: sha1-file.c:2269
-#, c-format
-msgid "%s is not a valid object"
-msgstr "%s nie jest prawidłowym obiektem"
+#: setup.c:681
+msgid "repo version is 0, but v1-only extensions found:"
+msgstr "wersja repozytorium to 0, ale znaleziono rozszerzenia typowe dla v1"
 
-#: sha1-file.c:2271
+#: setup.c:700
 #, c-format
-msgid "%s is not a valid '%s' object"
-msgstr "%s nie jest prawidłowym obiektem „%s”"
+msgid "error opening '%s'"
+msgstr "nie można otworzyć „%s”"
 
-#: sha1-file.c:2298 builtin/index-pack.c:192
+#: setup.c:702
 #, c-format
-msgid "unable to open %s"
-msgstr "nie można otworzyć %s"
+msgid "too large to be a .git file: '%s'"
+msgstr "za duży jak na plik .git: „%s”"
 
-#: sha1-file.c:2488 sha1-file.c:2541
+#: setup.c:704
 #, c-format
-msgid "hash mismatch for %s (expected %s)"
-msgstr "niezgodne skróty %s (oczekiwano %s)"
+msgid "error reading %s"
+msgstr "błąd odczytu %s"
 
-#: sha1-file.c:2512
+#: setup.c:706
 #, c-format
-msgid "unable to mmap %s"
-msgstr "nie można wykonać mmap %s"
+msgid "invalid gitfile format: %s"
+msgstr "nieprawidłowy format pliku gitfile: %s"
 
-#: sha1-file.c:2517
+#: setup.c:708
 #, c-format
-msgid "unable to unpack header of %s"
-msgstr "nie można rozpakować nagłówka %s"
+msgid "no path in gitfile: %s"
+msgstr "brak ścieżki w pliku gitfile %s"
 
-#: sha1-file.c:2523
+#: setup.c:710
 #, c-format
-msgid "unable to parse header of %s"
-msgstr "nie można przetworzyć nagłówka %s"
+msgid "not a git repository: %s"
+msgstr "to nie jest repozytorium gita: %s"
 
-#: sha1-file.c:2534
+#: setup.c:812
 #, c-format
-msgid "unable to unpack contents of %s"
-msgstr "nie można rozpakować zawartości %s"
+msgid "'$%s' too big"
+msgstr "„$%s” za duże"
 
-#: sha1-name.c:486
+#: setup.c:826
 #, c-format
-msgid "short SHA1 %s is ambiguous"
-msgstr "krótkie SHA-1 %s jest niejednoznaczne"
-
-#: sha1-name.c:497
-msgid "The candidates are:"
-msgstr "Kandydaci to:"
-
-#: sha1-name.c:796
-msgid ""
-"Git normally never creates a ref that ends with 40 hex characters\n"
-"because it will be ignored when you just specify 40-hex. These refs\n"
-"may be created by mistake. For example,\n"
-"\n"
-"  git switch -c $br $(git rev-parse ...)\n"
-"\n"
-"where \"$br\" is somehow empty and a 40-hex ref is created. Please\n"
-"examine these refs and maybe delete them. Turn this message off by\n"
-"running \"git config advice.objectNameWarning false\""
-msgstr ""
-"Git normalnie nigdy nie tworzy referencji kończącej się czterdziestoma\n"
-"heksadecymalnymi znakami, bo byłyby ignorowane zawsze, gdy podasz\n"
-"tylko tych czterdzieści znaków. Te referencje mogą być utworzone przez\n"
-"pomyłkę.  Na przykład\n"
-"\n"
-"  git switch -c $br $(git rev-parse ...)\n"
-"\n"
-"gdzie „$br” jakoś okazuje się puste i tworzona jest taka nietypowa "
-"referencja.\n"
-"Sprawdź te referencje i może je usuń. Wyłącz ten komunikat za pomocą\n"
-"„git config advice.objectNameWarning false”"
+msgid "not a git repository: '%s'"
+msgstr "to nie jest repozytorium gita: „%s”"
 
-#: sha1-name.c:916
+#: setup.c:855 setup.c:857 setup.c:888
 #, c-format
-msgid "log for '%.*s' only goes back to %s"
-msgstr "dziennik „%.*s” sięga tylko %s"
+msgid "cannot chdir to '%s'"
+msgstr "nie można wejść do „%s”"
 
-#: sha1-name.c:924
-#, c-format
-msgid "log for '%.*s' only has %d entries"
-msgstr "dziennik „%.*s” ma tylko %d wpisów"
+#: setup.c:860 setup.c:916 setup.c:926 setup.c:965 setup.c:973
+msgid "cannot come back to cwd"
+msgstr "nie można wrócić do cwd"
 
-#: sha1-name.c:1702
+#: setup.c:987
 #, c-format
-msgid "path '%s' exists on disk, but not in '%.*s'"
-msgstr "ścieżka „%s” istnieje na dysku, ale nie w „%.*s”"
+msgid "failed to stat '%*s%s%s'"
+msgstr "nie można wykonać stat na „%*s%s%s”"
+
+#: setup.c:1225
+msgid "Unable to read current working directory"
+msgstr "Nie można odczytać obecnego katalogu roboczego"
 
-#: sha1-name.c:1708
+#: setup.c:1234 setup.c:1240
 #, c-format
-msgid ""
-"path '%s' exists, but not '%s'\n"
-"hint: Did you mean '%.*s:%s' aka '%.*s:./%s'?"
-msgstr ""
-"ścieżka „%s” istnieje, ale nie „%s”\n"
-"wskazówka: Czy chodziło o „%.*s:%s” czyli „%.*s:./%s”?"
+msgid "cannot change to '%s'"
+msgstr "nie można zmienić na „%s”"
 
-#: sha1-name.c:1717
+#: setup.c:1245
 #, c-format
-msgid "path '%s' does not exist in '%.*s'"
-msgstr "ścieżka „%s” nie istnieje w „%.*s”"
+msgid "not a git repository (or any of the parent directories): %s"
+msgstr "to nie jest repozytorium gita (ani żaden z katalogów nadrzędnych): %s"
 
-#: sha1-name.c:1745
+#: setup.c:1251
 #, c-format
 msgid ""
-"path '%s' is in the index, but not at stage %d\n"
-"hint: Did you mean ':%d:%s'?"
+"not a git repository (or any parent up to mount point %s)\n"
+"Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set)."
 msgstr ""
-"ścieżka „%s” jest w indeksie, ale nie na etapie %d\n"
-"wskazówka: Czy chodziło o „:%d:%s”?"
+"to nie jest repozytorium gita (ani żaden katalog nadrzędny aż do punktu "
+"montowania %s)\n"
+"Zatrzymano na granicy systemu plików (nie ustawiono "
+"GIT_DISCOVERY_ACROSS_FILESYSTEM)."
 
-#: sha1-name.c:1761
+#: setup.c:1362
 #, c-format
 msgid ""
-"path '%s' is in the index, but not '%s'\n"
-"hint: Did you mean ':%d:%s' aka ':%d:./%s'?"
+"problem with core.sharedRepository filemode value (0%.3o).\n"
+"The owner of files must always have read and write permissions."
 msgstr ""
-"ścieżka „%s” jest w indeksie, ale nie „%s”\n"
-"wskazówka: Czy chodziło o „:%d:%s” czyli „:%d:./%s”?"
-
-#: sha1-name.c:1769
-#, c-format
-msgid "path '%s' exists on disk, but not in the index"
-msgstr "ścieżka „%s” istnieje na dysku, ale nie w indeksie"
+"problem z wartością trybu pliku core.sharedRepository (0%.3o).\n"
+"Właściciel plików musi zawsze mieć prawa do odczytu i zapisu."
 
-#: sha1-name.c:1771
-#, c-format
-msgid "path '%s' does not exist (neither on disk nor in the index)"
-msgstr "ścieżka „%s” nie istnieje (ani na dysku, ani w indeksie)"
+#: setup.c:1409
+msgid "open /dev/null or dup failed"
+msgstr "otwarcie /dev/null lub dup() nie powiodło się"
 
-#: sha1-name.c:1784
-msgid "relative path syntax can't be used outside working tree"
-msgstr "składnia ścieżki względnej nie może być użyta poza drzewem roboczym"
+#: setup.c:1424
+msgid "fork failed"
+msgstr "fork nie powiódł się"
 
-#: sha1-name.c:1922
-#, c-format
-msgid "invalid object name '%.*s'."
-msgstr "nieprawidłowa nazwa obiektu: „%.*s”."
+#: setup.c:1429
+msgid "setsid failed"
+msgstr "setsid nie powiodło się"
 
 #. TRANSLATORS: IEC 80000-13:2008 gibibyte
 #: strbuf.c:848
@@ -8263,7 +8525,7 @@ msgstr[1] "%u bajty/s"
 msgstr[2] "%u bajtów/s"
 
 #: strbuf.c:1166 wrapper.c:199 wrapper.c:369 builtin/am.c:719
-#: builtin/rebase.c:864
+#: builtin/rebase.c:866
 #, c-format
 msgid "could not open '%s' for writing"
 msgstr "nie można otworzyć „%s” do zapisywania"
@@ -8326,12 +8588,12 @@ msgstr "w niezapełnionym pod-module „%s”"
 msgid "Pathspec '%s' is in submodule '%.*s'"
 msgstr "Ścieżka „%s” jest w pod-module „%.*s”"
 
-#: submodule.c:434
+#: submodule.c:435
 #, c-format
 msgid "bad --ignore-submodules argument: %s"
 msgstr "zły argument --ignore-submodules: %s"
 
-#: submodule.c:816
+#: submodule.c:817
 #, c-format
 msgid ""
 "Submodule in commit %s at path: '%s' collides with a submodule named the "
@@ -8340,12 +8602,12 @@ msgstr ""
 "Pod-moduł w zapisie %s w ścieżce „%s” zderzył się z pod-modułem o tej samej "
 "nazwie. Pomijanie."
 
-#: submodule.c:919
+#: submodule.c:920
 #, c-format
 msgid "submodule entry '%s' (%s) is a %s, not a commit"
 msgstr "element pod-modułu „%s” (%s) nie jest zapisem, jest rodzaju %s"
 
-#: submodule.c:1004
+#: submodule.c:1005
 #, c-format
 msgid ""
 "Could not run 'git rev-list <commits> --not --remotes -n 1' command in "
@@ -8354,36 +8616,36 @@ msgstr ""
 "Nie można wykonać polecenia „git rev-list <zapisy> --not --remotes -n 1” w "
 "pod-module %s"
 
-#: submodule.c:1127
+#: submodule.c:1128
 #, c-format
 msgid "process for submodule '%s' failed"
 msgstr "proces dla pod-modułu „%s” nie powiódł się"
 
-#: submodule.c:1156 builtin/branch.c:680 builtin/submodule--helper.c:2469
+#: submodule.c:1157 builtin/branch.c:689 builtin/submodule--helper.c:2469
 msgid "Failed to resolve HEAD as a valid ref."
 msgstr "Nie można rozwiązać HEAD jako prawidłowej referencji."
 
-#: submodule.c:1167
+#: submodule.c:1168
 #, c-format
 msgid "Pushing submodule '%s'\n"
 msgstr "Wypychanie pod-modułu „%s”\n"
 
-#: submodule.c:1170
+#: submodule.c:1171
 #, c-format
 msgid "Unable to push submodule '%s'\n"
 msgstr "Nie można wypchnąć pod-modułu „%s”\n"
 
-#: submodule.c:1462
+#: submodule.c:1463
 #, c-format
 msgid "Fetching submodule %s%s\n"
 msgstr "Pobieranie pod-modułu %s%s\n"
 
-#: submodule.c:1492
+#: submodule.c:1497
 #, c-format
 msgid "Could not access submodule '%s'\n"
 msgstr "Nie można się dostać do pod-modułu „%s”\n"
 
-#: submodule.c:1646
+#: submodule.c:1652
 #, c-format
 msgid ""
 "Errors during submodule fetch:\n"
@@ -8392,61 +8654,61 @@ msgstr ""
 "Błędy podczas pobierania pod-modułów:\n"
 "%s"
 
-#: submodule.c:1671
+#: submodule.c:1677
 #, c-format
 msgid "'%s' not recognized as a git repository"
 msgstr "nie rozpoznano „%s” jako repozytorium gita"
 
-#: submodule.c:1688
+#: submodule.c:1694
 #, c-format
 msgid "Could not run 'git status --porcelain=2' in submodule %s"
 msgstr "Nie można wykonać „git status --porcelain=2” w pod-module %s"
 
-#: submodule.c:1729
+#: submodule.c:1735
 #, c-format
 msgid "'git status --porcelain=2' failed in submodule %s"
 msgstr "„git status --porcelain=2” nie powiódł się w pod-module %s"
 
-#: submodule.c:1804
+#: submodule.c:1810
 #, c-format
 msgid "could not start 'git status' in submodule '%s'"
 msgstr "nie można uruchomić „git status” w pod-module „%s”"
 
-#: submodule.c:1817
+#: submodule.c:1823
 #, c-format
 msgid "could not run 'git status' in submodule '%s'"
 msgstr "nie można wykonać „git status” w pod-module „%s”"
 
-#: submodule.c:1832
+#: submodule.c:1838
 #, c-format
 msgid "Could not unset core.worktree setting in submodule '%s'"
 msgstr "Nie można usunąć ustawienia core.worktree w pod-module „%s”"
 
-#: submodule.c:1859 submodule.c:2169
+#: submodule.c:1865 submodule.c:2175
 #, c-format
 msgid "could not recurse into submodule '%s'"
 msgstr "nie można zejść do pod-modułu „%s”"
 
-#: submodule.c:1880
+#: submodule.c:1886
 msgid "could not reset submodule index"
 msgstr "nie można zresetować indeksu pod-modułu"
 
-#: submodule.c:1922
+#: submodule.c:1928
 #, c-format
 msgid "submodule '%s' has dirty index"
 msgstr "pod-moduł „%s” ma brudny indeks"
 
-#: submodule.c:1974
+#: submodule.c:1980
 #, c-format
 msgid "Submodule '%s' could not be updated."
 msgstr "Nie można zaktualizować pod-modułu „%s”."
 
-#: submodule.c:2042
+#: submodule.c:2048
 #, c-format
 msgid "submodule git dir '%s' is inside git dir '%.*s'"
 msgstr "katalog gita pod-modułu „%s” jest w katalogu gita „%.*s”"
 
-#: submodule.c:2063
+#: submodule.c:2069
 #, c-format
 msgid ""
 "relocate_gitdir for submodule '%s' with more than one worktree not supported"
@@ -8454,17 +8716,17 @@ msgstr ""
 "relocate_gitdir dla pod-modułu „%s” z ponad jednym drzewem roboczym "
 "niewspierane"
 
-#: submodule.c:2075 submodule.c:2134
+#: submodule.c:2081 submodule.c:2140
 #, c-format
 msgid "could not lookup name for submodule '%s'"
 msgstr "nie odnaleziono nazwy pod-modułu „%s”"
 
-#: submodule.c:2079
+#: submodule.c:2085
 #, c-format
 msgid "refusing to move '%s' into an existing git dir"
 msgstr "odmawiam przeniesienia „%s” do istniejącego katalogu gita"
 
-#: submodule.c:2086
+#: submodule.c:2092
 #, c-format
 msgid ""
 "Migrating git directory of '%s%s' from\n"
@@ -8475,11 +8737,11 @@ msgstr ""
 "„%s” do\n"
 "„%s”\n"
 
-#: submodule.c:2214
+#: submodule.c:2220
 msgid "could not start ls-files in .."
 msgstr "nie można uruchomić ls-files w .."
 
-#: submodule.c:2254
+#: submodule.c:2260
 #, c-format
 msgid "ls-tree returned unexpected return code %d"
 msgstr "ls-tree zwróciło nieoczekiwany kod wyjścia %d"
@@ -8510,7 +8772,7 @@ msgstr "pusty klucz w końcówce „%.*s”"
 msgid "could not read input file '%s'"
 msgstr "nie można odczytać pliku „%s”"
 
-#: trailer.c:751
+#: trailer.c:751 builtin/mktag.c:91
 msgid "could not read from stdin"
 msgstr "nie można czytać ze standardowego wejścia"
 
@@ -8583,7 +8845,7 @@ msgstr "nie można wykonać fast-import"
 msgid "error while running fast-import"
 msgstr "błąd wykonywania fast-import"
 
-#: transport-helper.c:549 transport-helper.c:1236
+#: transport-helper.c:549 transport-helper.c:1237
 #, c-format
 msgid "could not read ref %s"
 msgstr "nie można odczytać referencji %s"
@@ -8601,7 +8863,7 @@ msgstr "ustawianie ścieżki zdalnej usługi niewspierane przez protokół"
 msgid "invalid remote service path"
 msgstr "nieprawidłowa ścieżka zdalnej usługi"
 
-#: transport-helper.c:661 transport.c:1446
+#: transport-helper.c:661 transport.c:1447
 msgid "operation not supported by protocol"
 msgstr "operacja niewspierana przez protokół"
 
@@ -8680,52 +8942,52 @@ msgstr ""
 "Brak wspólnych referencji lub żadnych nie podano; brak działania.\n"
 "Pewnie należy podać jakąś gałąź.\n"
 
-#: transport-helper.c:1213
+#: transport-helper.c:1214
 #, c-format
 msgid "unsupported object format '%s'"
 msgstr "niewspierany format obiektu „%s”"
 
-#: transport-helper.c:1222
+#: transport-helper.c:1223
 #, c-format
 msgid "malformed response in ref list: %s"
 msgstr "nieprawidłowa odpowiedź na liście referencji: %s"
 
-#: transport-helper.c:1374
+#: transport-helper.c:1375
 #, c-format
 msgid "read(%s) failed"
 msgstr "read(%s) nie powiodło się"
 
-#: transport-helper.c:1401
+#: transport-helper.c:1402
 #, c-format
 msgid "write(%s) failed"
 msgstr "write(%s) nie powiodło się"
 
-#: transport-helper.c:1450
+#: transport-helper.c:1451
 #, c-format
 msgid "%s thread failed"
 msgstr "wątek %s nie powiódł się"
 
-#: transport-helper.c:1454
+#: transport-helper.c:1455
 #, c-format
 msgid "%s thread failed to join: %s"
 msgstr "wątek %s nie może się złączyć: %s"
 
-#: transport-helper.c:1473 transport-helper.c:1477
+#: transport-helper.c:1474 transport-helper.c:1478
 #, c-format
 msgid "can't start thread for copying data: %s"
 msgstr "nie można uruchomić wątku do kopiowania danych: %s"
 
-#: transport-helper.c:1514
+#: transport-helper.c:1515
 #, c-format
 msgid "%s process failed to wait"
 msgstr "procesowi %s nie udało się zaczekać"
 
-#: transport-helper.c:1518
+#: transport-helper.c:1519
 #, c-format
 msgid "%s process failed"
 msgstr "proces %s nie powiódł się"
 
-#: transport-helper.c:1536 transport-helper.c:1545
+#: transport-helper.c:1537 transport-helper.c:1546
 msgid "can't start thread for copying data"
 msgstr "nie można uruchomić wątku do kopiowania danych"
 
@@ -8814,23 +9076,23 @@ msgstr ""
 msgid "Aborting."
 msgstr "Przerywanie."
 
-#: transport.c:1315
+#: transport.c:1316
 msgid "failed to push all needed submodules"
 msgstr "nie można wypchnąć wszystkich potrzebnych zagnieżdżonych pod-modułów"
 
-#: tree-walk.c:32
+#: tree-walk.c:33
 msgid "too-short tree object"
 msgstr "za krótki obiekt drzewa"
 
-#: tree-walk.c:38
+#: tree-walk.c:39
 msgid "malformed mode in tree entry"
 msgstr "nieprawidłowy tryb w elemencie drzewa"
 
-#: tree-walk.c:42
+#: tree-walk.c:43
 msgid "empty filename in tree entry"
 msgstr "pusta nazwa pliku w elemencie drzewa"
 
-#: tree-walk.c:117
+#: tree-walk.c:118
 msgid "too-short tree file"
 msgstr "za krótki plik drzewa"
 
@@ -9086,7 +9348,7 @@ msgstr ""
 msgid "Updating index flags"
 msgstr "Aktualizowanie flag indeksu"
 
-#: upload-pack.c:1550
+#: upload-pack.c:1543
 msgid "expected flush after fetch arguments"
 msgstr "oczekiwano wypróżnienia po argumentach pobrania"
 
@@ -9123,73 +9385,103 @@ msgstr "nieprawidłowy segment ścieżki „..”"
 msgid "Fetching objects"
 msgstr "Pobieranie obiektów"
 
-#: worktree.c:236 builtin/am.c:2103
+#: worktree.c:238 builtin/am.c:2103
 #, c-format
 msgid "failed to read '%s'"
 msgstr "nie można odczytać „%s”"
 
-#: worktree.c:283
+#: worktree.c:304
 #, c-format
 msgid "'%s' at main working tree is not the repository directory"
 msgstr "„%s” w głównym drzewie roboczym nie jest katalogiem repozytorium"
 
-#: worktree.c:294
+#: worktree.c:315
 #, c-format
 msgid "'%s' file does not contain absolute path to the working tree location"
 msgstr ""
 "plik „%s” nie zawiera ścieżki bezwzględnej do położenia drzewa roboczego"
 
-#: worktree.c:306
+#: worktree.c:327
 #, c-format
 msgid "'%s' does not exist"
 msgstr "„%s” nie istnieje"
 
-#: worktree.c:312
+#: worktree.c:333
 #, c-format
 msgid "'%s' is not a .git file, error code %d"
 msgstr "„%s” nie jest plikiem .git, kod błędu %d"
 
-#: worktree.c:321
+#: worktree.c:342
 #, c-format
 msgid "'%s' does not point back to '%s'"
 msgstr "„%s” nie wskazuje z powrotem na „%s”"
 
-#: worktree.c:587
+#: worktree.c:608
 msgid "not a directory"
 msgstr "nie jest katalogiem"
 
-#: worktree.c:596
+#: worktree.c:617
 msgid ".git is not a file"
 msgstr ".git nie jest plikiem"
 
-#: worktree.c:598
+#: worktree.c:619
 msgid ".git file broken"
 msgstr "plik .git zepsuty"
 
-#: worktree.c:600
+#: worktree.c:621
 msgid ".git file incorrect"
 msgstr "plik .git nieprawidłowy"
 
-#: worktree.c:670
+#: worktree.c:727
 msgid "not a valid path"
 msgstr "nieprawidłowa ścieżka"
 
-#: worktree.c:676
+#: worktree.c:733
 msgid "unable to locate repository; .git is not a file"
 msgstr "nie odnaleziono repozytorium; .git nie jest plikiem"
 
-#: worktree.c:679
+#: worktree.c:737
+msgid "unable to locate repository; .git file does not reference a repository"
+msgstr "nie odnaleziono repozytorium; plik .git nie odnosi się do repozytorium"
+
+#: worktree.c:741
 msgid "unable to locate repository; .git file broken"
 msgstr "nie odnaleziono repozytorium; plik .git zepsuty"
 
-#: worktree.c:685
+#: worktree.c:747
 msgid "gitdir unreadable"
 msgstr "katalog gita nie do odczytania"
 
-#: worktree.c:689
+#: worktree.c:751
 msgid "gitdir incorrect"
 msgstr "katalog gita nieprawidłowy"
 
+#: worktree.c:776
+msgid "not a valid directory"
+msgstr "nie jest prawidłowym katalogiem"
+
+#: worktree.c:782
+msgid "gitdir file does not exist"
+msgstr "plik gitdir nie istnieje"
+
+#: worktree.c:787 worktree.c:796
+#, c-format
+msgid "unable to read gitdir file (%s)"
+msgstr "nie można odczytać pliku gitdir (%s)"
+
+#: worktree.c:806
+#, c-format
+msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
+msgstr "przykrótki odczyt (oczekiwano %<PRIuMAX> bajtów, odczytano %<PRIuMAX>)"
+
+#: worktree.c:814
+msgid "invalid gitdir file"
+msgstr "nieprawidłowy plik gitdir"
+
+#: worktree.c:822
+msgid "gitdir file points to non-existent location"
+msgstr "plik gitdir wskazuje nieistniejące położenie"
+
 #: wrapper.c:197 wrapper.c:367
 #, c-format
 msgid "could not open '%s' for reading and writing"
@@ -9233,11 +9525,11 @@ msgstr "  (użyj odpowiednio „git add/rm <plik>...” aby zaznaczyć rozwiąza
 msgid "  (use \"git rm <file>...\" to mark resolution)"
 msgstr "  (użyj „git rm <plik>...” aby zaznaczyć rozwiązanie)"
 
-#: wt-status.c:211 wt-status.c:1070
+#: wt-status.c:211 wt-status.c:1072
 msgid "Changes to be committed:"
 msgstr "Zmiany do złożenia:"
 
-#: wt-status.c:234 wt-status.c:1079
+#: wt-status.c:234 wt-status.c:1081
 msgid "Changes not staged for commit:"
 msgstr "Zmiany nie przygotowane do złożenia:"
 
@@ -9336,7 +9628,7 @@ msgstr "zmieniona zawartość, "
 msgid "untracked content, "
 msgstr "nieśledzona zawartość, "
 
-#: wt-status.c:903
+#: wt-status.c:905
 #, c-format
 msgid "Your stash currently has %d entry"
 msgid_plural "Your stash currently has %d entries"
@@ -9344,15 +9636,15 @@ msgstr[0] "W schowku jest obecnie %d element"
 msgstr[1] "W schowku są obecnie %d elementy"
 msgstr[2] "W schowku jest obecnie %d elementów"
 
-#: wt-status.c:934
+#: wt-status.c:936
 msgid "Submodules changed but not updated:"
 msgstr "Pod-moduły zmienione, ale nie zaktualizowane:"
 
-#: wt-status.c:936
+#: wt-status.c:938
 msgid "Submodule changes to be committed:"
 msgstr "Zmiany w pod-modułach do złożenia:"
 
-#: wt-status.c:1018
+#: wt-status.c:1020
 msgid ""
 "Do not modify or remove the line above.\n"
 "Everything below it will be ignored."
@@ -9360,7 +9652,7 @@ msgstr ""
 "Nie zmieniaj ani nie usuwaj wiersza powyżej.\n"
 "Wszystko po nim będzie pominięte."
 
-#: wt-status.c:1110
+#: wt-status.c:1112
 #, c-format
 msgid ""
 "\n"
@@ -9371,55 +9663,55 @@ msgstr ""
 "Obliczenie wartości gałęzi przed/w tyle zajęło %.2f sekund.\n"
 "Możesz użyć „--no-ahead-behind”, aby tego uniknąć.\n"
 
-#: wt-status.c:1140
+#: wt-status.c:1142
 msgid "You have unmerged paths."
 msgstr "Masz niescalone ścieżki."
 
-#: wt-status.c:1143
+#: wt-status.c:1145
 msgid "  (fix conflicts and run \"git commit\")"
 msgstr "  (napraw konflikty i wykonaj „git commit”)"
 
-#: wt-status.c:1145
+#: wt-status.c:1147
 msgid "  (use \"git merge --abort\" to abort the merge)"
 msgstr "  (użyj „git merge --abort”, aby przerwać scalanie)"
 
-#: wt-status.c:1149
+#: wt-status.c:1151
 msgid "All conflicts fixed but you are still merging."
 msgstr "Wszystkie konflikty naprawione, ale wciąż trwa scalanie."
 
-#: wt-status.c:1152
+#: wt-status.c:1154
 msgid "  (use \"git commit\" to conclude merge)"
 msgstr "  (użyj „git commit”, żeby zwieńczyć scalanie)"
 
-#: wt-status.c:1161
+#: wt-status.c:1163
 msgid "You are in the middle of an am session."
 msgstr "Jesteś w trakcie sesji am."
 
-#: wt-status.c:1164
+#: wt-status.c:1166
 msgid "The current patch is empty."
 msgstr "Obecna ścieżka jest pusta."
 
-#: wt-status.c:1168
+#: wt-status.c:1170
 msgid "  (fix conflicts and then run \"git am --continue\")"
 msgstr "  (napraw konflikty i wykonaj „git am --continue”)"
 
-#: wt-status.c:1170
+#: wt-status.c:1172
 msgid "  (use \"git am --skip\" to skip this patch)"
 msgstr "  (użyj „git am --skip” aby pominąć tę łatkę)"
 
-#: wt-status.c:1172
+#: wt-status.c:1174
 msgid "  (use \"git am --abort\" to restore the original branch)"
 msgstr "  (użyj „git am --abort”, aby przywrócić pierwotną gałąź)"
 
-#: wt-status.c:1305
+#: wt-status.c:1307
 msgid "git-rebase-todo is missing."
 msgstr "brakuje git-rebase-todo."
 
-#: wt-status.c:1307
+#: wt-status.c:1309
 msgid "No commands done."
 msgstr "Nie wykonano żadnych poleceń."
 
-#: wt-status.c:1310
+#: wt-status.c:1312
 #, c-format
 msgid "Last command done (%d command done):"
 msgid_plural "Last commands done (%d commands done):"
@@ -9427,16 +9719,16 @@ msgstr[0] "Ostatnie polecenie wykonane (wykonano %d polecenie):"
 msgstr[1] "Ostatnie polecenia wykonane (wykonano %d polecenia):"
 msgstr[2] "Ostatnie polecenia wykonane (wykonano %d poleceń):"
 
-#: wt-status.c:1321
+#: wt-status.c:1323
 #, c-format
 msgid "  (see more in file %s)"
 msgstr "  (zobacz więcej w pliku %s)"
 
-#: wt-status.c:1326
+#: wt-status.c:1328
 msgid "No commands remaining."
 msgstr "Brak pozostałych poleceń."
 
-#: wt-status.c:1329
+#: wt-status.c:1331
 #, c-format
 msgid "Next command to do (%d remaining command):"
 msgid_plural "Next commands to do (%d remaining commands):"
@@ -9444,178 +9736,186 @@ msgstr[0] "Następne polecenie do wykonania (pozostało %d polecenie):"
 msgstr[1] "Następne polecenia do wykonania (pozostały %d polecenia):"
 msgstr[2] "Następne polecenia do wykonania (pozostało %d poleceń):"
 
-#: wt-status.c:1337
+#: wt-status.c:1339
 msgid "  (use \"git rebase --edit-todo\" to view and edit)"
 msgstr "  (użyj „git rebase --edit-todo”, aby wyświetlić i edytować)"
 
-#: wt-status.c:1349
+#: wt-status.c:1351
 #, c-format
 msgid "You are currently rebasing branch '%s' on '%s'."
 msgstr "Przestawiasz właśnie gałąź „%s” na „%s”."
 
-#: wt-status.c:1354
+#: wt-status.c:1356
 msgid "You are currently rebasing."
 msgstr "Jesteś w trakcie przestawiania."
 
-#: wt-status.c:1367
+#: wt-status.c:1369
 msgid "  (fix conflicts and then run \"git rebase --continue\")"
 msgstr "  (napraw konflikty i wykonaj „git rebase --continue”)"
 
-#: wt-status.c:1369
+#: wt-status.c:1371
 msgid "  (use \"git rebase --skip\" to skip this patch)"
 msgstr "  (użyj „git rebase --skip” aby pominąć tę łatkę)"
 
-#: wt-status.c:1371
+#: wt-status.c:1373
 msgid "  (use \"git rebase --abort\" to check out the original branch)"
 msgstr "  (użyj „git rebase --abort”, aby wybrać pierwotną gałąź)"
 
-#: wt-status.c:1378
+#: wt-status.c:1380
 msgid "  (all conflicts fixed: run \"git rebase --continue\")"
 msgstr "  (wszystkie konflikty naprawione: wykonaj „git rebase --continue”)"
 
-#: wt-status.c:1382
+#: wt-status.c:1384
 #, c-format
 msgid ""
 "You are currently splitting a commit while rebasing branch '%s' on '%s'."
 msgstr "Dzielisz właśnie zapis podczas przestawiania gałęzi „%s” na „%s”."
 
-#: wt-status.c:1387
+#: wt-status.c:1389
 msgid "You are currently splitting a commit during a rebase."
 msgstr "Dzielisz właśnie zapis podczas przestawiania."
 
-#: wt-status.c:1390
+#: wt-status.c:1392
 msgid "  (Once your working directory is clean, run \"git rebase --continue\")"
 msgstr ""
 "  (Kiedy katalog roboczy będzie czysty, wykonaj „git rebase --continue”)"
 
-#: wt-status.c:1394
+#: wt-status.c:1396
 #, c-format
 msgid "You are currently editing a commit while rebasing branch '%s' on '%s'."
 msgstr "Edytujesz właśnie zapis podczas przestawiania gałęzi „%s” na „%s”."
 
-#: wt-status.c:1399
+#: wt-status.c:1401
 msgid "You are currently editing a commit during a rebase."
 msgstr "Edytujesz właśnie zapis podczas przestawiania."
 
-#: wt-status.c:1402
+#: wt-status.c:1404
 msgid "  (use \"git commit --amend\" to amend the current commit)"
 msgstr "  (użyj „git commit --amend”, aby poprawić bieżący zapis)"
 
-#: wt-status.c:1404
+#: wt-status.c:1406
 msgid ""
 "  (use \"git rebase --continue\" once you are satisfied with your changes)"
 msgstr "  (użyj „git rebase --continue”, kiedy zadowolisz się swoimi zmianami)"
 
-#: wt-status.c:1415
+#: wt-status.c:1417
 msgid "Cherry-pick currently in progress."
 msgstr "Trwa właśnie dobieranie."
 
-#: wt-status.c:1418
+#: wt-status.c:1420
 #, c-format
 msgid "You are currently cherry-picking commit %s."
 msgstr "Dobierasz właśnie zapis %s."
 
-#: wt-status.c:1425
+#: wt-status.c:1427
 msgid "  (fix conflicts and run \"git cherry-pick --continue\")"
 msgstr "  (napraw konflikty i wykonaj „git cherry-pick --continue”)"
 
-#: wt-status.c:1428
+#: wt-status.c:1430
 msgid "  (run \"git cherry-pick --continue\" to continue)"
 msgstr "  (wykonaj „git cherry-pick --continue”, aby kontynuować)"
 
-#: wt-status.c:1431
+#: wt-status.c:1433
 msgid "  (all conflicts fixed: run \"git cherry-pick --continue\")"
 msgstr ""
 "  (wszystkie konflikty naprawione: wykonaj „git cherry-pick --continue”)"
 
-#: wt-status.c:1433
+#: wt-status.c:1435
 msgid "  (use \"git cherry-pick --skip\" to skip this patch)"
 msgstr "  (użyj „git cherry-pick --skip”, aby pominąć tę łatkę)"
 
-#: wt-status.c:1435
+#: wt-status.c:1437
 msgid "  (use \"git cherry-pick --abort\" to cancel the cherry-pick operation)"
 msgstr "  (użyj „git cherry-pick --abort”, aby przerwać dobieranie)"
 
-#: wt-status.c:1445
+#: wt-status.c:1447
 msgid "Revert currently in progress."
 msgstr "Trwa właśnie odwracanie."
 
-#: wt-status.c:1448
+#: wt-status.c:1450
 #, c-format
 msgid "You are currently reverting commit %s."
 msgstr "Odwracasz właśnie zapis %s."
 
-#: wt-status.c:1454
+#: wt-status.c:1456
 msgid "  (fix conflicts and run \"git revert --continue\")"
 msgstr "  (napraw konflikty i wykonaj „git revert --continue”)"
 
-#: wt-status.c:1457
+#: wt-status.c:1459
 msgid "  (run \"git revert --continue\" to continue)"
 msgstr "  (wykonaj „git revert --continue”, aby kontynuować)"
 
-#: wt-status.c:1460
+#: wt-status.c:1462
 msgid "  (all conflicts fixed: run \"git revert --continue\")"
 msgstr "  (wszystkie konflikty naprawione: wykonaj „git revert --continue”)"
 
-#: wt-status.c:1462
+#: wt-status.c:1464
 msgid "  (use \"git revert --skip\" to skip this patch)"
 msgstr "  (użyj „git revert --skip” aby pominąć tę łatkę)"
 
-#: wt-status.c:1464
+#: wt-status.c:1466
 msgid "  (use \"git revert --abort\" to cancel the revert operation)"
 msgstr "  (użyj „git revert --abort”, aby przerwać odwracanie)"
 
-#: wt-status.c:1474
+#: wt-status.c:1476
 #, c-format
 msgid "You are currently bisecting, started from branch '%s'."
 msgstr "Jesteś w trakcie przeszukiwania, począwszy od gałęzi „%s”."
 
-#: wt-status.c:1478
+#: wt-status.c:1480
 msgid "You are currently bisecting."
 msgstr "Jesteś w trakcie przeszukiwania."
 
-#: wt-status.c:1481
+#: wt-status.c:1483
 msgid "  (use \"git bisect reset\" to get back to the original branch)"
 msgstr "  (użyj „git bisect reset”, aby powrócić na pierwotną gałąź)"
 
-#: wt-status.c:1492
+#: wt-status.c:1494
 #, c-format
 msgid "You are in a sparse checkout with %d%% of tracked files present."
 msgstr "Jesteś w rzadkim wybraniu z obecnym %d%% śledzonych plików."
 
-#: wt-status.c:1731
+#: wt-status.c:1733
 msgid "On branch "
 msgstr "Na gałęzi "
 
-#: wt-status.c:1738
+#: wt-status.c:1740
 msgid "interactive rebase in progress; onto "
 msgstr "trwa interaktywne przestawianie na "
 
-#: wt-status.c:1740
+#: wt-status.c:1742
 msgid "rebase in progress; onto "
 msgstr "trwa przestawianie na "
 
-#: wt-status.c:1750
+#: wt-status.c:1747
+msgid "HEAD detached at "
+msgstr "HEAD odłączone na "
+
+#: wt-status.c:1749
+msgid "HEAD detached from "
+msgstr "HEAD odłączone od "
+
+#: wt-status.c:1752
 msgid "Not currently on any branch."
 msgstr "Nie jesteś na żadnej gałęzi."
 
-#: wt-status.c:1767
+#: wt-status.c:1769
 msgid "Initial commit"
 msgstr "Pierwszy zapis"
 
-#: wt-status.c:1768
+#: wt-status.c:1770
 msgid "No commits yet"
 msgstr "Jeszcze nie ma zapisów"
 
-#: wt-status.c:1782
+#: wt-status.c:1784
 msgid "Untracked files"
 msgstr "Nieśledzone pliki"
 
-#: wt-status.c:1784
+#: wt-status.c:1786
 msgid "Ignored files"
 msgstr "Ignorowane pliki"
 
-#: wt-status.c:1788
+#: wt-status.c:1790
 #, c-format
 msgid ""
 "It took %.2f seconds to enumerate untracked files. 'status -uno'\n"
@@ -9626,30 +9926,30 @@ msgstr ""
 "może to przyspieszyć, ale musisz wtedy pilnować dodawania\n"
 "nowych plików (zobacz „git help status”)."
 
-#: wt-status.c:1794
+#: wt-status.c:1796
 #, c-format
 msgid "Untracked files not listed%s"
 msgstr "Nie wypisano nieśledzonych plików%s"
 
-#: wt-status.c:1796
+#: wt-status.c:1798
 msgid " (use -u option to show untracked files)"
 msgstr " (użyj opcji -u, aby pokazać nieśledzone pliki)"
 
-#: wt-status.c:1802
+#: wt-status.c:1804
 msgid "No changes"
 msgstr "Brak zmian"
 
-#: wt-status.c:1807
+#: wt-status.c:1809
 #, c-format
 msgid "no changes added to commit (use \"git add\" and/or \"git commit -a\")\n"
 msgstr "brak zmian dodanych do zapisu (użyj „git add” i/lub „git commit -a”)\n"
 
-#: wt-status.c:1811
+#: wt-status.c:1813
 #, c-format
 msgid "no changes added to commit\n"
 msgstr "brak zmian dodanych do zapisu\n"
 
-#: wt-status.c:1815
+#: wt-status.c:1817
 #, c-format
 msgid ""
 "nothing added to commit but untracked files present (use \"git add\" to "
@@ -9658,62 +9958,62 @@ msgstr ""
 "nie dodano nic do złożenia, ale są nieśledzone pliki (użyj „git add”, aby "
 "śledzić)\n"
 
-#: wt-status.c:1819
+#: wt-status.c:1821
 #, c-format
 msgid "nothing added to commit but untracked files present\n"
 msgstr "nie dodano nic do złożenia, ale są nieśledzone pliki\n"
 
-#: wt-status.c:1823
+#: wt-status.c:1825
 #, c-format
 msgid "nothing to commit (create/copy files and use \"git add\" to track)\n"
 msgstr "nic do złożenia (utwórz/wkopiuj pliki i użyj „git add”, aby śledzić)\n"
 
-#: wt-status.c:1827 wt-status.c:1833
+#: wt-status.c:1829 wt-status.c:1835
 #, c-format
 msgid "nothing to commit\n"
 msgstr "nic do złożenia\n"
 
-#: wt-status.c:1830
+#: wt-status.c:1832
 #, c-format
 msgid "nothing to commit (use -u to show untracked files)\n"
 msgstr "nic do złożenia (użyj -u, aby pokazać nieśledzone pliki)\n"
 
-#: wt-status.c:1835
+#: wt-status.c:1837
 #, c-format
 msgid "nothing to commit, working tree clean\n"
 msgstr "nic do złożenia, drzewo robocze czyste\n"
 
-#: wt-status.c:1940
+#: wt-status.c:1942
 msgid "No commits yet on "
 msgstr "Jeszcze nie ma zapisów na "
 
-#: wt-status.c:1944
+#: wt-status.c:1946
 msgid "HEAD (no branch)"
 msgstr "HEAD (brak gałęzi)"
 
-#: wt-status.c:1975
+#: wt-status.c:1977
 msgid "different"
 msgstr "różne"
 
-#: wt-status.c:1977 wt-status.c:1985
+#: wt-status.c:1979 wt-status.c:1987
 msgid "behind "
 msgstr "wstecz "
 
-#: wt-status.c:1980 wt-status.c:1983
+#: wt-status.c:1982 wt-status.c:1985
 msgid "ahead "
 msgstr "do przodu "
 
 #. TRANSLATORS: the action is e.g. "pull with rebase"
-#: wt-status.c:2505
+#: wt-status.c:2507
 #, c-format
 msgid "cannot %s: You have unstaged changes."
 msgstr "nie można wykonać %s: masz nieprzygotowane zmiany."
 
-#: wt-status.c:2511
+#: wt-status.c:2513
 msgid "additionally, your index contains uncommitted changes."
 msgstr "dodatkowo, twój indeks zawiera nieoddane zmiany."
 
-#: wt-status.c:2513
+#: wt-status.c:2515
 #, c-format
 msgid "cannot %s: Your index contains uncommitted changes."
 msgstr "nie można wykonać %s: Twój indeks zawiera niezłożone zmiany."
@@ -9727,126 +10027,131 @@ msgstr "nie można wykonać unlink na „%s”"
 msgid "git add [<options>] [--] <pathspec>..."
 msgstr "git add [<opcje>] [--] <ścieżka>..."
 
-#: builtin/add.c:88
+#: builtin/add.c:58
+#, c-format
+msgid "cannot chmod %cx '%s'"
+msgstr "nie można wykonać chmod %cx „%s”"
+
+#: builtin/add.c:96
 #, c-format
 msgid "unexpected diff status %c"
 msgstr "niespodziewany stan diff %c"
 
-#: builtin/add.c:93 builtin/commit.c:285
+#: builtin/add.c:101 builtin/commit.c:285
 msgid "updating files failed"
 msgstr "aktualizacja plików nie powiodła się"
 
-#: builtin/add.c:103
+#: builtin/add.c:111
 #, c-format
 msgid "remove '%s'\n"
 msgstr "usuń „%s”\n"
 
-#: builtin/add.c:178
+#: builtin/add.c:186
 msgid "Unstaged changes after refreshing the index:"
 msgstr "Wycofane zmiany po odświeżeniu indeksu:"
 
-#: builtin/add.c:272 builtin/rev-parse.c:908
+#: builtin/add.c:280 builtin/rev-parse.c:991
 msgid "Could not read the index"
 msgstr "Nie można odczytać indeksu"
 
-#: builtin/add.c:283
+#: builtin/add.c:291
 #, c-format
 msgid "Could not open '%s' for writing."
 msgstr "Nie można otworzyć „%s” do zapisywania."
 
-#: builtin/add.c:287
+#: builtin/add.c:295
 msgid "Could not write patch"
 msgstr "Nie można zapisać łatki"
 
-#: builtin/add.c:290
+#: builtin/add.c:298
 msgid "editing patch failed"
 msgstr "edycja łatki nie powiodła się"
 
-#: builtin/add.c:293
+#: builtin/add.c:301
 #, c-format
 msgid "Could not stat '%s'"
 msgstr "Nie można wykonać stat na „%s”"
 
-#: builtin/add.c:295
+#: builtin/add.c:303
 msgid "Empty patch. Aborted."
 msgstr "Pusta łatka. Przerwano."
 
-#: builtin/add.c:300
+#: builtin/add.c:308
 #, c-format
 msgid "Could not apply '%s'"
 msgstr "Nie można zastosować „%s”"
 
-#: builtin/add.c:308
+#: builtin/add.c:316
 msgid "The following paths are ignored by one of your .gitignore files:\n"
 msgstr "Poniższe ścieżki są ignorowane przez jeden z plików .gitignore:\n"
 
-#: builtin/add.c:328 builtin/clean.c:904 builtin/fetch.c:166 builtin/mv.c:124
+#: builtin/add.c:336 builtin/clean.c:904 builtin/fetch.c:169 builtin/mv.c:124
 #: builtin/prune-packed.c:14 builtin/pull.c:204 builtin/push.c:559
 #: builtin/remote.c:1427 builtin/rm.c:242 builtin/send-pack.c:190
 msgid "dry run"
 msgstr "na sucho"
 
-#: builtin/add.c:331
+#: builtin/add.c:339
 msgid "interactive picking"
 msgstr "interaktywne wybieranie"
 
-#: builtin/add.c:332 builtin/checkout.c:1547 builtin/reset.c:308
+#: builtin/add.c:340 builtin/checkout.c:1546 builtin/reset.c:308
 msgid "select hunks interactively"
 msgstr "wybierz skrawki interaktywnie"
 
-#: builtin/add.c:333
+#: builtin/add.c:341
 msgid "edit current diff and apply"
 msgstr "zmień bieżące różnice i zastosuj"
 
-#: builtin/add.c:334
+#: builtin/add.c:342
 msgid "allow adding otherwise ignored files"
 msgstr "pozwól na dodawanie inaczej ignorowanych plików"
 
-#: builtin/add.c:335
+#: builtin/add.c:343
 msgid "update tracked files"
 msgstr "aktualizuj śledzone pliki"
 
-#: builtin/add.c:336
+#: builtin/add.c:344
 msgid "renormalize EOL of tracked files (implies -u)"
 msgstr "znormalizuj ponownie końce wierszy w śledzonych plikach (zakłada -u)"
 
-#: builtin/add.c:337
+#: builtin/add.c:345
 msgid "record only the fact that the path will be added later"
 msgstr "zapisz tylko, że ścieżka zostanie dodana później"
 
-#: builtin/add.c:338
+#: builtin/add.c:346
 msgid "add changes from all tracked and untracked files"
 msgstr "dodaj zmiany z plików śledzonych i nieśledzonych"
 
-#: builtin/add.c:341
+#: builtin/add.c:349
 msgid "ignore paths removed in the working tree (same as --no-all)"
 msgstr "pomiń ścieżki usunięte w drzewie roboczym (to samo, co --no-all)"
 
-#: builtin/add.c:343
+#: builtin/add.c:351
 msgid "don't add, only refresh the index"
 msgstr "nie dodawaj, tylko odśwież indeks"
 
-#: builtin/add.c:344
+#: builtin/add.c:352
 msgid "just skip files which cannot be added because of errors"
 msgstr "po prostu pomiń pliki, których nie można dodać z powodu błędów"
 
-#: builtin/add.c:345
+#: builtin/add.c:353
 msgid "check if - even missing - files are ignored in dry run"
 msgstr "sprawdź na sucho, czy pliki o takich ścieżkach byłyby ignorowane"
 
-#: builtin/add.c:347 builtin/update-index.c:1004
+#: builtin/add.c:355 builtin/update-index.c:1004
 msgid "override the executable bit of the listed files"
 msgstr "wymuś bit wykonywalności podanych plików"
 
-#: builtin/add.c:349
+#: builtin/add.c:357
 msgid "warn when adding an embedded repository"
 msgstr "ostrzegaj przed dodawaniem wbudowanego repozytorium"
 
-#: builtin/add.c:351
+#: builtin/add.c:359
 msgid "backend for `git stash -p`"
 msgstr "silnik do „git stash -p”"
 
-#: builtin/add.c:369
+#: builtin/add.c:377
 #, c-format
 msgid ""
 "You've added another git repository inside your current repository.\n"
@@ -9877,12 +10182,12 @@ msgstr ""
 "\n"
 "Więcej informacji w „git help submodule”."
 
-#: builtin/add.c:397
+#: builtin/add.c:405
 #, c-format
 msgid "adding embedded git repository: %s"
 msgstr "dodawanie wbudowanego repozytorium gita: %s"
 
-#: builtin/add.c:416
+#: builtin/add.c:424
 msgid ""
 "Use -f if you really want to add them.\n"
 "Turn this message off by running\n"
@@ -9892,47 +10197,47 @@ msgstr ""
 "Wyłącz ten komunikat wykonując\n"
 "„git config advice.addIgnoredFile false”"
 
-#: builtin/add.c:425
+#: builtin/add.c:433
 msgid "adding files failed"
 msgstr "dodawanie plików nie powiodło się"
 
-#: builtin/add.c:453 builtin/commit.c:345
+#: builtin/add.c:461 builtin/commit.c:345
 msgid "--pathspec-from-file is incompatible with --interactive/--patch"
 msgstr "--pathspec-from-file i --interactive/--patch się wykluczają"
 
-#: builtin/add.c:470
+#: builtin/add.c:478
 msgid "--pathspec-from-file is incompatible with --edit"
 msgstr "--pathspec-from-file i --edit się wykluczają"
 
-#: builtin/add.c:482
+#: builtin/add.c:490
 msgid "-A and -u are mutually incompatible"
 msgstr "-A i -u się wykluczają"
 
-#: builtin/add.c:485
+#: builtin/add.c:493
 msgid "Option --ignore-missing can only be used together with --dry-run"
 msgstr "Opcja --ignore-missing może być użyta tylko z --dry-run"
 
-#: builtin/add.c:489
+#: builtin/add.c:497
 #, c-format
 msgid "--chmod param '%s' must be either -x or +x"
 msgstr "parametr --chmod „%s” musi być „-x” albo „+x”"
 
-#: builtin/add.c:507 builtin/checkout.c:1715 builtin/commit.c:351
-#: builtin/reset.c:328 builtin/rm.c:272 builtin/stash.c:1502
+#: builtin/add.c:515 builtin/checkout.c:1714 builtin/commit.c:351
+#: builtin/reset.c:328 builtin/rm.c:272 builtin/stash.c:1569
 msgid "--pathspec-from-file is incompatible with pathspec arguments"
 msgstr "--pathspec-from-file i argumenty ze ścieżkami się wykluczają"
 
-#: builtin/add.c:514 builtin/checkout.c:1727 builtin/commit.c:357
-#: builtin/reset.c:334 builtin/rm.c:278 builtin/stash.c:1508
+#: builtin/add.c:522 builtin/checkout.c:1726 builtin/commit.c:357
+#: builtin/reset.c:334 builtin/rm.c:278 builtin/stash.c:1575
 msgid "--pathspec-file-nul requires --pathspec-from-file"
 msgstr "--pathspec-file-nul wymaga --pathspec-from-file"
 
-#: builtin/add.c:518
+#: builtin/add.c:526
 #, c-format
 msgid "Nothing specified, nothing added.\n"
 msgstr "Nic nie podano, nic nie dodano.\n"
 
-#: builtin/add.c:520
+#: builtin/add.c:528
 msgid ""
 "Maybe you wanted to say 'git add .'?\n"
 "Turn this message off by running\n"
@@ -10189,7 +10494,7 @@ msgid "allow fall back on 3way merging if needed"
 msgstr "zezwól na uciekanie się do trójstronnego scalania, jeśli potrzebne"
 
 #: builtin/am.c:2225 builtin/init-db.c:560 builtin/prune-packed.c:16
-#: builtin/repack.c:335 builtin/stash.c:815
+#: builtin/repack.c:334 builtin/stash.c:882
 msgid "be quiet"
 msgstr "mniej komunikatów"
 
@@ -10233,17 +10538,17 @@ msgid "pass it through git-apply"
 msgstr "przepuść przez git-apply"
 
 #: builtin/am.c:2263 builtin/commit.c:1395 builtin/fmt-merge-msg.c:17
-#: builtin/fmt-merge-msg.c:20 builtin/grep.c:903 builtin/merge.c:260
+#: builtin/fmt-merge-msg.c:20 builtin/grep.c:904 builtin/merge.c:261
 #: builtin/pull.c:141 builtin/pull.c:200 builtin/pull.c:217
-#: builtin/rebase.c:1341 builtin/repack.c:346 builtin/repack.c:350
-#: builtin/repack.c:352 builtin/show-branch.c:650 builtin/show-ref.c:172
-#: builtin/tag.c:404 parse-options.h:154 parse-options.h:175
+#: builtin/rebase.c:1347 builtin/repack.c:345 builtin/repack.c:349
+#: builtin/repack.c:351 builtin/show-branch.c:650 builtin/show-ref.c:172
+#: builtin/tag.c:436 parse-options.h:154 parse-options.h:175
 #: parse-options.h:316
 msgid "n"
 msgstr "n"
 
-#: builtin/am.c:2269 builtin/branch.c:661 builtin/bugreport.c:136
-#: builtin/for-each-ref.c:38 builtin/replace.c:556 builtin/tag.c:438
+#: builtin/am.c:2269 builtin/branch.c:670 builtin/bugreport.c:136
+#: builtin/for-each-ref.c:38 builtin/replace.c:556 builtin/tag.c:470
 #: builtin/verify-tag.c:38
 msgid "format"
 msgstr "format"
@@ -10269,12 +10574,12 @@ msgid "skip the current patch"
 msgstr "pomiń obecną ścieżkę"
 
 #: builtin/am.c:2287
-msgid "restore the original branch and abort the patching operation."
-msgstr "przywróć pierwotną gałąź i przerwij łatanie."
+msgid "restore the original branch and abort the patching operation"
+msgstr "przywróć pierwotną gałąź i przerwij łatanie"
 
 #: builtin/am.c:2290
-msgid "abort the patching operation but keep HEAD where it is."
-msgstr "przerwij operację łatania, ale zostaw HEAD, gdzie jest."
+msgid "abort the patching operation but keep HEAD where it is"
+msgstr "przerwij operację łatania, ale zostaw HEAD, gdzie jest"
 
 #: builtin/am.c:2294
 msgid "show the patch being applied"
@@ -10289,12 +10594,12 @@ msgid "use current timestamp for author date"
 msgstr "użyj bieżącego znacznika czasu jako daty utworzenia"
 
 #: builtin/am.c:2303 builtin/commit-tree.c:120 builtin/commit.c:1515
-#: builtin/merge.c:297 builtin/pull.c:175 builtin/rebase.c:536
-#: builtin/rebase.c:1394 builtin/revert.c:117 builtin/tag.c:419
+#: builtin/merge.c:298 builtin/pull.c:175 builtin/rebase.c:538
+#: builtin/rebase.c:1400 builtin/revert.c:117 builtin/tag.c:451
 msgid "key-id"
 msgstr "id-klucza"
 
-#: builtin/am.c:2304 builtin/rebase.c:537 builtin/rebase.c:1395
+#: builtin/am.c:2304 builtin/rebase.c:539 builtin/rebase.c:1401
 msgid "GPG-sign commits"
 msgstr "podpisuj zapisy GPG"
 
@@ -10376,28 +10681,12 @@ msgid "git bisect--helper --bisect-reset [<commit>]"
 msgstr "git bisect--helper --bisect-reset [<zapis>]"
 
 #: builtin/bisect--helper.c:24
-msgid ""
-"git bisect--helper --bisect-write [--no-log] <state> <revision> <good_term> "
-"<bad_term>"
-msgstr ""
-"git bisect--helper --bisect-write [--no-log] <stan> <rewizja> "
-"<dobre_określenie> <złe_określenie>"
-
-#: builtin/bisect--helper.c:25
-msgid ""
-"git bisect--helper --bisect-check-and-set-terms <command> <good_term> "
-"<bad_term>"
-msgstr ""
-"git bisect--helper --bisect-check-and-set-terms <polecenie> "
-"<dobre_określenie> <złe_określenie>"
-
-#: builtin/bisect--helper.c:26
 msgid "git bisect--helper --bisect-next-check <good_term> <bad_term> [<term>]"
 msgstr ""
 "git bisect--helper --bisect-next-check <dobre_określenie> <złe_określenie> "
 "[<określenie>]"
 
-#: builtin/bisect--helper.c:27
+#: builtin/bisect--helper.c:25
 msgid ""
 "git bisect--helper --bisect-terms [--term-good | --term-old | --term-bad | --"
 "term-new]"
@@ -10405,7 +10694,7 @@ msgstr ""
 "git bisect--helper --bisect-terms [--term-good | --term-old | --term-bad | --"
 "term-new]"
 
-#: builtin/bisect--helper.c:28
+#: builtin/bisect--helper.c:26
 msgid ""
 "git bisect--helper --bisect-start [--term-{new,bad}=<term> --term-{old,good}"
 "=<term>] [--no-checkout] [--first-parent] [<bad> [<good>...]] [--] "
@@ -10415,89 +10704,93 @@ msgstr ""
 "good}=<określenie>] [--no-checkout] [--first-parent] [<złe> [<dobre>...]] "
 "[--] [<ścieżki>...]"
 
-#: builtin/bisect--helper.c:30
+#: builtin/bisect--helper.c:28
 msgid "git bisect--helper --bisect-next"
 msgstr "git bisect--helper --bisect-next"
 
-#: builtin/bisect--helper.c:31
-msgid "git bisect--helper --bisect-auto-next"
-msgstr "git bisect--helper --bisect-auto-next"
-
-#: builtin/bisect--helper.c:32
+#: builtin/bisect--helper.c:29
 msgid "git bisect--helper --bisect-state (bad|new) [<rev>]"
 msgstr "git bisect--helper --bisect-state (bad|new) [<rewizja>]"
 
-#: builtin/bisect--helper.c:33
+#: builtin/bisect--helper.c:30
 msgid "git bisect--helper --bisect-state (good|old) [<rev>...]"
 msgstr "git bisect--helper --bisect-state (good|old) [<rewizja>...]"
 
-#: builtin/bisect--helper.c:108
+#: builtin/bisect--helper.c:31
+msgid "git bisect--helper --bisect-replay <filename>"
+msgstr "git bisect--helper --bisect-replay <nazwa-pliku>"
+
+#: builtin/bisect--helper.c:32
+msgid "git bisect--helper --bisect-skip [(<rev>|<range>)...]"
+msgstr "git bisect--helper --bisect-skip [(<rewizja>|<zakres>)...]"
+
+#: builtin/bisect--helper.c:107
 #, c-format
 msgid "cannot open file '%s' in mode '%s'"
 msgstr "nie można otworzyć pliku „%s” w trybie „%s”"
 
-#: builtin/bisect--helper.c:115
+#: builtin/bisect--helper.c:114
 #, c-format
 msgid "could not write to file '%s'"
 msgstr "nie można pisać do pliku „%s”"
 
-#: builtin/bisect--helper.c:154
+#: builtin/bisect--helper.c:153
 #, c-format
 msgid "'%s' is not a valid term"
 msgstr "„%s” nie jest prawidłowym sformułowaniem"
 
-#: builtin/bisect--helper.c:158
+#: builtin/bisect--helper.c:157
 #, c-format
 msgid "can't use the builtin command '%s' as a term"
 msgstr "nie można użyć wbudowanego polecenia „%s” jako sformułowania"
 
-#: builtin/bisect--helper.c:168
+#: builtin/bisect--helper.c:167
 #, c-format
 msgid "can't change the meaning of the term '%s'"
 msgstr "nie można zmienić znaczenia sformułowania „%s”"
 
-#: builtin/bisect--helper.c:178
+#: builtin/bisect--helper.c:177
 msgid "please use two different terms"
 msgstr "użyj dwóch różnych sformułowań"
 
-#: builtin/bisect--helper.c:194
+#: builtin/bisect--helper.c:193
 #, c-format
 msgid "We are not bisecting.\n"
 msgstr "Teraz nie przeszukujemy.\n"
 
-#: builtin/bisect--helper.c:202
+#: builtin/bisect--helper.c:201
 #, c-format
 msgid "'%s' is not a valid commit"
 msgstr "„%s” nie jest prawidłowym zapisem"
 
-#: builtin/bisect--helper.c:211
+#: builtin/bisect--helper.c:210
 #, c-format
 msgid ""
 "could not check out original HEAD '%s'. Try 'git bisect reset <commit>'."
 msgstr ""
 "nie można wybrać pierwotnego HEAD „%s”. Spróbuj „git bisect reset <zapis>”."
 
-#: builtin/bisect--helper.c:255
+#: builtin/bisect--helper.c:254
 #, c-format
 msgid "Bad bisect_write argument: %s"
 msgstr "Błędny argument bisect_write: %s"
 
-#: builtin/bisect--helper.c:260
+#: builtin/bisect--helper.c:259
 #, c-format
 msgid "couldn't get the oid of the rev '%s'"
 msgstr "nie można uzyskać oid rewizji „%s”"
 
-#: builtin/bisect--helper.c:272
+#: builtin/bisect--helper.c:271
 #, c-format
 msgid "couldn't open the file '%s'"
 msgstr "nie można otworzyć pliku „%s”"
 
-#: builtin/bisect--helper.c:298
+#: builtin/bisect--helper.c:297
 #, c-format
 msgid "Invalid command: you're currently in a %s/%s bisect"
 msgstr "Nieprawidłowe polecenie: przeszukujesz teraz %s/%s"
 
-#: builtin/bisect--helper.c:325
+#: builtin/bisect--helper.c:324
 #, c-format
 msgid ""
 "You need to give me at least one %s and %s revision.\n"
@@ -10506,7 +10799,7 @@ msgstr ""
 "Wtedy podaj przynajmniej jedną rewizję %s i jedną %s.\n"
 "Możesz użyć do tego „git bisect %s” i „git bisect %s”."
 
-#: builtin/bisect--helper.c:329
+#: builtin/bisect--helper.c:328
 #, c-format
 msgid ""
 "You need to start by \"git bisect start\".\n"
@@ -10517,7 +10810,7 @@ msgstr ""
 "Wtedy podaj przynajmniej jedną rewizję %s i jedną %s.\n"
 "Możesz użyć do tego „git bisect %s” i „git bisect %s”."
 
-#: builtin/bisect--helper.c:349
+#: builtin/bisect--helper.c:348
 #, c-format
 msgid "bisecting only with a %s commit"
 msgstr "przeszukiwanie tylko z zapisem %s"
@@ -10526,15 +10819,15 @@ msgstr "przeszukiwanie tylko z zapisem %s"
 #. translation. The program will only accept English input
 #. at this point.
 #.
-#: builtin/bisect--helper.c:357
+#: builtin/bisect--helper.c:356
 msgid "Are you sure [Y/n]? "
 msgstr "Czy na pewno [Y/n]? "
 
-#: builtin/bisect--helper.c:418
+#: builtin/bisect--helper.c:417
 msgid "no terms defined"
 msgstr "nie zdefiniowano sformułowań"
 
-#: builtin/bisect--helper.c:421
+#: builtin/bisect--helper.c:420
 #, c-format
 msgid ""
 "Your current terms are %s for the old state\n"
@@ -10543,7 +10836,7 @@ msgstr ""
 "Bieżące sformułowania to %s na stary stan\n"
 "i %s na nowy stan.\n"
 
-#: builtin/bisect--helper.c:431
+#: builtin/bisect--helper.c:430
 #, c-format
 msgid ""
 "invalid argument %s for 'git bisect terms'.\n"
@@ -10552,54 +10845,54 @@ msgstr ""
 "nieprawidłowy argument %s do „git bisect terms”.\n"
 "Wspierane opcje to: --term-good | --term-old i --term-bad | --term-new."
 
-#: builtin/bisect--helper.c:498
+#: builtin/bisect--helper.c:497 builtin/bisect--helper.c:1014
 msgid "revision walk setup failed\n"
 msgstr "nie udało się przygotować przejścia rewizji\n"
 
-#: builtin/bisect--helper.c:520
+#: builtin/bisect--helper.c:519
 #, c-format
 msgid "could not open '%s' for appending"
 msgstr "nie można otworzyć „%s” do dopisywania"
 
-#: builtin/bisect--helper.c:639 builtin/bisect--helper.c:652
+#: builtin/bisect--helper.c:638 builtin/bisect--helper.c:651
 msgid "'' is not a valid term"
 msgstr "„” nie jest prawidłowym sformułowaniem"
 
-#: builtin/bisect--helper.c:662
+#: builtin/bisect--helper.c:661
 #, c-format
 msgid "unrecognized option: '%s'"
 msgstr "nierozpoznana opcja: „%s”"
 
-#: builtin/bisect--helper.c:666
+#: builtin/bisect--helper.c:665
 #, c-format
 msgid "'%s' does not appear to be a valid revision"
 msgstr "„%s” nie wydaje się być prawidłową rewizją"
 
-#: builtin/bisect--helper.c:697
+#: builtin/bisect--helper.c:696
 msgid "bad HEAD - I need a HEAD"
 msgstr "złe HEAD — potrzeba HEAD"
 
-#: builtin/bisect--helper.c:712
+#: builtin/bisect--helper.c:711
 #, c-format
 msgid "checking out '%s' failed. Try 'git bisect start <valid-branch>'."
 msgstr ""
 "wybieranie „%s” nie powiodło się. Spróbuj „git bisect start <prawidłowa-"
 "gałąź>”."
 
-#: builtin/bisect--helper.c:733
+#: builtin/bisect--helper.c:732
 msgid "won't bisect on cg-seek'ed tree"
 msgstr "nie przeszukam na drzewie cg-seek'owanym"
 
-#: builtin/bisect--helper.c:736
+#: builtin/bisect--helper.c:735
 msgid "bad HEAD - strange symbolic ref"
 msgstr "złe HEAD — dziwna referencja symboliczna"
 
-#: builtin/bisect--helper.c:756
+#: builtin/bisect--helper.c:755
 #, c-format
 msgid "invalid ref: '%s'"
 msgstr "nieprawidłowa referencja: „%s”"
 
-#: builtin/bisect--helper.c:814
+#: builtin/bisect--helper.c:813
 msgid "You need to start by \"git bisect start\"\n"
 msgstr "Musisz rozpocząć przez „git bisect start”\n"
 
@@ -10607,93 +10900,101 @@ msgstr "Musisz rozpocząć przez „git bisect start”\n"
 #. translation. The program will only accept English input
 #. at this point.
 #.
-#: builtin/bisect--helper.c:825
+#: builtin/bisect--helper.c:824
 msgid "Do you want me to do it for you [Y/n]? "
 msgstr "Chcesz, żeby to teraz zrobić [Y/n]? "
 
-#: builtin/bisect--helper.c:843
+#: builtin/bisect--helper.c:842
 msgid "Please call `--bisect-state` with at least one argument"
 msgstr "Wywołaj „--bisect-state” z przynajmniej jednym argumentem"
 
-#: builtin/bisect--helper.c:856
+#: builtin/bisect--helper.c:855
 #, c-format
 msgid "'git bisect %s' can take only one argument."
 msgstr "„git bisect %s” przyjmuje tylko jeden argument."
 
-#: builtin/bisect--helper.c:868 builtin/bisect--helper.c:879
+#: builtin/bisect--helper.c:867 builtin/bisect--helper.c:878
 #, c-format
 msgid "Bad rev input: %s"
 msgstr "Błędne wejście rev: %s"
 
-#: builtin/bisect--helper.c:924
-msgid "reset the bisection state"
-msgstr "zresetuj stan przeszukiwania"
+#: builtin/bisect--helper.c:912
+msgid "We are not bisecting."
+msgstr "Teraz nie przeszukujemy."
+
+#: builtin/bisect--helper.c:962
+#, c-format
+msgid "'%s'?? what are you talking about?"
+msgstr "„%s”?? o czym ty w ogóle mówisz?"
 
-#: builtin/bisect--helper.c:926
-msgid "write out the bisection state in BISECT_LOG"
-msgstr "wypisz stan przeszukiwania w BISECT_LOG"
+#: builtin/bisect--helper.c:974
+#, c-format
+msgid "cannot read file '%s' for replaying"
+msgstr "nie można odczytać „%s” do odtwarzania"
 
-#: builtin/bisect--helper.c:928
-msgid "check and set terms in a bisection state"
-msgstr "sprawdź i ustaw określenia w stanie przeszukiwania"
+#: builtin/bisect--helper.c:1047
+msgid "reset the bisection state"
+msgstr "zresetuj stan przeszukiwania"
 
-#: builtin/bisect--helper.c:930
+#: builtin/bisect--helper.c:1049
 msgid "check whether bad or good terms exist"
 msgstr "sprawdź, czy istnieją złe lub dobre określenia"
 
-#: builtin/bisect--helper.c:932
+#: builtin/bisect--helper.c:1051
 msgid "print out the bisect terms"
 msgstr "wypisz tylko określenia przeszukiwania"
 
-#: builtin/bisect--helper.c:934
+#: builtin/bisect--helper.c:1053
 msgid "start the bisect session"
 msgstr "rozpocznij sesję przeszukiwania"
 
-#: builtin/bisect--helper.c:936
+#: builtin/bisect--helper.c:1055
 msgid "find the next bisection commit"
 msgstr "znajdź kolejny zapis do przeszukiwania"
 
-#: builtin/bisect--helper.c:938
-msgid "verify the next bisection state then checkout the next bisection commit"
-msgstr ""
-"sprawdź kolejny stan przeszukiwania, i wtedy wybierz kolejny zapis do "
-"przeszukiwania"
-
-#: builtin/bisect--helper.c:940
+#: builtin/bisect--helper.c:1057
 msgid "mark the state of ref (or refs)"
 msgstr "oznacz stan referencji"
 
-#: builtin/bisect--helper.c:942
+#: builtin/bisect--helper.c:1059
+msgid "list the bisection steps so far"
+msgstr "wypisz dotychczasowe kroki przeszukiwania"
+
+#: builtin/bisect--helper.c:1061
+msgid "replay the bisection process from the given file"
+msgstr "odtwórz proces przeszukiwania z podanego pliku"
+
+#: builtin/bisect--helper.c:1063
+msgid "skip some commits for checkout"
+msgstr "pomiń niektóre zapisy do wybrania"
+
+#: builtin/bisect--helper.c:1065
 msgid "no log for BISECT_WRITE"
 msgstr "brak dziennika do BISECT_WRITE"
 
-#: builtin/bisect--helper.c:957
+#: builtin/bisect--helper.c:1080
 msgid "--bisect-reset requires either no argument or a commit"
 msgstr "--bisect-reset wymaga jako argumentu albo niczego albo zapisu"
 
-#: builtin/bisect--helper.c:961
-msgid "--bisect-write requires either 4 or 5 arguments"
-msgstr "--bisect-write wymaga 4 albo 5 argumentów"
-
-#: builtin/bisect--helper.c:967
-msgid "--check-and-set-terms requires 3 arguments"
-msgstr "--check-and-set-terms wymaga 3 argumentów"
-
-#: builtin/bisect--helper.c:973
+#: builtin/bisect--helper.c:1085
 msgid "--bisect-next-check requires 2 or 3 arguments"
 msgstr "--bisect-next-check wymaga 2 albo 3 argumentów"
 
-#: builtin/bisect--helper.c:979
+#: builtin/bisect--helper.c:1091
 msgid "--bisect-terms requires 0 or 1 argument"
 msgstr "--bisect-terms wymaga maksymalnie jednego argumentu"
 
-#: builtin/bisect--helper.c:988
+#: builtin/bisect--helper.c:1100
 msgid "--bisect-next requires 0 arguments"
 msgstr "--bisect-next wymaga braku argumentów"
 
-#: builtin/bisect--helper.c:994
-msgid "--bisect-auto-next requires 0 arguments"
-msgstr "--bisect-auto-next wymaga braku argumentów"
+#: builtin/bisect--helper.c:1111
+msgid "--bisect-log requires 0 arguments"
+msgstr "--bisect-log wymaga braku argumentów"
+
+#: builtin/bisect--helper.c:1116
+msgid "no logfile given"
+msgstr "nie podano pliku dziennika"
 
 #: builtin/blame.c:32
 msgid "git blame [<options>] [<rev-opts>] [<rev>] [--] <file>"
@@ -10712,137 +11013,140 @@ msgstr "oczekiwano koloru: %s"
 msgid "must end with a color"
 msgstr "musi się kończyć kolorem"
 
-#: builtin/blame.c:730
+#: builtin/blame.c:728
 #, c-format
 msgid "invalid color '%s' in color.blame.repeatedLines"
 msgstr "błędny kolor „%s” w color.blame.repeatedLines"
 
-#: builtin/blame.c:748
+#: builtin/blame.c:746
 msgid "invalid value for blame.coloring"
 msgstr "nieprawidłowa wartość blame.coloring"
 
-#: builtin/blame.c:847
+#: builtin/blame.c:845
 #, c-format
 msgid "cannot find revision %s to ignore"
 msgstr "nie znaleziono rewizji %s do pominięcia"
 
+#: builtin/blame.c:867
+msgid "show blame entries as we find them, incrementally"
+msgstr "pokaż elementy oskarżenia w miarę znajdywania, przyrostowo"
+
+#: builtin/blame.c:868
+msgid "do not show object names of boundary commits (Default: off)"
+msgstr "nie pokazuj nazw obiektów w brzegowych zapisach (domyślnie wyłączone)"
+
 #: builtin/blame.c:869
-msgid "Show blame entries as we find them, incrementally"
-msgstr "Pokaż elementy oskarżenia w miarę znajdywania, przyrostowo"
+msgid "do not treat root commits as boundaries (Default: off)"
+msgstr "nie traktuj zapisów-korzeni jako granic (domyślnie wyłączone)"
 
 #: builtin/blame.c:870
-msgid "Do not show object names of boundary commits (Default: off)"
-msgstr "Nie pokazuj nazw obiektów w brzegowych zapisach (domyślnie wyłączone)"
+msgid "show work cost statistics"
+msgstr "pokaż statystyki kosztu pracy"
 
-#: builtin/blame.c:871
-msgid "Do not treat root commits as boundaries (Default: off)"
-msgstr "Nie traktuj zapisów-korzeni jako granic (domyślnie wyłączone)"
+#: builtin/blame.c:871 builtin/checkout.c:1503 builtin/clone.c:92
+#: builtin/commit-graph.c:84 builtin/commit-graph.c:222 builtin/fetch.c:175
+#: builtin/merge.c:297 builtin/multi-pack-index.c:27 builtin/pull.c:119
+#: builtin/push.c:575 builtin/send-pack.c:198
+msgid "force progress reporting"
+msgstr "wymuś zgłaszanie postępu"
 
 #: builtin/blame.c:872
-msgid "Show work cost statistics"
-msgstr "Pokaż statystyki kosztu pracy"
+msgid "show output score for blame entries"
+msgstr "pokaż wynik wyjściowy elementów oskarżenia"
 
 #: builtin/blame.c:873
-msgid "Force progress reporting"
-msgstr "Wymuś zgłaszanie postępu"
+msgid "show original filename (Default: auto)"
+msgstr "pokazuj pierwotną nazwę pliku (Domyślnie: automatycznie)"
 
 #: builtin/blame.c:874
-msgid "Show output score for blame entries"
-msgstr "Pokaż wynik wyjściowy elementów oskarżenia"
+msgid "show original linenumber (Default: off)"
+msgstr "pokaż pierwotny numer wiersza (domyślnie wyłączone)"
 
 #: builtin/blame.c:875
-msgid "Show original filename (Default: auto)"
-msgstr "Pokazuj pierwotną nazwę pliku (Domyślnie: automatycznie)"
+msgid "show in a format designed for machine consumption"
+msgstr "pokaż w formacie zaprojektowanym do przetwarzania maszynowego"
 
 #: builtin/blame.c:876
-msgid "Show original linenumber (Default: off)"
-msgstr "Pokaż pierwotny numer wiersza (domyślnie wyłączone)"
+msgid "show porcelain format with per-line commit information"
+msgstr "pokaż w porcelanowym formacie z informacją o zapisie w każdym wierszu"
 
 #: builtin/blame.c:877
-msgid "Show in a format designed for machine consumption"
-msgstr "Pokaż w formacie zaprojektowanym do przetwarzania maszynowego"
+msgid "use the same output mode as git-annotate (Default: off)"
+msgstr "użyj tego samego trybu wyjścia, co git-annotate (domyślnie wyłączone)"
 
 #: builtin/blame.c:878
-msgid "Show porcelain format with per-line commit information"
-msgstr "Pokaż w porcelanowym formacie z informacją o zapisie w każdym wierszu"
+msgid "show raw timestamp (Default: off)"
+msgstr "pokaż surowy znacznik czasu (domyślnie wyłączone)"
 
 #: builtin/blame.c:879
-msgid "Use the same output mode as git-annotate (Default: off)"
-msgstr "Użyj tego samego trybu wyjścia, co git-annotate (domyślnie wyłączone)"
+msgid "show long commit SHA1 (Default: off)"
+msgstr "pokaż długie SHA-1 zapisu (domyślnie wyłączone)"
 
 #: builtin/blame.c:880
-msgid "Show raw timestamp (Default: off)"
-msgstr "Pokaż surowy znacznik czasu (domyślnie wyłączone)"
+msgid "suppress author name and timestamp (Default: off)"
+msgstr "nie wypisuj nazwiska autora i znacznika czasu (domyślnie wyłączone)"
 
 #: builtin/blame.c:881
-msgid "Show long commit SHA1 (Default: off)"
-msgstr "Pokaż długie SHA-1 zapisu (domyślnie wyłączone)"
+msgid "show author email instead of name (Default: off)"
+msgstr "pokaż adres e-mail autora zamiast nazwiska (domyślnie wyłączone)"
 
 #: builtin/blame.c:882
-msgid "Suppress author name and timestamp (Default: off)"
-msgstr "Nie wypisuj nazwiska autora i znacznika czasu (domyślnie wyłączone)"
+msgid "ignore whitespace differences"
+msgstr "ignoruj różnice w białych znakach"
 
-#: builtin/blame.c:883
-msgid "Show author email instead of name (Default: off)"
-msgstr "Pokaż adres e-mail autora zamiast nazwiska (domyślnie wyłączone)"
-
-#: builtin/blame.c:884
-msgid "Ignore whitespace differences"
-msgstr "Ignoruj różnice w białych znakach"
-
-#: builtin/blame.c:885 builtin/log.c:1813
+#: builtin/blame.c:883 builtin/log.c:1812
 msgid "rev"
 msgstr "rewizja"
 
-#: builtin/blame.c:885
-msgid "Ignore <rev> when blaming"
-msgstr "Pomiń <rewizję> przy obwinianiu"
+#: builtin/blame.c:883
+msgid "ignore <rev> when blaming"
+msgstr "pomiń <rewizję> przy obwinianiu"
 
-#: builtin/blame.c:886
-msgid "Ignore revisions from <file>"
-msgstr "Pomiń rewizje z <pliku>"
+#: builtin/blame.c:884
+msgid "ignore revisions from <file>"
+msgstr "pomiń rewizje z <pliku>"
 
-#: builtin/blame.c:887
+#: builtin/blame.c:885
 msgid "color redundant metadata from previous line differently"
 msgstr "koloruj inaczej zbędne metadane z poprzedniego wiersza"
 
-#: builtin/blame.c:888
+#: builtin/blame.c:886
 msgid "color lines by age"
 msgstr "koloruj wiersze według wieku"
 
-#: builtin/blame.c:889
-msgid "Spend extra cycles to find better match"
-msgstr "Poświęć dodatkowe cykle, aby znaleźć lepsze dopasowanie"
+#: builtin/blame.c:887
+msgid "spend extra cycles to find better match"
+msgstr "poświęć dodatkowe cykle, aby znaleźć lepsze dopasowanie"
 
-#: builtin/blame.c:890
-msgid "Use revisions from <file> instead of calling git-rev-list"
-msgstr "Użyj rewizji z <pliku> zamiast wołać git-rev-list"
+#: builtin/blame.c:888
+msgid "use revisions from <file> instead of calling git-rev-list"
+msgstr "użyj rewizji z <pliku> zamiast wołać git-rev-list"
 
-#: builtin/blame.c:891
-msgid "Use <file>'s contents as the final image"
-msgstr "Użyj zawartości <pliku> jako ostatecznego obrazu"
+#: builtin/blame.c:889
+msgid "use <file>'s contents as the final image"
+msgstr "użyj zawartości <pliku> jako ostatecznego obrazu"
 
-#: builtin/blame.c:892 builtin/blame.c:893
+#: builtin/blame.c:890 builtin/blame.c:891
 msgid "score"
 msgstr "wynik"
 
-#: builtin/blame.c:892
-msgid "Find line copies within and across files"
-msgstr "Znajdź kopie wierszy w plikach i pomiędzy nimi"
+#: builtin/blame.c:890
+msgid "find line copies within and across files"
+msgstr "znajdź kopie wierszy w plikach i pomiędzy nimi"
 
-#: builtin/blame.c:893
-msgid "Find line movements within and across files"
-msgstr "Znajdź ruchy wierszy w plikach i pomiędzy nimi"
+#: builtin/blame.c:891
+msgid "find line movements within and across files"
+msgstr "znajdź ruchy wierszy w plikach i pomiędzy nimi"
 
-#: builtin/blame.c:894
+#: builtin/blame.c:892
 msgid "range"
 msgstr "zakres"
 
-#: builtin/blame.c:895
-msgid "Process only line range <start>,<end> or function :<funcname>"
-msgstr "Przetwórz tylko zakres <start>,<end> lub funkcję :<nazwa-funkcji>"
+#: builtin/blame.c:893
+msgid "process only line range <start>,<end> or function :<funcname>"
+msgstr "przetwórz tylko zakres <start>,<end> lub funkcję :<nazwa-funkcji>"
 
-#: builtin/blame.c:947
+#: builtin/blame.c:945
 msgid "--progress can't be used with --incremental or porcelain formats"
 msgstr "nie można użyć --progress z --incremental ani formatami porcelanowymi"
 
@@ -10854,11 +11158,11 @@ msgstr "nie można użyć --progress z --incremental ani formatami porcelanowymi
 #. your language may need more or fewer display
 #. columns.
 #.
-#: builtin/blame.c:998
+#: builtin/blame.c:996
 msgid "4 years, 11 months ago"
 msgstr "4 lata, 11 miesięcy temu"
 
-#: builtin/blame.c:1114
+#: builtin/blame.c:1112
 #, c-format
 msgid "file %s has only %lu line"
 msgid_plural "file %s has only %lu lines"
@@ -10866,7 +11170,7 @@ msgstr[0] "plik %s ma tylko %lu wiersz"
 msgstr[1] "plik %s ma tylko %lu wiersze"
 msgstr[2] "plik %s ma tylko %lu wierszy"
 
-#: builtin/blame.c:1159
+#: builtin/blame.c:1157
 msgid "Blaming lines"
 msgstr "Obwinianie wierszy"
 
@@ -10934,120 +11238,110 @@ msgstr ""
 msgid "Update of config-file failed"
 msgstr "Aktualizacja pliku konfiguracyjnego nie powiodła się"
 
-#: builtin/branch.c:220
+#: builtin/branch.c:223
 msgid "cannot use -a with -d"
 msgstr "-a i -d się wykluczają"
 
-#: builtin/branch.c:226
+#: builtin/branch.c:230
 msgid "Couldn't look up commit object for HEAD"
 msgstr "Nie odnaleziono obiektu zapisu HEAD"
 
-#: builtin/branch.c:240
+#: builtin/branch.c:244
 #, c-format
 msgid "Cannot delete branch '%s' checked out at '%s'"
 msgstr "Nie można usunąć gałęzi „%s” wybranej w „%s”"
 
-#: builtin/branch.c:255
+#: builtin/branch.c:259
 #, c-format
 msgid "remote-tracking branch '%s' not found."
 msgstr "Nie znaleziono gałęzi śledzącej „%s”"
 
-#: builtin/branch.c:256
+#: builtin/branch.c:260
 #, c-format
 msgid "branch '%s' not found."
 msgstr "nie znaleziono gałęzi „%s”."
 
-#: builtin/branch.c:271
-#, c-format
-msgid "Error deleting remote-tracking branch '%s'"
-msgstr "Błąd usuwania śledzącej gałęzi „%s”"
-
-#: builtin/branch.c:272
-#, c-format
-msgid "Error deleting branch '%s'"
-msgstr "Błąd usuwania gałęzi „%s”"
-
-#: builtin/branch.c:279
+#: builtin/branch.c:291
 #, c-format
 msgid "Deleted remote-tracking branch %s (was %s).\n"
 msgstr "Usunięto gałąź śledzącą %s (wskazywała %s).\n"
 
-#: builtin/branch.c:280
+#: builtin/branch.c:292
 #, c-format
 msgid "Deleted branch %s (was %s).\n"
 msgstr "Usunięto gałąź %s (wskazywała %s).\n"
 
-#: builtin/branch.c:429 builtin/tag.c:61
+#: builtin/branch.c:438 builtin/tag.c:61
 msgid "unable to parse format string"
 msgstr "nie można przetworzyć łańcucha formatu"
 
-#: builtin/branch.c:460
+#: builtin/branch.c:469
 msgid "could not resolve HEAD"
 msgstr "nie można rozwiązać HEAD"
 
-#: builtin/branch.c:466
+#: builtin/branch.c:475
 #, c-format
 msgid "HEAD (%s) points outside of refs/heads/"
 msgstr "HEAD (%s) wskazuje poza refs/heads/"
 
-#: builtin/branch.c:481
+#: builtin/branch.c:490
 #, c-format
 msgid "Branch %s is being rebased at %s"
 msgstr "Gałąź %s jest przestawiana na %s"
 
-#: builtin/branch.c:485
+#: builtin/branch.c:494
 #, c-format
 msgid "Branch %s is being bisected at %s"
 msgstr "Gałąź %s jest przeszukiwana w %s"
 
-#: builtin/branch.c:502
+#: builtin/branch.c:511
 msgid "cannot copy the current branch while not on any."
 msgstr "nie można skopiować bieżącej gałęzi, gdy nie ma żadnej bieżącej."
 
-#: builtin/branch.c:504
+#: builtin/branch.c:513
 msgid "cannot rename the current branch while not on any."
 msgstr "nie można zmienić nazwy bieżącej gałęzi, gdy nie ma żadnej bieżącej."
 
-#: builtin/branch.c:515
+#: builtin/branch.c:524
 #, c-format
 msgid "Invalid branch name: '%s'"
 msgstr "Nieprawidłowa nazwa gałęzi: „%s”"
 
-#: builtin/branch.c:544
+#: builtin/branch.c:553
 msgid "Branch rename failed"
 msgstr "Zmiana nazwy gałęzi nie powiodła się"
 
-#: builtin/branch.c:546
+#: builtin/branch.c:555
 msgid "Branch copy failed"
 msgstr "Kopiowanie gałęzi nie powiodło się"
 
-#: builtin/branch.c:550
+#: builtin/branch.c:559
 #, c-format
 msgid "Created a copy of a misnamed branch '%s'"
 msgstr "Skopiowano źle nazwaną gałąź „%s”"
 
-#: builtin/branch.c:553
+#: builtin/branch.c:562
 #, c-format
 msgid "Renamed a misnamed branch '%s' away"
 msgstr "Poprawiono nazwę gałęzi „%s”"
 
-#: builtin/branch.c:559
+#: builtin/branch.c:568
 #, c-format
 msgid "Branch renamed to %s, but HEAD is not updated!"
 msgstr "Nazwa gałęzi zmieniona na %s, ale czoło HEAD nie jest zaktualizowane!"
 
-#: builtin/branch.c:568
+#: builtin/branch.c:577
 msgid "Branch is renamed, but update of config-file failed"
 msgstr ""
 "Zmieniono nazwę gałęzi, ale aktualizacja pliku konfiguracyjnego nie powiodła "
 "się"
 
-#: builtin/branch.c:570
+#: builtin/branch.c:579
 msgid "Branch is copied, but update of config-file failed"
 msgstr ""
 "Skopiowano gałąź, ale aktualizacja pliku konfiguracyjnego nie powiodła się"
 
-#: builtin/branch.c:586
+#: builtin/branch.c:595
 #, c-format
 msgid ""
 "Please edit the description for the branch\n"
@@ -11058,180 +11352,180 @@ msgstr ""
 "  %s\n"
 "Wiersze zaczynające się od „%c” zostaną wycięte.\n"
 
-#: builtin/branch.c:620
+#: builtin/branch.c:629
 msgid "Generic options"
 msgstr "Opcje ogólne"
 
-#: builtin/branch.c:622
+#: builtin/branch.c:631
 msgid "show hash and subject, give twice for upstream branch"
 msgstr "pokaż skrót i temat; podaj dwukrotnie, aby wypisać gałąź nadrzędną"
 
-#: builtin/branch.c:623
+#: builtin/branch.c:632
 msgid "suppress informational messages"
 msgstr "pomiń komunikaty informacyjne"
 
-#: builtin/branch.c:624
+#: builtin/branch.c:633
 msgid "set up tracking mode (see git-pull(1))"
 msgstr "ustaw tryb śledzenia (zobacz git-pull(1))"
 
-#: builtin/branch.c:626
+#: builtin/branch.c:635
 msgid "do not use"
 msgstr "nie używaj"
 
-#: builtin/branch.c:628 builtin/rebase.c:532
+#: builtin/branch.c:637 builtin/rebase.c:534
 msgid "upstream"
 msgstr "zdalne-repozytorium"
 
-#: builtin/branch.c:628
+#: builtin/branch.c:637
 msgid "change the upstream info"
 msgstr "zmień gałąź nadrzędną"
 
-#: builtin/branch.c:629
+#: builtin/branch.c:638
 msgid "unset the upstream info"
 msgstr "usuń informacje o gałęzi nadrzędnej"
 
-#: builtin/branch.c:630
+#: builtin/branch.c:639
 msgid "use colored output"
 msgstr "użyj kolorowego wyjścia"
 
-#: builtin/branch.c:631
+#: builtin/branch.c:640
 msgid "act on remote-tracking branches"
 msgstr "działaj na gałęziach śledzących"
 
-#: builtin/branch.c:633 builtin/branch.c:635
+#: builtin/branch.c:642 builtin/branch.c:644
 msgid "print only branches that contain the commit"
 msgstr "wypisz tylko gałęzie zawierające ten zapis"
 
-#: builtin/branch.c:634 builtin/branch.c:636
+#: builtin/branch.c:643 builtin/branch.c:645
 msgid "print only branches that don't contain the commit"
 msgstr "wypisz tylko gałęzie nie zawierające tego zapisu"
 
-#: builtin/branch.c:639
+#: builtin/branch.c:648
 msgid "Specific git-branch actions:"
 msgstr "Działania typowe dla git-branch:"
 
-#: builtin/branch.c:640
+#: builtin/branch.c:649
 msgid "list both remote-tracking and local branches"
 msgstr "wypisz i śledzące i lokalne gałęzie"
 
-#: builtin/branch.c:642
+#: builtin/branch.c:651
 msgid "delete fully merged branch"
 msgstr "usuń całkowicie scaloną gałąź"
 
-#: builtin/branch.c:643
+#: builtin/branch.c:652
 msgid "delete branch (even if not merged)"
 msgstr "usuń gałąź (nawet niescaloną)"
 
-#: builtin/branch.c:644
+#: builtin/branch.c:653
 msgid "move/rename a branch and its reflog"
 msgstr "przenieś gałąź i jej dziennik referencji / zmień ich nazwę"
 
-#: builtin/branch.c:645
+#: builtin/branch.c:654
 msgid "move/rename a branch, even if target exists"
 msgstr "przenieś gałąź / zmień jej nazwę, nawet jeśli cel istnieje"
 
-#: builtin/branch.c:646
+#: builtin/branch.c:655
 msgid "copy a branch and its reflog"
 msgstr "skopiuj gałąź i jej dziennik referencji"
 
-#: builtin/branch.c:647
+#: builtin/branch.c:656
 msgid "copy a branch, even if target exists"
 msgstr "skopiuj gałąź, nawet jeśli cel istnieje"
 
-#: builtin/branch.c:648
+#: builtin/branch.c:657
 msgid "list branch names"
 msgstr "wypisz nazwy gałęzi"
 
-#: builtin/branch.c:649
+#: builtin/branch.c:658
 msgid "show current branch name"
 msgstr "pokaż nazwę bieżącej gałęzi"
 
-#: builtin/branch.c:650
+#: builtin/branch.c:659
 msgid "create the branch's reflog"
 msgstr "utwórz dziennik referencji gałęzi"
 
-#: builtin/branch.c:652
+#: builtin/branch.c:661
 msgid "edit the description for the branch"
 msgstr "edytuj opis gałęzi"
 
-#: builtin/branch.c:653
+#: builtin/branch.c:662
 msgid "force creation, move/rename, deletion"
 msgstr "wymuś utworzenie, przeniesienie/zmianę nazwy, usunięcie"
 
-#: builtin/branch.c:654
+#: builtin/branch.c:663
 msgid "print only branches that are merged"
 msgstr "wypisz tylko scalone gałęzie"
 
-#: builtin/branch.c:655
+#: builtin/branch.c:664
 msgid "print only branches that are not merged"
 msgstr "wypisz tylko niescalone gałęzie"
 
-#: builtin/branch.c:656
+#: builtin/branch.c:665
 msgid "list branches in columns"
 msgstr "wypisz gałęzie w kolumnach"
 
-#: builtin/branch.c:658 builtin/for-each-ref.c:42 builtin/notes.c:415
+#: builtin/branch.c:667 builtin/for-each-ref.c:42 builtin/notes.c:415
 #: builtin/notes.c:418 builtin/notes.c:581 builtin/notes.c:584
-#: builtin/tag.c:434
+#: builtin/tag.c:466
 msgid "object"
 msgstr "obiekt"
 
-#: builtin/branch.c:659
+#: builtin/branch.c:668
 msgid "print only branches of the object"
 msgstr "wypisz tylko gałęzie obiektu"
 
-#: builtin/branch.c:660 builtin/for-each-ref.c:48 builtin/tag.c:441
+#: builtin/branch.c:669 builtin/for-each-ref.c:48 builtin/tag.c:473
 msgid "sorting and filtering are case insensitive"
 msgstr "sortowanie i filtrowanie nie uwzględniają wielkości liter"
 
-#: builtin/branch.c:661 builtin/for-each-ref.c:38 builtin/tag.c:439
+#: builtin/branch.c:670 builtin/for-each-ref.c:38 builtin/tag.c:471
 #: builtin/verify-tag.c:38
 msgid "format to use for the output"
 msgstr "format do użycia na wyjściu"
 
-#: builtin/branch.c:684 builtin/clone.c:790
+#: builtin/branch.c:693 builtin/clone.c:790
 msgid "HEAD not found below refs/heads!"
 msgstr "nie znaleziono HEAD w refs/heads!"
 
-#: builtin/branch.c:708
+#: builtin/branch.c:717
 msgid "--column and --verbose are incompatible"
 msgstr "--column i --verbose się wykluczają"
 
-#: builtin/branch.c:723 builtin/branch.c:777 builtin/branch.c:786
+#: builtin/branch.c:732 builtin/branch.c:788 builtin/branch.c:797
 msgid "branch name required"
 msgstr "wymagana nazwa gałęzi"
 
-#: builtin/branch.c:753
+#: builtin/branch.c:764
 msgid "Cannot give description to detached HEAD"
 msgstr "Nie można nadać opisu odłączonemu HEAD"
 
-#: builtin/branch.c:758
+#: builtin/branch.c:769
 msgid "cannot edit description of more than one branch"
 msgstr "nie można edytować opisu więcej niż jednej gałęzi"
 
-#: builtin/branch.c:765
+#: builtin/branch.c:776
 #, c-format
 msgid "No commit on branch '%s' yet."
 msgstr "Jeszcze nie ma zapisów na gałęzi „%s”."
 
-#: builtin/branch.c:768
+#: builtin/branch.c:779
 #, c-format
 msgid "No branch named '%s'."
 msgstr "Nie ma gałęzi „%s”."
 
-#: builtin/branch.c:783
+#: builtin/branch.c:794
 msgid "too many branches for a copy operation"
 msgstr "za dużo gałęzi do operacji kopiowania"
 
-#: builtin/branch.c:792
+#: builtin/branch.c:803
 msgid "too many arguments for a rename operation"
 msgstr "za dużo argumentów do operacji zmiany nazwy"
 
-#: builtin/branch.c:797
+#: builtin/branch.c:808
 msgid "too many arguments to set new upstream"
 msgstr "za dużo argumentów do ustawienia nadrzędnej gałęzi"
 
-#: builtin/branch.c:801
+#: builtin/branch.c:812
 #, c-format
 msgid ""
 "could not set upstream of HEAD to %s when it does not point to any branch."
@@ -11239,32 +11533,32 @@ msgstr ""
 "nie można ustawić gałęzi nadrzędnej HEAD na %s, kiedy nie wskazuje ono na "
 "gałąź."
 
-#: builtin/branch.c:804 builtin/branch.c:827
+#: builtin/branch.c:815 builtin/branch.c:838
 #, c-format
 msgid "no such branch '%s'"
 msgstr "nie ma takiej gałęzi „%s”"
 
-#: builtin/branch.c:808
+#: builtin/branch.c:819
 #, c-format
 msgid "branch '%s' does not exist"
 msgstr "gałąź „%s” nie istnieje"
 
-#: builtin/branch.c:821
+#: builtin/branch.c:832
 msgid "too many arguments to unset upstream"
 msgstr "za dużo argumentów do usunięcia nadrzędnej gałęzi"
 
-#: builtin/branch.c:825
+#: builtin/branch.c:836
 msgid "could not unset upstream of HEAD when it does not point to any branch."
 msgstr ""
 "nie można usunąć ustawienia gałęzi nadrzędnej HEAD, kiedy nie wskazuje ono "
 "żadnej gałęzi."
 
-#: builtin/branch.c:831
+#: builtin/branch.c:842
 #, c-format
 msgid "Branch '%s' has no upstream information"
 msgstr "Gałąź „%s” nie ma informacji o gałęzi nadrzędnej"
 
-#: builtin/branch.c:841
+#: builtin/branch.c:852
 msgid ""
 "The -a, and -r, options to 'git branch' do not take a branch name.\n"
 "Did you mean to use: -a|-r --list <pattern>?"
@@ -11272,7 +11566,7 @@ msgstr ""
 "Opcje -a i -r do „git branch” nie przyjmują nazwy gałęzi.\n"
 "Czy chodziło o: -a | -r --list <wzorzec>?"
 
-#: builtin/branch.c:845
+#: builtin/branch.c:856
 msgid ""
 "the '--set-upstream' option is no longer supported. Please use '--track' or "
 "'--set-upstream-to' instead."
@@ -11391,19 +11685,19 @@ msgstr "git bundle list-heads <plik> [<referencja>...]"
 msgid "git bundle unbundle <file> [<refname>...]"
 msgstr "git bundle unbundle <plik> [<referencja>...]"
 
-#: builtin/bundle.c:67 builtin/pack-objects.c:3480
+#: builtin/bundle.c:67 builtin/pack-objects.c:3495
 msgid "do not show progress meter"
 msgstr "nie pokazuj wskaźnika postępu"
 
-#: builtin/bundle.c:69 builtin/pack-objects.c:3482
+#: builtin/bundle.c:69 builtin/pack-objects.c:3497
 msgid "show progress meter"
 msgstr "pokazuj wskaźnik postępu"
 
-#: builtin/bundle.c:71 builtin/pack-objects.c:3484
+#: builtin/bundle.c:71 builtin/pack-objects.c:3499
 msgid "show progress meter during object writing phase"
 msgstr "pokaż miernik postępu podczas fazy zapisywania obiektów"
 
-#: builtin/bundle.c:74 builtin/pack-objects.c:3487
+#: builtin/bundle.c:74 builtin/pack-objects.c:3502
 msgid "similar to --all-progress when progress meter is shown"
 msgstr "podobne do --all-progress, kiedy pokazany jest wskaźnik postępu"
 
@@ -11547,8 +11841,8 @@ msgstr "wczytaj nazwy plików ze standardowego wejścia"
 msgid "terminate input and output records by a NUL character"
 msgstr "zakończ wpisy wejścia i wyjścia znakiem NUL"
 
-#: builtin/check-ignore.c:21 builtin/checkout.c:1500 builtin/gc.c:541
-#: builtin/worktree.c:561
+#: builtin/check-ignore.c:21 builtin/checkout.c:1499 builtin/gc.c:549
+#: builtin/worktree.c:489
 msgid "suppress progress reporting"
 msgstr "nie zgłaszaj postępu"
 
@@ -11601,54 +11895,54 @@ msgstr "nie można przetworzyć kontaktu: %s"
 msgid "no contacts specified"
 msgstr "nie podano kontaktów"
 
-#: builtin/checkout-index.c:139
+#: builtin/checkout-index.c:152
 msgid "git checkout-index [<options>] [--] [<file>...]"
 msgstr "git checkout-index [<opcje>] [--] [<plik>...]"
 
-#: builtin/checkout-index.c:156
+#: builtin/checkout-index.c:169
 msgid "stage should be between 1 and 3 or all"
 msgstr "przygotowanie powinno być pomiędzy 1 a 3 lub „all”"
 
-#: builtin/checkout-index.c:173
+#: builtin/checkout-index.c:186
 msgid "check out all files in the index"
 msgstr "wybierz wszystkie pliki z indeksu"
 
-#: builtin/checkout-index.c:174
+#: builtin/checkout-index.c:187
 msgid "force overwrite of existing files"
 msgstr "wymuś nadpisanie istniejących plików"
 
-#: builtin/checkout-index.c:176
+#: builtin/checkout-index.c:189
 msgid "no warning for existing files and files not in index"
 msgstr "nie ostrzegaj przed istniejącymi plikami i plikami nie w indeksie"
 
-#: builtin/checkout-index.c:178
+#: builtin/checkout-index.c:191
 msgid "don't checkout new files"
 msgstr "nie wybieraj nowych plików"
 
-#: builtin/checkout-index.c:180
+#: builtin/checkout-index.c:193
 msgid "update stat information in the index file"
 msgstr "zaktualizuj informacje stat w pliku indeksu"
 
-#: builtin/checkout-index.c:184
+#: builtin/checkout-index.c:197
 msgid "read list of paths from the standard input"
 msgstr "odczytaj listę ścieżek ze standardowego wejścia"
 
-#: builtin/checkout-index.c:186
+#: builtin/checkout-index.c:199
 msgid "write the content to temporary files"
 msgstr "zapisz zawartość do plików tymczasowych"
 
-#: builtin/checkout-index.c:187 builtin/column.c:31
+#: builtin/checkout-index.c:200 builtin/column.c:31
 #: builtin/submodule--helper.c:1824 builtin/submodule--helper.c:1827
 #: builtin/submodule--helper.c:1835 builtin/submodule--helper.c:2333
-#: builtin/worktree.c:757
+#: builtin/worktree.c:717
 msgid "string"
 msgstr "ciąg znaków"
 
-#: builtin/checkout-index.c:188
+#: builtin/checkout-index.c:201
 msgid "when creating files, prepend <string>"
 msgstr "przy tworzeniu plików, dodaj <łańcuch> z przodu"
 
-#: builtin/checkout-index.c:190
+#: builtin/checkout-index.c:203
 msgid "copy out the files from named stage"
 msgstr "wykopiuj pliki z nazwanego przygotowania"
 
@@ -11754,16 +12048,16 @@ msgstr "należy użyć „%s”, jeśli nie podano „%s”"
 msgid "'%s' or '%s' cannot be used with %s"
 msgstr "nie można użyć „%s” ani „%s” z %s"
 
-#: builtin/checkout.c:541 builtin/checkout.c:548
+#: builtin/checkout.c:543 builtin/checkout.c:550
 #, c-format
 msgid "path '%s' is unmerged"
 msgstr "ścieżka „%s” jest niescalona"
 
-#: builtin/checkout.c:716
+#: builtin/checkout.c:718
 msgid "you need to resolve your current index first"
 msgstr "musisz najpierw rozwiązać bieżący indeks"
 
-#: builtin/checkout.c:770
+#: builtin/checkout.c:772
 #, c-format
 msgid ""
 "cannot continue with staged changes in the following files:\n"
@@ -11772,50 +12066,50 @@ msgstr ""
 "nie można kontynuować z przygotowanymi zmianami w następujących plikach:\n"
 "%s"
 
-#: builtin/checkout.c:866
+#: builtin/checkout.c:865
 #, c-format
 msgid "Can not do reflog for '%s': %s\n"
 msgstr "nie można wykonać reflog na „%s”: %s\n"
 
-#: builtin/checkout.c:908
+#: builtin/checkout.c:907
 msgid "HEAD is now at"
 msgstr "HEAD wskazuje teraz na"
 
-#: builtin/checkout.c:912 builtin/clone.c:721 t/helper/test-fast-rebase.c:202
+#: builtin/checkout.c:911 builtin/clone.c:721 t/helper/test-fast-rebase.c:202
 msgid "unable to update HEAD"
 msgstr "nie można zaktualizować HEAD"
 
-#: builtin/checkout.c:916
+#: builtin/checkout.c:915
 #, c-format
 msgid "Reset branch '%s'\n"
 msgstr "Zresetuj gałąź „%s”\n"
 
-#: builtin/checkout.c:919
+#: builtin/checkout.c:918
 #, c-format
 msgid "Already on '%s'\n"
 msgstr "Już jesteś na „%s”\n"
 
-#: builtin/checkout.c:923
+#: builtin/checkout.c:922
 #, c-format
 msgid "Switched to and reset branch '%s'\n"
 msgstr "Przełączono na gałąź „%s” i zresetowano ją\n"
 
-#: builtin/checkout.c:925 builtin/checkout.c:1356
+#: builtin/checkout.c:924 builtin/checkout.c:1355
 #, c-format
 msgid "Switched to a new branch '%s'\n"
 msgstr "Przełączono na nową gałąź „%s”\n"
 
-#: builtin/checkout.c:927
+#: builtin/checkout.c:926
 #, c-format
 msgid "Switched to branch '%s'\n"
 msgstr "Przełączono na gałąź „%s”\n"
 
-#: builtin/checkout.c:978
+#: builtin/checkout.c:977
 #, c-format
 msgid " ... and %d more.\n"
 msgstr " ... i %d innych.\n"
 
-#: builtin/checkout.c:984
+#: builtin/checkout.c:983
 #, c-format
 msgid ""
 "Warning: you are leaving %d commit behind, not connected to\n"
@@ -11843,7 +12137,7 @@ msgstr[2] ""
 "\n"
 "%s\n"
 
-#: builtin/checkout.c:1003
+#: builtin/checkout.c:1002
 #, c-format
 msgid ""
 "If you want to keep it by creating a new branch, this may be a good time\n"
@@ -11876,19 +12170,19 @@ msgstr[2] ""
 " git branch <nazwa-nowej-gałęzi> %s\n"
 "\n"
 
-#: builtin/checkout.c:1038
+#: builtin/checkout.c:1037
 msgid "internal error in revision walk"
 msgstr "wewnętrzny błąd w przechodzeniu rewizji"
 
-#: builtin/checkout.c:1042
+#: builtin/checkout.c:1041
 msgid "Previous HEAD position was"
 msgstr "Poprzednim wskazaniem HEAD było"
 
-#: builtin/checkout.c:1082 builtin/checkout.c:1351
+#: builtin/checkout.c:1081 builtin/checkout.c:1350
 msgid "You are on a branch yet to be born"
 msgstr "Jesteś na gałęzi, która dopiero ma powstać"
 
-#: builtin/checkout.c:1164
+#: builtin/checkout.c:1163
 #, c-format
 msgid ""
 "'%s' could be both a local file and a tracking branch.\n"
@@ -11897,7 +12191,7 @@ msgstr ""
 "„%s” może być jednocześnie lokalnym plikiem i gałęzią śledzącą.\n"
 "Użyj -- (i opcjonalnie --no-guess), żeby ujednoznacznić"
 
-#: builtin/checkout.c:1171
+#: builtin/checkout.c:1170
 msgid ""
 "If you meant to check out a remote tracking branch on, e.g. 'origin',\n"
 "you can do so by fully qualifying the name with the --track option:\n"
@@ -11917,51 +12211,51 @@ msgstr ""
 "<nazw> preferowały jedno zdalne repozytorium, rozważ ustawienie\n"
 "checkout.defaultRemote=origin w swoich ustawieniach."
 
-#: builtin/checkout.c:1181
+#: builtin/checkout.c:1180
 #, c-format
 msgid "'%s' matched multiple (%d) remote tracking branches"
 msgstr "„%s” pasuje do wielu (%d) gałęzi śledzących"
 
-#: builtin/checkout.c:1247
+#: builtin/checkout.c:1246
 msgid "only one reference expected"
 msgstr "oczekiwano tylko jednej referencji"
 
-#: builtin/checkout.c:1264
+#: builtin/checkout.c:1263
 #, c-format
 msgid "only one reference expected, %d given."
 msgstr "oczekiwano tylko jednej referencji, podano %d."
 
-#: builtin/checkout.c:1310 builtin/worktree.c:342 builtin/worktree.c:510
+#: builtin/checkout.c:1309 builtin/worktree.c:270 builtin/worktree.c:438
 #, c-format
 msgid "invalid reference: %s"
 msgstr "nieprawidłowa referencja: %s"
 
-#: builtin/checkout.c:1323 builtin/checkout.c:1689
+#: builtin/checkout.c:1322 builtin/checkout.c:1688
 #, c-format
 msgid "reference is not a tree: %s"
 msgstr "referencja nie jest drzewem: %s"
 
-#: builtin/checkout.c:1370
+#: builtin/checkout.c:1369
 #, c-format
 msgid "a branch is expected, got tag '%s'"
 msgstr "oczekiwano gałęzi, otrzymano tag „%s”"
 
-#: builtin/checkout.c:1372
+#: builtin/checkout.c:1371
 #, c-format
 msgid "a branch is expected, got remote branch '%s'"
 msgstr "oczekiwano gałęzi, otrzymano zdalną gałąź „%s”"
 
-#: builtin/checkout.c:1373 builtin/checkout.c:1381
+#: builtin/checkout.c:1372 builtin/checkout.c:1380
 #, c-format
 msgid "a branch is expected, got '%s'"
 msgstr "oczekiwano gałęzi, otrzymano „%s”"
 
-#: builtin/checkout.c:1376
+#: builtin/checkout.c:1375
 #, c-format
 msgid "a branch is expected, got commit '%s'"
 msgstr "oczekiwano gałęzi, otrzymano zapis „%s”"
 
-#: builtin/checkout.c:1392
+#: builtin/checkout.c:1391
 msgid ""
 "cannot switch branch while merging\n"
 "Consider \"git merge --quit\" or \"git worktree add\"."
@@ -11969,7 +12263,7 @@ msgstr ""
 "Nie można przełączyć gałęzi w trakcie scalania\n"
 "Rozważ „git merge --quit” lub „git worktree add”."
 
-#: builtin/checkout.c:1396
+#: builtin/checkout.c:1395
 msgid ""
 "cannot switch branch in the middle of an am session\n"
 "Consider \"git am --quit\" or \"git worktree add\"."
@@ -11977,7 +12271,7 @@ msgstr ""
 "Nie można przełączyć gałęzi w trakcie sesji am\n"
 "Rozważ „git am --quit” lub „git worktree add”."
 
-#: builtin/checkout.c:1400
+#: builtin/checkout.c:1399
 msgid ""
 "cannot switch branch while rebasing\n"
 "Consider \"git rebase --quit\" or \"git worktree add\"."
@@ -11985,7 +12279,7 @@ msgstr ""
 "Nie można przełączyć gałęzi w trakcie przestawiania\n"
 "Rozważ „git rebase --quit” lub „git worktree add”."
 
-#: builtin/checkout.c:1404
+#: builtin/checkout.c:1403
 msgid ""
 "cannot switch branch while cherry-picking\n"
 "Consider \"git cherry-pick --quit\" or \"git worktree add\"."
@@ -11993,7 +12287,7 @@ msgstr ""
 "Nie można przełączyć gałęzi w trakcie dobierania\n"
 "Rozważ „git cherry-pick --quit” lub „git worktree add”."
 
-#: builtin/checkout.c:1408
+#: builtin/checkout.c:1407
 msgid ""
 "cannot switch branch while reverting\n"
 "Consider \"git revert --quit\" or \"git worktree add\"."
@@ -12001,144 +12295,137 @@ msgstr ""
 "Nie można przełączyć gałęzi w trakcie odwracania\n"
 "Rozważ „git revert --quit” lub „git worktree add”."
 
-#: builtin/checkout.c:1412
+#: builtin/checkout.c:1411
 msgid "you are switching branch while bisecting"
 msgstr "zmiana gałęzi w trakcie przeszukiwania"
 
-#: builtin/checkout.c:1419
+#: builtin/checkout.c:1418
 msgid "paths cannot be used with switching branches"
 msgstr "ścieżki nie mogą być podane z przełączaniem gałęzi"
 
-#: builtin/checkout.c:1422 builtin/checkout.c:1426 builtin/checkout.c:1430
+#: builtin/checkout.c:1421 builtin/checkout.c:1425 builtin/checkout.c:1429
 #, c-format
 msgid "'%s' cannot be used with switching branches"
 msgstr "„%s” nie może być użyte z przełączaniem gałęzi"
 
-#: builtin/checkout.c:1434 builtin/checkout.c:1437 builtin/checkout.c:1440
-#: builtin/checkout.c:1445 builtin/checkout.c:1450
+#: builtin/checkout.c:1433 builtin/checkout.c:1436 builtin/checkout.c:1439
+#: builtin/checkout.c:1444 builtin/checkout.c:1449
 #, c-format
 msgid "'%s' cannot be used with '%s'"
 msgstr "„%s” i „%s” wykluczają się"
 
-#: builtin/checkout.c:1447
+#: builtin/checkout.c:1446
 #, c-format
 msgid "'%s' cannot take <start-point>"
 msgstr "„%s” nie może przyjąć <punktu-startowego>"
 
-#: builtin/checkout.c:1455
+#: builtin/checkout.c:1454
 #, c-format
 msgid "Cannot switch branch to a non-commit '%s'"
 msgstr "Nie można przełączyć gałęzi na nie-zapis „%s”"
 
-#: builtin/checkout.c:1462
+#: builtin/checkout.c:1461
 msgid "missing branch or commit argument"
 msgstr "brakuje argumentu gałęzi lub zapisu"
 
-#: builtin/checkout.c:1504 builtin/clone.c:92 builtin/commit-graph.c:84
-#: builtin/commit-graph.c:222 builtin/fetch.c:172 builtin/merge.c:296
-#: builtin/multi-pack-index.c:27 builtin/pull.c:119 builtin/push.c:575
-#: builtin/send-pack.c:198
-msgid "force progress reporting"
-msgstr "wymuś zgłaszanie postępu"
-
-#: builtin/checkout.c:1505
+#: builtin/checkout.c:1504
 msgid "perform a 3-way merge with the new branch"
 msgstr "dokonaj trójstronnego scalenia z nową gałęzią"
 
-#: builtin/checkout.c:1506 builtin/log.c:1800 parse-options.h:322
+#: builtin/checkout.c:1505 builtin/log.c:1799 parse-options.h:322
 msgid "style"
 msgstr "styl"
 
-#: builtin/checkout.c:1507
+#: builtin/checkout.c:1506
 msgid "conflict style (merge or diff3)"
 msgstr "styl konfliktów (merge lub diff3)"
 
-#: builtin/checkout.c:1519 builtin/worktree.c:558
+#: builtin/checkout.c:1518 builtin/worktree.c:486
 msgid "detach HEAD at named commit"
 msgstr "odłącz HEAD na podanym zapisie"
 
-#: builtin/checkout.c:1520
+#: builtin/checkout.c:1519
 msgid "set upstream info for new branch"
 msgstr "ustaw gałąź nadrzędną nowej gałęzi"
 
-#: builtin/checkout.c:1522
+#: builtin/checkout.c:1521
 msgid "force checkout (throw away local modifications)"
 msgstr "wymuś wybranie (wyrzuć lokalne zmiany)"
 
-#: builtin/checkout.c:1524
+#: builtin/checkout.c:1523
 msgid "new-branch"
 msgstr "nowa-gałąź"
 
-#: builtin/checkout.c:1524
+#: builtin/checkout.c:1523
 msgid "new unparented branch"
 msgstr "nowa gałąź bez rodzica"
 
-#: builtin/checkout.c:1526 builtin/merge.c:300
+#: builtin/checkout.c:1525 builtin/merge.c:301
 msgid "update ignored files (default)"
 msgstr "aktualizuj ignorowane pliki (domyślnie)"
 
-#: builtin/checkout.c:1529
+#: builtin/checkout.c:1528
 msgid "do not check if another worktree is holding the given ref"
 msgstr "nie sprawdzaj, czy inne drzewo robocze trzyma podaną referencję"
 
-#: builtin/checkout.c:1542
+#: builtin/checkout.c:1541
 msgid "checkout our version for unmerged files"
 msgstr "wybierz „naszą” wersję niescalonych plików"
 
-#: builtin/checkout.c:1545
+#: builtin/checkout.c:1544
 msgid "checkout their version for unmerged files"
 msgstr "wybierz „ich” wersję niescalonych plików"
 
-#: builtin/checkout.c:1549
+#: builtin/checkout.c:1548
 msgid "do not limit pathspecs to sparse entries only"
 msgstr "nie ograniczaj ścieżek tylko do rzadkich elementów"
 
-#: builtin/checkout.c:1604
+#: builtin/checkout.c:1603
 #, c-format
 msgid "-%c, -%c and --orphan are mutually exclusive"
 msgstr "-%c, -%c i --orphan się wykluczają"
 
-#: builtin/checkout.c:1608
+#: builtin/checkout.c:1607
 msgid "-p and --overlay are mutually exclusive"
 msgstr "-p i --overlay się wykluczają"
 
-#: builtin/checkout.c:1645
+#: builtin/checkout.c:1644
 msgid "--track needs a branch name"
 msgstr "--track potrzebuje nazwy gałęzi"
 
-#: builtin/checkout.c:1650
+#: builtin/checkout.c:1649
 #, c-format
 msgid "missing branch name; try -%c"
 msgstr "brakuje nazwy gałęzi; spróbuj -%c"
 
-#: builtin/checkout.c:1682
+#: builtin/checkout.c:1681
 #, c-format
 msgid "could not resolve %s"
 msgstr "nie można rozwiązać %s"
 
-#: builtin/checkout.c:1698
+#: builtin/checkout.c:1697
 msgid "invalid path specification"
 msgstr "nieprawidłowa ścieżka"
 
-#: builtin/checkout.c:1705
+#: builtin/checkout.c:1704
 #, c-format
 msgid "'%s' is not a commit and a branch '%s' cannot be created from it"
 msgstr "„%s” nie jest zapisem, a nie można z niego utworzyć gałęzi „%s”"
 
-#: builtin/checkout.c:1709
+#: builtin/checkout.c:1708
 #, c-format
 msgid "git checkout: --detach does not take a path argument '%s'"
 msgstr "git checkout: --detach nie przyjmuje argumentu ścieżki „%s”"
 
-#: builtin/checkout.c:1718
+#: builtin/checkout.c:1717
 msgid "--pathspec-from-file is incompatible with --detach"
 msgstr "--pathspec-from-file i --detach się wykluczają"
 
-#: builtin/checkout.c:1721 builtin/reset.c:325 builtin/stash.c:1499
+#: builtin/checkout.c:1720 builtin/reset.c:325 builtin/stash.c:1566
 msgid "--pathspec-from-file is incompatible with --patch"
 msgstr "--pathspec-from-file i --patch się wykluczają"
 
-#: builtin/checkout.c:1734
+#: builtin/checkout.c:1733
 msgid ""
 "git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
 "checking out of the index."
@@ -12146,70 +12433,70 @@ msgstr ""
 "git checkout: --ours/--theirs, --force i --merge się wykluczają, gdy\n"
 "wybieranie z indeksu."
 
-#: builtin/checkout.c:1739
+#: builtin/checkout.c:1738
 msgid "you must specify path(s) to restore"
 msgstr "musisz podać ścieżkę (ścieżki) do przywrócenia"
 
-#: builtin/checkout.c:1765 builtin/checkout.c:1767 builtin/checkout.c:1816
-#: builtin/checkout.c:1818 builtin/clone.c:122 builtin/remote.c:170
-#: builtin/remote.c:172 builtin/submodule--helper.c:2719 builtin/worktree.c:554
-#: builtin/worktree.c:556
+#: builtin/checkout.c:1764 builtin/checkout.c:1766 builtin/checkout.c:1815
+#: builtin/checkout.c:1817 builtin/clone.c:122 builtin/remote.c:170
+#: builtin/remote.c:172 builtin/submodule--helper.c:2719 builtin/worktree.c:482
+#: builtin/worktree.c:484
 msgid "branch"
 msgstr "gałąź"
 
-#: builtin/checkout.c:1766
+#: builtin/checkout.c:1765
 msgid "create and checkout a new branch"
 msgstr "utwórz i wybierz nową gałąź"
 
-#: builtin/checkout.c:1768
+#: builtin/checkout.c:1767
 msgid "create/reset and checkout a branch"
 msgstr "utwórz/zresetuj i wybierz gałąź"
 
-#: builtin/checkout.c:1769
+#: builtin/checkout.c:1768
 msgid "create reflog for new branch"
 msgstr "utwórz dziennik referencji nowej gałęzi"
 
-#: builtin/checkout.c:1771
+#: builtin/checkout.c:1770
 msgid "second guess 'git checkout <no-such-branch>' (default)"
 msgstr "spróbuj zgadnąć „git checkout <nieistniejąca-gałąź>” (domyślnie)"
 
-#: builtin/checkout.c:1772
+#: builtin/checkout.c:1771
 msgid "use overlay mode (default)"
 msgstr "użyj trybu nakładki (domyślnie)"
 
-#: builtin/checkout.c:1817
+#: builtin/checkout.c:1816
 msgid "create and switch to a new branch"
 msgstr "utwórz i przełącz na nową gałąź"
 
-#: builtin/checkout.c:1819
+#: builtin/checkout.c:1818
 msgid "create/reset and switch to a branch"
 msgstr "utwórz/zresetuj i przełącz na gałąź"
 
-#: builtin/checkout.c:1821
+#: builtin/checkout.c:1820
 msgid "second guess 'git switch <no-such-branch>'"
 msgstr "spróbuj zgadnąć „git switch <nieistniejąca-gałąź>”"
 
-#: builtin/checkout.c:1823
+#: builtin/checkout.c:1822
 msgid "throw away local modifications"
 msgstr "wyrzuć lokalne zmiany"
 
-#: builtin/checkout.c:1857
+#: builtin/checkout.c:1856
 msgid "which tree-ish to checkout from"
 msgstr "z którego drzewa wybrać"
 
-#: builtin/checkout.c:1859
+#: builtin/checkout.c:1858
 msgid "restore the index"
 msgstr "przywróć indeks"
 
-#: builtin/checkout.c:1861
+#: builtin/checkout.c:1860
 msgid "restore the working tree (default)"
 msgstr "przywróć drzewo robocze (domyślnie)"
 
-#: builtin/checkout.c:1863
+#: builtin/checkout.c:1862
 msgid "ignore unmerged entries"
 msgstr "pomiń niescalone elementy"
 
-#: builtin/checkout.c:1864
+#: builtin/checkout.c:1863
 msgid "use overlay mode"
 msgstr "użyj trybu nakładki"
 
@@ -12355,8 +12642,8 @@ msgid "remove whole directories"
 msgstr "usuwaj całe katalogi"
 
 #: builtin/clean.c:909 builtin/describe.c:565 builtin/describe.c:567
-#: builtin/grep.c:921 builtin/log.c:183 builtin/log.c:185
-#: builtin/ls-files.c:558 builtin/name-rev.c:526 builtin/name-rev.c:528
+#: builtin/grep.c:922 builtin/log.c:184 builtin/log.c:186
+#: builtin/ls-files.c:573 builtin/name-rev.c:526 builtin/name-rev.c:528
 #: builtin/show-ref.c:179
 msgid "pattern"
 msgstr "wzorzec"
@@ -12452,7 +12739,7 @@ msgid "use --reference only while cloning"
 msgstr "użyj --reference tylko podczas klonowania"
 
 #: builtin/clone.c:120 builtin/column.c:27 builtin/init-db.c:563
-#: builtin/merge-file.c:46 builtin/pack-objects.c:3546 builtin/repack.c:358
+#: builtin/merge-file.c:46 builtin/pack-objects.c:3561 builtin/repack.c:357
 msgid "name"
 msgstr "nazwa"
 
@@ -12468,7 +12755,7 @@ msgstr "wybierz <gałąź> zamiast zdalnego HEAD"
 msgid "path to git-upload-pack on the remote"
 msgstr "ścieżka do git-upload-pack na zdalnej maszynie"
 
-#: builtin/clone.c:126 builtin/fetch.c:173 builtin/grep.c:860
+#: builtin/clone.c:126 builtin/fetch.c:176 builtin/grep.c:861
 #: builtin/pull.c:208
 msgid "depth"
 msgstr "głębokość"
@@ -12477,7 +12764,7 @@ msgstr "głębokość"
 msgid "create a shallow clone of that depth"
 msgstr "utwórz płytki klon o tej głębokości"
 
-#: builtin/clone.c:128 builtin/fetch.c:175 builtin/pack-objects.c:3535
+#: builtin/clone.c:128 builtin/fetch.c:178 builtin/pack-objects.c:3550
 #: builtin/pull.c:211
 msgid "time"
 msgstr "czas"
@@ -12486,12 +12773,12 @@ msgstr "czas"
 msgid "create a shallow clone since a specific time"
 msgstr "utwórz płytki klon od podanego czasu"
 
-#: builtin/clone.c:130 builtin/fetch.c:177 builtin/fetch.c:200
-#: builtin/pull.c:214 builtin/pull.c:239 builtin/rebase.c:1317
+#: builtin/clone.c:130 builtin/fetch.c:180 builtin/fetch.c:203
+#: builtin/pull.c:214 builtin/pull.c:239 builtin/rebase.c:1323
 msgid "revision"
 msgstr "rewizja"
 
-#: builtin/clone.c:131 builtin/fetch.c:178 builtin/pull.c:215
+#: builtin/clone.c:131 builtin/fetch.c:181 builtin/pull.c:215
 msgid "deepen history of shallow clone, excluding rev"
 msgstr "pogłęb historię płytkiego klonu pomijając rewizję"
 
@@ -12526,22 +12813,22 @@ msgstr "klucz=wartość"
 msgid "set config inside the new repository"
 msgstr "ustaw konfigurację w nowym repozytorium"
 
-#: builtin/clone.c:143 builtin/fetch.c:195 builtin/ls-remote.c:76
+#: builtin/clone.c:143 builtin/fetch.c:198 builtin/ls-remote.c:77
 #: builtin/pull.c:230 builtin/push.c:584 builtin/send-pack.c:196
 msgid "server-specific"
 msgstr "zależne-od-serwera"
 
-#: builtin/clone.c:143 builtin/fetch.c:195 builtin/ls-remote.c:76
+#: builtin/clone.c:143 builtin/fetch.c:198 builtin/ls-remote.c:77
 #: builtin/pull.c:231 builtin/push.c:584 builtin/send-pack.c:197
 msgid "option to transmit"
 msgstr "nadaj opcję"
 
-#: builtin/clone.c:144 builtin/fetch.c:196 builtin/pull.c:234
+#: builtin/clone.c:144 builtin/fetch.c:199 builtin/pull.c:234
 #: builtin/push.c:585
 msgid "use IPv4 addresses only"
 msgstr "używaj tylko adresów IPv4"
 
-#: builtin/clone.c:146 builtin/fetch.c:198 builtin/pull.c:237
+#: builtin/clone.c:146 builtin/fetch.c:201 builtin/pull.c:237
 #: builtin/push.c:587
 msgid "use IPv6 addresses only"
 msgstr "używaj tylko adresów IPv6"
@@ -12642,115 +12929,115 @@ msgstr "nie można przepakować, żeby posprzątać"
 msgid "cannot unlink temporary alternates file"
 msgstr "nie można wykonać unlink na tymczasowym pliku alternatywnych położeń"
 
-#: builtin/clone.c:992 builtin/receive-pack.c:2493
+#: builtin/clone.c:993 builtin/receive-pack.c:2493
 msgid "Too many arguments."
 msgstr "Zbyt dużo argumentów."
 
-#: builtin/clone.c:996
+#: builtin/clone.c:997
 msgid "You must specify a repository to clone."
 msgstr "Musisz określić repozytorium do sklonowania."
 
-#: builtin/clone.c:1009
+#: builtin/clone.c:1010
 #, c-format
 msgid "--bare and --origin %s options are incompatible."
 msgstr "opcje --bare i --origin %s wykluczają się."
 
-#: builtin/clone.c:1012
+#: builtin/clone.c:1013
 msgid "--bare and --separate-git-dir are incompatible."
 msgstr "--bare i --separate-git-dir się wykluczają."
 
-#: builtin/clone.c:1025
+#: builtin/clone.c:1026
 #, c-format
 msgid "repository '%s' does not exist"
 msgstr "repozytorium „%s” nie istnieje"
 
-#: builtin/clone.c:1029 builtin/fetch.c:1841
+#: builtin/clone.c:1030 builtin/fetch.c:1951
 #, c-format
 msgid "depth %s is not a positive number"
 msgstr "głębokość %s nie jest liczbą dodatnią"
 
-#: builtin/clone.c:1039
+#: builtin/clone.c:1040
 #, c-format
 msgid "destination path '%s' already exists and is not an empty directory."
 msgstr "docelowa ścieżka „%s” już istnieje i nie jest pustym katalogiem."
 
-#: builtin/clone.c:1045
+#: builtin/clone.c:1046
 #, c-format
 msgid "repository path '%s' already exists and is not an empty directory."
 msgstr "ścieżka repozytorium „%s” już istnieje i nie jest pustym katalogiem."
 
-#: builtin/clone.c:1059
+#: builtin/clone.c:1060
 #, c-format
 msgid "working tree '%s' already exists."
 msgstr "drzewo robocze „%s” już istnieje."
 
-#: builtin/clone.c:1074 builtin/clone.c:1095 builtin/difftool.c:271
-#: builtin/log.c:1987 builtin/worktree.c:354 builtin/worktree.c:386
+#: builtin/clone.c:1075 builtin/clone.c:1096 builtin/difftool.c:271
+#: builtin/log.c:1986 builtin/worktree.c:282 builtin/worktree.c:314
 #, c-format
 msgid "could not create leading directories of '%s'"
 msgstr "nie można utworzyć wiodących katalogów „%s”"
 
-#: builtin/clone.c:1079
+#: builtin/clone.c:1080
 #, c-format
 msgid "could not create work tree dir '%s'"
 msgstr "nie można utworzyć katalogu drzewa roboczego „%s”"
 
-#: builtin/clone.c:1099
+#: builtin/clone.c:1100
 #, c-format
 msgid "Cloning into bare repository '%s'...\n"
 msgstr "Klonowanie do suchego repozytorium „%s”...\n"
 
-#: builtin/clone.c:1101
+#: builtin/clone.c:1102
 #, c-format
 msgid "Cloning into '%s'...\n"
 msgstr "Klonowanie do „%s”...\n"
 
-#: builtin/clone.c:1125
+#: builtin/clone.c:1126
 msgid ""
 "clone --recursive is not compatible with both --reference and --reference-if-"
 "able"
 msgstr "clone --recursive nie pasuje do --reference ani do --reference-if-able"
 
-#: builtin/clone.c:1169 builtin/remote.c:200 builtin/remote.c:705
+#: builtin/clone.c:1170 builtin/remote.c:200 builtin/remote.c:705
 #, c-format
 msgid "'%s' is not a valid remote name"
 msgstr "„%s” nie jest prawidłową nazwą zdalnego repozytorium"
 
-#: builtin/clone.c:1210
+#: builtin/clone.c:1211
 msgid "--depth is ignored in local clones; use file:// instead."
 msgstr "--depth jest ignorowana w lokalnych klonach; użyj zamiast tego file://"
 
-#: builtin/clone.c:1212
+#: builtin/clone.c:1213
 msgid "--shallow-since is ignored in local clones; use file:// instead."
 msgstr ""
 "--shallow-since jest ignorowana w lokalnych klonach; użyj zamiast tego "
 "file://"
 
-#: builtin/clone.c:1214
+#: builtin/clone.c:1215
 msgid "--shallow-exclude is ignored in local clones; use file:// instead."
 msgstr ""
 "--shallow-exclude jest ignorowane w lokalnych klonach; użyj zamiast tego "
 "file://"
 
-#: builtin/clone.c:1216
+#: builtin/clone.c:1217
 msgid "--filter is ignored in local clones; use file:// instead."
 msgstr ""
 "--filter jest ignorowany w lokalnych klonach; użyj zamiast tego file://"
 
-#: builtin/clone.c:1219
+#: builtin/clone.c:1220
 msgid "source repository is shallow, ignoring --local"
 msgstr "źródłowe repozytorium jest płytkie, ignorowanie --local"
 
-#: builtin/clone.c:1224
+#: builtin/clone.c:1225
 msgid "--local is ignored"
 msgstr "--local jest ignorowane"
 
-#: builtin/clone.c:1311 builtin/clone.c:1319
+#: builtin/clone.c:1315 builtin/clone.c:1323
 #, c-format
 msgid "Remote branch %s not found in upstream %s"
 msgstr "Nie znaleziono zdalnej gałęzi %s w repozytorium %s"
 
-#: builtin/clone.c:1322
+#: builtin/clone.c:1326
 msgid "You appear to have cloned an empty repository."
 msgstr "Wygląda na to, że sklonowano puste repozytorium."
 
@@ -12809,14 +13096,14 @@ msgid "could not find object directory matching %s"
 msgstr "nie znaleziono katalogu obiektów pasującego do „%s”"
 
 #: builtin/commit-graph.c:80 builtin/commit-graph.c:210
-#: builtin/commit-graph.c:316 builtin/fetch.c:184 builtin/log.c:1769
+#: builtin/commit-graph.c:316 builtin/fetch.c:187 builtin/log.c:1768
 msgid "dir"
 msgstr "katalog"
 
 #: builtin/commit-graph.c:81 builtin/commit-graph.c:211
 #: builtin/commit-graph.c:317
-msgid "The object directory to store the graph"
-msgstr "Katalog obiektów do przechowania grafu"
+msgid "the object directory to store the graph"
+msgstr "katalog obiektów do przechowania grafu"
 
 #: builtin/commit-graph.c:83
 msgid "if the commit-graph is split, only verify the tip file"
@@ -12904,7 +13191,7 @@ msgstr ""
 msgid "duplicate parent %s ignored"
 msgstr "zignorowano powtórzonego rodzica %s"
 
-#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:555
+#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:557
 #, c-format
 msgid "not a valid object name %s"
 msgstr "nieprawidłowa nazwa obiektu %s"
@@ -12932,9 +13219,9 @@ msgstr "rodzic"
 msgid "id of a parent commit object"
 msgstr "identyfikator obiektu zapisu rodzica"
 
-#: builtin/commit-tree.c:114 builtin/commit.c:1504 builtin/merge.c:281
-#: builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1470
-#: builtin/tag.c:413
+#: builtin/commit-tree.c:114 builtin/commit.c:1504 builtin/merge.c:282
+#: builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1537
+#: builtin/tag.c:445
 msgid "message"
 msgstr "komunikat"
 
@@ -12946,7 +13233,7 @@ msgstr "komunikat zapisu"
 msgid "read commit log message from file"
 msgstr "odczytaj komunikat dziennika zapisu z pliku"
 
-#: builtin/commit-tree.c:121 builtin/commit.c:1516 builtin/merge.c:298
+#: builtin/commit-tree.c:121 builtin/commit.c:1516 builtin/merge.c:299
 #: builtin/pull.c:176 builtin/revert.c:118
 msgid "GPG sign commit"
 msgstr "podpisz zapis GPG"
@@ -13101,7 +13388,7 @@ msgstr ""
 msgid "could not lookup commit %s"
 msgstr "nie odnaleziono zapisu %s"
 
-#: builtin/commit.c:729 builtin/shortlog.c:425
+#: builtin/commit.c:729 builtin/shortlog.c:413
 #, c-format
 msgid "(reading log message from standard input)\n"
 msgstr "(czytanie komunikatu dziennika ze standardowego wejścia)\n"
@@ -13198,7 +13485,7 @@ msgstr "Nie można odczytać indeksu"
 msgid "Error building trees"
 msgstr "Błąd budowania drzew"
 
-#: builtin/commit.c:1011 builtin/tag.c:276
+#: builtin/commit.c:1011 builtin/tag.c:308
 #, c-format
 msgid "Please supply the message using either -m or -F option.\n"
 msgstr "Należy podać komunikat przy użyciu opcji -m lub -F.\n"
@@ -13290,7 +13577,7 @@ msgid "version"
 msgstr "wersja"
 
 #: builtin/commit.c:1374 builtin/commit.c:1533 builtin/push.c:560
-#: builtin/worktree.c:725
+#: builtin/worktree.c:679
 msgid "machine-readable output"
 msgstr "wyjście czytelne dla maszyny"
 
@@ -13304,7 +13591,7 @@ msgstr "rozdziel elementy znakiem NUL"
 
 #: builtin/commit.c:1382 builtin/commit.c:1386 builtin/commit.c:1541
 #: builtin/fast-export.c:1198 builtin/fast-export.c:1201
-#: builtin/fast-export.c:1204 builtin/rebase.c:1406 parse-options.h:336
+#: builtin/fast-export.c:1204 builtin/rebase.c:1412 parse-options.h:336
 msgid "mode"
 msgstr "tryb"
 
@@ -13362,7 +13649,7 @@ msgstr "pokaż różnice w szablonie komunikatu zapisu"
 msgid "Commit message options"
 msgstr "Opcje komunikatu zapisu"
 
-#: builtin/commit.c:1501 builtin/merge.c:285 builtin/tag.c:415
+#: builtin/commit.c:1501 builtin/merge.c:286 builtin/tag.c:447
 msgid "read message from file"
 msgstr "odczytaj komunikat z pliku"
 
@@ -13374,7 +13661,7 @@ msgstr "autor"
 msgid "override author for commit"
 msgstr "nadpisz autora w zapisie"
 
-#: builtin/commit.c:1503 builtin/gc.c:542
+#: builtin/commit.c:1503 builtin/gc.c:550
 msgid "date"
 msgstr "data"
 
@@ -13383,7 +13670,7 @@ msgid "override date for commit"
 msgstr "nadpisz datę zapisu"
 
 #: builtin/commit.c:1505 builtin/commit.c:1506 builtin/commit.c:1507
-#: builtin/commit.c:1508 parse-options.h:328 ref-filter.h:87
+#: builtin/commit.c:1508 parse-options.h:328 ref-filter.h:90
 msgid "commit"
 msgstr "zapis"
 
@@ -13411,7 +13698,7 @@ msgstr ""
 msgid "the commit is authored by me now (used with -C/-c/--amend)"
 msgstr "ten zapis jest teraz mojego autorstwa (do użycia z -C/-c/--amend)"
 
-#: builtin/commit.c:1510 builtin/log.c:1744 builtin/merge.c:301
+#: builtin/commit.c:1510 builtin/log.c:1743 builtin/merge.c:302
 #: builtin/pull.c:145 builtin/revert.c:110
 msgid "add a Signed-off-by trailer"
 msgstr "dodaj końcówkę Signed-off-by"
@@ -14050,41 +14337,41 @@ msgstr "--stdin i --merge-base się wykluczają"
 msgid "--merge-base only works with two commits"
 msgstr "--merge-base działa tylko z dwoma zapisami"
 
-#: builtin/diff.c:91
+#: builtin/diff.c:92
 #, c-format
 msgid "'%s': not a regular file or symlink"
 msgstr "„%s”: nie jest zwykłym plikiem ani dowiązaniem"
 
-#: builtin/diff.c:258
+#: builtin/diff.c:259
 #, c-format
 msgid "invalid option: %s"
 msgstr "nieprawidłowa opcja: %s"
 
-#: builtin/diff.c:375
+#: builtin/diff.c:376
 #, c-format
 msgid "%s...%s: no merge base"
 msgstr "%s...%s: brak podstawy scalenia"
 
-#: builtin/diff.c:485
+#: builtin/diff.c:486
 msgid "Not a git repository"
 msgstr "To nie jest repozytorium gita"
 
-#: builtin/diff.c:530 builtin/grep.c:681
+#: builtin/diff.c:532 builtin/grep.c:682
 #, c-format
 msgid "invalid object '%s' given."
 msgstr "podano nieprawidłowy obiekt „%s”."
 
-#: builtin/diff.c:541
+#: builtin/diff.c:543
 #, c-format
 msgid "more than two blobs given: '%s'"
 msgstr "podano ponad dwa bloby: „%s”"
 
-#: builtin/diff.c:546
+#: builtin/diff.c:548
 #, c-format
 msgid "unhandled object '%s' given."
 msgstr "otrzymano nieobsługiwany obiekt „%s”."
 
-#: builtin/diff.c:580
+#: builtin/diff.c:582
 #, c-format
 msgid "%s...%s: multiple merge bases, using %s"
 msgstr "%s...%s: wiele podstaw scalenia, używanie %s"
@@ -14265,40 +14552,40 @@ msgid "select handling of commit messages in an alternate encoding"
 msgstr "wybierz traktowanie komunikatów zapisów w alternatywnym kodowaniu"
 
 #: builtin/fast-export.c:1208
-msgid "Dump marks to this file"
-msgstr "Zrzuć znaczniki to tego pliku"
+msgid "dump marks to this file"
+msgstr "zrzuć znaczniki to tego pliku"
 
 #: builtin/fast-export.c:1210
-msgid "Import marks from this file"
-msgstr "Wczytaj znaczniki z tego pliku"
+msgid "import marks from this file"
+msgstr "wczytaj znaczniki z tego pliku"
 
 #: builtin/fast-export.c:1214
-msgid "Import marks from this file if it exists"
-msgstr "Wczytaj znaczniki z tego pliku, jeśli istnieje"
+msgid "import marks from this file if it exists"
+msgstr "wczytaj znaczniki z tego pliku, jeśli istnieje"
 
 #: builtin/fast-export.c:1216
-msgid "Fake a tagger when tags lack one"
-msgstr "Zmyśl tagującego w tagach, które go nie mają"
+msgid "fake a tagger when tags lack one"
+msgstr "zmyśl tagującego w tagach, które go nie mają"
 
 #: builtin/fast-export.c:1218
-msgid "Output full tree for each commit"
-msgstr "Wypisz pełne drzewo dla każdego zapisu"
+msgid "output full tree for each commit"
+msgstr "wypisz pełne drzewo dla każdego zapisu"
 
 #: builtin/fast-export.c:1220
-msgid "Use the done feature to terminate the stream"
-msgstr "Użyj funkcji done, żeby zakończyć strumień"
+msgid "use the done feature to terminate the stream"
+msgstr "użyj funkcji done, żeby zakończyć strumień"
 
 #: builtin/fast-export.c:1221
-msgid "Skip output of blob data"
-msgstr "Pomiń wypisywanie danych binarnych"
+msgid "skip output of blob data"
+msgstr "pomiń wypisywanie danych binarnych"
 
-#: builtin/fast-export.c:1222 builtin/log.c:1816
+#: builtin/fast-export.c:1222 builtin/log.c:1815
 msgid "refspec"
 msgstr "referencja"
 
 #: builtin/fast-export.c:1223
-msgid "Apply refspec to exported refs"
-msgstr "Zastosuj referencję do wyeksportowanych referencji"
+msgid "apply refspec to exported refs"
+msgstr "zastosuj referencję do wyeksportowanych referencji"
 
 #: builtin/fast-export.c:1224
 msgid "anonymize output"
@@ -14313,18 +14600,18 @@ msgid "convert <from> to <to> in anonymized output"
 msgstr "zamień <z> na <na> w zanonimizowanym wyjściu"
 
 #: builtin/fast-export.c:1229
-msgid "Reference parents which are not in fast-export stream by object id"
+msgid "reference parents which are not in fast-export stream by object id"
 msgstr ""
-"Odwołaj się do rodziców, którzy nie są w strumieniu szybkiego eksportu, "
+"odwołaj się do rodziców, którzy nie są w strumieniu szybkiego eksportu, "
 "według identyfikatora obiektu"
 
 #: builtin/fast-export.c:1231
-msgid "Show original object ids of blobs/commits"
-msgstr "Pokaż pierwotne identyfikatory obiektów blobów/zapisów"
+msgid "show original object ids of blobs/commits"
+msgstr "pokaż pierwotne identyfikatory obiektów blobów/zapisów"
 
 #: builtin/fast-export.c:1233
-msgid "Label tags with mark ids"
-msgstr "Oznacz tagi identyfikatorami znaczników"
+msgid "label tags with mark ids"
+msgstr "oznacz tagi identyfikatorami znaczników"
 
 #: builtin/fast-export.c:1256
 msgid "--anonymize-map without --anonymize does not make sense"
@@ -14364,7 +14651,7 @@ msgstr ""
 msgid "feature '%s' forbidden in input without --allow-unsafe-features"
 msgstr "funkcja „%s” zabroniona na wejściu bez --allow-unsafe-features"
 
-#: builtin/fetch-pack.c:241
+#: builtin/fetch-pack.c:242
 #, c-format
 msgid "Lockfile created but not reported: %s"
 msgstr "Utworzono plik blokady, ale go nie zgłoszono: %s"
@@ -14385,94 +14672,98 @@ msgstr "git fetch --multiple [<opcje>] [(<repozytorium> | <grupa>)...]"
 msgid "git fetch --all [<options>]"
 msgstr "git fetch --all [<opcje>]"
 
-#: builtin/fetch.c:119
+#: builtin/fetch.c:120
 msgid "fetch.parallel cannot be negative"
 msgstr "fetch.parallel nie może być ujemne"
 
-#: builtin/fetch.c:142 builtin/pull.c:185
+#: builtin/fetch.c:143 builtin/pull.c:185
 msgid "fetch from all remotes"
 msgstr "pobierz ze wszystkich zdalnych repozytoriów"
 
-#: builtin/fetch.c:144 builtin/pull.c:245
+#: builtin/fetch.c:145 builtin/pull.c:245
 msgid "set upstream for git pull/fetch"
 msgstr "ustaw gałąź nadrzędną do git pull/fetch"
 
-#: builtin/fetch.c:146 builtin/pull.c:188
+#: builtin/fetch.c:147 builtin/pull.c:188
 msgid "append to .git/FETCH_HEAD instead of overwriting"
 msgstr "dopisz do .git/FETCH_HEAD zamiast nadpisywać"
 
-#: builtin/fetch.c:148 builtin/pull.c:191
+#: builtin/fetch.c:149
+msgid "use atomic transaction to update references"
+msgstr "zażądaj atomowej transakcji do aktualizacji referencji"
+
+#: builtin/fetch.c:151 builtin/pull.c:191
 msgid "path to upload pack on remote end"
 msgstr "ścieżka do wysyłania paczki po zdalnej stronie"
 
-#: builtin/fetch.c:149
+#: builtin/fetch.c:152
 msgid "force overwrite of local reference"
 msgstr "wymuś nadpisanie lokalnej referencji"
 
-#: builtin/fetch.c:151
+#: builtin/fetch.c:154
 msgid "fetch from multiple remotes"
 msgstr "pobierz z wielu zdalnych repozytoriów"
 
-#: builtin/fetch.c:153 builtin/pull.c:195
+#: builtin/fetch.c:156 builtin/pull.c:195
 msgid "fetch all tags and associated objects"
 msgstr "pobierz wszystkie tagi i powiązane obiekty"
 
-#: builtin/fetch.c:155
+#: builtin/fetch.c:158
 msgid "do not fetch all tags (--no-tags)"
 msgstr "nie pobieraj wszystkich tagów (--no-tags)"
 
-#: builtin/fetch.c:157
+#: builtin/fetch.c:160
 msgid "number of submodules fetched in parallel"
 msgstr "liczba pod-modułów pobieranych równolegle"
 
-#: builtin/fetch.c:159 builtin/pull.c:198
+#: builtin/fetch.c:162 builtin/pull.c:198
 msgid "prune remote-tracking branches no longer on remote"
 msgstr "przytnij gałęzie śledzące usunięte ze zdalnego repozytorium"
 
-#: builtin/fetch.c:161
+#: builtin/fetch.c:164
 msgid "prune local tags no longer on remote and clobber changed tags"
 msgstr ""
 "przytnij lokalne tagi, których już nie ma w zdalnym repozytorium, i nadpisz "
 "zmienione tagi"
 
-#: builtin/fetch.c:162 builtin/fetch.c:187 builtin/pull.c:122
+#: builtin/fetch.c:165 builtin/fetch.c:190 builtin/pull.c:122
 msgid "on-demand"
 msgstr "on-demand"
 
-#: builtin/fetch.c:163
+#: builtin/fetch.c:166
 msgid "control recursive fetching of submodules"
 msgstr "steruj rekurencyjnym pobieraniem pod-modułów"
 
-#: builtin/fetch.c:168
+#: builtin/fetch.c:171
 msgid "write fetched references to the FETCH_HEAD file"
 msgstr "zapisz pobrane referencje do pliku FETCH_HEAD"
 
-#: builtin/fetch.c:169 builtin/pull.c:206
+#: builtin/fetch.c:172 builtin/pull.c:206
 msgid "keep downloaded pack"
 msgstr "zachowaj pobraną paczkę"
 
-#: builtin/fetch.c:171
+#: builtin/fetch.c:174
 msgid "allow updating of HEAD ref"
 msgstr "zezwól na aktualizację referencji HEAD"
 
-#: builtin/fetch.c:174 builtin/fetch.c:180 builtin/pull.c:209
+#: builtin/fetch.c:177 builtin/fetch.c:183 builtin/pull.c:209
 #: builtin/pull.c:218
 msgid "deepen history of shallow clone"
 msgstr "pogłęb historię płytkiego klonu"
 
-#: builtin/fetch.c:176 builtin/pull.c:212
+#: builtin/fetch.c:179 builtin/pull.c:212
 msgid "deepen history of shallow repository based on time"
 msgstr "pogłęb historię płytkiego repozytorium według czasu"
 
-#: builtin/fetch.c:182 builtin/pull.c:221
+#: builtin/fetch.c:185 builtin/pull.c:221
 msgid "convert to a complete repository"
 msgstr "przekształć w pełne repozytorium"
 
-#: builtin/fetch.c:185
+#: builtin/fetch.c:188
 msgid "prepend this to submodule path output"
 msgstr "dodaj to przed wyjściem ścieżki pod-modułu"
 
-#: builtin/fetch.c:188
+#: builtin/fetch.c:191
 msgid ""
 "default for recursive fetching of submodules (lower priority than config "
 "files)"
@@ -14480,100 +14771,100 @@ msgstr ""
 "domyślnie w rekurencyjnym pobieraniu pod-modułów (niższy priorytet niż pliki "
 "konfiguracji)"
 
-#: builtin/fetch.c:192 builtin/pull.c:224
+#: builtin/fetch.c:195 builtin/pull.c:224
 msgid "accept refs that update .git/shallow"
 msgstr "przyjmuj referencje, które aktualizują .git/shallow"
 
-#: builtin/fetch.c:193 builtin/pull.c:226
+#: builtin/fetch.c:196 builtin/pull.c:226
 msgid "refmap"
 msgstr "mapowanie"
 
-#: builtin/fetch.c:194 builtin/pull.c:227
+#: builtin/fetch.c:197 builtin/pull.c:227
 msgid "specify fetch refmap"
 msgstr "podaj mapę referencji do pobrania"
 
-#: builtin/fetch.c:201 builtin/pull.c:240
+#: builtin/fetch.c:204 builtin/pull.c:240
 msgid "report that we have only objects reachable from this object"
 msgstr "zgłaszaj, że mamy tylko obiekty osiągalne z tego obiektu"
 
-#: builtin/fetch.c:204 builtin/fetch.c:206
+#: builtin/fetch.c:207 builtin/fetch.c:209
 msgid "run 'maintenance --auto' after fetching"
 msgstr "wykonaj „maintenance --auto” po pobraniu"
 
-#: builtin/fetch.c:208 builtin/pull.c:243
+#: builtin/fetch.c:211 builtin/pull.c:243
 msgid "check for forced-updates on all updated branches"
 msgstr ""
 "sprawdź na wszystkich zaktualizowanych gałęziach, czy wystąpiły wymuszone "
 "aktualizacje"
 
-#: builtin/fetch.c:210
+#: builtin/fetch.c:213
 msgid "write the commit-graph after fetching"
 msgstr "wypisz graf zapisów po pobraniu"
 
-#: builtin/fetch.c:212
+#: builtin/fetch.c:215
 msgid "accept refspecs from stdin"
 msgstr "przyjmuj referencje ze standardowego wejścia"
 
-#: builtin/fetch.c:523
+#: builtin/fetch.c:526
 msgid "Couldn't find remote ref HEAD"
 msgstr "Nie znaleziono zdalnej referencji HEAD"
 
-#: builtin/fetch.c:677
+#: builtin/fetch.c:697
 #, c-format
 msgid "configuration fetch.output contains invalid value %s"
 msgstr "ustawienie fetch.output zawiera nieprawidłową wartość %s"
 
-#: builtin/fetch.c:775
+#: builtin/fetch.c:796
 #, c-format
 msgid "object %s not found"
 msgstr "nie znaleziono obiektu %s"
 
-#: builtin/fetch.c:779
+#: builtin/fetch.c:800
 msgid "[up to date]"
 msgstr "[aktualne]"
 
-#: builtin/fetch.c:792 builtin/fetch.c:808 builtin/fetch.c:880
+#: builtin/fetch.c:813 builtin/fetch.c:829 builtin/fetch.c:901
 msgid "[rejected]"
 msgstr "[odrzucono]"
 
-#: builtin/fetch.c:793
+#: builtin/fetch.c:814
 msgid "can't fetch in current branch"
 msgstr "nie można pobrać na bieżącej gałęzi"
 
-#: builtin/fetch.c:803
+#: builtin/fetch.c:824
 msgid "[tag update]"
 msgstr "[aktualizacja tagu]"
 
-#: builtin/fetch.c:804 builtin/fetch.c:841 builtin/fetch.c:863
-#: builtin/fetch.c:875
+#: builtin/fetch.c:825 builtin/fetch.c:862 builtin/fetch.c:884
+#: builtin/fetch.c:896
 msgid "unable to update local ref"
 msgstr "nie można zaktualizować lokalnej referencji"
 
-#: builtin/fetch.c:808
+#: builtin/fetch.c:829
 msgid "would clobber existing tag"
 msgstr "nadpisałoby istniejący tag"
 
-#: builtin/fetch.c:830
+#: builtin/fetch.c:851
 msgid "[new tag]"
 msgstr "[nowy tag]"
 
-#: builtin/fetch.c:833
+#: builtin/fetch.c:854
 msgid "[new branch]"
 msgstr "[nowa gałąź]"
 
-#: builtin/fetch.c:836
+#: builtin/fetch.c:857
 msgid "[new ref]"
 msgstr "[nowa referencja]"
 
-#: builtin/fetch.c:875
+#: builtin/fetch.c:896
 msgid "forced update"
 msgstr "wymuszona aktualizacja"
 
-#: builtin/fetch.c:880
+#: builtin/fetch.c:901
 msgid "non-fast-forward"
 msgstr "nieprzewinięte"
 
-#: builtin/fetch.c:901
+#: builtin/fetch.c:1005
 msgid ""
 "Fetch normally indicates which branches had a forced update,\n"
 "but that check has been disabled. To re-enable, use '--show-forced-updates'\n"
@@ -14584,7 +14875,7 @@ msgstr ""
 "użyj flagi „--show-forced-updates” lub wykonaj\n"
 "„git fetch.showForcedUpdates true”."
 
-#: builtin/fetch.c:905
+#: builtin/fetch.c:1009
 #, c-format
 msgid ""
 "It took %.2f seconds to check forced updates. You can use\n"
@@ -14597,22 +14888,22 @@ msgstr ""
 "false”\n"
 " aby uniknąć tego sprawdzenia.\n"
 
-#: builtin/fetch.c:939
+#: builtin/fetch.c:1041
 #, c-format
 msgid "%s did not send all necessary objects\n"
 msgstr "%s nie wysłał wszystkich potrzebnych obiektów\n"
 
-#: builtin/fetch.c:960
+#: builtin/fetch.c:1069
 #, c-format
 msgid "reject %s because shallow roots are not allowed to be updated"
 msgstr "odrzucanie %s, bo nie można aktualizować płytkich korzeni"
 
-#: builtin/fetch.c:1053 builtin/fetch.c:1191
+#: builtin/fetch.c:1146 builtin/fetch.c:1297
 #, c-format
 msgid "From %.*s\n"
 msgstr "Z %.*s\n"
 
-#: builtin/fetch.c:1064
+#: builtin/fetch.c:1168
 #, c-format
 msgid ""
 "some local refs could not be updated; try running\n"
@@ -14621,56 +14912,56 @@ msgstr ""
 "nie można zaktualizować niektórych lokalnych referencji;\n"
 " spróbuj wykonać „git remote prune %s”, aby usunąć stare niepasujące gałęzie"
 
-#: builtin/fetch.c:1161
+#: builtin/fetch.c:1267
 #, c-format
 msgid "   (%s will become dangling)"
 msgstr "   (%s będzie wiszący)"
 
-#: builtin/fetch.c:1162
+#: builtin/fetch.c:1268
 #, c-format
 msgid "   (%s has become dangling)"
 msgstr "   (%s stał się wiszący)"
 
-#: builtin/fetch.c:1194
+#: builtin/fetch.c:1300
 msgid "[deleted]"
 msgstr "[usunięto]"
 
-#: builtin/fetch.c:1195 builtin/remote.c:1118
+#: builtin/fetch.c:1301 builtin/remote.c:1118
 msgid "(none)"
 msgstr "(brak)"
 
-#: builtin/fetch.c:1218
+#: builtin/fetch.c:1324
 #, c-format
 msgid "Refusing to fetch into current branch %s of non-bare repository"
 msgstr "Odmawiam pobrania na bieżącą gałąź %s nie-suchego repozytorium"
 
-#: builtin/fetch.c:1237
+#: builtin/fetch.c:1343
 #, c-format
 msgid "Option \"%s\" value \"%s\" is not valid for %s"
 msgstr "W opcji „%s” wartość „%s” jest nieprawidłowa przy %s"
 
-#: builtin/fetch.c:1240
+#: builtin/fetch.c:1346
 #, c-format
 msgid "Option \"%s\" is ignored for %s\n"
 msgstr "Opcja „%s” jest ignorowana przez %s\n"
 
-#: builtin/fetch.c:1448
+#: builtin/fetch.c:1558
 msgid "multiple branches detected, incompatible with --set-upstream"
 msgstr "wykryto wiele gałęzi, wyklucza się to z --set-upstream"
 
-#: builtin/fetch.c:1463
+#: builtin/fetch.c:1573
 msgid "not setting upstream for a remote remote-tracking branch"
 msgstr "nie ustawiam gałęzi nadrzędnej w gałęzi śledzącej"
 
-#: builtin/fetch.c:1465
+#: builtin/fetch.c:1575
 msgid "not setting upstream for a remote tag"
 msgstr "nie ustawiam głównego nurtu w zdalnym tagu"
 
-#: builtin/fetch.c:1467
+#: builtin/fetch.c:1577
 msgid "unknown branch type"
 msgstr "nieznany rodzaj gałęzi"
 
-#: builtin/fetch.c:1469
+#: builtin/fetch.c:1579
 msgid ""
 "no source branch found.\n"
 "you need to specify exactly one branch with the --set-upstream option."
@@ -14678,22 +14969,22 @@ msgstr ""
 "nie znaleziono gałęzi źródłowej.\n"
 "należy podać dokładnie jedną gałąź z opcją --set-upstream."
 
-#: builtin/fetch.c:1598 builtin/fetch.c:1661
+#: builtin/fetch.c:1708 builtin/fetch.c:1771
 #, c-format
 msgid "Fetching %s\n"
 msgstr "Pobieranie %s\n"
 
-#: builtin/fetch.c:1608 builtin/fetch.c:1663 builtin/remote.c:101
+#: builtin/fetch.c:1718 builtin/fetch.c:1773 builtin/remote.c:101
 #, c-format
 msgid "Could not fetch %s"
 msgstr "Nie można pobrać %s"
 
-#: builtin/fetch.c:1620
+#: builtin/fetch.c:1730
 #, c-format
 msgid "could not fetch '%s' (exit code: %d)\n"
 msgstr "nie można pobrać „%s” (kod wyjścia: %d)\n"
 
-#: builtin/fetch.c:1724
+#: builtin/fetch.c:1834
 msgid ""
 "No remote repository specified.  Please, specify either a URL or a\n"
 "remote name from which new revisions should be fetched."
@@ -14701,44 +14992,44 @@ msgstr ""
 "Nie ustawiono zdalnego repozytorium.  Podaj adres URL lub\n"
 "nazwę zdalnego repozytorium, z którego mają być pobrane nowe rewizje."
 
-#: builtin/fetch.c:1760
+#: builtin/fetch.c:1870
 msgid "You need to specify a tag name."
 msgstr "Musisz określić nazwę tagu."
 
-#: builtin/fetch.c:1825
+#: builtin/fetch.c:1935
 msgid "Negative depth in --deepen is not supported"
 msgstr "ujemna głębokość w --deepen nie jest wspierana"
 
-#: builtin/fetch.c:1827
+#: builtin/fetch.c:1937
 msgid "--deepen and --depth are mutually exclusive"
 msgstr "--deepend i --depth się wykluczają"
 
-#: builtin/fetch.c:1832
+#: builtin/fetch.c:1942
 msgid "--depth and --unshallow cannot be used together"
 msgstr "--depth i --unshallow wykluczają się"
 
-#: builtin/fetch.c:1834
+#: builtin/fetch.c:1944
 msgid "--unshallow on a complete repository does not make sense"
 msgstr "--unshallow w pełnym repozytorium nie ma sensu"
 
-#: builtin/fetch.c:1851
+#: builtin/fetch.c:1961
 msgid "fetch --all does not take a repository argument"
 msgstr "fetch --all nie przyjmuje argumentów z repozytoriów"
 
-#: builtin/fetch.c:1853
+#: builtin/fetch.c:1963
 msgid "fetch --all does not make sense with refspecs"
 msgstr "--all i referencje się wykluczają"
 
-#: builtin/fetch.c:1862
+#: builtin/fetch.c:1972
 #, c-format
 msgid "No such remote or remote group: %s"
 msgstr "Nie ma takiego zdalnego repozytorium ani ich grupy: %s"
 
-#: builtin/fetch.c:1869
+#: builtin/fetch.c:1979
 msgid "Fetching a group and specifying refspecs does not make sense"
 msgstr "pobieranie grupy i podanie referencji nie ma sensu"
 
-#: builtin/fetch.c:1887
+#: builtin/fetch.c:1997
 msgid ""
 "--filter can only be used with the remote configured in extensions."
 "partialclone"
@@ -14746,7 +15037,12 @@ msgstr ""
 "można użyć --filter tylko ze zdalnym repozytorium ustawionym w extensions."
 "partialclone"
 
-#: builtin/fetch.c:1891
+#: builtin/fetch.c:2001
+msgid "--atomic can only be used when fetching from one remote"
+msgstr ""
+"można użyć --atomic tylko przy pobieraniu z jednego zdalnego repozytorium"
+
+#: builtin/fetch.c:2005
 msgid "--stdin can only be used when fetching from one remote"
 msgstr ""
 "można użyć --stdin tylko przy pobieraniu z jednego zdalnego repozytorium"
@@ -14813,7 +15109,7 @@ msgstr "użyj cytowania jak w Tclu"
 msgid "show only <n> matched refs"
 msgstr "pokazuj tylko <n> pasujących referencji"
 
-#: builtin/for-each-ref.c:39 builtin/tag.c:440
+#: builtin/for-each-ref.c:39 builtin/tag.c:472
 msgid "respect format colors"
 msgstr "uszanuj kolory formatu"
 
@@ -14853,32 +15149,32 @@ msgstr "klucz konfiguracji przechowujący listę ścieżek repozytoriów"
 msgid "missing --config=<config>"
 msgstr "brakuje --config=<konfiguracja>"
 
-#: builtin/fsck.c:69 builtin/fsck.c:148 builtin/fsck.c:149
+#: builtin/fsck.c:69 builtin/fsck.c:130 builtin/fsck.c:131
 msgid "unknown"
 msgstr "nieznane"
 
 #. TRANSLATORS: e.g. error in tree 01bfda: <more explanation>
-#: builtin/fsck.c:101 builtin/fsck.c:121
+#: builtin/fsck.c:83 builtin/fsck.c:103
 #, c-format
 msgid "error in %s %s: %s"
 msgstr "błąd w %s %s: %s"
 
 #. TRANSLATORS: e.g. warning in tree 01bfda: <more explanation>
-#: builtin/fsck.c:115
+#: builtin/fsck.c:97
 #, c-format
 msgid "warning in %s %s: %s"
 msgstr "ostrzeżenie w %s %s:%s"
 
-#: builtin/fsck.c:144 builtin/fsck.c:147
+#: builtin/fsck.c:126 builtin/fsck.c:129
 #, c-format
 msgid "broken link from %7s %s"
 msgstr "zepsute łącze z %7s %s"
 
-#: builtin/fsck.c:156
+#: builtin/fsck.c:138
 msgid "wrong object type in link"
 msgstr "zły rodzaj obiektu w łączu"
 
-#: builtin/fsck.c:172
+#: builtin/fsck.c:154
 #, c-format
 msgid ""
 "broken link from %7s %s\n"
@@ -14887,211 +15183,211 @@ msgstr ""
 "zepsute łącze z %7s %s\n"
 "             do %7s %s"
 
-#: builtin/fsck.c:283
+#: builtin/fsck.c:265
 #, c-format
 msgid "missing %s %s"
 msgstr "brakujący %s %s"
 
-#: builtin/fsck.c:310
+#: builtin/fsck.c:292
 #, c-format
 msgid "unreachable %s %s"
 msgstr "nieosiągalny %s %s"
 
-#: builtin/fsck.c:330
+#: builtin/fsck.c:312
 #, c-format
 msgid "dangling %s %s"
 msgstr "wiszące %s %s"
 
-#: builtin/fsck.c:340
+#: builtin/fsck.c:322
 msgid "could not create lost-found"
 msgstr "nie można utworzyć biura obiektów znalezionych"
 
-#: builtin/fsck.c:351
+#: builtin/fsck.c:333
 #, c-format
 msgid "could not finish '%s'"
 msgstr "nie można zakończyć „%s”"
 
-#: builtin/fsck.c:368
+#: builtin/fsck.c:350
 #, c-format
 msgid "Checking %s"
 msgstr "Sprawdzanie %s"
 
-#: builtin/fsck.c:406
+#: builtin/fsck.c:388
 #, c-format
 msgid "Checking connectivity (%d objects)"
 msgstr "Sprawdzanie spójności (%d obiektów)"
 
-#: builtin/fsck.c:425
+#: builtin/fsck.c:407
 #, c-format
 msgid "Checking %s %s"
 msgstr "Sprawdzanie %s %s"
 
-#: builtin/fsck.c:430
+#: builtin/fsck.c:412
 msgid "broken links"
 msgstr "zepsute łącza"
 
-#: builtin/fsck.c:439
+#: builtin/fsck.c:421
 #, c-format
 msgid "root %s"
 msgstr "korzeń %s"
 
-#: builtin/fsck.c:447
+#: builtin/fsck.c:429
 #, c-format
 msgid "tagged %s %s (%s) in %s"
 msgstr "otagowano %s %s (%s) w %s"
 
-#: builtin/fsck.c:476
+#: builtin/fsck.c:458
 #, c-format
 msgid "%s: object corrupt or missing"
 msgstr "%s: brakujący lub uszkodzony obiekt"
 
-#: builtin/fsck.c:501
+#: builtin/fsck.c:483
 #, c-format
 msgid "%s: invalid reflog entry %s"
 msgstr "%s: nieprawidłowy element dziennika referencji %s"
 
-#: builtin/fsck.c:515
+#: builtin/fsck.c:497
 #, c-format
 msgid "Checking reflog %s->%s"
 msgstr "Sprawdzanie dziennika referencji %s->%s"
 
-#: builtin/fsck.c:549
+#: builtin/fsck.c:531
 #, c-format
 msgid "%s: invalid sha1 pointer %s"
 msgstr "%s: nieprawidłowy wskaźnik SHA-1 %s"
 
-#: builtin/fsck.c:556
+#: builtin/fsck.c:538
 #, c-format
 msgid "%s: not a commit"
 msgstr "%s: nie jest zapisem"
 
-#: builtin/fsck.c:610
+#: builtin/fsck.c:592
 msgid "notice: No default references"
 msgstr "uwaga: Brak domyślnych referencji"
 
-#: builtin/fsck.c:625
+#: builtin/fsck.c:607
 #, c-format
 msgid "%s: object corrupt or missing: %s"
 msgstr "%s: brakujący lub uszkodzony obiekt: %s"
 
-#: builtin/fsck.c:638
+#: builtin/fsck.c:620
 #, c-format
 msgid "%s: object could not be parsed: %s"
 msgstr "%s: nie można przetworzyć obiektu: %s"
 
-#: builtin/fsck.c:658
+#: builtin/fsck.c:640
 #, c-format
 msgid "bad sha1 file: %s"
 msgstr "zły plik SHA-1: %s"
 
-#: builtin/fsck.c:673
+#: builtin/fsck.c:655
 msgid "Checking object directory"
 msgstr "Sprawdzanie katalogu obiektów"
 
-#: builtin/fsck.c:676
+#: builtin/fsck.c:658
 msgid "Checking object directories"
 msgstr "Sprawdzanie katalogów obiektów"
 
-#: builtin/fsck.c:691
+#: builtin/fsck.c:673
 #, c-format
 msgid "Checking %s link"
 msgstr "Sprawdzanie połączenia %s"
 
-#: builtin/fsck.c:696 builtin/index-pack.c:865
+#: builtin/fsck.c:678 builtin/index-pack.c:865
 #, c-format
 msgid "invalid %s"
 msgstr "błędny %s"
 
-#: builtin/fsck.c:703
+#: builtin/fsck.c:685
 #, c-format
 msgid "%s points to something strange (%s)"
 msgstr "%s wskazuje na coś dziwnego (%s)"
 
-#: builtin/fsck.c:709
+#: builtin/fsck.c:691
 #, c-format
 msgid "%s: detached HEAD points at nothing"
 msgstr "%s: oddzielone HEAD niczego nie wskazuje"
 
-#: builtin/fsck.c:713
+#: builtin/fsck.c:695
 #, c-format
 msgid "notice: %s points to an unborn branch (%s)"
 msgstr "uwaga: %s wskazuje nienarodzoną gałąź (%s)"
 
-#: builtin/fsck.c:725
+#: builtin/fsck.c:707
 msgid "Checking cache tree"
 msgstr "Sprawdzanie drzewa pamięci podręcznej"
 
-#: builtin/fsck.c:730
+#: builtin/fsck.c:712
 #, c-format
 msgid "%s: invalid sha1 pointer in cache-tree"
 msgstr "%s: nieprawidłowy wskaźnik SHA-1 w drzewie pamięci podręcznej"
 
-#: builtin/fsck.c:739
+#: builtin/fsck.c:721
 msgid "non-tree in cache-tree"
 msgstr "nie-drzewo w drzewie pamięci podręcznej"
 
-#: builtin/fsck.c:770
+#: builtin/fsck.c:752
 msgid "git fsck [<options>] [<object>...]"
 msgstr "git fsck [<opcje>] [<obiekt>...]"
 
-#: builtin/fsck.c:776
+#: builtin/fsck.c:758
 msgid "show unreachable objects"
 msgstr "pokazuj nieosiągalne obiekty"
 
-#: builtin/fsck.c:777
+#: builtin/fsck.c:759
 msgid "show dangling objects"
 msgstr "pokaż wiszące obiekty"
 
-#: builtin/fsck.c:778
+#: builtin/fsck.c:760
 msgid "report tags"
 msgstr "zgłaszaj tagi"
 
-#: builtin/fsck.c:779
+#: builtin/fsck.c:761
 msgid "report root nodes"
 msgstr "zgłaszaj węzły korzenia"
 
-#: builtin/fsck.c:780
+#: builtin/fsck.c:762
 msgid "make index objects head nodes"
 msgstr "dodaj obiekty indeksu do naczelnych węzłów"
 
-#: builtin/fsck.c:781
+#: builtin/fsck.c:763
 msgid "make reflogs head nodes (default)"
 msgstr "dodaj dzienniki referencji do węzłów naczelnych (domyślnie)"
 
-#: builtin/fsck.c:782
+#: builtin/fsck.c:764
 msgid "also consider packs and alternate objects"
 msgstr "przejrzyj też paczki i obiekty alternatywne"
 
-#: builtin/fsck.c:783
+#: builtin/fsck.c:765
 msgid "check only connectivity"
 msgstr "sprawdź tylko spójność"
 
-#: builtin/fsck.c:784
+#: builtin/fsck.c:766 builtin/mktag.c:78
 msgid "enable more strict checking"
 msgstr "włącz ściślejsze sprawdzanie"
 
-#: builtin/fsck.c:786
+#: builtin/fsck.c:768
 msgid "write dangling objects in .git/lost-found"
 msgstr "zapisz wiszące obiekty w .git/lost-found"
 
-#: builtin/fsck.c:787 builtin/prune.c:134
+#: builtin/fsck.c:769 builtin/prune.c:134
 msgid "show progress"
 msgstr "pokazuj postęp"
 
-#: builtin/fsck.c:788
+#: builtin/fsck.c:770
 msgid "show verbose names for reachable objects"
 msgstr "pokaż rozwlekłe nazwy osiągalnych obiektów"
 
-#: builtin/fsck.c:847 builtin/index-pack.c:261
+#: builtin/fsck.c:829 builtin/index-pack.c:261
 msgid "Checking objects"
 msgstr "Sprawdzanie obiektów"
 
-#: builtin/fsck.c:875
+#: builtin/fsck.c:857
 #, c-format
 msgid "%s: object missing"
 msgstr "%s: brakujący obiekt"
 
-#: builtin/fsck.c:886
+#: builtin/fsck.c:868
 #, c-format
 msgid "invalid parameter: expected sha1, got '%s'"
 msgstr "nieprawidłowy parametr: oczekiwano SHA-1, otrzymano „%s”"
@@ -15100,27 +15396,27 @@ msgstr "nieprawidłowy parametr: oczekiwano SHA-1, otrzymano „%s”"
 msgid "git gc [<options>]"
 msgstr "git gc [<opcje>]"
 
-#: builtin/gc.c:94
+#: builtin/gc.c:93
 #, c-format
 msgid "Failed to fstat %s: %s"
 msgstr "Nie można wykonać fstat na %s: %s"
 
-#: builtin/gc.c:130
+#: builtin/gc.c:129
 #, c-format
 msgid "failed to parse '%s' value '%s'"
 msgstr "nie można przetworzyć wartości „%s” „%s”"
 
-#: builtin/gc.c:479 builtin/init-db.c:58
+#: builtin/gc.c:487 builtin/init-db.c:58
 #, c-format
 msgid "cannot stat '%s'"
 msgstr "nie można wykonać stat na „%s”"
 
-#: builtin/gc.c:488 builtin/notes.c:240 builtin/tag.c:530
+#: builtin/gc.c:496 builtin/notes.c:240 builtin/tag.c:562
 #, c-format
 msgid "cannot read '%s'"
 msgstr "nie można odczytać „%s”"
 
-#: builtin/gc.c:495
+#: builtin/gc.c:503
 #, c-format
 msgid ""
 "The last gc run reported the following. Please correct the root cause\n"
@@ -15136,198 +15432,225 @@ msgstr ""
 "\n"
 "%s"
 
-#: builtin/gc.c:543
+#: builtin/gc.c:551
 msgid "prune unreferenced objects"
 msgstr "przytnij niewskazywane obiekty"
 
-#: builtin/gc.c:545
+#: builtin/gc.c:553
 msgid "be more thorough (increased runtime)"
 msgstr "bądź dokładniejszy (dłuższy czas działania)"
 
-#: builtin/gc.c:546
+#: builtin/gc.c:554
 msgid "enable auto-gc mode"
 msgstr "włącz automatyczne zbieranie śmieci"
 
-#: builtin/gc.c:549
+#: builtin/gc.c:557
 msgid "force running gc even if there may be another gc running"
 msgstr "wymuś uruchomienie gc, nawet jeśli inne może być właśnie w trakcie"
 
-#: builtin/gc.c:552
+#: builtin/gc.c:560
 msgid "repack all other packs except the largest pack"
 msgstr "przepakuj wszystkie pozostałe paczki oprócz największej"
 
-#: builtin/gc.c:569
+#: builtin/gc.c:576
 #, c-format
 msgid "failed to parse gc.logexpiry value %s"
 msgstr "nie można przetworzyć wartości gc.logexpiry %s"
 
-#: builtin/gc.c:580
+#: builtin/gc.c:587
 #, c-format
 msgid "failed to parse prune expiry value %s"
 msgstr "nie można przetworzyć wartości wygaśnięcia przycięć %s"
 
-#: builtin/gc.c:600
+#: builtin/gc.c:607
 #, c-format
 msgid "Auto packing the repository in background for optimum performance.\n"
 msgstr "Automatyczne pakowanie repozytorium w tle dla optymalnej wydajności.\n"
 
-#: builtin/gc.c:602
+#: builtin/gc.c:609
 #, c-format
 msgid "Auto packing the repository for optimum performance.\n"
 msgstr "Automatyczne pakowanie repozytorium dla optymalnej wydajności.\n"
 
-#: builtin/gc.c:603
+#: builtin/gc.c:610
 #, c-format
 msgid "See \"git help gc\" for manual housekeeping.\n"
 msgstr "Zobacz „git help gc”, aby utrzymywać repozytorium ręcznie.\n"
 
-#: builtin/gc.c:643
+#: builtin/gc.c:650
 #, c-format
 msgid ""
 "gc is already running on machine '%s' pid %<PRIuMAX> (use --force if not)"
 msgstr ""
 "gc już działa na maszynie „%s” pid %<PRIuMAX> (użyj --force, jeśli nie)"
 
-#: builtin/gc.c:698
+#: builtin/gc.c:705
 msgid ""
 "There are too many unreachable loose objects; run 'git prune' to remove them."
 msgstr ""
 "Jest za dużo nieosiągalnych luźnych obiektów; wykonaj „git prune”, aby je "
 "usunąć."
 
-#: builtin/gc.c:708
+#: builtin/gc.c:715
 msgid ""
 "git maintenance run [--auto] [--[no-]quiet] [--task=<task>] [--schedule]"
 msgstr ""
 "git maintenance run [--auto] [--[no-]quiet] [--task=<zadanie>] [--schedule]"
 
-#: builtin/gc.c:738
+#: builtin/gc.c:745
 msgid "--no-schedule is not allowed"
 msgstr "--no-schedule nie jest dozwolone"
 
-#: builtin/gc.c:743
+#: builtin/gc.c:750
 #, c-format
 msgid "unrecognized --schedule argument '%s'"
 msgstr "nierozpoznany argument --schedule „%s”"
 
-#: builtin/gc.c:862
+#: builtin/gc.c:869
 msgid "failed to write commit-graph"
 msgstr "nie można wypisać grafu zapisów"
 
-#: builtin/gc.c:901
+#: builtin/gc.c:914
 msgid "failed to fill remotes"
 msgstr "nie można wypełnić zdalnych repozytoriów"
 
-#: builtin/gc.c:1024
+#: builtin/gc.c:1037
 msgid "failed to start 'git pack-objects' process"
 msgstr "nie można uruchomić procesu „git pack-objects”"
 
-#: builtin/gc.c:1041
+#: builtin/gc.c:1054
 msgid "failed to finish 'git pack-objects' process"
 msgstr "nie można ukończyć procesu „git pack-objects”"
 
-#: builtin/gc.c:1093
+#: builtin/gc.c:1106
 msgid "failed to write multi-pack-index"
 msgstr "nie można zapisać indeksu wielu paczek"
 
-#: builtin/gc.c:1111
+#: builtin/gc.c:1124
 msgid "'git multi-pack-index expire' failed"
 msgstr "„git multi-pack-index expire” nie powiodło się"
 
-#: builtin/gc.c:1172
+#: builtin/gc.c:1185
 msgid "'git multi-pack-index repack' failed"
 msgstr "„git multi-pack-index repack” nie powiodło się"
 
-#: builtin/gc.c:1181
+#: builtin/gc.c:1194
 msgid ""
 "skipping incremental-repack task because core.multiPackIndex is disabled"
 msgstr ""
 "pomijanie zadania przyrostowego przepakowania, bo core.multiPackIndex jest "
 "wyłączone"
 
-#: builtin/gc.c:1279
+#: builtin/gc.c:1298
 #, c-format
 msgid "lock file '%s' exists, skipping maintenance"
 msgstr "istnieje plik blokady „%s”, pomijanie porządków"
 
-#: builtin/gc.c:1309
+#: builtin/gc.c:1328
 #, c-format
 msgid "task '%s' failed"
 msgstr "zadanie „%s” nie powiodło się"
 
-#: builtin/gc.c:1389
+#: builtin/gc.c:1410
 #, c-format
 msgid "'%s' is not a valid task"
 msgstr "„%s” nie jest prawidłowym zadaniem"
 
-#: builtin/gc.c:1394
+#: builtin/gc.c:1415
 #, c-format
 msgid "task '%s' cannot be selected multiple times"
 msgstr "nie można wybrać wiele razy zadania „%s”"
 
-#: builtin/gc.c:1409
+#: builtin/gc.c:1430
 msgid "run tasks based on the state of the repository"
 msgstr "uruchamiaj zadania w oparciu o stan repozytorium"
 
-#: builtin/gc.c:1410
+#: builtin/gc.c:1431
 msgid "frequency"
 msgstr "częstotliwość"
 
-#: builtin/gc.c:1411
+#: builtin/gc.c:1432
 msgid "run tasks based on frequency"
 msgstr "uruchamiaj zadania w oparciu o częstotliwość"
 
-#: builtin/gc.c:1414
+#: builtin/gc.c:1435
 msgid "do not report progress or other information over stderr"
 msgstr ""
 "nie zgłaszaj postępu ani innych informacji na standardowe wyjście "
 "diagnostyczne"
 
-#: builtin/gc.c:1415
+#: builtin/gc.c:1436
 msgid "task"
 msgstr "zadanie"
 
-#: builtin/gc.c:1416
+#: builtin/gc.c:1437
 msgid "run a specific task"
 msgstr "uruchom konkretne zadanie"
 
-#: builtin/gc.c:1433
+#: builtin/gc.c:1454
 msgid "use at most one of --auto and --schedule=<frequency>"
 msgstr "--auto i --schedule=<frequency> się wykluczają"
 
-#: builtin/gc.c:1467
+#: builtin/gc.c:1497
 msgid "failed to run 'git config'"
 msgstr "nie można wykonać „git config”"
 
-#: builtin/gc.c:1512
-msgid "another process is scheduling background maintenance"
-msgstr "inny proces planuje porządki w tle"
+#: builtin/gc.c:1562
+#, c-format
+msgid "failed to expand path '%s'"
+msgstr "nie można rozwinąć ścieżki „%s”"
+
+#: builtin/gc.c:1591
+msgid "failed to start launchctl"
+msgstr "nie można uruchomić launchctl"
+
+#: builtin/gc.c:1628
+#, c-format
+msgid "failed to create directories for '%s'"
+msgstr "nie można utworzyć katalogów na „%s”"
+
+#: builtin/gc.c:1689
+#, c-format
+msgid "failed to bootstrap service %s"
+msgstr "nie można wydostać usługi %s"
 
-#: builtin/gc.c:1525
+#: builtin/gc.c:1760
+msgid "failed to create temp xml file"
+msgstr "nie można utworzyć tymczasowego pliku XML"
+
+#: builtin/gc.c:1850
+msgid "failed to start schtasks"
+msgstr "nie można uruchomić schtasks"
+
+#: builtin/gc.c:1894
 msgid "failed to run 'crontab -l'; your system might not support 'cron'"
 msgstr "nie można wykonać „crontab -l”; ten system może nie wspierać crona"
 
-#: builtin/gc.c:1544
+#: builtin/gc.c:1911
 msgid "failed to run 'crontab'; your system might not support 'cron'"
 msgstr "nie można wykonać „crontab”; ten system może nie wspierać crona"
 
-#: builtin/gc.c:1550
+#: builtin/gc.c:1915
 msgid "failed to open stdin of 'crontab'"
 msgstr "nie można otworzyć standardowego wejścia „crontab”"
 
-#: builtin/gc.c:1592
+#: builtin/gc.c:1956
 msgid "'crontab' died"
 msgstr "„crontab” padł"
 
-#: builtin/gc.c:1605
+#: builtin/gc.c:1990
+msgid "another process is scheduling background maintenance"
+msgstr "inny proces planuje porządki w tle"
+
+#: builtin/gc.c:2009
 msgid "failed to add repo to global config"
 msgstr "nie można dodać repozytorium do globalnej konfiguracji"
 
-#: builtin/gc.c:1615
+#: builtin/gc.c:2019
 msgid "git maintenance <subcommand> [<options>]"
 msgstr "git maintenance <pod-polecenie> [<opcje>]"
 
-#: builtin/gc.c:1634
+#: builtin/gc.c:2038
 #, c-format
 msgid "invalid subcommand: %s"
 msgstr "nieprawidłowe pod-polecenie: %s"
@@ -15336,12 +15659,12 @@ msgstr "nieprawidłowe pod-polecenie: %s"
 msgid "git grep [<options>] [-e] <pattern> [<rev>...] [[--] <path>...]"
 msgstr "git grep [<opcje>] [-e] <wzorzec> [<rewizja>...] [[--] <ścieżka>...]"
 
-#: builtin/grep.c:225
+#: builtin/grep.c:223
 #, c-format
 msgid "grep: failed to create thread: %s"
 msgstr "grep: nie można utworzyć wątku: %s"
 
-#: builtin/grep.c:279
+#: builtin/grep.c:277
 #, c-format
 msgid "invalid number of threads specified (%d) for %s"
 msgstr "podano nieprawidłową liczbę wątków (%d) do %s"
@@ -15350,258 +15673,258 @@ msgstr "podano nieprawidłową liczbę wątków (%d) do %s"
 #. variable for tweaking threads, currently
 #. grep.threads
 #.
-#: builtin/grep.c:287 builtin/index-pack.c:1576 builtin/index-pack.c:1766
-#: builtin/pack-objects.c:2936
+#: builtin/grep.c:285 builtin/index-pack.c:1589 builtin/index-pack.c:1792
+#: builtin/pack-objects.c:2944
 #, c-format
 msgid "no threads support, ignoring %s"
 msgstr "brak obsługi wątków, ignorowanie %s"
 
-#: builtin/grep.c:475 builtin/grep.c:600 builtin/grep.c:640
+#: builtin/grep.c:473 builtin/grep.c:601 builtin/grep.c:641
 #, c-format
 msgid "unable to read tree (%s)"
 msgstr "nie można odczytać drzewa (%s)"
 
-#: builtin/grep.c:655
+#: builtin/grep.c:656
 #, c-format
 msgid "unable to grep from object of type %s"
 msgstr "nie można przeprowadzić grep z obiektu rodzaju %s"
 
-#: builtin/grep.c:736
+#: builtin/grep.c:737
 #, c-format
 msgid "switch `%c' expects a numerical value"
 msgstr "przełącznik „%c” oczekuje wartości liczbowej"
 
-#: builtin/grep.c:835
+#: builtin/grep.c:836
 msgid "search in index instead of in the work tree"
 msgstr "wyszukaj w indeksie zamiast w drzewie roboczym"
 
-#: builtin/grep.c:837
+#: builtin/grep.c:838
 msgid "find in contents not managed by git"
 msgstr "znajdź w zawartości nie zarządzanej przez gita"
 
-#: builtin/grep.c:839
+#: builtin/grep.c:840
 msgid "search in both tracked and untracked files"
 msgstr "szukaj i w plikach śledzonych i nieśledzonych"
 
-#: builtin/grep.c:841
+#: builtin/grep.c:842
 msgid "ignore files specified via '.gitignore'"
 msgstr "pomiń pliki wymienione w „.gitignore”"
 
-#: builtin/grep.c:843
+#: builtin/grep.c:844
 msgid "recursively search in each submodule"
 msgstr "wyszukaj rekurencyjnie w każdym pod-module"
 
-#: builtin/grep.c:846
+#: builtin/grep.c:847
 msgid "show non-matching lines"
 msgstr "pokaż niepasujące wiersze"
 
-#: builtin/grep.c:848
+#: builtin/grep.c:849
 msgid "case insensitive matching"
 msgstr "ignorowanie wielkości liter przy dopasowaniu"
 
-#: builtin/grep.c:850
+#: builtin/grep.c:851
 msgid "match patterns only at word boundaries"
 msgstr "dopasuj wzorce tylko na brzegach słów"
 
-#: builtin/grep.c:852
+#: builtin/grep.c:853
 msgid "process binary files as text"
 msgstr "przetwarzaj pliki binarne jako tekst"
 
-#: builtin/grep.c:854
+#: builtin/grep.c:855
 msgid "don't match patterns in binary files"
 msgstr "nie dopasowuj wzorców w plikach binarnych"
 
-#: builtin/grep.c:857
+#: builtin/grep.c:858
 msgid "process binary files with textconv filters"
 msgstr "przetwarzaj pliki binarne filtrami textconv"
 
-#: builtin/grep.c:859
+#: builtin/grep.c:860
 msgid "search in subdirectories (default)"
 msgstr "wyszukaj w pod-katalogach (domyślnie)"
 
-#: builtin/grep.c:861
+#: builtin/grep.c:862
 msgid "descend at most <depth> levels"
 msgstr "zejdź o co najwyżej <głębokość> poziomów"
 
-#: builtin/grep.c:865
+#: builtin/grep.c:866
 msgid "use extended POSIX regular expressions"
 msgstr "użyj rozszerzonych wyrażeń regularnych POSIX"
 
-#: builtin/grep.c:868
+#: builtin/grep.c:869
 msgid "use basic POSIX regular expressions (default)"
 msgstr "użyj podstawowych wyrażeń regularnych POSIX (domyślnie)"
 
-#: builtin/grep.c:871
+#: builtin/grep.c:872
 msgid "interpret patterns as fixed strings"
 msgstr "interpretuj wzorce jako stałe łańcuchy"
 
-#: builtin/grep.c:874
+#: builtin/grep.c:875
 msgid "use Perl-compatible regular expressions"
 msgstr "użyj wyrażeń regularnych kompatybilnych z Perlem"
 
-#: builtin/grep.c:877
+#: builtin/grep.c:878
 msgid "show line numbers"
 msgstr "pokaż numery wierszy"
 
-#: builtin/grep.c:878
+#: builtin/grep.c:879
 msgid "show column number of first match"
 msgstr "pokaż numer kolumny pierwszego dopasowania"
 
-#: builtin/grep.c:879
+#: builtin/grep.c:880
 msgid "don't show filenames"
 msgstr "nie pokazuj nazw plików"
 
-#: builtin/grep.c:880
+#: builtin/grep.c:881
 msgid "show filenames"
 msgstr "pokaż nazwy plików"
 
-#: builtin/grep.c:882
+#: builtin/grep.c:883
 msgid "show filenames relative to top directory"
 msgstr "pokaż nazwy plików względem głównego katalogu"
 
-#: builtin/grep.c:884
+#: builtin/grep.c:885
 msgid "show only filenames instead of matching lines"
 msgstr "pokazuj tylko nazwy plików zamiast pasujących wierszy"
 
-#: builtin/grep.c:886
+#: builtin/grep.c:887
 msgid "synonym for --files-with-matches"
 msgstr "zamiennik na --files-with-matches"
 
-#: builtin/grep.c:889
+#: builtin/grep.c:890
 msgid "show only the names of files without match"
 msgstr "pokazuj tylko nazwy plików bez trafień"
 
-#: builtin/grep.c:891
+#: builtin/grep.c:892
 msgid "print NUL after filenames"
 msgstr "wypisuj NUL po nazwach plików"
 
-#: builtin/grep.c:894
+#: builtin/grep.c:895
 msgid "show only matching parts of a line"
 msgstr "pokaż tylko pasujące fragmenty wiersza"
 
-#: builtin/grep.c:896
+#: builtin/grep.c:897
 msgid "show the number of matches instead of matching lines"
 msgstr "pokaż liczbę dopasowań zamiast pasujących wierszy"
 
-#: builtin/grep.c:897
+#: builtin/grep.c:898
 msgid "highlight matches"
 msgstr "podświetl dopasowania"
 
-#: builtin/grep.c:899
+#: builtin/grep.c:900
 msgid "print empty line between matches from different files"
 msgstr "wypisz pusty wiersz pomiędzy dopasowaniami z różnych plików"
 
-#: builtin/grep.c:901
+#: builtin/grep.c:902
 msgid "show filename only once above matches from same file"
 msgstr "pokaż nazwę pliku tylko raz nad dopasowaniami z jednego pliku"
 
-#: builtin/grep.c:904
+#: builtin/grep.c:905
 msgid "show <n> context lines before and after matches"
 msgstr "pokaż <n> wierszy kontekstu przed dopasowaniami i po nich"
 
-#: builtin/grep.c:907
+#: builtin/grep.c:908
 msgid "show <n> context lines before matches"
 msgstr "pokaż <n> wierszy kontekstu przed dopasowaniami"
 
-#: builtin/grep.c:909
+#: builtin/grep.c:910
 msgid "show <n> context lines after matches"
 msgstr "pokaż <n> wierszy kontekstu po dopasowaniach"
 
-#: builtin/grep.c:911
+#: builtin/grep.c:912
 msgid "use <n> worker threads"
 msgstr "użyj <n> wątków roboczych"
 
-#: builtin/grep.c:912
+#: builtin/grep.c:913
 msgid "shortcut for -C NUM"
 msgstr "skrót na -C ILE"
 
-#: builtin/grep.c:915
+#: builtin/grep.c:916
 msgid "show a line with the function name before matches"
 msgstr "pokaż wiersz z nazwą funkcji przed dopasowaniami"
 
-#: builtin/grep.c:917
+#: builtin/grep.c:918
 msgid "show the surrounding function"
 msgstr "pokaż okalającą funkcję"
 
-#: builtin/grep.c:920
+#: builtin/grep.c:921
 msgid "read patterns from file"
 msgstr "wczytaj wzorce z pliku"
 
-#: builtin/grep.c:922
+#: builtin/grep.c:923
 msgid "match <pattern>"
 msgstr "dopasuj <wzorzec>"
 
-#: builtin/grep.c:924
+#: builtin/grep.c:925
 msgid "combine patterns specified with -e"
 msgstr "łącz wzorce podane przez -e"
 
-#: builtin/grep.c:936
+#: builtin/grep.c:937
 msgid "indicate hit with exit status without output"
 msgstr "zgłoś trafienie kodem wyjścia bez wypisywania"
 
-#: builtin/grep.c:938
+#: builtin/grep.c:939
 msgid "show only matches from files that match all patterns"
 msgstr "pokaż tylko dopasowania z plików, które pasują do wszystkich wzorców"
 
-#: builtin/grep.c:940
-msgid "show parse tree for grep expression"
-msgstr "pokaż drzewo przetwarzania w wyrażeniu grepa"
-
-#: builtin/grep.c:944
+#: builtin/grep.c:942
 msgid "pager"
 msgstr "czytnik"
 
-#: builtin/grep.c:944
+#: builtin/grep.c:942
 msgid "show matching files in the pager"
 msgstr "pokaż pasujące pliki w czytniku"
 
-#: builtin/grep.c:948
+#: builtin/grep.c:946
 msgid "allow calling of grep(1) (ignored by this build)"
 msgstr "pozwól wykonać grep(1) (ignorowane w tej wersji)"
 
-#: builtin/grep.c:1014
+#: builtin/grep.c:1012
 msgid "no pattern given"
 msgstr "nie podano wzorca"
 
-#: builtin/grep.c:1050
+#: builtin/grep.c:1048
 msgid "--no-index or --untracked cannot be used with revs"
 msgstr "--no-index i --untracked wykluczają się z rewizjami"
 
-#: builtin/grep.c:1058
+#: builtin/grep.c:1056
 #, c-format
 msgid "unable to resolve revision: %s"
 msgstr "nie można rozwiązać rewizji: %s"
 
-#: builtin/grep.c:1088
+#: builtin/grep.c:1086
 msgid "--untracked not supported with --recurse-submodules"
 msgstr "--untracked niewspierane z --recurse-submodules"
 
-#: builtin/grep.c:1092
+#: builtin/grep.c:1090
 msgid "invalid option combination, ignoring --threads"
 msgstr "nieprawidłowe połączenie opcji, pomijanie --threads"
 
-#: builtin/grep.c:1095 builtin/pack-objects.c:3655
+#: builtin/grep.c:1093 builtin/pack-objects.c:3672
 msgid "no threads support, ignoring --threads"
 msgstr "brak obsługi wątków, ignorowanie --threads"
 
-#: builtin/grep.c:1098 builtin/index-pack.c:1573 builtin/pack-objects.c:2933
+#: builtin/grep.c:1096 builtin/index-pack.c:1586 builtin/pack-objects.c:2941
 #, c-format
 msgid "invalid number of threads specified (%d)"
 msgstr "podano nieprawidłową liczbę wątków (%d)"
 
-#: builtin/grep.c:1132
+#: builtin/grep.c:1130
 msgid "--open-files-in-pager only works on the worktree"
 msgstr "--open-files-in-pager działa tylko w drzewie roboczym"
 
-#: builtin/grep.c:1158
+#: builtin/grep.c:1156
 msgid "--cached or --untracked cannot be used with --no-index"
 msgstr "--cached i --untracked wykluczają się z --no-index"
 
-#: builtin/grep.c:1164
+#: builtin/grep.c:1159
+msgid "--untracked cannot be used with --cached"
+msgstr "--untracked i --cached się wykluczają"
+
+#: builtin/grep.c:1165
 msgid "--[no-]exclude-standard cannot be used for tracked contents"
 msgstr "Nie można użyć --[no-]exclude-standard do śledzonej zawartości"
 
-#: builtin/grep.c:1172
+#: builtin/grep.c:1173
 msgid "both --cached and trees are given"
 msgstr "podano jednocześnie --cached i drzewa"
 
@@ -15734,12 +16057,12 @@ msgstr "żaden czytnik podręcznika nie obsłużył żądania"
 msgid "no info viewer handled the request"
 msgstr "żaden czytnik podręcznika info nie obsłużył żądania"
 
-#: builtin/help.c:520 builtin/help.c:531 git.c:337
+#: builtin/help.c:520 builtin/help.c:531 git.c:340
 #, c-format
 msgid "'%s' is aliased to '%s'"
 msgstr "„%s” jest skrótem na „%s”"
 
-#: builtin/help.c:534 git.c:369
+#: builtin/help.c:534 git.c:372
 #, c-format
 msgid "bad alias.%s string: %s"
 msgstr "zły łańcuch alias.%s: %s"
@@ -15788,7 +16111,7 @@ msgstr "błąd odczytu na wejściu"
 msgid "used more bytes than were available"
 msgstr "użyto więcej bajtów niż było dostępnych"
 
-#: builtin/index-pack.c:324 builtin/pack-objects.c:619
+#: builtin/index-pack.c:324 builtin/pack-objects.c:624
 msgid "pack too large for current definition of off_t"
 msgstr "paczka za duża na obecną definicję off_t"
 
@@ -15796,7 +16119,7 @@ msgstr "paczka za duża na obecną definicję off_t"
 msgid "pack exceeds maximum allowed size"
 msgstr "paczka przekracza maksymalny dozwolony rozmiar"
 
-#: builtin/index-pack.c:342 builtin/repack.c:286
+#: builtin/index-pack.c:342
 #, c-format
 msgid "unable to create '%s'"
 msgstr "nie można utworzyć „%s”"
@@ -15922,7 +16245,7 @@ msgstr "dezorientacja ponad szaleństwo w parse_pack_objects()"
 msgid "Resolving deltas"
 msgstr "Rozwiązywanie delt"
 
-#: builtin/index-pack.c:1249 builtin/pack-objects.c:2697
+#: builtin/index-pack.c:1249 builtin/pack-objects.c:2707
 #, c-format
 msgid "unable to create thread: %s"
 msgstr "nie można utworzyć wątku: %s"
@@ -15962,10 +16285,10 @@ msgstr "nie można skompresować dodanego obiektu (%d)"
 msgid "local object %s is corrupt"
 msgstr "lokalny obiekt %s jest uszkodzony"
 
-#: builtin/index-pack.c:1444
+#: builtin/index-pack.c:1445
 #, c-format
-msgid "packfile name '%s' does not end with '.pack'"
-msgstr "nazwa pliku paczki „%s” nie kończy się na „.pack”"
+msgid "packfile name '%s' does not end with '.%s'"
+msgstr "nazwa pliku paczki „%s” nie kończy się na „.%s”"
 
 #: builtin/index-pack.c:1469
 #, c-format
@@ -15977,34 +16300,38 @@ msgstr "nie można zapisać pliku %s „%s”"
 msgid "cannot close written %s file '%s'"
 msgstr "nie można zamknąć zapisanego pliku %s „%s”"
 
-#: builtin/index-pack.c:1501
+#: builtin/index-pack.c:1503
 msgid "error while closing pack file"
 msgstr "błąd podczas zamykania pliku paczki"
 
-#: builtin/index-pack.c:1515
+#: builtin/index-pack.c:1517
 msgid "cannot store pack file"
 msgstr "nie można zapisać pliku paczki"
 
-#: builtin/index-pack.c:1523
+#: builtin/index-pack.c:1525
 msgid "cannot store index file"
 msgstr "nie można zapisać pliku indeksu"
 
-#: builtin/index-pack.c:1567 builtin/pack-objects.c:2944
+#: builtin/index-pack.c:1534
+msgid "cannot store reverse index file"
+msgstr "nie można zapisać pliku odwrotnego indeksu"
+
+#: builtin/index-pack.c:1580 builtin/pack-objects.c:2952
 #, c-format
 msgid "bad pack.indexversion=%<PRIu32>"
 msgstr "zła wartość pack.indexversion=%<PRIu32>"
 
-#: builtin/index-pack.c:1631
+#: builtin/index-pack.c:1650
 #, c-format
 msgid "Cannot open existing pack file '%s'"
 msgstr "Nie można otworzyć istniejącego pliku paczki „%s”"
 
-#: builtin/index-pack.c:1633
+#: builtin/index-pack.c:1652
 #, c-format
 msgid "Cannot open existing pack idx file for '%s'"
 msgstr "Nie można otworzyć istniejącego pliku idx paczki dla „%s”"
 
-#: builtin/index-pack.c:1681
+#: builtin/index-pack.c:1700
 #, c-format
 msgid "non delta: %d object"
 msgid_plural "non delta: %d objects"
@@ -16012,7 +16339,7 @@ msgstr[0] "nie delta: %d obiekt"
 msgstr[1] "nie delta: %d obiekty"
 msgstr[2] "nie delta: %d obiektów"
 
-#: builtin/index-pack.c:1688
+#: builtin/index-pack.c:1707
 #, c-format
 msgid "chain length = %d: %lu object"
 msgid_plural "chain length = %d: %lu objects"
@@ -16020,38 +16347,38 @@ msgstr[0] "długość łańcucha = %d: %lu obiekt"
 msgstr[1] "długość łańcucha = %d: %lu obiekty"
 msgstr[2] "długość łańcucha = %d: %lu obiektów"
 
-#: builtin/index-pack.c:1728
+#: builtin/index-pack.c:1749
 msgid "Cannot come back to cwd"
 msgstr "Nie można wrócić do cwd"
 
-#: builtin/index-pack.c:1777 builtin/index-pack.c:1780
-#: builtin/index-pack.c:1796 builtin/index-pack.c:1800
+#: builtin/index-pack.c:1803 builtin/index-pack.c:1806
+#: builtin/index-pack.c:1822 builtin/index-pack.c:1826
 #, c-format
 msgid "bad %s"
 msgstr "błędny %s"
 
-#: builtin/index-pack.c:1806 builtin/init-db.c:392 builtin/init-db.c:625
+#: builtin/index-pack.c:1832 builtin/init-db.c:392 builtin/init-db.c:625
 #, c-format
 msgid "unknown hash algorithm '%s'"
 msgstr "nieznany algorytm skrótu „%s”"
 
-#: builtin/index-pack.c:1821
+#: builtin/index-pack.c:1851
 msgid "--fix-thin cannot be used without --stdin"
 msgstr "--fix-thin i --stdin wykluczają się"
 
-#: builtin/index-pack.c:1823
+#: builtin/index-pack.c:1853
 msgid "--stdin requires a git repository"
 msgstr "--stdin wymaga repozytorium gita"
 
-#: builtin/index-pack.c:1825
+#: builtin/index-pack.c:1855
 msgid "--object-format cannot be used with --stdin"
 msgstr "--object-format i --stdin wykluczają się"
 
-#: builtin/index-pack.c:1831
+#: builtin/index-pack.c:1870
 msgid "--verify with no packfile name given"
 msgstr "--verify bez podanej nazwy pliku paczki"
 
-#: builtin/index-pack.c:1892 builtin/unpack-objects.c:582
+#: builtin/index-pack.c:1936 builtin/unpack-objects.c:582
 msgid "fsck error in pack objects"
 msgstr "błąd fsck w obiektach paczek"
 
@@ -16269,130 +16596,130 @@ msgstr "--trailer i --only-input wykluczają się"
 msgid "no input file given for in-place editing"
 msgstr "nie podano pliku wejściowego do edycji w miejscu"
 
-#: builtin/log.c:58
+#: builtin/log.c:59
 msgid "git log [<options>] [<revision-range>] [[--] <path>...]"
 msgstr "git log [<opcje>] [<zakres-rewizji>] [[--] <ścieżka>...]"
 
-#: builtin/log.c:59
+#: builtin/log.c:60
 msgid "git show [<options>] <object>..."
 msgstr "git show [<opcje>] <obiekt>..."
 
-#: builtin/log.c:112
+#: builtin/log.c:113
 #, c-format
 msgid "invalid --decorate option: %s"
 msgstr "nieprawidłowa opcja --decorate: %s"
 
-#: builtin/log.c:179
+#: builtin/log.c:180
 msgid "show source"
 msgstr "pokaż źródło"
 
-#: builtin/log.c:180
-msgid "Use mail map file"
-msgstr "Użyj pliku mapy adresów"
+#: builtin/log.c:181
+msgid "use mail map file"
+msgstr "użyj pliku mapy adresów"
 
-#: builtin/log.c:183
+#: builtin/log.c:184
 msgid "only decorate refs that match <pattern>"
 msgstr "dekoruj tylko referencje pasujące do <wzorca>"
 
-#: builtin/log.c:185
+#: builtin/log.c:186
 msgid "do not decorate refs that match <pattern>"
 msgstr "nie dekoruj referencji pasujących do <wzorca>"
 
-#: builtin/log.c:186
+#: builtin/log.c:187
 msgid "decorate options"
 msgstr "opcje dekoracyjne"
 
-#: builtin/log.c:189
+#: builtin/log.c:190
 msgid ""
-"Trace the evolution of line range <start>,<end> or function :<funcname> in "
+"trace the evolution of line range <start>,<end> or function :<funcname> in "
 "<file>"
 msgstr ""
-"Å\9aledź ewolucję zakresu wierszy <start>,<end> lub funkcji :<nazwa-funkcji> w "
+"Å\9bledź ewolucję zakresu wierszy <start>,<end> lub funkcji :<nazwa-funkcji> w "
 "<pliku>"
 
-#: builtin/log.c:212
+#: builtin/log.c:213
 msgid "-L<range>:<file> cannot be used with pathspec"
 msgstr "-L<zakres>:<plik> i ścieżki się wykluczają"
 
-#: builtin/log.c:302
+#: builtin/log.c:303
 #, c-format
 msgid "Final output: %d %s\n"
 msgstr "Ostateczne wyjście: %d %s\n"
 
-#: builtin/log.c:564
+#: builtin/log.c:566
 #, c-format
 msgid "git show %s: bad file"
 msgstr "git show %s: zły plik"
 
-#: builtin/log.c:579 builtin/log.c:674
+#: builtin/log.c:581 builtin/log.c:671
 #, c-format
 msgid "could not read object %s"
 msgstr "nie można odczytać obiektu %s"
 
-#: builtin/log.c:699
+#: builtin/log.c:696
 #, c-format
 msgid "unknown type: %d"
 msgstr "nieznany rodzaj: %d"
 
-#: builtin/log.c:848
+#: builtin/log.c:841
 #, c-format
 msgid "%s: invalid cover from description mode"
 msgstr "%s: nieprawidłowy tryb listu motywacyjnego z opisu"
 
-#: builtin/log.c:855
+#: builtin/log.c:848
 msgid "format.headers without value"
 msgstr "format.headers bez wartości"
 
-#: builtin/log.c:984
+#: builtin/log.c:977
 #, c-format
 msgid "cannot open patch file %s"
 msgstr "nie można otworzyć pliku łatki %s"
 
-#: builtin/log.c:1001
+#: builtin/log.c:994
 msgid "need exactly one range"
 msgstr "potrzeba dokładnie jednego zakresu"
 
-#: builtin/log.c:1011
+#: builtin/log.c:1004
 msgid "not a range"
 msgstr "to nie jest zakres"
 
-#: builtin/log.c:1175
+#: builtin/log.c:1168
 msgid "cover letter needs email format"
 msgstr "list motywacyjny wymaga formatu e-mail"
 
-#: builtin/log.c:1181
+#: builtin/log.c:1174
 msgid "failed to create cover-letter file"
 msgstr "nie można utworzyć pliku z listem motywacyjnym"
 
-#: builtin/log.c:1262
+#: builtin/log.c:1261
 #, c-format
 msgid "insane in-reply-to: %s"
 msgstr "szalone in-reply-to: %s"
 
-#: builtin/log.c:1289
+#: builtin/log.c:1288
 msgid "git format-patch [<options>] [<since> | <revision-range>]"
 msgstr "git format-patch [<opcje>] [<od-kiedy> | <zakres-rewizji>]"
 
-#: builtin/log.c:1347
+#: builtin/log.c:1346
 msgid "two output directories?"
 msgstr "dwa katalogi wyjściowe?"
 
-#: builtin/log.c:1498 builtin/log.c:2318 builtin/log.c:2320 builtin/log.c:2332
+#: builtin/log.c:1497 builtin/log.c:2317 builtin/log.c:2319 builtin/log.c:2331
 #, c-format
 msgid "unknown commit %s"
 msgstr "nieznany zapis %s"
 
-#: builtin/log.c:1509 builtin/replace.c:58 builtin/replace.c:207
+#: builtin/log.c:1508 builtin/replace.c:58 builtin/replace.c:207
 #: builtin/replace.c:210
 #, c-format
 msgid "failed to resolve '%s' as a valid ref"
 msgstr "nie można rozwiązać „%s” jako prawidłowej referencji"
 
-#: builtin/log.c:1518
+#: builtin/log.c:1517
 msgid "could not find exact merge base"
 msgstr "nie znaleziono dokładnej podstawy scalania"
 
-#: builtin/log.c:1528
+#: builtin/log.c:1527
 msgid ""
 "failed to get upstream, if you want to record base commit automatically,\n"
 "please use git branch --set-upstream-to to track a remote branch.\n"
@@ -16403,288 +16730,288 @@ msgstr ""
 "zdalną gałąź.\n"
 "Albo możesz podać zapis podstawy ręcznie przez --base=<id-zapisu-podstawy>"
 
-#: builtin/log.c:1551
+#: builtin/log.c:1550
 msgid "failed to find exact merge base"
 msgstr "nie znaleziono dokładnej podstawy scalania"
 
-#: builtin/log.c:1568
+#: builtin/log.c:1567
 msgid "base commit should be the ancestor of revision list"
 msgstr "podstawowy zapis powinien być przodkiem listy rewizji"
 
-#: builtin/log.c:1578
+#: builtin/log.c:1577
 msgid "base commit shouldn't be in revision list"
 msgstr "podstawowy zapis nie powinien być na liście rewizji"
 
-#: builtin/log.c:1636
+#: builtin/log.c:1635
 msgid "cannot get patch id"
 msgstr "nie można uzyskać identyfikatora łatki"
 
-#: builtin/log.c:1693
+#: builtin/log.c:1692
 msgid "failed to infer range-diff origin of current series"
 msgstr "nie można wywnioskować źródła różnic zakresów z bieżącej serii"
 
-#: builtin/log.c:1695
+#: builtin/log.c:1694
 #, c-format
 msgid "using '%s' as range-diff origin of current series"
 msgstr "użycie „%s” jako źródła różnic zakresów z bieżącej serii"
 
-#: builtin/log.c:1739
+#: builtin/log.c:1738
 msgid "use [PATCH n/m] even with a single patch"
 msgstr "użyj [PATCH n/m] nawet przy pojedynczej łatce"
 
-#: builtin/log.c:1742
+#: builtin/log.c:1741
 msgid "use [PATCH] even with multiple patches"
 msgstr "użyj [PATCH] nawet przy wielu łatkach"
 
-#: builtin/log.c:1746
+#: builtin/log.c:1745
 msgid "print patches to standard out"
 msgstr "wypisz łatki na standardowe wyjście"
 
-#: builtin/log.c:1748
+#: builtin/log.c:1747
 msgid "generate a cover letter"
 msgstr "wygeneruj list motywacyjny"
 
-#: builtin/log.c:1750
+#: builtin/log.c:1749
 msgid "use simple number sequence for output file names"
 msgstr "użyj tylko numerów w nazwach wynikowych plików"
 
-#: builtin/log.c:1751
+#: builtin/log.c:1750
 msgid "sfx"
 msgstr "sfx"
 
-#: builtin/log.c:1752
+#: builtin/log.c:1751
 msgid "use <sfx> instead of '.patch'"
 msgstr "użyj <sfx> zamiast „.patch”"
 
-#: builtin/log.c:1754
+#: builtin/log.c:1753
 msgid "start numbering patches at <n> instead of 1"
 msgstr "zacznij numerować łatki od <n> zamiast od 1"
 
-#: builtin/log.c:1756
+#: builtin/log.c:1755
 msgid "mark the series as Nth re-roll"
 msgstr "oznacz serię jako N-te podejście"
 
-#: builtin/log.c:1758
+#: builtin/log.c:1757
 msgid "max length of output filename"
 msgstr "maksymalna długość nazwy wynikowego pliku"
 
-#: builtin/log.c:1760
-msgid "Use [RFC PATCH] instead of [PATCH]"
-msgstr "Użyj [RFC PATCH] zamiast [PATCH]"
+#: builtin/log.c:1759
+msgid "use [RFC PATCH] instead of [PATCH]"
+msgstr "użyj [RFC PATCH] zamiast [PATCH]"
 
-#: builtin/log.c:1763
+#: builtin/log.c:1762
 msgid "cover-from-description-mode"
 msgstr "tryb-listu-z-opisu"
 
-#: builtin/log.c:1764
+#: builtin/log.c:1763
 msgid "generate parts of a cover letter based on a branch's description"
 msgstr "wygeneruj części listu motywacyjnego w oparciu o opis gałęzi"
 
-#: builtin/log.c:1766
-msgid "Use [<prefix>] instead of [PATCH]"
-msgstr "Użyj [<prefiksu>] zamiast [PATCH]"
+#: builtin/log.c:1765
+msgid "use [<prefix>] instead of [PATCH]"
+msgstr "użyj [<prefiksu>] zamiast [PATCH]"
 
-#: builtin/log.c:1769
+#: builtin/log.c:1768
 msgid "store resulting files in <dir>"
 msgstr "zachowaj wynikowe pliki w <katalogu>"
 
-#: builtin/log.c:1772
+#: builtin/log.c:1771
 msgid "don't strip/add [PATCH]"
 msgstr "nie usuwaj/nie dodawaj [PATCH]"
 
-#: builtin/log.c:1775
+#: builtin/log.c:1774
 msgid "don't output binary diffs"
 msgstr "nie wypisuj binarnych różnic"
 
-#: builtin/log.c:1777
+#: builtin/log.c:1776
 msgid "output all-zero hash in From header"
 msgstr "wypisz skrót z samych zer w nagłówku Od"
 
-#: builtin/log.c:1779
+#: builtin/log.c:1778
 msgid "don't include a patch matching a commit upstream"
 msgstr "nie uwzględniaj łatki pasującej do już istniejącego zapisu"
 
-#: builtin/log.c:1781
+#: builtin/log.c:1780
 msgid "show patch format instead of default (patch + stat)"
 msgstr "pokaż format łatki zamiast domyślnego (łatka + statystyki)"
 
-#: builtin/log.c:1783
+#: builtin/log.c:1782
 msgid "Messaging"
 msgstr "Wiadomości"
 
-#: builtin/log.c:1784
+#: builtin/log.c:1783
 msgid "header"
 msgstr "nagłówek"
 
-#: builtin/log.c:1785
+#: builtin/log.c:1784
 msgid "add email header"
 msgstr "dodaj nagłówek e-maila"
 
-#: builtin/log.c:1786 builtin/log.c:1787
+#: builtin/log.c:1785 builtin/log.c:1786
 msgid "email"
 msgstr "e-mail"
 
-#: builtin/log.c:1786
+#: builtin/log.c:1785
 msgid "add To: header"
 msgstr "dodaj pole Do:"
 
-#: builtin/log.c:1787
+#: builtin/log.c:1786
 msgid "add Cc: header"
 msgstr "dodaj pole DW:"
 
-#: builtin/log.c:1788
+#: builtin/log.c:1787
 msgid "ident"
 msgstr "tożsamość"
 
-#: builtin/log.c:1789
+#: builtin/log.c:1788
 msgid "set From address to <ident> (or committer ident if absent)"
 msgstr ""
 "ustaw adres Od na <tożsamość> (lub tożsamość składającego, jeśli nie podano)"
 
-#: builtin/log.c:1791
+#: builtin/log.c:1790
 msgid "message-id"
 msgstr "id-wiadomości"
 
-#: builtin/log.c:1792
+#: builtin/log.c:1791
 msgid "make first mail a reply to <message-id>"
 msgstr "niech pierwszy list będzie odpowiedzią na <id-wiadomości>"
 
-#: builtin/log.c:1793 builtin/log.c:1796
+#: builtin/log.c:1792 builtin/log.c:1795
 msgid "boundary"
 msgstr "granica/boundary"
 
-#: builtin/log.c:1794
+#: builtin/log.c:1793
 msgid "attach the patch"
 msgstr "załącz łatkę"
 
-#: builtin/log.c:1797
+#: builtin/log.c:1796
 msgid "inline the patch"
 msgstr "umieść łatkę w treści"
 
-#: builtin/log.c:1801
+#: builtin/log.c:1800
 msgid "enable message threading, styles: shallow, deep"
 msgstr "zezwól na wątkowanie komunikatów, style: shallow, deep"
 
-#: builtin/log.c:1803
+#: builtin/log.c:1802
 msgid "signature"
 msgstr "podpis"
 
-#: builtin/log.c:1804
+#: builtin/log.c:1803
 msgid "add a signature"
 msgstr "dodaj podpis"
 
-#: builtin/log.c:1805
+#: builtin/log.c:1804
 msgid "base-commit"
 msgstr "zapis-podstawy"
 
-#: builtin/log.c:1806
+#: builtin/log.c:1805
 msgid "add prerequisite tree info to the patch series"
 msgstr "dodaj informacje o wymaganym początkowym drzewie do serii łatek"
 
-#: builtin/log.c:1809
+#: builtin/log.c:1808
 msgid "add a signature from a file"
 msgstr "dodaj podpis z pliku"
 
-#: builtin/log.c:1810
+#: builtin/log.c:1809
 msgid "don't print the patch filenames"
 msgstr "nie wypisuj nazw plików łatek"
 
-#: builtin/log.c:1812
+#: builtin/log.c:1811
 msgid "show progress while generating patches"
 msgstr "pokaż postęp podczas generowania łatek"
 
-#: builtin/log.c:1814
+#: builtin/log.c:1813
 msgid "show changes against <rev> in cover letter or single patch"
 msgstr ""
 "pokaż zmiany względem <rewizji> w liście motywacyjnym lub pojedynczej łatce"
 
-#: builtin/log.c:1817
+#: builtin/log.c:1816
 msgid "show changes against <refspec> in cover letter or single patch"
 msgstr ""
 "pokaż zmiany względem <referencji> w liście motywacyjnym lub pojedynczej "
 "łatce"
 
-#: builtin/log.c:1819
+#: builtin/log.c:1818
 msgid "percentage by which creation is weighted"
 msgstr "procent, według jakiego ważone jest tworzenie"
 
-#: builtin/log.c:1905
+#: builtin/log.c:1904
 #, c-format
 msgid "invalid ident line: %s"
 msgstr "błędny wiersz tożsamości: %s"
 
-#: builtin/log.c:1920
+#: builtin/log.c:1919
 msgid "-n and -k are mutually exclusive"
 msgstr "-n i -k się wykluczają"
 
-#: builtin/log.c:1922
+#: builtin/log.c:1921
 msgid "--subject-prefix/--rfc and -k are mutually exclusive"
 msgstr "--subject-prefix/--rfc i -k się wykluczają"
 
-#: builtin/log.c:1930
+#: builtin/log.c:1929
 msgid "--name-only does not make sense"
 msgstr "--name-only nie ma sensu"
 
-#: builtin/log.c:1932
+#: builtin/log.c:1931
 msgid "--name-status does not make sense"
 msgstr "--name-status nie ma sensu"
 
-#: builtin/log.c:1934
+#: builtin/log.c:1933
 msgid "--check does not make sense"
 msgstr "--check nie ma sensu"
 
-#: builtin/log.c:1956
+#: builtin/log.c:1955
 msgid "--stdout, --output, and --output-directory are mutually exclusive"
 msgstr "--stdout, --output i --output-directory się wykluczają"
 
-#: builtin/log.c:2079
+#: builtin/log.c:2078
 msgid "--interdiff requires --cover-letter or single patch"
 msgstr "--interdiff wymaga --cover-letter lub pojedynczej łatki"
 
-#: builtin/log.c:2083
+#: builtin/log.c:2082
 msgid "Interdiff:"
 msgstr "Różnice w różnicach:"
 
-#: builtin/log.c:2084
+#: builtin/log.c:2083
 #, c-format
 msgid "Interdiff against v%d:"
 msgstr "Różnice w różnicach względem v%d:"
 
-#: builtin/log.c:2090
+#: builtin/log.c:2089
 msgid "--creation-factor requires --range-diff"
 msgstr "--creation-factor wymaga --range-diff"
 
-#: builtin/log.c:2094
+#: builtin/log.c:2093
 msgid "--range-diff requires --cover-letter or single patch"
 msgstr "--range-diff wymaga --cover-letter lub pojedynczej łatki"
 
-#: builtin/log.c:2102
+#: builtin/log.c:2101
 msgid "Range-diff:"
 msgstr "Różnice zakresów:"
 
-#: builtin/log.c:2103
+#: builtin/log.c:2102
 #, c-format
 msgid "Range-diff against v%d:"
 msgstr "Różnice zakresów względem v%d:"
 
-#: builtin/log.c:2114
+#: builtin/log.c:2113
 #, c-format
 msgid "unable to read signature file '%s'"
 msgstr "nie można odczytać pliku podpisu „%s”"
 
-#: builtin/log.c:2150
+#: builtin/log.c:2149
 msgid "Generating patches"
 msgstr "Generowanie łatek"
 
-#: builtin/log.c:2194
+#: builtin/log.c:2193
 msgid "failed to create output files"
 msgstr "nie można utworzyć plików wyjściowych"
 
-#: builtin/log.c:2253
+#: builtin/log.c:2252
 msgid "git cherry [-v] [<upstream> [<head> [<limit>]]]"
 msgstr "git cherry [-v] [<nadrzędna> [<czoło> [<limit>]]]"
 
-#: builtin/log.c:2307
+#: builtin/log.c:2306
 #, c-format
 msgid ""
 "Could not find a tracked remote branch, please specify <upstream> manually.\n"
@@ -16692,111 +17019,115 @@ msgstr ""
 "Nie znaleziono śledzonej zdalnej gałęzi, podaj ręcznie <zdalne-"
 "repozytorium>.\n"
 
-#: builtin/ls-files.c:471
+#: builtin/ls-files.c:486
 msgid "git ls-files [<options>] [<file>...]"
 msgstr "git ls-files [<opcje>] [<plik>...]"
 
-#: builtin/ls-files.c:527
+#: builtin/ls-files.c:542
 msgid "identify the file status with tags"
 msgstr "opisz stan pliku tagami"
 
-#: builtin/ls-files.c:529
+#: builtin/ls-files.c:544
 msgid "use lowercase letters for 'assume unchanged' files"
 msgstr "użyj małych liter do plików o „założonej niezmienności”"
 
-#: builtin/ls-files.c:531
+#: builtin/ls-files.c:546
 msgid "use lowercase letters for 'fsmonitor clean' files"
 msgstr "użyj małych liter do plików „prawidłowo monitorowanych”"
 
-#: builtin/ls-files.c:533
+#: builtin/ls-files.c:548
 msgid "show cached files in the output (default)"
 msgstr "pokaż w wyjściu zapamiętane pliki (domyślnie)"
 
-#: builtin/ls-files.c:535
+#: builtin/ls-files.c:550
 msgid "show deleted files in the output"
 msgstr "pokaż w wyjściu usunięte pliki"
 
-#: builtin/ls-files.c:537
+#: builtin/ls-files.c:552
 msgid "show modified files in the output"
 msgstr "pokaż w wyjściu zmienione pliki"
 
-#: builtin/ls-files.c:539
+#: builtin/ls-files.c:554
 msgid "show other files in the output"
 msgstr "pokazuj pliki innego typu w wyjściu"
 
-#: builtin/ls-files.c:541
+#: builtin/ls-files.c:556
 msgid "show ignored files in the output"
 msgstr "pokaż w wyjściu ignorowane pliki"
 
-#: builtin/ls-files.c:544
+#: builtin/ls-files.c:559
 msgid "show staged contents' object name in the output"
 msgstr "pokaż w wyjściu nazwę obiektu przygotowanej zawartości"
 
-#: builtin/ls-files.c:546
+#: builtin/ls-files.c:561
 msgid "show files on the filesystem that need to be removed"
 msgstr "pokaż pliki w systemie plików, które należy skasować"
 
-#: builtin/ls-files.c:548
+#: builtin/ls-files.c:563
 msgid "show 'other' directories' names only"
 msgstr "pokaż tylko nazwy nieśledzonych katalogów"
 
-#: builtin/ls-files.c:550
+#: builtin/ls-files.c:565
 msgid "show line endings of files"
 msgstr "pokaż zakończenia wierszy w plikach"
 
-#: builtin/ls-files.c:552
+#: builtin/ls-files.c:567
 msgid "don't show empty directories"
 msgstr "nie pokazuj pustych katalogów"
 
-#: builtin/ls-files.c:555
+#: builtin/ls-files.c:570
 msgid "show unmerged files in the output"
 msgstr "pokaż niescalone pliki w wyjściu"
 
-#: builtin/ls-files.c:557
+#: builtin/ls-files.c:572
 msgid "show resolve-undo information"
 msgstr "pokaż informacje o resolve-undo"
 
-#: builtin/ls-files.c:559
+#: builtin/ls-files.c:574
 msgid "skip files matching pattern"
 msgstr "pomiń pliki spełniające kryteria"
 
-#: builtin/ls-files.c:562
+#: builtin/ls-files.c:577
 msgid "exclude patterns are read from <file>"
 msgstr "wzorce wyłączające czytane są z <pliku>"
 
-#: builtin/ls-files.c:565
+#: builtin/ls-files.c:580
 msgid "read additional per-directory exclude patterns in <file>"
 msgstr ""
 "odczytaj dodatkowe wzorce wyłączające z poszczególnych katalogów w <pliku>"
 
-#: builtin/ls-files.c:567
+#: builtin/ls-files.c:582
 msgid "add the standard git exclusions"
 msgstr "dodaj standardowe wyjątki gita"
 
-#: builtin/ls-files.c:571
+#: builtin/ls-files.c:586
 msgid "make the output relative to the project top directory"
 msgstr "podawaj wyjście względem głównego katalogu projektu"
 
-#: builtin/ls-files.c:574
+#: builtin/ls-files.c:589
 msgid "recurse through submodules"
 msgstr "schodź do pod-modułów"
 
-#: builtin/ls-files.c:576
+#: builtin/ls-files.c:591
 msgid "if any <file> is not in the index, treat this as an error"
 msgstr "jeśli którykolwiek <plik> nie jest w indeksie, potraktuj to jako błąd"
 
-#: builtin/ls-files.c:577
+#: builtin/ls-files.c:592
 msgid "tree-ish"
 msgstr "drzewo"
 
-#: builtin/ls-files.c:578
+#: builtin/ls-files.c:593
 msgid "pretend that paths removed since <tree-ish> are still present"
 msgstr "udawaj, że ścieżki usunięte po <drzewie> są nadal obecne"
 
-#: builtin/ls-files.c:580
+#: builtin/ls-files.c:595
 msgid "show debugging data"
 msgstr "pokaż dane diagnostyczne"
 
+#: builtin/ls-files.c:597
+msgid "suppress duplicate entries"
+msgstr "ukryj podwójne wpisy"
+
 #: builtin/ls-remote.c:9
 msgid ""
 "git ls-remote [--heads] [--tags] [--refs] [--upload-pack=<exec>]\n"
@@ -16807,39 +17138,39 @@ msgstr ""
 "                     [-q | --quiet] [--exit-code] [--get-url]\n"
 "                     [--symref] [<repozytorium> [<referencje>...]]"
 
-#: builtin/ls-remote.c:59
+#: builtin/ls-remote.c:60
 msgid "do not print remote URL"
 msgstr "nie wyświetlaj adresu repozytorium"
 
-#: builtin/ls-remote.c:60 builtin/ls-remote.c:62 builtin/rebase.c:1398
+#: builtin/ls-remote.c:61 builtin/ls-remote.c:63 builtin/rebase.c:1404
 msgid "exec"
 msgstr "program"
 
-#: builtin/ls-remote.c:61 builtin/ls-remote.c:63
+#: builtin/ls-remote.c:62 builtin/ls-remote.c:64
 msgid "path of git-upload-pack on the remote host"
 msgstr "ścieżka git-upload-pack na zdalnej maszynie"
 
-#: builtin/ls-remote.c:65
+#: builtin/ls-remote.c:66
 msgid "limit to tags"
 msgstr "ogranicz do tagów"
 
-#: builtin/ls-remote.c:66
+#: builtin/ls-remote.c:67
 msgid "limit to heads"
 msgstr "ogranicz do głównych gałęzi"
 
-#: builtin/ls-remote.c:67
+#: builtin/ls-remote.c:68
 msgid "do not show peeled tags"
 msgstr "nie pokazuj obranych tagów"
 
-#: builtin/ls-remote.c:69
+#: builtin/ls-remote.c:70
 msgid "take url.<base>.insteadOf into account"
 msgstr "weź pod uwagę url.<podstawa>.insteadOf"
 
-#: builtin/ls-remote.c:72
+#: builtin/ls-remote.c:73
 msgid "exit with exit code 2 if no matching refs are found"
 msgstr "zwróć kod wyjścia 2, jeśli nie znaleziono pasujących referencji"
 
-#: builtin/ls-remote.c:75
+#: builtin/ls-remote.c:76
 msgid "show underlying ref in addition to the object pointed by it"
 msgstr "pokaż referencję podłoża oprócz obiektu wskazywanego przez nią"
 
@@ -16996,191 +17327,191 @@ msgstr "nie można rozwiązać referencji „%s”"
 msgid "Merging %s with %s\n"
 msgstr "Scalanie %s z %s\n"
 
-#: builtin/merge.c:57
+#: builtin/merge.c:58
 msgid "git merge [<options>] [<commit>...]"
 msgstr "git merge [<opcje>] [<zapis>...]"
 
-#: builtin/merge.c:58
+#: builtin/merge.c:59
 msgid "git merge --abort"
 msgstr "git merge --abort"
 
-#: builtin/merge.c:59
+#: builtin/merge.c:60
 msgid "git merge --continue"
 msgstr "git merge --continue"
 
-#: builtin/merge.c:122
+#: builtin/merge.c:123
 msgid "switch `m' requires a value"
 msgstr "przełącznik „m” wymaga wartości"
 
-#: builtin/merge.c:145
+#: builtin/merge.c:146
 #, c-format
 msgid "option `%s' requires a value"
 msgstr "opcja „%s” wymaga wartości"
 
-#: builtin/merge.c:198
+#: builtin/merge.c:199
 #, c-format
 msgid "Could not find merge strategy '%s'.\n"
 msgstr "Nie znaleziono strategii scalania „%s”.\n"
 
-#: builtin/merge.c:199
+#: builtin/merge.c:200
 #, c-format
 msgid "Available strategies are:"
 msgstr "Dostępne strategie:"
 
-#: builtin/merge.c:204
+#: builtin/merge.c:205
 #, c-format
 msgid "Available custom strategies are:"
 msgstr "Dostępne niestandardowe strategie:"
 
-#: builtin/merge.c:255 builtin/pull.c:133
+#: builtin/merge.c:256 builtin/pull.c:133
 msgid "do not show a diffstat at the end of the merge"
 msgstr "nie pokazuj statystyk różnic pod koniec scalenia"
 
-#: builtin/merge.c:258 builtin/pull.c:136
+#: builtin/merge.c:259 builtin/pull.c:136
 msgid "show a diffstat at the end of the merge"
 msgstr "pokaż statystyki różnic pod koniec scalenia"
 
-#: builtin/merge.c:259 builtin/pull.c:139
+#: builtin/merge.c:260 builtin/pull.c:139
 msgid "(synonym to --stat)"
 msgstr "(synonim do --stat)"
 
-#: builtin/merge.c:261 builtin/pull.c:142
+#: builtin/merge.c:262 builtin/pull.c:142
 msgid "add (at most <n>) entries from shortlog to merge commit message"
 msgstr ""
 "dodaj (co najwyżej <n>) wpisy z krótkiego dziennika do komunikatu zapisu "
 "scalenia"
 
-#: builtin/merge.c:264 builtin/pull.c:148
+#: builtin/merge.c:265 builtin/pull.c:148
 msgid "create a single commit instead of doing a merge"
 msgstr "utwórz pojedynczy zapis zamiast scalać"
 
-#: builtin/merge.c:266 builtin/pull.c:151
+#: builtin/merge.c:267 builtin/pull.c:151
 msgid "perform a commit if the merge succeeds (default)"
 msgstr "złóż zapis, jeśli scalenie się powiedzie (domyślnie)"
 
-#: builtin/merge.c:268 builtin/pull.c:154
+#: builtin/merge.c:269 builtin/pull.c:154
 msgid "edit message before committing"
 msgstr "edytuj komunikat przed złożeniem"
 
-#: builtin/merge.c:270
+#: builtin/merge.c:271
 msgid "allow fast-forward (default)"
 msgstr "zezwól na przewijanie (domyślne)"
 
-#: builtin/merge.c:272 builtin/pull.c:161
+#: builtin/merge.c:273 builtin/pull.c:161
 msgid "abort if fast-forward is not possible"
 msgstr "przerwij, jeśli przewinięcie nie jest możliwe"
 
-#: builtin/merge.c:276 builtin/pull.c:164
+#: builtin/merge.c:277 builtin/pull.c:164
 msgid "verify that the named commit has a valid GPG signature"
-msgstr "weryfikuj, czy podane rozwiązanie ma prawidłową sygnaturę GPG"
+msgstr "zweryfikuj, czy podany zapis ma prawidłowy podpis GPG"
 
-#: builtin/merge.c:277 builtin/notes.c:787 builtin/pull.c:168
-#: builtin/rebase.c:539 builtin/rebase.c:1412 builtin/revert.c:114
+#: builtin/merge.c:278 builtin/notes.c:787 builtin/pull.c:168
+#: builtin/rebase.c:541 builtin/rebase.c:1418 builtin/revert.c:114
 msgid "strategy"
 msgstr "strategia"
 
-#: builtin/merge.c:278 builtin/pull.c:169
+#: builtin/merge.c:279 builtin/pull.c:169
 msgid "merge strategy to use"
 msgstr "strategia scalania"
 
-#: builtin/merge.c:279 builtin/pull.c:172
+#: builtin/merge.c:280 builtin/pull.c:172
 msgid "option=value"
 msgstr "opcja=wartość"
 
-#: builtin/merge.c:280 builtin/pull.c:173
+#: builtin/merge.c:281 builtin/pull.c:173
 msgid "option for selected merge strategy"
 msgstr "opcja wybranej strategii scalania"
 
-#: builtin/merge.c:282
+#: builtin/merge.c:283
 msgid "merge commit message (for a non-fast-forward merge)"
 msgstr "komunikat zapisu scalenia (do nieprzewiniętego scalenia)"
 
-#: builtin/merge.c:289
+#: builtin/merge.c:290
 msgid "abort the current in-progress merge"
 msgstr "przerwij bieżące trwające scalanie"
 
-#: builtin/merge.c:291
+#: builtin/merge.c:292
 msgid "--abort but leave index and working tree alone"
 msgstr "jak --abort, ale zostaw w spokoju indeks i drzewo robocze"
 
-#: builtin/merge.c:293
+#: builtin/merge.c:294
 msgid "continue the current in-progress merge"
 msgstr "kontynuuj bieżące trwające scalanie"
 
-#: builtin/merge.c:295 builtin/pull.c:180
+#: builtin/merge.c:296 builtin/pull.c:180
 msgid "allow merging unrelated histories"
 msgstr "zezwól na scalenie niepowiązanych historii"
 
-#: builtin/merge.c:302
+#: builtin/merge.c:303
 msgid "bypass pre-merge-commit and commit-msg hooks"
 msgstr "omiń skrypty pre-merge-commit i commit-msg"
 
-#: builtin/merge.c:319
+#: builtin/merge.c:320
 msgid "could not run stash."
 msgstr "nie można wykonać dodania do schowka."
 
-#: builtin/merge.c:324
+#: builtin/merge.c:325
 msgid "stash failed"
 msgstr "dodanie zmian do schowka nie powiodło się"
 
-#: builtin/merge.c:329
+#: builtin/merge.c:330
 #, c-format
 msgid "not a valid object: %s"
 msgstr "nieprawidłowy obiekt: %s"
 
-#: builtin/merge.c:351 builtin/merge.c:368
+#: builtin/merge.c:352 builtin/merge.c:369
 msgid "read-tree failed"
 msgstr "read-tree nie powiodło się"
 
-#: builtin/merge.c:398
+#: builtin/merge.c:399
 msgid " (nothing to squash)"
 msgstr " (nic do spłaszczenia)"
 
-#: builtin/merge.c:409
+#: builtin/merge.c:410
 #, c-format
 msgid "Squash commit -- not updating HEAD\n"
 msgstr "Spłaszczony zapis — nie aktualizowanie HEAD\n"
 
-#: builtin/merge.c:459
+#: builtin/merge.c:460
 #, c-format
 msgid "No merge message -- not updating HEAD\n"
 msgstr "Brak komunikatu scalenia — nie aktualizowanie HEAD\n"
 
-#: builtin/merge.c:510
+#: builtin/merge.c:511
 #, c-format
 msgid "'%s' does not point to a commit"
 msgstr "„%s” nie wskazuje na zapis"
 
-#: builtin/merge.c:597
+#: builtin/merge.c:598
 #, c-format
 msgid "Bad branch.%s.mergeoptions string: %s"
 msgstr "Zły łańcuch branch.%s.mergeoptions: %s"
 
-#: builtin/merge.c:723
+#: builtin/merge.c:724
 msgid "Not handling anything other than two heads merge."
 msgstr "Nie rozpatrywanie niczego poza scalaniem dwóch czół."
 
-#: builtin/merge.c:736
+#: builtin/merge.c:737
 #, c-format
 msgid "Unknown option for merge-recursive: -X%s"
 msgstr "Nieznana opcja merge-recursive: -X%s"
 
-#: builtin/merge.c:755 t/helper/test-fast-rebase.c:209
+#: builtin/merge.c:756 t/helper/test-fast-rebase.c:209
 #, c-format
 msgid "unable to write %s"
 msgstr "nie można zapisać %s"
 
-#: builtin/merge.c:807
+#: builtin/merge.c:808
 #, c-format
 msgid "Could not read from '%s'"
 msgstr "Nie można odczytać „%s”"
 
-#: builtin/merge.c:816
+#: builtin/merge.c:817
 #, c-format
 msgid "Not committing merge; use 'git commit' to complete the merge.\n"
 msgstr "Nie składanie scalenia; użyj „git commit”, aby ukończyć scalanie.\n"
 
-#: builtin/merge.c:822
+#: builtin/merge.c:823
 msgid ""
 "Please enter a commit message to explain why this merge is necessary,\n"
 "especially if it merges an updated upstream into a topic branch.\n"
@@ -17190,11 +17521,11 @@ msgstr ""
 "zwłaszcza jeśli scala zaktualizowaną gałąź nadrzędną z gałęzią tematyczną.\n"
 "\n"
 
-#: builtin/merge.c:827
+#: builtin/merge.c:828
 msgid "An empty message aborts the commit.\n"
 msgstr "Pusty komunikat przerywa zapis.\n"
 
-#: builtin/merge.c:830
+#: builtin/merge.c:831
 #, c-format
 msgid ""
 "Lines starting with '%c' will be ignored, and an empty message aborts\n"
@@ -17203,73 +17534,73 @@ msgstr ""
 "Wiersze zaczynające się od „%c” będą ignorowane, a pusty komunikat\n"
 "przerwie zapis.\n"
 
-#: builtin/merge.c:883
+#: builtin/merge.c:884
 msgid "Empty commit message."
 msgstr "Pusty komunikat zapisu."
 
-#: builtin/merge.c:898
+#: builtin/merge.c:899
 #, c-format
 msgid "Wonderful.\n"
 msgstr "Wspaniale.\n"
 
-#: builtin/merge.c:959
+#: builtin/merge.c:960
 #, c-format
 msgid "Automatic merge failed; fix conflicts and then commit the result.\n"
 msgstr ""
 "Automatyczne scalanie nie powiodło się; napraw konflikty i złóż wynik.\n"
 
-#: builtin/merge.c:998
+#: builtin/merge.c:999
 msgid "No current branch."
 msgstr "Nie ma bieżącej gałęzi."
 
-#: builtin/merge.c:1000
+#: builtin/merge.c:1001
 msgid "No remote for the current branch."
 msgstr "Bieżąca gałąź nie ma zdalnego repozytorium."
 
-#: builtin/merge.c:1002
+#: builtin/merge.c:1003
 msgid "No default upstream defined for the current branch."
 msgstr "Nie zdefiniowano gałęzi nadrzędnej wobec bieżącej."
 
-#: builtin/merge.c:1007
+#: builtin/merge.c:1008
 #, c-format
 msgid "No remote-tracking branch for %s from %s"
 msgstr "Brak gałęzi śledzącej dla %s z %s"
 
-#: builtin/merge.c:1064
+#: builtin/merge.c:1065
 #, c-format
 msgid "Bad value '%s' in environment '%s'"
 msgstr "Błędna wartość „%s” w środowisku „%s”"
 
-#: builtin/merge.c:1167
+#: builtin/merge.c:1168
 #, c-format
 msgid "not something we can merge in %s: %s"
 msgstr "to nie jest coś, co można scalić w %s: %s"
 
-#: builtin/merge.c:1201
+#: builtin/merge.c:1202
 msgid "not something we can merge"
 msgstr "to nie jest coś, co można scalić"
 
-#: builtin/merge.c:1311
+#: builtin/merge.c:1312
 msgid "--abort expects no arguments"
 msgstr "--abort nie przyjmuje argumentów"
 
-#: builtin/merge.c:1315
+#: builtin/merge.c:1316
 msgid "There is no merge to abort (MERGE_HEAD missing)."
 msgstr "Nie ma scalenia, które można by przerwać (brak MERGE_HEAD)."
 
-#: builtin/merge.c:1333
+#: builtin/merge.c:1334
 msgid "--quit expects no arguments"
 msgstr "--quit nie przyjmuje argumentów"
 
-#: builtin/merge.c:1346
+#: builtin/merge.c:1347
 msgid "--continue expects no arguments"
 msgstr "--continue nie przyjmuje argumentów"
 
-#: builtin/merge.c:1350
+#: builtin/merge.c:1351
 msgid "There is no merge in progress (MERGE_HEAD missing)."
 msgstr "Nie trwa żadne scalenie (brak MERGE_HEAD)."
 
-#: builtin/merge.c:1366
+#: builtin/merge.c:1367
 msgid ""
 "You have not concluded your merge (MERGE_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -17277,7 +17608,7 @@ msgstr ""
 "Nie zwieńczono scalania (MERGE_HEAD istnieje).\n"
 "Złóż swoje zmiany przed scaleniem."
 
-#: builtin/merge.c:1373
+#: builtin/merge.c:1374
 msgid ""
 "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -17285,102 +17616,144 @@ msgstr ""
 "Nie zwieńczono dobierania (CHERRY_PICK_HEAD istnieje).\n"
 "Złóż swoje zmiany przed scaleniem."
 
-#: builtin/merge.c:1376
+#: builtin/merge.c:1377
 msgid "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists)."
 msgstr "Nie zwieńczono dobierania (CHERRY_PICK_HEAD istnieje)."
 
-#: builtin/merge.c:1390
+#: builtin/merge.c:1391
 msgid "You cannot combine --squash with --no-ff."
 msgstr "--squash i --no-ff się wykluczają."
 
-#: builtin/merge.c:1392
+#: builtin/merge.c:1393
 msgid "You cannot combine --squash with --commit."
 msgstr "--squash i --commit się wykluczają."
 
-#: builtin/merge.c:1408
+#: builtin/merge.c:1409
 msgid "No commit specified and merge.defaultToUpstream not set."
 msgstr "Nie podano zapisu, a nie ustawiono merge.defaultToUpstream."
 
-#: builtin/merge.c:1425
+#: builtin/merge.c:1426
 msgid "Squash commit into empty head not supported yet"
 msgstr "Spłaszczenie zapisu w puste czoło nie jest jeszcze wspierane"
 
-#: builtin/merge.c:1427
+#: builtin/merge.c:1428
 msgid "Non-fast-forward commit does not make sense into an empty head"
 msgstr "Nieprzewinięty zapis nie ma sensu przy pustym czele (HEAD) gałęzi"
 
-#: builtin/merge.c:1432
+#: builtin/merge.c:1433
 #, c-format
 msgid "%s - not something we can merge"
 msgstr "%s — nie jest czymś, co możemy scalić"
 
-#: builtin/merge.c:1434
+#: builtin/merge.c:1435
 msgid "Can merge only exactly one commit into empty head"
 msgstr "Można scalić tylko dokładnie jeden zapis w puste czoło"
 
-#: builtin/merge.c:1515
+#: builtin/merge.c:1516
 msgid "refusing to merge unrelated histories"
 msgstr "odmawiam scalenia niepowiązanych historii"
 
-#: builtin/merge.c:1524
+#: builtin/merge.c:1525
 msgid "Already up to date."
 msgstr "Już aktualne."
 
-#: builtin/merge.c:1534
+#: builtin/merge.c:1535
 #, c-format
 msgid "Updating %s..%s\n"
 msgstr "Aktualizowanie %s..%s\n"
 
-#: builtin/merge.c:1580
+#: builtin/merge.c:1581
 #, c-format
 msgid "Trying really trivial in-index merge...\n"
 msgstr "Próba naprawdę trywialnego scalenia w indeksie...\n"
 
-#: builtin/merge.c:1587
+#: builtin/merge.c:1588
 #, c-format
 msgid "Nope.\n"
 msgstr "O nie.\n"
 
-#: builtin/merge.c:1612
+#: builtin/merge.c:1613
 msgid "Already up to date. Yeeah!"
 msgstr "Już aktualne. Hurra!"
 
-#: builtin/merge.c:1618
+#: builtin/merge.c:1619
 msgid "Not possible to fast-forward, aborting."
 msgstr "Nie da się przewinąć, przerywanie."
 
-#: builtin/merge.c:1646 builtin/merge.c:1711
+#: builtin/merge.c:1647 builtin/merge.c:1712
 #, c-format
 msgid "Rewinding the tree to pristine...\n"
 msgstr "Cofanie drzewa do nieskalanego stanu...\n"
 
-#: builtin/merge.c:1650
+#: builtin/merge.c:1651
 #, c-format
 msgid "Trying merge strategy %s...\n"
 msgstr "Próba strategii scalania %s...\n"
 
-#: builtin/merge.c:1702
+#: builtin/merge.c:1703
 #, c-format
 msgid "No merge strategy handled the merge.\n"
 msgstr "Żadna strategia scalania nie podołała temu scalaniu.\n"
 
-#: builtin/merge.c:1704
+#: builtin/merge.c:1705
 #, c-format
 msgid "Merge with strategy %s failed.\n"
 msgstr "Scalanie ze strategią %s nie powiodło się.\n"
 
-#: builtin/merge.c:1713
+#: builtin/merge.c:1714
 #, c-format
 msgid "Using the %s to prepare resolving by hand.\n"
 msgstr "Użycie %s, żeby przygotować ręczne rozwiązywanie.\n"
 
-#: builtin/merge.c:1727
+#: builtin/merge.c:1728
 #, c-format
 msgid "Automatic merge went well; stopped before committing as requested\n"
 msgstr ""
 "Automatyczne scalanie powiodło się; zatrzymano przez złożeniem, jak "
 "polecono\n"
 
+#: builtin/mktag.c:10
+msgid "git mktag"
+msgstr "git mktag"
+
+#: builtin/mktag.c:30
+#, c-format
+msgid "warning: tag input does not pass fsck: %s"
+msgstr "ostrzeżenie: wejście tagu nie przechodzi sprawdzenia fsck: %s"
+
+#: builtin/mktag.c:41
+#, c-format
+msgid "error: tag input does not pass fsck: %s"
+msgstr "błąd: wejście tagu nie przechodzi sprawdzenia fsck: %s"
+
+#: builtin/mktag.c:44
+#, c-format
+msgid "%d (FSCK_IGNORE?) should never trigger this callback"
+msgstr "%d (FSCK_IGNORE?) nie powinno nigdy wyzwolić tej funkcji zwrotnej"
+
+#: builtin/mktag.c:59
+#, c-format
+msgid "could not read tagged object '%s'"
+msgstr "nie można odczytać otagowanego obiektu „%s”"
+
+#: builtin/mktag.c:62
+#, c-format
+msgid "object '%s' tagged as '%s', but is a '%s' type"
+msgstr "obiekt „%s” otagowany jako „%s”, ale jest rodzaju „%s”"
+
+#: builtin/mktag.c:99
+msgid "tag on stdin did not pass our strict fsck check"
+msgstr ""
+"tag na standardowym wejściu nie przeszedł naszego ścisłego sprawdzenia fsck"
+
+#: builtin/mktag.c:102
+msgid "tag on stdin did not refer to a valid object"
+msgstr "tag na standardowym wejściu nie odnosił się do prawidłowego obiektu"
+
+#: builtin/mktag.c:105 builtin/tag.c:232
+msgid "unable to write tag file"
+msgstr "nie można zapisać pliku tagu"
+
 #: builtin/mktree.c:66
 msgid "git mktree [-z] [--missing] [--batch]"
 msgstr "git mktree [-z] [--missing] [--batch]"
@@ -17417,7 +17790,10 @@ msgstr ""
 "podczas przepakowania zbierz pliki paczek mniejszego rozmiaru w porcję "
 "większą niż ten rozmiar"
 
-#: builtin/multi-pack-index.c:50 builtin/prune-packed.c:25
+#: builtin/multi-pack-index.c:50 builtin/notes.c:376 builtin/notes.c:431
+#: builtin/notes.c:509 builtin/notes.c:521 builtin/notes.c:598
+#: builtin/notes.c:665 builtin/notes.c:815 builtin/notes.c:963
+#: builtin/notes.c:985 builtin/prune-packed.c:25 builtin/tag.c:575
 msgid "too many arguments"
 msgstr "za dużo argumentów"
 
@@ -17522,7 +17898,7 @@ msgstr "%s, źródło=%s, cel=%s"
 msgid "Renaming %s to %s\n"
 msgstr "Zmiana nazwy z %s na %s\n"
 
-#: builtin/mv.c:280 builtin/remote.c:785 builtin/repack.c:484
+#: builtin/mv.c:280 builtin/remote.c:785 builtin/repack.c:483
 #, c-format
 msgid "renaming '%s' failed"
 msgstr "nie można zmienić nazwy „%s”"
@@ -17713,7 +18089,7 @@ msgstr "nie można zapisać obiektu uwagi"
 msgid "the note contents have been left in %s"
 msgstr "pozostawiono zawartość uwagi w %s"
 
-#: builtin/notes.c:242 builtin/tag.c:533
+#: builtin/notes.c:242 builtin/tag.c:565
 #, c-format
 msgid "could not open or read '%s'"
 msgstr "nie można otworzyć lub odczytać „%s”"
@@ -17753,12 +18129,6 @@ msgstr "nie można skopiować uwag z „%s” do „%s”"
 msgid "refusing to %s notes in %s (outside of refs/notes/)"
 msgstr "notes %s: odmawiam wykonania w %s (poza refs/notes/)"
 
-#: builtin/notes.c:376 builtin/notes.c:431 builtin/notes.c:509
-#: builtin/notes.c:521 builtin/notes.c:598 builtin/notes.c:665
-#: builtin/notes.c:815 builtin/notes.c:963 builtin/notes.c:985
-msgid "too many parameters"
-msgstr "zbyt wiele parametrów"
-
 #: builtin/notes.c:389 builtin/notes.c:678
 #, c-format
 msgid "no note found for object %s."
@@ -17816,8 +18186,8 @@ msgid "load rewriting config for <command> (implies --stdin)"
 msgstr "wczytaj ustawienia przepisywania dla <polecenia> (zakłada --stdin)"
 
 #: builtin/notes.c:517
-msgid "too few parameters"
-msgstr "zbyt mało argumentów"
+msgid "too few arguments"
+msgstr "za mało argumentów"
 
 #: builtin/notes.c:538
 #, c-format
@@ -17945,7 +18315,7 @@ msgstr ""
 "wynik przez „git notes merge --commit”, lub przerwij scalanie przez „git "
 "notes merge --abort”.\n"
 
-#: builtin/notes.c:897 builtin/tag.c:546
+#: builtin/notes.c:897 builtin/tag.c:578
 #, c-format
 msgid "Failed to resolve '%s' as a valid ref."
 msgstr "Nie można rozwiązać „%s” jako prawidłowej referencji."
@@ -17963,7 +18333,7 @@ msgstr "próba usunięcia nieistniejącej uwagi nie jest błędem"
 msgid "read object names from the standard input"
 msgstr "odczytaj nazwy obiektów ze standardowego wejścia"
 
-#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:220
+#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:148
 msgid "do not remove, show only"
 msgstr "nie usuwaj, tylko pokaż"
 
@@ -17979,7 +18349,7 @@ msgstr "ref-uwagi"
 msgid "use notes from <notes-ref>"
 msgstr "użyj uwag z <referencja-uwagi>"
 
-#: builtin/notes.c:1034 builtin/stash.c:1604
+#: builtin/notes.c:1034 builtin/stash.c:1671
 #, c-format
 msgid "unknown subcommand: %s"
 msgstr "nieznana podkomenda: %s"
@@ -17998,102 +18368,116 @@ msgstr ""
 "git pack-objects [<opcje>...] <baza> [< <lista-referencji> | < <lista-"
 "obiektów>]"
 
-#: builtin/pack-objects.c:443
+#: builtin/pack-objects.c:440
+#, c-format
+msgid ""
+"write_reuse_object: could not locate %s, expected at offset %<PRIuMAX> in "
+"pack %s"
+msgstr ""
+"write_reuse_object: nie odnaleziono %s, oczekiwano na pozycji %<PRIuMAX> w "
+"paczce %s"
+
+#: builtin/pack-objects.c:448
 #, c-format
 msgid "bad packed object CRC for %s"
 msgstr "zły CRC spakowanego obiektu dla %s"
 
-#: builtin/pack-objects.c:454
+#: builtin/pack-objects.c:459
 #, c-format
 msgid "corrupt packed object for %s"
 msgstr "uszkodzony spakowany obiekt dla %s"
 
-#: builtin/pack-objects.c:585
+#: builtin/pack-objects.c:590
 #, c-format
 msgid "recursive delta detected for object %s"
 msgstr "wykryto rekurencyjną deltę dla obiektu %s"
 
-#: builtin/pack-objects.c:796
+#: builtin/pack-objects.c:801
 #, c-format
 msgid "ordered %u objects, expected %<PRIu32>"
 msgstr "zamówiono %u obiektów, oczekiwano %<PRIu32>"
 
-#: builtin/pack-objects.c:1004
+#: builtin/pack-objects.c:896
+#, c-format
+msgid "expected object at offset %<PRIuMAX> in pack %s"
+msgstr "oczekiwano obiektu na pozycji %<PRIuMAX> w paczce %s"
+
+#: builtin/pack-objects.c:1015
 msgid "disabling bitmap writing, packs are split due to pack.packSizeLimit"
 msgstr ""
 "wyłączone zapisywanie bitmapy, paczki są dzielone według pack.packSizeLimit"
 
-#: builtin/pack-objects.c:1017
+#: builtin/pack-objects.c:1028
 msgid "Writing objects"
 msgstr "Zapisywanie obiektów"
 
-#: builtin/pack-objects.c:1078 builtin/update-index.c:90
+#: builtin/pack-objects.c:1089 builtin/update-index.c:90
 #, c-format
 msgid "failed to stat %s"
 msgstr "nie można wykonać stat na „%s”"
 
-#: builtin/pack-objects.c:1131
+#: builtin/pack-objects.c:1141
 #, c-format
 msgid "wrote %<PRIu32> objects while expecting %<PRIu32>"
 msgstr "wypisano %<PRIu32> obiektów, a oczekiwano %<PRIu32>"
 
-#: builtin/pack-objects.c:1348
+#: builtin/pack-objects.c:1358
 msgid "disabling bitmap writing, as some objects are not being packed"
 msgstr "wyłączanie zapisywania bitmapy, niektóre obiekty nie są pakowane"
 
-#: builtin/pack-objects.c:1796
+#: builtin/pack-objects.c:1806
 #, c-format
 msgid "delta base offset overflow in pack for %s"
 msgstr "przepełnienie podstawowego przesunięcia delty w paczce w %s"
 
-#: builtin/pack-objects.c:1805
+#: builtin/pack-objects.c:1815
 #, c-format
 msgid "delta base offset out of bound for %s"
 msgstr "podstawowe przesunięcie delty poza zakresem w %s"
 
-#: builtin/pack-objects.c:2086
+#: builtin/pack-objects.c:2096
 msgid "Counting objects"
 msgstr "Zliczanie obiektów"
 
-#: builtin/pack-objects.c:2231
+#: builtin/pack-objects.c:2241
 #, c-format
 msgid "unable to parse object header of %s"
 msgstr "nie można przetworzyć nagłówka obiektu %s"
 
-#: builtin/pack-objects.c:2301 builtin/pack-objects.c:2317
-#: builtin/pack-objects.c:2327
+#: builtin/pack-objects.c:2311 builtin/pack-objects.c:2327
+#: builtin/pack-objects.c:2337
 #, c-format
 msgid "object %s cannot be read"
 msgstr "nie można odczytać obiektu %s"
 
-#: builtin/pack-objects.c:2304 builtin/pack-objects.c:2331
+#: builtin/pack-objects.c:2314 builtin/pack-objects.c:2341
 #, c-format
 msgid "object %s inconsistent object length (%<PRIuMAX> vs %<PRIuMAX>)"
 msgstr "niespójna długość obiektu %s (%<PRIuMAX> vs %<PRIuMAX>)"
 
-#: builtin/pack-objects.c:2341
+#: builtin/pack-objects.c:2351
 msgid "suboptimal pack - out of memory"
 msgstr "nieoptymalna paczka — brak pamięci"
 
-#: builtin/pack-objects.c:2656
+#: builtin/pack-objects.c:2666
 #, c-format
 msgid "Delta compression using up to %d threads"
 msgstr "Kompresja delt z użyciem do %d wątków"
 
-#: builtin/pack-objects.c:2795
+#: builtin/pack-objects.c:2805
 #, c-format
 msgid "unable to pack objects reachable from tag %s"
 msgstr "nie można spakować obiektów osiągalnych z tagu %s"
 
-#: builtin/pack-objects.c:2883
+#: builtin/pack-objects.c:2891
 msgid "Compressing objects"
 msgstr "Kompresowanie obiektów"
 
-#: builtin/pack-objects.c:2889
+#: builtin/pack-objects.c:2897
 msgid "inconsistency with delta count"
 msgstr "niespójność z liczbą delt"
 
-#: builtin/pack-objects.c:2961
+#: builtin/pack-objects.c:2976
 #, c-format
 msgid ""
 "value of uploadpack.blobpackfileuri must be of the form '<object-hash> <pack-"
@@ -18102,14 +18486,14 @@ msgstr ""
 "wartość uploadpack.blobpackfileuri musi być postaci „<skrót-obiektu> <skrót-"
 "paczki> <uri>” (otrzymano „%s”)"
 
-#: builtin/pack-objects.c:2964
+#: builtin/pack-objects.c:2979
 #, c-format
 msgid ""
 "object already configured in another uploadpack.blobpackfileuri (got '%s')"
 msgstr ""
 "już ustawiono obiekt w innym uploadpack.blobpackfileuri (otrzymano „%s”)"
 
-#: builtin/pack-objects.c:2993
+#: builtin/pack-objects.c:3008
 #, c-format
 msgid ""
 "expected edge object ID, got garbage:\n"
@@ -18118,7 +18502,7 @@ msgstr ""
 "oczekiwano identyfikatora obiektu krawędzi, otrzymano śmieci:\n"
 "%s"
 
-#: builtin/pack-objects.c:2999
+#: builtin/pack-objects.c:3014
 #, c-format
 msgid ""
 "expected object ID, got garbage:\n"
@@ -18127,242 +18511,256 @@ msgstr ""
 "oczekiwano identyfikatora obiektu, otrzymano śmieci:\n"
 "%s"
 
-#: builtin/pack-objects.c:3097
+#: builtin/pack-objects.c:3112
 msgid "invalid value for --missing"
 msgstr "nieprawidłowa wartość --missing"
 
-#: builtin/pack-objects.c:3156 builtin/pack-objects.c:3264
+#: builtin/pack-objects.c:3171 builtin/pack-objects.c:3279
 msgid "cannot open pack index"
 msgstr "nie można otworzyć indeksu paczki"
 
-#: builtin/pack-objects.c:3187
+#: builtin/pack-objects.c:3202
 #, c-format
 msgid "loose object at %s could not be examined"
 msgstr "nie można przebadać wolnego obiektu w %s"
 
-#: builtin/pack-objects.c:3272
+#: builtin/pack-objects.c:3287
 msgid "unable to force loose object"
 msgstr "nie można wymusić wolnego obiektu"
 
-#: builtin/pack-objects.c:3365
+#: builtin/pack-objects.c:3380
 #, c-format
 msgid "not a rev '%s'"
 msgstr "nie jest rewizją „%s”"
 
-#: builtin/pack-objects.c:3368
+#: builtin/pack-objects.c:3383
 #, c-format
 msgid "bad revision '%s'"
 msgstr "zła rewizja „%s”"
 
-#: builtin/pack-objects.c:3393
+#: builtin/pack-objects.c:3408
 msgid "unable to add recent objects"
 msgstr "nie można dodać ostatnich obiektów"
 
-#: builtin/pack-objects.c:3446
+#: builtin/pack-objects.c:3461
 #, c-format
 msgid "unsupported index version %s"
 msgstr "nieobsługiwana wersja indeksu %s"
 
-#: builtin/pack-objects.c:3450
+#: builtin/pack-objects.c:3465
 #, c-format
 msgid "bad index version '%s'"
 msgstr "zła wersja indeksu „%s”"
 
-#: builtin/pack-objects.c:3488
+#: builtin/pack-objects.c:3503
 msgid "<version>[,<offset>]"
 msgstr "<wersja>[,<pozycja>]"
 
-#: builtin/pack-objects.c:3489
+#: builtin/pack-objects.c:3504
 msgid "write the pack index file in the specified idx format version"
 msgstr "zapisz plik indeksu paczek w podanej wersji formatu indeksu"
 
-#: builtin/pack-objects.c:3492
+#: builtin/pack-objects.c:3507
 msgid "maximum size of each output pack file"
 msgstr "maksymalny rozmiar pojedynczego wyjściowego pliku paczki"
 
-#: builtin/pack-objects.c:3494
+#: builtin/pack-objects.c:3509
 msgid "ignore borrowed objects from alternate object store"
 msgstr "pomiń pożyczone obiekty z alternatywnych zbiorów obiektów"
 
-#: builtin/pack-objects.c:3496
+#: builtin/pack-objects.c:3511
 msgid "ignore packed objects"
 msgstr "ignoruj spakowane obiekty"
 
-#: builtin/pack-objects.c:3498
+#: builtin/pack-objects.c:3513
 msgid "limit pack window by objects"
 msgstr "ogranicz okno paczki w obiektach"
 
-#: builtin/pack-objects.c:3500
+#: builtin/pack-objects.c:3515
 msgid "limit pack window by memory in addition to object limit"
 msgstr "ogranicz okno paczki w pamięci oprócz limitu w obiektach"
 
-#: builtin/pack-objects.c:3502
+#: builtin/pack-objects.c:3517
 msgid "maximum length of delta chain allowed in the resulting pack"
 msgstr "maksymalna długość łańcucha delt dopuszczona w wynikowej paczce"
 
-#: builtin/pack-objects.c:3504
+#: builtin/pack-objects.c:3519
 msgid "reuse existing deltas"
 msgstr "użyj ponownie istniejących delt"
 
-#: builtin/pack-objects.c:3506
+#: builtin/pack-objects.c:3521
 msgid "reuse existing objects"
 msgstr "użyj ponownie istniejących obiektów"
 
-#: builtin/pack-objects.c:3508
+#: builtin/pack-objects.c:3523
 msgid "use OFS_DELTA objects"
 msgstr "użyj obiektów OFS_DELTA"
 
-#: builtin/pack-objects.c:3510
+#: builtin/pack-objects.c:3525
 msgid "use threads when searching for best delta matches"
 msgstr "użyj wątków przy wyszukiwaniu najlepiej dopasowanych delt"
 
-#: builtin/pack-objects.c:3512
+#: builtin/pack-objects.c:3527
 msgid "do not create an empty pack output"
 msgstr "nie można utworzyć pustej paczki na wyjściu"
 
-#: builtin/pack-objects.c:3514
+#: builtin/pack-objects.c:3529
 msgid "read revision arguments from standard input"
 msgstr "odczytaj argumenty rewizji ze standardowego wejścia"
 
-#: builtin/pack-objects.c:3516
+#: builtin/pack-objects.c:3531
 msgid "limit the objects to those that are not yet packed"
 msgstr "ogranicz obiekty do jeszcze nie spakowanych"
 
-#: builtin/pack-objects.c:3519
+#: builtin/pack-objects.c:3534
 msgid "include objects reachable from any reference"
 msgstr "uwzględnij obiekty osiągalne z dowolnej referencji"
 
-#: builtin/pack-objects.c:3522
+#: builtin/pack-objects.c:3537
 msgid "include objects referred by reflog entries"
 msgstr "uwzględnij obiekty z odniesieniami z wpisów dziennika referencji"
 
-#: builtin/pack-objects.c:3525
+#: builtin/pack-objects.c:3540
 msgid "include objects referred to by the index"
 msgstr "uwzględnij obiekty z odniesieniami z indeksu"
 
-#: builtin/pack-objects.c:3528
+#: builtin/pack-objects.c:3543
 msgid "output pack to stdout"
 msgstr "wypisz paczkę na standardowe wyjście"
 
-#: builtin/pack-objects.c:3530
+#: builtin/pack-objects.c:3545
 msgid "include tag objects that refer to objects to be packed"
 msgstr "uwzględnij obiekty tagów odnoszące się do pakowanych obiektów"
 
-#: builtin/pack-objects.c:3532
+#: builtin/pack-objects.c:3547
 msgid "keep unreachable objects"
 msgstr "zachowaj nieosiągalne obiekty"
 
-#: builtin/pack-objects.c:3534
+#: builtin/pack-objects.c:3549
 msgid "pack loose unreachable objects"
 msgstr "spakuj luźnie nieosiągalne obiekty"
 
-#: builtin/pack-objects.c:3536
+#: builtin/pack-objects.c:3551
 msgid "unpack unreachable objects newer than <time>"
 msgstr "rozpakuj nieosiągalne obiekty nowsze niż <czas>"
 
-#: builtin/pack-objects.c:3539
+#: builtin/pack-objects.c:3554
 msgid "use the sparse reachability algorithm"
 msgstr "użyj rzadkiego algorytmu osiągalności"
 
-#: builtin/pack-objects.c:3541
+#: builtin/pack-objects.c:3556
 msgid "create thin packs"
 msgstr "twórz wąskie paczki"
 
-#: builtin/pack-objects.c:3543
+#: builtin/pack-objects.c:3558
 msgid "create packs suitable for shallow fetches"
 msgstr "utwórz paczki odpowiednie do płytkich pobrań"
 
-#: builtin/pack-objects.c:3545
+#: builtin/pack-objects.c:3560
 msgid "ignore packs that have companion .keep file"
 msgstr "pomiń paczki, którym towarzyszy plik .keep"
 
-#: builtin/pack-objects.c:3547
+#: builtin/pack-objects.c:3562
 msgid "ignore this pack"
 msgstr "pomiń tę paczkę"
 
-#: builtin/pack-objects.c:3549
+#: builtin/pack-objects.c:3564
 msgid "pack compression level"
 msgstr "stopień kompresji paczki"
 
-#: builtin/pack-objects.c:3551
+#: builtin/pack-objects.c:3566
 msgid "do not hide commits by grafts"
 msgstr "nie ukrywaj przeszczepionych zapisów"
 
-#: builtin/pack-objects.c:3553
+#: builtin/pack-objects.c:3568
 msgid "use a bitmap index if available to speed up counting objects"
 msgstr ""
 "użyj indeksu bitmapy, jeśli dostępny, żeby przyspieszyć zliczanie obiektów"
 
-#: builtin/pack-objects.c:3555
+#: builtin/pack-objects.c:3570
 msgid "write a bitmap index together with the pack index"
 msgstr "zapisz indeks bitmapy razem z indeksem paczek"
 
-#: builtin/pack-objects.c:3559
+#: builtin/pack-objects.c:3574
 msgid "write a bitmap index if possible"
 msgstr "zapisz indeks bitmapy jeśli możliwe"
 
-#: builtin/pack-objects.c:3563
+#: builtin/pack-objects.c:3578
 msgid "handling for missing objects"
 msgstr "traktowanie brakujących obiektów"
 
-#: builtin/pack-objects.c:3566
+#: builtin/pack-objects.c:3581
 msgid "do not pack objects in promisor packfiles"
 msgstr "nie pakuj obiektów w obiecujące pliki paczek"
 
-#: builtin/pack-objects.c:3568
+#: builtin/pack-objects.c:3583
 msgid "respect islands during delta compression"
 msgstr "uszanuj wyspy podczas kompresji delt"
 
-#: builtin/pack-objects.c:3570
+#: builtin/pack-objects.c:3585
 msgid "protocol"
 msgstr "protokół"
 
-#: builtin/pack-objects.c:3571
+#: builtin/pack-objects.c:3586
 msgid "exclude any configured uploadpack.blobpackfileuri with this protocol"
 msgstr "wyłącz w tym protokole wszystkie ustawione uploadpack.blobpackfileuri"
 
-#: builtin/pack-objects.c:3600
+#: builtin/pack-objects.c:3617
 #, c-format
 msgid "delta chain depth %d is too deep, forcing %d"
 msgstr "łańcuch delt za głęboki: %d, wymuszanie %d"
 
-#: builtin/pack-objects.c:3605
+#: builtin/pack-objects.c:3622
 #, c-format
 msgid "pack.deltaCacheLimit is too high, forcing %d"
 msgstr "pack.deltaCacheLimit za wysoki, wymuszanie %d"
 
-#: builtin/pack-objects.c:3659
+#: builtin/pack-objects.c:3676
 msgid "--max-pack-size cannot be used to build a pack for transfer"
 msgstr "nie można użyć --max-pack-size do budowania paczki do przesyłu"
 
-#: builtin/pack-objects.c:3661
+#: builtin/pack-objects.c:3678
 msgid "minimum pack size limit is 1 MiB"
 msgstr "minimalna granica rozmiaru paczki to 1 MiB"
 
-#: builtin/pack-objects.c:3666
+#: builtin/pack-objects.c:3683
 msgid "--thin cannot be used to build an indexable pack"
 msgstr "nie można użyć --thin, aby zbudować indeksowalną paczkę"
 
-#: builtin/pack-objects.c:3669
+#: builtin/pack-objects.c:3686
 msgid "--keep-unreachable and --unpack-unreachable are incompatible"
 msgstr "--keep-unreachable i --unpack-unreachable się wykluczają"
 
-#: builtin/pack-objects.c:3675
+#: builtin/pack-objects.c:3692
 msgid "cannot use --filter without --stdout"
 msgstr "nie można użyć --filter bez --stdout"
 
-#: builtin/pack-objects.c:3735
+#: builtin/pack-objects.c:3752
 msgid "Enumerating objects"
 msgstr "Wymienianie obiektów"
 
-#: builtin/pack-objects.c:3766
+#: builtin/pack-objects.c:3783
 #, c-format
 msgid ""
 "Total %<PRIu32> (delta %<PRIu32>), reused %<PRIu32> (delta %<PRIu32>), pack-"
 "reused %<PRIu32>"
 msgstr ""
-"Razem %<PRIu32> (delty %<PRIu32>), użyte ponownie %<PRIu32> (delty "
-"%<PRIu32>), paczki użyte ponownie %<PRIu32>"
+"Razem %<PRIu32> (delty %<PRIu32>), użyte ponownie %<PRIu32> (delty "
+"%<PRIu32>), paczki użyte ponownie %<PRIu32>"
+
+#: builtin/pack-redundant.c:601
+msgid ""
+"'git pack-redundant' is nominated for removal.\n"
+"If you still use this command, please add an extra\n"
+"option, '--i-still-use-this', on the command line\n"
+"and let us know you still use it by sending an e-mail\n"
+"to <git@vger.kernel.org>.  Thanks.\n"
+msgstr ""
+"„git pack-redundant” naznaczono do usunięcia.\n"
+"Jeśli nadal używasz tego polecenia, dodaj dodatkową\n"
+"opcję, „--i-still-use-this”, w wierszu poleceń\n"
+"i daj znać, że nadal jej używasz wysyłając list e-mail\n"
+"na <git@vger.kernel.org>.  Dzięki.\n"
 
 #: builtin/pack-refs.c:8
 msgid "git pack-refs [<options>]"
@@ -18421,7 +18819,7 @@ msgstr "Opcje związane ze scalaniem"
 msgid "incorporate changes by rebasing rather than merging"
 msgstr "wciel zmiany przez przestawienie, a nie scalanie"
 
-#: builtin/pull.c:158 builtin/rebase.c:490 builtin/revert.c:126
+#: builtin/pull.c:158 builtin/rebase.c:492 builtin/revert.c:126
 msgid "allow fast-forward"
 msgstr "zezwól na przewijanie"
 
@@ -18446,47 +18844,18 @@ msgstr "liczba pod-modułów zaciąganych równolegle"
 msgid "Invalid value for pull.ff: %s"
 msgstr "Nieprawidłowa wartość pull.ff: %s"
 
-#: builtin/pull.c:348
-msgid ""
-"Pulling without specifying how to reconcile divergent branches is\n"
-"discouraged. You can squelch this message by running one of the following\n"
-"commands sometime before your next pull:\n"
-"\n"
-"  git config pull.rebase false  # merge (the default strategy)\n"
-"  git config pull.rebase true   # rebase\n"
-"  git config pull.ff only       # fast-forward only\n"
-"\n"
-"You can replace \"git config\" with \"git config --global\" to set a "
-"default\n"
-"preference for all repositories. You can also pass --rebase, --no-rebase,\n"
-"or --ff-only on the command line to override the configured default per\n"
-"invocation.\n"
-msgstr ""
-"Odradza się zaciągania bez podania, jak pogodzić rozbieżne gałęzie.\n"
-"Można uciszyć ten komunikat wykonując jedno z poniższych\n"
-"poleceń kiedyś przed następnym zaciągnięciem:\n"
-"\n"
-"  git config pull.rebase false  # scalenie (domyślna strategia)\n"
-"  git config pull.rebase true   # przestawienie\n"
-"  git config pull.ff only       # tylko przewinięcie\n"
-"\n"
-"Można zamienić „git config” na „git config --global”, aby ustawić domyślny\n"
-"wybór do wszystkich repozytoriów. Można też przekazać --rebase, --no-rebase\n"
-"lub --ff-only w wierszu poleceń, aby zmienić ustawione zachowanie\n"
-"w jednym wywołaniu.\n"
-
-#: builtin/pull.c:458
+#: builtin/pull.c:445
 msgid ""
 "There is no candidate for rebasing against among the refs that you just "
 "fetched."
 msgstr "Wśród właśnie pobranych referencji nie ma kandydata na przestawianie."
 
-#: builtin/pull.c:460
+#: builtin/pull.c:447
 msgid ""
 "There are no candidates for merging among the refs that you just fetched."
 msgstr "Wśród właśnie pobranych referencji nie ma kandydatów na scalanie."
 
-#: builtin/pull.c:461
+#: builtin/pull.c:448
 msgid ""
 "Generally this means that you provided a wildcard refspec which had no\n"
 "matches on the remote end."
@@ -18494,7 +18863,7 @@ msgstr ""
 "Zwykle oznacza to, że podano referencję z globem bez dopasowań\n"
 "po zdalnej stronie."
 
-#: builtin/pull.c:464
+#: builtin/pull.c:451
 #, c-format
 msgid ""
 "You asked to pull from the remote '%s', but did not specify\n"
@@ -18505,43 +18874,43 @@ msgstr ""
 "gałęzi.  Ponieważ nie jest to domyślne ustawione repozytorium zdalne\n"
 "dla bieżącej gałęzi, musisz podać gałąź w wierszu poleceń."
 
-#: builtin/pull.c:469 builtin/rebase.c:1246
+#: builtin/pull.c:456 builtin/rebase.c:1253
 msgid "You are not currently on a branch."
 msgstr "Nie jesteś obecnie w gałęzi."
 
-#: builtin/pull.c:471 builtin/pull.c:486
+#: builtin/pull.c:458 builtin/pull.c:473
 msgid "Please specify which branch you want to rebase against."
 msgstr "Podaj, względem jakiej gałęzi przestawić."
 
-#: builtin/pull.c:473 builtin/pull.c:488
+#: builtin/pull.c:460 builtin/pull.c:475
 msgid "Please specify which branch you want to merge with."
 msgstr "Podaj, z jaką gałęzią scalić."
 
-#: builtin/pull.c:474 builtin/pull.c:489
+#: builtin/pull.c:461 builtin/pull.c:476
 msgid "See git-pull(1) for details."
 msgstr "Więcej szczegółów w git-pull(1)."
 
-#: builtin/pull.c:476 builtin/pull.c:482 builtin/pull.c:491
-#: builtin/rebase.c:1252
+#: builtin/pull.c:463 builtin/pull.c:469 builtin/pull.c:478
+#: builtin/rebase.c:1259
 msgid "<remote>"
 msgstr "<zdalne-repozytorium>"
 
-#: builtin/pull.c:476 builtin/pull.c:491 builtin/pull.c:496
+#: builtin/pull.c:463 builtin/pull.c:478 builtin/pull.c:483
 msgid "<branch>"
 msgstr "<gałąź>"
 
-#: builtin/pull.c:484 builtin/rebase.c:1244
+#: builtin/pull.c:471 builtin/rebase.c:1251
 msgid "There is no tracking information for the current branch."
 msgstr "Bieżąca gałąź nie ma informacji o śledzeniu."
 
-#: builtin/pull.c:493
+#: builtin/pull.c:480
 msgid ""
 "If you wish to set tracking information for this branch you can do so with:"
 msgstr ""
 "Jeśli chcesz ustawić informacje o śledzeniu w tej gałęzi, możesz to zrobić "
 "przez:"
 
-#: builtin/pull.c:498
+#: builtin/pull.c:485
 #, c-format
 msgid ""
 "Your configuration specifies to merge with the ref '%s'\n"
@@ -18550,28 +18919,57 @@ msgstr ""
 "Konfiguracja podaje, żeby scalić z referencją „%s”\n"
 "ze zdalnego repozytorium, ale nie pobrano stamtąd żadnej takiej."
 
-#: builtin/pull.c:609
+#: builtin/pull.c:596
 #, c-format
 msgid "unable to access commit %s"
 msgstr "brak dostępu do zapisu %s"
 
-#: builtin/pull.c:915
+#: builtin/pull.c:902
 msgid "ignoring --verify-signatures for rebase"
 msgstr "pomijanie --verify-signatures przy przestawianiu"
 
-#: builtin/pull.c:972
+#: builtin/pull.c:930
+msgid ""
+"Pulling without specifying how to reconcile divergent branches is\n"
+"discouraged. You can squelch this message by running one of the following\n"
+"commands sometime before your next pull:\n"
+"\n"
+"  git config pull.rebase false  # merge (the default strategy)\n"
+"  git config pull.rebase true   # rebase\n"
+"  git config pull.ff only       # fast-forward only\n"
+"\n"
+"You can replace \"git config\" with \"git config --global\" to set a "
+"default\n"
+"preference for all repositories. You can also pass --rebase, --no-rebase,\n"
+"or --ff-only on the command line to override the configured default per\n"
+"invocation.\n"
+msgstr ""
+"Odradza się zaciągania bez podania, jak pogodzić rozbieżne gałęzie.\n"
+"Można uciszyć ten komunikat wykonując jedno z poniższych\n"
+"poleceń kiedyś przed następnym zaciągnięciem:\n"
+"\n"
+"  git config pull.rebase false  # scalenie (domyślna strategia)\n"
+"  git config pull.rebase true   # przestawienie\n"
+"  git config pull.ff only       # tylko przewinięcie\n"
+"\n"
+"Można zamienić „git config” na „git config --global”, aby ustawić domyślny\n"
+"wybór do wszystkich repozytoriów. Można też przekazać --rebase, --no-rebase\n"
+"lub --ff-only w wierszu poleceń, aby zmienić ustawione zachowanie\n"
+"w jednym wywołaniu.\n"
+
+#: builtin/pull.c:991
 msgid "Updating an unborn branch with changes added to the index."
 msgstr "Aktualizowanie nienarodzonej gałęzi o zmiany dodane do indeksu."
 
-#: builtin/pull.c:976
+#: builtin/pull.c:995
 msgid "pull with rebase"
 msgstr "zaciągnij z przestawieniem"
 
-#: builtin/pull.c:977
+#: builtin/pull.c:996
 msgid "please commit or stash them."
 msgstr "złóż je lub dodaj do schowka."
 
-#: builtin/pull.c:1002
+#: builtin/pull.c:1021
 #, c-format
 msgid ""
 "fetch updated the current branch head.\n"
@@ -18582,7 +18980,7 @@ msgstr ""
 "przewijanie drzewa roboczego\n"
 "z zapisu %s."
 
-#: builtin/pull.c:1008
+#: builtin/pull.c:1027
 #, c-format
 msgid ""
 "Cannot fast-forward your working tree.\n"
@@ -18599,15 +18997,15 @@ msgstr ""
 "$ git reset --hard\n"
 "by się pozbierać."
 
-#: builtin/pull.c:1023
+#: builtin/pull.c:1042
 msgid "Cannot merge multiple branches into empty head."
 msgstr "Nie można scalić wielu gałęzi w puste czoło."
 
-#: builtin/pull.c:1027
+#: builtin/pull.c:1046
 msgid "Cannot rebase onto multiple branches."
 msgstr "Nie można przestawić na wiele gałęzi."
 
-#: builtin/pull.c:1041
+#: builtin/pull.c:1067
 msgid "cannot rebase with locally recorded submodule modifications"
 msgstr "nie można przestawić z lokalnie zapisanymi zmianami pod-modułów"
 
@@ -18914,46 +19312,54 @@ msgstr "--all i --mirror się wykluczają"
 msgid "push options must not have new line characters"
 msgstr "opcje wypychania nie mogą zawierać znaków końca wiersza"
 
-#: builtin/range-diff.c:8
+#: builtin/range-diff.c:9
 msgid "git range-diff [<options>] <old-base>..<old-tip> <new-base>..<new-tip>"
 msgstr ""
 "git range-diff [<opcje>] <stara-podstawa>..<stary-czubek> <nowa-podstawa>.."
 "<nowy-czubek>"
 
-#: builtin/range-diff.c:9
+#: builtin/range-diff.c:10
 msgid "git range-diff [<options>] <old-tip>...<new-tip>"
 msgstr "git range-diff [<opcje>] <stary-czubek>...<nowy-czubek>"
 
-#: builtin/range-diff.c:10
+#: builtin/range-diff.c:11
 msgid "git range-diff [<options>] <base> <old-tip> <new-tip>"
 msgstr "git range-diff [<opcje>] <podstawa> <stary-czubek> <nowy-czubek>"
 
-#: builtin/range-diff.c:22
+#: builtin/range-diff.c:28
 msgid "Percentage by which creation is weighted"
 msgstr "Procent, według jakiego ważone jest tworzenie"
 
-#: builtin/range-diff.c:24
+#: builtin/range-diff.c:30
 msgid "use simple diff colors"
 msgstr "użyj prostych kolorów zmian"
 
-#: builtin/range-diff.c:26
+#: builtin/range-diff.c:32
 msgid "notes"
 msgstr "uwagi"
 
-#: builtin/range-diff.c:26
+#: builtin/range-diff.c:32
 msgid "passed to 'git log'"
 msgstr "przekazywane do „git log”"
 
-#: builtin/range-diff.c:50 builtin/range-diff.c:54
+#: builtin/range-diff.c:35
+msgid "only emit output related to the first range"
+msgstr "daj tylko wyjście powiązane z pierwszym zakresem"
+
+#: builtin/range-diff.c:37
+msgid "only emit output related to the second range"
+msgstr "daj tylko wyjście powiązane z drugim zakresem"
+
+#: builtin/range-diff.c:60 builtin/range-diff.c:64
 #, c-format
-msgid "no .. in range: '%s'"
-msgstr "brak .. w zakresie: „%s”"
+msgid "not a commit range: '%s'"
+msgstr "nie jest zakresem zapisów: „%s”"
 
-#: builtin/range-diff.c:64
+#: builtin/range-diff.c:74
 msgid "single arg format must be symmetric range"
 msgstr "format w pojedynczym argumencie musi być symetrycznym zakresem"
 
-#: builtin/range-diff.c:79
+#: builtin/range-diff.c:89
 msgid "need two commit ranges"
 msgstr "potrzeba dwóch zakresów zapisów"
 
@@ -19058,193 +19464,193 @@ msgstr ""
 msgid "git rebase --continue | --abort | --skip | --edit-todo"
 msgstr "git rebase --continue | --abort | --skip | --edit-todo"
 
-#: builtin/rebase.c:193 builtin/rebase.c:217 builtin/rebase.c:244
+#: builtin/rebase.c:195 builtin/rebase.c:219 builtin/rebase.c:246
 #, c-format
 msgid "unusable todo list: '%s'"
 msgstr "lista zadań do zrobienia się nie nadaje: „%s”"
 
-#: builtin/rebase.c:310
+#: builtin/rebase.c:312
 #, c-format
 msgid "could not create temporary %s"
 msgstr "nie można utworzyć tymczasowego %s"
 
-#: builtin/rebase.c:316
+#: builtin/rebase.c:318
 msgid "could not mark as interactive"
 msgstr "nie można oznaczyć jako interaktywne"
 
-#: builtin/rebase.c:369
+#: builtin/rebase.c:371
 msgid "could not generate todo list"
 msgstr "nie można wygenerować listy zadań do zrobienia"
 
-#: builtin/rebase.c:411
+#: builtin/rebase.c:413
 msgid "a base commit must be provided with --upstream or --onto"
 msgstr "zapis podstawy należy podać z --upstream lub --onto"
 
-#: builtin/rebase.c:480
+#: builtin/rebase.c:482
 msgid "git rebase--interactive [<options>]"
 msgstr "git rebase--interactive [<opcje>]"
 
-#: builtin/rebase.c:493 builtin/rebase.c:1388
+#: builtin/rebase.c:495 builtin/rebase.c:1394
 msgid "keep commits which start empty"
 msgstr "zachowaj zapisy, które zaczynają puste"
 
-#: builtin/rebase.c:497 builtin/revert.c:128
+#: builtin/rebase.c:499 builtin/revert.c:128
 msgid "allow commits with empty messages"
 msgstr "pozwól na zapisy z pustymi komunikatami"
 
-#: builtin/rebase.c:499
+#: builtin/rebase.c:501
 msgid "rebase merge commits"
 msgstr "przestawiaj zapisy scaleń"
 
-#: builtin/rebase.c:501
+#: builtin/rebase.c:503
 msgid "keep original branch points of cousins"
 msgstr "zachowaj pierwotne rozgałęzienia kuzynów"
 
-#: builtin/rebase.c:503
+#: builtin/rebase.c:505
 msgid "move commits that begin with squash!/fixup!"
 msgstr "przenieś zapisy, które zaczynają się od squash!/fixup!"
 
-#: builtin/rebase.c:504
+#: builtin/rebase.c:506
 msgid "sign commits"
 msgstr "podpisuj zapisy"
 
-#: builtin/rebase.c:506 builtin/rebase.c:1327
+#: builtin/rebase.c:508 builtin/rebase.c:1333
 msgid "display a diffstat of what changed upstream"
 msgstr "wyświetl statystyki zmian nadrzędnych"
 
-#: builtin/rebase.c:508
+#: builtin/rebase.c:510
 msgid "continue rebase"
 msgstr "kontynuuj przestawianie"
 
-#: builtin/rebase.c:510
+#: builtin/rebase.c:512
 msgid "skip commit"
 msgstr "pomiń zapis"
 
-#: builtin/rebase.c:511
+#: builtin/rebase.c:513
 msgid "edit the todo list"
 msgstr "edytuj listę zadań do zrobienia"
 
-#: builtin/rebase.c:513
+#: builtin/rebase.c:515
 msgid "show the current patch"
 msgstr "pokaż bieżącą łatkę"
 
-#: builtin/rebase.c:516
+#: builtin/rebase.c:518
 msgid "shorten commit ids in the todo list"
 msgstr "skróć identyfikatory zapisów na liście zadań do zrobienia"
 
-#: builtin/rebase.c:518
+#: builtin/rebase.c:520
 msgid "expand commit ids in the todo list"
 msgstr "rozwiń identyfikatory zapisów na liście zadań do zrobienia"
 
-#: builtin/rebase.c:520
+#: builtin/rebase.c:522
 msgid "check the todo list"
 msgstr "sprawdź listę zadań do zrobienia"
 
-#: builtin/rebase.c:522
+#: builtin/rebase.c:524
 msgid "rearrange fixup/squash lines"
 msgstr "zmień kolejność wierszy fixup/squash"
 
-#: builtin/rebase.c:524
+#: builtin/rebase.c:526
 msgid "insert exec commands in todo list"
 msgstr "wstaw polecenia exec na listę zadań do zrobienia"
 
-#: builtin/rebase.c:525
+#: builtin/rebase.c:527
 msgid "onto"
 msgstr "na"
 
-#: builtin/rebase.c:528
+#: builtin/rebase.c:530
 msgid "restrict-revision"
 msgstr "ogranicz-rewizję"
 
-#: builtin/rebase.c:528
+#: builtin/rebase.c:530
 msgid "restrict revision"
 msgstr "ogranicz rewizję"
 
-#: builtin/rebase.c:530
+#: builtin/rebase.c:532
 msgid "squash-onto"
 msgstr "spłaszcz-na"
 
-#: builtin/rebase.c:531
+#: builtin/rebase.c:533
 msgid "squash onto"
 msgstr "spłaszcz na"
 
-#: builtin/rebase.c:533
+#: builtin/rebase.c:535
 msgid "the upstream commit"
 msgstr "zapis głównego nurtu"
 
-#: builtin/rebase.c:535
+#: builtin/rebase.c:537
 msgid "head-name"
 msgstr "nazwa-czoła"
 
-#: builtin/rebase.c:535
+#: builtin/rebase.c:537
 msgid "head name"
 msgstr "nazwa czoła"
 
-#: builtin/rebase.c:540
+#: builtin/rebase.c:542
 msgid "rebase strategy"
 msgstr "strategia przestawiania"
 
-#: builtin/rebase.c:541
+#: builtin/rebase.c:543
 msgid "strategy-opts"
 msgstr "opcje-strategii"
 
-#: builtin/rebase.c:542
+#: builtin/rebase.c:544
 msgid "strategy options"
 msgstr "opcje strategii"
 
-#: builtin/rebase.c:543
+#: builtin/rebase.c:545
 msgid "switch-to"
 msgstr "przełącz-na"
 
-#: builtin/rebase.c:544
+#: builtin/rebase.c:546
 msgid "the branch or commit to checkout"
 msgstr "gałąź lub zapis do wybrania"
 
-#: builtin/rebase.c:545
+#: builtin/rebase.c:547
 msgid "onto-name"
 msgstr "nazwa-na"
 
-#: builtin/rebase.c:545
+#: builtin/rebase.c:547
 msgid "onto name"
 msgstr "nazwa rewizji „na”"
 
-#: builtin/rebase.c:546
+#: builtin/rebase.c:548
 msgid "cmd"
 msgstr "polecenie"
 
-#: builtin/rebase.c:546
+#: builtin/rebase.c:548
 msgid "the command to run"
 msgstr "polecenie do wykonania"
 
-#: builtin/rebase.c:549 builtin/rebase.c:1421
+#: builtin/rebase.c:551 builtin/rebase.c:1427
 msgid "automatically re-schedule any `exec` that fails"
 msgstr "automatycznie przeplanuj każdy nieudany „exec”"
 
-#: builtin/rebase.c:565
+#: builtin/rebase.c:567
 msgid "--[no-]rebase-cousins has no effect without --rebase-merges"
 msgstr "--[no-]rebase-cousins nic nie robi bez --rebase-merges"
 
-#: builtin/rebase.c:581
+#: builtin/rebase.c:583
 #, c-format
 msgid "%s requires the merge backend"
 msgstr "%s wymaga silnika scalenia"
 
-#: builtin/rebase.c:624
+#: builtin/rebase.c:626
 #, c-format
 msgid "could not get 'onto': '%s'"
 msgstr "nie można uzyskać „onto”: „%s”"
 
-#: builtin/rebase.c:641
+#: builtin/rebase.c:643
 #, c-format
 msgid "invalid orig-head: '%s'"
 msgstr "nieprawidłowe pierwotne czoło: „%s”"
 
-#: builtin/rebase.c:666
+#: builtin/rebase.c:668
 #, c-format
 msgid "ignoring invalid allow_rerere_autoupdate: '%s'"
 msgstr "pomijanie błędnego allow_rerere_autoupdate: „%s”"
 
-#: builtin/rebase.c:811 git-rebase--preserve-merges.sh:81
+#: builtin/rebase.c:813 git-rebase--preserve-merges.sh:81
 msgid ""
 "Resolve all conflicts manually, mark them as resolved with\n"
 "\"git add/rm <conflicted_files>\", then run \"git rebase --continue\".\n"
@@ -19258,7 +19664,7 @@ msgstr ""
 "Aby przerwać i powrócić do stanu sprzed „git rebase”, wykonaj „git rebase --"
 "abort”."
 
-#: builtin/rebase.c:894
+#: builtin/rebase.c:896
 #, c-format
 msgid ""
 "\n"
@@ -19277,7 +19683,7 @@ msgstr ""
 "\n"
 "Z tego powodu git nie może ich przestawić."
 
-#: builtin/rebase.c:1220
+#: builtin/rebase.c:1227
 #, c-format
 msgid ""
 "unrecognized empty type '%s'; valid values are \"drop\", \"keep\", and \"ask"
@@ -19286,7 +19692,7 @@ msgstr ""
 "nierozpoznany pusty rodzaj „%s”; prawidłowe wartości to „drop”, „keep” i "
 "„ask”."
 
-#: builtin/rebase.c:1238
+#: builtin/rebase.c:1245
 #, c-format
 msgid ""
 "%s\n"
@@ -19303,7 +19709,7 @@ msgstr ""
 "    git rebase '<gałąź>'\n"
 "\n"
 
-#: builtin/rebase.c:1254
+#: builtin/rebase.c:1261
 #, c-format
 msgid ""
 "If you wish to set tracking information for this branch you can do so with:\n"
@@ -19316,147 +19722,147 @@ msgstr ""
 "    git branch --set-upstream-to=%s/<gałąź> %s\n"
 "\n"
 
-#: builtin/rebase.c:1284
+#: builtin/rebase.c:1291
 msgid "exec commands cannot contain newlines"
 msgstr "polecenia exec nie mogą zawierać znaków nowego wiersza"
 
-#: builtin/rebase.c:1288
+#: builtin/rebase.c:1295
 msgid "empty exec command"
 msgstr "puste polecenie exec"
 
-#: builtin/rebase.c:1318
+#: builtin/rebase.c:1324
 msgid "rebase onto given branch instead of upstream"
 msgstr "przestaw na podaną gałąź zamiast na główny nurt"
 
-#: builtin/rebase.c:1320
+#: builtin/rebase.c:1326
 msgid "use the merge-base of upstream and branch as the current base"
 msgstr "użyj podstawy scalania głównego nurtu i gałęzi jako bieżącej podstawy"
 
-#: builtin/rebase.c:1322
+#: builtin/rebase.c:1328
 msgid "allow pre-rebase hook to run"
 msgstr "pozwól wykonać skrypt pre-rebase"
 
-#: builtin/rebase.c:1324
+#: builtin/rebase.c:1330
 msgid "be quiet. implies --no-stat"
 msgstr "bądź cicho. zakłada --no-stat"
 
-#: builtin/rebase.c:1330
+#: builtin/rebase.c:1336
 msgid "do not show diffstat of what changed upstream"
 msgstr "nie pokazuj statystyk różnic ze zmian głównego nurtu"
 
-#: builtin/rebase.c:1333
+#: builtin/rebase.c:1339
 msgid "add a Signed-off-by trailer to each commit"
 msgstr "dodaj końcówkę Signed-off-by do każdego zapisu"
 
-#: builtin/rebase.c:1336
+#: builtin/rebase.c:1342
 msgid "make committer date match author date"
 msgstr "ustaw datę złożenia na datę utworzenia"
 
-#: builtin/rebase.c:1338
+#: builtin/rebase.c:1344
 msgid "ignore author date and use current date"
 msgstr "pomiń datę utworzenia i użyj bieżącej"
 
-#: builtin/rebase.c:1340
+#: builtin/rebase.c:1346
 msgid "synonym of --reset-author-date"
 msgstr "zamiennik na --reset-author-date"
 
-#: builtin/rebase.c:1342 builtin/rebase.c:1346
+#: builtin/rebase.c:1348 builtin/rebase.c:1352
 msgid "passed to 'git apply'"
 msgstr "przekaż do „git apply”"
 
-#: builtin/rebase.c:1344
+#: builtin/rebase.c:1350
 msgid "ignore changes in whitespace"
 msgstr "ignoruj zmiany w białych znakach"
 
-#: builtin/rebase.c:1348 builtin/rebase.c:1351
+#: builtin/rebase.c:1354 builtin/rebase.c:1357
 msgid "cherry-pick all commits, even if unchanged"
 msgstr "dobierz wszystkie zapisy, nawet jeśli niezmienione"
 
-#: builtin/rebase.c:1353
+#: builtin/rebase.c:1359
 msgid "continue"
 msgstr "kontynuuj"
 
-#: builtin/rebase.c:1356
+#: builtin/rebase.c:1362
 msgid "skip current patch and continue"
 msgstr "pomiń obecną łatkę i kontynuuj"
 
-#: builtin/rebase.c:1358
+#: builtin/rebase.c:1364
 msgid "abort and check out the original branch"
 msgstr "przerwij i wybierz pierwotną gałąź"
 
-#: builtin/rebase.c:1361
+#: builtin/rebase.c:1367
 msgid "abort but keep HEAD where it is"
 msgstr "przerwij, ale zostaw HEAD, gdzie jest"
 
-#: builtin/rebase.c:1362
+#: builtin/rebase.c:1368
 msgid "edit the todo list during an interactive rebase"
 msgstr "edytuj listę zadań do zrobienia podczas interaktywnego przestawiania"
 
-#: builtin/rebase.c:1365
+#: builtin/rebase.c:1371
 msgid "show the patch file being applied or merged"
 msgstr "pokaż plik łatki właśnie stosowanej lub scalanej"
 
-#: builtin/rebase.c:1368
+#: builtin/rebase.c:1374
 msgid "use apply strategies to rebase"
 msgstr "użyj strategii stosowania do przestawiania"
 
-#: builtin/rebase.c:1372
+#: builtin/rebase.c:1378
 msgid "use merging strategies to rebase"
 msgstr "użyj strategii scalania do przestawiania"
 
-#: builtin/rebase.c:1376
+#: builtin/rebase.c:1382
 msgid "let the user edit the list of commits to rebase"
 msgstr "pozwól użytkownikowi edytować listę zapisów do przestawienia"
 
-#: builtin/rebase.c:1380
+#: builtin/rebase.c:1386
 msgid "(DEPRECATED) try to recreate merges instead of ignoring them"
 msgstr "(PRZESTARZAŁE) spróbuj odtworzyć scalenia zamiast je pomijać"
 
-#: builtin/rebase.c:1385
+#: builtin/rebase.c:1391
 msgid "how to handle commits that become empty"
 msgstr "jak traktować zapisy, które staną się puste"
 
-#: builtin/rebase.c:1392
+#: builtin/rebase.c:1398
 msgid "move commits that begin with squash!/fixup! under -i"
 msgstr "przenieś zapisy, które zaczynają się od squash!/fixup! pod -i"
 
-#: builtin/rebase.c:1399
+#: builtin/rebase.c:1405
 msgid "add exec lines after each commit of the editable list"
 msgstr "dodaj wiersz exec po każdym zapisie z edytowalnej listy"
 
-#: builtin/rebase.c:1403
+#: builtin/rebase.c:1409
 msgid "allow rebasing commits with empty messages"
 msgstr "pozwól przestawiać zapisy z pustymi komunikatami"
 
-#: builtin/rebase.c:1407
+#: builtin/rebase.c:1413
 msgid "try to rebase merges instead of skipping them"
 msgstr "spróbuj przestawić scalenia zamiast je pomijać"
 
-#: builtin/rebase.c:1410
+#: builtin/rebase.c:1416
 msgid "use 'merge-base --fork-point' to refine upstream"
 msgstr "użyj „git merge-base --fork-point”, aby poprawić gałąź nadrzędną"
 
-#: builtin/rebase.c:1412
+#: builtin/rebase.c:1418
 msgid "use the given merge strategy"
 msgstr "użyj podanej strategii scalania"
 
-#: builtin/rebase.c:1414 builtin/revert.c:115
+#: builtin/rebase.c:1420 builtin/revert.c:115
 msgid "option"
 msgstr "opcja"
 
-#: builtin/rebase.c:1415
+#: builtin/rebase.c:1421
 msgid "pass the argument through to the merge strategy"
 msgstr "przekaż argument do strategii scalania"
 
-#: builtin/rebase.c:1418
+#: builtin/rebase.c:1424
 msgid "rebase all reachable commits up to the root(s)"
 msgstr "przestaw wszystkie osiągalne zapisy aż do korzenia"
 
-#: builtin/rebase.c:1423
+#: builtin/rebase.c:1429
 msgid "apply all changes, even those already present upstream"
 msgstr "zastosuj wszystkie zmiany, nawet te już obecne w głównym nurcie"
 
-#: builtin/rebase.c:1440
+#: builtin/rebase.c:1446
 msgid ""
 "the rebase.useBuiltin support has been removed!\n"
 "See its entry in 'git help config' for details."
@@ -19464,43 +19870,43 @@ msgstr ""
 "wsparcie rebase.useBuiltin zostało usunięte!\n"
 "Zobacz szczegóły pod jego opisem w „git help config”."
 
-#: builtin/rebase.c:1446
+#: builtin/rebase.c:1452
 msgid "It looks like 'git am' is in progress. Cannot rebase."
 msgstr "Wygląda, że trwa „git am”. Nie można przestawić."
 
-#: builtin/rebase.c:1487
+#: builtin/rebase.c:1493
 msgid ""
 "git rebase --preserve-merges is deprecated. Use --rebase-merges instead."
 msgstr ""
 "git rebase --preserve-merges jest przestarzałe. Użyj zamiast tego --rebase-"
 "merges."
 
-#: builtin/rebase.c:1492
+#: builtin/rebase.c:1498
 msgid "cannot combine '--keep-base' with '--onto'"
 msgstr "„--keep-base” i „--onto” się wykluczają."
 
-#: builtin/rebase.c:1494
+#: builtin/rebase.c:1500
 msgid "cannot combine '--keep-base' with '--root'"
 msgstr "„--keep-base” i „--root” się wykluczają."
 
-#: builtin/rebase.c:1498
+#: builtin/rebase.c:1504
 msgid "cannot combine '--root' with '--fork-point'"
 msgstr "„--keep-base” i „--fork-point” się wykluczają."
 
-#: builtin/rebase.c:1501
+#: builtin/rebase.c:1507
 msgid "No rebase in progress?"
 msgstr "Nie trwa żadne przestawianie?"
 
-#: builtin/rebase.c:1505
+#: builtin/rebase.c:1511
 msgid "The --edit-todo action can only be used during interactive rebase."
 msgstr ""
 "Akcja --edit-todo może być użyta tylko podczas interaktywnego przestawiania."
 
-#: builtin/rebase.c:1528 t/helper/test-fast-rebase.c:123
+#: builtin/rebase.c:1534 t/helper/test-fast-rebase.c:123
 msgid "Cannot read HEAD"
 msgstr "Nie można odczytać HEAD"
 
-#: builtin/rebase.c:1540
+#: builtin/rebase.c:1546
 msgid ""
 "You must edit all merge conflicts and then\n"
 "mark them as resolved using git add"
@@ -19508,16 +19914,16 @@ msgstr ""
 "Musisz edytować wszystkie konflikty scalania\n"
 "i oznaczyć je jako rozwiązane przy pomocy git add"
 
-#: builtin/rebase.c:1559
+#: builtin/rebase.c:1565
 msgid "could not discard worktree changes"
 msgstr "nie można odrzucić zmian w drzewie roboczym"
 
-#: builtin/rebase.c:1578
+#: builtin/rebase.c:1584
 #, c-format
 msgid "could not move back to %s"
 msgstr "nie można cofnąć do %s"
 
-#: builtin/rebase.c:1624
+#: builtin/rebase.c:1630
 #, c-format
 msgid ""
 "It seems that there is already a %s directory, and\n"
@@ -19538,131 +19944,131 @@ msgstr ""
 "i wykonaj mnie ponownie. Przerywam na wypadek, gdyby było tam\n"
 "coś cennego.\n"
 
-#: builtin/rebase.c:1652
+#: builtin/rebase.c:1658
 msgid "switch `C' expects a numerical value"
 msgstr "przełącznik „C” oczekuje wartości liczbowej"
 
-#: builtin/rebase.c:1694
+#: builtin/rebase.c:1700
 #, c-format
 msgid "Unknown mode: %s"
 msgstr "Nieznany tryb: %s"
 
-#: builtin/rebase.c:1733
+#: builtin/rebase.c:1739
 msgid "--strategy requires --merge or --interactive"
 msgstr "--strategy wymaga --merge lub --interactive"
 
-#: builtin/rebase.c:1763
+#: builtin/rebase.c:1769
 msgid "cannot combine apply options with merge options"
 msgstr "nie można łączyć opcji stosowania z opcjami scalania"
 
-#: builtin/rebase.c:1776
+#: builtin/rebase.c:1782
 #, c-format
 msgid "Unknown rebase backend: %s"
 msgstr "Nieznany silnik przestawiania: %s"
 
-#: builtin/rebase.c:1806
+#: builtin/rebase.c:1812
 msgid "--reschedule-failed-exec requires --exec or --interactive"
 msgstr "--reschedule-failed wymaga --exec lub --interactive"
 
-#: builtin/rebase.c:1826
+#: builtin/rebase.c:1832
 msgid "cannot combine '--preserve-merges' with '--rebase-merges'"
 msgstr "„--preserve-merges” i „--rebase-merges” się wykluczają"
 
-#: builtin/rebase.c:1830
+#: builtin/rebase.c:1836
 msgid ""
 "error: cannot combine '--preserve-merges' with '--reschedule-failed-exec'"
 msgstr "błąd: „--preserve-merges” i „--reschedule-failed-exec” się wykluczają"
 
-#: builtin/rebase.c:1854
+#: builtin/rebase.c:1860
 #, c-format
 msgid "invalid upstream '%s'"
 msgstr "nieprawidłowa gałąź nadrzędna „%s”"
 
-#: builtin/rebase.c:1860
+#: builtin/rebase.c:1866
 msgid "Could not create new root commit"
 msgstr "Nie można utworzyć nowego zapisu korzenia"
 
-#: builtin/rebase.c:1886
+#: builtin/rebase.c:1892
 #, c-format
 msgid "'%s': need exactly one merge base with branch"
 msgstr "„%s”: potrzeba dokładnie jednej podstawy scalania z gałęzią"
 
-#: builtin/rebase.c:1889
+#: builtin/rebase.c:1895
 #, c-format
 msgid "'%s': need exactly one merge base"
 msgstr "„%s”: potrzeba dokładnie jednej podstawy scalania"
 
-#: builtin/rebase.c:1897
+#: builtin/rebase.c:1903
 #, c-format
 msgid "Does not point to a valid commit '%s'"
 msgstr "Nie wskazuje na prawidłowy zapis „%s”"
 
-#: builtin/rebase.c:1923
+#: builtin/rebase.c:1931
 #, c-format
 msgid "fatal: no such branch/commit '%s'"
 msgstr "błąd krytyczny: brak gałęzi/zapisu „%s”"
 
-#: builtin/rebase.c:1931 builtin/submodule--helper.c:40
+#: builtin/rebase.c:1939 builtin/submodule--helper.c:40
 #: builtin/submodule--helper.c:2414
 #, c-format
 msgid "No such ref: %s"
 msgstr "Nie ma takiej referencji: %s"
 
-#: builtin/rebase.c:1942
+#: builtin/rebase.c:1950
 msgid "Could not resolve HEAD to a revision"
 msgstr "Nie można rozwiązać HEAD do rewizji"
 
-#: builtin/rebase.c:1963
+#: builtin/rebase.c:1971
 msgid "Please commit or stash them."
 msgstr "Złóż je lub dodaj do schowka."
 
-#: builtin/rebase.c:1999
+#: builtin/rebase.c:2007
 #, c-format
 msgid "could not switch to %s"
 msgstr "nie można przełączyć na %s"
 
-#: builtin/rebase.c:2010
+#: builtin/rebase.c:2018
 msgid "HEAD is up to date."
 msgstr "HEAD jest aktualne."
 
-#: builtin/rebase.c:2012
+#: builtin/rebase.c:2020
 #, c-format
 msgid "Current branch %s is up to date.\n"
 msgstr "Obecna gałąź %s jest aktualna.\n"
 
-#: builtin/rebase.c:2020
+#: builtin/rebase.c:2028
 msgid "HEAD is up to date, rebase forced."
 msgstr "HEAD jest aktualne, wymuszono przestawianie."
 
-#: builtin/rebase.c:2022
+#: builtin/rebase.c:2030
 #, c-format
 msgid "Current branch %s is up to date, rebase forced.\n"
 msgstr "Bieżąca gałąź %s jest aktualna, wymuszono przestawianie.\n"
 
-#: builtin/rebase.c:2030
+#: builtin/rebase.c:2038
 msgid "The pre-rebase hook refused to rebase."
 msgstr "Skrypt pre-rebase odmówił przestawiania."
 
-#: builtin/rebase.c:2037
+#: builtin/rebase.c:2045
 #, c-format
 msgid "Changes to %s:\n"
 msgstr "Zmiany w %s:\n"
 
-#: builtin/rebase.c:2040
+#: builtin/rebase.c:2048
 #, c-format
 msgid "Changes from %s to %s:\n"
 msgstr "Zmiany z %s na %s:\n"
 
-#: builtin/rebase.c:2065
+#: builtin/rebase.c:2073
 #, c-format
 msgid "First, rewinding head to replay your work on top of it...\n"
 msgstr "Najpierw cofanie czoła gałęzi, aby odtworzyć na nim pracę...\n"
 
-#: builtin/rebase.c:2074
+#: builtin/rebase.c:2082
 msgid "Could not detach HEAD"
 msgstr "Nie można odłączyć HEAD"
 
-#: builtin/rebase.c:2083
+#: builtin/rebase.c:2091
 #, c-format
 msgid "Fast-forwarded %s to %s.\n"
 msgstr "Przewinięto %s do %s.\n"
@@ -19756,36 +20162,36 @@ msgstr "git reflog exists <referencja>"
 msgid "'%s' is not a valid timestamp"
 msgstr "„%s” nie jest prawidłowym znacznikiem czasu"
 
-#: builtin/reflog.c:606
+#: builtin/reflog.c:609
 #, c-format
 msgid "Marking reachable objects..."
 msgstr "Oznaczanie osiągalnych obiektów..."
 
-#: builtin/reflog.c:644
+#: builtin/reflog.c:647
 #, c-format
 msgid "%s points nowhere!"
 msgstr "%s nigdzie nie wskazuje!"
 
-#: builtin/reflog.c:696
+#: builtin/reflog.c:699
 msgid "no reflog specified to delete"
 msgstr "nie podano dziennika referencji do skasowania"
 
-#: builtin/reflog.c:705
+#: builtin/reflog.c:708
 #, c-format
 msgid "not a reflog: %s"
 msgstr "nie jest dziennikiem referencji: %s"
 
-#: builtin/reflog.c:710
+#: builtin/reflog.c:713
 #, c-format
 msgid "no reflog for '%s'"
 msgstr "„%s” nie ma dziennika referencji"
 
-#: builtin/reflog.c:756
+#: builtin/reflog.c:759
 #, c-format
 msgid "invalid ref format: %s"
 msgstr "nieprawidłowy format referencji: %s"
 
-#: builtin/reflog.c:765
+#: builtin/reflog.c:768
 msgid "git reflog [ show | expire | delete | exists ]"
 msgstr "git reflog [ show | expire | delete | exists ]"
 
@@ -20306,11 +20712,11 @@ msgstr "Nie znaleziono takiego adresu URL: %s"
 msgid "Will not delete all non-push URLs"
 msgstr "Nie skasuje wszystkich adresów nie do wypychania"
 
-#: builtin/repack.c:25
+#: builtin/repack.c:26
 msgid "git repack [<options>]"
 msgstr "git repack [<opcje>]"
 
-#: builtin/repack.c:30
+#: builtin/repack.c:31
 msgid ""
 "Incremental repacks are incompatible with bitmap indexes.  Use\n"
 "--no-write-bitmap-index or disable the pack.writebitmaps configuration."
@@ -20318,118 +20724,118 @@ msgstr ""
 "Przyrostowe przepakowania są niekompatybilne z indeksami bitmap.  Użyj\n"
 "--no-write-bitmap-index lub wyłącz konfigurację pack.writebitmaps."
 
-#: builtin/repack.c:197
+#: builtin/repack.c:198
 msgid "could not start pack-objects to repack promisor objects"
 msgstr "nie można uruchomić pack-objects, żeby przepakować obiecujące obiekty"
 
-#: builtin/repack.c:268 builtin/repack.c:447
+#: builtin/repack.c:270 builtin/repack.c:446
 msgid "repack: Expecting full hex object ID lines only from pack-objects."
 msgstr ""
 "repack: Oczekiwano tylko wierszy z pełnych szesnastkowych identyfikatorów "
 "obiektów z pack-objects."
 
-#: builtin/repack.c:295
+#: builtin/repack.c:294
 msgid "could not finish pack-objects to repack promisor objects"
 msgstr "nie można ukończyć pack-objects, żeby przepakować obiecujące obiekty"
 
-#: builtin/repack.c:323
+#: builtin/repack.c:322
 msgid "pack everything in a single pack"
 msgstr "spakuj wszystko w jedną paczkę"
 
-#: builtin/repack.c:325
+#: builtin/repack.c:324
 msgid "same as -a, and turn unreachable objects loose"
 msgstr "to samo, co -a, i zamień nieosiągalne obiekty w luźne"
 
-#: builtin/repack.c:328
+#: builtin/repack.c:327
 msgid "remove redundant packs, and run git-prune-packed"
 msgstr "usuń zbędne paczki i wykonaj git-prune-packed"
 
-#: builtin/repack.c:330
+#: builtin/repack.c:329
 msgid "pass --no-reuse-delta to git-pack-objects"
 msgstr "przekaż --no-reuse-delta do git-pack-objects"
 
-#: builtin/repack.c:332
+#: builtin/repack.c:331
 msgid "pass --no-reuse-object to git-pack-objects"
 msgstr "przekaż --no-reuse-object do git-pack-objects"
 
-#: builtin/repack.c:334
+#: builtin/repack.c:333
 msgid "do not run git-update-server-info"
 msgstr "nie wykonuj git-update-server-info"
 
-#: builtin/repack.c:337
+#: builtin/repack.c:336
 msgid "pass --local to git-pack-objects"
 msgstr "przekaż --local do git-pack-objects"
 
-#: builtin/repack.c:339
+#: builtin/repack.c:338
 msgid "write bitmap index"
 msgstr "zapisz indeks bitmapy"
 
-#: builtin/repack.c:341
+#: builtin/repack.c:340
 msgid "pass --delta-islands to git-pack-objects"
 msgstr "przekaż --delta-islands do git-pack-objects"
 
-#: builtin/repack.c:342
+#: builtin/repack.c:341
 msgid "approxidate"
 msgstr "przybliżona-data"
 
-#: builtin/repack.c:343
+#: builtin/repack.c:342
 msgid "with -A, do not loosen objects older than this"
 msgstr "z -A, nie luzuj obiektów starszych niż podana data"
 
-#: builtin/repack.c:345
+#: builtin/repack.c:344
 msgid "with -a, repack unreachable objects"
 msgstr "z -a przepakuj wszystkie nieosiągalne obiekty"
 
-#: builtin/repack.c:347
+#: builtin/repack.c:346
 msgid "size of the window used for delta compression"
 msgstr "rozmiar okna użytego do kompresji delt"
 
-#: builtin/repack.c:348 builtin/repack.c:354
+#: builtin/repack.c:347 builtin/repack.c:353
 msgid "bytes"
 msgstr "bajty"
 
-#: builtin/repack.c:349
+#: builtin/repack.c:348
 msgid "same as the above, but limit memory size instead of entries count"
 msgstr "jak wyżej, ale ogranicz rozmiar pamięci zamiast liczby elementów"
 
-#: builtin/repack.c:351
+#: builtin/repack.c:350
 msgid "limits the maximum delta depth"
 msgstr "ogranicza maksymalną głębokość delty"
 
-#: builtin/repack.c:353
+#: builtin/repack.c:352
 msgid "limits the maximum number of threads"
 msgstr "ogranicza maksymalną liczbę wątków"
 
-#: builtin/repack.c:355
+#: builtin/repack.c:354
 msgid "maximum size of each packfile"
 msgstr "maksymalny rozmiar pojedynczego pliku paczki"
 
-#: builtin/repack.c:357
+#: builtin/repack.c:356
 msgid "repack objects in packs marked with .keep"
 msgstr "przepakuj obiekty w paczki oznaczone przez .keep"
 
-#: builtin/repack.c:359
+#: builtin/repack.c:358
 msgid "do not repack this pack"
 msgstr "nie przepakowuj tej paczki"
 
-#: builtin/repack.c:369
+#: builtin/repack.c:368
 msgid "cannot delete packs in a precious-objects repo"
 msgstr "nie można usuwać paczek w repozytorium o cennych obiektach"
 
-#: builtin/repack.c:373
+#: builtin/repack.c:372
 msgid "--keep-unreachable and -A are incompatible"
 msgstr "--keep-unreachable i -A się wykluczają"
 
-#: builtin/repack.c:456
+#: builtin/repack.c:455
 msgid "Nothing new to pack."
 msgstr "Nic nowego do spakowania."
 
-#: builtin/repack.c:486
+#: builtin/repack.c:485
 #, c-format
 msgid "missing required file: %s"
 msgstr "brakuje wymaganego pliku: %s"
 
-#: builtin/repack.c:488
+#: builtin/repack.c:487
 #, c-format
 msgid "could not unlink: %s"
 msgstr "nie można usunąć przez unlink: %s"
@@ -20588,7 +20994,7 @@ msgstr "pierwotny zapis „%s” ma podpis GPG"
 
 #: builtin/replace.c:470
 msgid "the signature will be removed in the replacement commit!"
-msgstr "sygnatura zostanie usunięta w zastępczym rozwiązaniu!"
+msgstr "podpis zostanie usunięty w zastępczym zapisie!"
 
 #: builtin/replace.c:480
 #, c-format
@@ -20762,8 +21168,8 @@ msgstr "HEAD wskazuje teraz %s"
 msgid "Cannot do a %s reset in the middle of a merge."
 msgstr "Nie można wykonać resetu %s podczas scalania."
 
-#: builtin/reset.c:295 builtin/stash.c:520 builtin/stash.c:594
-#: builtin/stash.c:618
+#: builtin/reset.c:295 builtin/stash.c:587 builtin/stash.c:661
+#: builtin/stash.c:685
 msgid "be quiet, only report errors"
 msgstr "mniej komunikatów, wypisuj tylko błędy"
 
@@ -20847,19 +21253,19 @@ msgstr "Nie można zresetować pliku indeksu do rewizji „%s”."
 msgid "Could not write new index file."
 msgstr "Nie można zapisać nowego pliku indeksu."
 
-#: builtin/rev-list.c:499
+#: builtin/rev-list.c:534
 msgid "cannot combine --exclude-promisor-objects and --missing"
 msgstr "--exclude-promisor-objects i --missing się wykluczają"
 
-#: builtin/rev-list.c:560
+#: builtin/rev-list.c:595
 msgid "object filtering requires --objects"
 msgstr "filtrowanie obiektów wymaga --objects"
 
-#: builtin/rev-list.c:610
+#: builtin/rev-list.c:651
 msgid "rev-list does not support display of notes"
 msgstr "rev-list nie wspiera wyświetlania uwag"
 
-#: builtin/rev-list.c:615
+#: builtin/rev-list.c:656
 msgid "marked counting is incompatible with --objects"
 msgstr "znaczone zliczanie i --objects się wykluczają"
 
@@ -21106,52 +21512,52 @@ msgstr "git shortlog [<opcje>] [<zakres-rewizji>] [[--] <ścieżka>...]"
 msgid "git log --pretty=short | git shortlog [<options>]"
 msgstr "git log --pretty=short | git shortlog [<opcje>]"
 
-#: builtin/shortlog.c:135
+#: builtin/shortlog.c:123
 msgid "using multiple --group options with stdin is not supported"
 msgstr "użycie wielu opcji --group ze standardowym wejściem nie jest wspierane"
 
-#: builtin/shortlog.c:145
+#: builtin/shortlog.c:133
 msgid "using --group=trailer with stdin is not supported"
 msgstr "użycie --group=trailer ze standardowym wejściem nie jest wspierane"
 
-#: builtin/shortlog.c:335
+#: builtin/shortlog.c:323
 #, c-format
 msgid "unknown group type: %s"
 msgstr "nieznany rodzaj grupy: %s"
 
-#: builtin/shortlog.c:363
-msgid "Group by committer rather than author"
-msgstr "Grupuj według składającego, a nie autora"
+#: builtin/shortlog.c:351
+msgid "group by committer rather than author"
+msgstr "grupuj według składającego, a nie autora"
 
-#: builtin/shortlog.c:366
+#: builtin/shortlog.c:354
 msgid "sort output according to the number of commits per author"
 msgstr "posortuj wyjście według liczby zapisów na autora"
 
-#: builtin/shortlog.c:368
-msgid "Suppress commit descriptions, only provides commit count"
-msgstr "Pomiń opisy zapisów, podaje tylko liczbę zapisów"
+#: builtin/shortlog.c:356
+msgid "suppress commit descriptions, only provides commit count"
+msgstr "pomiń opisy zapisów, podaje tylko liczbę zapisów"
 
-#: builtin/shortlog.c:370
-msgid "Show the email address of each author"
-msgstr "Pokazuj adres e-mail każdego autora"
+#: builtin/shortlog.c:358
+msgid "show the email address of each author"
+msgstr "pokazuj adres e-mail każdego autora"
 
-#: builtin/shortlog.c:371
+#: builtin/shortlog.c:359
 msgid "<w>[,<i1>[,<i2>]]"
 msgstr "<w>[,<i1>[,<i2>]]"
 
-#: builtin/shortlog.c:372
-msgid "Linewrap output"
-msgstr "Zawijaj wiersze wyjścia"
+#: builtin/shortlog.c:360
+msgid "linewrap output"
+msgstr "zawijaj wiersze wyjścia"
 
-#: builtin/shortlog.c:374
+#: builtin/shortlog.c:362
 msgid "field"
 msgstr "pole"
 
-#: builtin/shortlog.c:375
-msgid "Group by field"
-msgstr "Grupuj według pola"
+#: builtin/shortlog.c:363
+msgid "group by field"
+msgstr "grupuj według pola"
 
-#: builtin/shortlog.c:403
+#: builtin/shortlog.c:391
 msgid "too many arguments given outside repository"
 msgstr "podano zbyt wiele argumentów poza repozytorium"
 
@@ -21354,71 +21760,71 @@ msgstr ""
 msgid "git sparse-checkout (init|list|set|add|reapply|disable) <options>"
 msgstr "git sparse-checkout (init|list|set|add|reapply|disable) <opcje>"
 
-#: builtin/sparse-checkout.c:50
+#: builtin/sparse-checkout.c:45
 msgid "git sparse-checkout list"
 msgstr "git sparse-checkout list"
 
-#: builtin/sparse-checkout.c:76
+#: builtin/sparse-checkout.c:71
 msgid "this worktree is not sparse (sparse-checkout file may not exist)"
 msgstr ""
 "to drzewo robocze nie jest rzadkie (plik rzadkiego wybrania może nie istnieć)"
 
-#: builtin/sparse-checkout.c:228
+#: builtin/sparse-checkout.c:223
 msgid "failed to create directory for sparse-checkout file"
 msgstr "nie można utworzyć katalogu dla pliku rzadkiego wybrania"
 
-#: builtin/sparse-checkout.c:269
+#: builtin/sparse-checkout.c:264
 msgid "unable to upgrade repository format to enable worktreeConfig"
 msgstr "nie można podnieść formatu repozytorium, aby włączyć worktreeConfig"
 
-#: builtin/sparse-checkout.c:271
+#: builtin/sparse-checkout.c:266
 msgid "failed to set extensions.worktreeConfig setting"
 msgstr "nie można ustawić konfiguracji extensions.worktreeConfig"
 
-#: builtin/sparse-checkout.c:288
+#: builtin/sparse-checkout.c:283
 msgid "git sparse-checkout init [--cone]"
 msgstr "git sparse-checkout init [--cone]"
 
-#: builtin/sparse-checkout.c:307
+#: builtin/sparse-checkout.c:302
 msgid "initialize the sparse-checkout in cone mode"
 msgstr "zainicjuj rzadkie wybranie w trybie stożka"
 
-#: builtin/sparse-checkout.c:344
+#: builtin/sparse-checkout.c:339
 #, c-format
 msgid "failed to open '%s'"
 msgstr "nie można otworzyć „%s”"
 
-#: builtin/sparse-checkout.c:401
+#: builtin/sparse-checkout.c:396
 #, c-format
 msgid "could not normalize path %s"
 msgstr "nie można unormować ścieżki %s"
 
-#: builtin/sparse-checkout.c:413
+#: builtin/sparse-checkout.c:408
 msgid "git sparse-checkout (set|add) (--stdin | <patterns>)"
 msgstr "git sparse-checkout (set|add) (--stdin | <wzorce>)"
 
-#: builtin/sparse-checkout.c:438
+#: builtin/sparse-checkout.c:433
 #, c-format
 msgid "unable to unquote C-style string '%s'"
 msgstr "nie można odcytować łańcucha w stylu C „%s”"
 
-#: builtin/sparse-checkout.c:492 builtin/sparse-checkout.c:516
+#: builtin/sparse-checkout.c:487 builtin/sparse-checkout.c:511
 msgid "unable to load existing sparse-checkout patterns"
 msgstr "nie można załadować istniejących wzorców rzadkiego wybrania"
 
-#: builtin/sparse-checkout.c:561
+#: builtin/sparse-checkout.c:556
 msgid "read patterns from standard in"
 msgstr "wczytaj wzorce ze standardowego wejścia"
 
-#: builtin/sparse-checkout.c:576
+#: builtin/sparse-checkout.c:571
 msgid "git sparse-checkout reapply"
 msgstr "git sparse-checkout reapply"
 
-#: builtin/sparse-checkout.c:595
+#: builtin/sparse-checkout.c:590
 msgid "git sparse-checkout disable"
 msgstr "git sparse-checkout disable"
 
-#: builtin/sparse-checkout.c:623
+#: builtin/sparse-checkout.c:618
 msgid "error while refreshing working directory"
 msgstr "błąd podczas odświeżania katalogu roboczego"
 
@@ -21508,153 +21914,164 @@ msgid "%s is not a valid reference"
 msgstr "%s nie jest prawidłową referencją."
 
 #: builtin/stash.c:225
-msgid "git stash clear with parameters is unimplemented"
-msgstr "Nie zaimplementowano parametrów w git stash clear"
+msgid "git stash clear with arguments is unimplemented"
+msgstr "nie zaimplementowano parametrów w git stash clear"
+
+#: builtin/stash.c:429
+#, c-format
+msgid ""
+"WARNING: Untracked file in way of tracked file!  Renaming\n"
+"            %s -> %s\n"
+"         to make room.\n"
+msgstr ""
+"OSTRZEŻENIE: Nieśledzony plik zawadza śledzonemu plikowi!  Zmienianie nazwy\n"
+"            %s -> %s\n"
+"         aby zwolnić miejsce.\n"
 
-#: builtin/stash.c:404
+#: builtin/stash.c:490
 msgid "cannot apply a stash in the middle of a merge"
 msgstr "nie można zastosować zmian ze schowka podczas scalania"
 
-#: builtin/stash.c:415
+#: builtin/stash.c:501
 #, c-format
 msgid "could not generate diff %s^!."
 msgstr "nie można wygenerować zmian %s^!."
 
-#: builtin/stash.c:422
+#: builtin/stash.c:508
 msgid "conflicts in index. Try without --index."
 msgstr "konflikty w indeksie. Spróbuj bez --index."
 
-#: builtin/stash.c:428
+#: builtin/stash.c:514
 msgid "could not save index tree"
 msgstr "nie można zapisać drzewa indeksu"
 
-#: builtin/stash.c:437
+#: builtin/stash.c:523
 msgid "could not restore untracked files from stash"
 msgstr "nie można przywrócić nieśledzonych plików ze schowka"
 
-#: builtin/stash.c:451
+#: builtin/stash.c:537
 #, c-format
 msgid "Merging %s with %s"
 msgstr "Scalanie %s z %s"
 
-#: builtin/stash.c:461
+#: builtin/stash.c:547
 msgid "Index was not unstashed."
 msgstr "Indeks nie został wyjęty ze schowka."
 
-#: builtin/stash.c:522 builtin/stash.c:620
+#: builtin/stash.c:589 builtin/stash.c:687
 msgid "attempt to recreate the index"
 msgstr "spróbuj odtworzyć indeks"
 
-#: builtin/stash.c:566
+#: builtin/stash.c:633
 #, c-format
 msgid "Dropped %s (%s)"
 msgstr "Porzucono %s (%s)"
 
-#: builtin/stash.c:569
+#: builtin/stash.c:636
 #, c-format
 msgid "%s: Could not drop stash entry"
 msgstr "%s: Nie można porzucić wpisu ze schowka"
 
-#: builtin/stash.c:582
+#: builtin/stash.c:649
 #, c-format
 msgid "'%s' is not a stash reference"
 msgstr "„%s” nie wskazuje na zmiany ze schowka"
 
-#: builtin/stash.c:632
+#: builtin/stash.c:699
 msgid "The stash entry is kept in case you need it again."
 msgstr "Wpis pozostaje w schowku w razie, gdyby miał być znów potrzebny."
 
-#: builtin/stash.c:655
+#: builtin/stash.c:722
 msgid "No branch name specified"
 msgstr "Nie określono nazwy gałęzi"
 
-#: builtin/stash.c:799 builtin/stash.c:836
+#: builtin/stash.c:866 builtin/stash.c:903
 #, c-format
 msgid "Cannot update %s with %s"
 msgstr "Nie można zaktualizować %s o %s"
 
-#: builtin/stash.c:817 builtin/stash.c:1471 builtin/stash.c:1536
+#: builtin/stash.c:884 builtin/stash.c:1538 builtin/stash.c:1603
 msgid "stash message"
 msgstr "komunikat skrytki"
 
-#: builtin/stash.c:827
+#: builtin/stash.c:894
 msgid "\"git stash store\" requires one <commit> argument"
 msgstr "„git stash store” wymaga jednego argumentu z <zapisem>"
 
-#: builtin/stash.c:1042
+#: builtin/stash.c:1109
 msgid "No changes selected"
 msgstr "Nie wybrano zmian"
 
-#: builtin/stash.c:1142
+#: builtin/stash.c:1209
 msgid "You do not have the initial commit yet"
 msgstr "Nie masz jeszcze początkowego zapisu"
 
-#: builtin/stash.c:1169
+#: builtin/stash.c:1236
 msgid "Cannot save the current index state"
 msgstr "Nie można zapisać bieżącego stanu indeksu"
 
-#: builtin/stash.c:1178
+#: builtin/stash.c:1245
 msgid "Cannot save the untracked files"
 msgstr "Nie można zapisać nieśledzonych plików"
 
-#: builtin/stash.c:1189 builtin/stash.c:1198
+#: builtin/stash.c:1256 builtin/stash.c:1265
 msgid "Cannot save the current worktree state"
 msgstr "Nie można zapisać bieżącego stanu drzewa roboczego"
 
-#: builtin/stash.c:1226
+#: builtin/stash.c:1293
 msgid "Cannot record working tree state"
 msgstr "Nie można zapisać stanu drzewa roboczego"
 
-#: builtin/stash.c:1275
+#: builtin/stash.c:1342
 msgid "Can't use --patch and --include-untracked or --all at the same time"
 msgstr "Nie można jednocześnie użyć --patch i --include-untracked lub --all"
 
-#: builtin/stash.c:1291
+#: builtin/stash.c:1358
 msgid "Did you forget to 'git add'?"
 msgstr "Czyżby zabrakło „git add”?"
 
-#: builtin/stash.c:1306
+#: builtin/stash.c:1373
 msgid "No local changes to save"
 msgstr "Brak lokalnych zmian do zapisania"
 
-#: builtin/stash.c:1313
+#: builtin/stash.c:1380
 msgid "Cannot initialize stash"
 msgstr "Nie można zainicjować schowka"
 
-#: builtin/stash.c:1328
+#: builtin/stash.c:1395
 msgid "Cannot save the current status"
 msgstr "Nie można zachować bieżącego stanu"
 
-#: builtin/stash.c:1333
+#: builtin/stash.c:1400
 #, c-format
 msgid "Saved working directory and index state %s"
 msgstr "Zapisano katalog roboczy i stan indeksu %s"
 
-#: builtin/stash.c:1423
+#: builtin/stash.c:1490
 msgid "Cannot remove worktree changes"
 msgstr "Nie można usunąć zmian w drzewie roboczym"
 
-#: builtin/stash.c:1462 builtin/stash.c:1527
+#: builtin/stash.c:1529 builtin/stash.c:1594
 msgid "keep index"
 msgstr "zachowaj indeks"
 
-#: builtin/stash.c:1464 builtin/stash.c:1529
+#: builtin/stash.c:1531 builtin/stash.c:1596
 msgid "stash in patch mode"
 msgstr "dodaj do schowka w trybie łatki"
 
-#: builtin/stash.c:1465 builtin/stash.c:1530
+#: builtin/stash.c:1532 builtin/stash.c:1597
 msgid "quiet mode"
 msgstr "tryb cichy"
 
-#: builtin/stash.c:1467 builtin/stash.c:1532
+#: builtin/stash.c:1534 builtin/stash.c:1599
 msgid "include untracked files in stash"
 msgstr "uwzględnij nieśledzone pliki w schowku"
 
-#: builtin/stash.c:1469 builtin/stash.c:1534
+#: builtin/stash.c:1536 builtin/stash.c:1601
 msgid "include ignore files"
 msgstr "uwzględnij pomijane pliki"
 
-#: builtin/stash.c:1569
+#: builtin/stash.c:1636
 msgid ""
 "the stash.useBuiltin support has been removed!\n"
 "See its entry in 'git help config' for details."
@@ -21732,12 +22149,13 @@ msgstr ""
 "."
 
 #: builtin/submodule--helper.c:565
-msgid "Suppress output of entering each submodule command"
-msgstr "Powstrzymaj wyjście przy podawaniu każdego polecenia pod-modułu"
+msgid "suppress output of entering each submodule command"
+msgstr "powstrzymaj wyjście przy podawaniu każdego polecenia pod-modułu"
 
-#: builtin/submodule--helper.c:567 builtin/submodule--helper.c:1487
-msgid "Recurse into nested submodules"
-msgstr "Schodź do zagnieżdżonych pod-modułów"
+#: builtin/submodule--helper.c:567 builtin/submodule--helper.c:888
+#: builtin/submodule--helper.c:1487
+msgid "recurse into nested submodules"
+msgstr "schodź do zagnieżdżonych pod-modułów"
 
 #: builtin/submodule--helper.c:572
 msgid "git submodule--helper foreach [--quiet] [--recursive] [--] <command>"
@@ -21774,8 +22192,8 @@ msgid "Failed to register update mode for submodule path '%s'"
 msgstr "Nie można zarejestrować trybu aktualizacji do ścieżki pod-modułu „%s”"
 
 #: builtin/submodule--helper.c:709
-msgid "Suppress output for initializing a submodule"
-msgstr "Powstrzymaj wyjście przy inicjalizacji pod-modułu"
+msgid "suppress output for initializing a submodule"
+msgstr "powstrzymaj wyjście przy inicjalizacji pod-modułu"
 
 #: builtin/submodule--helper.c:714
 msgid "git submodule--helper init [<options>] [<path>]"
@@ -21797,18 +22215,14 @@ msgid "failed to recurse into submodule '%s'"
 msgstr "Nie można zejść do pod-modułu „%s”"
 
 #: builtin/submodule--helper.c:886 builtin/submodule--helper.c:1623
-msgid "Suppress submodule status output"
-msgstr "Powstrzymaj wyjście stanu pod-modułów"
+msgid "suppress submodule status output"
+msgstr "powstrzymaj wyjście stanu pod-modułów"
 
 #: builtin/submodule--helper.c:887
 msgid ""
-"Use commit stored in the index instead of the one stored in the submodule "
+"use commit stored in the index instead of the one stored in the submodule "
 "HEAD"
-msgstr "Użyj zapisu z indeksu zamiast tego z HEAD pod-modułu"
-
-#: builtin/submodule--helper.c:888
-msgid "recurse into nested submodules"
-msgstr "schodź do zagnieżdżonych pod-modułów"
+msgstr "użyj zapisu z indeksu zamiast tego z HEAD pod-modułu"
 
 #: builtin/submodule--helper.c:893
 msgid "git submodule status [--quiet] [--cached] [--recursive] [<path>...]"
@@ -21892,8 +22306,8 @@ msgid "failed to update remote for submodule '%s'"
 msgstr "nie można zaktualizować zdalnego repozytorium pod-modułu „%s”"
 
 #: builtin/submodule--helper.c:1485
-msgid "Suppress output of synchronizing submodule url"
-msgstr "Powstrzymaj wyjście przy synchronizacji adresu pod-modułu"
+msgid "suppress output of synchronizing submodule url"
+msgstr "powstrzymaj wyjście przy synchronizacji adresu pod-modułu"
 
 #: builtin/submodule--helper.c:1492
 msgid "git submodule--helper sync [--quiet] [--recursive] [<path>]"
@@ -21938,12 +22352,12 @@ msgid "Submodule '%s' (%s) unregistered for path '%s'\n"
 msgstr "Wyrejestrowano pod-moduł „%s” (%s) ze ścieżki „%s”\n"
 
 #: builtin/submodule--helper.c:1624
-msgid "Remove submodule working trees even if they contain local changes"
-msgstr "Usuń drzewa robocze pod-modułów nawet jeśli zawierają lokalne zmiany"
+msgid "remove submodule working trees even if they contain local changes"
+msgstr "usuń drzewa robocze pod-modułów, nawet jeśli zawierają lokalne zmiany"
 
 #: builtin/submodule--helper.c:1625
-msgid "Unregister all submodules"
-msgstr "Wyrejestruj wszystkie pod-moduły"
+msgid "unregister all submodules"
+msgstr "wyrejestruj wszystkie pod-moduły"
 
 #: builtin/submodule--helper.c:1630
 msgid ""
@@ -22091,8 +22505,8 @@ msgid "rebase, merge, checkout or none"
 msgstr "rebase, merge, checkout lub none"
 
 #: builtin/submodule--helper.c:2340
-msgid "Create a shallow clone truncated to the specified number of revisions"
-msgstr "Utwórz płytki klon ucięty do podanej liczby rewizji"
+msgid "create a shallow clone truncated to the specified number of revisions"
+msgstr "utwórz płytki klon ucięty do podanej liczby rewizji"
 
 #: builtin/submodule--helper.c:2343
 msgid "parallel jobs"
@@ -22162,8 +22576,8 @@ msgid "please make sure that the .gitmodules file is in the working tree"
 msgstr "upewnij się, że plik .gitmodules jest w drzewie roboczym"
 
 #: builtin/submodule--helper.c:2681
-msgid "Suppress output for setting url of a submodule"
-msgstr "Powstrzymaj wyjście przy ustawianiu adresu pod-modułu"
+msgid "suppress output for setting url of a submodule"
+msgstr "powstrzymaj wyjście przy ustawianiu adresu pod-modułu"
 
 #: builtin/submodule--helper.c:2685
 msgid "git submodule--helper set-url [--quiet] <path> <newurl>"
@@ -22195,7 +22609,7 @@ msgstr "wymagane --branch lub --default"
 msgid "--branch and --default are mutually exclusive"
 msgstr "--branch i --default się wykluczają"
 
-#: builtin/submodule--helper.c:2792 git.c:438 git.c:711
+#: builtin/submodule--helper.c:2792 git.c:441 git.c:714
 #, c-format
 msgid "%s doesn't support --super-prefix"
 msgstr "%s nie wspiera --super-prefix"
@@ -22266,12 +22680,12 @@ msgstr "git tag -v [--format=<format>] <nazwa-tagu>..."
 msgid "tag '%s' not found."
 msgstr "nie znaleziono tagu „%s”."
 
-#: builtin/tag.c:105
+#: builtin/tag.c:124
 #, c-format
 msgid "Deleted tag '%s' (was %s)\n"
 msgstr "Usunięto tag „%s” (wskazywał %s)\n"
 
-#: builtin/tag.c:135
+#: builtin/tag.c:159
 #, c-format
 msgid ""
 "\n"
@@ -22284,7 +22698,7 @@ msgstr ""
 "  %s\n"
 "Wiersze zaczynające się od „%c” zostaną zignorowane.\n"
 
-#: builtin/tag.c:139
+#: builtin/tag.c:163
 #, c-format
 msgid ""
 "\n"
@@ -22299,15 +22713,11 @@ msgstr ""
 "Wiersze zaczynające się od „%c” będą zachowane; możesz je sam(a) usunąć, "
 "jeśli chcesz.\n"
 
-#: builtin/tag.c:198
+#: builtin/tag.c:230
 msgid "unable to sign the tag"
 msgstr "nie można podpisać tagu"
 
-#: builtin/tag.c:200
-msgid "unable to write tag file"
-msgstr "nie można zapisać pliku tagu"
-
-#: builtin/tag.c:216
+#: builtin/tag.c:248
 #, c-format
 msgid ""
 "You have created a nested tag. The object referred to by your new tag is\n"
@@ -22320,138 +22730,134 @@ msgstr ""
 "\n"
 "\tgit tag -f %s %s^{}"
 
-#: builtin/tag.c:232
+#: builtin/tag.c:264
 msgid "bad object type."
 msgstr "zły rodzaj obiektu."
 
-#: builtin/tag.c:285
+#: builtin/tag.c:317
 msgid "no tag message?"
 msgstr "brak komunikatu tagu?"
 
-#: builtin/tag.c:292
+#: builtin/tag.c:324
 #, c-format
 msgid "The tag message has been left in %s\n"
 msgstr "Pozostawiono komunikat tagu w %s\n"
 
-#: builtin/tag.c:403
+#: builtin/tag.c:435
 msgid "list tag names"
 msgstr "wypisz nazwy tagów"
 
-#: builtin/tag.c:405
+#: builtin/tag.c:437
 msgid "print <n> lines of each tag message"
 msgstr "wypisz <n> wierszy każdego komunikatu tagu"
 
-#: builtin/tag.c:407
+#: builtin/tag.c:439
 msgid "delete tags"
 msgstr "usuń tagi"
 
-#: builtin/tag.c:408
+#: builtin/tag.c:440
 msgid "verify tags"
 msgstr "weryfikuj tagi"
 
-#: builtin/tag.c:410
+#: builtin/tag.c:442
 msgid "Tag creation options"
 msgstr "Opcje tworzenia tagów"
 
-#: builtin/tag.c:412
+#: builtin/tag.c:444
 msgid "annotated tag, needs a message"
 msgstr "opisz tag, potrzebuje komunikatu"
 
-#: builtin/tag.c:414
+#: builtin/tag.c:446
 msgid "tag message"
 msgstr "wiadomość tagu"
 
-#: builtin/tag.c:416
+#: builtin/tag.c:448
 msgid "force edit of tag message"
 msgstr "wymuś edycję komunikatu tagu"
 
-#: builtin/tag.c:417
+#: builtin/tag.c:449
 msgid "annotated and GPG-signed tag"
 msgstr "tag opisany i podpisany GPG"
 
-#: builtin/tag.c:420
+#: builtin/tag.c:452
 msgid "use another key to sign the tag"
 msgstr "użyj innego klucza do podpisania tagu"
 
-#: builtin/tag.c:421
+#: builtin/tag.c:453
 msgid "replace the tag if exists"
 msgstr "zamień tag, jeśli istnieje"
 
-#: builtin/tag.c:422 builtin/update-ref.c:505
+#: builtin/tag.c:454 builtin/update-ref.c:505
 msgid "create a reflog"
 msgstr "utwórz dziennik referencji"
 
-#: builtin/tag.c:424
+#: builtin/tag.c:456
 msgid "Tag listing options"
 msgstr "Opcje wypisywania tagów"
 
-#: builtin/tag.c:425
+#: builtin/tag.c:457
 msgid "show tag list in columns"
 msgstr "pokaż listę tagów w kolumnach"
 
-#: builtin/tag.c:426 builtin/tag.c:428
+#: builtin/tag.c:458 builtin/tag.c:460
 msgid "print only tags that contain the commit"
 msgstr "wypisz tylko tagi zawierające ten zapis"
 
-#: builtin/tag.c:427 builtin/tag.c:429
+#: builtin/tag.c:459 builtin/tag.c:461
 msgid "print only tags that don't contain the commit"
 msgstr "wypisz tylko tagi nie zawierające tego zapisu"
 
-#: builtin/tag.c:430
+#: builtin/tag.c:462
 msgid "print only tags that are merged"
 msgstr "wypisz tylko scalone tagi"
 
-#: builtin/tag.c:431
+#: builtin/tag.c:463
 msgid "print only tags that are not merged"
 msgstr "wypisz tylko niescalone tagi"
 
-#: builtin/tag.c:435
+#: builtin/tag.c:467
 msgid "print only tags of the object"
 msgstr "wypisz tylko tagi tego obiektu"
 
-#: builtin/tag.c:483
+#: builtin/tag.c:515
 msgid "--column and -n are incompatible"
 msgstr "--column i -n się wykluczają"
 
-#: builtin/tag.c:505
+#: builtin/tag.c:537
 msgid "-n option is only allowed in list mode"
 msgstr "opcja -n może być użyta tylko w trybie wymieniania"
 
-#: builtin/tag.c:507
+#: builtin/tag.c:539
 msgid "--contains option is only allowed in list mode"
 msgstr "opcja --contains może być użyta tylko w trybie wymieniania"
 
-#: builtin/tag.c:509
+#: builtin/tag.c:541
 msgid "--no-contains option is only allowed in list mode"
 msgstr "opcja --no-contains może być użyta tylko w trybie wymieniania"
 
-#: builtin/tag.c:511
+#: builtin/tag.c:543
 msgid "--points-at option is only allowed in list mode"
 msgstr "opcja --points-at może być użyta tylko w trybie wymieniania"
 
-#: builtin/tag.c:513
+#: builtin/tag.c:545
 msgid "--merged and --no-merged options are only allowed in list mode"
 msgstr "opcje --merged i --no-merged mogą być użyte tylko w trybie wymieniania"
 
-#: builtin/tag.c:524
+#: builtin/tag.c:556
 msgid "only one -F or -m option is allowed."
 msgstr "-F i -m się wykluczają."
 
-#: builtin/tag.c:543
-msgid "too many params"
-msgstr "zbyt wiele parametrów"
-
-#: builtin/tag.c:549
+#: builtin/tag.c:581
 #, c-format
 msgid "'%s' is not a valid tag name."
 msgstr "„%s” nie jest prawidłową nazwą tagu."
 
-#: builtin/tag.c:554
+#: builtin/tag.c:586
 #, c-format
 msgid "tag '%s' already exists"
 msgstr "tag „%s” już istnieje"
 
-#: builtin/tag.c:585
+#: builtin/tag.c:617
 #, c-format
 msgid "Updated tag '%s' (was %s)\n"
 msgstr "Zaktualizowano tag „%s” (wskazywał %s)\n"
@@ -22805,89 +23211,63 @@ msgstr "git verify-tag [-v | --verbose] [--format=<format>] <tag>..."
 msgid "print tag contents"
 msgstr "wypisz zawartość tagu"
 
-#: builtin/worktree.c:17
+#: builtin/worktree.c:18
 msgid "git worktree add [<options>] <path> [<commit-ish>]"
 msgstr "git worktree add [<opcje>] <ścieżka> [<zapis>]"
 
-#: builtin/worktree.c:18
+#: builtin/worktree.c:19
 msgid "git worktree list [<options>]"
 msgstr "git worktree list [<opcje>]"
 
-#: builtin/worktree.c:19
+#: builtin/worktree.c:20
 msgid "git worktree lock [<options>] <path>"
 msgstr "git worktree lock [<opcje>] <ścieżka>"
 
-#: builtin/worktree.c:20
+#: builtin/worktree.c:21
 msgid "git worktree move <worktree> <new-path>"
 msgstr "git worktree move <drzewo-robocze> <nowa-ścieżka>"
 
-#: builtin/worktree.c:21
+#: builtin/worktree.c:22
 msgid "git worktree prune [<options>]"
 msgstr "git worktree prune [<opcje>]"
 
-#: builtin/worktree.c:22
+#: builtin/worktree.c:23
 msgid "git worktree remove [<options>] <worktree>"
 msgstr "git worktree remove [<opcje>] <drzewo-robocze>"
 
-#: builtin/worktree.c:23
+#: builtin/worktree.c:24
 msgid "git worktree unlock <path>"
 msgstr "git worktree unlock <ścieżka>"
 
-#: builtin/worktree.c:60 builtin/worktree.c:973
+#: builtin/worktree.c:61 builtin/worktree.c:933
 #, c-format
 msgid "failed to delete '%s'"
 msgstr "nie można skasować „%s”"
 
-#: builtin/worktree.c:85
-msgid "not a valid directory"
-msgstr "nie jest prawidłowym katalogiem"
-
-#: builtin/worktree.c:91
-msgid "gitdir file does not exist"
-msgstr "plik gitdir nie istnieje"
-
-#: builtin/worktree.c:96 builtin/worktree.c:105
-#, c-format
-msgid "unable to read gitdir file (%s)"
-msgstr "nie można odczytać pliku gitdir (%s)"
-
-#: builtin/worktree.c:115
-#, c-format
-msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
-msgstr "przykrótki odczyt (oczekiwano %<PRIuMAX> bajtów, odczytano %<PRIuMAX>)"
-
-#: builtin/worktree.c:123
-msgid "invalid gitdir file"
-msgstr "nieprawidłowy plik gitdir"
-
-#: builtin/worktree.c:131
-msgid "gitdir file points to non-existent location"
-msgstr "plik gitdir wskazuje nieistniejące położenie"
-
-#: builtin/worktree.c:146
+#: builtin/worktree.c:74
 #, c-format
 msgid "Removing %s/%s: %s"
 msgstr "Usuwanie %s/%s: %s"
 
-#: builtin/worktree.c:221
+#: builtin/worktree.c:149
 msgid "report pruned working trees"
 msgstr "zgłaszaj przycięte drzewa robocze"
 
-#: builtin/worktree.c:223
+#: builtin/worktree.c:151
 msgid "expire working trees older than <time>"
 msgstr "wygaś drzewa robocze starsze niż <czas>"
 
-#: builtin/worktree.c:293
+#: builtin/worktree.c:221
 #, c-format
 msgid "'%s' already exists"
 msgstr "„%s” już istnieje"
 
-#: builtin/worktree.c:302
+#: builtin/worktree.c:230
 #, c-format
 msgid "unusable worktree destination '%s'"
 msgstr "cel drzewa roboczego „%s” nie nadaje się do użytku"
 
-#: builtin/worktree.c:307
+#: builtin/worktree.c:235
 #, c-format
 msgid ""
 "'%s' is a missing but locked worktree;\n"
@@ -22897,7 +23277,7 @@ msgstr ""
 "użyj „%s -f -f”, aby wymusić, lub „unlock” i „prune” lub „remove”, aby "
 "wyczyścić"
 
-#: builtin/worktree.c:309
+#: builtin/worktree.c:237
 #, c-format
 msgid ""
 "'%s' is a missing but already registered worktree;\n"
@@ -22906,117 +23286,129 @@ msgstr ""
 "„%s” jest brakującym, ale już zarejestrowanym drzewem roboczym;\n"
 "użyj „%s -f”, aby wymusić, bądź „prune” lub „remove”, aby wyczyścić"
 
-#: builtin/worktree.c:360
+#: builtin/worktree.c:288
 #, c-format
 msgid "could not create directory of '%s'"
 msgstr "nie można utworzyć katalogu „%s”"
 
-#: builtin/worktree.c:494 builtin/worktree.c:500
+#: builtin/worktree.c:422 builtin/worktree.c:428
 #, c-format
 msgid "Preparing worktree (new branch '%s')"
 msgstr "Przygotowywanie drzewa roboczego (nowa gałąź „%s”)"
 
-#: builtin/worktree.c:496
+#: builtin/worktree.c:424
 #, c-format
 msgid "Preparing worktree (resetting branch '%s'; was at %s)"
 msgstr "Przygotowywanie drzewa roboczego (resetowanie gałęzi „%s”; była na %s)"
 
-#: builtin/worktree.c:505
+#: builtin/worktree.c:433
 #, c-format
 msgid "Preparing worktree (checking out '%s')"
 msgstr "Przygotowywanie drzewa roboczego (wybieranie „%s”)"
 
-#: builtin/worktree.c:511
+#: builtin/worktree.c:439
 #, c-format
 msgid "Preparing worktree (detached HEAD %s)"
 msgstr "Przygotowywanie drzewa roboczego (oddzielone HEAD %s)"
 
-#: builtin/worktree.c:552
+#: builtin/worktree.c:480
 msgid "checkout <branch> even if already checked out in other worktree"
 msgstr "wybierz <gałąź> nawet jeśli już jest wybrana w innym drzewie roboczym"
 
-#: builtin/worktree.c:555
+#: builtin/worktree.c:483
 msgid "create a new branch"
 msgstr "utwórz nową gałąź"
 
-#: builtin/worktree.c:557
+#: builtin/worktree.c:485
 msgid "create or reset a branch"
 msgstr "utwórz lub zresetuj gałąź"
 
-#: builtin/worktree.c:559
+#: builtin/worktree.c:487
 msgid "populate the new working tree"
 msgstr "wypełnij nowe drzewo robocze"
 
-#: builtin/worktree.c:560
+#: builtin/worktree.c:488
 msgid "keep the new working tree locked"
 msgstr "pozostaw nowe drzewo robocze zablokowane"
 
-#: builtin/worktree.c:563
+#: builtin/worktree.c:491
 msgid "set up tracking mode (see git-branch(1))"
 msgstr "ustaw tryb śledzenia (zobacz git-branch(1))"
 
-#: builtin/worktree.c:566
+#: builtin/worktree.c:494
 msgid "try to match the new branch name with a remote-tracking branch"
 msgstr "spróbuj dopasować nazwę nowej gałęzi do gałęzi śledzącej"
 
-#: builtin/worktree.c:574
+#: builtin/worktree.c:502
 msgid "-b, -B, and --detach are mutually exclusive"
 msgstr "-b, -B i --detach się wykluczają"
 
-#: builtin/worktree.c:635
+#: builtin/worktree.c:563
 msgid "--[no-]track can only be used if a new branch is created"
 msgstr "--[no-]track można użyć tylko przy tworzeniu nowej gałęzi"
 
-#: builtin/worktree.c:758
+#: builtin/worktree.c:680
+msgid "show extended annotations and reasons, if available"
+msgstr "pokaż rozszerzone adnotacje i powody, jeśli dostępne"
+
+#: builtin/worktree.c:682
+msgid "add 'prunable' annotation to worktrees older than <time>"
+msgstr "oznacz drzewa robocze starsze niż <czas> jako „do przycięcia”"
+
+#: builtin/worktree.c:691
+msgid "--verbose and --porcelain are mutually exclusive"
+msgstr "--verbose i --porcelain się wykluczają"
+
+#: builtin/worktree.c:718
 msgid "reason for locking"
 msgstr "powód blokady"
 
-#: builtin/worktree.c:770 builtin/worktree.c:803 builtin/worktree.c:877
-#: builtin/worktree.c:1001
+#: builtin/worktree.c:730 builtin/worktree.c:763 builtin/worktree.c:837
+#: builtin/worktree.c:961
 #, c-format
 msgid "'%s' is not a working tree"
 msgstr "„%s” nie jest drzewem roboczym"
 
-#: builtin/worktree.c:772 builtin/worktree.c:805
+#: builtin/worktree.c:732 builtin/worktree.c:765
 msgid "The main working tree cannot be locked or unlocked"
 msgstr "Główne drzewo robocze nie może być blokowane ani odblokowywane"
 
-#: builtin/worktree.c:777
+#: builtin/worktree.c:737
 #, c-format
 msgid "'%s' is already locked, reason: %s"
 msgstr "„%s” już jest zablokowany, powód: %s"
 
-#: builtin/worktree.c:779
+#: builtin/worktree.c:739
 #, c-format
 msgid "'%s' is already locked"
 msgstr "„%s” już jest zablokowany"
 
-#: builtin/worktree.c:807
+#: builtin/worktree.c:767
 #, c-format
 msgid "'%s' is not locked"
 msgstr "„%s” nie jest zablokowany"
 
-#: builtin/worktree.c:848
+#: builtin/worktree.c:808
 msgid "working trees containing submodules cannot be moved or removed"
 msgstr ""
 "nie można przenosić ani usuwać drzew roboczych zawierających pod-moduły"
 
-#: builtin/worktree.c:856
+#: builtin/worktree.c:816
 msgid "force move even if worktree is dirty or locked"
 msgstr ""
 "wymuś przeniesienie, nawet jeśli drzewo robocze jest brudne lub zablokowane"
 
-#: builtin/worktree.c:879 builtin/worktree.c:1003
+#: builtin/worktree.c:839 builtin/worktree.c:963
 #, c-format
 msgid "'%s' is a main working tree"
 msgstr "„%s” jest głównym drzewem roboczym"
 
-#: builtin/worktree.c:884
+#: builtin/worktree.c:844
 #, c-format
 msgid "could not figure out destination name from '%s'"
 msgstr "nie można uzyskać nazwy celu z „%s”"
 
-#: builtin/worktree.c:897
+#: builtin/worktree.c:857
 #, c-format
 msgid ""
 "cannot move a locked working tree, lock reason: %s\n"
@@ -23025,7 +23417,7 @@ msgstr ""
 "nie można przenieść zablokowanego drzewa roboczego, powód blokady: %s\n"
 "użyj „move -f -f”, żeby to wymusić lub najpierw odblokować"
 
-#: builtin/worktree.c:899
+#: builtin/worktree.c:859
 msgid ""
 "cannot move a locked working tree;\n"
 "use 'move -f -f' to override or unlock first"
@@ -23033,38 +23425,38 @@ msgstr ""
 "nie można przenieść zablokowanego drzewa roboczego;\n"
 "użyj „move -f -f”, żeby to wymusić lub najpierw odblokować"
 
-#: builtin/worktree.c:902
+#: builtin/worktree.c:862
 #, c-format
 msgid "validation failed, cannot move working tree: %s"
 msgstr "sprawdzenie nie powiodło się, nie można przenieść drzewa roboczego: %s"
 
-#: builtin/worktree.c:907
+#: builtin/worktree.c:867
 #, c-format
 msgid "failed to move '%s' to '%s'"
 msgstr "nie można przenieść „%s” do „%s”"
 
-#: builtin/worktree.c:953
+#: builtin/worktree.c:913
 #, c-format
 msgid "failed to run 'git status' on '%s'"
 msgstr "nie można wykonać „git status” na „%s”"
 
-#: builtin/worktree.c:957
+#: builtin/worktree.c:917
 #, c-format
 msgid "'%s' contains modified or untracked files, use --force to delete it"
 msgstr ""
 "„%s” zawiera zmienione lub nieśledzone pliki, użyj --force, aby skasować"
 
-#: builtin/worktree.c:962
+#: builtin/worktree.c:922
 #, c-format
 msgid "failed to run 'git status' on '%s', code %d"
 msgstr "nie można wykonać „git status” na „%s”, kod %d"
 
-#: builtin/worktree.c:985
+#: builtin/worktree.c:945
 msgid "force removal even if worktree is dirty or locked"
 msgstr ""
 "wymuś usunięcie, nawet jeśli drzewo robocze jest brudne lub zablokowane"
 
-#: builtin/worktree.c:1008
+#: builtin/worktree.c:968
 #, c-format
 msgid ""
 "cannot remove a locked working tree, lock reason: %s\n"
@@ -23073,7 +23465,7 @@ msgstr ""
 "nie można usunąć zablokowanego drzewa roboczego, powód blokady: %s\n"
 "użyj „remove -f -f”, żeby to wymusić lub najpierw odblokować"
 
-#: builtin/worktree.c:1010
+#: builtin/worktree.c:970
 msgid ""
 "cannot remove a locked working tree;\n"
 "use 'remove -f -f' to override or unlock first"
@@ -23081,17 +23473,17 @@ msgstr ""
 "nie można usunąć zablokowanego drzewa roboczego;\n"
 "użyj „remove -f -f”, żeby to wymusić lub najpierw odblokować"
 
-#: builtin/worktree.c:1013
+#: builtin/worktree.c:973
 #, c-format
 msgid "validation failed, cannot remove working tree: %s"
 msgstr "sprawdzenie nie powiodło się, nie można usunąć drzewa roboczego: %s"
 
-#: builtin/worktree.c:1037
+#: builtin/worktree.c:997
 #, c-format
 msgid "repair: %s: %s"
 msgstr "naprawa: %s: %s"
 
-#: builtin/worktree.c:1040
+#: builtin/worktree.c:1000
 #, c-format
 msgid "error: %s: %s"
 msgstr "błąd: %s: %s"
@@ -23153,18 +23545,20 @@ msgid ""
 "           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--"
 "bare]\n"
 "           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]\n"
+"           [--super-prefix=<path>] [--config-env=<name>=<envvar>]\n"
 "           <command> [<args>]"
 msgstr ""
 "git [--version] [--help] [-C <ścieżka>] [-c <nazwa>=<wartość>]\n"
-"           [--exec-path[=<ścieżka>]] [--html-path] [--man-path] [--info-"
-"path]\n"
+"           [--exec-path[=<ścieżka>]] [--html-path] [--man-path]"
+" [--info-path]\n"
 "           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--"
 "bare]\n"
-"           [--git-dir=<ścieżka>] [--work-tree=<ścieżka>] [--"
-"namespace=<nazwa>]\n"
+"           [--git-dir=<ścieżka>] [--work-tree=<ścieżka>] [--namespace=<nazwa"
+">]\n"
+"           [--super-prefix=<ścieżka>] [--config-env=<nazwa>=<zmśrod>]\n"
 "           <polecenie> [<argumenty>]"
 
-#: git.c:35
+#: git.c:36
 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"
@@ -23178,47 +23572,47 @@ msgstr ""
 "aby poczytać o konkretnym poleceniu lub pojęciu.\n"
 "W „git help git” znajdziesz przegląd systemu."
 
-#: git.c:187
+#: git.c:188
 #, c-format
 msgid "no directory given for --git-dir\n"
 msgstr "nie podano katalogu do --git-dir\n"
 
-#: git.c:201
+#: git.c:202
 #, c-format
 msgid "no namespace given for --namespace\n"
 msgstr "nie podano przestrzeni nazw do --namespace\n"
 
-#: git.c:215
+#: git.c:216
 #, c-format
 msgid "no directory given for --work-tree\n"
 msgstr "nie podano katalogu do --work-tree\n"
 
-#: git.c:229
+#: git.c:230
 #, c-format
 msgid "no prefix given for --super-prefix\n"
 msgstr "nie podano prefiksu do --super-prefix\n"
 
-#: git.c:251
+#: git.c:252
 #, c-format
 msgid "-c expects a configuration string\n"
 msgstr "-c oczekuje łańcucha konfiguracji\n"
 
-#: git.c:289
+#: git.c:292
 #, c-format
 msgid "no directory given for -C\n"
 msgstr "nie podano katalogu do -C\n"
 
-#: git.c:315
+#: git.c:318
 #, c-format
 msgid "unknown option: %s\n"
 msgstr "nieznana opcja: %s\n"
 
-#: git.c:364
+#: git.c:367
 #, c-format
 msgid "while expanding alias '%s': '%s'"
 msgstr "podczas rozszerzania skrótu „%s”: „%s”"
 
-#: git.c:373
+#: git.c:376
 #, c-format
 msgid ""
 "alias '%s' changes environment variables.\n"
@@ -23227,39 +23621,39 @@ msgstr ""
 "skrót „%s” zmienia zmienne środowiska.\n"
 "Aby to zrobić, możesz użyć w skrócie „!git”"
 
-#: git.c:380
+#: git.c:383
 #, c-format
 msgid "empty alias for %s"
 msgstr "pusty skrót dla %s"
 
-#: git.c:383
+#: git.c:386
 #, c-format
 msgid "recursive alias: %s"
 msgstr "rekurencyjny skrót: %s"
 
-#: git.c:465
+#: git.c:468
 msgid "write failure on standard output"
 msgstr "błąd wypisywania na standardowe wyjście"
 
-#: git.c:467
+#: git.c:470
 msgid "unknown write failure on standard output"
 msgstr "nieznany błąd wypisywania na standardowe wyjście"
 
-#: git.c:469
+#: git.c:472
 msgid "close failed on standard output"
 msgstr "nie można zamknąć standardowego wyjścia"
 
-#: git.c:820
+#: git.c:823
 #, c-format
 msgid "alias loop detected: expansion of '%s' does not terminate:%s"
 msgstr "wykryto pętlę skrótów: rozwijanie „%s” nie kończy się: %s"
 
-#: git.c:870
+#: git.c:873
 #, c-format
 msgid "cannot handle %s as a builtin"
 msgstr "nie można obsłużyć %s jako polecenia wbudowanego"
 
-#: git.c:883
+#: git.c:886
 #, c-format
 msgid ""
 "usage: %s\n"
@@ -23268,13 +23662,13 @@ msgstr ""
 "użycie: %s\n"
 "\n"
 
-#: git.c:903
+#: git.c:906
 #, c-format
 msgid "expansion of alias '%s' failed; '%s' is not a git command\n"
 msgstr ""
 "rozwinięcie skrótu „%s” nie powiodło się; „%s” nie jest poleceniem gita\n"
 
-#: git.c:915
+#: git.c:918
 #, c-format
 msgid "failed to run command '%s': %s\n"
 msgstr "nie można wykonać polecenia „%s”: %s\n"
@@ -23511,11 +23905,11 @@ msgid ""
 "with --pathspec-from-file, pathspec elements are separated with NUL character"
 msgstr "przy --pathspec-from-file ścieżki są rozdzielone znakiem NUL"
 
-#: ref-filter.h:96
+#: ref-filter.h:99
 msgid "key"
 msgstr "klucz"
 
-#: ref-filter.h:96
+#: ref-filter.h:99
 msgid "field name to sort on"
 msgstr "nazwa pola, według którego należy posortować"
 
@@ -23525,14 +23919,6 @@ msgstr ""
 "jeśli to możliwe, zaktualizuj indeks używając ponownie starych rozwiązań "
 "konfliktów"
 
-#: wt-status.h:80
-msgid "HEAD detached at "
-msgstr "HEAD odłączone na "
-
-#: wt-status.h:81
-msgid "HEAD detached from "
-msgstr "HEAD odłączone od "
-
 #: command-list.h:50
 msgid "Add file contents to the index"
 msgstr "Dodaj zawartość pliku do indeksu"
@@ -23870,8 +24256,8 @@ msgid "Write and verify multi-pack-indexes"
 msgstr "Wypisz i sprawdź indeksy multi-pack"
 
 #: command-list.h:132
-msgid "Creates a tag object"
-msgstr "Tworzy obiekt tagu"
+msgid "Creates a tag object with extra validation"
+msgstr "Tworzy obiekt tagu z dodatkowymi sprawdzeniami"
 
 #: command-list.h:133
 msgid "Build a tree-object from ls-tree formatted text"
@@ -24178,69 +24564,56 @@ msgid "Specifies intentionally untracked files to ignore"
 msgstr "Podaje celowo nieśledzone pliki do pomijania"
 
 #: command-list.h:209
+msgid "Map author/committer names and/or E-Mail addresses"
+msgstr ""
+"Przypisz nazwiska autorów/składających i/lub ich adresy poczty elektronicznej"
+
+#: command-list.h:210
 msgid "Defining submodule properties"
 msgstr "Definiowanie właściwości pod-modułów"
 
-#: command-list.h:210
+#: command-list.h:211
 msgid "Git namespaces"
 msgstr "Przestrzenie nazw Gita"
 
-#: command-list.h:211
+#: command-list.h:212
 msgid "Helper programs to interact with remote repositories"
 msgstr "Pomocnicze programy do interakcji ze zdalnymi repozytoriami"
 
-#: command-list.h:212
+#: command-list.h:213
 msgid "Git Repository Layout"
 msgstr "Układ repozytorium Gita"
 
-#: command-list.h:213
+#: command-list.h:214
 msgid "Specifying revisions and ranges for Git"
 msgstr "Podawanie Gitowi rewizji i zakresów"
 
-#: command-list.h:214
+#: command-list.h:215
 msgid "Mounting one repository inside another"
 msgstr "Montowanie jednego repozytorium w drugim"
 
-#: command-list.h:215
+#: command-list.h:216
 msgid "A tutorial introduction to Git: part two"
 msgstr "Samouczek wprowadzenia do Gita: część druga"
 
-#: command-list.h:216
+#: command-list.h:217
 msgid "A tutorial introduction to Git"
 msgstr "Samouczek wprowadzenia do Gita"
 
-#: command-list.h:217
+#: command-list.h:218
 msgid "An overview of recommended workflows with Git"
 msgstr "Przegląd zalecanych przepływów pracy z Gitem"
 
-#: git-bisect.sh:48
-#, sh-format
-msgid "Bad rev input: $arg"
-msgstr "Błędne wejście rev: $arg"
-
-#: git-bisect.sh:82
-msgid "No logfile given"
-msgstr "Nie podano pliku dziennika"
-
-#: git-bisect.sh:83
-#, sh-format
-msgid "cannot read $file for replaying"
-msgstr "nie można odczytać $file do odtwarzania"
-
-#: git-bisect.sh:105
-msgid "?? what are you talking about?"
-msgstr "?? o czym ty w ogóle mówisz?"
-
-#: git-bisect.sh:115
+#: git-bisect.sh:68
 msgid "bisect run failed: no command provided."
 msgstr "przeszukanie nie powiodło się: nie podano polecenia."
 
-#: git-bisect.sh:120
+#: git-bisect.sh:73
 #, sh-format
 msgid "running $command"
 msgstr "wykonywanie $command"
 
-#: git-bisect.sh:127
+#: git-bisect.sh:80
 #, sh-format
 msgid ""
 "bisect run failed:\n"
@@ -24249,11 +24622,11 @@ msgstr ""
 "przeszukanie nie powiodło się:\n"
 "kod wyjścia $res z „$command” jest <0 lub >= 128"
 
-#: git-bisect.sh:152
+#: git-bisect.sh:105
 msgid "bisect run cannot continue any more"
 msgstr "przeszukanie nie może już kontynuować"
 
-#: git-bisect.sh:158
+#: git-bisect.sh:111
 #, sh-format
 msgid ""
 "bisect run failed:\n"
@@ -24262,14 +24635,10 @@ msgstr ""
 "przeszukanie nie powiodło się:\n"
 "„bisect-state $state” zakończyło się z kodem błędu $res"
 
-#: git-bisect.sh:165
+#: git-bisect.sh:118
 msgid "bisect run success"
 msgstr "przeszukanie pomyślne"
 
-#: git-bisect.sh:173
-msgid "We are not bisecting."
-msgstr "Teraz nie przeszukujemy."
-
 #: git-merge-octopus.sh:46
 msgid ""
 "Error: Your local changes to the following files would be overwritten by "
@@ -25568,6 +25937,77 @@ msgstr "Pomijanie %s z zapasowym sufiksem „%s”.\n"
 msgid "Do you really want to send %s? [y|N]: "
 msgstr "Czy na pewno wysłać %s? [y | N]: "
 
+#~ msgid "rev-list died"
+#~ msgstr "rev-list padło"
+
+#~ msgid ""
+#~ "git bisect--helper --bisect-write [--no-log] <state> <revision> "
+#~ "<good_term> <bad_term>"
+#~ msgstr ""
+#~ "git bisect--helper --bisect-write [--no-log] <stan> <rewizja> "
+#~ "<dobre_określenie> <złe_określenie>"
+
+#~ msgid ""
+#~ "git bisect--helper --bisect-check-and-set-terms <command> <good_term> "
+#~ "<bad_term>"
+#~ msgstr ""
+#~ "git bisect--helper --bisect-check-and-set-terms <polecenie> "
+#~ "<dobre_określenie> <złe_określenie>"
+
+#~ msgid "git bisect--helper --bisect-auto-next"
+#~ msgstr "git bisect--helper --bisect-auto-next"
+
+#~ msgid "write out the bisection state in BISECT_LOG"
+#~ msgstr "wypisz stan przeszukiwania w BISECT_LOG"
+
+#~ msgid "check and set terms in a bisection state"
+#~ msgstr "sprawdź i ustaw określenia w stanie przeszukiwania"
+
+#~ msgid ""
+#~ "verify the next bisection state then checkout the next bisection commit"
+#~ msgstr ""
+#~ "sprawdź kolejny stan przeszukiwania, i wtedy wybierz kolejny zapis do "
+#~ "przeszukiwania"
+
+#~ msgid "--bisect-write requires either 4 or 5 arguments"
+#~ msgstr "--bisect-write wymaga 4 albo 5 argumentów"
+
+#~ msgid "--check-and-set-terms requires 3 arguments"
+#~ msgstr "--check-and-set-terms wymaga 3 argumentów"
+
+#~ msgid "--bisect-auto-next requires 0 arguments"
+#~ msgstr "--bisect-auto-next wymaga braku argumentów"
+
+#~ msgid "Force progress reporting"
+#~ msgstr "Wymuś zgłaszanie postępu"
+
+#, c-format
+#~ msgid "Error deleting remote-tracking branch '%s'"
+#~ msgstr "Błąd usuwania śledzącej gałęzi „%s”"
+
+#, c-format
+#~ msgid "Error deleting branch '%s'"
+#~ msgstr "Błąd usuwania gałęzi „%s”"
+
+#~ msgid "show parse tree for grep expression"
+#~ msgstr "pokaż drzewo przetwarzania w wyrażeniu grepa"
+
+#~ msgid "too many parameters"
+#~ msgstr "zbyt wiele parametrów"
+
+#~ msgid "too few parameters"
+#~ msgstr "zbyt mało argumentów"
+
+#~ msgid "Recurse into nested submodules"
+#~ msgstr "Schodź do zagnieżdżonych pod-modułów"
+
+#~ msgid "too many params"
+#~ msgstr "zbyt wiele parametrów"
+
+#, sh-format
+#~ msgid "Bad rev input: $arg"
+#~ msgstr "Błędne wejście rev: $arg"
+
 #~ msgid "Counting distinct commits in commit graph"
 #~ msgstr "Zliczanie rozróżnialnych zapisów w grafie zapisów"
 
@@ -25810,12 +26250,6 @@ msgstr "Czy na pewno wysłać %s? [y | N]: "
 #~ msgid "change upstream info"
 #~ msgstr "zmień gałąź nadrzędną"
 
-#~ msgid "(HEAD detached from %s)"
-#~ msgstr "(HEAD odłączone od %s)"
-
-#~ msgid "(HEAD detached at %s)"
-#~ msgstr "(HEAD odłączone na %s)"
-
 #~ msgid " **** invalid ref ****"
 #~ msgstr " **** nieprawidłowa referencja ****"
 
index 61ff13f028cffacebfedb49c1efa38f1183a4ba8..c76a5facefe4e7e6073d75655e474e54993ca409 100644 (file)
-# Portuguese translations for Git package.
-# Copyright (C) 2012 Marco Sousa <marcomsousa AT gmail.com>
-# Copyright (C) 2016 Vasco Almeida <vascomalmeida@sapo.pt>
+# Portugual's Portuguese translations for Git package.
+# Copyright (C) 2020 Daniel Santos <hello@brighterdan.com> 
 # This file is distributed under the same license as the Git package.
 # Contributors:
-# - Marco Sousa <marcomsousa AT gmail.com>
-# Vasco Almeida <vascomalmeida@sapo.pt>, 2016, 2017.
+#   - Daniel Santos <hello@brighterdan.com>
+# Past Contributors:
+#   - Marco Sousa <marcomsousa AT gmail.com>
+#   - Vasco Almeida <vascomalmeida@sapo.pt>, 2016, 2017.
+#
+#  Git glossary for Portuguese translators
+#
+#   English                          |  Portuguese
+#   ---------------------------------+--------------------------------------
+#   3-way merge                      |  junção-de-3
+#   abbreviate                       |  
+#   alternate object database        |  
+#   amend                            |  
+#   ancestor                         |  
+#   annotated tag                    |  
+#   bare repository                  |  
+#   bisect                           |  
+#   blob object                      |  
+#   bloom filter                     |  
+#   branch                           |  ramo 
+#   bundle                           |  
+#   bypass                           |  
+#   cache                            |  index
+#   chain                            |  
+#   changeset                        |  
+#   checkout                         |  
+#   checksum                         |  
+#   cherry-picking                   |  
+#   clean                            |  
+#   clone                            |  
+#   commit                           |  memorizar
+#   commit message                   |  mensagem de memória
+#   commit object                    |  objeto da memória
+#   commit-ish (also committish)     |  mnemónica
+#   conflict                         |  conflito
+#   core Git                         |  
+#   cover letter                     |  
+#   DAG                              |  
+#   dangling object                  |  DAG
+#   detached HEAD                    |  HEAD solta
+#   directory                        |  pasta
+#   dirty                            |  
+#   dumb HTTP protocol               |  
+#   evil merge                       |  
+#   fast-forward                     |  
+#   fetch                            |  
+#   file system                      |  
+#   fork                             |  
+#   Git archive                      |  
+#   gitfile                          |  
+#   grafts                           |  
+#   hash                             |  
+#   HEAD                             |  HEAD
+#   head                             |  
+#   head ref                         |  
+#   header                           |  início
+#   hook                             |  
+#   hunk                             |  pedaço
+#   index                            |  
+#   index entry                      |  
+#   loose object                     |  
+#   loose refs                       |  
+#   master                           |  
+#   merge                            |  junção 
+#   object                           |  
+#   object database                  |  
+#   object identifier                |  
+#   object name                      |  
+#   object type                      |  
+#   octopus                          |  
+#   origin                           |  
+#   pack                             |  
+#   pack index                       |  
+#   packfile                         |  
+#   parent                           |  
+#   patch                            |  
+#   pathspec                         |  
+#   pattern                          |  
+#   pickaxe                          |  
+#   plumbing                         |  
+#   porcelain                        |  
+#   precious-objects repo            |  
+#   prune                            |  
+#   pull                             |  agarrar
+#   push                             |  atirar
+#   reachable                        |  
+#   rebase                           |  
+#   ref                              |  
+#   reflog                           |  
+#   refspec                          |  
+#   remote                           |  
+#   remote-tracking branch           |  
+#   replay                           |  
+#   repo                             |  repo
+#   repository                       |  repositório
+#   resolve                          |  
+#   revert                           |  reverter
+#   revision                         |  revisão
+#   rewind                           |  
+#   SCM                              |  
+#   SHA-1                            |  SHA-1
+#   shallow repository               |  
+#   signed tag                       |  
+#   smart HTTP protocol              |  
+#   squash                           |  
+#   stage                            |  
+#   stash                            |  arrumos
+#   submodule                        |  
+#   symref                           |  
+#   tag                              |  
+#   tag object                       |  
+#   tagger                           |  
+#   topic branch                     |  
+#   track                            |  
+#   trailer                          |  
+#   tree                             |  
+#   tree object                      |  
+#   tree-ish (also treeish)          |  
+#   unmerged index                   |  
+#   unpack                           |  
+#   unreachable object               |  
+#   unstage                          |  
+#   upstream                         |  upstream
+#   upstream branch                  |  ramo upstream
+#   working tree                     |  
+#
 msgid ""
 msgstr ""
 "Project-Id-Version: Git\n"
 "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2020-10-10 09:32+0800\n"
-"PO-Revision-Date: 2017-05-01 21:17+0000\n"
-"Last-Translator: Vasco Almeida <vascomalmeida@sapo.pt>\n"
-"Language-Team: Portuguese\n"
-"Language: pt\n"
+"POT-Creation-Date: 2020-12-15 16:27+0800\n"
+"PO-Revision-Date: 2020-10-14 11:43+0100\n"
+"Last-Translator: Daniel Santos <hello@brighterdan.com>\n"
+"Language-Team: Git L10N Português <https://github.com/git-l10n-pt-PT/>\n"
+"Language: pt-PT\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Virtaal 0.7.1\n"
 
-#: add-interactive.c:368
+#: add-interactive.c:376
 #, fuzzy, c-format
 msgid "Huh (%s)?"
-msgstr "O quê (%s)?\n"
+msgstr "O quê (%s)?"
 
-#: add-interactive.c:521 add-interactive.c:822 reset.c:65 sequencer.c:3250
-#: sequencer.c:3698 sequencer.c:3840 builtin/rebase.c:1526
-#: builtin/rebase.c:1944
+#: add-interactive.c:529 add-interactive.c:830 reset.c:65 sequencer.c:3284
+#: sequencer.c:3735 sequencer.c:3890 builtin/rebase.c:1532
+#: builtin/rebase.c:1955
 msgid "could not read index"
-msgstr "não foi possível ler o índice"
+msgstr "incapaz de ler index"
 
-#: add-interactive.c:576 git-add--interactive.perl:269
+#: add-interactive.c:584 git-add--interactive.perl:269
 #: git-add--interactive.perl:294
 msgid "binary"
 msgstr "binário"
 
-#: add-interactive.c:634 git-add--interactive.perl:278
+#: add-interactive.c:642 git-add--interactive.perl:278
 #: git-add--interactive.perl:332
 msgid "nothing"
 msgstr "nada"
 
-#: add-interactive.c:635 git-add--interactive.perl:314
+#: add-interactive.c:643 git-add--interactive.perl:314
 #: git-add--interactive.perl:329
 msgid "unchanged"
-msgstr "não alterado"
+msgstr "inalterado"
 
-#: add-interactive.c:672 git-add--interactive.perl:643
+#: add-interactive.c:680 git-add--interactive.perl:641
 msgid "Update"
 msgstr "Atualizar"
 
-#: add-interactive.c:689 add-interactive.c:877
+#: add-interactive.c:697 add-interactive.c:885
 #, fuzzy, c-format
 msgid "could not stage '%s'"
-msgstr "não foi possível obter stat de '%s'"
+msgstr "inacapaz de stage '%s'"
 
-#: add-interactive.c:695 add-interactive.c:884 reset.c:89 sequencer.c:3444
+#: add-interactive.c:703 add-interactive.c:892 reset.c:89 sequencer.c:3478
 #, fuzzy
 msgid "could not write index"
-msgstr "não foi possível ler o índice"
+msgstr "incapaz de escrever index"
 
-#: add-interactive.c:698 git-add--interactive.perl:628
+#: add-interactive.c:706 git-add--interactive.perl:626
 #, c-format, perl-format
 msgid "updated %d path\n"
 msgid_plural "updated %d paths\n"
-msgstr[0] "%d caminho atualizado\n"
-msgstr[1] "%d caminhos atualizados\n"
+msgstr[0] "actualizou %d path\n"
+msgstr[1] "actualizou %d paths\n"
 
-#: add-interactive.c:716 git-add--interactive.perl:678
+#: add-interactive.c:724 git-add--interactive.perl:676
 #, c-format, perl-format
 msgid "note: %s is untracked now.\n"
-msgstr "nota: %s é agora não controlado.\n"
+msgstr "nota: %s agora está untracked.\n"
 
-#: add-interactive.c:721 apply.c:4127 builtin/checkout.c:295
+#: add-interactive.c:729 apply.c:4127 builtin/checkout.c:295
 #: builtin/reset.c:145
 #, c-format
 msgid "make_cache_entry failed for path '%s'"
-msgstr "falha ao invocar make_cache_entry em '%s'"
+msgstr "make_cache_entry falhou para path '%s'"
 
-#: add-interactive.c:751 git-add--interactive.perl:655
+#: add-interactive.c:759 git-add--interactive.perl:653
 msgid "Revert"
 msgstr "Reverter"
 
-#: add-interactive.c:767
+#: add-interactive.c:775
 #, fuzzy
 msgid "Could not parse HEAD^{tree}"
-msgstr "não foi possível analisar o commit HEAD"
+msgstr "Incapaz de parse HEAD^{tree}"
 
-#: add-interactive.c:805 git-add--interactive.perl:631
+#: add-interactive.c:813 git-add--interactive.perl:629
 #, c-format, perl-format
 msgid "reverted %d path\n"
 msgid_plural "reverted %d paths\n"
-msgstr[0] "%d caminho revertido\n"
-msgstr[1] "%d caminhos revertidos\n"
+msgstr[0] "reverti %d path\n"
+msgstr[1] "reverti %d paths\n"
 
-#: add-interactive.c:856 git-add--interactive.perl:695
+#: add-interactive.c:864 git-add--interactive.perl:693
 #, c-format
 msgid "No untracked files.\n"
-msgstr "Nenhum ficheiros não controlado.\n"
+msgstr "Nenhuns ficheiros untracked.\n"
 
-#: add-interactive.c:860 git-add--interactive.perl:689
+#: add-interactive.c:868 git-add--interactive.perl:687
 msgid "Add untracked"
-msgstr "Adicionar não controlados"
+msgstr "Adiciona untracked"
 
-#: add-interactive.c:887 git-add--interactive.perl:625
+#: add-interactive.c:895 git-add--interactive.perl:623
 #, c-format, perl-format
 msgid "added %d path\n"
 msgid_plural "added %d paths\n"
-msgstr[0] "%d caminho adicionar\n"
-msgstr[1] "%d caminhos adicionados\n"
+msgstr[0] "adicionei %d path\n"
+msgstr[1] "adicionei %d paths\n"
 
-#: add-interactive.c:917
+#: add-interactive.c:925
 #, fuzzy, c-format
 msgid "ignoring unmerged: %s"
-msgstr "ignorado não integrado: %s\n"
+msgstr "ignorando unmerged: %s"
 
-#: add-interactive.c:929 add-patch.c:1738 git-add--interactive.perl:1371
+#: add-interactive.c:937 add-patch.c:1751 git-add--interactive.perl:1369
 #, c-format
 msgid "Only binary files changed.\n"
-msgstr "Apenas ficheiros binários alterados.\n"
+msgstr "Apenas ficheiros binários mudaram.\n"
 
-#: add-interactive.c:931 add-patch.c:1736 git-add--interactive.perl:1373
+#: add-interactive.c:939 add-patch.c:1749 git-add--interactive.perl:1371
 #, c-format
 msgid "No changes.\n"
-msgstr "Sem alterações.\n"
+msgstr "Sem modificação.\n"
 
-#: add-interactive.c:935 git-add--interactive.perl:1381
+#: add-interactive.c:943 git-add--interactive.perl:1379
 msgid "Patch update"
 msgstr "Atualizar patch"
 
-#: add-interactive.c:974 git-add--interactive.perl:1794
+#: add-interactive.c:982 git-add--interactive.perl:1792
 msgid "Review diff"
 msgstr "Rever diff"
 
-#: add-interactive.c:1002
+#: add-interactive.c:1010
 #, fuzzy
 msgid "show paths with changes"
-msgstr "mostrar ficheiros com correspondências no paginador"
+msgstr "mostrar paths modificados"
 
-#: add-interactive.c:1004
+#: add-interactive.c:1012
 msgid "add working tree state to the staged set of changes"
-msgstr ""
+msgstr "adicionar estado de working tree para conjunto das modificações staged"
 
-#: add-interactive.c:1006
+#: add-interactive.c:1014
 msgid "revert staged set of changes back to the HEAD version"
-msgstr ""
+msgstr "reverter conjunto das modificações staged de volta para a versão HEAD"
 
-#: add-interactive.c:1008
+#: add-interactive.c:1016
 #, fuzzy
 msgid "pick hunks and update selectively"
-msgstr "selecionar blocos interativamente"
+msgstr "apanha os pedaços e atualiza selectivamente"
 
-#: add-interactive.c:1010
+#: add-interactive.c:1018
 #, fuzzy
 msgid "view diff between HEAD and index"
-msgstr "repor HEAD e índice"
+msgstr "ver diff entre HEAD e índex"
 
-#: add-interactive.c:1012
+#: add-interactive.c:1020
 msgid "add contents of untracked files to the staged set of changes"
 msgstr ""
+"adiciona conteúdo de ficheiros untracked para conjunto das modificações "
+"staged"
 
-#: add-interactive.c:1020 add-interactive.c:1069
+#: add-interactive.c:1028 add-interactive.c:1077
 msgid "Prompt help:"
-msgstr ""
+msgstr "Prompt ajuda:"
 
-#: add-interactive.c:1022
+#: add-interactive.c:1030
 #, fuzzy
 msgid "select a single item"
-msgstr "selecionar pai principal"
+msgstr "seleciona um único item"
 
-#: add-interactive.c:1024
+#: add-interactive.c:1032
 #, fuzzy
 msgid "select a range of items"
-msgstr "selecionar o tratamento de tags assinadas"
+msgstr "seleciona um conjunto de items"
 
-#: add-interactive.c:1026
+#: add-interactive.c:1034
 #, fuzzy
 msgid "select multiple ranges"
-msgstr "%s tem múltiplos valores"
+msgstr "seleciona múltiplos conjuntos"
 
-#: add-interactive.c:1028 add-interactive.c:1073
+#: add-interactive.c:1036 add-interactive.c:1081
 msgid "select item based on unique prefix"
-msgstr ""
+msgstr "seleciona item tendo base o prefixo único"
 
-#: add-interactive.c:1030
+#: add-interactive.c:1038
 #, fuzzy
 msgid "unselect specified items"
-msgstr "usar ficheiro de modelo especificado"
+msgstr "tira a seleção de items especificados"
 
-#: add-interactive.c:1032
+#: add-interactive.c:1040
 msgid "choose all items"
-msgstr ""
+msgstr "escolhe todos items"
 
-#: add-interactive.c:1034
+#: add-interactive.c:1042
 msgid "(empty) finish selecting"
-msgstr ""
+msgstr "(vazio) acaba de selecionar"
 
-#: add-interactive.c:1071
+#: add-interactive.c:1079
 msgid "select a numbered item"
-msgstr ""
+msgstr "seleciona item numerado"
 
-#: add-interactive.c:1075
+#: add-interactive.c:1083
 msgid "(empty) select nothing"
-msgstr ""
+msgstr "(vazio) seleciona nada"
 
-#: add-interactive.c:1083 builtin/clean.c:816 git-add--interactive.perl:1891
+#: add-interactive.c:1091 builtin/clean.c:816 git-add--interactive.perl:1896
 msgid "*** Commands ***"
 msgstr "*** Comandos ***"
 
-#: add-interactive.c:1084 builtin/clean.c:817 git-add--interactive.perl:1888
+#: add-interactive.c:1092 builtin/clean.c:817 git-add--interactive.perl:1893
 msgid "What now"
 msgstr "E agora"
 
-#: add-interactive.c:1136 git-add--interactive.perl:213
+#: add-interactive.c:1144 git-add--interactive.perl:213
 msgid "staged"
-msgstr "preparado"
+msgstr "staged"
 
-#: add-interactive.c:1136 git-add--interactive.perl:213
+#: add-interactive.c:1144 git-add--interactive.perl:213
 msgid "unstaged"
-msgstr "não preparado"
+msgstr "unstaged"
 
-#: add-interactive.c:1136 apply.c:4984 apply.c:4987 builtin/am.c:2270
-#: builtin/am.c:2273 builtin/bugreport.c:133 builtin/clone.c:123
-#: builtin/fetch.c:147 builtin/merge.c:275 builtin/pull.c:190
+#: add-interactive.c:1144 apply.c:4989 apply.c:4992 builtin/am.c:2257
+#: builtin/am.c:2260 builtin/bugreport.c:134 builtin/clone.c:124
+#: builtin/fetch.c:147 builtin/merge.c:284 builtin/pull.c:190
 #: builtin/submodule--helper.c:409 builtin/submodule--helper.c:1818
 #: builtin/submodule--helper.c:1821 builtin/submodule--helper.c:2326
 #: builtin/submodule--helper.c:2329 builtin/submodule--helper.c:2572
 #: git-add--interactive.perl:213
 msgid "path"
-msgstr "caminho"
+msgstr "path"
 
-#: add-interactive.c:1143
+#: add-interactive.c:1151
 #, fuzzy
 msgid "could not refresh index"
-msgstr "não foi possível ler o índice"
+msgstr "incapaz de reactualizar o index"
 
-#: add-interactive.c:1157 builtin/clean.c:781 git-add--interactive.perl:1805
+#: add-interactive.c:1165 builtin/clean.c:781 git-add--interactive.perl:1803
 #, c-format
 msgid "Bye.\n"
 msgstr "Adeus.\n"
 
-#: add-patch.c:34 git-add--interactive.perl:1433
+#: add-patch.c:34 git-add--interactive.perl:1431
 #, fuzzy, c-format, perl-format
 msgid "Stage mode change [y,n,q,a,d%s,?]? "
-msgstr "Preparar alteração de modo [y,n,q,a,d,/%s,?]? "
+msgstr "Stage modo de modificação [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:35 git-add--interactive.perl:1434
+#: add-patch.c:35 git-add--interactive.perl:1432
 #, fuzzy, c-format, perl-format
 msgid "Stage deletion [y,n,q,a,d%s,?]? "
-msgstr "Preparar eliminação [y,n,q,a,d,/%s,?]? "
+msgstr "Eliminação stage [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:36 git-add--interactive.perl:1435
+#: add-patch.c:36 git-add--interactive.perl:1433
 #, fuzzy, c-format, perl-format
 msgid "Stage addition [y,n,q,a,d%s,?]? "
-msgstr "Preparar eliminação [y,n,q,a,d,/%s,?]? "
+msgstr "Adição stage [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:37 git-add--interactive.perl:1436
+#: add-patch.c:37 git-add--interactive.perl:1434
 #, fuzzy, c-format, perl-format
 msgid "Stage this hunk [y,n,q,a,d%s,?]? "
-msgstr "Preparar este excerto [y,n,q,a,d,/%s,?]? "
+msgstr "Stage este pedaço [y,n,q,a,d%s,?]? "
 
 #: add-patch.c:39
 #, fuzzy
@@ -266,8 +390,8 @@ msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be marked for "
 "staging."
 msgstr ""
-"Se o patch se aplicar corretamente, o excerto editado será marcado\n"
-"como preparado imediatamente."
+"Se o patch submete-se corretamente, o pedaço editado será marcado para stage "
+"imediatamente."
 
 #: add-patch.c:42
 #, fuzzy
@@ -278,31 +402,31 @@ msgid ""
 "a - stage this hunk and all later hunks in the file\n"
 "d - do not stage this hunk or any of the later hunks in the file\n"
 msgstr ""
-"y - preparar este excerto\n"
-"n - não preparar este excerto\n"
-"q - sair; não preparar este excerto nem os restantes\n"
-"a - preparar este excerto e todos os excertos seguintes no ficheiro\n"
-"d - não preparar este excerto nem os excertos seguintes no ficheiro"
+"y - stage este pedaço\n"
+"n - o stage deste pedaço será retirado\n"
+"q - sair; retirar de stage este pedaço e qualquer um dos que permaneçam\n"
+"a - stage este pedaço e qualquer próximo pedaço neste ficheiro\n"
+"d - retirar o stage deste pedaço e qualquer próximo pedaço neste ficheiro\n"
 
-#: add-patch.c:56 git-add--interactive.perl:1439
+#: add-patch.c:56 git-add--interactive.perl:1437
 #, fuzzy, c-format, perl-format
 msgid "Stash mode change [y,n,q,a,d%s,?]? "
-msgstr "Esconder alteração de modo [y,n,q,a,d,/%s,?]? "
+msgstr "Esconder modo de modificação [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:57 git-add--interactive.perl:1440
+#: add-patch.c:57 git-add--interactive.perl:1438
 #, fuzzy, c-format, perl-format
 msgid "Stash deletion [y,n,q,a,d%s,?]? "
-msgstr "Esconder eliminação [y,n,q,a,d,/%s,?]? "
+msgstr "Eliminação da arrumação [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:58 git-add--interactive.perl:1441
+#: add-patch.c:58 git-add--interactive.perl:1439
 #, fuzzy, c-format, perl-format
 msgid "Stash addition [y,n,q,a,d%s,?]? "
-msgstr "Esconder eliminação [y,n,q,a,d,/%s,?]? "
+msgstr "Adição da arrumação [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:59 git-add--interactive.perl:1442
+#: add-patch.c:59 git-add--interactive.perl:1440
 #, fuzzy, c-format, perl-format
 msgid "Stash this hunk [y,n,q,a,d%s,?]? "
-msgstr "Esconder este excerto [y,n,q,a,d,/%s,?]? "
+msgstr "Esconde este pedaço [y,n,q,a,d%s,?]? "
 
 #: add-patch.c:61
 #, fuzzy
@@ -310,8 +434,8 @@ msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be marked for "
 "stashing."
 msgstr ""
-"Se o patch se aplicar corretamente, o excerto editado será marcado\n"
-"como escondido imediatamente."
+"Se o patch submete-se corretamente, o pedaço editado será marcado para "
+"arrumação imediatamente."
 
 #: add-patch.c:64
 #, fuzzy
@@ -322,31 +446,31 @@ msgid ""
 "a - stash this hunk and all later hunks in the file\n"
 "d - do not stash this hunk or any of the later hunks in the file\n"
 msgstr ""
-"y - esconder este excerto\n"
-"n - não esconder este excerto\n"
-"q - sair; não esconder este excerto nem os restantes\n"
-"a - esconder este excerto e todos os seguintes no ficheiro\n"
-"d - não esconder este excerto nem os excertos seguintes no ficheiro"
+"y - arrumar este pedaço\n"
+"n - mostrar este pedaço\n"
+"q - sair; mostrar este pedaço e qualquer outro restante\n"
+"a - arrumar este pedaço e qualquer próximo deste ficheiro\n"
+"d - mostrar este pedaço e qualquer próximo deste ficheiro\n"
 
-#: add-patch.c:80 git-add--interactive.perl:1445
+#: add-patch.c:80 git-add--interactive.perl:1443
 #, fuzzy, c-format, perl-format
 msgid "Unstage mode change [y,n,q,a,d%s,?]? "
-msgstr "Não preparar alteração de modo [y,n,q,a,d,/%s,?]? "
+msgstr "Unstage modo de modificação [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:81 git-add--interactive.perl:1446
+#: add-patch.c:81 git-add--interactive.perl:1444
 #, fuzzy, c-format, perl-format
 msgid "Unstage deletion [y,n,q,a,d%s,?]? "
-msgstr "Não preparar eliminação [y,n,q,a,d,/%s,?]? "
+msgstr "Eliminação do unstage [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:82 git-add--interactive.perl:1447
+#: add-patch.c:82 git-add--interactive.perl:1445
 #, fuzzy, c-format, perl-format
 msgid "Unstage addition [y,n,q,a,d%s,?]? "
-msgstr "Não preparar eliminação [y,n,q,a,d,/%s,?]? "
+msgstr "Adição do unstage [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:83 git-add--interactive.perl:1448
+#: add-patch.c:83 git-add--interactive.perl:1446
 #, fuzzy, c-format, perl-format
 msgid "Unstage this hunk [y,n,q,a,d%s,?]? "
-msgstr "Não preparar este excerto [y,n,q,a,d,/%s,?]? "
+msgstr "Unstage este pedaço [y,n,q,a,d%s,?]? "
 
 #: add-patch.c:85
 #, fuzzy
@@ -354,8 +478,8 @@ msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be marked for "
 "unstaging."
 msgstr ""
-"Se o patch se aplicar corretamente, o excerto editado será marcado\n"
-"como não preparado imediatamente."
+"Se patch submete-se corretamente, o pedaço editado será imediatamente "
+"marcado para unstage."
 
 #: add-patch.c:88
 #, fuzzy
@@ -366,31 +490,32 @@ msgid ""
 "a - unstage this hunk and all later hunks in the file\n"
 "d - do not unstage this hunk or any of the later hunks in the file\n"
 msgstr ""
-"y - despreparar este excerto\n"
-"n - não despreparar este excerto\n"
-"q - sair; não despreparar este excerto nem outros restantes\n"
-"a - despreparar este excerto e todos os excertos seguintes no ficheiro\n"
-"d - não despreparar este excerto nem os excertos seguintes no ficheiro"
+"y - unstage este pedaço\n"
+"n - o unstage deste pedaço será retirado\n"
+"q - sair; retirar de unstage este pedaço e qualquer outro restante\n"
+"a - unstage este pedaço e todos próximos pedaços deste ficheiro\n"
+"d - retirar este pedaço da arrumação e qualquer próximo pedaço deste "
+"ficheiro\n"
 
-#: add-patch.c:103 git-add--interactive.perl:1451
+#: add-patch.c:103 git-add--interactive.perl:1449
 #, fuzzy, c-format, perl-format
 msgid "Apply mode change to index [y,n,q,a,d%s,?]? "
-msgstr "Aplicar alteração de modo ao índice [y,n,q,a,d,/%s,?]? "
+msgstr "Submeter modo de modificação para index [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:104 git-add--interactive.perl:1452
+#: add-patch.c:104 git-add--interactive.perl:1450
 #, fuzzy, c-format, perl-format
 msgid "Apply deletion to index [y,n,q,a,d%s,?]? "
-msgstr "Aplicar eliminação ao índice [y,n,q,a,d,/%s,?]? "
+msgstr "Submeter eliminação para index [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:105 git-add--interactive.perl:1453
+#: add-patch.c:105 git-add--interactive.perl:1451
 #, fuzzy, c-format, perl-format
 msgid "Apply addition to index [y,n,q,a,d%s,?]? "
-msgstr "Aplicar eliminação ao índice [y,n,q,a,d,/%s,?]? "
+msgstr "Submeter adição para index [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:106 git-add--interactive.perl:1454
+#: add-patch.c:106 git-add--interactive.perl:1452
 #, fuzzy, c-format, perl-format
 msgid "Apply this hunk to index [y,n,q,a,d%s,?]? "
-msgstr "Aplicar este excerto ao índice [y,n,q,a,d,/%s,?]? "
+msgstr "Submeter este pedaço para index [y,n,q,a,d%s,?]? "
 
 #: add-patch.c:108 add-patch.c:176 add-patch.c:221
 #, fuzzy
@@ -398,8 +523,8 @@ msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be marked for "
 "applying."
 msgstr ""
-"Se o patch se aplicar corretamente, o excerto editado será marcado\n"
-"para ser aplicado imediatamente."
+"Se o patch aplica-se corretamente, o pedaço editado será marcado para a "
+"submissão imediatamente."
 
 #: add-patch.c:111
 #, fuzzy
@@ -410,35 +535,35 @@ msgid ""
 "a - apply this hunk and all later hunks in the file\n"
 "d - do not apply this hunk or any of the later hunks in the file\n"
 msgstr ""
-"y - aplicar este excerto ao índice\n"
-"n - não aplicar este excerto ao índice\n"
-"q - sair; não aplicar este excerto nem os restantes\n"
-"a - aplicar este excerto e todos os excertos seguintes no ficheiro\n"
-"d - não aplicar este excerto nem os excertos seguintes no ficheiro"
+"y - submeter este pedaço para index\n"
+"n - declinar este pedaço para index\n"
+"q - sair; declinar este pedaço e qualquer outro restante\n"
+"a - submeter este pedaço e qualquer próximo deste ficheiro\n"
+"d - declinar este pedaço e qualquer próximo deste ficheiro\n"
 
-#: add-patch.c:126 git-add--interactive.perl:1457
-#: git-add--interactive.perl:1475
+#: add-patch.c:126 git-add--interactive.perl:1455
+#: git-add--interactive.perl:1473
 #, fuzzy, c-format, perl-format
 msgid "Discard mode change from worktree [y,n,q,a,d%s,?]? "
-msgstr "Descartar alteração de modo da árvore de trabalho [y,n,q,a,d,/%s,?]? "
+msgstr "Descartar modo de modificação da worktree [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:127 git-add--interactive.perl:1458
-#: git-add--interactive.perl:1476
+#: add-patch.c:127 git-add--interactive.perl:1456
+#: git-add--interactive.perl:1474
 #, fuzzy, c-format, perl-format
 msgid "Discard deletion from worktree [y,n,q,a,d%s,?]? "
-msgstr "Descartar eliminação da árvore de trabalho [y,n,q,a,d,/%s,?]? "
+msgstr "Descartar eliminação da worktree [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:128 git-add--interactive.perl:1459
-#: git-add--interactive.perl:1477
+#: add-patch.c:128 git-add--interactive.perl:1457
+#: git-add--interactive.perl:1475
 #, fuzzy, c-format, perl-format
 msgid "Discard addition from worktree [y,n,q,a,d%s,?]? "
-msgstr "Descartar eliminação da árvore de trabalho [y,n,q,a,d,/%s,?]? "
+msgstr "Descartar adição da worktree [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:129 git-add--interactive.perl:1460
-#: git-add--interactive.perl:1478
+#: add-patch.c:129 git-add--interactive.perl:1458
+#: git-add--interactive.perl:1476
 #, fuzzy, c-format, perl-format
 msgid "Discard this hunk from worktree [y,n,q,a,d%s,?]? "
-msgstr "Descartar este excerto da árvore de trabalho [y,n,q,a,d,/%s,?]? "
+msgstr "Descartar este pedaço da worktree [y,n,q,a,d%s,?]? "
 
 #: add-patch.c:131 add-patch.c:154 add-patch.c:199
 #, fuzzy
@@ -446,8 +571,8 @@ msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be marked for "
 "discarding."
 msgstr ""
-"Se o patch se aplicar corretamente, o excerto editado será marcado\n"
-"para ser descartado imediatamente."
+"Se o patch aplica-se corretamente, o pedaço editado será marcado para ser "
+"descartado imediatamente."
 
 #: add-patch.c:134 add-patch.c:202
 #, fuzzy
@@ -458,36 +583,31 @@ msgid ""
 "a - discard this hunk and all later hunks in the file\n"
 "d - do not discard this hunk or any of the later hunks in the file\n"
 msgstr ""
-"y - descartar este excerto da árvore de trabalho\n"
-"n - não descartar este excerto da árvore de trabalho\n"
-"q - sair; não descartar este excerto nem os restantes\n"
-"a - descartar este excerto e todos os excertos seguintes no ficheiro\n"
-"d - não descartar este excerto nem os excertos seguintes no ficheiro"
+"y - descartar este pedaço de worktree\n"
+"n - aceitar este pedaço de worktree\n"
+"q - sair; aceitar este pedaço e qualquer outro restante\n"
+"a - descartar este pedaço e qualquer próximo deste ficheiro\n"
+"d - aceitar este pedaço e qualquer próximo deste ficheiro\n"
 
-#: add-patch.c:149 add-patch.c:194 git-add--interactive.perl:1463
+#: add-patch.c:149 add-patch.c:194 git-add--interactive.perl:1461
 #, fuzzy, c-format, perl-format
 msgid "Discard mode change from index and worktree [y,n,q,a,d%s,?]? "
-msgstr ""
-"Descartar alteração de modo do índice e da árvore de trabalho [y,n,q,a,d,/"
-"%s,?]? "
+msgstr "Descartar modo de modficação de index e worktree [y,n,q,a,d%s,?]?"
 
-#: add-patch.c:150 add-patch.c:195 git-add--interactive.perl:1464
+#: add-patch.c:150 add-patch.c:195 git-add--interactive.perl:1462
 #, fuzzy, c-format, perl-format
 msgid "Discard deletion from index and worktree [y,n,q,a,d%s,?]? "
-msgstr ""
-"Descartar eliminação do índice e da árvore de trabalho [y,n,q,a,d,/%s,?]? "
+msgstr "Descartar eliminação de index e worktree [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:151 add-patch.c:196 git-add--interactive.perl:1465
+#: add-patch.c:151 add-patch.c:196 git-add--interactive.perl:1463
 #, fuzzy, c-format, perl-format
 msgid "Discard addition from index and worktree [y,n,q,a,d%s,?]? "
-msgstr ""
-"Descartar eliminação do índice e da árvore de trabalho [y,n,q,a,d,/%s,?]? "
+msgstr "Descartar adição de index e worktree [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:152 add-patch.c:197 git-add--interactive.perl:1466
+#: add-patch.c:152 add-patch.c:197 git-add--interactive.perl:1464
 #, fuzzy, c-format, perl-format
 msgid "Discard this hunk from index and worktree [y,n,q,a,d%s,?]? "
-msgstr ""
-"Descartar este excerto do índice e da árvore de trabalho [y,n,q,a,d,/%s,?]? "
+msgstr "Descartar este pedaço de index e worktree [y,n,q,a,d%s,?]? "
 
 #: add-patch.c:157
 #, fuzzy
@@ -498,36 +618,31 @@ msgid ""
 "a - discard this hunk and all later hunks in the file\n"
 "d - do not discard this hunk or any of the later hunks in the file\n"
 msgstr ""
-"y - descartar este excerto do índice e da árvore de trabalho\n"
-"n - não descartar este excerto do índice nem da árvore de trabalho\n"
-"q - sair; não descartar este excerto nem nenhum dos restantes\n"
-"a - descartar este excerto e todos os excertos seguintes no ficheiro\n"
-"d - não descartar este excerto nem os excertos seguintes no ficheiro"
+"y - descartar este pedaço de index e worktree\n"
+"n - aceitar este pedaço de index e worktree\n"
+"q - sair; aceitar este pedaço e qualquer outro restante\n"
+"a - descartar este pedaço e qualquer próximo deste ficheiro\n"
+"d - aceitar este pedaço e qualquer próximo deste ficheiro\n"
 
-#: add-patch.c:171 add-patch.c:216 git-add--interactive.perl:1469
+#: add-patch.c:171 add-patch.c:216 git-add--interactive.perl:1467
 #, fuzzy, c-format, perl-format
 msgid "Apply mode change to index and worktree [y,n,q,a,d%s,?]? "
-msgstr ""
-"Aplicar alteração de modo ao índice e à árvore de trabalho [y,n,q,a,d,/"
-"%s,?]? "
+msgstr "Submeter modo de modificação para index e worktree [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:172 add-patch.c:217 git-add--interactive.perl:1470
+#: add-patch.c:172 add-patch.c:217 git-add--interactive.perl:1468
 #, fuzzy, c-format, perl-format
 msgid "Apply deletion to index and worktree [y,n,q,a,d%s,?]? "
-msgstr ""
-"Aplicar eliminação ao índice e à árvore de trabalho [y,n,q,a,d,/%s,?]? "
+msgstr "Submeter eliminação para index e worktree [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:173 add-patch.c:218 git-add--interactive.perl:1471
+#: add-patch.c:173 add-patch.c:218 git-add--interactive.perl:1469
 #, fuzzy, c-format, perl-format
 msgid "Apply addition to index and worktree [y,n,q,a,d%s,?]? "
-msgstr ""
-"Aplicar eliminação ao índice e à árvore de trabalho [y,n,q,a,d,/%s,?]? "
+msgstr "Submeter adição para index e worktree [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:174 add-patch.c:219 git-add--interactive.perl:1472
+#: add-patch.c:174 add-patch.c:219 git-add--interactive.perl:1470
 #, fuzzy, c-format, perl-format
 msgid "Apply this hunk to index and worktree [y,n,q,a,d%s,?]? "
-msgstr ""
-"Aplicar este excerto ao índice e à árvore de trabalho [y,n,q,a,d,/%s,?]? "
+msgstr "Submeter este pedaço para index e worktree [y,n,q,a,d%s,?]? "
 
 #: add-patch.c:179
 #, fuzzy
@@ -538,11 +653,11 @@ msgid ""
 "a - apply this hunk and all later hunks in the file\n"
 "d - do not apply this hunk or any of the later hunks in the file\n"
 msgstr ""
-"y - aplicar este excerto ao índice e à árvore de trabalho\n"
-"n - não aplicar este excerto ao índice e à árvore de trabalho\n"
-"q - sair; não aplicar este excerto ou restantes\n"
-"a - aplicar este excerto e todos os excertos seguintes no ficheiro\n"
-"d - não aplicar este excerto nem os excertos seguintes no ficheiro"
+"y - submeter este pedaço para index e worktree\n"
+"n - declinar este pedaço para index e worktree\n"
+"q - sair; declinar este pedaço e qualquer outro restante\n"
+"a - submeter este pedaço e qualquer próximo deste ficheiro\n"
+"d - declinar este pedaço e qualquer próximo deste ficheiro\n"
 
 #: add-patch.c:224
 #, fuzzy
@@ -553,55 +668,59 @@ msgid ""
 "a - apply this hunk and all later hunks in the file\n"
 "d - do not apply this hunk or any of the later hunks in the file\n"
 msgstr ""
-"y - aplicar este excerto ao índice e à árvore de trabalho\n"
-"n - não aplicar este excerto ao índice e à árvore de trabalho\n"
-"q - sair; não aplicar este excerto ou restantes\n"
-"a - aplicar este excerto e todos os excertos seguintes no ficheiro\n"
-"d - não aplicar este excerto nem os excertos seguintes no ficheiro"
+"y - submeter este pedaço para worktree\n"
+"n - declinar este pedaço para worktree\n"
+"q - sair; declinar este pedaço e qualquer outro restantes\n"
+"a - submeter este pedaço e qualquer próximo deste ficheiro\n"
+"d - declinar este pedaço e qualquer próximo deste ficheiro\n"
 
 #: add-patch.c:342
 #, fuzzy, c-format
 msgid "could not parse hunk header '%.*s'"
-msgstr "não foi possível analisar o patch '%s'"
+msgstr "incapaz de analisar ínicio de pedaço '%s'"
 
 #: add-patch.c:361 add-patch.c:365
 #, fuzzy, c-format
 msgid "could not parse colored hunk header '%.*s'"
-msgstr "não foi possível abrir ou ler '%s'"
+msgstr "incapaz de analizar início de pedaço colorido '%.*s'"
 
 #: add-patch.c:419
 #, fuzzy
 msgid "could not parse diff"
-msgstr "não foi possível analisar %s"
+msgstr "incapaz de analisar diff"
 
 #: add-patch.c:438
 #, fuzzy
 msgid "could not parse colored diff"
-msgstr "Não foi possível analisar a linha %d."
+msgstr "incapaz de analisar diff colorido"
 
 #: add-patch.c:452
 #, fuzzy, c-format
 msgid "failed to run '%s'"
-msgstr "falha ao invocar unlink de '%s'"
+msgstr "falha ao executar '%s'"
 
 #: add-patch.c:611
 msgid "mismatched output from interactive.diffFilter"
-msgstr ""
+msgstr "sem match de output de interactive.diffFilter"
 
 #: add-patch.c:612
 msgid ""
 "Your filter must maintain a one-to-one correspondence\n"
 "between its input and output lines."
 msgstr ""
+"O teu filtro tem de manter uma correspondência exata\n"
+"entre seu input e linhas output."
 
-#: add-patch.c:785
+#: add-patch.c:790
 #, fuzzy, c-format
 msgid ""
 "expected context line #%d in\n"
 "%.*s"
-msgstr "linha de configuração %d incorreta em %s"
+msgstr ""
+"linha de contexto esperada #%d em\n"
+"%.*s"
 
-#: add-patch.c:800
+#: add-patch.c:805
 #, c-format
 msgid ""
 "hunks do not overlap:\n"
@@ -609,12 +728,16 @@ msgid ""
 "\tdoes not end with:\n"
 "%.*s"
 msgstr ""
+"pedaços sem overlap:\n"
+"%.*s\n"
+"\ttermina sem:\n"
+"%.*s"
 
-#: add-patch.c:1076 git-add--interactive.perl:1117
+#: add-patch.c:1081 git-add--interactive.perl:1115
 msgid "Manual hunk edit mode -- see bottom for a quick guide.\n"
-msgstr "Modo de edição manual de excerto -- ver guia rápido abaixo no final.\n"
+msgstr "Modo de edição manual de pedaço -- ver final para guia rápido.\n"
 
-#: add-patch.c:1080
+#: add-patch.c:1085
 #, fuzzy, c-format
 msgid ""
 "---\n"
@@ -623,29 +746,29 @@ msgid ""
 "Lines starting with %c will be removed.\n"
 msgstr ""
 "---\n"
-"Para remover linhas '%s', torne-as linhas ' ' (contexto).\n"
-"Para remover linhas '%s', elimine-as.\n"
-"Linhas começadas com %s serão removidas.\n"
+"Para remover '%c' linhas, torna-as linhas ' ' (contexto).\n"
+"Para remover '%c' linhas, elimina-as.\n"
+"Linhas começadas com %c serão removidas.\n"
 
 #. TRANSLATORS: 'it' refers to the patch mentioned in the previous messages.
-#: add-patch.c:1094 git-add--interactive.perl:1131
+#: add-patch.c:1099 git-add--interactive.perl:1129
 msgid ""
 "If it does not apply cleanly, you will be given an opportunity to\n"
 "edit again.  If all lines of the hunk are removed, then the edit is\n"
 "aborted and the hunk is left unchanged.\n"
 msgstr ""
-"Se não se aplicar corretamente, ser-lhe-á dada oportunidade para editar\n"
-"de novo.  Se todas as linhas do excerto forem removidas, a edição é\n"
-"abortada e o exceto é deixado inalterado.\n"
+"Se falha na submissão correta, ser-lhe-á dada nova oportunidade para\n"
+"editar. Se todas as linhas deste pedaço forem removidas, então a edição\n"
+"é abortada e este pedaço é deixado inalterado.\n"
 
-#: add-patch.c:1127
+#: add-patch.c:1132
 #, fuzzy
 msgid "could not parse hunk header"
-msgstr "não foi possível analisar %s"
+msgstr "incapaz interpretar início de pedaço"
 
-#: add-patch.c:1172
+#: add-patch.c:1177
 msgid "'git apply --cached' failed"
-msgstr ""
+msgstr "'git apply --cached' falhou"
 
 #. TRANSLATORS: do not translate [y/n]
 #. The program will only accept that input at this point.
@@ -659,27 +782,27 @@ msgstr ""
 #. Consider translating (saying "no" discards!) as
 #. (saying "n" for "no" discards!) if the translation
 #. of the word "no" does not start with n.
-#: add-patch.c:1241 git-add--interactive.perl:1244
+#: add-patch.c:1246 git-add--interactive.perl:1242
 msgid ""
 "Your edited hunk does not apply. Edit again (saying \"no\" discards!) [y/n]? "
 msgstr ""
-"O excerto que editou não aplica.\n"
-"Edite de novo (responder \"não\" descarta!) [y/n]? "
+"Problema na submissão de pedaço editado. Editar de novo (responder \"não\" descarta!) "
+"[y/n]? "
 
-#: add-patch.c:1284
+#: add-patch.c:1289
 #, fuzzy
 msgid "The selected hunks do not apply to the index!"
-msgstr "Os excertos selecionados não aplicam ao índice!\n"
+msgstr "Submissão incorreta de pedaços selecionados para index!"
 
-#: add-patch.c:1285 git-add--interactive.perl:1348
+#: add-patch.c:1290 git-add--interactive.perl:1346
 msgid "Apply them to the worktree anyway? "
-msgstr "Aplicá-los à árvore de trabalho mesmo assim? "
+msgstr "Submetê-los para worktree mesmo assim? "
 
-#: add-patch.c:1292 git-add--interactive.perl:1351
+#: add-patch.c:1297 git-add--interactive.perl:1349
 msgid "Nothing was applied.\n"
-msgstr "Não foi aplicado nada.\n"
+msgstr "Nada foi submetido.\n"
 
-#: add-patch.c:1349
+#: add-patch.c:1354
 #, fuzzy
 msgid ""
 "j - leave this hunk undecided, see next undecided hunk\n"
@@ -692,149 +815,150 @@ msgid ""
 "e - manually edit the current hunk\n"
 "? - print help\n"
 msgstr ""
-"g - selecionar um excerto para ir\n"
-"/ - procurar por um excerto correspondendo à regex dada\n"
-"j - deixar este excerto indecidido, ver excerto seguinte indecidido\n"
-"J - deixar este excerto indecidido, ver excerto seguinte\n"
-"k - deixar este excerto indecidido, ver excerto anterior indecidido\n"
-"K - deixar este excerto indecidido, ver excerto anterior\n"
-"s - dividir o excerto atual em excertos mais pequenos\n"
-"e - editar manualmente o excerto atual\n"
-"? - imprimir ajuda\n"
+"j - deixar este pedaço indecidido, ver próximo pedaço indecidido\n"
+"J - deixar este pedaço indecidido, ver próximo pedaço\n"
+"k - deixar este pedaço indecidido, ver pedaço indecidido anterior\n"
+"K - deixar este pedaço indecidido, ver pedaço anterior\n"
+"g - selecionar próximo pedaço\n"
+"/ - procurar por pedaço correspondendo à regex\n"
+"s - dividir o pedaço atual em pedaços mais pequenos\n"
+"e - editar manualmente o pedaço atual\n"
+"? - mostrar ajuda\n"
 
-#: add-patch.c:1511 add-patch.c:1521
+#: add-patch.c:1516 add-patch.c:1526
 #, fuzzy
 msgid "No previous hunk"
-msgstr "Nenhum excerto anterior\n"
+msgstr "Sem pedaço anterior"
 
-#: add-patch.c:1516 add-patch.c:1526
+#: add-patch.c:1521 add-patch.c:1531
 #, fuzzy
 msgid "No next hunk"
-msgstr "Nenhum excerto seguinte\n"
+msgstr "Sem próximo pedaço"
 
-#: add-patch.c:1532
+#: add-patch.c:1537
 msgid "No other hunks to goto"
-msgstr ""
+msgstr "Sem qualquer outro pedaço"
 
-#: add-patch.c:1543 git-add--interactive.perl:1608
+#: add-patch.c:1548 git-add--interactive.perl:1606
 msgid "go to which hunk (<ret> to see more)? "
-msgstr "ir para que excerto (<ret> para ver mais)? "
+msgstr "ir para qual pedaço (<ret> para ver mais)? "
 
-#: add-patch.c:1544 git-add--interactive.perl:1610
+#: add-patch.c:1549 git-add--interactive.perl:1608
 msgid "go to which hunk? "
-msgstr "ir para que excerto? "
+msgstr "ir para qual pedaço? "
 
-#: add-patch.c:1555
+#: add-patch.c:1560
 #, fuzzy, c-format
 msgid "Invalid number: '%s'"
-msgstr "Número inválido: '%s'\n"
+msgstr "Número inválido: '%s'"
 
-#: add-patch.c:1560
+#: add-patch.c:1565
 #, fuzzy, c-format
 msgid "Sorry, only %d hunk available."
 msgid_plural "Sorry, only %d hunks available."
-msgstr[0] "Lamento, apenas %d excerto disponível.\n"
-msgstr[1] "Lamento, apenas %d excertos disponíveis.\n"
+msgstr[0] "Lamento, apenas %d pedaço disponível."
+msgstr[1] "Lamento, apenas %d pedaços disponíveis."
 
-#: add-patch.c:1569
+#: add-patch.c:1574
 msgid "No other hunks to search"
-msgstr ""
+msgstr "Sem outro pedaço a procurar"
 
-#: add-patch.c:1575 git-add--interactive.perl:1663
+#: add-patch.c:1580 git-add--interactive.perl:1661
 msgid "search for regex? "
 msgstr "procurar por regex? "
 
-#: add-patch.c:1590
+#: add-patch.c:1595
 #, fuzzy, c-format
 msgid "Malformed search regexp %s: %s"
-msgstr "Regexp de pesquisa malformada %s: %s\n"
+msgstr "Pesquisa regexp deformada %s: %s"
 
-#: add-patch.c:1607
+#: add-patch.c:1612
 #, fuzzy
 msgid "No hunk matches the given pattern"
-msgstr "Nenhum excerto corresponde ao padrão fornecido\n"
+msgstr "Sem pedaço correspondente ao padrão fornecido"
 
-#: add-patch.c:1614
+#: add-patch.c:1619
 msgid "Sorry, cannot split this hunk"
-msgstr ""
+msgstr "Lamento, incapaz de dividir este pedaço"
 
-#: add-patch.c:1618
+#: add-patch.c:1623
 #, fuzzy, c-format
 msgid "Split into %d hunks."
-msgstr "Dividir em %d excerto.\n"
+msgstr "Dividir em %d pedaços."
 
-#: add-patch.c:1622
+#: add-patch.c:1627
 msgid "Sorry, cannot edit this hunk"
-msgstr ""
+msgstr "Lamento, incapaz de editar este pedaço"
 
-#: add-patch.c:1674
+#: add-patch.c:1679
 #, fuzzy
 msgid "'git apply' failed"
-msgstr "falha ao executar o comando stash"
+msgstr "'git apply' falhou"
 
-#: advice.c:140
+#: advice.c:143
 #, c-format
 msgid ""
 "\n"
 "Disable this message with \"git config advice.%s false\""
 msgstr ""
+"\n"
+"Desative este mensagem com \"git config advice.%s false\""
 
-#: advice.c:156
+#: advice.c:159
 #, fuzzy, c-format
 msgid "%shint: %.*s%s\n"
-msgstr "dica: %.*s\n"
+msgstr "%sdica: %.*s%s\n"
 
-#: advice.c:247
+#: advice.c:250
 msgid "Cherry-picking is not possible because you have unmerged files."
-msgstr ""
-"Não é possível efetuar cherry-pick porque tem ficheiros não integrados."
+msgstr "Cherry-picking é impossível porque tem ficheiros em separado."
 
-#: advice.c:249
+#: advice.c:252
 msgid "Committing is not possible because you have unmerged files."
-msgstr "Não é possível submeter porque tem ficheiros não integrados."
+msgstr "Cometer é impossível porque tem ficheiros em separado."
 
-#: advice.c:251
+#: advice.c:254
 msgid "Merging is not possible because you have unmerged files."
-msgstr "Não é possível integrar porque tem ficheiros não integrados."
+msgstr "Juntar é impossível porque tem ficheiros em separado."
 
-#: advice.c:253
+#: advice.c:256
 msgid "Pulling is not possible because you have unmerged files."
-msgstr "Não é possível puxar porque tem ficheiros não integrados."
+msgstr "Puxar é impossível porque tem ficheiros em separado."
 
-#: advice.c:255
+#: advice.c:258
 msgid "Reverting is not possible because you have unmerged files."
-msgstr "Não é possível reverte porque tem ficheiros não integrados."
+msgstr "Reverter é impossível porque tem ficheiros em separado."
 
-#: advice.c:257
+#: advice.c:260
 #, c-format
 msgid "It is not possible to %s because you have unmerged files."
-msgstr "Não é possível efetuar %s porque tem ficheiros não integrados."
+msgstr "É impossível fazer %s porque tem ficheiros em separado."
 
-#: advice.c:265
+#: advice.c:268
 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 ""
-"Corrija-os na árvore de trabalho e use 'git add/rm <ficheiro>'\n"
-"conforme apropriado para marcá-los como resolvidos e submeta."
+"Corrija-os em worktree, e use 'git add/rm <ficheiro>' apropriadamente\n"
+"para marcar resolução e fazer uma memória."
 
-#: advice.c:273
+#: advice.c:276
 msgid "Exiting because of an unresolved conflict."
-msgstr "A terminar devido a conflito não resolvido."
+msgstr "Saindo devido a conflito por resolver."
 
-#: advice.c:278 builtin/merge.c:1349
+#: advice.c:281 builtin/merge.c:1369
 msgid "You have not concluded your merge (MERGE_HEAD exists)."
-msgstr "Não concluído a integração (MERGE_HEAD presente)."
+msgstr "O teu juntar ficou por concluír (MERGE_HEAD presente)."
 
-#: advice.c:280
+#: advice.c:283
 msgid "Please, commit your changes before merging."
-msgstr "Submeta as suas alterações antes de integrar."
+msgstr "Por favor, memoriza as tuas modificações antes de juntar."
 
-#: advice.c:281
+#: advice.c:284
 msgid "Exiting because of unfinished merge."
-msgstr "A terminar devido a integração incompleta."
+msgstr "Saindo devido a juntar inacabado."
 
-#: advice.c:287
+#: advice.c:290
 #, fuzzy, c-format
 msgid ""
 "Note: switching to '%s'.\n"
@@ -856,44 +980,51 @@ msgid ""
 "false\n"
 "\n"
 msgstr ""
-"Nota: a extrair '%s'.\n"
+"Nota: trocando para '%s'.\n"
 "\n"
-"Encontra-se em estado 'HEAD destacada'. Pode inspecionar, fazer alterações\n"
-"experimentais e submetê-las e pode descartar qualquer commit que faça neste\n"
-"estado sem interferir outro ramo se extrair outro ramo.\n"
+"Está em 'HEAD solta'. Podes olhar, fazer mudanças experimentais e\n"
+"memorizá-las, e, neste estado, podes descartar qualquer memória que faças\n"
+"sem interferir em qualquer ramo fazendo um switch de ramos.\n"
 "\n"
-"Se deseja criar um novo ramo para reter os commits que criou, pode fazê-lo\n"
-"(agora ou mais tarde) usando -b com o comando checkout outra vez. Exemplo:\n"
+"Se queres criar um novo ramo para reter as memórias que criaste, podes\n"
+"fazer (agora ou mais tarde) usando -c com o comando switch. Exemplo:\n"
 "\n"
-"  git checkout -b <novo-nome-ramo>\n"
+"  git switch -c <novo-nome-de-branch>\n"
+"\n"
+"Ou desfazer esta operação com:\n"
+"\n"
+"  git switch -\n"
+"\n"
+"Desliga este conselho pondo a variável de config advice.detachedHead em"
+"false\n"
 "\n"
 
 #: alias.c:50
 #, fuzzy
 msgid "cmdline ends with \\"
-msgstr "terminar entradas com NUL"
+msgstr "cmdline termina com \\"
 
 #: alias.c:51
 msgid "unclosed quote"
-msgstr ""
+msgstr "aspa aberta"
 
 #: apply.c:69
 #, c-format
 msgid "unrecognized whitespace option '%s'"
-msgstr "opção de espaço em branco não reconhecida '%s'"
+msgstr "opção de whitespace desconhecida '%s'"
 
 #: apply.c:85
 #, c-format
 msgid "unrecognized whitespace ignore option '%s'"
-msgstr "opção de ignorar espaço em branco não reconhecida '%s'"
+msgstr "opção de ignorar whitespace desconhecida '%s'"
 
 #: apply.c:135
 msgid "--reject and --3way cannot be used together."
-msgstr "--reject e --3way não podem ser usados juntos."
+msgstr "--reject e --3way só podem ser usados separadamente."
 
 #: apply.c:137
 msgid "--cached and --3way cannot be used together."
-msgstr "--cached e --3way não podem ser usados juntos."
+msgstr "--cached e --3way só podem ser usados separadamente."
 
 #: apply.c:140
 msgid "--3way outside a repository"
@@ -910,53 +1041,50 @@ msgstr "--cached fora de um repositório"
 #: apply.c:801
 #, c-format
 msgid "Cannot prepare timestamp regexp %s"
-msgstr "Não é possível preparar a regexp de carimbo de data/hora %s"
+msgstr "Incapaz preparar timestamp de regexp %s"
 
 #: apply.c:810
 #, c-format
 msgid "regexec returned %d for input: %s"
-msgstr "regexec retornou %d para a entra: %s"
+msgstr "regexec devolveu %d para input: %s"
 
 #: apply.c:884
 #, c-format
 msgid "unable to find filename in patch at line %d"
-msgstr "não foi possível encontrar o nome do ficheiro no patch na linha %d"
+msgstr "incapaz de encontrar o nome do ficheiro no patch da linha %d"
 
 #: apply.c:922
 #, c-format
 msgid "git apply: bad git-diff - expected /dev/null, got %s on line %d"
-msgstr ""
-"git apply: git-diff incorreto - esperava-se /dev/null, obteve-se %s na linha "
+msgstr "git apply: git-diff incorreto - esperava /dev/null, tive %s na linha "
 "%d"
 
 #: apply.c:928
 #, c-format
 msgid "git apply: bad git-diff - inconsistent new filename on line %d"
-msgstr ""
-"git apply: git-diff incorreto - o nome do novo ficheiro na linha %d é "
-"inconsistente"
+msgstr "git apply: git-diff incorreto - novo nome de ficheiro inconsistente "
+"na linha %d"
 
 #: apply.c:929
 #, c-format
 msgid "git apply: bad git-diff - inconsistent old filename on line %d"
-msgstr ""
-"git apply: git-diff incorreto - o nome do ficheiro antigo na linha %d é "
-"inconsistente"
+msgstr "git apply: git-diff incorreto - antigo nome de ficheiro inconsistente "
+"na linha %d"
 
 #: apply.c:934
 #, c-format
 msgid "git apply: bad git-diff - expected /dev/null on line %d"
-msgstr "git apply: git-diff incorreto - esperava-se /dev/null na linha %d"
+msgstr "git apply: git-diff incorreto - esperava /dev/null na linha %d"
 
 #: apply.c:963
 #, fuzzy, c-format
 msgid "invalid mode on line %d: %s"
-msgstr "linha de identidade inválida: %s"
+msgstr "modo inválido na linha %d: %s"
 
 #: apply.c:1282
 #, c-format
 msgid "inconsistent header lines %d and %d"
-msgstr ""
+msgstr "linhas de cabeçalho %d e %d inconsistentes"
 
 #: apply.c:1372
 #, c-format
@@ -967,16 +1095,16 @@ msgid_plural ""
 "git diff header lacks filename information when removing %d leading pathname "
 "components (line %d)"
 msgstr[0] ""
-"o cabeçalho do git diff não revelou o nome do ficheiro depois de se remover "
-"%d componente do caminho (linha %d)"
+"cabeçalho do git diff falta informação de nome de ficheiro quando removendo"
+"%d componente do pathname (linha %d)"
 msgstr[1] ""
-"o cabeçalho do git diff não revelou o nome do ficheiro depois de se remover "
-"%d componentes de caminho (linha %d)"
+"cabeçalho do git diff falta informação de nome de ficheiro quando removendo "
+"%d componentes do pathname (linha %d)"
 
 #: apply.c:1385
 #, c-format
 msgid "git diff header lacks filename information (line %d)"
-msgstr "o cabeçalho do git diff não revela o nome do ficheiro (linha %d)"
+msgstr "cabeçalho do git diff falta informação de nome de ficheiro (linha %d)"
 
 #: apply.c:1481
 #, c-format
@@ -990,56 +1118,56 @@ msgstr "fragmento de patch sem cabeçalho na linha %d: %.*s"
 
 #: apply.c:1753
 msgid "new file depends on old contents"
-msgstr "novo ficheiro depende de conteúdos antigos"
+msgstr "novo ficheiro depende de conteúdos antigos"
 
 #: apply.c:1755
 msgid "deleted file still has contents"
-msgstr "ficheiro eliminado ainda tem conteúdos"
+msgstr "ficheiro eliminado ainda tem conteúdos"
 
 #: apply.c:1789
 #, c-format
 msgid "corrupt patch at line %d"
-msgstr "patch corrompido na linha %d"
+msgstr "patch roto na linha %d"
 
 #: apply.c:1826
 #, c-format
 msgid "new file %s depends on old contents"
-msgstr "novo ficheiro %s depende de conteúdos antigos"
+msgstr "novo ficheiro %s depende de conteúdos antigos"
 
 #: apply.c:1828
 #, c-format
 msgid "deleted file %s still has contents"
-msgstr "o ficheiro eliminado %s ainda tem conteúdos"
+msgstr "ficheiro apagado %s ainda tem conteúdos"
 
 #: apply.c:1831
 #, c-format
 msgid "** warning: file %s becomes empty but is not deleted"
-msgstr "** aviso: o ficheiro %s ficará vazio, mas não será eliminado"
+msgstr "** aviso: ficheiro %s fica vazio e mantêm-se"
 
 #: apply.c:1978
 #, c-format
 msgid "corrupt binary patch at line %d: %.*s"
-msgstr "patch binário corrompido na linha %d: %.*s"
+msgstr "patch binário roto na linha %d: %.*s"
 
 #: apply.c:2015
 #, c-format
 msgid "unrecognized binary patch at line %d"
-msgstr "patch binário não reconhecido na linha %d"
+msgstr "patch binário irreconhecível na linha %d"
 
 #: apply.c:2177
 #, c-format
 msgid "patch with only garbage at line %d"
-msgstr "patch incompreensível na linha %d"
+msgstr "patch com apenas lixo na linha %d"
 
 #: apply.c:2263
 #, c-format
 msgid "unable to read symlink %s"
-msgstr "não é possível ler a ligação simbólica %s"
+msgstr "incapaz de ler ligação simbólica %s"
 
 #: apply.c:2267
 #, c-format
 msgid "unable to open or read %s"
-msgstr "não é possível abrir ou ler %s"
+msgstr "incapaz de abrir ou ler %s"
 
 #: apply.c:2936
 #, c-format
@@ -1050,13 +1178,13 @@ msgstr "início de linha inválido: '%c'"
 #, c-format
 msgid "Hunk #%d succeeded at %d (offset %d line)."
 msgid_plural "Hunk #%d succeeded at %d (offset %d lines)."
-msgstr[0] "Excerto nº%d bem sucedido na linha %d (%d linha deslocada)."
-msgstr[1] "Excerto nº%d bem sucedido na linha %d (%d linhas deslocadas)."
+msgstr[0] "Pedaço #%d apareceu em %d (%d offset de linha)."
+msgstr[1] "Pedaço #%d apareceu em %d (%d offset de linhas)."
 
 #: apply.c:3069
 #, c-format
 msgid "Context reduced to (%ld/%ld) to apply fragment at %d"
-msgstr "Contexto reduzido para (%ld/%ld) para aplicar o fragmento em %d"
+msgstr "Contexto reduzido a (%ld/%ld) para submeter fragmento em %d"
 
 #: apply.c:3075
 #, c-format
@@ -1064,96 +1192,91 @@ msgid ""
 "while searching for:\n"
 "%.*s"
 msgstr ""
-"ao procura por:\n"
+"procurando por:\n"
 "%.*s"
 
 #: apply.c:3097
 #, c-format
 msgid "missing binary patch data for '%s'"
-msgstr "falta de dados do patch binário '%s'"
+msgstr "faltando patch binário para '%s'"
 
 #: apply.c:3105
 #, c-format
 msgid "cannot reverse-apply a binary patch without the reverse hunk to '%s'"
-msgstr ""
-"não é possível aplicar o reverso de um patch binário a '%s' sem o excerto "
-"reverso"
+msgstr "incapaz submeter-inversamente patch binário sem pedaço "
+"inverso a '%s'"
 
 #: apply.c:3152
 #, c-format
 msgid "cannot apply binary patch to '%s' without full index line"
-msgstr ""
-"não é possível aplicar patch binário a '%s' sem linha de índice completa"
+msgstr "incapaz submeter patch binário a '%s' sem a linha completa de index"
 
 #: apply.c:3163
 #, c-format
 msgid ""
 "the patch applies to '%s' (%s), which does not match the current contents."
 msgstr ""
-"o patch aplica-se a '%s' (%s), que não corresponde aos conteúdos atuais."
+"o patch submete-se a '%s' (%s), que corresponde a conteúdo actual nenhum."
 
 #: apply.c:3171
 #, c-format
 msgid "the patch applies to an empty '%s' but it is not empty"
-msgstr "o patch aplica-se a um '%s' vazio mas não está vazio"
+msgstr "o patch submete-se a um '%s' vazio mas tem conteúdo"
 
 #: apply.c:3189
 #, c-format
 msgid "the necessary postimage %s for '%s' cannot be read"
-msgstr "não é possível ler a postimage necessária %s de '%s'"
+msgstr "incapaz ler a postimage necessária %s para '%s'"
 
 #: apply.c:3202
 #, c-format
 msgid "binary patch does not apply to '%s'"
-msgstr "o patch binário não foi aplicado corretamente a '%s'"
+msgstr "path binário submete-se a '%s' de maneira nenhuma"
 
 #: apply.c:3209
 #, c-format
 msgid "binary patch to '%s' creates incorrect result (expecting %s, got %s)"
-msgstr ""
-"o patch binário aplicado a '%s' gera resultados incorretos (esperava-se %s, "
-"obteve-se %s)"
+msgstr "patch binário para '%s' cria resultado incorreto (esperei %s, "
+"recebi %s)"
 
 #: apply.c:3230
 #, c-format
 msgid "patch failed: %s:%ld"
-msgstr "falha ao aplicar o patch: %s:%ld"
+msgstr "patch falhou: %s:%ld"
 
 #: apply.c:3353
 #, c-format
 msgid "cannot checkout %s"
-msgstr "não é possível extrair %s"
+msgstr "incapaz de checkout %s"
 
-#: apply.c:3405 apply.c:3416 apply.c:3462 midx.c:72 setup.c:308
+#: apply.c:3405 apply.c:3416 apply.c:3462 midx.c:73 setup.c:308
 #, c-format
 msgid "failed to read %s"
-msgstr "falha ao ler %s"
+msgstr "falha a ler %s"
 
 #: apply.c:3413
 #, c-format
 msgid "reading from '%s' beyond a symbolic link"
-msgstr "a ler '%s' indicado por uma ligação simbólica"
+msgstr "lendo '%s' além de uma ligação simbólica"
 
 #: apply.c:3442 apply.c:3685
 #, c-format
 msgid "path %s has been renamed/deleted"
-msgstr "o caminho %s foi eliminado ou mudou de nome"
+msgstr "path %s mudou de nome ou foi eliminado"
 
 #: apply.c:3528 apply.c:3700
 #, c-format
 msgid "%s: does not exist in index"
-msgstr "%s: não existe no índice"
+msgstr "%s: tem inexistência no index"
 
 #: apply.c:3537 apply.c:3708 apply.c:3953
 #, c-format
 msgid "%s: does not match index"
-msgstr "%s: não tem correspondência no índice"
+msgstr "%s: tem correspondência nenhuma no index"
 
 #: apply.c:3572
 msgid "repository lacks the necessary blob to fall back on 3-way merge."
-msgstr ""
-"o repositório não tem o blob necessário para recorrer a integração com 3 "
-"pontos."
+msgstr "repositório falta o blob necessário para recorrer à junção-de-3."
 
 #: apply.c:3575
 #, c-format
@@ -1286,7 +1409,7 @@ msgstr ""
 msgid "unable to add cache entry for %s"
 msgstr "não é possível adicionar %s à cache"
 
-#: apply.c:4376 builtin/bisect--helper.c:537
+#: apply.c:4376 builtin/bisect--helper.c:524
 #, c-format
 msgid "failed to write to '%s'"
 msgstr "falha ao escrever para '%s'"
@@ -1337,172 +1460,172 @@ msgstr "Excerto nº%d aplicado com sucesso."
 msgid "Rejected hunk #%d."
 msgstr "Excerto nº%d rejeitado."
 
-#: apply.c:4715
+#: apply.c:4720
 #, c-format
 msgid "Skipped patch '%s'."
 msgstr "Patch '%s' ignorado."
 
-#: apply.c:4723
+#: apply.c:4728
 msgid "unrecognized input"
 msgstr "entrada não reconhecida"
 
-#: apply.c:4743
+#: apply.c:4748
 msgid "unable to read index file"
 msgstr "não foi possível ler o ficheiro de índice"
 
-#: apply.c:4900
+#: apply.c:4905
 #, c-format
 msgid "can't open patch '%s': %s"
 msgstr "não é possível abrir o patch '%s': %s"
 
-#: apply.c:4927
+#: apply.c:4932
 #, c-format
 msgid "squelched %d whitespace error"
 msgid_plural "squelched %d whitespace errors"
 msgstr[0] "%d erro de espaço em branco reprimido"
 msgstr[1] "%d erros de espaço em branco reprimidos"
 
-#: apply.c:4933 apply.c:4948
+#: apply.c:4938 apply.c:4953
 #, c-format
 msgid "%d line adds whitespace errors."
 msgid_plural "%d lines add whitespace errors."
 msgstr[0] "%d linha adiciona erros de espaço em branco."
 msgstr[1] "%d linhas adicionam erros de espaço em branco."
 
-#: apply.c:4941
+#: apply.c:4946
 #, c-format
 msgid "%d line applied after fixing whitespace errors."
 msgid_plural "%d lines applied after fixing whitespace errors."
 msgstr[0] "%d linha aplicada depois de corrigir erros de espaço em branco."
 msgstr[1] "%d linhas aplicadas depois de corrigir erros de espaço em branco."
 
-#: apply.c:4957 builtin/add.c:618 builtin/mv.c:304 builtin/rm.c:406
+#: apply.c:4962 builtin/add.c:618 builtin/mv.c:304 builtin/rm.c:406
 msgid "Unable to write new index file"
 msgstr "Não foi possível escrever novo ficheiro de índice"
 
-#: apply.c:4985
+#: apply.c:4990
 msgid "don't apply changes matching the given path"
 msgstr "não aplicar alterações que correspondam ao caminho fornecido"
 
-#: apply.c:4988
+#: apply.c:4993
 msgid "apply changes matching the given path"
 msgstr "aplicar alterações que correspondam ao caminho fornecido"
 
-#: apply.c:4990 builtin/am.c:2279
+#: apply.c:4995 builtin/am.c:2266
 msgid "num"
 msgstr "num"
 
-#: apply.c:4991
+#: apply.c:4996
 msgid "remove <num> leading slashes from traditional diff paths"
 msgstr "remover <num> barras à esquerda dos caminhos de diff tradicional"
 
-#: apply.c:4994
+#: apply.c:4999
 msgid "ignore additions made by the patch"
 msgstr "ignorar adições feitas pelo patch"
 
-#: apply.c:4996
+#: apply.c:5001
 msgid "instead of applying the patch, output diffstat for the input"
-msgstr "em vez de aplicar o patch, mostrar o diffstat da entrada"
+msgstr "invés aplicada patch, output diffstat para "
 
-#: apply.c:5000
+#: apply.c:5005
 msgid "show number of added and deleted lines in decimal notation"
 msgstr "mostrar número de linhas adicionadas e removidas em notação decimal"
 
-#: apply.c:5002
+#: apply.c:5007
 msgid "instead of applying the patch, output a summary for the input"
 msgstr "em vez de aplicar o patch, mostrar um resumo da entrada"
 
-#: apply.c:5004
+#: apply.c:5009
 msgid "instead of applying the patch, see if the patch is applicable"
 msgstr "em vez de aplicar o patch, verificar se o patch pode ser aplicado"
 
-#: apply.c:5006
+#: apply.c:5011
 msgid "make sure the patch is applicable to the current index"
 msgstr "garantir que o patch pode ser aplicado ao índice atual"
 
-#: apply.c:5008
+#: apply.c:5013
 msgid "mark new files with `git add --intent-to-add`"
 msgstr ""
 
-#: apply.c:5010
+#: apply.c:5015
 msgid "apply a patch without touching the working tree"
 msgstr "aplicar um patch sem tocar na árvore de trabalho"
 
-#: apply.c:5012
+#: apply.c:5017
 msgid "accept a patch that touches outside the working area"
 msgstr "aceitar patches que alteram ficheiros fora da área de trabalho"
 
-#: apply.c:5015
+#: apply.c:5020
 msgid "also apply the patch (use with --stat/--summary/--check)"
 msgstr "aplicar o patch também (use com --stat/--summary/--check)"
 
-#: apply.c:5017
+#: apply.c:5022
 msgid "attempt three-way merge if a patch does not apply"
 msgstr "tentar integração com três pontos se um patch não se aplica com êxito"
 
-#: apply.c:5019
+#: apply.c:5024
 msgid "build a temporary index based on embedded index information"
 msgstr ""
 "construir um índice temporário baseado na informação incorporada do índice"
 
-#: apply.c:5022 builtin/checkout-index.c:173 builtin/ls-files.c:525
+#: apply.c:5027 builtin/checkout-index.c:182 builtin/ls-files.c:525
 msgid "paths are separated with NUL character"
 msgstr "os caminhos estão separados por caracteres NUL"
 
-#: apply.c:5024
+#: apply.c:5029
 msgid "ensure at least <n> lines of context match"
 msgstr "garantir que, pelo menos, <n> linhas de contexto coincidem"
 
-#: apply.c:5025 builtin/am.c:2258 builtin/interpret-trailers.c:98
+#: apply.c:5030 builtin/am.c:2245 builtin/interpret-trailers.c:98
 #: builtin/interpret-trailers.c:100 builtin/interpret-trailers.c:102
-#: builtin/pack-objects.c:3562 builtin/rebase.c:1340
+#: builtin/pack-objects.c:3562 builtin/rebase.c:1346
 msgid "action"
 msgstr "ação"
 
-#: apply.c:5026
+#: apply.c:5031
 msgid "detect new or modified lines that have whitespace errors"
 msgstr "detetar linhas novas ou modificadas que tenham espaços em branco"
 
-#: apply.c:5029 apply.c:5032
+#: apply.c:5034 apply.c:5037
 msgid "ignore changes in whitespace when finding context"
 msgstr "ignorar alterações de espaço em branco ao procurar contexto"
 
-#: apply.c:5035
+#: apply.c:5040
 msgid "apply the patch in reverse"
 msgstr "aplicar o patch em reverso"
 
-#: apply.c:5037
+#: apply.c:5042
 msgid "don't expect at least one line of context"
-msgstr "não esperar nenhuma linha de contexto"
+msgstr "conta com linha de contexto nenhuma"
 
-#: apply.c:5039
+#: apply.c:5044
 msgid "leave the rejected hunks in corresponding *.rej files"
 msgstr "deixar os excertos rejeitados nos respetivos ficheiros *.rej"
 
-#: apply.c:5041
+#: apply.c:5046
 msgid "allow overlapping hunks"
 msgstr "permitir a sobreposição de excertos"
 
-#: apply.c:5042 builtin/add.c:329 builtin/check-ignore.c:22
+#: apply.c:5047 builtin/add.c:329 builtin/check-ignore.c:22
 #: builtin/commit.c:1364 builtin/count-objects.c:98 builtin/fsck.c:775
-#: builtin/log.c:2270 builtin/mv.c:123 builtin/read-tree.c:128
+#: builtin/log.c:2287 builtin/mv.c:123 builtin/read-tree.c:128
 msgid "be verbose"
 msgstr "ser verboso"
 
-#: apply.c:5044
+#: apply.c:5049
 msgid "tolerate incorrectly detected missing new-line at the end of file"
 msgstr ""
 "tolerar deteções incorretas de falta de nova linha no final do ficheiro"
 
-#: apply.c:5047
+#: apply.c:5052
 msgid "do not trust the line counts in the hunk headers"
 msgstr "não confiar na contagem de linhas no cabeçalho dos excertos"
 
-#: apply.c:5049 builtin/am.c:2267
+#: apply.c:5054 builtin/am.c:2254
 msgid "root"
 msgstr "raiz"
 
-#: apply.c:5050
+#: apply.c:5055
 msgid "prepend <root> to all filenames"
 msgstr "preceder <root> a todos os nomes de ficheiro"
 
@@ -1516,17 +1639,17 @@ msgstr "não é possível guardar %s"
 msgid "unsupported file mode: 0%o (SHA1: %s)"
 msgstr "versão de índice %s não suportada"
 
-#: archive-tar.c:449
+#: archive-tar.c:450
 #, fuzzy, c-format
 msgid "unable to start '%s' filter"
 msgstr "não foi possível criar '%s'"
 
-#: archive-tar.c:452
+#: archive-tar.c:453
 #, fuzzy
 msgid "unable to redirect descriptor"
 msgstr "não foi possível refrescar o índice"
 
-#: archive-tar.c:459
+#: archive-tar.c:460
 #, c-format
 msgid "'%s' filter reported error"
 msgstr ""
@@ -1575,9 +1698,9 @@ msgstr "git archive --remote <repo> [--exec <cmd>] --list"
 msgid "cannot read %s"
 msgstr "não é possível ler '%s'"
 
-#: archive.c:345 sequencer.c:445 sequencer.c:1706 sequencer.c:2852
-#: sequencer.c:3293 sequencer.c:3402 builtin/am.c:263 builtin/commit.c:786
-#: builtin/merge.c:1124
+#: archive.c:345 sequencer.c:459 sequencer.c:1736 sequencer.c:2886
+#: sequencer.c:3327 sequencer.c:3436 builtin/am.c:249 builtin/commit.c:786
+#: builtin/merge.c:1138
 #, c-format
 msgid "could not read '%s'"
 msgstr "não foi possível ler '%s'"
@@ -1585,7 +1708,7 @@ msgstr "não foi possível ler '%s'"
 #: archive.c:430 builtin/add.c:181 builtin/add.c:594 builtin/rm.c:315
 #, c-format
 msgid "pathspec '%s' did not match any files"
-msgstr "o especificador de caminho '%s' não corresponde a nenhum ficheiro"
+msgstr "especificador de path '%s' correspondeu a ficheiro nenhum"
 
 #: archive.c:454
 #, fuzzy, c-format
@@ -1617,120 +1740,113 @@ msgstr "objeto não encontrado: %s"
 msgid "Not a regular file: %s"
 msgstr "o ficheiro %s não é um ficheiro regular"
 
-#: archive.c:553
+#: archive.c:555
 msgid "fmt"
 msgstr "fmt"
 
-#: archive.c:553
+#: archive.c:555
 msgid "archive format"
 msgstr "formato do arquivo"
 
-#: archive.c:554 builtin/log.c:1760
+#: archive.c:556 builtin/log.c:1765
 msgid "prefix"
 msgstr "prefixo"
 
-#: archive.c:555
+#: archive.c:557
 msgid "prepend prefix to each pathname in the archive"
 msgstr "preceder o prefixo a cada nome de caminho dentro do arquivo"
 
-#: archive.c:556 archive.c:559 builtin/blame.c:884 builtin/blame.c:888
-#: builtin/blame.c:889 builtin/commit-tree.c:117 builtin/config.c:133
+#: archive.c:558 archive.c:561 builtin/blame.c:886 builtin/blame.c:890
+#: builtin/blame.c:891 builtin/commit-tree.c:117 builtin/config.c:135
 #: builtin/fast-export.c:1208 builtin/fast-export.c:1210
-#: builtin/fast-export.c:1214 builtin/grep.c:908 builtin/hash-object.c:105
+#: builtin/fast-export.c:1214 builtin/grep.c:919 builtin/hash-object.c:105
 #: builtin/ls-files.c:561 builtin/ls-files.c:564 builtin/notes.c:412
 #: builtin/notes.c:578 builtin/read-tree.c:123 parse-options.h:190
 msgid "file"
 msgstr "ficheiro"
 
-#: archive.c:557
+#: archive.c:559
 #, fuzzy
 msgid "add untracked file to archive"
 msgstr "Modo inválido de ficheiros não controlados '%s'"
 
-#: archive.c:560 builtin/archive.c:90
+#: archive.c:562 builtin/archive.c:90
 msgid "write the archive to this file"
 msgstr "escrever o arquivo para este ficheiro"
 
-#: archive.c:562
+#: archive.c:564
 msgid "read .gitattributes in working directory"
 msgstr "ler .gitattributes do diretório de trabalho"
 
-#: archive.c:563
+#: archive.c:565
 msgid "report archived files on stderr"
 msgstr "listar ficheiros arquivados para stderr"
 
-#: archive.c:564
-msgid "store only"
-msgstr "armazenar apenas"
-
-#: archive.c:565
-msgid "compress faster"
-msgstr "compressão rápida"
-
-#: archive.c:573
-msgid "compress better"
-msgstr "compressão ótima"
+#: archive.c:567
+#, fuzzy
+msgid "set compression level"
+msgstr "nível de compactação do pacote"
 
-#: archive.c:576
+#: archive.c:570
 msgid "list supported archive formats"
 msgstr "listar formatos de arquivo suportados"
 
-#: archive.c:578 builtin/archive.c:91 builtin/clone.c:113 builtin/clone.c:116
+#: archive.c:572 builtin/archive.c:91 builtin/clone.c:114 builtin/clone.c:117
 #: builtin/submodule--helper.c:1830 builtin/submodule--helper.c:2335
 msgid "repo"
 msgstr "repo"
 
-#: archive.c:579 builtin/archive.c:92
+#: archive.c:573 builtin/archive.c:92
 msgid "retrieve the archive from remote repository <repo>"
 msgstr "obter o arquivo a partir do repositório remoto <repo>"
 
-#: archive.c:580 builtin/archive.c:93 builtin/difftool.c:715
+#: archive.c:574 builtin/archive.c:93 builtin/difftool.c:714
 #: builtin/notes.c:498
 msgid "command"
 msgstr "comando"
 
-#: archive.c:581 builtin/archive.c:94
+#: archive.c:575 builtin/archive.c:94
 msgid "path to the remote git-upload-archive command"
 msgstr "caminho para o comando git-upload-archive no remoto"
 
-#: archive.c:588
+#: archive.c:582
 msgid "Unexpected option --remote"
 msgstr "Opção inesperada --remote"
 
-#: archive.c:590
+#: archive.c:584
 msgid "Option --exec can only be used together with --remote"
 msgstr "A opção --exec só pode ser usada em conjunto com --remote"
 
-#: archive.c:592
+#: archive.c:586
 msgid "Unexpected option --output"
 msgstr "Opção inesperada --output"
 
-#: archive.c:594
+#: archive.c:588
 #, fuzzy
 msgid "Options --add-file and --remote cannot be used together"
 msgstr "As opções --squash e --fixup não podem ser usadas juntas"
 
-#: archive.c:616
+#: archive.c:610
 #, c-format
 msgid "Unknown archive format '%s'"
 msgstr "Formato de arquivo desconhecido '%s'"
 
-#: archive.c:623
+#: archive.c:619
 #, c-format
 msgid "Argument not supported for format '%s': -%d"
 msgstr "Argumento não suportado para o formato '%s': -%d"
 
-#: attr.c:212
+#: attr.c:202
 #, c-format
 msgid "%.*s is not a valid attribute name"
 msgstr "%.*s não é um nome de atributo válido"
 
-#: attr.c:369
+#: attr.c:359
 #, fuzzy, c-format
 msgid "%s not allowed: %s:%d"
 msgstr "falha ao aplicar o patch: %s:%ld"
 
-#: attr.c:409
+#: attr.c:399
 msgid ""
 "Negative patterns are ignored in git attributes\n"
 "Use '\\!' for literal leading exclamation."
@@ -1738,22 +1854,22 @@ msgstr ""
 "Os padrões negativos são ignorados nos atributos do git\n"
 "Use '\\!' para uma exclamação literal à esquerda."
 
-#: bisect.c:476
+#: bisect.c:489
 #, c-format
 msgid "Badly quoted content in file '%s': %s"
 msgstr "Conteúdo incorretamente citado no ficheiro '%s': %s"
 
-#: bisect.c:686
+#: bisect.c:699
 #, c-format
 msgid "We cannot bisect more!\n"
 msgstr "Não se está a bissetar mais!\n"
 
-#: bisect.c:753
+#: bisect.c:766
 #, c-format
 msgid "Not a valid commit name %s"
 msgstr "%s não é um nome de commit válido"
 
-#: bisect.c:778
+#: bisect.c:791
 #, c-format
 msgid ""
 "The merge base %s is bad.\n"
@@ -1762,7 +1878,7 @@ msgstr ""
 "A base de integração %s é má (bad).\n"
 "Significa que o bug foi corrigido entre %s e [%s].\n"
 
-#: bisect.c:783
+#: bisect.c:796
 #, c-format
 msgid ""
 "The merge base %s is new.\n"
@@ -1771,7 +1887,7 @@ msgstr ""
 "A base de integração %s é nova (new).\n"
 "A propriedade foi mudada entre %s e [%s].\n"
 
-#: bisect.c:788
+#: bisect.c:801
 #, c-format
 msgid ""
 "The merge base %s is %s.\n"
@@ -1780,7 +1896,7 @@ msgstr ""
 "A base de integração %s é %s.\n"
 "Significa que o primeiro commit '%s' está entre %s e [%s].\n"
 
-#: bisect.c:796
+#: bisect.c:809
 #, c-format
 msgid ""
 "Some %s revs are not ancestors of the %s rev.\n"
@@ -1791,7 +1907,7 @@ msgstr ""
 "git bisect não pode funcionar corretamente nesta situação.\n"
 "Talvez confundiu revisões %s e %s?\n"
 
-#: bisect.c:809
+#: bisect.c:822
 #, c-format
 msgid ""
 "the merge base between %s and [%s] must be skipped.\n"
@@ -1803,36 +1919,36 @@ msgstr ""
 "%s.\n"
 "Continua-se de qualquer maneira."
 
-#: bisect.c:848
+#: bisect.c:861
 #, c-format
 msgid "Bisecting: a merge base must be tested\n"
 msgstr "A bissetar: uma base de integração tem de ser testada\n"
 
-#: bisect.c:898
+#: bisect.c:911
 #, c-format
 msgid "a %s revision is needed"
 msgstr "precisa-se de uma revisão %s"
 
-#: bisect.c:928 builtin/notes.c:177 builtin/tag.c:255
+#: bisect.c:941 builtin/notes.c:177 builtin/tag.c:255
 #, c-format
 msgid "could not create file '%s'"
 msgstr "não foi possível criar o ficheiro '%s'"
 
-#: bisect.c:974 builtin/merge.c:150
+#: bisect.c:987 builtin/merge.c:152
 #, c-format
 msgid "could not read file '%s'"
 msgstr "não foi possível ler o ficheiro '%s'"
 
-#: bisect.c:1014
+#: bisect.c:1027
 msgid "reading bisect refs failed"
 msgstr "falha ao ler referências bissetadas"
 
-#: bisect.c:1044
+#: bisect.c:1057
 #, c-format
 msgid "%s was both %s and %s\n"
 msgstr "%s era %s e %s em simultâneo\n"
 
-#: bisect.c:1053
+#: bisect.c:1066
 #, c-format
 msgid ""
 "No testable commit found.\n"
@@ -1841,7 +1957,7 @@ msgstr ""
 "Nenhum commit testável encontrado.\n"
 "Talvez tenha começado com parâmetros de caminho incorretos?\n"
 
-#: bisect.c:1082
+#: bisect.c:1095
 #, c-format
 msgid "(roughly %d step)"
 msgid_plural "(roughly %d steps)"
@@ -1851,46 +1967,46 @@ msgstr[1] "(aproximadamente %d passos)"
 #. TRANSLATORS: the last %s will be replaced with "(roughly %d
 #. steps)" translation.
 #.
-#: bisect.c:1088
+#: bisect.c:1101
 #, 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] "A bissetar: falta %d revisão para testar depois desta %s\n"
 msgstr[1] "A bissetar: faltam %d revisões para testar depois desta %s\n"
 
-#: blame.c:2778
+#: blame.c:2777
 msgid "--contents and --reverse do not blend well."
 msgstr "--contents e --reverse não se misturam bem."
 
-#: blame.c:2792
+#: blame.c:2791
 msgid "cannot use --contents with final commit object name"
 msgstr "não é possível usar --contents com nome de objeto commit final"
 
-#: blame.c:2813
+#: blame.c:2812
 msgid "--reverse and --first-parent together require specified latest commit"
 msgstr ""
 "--reverse e --first-parent juntos requer que se especifique o último commit"
 
-#: blame.c:2822 bundle.c:213 ref-filter.c:2264 remote.c:2020 sequencer.c:2105
-#: sequencer.c:4606 submodule.c:855 builtin/commit.c:1045 builtin/log.c:404
-#: builtin/log.c:1020 builtin/log.c:1622 builtin/log.c:2029 builtin/log.c:2319
-#: builtin/merge.c:414 builtin/pack-objects.c:3380 builtin/pack-objects.c:3395
-#: builtin/shortlog.c:320
+#: blame.c:2821 bundle.c:213 ref-filter.c:2272 remote.c:2031 sequencer.c:2138
+#: sequencer.c:4633 submodule.c:855 builtin/commit.c:1045 builtin/log.c:409
+#: builtin/log.c:1023 builtin/log.c:1625 builtin/log.c:2046 builtin/log.c:2336
+#: builtin/merge.c:423 builtin/pack-objects.c:3380 builtin/pack-objects.c:3395
+#: builtin/shortlog.c:267
 msgid "revision walk setup failed"
 msgstr "falha ao configurar percurso de revisões"
 
-#: blame.c:2840
+#: blame.c:2839
 msgid ""
 "--reverse --first-parent together require range along first-parent chain"
 msgstr ""
 "--reverse --first-parent juntos requer intervalo ao longo do primeiro-pai"
 
-#: blame.c:2851
+#: blame.c:2850
 #, c-format
 msgid "no such path %s in %s"
 msgstr "o caminho %s não existe em %s"
 
-#: blame.c:2862
+#: blame.c:2861
 #, c-format
 msgid "cannot read blob %s for path %s"
 msgstr "não é possível ler o blob %s do caminho %s"
@@ -2003,7 +2119,7 @@ msgstr ""
 "a montante que já existe no remoto, pode ser necessário\n"
 "executar \"git fetch\" para obtê-lo.\n"
 "\n"
-"Se pretende publicar um novo ramo local que irá seguir\n"
+"Se pretende atirar um novo ramo local que irá seguir\n"
 "o seu homólogo remoto, pode usar \"git push -u\" para configurar\n"
 "o respetivo ramo a montante, ao mesmo tempo que publica."
 
@@ -2052,7 +2168,7 @@ msgstr "'%s' não parece ser um ficheiro bundle v2"
 msgid "unrecognized header: %s%s (%d)"
 msgstr "cabeçalho não reconhecido: %s%s (%d)"
 
-#: bundle.c:136 rerere.c:480 rerere.c:690 sequencer.c:2357 sequencer.c:3142
+#: bundle.c:136 rerere.c:480 rerere.c:690 sequencer.c:2390 sequencer.c:3176
 #: builtin/commit.c:814
 #, c-format
 msgid "could not open '%s'"
@@ -2117,7 +2233,7 @@ msgstr "versão de índice %s não suportada"
 msgid "cannot write bundle version %d with algorithm %s"
 msgstr ""
 
-#: bundle.c:522 builtin/log.c:207 builtin/log.c:1918 builtin/shortlog.c:461
+#: bundle.c:522 builtin/log.c:209 builtin/log.c:1927 builtin/shortlog.c:408
 #, c-format
 msgid "unrecognized argument: %s"
 msgstr "argumento não reconhecido: %s"
@@ -2140,7 +2256,7 @@ msgstr "index-pack terminou inesperadamente"
 msgid "invalid color value: %.*s"
 msgstr "valor de cor inválido: %.*s"
 
-#: commit-graph.c:188 midx.c:46
+#: commit-graph.c:188 midx.c:47
 #, fuzzy
 msgid "invalid hash version"
 msgstr "especificação de caminho inválida"
@@ -2204,9 +2320,9 @@ msgstr ""
 #: commit-graph.c:742
 #, fuzzy, c-format
 msgid "could not find commit %s"
-msgstr "não foi possível analisar o commit %s\n"
+msgstr "não foi possível analisar o commit %s"
 
-#: commit-graph.c:1042 builtin/am.c:1306
+#: commit-graph.c:1042 builtin/am.c:1292
 #, c-format
 msgid "unable to parse commit %s"
 msgstr "não foi possível analisar o commit %s"
@@ -2274,7 +2390,7 @@ msgstr ""
 msgid "failed to write correct number of base graph ids"
 msgstr ""
 
-#: commit-graph.c:1720 midx.c:826
+#: commit-graph.c:1720 midx.c:819
 #, fuzzy, c-format
 msgid "unable to create leading directories of %s"
 msgstr "não foi possível criar os diretórios superiores de '%s'"
@@ -2316,97 +2432,96 @@ msgstr "não é possível escrever ficheiro de índice temporário"
 msgid "Scanning merged commits"
 msgstr "A adicionar %s integrado"
 
-#: commit-graph.c:2026
-#, fuzzy, c-format
-msgid "unexpected duplicate commit id %s"
-msgstr "não foi possível analisar o commit %s"
-
-#: commit-graph.c:2049
+#: commit-graph.c:2059
 msgid "Merging commit-graph"
 msgstr ""
 
-#: commit-graph.c:2259
+#: commit-graph.c:2165
+msgid "attempting to write a commit-graph, but 'core.commitGraph' is disabled"
+msgstr ""
+
+#: commit-graph.c:2274
 #, c-format
 msgid "the commit graph format cannot write %d commits"
 msgstr ""
 
-#: commit-graph.c:2270
+#: commit-graph.c:2285
 #, fuzzy
 msgid "too many commits to write graph"
 msgstr "mostrar apenas commits não presentes no primeiro ramo"
 
-#: commit-graph.c:2363
+#: commit-graph.c:2378
 msgid "the commit-graph file has incorrect checksum and is likely corrupt"
 msgstr ""
 
-#: commit-graph.c:2373
+#: commit-graph.c:2388
 #, c-format
 msgid "commit-graph has incorrect OID order: %s then %s"
 msgstr ""
 
-#: commit-graph.c:2383 commit-graph.c:2398
+#: commit-graph.c:2398 commit-graph.c:2413
 #, c-format
 msgid "commit-graph has incorrect fanout value: fanout[%d] = %u != %u"
 msgstr ""
 
-#: commit-graph.c:2390
+#: commit-graph.c:2405
 #, fuzzy, c-format
 msgid "failed to parse commit %s from commit-graph"
 msgstr "não foi possível analisar o commit %s"
 
-#: commit-graph.c:2408
+#: commit-graph.c:2423
 msgid "Verifying commits in commit graph"
 msgstr ""
 
-#: commit-graph.c:2423
+#: commit-graph.c:2438
 #, c-format
 msgid "failed to parse commit %s from object database for commit-graph"
 msgstr ""
 
-#: commit-graph.c:2430
+#: commit-graph.c:2445
 #, c-format
 msgid "root tree OID for commit %s in commit-graph is %s != %s"
 msgstr ""
 
-#: commit-graph.c:2440
+#: commit-graph.c:2455
 #, c-format
 msgid "commit-graph parent list for commit %s is too long"
 msgstr ""
 
-#: commit-graph.c:2449
+#: commit-graph.c:2464
 #, c-format
 msgid "commit-graph parent for %s is %s != %s"
 msgstr ""
 
-#: commit-graph.c:2463
+#: commit-graph.c:2478
 #, c-format
 msgid "commit-graph parent list for commit %s terminates early"
 msgstr ""
 
-#: commit-graph.c:2468
+#: commit-graph.c:2483
 #, c-format
 msgid ""
 "commit-graph has generation number zero for commit %s, but non-zero elsewhere"
 msgstr ""
 
-#: commit-graph.c:2472
+#: commit-graph.c:2487
 #, c-format
 msgid ""
 "commit-graph has non-zero generation number for commit %s, but zero elsewhere"
 msgstr ""
 
-#: commit-graph.c:2488
+#: commit-graph.c:2503
 #, c-format
 msgid "commit-graph generation for commit %s is %u != %u"
 msgstr ""
 
-#: commit-graph.c:2494
+#: commit-graph.c:2509
 #, c-format
 msgid "commit date for commit %s in commit-graph is %<PRIuMAX> != %<PRIuMAX>"
 msgstr ""
 
-#: commit.c:52 sequencer.c:2845 builtin/am.c:373 builtin/am.c:417
-#: builtin/am.c:1385 builtin/am.c:2031 builtin/replace.c:457
+#: commit.c:52 sequencer.c:2879 builtin/am.c:359 builtin/am.c:403
+#: builtin/am.c:1371 builtin/am.c:2018 builtin/replace.c:457
 #, c-format
 msgid "could not parse %s"
 msgstr "não foi possível analisar %s"
@@ -2502,7 +2617,7 @@ msgstr "Não foi possível remover a secção de configuração '%s'"
 msgid "key does not contain variable name: %s"
 msgstr ""
 
-#: config.c:408 sequencer.c:2547
+#: config.c:408 sequencer.c:2580
 #, c-format
 msgid "invalid key: %s"
 msgstr "chave inválida: %s"
@@ -2696,77 +2811,77 @@ msgstr "não é possível analisar '%s' da configuração de linha de comandos"
 msgid "bad config variable '%s' in file '%s' at line %d"
 msgstr "variável de configuração '%s' incorreta no ficheiro '%s' na linha %d"
 
-#: config.c:2470
+#: config.c:2473
 #, fuzzy, c-format
 msgid "invalid section name '%s'"
 msgstr "conteúdo inválido: '%s'"
 
-#: config.c:2502
+#: config.c:2505
 #, c-format
 msgid "%s has multiple values"
 msgstr "%s tem múltiplos valores"
 
-#: config.c:2531
+#: config.c:2534
 #, fuzzy, c-format
 msgid "failed to write new configuration file %s"
 msgstr "não é possível criar o ficheiro de configuração %s"
 
-#: config.c:2783 config.c:3107
+#: config.c:2786 config.c:3112
 #, fuzzy, c-format
 msgid "could not lock config file %s"
 msgstr "não é possível fechar o ficheiro %s"
 
-#: config.c:2794
+#: config.c:2797
 #, fuzzy, c-format
 msgid "opening %s"
 msgstr "A eliminar %s"
 
-#: config.c:2829 builtin/config.c:354
+#: config.c:2834 builtin/config.c:361
 #, fuzzy, c-format
 msgid "invalid pattern: %s"
 msgstr "opção inválida: %s"
 
-#: config.c:2854
+#: config.c:2859
 #, fuzzy, c-format
 msgid "invalid config file %s"
 msgstr "ficheiro inválido: '%s'"
 
-#: config.c:2867 config.c:3120
+#: config.c:2872 config.c:3125
 #, c-format
 msgid "fstat on %s failed"
 msgstr "falha de fstat de %s"
 
-#: config.c:2878
+#: config.c:2883
 #, fuzzy, c-format
 msgid "unable to mmap '%s'"
 msgstr "não é possível aceder a '%s'"
 
-#: config.c:2887 config.c:3125
+#: config.c:2892 config.c:3130
 #, fuzzy, c-format
 msgid "chmod on %s failed"
 msgstr "falha de fstat de %s"
 
-#: config.c:2972 config.c:3222
+#: config.c:2977 config.c:3227
 #, fuzzy, c-format
 msgid "could not write config file %s"
 msgstr "não é possível ler o ficheiro de log '%s'"
 
-#: config.c:3006
+#: config.c:3011
 #, c-format
 msgid "could not set '%s' to '%s'"
 msgstr "não foi possível definir '%s' como '%s'"
 
-#: config.c:3008 builtin/remote.c:656 builtin/remote.c:850 builtin/remote.c:858
+#: config.c:3013 builtin/remote.c:657 builtin/remote.c:855 builtin/remote.c:863
 #, c-format
 msgid "could not unset '%s'"
 msgstr "não foi possível reiniciar '%s'"
 
-#: config.c:3098
+#: config.c:3103
 #, fuzzy, c-format
 msgid "invalid section name: %s"
 msgstr "opção inválida: %s"
 
-#: config.c:3265
+#: config.c:3270
 #, fuzzy, c-format
 msgid "missing value for '%s'"
 msgstr "valor inválido de %s"
@@ -2833,7 +2948,7 @@ msgstr "erro de protocolo: cabeçalho de pacote incorreto"
 #: connect.c:473
 #, c-format
 msgid "unknown object format '%s' specified by server"
-msgstr ""
+msgstr "objeto desconhecido '%s' pelo formato em servidor."
 
 #: connect.c:500
 #, fuzzy, c-format
@@ -2880,18 +2995,20 @@ msgstr ""
 msgid ""
 "unable to connect to %s:\n"
 "%s"
-msgstr "não é possível abrir %s: %s\n"
+msgstr ""
+"impossível conetar a %s:\n"
+"%s"
 
 #. TRANSLATORS: this is the end of "Connecting to %s (port %s) ... "
 #: connect.c:767 connect.c:844
 #, fuzzy
 msgid "done."
-msgstr "concluído.\n"
+msgstr "concluído."
 
 #: connect.c:798
 #, fuzzy, c-format
 msgid "unable to look up %s (%s)"
-msgstr "não é possível abrir %s: %s\n"
+msgstr "não é possível abrir %s: %s"
 
 #: connect.c:804
 #, fuzzy, c-format
@@ -3198,6 +3315,27 @@ msgstr ""
 msgid "Marked %d islands, done.\n"
 msgstr ""
 
+#: diff-lib.c:534
+msgid "--merge-base does not work with ranges"
+msgstr ""
+
+#: diff-lib.c:536
+msgid "--merge-base only works with commits"
+msgstr ""
+
+#: diff-lib.c:553
+#, fuzzy
+msgid "unable to get HEAD"
+msgstr "não foi possível atualizar HEAD"
+
+#: diff-lib.c:560
+msgid "no merge base found"
+msgstr ""
+
+#: diff-lib.c:562
+msgid "multiple merge bases found"
+msgstr ""
+
 #: diff-no-index.c:238
 #, fuzzy
 msgid "git diff --no-index [<options>] <path> <path>"
@@ -3252,36 +3390,36 @@ msgstr ""
 "Erros encontrados na variável de configuração 'diff.dirstat':\n"
 "%s"
 
-#: diff.c:4269
+#: diff.c:4276
 #, c-format
 msgid "external diff died, stopping at %s"
 msgstr "o diff externo terminou inesperadamente, interrompido em %s"
 
-#: diff.c:4618
+#: diff.c:4625
 msgid "--name-only, --name-status, --check and -s are mutually exclusive"
 msgstr "--name-only, --name-status, --check e -s são mutuamente exclusivos"
 
-#: diff.c:4621
+#: diff.c:4628
 #, fuzzy
 msgid "-G, -S and --find-object are mutually exclusive"
 msgstr "-b, -B e --detach são mutuamente exclusivos"
 
-#: diff.c:4699
+#: diff.c:4706
 msgid "--follow requires exactly one pathspec"
 msgstr "--follow requer exatamente um único especificador de caminho"
 
-#: diff.c:4747
+#: diff.c:4754
 #, fuzzy, c-format
 msgid "invalid --stat value: %s"
 msgstr "valor de cor inválido: %.*s"
 
-#: diff.c:4752 diff.c:4757 diff.c:4762 diff.c:4767 diff.c:5279
+#: diff.c:4759 diff.c:4764 diff.c:4769 diff.c:4774 diff.c:5302
 #: parse-options.c:197 parse-options.c:201 builtin/commit-graph.c:180
 #, fuzzy, c-format
 msgid "%s expects a numerical value"
 msgstr "a opção '%c' espera um valor numérico"
 
-#: diff.c:4784
+#: diff.c:4791
 #, c-format
 msgid ""
 "Failed to parse --dirstat/-X option parameter:\n"
@@ -3290,529 +3428,539 @@ msgstr ""
 "Falha ao analisar parâmetro da opção --dirstat/-X:\n"
 "%s"
 
-#: diff.c:4869
+#: diff.c:4876
 #, c-format
 msgid "unknown change class '%c' in --diff-filter=%s"
 msgstr ""
 
-#: diff.c:4893
+#: diff.c:4900
 #, c-format
 msgid "unknown value after ws-error-highlight=%.*s"
 msgstr ""
 
-#: diff.c:4907
+#: diff.c:4914
 #, fuzzy, c-format
 msgid "unable to resolve '%s'"
 msgstr "não foi possível criar '%s'"
 
-#: diff.c:4957 diff.c:4963
+#: diff.c:4964 diff.c:4970
 #, c-format
 msgid "%s expects <n>/<m> form"
 msgstr ""
 
-#: diff.c:4975
+#: diff.c:4982
 #, c-format
 msgid "%s expects a character, got '%s'"
 msgstr ""
 
-#: diff.c:4996
+#: diff.c:5003
 #, fuzzy, c-format
 msgid "bad --color-moved argument: %s"
 msgstr "argumento não reconhecido: %s"
 
-#: diff.c:5015
+#: diff.c:5022
 #, fuzzy, c-format
 msgid "invalid mode '%s' in --color-moved-ws"
 msgstr "objeto inválido '%s' fornecido."
 
-#: diff.c:5055
+#: diff.c:5062
 msgid ""
 "option diff-algorithm accepts \"myers\", \"minimal\", \"patience\" and "
 "\"histogram\""
 msgstr ""
 
-#: diff.c:5091 diff.c:5111
+#: diff.c:5098 diff.c:5118
 #, fuzzy, c-format
 msgid "invalid argument to %s"
 msgstr "valor inválido de %s"
 
-#: diff.c:5248
+#: diff.c:5222
+#, fuzzy, c-format
+msgid "invalid regex given to -I: '%s'"
+msgstr "valor inválido de %s"
+
+#: diff.c:5271
 #, fuzzy, c-format
 msgid "failed to parse --submodule option parameter: '%s'"
 msgstr "Falha ao analisar parâmetro da opção --submodule: '%s'"
 
-#: diff.c:5304
+#: diff.c:5327
 #, c-format
 msgid "bad --word-diff argument: %s"
 msgstr ""
 
-#: diff.c:5327
+#: diff.c:5350
 msgid "Diff output format options"
 msgstr ""
 
-#: diff.c:5329 diff.c:5335
+#: diff.c:5352 diff.c:5358
 #, fuzzy
 msgid "generate patch"
 msgstr "incorporar o patch"
 
-#: diff.c:5332 builtin/log.c:176
+#: diff.c:5355 builtin/log.c:178
 msgid "suppress diff output"
 msgstr "suprimir saída do diff"
 
-#: diff.c:5337 diff.c:5451 diff.c:5458
+#: diff.c:5360 diff.c:5474 diff.c:5481
 msgid "<n>"
 msgstr ""
 
-#: diff.c:5338 diff.c:5341
+#: diff.c:5361 diff.c:5364
 #, fuzzy
 msgid "generate diffs with <n> lines context"
 msgstr "garantir que, pelo menos, <n> linhas de contexto coincidem"
 
-#: diff.c:5343
+#: diff.c:5366
 msgid "generate the diff in raw format"
 msgstr ""
 
-#: diff.c:5346
+#: diff.c:5369
 #, fuzzy
 msgid "synonym for '-p --raw'"
 msgstr "(sinónimo de --stat)"
 
-#: diff.c:5350
+#: diff.c:5373
 #, fuzzy
 msgid "synonym for '-p --stat'"
 msgstr "(sinónimo de --stat)"
 
-#: diff.c:5354
+#: diff.c:5377
 #, fuzzy
 msgid "machine friendly --stat"
 msgstr "saída inteligível por máquina"
 
-#: diff.c:5357
+#: diff.c:5380
 msgid "output only the last line of --stat"
 msgstr ""
 
-#: diff.c:5359 diff.c:5367
+#: diff.c:5382 diff.c:5390
 msgid "<param1,param2>..."
 msgstr ""
 
-#: diff.c:5360
+#: diff.c:5383
 msgid ""
 "output the distribution of relative amount of changes for each sub-directory"
 msgstr ""
 
-#: diff.c:5364
+#: diff.c:5387
 #, fuzzy
 msgid "synonym for --dirstat=cumulative"
 msgstr "sinónimo de --files-with-matches"
 
-#: diff.c:5368
+#: diff.c:5391
 msgid "synonym for --dirstat=files,param1,param2..."
 msgstr ""
 
-#: diff.c:5372
+#: diff.c:5395
 msgid "warn if changes introduce conflict markers or whitespace errors"
 msgstr ""
 
-#: diff.c:5375
+#: diff.c:5398
 msgid "condensed summary such as creations, renames and mode changes"
 msgstr ""
 
-#: diff.c:5378
+#: diff.c:5401
 #, fuzzy
 msgid "show only names of changed files"
 msgstr "mostrar apenas nomes de ficheiro em vez de linhas correspondidas"
 
-#: diff.c:5381
+#: diff.c:5404
 #, fuzzy
 msgid "show only names and status of changed files"
 msgstr "mostrar apenas nomes de ficheiro em vez de linhas correspondidas"
 
-#: diff.c:5383
+#: diff.c:5406
 msgid "<width>[,<name-width>[,<count>]]"
 msgstr ""
 
-#: diff.c:5384
+#: diff.c:5407
 #, fuzzy
 msgid "generate diffstat"
 msgstr "diff status inesperado %c"
 
-#: diff.c:5386 diff.c:5389 diff.c:5392
+#: diff.c:5409 diff.c:5412 diff.c:5415
 msgid "<width>"
 msgstr ""
 
-#: diff.c:5387
+#: diff.c:5410
 msgid "generate diffstat with a given width"
 msgstr ""
 
-#: diff.c:5390
+#: diff.c:5413
 msgid "generate diffstat with a given name width"
 msgstr ""
 
-#: diff.c:5393
+#: diff.c:5416
 msgid "generate diffstat with a given graph width"
 msgstr ""
 
-#: diff.c:5395
+#: diff.c:5418
 msgid "<count>"
 msgstr ""
 
-#: diff.c:5396
+#: diff.c:5419
 msgid "generate diffstat with limited lines"
 msgstr ""
 
-#: diff.c:5399
+#: diff.c:5422
 msgid "generate compact summary in diffstat"
 msgstr ""
 
-#: diff.c:5402
+#: diff.c:5425
 msgid "output a binary diff that can be applied"
 msgstr ""
 
-#: diff.c:5405
+#: diff.c:5428
 msgid "show full pre- and post-image object names on the \"index\" lines"
 msgstr ""
 
-#: diff.c:5407
+#: diff.c:5430
 #, fuzzy
 msgid "show colored diff"
 msgstr "mostrar ficheiros ignorados"
 
-#: diff.c:5408
+#: diff.c:5431
 msgid "<kind>"
 msgstr ""
 
-#: diff.c:5409
+#: diff.c:5432
 msgid ""
 "highlight whitespace errors in the 'context', 'old' or 'new' lines in the "
 "diff"
 msgstr ""
 
-#: diff.c:5412
+#: diff.c:5435
 msgid ""
 "do not munge pathnames and use NULs as output field terminators in --raw or "
 "--numstat"
 msgstr ""
 
-#: diff.c:5415 diff.c:5418 diff.c:5421 diff.c:5527
+#: diff.c:5438 diff.c:5441 diff.c:5444 diff.c:5553
 #, fuzzy
 msgid "<prefix>"
 msgstr "<prefixo>/"
 
-#: diff.c:5416
+#: diff.c:5439
 msgid "show the given source prefix instead of \"a/\""
 msgstr ""
 
-#: diff.c:5419
+#: diff.c:5442
 msgid "show the given destination prefix instead of \"b/\""
 msgstr ""
 
-#: diff.c:5422
+#: diff.c:5445
 #, fuzzy
 msgid "prepend an additional prefix to every line of output"
 msgstr "preceder o nomebase do projeto pai na saída"
 
-#: diff.c:5425
+#: diff.c:5448
 msgid "do not show any source or destination prefix"
 msgstr ""
 
-#: diff.c:5428
+#: diff.c:5451
 #, fuzzy
 msgid "show context between diff hunks up to the specified number of lines"
 msgstr "criar um clone raso, truncado ao número especificado de revisões"
 
-#: diff.c:5432 diff.c:5437 diff.c:5442
+#: diff.c:5455 diff.c:5460 diff.c:5465
 msgid "<char>"
 msgstr ""
 
-#: diff.c:5433
+#: diff.c:5456
 msgid "specify the character to indicate a new line instead of '+'"
 msgstr ""
 
-#: diff.c:5438
+#: diff.c:5461
 msgid "specify the character to indicate an old line instead of '-'"
 msgstr ""
 
-#: diff.c:5443
+#: diff.c:5466
 msgid "specify the character to indicate a context instead of ' '"
 msgstr ""
 
-#: diff.c:5446
+#: diff.c:5469
 #, fuzzy
 msgid "Diff rename options"
 msgstr "Opções genéricas"
 
-#: diff.c:5447
+#: diff.c:5470
 #, fuzzy
 msgid "<n>[/<m>]"
 msgstr "<n>[,<base>]"
 
-#: diff.c:5448
+#: diff.c:5471
 msgid "break complete rewrite changes into pairs of delete and create"
 msgstr ""
 
-#: diff.c:5452
+#: diff.c:5475
 #, fuzzy
 msgid "detect renames"
 msgstr "nome do remoto"
 
-#: diff.c:5456
+#: diff.c:5479
 msgid "omit the preimage for deletes"
 msgstr ""
 
-#: diff.c:5459
+#: diff.c:5482
 msgid "detect copies"
 msgstr ""
 
-#: diff.c:5463
+#: diff.c:5486
 msgid "use unmodified files as source to find copies"
 msgstr ""
 
-#: diff.c:5465
+#: diff.c:5488
 #, fuzzy
 msgid "disable rename detection"
 msgstr "Deteção de mudança de nome inexata em curso"
 
-#: diff.c:5468
+#: diff.c:5491
 msgid "use empty blobs as rename source"
 msgstr ""
 
-#: diff.c:5470
+#: diff.c:5493
 msgid "continue listing the history of a file beyond renames"
 msgstr ""
 
-#: diff.c:5473
+#: diff.c:5496
 msgid ""
 "prevent rename/copy detection if the number of rename/copy targets exceeds "
 "given limit"
 msgstr ""
 
-#: diff.c:5475
+#: diff.c:5498
 #, fuzzy
 msgid "Diff algorithm options"
 msgstr "opção inválida: %s"
 
-#: diff.c:5477
+#: diff.c:5500
 msgid "produce the smallest possible diff"
 msgstr ""
 
-#: diff.c:5480
+#: diff.c:5503
 #, fuzzy
 msgid "ignore whitespace when comparing lines"
 msgstr "ignorar alterações de espaço em branco ao procurar contexto"
 
-#: diff.c:5483
+#: diff.c:5506
 #, fuzzy
 msgid "ignore changes in amount of whitespace"
 msgstr "ignorar alterações de espaço em branco ao procurar contexto"
 
-#: diff.c:5486
+#: diff.c:5509
 #, fuzzy
 msgid "ignore changes in whitespace at EOL"
 msgstr "ignorar alterações de espaço em branco ao procurar contexto"
 
-#: diff.c:5489
+#: diff.c:5512
 msgid "ignore carrier-return at the end of line"
 msgstr ""
 
-#: diff.c:5492
+#: diff.c:5515
 msgid "ignore changes whose lines are all blank"
 msgstr ""
 
-#: diff.c:5495
+#: diff.c:5517 diff.c:5539 diff.c:5542 diff.c:5587
+msgid "<regex>"
+msgstr ""
+
+#: diff.c:5518
+#, fuzzy
+msgid "ignore changes whose all lines match <regex>"
+msgstr "ignorar alterações de espaço em branco ao procurar contexto"
+
+#: diff.c:5521
 msgid "heuristic to shift diff hunk boundaries for easy reading"
 msgstr ""
 
-#: diff.c:5498
+#: diff.c:5524
 msgid "generate diff using the \"patience diff\" algorithm"
 msgstr ""
 
-#: diff.c:5502
+#: diff.c:5528
 msgid "generate diff using the \"histogram diff\" algorithm"
 msgstr ""
 
-#: diff.c:5504
+#: diff.c:5530
 msgid "<algorithm>"
 msgstr ""
 
-#: diff.c:5505
+#: diff.c:5531
 msgid "choose a diff algorithm"
 msgstr ""
 
-#: diff.c:5507
+#: diff.c:5533
 #, fuzzy
 msgid "<text>"
 msgstr "texto"
 
-#: diff.c:5508
+#: diff.c:5534
 msgid "generate diff using the \"anchored diff\" algorithm"
 msgstr ""
 
-#: diff.c:5510 diff.c:5519 diff.c:5522
+#: diff.c:5536 diff.c:5545 diff.c:5548
 #, fuzzy
 msgid "<mode>"
 msgstr "modo"
 
-#: diff.c:5511
+#: diff.c:5537
 msgid "show word diff, using <mode> to delimit changed words"
 msgstr ""
 
-#: diff.c:5513 diff.c:5516 diff.c:5561
-msgid "<regex>"
-msgstr ""
-
-#: diff.c:5514
+#: diff.c:5540
 msgid "use <regex> to decide what a word is"
 msgstr ""
 
-#: diff.c:5517
+#: diff.c:5543
 msgid "equivalent to --word-diff=color --word-diff-regex=<regex>"
 msgstr ""
 
-#: diff.c:5520
+#: diff.c:5546
 msgid "moved lines of code are colored differently"
 msgstr ""
 
-#: diff.c:5523
+#: diff.c:5549
 msgid "how white spaces are ignored in --color-moved"
 msgstr ""
 
-#: diff.c:5526
+#: diff.c:5552
 #, fuzzy
 msgid "Other diff options"
 msgstr "Opções genéricas"
 
-#: diff.c:5528
+#: diff.c:5554
 msgid "when run from subdir, exclude changes outside and show relative paths"
 msgstr ""
 
-#: diff.c:5532
+#: diff.c:5558
 #, fuzzy
 msgid "treat all files as text"
 msgstr "processar ficheiros binários como texto"
 
-#: diff.c:5534
+#: diff.c:5560
 msgid "swap two inputs, reverse the diff"
 msgstr ""
 
-#: diff.c:5536
+#: diff.c:5562
 msgid "exit with 1 if there were differences, 0 otherwise"
 msgstr ""
 
-#: diff.c:5538
+#: diff.c:5564
 msgid "disable all output of the program"
 msgstr ""
 
-#: diff.c:5540
+#: diff.c:5566
 msgid "allow an external diff helper to be executed"
 msgstr ""
 
-#: diff.c:5542
+#: diff.c:5568
 msgid "run external text conversion filters when comparing binary files"
 msgstr ""
 
-#: diff.c:5544
+#: diff.c:5570
 #, fuzzy
 msgid "<when>"
 msgstr "quando"
 
-#: diff.c:5545
+#: diff.c:5571
 #, fuzzy
 msgid "ignore changes to submodules in the diff generation"
 msgstr ""
 "ignorar alterações em submódulos, quando é opcional: all, dirty, untracked. "
 "(Predefinição: all)"
 
-#: diff.c:5548
+#: diff.c:5574
 #, fuzzy
 msgid "<format>"
 msgstr "formato"
 
-#: diff.c:5549
+#: diff.c:5575
 msgid "specify how differences in submodules are shown"
 msgstr ""
 
-#: diff.c:5553
+#: diff.c:5579
 #, fuzzy
 msgid "hide 'git add -N' entries from the index"
 msgstr "usar .gitattributes apenas a partir do índice"
 
-#: diff.c:5556
+#: diff.c:5582
 msgid "treat 'git add -N' entries as real in the index"
 msgstr ""
 
-#: diff.c:5558
+#: diff.c:5584
 #, fuzzy
 msgid "<string>"
 msgstr "cadeia"
 
-#: diff.c:5559
+#: diff.c:5585
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "string"
 msgstr ""
 
-#: diff.c:5562
+#: diff.c:5588
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "regex"
 msgstr ""
 
-#: diff.c:5565
+#: diff.c:5591
 #, fuzzy
 msgid "show all changes in the changeset with -S or -G"
 msgstr "mostrar ficheiros com correspondências no paginador"
 
-#: diff.c:5568
+#: diff.c:5594
 #, fuzzy
 msgid "treat <string> in -S as extended POSIX regular expression"
 msgstr "usar expressões regulares estendidas do POSIX"
 
-#: diff.c:5571
+#: diff.c:5597
 #, fuzzy
 msgid "control the order in which files appear in the output"
 msgstr "mostrar outros ficheiros na saída"
 
-#: diff.c:5572
+#: diff.c:5598
 #, fuzzy
 msgid "<object-id>"
 msgstr "objeto"
 
-#: diff.c:5573
+#: diff.c:5599
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "object"
 msgstr ""
 
-#: diff.c:5575
+#: diff.c:5601
 msgid "[(A|C|D|M|R|T|U|X|B)...[*]]"
 msgstr ""
 
-#: diff.c:5576
+#: diff.c:5602
 msgid "select files by diff type"
 msgstr ""
 
-#: diff.c:5578
+#: diff.c:5604
 #, fuzzy
 msgid "<file>"
 msgstr "ficheiro"
 
-#: diff.c:5579
+#: diff.c:5605
 #, fuzzy
 msgid "Output to a specific file"
 msgstr "submeter somente os ficheiros especificados"
 
-#: diff.c:6236
+#: diff.c:6262
 msgid "inexact rename detection was skipped due to too many files."
 msgstr ""
 "a deteção mudança de nome inexata foi omitida devido a demasiados ficheiros."
 
-#: diff.c:6239
+#: diff.c:6265
 msgid "only found copies from modified paths due to too many files."
 msgstr ""
 "só foram encontradas cópias de caminhos modificados devido a demasiados "
 "ficheiros."
 
-#: diff.c:6242
+#: diff.c:6268
 #, c-format
 msgid ""
 "you may want to set your %s variable to at least %d and retry the command."
@@ -3831,7 +3979,8 @@ msgstr "Deteção de mudança de nome inexata em curso"
 #: dir.c:578
 #, fuzzy, c-format
 msgid "pathspec '%s' did not match any file(s) known to git"
-msgstr "o especificador de caminho '%s' não corresponde a nenhum ficheiro"
+msgstr "especificador de path '%s' correspondeu a ficheiro nenhum "
+"conhecido pelo git"
 
 #: dir.c:718 dir.c:747 dir.c:760
 #, fuzzy, c-format
@@ -3916,253 +4065,253 @@ msgstr "não foi possível definir '%s' como '%s'"
 msgid "too many args to run %s"
 msgstr "Demasiados argumentos."
 
-#: fetch-pack.c:176
+#: fetch-pack.c:177
 msgid "git fetch-pack: expected shallow list"
 msgstr "git fetch-pack: esperava-se lista rasa"
 
-#: fetch-pack.c:179
+#: fetch-pack.c:180
 #, fuzzy
 msgid "git fetch-pack: expected a flush packet after shallow list"
 msgstr "git fetch-pack: esperava-se lista rasa"
 
-#: fetch-pack.c:190
+#: fetch-pack.c:191
 #, fuzzy
 msgid "git fetch-pack: expected ACK/NAK, got a flush packet"
 msgstr "git fetch-pack: esperava-se ACK/NAK, obteve-se '%s'"
 
-#: fetch-pack.c:210
+#: fetch-pack.c:211
 #, c-format
 msgid "git fetch-pack: expected ACK/NAK, got '%s'"
 msgstr "git fetch-pack: esperava-se ACK/NAK, obteve-se '%s'"
 
-#: fetch-pack.c:221
+#: fetch-pack.c:222
 #, fuzzy
 msgid "unable to write to remote"
 msgstr "não foi possível escrever o ficheiro da tag"
 
-#: fetch-pack.c:282
+#: fetch-pack.c:283
 msgid "--stateless-rpc requires multi_ack_detailed"
 msgstr "--stateless-rpc requer multi_ack_detailed"
 
-#: fetch-pack.c:375 fetch-pack.c:1397
+#: fetch-pack.c:378 fetch-pack.c:1406
 #, c-format
 msgid "invalid shallow line: %s"
 msgstr "linha rasa inválida: %s"
 
-#: fetch-pack.c:381 fetch-pack.c:1403
+#: fetch-pack.c:384 fetch-pack.c:1412
 #, c-format
 msgid "invalid unshallow line: %s"
 msgstr "linha para aprofundar inválida: %s"
 
-#: fetch-pack.c:383 fetch-pack.c:1405
+#: fetch-pack.c:386 fetch-pack.c:1414
 #, c-format
 msgid "object not found: %s"
 msgstr "objeto não encontrado: %s"
 
-#: fetch-pack.c:386 fetch-pack.c:1408
+#: fetch-pack.c:389 fetch-pack.c:1417
 #, c-format
 msgid "error in object: %s"
 msgstr "erro no objeto: %s"
 
-#: fetch-pack.c:388 fetch-pack.c:1410
+#: fetch-pack.c:391 fetch-pack.c:1419
 #, c-format
 msgid "no shallow found: %s"
 msgstr "raso não encontrado: %s"
 
-#: fetch-pack.c:391 fetch-pack.c:1414
+#: fetch-pack.c:394 fetch-pack.c:1423
 #, c-format
 msgid "expected shallow/unshallow, got %s"
 msgstr "esperava-se raso/aprofundar, obteve-se %s"
 
-#: fetch-pack.c:431
+#: fetch-pack.c:434
 #, c-format
 msgid "got %s %d %s"
 msgstr "obteve-se %s %d %s"
 
-#: fetch-pack.c:448
+#: fetch-pack.c:451
 #, c-format
 msgid "invalid commit %s"
 msgstr "commit inválido %s"
 
-#: fetch-pack.c:479
+#: fetch-pack.c:482
 msgid "giving up"
 msgstr "desistência"
 
-#: fetch-pack.c:492 progress.c:339
+#: fetch-pack.c:495 progress.c:339
 msgid "done"
 msgstr "concluído"
 
-#: fetch-pack.c:504
+#: fetch-pack.c:507
 #, c-format
 msgid "got %s (%d) %s"
 msgstr "obteve-se %s (%d) %s"
 
-#: fetch-pack.c:540
+#: fetch-pack.c:543
 #, c-format
 msgid "Marking %s as complete"
 msgstr "Marcado %s como completo"
 
-#: fetch-pack.c:755
+#: fetch-pack.c:758
 #, c-format
 msgid "already have %s (%s)"
 msgstr "já se tem %s (%s)"
 
-#: fetch-pack.c:824
+#: fetch-pack.c:827
 msgid "fetch-pack: unable to fork off sideband demultiplexer"
 msgstr "fetch-pack: não é possível efetuar fork de sideband demultiplexer"
 
-#: fetch-pack.c:832
+#: fetch-pack.c:835
 msgid "protocol error: bad pack header"
 msgstr "erro de protocolo: cabeçalho de pacote incorreto"
 
-#: fetch-pack.c:916
+#: fetch-pack.c:919
 #, c-format
 msgid "fetch-pack: unable to fork off %s"
 msgstr "fetch-pack: não é possível criar processo filho %s"
 
-#: fetch-pack.c:933
+#: fetch-pack.c:937
 #, c-format
 msgid "%s failed"
 msgstr "%s falhou"
 
-#: fetch-pack.c:935
+#: fetch-pack.c:939
 msgid "error in sideband demultiplexer"
 msgstr "erro no sideband demultiplexer"
 
-#: fetch-pack.c:978
+#: fetch-pack.c:982
 #, c-format
 msgid "Server version is %.*s"
 msgstr "A versão do servidor é %.*s"
 
-#: fetch-pack.c:983 fetch-pack.c:989 fetch-pack.c:992 fetch-pack.c:998
-#: fetch-pack.c:1002 fetch-pack.c:1006 fetch-pack.c:1010 fetch-pack.c:1014
-#: fetch-pack.c:1018 fetch-pack.c:1022 fetch-pack.c:1026 fetch-pack.c:1030
-#: fetch-pack.c:1036 fetch-pack.c:1042 fetch-pack.c:1047 fetch-pack.c:1052
+#: fetch-pack.c:990 fetch-pack.c:996 fetch-pack.c:999 fetch-pack.c:1005
+#: fetch-pack.c:1009 fetch-pack.c:1013 fetch-pack.c:1017 fetch-pack.c:1021
+#: fetch-pack.c:1025 fetch-pack.c:1029 fetch-pack.c:1033 fetch-pack.c:1037
+#: fetch-pack.c:1043 fetch-pack.c:1049 fetch-pack.c:1054 fetch-pack.c:1059
 #, fuzzy, c-format
 msgid "Server supports %s"
 msgstr "O servidor suporta side-band"
 
-#: fetch-pack.c:985
+#: fetch-pack.c:992
 msgid "Server does not support shallow clients"
 msgstr "O servidor não suporta clientes rasos"
 
-#: fetch-pack.c:1045
+#: fetch-pack.c:1052
 msgid "Server does not support --shallow-since"
 msgstr "O servidor não suporta --shallow-since"
 
-#: fetch-pack.c:1050
+#: fetch-pack.c:1057
 msgid "Server does not support --shallow-exclude"
 msgstr "O servidor não suporta --shallow-exclude"
 
-#: fetch-pack.c:1054
+#: fetch-pack.c:1061
 msgid "Server does not support --deepen"
 msgstr "O servidor não suporta --deepen"
 
-#: fetch-pack.c:1056
+#: fetch-pack.c:1063
 #, fuzzy
 msgid "Server does not support this repository's object format"
 msgstr "O servidor não suporta --deepen"
 
-#: fetch-pack.c:1069
+#: fetch-pack.c:1076
 msgid "no common commits"
-msgstr "nenhum commit em comum"
+msgstr "commits comuns nenhuns"
 
-#: fetch-pack.c:1081 fetch-pack.c:1619
+#: fetch-pack.c:1088 fetch-pack.c:1628
 msgid "git fetch-pack: fetch failed."
 msgstr "git fetch-pack: falha ao obter."
 
-#: fetch-pack.c:1205
+#: fetch-pack.c:1214
 #, c-format
 msgid "mismatched algorithms: client %s; server %s"
 msgstr ""
 
-#: fetch-pack.c:1209
+#: fetch-pack.c:1218
 #, fuzzy, c-format
 msgid "the server does not support algorithm '%s'"
 msgstr "O servidor não suporta clientes rasos"
 
-#: fetch-pack.c:1229
+#: fetch-pack.c:1238
 #, fuzzy
 msgid "Server does not support shallow requests"
 msgstr "O servidor não suporta clientes rasos"
 
-#: fetch-pack.c:1236
+#: fetch-pack.c:1245
 #, fuzzy
 msgid "Server supports filter"
 msgstr "O servidor suporta ofs-delta"
 
-#: fetch-pack.c:1275
+#: fetch-pack.c:1284
 #, fuzzy
 msgid "unable to write request to remote"
 msgstr "não foi possível escrever os parâmetros no ficheiro de configuração"
 
-#: fetch-pack.c:1293
+#: fetch-pack.c:1302
 #, c-format
 msgid "error reading section header '%s'"
 msgstr ""
 
-#: fetch-pack.c:1299
+#: fetch-pack.c:1308
 #, fuzzy, c-format
 msgid "expected '%s', received '%s'"
 msgstr "blob para %s '%s' esperado"
 
-#: fetch-pack.c:1360
+#: fetch-pack.c:1369
 #, c-format
 msgid "unexpected acknowledgment line: '%s'"
 msgstr ""
 
-#: fetch-pack.c:1365
+#: fetch-pack.c:1374
 #, c-format
 msgid "error processing acks: %d"
 msgstr ""
 
-#: fetch-pack.c:1375
+#: fetch-pack.c:1384
 msgid "expected packfile to be sent after 'ready'"
 msgstr ""
 
-#: fetch-pack.c:1377
+#: fetch-pack.c:1386
 msgid "expected no other sections to be sent after no 'ready'"
 msgstr ""
 
-#: fetch-pack.c:1419
+#: fetch-pack.c:1428
 #, c-format
 msgid "error processing shallow info: %d"
 msgstr ""
 
-#: fetch-pack.c:1466
+#: fetch-pack.c:1475
 #, fuzzy, c-format
 msgid "expected wanted-ref, got '%s'"
 msgstr "esperava-se raso/aprofundar, obteve-se %s"
 
-#: fetch-pack.c:1471
+#: fetch-pack.c:1480
 #, fuzzy, c-format
 msgid "unexpected wanted-ref: '%s'"
 msgstr "fim de ficheiro inesperado"
 
-#: fetch-pack.c:1476
+#: fetch-pack.c:1485
 #, c-format
 msgid "error processing wanted refs: %d"
 msgstr ""
 
-#: fetch-pack.c:1506
+#: fetch-pack.c:1515
 #, fuzzy
 msgid "git fetch-pack: expected response end packet"
 msgstr "git fetch-pack: esperava-se lista rasa"
 
-#: fetch-pack.c:1887
+#: fetch-pack.c:1897
 msgid "no matching remote head"
-msgstr "nenhuma cabeça remota correspondente"
+msgstr "remote head nenhuma que corresponda"
 
-#: fetch-pack.c:1910 builtin/clone.c:692
+#: fetch-pack.c:1920 builtin/clone.c:693
 msgid "remote did not send all necessary objects"
 msgstr "o remoto não enviou todos os objetos necessários"
 
-#: fetch-pack.c:1937
+#: fetch-pack.c:1947
 #, c-format
 msgid "no such remote ref %s"
 msgstr "referência remota %s inexistente"
 
-#: fetch-pack.c:1940
+#: fetch-pack.c:1950
 #, c-format
 msgid "Server does not allow request for unadvertised object %s"
 msgstr "O servidor não permite pedido do objeto não anunciado %s"
@@ -4185,24 +4334,24 @@ msgstr "gpg não assinou os dados"
 msgid "ignore invalid color '%.*s' in log.graphColors"
 msgstr "ignorar cor inválida '%.*s' em log.graphColors"
 
-#: grep.c:668
+#: grep.c:640
 msgid ""
 "given pattern contains NULL byte (via -f <file>). This is only supported "
 "with -P under PCRE v2"
 msgstr ""
 
-#: grep.c:2128
+#: grep.c:2100
 #, c-format
 msgid "'%s': unable to read %s"
 msgstr "'%s': não foi possível ler %s"
 
-#: grep.c:2145 setup.c:176 builtin/clone.c:411 builtin/diff.c:89
+#: grep.c:2117 setup.c:176 builtin/clone.c:412 builtin/diff.c:89
 #: builtin/rm.c:135
 #, c-format
 msgid "failed to stat '%s'"
 msgstr "falha ao invocar stat de '%s'"
 
-#: grep.c:2156
+#: grep.c:2128
 #, c-format
 msgid "'%s': short read"
 msgstr "'%s': leitura truncada"
@@ -4280,7 +4429,7 @@ msgstr "versão de índice %s não suportada"
 #: help.c:405
 #, fuzzy
 msgid "The Git concept guides are:"
-msgstr "Os guias comuns do Git:\n"
+msgstr "Os guias comuns do Git:"
 
 #: help.c:429
 msgid "See 'git help <command>' to read about a specific subcommand"
@@ -4295,7 +4444,7 @@ msgstr "a executar $command"
 msgid "Command aliases"
 msgstr ""
 
-#: help.c:513
+#: help.c:527
 #, c-format
 msgid ""
 "'%s' appears to be a git command, but we were not\n"
@@ -4304,33 +4453,31 @@ msgstr ""
 "'%s' parece ser um comando do git, mas não é possível\n"
 "executá-lo. Talvez git-%s esteja danificado?"
 
-#: help.c:572
+#: help.c:543 help.c:631
+#, c-format
+msgid "git: '%s' is not a git command. See 'git --help'."
+msgstr "git: '%s' não é um comando do git. Consulte 'git --help'."
+
+#: help.c:591
 msgid "Uh oh. Your system reports no Git commands at all."
-msgstr "Oh não. Não há nenhum comando do Git disponível no sistema."
+msgstr "Oh não. Teu sistema de reporta comando nenhum de Git."
 
-#: help.c:594
+#: help.c:613
 #, fuzzy, c-format
 msgid "WARNING: You called a Git command named '%s', which does not exist."
-msgstr ""
-"AVISO: Invocou um comando do Git designado '%s' que não existe.\n"
-"Continuando, assumindo que queria dizer '%s'"
+msgstr "AVISO: Invocou um comando do Git designado '%s', que não existe."
 
-#: help.c:599
+#: help.c:618
 #, c-format
 msgid "Continuing under the assumption that you meant '%s'."
 msgstr ""
 
-#: help.c:604
+#: help.c:623
 #, c-format
 msgid "Continuing in %0.1f seconds, assuming that you meant '%s'."
 msgstr ""
 
-#: help.c:612
-#, c-format
-msgid "git: '%s' is not a git command. See 'git --help'."
-msgstr "git: '%s' não é um comando do git. Consulte 'git --help'."
-
-#: help.c:616
+#: help.c:635
 msgid ""
 "\n"
 "The most similar command is"
@@ -4340,17 +4487,17 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
-#: help.c:656
+#: help.c:675
 #, fuzzy
 msgid "git version [<options>]"
 msgstr "git column [<opções>]"
 
-#: help.c:711
+#: help.c:730
 #, c-format
 msgid "%s: %s - %s"
 msgstr "%s: %s - %s"
 
-#: help.c:715
+#: help.c:734
 msgid ""
 "\n"
 "Did you mean this?"
@@ -4400,7 +4547,7 @@ msgstr ""
 
 #: ident.c:397
 msgid "no email was given and auto-detection is disabled"
-msgstr "nenhum e-mail indicado e a deteção automática está desativada"
+msgstr "foi dado email nenhum e deteção automática está desativada"
 
 #: ident.c:402
 #, c-format
@@ -4410,7 +4557,7 @@ msgstr ""
 
 #: ident.c:419
 msgid "no name was given and auto-detection is disabled"
-msgstr "nenhum nome indicado e a deteção automática está desativada"
+msgstr "foi dado nome nenhum e deteção automática está desativada"
 
 #: ident.c:425
 #, c-format
@@ -4515,6 +4662,21 @@ msgstr "Não é foi possível criar '%s.lock': %s"
 msgid "expected flush after ls-refs arguments"
 msgstr ""
 
+#: merge-ort-wrappers.c:13 merge-recursive.c:3672
+#, fuzzy, c-format
+msgid ""
+"Your local changes to the following files would be overwritten by merge:\n"
+"  %s"
+msgstr ""
+"As suas alterações locais nos seguintes ficheiros seriam substituídas ao "
+"integrar:\n"
+"%%s"
+
+#: merge-ort-wrappers.c:33 merge-recursive.c:3436
+#, fuzzy, c-format
+msgid "Already up to date!"
+msgstr "Já está atualizado!"
+
 #: merge-recursive.c:356
 msgid "(bad commit)\n"
 msgstr "(commit incorreto)\n"
@@ -4878,11 +5040,6 @@ msgstr "A adicionar %s"
 msgid "CONFLICT (add/add): Merge conflict in %s"
 msgstr "CONFLITO (%s): conflito de integração em %s"
 
-#: merge-recursive.c:3436
-#, fuzzy
-msgid "Already up to date!"
-msgstr "Já está atualizado!"
-
 #: merge-recursive.c:3445
 #, c-format
 msgid "merging of trees %s and %s failed"
@@ -4901,24 +5058,14 @@ msgstr[1] "%u antecessores comuns encontrados:"
 
 #: merge-recursive.c:3613
 msgid "merge returned no commit"
-msgstr "a integração não retornou nenhum commit"
-
-#: merge-recursive.c:3672
-#, fuzzy, c-format
-msgid ""
-"Your local changes to the following files would be overwritten by merge:\n"
-"  %s"
-msgstr ""
-"As suas alterações locais nos seguintes ficheiros seriam substituídas ao "
-"integrar:\n"
-"%%s"
+msgstr "junção retornou commit nenhum"
 
 #: merge-recursive.c:3769
 #, c-format
 msgid "Could not parse object '%s'"
 msgstr "Não foi possível analisar o objeto '%s'"
 
-#: merge-recursive.c:3787 builtin/merge.c:702 builtin/merge.c:881
+#: merge-recursive.c:3787 builtin/merge.c:711 builtin/merge.c:895
 msgid "Unable to write index."
 msgstr "Não é possível escrever no índice."
 
@@ -4926,179 +5073,175 @@ msgstr "Não é possível escrever no índice."
 msgid "failed to read the cache"
 msgstr "falha ao ler a cache"
 
-#: merge.c:109 rerere.c:720 builtin/am.c:1896 builtin/am.c:1930
-#: builtin/checkout.c:560 builtin/checkout.c:816 builtin/clone.c:816
+#: merge.c:109 rerere.c:720 builtin/am.c:1883 builtin/am.c:1917
+#: builtin/checkout.c:573 builtin/checkout.c:829 builtin/clone.c:817
 #: builtin/stash.c:265
 msgid "unable to write new index file"
 msgstr "não foi possível escrever novo ficheiro de índice"
 
-#: midx.c:79
+#: midx.c:80
 #, c-format
 msgid "multi-pack-index file %s is too small"
 msgstr ""
 
-#: midx.c:95
+#: midx.c:96
 #, c-format
 msgid "multi-pack-index signature 0x%08x does not match signature 0x%08x"
 msgstr ""
 
-#: midx.c:100
+#: midx.c:101
 #, c-format
 msgid "multi-pack-index version %d not recognized"
 msgstr ""
 
-#: midx.c:105
+#: midx.c:106
 #, c-format
 msgid "multi-pack-index hash version %u does not match version %u"
 msgstr ""
 
-#: midx.c:122
+#: midx.c:123
 msgid "invalid chunk offset (too large)"
 msgstr ""
 
-#: midx.c:146
+#: midx.c:147
 msgid "terminating multi-pack-index chunk id appears earlier than expected"
 msgstr ""
 
-#: midx.c:159
+#: midx.c:160
 msgid "multi-pack-index missing required pack-name chunk"
 msgstr ""
 
-#: midx.c:161
+#: midx.c:162
 msgid "multi-pack-index missing required OID fanout chunk"
 msgstr ""
 
-#: midx.c:163
+#: midx.c:164
 msgid "multi-pack-index missing required OID lookup chunk"
 msgstr ""
 
-#: midx.c:165
+#: midx.c:166
 msgid "multi-pack-index missing required object offsets chunk"
 msgstr ""
 
-#: midx.c:179
+#: midx.c:180
 #, c-format
 msgid "multi-pack-index pack names out of order: '%s' before '%s'"
 msgstr ""
 
-#: midx.c:222
+#: midx.c:223
 #, c-format
 msgid "bad pack-int-id: %u (%u total packs)"
 msgstr ""
 
-#: midx.c:272
+#: midx.c:273
 msgid "multi-pack-index stores a 64-bit offset, but off_t is too small"
 msgstr ""
 
-#: midx.c:300
-msgid "error preparing packfile from multi-pack-index"
-msgstr ""
-
-#: midx.c:485
+#: midx.c:480
 #, fuzzy, c-format
 msgid "failed to add packfile '%s'"
 msgstr "falha ao ler o ficheiro de comando '%s'"
 
-#: midx.c:491
+#: midx.c:486
 #, fuzzy, c-format
 msgid "failed to open pack-index '%s'"
 msgstr "falha ao abrir '%s'"
 
-#: midx.c:551
+#: midx.c:546
 #, fuzzy, c-format
 msgid "failed to locate object %d in packfile"
 msgstr "Falha ao criar os ficheiros de saída"
 
-#: midx.c:853
+#: midx.c:846
 msgid "Adding packfiles to multi-pack-index"
 msgstr ""
 
-#: midx.c:886
+#: midx.c:879
 #, c-format
 msgid "did not see pack-file %s to drop"
 msgstr ""
 
-#: midx.c:938
+#: midx.c:931
 #, fuzzy
 msgid "no pack files to index."
 msgstr "Não é possível escrever no índice."
 
-#: midx.c:990
+#: midx.c:982
 msgid "Writing chunks to multi-pack-index"
 msgstr ""
 
-#: midx.c:1068
+#: midx.c:1060
 #, fuzzy, c-format
 msgid "failed to clear multi-pack-index at %s"
 msgstr "falha ao limpar o índice"
 
-#: midx.c:1124
+#: midx.c:1116
 msgid "multi-pack-index file exists, but failed to parse"
 msgstr ""
 
-#: midx.c:1132
+#: midx.c:1124
 msgid "Looking for referenced packfiles"
 msgstr ""
 
-#: midx.c:1147
+#: midx.c:1139
 #, c-format
 msgid ""
 "oid fanout out of order: fanout[%d] = %<PRIx32> > %<PRIx32> = fanout[%d]"
 msgstr ""
 
-#: midx.c:1152
+#: midx.c:1144
 msgid "the midx contains no oid"
 msgstr ""
 
-#: midx.c:1161
+#: midx.c:1153
 msgid "Verifying OID order in multi-pack-index"
 msgstr ""
 
-#: midx.c:1170
+#: midx.c:1162
 #, c-format
 msgid "oid lookup out of order: oid[%d] = %s >= %s = oid[%d]"
 msgstr ""
 
-#: midx.c:1190
+#: midx.c:1182
 #, fuzzy
 msgid "Sorting objects by packfile"
 msgstr "A escrever objetos"
 
-#: midx.c:1197
+#: midx.c:1189
 #, fuzzy
 msgid "Verifying object offsets"
 msgstr "A escrever objetos"
 
-#: midx.c:1213
+#: midx.c:1205
 #, fuzzy, c-format
 msgid "failed to load pack entry for oid[%d] = %s"
 msgstr "não é possível adicionar %s à cache"
 
-#: midx.c:1219
+#: midx.c:1211
 #, fuzzy, c-format
 msgid "failed to load pack-index for packfile %s"
 msgstr "falha ao ler o ficheiro de comando '%s'"
 
-#: midx.c:1228
+#: midx.c:1220
 #, c-format
 msgid "incorrect object offset for oid[%d] = %s: %<PRIx64> != %<PRIx64>"
 msgstr ""
 
-#: midx.c:1253
+#: midx.c:1245
 #, fuzzy
 msgid "Counting referenced objects"
 msgstr "eliminar ficheiros não referenciados"
 
-#: midx.c:1263
+#: midx.c:1255
 msgid "Finding and deleting unreferenced packfiles"
 msgstr ""
 
-#: midx.c:1454
+#: midx.c:1446
 #, fuzzy
 msgid "could not start pack-objects"
 msgstr "Não foi possível lançar pack-objects"
 
-#: midx.c:1474
+#: midx.c:1466
 #, fuzzy
 msgid "could not finish pack-objects"
 msgstr "Não foi possível lançar pack-objects"
@@ -5188,16 +5331,16 @@ msgstr ""
 msgid "unable to get size of %s"
 msgstr "não foi possível mover %s para %s"
 
-#: packfile.c:630
+#: packfile.c:615
 msgid "offset before end of packfile (broken .idx?)"
 msgstr "offset antes do fim do ficheiro de pacote (.idx danificado?)"
 
-#: packfile.c:1922
+#: packfile.c:1907
 #, c-format
 msgid "offset before start of pack index for %s (corrupt index?)"
 msgstr "offset antes do início do índice do pacote %s (índice corrompido?)"
 
-#: packfile.c:1926
+#: packfile.c:1911
 #, c-format
 msgid "offset beyond end of pack index for %s (truncated index?)"
 msgstr "offset depois do fim do índice do pacote %s (índice truncado?)"
@@ -5280,7 +5423,7 @@ msgstr "opção desconhecido %s"
 #: parse-options.c:866
 #, fuzzy, c-format
 msgid "unknown non-ascii option in string: `%s'"
-msgstr "Definidição --confirm desconhecida: '%s'\n"
+msgstr "Definidição --confirm desconhecida: '%s'"
 
 #: parse-options.c:890
 msgid "..."
@@ -5454,7 +5597,7 @@ msgstr "erro de protocolo: cabeçalho de pacote incorreto"
 msgid "protocol error: bad line length %d"
 msgstr "erro de protocolo: cabeçalho de pacote incorreto"
 
-#: pkt-line.c:373 sideband.c:150
+#: pkt-line.c:373 sideband.c:165
 #, c-format
 msgid "remote error: %s"
 msgstr "erro remoto: %s"
@@ -5504,10 +5647,10 @@ msgstr "não foi possível obter stat de %s"
 msgid "could not read `log` output"
 msgstr "não foi possível ler a saída do comando 'show'"
 
-#: range-diff.c:98 sequencer.c:5283
+#: range-diff.c:98 sequencer.c:5310
 #, fuzzy, c-format
 msgid "could not parse commit '%s'"
-msgstr "não foi possível analisar o commit %s\n"
+msgstr "não foi possível analisar o commit %s"
 
 #: range-diff.c:112
 #, c-format
@@ -5521,12 +5664,12 @@ msgstr ""
 msgid "could not parse git header '%.*s'"
 msgstr "não foi possível analisar o patch '%s'"
 
-#: range-diff.c:301
+#: range-diff.c:299
 #, fuzzy
 msgid "failed to generate diff"
 msgstr "falha ao criar o ficheiro %s"
 
-#: range-diff.c:534 range-diff.c:536
+#: range-diff.c:532 range-diff.c:534
 #, fuzzy, c-format
 msgid "could not parse log for '%s'"
 msgstr "não é possível ler o ficheiro de log '%s'"
@@ -5645,8 +5788,8 @@ msgstr "não foi possível criar o diretórios para %s"
 
 #: read-cache.c:1971 read-cache.c:2262 rerere.c:565 rerere.c:599 rerere.c:1111
 #: submodule.c:1628 builtin/add.c:538 builtin/check-ignore.c:181
-#: builtin/checkout.c:489 builtin/checkout.c:675 builtin/clean.c:991
-#: builtin/commit.c:364 builtin/diff-tree.c:121 builtin/grep.c:507
+#: builtin/checkout.c:502 builtin/checkout.c:688 builtin/clean.c:991
+#: builtin/commit.c:364 builtin/diff-tree.c:122 builtin/grep.c:507
 #: builtin/mv.c:146 builtin/reset.c:247 builtin/rm.c:290
 #: builtin/submodule--helper.c:332
 msgid "index file corrupt"
@@ -5702,12 +5845,12 @@ msgstr "não foi possível ler o ficheiro '%s'"
 msgid "broken index, expect %s in %s, got %s"
 msgstr ""
 
-#: read-cache.c:3017 strbuf.c:1171 wrapper.c:633 builtin/merge.c:1126
+#: read-cache.c:3017 strbuf.c:1171 wrapper.c:633 builtin/merge.c:1140
 #, c-format
 msgid "could not close '%s'"
 msgstr "não foi possível fechar '%s'"
 
-#: read-cache.c:3120 sequencer.c:2446 sequencer.c:4185
+#: read-cache.c:3120 sequencer.c:2479 sequencer.c:4231
 #, fuzzy, c-format
 msgid "could not stat '%s'"
 msgstr "não foi possível obter stat de '%s'"
@@ -5740,7 +5883,7 @@ msgid ""
 "Or you can abort the rebase with 'git rebase --abort'.\n"
 msgstr ""
 "Pode corrí-lo com 'git rebase --edit-todo' e depois executar 'git rebase --"
-"continue'."
+"continue'.\n"
 
 #: rebase-interactive.c:33
 #, fuzzy, c-format
@@ -5797,7 +5940,7 @@ msgid ""
 "Do not remove any line. Use 'drop' explicitly to remove a commit.\n"
 msgstr ""
 "\n"
-"Não remover nenhum linha. Use 'drop' explicitamente para remover um commit.\n"
+"Remove linha nenhuma. Usa explicitamente 'drop' para remover um commit.\n"
 
 #: rebase-interactive.c:75 git-rebase--preserve-merges.sh:222
 msgid ""
@@ -5831,14 +5974,14 @@ msgstr ""
 "No entanto, se remover tudo, o rebase será abortado.\n"
 "\n"
 
-#: rebase-interactive.c:110 rerere.c:485 rerere.c:692 sequencer.c:3571
-#: sequencer.c:3597 sequencer.c:5389 builtin/fsck.c:347 builtin/rebase.c:264
+#: rebase-interactive.c:110 rerere.c:485 rerere.c:692 sequencer.c:3607
+#: sequencer.c:3633 sequencer.c:5416 builtin/fsck.c:347 builtin/rebase.c:270
 #, fuzzy, c-format
 msgid "could not write '%s'"
 msgstr "não foi possível escrever em '%s'"
 
-#: rebase-interactive.c:116 builtin/rebase.c:196 builtin/rebase.c:222
-#: builtin/rebase.c:246
+#: rebase-interactive.c:116 builtin/rebase.c:202 builtin/rebase.c:228
+#: builtin/rebase.c:252
 #, fuzzy, c-format
 msgid "could not write '%s'."
 msgstr "não foi possível escrever em '%s'"
@@ -5850,7 +5993,7 @@ msgid ""
 "Dropped commits (newer to older):\n"
 msgstr ""
 "Aviso: alguns commits podem ter sido descartados acidentalmente.\n"
-"Commits descartados (mais novo para o mais velho):"
+"Commits descartados (mais novo para o mais velho):\n"
 
 #: rebase-interactive.c:200
 #, fuzzy, c-format
@@ -5866,11 +6009,12 @@ msgstr ""
 "explicitamente.\n"
 "\n"
 "Use 'git config rebase.missingCommitsCheck' para mudar o nível de avisos.\n"
-"O comportamentos possíveis são: ignore, warn, error."
+"O comportamentos possíveis são: ignore, warn, error.\n"
+"\n"
 
-#: rebase-interactive.c:233 rebase-interactive.c:238 sequencer.c:2361
-#: builtin/rebase.c:182 builtin/rebase.c:207 builtin/rebase.c:233
-#: builtin/rebase.c:258
+#: rebase-interactive.c:233 rebase-interactive.c:238 sequencer.c:2394
+#: builtin/rebase.c:188 builtin/rebase.c:213 builtin/rebase.c:239
+#: builtin/rebase.c:264
 #, c-format
 msgid "could not read '%s'."
 msgstr "não foi possível ler '%s'."
@@ -6065,62 +6209,62 @@ msgstr "formato: átomo %%(end) utilizado sem átomo correspondente"
 msgid "malformed format string %s"
 msgstr "cadeia malformada %s"
 
-#: ref-filter.c:1541
+#: ref-filter.c:1549
 #, fuzzy, c-format
 msgid "no branch, rebasing %s"
-msgstr "(nenhum ramo, a efetuar rebase de %s)"
+msgstr "(ramo nenhum, rebaseando %s)"
 
-#: ref-filter.c:1544
+#: ref-filter.c:1552
 #, fuzzy, c-format
 msgid "no branch, rebasing detached HEAD %s"
-msgstr "(nenhum ramo, a efetuar rebase de %s)"
+msgstr "(ramo nenhum, rebaseando HEAD solta %s)"
 
-#: ref-filter.c:1547
+#: ref-filter.c:1555
 #, fuzzy, c-format
 msgid "no branch, bisect started on %s"
-msgstr "(nenhum ramo, bissecção iniciada em %s)"
+msgstr "(ramo nenhum, bisseção iniciada em %s)"
 
-#: ref-filter.c:1557
+#: ref-filter.c:1565
 #, fuzzy
 msgid "no branch"
-msgstr "(nenhum ramo)"
+msgstr "(ramo nenhum)"
 
-#: ref-filter.c:1591 ref-filter.c:1800
+#: ref-filter.c:1599 ref-filter.c:1808
 #, c-format
 msgid "missing object %s for %s"
 msgstr "falta o objeto %s de %s"
 
-#: ref-filter.c:1601
+#: ref-filter.c:1609
 #, c-format
 msgid "parse_object_buffer failed on %s for %s"
 msgstr "falha ao invocar parse_object_buffer sobre %s de %s"
 
-#: ref-filter.c:2054
+#: ref-filter.c:2062
 #, c-format
 msgid "malformed object at '%s'"
 msgstr "objeto malformado em '%s'"
 
-#: ref-filter.c:2143
+#: ref-filter.c:2151
 #, c-format
 msgid "ignoring ref with broken name %s"
 msgstr "a referência %s com nome danificado foi ignorada"
 
-#: ref-filter.c:2148 refs.c:657
+#: ref-filter.c:2156 refs.c:660
 #, c-format
 msgid "ignoring broken ref %s"
 msgstr "a referência %s danificada foi ignorada"
 
-#: ref-filter.c:2464
+#: ref-filter.c:2472
 #, c-format
 msgid "format: %%(end) atom missing"
 msgstr "formato: falta átomo %%(end)"
 
-#: ref-filter.c:2563
+#: ref-filter.c:2571
 #, c-format
 msgid "malformed object name %s"
 msgstr "nome de objeto malformado %s"
 
-#: ref-filter.c:2568
+#: ref-filter.c:2576
 #, fuzzy, c-format
 msgid "option `%s' must point to a commit"
 msgstr "'%s' não aponta para um commit"
@@ -6130,65 +6274,65 @@ msgstr "'%s' não aponta para um commit"
 msgid "%s does not point to a valid object!"
 msgstr "'%s' não aponta para um commit"
 
-#: refs.c:572
+#: refs.c:575
 #, fuzzy, c-format
 msgid "could not retrieve `%s`"
 msgstr "não foi possível remover '%s'"
 
-#: refs.c:579
+#: refs.c:582
 #, fuzzy, c-format
 msgid "invalid branch name: %s = %s"
 msgstr "Nome de ramo inválido: '%s'"
 
-#: refs.c:655
+#: refs.c:658
 #, fuzzy, c-format
 msgid "ignoring dangling symref %s"
 msgstr "a referência %s danificada foi ignorada"
 
-#: refs.c:892
+#: refs.c:895
 #, c-format
 msgid "log for ref %s has gap after %s"
 msgstr ""
 
-#: refs.c:898
+#: refs.c:901
 #, c-format
 msgid "log for ref %s unexpectedly ended on %s"
 msgstr ""
 
-#: refs.c:957
+#: refs.c:960
 #, c-format
 msgid "log for %s is empty"
 msgstr ""
 
-#: refs.c:1049
+#: refs.c:1052
 #, fuzzy, c-format
 msgid "refusing to update ref with bad name '%s'"
 msgstr "a referência %s com nome danificado foi ignorada"
 
-#: refs.c:1120
+#: refs.c:1123
 #, fuzzy, c-format
 msgid "update_ref failed for ref '%s': %s"
 msgstr "falha ao abrir '%s': %s"
 
-#: refs.c:1944
+#: refs.c:1947
 #, fuzzy, c-format
 msgid "multiple updates for ref '%s' not allowed"
 msgstr "nome de identificação vazio (de <%s>) não é permitido"
 
-#: refs.c:2024
+#: refs.c:2027
 msgid "ref updates forbidden inside quarantine environment"
 msgstr ""
 
-#: refs.c:2035
+#: refs.c:2038
 msgid "ref updates aborted by hook"
 msgstr ""
 
-#: refs.c:2135 refs.c:2165
+#: refs.c:2138 refs.c:2168
 #, fuzzy, c-format
 msgid "'%s' exists; cannot create '%s'"
 msgstr "não é possível criar '%s'"
 
-#: refs.c:2141 refs.c:2176
+#: refs.c:2144 refs.c:2179
 #, fuzzy, c-format
 msgid "cannot process '%s' and '%s' at the same time"
 msgstr ""
@@ -6210,7 +6354,7 @@ msgstr "não foi possível eliminar a referência %s: %s"
 msgid "could not delete references: %s"
 msgstr "não foi possível eliminar as referências: %s"
 
-#: refspec.c:167
+#: refspec.c:170
 #, fuzzy, c-format
 msgid "invalid refspec '%s'"
 msgstr "ficheiro inválido: '%s'"
@@ -6333,99 +6477,97 @@ msgstr ""
 msgid "dst ref %s receives from more than one src"
 msgstr ""
 
-#: remote.c:1703 remote.c:1804
+#: remote.c:1714 remote.c:1815
 msgid "HEAD does not point to a branch"
 msgstr "HEAD não aponta para um ramo"
 
-#: remote.c:1712
+#: remote.c:1723
 #, c-format
 msgid "no such branch: '%s'"
 msgstr "ramo inexistente: '%s'"
 
-#: remote.c:1715
+#: remote.c:1726
 #, c-format
 msgid "no upstream configured for branch '%s'"
-msgstr "nenhum ramo a montante configurado para o ramo '%s'"
+msgstr "configurado upstream nenhum para ramo '%s'"
 
-#: remote.c:1721
+#: remote.c:1732
 #, c-format
 msgid "upstream branch '%s' not stored as a remote-tracking branch"
 msgstr ""
 "o ramo a montante '%s' não está guardado como um ramo de monitorização remoto"
 
-#: remote.c:1736
+#: remote.c:1747
 #, c-format
 msgid "push destination '%s' on remote '%s' has no local tracking branch"
-msgstr ""
-"o destino de publicação '%s' no remoto '%s' não é seguido por nenhum ramo "
-"local"
+msgstr "destino de atirar '%s' em remoto '%s' tem ramo de tracking local nenhum"
 
-#: remote.c:1748
+#: remote.c:1759
 #, c-format
 msgid "branch '%s' has no remote for pushing"
-msgstr "o ramo '%s' não tem nenhum remoto para publicar"
+msgstr "ramo '%s' tem remoto para atirar nenhum"
 
-#: remote.c:1758
+#: remote.c:1769
 #, c-format
 msgid "push refspecs for '%s' do not include '%s'"
 msgstr ""
 "'%2$s' não faz parte dos especificadores de referência de '%1$s' para "
 "publicação"
 
-#: remote.c:1771
+#: remote.c:1782
 msgid "push has no destination (push.default is 'nothing')"
 msgstr "publicação sem destino (push.default é 'nothing')"
 
-#: remote.c:1793
+#: remote.c:1804
 msgid "cannot resolve 'simple' push to a single destination"
 msgstr "não é possível resolver a publicação 'simple' num único destino"
 
-#: remote.c:1922
+#: remote.c:1933
 #, fuzzy, c-format
 msgid "couldn't find remote ref %s"
 msgstr "Referência remota HEAD não encontrada"
 
-#: remote.c:1935
+#: remote.c:1946
 #, c-format
 msgid "* Ignoring funny ref '%s' locally"
 msgstr ""
 
-#: remote.c:2098
+#: remote.c:2109
 #, c-format
 msgid "Your branch is based on '%s', but the upstream is gone.\n"
 msgstr "A base do seu ramo é '%s', mas o ramo a montante desapareceu.\n"
 
-#: remote.c:2102
+#: remote.c:2113
 msgid "  (use \"git branch --unset-upstream\" to fixup)\n"
 msgstr "  (use \"git branch --unset-upstream\" para corrigir)\n"
 
-#: remote.c:2105
+#: remote.c:2116
 #, fuzzy, c-format
 msgid "Your branch is up to date with '%s'.\n"
 msgstr "O seu ramo está atualizado com '%s'.\n"
 
-#: remote.c:2109
+#: remote.c:2120
 #, fuzzy, c-format
 msgid "Your branch and '%s' refer to different commits.\n"
 msgstr "O seu ramo está à frente de '%s' por %d commit.\n"
 
-#: remote.c:2112
+#: remote.c:2123
 #, c-format
 msgid "  (use \"%s\" for details)\n"
 msgstr ""
 
-#: remote.c:2116
+#: remote.c:2127
 #, c-format
 msgid "Your branch is ahead of '%s' by %d commit.\n"
 msgid_plural "Your branch is ahead of '%s' by %d commits.\n"
 msgstr[0] "O seu ramo está à frente de '%s' por %d commit.\n"
 msgstr[1] "O seu ramo está à frente de '%s' por %d commits.\n"
 
-#: remote.c:2122
+#: remote.c:2133
 msgid "  (use \"git push\" to publish your local commits)\n"
 msgstr "  (use \"git push\" para publicar os commits locais)\n"
 
-#: remote.c:2125
+#: remote.c:2136
 #, c-format
 msgid "Your branch is behind '%s' by %d commit, and can be fast-forwarded.\n"
 msgid_plural ""
@@ -6437,11 +6579,11 @@ msgstr[1] ""
 "O seu ramo está atrás de '%s' por %d commits, podendo ser atualizado com "
 "avanço rápido.\n"
 
-#: remote.c:2133
+#: remote.c:2144
 msgid "  (use \"git pull\" to update your local branch)\n"
 msgstr "  (use \"git pull\" para atualizar o seu ramo local)\n"
 
-#: remote.c:2136
+#: remote.c:2147
 #, c-format
 msgid ""
 "Your branch and '%s' have diverged,\n"
@@ -6456,11 +6598,11 @@ msgstr[1] ""
 "O seu ramo e '%s' divergiram,\n"
 "tendo cada um %d e %d commits diferentes, respetivamente.\n"
 
-#: remote.c:2146
+#: remote.c:2157
 msgid "  (use \"git pull\" to merge the remote branch into yours)\n"
 msgstr "  (use \"git pull\" para integrar o ramo remoto no seu ramo)\n"
 
-#: remote.c:2337
+#: remote.c:2348
 #, fuzzy, c-format
 msgid "cannot parse expected object name '%s'"
 msgstr "não é possível ler o objeto %s: '%s'"
@@ -6539,7 +6681,7 @@ msgstr "não é possível criar a ligação simbólica '%s' '%s'"
 msgid "Recorded preimage for '%s'"
 msgstr ""
 
-#: rerere.c:881 submodule.c:2082 builtin/log.c:1975
+#: rerere.c:881 submodule.c:2082 builtin/log.c:1992
 #: builtin/submodule--helper.c:1878 builtin/submodule--helper.c:1890
 #, c-format
 msgid "could not create directory '%s'"
@@ -6568,7 +6710,7 @@ msgstr ""
 #: rerere.c:1096
 #, fuzzy, c-format
 msgid "Forgot resolution for '%s'\n"
-msgstr "não foi possível resolver a referência %s"
+msgstr "não foi possível resolver a referência '%s'\n"
 
 #: rerere.c:1199
 #, fuzzy
@@ -6580,78 +6722,78 @@ msgstr "não é possível de obter o diretório de trabalho atual"
 msgid "could not determine HEAD revision"
 msgstr "não foi possível destacar HEAD"
 
-#: reset.c:70 reset.c:76 sequencer.c:3426
+#: reset.c:70 reset.c:76 sequencer.c:3460
 #, fuzzy, c-format
 msgid "failed to find tree of %s"
 msgstr "Falha ao procurar árvore de %s."
 
-#: revision.c:2344
+#: revision.c:2336
 msgid "--unpacked=<packfile> no longer supported"
 msgstr ""
 
-#: revision.c:2364
+#: revision.c:2356
 #, fuzzy, c-format
 msgid "unknown value for --diff-merges: %s"
 msgstr "valor desconhecido '%s' da chave '%s'"
 
-#: revision.c:2702
+#: revision.c:2694
 msgid "your current branch appears to be broken"
 msgstr "o ramo atual parece estar danificado"
 
-#: revision.c:2705
+#: revision.c:2697
 #, c-format
 msgid "your current branch '%s' does not have any commits yet"
-msgstr "o ramo atual '%s' ainda não contém nenhum commit"
+msgstr "teu ramo atual '%s' ainda contém commits nenhuns"
 
-#: revision.c:2915
+#: revision.c:2907
 msgid "-L does not yet support diff formats besides -p and -s"
 msgstr ""
 
-#: run-command.c:763
+#: run-command.c:764
 msgid "open /dev/null failed"
 msgstr "falha ao abrir /dev/null"
 
-#: run-command.c:1270
+#: run-command.c:1271
 #, fuzzy, c-format
 msgid "cannot create async thread: %s"
 msgstr "não foi possível criar thread: %s"
 
-#: run-command.c:1334
+#: run-command.c:1335
 #, c-format
 msgid ""
 "The '%s' hook was ignored because it's not set as executable.\n"
 "You can disable this warning with `git config advice.ignoredHook false`."
 msgstr ""
 
-#: send-pack.c:145
+#: send-pack.c:146
 #, fuzzy
 msgid "unexpected flush packet while reading remote unpack status"
 msgstr "não é possível analisar status de descompactação remota: %s"
 
-#: send-pack.c:147
+#: send-pack.c:148
 #, c-format
 msgid "unable to parse remote unpack status: %s"
 msgstr "não é possível analisar status de descompactação remota: %s"
 
-#: send-pack.c:149
+#: send-pack.c:150
 #, c-format
 msgid "remote unpack failed: %s"
 msgstr "descompactação remota falhou: %s"
 
-#: send-pack.c:372
+#: send-pack.c:374
 msgid "failed to sign the push certificate"
 msgstr "falha ao assinar o certificado de publicação"
 
-#: send-pack.c:460
+#: send-pack.c:467
 #, fuzzy
 msgid "the receiving end does not support this repository's hash algorithm"
 msgstr "o recetor não suporta opções de publicação"
 
-#: send-pack.c:469
+#: send-pack.c:476
 msgid "the receiving end does not support --signed push"
 msgstr "o recetor não suporta publicação com --signed"
 
-#: send-pack.c:471
+#: send-pack.c:478
 msgid ""
 "not sending a push certificate since the receiving end does not support --"
 "signed push"
@@ -6659,48 +6801,48 @@ msgstr ""
 "certificado de publicação não enviado uma vez que o recetor não suporta "
 "publicação com --signed"
 
-#: send-pack.c:483
+#: send-pack.c:490
 msgid "the receiving end does not support --atomic push"
 msgstr "o recetor não suporta publicação com --atomic"
 
-#: send-pack.c:488
+#: send-pack.c:495
 msgid "the receiving end does not support push options"
 msgstr "o recetor não suporta opções de publicação"
 
-#: sequencer.c:194
+#: sequencer.c:195
 #, fuzzy, c-format
 msgid "invalid commit message cleanup mode '%s'"
 msgstr "Modo de limpeza inválido %s"
 
-#: sequencer.c:308
+#: sequencer.c:323
 #, fuzzy, c-format
 msgid "could not delete '%s'"
 msgstr "Não foi possível eliminar %s"
 
-#: sequencer.c:329 builtin/rebase.c:749 builtin/rebase.c:1590 builtin/rm.c:385
+#: sequencer.c:343 builtin/rebase.c:755 builtin/rebase.c:1596 builtin/rm.c:385
 #, c-format
 msgid "could not remove '%s'"
 msgstr "não foi possível remover '%s'"
 
-#: sequencer.c:339
+#: sequencer.c:353
 msgid "revert"
 msgstr "reverter"
 
-#: sequencer.c:341
+#: sequencer.c:355
 msgid "cherry-pick"
 msgstr "cherry-pick"
 
-#: sequencer.c:343
+#: sequencer.c:357
 #, fuzzy
 msgid "rebase"
 msgstr "rebase -i"
 
-#: sequencer.c:345
+#: sequencer.c:359
 #, fuzzy, c-format
 msgid "unknown action: %d"
 msgstr "Ação desconhecida: %d"
 
-#: sequencer.c:404
+#: sequencer.c:418
 msgid ""
 "after resolving the conflicts, mark the corrected paths\n"
 "with 'git add <paths>' or 'git rm <paths>'"
@@ -6708,7 +6850,7 @@ msgstr ""
 "depois de resolver os conflitos, marque os caminhos corrigidos\n"
 "com 'git add <caminhos>' ou 'git rm <caminhos>'"
 
-#: sequencer.c:407
+#: sequencer.c:421
 msgid ""
 "after resolving the conflicts, mark the corrected paths\n"
 "with 'git add <paths>' or 'git rm <paths>'\n"
@@ -6718,43 +6860,43 @@ msgstr ""
 "com 'git add <caminhos>' ou 'git rm <caminhos>'\n"
 "e submeta o resultado com 'git commit'"
 
-#: sequencer.c:420 sequencer.c:3028
+#: sequencer.c:434 sequencer.c:3062
 #, c-format
 msgid "could not lock '%s'"
 msgstr "não foi possível bloquear '%s'"
 
-#: sequencer.c:422 sequencer.c:2827 sequencer.c:3032 sequencer.c:3046
-#: sequencer.c:3303 sequencer.c:5299 strbuf.c:1168 wrapper.c:631
+#: sequencer.c:436 sequencer.c:2861 sequencer.c:3066 sequencer.c:3080
+#: sequencer.c:3337 sequencer.c:5326 strbuf.c:1168 wrapper.c:631
 #, c-format
 msgid "could not write to '%s'"
 msgstr "não foi possível escrever em '%s'"
 
-#: sequencer.c:427
+#: sequencer.c:441
 #, c-format
 msgid "could not write eol to '%s'"
 msgstr "não foi possível escrever fim de linha em '%s'"
 
-#: sequencer.c:432 sequencer.c:2832 sequencer.c:3034 sequencer.c:3048
-#: sequencer.c:3311
+#: sequencer.c:446 sequencer.c:2866 sequencer.c:3068 sequencer.c:3082
+#: sequencer.c:3345
 #, fuzzy, c-format
 msgid "failed to finalize '%s'"
 msgstr "falha ao finalizar '%s'."
 
-#: sequencer.c:471
+#: sequencer.c:485
 #, c-format
 msgid "your local changes would be overwritten by %s."
 msgstr "as suas alterações locais serão substituídas ao %s."
 
-#: sequencer.c:475
+#: sequencer.c:489
 msgid "commit your changes or stash them to proceed."
 msgstr "submeta ou esconda as suas alterações para continuar."
 
-#: sequencer.c:507
+#: sequencer.c:521
 #, c-format
 msgid "%s: fast-forward"
 msgstr "%s: avanço rápido"
 
-#: sequencer.c:546 builtin/tag.c:566
+#: sequencer.c:560 builtin/tag.c:566
 #, c-format
 msgid "Invalid cleanup mode %s"
 msgstr "Modo de limpeza inválido %s"
@@ -6762,67 +6904,67 @@ msgstr "Modo de limpeza inválido %s"
 #. TRANSLATORS: %s will be "revert", "cherry-pick" or
 #. "rebase".
 #.
-#: sequencer.c:640
+#: sequencer.c:670
 #, c-format
 msgid "%s: Unable to write new index file"
 msgstr "%s: Não foi possível escrever novo ficheiro de índice"
 
-#: sequencer.c:657
+#: sequencer.c:687
 #, fuzzy
 msgid "unable to update cache tree"
-msgstr "não foi possível atualizar a árvore de cache\n"
+msgstr "não foi possível atualizar a árvore de cache"
 
-#: sequencer.c:671
+#: sequencer.c:701
 #, fuzzy
 msgid "could not resolve HEAD commit"
-msgstr "não foi possível resolver o commit HEAD\n"
+msgstr "não foi possível resolver o commit HEAD"
 
-#: sequencer.c:751
+#: sequencer.c:781
 #, c-format
 msgid "no key present in '%.*s'"
 msgstr ""
 
-#: sequencer.c:762
+#: sequencer.c:792
 #, fuzzy, c-format
 msgid "unable to dequote value of '%s'"
 msgstr "não é possível detetar automaticamente o nome (obteve-se '%s')"
 
-#: sequencer.c:799 wrapper.c:201 wrapper.c:371 builtin/am.c:724
-#: builtin/am.c:816 builtin/merge.c:1121 builtin/rebase.c:902
+#: sequencer.c:829 wrapper.c:201 wrapper.c:371 builtin/am.c:710
+#: builtin/am.c:802 builtin/merge.c:1135 builtin/rebase.c:908
 #, c-format
 msgid "could not open '%s' for reading"
 msgstr "não foi possível abrir '%s' para leitura"
 
-#: sequencer.c:809
+#: sequencer.c:839
 msgid "'GIT_AUTHOR_NAME' already given"
 msgstr ""
 
-#: sequencer.c:814
+#: sequencer.c:844
 msgid "'GIT_AUTHOR_EMAIL' already given"
 msgstr ""
 
-#: sequencer.c:819
+#: sequencer.c:849
 msgid "'GIT_AUTHOR_DATE' already given"
 msgstr ""
 
-#: sequencer.c:823
+#: sequencer.c:853
 #, fuzzy, c-format
 msgid "unknown variable '%s'"
 msgstr "Formato de arquivo desconhecido '%s'"
 
-#: sequencer.c:828
+#: sequencer.c:858
 msgid "missing 'GIT_AUTHOR_NAME'"
 msgstr ""
 
-#: sequencer.c:830
+#: sequencer.c:860
 msgid "missing 'GIT_AUTHOR_EMAIL'"
 msgstr ""
 
-#: sequencer.c:832
+#: sequencer.c:862
 msgid "missing 'GIT_AUTHOR_DATE'"
 msgstr ""
 
-#: sequencer.c:897
+#: sequencer.c:927
 #, c-format
 msgid ""
 "you have staged changes in your working tree\n"
@@ -6851,11 +6993,11 @@ msgstr ""
 "\n"
 "  git rebase --continue\n"
 
-#: sequencer.c:1178
+#: sequencer.c:1208
 msgid "'prepare-commit-msg' hook failed"
 msgstr ""
 
-#: sequencer.c:1184
+#: sequencer.c:1214
 msgid ""
 "Your name and email address were configured automatically based\n"
 "on your username and hostname. Please check that they are accurate.\n"
@@ -6881,7 +7023,7 @@ msgstr ""
 "\n"
 "    git commit --amend --reset-author\n"
 
-#: sequencer.c:1197
+#: sequencer.c:1227
 msgid ""
 "Your name and email address were configured automatically based\n"
 "on your username and hostname. Please check that they are accurate.\n"
@@ -6905,365 +7047,365 @@ msgstr ""
 "\n"
 "    git commit --amend --reset-author\n"
 
-#: sequencer.c:1239
+#: sequencer.c:1269
 msgid "couldn't look up newly created commit"
 msgstr "não foi possível consultar o commit recém-criado"
 
-#: sequencer.c:1241
+#: sequencer.c:1271
 msgid "could not parse newly created commit"
 msgstr "não foi possível analisar o commit recém-criado"
 
-#: sequencer.c:1287
+#: sequencer.c:1317
 #, fuzzy
 msgid "unable to resolve HEAD after creating commit"
-msgstr "não foi possível resolver o commit HEAD\n"
+msgstr "não foi possível resolver o commit HEAD"
 
-#: sequencer.c:1289
+#: sequencer.c:1319
 msgid "detached HEAD"
 msgstr "HEAD destacada"
 
-#: sequencer.c:1293
+#: sequencer.c:1323
 msgid " (root-commit)"
 msgstr " (commit-raiz)"
 
-#: sequencer.c:1314
+#: sequencer.c:1344
 #, fuzzy
 msgid "could not parse HEAD"
 msgstr "não foi possível ler HEAD"
 
-#: sequencer.c:1316
+#: sequencer.c:1346
 #, fuzzy, c-format
 msgid "HEAD %s is not a commit!"
 msgstr "%s %s não é um commit!"
 
-#: sequencer.c:1320 sequencer.c:1395 builtin/commit.c:1577
+#: sequencer.c:1350 sequencer.c:1425 builtin/commit.c:1577
 msgid "could not parse HEAD commit"
 msgstr "não foi possível analisar o commit HEAD"
 
-#: sequencer.c:1373 sequencer.c:2067
+#: sequencer.c:1403 sequencer.c:2100
 #, fuzzy
 msgid "unable to parse commit author"
 msgstr "não foi possível analisar o commit %s"
 
-#: sequencer.c:1384 builtin/am.c:1580 builtin/merge.c:692
+#: sequencer.c:1414 builtin/am.c:1566 builtin/merge.c:701
 msgid "git write-tree failed to write a tree"
 msgstr "git write-tree falhou ao escrever uma árvore"
 
-#: sequencer.c:1417 sequencer.c:1535
+#: sequencer.c:1447 sequencer.c:1565
 #, fuzzy, c-format
 msgid "unable to read commit message from '%s'"
 msgstr "não foi possível ler a mensagem de commit de %s"
 
-#: sequencer.c:1446 sequencer.c:1478
+#: sequencer.c:1476 sequencer.c:1508
 #, fuzzy, c-format
 msgid "invalid author identity '%s'"
 msgstr "caminho inválido '%s'"
 
-#: sequencer.c:1452
+#: sequencer.c:1482
 msgid "corrupt author: missing date information"
 msgstr ""
 
-#: sequencer.c:1491 builtin/am.c:1606 builtin/commit.c:1678 builtin/merge.c:890
-#: builtin/merge.c:915
+#: sequencer.c:1521 builtin/am.c:1593 builtin/commit.c:1678 builtin/merge.c:904
+#: builtin/merge.c:929 t/helper/test-fast-rebase.c:78
 msgid "failed to write commit object"
 msgstr "falha ao escrever objeto de commit"
 
-#: sequencer.c:1518 sequencer.c:4237
+#: sequencer.c:1548 sequencer.c:4283 t/helper/test-fast-rebase.c:198
 #, c-format
 msgid "could not update %s"
 msgstr "não foi possível atualizar %s"
 
-#: sequencer.c:1567
+#: sequencer.c:1597
 #, fuzzy, c-format
 msgid "could not parse commit %s"
 msgstr "não foi possível analisar o commit %s\n"
 
-#: sequencer.c:1572
+#: sequencer.c:1602
 #, fuzzy, c-format
 msgid "could not parse parent commit %s"
 msgstr "não foi possível analisar o commit pai %s\n"
 
-#: sequencer.c:1655 sequencer.c:1766
+#: sequencer.c:1685 sequencer.c:1796
 #, c-format
 msgid "unknown command: %d"
 msgstr "comando desconhecido: %d"
 
-#: sequencer.c:1713 sequencer.c:1738
+#: sequencer.c:1743 sequencer.c:1768
 #, c-format
 msgid "This is a combination of %d commits."
 msgstr "Isto é a combinação de %d commits."
 
-#: sequencer.c:1723
+#: sequencer.c:1753
 msgid "need a HEAD to fixup"
 msgstr "necessária uma HEAD para fixup"
 
-#: sequencer.c:1725 sequencer.c:3338
+#: sequencer.c:1755 sequencer.c:3372
 msgid "could not read HEAD"
 msgstr "não foi possível ler HEAD"
 
-#: sequencer.c:1727
+#: sequencer.c:1757
 msgid "could not read HEAD's commit message"
 msgstr "não foi possível ler a mensagem de commit de HEAD"
 
-#: sequencer.c:1733
+#: sequencer.c:1763
 #, c-format
 msgid "cannot write '%s'"
 msgstr "não é possível escrever '%s'"
 
-#: sequencer.c:1740 git-rebase--preserve-merges.sh:486
+#: sequencer.c:1770 git-rebase--preserve-merges.sh:486
 msgid "This is the 1st commit message:"
 msgstr "Esta é a 1ª mensagem de commit:"
 
-#: sequencer.c:1748
+#: sequencer.c:1778
 #, c-format
 msgid "could not read commit message of %s"
 msgstr "não foi possível ler a mensagem de commit de %s"
 
-#: sequencer.c:1755
+#: sequencer.c:1785
 #, c-format
 msgid "This is the commit message #%d:"
 msgstr "Esta é a mensagem de commit nº%d:"
 
-#: sequencer.c:1761
+#: sequencer.c:1791
 #, c-format
 msgid "The commit message #%d will be skipped:"
 msgstr "A mensagem de commit #%d será ignorada:"
 
-#: sequencer.c:1849
+#: sequencer.c:1879
 msgid "your index file is unmerged."
 msgstr "ficheiro de índice não integrado."
 
-#: sequencer.c:1856
+#: sequencer.c:1886
 #, fuzzy
 msgid "cannot fixup root commit"
 msgstr "não é possível encontrar o commit %s (%s)"
 
-#: sequencer.c:1875
+#: sequencer.c:1905
 #, c-format
 msgid "commit %s is a merge but no -m option was given."
 msgstr "o commit %s é uma integração mas não foi fornecida a opção -m."
 
-#: sequencer.c:1883 sequencer.c:1891
+#: sequencer.c:1913 sequencer.c:1921
 #, c-format
 msgid "commit %s does not have parent %d"
 msgstr "o commit %s não tem o pai %d"
 
-#: sequencer.c:1897
+#: sequencer.c:1927
 #, c-format
 msgid "cannot get commit message for %s"
 msgstr "não é possível obter a mensagem de commit de %s"
 
 #. TRANSLATORS: The first %s will be a "todo" command like
 #. "revert" or "pick", the second %s a SHA1.
-#: sequencer.c:1916
+#: sequencer.c:1946
 #, c-format
 msgid "%s: cannot parse parent commit %s"
 msgstr "%s: não foi possível analisar o commit pai %s"
 
-#: sequencer.c:1981
+#: sequencer.c:2011
 #, c-format
 msgid "could not rename '%s' to '%s'"
 msgstr "não foi possível mudar o nome de '%s' para '%s'"
 
-#: sequencer.c:2038
+#: sequencer.c:2071
 #, c-format
 msgid "could not revert %s... %s"
 msgstr "não foi possível reverter %s... %s"
 
-#: sequencer.c:2039
+#: sequencer.c:2072
 #, c-format
 msgid "could not apply %s... %s"
 msgstr "não foi possível aplicar %s... %s"
 
-#: sequencer.c:2059
+#: sequencer.c:2092
 #, c-format
 msgid "dropping %s %s -- patch contents already upstream\n"
 msgstr ""
 
-#: sequencer.c:2117
+#: sequencer.c:2150
 #, c-format
 msgid "git %s: failed to read the index"
 msgstr "git %s: falha ao ler o índice"
 
-#: sequencer.c:2124
+#: sequencer.c:2157
 #, c-format
 msgid "git %s: failed to refresh the index"
 msgstr "git %s: falha ao atualizar o índice"
 
-#: sequencer.c:2201
+#: sequencer.c:2234
 #, fuzzy, c-format
 msgid "%s does not accept arguments: '%s'"
 msgstr "%%(body) não leva argumentos"
 
-#: sequencer.c:2210
+#: sequencer.c:2243
 #, fuzzy, c-format
 msgid "missing arguments for %s"
 msgstr "falta o objeto %s de %s"
 
-#: sequencer.c:2241
+#: sequencer.c:2274
 #, fuzzy, c-format
 msgid "could not parse '%s'"
 msgstr "não foi possível analisar %s"
 
-#: sequencer.c:2302
+#: sequencer.c:2335
 #, c-format
 msgid "invalid line %d: %.*s"
 msgstr "linha %d inválida: %.*s"
 
-#: sequencer.c:2313
+#: sequencer.c:2346
 #, c-format
 msgid "cannot '%s' without a previous commit"
 msgstr "não é possível efetuar '%s' sem um commit anterior"
 
-#: sequencer.c:2399
+#: sequencer.c:2432
 #, fuzzy
 msgid "cancelling a cherry picking in progress"
-msgstr "nenhum cherry-pick ou revert em curso"
+msgstr "cancelando um cherry picking em curso"
 
-#: sequencer.c:2408
+#: sequencer.c:2441
 #, fuzzy
 msgid "cancelling a revert in progress"
-msgstr "nenhum cherry-pick ou revert em curso"
+msgstr "cancelando uma reversão em curso"
 
-#: sequencer.c:2452
+#: sequencer.c:2485
 msgid "please fix this using 'git rebase --edit-todo'."
 msgstr "corrija-o usando 'git rebase --edit-todo'."
 
-#: sequencer.c:2454
+#: sequencer.c:2487
 #, c-format
 msgid "unusable instruction sheet: '%s'"
 msgstr "folha de instruções inutilizável: '%s'"
 
-#: sequencer.c:2459
+#: sequencer.c:2492
 msgid "no commits parsed."
-msgstr "nenhum commit analisado."
+msgstr "commits nenhuns analisados."
 
-#: sequencer.c:2470
+#: sequencer.c:2503
 msgid "cannot cherry-pick during a revert."
 msgstr "não é possível efetuar cherry-pick durante uma reversão."
 
-#: sequencer.c:2472
+#: sequencer.c:2505
 msgid "cannot revert during a cherry-pick."
 msgstr "não é possível reverter durante um cherry-pick."
 
-#: sequencer.c:2550
+#: sequencer.c:2583
 #, c-format
 msgid "invalid value for %s: %s"
 msgstr "valor inválido de %s: %s"
 
-#: sequencer.c:2657
+#: sequencer.c:2690
 msgid "unusable squash-onto"
 msgstr ""
 
-#: sequencer.c:2677
+#: sequencer.c:2710
 #, c-format
 msgid "malformed options sheet: '%s'"
 msgstr "folha de opções malformada: '%s'"
 
-#: sequencer.c:2769 sequencer.c:4609
+#: sequencer.c:2803 sequencer.c:4636
 msgid "empty commit set passed"
 msgstr "o conjunto de commits especificado está vazio"
 
-#: sequencer.c:2786
+#: sequencer.c:2820
 #, fuzzy
 msgid "revert is already in progress"
 msgstr "cherry-pick ou revert em curso"
 
-#: sequencer.c:2788
+#: sequencer.c:2822
 #, fuzzy, c-format
 msgid "try \"git revert (--continue | %s--abort | --quit)\""
 msgstr "tente \"git cherry-pick (--continue | --quit |--abort)\""
 
-#: sequencer.c:2791
+#: sequencer.c:2825
 #, fuzzy
 msgid "cherry-pick is already in progress"
 msgstr "cherry-pick ou revert em curso"
 
-#: sequencer.c:2793
+#: sequencer.c:2827
 #, fuzzy, c-format
 msgid "try \"git cherry-pick (--continue | %s--abort | --quit)\""
 msgstr "tente \"git cherry-pick (--continue | --quit |--abort)\""
 
-#: sequencer.c:2807
+#: sequencer.c:2841
 #, c-format
 msgid "could not create sequencer directory '%s'"
 msgstr "não foi possível criar o diretório do sequenciador '%s'"
 
-#: sequencer.c:2822
+#: sequencer.c:2856
 msgid "could not lock HEAD"
 msgstr "não foi possível bloquear HEAD"
 
-#: sequencer.c:2882 sequencer.c:4325
+#: sequencer.c:2916 sequencer.c:4371
 msgid "no cherry-pick or revert in progress"
-msgstr "nenhum cherry-pick ou revert em curso"
+msgstr "sem cherry-pick ou revert em curso"
 
-#: sequencer.c:2884 sequencer.c:2895
+#: sequencer.c:2918 sequencer.c:2929
 msgid "cannot resolve HEAD"
 msgstr "não é possível resolver HEAD"
 
-#: sequencer.c:2886 sequencer.c:2930
+#: sequencer.c:2920 sequencer.c:2964
 msgid "cannot abort from a branch yet to be born"
 msgstr "não é possível abortar um ramo ainda não criado"
 
-#: sequencer.c:2916 builtin/grep.c:745
+#: sequencer.c:2950 builtin/grep.c:756
 #, c-format
 msgid "cannot open '%s'"
 msgstr "não é possível abrir '%s'"
 
-#: sequencer.c:2918
+#: sequencer.c:2952
 #, c-format
 msgid "cannot read '%s': %s"
 msgstr "não é possível ler '%s': %s"
 
-#: sequencer.c:2919
+#: sequencer.c:2953
 msgid "unexpected end of file"
 msgstr "fim de ficheiro inesperado"
 
-#: sequencer.c:2925
+#: sequencer.c:2959
 #, c-format
 msgid "stored pre-cherry-pick HEAD file '%s' is corrupt"
 msgstr "o ficheiro HEAD de pre-cherry-pick '%s' está corrompido"
 
-#: sequencer.c:2936
+#: sequencer.c:2970
 msgid "You seem to have moved HEAD. Not rewinding, check your HEAD!"
 msgstr "Parece que a HEAD se moveu. Não recuando, verifique a HEAD."
 
-#: sequencer.c:2977
+#: sequencer.c:3011
 #, fuzzy
 msgid "no revert in progress"
 msgstr "Rebase não está em curso?"
 
-#: sequencer.c:2986
+#: sequencer.c:3020
 #, fuzzy
 msgid "no cherry-pick in progress"
-msgstr "nenhum cherry-pick ou revert em curso"
+msgstr "cherry-pick nenhum em curso"
 
-#: sequencer.c:2996
+#: sequencer.c:3030
 #, fuzzy
 msgid "failed to skip the commit"
 msgstr "falha ao escrever objeto de commit"
 
-#: sequencer.c:3003
+#: sequencer.c:3037
 msgid "there is nothing to skip"
 msgstr ""
 
-#: sequencer.c:3006
+#: sequencer.c:3040
 #, c-format
 msgid ""
 "have you committed already?\n"
 "try \"git %s --continue\""
 msgstr ""
 
-#: sequencer.c:3168 sequencer.c:4217
+#: sequencer.c:3202 sequencer.c:4263
 msgid "cannot read HEAD"
 msgstr "não é possível ler HEAD"
 
-#: sequencer.c:3185
+#: sequencer.c:3219
 #, fuzzy, c-format
 msgid "unable to copy '%s' to '%s'"
 msgstr "não foi possível copiar '%s' para '%s'"
 
-#: sequencer.c:3193
+#: sequencer.c:3227
 #, fuzzy, c-format
 msgid ""
 "You can amend the commit now, with\n"
@@ -7276,33 +7418,33 @@ msgid ""
 msgstr ""
 "Pode emendar o commit agora, com\n"
 "\n"
-"\tgit commit --amend $gpg_sign_opt_quoted\n"
+"  git commit --amend %s\n"
 "\n"
 "Assim que estiver satisfeito com as alterações, execute\n"
 "\n"
-"\tgit rebase --continue"
+"  git rebase --continue\n"
 
-#: sequencer.c:3203
+#: sequencer.c:3237
 #, fuzzy, c-format
 msgid "Could not apply %s... %.*s"
 msgstr "não foi possível aplicar %s... %s"
 
-#: sequencer.c:3210
+#: sequencer.c:3244
 #, fuzzy, c-format
 msgid "Could not merge %.*s"
 msgstr "Não foi possível ler %s."
 
-#: sequencer.c:3224 sequencer.c:3228 builtin/difftool.c:641
+#: sequencer.c:3258 sequencer.c:3262 builtin/difftool.c:640
 #, c-format
 msgid "could not copy '%s' to '%s'"
 msgstr "não foi possível copiar '%s' para '%s'"
 
-#: sequencer.c:3240
+#: sequencer.c:3274
 #, fuzzy, c-format
 msgid "Executing: %s\n"
-msgstr "A executar: $rest"
+msgstr "A executar: %s\n"
 
-#: sequencer.c:3255
+#: sequencer.c:3289
 #, c-format
 msgid ""
 "execution failed: %s\n"
@@ -7317,11 +7459,11 @@ msgstr ""
 "  git rebase --continue\n"
 "\n"
 
-#: sequencer.c:3261
+#: sequencer.c:3295
 msgid "and made changes to the index and/or the working tree\n"
 msgstr "e fez alterações ao índice e/ou à árvore de trabalho\n"
 
-#: sequencer.c:3267
+#: sequencer.c:3301
 #, c-format
 msgid ""
 "execution succeeded: %s\n"
@@ -7338,136 +7480,128 @@ msgstr ""
 "  git rebase --continue\n"
 "\n"
 
-#: sequencer.c:3328
+#: sequencer.c:3362
 #, fuzzy, c-format
 msgid "illegal label name: '%.*s'"
 msgstr "nome de ficheiro malformado: %.*s"
 
-#: sequencer.c:3382
+#: sequencer.c:3416
 #, fuzzy
 msgid "writing fake root commit"
-msgstr "não há nada para submeter\n"
+msgstr "não há nada para submeter"
 
-#: sequencer.c:3387
+#: sequencer.c:3421
 msgid "writing squash-onto"
 msgstr ""
 
-#: sequencer.c:3471
+#: sequencer.c:3505
 #, fuzzy, c-format
 msgid "could not resolve '%s'"
 msgstr "não foi possível remover '%s'"
 
-#: sequencer.c:3502
+#: sequencer.c:3538
 #, fuzzy
 msgid "cannot merge without a current revision"
 msgstr "não é possível efetuar '%s' sem um commit anterior"
 
-#: sequencer.c:3524
+#: sequencer.c:3560
 #, fuzzy, c-format
 msgid "unable to parse '%.*s'"
 msgstr "não foi possível criar '%s'"
 
-#: sequencer.c:3533
+#: sequencer.c:3569
 #, fuzzy, c-format
 msgid "nothing to merge: '%.*s'"
-msgstr "ignorado não integrado: %s\n"
+msgstr "ignorado não integrado: '%.*s'"
 
-#: sequencer.c:3545
+#: sequencer.c:3581
 msgid "octopus merge cannot be executed on top of a [new root]"
 msgstr ""
 
-#: sequencer.c:3561
+#: sequencer.c:3597
 #, fuzzy, c-format
 msgid "could not get commit message of '%s'"
 msgstr "não foi possível ler a mensagem de commit de %s"
 
-#: sequencer.c:3730
+#: sequencer.c:3780
 #, fuzzy, c-format
 msgid "could not even attempt to merge '%.*s'"
 msgstr "não foi possível validar a tag '%s'"
 
-#: sequencer.c:3746
+#: sequencer.c:3796
 #, fuzzy
 msgid "merge: Unable to write new index file"
 msgstr "%s: Não foi possível escrever novo ficheiro de índice"
 
-#: sequencer.c:3820
+#: sequencer.c:3870
 msgid "Cannot autostash"
 msgstr "Não é possível empilhar automaticamente (autostash)"
 
-#: sequencer.c:3823
+#: sequencer.c:3873
 #, fuzzy, c-format
 msgid "Unexpected stash response: '%s'"
-msgstr ""
-"1ª linha inesperada da mensagem de squash:\n"
-"\n"
-"\t%.*s"
+msgstr "Resposta de squash inexperada: '%s'"
 
-#: sequencer.c:3829
+#: sequencer.c:3879
 #, fuzzy, c-format
 msgid "Could not create directory for '%s'"
 msgstr "Não foi possível criar o diretório '%s'"
 
-#: sequencer.c:3832
+#: sequencer.c:3882
 #, fuzzy, c-format
 msgid "Created autostash: %s\n"
-msgstr "Pilha automática (autostash) criada: $stash_abbrev"
+msgstr "Criado autostash: %s\n"
 
-#: sequencer.c:3836
+#: sequencer.c:3886
 #, fuzzy
 msgid "could not reset --hard"
 msgstr "não foi possível ler orig-head"
 
-#: sequencer.c:3861
+#: sequencer.c:3911
 #, fuzzy, c-format
 msgid "Applied autostash.\n"
-msgstr "Pilha automática (autostash) aplicada."
+msgstr "Autostash aplicado.\n"
 
-#: sequencer.c:3873
+#: sequencer.c:3923
 #, c-format
 msgid "cannot store %s"
 msgstr "não é possível guardar %s"
 
-#: sequencer.c:3876
+#: sequencer.c:3926
 #, fuzzy, c-format
 msgid ""
 "%s\n"
 "Your changes are safe in the stash.\n"
 "You can run \"git stash pop\" or \"git stash drop\" at any time.\n"
 msgstr ""
-"Surgiram conflitos ao aplicar a pilha automática (autostash).\n"
+"%s\n"
 "As suas alterações estão guardadas na pilha.\n"
 "Pode executar \"git stash pop\" ou \"git stash drop\" oportunamente.\n"
 
-#: sequencer.c:3881
+#: sequencer.c:3931
 #, fuzzy
 msgid "Applying autostash resulted in conflicts."
-msgstr "Patch aplicado a '%s' com conflitos.\n"
+msgstr "Patch aplicado a '%s' com conflitos."
 
-#: sequencer.c:3882
+#: sequencer.c:3932
 msgid "Autostash exists; creating a new stash entry."
 msgstr ""
 
-#: sequencer.c:3974
-#, fuzzy, c-format
-msgid "%s: not a valid OID"
-msgstr "'%s' não é uma referência válida."
-
-#: sequencer.c:3979 git-rebase--preserve-merges.sh:769
+#: sequencer.c:4025 git-rebase--preserve-merges.sh:769
 msgid "could not detach HEAD"
 msgstr "não foi possível destacar HEAD"
 
-#: sequencer.c:3994
+#: sequencer.c:4040
 #, fuzzy, c-format
 msgid "Stopped at HEAD\n"
-msgstr "Parou a %s...  %.*s\n"
+msgstr "Parou no HEAD\n"
 
-#: sequencer.c:3996
+#: sequencer.c:4042
 #, fuzzy, c-format
 msgid "Stopped at %s\n"
 msgstr "Parou a %s...  %.*s\n"
 
-#: sequencer.c:4004
+#: sequencer.c:4050
 #, c-format
 msgid ""
 "Could not execute the todo command\n"
@@ -7480,58 +7614,58 @@ msgid ""
 "    git rebase --continue\n"
 msgstr ""
 
-#: sequencer.c:4050
+#: sequencer.c:4096
 #, c-format
 msgid "Rebasing (%d/%d)%s"
 msgstr ""
 
-#: sequencer.c:4095
+#: sequencer.c:4141
 #, c-format
 msgid "Stopped at %s...  %.*s\n"
-msgstr "Parou a %s...  %.*s\n"
+msgstr "Parou no %s...  %.*s\n"
 
-#: sequencer.c:4166
+#: sequencer.c:4212
 #, c-format
 msgid "unknown command %d"
 msgstr "comando desconhecido %d"
 
-#: sequencer.c:4225
+#: sequencer.c:4271
 msgid "could not read orig-head"
 msgstr "não foi possível ler orig-head"
 
-#: sequencer.c:4230
+#: sequencer.c:4276
 msgid "could not read 'onto'"
 msgstr "não foi possível ler 'onto'"
 
-#: sequencer.c:4244
+#: sequencer.c:4290
 #, c-format
 msgid "could not update HEAD to %s"
 msgstr "não foi possível atualizar HEAD para %s"
 
-#: sequencer.c:4304
+#: sequencer.c:4350
 #, fuzzy, c-format
 msgid "Successfully rebased and updated %s.\n"
-msgstr "$head_name rebaseado e atualizado com sucesso."
+msgstr "O %s foi rebaseado e atualizado com sucesso.\n"
 
-#: sequencer.c:4337
+#: sequencer.c:4383
 msgid "cannot rebase: You have unstaged changes."
 msgstr "não é possível rebasear: tem alterações não preparadas."
 
-#: sequencer.c:4346
+#: sequencer.c:4392
 msgid "cannot amend non-existing commit"
 msgstr "não é possível emendar commit não-existente"
 
-#: sequencer.c:4348
+#: sequencer.c:4394
 #, c-format
 msgid "invalid file: '%s'"
 msgstr "ficheiro inválido: '%s'"
 
-#: sequencer.c:4350
+#: sequencer.c:4396
 #, c-format
 msgid "invalid contents: '%s'"
 msgstr "conteúdo inválido: '%s'"
 
-#: sequencer.c:4353
+#: sequencer.c:4399
 msgid ""
 "\n"
 "You have uncommitted changes in your working tree. Please, commit them\n"
@@ -7541,57 +7675,52 @@ msgstr ""
 "Tem alterações por submeter na árvore de trabalho. Submeta-as primeiro\n"
 "e execute 'git rebase --continue' de novo."
 
-#: sequencer.c:4389 sequencer.c:4428
+#: sequencer.c:4435 sequencer.c:4474
 #, fuzzy, c-format
 msgid "could not write file: '%s'"
 msgstr "não foi possível criar o ficheiro '%s'"
 
-#: sequencer.c:4444
+#: sequencer.c:4490
 msgid "could not remove CHERRY_PICK_HEAD"
 msgstr "não foi possível remover CHERRY_PICK_HEAD"
 
-#: sequencer.c:4451
+#: sequencer.c:4497
 msgid "could not commit staged changes."
 msgstr "não foi possível submeter as alterações preparadas."
 
-#: sequencer.c:4477
-#, fuzzy, c-format
-msgid "invalid committer '%s'"
-msgstr "commit inválido %s"
-
-#: sequencer.c:4586
+#: sequencer.c:4613
 #, c-format
 msgid "%s: can't cherry-pick a %s"
 msgstr "%s: não é possível efetuar cherry-pick de %s"
 
-#: sequencer.c:4590
+#: sequencer.c:4617
 #, c-format
 msgid "%s: bad revision"
 msgstr "%s: revisão incorreta"
 
-#: sequencer.c:4625
+#: sequencer.c:4652
 msgid "can't revert as initial commit"
 msgstr "não é possível reverter como commit inicial"
 
-#: sequencer.c:5102
+#: sequencer.c:5129
 msgid "make_script: unhandled options"
 msgstr ""
 
-#: sequencer.c:5105
+#: sequencer.c:5132
 msgid "make_script: error preparing revisions"
 msgstr ""
 
-#: sequencer.c:5347 sequencer.c:5364
+#: sequencer.c:5374 sequencer.c:5391
 #, fuzzy
 msgid "nothing to do"
-msgstr "não há nada para submeter\n"
+msgstr "há nada a fazer"
 
-#: sequencer.c:5383
+#: sequencer.c:5410
 #, fuzzy
 msgid "could not skip unnecessary pick commands"
 msgstr "Não foi possível saltar comandos pick desnecessários"
 
-#: sequencer.c:5480
+#: sequencer.c:5504
 msgid "the script was already rearranged."
 msgstr ""
 
@@ -7606,9 +7735,9 @@ msgid ""
 "%s: no such path in the working tree.\n"
 "Use 'git <command> -- <path>...' to specify paths that do not exist locally."
 msgstr ""
-"%s: não há tal caminho na árvore de trabalho.\n"
-"Use 'git <comando> -- <caminho>...' para especificar caminhos que não "
-"existem localmente."
+"%s: sem tal path na working tree.\n"
+"Use 'git <comando> -- <path>...' para especificar caminhos inexistentes "
+"localmente."
 
 #: setup.c:198
 #, c-format
@@ -7764,269 +7893,269 @@ msgstr "falha ao invocar fseek"
 msgid "setsid failed"
 msgstr "falha ao executar o comando stash"
 
-#: sha1-file.c:470
+#: sha1-file.c:480
 #, c-format
 msgid "object directory %s does not exist; check .git/objects/info/alternates"
 msgstr ""
 
-#: sha1-file.c:521
+#: sha1-file.c:531
 #, fuzzy, c-format
 msgid "unable to normalize alternate object path: %s"
 msgstr "não foi possível analisar o objeto: %s"
 
-#: sha1-file.c:593
+#: sha1-file.c:603
 #, c-format
 msgid "%s: ignoring alternate object stores, nesting too deep"
 msgstr ""
 
-#: sha1-file.c:600
+#: sha1-file.c:610
 #, fuzzy, c-format
 msgid "unable to normalize object directory: %s"
 msgstr "não foi possível analisar o objeto: %s"
 
-#: sha1-file.c:643
+#: sha1-file.c:653
 #, fuzzy
 msgid "unable to fdopen alternates lockfile"
 msgstr "não foi possível escrever os parâmetros no ficheiro de configuração"
 
-#: sha1-file.c:661
+#: sha1-file.c:671
 #, fuzzy
 msgid "unable to read alternates file"
 msgstr "não foi possível ler o ficheiro de índice"
 
-#: sha1-file.c:668
+#: sha1-file.c:678
 #, fuzzy
 msgid "unable to move new alternates file into place"
 msgstr "não foi possível escrever novo ficheiro de índice"
 
-#: sha1-file.c:703
+#: sha1-file.c:713
 #, c-format
 msgid "path '%s' does not exist"
 msgstr "o caminho '%s' não existe"
 
-#: sha1-file.c:724
+#: sha1-file.c:734
 #, c-format
 msgid "reference repository '%s' as a linked checkout is not supported yet."
 msgstr ""
 "ainda não é suportada a funcionalidade que permite ter o repositório de "
 "referência '%s' como uma extração ligada."
 
-#: sha1-file.c:730
+#: sha1-file.c:740
 #, c-format
 msgid "reference repository '%s' is not a local repository."
 msgstr "o repositório de referência '%s' não é um repositório local."
 
-#: sha1-file.c:736
+#: sha1-file.c:746
 #, c-format
 msgid "reference repository '%s' is shallow"
 msgstr "o repositório de referência '%s' é raso"
 
-#: sha1-file.c:744
+#: sha1-file.c:754
 #, c-format
 msgid "reference repository '%s' is grafted"
 msgstr "o repositório de referência '%s' está enxertado"
 
-#: sha1-file.c:804
+#: sha1-file.c:814
 #, c-format
 msgid "invalid line while parsing alternate refs: %s"
 msgstr ""
 
-#: sha1-file.c:954
+#: sha1-file.c:964
 #, c-format
 msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
 msgstr ""
 
-#: sha1-file.c:975
+#: sha1-file.c:985
 #, fuzzy
 msgid "mmap failed"
 msgstr "%s falhou"
 
-#: sha1-file.c:1139
+#: sha1-file.c:1149
 #, fuzzy, c-format
 msgid "object file %s is empty"
 msgstr "objeto local %s corrompido"
 
-#: sha1-file.c:1274 sha1-file.c:2467
+#: sha1-file.c:1284 sha1-file.c:2477
 #, fuzzy, c-format
 msgid "corrupt loose object '%s'"
 msgstr "não foi possível analisar o objeto '%s'"
 
-#: sha1-file.c:1276 sha1-file.c:2471
+#: sha1-file.c:1286 sha1-file.c:2481
 #, fuzzy, c-format
 msgid "garbage at end of loose object '%s'"
 msgstr "não foi possível analisar o objeto: %s"
 
-#: sha1-file.c:1318
+#: sha1-file.c:1328
 #, fuzzy
 msgid "invalid object type"
 msgstr "tipo de objeto incorreto."
 
-#: sha1-file.c:1402
+#: sha1-file.c:1412
 #, c-format
 msgid "unable to unpack %s header with --allow-unknown-type"
 msgstr ""
 
-#: sha1-file.c:1405
+#: sha1-file.c:1415
 #, fuzzy, c-format
 msgid "unable to unpack %s header"
 msgstr "não foi possível atualizar %s"
 
-#: sha1-file.c:1411
+#: sha1-file.c:1421
 #, c-format
 msgid "unable to parse %s header with --allow-unknown-type"
 msgstr ""
 
-#: sha1-file.c:1414
+#: sha1-file.c:1424
 #, fuzzy, c-format
 msgid "unable to parse %s header"
 msgstr "não foi possível atualizar %s"
 
-#: sha1-file.c:1641
+#: sha1-file.c:1651
 #, fuzzy, c-format
 msgid "failed to read object %s"
 msgstr "falha ao ler o objeto '%s'."
 
-#: sha1-file.c:1645
+#: sha1-file.c:1655
 #, fuzzy, c-format
 msgid "replacement %s not found for %s"
 msgstr "modelos não encontrados em %s"
 
-#: sha1-file.c:1649
+#: sha1-file.c:1659
 #, fuzzy, c-format
 msgid "loose object %s (stored in %s) is corrupt"
 msgstr "objeto local %s corrompido"
 
-#: sha1-file.c:1653
+#: sha1-file.c:1663
 #, fuzzy, c-format
 msgid "packed object %s (stored in %s) is corrupt"
 msgstr "objeto local %s corrompido"
 
-#: sha1-file.c:1758
+#: sha1-file.c:1768
 #, fuzzy, c-format
 msgid "unable to write file %s"
 msgstr "não foi possível escrever %s"
 
-#: sha1-file.c:1765
+#: sha1-file.c:1775
 #, fuzzy, c-format
 msgid "unable to set permission to '%s'"
 msgstr "não foi possível resolver revisão: %s"
 
-#: sha1-file.c:1772
+#: sha1-file.c:1782
 #, fuzzy
 msgid "file write error"
 msgstr "falha ao escrever para rev-list"
 
-#: sha1-file.c:1792
+#: sha1-file.c:1802
 #, fuzzy
 msgid "error when closing loose object file"
 msgstr "erro ao fechar ficheiro de pacote"
 
-#: sha1-file.c:1857
+#: sha1-file.c:1867
 #, c-format
 msgid "insufficient permission for adding an object to repository database %s"
 msgstr ""
 
-#: sha1-file.c:1859
+#: sha1-file.c:1869
 #, fuzzy
 msgid "unable to create temporary file"
 msgstr "não foi possível criar índice temporário"
 
-#: sha1-file.c:1883
+#: sha1-file.c:1893
 #, fuzzy
 msgid "unable to write loose object file"
 msgstr "não é possível escrever o objeto de nota"
 
-#: sha1-file.c:1889
+#: sha1-file.c:1899
 #, fuzzy, c-format
 msgid "unable to deflate new object %s (%d)"
 msgstr "não é possível compactar objeto acrescentado (%d)"
 
-#: sha1-file.c:1893
+#: sha1-file.c:1903
 #, fuzzy, c-format
 msgid "deflateEnd on object %s failed (%d)"
 msgstr "falha de fstat de %s"
 
-#: sha1-file.c:1897
+#: sha1-file.c:1907
 #, c-format
 msgid "confused by unstable object source data for %s"
 msgstr ""
 
-#: sha1-file.c:1907 builtin/pack-objects.c:1086
+#: sha1-file.c:1917 builtin/pack-objects.c:1086
 #, fuzzy, c-format
 msgid "failed utime() on %s"
 msgstr "falha ao abrir '%s'"
 
-#: sha1-file.c:1984
+#: sha1-file.c:1994
 #, fuzzy, c-format
 msgid "cannot read object for %s"
 msgstr "não foi possível ler o objeto %s"
 
-#: sha1-file.c:2035
+#: sha1-file.c:2045
 #, fuzzy
 msgid "corrupt commit"
 msgstr "substituir autor do commit"
 
-#: sha1-file.c:2043
+#: sha1-file.c:2053
 #, fuzzy
 msgid "corrupt tag"
 msgstr "mostrar tags"
 
-#: sha1-file.c:2143
+#: sha1-file.c:2153
 #, c-format
 msgid "read error while indexing %s"
 msgstr ""
 
-#: sha1-file.c:2146
+#: sha1-file.c:2156
 #, fuzzy, c-format
 msgid "short read while indexing %s"
 msgstr "não é possível ler o índice"
 
-#: sha1-file.c:2219 sha1-file.c:2229
+#: sha1-file.c:2229 sha1-file.c:2239
 #, fuzzy, c-format
 msgid "%s: failed to insert into database"
 msgstr "gpg não assinou os dados"
 
-#: sha1-file.c:2235
+#: sha1-file.c:2245
 #, fuzzy, c-format
 msgid "%s: unsupported file type"
 msgstr "versão de índice %s não suportada"
 
-#: sha1-file.c:2259
+#: sha1-file.c:2269
 #, fuzzy, c-format
 msgid "%s is not a valid object"
 msgstr "%s não é um objeto '%s' válido"
 
-#: sha1-file.c:2261
+#: sha1-file.c:2271
 #, c-format
 msgid "%s is not a valid '%s' object"
 msgstr "%s não é um objeto '%s' válido"
 
-#: sha1-file.c:2288 builtin/index-pack.c:192
+#: sha1-file.c:2298 builtin/index-pack.c:192
 #, c-format
 msgid "unable to open %s"
 msgstr "não foi possível abrir %s"
 
-#: sha1-file.c:2478 sha1-file.c:2531
+#: sha1-file.c:2488 sha1-file.c:2541
 #, c-format
 msgid "hash mismatch for %s (expected %s)"
 msgstr ""
 
-#: sha1-file.c:2502
+#: sha1-file.c:2512
 #, fuzzy, c-format
 msgid "unable to mmap %s"
 msgstr "não foi possível abrir %s"
 
-#: sha1-file.c:2507
+#: sha1-file.c:2517
 #, fuzzy, c-format
 msgid "unable to unpack header of %s"
 msgstr "não foi possível atualizar %s"
 
-#: sha1-file.c:2513
+#: sha1-file.c:2523
 #, fuzzy, c-format
 msgid "unable to parse header of %s"
 msgstr "não foi possível ler %s"
 
-#: sha1-file.c:2524
+#: sha1-file.c:2534
 #, fuzzy, c-format
 msgid "unable to unpack contents of %s"
 msgstr "não é possível analisar o contacto: %s"
@@ -8181,8 +8310,8 @@ msgid_plural "%u bytes/s"
 msgstr[0] "bytes"
 msgstr[1] "bytes"
 
-#: strbuf.c:1166 wrapper.c:199 wrapper.c:369 builtin/am.c:733
-#: builtin/rebase.c:858
+#: strbuf.c:1166 wrapper.c:199 wrapper.c:369 builtin/am.c:719
+#: builtin/rebase.c:864
 #, c-format
 msgid "could not open '%s' for writing"
 msgstr "não foi possível abrir '%s' para escrita"
@@ -8283,29 +8412,31 @@ msgstr "Falha ao resolver HEAD numa referência válida."
 #: submodule.c:1167
 #, fuzzy, c-format
 msgid "Pushing submodule '%s'\n"
-msgstr "A ignorar submódulo '%s'"
+msgstr "A ignorar submódulo '%s'\n"
 
 #: submodule.c:1170
 #, fuzzy, c-format
 msgid "Unable to push submodule '%s'\n"
-msgstr "Não foi possível extrair o submódulo '$sm_path'"
+msgstr "Impossível enviar submódulo '%s'\n"
 
 #: submodule.c:1462
 #, fuzzy, c-format
 msgid "Fetching submodule %s%s\n"
-msgstr "A ignorar submódulo '%s'"
+msgstr "Buscando submódulo %s%s\n"
 
 #: submodule.c:1492
 #, fuzzy, c-format
 msgid "Could not access submodule '%s'\n"
-msgstr "não foi possível percorrer recursivamente o submódulo '%s'"
+msgstr "Submódulo '%s' inacessível\n"
 
 #: submodule.c:1646
 #, fuzzy, c-format
 msgid ""
 "Errors during submodule fetch:\n"
 "%s"
-msgstr "percorrer submódulos recursivamente"
+msgstr ""
+"Erros na busca do submódulo:\n"
+"%s"
 
 #: submodule.c:1671
 #, c-format
@@ -8411,7 +8542,7 @@ msgstr "falha ao executar o comando trailer '%s'"
 msgid "unknown value '%s' for key '%s'"
 msgstr "valor desconhecido '%s' da chave '%s'"
 
-#: trailer.c:537 trailer.c:542 builtin/remote.c:298 builtin/remote.c:323
+#: trailer.c:537 trailer.c:542 builtin/remote.c:299 builtin/remote.c:324
 #, c-format
 msgid "more than one %s"
 msgstr "mais do que um %s"
@@ -8499,7 +8630,7 @@ msgstr "não foi possível executar o comando stash."
 msgid "error while running fast-import"
 msgstr "erro ao fechar ficheiro de pacote"
 
-#: transport-helper.c:549 transport-helper.c:1226
+#: transport-helper.c:549 transport-helper.c:1236
 #, fuzzy, c-format
 msgid "could not read ref %s"
 msgstr "Não foi possível ler a referência %s"
@@ -8518,7 +8649,7 @@ msgstr ""
 msgid "invalid remote service path"
 msgstr "referência inválida: %s"
 
-#: transport-helper.c:661 transport.c:1428
+#: transport-helper.c:661 transport.c:1446
 #, fuzzy
 msgid "operation not supported by protocol"
 msgstr "opção não suportada com --recurse-submodules."
@@ -8537,108 +8668,113 @@ msgstr ""
 msgid "expected ok/error, helper said '%s'"
 msgstr "blob para %s '%s' esperado"
 
-#: transport-helper.c:841
+#: transport-helper.c:845
 #, fuzzy, c-format
 msgid "helper reported unexpected status of %s"
 msgstr "ls-tree retornou código de retorno inesperado %d"
 
-#: transport-helper.c:924
+#: transport-helper.c:928
 #, fuzzy, c-format
 msgid "helper %s does not support dry-run"
 msgstr "O servidor não suporta --deepen"
 
-#: transport-helper.c:927
+#: transport-helper.c:931
 #, fuzzy, c-format
 msgid "helper %s does not support --signed"
 msgstr "O servidor não suporta --shallow-since"
 
-#: transport-helper.c:930
+#: transport-helper.c:934
 #, fuzzy, c-format
 msgid "helper %s does not support --signed=if-asked"
 msgstr "o recetor não suporta publicação com --signed"
 
-#: transport-helper.c:935
+#: transport-helper.c:939
 #, fuzzy, c-format
 msgid "helper %s does not support --atomic"
 msgstr "O servidor não suporta --shallow-since"
 
-#: transport-helper.c:941
+#: transport-helper.c:943
+#, fuzzy, c-format
+msgid "helper %s does not support --%s"
+msgstr "O servidor não suporta --shallow-since"
+
+#: transport-helper.c:950
 #, fuzzy, c-format
 msgid "helper %s does not support 'push-option'"
 msgstr "o recetor não suporta opções de publicação"
 
-#: transport-helper.c:1040
+#: transport-helper.c:1050
 msgid "remote-helper doesn't support push; refspec needed"
 msgstr ""
 
-#: transport-helper.c:1045
+#: transport-helper.c:1055
 #, fuzzy, c-format
 msgid "helper %s does not support 'force'"
 msgstr "O servidor não suporta --deepen"
 
-#: transport-helper.c:1092
+#: transport-helper.c:1102
 #, fuzzy
 msgid "couldn't run fast-export"
 msgstr "não foi possível executar o comando stash."
 
-#: transport-helper.c:1097
+#: transport-helper.c:1107
 #, fuzzy
 msgid "error while running fast-export"
 msgstr "erro ao fechar ficheiro de pacote"
 
-#: transport-helper.c:1122
+#: transport-helper.c:1132
 #, c-format
 msgid ""
 "No refs in common and none specified; doing nothing.\n"
 "Perhaps you should specify a branch.\n"
 msgstr ""
 
-#: transport-helper.c:1203
+#: transport-helper.c:1213
 #, fuzzy, c-format
 msgid "unsupported object format '%s'"
 msgstr "objeto malformado em '%s'"
 
-#: transport-helper.c:1212
+#: transport-helper.c:1222
 #, fuzzy, c-format
 msgid "malformed response in ref list: %s"
 msgstr "folha de opções malformada: '%s'"
 
-#: transport-helper.c:1364
+#: transport-helper.c:1374
 #, fuzzy, c-format
 msgid "read(%s) failed"
 msgstr "%s falhou"
 
-#: transport-helper.c:1391
+#: transport-helper.c:1401
 #, fuzzy, c-format
 msgid "write(%s) failed"
 msgstr "%s falhou"
 
-#: transport-helper.c:1440
+#: transport-helper.c:1450
 #, fuzzy, c-format
 msgid "%s thread failed"
 msgstr "%s falhou"
 
-#: transport-helper.c:1444
+#: transport-helper.c:1454
 #, fuzzy, c-format
 msgid "%s thread failed to join: %s"
 msgstr "falha ao abrir '%s'"
 
-#: transport-helper.c:1463 transport-helper.c:1467
+#: transport-helper.c:1473 transport-helper.c:1477
 #, c-format
 msgid "can't start thread for copying data: %s"
 msgstr ""
 
-#: transport-helper.c:1504
+#: transport-helper.c:1514
 #, c-format
 msgid "%s process failed to wait"
 msgstr ""
 
-#: transport-helper.c:1508
+#: transport-helper.c:1518
 #, fuzzy, c-format
 msgid "%s process failed"
 msgstr "%s falhou"
 
-#: transport-helper.c:1526 transport-helper.c:1535
+#: transport-helper.c:1536 transport-helper.c:1545
 msgid "can't start thread for copying data"
 msgstr ""
 
@@ -8665,39 +8801,39 @@ msgstr ""
 msgid "server options require protocol version 2 or later"
 msgstr ""
 
-#: transport.c:712
+#: transport.c:727
 #, fuzzy
 msgid "could not parse transport.color.* config"
 msgstr "não foi possível analisar o autor do script"
 
-#: transport.c:785
+#: transport.c:802
 msgid "support for protocol v2 not implemented yet"
 msgstr ""
 
-#: transport.c:919
+#: transport.c:936
 #, fuzzy, c-format
 msgid "unknown value for config '%s': %s"
 msgstr "valor desconhecido '%s' da chave '%s'"
 
-#: transport.c:985
+#: transport.c:1002
 #, fuzzy, c-format
 msgid "transport '%s' not allowed"
 msgstr "ramo '%s' não encontrado."
 
-#: transport.c:1038
+#: transport.c:1055
 msgid "git-over-rsync is no longer supported"
 msgstr ""
 
-#: transport.c:1140
+#: transport.c:1157
 #, c-format
 msgid ""
 "The following submodule paths contain changes that can\n"
 "not be found on any remote:\n"
 msgstr ""
-"Os seguintes caminhos de submódulo contêm alterações que\n"
-"não puderam ser encontradas a nenhum remoto:\n"
+"Os seguintes paths de submódulo contêm alterações que\n"
+"puderam ser encontradas em remoto nenhum:\n"
 
-#: transport.c:1144
+#: transport.c:1161
 #, c-format
 msgid ""
 "\n"
@@ -8724,11 +8860,11 @@ msgstr ""
 "para publicá-las no remoto.\n"
 "\n"
 
-#: transport.c:1152
+#: transport.c:1169
 msgid "Aborting."
 msgstr "Abortado."
 
-#: transport.c:1297
+#: transport.c:1315
 #, fuzzy
 msgid "failed to push all needed submodules"
 msgstr "Falha ao adicionar o submódulo '$sm_path'"
@@ -8847,7 +8983,7 @@ msgid ""
 msgstr ""
 "Os seguintes ficheiros não controlados na árvore de trabalho seriam "
 "removidos ao integrar:\n"
-"%%sMova ou remova-os antes de integrar."
+"%%sPor favor, mova ou remova-os antes de integrar."
 
 #: unpack-trees.c:141
 #, c-format
@@ -8968,7 +9104,10 @@ msgstr ""
 msgid ""
 "The following paths are unmerged and were left despite sparse patterns:\n"
 "%s"
-msgstr "Os seguintes caminhos estão ignorados por algum ficheiro .gitignore:\n"
+msgstr ""
+"Os seguintes caminhos estão unmerged e foram abandonados, apesar de sparse "
+"patterns:\n"
+"%s"
 
 #: unpack-trees.c:182
 #, c-format
@@ -9007,7 +9146,7 @@ msgstr ""
 msgid "Updating index flags"
 msgstr "A atualizar %s"
 
-#: upload-pack.c:1516
+#: upload-pack.c:1550
 msgid "expected flush after fetch arguments"
 msgstr ""
 
@@ -9045,7 +9184,7 @@ msgstr "segmento de caminho '..' inválido"
 msgid "Fetching objects"
 msgstr "A verificar objetos"
 
-#: worktree.c:236 builtin/am.c:2116
+#: worktree.c:236 builtin/am.c:2103
 #, c-format
 msgid "failed to read '%s'"
 msgstr "falha ao ler '%s'"
@@ -9447,7 +9586,7 @@ msgstr ""
 #: wt-status.c:1415
 #, fuzzy
 msgid "Cherry-pick currently in progress."
-msgstr "nenhum cherry-pick ou revert em curso"
+msgstr "Cherry-pick atualmente em curso"
 
 #: wt-status.c:1418
 #, c-format
@@ -9544,16 +9683,16 @@ msgstr "rebase em curso; sobre "
 
 #: wt-status.c:1750
 msgid "Not currently on any branch."
-msgstr "Não se encontra em nenhum ramo neste momento."
+msgstr "Atualmente em ramo nenhum."
 
 #: wt-status.c:1767
 msgid "Initial commit"
-msgstr "Commit inicial"
+msgstr "Memória inicial"
 
 #: wt-status.c:1768
 #, fuzzy
 msgid "No commits yet"
-msgstr "nenhum commit analisado."
+msgstr "Ainda commits nenhuns"
 
 #: wt-status.c:1782
 msgid "Untracked files"
@@ -9591,14 +9730,13 @@ msgstr "Sem alterações"
 #: wt-status.c:1807
 #, c-format
 msgid "no changes added to commit (use \"git add\" and/or \"git commit -a\")\n"
-msgstr ""
-"nenhuma alteração adicionada para submeter (use \"git add\" e/ou \"git "
+msgstr "alteração nenhuma adicionada a commit (usa \"git add\" e/ou \"git "
 "commit -a\")\n"
 
 #: wt-status.c:1811
 #, c-format
 msgid "no changes added to commit\n"
-msgstr "nenhuma alteração adicionada para submeter\n"
+msgstr "alteração nenhuma adicionada a commit\n"
 
 #: wt-status.c:1815
 #, c-format
@@ -9612,28 +9750,22 @@ msgstr ""
 #: wt-status.c:1819
 #, c-format
 msgid "nothing added to commit but untracked files present\n"
-msgstr ""
-"não foi adicionado nada para submeter, mas existem ficheiros não "
-"controlados\n"
+msgstr "nada adicionado para commit mas ficheiros untracked presentes\n"
 
 #: wt-status.c:1823
 #, c-format
 msgid "nothing to commit (create/copy files and use \"git add\" to track)\n"
-msgstr ""
-"não há nada para submeter (crie/copie ficheiros e use \"git add\" para "
-"controlá-los)\n"
+msgstr "nada a commit (cria/copia ficheiros e usa \"git add\" para track)\n"
 
 #: wt-status.c:1827 wt-status.c:1833
 #, c-format
 msgid "nothing to commit\n"
-msgstr "não há nada para submeter\n"
+msgstr "nada a commit\n"
 
 #: wt-status.c:1830
 #, c-format
 msgid "nothing to commit (use -u to show untracked files)\n"
-msgstr ""
-"não há nada para submeter (use -u para mostrar os ficheiros não "
-"controlados)\n"
+msgstr "nada a commit (use -u para mostrar ficheiros untracked)\n"
 
 #: wt-status.c:1835
 #, c-format
@@ -9647,11 +9779,11 @@ msgstr "Nenhum comando concluído."
 
 #: wt-status.c:1944
 msgid "HEAD (no branch)"
-msgstr "HEAD (nenhum ramo)"
+msgstr "HEAD (ramo nenhum)"
 
 #: wt-status.c:1975
 msgid "different"
-msgstr ""
+msgstr "diferente"
 
 #: wt-status.c:1977 wt-status.c:1985
 msgid "behind "
@@ -9676,7 +9808,7 @@ msgstr "além disso, o índice contém alterações não submetidas."
 msgid "cannot %s: Your index contains uncommitted changes."
 msgstr "não é possível efetuar %s: o índice contém alterações não submetidas."
 
-#: compat/precompose_utf8.c:58 builtin/clone.c:456
+#: compat/precompose_utf8.c:58 builtin/clone.c:457
 #, c-format
 msgid "failed to unlink '%s'"
 msgstr "falha ao invocar unlink de '%s'"
@@ -9697,13 +9829,13 @@ msgstr "falha ao atualizar os ficheiros"
 #: builtin/add.c:103
 #, c-format
 msgid "remove '%s'\n"
-msgstr "remover '%s'\n"
+msgstr "remove '%s'\n"
 
 #: builtin/add.c:178
 msgid "Unstaged changes after refreshing the index:"
 msgstr "Alterações não preparadas depois de atualizar o índice:"
 
-#: builtin/add.c:272 builtin/rev-parse.c:904
+#: builtin/add.c:272 builtin/rev-parse.c:908
 msgid "Could not read the index"
 msgstr "Não foi possível ler o índice"
 
@@ -9739,8 +9871,8 @@ msgid "The following paths are ignored by one of your .gitignore files:\n"
 msgstr "Os seguintes caminhos estão ignorados por algum ficheiro .gitignore:\n"
 
 #: builtin/add.c:328 builtin/clean.c:904 builtin/fetch.c:166 builtin/mv.c:124
-#: builtin/prune-packed.c:14 builtin/pull.c:204 builtin/push.c:538
-#: builtin/remote.c:1422 builtin/rm.c:242 builtin/send-pack.c:184
+#: builtin/prune-packed.c:14 builtin/pull.c:204 builtin/push.c:559
+#: builtin/remote.c:1427 builtin/rm.c:242 builtin/send-pack.c:190
 msgid "dry run"
 msgstr "simular ação"
 
@@ -9748,7 +9880,7 @@ msgstr "simular ação"
 msgid "interactive picking"
 msgstr "seleção interativa"
 
-#: builtin/add.c:332 builtin/checkout.c:1529 builtin/reset.c:308
+#: builtin/add.c:332 builtin/checkout.c:1547 builtin/reset.c:308
 msgid "select hunks interactively"
 msgstr "selecionar blocos interativamente"
 
@@ -9864,14 +9996,14 @@ msgstr "A opção --ignore-missing só pode ser usada em conjunto com --dry-run"
 msgid "--chmod param '%s' must be either -x or +x"
 msgstr "o parâmetro '%s' de --chmod tem de ser -x ou +x"
 
-#: builtin/add.c:507 builtin/checkout.c:1697 builtin/commit.c:351
-#: builtin/reset.c:328 builtin/rm.c:272 builtin/stash.c:1503
+#: builtin/add.c:507 builtin/checkout.c:1715 builtin/commit.c:351
+#: builtin/reset.c:328 builtin/rm.c:272 builtin/stash.c:1502
 #, fuzzy
 msgid "--pathspec-from-file is incompatible with pathspec arguments"
 msgstr "--patch é incompatível com --{hard,mixed,soft}"
 
-#: builtin/add.c:514 builtin/checkout.c:1709 builtin/commit.c:357
-#: builtin/reset.c:334 builtin/rm.c:278 builtin/stash.c:1509
+#: builtin/add.c:514 builtin/checkout.c:1727 builtin/commit.c:357
+#: builtin/reset.c:334 builtin/rm.c:278 builtin/stash.c:1508
 msgid "--pathspec-file-nul requires --pathspec-from-file"
 msgstr ""
 
@@ -9887,115 +10019,110 @@ msgid ""
 "\"git config advice.addEmptyPathspec false\""
 msgstr ""
 
-#: builtin/am.c:160
-#, fuzzy, c-format
-msgid "invalid committer: %s"
-msgstr "commit inválido %s"
-
-#: builtin/am.c:366
+#: builtin/am.c:352
 msgid "could not parse author script"
 msgstr "não foi possível analisar o autor do script"
 
-#: builtin/am.c:450
+#: builtin/am.c:436
 #, c-format
 msgid "'%s' was deleted by the applypatch-msg hook"
 msgstr "'%s' foi eliminado pelo hook applypatch-msg"
 
-#: builtin/am.c:492
+#: builtin/am.c:478
 #, c-format
 msgid "Malformed input line: '%s'."
 msgstr "Linha de entrada malformada: '%s'."
 
-#: builtin/am.c:530
+#: builtin/am.c:516
 #, c-format
 msgid "Failed to copy notes from '%s' to '%s'"
 msgstr "Falha ao copiar notas de '%s' para '%s'"
 
-#: builtin/am.c:556
+#: builtin/am.c:542
 msgid "fseek failed"
 msgstr "falha ao invocar fseek"
 
-#: builtin/am.c:744
+#: builtin/am.c:730
 #, c-format
 msgid "could not parse patch '%s'"
 msgstr "não foi possível analisar o patch '%s'"
 
-#: builtin/am.c:809
+#: builtin/am.c:795
 msgid "Only one StGIT patch series can be applied at once"
 msgstr "Só pode ser aplicada uma série de patches StGIT duma só vez"
 
-#: builtin/am.c:857
+#: builtin/am.c:843
 msgid "invalid timestamp"
 msgstr "carimbo de data/hora inválido"
 
-#: builtin/am.c:862 builtin/am.c:874
+#: builtin/am.c:848 builtin/am.c:860
 msgid "invalid Date line"
 msgstr "linha de Data inválida"
 
-#: builtin/am.c:869
+#: builtin/am.c:855
 msgid "invalid timezone offset"
 msgstr "mudança de fuso horário inválida"
 
-#: builtin/am.c:962
+#: builtin/am.c:948
 msgid "Patch format detection failed."
 msgstr "Falha ao detetar o formato do patch."
 
-#: builtin/am.c:967 builtin/clone.c:409
+#: builtin/am.c:953 builtin/clone.c:410
 #, c-format
 msgid "failed to create directory '%s'"
 msgstr "falha ao criar o diretório '%s'"
 
-#: builtin/am.c:972
+#: builtin/am.c:958
 msgid "Failed to split patches."
 msgstr "Falha ao dividir patches."
 
-#: builtin/am.c:1103
+#: builtin/am.c:1089
 #, c-format
 msgid "When you have resolved this problem, run \"%s --continue\"."
 msgstr "Após resolver este problema, execute \"%s --continue\"."
 
-#: builtin/am.c:1104
+#: builtin/am.c:1090
 #, c-format
 msgid "If you prefer to skip this patch, run \"%s --skip\" instead."
 msgstr "Se preferir ignorar este patch, execute \"%s --skip\"."
 
-#: builtin/am.c:1105
+#: builtin/am.c:1091
 #, c-format
 msgid "To restore the original branch and stop patching, run \"%s --abort\"."
 msgstr ""
 "Para restaurar o ramo original e interromper a aplicação dos patches, "
 "execute \"%s --abort\"."
 
-#: builtin/am.c:1188
+#: builtin/am.c:1174
 msgid "Patch sent with format=flowed; space at the end of lines might be lost."
 msgstr ""
 
-#: builtin/am.c:1216
+#: builtin/am.c:1202
 #, fuzzy
 msgid "Patch is empty."
 msgstr "O patch atual está vazio."
 
-#: builtin/am.c:1281
+#: builtin/am.c:1267
 #, fuzzy, c-format
 msgid "missing author line in commit %s"
 msgstr "Autor em falta: %s"
 
-#: builtin/am.c:1284
+#: builtin/am.c:1270
 #, fuzzy, c-format
 msgid "invalid ident line: %.*s"
 msgstr "linha de identidade inválida: %s"
 
-#: builtin/am.c:1503
+#: builtin/am.c:1489
 msgid "Repository lacks necessary blobs to fall back on 3-way merge."
 msgstr ""
 "O repositório não tem os blobs necessários para recorrer a integração com 3 "
 "pontos."
 
-#: builtin/am.c:1505
+#: builtin/am.c:1491
 msgid "Using index info to reconstruct a base tree..."
 msgstr "A usar informação do índice para reconstruir uma árvore de base..."
 
-#: builtin/am.c:1524
+#: builtin/am.c:1510
 msgid ""
 "Did you hand edit your patch?\n"
 "It does not apply to blobs recorded in its index."
@@ -10003,26 +10130,26 @@ msgstr ""
 "Editou o patch manualmente?\n"
 "Não é possível aplicá-lo aos blobs registados no índice."
 
-#: builtin/am.c:1530
+#: builtin/am.c:1516
 msgid "Falling back to patching base and 3-way merge..."
 msgstr ""
 "A recorrer a uma de base para aplicação de patches e integração com 3 "
 "pontos..."
 
-#: builtin/am.c:1556
+#: builtin/am.c:1542
 msgid "Failed to merge in the changes."
 msgstr "Falha ao integrar as alterações."
 
-#: builtin/am.c:1588
+#: builtin/am.c:1574
 msgid "applying to an empty history"
 msgstr "a aplicar a um histórico vazio"
 
-#: builtin/am.c:1639 builtin/am.c:1643
+#: builtin/am.c:1626 builtin/am.c:1630
 #, c-format
 msgid "cannot resume: %s does not exist."
 msgstr "não é possível continuar: %s não existe."
 
-#: builtin/am.c:1661
+#: builtin/am.c:1648
 msgid "Commit Body is:"
 msgstr "Corpo do commit:"
 
@@ -10030,39 +10157,39 @@ msgstr "Corpo do commit:"
 #. in your translation. The program will only accept English
 #. input at this point.
 #.
-#: builtin/am.c:1671
+#: builtin/am.c:1658
 #, c-format
 msgid "Apply? [y]es/[n]o/[e]dit/[v]iew patch/[a]ccept all: "
 msgstr "Aplicar? [y]sim/[n]ão/[e]ditar/[v]er patch/[a]ceitar todos: "
 
-#: builtin/am.c:1717 builtin/commit.c:395
+#: builtin/am.c:1704 builtin/commit.c:395
 msgid "unable to write index file"
 msgstr "não é possível escrever o ficheiro de índice"
 
-#: builtin/am.c:1721
+#: builtin/am.c:1708
 #, c-format
 msgid "Dirty index: cannot apply patches (dirty: %s)"
 msgstr "Índice modificado: não é possível aplicar patches (modificado: %s)"
 
-#: builtin/am.c:1761 builtin/am.c:1829
+#: builtin/am.c:1748 builtin/am.c:1816
 #, c-format
 msgid "Applying: %.*s"
 msgstr "A aplicar: %.*s"
 
-#: builtin/am.c:1778
+#: builtin/am.c:1765
 msgid "No changes -- Patch already applied."
 msgstr "Nenhuma alteração -- Já foi aplicado o patch."
 
-#: builtin/am.c:1784
+#: builtin/am.c:1771
 #, c-format
 msgid "Patch failed at %s %.*s"
 msgstr "Falha ao aplicar o patch em %s %.*s"
 
-#: builtin/am.c:1788
+#: builtin/am.c:1775
 msgid "Use 'git am --show-current-patch=diff' to see the failed patch"
 msgstr ""
 
-#: builtin/am.c:1832
+#: builtin/am.c:1819
 msgid ""
 "No changes - did you forget to use 'git add'?\n"
 "If there is nothing left to stage, chances are that something else\n"
@@ -10072,7 +10199,7 @@ msgstr ""
 "Se não há nada por preparar, provavelmente essas mesmas alterações\n"
 "já foram introduzidas; pode querer ignorar este patch."
 
-#: builtin/am.c:1839
+#: builtin/am.c:1826
 msgid ""
 "You still have unmerged paths in your index.\n"
 "You should 'git add' each file with resolved conflicts to mark them as "
@@ -10080,17 +10207,17 @@ msgid ""
 "You might run `git rm` on a file to accept \"deleted by them\" for it."
 msgstr ""
 
-#: builtin/am.c:1946 builtin/am.c:1950 builtin/am.c:1962 builtin/reset.c:347
+#: builtin/am.c:1933 builtin/am.c:1937 builtin/am.c:1949 builtin/reset.c:347
 #: builtin/reset.c:355
 #, c-format
 msgid "Could not parse object '%s'."
 msgstr "Não foi possível analisar o objeto '%s'."
 
-#: builtin/am.c:1998
+#: builtin/am.c:1985
 msgid "failed to clean index"
 msgstr "falha ao limpar o índice"
 
-#: builtin/am.c:2042
+#: builtin/am.c:2029
 msgid ""
 "You seem to have moved HEAD since the last 'am' failure.\n"
 "Not rewinding to ORIG_HEAD"
@@ -10098,157 +10225,158 @@ msgstr ""
 "Parece que a HEAD foi movida desde a última vez que o 'am' falhou.\n"
 "Não recuando a ORIG_HEAD"
 
-#: builtin/am.c:2149
+#: builtin/am.c:2136
 #, c-format
 msgid "Invalid value for --patch-format: %s"
 msgstr "Valor inválido de --patch-format: %s"
 
-#: builtin/am.c:2191
+#: builtin/am.c:2178
 #, fuzzy, c-format
 msgid "Invalid value for --show-current-patch: %s"
 msgstr "Valor inválido de --patch-format: %s"
 
-#: builtin/am.c:2195
+#: builtin/am.c:2182
 #, fuzzy, c-format
 msgid "--show-current-patch=%s is incompatible with --show-current-patch=%s"
 msgstr "--first-parent é incompatível com --bisect"
 
-#: builtin/am.c:2226
+#: builtin/am.c:2213
 msgid "git am [<options>] [(<mbox> | <Maildir>)...]"
 msgstr "git am [<opções>] [(<mbox> | <Maildir>)...]"
 
-#: builtin/am.c:2227
+#: builtin/am.c:2214
 msgid "git am [<options>] (--continue | --skip | --abort)"
 msgstr "git am [<opções>] (--continue | --skip | --abort)"
 
-#: builtin/am.c:2233
+#: builtin/am.c:2220
 msgid "run interactively"
 msgstr "executar interativamente"
 
-#: builtin/am.c:2235
+#: builtin/am.c:2222
 msgid "historical option -- no-op"
 msgstr "opção histórica -- sem-ação"
 
-#: builtin/am.c:2237
+#: builtin/am.c:2224
 msgid "allow fall back on 3way merging if needed"
 msgstr "permitir recorrer a integração com 3 pontos se necessário"
 
-#: builtin/am.c:2238 builtin/init-db.c:558 builtin/prune-packed.c:16
-#: builtin/repack.c:309 builtin/stash.c:816
+#: builtin/am.c:2225 builtin/init-db.c:558 builtin/prune-packed.c:16
+#: builtin/repack.c:335 builtin/stash.c:815
 msgid "be quiet"
 msgstr "silencioso"
 
-#: builtin/am.c:2240
-msgid "add a Signed-off-by line to the commit message"
+#: builtin/am.c:2227
+#, fuzzy
+msgid "add a Signed-off-by trailer to the commit message"
 msgstr "adicionar uma linha com Signed-of-by no fim da mensagem de commit"
 
-#: builtin/am.c:2243
+#: builtin/am.c:2230
 msgid "recode into utf8 (default)"
 msgstr "recodificar em utf8 (predefinição)"
 
-#: builtin/am.c:2245
+#: builtin/am.c:2232
 msgid "pass -k flag to git-mailinfo"
 msgstr "passar a opção -k ao git-mailinfo"
 
-#: builtin/am.c:2247
+#: builtin/am.c:2234
 msgid "pass -b flag to git-mailinfo"
 msgstr "passar a opção -b ao git-mailinfo"
 
-#: builtin/am.c:2249
+#: builtin/am.c:2236
 msgid "pass -m flag to git-mailinfo"
 msgstr "passar a opção -m ao git-mailinfo"
 
-#: builtin/am.c:2251
+#: builtin/am.c:2238
 msgid "pass --keep-cr flag to git-mailsplit for mbox format"
 msgstr "passar a opção --keep-cr ao gitmailsplit para formato de mbox"
 
-#: builtin/am.c:2254
+#: builtin/am.c:2241
 msgid "do not pass --keep-cr flag to git-mailsplit independent of am.keepcr"
 msgstr ""
 "não passar a opção --keep-cr ao git-mailsplit independentemente de am.keepcr"
 
-#: builtin/am.c:2257
+#: builtin/am.c:2244
 msgid "strip everything before a scissors line"
 msgstr "retirar todo o conteúdo antes da linha de tesoura"
 
-#: builtin/am.c:2259 builtin/am.c:2262 builtin/am.c:2265 builtin/am.c:2268
-#: builtin/am.c:2271 builtin/am.c:2274 builtin/am.c:2277 builtin/am.c:2280
-#: builtin/am.c:2286
+#: builtin/am.c:2246 builtin/am.c:2249 builtin/am.c:2252 builtin/am.c:2255
+#: builtin/am.c:2258 builtin/am.c:2261 builtin/am.c:2264 builtin/am.c:2267
+#: builtin/am.c:2273
 msgid "pass it through git-apply"
 msgstr "transmitir ao git-apply"
 
-#: builtin/am.c:2276 builtin/commit.c:1395 builtin/fmt-merge-msg.c:17
-#: builtin/fmt-merge-msg.c:20 builtin/grep.c:892 builtin/merge.c:251
+#: builtin/am.c:2263 builtin/commit.c:1395 builtin/fmt-merge-msg.c:17
+#: builtin/fmt-merge-msg.c:20 builtin/grep.c:903 builtin/merge.c:260
 #: builtin/pull.c:141 builtin/pull.c:200 builtin/pull.c:217
-#: builtin/rebase.c:1335 builtin/repack.c:320 builtin/repack.c:324
-#: builtin/repack.c:326 builtin/show-branch.c:650 builtin/show-ref.c:172
+#: builtin/rebase.c:1341 builtin/repack.c:346 builtin/repack.c:350
+#: builtin/repack.c:352 builtin/show-branch.c:650 builtin/show-ref.c:172
 #: builtin/tag.c:404 parse-options.h:154 parse-options.h:175
 #: parse-options.h:316
 msgid "n"
 msgstr "n"
 
-#: builtin/am.c:2282 builtin/branch.c:659 builtin/bugreport.c:135
+#: builtin/am.c:2269 builtin/branch.c:659 builtin/bugreport.c:136
 #: builtin/for-each-ref.c:38 builtin/replace.c:556 builtin/tag.c:438
 #: builtin/verify-tag.c:38
 msgid "format"
 msgstr "formato"
 
-#: builtin/am.c:2283
+#: builtin/am.c:2270
 msgid "format the patch(es) are in"
 msgstr "formato de apresentação de patches"
 
-#: builtin/am.c:2289
+#: builtin/am.c:2276
 msgid "override error message when patch failure occurs"
 msgstr "substituir a mensagem de erro quando a aplicação do patch falha"
 
-#: builtin/am.c:2291
+#: builtin/am.c:2278
 msgid "continue applying patches after resolving a conflict"
 msgstr "continuar a aplicar os patches depois de resolver os conflitos"
 
-#: builtin/am.c:2294
+#: builtin/am.c:2281
 msgid "synonyms for --continue"
 msgstr "sinónimo de --continue"
 
-#: builtin/am.c:2297
+#: builtin/am.c:2284
 msgid "skip the current patch"
 msgstr "ignorar o patch atual"
 
-#: builtin/am.c:2300
+#: builtin/am.c:2287
 msgid "restore the original branch and abort the patching operation."
 msgstr "restaurar o ramo original e abortar a operação de patch."
 
-#: builtin/am.c:2303
+#: builtin/am.c:2290
 msgid "abort the patching operation but keep HEAD where it is."
 msgstr ""
 
-#: builtin/am.c:2307
+#: builtin/am.c:2294
 #, fuzzy
 msgid "show the patch being applied"
 msgstr "mostrar linhas não correspondidas"
 
-#: builtin/am.c:2312
+#: builtin/am.c:2299
 msgid "lie about committer date"
 msgstr "mentir sobre a data de commit"
 
-#: builtin/am.c:2314
+#: builtin/am.c:2301
 msgid "use current timestamp for author date"
 msgstr "usar a data e hora atual como data de autor"
 
-#: builtin/am.c:2316 builtin/commit-tree.c:120 builtin/commit.c:1515
-#: builtin/merge.c:288 builtin/pull.c:175 builtin/rebase.c:530
-#: builtin/rebase.c:1388 builtin/revert.c:117 builtin/tag.c:419
+#: builtin/am.c:2303 builtin/commit-tree.c:120 builtin/commit.c:1515
+#: builtin/merge.c:297 builtin/pull.c:175 builtin/rebase.c:536
+#: builtin/rebase.c:1394 builtin/revert.c:117 builtin/tag.c:419
 msgid "key-id"
 msgstr "id-chave"
 
-#: builtin/am.c:2317 builtin/rebase.c:531 builtin/rebase.c:1389
+#: builtin/am.c:2304 builtin/rebase.c:537 builtin/rebase.c:1395
 msgid "GPG-sign commits"
 msgstr "assinar os commits com GPG"
 
-#: builtin/am.c:2320
+#: builtin/am.c:2307
 msgid "(internal use for git-rebase)"
 msgstr "(uso interno de git-rebase)"
 
-#: builtin/am.c:2338
+#: builtin/am.c:2325
 msgid ""
 "The -b/--binary option has been a no-op for long time, and\n"
 "it will be removed. Please do not use it anymore."
@@ -10256,17 +10384,17 @@ msgstr ""
 "A opção -b/--binary há muito que é ignorada e será\n"
 "futuramente removida. Por favor não a use."
 
-#: builtin/am.c:2345
+#: builtin/am.c:2332
 msgid "failed to read the index"
 msgstr "falha ao ler o índice"
 
-#: builtin/am.c:2360
+#: builtin/am.c:2347
 #, c-format
 msgid "previous rebase directory %s still exists but mbox given."
 msgstr ""
 "o diretório de rebesa anterior %s ainda existe, mas foi fornecida uma mbox."
 
-#: builtin/am.c:2384
+#: builtin/am.c:2371
 #, c-format
 msgid ""
 "Stray %s directory found.\n"
@@ -10275,11 +10403,11 @@ msgstr ""
 "Diretório abandonado %s encontrado.\n"
 "Use \"git am --abort\" para o remover."
 
-#: builtin/am.c:2390
+#: builtin/am.c:2377
 msgid "Resolve operation not in progress, we are not resuming."
 msgstr "A operação de resolução não está em curso, não retomando."
 
-#: builtin/am.c:2400
+#: builtin/am.c:2387
 msgid "interactive mode requires patches on the command line"
 msgstr ""
 
@@ -10320,139 +10448,129 @@ msgstr "git archive: esvaziamento de cache (flush) esperado"
 
 #: builtin/bisect--helper.c:23
 #, fuzzy
-msgid "git bisect--helper --next-all"
-msgstr "git bisect--helper --next-all [--no-checkout]"
-
-#: builtin/bisect--helper.c:24
-msgid "git bisect--helper --write-terms <bad_term> <good_term>"
-msgstr ""
-
-#: builtin/bisect--helper.c:25
-#, fuzzy
-msgid "git bisect--helper --bisect-clean-state"
-msgstr "git bisect--helper --next-all [--no-checkout]"
-
-#: builtin/bisect--helper.c:26
-#, fuzzy
 msgid "git bisect--helper --bisect-reset [<commit>]"
 msgstr "git bisect--helper --next-all [--no-checkout]"
 
-#: builtin/bisect--helper.c:27
+#: builtin/bisect--helper.c:24
 msgid ""
 "git bisect--helper --bisect-write [--no-log] <state> <revision> <good_term> "
 "<bad_term>"
 msgstr ""
 
-#: builtin/bisect--helper.c:28
+#: builtin/bisect--helper.c:25
 msgid ""
 "git bisect--helper --bisect-check-and-set-terms <command> <good_term> "
 "<bad_term>"
 msgstr ""
 
-#: builtin/bisect--helper.c:29
+#: builtin/bisect--helper.c:26
 msgid "git bisect--helper --bisect-next-check <good_term> <bad_term> [<term>]"
 msgstr ""
 
-#: builtin/bisect--helper.c:30
+#: builtin/bisect--helper.c:27
 #, fuzzy
 msgid ""
 "git bisect--helper --bisect-terms [--term-good | --term-old | --term-bad | --"
 "term-new]"
 msgstr ""
-"argumento inválido $arg de 'git bisect terms'.\n"
-"Opções suportadas: --term-good|--term-old e --term-bad|--term-new."
+"git bisect--helper --bisect-terms [--term-good | --term-old | --term-bad | --"
+"term-new]"
 
-#: builtin/bisect--helper.c:31
+#: builtin/bisect--helper.c:28
 msgid ""
 "git bisect--helper --bisect-start [--term-{new,bad}=<term> --term-{old,good}"
 "=<term>] [--no-checkout] [--first-parent] [<bad> [<good>...]] [--] "
 "[<paths>...]"
 msgstr ""
 
-#: builtin/bisect--helper.c:33
+#: builtin/bisect--helper.c:30
 #, fuzzy
 msgid "git bisect--helper --bisect-next"
 msgstr "git bisect--helper --next-all [--no-checkout]"
 
-#: builtin/bisect--helper.c:34
+#: builtin/bisect--helper.c:31
 #, fuzzy
 msgid "git bisect--helper --bisect-auto-next"
 msgstr "git bisect--helper --next-all [--no-checkout]"
 
-#: builtin/bisect--helper.c:35
+#: builtin/bisect--helper.c:32
+#, fuzzy
+msgid "git bisect--helper --bisect-state (bad|new) [<rev>]"
+msgstr "git bisect--helper --next-all [--no-checkout]"
+
+#: builtin/bisect--helper.c:33
 #, fuzzy
-msgid "git bisect--helper --bisect-autostart"
+msgid "git bisect--helper --bisect-state (good|old) [<rev>...]"
 msgstr "git bisect--helper --next-all [--no-checkout]"
 
-#: builtin/bisect--helper.c:97
+#: builtin/bisect--helper.c:108
 #, fuzzy, c-format
 msgid "cannot open file '%s' in mode '%s'"
 msgstr "não é possível abrir o ficheiro '%s'"
 
-#: builtin/bisect--helper.c:104
+#: builtin/bisect--helper.c:115
 #, fuzzy, c-format
 msgid "could not write to file '%s'"
 msgstr "não foi possível escrever em '%s'"
 
-#: builtin/bisect--helper.c:143
+#: builtin/bisect--helper.c:154
 #, fuzzy, c-format
 msgid "'%s' is not a valid term"
 msgstr "'%s' não é uma referência válida."
 
-#: builtin/bisect--helper.c:147
+#: builtin/bisect--helper.c:158
 #, fuzzy, c-format
 msgid "can't use the builtin command '%s' as a term"
 msgstr "não é possível usar o comando '$term' como um termo"
 
-#: builtin/bisect--helper.c:157
+#: builtin/bisect--helper.c:168
 #, fuzzy, c-format
 msgid "can't change the meaning of the term '%s'"
 msgstr "não é possível alterar o significado do termo '$term'"
 
-#: builtin/bisect--helper.c:167
+#: builtin/bisect--helper.c:178
 msgid "please use two different terms"
-msgstr "use dois termos diferentes"
+msgstr "por favor, usa dois termos diferentes"
 
-#: builtin/bisect--helper.c:207
+#: builtin/bisect--helper.c:194
 #, fuzzy, c-format
 msgid "We are not bisecting.\n"
-msgstr "Não se está a bissetar."
+msgstr "Estamos bissetando nada.\n"
 
-#: builtin/bisect--helper.c:215
+#: builtin/bisect--helper.c:202
 #, fuzzy, c-format
 msgid "'%s' is not a valid commit"
 msgstr "'%s' não é um commit"
 
-#: builtin/bisect--helper.c:224
+#: builtin/bisect--helper.c:211
 #, fuzzy, c-format
 msgid ""
 "could not check out original HEAD '%s'. Try 'git bisect reset <commit>'."
 msgstr ""
-"Não foi possível extrair a HEAD original de '$branch'.\n"
-"Tente 'git bisect reset <commit>'."
+"pude check out HEAD original '%s' nenhuma. Tenta 'git bisect reset <commit>'."
 
-#: builtin/bisect--helper.c:268
+#: builtin/bisect--helper.c:255
 #, fuzzy, c-format
 msgid "Bad bisect_write argument: %s"
 msgstr "Argumento de bisect_write incorreto: $state"
 
-#: builtin/bisect--helper.c:273
+#: builtin/bisect--helper.c:260
 #, fuzzy, c-format
 msgid "couldn't get the oid of the rev '%s'"
 msgstr "não foi possível criar o diretório de árvore de trabalho '%s'"
 
-#: builtin/bisect--helper.c:285
+#: builtin/bisect--helper.c:272
 #, fuzzy, c-format
 msgid "couldn't open the file '%s'"
 msgstr "Não foi possível abrir o ficheiro '%s'"
 
-#: builtin/bisect--helper.c:311
+#: builtin/bisect--helper.c:298
 #, fuzzy, c-format
 msgid "Invalid command: you're currently in a %s/%s bisect"
 msgstr ""
 "Comando inválido: está-se a bissetar usando os termos $TERM_BAD/$TERM_GOOD."
 
-#: builtin/bisect--helper.c:338
+#: builtin/bisect--helper.c:325
 #, fuzzy, c-format
 msgid ""
 "You need to give me at least one %s and %s revision.\n"
@@ -10461,7 +10579,7 @@ msgstr ""
 "Deve indicar pelo menos uma revisão $bad_syn e uma revisão $good_syn.\n"
 "(Pode usar \"git bisect $bad_syn\" e \"git bisect $good_syn\" para esse fim.)"
 
-#: builtin/bisect--helper.c:342
+#: builtin/bisect--helper.c:329
 #, fuzzy, c-format
 msgid ""
 "You need to start by \"git bisect start\".\n"
@@ -10472,7 +10590,7 @@ msgstr ""
 "Indique pelo menos uma revisão $good_syn e uma revisão $bad_syn.\n"
 "(Pode usar \"git bisect $bad_syn\" e \"git bisect $good_syn\" para esse fim.)"
 
-#: builtin/bisect--helper.c:362
+#: builtin/bisect--helper.c:349
 #, fuzzy, c-format
 msgid "bisecting only with a %s commit"
 msgstr "Aviso: a bissetar só com um commit $TERM_BAD."
@@ -10481,199 +10599,183 @@ msgstr "Aviso: a bissetar só com um commit $TERM_BAD."
 #. translation. The program will only accept English input
 #. at this point.
 #.
-#: builtin/bisect--helper.c:370
+#: builtin/bisect--helper.c:357
 msgid "Are you sure [Y/n]? "
 msgstr "Tem a certeza [Y/n]? "
 
-#: builtin/bisect--helper.c:431
+#: builtin/bisect--helper.c:418
 msgid "no terms defined"
-msgstr "nenhum termo definido"
+msgstr "termo nenhum definido"
 
-#: builtin/bisect--helper.c:434
+#: builtin/bisect--helper.c:421
 #, c-format
 msgid ""
 "Your current terms are %s for the old state\n"
 "and %s for the new state.\n"
 msgstr ""
 
-#: builtin/bisect--helper.c:444
+#: builtin/bisect--helper.c:431
 #, fuzzy, c-format
 msgid ""
 "invalid argument %s for 'git bisect terms'.\n"
 "Supported options are: --term-good|--term-old and --term-bad|--term-new."
 msgstr ""
-"argumento inválido $arg de 'git bisect terms'.\n"
+"argumento inválido %s para 'git bisect terms'.\n"
 "Opções suportadas: --term-good|--term-old e --term-bad|--term-new."
 
-#: builtin/bisect--helper.c:511
+#: builtin/bisect--helper.c:498
 #, fuzzy
 msgid "revision walk setup failed\n"
-msgstr "falha ao configurar percurso de revisões"
+msgstr "falha ao configurar percurso de revisões\n"
 
-#: builtin/bisect--helper.c:533
+#: builtin/bisect--helper.c:520
 #, fuzzy, c-format
 msgid "could not open '%s' for appending"
 msgstr "não foi possível abrir '%s' para leitura"
 
-#: builtin/bisect--helper.c:651 builtin/bisect--helper.c:664
+#: builtin/bisect--helper.c:639 builtin/bisect--helper.c:652
 #, fuzzy
 msgid "'' is not a valid term"
 msgstr "'$term' não é um termo válido"
 
-#: builtin/bisect--helper.c:674
+#: builtin/bisect--helper.c:662
 #, fuzzy, c-format
 msgid "unrecognized option: '%s'"
 msgstr "posição não reconhecida:%s"
 
-#: builtin/bisect--helper.c:678
+#: builtin/bisect--helper.c:666
 #, fuzzy, c-format
 msgid "'%s' does not appear to be a valid revision"
 msgstr "'$arg' não parecer ser uma revisão válida"
 
-#: builtin/bisect--helper.c:709
+#: builtin/bisect--helper.c:697
 #, fuzzy
 msgid "bad HEAD - I need a HEAD"
 msgstr "HEAD incorreta - é necessário uma HEAD"
 
-#: builtin/bisect--helper.c:724
+#: builtin/bisect--helper.c:712
 #, fuzzy, c-format
 msgid "checking out '%s' failed. Try 'git bisect start <valid-branch>'."
 msgstr ""
 "Falha ao extrair '$start_head'. Tente 'git bisect reset <ramo-válido>'."
 
-#: builtin/bisect--helper.c:745
+#: builtin/bisect--helper.c:733
 msgid "won't bisect on cg-seek'ed tree"
 msgstr "não é possível bissetar numa árvore \"cg-seek'ed\""
 
-#: builtin/bisect--helper.c:748
+#: builtin/bisect--helper.c:736
 #, fuzzy
 msgid "bad HEAD - strange symbolic ref"
 msgstr "HEAD incorreta - referência simbólica desconhecida"
 
-#: builtin/bisect--helper.c:775
+#: builtin/bisect--helper.c:756
 #, fuzzy, c-format
 msgid "invalid ref: '%s'"
 msgstr "ficheiro inválido: '%s'"
 
-#: builtin/bisect--helper.c:827
+#: builtin/bisect--helper.c:814
 #, fuzzy
 msgid "You need to start by \"git bisect start\"\n"
-msgstr "Deve começar por executar \"git bisect start\""
+msgstr "Deve começar por executar \"git bisect start\"\n"
 
 #. TRANSLATORS: Make sure to include [Y] and [n] in your
 #. translation. The program will only accept English input
 #. at this point.
 #.
-#: builtin/bisect--helper.c:838
+#: builtin/bisect--helper.c:825
 msgid "Do you want me to do it for you [Y/n]? "
 msgstr "Quer que o Git o faça por si [Y/n]? "
 
-#: builtin/bisect--helper.c:866
-msgid "perform 'git bisect next'"
-msgstr "executar 'git bisect next'"
-
-#: builtin/bisect--helper.c:868
-msgid "write the terms to .git/BISECT_TERMS"
-msgstr ""
+#: builtin/bisect--helper.c:843
+#, fuzzy
+msgid "Please call `--bisect-state` with at least one argument"
+msgstr "Invoque 'bisect_state' com pelo menos um argumento."
 
-#: builtin/bisect--helper.c:870
-msgid "cleanup the bisection state"
-msgstr ""
+#: builtin/bisect--helper.c:856
+#, fuzzy, c-format
+msgid "'git bisect %s' can take only one argument."
+msgstr "'git bisect $TERM_BAD' só leva um argumento."
 
-#: builtin/bisect--helper.c:872
-msgid "check for expected revs"
-msgstr ""
+#: builtin/bisect--helper.c:868 builtin/bisect--helper.c:879
+#, fuzzy, c-format
+msgid "Bad rev input: %s"
+msgstr "Revisão incorreta na entrada: $arg"
 
-#: builtin/bisect--helper.c:874
+#: builtin/bisect--helper.c:924
 #, fuzzy
 msgid "reset the bisection state"
 msgstr "remover uma secção: nome"
 
-#: builtin/bisect--helper.c:876
+#: builtin/bisect--helper.c:926
 msgid "write out the bisection state in BISECT_LOG"
 msgstr ""
 
-#: builtin/bisect--helper.c:878
+#: builtin/bisect--helper.c:928
 msgid "check and set terms in a bisection state"
 msgstr ""
 
-#: builtin/bisect--helper.c:880
+#: builtin/bisect--helper.c:930
 msgid "check whether bad or good terms exist"
 msgstr ""
 
-#: builtin/bisect--helper.c:882
+#: builtin/bisect--helper.c:932
 #, fuzzy
 msgid "print out the bisect terms"
 msgstr "imprimir apenas as tags do objeto"
 
-#: builtin/bisect--helper.c:884
+#: builtin/bisect--helper.c:934
 msgid "start the bisect session"
 msgstr ""
 
-#: builtin/bisect--helper.c:886
+#: builtin/bisect--helper.c:936
 #, fuzzy
 msgid "find the next bisection commit"
 msgstr "não é possível emendar commit não-existente"
 
-#: builtin/bisect--helper.c:888
+#: builtin/bisect--helper.c:938
 msgid "verify the next bisection state then checkout the next bisection commit"
 msgstr ""
 
-#: builtin/bisect--helper.c:890
-msgid "start the bisection if it has not yet been started"
+#: builtin/bisect--helper.c:940
+msgid "mark the state of ref (or refs)"
 msgstr ""
 
-#: builtin/bisect--helper.c:892
+#: builtin/bisect--helper.c:942
 msgid "no log for BISECT_WRITE"
 msgstr ""
 
-#: builtin/bisect--helper.c:910
-#, fuzzy
-msgid "--write-terms requires two arguments"
-msgstr "--abort não leva argumentos"
-
-#: builtin/bisect--helper.c:914
-#, fuzzy
-msgid "--bisect-clean-state requires no arguments"
-msgstr "--continue não leva argumentos"
-
-#: builtin/bisect--helper.c:921
+#: builtin/bisect--helper.c:957
 msgid "--bisect-reset requires either no argument or a commit"
 msgstr ""
 
-#: builtin/bisect--helper.c:925
+#: builtin/bisect--helper.c:961
 #, fuzzy
 msgid "--bisect-write requires either 4 or 5 arguments"
 msgstr ":strip= requer um inteiro positivo como argumento"
 
-#: builtin/bisect--helper.c:931
+#: builtin/bisect--helper.c:967
 msgid "--check-and-set-terms requires 3 arguments"
 msgstr ""
 
-#: builtin/bisect--helper.c:937
+#: builtin/bisect--helper.c:973
 msgid "--bisect-next-check requires 2 or 3 arguments"
 msgstr ""
 
-#: builtin/bisect--helper.c:943
+#: builtin/bisect--helper.c:979
 #, fuzzy
 msgid "--bisect-terms requires 0 or 1 argument"
 msgstr ":strip= requer um inteiro positivo como argumento"
 
-#: builtin/bisect--helper.c:952
+#: builtin/bisect--helper.c:988
 #, fuzzy
 msgid "--bisect-next requires 0 arguments"
 msgstr "--continue não leva argumentos"
 
-#: builtin/bisect--helper.c:958
+#: builtin/bisect--helper.c:994
 #, fuzzy
 msgid "--bisect-auto-next requires 0 arguments"
 msgstr "--continue não leva argumentos"
 
-#: builtin/bisect--helper.c:964
-#, fuzzy
-msgid "--bisect-autostart does not accept arguments"
-msgstr "%%(subject) não leva argumentos"
-
 #: builtin/blame.c:32
 msgid "git blame [<options>] [<rev-opts>] [<rev>] [--] <file>"
 msgstr "git blame [<opções>] [<rev-opções>] [<rev>] [--] <ficheiro>"
@@ -10701,134 +10803,136 @@ msgstr "ignorar cor inválida '%.*s' em log.graphColors"
 msgid "invalid value for blame.coloring"
 msgstr "valor inválido de %s"
 
-#: builtin/blame.c:845
+#: builtin/blame.c:847
 #, c-format
 msgid "cannot find revision %s to ignore"
 msgstr ""
 
-#: builtin/blame.c:867
+#: builtin/blame.c:869
 msgid "Show blame entries as we find them, incrementally"
 msgstr ""
 "Mostrar entradas de culpa à medida que forem encontradas, incrementalmente"
 
-#: builtin/blame.c:868
+#: builtin/blame.c:870
 #, fuzzy
 msgid "Do not show object names of boundary commits (Default: off)"
 msgstr "Mostar SHA-1 dos commits limite em branco (Predefinição: desativado)"
 
-#: builtin/blame.c:869
+#: builtin/blame.c:871
 msgid "Do not treat root commits as boundaries (Default: off)"
 msgstr "Não tratar os commits raiz como limites (Predefinição: desativado)"
 
-#: builtin/blame.c:870
+#: builtin/blame.c:872
 msgid "Show work cost statistics"
 msgstr "Mostrar estatísticas de custo de atividade"
 
-#: builtin/blame.c:871
+#: builtin/blame.c:873
 msgid "Force progress reporting"
 msgstr "Forçar informação de progresso"
 
-#: builtin/blame.c:872
+#: builtin/blame.c:874
 msgid "Show output score for blame entries"
 msgstr "Mostrar a pontuação das entradas de culpa"
 
-#: builtin/blame.c:873
+#: builtin/blame.c:875
 msgid "Show original filename (Default: auto)"
 msgstr "Mostrar o nome do ficheiro original (Predefinição: auto)"
 
-#: builtin/blame.c:874
+#: builtin/blame.c:876
 msgid "Show original linenumber (Default: off)"
 msgstr "Mostrar números de linha originais (Predefinição: desativado)"
 
-#: builtin/blame.c:875
+#: builtin/blame.c:877
 msgid "Show in a format designed for machine consumption"
 msgstr "Mostrar em formato próprio para ser consumo por uma máquina"
 
-#: builtin/blame.c:876
+#: builtin/blame.c:878
 msgid "Show porcelain format with per-line commit information"
 msgstr "Mostrar em formato de porcelana com informações de commit por linha"
 
-#: builtin/blame.c:877
+#: builtin/blame.c:879
 msgid "Use the same output mode as git-annotate (Default: off)"
 msgstr "Usar o mesmo modo de saída que git-annotate (Predefinição: desativado)"
 
-#: builtin/blame.c:878
+#: builtin/blame.c:880
 msgid "Show raw timestamp (Default: off)"
 msgstr "Mostrar carimbo de data/hora em bruto (Predefinição: desativado)"
 
-#: builtin/blame.c:879
+#: builtin/blame.c:881
 msgid "Show long commit SHA1 (Default: off)"
 msgstr "Mostrar SHA1 longo de commit (Predefinição: desativado)"
 
-#: builtin/blame.c:880
+#: builtin/blame.c:882
 msgid "Suppress author name and timestamp (Default: off)"
 msgstr ""
 "Suprimir nome de autor e carimbo de data/hora (Predefinição: desativado)"
 
-#: builtin/blame.c:881
+#: builtin/blame.c:883
 msgid "Show author email instead of name (Default: off)"
 msgstr "Mostrar o email do autor em vez do nome (Predefinição: desativado)"
 
-#: builtin/blame.c:882
+#: builtin/blame.c:884
 msgid "Ignore whitespace differences"
 msgstr "Ignorar as diferenças de espaço em branco"
 
-#: builtin/blame.c:883 builtin/log.c:1808
+#: builtin/blame.c:885 builtin/log.c:1813
 #, fuzzy
 msgid "rev"
 msgstr "reverter"
 
-#: builtin/blame.c:883
+#: builtin/blame.c:885
 #, fuzzy
 msgid "Ignore <rev> when blaming"
 msgstr "ignorar o índice ao verificar"
 
-#: builtin/blame.c:884
+#: builtin/blame.c:886
 #, fuzzy
 msgid "Ignore revisions from <file>"
 msgstr "ler mensagem de um ficheiro"
 
-#: builtin/blame.c:885
+#: builtin/blame.c:887
 msgid "color redundant metadata from previous line differently"
 msgstr ""
 
-#: builtin/blame.c:886
+#: builtin/blame.c:888
 msgid "color lines by age"
 msgstr ""
 
-#: builtin/blame.c:887
+#: builtin/blame.c:889
 msgid "Spend extra cycles to find better match"
 msgstr "Despender ciclos extra para encontrar uma melhor correspondência"
 
-#: builtin/blame.c:888
+#: builtin/blame.c:890
 msgid "Use revisions from <file> instead of calling git-rev-list"
 msgstr "Usar revisões do <ficheiro> em vez de invocar git-rev-list"
 
-#: builtin/blame.c:889
+#: builtin/blame.c:891
 msgid "Use <file>'s contents as the final image"
 msgstr "Usar o conteúdo do <ficheiro> como imagem final"
 
-#: builtin/blame.c:890 builtin/blame.c:891
+#: builtin/blame.c:892 builtin/blame.c:893
 msgid "score"
 msgstr "pontuação"
 
-#: builtin/blame.c:890
+#: builtin/blame.c:892
 msgid "Find line copies within and across files"
 msgstr "Localizar linhas copiadas dentro e entre ficheiros"
 
-#: builtin/blame.c:891
+#: builtin/blame.c:893
 msgid "Find line movements within and across files"
 msgstr "Localizar linhas movidas dentro e entre ficheiros"
 
-#: builtin/blame.c:892
-msgid "n,m"
-msgstr "n,m"
+#: builtin/blame.c:894
+#, fuzzy
+msgid "range"
+msgstr "Não é um intervalo."
 
-#: builtin/blame.c:892
-msgid "Process only line range n,m, counting from 1"
+#: builtin/blame.c:895
+#, fuzzy
+msgid "Process only line range <start>,<end> or function :<funcname>"
 msgstr "Processar apenas o intervalo de linhas n,m, a cantar de 1"
 
-#: builtin/blame.c:944
+#: builtin/blame.c:947
 msgid "--progress can't be used with --incremental or porcelain formats"
 msgstr ""
 "--progress não pode ser usado com --incremental ou formatos de porcelana"
@@ -10841,18 +10945,18 @@ msgstr ""
 #. your language may need more or fewer display
 #. columns.
 #.
-#: builtin/blame.c:995
+#: builtin/blame.c:998
 msgid "4 years, 11 months ago"
 msgstr "há 4 anos e 11 meses atrás"
 
-#: builtin/blame.c:1110
+#: builtin/blame.c:1114
 #, c-format
 msgid "file %s has only %lu line"
 msgid_plural "file %s has only %lu lines"
 msgstr[0] "o ficheiro %s só tem %lu linha"
 msgstr[1] "o ficheiro %s só tem %lu linhas"
 
-#: builtin/blame.c:1156
+#: builtin/blame.c:1159
 msgid "Blaming lines"
 msgstr "Linhas de culpa"
 
@@ -10973,7 +11077,7 @@ msgstr "não foi possível analisar o formato"
 #: builtin/branch.c:460
 #, fuzzy
 msgid "could not resolve HEAD"
-msgstr "não foi possível resolver o commit HEAD\n"
+msgstr "não foi possível resolver o commit HEAD"
 
 #: builtin/branch.c:466
 #, fuzzy, c-format
@@ -11073,7 +11177,7 @@ msgstr "configurar modo de seguimento (consulte git-pull(1))"
 msgid "do not use"
 msgstr "esquema a usar"
 
-#: builtin/branch.c:626 builtin/rebase.c:526
+#: builtin/branch.c:626 builtin/rebase.c:532
 msgid "upstream"
 msgstr "a montante"
 
@@ -11188,7 +11292,7 @@ msgstr "ordenar e filtrar são insensíveis a maiúsculas"
 msgid "format to use for the output"
 msgstr "formato a usar na saída"
 
-#: builtin/branch.c:682 builtin/clone.c:789
+#: builtin/branch.c:682 builtin/clone.c:790
 msgid "HEAD not found below refs/heads!"
 msgstr "HEAD não encontrada em refs/heads!"
 
@@ -11216,7 +11320,7 @@ msgstr "Ainda não há commits no ramo '%s'."
 #: builtin/branch.c:766
 #, c-format
 msgid "No branch named '%s'."
-msgstr "Não há nenhum ramo denominado '%s'."
+msgstr "Ramo nenhum denominado '%s'."
 
 #: builtin/branch.c:781
 #, fuzzy
@@ -11272,8 +11376,8 @@ msgstr "O ramo '%s' não tem informação sobre o ramo a montante"
 msgid ""
 "The -a, and -r, options to 'git branch' do not take a branch name.\n"
 "Did you mean to use: -a|-r --list <pattern>?"
-msgstr ""
-"as opções -a e -r de 'git branch' não fazem sentido com um nome de ramo"
+msgstr "As opções -a, e -r, em 'git branch' levam nome de branch nenhum.\n"
+"Quiseste utilizar: -a|-r --list <pattern>? "
 
 #: builtin/branch.c:843
 #, fuzzy
@@ -11281,13 +11385,13 @@ msgid ""
 "the '--set-upstream' option is no longer supported. Please use '--track' or "
 "'--set-upstream-to' instead."
 msgstr ""
-"A opção --set-upstream é obsoleta e será removida. Considere o uso de --"
-"track ou --set-upstream-to\n"
+"A opção --set-upstream está obsoleta. Por favor, usa '--track' ou '--set-"
+"upstream-to' invés."
 
 #: builtin/bugreport.c:15
 #, fuzzy
 msgid "git version:\n"
-msgstr "versão"
+msgstr "versão git:\n"
 
 #: builtin/bugreport.c:21
 #, c-format
@@ -11329,39 +11433,39 @@ msgid ""
 "You can delete any lines you don't wish to share.\n"
 msgstr ""
 
-#: builtin/bugreport.c:134
+#: builtin/bugreport.c:135
 msgid "specify a destination for the bugreport file"
 msgstr ""
 
-#: builtin/bugreport.c:136
+#: builtin/bugreport.c:137
 msgid "specify a strftime format suffix for the filename"
 msgstr ""
 
-#: builtin/bugreport.c:158
+#: builtin/bugreport.c:159
 #, fuzzy, c-format
 msgid "could not create leading directories for '%s'"
 msgstr "não foi possível criar os diretórios superiores de '%s'"
 
-#: builtin/bugreport.c:165
+#: builtin/bugreport.c:166
 msgid "System Info"
 msgstr ""
 
-#: builtin/bugreport.c:168
+#: builtin/bugreport.c:169
 #, fuzzy
 msgid "Enabled Hooks"
 msgstr "não foi possível abrir %s"
 
-#: builtin/bugreport.c:175
+#: builtin/bugreport.c:176
 #, fuzzy, c-format
 msgid "couldn't create a new file at '%s'"
 msgstr "não foi possível criar o ficheiro '%s'"
 
-#: builtin/bugreport.c:178
+#: builtin/bugreport.c:179
 #, fuzzy, c-format
 msgid "unable to write to %s"
 msgstr "não foi possível escrever %s"
 
-#: builtin/bugreport.c:188
+#: builtin/bugreport.c:189
 #, c-format
 msgid "Created new report at '%s'.\n"
 msgstr ""
@@ -11416,17 +11520,17 @@ msgstr "não mostrar tags descascadas"
 #: builtin/bundle.c:122
 #, c-format
 msgid "%s is okay\n"
-msgstr "%s está correto\n"
+msgstr "%s está ok\n"
 
 #: builtin/bundle.c:163
 msgid "Need a repository to unbundle."
 msgstr "É preciso um repositório para desempacotar."
 
-#: builtin/bundle.c:171 builtin/remote.c:1687
+#: builtin/bundle.c:171 builtin/remote.c:1700
 msgid "be verbose; must be placed before a subcommand"
 msgstr "ser verboso; deve ser colocado antes de um subcomando"
 
-#: builtin/bundle.c:193 builtin/remote.c:1718
+#: builtin/bundle.c:193 builtin/remote.c:1731
 #, c-format
 msgid "Unknown subcommand: %s"
 msgstr "Subcomando desconhecido: %s"
@@ -11543,7 +11647,7 @@ msgstr "ler os nomes dos ficheiros da entrada padrão"
 msgid "terminate input and output records by a NUL character"
 msgstr "terminar registos da entrada e da saída com um carácter NUL"
 
-#: builtin/check-ignore.c:21 builtin/checkout.c:1482 builtin/gc.c:538
+#: builtin/check-ignore.c:21 builtin/checkout.c:1500 builtin/gc.c:541
 #: builtin/worktree.c:561
 msgid "suppress progress reporting"
 msgstr "suprimir informação de progresso"
@@ -11566,7 +11670,7 @@ msgstr "-z só faz sentido com --stdin"
 
 #: builtin/check-ignore.c:168
 msgid "no path specified"
-msgstr "nenhum caminho especificado"
+msgstr "path nenhum especificado"
 
 #: builtin/check-ignore.c:172
 msgid "--quiet is only valid with a single pathname"
@@ -11595,58 +11699,58 @@ msgstr "não é possível analisar o contacto: %s"
 
 #: builtin/check-mailmap.c:48
 msgid "no contacts specified"
-msgstr "nenhum contacto especificado"
+msgstr "contato nenhum especificado"
 
-#: builtin/checkout-index.c:131
+#: builtin/checkout-index.c:139
 msgid "git checkout-index [<options>] [--] [<file>...]"
 msgstr "git checkout-index [<opções>] [--] [<ficheiro>...]"
 
-#: builtin/checkout-index.c:148
+#: builtin/checkout-index.c:156
 msgid "stage should be between 1 and 3 or all"
 msgstr "stage deve ser um número entre 1 e 3 ou o parâmetro all"
 
-#: builtin/checkout-index.c:164
+#: builtin/checkout-index.c:173
 msgid "check out all files in the index"
 msgstr "extrair todos os ficheiros presentes no índice"
 
-#: builtin/checkout-index.c:165
+#: builtin/checkout-index.c:174
 msgid "force overwrite of existing files"
 msgstr "forçar substituição dos ficheiros existentes"
 
-#: builtin/checkout-index.c:167
+#: builtin/checkout-index.c:176
 msgid "no warning for existing files and files not in index"
 msgstr ""
 "não mostrar aviso para ficheiros existentes e ficheiros não presentes no "
 "índice"
 
-#: builtin/checkout-index.c:169
+#: builtin/checkout-index.c:178
 msgid "don't checkout new files"
 msgstr "não extrair novos ficheiros"
 
-#: builtin/checkout-index.c:171
+#: builtin/checkout-index.c:180
 msgid "update stat information in the index file"
 msgstr "atualizar informação de stat no ficheiro de índice"
 
-#: builtin/checkout-index.c:175
+#: builtin/checkout-index.c:184
 msgid "read list of paths from the standard input"
 msgstr "ler lista de caminhos da entrada padrão"
 
-#: builtin/checkout-index.c:177
+#: builtin/checkout-index.c:186
 msgid "write the content to temporary files"
 msgstr "escrever o conteúdo em ficheiros temporários"
 
-#: builtin/checkout-index.c:178 builtin/column.c:31
+#: builtin/checkout-index.c:187 builtin/column.c:31
 #: builtin/submodule--helper.c:1824 builtin/submodule--helper.c:1827
 #: builtin/submodule--helper.c:1835 builtin/submodule--helper.c:2333
-#: builtin/worktree.c:754
+#: builtin/worktree.c:757
 msgid "string"
 msgstr "cadeia"
 
-#: builtin/checkout-index.c:179
+#: builtin/checkout-index.c:188
 msgid "when creating files, prepend <string>"
 msgstr "preceder <cadeia> ao criar ficheiros"
 
-#: builtin/checkout-index.c:181
+#: builtin/checkout-index.c:190
 msgid "copy out the files from named stage"
 msgstr "copiar os ficheiros do estágio indicado"
 
@@ -11709,8 +11813,8 @@ msgstr[1] ""
 #, fuzzy, c-format
 msgid "Updated %d path from %s"
 msgid_plural "Updated %d paths from %s"
-msgstr[0] "%d caminho atualizado\n"
-msgstr[1] "%d caminhos atualizados\n"
+msgstr[0] "%d caminho atualizado"
+msgstr[1] "%d caminhos atualizados"
 
 #: builtin/checkout.c:408
 #, fuzzy, c-format
@@ -11751,66 +11855,66 @@ msgstr "'%s' não pode ser usado com '%s'"
 msgid "'%s' or '%s' cannot be used with %s"
 msgstr "%s: %s não pode ser usado com %s"
 
-#: builtin/checkout.c:528 builtin/checkout.c:535
+#: builtin/checkout.c:541 builtin/checkout.c:548
 #, c-format
 msgid "path '%s' is unmerged"
 msgstr "o caminho '%s' não foi integrado"
 
-#: builtin/checkout.c:703
+#: builtin/checkout.c:716
 msgid "you need to resolve your current index first"
 msgstr "primeiro deve resolver o índice atual"
 
-#: builtin/checkout.c:757
+#: builtin/checkout.c:770
 #, c-format
 msgid ""
 "cannot continue with staged changes in the following files:\n"
 "%s"
 msgstr ""
 
-#: builtin/checkout.c:853
+#: builtin/checkout.c:866
 #, c-format
 msgid "Can not do reflog for '%s': %s\n"
 msgstr "Não é possível efetuar reflog de '%s': %s\n"
 
-#: builtin/checkout.c:895
+#: builtin/checkout.c:908
 msgid "HEAD is now at"
 msgstr "HEAD está agora em"
 
-#: builtin/checkout.c:899 builtin/clone.c:720
+#: builtin/checkout.c:912 builtin/clone.c:721 t/helper/test-fast-rebase.c:202
 msgid "unable to update HEAD"
 msgstr "não foi possível atualizar HEAD"
 
-#: builtin/checkout.c:903
+#: builtin/checkout.c:916
 #, c-format
 msgid "Reset branch '%s'\n"
 msgstr "Repor ramo '%s'\n"
 
-#: builtin/checkout.c:906
+#: builtin/checkout.c:919
 #, c-format
 msgid "Already on '%s'\n"
 msgstr "Já em '%s'\n"
 
-#: builtin/checkout.c:910
+#: builtin/checkout.c:923
 #, c-format
 msgid "Switched to and reset branch '%s'\n"
 msgstr "Mudou para e repôs o ramo '%s'\n"
 
-#: builtin/checkout.c:912 builtin/checkout.c:1338
+#: builtin/checkout.c:925 builtin/checkout.c:1356
 #, c-format
 msgid "Switched to a new branch '%s'\n"
 msgstr "Mudou para o novo ramo '%s'\n"
 
-#: builtin/checkout.c:914
+#: builtin/checkout.c:927
 #, c-format
 msgid "Switched to branch '%s'\n"
 msgstr "Mudou para o ramo '%s'\n"
 
-#: builtin/checkout.c:965
+#: builtin/checkout.c:978
 #, c-format
 msgid " ... and %d more.\n"
 msgstr " ... e mais %d.\n"
 
-#: builtin/checkout.c:971
+#: builtin/checkout.c:984
 #, c-format
 msgid ""
 "Warning: you are leaving %d commit behind, not connected to\n"
@@ -11823,15 +11927,17 @@ msgid_plural ""
 "\n"
 "%s\n"
 msgstr[0] ""
-"Aviso: deixa %d commit para trás, não ligado a nenhum ramo:\n"
+"Aviso: estás deixando %d commit para trás, desconetado a qualquer dos "
+"teus ramos:\n"
 "\n"
 "%s\n"
 msgstr[1] ""
-"Aviso: deixa %d commits para trás, não ligados a nenhum ramo:\n"
+"Aviso: estás deixando %d commits para trás, desconetado a qualquer "
+"dos teus ramos:\n"
 "\n"
 "%s\n"
 
-#: builtin/checkout.c:990
+#: builtin/checkout.c:1003
 #, c-format
 msgid ""
 "If you want to keep it by creating a new branch, this may be a good time\n"
@@ -11858,26 +11964,26 @@ msgstr[1] ""
 " git branch <nome-do-novo-ramo> %s\n"
 "\n"
 
-#: builtin/checkout.c:1025
+#: builtin/checkout.c:1038
 msgid "internal error in revision walk"
 msgstr "erro interno durante o curso de revisões"
 
-#: builtin/checkout.c:1029
+#: builtin/checkout.c:1042
 msgid "Previous HEAD position was"
 msgstr "A posição anterior de HEAD era"
 
-#: builtin/checkout.c:1069 builtin/checkout.c:1333
+#: builtin/checkout.c:1082 builtin/checkout.c:1351
 msgid "You are on a branch yet to be born"
 msgstr "Está num ramo ainda não criado"
 
-#: builtin/checkout.c:1146
+#: builtin/checkout.c:1164
 #, c-format
 msgid ""
 "'%s' could be both a local file and a tracking branch.\n"
 "Please use -- (and optionally --no-guess) to disambiguate"
 msgstr ""
 
-#: builtin/checkout.c:1153
+#: builtin/checkout.c:1171
 msgid ""
 "If you meant to check out a remote tracking branch on, e.g. 'origin',\n"
 "you can do so by fully qualifying the name with the --track option:\n"
@@ -11889,225 +11995,225 @@ msgid ""
 "checkout.defaultRemote=origin in your config."
 msgstr ""
 
-#: builtin/checkout.c:1163
+#: builtin/checkout.c:1181
 #, fuzzy, c-format
 msgid "'%s' matched multiple (%d) remote tracking branches"
 msgstr "atuar sobre ramos de monitorização remotos"
 
-#: builtin/checkout.c:1229
+#: builtin/checkout.c:1247
 #, fuzzy
 msgid "only one reference expected"
 msgstr "esperava-se apenas uma referência, %d fornecidas."
 
-#: builtin/checkout.c:1246
+#: builtin/checkout.c:1264
 #, c-format
 msgid "only one reference expected, %d given."
 msgstr "esperava-se apenas uma referência, %d fornecidas."
 
-#: builtin/checkout.c:1292 builtin/worktree.c:342 builtin/worktree.c:510
+#: builtin/checkout.c:1310 builtin/worktree.c:342 builtin/worktree.c:510
 #, c-format
 msgid "invalid reference: %s"
 msgstr "referência inválida: %s"
 
-#: builtin/checkout.c:1305 builtin/checkout.c:1671
+#: builtin/checkout.c:1323 builtin/checkout.c:1689
 #, c-format
 msgid "reference is not a tree: %s"
 msgstr "a referência não é uma árvore: %s"
 
-#: builtin/checkout.c:1352
+#: builtin/checkout.c:1370
 #, fuzzy, c-format
 msgid "a branch is expected, got tag '%s'"
 msgstr "Não é possível eliminar o ramo '%s' extraído em '%s'"
 
-#: builtin/checkout.c:1354
+#: builtin/checkout.c:1372
 #, fuzzy, c-format
 msgid "a branch is expected, got remote branch '%s'"
 msgstr "Ramo %s configurado para seguir o ramo remoto %s de %s."
 
-#: builtin/checkout.c:1355 builtin/checkout.c:1363
+#: builtin/checkout.c:1373 builtin/checkout.c:1381
 #, fuzzy, c-format
 msgid "a branch is expected, got '%s'"
 msgstr "O ramo %s está a ser bissetado em %s"
 
-#: builtin/checkout.c:1358
+#: builtin/checkout.c:1376
 #, fuzzy, c-format
 msgid "a branch is expected, got commit '%s'"
-msgstr "O seu ramo está atualizado com '%s'.\n"
+msgstr "é suposto um branch, recebi um commit '%s'"
 
-#: builtin/checkout.c:1374
+#: builtin/checkout.c:1392
 msgid ""
 "cannot switch branch while merging\n"
 "Consider \"git merge --quit\" or \"git worktree add\"."
 msgstr ""
 
-#: builtin/checkout.c:1378
+#: builtin/checkout.c:1396
 msgid ""
 "cannot switch branch in the middle of an am session\n"
 "Consider \"git am --quit\" or \"git worktree add\"."
 msgstr ""
 
-#: builtin/checkout.c:1382
+#: builtin/checkout.c:1400
 msgid ""
 "cannot switch branch while rebasing\n"
 "Consider \"git rebase --quit\" or \"git worktree add\"."
 msgstr ""
 
-#: builtin/checkout.c:1386
+#: builtin/checkout.c:1404
 msgid ""
 "cannot switch branch while cherry-picking\n"
 "Consider \"git cherry-pick --quit\" or \"git worktree add\"."
 msgstr ""
 
-#: builtin/checkout.c:1390
+#: builtin/checkout.c:1408
 msgid ""
 "cannot switch branch while reverting\n"
 "Consider \"git revert --quit\" or \"git worktree add\"."
 msgstr ""
 
-#: builtin/checkout.c:1394
+#: builtin/checkout.c:1412
 #, fuzzy
 msgid "you are switching branch while bisecting"
 msgstr "Está a bissetar neste momento."
 
-#: builtin/checkout.c:1401
+#: builtin/checkout.c:1419
 msgid "paths cannot be used with switching branches"
 msgstr "não podem ser usados caminhos ao mudar de ramo"
 
-#: builtin/checkout.c:1404 builtin/checkout.c:1408 builtin/checkout.c:1412
+#: builtin/checkout.c:1422 builtin/checkout.c:1426 builtin/checkout.c:1430
 #, c-format
 msgid "'%s' cannot be used with switching branches"
 msgstr "'%s' não pode ser usado ao mudar de ramo"
 
-#: builtin/checkout.c:1416 builtin/checkout.c:1419 builtin/checkout.c:1422
-#: builtin/checkout.c:1427 builtin/checkout.c:1432
+#: builtin/checkout.c:1434 builtin/checkout.c:1437 builtin/checkout.c:1440
+#: builtin/checkout.c:1445 builtin/checkout.c:1450
 #, c-format
 msgid "'%s' cannot be used with '%s'"
 msgstr "'%s' não pode ser usado com '%s'"
 
-#: builtin/checkout.c:1429
+#: builtin/checkout.c:1447
 #, fuzzy, c-format
 msgid "'%s' cannot take <start-point>"
 msgstr "'%s' não pode ser usado com caminhos em atualização"
 
-#: builtin/checkout.c:1437
+#: builtin/checkout.c:1455
 #, c-format
 msgid "Cannot switch branch to a non-commit '%s'"
 msgstr "Não é possível mudar de ramo para '%s', visto que não é um commit"
 
-#: builtin/checkout.c:1444
+#: builtin/checkout.c:1462
 #, fuzzy
 msgid "missing branch or commit argument"
 msgstr "Falta um nome dum ramo; tente -b"
 
-#: builtin/checkout.c:1486 builtin/clone.c:91 builtin/commit-graph.c:84
-#: builtin/commit-graph.c:222 builtin/fetch.c:172 builtin/merge.c:287
-#: builtin/multi-pack-index.c:27 builtin/pull.c:119 builtin/push.c:551
-#: builtin/send-pack.c:192
+#: builtin/checkout.c:1504 builtin/clone.c:92 builtin/commit-graph.c:84
+#: builtin/commit-graph.c:222 builtin/fetch.c:172 builtin/merge.c:296
+#: builtin/multi-pack-index.c:27 builtin/pull.c:119 builtin/push.c:575
+#: builtin/send-pack.c:198
 msgid "force progress reporting"
 msgstr "forçar informação de progresso"
 
-#: builtin/checkout.c:1487
+#: builtin/checkout.c:1505
 msgid "perform a 3-way merge with the new branch"
 msgstr "realizar uma integração com 3 pontos com o novo ramo"
 
-#: builtin/checkout.c:1488 builtin/log.c:1795 parse-options.h:322
+#: builtin/checkout.c:1506 builtin/log.c:1800 parse-options.h:322
 msgid "style"
 msgstr "estilo"
 
-#: builtin/checkout.c:1489
+#: builtin/checkout.c:1507
 msgid "conflict style (merge or diff3)"
 msgstr "estilo de conflito (merge ou diff3)"
 
-#: builtin/checkout.c:1501 builtin/worktree.c:558
+#: builtin/checkout.c:1519 builtin/worktree.c:558
 msgid "detach HEAD at named commit"
 msgstr "destacar HEAD no commit indicado"
 
-#: builtin/checkout.c:1502
+#: builtin/checkout.c:1520
 msgid "set upstream info for new branch"
 msgstr "definir a informação do ramo a montante do novo ramo"
 
-#: builtin/checkout.c:1504
+#: builtin/checkout.c:1522
 msgid "force checkout (throw away local modifications)"
 msgstr "forçar extração (descartar modificações locais)"
 
-#: builtin/checkout.c:1506
+#: builtin/checkout.c:1524
 msgid "new-branch"
 msgstr "novo-ramo"
 
-#: builtin/checkout.c:1506
+#: builtin/checkout.c:1524
 msgid "new unparented branch"
 msgstr "novo ramo sem pai"
 
-#: builtin/checkout.c:1508 builtin/merge.c:291
+#: builtin/checkout.c:1526 builtin/merge.c:300
 msgid "update ignored files (default)"
 msgstr "atualizar ficheiros ignorados (predefinição)"
 
-#: builtin/checkout.c:1511
+#: builtin/checkout.c:1529
 msgid "do not check if another worktree is holding the given ref"
 msgstr ""
 "não verificar se outra árvore de trabalho contém a referência fornecida"
 
-#: builtin/checkout.c:1524
+#: builtin/checkout.c:1542
 msgid "checkout our version for unmerged files"
 msgstr "extrair a nossa versão dos ficheiros não integrados"
 
-#: builtin/checkout.c:1527
+#: builtin/checkout.c:1545
 msgid "checkout their version for unmerged files"
 msgstr "extrair a versão deles dos ficheiros não integrados"
 
-#: builtin/checkout.c:1531
+#: builtin/checkout.c:1549
 msgid "do not limit pathspecs to sparse entries only"
 msgstr "não restringir especificadores de caminho a entradas esparsas"
 
-#: builtin/checkout.c:1586
+#: builtin/checkout.c:1604
 #, fuzzy, c-format
 msgid "-%c, -%c and --orphan are mutually exclusive"
 msgstr "-b, -B e --orphan são mutuamente exclusivos"
 
-#: builtin/checkout.c:1590
+#: builtin/checkout.c:1608
 #, fuzzy
 msgid "-p and --overlay are mutually exclusive"
 msgstr "-b, -B e --orphan são mutuamente exclusivos"
 
-#: builtin/checkout.c:1627
+#: builtin/checkout.c:1645
 msgid "--track needs a branch name"
 msgstr "--track requer um nome dum ramo"
 
-#: builtin/checkout.c:1632
+#: builtin/checkout.c:1650
 #, fuzzy, c-format
 msgid "missing branch name; try -%c"
 msgstr "Falta um nome dum ramo; tente -b"
 
-#: builtin/checkout.c:1664
+#: builtin/checkout.c:1682
 #, fuzzy, c-format
 msgid "could not resolve %s"
 msgstr "não foi possível remover '%s'"
 
-#: builtin/checkout.c:1680
+#: builtin/checkout.c:1698
 msgid "invalid path specification"
 msgstr "especificação de caminho inválida"
 
-#: builtin/checkout.c:1687
+#: builtin/checkout.c:1705
 #, c-format
 msgid "'%s' is not a commit and a branch '%s' cannot be created from it"
 msgstr ""
 
-#: builtin/checkout.c:1691
+#: builtin/checkout.c:1709
 #, c-format
 msgid "git checkout: --detach does not take a path argument '%s'"
 msgstr "git checkout: --detach não aceita um caminho como argumento '%s'"
 
-#: builtin/checkout.c:1700
+#: builtin/checkout.c:1718
 #, fuzzy
 msgid "--pathspec-from-file is incompatible with --detach"
 msgstr "--first-parent é incompatível com --bisect"
 
-#: builtin/checkout.c:1703 builtin/reset.c:325 builtin/stash.c:1500
+#: builtin/checkout.c:1721 builtin/reset.c:325 builtin/stash.c:1499
 #, fuzzy
 msgid "--pathspec-from-file is incompatible with --patch"
 msgstr "--first-parent é incompatível com --bisect"
 
-#: builtin/checkout.c:1716
+#: builtin/checkout.c:1734
 msgid ""
 "git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
 "checking out of the index."
@@ -12115,80 +12221,80 @@ msgstr ""
 "git checkout: --ours/--theirs, --force e --merge são incompatíveis\n"
 "durante a extração do índice."
 
-#: builtin/checkout.c:1721
+#: builtin/checkout.c:1739
 #, fuzzy
 msgid "you must specify path(s) to restore"
 msgstr "Deve especificar um diretório."
 
-#: builtin/checkout.c:1747 builtin/checkout.c:1749 builtin/checkout.c:1798
-#: builtin/checkout.c:1800 builtin/clone.c:121 builtin/remote.c:170
+#: builtin/checkout.c:1765 builtin/checkout.c:1767 builtin/checkout.c:1816
+#: builtin/checkout.c:1818 builtin/clone.c:122 builtin/remote.c:170
 #: builtin/remote.c:172 builtin/submodule--helper.c:2719 builtin/worktree.c:554
 #: builtin/worktree.c:556
 msgid "branch"
 msgstr "ramo"
 
-#: builtin/checkout.c:1748
+#: builtin/checkout.c:1766
 msgid "create and checkout a new branch"
 msgstr "criar e extrair um novo ramo"
 
-#: builtin/checkout.c:1750
+#: builtin/checkout.c:1768
 msgid "create/reset and checkout a branch"
 msgstr "criar/repor e extrair um ramo"
 
-#: builtin/checkout.c:1751
+#: builtin/checkout.c:1769
 msgid "create reflog for new branch"
 msgstr "criar reflog do novo ramo"
 
-#: builtin/checkout.c:1753
+#: builtin/checkout.c:1771
 #, fuzzy
 msgid "second guess 'git checkout <no-such-branch>' (default)"
 msgstr "tentar adivinhar 'git checkout <ramo-inexistente>'"
 
-#: builtin/checkout.c:1754
+#: builtin/checkout.c:1772
 #, fuzzy
 msgid "use overlay mode (default)"
 msgstr "eliminar referências soltas (predefinição)"
 
-#: builtin/checkout.c:1799
+#: builtin/checkout.c:1817
 #, fuzzy
 msgid "create and switch to a new branch"
 msgstr "criar e extrair um novo ramo"
 
-#: builtin/checkout.c:1801
+#: builtin/checkout.c:1819
 #, fuzzy
 msgid "create/reset and switch to a branch"
 msgstr "criar/repor e extrair um ramo"
 
-#: builtin/checkout.c:1803
+#: builtin/checkout.c:1821
 #, fuzzy
 msgid "second guess 'git switch <no-such-branch>'"
 msgstr "tentar adivinhar 'git checkout <ramo-inexistente>'"
 
-#: builtin/checkout.c:1805
+#: builtin/checkout.c:1823
 #, fuzzy
 msgid "throw away local modifications"
 msgstr "forçar extração (descartar modificações locais)"
 
-#: builtin/checkout.c:1839
+#: builtin/checkout.c:1857
 msgid "which tree-ish to checkout from"
 msgstr ""
 
-#: builtin/checkout.c:1841
+#: builtin/checkout.c:1859
 #, fuzzy
 msgid "restore the index"
 msgstr "falha ao ler o índice"
 
-#: builtin/checkout.c:1843
+#: builtin/checkout.c:1861
 #, fuzzy
 msgid "restore the working tree (default)"
 msgstr "Mostrar o estado da árvores de trabalho"
 
-#: builtin/checkout.c:1845
+#: builtin/checkout.c:1863
 #, fuzzy
 msgid "ignore unmerged entries"
-msgstr "ignorado não integrado: %s\n"
+msgstr "ignora unmerged entries"
 
-#: builtin/checkout.c:1846
+#: builtin/checkout.c:1864
 msgid "use overlay mode"
 msgstr ""
 
@@ -12226,9 +12332,9 @@ msgstr "falha ao remover %s"
 #: builtin/clean.c:38
 #, fuzzy, c-format
 msgid "could not lstat %s\n"
-msgstr "não foi possível obter stat de %s"
+msgstr "não foi possível obter stat de %s\n"
 
-#: builtin/clean.c:302 git-add--interactive.perl:595
+#: builtin/clean.c:302 git-add--interactive.perl:593
 #, c-format
 msgid ""
 "Prompt help:\n"
@@ -12239,9 +12345,9 @@ msgstr ""
 "Ajuda de linha de comandos:\n"
 "1          - selecionar um item numerado\n"
 "foo        - selecionar item baseado no prefixo único\n"
-"           - (vazio) não seleciona nada\n"
+"           - (vazio) seleciona nada\n"
 
-#: builtin/clean.c:306 git-add--interactive.perl:604
+#: builtin/clean.c:306 git-add--interactive.perl:602
 #, c-format
 msgid ""
 "Prompt help:\n"
@@ -12262,8 +12368,8 @@ msgstr ""
 "*          - escolher todos os itens\n"
 "           - (vazio) concluir seleção\n"
 
-#: builtin/clean.c:521 git-add--interactive.perl:570
-#: git-add--interactive.perl:575
+#: builtin/clean.c:521 git-add--interactive.perl:568
+#: git-add--interactive.perl:573
 #, c-format, perl-format
 msgid "Huh (%s)?\n"
 msgstr "O quê (%s)?\n"
@@ -12333,7 +12439,7 @@ msgid "remove whole directories"
 msgstr "remover diretórios inteiros"
 
 #: builtin/clean.c:909 builtin/describe.c:565 builtin/describe.c:567
-#: builtin/grep.c:910 builtin/log.c:181 builtin/log.c:183
+#: builtin/grep.c:921 builtin/log.c:183 builtin/log.c:185
 #: builtin/ls-files.c:558 builtin/name-rev.c:526 builtin/name-rev.c:528
 #: builtin/show-ref.c:179
 msgid "pattern"
@@ -12357,7 +12463,7 @@ msgid ""
 "clean"
 msgstr ""
 "clean.requireForce definido como true e nenhum -i, -n, ou -f fornecido; "
-"limpeza recusada"
+"recusando limpar"
 
 #: builtin/clean.c:932
 msgid ""
@@ -12365,7 +12471,7 @@ msgid ""
 "refusing to clean"
 msgstr ""
 "clean.requireForce predefinido como true e nenhum -i, -n, ou -f fornecido; "
-"limpeza recusada"
+"recusando limpar"
 
 #: builtin/clean.c:944
 msgid "-x and -X cannot be used together"
@@ -12375,163 +12481,163 @@ msgstr "-x e -X não pode ser usados juntos"
 msgid "git clone [<options>] [--] <repo> [<dir>]"
 msgstr "git clone [<opções>] [--] <repo> [<dir>]"
 
-#: builtin/clone.c:93
+#: builtin/clone.c:94
 msgid "don't create a checkout"
 msgstr "não criar uma extração"
 
-#: builtin/clone.c:94 builtin/clone.c:96 builtin/init-db.c:553
+#: builtin/clone.c:95 builtin/clone.c:97 builtin/init-db.c:553
 msgid "create a bare repository"
 msgstr "criar um repositório nu"
 
-#: builtin/clone.c:98
+#: builtin/clone.c:99
 msgid "create a mirror repository (implies bare)"
 msgstr "criar um repositório espelhado (implica repositório nu)"
 
-#: builtin/clone.c:100
+#: builtin/clone.c:101
 msgid "to clone from a local repository"
 msgstr "para clonar de um repositório local"
 
-#: builtin/clone.c:102
+#: builtin/clone.c:103
 msgid "don't use local hardlinks, always copy"
 msgstr "não usar ligações fixas, copiar sempre"
 
-#: builtin/clone.c:104
+#: builtin/clone.c:105
 msgid "setup as shared repository"
 msgstr "configurar como repositório partilhado"
 
-#: builtin/clone.c:106
+#: builtin/clone.c:107
 msgid "pathspec"
 msgstr "pathspec"
 
-#: builtin/clone.c:106
+#: builtin/clone.c:107
 msgid "initialize submodules in the clone"
 msgstr "inicializar submódulos no clone"
 
-#: builtin/clone.c:110
+#: builtin/clone.c:111
 msgid "number of submodules cloned in parallel"
 msgstr "número de submódulos clonados em paralelo"
 
-#: builtin/clone.c:111 builtin/init-db.c:550
+#: builtin/clone.c:112 builtin/init-db.c:550
 msgid "template-directory"
 msgstr "diretório-modelo"
 
-#: builtin/clone.c:112 builtin/init-db.c:551
+#: builtin/clone.c:113 builtin/init-db.c:551
 msgid "directory from which templates will be used"
 msgstr "diretório que contém os modelos usados"
 
-#: builtin/clone.c:114 builtin/clone.c:116 builtin/submodule--helper.c:1831
+#: builtin/clone.c:115 builtin/clone.c:117 builtin/submodule--helper.c:1831
 #: builtin/submodule--helper.c:2336
 msgid "reference repository"
 msgstr "repositório de referência"
 
-#: builtin/clone.c:118 builtin/submodule--helper.c:1833
+#: builtin/clone.c:119 builtin/submodule--helper.c:1833
 #: builtin/submodule--helper.c:2338
 msgid "use --reference only while cloning"
 msgstr "usar --reference apenas para clonar"
 
-#: builtin/clone.c:119 builtin/column.c:27 builtin/init-db.c:561
-#: builtin/merge-file.c:46 builtin/pack-objects.c:3546 builtin/repack.c:332
+#: builtin/clone.c:120 builtin/column.c:27 builtin/init-db.c:561
+#: builtin/merge-file.c:46 builtin/pack-objects.c:3546 builtin/repack.c:358
 msgid "name"
 msgstr "nome"
 
-#: builtin/clone.c:120
+#: builtin/clone.c:121
 msgid "use <name> instead of 'origin' to track upstream"
 msgstr "usar <nome> em vez de 'origin' para seguir o ramo a montante"
 
-#: builtin/clone.c:122
+#: builtin/clone.c:123
 msgid "checkout <branch> instead of the remote's HEAD"
 msgstr "extrair <ramo> em vez da HEAD do remoto"
 
-#: builtin/clone.c:124
+#: builtin/clone.c:125
 msgid "path to git-upload-pack on the remote"
 msgstr "caminho para git-upload-pack no remoto"
 
-#: builtin/clone.c:125 builtin/fetch.c:173 builtin/grep.c:849
+#: builtin/clone.c:126 builtin/fetch.c:173 builtin/grep.c:860
 #: builtin/pull.c:208
 msgid "depth"
 msgstr "profundidade"
 
-#: builtin/clone.c:126
+#: builtin/clone.c:127
 msgid "create a shallow clone of that depth"
 msgstr "criar um clone raso com essa profundidade"
 
-#: builtin/clone.c:127 builtin/fetch.c:175 builtin/pack-objects.c:3535
+#: builtin/clone.c:128 builtin/fetch.c:175 builtin/pack-objects.c:3535
 #: builtin/pull.c:211
 msgid "time"
 msgstr "hora"
 
-#: builtin/clone.c:128
+#: builtin/clone.c:129
 msgid "create a shallow clone since a specific time"
 msgstr "criar um clone raso desde uma data específica"
 
-#: builtin/clone.c:129 builtin/fetch.c:177 builtin/fetch.c:200
-#: builtin/pull.c:214 builtin/pull.c:239 builtin/rebase.c:1311
+#: builtin/clone.c:130 builtin/fetch.c:177 builtin/fetch.c:200
+#: builtin/pull.c:214 builtin/pull.c:239 builtin/rebase.c:1317
 msgid "revision"
 msgstr "revisão"
 
-#: builtin/clone.c:130 builtin/fetch.c:178 builtin/pull.c:215
+#: builtin/clone.c:131 builtin/fetch.c:178 builtin/pull.c:215
 msgid "deepen history of shallow clone, excluding rev"
 msgstr "aprofundar o histórico de um clone raso, excluindo a revisão"
 
-#: builtin/clone.c:132 builtin/submodule--helper.c:1843
+#: builtin/clone.c:133 builtin/submodule--helper.c:1843
 #: builtin/submodule--helper.c:2352
 msgid "clone only one branch, HEAD or --branch"
 msgstr "clonar apenas um ramo, HEAD ou --branch"
 
-#: builtin/clone.c:134
+#: builtin/clone.c:135
 msgid "don't clone any tags, and make later fetches not to follow them"
 msgstr ""
 
-#: builtin/clone.c:136
+#: builtin/clone.c:137
 msgid "any cloned submodules will be shallow"
 msgstr "qualquer submódulo clonado será raso"
 
-#: builtin/clone.c:137 builtin/init-db.c:559
+#: builtin/clone.c:138 builtin/init-db.c:559
 msgid "gitdir"
 msgstr "gitdir"
 
-#: builtin/clone.c:138 builtin/init-db.c:560
+#: builtin/clone.c:139 builtin/init-db.c:560
 msgid "separate git dir from working tree"
 msgstr "separar o repositório git da árvore de trabalho"
 
-#: builtin/clone.c:139
+#: builtin/clone.c:140
 msgid "key=value"
 msgstr "chave=valor"
 
-#: builtin/clone.c:140
+#: builtin/clone.c:141
 msgid "set config inside the new repository"
 msgstr "definir configuração dentro do novo repositório"
 
-#: builtin/clone.c:142 builtin/fetch.c:195 builtin/ls-remote.c:76
-#: builtin/pull.c:230 builtin/push.c:560 builtin/send-pack.c:190
+#: builtin/clone.c:143 builtin/fetch.c:195 builtin/ls-remote.c:76
+#: builtin/pull.c:230 builtin/push.c:584 builtin/send-pack.c:196
 msgid "server-specific"
 msgstr "específico do servidor"
 
-#: builtin/clone.c:142 builtin/fetch.c:195 builtin/ls-remote.c:76
-#: builtin/pull.c:231 builtin/push.c:560 builtin/send-pack.c:191
+#: builtin/clone.c:143 builtin/fetch.c:195 builtin/ls-remote.c:76
+#: builtin/pull.c:231 builtin/push.c:584 builtin/send-pack.c:197
 msgid "option to transmit"
 msgstr "opção para transmitir"
 
-#: builtin/clone.c:143 builtin/fetch.c:196 builtin/pull.c:234
-#: builtin/push.c:561
+#: builtin/clone.c:144 builtin/fetch.c:196 builtin/pull.c:234
+#: builtin/push.c:585
 msgid "use IPv4 addresses only"
 msgstr "usar apenas endereços IPv4"
 
-#: builtin/clone.c:145 builtin/fetch.c:198 builtin/pull.c:237
-#: builtin/push.c:563
+#: builtin/clone.c:146 builtin/fetch.c:198 builtin/pull.c:237
+#: builtin/push.c:587
 msgid "use IPv6 addresses only"
 msgstr "usar apenas endereços IPv6"
 
-#: builtin/clone.c:149
+#: builtin/clone.c:150
 #, fuzzy
 msgid "any cloned submodules will use their remote-tracking branch"
 msgstr "qualquer submódulo clonado será raso"
 
-#: builtin/clone.c:151
+#: builtin/clone.c:152
 msgid "initialize sparse-checkout file to include only files at root"
 msgstr ""
 
-#: builtin/clone.c:287
+#: builtin/clone.c:288
 msgid ""
 "No directory name could be guessed.\n"
 "Please specify a directory on the command line"
@@ -12539,42 +12645,42 @@ msgstr ""
 "Não foi possível adivinhar o nome do diretório.\n"
 "Especifique um diretório na linha de comandos"
 
-#: builtin/clone.c:340
+#: builtin/clone.c:341
 #, c-format
 msgid "info: Could not add alternate for '%s': %s\n"
 msgstr "info: Não foi possível adicionar sobressalente de '%s': %s\n"
 
-#: builtin/clone.c:413
+#: builtin/clone.c:414
 #, c-format
 msgid "%s exists and is not a directory"
 msgstr "%s existe e não é um diretório"
 
-#: builtin/clone.c:431
+#: builtin/clone.c:432
 #, fuzzy, c-format
 msgid "failed to start iterator over '%s'"
 msgstr "falha ao escrever para '%s'"
 
-#: builtin/clone.c:462
+#: builtin/clone.c:463
 #, c-format
 msgid "failed to create link '%s'"
 msgstr "falha ao criar a ligação '%s'"
 
-#: builtin/clone.c:466
+#: builtin/clone.c:467
 #, c-format
 msgid "failed to copy file to '%s'"
 msgstr "falha ao copiar o ficheiro para '%s'"
 
-#: builtin/clone.c:471
+#: builtin/clone.c:472
 #, fuzzy, c-format
 msgid "failed to iterate over '%s'"
 msgstr "falha ao remover '%s'"
 
-#: builtin/clone.c:498
+#: builtin/clone.c:499
 #, c-format
 msgid "done.\n"
 msgstr "concluído.\n"
 
-#: builtin/clone.c:512
+#: builtin/clone.c:513
 #, fuzzy
 msgid ""
 "Clone succeeded, but checkout failed.\n"
@@ -12585,108 +12691,107 @@ msgstr ""
 "Pode inspecionar o que foi extraído com 'git status'\n"
 "e repetir a extração com 'git checkout -f HEAD'\n"
 
-#: builtin/clone.c:589
+#: builtin/clone.c:590
 #, c-format
 msgid "Could not find remote branch %s to clone."
 msgstr "Ramo remoto %s não encontrado para clonar."
 
-#: builtin/clone.c:708
+#: builtin/clone.c:709
 #, c-format
 msgid "unable to update %s"
 msgstr "não foi possível atualizar %s"
 
-#: builtin/clone.c:756
+#: builtin/clone.c:757
 #, fuzzy
 msgid "failed to initialize sparse-checkout"
 msgstr "falha ao finalizar integração de notas"
 
-#: builtin/clone.c:779
+#: builtin/clone.c:780
 msgid "remote HEAD refers to nonexistent ref, unable to checkout.\n"
 msgstr ""
-"a HEAD remota referencia uma referência inexistente, não é possível "
-"extrair.\n"
+"remote HEAD refere-se a referência inexistente, impossível fazer checkout.\n"
 
-#: builtin/clone.c:811
+#: builtin/clone.c:812
 msgid "unable to checkout working tree"
 msgstr "não foi possível extrair a árvore de trabalho"
 
-#: builtin/clone.c:868
+#: builtin/clone.c:887
 msgid "unable to write parameters to config file"
 msgstr "não foi possível escrever os parâmetros no ficheiro de configuração"
 
-#: builtin/clone.c:931
+#: builtin/clone.c:950
 msgid "cannot repack to clean up"
 msgstr "não é possível reempacotar para limpar"
 
-#: builtin/clone.c:933
+#: builtin/clone.c:952
 msgid "cannot unlink temporary alternates file"
 msgstr ""
 "não é possível invocar unlink sobre o ficheiro sobressalente temporário"
 
-#: builtin/clone.c:970 builtin/receive-pack.c:2434
+#: builtin/clone.c:992 builtin/receive-pack.c:2493
 msgid "Too many arguments."
 msgstr "Demasiados argumentos."
 
-#: builtin/clone.c:974
+#: builtin/clone.c:996
 msgid "You must specify a repository to clone."
 msgstr "Deve especificar um repositório para clonar."
 
-#: builtin/clone.c:987
+#: builtin/clone.c:1009
 #, c-format
 msgid "--bare and --origin %s options are incompatible."
 msgstr "as opções --bare e --origin %s são incompatíveis."
 
-#: builtin/clone.c:990
+#: builtin/clone.c:1012
 msgid "--bare and --separate-git-dir are incompatible."
 msgstr "--bare e --separate-git-dir são incompatíveis."
 
-#: builtin/clone.c:1006
+#: builtin/clone.c:1025
 #, c-format
 msgid "repository '%s' does not exist"
 msgstr "o repositório '%s' não existe"
 
-#: builtin/clone.c:1010 builtin/fetch.c:1841
+#: builtin/clone.c:1029 builtin/fetch.c:1841
 #, c-format
 msgid "depth %s is not a positive number"
 msgstr "profundidade %s não é um número positivo"
 
-#: builtin/clone.c:1020
+#: builtin/clone.c:1039
 #, c-format
 msgid "destination path '%s' already exists and is not an empty directory."
 msgstr "o caminho de destino '%s' já existe e não é um diretório vazio."
 
-#: builtin/clone.c:1026
+#: builtin/clone.c:1045
 #, fuzzy, c-format
 msgid "repository path '%s' already exists and is not an empty directory."
 msgstr "o caminho de destino '%s' já existe e não é um diretório vazio."
 
-#: builtin/clone.c:1040
+#: builtin/clone.c:1059
 #, c-format
 msgid "working tree '%s' already exists."
 msgstr "a árvore de trabalho '%s' já existe."
 
-#: builtin/clone.c:1055 builtin/clone.c:1076 builtin/difftool.c:271
-#: builtin/log.c:1970 builtin/worktree.c:354 builtin/worktree.c:386
+#: builtin/clone.c:1074 builtin/clone.c:1095 builtin/difftool.c:271
+#: builtin/log.c:1987 builtin/worktree.c:354 builtin/worktree.c:386
 #, c-format
 msgid "could not create leading directories of '%s'"
 msgstr "não foi possível criar os diretórios superiores de '%s'"
 
-#: builtin/clone.c:1060
+#: builtin/clone.c:1079
 #, c-format
 msgid "could not create work tree dir '%s'"
 msgstr "não foi possível criar o diretório de árvore de trabalho '%s'"
 
-#: builtin/clone.c:1080
+#: builtin/clone.c:1099
 #, c-format
 msgid "Cloning into bare repository '%s'...\n"
 msgstr "A clonar no repositório nu '%s'...\n"
 
-#: builtin/clone.c:1082
+#: builtin/clone.c:1101
 #, c-format
 msgid "Cloning into '%s'...\n"
-msgstr "A clonar em '%s'...\n"
+msgstr "Clonando em '%s'...\n"
 
-#: builtin/clone.c:1106
+#: builtin/clone.c:1125
 msgid ""
 "clone --recursive is not compatible with both --reference and --reference-if-"
 "able"
@@ -12694,37 +12799,42 @@ msgstr ""
 "clone --recursive não é compatível com ambos --reference e --reference-if-"
 "able"
 
-#: builtin/clone.c:1170
+#: builtin/clone.c:1169 builtin/remote.c:200 builtin/remote.c:705
+#, c-format
+msgid "'%s' is not a valid remote name"
+msgstr "'%s' não é um nome de remoto válido"
+
+#: builtin/clone.c:1210
 msgid "--depth is ignored in local clones; use file:// instead."
 msgstr "--depth é ignorado em clones locais; use file:// ."
 
-#: builtin/clone.c:1172
+#: builtin/clone.c:1212
 msgid "--shallow-since is ignored in local clones; use file:// instead."
 msgstr "--shallow-since é ignorado em clones locais; use file:// ."
 
-#: builtin/clone.c:1174
+#: builtin/clone.c:1214
 msgid "--shallow-exclude is ignored in local clones; use file:// instead."
 msgstr "--shallow-exclude é ignorado em clones locais; use file:// ."
 
-#: builtin/clone.c:1176
+#: builtin/clone.c:1216
 #, fuzzy
 msgid "--filter is ignored in local clones; use file:// instead."
 msgstr "--depth é ignorado em clones locais; use file:// ."
 
-#: builtin/clone.c:1179
+#: builtin/clone.c:1219
 msgid "source repository is shallow, ignoring --local"
 msgstr "o repositório de origem é raso, --local ignorado"
 
-#: builtin/clone.c:1184
+#: builtin/clone.c:1224
 msgid "--local is ignored"
 msgstr "--local ignorado"
 
-#: builtin/clone.c:1268 builtin/clone.c:1276
+#: builtin/clone.c:1308 builtin/clone.c:1316
 #, c-format
 msgid "Remote branch %s not found in upstream %s"
 msgstr "O ramo remoto %s não foi encontrado no repositório a montante %s"
 
-#: builtin/clone.c:1279
+#: builtin/clone.c:1319
 msgid "You appear to have cloned an empty repository."
 msgstr "Parece foi clonado um repositório vazio."
 
@@ -12778,7 +12888,7 @@ msgid "could not find object directory matching %s"
 msgstr "não foi possível ler o objeto %s da ligação simbólica %s"
 
 #: builtin/commit-graph.c:80 builtin/commit-graph.c:210
-#: builtin/commit-graph.c:316 builtin/fetch.c:184 builtin/log.c:1764
+#: builtin/commit-graph.c:316 builtin/fetch.c:184 builtin/log.c:1769
 msgid "dir"
 msgstr "dir"
 
@@ -12871,7 +12981,7 @@ msgstr ""
 msgid "duplicate parent %s ignored"
 msgstr ""
 
-#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:546
+#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:555
 #, fuzzy, c-format
 msgid "not a valid object name %s"
 msgstr "%s não é um nome de objeto válido"
@@ -12901,8 +13011,8 @@ msgstr "número-pai"
 msgid "id of a parent commit object"
 msgstr "falha ao escrever objeto de commit"
 
-#: builtin/commit-tree.c:114 builtin/commit.c:1504 builtin/merge.c:272
-#: builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1471
+#: builtin/commit-tree.c:114 builtin/commit.c:1504 builtin/merge.c:281
+#: builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1470
 #: builtin/tag.c:413
 msgid "message"
 msgstr "mensagem"
@@ -12916,7 +13026,7 @@ msgstr "mensagem de commit"
 msgid "read commit log message from file"
 msgstr "ler mensagem de um ficheiro"
 
-#: builtin/commit-tree.c:121 builtin/commit.c:1516 builtin/merge.c:289
+#: builtin/commit-tree.c:121 builtin/commit.c:1516 builtin/merge.c:298
 #: builtin/pull.c:176 builtin/revert.c:118
 msgid "GPG sign commit"
 msgstr "assinar o commit com GPG"
@@ -12958,8 +13068,8 @@ msgid ""
 "\n"
 msgstr ""
 "O cherry-pick anterior está vazio, possivelmente devido a resolução de "
-"conflitos.\n"
-"Se deseja submeter de qualquer forma, use:\n"
+"conflito.\n"
+"Se ainda desejas commit, usa:\n"
 "\n"
 "    git commit --allow-empty\n"
 "\n"
@@ -13068,7 +13178,7 @@ msgstr ""
 msgid "could not lookup commit %s"
 msgstr "não foi possível consultar o commit %s"
 
-#: builtin/commit.c:729 builtin/shortlog.c:478
+#: builtin/commit.c:729 builtin/shortlog.c:425
 #, c-format
 msgid "(reading log message from standard input)\n"
 msgstr "(a ler mensagem de log da entrada padrão)\n"
@@ -13106,8 +13216,8 @@ msgstr ""
 "\n"
 "Parece que está a submeter uma integração.\n"
 "Se não for o caso, remova o ficheiro\n"
-"\t%s\n"
-"e tente de novo.\n"
+"\tgit update-ref -d MERGE_HEAD\n"
+"e tenta de novo.\n"
 
 #: builtin/commit.c:858
 #, fuzzy
@@ -13121,8 +13231,8 @@ msgstr ""
 "\n"
 "Parece que está a submeter um cherry-pick.\n"
 "Se não é o caso, remova o ficheiro\n"
-"\t%s\n"
-"e tente outra vez.\n"
+"\tgit update-ref -d CHERRY_PICK_HEAD\n"
+"e tenta de novo.\n"
 
 #: builtin/commit.c:868
 #, c-format
@@ -13171,7 +13281,7 @@ msgstr "Erro ao construir árvores"
 #: builtin/commit.c:1011 builtin/tag.c:276
 #, c-format
 msgid "Please supply the message using either -m or -F option.\n"
-msgstr "Indique a mensagem usando as opções -m ou -F.\n"
+msgstr "Indique a mensagem usando apenas as opções -m ou -F.\n"
 
 #: builtin/commit.c:1055
 #, c-format
@@ -13263,8 +13373,8 @@ msgstr ""
 msgid "version"
 msgstr "versão"
 
-#: builtin/commit.c:1374 builtin/commit.c:1533 builtin/push.c:539
-#: builtin/worktree.c:722
+#: builtin/commit.c:1374 builtin/commit.c:1533 builtin/push.c:560
+#: builtin/worktree.c:725
 msgid "machine-readable output"
 msgstr "saída inteligível por máquina"
 
@@ -13278,7 +13388,7 @@ msgstr "terminar entradas com NUL"
 
 #: builtin/commit.c:1382 builtin/commit.c:1386 builtin/commit.c:1541
 #: builtin/fast-export.c:1199 builtin/fast-export.c:1202
-#: builtin/fast-export.c:1205 builtin/rebase.c:1400 parse-options.h:336
+#: builtin/fast-export.c:1205 builtin/rebase.c:1406 parse-options.h:336
 msgid "mode"
 msgstr "modo"
 
@@ -13338,7 +13448,7 @@ msgstr "mostrar diff no modelo da mensagem de commit"
 msgid "Commit message options"
 msgstr "Opções de mensagem de commit"
 
-#: builtin/commit.c:1501 builtin/merge.c:276 builtin/tag.c:415
+#: builtin/commit.c:1501 builtin/merge.c:285 builtin/tag.c:415
 msgid "read message from file"
 msgstr "ler mensagem de um ficheiro"
 
@@ -13350,7 +13460,7 @@ msgstr "autor"
 msgid "override author for commit"
 msgstr "substituir autor do commit"
 
-#: builtin/commit.c:1503 builtin/gc.c:539
+#: builtin/commit.c:1503 builtin/gc.c:542
 msgid "date"
 msgstr "data"
 
@@ -13385,9 +13495,10 @@ msgstr ""
 msgid "the commit is authored by me now (used with -C/-c/--amend)"
 msgstr "agora sou eu o autor do commit (usado com C/-c/--amend)"
 
-#: builtin/commit.c:1510 builtin/log.c:1741 builtin/merge.c:292
+#: builtin/commit.c:1510 builtin/log.c:1744 builtin/merge.c:301
 #: builtin/pull.c:145 builtin/revert.c:110
-msgid "add Signed-off-by:"
+#, fuzzy
+msgid "add a Signed-off-by trailer"
 msgstr "adicionar Signed-off-by:"
 
 #: builtin/commit.c:1511
@@ -13489,223 +13600,233 @@ msgstr ""
 msgid "git config [<options>]"
 msgstr "git config [<opções>]"
 
-#: builtin/config.c:107 builtin/env--helper.c:27
+#: builtin/config.c:109 builtin/env--helper.c:27
 #, fuzzy, c-format
 msgid "unrecognized --type argument, %s"
 msgstr "argumento não reconhecido: %s"
 
-#: builtin/config.c:119
+#: builtin/config.c:121
 #, fuzzy
 msgid "only one type at a time"
 msgstr "imprimir apenas correspondências exatas"
 
-#: builtin/config.c:128
+#: builtin/config.c:130
 msgid "Config file location"
 msgstr "Localização do ficheiro de configuração"
 
-#: builtin/config.c:129
+#: builtin/config.c:131
 msgid "use global config file"
 msgstr "usar ficheiro de configuração global"
 
-#: builtin/config.c:130
+#: builtin/config.c:132
 msgid "use system config file"
 msgstr "usar ficheiro de configuração do sistema"
 
-#: builtin/config.c:131
+#: builtin/config.c:133
 msgid "use repository config file"
 msgstr "usar ficheiro de configuração do repositório"
 
-#: builtin/config.c:132
+#: builtin/config.c:134
 #, fuzzy
 msgid "use per-worktree config file"
 msgstr "usar ficheiro de configuração do repositório"
 
-#: builtin/config.c:133
+#: builtin/config.c:135
 msgid "use given config file"
 msgstr "usar ficheiro de configuração fornecido"
 
-#: builtin/config.c:134
+#: builtin/config.c:136
 msgid "blob-id"
 msgstr "id-blob"
 
-#: builtin/config.c:134
+#: builtin/config.c:136
 msgid "read config from given blob object"
 msgstr "ler configuração a partir do objeto blob fornecido"
 
-#: builtin/config.c:135
+#: builtin/config.c:137
 msgid "Action"
 msgstr "Ação"
 
-#: builtin/config.c:136
-msgid "get value: name [value-regex]"
+#: builtin/config.c:138
+#, fuzzy
+msgid "get value: name [value-pattern]"
 msgstr "obter valor: nome [regex-do-valor]"
 
-#: builtin/config.c:137
-msgid "get all values: key [value-regex]"
+#: builtin/config.c:139
+#, fuzzy
+msgid "get all values: key [value-pattern]"
 msgstr "obter todos os valores: chave [regex-do-valor]"
 
-#: builtin/config.c:138
-msgid "get values for regexp: name-regex [value-regex]"
+#: builtin/config.c:140
+#, fuzzy
+msgid "get values for regexp: name-regex [value-pattern]"
 msgstr "obter valores para a regexp: regex-do-nome [regex-do-valor]"
 
-#: builtin/config.c:139
+#: builtin/config.c:141
 msgid "get value specific for the URL: section[.var] URL"
 msgstr "obter valor do URL especificado: section[.var] URL"
 
-#: builtin/config.c:140
-msgid "replace all matching variables: name value [value_regex]"
+#: builtin/config.c:142
+#, fuzzy
+msgid "replace all matching variables: name value [value-pattern]"
 msgstr ""
 "substituir todos as variáveis correspondentes: nome valor [regex-do-valor]"
 
-#: builtin/config.c:141
+#: builtin/config.c:143
 msgid "add a new variable: name value"
 msgstr "adicionar uma nova variável: nome valor"
 
-#: builtin/config.c:142
-msgid "remove a variable: name [value-regex]"
+#: builtin/config.c:144
+#, fuzzy
+msgid "remove a variable: name [value-pattern]"
 msgstr "remover uma variável: nome [regex-do-valor]"
 
-#: builtin/config.c:143
-msgid "remove all matches: name [value-regex]"
+#: builtin/config.c:145
+#, fuzzy
+msgid "remove all matches: name [value-pattern]"
 msgstr "remover todas as correspondências: nome [regex-do-valor]"
 
-#: builtin/config.c:144
+#: builtin/config.c:146
 msgid "rename section: old-name new-name"
 msgstr "mudar o nome da secção: nome-antigo novo-nome"
 
-#: builtin/config.c:145
+#: builtin/config.c:147
 msgid "remove a section: name"
 msgstr "remover uma secção: nome"
 
-#: builtin/config.c:146
+#: builtin/config.c:148
 msgid "list all"
 msgstr "listar todos"
 
-#: builtin/config.c:147
+#: builtin/config.c:149
+msgid "use string equality when comparing values to 'value-pattern'"
+msgstr ""
+
+#: builtin/config.c:150
 msgid "open an editor"
 msgstr "abrir um editor"
 
-#: builtin/config.c:148
+#: builtin/config.c:151
 msgid "find the color configured: slot [default]"
 msgstr "encontrar a cor configurada: slot [predefinição]"
 
-#: builtin/config.c:149
+#: builtin/config.c:152
 msgid "find the color setting: slot [stdout-is-tty]"
 msgstr "encontrar a definição de cor: slot [stdout-é-tty]"
 
-#: builtin/config.c:150
+#: builtin/config.c:153
 msgid "Type"
 msgstr "Tipo"
 
-#: builtin/config.c:151 builtin/env--helper.c:43
+#: builtin/config.c:154 builtin/env--helper.c:43
 msgid "value is given this type"
 msgstr ""
 
-#: builtin/config.c:152
+#: builtin/config.c:155
 msgid "value is \"true\" or \"false\""
 msgstr "o valor é \"true\" (verdadeiro) ou \"false\" (falso)"
 
-#: builtin/config.c:153
+#: builtin/config.c:156
 msgid "value is decimal number"
 msgstr "o valor é um número decimal"
 
-#: builtin/config.c:154
+#: builtin/config.c:157
 msgid "value is --bool or --int"
 msgstr "o valor é --bool ou --int"
 
-#: builtin/config.c:155
+#: builtin/config.c:158
 #, fuzzy
 msgid "value is --bool or string"
 msgstr "o valor é --bool ou --int"
 
-#: builtin/config.c:156
+#: builtin/config.c:159
 msgid "value is a path (file or directory name)"
 msgstr "o valor é um caminho (nome dum ficheiro ou diretório)"
 
-#: builtin/config.c:157
+#: builtin/config.c:160
 msgid "value is an expiry date"
 msgstr ""
 
-#: builtin/config.c:158
+#: builtin/config.c:161
 msgid "Other"
 msgstr "Outro"
 
-#: builtin/config.c:159
+#: builtin/config.c:162
 msgid "terminate values with NUL byte"
 msgstr "terminar valores com o byte NUL"
 
-#: builtin/config.c:160
+#: builtin/config.c:163
 msgid "show variable names only"
 msgstr "mostrar apenas os nomes das variáveis"
 
-#: builtin/config.c:161
+#: builtin/config.c:164
 msgid "respect include directives on lookup"
 msgstr "respeitar diretivas de inclusão ao pesquisar"
 
-#: builtin/config.c:162
+#: builtin/config.c:165
 msgid "show origin of config (file, standard input, blob, command line)"
 msgstr ""
 "mostrar a origem da configuração (ficheiro, entrada padrão, blob, linha de "
 "comandos)"
 
-#: builtin/config.c:163
+#: builtin/config.c:166
 msgid "show scope of config (worktree, local, global, system, command)"
 msgstr ""
 
-#: builtin/config.c:164 builtin/env--helper.c:45
+#: builtin/config.c:167 builtin/env--helper.c:45
 #, fuzzy
 msgid "value"
 msgstr "chave=valor"
 
-#: builtin/config.c:164
+#: builtin/config.c:167
 msgid "with --get, use default value when missing entry"
 msgstr ""
 
-#: builtin/config.c:178
+#: builtin/config.c:181
 #, c-format
 msgid "wrong number of arguments, should be %d"
 msgstr ""
 
-#: builtin/config.c:180
+#: builtin/config.c:183
 #, c-format
 msgid "wrong number of arguments, should be from %d to %d"
 msgstr ""
 
-#: builtin/config.c:334
+#: builtin/config.c:339
 #, fuzzy, c-format
 msgid "invalid key pattern: %s"
 msgstr "chave inválida: %s"
 
-#: builtin/config.c:370
+#: builtin/config.c:377
 #, fuzzy, c-format
 msgid "failed to format default config value: %s"
 msgstr "falha ao criar o ficheiro %s"
 
-#: builtin/config.c:434
+#: builtin/config.c:441
 #, fuzzy, c-format
 msgid "cannot parse color '%s'"
 msgstr "não é possível abrir o ficheiro '%s'"
 
-#: builtin/config.c:476
+#: builtin/config.c:483
 msgid "unable to parse default color value"
 msgstr "não é possível analisar o valor de cor por omissão"
 
-#: builtin/config.c:529 builtin/config.c:789
+#: builtin/config.c:536 builtin/config.c:833
 #, fuzzy
 msgid "not in a git directory"
 msgstr "Não é um repositório git"
 
-#: builtin/config.c:532
+#: builtin/config.c:539
 #, fuzzy
 msgid "writing to stdin is not supported"
 msgstr "Não é suportada profundidade negativa em --deepen"
 
-#: builtin/config.c:535
+#: builtin/config.c:542
 #, fuzzy
 msgid "writing config blobs is not supported"
-msgstr "aviso: sendmail alias com aspas não é suportado: %s\n"
+msgstr "escrever config blobs tem suporte nenhum"
 
-#: builtin/config.c:620
+#: builtin/config.c:627
 #, c-format
 msgid ""
 "# This is Git's per-user configuration file.\n"
@@ -13720,93 +13841,97 @@ msgstr ""
 "#\tname = %s\n"
 "#\temail = %s\n"
 
-#: builtin/config.c:644
+#: builtin/config.c:652
 msgid "only one config file at a time"
 msgstr ""
 
-#: builtin/config.c:650
+#: builtin/config.c:658
 #, fuzzy
 msgid "--local can only be used inside a git repository"
 msgstr "--cached fora de um repositório"
 
-#: builtin/config.c:652
+#: builtin/config.c:660
 #, fuzzy
 msgid "--blob can only be used inside a git repository"
 msgstr "--cached fora de um repositório"
 
-#: builtin/config.c:654
+#: builtin/config.c:662
 #, fuzzy
 msgid "--worktree can only be used inside a git repository"
 msgstr "'%s' não é reconhecido como um repositório git"
 
-#: builtin/config.c:676
+#: builtin/config.c:684
 msgid "$HOME not set"
 msgstr ""
 
-#: builtin/config.c:700
+#: builtin/config.c:708
 msgid ""
 "--worktree cannot be used with multiple working trees unless the config\n"
 "extension worktreeConfig is enabled. Please read \"CONFIGURATION FILE\"\n"
 "section in \"git help worktree\" for details"
 msgstr ""
 
-#: builtin/config.c:735
+#: builtin/config.c:743
 msgid "--get-color and variable type are incoherent"
 msgstr ""
 
-#: builtin/config.c:740
+#: builtin/config.c:748
 msgid "only one action at a time"
 msgstr ""
 
-#: builtin/config.c:753
+#: builtin/config.c:761
 msgid "--name-only is only applicable to --list or --get-regexp"
 msgstr ""
 
-#: builtin/config.c:759
+#: builtin/config.c:767
 msgid ""
 "--show-origin is only applicable to --get, --get-all, --get-regexp, and --"
 "list"
 msgstr ""
 
-#: builtin/config.c:765
+#: builtin/config.c:773
 msgid "--default is only applicable to --get"
 msgstr ""
 
-#: builtin/config.c:778
+#: builtin/config.c:806
+msgid "--fixed-value only applies with 'value-pattern'"
+msgstr ""
+
+#: builtin/config.c:822
 #, fuzzy, c-format
 msgid "unable to read config file '%s'"
 msgstr "não é possível ler o ficheiro de assinatura '%s'"
 
-#: builtin/config.c:781
+#: builtin/config.c:825
 #, fuzzy
 msgid "error processing config file(s)"
 msgstr "usar ficheiro de configuração do repositório"
 
-#: builtin/config.c:791
+#: builtin/config.c:835
 #, fuzzy
 msgid "editing stdin is not supported"
 msgstr "Não é suportada profundidade negativa em --deepen"
 
-#: builtin/config.c:793
+#: builtin/config.c:837
 #, fuzzy
 msgid "editing blobs is not supported"
 msgstr "Não é suportada profundidade negativa em --deepen"
 
-#: builtin/config.c:807
+#: builtin/config.c:851
 #, c-format
 msgid "cannot create configuration file %s"
 msgstr "não é possível criar o ficheiro de configuração %s"
 
-#: builtin/config.c:820
+#: builtin/config.c:864
 #, c-format
 msgid ""
 "cannot overwrite multiple values with a single value\n"
 "       Use a regexp, --add or --replace-all to change %s."
 msgstr ""
 "não é possível substituir múltiplos valores por um único valor\n"
-"\tUse uma regexp, --add ou --replace-all para alterar %s."
+"       Usa uma regexp, --add ou --replace-all para alterar %s."
 
-#: builtin/config.c:894 builtin/config.c:905
+#: builtin/config.c:943 builtin/config.c:954
 #, fuzzy, c-format
 msgid "no such section: %s"
 msgstr "referência inexistente %s"
@@ -13845,6 +13970,11 @@ msgstr ""
 msgid "credential-cache unavailable; no unix socket support"
 msgstr ""
 
+#: builtin/credential-store.c:66
+#, fuzzy, c-format
+msgid "unable to get credential storage lock in %d ms"
+msgstr "não é possível de obter o diretório de trabalho atual"
+
 #: builtin/describe.c:26
 msgid "git describe [<options>] [<commit-ish>...]"
 msgstr "git describe [<opções>] [<commit-etc>...]"
@@ -13878,7 +14008,7 @@ msgstr "a tag '%s' está de facto em '%s'"
 #: builtin/describe.c:328
 #, c-format
 msgid "no tag exactly matches '%s'"
-msgstr "nenhuma tag corresponde exatamente a '%s'"
+msgstr "tag nenhuma corresponde exatamente a '%s'"
 
 #: builtin/describe.c:330
 #, c-format
@@ -14013,41 +14143,50 @@ msgstr "--dirty é incompatível com commits ou semelhantes"
 msgid "--broken is incompatible with commit-ishes"
 msgstr "--broken é incompatível com commits ou semelhantes"
 
+#: builtin/diff-tree.c:155
+#, fuzzy
+msgid "--stdin and --merge-base are mutually exclusive"
+msgstr "-b, -B e --orphan são mutuamente exclusivos"
+
+#: builtin/diff-tree.c:157
+msgid "--merge-base only works with two commits"
+msgstr ""
+
 #: builtin/diff.c:91
 #, c-format
 msgid "'%s': not a regular file or symlink"
 msgstr "'%s': não é um ficheiro regular nem uma ligação simbólica"
 
-#: builtin/diff.c:241
+#: builtin/diff.c:258
 #, c-format
 msgid "invalid option: %s"
 msgstr "opção inválida: %s"
 
-#: builtin/diff.c:358
+#: builtin/diff.c:375
 #, c-format
 msgid "%s...%s: no merge base"
 msgstr ""
 
-#: builtin/diff.c:468
+#: builtin/diff.c:485
 msgid "Not a git repository"
 msgstr "Não é um repositório git"
 
-#: builtin/diff.c:513
+#: builtin/diff.c:530 builtin/grep.c:681
 #, c-format
 msgid "invalid object '%s' given."
 msgstr "objeto inválido '%s' fornecido."
 
-#: builtin/diff.c:524
+#: builtin/diff.c:541
 #, c-format
 msgid "more than two blobs given: '%s'"
 msgstr "mais do que dois blobs fornecidos: '%s'"
 
-#: builtin/diff.c:529
+#: builtin/diff.c:546
 #, c-format
 msgid "unhandled object '%s' given."
 msgstr "objeto sem tratamento '%s' fornecido."
 
-#: builtin/diff.c:563
+#: builtin/diff.c:580
 #, c-format
 msgid "%s...%s: multiple merge bases, using %s"
 msgstr ""
@@ -14076,7 +14215,7 @@ msgstr "não foi possível ler o ficheiro de ligação simbólica %s"
 msgid "could not read object %s for symlink %s"
 msgstr "não foi possível ler o objeto %s da ligação simbólica %s"
 
-#: builtin/difftool.c:413
+#: builtin/difftool.c:412
 msgid ""
 "combined diff formats('-c' and '--cc') are not supported in\n"
 "directory diff mode('-d' and '--dir-diff')."
@@ -14084,55 +14223,55 @@ msgstr ""
 "formatos diff combinado('-c' e '--cc') não são suportados em\n"
 "modo diff diretório ('-d' e '--dir-diff')."
 
-#: builtin/difftool.c:634
+#: builtin/difftool.c:633
 #, c-format
 msgid "both files modified: '%s' and '%s'."
 msgstr "ambos os ficheiros modificados: '%s' e '%s'."
 
-#: builtin/difftool.c:636
+#: builtin/difftool.c:635
 msgid "working tree file has been left."
 msgstr "ficheiro de árvore de trabalho foi deixado."
 
-#: builtin/difftool.c:647
+#: builtin/difftool.c:646
 #, c-format
 msgid "temporary files exist in '%s'."
 msgstr "existem ficheiros temporários em '%s'."
 
-#: builtin/difftool.c:648
+#: builtin/difftool.c:647
 msgid "you may want to cleanup or recover these."
 msgstr "pode querer limpar ou recuperá-los."
 
-#: builtin/difftool.c:697
+#: builtin/difftool.c:696
 msgid "use `diff.guitool` instead of `diff.tool`"
 msgstr "use 'diff.guitool' em vez de 'diff.tool'"
 
-#: builtin/difftool.c:699
+#: builtin/difftool.c:698
 msgid "perform a full-directory diff"
 msgstr "efetuar diff diretório completo"
 
-#: builtin/difftool.c:701
+#: builtin/difftool.c:700
 msgid "do not prompt before launching a diff tool"
 msgstr "não perguntar antes de lançar uma ferramenta diff"
 
-#: builtin/difftool.c:706
+#: builtin/difftool.c:705
 msgid "use symlinks in dir-diff mode"
 msgstr "usar symlinks no modi dir-diff"
 
-#: builtin/difftool.c:707
+#: builtin/difftool.c:706
 #, fuzzy
 msgid "tool"
 msgstr "<ferramenta>"
 
-#: builtin/difftool.c:708
+#: builtin/difftool.c:707
 msgid "use the specified diff tool"
 msgstr "usar a ferramenta diff especificada"
 
-#: builtin/difftool.c:710
+#: builtin/difftool.c:709
 msgid "print a list of diff tools that may be used with `--tool`"
 msgstr ""
 "imprimir uma lista de ferramentas diff que podem ser usadas com '--tool'"
 
-#: builtin/difftool.c:713
+#: builtin/difftool.c:712
 msgid ""
 "make 'git-difftool' exit when an invoked diff tool returns a non - zero exit "
 "code"
@@ -14140,35 +14279,35 @@ msgstr ""
 "fazer com que 'git-difftool' termine quando uma ferramenta diff invocada "
 "retorna um código de saída não nulo"
 
-#: builtin/difftool.c:716
+#: builtin/difftool.c:715
 msgid "specify a custom command for viewing diffs"
 msgstr "especificar um comando personalizado para ver diffs"
 
-#: builtin/difftool.c:717
+#: builtin/difftool.c:716
 msgid "passed to `diff`"
 msgstr ""
 
-#: builtin/difftool.c:732
+#: builtin/difftool.c:731
 msgid "difftool requires worktree or --no-index"
 msgstr ""
 
-#: builtin/difftool.c:739
+#: builtin/difftool.c:738
 #, fuzzy
 msgid "--dir-diff is incompatible with --no-index"
 msgstr "--dirty é incompatível com commits ou semelhantes"
 
-#: builtin/difftool.c:742
+#: builtin/difftool.c:741
 #, fuzzy
 msgid "--gui, --tool and --extcmd are mutually exclusive"
 msgstr "-b, -B e --detach são mutuamente exclusivos"
 
-#: builtin/difftool.c:750
+#: builtin/difftool.c:749
 msgid "no <tool> given for --tool=<tool>"
-msgstr "nenhuma <ferramenta> dada a --tool=<ferramenta>"
+msgstr "<ferramenta> nenhuma dada a --tool=<ferramenta>"
 
-#: builtin/difftool.c:757
+#: builtin/difftool.c:756
 msgid "no <cmd> given for --extcmd=<cmd>"
-msgstr "nenhum <cmd> dado a --extcmd=<cmd>"
+msgstr "<cmd> nenhum dado a --extcmd=<cmd>"
 
 #: builtin/env--helper.c:6
 msgid "git env--helper --type=[bool|ulong] <options> <env-var>"
@@ -14256,7 +14395,7 @@ msgstr "Usar a funcionalidade done para terminar o fluxo"
 msgid "Skip output of blob data"
 msgstr "Ignorar a exibição de dados de blob"
 
-#: builtin/fast-export.c:1223 builtin/log.c:1811
+#: builtin/fast-export.c:1223 builtin/log.c:1816
 msgid "refspec"
 msgstr "especificador de referência"
 
@@ -14297,31 +14436,31 @@ msgstr "--name-only não faz sentido"
 msgid "Cannot pass both --import-marks and --import-marks-if-exists"
 msgstr ""
 
-#: builtin/fast-import.c:3086
+#: builtin/fast-import.c:3088
 #, fuzzy, c-format
 msgid "Missing from marks for submodule '%s'"
 msgstr "A ignorar submódulo '%s'"
 
-#: builtin/fast-import.c:3088
+#: builtin/fast-import.c:3090
 #, fuzzy, c-format
 msgid "Missing to marks for submodule '%s'"
 msgstr "A ignorar submódulo '%s'"
 
-#: builtin/fast-import.c:3223
+#: builtin/fast-import.c:3225
 #, c-format
 msgid "Expected 'mark' command, got %s"
 msgstr ""
 
-#: builtin/fast-import.c:3228
+#: builtin/fast-import.c:3230
 #, c-format
 msgid "Expected 'to' command, got %s"
 msgstr ""
 
-#: builtin/fast-import.c:3320
+#: builtin/fast-import.c:3322
 msgid "Expected format name:filename for submodule rewrite option"
 msgstr ""
 
-#: builtin/fast-import.c:3374
+#: builtin/fast-import.c:3377
 #, c-format
 msgid "feature '%s' forbidden in input without --allow-unsafe-features"
 msgstr ""
@@ -14591,7 +14730,7 @@ msgstr "   (%s ficou suspenso)"
 msgid "[deleted]"
 msgstr "[eliminado]"
 
-#: builtin/fetch.c:1195 builtin/remote.c:1113
+#: builtin/fetch.c:1195 builtin/remote.c:1118
 msgid "(none)"
 msgstr "(nenhum)"
 
@@ -14649,7 +14788,7 @@ msgstr "Não foi possível obter de %s"
 #: builtin/fetch.c:1620
 #, fuzzy, c-format
 msgid "could not fetch '%s' (exit code: %d)\n"
-msgstr "não foi possível definir '%s' como '%s'"
+msgstr "fetch '%s' impossível (exit code: %d)\n"
 
 #: builtin/fetch.c:1724
 msgid ""
@@ -14799,6 +14938,22 @@ msgstr "imprimir apenas referências que contenham o commit"
 msgid "print only refs which don't contain the commit"
 msgstr "imprimir apenas referências que não contenham o commit"
 
+#: builtin/for-each-repo.c:9
+msgid "git for-each-repo --config=<config> <command-args>"
+msgstr ""
+
+#: builtin/for-each-repo.c:37
+msgid "config"
+msgstr ""
+
+#: builtin/for-each-repo.c:38
+msgid "config key storing a list of repository paths"
+msgstr ""
+
+#: builtin/for-each-repo.c:46
+msgid "missing --config=<config>"
+msgstr ""
+
 #: builtin/fsck.c:69 builtin/fsck.c:148 builtin/fsck.c:149
 #, fuzzy
 msgid "unknown"
@@ -14846,7 +15001,7 @@ msgstr "já se tem %s (%s)"
 #: builtin/fsck.c:330
 #, fuzzy, c-format
 msgid "dangling %s %s"
-msgstr "A atualizar %s..%s\n"
+msgstr "balanceando %s %s"
 
 #: builtin/fsck.c:340
 #, fuzzy
@@ -14900,7 +15055,7 @@ msgstr "referência inválida: %s"
 #: builtin/fsck.c:515
 #, fuzzy, c-format
 msgid "Checking reflog %s->%s"
-msgstr "A verificar a mudança de nome de '%s' para '%s'\n"
+msgstr "Verificando reflog %s->%s"
 
 #: builtin/fsck.c:549
 #, fuzzy, c-format
@@ -15046,31 +15201,31 @@ msgstr "mostrar tamanho do objeto"
 msgid "invalid parameter: expected sha1, got '%s'"
 msgstr "parâmetro inválido na mágica 'prefix' do especificador de caminho"
 
-#: builtin/gc.c:36
+#: builtin/gc.c:39
 msgid "git gc [<options>]"
 msgstr "git gc [<opções>]"
 
-#: builtin/gc.c:91
+#: builtin/gc.c:94
 #, c-format
 msgid "Failed to fstat %s: %s"
 msgstr "falha ao invocar fstat sobre %s: %s"
 
-#: builtin/gc.c:127
+#: builtin/gc.c:130
 #, fuzzy, c-format
 msgid "failed to parse '%s' value '%s'"
 msgstr "falha ao abrir '%s': %s"
 
-#: builtin/gc.c:476 builtin/init-db.c:58
+#: builtin/gc.c:479 builtin/init-db.c:58
 #, c-format
 msgid "cannot stat '%s'"
 msgstr "não é possível invocar stat sobre '%s'"
 
-#: builtin/gc.c:485 builtin/notes.c:240 builtin/tag.c:530
+#: builtin/gc.c:488 builtin/notes.c:240 builtin/tag.c:530
 #, c-format
 msgid "cannot read '%s'"
 msgstr "não é possível ler '%s'"
 
-#: builtin/gc.c:492
+#: builtin/gc.c:495
 #, c-format
 msgid ""
 "The last gc run reported the following. Please correct the root cause\n"
@@ -15085,54 +15240,53 @@ msgstr ""
 "\n"
 "%s"
 
-#: builtin/gc.c:540
+#: builtin/gc.c:543
 msgid "prune unreferenced objects"
 msgstr "eliminar ficheiros não referenciados"
 
-#: builtin/gc.c:542
+#: builtin/gc.c:545
 msgid "be more thorough (increased runtime)"
 msgstr "ser mais minucioso (aumenta o tempo de execução)"
 
-#: builtin/gc.c:543
+#: builtin/gc.c:546
 msgid "enable auto-gc mode"
 msgstr "ativar modo auto-gc"
 
-#: builtin/gc.c:546
+#: builtin/gc.c:549
 msgid "force running gc even if there may be another gc running"
 msgstr "forçar a execução do gc mesmo que haja outro gc a executar"
 
-#: builtin/gc.c:549
+#: builtin/gc.c:552
 msgid "repack all other packs except the largest pack"
 msgstr ""
 
-#: builtin/gc.c:566
+#: builtin/gc.c:569
 #, fuzzy, c-format
 msgid "failed to parse gc.logexpiry value %s"
 msgstr "falha ao analisar o valor %s de gc.logexpiry"
 
-#: builtin/gc.c:577
+#: builtin/gc.c:580
 #, fuzzy, c-format
 msgid "failed to parse prune expiry value %s"
 msgstr "falha ao analisar o valor %s de gc.logexpiry"
 
-#: builtin/gc.c:597
+#: builtin/gc.c:600
 #, c-format
 msgid "Auto packing the repository in background for optimum performance.\n"
 msgstr ""
-"A autocompactar o repositório em segundo plano para obter um melhor "
-"desempenho.\n"
+"Autocompactando o repositório para desempenho ótimizado, em segundo plano.\n"
 
-#: builtin/gc.c:599
+#: builtin/gc.c:602
 #, c-format
 msgid "Auto packing the repository for optimum performance.\n"
-msgstr "A autocompactar o repositório para obter um melhor desempenho.\n"
+msgstr "Autocompactando o repositório para desempenho ótimizado.\n"
 
-#: builtin/gc.c:600
+#: builtin/gc.c:603
 #, c-format
 msgid "See \"git help gc\" for manual housekeeping.\n"
-msgstr "Consulte \"git help gc\" para ler sobre manutenção manual.\n"
+msgstr "Vê \"git help gc\" para manual de manutenção.\n"
 
-#: builtin/gc.c:640
+#: builtin/gc.c:643
 #, c-format
 msgid ""
 "gc is already running on machine '%s' pid %<PRIuMAX> (use --force if not)"
@@ -15140,65 +15294,152 @@ msgstr ""
 "gc já a executar na máquina '%s' pid %<PRIuMAX> (use --force se não for o "
 "caso)"
 
-#: builtin/gc.c:695
+#: builtin/gc.c:698
 msgid ""
 "There are too many unreachable loose objects; run 'git prune' to remove them."
 msgstr ""
 "Existem demasiados objeto soltos inalcançáveis; execute 'git prune' para os "
 "remover."
 
-#: builtin/gc.c:705
-msgid "git maintenance run [--auto] [--[no-]quiet] [--task=<task>]"
+#: builtin/gc.c:708
+msgid ""
+"git maintenance run [--auto] [--[no-]quiet] [--task=<task>] [--schedule]"
+msgstr ""
+
+#: builtin/gc.c:738
+msgid "--no-schedule is not allowed"
 msgstr ""
 
-#: builtin/gc.c:812
+#: builtin/gc.c:743
+#, fuzzy, c-format
+msgid "unrecognized --schedule argument '%s'"
+msgstr "argumento não reconhecido: %s"
+
+#: builtin/gc.c:862
 #, fuzzy
 msgid "failed to write commit-graph"
 msgstr "falha ao escrever objeto de commit"
 
-#: builtin/gc.c:905
+#: builtin/gc.c:901
+#, fuzzy
+msgid "failed to fill remotes"
+msgstr "falha ao remover %s"
+
+#: builtin/gc.c:1024
+#, fuzzy
+msgid "failed to start 'git pack-objects' process"
+msgstr "Não foi possível lançar pack-objects"
+
+#: builtin/gc.c:1041
+#, fuzzy
+msgid "failed to finish 'git pack-objects' process"
+msgstr "Não foi possível lançar pack-objects"
+
+#: builtin/gc.c:1093
+#, fuzzy
+msgid "failed to write multi-pack-index"
+msgstr "falha ao limpar o índice"
+
+#: builtin/gc.c:1111
+msgid "'git multi-pack-index expire' failed"
+msgstr ""
+
+#: builtin/gc.c:1172
+#, fuzzy
+msgid "'git multi-pack-index repack' failed"
+msgstr "falha ao ler o ficheiro de comando '%s'"
+
+#: builtin/gc.c:1181
+msgid ""
+"skipping incremental-repack task because core.multiPackIndex is disabled"
+msgstr ""
+
+#: builtin/gc.c:1279
 #, c-format
 msgid "lock file '%s' exists, skipping maintenance"
 msgstr ""
 
-#: builtin/gc.c:932
+#: builtin/gc.c:1309
 #, fuzzy, c-format
 msgid "task '%s' failed"
 msgstr "falha ao mudar o nome de '%s'"
 
-#: builtin/gc.c:979
+#: builtin/gc.c:1389
 #, fuzzy, c-format
 msgid "'%s' is not a valid task"
 msgstr "'%s' não é uma referência válida."
 
-#: builtin/gc.c:984
+#: builtin/gc.c:1394
 #, fuzzy, c-format
 msgid "task '%s' cannot be selected multiple times"
 msgstr "'%s' não pode ser usado com %s"
 
-#: builtin/gc.c:999
+#: builtin/gc.c:1409
 msgid "run tasks based on the state of the repository"
 msgstr ""
 
-#: builtin/gc.c:1001
+#: builtin/gc.c:1410
+msgid "frequency"
+msgstr ""
+
+#: builtin/gc.c:1411
+msgid "run tasks based on frequency"
+msgstr ""
+
+#: builtin/gc.c:1414
 msgid "do not report progress or other information over stderr"
 msgstr ""
 
-#: builtin/gc.c:1002
+#: builtin/gc.c:1415
 msgid "task"
 msgstr ""
 
-#: builtin/gc.c:1003
+#: builtin/gc.c:1416
 #, fuzzy
 msgid "run a specific task"
-msgstr "nenhum caminho especificado"
+msgstr "corre uma tarefa específica"
+
+#: builtin/gc.c:1433
+msgid "use at most one of --auto and --schedule=<frequency>"
+msgstr ""
+
+#: builtin/gc.c:1467
+#, fuzzy
+msgid "failed to run 'git config'"
+msgstr "falha ao escrever para '%s'"
+
+#: builtin/gc.c:1512
+msgid "another process is scheduling background maintenance"
+msgstr ""
+
+#: builtin/gc.c:1525
+msgid "failed to run 'crontab -l'; your system might not support 'cron'"
+msgstr ""
+
+#: builtin/gc.c:1544
+msgid "failed to run 'crontab'; your system might not support 'cron'"
+msgstr ""
+
+#: builtin/gc.c:1550
+#, fuzzy
+msgid "failed to open stdin of 'crontab'"
+msgstr "falha ao abrir '%s'"
 
-#: builtin/gc.c:1026
+#: builtin/gc.c:1592
+msgid "'crontab' died"
+msgstr ""
+
+#: builtin/gc.c:1605
+#, fuzzy
+msgid "failed to add repo to global config"
+msgstr "falha ao ler o ficheiro de comando '%s'"
+
+#: builtin/gc.c:1615
 #, fuzzy
-msgid "git maintenance run [<options>]"
+msgid "git maintenance <subcommand> [<options>]"
 msgstr "git notes prune [<opções>]"
 
-#: builtin/gc.c:1037
+#: builtin/gc.c:1634
 #, fuzzy, c-format
 msgid "invalid subcommand: %s"
 msgstr "commit inválido %s"
@@ -15237,255 +15478,255 @@ msgstr "não foi possível ler a árvore (%s)"
 msgid "unable to grep from object of type %s"
 msgstr "não foi possível efetuar grep de objetos do tipo %s"
 
-#: builtin/grep.c:725
+#: builtin/grep.c:736
 #, c-format
 msgid "switch `%c' expects a numerical value"
 msgstr "a opção '%c' espera um valor numérico"
 
-#: builtin/grep.c:824
+#: builtin/grep.c:835
 msgid "search in index instead of in the work tree"
 msgstr "procurar no índice em vez de procurar na árvore de trabalho"
 
-#: builtin/grep.c:826
+#: builtin/grep.c:837
 msgid "find in contents not managed by git"
 msgstr "procurar em conteúdos não geridos pelo git"
 
-#: builtin/grep.c:828
+#: builtin/grep.c:839
 msgid "search in both tracked and untracked files"
 msgstr "procurar em ficheiros controlados e não controlados"
 
-#: builtin/grep.c:830
+#: builtin/grep.c:841
 msgid "ignore files specified via '.gitignore'"
 msgstr "ignorar ficheiros especificados via '.gitignore'"
 
-#: builtin/grep.c:832
+#: builtin/grep.c:843
 msgid "recursively search in each submodule"
 msgstr "procurar recursivamente em cada submódulo"
 
-#: builtin/grep.c:835
+#: builtin/grep.c:846
 msgid "show non-matching lines"
 msgstr "mostrar linhas não correspondidas"
 
-#: builtin/grep.c:837
+#: builtin/grep.c:848
 msgid "case insensitive matching"
 msgstr "não diferenciar maiúsculas de minúsculas"
 
-#: builtin/grep.c:839
+#: builtin/grep.c:850
 msgid "match patterns only at word boundaries"
 msgstr "corresponder padrões apenas a palavras"
 
-#: builtin/grep.c:841
+#: builtin/grep.c:852
 msgid "process binary files as text"
 msgstr "processar ficheiros binários como texto"
 
-#: builtin/grep.c:843
+#: builtin/grep.c:854
 msgid "don't match patterns in binary files"
 msgstr "ignorar ficheiros binários"
 
-#: builtin/grep.c:846
+#: builtin/grep.c:857
 msgid "process binary files with textconv filters"
 msgstr "processar ficheiros binários com filtros textconv"
 
-#: builtin/grep.c:848
+#: builtin/grep.c:859
 #, fuzzy
 msgid "search in subdirectories (default)"
 msgstr "eliminar referências soltas (predefinição)"
 
-#: builtin/grep.c:850
+#: builtin/grep.c:861
 msgid "descend at most <depth> levels"
 msgstr "descer no máximo até <profundidade>"
 
-#: builtin/grep.c:854
+#: builtin/grep.c:865
 msgid "use extended POSIX regular expressions"
 msgstr "usar expressões regulares estendidas do POSIX"
 
-#: builtin/grep.c:857
+#: builtin/grep.c:868
 msgid "use basic POSIX regular expressions (default)"
 msgstr "usar expressões regulares básicas do POSIX (predefinição)"
 
-#: builtin/grep.c:860
+#: builtin/grep.c:871
 msgid "interpret patterns as fixed strings"
 msgstr "interpretar padrões como cadeias de caracteres fixas"
 
-#: builtin/grep.c:863
+#: builtin/grep.c:874
 msgid "use Perl-compatible regular expressions"
 msgstr "usar expressões regulares compatíveis com Perl"
 
-#: builtin/grep.c:866
+#: builtin/grep.c:877
 msgid "show line numbers"
 msgstr "mostrar números de linha"
 
-#: builtin/grep.c:867
+#: builtin/grep.c:878
 #, fuzzy
 msgid "show column number of first match"
 msgstr "mostrar apenas nomes de ficheiro sem correspondência"
 
-#: builtin/grep.c:868
+#: builtin/grep.c:879
 msgid "don't show filenames"
 msgstr "não mostrar nomes de ficheiro"
 
-#: builtin/grep.c:869
+#: builtin/grep.c:880
 msgid "show filenames"
 msgstr "mostrar nomes de ficheiro"
 
-#: builtin/grep.c:871
+#: builtin/grep.c:882
 msgid "show filenames relative to top directory"
 msgstr "mostrar nomes de ficheiro relativamente ao diretório superior"
 
-#: builtin/grep.c:873
+#: builtin/grep.c:884
 msgid "show only filenames instead of matching lines"
 msgstr "mostrar apenas nomes de ficheiro em vez de linhas correspondidas"
 
-#: builtin/grep.c:875
+#: builtin/grep.c:886
 msgid "synonym for --files-with-matches"
 msgstr "sinónimo de --files-with-matches"
 
-#: builtin/grep.c:878
+#: builtin/grep.c:889
 msgid "show only the names of files without match"
 msgstr "mostrar apenas nomes de ficheiro sem correspondência"
 
-#: builtin/grep.c:880
+#: builtin/grep.c:891
 msgid "print NUL after filenames"
 msgstr "imprimir NUL depois dos nomes de ficheiro"
 
-#: builtin/grep.c:883
+#: builtin/grep.c:894
 #, fuzzy
 msgid "show only matching parts of a line"
 msgstr "mostrar linhas não correspondidas"
 
-#: builtin/grep.c:885
+#: builtin/grep.c:896
 msgid "show the number of matches instead of matching lines"
 msgstr "mostrar o número de correspondências em vez das linha correspondidas"
 
-#: builtin/grep.c:886
+#: builtin/grep.c:897
 msgid "highlight matches"
 msgstr "realçar correspondências"
 
-#: builtin/grep.c:888
+#: builtin/grep.c:899
 msgid "print empty line between matches from different files"
 msgstr ""
 "imprimir uma linha em branco entre correspondências de diferentes ficheiros"
 
-#: builtin/grep.c:890
+#: builtin/grep.c:901
 msgid "show filename only once above matches from same file"
 msgstr ""
 "mostrar só uma vez o nome do ficheiro acima das correspondências dentro do "
 "mesmo ficheiro"
 
-#: builtin/grep.c:893
+#: builtin/grep.c:904
 msgid "show <n> context lines before and after matches"
 msgstr "mostrar <n> linhas de contexto antes e depois das correspondências"
 
-#: builtin/grep.c:896
+#: builtin/grep.c:907
 msgid "show <n> context lines before matches"
 msgstr "mostrar <n> linhas de contexto antes das correspondências"
 
-#: builtin/grep.c:898
+#: builtin/grep.c:909
 msgid "show <n> context lines after matches"
 msgstr "mostrar <n> linhas de contexto depois das correspondências"
 
-#: builtin/grep.c:900
+#: builtin/grep.c:911
 msgid "use <n> worker threads"
 msgstr "usar <n> threads de trabalho"
 
-#: builtin/grep.c:901
+#: builtin/grep.c:912
 msgid "shortcut for -C NUM"
 msgstr "atalho para -C NUM"
 
-#: builtin/grep.c:904
+#: builtin/grep.c:915
 msgid "show a line with the function name before matches"
 msgstr "mostrar uma linha com o nome da função antes das correspondências"
 
-#: builtin/grep.c:906
+#: builtin/grep.c:917
 msgid "show the surrounding function"
 msgstr "mostrar a função circundante"
 
-#: builtin/grep.c:909
+#: builtin/grep.c:920
 msgid "read patterns from file"
 msgstr "ler padrões do ficheiro"
 
-#: builtin/grep.c:911
+#: builtin/grep.c:922
 msgid "match <pattern>"
 msgstr "procurar <padrão>"
 
-#: builtin/grep.c:913
+#: builtin/grep.c:924
 msgid "combine patterns specified with -e"
 msgstr "combinar padrões especificados com -e"
 
-#: builtin/grep.c:925
+#: builtin/grep.c:936
 msgid "indicate hit with exit status without output"
 msgstr "indicar padrão encontrado no valor de saída, mas não imprimir"
 
-#: builtin/grep.c:927
+#: builtin/grep.c:938
 msgid "show only matches from files that match all patterns"
 msgstr ""
 "mostrar apenas correspondências de ficheiro que tenham todos os padrões"
 
-#: builtin/grep.c:929
+#: builtin/grep.c:940
 msgid "show parse tree for grep expression"
 msgstr "mostrar árvore de analise da expressões grep"
 
-#: builtin/grep.c:933
+#: builtin/grep.c:944
 msgid "pager"
 msgstr "paginador"
 
-#: builtin/grep.c:933
+#: builtin/grep.c:944
 msgid "show matching files in the pager"
 msgstr "mostrar ficheiros com correspondências no paginador"
 
-#: builtin/grep.c:937
+#: builtin/grep.c:948
 msgid "allow calling of grep(1) (ignored by this build)"
 msgstr "permitir invocar grep(1) (ignorado nesta compilação)"
 
-#: builtin/grep.c:1004
+#: builtin/grep.c:1014
 #, fuzzy
 msgid "no pattern given"
-msgstr "nenhum padrão fornecido."
+msgstr "fornecido padrão nenhum"
 
-#: builtin/grep.c:1040
+#: builtin/grep.c:1050
 msgid "--no-index or --untracked cannot be used with revs"
 msgstr "--no-index ou --untracked não podem ser usados em revisões"
 
-#: builtin/grep.c:1048
+#: builtin/grep.c:1058
 #, c-format
 msgid "unable to resolve revision: %s"
 msgstr "não foi possível resolver revisão: %s"
 
-#: builtin/grep.c:1078
+#: builtin/grep.c:1088
 #, fuzzy
 msgid "--untracked not supported with --recurse-submodules"
 msgstr "opção não suportada com --recurse-submodules."
 
-#: builtin/grep.c:1082
+#: builtin/grep.c:1092
 msgid "invalid option combination, ignoring --threads"
 msgstr ""
 
-#: builtin/grep.c:1085 builtin/pack-objects.c:3655
+#: builtin/grep.c:1095 builtin/pack-objects.c:3655
 #, fuzzy
 msgid "no threads support, ignoring --threads"
 msgstr "sem suporte de threads, %s ignorado"
 
-#: builtin/grep.c:1088 builtin/index-pack.c:1573 builtin/pack-objects.c:2933
+#: builtin/grep.c:1098 builtin/index-pack.c:1573 builtin/pack-objects.c:2933
 #, c-format
 msgid "invalid number of threads specified (%d)"
 msgstr "número de threads especificado inválido (%d)"
 
-#: builtin/grep.c:1122
+#: builtin/grep.c:1132
 msgid "--open-files-in-pager only works on the worktree"
 msgstr "--open-files-in-pager só funciona na árvore de trabalho"
 
-#: builtin/grep.c:1148
+#: builtin/grep.c:1158
 #, fuzzy
 msgid "--cached or --untracked cannot be used with --no-index"
 msgstr "--cached ou --untracked não podem ser usados com --no-index."
 
-#: builtin/grep.c:1154
+#: builtin/grep.c:1164
 #, fuzzy
 msgid "--[no-]exclude-standard cannot be used for tracked contents"
 msgstr ""
 "--[no-]exclude-standard não podem ser usados em conteúdos não controlados."
 
-#: builtin/grep.c:1162
+#: builtin/grep.c:1172
 #, fuzzy
 msgid "both --cached and trees are given"
 msgstr "--cached e árvores foram fornecidos simultaneamente."
@@ -15605,8 +15846,8 @@ msgid ""
 "'%s': cmd for supported man viewer.\n"
 "Please consider using 'man.<tool>.path' instead."
 msgstr ""
-"'%s': comando de visualizador de manual suportado.\n"
-"Considere usar 'man.<ferramenta>.path'."
+"'%s': comando para visualizador de man.\n"
+"Considera usar 'man.<ferramenta>.path' invés."
 
 #: builtin/help.c:436
 #, c-format
@@ -15615,11 +15856,11 @@ msgstr "'%s': visualizador de manual desconhecido."
 
 #: builtin/help.c:453
 msgid "no man viewer handled the request"
-msgstr "nenhum visualizador de manual atendeu o pedido"
+msgstr "atendeu ao pedido visualizador de manual nenhum"
 
 #: builtin/help.c:461
 msgid "no info viewer handled the request"
-msgstr "nenhum visualizador de info atendeu o pedido"
+msgstr "atendeu ao pedido visualizador de info nenhum"
 
 #: builtin/help.c:520 builtin/help.c:531 git.c:337
 #, fuzzy, c-format
@@ -15682,7 +15923,7 @@ msgstr "pacote demasiado grande para a definição atual de off_t"
 msgid "pack exceeds maximum allowed size"
 msgstr "o pacote excede o tamanho máximo permitido"
 
-#: builtin/index-pack.c:342 builtin/repack.c:254
+#: builtin/index-pack.c:342 builtin/repack.c:286
 #, c-format
 msgid "unable to create '%s'"
 msgstr "não foi possível criar '%s'"
@@ -16011,22 +16252,22 @@ msgstr ""
 #: builtin/init-db.c:474
 #, c-format
 msgid "Reinitialized existing shared Git repository in %s%s\n"
-msgstr "Repositório Git partilhado e existente reinicializado em %s%s\n"
+msgstr "Reiniciei respositório partilhado existente de Git em %s%s\n"
 
 #: builtin/init-db.c:475
 #, c-format
 msgid "Reinitialized existing Git repository in %s%s\n"
-msgstr "Repositório Git existem reinicializado em %s%s\n"
+msgstr "Reiniciei repositório existente de Git em %s%s\n"
 
 #: builtin/init-db.c:479
 #, c-format
 msgid "Initialized empty shared Git repository in %s%s\n"
-msgstr "Repositório Git vazio e partilhado inicializado em %s%s\n"
+msgstr "Iniciei repositório vazio partilhado de Git em %s%s\n"
 
 #: builtin/init-db.c:480
 #, c-format
 msgid "Initialized empty Git repository in %s%s\n"
-msgstr "Repositório Git vazio inicializado em %s%s\n"
+msgstr "Iniciei repositório vazio de Git em %s%s\n"
 
 #: builtin/init-db.c:529
 msgid ""
@@ -16159,136 +16400,139 @@ msgstr "--name-only não faz sentido"
 
 #: builtin/interpret-trailers.c:133
 msgid "no input file given for in-place editing"
-msgstr "nenhum ficheiro de entrada fornecido para edição no local"
+msgstr "fornecido para edição no local ficheiro de entrada nenhum"
 
-#: builtin/log.c:56
+#: builtin/log.c:58
 msgid "git log [<options>] [<revision-range>] [[--] <path>...]"
 msgstr "git log [<opções>] [<intervalo-de-revisões>] [[--] <caminho>...]"
 
-#: builtin/log.c:57
+#: builtin/log.c:59
 msgid "git show [<options>] <object>..."
 msgstr "git show [<opções>] <objeto>..."
 
-#: builtin/log.c:110
+#: builtin/log.c:112
 #, c-format
 msgid "invalid --decorate option: %s"
 msgstr "opção --decorate inválida: %s"
 
-#: builtin/log.c:177
+#: builtin/log.c:179
 msgid "show source"
 msgstr "mostrar origem"
 
-#: builtin/log.c:178
+#: builtin/log.c:180
 msgid "Use mail map file"
 msgstr "usar ficheiro de mapeamento de correio"
 
-#: builtin/log.c:181
+#: builtin/log.c:183
 #, fuzzy
 msgid "only decorate refs that match <pattern>"
 msgstr "usar apenas referência que correspondam ao <padrão>"
 
-#: builtin/log.c:183
+#: builtin/log.c:185
 #, fuzzy
 msgid "do not decorate refs that match <pattern>"
 msgstr "não considerar tags que correspondam ao <padrão>"
 
-#: builtin/log.c:184
+#: builtin/log.c:186
 msgid "decorate options"
 msgstr "opções de decoração"
 
-#: builtin/log.c:187
-msgid "Process line range n,m in file, counting from 1"
-msgstr "processar intervalo de linhas n,m, a contar a partir de 1"
+#: builtin/log.c:189
+msgid ""
+"Trace the evolution of line range <start>,<end> or function :<funcname> in "
+"<file>"
+msgstr ""
+
+#: builtin/log.c:212
+#, fuzzy
+msgid "-L<range>:<file> cannot be used with pathspec"
+msgstr "%s: %s não pode ser usado com %s"
 
-#: builtin/log.c:297
+#: builtin/log.c:302
 #, c-format
 msgid "Final output: %d %s\n"
 msgstr "Resultado final: %d %s\n"
 
-#: builtin/log.c:555
+#: builtin/log.c:564
 #, c-format
 msgid "git show %s: bad file"
 msgstr "git show %s: ficheiro incorreto"
 
-#: builtin/log.c:570 builtin/log.c:665
+#: builtin/log.c:579 builtin/log.c:674
 #, fuzzy, c-format
 msgid "could not read object %s"
 msgstr "Não foi possível ler o objeto %s"
 
-#: builtin/log.c:690
+#: builtin/log.c:699
 #, fuzzy, c-format
 msgid "unknown type: %d"
 msgstr "Tipo desconhecido: %d"
 
-#: builtin/log.c:839
+#: builtin/log.c:848
 #, c-format
 msgid "%s: invalid cover from description mode"
 msgstr ""
 
-#: builtin/log.c:846
+#: builtin/log.c:855
 msgid "format.headers without value"
 msgstr "format.headers sem valor"
 
-#: builtin/log.c:965
-msgid "name of output directory is too long"
-msgstr "o nome do diretório de saída é demasiado longo"
-
-#: builtin/log.c:981
+#: builtin/log.c:984
 #, fuzzy, c-format
 msgid "cannot open patch file %s"
 msgstr "Não é possível abrir o ficheiro de patch %s"
 
-#: builtin/log.c:998
+#: builtin/log.c:1001
 #, fuzzy
 msgid "need exactly one range"
 msgstr "É necessário exatamente um intervalo."
 
-#: builtin/log.c:1008
+#: builtin/log.c:1011
 #, fuzzy
 msgid "not a range"
 msgstr "Não é um intervalo."
 
-#: builtin/log.c:1172
+#: builtin/log.c:1175
 #, fuzzy
 msgid "cover letter needs email format"
 msgstr "A carta de apresentação precisa de um formato de e-mail"
 
-#: builtin/log.c:1178
+#: builtin/log.c:1181
 #, fuzzy
 msgid "failed to create cover-letter file"
 msgstr "Falha ao criar os ficheiros de saída"
 
-#: builtin/log.c:1259
+#: builtin/log.c:1262
 #, c-format
 msgid "insane in-reply-to: %s"
 msgstr "in-reply-to incorreto: %s"
 
-#: builtin/log.c:1286
+#: builtin/log.c:1289
 msgid "git format-patch [<options>] [<since> | <revision-range>]"
 msgstr "git format-patch [<opções>] [<desde> | <intervalo-de-revisões>]"
 
-#: builtin/log.c:1344
+#: builtin/log.c:1347
 #, fuzzy
 msgid "two output directories?"
 msgstr "Dois diretórios de saída?"
 
-#: builtin/log.c:1495 builtin/log.c:2301 builtin/log.c:2303 builtin/log.c:2315
+#: builtin/log.c:1498 builtin/log.c:2318 builtin/log.c:2320 builtin/log.c:2332
 #, fuzzy, c-format
 msgid "unknown commit %s"
 msgstr "Commit desconhecido %s"
 
-#: builtin/log.c:1506 builtin/replace.c:58 builtin/replace.c:207
+#: builtin/log.c:1509 builtin/replace.c:58 builtin/replace.c:207
 #: builtin/replace.c:210
 #, fuzzy, c-format
 msgid "failed to resolve '%s' as a valid ref"
 msgstr "falha ao resolver '%s' como uma referência válida."
 
-#: builtin/log.c:1515
+#: builtin/log.c:1518
 #, fuzzy
 msgid "could not find exact merge base"
 msgstr "Não foi possível encontrar a base exata de integração."
 
-#: builtin/log.c:1525
+#: builtin/log.c:1528
 #, fuzzy
 msgid ""
 "failed to get upstream, if you want to record base commit automatically,\n"
@@ -16300,291 +16544,297 @@ msgstr ""
 "use branch --set-upstream-to para seguir um ramo remoto.\n"
 "Ou pode especificar o commit base com --base=<base-commit-id> manualmente."
 
-#: builtin/log.c:1548
+#: builtin/log.c:1551
 #, fuzzy
 msgid "failed to find exact merge base"
 msgstr "Falha ao procurar base exata de integração"
 
-#: builtin/log.c:1565
+#: builtin/log.c:1568
 msgid "base commit should be the ancestor of revision list"
 msgstr "o commit base deve ser o antecessor da lista de revisões"
 
-#: builtin/log.c:1575
+#: builtin/log.c:1578
 msgid "base commit shouldn't be in revision list"
 msgstr "o commit base não deve fazer parte da lista de revisões"
 
-#: builtin/log.c:1633
+#: builtin/log.c:1636
 msgid "cannot get patch id"
 msgstr "não é possível obter o id do patch"
 
-#: builtin/log.c:1690
+#: builtin/log.c:1693
 #, fuzzy
 msgid "failed to infer range-diff origin of current series"
 msgstr "falha ao guardar ligação à referência de notas atual (%s)"
 
-#: builtin/log.c:1692
+#: builtin/log.c:1695
 #, c-format
 msgid "using '%s' as range-diff origin of current series"
 msgstr ""
 
-#: builtin/log.c:1736
+#: builtin/log.c:1739
 msgid "use [PATCH n/m] even with a single patch"
 msgstr "usar [PATCH n/m] mesmo com um único patch"
 
-#: builtin/log.c:1739
+#: builtin/log.c:1742
 msgid "use [PATCH] even with multiple patches"
 msgstr "usar [PATCH] mesmo com múltiplos patches"
 
-#: builtin/log.c:1743
+#: builtin/log.c:1746
 msgid "print patches to standard out"
 msgstr "imprimir patches para a saída padrão"
 
-#: builtin/log.c:1745
+#: builtin/log.c:1748
 msgid "generate a cover letter"
 msgstr "gerar uma carta de apresentação"
 
-#: builtin/log.c:1747
+#: builtin/log.c:1750
 msgid "use simple number sequence for output file names"
 msgstr ""
 "usar uma sequência de números simples para denominar os ficheiros gerados"
 
-#: builtin/log.c:1748
+#: builtin/log.c:1751
 msgid "sfx"
 msgstr "sfx"
 
-#: builtin/log.c:1749
+#: builtin/log.c:1752
 msgid "use <sfx> instead of '.patch'"
 msgstr "usar <sfx> em vez de '.patch'"
 
-#: builtin/log.c:1751
+#: builtin/log.c:1754
 msgid "start numbering patches at <n> instead of 1"
 msgstr "começar a numerar os patches em <n> em vez de 1"
 
-#: builtin/log.c:1753
+#: builtin/log.c:1756
 msgid "mark the series as Nth re-roll"
 msgstr "marcar a série como a n-ésima reiteração"
 
-#: builtin/log.c:1755
+#: builtin/log.c:1758
+#, fuzzy
+msgid "max length of output filename"
+msgstr "tamanho máximo de cada ficheiro de pacote gerado"
+
+#: builtin/log.c:1760
 msgid "Use [RFC PATCH] instead of [PATCH]"
 msgstr "Usar [RFC PATCH] em vez de [PATCH]"
 
-#: builtin/log.c:1758
+#: builtin/log.c:1763
 msgid "cover-from-description-mode"
 msgstr ""
 
-#: builtin/log.c:1759
+#: builtin/log.c:1764
 msgid "generate parts of a cover letter based on a branch's description"
 msgstr ""
 
-#: builtin/log.c:1761
+#: builtin/log.c:1766
 msgid "Use [<prefix>] instead of [PATCH]"
 msgstr "usar [<prefixo>] em vez de [PATCH]"
 
-#: builtin/log.c:1764
+#: builtin/log.c:1769
 msgid "store resulting files in <dir>"
 msgstr "guardar os ficheiros resultantes em <dir>"
 
-#: builtin/log.c:1767
+#: builtin/log.c:1772
 msgid "don't strip/add [PATCH]"
 msgstr "não tirar/inserir [PATCH]"
 
-#: builtin/log.c:1770
+#: builtin/log.c:1775
 msgid "don't output binary diffs"
 msgstr "não gerar diffs binários"
 
-#: builtin/log.c:1772
+#: builtin/log.c:1777
 msgid "output all-zero hash in From header"
 msgstr "preencher o cabeçalho From com hash de zeros"
 
-#: builtin/log.c:1774
+#: builtin/log.c:1779
 msgid "don't include a patch matching a commit upstream"
 msgstr "não incluir um patch que coincida com um commit a montante"
 
-#: builtin/log.c:1776
+#: builtin/log.c:1781
 msgid "show patch format instead of default (patch + stat)"
 msgstr ""
 "mostrar no formato de patch em vez de no formato por omissão (patch + stat)"
 
-#: builtin/log.c:1778
+#: builtin/log.c:1783
 msgid "Messaging"
 msgstr "Mensagem"
 
-#: builtin/log.c:1779
+#: builtin/log.c:1784
 msgid "header"
 msgstr "cabeçalho"
 
-#: builtin/log.c:1780
+#: builtin/log.c:1785
 msgid "add email header"
 msgstr "adicionar cabeçalho de e-mail"
 
-#: builtin/log.c:1781 builtin/log.c:1782
+#: builtin/log.c:1786 builtin/log.c:1787
 msgid "email"
 msgstr "e-mail"
 
-#: builtin/log.c:1781
+#: builtin/log.c:1786
 msgid "add To: header"
 msgstr "adicionar cabeçalho To:"
 
-#: builtin/log.c:1782
+#: builtin/log.c:1787
 msgid "add Cc: header"
 msgstr "adicionar cabeçalho Cc:"
 
-#: builtin/log.c:1783
+#: builtin/log.c:1788
 msgid "ident"
 msgstr "identidade"
 
-#: builtin/log.c:1784
+#: builtin/log.c:1789
 msgid "set From address to <ident> (or committer ident if absent)"
 msgstr ""
 "definir o endereço From como <identidade> (ou como identidade do committer "
 "se não indicado)"
 
-#: builtin/log.c:1786
+#: builtin/log.c:1791
 msgid "message-id"
 msgstr "id-mensagem"
 
-#: builtin/log.c:1787
+#: builtin/log.c:1792
 msgid "make first mail a reply to <message-id>"
 msgstr "usar o primeiro email para responder a <id-mensagem>"
 
-#: builtin/log.c:1788 builtin/log.c:1791
+#: builtin/log.c:1793 builtin/log.c:1796
 msgid "boundary"
 msgstr "limite"
 
-#: builtin/log.c:1789
+#: builtin/log.c:1794
 msgid "attach the patch"
 msgstr "anexar o patch"
 
-#: builtin/log.c:1792
+#: builtin/log.c:1797
 msgid "inline the patch"
 msgstr "incorporar o patch"
 
-#: builtin/log.c:1796
+#: builtin/log.c:1801
 msgid "enable message threading, styles: shallow, deep"
 msgstr "ativar mensagens por tópicos, estilos: shallow (raso), deep (profundo)"
 
-#: builtin/log.c:1798
+#: builtin/log.c:1803
 msgid "signature"
 msgstr "assinatura"
 
-#: builtin/log.c:1799
+#: builtin/log.c:1804
 msgid "add a signature"
 msgstr "adicionar uma assinatura"
 
-#: builtin/log.c:1800
+#: builtin/log.c:1805
 msgid "base-commit"
 msgstr "commit-base"
 
-#: builtin/log.c:1801
+#: builtin/log.c:1806
 msgid "add prerequisite tree info to the patch series"
 msgstr "adicionar informação pré-requisito da árvore à série de patches"
 
-#: builtin/log.c:1804
+#: builtin/log.c:1809
 msgid "add a signature from a file"
 msgstr "adicionar uma assinatura de um ficheiro"
 
-#: builtin/log.c:1805
+#: builtin/log.c:1810
 msgid "don't print the patch filenames"
 msgstr "não imprimir os nomes dos ficheiros de patch"
 
-#: builtin/log.c:1807
+#: builtin/log.c:1812
 #, fuzzy
 msgid "show progress while generating patches"
 msgstr "mostrar medidor de progresso durante a fase de escrita de objetos"
 
-#: builtin/log.c:1809
+#: builtin/log.c:1814
 msgid "show changes against <rev> in cover letter or single patch"
 msgstr ""
 
-#: builtin/log.c:1812
+#: builtin/log.c:1817
 msgid "show changes against <refspec> in cover letter or single patch"
 msgstr ""
 
-#: builtin/log.c:1814
+#: builtin/log.c:1819
 msgid "percentage by which creation is weighted"
 msgstr ""
 
-#: builtin/log.c:1896
+#: builtin/log.c:1905
 #, c-format
 msgid "invalid ident line: %s"
 msgstr "linha de identidade inválida: %s"
 
-#: builtin/log.c:1911
+#: builtin/log.c:1920
 #, fuzzy
 msgid "-n and -k are mutually exclusive"
 msgstr "-n e -k são mutuamente exclusivos."
 
-#: builtin/log.c:1913
+#: builtin/log.c:1922
 #, fuzzy
 msgid "--subject-prefix/--rfc and -k are mutually exclusive"
 msgstr "--subject-prefix/--rfc e -k são mutuamente exclusivos."
 
-#: builtin/log.c:1921
+#: builtin/log.c:1930
 msgid "--name-only does not make sense"
 msgstr "--name-only não faz sentido"
 
-#: builtin/log.c:1923
+#: builtin/log.c:1932
 msgid "--name-status does not make sense"
 msgstr "--name-status não faz sentido"
 
-#: builtin/log.c:1925
+#: builtin/log.c:1934
 msgid "--check does not make sense"
 msgstr "--check não faz sentido"
 
-#: builtin/log.c:1958
-msgid "standard output, or directory, which one?"
-msgstr "saída padrão, ou diretório, qual deles?"
+#: builtin/log.c:1956
+#, fuzzy
+msgid "--stdout, --output, and --output-directory are mutually exclusive"
+msgstr "-b, -B e --detach são mutuamente exclusivos"
 
-#: builtin/log.c:2062
+#: builtin/log.c:2079
 msgid "--interdiff requires --cover-letter or single patch"
 msgstr ""
 
-#: builtin/log.c:2066
+#: builtin/log.c:2083
 msgid "Interdiff:"
 msgstr ""
 
-#: builtin/log.c:2067
+#: builtin/log.c:2084
 #, c-format
 msgid "Interdiff against v%d:"
 msgstr ""
 
-#: builtin/log.c:2073
+#: builtin/log.c:2090
 msgid "--creation-factor requires --range-diff"
 msgstr ""
 
-#: builtin/log.c:2077
+#: builtin/log.c:2094
 msgid "--range-diff requires --cover-letter or single patch"
 msgstr ""
 
-#: builtin/log.c:2085
+#: builtin/log.c:2102
 msgid "Range-diff:"
 msgstr ""
 
-#: builtin/log.c:2086
+#: builtin/log.c:2103
 #, c-format
 msgid "Range-diff against v%d:"
 msgstr ""
 
-#: builtin/log.c:2097
+#: builtin/log.c:2114
 #, c-format
 msgid "unable to read signature file '%s'"
 msgstr "não é possível ler o ficheiro de assinatura '%s'"
 
-#: builtin/log.c:2133
+#: builtin/log.c:2150
 #, fuzzy
 msgid "Generating patches"
 msgstr "falha ao editar patch"
 
-#: builtin/log.c:2177
+#: builtin/log.c:2194
 #, fuzzy
 msgid "failed to create output files"
 msgstr "Falha ao criar os ficheiros de saída"
 
-#: builtin/log.c:2236
+#: builtin/log.c:2253
 msgid "git cherry [-v] [<upstream> [<head> [<limit>]]]"
 msgstr "git cherry [-v] [<ramo-a-montante> [<head> [<limite>]]]"
 
-#: builtin/log.c:2290
+#: builtin/log.c:2307
 #, c-format
 msgid ""
 "Could not find a tracked remote branch, please specify <upstream> manually.\n"
@@ -16717,7 +16967,7 @@ msgstr ""
 msgid "do not print remote URL"
 msgstr "não imprimir URL remoto"
 
-#: builtin/ls-remote.c:60 builtin/ls-remote.c:62 builtin/rebase.c:1392
+#: builtin/ls-remote.c:60 builtin/ls-remote.c:62 builtin/rebase.c:1398
 msgid "exec"
 msgstr "exec"
 
@@ -16903,292 +17153,287 @@ msgstr "não foi possível resolver a referência %s"
 msgid "Merging %s with %s\n"
 msgstr "A integrar %s com %s\n"
 
-#: builtin/merge.c:56
+#: builtin/merge.c:57
 msgid "git merge [<options>] [<commit>...]"
 msgstr "git merge [<opções>] [<commit>...]"
 
-#: builtin/merge.c:57
+#: builtin/merge.c:58
 msgid "git merge --abort"
 msgstr "git merge --abort"
 
-#: builtin/merge.c:58
+#: builtin/merge.c:59
 msgid "git merge --continue"
 msgstr "git merge --continue"
 
-#: builtin/merge.c:120
+#: builtin/merge.c:122
 msgid "switch `m' requires a value"
 msgstr "a opção 'm' requer um valor"
 
-#: builtin/merge.c:143
+#: builtin/merge.c:145
 #, fuzzy, c-format
 msgid "option `%s' requires a value"
 msgstr "a opção '%s' requer um valor"
 
-#: builtin/merge.c:189
+#: builtin/merge.c:198
 #, c-format
 msgid "Could not find merge strategy '%s'.\n"
 msgstr "Estratégia de integração '%s' não encontrada.\n"
 
-#: builtin/merge.c:190
+#: builtin/merge.c:199
 #, c-format
 msgid "Available strategies are:"
 msgstr "Estratégias disponíveis:"
 
-#: builtin/merge.c:195
+#: builtin/merge.c:204
 #, c-format
 msgid "Available custom strategies are:"
 msgstr "Estratégias personalizadas disponíveis:"
 
-#: builtin/merge.c:246 builtin/pull.c:133
+#: builtin/merge.c:255 builtin/pull.c:133
 msgid "do not show a diffstat at the end of the merge"
 msgstr "não apresentar um diffstat ao fim da integração"
 
-#: builtin/merge.c:249 builtin/pull.c:136
+#: builtin/merge.c:258 builtin/pull.c:136
 msgid "show a diffstat at the end of the merge"
 msgstr "mostrar um diffstat ao fim da integração"
 
-#: builtin/merge.c:250 builtin/pull.c:139
+#: builtin/merge.c:259 builtin/pull.c:139
 msgid "(synonym to --stat)"
 msgstr "(sinónimo de --stat)"
 
-#: builtin/merge.c:252 builtin/pull.c:142
+#: builtin/merge.c:261 builtin/pull.c:142
 msgid "add (at most <n>) entries from shortlog to merge commit message"
 msgstr ""
 "adicionar (no máximo <n>) entradas do shortlog à mensagem de commit da "
 "integração"
 
-#: builtin/merge.c:255 builtin/pull.c:148
+#: builtin/merge.c:264 builtin/pull.c:148
 msgid "create a single commit instead of doing a merge"
 msgstr "criar um único commit em vez de realizar uma integração"
 
-#: builtin/merge.c:257 builtin/pull.c:151
+#: builtin/merge.c:266 builtin/pull.c:151
 msgid "perform a commit if the merge succeeds (default)"
 msgstr "realizar um commit se a integração for bem sucedida (predefinição)"
 
-#: builtin/merge.c:259 builtin/pull.c:154
+#: builtin/merge.c:268 builtin/pull.c:154
 msgid "edit message before committing"
 msgstr "editar a mensagem antes de submeter"
 
-#: builtin/merge.c:261
+#: builtin/merge.c:270
 msgid "allow fast-forward (default)"
 msgstr "permitir avanço rápido (predefinição)"
 
-#: builtin/merge.c:263 builtin/pull.c:161
+#: builtin/merge.c:272 builtin/pull.c:161
 msgid "abort if fast-forward is not possible"
 msgstr "abortar se não é possível efetuar avanço rápido"
 
-#: builtin/merge.c:267 builtin/pull.c:164
+#: builtin/merge.c:276 builtin/pull.c:164
 msgid "verify that the named commit has a valid GPG signature"
 msgstr "verificar se o commit tem uma assinatura GPG válida"
 
-#: builtin/merge.c:268 builtin/notes.c:787 builtin/pull.c:168
-#: builtin/rebase.c:533 builtin/rebase.c:1406 builtin/revert.c:114
+#: builtin/merge.c:277 builtin/notes.c:787 builtin/pull.c:168
+#: builtin/rebase.c:539 builtin/rebase.c:1412 builtin/revert.c:114
 msgid "strategy"
 msgstr "estratégia"
 
-#: builtin/merge.c:269 builtin/pull.c:169
+#: builtin/merge.c:278 builtin/pull.c:169
 msgid "merge strategy to use"
 msgstr "estratégia de integração a usar"
 
-#: builtin/merge.c:270 builtin/pull.c:172
+#: builtin/merge.c:279 builtin/pull.c:172
 msgid "option=value"
 msgstr "opção=valor"
 
-#: builtin/merge.c:271 builtin/pull.c:173
+#: builtin/merge.c:280 builtin/pull.c:173
 msgid "option for selected merge strategy"
 msgstr "opções da estratégia de integração selecionada"
 
-#: builtin/merge.c:273
+#: builtin/merge.c:282
 msgid "merge commit message (for a non-fast-forward merge)"
 msgstr "mensagem de commit (de integração não suscetível a avanço rápido)"
 
-#: builtin/merge.c:280
+#: builtin/merge.c:289
 msgid "abort the current in-progress merge"
 msgstr "abortar integração em curso"
 
-#: builtin/merge.c:282
+#: builtin/merge.c:291
 #, fuzzy
 msgid "--abort but leave index and working tree alone"
 msgstr "repor HEAD, índice e árvore de trabalho"
 
-#: builtin/merge.c:284
+#: builtin/merge.c:293
 msgid "continue the current in-progress merge"
 msgstr "continuar a integração em curso"
 
-#: builtin/merge.c:286 builtin/pull.c:180
+#: builtin/merge.c:295 builtin/pull.c:180
 msgid "allow merging unrelated histories"
 msgstr "permitir integração de históricos não relacionados"
 
-#: builtin/merge.c:293
+#: builtin/merge.c:302
 #, fuzzy
 msgid "bypass pre-merge-commit and commit-msg hooks"
 msgstr "ignorar pre-commit e commit-msg hooks"
 
-#: builtin/merge.c:310
+#: builtin/merge.c:319
 msgid "could not run stash."
 msgstr "não foi possível executar o comando stash."
 
-#: builtin/merge.c:315
+#: builtin/merge.c:324
 msgid "stash failed"
 msgstr "falha ao executar o comando stash"
 
-#: builtin/merge.c:320
+#: builtin/merge.c:329
 #, c-format
 msgid "not a valid object: %s"
 msgstr "nome de objeto inválido: %s"
 
-#: builtin/merge.c:342 builtin/merge.c:359
+#: builtin/merge.c:351 builtin/merge.c:368
 msgid "read-tree failed"
 msgstr "falha ao executar o comando read-tree"
 
-#: builtin/merge.c:389
+#: builtin/merge.c:398
 msgid " (nothing to squash)"
 msgstr " (não há nada para esmagar)"
 
-#: builtin/merge.c:400
+#: builtin/merge.c:409
 #, c-format
 msgid "Squash commit -- not updating HEAD\n"
 msgstr "Commit esmagado -- HEAD não atualizada\n"
 
-#: builtin/merge.c:450
+#: builtin/merge.c:459
 #, c-format
 msgid "No merge message -- not updating HEAD\n"
 msgstr "Nenhuma mensagem de integração -- HEAD não atualizada\n"
 
-#: builtin/merge.c:501
+#: builtin/merge.c:510
 #, c-format
 msgid "'%s' does not point to a commit"
 msgstr "'%s' não aponta para um commit"
 
-#: builtin/merge.c:588
+#: builtin/merge.c:597
 #, c-format
 msgid "Bad branch.%s.mergeoptions string: %s"
 msgstr "Valor de branch.%s.mergeoptions incorreto: %s"
 
-#: builtin/merge.c:713
+#: builtin/merge.c:723
 msgid "Not handling anything other than two heads merge."
 msgstr "Não se processa outra coisa senão incorporação de duas cabeças."
 
-#: builtin/merge.c:726
+#: builtin/merge.c:736
 #, c-format
 msgid "Unknown option for merge-recursive: -X%s"
 msgstr "Opção desconhecida de merge-recursive: -X%s"
 
-#: builtin/merge.c:741
+#: builtin/merge.c:755 t/helper/test-fast-rebase.c:209
 #, c-format
 msgid "unable to write %s"
 msgstr "não foi possível escrever %s"
 
-#: builtin/merge.c:793
+#: builtin/merge.c:807
 #, c-format
 msgid "Could not read from '%s'"
 msgstr "Não foi possível ler '%s'"
 
-#: builtin/merge.c:802
+#: builtin/merge.c:816
 #, c-format
 msgid "Not committing merge; use 'git commit' to complete the merge.\n"
-msgstr ""
-"Commit de integração não realizado; use 'git commit' para concluir a "
-"integração.\n"
+msgstr "Usa 'git commit' para completar o merge. Committando merge nenhum.\n"
 
-#: builtin/merge.c:808
+#: builtin/merge.c:822
 #, fuzzy
 msgid ""
 "Please enter a commit message to explain why this merge is necessary,\n"
 "especially if it merges an updated upstream into a topic branch.\n"
 "\n"
 msgstr ""
-"Introduza uma mensagem de commit, explicando por que esta integração é "
-"necessário,\n"
-"sobretudo se incorpora um ramo a montante atualizado, num ramo tópico.\n"
+"Introduza uma mensagem de commit, explicando o porquê desta integração\n"
+"ser necessária, especialmente se é merge de updated stream para topic "
+"branch.\n"
 "\n"
-"Linhas começadas com '%c' são ignoradas e uma mensagem vazia\n"
-"aborta o commit.\n"
 
-#: builtin/merge.c:813
+#: builtin/merge.c:827
 #, fuzzy
 msgid "An empty message aborts the commit.\n"
-msgstr "editar a mensagem antes de submeter"
+msgstr "Uma mensagem vazia aborta o commit.\n"
 
-#: builtin/merge.c:816
+#: builtin/merge.c:830
 #, fuzzy, c-format
 msgid ""
 "Lines starting with '%c' will be ignored, and an empty message aborts\n"
 "the commit.\n"
 msgstr ""
-"Introduza a mensagem de commit das suas alterações.\n"
-"Linhas começadas com '%c' serão ignoradas, e uma mensagem vazia\n"
-"aborta o commit.\n"
+"Linhas começadas com '%c' são ignoradas, e uma messagem vazia aborta\n"
+"o commit.\n"
 
-#: builtin/merge.c:869
+#: builtin/merge.c:883
 msgid "Empty commit message."
-msgstr "Mensagem de commit vazia."
+msgstr "Mensagem commit vazia."
 
-#: builtin/merge.c:884
+#: builtin/merge.c:898
 #, c-format
 msgid "Wonderful.\n"
 msgstr "Maravilhoso.\n"
 
-#: builtin/merge.c:945
+#: builtin/merge.c:959
 #, c-format
 msgid "Automatic merge failed; fix conflicts and then commit the result.\n"
 msgstr ""
-"Falha ao realizar integração automática; corrija os conflitos e submeta o "
+"Merge automático falhou; resolve os conflitos e depois podes commitar o "
 "resultado.\n"
 
-#: builtin/merge.c:984
+#: builtin/merge.c:998
 msgid "No current branch."
 msgstr "Nenhum ramo atual."
 
-#: builtin/merge.c:986
+#: builtin/merge.c:1000
 msgid "No remote for the current branch."
 msgstr "Não há um remoto para o ramo atual."
 
-#: builtin/merge.c:988
+#: builtin/merge.c:1002
 msgid "No default upstream defined for the current branch."
-msgstr "Não está definido nenhum ramo a montante para o ramo atual."
+msgstr "Ramo atual sem upstream default definido."
 
-#: builtin/merge.c:993
+#: builtin/merge.c:1007
 #, c-format
 msgid "No remote-tracking branch for %s from %s"
 msgstr "Nenhum ramo de monitorização remoto seguido por %s de %s"
 
-#: builtin/merge.c:1050
+#: builtin/merge.c:1064
 #, c-format
 msgid "Bad value '%s' in environment '%s'"
 msgstr "Valor '%s' incorreto no ambiente '%s'"
 
-#: builtin/merge.c:1153
+#: builtin/merge.c:1167
 #, c-format
 msgid "not something we can merge in %s: %s"
 msgstr "não se pode integrar em %s: %s"
 
-#: builtin/merge.c:1187
+#: builtin/merge.c:1201
 msgid "not something we can merge"
 msgstr "não se pode integrar"
 
-#: builtin/merge.c:1291
+#: builtin/merge.c:1311
 msgid "--abort expects no arguments"
 msgstr "--abort não leva argumentos"
 
-#: builtin/merge.c:1295
+#: builtin/merge.c:1315
 msgid "There is no merge to abort (MERGE_HEAD missing)."
-msgstr "Não há nenhuma integração para se abortar (MERGE_HEAD não presente)."
+msgstr "Há junção nenhuma para abortar (MERGE_HEAD faltando)."
 
-#: builtin/merge.c:1313
+#: builtin/merge.c:1333
 #, fuzzy
 msgid "--quit expects no arguments"
 msgstr "--abort não leva argumentos"
 
-#: builtin/merge.c:1326
+#: builtin/merge.c:1346
 msgid "--continue expects no arguments"
 msgstr "--continue não leva argumentos"
 
-#: builtin/merge.c:1330
+#: builtin/merge.c:1350
 msgid "There is no merge in progress (MERGE_HEAD missing)."
-msgstr "Não há nenhuma integração em curso (MERGE_HEAD não presente)."
+msgstr "Há junção nenhuma em curso (MERGE_HEAD faltando)."
 
-#: builtin/merge.c:1346
+#: builtin/merge.c:1366
 msgid ""
 "You have not concluded your merge (MERGE_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -17196,7 +17441,7 @@ msgstr ""
 "Não concluiu a integração (MERGE_HEAD presente).\n"
 "Submeta as suas alterações antes de integrar."
 
-#: builtin/merge.c:1353
+#: builtin/merge.c:1373
 msgid ""
 "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -17204,106 +17449,104 @@ msgstr ""
 "Cherry-pick não concluído (CHERRY_PICK_HEAD presente).\n"
 "Submeta as suas alterações antes de integrar."
 
-#: builtin/merge.c:1356
+#: builtin/merge.c:1376
 msgid "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists)."
 msgstr "Cherry-pick não concluído (CHERRY_PICK_HEAD presente)."
 
-#: builtin/merge.c:1370
+#: builtin/merge.c:1390
 msgid "You cannot combine --squash with --no-ff."
 msgstr "Não é possível combinar --squash e --no-ff."
 
-#: builtin/merge.c:1372
+#: builtin/merge.c:1392
 #, fuzzy
 msgid "You cannot combine --squash with --commit."
 msgstr "Não é possível combinar --squash e --no-ff."
 
-#: builtin/merge.c:1388
+#: builtin/merge.c:1408
 msgid "No commit specified and merge.defaultToUpstream not set."
 msgstr "Nenhum commit especificado e merge.defaultToUpstream não definido."
 
-#: builtin/merge.c:1405
+#: builtin/merge.c:1425
 msgid "Squash commit into empty head not supported yet"
 msgstr "Esmagar um commit numa cabeça vazia ainda não é suportado"
 
-#: builtin/merge.c:1407
+#: builtin/merge.c:1427
 msgid "Non-fast-forward commit does not make sense into an empty head"
 msgstr ""
 "Não faz sentido submeter de modo não suscetível a avanço rápido, numa cabeça "
 "vazia"
 
-#: builtin/merge.c:1412
+#: builtin/merge.c:1432
 #, c-format
 msgid "%s - not something we can merge"
 msgstr "%s - não é algo se possa integrar"
 
-#: builtin/merge.c:1414
+#: builtin/merge.c:1434
 msgid "Can merge only exactly one commit into empty head"
 msgstr "Só se pode integrar exatamente um commit numa cabeça vazia"
 
-#: builtin/merge.c:1495
+#: builtin/merge.c:1515
 msgid "refusing to merge unrelated histories"
 msgstr "integração de históricos não relacionados recusada"
 
-#: builtin/merge.c:1504
+#: builtin/merge.c:1524
 #, fuzzy
 msgid "Already up to date."
 msgstr "Já está atualizado."
 
-#: builtin/merge.c:1514
+#: builtin/merge.c:1534
 #, c-format
 msgid "Updating %s..%s\n"
-msgstr "A atualizar %s..%s\n"
+msgstr "Atualizando %s..%s\n"
 
-#: builtin/merge.c:1560
+#: builtin/merge.c:1580
 #, c-format
 msgid "Trying really trivial in-index merge...\n"
 msgstr "A tentar integração mesmo trivial no interior do índice...\n"
 
-#: builtin/merge.c:1567
+#: builtin/merge.c:1587
 #, c-format
 msgid "Nope.\n"
 msgstr "Não.\n"
 
-#: builtin/merge.c:1592
+#: builtin/merge.c:1612
 #, fuzzy
 msgid "Already up to date. Yeeah!"
 msgstr "Já está atualizado. Sim!"
 
-#: builtin/merge.c:1598
+#: builtin/merge.c:1618
 msgid "Not possible to fast-forward, aborting."
 msgstr "Não é possível avançar rapidamente, a abortar."
 
-#: builtin/merge.c:1626 builtin/merge.c:1691
+#: builtin/merge.c:1646 builtin/merge.c:1711
 #, c-format
 msgid "Rewinding the tree to pristine...\n"
-msgstr "A recuar a árvore ao seu estado original...\n"
+msgstr "Recuando a árvore para estado pristino...\n"
 
-#: builtin/merge.c:1630
+#: builtin/merge.c:1650
 #, c-format
 msgid "Trying merge strategy %s...\n"
-msgstr "A tentar a estratégia de integração %s...\n"
+msgstr "Tentando estratégia merge %s...\n"
 
-#: builtin/merge.c:1682
+#: builtin/merge.c:1702
 #, c-format
 msgid "No merge strategy handled the merge.\n"
-msgstr "Nenhuma estratégia de integração conseguiu processar a integração.\n"
+msgstr "A junção lidou com estratégia de junção nenhuma.\n"
 
-#: builtin/merge.c:1684
+#: builtin/merge.c:1704
 #, c-format
 msgid "Merge with strategy %s failed.\n"
 msgstr "Falha ao integrar com a estratégia %s.\n"
 
-#: builtin/merge.c:1693
+#: builtin/merge.c:1713
 #, c-format
 msgid "Using the %s to prepare resolving by hand.\n"
 msgstr "A usar %s para preparar resolução manual.\n"
 
-#: builtin/merge.c:1707
+#: builtin/merge.c:1727
 #, c-format
 msgid "Automatic merge went well; stopped before committing as requested\n"
-msgstr ""
-"A integração automática foi bem sucedida; interrompida antes de submeter "
-"como solicitado\n"
+msgstr "Merge automática correu bem; parei antes de commitar como pedido\n"
 
 #: builtin/mktree.c:66
 msgid "git mktree [-z] [--missing] [--batch]"
@@ -17358,7 +17601,7 @@ msgstr "git mv [<opções>] <origem>... <destino>"
 #: builtin/mv.c:83
 #, c-format
 msgid "Directory %s is in index and no submodule?"
-msgstr "O diretório %s está no índice porém nenhum submódulo?"
+msgstr "A pasta %s está no index porém nenhum submódulo?"
 
 #: builtin/mv.c:85
 msgid "Please stage your changes to .gitmodules or stash them to proceed"
@@ -17406,7 +17649,7 @@ msgstr "o diretório de origem está vazio"
 
 #: builtin/mv.c:225
 msgid "not under version control"
-msgstr "não está no controlo de versões"
+msgstr ""
 
 #: builtin/mv.c:227
 msgid "conflicted"
@@ -17443,7 +17686,7 @@ msgstr "%s, origem=%s, destino=%s"
 msgid "Renaming %s to %s\n"
 msgstr "A mudar de nome de %s para %s\n"
 
-#: builtin/mv.c:280 builtin/remote.c:782 builtin/repack.c:518
+#: builtin/mv.c:280 builtin/remote.c:785 builtin/repack.c:484
 #, c-format
 msgid "renaming '%s' failed"
 msgstr "falha ao mudar o nome de '%s'"
@@ -17684,7 +17927,7 @@ msgstr "demasiados parâmetros"
 #: builtin/notes.c:389 builtin/notes.c:678
 #, c-format
 msgid "no note found for object %s."
-msgstr "nenhuma nota encontrada para o objeto %s."
+msgstr "Encontrada nota nenhuma para objeto %s."
 
 #: builtin/notes.c:410 builtin/notes.c:576
 msgid "note contents as a string"
@@ -17722,16 +17965,16 @@ msgstr ""
 #: builtin/notes.c:463 builtin/notes.c:544
 #, c-format
 msgid "Overwriting existing notes for object %s\n"
-msgstr "A substituir as notas existentes do objeto %s\n"
+msgstr "Gravando por cima, notas existentes para objeto %s\n"
 
 #: builtin/notes.c:475 builtin/notes.c:637 builtin/notes.c:902
 #, c-format
 msgid "Removing note for object %s\n"
-msgstr "A remover a nota do objeto %s\n"
+msgstr "Removendo nota para objeto %s\n"
 
 #: builtin/notes.c:497
 msgid "read objects from stdin"
-msgstr "ler objetos da entrada padrão"
+msgstr "ler objetos de stdin"
 
 #: builtin/notes.c:499
 msgid "load rewriting config for <command> (implies --stdin)"
@@ -17875,7 +18118,7 @@ msgstr "Falha ao resolver '%s' numa referência válida."
 #: builtin/notes.c:900
 #, c-format
 msgid "Object %s has no note\n"
-msgstr "O objeto %s não tem nenhuma nota\n"
+msgstr "O objeto %s tem nota nenhuma\n"
 
 #: builtin/notes.c:912
 msgid "attempt to remove non-existent note is not an error"
@@ -17901,7 +18144,7 @@ msgstr "notes-ref"
 msgid "use notes from <notes-ref>"
 msgstr "usar notas de <notes-ref>"
 
-#: builtin/notes.c:1034 builtin/stash.c:1605
+#: builtin/notes.c:1034 builtin/stash.c:1604
 #, c-format
 msgid "unknown subcommand: %s"
 msgstr "subcomando desconhecido: %s"
@@ -18355,7 +18598,7 @@ msgstr "Opções relativas a integração"
 msgid "incorporate changes by rebasing rather than merging"
 msgstr "incorporar alterações por rebase em vez de integrar"
 
-#: builtin/pull.c:158 builtin/rebase.c:484 builtin/revert.c:126
+#: builtin/pull.c:158 builtin/rebase.c:490 builtin/revert.c:126
 msgid "allow fast-forward"
 msgstr "permitir avanço rápido"
 
@@ -18374,7 +18617,7 @@ msgstr "forçar a substituição do ramo local"
 
 #: builtin/pull.c:201
 msgid "number of submodules pulled in parallel"
-msgstr "número de submódulos puxados em paralelo"
+msgstr "número de submódulos com pull em paralelo"
 
 #: builtin/pull.c:317
 #, c-format
@@ -18403,23 +18646,21 @@ msgid ""
 "There is no candidate for rebasing against among the refs that you just "
 "fetched."
 msgstr ""
-"Não há nenhum candidato com o qual realizar rebase de entre as referências "
-"que se acabaram de obter."
+"As refs que obteste tem candidato nenhum para onde rebasear."
 
 #: builtin/pull.c:460
 msgid ""
 "There are no candidates for merging among the refs that you just fetched."
 msgstr ""
-"Não há nenhum candidato com o qual integrar de entre as referências que se "
-"acabaram obter."
+"As refs que obteste tem candidato nenhum para junção."
 
 #: builtin/pull.c:461
 msgid ""
 "Generally this means that you provided a wildcard refspec which had no\n"
 "matches on the remote end."
 msgstr ""
-"Geralmente, significa que forneceu um especificador de referência\n"
-"com um carácter universal (wildcard) que não corresponde a nenhum remoto."
+"Normalmente isto significa que forneceste um wildcard especificador de ref\n"
+"que tem correspondência nenhuma no lado do remoto."
 
 #: builtin/pull.c:464
 #, c-format
@@ -18432,15 +18673,15 @@ msgstr ""
 "Uma vez que este não é o remoto configurado por predefinição\n"
 "do ramo atual, deve especificar um ramo na linha de comandos."
 
-#: builtin/pull.c:469 builtin/rebase.c:1240 git-parse-remote.sh:73
+#: builtin/pull.c:469 builtin/rebase.c:1246
 msgid "You are not currently on a branch."
-msgstr "Não se encontra em nenhum ramo de momento."
+msgstr "Atualmente estás em ramo nenhum."
 
-#: builtin/pull.c:471 builtin/pull.c:486 git-parse-remote.sh:79
+#: builtin/pull.c:471 builtin/pull.c:486
 msgid "Please specify which branch you want to rebase against."
 msgstr "Especifique o ramo sobre o qual pretende realizar rebase."
 
-#: builtin/pull.c:473 builtin/pull.c:488 git-parse-remote.sh:82
+#: builtin/pull.c:473 builtin/pull.c:488
 msgid "Please specify which branch you want to merge with."
 msgstr "Especifique o ramo com o qual pretende integrar."
 
@@ -18449,20 +18690,19 @@ msgid "See git-pull(1) for details."
 msgstr "Consulte git-pull(1) para obter mais detalhes."
 
 #: builtin/pull.c:476 builtin/pull.c:482 builtin/pull.c:491
-#: builtin/rebase.c:1246 git-parse-remote.sh:64
+#: builtin/rebase.c:1252
 msgid "<remote>"
 msgstr "<remoto>"
 
 #: builtin/pull.c:476 builtin/pull.c:491 builtin/pull.c:496
-#: git-parse-remote.sh:65
 msgid "<branch>"
 msgstr "<ramo>"
 
-#: builtin/pull.c:484 builtin/rebase.c:1238 git-parse-remote.sh:75
+#: builtin/pull.c:484 builtin/rebase.c:1244
 msgid "There is no tracking information for the current branch."
-msgstr "O ramo atual não segue nenhum ramo."
+msgstr "O ramo atual tem informação de tracking nenhuma."
 
-#: builtin/pull.c:493 git-parse-remote.sh:95
+#: builtin/pull.c:493
 msgid ""
 "If you wish to set tracking information for this branch you can do so with:"
 msgstr ""
@@ -18483,25 +18723,25 @@ msgstr ""
 msgid "unable to access commit %s"
 msgstr "não foi possível analisar o commit %s"
 
-#: builtin/pull.c:894
+#: builtin/pull.c:915
 msgid "ignoring --verify-signatures for rebase"
 msgstr "ignorado --verify-signatures para rebase"
 
-#: builtin/pull.c:954
+#: builtin/pull.c:972
 msgid "Updating an unborn branch with changes added to the index."
 msgstr ""
 "A atualizar um ramo que ainda não foi criado e com alterações adicionadas ao "
 "índice."
 
-#: builtin/pull.c:958
+#: builtin/pull.c:976
 msgid "pull with rebase"
-msgstr "puxar com rebase"
+msgstr "pull com rebase"
 
-#: builtin/pull.c:959
+#: builtin/pull.c:977
 msgid "please commit or stash them."
 msgstr "submeta ou esconda-as."
 
-#: builtin/pull.c:984
+#: builtin/pull.c:1002
 #, c-format
 msgid ""
 "fetch updated the current branch head.\n"
@@ -18512,7 +18752,7 @@ msgstr ""
 "a avançar a árvore de trabalho a partir do\n"
 "commit %s."
 
-#: builtin/pull.c:990
+#: builtin/pull.c:1008
 #, c-format
 msgid ""
 "Cannot fast-forward your working tree.\n"
@@ -18529,15 +18769,15 @@ msgstr ""
 "$ git reset --hard\n"
 "para recuperar."
 
-#: builtin/pull.c:1005
+#: builtin/pull.c:1023
 msgid "Cannot merge multiple branches into empty head."
 msgstr "Não é possível integrar múltiplos ramos numa cabeça vazia."
 
-#: builtin/pull.c:1009
+#: builtin/pull.c:1027
 msgid "Cannot rebase onto multiple branches."
 msgstr "Não é possível efetuar rebase sobre múltiplos ramos."
 
-#: builtin/pull.c:1017
+#: builtin/pull.c:1041
 msgid "cannot rebase with locally recorded submodule modifications"
 msgstr ""
 
@@ -18669,12 +18909,11 @@ msgid ""
 "(e.g., 'git pull ...') before pushing again.\n"
 "See the 'Note about fast-forwards' in 'git push --help' for details."
 msgstr ""
-"As atualizações foram rejeitadas porque o remoto contém alterações que\n"
-"não tem localmente. Habitualmente, acontece porque outro repositório "
-"publicou\n"
-"na mesma referência. Pode integrar primeiro as alterações remotas\n"
-"(e.g., 'git pull ...') antes de publicar de novo.\n"
-"Consulte 'Note about fast-forwards' em 'git push --help' para obter detalhes."
+"Atualizações foram rejeitadas porque o remoto contém trabalho diferente\n"
+"do teu trabalho local. A causa, normalmente, é um push para a mesma ref.\n"
+"Podes tentar integrar as diferenças remotas (p.e., 'git pull ...') antes\n"
+"de fazeres novo push.\n"
+"Vê a 'Note about fast-forwards' do 'git push --help' para detalhes."
 
 #: builtin/push.c:286
 msgid "Updates were rejected because the tag already exists in the remote."
@@ -18690,100 +18929,117 @@ msgstr ""
 "objeto não commit, ou atualizar uma referência remota fazendo-a\n"
 "apontar para um objeto não commit, sem usar a opção '--force'.\n"
 
-#: builtin/push.c:351
+#: builtin/push.c:294
+#, fuzzy
+msgid ""
+"Updates were rejected because the tip of the remote-tracking\n"
+"branch has been updated since the last checkout. You may want\n"
+"to integrate those changes locally (e.g., 'git pull ...')\n"
+"before forcing an update.\n"
+msgstr ""
+"As atualizações foram rejeitadas porque a ponta do ramo atual está atrasada\n"
+"em relação ao homólogo remoto. Integre as alterações remotas (e.g.\n"
+"'git pull ...') antes de publicar de novo.\n"
+"Consulte 'Note about fast-forwards' em 'git push --help' para obter detalhes."
+
+#: builtin/push.c:364
 #, c-format
 msgid "Pushing to %s\n"
-msgstr "A publicar em %s\n"
+msgstr "Fazendo push para %s\n"
 
-#: builtin/push.c:358
+#: builtin/push.c:371
 #, c-format
 msgid "failed to push some refs to '%s'"
 msgstr "falha ao publicar algumas referências em '%s'"
 
-#: builtin/push.c:532
+#: builtin/push.c:553
 msgid "repository"
 msgstr "repositório"
 
-#: builtin/push.c:533 builtin/send-pack.c:183
+#: builtin/push.c:554 builtin/send-pack.c:189
 msgid "push all refs"
 msgstr "publicar todas as referências"
 
-#: builtin/push.c:534 builtin/send-pack.c:185
+#: builtin/push.c:555 builtin/send-pack.c:191
 msgid "mirror all refs"
 msgstr "replicar todas as referências"
 
-#: builtin/push.c:536
+#: builtin/push.c:557
 msgid "delete refs"
 msgstr "eliminar referências"
 
-#: builtin/push.c:537
+#: builtin/push.c:558
 msgid "push tags (can't be used with --all or --mirror)"
 msgstr "publicar tags (não pode ser usado com --all ou --mirror)"
 
-#: builtin/push.c:540 builtin/send-pack.c:186
+#: builtin/push.c:561 builtin/send-pack.c:192
 msgid "force updates"
 msgstr "forçar atualização"
 
-#: builtin/push.c:541 builtin/send-pack.c:198
+#: builtin/push.c:562 builtin/send-pack.c:204
 #, fuzzy
 msgid "<refname>:<expect>"
 msgstr "nome da referência>:<esperado"
 
-#: builtin/push.c:542 builtin/send-pack.c:199
+#: builtin/push.c:563 builtin/send-pack.c:205
 msgid "require old value of ref to be at this value"
 msgstr "exigir que o antigo valor da referência tenha este valor"
 
-#: builtin/push.c:545
+#: builtin/push.c:566 builtin/send-pack.c:208
+msgid "require remote updates to be integrated locally"
+msgstr ""
+
+#: builtin/push.c:569
 msgid "control recursive pushing of submodules"
 msgstr "controlar a publicação recursiva de submódulos"
 
-#: builtin/push.c:546 builtin/send-pack.c:193
+#: builtin/push.c:570 builtin/send-pack.c:199
 msgid "use thin pack"
 msgstr "usar pacote fino"
 
-#: builtin/push.c:547 builtin/push.c:548 builtin/send-pack.c:180
-#: builtin/send-pack.c:181
+#: builtin/push.c:571 builtin/push.c:572 builtin/send-pack.c:186
+#: builtin/send-pack.c:187
 msgid "receive pack program"
 msgstr "programa receive pack"
 
-#: builtin/push.c:549
+#: builtin/push.c:573
 msgid "set upstream for git pull/status"
 msgstr "definir o ramo a montante usado com git pull/status"
 
-#: builtin/push.c:552
+#: builtin/push.c:576
 msgid "prune locally removed refs"
 msgstr "eliminar referências removidas localmente"
 
-#: builtin/push.c:554
+#: builtin/push.c:578
 msgid "bypass pre-push hook"
 msgstr "ignorar pre-push hook"
 
-#: builtin/push.c:555
+#: builtin/push.c:579
 msgid "push missing but relevant tags"
 msgstr "publicar tags perdidas mas relevantes"
 
-#: builtin/push.c:557 builtin/send-pack.c:187
+#: builtin/push.c:581 builtin/send-pack.c:193
 msgid "GPG sign the push"
 msgstr "assinar publicação com GPG"
 
-#: builtin/push.c:559 builtin/send-pack.c:194
+#: builtin/push.c:583 builtin/send-pack.c:200
 msgid "request atomic transaction on remote side"
 msgstr "solicitar transação atómica no servidor remoto"
 
-#: builtin/push.c:577
+#: builtin/push.c:601
 msgid "--delete is incompatible with --all, --mirror and --tags"
 msgstr "--delete é incompatível com --all, --mirror e --tags"
 
-#: builtin/push.c:579
+#: builtin/push.c:603
 msgid "--delete doesn't make sense without any refs"
 msgstr "--delete não faz sentido sem uma referência"
 
-#: builtin/push.c:599
+#: builtin/push.c:623
 #, c-format
 msgid "bad repository '%s'"
 msgstr "repositório '%s' incorreto"
 
-#: builtin/push.c:600
+#: builtin/push.c:624
 msgid ""
 "No configured push destination.\n"
 "Either specify the URL from the command-line or configure a remote "
@@ -18805,27 +19061,27 @@ msgstr ""
 "\n"
 "    git push <nome>\n"
 
-#: builtin/push.c:615
+#: builtin/push.c:639
 msgid "--all and --tags are incompatible"
 msgstr "--all e --tags são incompatíveis"
 
-#: builtin/push.c:617
+#: builtin/push.c:641
 msgid "--all can't be combined with refspecs"
 msgstr "--all não pode ser combinado com especificadores de referências"
 
-#: builtin/push.c:621
+#: builtin/push.c:645
 msgid "--mirror and --tags are incompatible"
 msgstr "--mirror e --tags são incompatíveis"
 
-#: builtin/push.c:623
+#: builtin/push.c:647
 msgid "--mirror can't be combined with refspecs"
 msgstr "--mirror não pode ser combinado com especificadores de referências"
 
-#: builtin/push.c:626
+#: builtin/push.c:650
 msgid "--all and --mirror are incompatible"
 msgstr "--all e --mirror são incompatíveis"
 
-#: builtin/push.c:630
+#: builtin/push.c:657
 msgid "push options must not have new line characters"
 msgstr "as opções de publicação não podem ter carateres de nova linha"
 
@@ -18978,213 +19234,213 @@ msgstr ""
 msgid "git rebase --continue | --abort | --skip | --edit-todo"
 msgstr "git am [<opções>] (--continue | --skip | --abort)"
 
-#: builtin/rebase.c:187 builtin/rebase.c:211 builtin/rebase.c:238
+#: builtin/rebase.c:193 builtin/rebase.c:217 builtin/rebase.c:244
 #, fuzzy, c-format
 msgid "unusable todo list: '%s'"
 msgstr "não é possível invocar unlink: %s"
 
-#: builtin/rebase.c:304
+#: builtin/rebase.c:310
 #, fuzzy, c-format
 msgid "could not create temporary %s"
 msgstr "não foi possível criar ficheiro temporário"
 
-#: builtin/rebase.c:310
+#: builtin/rebase.c:316
 #, fuzzy
 msgid "could not mark as interactive"
 msgstr "Não foi possível marcar como interativo"
 
-#: builtin/rebase.c:364
+#: builtin/rebase.c:369
 #, fuzzy
 msgid "could not generate todo list"
 msgstr "não foi possível escrever para %s"
 
-#: builtin/rebase.c:405
+#: builtin/rebase.c:411
 msgid "a base commit must be provided with --upstream or --onto"
 msgstr ""
 
-#: builtin/rebase.c:474
+#: builtin/rebase.c:480
 #, fuzzy
 msgid "git rebase--interactive [<options>]"
 msgstr "git rebase--helper [<opções>]"
 
-#: builtin/rebase.c:487 builtin/rebase.c:1382
+#: builtin/rebase.c:493 builtin/rebase.c:1388
 msgid "keep commits which start empty"
 msgstr ""
 
-#: builtin/rebase.c:491 builtin/revert.c:128
+#: builtin/rebase.c:497 builtin/revert.c:128
 msgid "allow commits with empty messages"
 msgstr "permitir commits com mensagens vazias"
 
-#: builtin/rebase.c:493
+#: builtin/rebase.c:499
 #, fuzzy
 msgid "rebase merge commits"
 msgstr "mergetag incorreta no commit '%s'"
 
-#: builtin/rebase.c:495
+#: builtin/rebase.c:501
 msgid "keep original branch points of cousins"
 msgstr ""
 
-#: builtin/rebase.c:497
+#: builtin/rebase.c:503
 msgid "move commits that begin with squash!/fixup!"
 msgstr ""
 
-#: builtin/rebase.c:498
+#: builtin/rebase.c:504
 #, fuzzy
 msgid "sign commits"
 msgstr "assinar os commits com GPG"
 
-#: builtin/rebase.c:500 builtin/rebase.c:1321
+#: builtin/rebase.c:506 builtin/rebase.c:1327
 msgid "display a diffstat of what changed upstream"
 msgstr ""
 
-#: builtin/rebase.c:502
+#: builtin/rebase.c:508
 msgid "continue rebase"
 msgstr "continuar rebase"
 
-#: builtin/rebase.c:504
+#: builtin/rebase.c:510
 #, fuzzy
 msgid "skip commit"
 msgstr "commit"
 
-#: builtin/rebase.c:505
+#: builtin/rebase.c:511
 #, fuzzy
 msgid "edit the todo list"
 msgstr "falha ao escrever para rev-list"
 
-#: builtin/rebase.c:507
+#: builtin/rebase.c:513
 #, fuzzy
 msgid "show the current patch"
 msgstr "ignorar o patch atual"
 
-#: builtin/rebase.c:510
+#: builtin/rebase.c:516
 msgid "shorten commit ids in the todo list"
 msgstr ""
 
-#: builtin/rebase.c:512
+#: builtin/rebase.c:518
 msgid "expand commit ids in the todo list"
 msgstr ""
 
-#: builtin/rebase.c:514
+#: builtin/rebase.c:520
 msgid "check the todo list"
 msgstr ""
 
-#: builtin/rebase.c:516
+#: builtin/rebase.c:522
 msgid "rearrange fixup/squash lines"
 msgstr ""
 
-#: builtin/rebase.c:518
+#: builtin/rebase.c:524
 msgid "insert exec commands in todo list"
 msgstr ""
 
-#: builtin/rebase.c:519
+#: builtin/rebase.c:525
 msgid "onto"
 msgstr ""
 
-#: builtin/rebase.c:522
+#: builtin/rebase.c:528
 #, fuzzy
 msgid "restrict-revision"
 msgstr "revisão"
 
-#: builtin/rebase.c:522
+#: builtin/rebase.c:528
 #, fuzzy
 msgid "restrict revision"
 msgstr "revisão"
 
-#: builtin/rebase.c:524
+#: builtin/rebase.c:530
 msgid "squash-onto"
 msgstr ""
 
-#: builtin/rebase.c:525
+#: builtin/rebase.c:531
 msgid "squash onto"
 msgstr ""
 
-#: builtin/rebase.c:527
+#: builtin/rebase.c:533
 #, fuzzy
 msgid "the upstream commit"
 msgstr "Remover a informação do ramo a montante"
 
-#: builtin/rebase.c:529
+#: builtin/rebase.c:535
 #, fuzzy
 msgid "head-name"
 msgstr "mudar nome"
 
-#: builtin/rebase.c:529
+#: builtin/rebase.c:535
 #, fuzzy
 msgid "head name"
 msgstr "à frente "
 
-#: builtin/rebase.c:534
+#: builtin/rebase.c:540
 #, fuzzy
 msgid "rebase strategy"
 msgstr "estratégia de integração"
 
-#: builtin/rebase.c:535
+#: builtin/rebase.c:541
 #, fuzzy
 msgid "strategy-opts"
 msgstr "estratégia"
 
-#: builtin/rebase.c:536
+#: builtin/rebase.c:542
 #, fuzzy
 msgid "strategy options"
 msgstr "opções de decoração"
 
-#: builtin/rebase.c:537
+#: builtin/rebase.c:543
 msgid "switch-to"
 msgstr ""
 
-#: builtin/rebase.c:538
+#: builtin/rebase.c:544
 msgid "the branch or commit to checkout"
 msgstr ""
 
-#: builtin/rebase.c:539
+#: builtin/rebase.c:545
 #, fuzzy
 msgid "onto-name"
 msgstr "nome"
 
-#: builtin/rebase.c:539
+#: builtin/rebase.c:545
 #, fuzzy
 msgid "onto name"
 msgstr "nome do remoto"
 
-#: builtin/rebase.c:540
+#: builtin/rebase.c:546
 #, fuzzy
 msgid "cmd"
 msgstr "comando"
 
-#: builtin/rebase.c:540
+#: builtin/rebase.c:546
 #, fuzzy
 msgid "the command to run"
 msgstr "Nenhum comando concluído."
 
-#: builtin/rebase.c:543 builtin/rebase.c:1415
+#: builtin/rebase.c:549 builtin/rebase.c:1421
 msgid "automatically re-schedule any `exec` that fails"
 msgstr ""
 
-#: builtin/rebase.c:559
+#: builtin/rebase.c:565
 msgid "--[no-]rebase-cousins has no effect without --rebase-merges"
 msgstr ""
 
-#: builtin/rebase.c:575
+#: builtin/rebase.c:581
 #, c-format
 msgid "%s requires the merge backend"
 msgstr ""
 
-#: builtin/rebase.c:618
+#: builtin/rebase.c:624
 #, fuzzy, c-format
 msgid "could not get 'onto': '%s'"
 msgstr "não foi possível definir '%s' como '%s'"
 
-#: builtin/rebase.c:635
+#: builtin/rebase.c:641
 #, fuzzy, c-format
 msgid "invalid orig-head: '%s'"
 msgstr "ficheiro inválido: '%s'"
 
-#: builtin/rebase.c:660
+#: builtin/rebase.c:666
 #, c-format
 msgid "ignoring invalid allow_rerere_autoupdate: '%s'"
 msgstr ""
 
-#: builtin/rebase.c:805 git-rebase--preserve-merges.sh:81
+#: builtin/rebase.c:811 git-rebase--preserve-merges.sh:81
 #, fuzzy
 msgid ""
 "Resolve all conflicts manually, mark them as resolved with\n"
@@ -19198,7 +19454,7 @@ msgstr ""
 "Para extrair o ramo original e interromper o rebase, execute \"git rebase --"
 "abort\"."
 
-#: builtin/rebase.c:888
+#: builtin/rebase.c:894
 #, c-format
 msgid ""
 "\n"
@@ -19210,14 +19466,14 @@ msgid ""
 "As a result, git cannot rebase them."
 msgstr ""
 
-#: builtin/rebase.c:1214
+#: builtin/rebase.c:1220
 #, c-format
 msgid ""
 "unrecognized empty type '%s'; valid values are \"drop\", \"keep\", and \"ask"
 "\"."
 msgstr ""
 
-#: builtin/rebase.c:1232
+#: builtin/rebase.c:1238
 #, fuzzy, c-format
 msgid ""
 "%s\n"
@@ -19226,9 +19482,15 @@ msgid ""
 "\n"
 "    git rebase '<branch>'\n"
 "\n"
-msgstr "Especifique o ramo sobre o qual pretende realizar rebase."
+msgstr ""
+"%s\n"
+"Por favor, diz o branch sobre o qual queres rebasear.\n"
+"Vê git-rebase(1) para detalhes.\n"
+"\n"
+"    git rebase '<branch>'\n"
+"\n"
 
-#: builtin/rebase.c:1248
+#: builtin/rebase.c:1254
 #, fuzzy, c-format
 msgid ""
 "If you wish to set tracking information for this branch you can do so with:\n"
@@ -19236,210 +19498,214 @@ msgid ""
 "    git branch --set-upstream-to=%s/<branch> %s\n"
 "\n"
 msgstr ""
-"Se deseja definir o ramo que deve ser seguido por este ramo, pode fazê-lo "
-"com:"
+"Se desejas por tracking information neste branch, podes fazer com:\n"
+"\n"
+"    git branch --set-upstream-to=%s/<branch> %s\n"
+"\n"
 
-#: builtin/rebase.c:1278
+#: builtin/rebase.c:1284
 msgid "exec commands cannot contain newlines"
 msgstr ""
 
-#: builtin/rebase.c:1282
+#: builtin/rebase.c:1288
 msgid "empty exec command"
 msgstr ""
 
-#: builtin/rebase.c:1312
+#: builtin/rebase.c:1318
 #, fuzzy
 msgid "rebase onto given branch instead of upstream"
 msgstr "demasiados ramos para remover a definição de ramo a montante"
 
-#: builtin/rebase.c:1314
+#: builtin/rebase.c:1320
 #, fuzzy
 msgid "use the merge-base of upstream and branch as the current base"
 msgstr "o ramo a montante solicitado '%s' não existe"
 
-#: builtin/rebase.c:1316
+#: builtin/rebase.c:1322
 #, fuzzy
 msgid "allow pre-rebase hook to run"
 msgstr "Rebase recusado pelo hook pre-rebase."
 
-#: builtin/rebase.c:1318
+#: builtin/rebase.c:1324
 msgid "be quiet. implies --no-stat"
 msgstr ""
 
-#: builtin/rebase.c:1324
+#: builtin/rebase.c:1330
 #, fuzzy
 msgid "do not show diffstat of what changed upstream"
 msgstr "não apresentar um diffstat ao fim da integração"
 
-#: builtin/rebase.c:1327
+#: builtin/rebase.c:1333
 #, fuzzy
-msgid "add a Signed-off-by: line to each commit"
+msgid "add a Signed-off-by trailer to each commit"
 msgstr "adicionar uma linha com Signed-of-by no fim da mensagem de commit"
 
-#: builtin/rebase.c:1330
+#: builtin/rebase.c:1336
 #, fuzzy
 msgid "make committer date match author date"
 msgstr "agrupar por committer em vez de autor"
 
-#: builtin/rebase.c:1332
+#: builtin/rebase.c:1338
 msgid "ignore author date and use current date"
 msgstr ""
 
-#: builtin/rebase.c:1334
+#: builtin/rebase.c:1340
 #, fuzzy
 msgid "synonym of --reset-author-date"
 msgstr "sinónimo de --files-with-matches"
 
-#: builtin/rebase.c:1336 builtin/rebase.c:1340
+#: builtin/rebase.c:1342 builtin/rebase.c:1346
 #, fuzzy
 msgid "passed to 'git apply'"
 msgstr "transmitir ao git-apply"
 
-#: builtin/rebase.c:1338
+#: builtin/rebase.c:1344
 #, fuzzy
 msgid "ignore changes in whitespace"
 msgstr "ignorar alterações de espaço em branco ao procurar contexto"
 
-#: builtin/rebase.c:1342 builtin/rebase.c:1345
+#: builtin/rebase.c:1348 builtin/rebase.c:1351
 msgid "cherry-pick all commits, even if unchanged"
 msgstr ""
 
-#: builtin/rebase.c:1347
+#: builtin/rebase.c:1353
 #, fuzzy
 msgid "continue"
 msgstr "continuar rebase"
 
-#: builtin/rebase.c:1350
+#: builtin/rebase.c:1356
 #, fuzzy
 msgid "skip current patch and continue"
 msgstr "ignorar o patch atual"
 
-#: builtin/rebase.c:1352
+#: builtin/rebase.c:1358
 #, fuzzy
 msgid "abort and check out the original branch"
 msgstr "  (use \"git rebase --abort\" para restaurar o ramo original)"
 
-#: builtin/rebase.c:1355
+#: builtin/rebase.c:1361
 msgid "abort but keep HEAD where it is"
 msgstr ""
 
-#: builtin/rebase.c:1356
+#: builtin/rebase.c:1362
 #, fuzzy
 msgid "edit the todo list during an interactive rebase"
 msgstr "A ação --edit-todo só pode ser usada durante um rebase interativo."
 
-#: builtin/rebase.c:1359
+#: builtin/rebase.c:1365
 msgid "show the patch file being applied or merged"
 msgstr ""
 
-#: builtin/rebase.c:1362
+#: builtin/rebase.c:1368
 msgid "use apply strategies to rebase"
 msgstr ""
 
-#: builtin/rebase.c:1366
+#: builtin/rebase.c:1372
 #, fuzzy
 msgid "use merging strategies to rebase"
 msgstr "estratégia de integração a usar"
 
-#: builtin/rebase.c:1370
+#: builtin/rebase.c:1376
 msgid "let the user edit the list of commits to rebase"
 msgstr ""
 
-#: builtin/rebase.c:1374
+#: builtin/rebase.c:1380
 msgid "(DEPRECATED) try to recreate merges instead of ignoring them"
 msgstr ""
 
-#: builtin/rebase.c:1379
+#: builtin/rebase.c:1385
 msgid "how to handle commits that become empty"
 msgstr ""
 
-#: builtin/rebase.c:1386
+#: builtin/rebase.c:1392
 msgid "move commits that begin with squash!/fixup! under -i"
 msgstr ""
 
-#: builtin/rebase.c:1393
+#: builtin/rebase.c:1399
 msgid "add exec lines after each commit of the editable list"
 msgstr ""
 
-#: builtin/rebase.c:1397
+#: builtin/rebase.c:1403
 #, fuzzy
 msgid "allow rebasing commits with empty messages"
 msgstr "permitir commits com mensagens vazias"
 
-#: builtin/rebase.c:1401
+#: builtin/rebase.c:1407
 msgid "try to rebase merges instead of skipping them"
 msgstr ""
 
-#: builtin/rebase.c:1404
+#: builtin/rebase.c:1410
 #, fuzzy
 msgid "use 'merge-base --fork-point' to refine upstream"
 msgstr "git merge-base --fork-point <referência> [<commit>]"
 
-#: builtin/rebase.c:1406
+#: builtin/rebase.c:1412
 #, fuzzy
 msgid "use the given merge strategy"
 msgstr "opção de estratégia de integração"
 
-#: builtin/rebase.c:1408 builtin/revert.c:115
+#: builtin/rebase.c:1414 builtin/revert.c:115
 msgid "option"
 msgstr "opção"
 
-#: builtin/rebase.c:1409
+#: builtin/rebase.c:1415
 msgid "pass the argument through to the merge strategy"
 msgstr ""
 
-#: builtin/rebase.c:1412
+#: builtin/rebase.c:1418
 msgid "rebase all reachable commits up to the root(s)"
 msgstr ""
 
-#: builtin/rebase.c:1417
+#: builtin/rebase.c:1423
 msgid "apply all changes, even those already present upstream"
 msgstr ""
 
-#: builtin/rebase.c:1434
+#: builtin/rebase.c:1440
 msgid ""
 "the rebase.useBuiltin support has been removed!\n"
 "See its entry in 'git help config' for details."
 msgstr ""
+"o suporte a rebase.useBuiltin foi removido!\n"
+"Vê essa entry em 'git help config' para detalhes."
 
-#: builtin/rebase.c:1440
+#: builtin/rebase.c:1446
 #, fuzzy
 msgid "It looks like 'git am' is in progress. Cannot rebase."
 msgstr "Parece que o git-am está em curso. Não é possível efetuar rebase."
 
-#: builtin/rebase.c:1481
+#: builtin/rebase.c:1487
 msgid ""
 "git rebase --preserve-merges is deprecated. Use --rebase-merges instead."
 msgstr ""
 
-#: builtin/rebase.c:1486
+#: builtin/rebase.c:1492
 #, fuzzy
 msgid "cannot combine '--keep-base' with '--onto'"
 msgstr "Não é possível combinar --squash e --no-ff."
 
-#: builtin/rebase.c:1488
+#: builtin/rebase.c:1494
 #, fuzzy
 msgid "cannot combine '--keep-base' with '--root'"
 msgstr "Não é possível combinar --squash e --no-ff."
 
-#: builtin/rebase.c:1492
+#: builtin/rebase.c:1498
 #, fuzzy
 msgid "cannot combine '--root' with '--fork-point'"
 msgstr "Não é possível combinar --squash e --no-ff."
 
-#: builtin/rebase.c:1495
+#: builtin/rebase.c:1501
 msgid "No rebase in progress?"
 msgstr "Rebase não está em curso?"
 
-#: builtin/rebase.c:1499
+#: builtin/rebase.c:1505
 msgid "The --edit-todo action can only be used during interactive rebase."
 msgstr "A ação --edit-todo só pode ser usada durante um rebase interativo."
 
-#: builtin/rebase.c:1522
+#: builtin/rebase.c:1528 t/helper/test-fast-rebase.c:123
 msgid "Cannot read HEAD"
 msgstr "Não é possível ler HEAD"
 
-#: builtin/rebase.c:1534
+#: builtin/rebase.c:1540
 msgid ""
 "You must edit all merge conflicts and then\n"
 "mark them as resolved using git add"
@@ -19447,17 +19713,17 @@ msgstr ""
 "Deve editar todos os conflitos da integração\n"
 "e marcá-los como resolvidos usando git add"
 
-#: builtin/rebase.c:1553
+#: builtin/rebase.c:1559
 #, fuzzy
 msgid "could not discard worktree changes"
 msgstr "Não é possível remover as alterações da árvore de trabalho"
 
-#: builtin/rebase.c:1572
+#: builtin/rebase.c:1578
 #, fuzzy, c-format
 msgid "could not move back to %s"
 msgstr "Não foi possível voltar para $head_name"
 
-#: builtin/rebase.c:1618
+#: builtin/rebase.c:1624
 #, fuzzy, c-format
 msgid ""
 "It seems that there is already a %s directory, and\n"
@@ -19469,156 +19735,155 @@ msgid ""
 "and run me again.  I am stopping in case you still have something\n"
 "valuable there.\n"
 msgstr ""
-"Parece que já existe um diretório $state_dir_base e\n"
+"Parece que já existe um diretório %s, e\n"
 "é possível que outro processo de rebase já esteja em curso.\n"
 "Se for o caso, tente\n"
-"\t$cmd_live_rebase\n"
+"\t%s\n"
 "Se não for o caso,\n"
-"\t$cmd_clear_stale_rebase\n"
+"\t%s\n"
 "e execute o comando de novo. A execução foi interrompida no caso de\n"
-"ainda ter algo importante nesse sítio."
+"ainda ter algo importante nesse sítio.\n"
 
-#: builtin/rebase.c:1646
+#: builtin/rebase.c:1652
 #, fuzzy
 msgid "switch `C' expects a numerical value"
 msgstr "a opção '%c' espera um valor numérico"
 
-#: builtin/rebase.c:1688
+#: builtin/rebase.c:1694
 #, fuzzy, c-format
 msgid "Unknown mode: %s"
 msgstr "Mode de --patch desconhecido: %s"
 
-#: builtin/rebase.c:1727
+#: builtin/rebase.c:1733
 msgid "--strategy requires --merge or --interactive"
 msgstr ""
 
-#: builtin/rebase.c:1757
+#: builtin/rebase.c:1763
 msgid "cannot combine apply options with merge options"
 msgstr ""
 
-#: builtin/rebase.c:1770
+#: builtin/rebase.c:1776
 #, fuzzy, c-format
 msgid "Unknown rebase backend: %s"
 msgstr "Subcomando desconhecido: %s"
 
-#: builtin/rebase.c:1795
+#: builtin/rebase.c:1806
 msgid "--reschedule-failed-exec requires --exec or --interactive"
 msgstr ""
 
-#: builtin/rebase.c:1815
+#: builtin/rebase.c:1826
 msgid "cannot combine '--preserve-merges' with '--rebase-merges'"
 msgstr ""
 
-#: builtin/rebase.c:1819
+#: builtin/rebase.c:1830
 msgid ""
 "error: cannot combine '--preserve-merges' with '--reschedule-failed-exec'"
 msgstr ""
 
-#: builtin/rebase.c:1843
+#: builtin/rebase.c:1854
 #, fuzzy, c-format
 msgid "invalid upstream '%s'"
 msgstr "caminho inválido '%s'"
 
-#: builtin/rebase.c:1849
+#: builtin/rebase.c:1860
 #, fuzzy
 msgid "Could not create new root commit"
 msgstr "não foi possível analisar o commit recém-criado"
 
-#: builtin/rebase.c:1875
+#: builtin/rebase.c:1886
 #, c-format
 msgid "'%s': need exactly one merge base with branch"
 msgstr ""
 
-#: builtin/rebase.c:1878
+#: builtin/rebase.c:1889
 #, fuzzy, c-format
 msgid "'%s': need exactly one merge base"
 msgstr "É necessário exatamente um intervalo."
 
-#: builtin/rebase.c:1886
+#: builtin/rebase.c:1897
 #, fuzzy, c-format
 msgid "Does not point to a valid commit '%s'"
 msgstr "Não aponta para um commit válido: $onto_name"
 
-#: builtin/rebase.c:1912
+#: builtin/rebase.c:1923
 #, fuzzy, c-format
 msgid "fatal: no such branch/commit '%s'"
 msgstr "o ramo '%s' não existe"
 
-#: builtin/rebase.c:1920 builtin/submodule--helper.c:40
+#: builtin/rebase.c:1931 builtin/submodule--helper.c:40
 #: builtin/submodule--helper.c:2414
 #, c-format
 msgid "No such ref: %s"
 msgstr "Referência inexistente: %s"
 
-#: builtin/rebase.c:1931
+#: builtin/rebase.c:1942
 #, fuzzy
 msgid "Could not resolve HEAD to a revision"
-msgstr "não foi possível resolver o commit HEAD\n"
+msgstr "Foi impossível resolver HEAD para uma revisão"
 
-#: builtin/rebase.c:1952
+#: builtin/rebase.c:1963
 msgid "Please commit or stash them."
 msgstr "Submeta ou esconda-as."
 
-#: builtin/rebase.c:1988
+#: builtin/rebase.c:1999
 #, fuzzy, c-format
 msgid "could not switch to %s"
 msgstr "não foi possível escrever para %s"
 
-#: builtin/rebase.c:1999
+#: builtin/rebase.c:2010
 #, fuzzy
 msgid "HEAD is up to date."
 msgstr "HEAD está agora em"
 
-#: builtin/rebase.c:2001
+#: builtin/rebase.c:2012
 #, fuzzy, c-format
 msgid "Current branch %s is up to date.\n"
-msgstr "O ramo atual $branch_name está atualizado."
+msgstr "Branch atual %s está atualizado.\n"
 
-#: builtin/rebase.c:2009
+#: builtin/rebase.c:2020
 #, fuzzy
 msgid "HEAD is up to date, rebase forced."
 msgstr "O ramo atual $branch_name está atualizado, rebase forçado."
 
-#: builtin/rebase.c:2011
+#: builtin/rebase.c:2022
 #, fuzzy, c-format
 msgid "Current branch %s is up to date, rebase forced.\n"
-msgstr "O ramo atual $branch_name está atualizado, rebase forçado."
+msgstr "Branch actual %s está atualizado, rebase forçado.\n"
 
-#: builtin/rebase.c:2019
+#: builtin/rebase.c:2030
 msgid "The pre-rebase hook refused to rebase."
 msgstr "Rebase recusado pelo hook pre-rebase."
 
-#: builtin/rebase.c:2026
+#: builtin/rebase.c:2037
 #, fuzzy, c-format
 msgid "Changes to %s:\n"
-msgstr "A publicar em %s\n"
+msgstr "Modificações para %s:\n"
 
-#: builtin/rebase.c:2029
+#: builtin/rebase.c:2040
 #, fuzzy, c-format
 msgid "Changes from %s to %s:\n"
-msgstr "Alterações de $mb para $onto:"
+msgstr "Modificações de %s para %s:\n"
 
-#: builtin/rebase.c:2054
+#: builtin/rebase.c:2065
 #, fuzzy, c-format
 msgid "First, rewinding head to replay your work on top of it...\n"
-msgstr ""
-"Primeiro, a recuar a cabeça para replicar as suas alterações no topo dela..."
+msgstr "Primeiro, recuando head para refazer o teu trabalho em cima dela...\n"
 
-#: builtin/rebase.c:2063
+#: builtin/rebase.c:2074
 #, fuzzy
 msgid "Could not detach HEAD"
 msgstr "não foi possível destacar HEAD"
 
-#: builtin/rebase.c:2072
+#: builtin/rebase.c:2083
 #, fuzzy, c-format
 msgid "Fast-forwarded %s to %s.\n"
-msgstr "Avanço-rápido para $sha1"
+msgstr "Avançei-rápido %s para %s.\n"
 
 #: builtin/receive-pack.c:34
 msgid "git receive-pack <git-dir>"
 msgstr "git receive-pack <git-dir>"
 
-#: builtin/receive-pack.c:1224
+#: builtin/receive-pack.c:1276
 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"
@@ -19645,10 +19910,10 @@ msgstr ""
 "consiga de outra forma atualizar a árvore de trabalho dele para\n"
 "refletir o que publicou.\n"
 "\n"
-"Para suprimir esta mensagem e manter o comportamento predefinido, defina a "
-"variável de configuração 'receive.denyCurrentBranch' como 'refuse'."
+"Para suprimir esta mensagem e manter o comportamento predefinido, defina\n"
+"variável de configuração 'receive.denyCurrentBranch' como 'refuse'."
 
-#: builtin/receive-pack.c:1244
+#: builtin/receive-pack.c:1296
 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"
@@ -19668,11 +19933,11 @@ msgstr ""
 "\n"
 "Para suprimir esta mensagem, pode definí-la como 'refuse'."
 
-#: builtin/receive-pack.c:2422
+#: builtin/receive-pack.c:2481
 msgid "quiet"
 msgstr "silencioso"
 
-#: builtin/receive-pack.c:2436
+#: builtin/receive-pack.c:2495
 msgid "You must specify a directory."
 msgstr "Deve especificar um diretório."
 
@@ -19721,7 +19986,7 @@ msgstr "Referência inválida: %s"
 #: builtin/reflog.c:710
 #, fuzzy, c-format
 msgid "no reflog for '%s'"
-msgstr "Não é possível efetuar reflog de '%s': %s\n"
+msgstr "Impossível efetuar reflog de '%s'"
 
 #: builtin/reflog.c:756
 #, fuzzy, c-format
@@ -19824,8 +20089,8 @@ msgid ""
 "--mirror is dangerous and deprecated; please\n"
 "\t use --mirror=fetch or --mirror=push instead"
 msgstr ""
-"--mirror é perigoso e obsoleto;\n"
-"\t use --mirror=fetch ou --mirror=push"
+"--mirror é perigoso e obsoleto; por favor\n"
+"\t usa --mirror=fetch ou --mirror=push invés"
 
 #: builtin/remote.c:148
 #, c-format
@@ -19864,41 +20129,36 @@ msgstr "especificar um ramo mestre não faz sentido com --mirror"
 msgid "specifying branches to track makes sense only with fetch mirrors"
 msgstr "especificar ramos para seguir só faz sentido com fetch mirrors"
 
-#: builtin/remote.c:195 builtin/remote.c:697
+#: builtin/remote.c:195 builtin/remote.c:700
 #, c-format
 msgid "remote %s already exists."
 msgstr "o remoto %s já existe."
 
-#: builtin/remote.c:199 builtin/remote.c:701
-#, c-format
-msgid "'%s' is not a valid remote name"
-msgstr "'%s' não é um nome de remoto válido"
-
-#: builtin/remote.c:239
+#: builtin/remote.c:240
 #, c-format
 msgid "Could not setup master '%s'"
 msgstr "Não foi possível configuração o ramo mestre '%s'"
 
-#: builtin/remote.c:354
+#: builtin/remote.c:355
 #, c-format
 msgid "Could not get fetch map for refspec %s"
 msgstr ""
 "Não foi possível obter o mapa de fetch do especificador de referência %s"
 
-#: builtin/remote.c:453 builtin/remote.c:461
+#: builtin/remote.c:454 builtin/remote.c:462
 msgid "(matching)"
 msgstr "(correspondente)"
 
-#: builtin/remote.c:465
+#: builtin/remote.c:466
 msgid "(delete)"
 msgstr "(eliminado)"
 
-#: builtin/remote.c:654
+#: builtin/remote.c:655
 #, fuzzy, c-format
 msgid "could not set '%s'"
 msgstr "não foi possível reiniciar '%s'"
 
-#: builtin/remote.c:659
+#: builtin/remote.c:660
 #, c-format
 msgid ""
 "The %s configuration remote.pushDefault in:\n"
@@ -19906,18 +20166,18 @@ msgid ""
 "now names the non-existent remote '%s'"
 msgstr ""
 
-#: builtin/remote.c:690 builtin/remote.c:833 builtin/remote.c:941
+#: builtin/remote.c:691 builtin/remote.c:836 builtin/remote.c:946
 #, fuzzy, c-format
 msgid "No such remote: '%s'"
 msgstr "Remoto inexistente '%s'"
 
-#: builtin/remote.c:707
+#: builtin/remote.c:710
 #, c-format
 msgid "Could not rename config section '%s' to '%s'"
 msgstr ""
 "Não foi possível mudar o nome da secção de configuração de '%s' para '%s'"
 
-#: builtin/remote.c:727
+#: builtin/remote.c:730
 #, c-format
 msgid ""
 "Not updating non-default fetch refspec\n"
@@ -19929,17 +20189,17 @@ msgstr ""
 "\t%s\n"
 "\tAtualize a configuração manualmente se necessário."
 
-#: builtin/remote.c:767
+#: builtin/remote.c:770
 #, c-format
 msgid "deleting '%s' failed"
 msgstr "falha ao eliminar '%s'"
 
-#: builtin/remote.c:801
+#: builtin/remote.c:804
 #, c-format
 msgid "creating '%s' failed"
 msgstr "falha ao criar '%s'"
 
-#: builtin/remote.c:877
+#: builtin/remote.c:882
 msgid ""
 "Note: A branch outside the refs/remotes/ hierarchy was not removed;\n"
 "to delete it, use:"
@@ -19953,119 +20213,119 @@ msgstr[1] ""
 "Nota: alguns ramos fora da hierarquia refs/remotes/ não foram removidos;\n"
 "para os remover, use:"
 
-#: builtin/remote.c:891
+#: builtin/remote.c:896
 #, c-format
 msgid "Could not remove config section '%s'"
 msgstr "Não foi possível remover a secção de configuração '%s'"
 
-#: builtin/remote.c:994
+#: builtin/remote.c:999
 #, c-format
 msgid " new (next fetch will store in remotes/%s)"
 msgstr " novo (os próxima objetos obtidos serão guardados em remotes/%s)"
 
-#: builtin/remote.c:997
+#: builtin/remote.c:1002
 msgid " tracked"
 msgstr " seguido"
 
-#: builtin/remote.c:999
+#: builtin/remote.c:1004
 msgid " stale (use 'git remote prune' to remove)"
 msgstr " obsoleto (use 'git remote prune' para remover)"
 
-#: builtin/remote.c:1001
+#: builtin/remote.c:1006
 msgid " ???"
 msgstr " ???"
 
-#: builtin/remote.c:1042
+#: builtin/remote.c:1047
 #, c-format
 msgid "invalid branch.%s.merge; cannot rebase onto > 1 branch"
 msgstr ""
 "branch.%s.merge inválido; não é possível rebasear sobre mais do que um ramo"
 
-#: builtin/remote.c:1051
+#: builtin/remote.c:1056
 #, c-format
 msgid "rebases interactively onto remote %s"
 msgstr "rebaseia interativamente sobre %s do remoto"
 
-#: builtin/remote.c:1053
+#: builtin/remote.c:1058
 #, fuzzy, c-format
 msgid "rebases interactively (with merges) onto remote %s"
 msgstr "rebaseia interativamente sobre %s do remoto"
 
-#: builtin/remote.c:1056
+#: builtin/remote.c:1061
 #, c-format
 msgid "rebases onto remote %s"
 msgstr "rebaseia sobre %s do remoto"
 
-#: builtin/remote.c:1060
+#: builtin/remote.c:1065
 #, c-format
 msgid " merges with remote %s"
 msgstr " integra com %s do remoto"
 
-#: builtin/remote.c:1063
+#: builtin/remote.c:1068
 #, c-format
 msgid "merges with remote %s"
 msgstr "integra com %s do remoto"
 
-#: builtin/remote.c:1066
+#: builtin/remote.c:1071
 #, c-format
 msgid "%-*s    and with remote %s\n"
-msgstr "%-*s    e com o %s do remoto\n"
+msgstr "%-*s    e com o %s remote\n"
 
-#: builtin/remote.c:1109
+#: builtin/remote.c:1114
 msgid "create"
 msgstr "criado"
 
-#: builtin/remote.c:1112
+#: builtin/remote.c:1117
 msgid "delete"
 msgstr "eliminado"
 
-#: builtin/remote.c:1116
+#: builtin/remote.c:1121
 msgid "up to date"
 msgstr "atualizado"
 
-#: builtin/remote.c:1119
+#: builtin/remote.c:1124
 msgid "fast-forwardable"
 msgstr "pode ser avançado rapidamente"
 
-#: builtin/remote.c:1122
+#: builtin/remote.c:1127
 msgid "local out of date"
 msgstr "local desatualizado"
 
-#: builtin/remote.c:1129
+#: builtin/remote.c:1134
 #, c-format
 msgid "    %-*s forces to %-*s (%s)"
 msgstr "    %-*s força em %-*s (%s)"
 
-#: builtin/remote.c:1132
+#: builtin/remote.c:1137
 #, c-format
 msgid "    %-*s pushes to %-*s (%s)"
 msgstr "    %-*s publica em %-*s (%s)"
 
-#: builtin/remote.c:1136
+#: builtin/remote.c:1141
 #, c-format
 msgid "    %-*s forces to %s"
 msgstr "    %-*s força em %s"
 
-#: builtin/remote.c:1139
+#: builtin/remote.c:1144
 #, c-format
 msgid "    %-*s pushes to %s"
 msgstr "    %-*s publica em %s"
 
-#: builtin/remote.c:1207
+#: builtin/remote.c:1212
 msgid "do not query remotes"
 msgstr "não consultar remotos"
 
-#: builtin/remote.c:1234
+#: builtin/remote.c:1239
 #, c-format
 msgid "* remote %s"
 msgstr "* remoto %s"
 
-#: builtin/remote.c:1235
+#: builtin/remote.c:1240
 #, c-format
 msgid "  Fetch URL: %s"
 msgstr "  Obter    do URL: %s"
 
-#: builtin/remote.c:1236 builtin/remote.c:1252 builtin/remote.c:1391
+#: builtin/remote.c:1241 builtin/remote.c:1257 builtin/remote.c:1396
 msgid "(no URL)"
 msgstr "(nenhum URL)"
 
@@ -20073,176 +20333,176 @@ msgstr "(nenhum URL)"
 #. with the one in " Fetch URL: %s"
 #. translation.
 #.
-#: builtin/remote.c:1250 builtin/remote.c:1252
+#: builtin/remote.c:1255 builtin/remote.c:1257
 #, c-format
 msgid "  Push  URL: %s"
 msgstr "  Publicar no URL: %s"
 
-#: builtin/remote.c:1254 builtin/remote.c:1256 builtin/remote.c:1258
+#: builtin/remote.c:1259 builtin/remote.c:1261 builtin/remote.c:1263
 #, c-format
 msgid "  HEAD branch: %s"
 msgstr "  Ramo HEAD: %s"
 
-#: builtin/remote.c:1254
+#: builtin/remote.c:1259
 msgid "(not queried)"
 msgstr "(não consultado)"
 
-#: builtin/remote.c:1256
+#: builtin/remote.c:1261
 msgid "(unknown)"
 msgstr "(desconhecido)"
 
-#: builtin/remote.c:1260
+#: builtin/remote.c:1265
 #, c-format
 msgid ""
 "  HEAD branch (remote HEAD is ambiguous, may be one of the following):\n"
-msgstr "  Ramo HEAD (o remoto HEAD é ambíguo, pode ser um dos seguintes):\n"
+msgstr "  HEAD branch (HEAD remote é ambíguo, pode ser um dos seguintes):\n"
 
-#: builtin/remote.c:1272
+#: builtin/remote.c:1277
 #, c-format
 msgid "  Remote branch:%s"
 msgid_plural "  Remote branches:%s"
 msgstr[0] "  Ramo remoto:%s"
 msgstr[1] "  Ramos remotos:%s"
 
-#: builtin/remote.c:1275 builtin/remote.c:1301
+#: builtin/remote.c:1280 builtin/remote.c:1306
 msgid " (status not queried)"
 msgstr " (estado não consultado)"
 
-#: builtin/remote.c:1284
+#: builtin/remote.c:1289
 msgid "  Local branch configured for 'git pull':"
 msgid_plural "  Local branches configured for 'git pull':"
 msgstr[0] "  Ramo local configurado para 'git pull':"
 msgstr[1] "  Ramos locais configurados para 'git pull':"
 
-#: builtin/remote.c:1292
+#: builtin/remote.c:1297
 msgid "  Local refs will be mirrored by 'git push'"
 msgstr "  Referências locais serão refletidas (mirror) por 'git push'"
 
-#: builtin/remote.c:1298
+#: builtin/remote.c:1303
 #, c-format
 msgid "  Local ref configured for 'git push'%s:"
 msgid_plural "  Local refs configured for 'git push'%s:"
 msgstr[0] "  Referência local configurada para 'git push'%s:"
 msgstr[1] "  Referências locais configuradas para 'git push'%s:"
 
-#: builtin/remote.c:1319
+#: builtin/remote.c:1324
 msgid "set refs/remotes/<name>/HEAD according to remote"
 msgstr "definir refs/remotes/<nome>/HEAD de acordo com o remoto"
 
-#: builtin/remote.c:1321
+#: builtin/remote.c:1326
 msgid "delete refs/remotes/<name>/HEAD"
 msgstr "eliminar refs/remotes/<nome>/HEAD"
 
-#: builtin/remote.c:1336
+#: builtin/remote.c:1341
 msgid "Cannot determine remote HEAD"
 msgstr "Não é possível determinar o remoto HEAD"
 
-#: builtin/remote.c:1338
+#: builtin/remote.c:1343
 msgid "Multiple remote HEAD branches. Please choose one explicitly with:"
 msgstr "Múltiplos ramos HEAD remotos. Escolha um explicitamente com:"
 
-#: builtin/remote.c:1348
+#: builtin/remote.c:1353
 #, c-format
 msgid "Could not delete %s"
 msgstr "Não foi possível eliminar %s"
 
-#: builtin/remote.c:1356
+#: builtin/remote.c:1361
 #, c-format
 msgid "Not a valid ref: %s"
 msgstr "Referência inválida: %s"
 
-#: builtin/remote.c:1358
+#: builtin/remote.c:1363
 #, c-format
 msgid "Could not setup %s"
 msgstr "Não foi possível configurar %s"
 
-#: builtin/remote.c:1376
+#: builtin/remote.c:1381
 #, c-format
 msgid " %s will become dangling!"
 msgstr " %s ficará suspenso!"
 
-#: builtin/remote.c:1377
+#: builtin/remote.c:1382
 #, c-format
 msgid " %s has become dangling!"
 msgstr " %s ficou suspenso!"
 
-#: builtin/remote.c:1387
+#: builtin/remote.c:1392
 #, c-format
 msgid "Pruning %s"
 msgstr "A eliminar %s"
 
-#: builtin/remote.c:1388
+#: builtin/remote.c:1393
 #, c-format
 msgid "URL: %s"
 msgstr "URL: %s"
 
-#: builtin/remote.c:1404
+#: builtin/remote.c:1409
 #, c-format
 msgid " * [would prune] %s"
 msgstr " * [eliminaria] %s"
 
-#: builtin/remote.c:1407
+#: builtin/remote.c:1412
 #, c-format
 msgid " * [pruned] %s"
 msgstr " * [eliminado] %s"
 
-#: builtin/remote.c:1452
+#: builtin/remote.c:1457
 msgid "prune remotes after fetching"
 msgstr "eliminar remotos depois de obter"
 
-#: builtin/remote.c:1515 builtin/remote.c:1569 builtin/remote.c:1637
+#: builtin/remote.c:1521 builtin/remote.c:1577 builtin/remote.c:1647
 #, c-format
 msgid "No such remote '%s'"
 msgstr "Remoto inexistente '%s'"
 
-#: builtin/remote.c:1531
+#: builtin/remote.c:1539
 msgid "add branch"
 msgstr "adicionar ramo"
 
-#: builtin/remote.c:1538
+#: builtin/remote.c:1546
 msgid "no remote specified"
 msgstr "nenhum remoto especificado"
 
-#: builtin/remote.c:1555
+#: builtin/remote.c:1563
 msgid "query push URLs rather than fetch URLs"
 msgstr "consultar URLs de publicação em vez de URLs utilizados para obter"
 
-#: builtin/remote.c:1557
+#: builtin/remote.c:1565
 msgid "return all URLs"
 msgstr "retornar todos os URLs"
 
-#: builtin/remote.c:1585
+#: builtin/remote.c:1595
 #, c-format
 msgid "no URLs configured for remote '%s'"
 msgstr "o remoto '%s' não tem nenhum URL configurado"
 
-#: builtin/remote.c:1611
+#: builtin/remote.c:1621
 msgid "manipulate push URLs"
 msgstr "manipular URLs de publicação"
 
-#: builtin/remote.c:1613
+#: builtin/remote.c:1623
 msgid "add URL"
 msgstr "adicionar URL"
 
-#: builtin/remote.c:1615
+#: builtin/remote.c:1625
 msgid "delete URLs"
 msgstr "eliminar URLs"
 
-#: builtin/remote.c:1622
+#: builtin/remote.c:1632
 msgid "--add --delete doesn't make sense"
 msgstr "--add --delete não faz sentido"
 
-#: builtin/remote.c:1661
+#: builtin/remote.c:1673
 #, c-format
 msgid "Invalid old URL pattern: %s"
 msgstr "Padrão de URL antigo inválido: %s"
 
-#: builtin/remote.c:1669
+#: builtin/remote.c:1681
 #, c-format
 msgid "No such URL found: %s"
 msgstr "URL não encontrado: %s"
 
-#: builtin/remote.c:1671
+#: builtin/remote.c:1683
 msgid "Will not delete all non-push URLs"
 msgstr "Não é possível remover todos os URLs de não publicação"
 
@@ -20255,134 +20515,127 @@ msgid ""
 "Incremental repacks are incompatible with bitmap indexes.  Use\n"
 "--no-write-bitmap-index or disable the pack.writebitmaps configuration."
 msgstr ""
-"Repacks incrementais são incompatíveis com índices bitmap. Use\n"
+"Repacks incrementais são incompatíveis com bitmap indexes. Usa\n"
 "--no-write-bitmap-índex ou desative a configuração pack.writebitmaps."
 
 #: builtin/repack.c:197
 msgid "could not start pack-objects to repack promisor objects"
 msgstr ""
 
-#: builtin/repack.c:236 builtin/repack.c:421
+#: builtin/repack.c:268 builtin/repack.c:447
 msgid "repack: Expecting full hex object ID lines only from pack-objects."
 msgstr ""
 
-#: builtin/repack.c:260
+#: builtin/repack.c:295
 msgid "could not finish pack-objects to repack promisor objects"
 msgstr ""
 
-#: builtin/repack.c:297
+#: builtin/repack.c:323
 msgid "pack everything in a single pack"
 msgstr "compactar tudo num único pacote"
 
-#: builtin/repack.c:299
+#: builtin/repack.c:325
 msgid "same as -a, and turn unreachable objects loose"
 msgstr "o mesmo que -a, e soltar objetos inalcançáveis"
 
-#: builtin/repack.c:302
+#: builtin/repack.c:328
 msgid "remove redundant packs, and run git-prune-packed"
 msgstr "remover pacotes redundantes e executar git-prune-packed"
 
-#: builtin/repack.c:304
+#: builtin/repack.c:330
 msgid "pass --no-reuse-delta to git-pack-objects"
 msgstr "passar --no-reuse-delta ao git-pack-objects"
 
-#: builtin/repack.c:306
+#: builtin/repack.c:332
 msgid "pass --no-reuse-object to git-pack-objects"
 msgstr "passar --no-reuse-object ao git-pack-objects"
 
-#: builtin/repack.c:308
+#: builtin/repack.c:334
 msgid "do not run git-update-server-info"
 msgstr "não executar git-update-server-info"
 
-#: builtin/repack.c:311
+#: builtin/repack.c:337
 msgid "pass --local to git-pack-objects"
 msgstr "passar --local ao git-pack-objects"
 
-#: builtin/repack.c:313
+#: builtin/repack.c:339
 msgid "write bitmap index"
 msgstr "escrever índice de mapa de bits"
 
-#: builtin/repack.c:315
+#: builtin/repack.c:341
 #, fuzzy
 msgid "pass --delta-islands to git-pack-objects"
 msgstr "passar --local ao git-pack-objects"
 
-#: builtin/repack.c:316
+#: builtin/repack.c:342
 msgid "approxidate"
 msgstr "aproximar"
 
-#: builtin/repack.c:317
+#: builtin/repack.c:343
 msgid "with -A, do not loosen objects older than this"
 msgstr "com -A, não soltar mais objetos além destes"
 
-#: builtin/repack.c:319
+#: builtin/repack.c:345
 msgid "with -a, repack unreachable objects"
 msgstr "com -a, reempacotar objetos inalcançáveis"
 
-#: builtin/repack.c:321
+#: builtin/repack.c:347
 msgid "size of the window used for delta compression"
 msgstr "dimensão da janela usada em compressão de deltas"
 
-#: builtin/repack.c:322 builtin/repack.c:328
+#: builtin/repack.c:348 builtin/repack.c:354
 msgid "bytes"
 msgstr "bytes"
 
-#: builtin/repack.c:323
+#: builtin/repack.c:349
 msgid "same as the above, but limit memory size instead of entries count"
 msgstr ""
 "o mesmo que o anterior, mas limitar a memória usada em vez do número de "
 "entradas"
 
-#: builtin/repack.c:325
+#: builtin/repack.c:351
 msgid "limits the maximum delta depth"
 msgstr "limitar a profundidade máxima de delta"
 
-#: builtin/repack.c:327
+#: builtin/repack.c:353
 #, fuzzy
 msgid "limits the maximum number of threads"
 msgstr "limitar a profundidade máxima de delta"
 
-#: builtin/repack.c:329
+#: builtin/repack.c:355
 msgid "maximum size of each packfile"
 msgstr "tamanho máximo de cada ficheiro de pacote"
 
-#: builtin/repack.c:331
+#: builtin/repack.c:357
 msgid "repack objects in packs marked with .keep"
 msgstr "reempacotar objetos em pacotes marcados com .keep"
 
-#: builtin/repack.c:333
+#: builtin/repack.c:359
 #, fuzzy
 msgid "do not repack this pack"
 msgstr "criar pacotes finos"
 
-#: builtin/repack.c:343
+#: builtin/repack.c:369
 msgid "cannot delete packs in a precious-objects repo"
 msgstr "não é possível eliminar pacotes num repositório de objetos-preciosos"
 
-#: builtin/repack.c:347
+#: builtin/repack.c:373
 msgid "--keep-unreachable and -A are incompatible"
 msgstr "--keep-unreachable e -A são incompatíveis"
 
-#: builtin/repack.c:430
+#: builtin/repack.c:456
 msgid "Nothing new to pack."
 msgstr ""
 
 #: builtin/repack.c:486
-#, c-format
-msgid ""
-"WARNING: Some packs in use have been renamed by\n"
-"WARNING: prefixing old- to their name, in order to\n"
-"WARNING: replace them with the new version of the\n"
-"WARNING: file.  But the operation failed, and the\n"
-"WARNING: attempt to rename them back to their\n"
-"WARNING: original names also failed.\n"
-"WARNING: Please rename them in %s manually:\n"
-msgstr ""
+#, fuzzy, c-format
+msgid "missing required file: %s"
+msgstr "falta o objeto %s de %s"
 
-#: builtin/repack.c:534
-#, c-format
-msgid "failed to remove '%s'"
-msgstr "falha ao remover '%s'"
+#: builtin/repack.c:488
+#, fuzzy, c-format
+msgid "could not unlink: %s"
+msgstr "não foi possível bloquear '%s'"
 
 #: builtin/replace.c:22
 msgid "git replace [-f] <object> <replacement>"
@@ -20562,7 +20815,9 @@ msgstr ""
 msgid ""
 "could not convert the following graft(s):\n"
 "%s"
-msgstr "Removeria o seguinte item:"
+msgstr ""
+"Impossível converter os seguinte(s) graft(s):\n"
+"%s"
 
 #: builtin/replace.c:548
 msgid "list replace refs"
@@ -20721,8 +20976,8 @@ msgstr "HEAD está agora em %s"
 msgid "Cannot do a %s reset in the middle of a merge."
 msgstr "Não é possível repor de modo %s durante uma integração."
 
-#: builtin/reset.c:295 builtin/stash.c:520 builtin/stash.c:595
-#: builtin/stash.c:619
+#: builtin/reset.c:295 builtin/stash.c:520 builtin/stash.c:594
+#: builtin/stash.c:618
 msgid "be quiet, only report errors"
 msgstr "silencioso, só reportar erros"
 
@@ -20843,11 +21098,11 @@ msgid ""
 "Run \"git rev-parse --parseopt -h\" for more information on the first usage."
 msgstr ""
 "git rev-parse --parseopt [<opções>] -- [<argumentos>...]\n"
-"   or: git rev-parse --sq-quote [<argumentos>...]\n"
-"   or: git rev-parse [<opções>] [<argumentos>...]\n"
+"   ou: git rev-parse --sq-quote [<argumentos>...]\n"
+"   ou: git rev-parse [<opções>] [<argumentos>...]\n"
 "\n"
-"Execute \"git rev-parse --parseopt -h\" para obter mais informação sobre a "
-"primeira utilização."
+"Execute \"git rev-parse --parseopt -h\" para mais informação com a primeira "
+"utilização."
 
 #: builtin/revert.c:24
 msgid "git revert [<options>] <commit-ish>..."
@@ -20928,11 +21183,11 @@ msgstr "preservar commits inicialmente vazios"
 msgid "keep redundant, empty commits"
 msgstr "manter commits redundantes e vazios"
 
-#: builtin/revert.c:232
+#: builtin/revert.c:239
 msgid "revert failed"
 msgstr "falha ao reverter"
 
-#: builtin/revert.c:245
+#: builtin/revert.c:252
 msgid "cherry-pick failed"
 msgstr "falha ao efetuar cherry-pick"
 
@@ -20948,11 +21203,11 @@ msgid_plural ""
 "the following files have staged content different from both the\n"
 "file and the HEAD:"
 msgstr[0] ""
-"o seguinte ficheiro tem conteúdo preparado no índice diferente\n"
-"do conteúdo no ficheiro e em HEAD:"
+"o seguinte ficheiro tem staged content diferente quer no ficheiro\n"
+"quer em HEAD:"
 msgstr[1] ""
-"os seguintes ficheiros têm conteúdo preparado no índice diferente\n"
-"do conteúdo no ficheiro e em HEAD:"
+"os seguintes ficheiros têm staged content diferente quer no ficheiro\n"
+"quer em HEAD:"
 
 #: builtin/rm.c:212
 msgid ""
@@ -20960,7 +21215,7 @@ msgid ""
 "(use -f to force removal)"
 msgstr ""
 "\n"
-"(use -f para forçar remoção)"
+"(usa -f para forçar remoção)"
 
 #: builtin/rm.c:216
 msgid "the following file has changes staged in the index:"
@@ -21031,83 +21286,82 @@ msgid ""
 msgstr ""
 "git send-pack [--all | --mirror] [--dry-run] [--force] [--receive-pack=<git-"
 "receive-pack>] [--verbose] [--thin] [--atomic] [<host>:]<diretório> "
-"[<referência>...]\n"
-"  --all e especificação explicita duma <referência> são mutuamente "
-"exclusivos."
+"[<ref>...]\n"
+"  --all e <ref> explícito são mutuamente exclusivos."
 
-#: builtin/send-pack.c:182
+#: builtin/send-pack.c:188
 msgid "remote name"
 msgstr "nome do remoto"
 
-#: builtin/send-pack.c:195
+#: builtin/send-pack.c:201
 msgid "use stateless RPC protocol"
 msgstr "use protocolo RPC sem estado"
 
-#: builtin/send-pack.c:196
+#: builtin/send-pack.c:202
 msgid "read refs from stdin"
 msgstr "ler referências do stdin"
 
-#: builtin/send-pack.c:197
+#: builtin/send-pack.c:203
 msgid "print status from remote helper"
 msgstr "imprimir estado do programa auxiliar remoto"
 
-#: builtin/shortlog.c:15
+#: builtin/shortlog.c:16
 #, fuzzy
 msgid "git shortlog [<options>] [<revision-range>] [[--] <path>...]"
 msgstr ""
 "git shortlog [<opções>] [<intervalo-de-revisões>] [[--] [<caminho>...]]"
 
-#: builtin/shortlog.c:16
+#: builtin/shortlog.c:17
 #, fuzzy
 msgid "git log --pretty=short | git shortlog [<options>]"
 msgstr "git worktree list [<opções>]"
 
-#: builtin/shortlog.c:134
+#: builtin/shortlog.c:135
 msgid "using multiple --group options with stdin is not supported"
 msgstr ""
 
-#: builtin/shortlog.c:144
+#: builtin/shortlog.c:145
 msgid "using --group=trailer with stdin is not supported"
 msgstr ""
 
-#: builtin/shortlog.c:388
+#: builtin/shortlog.c:335
 #, fuzzy, c-format
 msgid "unknown group type: %s"
 msgstr "Tipo desconhecido: %d"
 
-#: builtin/shortlog.c:416
+#: builtin/shortlog.c:363
 msgid "Group by committer rather than author"
 msgstr "agrupar por committer em vez de autor"
 
-#: builtin/shortlog.c:419
+#: builtin/shortlog.c:366
 msgid "sort output according to the number of commits per author"
 msgstr "ordenar saída de acordo com o número de commits por autor"
 
-#: builtin/shortlog.c:421
+#: builtin/shortlog.c:368
 msgid "Suppress commit descriptions, only provides commit count"
 msgstr "suprimir a descrição dos commits, fornecer apenas o número de commits"
 
-#: builtin/shortlog.c:423
+#: builtin/shortlog.c:370
 msgid "Show the email address of each author"
 msgstr "Mostrar o endereço de e-mail de cada autor"
 
-#: builtin/shortlog.c:424
+#: builtin/shortlog.c:371
 msgid "<w>[,<i1>[,<i2>]]"
 msgstr ""
 
-#: builtin/shortlog.c:425
+#: builtin/shortlog.c:372
 msgid "Linewrap output"
 msgstr "ajustar linhas"
 
-#: builtin/shortlog.c:427
+#: builtin/shortlog.c:374
 msgid "field"
 msgstr ""
 
-#: builtin/shortlog.c:428
+#: builtin/shortlog.c:375
 msgid "Group by field"
 msgstr ""
 
-#: builtin/shortlog.c:456
+#: builtin/shortlog.c:403
 #, fuzzy
 msgid "too many arguments given outside repository"
 msgstr "%s: '%s' está fora do repositório"
@@ -21474,7 +21728,7 @@ msgstr "não foi possível ler '%s'."
 
 #: builtin/stash.c:422
 #, fuzzy
-msgid "conflicts in index.Try without --index."
+msgid "conflicts in index. Try without --index."
 msgstr "Conflitos no índice. Tente sem --index."
 
 #: builtin/stash.c:428
@@ -21490,134 +21744,134 @@ msgstr "Não foi possível restaurar os ficheiros não controlados da pilha"
 #: builtin/stash.c:451
 #, fuzzy, c-format
 msgid "Merging %s with %s"
-msgstr "A integrar %s com %s\n"
+msgstr "A fazer merge %s com %s"
 
 #: builtin/stash.c:461
 msgid "Index was not unstashed."
 msgstr "O índice não foi reposto."
 
-#: builtin/stash.c:522 builtin/stash.c:621
+#: builtin/stash.c:522 builtin/stash.c:620
 #, fuzzy
 msgid "attempt to recreate the index"
 msgstr "falha ao ler o índice"
 
-#: builtin/stash.c:555
+#: builtin/stash.c:566
 #, fuzzy, c-format
 msgid "Dropped %s (%s)"
 msgstr "A descartar ${REV} ($s)"
 
-#: builtin/stash.c:558
+#: builtin/stash.c:569
 #, fuzzy, c-format
 msgid "%s: Could not drop stash entry"
 msgstr "${REV}: Não foi possível descartar elemento da pilha"
 
-#: builtin/stash.c:583
+#: builtin/stash.c:582
 #, fuzzy, c-format
 msgid "'%s' is not a stash reference"
 msgstr "'$args' não é uma referência de pilha"
 
-#: builtin/stash.c:633
+#: builtin/stash.c:632
 #, fuzzy
 msgid "The stash entry is kept in case you need it again."
 msgstr "A pilha é guarda no caso de precisar dela de novo."
 
-#: builtin/stash.c:656
+#: builtin/stash.c:655
 msgid "No branch name specified"
 msgstr "Nenhum nome de ramo especificado"
 
-#: builtin/stash.c:800 builtin/stash.c:837
+#: builtin/stash.c:799 builtin/stash.c:836
 #, fuzzy, c-format
 msgid "Cannot update %s with %s"
 msgstr "Não é possível atualizar $ref_stash com $w_commit"
 
-#: builtin/stash.c:818 builtin/stash.c:1472 builtin/stash.c:1537
+#: builtin/stash.c:817 builtin/stash.c:1471 builtin/stash.c:1536
 #, fuzzy
 msgid "stash message"
 msgstr "mensagem da tag"
 
-#: builtin/stash.c:828
+#: builtin/stash.c:827
 msgid "\"git stash store\" requires one <commit> argument"
 msgstr ""
 
-#: builtin/stash.c:1043
+#: builtin/stash.c:1042
 msgid "No changes selected"
 msgstr "Nenhuma alteração selecionada"
 
-#: builtin/stash.c:1143
+#: builtin/stash.c:1142
 msgid "You do not have the initial commit yet"
 msgstr "O commit inicial ainda não existe"
 
-#: builtin/stash.c:1170
+#: builtin/stash.c:1169
 msgid "Cannot save the current index state"
 msgstr "Não é possível guardar o estado atual do índice"
 
-#: builtin/stash.c:1179
+#: builtin/stash.c:1178
 msgid "Cannot save the untracked files"
 msgstr "Não é possível guardar os ficheiros não controlados"
 
-#: builtin/stash.c:1190 builtin/stash.c:1199
+#: builtin/stash.c:1189 builtin/stash.c:1198
 msgid "Cannot save the current worktree state"
 msgstr "Não é possível guardar o estado atual da árvore de trabalho"
 
-#: builtin/stash.c:1227
+#: builtin/stash.c:1226
 msgid "Cannot record working tree state"
 msgstr "Não é possível gravar o estado da árvore de trabalho"
 
-#: builtin/stash.c:1276
+#: builtin/stash.c:1275
 msgid "Can't use --patch and --include-untracked or --all at the same time"
 msgstr ""
 "Não é possível usar --patch e --include-untracked ou --all ao mesmo tempo"
 
-#: builtin/stash.c:1292
+#: builtin/stash.c:1291
 #, fuzzy
 msgid "Did you forget to 'git add'?"
-msgstr "Queria dizer 'git add .'?\n"
+msgstr "Será que falta 'git add'?"
 
-#: builtin/stash.c:1307
+#: builtin/stash.c:1306
 msgid "No local changes to save"
 msgstr "Não há alterações locais para guardar"
 
-#: builtin/stash.c:1314
+#: builtin/stash.c:1313
 msgid "Cannot initialize stash"
 msgstr "Não é possível inicializar a pilha"
 
-#: builtin/stash.c:1329
+#: builtin/stash.c:1328
 msgid "Cannot save the current status"
 msgstr "Não é possível guardar o estado atual"
 
-#: builtin/stash.c:1334
+#: builtin/stash.c:1333
 #, fuzzy, c-format
 msgid "Saved working directory and index state %s"
 msgstr "Diretório de trabalho e estado do índice $stash_msg guardados"
 
-#: builtin/stash.c:1424
+#: builtin/stash.c:1423
 msgid "Cannot remove worktree changes"
 msgstr "Não é possível remover as alterações da árvore de trabalho"
 
-#: builtin/stash.c:1463 builtin/stash.c:1528
+#: builtin/stash.c:1462 builtin/stash.c:1527
 msgid "keep index"
 msgstr ""
 
-#: builtin/stash.c:1465 builtin/stash.c:1530
+#: builtin/stash.c:1464 builtin/stash.c:1529
 msgid "stash in patch mode"
 msgstr ""
 
-#: builtin/stash.c:1466 builtin/stash.c:1531
+#: builtin/stash.c:1465 builtin/stash.c:1530
 #, fuzzy
 msgid "quiet mode"
 msgstr "silencioso"
 
-#: builtin/stash.c:1468 builtin/stash.c:1533
+#: builtin/stash.c:1467 builtin/stash.c:1532
 #, fuzzy
 msgid "include untracked files in stash"
 msgstr "listar ficheiros não controlados em colunas"
 
-#: builtin/stash.c:1470 builtin/stash.c:1535
+#: builtin/stash.c:1469 builtin/stash.c:1534
 #, fuzzy
 msgid "include ignore files"
 msgstr "mostrar ficheiros ignorados"
 
-#: builtin/stash.c:1570
+#: builtin/stash.c:1569
 msgid ""
 "the stash.useBuiltin support has been removed!\n"
 "See its entry in 'git help config' for details."
@@ -21671,7 +21925,7 @@ msgstr "Nenhum URL encontrado para o caminho de submódulo '%s' em .gitmodules"
 #: builtin/submodule--helper.c:524
 #, fuzzy, c-format
 msgid "Entering '%s'\n"
-msgstr "a substituir '%s'"
+msgstr "Entrando em '%s'\n"
 
 #: builtin/submodule--helper.c:527
 #, c-format
@@ -21719,12 +21973,12 @@ msgstr "Falha ao registar o URL do caminho de submódulo '%s'"
 #: builtin/submodule--helper.c:670
 #, c-format
 msgid "Submodule '%s' (%s) registered for path '%s'\n"
-msgstr "Submódulo '%s' (%s) registado com caminho '%s'\n"
+msgstr "Submódulo '%s' (%s) registado para path '%s'\n"
 
 #: builtin/submodule--helper.c:680
 #, c-format
 msgid "warning: command update mode suggested for submodule '%s'\n"
-msgstr "aviso: modo de atualização do comando sugerido para o submódulo '%s'\n"
+msgstr "aviso: modo command update sugerido para submódulo '%s'\n"
 
 #: builtin/submodule--helper.c:687
 #, c-format
@@ -21804,7 +22058,7 @@ msgstr "não foi possível analisar o objeto '%s'"
 #: builtin/submodule--helper.c:1059
 #, fuzzy, c-format
 msgid "unexpected mode %o\n"
-msgstr "modo inesperado $mod_dst"
+msgstr "estou à espera de um modo diferente de %o\n"
 
 #: builtin/submodule--helper.c:1300
 #, fuzzy
@@ -21842,7 +22096,7 @@ msgstr "--deepen e --depth são mutuamente exclusivos"
 #: builtin/submodule--helper.c:1407
 #, fuzzy, c-format
 msgid "Synchronizing submodule url for '%s'\n"
-msgstr "A sincronizar o URL do submódulo '$displaypath'"
+msgstr "Sincronizando URL do submódule '%s'\n"
 
 #: builtin/submodule--helper.c:1413
 #, fuzzy, c-format
@@ -21875,8 +22129,8 @@ 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 ""
-"A árvore de trabalho do submódulo '$displaypath' contém um diretório .git\n"
-"(use 'rm -rf' se pretende mesmo removê-lo, incluindo todo o seu histórico)"
+"Submodule work tree '%s' tem uma pasta .git (usa 'rm -rf' se queres mesmo "
+"removê-la e remover toda a história)"
 
 #: builtin/submodule--helper.c:1558
 #, fuzzy, c-format
@@ -21890,13 +22144,12 @@ msgstr ""
 #: builtin/submodule--helper.c:1566
 #, fuzzy, c-format
 msgid "Cleared directory '%s'\n"
-msgstr "Diretório '$displaypath' limpo"
+msgstr "Pasta '%s' limpa\n"
 
 #: builtin/submodule--helper.c:1568
 #, fuzzy, c-format
 msgid "Could not remove submodule work tree '%s'\n"
-msgstr ""
-"Não foi possível remover a árvore de trabalho do submódulo '$displaypath'"
+msgstr "Impossível remover submodule work tree '%s'\n"
 
 #: builtin/submodule--helper.c:1579
 #, fuzzy, c-format
@@ -21906,7 +22159,7 @@ msgstr "Não foi possível criar o diretório vazio do submódulo '$displaypath'
 #: builtin/submodule--helper.c:1595
 #, fuzzy, c-format
 msgid "Submodule '%s' (%s) unregistered for path '%s'\n"
-msgstr "Submódulo '%s' (%s) registado com caminho '%s'\n"
+msgstr "Submódulo '%s' (%s) unregistred para caminho '%s'\n"
 
 #: builtin/submodule--helper.c:1624
 msgid "Remove submodule working trees even if they contain local changes"
@@ -22130,7 +22383,7 @@ msgstr "git submodule--helper init [<caminho>]"
 msgid "git submodule--helper config --check-writeable"
 msgstr "git submodule--helper init [<caminho>]"
 
-#: builtin/submodule--helper.c:2665 git-submodule.sh:151
+#: builtin/submodule--helper.c:2665 git-submodule.sh:150
 #, fuzzy, sh-format
 msgid "please make sure that the .gitmodules file is in the working tree"
 msgstr ""
@@ -22177,7 +22430,7 @@ msgstr "nome do ramo é obrigatório"
 msgid "--branch and --default are mutually exclusive"
 msgstr "--deepen e --depth são mutuamente exclusivos"
 
-#: builtin/submodule--helper.c:2792 git.c:438 git.c:710
+#: builtin/submodule--helper.c:2792 git.c:438 git.c:711
 #, c-format
 msgid "%s doesn't support --super-prefix"
 msgstr "%s não suporta --super-prefix"
@@ -22208,11 +22461,11 @@ msgstr "eliminar referências simbólicas"
 msgid "shorten ref output"
 msgstr "encurtar a apresentação de referências"
 
-#: builtin/symbolic-ref.c:43 builtin/update-ref.c:486
+#: builtin/symbolic-ref.c:43 builtin/update-ref.c:499
 msgid "reason"
 msgstr "razão"
 
-#: builtin/symbolic-ref.c:43 builtin/update-ref.c:486
+#: builtin/symbolic-ref.c:43 builtin/update-ref.c:499
 msgid "reason of the update"
 msgstr "razão da atualização"
 
@@ -22222,8 +22475,8 @@ msgid ""
 "git tag [-a | -s | -u <key-id>] [-f] [-m <msg> | -F <file>]\n"
 "\t\t<tagname> [<head>]"
 msgstr ""
-"git tag [-a | -s | -u <id-chave>] [-f] [-m <msg> | -F <ficheiro>] <nome-da-"
-"tag> [<head>]"
+"git tag [-a | -s | -u <key-id>] [-f] [-m <msg> | -F <ficheiro>]\n"
+"\t\t<tagname> [<head>]"
 
 #: builtin/tag.c:27
 msgid "git tag -d <tagname>..."
@@ -22239,7 +22492,8 @@ msgid ""
 msgstr ""
 "git tag -l [-n[<num>]] [--contains <commit>] [--no-contains <commit>] [--"
 "points-at <objeto>]\n"
-"\t\t[--format=<formato>] [--[no-]merged [<commit>]] [<padrão>...]"
+"\t\t[--format=<formato>] [--merged [<commit>] [--no-merged <commit>] "
+"[<pattern>...]"
 
 #: builtin/tag.c:30
 msgid "git tag -v [--format=<format>] <tagname>..."
@@ -22253,7 +22507,7 @@ msgstr "tag '%s' não encontrada."
 #: builtin/tag.c:105
 #, c-format
 msgid "Deleted tag '%s' (was %s)\n"
-msgstr "Tag '%s' eliminada (era %s)\n"
+msgstr "Apaguei tag '%s' (era %s)\n"
 
 #: builtin/tag.c:135
 #, c-format
@@ -22264,7 +22518,7 @@ msgid ""
 "Lines starting with '%c' will be ignored.\n"
 msgstr ""
 "\n"
-"Escreva a mensagem da tag:\n"
+"Escreve mensagem para tag:\n"
 "  %s\n"
 "Linha começadas com '%c' serão ignoradas.\n"
 
@@ -22278,9 +22532,9 @@ msgid ""
 "want to.\n"
 msgstr ""
 "\n"
-"Escreva a mensagem da tag:\n"
+"Escreve mensagem para tag:\n"
 "  %s\n"
-"Linhas começadas com '%c' serão mantidas; pode removê-las se o desejar.\n"
+"Linhas começadas com '%c' serão mantidas; se queres, podes apagá-las.\n"
 
 #: builtin/tag.c:198
 msgid "unable to sign the tag"
@@ -22310,7 +22564,7 @@ msgstr "sem mensagem de tag?"
 #: builtin/tag.c:292
 #, c-format
 msgid "The tag message has been left in %s\n"
-msgstr "A mensagem da tag foi guardada em %s\n"
+msgstr "Deixei a mensagem da tag em %s\n"
 
 #: builtin/tag.c:403
 msgid "list tag names"
@@ -22357,7 +22611,7 @@ msgstr "usar outra chave para assinar a tag"
 msgid "replace the tag if exists"
 msgstr "substituir a tag se esta existir"
 
-#: builtin/tag.c:422 builtin/update-ref.c:492
+#: builtin/tag.c:422 builtin/update-ref.c:505
 msgid "create a reflog"
 msgstr "criar um reflog"
 
@@ -22434,7 +22688,7 @@ msgstr "a tag '%s' já existe"
 #: builtin/tag.c:585
 #, c-format
 msgid "Updated tag '%s' (was %s)\n"
-msgstr "Tag '%s' atualizada (era %s)\n"
+msgstr "Atualizei tag '%s' (era %s)\n"
 
 #: builtin/unpack-objects.c:502
 msgid "Unpacking objects"
@@ -22725,20 +22979,20 @@ msgstr ""
 msgid "git update-ref [<options>] --stdin [-z]"
 msgstr "git update-ref [<opções>] --stdin [-z]"
 
-#: builtin/update-ref.c:487
+#: builtin/update-ref.c:500
 msgid "delete the reference"
 msgstr "eliminar a referência"
 
-#: builtin/update-ref.c:489
+#: builtin/update-ref.c:502
 msgid "update <refname> not the one it points to"
 msgstr ""
 "atualizar a referência <nome-da-referência>, não a referência que esta aponta"
 
-#: builtin/update-ref.c:490
+#: builtin/update-ref.c:503
 msgid "stdin has NUL-terminated arguments"
 msgstr "os argumentos da entrada padrão terminam em NUL"
 
-#: builtin/update-ref.c:491
+#: builtin/update-ref.c:504
 msgid "read updates from stdin"
 msgstr "ler atualizações da entrada padrão"
 
@@ -22833,7 +23087,7 @@ msgstr "git worktree lock [<opções>] <caminho>"
 msgid "git worktree unlock <path>"
 msgstr "git worktree unlock <caminho>"
 
-#: builtin/worktree.c:60 builtin/worktree.c:970
+#: builtin/worktree.c:60 builtin/worktree.c:973
 #, fuzzy, c-format
 msgid "failed to delete '%s'"
 msgstr "falha ao executar '%s'"
@@ -22974,120 +23228,120 @@ msgstr "-b, -B e --detach são mutuamente exclusivos"
 msgid "--[no-]track can only be used if a new branch is created"
 msgstr "A ação --edit-todo só pode ser usada durante um rebase interativo."
 
-#: builtin/worktree.c:755
+#: builtin/worktree.c:758
 msgid "reason for locking"
 msgstr "razão de trancar"
 
-#: builtin/worktree.c:767 builtin/worktree.c:800 builtin/worktree.c:874
-#: builtin/worktree.c:998
+#: builtin/worktree.c:770 builtin/worktree.c:803 builtin/worktree.c:877
+#: builtin/worktree.c:1001
 #, c-format
 msgid "'%s' is not a working tree"
 msgstr "'%s' não é uma árvore de trabalho"
 
-#: builtin/worktree.c:769 builtin/worktree.c:802
+#: builtin/worktree.c:772 builtin/worktree.c:805
 msgid "The main working tree cannot be locked or unlocked"
 msgstr "A árvore de trabalho principal não pode ser trancada nem destrancada"
 
-#: builtin/worktree.c:774
+#: builtin/worktree.c:777
 #, c-format
 msgid "'%s' is already locked, reason: %s"
 msgstr "'%s' já está trancada, razão: %s"
 
-#: builtin/worktree.c:776
+#: builtin/worktree.c:779
 #, c-format
 msgid "'%s' is already locked"
 msgstr "'%s' já está trancada"
 
-#: builtin/worktree.c:804
+#: builtin/worktree.c:807
 #, c-format
 msgid "'%s' is not locked"
 msgstr "'%s' não está trancada"
 
-#: builtin/worktree.c:845
+#: builtin/worktree.c:848
 msgid "working trees containing submodules cannot be moved or removed"
 msgstr ""
 
-#: builtin/worktree.c:853
+#: builtin/worktree.c:856
 #, fuzzy
 msgid "force move even if worktree is dirty or locked"
 msgstr "forçar mover/mudar o nome mesmo que o destino exista"
 
-#: builtin/worktree.c:876 builtin/worktree.c:1000
+#: builtin/worktree.c:879 builtin/worktree.c:1003
 #, fuzzy, c-format
 msgid "'%s' is a main working tree"
 msgstr "'%s' não é uma árvore de trabalho"
 
-#: builtin/worktree.c:881
+#: builtin/worktree.c:884
 #, fuzzy, c-format
 msgid "could not figure out destination name from '%s'"
 msgstr "não foi possível migrar o diretório git de '%s' para '%s'"
 
-#: builtin/worktree.c:894
+#: builtin/worktree.c:897
 #, c-format
 msgid ""
 "cannot move a locked working tree, lock reason: %s\n"
 "use 'move -f -f' to override or unlock first"
 msgstr ""
 
-#: builtin/worktree.c:896
+#: builtin/worktree.c:899
 msgid ""
 "cannot move a locked working tree;\n"
 "use 'move -f -f' to override or unlock first"
 msgstr ""
 
-#: builtin/worktree.c:899
+#: builtin/worktree.c:902
 #, c-format
 msgid "validation failed, cannot move working tree: %s"
 msgstr ""
 
-#: builtin/worktree.c:904
+#: builtin/worktree.c:907
 #, fuzzy, c-format
 msgid "failed to move '%s' to '%s'"
 msgstr "falha ao abrir '%s': %s"
 
-#: builtin/worktree.c:950
+#: builtin/worktree.c:953
 #, fuzzy, c-format
 msgid "failed to run 'git status' on '%s'"
 msgstr "falha ao escrever para '%s'"
 
-#: builtin/worktree.c:954
+#: builtin/worktree.c:957
 #, c-format
 msgid "'%s' contains modified or untracked files, use --force to delete it"
 msgstr ""
 
-#: builtin/worktree.c:959
+#: builtin/worktree.c:962
 #, fuzzy, c-format
 msgid "failed to run 'git status' on '%s', code %d"
 msgstr "não foi possível executar 'git status' no submódulo '%s'"
 
-#: builtin/worktree.c:982
+#: builtin/worktree.c:985
 msgid "force removal even if worktree is dirty or locked"
 msgstr ""
 
-#: builtin/worktree.c:1005
+#: builtin/worktree.c:1008
 #, c-format
 msgid ""
 "cannot remove a locked working tree, lock reason: %s\n"
 "use 'remove -f -f' to override or unlock first"
 msgstr ""
 
-#: builtin/worktree.c:1007
+#: builtin/worktree.c:1010
 msgid ""
 "cannot remove a locked working tree;\n"
 "use 'remove -f -f' to override or unlock first"
 msgstr ""
 
-#: builtin/worktree.c:1010
+#: builtin/worktree.c:1013
 #, c-format
 msgid "validation failed, cannot remove working tree: %s"
 msgstr ""
 
-#: builtin/worktree.c:1034
+#: builtin/worktree.c:1037
 #, fuzzy, c-format
 msgid "repair: %s: %s"
 msgstr "%s: %s"
 
-#: builtin/worktree.c:1037
+#: builtin/worktree.c:1040
 #, fuzzy, c-format
 msgid "error: %s: %s"
 msgstr "%s: %s"
@@ -23118,6 +23372,16 @@ msgstr ""
 msgid "not a git repository"
 msgstr "Não é um repositório git"
 
+#: t/helper/test-fast-rebase.c:141
+#, fuzzy
+msgid "unhandled options"
+msgstr "Opções gerais"
+
+#: t/helper/test-fast-rebase.c:146
+#, fuzzy
+msgid "error preparing revisions"
+msgstr "Erro ao rematar %s."
+
 #: t/helper/test-reach.c:154
 #, fuzzy, c-format
 msgid "commit %s is not marked reachable"
@@ -23155,9 +23419,10 @@ msgid ""
 "to read about a specific subcommand or concept.\n"
 "See 'git help git' for an overview of the system."
 msgstr ""
-"'git help -a' e 'git help -g' listam os subcomandos disponíveis e alguns\n"
-"guias de conceitos. Consulte 'git help <comando>' ou 'git help <conceito>'\n"
-"para ler sobre um subcomando ou conceito específico."
+"'git help -a' e 'git help -g' listam subcomandos disponíveis e alguns\n"
+"guias de conceitos. Consulta 'git help <comando>' ou 'git help <conceito>'\n"
+"para ler sobre um subcomando específico ou conceito específico.\n"
+"Vê 'git help git' para visão geral do sistema."
 
 #: git.c:187
 #, c-format
@@ -23177,7 +23442,7 @@ msgstr ""
 #: git.c:229
 #, fuzzy, c-format
 msgid "no prefix given for --super-prefix\n"
-msgstr "%s não suporta --super-prefix"
+msgstr "--super-prefix recebeu prefixo nenhum\n"
 
 #: git.c:251
 #, c-format
@@ -23192,7 +23457,7 @@ msgstr ""
 #: git.c:315
 #, fuzzy, c-format
 msgid "unknown option: %s\n"
-msgstr "opção desconhecido %s"
+msgstr "desconheço opção: %s\n"
 
 #: git.c:364
 #, c-format
@@ -23231,32 +23496,34 @@ msgstr "mostrar ações na saída padrão"
 msgid "close failed on standard output"
 msgstr "enviar resultados para a saída padrão"
 
-#: git.c:819
+#: git.c:820
 #, c-format
 msgid "alias loop detected: expansion of '%s' does not terminate:%s"
 msgstr ""
 
-#: git.c:869
+#: git.c:870
 #, fuzzy, c-format
 msgid "cannot handle %s as a builtin"
 msgstr "não é possível enviar mensagem como 7bit"
 
-#: git.c:882
+#: git.c:883
 #, fuzzy, c-format
 msgid ""
 "usage: %s\n"
 "\n"
-msgstr "utilização: %s"
+msgstr ""
+"utilização: %s\n"
+"\n"
 
-#: git.c:902
+#: git.c:903
 #, c-format
 msgid "expansion of alias '%s' failed; '%s' is not a git command\n"
 msgstr ""
 
-#: git.c:914
+#: git.c:915
 #, fuzzy, c-format
 msgid "failed to run command '%s': %s\n"
-msgstr "falha ao abrir '%s': %s"
+msgstr "incapaz de executar comando '%s': %s\n"
 
 #: http.c:399
 #, c-format
@@ -23303,142 +23570,142 @@ msgid ""
 "  asked for: %s\n"
 "   redirect: %s"
 msgstr ""
-"não é possível atualizar base de url de redireção:\n"
-"  pedido para: %s\n"
-"    redireção: %s"
+"incapaz de atualizar base url da redireção:\n"
+"  pedi: %s\n"
+"   redireção: %s"
 
-#: remote-curl.c:174
+#: remote-curl.c:183
 #, fuzzy, c-format
 msgid "invalid quoting in push-option value: '%s'"
 msgstr "opção inválida: %s"
 
-#: remote-curl.c:298
+#: remote-curl.c:307
 #, fuzzy, c-format
 msgid "%sinfo/refs not valid: is this a git repository?"
 msgstr "'%s' não é reconhecido como um repositório git"
 
-#: remote-curl.c:399
+#: remote-curl.c:408
 msgid "invalid server response; expected service, got flush packet"
 msgstr ""
 
-#: remote-curl.c:430
+#: remote-curl.c:439
 #, fuzzy, c-format
 msgid "invalid server response; got '%s'"
 msgstr "referência inválida: %s"
 
-#: remote-curl.c:490
+#: remote-curl.c:499
 #, fuzzy, c-format
 msgid "repository '%s' not found"
 msgstr "o repositório '%s' não existe"
 
-#: remote-curl.c:494
+#: remote-curl.c:503
 #, fuzzy, c-format
 msgid "Authentication failed for '%s'"
 msgstr "Falha ao executar: $rest"
 
-#: remote-curl.c:498
+#: remote-curl.c:507
 #, c-format
 msgid "unable to access '%s': %s"
 msgstr "não é possível aceder a '%s': %s"
 
-#: remote-curl.c:504
+#: remote-curl.c:513
 #, c-format
 msgid "redirecting to %s"
 msgstr "a redirecionar para %s "
 
-#: remote-curl.c:633
+#: remote-curl.c:642
 msgid "shouldn't have EOF when not gentle on EOF"
 msgstr ""
 
-#: remote-curl.c:645
+#: remote-curl.c:654
 msgid "remote server sent stateless separator"
 msgstr ""
 
-#: remote-curl.c:715
+#: remote-curl.c:724
 msgid "unable to rewind rpc post data - try increasing http.postBuffer"
 msgstr ""
 
-#: remote-curl.c:745
+#: remote-curl.c:754
 #, c-format
 msgid "remote-curl: bad line length character: %.4s"
 msgstr ""
 
-#: remote-curl.c:747
+#: remote-curl.c:756
 msgid "remote-curl: unexpected response end packet"
 msgstr ""
 
-#: remote-curl.c:823
+#: remote-curl.c:832
 #, fuzzy, c-format
 msgid "RPC failed; %s"
 msgstr "falha: %d"
 
-#: remote-curl.c:863
+#: remote-curl.c:872
 #, fuzzy
 msgid "cannot handle pushes this big"
 msgstr "não é possível processar mais do que %d revisão."
 
-#: remote-curl.c:978
+#: remote-curl.c:987
 #, c-format
 msgid "cannot deflate request; zlib deflate error %d"
 msgstr ""
 
-#: remote-curl.c:982
+#: remote-curl.c:991
 #, c-format
 msgid "cannot deflate request; zlib end error %d"
 msgstr ""
 
-#: remote-curl.c:1032
+#: remote-curl.c:1041
 #, c-format
 msgid "%d bytes of length header were received"
 msgstr ""
 
-#: remote-curl.c:1034
+#: remote-curl.c:1043
 #, c-format
 msgid "%d bytes of body are still expected"
 msgstr ""
 
-#: remote-curl.c:1123
+#: remote-curl.c:1132
 #, fuzzy
 msgid "dumb http transport does not support shallow capabilities"
 msgstr "O servidor não suporta clientes rasos"
 
-#: remote-curl.c:1138
+#: remote-curl.c:1147
 #, fuzzy
 msgid "fetch failed."
 msgstr "falha ao executar o comando stash"
 
-#: remote-curl.c:1184
+#: remote-curl.c:1193
 msgid "cannot fetch by sha1 over smart http"
 msgstr ""
 
-#: remote-curl.c:1228 remote-curl.c:1234
+#: remote-curl.c:1237 remote-curl.c:1243
 #, fuzzy, c-format
 msgid "protocol error: expected sha/ref, got '%s'"
 msgstr "erro de protocolo: cabeçalho de pacote incorreto"
 
-#: remote-curl.c:1246 remote-curl.c:1361
+#: remote-curl.c:1255 remote-curl.c:1373
 #, fuzzy, c-format
 msgid "http transport does not support %s"
 msgstr "O servidor não suporta STARTTLS! %s"
 
-#: remote-curl.c:1282
+#: remote-curl.c:1291
 #, fuzzy
 msgid "git-http-push failed"
 msgstr "falha ao executar o comando stash"
 
-#: remote-curl.c:1467
+#: remote-curl.c:1479
 msgid "remote-curl: usage: git remote-curl <remote> [<url>]"
 msgstr ""
 
-#: remote-curl.c:1499
+#: remote-curl.c:1511
 msgid "remote-curl: error reading command stream from git"
 msgstr ""
 
-#: remote-curl.c:1506
+#: remote-curl.c:1518
 msgid "remote-curl: fetch attempted without a local repo"
 msgstr ""
 
-#: remote-curl.c:1547
+#: remote-curl.c:1559
 #, c-format
 msgid "remote-curl: unknown command '%s' from git"
 msgstr ""
@@ -23450,7 +23717,7 @@ msgstr ""
 #: compat/compiler.h:38
 #, fuzzy
 msgid "no libc information available\n"
-msgstr "mostrar informação do ramo"
+msgstr "informação libc indisponível\n"
 
 #: list-objects-filter-options.h:91
 msgid "args"
@@ -23731,187 +23998,185 @@ msgid "Output information on each ref"
 msgstr "atualizar informação de stat no ficheiro de índice"
 
 #: command-list.h:99
-msgid "Prepare patches for e-mail submission"
+msgid "Run a Git command on a list of repositories"
 msgstr ""
 
 #: command-list.h:100
+msgid "Prepare patches for e-mail submission"
+msgstr ""
+
+#: command-list.h:101
 #, fuzzy
 msgid "Verifies the connectivity and validity of the objects in the database"
 msgstr "escrever o objeto na base de dados de objetos"
 
-#: command-list.h:101
+#: command-list.h:102
 msgid "Cleanup unnecessary files and optimize the local repository"
 msgstr ""
 
-#: command-list.h:102
+#: command-list.h:103
 msgid "Extract commit ID from an archive created using git-archive"
 msgstr ""
 
-#: command-list.h:103
+#: command-list.h:104
 msgid "Print lines matching a pattern"
 msgstr "Imprimir linhas que correspondam a um padrão"
 
-#: command-list.h:104
+#: command-list.h:105
 msgid "A portable graphical interface to Git"
 msgstr ""
 
-#: command-list.h:105
+#: command-list.h:106
 msgid "Compute object ID and optionally creates a blob from a file"
 msgstr ""
 
-#: command-list.h:106
+#: command-list.h:107
 msgid "Display help information about Git"
 msgstr ""
 
-#: command-list.h:107
+#: command-list.h:108
 msgid "Server side implementation of Git over HTTP"
 msgstr ""
 
-#: command-list.h:108
+#: command-list.h:109
 #, fuzzy
 msgid "Download from a remote Git repository via HTTP"
 msgstr "Transferir objetos e referências doutro repositório"
 
-#: command-list.h:109
+#: command-list.h:110
 #, fuzzy
 msgid "Push objects over HTTP/DAV to another repository"
 msgstr "Transferir objetos e referências doutro repositório"
 
-#: command-list.h:110
+#: command-list.h:111
 msgid "Send a collection of patches from stdin to an IMAP folder"
 msgstr ""
 
-#: command-list.h:111
+#: command-list.h:112
 msgid "Build pack index file for an existing packed archive"
 msgstr ""
 
-#: command-list.h:112
+#: command-list.h:113
 msgid "Create an empty Git repository or reinitialize an existing one"
 msgstr "Criar um repositório Git vazio ou reinicializar um já existente"
 
-#: command-list.h:113
+#: command-list.h:114
 msgid "Instantly browse your working repository in gitweb"
 msgstr ""
 
-#: command-list.h:114
+#: command-list.h:115
 msgid "Add or parse structured information in commit messages"
 msgstr ""
 
-#: command-list.h:115
+#: command-list.h:116
 #, fuzzy
 msgid "The Git repository browser"
 msgstr "Não é um repositório git"
 
-#: command-list.h:116
+#: command-list.h:117
 msgid "Show commit logs"
 msgstr "Mostrar histórico de commits"
 
-#: command-list.h:117
+#: command-list.h:118
 #, fuzzy
 msgid "Show information about files in the index and the working tree"
 msgstr "e fez alterações ao índice e/ou à árvore de trabalho"
 
-#: command-list.h:118
+#: command-list.h:119
 #, fuzzy
 msgid "List references in a remote repository"
 msgstr "repositório de referência"
 
-#: command-list.h:119
+#: command-list.h:120
 #, fuzzy
 msgid "List the contents of a tree object"
 msgstr "imprimir apenas as tags do objeto"
 
-#: command-list.h:120
+#: command-list.h:121
 msgid "Extracts patch and authorship from a single e-mail message"
 msgstr ""
 
-#: command-list.h:121
+#: command-list.h:122
 msgid "Simple UNIX mbox splitter program"
 msgstr ""
 
-#: command-list.h:122
+#: command-list.h:123
 msgid "Run tasks to optimize Git repository data"
 msgstr ""
 
-#: command-list.h:123
+#: command-list.h:124
 msgid "Join two or more development histories together"
 msgstr "Juntar duas ou mais histórias de desenvolvimento numa só"
 
-#: command-list.h:124
+#: command-list.h:125
 #, fuzzy
 msgid "Find as good common ancestors as possible for a merge"
 msgstr "encontrar antecessores de uma única integração com n pontos"
 
-#: command-list.h:125
+#: command-list.h:126
 #, fuzzy
 msgid "Run a three-way file merge"
-msgstr "A recorrer a integração com 3 pontos...\n"
+msgstr "Faz uma junção por três de ficheiro"
 
-#: command-list.h:126
+#: command-list.h:127
 #, fuzzy
 msgid "Run a merge for files needing merging"
-msgstr ""
-"integrar com 3 pontos se a integração ao nível de ficheiros não for "
-"necessária"
+msgstr "Faz um merge de ficheiros precisando de merge"
 
-#: command-list.h:127
+#: command-list.h:128
 msgid "The standard helper program to use with git-merge-index"
 msgstr ""
 
-#: command-list.h:128
+#: command-list.h:129
 msgid "Run merge conflict resolution tools to resolve merge conflicts"
 msgstr ""
 
-#: command-list.h:129
+#: command-list.h:130
 msgid "Show three-way merge without touching index"
 msgstr ""
 
-#: command-list.h:130
+#: command-list.h:131
 msgid "Write and verify multi-pack-indexes"
 msgstr ""
 
-#: command-list.h:131
+#: command-list.h:132
 #, fuzzy
 msgid "Creates a tag object"
 msgstr "outro objeto tag"
 
-#: command-list.h:132
+#: command-list.h:133
 msgid "Build a tree-object from ls-tree formatted text"
 msgstr ""
 
-#: command-list.h:133
+#: command-list.h:134
 msgid "Move or rename a file, a directory, or a symlink"
 msgstr "Mover ou mudar o nome de um ficheiro, diretório ou ligação simbólica"
 
-#: command-list.h:134
+#: command-list.h:135
 msgid "Find symbolic names for given revs"
 msgstr ""
 
-#: command-list.h:135
+#: command-list.h:136
 #, fuzzy
 msgid "Add or inspect object notes"
 msgstr "o objeto esperado %s não foi recebido"
 
-#: command-list.h:136
+#: command-list.h:137
 msgid "Import from and submit to Perforce repositories"
 msgstr ""
 
-#: command-list.h:137
+#: command-list.h:138
 #, fuzzy
 msgid "Create a packed archive of objects"
 msgstr "ignorar objetos compactados"
 
-#: command-list.h:138
+#: command-list.h:139
 #, fuzzy
 msgid "Find redundant pack files"
 msgstr "não é possível invocar pread sobre o ficheiro de pacote"
 
-#: command-list.h:139
-msgid "Pack heads and tags for efficient repository access"
-msgstr ""
-
 #: command-list.h:140
-msgid "Routines to help parsing remote repository access parameters"
+msgid "Pack heads and tags for efficient repository access"
 msgstr ""
 
 #: command-list.h:141
@@ -24090,7 +24355,7 @@ msgstr ""
 #: command-list.h:180
 #, fuzzy
 msgid "Switch branches"
-msgstr "Mudou para o ramo '%s'\n"
+msgstr "Troca branches"
 
 #: command-list.h:181
 #, fuzzy
@@ -24251,75 +24516,60 @@ msgstr "Uma introdução ao Git (versão 1.5.1 ou mais recente)"
 msgid "An overview of recommended workflows with Git"
 msgstr "Uma descrição geral dos fluxos de trabalho recomendados para o Git"
 
-#: git-bisect.sh:79
+#: git-bisect.sh:48
 #, sh-format
 msgid "Bad rev input: $arg"
 msgstr "Revisão incorreta na entrada: $arg"
 
-#: git-bisect.sh:99
-#, sh-format
-msgid "Bad rev input: $bisected_head"
-msgstr "Revisão incorreta na entrada: $bisected_head"
-
-#: git-bisect.sh:108
-#, sh-format
-msgid "Bad rev input: $rev"
-msgstr "Revisão incorreta na entrada: $rev"
-
-#: git-bisect.sh:117
-#, sh-format
-msgid "'git bisect $TERM_BAD' can take only one argument."
-msgstr "'git bisect $TERM_BAD' só leva um argumento."
-
-#: git-bisect.sh:149
+#: git-bisect.sh:82
 msgid "No logfile given"
 msgstr "Nenhum ficheiro de log fornecido"
 
-#: git-bisect.sh:150
+#: git-bisect.sh:83
 #, sh-format
 msgid "cannot read $file for replaying"
 msgstr "não é possível ler $file para reproduzir"
 
-#: git-bisect.sh:173
+#: git-bisect.sh:105
 msgid "?? what are you talking about?"
 msgstr "?? do que é que está a falar?"
 
-#: git-bisect.sh:183
+#: git-bisect.sh:115
 msgid "bisect run failed: no command provided."
 msgstr ""
 
-#: git-bisect.sh:188
+#: git-bisect.sh:120
 #, sh-format
 msgid "running $command"
 msgstr "a executar $command"
 
-#: git-bisect.sh:195
+#: git-bisect.sh:127
 #, sh-format
 msgid ""
 "bisect run failed:\n"
 "exit code $res from '$command' is < 0 or >= 128"
 msgstr ""
-"falha ao bissetar:\n"
-"código de saída $res de '$command' é < 0 ou >= 128"
+"bissetar impossível:\n"
+"exit code $res de '$command' é < 0 ou >= 128"
 
-#: git-bisect.sh:221
+#: git-bisect.sh:152
 msgid "bisect run cannot continue any more"
 msgstr "não é possível continuar a bissetar"
 
-#: git-bisect.sh:227
-#, sh-format
+#: git-bisect.sh:158
+#, fuzzy, sh-format
 msgid ""
 "bisect run failed:\n"
-"'bisect_state $state' exited with error code $res"
+"'bisect-state $state' exited with error code $res"
 msgstr ""
-"falha ao bissetar:\n"
-"'bisect_state $state' retornou com o código de erro $res"
+"bisseção impossível:\n"
+"'bisect_state $state' retornou código $res de erro"
 
-#: git-bisect.sh:234
+#: git-bisect.sh:165
 msgid "bisect run success"
 msgstr "bissecção concluída com sucesso"
 
-#: git-bisect.sh:242
+#: git-bisect.sh:173
 msgid "We are not bisecting."
 msgstr "Não se está a bissetar."
 
@@ -24363,49 +24613,49 @@ msgstr "A tentar integração simples com $pretty_name"
 msgid "Simple merge did not work, trying automatic merge."
 msgstr "A integração simples não funcionou, a tentar integração automática."
 
-#: git-submodule.sh:180
+#: git-submodule.sh:179
 msgid "Relative path can only be used from the toplevel of the working tree"
 msgstr ""
 "Os caminhos relativos só podem ser usados a partir do topo da árvore de "
 "trabalho"
 
-#: git-submodule.sh:190
+#: git-submodule.sh:189
 #, sh-format
 msgid "repo URL: '$repo' must be absolute or begin with ./|../"
 msgstr "URL do repositório: '$repo' deve ser absoluto ou começar com ./|../"
 
-#: git-submodule.sh:209
+#: git-submodule.sh:208
 #, sh-format
 msgid "'$sm_path' already exists in the index"
 msgstr "'$sm_path' já existe no índice"
 
-#: git-submodule.sh:212
+#: git-submodule.sh:211
 #, sh-format
 msgid "'$sm_path' already exists in the index and is not a submodule"
 msgstr "'$sm_path' já existe no índicee não é um submódulo"
 
-#: git-submodule.sh:219
+#: git-submodule.sh:218
 #, fuzzy, sh-format
 msgid "'$sm_path' does not have a commit checked out"
 msgstr "o caminho '%s' não tem a versão deles"
 
-#: git-submodule.sh:250
+#: git-submodule.sh:249
 #, sh-format
 msgid "Adding existing repo at '$sm_path' to the index"
 msgstr "A adicionar repositório existente em '$sm_path' ao índice"
 
-#: git-submodule.sh:252
+#: git-submodule.sh:251
 #, sh-format
 msgid "'$sm_path' already exists and is not a valid git repo"
 msgstr "'$sm_path' já existe e não é uma repositório git válido"
 
-#: git-submodule.sh:260
+#: git-submodule.sh:259
 #, sh-format
 msgid "A git directory for '$sm_name' is found locally with remote(s):"
 msgstr ""
 "Um diretório git de '$sm_name' foi encontrado localmente com os remotos:"
 
-#: git-submodule.sh:262
+#: git-submodule.sh:261
 #, sh-format
 msgid ""
 "If you want to reuse this local git directory instead of cloning again from\n"
@@ -24415,45 +24665,45 @@ msgid ""
 "or you are unsure what this means choose another name with the '--name' "
 "option."
 msgstr ""
-"Se quer reutilizar este diretório git local em vez de clonar de novo de\n"
+"Se queres reutilizar esta past git local, em vez de voltares a clonar\n"
 "  $realrepo\n"
-"use a opção '--force'. Se o diretório git local não é o repo correto\n"
-"ou não tem a certeza o que isto significa escolha outro nome com a opção '--"
-"name'."
+"usa a opção --force. Se a pasta git local é o repo incorreto ou\n"
+"se tens pouca certeza sobre o que isto significa, podes mudar o nome com a "
+"opção '--name'."
 
-#: git-submodule.sh:268
+#: git-submodule.sh:267
 #, sh-format
 msgid "Reactivating local git directory for submodule '$sm_name'."
 msgstr "A reativar o diretório git local do submódulo '$sm_name'."
 
-#: git-submodule.sh:280
+#: git-submodule.sh:279
 #, sh-format
 msgid "Unable to checkout submodule '$sm_path'"
 msgstr "Não foi possível extrair o submódulo '$sm_path'"
 
-#: git-submodule.sh:285
+#: git-submodule.sh:284
 #, sh-format
 msgid "Failed to add submodule '$sm_path'"
 msgstr "Falha ao adicionar o submódulo '$sm_path'"
 
-#: git-submodule.sh:294
+#: git-submodule.sh:293
 #, sh-format
 msgid "Failed to register submodule '$sm_path'"
 msgstr "Falha ao registar o submódulo '$sm_path'"
 
-#: git-submodule.sh:567
+#: git-submodule.sh:568
 #, sh-format
 msgid "Unable to find current revision in submodule path '$displaypath'"
 msgstr ""
 "Não foi possível encontrar a revisão atual no caminho de submódulo "
 "'$displaypath'"
 
-#: git-submodule.sh:577
+#: git-submodule.sh:578
 #, sh-format
 msgid "Unable to fetch in submodule path '$sm_path'"
 msgstr "Não foi possível obter no caminho de submódulo '$sm_path'"
 
-#: git-submodule.sh:582
+#: git-submodule.sh:583
 #, sh-format
 msgid ""
 "Unable to find current ${remote_name}/${branch} revision in submodule path "
@@ -24462,14 +24712,14 @@ msgstr ""
 "Não foi possível encontrar a revisão atual ${remote_name}/${branch} no "
 "caminho de submódulo '$sm_path'"
 
-#: git-submodule.sh:600
+#: git-submodule.sh:601
 #, fuzzy, sh-format
 msgid ""
 "Unable to fetch in submodule path '$displaypath'; trying to directly fetch "
 "$sha1:"
 msgstr "Não é possível obter no caminho de submódulo '$displaypath'"
 
-#: git-submodule.sh:606
+#: git-submodule.sh:607
 #, sh-format
 msgid ""
 "Fetched in submodule path '$displaypath', but it did not contain $sha1. "
@@ -24478,59 +24728,54 @@ msgstr ""
 "Obteve-se no caminho de submódulo '$displaypath', mas não continha $sha1. "
 "Falha ao obter aquele commit diretamente."
 
-#: git-submodule.sh:613
+#: git-submodule.sh:614
 #, sh-format
 msgid "Unable to checkout '$sha1' in submodule path '$displaypath'"
 msgstr "Não é possível extrair '$sha1' no caminho de submódulo '$displaypath'"
 
-#: git-submodule.sh:614
+#: git-submodule.sh:615
 #, sh-format
 msgid "Submodule path '$displaypath': checked out '$sha1'"
 msgstr "Caminho de submódulo '$displaypath': '$sha1' extraído"
 
-#: git-submodule.sh:618
+#: git-submodule.sh:619
 #, sh-format
 msgid "Unable to rebase '$sha1' in submodule path '$displaypath'"
 msgstr ""
 "Não foi possível efetuar rebase de '$sha1' no caminho de submódulo "
 "'$displaypath'"
 
-#: git-submodule.sh:619
+#: git-submodule.sh:620
 #, sh-format
 msgid "Submodule path '$displaypath': rebased into '$sha1'"
 msgstr "Caminho de submódulo '$displaypath': rebase concluído em '$sha1'"
 
-#: git-submodule.sh:624
+#: git-submodule.sh:625
 #, sh-format
 msgid "Unable to merge '$sha1' in submodule path '$displaypath'"
 msgstr "Não é possível integrar '$sha1' no caminho de submódulo '$displaypath'"
 
-#: git-submodule.sh:625
+#: git-submodule.sh:626
 #, sh-format
 msgid "Submodule path '$displaypath': merged in '$sha1'"
 msgstr "Caminho de submódulo '$displaypath': integrado em '$sha1'"
 
-#: git-submodule.sh:630
+#: git-submodule.sh:631
 #, sh-format
 msgid "Execution of '$command $sha1' failed in submodule path '$displaypath'"
 msgstr ""
 "Falha ao executar '$command $sha1' no caminho de submódulo '$displaypath'"
 
-#: git-submodule.sh:631
+#: git-submodule.sh:632
 #, sh-format
 msgid "Submodule path '$displaypath': '$command $sha1'"
 msgstr "Caminho de submódulo '$displaypath': '$command $sha1'"
 
-#: git-submodule.sh:662
+#: git-submodule.sh:663
 #, sh-format
 msgid "Failed to recurse into submodule path '$displaypath'"
 msgstr "Falha ao percorrer o caminho de submódulo '$displaypath'"
 
-#: git-parse-remote.sh:89
-#, sh-format
-msgid "See git-${cmd}(1) for details."
-msgstr "Consulte git-${cmd}(1) para obter mais detalhes."
-
 #: git-rebase--preserve-merges.sh:109
 msgid "Applied autostash."
 msgstr "Pilha automática (autostash) aplicada."
@@ -24546,9 +24791,9 @@ msgid ""
 "Your changes are safe in the stash.\n"
 "You can run \"git stash pop\" or \"git stash drop\" at any time.\n"
 msgstr ""
-"Surgiram conflitos ao aplicar a pilha automática (autostash).\n"
-"As suas alterações estão guardadas na pilha.\n"
-"Pode executar \"git stash pop\" ou \"git stash drop\" oportunamente.\n"
+"Realizando autostash existem sobreposições.\n"
+"As tuas mudanças estão salvas na stash.\n"
+"Podes executar \"git stash pop\" ou \"git stash drop\" oportunamente.\n"
 
 #: git-rebase--preserve-merges.sh:191
 #, sh-format
@@ -24578,15 +24823,21 @@ msgid ""
 msgstr ""
 "\n"
 "Comandos:\n"
-" p, pick = usar commit\n"
-" r, reword = usar commit, mas editar a mensagem de commit\n"
-" e, edit = usar commit, mas parar para emendar\n"
-" s, squash = usar commit, mas fundir com o commit anterior\n"
-" f, fixup = como \"squash\", mas descartar a mensagem deste commit\n"
-" x, exec = executar o comando (o resto da linha) usando a shell\n"
-" d, drop = remover commit\n"
+"p, pick <commit> = usa commit\n"
+"r, reword <commit> = usa commit, editando a mensagem commit\n"
+"e, edit <commit> = usa commit, mas pára para emendar\n"
+"s, squash <commit> = usa commit, fundindo no commit anterior\n"
+"f, fixup <commit> = como \"squash\", mas descarta mensagem deste commit\n"
+"x, exec <commit> = executa comando (do resto da linha) usando a shell\n"
+"d, drop <commit> = larga commit\n"
+"l, label <label> = dá um label a HEAD atual\n"
+"t, reset <label> = reinicia a HEAD em label\n"
+"m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]\n"
+".       cria merge commit usando a commit message original (a única\n"
+".       linha também poderá ser utlilizada). Usa -c <commit> para \n"
+".       modificar a commit message.\n"
 "\n"
-"Estas linhas pode ser reordenadas; são executadas de cima para baixo.\n"
+"Estas linhas podem ser reordenadas; são executadas de cima para baixo.\n"
 
 #: git-rebase--preserve-merges.sh:260
 #, sh-format
@@ -24599,11 +24850,11 @@ msgid ""
 "\n"
 "\tgit rebase --continue"
 msgstr ""
-"Pode emendar o commit agora, com\n"
+"Podes emendar o commit agora, com\n"
 "\n"
 "\tgit commit --amend $gpg_sign_opt_quoted\n"
 "\n"
-"Assim que estiver satisfeito com as alterações, execute\n"
+"Quando modificações estão correctas, executa\n"
 "\n"
 "\tgit rebase --continue"
 
@@ -24692,13 +24943,10 @@ msgid ""
 "before\n"
 "you are able to reword the commit."
 msgstr ""
-"Não foi possível emendar o commit depois de apanhar com sucesso $sha1... "
-"$rest\n"
-"Deve-se provavelmente a uma mensagem de commit vazia ou o pre-commit hook "
-"falhou.\n"
-"Se o pre-commit hook falhou, pode precisar de resolver o problema ante de "
-"poder\n"
-"reformular a mensagem do commit."
+"Impossível emendar commit pós um sucesso do picking $sha1... $rest\n"
+" devido a um commit message vazio, ou o pre-commit hook falhou. Se o \n"
+"pre-commit hook falhou, pode ser preciso resolver o issue antes de \n"
+"tentares modificar a mensagem commit."
 
 #: git-rebase--preserve-merges.sh:616
 #, sh-format
@@ -24730,7 +24978,7 @@ msgid ""
 "\n"
 "\tgit rebase --continue"
 msgstr ""
-"Pode corrigir o problema e executar\n"
+"Podes resolver o problema, e executar\n"
 "\n"
 "\tgit rebase --continue"
 
@@ -24745,8 +24993,8 @@ msgid ""
 "\tgit rebase --continue"
 msgstr ""
 "Executado com sucesso: $rest\n"
-"mas deixou alterações no índice e/ou na árvore de trabalho\n"
-"Submeta ou esconda as alterações e execute\n"
+"e tens alterações em índice e/ou em working tree\n"
+"Põe no commit ou stash, e corre\n"
 "\n"
 "\tgit rebase --continue"
 
@@ -24785,17 +25033,17 @@ msgid ""
 "\n"
 "  git rebase --continue\n"
 msgstr ""
-"Tem alterações preparadas na árvore de trabalho.\n"
-"Se tenciona esmagar estas alterações\n"
-"no commit anterior, execute:\n"
+"Tens modificações staged na working tree.\n"
+"Se tenciona squash as modificações no último\n"
+"commit, execute:\n"
 "\n"
 "  git commit --amend $gpg_sign_opt_quoted\n"
 "\n"
-"Se tenciona pô-las num novo commit, execute:\n"
+"Se tenciona pô-las em novo commit, execute:\n"
 "\n"
 "  git commit $gpg_sign_opt_quoted\n"
 "\n"
-"Em ambos os casos, quando estiver pronto, continue com:\n"
+"Em ambos os casos, quando feito, continue com:\n"
 "\n"
 "  git rebase --continue\n"
 
@@ -24919,62 +25167,62 @@ msgstr "Não é possível determinar o caminho absoluto do diretório git"
 msgid "%12s %12s %s"
 msgstr "%12s %12s %s"
 
-#: git-add--interactive.perl:634
+#: git-add--interactive.perl:632
 #, perl-format
 msgid "touched %d path\n"
 msgid_plural "touched %d paths\n"
 msgstr[0] "%d caminho afetado\n"
 msgstr[1] "%d caminhos afetados\n"
 
-#: git-add--interactive.perl:1058
+#: git-add--interactive.perl:1056
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for staging."
 msgstr ""
-"Se o patch se aplicar corretamente, o excerto editado será marcado\n"
-"como preparado imediatamente."
+"Se patch aplica-se correctamente, a edição do hunk será marcada\n"
+"imediatamente como preparado."
 
-#: git-add--interactive.perl:1061
+#: git-add--interactive.perl:1059
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for stashing."
 msgstr ""
-"Se o patch se aplicar corretamente, o excerto editado será marcado\n"
-"como escondido imediatamente."
+"Se patch aplica-se corretamente, a edição do hunk será marcada\n"
+"imediatamente como stashed."
 
-#: git-add--interactive.perl:1064
+#: git-add--interactive.perl:1062
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for unstaging."
 msgstr ""
-"Se o patch se aplicar corretamente, o excerto editado será marcado\n"
-"como não preparado imediatamente."
+"Se patch aplica-se corretamente, a edição do hunk será marcada\n"
+"imediatamente como despreparada."
 
-#: git-add--interactive.perl:1067 git-add--interactive.perl:1076
-#: git-add--interactive.perl:1082
+#: git-add--interactive.perl:1065 git-add--interactive.perl:1074
+#: git-add--interactive.perl:1080
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for applying."
 msgstr ""
-"Se o patch se aplicar corretamente, o excerto editado será marcado\n"
-"para ser aplicado imediatamente."
+"Se patch aplica-se corretamente, a edição do hunk será marcada\n"
+"imediatamente como aplicada."
 
-#: git-add--interactive.perl:1070 git-add--interactive.perl:1073
-#: git-add--interactive.perl:1079
+#: git-add--interactive.perl:1068 git-add--interactive.perl:1071
+#: git-add--interactive.perl:1077
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for discarding."
 msgstr ""
-"Se o patch se aplicar corretamente, o excerto editado será marcado\n"
-"para ser descartado imediatamente."
+"Se patch aplica-se corretamente, a edição do hunk será marcada\n"
+"imediatamente como descartada."
 
-#: git-add--interactive.perl:1116
+#: git-add--interactive.perl:1114
 #, perl-format
 msgid "failed to open hunk edit file for writing: %s"
 msgstr ""
 "não foi possível abrir o ficheiro de edição do excerto para escrita: %s"
 
-#: git-add--interactive.perl:1123
+#: git-add--interactive.perl:1121
 #, perl-format
 msgid ""
 "---\n"
@@ -24983,17 +25231,17 @@ msgid ""
 "Lines starting with %s will be removed.\n"
 msgstr ""
 "---\n"
-"Para remover linhas '%s', torne-as linhas ' ' (contexto).\n"
-"Para remover linhas '%s', elimine-as.\n"
+"Removendo linhas '%s', torna-as linhas ' ' (contexto).\n"
+"Removendo linhas '%s', elimina-as.\n"
 "Linhas começadas com %s serão removidas.\n"
 
-#: git-add--interactive.perl:1145
+#: git-add--interactive.perl:1143
 #, perl-format
 msgid "failed to open hunk edit file for reading: %s"
 msgstr ""
 "não foi possível abrir o ficheiro de edição do excerto para leitura: %s"
 
-#: git-add--interactive.perl:1253
+#: git-add--interactive.perl:1251
 msgid ""
 "y - stage this hunk\n"
 "n - do not stage this hunk\n"
@@ -25007,7 +25255,7 @@ msgstr ""
 "a - preparar este excerto e todos os excertos seguintes no ficheiro\n"
 "d - não preparar este excerto nem os excertos seguintes no ficheiro"
 
-#: git-add--interactive.perl:1259
+#: git-add--interactive.perl:1257
 msgid ""
 "y - stash this hunk\n"
 "n - do not stash this hunk\n"
@@ -25021,7 +25269,7 @@ msgstr ""
 "a - esconder este excerto e todos os seguintes no ficheiro\n"
 "d - não esconder este excerto nem os excertos seguintes no ficheiro"
 
-#: git-add--interactive.perl:1265
+#: git-add--interactive.perl:1263
 msgid ""
 "y - unstage this hunk\n"
 "n - do not unstage this hunk\n"
@@ -25035,7 +25283,7 @@ msgstr ""
 "a - despreparar este excerto e todos os excertos seguintes no ficheiro\n"
 "d - não despreparar este excerto nem os excertos seguintes no ficheiro"
 
-#: git-add--interactive.perl:1271
+#: git-add--interactive.perl:1269
 msgid ""
 "y - apply this hunk to index\n"
 "n - do not apply this hunk to index\n"
@@ -25049,7 +25297,7 @@ msgstr ""
 "a - aplicar este excerto e todos os excertos seguintes no ficheiro\n"
 "d - não aplicar este excerto nem os excertos seguintes no ficheiro"
 
-#: git-add--interactive.perl:1277 git-add--interactive.perl:1295
+#: git-add--interactive.perl:1275 git-add--interactive.perl:1293
 msgid ""
 "y - discard this hunk from worktree\n"
 "n - do not discard this hunk from worktree\n"
@@ -25063,7 +25311,7 @@ msgstr ""
 "a - descartar este excerto e todos os excertos seguintes no ficheiro\n"
 "d - não descartar este excerto nem os excertos seguintes no ficheiro"
 
-#: git-add--interactive.perl:1283
+#: git-add--interactive.perl:1281
 msgid ""
 "y - discard this hunk from index and worktree\n"
 "n - do not discard this hunk from index and worktree\n"
@@ -25077,7 +25325,7 @@ msgstr ""
 "a - descartar este excerto e todos os excertos seguintes no ficheiro\n"
 "d - não descartar este excerto nem os excertos seguintes no ficheiro"
 
-#: git-add--interactive.perl:1289
+#: git-add--interactive.perl:1287
 msgid ""
 "y - apply this hunk to index and worktree\n"
 "n - do not apply this hunk to index and worktree\n"
@@ -25091,7 +25339,7 @@ msgstr ""
 "a - aplicar este excerto e todos os excertos seguintes no ficheiro\n"
 "d - não aplicar este excerto nem os excertos seguintes no ficheiro"
 
-#: git-add--interactive.perl:1301
+#: git-add--interactive.perl:1299
 #, fuzzy
 msgid ""
 "y - apply this hunk to worktree\n"
@@ -25106,7 +25354,7 @@ msgstr ""
 "a - aplicar este excerto e todos os excertos seguintes no ficheiro\n"
 "d - não aplicar este excerto nem os excertos seguintes no ficheiro"
 
-#: git-add--interactive.perl:1316
+#: git-add--interactive.perl:1314
 msgid ""
 "g - select a hunk to go to\n"
 "/ - search for a hunk matching the given regex\n"
@@ -25128,95 +25376,95 @@ msgstr ""
 "e - editar manualmente o excerto atual\n"
 "? - imprimir ajuda\n"
 
-#: git-add--interactive.perl:1347
+#: git-add--interactive.perl:1345
 msgid "The selected hunks do not apply to the index!\n"
 msgstr "Os excertos selecionados não aplicam ao índice!\n"
 
-#: git-add--interactive.perl:1362
+#: git-add--interactive.perl:1360
 #, perl-format
 msgid "ignoring unmerged: %s\n"
 msgstr "ignorado não integrado: %s\n"
 
-#: git-add--interactive.perl:1481
+#: git-add--interactive.perl:1479
 #, fuzzy, perl-format
 msgid "Apply mode change to worktree [y,n,q,a,d%s,?]? "
 msgstr ""
 "Aplicar alteração de modo ao índice e à árvore de trabalho [y,n,q,a,d,/"
 "%s,?]? "
 
-#: git-add--interactive.perl:1482
+#: git-add--interactive.perl:1480
 #, fuzzy, perl-format
 msgid "Apply deletion to worktree [y,n,q,a,d%s,?]? "
 msgstr ""
 "Aplicar eliminação ao índice e à árvore de trabalho [y,n,q,a,d,/%s,?]? "
 
-#: git-add--interactive.perl:1483
+#: git-add--interactive.perl:1481
 #, fuzzy, perl-format
 msgid "Apply addition to worktree [y,n,q,a,d%s,?]? "
 msgstr ""
 "Aplicar eliminação ao índice e à árvore de trabalho [y,n,q,a,d,/%s,?]? "
 
-#: git-add--interactive.perl:1484
+#: git-add--interactive.perl:1482
 #, fuzzy, perl-format
 msgid "Apply this hunk to worktree [y,n,q,a,d%s,?]? "
 msgstr ""
 "Aplicar este excerto ao índice e à árvore de trabalho [y,n,q,a,d,/%s,?]? "
 
-#: git-add--interactive.perl:1601
+#: git-add--interactive.perl:1599
 msgid "No other hunks to goto\n"
 msgstr ""
 
-#: git-add--interactive.perl:1619
+#: git-add--interactive.perl:1617
 #, perl-format
 msgid "Invalid number: '%s'\n"
 msgstr "Número inválido: '%s'\n"
 
-#: git-add--interactive.perl:1624
+#: git-add--interactive.perl:1622
 #, perl-format
 msgid "Sorry, only %d hunk available.\n"
 msgid_plural "Sorry, only %d hunks available.\n"
 msgstr[0] "Lamento, apenas %d excerto disponível.\n"
 msgstr[1] "Lamento, apenas %d excertos disponíveis.\n"
 
-#: git-add--interactive.perl:1659
+#: git-add--interactive.perl:1657
 msgid "No other hunks to search\n"
 msgstr ""
 
-#: git-add--interactive.perl:1676
+#: git-add--interactive.perl:1674
 #, perl-format
 msgid "Malformed search regexp %s: %s\n"
 msgstr "Regexp de pesquisa malformada %s: %s\n"
 
-#: git-add--interactive.perl:1686
+#: git-add--interactive.perl:1684
 msgid "No hunk matches the given pattern\n"
 msgstr "Nenhum excerto corresponde ao padrão fornecido\n"
 
-#: git-add--interactive.perl:1698 git-add--interactive.perl:1720
+#: git-add--interactive.perl:1696 git-add--interactive.perl:1718
 msgid "No previous hunk\n"
 msgstr "Nenhum excerto anterior\n"
 
-#: git-add--interactive.perl:1707 git-add--interactive.perl:1726
+#: git-add--interactive.perl:1705 git-add--interactive.perl:1724
 msgid "No next hunk\n"
 msgstr "Nenhum excerto seguinte\n"
 
-#: git-add--interactive.perl:1732
+#: git-add--interactive.perl:1730
 msgid "Sorry, cannot split this hunk\n"
 msgstr ""
 
-#: git-add--interactive.perl:1738
+#: git-add--interactive.perl:1736
 #, perl-format
 msgid "Split into %d hunk.\n"
 msgid_plural "Split into %d hunks.\n"
 msgstr[0] "Dividir em %d excerto.\n"
 msgstr[1] "Dividir em %d excertos.\n"
 
-#: git-add--interactive.perl:1748
+#: git-add--interactive.perl:1746
 msgid "Sorry, cannot edit this hunk\n"
 msgstr ""
 
 #. TRANSLATORS: please do not translate the command names
 #. 'status', 'update', 'revert', etc.
-#: git-add--interactive.perl:1813
+#: git-add--interactive.perl:1811
 msgid ""
 "status        - show paths with changes\n"
 "update        - add working tree state to the staged set of changes\n"
@@ -25236,19 +25484,19 @@ msgstr ""
 "add untracked - adicionar conteúdos de ficheiros não controlados ao conjunto "
 "de alterações preparadas\n"
 
-#: git-add--interactive.perl:1830 git-add--interactive.perl:1835
-#: git-add--interactive.perl:1838 git-add--interactive.perl:1845
-#: git-add--interactive.perl:1848 git-add--interactive.perl:1855
-#: git-add--interactive.perl:1859 git-add--interactive.perl:1865
+#: git-add--interactive.perl:1828 git-add--interactive.perl:1840
+#: git-add--interactive.perl:1843 git-add--interactive.perl:1850
+#: git-add--interactive.perl:1853 git-add--interactive.perl:1860
+#: git-add--interactive.perl:1864 git-add--interactive.perl:1870
 msgid "missing --"
 msgstr "falta --"
 
-#: git-add--interactive.perl:1861
+#: git-add--interactive.perl:1866
 #, perl-format
 msgid "unknown --patch mode: %s"
 msgstr "Mode de --patch desconhecido: %s"
 
-#: git-add--interactive.perl:1867 git-add--interactive.perl:1873
+#: git-add--interactive.perl:1872 git-add--interactive.perl:1878
 #, perl-format
 msgid "invalid argument %s, expecting --"
 msgstr "argumento inválido %s, esperava-se --"
@@ -25623,6 +25871,86 @@ msgstr "Saltar %s com sufixo de backup '%s'.\n"
 msgid "Do you really want to send %s? [y|N]: "
 msgstr "Deseja mesmo enviar %s? [y|N]: "
 
+#~ msgid "store only"
+#~ msgstr "armazenar apenas"
+
+#~ msgid "compress faster"
+#~ msgstr "compressão rápida"
+
+#~ msgid "compress better"
+#~ msgstr "compressão ótima"
+
+#, fuzzy, c-format
+#~ msgid "unexpected duplicate commit id %s"
+#~ msgstr "não foi possível analisar o commit %s"
+
+#, fuzzy, c-format
+#~ msgid "%s: not a valid OID"
+#~ msgstr "'%s' não é uma referência válida."
+
+#, fuzzy, c-format
+#~ msgid "invalid committer '%s'"
+#~ msgstr "commit inválido %s"
+
+#, fuzzy, c-format
+#~ msgid "invalid committer: %s"
+#~ msgstr "commit inválido %s"
+
+#, fuzzy
+#~ msgid "git bisect--helper --next-all"
+#~ msgstr "git bisect--helper --next-all [--no-checkout]"
+
+#, fuzzy
+#~ msgid "git bisect--helper --bisect-clean-state"
+#~ msgstr "git bisect--helper --next-all [--no-checkout]"
+
+#, fuzzy
+#~ msgid "git bisect--helper --bisect-autostart"
+#~ msgstr "git bisect--helper --next-all [--no-checkout]"
+
+#~ msgid "perform 'git bisect next'"
+#~ msgstr "executar 'git bisect next'"
+
+#, fuzzy
+#~ msgid "--write-terms requires two arguments"
+#~ msgstr "--abort não leva argumentos"
+
+#, fuzzy
+#~ msgid "--bisect-clean-state requires no arguments"
+#~ msgstr "--continue não leva argumentos"
+
+#, fuzzy
+#~ msgid "--bisect-autostart does not accept arguments"
+#~ msgstr "%%(subject) não leva argumentos"
+
+#~ msgid "n,m"
+#~ msgstr "n,m"
+
+#~ msgid "Process line range n,m in file, counting from 1"
+#~ msgstr "processar intervalo de linhas n,m, a contar a partir de 1"
+
+#~ msgid "name of output directory is too long"
+#~ msgstr "o nome do diretório de saída é demasiado longo"
+
+#~ msgid "standard output, or directory, which one?"
+#~ msgstr "saída padrão, ou diretório, qual deles?"
+
+#, c-format
+#~ msgid "failed to remove '%s'"
+#~ msgstr "falha ao remover '%s'"
+
+#, sh-format
+#~ msgid "Bad rev input: $bisected_head"
+#~ msgstr "Revisão incorreta na entrada: $bisected_head"
+
+#, sh-format
+#~ msgid "Bad rev input: $rev"
+#~ msgstr "Revisão incorreta na entrada: $rev"
+
+#, sh-format
+#~ msgid "See git-${cmd}(1) for details."
+#~ msgstr "Consulte git-${cmd}(1) para obter mais detalhes."
+
 #, c-format
 #~ msgid "unknown core.untrackedCache value '%s'; using 'keep' default value"
 #~ msgstr ""
@@ -25715,8 +26043,8 @@ msgstr "Deseja mesmo enviar %s? [y|N]: "
 #~ "Cannot update sparse checkout: the following entries are not up-to-date:\n"
 #~ "%s"
 #~ msgstr ""
-#~ "Não é possível extrair esparsamente: as seguintes entradas não estão "
-#~ "atualizadas:\n"
+#~ "Impossível actualizar sparse checkout: estas entradas estão "
+#~ "desactualizadas:\n"
 #~ "%s"
 
 #, c-format
@@ -25803,8 +26131,7 @@ msgstr "Deseja mesmo enviar %s? [y|N]: "
 #~ "Cannot update paths and switch to branch '%s' at the same time.\n"
 #~ "Did you intend to checkout '%s' which can not be resolved as commit?"
 #~ msgstr ""
-#~ "Não é possível atualizar os caminho e mudar para o ramo '%s' ao mesmo "
-#~ "tempo.\n"
+#~ " possível atualizar os caminho e mudar para o ramo '%s' ao mesmo tempo.\n"
 #~ "Pretendia extrair '%s' o qual não pode ser resolvido como commit?"
 
 #, c-format
@@ -25934,8 +26261,8 @@ msgstr "Deseja mesmo enviar %s? [y|N]: "
 #~ "error: unknown option for 'stash save': $option\n"
 #~ "       To provide a message, use git stash save -- '$option'"
 #~ msgstr ""
-#~ "erro: opção desconhecida de 'stash save': $option\n"
-#~ "      Para fornecer uma mensagem, use git stash save -- '$option'"
+#~ "erro: desconheço opção de 'stash save': $option\n"
+#~ "       Fornecendo mensagem, usa git stash save -- '$option'"
 
 #, sh-format
 #~ msgid "unknown option: $opt"
@@ -26302,9 +26629,6 @@ msgstr "Deseja mesmo enviar %s? [y|N]: "
 #~ msgid "removing '%s' failed"
 #~ msgstr "falha ao remover '%s'"
 
-#~ msgid "Please call 'bisect_state' with at least one argument."
-#~ msgstr "Invoque 'bisect_state' com pelo menos um argumento."
-
 #~ msgid ""
 #~ "If you want to reuse this local git directory instead of cloning again "
 #~ "from"
index a77b462e62398b8794767b02d65a3af2902fa29b..d04ebf15d7f15f33ef03b94bddab72ab6bbf4f6f 100644 (file)
--- a/po/ru.po
+++ b/po/ru.po
@@ -3,16 +3,19 @@
 # This file is distributed under the same license as the PACKAGE package.
 # 
 # Translators:
-# Dimitriy Ryazantcev <DJm00n@mail.ru>, 2014-2019
-# insolor, 2014
-# insolor, 2014
+# Alexander Golubev <fatzer2@gmail.com>, 2020
+# Dimitriy Ryazantcev <DJm00n@mail.ru>, 2014-2021
+# Mike Manturov, 2014
+# Mike Manturov, 2014
+# Sergey Alyoshin <alyoshin.s@gmail.com>, 2020
+# Sergey Kuznetsov <votkinsk@gmail.com>, 2021
 # Чук Таблицоменделеев <aurum444an@gmail.com>, 2019
 msgid ""
 msgstr ""
 "Project-Id-Version: Git Russian Localization Project\n"
 "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2019-06-04 08:24+0800\n"
-"PO-Revision-Date: 2019-06-21 17:28+0000\n"
+"POT-Creation-Date: 2020-12-21 07:10+0800\n"
+"PO-Revision-Date: 2021-01-29 19:33+0000\n"
 "Last-Translator: Dimitriy Ryazantcev <DJm00n@mail.ru>\n"
 "Language-Team: Russian (http://www.transifex.com/djm00n/git-po-ru/language/ru/)\n"
 "MIME-Version: 1.0\n"
@@ -21,73 +24,736 @@ msgstr ""
 "Language: ru\n"
 "Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
 
-#: advice.c:103
+#: add-interactive.c:376
+#, c-format
+msgid "Huh (%s)?"
+msgstr "Хм (%s)?"
+
+#: add-interactive.c:529 add-interactive.c:830 reset.c:65 sequencer.c:3284
+#: sequencer.c:3735 sequencer.c:3890 builtin/rebase.c:1532
+#: builtin/rebase.c:1955
+msgid "could not read index"
+msgstr "не удалось прочитать индекс"
+
+#: add-interactive.c:584 git-add--interactive.perl:269
+#: git-add--interactive.perl:294
+msgid "binary"
+msgstr "двоичный"
+
+#: add-interactive.c:642 git-add--interactive.perl:278
+#: git-add--interactive.perl:332
+msgid "nothing"
+msgstr "ничего"
+
+#: add-interactive.c:643 git-add--interactive.perl:314
+#: git-add--interactive.perl:329
+msgid "unchanged"
+msgstr "нет изменений"
+
+#: add-interactive.c:680 git-add--interactive.perl:641
+msgid "Update"
+msgstr "Обновить"
+
+#: add-interactive.c:697 add-interactive.c:885
+#, c-format
+msgid "could not stage '%s'"
+msgstr " не удалось проиндексировать «%s»"
+
+#: add-interactive.c:703 add-interactive.c:892 reset.c:89 sequencer.c:3478
+msgid "could not write index"
+msgstr "не удалось записать индекс"
+
+#: add-interactive.c:706 git-add--interactive.perl:626
+#, c-format, perl-format
+msgid "updated %d path\n"
+msgid_plural "updated %d paths\n"
+msgstr[0] "обновлён %d путь\n"
+msgstr[1] "обновлено %d пути\n"
+msgstr[2] "обновлено %d путей\n"
+msgstr[3] "обновлено %d пути\n"
+
+#: add-interactive.c:724 git-add--interactive.perl:676
+#, c-format, perl-format
+msgid "note: %s is untracked now.\n"
+msgstr "примечание: %s теперь неотслеживаемый.\n"
+
+#: add-interactive.c:729 apply.c:4125 builtin/checkout.c:295
+#: builtin/reset.c:145
+#, c-format
+msgid "make_cache_entry failed for path '%s'"
+msgstr "сбой make_cache_entry для пути «%s»"
+
+#: add-interactive.c:759 git-add--interactive.perl:653
+msgid "Revert"
+msgstr "Обратить изменения"
+
+#: add-interactive.c:775
+msgid "Could not parse HEAD^{tree}"
+msgstr "Не удалось разобрать HEAD^{tree}"
+
+#: add-interactive.c:813 git-add--interactive.perl:629
+#, c-format, perl-format
+msgid "reverted %d path\n"
+msgid_plural "reverted %d paths\n"
+msgstr[0] "обращены изменения %d пути\n"
+msgstr[1] "обращены изменения %d путей\n"
+msgstr[2] "обращены изменения %d путей\n"
+msgstr[3] "обращены изменения %d путей\n"
+
+#: add-interactive.c:864 git-add--interactive.perl:693
+#, c-format
+msgid "No untracked files.\n"
+msgstr "Нет неотслеживаемых файлов.\n"
+
+#: add-interactive.c:868 git-add--interactive.perl:687
+msgid "Add untracked"
+msgstr "Добавить неотслеживаемый"
+
+#: add-interactive.c:895 git-add--interactive.perl:623
+#, c-format, perl-format
+msgid "added %d path\n"
+msgid_plural "added %d paths\n"
+msgstr[0] "добавлен %d путь\n"
+msgstr[1] "добавлено %d пути\n"
+msgstr[2] "добавлено %d путей\n"
+msgstr[3] "добавлено %d пути\n"
+
+#: add-interactive.c:925
+#, c-format
+msgid "ignoring unmerged: %s"
+msgstr "игнорирую не слитое: %s"
+
+#: add-interactive.c:937 add-patch.c:1751 git-add--interactive.perl:1369
+#, c-format
+msgid "Only binary files changed.\n"
+msgstr "Только изменения двоичных файлов.\n"
+
+#: add-interactive.c:939 add-patch.c:1749 git-add--interactive.perl:1371
+#, c-format
+msgid "No changes.\n"
+msgstr "Нет изменений.\n"
+
+#: add-interactive.c:943 git-add--interactive.perl:1379
+msgid "Patch update"
+msgstr "Обновление патча"
+
+#: add-interactive.c:982 git-add--interactive.perl:1792
+msgid "Review diff"
+msgstr "Просмотреть список изменений"
+
+#: add-interactive.c:1010
+msgid "show paths with changes"
+msgstr "показать пути с изменениями"
+
+#: add-interactive.c:1012
+msgid "add working tree state to the staged set of changes"
+msgstr "добавить содержимое рабочего каталога к списку проиндексированных изменений"
+
+#: add-interactive.c:1014
+msgid "revert staged set of changes back to the HEAD version"
+msgstr "вернуть проиндексированные изменения назад к HEAD-версии"
+
+#: add-interactive.c:1016
+msgid "pick hunks and update selectively"
+msgstr "выбрать отдельные блоки изменений и обновить выборочно"
+
+#: add-interactive.c:1018
+msgid "view diff between HEAD and index"
+msgstr "просмотреть список изменений между HEAD и индексом"
+
+#: add-interactive.c:1020
+msgid "add contents of untracked files to the staged set of changes"
+msgstr "добавить содержимое неотслеживаемых файлов к списку проиндексированных изменений"
+
+#: add-interactive.c:1028 add-interactive.c:1077
+msgid "Prompt help:"
+msgstr "Справка:"
+
+#: add-interactive.c:1030
+msgid "select a single item"
+msgstr "выбрать один элемент"
+
+#: add-interactive.c:1032
+msgid "select a range of items"
+msgstr "выбрать диапазон элементов"
+
+#: add-interactive.c:1034
+msgid "select multiple ranges"
+msgstr "выбрать несколько диапазонов"
+
+#: add-interactive.c:1036 add-interactive.c:1081
+msgid "select item based on unique prefix"
+msgstr "выбрать элемент на основе уникального префикса"
+
+#: add-interactive.c:1038
+msgid "unselect specified items"
+msgstr "убрать выбор указанных элементов"
+
+#: add-interactive.c:1040
+msgid "choose all items"
+msgstr "выбрать все элементы"
+
+#: add-interactive.c:1042
+msgid "(empty) finish selecting"
+msgstr "(пусто) закончить выбор"
+
+#: add-interactive.c:1079
+msgid "select a numbered item"
+msgstr "выбрать элемент по номеру"
+
+#: add-interactive.c:1083
+msgid "(empty) select nothing"
+msgstr "(пусто) ничего не выбирать"
+
+#: add-interactive.c:1091 builtin/clean.c:816 git-add--interactive.perl:1896
+msgid "*** Commands ***"
+msgstr "*** Команды ***"
+
+#: add-interactive.c:1092 builtin/clean.c:817 git-add--interactive.perl:1893
+msgid "What now"
+msgstr "Что теперь"
+
+#: add-interactive.c:1144 git-add--interactive.perl:213
+msgid "staged"
+msgstr "в индексе"
+
+#: add-interactive.c:1144 git-add--interactive.perl:213
+msgid "unstaged"
+msgstr "не в индексе"
+
+#: add-interactive.c:1144 apply.c:4987 apply.c:4990 builtin/am.c:2257
+#: builtin/am.c:2260 builtin/bugreport.c:134 builtin/clone.c:124
+#: builtin/fetch.c:147 builtin/merge.c:284 builtin/pull.c:190
+#: builtin/submodule--helper.c:409 builtin/submodule--helper.c:1818
+#: builtin/submodule--helper.c:1821 builtin/submodule--helper.c:2326
+#: builtin/submodule--helper.c:2329 builtin/submodule--helper.c:2572
+#: git-add--interactive.perl:213
+msgid "path"
+msgstr "путь"
+
+#: add-interactive.c:1151
+msgid "could not refresh index"
+msgstr "не удалось обновить индекс"
+
+#: add-interactive.c:1165 builtin/clean.c:781 git-add--interactive.perl:1803
+#, c-format
+msgid "Bye.\n"
+msgstr "До свидания.\n"
+
+#: add-patch.c:34 git-add--interactive.perl:1431
+#, c-format, perl-format
+msgid "Stage mode change [y,n,q,a,d%s,?]? "
+msgstr "Проиндексировать изменение режима доступа [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:35 git-add--interactive.perl:1432
+#, c-format, perl-format
+msgid "Stage deletion [y,n,q,a,d%s,?]? "
+msgstr "Проиндексировать удаление [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:36 git-add--interactive.perl:1433
+#, c-format, perl-format
+msgid "Stage addition [y,n,q,a,d%s,?]? "
+msgstr "Добавить к индексу [y,n,q,a,d%s,?]?"
+
+#: add-patch.c:37 git-add--interactive.perl:1434
+#, c-format, perl-format
+msgid "Stage this hunk [y,n,q,a,d%s,?]? "
+msgstr "Проиндексировать этот блок изменений [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:39
+msgid ""
+"If the patch applies cleanly, the edited hunk will immediately be marked for"
+" staging."
+msgstr "При чистом наложении патча изменённая часть сразу будет отмечена для индексирования."
+
+#: add-patch.c:42
+msgid ""
+"y - stage this hunk\n"
+"n - do not stage this hunk\n"
+"q - quit; do not stage this hunk or any of the remaining ones\n"
+"a - stage this hunk and all later hunks in the file\n"
+"d - do not stage this hunk or any of the later hunks in the file\n"
+msgstr ""
+
+#: add-patch.c:56 git-add--interactive.perl:1437
+#, c-format, perl-format
+msgid "Stash mode change [y,n,q,a,d%s,?]? "
+msgstr "Спрятать изменение режима доступа [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:57 git-add--interactive.perl:1438
+#, c-format, perl-format
+msgid "Stash deletion [y,n,q,a,d%s,?]? "
+msgstr "Спрятать удаление файла [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:58 git-add--interactive.perl:1439
+#, c-format, perl-format
+msgid "Stash addition [y,n,q,a,d%s,?]? "
+msgstr "Добавить к спрятанному [y,n,q,a,d%s,?]?"
+
+#: add-patch.c:59 git-add--interactive.perl:1440
+#, c-format, perl-format
+msgid "Stash this hunk [y,n,q,a,d%s,?]? "
+msgstr "Спрятать этот блок изменений [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:61
+msgid ""
+"If the patch applies cleanly, the edited hunk will immediately be marked for"
+" stashing."
+msgstr "При чистом наложении патча изменённая часть сразу будет отмечена для скрытия."
+
+#: add-patch.c:64
+msgid ""
+"y - stash this hunk\n"
+"n - do not stash this hunk\n"
+"q - quit; do not stash this hunk or any of the remaining ones\n"
+"a - stash this hunk and all later hunks in the file\n"
+"d - do not stash this hunk or any of the later hunks in the file\n"
+msgstr ""
+
+#: add-patch.c:80 git-add--interactive.perl:1443
+#, c-format, perl-format
+msgid "Unstage mode change [y,n,q,a,d%s,?]? "
+msgstr "Убрать изменения режима доступа из индекса [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:81 git-add--interactive.perl:1444
+#, c-format, perl-format
+msgid "Unstage deletion [y,n,q,a,d%s,?]? "
+msgstr "Убрать удаление из индекса [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:82 git-add--interactive.perl:1445
+#, c-format, perl-format
+msgid "Unstage addition [y,n,q,a,d%s,?]? "
+msgstr "Убрать из индекса [y,n,q,a,d%s,?]?"
+
+#: add-patch.c:83 git-add--interactive.perl:1446
+#, c-format, perl-format
+msgid "Unstage this hunk [y,n,q,a,d%s,?]? "
+msgstr "Убрать из индекса этот блок измений [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:85
+msgid ""
+"If the patch applies cleanly, the edited hunk will immediately be marked for"
+" unstaging."
+msgstr "При чистом наложении патча изменённая часть сразу будет отмечена для удаления из индекса."
+
+#: add-patch.c:88
+msgid ""
+"y - unstage this hunk\n"
+"n - do not unstage this hunk\n"
+"q - quit; do not unstage this hunk or any of the remaining ones\n"
+"a - unstage this hunk and all later hunks in the file\n"
+"d - do not unstage this hunk or any of the later hunks in the file\n"
+msgstr ""
+
+#: add-patch.c:103 git-add--interactive.perl:1449
+#, c-format, perl-format
+msgid "Apply mode change to index [y,n,q,a,d%s,?]? "
+msgstr "Применить изменение режима доступа к индексу [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:104 git-add--interactive.perl:1450
+#, c-format, perl-format
+msgid "Apply deletion to index [y,n,q,a,d%s,?]? "
+msgstr "Применить удаление к индексу [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:105 git-add--interactive.perl:1451
+#, c-format, perl-format
+msgid "Apply addition to index [y,n,q,a,d%s,?]? "
+msgstr "Применить добавление к индексу [y,n,q,a,d%s,?]?"
+
+#: add-patch.c:106 git-add--interactive.perl:1452
+#, c-format, perl-format
+msgid "Apply this hunk to index [y,n,q,a,d%s,?]? "
+msgstr "Применить этот блок к индексу [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:108 add-patch.c:176 add-patch.c:221
+msgid ""
+"If the patch applies cleanly, the edited hunk will immediately be marked for"
+" applying."
+msgstr "При чистом наложении патча изменённая часть сразу будет отмечена для применения."
+
+#: add-patch.c:111
+msgid ""
+"y - apply this hunk to index\n"
+"n - do not apply this hunk to index\n"
+"q - quit; do not apply this hunk or any of the remaining ones\n"
+"a - apply this hunk and all later hunks in the file\n"
+"d - do not apply this hunk or any of the later hunks in the file\n"
+msgstr ""
+
+#: add-patch.c:126 git-add--interactive.perl:1455
+#: git-add--interactive.perl:1473
+#, c-format, perl-format
+msgid "Discard mode change from worktree [y,n,q,a,d%s,?]? "
+msgstr "Отменить изменения режима доступа в рабочем каталоге [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:127 git-add--interactive.perl:1456
+#: git-add--interactive.perl:1474
+#, c-format, perl-format
+msgid "Discard deletion from worktree [y,n,q,a,d%s,?]? "
+msgstr "Отменить удаление в рабочем каталоге [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:128 git-add--interactive.perl:1457
+#: git-add--interactive.perl:1475
+#, c-format, perl-format
+msgid "Discard addition from worktree [y,n,q,a,d%s,?]? "
+msgstr "Отменить добавления из рабочего каталога [y,n,q,a,d%s,?]?"
+
+#: add-patch.c:129 git-add--interactive.perl:1458
+#: git-add--interactive.perl:1476
+#, c-format, perl-format
+msgid "Discard this hunk from worktree [y,n,q,a,d%s,?]? "
+msgstr "Отменить изменения этого блока в рабочем каталоге [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:131 add-patch.c:154 add-patch.c:199
+msgid ""
+"If the patch applies cleanly, the edited hunk will immediately be marked for"
+" discarding."
+msgstr "При чистом наложении патча изменённая часть сразу будет отмечена для отмены."
+
+#: add-patch.c:134 add-patch.c:202
+msgid ""
+"y - discard this hunk from worktree\n"
+"n - do not discard this hunk from worktree\n"
+"q - quit; do not discard this hunk or any of the remaining ones\n"
+"a - discard this hunk and all later hunks in the file\n"
+"d - do not discard this hunk or any of the later hunks in the file\n"
+msgstr ""
+
+#: add-patch.c:149 add-patch.c:194 git-add--interactive.perl:1461
+#, c-format, perl-format
+msgid "Discard mode change from index and worktree [y,n,q,a,d%s,?]? "
+msgstr "Отменить изменения режима доступа в индексе и рабочем каталоге [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:150 add-patch.c:195 git-add--interactive.perl:1462
+#, c-format, perl-format
+msgid "Discard deletion from index and worktree [y,n,q,a,d%s,?]? "
+msgstr "Отменить удаление в индексе и рабочем каталоге [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:151 add-patch.c:196 git-add--interactive.perl:1463
+#, c-format, perl-format
+msgid "Discard addition from index and worktree [y,n,q,a,d%s,?]? "
+msgstr ""
+
+#: add-patch.c:152 add-patch.c:197 git-add--interactive.perl:1464
+#, c-format, perl-format
+msgid "Discard this hunk from index and worktree [y,n,q,a,d%s,?]? "
+msgstr "Отменить изменения этого блока в индексе и рабочем каталоге [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:157
+msgid ""
+"y - discard this hunk from index and worktree\n"
+"n - do not discard this hunk from index and worktree\n"
+"q - quit; do not discard this hunk or any of the remaining ones\n"
+"a - discard this hunk and all later hunks in the file\n"
+"d - do not discard this hunk or any of the later hunks in the file\n"
+msgstr ""
+
+#: add-patch.c:171 add-patch.c:216 git-add--interactive.perl:1467
+#, c-format, perl-format
+msgid "Apply mode change to index and worktree [y,n,q,a,d%s,?]? "
+msgstr "Применить изменения режима доступа к индексу и рабочему каталогу [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:172 add-patch.c:217 git-add--interactive.perl:1468
+#, c-format, perl-format
+msgid "Apply deletion to index and worktree [y,n,q,a,d%s,?]? "
+msgstr "Применить удаление к индексу и рабочему каталогу [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:173 add-patch.c:218 git-add--interactive.perl:1469
+#, c-format, perl-format
+msgid "Apply addition to index and worktree [y,n,q,a,d%s,?]? "
+msgstr ""
+
+#: add-patch.c:174 add-patch.c:219 git-add--interactive.perl:1470
+#, c-format, perl-format
+msgid "Apply this hunk to index and worktree [y,n,q,a,d%s,?]? "
+msgstr "Применить изменения этого блока к индексу и рабочему каталогу [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:179
+msgid ""
+"y - apply this hunk to index and worktree\n"
+"n - do not apply this hunk to index and worktree\n"
+"q - quit; do not apply this hunk or any of the remaining ones\n"
+"a - apply this hunk and all later hunks in the file\n"
+"d - do not apply this hunk or any of the later hunks in the file\n"
+msgstr ""
+
+#: add-patch.c:224
+msgid ""
+"y - apply this hunk to worktree\n"
+"n - do not apply this hunk to worktree\n"
+"q - quit; do not apply this hunk or any of the remaining ones\n"
+"a - apply this hunk and all later hunks in the file\n"
+"d - do not apply this hunk or any of the later hunks in the file\n"
+msgstr ""
+
+#: add-patch.c:342
+#, c-format
+msgid "could not parse hunk header '%.*s'"
+msgstr "не удалось разобрать заголовок блока изменений «%.*s»"
+
+#: add-patch.c:361 add-patch.c:365
+#, c-format
+msgid "could not parse colored hunk header '%.*s'"
+msgstr "не удалось разобрать цветной заголовок блока изменений «%.*s»"
+
+#: add-patch.c:419
+msgid "could not parse diff"
+msgstr "не удалось разобрать список изменений (diff)"
+
+#: add-patch.c:438
+msgid "could not parse colored diff"
+msgstr "не удалось разобрать цветной список изменений (diff)"
+
+#: add-patch.c:452
+#, c-format
+msgid "failed to run '%s'"
+msgstr ""
+
+#: add-patch.c:611
+msgid "mismatched output from interactive.diffFilter"
+msgstr ""
+
+#: add-patch.c:612
+msgid ""
+"Your filter must maintain a one-to-one correspondence\n"
+"between its input and output lines."
+msgstr ""
+
+#: add-patch.c:790
+#, c-format
+msgid ""
+"expected context line #%d in\n"
+"%.*s"
+msgstr "на %d строке ожидалась информация о контексте\n%.*s"
+
+#: add-patch.c:805
+#, c-format
+msgid ""
+"hunks do not overlap:\n"
+"%.*s\n"
+"\tdoes not end with:\n"
+"%.*s"
+msgstr "блоки изменений не пересекаются:\n%.*s\n\tне заканчивается на:\n%.*s"
+
+#: add-patch.c:1081 git-add--interactive.perl:1115
+msgid "Manual hunk edit mode -- see bottom for a quick guide.\n"
+msgstr "Ручной режим редактирования блока изменений — смотрите ниже для небольшого руководства.\n"
+
+#: add-patch.c:1085
+#, c-format
+msgid ""
+"---\n"
+"To remove '%c' lines, make them ' ' lines (context).\n"
+"To remove '%c' lines, delete them.\n"
+"Lines starting with %c will be removed.\n"
+msgstr "---\nЧтобы убрать «%c»-строки, сделайте их ' '-строками (контекстными).\nЧтобы убрать «%c»-строки, удалите их.\nСтроки, начинающиеся с %cбудут удалены.\n"
+
+#. TRANSLATORS: 'it' refers to the patch mentioned in the previous messages.
+#: add-patch.c:1099 git-add--interactive.perl:1129
+msgid ""
+"If it does not apply cleanly, you will be given an opportunity to\n"
+"edit again.  If all lines of the hunk are removed, then the edit is\n"
+"aborted and the hunk is left unchanged.\n"
+msgstr "Если патч не применяется без ошибок, вам будет дана\nвозможность изменить его снова. Если все строки блока\nизменений удалены, то редактирование будет отменено\nи блок останется без изменений.\n"
+
+#: add-patch.c:1132
+msgid "could not parse hunk header"
+msgstr ""
+
+#: add-patch.c:1177
+msgid "'git apply --cached' failed"
+msgstr ""
+
+#. TRANSLATORS: do not translate [y/n]
+#. The program will only accept that input at this point.
+#. Consider translating (saying "no" discards!) as
+#. (saying "n" for "no" discards!) if the translation
+#. of the word "no" does not start with n.
+#. TRANSLATORS: do not translate [y/n]
+#. The program will only accept that input
+#. at this point.
+#. Consider translating (saying "no" discards!) as
+#. (saying "n" for "no" discards!) if the translation
+#. of the word "no" does not start with n.
+#: add-patch.c:1246 git-add--interactive.perl:1242
+msgid ""
+"Your edited hunk does not apply. Edit again (saying \"no\" discards!) [y/n]?"
+" "
+msgstr "Изменённый вами блок не применяется. Редактировать снова (ответ «y» означает «нет»!) [y/n]? "
+
+#: add-patch.c:1289
+msgid "The selected hunks do not apply to the index!"
+msgstr ""
+
+#: add-patch.c:1290 git-add--interactive.perl:1346
+msgid "Apply them to the worktree anyway? "
+msgstr "Все равно применить их к рабочему каталогу? "
+
+#: add-patch.c:1297 git-add--interactive.perl:1349
+msgid "Nothing was applied.\n"
+msgstr "Ничего не применено.\n"
+
+#: add-patch.c:1354
+msgid ""
+"j - leave this hunk undecided, see next undecided hunk\n"
+"J - leave this hunk undecided, see next hunk\n"
+"k - leave this hunk undecided, see previous undecided hunk\n"
+"K - leave this hunk undecided, see previous hunk\n"
+"g - select a hunk to go to\n"
+"/ - search for a hunk matching the given regex\n"
+"s - split the current hunk into smaller hunks\n"
+"e - manually edit the current hunk\n"
+"? - print help\n"
+msgstr ""
+
+#: add-patch.c:1516 add-patch.c:1526
+msgid "No previous hunk"
+msgstr ""
+
+#: add-patch.c:1521 add-patch.c:1531
+msgid "No next hunk"
+msgstr ""
+
+#: add-patch.c:1537
+msgid "No other hunks to goto"
+msgstr ""
+
+#: add-patch.c:1548 git-add--interactive.perl:1606
+msgid "go to which hunk (<ret> to see more)? "
+msgstr "на какой блок перейти (нажмите <ввод> чтобы увидеть еще)? "
+
+#: add-patch.c:1549 git-add--interactive.perl:1608
+msgid "go to which hunk? "
+msgstr "на какой блок перейти? "
+
+#: add-patch.c:1560
+#, c-format
+msgid "Invalid number: '%s'"
+msgstr ""
+
+#: add-patch.c:1565
+#, c-format
+msgid "Sorry, only %d hunk available."
+msgid_plural "Sorry, only %d hunks available."
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+
+#: add-patch.c:1574
+msgid "No other hunks to search"
+msgstr ""
+
+#: add-patch.c:1580 git-add--interactive.perl:1661
+msgid "search for regex? "
+msgstr "искать с помощью регулярного выражения? "
+
+#: add-patch.c:1595
+#, c-format
+msgid "Malformed search regexp %s: %s"
+msgstr ""
+
+#: add-patch.c:1612
+msgid "No hunk matches the given pattern"
+msgstr ""
+
+#: add-patch.c:1619
+msgid "Sorry, cannot split this hunk"
+msgstr ""
+
+#: add-patch.c:1623
+#, c-format
+msgid "Split into %d hunks."
+msgstr ""
+
+#: add-patch.c:1627
+msgid "Sorry, cannot edit this hunk"
+msgstr ""
+
+#: add-patch.c:1679
+msgid "'git apply' failed"
+msgstr ""
+
+#: advice.c:143
+#, c-format
+msgid ""
+"\n"
+"Disable this message with \"git config advice.%s false\""
+msgstr ""
+
+#: advice.c:159
 #, c-format
 msgid "%shint: %.*s%s\n"
 msgstr "%sподсказка: %.*s%s\n"
 
-#: advice.c:156
+#: advice.c:250
 msgid "Cherry-picking is not possible because you have unmerged files."
 msgstr "Невозможно выполнить копирование коммита в текущую ветку, так как у вас имеются не слитые файлы."
 
-#: advice.c:158
+#: advice.c:252
 msgid "Committing is not possible because you have unmerged files."
 msgstr "Невозможно закоммитить, так как у вас имеются не слитые файлы."
 
-#: advice.c:160
+#: advice.c:254
 msgid "Merging is not possible because you have unmerged files."
 msgstr "Невозможно выполнить слияние, так как у вас имеются не слитые файлы."
 
-#: advice.c:162
+#: advice.c:256
 msgid "Pulling is not possible because you have unmerged files."
 msgstr "Невозможно выполнить получение, так как у вас имеются не слитые файлы."
 
-#: advice.c:164
+#: advice.c:258
 msgid "Reverting is not possible because you have unmerged files."
 msgstr "Невозможно обратить изменения, так как у вас имеются не слитые файлы."
 
-#: advice.c:166
+#: advice.c:260
 #, c-format
 msgid "It is not possible to %s because you have unmerged files."
 msgstr "Невозможно выполнить %s, так как у вас имеются не слитые файлы."
 
-#: advice.c:174
+#: advice.c:268
 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 "Исправьте их в рабочем каталоге, затем запустите «git add/rm <файл>»,\nчтобы пометить исправление и сделайте коммит."
 
-#: advice.c:182
+#: advice.c:276
 msgid "Exiting because of an unresolved conflict."
 msgstr "Выход из-за неразрешенного конфликта."
 
-#: advice.c:187 builtin/merge.c:1320
+#: advice.c:281 builtin/merge.c:1369
 msgid "You have not concluded your merge (MERGE_HEAD exists)."
 msgstr "Вы не завершили слияние (присутствует файл MERGE_HEAD)."
 
-#: advice.c:189
+#: advice.c:283
 msgid "Please, commit your changes before merging."
 msgstr "Перед слиянием, выполните коммит ваших изменений."
 
-#: advice.c:190
+#: advice.c:284
 msgid "Exiting because of unfinished merge."
 msgstr "Выход из-за незавершенного слияния."
 
-#: advice.c:196
+#: advice.c:290
 #, c-format
 msgid ""
-"Note: checking out '%s'.\n"
+"Note: switching to '%s'.\n"
 "\n"
 "You are in 'detached HEAD' state. You can look around, make experimental\n"
 "changes and commit them, and you can discard any commits you make in this\n"
-"state without impacting any branches by performing another checkout.\n"
+"state without impacting any branches by switching back to a branch.\n"
 "\n"
 "If you want to create a new branch to retain commits you create, you may\n"
-"do so (now or later) by using -b with the checkout command again. Example:\n"
+"do so (now or later) by using -c with the switch command. Example:\n"
+"\n"
+"  git switch -c <new-branch-name>\n"
+"\n"
+"Or undo this operation with:\n"
 "\n"
-"  git checkout -b <new-branch-name>\n"
+"  git switch -\n"
 "\n"
-msgstr "Примечание: переход на «%s».\n\nВы сейчас в состоянии «отделённого HEAD». Вы можете осмотреться, сделать\nэкспериментальные изменения и закоммитить их, также вы можете отменить\nизменения любых коммитов в этом состоянии не затрагивая любые ветки и\nне переходя на них.\n\nЕсли вы хотите создать новую ветку и сохранить свои коммиты, то вы\nможете сделать это (сейчас или позже) вызвав команду checkout снова,\nно с параметром -b. Например:\n\n  git checkout -b <имя-новой-ветки>\n\n"
+"Turn off this advice by setting config variable advice.detachedHead to false\n"
+"\n"
+msgstr ""
 
 #: alias.c:50
 msgid "cmdline ends with \\"
@@ -97,92 +763,82 @@ msgstr "командная строка заканчивается символ
 msgid "unclosed quote"
 msgstr "пропущена закрывающая кавычка"
 
-#: apply.c:63
+#: apply.c:69
 #, c-format
 msgid "unrecognized whitespace option '%s'"
 msgstr "неопознанная опция для пробелов «%s»"
 
-#: apply.c:79
+#: apply.c:85
 #, c-format
 msgid "unrecognized whitespace ignore option '%s'"
 msgstr "неопознанная опция для игнорирования пробелов «%s»"
 
-#: apply.c:129
+#: apply.c:135
 msgid "--reject and --3way cannot be used together."
 msgstr "--reject и --3way нельзя использовать одновременно."
 
-#: apply.c:131
+#: apply.c:137
 msgid "--cached and --3way cannot be used together."
 msgstr "--cached и --3way нельзя использовать одновременно."
 
-#: apply.c:134
+#: apply.c:140
 msgid "--3way outside a repository"
 msgstr "--3way вне репозитория"
 
-#: apply.c:145
+#: apply.c:151
 msgid "--index outside a repository"
 msgstr "--index вне репозитория"
 
-#: apply.c:148
+#: apply.c:154
 msgid "--cached outside a repository"
 msgstr "--cached вне репозитория"
 
-#: apply.c:829
+#: apply.c:801
 #, c-format
 msgid "Cannot prepare timestamp regexp %s"
 msgstr "Не удалось подготовить регулярное выражение для метки времени %s"
 
-#: apply.c:838
+#: apply.c:810
 #, c-format
 msgid "regexec returned %d for input: %s"
 msgstr "regexec возвратил %d для ввода: %s"
 
-#: apply.c:912
+#: apply.c:884
 #, c-format
 msgid "unable to find filename in patch at line %d"
 msgstr "не удалось найти имя файла в строке патча %d"
 
-#: apply.c:950
+#: apply.c:922
 #, c-format
 msgid "git apply: bad git-diff - expected /dev/null, got %s on line %d"
 msgstr "git apply: плохой git-diff — ожидалось /dev/null, получено %s на строке %d"
 
-#: apply.c:956
+#: apply.c:928
 #, c-format
 msgid "git apply: bad git-diff - inconsistent new filename on line %d"
 msgstr "git apply: плохой git-diff — не согласующееся новое имя файла на строке %d"
 
-#: apply.c:957
+#: apply.c:929
 #, c-format
 msgid "git apply: bad git-diff - inconsistent old filename on line %d"
 msgstr "git apply: плохой git-diff — не согласующееся старое имя файла на строке %d"
 
-#: apply.c:962
+#: apply.c:934
 #, c-format
 msgid "git apply: bad git-diff - expected /dev/null on line %d"
 msgstr "git apply: плохой git-diff  — ожидалось /dev/null на строке %d"
 
-#: apply.c:991
+#: apply.c:963
 #, c-format
 msgid "invalid mode on line %d: %s"
 msgstr "недопустимый режим %d: %s"
 
-#: apply.c:1310
+#: apply.c:1282
 #, c-format
 msgid "inconsistent header lines %d and %d"
 msgstr "противоречивые строки заголовка %d и %d"
 
-#: apply.c:1482
-#, c-format
-msgid "recount: unexpected line: %.*s"
-msgstr "recount: не ожидаемая строка: %.*s"
-
-#: apply.c:1551
-#, c-format
-msgid "patch fragment without header at line %d: %.*s"
-msgstr "фрагмент изменений без заголовка на строке %d: %.*s"
-
-#: apply.c:1571
+#: apply.c:1372
 #, c-format
 msgid ""
 "git diff header lacks filename information when removing %d leading pathname"
@@ -195,70 +851,80 @@ msgstr[1] "заголовок git diff не нашел информацию об
 msgstr[2] "заголовок git diff не нашел информацию об имени файла при удалении %d ведущих компонент пути к файлу (строка %d)"
 msgstr[3] "заголовок git diff не нашел информацию об имени файла при удалении %d ведущих компонент пути к файлу (строка %d)"
 
-#: apply.c:1584
+#: apply.c:1385
 #, c-format
 msgid "git diff header lacks filename information (line %d)"
 msgstr "заголовок git diff не содержит информации об имени файла (строка %d)"
 
-#: apply.c:1772
+#: apply.c:1481
+#, c-format
+msgid "recount: unexpected line: %.*s"
+msgstr "recount: не ожидаемая строка: %.*s"
+
+#: apply.c:1550
+#, c-format
+msgid "patch fragment without header at line %d: %.*s"
+msgstr "фрагмент изменений без заголовка на строке %d: %.*s"
+
+#: apply.c:1753
 msgid "new file depends on old contents"
 msgstr "новый файл зависит от старого содержимого"
 
-#: apply.c:1774
+#: apply.c:1755
 msgid "deleted file still has contents"
 msgstr "удаленный файл все еще имеет содержимое"
 
-#: apply.c:1808
+#: apply.c:1789
 #, c-format
 msgid "corrupt patch at line %d"
 msgstr "патч поврежден на строке %d"
 
-#: apply.c:1845
+#: apply.c:1826
 #, c-format
 msgid "new file %s depends on old contents"
 msgstr "новый файл %s зависит от старого содержимого"
 
-#: apply.c:1847
+#: apply.c:1828
 #, c-format
 msgid "deleted file %s still has contents"
 msgstr "удаленный файл %s все еще имеет содержимое"
 
-#: apply.c:1850
+#: apply.c:1831
 #, c-format
 msgid "** warning: file %s becomes empty but is not deleted"
 msgstr "** предупреждение: файл %s становится пустым, но не удаляется"
 
-#: apply.c:1997
+#: apply.c:1978
 #, c-format
 msgid "corrupt binary patch at line %d: %.*s"
 msgstr "поврежденный двоичный патч на строке %d: %.*s"
 
-#: apply.c:2034
+#: apply.c:2015
 #, c-format
 msgid "unrecognized binary patch at line %d"
 msgstr "неопознанный двоичный патч на строке %d"
 
-#: apply.c:2196
+#: apply.c:2177
 #, c-format
 msgid "patch with only garbage at line %d"
 msgstr "патч с мусором на строке %d"
 
-#: apply.c:2282
+#: apply.c:2263
 #, c-format
 msgid "unable to read symlink %s"
 msgstr "не удалось прочитать символьную ссылку %s"
 
-#: apply.c:2286
+#: apply.c:2267
 #, c-format
 msgid "unable to open or read %s"
 msgstr "не удалось открыть или прочесть %s"
 
-#: apply.c:2945
+#: apply.c:2936
 #, c-format
 msgid "invalid start of line: '%c'"
 msgstr "неправильное начало строки: «%c»"
 
-#: apply.c:3066
+#: apply.c:3057
 #, c-format
 msgid "Hunk #%d succeeded at %d (offset %d line)."
 msgid_plural "Hunk #%d succeeded at %d (offset %d lines)."
@@ -267,258 +933,253 @@ msgstr[1] "Часть #%d успешно применена на %d (со сдв
 msgstr[2] "Часть #%d успешно применена на %d (со сдвигом в %d строк)."
 msgstr[3] "Часть #%d успешно применена на %d (со сдвигом в %d строк)."
 
-#: apply.c:3078
+#: apply.c:3069
 #, c-format
 msgid "Context reduced to (%ld/%ld) to apply fragment at %d"
 msgstr "Контекст сужен до (%ld/%ld), чтобы применить фрагмент на %d строке"
 
-#: apply.c:3084
+#: apply.c:3075
 #, c-format
 msgid ""
 "while searching for:\n"
 "%.*s"
 msgstr "при поиске:\n%.*s"
 
-#: apply.c:3106
+#: apply.c:3097
 #, c-format
 msgid "missing binary patch data for '%s'"
 msgstr "пропущены данные двоичного патча для «%s»"
 
-#: apply.c:3114
+#: apply.c:3105
 #, c-format
 msgid "cannot reverse-apply a binary patch without the reverse hunk to '%s'"
 msgstr "невозможно выполнить reverse-apply для двоичного патча, без обращения изменений блока «%s»"
 
-#: apply.c:3161
+#: apply.c:3152
 #, c-format
 msgid "cannot apply binary patch to '%s' without full index line"
 msgstr "невозможно применить двоичный патч «%s» без строки с указанной полной версией индекса"
 
-#: apply.c:3171
+#: apply.c:3163
 #, c-format
 msgid ""
 "the patch applies to '%s' (%s), which does not match the current contents."
 msgstr "патч применятся к файлу «%s» (%s), но его текущее содержимое не соотвествует ожидаемому."
 
-#: apply.c:3179
+#: apply.c:3171
 #, c-format
 msgid "the patch applies to an empty '%s' but it is not empty"
 msgstr "патч применяется к пустому файлу «%s», но файл не пустой"
 
-#: apply.c:3197
+#: apply.c:3189
 #, c-format
 msgid "the necessary postimage %s for '%s' cannot be read"
 msgstr "не удалось прочитать необходимую посылку %s для «%s»"
 
-#: apply.c:3210
+#: apply.c:3202
 #, c-format
 msgid "binary patch does not apply to '%s'"
 msgstr "не удалось применить двоичный патч к «%s»"
 
-#: apply.c:3216
+#: apply.c:3209
 #, c-format
 msgid "binary patch to '%s' creates incorrect result (expecting %s, got %s)"
 msgstr "после применения двоичного патча для «%s» был получен неправильный результат (ожидалось %s, получено %s)"
 
-#: apply.c:3237
+#: apply.c:3230
 #, c-format
 msgid "patch failed: %s:%ld"
 msgstr "ошибка применения изменений: %s:%ld"
 
-#: apply.c:3360
+#: apply.c:3353
 #, c-format
 msgid "cannot checkout %s"
 msgstr "не удалось переключить состояние на %s"
 
-#: apply.c:3412 apply.c:3423 apply.c:3469 midx.c:59 setup.c:279
+#: apply.c:3405 apply.c:3416 apply.c:3462 midx.c:73 setup.c:308
 #, c-format
 msgid "failed to read %s"
 msgstr "не удалось прочитать %s"
 
-#: apply.c:3420
+#: apply.c:3413
 #, c-format
 msgid "reading from '%s' beyond a symbolic link"
 msgstr "чтение из «%s» за символической ссылкой"
 
-#: apply.c:3449 apply.c:3692
+#: apply.c:3442 apply.c:3685
 #, c-format
 msgid "path %s has been renamed/deleted"
 msgstr "путь %s был переименован/удален"
 
-#: apply.c:3535 apply.c:3707
+#: apply.c:3528 apply.c:3700
 #, c-format
 msgid "%s: does not exist in index"
 msgstr "%s: нет в индексе"
 
-#: apply.c:3544 apply.c:3715
+#: apply.c:3537 apply.c:3708 apply.c:3952
 #, c-format
 msgid "%s: does not match index"
 msgstr "%s: не совпадает с индексом"
 
-#: apply.c:3579
+#: apply.c:3572
 msgid "repository lacks the necessary blob to fall back on 3-way merge."
 msgstr "в репозитории отсутствует необходимый двоичный объект для отката к трёхходовому слиянию."
 
-#: apply.c:3582
+#: apply.c:3575
 #, c-format
 msgid "Falling back to three-way merge...\n"
 msgstr "Откат к трёхходовому слиянию…\n"
 
-#: apply.c:3598 apply.c:3602
+#: apply.c:3591 apply.c:3595
 #, c-format
 msgid "cannot read the current contents of '%s'"
 msgstr "не удалось прочитать текущее содержимое «%s»"
 
-#: apply.c:3614
+#: apply.c:3607
 #, c-format
 msgid "Failed to fall back on three-way merge...\n"
 msgstr "Не удалось откатиться к трёхходовому слиянию…\n"
 
-#: apply.c:3628
+#: apply.c:3621
 #, c-format
 msgid "Applied patch to '%s' with conflicts.\n"
 msgstr "Патч применен к «%s» с конфликтами.\n"
 
-#: apply.c:3633
+#: apply.c:3626
 #, c-format
 msgid "Applied patch to '%s' cleanly.\n"
 msgstr "Патч применен к «%s» без ошибок.\n"
 
-#: apply.c:3659
+#: apply.c:3652
 msgid "removal patch leaves file contents"
 msgstr "патч удаления не удалил содержимое файла"
 
-#: apply.c:3732
+#: apply.c:3725
 #, c-format
 msgid "%s: wrong type"
 msgstr "%s: неправильный тип"
 
-#: apply.c:3734
+#: apply.c:3727
 #, c-format
 msgid "%s has type %o, expected %o"
 msgstr "%s имеет тип %o, а ожидался %o"
 
-#: apply.c:3885 apply.c:3887 read-cache.c:830 read-cache.c:856
-#: read-cache.c:1309
+#: apply.c:3892 apply.c:3894 read-cache.c:832 read-cache.c:858
+#: read-cache.c:1313
 #, c-format
 msgid "invalid path '%s'"
 msgstr "неправильный путь «%s»"
 
-#: apply.c:3943
+#: apply.c:3950
 #, c-format
 msgid "%s: already exists in index"
 msgstr "%s: уже содержится в индексе"
 
-#: apply.c:3946
+#: apply.c:3954
 #, c-format
 msgid "%s: already exists in working directory"
 msgstr "%s: уже содержится в рабочем каталоге"
 
-#: apply.c:3966
+#: apply.c:3974
 #, c-format
 msgid "new mode (%o) of %s does not match old mode (%o)"
 msgstr "новый режим доступа (%o) для %s не соответствует старому режиму доступа (%o)"
 
-#: apply.c:3971
+#: apply.c:3979
 #, c-format
 msgid "new mode (%o) of %s does not match old mode (%o) of %s"
 msgstr "новый режим доступа (%o) для %s не соответствует старому режиму доступа (%o) для %s"
 
-#: apply.c:3991
+#: apply.c:3999
 #, c-format
 msgid "affected file '%s' is beyond a symbolic link"
 msgstr "затронутый файл «%s» находится за символической ссылкой"
 
-#: apply.c:3995
+#: apply.c:4003
 #, c-format
 msgid "%s: patch does not apply"
 msgstr "%s: не удалось применить патч"
 
-#: apply.c:4010
+#: apply.c:4018
 #, c-format
 msgid "Checking patch %s..."
 msgstr "Проверка патча %s…"
 
-#: apply.c:4102
+#: apply.c:4110
 #, c-format
 msgid "sha1 information is lacking or useless for submodule %s"
 msgstr "информация об sha1 отсутствует или бесполезна для подмодуля %s"
 
-#: apply.c:4109
+#: apply.c:4117
 #, c-format
 msgid "mode change for %s, which is not in current HEAD"
 msgstr "изменен режим для %s, который не находится в текущем HEAD"
 
-#: apply.c:4112
+#: apply.c:4120
 #, c-format
 msgid "sha1 information is lacking or useless (%s)."
 msgstr "информация об sha1 отсутствует или бесполезна (%s)."
 
-#: apply.c:4117 builtin/checkout.c:257 builtin/reset.c:143
-#, c-format
-msgid "make_cache_entry failed for path '%s'"
-msgstr "сбой make_cache_entry для пути «%s»"
-
-#: apply.c:4121
+#: apply.c:4129
 #, c-format
 msgid "could not add %s to temporary index"
 msgstr "не удалось добавить %s во временный индекс"
 
-#: apply.c:4131
+#: apply.c:4139
 #, c-format
 msgid "could not write temporary index to %s"
 msgstr "не удалось записать временный индкекс в %s"
 
-#: apply.c:4269
+#: apply.c:4277
 #, c-format
 msgid "unable to remove %s from index"
 msgstr "не удалось удалить %s из индекса"
 
-#: apply.c:4303
+#: apply.c:4311
 #, c-format
 msgid "corrupt patch for submodule %s"
 msgstr "поврежденный патч для подмодуля %s"
 
-#: apply.c:4309
+#: apply.c:4317
 #, c-format
 msgid "unable to stat newly created file '%s'"
 msgstr "не удалось выполнить stat для созданного файла «%s»"
 
-#: apply.c:4317
+#: apply.c:4325
 #, c-format
 msgid "unable to create backing store for newly created file %s"
 msgstr "не удалось создать вспомогательный файл для созданного файла %s"
 
-#: apply.c:4323 apply.c:4468
+#: apply.c:4331 apply.c:4476
 #, c-format
 msgid "unable to add cache entry for %s"
 msgstr "не удалось создать запись в кэше для %s"
 
-#: apply.c:4366
+#: apply.c:4374 builtin/bisect--helper.c:524
 #, c-format
 msgid "failed to write to '%s'"
 msgstr "не удалось записать в «%s»"
 
-#: apply.c:4370
+#: apply.c:4378
 #, c-format
 msgid "closing file '%s'"
 msgstr "закрытие файла «%s»"
 
-#: apply.c:4440
+#: apply.c:4448
 #, c-format
 msgid "unable to write file '%s' mode %o"
 msgstr "не удалось записать файл «%s» с режимом доступа %o"
 
-#: apply.c:4538
+#: apply.c:4546
 #, c-format
 msgid "Applied patch %s cleanly."
 msgstr "Патч %s применен без ошибок."
 
-#: apply.c:4546
+#: apply.c:4554
 msgid "internal error"
 msgstr "внутренняя ошибка"
 
-#: apply.c:4549
+#: apply.c:4557
 #, c-format
 msgid "Applying patch %%s with %d reject..."
 msgid_plural "Applying patch %%s with %d rejects..."
@@ -527,45 +1188,45 @@ msgstr[1] "Применение патча %%s с %d отказами…"
 msgstr[2] "Применение патча %%s с %d отказами…"
 msgstr[3] "Применение патча %%s с %d отказами…"
 
-#: apply.c:4560
+#: apply.c:4568
 #, c-format
 msgid "truncating .rej filename to %.*s.rej"
 msgstr "усечение имени .rej файла до %.*s.rej"
 
-#: apply.c:4568 builtin/fetch.c:837 builtin/fetch.c:1118
+#: apply.c:4576 builtin/fetch.c:927 builtin/fetch.c:1228
 #, c-format
 msgid "cannot open %s"
 msgstr "не удалось открыть %s"
 
-#: apply.c:4582
+#: apply.c:4590
 #, c-format
 msgid "Hunk #%d applied cleanly."
 msgstr "Блок №%d применен без ошибок."
 
-#: apply.c:4586
+#: apply.c:4594
 #, c-format
 msgid "Rejected hunk #%d."
 msgstr "Блок №%d отклонен."
 
-#: apply.c:4696
+#: apply.c:4718
 #, c-format
 msgid "Skipped patch '%s'."
 msgstr "Патч «%s» пропущен."
 
-#: apply.c:4704
+#: apply.c:4726
 msgid "unrecognized input"
 msgstr "не распознанный ввод"
 
-#: apply.c:4724
+#: apply.c:4746
 msgid "unable to read index file"
 msgstr "не удалось прочитать файл индекса"
 
-#: apply.c:4879
+#: apply.c:4903
 #, c-format
 msgid "can't open patch '%s': %s"
 msgstr "не удалось открыть патч «%s»: %s"
 
-#: apply.c:4906
+#: apply.c:4930
 #, c-format
 msgid "squelched %d whitespace error"
 msgid_plural "squelched %d whitespace errors"
@@ -574,7 +1235,7 @@ msgstr[1] "пропущено %d ошибки в пробельных симво
 msgstr[2] "пропущено %d ошибок в пробельных символах"
 msgstr[3] "пропущено %d ошибок в пробельных символах"
 
-#: apply.c:4912 apply.c:4927
+#: apply.c:4936 apply.c:4951
 #, c-format
 msgid "%d line adds whitespace errors."
 msgid_plural "%d lines add whitespace errors."
@@ -583,7 +1244,7 @@ msgstr[1] "%d строки добавили ошибки в пробельных
 msgstr[2] "%d строк добавили ошибки в пробельных символах."
 msgstr[3] "%d строк добавили ошибки в пробельных символах."
 
-#: apply.c:4920
+#: apply.c:4944
 #, c-format
 msgid "%d line applied after fixing whitespace errors."
 msgid_plural "%d lines applied after fixing whitespace errors."
@@ -592,142 +1253,177 @@ msgstr[1] "%d строки добавлено после исправления
 msgstr[2] "%d строк добавлено после исправления ошибок в пробелах."
 msgstr[3] "%d строки добавлено после исправления ошибок в пробелах."
 
-#: apply.c:4936 builtin/add.c:540 builtin/mv.c:301 builtin/rm.c:390
+#: apply.c:4960 builtin/add.c:618 builtin/mv.c:304 builtin/rm.c:406
 msgid "Unable to write new index file"
 msgstr "Не удалось записать новый файл индекса"
 
-#: apply.c:4963 apply.c:4966 builtin/am.c:2210 builtin/am.c:2213
-#: builtin/clone.c:120 builtin/fetch.c:118 builtin/merge.c:271
-#: builtin/pull.c:207 builtin/submodule--helper.c:407
-#: builtin/submodule--helper.c:1366 builtin/submodule--helper.c:1369
-#: builtin/submodule--helper.c:1849 builtin/submodule--helper.c:1852
-#: builtin/submodule--helper.c:2091 git-add--interactive.perl:197
-msgid "path"
-msgstr "путь"
-
-#: apply.c:4964
+#: apply.c:4988
 msgid "don't apply changes matching the given path"
 msgstr "не применять изменения по указанному пути"
 
-#: apply.c:4967
+#: apply.c:4991
 msgid "apply changes matching the given path"
 msgstr "применять изменения по указанному пути"
 
-#: apply.c:4969 builtin/am.c:2219
+#: apply.c:4993 builtin/am.c:2266
 msgid "num"
 msgstr "количество"
 
-#: apply.c:4970
+#: apply.c:4994
 msgid "remove <num> leading slashes from traditional diff paths"
 msgstr "удалить <количество> ведущих косых черт из традиционных путей списка изменений"
 
-#: apply.c:4973
+#: apply.c:4997
 msgid "ignore additions made by the patch"
 msgstr "игнорировать добавления, сделанные этим патчем"
 
-#: apply.c:4975
+#: apply.c:4999
 msgid "instead of applying the patch, output diffstat for the input"
 msgstr "вместо применения патча вывести статистику добавлений и удалений для ввода"
 
-#: apply.c:4979
+#: apply.c:5003
 msgid "show number of added and deleted lines in decimal notation"
 msgstr "показать количество добавленных и удаленных строк в десятичном представлении"
 
-#: apply.c:4981
+#: apply.c:5005
 msgid "instead of applying the patch, output a summary for the input"
 msgstr "вместо применения патча вывести сводку изменений для ввода"
 
-#: apply.c:4983
+#: apply.c:5007
 msgid "instead of applying the patch, see if the patch is applicable"
 msgstr "вместо применения патча проверить подходит ли он"
 
-#: apply.c:4985
+#: apply.c:5009
 msgid "make sure the patch is applicable to the current index"
 msgstr "проверить, что патч применяется к текущему индексу"
 
-#: apply.c:4987
+#: apply.c:5011
 msgid "mark new files with `git add --intent-to-add`"
 msgstr "помечать новые файлы с «git add --intent-to-add»"
 
-#: apply.c:4989
+#: apply.c:5013
 msgid "apply a patch without touching the working tree"
 msgstr "применить патч, не изменяя рабочий каталог"
 
-#: apply.c:4991
+#: apply.c:5015
 msgid "accept a patch that touches outside the working area"
 msgstr "принять патч, который затрагивает файлы за рабочим каталогом"
 
-#: apply.c:4994
+#: apply.c:5018
 msgid "also apply the patch (use with --stat/--summary/--check)"
 msgstr "а также применить патч (используйте с --stat/--summary/--check)"
 
-#: apply.c:4996
+#: apply.c:5020
 msgid "attempt three-way merge if a patch does not apply"
 msgstr "попытаться сделать трехходовое слияние, если патч не применяется"
 
-#: apply.c:4998
+#: apply.c:5022
 msgid "build a temporary index based on embedded index information"
 msgstr "построить временный индекс, основанный на встроенной информации об индексе"
 
-#: apply.c:5001 builtin/checkout-index.c:173 builtin/ls-files.c:524
+#: apply.c:5025 builtin/checkout-index.c:182 builtin/ls-files.c:525
 msgid "paths are separated with NUL character"
 msgstr "пути, отделённые НУЛЕВЫМ символом"
 
-#: apply.c:5003
+#: apply.c:5027
 msgid "ensure at least <n> lines of context match"
 msgstr "удостовериться, что по крайней мере <n> строк контекста совпадают"
 
-#: apply.c:5004 builtin/am.c:2198 builtin/interpret-trailers.c:97
-#: builtin/interpret-trailers.c:99 builtin/interpret-trailers.c:101
-#: builtin/pack-objects.c:3317 builtin/rebase.c:1415
+#: apply.c:5028 builtin/am.c:2245 builtin/interpret-trailers.c:98
+#: builtin/interpret-trailers.c:100 builtin/interpret-trailers.c:102
+#: builtin/pack-objects.c:3562 builtin/rebase.c:1346
 msgid "action"
 msgstr "действие"
 
-#: apply.c:5005
+#: apply.c:5029
 msgid "detect new or modified lines that have whitespace errors"
 msgstr "определять новые или модифицированные строки, у которых есть ошибки в пробельных символах"
 
-#: apply.c:5008 apply.c:5011
+#: apply.c:5032 apply.c:5035
 msgid "ignore changes in whitespace when finding context"
 msgstr "игнорировать изменения в пробельных символах при поиске контекста"
 
-#: apply.c:5014
+#: apply.c:5038
 msgid "apply the patch in reverse"
 msgstr "применить патч с обращением изменений"
 
-#: apply.c:5016
+#: apply.c:5040
 msgid "don't expect at least one line of context"
 msgstr "не ожидать как минимум одной строки контекста"
 
-#: apply.c:5018
+#: apply.c:5042
 msgid "leave the rejected hunks in corresponding *.rej files"
 msgstr "оставить отклоненные блоки изменений в соответствующих *.rej файлах"
 
-#: apply.c:5020
+#: apply.c:5044
 msgid "allow overlapping hunks"
 msgstr "разрешить перекрывающиеся блоки изменений"
 
-#: apply.c:5021 builtin/add.c:291 builtin/check-ignore.c:22
-#: builtin/commit.c:1317 builtin/count-objects.c:98 builtin/fsck.c:786
-#: builtin/log.c:2045 builtin/mv.c:123 builtin/read-tree.c:128
+#: apply.c:5045 builtin/add.c:329 builtin/check-ignore.c:22
+#: builtin/commit.c:1364 builtin/count-objects.c:98 builtin/fsck.c:775
+#: builtin/log.c:2287 builtin/mv.c:123 builtin/read-tree.c:128
 msgid "be verbose"
 msgstr "быть многословнее"
 
-#: apply.c:5023
+#: apply.c:5047
 msgid "tolerate incorrectly detected missing new-line at the end of file"
 msgstr "разрешить некорректно определенные пропущенные пустые строки в конце файла"
 
-#: apply.c:5026
+#: apply.c:5050
 msgid "do not trust the line counts in the hunk headers"
 msgstr "не доверять количеству строк из заголовка блока изменений"
 
-#: apply.c:5028 builtin/am.c:2207
+#: apply.c:5052 builtin/am.c:2254
 msgid "root"
 msgstr "корень"
 
-#: apply.c:5029
-msgid "prepend <root> to all filenames"
-msgstr "добавить <корень> спереди ко всем именам файлов"
+#: apply.c:5053
+msgid "prepend <root> to all filenames"
+msgstr "добавить <корень> спереди ко всем именам файлов"
+
+#: archive-tar.c:125 archive-zip.c:345
+#, c-format
+msgid "cannot stream blob %s"
+msgstr "не удалось создать поток двоичного объекта %s"
+
+#: archive-tar.c:265 archive-zip.c:358
+#, c-format
+msgid "unsupported file mode: 0%o (SHA1: %s)"
+msgstr "неподдерживаемый режим доступа к файлу: 0%o (SHA1: %s)"
+
+#: archive-tar.c:450
+#, c-format
+msgid "unable to start '%s' filter"
+msgstr "не удалось запустить фильтр «%s»"
+
+#: archive-tar.c:453
+msgid "unable to redirect descriptor"
+msgstr "не удалось перенаправить дескриптор"
+
+#: archive-tar.c:460
+#, c-format
+msgid "'%s' filter reported error"
+msgstr "фильтр «%s» сообщил об ошибке"
+
+#: archive-zip.c:318
+#, c-format
+msgid "path is not valid UTF-8: %s"
+msgstr "путь не является действительным UTF-8: %s"
+
+#: archive-zip.c:322
+#, c-format
+msgid "path too long (%d chars, SHA1: %s): %s"
+msgstr "путь слишком длинный (%d символов, SHA1: %s): %s"
+
+#: archive-zip.c:469 builtin/pack-objects.c:244 builtin/pack-objects.c:247
+#, c-format
+msgid "deflate error (%d)"
+msgstr "ошибка сжатия (%d)"
+
+#: archive-zip.c:603
+#, c-format
+msgid "timestamp too large for this system: %<PRIuMAX>"
+msgstr "отметка времени слишком большая для этой системы: %<PRIuMAX>"
 
 #: archive.c:14
 msgid "git archive [<options>] <tree-ish> [<path>...]"
@@ -747,224 +1443,198 @@ msgstr "git archive --remote <репозиторий> [--exec <команда>]
 msgid "git archive --remote <repo> [--exec <cmd>] --list"
 msgstr "git archive --remote <репозиторий> [--exec <команда>] --list"
 
-#: archive.c:372 builtin/add.c:177 builtin/add.c:516 builtin/rm.c:299
+#: archive.c:192
+#, c-format
+msgid "cannot read %s"
+msgstr "не удалось прочитать %s"
+
+#: archive.c:345 sequencer.c:459 sequencer.c:1736 sequencer.c:2886
+#: sequencer.c:3327 sequencer.c:3436 builtin/am.c:249 builtin/commit.c:786
+#: builtin/merge.c:1138
+#, c-format
+msgid "could not read '%s'"
+msgstr "не удалось прочитать «%s»"
+
+#: archive.c:430 builtin/add.c:181 builtin/add.c:594 builtin/rm.c:315
 #, c-format
 msgid "pathspec '%s' did not match any files"
 msgstr "спецификатор пути «%s» не соответствует ни одному файлу"
 
-#: archive.c:396
+#: archive.c:454
 #, c-format
 msgid "no such ref: %.*s"
 msgstr "нет такой ссылки: %.*s"
 
-#: archive.c:401
+#: archive.c:460
 #, c-format
 msgid "not a valid object name: %s"
 msgstr "недопустимое имя объекта: %s"
 
-#: archive.c:414
+#: archive.c:473
 #, c-format
 msgid "not a tree object: %s"
 msgstr "недействительный объект дерева: %s"
 
-#: archive.c:424
+#: archive.c:485
 msgid "current working directory is untracked"
 msgstr "текущий рабочий каталог не отслеживается"
 
-#: archive.c:455
+#: archive.c:526
+#, c-format
+msgid "File not found: %s"
+msgstr ""
+
+#: archive.c:528
+#, c-format
+msgid "Not a regular file: %s"
+msgstr ""
+
+#: archive.c:555
 msgid "fmt"
 msgstr "формат"
 
-#: archive.c:455
+#: archive.c:555
 msgid "archive format"
 msgstr "формат архива"
 
-#: archive.c:456 builtin/log.c:1557
+#: archive.c:556 builtin/log.c:1765
 msgid "prefix"
 msgstr "префикс"
 
-#: archive.c:457
+#: archive.c:557
 msgid "prepend prefix to each pathname in the archive"
 msgstr "добавлять префикс перед каждым путем файла в архиве"
 
-#: archive.c:458 builtin/blame.c:821 builtin/blame.c:822
-#: builtin/commit-tree.c:117 builtin/config.c:129 builtin/fast-export.c:1091
-#: builtin/fast-export.c:1093 builtin/grep.c:895 builtin/hash-object.c:105
-#: builtin/ls-files.c:560 builtin/ls-files.c:563 builtin/notes.c:412
-#: builtin/notes.c:578 builtin/read-tree.c:123 parse-options.h:177
+#: archive.c:558 archive.c:561 builtin/blame.c:886 builtin/blame.c:890
+#: builtin/blame.c:891 builtin/commit-tree.c:117 builtin/config.c:135
+#: builtin/fast-export.c:1207 builtin/fast-export.c:1209
+#: builtin/fast-export.c:1213 builtin/grep.c:919 builtin/hash-object.c:105
+#: builtin/ls-files.c:561 builtin/ls-files.c:564 builtin/notes.c:412
+#: builtin/notes.c:578 builtin/read-tree.c:123 parse-options.h:190
 msgid "file"
 msgstr "файл"
 
-#: archive.c:459 builtin/archive.c:90
+#: archive.c:559
+msgid "add untracked file to archive"
+msgstr ""
+
+#: archive.c:562 builtin/archive.c:90
 msgid "write the archive to this file"
 msgstr "запись архива в этот файл"
 
-#: archive.c:461
+#: archive.c:564
 msgid "read .gitattributes in working directory"
 msgstr "читать .gitattributes в рабочем каталоге"
 
-#: archive.c:462
+#: archive.c:565
 msgid "report archived files on stderr"
 msgstr "отчет об архивированных файлах в stderr"
 
-#: archive.c:463
-msgid "store only"
-msgstr "только хранение"
-
-#: archive.c:464
-msgid "compress faster"
-msgstr "сжимать быстрее"
-
-#: archive.c:472
-msgid "compress better"
-msgstr "сжимать лучше"
+#: archive.c:567
+msgid "set compression level"
+msgstr ""
 
-#: archive.c:475
+#: archive.c:570
 msgid "list supported archive formats"
 msgstr "перечислить поддерживаемые форматы архивов"
 
-#: archive.c:477 builtin/archive.c:91 builtin/clone.c:110 builtin/clone.c:113
-#: builtin/submodule--helper.c:1378 builtin/submodule--helper.c:1858
+#: archive.c:572 builtin/archive.c:91 builtin/clone.c:114 builtin/clone.c:117
+#: builtin/submodule--helper.c:1830 builtin/submodule--helper.c:2335
 msgid "repo"
 msgstr "репозиторий"
 
-#: archive.c:478 builtin/archive.c:92
+#: archive.c:573 builtin/archive.c:92
 msgid "retrieve the archive from remote repository <repo>"
 msgstr "получить архив из внешнего <репозитория>"
 
-#: archive.c:479 builtin/archive.c:93 builtin/difftool.c:707
+#: archive.c:574 builtin/archive.c:93 builtin/difftool.c:714
 #: builtin/notes.c:498
 msgid "command"
 msgstr "команда"
 
-#: archive.c:480 builtin/archive.c:94
+#: archive.c:575 builtin/archive.c:94
 msgid "path to the remote git-upload-archive command"
 msgstr "путь к команде git-upload-archive на машине с внешним репозиторием"
 
-#: archive.c:487
+#: archive.c:582
 msgid "Unexpected option --remote"
 msgstr "Неожиданная опция --remote"
 
-#: archive.c:489
+#: archive.c:584
 msgid "Option --exec can only be used together with --remote"
 msgstr "Опция --exec может использоваться только вместе с --remote"
 
-#: archive.c:491
+#: archive.c:586
 msgid "Unexpected option --output"
 msgstr "Неожиданная опция --output"
 
-#: archive.c:513
+#: archive.c:588
+msgid "Options --add-file and --remote cannot be used together"
+msgstr ""
+
+#: archive.c:610
 #, c-format
 msgid "Unknown archive format '%s'"
 msgstr "Неизвестный формат архива «%s»"
 
-#: archive.c:520
+#: archive.c:619
 #, c-format
 msgid "Argument not supported for format '%s': -%d"
 msgstr "Аргумент не поддерживается для формата «%s»: -%d"
 
-#: archive-tar.c:125 archive-zip.c:345
-#, c-format
-msgid "cannot stream blob %s"
-msgstr "не удалось создать поток двоичного объекта %s"
-
-#: archive-tar.c:260 archive-zip.c:363
-#, c-format
-msgid "unsupported file mode: 0%o (SHA1: %s)"
-msgstr "неподдерживаемый режим доступа к файлу: 0%o (SHA1: %s)"
-
-#: archive-tar.c:287 archive-zip.c:353
-#, c-format
-msgid "cannot read %s"
-msgstr "не удалось прочитать %s"
-
-#: archive-tar.c:459
-#, c-format
-msgid "unable to start '%s' filter"
-msgstr "не удалось запустить фильтр «%s»"
-
-#: archive-tar.c:462
-msgid "unable to redirect descriptor"
-msgstr "не удалось перенаправить дескриптор"
-
-#: archive-tar.c:469
-#, c-format
-msgid "'%s' filter reported error"
-msgstr "фильтр «%s» сообщил об ошибке"
-
-#: archive-zip.c:314
-#, c-format
-msgid "path is not valid UTF-8: %s"
-msgstr "путь не является действительным UTF-8: %s"
-
-#: archive-zip.c:318
-#, c-format
-msgid "path too long (%d chars, SHA1: %s): %s"
-msgstr "путь слишком длинный (%d символов, SHA1: %s): %s"
-
-#: archive-zip.c:474 builtin/pack-objects.c:226 builtin/pack-objects.c:229
-#, c-format
-msgid "deflate error (%d)"
-msgstr "ошибка сжатия (%d)"
-
-#: archive-zip.c:609
-#, c-format
-msgid "timestamp too large for this system: %<PRIuMAX>"
-msgstr "отметка времени слишком большая для этой системы: %<PRIuMAX>"
-
-#: attr.c:211
+#: attr.c:202
 #, c-format
 msgid "%.*s is not a valid attribute name"
 msgstr "%.*s не является допустимым именем атрибута"
 
-#: attr.c:368
+#: attr.c:359
 #, c-format
 msgid "%s not allowed: %s:%d"
 msgstr "%s не разрешено: %s:%d"
 
-#: attr.c:408
+#: attr.c:399
 msgid ""
 "Negative patterns are ignored in git attributes\n"
 "Use '\\!' for literal leading exclamation."
 msgstr "Отрицающие шаблоны в атрибутах git игнорируются.\nИспользуйте «\\!» для буквального использования символа в значении «восклицательный знак»."
 
-#: bisect.c:468
+#: bisect.c:489
 #, c-format
 msgid "Badly quoted content in file '%s': %s"
 msgstr "Плохое содержимое файла «%s»: %s"
 
-#: bisect.c:678
+#: bisect.c:699
 #, c-format
 msgid "We cannot bisect more!\n"
 msgstr "Невозможно продолжить бинарный поиск!\n"
 
-#: bisect.c:733
+#: bisect.c:766
 #, c-format
 msgid "Not a valid commit name %s"
 msgstr "Недопустимое имя коммита %s"
 
-#: bisect.c:758
+#: bisect.c:791
 #, c-format
 msgid ""
 "The merge base %s is bad.\n"
 "This means the bug has been fixed between %s and [%s].\n"
 msgstr "База слияния %s является плохим коммитом.\nЭто значит, что ошибка была исправлена где-то между %s и [%s].\n"
 
-#: bisect.c:763
+#: bisect.c:796
 #, c-format
 msgid ""
 "The merge base %s is new.\n"
 "The property has changed between %s and [%s].\n"
 msgstr "База слияния %s является новой.\nСвойство было изменено где-то между %s и [%s].\n"
 
-#: bisect.c:768
+#: bisect.c:801
 #, c-format
 msgid ""
 "The merge base %s is %s.\n"
 "This means the first '%s' commit is between %s and [%s].\n"
 msgstr "База слияния %s является %s.\nЭто значит, что «%s» коммит находится где-то между %s и [%s].\n"
 
-#: bisect.c:776
+#: bisect.c:809
 #, c-format
 msgid ""
 "Some %s revs are not ancestors of the %s rev.\n"
@@ -972,7 +1642,7 @@ msgid ""
 "Maybe you mistook %s and %s revs?\n"
 msgstr "Несколько %s коммитов не являются предками %s коммита.\nВ этом случае git bisect не может работать правильно.\nВозможно, вы перепутали редакции %s и %s местами?\n"
 
-#: bisect.c:789
+#: bisect.c:822
 #, c-format
 msgid ""
 "the merge base between %s and [%s] must be skipped.\n"
@@ -980,43 +1650,43 @@ msgid ""
 "We continue anyway."
 msgstr "База слияния между %s и [%s] должно быть пропущена.\nПоэтому мы не можем быть уверены, что первый %s коммит находится между %s и %s.\nНо все же продолжаем поиск."
 
-#: bisect.c:822
+#: bisect.c:861
 #, c-format
 msgid "Bisecting: a merge base must be tested\n"
 msgstr "Бинарный поиск: база слияния должна быть проверена\n"
 
-#: bisect.c:865
+#: bisect.c:911
 #, c-format
 msgid "a %s revision is needed"
 msgstr "нужно указать %s редакцию"
 
-#: bisect.c:884 builtin/notes.c:177 builtin/tag.c:248
+#: bisect.c:941 builtin/notes.c:177 builtin/tag.c:255
 #, c-format
 msgid "could not create file '%s'"
 msgstr "не удалось создать файл «%s»"
 
-#: bisect.c:928 builtin/merge.c:146
+#: bisect.c:987 builtin/merge.c:152
 #, c-format
 msgid "could not read file '%s'"
 msgstr "не удалось прочитать файл «%s»"
 
-#: bisect.c:958
+#: bisect.c:1027
 msgid "reading bisect refs failed"
 msgstr "сбой при чтении ссылок двоичного поиска"
 
-#: bisect.c:977
+#: bisect.c:1057
 #, c-format
 msgid "%s was both %s and %s\n"
 msgstr "%s была одновременно и %s и %s\n"
 
-#: bisect.c:985
+#: bisect.c:1066
 #, c-format
 msgid ""
 "No testable commit found.\n"
 "Maybe you started with bad path parameters?\n"
 msgstr "Тестируемый коммит не найден.\nВозможно, вы начали поиск с указанием неправильного параметра пути?\n"
 
-#: bisect.c:1004
+#: bisect.c:1095
 #, c-format
 msgid "(roughly %d step)"
 msgid_plural "(roughly %d steps)"
@@ -1027,7 +1697,7 @@ msgstr[3] "(примерно %d шагов)"
 
 #. TRANSLATORS: the last %s will be replaced with "(roughly %d
 #. steps)" translation.
-#: bisect.c:1010
+#: bisect.c:1101
 #, 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"
@@ -1036,37 +1706,37 @@ msgstr[1] "Бинарный поиск: %d редакции осталось п
 msgstr[2] "Бинарный поиск: %d редакций осталось проверить после этой %s\n"
 msgstr[3] "Бинарный поиск: %d редакций осталось проверить после этой %s\n"
 
-#: blame.c:1794
+#: blame.c:2777
 msgid "--contents and --reverse do not blend well."
 msgstr "--contents и --reverse не очень сочетаются."
 
-#: blame.c:1808
+#: blame.c:2791
 msgid "cannot use --contents with final commit object name"
 msgstr "нельзя использовать --contents с указанием финального имени объекта"
 
-#: blame.c:1829
+#: blame.c:2812
 msgid "--reverse and --first-parent together require specified latest commit"
 msgstr "при --reverse и --first-parent вместе нужно указывать конкретный последний коммит"
 
-#: blame.c:1838 bundle.c:164 ref-filter.c:2077 remote.c:1938 sequencer.c:2030
-#: sequencer.c:4224 builtin/commit.c:1017 builtin/log.c:382 builtin/log.c:940
-#: builtin/log.c:1428 builtin/log.c:1804 builtin/log.c:2094
-#: builtin/merge.c:415 builtin/pack-objects.c:3140 builtin/pack-objects.c:3155
-#: builtin/shortlog.c:192
+#: blame.c:2821 bundle.c:213 ref-filter.c:2272 remote.c:2031 sequencer.c:2138
+#: sequencer.c:4633 submodule.c:855 builtin/commit.c:1045 builtin/log.c:409
+#: builtin/log.c:1023 builtin/log.c:1625 builtin/log.c:2046 builtin/log.c:2336
+#: builtin/merge.c:423 builtin/pack-objects.c:3380 builtin/pack-objects.c:3395
+#: builtin/shortlog.c:267
 msgid "revision walk setup failed"
 msgstr "сбой инициализации прохода по редакциям"
 
-#: blame.c:1856
+#: blame.c:2839
 msgid ""
 "--reverse --first-parent together require range along first-parent chain"
 msgstr "при указании --reverse и --first-parent вместе, требуется также указать диапазон по цепочке первого родителя"
 
-#: blame.c:1867
+#: blame.c:2850
 #, c-format
 msgid "no such path %s in %s"
 msgstr "нет такого пути %s в %s"
 
-#: blame.c:1878
+#: blame.c:2861
 #, c-format
 msgid "cannot read blob %s for path %s"
 msgstr "невозможно прочитать объект %s для пути %s"
@@ -1186,37 +1856,51 @@ msgstr "Неоднозначное имя объекта: «%s»."
 msgid "Not a valid branch point: '%s'."
 msgstr "Недопустимая точка ветки: «%s»."
 
-#: branch.c:359
+#: branch.c:365
 #, c-format
 msgid "'%s' is already checked out at '%s'"
 msgstr "«%s» уже находится на «%s»"
 
-#: branch.c:382
+#: branch.c:388
 #, c-format
 msgid "HEAD of working tree %s is not updated"
 msgstr "HEAD рабочего каталога %s не обновлён"
 
-#: bundle.c:36
+#: bundle.c:41
 #, c-format
-msgid "'%s' does not look like a v2 bundle file"
-msgstr "«%s» не похож на файл пакета версии 2"
+msgid "unrecognized bundle hash algorithm: %s"
+msgstr ""
+
+#: bundle.c:45
+#, c-format
+msgid "unknown capability '%s'"
+msgstr ""
 
-#: bundle.c:64
+#: bundle.c:71
+#, c-format
+msgid "'%s' does not look like a v2 or v3 bundle file"
+msgstr ""
+
+#: bundle.c:110
 #, c-format
 msgid "unrecognized header: %s%s (%d)"
 msgstr "неопознанный заголовок: %s%s (%d)"
 
-#: bundle.c:90 rerere.c:480 rerere.c:690 sequencer.c:2281 sequencer.c:2916
-#: builtin/commit.c:788
+#: bundle.c:136 rerere.c:480 rerere.c:690 sequencer.c:2390 sequencer.c:3176
+#: builtin/commit.c:814
 #, c-format
 msgid "could not open '%s'"
 msgstr "не удалось открыть «%s»"
 
-#: bundle.c:143
+#: bundle.c:189
 msgid "Repository lacks these prerequisite commits:"
 msgstr "В репозитории отсутствуют необходимые коммиты:"
 
-#: bundle.c:194
+#: bundle.c:192
+msgid "need a repository to verify a bundle"
+msgstr ""
+
+#: bundle.c:243
 #, c-format
 msgid "The bundle contains this ref:"
 msgid_plural "The bundle contains these %d refs:"
@@ -1225,11 +1909,11 @@ msgstr[1] "Пакет содержит эти %d ссылки:"
 msgstr[2] "Пакет содержит эти %d ссылок:"
 msgstr[3] "Пакет содержит эти %d ссылок:"
 
-#: bundle.c:201
+#: bundle.c:250
 msgid "The bundle records a complete history."
 msgstr "Пакет содержит полную историю."
 
-#: bundle.c:203
+#: bundle.c:252
 #, c-format
 msgid "The bundle requires this ref:"
 msgid_plural "The bundle requires these %d refs:"
@@ -1238,160 +1922,159 @@ msgstr[1] "Пакет требует эти %d ссылки:"
 msgstr[2] "Пакет требует эти %d ссылок:"
 msgstr[3] "Пакет требует эти %d ссылок:"
 
-#: bundle.c:269
+#: bundle.c:319
 msgid "unable to dup bundle descriptor"
 msgstr "не удалось дублировать дескриптор пакета"
 
-#: bundle.c:276
+#: bundle.c:326
 msgid "Could not spawn pack-objects"
 msgstr "Не удалось создать объекты пакета"
 
-#: bundle.c:287
+#: bundle.c:337
 msgid "pack-objects died"
 msgstr "критическая ошибка pack-objects"
 
-#: bundle.c:329
+#: bundle.c:379
 msgid "rev-list died"
 msgstr "критическая ошибка rev-list"
 
-#: bundle.c:378
+#: bundle.c:428
 #, c-format
 msgid "ref '%s' is excluded by the rev-list options"
 msgstr "ссылка «%s» исключена в соответствии с опциями rev-list"
 
-#: bundle.c:457 builtin/log.c:197 builtin/log.c:1709 builtin/shortlog.c:306
+#: bundle.c:498
+#, c-format
+msgid "unsupported bundle version %d"
+msgstr ""
+
+#: bundle.c:500
+#, c-format
+msgid "cannot write bundle version %d with algorithm %s"
+msgstr ""
+
+#: bundle.c:522 builtin/log.c:209 builtin/log.c:1927 builtin/shortlog.c:408
 #, c-format
 msgid "unrecognized argument: %s"
 msgstr "неопознанный аргумент: %s"
 
-#: bundle.c:465
+#: bundle.c:530
 msgid "Refusing to create empty bundle."
 msgstr "Отклонение создания пустого пакета."
 
-#: bundle.c:475
+#: bundle.c:540
 #, c-format
 msgid "cannot create '%s'"
 msgstr "не удалось создать «%s»"
 
-#: bundle.c:500
+#: bundle.c:565
 msgid "index-pack died"
 msgstr "критическая ошибка index-pack"
 
-#: color.c:296
+#: color.c:329
 #, c-format
 msgid "invalid color value: %.*s"
 msgstr "недопустимое значение цвета: %.*s"
 
-#: commit.c:50 sequencer.c:2697 builtin/am.c:355 builtin/am.c:399
-#: builtin/am.c:1377 builtin/am.c:2022 builtin/replace.c:455
-#, c-format
-msgid "could not parse %s"
-msgstr "не удалось разобрать %s"
-
-#: commit.c:52
-#, c-format
-msgid "%s %s is not a commit!"
-msgstr "%s %s не является коммитом!"
-
-#: commit.c:193
-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 устарела и будет удалена в следующих версиях Git.\n\nИспользуйте «git replace --convert-graft-file» для  конвертации сращений (grafts) на ссылки замены.\n\nЧтобы скрыть это сообщение запустите «git config advice.graftFileDeprecated false»"
-
-#: commit.c:1128
-#, c-format
-msgid "Commit %s has an untrusted GPG signature, allegedly by %s."
-msgstr "Коммит %s содержит не доверенную GPG подпись, предположительно от %s."
-
-#: commit.c:1131
-#, c-format
-msgid "Commit %s has a bad GPG signature allegedly by %s."
-msgstr "Коммит %s содержит плохую GPG подпись, предположительно от %s."
-
-#: commit.c:1134
-#, c-format
-msgid "Commit %s does not have a GPG signature."
-msgstr "Коммит %s не содержит GPG подпись."
-
-#: commit.c:1137
-#, c-format
-msgid "Commit %s has a good GPG signature by %s\n"
-msgstr "Коммит %s содержит действительную GPG подпись, от %s.\n"
-
-#: commit.c:1391
-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 "Предупреждение: сообщение коммита не соответствует UTF-8.\nВозможно, вы захотите исправить его после исправления сообщения\nили настроить опцию i18n.commitencoding и указать кодировку\nсообщений, которую использует ваш проект.\n"
+#: commit-graph.c:188 midx.c:47
+msgid "invalid hash version"
+msgstr ""
 
-#: commit-graph.c:105
+#: commit-graph.c:246
 msgid "commit-graph file is too small"
 msgstr "файл commit-graph слишком маленький"
 
-#: commit-graph.c:170
+#: commit-graph.c:311
 #, c-format
 msgid "commit-graph signature %X does not match signature %X"
 msgstr "подпись commit-graph файла %X не соотвествует подписи %X"
 
-#: commit-graph.c:177
+#: commit-graph.c:318
 #, c-format
 msgid "commit-graph version %X does not match version %X"
 msgstr "версия commit-graph файла %X не соотвествует версии %X"
 
-#: commit-graph.c:184
+#: commit-graph.c:325
 #, c-format
 msgid "commit-graph hash version %X does not match version %X"
-msgstr "версия хеш-суммы commit-graph файла %X не соответствует версии %X"
+msgstr "версия хэш-функции commit-graph файла %X не соответствует версии %X"
 
-#: commit-graph.c:207
-msgid "commit-graph chunk lookup table entry missing; file may be incomplete"
-msgstr "не найдена таблица расположения частей в файле commit-graph; возможно файл повреждён"
+#: commit-graph.c:342
+#, c-format
+msgid "commit-graph file is too small to hold %u chunks"
+msgstr ""
 
-#: commit-graph.c:218
+#: commit-graph.c:361
 #, c-format
 msgid "commit-graph improper chunk offset %08x%08x"
 msgstr "некорректное смещение части в commit-graph файле %08x%08x"
 
-#: commit-graph.c:255
+#: commit-graph.c:433
 #, c-format
 msgid "commit-graph chunk id %08x appears multiple times"
 msgstr "часть файла commit-graph с идентификатором %08x появляется несколько раз"
 
-#: commit-graph.c:390
+#: commit-graph.c:499
+msgid "commit-graph has no base graphs chunk"
+msgstr ""
+
+#: commit-graph.c:509
+msgid "commit-graph chain does not match"
+msgstr ""
+
+#: commit-graph.c:557
+#, c-format
+msgid "invalid commit-graph chain: line '%s' not a hash"
+msgstr ""
+
+#: commit-graph.c:581
+msgid "unable to find all commit-graph files"
+msgstr ""
+
+#: commit-graph.c:721 commit-graph.c:785
+msgid "invalid commit position. commit-graph is likely corrupt"
+msgstr ""
+
+#: commit-graph.c:742
 #, c-format
 msgid "could not find commit %s"
 msgstr "не удалось найти коммит %s"
 
-#: commit-graph.c:732 builtin/pack-objects.c:2649
+#: commit-graph.c:1036 builtin/am.c:1292
+#, c-format
+msgid "unable to parse commit %s"
+msgstr "не удалось разобрать коммит %s"
+
+#: commit-graph.c:1252 builtin/pack-objects.c:2864
 #, c-format
 msgid "unable to get type of object %s"
 msgstr "не удалось получить тип объекта %s"
 
-#: commit-graph.c:765
+#: commit-graph.c:1283
 msgid "Loading known commits in commit graph"
 msgstr "Загрузка известных коммитов на граф коммитов"
 
-#: commit-graph.c:781
+#: commit-graph.c:1300
 msgid "Expanding reachable commits in commit graph"
 msgstr "Расширение достижимых коммитов на граф коммитов"
 
-#: commit-graph.c:793
+#: commit-graph.c:1320
 msgid "Clearing commit marks in commit graph"
 msgstr "Очистка пометок коммитов на графе коммитов"
 
-#: commit-graph.c:813
+#: commit-graph.c:1339
 msgid "Computing commit graph generation numbers"
 msgstr "Вычисление номеров поколений на графе коммитов"
 
-#: commit-graph.c:930
+#: commit-graph.c:1406
+msgid "Computing commit changed paths Bloom filters"
+msgstr ""
+
+#: commit-graph.c:1483
+msgid "Collecting referenced commits"
+msgstr ""
+
+#: commit-graph.c:1508
 #, c-format
 msgid "Finding commits for commit graph in %d pack"
 msgid_plural "Finding commits for commit graph in %d packs"
@@ -1400,52 +2083,43 @@ msgstr[1] "Поиск коммитов для графа коммитов в %d
 msgstr[2] "Поиск коммитов для графа коммитов в %d пакетах"
 msgstr[3] "Поиск коммитов для графа коммитов в %d пакетах"
 
-#: commit-graph.c:943
+#: commit-graph.c:1521
 #, c-format
 msgid "error adding pack %s"
 msgstr "ошибка добавления пакета %s"
 
-#: commit-graph.c:945
+#: commit-graph.c:1525
 #, c-format
 msgid "error opening index for %s"
 msgstr "ошибка открытия индекса для %s"
 
-#: commit-graph.c:959
-#, c-format
-msgid "Finding commits for commit graph from %d ref"
-msgid_plural "Finding commits for commit graph from %d refs"
-msgstr[0] "Поиск коммитов для графа коммитов по %d ссылке"
-msgstr[1] "Поиск коммитов для графа коммитов по %d ссылкам"
-msgstr[2] "Поиск коммитов для графа коммитов по %d ссылкам"
-msgstr[3] "Поиск коммитов для графа коммитов по %d ссылкам"
-
-#: commit-graph.c:991
+#: commit-graph.c:1562
 msgid "Finding commits for commit graph among packed objects"
 msgstr "Поиск коммитов для графа коммитов среди упакованных объектов"
 
-#: commit-graph.c:1004
-msgid "Counting distinct commits in commit graph"
-msgstr "Вычисление количества отдельных коммитов на графе коммитов"
-
-#: commit-graph.c:1017
-#, c-format
-msgid "the commit graph format cannot write %d commits"
-msgstr "программе форматирования графа коммитов не удалось записать %d коммитов"
-
-#: commit-graph.c:1026
+#: commit-graph.c:1580
 msgid "Finding extra edges in commit graph"
 msgstr "Поиск дополнительных ребер на графе коммитов"
 
-#: commit-graph.c:1050
-msgid "too many commits to write graph"
-msgstr "слишком много коммитов для записи графа"
+#: commit-graph.c:1628
+msgid "failed to write correct number of base graph ids"
+msgstr ""
 
-#: commit-graph.c:1057 midx.c:819
+#: commit-graph.c:1670 midx.c:819
 #, c-format
 msgid "unable to create leading directories of %s"
 msgstr "не удалось создать родительские каталоги для %s"
 
-#: commit-graph.c:1097
+#: commit-graph.c:1683
+msgid "unable to create temporary graph layer"
+msgstr ""
+
+#: commit-graph.c:1688
+#, c-format
+msgid "unable to adjust shared permissions for '%s'"
+msgstr ""
+
+#: commit-graph.c:1758
 #, c-format
 msgid "Writing out commit graph in %d pass"
 msgid_plural "Writing out commit graph in %d passes"
@@ -1454,83 +2128,161 @@ msgstr[1] "Запись графа коммитов в %d прохода"
 msgstr[2] "Запись графа коммитов в %d проходов"
 msgstr[3] "Запись графа коммитов в %d прохода"
 
-#: commit-graph.c:1162
+#: commit-graph.c:1803
+msgid "unable to open commit-graph chain file"
+msgstr ""
+
+#: commit-graph.c:1819
+msgid "failed to rename base commit-graph file"
+msgstr ""
+
+#: commit-graph.c:1839
+msgid "failed to rename temporary commit-graph file"
+msgstr ""
+
+#: commit-graph.c:1965
+msgid "Scanning merged commits"
+msgstr ""
+
+#: commit-graph.c:2009
+msgid "Merging commit-graph"
+msgstr ""
+
+#: commit-graph.c:2115
+msgid "attempting to write a commit-graph, but 'core.commitGraph' is disabled"
+msgstr ""
+
+#: commit-graph.c:2214
+msgid "too many commits to write graph"
+msgstr "слишком много коммитов для записи графа"
+
+#: commit-graph.c:2307
 msgid "the commit-graph file has incorrect checksum and is likely corrupt"
 msgstr "файл commit-graph содержит неправильную контрольную сумму и скорее всего поврежден"
 
-#: commit-graph.c:1172
+#: commit-graph.c:2317
 #, c-format
 msgid "commit-graph has incorrect OID order: %s then %s"
 msgstr "файл commit-graph содержит неправильный порядок OID: %s, а затем %s"
 
-#: commit-graph.c:1182 commit-graph.c:1197
+#: commit-graph.c:2327 commit-graph.c:2342
 #, c-format
 msgid "commit-graph has incorrect fanout value: fanout[%d] = %u != %u"
 msgstr "файл commit-graph содержит неправильное значение fanout: fanout[%d] = %u != %u"
 
-#: commit-graph.c:1189
+#: commit-graph.c:2334
 #, c-format
 msgid "failed to parse commit %s from commit-graph"
 msgstr "не удалось разобрать коммит %s из файла commit-graph"
 
-#: commit-graph.c:1206
+#: commit-graph.c:2352
 msgid "Verifying commits in commit graph"
 msgstr "Проверка коммитов на графе коммитов"
 
-#: commit-graph.c:1219
+#: commit-graph.c:2367
 #, c-format
 msgid "failed to parse commit %s from object database for commit-graph"
 msgstr "не удалось разобрать коммит %s из базы объектов файла commit-graph"
 
-#: commit-graph.c:1226
+#: commit-graph.c:2374
 #, c-format
 msgid "root tree OID for commit %s in commit-graph is %s != %s"
-msgstr " в файле commit-graph OID корня дерева для коммита %s является %s != %s"
+msgstr "в файле commit-graph OID корня дерева для коммита %s является %s != %s"
 
-#: commit-graph.c:1236
+#: commit-graph.c:2384
 #, c-format
 msgid "commit-graph parent list for commit %s is too long"
 msgstr "слишком большой список родителей файле commit-graph для коммита %s"
 
-#: commit-graph.c:1242
+#: commit-graph.c:2393
 #, c-format
 msgid "commit-graph parent for %s is %s != %s"
 msgstr "в файле commit-graph родитель для %s является %s != %s"
 
-#: commit-graph.c:1255
+#: commit-graph.c:2407
 #, c-format
 msgid "commit-graph parent list for commit %s terminates early"
 msgstr "в файле commit-graph список родителей для коммита %s закончился слишком рано"
 
-#: commit-graph.c:1260
+#: commit-graph.c:2412
 #, c-format
 msgid ""
 "commit-graph has generation number zero for commit %s, but non-zero "
 "elsewhere"
 msgstr "в файле commit-graph содержится нулевой номер поколения для коммита %s, но ненулевой в остальных случаях"
 
-#: commit-graph.c:1264
+#: commit-graph.c:2416
 #, c-format
 msgid ""
 "commit-graph has non-zero generation number for commit %s, but zero "
 "elsewhere"
 msgstr "в файле commit-graph содержится ненулевой номер поколения для коммита %s, но нулевой в остальных случаях"
 
-#: commit-graph.c:1279
+#: commit-graph.c:2432
 #, c-format
 msgid "commit-graph generation for commit %s is %u != %u"
 msgstr "в файле commit-graph номер поколения для коммита %s является %u != %u"
 
-#: commit-graph.c:1285
+#: commit-graph.c:2438
 #, c-format
 msgid "commit date for commit %s in commit-graph is %<PRIuMAX> != %<PRIuMAX>"
 msgstr "в файле commit-graph дата коммита %s является %<PRIuMAX> != %<PRIuMAX>"
 
+#: commit.c:52 sequencer.c:2879 builtin/am.c:359 builtin/am.c:403
+#: builtin/am.c:1371 builtin/am.c:2018 builtin/replace.c:457
+#, c-format
+msgid "could not parse %s"
+msgstr "не удалось разобрать %s"
+
+#: commit.c:54
+#, c-format
+msgid "%s %s is not a commit!"
+msgstr "%s %s не является коммитом!"
+
+#: commit.c:194
+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 устарела и будет удалена в следующих версиях Git.\n\nИспользуйте «git replace --convert-graft-file» для  конвертации сращений (grafts) на ссылки замены.\n\nЧтобы скрыть это сообщение запустите «git config advice.graftFileDeprecated false»"
+
+#: commit.c:1172
+#, c-format
+msgid "Commit %s has an untrusted GPG signature, allegedly by %s."
+msgstr "Коммит %s содержит не доверенную GPG подпись, предположительно от %s."
+
+#: commit.c:1176
+#, c-format
+msgid "Commit %s has a bad GPG signature allegedly by %s."
+msgstr "Коммит %s содержит плохую GPG подпись, предположительно от %s."
+
+#: commit.c:1179
+#, c-format
+msgid "Commit %s does not have a GPG signature."
+msgstr "Коммит %s не содержит GPG подпись."
+
+#: commit.c:1182
+#, c-format
+msgid "Commit %s has a good GPG signature by %s\n"
+msgstr "Коммит %s содержит действительную GPG подпись, от %s.\n"
+
+#: commit.c:1436
+msgid ""
+"Warning: commit message did not conform to UTF-8.\n"
+"You may want to amend it after fixing the message, or set the config\n"
+"variable i18n.commitencoding to the encoding your project uses.\n"
+msgstr "Предупреждение: сообщение коммита не соответствует UTF-8.\nВозможно, вы захотите исправить его после исправления сообщения\nили настроить опцию i18n.commitencoding и указать кодировку\nсообщений, которую использует ваш проект.\n"
+
 #: compat/obstack.c:406 compat/obstack.c:408
 msgid "memory exhausted"
 msgstr "память исчерпана"
 
-#: config.c:123
+#: config.c:125
 #, c-format
 msgid ""
 "exceeded maximum include depth (%d) while including\n"
@@ -1540,294 +2292,290 @@ msgid ""
 "This might be due to circular includes."
 msgstr ""
 
-#: config.c:139
+#: config.c:141
 #, c-format
 msgid "could not expand include path '%s'"
 msgstr "не удалось раскрыть путь включения «%s»"
 
-#: config.c:150
+#: config.c:152
 msgid "relative config includes must come from files"
 msgstr "относительные включения конфигурации должны исходить из файлов"
 
-#: config.c:190
+#: config.c:198
 msgid "relative config include conditionals must come from files"
 msgstr "относительные условные включения конфигурации должны исходить из файлов"
 
-#: config.c:348
+#: config.c:378
 #, c-format
 msgid "key does not contain a section: %s"
 msgstr ""
 
-#: config.c:354
+#: config.c:384
 #, c-format
 msgid "key does not contain variable name: %s"
 msgstr ""
 
-#: config.c:378 sequencer.c:2459
+#: config.c:408 sequencer.c:2580
 #, c-format
 msgid "invalid key: %s"
 msgstr "недействительный ключ: %s"
 
-#: config.c:384
+#: config.c:414
 #, c-format
 msgid "invalid key (newline): %s"
 msgstr ""
 
-#: config.c:420 config.c:432
+#: config.c:450 config.c:462
 #, c-format
 msgid "bogus config parameter: %s"
 msgstr ""
 
-#: config.c:467
+#: config.c:497
 #, c-format
 msgid "bogus format in %s"
 msgstr ""
 
-#: config.c:793
+#: config.c:836
 #, c-format
 msgid "bad config line %d in blob %s"
 msgstr "ошибка в %d строке двоичного объекта %s"
 
-#: config.c:797
+#: config.c:840
 #, c-format
 msgid "bad config line %d in file %s"
 msgstr "ошибка в %d строке файла %s"
 
-#: config.c:801
+#: config.c:844
 #, c-format
 msgid "bad config line %d in standard input"
 msgstr "ошибка в %d строке стандартного ввода"
 
-#: config.c:805
+#: config.c:848
 #, c-format
 msgid "bad config line %d in submodule-blob %s"
 msgstr "ошибка в %d строке двоичного объекта подмодуля %s"
 
-#: config.c:809
+#: config.c:852
 #, c-format
 msgid "bad config line %d in command line %s"
 msgstr "ошибка в %d строке коммандной строки %s"
 
-#: config.c:813
+#: config.c:856
 #, c-format
 msgid "bad config line %d in %s"
 msgstr "ошибка в %d строке в %s"
 
-#: config.c:952
+#: config.c:993
 msgid "out of range"
 msgstr "вне диапазона"
 
-#: config.c:952
+#: config.c:993
 msgid "invalid unit"
 msgstr "неправильное число"
 
-#: config.c:958
+#: config.c:994
 #, c-format
 msgid "bad numeric config value '%s' for '%s': %s"
 msgstr "неправильное числовое значение «%s» для «%s»: %s"
 
-#: config.c:963
+#: config.c:1013
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in blob %s: %s"
 msgstr "неправильное числовое значение «%s» для «%s» в двоичном объекте %s: %s"
 
-#: config.c:966
+#: config.c:1016
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in file %s: %s"
 msgstr "неправильное числовое значение «%s» для «%s» в файле %s: %s"
 
-#: config.c:969
+#: config.c:1019
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in standard input: %s"
 msgstr "неправильное числовое значение «%s» для «%s» на стандартном вводе: %s"
 
-#: config.c:972
+#: config.c:1022
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in submodule-blob %s: %s"
 msgstr "неправильное числовое значение «%s» для «%s» в двоичном объекте подмодуля %s: %s"
 
-#: config.c:975
+#: config.c:1025
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in command line %s: %s"
 msgstr "неправильное числовое значение «%s» для «%s» на коммандной строке %s: %s"
 
-#: config.c:978
+#: config.c:1028
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in %s: %s"
 msgstr "неправильное числовое значение «%s» для «%s» в %s: %s"
 
-#: config.c:1073
+#: config.c:1123
 #, c-format
 msgid "failed to expand user dir in: '%s'"
 msgstr "сбой разворачивания пути каталога пользователя: «%s»"
 
-#: config.c:1082
+#: config.c:1132
 #, c-format
 msgid "'%s' for '%s' is not a valid timestamp"
 msgstr "«%s» для «%s» не является допустимой меткой даты/времени"
 
-#: config.c:1173
+#: config.c:1223
 #, c-format
 msgid "abbrev length out of range: %d"
 msgstr ""
 
-#: config.c:1187 config.c:1198
+#: config.c:1237 config.c:1248
 #, c-format
 msgid "bad zlib compression level %d"
 msgstr "неправильный уровень сжатия zlib %d"
 
-#: config.c:1290
+#: config.c:1340
 msgid "core.commentChar should only be one character"
 msgstr ""
 
-#: config.c:1323
+#: config.c:1373
 #, c-format
 msgid "invalid mode for object creation: %s"
 msgstr "недопустимый режим создания объекта: %s"
 
-#: config.c:1395
+#: config.c:1445
 #, c-format
 msgid "malformed value for %s"
 msgstr ""
 
-#: config.c:1421
+#: config.c:1471
 #, c-format
 msgid "malformed value for %s: %s"
 msgstr ""
 
-#: config.c:1422
+#: config.c:1472
 msgid "must be one of nothing, matching, simple, upstream or current"
 msgstr ""
 
-#: config.c:1483 builtin/pack-objects.c:3397
+#: config.c:1533 builtin/pack-objects.c:3649
 #, c-format
 msgid "bad pack compression level %d"
 msgstr "неправильный уровень сжатия пакета %d"
 
-#: config.c:1604
+#: config.c:1655
 #, c-format
 msgid "unable to load config blob object '%s'"
 msgstr ""
 
-#: config.c:1607
+#: config.c:1658
 #, c-format
 msgid "reference '%s' does not point to a blob"
 msgstr ""
 
-#: config.c:1624
+#: config.c:1675
 #, c-format
 msgid "unable to resolve config blob '%s'"
 msgstr ""
 
-#: config.c:1654
+#: config.c:1705
 #, c-format
 msgid "failed to parse %s"
 msgstr ""
 
-#: config.c:1710
+#: config.c:1759
 msgid "unable to parse command-line config"
 msgstr "не удалось разобрать конфигурацию из командной строки"
 
-#: config.c:2059
+#: config.c:2122
 msgid "unknown error occurred while reading the configuration files"
 msgstr "произошла неизвестная ошибка при чтении файлов конфигурации"
 
-#: config.c:2229
+#: config.c:2296
 #, c-format
 msgid "Invalid %s: '%s'"
 msgstr "Недействительный %s: «%s»"
 
-#: config.c:2272
-#, c-format
-msgid "unknown core.untrackedCache value '%s'; using 'keep' default value"
-msgstr "неизвестное значение «%s» для core.untrackedCache; использую стандартное значение «keep»"
-
-#: config.c:2298
+#: config.c:2341
 #, c-format
 msgid "splitIndex.maxPercentChange value '%d' should be between 0 and 100"
 msgstr "значение «%d» для splitIndex.maxPercentChange должно быть от 0 до 100"
 
-#: config.c:2344
+#: config.c:2387
 #, c-format
 msgid "unable to parse '%s' from command-line config"
 msgstr "не удалось разобрать «%s» в конфигурации из командной строки"
 
-#: config.c:2346
+#: config.c:2389
 #, c-format
 msgid "bad config variable '%s' in file '%s' at line %d"
 msgstr "неправильная переменная конфигурации «%s» в файле «%s» на строке %d"
 
-#: config.c:2427
+#: config.c:2473
 #, c-format
 msgid "invalid section name '%s'"
 msgstr ""
 
-#: config.c:2459
+#: config.c:2505
 #, c-format
 msgid "%s has multiple values"
 msgstr "%s имеет несколько значений"
 
-#: config.c:2488
+#: config.c:2534
 #, c-format
 msgid "failed to write new configuration file %s"
 msgstr ""
 
-#: config.c:2740 config.c:3064
+#: config.c:2786 config.c:3112
 #, c-format
 msgid "could not lock config file %s"
 msgstr ""
 
-#: config.c:2751
+#: config.c:2797
 #, c-format
 msgid "opening %s"
 msgstr ""
 
-#: config.c:2786 builtin/config.c:328
+#: config.c:2834 builtin/config.c:361
 #, c-format
 msgid "invalid pattern: %s"
 msgstr ""
 
-#: config.c:2811
+#: config.c:2859
 #, c-format
 msgid "invalid config file %s"
 msgstr ""
 
-#: config.c:2824 config.c:3077
+#: config.c:2872 config.c:3125
 #, c-format
 msgid "fstat on %s failed"
 msgstr "сбой при выполнении fstat на файле %s"
 
-#: config.c:2835
+#: config.c:2883
 #, c-format
 msgid "unable to mmap '%s'"
 msgstr ""
 
-#: config.c:2844 config.c:3082
+#: config.c:2892 config.c:3130
 #, c-format
 msgid "chmod on %s failed"
 msgstr ""
 
-#: config.c:2929 config.c:3179
+#: config.c:2977 config.c:3227
 #, c-format
 msgid "could not write config file %s"
 msgstr ""
 
-#: config.c:2963
+#: config.c:3011
 #, c-format
 msgid "could not set '%s' to '%s'"
 msgstr "не удалось установить «%s» в «%s»"
 
-#: config.c:2965 builtin/remote.c:782
+#: config.c:3013 builtin/remote.c:657 builtin/remote.c:855
+#: builtin/remote.c:863
 #, c-format
 msgid "could not unset '%s'"
 msgstr "не удалось сбросить значение для «%s»"
 
-#: config.c:3055
+#: config.c:3103
 #, c-format
 msgid "invalid section name: %s"
 msgstr ""
 
-#: config.c:3222
+#: config.c:3270
 #, c-format
 msgid "missing value for '%s'"
 msgstr ""
@@ -1849,79 +2597,88 @@ msgstr "Не удалось прочитать из внешнего репоз
 msgid "server doesn't support '%s'"
 msgstr ""
 
-#: connect.c:103
+#: connect.c:118
 #, c-format
 msgid "server doesn't support feature '%s'"
 msgstr ""
 
-#: connect.c:114
+#: connect.c:129
 msgid "expected flush after capabilities"
 msgstr ""
 
-#: connect.c:233
+#: connect.c:263
 #, c-format
 msgid "ignoring capabilities after first line '%s'"
 msgstr ""
 
-#: connect.c:252
+#: connect.c:284
 msgid "protocol error: unexpected capabilities^{}"
 msgstr ""
 
-#: connect.c:273
+#: connect.c:306
 #, c-format
 msgid "protocol error: expected shallow sha-1, got '%s'"
 msgstr ""
 
-#: connect.c:275
+#: connect.c:308
 msgid "repository on the other end cannot be shallow"
 msgstr ""
 
-#: connect.c:313
+#: connect.c:347
 msgid "invalid packet"
 msgstr ""
 
-#: connect.c:333
+#: connect.c:367
 #, c-format
 msgid "protocol error: unexpected '%s'"
 msgstr ""
 
-#: connect.c:441
+#: connect.c:473
+#, c-format
+msgid "unknown object format '%s' specified by server"
+msgstr ""
+
+#: connect.c:500
 #, c-format
 msgid "invalid ls-refs response: %s"
 msgstr ""
 
-#: connect.c:445
+#: connect.c:504
 msgid "expected flush after ref listing"
 msgstr ""
 
-#: connect.c:544
+#: connect.c:507
+msgid "expected response end packet after ref listing"
+msgstr ""
+
+#: connect.c:640
 #, c-format
 msgid "protocol '%s' is not supported"
 msgstr ""
 
-#: connect.c:595
+#: connect.c:691
 msgid "unable to set SO_KEEPALIVE on socket"
 msgstr ""
 
-#: connect.c:635 connect.c:698
+#: connect.c:731 connect.c:794
 #, c-format
 msgid "Looking up %s ... "
 msgstr ""
 
-#: connect.c:639
+#: connect.c:735
 #, c-format
 msgid "unable to look up %s (port %s) (%s)"
 msgstr ""
 
 #. TRANSLATORS: this is the end of "Looking up %s ... "
-#: connect.c:643 connect.c:714
+#: connect.c:739 connect.c:810
 #, c-format
 msgid ""
 "done.\n"
 "Connecting to %s (port %s) ... "
 msgstr ""
 
-#: connect.c:665 connect.c:742
+#: connect.c:761 connect.c:838
 #, c-format
 msgid ""
 "unable to connect to %s:\n"
@@ -1929,116 +2686,116 @@ msgid ""
 msgstr ""
 
 #. TRANSLATORS: this is the end of "Connecting to %s (port %s) ... "
-#: connect.c:671 connect.c:748
+#: connect.c:767 connect.c:844
 msgid "done."
 msgstr ""
 
-#: connect.c:702
+#: connect.c:798
 #, c-format
 msgid "unable to look up %s (%s)"
 msgstr ""
 
-#: connect.c:708
+#: connect.c:804
 #, c-format
 msgid "unknown port %s"
 msgstr ""
 
-#: connect.c:845 connect.c:1171
+#: connect.c:941 connect.c:1271
 #, c-format
 msgid "strange hostname '%s' blocked"
 msgstr ""
 
-#: connect.c:847
+#: connect.c:943
 #, c-format
 msgid "strange port '%s' blocked"
 msgstr ""
 
-#: connect.c:857
+#: connect.c:953
 #, c-format
 msgid "cannot start proxy %s"
 msgstr ""
 
-#: connect.c:924
+#: connect.c:1024
 msgid "no path specified; see 'git help pull' for valid url syntax"
 msgstr ""
 
-#: connect.c:1119
+#: connect.c:1219
 msgid "ssh variant 'simple' does not support -4"
 msgstr ""
 
-#: connect.c:1131
+#: connect.c:1231
 msgid "ssh variant 'simple' does not support -6"
 msgstr ""
 
-#: connect.c:1148
+#: connect.c:1248
 msgid "ssh variant 'simple' does not support setting port"
 msgstr ""
 
-#: connect.c:1260
+#: connect.c:1360
 #, c-format
 msgid "strange pathname '%s' blocked"
 msgstr ""
 
-#: connect.c:1307
+#: connect.c:1408
 msgid "unable to fork"
 msgstr ""
 
-#: connected.c:85 builtin/fsck.c:221 builtin/prune.c:43
+#: connected.c:108 builtin/fsck.c:209 builtin/prune.c:45
 msgid "Checking connectivity"
 msgstr "Проверка соединения"
 
-#: connected.c:97
+#: connected.c:120
 msgid "Could not run 'git rev-list'"
 msgstr "Не удалось запустить «git rev-list»"
 
-#: connected.c:117
+#: connected.c:144
 msgid "failed write to rev-list"
 msgstr "сбой записи в rev-list"
 
-#: connected.c:124
+#: connected.c:149
 msgid "failed to close rev-list's stdin"
 msgstr "сбой закрытия стандартного ввода у rev-list"
 
-#: convert.c:193
+#: convert.c:194
 #, c-format
 msgid "illegal crlf_action %d"
 msgstr ""
 
-#: convert.c:206
+#: convert.c:207
 #, c-format
 msgid "CRLF would be replaced by LF in %s"
 msgstr ""
 
-#: convert.c:208
+#: convert.c:209
 #, 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:216
+#: convert.c:217
 #, c-format
 msgid "LF would be replaced by CRLF in %s"
 msgstr "LF будет заменен на CRLF в %s"
 
-#: convert.c:218
+#: convert.c:219
 #, 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
+#: convert.c:284
 #, c-format
 msgid "BOM is prohibited in '%s' if encoded as %s"
 msgstr "BOM запрещен в «%s», если кодируется как %s"
 
-#: convert.c:286
+#: convert.c:291
 #, c-format
 msgid ""
-"The file '%s' contains a byte order mark (BOM). Please use UTF-%s as "
+"The file '%s' contains a byte order mark (BOM). Please use UTF-%.*s as "
 "working-tree-encoding."
-msgstr "Файл «%s» содержит маркер последовательности байтов (BOM). Используйте UTF-%s как кодировку рабочего каталога."
+msgstr ""
 
 #: convert.c:304
 #, c-format
@@ -2052,75 +2809,103 @@ msgid ""
 "UTF-%sLE (depending on the byte order) as working-tree-encoding."
 msgstr "Файл «%s» не содержит маркер последовательности байтов (BOM).  Используйте UTF-%sBE или UTF-%sLE (в зависимости от порядка байтов) как кодировку рабочего каталога."
 
-#: convert.c:424 convert.c:495
+#: convert.c:419 convert.c:490
 #, c-format
 msgid "failed to encode '%s' from %s to %s"
 msgstr "не удалось перекодировать «%s» из %s в %s"
 
-#: convert.c:467
+#: convert.c:462
 #, c-format
 msgid "encoding '%s' from %s to %s and back is not the same"
 msgstr "перекодирование «%s» из %s в %s и обратно не одно и то же"
 
-#: convert.c:673
+#: convert.c:665
 #, c-format
 msgid "cannot fork to run external filter '%s'"
 msgstr ""
 
-#: convert.c:693
+#: convert.c:685
 #, c-format
 msgid "cannot feed the input to external filter '%s'"
 msgstr ""
 
-#: convert.c:700
+#: convert.c:692
 #, c-format
 msgid "external filter '%s' failed %d"
 msgstr ""
 
-#: convert.c:735 convert.c:738
+#: convert.c:727 convert.c:730
+#, c-format
+msgid "read from external filter '%s' failed"
+msgstr ""
+
+#: convert.c:733 convert.c:788
+#, c-format
+msgid "external filter '%s' failed"
+msgstr ""
+
+#: convert.c:837
+msgid "unexpected filter type"
+msgstr ""
+
+#: convert.c:848
+msgid "path name too long for external filter"
+msgstr ""
+
+#: convert.c:940
+#, c-format
+msgid ""
+"external filter '%s' is not available anymore although not all paths have "
+"been filtered"
+msgstr ""
+
+#: convert.c:1240
+msgid "true/false are no valid working-tree-encodings"
+msgstr "true/false не является допустимым значением для working-tree-encoding"
+
+#: convert.c:1428 convert.c:1462
+#, c-format
+msgid "%s: clean filter '%s' failed"
+msgstr ""
+
+#: convert.c:1508
 #, c-format
-msgid "read from external filter '%s' failed"
+msgid "%s: smudge filter %s failed"
 msgstr ""
 
-#: convert.c:741 convert.c:796
+#: credential.c:96
 #, c-format
-msgid "external filter '%s' failed"
+msgid "skipping credential lookup for key: credential.%s"
 msgstr ""
 
-#: convert.c:844
-msgid "unexpected filter type"
+#: credential.c:112
+msgid "refusing to work with credential missing host field"
 msgstr ""
 
-#: convert.c:855
-msgid "path name too long for external filter"
+#: credential.c:114
+msgid "refusing to work with credential missing protocol field"
 msgstr ""
 
-#: convert.c:929
+#: credential.c:394
 #, c-format
-msgid ""
-"external filter '%s' is not available anymore although not all paths have "
-"been filtered"
+msgid "url contains a newline in its %s component: %s"
 msgstr ""
 
-#: convert.c:1228
-msgid "true/false are no valid working-tree-encodings"
-msgstr "true/false не является допустимым значением для working-tree-encoding"
-
-#: convert.c:1398 convert.c:1432
+#: credential.c:438
 #, c-format
-msgid "%s: clean filter '%s' failed"
+msgid "url has no scheme: %s"
 msgstr ""
 
-#: convert.c:1476
+#: credential.c:511
 #, c-format
-msgid "%s: smudge filter %s failed"
+msgid "credential url cannot be parsed: %s"
 msgstr ""
 
-#: date.c:137
+#: date.c:138
 msgid "in the future"
 msgstr "в будущем"
 
-#: date.c:143
+#: date.c:144
 #, c-format
 msgid "%<PRIuMAX> second ago"
 msgid_plural "%<PRIuMAX> seconds ago"
@@ -2129,7 +2914,7 @@ msgstr[1] "%<PRIuMAX> секунды назад"
 msgstr[2] "%<PRIuMAX> секунд назад"
 msgstr[3] "%<PRIuMAX> секунды назад"
 
-#: date.c:150
+#: date.c:151
 #, c-format
 msgid "%<PRIuMAX> minute ago"
 msgid_plural "%<PRIuMAX> minutes ago"
@@ -2138,7 +2923,7 @@ msgstr[1] "%<PRIuMAX> минуты назад"
 msgstr[2] "%<PRIuMAX> минут назад"
 msgstr[3] "%<PRIuMAX> минуты назад"
 
-#: date.c:157
+#: date.c:158
 #, c-format
 msgid "%<PRIuMAX> hour ago"
 msgid_plural "%<PRIuMAX> hours ago"
@@ -2147,7 +2932,7 @@ msgstr[1] "%<PRIuMAX> часа назад"
 msgstr[2] "%<PRIuMAX> часов назад"
 msgstr[3] "%<PRIuMAX> часа назад"
 
-#: date.c:164
+#: date.c:165
 #, c-format
 msgid "%<PRIuMAX> day ago"
 msgid_plural "%<PRIuMAX> days ago"
@@ -2156,7 +2941,7 @@ msgstr[1] "%<PRIuMAX> дня назад"
 msgstr[2] "%<PRIuMAX> дней назад"
 msgstr[3] "%<PRIuMAX> дня назад"
 
-#: date.c:170
+#: date.c:171
 #, c-format
 msgid "%<PRIuMAX> week ago"
 msgid_plural "%<PRIuMAX> weeks ago"
@@ -2165,7 +2950,7 @@ msgstr[1] "%<PRIuMAX> недели назад"
 msgstr[2] "%<PRIuMAX> недель назад"
 msgstr[3] "%<PRIuMAX> недели назад"
 
-#: date.c:177
+#: date.c:178
 #, c-format
 msgid "%<PRIuMAX> month ago"
 msgid_plural "%<PRIuMAX> months ago"
@@ -2174,7 +2959,7 @@ msgstr[1] "%<PRIuMAX> месяца назад"
 msgstr[2] "%<PRIuMAX> месяцев назад"
 msgstr[3] "%<PRIuMAX> месяца назад"
 
-#: date.c:188
+#: date.c:189
 #, c-format
 msgid "%<PRIuMAX> year"
 msgid_plural "%<PRIuMAX> years"
@@ -2184,7 +2969,7 @@ msgstr[2] "%<PRIuMAX> лет"
 msgstr[3] "%<PRIuMAX> года"
 
 #. TRANSLATORS: "%s" is "<n> years"
-#: date.c:191
+#: date.c:192
 #, c-format
 msgid "%s, %<PRIuMAX> month ago"
 msgid_plural "%s, %<PRIuMAX> months ago"
@@ -2193,7 +2978,7 @@ msgstr[1] "%s, %<PRIuMAX> месяца назад"
 msgstr[2] "%s, %<PRIuMAX> месяцев назад"
 msgstr[3] "%s, %<PRIuMAX> месяца назад"
 
-#: date.c:196 date.c:201
+#: date.c:197 date.c:202
 #, c-format
 msgid "%<PRIuMAX> year ago"
 msgid_plural "%<PRIuMAX> years ago"
@@ -2221,19 +3006,30 @@ msgstr ""
 msgid "island regex from config has too many capture groups (max=%d)"
 msgstr ""
 
-#: delta-islands.c:466
+#: delta-islands.c:467
 #, c-format
 msgid "Marked %d islands, done.\n"
 msgstr ""
 
-#: diffcore-order.c:24
-#, c-format
-msgid "failed to read orderfile '%s'"
-msgstr "сбой чтения orderfile «%s»"
+#: diff-lib.c:534
+msgid "--merge-base does not work with ranges"
+msgstr ""
 
-#: diffcore-rename.c:544
-msgid "Performing inexact rename detection"
-msgstr "Выполняется неточное определение переименования"
+#: diff-lib.c:536
+msgid "--merge-base only works with commits"
+msgstr ""
+
+#: diff-lib.c:553
+msgid "unable to get HEAD"
+msgstr ""
+
+#: diff-lib.c:560
+msgid "no merge base found"
+msgstr ""
+
+#: diff-lib.c:562
+msgid "multiple merge bases found"
+msgstr ""
 
 #: diff-no-index.c:238
 msgid "git diff --no-index [<options>] <path> <path>"
@@ -2245,615 +3041,652 @@ msgid ""
 "tree"
 msgstr ""
 
-#: diff.c:155
+#: diff.c:156
 #, c-format
 msgid "  Failed to parse dirstat cut-off percentage '%s'\n"
 msgstr "  Сбой разбора величины среза (cut-off) у dirstat «%s»\n"
 
-#: diff.c:160
+#: diff.c:161
 #, c-format
 msgid "  Unknown dirstat parameter '%s'\n"
-msgstr "Неизвестный параметр dirstat: «%s»\n"
+msgstr " Неизвестный параметр dirstat: «%s»\n"
 
-#: diff.c:296
+#: diff.c:297
 msgid ""
 "color moved setting must be one of 'no', 'default', 'blocks', 'zebra', "
 "'dimmed-zebra', 'plain'"
 msgstr ""
 
-#: diff.c:324
+#: diff.c:325
 #, c-format
 msgid ""
 "unknown color-moved-ws mode '%s', possible values are 'ignore-space-change',"
 " 'ignore-space-at-eol', 'ignore-all-space', 'allow-indentation-change'"
 msgstr ""
 
-#: diff.c:332
+#: diff.c:333
 msgid ""
 "color-moved-ws: allow-indentation-change cannot be combined with other "
 "whitespace modes"
 msgstr ""
 
-#: diff.c:405
+#: diff.c:410
 #, c-format
 msgid "Unknown value for 'diff.submodule' config variable: '%s'"
 msgstr "Неизвестное значения для переменной «diff.submodule»: «%s»"
 
-#: diff.c:465
+#: diff.c:470
 #, c-format
 msgid ""
 "Found errors in 'diff.dirstat' config variable:\n"
 "%s"
 msgstr "Найдены ошибки в переменной «diff.dirstat»:\n%s"
 
-#: diff.c:4210
+#: diff.c:4276
 #, c-format
 msgid "external diff died, stopping at %s"
 msgstr "критическая ошибка при внешнем сравнении, останов на %s"
 
-#: diff.c:4555
+#: diff.c:4625
 msgid "--name-only, --name-status, --check and -s are mutually exclusive"
 msgstr "--name-only, --name-status, --check и -s нельзя использовать одновременно"
 
-#: diff.c:4558
+#: diff.c:4628
 msgid "-G, -S and --find-object are mutually exclusive"
 msgstr "-G, -S и --find-object нельзя использовать одновременно"
 
-#: diff.c:4636
+#: diff.c:4707
 msgid "--follow requires exactly one pathspec"
 msgstr "--follow требует ровно одного спецификатора пути"
 
-#: diff.c:4684
+#: diff.c:4755
 #, c-format
 msgid "invalid --stat value: %s"
 msgstr ""
 
-#: diff.c:4689 diff.c:4694 diff.c:4699 diff.c:4704 diff.c:5217
-#: parse-options.c:199 parse-options.c:203
+#: diff.c:4760 diff.c:4765 diff.c:4770 diff.c:4775 diff.c:5303
+#: parse-options.c:197 parse-options.c:201 builtin/commit-graph.c:180
 #, c-format
 msgid "%s expects a numerical value"
 msgstr ""
 
-#: diff.c:4721
+#: diff.c:4792
 #, c-format
 msgid ""
 "Failed to parse --dirstat/-X option parameter:\n"
 "%s"
 msgstr "Сбой разбора параметра опции --dirstat/-X :\n%s"
 
-#: diff.c:4806
+#: diff.c:4877
 #, c-format
 msgid "unknown change class '%c' in --diff-filter=%s"
 msgstr ""
 
-#: diff.c:4830
+#: diff.c:4901
 #, c-format
 msgid "unknown value after ws-error-highlight=%.*s"
 msgstr ""
 
-#: diff.c:4844
+#: diff.c:4915
 #, c-format
 msgid "unable to resolve '%s'"
 msgstr ""
 
-#: diff.c:4894 diff.c:4900
+#: diff.c:4965 diff.c:4971
 #, c-format
 msgid "%s expects <n>/<m> form"
 msgstr ""
 
-#: diff.c:4912
+#: diff.c:4983
 #, c-format
 msgid "%s expects a character, got '%s'"
 msgstr ""
 
-#: diff.c:4933
+#: diff.c:5004
 #, c-format
 msgid "bad --color-moved argument: %s"
 msgstr ""
 
-#: diff.c:4952
+#: diff.c:5023
 #, c-format
 msgid "invalid mode '%s' in --color-moved-ws"
 msgstr ""
 
-#: diff.c:4992
+#: diff.c:5063
 msgid "option diff-algorithm accepts \"myers\", \"minimal\", \"patience\" and \"histogram\""
 msgstr ""
 
-#: diff.c:5028 diff.c:5048
+#: diff.c:5099 diff.c:5119
 #, c-format
 msgid "invalid argument to %s"
 msgstr ""
 
-#: diff.c:5186
+#: diff.c:5223
+#, c-format
+msgid "invalid regex given to -I: '%s'"
+msgstr ""
+
+#: diff.c:5272
 #, c-format
 msgid "failed to parse --submodule option parameter: '%s'"
 msgstr ""
 
-#: diff.c:5242
+#: diff.c:5328
 #, c-format
 msgid "bad --word-diff argument: %s"
 msgstr ""
 
-#: diff.c:5265
+#: diff.c:5351
 msgid "Diff output format options"
 msgstr ""
 
-#: diff.c:5267 diff.c:5273
+#: diff.c:5353 diff.c:5359
 msgid "generate patch"
 msgstr ""
 
-#: diff.c:5270 builtin/log.c:167
+#: diff.c:5356 builtin/log.c:178
 msgid "suppress diff output"
 msgstr "не выводить список изменений"
 
-#: diff.c:5275 diff.c:5389 diff.c:5396
+#: diff.c:5361 diff.c:5475 diff.c:5482
 msgid "<n>"
 msgstr ""
 
-#: diff.c:5276 diff.c:5279
+#: diff.c:5362 diff.c:5365
 msgid "generate diffs with <n> lines context"
 msgstr ""
 
-#: diff.c:5281
+#: diff.c:5367
 msgid "generate the diff in raw format"
 msgstr ""
 
-#: diff.c:5284
+#: diff.c:5370
 msgid "synonym for '-p --raw'"
 msgstr ""
 
-#: diff.c:5288
+#: diff.c:5374
 msgid "synonym for '-p --stat'"
 msgstr ""
 
-#: diff.c:5292
+#: diff.c:5378
 msgid "machine friendly --stat"
 msgstr ""
 
-#: diff.c:5295
+#: diff.c:5381
 msgid "output only the last line of --stat"
 msgstr ""
 
-#: diff.c:5297 diff.c:5305
+#: diff.c:5383 diff.c:5391
 msgid "<param1,param2>..."
 msgstr ""
 
-#: diff.c:5298
+#: diff.c:5384
 msgid ""
 "output the distribution of relative amount of changes for each sub-directory"
 msgstr ""
 
-#: diff.c:5302
+#: diff.c:5388
 msgid "synonym for --dirstat=cumulative"
 msgstr ""
 
-#: diff.c:5306
+#: diff.c:5392
 msgid "synonym for --dirstat=files,param1,param2..."
 msgstr ""
 
-#: diff.c:5310
+#: diff.c:5396
 msgid "warn if changes introduce conflict markers or whitespace errors"
 msgstr ""
 
-#: diff.c:5313
+#: diff.c:5399
 msgid "condensed summary such as creations, renames and mode changes"
 msgstr "краткая сводка изменений, вроде созданий, переименований или изменений режима доступа"
 
-#: diff.c:5316
+#: diff.c:5402
 msgid "show only names of changed files"
 msgstr ""
 
-#: diff.c:5319
+#: diff.c:5405
 msgid "show only names and status of changed files"
 msgstr ""
 
-#: diff.c:5321
+#: diff.c:5407
 msgid "<width>[,<name-width>[,<count>]]"
 msgstr ""
 
-#: diff.c:5322
+#: diff.c:5408
 msgid "generate diffstat"
 msgstr ""
 
-#: diff.c:5324 diff.c:5327 diff.c:5330
+#: diff.c:5410 diff.c:5413 diff.c:5416
 msgid "<width>"
 msgstr ""
 
-#: diff.c:5325
+#: diff.c:5411
 msgid "generate diffstat with a given width"
 msgstr ""
 
-#: diff.c:5328
+#: diff.c:5414
 msgid "generate diffstat with a given name width"
 msgstr ""
 
-#: diff.c:5331
+#: diff.c:5417
 msgid "generate diffstat with a given graph width"
 msgstr ""
 
-#: diff.c:5333
+#: diff.c:5419
 msgid "<count>"
 msgstr ""
 
-#: diff.c:5334
+#: diff.c:5420
 msgid "generate diffstat with limited lines"
 msgstr ""
 
-#: diff.c:5337
+#: diff.c:5423
 msgid "generate compact summary in diffstat"
-msgstr "генеÑ\80аÑ\86иÑ\8f ÐºÐ¾Ð¼Ð¿Ð°ÐºÑ\82ной Ñ\81водки Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ Ð² diffstat"
+msgstr "генерация компактной сводки в diffstat"
 
-#: diff.c:5340
+#: diff.c:5426
 msgid "output a binary diff that can be applied"
 msgstr ""
 
-#: diff.c:5343
+#: diff.c:5429
 msgid "show full pre- and post-image object names on the \"index\" lines"
 msgstr ""
 
-#: diff.c:5345
+#: diff.c:5431
 msgid "show colored diff"
 msgstr ""
 
-#: diff.c:5346
+#: diff.c:5432
 msgid "<kind>"
 msgstr ""
 
-#: diff.c:5347
+#: diff.c:5433
 msgid ""
 "highlight whitespace errors in the 'context', 'old' or 'new' lines in the "
 "diff"
 msgstr ""
 
-#: diff.c:5350
+#: diff.c:5436
 msgid ""
 "do not munge pathnames and use NULs as output field terminators in --raw or "
 "--numstat"
 msgstr ""
 
-#: diff.c:5353 diff.c:5356 diff.c:5359 diff.c:5465
+#: diff.c:5439 diff.c:5442 diff.c:5445 diff.c:5554
 msgid "<prefix>"
 msgstr ""
 
-#: diff.c:5354
+#: diff.c:5440
 msgid "show the given source prefix instead of \"a/\""
 msgstr ""
 
-#: diff.c:5357
+#: diff.c:5443
 msgid "show the given destination prefix instead of \"b/\""
 msgstr ""
 
-#: diff.c:5360
+#: diff.c:5446
 msgid "prepend an additional prefix to every line of output"
 msgstr ""
 
-#: diff.c:5363
+#: diff.c:5449
 msgid "do not show any source or destination prefix"
 msgstr ""
 
-#: diff.c:5366
+#: diff.c:5452
 msgid "show context between diff hunks up to the specified number of lines"
 msgstr ""
 
-#: diff.c:5370 diff.c:5375 diff.c:5380
+#: diff.c:5456 diff.c:5461 diff.c:5466
 msgid "<char>"
 msgstr ""
 
-#: diff.c:5371
+#: diff.c:5457
 msgid "specify the character to indicate a new line instead of '+'"
 msgstr ""
 
-#: diff.c:5376
+#: diff.c:5462
 msgid "specify the character to indicate an old line instead of '-'"
 msgstr ""
 
-#: diff.c:5381
+#: diff.c:5467
 msgid "specify the character to indicate a context instead of ' '"
 msgstr ""
 
-#: diff.c:5384
+#: diff.c:5470
 msgid "Diff rename options"
 msgstr ""
 
-#: diff.c:5385
+#: diff.c:5471
 msgid "<n>[/<m>]"
 msgstr ""
 
-#: diff.c:5386
+#: diff.c:5472
 msgid "break complete rewrite changes into pairs of delete and create"
 msgstr ""
 
-#: diff.c:5390
+#: diff.c:5476
 msgid "detect renames"
 msgstr ""
 
-#: diff.c:5394
+#: diff.c:5480
 msgid "omit the preimage for deletes"
 msgstr ""
 
-#: diff.c:5397
+#: diff.c:5483
 msgid "detect copies"
 msgstr ""
 
-#: diff.c:5401
+#: diff.c:5487
 msgid "use unmodified files as source to find copies"
 msgstr ""
 
-#: diff.c:5403
+#: diff.c:5489
 msgid "disable rename detection"
 msgstr ""
 
-#: diff.c:5406
+#: diff.c:5492
 msgid "use empty blobs as rename source"
 msgstr ""
 
-#: diff.c:5408
+#: diff.c:5494
 msgid "continue listing the history of a file beyond renames"
 msgstr ""
 
-#: diff.c:5411
+#: diff.c:5497
 msgid ""
 "prevent rename/copy detection if the number of rename/copy targets exceeds "
 "given limit"
 msgstr ""
 
-#: diff.c:5413
+#: diff.c:5499
 msgid "Diff algorithm options"
 msgstr ""
 
-#: diff.c:5415
+#: diff.c:5501
 msgid "produce the smallest possible diff"
 msgstr ""
 
-#: diff.c:5418
+#: diff.c:5504
 msgid "ignore whitespace when comparing lines"
 msgstr ""
 
-#: diff.c:5421
+#: diff.c:5507
 msgid "ignore changes in amount of whitespace"
 msgstr ""
 
-#: diff.c:5424
+#: diff.c:5510
 msgid "ignore changes in whitespace at EOL"
 msgstr ""
 
-#: diff.c:5427
+#: diff.c:5513
 msgid "ignore carrier-return at the end of line"
 msgstr ""
 
-#: diff.c:5430
+#: diff.c:5516
 msgid "ignore changes whose lines are all blank"
 msgstr ""
 
-#: diff.c:5433
+#: diff.c:5518 diff.c:5540 diff.c:5543 diff.c:5588
+msgid "<regex>"
+msgstr ""
+
+#: diff.c:5519
+msgid "ignore changes whose all lines match <regex>"
+msgstr ""
+
+#: diff.c:5522
 msgid "heuristic to shift diff hunk boundaries for easy reading"
 msgstr ""
 
-#: diff.c:5436
+#: diff.c:5525
 msgid "generate diff using the \"patience diff\" algorithm"
 msgstr ""
 
-#: diff.c:5440
+#: diff.c:5529
 msgid "generate diff using the \"histogram diff\" algorithm"
 msgstr ""
 
-#: diff.c:5442
+#: diff.c:5531
 msgid "<algorithm>"
 msgstr ""
 
-#: diff.c:5443
+#: diff.c:5532
 msgid "choose a diff algorithm"
 msgstr ""
 
-#: diff.c:5445
+#: diff.c:5534
 msgid "<text>"
 msgstr ""
 
-#: diff.c:5446
+#: diff.c:5535
 msgid "generate diff using the \"anchored diff\" algorithm"
 msgstr ""
 
-#: diff.c:5448 diff.c:5457 diff.c:5460
+#: diff.c:5537 diff.c:5546 diff.c:5549
 msgid "<mode>"
 msgstr ""
 
-#: diff.c:5449
+#: diff.c:5538
 msgid "show word diff, using <mode> to delimit changed words"
 msgstr ""
 
-#: diff.c:5451 diff.c:5454 diff.c:5499
-msgid "<regex>"
-msgstr ""
-
-#: diff.c:5452
+#: diff.c:5541
 msgid "use <regex> to decide what a word is"
 msgstr ""
 
-#: diff.c:5455
+#: diff.c:5544
 msgid "equivalent to --word-diff=color --word-diff-regex=<regex>"
 msgstr ""
 
-#: diff.c:5458
+#: diff.c:5547
 msgid "moved lines of code are colored differently"
 msgstr ""
 
-#: diff.c:5461
+#: diff.c:5550
 msgid "how white spaces are ignored in --color-moved"
 msgstr ""
 
-#: diff.c:5464
+#: diff.c:5553
 msgid "Other diff options"
 msgstr ""
 
-#: diff.c:5466
+#: diff.c:5555
 msgid "when run from subdir, exclude changes outside and show relative paths"
 msgstr ""
 
-#: diff.c:5470
+#: diff.c:5559
 msgid "treat all files as text"
 msgstr ""
 
-#: diff.c:5472
+#: diff.c:5561
 msgid "swap two inputs, reverse the diff"
 msgstr ""
 
-#: diff.c:5474
+#: diff.c:5563
 msgid "exit with 1 if there were differences, 0 otherwise"
 msgstr ""
 
-#: diff.c:5476
+#: diff.c:5565
 msgid "disable all output of the program"
 msgstr ""
 
-#: diff.c:5478
+#: diff.c:5567
 msgid "allow an external diff helper to be executed"
 msgstr ""
 
-#: diff.c:5480
+#: diff.c:5569
 msgid "run external text conversion filters when comparing binary files"
 msgstr ""
 
-#: diff.c:5482
+#: diff.c:5571
 msgid "<when>"
 msgstr ""
 
-#: diff.c:5483
+#: diff.c:5572
 msgid "ignore changes to submodules in the diff generation"
 msgstr ""
 
-#: diff.c:5486
+#: diff.c:5575
 msgid "<format>"
 msgstr ""
 
-#: diff.c:5487
+#: diff.c:5576
 msgid "specify how differences in submodules are shown"
 msgstr ""
 
-#: diff.c:5491
+#: diff.c:5580
 msgid "hide 'git add -N' entries from the index"
 msgstr ""
 
-#: diff.c:5494
+#: diff.c:5583
 msgid "treat 'git add -N' entries as real in the index"
 msgstr ""
 
-#: diff.c:5496
+#: diff.c:5585
 msgid "<string>"
 msgstr ""
 
-#: diff.c:5497
+#: diff.c:5586
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "string"
 msgstr ""
 
-#: diff.c:5500
+#: diff.c:5589
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "regex"
 msgstr ""
 
-#: diff.c:5503
+#: diff.c:5592
 msgid "show all changes in the changeset with -S or -G"
 msgstr ""
 
-#: diff.c:5506
+#: diff.c:5595
 msgid "treat <string> in -S as extended POSIX regular expression"
 msgstr ""
 
-#: diff.c:5509
+#: diff.c:5598
 msgid "control the order in which files appear in the output"
 msgstr ""
 
-#: diff.c:5510
+#: diff.c:5599
 msgid "<object-id>"
 msgstr ""
 
-#: diff.c:5511
+#: diff.c:5600
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "object"
 msgstr ""
 
-#: diff.c:5513
+#: diff.c:5602
 msgid "[(A|C|D|M|R|T|U|X|B)...[*]]"
 msgstr ""
 
-#: diff.c:5514
+#: diff.c:5603
 msgid "select files by diff type"
 msgstr ""
 
-#: diff.c:5516
+#: diff.c:5605
 msgid "<file>"
 msgstr ""
 
-#: diff.c:5517
+#: diff.c:5606
 msgid "Output to a specific file"
 msgstr ""
 
-#: diff.c:6150
+#: diff.c:6263
 msgid "inexact rename detection was skipped due to too many files."
 msgstr "неточное определение переименования было пропущено из-за слишком большого количества файлов."
 
-#: diff.c:6153
+#: diff.c:6266
 msgid "only found copies from modified paths due to too many files."
 msgstr "найдены только копии из измененных путей из-за слишком большого количества файлов."
 
-#: diff.c:6156
+#: diff.c:6269
 #, c-format
 msgid ""
 "you may want to set your %s variable to at least %d and retry the command."
 msgstr "возможно вы захотите установить переменную %s в как минимум значение %d и повторить вызов команды."
 
-#: dir.c:537
+#: diffcore-order.c:24
+#, c-format
+msgid "failed to read orderfile '%s'"
+msgstr "сбой чтения orderfile «%s»"
+
+#: diffcore-rename.c:592
+msgid "Performing inexact rename detection"
+msgstr "Выполняется неточное определение переименования"
+
+#: dir.c:578
 #, c-format
 msgid "pathspec '%s' did not match any file(s) known to git"
 msgstr ""
 
-#: dir.c:926
+#: dir.c:718 dir.c:747 dir.c:760
+#, c-format
+msgid "unrecognized pattern: '%s'"
+msgstr ""
+
+#: dir.c:777 dir.c:791
+#, c-format
+msgid "unrecognized negative pattern: '%s'"
+msgstr ""
+
+#: dir.c:809
+#, c-format
+msgid "your sparse-checkout file may have issues: pattern '%s' is repeated"
+msgstr ""
+
+#: dir.c:819
+msgid "disabling cone pattern matching"
+msgstr ""
+
+#: dir.c:1198
 #, c-format
 msgid "cannot use %s as an exclude file"
 msgstr ""
 
-#: dir.c:1843
+#: dir.c:2305
 #, c-format
 msgid "could not open directory '%s'"
 msgstr "не удалось открыть каталог «%s»"
 
-#: dir.c:2085
+#: dir.c:2605
 msgid "failed to get kernel name and information"
 msgstr "не удалось получить имя ядра и информацию"
 
-#: dir.c:2209
+#: dir.c:2729
 msgid "untracked cache is disabled on this system or location"
 msgstr ""
 
-#: dir.c:3013
+#: dir.c:3520
 #, c-format
 msgid "index file corrupt in repo %s"
 msgstr ""
 
-#: dir.c:3058 dir.c:3063
+#: dir.c:3565 dir.c:3570
 #, c-format
 msgid "could not create directories for %s"
 msgstr "не удалось создать каталоги для %s"
 
-#: dir.c:3092
+#: dir.c:3599
 #, c-format
 msgid "could not migrate git directory from '%s' to '%s'"
 msgstr "не удалось переместить каталог git с «%s» в «%s»"
 
-#: editor.c:73
+#: editor.c:74
 #, c-format
 msgid "hint: Waiting for your editor to close the file...%c"
 msgstr "подсказка: Ожидание, пока вы закроете редактор с файлом…%c"
 
-#: entry.c:178
+#: entry.c:177
 msgid "Filtering content"
 msgstr "Фильтруется содержимое"
 
-#: entry.c:476
+#: entry.c:478
 #, c-format
 msgid "could not stat file '%s'"
 msgstr "не удалось выполнить stat для файла «%s»"
@@ -2863,7 +3696,7 @@ msgstr "не удалось выполнить stat для файла «%s»"
 msgid "bad git namespace path \"%s\""
 msgstr ""
 
-#: environment.c:332
+#: environment.c:337
 #, c-format
 msgid "could not set GIT_DIR to '%s'"
 msgstr ""
@@ -2873,289 +3706,285 @@ msgstr ""
 msgid "too many args to run %s"
 msgstr ""
 
-#: fetch-object.c:17
-msgid "Remote with no URL"
-msgstr "Внешний репозиторий без URL"
-
-#: fetch-pack.c:151
+#: fetch-pack.c:177
 msgid "git fetch-pack: expected shallow list"
 msgstr "git fetch-pack: ожидается передача списка для получение части"
 
-#: fetch-pack.c:154
+#: fetch-pack.c:180
 msgid "git fetch-pack: expected a flush packet after shallow list"
 msgstr ""
 
-#: fetch-pack.c:165
+#: fetch-pack.c:191
 msgid "git fetch-pack: expected ACK/NAK, got a flush packet"
 msgstr "git fetch-pack: ожидается ACK/NAK, а получен пустой пакет"
 
-#: fetch-pack.c:185
+#: fetch-pack.c:211
 #, c-format
 msgid "git fetch-pack: expected ACK/NAK, got '%s'"
 msgstr "git fetch-pack: ожидается ACK/NAK, а получено «%s»"
 
-#: fetch-pack.c:196
+#: fetch-pack.c:222
 msgid "unable to write to remote"
 msgstr ""
 
-#: fetch-pack.c:258
+#: fetch-pack.c:283
 msgid "--stateless-rpc requires multi_ack_detailed"
 msgstr "--stateless-rpc требует multi_ack_detailed"
 
-#: fetch-pack.c:360 fetch-pack.c:1271
+#: fetch-pack.c:378 fetch-pack.c:1406
 #, c-format
 msgid "invalid shallow line: %s"
 msgstr "неправильная строка частичного получения: %s"
 
-#: fetch-pack.c:366 fetch-pack.c:1277
+#: fetch-pack.c:384 fetch-pack.c:1412
 #, c-format
 msgid "invalid unshallow line: %s"
 msgstr "неправильная строка полного получения: %s"
 
-#: fetch-pack.c:368 fetch-pack.c:1279
+#: fetch-pack.c:386 fetch-pack.c:1414
 #, c-format
 msgid "object not found: %s"
 msgstr "объект не найден: %s"
 
-#: fetch-pack.c:371 fetch-pack.c:1282
+#: fetch-pack.c:389 fetch-pack.c:1417
 #, c-format
 msgid "error in object: %s"
 msgstr "ошибка в объекте: %s"
 
-#: fetch-pack.c:373 fetch-pack.c:1284
+#: fetch-pack.c:391 fetch-pack.c:1419
 #, c-format
 msgid "no shallow found: %s"
 msgstr "частичный клон не найден: %s"
 
-#: fetch-pack.c:376 fetch-pack.c:1288
+#: fetch-pack.c:394 fetch-pack.c:1423
 #, c-format
 msgid "expected shallow/unshallow, got %s"
 msgstr "ожидалось shallow/unshallow, а получено %s"
 
-#: fetch-pack.c:417
+#: fetch-pack.c:434
 #, c-format
 msgid "got %s %d %s"
 msgstr "получено %s %d %s"
 
-#: fetch-pack.c:434
+#: fetch-pack.c:451
 #, c-format
 msgid "invalid commit %s"
 msgstr "недопустимый коммит %s"
 
-#: fetch-pack.c:465
+#: fetch-pack.c:482
 msgid "giving up"
 msgstr "останавливаю дальнейшие попытки"
 
-#: fetch-pack.c:477 progress.c:284
+#: fetch-pack.c:495 progress.c:339
 msgid "done"
 msgstr "готово"
 
-#: fetch-pack.c:489
+#: fetch-pack.c:507
 #, c-format
 msgid "got %s (%d) %s"
 msgstr "получено %s (%d) %s"
 
-#: fetch-pack.c:535
+#: fetch-pack.c:543
 #, c-format
 msgid "Marking %s as complete"
 msgstr "Помечаю %s как завершенный"
 
-#: fetch-pack.c:744
+#: fetch-pack.c:758
 #, c-format
 msgid "already have %s (%s)"
 msgstr "уже есть %s (%s)"
 
-#: fetch-pack.c:783
+#: fetch-pack.c:827
 msgid "fetch-pack: unable to fork off sideband demultiplexer"
 msgstr "fetch-pack: не удалось запустить программу разбора данных"
 
-#: fetch-pack.c:791
+#: fetch-pack.c:835
 msgid "protocol error: bad pack header"
 msgstr "ошибка протокола: неправильный заголовок потока"
 
-#: fetch-pack.c:859
+#: fetch-pack.c:919
 #, c-format
 msgid "fetch-pack: unable to fork off %s"
 msgstr "fetch-pack: не удалось запустить программу %s"
 
-#: fetch-pack.c:875
+#: fetch-pack.c:937
 #, c-format
 msgid "%s failed"
 msgstr "%s завершен с ошибкой"
 
-#: fetch-pack.c:877
+#: fetch-pack.c:939
 msgid "error in sideband demultiplexer"
 msgstr "произошла  ошибка в  программе разбора данных"
 
-#: fetch-pack.c:906
-msgid "Server does not support shallow clients"
-msgstr "Сервер не поддерживает клиентов с частичным клонированием"
-
-#: fetch-pack.c:910
-msgid "Server supports multi_ack_detailed"
-msgstr "Сервер поддерживает multi_ack_detailed"
-
-#: fetch-pack.c:913
-msgid "Server supports no-done"
-msgstr "Сервер поддерживает no-done"
-
-#: fetch-pack.c:919
-msgid "Server supports multi_ack"
-msgstr "Сервер поддерживает multi_ack"
-
-#: fetch-pack.c:923
-msgid "Server supports side-band-64k"
-msgstr "Сервер поддерживает side-band-64k"
-
-#: fetch-pack.c:927
-msgid "Server supports side-band"
-msgstr "Сервер поддерживает side-band"
-
-#: fetch-pack.c:931
-msgid "Server supports allow-tip-sha1-in-want"
-msgstr "Сервер поддерживает allow-tip-sha1-in-want"
-
-#: fetch-pack.c:935
-msgid "Server supports allow-reachable-sha1-in-want"
-msgstr "Сервер поддерживает allow-reachable-sha1-in-want"
-
-#: fetch-pack.c:945
-msgid "Server supports ofs-delta"
-msgstr "Сервер поддерживает ofs-delta"
-
-#: fetch-pack.c:951 fetch-pack.c:1144
-msgid "Server supports filter"
-msgstr "Сервер поддерживает фильтрацию"
-
-#: fetch-pack.c:959
+#: fetch-pack.c:982
 #, c-format
 msgid "Server version is %.*s"
 msgstr "Версия сервера %.*s"
 
-#: fetch-pack.c:965
+#: fetch-pack.c:990 fetch-pack.c:996 fetch-pack.c:999 fetch-pack.c:1005
+#: fetch-pack.c:1009 fetch-pack.c:1013 fetch-pack.c:1017 fetch-pack.c:1021
+#: fetch-pack.c:1025 fetch-pack.c:1029 fetch-pack.c:1033 fetch-pack.c:1037
+#: fetch-pack.c:1043 fetch-pack.c:1049 fetch-pack.c:1054 fetch-pack.c:1059
+#, c-format
+msgid "Server supports %s"
+msgstr ""
+
+#: fetch-pack.c:992
+msgid "Server does not support shallow clients"
+msgstr "Сервер не поддерживает клиентов с частичным клонированием"
+
+#: fetch-pack.c:1052
 msgid "Server does not support --shallow-since"
 msgstr "Сервер не поддерживает --shallow-since"
 
-#: fetch-pack.c:969
+#: fetch-pack.c:1057
 msgid "Server does not support --shallow-exclude"
 msgstr "Сервер не поддерживает --shallow-exclude"
 
-#: fetch-pack.c:971
+#: fetch-pack.c:1061
 msgid "Server does not support --deepen"
 msgstr "Сервер не поддерживает --deepen"
 
-#: fetch-pack.c:988
+#: fetch-pack.c:1063
+msgid "Server does not support this repository's object format"
+msgstr ""
+
+#: fetch-pack.c:1076
 msgid "no common commits"
 msgstr "не общих коммитов"
 
-#: fetch-pack.c:1000 fetch-pack.c:1449
+#: fetch-pack.c:1088 fetch-pack.c:1628
 msgid "git fetch-pack: fetch failed."
 msgstr "git fetch-pack: ошибка при получении данных."
 
-#: fetch-pack.c:1138
+#: fetch-pack.c:1214
+#, c-format
+msgid "mismatched algorithms: client %s; server %s"
+msgstr ""
+
+#: fetch-pack.c:1218
+#, c-format
+msgid "the server does not support algorithm '%s'"
+msgstr ""
+
+#: fetch-pack.c:1238
 msgid "Server does not support shallow requests"
 msgstr "Сервер не поддерживает частичные запросы"
 
-#: fetch-pack.c:1171
+#: fetch-pack.c:1245
+msgid "Server supports filter"
+msgstr "Сервер поддерживает фильтрацию"
+
+#: fetch-pack.c:1284
 msgid "unable to write request to remote"
 msgstr ""
 
-#: fetch-pack.c:1189
+#: fetch-pack.c:1302
 #, c-format
 msgid "error reading section header '%s'"
 msgstr ""
 
-#: fetch-pack.c:1195
+#: fetch-pack.c:1308
 #, c-format
 msgid "expected '%s', received '%s'"
 msgstr ""
 
-#: fetch-pack.c:1234
+#: fetch-pack.c:1369
 #, c-format
 msgid "unexpected acknowledgment line: '%s'"
 msgstr ""
 
-#: fetch-pack.c:1239
+#: fetch-pack.c:1374
 #, c-format
 msgid "error processing acks: %d"
 msgstr ""
 
-#: fetch-pack.c:1249
+#: fetch-pack.c:1384
 msgid "expected packfile to be sent after 'ready'"
 msgstr ""
 
-#: fetch-pack.c:1251
+#: fetch-pack.c:1386
 msgid "expected no other sections to be sent after no 'ready'"
 msgstr ""
 
-#: fetch-pack.c:1293
+#: fetch-pack.c:1428
 #, c-format
 msgid "error processing shallow info: %d"
 msgstr ""
 
-#: fetch-pack.c:1340
+#: fetch-pack.c:1475
 #, c-format
 msgid "expected wanted-ref, got '%s'"
 msgstr ""
 
-#: fetch-pack.c:1345
+#: fetch-pack.c:1480
 #, c-format
 msgid "unexpected wanted-ref: '%s'"
 msgstr ""
 
-#: fetch-pack.c:1350
+#: fetch-pack.c:1485
 #, c-format
 msgid "error processing wanted refs: %d"
 msgstr ""
 
-#: fetch-pack.c:1676
+#: fetch-pack.c:1515
+msgid "git fetch-pack: expected response end packet"
+msgstr ""
+
+#: fetch-pack.c:1897
 msgid "no matching remote head"
 msgstr "нет соотвествующего внешнего указателя на ветку"
 
-#: fetch-pack.c:1699 builtin/clone.c:673
+#: fetch-pack.c:1920 builtin/clone.c:693
 msgid "remote did not send all necessary objects"
 msgstr "внешний репозиторий прислал не все необходимые объекты"
 
-#: fetch-pack.c:1726
+#: fetch-pack.c:1947
 #, c-format
 msgid "no such remote ref %s"
 msgstr "нет такой внешней ссылки %s"
 
-#: fetch-pack.c:1729
+#: fetch-pack.c:1950
 #, c-format
 msgid "Server does not allow request for unadvertised object %s"
 msgstr "Сервер не поддерживает запрос необъявленного объекта %s"
 
-#: gpg-interface.c:318
-msgid "gpg failed to sign the data"
-msgstr "gpg не удалось подписать данные"
-
-#: gpg-interface.c:344
+#: gpg-interface.c:272
 msgid "could not create temporary file"
 msgstr "не удалось создать временный файл"
 
-#: gpg-interface.c:347
+#: gpg-interface.c:275
 #, c-format
 msgid "failed writing detached signature to '%s'"
 msgstr "сбой записи отсоединенной подписи в «%s»"
 
-#: graph.c:97
+#: gpg-interface.c:457
+msgid "gpg failed to sign the data"
+msgstr "gpg не удалось подписать данные"
+
+#: graph.c:98
 #, c-format
 msgid "ignore invalid color '%.*s' in log.graphColors"
 msgstr "игнорирую недопустимый цвет «%.*s» в log.graphColors"
 
-#: grep.c:2113
+#: grep.c:640
+msgid ""
+"given pattern contains NULL byte (via -f <file>). This is only supported "
+"with -P under PCRE v2"
+msgstr ""
+
+#: grep.c:2100
 #, c-format
 msgid "'%s': unable to read %s"
 msgstr "«%s»: не удалось прочесть %s"
 
-#: grep.c:2130 setup.c:164 builtin/clone.c:411 builtin/diff.c:82
+#: grep.c:2117 setup.c:176 builtin/clone.c:412 builtin/diff.c:89
 #: builtin/rm.c:135
 #, c-format
 msgid "failed to stat '%s'"
 msgstr "не удалось выполнить stat «%s»"
 
-#: grep.c:2141
+#: grep.c:2128
 #, c-format
 msgid "'%s': short read"
 msgstr "«%s»: слишком мало данных прочитано"
@@ -3205,79 +4034,79 @@ msgid "Low-level Commands / Interrogators"
 msgstr "Низкоуровневые команды / Запросчики"
 
 #: help.c:37
-msgid "Low-level Commands / Synching Repositories"
-msgstr "Низкоуровневые команды / Синхронизация репозиториев"
+msgid "Low-level Commands / Syncing Repositories"
+msgstr ""
 
 #: help.c:38
 msgid "Low-level Commands / Internal Helpers"
 msgstr "Низкоуровневые команды / Внутренние вспомогательные"
 
-#: help.c:298
+#: help.c:300
 #, c-format
 msgid "available git commands in '%s'"
 msgstr "доступные команды git в «%s»"
 
-#: help.c:305
+#: help.c:307
 msgid "git commands available from elsewhere on your $PATH"
 msgstr "команды git, доступные в других местах вашего $PATH"
 
-#: help.c:314
+#: help.c:316
 msgid "These are common Git commands used in various situations:"
 msgstr "Стандартные команды Git используемые в различных ситуациях:"
 
-#: help.c:363 git.c:97
+#: help.c:365 git.c:99
 #, c-format
 msgid "unsupported command listing type '%s'"
 msgstr "неподдерживаемый тип списка команд «%s»"
 
-#: help.c:403
-msgid "The common Git guides are:"
-msgstr "Основные руководства Git:"
+#: help.c:405
+msgid "The Git concept guides are:"
+msgstr ""
 
-#: help.c:512
+#: help.c:429
 msgid "See 'git help <command>' to read about a specific subcommand"
 msgstr "Запустите «git help <команда>», чтобы прочесть о конкретной подкоманде"
 
-#: help.c:517
+#: help.c:434
 msgid "External commands"
 msgstr ""
 
-#: help.c:532
+#: help.c:449
 msgid "Command aliases"
 msgstr ""
 
-#: help.c:596
+#: help.c:527
 #, 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 "«%s» похоже на команду git, но нам не удалось ее запустить. Возможно, git-%s  не работает?"
 
-#: help.c:655
+#: help.c:543 help.c:631
+#, c-format
+msgid "git: '%s' is not a git command. See 'git --help'."
+msgstr "git: «%s» не является командой git. Смотрите «git --help»."
+
+#: help.c:591
 msgid "Uh oh. Your system reports no Git commands at all."
 msgstr "Ой-ёй! Ваша система не сообщает ни о каких командах Git вообще."
 
-#: help.c:677
+#: help.c:613
 #, c-format
 msgid "WARNING: You called a Git command named '%s', which does not exist."
 msgstr "Внимание: Вы запустили не существующую команду Git «%s»."
 
-#: help.c:682
+#: help.c:618
 #, c-format
 msgid "Continuing under the assumption that you meant '%s'."
 msgstr "Продолжаю, предполагая, что вы имели в виду «%s»."
 
-#: help.c:687
+#: help.c:623
 #, c-format
 msgid "Continuing in %0.1f seconds, assuming that you meant '%s'."
 msgstr "Продолжу через %0.1f секунд, предполагая, что вы имели в виду «%s»."
 
-#: help.c:695
-#, c-format
-msgid "git: '%s' is not a git command. See 'git --help'."
-msgstr "git: «%s» не является командой git. Смотрите «git --help»."
-
-#: help.c:699
+#: help.c:635
 msgid ""
 "\n"
 "The most similar command is"
@@ -3289,16 +4118,16 @@ msgstr[1] "\nСамые похожие команды:"
 msgstr[2] "\nСамые похожие команды:"
 msgstr[3] "\nСамые похожие команды:"
 
-#: help.c:714
+#: help.c:675
 msgid "git version [<options>]"
 msgstr "git version [<options>]"
 
-#: help.c:782
+#: help.c:730
 #, c-format
 msgid "%s: %s - %s"
 msgstr "%s: %s — %s"
 
-#: help.c:786
+#: help.c:734
 msgid ""
 "\n"
 "Did you mean this?"
@@ -3310,7 +4139,15 @@ msgstr[1] "\nВозможно, вы имели в виду что-то из эт
 msgstr[2] "\nВозможно, вы имели в виду что-то из этого?"
 msgstr[3] "\nВозможно, вы имели в виду что-то из этого?"
 
-#: ident.c:349
+#: ident.c:353
+msgid "Author identity unknown\n"
+msgstr ""
+
+#: ident.c:356
+msgid "Committer identity unknown\n"
+msgstr ""
+
+#: ident.c:362
 msgid ""
 "\n"
 "*** Please tell me who you are.\n"
@@ -3325,71 +4162,95 @@ msgid ""
 "\n"
 msgstr "\n*** Пожалуйста, скажите мне кто вы есть.\n\nЗапустите\n\n  git config --global user.email \"you@example.com\"\n  git config --global user.name \"Ваше Имя\"\n\nдля указания идентификационных данных аккаунта по умолчанию.\nПропустите параметр --global для указания данных только для этого репозитория.\n\n"
 
-#: ident.c:379
+#: ident.c:397
 msgid "no email was given and auto-detection is disabled"
 msgstr "адрес электронной почты не указан и автоопределение отключено"
 
-#: ident.c:384
+#: ident.c:402
 #, c-format
 msgid "unable to auto-detect email address (got '%s')"
 msgstr "не удалось выполнить автоопределение адреса электронной почты (получено «%s»)"
 
-#: ident.c:401
+#: ident.c:419
 msgid "no name was given and auto-detection is disabled"
 msgstr "имя не указано и автоопределение отключено"
 
-#: ident.c:407
+#: ident.c:425
 #, c-format
 msgid "unable to auto-detect name (got '%s')"
 msgstr "не удалось выполнить автоопределение имени (получено «%s»)"
 
-#: ident.c:415
+#: ident.c:433
 #, c-format
 msgid "empty ident name (for <%s>) not allowed"
 msgstr "пустое имя идентификатора (для <%s>) не разрешено"
 
-#: ident.c:421
+#: ident.c:439
 #, c-format
 msgid "name consists only of disallowed characters: %s"
 msgstr "имя состоит только из неразрешенных симоволов: %s"
 
-#: ident.c:436 builtin/commit.c:608
+#: ident.c:454 builtin/commit.c:634
 #, c-format
 msgid "invalid date format: %s"
 msgstr "неправильный формат даты: %s"
 
-#: list-objects.c:129
-#, c-format
-msgid "entry '%s' in tree %s has tree mode, but is not a tree"
+#: list-objects-filter-options.c:81
+msgid "expected 'tree:<depth>'"
 msgstr ""
 
-#: list-objects.c:142
+#: list-objects-filter-options.c:96
+msgid "sparse:path filters support has been dropped"
+msgstr ""
+
+#: list-objects-filter-options.c:109
 #, c-format
-msgid "entry '%s' in tree %s has blob mode, but is not a blob"
+msgid "invalid filter-spec '%s'"
 msgstr ""
 
-#: list-objects.c:378
+#: list-objects-filter-options.c:125
 #, c-format
-msgid "unable to load root tree for commit %s"
+msgid "must escape char in sub-filter-spec: '%c'"
+msgstr ""
+
+#: list-objects-filter-options.c:167
+msgid "expected something after combine:"
 msgstr ""
 
-#: list-objects-filter-options.c:36
+#: list-objects-filter-options.c:249
 msgid "multiple filter-specs cannot be combined"
 msgstr "невозможно объединять фильтрацию с помощью нескольких спецификаций"
 
-#: list-objects-filter-options.c:58
-msgid "expected 'tree:<depth>'"
+#: list-objects-filter-options.c:361
+msgid "unable to upgrade repository format to support partial clone"
 msgstr ""
 
-#: list-objects-filter-options.c:84
-msgid "sparse:path filters support has been dropped"
+#: list-objects-filter.c:492
+#, c-format
+msgid "unable to access sparse blob in '%s'"
+msgstr ""
+
+#: list-objects-filter.c:495
+#, c-format
+msgid "unable to parse sparse filter data in %s"
+msgstr ""
+
+#: list-objects.c:127
+#, c-format
+msgid "entry '%s' in tree %s has tree mode, but is not a tree"
+msgstr ""
+
+#: list-objects.c:140
+#, c-format
+msgid "entry '%s' in tree %s has blob mode, but is not a blob"
 msgstr ""
 
-#: list-objects-filter-options.c:158
-msgid "cannot change partial clone promisor remote"
-msgstr "нельзя изменить внешний репозиторий при частичном клонировании"
+#: list-objects.c:375
+#, c-format
+msgid "unable to load root tree for commit %s"
+msgstr ""
 
-#: lockfile.c:151
+#: lockfile.c:152
 #, c-format
 msgid ""
 "Unable to create '%s.lock': %s.\n"
@@ -3401,123 +4262,125 @@ msgid ""
 "remove the file manually to continue."
 msgstr "Не удалось создать «%s.lock»: %s.\n\nПохоже, что другой процесс git запущен в этом репозитории,\nнапример редактор открыт из «git commit». Пожалуйста, убедитесь,\nчто все процессы были завершены и потом попробуйте снова.\nЕсли это не поможет, то возможно процесс git был ранее завершен\nс ошибкой в этом репозитории: \nудалите файл вручную для продолжения."
 
-#: lockfile.c:159
+#: lockfile.c:160
 #, c-format
 msgid "Unable to create '%s.lock': %s"
 msgstr "Не удалось создать «%s.lock»: %s"
 
-#: merge.c:41
-msgid "failed to read the cache"
-msgstr "сбой чтения кэша"
+#: ls-refs.c:109
+msgid "expected flush after ls-refs arguments"
+msgstr ""
 
-#: merge.c:107 rerere.c:720 builtin/am.c:1887 builtin/am.c:1921
-#: builtin/checkout.c:461 builtin/checkout.c:811 builtin/clone.c:773
-#: builtin/stash.c:264
-msgid "unable to write new index file"
-msgstr "не удалось записать новый файл индекса"
+#: merge-ort-wrappers.c:13 merge-recursive.c:3672
+#, c-format
+msgid ""
+"Your local changes to the following files would be overwritten by merge:\n"
+"  %s"
+msgstr ""
+
+#: merge-ort-wrappers.c:33 merge-recursive.c:3436
+#, c-format
+msgid "Already up to date!"
+msgstr "Уже обновлено!"
 
-#: merge-recursive.c:322
+#: merge-recursive.c:356
 msgid "(bad commit)\n"
 msgstr "(плохой коммит)\n"
 
-#: merge-recursive.c:345
+#: merge-recursive.c:379
 #, c-format
 msgid "add_cacheinfo failed for path '%s'; merge aborting."
 msgstr "сбой add_cacheinfo для пути «%s»; отмена слияния."
 
-#: merge-recursive.c:354
+#: merge-recursive.c:388
 #, c-format
 msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
 msgstr "сбой обновления add_cacheinfo для пути «%s»; отмена слияния."
 
-#: merge-recursive.c:437
-msgid "error building trees"
-msgstr "ошибка при построении деревьев"
-
-#: merge-recursive.c:861
+#: merge-recursive.c:874
 #, c-format
 msgid "failed to create path '%s'%s"
 msgstr "не удалось создать путь «%s»%s"
 
-#: merge-recursive.c:872
+#: merge-recursive.c:885
 #, c-format
 msgid "Removing %s to make room for subdirectory\n"
 msgstr "Удаление %s, чтобы освободить место для подкаталогов\n"
 
-#: merge-recursive.c:886 merge-recursive.c:905
+#: merge-recursive.c:899 merge-recursive.c:918
 msgid ": perhaps a D/F conflict?"
 msgstr ": возможно, конфликт каталогов/файлов?"
 
-#: merge-recursive.c:895
+#: merge-recursive.c:908
 #, c-format
 msgid "refusing to lose untracked file at '%s'"
 msgstr "отказ потери неотслеживаемого файла в «%s»"
 
-#: merge-recursive.c:936 builtin/cat-file.c:40
+#: merge-recursive.c:949 builtin/cat-file.c:41
 #, c-format
 msgid "cannot read object %s '%s'"
 msgstr "невозможно прочитать объект %s «%s»"
 
-#: merge-recursive.c:939
+#: merge-recursive.c:954
 #, c-format
 msgid "blob expected for %s '%s'"
 msgstr "ожидается двоичный объект для %s «%s»"
 
-#: merge-recursive.c:963
+#: merge-recursive.c:979
 #, c-format
 msgid "failed to open '%s': %s"
 msgstr "не удалось открыть «%s»: %s"
 
-#: merge-recursive.c:974
+#: merge-recursive.c:990
 #, c-format
 msgid "failed to symlink '%s': %s"
 msgstr "не удалось создать символьную ссылку «%s»: %s"
 
-#: merge-recursive.c:979
+#: merge-recursive.c:995
 #, c-format
 msgid "do not know what to do with %06o %s '%s'"
 msgstr "не понятно, что делать с %06o %s «%s»"
 
-#: merge-recursive.c:1175
+#: merge-recursive.c:1191
 #, c-format
 msgid "Failed to merge submodule %s (not checked out)"
 msgstr "Не удалось слить подмодуль %s (состояние не забрано)"
 
-#: merge-recursive.c:1182
+#: merge-recursive.c:1198
 #, c-format
 msgid "Failed to merge submodule %s (commits not present)"
 msgstr "Не удалось слить подмодуль %s (нет коммитов)"
 
-#: merge-recursive.c:1189
+#: merge-recursive.c:1205
 #, c-format
 msgid "Failed to merge submodule %s (commits don't follow merge-base)"
 msgstr "Не удалось слить подмодуль %s (у коммитов другая база слияния)"
 
-#: merge-recursive.c:1197 merge-recursive.c:1209
+#: merge-recursive.c:1213 merge-recursive.c:1225
 #, c-format
 msgid "Fast-forwarding submodule %s to the following commit:"
 msgstr "Перемотка вперед подмодуля %s до указанного коммита:"
 
-#: merge-recursive.c:1200 merge-recursive.c:1212
+#: merge-recursive.c:1216 merge-recursive.c:1228
 #, c-format
 msgid "Fast-forwarding submodule %s"
 msgstr "Перемотка вперед подмодуля %s"
 
-#: merge-recursive.c:1235
+#: merge-recursive.c:1251
 #, c-format
 msgid "Failed to merge submodule %s (merge following commits not found)"
 msgstr "Не удалось слить подмодуль %s (нет указанных коммитов для слияния)"
 
-#: merge-recursive.c:1239
+#: merge-recursive.c:1255
 #, c-format
 msgid "Failed to merge submodule %s (not fast-forward)"
 msgstr "Не удалось слить подмодуль %s (нельзя сделать перемотку вперед)"
 
-#: merge-recursive.c:1240
+#: merge-recursive.c:1256
 msgid "Found a possible merge resolution for the submodule:\n"
 msgstr "Найдено возможное разрешение слиятия для подмодуля:\n"
 
-#: merge-recursive.c:1243
+#: merge-recursive.c:1259
 #, c-format
 msgid ""
 "If this is correct simply add it to the index for example\n"
@@ -3528,108 +4391,108 @@ msgid ""
 "which will accept this suggestion.\n"
 msgstr "Если оно верное, то просто добавьте его в индекс, например так:\n\n  git update-index --cacheinfo 160000 %s \"%s\"\n\nтем самым принимая это предположение.\n"
 
-#: merge-recursive.c:1252
+#: merge-recursive.c:1268
 #, c-format
 msgid "Failed to merge submodule %s (multiple merges found)"
 msgstr "Не удалось слить подмодуль %s (найдено несколько слияний)"
 
-#: merge-recursive.c:1325
+#: merge-recursive.c:1341
 msgid "Failed to execute internal merge"
 msgstr "Не удалось запустить внутреннее слияние"
 
-#: merge-recursive.c:1330
+#: merge-recursive.c:1346
 #, c-format
 msgid "Unable to add %s to database"
 msgstr "Не удалось добавить %s в базу данных"
 
-#: merge-recursive.c:1362
+#: merge-recursive.c:1378
 #, c-format
 msgid "Auto-merging %s"
 msgstr "Автослияние %s"
 
-#: merge-recursive.c:1385
+#: merge-recursive.c:1402
 #, c-format
 msgid "Error: Refusing to lose untracked file at %s; writing to %s instead."
 msgstr "Ошибка: Отказ потери неотслеживаемого файла %s; запись в %s взамен."
 
-#: merge-recursive.c:1457
+#: merge-recursive.c:1474
 #, 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 оставлена в дереве."
 
-#: merge-recursive.c:1462
+#: merge-recursive.c:1479
 #, 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 оставлена в дереве."
 
-#: merge-recursive.c:1469
+#: merge-recursive.c:1486
 #, 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."
 
-#: merge-recursive.c:1474
+#: merge-recursive.c:1491
 #, 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."
 
-#: merge-recursive.c:1509
+#: merge-recursive.c:1526
 msgid "rename"
 msgstr "переименование"
 
-#: merge-recursive.c:1509
+#: merge-recursive.c:1526
 msgid "renamed"
 msgstr "переименовано"
 
-#: merge-recursive.c:1589 merge-recursive.c:2445 merge-recursive.c:3085
+#: merge-recursive.c:1577 merge-recursive.c:2484 merge-recursive.c:3129
 #, c-format
 msgid "Refusing to lose dirty file at %s"
 msgstr "Отказ потери изменённого файла %s"
 
-#: merge-recursive.c:1599
+#: merge-recursive.c:1587
 #, c-format
 msgid "Refusing to lose untracked file at %s, even though it's in the way."
 msgstr "Отказ потери неотслеживаемого файла %s, даже с учетом его наличия."
 
-#: merge-recursive.c:1657
+#: merge-recursive.c:1645
 #, c-format
 msgid "CONFLICT (rename/add): Rename %s->%s in %s.  Added %s in %s"
 msgstr ""
 
-#: merge-recursive.c:1687
+#: merge-recursive.c:1676
 #, c-format
 msgid "%s is a directory in %s adding as %s instead"
 msgstr "%s — это каталог в %s, добавляем как %s вместо этого"
 
-#: merge-recursive.c:1692
+#: merge-recursive.c:1681
 #, c-format
 msgid "Refusing to lose untracked file at %s; adding as %s instead"
 msgstr "Отказ потери неотслеживаемого файла %s; добавление как %s взамен."
 
-#: merge-recursive.c:1711
+#: merge-recursive.c:1708
 #, c-format
 msgid ""
 "CONFLICT (rename/rename): Rename \"%s\"->\"%s\" in branch \"%s\" rename "
 "\"%s\"->\"%s\" in \"%s\"%s"
 msgstr "КОНФЛИКТ (переименование/переименование): Переименование «%s»→«%s» в ветке «%s» и переименование «%s»→«%s» в ветке «%s»%s"
 
-#: merge-recursive.c:1716
+#: merge-recursive.c:1713
 msgid " (left unresolved)"
 msgstr " (оставлено неразрешенным)"
 
-#: merge-recursive.c:1825
+#: merge-recursive.c:1805
 #, 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:2030
+#: merge-recursive.c:2068
 #, c-format
 msgid ""
 "CONFLICT (directory rename split): Unclear where to place %s because "
@@ -3637,157 +4500,146 @@ msgid ""
 "getting a majority of the files."
 msgstr ""
 
-#: merge-recursive.c:2062
+#: merge-recursive.c:2100
 #, c-format
 msgid ""
 "CONFLICT (implicit dir rename): Existing file/dir at %s in the way of "
 "implicit directory rename(s) putting the following path(s) there: %s."
 msgstr ""
 
-#: merge-recursive.c:2072
+#: merge-recursive.c:2110
 #, c-format
 msgid ""
 "CONFLICT (implicit dir rename): Cannot map more than one path to %s; "
 "implicit directory renames tried to put these paths there: %s"
 msgstr ""
 
-#: merge-recursive.c:2164
+#: merge-recursive.c:2202
 #, c-format
 msgid ""
 "CONFLICT (rename/rename): Rename directory %s->%s in %s. Rename directory "
 "%s->%s in %s"
 msgstr ""
 
-#: merge-recursive.c:2408
+#: merge-recursive.c:2447
 #, c-format
 msgid ""
 "WARNING: Avoiding applying %s -> %s rename to %s, because %s itself was "
 "renamed."
 msgstr ""
 
-#: merge-recursive.c:2929
+#: merge-recursive.c:2973
 #, c-format
 msgid "cannot read object %s"
 msgstr "невозможно прочитать объект «%s»"
 
-#: merge-recursive.c:2932
+#: merge-recursive.c:2976
 #, c-format
 msgid "object %s is not a blob"
 msgstr "объект %s не является двоичным объектом"
 
-#: merge-recursive.c:2996
+#: merge-recursive.c:3040
 msgid "modify"
 msgstr "изменение"
 
-#: merge-recursive.c:2996
+#: merge-recursive.c:3040
 msgid "modified"
 msgstr "изменено"
 
-#: merge-recursive.c:3008
+#: merge-recursive.c:3052
 msgid "content"
 msgstr "содержимое"
 
-#: merge-recursive.c:3012
+#: merge-recursive.c:3056
 msgid "add/add"
 msgstr "добавление/добавление"
 
-#: merge-recursive.c:3035
+#: merge-recursive.c:3079
 #, c-format
 msgid "Skipped %s (merged same as existing)"
 msgstr "Пропуск %s (слиты одинаковые изменения как существующие)"
 
-#: merge-recursive.c:3057 git-submodule.sh:937
+#: merge-recursive.c:3101
 msgid "submodule"
 msgstr "подмодуль"
 
-#: merge-recursive.c:3058
+#: merge-recursive.c:3102
 #, c-format
 msgid "CONFLICT (%s): Merge conflict in %s"
 msgstr "КОНФЛИКТ (%s): Конфликт слияния в %s"
 
-#: merge-recursive.c:3088
+#: merge-recursive.c:3132
 #, c-format
 msgid "Adding as %s instead"
 msgstr "Добавление вместо этого как %s"
 
-#: merge-recursive.c:3170
+#: merge-recursive.c:3215
 #, c-format
 msgid ""
 "Path updated: %s added in %s inside a directory that was renamed in %s; "
 "moving it to %s."
 msgstr ""
 
-#: merge-recursive.c:3173
+#: merge-recursive.c:3218
 #, c-format
 msgid ""
 "CONFLICT (file location): %s added in %s inside a directory that was renamed"
 " in %s, suggesting it should perhaps be moved to %s."
 msgstr ""
 
-#: merge-recursive.c:3177
+#: merge-recursive.c:3222
 #, c-format
 msgid ""
 "Path updated: %s renamed to %s in %s, inside a directory that was renamed in"
 " %s; moving it to %s."
 msgstr ""
 
-#: merge-recursive.c:3180
+#: merge-recursive.c:3225
 #, c-format
 msgid ""
 "CONFLICT (file location): %s renamed to %s in %s, inside a directory that "
 "was renamed in %s, suggesting it should perhaps be moved to %s."
 msgstr ""
 
-#: merge-recursive.c:3294
+#: merge-recursive.c:3339
 #, c-format
 msgid "Removing %s"
 msgstr "Удаление %s"
 
-#: merge-recursive.c:3317
+#: merge-recursive.c:3362
 msgid "file/directory"
 msgstr "файл/каталог"
 
-#: merge-recursive.c:3322
+#: merge-recursive.c:3367
 msgid "directory/file"
 msgstr "каталог/файл"
 
-#: merge-recursive.c:3329
+#: merge-recursive.c:3374
 #, 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:3338
+#: merge-recursive.c:3383
 #, c-format
 msgid "Adding %s"
 msgstr "Добавление %s"
 
-#: merge-recursive.c:3347
+#: merge-recursive.c:3392
 #, c-format
 msgid "CONFLICT (add/add): Merge conflict in %s"
 msgstr ""
 
-#: merge-recursive.c:3385
-#, c-format
-msgid ""
-"Your local changes to the following files would be overwritten by merge:\n"
-"  %s"
-msgstr ""
-
-#: merge-recursive.c:3396
-msgid "Already up to date!"
-msgstr "Уже обновлено!"
-
-#: merge-recursive.c:3405
+#: merge-recursive.c:3445
 #, c-format
 msgid "merging of trees %s and %s failed"
 msgstr "сбой слияния деревьев «%s» и «%s»"
 
-#: merge-recursive.c:3504
+#: merge-recursive.c:3550
 msgid "Merging:"
 msgstr "Слияние:"
 
-#: merge-recursive.c:3517
+#: merge-recursive.c:3563
 #, c-format
 msgid "found %u common ancestor:"
 msgid_plural "found %u common ancestors:"
@@ -3796,154 +4648,201 @@ msgstr[1] "найдено %u общих предка:"
 msgstr[2] "найдено %u общих предков:"
 msgstr[3] "найдено %u общих предков:"
 
-#: merge-recursive.c:3556
+#: merge-recursive.c:3613
 msgid "merge returned no commit"
 msgstr "слияние не вернуло коммит"
 
-#: merge-recursive.c:3622
+#: merge-recursive.c:3769
 #, c-format
 msgid "Could not parse object '%s'"
 msgstr "Не удалось разобрать объект «%s»"
 
-#: merge-recursive.c:3638 builtin/merge.c:702 builtin/merge.c:873
+#: merge-recursive.c:3787 builtin/merge.c:711 builtin/merge.c:895
 msgid "Unable to write index."
 msgstr "Не удается записать индекс."
 
-#: midx.c:66
+#: merge.c:41
+msgid "failed to read the cache"
+msgstr "сбой чтения кэша"
+
+#: merge.c:109 rerere.c:720 builtin/am.c:1883 builtin/am.c:1917
+#: builtin/checkout.c:573 builtin/checkout.c:829 builtin/clone.c:817
+#: builtin/stash.c:265
+msgid "unable to write new index file"
+msgstr "не удалось записать новый файл индекса"
+
+#: midx.c:80
 #, c-format
 msgid "multi-pack-index file %s is too small"
 msgstr ""
 
-#: midx.c:82
+#: midx.c:96
 #, c-format
 msgid "multi-pack-index signature 0x%08x does not match signature 0x%08x"
 msgstr ""
 
-#: midx.c:87
+#: midx.c:101
 #, c-format
 msgid "multi-pack-index version %d not recognized"
 msgstr ""
 
-#: midx.c:92
+#: midx.c:106
 #, c-format
-msgid "hash version %u does not match"
-msgstr "версия хеш-суммы %u не соответсвует"
+msgid "multi-pack-index hash version %u does not match version %u"
+msgstr ""
 
-#: midx.c:106
+#: midx.c:123
 msgid "invalid chunk offset (too large)"
 msgstr ""
 
-#: midx.c:130
+#: midx.c:147
 msgid "terminating multi-pack-index chunk id appears earlier than expected"
 msgstr ""
 
-#: midx.c:143
+#: midx.c:160
 msgid "multi-pack-index missing required pack-name chunk"
 msgstr ""
 
-#: midx.c:145
+#: midx.c:162
 msgid "multi-pack-index missing required OID fanout chunk"
 msgstr ""
 
-#: midx.c:147
+#: midx.c:164
 msgid "multi-pack-index missing required OID lookup chunk"
 msgstr ""
 
-#: midx.c:149
+#: midx.c:166
 msgid "multi-pack-index missing required object offsets chunk"
 msgstr ""
 
-#: midx.c:163
+#: midx.c:180
 #, c-format
 msgid "multi-pack-index pack names out of order: '%s' before '%s'"
 msgstr ""
 
-#: midx.c:208
+#: midx.c:223
 #, c-format
 msgid "bad pack-int-id: %u (%u total packs)"
 msgstr ""
 
-#: midx.c:258
+#: midx.c:273
 msgid "multi-pack-index stores a 64-bit offset, but off_t is too small"
 msgstr ""
 
-#: midx.c:286
-msgid "error preparing packfile from multi-pack-index"
-msgstr ""
-
-#: midx.c:457
+#: midx.c:480
 #, c-format
 msgid "failed to add packfile '%s'"
 msgstr ""
 
-#: midx.c:463
+#: midx.c:486
 #, c-format
 msgid "failed to open pack-index '%s'"
 msgstr ""
 
-#: midx.c:557
+#: midx.c:546
 #, c-format
 msgid "failed to locate object %d in packfile"
 msgstr ""
 
-#: midx.c:993
+#: midx.c:846
+msgid "Adding packfiles to multi-pack-index"
+msgstr ""
+
+#: midx.c:879
+#, c-format
+msgid "did not see pack-file %s to drop"
+msgstr ""
+
+#: midx.c:931
+msgid "no pack files to index."
+msgstr ""
+
+#: midx.c:982
+msgid "Writing chunks to multi-pack-index"
+msgstr ""
+
+#: midx.c:1060
 #, c-format
 msgid "failed to clear multi-pack-index at %s"
 msgstr ""
 
-#: midx.c:1048
+#: midx.c:1116
+msgid "multi-pack-index file exists, but failed to parse"
+msgstr ""
+
+#: midx.c:1124
 msgid "Looking for referenced packfiles"
 msgstr ""
 
-#: midx.c:1063
+#: midx.c:1139
 #, c-format
 msgid ""
 "oid fanout out of order: fanout[%d] = %<PRIx32> > %<PRIx32> = fanout[%d]"
 msgstr ""
 
-#: midx.c:1067
-msgid "Verifying OID order in MIDX"
+#: midx.c:1144
+msgid "the midx contains no oid"
+msgstr ""
+
+#: midx.c:1153
+msgid "Verifying OID order in multi-pack-index"
 msgstr ""
 
-#: midx.c:1076
+#: midx.c:1162
 #, c-format
 msgid "oid lookup out of order: oid[%d] = %s >= %s = oid[%d]"
 msgstr ""
 
-#: midx.c:1095
+#: midx.c:1182
 msgid "Sorting objects by packfile"
 msgstr ""
 
-#: midx.c:1101
+#: midx.c:1189
 msgid "Verifying object offsets"
 msgstr ""
 
-#: midx.c:1117
+#: midx.c:1205
 #, c-format
 msgid "failed to load pack entry for oid[%d] = %s"
 msgstr ""
 
-#: midx.c:1123
+#: midx.c:1211
 #, c-format
 msgid "failed to load pack-index for packfile %s"
 msgstr ""
 
-#: midx.c:1132
+#: midx.c:1220
 #, c-format
 msgid "incorrect object offset for oid[%d] = %s: %<PRIx64> != %<PRIx64>"
 msgstr ""
 
-#: name-hash.c:531
+#: midx.c:1245
+msgid "Counting referenced objects"
+msgstr ""
+
+#: midx.c:1255
+msgid "Finding and deleting unreferenced packfiles"
+msgstr ""
+
+#: midx.c:1446
+msgid "could not start pack-objects"
+msgstr ""
+
+#: midx.c:1466
+msgid "could not finish pack-objects"
+msgstr ""
+
+#: name-hash.c:537
 #, c-format
 msgid "unable to create lazy_dir thread: %s"
 msgstr ""
 
-#: name-hash.c:553
+#: name-hash.c:559
 #, c-format
 msgid "unable to create lazy_name thread: %s"
 msgstr ""
 
-#: name-hash.c:559
+#: name-hash.c:565
 #, c-format
 msgid "unable to join lazy_name thread: %s"
 msgstr ""
@@ -3982,45 +4881,70 @@ msgstr "Отказ в перезаписи заметок в %s (за преде
 msgid "Bad %s value: '%s'"
 msgstr "Неправильное значение переменной %s: «%s»"
 
-#: object.c:54
+#: object.c:53
 #, c-format
 msgid "invalid object type \"%s\""
 msgstr ""
 
-#: object.c:174
+#: object.c:173
 #, c-format
 msgid "object %s is a %s, not a %s"
 msgstr ""
 
-#: object.c:234
+#: object.c:233
 #, c-format
 msgid "object %s has unknown type id %d"
 msgstr ""
 
-#: object.c:247
+#: object.c:246
 #, c-format
 msgid "unable to parse object: %s"
 msgstr "не удалось разобрать объект: %s"
 
-#: object.c:267 object.c:278
+#: object.c:266 object.c:278
 #, c-format
 msgid "hash mismatch %s"
-msgstr "несоответствие хеш-суммы %s"
+msgstr "несоответствие хэш-кода %s"
+
+#: pack-bitmap.c:815 pack-bitmap.c:821 builtin/pack-objects.c:2216
+#, c-format
+msgid "unable to get size of %s"
+msgstr "не удалось получить размер %s"
 
-#: packfile.c:617
+#: packfile.c:615
 msgid "offset before end of packfile (broken .idx?)"
 msgstr "сдвиг до конца файла пакета (возможно, повреждён файл .idx?)"
 
-#: packfile.c:1868
+#: packfile.c:1907
 #, c-format
 msgid "offset before start of pack index for %s (corrupt index?)"
 msgstr "сдвиг до начала индекса пакета для %s (повреждён индекс?)"
 
-#: packfile.c:1872
+#: packfile.c:1911
 #, c-format
 msgid "offset beyond end of pack index for %s (truncated index?)"
 msgstr "сдвиг за пределами индекса пакета для %s (обрезан индекс?)"
 
+#: parse-options-cb.c:20 parse-options-cb.c:24
+#, c-format
+msgid "option `%s' expects a numerical value"
+msgstr ""
+
+#: parse-options-cb.c:41
+#, c-format
+msgid "malformed expiration date '%s'"
+msgstr ""
+
+#: parse-options-cb.c:54
+#, c-format
+msgid "option `%s' expects \"always\", \"auto\", or \"never\""
+msgstr ""
+
+#: parse-options-cb.c:132 parse-options-cb.c:149
+#, c-format
+msgid "malformed object name '%s'"
+msgstr "Неправильное имя объекта «%s»"
+
 #: parse-options.c:38
 #, c-format
 msgid "%s requires a value"
@@ -4036,7 +4960,7 @@ msgstr ""
 msgid "%s : incompatible with something else"
 msgstr ""
 
-#: parse-options.c:92 parse-options.c:96 parse-options.c:319
+#: parse-options.c:92 parse-options.c:96 parse-options.c:317
 #, c-format
 msgid "%s takes no value"
 msgstr ""
@@ -4046,162 +4970,147 @@ msgstr ""
 msgid "%s isn't available"
 msgstr ""
 
-#: parse-options.c:219
+#: parse-options.c:217
 #, c-format
 msgid "%s expects a non-negative integer value with an optional k/m/g suffix"
 msgstr ""
 
-#: parse-options.c:389
+#: parse-options.c:386
 #, c-format
 msgid "ambiguous option: %s (could be --%s%s or --%s%s)"
 msgstr ""
 
-#: parse-options.c:423 parse-options.c:431
+#: parse-options.c:420 parse-options.c:428
+#, c-format
+msgid "did you mean `--%s` (with two dashes)?"
+msgstr ""
+
+#: parse-options.c:666 parse-options.c:971
 #, c-format
-msgid "did you mean `--%s` (with two dashes ?)"
+msgid "alias of --%s"
 msgstr ""
 
-#: parse-options.c:859
+#: parse-options.c:862
 #, c-format
 msgid "unknown option `%s'"
 msgstr ""
 
-#: parse-options.c:861
+#: parse-options.c:864
 #, c-format
 msgid "unknown switch `%c'"
 msgstr ""
 
-#: parse-options.c:863
+#: parse-options.c:866
 #, c-format
 msgid "unknown non-ascii option in string: `%s'"
 msgstr ""
 
-#: parse-options.c:887
+#: parse-options.c:890
 msgid "..."
 msgstr "…"
 
-#: parse-options.c:906
+#: parse-options.c:909
 #, c-format
 msgid "usage: %s"
 msgstr "использование: %s"
 
 #. TRANSLATORS: the colon here should align with the
 #. one in "usage: %s" translation.
-#: parse-options.c:912
+#: parse-options.c:915
 #, c-format
 msgid "   or: %s"
 msgstr "          или: %s"
 
-#: parse-options.c:915
+#: parse-options.c:918
 #, c-format
 msgid "    %s"
 msgstr "            %s"
 
-#: parse-options.c:954
+#: parse-options.c:957
 msgid "-NUM"
 msgstr "-КОЛИЧЕСТВО"
 
-#: parse-options.c:968
-#, c-format
-msgid "alias of --%s"
-msgstr ""
-
-#: parse-options-cb.c:20 parse-options-cb.c:24
-#, c-format
-msgid "option `%s' expects a numerical value"
-msgstr ""
-
-#: parse-options-cb.c:41
-#, c-format
-msgid "malformed expiration date '%s'"
-msgstr ""
-
-#: parse-options-cb.c:54
-#, c-format
-msgid "option `%s' expects \"always\", \"auto\", or \"never\""
-msgstr ""
-
-#: parse-options-cb.c:130 parse-options-cb.c:147
-#, c-format
-msgid "malformed object name '%s'"
-msgstr "Неправильное имя объекта «%s»"
-
-#: path.c:897
+#: path.c:915
 #, c-format
 msgid "Could not make %s writable by group"
 msgstr "Не удалось предоставить доступ к %s на запись"
 
-#: pathspec.c:128
+#: pathspec.c:130
 msgid "Escape character '\\' not allowed as last character in attr value"
 msgstr "Управляющий символ «\\» не разрешен как последний символ в значении attr"
 
-#: pathspec.c:146
+#: pathspec.c:148
 msgid "Only one 'attr:' specification is allowed."
 msgstr "Разрешен только один спецификатор «attr:»."
 
-#: pathspec.c:149
+#: pathspec.c:151
 msgid "attr spec must not be empty"
 msgstr "спецификатор attr не должен быть пустой"
 
-#: pathspec.c:192
+#: pathspec.c:194
 #, c-format
 msgid "invalid attribute name %s"
 msgstr "недопустимое имя атрибута %s"
 
-#: pathspec.c:257
+#: pathspec.c:259
 msgid "global 'glob' and 'noglob' pathspec settings are incompatible"
 msgstr "глобальные опции спецификаторов пути «glob» и «noglob» нельзя использовать одновременно"
 
-#: pathspec.c:264
+#: pathspec.c:266
 msgid ""
 "global 'literal' pathspec setting is incompatible with all other global "
 "pathspec settings"
 msgstr "глобальная опция спецификатора пути «literal» не совместима с другими глобальными спецификаторами доступа"
 
-#: pathspec.c:304
+#: pathspec.c:306
 msgid "invalid parameter for pathspec magic 'prefix'"
-msgstr "неправильный параметр для магического слова «prefix» в спецификаторе пути "
+msgstr "неправильный параметр для магического слова «prefix» в спецификаторе пути"
 
-#: pathspec.c:325
+#: pathspec.c:327
 #, c-format
 msgid "Invalid pathspec magic '%.*s' in '%s'"
 msgstr "неправильное магическое слово «%.*s» в спецификаторе пути «%s»"
 
-#: pathspec.c:330
+#: pathspec.c:332
 #, c-format
 msgid "Missing ')' at the end of pathspec magic in '%s'"
 msgstr "Пропущено «)» в конце магического слова спецификатора пути «%s»"
 
-#: pathspec.c:368
+#: pathspec.c:370
 #, c-format
 msgid "Unimplemented pathspec magic '%c' in '%s'"
 msgstr "Нереализованное магическое слово «%c» спецификатора пути «%s»"
 
-#: pathspec.c:427
+#: pathspec.c:429
 #, c-format
 msgid "%s: 'literal' and 'glob' are incompatible"
 msgstr "%s: «literal» и «glob» не совместимы"
 
-#: pathspec.c:440
+#: pathspec.c:445
 #, c-format
-msgid "%s: '%s' is outside repository"
-msgstr "%s: «%s» вне репозитория"
+msgid "%s: '%s' is outside repository at '%s'"
+msgstr ""
 
-#: pathspec.c:514
+#: pathspec.c:521
 #, c-format
 msgid "'%s' (mnemonic: '%c')"
 msgstr "«%s» (мнемоника: «%c»)"
 
-#: pathspec.c:524
+#: pathspec.c:531
 #, c-format
 msgid "%s: pathspec magic not supported by this command: %s"
 msgstr "%s: магические слова в спецификаторе пути не поддерживаются командой: %s"
 
-#: pathspec.c:591
+#: pathspec.c:598
 #, c-format
 msgid "pathspec '%s' is beyond a symbolic link"
 msgstr "спецификатор пути «%s» находится за символической ссылкой"
 
+#: pathspec.c:643
+#, c-format
+msgid "line is badly quoted: %s"
+msgstr ""
+
 #: pkt-line.c:92
 msgid "unable to write flush packet"
 msgstr ""
@@ -4211,44 +5120,48 @@ msgid "unable to write delim packet"
 msgstr ""
 
 #: pkt-line.c:106
+msgid "unable to write stateless separator packet"
+msgstr ""
+
+#: pkt-line.c:113
 msgid "flush packet write failed"
 msgstr ""
 
-#: pkt-line.c:146 pkt-line.c:232
+#: pkt-line.c:153 pkt-line.c:239
 msgid "protocol error: impossibly long line"
 msgstr ""
 
-#: pkt-line.c:162 pkt-line.c:164
+#: pkt-line.c:169 pkt-line.c:171
 msgid "packet write with format failed"
 msgstr ""
 
-#: pkt-line.c:196
+#: pkt-line.c:203
 msgid "packet write failed - data exceeds max packet size"
 msgstr ""
 
-#: pkt-line.c:203 pkt-line.c:210
+#: pkt-line.c:210 pkt-line.c:217
 msgid "packet write failed"
 msgstr ""
 
-#: pkt-line.c:295
+#: pkt-line.c:302
 msgid "read error"
 msgstr ""
 
-#: pkt-line.c:303
+#: pkt-line.c:310
 msgid "the remote end hung up unexpectedly"
 msgstr ""
 
-#: pkt-line.c:331
+#: pkt-line.c:338
 #, c-format
 msgid "protocol error: bad line length character: %.4s"
 msgstr ""
 
-#: pkt-line.c:341 pkt-line.c:346
+#: pkt-line.c:352 pkt-line.c:357
 #, c-format
 msgid "protocol error: bad line length %d"
 msgstr ""
 
-#: pkt-line.c:362
+#: pkt-line.c:373 sideband.c:165
 #, c-format
 msgid "remote error: %s"
 msgstr "ошибка внешнего репозитория: %s"
@@ -4262,233 +5175,272 @@ msgstr ""
 msgid "unable to create threaded lstat: %s"
 msgstr ""
 
-#: pretty.c:966
+#: pretty.c:983
 msgid "unable to parse --pretty format"
 msgstr "не удалось разобрать формат для --pretty"
 
-#: range-diff.c:56
+#: promisor-remote.c:30
+msgid "promisor-remote: unable to fork off fetch subprocess"
+msgstr ""
+
+#: promisor-remote.c:35 promisor-remote.c:37
+msgid "promisor-remote: could not write to fetch subprocess"
+msgstr ""
+
+#: promisor-remote.c:41
+msgid "promisor-remote: could not close stdin to fetch subprocess"
+msgstr ""
+
+#: promisor-remote.c:53
+#, c-format
+msgid "promisor remote name cannot begin with '/': %s"
+msgstr ""
+
+#: prune-packed.c:35
+msgid "Removing duplicate objects"
+msgstr "Удаление дублирующихся объектов"
+
+#: range-diff.c:77
 msgid "could not start `log`"
 msgstr ""
 
-#: range-diff.c:59
+#: range-diff.c:79
 msgid "could not read `log` output"
 msgstr ""
 
-#: range-diff.c:74 sequencer.c:4897
+#: range-diff.c:98 sequencer.c:5310
 #, c-format
 msgid "could not parse commit '%s'"
 msgstr "не удалось разобрать коммит «%s»"
 
-#: range-diff.c:224
+#: range-diff.c:112
+#, c-format
+msgid ""
+"could not parse first line of `log` output: did not start with 'commit ': "
+"'%s'"
+msgstr ""
+
+#: range-diff.c:137
+#, c-format
+msgid "could not parse git header '%.*s'"
+msgstr ""
+
+#: range-diff.c:299
 msgid "failed to generate diff"
 msgstr ""
 
-#: range-diff.c:455 range-diff.c:457
+#: range-diff.c:532 range-diff.c:534
 #, c-format
 msgid "could not parse log for '%s'"
 msgstr ""
 
-#: read-cache.c:680
+#: read-cache.c:682
 #, c-format
 msgid "will not add file alias '%s' ('%s' already exists in index)"
 msgstr ""
 
-#: read-cache.c:696
+#: read-cache.c:698
 msgid "cannot create an empty blob in the object database"
 msgstr ""
 
-#: read-cache.c:718
+#: read-cache.c:720
 #, c-format
 msgid "%s: can only add regular files, symbolic links or git-directories"
 msgstr ""
 
-#: read-cache.c:723
+#: read-cache.c:725
 #, c-format
 msgid "'%s' does not have a commit checked out"
 msgstr ""
 
-#: read-cache.c:775
+#: read-cache.c:777
 #, c-format
 msgid "unable to index file '%s'"
 msgstr ""
 
-#: read-cache.c:794
+#: read-cache.c:796
 #, c-format
 msgid "unable to add '%s' to index"
 msgstr ""
 
-#: read-cache.c:805
+#: read-cache.c:807
 #, c-format
 msgid "unable to stat '%s'"
 msgstr ""
 
-#: read-cache.c:1314
+#: read-cache.c:1318
 #, c-format
 msgid "'%s' appears as both a file and as a directory"
 msgstr ""
 
-#: read-cache.c:1499
+#: read-cache.c:1524
 msgid "Refresh index"
 msgstr ""
 
-#: read-cache.c:1613
+#: read-cache.c:1639
 #, c-format
 msgid ""
 "index.version set, but the value is invalid.\n"
 "Using version %i"
 msgstr "index.version указан, но значение недействительное.\nИспользую версию %i"
 
-#: read-cache.c:1623
+#: read-cache.c:1649
 #, c-format
 msgid ""
 "GIT_INDEX_VERSION set, but the value is invalid.\n"
 "Using version %i"
 msgstr "GIT_INDEX_VERSION указан, но значение недействительное.\nИспользую версию %i"
 
-#: read-cache.c:1679
+#: read-cache.c:1705
 #, c-format
 msgid "bad signature 0x%08x"
 msgstr ""
 
-#: read-cache.c:1682
+#: read-cache.c:1708
 #, c-format
 msgid "bad index version %d"
 msgstr ""
 
-#: read-cache.c:1691
+#: read-cache.c:1717
 msgid "bad index file sha1 signature"
 msgstr ""
 
-#: read-cache.c:1721
+#: read-cache.c:1747
 #, c-format
 msgid "index uses %.4s extension, which we do not understand"
 msgstr ""
 
-#: read-cache.c:1723
+#: read-cache.c:1749
 #, c-format
 msgid "ignoring %.4s extension"
 msgstr ""
 
-#: read-cache.c:1760
+#: read-cache.c:1786
 #, c-format
 msgid "unknown index entry format 0x%08x"
 msgstr ""
 
-#: read-cache.c:1776
+#: read-cache.c:1802
 #, c-format
 msgid "malformed name field in the index, near path '%s'"
 msgstr ""
 
-#: read-cache.c:1833
+#: read-cache.c:1859
 msgid "unordered stage entries in index"
 msgstr ""
 
-#: read-cache.c:1836
+#: read-cache.c:1862
 #, c-format
 msgid "multiple stage entries for merged file '%s'"
 msgstr ""
 
-#: read-cache.c:1839
+#: read-cache.c:1865
 #, c-format
 msgid "unordered stage entries for '%s'"
 msgstr ""
 
-#: read-cache.c:1946 read-cache.c:2234 rerere.c:565 rerere.c:599 rerere.c:1111
-#: builtin/add.c:460 builtin/check-ignore.c:178 builtin/checkout.c:358
-#: builtin/checkout.c:672 builtin/checkout.c:1060 builtin/clean.c:955
-#: builtin/commit.c:344 builtin/diff-tree.c:120 builtin/grep.c:498
-#: builtin/mv.c:145 builtin/reset.c:245 builtin/rm.c:271
-#: builtin/submodule--helper.c:330
+#: read-cache.c:1971 read-cache.c:2262 rerere.c:565 rerere.c:599 rerere.c:1111
+#: submodule.c:1628 builtin/add.c:538 builtin/check-ignore.c:181
+#: builtin/checkout.c:502 builtin/checkout.c:688 builtin/clean.c:991
+#: builtin/commit.c:364 builtin/diff-tree.c:122 builtin/grep.c:507
+#: builtin/mv.c:146 builtin/reset.c:247 builtin/rm.c:290
+#: builtin/submodule--helper.c:332
 msgid "index file corrupt"
 msgstr "файл индекса поврежден"
 
-#: read-cache.c:2087
+#: read-cache.c:2115
 #, c-format
 msgid "unable to create load_cache_entries thread: %s"
 msgstr ""
 
-#: read-cache.c:2100
+#: read-cache.c:2128
 #, c-format
 msgid "unable to join load_cache_entries thread: %s"
 msgstr ""
 
-#: read-cache.c:2133
+#: read-cache.c:2161
 #, c-format
 msgid "%s: index file open failed"
 msgstr ""
 
-#: read-cache.c:2137
+#: read-cache.c:2165
 #, c-format
 msgid "%s: cannot stat the open index"
 msgstr ""
 
-#: read-cache.c:2141
+#: read-cache.c:2169
 #, c-format
 msgid "%s: index file smaller than expected"
 msgstr ""
 
-#: read-cache.c:2145
+#: read-cache.c:2173
 #, c-format
 msgid "%s: unable to map index file"
 msgstr ""
 
-#: read-cache.c:2187
+#: read-cache.c:2215
 #, c-format
 msgid "unable to create load_index_extensions thread: %s"
 msgstr ""
 
-#: read-cache.c:2214
+#: read-cache.c:2242
 #, c-format
 msgid "unable to join load_index_extensions thread: %s"
 msgstr ""
 
-#: read-cache.c:2246
+#: read-cache.c:2274
 #, c-format
 msgid "could not freshen shared index '%s'"
 msgstr ""
 
-#: read-cache.c:2293
+#: read-cache.c:2321
 #, c-format
 msgid "broken index, expect %s in %s, got %s"
 msgstr ""
 
-#: read-cache.c:2989 wrapper.c:658 builtin/merge.c:1117
+#: read-cache.c:3017 strbuf.c:1171 wrapper.c:633 builtin/merge.c:1140
 #, c-format
 msgid "could not close '%s'"
 msgstr "не удалось закрыть «%s»"
 
-#: read-cache.c:3092 sequencer.c:2354 sequencer.c:3807
+#: read-cache.c:3120 sequencer.c:2479 sequencer.c:4231
 #, c-format
 msgid "could not stat '%s'"
 msgstr "не удалось выполнить stat для «%s»"
 
-#: read-cache.c:3105
+#: read-cache.c:3133
 #, c-format
 msgid "unable to open git dir: %s"
 msgstr "не удалось открыть каталог git: %s"
 
-#: read-cache.c:3117
+#: read-cache.c:3145
 #, c-format
 msgid "unable to unlink: %s"
 msgstr "не удалось отсоединить: %s"
 
-#: read-cache.c:3142
+#: read-cache.c:3170
 #, c-format
 msgid "cannot fix permission bits on '%s'"
 msgstr ""
 
-#: read-cache.c:3291
+#: read-cache.c:3319
 #, c-format
 msgid "%s: cannot drop to stage #0"
 msgstr ""
 
-#: rebase-interactive.c:26
+#: rebase-interactive.c:11
+msgid ""
+"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 "Вы можете исправить это с помощью «git rebase --edit-todo», а потом запустив «git rebase --continue».\nИли вы можете прервать процесс перемещения, выполнив «git rebase --abort»\n"
+
+#: rebase-interactive.c:33
 #, c-format
 msgid ""
 "unrecognized setting %s for option rebase.missingCommitsCheck. Ignoring."
 msgstr "нераспознанная настройка %s для опции rebase.missingCommitsCheck. Игнорирую."
 
-#: rebase-interactive.c:35
+#: rebase-interactive.c:42
 msgid ""
 "\n"
 "Commands:\n"
@@ -4510,7 +5462,7 @@ msgid ""
 "These lines can be re-ordered; they are executed from top to bottom.\n"
 msgstr "\nКоманды:\np, pick <коммит> = использовать коммит\nr, reword <коммит> = использовать коммит, но изменить сообщение коммита\ne, edit <коммит> = использовать коммит, но остановиться для исправления\ns, squash <коммит> = использовать коммит, но объединить с предыдущим коммитом\nf, fixup <коммит> = как «squash», но пропустить сообщение коммита\nx, exec <команда> = выполнить команду (остаток строки) с помощью командной оболочки\nb, break = остановиться здесь (продолжить с помощью «git rebase --continue»)\nd, drop <коммит> = удалить коммит\nl, label <метка> = дать имя текущему HEAD\nt, reset <метка> = сбросить HEAD к указанной метке\nm, merge [-C <коммит> | -c <коммит>] <метка> [# <строка>]\n. создать слияние используя сообщение коммита оригинального\n. слияния (или использовать указанную строку, если оригинальное\n. слияние не указано). Используйте -c <коммит> чтобы изменить\n. сообщение коммита.\n\nЭти строки можно перемещать; они будут выполнены сверху вниз.\n"
 
-#: rebase-interactive.c:56
+#: rebase-interactive.c:63
 #, c-format
 msgid "Rebase %s onto %s (%d command)"
 msgid_plural "Rebase %s onto %s (%d commands)"
@@ -4519,19 +5471,19 @@ msgstr[1] ""
 msgstr[2] ""
 msgstr[3] ""
 
-#: rebase-interactive.c:65 git-rebase--preserve-merges.sh:173
+#: rebase-interactive.c:72 git-rebase--preserve-merges.sh:218
 msgid ""
 "\n"
 "Do not remove any line. Use 'drop' explicitly to remove a commit.\n"
 msgstr "\nНе удаляйте строки. Используйте «drop», чтобы явно удалить коммит.\n"
 
-#: rebase-interactive.c:68 git-rebase--preserve-merges.sh:177
+#: rebase-interactive.c:75 git-rebase--preserve-merges.sh:222
 msgid ""
 "\n"
 "If you remove a line here THAT COMMIT WILL BE LOST.\n"
 msgstr "\nЕсли вы удалите строку здесь, то УКАЗАННЫЙ КОММИТ БУДЕТ УТЕРЯН.\n"
 
-#: rebase-interactive.c:74 git-rebase--preserve-merges.sh:816
+#: rebase-interactive.c:81 git-rebase--preserve-merges.sh:861
 msgid ""
 "\n"
 "You are editing the todo file of an ongoing interactive rebase.\n"
@@ -4540,36 +5492,33 @@ msgid ""
 "\n"
 msgstr "\nВы сейчас редактируете файл со списком дел для интерактивного перемещения.\nДля продолжения перемещения, после редактирования файла запустите:\n    git rebase --continue\n\n"
 
-#: rebase-interactive.c:79 git-rebase--preserve-merges.sh:893
+#: rebase-interactive.c:86 git-rebase--preserve-merges.sh:938
 msgid ""
 "\n"
 "However, if you remove everything, the rebase will be aborted.\n"
 "\n"
 msgstr "\nНо если вы удалите все, то процесс перемещения будет будет прерван.\n\n"
 
-#: rebase-interactive.c:85 git-rebase--preserve-merges.sh:900
-msgid "Note that empty commits are commented out"
-msgstr "Заметьте, что пустые коммиты закомментированны"
-
-#: rebase-interactive.c:105 rerere.c:485 rerere.c:692 sequencer.c:3339
-#: sequencer.c:3365 sequencer.c:4996 builtin/fsck.c:356 builtin/rebase.c:235
+#: rebase-interactive.c:110 rerere.c:485 rerere.c:692 sequencer.c:3607
+#: sequencer.c:3633 sequencer.c:5416 builtin/fsck.c:347 builtin/rebase.c:270
 #, c-format
 msgid "could not write '%s'"
 msgstr "не удалось записать «%s»"
 
-#: rebase-interactive.c:108
+#: rebase-interactive.c:116 builtin/rebase.c:202 builtin/rebase.c:228
+#: builtin/rebase.c:252
 #, c-format
-msgid "could not copy '%s' to '%s'."
-msgstr ""
+msgid "could not write '%s'."
+msgstr "не удалось записать «%s»."
 
-#: rebase-interactive.c:173
+#: rebase-interactive.c:193
 #, c-format
 msgid ""
 "Warning: some commits may have been dropped accidentally.\n"
 "Dropped commits (newer to older):\n"
 msgstr "Внимание: некоторые коммиты могли быть отброшены по ошибке.\nОтброшенные коммиты (от новых к старым):\n"
 
-#: rebase-interactive.c:180
+#: rebase-interactive.c:200
 #, c-format
 msgid ""
 "To avoid this message, use \"drop\" to explicitly remove a commit.\n"
@@ -4579,430 +5528,410 @@ msgid ""
 "\n"
 msgstr "Чтобы избежать этого сообщения, используйте «drop» чтобы явно удалить коммит.\n\nИспользуйте опцию «git config rebase.missingCommitsCheck» для изменения количества предупреждений.\nВозможные значения: ignore, warn, error.\n\n"
 
-#: refs.c:192
-#, c-format
-msgid "%s does not point to a valid object!"
-msgstr ""
-
-#: refs.c:597
-#, c-format
-msgid "ignoring dangling symref %s"
-msgstr ""
-
-#: refs.c:599 ref-filter.c:1982
-#, c-format
-msgid "ignoring broken ref %s"
-msgstr "игнорирую неправильную ссылку %s"
-
-#: refs.c:734
-#, c-format
-msgid "could not open '%s' for writing: %s"
-msgstr "не удалось открыть «%s» для записи: %s"
-
-#: refs.c:744 refs.c:795
-#, c-format
-msgid "could not read ref '%s'"
-msgstr ""
-
-#: refs.c:750
-#, c-format
-msgid "ref '%s' already exists"
-msgstr ""
-
-#: refs.c:755
-#, c-format
-msgid "unexpected object ID when writing '%s'"
-msgstr ""
-
-#: refs.c:763 sequencer.c:400 sequencer.c:2679 sequencer.c:2805
-#: sequencer.c:2819 sequencer.c:3076 sequencer.c:4913 wrapper.c:656
-#, c-format
-msgid "could not write to '%s'"
-msgstr "не удалось записать в «%s»"
-
-#: refs.c:790 wrapper.c:225 wrapper.c:395 builtin/am.c:715
-#: builtin/rebase.c:993
-#, c-format
-msgid "could not open '%s' for writing"
-msgstr "не удалось открыть «%s» для записи"
-
-#: refs.c:797
-#, c-format
-msgid "unexpected object ID when deleting '%s'"
-msgstr ""
-
-#: refs.c:928
-#, c-format
-msgid "log for ref %s has gap after %s"
-msgstr ""
-
-#: refs.c:934
+#: rebase-interactive.c:233 rebase-interactive.c:238 sequencer.c:2394
+#: builtin/rebase.c:188 builtin/rebase.c:213 builtin/rebase.c:239
+#: builtin/rebase.c:264
 #, c-format
-msgid "log for ref %s unexpectedly ended on %s"
-msgstr ""
-
-#: refs.c:993
-#, c-format
-msgid "log for %s is empty"
-msgstr ""
-
-#: refs.c:1085
-#, c-format
-msgid "refusing to update ref with bad name '%s'"
-msgstr ""
-
-#: refs.c:1161
-#, c-format
-msgid "update_ref failed for ref '%s': %s"
-msgstr ""
-
-#: refs.c:1942
-#, c-format
-msgid "multiple updates for ref '%s' not allowed"
-msgstr ""
-
-#: refs.c:1974
-msgid "ref updates forbidden inside quarantine environment"
-msgstr "обновление ссылок запрещено в изолированном окружении"
-
-#: refs.c:2070 refs.c:2100
-#, c-format
-msgid "'%s' exists; cannot create '%s'"
-msgstr ""
-
-#: refs.c:2076 refs.c:2111
-#, c-format
-msgid "cannot process '%s' and '%s' at the same time"
-msgstr ""
-
-#: refs/files-backend.c:1234
-#, c-format
-msgid "could not remove reference %s"
-msgstr "не удалось удалить ссылки %s"
-
-#: refs/files-backend.c:1248 refs/packed-backend.c:1532
-#: refs/packed-backend.c:1542
-#, c-format
-msgid "could not delete reference %s: %s"
-msgstr "не удалось удалить ссылку %s: %s"
-
-#: refs/files-backend.c:1251 refs/packed-backend.c:1545
-#, c-format
-msgid "could not delete references: %s"
-msgstr "не удалось удалить ссылки: %s"
-
-#: refspec.c:137
-#, c-format
-msgid "invalid refspec '%s'"
-msgstr ""
+msgid "could not read '%s'."
+msgstr "не удалось прочитать «%s»."
 
-#: ref-filter.c:39 wt-status.c:1909
+#: ref-filter.c:42 wt-status.c:1973
 msgid "gone"
 msgstr "исчез"
 
-#: ref-filter.c:40
+#: ref-filter.c:43
 #, c-format
 msgid "ahead %d"
 msgstr "впереди %d"
 
-#: ref-filter.c:41
+#: ref-filter.c:44
 #, c-format
 msgid "behind %d"
 msgstr "позади %d"
 
-#: ref-filter.c:42
+#: ref-filter.c:45
 #, c-format
 msgid "ahead %d, behind %d"
 msgstr "впереди %d, позади %d"
 
-#: ref-filter.c:138
+#: ref-filter.c:169
 #, c-format
 msgid "expected format: %%(color:<color>)"
 msgstr "ожидаемый формат: %%(color:<color>)"
 
-#: ref-filter.c:140
+#: ref-filter.c:171
 #, c-format
 msgid "unrecognized color: %%(color:%s)"
 msgstr "неопознанный цвет: %%(color:%s)"
 
-#: ref-filter.c:162
+#: ref-filter.c:193
 #, c-format
 msgid "Integer value expected refname:lstrip=%s"
 msgstr "Ожидается целочисленное значение refname:lstrip=%s"
 
-#: ref-filter.c:166
+#: ref-filter.c:197
 #, c-format
 msgid "Integer value expected refname:rstrip=%s"
 msgstr "Ожидается целочисленное значение refname:rstrip=%s"
 
-#: ref-filter.c:168
+#: ref-filter.c:199
 #, c-format
 msgid "unrecognized %%(%s) argument: %s"
 msgstr "неопознанный аргумент %%(%s): %s"
 
-#: ref-filter.c:223
+#: ref-filter.c:254
 #, c-format
 msgid "%%(objecttype) does not take arguments"
 msgstr ""
 
-#: ref-filter.c:245
+#: ref-filter.c:276
 #, c-format
 msgid "unrecognized %%(objectsize) argument: %s"
 msgstr ""
 
-#: ref-filter.c:253
+#: ref-filter.c:284
 #, c-format
 msgid "%%(deltabase) does not take arguments"
 msgstr ""
 
-#: ref-filter.c:265
+#: ref-filter.c:296
 #, c-format
 msgid "%%(body) does not take arguments"
 msgstr "параметр %%(body) не принимает аргументы"
 
-#: ref-filter.c:274
+#: ref-filter.c:309
 #, c-format
-msgid "%%(subject) does not take arguments"
-msgstr "параметр %%(subject) не принимает аргументы"
+msgid "unrecognized %%(subject) argument: %s"
+msgstr ""
 
-#: ref-filter.c:296
+#: ref-filter.c:330
 #, c-format
 msgid "unknown %%(trailers) argument: %s"
 msgstr "неизвестный аргумент для %%(trailers): %s"
 
-#: ref-filter.c:325
+#: ref-filter.c:363
 #, c-format
 msgid "positive value expected contents:lines=%s"
 msgstr "положительное значение ожидает contents:lines=%s"
 
-#: ref-filter.c:327
+#: ref-filter.c:365
 #, c-format
 msgid "unrecognized %%(contents) argument: %s"
 msgstr "неопознанный аргумент %%(contents): %s"
 
-#: ref-filter.c:342
+#: ref-filter.c:380
+#, c-format
+msgid "positive value expected '%s' in %%(%s)"
+msgstr ""
+
+#: ref-filter.c:384
 #, c-format
-msgid "positive value expected objectname:short=%s"
-msgstr "ожидается положительное значение objectname:short=%s"
+msgid "unrecognized argument '%s' in %%(%s)"
+msgstr ""
 
-#: ref-filter.c:346
+#: ref-filter.c:398
 #, c-format
-msgid "unrecognized %%(objectname) argument: %s"
-msgstr "неопознанный аргумент %%(objectname): %s"
+msgid "unrecognized email option: %s"
+msgstr ""
 
-#: ref-filter.c:376
+#: ref-filter.c:428
 #, c-format
 msgid "expected format: %%(align:<width>,<position>)"
 msgstr "ожидаемый формат: %%(align:<width>,<position>)"
 
-#: ref-filter.c:388
+#: ref-filter.c:440
 #, c-format
 msgid "unrecognized position:%s"
 msgstr "неопознанная позиция:%s"
 
-#: ref-filter.c:395
+#: ref-filter.c:447
 #, c-format
 msgid "unrecognized width:%s"
 msgstr "неопознанная ширина:%s"
 
-#: ref-filter.c:404
+#: ref-filter.c:456
 #, c-format
 msgid "unrecognized %%(align) argument: %s"
 msgstr "неопознанный аргумент %%(align): %s"
 
-#: ref-filter.c:412
+#: ref-filter.c:464
 #, c-format
 msgid "positive width expected with the %%(align) atom"
 msgstr "ожидается положительная ширина с указанием частицы %%(align)"
 
-#: ref-filter.c:430
+#: ref-filter.c:482
 #, c-format
 msgid "unrecognized %%(if) argument: %s"
 msgstr "неопознанный аргумент %%(if): %s"
 
-#: ref-filter.c:531
+#: ref-filter.c:584
 #, c-format
 msgid "malformed field name: %.*s"
 msgstr "неправильное имя поля: %.*s"
 
-#: ref-filter.c:558
+#: ref-filter.c:611
 #, c-format
 msgid "unknown field name: %.*s"
 msgstr "неизвестное имя поля: %.*s"
 
-#: ref-filter.c:562
+#: ref-filter.c:615
 #, c-format
 msgid ""
 "not a git repository, but the field '%.*s' requires access to object data"
 msgstr ""
 
-#: ref-filter.c:686
+#: ref-filter.c:739
 #, c-format
 msgid "format: %%(if) atom used without a %%(then) atom"
 msgstr "формат: частица %%(if) использована без частицы %%(then)"
 
-#: ref-filter.c:749
+#: ref-filter.c:802
 #, c-format
 msgid "format: %%(then) atom used without an %%(if) atom"
 msgstr "формат: частица %%(then) использована без частицы %%(if)"
 
-#: ref-filter.c:751
+#: ref-filter.c:804
 #, c-format
 msgid "format: %%(then) atom used more than once"
 msgstr "формат: частица %%(then) использована более одного раза"
 
-#: ref-filter.c:753
+#: ref-filter.c:806
 #, c-format
 msgid "format: %%(then) atom used after %%(else)"
 msgstr "формат: частица %%(then) использована после %%(else)"
 
-#: ref-filter.c:781
+#: ref-filter.c:834
 #, c-format
 msgid "format: %%(else) atom used without an %%(if) atom"
 msgstr "формат: частица %%(else) использована без частицы %%(if)"
 
-#: ref-filter.c:783
+#: ref-filter.c:836
 #, c-format
 msgid "format: %%(else) atom used without a %%(then) atom"
 msgstr "формат: частица %%(else) использована без частицы %%(then)"
 
-#: ref-filter.c:785
+#: ref-filter.c:838
 #, c-format
 msgid "format: %%(else) atom used more than once"
 msgstr "формат: частица %%(else) использована более одного раза"
 
-#: ref-filter.c:800
+#: ref-filter.c:853
 #, c-format
 msgid "format: %%(end) atom used without corresponding atom"
 msgstr "формат: частица %%(end) использована без соответствующей частицы"
 
-#: ref-filter.c:857
+#: ref-filter.c:910
 #, c-format
 msgid "malformed format string %s"
 msgstr "неправильная строка формата %s"
 
-#: ref-filter.c:1453
-#, c-format
-msgid "(no branch, rebasing %s)"
-msgstr "(нет ветки, перемещение %s)"
-
-#: ref-filter.c:1456
-#, c-format
-msgid "(no branch, rebasing detached HEAD %s)"
-msgstr "(нет ветки перемещение отделённого HEAD %s)"
-
-#: ref-filter.c:1459
+#: ref-filter.c:1549
 #, c-format
-msgid "(no branch, bisect started on %s)"
-msgstr "(нет ветки, двоичный поиск начат на %s)"
+msgid "no branch, rebasing %s"
+msgstr ""
 
-#. TRANSLATORS: make sure this matches "HEAD
-#. detached at " in wt-status.c
-#: ref-filter.c:1467
+#: ref-filter.c:1552
 #, c-format
-msgid "(HEAD detached at %s)"
-msgstr "(HEAD отделён на %s)"
+msgid "no branch, rebasing detached HEAD %s"
+msgstr ""
 
-#. TRANSLATORS: make sure this matches "HEAD
-#. detached from " in wt-status.c
-#: ref-filter.c:1474
+#: ref-filter.c:1555
 #, c-format
-msgid "(HEAD detached from %s)"
-msgstr "(HEAD отделён начиная с %s)"
+msgid "no branch, bisect started on %s"
+msgstr ""
 
-#: ref-filter.c:1478
-msgid "(no branch)"
-msgstr "(нет ветки)"
+#: ref-filter.c:1565
+msgid "no branch"
+msgstr ""
 
-#: ref-filter.c:1512 ref-filter.c:1669
+#: ref-filter.c:1599 ref-filter.c:1808
 #, c-format
 msgid "missing object %s for %s"
 msgstr "не найден объект %s для %s"
 
-#: ref-filter.c:1522
+#: ref-filter.c:1609
 #, c-format
 msgid "parse_object_buffer failed on %s for %s"
 msgstr "сбой при выполнении parse_object_buffer на %s для %s"
 
-#: ref-filter.c:1888
+#: ref-filter.c:2062
 #, c-format
 msgid "malformed object at '%s'"
 msgstr "Повреждённый объект «%s»"
 
-#: ref-filter.c:1977
+#: ref-filter.c:2151
 #, c-format
 msgid "ignoring ref with broken name %s"
 msgstr "игнорирую ссылку с неправильным именем %s"
 
-#: ref-filter.c:2263
+#: ref-filter.c:2156 refs.c:676
+#, c-format
+msgid "ignoring broken ref %s"
+msgstr "игнорирую неправильную ссылку %s"
+
+#: ref-filter.c:2472
+#, c-format
+msgid "format: %%(end) atom missing"
+msgstr "format: пропущена частица %%(end)"
+
+#: ref-filter.c:2571
+#, c-format
+msgid "malformed object name %s"
+msgstr "неправильное имя объекта %s"
+
+#: ref-filter.c:2576
+#, c-format
+msgid "option `%s' must point to a commit"
+msgstr ""
+
+#: refs.c:264
+#, c-format
+msgid "%s does not point to a valid object!"
+msgstr ""
+
+#: refs.c:566
+#, c-format
+msgid ""
+"Using '%s' as the name for the initial branch. This default branch name\n"
+"is subject to change. To configure the initial branch name to use in all\n"
+"of your new repositories, which will suppress this warning, call:\n"
+"\n"
+"\tgit config --global init.defaultBranch <name>\n"
+"\n"
+"Names commonly chosen instead of 'master' are 'main', 'trunk' and\n"
+"'development'. The just-created branch can be renamed via this command:\n"
+"\n"
+"\tgit branch -m <name>\n"
+msgstr ""
+
+#: refs.c:588
+#, c-format
+msgid "could not retrieve `%s`"
+msgstr ""
+
+#: refs.c:598
+#, c-format
+msgid "invalid branch name: %s = %s"
+msgstr ""
+
+#: refs.c:674
+#, c-format
+msgid "ignoring dangling symref %s"
+msgstr ""
+
+#: refs.c:911
+#, c-format
+msgid "log for ref %s has gap after %s"
+msgstr ""
+
+#: refs.c:917
+#, c-format
+msgid "log for ref %s unexpectedly ended on %s"
+msgstr ""
+
+#: refs.c:976
+#, c-format
+msgid "log for %s is empty"
+msgstr ""
+
+#: refs.c:1068
+#, c-format
+msgid "refusing to update ref with bad name '%s'"
+msgstr ""
+
+#: refs.c:1139
+#, c-format
+msgid "update_ref failed for ref '%s': %s"
+msgstr ""
+
+#: refs.c:1963
+#, c-format
+msgid "multiple updates for ref '%s' not allowed"
+msgstr ""
+
+#: refs.c:2043
+msgid "ref updates forbidden inside quarantine environment"
+msgstr "обновление ссылок запрещено в изолированном окружении"
+
+#: refs.c:2054
+msgid "ref updates aborted by hook"
+msgstr ""
+
+#: refs.c:2154 refs.c:2184
 #, c-format
-msgid "format: %%(end) atom missing"
-msgstr "format: пропущена частица %%(end)"
+msgid "'%s' exists; cannot create '%s'"
+msgstr ""
 
-#: ref-filter.c:2363
+#: refs.c:2160 refs.c:2195
 #, c-format
-msgid "option `%s' is incompatible with --merged"
+msgid "cannot process '%s' and '%s' at the same time"
 msgstr ""
 
-#: ref-filter.c:2366
+#: refs/files-backend.c:1228
 #, c-format
-msgid "option `%s' is incompatible with --no-merged"
-msgstr ""
+msgid "could not remove reference %s"
+msgstr "не удалось удалить ссылки %s"
 
-#: ref-filter.c:2376
+#: refs/files-backend.c:1242 refs/packed-backend.c:1542
+#: refs/packed-backend.c:1552
 #, c-format
-msgid "malformed object name %s"
-msgstr "неправильное имя объекта %s"
+msgid "could not delete reference %s: %s"
+msgstr "не удалось удалить ссылку %s: %s"
 
-#: ref-filter.c:2381
+#: refs/files-backend.c:1245 refs/packed-backend.c:1555
 #, c-format
-msgid "option `%s' must point to a commit"
+msgid "could not delete references: %s"
+msgstr "не удалось удалить ссылки: %s"
+
+#: refspec.c:170
+#, c-format
+msgid "invalid refspec '%s'"
 msgstr ""
 
-#: remote.c:363
+#: remote.c:351
 #, c-format
 msgid "config remote shorthand cannot begin with '/': %s"
 msgstr ""
 
-#: remote.c:410
+#: remote.c:399
 msgid "more than one receivepack given, using the first"
 msgstr ""
 
-#: remote.c:418
+#: remote.c:407
 msgid "more than one uploadpack given, using the first"
 msgstr ""
 
-#: remote.c:608
+#: remote.c:590
 #, c-format
 msgid "Cannot fetch both %s and %s to %s"
 msgstr "Нельзя извлечь одновременно %s и %s в %s"
 
-#: remote.c:612
+#: remote.c:594
 #, c-format
 msgid "%s usually tracks %s, not %s"
 msgstr "%s обычно отслеживает %s, а не %s"
 
-#: remote.c:616
+#: remote.c:598
 #, c-format
 msgid "%s tracks both %s and %s"
 msgstr "%s отслеживает и %s и %s"
 
-#: remote.c:684
+#: remote.c:666
 #, c-format
 msgid "key '%s' of pattern had no '*'"
 msgstr ""
 
-#: remote.c:694
+#: remote.c:676
 #, c-format
 msgid "value '%s' of pattern has no '*'"
 msgstr ""
 
-#: remote.c:1000
+#: remote.c:1073
 #, c-format
 msgid "src refspec %s does not match any"
 msgstr ""
 
-#: remote.c:1005
+#: remote.c:1078
 #, c-format
 msgid "src refspec %s matches more than one"
 msgstr ""
@@ -5010,7 +5939,7 @@ msgstr ""
 #. TRANSLATORS: "matches '%s'%" is the <dst> part of "git push
 #. <remote> <src>:<dst>" push, and "being pushed ('%s')" is
 #. the <src>.
-#: remote.c:1020
+#: remote.c:1093
 #, c-format
 msgid ""
 "The destination you provided is not a full refname (i.e.,\n"
@@ -5024,7 +5953,7 @@ msgid ""
 "Neither worked, so we gave up. You must fully qualify the ref."
 msgstr ""
 
-#: remote.c:1040
+#: remote.c:1113
 #, c-format
 msgid ""
 "The <src> part of the refspec is a commit object.\n"
@@ -5032,7 +5961,7 @@ msgid ""
 "'%s:refs/heads/%s'?"
 msgstr ""
 
-#: remote.c:1045
+#: remote.c:1118
 #, c-format
 msgid ""
 "The <src> part of the refspec is a tag object.\n"
@@ -5040,7 +5969,7 @@ msgid ""
 "'%s:refs/tags/%s'?"
 msgstr ""
 
-#: remote.c:1050
+#: remote.c:1123
 #, c-format
 msgid ""
 "The <src> part of the refspec is a tree object.\n"
@@ -5048,7 +5977,7 @@ msgid ""
 "'%s:refs/tags/%s'?"
 msgstr ""
 
-#: remote.c:1055
+#: remote.c:1128
 #, c-format
 msgid ""
 "The <src> part of the refspec is a blob object.\n"
@@ -5056,103 +5985,103 @@ msgid ""
 "'%s:refs/tags/%s'?"
 msgstr ""
 
-#: remote.c:1091
+#: remote.c:1164
 #, c-format
 msgid "%s cannot be resolved to branch"
 msgstr ""
 
-#: remote.c:1102
+#: remote.c:1175
 #, c-format
 msgid "unable to delete '%s': remote ref does not exist"
 msgstr ""
 
-#: remote.c:1114
+#: remote.c:1187
 #, c-format
 msgid "dst refspec %s matches more than one"
 msgstr ""
 
-#: remote.c:1121
+#: remote.c:1194
 #, c-format
 msgid "dst ref %s receives from more than one src"
 msgstr ""
 
-#: remote.c:1624 remote.c:1725
+#: remote.c:1714 remote.c:1815
 msgid "HEAD does not point to a branch"
 msgstr "HEAD не указывает на ветку"
 
-#: remote.c:1633
+#: remote.c:1723
 #, c-format
 msgid "no such branch: '%s'"
 msgstr "нет такой ветки: «%s»"
 
-#: remote.c:1636
+#: remote.c:1726
 #, c-format
 msgid "no upstream configured for branch '%s'"
 msgstr "вышестоящая ветка не настроена для ветки «%s»"
 
-#: remote.c:1642
+#: remote.c:1732
 #, c-format
 msgid "upstream branch '%s' not stored as a remote-tracking branch"
 msgstr "вышестоящая ветка «%s» не сохранена как отслеживаемая ветка"
 
-#: remote.c:1657
+#: remote.c:1747
 #, c-format
 msgid "push destination '%s' on remote '%s' has no local tracking branch"
 msgstr "назначение для отправки «%s» на внешнем сервере «%s» не имеет локальной отслеживаемой ветки"
 
-#: remote.c:1669
+#: remote.c:1759
 #, c-format
 msgid "branch '%s' has no remote for pushing"
 msgstr "ветка «%s» не имеет внешнего сервера для отправки"
 
-#: remote.c:1679
+#: remote.c:1769
 #, c-format
 msgid "push refspecs for '%s' do not include '%s'"
 msgstr "спецификаторы пути для отправки «%s» не включают в себя «%s»"
 
-#: remote.c:1692
+#: remote.c:1782
 msgid "push has no destination (push.default is 'nothing')"
 msgstr "отправка не имеет точки назначения (push.default выставлен в «nothing»)"
 
-#: remote.c:1714
+#: remote.c:1804
 msgid "cannot resolve 'simple' push to a single destination"
 msgstr "не удалось выполнить «simple» отправку в единственную точку назначения"
 
-#: remote.c:1840
+#: remote.c:1933
 #, c-format
 msgid "couldn't find remote ref %s"
 msgstr ""
 
-#: remote.c:1853
+#: remote.c:1946
 #, c-format
 msgid "* Ignoring funny ref '%s' locally"
 msgstr ""
 
-#: remote.c:2016
+#: remote.c:2109
 #, c-format
 msgid "Your branch is based on '%s', but the upstream is gone.\n"
 msgstr "Ваша ветка базируется на «%s», но вышестоящий репозиторий исчез.\n"
 
-#: remote.c:2020
+#: remote.c:2113
 msgid "  (use \"git branch --unset-upstream\" to fixup)\n"
-msgstr "(для исправления запустите «git branch --unset-upstream»)\n"
+msgstr " (для исправления запустите «git branch --unset-upstream»)\n"
 
-#: remote.c:2023
+#: remote.c:2116
 #, c-format
 msgid "Your branch is up to date with '%s'.\n"
 msgstr "Ваша ветка обновлена в соответствии с «%s».\n"
 
-#: remote.c:2027
+#: remote.c:2120
 #, c-format
 msgid "Your branch and '%s' refer to different commits.\n"
 msgstr "Ваша ветка и «%s» указывают на разные коммиты.\n"
 
-#: remote.c:2030
+#: remote.c:2123
 #, c-format
 msgid "  (use \"%s\" for details)\n"
 msgstr "  (используйте «%s» для просмотра описания)\n"
 
-#: remote.c:2034
+#: remote.c:2127
 #, 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"
@@ -5161,11 +6090,11 @@ msgstr[1] "Ваша ветка опережает «%s» на %d коммита.
 msgstr[2] "Ваша ветка опережает «%s» на %d коммитов.\n"
 msgstr[3] "Ваша ветка опережает «%s» на %d коммитов.\n"
 
-#: remote.c:2040
+#: remote.c:2133
 msgid "  (use \"git push\" to publish your local commits)\n"
 msgstr "  (используйте «git push», чтобы опубликовать ваши локальные коммиты)\n"
 
-#: remote.c:2043
+#: remote.c:2136
 #, c-format
 msgid "Your branch is behind '%s' by %d commit, and can be fast-forwarded.\n"
 msgid_plural ""
@@ -5175,11 +6104,11 @@ msgstr[1] "Ваша ветка отстает от «%s» на %d коммита
 msgstr[2] "Ваша ветка отстает от «%s» на %d коммитов и может быть перемотана вперед.\n"
 msgstr[3] "Ваша ветка отстает от «%s» на %d коммитов и может быть перемотана вперед.\n"
 
-#: remote.c:2051
+#: remote.c:2144
 msgid "  (use \"git pull\" to update your local branch)\n"
 msgstr "  (используйте «git pull», чтобы обновить вашу локальную ветку)\n"
 
-#: remote.c:2054
+#: remote.c:2147
 #, c-format
 msgid ""
 "Your branch and '%s' have diverged,\n"
@@ -5192,11 +6121,11 @@ msgstr[1] "Ваша ветка и «%s» разделились\nи теперь
 msgstr[2] "Ваша ветка и «%s» разделились\nи теперь имеют %d и %d разных коммитов в каждой соответственно.\n"
 msgstr[3] "Ваша ветка и «%s» разделились\nи теперь имеют %d и %d разных коммитов в каждой соответственно.\n"
 
-#: remote.c:2064
+#: remote.c:2157
 msgid "  (use \"git pull\" to merge the remote branch into yours)\n"
 msgstr "  (используйте «git pull», чтобы слить внешнюю ветку в вашу)\n"
 
-#: remote.c:2247
+#: remote.c:2349
 #, c-format
 msgid "cannot parse expected object name '%s'"
 msgstr ""
@@ -5211,7 +6140,7 @@ msgstr ""
 msgid "duplicate replace ref: %s"
 msgstr ""
 
-#: replace-object.c:73
+#: replace-object.c:82
 #, c-format
 msgid "replace depth too high for object %s"
 msgstr ""
@@ -5274,8 +6203,8 @@ msgstr ""
 msgid "Recorded preimage for '%s'"
 msgstr ""
 
-#: rerere.c:881 submodule.c:2024 builtin/log.c:1750
-#: builtin/submodule--helper.c:1417 builtin/submodule--helper.c:1427
+#: rerere.c:881 submodule.c:2082 builtin/log.c:1992
+#: builtin/submodule--helper.c:1878 builtin/submodule--helper.c:1890
 #, c-format
 msgid "could not create directory '%s'"
 msgstr "не удалось создать каталог «%s»"
@@ -5309,223 +6238,240 @@ msgstr ""
 msgid "unable to open rr-cache directory"
 msgstr ""
 
-#: revision.c:2476
+#: reset.c:42
+msgid "could not determine HEAD revision"
+msgstr ""
+
+#: reset.c:70 reset.c:76 sequencer.c:3460
+#, c-format
+msgid "failed to find tree of %s"
+msgstr "не удалось найти дерево для %s"
+
+#: revision.c:2336
+msgid "--unpacked=<packfile> no longer supported"
+msgstr ""
+
+#: revision.c:2356
+#, c-format
+msgid "unknown value for --diff-merges: %s"
+msgstr ""
+
+#: revision.c:2694
 msgid "your current branch appears to be broken"
 msgstr "похоже, ваша текущая ветка повреждена"
 
-#: revision.c:2479
+#: revision.c:2697
 #, c-format
 msgid "your current branch '%s' does not have any commits yet"
 msgstr "ваша текущая ветка «%s» еще не содержит ни одного коммита"
 
-#: revision.c:2679
-msgid "--first-parent is incompatible with --bisect"
-msgstr "опцию --first-parent нельзя использовать одновременно с --bisect"
-
-#: revision.c:2683
+#: revision.c:2907
 msgid "-L does not yet support diff formats besides -p and -s"
 msgstr ""
 
-#: run-command.c:763
+#: run-command.c:764
 msgid "open /dev/null failed"
 msgstr "сбой открытия /dev/null"
 
-#: run-command.c:1269
+#: run-command.c:1271
 #, c-format
 msgid "cannot create async thread: %s"
 msgstr ""
 
-#: run-command.c:1333
+#: run-command.c:1335
 #, c-format
 msgid ""
 "The '%s' hook was ignored because it's not set as executable.\n"
 "You can disable this warning with `git config advice.ignoredHook false`."
 msgstr "Перехватчик «%s» был проигнорирован, так как он не установлен как исполняемый.\nВы можете отключить это предупреждение с помощью команды «git config advice.ignoredHook false»."
 
-#: send-pack.c:141
+#: send-pack.c:146
 msgid "unexpected flush packet while reading remote unpack status"
 msgstr "неожиданный пустой пакет при чтении статуса внешней распаковки"
 
-#: send-pack.c:143
+#: send-pack.c:148
 #, c-format
 msgid "unable to parse remote unpack status: %s"
 msgstr "не удалось разобрать статус внешней распаковки: %s"
 
-#: send-pack.c:145
+#: send-pack.c:150
 #, c-format
 msgid "remote unpack failed: %s"
 msgstr "сбой при внешней распаковке %s"
 
-#: send-pack.c:306
+#: send-pack.c:374
 msgid "failed to sign the push certificate"
 msgstr "сбой подписания сертификата отправки"
 
-#: send-pack.c:420
+#: send-pack.c:467
+msgid "the receiving end does not support this repository's hash algorithm"
+msgstr ""
+
+#: send-pack.c:476
 msgid "the receiving end does not support --signed push"
 msgstr "принимающая сторона не поддерживает отправку с опцией --signed"
 
-#: send-pack.c:422
+#: send-pack.c:478
 msgid ""
 "not sending a push certificate since the receiving end does not support "
 "--signed push"
 msgstr "не отправляем сертификат для отправки, так как принимающая сторона не поддерживает отправку с опцией --signed"
 
-#: send-pack.c:434
+#: send-pack.c:490
 msgid "the receiving end does not support --atomic push"
 msgstr "принимающая сторона не поддерживает отправку с опцией --atomic"
 
-#: send-pack.c:439
+#: send-pack.c:495
 msgid "the receiving end does not support push options"
 msgstr "принимающая сторона не поддерживает отправку с опциями"
 
-#: sequencer.c:187
+#: sequencer.c:195
 #, c-format
 msgid "invalid commit message cleanup mode '%s'"
 msgstr "неправильный режим очистки сообщения коммита «%s»"
 
-#: sequencer.c:292
+#: sequencer.c:323
 #, c-format
 msgid "could not delete '%s'"
 msgstr "не удалось удалить «%s»"
 
-#: sequencer.c:318
+#: sequencer.c:343 builtin/rebase.c:755 builtin/rebase.c:1596 builtin/rm.c:385
+#, c-format
+msgid "could not remove '%s'"
+msgstr "не удалось удалить «%s»"
+
+#: sequencer.c:353
 msgid "revert"
 msgstr "обратить изменения"
 
-#: sequencer.c:320
+#: sequencer.c:355
 msgid "cherry-pick"
 msgstr "копировать коммит"
 
-#: sequencer.c:322
-msgid "rebase -i"
-msgstr "rebase -i"
+#: sequencer.c:357
+msgid "rebase"
+msgstr ""
 
-#: sequencer.c:324
+#: sequencer.c:359
 #, c-format
 msgid "unknown action: %d"
 msgstr ""
 
-#: sequencer.c:382
+#: sequencer.c:418
 msgid ""
 "after resolving the conflicts, mark the corrected paths\n"
 "with 'git add <paths>' or 'git rm <paths>'"
 msgstr "после разрешения конфликтов, пометьте исправленные пути\nс помощью «git add <пути>» или «git rm <пути>»"
 
-#: sequencer.c:385
+#: sequencer.c:421
 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 "после разрешения конфликтов, пометьте исправленные пути\nс помощью «git add <пути>» или «git rm <пути>»\nи сделайте коммит с помощью «git commit»"
 
-#: sequencer.c:398 sequencer.c:2801
+#: sequencer.c:434 sequencer.c:3062
 #, c-format
 msgid "could not lock '%s'"
 msgstr "не удалось заблокировать «%s»"
 
-#: sequencer.c:405
+#: sequencer.c:436 sequencer.c:2861 sequencer.c:3066 sequencer.c:3080
+#: sequencer.c:3337 sequencer.c:5326 strbuf.c:1168 wrapper.c:631
+#, c-format
+msgid "could not write to '%s'"
+msgstr "не удалось записать в «%s»"
+
+#: sequencer.c:441
 #, c-format
 msgid "could not write eol to '%s'"
 msgstr "не удалось записать eol в «%s»"
 
-#: sequencer.c:410 sequencer.c:2684 sequencer.c:2807 sequencer.c:2821
-#: sequencer.c:3084
+#: sequencer.c:446 sequencer.c:2866 sequencer.c:3068 sequencer.c:3082
+#: sequencer.c:3345
 #, c-format
 msgid "failed to finalize '%s'"
 msgstr "не удалось завершить «%s»"
 
-#: sequencer.c:433 sequencer.c:978 sequencer.c:1652 sequencer.c:2704
-#: sequencer.c:3066 sequencer.c:3175 builtin/am.c:245 builtin/commit.c:760
-#: builtin/merge.c:1115 builtin/rebase.c:567
-#, c-format
-msgid "could not read '%s'"
-msgstr "не удалось прочитать «%s»"
-
-#: sequencer.c:459
+#: sequencer.c:485
 #, c-format
 msgid "your local changes would be overwritten by %s."
 msgstr "ваши локальные изменения будут перезаписаны %s."
 
-#: sequencer.c:463
+#: sequencer.c:489
 msgid "commit your changes or stash them to proceed."
 msgstr "для продолжения закоммитьте ваши изменения или спрячьте их."
 
-#: sequencer.c:495
+#: sequencer.c:521
 #, c-format
 msgid "%s: fast-forward"
 msgstr "%s: перемотка вперед"
 
-#: sequencer.c:534 builtin/tag.c:555
+#: sequencer.c:560 builtin/tag.c:566
 #, c-format
 msgid "Invalid cleanup mode %s"
 msgstr "Неправильное значение режима очистки %s"
 
 #. TRANSLATORS: %s will be "revert", "cherry-pick" or
-#. "rebase -i".
-#: sequencer.c:629
+#. "rebase".
+#: sequencer.c:670
 #, c-format
 msgid "%s: Unable to write new index file"
 msgstr "%s: Не удалось записать файл индекса"
 
-#: sequencer.c:646
+#: sequencer.c:687
 msgid "unable to update cache tree"
 msgstr "не удалось обновить дерево кэша"
 
-#: sequencer.c:660
+#: sequencer.c:701
 msgid "could not resolve HEAD commit"
 msgstr "не удалось распознать HEAD коммит"
 
-#: sequencer.c:740
+#: sequencer.c:781
 #, c-format
 msgid "no key present in '%.*s'"
 msgstr ""
 
-#: sequencer.c:751
+#: sequencer.c:792
 #, c-format
 msgid "unable to dequote value of '%s'"
 msgstr ""
 
-#: sequencer.c:788 wrapper.c:227 wrapper.c:397 builtin/am.c:706
-#: builtin/am.c:798 builtin/merge.c:1112 builtin/rebase.c:1035
+#: sequencer.c:829 wrapper.c:201 wrapper.c:371 builtin/am.c:710
+#: builtin/am.c:802 builtin/merge.c:1135 builtin/rebase.c:908
 #, c-format
 msgid "could not open '%s' for reading"
 msgstr "не удалось открыть «%s» для чтения"
 
-#: sequencer.c:798
+#: sequencer.c:839
 msgid "'GIT_AUTHOR_NAME' already given"
 msgstr ""
 
-#: sequencer.c:803
+#: sequencer.c:844
 msgid "'GIT_AUTHOR_EMAIL' already given"
 msgstr ""
 
-#: sequencer.c:808
+#: sequencer.c:849
 msgid "'GIT_AUTHOR_DATE' already given"
 msgstr ""
 
-#: sequencer.c:812
+#: sequencer.c:853
 #, c-format
 msgid "unknown variable '%s'"
 msgstr ""
 
-#: sequencer.c:817
+#: sequencer.c:858
 msgid "missing 'GIT_AUTHOR_NAME'"
 msgstr ""
 
-#: sequencer.c:819
+#: sequencer.c:860
 msgid "missing 'GIT_AUTHOR_EMAIL'"
 msgstr ""
 
-#: sequencer.c:821
+#: sequencer.c:862
 msgid "missing 'GIT_AUTHOR_DATE'"
 msgstr ""
 
-#: sequencer.c:881
-#, c-format
-msgid "invalid date format '%s' in '%s'"
-msgstr ""
-
-#: sequencer.c:898
+#: sequencer.c:927
 #, c-format
 msgid ""
 "you have staged changes in your working tree\n"
@@ -5542,15 +6488,11 @@ msgid ""
 "  git rebase --continue\n"
 msgstr "у вас имеются проиндексированные изменения в рабочем каталоге. Если эти изменения должны быть объеденены с предыдущим коммитом, то запустите:\n\n  git commit --amend %s\n\nЕсли же они должны быть помещены в новый коммит, то запустите:\n\n  git commit %s\n\nВ любом случае, после того как вы закончите, продолжить перемещение можно выполнив:\n\n  git rebase --continue\n"
 
-#: sequencer.c:992
-msgid "writing root commit"
-msgstr "запись коневого коммита"
-
-#: sequencer.c:1213
+#: sequencer.c:1208
 msgid "'prepare-commit-msg' hook failed"
 msgstr "ошибка при вызове перехватчика «prepare-commit-msg»"
 
-#: sequencer.c:1220
+#: sequencer.c:1214
 msgid ""
 "Your name and email address were configured automatically based\n"
 "on your username and hostname. Please check that they are accurate.\n"
@@ -5565,7 +6507,7 @@ msgid ""
 "    git commit --amend --reset-author\n"
 msgstr "Ваше имя или электронная почта настроены автоматически на основании вашего\nимени пользователя и имени машины. Пожалуйста, проверьте, что они \nопределены правильно.\nВы можете отключить это уведомление установив их напрямую. Запустите следующую\nкоманду и следуйте инструкциям вашего текстового редактора, для\nредактирования вашего файла конфигурации:\n\n    git config --global --edit\n\nПосле этого, изменить авторство этой коммита можно будет с помощью команды:\n\n    git commit --amend --reset-author\n"
 
-#: sequencer.c:1233
+#: sequencer.c:1227
 msgid ""
 "Your name and email address were configured automatically based\n"
 "on your username and hostname. Please check that they are accurate.\n"
@@ -5579,305 +6521,354 @@ msgid ""
 "    git commit --amend --reset-author\n"
 msgstr "Ваше имя или электронная почта настроены автоматически на основании вашего\nимени пользователя и имени машины. Пожалуйста, проверьте, что они \nопределены правильно.\nВы можете отключить это уведомление установив их напрямую:\n\n    git config --global user.name \"Ваше Имя\"\n    git config --global user.email you@example.com\n\nПосле этого, изменить авторство этой коммита можно будет с помощью команды:\n\n    git commit --amend --reset-author\n"
 
-#: sequencer.c:1275
+#: sequencer.c:1269
 msgid "couldn't look up newly created commit"
 msgstr "нельзя запросить новосозданный коммит"
 
-#: sequencer.c:1277
+#: sequencer.c:1271
 msgid "could not parse newly created commit"
 msgstr "нельзя разобрать новосозданный коммит"
 
-#: sequencer.c:1323
+#: sequencer.c:1317
 msgid "unable to resolve HEAD after creating commit"
 msgstr "не удалось найти HEAD после создания коммита"
 
-#: sequencer.c:1325
+#: sequencer.c:1319
 msgid "detached HEAD"
 msgstr "отделённый HEAD"
 
-#: sequencer.c:1329
+#: sequencer.c:1323
 msgid " (root-commit)"
 msgstr " (корневой коммит)"
 
-#: sequencer.c:1350
+#: sequencer.c:1344
 msgid "could not parse HEAD"
 msgstr "не удалось разобрать HEAD"
 
-#: sequencer.c:1352
+#: sequencer.c:1346
 #, c-format
 msgid "HEAD %s is not a commit!"
 msgstr "HEAD %s не является коммитом!"
 
-#: sequencer.c:1356 builtin/commit.c:1551
+#: sequencer.c:1350 sequencer.c:1425 builtin/commit.c:1577
 msgid "could not parse HEAD commit"
 msgstr "не удалось разобрать HEAD коммит"
 
-#: sequencer.c:1408 sequencer.c:2001
+#: sequencer.c:1403 sequencer.c:2100
 msgid "unable to parse commit author"
 msgstr "не удалось разобрать автора коммита"
 
-#: sequencer.c:1418 builtin/am.c:1572 builtin/merge.c:688
+#: sequencer.c:1414 builtin/am.c:1566 builtin/merge.c:701
 msgid "git write-tree failed to write a tree"
 msgstr "git write-tree не удалось записать дерево"
 
-#: sequencer.c:1435 sequencer.c:1496
+#: sequencer.c:1447 sequencer.c:1565
 #, c-format
 msgid "unable to read commit message from '%s'"
 msgstr "не удалось прочитать сообщение коммита из «%s»"
 
-#: sequencer.c:1462 builtin/am.c:1594 builtin/commit.c:1650
-#: builtin/merge.c:882 builtin/merge.c:906
+#: sequencer.c:1476 sequencer.c:1508
+#, c-format
+msgid "invalid author identity '%s'"
+msgstr ""
+
+#: sequencer.c:1482
+msgid "corrupt author: missing date information"
+msgstr ""
+
+#: sequencer.c:1521 builtin/am.c:1593 builtin/commit.c:1678
+#: builtin/merge.c:904 builtin/merge.c:929 t/helper/test-fast-rebase.c:78
 msgid "failed to write commit object"
 msgstr "сбой записи объекта коммита"
 
-#: sequencer.c:1523
+#: sequencer.c:1548 sequencer.c:4283 t/helper/test-fast-rebase.c:198
+#, c-format
+msgid "could not update %s"
+msgstr "не удалось обновить %s"
+
+#: sequencer.c:1597
 #, c-format
 msgid "could not parse commit %s"
 msgstr "не удалось разобрать коммит %s"
 
-#: sequencer.c:1528
+#: sequencer.c:1602
 #, c-format
 msgid "could not parse parent commit %s"
 msgstr "не удалось разобрать родительский коммит %s"
 
-#: sequencer.c:1602 sequencer.c:1712
+#: sequencer.c:1685 sequencer.c:1796
 #, c-format
 msgid "unknown command: %d"
 msgstr "неизвестная команда: %d"
 
-#: sequencer.c:1659 sequencer.c:1684
+#: sequencer.c:1743 sequencer.c:1768
 #, c-format
 msgid "This is a combination of %d commits."
 msgstr "Это объединение %d коммитов."
 
-#: sequencer.c:1669
+#: sequencer.c:1753
 msgid "need a HEAD to fixup"
 msgstr "нужен HEAD для исправления"
 
-#: sequencer.c:1671 sequencer.c:3111
+#: sequencer.c:1755 sequencer.c:3372
 msgid "could not read HEAD"
 msgstr "не удалось прочитать HEAD"
 
-#: sequencer.c:1673
+#: sequencer.c:1757
 msgid "could not read HEAD's commit message"
 msgstr "не удалось прочитать сообщение коммита текущего HEAD"
 
-#: sequencer.c:1679
+#: sequencer.c:1763
 #, c-format
 msgid "cannot write '%s'"
 msgstr "не удалось записать «%s»"
 
-#: sequencer.c:1686 git-rebase--preserve-merges.sh:441
+#: sequencer.c:1770 git-rebase--preserve-merges.sh:486
 msgid "This is the 1st commit message:"
 msgstr "Это 1-е сообщение коммита:"
 
-#: sequencer.c:1694
+#: sequencer.c:1778
 #, c-format
 msgid "could not read commit message of %s"
 msgstr "не удалось прочитать сообщение коммита для %s"
 
-#: sequencer.c:1701
+#: sequencer.c:1785
 #, c-format
 msgid "This is the commit message #%d:"
 msgstr "Это сообщение коммита номер #%d:"
 
-#: sequencer.c:1707
+#: sequencer.c:1791
 #, c-format
 msgid "The commit message #%d will be skipped:"
 msgstr "Сообщение коммита номер #%d будет пропущено:"
 
-#: sequencer.c:1795
+#: sequencer.c:1879
 msgid "your index file is unmerged."
 msgstr "ваш индекс не слит."
 
-#: sequencer.c:1802
+#: sequencer.c:1886
 msgid "cannot fixup root commit"
 msgstr "нельзя исправить корневой коммит"
 
-#: sequencer.c:1821
+#: sequencer.c:1905
 #, c-format
 msgid "commit %s is a merge but no -m option was given."
 msgstr "коммит %s — это коммит-слияние, но опция -m не указана."
 
-#: sequencer.c:1829 sequencer.c:1837
+#: sequencer.c:1913 sequencer.c:1921
 #, c-format
 msgid "commit %s does not have parent %d"
 msgstr "у коммита %s нет предка %d"
 
-#: sequencer.c:1843
+#: sequencer.c:1927
 #, 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:1862
+#: sequencer.c:1946
 #, c-format
 msgid "%s: cannot parse parent commit %s"
 msgstr "%s: не удалось разобрать родительский коммит для %s"
 
-#: sequencer.c:1927
+#: sequencer.c:2011
 #, c-format
 msgid "could not rename '%s' to '%s'"
 msgstr "не удалось переименовать «%s» в «%s»"
 
-#: sequencer.c:1982
+#: sequencer.c:2071
 #, c-format
 msgid "could not revert %s... %s"
 msgstr "не удалось обратить изменения коммита %s… %s"
 
-#: sequencer.c:1983
+#: sequencer.c:2072
 #, c-format
 msgid "could not apply %s... %s"
 msgstr "не удалось применить коммит %s… %s"
 
-#: sequencer.c:2042
+#: sequencer.c:2092
+#, c-format
+msgid "dropping %s %s -- patch contents already upstream\n"
+msgstr ""
+
+#: sequencer.c:2150
 #, c-format
 msgid "git %s: failed to read the index"
 msgstr "git %s: сбой чтения индекса"
 
-#: sequencer.c:2049
+#: sequencer.c:2157
 #, c-format
 msgid "git %s: failed to refresh the index"
 msgstr "git %s: сбой обновления индекса"
 
-#: sequencer.c:2118
+#: sequencer.c:2234
 #, c-format
 msgid "%s does not accept arguments: '%s'"
 msgstr "параметр %s не принимает аргументы: «%s»"
 
-#: sequencer.c:2127
+#: sequencer.c:2243
 #, c-format
 msgid "missing arguments for %s"
 msgstr "пропущены аргументы для %s"
 
-#: sequencer.c:2164
+#: sequencer.c:2274
 #, c-format
-msgid "could not parse '%.*s'"
+msgid "could not parse '%s'"
 msgstr ""
 
-#: sequencer.c:2226
+#: sequencer.c:2335
 #, c-format
 msgid "invalid line %d: %.*s"
 msgstr "неправильная строка %d: %.*s"
 
-#: sequencer.c:2237
+#: sequencer.c:2346
 #, c-format
 msgid "cannot '%s' without a previous commit"
 msgstr "нельзя выполнить «%s» без указания предыдущего коммита"
 
-#: sequencer.c:2285 builtin/rebase.c:153 builtin/rebase.c:178
-#: builtin/rebase.c:204 builtin/rebase.c:229
-#, c-format
-msgid "could not read '%s'."
-msgstr "не удалось прочитать «%s»."
+#: sequencer.c:2432
+msgid "cancelling a cherry picking in progress"
+msgstr ""
 
-#: sequencer.c:2360
+#: sequencer.c:2441
+msgid "cancelling a revert in progress"
+msgstr ""
+
+#: sequencer.c:2485
 msgid "please fix this using 'git rebase --edit-todo'."
 msgstr "пожалуйста исправьте это с помощью «git rebase --edit-todo»."
 
-#: sequencer.c:2362
+#: sequencer.c:2487
 #, c-format
 msgid "unusable instruction sheet: '%s'"
 msgstr "непригодная для использования карта с инструкциями: «%s»"
 
-#: sequencer.c:2367
+#: sequencer.c:2492
 msgid "no commits parsed."
 msgstr "коммиты не разобраны."
 
-#: sequencer.c:2378
+#: sequencer.c:2503
 msgid "cannot cherry-pick during a revert."
 msgstr "нельзя скопировать коммит во время процесса обращения коммита."
 
-#: sequencer.c:2380
+#: sequencer.c:2505
 msgid "cannot revert during a cherry-pick."
 msgstr "нельзя обратить изменения коммита во время копирования коммита."
 
-#: sequencer.c:2462
+#: sequencer.c:2583
 #, c-format
 msgid "invalid value for %s: %s"
 msgstr "неправильное значение %s: %s"
 
-#: sequencer.c:2549
+#: sequencer.c:2690
 msgid "unusable squash-onto"
 msgstr "непригодный для использования уплотнить-над"
 
-#: sequencer.c:2565
+#: sequencer.c:2710
 #, c-format
 msgid "malformed options sheet: '%s'"
 msgstr "испорченная карта с опциями: «%s»"
 
-#: sequencer.c:2648 sequencer.c:4227
+#: sequencer.c:2803 sequencer.c:4636
 msgid "empty commit set passed"
 msgstr "передан пустой набор коммитов"
 
-#: sequencer.c:2656
-msgid "a cherry-pick or revert is already in progress"
-msgstr "копирование или обращение изменений коммита уже выполняются"
+#: sequencer.c:2820
+msgid "revert is already in progress"
+msgstr ""
+
+#: sequencer.c:2822
+#, c-format
+msgid "try \"git revert (--continue | %s--abort | --quit)\""
+msgstr ""
+
+#: sequencer.c:2825
+msgid "cherry-pick is already in progress"
+msgstr ""
 
-#: sequencer.c:2657
-msgid "try \"git cherry-pick (--continue | --quit | --abort)\""
-msgstr "попробуйте «git cherry-pick (--continue | --quit | --abort)»"
+#: sequencer.c:2827
+#, c-format
+msgid "try \"git cherry-pick (--continue | %s--abort | --quit)\""
+msgstr ""
 
-#: sequencer.c:2660
+#: sequencer.c:2841
 #, c-format
 msgid "could not create sequencer directory '%s'"
 msgstr "не удалось создать каталог для указателя следования коммитов «%s»"
 
-#: sequencer.c:2674
+#: sequencer.c:2856
 msgid "could not lock HEAD"
 msgstr "не удалось заблокировать HEAD"
 
-#: sequencer.c:2729 sequencer.c:3979
+#: sequencer.c:2916 sequencer.c:4371
 msgid "no cherry-pick or revert in progress"
 msgstr "копирование или обращение изменений коммита уже выполняются"
 
-#: sequencer.c:2731
+#: sequencer.c:2918 sequencer.c:2929
 msgid "cannot resolve HEAD"
 msgstr "не удалось определить HEAD"
 
-#: sequencer.c:2733 sequencer.c:2768
+#: sequencer.c:2920 sequencer.c:2964
 msgid "cannot abort from a branch yet to be born"
 msgstr "нельзя отменить изменения с ветки, которая еще не создана"
 
-#: sequencer.c:2754 builtin/grep.c:732
+#: sequencer.c:2950 builtin/grep.c:756
 #, c-format
 msgid "cannot open '%s'"
 msgstr "не удалось открыть «%s»"
 
-#: sequencer.c:2756
+#: sequencer.c:2952
 #, c-format
 msgid "cannot read '%s': %s"
 msgstr "не удалось прочитать «%s»: %s"
 
-#: sequencer.c:2757
+#: sequencer.c:2953
 msgid "unexpected end of file"
 msgstr "неожиданный конец файла"
 
-#: sequencer.c:2763
+#: sequencer.c:2959
 #, c-format
 msgid "stored pre-cherry-pick HEAD file '%s' is corrupt"
 msgstr "сохраненный файл с HEAD перед копированием коммита «%s» поврежден"
 
-#: sequencer.c:2774
+#: sequencer.c:2970
 msgid "You seem to have moved HEAD. Not rewinding, check your HEAD!"
 msgstr "Похоже, что вы переместили HEAD. Перемотка не выполняется, проверьте свой указатель HEAD!"
 
-#: sequencer.c:2903 sequencer.c:3894
+#: sequencer.c:3011
+msgid "no revert in progress"
+msgstr ""
+
+#: sequencer.c:3020
+msgid "no cherry-pick in progress"
+msgstr ""
+
+#: sequencer.c:3030
+msgid "failed to skip the commit"
+msgstr ""
+
+#: sequencer.c:3037
+msgid "there is nothing to skip"
+msgstr ""
+
+#: sequencer.c:3040
 #, c-format
-msgid "could not update %s"
-msgstr "не удалось обновить %s"
+msgid ""
+"have you committed already?\n"
+"try \"git %s --continue\""
+msgstr ""
 
-#: sequencer.c:2941 sequencer.c:3874
+#: sequencer.c:3202 sequencer.c:4263
 msgid "cannot read HEAD"
 msgstr "не удалось прочитать HEAD"
 
-#: sequencer.c:2958
+#: sequencer.c:3219
 #, c-format
 msgid "unable to copy '%s' to '%s'"
 msgstr ""
 
-#: sequencer.c:2966
+#: sequencer.c:3227
 #, c-format
 msgid ""
 "You can amend the commit now, with\n"
@@ -5889,27 +6880,27 @@ msgid ""
 "  git rebase --continue\n"
 msgstr ""
 
-#: sequencer.c:2976
+#: sequencer.c:3237
 #, c-format
 msgid "Could not apply %s... %.*s"
 msgstr ""
 
-#: sequencer.c:2983
+#: sequencer.c:3244
 #, c-format
 msgid "Could not merge %.*s"
 msgstr ""
 
-#: sequencer.c:2997 sequencer.c:3001 builtin/difftool.c:633
+#: sequencer.c:3258 sequencer.c:3262 builtin/difftool.c:640
 #, c-format
 msgid "could not copy '%s' to '%s'"
 msgstr "не удалось скопировать «%s» в «%s»"
 
-#: sequencer.c:3023 sequencer.c:3446 builtin/rebase.c:839
-#: builtin/rebase.c:1580 builtin/rebase.c:1940 builtin/rebase.c:1995
-msgid "could not read index"
-msgstr "не удалось прочитать индекс"
+#: sequencer.c:3274
+#, c-format
+msgid "Executing: %s\n"
+msgstr ""
 
-#: sequencer.c:3028
+#: sequencer.c:3289
 #, c-format
 msgid ""
 "execution failed: %s\n"
@@ -5919,11 +6910,11 @@ msgid ""
 "\n"
 msgstr "ошибка выполнения: %s\n%sВы можете исправить ошибку, а затем запустить\n\n  git rebase --continue\n\n"
 
-#: sequencer.c:3034
+#: sequencer.c:3295
 msgid "and made changes to the index and/or the working tree\n"
 msgstr "и были сделаны изменения в индексе и/или в рабочем каталоге\n"
 
-#: sequencer.c:3040
+#: sequencer.c:3301
 #, c-format
 msgid ""
 "execution succeeded: %s\n"
@@ -5934,108 +6925,120 @@ msgid ""
 "\n"
 msgstr "успешное выполнение: %s\nно остались изменения в индексе и/или в рабочем каталоге\nСделайте коммит или спрячьте ваши изменения, а затем выполните\n\n  git rebase --continue\n\n"
 
-#: sequencer.c:3101
+#: sequencer.c:3362
 #, c-format
 msgid "illegal label name: '%.*s'"
 msgstr ""
 
-#: sequencer.c:3155
+#: sequencer.c:3416
 msgid "writing fake root commit"
 msgstr "запись поддельного корневого коммита"
 
-#: sequencer.c:3160
+#: sequencer.c:3421
 msgid "writing squash-onto"
 msgstr "запить уплотнить-над"
 
-#: sequencer.c:3198 builtin/rebase.c:844 builtin/rebase.c:850
-#, c-format
-msgid "failed to find tree of %s"
-msgstr "не удалось найти дерево для %s"
-
-#: sequencer.c:3216 builtin/rebase.c:863
-msgid "could not write index"
-msgstr "не удалось записать индекс"
-
-#: sequencer.c:3243
+#: sequencer.c:3505
 #, c-format
 msgid "could not resolve '%s'"
 msgstr "не удалось распознать «%s»"
 
-#: sequencer.c:3271
+#: sequencer.c:3538
 msgid "cannot merge without a current revision"
 msgstr "нельзя слить без текущей редакции"
 
-#: sequencer.c:3293
+#: sequencer.c:3560
 #, c-format
 msgid "unable to parse '%.*s'"
 msgstr ""
 
-#: sequencer.c:3302
+#: sequencer.c:3569
 #, c-format
 msgid "nothing to merge: '%.*s'"
 msgstr ""
 
-#: sequencer.c:3314
+#: sequencer.c:3581
 msgid "octopus merge cannot be executed on top of a [new root]"
 msgstr ""
 
-#: sequencer.c:3329
+#: sequencer.c:3597
 #, c-format
 msgid "could not get commit message of '%s'"
 msgstr "не удалось получить сообщение коммита для «%s»"
 
-#: sequencer.c:3478
+#: sequencer.c:3780
 #, c-format
 msgid "could not even attempt to merge '%.*s'"
 msgstr "не удалось даже попытаться слить «%.*s»"
 
-#: sequencer.c:3494
+#: sequencer.c:3796
 msgid "merge: Unable to write new index file"
 msgstr "слияние: Не удалось записать файл индекса"
 
-#: sequencer.c:3562 builtin/rebase.c:711
+#: sequencer.c:3870
+msgid "Cannot autostash"
+msgstr "Не удалось автоматически спрятать изменения"
+
+#: sequencer.c:3873
+#, c-format
+msgid "Unexpected stash response: '%s'"
+msgstr ""
+
+#: sequencer.c:3879
+#, c-format
+msgid "Could not create directory for '%s'"
+msgstr ""
+
+#: sequencer.c:3882
+#, c-format
+msgid "Created autostash: %s\n"
+msgstr ""
+
+#: sequencer.c:3886
+msgid "could not reset --hard"
+msgstr ""
+
+#: sequencer.c:3911
 #, c-format
 msgid "Applied autostash.\n"
 msgstr "Применены автоматически спрятанные изменения.\n"
 
-#: sequencer.c:3574
+#: sequencer.c:3923
 #, c-format
 msgid "cannot store %s"
 msgstr "не удалось сохранить %s"
 
-#: sequencer.c:3577 builtin/rebase.c:727
+#: sequencer.c:3926
 #, c-format
 msgid ""
-"Applying autostash resulted in conflicts.\n"
+"%s\n"
 "Your changes are safe in the stash.\n"
 "You can run \"git stash pop\" or \"git stash drop\" at any time.\n"
-msgstr "Применение автоматически спрятанных изменений вызвало конфликты.\nВаши изменения спрятаны и в безопасности.\nВы можете выполнить «git stash pop» или «git stash drop» в любой момент.\n"
+msgstr ""
 
-#: sequencer.c:3638
-#, c-format
-msgid "could not checkout %s"
+#: sequencer.c:3931
+msgid "Applying autostash resulted in conflicts."
 msgstr ""
 
-#: sequencer.c:3652
-#, c-format
-msgid "%s: not a valid OID"
+#: sequencer.c:3932
+msgid "Autostash exists; creating a new stash entry."
 msgstr ""
 
-#: sequencer.c:3657 git-rebase--preserve-merges.sh:724
+#: sequencer.c:4025 git-rebase--preserve-merges.sh:769
 msgid "could not detach HEAD"
 msgstr "не удалось отделить HEAD"
 
-#: sequencer.c:3672
+#: sequencer.c:4040
 #, c-format
 msgid "Stopped at HEAD\n"
 msgstr ""
 
-#: sequencer.c:3674
+#: sequencer.c:4042
 #, c-format
 msgid "Stopped at %s\n"
 msgstr ""
 
-#: sequencer.c:3682
+#: sequencer.c:4050
 #, c-format
 msgid ""
 "Could not execute the todo command\n"
@@ -6048,120 +7051,124 @@ msgid ""
 "    git rebase --continue\n"
 msgstr ""
 
-#: sequencer.c:3759
+#: sequencer.c:4096
+#, c-format
+msgid "Rebasing (%d/%d)%s"
+msgstr ""
+
+#: sequencer.c:4141
 #, c-format
 msgid "Stopped at %s...  %.*s\n"
 msgstr "Остановлено на %s …  %.*s\n"
 
-#: sequencer.c:3837
+#: sequencer.c:4212
 #, c-format
 msgid "unknown command %d"
 msgstr "неизвестная команда %d"
 
-#: sequencer.c:3882
+#: sequencer.c:4271
 msgid "could not read orig-head"
 msgstr "не удалось прочитать orig-head"
 
-#: sequencer.c:3887
+#: sequencer.c:4276
 msgid "could not read 'onto'"
 msgstr "не удалось прочитать «onto»"
 
-#: sequencer.c:3901
+#: sequencer.c:4290
 #, c-format
 msgid "could not update HEAD to %s"
 msgstr "не удалось обновить HEAD на %s"
 
-#: sequencer.c:3991
+#: sequencer.c:4350
+#, c-format
+msgid "Successfully rebased and updated %s.\n"
+msgstr ""
+
+#: sequencer.c:4383
 msgid "cannot rebase: You have unstaged changes."
 msgstr "не удалось выполнить перемещение коммитов: У вас есть непроиндексированные изменения."
 
-#: sequencer.c:4000
+#: sequencer.c:4392
 msgid "cannot amend non-existing commit"
 msgstr "не удалось исправить несуществующий коммит"
 
-#: sequencer.c:4002
+#: sequencer.c:4394
 #, c-format
 msgid "invalid file: '%s'"
 msgstr "недопустимый файл: «%s»"
 
-#: sequencer.c:4004
+#: sequencer.c:4396
 #, c-format
 msgid "invalid contents: '%s'"
 msgstr "недопустимое содержимое: «%s»"
 
-#: sequencer.c:4007
+#: sequencer.c:4399
 msgid ""
 "\n"
 "You have uncommitted changes in your working tree. Please, commit them\n"
 "first and then run 'git rebase --continue' again."
 msgstr "\nУ вас имеются незакоммиченные изменения в рабочем каталоге. Сделайте коммит, а затем запустите «git rebase --continue» снова."
 
-#: sequencer.c:4043 sequencer.c:4081
+#: sequencer.c:4435 sequencer.c:4474
 #, c-format
 msgid "could not write file: '%s'"
 msgstr ""
 
-#: sequencer.c:4096
+#: sequencer.c:4490
 msgid "could not remove CHERRY_PICK_HEAD"
 msgstr "не удалось удалить CHERRY_PICK_HEAD"
 
-#: sequencer.c:4103
+#: sequencer.c:4497
 msgid "could not commit staged changes."
 msgstr "не удалось закоммитить проиндексированные изменения."
 
-#: sequencer.c:4204
+#: sequencer.c:4613
 #, c-format
 msgid "%s: can't cherry-pick a %s"
 msgstr "%s: не удалось скопировать коммит %s"
 
-#: sequencer.c:4208
+#: sequencer.c:4617
 #, c-format
 msgid "%s: bad revision"
 msgstr "%s: плохая редакция"
 
-#: sequencer.c:4243
+#: sequencer.c:4652
 msgid "can't revert as initial commit"
 msgstr "нельзя возвратить изначальный коммит"
 
-#: sequencer.c:4686
+#: sequencer.c:5129
 msgid "make_script: unhandled options"
 msgstr "make_script: не обработанные опции"
 
-#: sequencer.c:4689
+#: sequencer.c:5132
 msgid "make_script: error preparing revisions"
 msgstr "make_script: ошибка при обновлении редакций"
 
-#: sequencer.c:4847
-msgid ""
-"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 "Вы можете исправить это с помощью «git rebase --edit-todo», а потом запустив «git rebase --continue».\nИли вы можете прервать процесс перемещения, выполнив «git rebase --abort»\n"
-
-#: sequencer.c:4959 sequencer.c:4976
+#: sequencer.c:5374 sequencer.c:5391
 msgid "nothing to do"
 msgstr ""
 
-#: sequencer.c:4990
+#: sequencer.c:5410
 msgid "could not skip unnecessary pick commands"
 msgstr ""
 
-#: sequencer.c:5073
+#: sequencer.c:5504
 msgid "the script was already rearranged."
 msgstr "сценарий уже был перестроен."
 
-#: setup.c:123
+#: setup.c:133
 #, c-format
-msgid "'%s' is outside repository"
-msgstr "«%s» вне репозитория"
+msgid "'%s' is outside repository at '%s'"
+msgstr ""
 
-#: setup.c:173
+#: setup.c:185
 #, 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 "%s: нет такого пути в рабочем каталоге.\nИспользуйте «git <команда> -- <путь>…» для указания путей, которые не существуют локально."
 
-#: setup.c:186
+#: setup.c:198
 #, c-format
 msgid ""
 "ambiguous argument '%s': unknown revision or path not in the working tree.\n"
@@ -6169,12 +7176,12 @@ msgid ""
 "'git <command> [<revision>...] -- [<file>...]'"
 msgstr "неоднозначный аргумент «%s»: неизвестная редакция или не путь в рабочем каталоге.\nИспользуйте «--» для отделения путей от редакций, вот так:\n«git <команда> [<редакция>…] -- [<файл>…]»"
 
-#: setup.c:235
+#: setup.c:264
 #, c-format
 msgid "option '%s' must come before non-option arguments"
 msgstr ""
 
-#: setup.c:254
+#: setup.c:283
 #, c-format
 msgid ""
 "ambiguous argument '%s': both revision and filename\n"
@@ -6182,387 +7189,547 @@ msgid ""
 "'git <command> [<revision>...] -- [<file>...]'"
 msgstr "неоднозначный аргумент «%s»: является одновременно и редакцией и именем файла.\nИспользуйте «--» для отделения путей от редакций, вот так:\n«git <команда> [<редакция>…] -- [<файл>…]»"
 
-#: setup.c:390
+#: setup.c:419
 msgid "unable to set up work tree using invalid config"
 msgstr ""
 
-#: setup.c:394
+#: setup.c:423
 msgid "this operation must be run in a work tree"
 msgstr ""
 
-#: setup.c:540
+#: setup.c:661
 #, c-format
 msgid "Expected git repo version <= %d, found %d"
 msgstr "Ожидаемая версия git репозитория <= %d, а обнаружена %d"
 
-#: setup.c:548
+#: setup.c:669
 msgid "unknown repository extensions found:"
 msgstr "обнаружены неизвестные расширения репозитория:"
 
-#: setup.c:567
+#: setup.c:681
+msgid "repo version is 0, but v1-only extensions found:"
+msgstr ""
+
+#: setup.c:700
 #, c-format
 msgid "error opening '%s'"
 msgstr "ошибка открытия «%s»"
 
-#: setup.c:569
+#: setup.c:702
 #, c-format
 msgid "too large to be a .git file: '%s'"
 msgstr "файл слишком большой как для .git файла: «%s»"
 
-#: setup.c:571
+#: setup.c:704
 #, c-format
 msgid "error reading %s"
 msgstr "ошибка чтения %s"
 
-#: setup.c:573
+#: setup.c:706
 #, c-format
 msgid "invalid gitfile format: %s"
 msgstr "неправильный формат файла gitfile: %s"
 
-#: setup.c:575
+#: setup.c:708
 #, c-format
 msgid "no path in gitfile: %s"
 msgstr "нет пути в gitfile: %s"
 
-#: setup.c:577
+#: setup.c:710
 #, c-format
 msgid "not a git repository: %s"
 msgstr "не является репозиторием git: %s"
 
-#: setup.c:676
+#: setup.c:812
 #, c-format
 msgid "'$%s' too big"
 msgstr "«$%s» слишком большой"
 
-#: setup.c:690
+#: setup.c:826
 #, c-format
 msgid "not a git repository: '%s'"
 msgstr "не является репозиторием git: «%s»"
 
-#: setup.c:719 setup.c:721 setup.c:752
+#: setup.c:855 setup.c:857 setup.c:888
 #, c-format
 msgid "cannot chdir to '%s'"
 msgstr "не удалось выполнить chdir в «%s»"
 
-#: setup.c:724 setup.c:780 setup.c:790 setup.c:829 setup.c:837
+#: setup.c:860 setup.c:916 setup.c:926 setup.c:965 setup.c:973
 msgid "cannot come back to cwd"
 msgstr "не удалось вернуться в cwd"
 
-#: setup.c:851
+#: setup.c:987
 #, c-format
 msgid "failed to stat '%*s%s%s'"
 msgstr "не удалось выполнить stat для «%*s%s%s»"
 
-#: setup.c:1083
+#: setup.c:1225
 msgid "Unable to read current working directory"
 msgstr "Не удалось прочитать текущий рабочий каталог"
 
-#: setup.c:1092 setup.c:1098
+#: setup.c:1234 setup.c:1240
 #, c-format
 msgid "cannot change to '%s'"
 msgstr "не удалось изменить на «%s»"
 
-#: setup.c:1103
+#: setup.c:1245
 #, c-format
 msgid "not a git repository (or any of the parent directories): %s"
 msgstr "не найден git репозиторий (или один из родительских каталогов): %s"
 
-#: setup.c:1109
+#: setup.c:1251
 #, 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 "не найден git репозиторий (или один из его каталогов вплоть до точки монтирования %s)\nОстанавливаю поиск на границе файловой системы (так как GIT_DISCOVERY_ACROSS_FILESYSTEM не установлен)."
 
-#: setup.c:1220
+#: setup.c:1362
 #, 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:1264
+#: setup.c:1409
 msgid "open /dev/null or dup failed"
 msgstr "сбой открытия /dev/null или дублирования дескриптора"
 
-#: setup.c:1279
+#: setup.c:1424
 msgid "fork failed"
 msgstr "сбой при выполнении fork"
 
-#: setup.c:1284
+#: setup.c:1429
 msgid "setsid failed"
 msgstr "сбой при выполнении setsid"
 
-#: sha1-file.c:453
+#: sha1-file.c:480
 #, c-format
 msgid "object directory %s does not exist; check .git/objects/info/alternates"
 msgstr ""
 
-#: sha1-file.c:504
+#: sha1-file.c:531
 #, c-format
 msgid "unable to normalize alternate object path: %s"
 msgstr ""
 
-#: sha1-file.c:576
+#: sha1-file.c:603
 #, c-format
 msgid "%s: ignoring alternate object stores, nesting too deep"
 msgstr ""
 
-#: sha1-file.c:583
+#: sha1-file.c:610
 #, c-format
 msgid "unable to normalize object directory: %s"
 msgstr ""
 
-#: sha1-file.c:626
+#: sha1-file.c:653
 msgid "unable to fdopen alternates lockfile"
 msgstr ""
 
-#: sha1-file.c:644
+#: sha1-file.c:671
 msgid "unable to read alternates file"
 msgstr ""
 
-#: sha1-file.c:651
+#: sha1-file.c:678
 msgid "unable to move new alternates file into place"
 msgstr ""
 
-#: sha1-file.c:686
+#: sha1-file.c:713
 #, c-format
 msgid "path '%s' does not exist"
 msgstr "путь «%s» не существует"
 
-#: sha1-file.c:712
+#: sha1-file.c:734
 #, c-format
 msgid "reference repository '%s' as a linked checkout is not supported yet."
 msgstr "ссылаемый репозиторий «%s» как связанное состояние, пока не поддерживается."
 
-#: sha1-file.c:718
+#: sha1-file.c:740
 #, c-format
 msgid "reference repository '%s' is not a local repository."
 msgstr "ссылаемый репозиторий «%s» не является локальным."
 
-#: sha1-file.c:724
+#: sha1-file.c:746
 #, c-format
 msgid "reference repository '%s' is shallow"
 msgstr "ссылаемый репозиторий «%s» является частичным"
 
-#: sha1-file.c:732
+#: sha1-file.c:754
 #, c-format
 msgid "reference repository '%s' is grafted"
 msgstr "ссылаемый репозиторий «%s» является сращенным"
 
-#: sha1-file.c:846
+#: sha1-file.c:814
+#, c-format
+msgid "invalid line while parsing alternate refs: %s"
+msgstr ""
+
+#: sha1-file.c:964
 #, c-format
 msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
 msgstr ""
 
-#: sha1-file.c:871
+#: sha1-file.c:985
 msgid "mmap failed"
 msgstr ""
 
-#: sha1-file.c:1035
+#: sha1-file.c:1149
 #, c-format
 msgid "object file %s is empty"
 msgstr ""
 
-#: sha1-file.c:1159 sha1-file.c:2297
+#: sha1-file.c:1284 sha1-file.c:2477
 #, c-format
 msgid "corrupt loose object '%s'"
 msgstr ""
 
-#: sha1-file.c:1161 sha1-file.c:2301
+#: sha1-file.c:1286 sha1-file.c:2481
 #, c-format
 msgid "garbage at end of loose object '%s'"
 msgstr ""
 
-#: sha1-file.c:1203
+#: sha1-file.c:1328
 msgid "invalid object type"
 msgstr ""
 
-#: sha1-file.c:1287
+#: sha1-file.c:1412
 #, c-format
 msgid "unable to unpack %s header with --allow-unknown-type"
 msgstr ""
 
-#: sha1-file.c:1290
+#: sha1-file.c:1415
 #, c-format
 msgid "unable to unpack %s header"
 msgstr ""
 
-#: sha1-file.c:1296
+#: sha1-file.c:1421
 #, c-format
 msgid "unable to parse %s header with --allow-unknown-type"
 msgstr ""
 
-#: sha1-file.c:1299
+#: sha1-file.c:1424
 #, c-format
 msgid "unable to parse %s header"
 msgstr ""
 
-#: sha1-file.c:1490
+#: sha1-file.c:1651
 #, c-format
 msgid "failed to read object %s"
 msgstr ""
 
-#: sha1-file.c:1494
+#: sha1-file.c:1655
 #, c-format
 msgid "replacement %s not found for %s"
 msgstr ""
 
-#: sha1-file.c:1498
+#: sha1-file.c:1659
 #, c-format
 msgid "loose object %s (stored in %s) is corrupt"
 msgstr ""
 
-#: sha1-file.c:1502
+#: sha1-file.c:1663
 #, c-format
 msgid "packed object %s (stored in %s) is corrupt"
 msgstr ""
 
-#: sha1-file.c:1604
+#: sha1-file.c:1768
 #, c-format
 msgid "unable to write file %s"
 msgstr ""
 
-#: sha1-file.c:1611
+#: sha1-file.c:1775
 #, c-format
 msgid "unable to set permission to '%s'"
 msgstr ""
 
-#: sha1-file.c:1618
+#: sha1-file.c:1782
 msgid "file write error"
 msgstr ""
 
-#: sha1-file.c:1637
+#: sha1-file.c:1802
 msgid "error when closing loose object file"
 msgstr ""
 
-#: sha1-file.c:1702
+#: sha1-file.c:1867
 #, c-format
 msgid "insufficient permission for adding an object to repository database %s"
 msgstr ""
 
-#: sha1-file.c:1704
+#: sha1-file.c:1869
 msgid "unable to create temporary file"
 msgstr ""
 
-#: sha1-file.c:1728
+#: sha1-file.c:1893
 msgid "unable to write loose object file"
 msgstr ""
 
-#: sha1-file.c:1734
+#: sha1-file.c:1899
 #, c-format
 msgid "unable to deflate new object %s (%d)"
 msgstr ""
 
-#: sha1-file.c:1738
+#: sha1-file.c:1903
 #, c-format
 msgid "deflateEnd on object %s failed (%d)"
 msgstr ""
 
-#: sha1-file.c:1742
+#: sha1-file.c:1907
 #, c-format
 msgid "confused by unstable object source data for %s"
 msgstr ""
 
-#: sha1-file.c:1752 builtin/pack-objects.c:920
+#: sha1-file.c:1917 builtin/pack-objects.c:1086
 #, c-format
 msgid "failed utime() on %s"
 msgstr ""
 
-#: sha1-file.c:1827
+#: sha1-file.c:1994
 #, c-format
 msgid "cannot read object for %s"
 msgstr ""
 
-#: sha1-file.c:1867
+#: sha1-file.c:2045
 msgid "corrupt commit"
 msgstr ""
 
-#: sha1-file.c:1875
+#: sha1-file.c:2053
 msgid "corrupt tag"
 msgstr ""
 
-#: sha1-file.c:1974
+#: sha1-file.c:2153
+#, c-format
+msgid "read error while indexing %s"
+msgstr ""
+
+#: sha1-file.c:2156
+#, c-format
+msgid "short read while indexing %s"
+msgstr ""
+
+#: sha1-file.c:2229 sha1-file.c:2239
+#, c-format
+msgid "%s: failed to insert into database"
+msgstr ""
+
+#: sha1-file.c:2245
+#, c-format
+msgid "%s: unsupported file type"
+msgstr ""
+
+#: sha1-file.c:2269
+#, c-format
+msgid "%s is not a valid object"
+msgstr ""
+
+#: sha1-file.c:2271
+#, c-format
+msgid "%s is not a valid '%s' object"
+msgstr "%s не является действительным объектом «%s»"
+
+#: sha1-file.c:2298 builtin/index-pack.c:192
+#, c-format
+msgid "unable to open %s"
+msgstr "не удалось открыть %s"
+
+#: sha1-file.c:2488 sha1-file.c:2541
+#, c-format
+msgid "hash mismatch for %s (expected %s)"
+msgstr "несоответствие хэш-кода %s (ожидается %s)"
+
+#: sha1-file.c:2512
+#, c-format
+msgid "unable to mmap %s"
+msgstr ""
+
+#: sha1-file.c:2517
+#, c-format
+msgid "unable to unpack header of %s"
+msgstr ""
+
+#: sha1-file.c:2523
+#, c-format
+msgid "unable to parse header of %s"
+msgstr ""
+
+#: sha1-file.c:2534
+#, c-format
+msgid "unable to unpack contents of %s"
+msgstr ""
+
+#: sha1-name.c:486
+#, c-format
+msgid "short SHA1 %s is ambiguous"
+msgstr "сокращённый SHA1 идентификатор %s неоднозначен"
+
+#: sha1-name.c:497
+msgid "The candidates are:"
+msgstr "Возможно, вы имели в виду:"
+
+#: sha1-name.c:796
+msgid ""
+"Git normally never creates a ref that ends with 40 hex characters\n"
+"because it will be ignored when you just specify 40-hex. These refs\n"
+"may be created by mistake. For example,\n"
+"\n"
+"  git switch -c $br $(git rev-parse ...)\n"
+"\n"
+"where \"$br\" is somehow empty and a 40-hex ref is created. Please\n"
+"examine these refs and maybe delete them. Turn this message off by\n"
+"running \"git config advice.objectNameWarning false\""
+msgstr ""
+
+#: sha1-name.c:916
+#, c-format
+msgid "log for '%.*s' only goes back to %s"
+msgstr ""
+
+#: sha1-name.c:924
+#, c-format
+msgid "log for '%.*s' only has %d entries"
+msgstr ""
+
+#: sha1-name.c:1702
+#, c-format
+msgid "path '%s' exists on disk, but not in '%.*s'"
+msgstr ""
+
+#: sha1-name.c:1708
+#, c-format
+msgid ""
+"path '%s' exists, but not '%s'\n"
+"hint: Did you mean '%.*s:%s' aka '%.*s:./%s'?"
+msgstr ""
+
+#: sha1-name.c:1717
+#, c-format
+msgid "path '%s' does not exist in '%.*s'"
+msgstr ""
+
+#: sha1-name.c:1745
+#, c-format
+msgid ""
+"path '%s' is in the index, but not at stage %d\n"
+"hint: Did you mean ':%d:%s'?"
+msgstr ""
+
+#: sha1-name.c:1761
+#, c-format
+msgid ""
+"path '%s' is in the index, but not '%s'\n"
+"hint: Did you mean ':%d:%s' aka ':%d:./%s'?"
+msgstr ""
+
+#: sha1-name.c:1769
+#, c-format
+msgid "path '%s' exists on disk, but not in the index"
+msgstr ""
+
+#: sha1-name.c:1771
+#, c-format
+msgid "path '%s' does not exist (neither on disk nor in the index)"
+msgstr ""
+
+#: sha1-name.c:1784
+msgid "relative path syntax can't be used outside working tree"
+msgstr ""
+
+#: sha1-name.c:1922
+#, c-format
+msgid "invalid object name '%.*s'."
+msgstr ""
+
+#. TRANSLATORS: IEC 80000-13:2008 gibibyte
+#: strbuf.c:848
 #, c-format
-msgid "read error while indexing %s"
-msgstr ""
+msgid "%u.%2.2u GiB"
+msgstr "%u.%2.2u ГиБ"
 
-#: sha1-file.c:1977
+#. TRANSLATORS: IEC 80000-13:2008 gibibyte/second
+#: strbuf.c:850
 #, c-format
-msgid "short read while indexing %s"
-msgstr ""
+msgid "%u.%2.2u GiB/s"
+msgstr "%u.%2.2u ГиБ/с"
 
-#: sha1-file.c:2050 sha1-file.c:2059
+#. TRANSLATORS: IEC 80000-13:2008 mebibyte
+#: strbuf.c:858
 #, c-format
-msgid "%s: failed to insert into database"
-msgstr ""
+msgid "%u.%2.2u MiB"
+msgstr "%u.%2.2u МиБ"
 
-#: sha1-file.c:2065
+#. TRANSLATORS: IEC 80000-13:2008 mebibyte/second
+#: strbuf.c:860
 #, c-format
-msgid "%s: unsupported file type"
-msgstr ""
+msgid "%u.%2.2u MiB/s"
+msgstr "%u.%2.2u МиБ/с"
 
-#: sha1-file.c:2089
+#. TRANSLATORS: IEC 80000-13:2008 kibibyte
+#: strbuf.c:867
 #, c-format
-msgid "%s is not a valid object"
-msgstr ""
+msgid "%u.%2.2u KiB"
+msgstr "%u.%2.2u КиБ"
 
-#: sha1-file.c:2091
+#. TRANSLATORS: IEC 80000-13:2008 kibibyte/second
+#: strbuf.c:869
 #, c-format
-msgid "%s is not a valid '%s' object"
-msgstr "%s не является действительным объектом «%s»"
+msgid "%u.%2.2u KiB/s"
+msgstr "%u.%2.2u КиБ/с"
 
-#: sha1-file.c:2118 builtin/index-pack.c:154
+#. TRANSLATORS: IEC 80000-13:2008 byte
+#: strbuf.c:875
 #, c-format
-msgid "unable to open %s"
-msgstr "не удалось открыть %s"
+msgid "%u byte"
+msgid_plural "%u bytes"
+msgstr[0] "%u байт"
+msgstr[1] "%u байта"
+msgstr[2] "%u байтов"
+msgstr[3] "%u байта"
 
-#: sha1-file.c:2308 sha1-file.c:2360
+#. TRANSLATORS: IEC 80000-13:2008 byte/second
+#: strbuf.c:877
 #, c-format
-msgid "hash mismatch for %s (expected %s)"
-msgstr "несоответствие хеш-суммы %s (ожидается %s)"
+msgid "%u byte/s"
+msgid_plural "%u bytes/s"
+msgstr[0] "%u байт/с"
+msgstr[1] "%u байта/с"
+msgstr[2] "%u байтов/с"
+msgstr[3] "%u байта/с"
 
-#: sha1-file.c:2332
+#: strbuf.c:1166 wrapper.c:199 wrapper.c:369 builtin/am.c:719
+#: builtin/rebase.c:864
 #, c-format
-msgid "unable to mmap %s"
-msgstr ""
+msgid "could not open '%s' for writing"
+msgstr "не удалось открыть «%s» для записи"
 
-#: sha1-file.c:2337
+#: strbuf.c:1175
 #, c-format
-msgid "unable to unpack header of %s"
+msgid "could not edit '%s'"
 msgstr ""
 
-#: sha1-file.c:2343
+#: submodule-config.c:237
 #, c-format
-msgid "unable to parse header of %s"
-msgstr ""
+msgid "ignoring suspicious submodule name: %s"
+msgstr "игнорирую подозрительный подмодуль с именем: %s"
 
-#: sha1-file.c:2354
+#: submodule-config.c:304
+msgid "negative values not allowed for submodule.fetchjobs"
+msgstr "нельзя использовать отрицательные значения для submodule.fetchjobs"
+
+#: submodule-config.c:402
 #, c-format
-msgid "unable to unpack contents of %s"
+msgid "ignoring '%s' which may be interpreted as a command-line option: %s"
 msgstr ""
 
-#: sha1-name.c:490
+#: submodule-config.c:499
 #, c-format
-msgid "short SHA1 %s is ambiguous"
-msgstr "сокращённый SHA1 идентификатор %s неоднозначен"
-
-#: sha1-name.c:501
-msgid "The candidates are:"
-msgstr "Возможно, вы имели в виду:"
+msgid "invalid value for %s"
+msgstr "неправильное значение %s"
 
-#: sha1-name.c:800
-msgid ""
-"Git normally never creates a ref that ends with 40 hex characters\n"
-"because it will be ignored when you just specify 40-hex. These refs\n"
-"may be created by mistake. For example,\n"
-"\n"
-"  git checkout -b $br $(git rev-parse ...)\n"
-"\n"
-"where \"$br\" is somehow empty and a 40-hex ref is created. Please\n"
-"examine these refs and maybe delete them. Turn this message off by\n"
-"running \"git config advice.objectNameWarning false\""
-msgstr "Обычно Git не создает ссылки, оканчивающиеся на 40 шестнадцатеричных\nсимволов, потому, что они будут игнорироваться, когда вы просто\nукажете это 40-символьное шестнадцатеричное число. Такие ссылки\nмогли быть созданы по ошибке. Например, с помощью:\n\n  git checkout -b $br $(git rev-parse …)\n\n, если «$br» оказался пустым, то ссылка с 40-символьным\nшестнадцатеричным числом будет создана. Пожалуйста, просмотрите эти\nссылки и, возможно, удалите их. Вы можете отключить это сообщение\nзапустив «git config advice.objectNameWarning false»"
+#: submodule-config.c:766
+#, c-format
+msgid "Could not update .gitmodules entry %s"
+msgstr "Не удалось обновить .gitmodules запись %s"
 
 #: submodule.c:114 submodule.c:143
 msgid "Cannot change unmerged .gitmodules, resolve merge conflicts first"
@@ -6592,62 +7759,137 @@ msgstr "в пустом подмодуле «%s»"
 msgid "Pathspec '%s' is in submodule '%.*s'"
 msgstr "Спецификатор пути «%s» в подмодуле «%.*s»"
 
-#: submodule.c:910
+#: submodule.c:434
+#, c-format
+msgid "bad --ignore-submodules argument: %s"
+msgstr ""
+
+#: submodule.c:816
+#, c-format
+msgid ""
+"Submodule in commit %s at path: '%s' collides with a submodule named the "
+"same. Skipping it."
+msgstr ""
+
+#: submodule.c:919
 #, c-format
 msgid "submodule entry '%s' (%s) is a %s, not a commit"
 msgstr "запись подмодуля «%s» (%s) является %s, а не является коммитом"
 
-#: submodule.c:1147 builtin/branch.c:672 builtin/submodule--helper.c:1988
+#: submodule.c:1004
+#, c-format
+msgid ""
+"Could not run 'git rev-list <commits> --not --remotes -n 1' command in "
+"submodule %s"
+msgstr ""
+
+#: submodule.c:1127
+#, c-format
+msgid "process for submodule '%s' failed"
+msgstr ""
+
+#: submodule.c:1156 builtin/branch.c:680 builtin/submodule--helper.c:2469
 msgid "Failed to resolve HEAD as a valid ref."
 msgstr "Не удалось определить HEAD как действительную ссылку."
 
-#: submodule.c:1481
+#: submodule.c:1167
+#, c-format
+msgid "Pushing submodule '%s'\n"
+msgstr ""
+
+#: submodule.c:1170
 #, c-format
-msgid "Could not access submodule '%s'"
+msgid "Unable to push submodule '%s'\n"
 msgstr ""
 
-#: submodule.c:1651
+#: submodule.c:1462
+#, c-format
+msgid "Fetching submodule %s%s\n"
+msgstr ""
+
+#: submodule.c:1492
+#, c-format
+msgid "Could not access submodule '%s'\n"
+msgstr ""
+
+#: submodule.c:1646
+#, c-format
+msgid ""
+"Errors during submodule fetch:\n"
+"%s"
+msgstr ""
+
+#: submodule.c:1671
 #, c-format
 msgid "'%s' not recognized as a git repository"
 msgstr "«%s» не распознан как репозиторий git"
 
-#: submodule.c:1789
+#: submodule.c:1688
+#, c-format
+msgid "Could not run 'git status --porcelain=2' in submodule %s"
+msgstr ""
+
+#: submodule.c:1729
+#, c-format
+msgid "'git status --porcelain=2' failed in submodule %s"
+msgstr ""
+
+#: submodule.c:1804
 #, c-format
 msgid "could not start 'git status' in submodule '%s'"
 msgstr "не удалось запустить «git status» в подмодуле «%s»"
 
-#: submodule.c:1802
+#: submodule.c:1817
 #, c-format
 msgid "could not run 'git status' in submodule '%s'"
 msgstr "не удалось запустить «git status» в подмодуле «%s»"
 
-#: submodule.c:1817
+#: submodule.c:1832
 #, c-format
 msgid "Could not unset core.worktree setting in submodule '%s'"
 msgstr ""
 
-#: submodule.c:1907
+#: submodule.c:1859 submodule.c:2169
+#, c-format
+msgid "could not recurse into submodule '%s'"
+msgstr "не удалось рекурсивно зайти в подмодуль «%s»"
+
+#: submodule.c:1880
+msgid "could not reset submodule index"
+msgstr ""
+
+#: submodule.c:1922
 #, c-format
 msgid "submodule '%s' has dirty index"
 msgstr "подмодуль «%s» имеет изменённый индекс"
 
-#: submodule.c:1959
+#: submodule.c:1974
 #, c-format
 msgid "Submodule '%s' could not be updated."
 msgstr ""
 
-#: submodule.c:2008
+#: submodule.c:2042
+#, c-format
+msgid "submodule git dir '%s' is inside git dir '%.*s'"
+msgstr ""
+
+#: submodule.c:2063
 #, c-format
 msgid ""
 "relocate_gitdir for submodule '%s' with more than one worktree not supported"
 msgstr "relocate_gitdir для подмодуля «%s» с указанием более одного рабочего дерева не поддерживается"
 
-#: submodule.c:2020 submodule.c:2076
+#: submodule.c:2075 submodule.c:2134
 #, c-format
 msgid "could not lookup name for submodule '%s'"
 msgstr "не удалось запросить имя подмодуля «%s»"
 
-#: submodule.c:2027
+#: submodule.c:2079
+#, c-format
+msgid "refusing to move '%s' into an existing git dir"
+msgstr ""
+
+#: submodule.c:2086
 #, c-format
 msgid ""
 "Migrating git directory of '%s%s' from\n"
@@ -6655,544 +7897,544 @@ msgid ""
 "'%s'\n"
 msgstr "Перемещение каталога git для «%s%s» из\n«%s» в\n«%s»\n"
 
-#: submodule.c:2111
-#, c-format
-msgid "could not recurse into submodule '%s'"
-msgstr "не удалось рекурсивно зайти в подмодуль «%s»"
-
-#: submodule.c:2155
+#: submodule.c:2214
 msgid "could not start ls-files in .."
 msgstr "не удалось выполнить stat ls-files в .."
 
-#: submodule.c:2194
+#: submodule.c:2254
 #, c-format
 msgid "ls-tree returned unexpected return code %d"
 msgstr "ls-tree вернул неожиданный код %d"
 
-#: submodule-config.c:232
-#, c-format
-msgid "ignoring suspicious submodule name: %s"
-msgstr "игнорирую подозрительный подмодуль с именем: %s"
-
-#: submodule-config.c:299
-msgid "negative values not allowed for submodule.fetchjobs"
-msgstr "нельзя использовать отрицательные значения для submodule.fetchjobs"
-
-#: submodule-config.c:397
-#, c-format
-msgid "ignoring '%s' which may be interpreted as a command-line option: %s"
-msgstr ""
-
-#: submodule-config.c:486
-#, c-format
-msgid "invalid value for %s"
-msgstr "неправильное значение %s"
-
-#: submodule-config.c:755
-#, c-format
-msgid "Could not update .gitmodules entry %s"
-msgstr " Не удалось обновить .gitmodules запись %s"
-
-#: trailer.c:238
+#: trailer.c:236
 #, c-format
 msgid "running trailer command '%s' failed"
 msgstr "сбой при запуске команды завершителя «%s»"
 
-#: trailer.c:485 trailer.c:490 trailer.c:495 trailer.c:549 trailer.c:553
-#: trailer.c:557
+#: trailer.c:483 trailer.c:488 trailer.c:493 trailer.c:547 trailer.c:551
+#: trailer.c:555
 #, c-format
 msgid "unknown value '%s' for key '%s'"
 msgstr "неизвестное значение «%s» для ключа «%s»"
 
-#: trailer.c:539 trailer.c:544 builtin/remote.c:295
+#: trailer.c:537 trailer.c:542 builtin/remote.c:299 builtin/remote.c:324
 #, c-format
 msgid "more than one %s"
 msgstr "больше одного %s"
 
-#: trailer.c:730
+#: trailer.c:728
 #, c-format
 msgid "empty trailer token in trailer '%.*s'"
 msgstr "пустая последняя лексема в завершителе «%.*s»"
 
-#: trailer.c:750
+#: trailer.c:748
 #, c-format
 msgid "could not read input file '%s'"
 msgstr "не удалось прочитать входной файл «%s»"
 
-#: trailer.c:753
+#: trailer.c:751
 msgid "could not read from stdin"
 msgstr "не удалось прочитать из стандартного ввода"
 
-#: trailer.c:1011 wrapper.c:701
+#: trailer.c:1009 wrapper.c:676
 #, c-format
 msgid "could not stat %s"
 msgstr "не удалось выполнить stat для %s"
 
-#: trailer.c:1013
+#: trailer.c:1011
 #, c-format
 msgid "file %s is not a regular file"
 msgstr "файл %s не является обычным файлом"
 
-#: trailer.c:1015
+#: trailer.c:1013
 #, c-format
 msgid "file %s is not writable by user"
 msgstr "файл %s не доступен на запись пользователю"
 
-#: trailer.c:1027
+#: trailer.c:1025
 msgid "could not open temporary file"
 msgstr "не удалось создать временный файл"
 
-#: trailer.c:1067
+#: trailer.c:1065
 #, c-format
 msgid "could not rename temporary file to %s"
 msgstr "не удалось переименовать временный файл в %s"
 
-#: transport.c:116
-#, c-format
-msgid "Would set upstream of '%s' to '%s' of '%s'\n"
-msgstr "Будет установлен вышестоящий репозиторий для «%s» на «%s» с «%s»\n"
-
-#: transport.c:142
-#, c-format
-msgid "could not read bundle '%s'"
-msgstr ""
-
-#: transport.c:208
-#, c-format
-msgid "transport: invalid depth option '%s'"
-msgstr "транспорт: неправильный параметр глубины «%s»"
-
-#: transport.c:259
-msgid "see protocol.version in 'git help config' for more details"
-msgstr ""
-
-#: transport.c:260
-msgid "server options require protocol version 2 or later"
-msgstr ""
-
-#: transport.c:625
-msgid "could not parse transport.color.* config"
-msgstr "не удалось разобрать опцию transport.color.*"
-
-#: transport.c:698
-msgid "support for protocol v2 not implemented yet"
-msgstr ""
-
-#: transport.c:825
-#, c-format
-msgid "unknown value for config '%s': %s"
-msgstr ""
-
-#: transport.c:891
-#, c-format
-msgid "transport '%s' not allowed"
-msgstr ""
-
-#: transport.c:945
-msgid "git-over-rsync is no longer supported"
-msgstr ""
-
-#: transport.c:1040
-#, c-format
-msgid ""
-"The following submodule paths contain changes that can\n"
-"not be found on any remote:\n"
-msgstr "Подмодули по указанным путям содержат изменения, которые не найдены ни на одном из внешних репозиториев:\n"
-
-#: transport.c:1044
-#, c-format
-msgid ""
-"\n"
-"Please try\n"
-"\n"
-"\tgit push --recurse-submodules=on-demand\n"
-"\n"
-"or cd to the path and use\n"
-"\n"
-"\tgit push\n"
-"\n"
-"to push them to a remote.\n"
-"\n"
-msgstr "\nПопробуйте выполнить\n\n\tgit push --recurse-submodules=on-demand\n\nили перейти в каталог с помощью команды cd и выполнить\n\n\tgit push\n\nдля их отправки на внешний репозиторий.\n"
-
-#: transport.c:1052
-msgid "Aborting."
-msgstr "Прерываю."
-
-#: transport.c:1193
-msgid "failed to push all needed submodules"
-msgstr ""
-
-#: transport.c:1326 transport-helper.c:645
-msgid "operation not supported by protocol"
-msgstr ""
-
-#: transport.c:1430
-#, c-format
-msgid "invalid line while parsing alternate refs: %s"
-msgstr ""
-
-#: transport-helper.c:51 transport-helper.c:80
+#: transport-helper.c:62 transport-helper.c:91
 msgid "full write to remote helper failed"
 msgstr ""
 
-#: transport-helper.c:134
+#: transport-helper.c:145
 #, c-format
 msgid "unable to find remote helper for '%s'"
 msgstr ""
 
-#: transport-helper.c:150 transport-helper.c:559
+#: transport-helper.c:161 transport-helper.c:575
 msgid "can't dup helper output fd"
 msgstr ""
 
-#: transport-helper.c:201
+#: transport-helper.c:214
 #, c-format
 msgid ""
 "unknown mandatory capability %s; this remote helper probably needs newer "
 "version of Git"
 msgstr ""
 
-#: transport-helper.c:207
+#: transport-helper.c:220
 msgid "this remote helper should implement refspec capability"
 msgstr ""
 
-#: transport-helper.c:274 transport-helper.c:414
+#: transport-helper.c:287 transport-helper.c:429
 #, c-format
 msgid "%s unexpectedly said: '%s'"
 msgstr ""
 
-#: transport-helper.c:403
+#: transport-helper.c:417
 #, c-format
 msgid "%s also locked %s"
 msgstr ""
 
-#: transport-helper.c:481
+#: transport-helper.c:497
 msgid "couldn't run fast-import"
 msgstr ""
 
-#: transport-helper.c:504
+#: transport-helper.c:520
 msgid "error while running fast-import"
 msgstr ""
 
-#: transport-helper.c:533 transport-helper.c:1099
+#: transport-helper.c:549 transport-helper.c:1236
 #, c-format
 msgid "could not read ref %s"
 msgstr ""
 
-#: transport-helper.c:578
+#: transport-helper.c:594
 #, c-format
 msgid "unknown response to connect: %s"
 msgstr ""
 
-#: transport-helper.c:600
+#: transport-helper.c:616
 msgid "setting remote service path not supported by protocol"
 msgstr ""
 
-#: transport-helper.c:602
+#: transport-helper.c:618
 msgid "invalid remote service path"
 msgstr ""
 
-#: transport-helper.c:648
+#: transport-helper.c:661 transport.c:1446
+msgid "operation not supported by protocol"
+msgstr ""
+
+#: transport-helper.c:664
 #, c-format
 msgid "can't connect to subservice %s"
 msgstr ""
 
-#: transport-helper.c:720
+#: transport-helper.c:745
+msgid "'option' without a matching 'ok/error' directive"
+msgstr ""
+
+#: transport-helper.c:788
 #, c-format
 msgid "expected ok/error, helper said '%s'"
 msgstr ""
 
-#: transport-helper.c:773
+#: transport-helper.c:845
 #, c-format
 msgid "helper reported unexpected status of %s"
 msgstr ""
 
-#: transport-helper.c:834
+#: transport-helper.c:928
 #, c-format
 msgid "helper %s does not support dry-run"
 msgstr ""
 
-#: transport-helper.c:837
+#: transport-helper.c:931
 #, c-format
 msgid "helper %s does not support --signed"
 msgstr ""
 
-#: transport-helper.c:840
+#: transport-helper.c:934
 #, c-format
 msgid "helper %s does not support --signed=if-asked"
 msgstr ""
 
-#: transport-helper.c:847
+#: transport-helper.c:939
+#, c-format
+msgid "helper %s does not support --atomic"
+msgstr ""
+
+#: transport-helper.c:943
+#, c-format
+msgid "helper %s does not support --%s"
+msgstr ""
+
+#: transport-helper.c:950
 #, c-format
 msgid "helper %s does not support 'push-option'"
 msgstr ""
 
-#: transport-helper.c:939
+#: transport-helper.c:1050
 msgid "remote-helper doesn't support push; refspec needed"
 msgstr ""
 
-#: transport-helper.c:944
+#: transport-helper.c:1055
 #, c-format
 msgid "helper %s does not support 'force'"
 msgstr ""
 
-#: transport-helper.c:991
+#: transport-helper.c:1102
 msgid "couldn't run fast-export"
 msgstr ""
 
-#: transport-helper.c:996
+#: transport-helper.c:1107
 msgid "error while running fast-export"
 msgstr ""
 
-#: transport-helper.c:1021
+#: transport-helper.c:1132
 #, c-format
 msgid ""
 "No refs in common and none specified; doing nothing.\n"
-"Perhaps you should specify a branch such as 'master'.\n"
+"Perhaps you should specify a branch.\n"
+msgstr ""
+
+#: transport-helper.c:1213
+#, c-format
+msgid "unsupported object format '%s'"
 msgstr ""
 
-#: transport-helper.c:1085
+#: transport-helper.c:1222
 #, c-format
 msgid "malformed response in ref list: %s"
 msgstr ""
 
-#: transport-helper.c:1238
+#: transport-helper.c:1374
 #, c-format
 msgid "read(%s) failed"
 msgstr ""
 
-#: transport-helper.c:1265
+#: transport-helper.c:1401
 #, c-format
 msgid "write(%s) failed"
 msgstr ""
 
-#: transport-helper.c:1314
+#: transport-helper.c:1450
 #, c-format
 msgid "%s thread failed"
 msgstr ""
 
-#: transport-helper.c:1318
+#: transport-helper.c:1454
 #, c-format
 msgid "%s thread failed to join: %s"
 msgstr ""
 
-#: transport-helper.c:1337 transport-helper.c:1341
+#: transport-helper.c:1473 transport-helper.c:1477
+#, c-format
+msgid "can't start thread for copying data: %s"
+msgstr ""
+
+#: transport-helper.c:1514
+#, c-format
+msgid "%s process failed to wait"
+msgstr ""
+
+#: transport-helper.c:1518
+#, c-format
+msgid "%s process failed"
+msgstr ""
+
+#: transport-helper.c:1536 transport-helper.c:1545
+msgid "can't start thread for copying data"
+msgstr ""
+
+#: transport.c:116
+#, c-format
+msgid "Would set upstream of '%s' to '%s' of '%s'\n"
+msgstr "Будет установлен вышестоящий репозиторий для «%s» на «%s» с «%s»\n"
+
+#: transport.c:145
+#, c-format
+msgid "could not read bundle '%s'"
+msgstr ""
+
+#: transport.c:220
+#, c-format
+msgid "transport: invalid depth option '%s'"
+msgstr "транспорт: неправильный параметр глубины «%s»"
+
+#: transport.c:269
+msgid "see protocol.version in 'git help config' for more details"
+msgstr ""
+
+#: transport.c:270
+msgid "server options require protocol version 2 or later"
+msgstr ""
+
+#: transport.c:727
+msgid "could not parse transport.color.* config"
+msgstr "не удалось разобрать опцию transport.color.*"
+
+#: transport.c:802
+msgid "support for protocol v2 not implemented yet"
+msgstr ""
+
+#: transport.c:936
+#, c-format
+msgid "unknown value for config '%s': %s"
+msgstr ""
+
+#: transport.c:1002
+#, c-format
+msgid "transport '%s' not allowed"
+msgstr ""
+
+#: transport.c:1055
+msgid "git-over-rsync is no longer supported"
+msgstr ""
+
+#: transport.c:1157
 #, c-format
-msgid "can't start thread for copying data: %s"
-msgstr ""
+msgid ""
+"The following submodule paths contain changes that can\n"
+"not be found on any remote:\n"
+msgstr "Подмодули по указанным путям содержат изменения, которые не найдены ни на одном из внешних репозиториев:\n"
 
-#: transport-helper.c:1378
+#: transport.c:1161
 #, c-format
-msgid "%s process failed to wait"
-msgstr ""
+msgid ""
+"\n"
+"Please try\n"
+"\n"
+"\tgit push --recurse-submodules=on-demand\n"
+"\n"
+"or cd to the path and use\n"
+"\n"
+"\tgit push\n"
+"\n"
+"to push them to a remote.\n"
+"\n"
+msgstr "\nПопробуйте выполнить\n\n\tgit push --recurse-submodules=on-demand\n\nили перейти в каталог с помощью команды cd и выполнить\n\n\tgit push\n\nдля их отправки на внешний репозиторий.\n"
 
-#: transport-helper.c:1382
-#, c-format
-msgid "%s process failed"
-msgstr ""
+#: transport.c:1169
+msgid "Aborting."
+msgstr "Прерываю."
 
-#: transport-helper.c:1400 transport-helper.c:1409
-msgid "can't start thread for copying data"
+#: transport.c:1315
+msgid "failed to push all needed submodules"
 msgstr ""
 
-#: tree-walk.c:33
+#: tree-walk.c:32
 msgid "too-short tree object"
 msgstr "слишком  короткий объект дерева"
 
-#: tree-walk.c:39
+#: tree-walk.c:38
 msgid "malformed mode in tree entry"
 msgstr "неправильный режим в записи дерева"
 
-#: tree-walk.c:43
+#: tree-walk.c:42
 msgid "empty filename in tree entry"
 msgstr "пустое имя файла в записи дерева"
 
-#: tree-walk.c:116
+#: tree-walk.c:117
 msgid "too-short tree file"
 msgstr "слишком  короткий файл дерева"
 
-#: unpack-trees.c:111
+#: unpack-trees.c:113
 #, 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 "Ваши локальные изменения в указанных файлах будут перезаписаны при переключении на состояние:\n%%sСделайте коммит или спрячьте ваши изменения перед переключением веток."
 
-#: unpack-trees.c:113
+#: unpack-trees.c:115
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by checkout:\n"
 "%%s"
 msgstr "Ваши локальные изменения в указанных файлах будут перезаписаны при переключении на состояние:\n%%s"
 
-#: unpack-trees.c:116
+#: unpack-trees.c:118
 #, 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 "Ваши локальные изменения в указанных файлах будут перезаписаны при слиянии:\n%%sСделайте коммит или спрячьте ваши изменения перед слиянием веток."
 
-#: unpack-trees.c:118
+#: unpack-trees.c:120
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by merge:\n"
 "%%s"
 msgstr "Ваши локальные изменения в указанных файлах будут перезаписаны при слиянии:\n%%s"
 
-#: unpack-trees.c:121
+#: unpack-trees.c:123
 #, 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 "Ваши локальные изменения в указанных файлах будут перезаписаны при %s:\n%%sСделайте коммит или спрячьте ваши изменения перед %s."
 
-#: unpack-trees.c:123
+#: unpack-trees.c:125
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by %s:\n"
 "%%s"
 msgstr "Ваши локальные изменения в указанных файлах будут перезаписаны при %s:\n%%s"
 
-#: unpack-trees.c:128
+#: unpack-trees.c:130
 #, c-format
 msgid ""
 "Updating the following directories would lose untracked files in them:\n"
 "%s"
 msgstr "Обновление указанных каталогов приведет к потере неотслеживаемых файлов в них:\n%s"
 
-#: unpack-trees.c:132
+#: unpack-trees.c:134
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by checkout:\n"
 "%%sPlease move or remove them before you switch branches."
 msgstr "Указанные неотслеживаемые файлы в рабочем каталоге будут удалены при переключении на состояние:\n%%sПереместите эти файлы или удалите их перед переключением веток."
 
-#: unpack-trees.c:134
+#: unpack-trees.c:136
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by checkout:\n"
 "%%s"
 msgstr "Указанные неотслеживаемые файлы в рабочем каталоге будут удалены при переключении на состояние:\n%%s"
 
-#: unpack-trees.c:137
+#: unpack-trees.c:139
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by merge:\n"
 "%%sPlease move or remove them before you merge."
 msgstr "Указанные неотслеживаемые файлы в рабочем каталоге будут удалены при слиянии:\n%%sПереместите эти файлы или удалите их перед переключением веток."
 
-#: unpack-trees.c:139
+#: unpack-trees.c:141
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by merge:\n"
 "%%s"
 msgstr "Указанные неотслеживаемые файлы в рабочем каталоге будут удалены при слиянии:\n%%s"
 
-#: unpack-trees.c:142
+#: unpack-trees.c:144
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by %s:\n"
 "%%sPlease move or remove them before you %s."
 msgstr "Указанные неотслеживаемые файлы в рабочем каталоге будут удалены при %s:\n%%sПереместите эти файлы или удалите их перед %s."
 
-#: unpack-trees.c:144
+#: unpack-trees.c:146
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by %s:\n"
 "%%s"
 msgstr "Указанные неотслеживаемые файлы в рабочем каталоге будут удалены при %s:\n%%s"
 
-#: unpack-trees.c:150
+#: unpack-trees.c:152
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by checkout:\n"
 "%%sPlease move or remove them before you switch branches."
 msgstr "Указанные неотслеживаемые файлы в рабочем каталоге будут перезаписаны при переключении на состояние:\n%%sПереместите эти файлы или удалите их перед переключением веток."
 
-#: unpack-trees.c:152
+#: unpack-trees.c:154
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by checkout:\n"
 "%%s"
 msgstr "Указанные неотслеживаемые файлы в рабочем каталоге будут перезаписаны при переключении на состояние:\n%%s"
 
-#: unpack-trees.c:155
+#: unpack-trees.c:157
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by merge:\n"
 "%%sPlease move or remove them before you merge."
 msgstr "Указанные неотслеживаемые файлы в рабочем каталоге будут перезаписаны при слиянии:\n%%sПереместите эти файлы или удалите их перед переключением веток."
 
-#: unpack-trees.c:157
+#: unpack-trees.c:159
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by merge:\n"
 "%%s"
 msgstr "Указанные неотслеживаемые файлы в рабочем каталоге будут перезаписаны при слиянии:\n%%s"
 
-#: unpack-trees.c:160
+#: unpack-trees.c:162
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by %s:\n"
 "%%sPlease move or remove them before you %s."
 msgstr "Указанные неотслеживаемые файлы в рабочем каталоге будут перезаписаны при %s:\n%%sПереместите эти файлы или удалите их перед %s."
 
-#: unpack-trees.c:162
+#: unpack-trees.c:164
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by %s:\n"
 "%%s"
 msgstr "Указанные неотслеживаемые файлы в рабочем каталоге будут перезаписаны при %s:\n%%s"
 
-#: unpack-trees.c:170
+#: unpack-trees.c:172
 #, c-format
 msgid "Entry '%s' overlaps with '%s'.  Cannot bind."
 msgstr "Запись «%s» частично совпадает с «%s».  Не удалось назначить соответствие."
 
-#: unpack-trees.c:173
+#: unpack-trees.c:175
 #, c-format
 msgid ""
-"Cannot update sparse checkout: the following entries are not up to date:\n"
+"Cannot update submodule:\n"
 "%s"
-msgstr "Ð\9dе Ñ\83далоÑ\81Ñ\8c Ð¾Ð±Ð½Ð¾Ð²Ð¸Ñ\82Ñ\8c Ñ\87аÑ\81Ñ\82иÑ\87ное Ñ\81оÑ\81Ñ\82оÑ\8fние: Ñ\81ледÑ\83Ñ\8eÑ\89ие Ñ\8dлеменÑ\82Ñ\8b Ð½Ðµ Ð¿Ð¾Ñ\81ледней Ð²ÐµÑ\80Ñ\81ии:\n%s"
+msgstr "Ð\9dе Ñ\83долоÑ\81Ñ\8c Ð¾Ð±Ð½Ð¾Ð²Ð¸Ñ\82Ñ\8c Ð¿Ð¾Ð´Ð¼Ð¾Ð´Ñ\83лÑ\8c:\n%s"
 
-#: unpack-trees.c:175
+#: unpack-trees.c:178
 #, c-format
 msgid ""
-"The following working tree files would be overwritten by sparse checkout update:\n"
+"The following paths are not up to date and were left despite sparse patterns:\n"
 "%s"
-msgstr "Указанные файлы из рабочего каталога будут перезаписаны при обновлении частичного состояния:\n%s"
+msgstr ""
 
-#: unpack-trees.c:177
+#: unpack-trees.c:180
 #, c-format
 msgid ""
-"The following working tree files would be removed by sparse checkout update:\n"
+"The following paths are unmerged and were left despite sparse patterns:\n"
 "%s"
-msgstr "Указанные файлы из рабочего каталога будут удалены при обновлении частичного состояния:\n%s"
+msgstr ""
 
-#: unpack-trees.c:179
+#: unpack-trees.c:182
 #, c-format
 msgid ""
-"Cannot update submodule:\n"
+"The following paths were already present and thus not updated despite sparse patterns:\n"
 "%s"
-msgstr "Не удолось обновить подмодуль:\n%s"
+msgstr ""
 
-#: unpack-trees.c:256
+#: unpack-trees.c:262
 #, c-format
 msgid "Aborting\n"
 msgstr "Прерываю\n"
 
-#: unpack-trees.c:318
-msgid "Checking out files"
-msgstr "Распаковка файлов"
+#: unpack-trees.c:289
+#, c-format
+msgid ""
+"After fixing the above paths, you may want to run `git sparse-checkout "
+"reapply`.\n"
+msgstr "После исправления указанных путей вы можете запустить «git sparse-checkout reapply».\n"
 
 #: unpack-trees.c:350
+msgid "Updating files"
+msgstr ""
+
+#: unpack-trees.c:382
 msgid ""
 "the following paths have collided (e.g. case-sensitive paths\n"
 "on a case-insensitive filesystem) and only one from the same\n"
 "colliding group is in the working tree:\n"
 msgstr ""
 
+#: unpack-trees.c:1498
+msgid "Updating index flags"
+msgstr ""
+
+#: upload-pack.c:1550
+msgid "expected flush after fetch arguments"
+msgstr ""
+
 #: urlmatch.c:163
 msgid "invalid URL scheme name or missing '://' suffix"
 msgstr "Неправильная имя URL схемы или пропущен суффикс «://»"
@@ -7222,179 +8464,221 @@ msgstr "неправильный номер порта"
 msgid "invalid '..' path segment"
 msgstr "неправильная часть пути «..»"
 
-#: worktree.c:255 builtin/am.c:2097
+#: walker.c:170
+msgid "Fetching objects"
+msgstr ""
+
+#: worktree.c:236 builtin/am.c:2103
 #, c-format
 msgid "failed to read '%s'"
 msgstr "не удалось прочитать «%s»"
 
-#: worktree.c:301
+#: worktree.c:283
 #, c-format
 msgid "'%s' at main working tree is not the repository directory"
 msgstr ""
 
-#: worktree.c:312
+#: worktree.c:294
 #, c-format
 msgid "'%s' file does not contain absolute path to the working tree location"
 msgstr ""
 
-#: worktree.c:324
+#: worktree.c:306
 #, c-format
 msgid "'%s' does not exist"
 msgstr "«%s» не существует"
 
-#: worktree.c:330
+#: worktree.c:312
 #, c-format
 msgid "'%s' is not a .git file, error code %d"
 msgstr ""
 
-#: worktree.c:338
+#: worktree.c:321
 #, c-format
 msgid "'%s' does not point back to '%s'"
 msgstr ""
 
-#: wrapper.c:223 wrapper.c:393
+#: worktree.c:587
+msgid "not a directory"
+msgstr ""
+
+#: worktree.c:596
+msgid ".git is not a file"
+msgstr ""
+
+#: worktree.c:598
+msgid ".git file broken"
+msgstr ""
+
+#: worktree.c:600
+msgid ".git file incorrect"
+msgstr ""
+
+#: worktree.c:670
+msgid "not a valid path"
+msgstr ""
+
+#: worktree.c:676
+msgid "unable to locate repository; .git is not a file"
+msgstr ""
+
+#: worktree.c:679
+msgid "unable to locate repository; .git file broken"
+msgstr ""
+
+#: worktree.c:685
+msgid "gitdir unreadable"
+msgstr ""
+
+#: worktree.c:689
+msgid "gitdir incorrect"
+msgstr ""
+
+#: wrapper.c:197 wrapper.c:367
 #, c-format
 msgid "could not open '%s' for reading and writing"
 msgstr "не удалось открыть «%s» для чтения и записи"
 
-#: wrapper.c:424 wrapper.c:624
+#: wrapper.c:398 wrapper.c:599
 #, c-format
 msgid "unable to access '%s'"
 msgstr "«%s» недоступно"
 
-#: wrapper.c:632
+#: wrapper.c:607
 msgid "unable to get current working directory"
 msgstr "не удалось получить текущий рабочий каталог"
 
-#: wt-status.c:156
+#: wt-status.c:158
 msgid "Unmerged paths:"
 msgstr "Не слитые пути:"
 
-#: wt-status.c:183 wt-status.c:210
+#: wt-status.c:187 wt-status.c:219
+msgid "  (use \"git restore --staged <file>...\" to unstage)"
+msgstr "  (используйте «git restore --staged <файл>…», чтобы убрать из индекса)"
+
+#: wt-status.c:190 wt-status.c:222
 #, c-format
-msgid "  (use \"git reset %s <file>...\" to unstage)"
-msgstr "  (используйте «git reset %s <файл>…», чтобы убрать из индекса)"
+msgid "  (use \"git restore --source=%s --staged <file>...\" to unstage)"
+msgstr "  (используйте «git restore --source=%s --staged <файл>…», чтобы убрать из индекса)"
 
-#: wt-status.c:185 wt-status.c:212
+#: wt-status.c:193 wt-status.c:225
 msgid "  (use \"git rm --cached <file>...\" to unstage)"
 msgstr "  (используйте «git rm --cached <файл>…», чтобы убрать из индекса)"
 
-#: wt-status.c:189
+#: wt-status.c:197
 msgid "  (use \"git add <file>...\" to mark resolution)"
 msgstr "  (используйте «git add <файл>…», чтобы пометить разрешение конфликта)"
 
-#: wt-status.c:191 wt-status.c:195
+#: wt-status.c:199 wt-status.c:203
 msgid "  (use \"git add/rm <file>...\" as appropriate to mark resolution)"
 msgstr "  (используйте «git add/rm <файл>…», чтобы пометить выбранное разрешение конфликта)"
 
-#: wt-status.c:193
+#: wt-status.c:201
 msgid "  (use \"git rm <file>...\" to mark resolution)"
 msgstr "  (используйте «git rm <файл>…», чтобы пометить разрешение конфликта)"
 
-#: wt-status.c:204 wt-status.c:1064
+#: wt-status.c:211 wt-status.c:1070
 msgid "Changes to be committed:"
 msgstr "Изменения, которые будут включены в коммит:"
 
-#: wt-status.c:222 wt-status.c:1073
+#: wt-status.c:234 wt-status.c:1079
 msgid "Changes not staged for commit:"
 msgstr "Изменения, которые не в индексе для коммита:"
 
-#: wt-status.c:226
+#: wt-status.c:238
 msgid "  (use \"git add <file>...\" to update what will be committed)"
 msgstr "  (используйте «git add <файл>…», чтобы добавить файл в индекс)"
 
-#: wt-status.c:228
+#: wt-status.c:240
 msgid "  (use \"git add/rm <file>...\" to update what will be committed)"
 msgstr "  (используйте «git add/rm <файл>…», чтобы добавить или удалить файл из индекса)"
 
-#: wt-status.c:229
-msgid ""
-"  (use \"git checkout -- <file>...\" to discard changes in working "
-"directory)"
-msgstr "  (используйте «git checkout -- <файл>…», чтобы отменить изменения\n   в рабочем каталоге)"
+#: wt-status.c:241
+msgid "  (use \"git restore <file>...\" to discard changes in working directory)"
+msgstr "  (используйте «git restore <файл>…», чтобы отменить изменения в рабочем каталоге)"
 
-#: wt-status.c:231
+#: wt-status.c:243
 msgid "  (commit or discard the untracked or modified content in submodules)"
 msgstr "  (сделайте коммит или отмените изменения в неотслеживаемом или измененном содержимом в подмодулях)"
 
-#: wt-status.c:243
+#: wt-status.c:254
 #, c-format
 msgid "  (use \"git %s <file>...\" to include in what will be committed)"
 msgstr "  (используйте «git %s <файл>…», чтобы добавить в то, что будет включено в коммит)"
 
-#: wt-status.c:258
+#: wt-status.c:266
 msgid "both deleted:"
 msgstr "оба удалены:"
 
-#: wt-status.c:260
+#: wt-status.c:268
 msgid "added by us:"
 msgstr "добавлено нами:"
 
-#: wt-status.c:262
+#: wt-status.c:270
 msgid "deleted by them:"
 msgstr "удалено ими:"
 
-#: wt-status.c:264
+#: wt-status.c:272
 msgid "added by them:"
 msgstr "добавлено ими:"
 
-#: wt-status.c:266
+#: wt-status.c:274
 msgid "deleted by us:"
 msgstr "удалено нами:"
 
-#: wt-status.c:268
+#: wt-status.c:276
 msgid "both added:"
 msgstr "оба добавлены:"
 
-#: wt-status.c:270
+#: wt-status.c:278
 msgid "both modified:"
 msgstr "оба изменены:"
 
-#: wt-status.c:280
+#: wt-status.c:288
 msgid "new file:"
 msgstr "новый файл:"
 
-#: wt-status.c:282
+#: wt-status.c:290
 msgid "copied:"
 msgstr "скопировано:"
 
-#: wt-status.c:284
+#: wt-status.c:292
 msgid "deleted:"
 msgstr "удалено:"
 
-#: wt-status.c:286
+#: wt-status.c:294
 msgid "modified:"
 msgstr "изменено:"
 
-#: wt-status.c:288
+#: wt-status.c:296
 msgid "renamed:"
 msgstr "переименовано:"
 
-#: wt-status.c:290
+#: wt-status.c:298
 msgid "typechange:"
 msgstr "изменен тип:"
 
-#: wt-status.c:292
+#: wt-status.c:300
 msgid "unknown:"
 msgstr "неизвестно:"
 
-#: wt-status.c:294
+#: wt-status.c:302
 msgid "unmerged:"
 msgstr "не слитые:"
 
-#: wt-status.c:374
+#: wt-status.c:382
 msgid "new commits, "
 msgstr "новые коммиты, "
 
-#: wt-status.c:376
+#: wt-status.c:384
 msgid "modified content, "
 msgstr "изменено содержимое, "
 
-#: wt-status.c:378
+#: wt-status.c:386
 msgid "untracked content, "
 msgstr "неотслеживаемое содержимое, "
 
-#: wt-status.c:896
+#: wt-status.c:903
 #, c-format
 msgid "Your stash currently has %d entry"
 msgid_plural "Your stash currently has %d entries"
@@ -7403,69 +8687,77 @@ msgstr[1] "У вас сейчас спрятаны %d записи"
 msgstr[2] "У вас сейчас спрятано %d записей"
 msgstr[3] "У вас сейчас спрятаны %d записи"
 
-#: wt-status.c:928
+#: wt-status.c:934
 msgid "Submodules changed but not updated:"
 msgstr "Измененные, но не обновленные подмодули:"
 
-#: wt-status.c:930
+#: wt-status.c:936
 msgid "Submodule changes to be committed:"
 msgstr "Изменения в подмодулях, которые будут закоммичены:"
 
-#: wt-status.c:1012
+#: wt-status.c:1018
 msgid ""
 "Do not modify or remove the line above.\n"
 "Everything below it will be ignored."
 msgstr "Не изменяйте или удаляйте строку выше этой.\nВсё, что ниже — будет проигнорировано."
 
-#: wt-status.c:1119
+#: wt-status.c:1110
+#, c-format
+msgid ""
+"\n"
+"It took %.2f seconds to compute the branch ahead/behind values.\n"
+"You can use '--no-ahead-behind' to avoid this.\n"
+msgstr ""
+
+#: wt-status.c:1140
 msgid "You have unmerged paths."
 msgstr "У вас есть не слитые пути."
 
-#: wt-status.c:1122
+#: wt-status.c:1143
 msgid "  (fix conflicts and run \"git commit\")"
 msgstr "  (разрешите конфликты, затем запустите «git commit»)"
 
-#: wt-status.c:1124
+#: wt-status.c:1145
 msgid "  (use \"git merge --abort\" to abort the merge)"
 msgstr "  (используйте «git merge --abort», чтобы остановить операцию слияния)"
 
-#: wt-status.c:1128
+#: wt-status.c:1149
 msgid "All conflicts fixed but you are still merging."
 msgstr "Все конфликты исправлены, но вы все еще в процессе слияния."
 
-#: wt-status.c:1131
+#: wt-status.c:1152
 msgid "  (use \"git commit\" to conclude merge)"
 msgstr "  (используйте «git commit», чтобы завершить слияние)"
 
-#: wt-status.c:1140
+#: wt-status.c:1161
 msgid "You are in the middle of an am session."
 msgstr "Вы в процессе сессии am."
 
-#: wt-status.c:1143
+#: wt-status.c:1164
 msgid "The current patch is empty."
 msgstr "Текущий патч пустой."
 
-#: wt-status.c:1147
+#: wt-status.c:1168
 msgid "  (fix conflicts and then run \"git am --continue\")"
 msgstr "  (разрешите конфликты, затем запустите «git am --continue»)"
 
-#: wt-status.c:1149
+#: wt-status.c:1170
 msgid "  (use \"git am --skip\" to skip this patch)"
 msgstr "  (используйте «git am --skip», чтобы пропустить этот патч)"
 
-#: wt-status.c:1151
+#: wt-status.c:1172
 msgid "  (use \"git am --abort\" to restore the original branch)"
 msgstr "  (используйте «git am --abort», чтобы восстановить оригинальную ветку)"
 
-#: wt-status.c:1284
+#: wt-status.c:1305
 msgid "git-rebase-todo is missing."
 msgstr "git-rebase-todo отсутствует."
 
-#: wt-status.c:1286
+#: wt-status.c:1307
 msgid "No commands done."
 msgstr "Команды не выполнены."
 
-#: wt-status.c:1289
+#: wt-status.c:1310
 #, c-format
 msgid "Last command done (%d command done):"
 msgid_plural "Last commands done (%d commands done):"
@@ -7474,16 +8766,16 @@ msgstr[1] "Последняя команда выполнена (%d команд
 msgstr[2] "Последняя команда выполнена (%d команд выполнено):"
 msgstr[3] "Последняя команда выполнена (%d команд выполнено):"
 
-#: wt-status.c:1300
+#: wt-status.c:1321
 #, c-format
 msgid "  (see more in file %s)"
 msgstr "  (смотрите дополнительно в файле %s)"
 
-#: wt-status.c:1305
+#: wt-status.c:1326
 msgid "No commands remaining."
 msgstr "Команд больше не осталось."
 
-#: wt-status.c:1308
+#: wt-status.c:1329
 #, c-format
 msgid "Next command to do (%d remaining command):"
 msgid_plural "Next commands to do (%d remaining commands):"
@@ -7492,170 +8784,175 @@ msgstr[1] "Следующая команда для выполнения (%d к
 msgstr[2] "Следующая команда для выполнения (%d команд осталось):"
 msgstr[3] "Следующая команда для выполнения (%d команд осталось):"
 
-#: wt-status.c:1316
+#: wt-status.c:1337
 msgid "  (use \"git rebase --edit-todo\" to view and edit)"
-msgstr "  (используйте «git rebase --edit-todo», чтобы просмотреть и изменить)"
+msgstr "  (используйте «git rebase --edit-todo», чтобы просмотреть или изменить их)"
 
-#: wt-status.c:1328
+#: wt-status.c:1349
 #, c-format
 msgid "You are currently rebasing branch '%s' on '%s'."
 msgstr "Вы сейчас перемещаете ветку «%s» над «%s»."
 
-#: wt-status.c:1333
+#: wt-status.c:1354
 msgid "You are currently rebasing."
 msgstr "Вы сейчас перемещаете ветку."
 
-#: wt-status.c:1346
+#: wt-status.c:1367
 msgid "  (fix conflicts and then run \"git rebase --continue\")"
 msgstr "  (разрешите конфликты, затем запустите «git rebase --continue»)"
 
-#: wt-status.c:1348
+#: wt-status.c:1369
 msgid "  (use \"git rebase --skip\" to skip this patch)"
 msgstr "  (используйте «git rebase --skip», чтобы пропустить этот патч)"
 
-#: wt-status.c:1350
+#: wt-status.c:1371
 msgid "  (use \"git rebase --abort\" to check out the original branch)"
 msgstr "  (используйте «git rebase --abort», чтобы перейти на оригинальную ветку)"
 
-#: wt-status.c:1357
+#: wt-status.c:1378
 msgid "  (all conflicts fixed: run \"git rebase --continue\")"
 msgstr "  (все конфликты разрешены: запустите «git rebase --continue»)"
 
-#: wt-status.c:1361
+#: wt-status.c:1382
 #, c-format
 msgid ""
 "You are currently splitting a commit while rebasing branch '%s' on '%s'."
 msgstr "Вы сейчас разделяете коммит при перемещении ветки  «%s» над «%s»."
 
-#: wt-status.c:1366
+#: wt-status.c:1387
 msgid "You are currently splitting a commit during a rebase."
 msgstr "Вы сейчас разделяете коммит при перемещении ветки."
 
-#: wt-status.c:1369
+#: wt-status.c:1390
 msgid "  (Once your working directory is clean, run \"git rebase --continue\")"
-msgstr "(Как только ваш рабочий каталог будет чистый, запустите «git rebase --continue»)"
+msgstr "  (Как только ваш рабочий каталог будет чистый, запустите «git rebase --continue»)"
 
-#: wt-status.c:1373
+#: wt-status.c:1394
 #, c-format
 msgid "You are currently editing a commit while rebasing branch '%s' on '%s'."
 msgstr "Вы сейчас редактируете коммит при перемещении ветки  «%s» над «%s»."
 
-#: wt-status.c:1378
+#: wt-status.c:1399
 msgid "You are currently editing a commit during a rebase."
 msgstr "Вы сейчас редактируете коммит при перемещении ветки."
 
-#: wt-status.c:1381
+#: wt-status.c:1402
 msgid "  (use \"git commit --amend\" to amend the current commit)"
 msgstr "  (используйте «git commit --amend», чтобы исправить текущий коммит)"
 
-#: wt-status.c:1383
+#: wt-status.c:1404
 msgid "  (use \"git rebase --continue\" once you are satisfied with your changes)"
 msgstr "  (используйте «git rebase --continue», когда будете довольны изменениями)"
 
-#: wt-status.c:1394
+#: wt-status.c:1415
 msgid "Cherry-pick currently in progress."
 msgstr ""
 
-#: wt-status.c:1397
+#: wt-status.c:1418
 #, c-format
 msgid "You are currently cherry-picking commit %s."
 msgstr "Вы копируете коммит %s."
 
-#: wt-status.c:1404
+#: wt-status.c:1425
 msgid "  (fix conflicts and run \"git cherry-pick --continue\")"
 msgstr "  (разрешите конфликты, затем запустите «git cherry-pick --continue»)"
 
-#: wt-status.c:1407
+#: wt-status.c:1428
 msgid "  (run \"git cherry-pick --continue\" to continue)"
 msgstr ""
 
-#: wt-status.c:1410
+#: wt-status.c:1431
 msgid "  (all conflicts fixed: run \"git cherry-pick --continue\")"
 msgstr "  (все конфликты разрешены: запустите «git cherry-pick --continue»)"
 
-#: wt-status.c:1412
+#: wt-status.c:1433
+msgid "  (use \"git cherry-pick --skip\" to skip this patch)"
+msgstr ""
+
+#: wt-status.c:1435
 msgid "  (use \"git cherry-pick --abort\" to cancel the cherry-pick operation)"
 msgstr "  (используйте «git cherry-pick --abort», чтобы отменить копирования коммита)"
 
-#: wt-status.c:1422
+#: wt-status.c:1445
 msgid "Revert currently in progress."
 msgstr ""
 
-#: wt-status.c:1425
+#: wt-status.c:1448
 #, c-format
 msgid "You are currently reverting commit %s."
 msgstr "Вы сейчас обращаете изменения коммита %s."
 
-#: wt-status.c:1431
+#: wt-status.c:1454
 msgid "  (fix conflicts and run \"git revert --continue\")"
 msgstr "  (разрешите конфликты, затем запустите «git revert --continue»)"
 
-#: wt-status.c:1434
+#: wt-status.c:1457
 msgid "  (run \"git revert --continue\" to continue)"
 msgstr ""
 
-#: wt-status.c:1437
+#: wt-status.c:1460
 msgid "  (all conflicts fixed: run \"git revert --continue\")"
 msgstr "  (все конфликты разрешены: запустите «git revert --continue»)"
 
-#: wt-status.c:1439
+#: wt-status.c:1462
+msgid "  (use \"git revert --skip\" to skip this patch)"
+msgstr ""
+
+#: wt-status.c:1464
 msgid "  (use \"git revert --abort\" to cancel the revert operation)"
 msgstr "  (используйте «git revert --abort», чтобы отменить операцию обращения изменений коммита)"
 
-#: wt-status.c:1449
+#: wt-status.c:1474
 #, c-format
 msgid "You are currently bisecting, started from branch '%s'."
 msgstr "Вы сейчас в процессе двоичного поиска, начатого с ветки «%s»."
 
-#: wt-status.c:1453
+#: wt-status.c:1478
 msgid "You are currently bisecting."
 msgstr "Вы сейчас в процессе двоичного поиска."
 
-#: wt-status.c:1456
+#: wt-status.c:1481
 msgid "  (use \"git bisect reset\" to get back to the original branch)"
 msgstr "  (используйте «git bisect reset», чтобы вернуться на исходную ветку)"
 
-#: wt-status.c:1665
+#: wt-status.c:1492
+#, c-format
+msgid "You are in a sparse checkout with %d%% of tracked files present."
+msgstr ""
+
+#: wt-status.c:1731
 msgid "On branch "
 msgstr "На ветке "
 
-#: wt-status.c:1672
+#: wt-status.c:1738
 msgid "interactive rebase in progress; onto "
 msgstr "интерактивное перемещение в процессе; над "
 
-#: wt-status.c:1674
+#: wt-status.c:1740
 msgid "rebase in progress; onto "
 msgstr "перемещение в процессе; над "
 
-#: wt-status.c:1679
-msgid "HEAD detached at "
-msgstr "HEAD отделён на "
-
-#: wt-status.c:1681
-msgid "HEAD detached from "
-msgstr "HEAD отделён начиная с "
-
-#: wt-status.c:1684
+#: wt-status.c:1750
 msgid "Not currently on any branch."
 msgstr "Сейчас ни на одной из веток"
 
-#: wt-status.c:1701
+#: wt-status.c:1767
 msgid "Initial commit"
 msgstr "Начальный коммит"
 
-#: wt-status.c:1702
+#: wt-status.c:1768
 msgid "No commits yet"
 msgstr "Еще нет коммитов"
 
-#: wt-status.c:1716
+#: wt-status.c:1782
 msgid "Untracked files"
 msgstr "Неотслеживаемые файлы"
 
-#: wt-status.c:1718
+#: wt-status.c:1784
 msgid "Ignored files"
 msgstr "Игнорируемые файлы"
 
-#: wt-status.c:1722
+#: wt-status.c:1788
 #, c-format
 msgid ""
 "It took %.2f seconds to enumerate untracked files. 'status -uno'\n"
@@ -7663,216 +8960,225 @@ msgid ""
 "new files yourself (see 'git help status')."
 msgstr "%.2f секунды занял вывод списка неотслеживаемых файлов. «status -uno» возможно может ускорить это, но будьте внимательны, и не забудьте добавить новые файлы вручную (смотрите «git help status» для подробностей)."
 
-#: wt-status.c:1728
+#: wt-status.c:1794
 #, c-format
 msgid "Untracked files not listed%s"
 msgstr "Неотслеживаемые файлы не показаны%s"
 
-#: wt-status.c:1730
+#: wt-status.c:1796
 msgid " (use -u option to show untracked files)"
-msgstr "(используйте опцию «-u», чтобы показать неотслеживаемые файлы)"
+msgstr " (используйте опцию «-u», чтобы показать неотслеживаемые файлы)"
 
-#: wt-status.c:1736
+#: wt-status.c:1802
 msgid "No changes"
 msgstr "Нет изменений"
 
-#: wt-status.c:1741
+#: wt-status.c:1807
 #, c-format
 msgid "no changes added to commit (use \"git add\" and/or \"git commit -a\")\n"
 msgstr "нет изменений добавленных для коммита\n(используйте «git add» и/или «git commit -a»)\n"
 
-#: wt-status.c:1744
+#: wt-status.c:1811
 #, c-format
 msgid "no changes added to commit\n"
 msgstr "нет изменений добавленных для коммита\n"
 
-#: wt-status.c:1747
+#: wt-status.c:1815
 #, c-format
 msgid ""
 "nothing added to commit but untracked files present (use \"git add\" to "
 "track)\n"
 msgstr "ничего не добавлено в коммит, но есть неотслеживаемые файлы (используйте «git add», чтобы отслеживать их)\n"
 
-#: wt-status.c:1750
+#: wt-status.c:1819
 #, c-format
 msgid "nothing added to commit but untracked files present\n"
 msgstr "ничего не добавлено в коммит, но есть неотслеживаемые файлы\n"
 
-#: wt-status.c:1753
+#: wt-status.c:1823
 #, c-format
 msgid "nothing to commit (create/copy files and use \"git add\" to track)\n"
 msgstr "нечего коммитить (создайте/скопируйте файлы, затем запустите «git add», чтобы отслеживать их)\n"
 
-#: wt-status.c:1756 wt-status.c:1761
+#: wt-status.c:1827 wt-status.c:1833
 #, c-format
 msgid "nothing to commit\n"
 msgstr "нечего коммитить\n"
 
-#: wt-status.c:1759
+#: wt-status.c:1830
 #, c-format
 msgid "nothing to commit (use -u to show untracked files)\n"
 msgstr "нечего коммитить (используйте опцию «-u», чтобы показать неотслеживаемые файлы)\n"
 
-#: wt-status.c:1763
+#: wt-status.c:1835
 #, c-format
 msgid "nothing to commit, working tree clean\n"
 msgstr "нечего коммитить, нет изменений в рабочем каталоге\n"
 
-#: wt-status.c:1876
+#: wt-status.c:1940
 msgid "No commits yet on "
-msgstr "Еще нет коммитов в"
+msgstr "Еще нет коммитов в "
 
-#: wt-status.c:1880
+#: wt-status.c:1944
 msgid "HEAD (no branch)"
 msgstr "HEAD (нет ветки)"
 
-#: wt-status.c:1911
+#: wt-status.c:1975
 msgid "different"
 msgstr "отличается"
 
-#: wt-status.c:1913 wt-status.c:1921
+#: wt-status.c:1977 wt-status.c:1985
 msgid "behind "
-msgstr "позади"
+msgstr "позади "
 
-#: wt-status.c:1916 wt-status.c:1919
+#: wt-status.c:1980 wt-status.c:1983
 msgid "ahead "
 msgstr "впереди "
 
 #. TRANSLATORS: the action is e.g. "pull with rebase"
-#: wt-status.c:2443
+#: wt-status.c:2505
 #, c-format
 msgid "cannot %s: You have unstaged changes."
 msgstr "не удалось выполнить %s: У вас есть непроиндексированные изменения."
 
-#: wt-status.c:2449
+#: wt-status.c:2511
 msgid "additionally, your index contains uncommitted changes."
 msgstr "к тому же, в вашем индексе есть незакоммиченные изменения."
 
-#: wt-status.c:2451
+#: wt-status.c:2513
 #, c-format
 msgid "cannot %s: Your index contains uncommitted changes."
 msgstr "не удалось выполнить %s: В вашем индексе есть незакоммиченные изменения."
 
-#: builtin/add.c:25
+#: compat/precompose_utf8.c:58 builtin/clone.c:457
+#, c-format
+msgid "failed to unlink '%s'"
+msgstr "сбой отсоединения «%s»"
+
+#: builtin/add.c:26
 msgid "git add [<options>] [--] <pathspec>..."
 msgstr "git add [<опции>] [--] <спецификатор-пути>…"
 
-#: builtin/add.c:84
+#: builtin/add.c:88
 #, c-format
 msgid "unexpected diff status %c"
 msgstr "неожиданный статус утилиты сравнения %c"
 
-#: builtin/add.c:89 builtin/commit.c:285
+#: builtin/add.c:93 builtin/commit.c:285
 msgid "updating files failed"
 msgstr "сбой при обновлении файлов"
 
-#: builtin/add.c:99
+#: builtin/add.c:103
 #, c-format
 msgid "remove '%s'\n"
 msgstr "удалить «%s»\n"
 
-#: builtin/add.c:174
+#: builtin/add.c:178
 msgid "Unstaged changes after refreshing the index:"
 msgstr "Непроиндексированные изменения после обновления индекса:"
 
-#: builtin/add.c:234 builtin/rev-parse.c:896
+#: builtin/add.c:272 builtin/rev-parse.c:908
 msgid "Could not read the index"
 msgstr "Не удалось прочитать индекс"
 
-#: builtin/add.c:245
+#: builtin/add.c:283
 #, c-format
 msgid "Could not open '%s' for writing."
 msgstr "Не удалось открыть «%s» для записи."
 
-#: builtin/add.c:249
+#: builtin/add.c:287
 msgid "Could not write patch"
 msgstr "Не удалось записать патч"
 
-#: builtin/add.c:252
+#: builtin/add.c:290
 msgid "editing patch failed"
 msgstr "сбой при редактировании патча"
 
-#: builtin/add.c:255
+#: builtin/add.c:293
 #, c-format
 msgid "Could not stat '%s'"
 msgstr "Не удалось выполнить stat для «%s»"
 
-#: builtin/add.c:257
+#: builtin/add.c:295
 msgid "Empty patch. Aborted."
 msgstr "Пустой патч. Операция прервана."
 
-#: builtin/add.c:262
+#: builtin/add.c:300
 #, c-format
 msgid "Could not apply '%s'"
 msgstr "Не удалось применить «%s»"
 
-#: builtin/add.c:270
+#: builtin/add.c:308
 msgid "The following paths are ignored by one of your .gitignore files:\n"
 msgstr "Следующие пути игнорируются одним из ваших файлов .gitignore:\n"
 
-#: builtin/add.c:290 builtin/clean.c:908 builtin/fetch.c:137 builtin/mv.c:124
-#: builtin/prune-packed.c:56 builtin/pull.c:221 builtin/push.c:560
-#: builtin/remote.c:1345 builtin/rm.c:241 builtin/send-pack.c:165
+#: builtin/add.c:328 builtin/clean.c:904 builtin/fetch.c:166 builtin/mv.c:124
+#: builtin/prune-packed.c:14 builtin/pull.c:204 builtin/push.c:559
+#: builtin/remote.c:1427 builtin/rm.c:242 builtin/send-pack.c:190
 msgid "dry run"
 msgstr "пробный запуск"
 
-#: builtin/add.c:293
+#: builtin/add.c:331
 msgid "interactive picking"
 msgstr "интерактивный выбор"
 
-#: builtin/add.c:294 builtin/checkout.c:1379 builtin/reset.c:306
+#: builtin/add.c:332 builtin/checkout.c:1547 builtin/reset.c:308
 msgid "select hunks interactively"
 msgstr "интерактивный выбор блоков"
 
-#: builtin/add.c:295
+#: builtin/add.c:333
 msgid "edit current diff and apply"
 msgstr "отредактировать текущий файл списка изменений и применить его"
 
-#: builtin/add.c:296
+#: builtin/add.c:334
 msgid "allow adding otherwise ignored files"
 msgstr "разрешить добавление игнорируемых иначе файлов"
 
-#: builtin/add.c:297
+#: builtin/add.c:335
 msgid "update tracked files"
 msgstr "обновить отслеживаемые файлы"
 
-#: builtin/add.c:298
+#: builtin/add.c:336
 msgid "renormalize EOL of tracked files (implies -u)"
 msgstr "перенормализировать концы строк (EOL) отслеживаемых файлов (подразумевает -u)"
 
-#: builtin/add.c:299
+#: builtin/add.c:337
 msgid "record only the fact that the path will be added later"
 msgstr "записать только факт, что путь будет добавлен позже"
 
-#: builtin/add.c:300
+#: builtin/add.c:338
 msgid "add changes from all tracked and untracked files"
 msgstr "добавить изменения из всех отслеживаемых и неотслеживаемых файлов"
 
-#: builtin/add.c:303
+#: builtin/add.c:341
 msgid "ignore paths removed in the working tree (same as --no-all)"
 msgstr "игнорировать пути удаленные из рабочего каталога (тоже, что и --no-all)"
 
-#: builtin/add.c:305
+#: builtin/add.c:343
 msgid "don't add, only refresh the index"
 msgstr "не добавлять, только обновить индекс"
 
-#: builtin/add.c:306
+#: builtin/add.c:344
 msgid "just skip files which cannot be added because of errors"
 msgstr "пропускать файлы, которые не могут быть добавлены из-за ошибок"
 
-#: builtin/add.c:307
+#: builtin/add.c:345
 msgid "check if - even missing - files are ignored in dry run"
 msgstr "удостовериться, что даже недостающие файлы будут проигнорированы при  пробном запуске"
 
-#: builtin/add.c:309 builtin/update-index.c:1001
+#: builtin/add.c:347 builtin/update-index.c:1004
 msgid "override the executable bit of the listed files"
 msgstr "переопределить бит выполнения на указанных файлах"
 
-#: builtin/add.c:311
+#: builtin/add.c:349
 msgid "warn when adding an embedded repository"
 msgstr "предупреждать при добавлении встроенного git репозитория"
 
-#: builtin/add.c:326
+#: builtin/add.c:351
+msgid "backend for `git stash -p`"
+msgstr ""
+
+#: builtin/add.c:369
 #, c-format
 msgid ""
 "You've added another git repository inside your current repository.\n"
@@ -7890,399 +9196,434 @@ msgid ""
 "See \"git help submodule\" for more information."
 msgstr "Вы добавили другой репозиторий git внутри текущего репозитория\nКлоны внешнего репозитория не будут содержать внутренний\nрепозиторий и не будут знать как его получить.\nЕсли вы хотели добавить подмодуль, то запустите:\n\n\tgit submodule add <url> %s\n\nЕсли бы добавили этот путь по ошибке, то вы можете удалить его\nиз индекса с помощью:\n\n\tgit rm --cached %s\n\nДля дополнительной информации смотрите «git help submodule»."
 
-#: builtin/add.c:354
+#: builtin/add.c:397
 #, c-format
 msgid "adding embedded git repository: %s"
 msgstr "добавление встроенного git репозитория: %s"
 
-#: builtin/add.c:372
-#, c-format
-msgid "Use -f if you really want to add them.\n"
-msgstr "Используйте -f, если вы действительно хотите добавить их.\n"
+#: builtin/add.c:416
+msgid ""
+"Use -f if you really want to add them.\n"
+"Turn this message off by running\n"
+"\"git config advice.addIgnoredFile false\""
+msgstr ""
 
-#: builtin/add.c:379
+#: builtin/add.c:425
 msgid "adding files failed"
 msgstr "ошибка при добавлении файлов"
 
-#: builtin/add.c:419
+#: builtin/add.c:453 builtin/commit.c:345
+msgid "--pathspec-from-file is incompatible with --interactive/--patch"
+msgstr ""
+
+#: builtin/add.c:470
+msgid "--pathspec-from-file is incompatible with --edit"
+msgstr ""
+
+#: builtin/add.c:482
 msgid "-A and -u are mutually incompatible"
 msgstr "-A и -u нельзя использовать одновременно"
 
-#: builtin/add.c:426
+#: builtin/add.c:485
 msgid "Option --ignore-missing can only be used together with --dry-run"
 msgstr "Опция --ignore-missing может использоваться только вместе с --dry-run"
 
-#: builtin/add.c:430
+#: builtin/add.c:489
 #, c-format
 msgid "--chmod param '%s' must be either -x or +x"
 msgstr "параметр --chmod «%s» должен быть -x или +x"
 
-#: builtin/add.c:445
+#: builtin/add.c:507 builtin/checkout.c:1715 builtin/commit.c:351
+#: builtin/reset.c:328 builtin/rm.c:272 builtin/stash.c:1502
+msgid "--pathspec-from-file is incompatible with pathspec arguments"
+msgstr ""
+
+#: builtin/add.c:514 builtin/checkout.c:1727 builtin/commit.c:357
+#: builtin/reset.c:334 builtin/rm.c:278 builtin/stash.c:1508
+msgid "--pathspec-file-nul requires --pathspec-from-file"
+msgstr ""
+
+#: builtin/add.c:518
 #, c-format
 msgid "Nothing specified, nothing added.\n"
 msgstr "Ничего не указано, ничего не добавлено.\n"
 
-#: builtin/add.c:446
-#, c-format
-msgid "Maybe you wanted to say 'git add .'?\n"
-msgstr "Возможно, вы имели в виду «git add .»?\n"
+#: builtin/add.c:520
+msgid ""
+"Maybe you wanted to say 'git add .'?\n"
+"Turn this message off by running\n"
+"\"git config advice.addEmptyPathspec false\""
+msgstr ""
 
-#: builtin/am.c:348
+#: builtin/am.c:352
 msgid "could not parse author script"
 msgstr "не удалось разобрать сценарий авторства"
 
-#: builtin/am.c:432
+#: builtin/am.c:436
 #, c-format
 msgid "'%s' was deleted by the applypatch-msg hook"
 msgstr "«%s» был удален перехватчиком applypatch-msg"
 
-#: builtin/am.c:474
+#: builtin/am.c:478
 #, c-format
 msgid "Malformed input line: '%s'."
 msgstr "Неправильная строка ввода: «%s»."
 
-#: builtin/am.c:512
+#: builtin/am.c:516
 #, c-format
 msgid "Failed to copy notes from '%s' to '%s'"
 msgstr "Не удалось скопировать заметку из «%s» в «%s»"
 
-#: builtin/am.c:538
+#: builtin/am.c:542
 msgid "fseek failed"
 msgstr "сбой при выполнении fseek"
 
-#: builtin/am.c:726
+#: builtin/am.c:730
 #, c-format
 msgid "could not parse patch '%s'"
 msgstr "не удалось разобрать патч «%s»"
 
-#: builtin/am.c:791
+#: builtin/am.c:795
 msgid "Only one StGIT patch series can be applied at once"
 msgstr "Только серия патчей StGIT может быть применена за раз"
 
-#: builtin/am.c:839
+#: builtin/am.c:843
 msgid "invalid timestamp"
 msgstr "недопустимая метка даты/времени"
 
-#: builtin/am.c:844 builtin/am.c:856
+#: builtin/am.c:848 builtin/am.c:860
 msgid "invalid Date line"
 msgstr "недопустимая строка даты"
 
-#: builtin/am.c:851
+#: builtin/am.c:855
 msgid "invalid timezone offset"
 msgstr "недопустимое смещение часового пояса"
 
-#: builtin/am.c:944
+#: builtin/am.c:948
 msgid "Patch format detection failed."
 msgstr "Сбой определения формата патча."
 
-#: builtin/am.c:949 builtin/clone.c:409
+#: builtin/am.c:953 builtin/clone.c:410
 #, c-format
 msgid "failed to create directory '%s'"
 msgstr "не удалось создать каталог «%s»"
 
-#: builtin/am.c:954
+#: builtin/am.c:958
 msgid "Failed to split patches."
 msgstr "Не удалось разделить патчи на части."
 
-#: builtin/am.c:1084 builtin/commit.c:371
-msgid "unable to write index file"
-msgstr "не удалось записать индекс"
-
-#: builtin/am.c:1098
+#: builtin/am.c:1089
 #, c-format
 msgid "When you have resolved this problem, run \"%s --continue\"."
 msgstr "Когда вы устраните эту проблему, запустите «%s --continue»."
 
-#: builtin/am.c:1099
+#: builtin/am.c:1090
 #, c-format
 msgid "If you prefer to skip this patch, run \"%s --skip\" instead."
 msgstr "Если вы хотите пропустить этот патч, то запустите «%s --skip»."
 
-#: builtin/am.c:1100
+#: builtin/am.c:1091
 #, c-format
 msgid "To restore the original branch and stop patching, run \"%s --abort\"."
 msgstr "Чтобы вернуться на предыдущую ветку и остановить применение изменений, запустите «%s --abort»."
 
-#: builtin/am.c:1183
+#: builtin/am.c:1174
 msgid ""
 "Patch sent with format=flowed; space at the end of lines might be lost."
 msgstr ""
 
-#: builtin/am.c:1211
+#: builtin/am.c:1202
 msgid "Patch is empty."
 msgstr "Патч пустой."
 
-#: builtin/am.c:1277
+#: builtin/am.c:1267
 #, c-format
-msgid "invalid ident line: %.*s"
-msgstr "неправильная строка идентификации: %.*s"
+msgid "missing author line in commit %s"
+msgstr ""
 
-#: builtin/am.c:1299
+#: builtin/am.c:1270
 #, c-format
-msgid "unable to parse commit %s"
-msgstr "не удалось разобрать коммит %s"
+msgid "invalid ident line: %.*s"
+msgstr "неправильная строка идентификации: %.*s"
 
-#: builtin/am.c:1495
+#: builtin/am.c:1489
 msgid "Repository lacks necessary blobs to fall back on 3-way merge."
 msgstr "В репозитории отсутствуют двоичные объекты, необходимые для отката к трехходовому слиянию."
 
-#: builtin/am.c:1497
+#: builtin/am.c:1491
 msgid "Using index info to reconstruct a base tree..."
 msgstr "Использую индекс для реконструкции базового дерева…"
 
-#: builtin/am.c:1516
+#: builtin/am.c:1510
 msgid ""
 "Did you hand edit your patch?\n"
 "It does not apply to blobs recorded in its index."
 msgstr "Вы вручную изменяли патч?\nОн не накладывается без ошибок на двоичные объекты, записанные в его заголовке."
 
-#: builtin/am.c:1522
+#: builtin/am.c:1516
 msgid "Falling back to patching base and 3-way merge..."
 msgstr "Откат к применению изменений к базовому коммиту с помощью трехходового слияния…"
 
-#: builtin/am.c:1548
+#: builtin/am.c:1542
 msgid "Failed to merge in the changes."
 msgstr "Не удалось слить изменения."
 
-#: builtin/am.c:1580
+#: builtin/am.c:1574
 msgid "applying to an empty history"
 msgstr "применение к пустой истории"
 
-#: builtin/am.c:1627 builtin/am.c:1631
+#: builtin/am.c:1626 builtin/am.c:1630
 #, c-format
 msgid "cannot resume: %s does not exist."
-msgstr "нельзя продолжнить: %s не существует "
-
-#: builtin/am.c:1647
-msgid "cannot be interactive without stdin connected to a terminal."
-msgstr "не удалось использовать интерактивное поведение, без stdin подключенного к терминалу."
+msgstr "нельзя продолжнить: %s не существует."
 
-#: builtin/am.c:1652
+#: builtin/am.c:1648
 msgid "Commit Body is:"
 msgstr "Тело коммита:"
 
 #. TRANSLATORS: Make sure to include [y], [n], [e], [v] and [a]
 #. in your translation. The program will only accept English
 #. input at this point.
-#: builtin/am.c:1662
+#: builtin/am.c:1658
+#, c-format
 msgid "Apply? [y]es/[n]o/[e]dit/[v]iew patch/[a]ccept all: "
 msgstr "Применить? [y] - да/[n] - нет/[e] - редактировать/[v] - просмотреть патч/[a] - применить всё: "
 
-#: builtin/am.c:1712
+#: builtin/am.c:1704 builtin/commit.c:395
+msgid "unable to write index file"
+msgstr "не удалось записать индекс"
+
+#: builtin/am.c:1708
 #, c-format
 msgid "Dirty index: cannot apply patches (dirty: %s)"
 msgstr "Индекс изменён: нельзя применять патчи (изменено: %s)"
 
-#: builtin/am.c:1752 builtin/am.c:1820
+#: builtin/am.c:1748 builtin/am.c:1816
 #, c-format
 msgid "Applying: %.*s"
 msgstr "Применение: %.*s"
 
-#: builtin/am.c:1769
+#: builtin/am.c:1765
 msgid "No changes -- Patch already applied."
 msgstr "Нет изменений — Патч уже применен."
 
-#: builtin/am.c:1775
+#: builtin/am.c:1771
 #, c-format
 msgid "Patch failed at %s %.*s"
 msgstr "Ошибка применения изменений на %s %.*s"
 
-#: builtin/am.c:1779
-msgid "Use 'git am --show-current-patch' to see the failed patch"
+#: builtin/am.c:1775
+msgid "Use 'git am --show-current-patch=diff' to see the failed patch"
 msgstr ""
 
-#: builtin/am.c:1823
+#: builtin/am.c:1819
 msgid ""
 "No changes - did you forget to use 'git add'?\n"
 "If there is nothing left to stage, chances are that something else\n"
 "already introduced the same changes; you might want to skip this patch."
 msgstr "Нет изменений — возможно, вы забыли вызвать «git add»?\nЕсли ничего не осталось для индексации, то, скорее всего, что-то другое уже сделало те же изменения; возможно, вам следует пропустить этот патч."
 
-#: builtin/am.c:1830
+#: builtin/am.c:1826
 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 might run `git rm` on a file to accept \"deleted by them\" for it."
 msgstr "У вас есть не слитые пути в индексе.\nВы должны выполнить «git add» для каждого файла с разрешенными конфликтами, чтобы пометить их таковыми.\nВы можете запустить «git rm» с именем файла, чтобы пометить его как «удалено ими»."
 
-#: builtin/am.c:1937 builtin/am.c:1941 builtin/am.c:1953 builtin/reset.c:329
-#: builtin/reset.c:337
+#: builtin/am.c:1933 builtin/am.c:1937 builtin/am.c:1949 builtin/reset.c:347
+#: builtin/reset.c:355
 #, c-format
 msgid "Could not parse object '%s'."
 msgstr "Не удалось разобрать объект «%s»."
 
-#: builtin/am.c:1989
+#: builtin/am.c:1985
 msgid "failed to clean index"
 msgstr "не удалось очистить индекс"
 
-#: builtin/am.c:2033
+#: builtin/am.c:2029
 msgid ""
 "You seem to have moved HEAD since the last 'am' failure.\n"
 "Not rewinding to ORIG_HEAD"
 msgstr "Похоже, что вы переместили HEAD с момента последней ошибки выполнения «am».\nПеремотка на ORIG_HEAD не выполняется"
 
-#: builtin/am.c:2130
+#: builtin/am.c:2136
 #, c-format
 msgid "Invalid value for --patch-format: %s"
 msgstr "Неправильное значение для --patch-format: %s"
 
-#: builtin/am.c:2166
+#: builtin/am.c:2178
+#, c-format
+msgid "Invalid value for --show-current-patch: %s"
+msgstr ""
+
+#: builtin/am.c:2182
+#, c-format
+msgid "--show-current-patch=%s is incompatible with --show-current-patch=%s"
+msgstr ""
+
+#: builtin/am.c:2213
 msgid "git am [<options>] [(<mbox> | <Maildir>)...]"
 msgstr "git am [<опции>] [(<mbox> | <Maildir>)…]"
 
-#: builtin/am.c:2167
+#: builtin/am.c:2214
 msgid "git am [<options>] (--continue | --skip | --abort)"
 msgstr "git am [<опции>] (--continue | --skip | --abort)"
 
-#: builtin/am.c:2173
+#: builtin/am.c:2220
 msgid "run interactively"
 msgstr "запустить в интерактивном режиме"
 
-#: builtin/am.c:2175
+#: builtin/am.c:2222
 msgid "historical option -- no-op"
 msgstr "историческая опция — ничего не делает"
 
-#: builtin/am.c:2177
+#: builtin/am.c:2224
 msgid "allow fall back on 3way merging if needed"
 msgstr "разрешить откатиться к трехходовому слиянию, если нужно"
 
-#: builtin/am.c:2178 builtin/init-db.c:494 builtin/prune-packed.c:58
-#: builtin/repack.c:306 builtin/stash.c:805
+#: builtin/am.c:2225 builtin/init-db.c:560 builtin/prune-packed.c:16
+#: builtin/repack.c:335 builtin/stash.c:815
 msgid "be quiet"
 msgstr "тихий режим"
 
-#: builtin/am.c:2180
-msgid "add a Signed-off-by line to the commit message"
-msgstr "добавить строку Signed-off-by к сообщению коммита"
+#: builtin/am.c:2227
+msgid "add a Signed-off-by trailer to the commit message"
+msgstr ""
 
-#: builtin/am.c:2183
+#: builtin/am.c:2230
 msgid "recode into utf8 (default)"
 msgstr "перекодировать в utf8 (по умолчанию)"
 
-#: builtin/am.c:2185
+#: builtin/am.c:2232
 msgid "pass -k flag to git-mailinfo"
 msgstr "передать флаг -k в git-mailinfo"
 
-#: builtin/am.c:2187
+#: builtin/am.c:2234
 msgid "pass -b flag to git-mailinfo"
 msgstr "передать флаг -b в git-mailinfo"
 
-#: builtin/am.c:2189
+#: builtin/am.c:2236
 msgid "pass -m flag to git-mailinfo"
 msgstr "передать флаг -m в git-mailinfo"
 
-#: builtin/am.c:2191
+#: builtin/am.c:2238
 msgid "pass --keep-cr flag to git-mailsplit for mbox format"
 msgstr "передать флаг --keep-cr в git-mailsplit для формата mbox"
 
-#: builtin/am.c:2194
+#: builtin/am.c:2241
 msgid "do not pass --keep-cr flag to git-mailsplit independent of am.keepcr"
 msgstr "не передавать --keep-cr флаг в git-mailsplit вне зависимости от am.keepcr"
 
-#: builtin/am.c:2197
+#: builtin/am.c:2244
 msgid "strip everything before a scissors line"
 msgstr "обрезать все до строки обрезки"
 
-#: builtin/am.c:2199 builtin/am.c:2202 builtin/am.c:2205 builtin/am.c:2208
-#: builtin/am.c:2211 builtin/am.c:2214 builtin/am.c:2217 builtin/am.c:2220
-#: builtin/am.c:2226
+#: builtin/am.c:2246 builtin/am.c:2249 builtin/am.c:2252 builtin/am.c:2255
+#: builtin/am.c:2258 builtin/am.c:2261 builtin/am.c:2264 builtin/am.c:2267
+#: builtin/am.c:2273
 msgid "pass it through git-apply"
 msgstr "передать его в git-apply"
 
-#: builtin/am.c:2216 builtin/commit.c:1348 builtin/fmt-merge-msg.c:671
-#: builtin/fmt-merge-msg.c:674 builtin/grep.c:879 builtin/merge.c:247
-#: builtin/pull.c:158 builtin/pull.c:217 builtin/rebase.c:1412
-#: builtin/repack.c:317 builtin/repack.c:321 builtin/repack.c:323
-#: builtin/show-branch.c:651 builtin/show-ref.c:172 builtin/tag.c:397
-#: parse-options.h:141 parse-options.h:162 parse-options.h:311
+#: builtin/am.c:2263 builtin/commit.c:1395 builtin/fmt-merge-msg.c:17
+#: builtin/fmt-merge-msg.c:20 builtin/grep.c:903 builtin/merge.c:260
+#: builtin/pull.c:141 builtin/pull.c:200 builtin/pull.c:217
+#: builtin/rebase.c:1341 builtin/repack.c:346 builtin/repack.c:350
+#: builtin/repack.c:352 builtin/show-branch.c:650 builtin/show-ref.c:172
+#: builtin/tag.c:404 parse-options.h:154 parse-options.h:175
+#: parse-options.h:316
 msgid "n"
 msgstr "n"
 
-#: builtin/am.c:2222 builtin/branch.c:653 builtin/for-each-ref.c:38
-#: builtin/replace.c:554 builtin/tag.c:431 builtin/verify-tag.c:39
+#: builtin/am.c:2269 builtin/branch.c:661 builtin/bugreport.c:136
+#: builtin/for-each-ref.c:38 builtin/replace.c:556 builtin/tag.c:438
+#: builtin/verify-tag.c:38
 msgid "format"
 msgstr "формат"
 
-#: builtin/am.c:2223
+#: builtin/am.c:2270
 msgid "format the patch(es) are in"
 msgstr "формат, в котором находятся патчи"
 
-#: builtin/am.c:2229
+#: builtin/am.c:2276
 msgid "override error message when patch failure occurs"
 msgstr "переопределить сообщение об ошибке, если не удалось наложить изменения"
 
-#: builtin/am.c:2231
+#: builtin/am.c:2278
 msgid "continue applying patches after resolving a conflict"
 msgstr "продолжить применение изменений после разрешения конфиликта"
 
-#: builtin/am.c:2234
+#: builtin/am.c:2281
 msgid "synonyms for --continue"
 msgstr "синоним для --continue"
 
-#: builtin/am.c:2237
+#: builtin/am.c:2284
 msgid "skip the current patch"
 msgstr "пропустить текущий патч"
 
-#: builtin/am.c:2240
+#: builtin/am.c:2287
 msgid "restore the original branch and abort the patching operation."
 msgstr "восстановить оригинальную ветку и отменить операцию применения изменений."
 
-#: builtin/am.c:2243
+#: builtin/am.c:2290
 msgid "abort the patching operation but keep HEAD where it is."
 msgstr ""
 
-#: builtin/am.c:2246
-msgid "show the patch being applied."
+#: builtin/am.c:2294
+msgid "show the patch being applied"
 msgstr ""
 
-#: builtin/am.c:2250
+#: builtin/am.c:2299
 msgid "lie about committer date"
 msgstr "соврать о дате коммитера"
 
-#: builtin/am.c:2252
+#: builtin/am.c:2301
 msgid "use current timestamp for author date"
 msgstr "использовать текущее время как время авторства"
 
-#: builtin/am.c:2254 builtin/commit-tree.c:120 builtin/commit.c:1491
-#: builtin/merge.c:282 builtin/pull.c:192 builtin/rebase.c:489
-#: builtin/rebase.c:1453 builtin/revert.c:116 builtin/tag.c:412
+#: builtin/am.c:2303 builtin/commit-tree.c:120 builtin/commit.c:1515
+#: builtin/merge.c:297 builtin/pull.c:175 builtin/rebase.c:536
+#: builtin/rebase.c:1394 builtin/revert.c:117 builtin/tag.c:419
 msgid "key-id"
 msgstr "key-id"
 
-#: builtin/am.c:2255 builtin/rebase.c:490 builtin/rebase.c:1454
+#: builtin/am.c:2304 builtin/rebase.c:537 builtin/rebase.c:1395
 msgid "GPG-sign commits"
 msgstr "подписать коммиты с помощью GPG"
 
-#: builtin/am.c:2258
+#: builtin/am.c:2307
 msgid "(internal use for git-rebase)"
 msgstr "(внутреннее использование для git-rebase)"
 
-#: builtin/am.c:2276
+#: builtin/am.c:2325
 msgid ""
 "The -b/--binary option has been a no-op for long time, and\n"
 "it will be removed. Please do not use it anymore."
 msgstr "Опция -b/--binary уже долгое время ничего не делает и будет удалена с следующих версиях Git. Пожалуйста, не используйте ее."
 
-#: builtin/am.c:2283
+#: builtin/am.c:2332
 msgid "failed to read the index"
 msgstr "сбой чтения индекса"
 
-#: builtin/am.c:2298
+#: builtin/am.c:2347
 #, c-format
 msgid "previous rebase directory %s still exists but mbox given."
 msgstr "предыдущий каталог перемещения %s еще существует, но передан mbox."
 
-#: builtin/am.c:2322
+#: builtin/am.c:2371
 #, c-format
 msgid ""
 "Stray %s directory found.\n"
 "Use \"git am --abort\" to remove it."
 msgstr "Найден забытый каталог %s.\nИспользуйте «git am --abort», чтобы удалить его."
 
-#: builtin/am.c:2328
+#: builtin/am.c:2377
 msgid "Resolve operation not in progress, we are not resuming."
 msgstr "Операция разрешения конфликтов не в процессе выполнения, не продолжаем."
 
+#: builtin/am.c:2387
+msgid "interactive mode requires patches on the command line"
+msgstr ""
+
 #: builtin/apply.c:8
 msgid "git apply [<options>] [<patch>...]"
 msgstr "git apply [<опции>] [<патч>…]"
@@ -8317,118 +9658,128 @@ msgstr "git archive: ошибка протокола"
 msgid "git archive: expected a flush"
 msgstr "git archive: ожидался сброс буфера"
 
-#: builtin/bisect--helper.c:22
-msgid "git bisect--helper --next-all [--no-checkout]"
-msgstr "git bisect--helper --next-all [--no-checkout]"
-
 #: builtin/bisect--helper.c:23
-msgid "git bisect--helper --write-terms <bad_term> <good_term>"
-msgstr "git bisect--helper --write-terms <плохое-определение> <хорошее-определение>"
-
-#: builtin/bisect--helper.c:24
-msgid "git bisect--helper --bisect-clean-state"
-msgstr "git bisect--helper --bisect-clean-state"
-
-#: builtin/bisect--helper.c:25
 msgid "git bisect--helper --bisect-reset [<commit>]"
 msgstr ""
 
-#: builtin/bisect--helper.c:26
+#: builtin/bisect--helper.c:24
 msgid ""
 "git bisect--helper --bisect-write [--no-log] <state> <revision> <good_term> "
 "<bad_term>"
 msgstr ""
 
-#: builtin/bisect--helper.c:27
+#: builtin/bisect--helper.c:25
 msgid ""
 "git bisect--helper --bisect-check-and-set-terms <command> <good_term> "
 "<bad_term>"
 msgstr ""
 
-#: builtin/bisect--helper.c:28
+#: builtin/bisect--helper.c:26
 msgid "git bisect--helper --bisect-next-check <good_term> <bad_term> [<term>]"
 msgstr ""
 
-#: builtin/bisect--helper.c:29
+#: builtin/bisect--helper.c:27
 msgid ""
 "git bisect--helper --bisect-terms [--term-good | --term-old | --term-bad | "
 "--term-new]"
 msgstr ""
 
-#: builtin/bisect--helper.c:30
+#: builtin/bisect--helper.c:28
 msgid ""
-"git bisect--helper --bisect-start [--term-{old,good}=<term> "
-"--term-{new,bad}=<term>][--no-checkout] [<bad> [<good>...]] [--] "
-"[<paths>...]"
+"git bisect--helper --bisect-start [--term-{new,bad}=<term> "
+"--term-{old,good}=<term>] [--no-checkout] [--first-parent] [<bad> "
+"[<good>...]] [--] [<paths>...]"
+msgstr "git bisect--helper --bisect-start [--term-{new,bad}=<термин> --term-{old,good}=<термин>] [--no-checkout] [--first-parent] [<плохая-редация> [<хорошая-редация>…]] [--] [<пути>…]"
+
+#: builtin/bisect--helper.c:30
+msgid "git bisect--helper --bisect-next"
+msgstr ""
+
+#: builtin/bisect--helper.c:31
+msgid "git bisect--helper --bisect-auto-next"
+msgstr ""
+
+#: builtin/bisect--helper.c:32
+msgid "git bisect--helper --bisect-state (bad|new) [<rev>]"
 msgstr ""
 
-#: builtin/bisect--helper.c:86
+#: builtin/bisect--helper.c:33
+msgid "git bisect--helper --bisect-state (good|old) [<rev>...]"
+msgstr ""
+
+#: builtin/bisect--helper.c:108
+#, c-format
+msgid "cannot open file '%s' in mode '%s'"
+msgstr ""
+
+#: builtin/bisect--helper.c:115
+#, c-format
+msgid "could not write to file '%s'"
+msgstr ""
+
+#: builtin/bisect--helper.c:154
 #, c-format
 msgid "'%s' is not a valid term"
 msgstr "«%s» не является допустимым определением"
 
-#: builtin/bisect--helper.c:90
+#: builtin/bisect--helper.c:158
 #, c-format
 msgid "can't use the builtin command '%s' as a term"
 msgstr "нельзя использовать встроенную команду «%s» как определение"
 
-#: builtin/bisect--helper.c:100
+#: builtin/bisect--helper.c:168
 #, c-format
 msgid "can't change the meaning of the term '%s'"
 msgstr "нельзя изменить значение определения «%s»"
 
-#: builtin/bisect--helper.c:111
+#: builtin/bisect--helper.c:178
 msgid "please use two different terms"
 msgstr "используйте два разных определения"
 
-#: builtin/bisect--helper.c:118
-msgid "could not open the file BISECT_TERMS"
-msgstr "не удалось открыть файл BISECT_TERMS"
-
-#: builtin/bisect--helper.c:155
+#: builtin/bisect--helper.c:194
 #, c-format
 msgid "We are not bisecting.\n"
 msgstr ""
 
-#: builtin/bisect--helper.c:163
+#: builtin/bisect--helper.c:202
 #, c-format
 msgid "'%s' is not a valid commit"
 msgstr ""
 
-#: builtin/bisect--helper.c:174
+#: builtin/bisect--helper.c:211
 #, c-format
 msgid ""
 "could not check out original HEAD '%s'. Try 'git bisect reset <commit>'."
 msgstr ""
 
-#: builtin/bisect--helper.c:215
+#: builtin/bisect--helper.c:255
 #, c-format
 msgid "Bad bisect_write argument: %s"
 msgstr ""
 
-#: builtin/bisect--helper.c:220
+#: builtin/bisect--helper.c:260
 #, c-format
 msgid "couldn't get the oid of the rev '%s'"
 msgstr ""
 
-#: builtin/bisect--helper.c:232
+#: builtin/bisect--helper.c:272
 #, c-format
 msgid "couldn't open the file '%s'"
 msgstr ""
 
-#: builtin/bisect--helper.c:258
+#: builtin/bisect--helper.c:298
 #, c-format
 msgid "Invalid command: you're currently in a %s/%s bisect"
 msgstr ""
 
-#: builtin/bisect--helper.c:285
+#: builtin/bisect--helper.c:325
 #, c-format
 msgid ""
 "You need to give me at least one %s and %s revision.\n"
 "You can use \"git bisect %s\" and \"git bisect %s\" for that."
 msgstr ""
 
-#: builtin/bisect--helper.c:289
+#: builtin/bisect--helper.c:329
 #, c-format
 msgid ""
 "You need to start by \"git bisect start\".\n"
@@ -8436,7 +9787,7 @@ msgid ""
 "You can use \"git bisect %s\" and \"git bisect %s\" for that."
 msgstr ""
 
-#: builtin/bisect--helper.c:321
+#: builtin/bisect--helper.c:349
 #, c-format
 msgid "bisecting only with a %s commit"
 msgstr ""
@@ -8444,131 +9795,167 @@ msgstr ""
 #. TRANSLATORS: Make sure to include [Y] and [n] in your
 #. translation. The program will only accept English input
 #. at this point.
-#: builtin/bisect--helper.c:329
+#: builtin/bisect--helper.c:357
 msgid "Are you sure [Y/n]? "
 msgstr "Вы уверены [Y - да/n - нет]? "
 
-#: builtin/bisect--helper.c:376
+#: builtin/bisect--helper.c:418
 msgid "no terms defined"
 msgstr "определения не заданы"
 
-#: builtin/bisect--helper.c:379
+#: builtin/bisect--helper.c:421
 #, c-format
 msgid ""
 "Your current terms are %s for the old state\n"
 "and %s for the new state.\n"
 msgstr ""
 
-#: builtin/bisect--helper.c:389
+#: builtin/bisect--helper.c:431
 #, c-format
 msgid ""
 "invalid argument %s for 'git bisect terms'.\n"
 "Supported options are: --term-good|--term-old and --term-bad|--term-new."
 msgstr ""
 
-#: builtin/bisect--helper.c:475
+#: builtin/bisect--helper.c:498
+msgid "revision walk setup failed\n"
+msgstr ""
+
+#: builtin/bisect--helper.c:520
+#, c-format
+msgid "could not open '%s' for appending"
+msgstr ""
+
+#: builtin/bisect--helper.c:639 builtin/bisect--helper.c:652
+msgid "'' is not a valid term"
+msgstr ""
+
+#: builtin/bisect--helper.c:662
 #, c-format
 msgid "unrecognized option: '%s'"
 msgstr ""
 
-#: builtin/bisect--helper.c:479
+#: builtin/bisect--helper.c:666
 #, c-format
 msgid "'%s' does not appear to be a valid revision"
 msgstr ""
 
-#: builtin/bisect--helper.c:511
+#: builtin/bisect--helper.c:697
 msgid "bad HEAD - I need a HEAD"
 msgstr ""
 
-#: builtin/bisect--helper.c:526
+#: builtin/bisect--helper.c:712
 #, c-format
 msgid "checking out '%s' failed. Try 'git bisect start <valid-branch>'."
 msgstr ""
 
-#: builtin/bisect--helper.c:547
+#: builtin/bisect--helper.c:733
 msgid "won't bisect on cg-seek'ed tree"
 msgstr "нельзя выполнить двоичный поиск на дереве после cg-seek"
 
-#: builtin/bisect--helper.c:550
-msgid "bad HEAD - strange symbolic ref"
+#: builtin/bisect--helper.c:736
+msgid "bad HEAD - strange symbolic ref"
+msgstr ""
+
+#: builtin/bisect--helper.c:756
+#, c-format
+msgid "invalid ref: '%s'"
+msgstr ""
+
+#: builtin/bisect--helper.c:814
+msgid "You need to start by \"git bisect start\"\n"
+msgstr ""
+
+#. TRANSLATORS: Make sure to include [Y] and [n] in your
+#. translation. The program will only accept English input
+#. at this point.
+#: builtin/bisect--helper.c:825
+msgid "Do you want me to do it for you [Y/n]? "
+msgstr "Вы уверены, что хотите, чтобы я сделал это [Y] - да/[n] - нет? "
+
+#: builtin/bisect--helper.c:843
+msgid "Please call `--bisect-state` with at least one argument"
 msgstr ""
 
-#: builtin/bisect--helper.c:627
-msgid "perform 'git bisect next'"
-msgstr "выполнить «git bisect next»"
-
-#: builtin/bisect--helper.c:629
-msgid "write the terms to .git/BISECT_TERMS"
-msgstr "записать определения в .git/BISECT_TERMS"
-
-#: builtin/bisect--helper.c:631
-msgid "cleanup the bisection state"
-msgstr "очистить состояние двоичного поиска"
+#: builtin/bisect--helper.c:856
+#, c-format
+msgid "'git bisect %s' can take only one argument."
+msgstr ""
 
-#: builtin/bisect--helper.c:633
-msgid "check for expected revs"
-msgstr "проверить ожидаемые редакции"
+#: builtin/bisect--helper.c:868 builtin/bisect--helper.c:879
+#, c-format
+msgid "Bad rev input: %s"
+msgstr ""
 
-#: builtin/bisect--helper.c:635
+#: builtin/bisect--helper.c:924
 msgid "reset the bisection state"
 msgstr ""
 
-#: builtin/bisect--helper.c:637
+#: builtin/bisect--helper.c:926
 msgid "write out the bisection state in BISECT_LOG"
 msgstr ""
 
-#: builtin/bisect--helper.c:639
+#: builtin/bisect--helper.c:928
 msgid "check and set terms in a bisection state"
 msgstr ""
 
-#: builtin/bisect--helper.c:641
+#: builtin/bisect--helper.c:930
 msgid "check whether bad or good terms exist"
 msgstr ""
 
-#: builtin/bisect--helper.c:643
+#: builtin/bisect--helper.c:932
 msgid "print out the bisect terms"
 msgstr ""
 
-#: builtin/bisect--helper.c:645
+#: builtin/bisect--helper.c:934
 msgid "start the bisect session"
 msgstr ""
 
-#: builtin/bisect--helper.c:647
-msgid "update BISECT_HEAD instead of checking out the current commit"
-msgstr "обновить BISECT_HEAD вместо перехода на текущий коммит"
+#: builtin/bisect--helper.c:936
+msgid "find the next bisection commit"
+msgstr ""
 
-#: builtin/bisect--helper.c:649
-msgid "no log for BISECT_WRITE"
+#: builtin/bisect--helper.c:938
+msgid ""
+"verify the next bisection state then checkout the next bisection commit"
 msgstr ""
 
-#: builtin/bisect--helper.c:666
-msgid "--write-terms requires two arguments"
-msgstr "--write-terms требует указания двух параметров"
+#: builtin/bisect--helper.c:940
+msgid "mark the state of ref (or refs)"
+msgstr ""
 
-#: builtin/bisect--helper.c:670
-msgid "--bisect-clean-state requires no arguments"
-msgstr "--bisect-clean-state не требует указания параметров"
+#: builtin/bisect--helper.c:942
+msgid "no log for BISECT_WRITE"
+msgstr ""
 
-#: builtin/bisect--helper.c:677
+#: builtin/bisect--helper.c:957
 msgid "--bisect-reset requires either no argument or a commit"
 msgstr ""
 
-#: builtin/bisect--helper.c:681
+#: builtin/bisect--helper.c:961
 msgid "--bisect-write requires either 4 or 5 arguments"
 msgstr ""
 
-#: builtin/bisect--helper.c:687
+#: builtin/bisect--helper.c:967
 msgid "--check-and-set-terms requires 3 arguments"
 msgstr ""
 
-#: builtin/bisect--helper.c:693
+#: builtin/bisect--helper.c:973
 msgid "--bisect-next-check requires 2 or 3 arguments"
 msgstr ""
 
-#: builtin/bisect--helper.c:699
+#: builtin/bisect--helper.c:979
 msgid "--bisect-terms requires 0 or 1 argument"
 msgstr ""
 
+#: builtin/bisect--helper.c:988
+msgid "--bisect-next requires 0 arguments"
+msgstr ""
+
+#: builtin/bisect--helper.c:994
+msgid "--bisect-auto-next requires 0 arguments"
+msgstr ""
+
 #: builtin/blame.c:32
 msgid "git blame [<options>] [<rev-opts>] [<rev>] [--] <file>"
 msgstr "git blame [<опции>] [<опции-редакции>] [<редакция>] [--] <файл>"
@@ -8577,133 +9964,146 @@ msgstr "git blame [<опции>] [<опции-редакции>] [<редакц
 msgid "<rev-opts> are documented in git-rev-list(1)"
 msgstr "<опции-rev-list> документированы в git-rev-list(1)"
 
-#: builtin/blame.c:407
+#: builtin/blame.c:410
 #, c-format
 msgid "expecting a color: %s"
 msgstr "ожидается цвет: %s"
 
-#: builtin/blame.c:414
+#: builtin/blame.c:417
 msgid "must end with a color"
 msgstr "должно заканчиваться на цвет"
 
-#: builtin/blame.c:701
+#: builtin/blame.c:730
 #, c-format
 msgid "invalid color '%s' in color.blame.repeatedLines"
 msgstr ""
 
-#: builtin/blame.c:719
+#: builtin/blame.c:748
 msgid "invalid value for blame.coloring"
 msgstr ""
 
-#: builtin/blame.c:794
+#: builtin/blame.c:847
+#, c-format
+msgid "cannot find revision %s to ignore"
+msgstr ""
+
+#: builtin/blame.c:869
 msgid "Show blame entries as we find them, incrementally"
 msgstr "Показать записи авторства постепенно, в процессе нахождения"
 
-#: builtin/blame.c:795
-msgid "Show blank SHA-1 for boundary commits (Default: off)"
-msgstr "Не показывать SHA-1 для коммитов, не входящих в границы запроса (По умолчанию: отключено)"
+#: builtin/blame.c:870
+msgid "Do not show object names of boundary commits (Default: off)"
+msgstr ""
 
-#: builtin/blame.c:796
+#: builtin/blame.c:871
 msgid "Do not treat root commits as boundaries (Default: off)"
 msgstr "Не воспринимать корневые коммиты как граничные (По умолчанию: отключено)"
 
-#: builtin/blame.c:797
+#: builtin/blame.c:872
 msgid "Show work cost statistics"
 msgstr "Показать статистику расходов на выполнение запроса"
 
-#: builtin/blame.c:798
+#: builtin/blame.c:873
 msgid "Force progress reporting"
 msgstr "Принудительно выводить прогресс выполнения"
 
-#: builtin/blame.c:799
+#: builtin/blame.c:874
 msgid "Show output score for blame entries"
 msgstr "Показать оценку для записей авторства"
 
-#: builtin/blame.c:800
+#: builtin/blame.c:875
 msgid "Show original filename (Default: auto)"
 msgstr "Показать оригинальное имя файла (По умолчанию: автоматически)"
 
-#: builtin/blame.c:801
+#: builtin/blame.c:876
 msgid "Show original linenumber (Default: off)"
 msgstr "Показать оригинальные номера строк (По умолчанию: отключено)"
 
-#: builtin/blame.c:802
+#: builtin/blame.c:877
 msgid "Show in a format designed for machine consumption"
 msgstr "Показать в формате для программного разбора"
 
-#: builtin/blame.c:803
+#: builtin/blame.c:878
 msgid "Show porcelain format with per-line commit information"
 msgstr "Показать в машиночитаемом формате, с построчной информацией о коммите"
 
-#: builtin/blame.c:804
+#: builtin/blame.c:879
 msgid "Use the same output mode as git-annotate (Default: off)"
 msgstr "Использовать такой же формат вывода, как и git-annotate (По умолчанию: отключено)"
 
-#: builtin/blame.c:805
+#: builtin/blame.c:880
 msgid "Show raw timestamp (Default: off)"
 msgstr "Показать необработанные временные метки (По умолчанию: отключено)"
 
-#: builtin/blame.c:806
+#: builtin/blame.c:881
 msgid "Show long commit SHA1 (Default: off)"
 msgstr "Показать длинный SHA1 идентификатор коммита (По умолчанию: отключено)"
 
-#: builtin/blame.c:807
+#: builtin/blame.c:882
 msgid "Suppress author name and timestamp (Default: off)"
 msgstr "Не показывать имя автора и временные метки (По умолчанию: отключено)"
 
-#: builtin/blame.c:808
+#: builtin/blame.c:883
 msgid "Show author email instead of name (Default: off)"
 msgstr "Показать почту автора вместо имени (По умолчанию: отключено)"
 
-#: builtin/blame.c:809
+#: builtin/blame.c:884
 msgid "Ignore whitespace differences"
 msgstr "Игнорировать различия в пробелах"
 
-#: builtin/blame.c:810
+#: builtin/blame.c:885 builtin/log.c:1813
+msgid "rev"
+msgstr ""
+
+#: builtin/blame.c:885
+msgid "Ignore <rev> when blaming"
+msgstr ""
+
+#: builtin/blame.c:886
+msgid "Ignore revisions from <file>"
+msgstr ""
+
+#: builtin/blame.c:887
 msgid "color redundant metadata from previous line differently"
 msgstr ""
 
-#: builtin/blame.c:811
+#: builtin/blame.c:888
 msgid "color lines by age"
 msgstr ""
 
-#: builtin/blame.c:818
-msgid "Use an experimental heuristic to improve diffs"
-msgstr "Использовать эксперементальную эвристику, чтобы улучшить файлы списка изменений"
-
-#: builtin/blame.c:820
+#: builtin/blame.c:889
 msgid "Spend extra cycles to find better match"
 msgstr "Потратить больше времени, для нахождения лучших совпадений"
 
-#: builtin/blame.c:821
+#: builtin/blame.c:890
 msgid "Use revisions from <file> instead of calling git-rev-list"
 msgstr "Использовать редакции из <файла> вместо вызова git-rev-list"
 
-#: builtin/blame.c:822
+#: builtin/blame.c:891
 msgid "Use <file>'s contents as the final image"
 msgstr "Использовать содержимое <файла> как финальный снимок"
 
-#: builtin/blame.c:823 builtin/blame.c:824
+#: builtin/blame.c:892 builtin/blame.c:893
 msgid "score"
 msgstr "мин-длина"
 
-#: builtin/blame.c:823
+#: builtin/blame.c:892
 msgid "Find line copies within and across files"
 msgstr "Найти копирование строк в пределах и между файлами"
 
-#: builtin/blame.c:824
+#: builtin/blame.c:893
 msgid "Find line movements within and across files"
 msgstr "Найти перемещения строк в пределах и между файлами"
 
-#: builtin/blame.c:825
-msgid "n,m"
-msgstr "начало,конец"
+#: builtin/blame.c:894
+msgid "range"
+msgstr ""
 
-#: builtin/blame.c:825
-msgid "Process only line range n,m, counting from 1"
-msgstr "Обработать только строки в диапазоне начало,конец, начиная с 1"
+#: builtin/blame.c:895
+msgid "Process only line range <start>,<end> or function :<funcname>"
+msgstr ""
 
-#: builtin/blame.c:876
+#: builtin/blame.c:947
 msgid "--progress can't be used with --incremental or porcelain formats"
 msgstr "--progress нельзя использовать одновременно с --incremental или машиночитаемым (porcelain) форматом"
 
@@ -8714,11 +10114,11 @@ msgstr "--progress нельзя использовать одновременн
 #. among various forms of relative timestamps, but
 #. your language may need more or fewer display
 #. columns.
-#: builtin/blame.c:927
+#: builtin/blame.c:998
 msgid "4 years, 11 months ago"
 msgstr "4 года и 11 месяцев назад"
 
-#: builtin/blame.c:1031
+#: builtin/blame.c:1114
 #, c-format
 msgid "file %s has only %lu line"
 msgid_plural "file %s has only %lu lines"
@@ -8727,13 +10127,13 @@ msgstr[1] "файл %s содержит только %lu строки"
 msgstr[2] "файл %s содержит только %lu строк"
 msgstr[3] "файл %s содержит только %lu строки"
 
-#: builtin/blame.c:1077
+#: builtin/blame.c:1159
 msgid "Blaming lines"
 msgstr "Просмотр авторов строк"
 
 #: builtin/branch.c:29
-msgid "git branch [<options>] [-r | -a] [--merged | --no-merged]"
-msgstr "git branch [<опции>] [-r | -a] [--merged | --no-merged]"
+msgid "git branch [<options>] [-r | -a] [--merged] [--no-merged]"
+msgstr ""
 
 #: builtin/branch.c:30
 msgid "git branch [<options>] [-l] [-f] <branch-name> [<start-point>]"
@@ -8759,147 +10159,147 @@ msgstr "git branch [<опции>] [-r | -a] [--points-at]"
 msgid "git branch [<options>] [-r | -a] [--format]"
 msgstr "git branch [<опции>] [-r | -a] [--format]"
 
-#: builtin/branch.c:151
+#: builtin/branch.c:154
 #, c-format
 msgid ""
 "deleting branch '%s' that has been merged to\n"
 "         '%s', but not yet merged to HEAD."
 msgstr "удаление ветки «%s», которая была слита с\n         «%s», но не слита с HEAD."
 
-#: builtin/branch.c:155
+#: builtin/branch.c:158
 #, c-format
 msgid ""
 "not deleting branch '%s' that is not yet merged to\n"
 "         '%s', even though it is merged to HEAD."
 msgstr "не удаление ветки «%s», которая еще не слита с\n         «%s», хотя уже слита с HEAD."
 
-#: builtin/branch.c:169
+#: builtin/branch.c:172
 #, c-format
 msgid "Couldn't look up commit object for '%s'"
 msgstr "Не удалось найти объект коммита для «%s»"
 
-#: builtin/branch.c:173
+#: builtin/branch.c:176
 #, c-format
 msgid ""
 "The branch '%s' is not fully merged.\n"
 "If you are sure you want to delete it, run 'git branch -D %s'."
 msgstr "Ветка «%s» не слита полностью.\nЕсли вы уверены, что хотите ее удалить, запустите «git branch -D %s»."
 
-#: builtin/branch.c:186
+#: builtin/branch.c:189
 msgid "Update of config-file failed"
 msgstr "Не удалось обновить файл конфигурации"
 
-#: builtin/branch.c:217
+#: builtin/branch.c:220
 msgid "cannot use -a with -d"
 msgstr "нельзя использовать одновременно ключи -a и -d"
 
-#: builtin/branch.c:223
+#: builtin/branch.c:226
 msgid "Couldn't look up commit object for HEAD"
 msgstr "Не удалось найти объект коммита для HEAD"
 
-#: builtin/branch.c:237
+#: builtin/branch.c:240
 #, c-format
 msgid "Cannot delete branch '%s' checked out at '%s'"
 msgstr "Нельзя удалить ветку «%s» т.к. она активна на «%s»"
 
-#: builtin/branch.c:252
+#: builtin/branch.c:255
 #, c-format
 msgid "remote-tracking branch '%s' not found."
 msgstr "внешняя отслеживаемая ветка «%s» не найдена."
 
-#: builtin/branch.c:253
+#: builtin/branch.c:256
 #, c-format
 msgid "branch '%s' not found."
 msgstr "ветка «%s» не найдена."
 
-#: builtin/branch.c:268
+#: builtin/branch.c:271
 #, c-format
 msgid "Error deleting remote-tracking branch '%s'"
 msgstr "Ошибка удаления внешней отслеживаемой ветки «%s»"
 
-#: builtin/branch.c:269
+#: builtin/branch.c:272
 #, c-format
 msgid "Error deleting branch '%s'"
 msgstr "Ошибка удаления ветки «%s»"
 
-#: builtin/branch.c:276
+#: builtin/branch.c:279
 #, c-format
 msgid "Deleted remote-tracking branch %s (was %s).\n"
 msgstr "Внешняя отслеживаемая ветка %s удалена (была %s).\n"
 
-#: builtin/branch.c:277
+#: builtin/branch.c:280
 #, c-format
 msgid "Deleted branch %s (was %s).\n"
 msgstr "Ветка %s удалена (была %s).\n"
 
-#: builtin/branch.c:421 builtin/tag.c:60
+#: builtin/branch.c:429 builtin/tag.c:61
 msgid "unable to parse format string"
 msgstr "не удалось разобрать строку формата"
 
-#: builtin/branch.c:452
+#: builtin/branch.c:460
 msgid "could not resolve HEAD"
-msgstr ""
+msgstr "не удалось получить HEAD"
 
-#: builtin/branch.c:458
+#: builtin/branch.c:466
 #, c-format
 msgid "HEAD (%s) points outside of refs/heads/"
-msgstr ""
+msgstr "HEAD (%s) указывает за пределы refs/heads/"
 
-#: builtin/branch.c:473
+#: builtin/branch.c:481
 #, c-format
 msgid "Branch %s is being rebased at %s"
 msgstr "Производится перемещение ветки %s на %s"
 
-#: builtin/branch.c:477
+#: builtin/branch.c:485
 #, c-format
 msgid "Branch %s is being bisected at %s"
 msgstr "Производится двоичный поиск в ветке %s на %s"
 
-#: builtin/branch.c:494
+#: builtin/branch.c:502
 msgid "cannot copy the current branch while not on any."
 msgstr "невозможно скопировать текущую ветку, если вы не находитесь ни на одной из веток."
 
-#: builtin/branch.c:496
+#: builtin/branch.c:504
 msgid "cannot rename the current branch while not on any."
 msgstr "невозможно переименовать текущую ветку, если вы не находитесь ни на одной из них."
 
-#: builtin/branch.c:507
+#: builtin/branch.c:515
 #, c-format
 msgid "Invalid branch name: '%s'"
 msgstr "Недействительное имя ветки: «%s»"
 
-#: builtin/branch.c:534
+#: builtin/branch.c:544
 msgid "Branch rename failed"
 msgstr "Сбой переименования ветки"
 
-#: builtin/branch.c:536
+#: builtin/branch.c:546
 msgid "Branch copy failed"
 msgstr "Сбой копирования ветки"
 
-#: builtin/branch.c:540
+#: builtin/branch.c:550
 #, c-format
 msgid "Created a copy of a misnamed branch '%s'"
 msgstr "Создана копия неправильно названной ветки «%s»"
 
-#: builtin/branch.c:543
+#: builtin/branch.c:553
 #, c-format
 msgid "Renamed a misnamed branch '%s' away"
 msgstr "Переименована неправильно названная ветка «%s»"
 
-#: builtin/branch.c:549
+#: builtin/branch.c:559
 #, c-format
 msgid "Branch renamed to %s, but HEAD is not updated!"
 msgstr "Ветка переименована в %s, но HEAD не обновлен!"
 
-#: builtin/branch.c:558
+#: builtin/branch.c:568
 msgid "Branch is renamed, but update of config-file failed"
 msgstr "Ветка переименована, но произошел сбой обновления файла конфигурации"
 
-#: builtin/branch.c:560
+#: builtin/branch.c:570
 msgid "Branch is copied, but update of config-file failed"
 msgstr "Ветка скопирована, но произошел сбой обновления файла конфигурации"
 
-#: builtin/branch.c:576
+#: builtin/branch.c:586
 #, c-format
 msgid ""
 "Please edit the description for the branch\n"
@@ -8907,308 +10307,439 @@ msgid ""
 "Lines starting with '%c' will be stripped.\n"
 msgstr "Измените описание для ветки:\n  %s\nСтроки, начинающиеся с «%c» будут вырезаны.\n"
 
-#: builtin/branch.c:610
+#: builtin/branch.c:620
 msgid "Generic options"
 msgstr "Общие параметры"
 
-#: builtin/branch.c:612
+#: builtin/branch.c:622
 msgid "show hash and subject, give twice for upstream branch"
-msgstr "показывать хеш-сумму и тему, укажите дважды для вышестоящей ветки"
+msgstr "показывать хэш-код и тему, укажите дважды для вышестоящей ветки"
 
-#: builtin/branch.c:613
+#: builtin/branch.c:623
 msgid "suppress informational messages"
 msgstr "не выводить информационные сообщения"
 
-#: builtin/branch.c:614
+#: builtin/branch.c:624
 msgid "set up tracking mode (see git-pull(1))"
 msgstr "установить режим отслеживания вышестоящей ветки (см. git-pull(1))"
 
-#: builtin/branch.c:616
+#: builtin/branch.c:626
 msgid "do not use"
 msgstr "не используйте"
 
-#: builtin/branch.c:618 builtin/rebase.c:485
+#: builtin/branch.c:628 builtin/rebase.c:532
 msgid "upstream"
 msgstr "вышестоящая"
 
-#: builtin/branch.c:618
+#: builtin/branch.c:628
 msgid "change the upstream info"
 msgstr "изменить информацию о вышестоящей ветке"
 
-#: builtin/branch.c:619
-msgid "Unset the upstream info"
-msgstr "Убрать информацию о вышестоящей ветке"
+#: builtin/branch.c:629
+msgid "unset the upstream info"
+msgstr ""
 
-#: builtin/branch.c:620
+#: builtin/branch.c:630
 msgid "use colored output"
 msgstr "использовать цветной вывод"
 
-#: builtin/branch.c:621
+#: builtin/branch.c:631
 msgid "act on remote-tracking branches"
 msgstr "выполнить действия на отслеживаемых внешних ветках"
 
-#: builtin/branch.c:623 builtin/branch.c:625
+#: builtin/branch.c:633 builtin/branch.c:635
 msgid "print only branches that contain the commit"
-msgstr "вÑ\8bвод Ñ\82олÑ\8cко Ð²ÐµÑ\82ок, которые содержат коммит"
+msgstr "вÑ\8bвеÑ\81Ñ\82и Ñ\82олÑ\8cко Ð²ÐµÑ\82ки, которые содержат коммит"
 
-#: builtin/branch.c:624 builtin/branch.c:626
+#: builtin/branch.c:634 builtin/branch.c:636
 msgid "print only branches that don't contain the commit"
-msgstr "вÑ\8bвод Ñ\82олÑ\8cко Ð²ÐµÑ\82ок, которые не содержат коммит"
+msgstr "вÑ\8bвеÑ\81Ñ\82и Ñ\82олÑ\8cко Ð²ÐµÑ\82ки, которые не содержат коммит"
 
-#: builtin/branch.c:629
+#: builtin/branch.c:639
 msgid "Specific git-branch actions:"
 msgstr "Специфичные для git-branch действия:"
 
-#: builtin/branch.c:630
+#: builtin/branch.c:640
 msgid "list both remote-tracking and local branches"
-msgstr "показаÑ\82Ñ\8c Ñ\81пиÑ\81ок и отслеживаемых и локальных веток"
+msgstr "вÑ\8bвеÑ\81Ñ\82и Ñ\81пиÑ\81ки отслеживаемых и локальных веток"
 
-#: builtin/branch.c:632
+#: builtin/branch.c:642
 msgid "delete fully merged branch"
 msgstr "удалить полностью слитую ветку"
 
-#: builtin/branch.c:633
+#: builtin/branch.c:643
 msgid "delete branch (even if not merged)"
 msgstr "удалить ветку (даже никуда не слитую)"
 
-#: builtin/branch.c:634
+#: builtin/branch.c:644
 msgid "move/rename a branch and its reflog"
 msgstr "переместить/переименовать ветки и ее журнал ссылок"
 
-#: builtin/branch.c:635
+#: builtin/branch.c:645
 msgid "move/rename a branch, even if target exists"
 msgstr "переместить/переименовать ветку, даже если целевое имя уже существует"
 
-#: builtin/branch.c:636
+#: builtin/branch.c:646
 msgid "copy a branch and its reflog"
 msgstr "скопировать ветку и её журнал ссылок"
 
-#: builtin/branch.c:637
+#: builtin/branch.c:647
 msgid "copy a branch, even if target exists"
 msgstr "скопировать ветку, даже если целевое имя уже существует"
 
-#: builtin/branch.c:638
+#: builtin/branch.c:648
 msgid "list branch names"
-msgstr "показать список имен веток"
+msgstr "показать список имён веток"
 
-#: builtin/branch.c:639
+#: builtin/branch.c:649
 msgid "show current branch name"
-msgstr ""
+msgstr "вывести имя текущей ветки"
 
-#: builtin/branch.c:640
+#: builtin/branch.c:650
 msgid "create the branch's reflog"
 msgstr "создать журнал ссылок ветки"
 
-#: builtin/branch.c:642
+#: builtin/branch.c:652
 msgid "edit the description for the branch"
 msgstr "изменить описание ветки"
 
-#: builtin/branch.c:643
+#: builtin/branch.c:653
 msgid "force creation, move/rename, deletion"
 msgstr "принудительное создание, перемещение или удаление ветки"
 
-#: builtin/branch.c:644
+#: builtin/branch.c:654
 msgid "print only branches that are merged"
 msgstr "вывод только слитых веток"
 
-#: builtin/branch.c:645
+#: builtin/branch.c:655
 msgid "print only branches that are not merged"
 msgstr "вывод только не слитых веток"
 
-#: builtin/branch.c:646
+#: builtin/branch.c:656
 msgid "list branches in columns"
 msgstr "показать список веток по столбцам"
 
-#: builtin/branch.c:649 builtin/for-each-ref.c:42 builtin/notes.c:415
+#: builtin/branch.c:658 builtin/for-each-ref.c:42 builtin/notes.c:415
 #: builtin/notes.c:418 builtin/notes.c:581 builtin/notes.c:584
-#: builtin/tag.c:427
+#: builtin/tag.c:434
 msgid "object"
 msgstr "объект"
 
-#: builtin/branch.c:650
+#: builtin/branch.c:659
 msgid "print only branches of the object"
 msgstr "вывод только веток, определенного объекта"
 
-#: builtin/branch.c:652 builtin/for-each-ref.c:48 builtin/tag.c:434
+#: builtin/branch.c:660 builtin/for-each-ref.c:48 builtin/tag.c:441
 msgid "sorting and filtering are case insensitive"
 msgstr "сортировка и фильтрация не зависят от регистра"
 
-#: builtin/branch.c:653 builtin/for-each-ref.c:38 builtin/tag.c:432
-#: builtin/verify-tag.c:39
+#: builtin/branch.c:661 builtin/for-each-ref.c:38 builtin/tag.c:439
+#: builtin/verify-tag.c:38
 msgid "format to use for the output"
 msgstr "использовать формат для вывода"
 
-#: builtin/branch.c:676 builtin/clone.c:748
+#: builtin/branch.c:684 builtin/clone.c:790
 msgid "HEAD not found below refs/heads!"
 msgstr "HEAD не найден в refs/heads!"
 
-#: builtin/branch.c:700
+#: builtin/branch.c:708
 msgid "--column and --verbose are incompatible"
 msgstr "--column и --verbose нельзя использовать одновременно"
 
-#: builtin/branch.c:715 builtin/branch.c:769 builtin/branch.c:778
+#: builtin/branch.c:723 builtin/branch.c:777 builtin/branch.c:786
 msgid "branch name required"
 msgstr "требуется имя ветки"
 
-#: builtin/branch.c:745
+#: builtin/branch.c:753
 msgid "Cannot give description to detached HEAD"
 msgstr "Нельзя дать описание отделённому HEAD"
 
-#: builtin/branch.c:750
+#: builtin/branch.c:758
 msgid "cannot edit description of more than one branch"
 msgstr "нельзя изменить описание более одной ветки за раз"
 
-#: builtin/branch.c:757
+#: builtin/branch.c:765
 #, c-format
 msgid "No commit on branch '%s' yet."
 msgstr "Еще нет коммита на ветке «%s»."
 
-#: builtin/branch.c:760
+#: builtin/branch.c:768
 #, c-format
 msgid "No branch named '%s'."
 msgstr "Нет ветки с именем «%s»."
 
-#: builtin/branch.c:775
+#: builtin/branch.c:783
 msgid "too many branches for a copy operation"
 msgstr "слишком много веток для операции копирования"
 
-#: builtin/branch.c:784
+#: builtin/branch.c:792
 msgid "too many arguments for a rename operation"
 msgstr "слишком много аргументов для операции переименования"
 
-#: builtin/branch.c:789
+#: builtin/branch.c:797
 msgid "too many arguments to set new upstream"
 msgstr "слишком много аргументов для указания новой вышестоящей ветки"
 
-#: builtin/branch.c:793
+#: builtin/branch.c:801
 #, c-format
 msgid ""
 "could not set upstream of HEAD to %s when it does not point to any branch."
 msgstr "невозможно установить вышестоящий репозиторий для HEAD на %s, так как он не указывает ни на одну ветку."
 
-#: builtin/branch.c:796 builtin/branch.c:819
+#: builtin/branch.c:804 builtin/branch.c:827
 #, c-format
 msgid "no such branch '%s'"
 msgstr "нет такой ветки «%s»"
 
-#: builtin/branch.c:800
+#: builtin/branch.c:808
 #, c-format
 msgid "branch '%s' does not exist"
 msgstr "ветка «%s» не существует"
 
-#: builtin/branch.c:813
+#: builtin/branch.c:821
 msgid "too many arguments to unset upstream"
 msgstr "слишком много аргументов для сброса указания вышестоящей ветки"
 
-#: builtin/branch.c:817
+#: builtin/branch.c:825
 msgid "could not unset upstream of HEAD when it does not point to any branch."
 msgstr "невозможно убрать вышестоящий репозиторий для HEAD, так как он не указывает ни на одну ветку."
 
-#: builtin/branch.c:823
+#: builtin/branch.c:831
 #, c-format
 msgid "Branch '%s' has no upstream information"
 msgstr "Ветка «%s» не имеет информации о вышестоящей ветке"
 
-#: builtin/branch.c:833
-msgid "-a and -r options to 'git branch' do not make sense with a branch name"
-msgstr "параметры -a и -r для «git branch» не имеют смысла с указанием имени ветки"
+#: builtin/branch.c:841
+msgid ""
+"The -a, and -r, options to 'git branch' do not take a branch name.\n"
+"Did you mean to use: -a|-r --list <pattern>?"
+msgstr ""
 
-#: builtin/branch.c:836
+#: builtin/branch.c:845
 msgid ""
 "the '--set-upstream' option is no longer supported. Please use '--track' or "
 "'--set-upstream-to' instead."
 msgstr "опция --set-upstream больше не поддерживается. Вместо неё используйте «--track» или «--set-upstream-to»"
 
-#: builtin/bundle.c:45
+#: builtin/bugreport.c:15
+msgid "git version:\n"
+msgstr ""
+
+#: builtin/bugreport.c:21
 #, c-format
-msgid "%s is okay\n"
-msgstr "%s в порядке\n"
+msgid "uname() failed with error '%s' (%d)\n"
+msgstr ""
+
+#: builtin/bugreport.c:31
+msgid "compiler info: "
+msgstr ""
+
+#: builtin/bugreport.c:34
+msgid "libc info: "
+msgstr ""
+
+#: builtin/bugreport.c:80
+msgid "not run from a git repository - no hooks to show\n"
+msgstr ""
+
+#: builtin/bugreport.c:90
+msgid "git bugreport [-o|--output-directory <file>] [-s|--suffix <format>]"
+msgstr ""
+
+#: builtin/bugreport.c:97
+msgid ""
+"Thank you for filling out a Git bug report!\n"
+"Please answer the following questions to help us understand your issue.\n"
+"\n"
+"What did you do before the bug happened? (Steps to reproduce your issue)\n"
+"\n"
+"What did you expect to happen? (Expected behavior)\n"
+"\n"
+"What happened instead? (Actual behavior)\n"
+"\n"
+"What's different between what you expected and what actually happened?\n"
+"\n"
+"Anything else you want to add:\n"
+"\n"
+"Please review the rest of the bug report below.\n"
+"You can delete any lines you don't wish to share.\n"
+msgstr ""
+
+#: builtin/bugreport.c:135
+msgid "specify a destination for the bugreport file"
+msgstr ""
+
+#: builtin/bugreport.c:137
+msgid "specify a strftime format suffix for the filename"
+msgstr ""
+
+#: builtin/bugreport.c:159
+#, c-format
+msgid "could not create leading directories for '%s'"
+msgstr ""
+
+#: builtin/bugreport.c:166
+msgid "System Info"
+msgstr ""
+
+#: builtin/bugreport.c:169
+msgid "Enabled Hooks"
+msgstr ""
 
-#: builtin/bundle.c:58
+#: builtin/bugreport.c:176
+#, c-format
+msgid "couldn't create a new file at '%s'"
+msgstr ""
+
+#: builtin/bugreport.c:179
+#, c-format
+msgid "unable to write to %s"
+msgstr ""
+
+#: builtin/bugreport.c:189
+#, c-format
+msgid "Created new report at '%s'.\n"
+msgstr ""
+
+#: builtin/bundle.c:15 builtin/bundle.c:23
+msgid "git bundle create [<options>] <file> <git-rev-list args>"
+msgstr ""
+
+#: builtin/bundle.c:16 builtin/bundle.c:28
+msgid "git bundle verify [<options>] <file>"
+msgstr ""
+
+#: builtin/bundle.c:17 builtin/bundle.c:33
+msgid "git bundle list-heads <file> [<refname>...]"
+msgstr ""
+
+#: builtin/bundle.c:18 builtin/bundle.c:38
+msgid "git bundle unbundle <file> [<refname>...]"
+msgstr ""
+
+#: builtin/bundle.c:67 builtin/pack-objects.c:3480
+msgid "do not show progress meter"
+msgstr "не выводить прогресс выполнения"
+
+#: builtin/bundle.c:69 builtin/pack-objects.c:3482
+msgid "show progress meter"
+msgstr "показать прогресс выполнения"
+
+#: builtin/bundle.c:71 builtin/pack-objects.c:3484
+msgid "show progress meter during object writing phase"
+msgstr "показать прогресс выполнения во время записи объектов"
+
+#: builtin/bundle.c:74 builtin/pack-objects.c:3487
+msgid "similar to --all-progress when progress meter is shown"
+msgstr "похоже на --all-progress при включенном прогрессе выполнения"
+
+#: builtin/bundle.c:76
+msgid "specify bundle format version"
+msgstr ""
+
+#: builtin/bundle.c:96
 msgid "Need a repository to create a bundle."
 msgstr "Требуется репозиторий для создания пакета."
 
-#: builtin/bundle.c:62
+#: builtin/bundle.c:107
+msgid "do not show bundle details"
+msgstr ""
+
+#: builtin/bundle.c:122
+#, c-format
+msgid "%s is okay\n"
+msgstr "%s в порядке\n"
+
+#: builtin/bundle.c:163
 msgid "Need a repository to unbundle."
 msgstr "Требуется репозиторий для распаковки."
 
-#: builtin/cat-file.c:593
+#: builtin/bundle.c:171 builtin/remote.c:1700
+msgid "be verbose; must be placed before a subcommand"
+msgstr "быть многословнее; должно стоять перед подкомандой"
+
+#: builtin/bundle.c:193 builtin/remote.c:1731
+#, c-format
+msgid "Unknown subcommand: %s"
+msgstr "Неизвестная подкоманда: %s"
+
+#: builtin/cat-file.c:598
 msgid ""
 "git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | "
 "-p | <type> | --textconv | --filters) [--path=<path>] <object>"
 msgstr "git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | -p | <тип> | --textconv | --filters) [--path=<путь>] <объект>"
 
-#: builtin/cat-file.c:594
+#: builtin/cat-file.c:599
 msgid ""
-"git cat-file (--batch | --batch-check) [--follow-symlinks] [--textconv | "
-"--filters]"
-msgstr "git cat-file (--batch | --batch-check) [--follow-symlinks] [--textconv | --filters]"
+"git cat-file (--batch[=<format>] | --batch-check[=<format>]) [--follow-"
+"symlinks] [--textconv | --filters]"
+msgstr ""
 
-#: builtin/cat-file.c:615
+#: builtin/cat-file.c:620
 msgid "only one batch option may be specified"
 msgstr ""
 
-#: builtin/cat-file.c:633
+#: builtin/cat-file.c:638
 msgid "<type> can be one of: blob, tree, commit, tag"
 msgstr "<тип> может быть одним из: blob, tree, commit, tag"
 
-#: builtin/cat-file.c:634
+#: builtin/cat-file.c:639
 msgid "show object type"
 msgstr "показать тип объекта"
 
-#: builtin/cat-file.c:635
+#: builtin/cat-file.c:640
 msgid "show object size"
 msgstr "показать размер объекта"
 
-#: builtin/cat-file.c:637
+#: builtin/cat-file.c:642
 msgid "exit with zero when there's no error"
 msgstr "выйти с нулевым кодом возврата, если нет ошибки"
 
-#: builtin/cat-file.c:638
+#: builtin/cat-file.c:643
 msgid "pretty-print object's content"
 msgstr "структурированный вывод содержимого объекта"
 
-#: builtin/cat-file.c:640
+#: builtin/cat-file.c:645
 msgid "for blob objects, run textconv on object's content"
-msgstr "запустить texconv на содержимом двоичных объектов "
+msgstr "запустить texconv на содержимом двоичных объектов"
 
-#: builtin/cat-file.c:642
+#: builtin/cat-file.c:647
 msgid "for blob objects, run filters on object's content"
-msgstr "запуск фильтров на содержимом двоичных объектов "
+msgstr "запуск фильтров на содержимом двоичных объектов"
 
-#: builtin/cat-file.c:643 git-submodule.sh:936
+#: builtin/cat-file.c:648
 msgid "blob"
 msgstr "двоичный объект"
 
-#: builtin/cat-file.c:644
+#: builtin/cat-file.c:649
 msgid "use a specific path for --textconv/--filters"
 msgstr "использовать определенный путь для --textconv/--filters"
 
-#: builtin/cat-file.c:646
+#: builtin/cat-file.c:651
 msgid "allow -s and -t to work with broken/corrupt objects"
 msgstr "разрешить -s и -t работать с повреждёнными объектами"
 
-#: builtin/cat-file.c:647
+#: builtin/cat-file.c:652
 msgid "buffer --batch output"
 msgstr "буфферировать вывод --batch"
 
-#: builtin/cat-file.c:649
+#: builtin/cat-file.c:654
 msgid "show info and content of objects fed from the standard input"
 msgstr "показать информацию и содержимое объектов, переданных из стандартного ввода"
 
-#: builtin/cat-file.c:653
+#: builtin/cat-file.c:658
 msgid "show info about objects fed from the standard input"
 msgstr "показать информацию об объектах, переданных из стандартного ввода"
 
-#: builtin/cat-file.c:657
+#: builtin/cat-file.c:662
 msgid "follow in-tree symlinks (used with --batch or --batch-check)"
 msgstr "переходить по символьным ссылкам внутри дерева (используется с опциями --batch и --batch-check)"
 
-#: builtin/cat-file.c:659
+#: builtin/cat-file.c:664
 msgid "show all objects with --batch or --batch-check"
 msgstr "показать все объекты с опциями --batch или --batch-check"
 
-#: builtin/cat-file.c:661
+#: builtin/cat-file.c:666
 msgid "do not order --batch-all-objects output"
 msgstr ""
 
@@ -9236,8 +10767,8 @@ msgstr "прочитать имена файлов из стандартного
 msgid "terminate input and output records by a NUL character"
 msgstr "окончание ввода и вывода записей по НУЛЕВОМУ символу"
 
-#: builtin/check-ignore.c:21 builtin/checkout.c:1355 builtin/gc.c:538
-#: builtin/worktree.c:499
+#: builtin/check-ignore.c:21 builtin/checkout.c:1500 builtin/gc.c:541
+#: builtin/worktree.c:561
 msgid "suppress progress reporting"
 msgstr "не выводить прогресс выполнения"
 
@@ -9249,27 +10780,27 @@ msgstr "показать не совпадающие введенные пути
 msgid "ignore index when checking"
 msgstr "игнорировать индекс при проверке"
 
-#: builtin/check-ignore.c:160
+#: builtin/check-ignore.c:163
 msgid "cannot specify pathnames with --stdin"
 msgstr "нельзя указывать пути вместе с параметром --stdin"
 
-#: builtin/check-ignore.c:163
+#: builtin/check-ignore.c:166
 msgid "-z only makes sense with --stdin"
 msgstr "-z имеет смысл только вместе с параметром --stdin"
 
-#: builtin/check-ignore.c:165
+#: builtin/check-ignore.c:168
 msgid "no path specified"
 msgstr "не указан путь"
 
-#: builtin/check-ignore.c:169
+#: builtin/check-ignore.c:172
 msgid "--quiet is only valid with a single pathname"
 msgstr "--quiet можно использовать только при указании одного пути"
 
-#: builtin/check-ignore.c:171
+#: builtin/check-ignore.c:174
 msgid "cannot have both --quiet and --verbose"
 msgstr "нельзя использовать одновременно --quiet и --verbose"
 
-#: builtin/check-ignore.c:174
+#: builtin/check-ignore.c:177
 msgid "--non-matching is only valid with --verbose"
 msgstr "--non-matching можно использовать только вместе с --verbose"
 
@@ -9290,117 +10821,104 @@ msgstr "не удалось разобрать контакт: %s"
 msgid "no contacts specified"
 msgstr "не указаны контакты"
 
-#: builtin/checkout-index.c:131
+#: builtin/checkout-index.c:139
 msgid "git checkout-index [<options>] [--] [<file>...]"
 msgstr "git checkout-index [<опции>] [--] [<файл>…]"
 
-#: builtin/checkout-index.c:148
+#: builtin/checkout-index.c:156
 msgid "stage should be between 1 and 3 or all"
 msgstr "индекс должен быть между 1 и 3 или all"
 
-#: builtin/checkout-index.c:164
+#: builtin/checkout-index.c:173
 msgid "check out all files in the index"
 msgstr "переключиться на состояние всех файлов из индекса"
 
-#: builtin/checkout-index.c:165
+#: builtin/checkout-index.c:174
 msgid "force overwrite of existing files"
 msgstr "принудительная перезапись существующих файлов"
 
-#: builtin/checkout-index.c:167
+#: builtin/checkout-index.c:176
 msgid "no warning for existing files and files not in index"
 msgstr "не выводить предупреждения для существующих и непроиндексированных файлов"
 
-#: builtin/checkout-index.c:169
+#: builtin/checkout-index.c:178
 msgid "don't checkout new files"
 msgstr "не создавать новые файлы"
 
-#: builtin/checkout-index.c:171
+#: builtin/checkout-index.c:180
 msgid "update stat information in the index file"
 msgstr "обновить статистику доступа в файле индекса"
 
-#: builtin/checkout-index.c:175
+#: builtin/checkout-index.c:184
 msgid "read list of paths from the standard input"
 msgstr "прочитать список путей из стандартного ввода"
 
-#: builtin/checkout-index.c:177
+#: builtin/checkout-index.c:186
 msgid "write the content to temporary files"
 msgstr "записать содержимое во временные файлы"
 
-#: builtin/checkout-index.c:178 builtin/column.c:31
-#: builtin/submodule--helper.c:1372 builtin/submodule--helper.c:1375
-#: builtin/submodule--helper.c:1383 builtin/submodule--helper.c:1856
-#: builtin/worktree.c:672
+#: builtin/checkout-index.c:187 builtin/column.c:31
+#: builtin/submodule--helper.c:1824 builtin/submodule--helper.c:1827
+#: builtin/submodule--helper.c:1835 builtin/submodule--helper.c:2333
+#: builtin/worktree.c:757
 msgid "string"
 msgstr "строка"
 
-#: builtin/checkout-index.c:179
+#: builtin/checkout-index.c:188
 msgid "when creating files, prepend <string>"
 msgstr "добавить спереди <строку> при создании файлов"
 
-#: builtin/checkout-index.c:181
+#: builtin/checkout-index.c:190
 msgid "copy out the files from named stage"
 msgstr "копировать файлы из указанного индекса"
 
-#: builtin/checkout.c:32
+#: builtin/checkout.c:31
 msgid "git checkout [<options>] <branch>"
 msgstr "git checkout [<опции>] <ветка>"
 
-#: builtin/checkout.c:33
+#: builtin/checkout.c:32
 msgid "git checkout [<options>] [<branch>] -- <file>..."
 msgstr "git checkout [<опции>] [<ветка>] -- <файл>…"
 
-#: builtin/checkout.c:151 builtin/checkout.c:190
+#: builtin/checkout.c:37
+msgid "git switch [<options>] [<branch>]"
+msgstr ""
+
+#: builtin/checkout.c:42
+msgid "git restore [<options>] [--source=<branch>] <file>..."
+msgstr "git restore [<опции>] [--source=<ветка>] <файл>…"
+
+#: builtin/checkout.c:188 builtin/checkout.c:227
 #, c-format
 msgid "path '%s' does not have our version"
 msgstr "путь «%s» не имеет нашей версии"
 
-#: builtin/checkout.c:153 builtin/checkout.c:192
+#: builtin/checkout.c:190 builtin/checkout.c:229
 #, c-format
 msgid "path '%s' does not have their version"
 msgstr "путь «%s» не имеет их версии"
 
-#: builtin/checkout.c:169
+#: builtin/checkout.c:206
 #, c-format
 msgid "path '%s' does not have all necessary versions"
 msgstr "путь «%s» не имеет всех необходимых версий"
 
-#: builtin/checkout.c:219
+#: builtin/checkout.c:258
 #, c-format
 msgid "path '%s' does not have necessary versions"
 msgstr "путь «%s» не имеет необходимых версий"
 
-#: builtin/checkout.c:237
+#: builtin/checkout.c:275
 #, c-format
 msgid "path '%s': cannot merge"
 msgstr "путь «%s»: не удалось слить"
 
-#: builtin/checkout.c:253
+#: builtin/checkout.c:291
 #, c-format
 msgid "Unable to add merge result for '%s'"
 msgstr "Не удалось добавить результат слияния «%s»"
 
-#: builtin/checkout.c:331 builtin/checkout.c:334 builtin/checkout.c:337
-#: builtin/checkout.c:340
-#, c-format
-msgid "'%s' cannot be used with updating paths"
-msgstr "«%s» нельзя использовать при обновлении путей"
-
-#: builtin/checkout.c:343 builtin/checkout.c:346
-#, c-format
-msgid "'%s' cannot be used with %s"
-msgstr "«%s» нельзя использовать одновременно с %s"
-
-#: builtin/checkout.c:349
-#, c-format
-msgid "Cannot update paths and switch to branch '%s' at the same time."
-msgstr "Нельзя обновлять пути и переключаться на ветку «%s» одновременно."
-
-#: builtin/checkout.c:396 builtin/checkout.c:403
-#, c-format
-msgid "path '%s' is unmerged"
-msgstr "путь «%s» не слит"
-
-#: builtin/checkout.c:442
+#: builtin/checkout.c:396
 #, c-format
 msgid "Recreated %d merge conflict"
 msgid_plural "Recreated %d merge conflicts"
@@ -9409,7 +10927,7 @@ msgstr[1] ""
 msgstr[2] ""
 msgstr[3] ""
 
-#: builtin/checkout.c:447
+#: builtin/checkout.c:401
 #, c-format
 msgid "Updated %d path from %s"
 msgid_plural "Updated %d paths from %s"
@@ -9418,7 +10936,7 @@ msgstr[1] ""
 msgstr[2] ""
 msgstr[3] ""
 
-#: builtin/checkout.c:454
+#: builtin/checkout.c:408
 #, c-format
 msgid "Updated %d path from the index"
 msgid_plural "Updated %d paths from the index"
@@ -9427,66 +10945,97 @@ msgstr[1] ""
 msgstr[2] ""
 msgstr[3] ""
 
-#: builtin/checkout.c:695
+#: builtin/checkout.c:431 builtin/checkout.c:434 builtin/checkout.c:437
+#: builtin/checkout.c:441
+#, c-format
+msgid "'%s' cannot be used with updating paths"
+msgstr "«%s» нельзя использовать при обновлении путей"
+
+#: builtin/checkout.c:444 builtin/checkout.c:447
+#, c-format
+msgid "'%s' cannot be used with %s"
+msgstr "«%s» нельзя использовать одновременно с %s"
+
+#: builtin/checkout.c:451
+#, c-format
+msgid "Cannot update paths and switch to branch '%s' at the same time."
+msgstr "Нельзя обновлять пути и переключаться на ветку «%s» одновременно."
+
+#: builtin/checkout.c:455
+#, c-format
+msgid "neither '%s' or '%s' is specified"
+msgstr ""
+
+#: builtin/checkout.c:459
+#, c-format
+msgid "'%s' must be used when '%s' is not specified"
+msgstr ""
+
+#: builtin/checkout.c:464 builtin/checkout.c:469
+#, c-format
+msgid "'%s' or '%s' cannot be used with %s"
+msgstr ""
+
+#: builtin/checkout.c:541 builtin/checkout.c:548
+#, c-format
+msgid "path '%s' is unmerged"
+msgstr "путь «%s» не слит"
+
+#: builtin/checkout.c:716
 msgid "you need to resolve your current index first"
 msgstr "сначала нужно разрешить конфликты в вашем текущем индексе"
 
-#: builtin/checkout.c:744
+#: builtin/checkout.c:770
 #, c-format
 msgid ""
 "cannot continue with staged changes in the following files:\n"
 "%s"
 msgstr ""
 
-#: builtin/checkout.c:751
-#, c-format
-msgid "staged changes in the following files may be lost: %s"
-msgstr ""
-
-#: builtin/checkout.c:848
+#: builtin/checkout.c:866
 #, c-format
 msgid "Can not do reflog for '%s': %s\n"
 msgstr "Не удалось создать журнал ссылок для «%s»: %s\n"
 
-#: builtin/checkout.c:890
+#: builtin/checkout.c:908
 msgid "HEAD is now at"
 msgstr "HEAD сейчас на"
 
-#: builtin/checkout.c:894 builtin/clone.c:701
+#: builtin/checkout.c:912 builtin/clone.c:721 t/helper/test-fast-rebase.c:202
 msgid "unable to update HEAD"
 msgstr "не удалось обновить HEAD"
 
-#: builtin/checkout.c:898
+#: builtin/checkout.c:916
 #, c-format
 msgid "Reset branch '%s'\n"
 msgstr "Сброс ветки «%s»\n"
 
-#: builtin/checkout.c:901
+#: builtin/checkout.c:919
 #, c-format
 msgid "Already on '%s'\n"
 msgstr "Уже на «%s»\n"
 
-#: builtin/checkout.c:905
+#: builtin/checkout.c:923
 #, c-format
 msgid "Switched to and reset branch '%s'\n"
 msgstr "Переключение и сброс ветки «%s»\n"
 
-#: builtin/checkout.c:907 builtin/checkout.c:1283
+#: builtin/checkout.c:925 builtin/checkout.c:1356
 #, c-format
 msgid "Switched to a new branch '%s'\n"
 msgstr "Переключено на новую ветку «%s»\n"
 
-#: builtin/checkout.c:909
+#: builtin/checkout.c:927
 #, c-format
 msgid "Switched to branch '%s'\n"
 msgstr "Переключено на ветку «%s»\n"
 
-#: builtin/checkout.c:960
+#: builtin/checkout.c:978
 #, c-format
 msgid " ... and %d more.\n"
 msgstr " … и еще %d.\n"
 
-#: builtin/checkout.c:966
+#: builtin/checkout.c:984
 #, c-format
 msgid ""
 "Warning: you are leaving %d commit behind, not connected to\n"
@@ -9503,7 +11052,7 @@ msgstr[1] "Предупреждение: вы оставляете позади
 msgstr[2] "Предупреждение: вы оставляете позади %d коммитов не соединенные ни с одной из ваших веток:\n\n%s\n"
 msgstr[3] "Предупреждение: вы оставляете позади %d коммитов не соединенные ни с одной из ваших веток:\n\n%s\n"
 
-#: builtin/checkout.c:985
+#: builtin/checkout.c:1003
 #, c-format
 msgid ""
 "If you want to keep it by creating a new branch, this may be a good time\n"
@@ -9522,228 +11071,357 @@ msgstr[1] "Если вы хотите сохранить их с помощью
 msgstr[2] "Если вы хотите сохранить их с помощью создания новой ветки, то сейчас самое время\nсделать это с помощью:\n\n git branch <имя-новой-ветки> %s\n"
 msgstr[3] "Если вы хотите сохранить их с помощью создания новой ветки, то сейчас самое время\nсделать это с помощью:\n\n git branch <имя-новой-ветки> %s\n"
 
-#: builtin/checkout.c:1017
+#: builtin/checkout.c:1038
 msgid "internal error in revision walk"
 msgstr "внутренняя ошибка при хождении по редакциям"
 
-#: builtin/checkout.c:1021
+#: builtin/checkout.c:1042
 msgid "Previous HEAD position was"
 msgstr "Предыдущая позиция HEAD была"
 
-#: builtin/checkout.c:1052 builtin/checkout.c:1278
+#: builtin/checkout.c:1082 builtin/checkout.c:1351
 msgid "You are on a branch yet to be born"
 msgstr "Вы находитесь на еще не созданной ветке"
 
-#: builtin/checkout.c:1173
-#, c-format
-msgid "only one reference expected, %d given."
-msgstr "ожидается только одна ссылка, а передано %d."
-
-#: builtin/checkout.c:1209
+#: builtin/checkout.c:1164
 #, c-format
 msgid ""
 "'%s' could be both a local file and a tracking branch.\n"
 "Please use -- (and optionally --no-guess) to disambiguate"
 msgstr ""
 
-#: builtin/checkout.c:1222 builtin/worktree.c:290 builtin/worktree.c:448
+#: builtin/checkout.c:1171
+msgid ""
+"If you meant to check out a remote tracking branch on, e.g. 'origin',\n"
+"you can do so by fully qualifying the name with the --track option:\n"
+"\n"
+"    git checkout --track origin/<name>\n"
+"\n"
+"If you'd like to always have checkouts of an ambiguous <name> prefer\n"
+"one remote, e.g. the 'origin' remote, consider setting\n"
+"checkout.defaultRemote=origin in your config."
+msgstr ""
+
+#: builtin/checkout.c:1181
+#, c-format
+msgid "'%s' matched multiple (%d) remote tracking branches"
+msgstr ""
+
+#: builtin/checkout.c:1247
+msgid "only one reference expected"
+msgstr ""
+
+#: builtin/checkout.c:1264
+#, c-format
+msgid "only one reference expected, %d given."
+msgstr "ожидается только одна ссылка, а передано %d."
+
+#: builtin/checkout.c:1310 builtin/worktree.c:342 builtin/worktree.c:510
 #, c-format
 msgid "invalid reference: %s"
 msgstr "неправильная ссылка: %s"
 
-#: builtin/checkout.c:1251
+#: builtin/checkout.c:1323 builtin/checkout.c:1689
 #, c-format
 msgid "reference is not a tree: %s"
 msgstr "в дереве нет такой ссылки: %s"
 
-#: builtin/checkout.c:1292
+#: builtin/checkout.c:1370
+#, c-format
+msgid "a branch is expected, got tag '%s'"
+msgstr ""
+
+#: builtin/checkout.c:1372
+#, c-format
+msgid "a branch is expected, got remote branch '%s'"
+msgstr ""
+
+#: builtin/checkout.c:1373 builtin/checkout.c:1381
+#, c-format
+msgid "a branch is expected, got '%s'"
+msgstr ""
+
+#: builtin/checkout.c:1376
+#, c-format
+msgid "a branch is expected, got commit '%s'"
+msgstr ""
+
+#: builtin/checkout.c:1392
+msgid ""
+"cannot switch branch while merging\n"
+"Consider \"git merge --quit\" or \"git worktree add\"."
+msgstr ""
+
+#: builtin/checkout.c:1396
+msgid ""
+"cannot switch branch in the middle of an am session\n"
+"Consider \"git am --quit\" or \"git worktree add\"."
+msgstr ""
+
+#: builtin/checkout.c:1400
+msgid ""
+"cannot switch branch while rebasing\n"
+"Consider \"git rebase --quit\" or \"git worktree add\"."
+msgstr ""
+
+#: builtin/checkout.c:1404
+msgid ""
+"cannot switch branch while cherry-picking\n"
+"Consider \"git cherry-pick --quit\" or \"git worktree add\"."
+msgstr ""
+
+#: builtin/checkout.c:1408
+msgid ""
+"cannot switch branch while reverting\n"
+"Consider \"git revert --quit\" or \"git worktree add\"."
+msgstr ""
+
+#: builtin/checkout.c:1412
+msgid "you are switching branch while bisecting"
+msgstr ""
+
+#: builtin/checkout.c:1419
 msgid "paths cannot be used with switching branches"
 msgstr "нельзя использовать пути при переключении веток"
 
-#: builtin/checkout.c:1295 builtin/checkout.c:1299 builtin/checkout.c:1303
+#: builtin/checkout.c:1422 builtin/checkout.c:1426 builtin/checkout.c:1430
 #, c-format
 msgid "'%s' cannot be used with switching branches"
 msgstr "нельзя использовать «%s» при переключении веток"
 
-#: builtin/checkout.c:1307 builtin/checkout.c:1310 builtin/checkout.c:1315
-#: builtin/checkout.c:1318
+#: builtin/checkout.c:1434 builtin/checkout.c:1437 builtin/checkout.c:1440
+#: builtin/checkout.c:1445 builtin/checkout.c:1450
 #, c-format
 msgid "'%s' cannot be used with '%s'"
 msgstr "«%s» нельзя использовать одновременно с «%s»"
 
-#: builtin/checkout.c:1323
+#: builtin/checkout.c:1447
+#, c-format
+msgid "'%s' cannot take <start-point>"
+msgstr ""
+
+#: builtin/checkout.c:1455
 #, c-format
 msgid "Cannot switch branch to a non-commit '%s'"
 msgstr "Нельзя переключить ветку на не коммит «%s»"
 
-#: builtin/checkout.c:1356 builtin/checkout.c:1358 builtin/clone.c:118
-#: builtin/remote.c:169 builtin/remote.c:171 builtin/worktree.c:492
-#: builtin/worktree.c:494
-msgid "branch"
-msgstr "ветка"
+#: builtin/checkout.c:1462
+msgid "missing branch or commit argument"
+msgstr ""
 
-#: builtin/checkout.c:1357
-msgid "create and checkout a new branch"
-msgstr "создать и переключиться на новую ветку"
+#: builtin/checkout.c:1504 builtin/clone.c:92 builtin/commit-graph.c:84
+#: builtin/commit-graph.c:222 builtin/fetch.c:172 builtin/merge.c:296
+#: builtin/multi-pack-index.c:27 builtin/pull.c:119 builtin/push.c:575
+#: builtin/send-pack.c:198
+msgid "force progress reporting"
+msgstr "принудительно выводить прогресс"
 
-#: builtin/checkout.c:1359
-msgid "create/reset and checkout a branch"
-msgstr "создать/сбросить и перключиться на новую ветку"
+#: builtin/checkout.c:1505
+msgid "perform a 3-way merge with the new branch"
+msgstr "выполнить трехходовое слияние с новой веткой"
 
-#: builtin/checkout.c:1360
-msgid "create reflog for new branch"
-msgstr "создать журнал ссылок для новой ветки"
+#: builtin/checkout.c:1506 builtin/log.c:1800 parse-options.h:322
+msgid "style"
+msgstr "стиль"
 
-#: builtin/checkout.c:1361 builtin/worktree.c:496
+#: builtin/checkout.c:1507
+msgid "conflict style (merge or diff3)"
+msgstr "стиль конфликтов слияния (merge или diff3)"
+
+#: builtin/checkout.c:1519 builtin/worktree.c:558
 msgid "detach HEAD at named commit"
 msgstr "отсоединить HEAD на указанном коммите"
 
-#: builtin/checkout.c:1362
+#: builtin/checkout.c:1520
 msgid "set upstream info for new branch"
 msgstr "установить информацию о вышестоящей ветке для новой ветки"
 
-#: builtin/checkout.c:1364
+#: builtin/checkout.c:1522
+msgid "force checkout (throw away local modifications)"
+msgstr "принудительное переключение на состояние (отбрасывает все локальные изменения)"
+
+#: builtin/checkout.c:1524
 msgid "new-branch"
 msgstr "новая-ветка"
 
-#: builtin/checkout.c:1364
+#: builtin/checkout.c:1524
 msgid "new unparented branch"
 msgstr "новая ветка без родителей"
 
-#: builtin/checkout.c:1366
+#: builtin/checkout.c:1526 builtin/merge.c:300
+msgid "update ignored files (default)"
+msgstr "обновить игнорируемые файлы (по умолчанию)"
+
+#: builtin/checkout.c:1529
+msgid "do not check if another worktree is holding the given ref"
+msgstr "не проверять, что другое дерево уже содержит указанную ссылку"
+
+#: builtin/checkout.c:1542
 msgid "checkout our version for unmerged files"
 msgstr "переключиться на нашу версию для не слитых файлов"
 
-#: builtin/checkout.c:1369
+#: builtin/checkout.c:1545
 msgid "checkout their version for unmerged files"
 msgstr "переключиться на их версию для не слитых файлов"
 
-#: builtin/checkout.c:1371
-msgid "force checkout (throw away local modifications)"
-msgstr "принудительное переключение на состояние (отбрасывает все локальные изменения)"
-
-#: builtin/checkout.c:1373
-msgid "perform a 3-way merge with the new branch"
-msgstr "выполнить трехходовое слияние с новой веткой"
-
-#: builtin/checkout.c:1375 builtin/merge.c:284
-msgid "update ignored files (default)"
-msgstr "обновить игнорируемые файлы (по умолчанию)"
-
-#: builtin/checkout.c:1377 builtin/log.c:1594 parse-options.h:317
-msgid "style"
-msgstr "стиль"
-
-#: builtin/checkout.c:1378
-msgid "conflict style (merge or diff3)"
-msgstr "стиль конфликтов слияния (merge или diff3)"
-
-#: builtin/checkout.c:1381
+#: builtin/checkout.c:1549
 msgid "do not limit pathspecs to sparse entries only"
 msgstr "не ограничивать спецификаторы пути только частичными записями"
 
-#: builtin/checkout.c:1383
-msgid "do not second guess 'git checkout <no-such-branch>'"
-msgstr ""
-
-#: builtin/checkout.c:1385
-msgid "do not check if another worktree is holding the given ref"
-msgstr "не проверять, что другое дерево уже содержит указанную ссылку"
-
-#: builtin/checkout.c:1389 builtin/clone.c:88 builtin/fetch.c:141
-#: builtin/merge.c:281 builtin/pull.c:136 builtin/push.c:575
-#: builtin/send-pack.c:174
-msgid "force progress reporting"
-msgstr "принудительно выводить прогресс"
-
-#: builtin/checkout.c:1390
-msgid "use overlay mode (default)"
+#: builtin/checkout.c:1604
+#, c-format
+msgid "-%c, -%c and --orphan are mutually exclusive"
 msgstr ""
 
-#: builtin/checkout.c:1422
-msgid "-b, -B and --orphan are mutually exclusive"
-msgstr "-b, -B и --orphan нельзя использовать одновременно"
-
-#: builtin/checkout.c:1425
+#: builtin/checkout.c:1608
 msgid "-p and --overlay are mutually exclusive"
 msgstr ""
 
-#: builtin/checkout.c:1442
+#: builtin/checkout.c:1645
 msgid "--track needs a branch name"
 msgstr "--track требует имя ветки"
 
-#: builtin/checkout.c:1447
-msgid "missing branch name; try -b"
-msgstr "пропущено имя ветки; попробуйте -b"
+#: builtin/checkout.c:1650
+#, c-format
+msgid "missing branch name; try -%c"
+msgstr ""
+
+#: builtin/checkout.c:1682
+#, c-format
+msgid "could not resolve %s"
+msgstr ""
 
-#: builtin/checkout.c:1484
+#: builtin/checkout.c:1698
 msgid "invalid path specification"
 msgstr "недопустимый спецификатор пути"
 
-#: builtin/checkout.c:1491
+#: builtin/checkout.c:1705
 #, c-format
 msgid "'%s' is not a commit and a branch '%s' cannot be created from it"
 msgstr "«%s» не является коммитом, поэтому невозможно создать из него ветку «%s»"
 
-#: builtin/checkout.c:1495
+#: builtin/checkout.c:1709
 #, c-format
 msgid "git checkout: --detach does not take a path argument '%s'"
 msgstr "git checkout: --detach не принимает путь «%s» как аргумент"
 
-#: builtin/checkout.c:1499
+#: builtin/checkout.c:1718
+msgid "--pathspec-from-file is incompatible with --detach"
+msgstr ""
+
+#: builtin/checkout.c:1721 builtin/reset.c:325 builtin/stash.c:1499
+msgid "--pathspec-from-file is incompatible with --patch"
+msgstr ""
+
+#: builtin/checkout.c:1734
 msgid ""
 "git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
 "checking out of the index."
 msgstr "git checkout: --ours/--theirs, --force and --merge нельзя использовать одновременно при применении состояния индекса."
 
-#: builtin/checkout.c:1519
-#, c-format
-msgid ""
-"'%s' matched more than one remote tracking branch.\n"
-"We found %d remotes with a reference that matched. So we fell back\n"
-"on trying to resolve the argument as a path, but failed there too!\n"
-"\n"
-"If you meant to check out a remote tracking branch on, e.g. 'origin',\n"
-"you can do so by fully qualifying the name with the --track option:\n"
-"\n"
-"    git checkout --track origin/<name>\n"
-"\n"
-"If you'd like to always have checkouts of an ambiguous <name> prefer\n"
-"one remote, e.g. the 'origin' remote, consider setting\n"
-"checkout.defaultRemote=origin in your config."
+#: builtin/checkout.c:1739
+msgid "you must specify path(s) to restore"
+msgstr ""
+
+#: builtin/checkout.c:1765 builtin/checkout.c:1767 builtin/checkout.c:1816
+#: builtin/checkout.c:1818 builtin/clone.c:122 builtin/remote.c:170
+#: builtin/remote.c:172 builtin/submodule--helper.c:2719
+#: builtin/worktree.c:554 builtin/worktree.c:556
+msgid "branch"
+msgstr "ветка"
+
+#: builtin/checkout.c:1766
+msgid "create and checkout a new branch"
+msgstr "создать и переключиться на новую ветку"
+
+#: builtin/checkout.c:1768
+msgid "create/reset and checkout a branch"
+msgstr "создать/сбросить и перключиться на новую ветку"
+
+#: builtin/checkout.c:1769
+msgid "create reflog for new branch"
+msgstr "создать журнал ссылок для новой ветки"
+
+#: builtin/checkout.c:1771
+msgid "second guess 'git checkout <no-such-branch>' (default)"
+msgstr ""
+
+#: builtin/checkout.c:1772
+msgid "use overlay mode (default)"
 msgstr ""
 
-#: builtin/clean.c:28
+#: builtin/checkout.c:1817
+msgid "create and switch to a new branch"
+msgstr ""
+
+#: builtin/checkout.c:1819
+msgid "create/reset and switch to a branch"
+msgstr ""
+
+#: builtin/checkout.c:1821
+msgid "second guess 'git switch <no-such-branch>'"
+msgstr ""
+
+#: builtin/checkout.c:1823
+msgid "throw away local modifications"
+msgstr ""
+
+#: builtin/checkout.c:1857
+msgid "which tree-ish to checkout from"
+msgstr ""
+
+#: builtin/checkout.c:1859
+msgid "restore the index"
+msgstr ""
+
+#: builtin/checkout.c:1861
+msgid "restore the working tree (default)"
+msgstr ""
+
+#: builtin/checkout.c:1863
+msgid "ignore unmerged entries"
+msgstr ""
+
+#: builtin/checkout.c:1864
+msgid "use overlay mode"
+msgstr ""
+
+#: builtin/clean.c:29
 msgid ""
 "git clean [-d] [-f] [-i] [-n] [-q] [-e <pattern>] [-x | -X] [--] <paths>..."
 msgstr "git clean [-d] [-f] [-i] [-n] [-q] [-e <шаблон>] [-x | -X] [--] <пути>…"
 
-#: builtin/clean.c:32
+#: builtin/clean.c:33
 #, c-format
 msgid "Removing %s\n"
 msgstr "Удаление %s\n"
 
-#: builtin/clean.c:33
+#: builtin/clean.c:34
 #, c-format
 msgid "Would remove %s\n"
 msgstr "Будет удалено %s\n"
 
-#: builtin/clean.c:34
+#: builtin/clean.c:35
 #, c-format
 msgid "Skipping repository %s\n"
 msgstr "Пропуск репозитория %s\n"
 
-#: builtin/clean.c:35
+#: builtin/clean.c:36
 #, c-format
 msgid "Would skip repository %s\n"
 msgstr "Будет пропущен репозиторий %s\n"
 
-#: builtin/clean.c:36
+#: builtin/clean.c:37
 #, c-format
 msgid "failed to remove %s"
 msgstr "сбой удаления %s"
 
-#: builtin/clean.c:299 git-add--interactive.perl:579
+#: builtin/clean.c:38
+#, c-format
+msgid "could not lstat %s\n"
+msgstr ""
+
+#: builtin/clean.c:302 git-add--interactive.perl:593
 #, c-format
 msgid ""
 "Prompt help:\n"
@@ -9752,7 +11430,7 @@ msgid ""
 "           - (empty) select nothing\n"
 msgstr "Справка по выделению:\n1          - выбрать указанный элемент\nfoo        - выбрать элемент с указанным префиксом\n           - (пусто) не выбирать ничего\n"
 
-#: builtin/clean.c:303 git-add--interactive.perl:588
+#: builtin/clean.c:306 git-add--interactive.perl:602
 #, c-format
 msgid ""
 "Prompt help:\n"
@@ -9765,8 +11443,8 @@ msgid ""
 "           - (empty) finish selecting\n"
 msgstr "Справка по выделению:\n1          - выбрать один элемент\n3-5        - выбрать диапазон элементов\n2-3,6-9    - выбрать несколько диапазонов\nfoo        - выбрать элемент с указанным префиксом\n-…       - убрать выделение с указанных элементов\n*          - выбрать все элементы\n           - (пусто) завершить выделение\n"
 
-#: builtin/clean.c:519 git-add--interactive.perl:554
-#: git-add--interactive.perl:559
+#: builtin/clean.c:521 git-add--interactive.perl:568
+#: git-add--interactive.perl:573
 #, c-format, perl-format
 msgid "Huh (%s)?\n"
 msgstr "Хм (%s)?\n"
@@ -9776,27 +11454,22 @@ msgstr "Хм (%s)?\n"
 msgid "Input ignore patterns>> "
 msgstr "Шаблоны игнорирования ввода>> "
 
-#: builtin/clean.c:698
+#: builtin/clean.c:696
 #, c-format
 msgid "WARNING: Cannot find items matched by: %s"
 msgstr "ПРЕДУПРЕЖДЕНИЕ: Не удалось найти элементы соответствующие: %s"
 
-#: builtin/clean.c:719
+#: builtin/clean.c:717
 msgid "Select items to delete"
 msgstr "Укажите элементы для удаления"
 
 #. TRANSLATORS: Make sure to keep [y/N] as is
-#: builtin/clean.c:760
+#: builtin/clean.c:758
 #, c-format
 msgid "Remove %s [y/N]? "
 msgstr "Удалить %s [y - да/N - нет]? "
 
-#: builtin/clean.c:785 git-add--interactive.perl:1717
-#, c-format
-msgid "Bye.\n"
-msgstr "До свидания.\n"
-
-#: builtin/clean.c:793
+#: builtin/clean.c:789
 msgid ""
 "clean               - start cleaning\n"
 "filter by pattern   - exclude items from deletion\n"
@@ -9807,15 +11480,7 @@ msgid ""
 "?                   - help for prompt selection"
 msgstr "clean               - начать очистку\nfilter by pattern   - исключить удаление элементов\nselect by numbers   - исключить удаление элементов по номерам\nask each            - запрашивать подтверждение на удаление каждого элемента (как «rm -i»)\nquit                - прекратить очистку\nhelp                - этот экран\n?                   - справка по выделению"
 
-#: builtin/clean.c:820 git-add--interactive.perl:1793
-msgid "*** Commands ***"
-msgstr "*** Команды ***"
-
-#: builtin/clean.c:821 git-add--interactive.perl:1790
-msgid "What now"
-msgstr "Что теперь"
-
-#: builtin/clean.c:829
+#: builtin/clean.c:825
 msgid "Would remove the following item:"
 msgid_plural "Would remove the following items:"
 msgstr[0] "Удалить следующие элементы:"
@@ -9823,387 +11488,406 @@ msgstr[1] "Удалить следующие элементы:"
 msgstr[2] "Удалить следующие элементы:"
 msgstr[3] "Удалить следующие элементы:"
 
-#: builtin/clean.c:845
+#: builtin/clean.c:841
 msgid "No more files to clean, exiting."
 msgstr "Больше нет файлов для очистки, выходим."
 
-#: builtin/clean.c:907
+#: builtin/clean.c:903
 msgid "do not print names of files removed"
 msgstr "не выводить имена удаляемых файлов"
 
-#: builtin/clean.c:909
+#: builtin/clean.c:905
 msgid "force"
 msgstr "принудительно"
 
-#: builtin/clean.c:910
+#: builtin/clean.c:906
 msgid "interactive cleaning"
 msgstr "интерактивная очистка"
 
-#: builtin/clean.c:912
+#: builtin/clean.c:908
 msgid "remove whole directories"
 msgstr "удалить каталоги полностью"
 
-#: builtin/clean.c:913 builtin/describe.c:546 builtin/describe.c:548
-#: builtin/grep.c:897 builtin/log.c:171 builtin/log.c:173
-#: builtin/ls-files.c:557 builtin/name-rev.c:417 builtin/name-rev.c:419
+#: builtin/clean.c:909 builtin/describe.c:565 builtin/describe.c:567
+#: builtin/grep.c:921 builtin/log.c:183 builtin/log.c:185
+#: builtin/ls-files.c:558 builtin/name-rev.c:526 builtin/name-rev.c:528
 #: builtin/show-ref.c:179
 msgid "pattern"
 msgstr "шаблон"
 
-#: builtin/clean.c:914
+#: builtin/clean.c:910
 msgid "add <pattern> to ignore rules"
 msgstr "добавить <шаблон> в правила игнорирования"
 
-#: builtin/clean.c:915
+#: builtin/clean.c:911
 msgid "remove ignored files, too"
 msgstr "также удалить игнорируемые файлы"
 
-#: builtin/clean.c:917
+#: builtin/clean.c:913
 msgid "remove only ignored files"
 msgstr "удалить только игнорируемые файлы"
 
-#: builtin/clean.c:935
-msgid "-x and -X cannot be used together"
-msgstr "нельзя использовать одновременно -x и -X"
-
-#: builtin/clean.c:939
+#: builtin/clean.c:929
 msgid ""
 "clean.requireForce set to true and neither -i, -n, nor -f given; refusing to"
 " clean"
 msgstr "clean.requireForce установлен как true и ни одна из опций -i, -n или -f не указана; отказ очистки"
 
-#: builtin/clean.c:942
+#: builtin/clean.c:932
 msgid ""
 "clean.requireForce defaults to true and neither -i, -n, nor -f given; "
 "refusing to clean"
 msgstr "clean.requireForce установлен по умолчанию как true и ни одна из опций -i, -n или -f не указана; отказ очистки"
 
-#: builtin/clone.c:44
+#: builtin/clean.c:944
+msgid "-x and -X cannot be used together"
+msgstr "нельзя использовать одновременно -x и -X"
+
+#: builtin/clone.c:45
 msgid "git clone [<options>] [--] <repo> [<dir>]"
 msgstr "git clone [<опции>] [--] <репозиторий> [<каталог>]"
 
-#: builtin/clone.c:90
+#: builtin/clone.c:94
 msgid "don't create a checkout"
 msgstr "не переключать рабочую копию на HEAD"
 
-#: builtin/clone.c:91 builtin/clone.c:93 builtin/init-db.c:489
+#: builtin/clone.c:95 builtin/clone.c:97 builtin/init-db.c:555
 msgid "create a bare repository"
 msgstr "создать голый репозиторий"
 
-#: builtin/clone.c:95
+#: builtin/clone.c:99
 msgid "create a mirror repository (implies bare)"
 msgstr "создать зеркало репозитория (включает в себя и параметр bare)"
 
-#: builtin/clone.c:97
+#: builtin/clone.c:101
 msgid "to clone from a local repository"
 msgstr "для клонирования из локального репозитория"
 
-#: builtin/clone.c:99
+#: builtin/clone.c:103
 msgid "don't use local hardlinks, always copy"
 msgstr "не использовать жесткие ссылки, всегда копировать файлы"
 
-#: builtin/clone.c:101
+#: builtin/clone.c:105
 msgid "setup as shared repository"
 msgstr "настроить как общедоступный репозиторий"
 
-#: builtin/clone.c:104
+#: builtin/clone.c:107
 msgid "pathspec"
 msgstr "спецификатор-пути"
 
-#: builtin/clone.c:104
+#: builtin/clone.c:107
 msgid "initialize submodules in the clone"
 msgstr "инициализировать подмодули в клоне"
 
-#: builtin/clone.c:107
+#: builtin/clone.c:111
 msgid "number of submodules cloned in parallel"
 msgstr "количество подмодулей, которые будут клонированы парралельно"
 
-#: builtin/clone.c:108 builtin/init-db.c:486
+#: builtin/clone.c:112 builtin/init-db.c:552
 msgid "template-directory"
 msgstr "каталог-шаблонов"
 
-#: builtin/clone.c:109 builtin/init-db.c:487
+#: builtin/clone.c:113 builtin/init-db.c:553
 msgid "directory from which templates will be used"
 msgstr "каталог, шаблоны из которого будут использованы"
 
-#: builtin/clone.c:111 builtin/clone.c:113 builtin/submodule--helper.c:1379
-#: builtin/submodule--helper.c:1859
+#: builtin/clone.c:115 builtin/clone.c:117 builtin/submodule--helper.c:1831
+#: builtin/submodule--helper.c:2336
 msgid "reference repository"
 msgstr "ссылаемый репозиторий"
 
-#: builtin/clone.c:115 builtin/submodule--helper.c:1381
-#: builtin/submodule--helper.c:1861
+#: builtin/clone.c:119 builtin/submodule--helper.c:1833
+#: builtin/submodule--helper.c:2338
 msgid "use --reference only while cloning"
 msgstr "используйте --reference только при клонировании"
 
-#: builtin/clone.c:116 builtin/column.c:27 builtin/merge-file.c:46
-#: builtin/pack-objects.c:3306 builtin/repack.c:329
+#: builtin/clone.c:120 builtin/column.c:27 builtin/init-db.c:563
+#: builtin/merge-file.c:46 builtin/pack-objects.c:3546 builtin/repack.c:358
 msgid "name"
 msgstr "имя"
 
-#: builtin/clone.c:117
+#: builtin/clone.c:121
 msgid "use <name> instead of 'origin' to track upstream"
 msgstr "использовать <имя> вместо «origin» для отслеживания вышестоящего репозитория"
 
-#: builtin/clone.c:119
+#: builtin/clone.c:123
 msgid "checkout <branch> instead of the remote's HEAD"
 msgstr "переключиться на <ветку>, вместо HEAD внешнего репозитория"
 
-#: builtin/clone.c:121
+#: builtin/clone.c:125
 msgid "path to git-upload-pack on the remote"
 msgstr "путь к git-upload-pack на внешнем репозитории"
 
-#: builtin/clone.c:122 builtin/fetch.c:142 builtin/grep.c:836
-#: builtin/pull.c:225
+#: builtin/clone.c:126 builtin/fetch.c:173 builtin/grep.c:860
+#: builtin/pull.c:208
 msgid "depth"
 msgstr "глубина"
 
-#: builtin/clone.c:123
+#: builtin/clone.c:127
 msgid "create a shallow clone of that depth"
 msgstr "сделать частичный клон указанной глубины"
 
-#: builtin/clone.c:124 builtin/fetch.c:144 builtin/pack-objects.c:3295
+#: builtin/clone.c:128 builtin/fetch.c:175 builtin/pack-objects.c:3535
+#: builtin/pull.c:211
 msgid "time"
 msgstr "время"
 
-#: builtin/clone.c:125
+#: builtin/clone.c:129
 msgid "create a shallow clone since a specific time"
 msgstr "сделать частичный клон до определенного времени"
 
-#: builtin/clone.c:126 builtin/fetch.c:146 builtin/fetch.c:169
-#: builtin/rebase.c:1389
+#: builtin/clone.c:130 builtin/fetch.c:177 builtin/fetch.c:200
+#: builtin/pull.c:214 builtin/pull.c:239 builtin/rebase.c:1317
 msgid "revision"
 msgstr "редакция"
 
-#: builtin/clone.c:127 builtin/fetch.c:147
+#: builtin/clone.c:131 builtin/fetch.c:178 builtin/pull.c:215
 msgid "deepen history of shallow clone, excluding rev"
 msgstr "углубить историю частичного клона исключая редакцию"
 
-#: builtin/clone.c:129
+#: builtin/clone.c:133 builtin/submodule--helper.c:1843
+#: builtin/submodule--helper.c:2352
 msgid "clone only one branch, HEAD or --branch"
 msgstr "клонировать только одну ветку, HEAD или --branch"
 
-#: builtin/clone.c:131
+#: builtin/clone.c:135
 msgid "don't clone any tags, and make later fetches not to follow them"
 msgstr "не клонировать метки, а также настроить, чтобы не клонировались и в дальнейшем"
 
-#: builtin/clone.c:133
+#: builtin/clone.c:137
 msgid "any cloned submodules will be shallow"
 msgstr "все склонированные подмодули будут частичными клонами"
 
-#: builtin/clone.c:134 builtin/init-db.c:495
+#: builtin/clone.c:138 builtin/init-db.c:561
 msgid "gitdir"
 msgstr "каталог-git"
 
-#: builtin/clone.c:135 builtin/init-db.c:496
+#: builtin/clone.c:139 builtin/init-db.c:562
 msgid "separate git dir from working tree"
 msgstr "разместить каталог git отдельно от рабочей копии"
 
-#: builtin/clone.c:136
+#: builtin/clone.c:140
 msgid "key=value"
 msgstr "ключ=значение"
 
-#: builtin/clone.c:137
+#: builtin/clone.c:141
 msgid "set config inside the new repository"
 msgstr "установить параметры внутри нового репозитория"
 
-#: builtin/clone.c:139 builtin/fetch.c:164 builtin/ls-remote.c:76
-#: builtin/push.c:585 builtin/send-pack.c:172
+#: builtin/clone.c:143 builtin/fetch.c:195 builtin/ls-remote.c:76
+#: builtin/pull.c:230 builtin/push.c:584 builtin/send-pack.c:196
 msgid "server-specific"
 msgstr "зависит-от-сервера"
 
-#: builtin/clone.c:139 builtin/fetch.c:164 builtin/ls-remote.c:76
-#: builtin/push.c:585 builtin/send-pack.c:173
+#: builtin/clone.c:143 builtin/fetch.c:195 builtin/ls-remote.c:76
+#: builtin/pull.c:231 builtin/push.c:584 builtin/send-pack.c:197
 msgid "option to transmit"
 msgstr "передаваемые опции"
 
-#: builtin/clone.c:140 builtin/fetch.c:165 builtin/pull.c:238
-#: builtin/push.c:586
+#: builtin/clone.c:144 builtin/fetch.c:196 builtin/pull.c:234
+#: builtin/push.c:585
 msgid "use IPv4 addresses only"
 msgstr "использовать только IPv4 адреса"
 
-#: builtin/clone.c:142 builtin/fetch.c:167 builtin/pull.c:241
-#: builtin/push.c:588
+#: builtin/clone.c:146 builtin/fetch.c:198 builtin/pull.c:237
+#: builtin/push.c:587
 msgid "use IPv6 addresses only"
 msgstr "использовать только IPv6 адреса"
 
-#: builtin/clone.c:280
+#: builtin/clone.c:150
+msgid "any cloned submodules will use their remote-tracking branch"
+msgstr ""
+
+#: builtin/clone.c:152
+msgid "initialize sparse-checkout file to include only files at root"
+msgstr ""
+
+#: builtin/clone.c:288
 msgid ""
 "No directory name could be guessed.\n"
 "Please specify a directory on the command line"
 msgstr "Имя каталога не может быть угадано.\nУкажите имя каталога с помощью параметра командной строки"
 
-#: builtin/clone.c:333
+#: builtin/clone.c:341
 #, c-format
 msgid "info: Could not add alternate for '%s': %s\n"
 msgstr "информация: Не удалось добавить альтернативу для «%s»: %s\n"
 
-#: builtin/clone.c:405
-#, c-format
-msgid "failed to open '%s'"
-msgstr "не удалось открыть «%s»"
-
-#: builtin/clone.c:413
+#: builtin/clone.c:414
 #, c-format
 msgid "%s exists and is not a directory"
 msgstr "%s уже существует и не является каталогом"
 
-#: builtin/clone.c:427
+#: builtin/clone.c:432
 #, c-format
-msgid "failed to stat %s\n"
-msgstr "не удалось выполнить stat %s\n"
-
-#: builtin/clone.c:444
-#, c-format
-msgid "failed to unlink '%s'"
-msgstr "сбой отсоединения «%s»"
+msgid "failed to start iterator over '%s'"
+msgstr ""
 
-#: builtin/clone.c:449
+#: builtin/clone.c:463
 #, c-format
 msgid "failed to create link '%s'"
 msgstr "не удалось создать ссылку «%s»"
 
-#: builtin/clone.c:453
+#: builtin/clone.c:467
 #, c-format
 msgid "failed to copy file to '%s'"
 msgstr "не удалось копировать файл в «%s»"
 
-#: builtin/clone.c:479
+#: builtin/clone.c:472
+#, c-format
+msgid "failed to iterate over '%s'"
+msgstr ""
+
+#: builtin/clone.c:499
 #, c-format
 msgid "done.\n"
 msgstr "готово.\n"
 
-#: builtin/clone.c:493
+#: builtin/clone.c:513
 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 "Клонирование прошло успешно, но во время переключения состояния произошла ошибка.\nС помощь команды «git status» вы можете просмотреть, какие файлы были обновлены,\nа с помощью «git checkout -f HEAD» можно повторить попытку переключения на ветку \n"
+"and retry with 'git restore --source=HEAD :/'\n"
+msgstr "Клонирование прошло успешно, но во время переключения на состояние произошла ошибка.\nС помощь команды «git status» вы можете просмотреть какие файлы были обновлены,\nа повторить попытку перехода на версию можно с помощью «git restore --source=HEAD :/»\n"
 
-#: builtin/clone.c:570
+#: builtin/clone.c:590
 #, c-format
 msgid "Could not find remote branch %s to clone."
 msgstr "Не удалось найти внешнюю ветку %s для клонирования."
 
-#: builtin/clone.c:689
+#: builtin/clone.c:709
 #, c-format
 msgid "unable to update %s"
 msgstr "не удалось обновить %s"
 
-#: builtin/clone.c:739
+#: builtin/clone.c:757
+msgid "failed to initialize sparse-checkout"
+msgstr ""
+
+#: builtin/clone.c:780
 msgid "remote HEAD refers to nonexistent ref, unable to checkout.\n"
-msgstr "внешний HEAD ссылается на несуществующую ссылку, нельзя переключиться на такую версию.\n"
+msgstr "внешний HEAD ссылается на несуществующую ссылку, нельзя переключиться на такое состояние.\n"
 
-#: builtin/clone.c:770
+#: builtin/clone.c:812
 msgid "unable to checkout working tree"
 msgstr "не удалось переключиться на версию в рабочем каталоге"
 
-#: builtin/clone.c:815
+#: builtin/clone.c:887
 msgid "unable to write parameters to config file"
 msgstr "не удалось записать параметры в файл конфигурации"
 
-#: builtin/clone.c:878
+#: builtin/clone.c:950
 msgid "cannot repack to clean up"
 msgstr "не удалось выполнить перепаковку для очистки"
 
-#: builtin/clone.c:880
+#: builtin/clone.c:952
 msgid "cannot unlink temporary alternates file"
 msgstr "не удалось отсоединить временные альтернативные файлы"
 
-#: builtin/clone.c:920 builtin/receive-pack.c:1952
+#: builtin/clone.c:992 builtin/receive-pack.c:2493
 msgid "Too many arguments."
 msgstr "Слишком много аргументов."
 
-#: builtin/clone.c:924
+#: builtin/clone.c:996
 msgid "You must specify a repository to clone."
 msgstr "Вы должны указать репозиторий для клонирования."
 
-#: builtin/clone.c:937
+#: builtin/clone.c:1009
 #, c-format
 msgid "--bare and --origin %s options are incompatible."
 msgstr "--bare и --origin %s нельзя использовать одновременно."
 
-#: builtin/clone.c:940
+#: builtin/clone.c:1012
 msgid "--bare and --separate-git-dir are incompatible."
 msgstr "--bare и --separate-git-dir нельзя использовать одновременно."
 
-#: builtin/clone.c:953
+#: builtin/clone.c:1025
 #, c-format
 msgid "repository '%s' does not exist"
 msgstr "репозиторий «%s» не существует"
 
-#: builtin/clone.c:959 builtin/fetch.c:1610
+#: builtin/clone.c:1029 builtin/fetch.c:1841
 #, c-format
 msgid "depth %s is not a positive number"
 msgstr "глубина %s не является положительным числом"
 
-#: builtin/clone.c:969
+#: builtin/clone.c:1039
 #, c-format
 msgid "destination path '%s' already exists and is not an empty directory."
 msgstr "целевой путь «%s» уже существует и не является пустым каталогом."
 
-#: builtin/clone.c:979
+#: builtin/clone.c:1045
+#, c-format
+msgid "repository path '%s' already exists and is not an empty directory."
+msgstr ""
+
+#: builtin/clone.c:1059
 #, c-format
 msgid "working tree '%s' already exists."
 msgstr "рабочий каталог «%s» уже существует."
 
-#: builtin/clone.c:994 builtin/clone.c:1015 builtin/difftool.c:264
-#: builtin/worktree.c:296 builtin/worktree.c:328
+#: builtin/clone.c:1074 builtin/clone.c:1095 builtin/difftool.c:271
+#: builtin/log.c:1987 builtin/worktree.c:354 builtin/worktree.c:386
 #, c-format
 msgid "could not create leading directories of '%s'"
 msgstr "не удалось создать родительские каталоги для «%s»"
 
-#: builtin/clone.c:999
+#: builtin/clone.c:1079
 #, c-format
 msgid "could not create work tree dir '%s'"
 msgstr "не удалось создать рабочий каталог «%s»"
 
-#: builtin/clone.c:1019
+#: builtin/clone.c:1099
 #, c-format
 msgid "Cloning into bare repository '%s'...\n"
 msgstr "Клонирование в голый репозиторий «%s»…\n"
 
-#: builtin/clone.c:1021
+#: builtin/clone.c:1101
 #, c-format
 msgid "Cloning into '%s'...\n"
 msgstr "Клонирование в «%s»…\n"
 
-#: builtin/clone.c:1045
+#: builtin/clone.c:1125
 msgid ""
 "clone --recursive is not compatible with both --reference and --reference-"
 "if-able"
 msgstr "клонирование с параметром --recursive нельзя использовать одновременно ни с --reference, ни с --reference-if-able"
 
-#: builtin/clone.c:1106
+#: builtin/clone.c:1169 builtin/remote.c:200 builtin/remote.c:705
+#, c-format
+msgid "'%s' is not a valid remote name"
+msgstr "«%s» не является допустимым именем внешнего репозитория."
+
+#: builtin/clone.c:1210
 msgid "--depth is ignored in local clones; use file:// instead."
 msgstr "--depth игнорируется на локальных клонах; вместо этого используйте file://."
 
-#: builtin/clone.c:1108
+#: builtin/clone.c:1212
 msgid "--shallow-since is ignored in local clones; use file:// instead."
 msgstr "--shallow-since игнорируется на локальных клонах; используйте file:// вместо этого."
 
-#: builtin/clone.c:1110
+#: builtin/clone.c:1214
 msgid "--shallow-exclude is ignored in local clones; use file:// instead."
 msgstr "--shallow-exclude игнорируется на локальных клонах; используйте file:// вместо этого."
 
-#: builtin/clone.c:1112
+#: builtin/clone.c:1216
 msgid "--filter is ignored in local clones; use file:// instead."
 msgstr ""
 
-#: builtin/clone.c:1115
+#: builtin/clone.c:1219
 msgid "source repository is shallow, ignoring --local"
 msgstr "исходный репозиторий является частичным, --local игнорируется"
 
-#: builtin/clone.c:1120
+#: builtin/clone.c:1224
 msgid "--local is ignored"
 msgstr "--local игнорируется"
 
-#: builtin/clone.c:1197 builtin/clone.c:1205
+#: builtin/clone.c:1311 builtin/clone.c:1319
 #, c-format
 msgid "Remote branch %s not found in upstream %s"
 msgstr "Внешняя ветка %s не найдена в вышестоящем репозитории %s"
 
-#: builtin/clone.c:1208
+#: builtin/clone.c:1322
 msgid "You appear to have cloned an empty repository."
 msgstr "Похоже, что вы клонировали пустой репозиторий."
 
@@ -10211,33 +11895,134 @@ msgstr "Похоже, что вы клонировали пустой репоз
 msgid "git column [<options>]"
 msgstr "git column [<опции>]"
 
-#: builtin/column.c:27
-msgid "lookup config vars"
-msgstr "запросить переменные конфигурации"
+#: builtin/column.c:27
+msgid "lookup config vars"
+msgstr "запросить переменные конфигурации"
+
+#: builtin/column.c:28 builtin/column.c:29
+msgid "layout to use"
+msgstr "использовать схему расположения"
+
+#: builtin/column.c:30
+msgid "Maximum width"
+msgstr "Максимальная ширина"
+
+#: builtin/column.c:31
+msgid "Padding space on left border"
+msgstr "Расстояние отступа слева"
+
+#: builtin/column.c:32
+msgid "Padding space on right border"
+msgstr "Расстояние отступа справа"
+
+#: builtin/column.c:33
+msgid "Padding space between columns"
+msgstr "Расстояние отступа между колонками"
+
+#: builtin/column.c:51
+msgid "--command must be the first argument"
+msgstr "параметр --command должен быть первым"
+
+#: builtin/commit-graph.c:13 builtin/commit-graph.c:22
+msgid ""
+"git commit-graph verify [--object-dir <objdir>] [--shallow] "
+"[--[no-]progress]"
+msgstr ""
+
+#: builtin/commit-graph.c:14 builtin/commit-graph.c:27
+msgid ""
+"git commit-graph write [--object-dir <objdir>] [--append] "
+"[--split[=<strategy>]] [--reachable|--stdin-packs|--stdin-commits] "
+"[--changed-paths] [--[no-]max-new-filters <n>] [--[no-]progress] <split "
+"options>"
+msgstr ""
+
+#: builtin/commit-graph.c:64
+#, c-format
+msgid "could not find object directory matching %s"
+msgstr ""
+
+#: builtin/commit-graph.c:80 builtin/commit-graph.c:210
+#: builtin/commit-graph.c:316 builtin/fetch.c:184 builtin/log.c:1769
+msgid "dir"
+msgstr "каталог"
+
+#: builtin/commit-graph.c:81 builtin/commit-graph.c:211
+#: builtin/commit-graph.c:317
+msgid "The object directory to store the graph"
+msgstr "Каталог объектов для сохранения графа"
+
+#: builtin/commit-graph.c:83
+msgid "if the commit-graph is split, only verify the tip file"
+msgstr ""
+
+#: builtin/commit-graph.c:106
+#, c-format
+msgid "Could not open commit-graph '%s'"
+msgstr "Не удалось открыть файл commit-graph «%s»"
+
+#: builtin/commit-graph.c:142
+#, c-format
+msgid "unrecognized --split argument, %s"
+msgstr ""
+
+#: builtin/commit-graph.c:155
+#, c-format
+msgid "unexpected non-hex object ID: %s"
+msgstr ""
+
+#: builtin/commit-graph.c:160
+#, c-format
+msgid "invalid object: %s"
+msgstr ""
+
+#: builtin/commit-graph.c:213
+msgid "start walk at all refs"
+msgstr "начать со всех ссылок"
+
+#: builtin/commit-graph.c:215
+msgid "scan pack-indexes listed by stdin for commits"
+msgstr "искать коммиты в pack-indexes, перечисленных на стандартном вводе"
+
+#: builtin/commit-graph.c:217
+msgid "start walk at commits listed by stdin"
+msgstr "начать с коммитов, перечисленных на стандартном вводе"
+
+#: builtin/commit-graph.c:219
+msgid "include all commits already in the commit-graph file"
+msgstr "включить все коммиты, которые уже есть в файле commit-graph"
+
+#: builtin/commit-graph.c:221
+msgid "enable computation for changed paths"
+msgstr ""
 
-#: builtin/column.c:28 builtin/column.c:29
-msgid "layout to use"
-msgstr "использовать схему расположения"
+#: builtin/commit-graph.c:224
+msgid "allow writing an incremental commit-graph file"
+msgstr ""
 
-#: builtin/column.c:30
-msgid "Maximum width"
-msgstr "Максимальная ширина"
+#: builtin/commit-graph.c:228
+msgid "maximum number of commits in a non-base split commit-graph"
+msgstr ""
 
-#: builtin/column.c:31
-msgid "Padding space on left border"
-msgstr "Расстояние отступа слева"
+#: builtin/commit-graph.c:230
+msgid "maximum ratio between two levels of a split commit-graph"
+msgstr ""
 
-#: builtin/column.c:32
-msgid "Padding space on right border"
-msgstr "Расстояние отступа справа"
+#: builtin/commit-graph.c:232
+msgid "only expire files older than a given date-time"
+msgstr ""
 
-#: builtin/column.c:33
-msgid "Padding space between columns"
-msgstr "Расстояние отступа между колонками"
+#: builtin/commit-graph.c:234
+msgid "maximum number of changed-path Bloom filters to compute"
+msgstr ""
 
-#: builtin/column.c:51
-msgid "--command must be the first argument"
-msgstr "параметр --command должен быть первым"
+#: builtin/commit-graph.c:255
+msgid "use at most one of --reachable, --stdin-commits, or --stdin-packs"
+msgstr "используйте что-то одно из --reachable, --stdin-commits и --stdin-packs"
+
+#: builtin/commit-graph.c:287
+msgid "Collecting commits from input"
+msgstr ""
 
 #: builtin/commit-tree.c:18
 msgid ""
@@ -10250,7 +12035,7 @@ msgstr ""
 msgid "duplicate parent %s ignored"
 msgstr ""
 
-#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:520
+#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:555
 #, c-format
 msgid "not a valid object name %s"
 msgstr ""
@@ -10258,17 +12043,17 @@ msgstr ""
 #: builtin/commit-tree.c:93
 #, c-format
 msgid "git commit-tree: failed to open '%s'"
-msgstr ""
+msgstr "git commit-tree: сбой при открытии «%s»"
 
 #: builtin/commit-tree.c:96
 #, c-format
 msgid "git commit-tree: failed to read '%s'"
-msgstr ""
+msgstr "git commit-tree: сбой при чтении «%s»"
 
 #: builtin/commit-tree.c:98
 #, c-format
 msgid "git commit-tree: failed to close '%s'"
-msgstr ""
+msgstr "git commit-tree: сбой при закрытии «%s»"
 
 #: builtin/commit-tree.c:111
 msgid "parent"
@@ -10278,32 +12063,32 @@ msgstr ""
 msgid "id of a parent commit object"
 msgstr ""
 
-#: builtin/commit-tree.c:114 builtin/commit.c:1480 builtin/merge.c:268
-#: builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1473
-#: builtin/tag.c:406
+#: builtin/commit-tree.c:114 builtin/commit.c:1504 builtin/merge.c:281
+#: builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1470
+#: builtin/tag.c:413
 msgid "message"
 msgstr "сообщение"
 
-#: builtin/commit-tree.c:115 builtin/commit.c:1480
+#: builtin/commit-tree.c:115 builtin/commit.c:1504
 msgid "commit message"
 msgstr "сообщение коммита"
 
 #: builtin/commit-tree.c:118
 msgid "read commit log message from file"
-msgstr ""
+msgstr "прочитать сообщение коммита из файла"
 
-#: builtin/commit-tree.c:121 builtin/commit.c:1492 builtin/merge.c:283
-#: builtin/pull.c:193 builtin/revert.c:117
+#: builtin/commit-tree.c:121 builtin/commit.c:1516 builtin/merge.c:298
+#: builtin/pull.c:176 builtin/revert.c:118
 msgid "GPG sign commit"
 msgstr "подписать коммит с помощью GPG"
 
 #: builtin/commit-tree.c:133
 msgid "must give exactly one tree"
-msgstr ""
+msgstr "необходимо указать одно дерево"
 
 #: builtin/commit-tree.c:140
 msgid "git commit-tree: failed to read"
-msgstr ""
+msgstr "git commit-tree: сбой при чтении"
 
 #: builtin/commit.c:41
 msgid "git commit [<options>] [--] <pathspec>..."
@@ -10330,138 +12115,155 @@ msgid ""
 msgstr "Копируемый коммит теперь пуст, возможно после разрешения конфликтов.\nЕсли вы все равно хотите сделать пустой коммит, используйте:\n\n    git commit --allow-empty\n\n"
 
 #: builtin/commit.c:63
-msgid "Otherwise, please use 'git reset'\n"
-msgstr "В противном случае, используйте «git reset»\n"
+msgid "Otherwise, please use 'git rebase --skip'\n"
+msgstr "В противном случае, используйте «git rebase --skip»\n"
 
 #: builtin/commit.c:66
+msgid "Otherwise, please use 'git cherry-pick --skip'\n"
+msgstr ""
+
+#: builtin/commit.c:69
 msgid ""
+"and then use:\n"
+"\n"
+"    git cherry-pick --continue\n"
+"\n"
+"to resume cherry-picking the remaining commits.\n"
 "If you wish to skip this commit, use:\n"
 "\n"
-"    git reset\n"
+"    git cherry-pick --skip\n"
 "\n"
-"Then \"git cherry-pick --continue\" will resume cherry-picking\n"
-"the remaining commits.\n"
-msgstr "Если вы хотите пропустит этот коммит, используйте команду:\n\n    git reset\n\nПосле этого «git cherry-pick --continue» продолжит копирование оставшихся коммитов.\n"
+msgstr ""
 
 #: builtin/commit.c:312
 msgid "failed to unpack HEAD tree object"
 msgstr "сбой распаковки объекта дерева HEAD"
 
-#: builtin/commit.c:353
+#: builtin/commit.c:348
+msgid "--pathspec-from-file with -a does not make sense"
+msgstr ""
+
+#: builtin/commit.c:361
+msgid "No paths with --include/--only does not make sense."
+msgstr "Указание путей каталогов с опциями --include/--only не имеет смысла."
+
+#: builtin/commit.c:373
 msgid "unable to create temporary index"
 msgstr "не удалось создать временный индекс"
 
-#: builtin/commit.c:359
+#: builtin/commit.c:382
 msgid "interactive add failed"
 msgstr "сбой интерактивного добавления"
 
-#: builtin/commit.c:373
+#: builtin/commit.c:397
 msgid "unable to update temporary index"
 msgstr "не удалось обновить временный индекс"
 
-#: builtin/commit.c:375
+#: builtin/commit.c:399
 msgid "Failed to update main cache tree"
 msgstr "Сбой при обновлении основного кэша дерева"
 
-#: builtin/commit.c:400 builtin/commit.c:423 builtin/commit.c:469
+#: builtin/commit.c:424 builtin/commit.c:447 builtin/commit.c:495
 msgid "unable to write new_index file"
 msgstr "не удалось записать файл new_index"
 
-#: builtin/commit.c:452
+#: builtin/commit.c:476
 msgid "cannot do a partial commit during a merge."
 msgstr "нельзя создать частичный коммит во время слияния."
 
-#: builtin/commit.c:454
+#: builtin/commit.c:478
 msgid "cannot do a partial commit during a cherry-pick."
 msgstr "нельзя создать частичный коммит во время копирования коммита."
 
-#: builtin/commit.c:462
+#: builtin/commit.c:480
+msgid "cannot do a partial commit during a rebase."
+msgstr ""
+
+#: builtin/commit.c:488
 msgid "cannot read the index"
 msgstr "не удалось прочитать индекс"
 
-#: builtin/commit.c:481
+#: builtin/commit.c:507
 msgid "unable to write temporary index file"
 msgstr "не удалось записать временный файл индекса"
 
-#: builtin/commit.c:579
+#: builtin/commit.c:605
 #, c-format
 msgid "commit '%s' lacks author header"
 msgstr "у коммита «%s» отсутствует автор в заголовке"
 
-#: builtin/commit.c:581
+#: builtin/commit.c:607
 #, c-format
 msgid "commit '%s' has malformed author line"
 msgstr "у коммита «%s» строка автора в неправильном формате"
 
-#: builtin/commit.c:600
+#: builtin/commit.c:626
 msgid "malformed --author parameter"
 msgstr "параметр --author в неправильном формате"
 
-#: builtin/commit.c:653
+#: builtin/commit.c:679
 msgid ""
 "unable to select a comment character that is not used\n"
 "in the current commit message"
 msgstr "нельзя выбрать символ комментария, который\nне используется в текущем сообщении коммита"
 
-#: builtin/commit.c:691 builtin/commit.c:724 builtin/commit.c:1069
+#: builtin/commit.c:717 builtin/commit.c:750 builtin/commit.c:1097
 #, c-format
 msgid "could not lookup commit %s"
 msgstr "не удалось запросить коммит %s"
 
-#: builtin/commit.c:703 builtin/shortlog.c:319
+#: builtin/commit.c:729 builtin/shortlog.c:425
 #, c-format
 msgid "(reading log message from standard input)\n"
 msgstr "(чтение файла журнала из стандартного ввода)\n"
 
-#: builtin/commit.c:705
+#: builtin/commit.c:731
 msgid "could not read log from standard input"
 msgstr "не удалось прочитать файл журнала из стандартного ввода"
 
-#: builtin/commit.c:709
+#: builtin/commit.c:735
 #, c-format
 msgid "could not read log file '%s'"
 msgstr "не удалось прочитать файл журнала «%s»"
 
-#: builtin/commit.c:740 builtin/commit.c:756
+#: builtin/commit.c:766 builtin/commit.c:782
 msgid "could not read SQUASH_MSG"
 msgstr "не удалось прочитать SQUASH_MSG"
 
-#: builtin/commit.c:747
+#: builtin/commit.c:773
 msgid "could not read MERGE_MSG"
 msgstr "не удалось прочитать MERGE_MSG"
 
-#: builtin/commit.c:807
+#: builtin/commit.c:833
 msgid "could not write commit template"
 msgstr "не удалось записать шаблон описания коммита"
 
-#: builtin/commit.c:826
-#, c-format
+#: builtin/commit.c:853
 msgid ""
 "\n"
 "It looks like you may be committing a merge.\n"
-"If this is not correct, please remove the file\n"
-"\t%s\n"
+"If this is not correct, please run\n"
+"\tgit update-ref -d MERGE_HEAD\n"
 "and try again.\n"
-msgstr "\nПохоже, что вы пытаетесь закоммитить слияние.\nЕсли это ошибка, пожалуйста удалите файл\n\t%s\nи попробуйте снова.\n"
+msgstr ""
 
-#: builtin/commit.c:831
-#, c-format
+#: builtin/commit.c:858
 msgid ""
 "\n"
 "It looks like you may be committing a cherry-pick.\n"
-"If this is not correct, please remove the file\n"
-"\t%s\n"
+"If this is not correct, please run\n"
+"\tgit update-ref -d CHERRY_PICK_HEAD\n"
 "and try again.\n"
-msgstr "\nПохоже, что вы пытаетесь закоммитить при копировании коммита.\nЕсли это не так, то удалите файл\n\t%s\nи попробуйте снова.\n"
+msgstr ""
 
-#: builtin/commit.c:844
+#: builtin/commit.c:868
 #, c-format
 msgid ""
 "Please enter the commit message for your changes. Lines starting\n"
 "with '%c' will be ignored, and an empty message aborts the commit.\n"
 msgstr "Пожалуйста, введите сообщение коммита для ваших изменений. Строки,\nначинающиеся с «%c» будут проигнорированы, а пустое сообщение\nотменяет процесс коммита.\n"
 
-#: builtin/commit.c:852
+#: builtin/commit.c:876
 #, c-format
 msgid ""
 "Please enter the commit message for your changes. Lines starting\n"
@@ -10469,583 +12271,541 @@ msgid ""
 "An empty message aborts the commit.\n"
 msgstr "Пожалуйста, введите сообщение коммита для ваших изменений. Строки,\nначинающиеся с «%c» будут оставлены; вы можете удалить их вручную,\nесли хотите. Пустое сообщение отменяет процесс коммита.\n"
 
-#: builtin/commit.c:869
+#: builtin/commit.c:893
 #, c-format
 msgid "%sAuthor:    %.*s <%.*s>"
 msgstr "%sАвтор:     %.*s <%.*s>"
 
-#: builtin/commit.c:877
+#: builtin/commit.c:901
 #, c-format
 msgid "%sDate:      %s"
 msgstr "%sДата:      %s"
 
-#: builtin/commit.c:884
+#: builtin/commit.c:908
 #, c-format
 msgid "%sCommitter: %.*s <%.*s>"
 msgstr "%sКоммитер:  %.*s <%.*s>"
 
-#: builtin/commit.c:902
+#: builtin/commit.c:926
 msgid "Cannot read index"
 msgstr "Не удалось прочитать индекс"
 
-#: builtin/commit.c:969
+#: builtin/commit.c:997
 msgid "Error building trees"
 msgstr "Ошибка при построении деревьев"
 
-#: builtin/commit.c:983 builtin/tag.c:269
+#: builtin/commit.c:1011 builtin/tag.c:276
 #, c-format
 msgid "Please supply the message using either -m or -F option.\n"
 msgstr "Пожалуйста, укажите сообщение, при указании опций -m или -F.\n"
 
-#: builtin/commit.c:1027
+#: builtin/commit.c:1055
 #, c-format
 msgid "--author '%s' is not 'Name <email>' and matches no existing author"
 msgstr "--author «%s» не в формате «Имя <почта>» и не совпадает с существующим автором"
 
-#: builtin/commit.c:1041
+#: builtin/commit.c:1069
 #, c-format
 msgid "Invalid ignored mode '%s'"
 msgstr "Недопустимый режим показа игнорируемых файлов «%s»"
 
-#: builtin/commit.c:1059 builtin/commit.c:1284
+#: builtin/commit.c:1087 builtin/commit.c:1331
 #, c-format
 msgid "Invalid untracked files mode '%s'"
 msgstr "Неправильный режим неотслеживаемых файлов «%s»"
 
-#: builtin/commit.c:1097
+#: builtin/commit.c:1127
 msgid "--long and -z are incompatible"
 msgstr "--long и -z нельзя использовать одновременно"
 
-#: builtin/commit.c:1130
+#: builtin/commit.c:1171
 msgid "Using both --reset-author and --author does not make sense"
 msgstr "Указание одновременно опций --reset-author и --author не имеет смысла"
 
-#: builtin/commit.c:1139
+#: builtin/commit.c:1180
 msgid "You have nothing to amend."
 msgstr "Нечего исправлять."
 
-#: builtin/commit.c:1142
+#: builtin/commit.c:1183
 msgid "You are in the middle of a merge -- cannot amend."
 msgstr "Вы в процессе слияния —  сейчас нельзя исправлять."
 
-#: builtin/commit.c:1144
+#: builtin/commit.c:1185
 msgid "You are in the middle of a cherry-pick -- cannot amend."
 msgstr "Вы в процессе копирования коммита —  сейчас нельзя исправлять."
 
-#: builtin/commit.c:1147
+#: builtin/commit.c:1187
+msgid "You are in the middle of a rebase -- cannot amend."
+msgstr ""
+
+#: builtin/commit.c:1190
 msgid "Options --squash and --fixup cannot be used together"
 msgstr "Опции --squash и --fixup не могут использоваться одновременно"
 
-#: builtin/commit.c:1157
+#: builtin/commit.c:1200
 msgid "Only one of -c/-C/-F/--fixup can be used."
 msgstr "Может использоваться только одна из опций -c/-C/-F/--fixup."
 
-#: builtin/commit.c:1159
+#: builtin/commit.c:1202
 msgid "Option -m cannot be combined with -c/-C/-F."
 msgstr ""
 
-#: builtin/commit.c:1167
+#: builtin/commit.c:1211
 msgid "--reset-author can be used only with -C, -c or --amend."
 msgstr "--reset-author может использоваться только одновременно с опциями -C, -c или --amend."
 
-#: builtin/commit.c:1184
+#: builtin/commit.c:1229
 msgid "Only one of --include/--only/--all/--interactive/--patch can be used."
 msgstr "Может использоваться только одна из опций --include/--only/--all/--interactive/--patch."
 
-#: builtin/commit.c:1186
-msgid "No paths with --include/--only does not make sense."
-msgstr "Указание путей каталогов с опциями --include/--only не имеет смысла."
-
-#: builtin/commit.c:1192
+#: builtin/commit.c:1235
 #, c-format
 msgid "paths '%s ...' with -a does not make sense"
 msgstr ""
 
-#: builtin/commit.c:1319 builtin/commit.c:1503
+#: builtin/commit.c:1366 builtin/commit.c:1527
 msgid "show status concisely"
 msgstr "кратко показать статус"
 
-#: builtin/commit.c:1321 builtin/commit.c:1505
+#: builtin/commit.c:1368 builtin/commit.c:1529
 msgid "show branch information"
 msgstr "показать информацию о версии"
 
-#: builtin/commit.c:1323
+#: builtin/commit.c:1370
 msgid "show stash information"
 msgstr "показать информацию о спрятанном"
 
-#: builtin/commit.c:1325 builtin/commit.c:1507
+#: builtin/commit.c:1372 builtin/commit.c:1531
 msgid "compute full ahead/behind values"
 msgstr ""
 
-#: builtin/commit.c:1327
+#: builtin/commit.c:1374
 msgid "version"
 msgstr "версия"
 
-#: builtin/commit.c:1327 builtin/commit.c:1509 builtin/push.c:561
-#: builtin/worktree.c:643
+#: builtin/commit.c:1374 builtin/commit.c:1533 builtin/push.c:560
+#: builtin/worktree.c:725
 msgid "machine-readable output"
 msgstr "машиночитаемый вывод"
 
-#: builtin/commit.c:1330 builtin/commit.c:1511
+#: builtin/commit.c:1377 builtin/commit.c:1535
 msgid "show status in long format (default)"
 msgstr "показать статус в длинном формате (по умолчанию)"
 
-#: builtin/commit.c:1333 builtin/commit.c:1514
+#: builtin/commit.c:1380 builtin/commit.c:1538
 msgid "terminate entries with NUL"
 msgstr "завершать записи НУЛЕВЫМ байтом"
 
-#: builtin/commit.c:1335 builtin/commit.c:1339 builtin/commit.c:1517
-#: builtin/fast-export.c:1085 builtin/fast-export.c:1088 builtin/rebase.c:1465
-#: parse-options.h:331
+#: builtin/commit.c:1382 builtin/commit.c:1386 builtin/commit.c:1541
+#: builtin/fast-export.c:1198 builtin/fast-export.c:1201
+#: builtin/fast-export.c:1204 builtin/rebase.c:1406 parse-options.h:336
 msgid "mode"
 msgstr "режим"
 
-#: builtin/commit.c:1336 builtin/commit.c:1517
+#: builtin/commit.c:1383 builtin/commit.c:1541
 msgid "show untracked files, optional modes: all, normal, no. (Default: all)"
 msgstr "показать неотслеживаемые файлы, опциональные режимы: all (все), normal (как обычно), no (нет). (По умолчанию: all)"
 
-#: builtin/commit.c:1340
+#: builtin/commit.c:1387
 msgid ""
 "show ignored files, optional modes: traditional, matching, no. (Default: "
 "traditional)"
 msgstr "показывать игнорируемые файлы, с опциональным режимом: traditional (традиционный), matching (только совпадающие), no (не показывать). (По умолчанию: traditional)"
 
-#: builtin/commit.c:1342 parse-options.h:179
+#: builtin/commit.c:1389 parse-options.h:192
 msgid "when"
 msgstr "когда"
 
-#: builtin/commit.c:1343
+#: builtin/commit.c:1390
 msgid ""
 "ignore changes to submodules, optional when: all, dirty, untracked. "
 "(Default: all)"
 msgstr "игнорировать изменения в подмодулях, опционально когда: all (всегда), dirty (изменённые), untracked (неотслеживаемые). (По умолчанию: all)"
 
-#: builtin/commit.c:1345
+#: builtin/commit.c:1392
 msgid "list untracked files in columns"
 msgstr "показать неотслеживаемые файлы по столбцам"
 
-#: builtin/commit.c:1346
+#: builtin/commit.c:1393
 msgid "do not detect renames"
 msgstr "не определять переименования"
 
-#: builtin/commit.c:1348
+#: builtin/commit.c:1395
 msgid "detect renames, optionally set similarity index"
 msgstr "определять переименования, опционально устанавливать рейтинг сходства"
 
-#: builtin/commit.c:1368
+#: builtin/commit.c:1415
 msgid "Unsupported combination of ignored and untracked-files arguments"
 msgstr "Неподдерживаемая комбинация аргументов отображения игнорируемых и неотслеживаемых файлов"
 
-#: builtin/commit.c:1473
+#: builtin/commit.c:1497
 msgid "suppress summary after successful commit"
 msgstr "не выводить сводку изменений после успешного коммита"
 
-#: builtin/commit.c:1474
+#: builtin/commit.c:1498
 msgid "show diff in commit message template"
 msgstr "добавить список изменений в шаблон сообщения коммита"
 
-#: builtin/commit.c:1476
+#: builtin/commit.c:1500
 msgid "Commit message options"
 msgstr "Опции сообщения коммита"
 
-#: builtin/commit.c:1477 builtin/merge.c:272 builtin/tag.c:408
+#: builtin/commit.c:1501 builtin/merge.c:285 builtin/tag.c:415
 msgid "read message from file"
 msgstr "прочитать сообщение из файла"
 
-#: builtin/commit.c:1478
+#: builtin/commit.c:1502
 msgid "author"
 msgstr "автор"
 
-#: builtin/commit.c:1478
+#: builtin/commit.c:1502
 msgid "override author for commit"
 msgstr "подменить автора коммита"
 
-#: builtin/commit.c:1479 builtin/gc.c:539
+#: builtin/commit.c:1503 builtin/gc.c:542
 msgid "date"
 msgstr "дата"
 
-#: builtin/commit.c:1479
+#: builtin/commit.c:1503
 msgid "override date for commit"
 msgstr "подменить дату коммита"
 
-#: builtin/commit.c:1481 builtin/commit.c:1482 builtin/commit.c:1483
-#: builtin/commit.c:1484 parse-options.h:323 ref-filter.h:92
+#: builtin/commit.c:1505 builtin/commit.c:1506 builtin/commit.c:1507
+#: builtin/commit.c:1508 parse-options.h:328 ref-filter.h:87
 msgid "commit"
 msgstr "коммит"
 
-#: builtin/commit.c:1481
+#: builtin/commit.c:1505
 msgid "reuse and edit message from specified commit"
 msgstr "использовать и отредактировать сообщение от указанного коммита"
 
-#: builtin/commit.c:1482
+#: builtin/commit.c:1506
 msgid "reuse message from specified commit"
 msgstr "использовать сообщение указанного коммита"
 
-#: builtin/commit.c:1483
+#: builtin/commit.c:1507
 msgid "use autosquash formatted message to fixup specified commit"
 msgstr "использовать форматированное сообщение автоуплотнения для исправления указанного коммита"
 
-#: builtin/commit.c:1484
+#: builtin/commit.c:1508
 msgid "use autosquash formatted message to squash specified commit"
 msgstr "использовать форматированное сообщение автоуплотнения для уплотнения указанного коммита"
 
-#: builtin/commit.c:1485
+#: builtin/commit.c:1509
 msgid "the commit is authored by me now (used with -C/-c/--amend)"
 msgstr "коммит теперь за моим авторством (используется с -C/-c/--amend)"
 
-#: builtin/commit.c:1486 builtin/log.c:1541 builtin/merge.c:285
-#: builtin/pull.c:162 builtin/revert.c:109
-msgid "add Signed-off-by:"
-msgstr "добавить Signed-off-by:"
+#: builtin/commit.c:1510 builtin/log.c:1744 builtin/merge.c:301
+#: builtin/pull.c:145 builtin/revert.c:110
+msgid "add a Signed-off-by trailer"
+msgstr ""
 
-#: builtin/commit.c:1487
+#: builtin/commit.c:1511
 msgid "use specified template file"
 msgstr "использовать указанный файл шаблона"
 
-#: builtin/commit.c:1488
+#: builtin/commit.c:1512
 msgid "force edit of commit"
 msgstr "принудительно редактировать коммит"
 
-#: builtin/commit.c:1490
+#: builtin/commit.c:1514
 msgid "include status in commit message template"
 msgstr "включить статус файлов в шаблон сообщения коммита"
 
-#: builtin/commit.c:1495
+#: builtin/commit.c:1519
 msgid "Commit contents options"
 msgstr "Опции содержимого коммита"
 
-#: builtin/commit.c:1496
+#: builtin/commit.c:1520
 msgid "commit all changed files"
 msgstr "закоммитить все измененные файлы"
 
-#: builtin/commit.c:1497
+#: builtin/commit.c:1521
 msgid "add specified files to index for commit"
 msgstr "добавить указанные файлы в индекс для коммита"
 
-#: builtin/commit.c:1498
+#: builtin/commit.c:1522
 msgid "interactively add files"
 msgstr "интерактивное добавление файлов"
 
-#: builtin/commit.c:1499
+#: builtin/commit.c:1523
 msgid "interactively add changes"
 msgstr "интерактивное добавление изменений"
 
-#: builtin/commit.c:1500
+#: builtin/commit.c:1524
 msgid "commit only specified files"
 msgstr "закоммитить только указанные файлы"
 
-#: builtin/commit.c:1501
+#: builtin/commit.c:1525
 msgid "bypass pre-commit and commit-msg hooks"
 msgstr "пропустить перехватчик pre-commit и commit-msg"
 
-#: builtin/commit.c:1502
+#: builtin/commit.c:1526
 msgid "show what would be committed"
 msgstr "показать, что будет закоммичено"
 
-#: builtin/commit.c:1515
+#: builtin/commit.c:1539
 msgid "amend previous commit"
 msgstr "исправить предыдущий коммит"
 
-#: builtin/commit.c:1516
+#: builtin/commit.c:1540
 msgid "bypass post-rewrite hook"
 msgstr "пропустить перехватчик post-rewrite"
 
-#: builtin/commit.c:1521
+#: builtin/commit.c:1547
 msgid "ok to record an empty change"
 msgstr "разрешить запись пустого коммита"
 
-#: builtin/commit.c:1523
+#: builtin/commit.c:1549
 msgid "ok to record a change with an empty message"
 msgstr "разрешить запись изменений с пустым сообщением"
 
-#: builtin/commit.c:1596
+#: builtin/commit.c:1622
 #, c-format
 msgid "Corrupt MERGE_HEAD file (%s)"
 msgstr "Файл MERGE_HEAD поврежден (%s)"
 
-#: builtin/commit.c:1603
+#: builtin/commit.c:1629
 msgid "could not read MERGE_MODE"
 msgstr "не удалось прочитать MERGE_MODE"
 
-#: builtin/commit.c:1622
+#: builtin/commit.c:1650
 #, c-format
 msgid "could not read commit message: %s"
 msgstr "не удалось открыть сообщение коммита: %s"
 
-#: builtin/commit.c:1629
+#: builtin/commit.c:1657
 #, c-format
 msgid "Aborting commit due to empty commit message.\n"
 msgstr "Отмена коммита из-за пустого сообщения коммита.\n"
 
-#: builtin/commit.c:1634
+#: builtin/commit.c:1662
 #, c-format
 msgid "Aborting commit; you did not edit the message.\n"
 msgstr "Отмена коммита; вы не изменили сообщение.\n"
 
-#: builtin/commit.c:1668
+#: builtin/commit.c:1696
 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 "репозиторий был обновлен, но не удалось записать файл new_index. Удостоверьтесь, что на диске есть свободное место и квота не исчерпана, а после этого запустите «git reset HEAD» для восстановления."
-
-#: builtin/commit-graph.c:10
-msgid "git commit-graph [--object-dir <objdir>]"
-msgstr "git commit-graph [--object-dir <каталог-объектов>]"
-
-#: builtin/commit-graph.c:11 builtin/commit-graph.c:23
-msgid "git commit-graph read [--object-dir <objdir>]"
-msgstr "git commit-graph read [--object-dir <каталог-объектов>]"
-
-#: builtin/commit-graph.c:12 builtin/commit-graph.c:18
-msgid "git commit-graph verify [--object-dir <objdir>]"
-msgstr "git commit-graph verify [--object-dir <каталог-объектов>]"
-
-#: builtin/commit-graph.c:13 builtin/commit-graph.c:28
-msgid ""
-"git commit-graph write [--object-dir <objdir>] [--append] [--reachable"
-"|--stdin-packs|--stdin-commits]"
-msgstr "git commit-graph write [--object-dir <каталог-объектов>] [--append] [--reachable|--stdin-packs|--stdin-commits]"
-
-#: builtin/commit-graph.c:51 builtin/commit-graph.c:89
-#: builtin/commit-graph.c:147 builtin/commit-graph.c:205 builtin/fetch.c:153
-#: builtin/log.c:1561
-msgid "dir"
-msgstr "каталог"
-
-#: builtin/commit-graph.c:52 builtin/commit-graph.c:90
-#: builtin/commit-graph.c:148 builtin/commit-graph.c:206
-msgid "The object directory to store the graph"
-msgstr "Каталог объектов для сохранения графа"
-
-#: builtin/commit-graph.c:68 builtin/commit-graph.c:105
-#, c-format
-msgid "Could not open commit-graph '%s'"
-msgstr "Не удалось открыть файл commit-graph «%s»"
-
-#: builtin/commit-graph.c:150
-msgid "start walk at all refs"
-msgstr "начать со всех ссылок"
-
-#: builtin/commit-graph.c:152
-msgid "scan pack-indexes listed by stdin for commits"
-msgstr "искать коммиты в pack-indexes, перечисленных на стандартном вводе"
-
-#: builtin/commit-graph.c:154
-msgid "start walk at commits listed by stdin"
-msgstr "начать с коммитов, перечисленных на стандартном вводе"
-
-#: builtin/commit-graph.c:156
-msgid "include all commits already in the commit-graph file"
-msgstr "включить все коммиты, которые уже есть в файле commit-graph"
-
-#: builtin/commit-graph.c:165
-msgid "use at most one of --reachable, --stdin-commits, or --stdin-packs"
-msgstr "используйте что-то одно из --reachable, --stdin-commits и --stdin-packs"
+"not exceeded, and then \"git restore --staged :/\" to recover."
+msgstr "репозиторий был обновлен, но не удалось записать файл new_index. Удостоверьтесь, что на диске есть свободное место и квота не исчерпана, а после этого запустите «git restore --staged :/» для восстановления."
 
 #: builtin/config.c:11
 msgid "git config [<options>]"
 msgstr "git config [<опции>]"
 
-#: builtin/config.c:103
+#: builtin/config.c:109 builtin/env--helper.c:27
 #, c-format
 msgid "unrecognized --type argument, %s"
 msgstr ""
 
-#: builtin/config.c:115
+#: builtin/config.c:121
 msgid "only one type at a time"
 msgstr ""
 
-#: builtin/config.c:124
+#: builtin/config.c:130
 msgid "Config file location"
 msgstr "Размещение файла конфигурации"
 
-#: builtin/config.c:125
+#: builtin/config.c:131
 msgid "use global config file"
 msgstr "использовать глобальный файл конфигурации"
 
-#: builtin/config.c:126
+#: builtin/config.c:132
 msgid "use system config file"
 msgstr "использовать системный файл конфигурации"
 
-#: builtin/config.c:127
+#: builtin/config.c:133
 msgid "use repository config file"
 msgstr "использовать файл конфигурации репозитория"
 
-#: builtin/config.c:128
+#: builtin/config.c:134
 msgid "use per-worktree config file"
 msgstr ""
 
-#: builtin/config.c:129
+#: builtin/config.c:135
 msgid "use given config file"
 msgstr "использовать указанный файл конфигурации"
 
-#: builtin/config.c:130
+#: builtin/config.c:136
 msgid "blob-id"
 msgstr "идент-двоичн-объекта"
 
-#: builtin/config.c:130
+#: builtin/config.c:136
 msgid "read config from given blob object"
 msgstr "прочитать настройки из указанного двоичного объекта"
 
-#: builtin/config.c:131
+#: builtin/config.c:137
 msgid "Action"
 msgstr "Действие"
 
-#: builtin/config.c:132
-msgid "get value: name [value-regex]"
-msgstr "получить значение: имя [шаблон-значений]"
+#: builtin/config.c:138
+msgid "get value: name [value-pattern]"
+msgstr ""
 
-#: builtin/config.c:133
-msgid "get all values: key [value-regex]"
-msgstr "получить все значения: ключ [шаблон-значений]"
+#: builtin/config.c:139
+msgid "get all values: key [value-pattern]"
+msgstr ""
 
-#: builtin/config.c:134
-msgid "get values for regexp: name-regex [value-regex]"
-msgstr "получить значения по шаблону: шаблон-имен [шаблон-значений]"
+#: builtin/config.c:140
+msgid "get values for regexp: name-regex [value-pattern]"
+msgstr ""
 
-#: builtin/config.c:135
+#: builtin/config.c:141
 msgid "get value specific for the URL: section[.var] URL"
 msgstr "получить значение, специфичное для URL: раздел[.переменная] URL"
 
-#: builtin/config.c:136
-msgid "replace all matching variables: name value [value_regex]"
-msgstr "заменить все соответствующие переменные: имя значение [шаблон-значений]"
+#: builtin/config.c:142
+msgid "replace all matching variables: name value [value-pattern]"
+msgstr ""
 
-#: builtin/config.c:137
+#: builtin/config.c:143
 msgid "add a new variable: name value"
 msgstr "добавить новую переменную: имя значение"
 
-#: builtin/config.c:138
-msgid "remove a variable: name [value-regex]"
-msgstr "удалить переменную: имя [шаблон-значений]"
+#: builtin/config.c:144
+msgid "remove a variable: name [value-pattern]"
+msgstr ""
 
-#: builtin/config.c:139
-msgid "remove all matches: name [value-regex]"
-msgstr "удалить все совпадающие: имя [шаблон-значений]"
+#: builtin/config.c:145
+msgid "remove all matches: name [value-pattern]"
+msgstr ""
 
-#: builtin/config.c:140
+#: builtin/config.c:146
 msgid "rename section: old-name new-name"
 msgstr "переименовать раздел: старое-имя новое-имя"
 
-#: builtin/config.c:141
+#: builtin/config.c:147
 msgid "remove a section: name"
 msgstr "удалить раздел: имя"
 
-#: builtin/config.c:142
+#: builtin/config.c:148
 msgid "list all"
 msgstr "показать весь список"
 
-#: builtin/config.c:143
+#: builtin/config.c:149
+msgid "use string equality when comparing values to 'value-pattern'"
+msgstr ""
+
+#: builtin/config.c:150
 msgid "open an editor"
 msgstr "открыть в редакторе"
 
-#: builtin/config.c:144
+#: builtin/config.c:151
 msgid "find the color configured: slot [default]"
 msgstr "найти настроенный цвет: раздел [по-умолчанию]"
 
-#: builtin/config.c:145
+#: builtin/config.c:152
 msgid "find the color setting: slot [stdout-is-tty]"
 msgstr "проверить, существует ли настроенный цвет: раздел [stdout-есть-tty]"
 
-#: builtin/config.c:146
+#: builtin/config.c:153
 msgid "Type"
 msgstr "Тип"
 
-#: builtin/config.c:147
+#: builtin/config.c:154 builtin/env--helper.c:43
 msgid "value is given this type"
 msgstr ""
 
-#: builtin/config.c:148
+#: builtin/config.c:155
 msgid "value is \"true\" or \"false\""
 msgstr "значение — это «true» (правда) или «false» (ложь)"
 
-#: builtin/config.c:149
+#: builtin/config.c:156
 msgid "value is decimal number"
 msgstr "значение — это десятичное число"
 
-#: builtin/config.c:150
+#: builtin/config.c:157
 msgid "value is --bool or --int"
 msgstr "значение — это --bool или --int"
 
-#: builtin/config.c:151
+#: builtin/config.c:158
+msgid "value is --bool or string"
+msgstr ""
+
+#: builtin/config.c:159
 msgid "value is a path (file or directory name)"
 msgstr "значение — это путь (к файлу или каталогу)"
 
-#: builtin/config.c:152
+#: builtin/config.c:160
 msgid "value is an expiry date"
 msgstr "значение - это дата окончания срока действия"
 
-#: builtin/config.c:153
+#: builtin/config.c:161
 msgid "Other"
 msgstr "Другое"
 
-#: builtin/config.c:154
+#: builtin/config.c:162
 msgid "terminate values with NUL byte"
 msgstr "завершать значения НУЛЕВЫМ байтом"
 
-#: builtin/config.c:155
+#: builtin/config.c:163
 msgid "show variable names only"
 msgstr "показывать только имена переменных"
 
-#: builtin/config.c:156
+#: builtin/config.c:164
 msgid "respect include directives on lookup"
 msgstr "учитывать директивы include (включения файлов) при запросе"
 
-#: builtin/config.c:157
+#: builtin/config.c:165
 msgid "show origin of config (file, standard input, blob, command line)"
 msgstr "показать источник настройки (файл, стандартный ввод, двоичный объект, командная строка)"
 
-#: builtin/config.c:158
+#: builtin/config.c:166
+msgid "show scope of config (worktree, local, global, system, command)"
+msgstr ""
+
+#: builtin/config.c:167 builtin/env--helper.c:45
 msgid "value"
 msgstr ""
 
-#: builtin/config.c:158
+#: builtin/config.c:167
 msgid "with --get, use default value when missing entry"
 msgstr ""
 
-#: builtin/config.c:172
+#: builtin/config.c:181
 #, c-format
 msgid "wrong number of arguments, should be %d"
 msgstr ""
 
-#: builtin/config.c:174
+#: builtin/config.c:183
 #, c-format
 msgid "wrong number of arguments, should be from %d to %d"
 msgstr ""
 
-#: builtin/config.c:308
+#: builtin/config.c:339
 #, c-format
 msgid "invalid key pattern: %s"
 msgstr ""
 
-#: builtin/config.c:344
+#: builtin/config.c:377
 #, c-format
 msgid "failed to format default config value: %s"
 msgstr ""
 
-#: builtin/config.c:401
+#: builtin/config.c:441
 #, c-format
 msgid "cannot parse color '%s'"
 msgstr ""
 
-#: builtin/config.c:443
+#: builtin/config.c:483
 msgid "unable to parse default color value"
 msgstr "не удалось разобрать значение цвета по умолчанию"
 
-#: builtin/config.c:496 builtin/config.c:742
+#: builtin/config.c:536 builtin/config.c:833
 msgid "not in a git directory"
 msgstr ""
 
-#: builtin/config.c:499
+#: builtin/config.c:539
 msgid "writing to stdin is not supported"
 msgstr ""
 
-#: builtin/config.c:502
+#: builtin/config.c:542
 msgid "writing config blobs is not supported"
 msgstr ""
 
-#: builtin/config.c:587
+#: builtin/config.c:627
 #, c-format
 msgid ""
 "# This is Git's per-user configuration file.\n"
@@ -11055,81 +12815,89 @@ msgid ""
 "#\temail = %s\n"
 msgstr "# Это файл конфигурации пользователя Git.\n[user]\n# Пожалуйста, адаптируйте и раскомментируйте следующие строки:\n#\tuser = %s\n#\temail = %s\n"
 
-#: builtin/config.c:611
+#: builtin/config.c:652
 msgid "only one config file at a time"
 msgstr ""
 
-#: builtin/config.c:616
+#: builtin/config.c:658
 msgid "--local can only be used inside a git repository"
 msgstr "--local можно использовать только внутри git репозитория"
 
-#: builtin/config.c:619
+#: builtin/config.c:660
 msgid "--blob can only be used inside a git repository"
 msgstr ""
 
-#: builtin/config.c:638
+#: builtin/config.c:662
+msgid "--worktree can only be used inside a git repository"
+msgstr ""
+
+#: builtin/config.c:684
 msgid "$HOME not set"
 msgstr ""
 
-#: builtin/config.c:658
+#: builtin/config.c:708
 msgid ""
 "--worktree cannot be used with multiple working trees unless the config\n"
 "extension worktreeConfig is enabled. Please read \"CONFIGURATION FILE\"\n"
 "section in \"git help worktree\" for details"
 msgstr ""
 
-#: builtin/config.c:688
+#: builtin/config.c:743
 msgid "--get-color and variable type are incoherent"
 msgstr ""
 
-#: builtin/config.c:693
+#: builtin/config.c:748
 msgid "only one action at a time"
 msgstr ""
 
-#: builtin/config.c:706
+#: builtin/config.c:761
 msgid "--name-only is only applicable to --list or --get-regexp"
 msgstr ""
 
-#: builtin/config.c:712
+#: builtin/config.c:767
 msgid ""
 "--show-origin is only applicable to --get, --get-all, --get-regexp, and "
 "--list"
 msgstr ""
 
-#: builtin/config.c:718
+#: builtin/config.c:773
 msgid "--default is only applicable to --get"
 msgstr ""
 
-#: builtin/config.c:731
+#: builtin/config.c:806
+msgid "--fixed-value only applies with 'value-pattern'"
+msgstr ""
+
+#: builtin/config.c:822
 #, c-format
 msgid "unable to read config file '%s'"
 msgstr ""
 
-#: builtin/config.c:734
+#: builtin/config.c:825
 msgid "error processing config file(s)"
 msgstr ""
 
-#: builtin/config.c:744
+#: builtin/config.c:835
 msgid "editing stdin is not supported"
 msgstr ""
 
-#: builtin/config.c:746
+#: builtin/config.c:837
 msgid "editing blobs is not supported"
 msgstr ""
 
-#: builtin/config.c:760
+#: builtin/config.c:851
 #, c-format
 msgid "cannot create configuration file %s"
 msgstr "не удалось создать файл конфигурации %s"
 
-#: builtin/config.c:773
+#: builtin/config.c:864
 #, c-format
 msgid ""
 "cannot overwrite multiple values with a single value\n"
 "       Use a regexp, --add or --replace-all to change %s."
 msgstr "нельзя перезаписать несколько значений одним\n       Используйте регулярные выражения, параметры --add или --replace-all, чтобы изменить %s."
 
-#: builtin/config.c:847 builtin/config.c:858
+#: builtin/config.c:943 builtin/config.c:954
 #, c-format
 msgid "no such section: %s"
 msgstr ""
@@ -11142,11 +12910,37 @@ msgstr "git count-objects [-v] [-H | --human-readable]"
 msgid "print sizes in human readable format"
 msgstr "вывод размеров в удобочитаемом для человека виде"
 
-#: builtin/describe.c:27
+#: builtin/credential-cache--daemon.c:226
+#, c-format
+msgid ""
+"The permissions on your socket directory are too loose; other\n"
+"users may be able to read your cached credentials. Consider running:\n"
+"\n"
+"\tchmod 0700 %s"
+msgstr "Права доступа к вашему каталогу сокетов слишком свободны; друге пользователи могуи читать ваши закэшированные пароли доступа. Обдумайте запуск команды:\n\n\tchmod 0700 %s"
+
+#: builtin/credential-cache--daemon.c:275
+msgid "print debugging messages to stderr"
+msgstr "вывод отладочных сообщений на stderr"
+
+#: builtin/credential-cache--daemon.c:315
+msgid "credential-cache--daemon unavailable; no unix socket support"
+msgstr ""
+
+#: builtin/credential-cache.c:154
+msgid "credential-cache unavailable; no unix socket support"
+msgstr ""
+
+#: builtin/credential-store.c:66
+#, c-format
+msgid "unable to get credential storage lock in %d ms"
+msgstr ""
+
+#: builtin/describe.c:26
 msgid "git describe [<options>] [<commit-ish>...]"
 msgstr "git describe [<опции>] [<указатель-коммита>…]"
 
-#: builtin/describe.c:28
+#: builtin/describe.c:27
 msgid "git describe [<options>] --dirty"
 msgstr "git describe [<опции>] --dirty"
 
@@ -11162,659 +12956,840 @@ msgstr "легковесный"
 msgid "annotated"
 msgstr "аннотированный"
 
-#: builtin/describe.c:273
+#: builtin/describe.c:277
 #, c-format
 msgid "annotated tag %s not available"
 msgstr "аннотированная метка %s не доступна"
 
-#: builtin/describe.c:277
-#, c-format
-msgid "annotated tag %s has no embedded name"
-msgstr "аннотированная метка %s не содержит встроенного названия"
-
-#: builtin/describe.c:279
+#: builtin/describe.c:281
 #, c-format
-msgid "tag '%s' is really '%s' here"
-msgstr "метка «%s» уже здесь «%s»"
+msgid "tag '%s' is externally known as '%s'"
+msgstr ""
 
-#: builtin/describe.c:323
+#: builtin/describe.c:328
 #, c-format
 msgid "no tag exactly matches '%s'"
 msgstr "нет меток, точно соответствующих «%s»"
 
-#: builtin/describe.c:325
+#: builtin/describe.c:330
 #, c-format
 msgid "No exact match on refs or tags, searching to describe\n"
 msgstr "Нет точных совпадений по ссылкам или тегам, ищу описания\n"
 
-#: builtin/describe.c:379
+#: builtin/describe.c:397
 #, c-format
 msgid "finished search at %s\n"
 msgstr "поиск окончен на %s\n"
 
-#: builtin/describe.c:405
+#: builtin/describe.c:424
 #, c-format
 msgid ""
 "No annotated tags can describe '%s'.\n"
 "However, there were unannotated tags: try --tags."
 msgstr "Нет аннотированных меток, которые могут описать «%s».\nНо имеются неаннотированные метки: попробуйте добавить параметр --tags."
 
-#: builtin/describe.c:409
+#: builtin/describe.c:428
 #, c-format
 msgid ""
 "No tags can describe '%s'.\n"
 "Try --always, or create some tags."
 msgstr "Нет меток, которые могут описать «%s….\nПопробуйте добавить параметр --always или создать какие-нибудь метки."
 
-#: builtin/describe.c:439
+#: builtin/describe.c:458
 #, c-format
 msgid "traversed %lu commits\n"
 msgstr "посещено %lu коммитов\n"
 
-#: builtin/describe.c:442
+#: builtin/describe.c:461
 #, c-format
 msgid ""
 "more than %i tags found; listed %i most recent\n"
 "gave up search at %s\n"
 msgstr "более %i меток найдено; показано последние %i\nостановлен поиск после %s\n"
 
-#: builtin/describe.c:510
+#: builtin/describe.c:529
 #, c-format
 msgid "describe %s\n"
 msgstr "описать %s\n"
 
-#: builtin/describe.c:513
+#: builtin/describe.c:532
 #, c-format
 msgid "Not a valid object name %s"
 msgstr "Недопустимое имя объекта %s"
 
-#: builtin/describe.c:521
+#: builtin/describe.c:540
 #, c-format
 msgid "%s is neither a commit nor blob"
 msgstr "%s не является коммитом или двоичным объектом"
 
-#: builtin/describe.c:535
+#: builtin/describe.c:554
 msgid "find the tag that comes after the commit"
 msgstr "поиск метки, которая идет после коммита"
 
-#: builtin/describe.c:536
+#: builtin/describe.c:555
 msgid "debug search strategy on stderr"
 msgstr "вывод отладочной информации стратегии поиска на стандартный вывод"
 
-#: builtin/describe.c:537
+#: builtin/describe.c:556
 msgid "use any ref"
 msgstr "использовать любую ссылку"
 
-#: builtin/describe.c:538
+#: builtin/describe.c:557
 msgid "use any tag, even unannotated"
 msgstr "использовать любую метку, даже неаннотированную"
 
-#: builtin/describe.c:539
+#: builtin/describe.c:558
 msgid "always use long format"
 msgstr "всегда использовать длинный формат вывода"
 
-#: builtin/describe.c:540
+#: builtin/describe.c:559
 msgid "only follow first parent"
 msgstr "следовать только за первым родителем"
 
-#: builtin/describe.c:543
+#: builtin/describe.c:562
 msgid "only output exact matches"
 msgstr "выводить только точные совпадения"
 
-#: builtin/describe.c:545
+#: builtin/describe.c:564
 msgid "consider <n> most recent tags (default: 10)"
 msgstr "рассматривать последние <n> меток (по умолчанию: 10)"
 
-#: builtin/describe.c:547
+#: builtin/describe.c:566
 msgid "only consider tags matching <pattern>"
 msgstr "рассматривать только метки по <шаблону>"
 
-#: builtin/describe.c:549
+#: builtin/describe.c:568
 msgid "do not consider tags matching <pattern>"
 msgstr "не учитывать метки, которые соответствуют <шаблону>"
 
-#: builtin/describe.c:551 builtin/name-rev.c:426
+#: builtin/describe.c:570 builtin/name-rev.c:535
 msgid "show abbreviated commit object as fallback"
 msgstr "если не найдено, показать сокращенный номер редакции коммита"
 
-#: builtin/describe.c:552 builtin/describe.c:555
+#: builtin/describe.c:571 builtin/describe.c:574
 msgid "mark"
 msgstr "пометка"
 
-#: builtin/describe.c:553
+#: builtin/describe.c:572
 msgid "append <mark> on dirty working tree (default: \"-dirty\")"
 msgstr "добавить <пометку> при изменённом рабочем каталоге (по умолчанию: «-dirty»)"
 
-#: builtin/describe.c:556
+#: builtin/describe.c:575
 msgid "append <mark> on broken working tree (default: \"-broken\")"
 msgstr "добавить <пометку> на повреждённое рабочее дерево (по умолчанию: «-broken»)"
 
-#: builtin/describe.c:574
+#: builtin/describe.c:593
 msgid "--long is incompatible with --abbrev=0"
 msgstr "--long несовместимо с --abbrev=0"
 
-#: builtin/describe.c:603
+#: builtin/describe.c:622
 msgid "No names found, cannot describe anything."
 msgstr "Имена не найдены, не могу ничего описать."
 
-#: builtin/describe.c:654
+#: builtin/describe.c:673
 msgid "--dirty is incompatible with commit-ishes"
 msgstr "--dirty несовместимо с указанием указателей коммитов"
 
-#: builtin/describe.c:656
+#: builtin/describe.c:675
 msgid "--broken is incompatible with commit-ishes"
 msgstr "--broken несовместимо с указанием указателей коммитов"
 
-#: builtin/diff.c:84
+#: builtin/diff-tree.c:155
+msgid "--stdin and --merge-base are mutually exclusive"
+msgstr ""
+
+#: builtin/diff-tree.c:157
+msgid "--merge-base only works with two commits"
+msgstr ""
+
+#: builtin/diff.c:91
 #, c-format
 msgid "'%s': not a regular file or symlink"
 msgstr "«%s»: не является обычным файлом или символьной ссылкой"
 
-#: builtin/diff.c:235
+#: builtin/diff.c:258
 #, c-format
 msgid "invalid option: %s"
 msgstr "неправильный параметр: %s"
 
-#: builtin/diff.c:350
+#: builtin/diff.c:375
+#, c-format
+msgid "%s...%s: no merge base"
+msgstr ""
+
+#: builtin/diff.c:485
 msgid "Not a git repository"
 msgstr "Не найден git репозиторий"
 
-#: builtin/diff.c:394
+#: builtin/diff.c:530 builtin/grep.c:681
 #, c-format
 msgid "invalid object '%s' given."
 msgstr "передан неправильный объект «%s»."
 
-#: builtin/diff.c:403
+#: builtin/diff.c:541
 #, c-format
 msgid "more than two blobs given: '%s'"
 msgstr "передано больше двух двоичных объектов: «%s»"
 
-#: builtin/diff.c:408
+#: builtin/diff.c:546
 #, c-format
 msgid "unhandled object '%s' given."
 msgstr "передан необработанный объект «%s»."
 
+#: builtin/diff.c:580
+#, c-format
+msgid "%s...%s: multiple merge bases, using %s"
+msgstr ""
+
 #: builtin/difftool.c:30
 msgid "git difftool [<options>] [<commit> [<commit>]] [--] [<path>...]"
 msgstr "git difftool [<опции>] [<коммит> [<коммит>]] [--] [<путь>…]"
 
-#: builtin/difftool.c:253
+#: builtin/difftool.c:260
 #, c-format
 msgid "failed: %d"
 msgstr "сбой: %d"
 
-#: builtin/difftool.c:295
+#: builtin/difftool.c:302
 #, c-format
 msgid "could not read symlink %s"
 msgstr "не удалось прочитать символьную ссылку %s"
 
-#: builtin/difftool.c:297
+#: builtin/difftool.c:304
 #, c-format
 msgid "could not read symlink file %s"
 msgstr "не удалось прочитать файл символьной ссылки %s"
 
-#: builtin/difftool.c:305
+#: builtin/difftool.c:312
 #, c-format
 msgid "could not read object %s for symlink %s"
 msgstr "не удалось прочитать объект %s для символьной ссылки %s"
 
-#: builtin/difftool.c:406
+#: builtin/difftool.c:412
 msgid ""
 "combined diff formats('-c' and '--cc') are not supported in\n"
 "directory diff mode('-d' and '--dir-diff')."
 msgstr "комбинированные форматы файлов списка изменений(«-c» и «--cc») не поддерживаются в режиме сравнения каталогов(«-d» и «--dir-diff»)."
 
-#: builtin/difftool.c:626
+#: builtin/difftool.c:633
 #, c-format
 msgid "both files modified: '%s' and '%s'."
 msgstr "оба файла изменены: «%s» и «%s»."
 
-#: builtin/difftool.c:628
+#: builtin/difftool.c:635
 msgid "working tree file has been left."
 msgstr "рабочий каталог был покинут."
 
-#: builtin/difftool.c:639
+#: builtin/difftool.c:646
 #, c-format
 msgid "temporary files exist in '%s'."
 msgstr "временные файлы уже находятся в «%s»."
 
-#: builtin/difftool.c:640
+#: builtin/difftool.c:647
 msgid "you may want to cleanup or recover these."
 msgstr "возможно вы хотите их удалить или восстановить."
 
-#: builtin/difftool.c:689
+#: builtin/difftool.c:696
 msgid "use `diff.guitool` instead of `diff.tool`"
 msgstr "использовать «diff.guitool» вместо «diff.tool»"
 
-#: builtin/difftool.c:691
+#: builtin/difftool.c:698
 msgid "perform a full-directory diff"
 msgstr "выполнить пофайловое сравнение всего каталога"
 
-#: builtin/difftool.c:693
+#: builtin/difftool.c:700
 msgid "do not prompt before launching a diff tool"
 msgstr "не спрашивать перед запуском утилиты сравнения"
 
-#: builtin/difftool.c:698
+#: builtin/difftool.c:705
 msgid "use symlinks in dir-diff mode"
 msgstr "использовать символьные ссылки в режиме сравнения каталога"
 
-#: builtin/difftool.c:699
+#: builtin/difftool.c:706
 msgid "tool"
 msgstr ""
 
-#: builtin/difftool.c:700
+#: builtin/difftool.c:707
 msgid "use the specified diff tool"
 msgstr "использовать указанную утилиту сравнения"
 
-#: builtin/difftool.c:702
+#: builtin/difftool.c:709
 msgid "print a list of diff tools that may be used with `--tool`"
 msgstr "вывести список утилит, которые можно использовать с параметром «--tool»"
 
-#: builtin/difftool.c:705
+#: builtin/difftool.c:712
 msgid ""
 "make 'git-difftool' exit when an invoked diff tool returns a non - zero exit"
 " code"
 msgstr "выходить из «git-difftool», если вызванная утилита сравнения вернула не нулевой код возврата"
 
-#: builtin/difftool.c:708
+#: builtin/difftool.c:715
 msgid "specify a custom command for viewing diffs"
 msgstr "использовать особую команду для просмотра изменений"
 
-#: builtin/difftool.c:709
+#: builtin/difftool.c:716
 msgid "passed to `diff`"
 msgstr ""
 
-#: builtin/difftool.c:724
+#: builtin/difftool.c:731
 msgid "difftool requires worktree or --no-index"
 msgstr ""
 
-#: builtin/difftool.c:731
+#: builtin/difftool.c:738
 msgid "--dir-diff is incompatible with --no-index"
 msgstr ""
 
-#: builtin/difftool.c:734
+#: builtin/difftool.c:741
 msgid "--gui, --tool and --extcmd are mutually exclusive"
 msgstr ""
 
-#: builtin/difftool.c:742
-msgid "no <tool> given for --tool=<tool>"
-msgstr "не передана <утилита> для --tool=<утилита>"
+#: builtin/difftool.c:749
+msgid "no <tool> given for --tool=<tool>"
+msgstr "не передана <утилита> для --tool=<утилита>"
+
+#: builtin/difftool.c:756
+msgid "no <cmd> given for --extcmd=<cmd>"
+msgstr "не передана <команда> для --extcmd=<команда>"
+
+#: builtin/env--helper.c:6
+msgid "git env--helper --type=[bool|ulong] <options> <env-var>"
+msgstr ""
+
+#: builtin/env--helper.c:42 builtin/hash-object.c:98
+msgid "type"
+msgstr "тип"
+
+#: builtin/env--helper.c:46
+msgid "default for git_env_*(...) to fall back on"
+msgstr ""
+
+#: builtin/env--helper.c:48
+msgid "be quiet only use git_env_*() value as exit code"
+msgstr ""
+
+#: builtin/env--helper.c:67
+#, c-format
+msgid ""
+"option `--default' expects a boolean value with `--type=bool`, not `%s`"
+msgstr ""
 
-#: builtin/difftool.c:749
-msgid "no <cmd> given for --extcmd=<cmd>"
-msgstr "не передана <команда> для --extcmd=<команда>"
+#: builtin/env--helper.c:82
+#, c-format
+msgid ""
+"option `--default' expects an unsigned long value with `--type=ulong`, not "
+"`%s`"
+msgstr ""
 
 #: builtin/fast-export.c:29
 msgid "git fast-export [rev-list-opts]"
 msgstr "git fast-export [опции-rev-list]"
 
-#: builtin/fast-export.c:1084
+#: builtin/fast-export.c:868
+msgid "Error: Cannot export nested tags unless --mark-tags is specified."
+msgstr ""
+
+#: builtin/fast-export.c:1177
+msgid "--anonymize-map token cannot be empty"
+msgstr ""
+
+#: builtin/fast-export.c:1197
 msgid "show progress after <n> objects"
 msgstr "показать прогресс после <n> объектов"
 
-#: builtin/fast-export.c:1086
+#: builtin/fast-export.c:1199
 msgid "select handling of signed tags"
 msgstr "выбор обработки подписанных меток"
 
-#: builtin/fast-export.c:1089
+#: builtin/fast-export.c:1202
 msgid "select handling of tags that tag filtered objects"
 msgstr "выбор обработки меток, которыми помечены отфильтрованные объекты"
 
-#: builtin/fast-export.c:1092
+#: builtin/fast-export.c:1205
+msgid "select handling of commit messages in an alternate encoding"
+msgstr ""
+
+#: builtin/fast-export.c:1208
 msgid "Dump marks to this file"
 msgstr "Записать пометки в этот файл"
 
-#: builtin/fast-export.c:1094
+#: builtin/fast-export.c:1210
 msgid "Import marks from this file"
 msgstr "Импортировать пометки из этого файла"
 
-#: builtin/fast-export.c:1096
+#: builtin/fast-export.c:1214
+msgid "Import marks from this file if it exists"
+msgstr ""
+
+#: builtin/fast-export.c:1216
 msgid "Fake a tagger when tags lack one"
 msgstr "Подделать автора метки, если у метки он отсутствует"
 
-#: builtin/fast-export.c:1098
+#: builtin/fast-export.c:1218
 msgid "Output full tree for each commit"
 msgstr "Вывести полное дерево для каждого коммита"
 
-#: builtin/fast-export.c:1100
+#: builtin/fast-export.c:1220
 msgid "Use the done feature to terminate the stream"
 msgstr "Использовать пометку завершения в конце потока"
 
-#: builtin/fast-export.c:1101
+#: builtin/fast-export.c:1221
 msgid "Skip output of blob data"
 msgstr "Пропустить вывод данных двоичных объектов"
 
-#: builtin/fast-export.c:1102 builtin/log.c:1609
+#: builtin/fast-export.c:1222 builtin/log.c:1816
 msgid "refspec"
 msgstr "спецификатор ссылки"
 
-#: builtin/fast-export.c:1103
+#: builtin/fast-export.c:1223
 msgid "Apply refspec to exported refs"
 msgstr "Применить спецификатор ссылки к экспортируемым ссылкам"
 
-#: builtin/fast-export.c:1104
+#: builtin/fast-export.c:1224
 msgid "anonymize output"
 msgstr "сделать вывод анонимным"
 
-#: builtin/fast-export.c:1106
+#: builtin/fast-export.c:1225
+msgid "from:to"
+msgstr ""
+
+#: builtin/fast-export.c:1226
+msgid "convert <from> to <to> in anonymized output"
+msgstr ""
+
+#: builtin/fast-export.c:1229
 msgid "Reference parents which are not in fast-export stream by object id"
 msgstr ""
 
-#: builtin/fast-export.c:1108
+#: builtin/fast-export.c:1231
 msgid "Show original object ids of blobs/commits"
 msgstr ""
 
-#: builtin/fetch.c:28
+#: builtin/fast-export.c:1233
+msgid "Label tags with mark ids"
+msgstr ""
+
+#: builtin/fast-export.c:1256
+msgid "--anonymize-map without --anonymize does not make sense"
+msgstr ""
+
+#: builtin/fast-export.c:1271
+msgid "Cannot pass both --import-marks and --import-marks-if-exists"
+msgstr ""
+
+#: builtin/fast-import.c:3088
+#, c-format
+msgid "Missing from marks for submodule '%s'"
+msgstr ""
+
+#: builtin/fast-import.c:3090
+#, c-format
+msgid "Missing to marks for submodule '%s'"
+msgstr ""
+
+#: builtin/fast-import.c:3225
+#, c-format
+msgid "Expected 'mark' command, got %s"
+msgstr ""
+
+#: builtin/fast-import.c:3230
+#, c-format
+msgid "Expected 'to' command, got %s"
+msgstr ""
+
+#: builtin/fast-import.c:3322
+msgid "Expected format name:filename for submodule rewrite option"
+msgstr ""
+
+#: builtin/fast-import.c:3377
+#, c-format
+msgid "feature '%s' forbidden in input without --allow-unsafe-features"
+msgstr ""
+
+#: builtin/fetch-pack.c:241
+#, c-format
+msgid "Lockfile created but not reported: %s"
+msgstr ""
+
+#: builtin/fetch.c:35
 msgid "git fetch [<options>] [<repository> [<refspec>...]]"
 msgstr "git fetch [<опции>] [<репозиторий> [<спецификатор-ссылки>…]]"
 
-#: builtin/fetch.c:29
+#: builtin/fetch.c:36
 msgid "git fetch [<options>] <group>"
 msgstr "git fetch [<опции>] <группа>"
 
-#: builtin/fetch.c:30
+#: builtin/fetch.c:37
 msgid "git fetch --multiple [<options>] [(<repository> | <group>)...]"
 msgstr "git fetch --multiple [<опции>] [(<репозиторий> | <группа>)…]"
 
-#: builtin/fetch.c:31
+#: builtin/fetch.c:38
 msgid "git fetch --all [<options>]"
 msgstr "git fetch --all [<опции>]"
 
-#: builtin/fetch.c:115 builtin/pull.c:202
+#: builtin/fetch.c:119
+msgid "fetch.parallel cannot be negative"
+msgstr ""
+
+#: builtin/fetch.c:142 builtin/pull.c:185
 msgid "fetch from all remotes"
 msgstr "извлечь со всех внешних репозиториев"
 
-#: builtin/fetch.c:117 builtin/pull.c:205
+#: builtin/fetch.c:144 builtin/pull.c:245
+msgid "set upstream for git pull/fetch"
+msgstr ""
+
+#: builtin/fetch.c:146 builtin/pull.c:188
 msgid "append to .git/FETCH_HEAD instead of overwriting"
 msgstr "дописать к .git/FETCH_HEAD вместо перезаписи"
 
-#: builtin/fetch.c:119 builtin/pull.c:208
+#: builtin/fetch.c:148 builtin/pull.c:191
 msgid "path to upload pack on remote end"
 msgstr "путь к программе упаковки пакета на машине с внешним репозиторием"
 
-#: builtin/fetch.c:120
+#: builtin/fetch.c:149
 msgid "force overwrite of local reference"
 msgstr ""
 
-#: builtin/fetch.c:122
+#: builtin/fetch.c:151
 msgid "fetch from multiple remotes"
 msgstr "извлечь с нескольких внешних репозиториев"
 
-#: builtin/fetch.c:124 builtin/pull.c:212
+#: builtin/fetch.c:153 builtin/pull.c:195
 msgid "fetch all tags and associated objects"
 msgstr "извлечь все метки и связанные объекты"
 
-#: builtin/fetch.c:126
+#: builtin/fetch.c:155
 msgid "do not fetch all tags (--no-tags)"
 msgstr "не извлекать все метки (--no-tags)"
 
-#: builtin/fetch.c:128
+#: builtin/fetch.c:157
 msgid "number of submodules fetched in parallel"
 msgstr "количество подмодулей, которые будут скачаны парралельно"
 
-#: builtin/fetch.c:130 builtin/pull.c:215
+#: builtin/fetch.c:159 builtin/pull.c:198
 msgid "prune remote-tracking branches no longer on remote"
 msgstr "почистить отслеживаемые внешние ветки, которых уже нет на внешнем репозитории"
 
-#: builtin/fetch.c:132
+#: builtin/fetch.c:161
 msgid "prune local tags no longer on remote and clobber changed tags"
 msgstr ""
 
-#: builtin/fetch.c:133 builtin/fetch.c:156 builtin/pull.c:139
+#: builtin/fetch.c:162 builtin/fetch.c:187 builtin/pull.c:122
 msgid "on-demand"
 msgstr "по требованию"
 
-#: builtin/fetch.c:134
+#: builtin/fetch.c:163
 msgid "control recursive fetching of submodules"
 msgstr "управление рекурсивным извлечением подмодулей"
 
-#: builtin/fetch.c:138 builtin/pull.c:223
+#: builtin/fetch.c:168
+msgid "write fetched references to the FETCH_HEAD file"
+msgstr ""
+
+#: builtin/fetch.c:169 builtin/pull.c:206
 msgid "keep downloaded pack"
 msgstr "оставить загруженный пакет данных"
 
-#: builtin/fetch.c:140
+#: builtin/fetch.c:171
 msgid "allow updating of HEAD ref"
 msgstr "разрешить обновление ссылки HEAD"
 
-#: builtin/fetch.c:143 builtin/fetch.c:149 builtin/pull.c:226
+#: builtin/fetch.c:174 builtin/fetch.c:180 builtin/pull.c:209
+#: builtin/pull.c:218
 msgid "deepen history of shallow clone"
 msgstr "улугубить историю частичного клона"
 
-#: builtin/fetch.c:145
+#: builtin/fetch.c:176 builtin/pull.c:212
 msgid "deepen history of shallow repository based on time"
 msgstr "углубить историю частичного клона основываясь на времени"
 
-#: builtin/fetch.c:151 builtin/pull.c:229
+#: builtin/fetch.c:182 builtin/pull.c:221
 msgid "convert to a complete repository"
 msgstr "преобразовать в полный репозиторий"
 
-#: builtin/fetch.c:154
+#: builtin/fetch.c:185
 msgid "prepend this to submodule path output"
 msgstr "присоединять это спереди к выводу путей подмодуля"
 
-#: builtin/fetch.c:157
+#: builtin/fetch.c:188
 msgid ""
 "default for recursive fetching of submodules (lower priority than config "
 "files)"
 msgstr "настроить по умолчанию рекурсивное извлечение подмодулей (более низкий приоритет, чем файлы конфигурации)"
 
-#: builtin/fetch.c:161 builtin/pull.c:232
+#: builtin/fetch.c:192 builtin/pull.c:224
 msgid "accept refs that update .git/shallow"
 msgstr "принимать ссылки, которые обновляют .git/shallow"
 
-#: builtin/fetch.c:162 builtin/pull.c:234
+#: builtin/fetch.c:193 builtin/pull.c:226
 msgid "refmap"
 msgstr "соответствие-ссылок"
 
-#: builtin/fetch.c:163 builtin/pull.c:235
+#: builtin/fetch.c:194 builtin/pull.c:227
 msgid "specify fetch refmap"
 msgstr "указать соответствие ссылок при извлечении"
 
-#: builtin/fetch.c:170
+#: builtin/fetch.c:201 builtin/pull.c:240
 msgid "report that we have only objects reachable from this object"
 msgstr ""
 
-#: builtin/fetch.c:469
+#: builtin/fetch.c:204 builtin/fetch.c:206
+msgid "run 'maintenance --auto' after fetching"
+msgstr ""
+
+#: builtin/fetch.c:208 builtin/pull.c:243
+msgid "check for forced-updates on all updated branches"
+msgstr ""
+
+#: builtin/fetch.c:210
+msgid "write the commit-graph after fetching"
+msgstr ""
+
+#: builtin/fetch.c:212
+msgid "accept refspecs from stdin"
+msgstr ""
+
+#: builtin/fetch.c:523
 msgid "Couldn't find remote ref HEAD"
 msgstr "Не удалось найти ссылку HEAD на внешнем репозитории"
 
-#: builtin/fetch.c:608
+#: builtin/fetch.c:677
 #, c-format
 msgid "configuration fetch.output contains invalid value %s"
 msgstr "опция fetch.output содержит неправильное значение для %s"
 
-#: builtin/fetch.c:705
+#: builtin/fetch.c:775
 #, c-format
 msgid "object %s not found"
 msgstr "объект %s не найден"
 
-#: builtin/fetch.c:709
+#: builtin/fetch.c:779
 msgid "[up to date]"
 msgstr "[актуально]"
 
-#: builtin/fetch.c:722 builtin/fetch.c:738 builtin/fetch.c:801
+#: builtin/fetch.c:792 builtin/fetch.c:808 builtin/fetch.c:880
 msgid "[rejected]"
 msgstr "[отклонено]"
 
-#: builtin/fetch.c:723
+#: builtin/fetch.c:793
 msgid "can't fetch in current branch"
 msgstr "нельзя извлечь текущую ветку"
 
-#: builtin/fetch.c:733
+#: builtin/fetch.c:803
 msgid "[tag update]"
 msgstr "[обновление метки]"
 
-#: builtin/fetch.c:734 builtin/fetch.c:771 builtin/fetch.c:784
-#: builtin/fetch.c:796
+#: builtin/fetch.c:804 builtin/fetch.c:841 builtin/fetch.c:863
+#: builtin/fetch.c:875
 msgid "unable to update local ref"
 msgstr "не удалось обновить локальную ссылку"
 
-#: builtin/fetch.c:738
+#: builtin/fetch.c:808
 msgid "would clobber existing tag"
 msgstr ""
 
-#: builtin/fetch.c:760
+#: builtin/fetch.c:830
 msgid "[new tag]"
 msgstr "[новая метка]"
 
-#: builtin/fetch.c:763
+#: builtin/fetch.c:833
 msgid "[new branch]"
 msgstr "[новая ветка]"
 
-#: builtin/fetch.c:766
+#: builtin/fetch.c:836
 msgid "[new ref]"
 msgstr "[новая ссылка]"
 
-#: builtin/fetch.c:796
+#: builtin/fetch.c:875
 msgid "forced update"
 msgstr "принудительное обновление"
 
-#: builtin/fetch.c:801
+#: builtin/fetch.c:880
 msgid "non-fast-forward"
 msgstr "без перемотки вперед"
 
-#: builtin/fetch.c:847
+#: builtin/fetch.c:901
+msgid ""
+"Fetch normally indicates which branches had a forced update,\n"
+"but that check has been disabled. To re-enable, use '--show-forced-updates'\n"
+"flag or run 'git config fetch.showForcedUpdates true'."
+msgstr ""
+
+#: builtin/fetch.c:905
+#, c-format
+msgid ""
+"It took %.2f seconds to check forced updates. You can use\n"
+"'--no-show-forced-updates' or run 'git config fetch.showForcedUpdates false'\n"
+" to avoid this check.\n"
+msgstr ""
+
+#: builtin/fetch.c:939
 #, c-format
 msgid "%s did not send all necessary objects\n"
 msgstr "%s не отправил все необходимые объекты\n"
 
-#: builtin/fetch.c:868
+#: builtin/fetch.c:960
 #, c-format
 msgid "reject %s because shallow roots are not allowed to be updated"
 msgstr "%s отклонено из-за того, что частичные корни не разрешено обновлять"
 
-#: builtin/fetch.c:959 builtin/fetch.c:1081
+#: builtin/fetch.c:1053 builtin/fetch.c:1191
 #, c-format
 msgid "From %.*s\n"
 msgstr "Из %.*s\n"
 
-#: builtin/fetch.c:970
+#: builtin/fetch.c:1064
 #, c-format
 msgid ""
 "some local refs could not be updated; try running\n"
 " 'git remote prune %s' to remove any old, conflicting branches"
 msgstr "не удалось обновить некоторые локальные ссылки; попробуйте запустить «git remote prune %s», чтобы почистить старые, конфликтующие ветки"
 
-#: builtin/fetch.c:1051
+#: builtin/fetch.c:1161
 #, c-format
 msgid "   (%s will become dangling)"
 msgstr "   (%s будет висящей веткой)"
 
-#: builtin/fetch.c:1052
+#: builtin/fetch.c:1162
 #, c-format
 msgid "   (%s has become dangling)"
 msgstr "   (%s стала висящей веткой)"
 
-#: builtin/fetch.c:1084
+#: builtin/fetch.c:1194
 msgid "[deleted]"
 msgstr "[удалено]"
 
-#: builtin/fetch.c:1085 builtin/remote.c:1036
+#: builtin/fetch.c:1195 builtin/remote.c:1118
 msgid "(none)"
 msgstr "(нет)"
 
-#: builtin/fetch.c:1108
+#: builtin/fetch.c:1218
 #, c-format
 msgid "Refusing to fetch into current branch %s of non-bare repository"
 msgstr "Отказ получения в текущую ветку %s не голого репозитория"
 
-#: builtin/fetch.c:1127
+#: builtin/fetch.c:1237
 #, c-format
 msgid "Option \"%s\" value \"%s\" is not valid for %s"
 msgstr "Неправильное значение «%2$s» для параметра «%1$s» для %3$s"
 
-#: builtin/fetch.c:1130
+#: builtin/fetch.c:1240
 #, c-format
 msgid "Option \"%s\" is ignored for %s\n"
 msgstr "Параметр «%s» игнорируется для %s\n"
 
-#: builtin/fetch.c:1434
+#: builtin/fetch.c:1448
+msgid "multiple branches detected, incompatible with --set-upstream"
+msgstr ""
+
+#: builtin/fetch.c:1463
+msgid "not setting upstream for a remote remote-tracking branch"
+msgstr ""
+
+#: builtin/fetch.c:1465
+msgid "not setting upstream for a remote tag"
+msgstr ""
+
+#: builtin/fetch.c:1467
+msgid "unknown branch type"
+msgstr ""
+
+#: builtin/fetch.c:1469
+msgid ""
+"no source branch found.\n"
+"you need to specify exactly one branch with the --set-upstream option."
+msgstr ""
+
+#: builtin/fetch.c:1598 builtin/fetch.c:1661
 #, c-format
 msgid "Fetching %s\n"
 msgstr "Извлечение из %s\n"
 
-#: builtin/fetch.c:1436 builtin/remote.c:100
+#: builtin/fetch.c:1608 builtin/fetch.c:1663 builtin/remote.c:101
 #, c-format
 msgid "Could not fetch %s"
 msgstr "Не удалось извлечь %s"
 
-#: builtin/fetch.c:1482
-msgid ""
-"--filter can only be used with the remote configured in "
-"extensions.partialClone"
+#: builtin/fetch.c:1620
+#, c-format
+msgid "could not fetch '%s' (exit code: %d)\n"
 msgstr ""
 
-#: builtin/fetch.c:1506
+#: builtin/fetch.c:1724
 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:1543
+#: builtin/fetch.c:1760
 msgid "You need to specify a tag name."
 msgstr "Вам нужно указать имя метки."
 
-#: builtin/fetch.c:1594
+#: builtin/fetch.c:1825
 msgid "Negative depth in --deepen is not supported"
 msgstr "Отрицательная грубина для --deepen не поддерживается"
 
-#: builtin/fetch.c:1596
+#: builtin/fetch.c:1827
 msgid "--deepen and --depth are mutually exclusive"
 msgstr "--deepen и --depth нельзя использовать одновременно"
 
-#: builtin/fetch.c:1601
+#: builtin/fetch.c:1832
 msgid "--depth and --unshallow cannot be used together"
 msgstr "нельзя использовать одновременно --depth и --unshallow"
 
-#: builtin/fetch.c:1603
+#: builtin/fetch.c:1834
 msgid "--unshallow on a complete repository does not make sense"
 msgstr "--unshallow не имеет смысла на полном репозитории"
 
-#: builtin/fetch.c:1619
+#: builtin/fetch.c:1851
 msgid "fetch --all does not take a repository argument"
 msgstr "fetch --all не принимает имя репозитория как аргумент"
 
-#: builtin/fetch.c:1621
+#: builtin/fetch.c:1853
 msgid "fetch --all does not make sense with refspecs"
 msgstr "fetch --all не имеет смысла при указании спецификаторов ссылок"
 
-#: builtin/fetch.c:1630
+#: builtin/fetch.c:1862
 #, c-format
 msgid "No such remote or remote group: %s"
 msgstr "Нет такого внешнего репозитория или группы: %s"
 
-#: builtin/fetch.c:1637
+#: builtin/fetch.c:1869
 msgid "Fetching a group and specifying refspecs does not make sense"
 msgstr "Получение группы и указание спецификаций ссылок не имеет смысла"
 
-#: builtin/fetch.c:1653
+#: builtin/fetch.c:1887
 msgid ""
 "--filter can only be used with the remote configured in "
 "extensions.partialclone"
 msgstr ""
 
-#: builtin/fmt-merge-msg.c:18
+#: builtin/fetch.c:1891
+msgid "--stdin can only be used when fetching from one remote"
+msgstr ""
+
+#: builtin/fmt-merge-msg.c:7
 msgid ""
 "git fmt-merge-msg [-m <message>] [--log[=<n>] | --no-log] [--file <file>]"
 msgstr "git fmt-merge-msg [-m <сообщение>] [--log[=<n>] | --no-log] [--file <файл>]"
 
-#: builtin/fmt-merge-msg.c:672
+#: builtin/fmt-merge-msg.c:18
 msgid "populate log with at most <n> entries from shortlog"
 msgstr "отправить в журнал <n> записей из короткого журнала"
 
-#: builtin/fmt-merge-msg.c:675
+#: builtin/fmt-merge-msg.c:21
 msgid "alias for --log (deprecated)"
 msgstr "сокращение для --log (устаревшее)"
 
-#: builtin/fmt-merge-msg.c:678
+#: builtin/fmt-merge-msg.c:24
 msgid "text"
 msgstr "текст"
 
-#: builtin/fmt-merge-msg.c:679
+#: builtin/fmt-merge-msg.c:25
 msgid "use <text> as start of message"
 msgstr "использовать <текст> как начальное сообщение"
 
-#: builtin/fmt-merge-msg.c:680
+#: builtin/fmt-merge-msg.c:26
 msgid "file to read from"
 msgstr "файл для чтения"
 
@@ -11827,8 +13802,8 @@ msgid "git for-each-ref [--points-at <object>]"
 msgstr "git for-each-ref [--points-at <объект>]"
 
 #: builtin/for-each-ref.c:12
-msgid "git for-each-ref [(--merged | --no-merged) [<commit>]]"
-msgstr "git for-each-ref [(--merged | --no-merged) [<коммит>]]"
+msgid "git for-each-ref [--merged [<commit>]] [--no-merged [<commit>]]"
+msgstr ""
 
 #: builtin/for-each-ref.c:13
 msgid "git for-each-ref [--contains [<commit>]] [--no-contains [<commit>]]"
@@ -11854,7 +13829,7 @@ msgstr "выводить указатели места заполнения в 
 msgid "show only <n> matched refs"
 msgstr "показать только <n> совпадающих ссылок"
 
-#: builtin/for-each-ref.c:39 builtin/tag.c:433
+#: builtin/for-each-ref.c:39 builtin/tag.c:440
 msgid "respect format colors"
 msgstr "использовать цвета из формата"
 
@@ -11878,272 +13853,288 @@ msgstr "вывод только ссылок, которые содержат к
 msgid "print only refs which don't contain the commit"
 msgstr "вывод только ссылок, которые не содержат коммит"
 
-#: builtin/fsck.c:88 builtin/fsck.c:160 builtin/fsck.c:161
+#: builtin/for-each-repo.c:9
+msgid "git for-each-repo --config=<config> <command-args>"
+msgstr ""
+
+#: builtin/for-each-repo.c:37
+msgid "config"
+msgstr ""
+
+#: builtin/for-each-repo.c:38
+msgid "config key storing a list of repository paths"
+msgstr ""
+
+#: builtin/for-each-repo.c:46
+msgid "missing --config=<config>"
+msgstr ""
+
+#: builtin/fsck.c:69 builtin/fsck.c:148 builtin/fsck.c:149
 msgid "unknown"
 msgstr ""
 
 #. TRANSLATORS: e.g. error in tree 01bfda: <more explanation>
-#: builtin/fsck.c:120 builtin/fsck.c:136
+#: builtin/fsck.c:101 builtin/fsck.c:121
 #, c-format
 msgid "error in %s %s: %s"
 msgstr ""
 
 #. TRANSLATORS: e.g. warning in tree 01bfda: <more explanation>
-#: builtin/fsck.c:131
+#: builtin/fsck.c:115
 #, c-format
 msgid "warning in %s %s: %s"
 msgstr ""
 
-#: builtin/fsck.c:157 builtin/fsck.c:159
+#: builtin/fsck.c:144 builtin/fsck.c:147
 #, c-format
 msgid "broken link from %7s %s"
 msgstr ""
 
-#: builtin/fsck.c:168
+#: builtin/fsck.c:156
 msgid "wrong object type in link"
 msgstr ""
 
-#: builtin/fsck.c:184
+#: builtin/fsck.c:172
 #, c-format
 msgid ""
 "broken link from %7s %s\n"
 "              to %7s %s"
 msgstr ""
 
-#: builtin/fsck.c:295
+#: builtin/fsck.c:283
 #, c-format
 msgid "missing %s %s"
 msgstr ""
 
-#: builtin/fsck.c:321
+#: builtin/fsck.c:310
 #, c-format
 msgid "unreachable %s %s"
 msgstr ""
 
-#: builtin/fsck.c:340
+#: builtin/fsck.c:330
 #, c-format
 msgid "dangling %s %s"
 msgstr ""
 
-#: builtin/fsck.c:349
+#: builtin/fsck.c:340
 msgid "could not create lost-found"
 msgstr ""
 
-#: builtin/fsck.c:360
+#: builtin/fsck.c:351
 #, c-format
 msgid "could not finish '%s'"
 msgstr "не удалось закончить '%s'"
 
-#: builtin/fsck.c:377
+#: builtin/fsck.c:368
 #, c-format
 msgid "Checking %s"
 msgstr ""
 
-#: builtin/fsck.c:415
+#: builtin/fsck.c:406
 #, c-format
 msgid "Checking connectivity (%d objects)"
 msgstr ""
 
-#: builtin/fsck.c:434
+#: builtin/fsck.c:425
 #, c-format
 msgid "Checking %s %s"
 msgstr ""
 
-#: builtin/fsck.c:438
+#: builtin/fsck.c:430
 msgid "broken links"
 msgstr ""
 
-#: builtin/fsck.c:447
+#: builtin/fsck.c:439
 #, c-format
 msgid "root %s"
 msgstr ""
 
-#: builtin/fsck.c:455
+#: builtin/fsck.c:447
 #, c-format
 msgid "tagged %s %s (%s) in %s"
 msgstr ""
 
-#: builtin/fsck.c:484
+#: builtin/fsck.c:476
 #, c-format
 msgid "%s: object corrupt or missing"
 msgstr ""
 
-#: builtin/fsck.c:509
+#: builtin/fsck.c:501
 #, c-format
 msgid "%s: invalid reflog entry %s"
 msgstr ""
 
-#: builtin/fsck.c:523
+#: builtin/fsck.c:515
 #, c-format
 msgid "Checking reflog %s->%s"
 msgstr ""
 
-#: builtin/fsck.c:557
+#: builtin/fsck.c:549
 #, c-format
 msgid "%s: invalid sha1 pointer %s"
 msgstr ""
 
-#: builtin/fsck.c:564
+#: builtin/fsck.c:556
 #, c-format
 msgid "%s: not a commit"
 msgstr ""
 
-#: builtin/fsck.c:619
+#: builtin/fsck.c:610
 msgid "notice: No default references"
 msgstr ""
 
-#: builtin/fsck.c:634
+#: builtin/fsck.c:625
 #, c-format
 msgid "%s: object corrupt or missing: %s"
 msgstr ""
 
-#: builtin/fsck.c:647
+#: builtin/fsck.c:638
 #, c-format
 msgid "%s: object could not be parsed: %s"
 msgstr ""
 
-#: builtin/fsck.c:667
+#: builtin/fsck.c:658
 #, c-format
 msgid "bad sha1 file: %s"
 msgstr ""
 
-#: builtin/fsck.c:682
+#: builtin/fsck.c:673
 msgid "Checking object directory"
 msgstr ""
 
-#: builtin/fsck.c:685
+#: builtin/fsck.c:676
 msgid "Checking object directories"
 msgstr "Проверка каталогов объектов"
 
-#: builtin/fsck.c:700
+#: builtin/fsck.c:691
 #, c-format
 msgid "Checking %s link"
 msgstr ""
 
-#: builtin/fsck.c:705 builtin/index-pack.c:841
+#: builtin/fsck.c:696 builtin/index-pack.c:865
 #, c-format
 msgid "invalid %s"
 msgstr "неправильный %s"
 
-#: builtin/fsck.c:712
+#: builtin/fsck.c:703
 #, c-format
 msgid "%s points to something strange (%s)"
 msgstr ""
 
-#: builtin/fsck.c:718
+#: builtin/fsck.c:709
 #, c-format
 msgid "%s: detached HEAD points at nothing"
 msgstr ""
 
-#: builtin/fsck.c:722
+#: builtin/fsck.c:713
 #, c-format
 msgid "notice: %s points to an unborn branch (%s)"
 msgstr ""
 
-#: builtin/fsck.c:734
+#: builtin/fsck.c:725
 msgid "Checking cache tree"
 msgstr ""
 
-#: builtin/fsck.c:739
+#: builtin/fsck.c:730
 #, c-format
 msgid "%s: invalid sha1 pointer in cache-tree"
 msgstr ""
 
-#: builtin/fsck.c:750
+#: builtin/fsck.c:739
 msgid "non-tree in cache-tree"
 msgstr ""
 
-#: builtin/fsck.c:781
+#: builtin/fsck.c:770
 msgid "git fsck [<options>] [<object>...]"
 msgstr "git fsck [<опции>] [<объект>…]"
 
-#: builtin/fsck.c:787
+#: builtin/fsck.c:776
 msgid "show unreachable objects"
 msgstr "показать недоступные объекты"
 
-#: builtin/fsck.c:788
+#: builtin/fsck.c:777
 msgid "show dangling objects"
 msgstr "показать объекты, на которые нет ссылок"
 
-#: builtin/fsck.c:789
+#: builtin/fsck.c:778
 msgid "report tags"
 msgstr "вывести отчет по меткам"
 
-#: builtin/fsck.c:790
+#: builtin/fsck.c:779
 msgid "report root nodes"
 msgstr "вывести отчет по корневым узлам"
 
-#: builtin/fsck.c:791
+#: builtin/fsck.c:780
 msgid "make index objects head nodes"
 msgstr "воспринимать объекты в индексе как корневые узлы"
 
-#: builtin/fsck.c:792
+#: builtin/fsck.c:781
 msgid "make reflogs head nodes (default)"
 msgstr "создать корневые узлы журналов ссылок (по умолчанию)"
 
-#: builtin/fsck.c:793
+#: builtin/fsck.c:782
 msgid "also consider packs and alternate objects"
 msgstr "также проверять пакеты и альтернативные объекты"
 
-#: builtin/fsck.c:794
+#: builtin/fsck.c:783
 msgid "check only connectivity"
 msgstr "только проверить соединение"
 
-#: builtin/fsck.c:795
+#: builtin/fsck.c:784
 msgid "enable more strict checking"
 msgstr "использовать более строгую проверку"
 
-#: builtin/fsck.c:797
+#: builtin/fsck.c:786
 msgid "write dangling objects in .git/lost-found"
 msgstr "записать объекты на которые нет ссылок в .git/lost-found"
 
-#: builtin/fsck.c:798 builtin/prune.c:132
+#: builtin/fsck.c:787 builtin/prune.c:134
 msgid "show progress"
 msgstr "показать прогресс выполнения"
 
-#: builtin/fsck.c:799
+#: builtin/fsck.c:788
 msgid "show verbose names for reachable objects"
 msgstr "показать подробные имена для недоступных объектов"
 
-#: builtin/fsck.c:859 builtin/index-pack.c:224
+#: builtin/fsck.c:847 builtin/index-pack.c:261
 msgid "Checking objects"
 msgstr "Проверка объектов"
 
-#: builtin/fsck.c:887
+#: builtin/fsck.c:875
 #, c-format
 msgid "%s: object missing"
 msgstr ""
 
-#: builtin/fsck.c:899
+#: builtin/fsck.c:886
 #, c-format
 msgid "invalid parameter: expected sha1, got '%s'"
 msgstr ""
 
-#: builtin/gc.c:34
+#: builtin/gc.c:39
 msgid "git gc [<options>]"
 msgstr "git gc [<опции>]"
 
-#: builtin/gc.c:90
+#: builtin/gc.c:94
 #, c-format
 msgid "Failed to fstat %s: %s"
 msgstr "Не удалось выполнить fstat %s: %s"
 
-#: builtin/gc.c:126
+#: builtin/gc.c:130
 #, c-format
 msgid "failed to parse '%s' value '%s'"
 msgstr ""
 
-#: builtin/gc.c:476 builtin/init-db.c:55
+#: builtin/gc.c:479 builtin/init-db.c:58
 #, c-format
 msgid "cannot stat '%s'"
 msgstr "не удалось выполнить stat для «%s»"
 
-#: builtin/gc.c:485 builtin/notes.c:240 builtin/tag.c:519
+#: builtin/gc.c:488 builtin/notes.c:240 builtin/tag.c:530
 #, c-format
 msgid "cannot read '%s'"
 msgstr "не удалось прочитать «%s»"
 
-#: builtin/gc.c:492
+#: builtin/gc.c:495
 #, c-format
 msgid ""
 "The last gc run reported the following. Please correct the root cause\n"
@@ -12153,64 +14144,196 @@ msgid ""
 "%s"
 msgstr "Последний запуск gc сообщил следующее. Пожалуйста, исправьте ошибку и удалите %s.\nАвтоматическая очистка репозитория не будет производиться, пока этот файл не удалён.\n\n%s"
 
-#: builtin/gc.c:540
+#: builtin/gc.c:543
 msgid "prune unreferenced objects"
 msgstr "почистить объекты, на которые нет ссылок"
 
-#: builtin/gc.c:542
+#: builtin/gc.c:545
 msgid "be more thorough (increased runtime)"
 msgstr "проверять более внимательно (занимает больше времени)"
 
-#: builtin/gc.c:543
+#: builtin/gc.c:546
 msgid "enable auto-gc mode"
 msgstr "включить режим auto-gc"
 
-#: builtin/gc.c:546
+#: builtin/gc.c:549
 msgid "force running gc even if there may be another gc running"
 msgstr "принудительно запустить gc, даже есть другая копия gc уже запущена"
 
-#: builtin/gc.c:549
+#: builtin/gc.c:552
 msgid "repack all other packs except the largest pack"
 msgstr ""
 
-#: builtin/gc.c:566
+#: builtin/gc.c:569
 #, c-format
 msgid "failed to parse gc.logexpiry value %s"
 msgstr ""
 
-#: builtin/gc.c:577
+#: builtin/gc.c:580
 #, c-format
 msgid "failed to parse prune expiry value %s"
 msgstr ""
 
-#: builtin/gc.c:597
+#: builtin/gc.c:600
 #, c-format
 msgid "Auto packing the repository in background for optimum performance.\n"
 msgstr "Автоматическая упаковка репозитория в фоне, для оптимальной производительности.\n"
 
-#: builtin/gc.c:599
+#: builtin/gc.c:602
 #, c-format
 msgid "Auto packing the repository for optimum performance.\n"
 msgstr "Автоматическая упаковка репозитория, для оптимальной производительности.\n"
 
-#: builtin/gc.c:600
+#: builtin/gc.c:603
 #, c-format
 msgid "See \"git help gc\" for manual housekeeping.\n"
 msgstr "Смотрите «git help gc» руководства по ручной очистке.\n"
 
-#: builtin/gc.c:640
+#: builtin/gc.c:643
 #, 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:693
+#: builtin/gc.c:698
 msgid ""
 "There are too many unreachable loose objects; run 'git prune' to remove "
 "them."
 msgstr "Имеется слишком много объектов, на которые нет ссылок; запустите «git prune» для их удаления."
 
-#: builtin/grep.c:29
+#: builtin/gc.c:708
+msgid ""
+"git maintenance run [--auto] [--[no-]quiet] [--task=<task>] [--schedule]"
+msgstr ""
+
+#: builtin/gc.c:738
+msgid "--no-schedule is not allowed"
+msgstr ""
+
+#: builtin/gc.c:743
+#, c-format
+msgid "unrecognized --schedule argument '%s'"
+msgstr ""
+
+#: builtin/gc.c:862
+msgid "failed to write commit-graph"
+msgstr ""
+
+#: builtin/gc.c:901
+msgid "failed to fill remotes"
+msgstr ""
+
+#: builtin/gc.c:1024
+msgid "failed to start 'git pack-objects' process"
+msgstr ""
+
+#: builtin/gc.c:1041
+msgid "failed to finish 'git pack-objects' process"
+msgstr ""
+
+#: builtin/gc.c:1093
+msgid "failed to write multi-pack-index"
+msgstr ""
+
+#: builtin/gc.c:1111
+msgid "'git multi-pack-index expire' failed"
+msgstr ""
+
+#: builtin/gc.c:1172
+msgid "'git multi-pack-index repack' failed"
+msgstr ""
+
+#: builtin/gc.c:1181
+msgid ""
+"skipping incremental-repack task because core.multiPackIndex is disabled"
+msgstr ""
+
+#: builtin/gc.c:1279
+#, c-format
+msgid "lock file '%s' exists, skipping maintenance"
+msgstr ""
+
+#: builtin/gc.c:1309
+#, c-format
+msgid "task '%s' failed"
+msgstr ""
+
+#: builtin/gc.c:1389
+#, c-format
+msgid "'%s' is not a valid task"
+msgstr ""
+
+#: builtin/gc.c:1394
+#, c-format
+msgid "task '%s' cannot be selected multiple times"
+msgstr ""
+
+#: builtin/gc.c:1409
+msgid "run tasks based on the state of the repository"
+msgstr ""
+
+#: builtin/gc.c:1410
+msgid "frequency"
+msgstr ""
+
+#: builtin/gc.c:1411
+msgid "run tasks based on frequency"
+msgstr ""
+
+#: builtin/gc.c:1414
+msgid "do not report progress or other information over stderr"
+msgstr ""
+
+#: builtin/gc.c:1415
+msgid "task"
+msgstr ""
+
+#: builtin/gc.c:1416
+msgid "run a specific task"
+msgstr ""
+
+#: builtin/gc.c:1433
+msgid "use at most one of --auto and --schedule=<frequency>"
+msgstr ""
+
+#: builtin/gc.c:1467
+msgid "failed to run 'git config'"
+msgstr ""
+
+#: builtin/gc.c:1512
+msgid "another process is scheduling background maintenance"
+msgstr ""
+
+#: builtin/gc.c:1525
+msgid "failed to run 'crontab -l'; your system might not support 'cron'"
+msgstr ""
+
+#: builtin/gc.c:1544
+msgid "failed to run 'crontab'; your system might not support 'cron'"
+msgstr ""
+
+#: builtin/gc.c:1550
+msgid "failed to open stdin of 'crontab'"
+msgstr ""
+
+#: builtin/gc.c:1592
+msgid "'crontab' died"
+msgstr ""
+
+#: builtin/gc.c:1605
+msgid "failed to add repo to global config"
+msgstr ""
+
+#: builtin/gc.c:1615
+msgid "git maintenance <subcommand> [<options>]"
+msgstr ""
+
+#: builtin/gc.c:1634
+#, c-format
+msgid "invalid subcommand: %s"
+msgstr ""
+
+#: builtin/grep.c:30
 msgid "git grep [<options>] [-e] <pattern> [<rev>...] [[--] <path>...]"
 msgstr "git grep [<опции>] [-e] <шаблон> [<редакция>…] [[--] <путь>…]"
 
@@ -12227,258 +14350,258 @@ msgstr "указано недопустимое количество поток
 #. TRANSLATORS: %s is the configuration
 #. variable for tweaking threads, currently
 #. grep.threads
-#: builtin/grep.c:287 builtin/index-pack.c:1514 builtin/index-pack.c:1705
-#: builtin/pack-objects.c:2720
+#: builtin/grep.c:287 builtin/index-pack.c:1576 builtin/index-pack.c:1766
+#: builtin/pack-objects.c:2936
 #, c-format
 msgid "no threads support, ignoring %s"
 msgstr "нет поддержки потоков, игнорирование %s"
 
-#: builtin/grep.c:466 builtin/grep.c:590 builtin/grep.c:631
+#: builtin/grep.c:475 builtin/grep.c:600 builtin/grep.c:640
 #, c-format
 msgid "unable to read tree (%s)"
 msgstr "не удалось прочитать дерево (%s)"
 
-#: builtin/grep.c:646
+#: builtin/grep.c:655
 #, c-format
 msgid "unable to grep from object of type %s"
 msgstr "не удалось выполнить grep из объекта типа %s"
 
-#: builtin/grep.c:712
+#: builtin/grep.c:736
 #, c-format
 msgid "switch `%c' expects a numerical value"
 msgstr "параметр «%c» ожидает числовое значение"
 
-#: builtin/grep.c:811
+#: builtin/grep.c:835
 msgid "search in index instead of in the work tree"
 msgstr "искать в индексе, а не в рабочем каталоге"
 
-#: builtin/grep.c:813
+#: builtin/grep.c:837
 msgid "find in contents not managed by git"
 msgstr "искать в содержимом не управляемым git"
 
-#: builtin/grep.c:815
+#: builtin/grep.c:839
 msgid "search in both tracked and untracked files"
 msgstr "искать и в отслеживаемых, и в неотслеживаемых файлах"
 
-#: builtin/grep.c:817
+#: builtin/grep.c:841
 msgid "ignore files specified via '.gitignore'"
 msgstr "игнорировать файлы указанные в «.gitignore»"
 
-#: builtin/grep.c:819
+#: builtin/grep.c:843
 msgid "recursively search in each submodule"
 msgstr "рекурсивный поиск по всем подмодулям"
 
-#: builtin/grep.c:822
+#: builtin/grep.c:846
 msgid "show non-matching lines"
 msgstr "искать в несовпадающих строках"
 
-#: builtin/grep.c:824
+#: builtin/grep.c:848
 msgid "case insensitive matching"
 msgstr "без учета регистра"
 
-#: builtin/grep.c:826
+#: builtin/grep.c:850
 msgid "match patterns only at word boundaries"
 msgstr "искать совпадения шаблона только на границах слов"
 
-#: builtin/grep.c:828
+#: builtin/grep.c:852
 msgid "process binary files as text"
 msgstr "обработка двоичных файлов как текста"
 
-#: builtin/grep.c:830
+#: builtin/grep.c:854
 msgid "don't match patterns in binary files"
 msgstr "не искать совпадения шаблона в двоичных файлах"
 
-#: builtin/grep.c:833
+#: builtin/grep.c:857
 msgid "process binary files with textconv filters"
 msgstr "обрабатываться двоичные файлы с помощью фильтров textconv"
 
-#: builtin/grep.c:835
+#: builtin/grep.c:859
 msgid "search in subdirectories (default)"
 msgstr ""
 
-#: builtin/grep.c:837
+#: builtin/grep.c:861
 msgid "descend at most <depth> levels"
 msgstr "на глубине максиму <глубина> уровней"
 
-#: builtin/grep.c:841
+#: builtin/grep.c:865
 msgid "use extended POSIX regular expressions"
 msgstr "использовать расширенные регулярные выражения POSIX"
 
-#: builtin/grep.c:844
+#: builtin/grep.c:868
 msgid "use basic POSIX regular expressions (default)"
 msgstr "использовать базовые регулярные выражения POSIX (по умолчанию)"
 
-#: builtin/grep.c:847
+#: builtin/grep.c:871
 msgid "interpret patterns as fixed strings"
 msgstr "интерпретировать шаблоны как фиксированные строки"
 
-#: builtin/grep.c:850
+#: builtin/grep.c:874
 msgid "use Perl-compatible regular expressions"
 msgstr "использовать Perl-совместимые регулярные выражения"
 
-#: builtin/grep.c:853
+#: builtin/grep.c:877
 msgid "show line numbers"
 msgstr "вывести номера строк"
 
-#: builtin/grep.c:854
+#: builtin/grep.c:878
 msgid "show column number of first match"
 msgstr ""
 
-#: builtin/grep.c:855
+#: builtin/grep.c:879
 msgid "don't show filenames"
 msgstr "не выводить имена файлов"
 
-#: builtin/grep.c:856
+#: builtin/grep.c:880
 msgid "show filenames"
 msgstr "выводить имена файлов"
 
-#: builtin/grep.c:858
+#: builtin/grep.c:882
 msgid "show filenames relative to top directory"
 msgstr "выводить имена файлов относительно каталога репозитория"
 
-#: builtin/grep.c:860
+#: builtin/grep.c:884
 msgid "show only filenames instead of matching lines"
 msgstr "выводить только имена файлов, а не совпадающие строки"
 
-#: builtin/grep.c:862
+#: builtin/grep.c:886
 msgid "synonym for --files-with-matches"
 msgstr "синоним для --files-with-matches"
 
-#: builtin/grep.c:865
+#: builtin/grep.c:889
 msgid "show only the names of files without match"
 msgstr "выводить только несовпадающие имена файлов"
 
-#: builtin/grep.c:867
+#: builtin/grep.c:891
 msgid "print NUL after filenames"
 msgstr "выводить двоичный НОЛЬ после списка имен файлов"
 
-#: builtin/grep.c:870
+#: builtin/grep.c:894
 msgid "show only matching parts of a line"
 msgstr ""
 
-#: builtin/grep.c:872
+#: builtin/grep.c:896
 msgid "show the number of matches instead of matching lines"
 msgstr "выводить количество совпадений, а не совпадающие строки"
 
-#: builtin/grep.c:873
+#: builtin/grep.c:897
 msgid "highlight matches"
 msgstr "подсвечивать совпадения"
 
-#: builtin/grep.c:875
+#: builtin/grep.c:899
 msgid "print empty line between matches from different files"
 msgstr "выводить пустую строку после совпадений из разных файлов"
 
-#: builtin/grep.c:877
+#: builtin/grep.c:901
 msgid "show filename only once above matches from same file"
 msgstr "выводить имя файла только раз на несколько совпадений в одном файле"
 
-#: builtin/grep.c:880
+#: builtin/grep.c:904
 msgid "show <n> context lines before and after matches"
 msgstr "показать <n> строк контекста перед и после совпадения"
 
-#: builtin/grep.c:883
+#: builtin/grep.c:907
 msgid "show <n> context lines before matches"
 msgstr "показать <n> строк контекста перед совпадением"
 
-#: builtin/grep.c:885
+#: builtin/grep.c:909
 msgid "show <n> context lines after matches"
 msgstr "показать <n> строк контекста после совпадения"
 
-#: builtin/grep.c:887
+#: builtin/grep.c:911
 msgid "use <n> worker threads"
 msgstr "использовать <кол> рабочих потоков"
 
-#: builtin/grep.c:888
+#: builtin/grep.c:912
 msgid "shortcut for -C NUM"
 msgstr "тоже, что и -C КОЛИЧЕСТВО"
 
-#: builtin/grep.c:891
+#: builtin/grep.c:915
 msgid "show a line with the function name before matches"
 msgstr "показать строку с именем функции перед совпадением"
 
-#: builtin/grep.c:893
+#: builtin/grep.c:917
 msgid "show the surrounding function"
 msgstr "показать окружающую функцию"
 
-#: builtin/grep.c:896
+#: builtin/grep.c:920
 msgid "read patterns from file"
 msgstr "прочитать шаблоны из файла"
 
-#: builtin/grep.c:898
+#: builtin/grep.c:922
 msgid "match <pattern>"
 msgstr "поиск соответствий с <шаблоном>"
 
-#: builtin/grep.c:900
+#: builtin/grep.c:924
 msgid "combine patterns specified with -e"
 msgstr "объединить шаблоны указанные с помощью -e"
 
-#: builtin/grep.c:912
+#: builtin/grep.c:936
 msgid "indicate hit with exit status without output"
 msgstr "ничего не выводить, указать на совпадение с помощью кода выхода"
 
-#: builtin/grep.c:914
+#: builtin/grep.c:938
 msgid "show only matches from files that match all patterns"
 msgstr "показать только совпадения из файлов в которых совпадают все шаблоны"
 
-#: builtin/grep.c:916
+#: builtin/grep.c:940
 msgid "show parse tree for grep expression"
 msgstr "показать дерево разбора для выражения поиска"
 
-#: builtin/grep.c:920
+#: builtin/grep.c:944
 msgid "pager"
 msgstr "пейджер"
 
-#: builtin/grep.c:920
+#: builtin/grep.c:944
 msgid "show matching files in the pager"
 msgstr "показать совпадающие файлы с помощью программы-пейджера"
 
-#: builtin/grep.c:924
+#: builtin/grep.c:948
 msgid "allow calling of grep(1) (ignored by this build)"
 msgstr "разрешить вызов grep(1) (игнорируется в этой сборке)"
 
-#: builtin/grep.c:988
+#: builtin/grep.c:1014
 msgid "no pattern given"
 msgstr ""
 
-#: builtin/grep.c:1024
+#: builtin/grep.c:1050
 msgid "--no-index or --untracked cannot be used with revs"
 msgstr "--no-index или --untracked нельзя использовать одновременно с указанием ревизии"
 
-#: builtin/grep.c:1032
+#: builtin/grep.c:1058
 #, c-format
 msgid "unable to resolve revision: %s"
 msgstr "не удалось определить редакцию: %s"
 
-#: builtin/grep.c:1063
+#: builtin/grep.c:1088
+msgid "--untracked not supported with --recurse-submodules"
+msgstr ""
+
+#: builtin/grep.c:1092
 msgid "invalid option combination, ignoring --threads"
 msgstr ""
 
-#: builtin/grep.c:1066 builtin/pack-objects.c:3403
+#: builtin/grep.c:1095 builtin/pack-objects.c:3655
 msgid "no threads support, ignoring --threads"
 msgstr "нет поддержки потоков, игнорирование --threads"
 
-#: builtin/grep.c:1069 builtin/index-pack.c:1511 builtin/pack-objects.c:2717
+#: builtin/grep.c:1098 builtin/index-pack.c:1573 builtin/pack-objects.c:2933
 #, c-format
 msgid "invalid number of threads specified (%d)"
 msgstr "указано неправильное количество потоков (%d)"
 
-#: builtin/grep.c:1092
+#: builtin/grep.c:1132
 msgid "--open-files-in-pager only works on the worktree"
 msgstr "--open-files-in-pager работает только в рабочем каталоге"
 
-#: builtin/grep.c:1115
-msgid "option not supported with --recurse-submodules"
-msgstr ""
-
-#: builtin/grep.c:1121
+#: builtin/grep.c:1158
 msgid "--cached or --untracked cannot be used with --no-index"
 msgstr ""
 
-#: builtin/grep.c:1127
+#: builtin/grep.c:1164
 msgid "--[no-]exclude-standard cannot be used for tracked contents"
 msgstr ""
 
-#: builtin/grep.c:1135
+#: builtin/grep.c:1172
 msgid "both --cached and trees are given"
 msgstr ""
 
@@ -12492,10 +14615,6 @@ msgstr "git hash-object [-t <тип>] [-w] [--path=<файл> | --no-filters] [-
 msgid "git hash-object  --stdin-paths"
 msgstr "git hash-object  --stdin-paths"
 
-#: builtin/hash-object.c:98
-msgid "type"
-msgstr "тип"
-
 #: builtin/hash-object.c:98
 msgid "object type"
 msgstr "тип объекта"
@@ -12515,133 +14634,133 @@ msgstr "сохранить файл без использования фильт
 #: builtin/hash-object.c:104
 msgid ""
 "just hash any random garbage to create corrupt objects for debugging Git"
-msgstr "хешировать любой мусор и создавать поврежденные объекты для отладки Git"
+msgstr "хэшировать любой мусор и создавать поврежденные объекты для отладки Git"
 
 #: builtin/hash-object.c:105
 msgid "process file as it were from this path"
 msgstr "обработать файл так, будто он находится по указанному пути"
 
-#: builtin/help.c:46
+#: builtin/help.c:47
 msgid "print all available commands"
 msgstr "вывести список всех доступных команд"
 
-#: builtin/help.c:47
+#: builtin/help.c:48
 msgid "exclude guides"
 msgstr "исключить руководства"
 
-#: builtin/help.c:48
+#: builtin/help.c:49
 msgid "print list of useful guides"
 msgstr "вывести список полезных руководств"
 
-#: builtin/help.c:49
+#: builtin/help.c:50
 msgid "print all configuration variable names"
 msgstr ""
 
-#: builtin/help.c:51
+#: builtin/help.c:52
 msgid "show man page"
 msgstr "открыть руководство в формате man"
 
-#: builtin/help.c:52
+#: builtin/help.c:53
 msgid "show manual in web browser"
 msgstr "открыть руководство в веб-браузере"
 
-#: builtin/help.c:54
+#: builtin/help.c:55
 msgid "show info page"
 msgstr "открыть руководство в формате info"
 
-#: builtin/help.c:56
+#: builtin/help.c:57
 msgid "print command description"
 msgstr ""
 
-#: builtin/help.c:61
+#: builtin/help.c:62
 msgid "git help [--all] [--guides] [--man | --web | --info] [<command>]"
 msgstr "git help [--all] [--guides] [--man | --web | --info] [<команда>]"
 
-#: builtin/help.c:77
+#: builtin/help.c:163
 #, c-format
 msgid "unrecognized help format '%s'"
 msgstr "неопознанный формат руководства «%s»"
 
-#: builtin/help.c:104
+#: builtin/help.c:190
 msgid "Failed to start emacsclient."
 msgstr "Сбой при запуске emacsclient."
 
-#: builtin/help.c:117
+#: builtin/help.c:203
 msgid "Failed to parse emacsclient version."
 msgstr "Сбой при определении версии emacsclient."
 
-#: builtin/help.c:125
+#: builtin/help.c:211
 #, c-format
 msgid "emacsclient version '%d' too old (< 22)."
 msgstr "версия emacsclient «%d» слишком старая (< 22)."
 
-#: builtin/help.c:143 builtin/help.c:165 builtin/help.c:175 builtin/help.c:183
+#: builtin/help.c:229 builtin/help.c:251 builtin/help.c:261 builtin/help.c:269
 #, c-format
 msgid "failed to exec '%s'"
 msgstr "сбой при запуске «%s»"
 
-#: builtin/help.c:221
+#: builtin/help.c:307
 #, c-format
 msgid ""
 "'%s': path for unsupported man viewer.\n"
 "Please consider using 'man.<tool>.cmd' instead."
 msgstr "«%s»: путь для неподдерживаемой программы просмотра man.\nВместо этого используйте «man.<программа>.cmd»."
 
-#: builtin/help.c:233
+#: builtin/help.c:319
 #, c-format
 msgid ""
 "'%s': cmd for supported man viewer.\n"
 "Please consider using 'man.<tool>.path' instead."
 msgstr "«%s»: команда для неподдерживаемой программы просмотра man.\nВместо этого используйте «man.<программа>.path»."
 
-#: builtin/help.c:350
+#: builtin/help.c:436
 #, c-format
 msgid "'%s': unknown man viewer."
 msgstr "«%s»: неизвестная программа просмотра man."
 
-#: builtin/help.c:367
+#: builtin/help.c:453
 msgid "no man viewer handled the request"
 msgstr "программа просмотра man не обработала запрос"
 
-#: builtin/help.c:375
+#: builtin/help.c:461
 msgid "no info viewer handled the request"
 msgstr "программа просмотра info не обработала запрос"
 
-#: builtin/help.c:434 builtin/help.c:445 git.c:335
+#: builtin/help.c:520 builtin/help.c:531 git.c:337
 #, c-format
 msgid "'%s' is aliased to '%s'"
 msgstr "«%s» — это сокращение для «%s»"
 
-#: builtin/help.c:448 git.c:364
+#: builtin/help.c:534 git.c:369
 #, c-format
 msgid "bad alias.%s string: %s"
 msgstr ""
 
-#: builtin/help.c:477 builtin/help.c:507
+#: builtin/help.c:563 builtin/help.c:593
 #, c-format
 msgid "usage: %s%s"
 msgstr "использование: %s%s"
 
-#: builtin/help.c:491
+#: builtin/help.c:577
 msgid "'git help config' for more information"
 msgstr ""
 
-#: builtin/index-pack.c:184
+#: builtin/index-pack.c:221
 #, c-format
 msgid "object type mismatch at %s"
 msgstr "несоответствие типа объекта на %s"
 
-#: builtin/index-pack.c:204
+#: builtin/index-pack.c:241
 #, c-format
 msgid "did not receive expected object %s"
 msgstr "ожидаемый объект не получен на %s"
 
-#: builtin/index-pack.c:207
+#: builtin/index-pack.c:244
 #, c-format
 msgid "object %s: expected type %s, found %s"
 msgstr "объект %s: ожидаемый тип %s, получен %s"
 
-#: builtin/index-pack.c:257
+#: builtin/index-pack.c:294
 #, c-format
 msgid "cannot fill %d byte"
 msgid_plural "cannot fill %d bytes"
@@ -12650,73 +14769,73 @@ msgstr[1] "не удалось заполнить %d байта"
 msgstr[2] "не удалось заполнить %d байтов"
 msgstr[3] "не удалось заполнить %d байтов"
 
-#: builtin/index-pack.c:267
+#: builtin/index-pack.c:304
 msgid "early EOF"
 msgstr "неожиданный конец файла"
 
-#: builtin/index-pack.c:268
+#: builtin/index-pack.c:305
 msgid "read error on input"
 msgstr "ошибка чтения ввода"
 
-#: builtin/index-pack.c:280
+#: builtin/index-pack.c:317
 msgid "used more bytes than were available"
 msgstr "использовано больше байт, чем было доступно"
 
-#: builtin/index-pack.c:287 builtin/pack-objects.c:600
+#: builtin/index-pack.c:324 builtin/pack-objects.c:619
 msgid "pack too large for current definition of off_t"
 msgstr "пакет слишком большой для текущего определения off_t"
 
-#: builtin/index-pack.c:290 builtin/unpack-objects.c:94
+#: builtin/index-pack.c:327 builtin/unpack-objects.c:95
 msgid "pack exceeds maximum allowed size"
 msgstr "размер пакета превышает максимальный допустимый"
 
-#: builtin/index-pack.c:305 builtin/repack.c:250
+#: builtin/index-pack.c:342 builtin/repack.c:286
 #, c-format
 msgid "unable to create '%s'"
 msgstr "не удалось создать «%s»"
 
-#: builtin/index-pack.c:311
+#: builtin/index-pack.c:348
 #, c-format
 msgid "cannot open packfile '%s'"
 msgstr "не удалось открыть файл пакета «%s»"
 
-#: builtin/index-pack.c:325
+#: builtin/index-pack.c:362
 msgid "pack signature mismatch"
 msgstr "несоответствие подписи пакета"
 
-#: builtin/index-pack.c:327
+#: builtin/index-pack.c:364
 #, c-format
 msgid "pack version %<PRIu32> unsupported"
 msgstr "версия пакета %<PRIu32> не поддерживается"
 
-#: builtin/index-pack.c:345
+#: builtin/index-pack.c:382
 #, c-format
 msgid "pack has bad object at offset %<PRIuMAX>: %s"
 msgstr "пакет содержит плохой объект по смещению %<PRIuMAX>: %s"
 
-#: builtin/index-pack.c:465
+#: builtin/index-pack.c:488
 #, c-format
 msgid "inflate returned %d"
 msgstr "программа сжатия вернула %d"
 
-#: builtin/index-pack.c:514
+#: builtin/index-pack.c:537
 msgid "offset value overflow for delta base object"
 msgstr "переполнение значения смещения у базового объекта дельты"
 
-#: builtin/index-pack.c:522
+#: builtin/index-pack.c:545
 msgid "delta base offset is out of bound"
 msgstr "смещение базовой дельты вышло за допустимые пределы"
 
-#: builtin/index-pack.c:530
+#: builtin/index-pack.c:553
 #, c-format
 msgid "unknown object type %d"
 msgstr "неизвестный тип объекта %d"
 
-#: builtin/index-pack.c:561
+#: builtin/index-pack.c:584
 msgid "cannot pread pack file"
 msgstr "не удалось выполнить pread для файла пакета"
 
-#: builtin/index-pack.c:563
+#: builtin/index-pack.c:586
 #, c-format
 msgid "premature end of pack file, %<PRIuMAX> byte missing"
 msgid_plural "premature end of pack file, %<PRIuMAX> bytes missing"
@@ -12725,88 +14844,88 @@ msgstr[1] "преждевременное окончание файла паке
 msgstr[2] "преждевременное окончание файла пакета, %<PRIuMAX> байтов отсутствует"
 msgstr[3] "преждевременное окончание файла пакета, %<PRIuMAX> байтов отсутствует"
 
-#: builtin/index-pack.c:589
+#: builtin/index-pack.c:612
 msgid "serious inflate inconsistency"
 msgstr "серьезное несоответствие при распаковке"
 
-#: builtin/index-pack.c:734 builtin/index-pack.c:740 builtin/index-pack.c:763
-#: builtin/index-pack.c:802 builtin/index-pack.c:811
+#: builtin/index-pack.c:757 builtin/index-pack.c:763 builtin/index-pack.c:787
+#: builtin/index-pack.c:826 builtin/index-pack.c:835
 #, c-format
 msgid "SHA1 COLLISION FOUND WITH %s !"
 msgstr "НАЙДЕНА КОЛЛИЗИЯ SHA1 С %s !"
 
-#: builtin/index-pack.c:737 builtin/pack-objects.c:153
-#: builtin/pack-objects.c:213 builtin/pack-objects.c:307
+#: builtin/index-pack.c:760 builtin/pack-objects.c:171
+#: builtin/pack-objects.c:231 builtin/pack-objects.c:326
 #, c-format
 msgid "unable to read %s"
 msgstr "не удалось прочитать %s"
 
-#: builtin/index-pack.c:800
+#: builtin/index-pack.c:824
 #, c-format
 msgid "cannot read existing object info %s"
 msgstr "не удалось прочитать информацию существующего объекта %s"
 
-#: builtin/index-pack.c:808
+#: builtin/index-pack.c:832
 #, c-format
 msgid "cannot read existing object %s"
 msgstr "не удалось прочитать существующий объект %s"
 
-#: builtin/index-pack.c:822
+#: builtin/index-pack.c:846
 #, c-format
 msgid "invalid blob object %s"
 msgstr "неправильный файл двоичного объекта %s"
 
-#: builtin/index-pack.c:825 builtin/index-pack.c:844
+#: builtin/index-pack.c:849 builtin/index-pack.c:868
 msgid "fsck error in packed object"
 msgstr ""
 
-#: builtin/index-pack.c:846
+#: builtin/index-pack.c:870
 #, c-format
 msgid "Not all child objects of %s are reachable"
 msgstr "Не все дочерние объекты %s достижимы"
 
-#: builtin/index-pack.c:918 builtin/index-pack.c:949
+#: builtin/index-pack.c:931 builtin/index-pack.c:978
 msgid "failed to apply delta"
 msgstr "сбой при применении дельты"
 
-#: builtin/index-pack.c:1117
+#: builtin/index-pack.c:1161
 msgid "Receiving objects"
 msgstr "Получение объектов"
 
-#: builtin/index-pack.c:1117
+#: builtin/index-pack.c:1161
 msgid "Indexing objects"
 msgstr "Индексирование объектов"
 
-#: builtin/index-pack.c:1151
+#: builtin/index-pack.c:1195
 msgid "pack is corrupted (SHA1 mismatch)"
 msgstr "пакет поврежден (несоответствие SHA1)"
 
-#: builtin/index-pack.c:1156
+#: builtin/index-pack.c:1200
 msgid "cannot fstat packfile"
 msgstr "не удалось выполнить fstat для файла пакета"
 
-#: builtin/index-pack.c:1159
+#: builtin/index-pack.c:1203
 msgid "pack has junk at the end"
 msgstr "файл пакета содержит мусор в конце"
 
-#: builtin/index-pack.c:1171
+#: builtin/index-pack.c:1215
 msgid "confusion beyond insanity in parse_pack_objects()"
 msgstr "безумная путаница в parse_pack_objects()"
 
-#: builtin/index-pack.c:1194
+#: builtin/index-pack.c:1238
 msgid "Resolving deltas"
 msgstr "Определение изменений"
 
-#: builtin/index-pack.c:1204 builtin/pack-objects.c:2489
+#: builtin/index-pack.c:1249 builtin/pack-objects.c:2697
 #, c-format
 msgid "unable to create thread: %s"
 msgstr "не удалось создать поток: %s"
 
-#: builtin/index-pack.c:1245
+#: builtin/index-pack.c:1282
 msgid "confusion beyond insanity"
 msgstr "безумная путаница"
 
-#: builtin/index-pack.c:1251
+#: builtin/index-pack.c:1288
 #, c-format
 msgid "completed with %d local object"
 msgid_plural "completed with %d local objects"
@@ -12815,12 +14934,12 @@ msgstr[1] "завершено с %d локальными объектами"
 msgstr[2] "завершено с %d локальными объектами"
 msgstr[3] "завершено с %d локальными объектами"
 
-#: builtin/index-pack.c:1263
+#: builtin/index-pack.c:1300
 #, c-format
 msgid "Unexpected tail checksum for %s (disk corruption?)"
 msgstr "Неожиданная контрольная сумма в конце %s (диск поврежден?)"
 
-#: builtin/index-pack.c:1267
+#: builtin/index-pack.c:1304
 #, c-format
 msgid "pack has %d unresolved delta"
 msgid_plural "pack has %d unresolved deltas"
@@ -12829,59 +14948,59 @@ msgstr[1] "пакет содержит %d неразрешенные дельт
 msgstr[2] "пакет содержит %d неразрешенных дельт"
 msgstr[3] "пакет содержит %d неразрешенных дельт"
 
-#: builtin/index-pack.c:1291
+#: builtin/index-pack.c:1328
 #, c-format
 msgid "unable to deflate appended object (%d)"
 msgstr "нельзя сжать присоединенный объект (%d)"
 
-#: builtin/index-pack.c:1368
+#: builtin/index-pack.c:1424
 #, c-format
 msgid "local object %s is corrupt"
 msgstr "локальный объект %s поврежден"
 
-#: builtin/index-pack.c:1382
+#: builtin/index-pack.c:1444
 #, c-format
 msgid "packfile name '%s' does not end with '.pack'"
 msgstr "имя пакета «%s» не оканчивается на «.pack»"
 
-#: builtin/index-pack.c:1407
+#: builtin/index-pack.c:1469
 #, c-format
 msgid "cannot write %s file '%s'"
 msgstr ""
 
-#: builtin/index-pack.c:1415
+#: builtin/index-pack.c:1477
 #, c-format
 msgid "cannot close written %s file '%s'"
 msgstr ""
 
-#: builtin/index-pack.c:1439
+#: builtin/index-pack.c:1501
 msgid "error while closing pack file"
 msgstr "ошибка при закрытии файла пакета"
 
-#: builtin/index-pack.c:1453
+#: builtin/index-pack.c:1515
 msgid "cannot store pack file"
 msgstr "не удалось сохранить файл пакета"
 
-#: builtin/index-pack.c:1461
+#: builtin/index-pack.c:1523
 msgid "cannot store index file"
 msgstr "не удалось сохранить файл индекса"
 
-#: builtin/index-pack.c:1505 builtin/pack-objects.c:2728
+#: builtin/index-pack.c:1567 builtin/pack-objects.c:2944
 #, c-format
 msgid "bad pack.indexversion=%<PRIu32>"
 msgstr "плохой pack.indexversion=%<PRIu32>"
 
-#: builtin/index-pack.c:1573
+#: builtin/index-pack.c:1631
 #, c-format
 msgid "Cannot open existing pack file '%s'"
 msgstr "Не удалось открыть существующий файл пакета «%s»"
 
-#: builtin/index-pack.c:1575
+#: builtin/index-pack.c:1633
 #, c-format
 msgid "Cannot open existing pack idx file for '%s'"
 msgstr "Не удалось открыть существующий файл индекса для «%s»"
 
-#: builtin/index-pack.c:1623
+#: builtin/index-pack.c:1681
 #, c-format
 msgid "non delta: %d object"
 msgid_plural "non delta: %d objects"
@@ -12890,7 +15009,7 @@ msgstr[1] "не дельты: %d объекта"
 msgstr[2] "не дельты: %d объектов"
 msgstr[3] "не дельты: %d объектов"
 
-#: builtin/index-pack.c:1630
+#: builtin/index-pack.c:1688
 #, c-format
 msgid "chain length = %d: %lu object"
 msgid_plural "chain length = %d: %lu objects"
@@ -12899,698 +15018,761 @@ msgstr[1] "длина цепочки = %d: %lu объекта"
 msgstr[2] "длина цепочки = %d: %lu объектов"
 msgstr[3] "длина цепочки = %d: %lu объектов"
 
-#: builtin/index-pack.c:1667
+#: builtin/index-pack.c:1728
 msgid "Cannot come back to cwd"
 msgstr "Не удалось вернуться в текущий рабочий каталог"
 
-#: builtin/index-pack.c:1716 builtin/index-pack.c:1719
-#: builtin/index-pack.c:1735 builtin/index-pack.c:1739
+#: builtin/index-pack.c:1777 builtin/index-pack.c:1780
+#: builtin/index-pack.c:1796 builtin/index-pack.c:1800
 #, c-format
 msgid "bad %s"
 msgstr "плохой %s"
 
-#: builtin/index-pack.c:1755
+#: builtin/index-pack.c:1806 builtin/init-db.c:392 builtin/init-db.c:625
+#, c-format
+msgid "unknown hash algorithm '%s'"
+msgstr ""
+
+#: builtin/index-pack.c:1821
 msgid "--fix-thin cannot be used without --stdin"
 msgstr "--fix-thin нельзя использовать без --stdin"
 
-#: builtin/index-pack.c:1757
+#: builtin/index-pack.c:1823
 msgid "--stdin requires a git repository"
 msgstr "опция --stdin требует наличия репозитория git"
 
-#: builtin/index-pack.c:1763
+#: builtin/index-pack.c:1825
+msgid "--object-format cannot be used with --stdin"
+msgstr ""
+
+#: builtin/index-pack.c:1831
 msgid "--verify with no packfile name given"
 msgstr "--verify без указания имени файла пакета"
 
-#: builtin/index-pack.c:1811 builtin/unpack-objects.c:580
+#: builtin/index-pack.c:1892 builtin/unpack-objects.c:582
 msgid "fsck error in pack objects"
-msgstr ""
+msgstr "ошибка fsck в упакованных объектах"
 
-#: builtin/init-db.c:61
+#: builtin/init-db.c:64
 #, c-format
 msgid "cannot stat template '%s'"
 msgstr "не удалось выполнить stat для шаблона «%s»"
 
-#: builtin/init-db.c:66
+#: builtin/init-db.c:69
 #, c-format
 msgid "cannot opendir '%s'"
 msgstr "не удалось выполнить opendir для «%s»"
 
-#: builtin/init-db.c:78
+#: builtin/init-db.c:81
 #, c-format
 msgid "cannot readlink '%s'"
 msgstr "не удалось выполнить readlink для «%s»"
 
-#: builtin/init-db.c:80
+#: builtin/init-db.c:83
 #, c-format
 msgid "cannot symlink '%s' '%s'"
 msgstr "не удалось создать символьную ссылку «%s» на «%s»"
 
-#: builtin/init-db.c:86
+#: builtin/init-db.c:89
 #, c-format
 msgid "cannot copy '%s' to '%s'"
 msgstr "не удалось скопировать файл «%s» в «%s»"
 
-#: builtin/init-db.c:90
+#: builtin/init-db.c:93
 #, c-format
 msgid "ignoring template %s"
 msgstr "игнорирование шаблона %s"
 
-#: builtin/init-db.c:121
+#: builtin/init-db.c:124
 #, c-format
 msgid "templates not found in %s"
 msgstr ""
 
-#: builtin/init-db.c:136
+#: builtin/init-db.c:139
 #, c-format
 msgid "not copying templates from '%s': %s"
 msgstr "не копирую шаблоны из «%s»: %s"
 
-#: builtin/init-db.c:334
+#: builtin/init-db.c:275
+#, c-format
+msgid "invalid initial branch name: '%s'"
+msgstr ""
+
+#: builtin/init-db.c:367
 #, c-format
 msgid "unable to handle file type %d"
 msgstr "не удается обработать файл типа %d"
 
-#: builtin/init-db.c:337
+#: builtin/init-db.c:370
 #, c-format
 msgid "unable to move %s to %s"
 msgstr "не удается переместить файл %s в %s"
 
-#: builtin/init-db.c:354 builtin/init-db.c:357
+#: builtin/init-db.c:386
+msgid "attempt to reinitialize repository with different hash"
+msgstr ""
+
+#: builtin/init-db.c:410 builtin/init-db.c:413
 #, c-format
 msgid "%s already exists"
 msgstr "%s уже существует"
 
-#: builtin/init-db.c:413
+#: builtin/init-db.c:445
+#, c-format
+msgid "re-init: ignored --initial-branch=%s"
+msgstr ""
+
+#: builtin/init-db.c:476
 #, c-format
 msgid "Reinitialized existing shared Git repository in %s%s\n"
 msgstr "Переинициализирован существующий общий репозиторий Git в %s%s\n"
 
-#: builtin/init-db.c:414
+#: builtin/init-db.c:477
 #, c-format
 msgid "Reinitialized existing Git repository in %s%s\n"
 msgstr "Переинициализирован существующий репозиторий Git в %s%s\n"
 
-#: builtin/init-db.c:418
+#: builtin/init-db.c:481
 #, c-format
 msgid "Initialized empty shared Git repository in %s%s\n"
 msgstr "Инициализирован пустой общий репозиторий Git в %s%s\n"
 
-#: builtin/init-db.c:419
+#: builtin/init-db.c:482
 #, c-format
 msgid "Initialized empty Git repository in %s%s\n"
 msgstr "Инициализирован пустой репозиторий Git в %s%s\n"
 
-#: builtin/init-db.c:468
+#: builtin/init-db.c:531
 msgid ""
 "git init [-q | --quiet] [--bare] [--template=<template-directory>] "
 "[--shared[=<permissions>]] [<directory>]"
 msgstr "git init [-q | --quiet] [--bare] [--template=<каталог-шаблонов>] [--shared[=<права-доступа>]] [<каталог>]"
 
-#: builtin/init-db.c:491
+#: builtin/init-db.c:557
 msgid "permissions"
 msgstr "права-доступа"
 
-#: builtin/init-db.c:492
+#: builtin/init-db.c:558
 msgid "specify that the git repository is to be shared amongst several users"
 msgstr "укажите, если репозиторий git будет использоваться несколькими пользователями"
 
-#: builtin/init-db.c:526 builtin/init-db.c:531
+#: builtin/init-db.c:564
+msgid "override the name of the initial branch"
+msgstr ""
+
+#: builtin/init-db.c:565 builtin/verify-pack.c:74
+msgid "hash"
+msgstr "хэш-код"
+
+#: builtin/init-db.c:566 builtin/show-index.c:22 builtin/verify-pack.c:75
+msgid "specify the hash algorithm to use"
+msgstr "указание какой алгоритм хэширования использовать"
+
+#: builtin/init-db.c:573
+msgid "--separate-git-dir and --bare are mutually exclusive"
+msgstr ""
+
+#: builtin/init-db.c:602 builtin/init-db.c:607
 #, c-format
 msgid "cannot mkdir %s"
 msgstr "не удалось выполнить mkdir %s"
 
-#: builtin/init-db.c:535
+#: builtin/init-db.c:611 builtin/init-db.c:666
 #, c-format
 msgid "cannot chdir to %s"
 msgstr "не удалось выполнить chdir в %s"
 
-#: builtin/init-db.c:556
+#: builtin/init-db.c:638
 #, c-format
 msgid ""
 "%s (or --work-tree=<directory>) not allowed without specifying %s (or --git-"
 "dir=<directory>)"
 msgstr "%s (или --work-tree=<каталог>) нельзя использовать без указания %s (или --git-dir=<каталог>)"
 
-#: builtin/init-db.c:584
+#: builtin/init-db.c:690
 #, c-format
 msgid "Cannot access work tree '%s'"
 msgstr "Не удалось получить доступ к рабочему каталогу «%s»"
 
-#: builtin/interpret-trailers.c:15
+#: builtin/init-db.c:695
+msgid "--separate-git-dir incompatible with bare repository"
+msgstr ""
+
+#: builtin/interpret-trailers.c:16
 msgid ""
 "git interpret-trailers [--in-place] [--trim-empty] [(--trailer "
 "<token>[(=|:)<value>])...] [<file>...]"
 msgstr "git interpret-trailers [--in-place] [--trim-empty] [(--trailer <ключ>[(=|:)<значение>])…] [<файл>…]"
 
-#: builtin/interpret-trailers.c:94
+#: builtin/interpret-trailers.c:95
 msgid "edit files in place"
 msgstr "редактировать файлы на месте"
 
-#: builtin/interpret-trailers.c:95
+#: builtin/interpret-trailers.c:96
 msgid "trim empty trailers"
 msgstr "удалять пустые завершители"
 
-#: builtin/interpret-trailers.c:98
+#: builtin/interpret-trailers.c:99
 msgid "where to place the new trailer"
 msgstr "где поместить новый завершитель"
 
-#: builtin/interpret-trailers.c:100
+#: builtin/interpret-trailers.c:101
 msgid "action if trailer already exists"
 msgstr "действие, если завершитель уже существует"
 
-#: builtin/interpret-trailers.c:102
+#: builtin/interpret-trailers.c:103
 msgid "action if trailer is missing"
 msgstr "действие, если завершитель не существует"
 
-#: builtin/interpret-trailers.c:104
+#: builtin/interpret-trailers.c:105
 msgid "output only the trailers"
 msgstr "вывести только завершители"
 
-#: builtin/interpret-trailers.c:105
+#: builtin/interpret-trailers.c:106
 msgid "do not apply config rules"
 msgstr "не применять правила из файла конфигурации"
 
-#: builtin/interpret-trailers.c:106
+#: builtin/interpret-trailers.c:107
 msgid "join whitespace-continued values"
 msgstr "объединить значения разделенные пробелом"
 
-#: builtin/interpret-trailers.c:107
+#: builtin/interpret-trailers.c:108
 msgid "set parsing options"
 msgstr "указание опций разбора"
 
-#: builtin/interpret-trailers.c:109
+#: builtin/interpret-trailers.c:110
 msgid "do not treat --- specially"
-msgstr ""
+msgstr "не воспринимать --- по-особенному"
 
-#: builtin/interpret-trailers.c:110
+#: builtin/interpret-trailers.c:111
 msgid "trailer"
 msgstr "завершитель"
 
-#: builtin/interpret-trailers.c:111
+#: builtin/interpret-trailers.c:112
 msgid "trailer(s) to add"
 msgstr "завершители для добавления"
 
-#: builtin/interpret-trailers.c:120
+#: builtin/interpret-trailers.c:123
 msgid "--trailer with --only-input does not make sense"
 msgstr "--trailer одновременно с --only-input не имеет смысла"
 
-#: builtin/interpret-trailers.c:130
+#: builtin/interpret-trailers.c:133
 msgid "no input file given for in-place editing"
 msgstr "ничего не передано, для редактирования файлов на месте"
 
-#: builtin/log.c:55
+#: builtin/log.c:58
 msgid "git log [<options>] [<revision-range>] [[--] <path>...]"
 msgstr "git log [<опции>] [<диапазон-редакций>] [[--] <путь>…]"
 
-#: builtin/log.c:56
+#: builtin/log.c:59
 msgid "git show [<options>] <object>..."
 msgstr "git show [<опции>] <объект>…"
 
-#: builtin/log.c:104
+#: builtin/log.c:112
 #, c-format
 msgid "invalid --decorate option: %s"
 msgstr "неправильный параметр для --decorate: %s"
 
-#: builtin/log.c:168
+#: builtin/log.c:179
 msgid "show source"
 msgstr "показать источник"
 
-#: builtin/log.c:169
+#: builtin/log.c:180
 msgid "Use mail map file"
 msgstr "Использовать файл соответствия почтовых адресов"
 
-#: builtin/log.c:171
+#: builtin/log.c:183
 msgid "only decorate refs that match <pattern>"
 msgstr "декорировать только ссылки соответствующие <шаблону>"
 
-#: builtin/log.c:173
+#: builtin/log.c:185
 msgid "do not decorate refs that match <pattern>"
 msgstr "не декорировать ссылки соответствующие <шаблону>"
 
-#: builtin/log.c:174
+#: builtin/log.c:186
 msgid "decorate options"
 msgstr "опции формата вывода ссылок"
 
-#: builtin/log.c:177
-msgid "Process line range n,m in file, counting from 1"
-msgstr "Обработать диапазон строк n,m из файла, начиная с 1"
+#: builtin/log.c:189
+msgid ""
+"Trace the evolution of line range <start>,<end> or function :<funcname> in "
+"<file>"
+msgstr ""
+
+#: builtin/log.c:212
+msgid "-L<range>:<file> cannot be used with pathspec"
+msgstr ""
 
-#: builtin/log.c:275
+#: builtin/log.c:302
 #, c-format
 msgid "Final output: %d %s\n"
 msgstr "Финальный вывод: %d %s\n"
 
-#: builtin/log.c:529
+#: builtin/log.c:564
 #, c-format
 msgid "git show %s: bad file"
 msgstr "git show %s: плохой файл"
 
-#: builtin/log.c:544 builtin/log.c:638
+#: builtin/log.c:579 builtin/log.c:674
 #, c-format
 msgid "could not read object %s"
 msgstr ""
 
-#: builtin/log.c:663
+#: builtin/log.c:699
 #, c-format
 msgid "unknown type: %d"
 msgstr ""
 
-#: builtin/log.c:784
+#: builtin/log.c:848
+#, c-format
+msgid "%s: invalid cover from description mode"
+msgstr ""
+
+#: builtin/log.c:855
 msgid "format.headers without value"
 msgstr "в format.headers не указано значение"
 
-#: builtin/log.c:885
-msgid "name of output directory is too long"
-msgstr "слишком длинное имя выходного каталога"
-
-#: builtin/log.c:901
+#: builtin/log.c:984
 #, c-format
 msgid "cannot open patch file %s"
 msgstr ""
 
-#: builtin/log.c:918
+#: builtin/log.c:1001
 msgid "need exactly one range"
 msgstr ""
 
-#: builtin/log.c:928
+#: builtin/log.c:1011
 msgid "not a range"
 msgstr ""
 
-#: builtin/log.c:1051
+#: builtin/log.c:1175
 msgid "cover letter needs email format"
 msgstr ""
 
-#: builtin/log.c:1057
+#: builtin/log.c:1181
 msgid "failed to create cover-letter file"
 msgstr ""
 
-#: builtin/log.c:1136
+#: builtin/log.c:1262
 #, c-format
 msgid "insane in-reply-to: %s"
 msgstr "ошибка в поле in-reply-to: %s"
 
-#: builtin/log.c:1163
+#: builtin/log.c:1289
 msgid "git format-patch [<options>] [<since> | <revision-range>]"
 msgstr "git format-patch [<опции>] [<начиная-с> | <диапазон-редакций>]"
 
-#: builtin/log.c:1221
+#: builtin/log.c:1347
 msgid "two output directories?"
 msgstr ""
 
-#: builtin/log.c:1332 builtin/log.c:2076 builtin/log.c:2078 builtin/log.c:2090
+#: builtin/log.c:1498 builtin/log.c:2318 builtin/log.c:2320 builtin/log.c:2332
 #, c-format
 msgid "unknown commit %s"
 msgstr ""
 
-#: builtin/log.c:1342 builtin/replace.c:58 builtin/replace.c:207
+#: builtin/log.c:1509 builtin/replace.c:58 builtin/replace.c:207
 #: builtin/replace.c:210
 #, c-format
 msgid "failed to resolve '%s' as a valid ref"
 msgstr ""
 
-#: builtin/log.c:1347
+#: builtin/log.c:1518
 msgid "could not find exact merge base"
 msgstr ""
 
-#: builtin/log.c:1351
+#: builtin/log.c:1528
 msgid ""
 "failed to get upstream, if you want to record base commit automatically,\n"
 "please use git branch --set-upstream-to to track a remote branch.\n"
 "Or you could specify base commit by --base=<base-commit-id> manually"
 msgstr ""
 
-#: builtin/log.c:1371
+#: builtin/log.c:1551
 msgid "failed to find exact merge base"
 msgstr ""
 
-#: builtin/log.c:1382
+#: builtin/log.c:1568
 msgid "base commit should be the ancestor of revision list"
 msgstr "базовый коммит должен быть предком списка редакций"
 
-#: builtin/log.c:1386
+#: builtin/log.c:1578
 msgid "base commit shouldn't be in revision list"
 msgstr "базовый коммит не должен быть в списке редакций"
 
-#: builtin/log.c:1439
+#: builtin/log.c:1636
 msgid "cannot get patch id"
 msgstr "не удалось получить идентификатор патча"
 
-#: builtin/log.c:1491
-msgid "failed to infer range-diff ranges"
+#: builtin/log.c:1693
+msgid "failed to infer range-diff origin of current series"
+msgstr ""
+
+#: builtin/log.c:1695
+#, c-format
+msgid "using '%s' as range-diff origin of current series"
 msgstr ""
 
-#: builtin/log.c:1536
+#: builtin/log.c:1739
 msgid "use [PATCH n/m] even with a single patch"
 msgstr "выводить [PATCH n/m] даже когда один патч"
 
-#: builtin/log.c:1539
+#: builtin/log.c:1742
 msgid "use [PATCH] even with multiple patches"
 msgstr "выводить [PATCH] даже когда несколько патчей"
 
-#: builtin/log.c:1543
+#: builtin/log.c:1746
 msgid "print patches to standard out"
 msgstr "выводить патчи на стандартный вывод"
 
-#: builtin/log.c:1545
+#: builtin/log.c:1748
 msgid "generate a cover letter"
 msgstr "создать сопроводительное письмо"
 
-#: builtin/log.c:1547
+#: builtin/log.c:1750
 msgid "use simple number sequence for output file names"
 msgstr "использовать простую последовательность чисел для имен выходных файлов"
 
-#: builtin/log.c:1548
+#: builtin/log.c:1751
 msgid "sfx"
 msgstr "суффикс"
 
-#: builtin/log.c:1549
+#: builtin/log.c:1752
 msgid "use <sfx> instead of '.patch'"
 msgstr "использовать суффикс <суффикс> вместо «.patch»"
 
-#: builtin/log.c:1551
+#: builtin/log.c:1754
 msgid "start numbering patches at <n> instead of 1"
 msgstr "начать нумерацию патчей с <n>, а не с 1"
 
-#: builtin/log.c:1553
+#: builtin/log.c:1756
 msgid "mark the series as Nth re-roll"
 msgstr "пометить серию как энную попытку"
 
-#: builtin/log.c:1555
+#: builtin/log.c:1758
+msgid "max length of output filename"
+msgstr ""
+
+#: builtin/log.c:1760
 msgid "Use [RFC PATCH] instead of [PATCH]"
 msgstr "Использовать [RFC PATCH] вместо [PATCH]"
 
-#: builtin/log.c:1558
+#: builtin/log.c:1763
+msgid "cover-from-description-mode"
+msgstr ""
+
+#: builtin/log.c:1764
+msgid "generate parts of a cover letter based on a branch's description"
+msgstr ""
+
+#: builtin/log.c:1766
 msgid "Use [<prefix>] instead of [PATCH]"
 msgstr "Использовать [<префикс>] вместо [PATCH]"
 
-#: builtin/log.c:1561
+#: builtin/log.c:1769
 msgid "store resulting files in <dir>"
 msgstr "сохранить результирующие файлы в <каталог>"
 
-#: builtin/log.c:1564
+#: builtin/log.c:1772
 msgid "don't strip/add [PATCH]"
 msgstr "не обрезать/добавлять [PATCH]"
 
-#: builtin/log.c:1567
+#: builtin/log.c:1775
 msgid "don't output binary diffs"
 msgstr "не выводить двоичные изменения"
 
-#: builtin/log.c:1569
+#: builtin/log.c:1777
 msgid "output all-zero hash in From header"
-msgstr "выводить нулевую хеш-сумму в заголовке From"
+msgstr "выводить нулевой хэш-код в заголовке From"
 
-#: builtin/log.c:1571
+#: builtin/log.c:1779
 msgid "don't include a patch matching a commit upstream"
 msgstr "не включать патч, если коммит уже есть в вышестоящей ветке"
 
-#: builtin/log.c:1573
+#: builtin/log.c:1781
 msgid "show patch format instead of default (patch + stat)"
 msgstr "выводить в формате патча, а не в стандартном (патч + статистика)"
 
-#: builtin/log.c:1575
+#: builtin/log.c:1783
 msgid "Messaging"
 msgstr "Передача сообщений"
 
-#: builtin/log.c:1576
+#: builtin/log.c:1784
 msgid "header"
 msgstr "заголовок"
 
-#: builtin/log.c:1577
+#: builtin/log.c:1785
 msgid "add email header"
 msgstr "добавить заголовок сообщения"
 
-#: builtin/log.c:1578 builtin/log.c:1580
+#: builtin/log.c:1786 builtin/log.c:1787
 msgid "email"
 msgstr "почта"
 
-#: builtin/log.c:1578
+#: builtin/log.c:1786
 msgid "add To: header"
 msgstr "добавить заголовок To:"
 
-#: builtin/log.c:1580
+#: builtin/log.c:1787
 msgid "add Cc: header"
 msgstr "добавить заголовок Cc:"
 
-#: builtin/log.c:1582
+#: builtin/log.c:1788
 msgid "ident"
 msgstr "идентификатор"
 
-#: builtin/log.c:1583
+#: builtin/log.c:1789
 msgid "set From address to <ident> (or committer ident if absent)"
 msgstr "установить адрес отправителя на <идентификатор> (или на идентификатор коммитера, если отсутствует)"
 
-#: builtin/log.c:1585
+#: builtin/log.c:1791
 msgid "message-id"
 msgstr "идентификатор-сообщения"
 
-#: builtin/log.c:1586
+#: builtin/log.c:1792
 msgid "make first mail a reply to <message-id>"
 msgstr "сделать первое письмо ответом на <идентификатор-сообщения>"
 
-#: builtin/log.c:1587 builtin/log.c:1590
+#: builtin/log.c:1793 builtin/log.c:1796
 msgid "boundary"
 msgstr "вложение"
 
-#: builtin/log.c:1588
+#: builtin/log.c:1794
 msgid "attach the patch"
 msgstr "приложить патч"
 
-#: builtin/log.c:1591
+#: builtin/log.c:1797
 msgid "inline the patch"
 msgstr "включить патч в текст письма"
 
-#: builtin/log.c:1595
+#: builtin/log.c:1801
 msgid "enable message threading, styles: shallow, deep"
 msgstr "включить в письмах иерархичность, стили: shallow (частичную), deep (глубокую)"
 
-#: builtin/log.c:1597
+#: builtin/log.c:1803
 msgid "signature"
 msgstr "подпись"
 
-#: builtin/log.c:1598
+#: builtin/log.c:1804
 msgid "add a signature"
 msgstr "добавить подпись"
 
-#: builtin/log.c:1599
+#: builtin/log.c:1805
 msgid "base-commit"
 msgstr "базовый коммит"
 
-#: builtin/log.c:1600
+#: builtin/log.c:1806
 msgid "add prerequisite tree info to the patch series"
 msgstr "добавить информацию о требовании дерева к серии патчей"
 
-#: builtin/log.c:1602
+#: builtin/log.c:1809
 msgid "add a signature from a file"
 msgstr "добавить подпись из файла"
 
-#: builtin/log.c:1603
+#: builtin/log.c:1810
 msgid "don't print the patch filenames"
 msgstr "не выводить имена файлов патчей"
 
-#: builtin/log.c:1605
+#: builtin/log.c:1812
 msgid "show progress while generating patches"
 msgstr "показать прогресс выполнения во создания патчей"
 
-#: builtin/log.c:1606
-msgid "rev"
-msgstr ""
-
-#: builtin/log.c:1607
+#: builtin/log.c:1814
 msgid "show changes against <rev> in cover letter or single patch"
 msgstr ""
 
-#: builtin/log.c:1610
+#: builtin/log.c:1817
 msgid "show changes against <refspec> in cover letter or single patch"
 msgstr ""
 
-#: builtin/log.c:1612
+#: builtin/log.c:1819
 msgid "percentage by which creation is weighted"
 msgstr ""
 
-#: builtin/log.c:1687
+#: builtin/log.c:1905
 #, c-format
 msgid "invalid ident line: %s"
 msgstr "неправильная строка идентификации: %s"
 
-#: builtin/log.c:1702
+#: builtin/log.c:1920
 msgid "-n and -k are mutually exclusive"
 msgstr ""
 
-#: builtin/log.c:1704
+#: builtin/log.c:1922
 msgid "--subject-prefix/--rfc and -k are mutually exclusive"
 msgstr ""
 
-#: builtin/log.c:1712
+#: builtin/log.c:1930
 msgid "--name-only does not make sense"
 msgstr "--name-only не имеет смысла"
 
-#: builtin/log.c:1714
+#: builtin/log.c:1932
 msgid "--name-status does not make sense"
 msgstr "--name-status не имеет смысла"
 
-#: builtin/log.c:1716
+#: builtin/log.c:1934
 msgid "--check does not make sense"
 msgstr "--check не имеет смысла"
 
-#: builtin/log.c:1748
-msgid "standard output, or directory, which one?"
-msgstr "стандартный вывод или каталог?"
+#: builtin/log.c:1956
+msgid "--stdout, --output, and --output-directory are mutually exclusive"
+msgstr ""
 
-#: builtin/log.c:1837
+#: builtin/log.c:2079
 msgid "--interdiff requires --cover-letter or single patch"
 msgstr ""
 
-#: builtin/log.c:1841
+#: builtin/log.c:2083
 msgid "Interdiff:"
 msgstr ""
 
-#: builtin/log.c:1842
+#: builtin/log.c:2084
 #, c-format
 msgid "Interdiff against v%d:"
 msgstr ""
 
-#: builtin/log.c:1848
+#: builtin/log.c:2090
 msgid "--creation-factor requires --range-diff"
 msgstr ""
 
-#: builtin/log.c:1852
+#: builtin/log.c:2094
 msgid "--range-diff requires --cover-letter or single patch"
 msgstr ""
 
-#: builtin/log.c:1860
+#: builtin/log.c:2102
 msgid "Range-diff:"
 msgstr ""
 
-#: builtin/log.c:1861
+#: builtin/log.c:2103
 #, c-format
 msgid "Range-diff against v%d:"
 msgstr ""
 
-#: builtin/log.c:1872
+#: builtin/log.c:2114
 #, c-format
 msgid "unable to read signature file '%s'"
 msgstr "не удалось прочитать файл подписи «%s»"
 
-#: builtin/log.c:1908
+#: builtin/log.c:2150
 msgid "Generating patches"
 msgstr "Создание патчей"
 
-#: builtin/log.c:1952
+#: builtin/log.c:2194
 msgid "failed to create output files"
 msgstr ""
 
-#: builtin/log.c:2011
+#: builtin/log.c:2253
 msgid "git cherry [-v] [<upstream> [<head> [<limit>]]]"
 msgstr "git cherry [-v] [<вышестоящая-ветка> [<редакция> [<ограничение>]]]"
 
-#: builtin/log.c:2065
+#: builtin/log.c:2307
 #, c-format
 msgid ""
 "Could not find a tracked remote branch, please specify <upstream> "
 "manually.\n"
 msgstr "Не удалось найти отслеживаемую внешнюю ветку, укажите <вышестоящую-ветку> вручную.\n"
 
-#: builtin/ls-files.c:470
+#: builtin/ls-files.c:471
 msgid "git ls-files [<options>] [<file>...]"
 msgstr "git ls-files [<опции>] [<файл>…]"
 
-#: builtin/ls-files.c:526
+#: builtin/ls-files.c:527
 msgid "identify the file status with tags"
 msgstr "выводить имена файлов с метками"
 
-#: builtin/ls-files.c:528
+#: builtin/ls-files.c:529
 msgid "use lowercase letters for 'assume unchanged' files"
 msgstr "использовать символы в нижнем регистре для «предположительно без изменений» файлов"
 
-#: builtin/ls-files.c:530
+#: builtin/ls-files.c:531
 msgid "use lowercase letters for 'fsmonitor clean' files"
 msgstr "использовать символы нижнего регистра для файлов «fsmonitor clean»"
 
-#: builtin/ls-files.c:532
+#: builtin/ls-files.c:533
 msgid "show cached files in the output (default)"
 msgstr "показывать кэшированные файлы при выводе (по умолчанию)"
 
-#: builtin/ls-files.c:534
+#: builtin/ls-files.c:535
 msgid "show deleted files in the output"
 msgstr "показывать удаленные файлы при выводе"
 
-#: builtin/ls-files.c:536
+#: builtin/ls-files.c:537
 msgid "show modified files in the output"
 msgstr "показывать измененные файлы при выводе"
 
-#: builtin/ls-files.c:538
+#: builtin/ls-files.c:539
 msgid "show other files in the output"
 msgstr "показывать другие файлы при выводе"
 
-#: builtin/ls-files.c:540
+#: builtin/ls-files.c:541
 msgid "show ignored files in the output"
 msgstr "показывать игнорируемые файлы при выводе"
 
-#: builtin/ls-files.c:543
+#: builtin/ls-files.c:544
 msgid "show staged contents' object name in the output"
 msgstr "показывать имя индексированного объекта на выводе"
 
-#: builtin/ls-files.c:545
+#: builtin/ls-files.c:546
 msgid "show files on the filesystem that need to be removed"
 msgstr "показывать файлы в файловой системе, которые должны быть удалены"
 
-#: builtin/ls-files.c:547
+#: builtin/ls-files.c:548
 msgid "show 'other' directories' names only"
 msgstr "показывать только имена у «других» каталогов"
 
-#: builtin/ls-files.c:549
+#: builtin/ls-files.c:550
 msgid "show line endings of files"
 msgstr "показать концы строк файлов"
 
-#: builtin/ls-files.c:551
+#: builtin/ls-files.c:552
 msgid "don't show empty directories"
 msgstr "не показывать пустые каталоги"
 
-#: builtin/ls-files.c:554
+#: builtin/ls-files.c:555
 msgid "show unmerged files in the output"
 msgstr "показывать не слитые файлы на выводе"
 
-#: builtin/ls-files.c:556
+#: builtin/ls-files.c:557
 msgid "show resolve-undo information"
 msgstr "показывать информации о разрешении конфликтов и отмене"
 
-#: builtin/ls-files.c:558
+#: builtin/ls-files.c:559
 msgid "skip files matching pattern"
 msgstr "пропустить файлы, соответствующие шаблону"
 
-#: builtin/ls-files.c:561
+#: builtin/ls-files.c:562
 msgid "exclude patterns are read from <file>"
 msgstr "прочитать шаблоны исключения из <файл>"
 
-#: builtin/ls-files.c:564
+#: builtin/ls-files.c:565
 msgid "read additional per-directory exclude patterns in <file>"
 msgstr "прочитать дополнительные покаталожные шаблоны исключения из <файл>"
 
-#: builtin/ls-files.c:566
+#: builtin/ls-files.c:567
 msgid "add the standard git exclusions"
 msgstr "добавить стандартные исключения git"
 
-#: builtin/ls-files.c:570
+#: builtin/ls-files.c:571
 msgid "make the output relative to the project top directory"
 msgstr "выводить пути относительно корневого каталога проекта"
 
-#: builtin/ls-files.c:573
+#: builtin/ls-files.c:574
 msgid "recurse through submodules"
 msgstr "рекурсивно по подмодулям"
 
-#: builtin/ls-files.c:575
+#: builtin/ls-files.c:576
 msgid "if any <file> is not in the index, treat this as an error"
 msgstr "если какой-либо <файл> не в индексе, считать это ошибкой"
 
-#: builtin/ls-files.c:576
+#: builtin/ls-files.c:577
 msgid "tree-ish"
 msgstr "указатель-дерева"
 
-#: builtin/ls-files.c:577
+#: builtin/ls-files.c:578
 msgid "pretend that paths removed since <tree-ish> are still present"
 msgstr "притвориться, что пути удалены, т.к. <указатель-дерева> еще существует"
 
-#: builtin/ls-files.c:579
+#: builtin/ls-files.c:580
 msgid "show debugging data"
 msgstr "показать отладочную информацию"
 
@@ -13605,7 +15787,7 @@ msgstr "git ls-remote [--heads] [--tags] [--refs] [--upload-pack=<запуск>]
 msgid "do not print remote URL"
 msgstr "не выводить URL внешних репозиториев"
 
-#: builtin/ls-remote.c:60 builtin/ls-remote.c:62 builtin/rebase.c:1458
+#: builtin/ls-remote.c:60 builtin/ls-remote.c:62 builtin/rebase.c:1398
 msgid "exec"
 msgstr "запуск"
 
@@ -13678,475 +15860,487 @@ msgstr "вывести полное дерево; не только текущи
 msgid "empty mbox: '%s'"
 msgstr "пустой mbox: «%s»"
 
-#: builtin/merge.c:54
+#: builtin/merge-base.c:32
+msgid "git merge-base [-a | --all] <commit> <commit>..."
+msgstr "git merge-base [-a | --all] <коммит> <коммит>…"
+
+#: builtin/merge-base.c:33
+msgid "git merge-base [-a | --all] --octopus <commit>..."
+msgstr "git merge-base [-a | --all] --octopus <коммит>…"
+
+#: builtin/merge-base.c:34
+msgid "git merge-base --independent <commit>..."
+msgstr "git merge-base --independent <коммит>…"
+
+#: builtin/merge-base.c:35
+msgid "git merge-base --is-ancestor <commit> <commit>"
+msgstr "git merge-base --is-ancestor <коммит> <коммит>"
+
+#: builtin/merge-base.c:36
+msgid "git merge-base --fork-point <ref> [<commit>]"
+msgstr "git merge-base --fork-point <ссылка> [<коммит>]"
+
+#: builtin/merge-base.c:143
+msgid "output all common ancestors"
+msgstr "вывести всех общих предков"
+
+#: builtin/merge-base.c:145
+msgid "find ancestors for a single n-way merge"
+msgstr "вывести предков для одного многоходового слияния"
+
+#: builtin/merge-base.c:147
+msgid "list revs not reachable from others"
+msgstr "вывести список редаций, которые не достижимы из друг друга"
+
+#: builtin/merge-base.c:149
+msgid "is the first one ancestor of the other?"
+msgstr "является первым предком второго указанного коммита?"
+
+#: builtin/merge-base.c:151
+msgid "find where <commit> forked from reflog of <ref>"
+msgstr "найти журнале ссылок <ссылка> где именно <коммит> разветвился"
+
+#: builtin/merge-file.c:9
+msgid ""
+"git merge-file [<options>] [-L <name1> [-L <orig> [-L <name2>]]] <file1> "
+"<orig-file> <file2>"
+msgstr "git merge-file [<опции>] [-L имя1 [-L orig [-L имя2]]] <файл1> <ориг-файл> <файл2>"
+
+#: builtin/merge-file.c:35
+msgid "send results to standard output"
+msgstr "вывести результат на стандартный вывод"
+
+#: builtin/merge-file.c:36
+msgid "use a diff3 based merge"
+msgstr "использовать diff3 слияние"
+
+#: builtin/merge-file.c:37
+msgid "for conflicts, use our version"
+msgstr "при возникновении конфликтов, использовать нашу версию"
+
+#: builtin/merge-file.c:39
+msgid "for conflicts, use their version"
+msgstr "при возникновении конфликтов, использовать их версию"
+
+#: builtin/merge-file.c:41
+msgid "for conflicts, use a union version"
+msgstr "при возникновении конфликтов, использовать обе версии"
+
+#: builtin/merge-file.c:44
+msgid "for conflicts, use this marker size"
+msgstr "при возникновении конфликтов, использовать этот размер маркера"
+
+#: builtin/merge-file.c:45
+msgid "do not warn about conflicts"
+msgstr "не предупреждать о конфликтах"
+
+#: builtin/merge-file.c:47
+msgid "set labels for file1/orig-file/file2"
+msgstr "установить метки для файл1/ориг-файл/файл2"
+
+#: builtin/merge-recursive.c:47
+#, c-format
+msgid "unknown option %s"
+msgstr "неизвестная опция %s"
+
+#: builtin/merge-recursive.c:53
+#, c-format
+msgid "could not parse object '%s'"
+msgstr "не удалось разобрать объект «%s»"
+
+#: builtin/merge-recursive.c:57
+#, c-format
+msgid "cannot handle more than %d base. Ignoring %s."
+msgid_plural "cannot handle more than %d bases. Ignoring %s."
+msgstr[0] "невозможно обработать больше %d базы. Игнорирую %s."
+msgstr[1] "невозможно обработать больше %d баз. Игнорирую %s."
+msgstr[2] "невозможно обработать больше %d баз. Игнорирую %s."
+msgstr[3] "невозможно обработать больше %d базы. Игнорирую %s."
+
+#: builtin/merge-recursive.c:65
+msgid "not handling anything other than two heads merge."
+msgstr "не обрабатываю ничего, кроме слияния двух указателей на ветки."
+
+#: builtin/merge-recursive.c:74 builtin/merge-recursive.c:76
+#, c-format
+msgid "could not resolve ref '%s'"
+msgstr "не удалось распознать ссылку «%s»"
+
+#: builtin/merge-recursive.c:82
+#, c-format
+msgid "Merging %s with %s\n"
+msgstr "Слияние %s и %s\n"
+
+#: builtin/merge.c:57
 msgid "git merge [<options>] [<commit>...]"
 msgstr "git merge [<опции>] [<коммит>…]"
 
-#: builtin/merge.c:55
+#: builtin/merge.c:58
 msgid "git merge --abort"
 msgstr "git merge --abort"
 
-#: builtin/merge.c:56
+#: builtin/merge.c:59
 msgid "git merge --continue"
 msgstr "git merge --continue"
 
-#: builtin/merge.c:116
+#: builtin/merge.c:122
 msgid "switch `m' requires a value"
 msgstr "при указании параметра «m» требуется указать значение"
 
-#: builtin/merge.c:139
+#: builtin/merge.c:145
 #, c-format
 msgid "option `%s' requires a value"
 msgstr ""
 
-#: builtin/merge.c:185
+#: builtin/merge.c:198
 #, c-format
 msgid "Could not find merge strategy '%s'.\n"
 msgstr "Не удалось найти стратегию слияния «%s».\n"
 
-#: builtin/merge.c:186
+#: builtin/merge.c:199
 #, c-format
 msgid "Available strategies are:"
 msgstr "Доступные стратегии:"
 
-#: builtin/merge.c:191
+#: builtin/merge.c:204
 #, c-format
 msgid "Available custom strategies are:"
 msgstr "Доступные пользовательские стратегии:"
 
-#: builtin/merge.c:242 builtin/pull.c:150
+#: builtin/merge.c:255 builtin/pull.c:133
 msgid "do not show a diffstat at the end of the merge"
 msgstr "не выводить статистику изменений после окончания слияния"
 
-#: builtin/merge.c:245 builtin/pull.c:153
+#: builtin/merge.c:258 builtin/pull.c:136
 msgid "show a diffstat at the end of the merge"
 msgstr "вывести статистику изменений после окончания слияния"
 
-#: builtin/merge.c:246 builtin/pull.c:156
+#: builtin/merge.c:259 builtin/pull.c:139
 msgid "(synonym to --stat)"
 msgstr "(синоним для --stat)"
 
-#: builtin/merge.c:248 builtin/pull.c:159
+#: builtin/merge.c:261 builtin/pull.c:142
 msgid "add (at most <n>) entries from shortlog to merge commit message"
 msgstr "добавить (максимум <n>) записей из короткого журнала в сообщение коммита у слияния"
 
-#: builtin/merge.c:251 builtin/pull.c:165
+#: builtin/merge.c:264 builtin/pull.c:148
 msgid "create a single commit instead of doing a merge"
 msgstr "создать один коммит, вместо выполнения слияния"
 
-#: builtin/merge.c:253 builtin/pull.c:168
+#: builtin/merge.c:266 builtin/pull.c:151
 msgid "perform a commit if the merge succeeds (default)"
 msgstr "сделать коммит, если слияние прошло успешно (по умолчанию)"
 
-#: builtin/merge.c:255 builtin/pull.c:171
+#: builtin/merge.c:268 builtin/pull.c:154
 msgid "edit message before committing"
 msgstr "отредактировать сообщение перед выполнением коммита"
 
-#: builtin/merge.c:257
+#: builtin/merge.c:270
 msgid "allow fast-forward (default)"
 msgstr "разрешить перемотку вперед (по умолчанию)"
 
-#: builtin/merge.c:259 builtin/pull.c:178
+#: builtin/merge.c:272 builtin/pull.c:161
 msgid "abort if fast-forward is not possible"
 msgstr "отменить выполнение слияния, если перемотка вперед невозможна"
 
-#: builtin/merge.c:263 builtin/pull.c:181
+#: builtin/merge.c:276 builtin/pull.c:164
 msgid "verify that the named commit has a valid GPG signature"
 msgstr "проверить, что указанный коммит имеет верную электронную подпись GPG"
 
-#: builtin/merge.c:264 builtin/notes.c:787 builtin/pull.c:185
-#: builtin/rebase.c:492 builtin/rebase.c:1471 builtin/revert.c:113
+#: builtin/merge.c:277 builtin/notes.c:787 builtin/pull.c:168
+#: builtin/rebase.c:539 builtin/rebase.c:1412 builtin/revert.c:114
 msgid "strategy"
 msgstr "стратегия"
 
-#: builtin/merge.c:265 builtin/pull.c:186
+#: builtin/merge.c:278 builtin/pull.c:169
 msgid "merge strategy to use"
 msgstr "используемая стратегия слияния"
 
-#: builtin/merge.c:266 builtin/pull.c:189
+#: builtin/merge.c:279 builtin/pull.c:172
 msgid "option=value"
 msgstr "опция=значение"
 
-#: builtin/merge.c:267 builtin/pull.c:190
+#: builtin/merge.c:280 builtin/pull.c:173
 msgid "option for selected merge strategy"
 msgstr "опции для выбранной стратегии слияния"
 
-#: builtin/merge.c:269
+#: builtin/merge.c:282
 msgid "merge commit message (for a non-fast-forward merge)"
 msgstr "сообщение коммита для слияния (для слияния без перемотки вперед)"
 
-#: builtin/merge.c:276
+#: builtin/merge.c:289
 msgid "abort the current in-progress merge"
 msgstr "отменить выполнение происходящего слияния"
 
-#: builtin/merge.c:278
+#: builtin/merge.c:291
+msgid "--abort but leave index and working tree alone"
+msgstr ""
+
+#: builtin/merge.c:293
 msgid "continue the current in-progress merge"
 msgstr "продолжить выполнение происходящего слияния"
 
-#: builtin/merge.c:280 builtin/pull.c:197
+#: builtin/merge.c:295 builtin/pull.c:180
 msgid "allow merging unrelated histories"
 msgstr "разрешить слияние несвязанных историй изменений"
 
-#: builtin/merge.c:286
-msgid "verify commit-msg hook"
-msgstr "проверить перехватчик commit-msg"
+#: builtin/merge.c:302
+msgid "bypass pre-merge-commit and commit-msg hooks"
+msgstr ""
 
-#: builtin/merge.c:311
+#: builtin/merge.c:319
 msgid "could not run stash."
 msgstr "не удалось выполнить stash."
 
-#: builtin/merge.c:316
+#: builtin/merge.c:324
 msgid "stash failed"
 msgstr "сбой при выполнении stash"
 
-#: builtin/merge.c:321
+#: builtin/merge.c:329
 #, c-format
 msgid "not a valid object: %s"
 msgstr "неправильный объект: %s"
 
-#: builtin/merge.c:343 builtin/merge.c:360
+#: builtin/merge.c:351 builtin/merge.c:368
 msgid "read-tree failed"
 msgstr "сбой при выполнении read-tree"
 
-#: builtin/merge.c:390
+#: builtin/merge.c:398
 msgid " (nothing to squash)"
 msgstr " (нечего уплотнять)"
 
-#: builtin/merge.c:401
+#: builtin/merge.c:409
 #, c-format
 msgid "Squash commit -- not updating HEAD\n"
 msgstr "Уплотнение коммита — не обновляя HEAD\n"
 
-#: builtin/merge.c:451
+#: builtin/merge.c:459
 #, c-format
 msgid "No merge message -- not updating HEAD\n"
 msgstr "Нет сообщения слияния — не обновляем HEAD\n"
 
-#: builtin/merge.c:502
+#: builtin/merge.c:510
 #, c-format
 msgid "'%s' does not point to a commit"
 msgstr "«%s» не указывает на коммит"
 
-#: builtin/merge.c:589
+#: builtin/merge.c:597
 #, c-format
 msgid "Bad branch.%s.mergeoptions string: %s"
 msgstr "Неправильная строка branch.%s.mergeoptions: %s"
 
-#: builtin/merge.c:712
+#: builtin/merge.c:723
 msgid "Not handling anything other than two heads merge."
 msgstr "Не обрабатываю ничего, кроме слияния двух указателей на ветки."
 
-#: builtin/merge.c:726
+#: builtin/merge.c:736
 #, c-format
 msgid "Unknown option for merge-recursive: -X%s"
 msgstr "Неизвестный параметр merge-recursive: -X%s"
 
-#: builtin/merge.c:741
+#: builtin/merge.c:755 t/helper/test-fast-rebase.c:209
 #, c-format
 msgid "unable to write %s"
 msgstr "не удалось записать %s"
 
-#: builtin/merge.c:793
+#: builtin/merge.c:807
 #, c-format
 msgid "Could not read from '%s'"
 msgstr "Не удалось прочесть из «%s»"
 
-#: builtin/merge.c:802
+#: builtin/merge.c:816
 #, c-format
 msgid "Not committing merge; use 'git commit' to complete the merge.\n"
 msgstr "Не выполняю коммит слияния; используйте «git commit» для завершения слияния.\n"
 
-#: builtin/merge.c:808
+#: builtin/merge.c:822
 msgid ""
 "Please enter a commit message to explain why this merge is necessary,\n"
 "especially if it merges an updated upstream into a topic branch.\n"
 "\n"
 msgstr ""
 
-#: builtin/merge.c:813
+#: builtin/merge.c:827
 msgid "An empty message aborts the commit.\n"
 msgstr ""
 
-#: builtin/merge.c:816
+#: builtin/merge.c:830
 #, c-format
 msgid ""
 "Lines starting with '%c' will be ignored, and an empty message aborts\n"
 "the commit.\n"
 msgstr ""
 
-#: builtin/merge.c:857
+#: builtin/merge.c:883
 msgid "Empty commit message."
 msgstr "Пустое сообщение коммита."
 
-#: builtin/merge.c:876
+#: builtin/merge.c:898
 #, c-format
 msgid "Wonderful.\n"
 msgstr "Прекрасно.\n"
 
-#: builtin/merge.c:936
+#: builtin/merge.c:959
 #, c-format
 msgid "Automatic merge failed; fix conflicts and then commit the result.\n"
 msgstr "Не удалось провести автоматическое слияние; исправьте конфликты и сделайте коммит результата.\n"
 
-#: builtin/merge.c:975
+#: builtin/merge.c:998
 msgid "No current branch."
 msgstr "Нет текущей ветки."
 
-#: builtin/merge.c:977
+#: builtin/merge.c:1000
 msgid "No remote for the current branch."
 msgstr "У текущей ветки нет внешнего репозитория."
 
-#: builtin/merge.c:979
+#: builtin/merge.c:1002
 msgid "No default upstream defined for the current branch."
 msgstr "Для текущей ветки не указана вышестоящая ветка по умолчанию."
 
-#: builtin/merge.c:984
+#: builtin/merge.c:1007
 #, c-format
 msgid "No remote-tracking branch for %s from %s"
 msgstr "Не указана внешняя отслеживаемая ветка для %s на %s"
 
-#: builtin/merge.c:1041
+#: builtin/merge.c:1064
 #, c-format
 msgid "Bad value '%s' in environment '%s'"
 msgstr "Плохое значение «%s» в переменной окружения «%s»"
 
-#: builtin/merge.c:1144
+#: builtin/merge.c:1167
 #, c-format
 msgid "not something we can merge in %s: %s"
 msgstr "не является тем, что можно слить в %s: %s"
 
-#: builtin/merge.c:1178
+#: builtin/merge.c:1201
 msgid "not something we can merge"
 msgstr "не является тем, что можно слить"
 
-#: builtin/merge.c:1281
+#: builtin/merge.c:1311
 msgid "--abort expects no arguments"
 msgstr "опция --abort не принимает аргументы"
 
-#: builtin/merge.c:1285
+#: builtin/merge.c:1315
 msgid "There is no merge to abort (MERGE_HEAD missing)."
 msgstr "Нет слияния, которое можно отменить (отсутствует файл MERGE_HEAD)."
 
-#: builtin/merge.c:1297
+#: builtin/merge.c:1333
+msgid "--quit expects no arguments"
+msgstr ""
+
+#: builtin/merge.c:1346
 msgid "--continue expects no arguments"
 msgstr "опция --continue не принимает аргументы"
 
-#: builtin/merge.c:1301
+#: builtin/merge.c:1350
 msgid "There is no merge in progress (MERGE_HEAD missing)."
 msgstr "Сейчас не происходит слияние (отсутствует файл MERGE_HEAD)."
 
-#: builtin/merge.c:1317
+#: builtin/merge.c:1366
 msgid ""
 "You have not concluded your merge (MERGE_HEAD exists).\n"
 "Please, commit your changes before you merge."
 msgstr "Вы не завершили слияние (присутствует файл MERGE_HEAD).\nВыполните коммит ваших изменений, перед слиянием."
 
-#: builtin/merge.c:1324
+#: builtin/merge.c:1373
 msgid ""
 "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n"
 "Please, commit your changes before you merge."
 msgstr "Вы не завершили копирование коммита (присутствует файл CHERRY_PICK_HEAD).\nПожалуйста, закоммитьте ваши изменения, перед слиянием."
 
-#: builtin/merge.c:1327
+#: builtin/merge.c:1376
 msgid "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists)."
 msgstr "Вы не завершили копирование коммита (присутствует файл CHERRY_PICK_HEAD)."
 
-#: builtin/merge.c:1341
+#: builtin/merge.c:1390
 msgid "You cannot combine --squash with --no-ff."
 msgstr "Нельзя использовать одновременно --squash и --no-ff."
 
-#: builtin/merge.c:1349
+#: builtin/merge.c:1392
+msgid "You cannot combine --squash with --commit."
+msgstr ""
+
+#: builtin/merge.c:1408
 msgid "No commit specified and merge.defaultToUpstream not set."
 msgstr "Коммит не указан и параметр merge.defaultToUpstream не установлен."
 
-#: builtin/merge.c:1366
+#: builtin/merge.c:1425
 msgid "Squash commit into empty head not supported yet"
 msgstr "Уплотнение коммита в пустую ветку еще не поддерживается"
 
-#: builtin/merge.c:1368
+#: builtin/merge.c:1427
 msgid "Non-fast-forward commit does not make sense into an empty head"
 msgstr "Коммит, не являющийся перемоткой вперед, нет смысла делать в пустую ветку."
 
-#: builtin/merge.c:1373
-#, c-format
-msgid "%s - not something we can merge"
-msgstr "%s не является тем, что можно слить"
-
-#: builtin/merge.c:1375
-msgid "Can merge only exactly one commit into empty head"
-msgstr "Можно только один коммит в пустую ветку."
-
-#: builtin/merge.c:1454
-msgid "refusing to merge unrelated histories"
-msgstr "отказ слияния несвязанных историй изменений"
-
-#: builtin/merge.c:1463
-msgid "Already up to date."
-msgstr "Уже обновлено."
-
-#: builtin/merge.c:1473
-#, c-format
-msgid "Updating %s..%s\n"
-msgstr "Обновление %s..%s\n"
-
-#: builtin/merge.c:1515
-#, c-format
-msgid "Trying really trivial in-index merge...\n"
-msgstr "Попытка тривиального слияния в индексе…\n"
-
-#: builtin/merge.c:1522
-#, c-format
-msgid "Nope.\n"
-msgstr "Не вышло.\n"
-
-#: builtin/merge.c:1547
-msgid "Already up to date. Yeeah!"
-msgstr "Уже обновлено. Круто!"
-
-#: builtin/merge.c:1553
-msgid "Not possible to fast-forward, aborting."
-msgstr "Перемотка вперед невозможна, отмена."
-
-#: builtin/merge.c:1576 builtin/merge.c:1655
+#: builtin/merge.c:1432
 #, c-format
-msgid "Rewinding the tree to pristine...\n"
-msgstr "Перемотка дерева к исходному состоянию…\n"
-
-#: builtin/merge.c:1580
-#, c-format
-msgid "Trying merge strategy %s...\n"
-msgstr "Попытка слияния с помощью стратегии %s…\n"
-
-#: builtin/merge.c:1646
-#, c-format
-msgid "No merge strategy handled the merge.\n"
-msgstr "Ни одна стратегия слияния не обработала слияние.\n"
-
-#: builtin/merge.c:1648
-#, c-format
-msgid "Merge with strategy %s failed.\n"
-msgstr "Сбой при слиянии с помощью стратегии %s.\n"
-
-#: builtin/merge.c:1657
-#, c-format
-msgid "Using the %s to prepare resolving by hand.\n"
-msgstr "Использую %s для подготовки ручного разрешения конфликтов.\n"
-
-#: builtin/merge.c:1669
-#, c-format
-msgid "Automatic merge went well; stopped before committing as requested\n"
-msgstr "Автоматическое слияние прошло успешно; как и запрашивали, остановлено перед выполнением коммита\n"
-
-#: builtin/merge-base.c:32
-msgid "git merge-base [-a | --all] <commit> <commit>..."
-msgstr "git merge-base [-a | --all] <коммит> <коммит>…"
-
-#: builtin/merge-base.c:33
-msgid "git merge-base [-a | --all] --octopus <commit>..."
-msgstr "git merge-base [-a | --all] --octopus <коммит>…"
-
-#: builtin/merge-base.c:34
-msgid "git merge-base --independent <commit>..."
-msgstr "git merge-base --independent <коммит>…"
-
-#: builtin/merge-base.c:35
-msgid "git merge-base --is-ancestor <commit> <commit>"
-msgstr "git merge-base --is-ancestor <коммит> <коммит>"
-
-#: builtin/merge-base.c:36
-msgid "git merge-base --fork-point <ref> [<commit>]"
-msgstr "git merge-base --fork-point <ссылка> [<коммит>]"
-
-#: builtin/merge-base.c:153
-msgid "output all common ancestors"
-msgstr "вывести всех общих предков"
-
-#: builtin/merge-base.c:155
-msgid "find ancestors for a single n-way merge"
-msgstr "вывести предков для одного многоходового слияния"
-
-#: builtin/merge-base.c:157
-msgid "list revs not reachable from others"
-msgstr "вывести список редаций, которые не достижимы из друг друга"
-
-#: builtin/merge-base.c:159
-msgid "is the first one ancestor of the other?"
-msgstr "является первым предком второго указанного коммита?"
-
-#: builtin/merge-base.c:161
-msgid "find where <commit> forked from reflog of <ref>"
-msgstr "найти журнале ссылок <ссылка> где именно <коммит> разветвился"
-
-#: builtin/merge-file.c:9
-msgid ""
-"git merge-file [<options>] [-L <name1> [-L <orig> [-L <name2>]]] <file1> "
-"<orig-file> <file2>"
-msgstr "git merge-file [<опции>] [-L имя1 [-L orig [-L имя2]]] <файл1> <ориг-файл> <файл2>"
+msgid "%s - not something we can merge"
+msgstr "%s не является тем, что можно слить"
 
-#: builtin/merge-file.c:35
-msgid "send results to standard output"
-msgstr "вÑ\8bвеÑ\81Ñ\82и Ñ\80езÑ\83лÑ\8cÑ\82аÑ\82 Ð½Ð° Ñ\81Ñ\82андаÑ\80Ñ\82нÑ\8bй Ð²Ñ\8bвод"
+#: builtin/merge.c:1434
+msgid "Can merge only exactly one commit into empty head"
+msgstr "Ð\9cожно Ñ\82олÑ\8cко Ð¾Ð´Ð¸Ð½ ÐºÐ¾Ð¼Ð¼Ð¸Ñ\82 Ð² Ð¿Ñ\83Ñ\81Ñ\82Ñ\83Ñ\8e Ð²ÐµÑ\82кÑ\83."
 
-#: builtin/merge-file.c:36
-msgid "use a diff3 based merge"
-msgstr "иÑ\81полÑ\8cзоваÑ\82Ñ\8c diff3 Ñ\81лиÑ\8fние"
+#: builtin/merge.c:1515
+msgid "refusing to merge unrelated histories"
+msgstr "оÑ\82каз Ñ\81лиÑ\8fниÑ\8f Ð½ÐµÑ\81вÑ\8fзаннÑ\8bÑ\85 Ð¸Ñ\81Ñ\82оÑ\80ий Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹"
 
-#: builtin/merge-file.c:37
-msgid "for conflicts, use our version"
-msgstr "пÑ\80и Ð²Ð¾Ð·Ð½Ð¸ÐºÐ½Ð¾Ð²ÐµÐ½Ð¸Ð¸ ÐºÐ¾Ð½Ñ\84ликÑ\82ов, Ð¸Ñ\81полÑ\8cзоваÑ\82Ñ\8c Ð½Ð°Ñ\88Ñ\83 Ð²ÐµÑ\80Ñ\81иÑ\8e"
+#: builtin/merge.c:1524
+msgid "Already up to date."
+msgstr "Уже Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾."
 
-#: builtin/merge-file.c:39
-msgid "for conflicts, use their version"
-msgstr "при возникновении конфликтов, использовать их версию"
+#: builtin/merge.c:1534
+#, c-format
+msgid "Updating %s..%s\n"
+msgstr "Обновление %s..%s\n"
 
-#: builtin/merge-file.c:41
-msgid "for conflicts, use a union version"
-msgstr "при возникновении конфликтов, использовать обе версии"
+#: builtin/merge.c:1580
+#, c-format
+msgid "Trying really trivial in-index merge...\n"
+msgstr "Попытка тривиального слияния в индексе…\n"
 
-#: builtin/merge-file.c:44
-msgid "for conflicts, use this marker size"
-msgstr "при возникновении конфликтов, использовать этот размер маркера"
+#: builtin/merge.c:1587
+#, c-format
+msgid "Nope.\n"
+msgstr "Не вышло.\n"
 
-#: builtin/merge-file.c:45
-msgid "do not warn about conflicts"
-msgstr "не Ð¿Ñ\80едÑ\83пÑ\80еждаÑ\82Ñ\8c Ð¾ ÐºÐ¾Ð½Ñ\84ликÑ\82аÑ\85"
+#: builtin/merge.c:1612
+msgid "Already up to date. Yeeah!"
+msgstr "Уже Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾. Ð\9aÑ\80Ñ\83Ñ\82о!"
 
-#: builtin/merge-file.c:47
-msgid "set labels for file1/orig-file/file2"
-msgstr "установить метки для файл1/ориг-файл/файл2"
+#: builtin/merge.c:1618
+msgid "Not possible to fast-forward, aborting."
+msgstr "Перемотка вперед невозможна, отмена."
 
-#: builtin/merge-recursive.c:46
+#: builtin/merge.c:1646 builtin/merge.c:1711
 #, c-format
-msgid "unknown option %s"
-msgstr "неизвеÑ\81Ñ\82наÑ\8f Ð¾Ð¿Ñ\86иÑ\8f %s"
+msgid "Rewinding the tree to pristine...\n"
+msgstr "Ð\9fеÑ\80емоÑ\82ка Ð´ÐµÑ\80ева Ðº Ð¸Ñ\81Ñ\85одномÑ\83 Ñ\81оÑ\81Ñ\82оÑ\8fниÑ\8eâ\80¦\n"
 
-#: builtin/merge-recursive.c:52
+#: builtin/merge.c:1650
 #, c-format
-msgid "could not parse object '%s'"
-msgstr "не Ñ\83далоÑ\81Ñ\8c Ñ\80азобÑ\80аÑ\82Ñ\8c Ð¾Ð±Ñ\8aекÑ\82 Â«%s»"
+msgid "Trying merge strategy %s...\n"
+msgstr "Ð\9fопÑ\8bÑ\82ка Ñ\81лиÑ\8fниÑ\8f Ñ\81 Ð¿Ð¾Ð¼Ð¾Ñ\89Ñ\8cÑ\8e Ñ\81Ñ\82Ñ\80аÑ\82егии %sâ\80¦\n"
 
-#: builtin/merge-recursive.c:56
+#: builtin/merge.c:1702
 #, c-format
-msgid "cannot handle more than %d base. Ignoring %s."
-msgid_plural "cannot handle more than %d bases. Ignoring %s."
-msgstr[0] "невозможно обработать больше %d базы. Игнорирую %s."
-msgstr[1] "невозможно обработать больше %d баз. Игнорирую %s."
-msgstr[2] "невозможно обработать больше %d баз. Игнорирую %s."
-msgstr[3] "невозможно обработать больше %d базы. Игнорирую %s."
+msgid "No merge strategy handled the merge.\n"
+msgstr "Ни одна стратегия слияния не обработала слияние.\n"
 
-#: builtin/merge-recursive.c:64
-msgid "not handling anything other than two heads merge."
-msgstr "не обрабатываю ничего, кроме слияния двух указателей на ветки."
+#: builtin/merge.c:1704
+#, c-format
+msgid "Merge with strategy %s failed.\n"
+msgstr "Сбой при слиянии с помощью стратегии %s.\n"
 
-#: builtin/merge-recursive.c:70 builtin/merge-recursive.c:72
+#: builtin/merge.c:1713
 #, c-format
-msgid "could not resolve ref '%s'"
-msgstr "не Ñ\83далоÑ\81Ñ\8c Ñ\80аÑ\81познаÑ\82Ñ\8c Ñ\81Ñ\81Ñ\8bлкÑ\83 Â«%s»"
+msgid "Using the %s to prepare resolving by hand.\n"
+msgstr "Ð\98Ñ\81полÑ\8cзÑ\83Ñ\8e %s Ð´Ð»Ñ\8f Ð¿Ð¾Ð´Ð³Ð¾Ñ\82овки Ñ\80Ñ\83Ñ\87ного Ñ\80азÑ\80еÑ\88ениÑ\8f ÐºÐ¾Ð½Ñ\84ликÑ\82ов.\n"
 
-#: builtin/merge-recursive.c:78
+#: builtin/merge.c:1727
 #, c-format
-msgid "Merging %s with %s\n"
-msgstr "СлиÑ\8fние %s Ð¸ %s\n"
+msgid "Automatic merge went well; stopped before committing as requested\n"
+msgstr "Ð\90вÑ\82омаÑ\82иÑ\87еÑ\81кое Ñ\81лиÑ\8fние Ð¿Ñ\80оÑ\88ло Ñ\83Ñ\81пеÑ\88но; ÐºÐ°Ðº Ð¸ Ð·Ð°Ð¿Ñ\80аÑ\88ивали, Ð¾Ñ\81Ñ\82ановлено Ð¿ÐµÑ\80ед Ð²Ñ\8bполнением ÐºÐ¾Ð¼Ð¼Ð¸Ñ\82а\n"
 
 #: builtin/mktree.c:66
 msgid "git mktree [-z] [--missing] [--batch]"
@@ -14165,20 +16359,32 @@ msgid "allow creation of more than one tree"
 msgstr "допустить создание более одного дерева"
 
 #: builtin/multi-pack-index.c:9
-msgid "git multi-pack-index [--object-dir=<dir>] (write|verify)"
+msgid ""
+"git multi-pack-index [<options>] (write|verify|expire|repack --batch-"
+"size=<size>)"
 msgstr ""
 
-#: builtin/multi-pack-index.c:22
+#: builtin/multi-pack-index.c:26
 msgid "object directory containing set of packfile and pack-index pairs"
 msgstr ""
 
-#: builtin/multi-pack-index.c:40 builtin/prune-packed.c:67
+#: builtin/multi-pack-index.c:29
+msgid ""
+"during repack, collect pack-files of smaller size into a batch that is "
+"larger than this size"
+msgstr ""
+
+#: builtin/multi-pack-index.c:50 builtin/prune-packed.c:25
 msgid "too many arguments"
 msgstr ""
 
-#: builtin/multi-pack-index.c:51
+#: builtin/multi-pack-index.c:60
+msgid "--batch-size option is only for 'repack' subcommand"
+msgstr ""
+
+#: builtin/multi-pack-index.c:69
 #, c-format
-msgid "unrecognized verb: %s"
+msgid "unrecognized subcommand: %s"
 msgstr ""
 
 #: builtin/mv.c:18
@@ -14207,113 +16413,117 @@ msgstr "принудительно перемещать/переименоват
 msgid "skip move/rename errors"
 msgstr "пропускать ошибки при перемещении/переименовании"
 
-#: builtin/mv.c:169
+#: builtin/mv.c:170
 #, c-format
 msgid "destination '%s' is not a directory"
 msgstr "целевой путь «%s» не является каталогом"
 
-#: builtin/mv.c:180
+#: builtin/mv.c:181
 #, c-format
 msgid "Checking rename of '%s' to '%s'\n"
 msgstr "Проверка переименования из «%s» в «%s»\n"
 
-#: builtin/mv.c:184
+#: builtin/mv.c:185
 msgid "bad source"
 msgstr "плохой источник"
 
-#: builtin/mv.c:187
+#: builtin/mv.c:188
 msgid "can not move directory into itself"
 msgstr "нельзя переместить каталог в самого себя"
 
-#: builtin/mv.c:190
+#: builtin/mv.c:191
 msgid "cannot move directory over file"
 msgstr "нельзя переместить каталог в файл"
 
-#: builtin/mv.c:199
+#: builtin/mv.c:200
 msgid "source directory is empty"
 msgstr "исходный каталог пуст"
 
-#: builtin/mv.c:224
+#: builtin/mv.c:225
 msgid "not under version control"
 msgstr "не под версионным контролем"
 
 #: builtin/mv.c:227
+msgid "conflicted"
+msgstr ""
+
+#: builtin/mv.c:230
 msgid "destination exists"
 msgstr "целевой путь уже существует"
 
-#: builtin/mv.c:235
+#: builtin/mv.c:238
 #, c-format
 msgid "overwriting '%s'"
 msgstr "перезапись «%s»"
 
-#: builtin/mv.c:238
+#: builtin/mv.c:241
 msgid "Cannot overwrite"
 msgstr "Не удалось перезаписать"
 
-#: builtin/mv.c:241
+#: builtin/mv.c:244
 msgid "multiple sources for the same target"
 msgstr "несколько источников для одного целевого пути"
 
-#: builtin/mv.c:243
+#: builtin/mv.c:246
 msgid "destination directory does not exist"
 msgstr "целевой каталог не существует"
 
-#: builtin/mv.c:250
+#: builtin/mv.c:253
 #, c-format
 msgid "%s, source=%s, destination=%s"
 msgstr "%s, откуда=%s, куда=%s"
 
-#: builtin/mv.c:271
+#: builtin/mv.c:274
 #, c-format
 msgid "Renaming %s to %s\n"
 msgstr "Переименование %s в %s\n"
 
-#: builtin/mv.c:277 builtin/remote.c:717 builtin/repack.c:516
+#: builtin/mv.c:280 builtin/remote.c:785 builtin/repack.c:484
 #, c-format
 msgid "renaming '%s' failed"
 msgstr "сбой при переименовании «%s»"
 
-#: builtin/name-rev.c:355
+#: builtin/name-rev.c:465
 msgid "git name-rev [<options>] <commit>..."
 msgstr "git name-rev [<опции>] <коммит>…"
 
-#: builtin/name-rev.c:356
+#: builtin/name-rev.c:466
 msgid "git name-rev [<options>] --all"
 msgstr "git name-rev [<опции>] --all"
 
-#: builtin/name-rev.c:357
+#: builtin/name-rev.c:467
 msgid "git name-rev [<options>] --stdin"
 msgstr "git name-rev [<опции>] --stdin"
 
-#: builtin/name-rev.c:415
-msgid "print only names (no SHA-1)"
-msgstr "выводить только имена (без SHA-1)"
+#: builtin/name-rev.c:524
+msgid "print only ref-based names (no object names)"
+msgstr ""
 
-#: builtin/name-rev.c:416
+#: builtin/name-rev.c:525
 msgid "only use tags to name the commits"
 msgstr "использовать только метки для именования коммитов"
 
-#: builtin/name-rev.c:418
+#: builtin/name-rev.c:527
 msgid "only use refs matching <pattern>"
-msgstr "использовать только ссылки, соответствующие <шаблону> "
+msgstr "использовать только ссылки, соответствующие <шаблону>"
 
-#: builtin/name-rev.c:420
+#: builtin/name-rev.c:529
 msgid "ignore refs matching <pattern>"
 msgstr "игнорировать ссылки, соответствующие <шаблону>"
 
-#: builtin/name-rev.c:422
+#: builtin/name-rev.c:531
 msgid "list all commits reachable from all refs"
 msgstr "вывести список всех коммитов, достижимых со всех ссылок"
 
-#: builtin/name-rev.c:423
+#: builtin/name-rev.c:532
 msgid "read from stdin"
 msgstr "прочитать из стандартного ввода"
 
-#: builtin/name-rev.c:424
+#: builtin/name-rev.c:533
 msgid "allow to print `undefined` names (default)"
 msgstr "разрешить вывод «undefined», если не найдено (по умолчанию)"
 
-#: builtin/name-rev.c:430
+#: builtin/name-rev.c:539
 msgid "dereference tags in the input (internal use)"
 msgstr "разыменовывать введенные метки (для внутреннего использования)"
 
@@ -14453,7 +16663,7 @@ msgstr "не удалось записать объект заметки"
 msgid "the note contents have been left in %s"
 msgstr "содержимое заметки осталось в %s"
 
-#: builtin/notes.c:242 builtin/tag.c:522
+#: builtin/notes.c:242 builtin/tag.c:533
 #, c-format
 msgid "could not open or read '%s'"
 msgstr "не удалось открыть или прочитать «%s»"
@@ -14673,7 +16883,7 @@ msgid ""
 "--abort'.\n"
 msgstr "Не удалось автоматически слить заметки. Исправьте конфликты в %s и закоммитьте результат с помощью «git notes merge --commit», или прервите процесс слияния с помощью «git notes merge --abort».\n"
 
-#: builtin/notes.c:897 builtin/tag.c:535
+#: builtin/notes.c:897 builtin/tag.c:546
 #, c-format
 msgid "Failed to resolve '%s' as a valid ref."
 msgstr "Не удалось разрешить «%s» как ссылку."
@@ -14691,7 +16901,7 @@ msgstr "попытка удаления несуществующей замет
 msgid "read object names from the standard input"
 msgstr "прочитать имена объектов из стандартного ввода"
 
-#: builtin/notes.c:954 builtin/prune.c:130 builtin/worktree.c:165
+#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:220
 msgid "do not remove, show only"
 msgstr "не удалять, только показать список"
 
@@ -14707,387 +16917,375 @@ msgstr "ссылка-на-заметку"
 msgid "use notes from <notes-ref>"
 msgstr "использовать заметку из <ссылка-на-заметку>"
 
-#: builtin/notes.c:1034 builtin/stash.c:1611
+#: builtin/notes.c:1034 builtin/stash.c:1604
 #, c-format
 msgid "unknown subcommand: %s"
 msgstr "неизвестная подкоманда: %s"
 
-#: builtin/pack-objects.c:52
+#: builtin/pack-objects.c:54
 msgid ""
 "git pack-objects --stdout [<options>...] [< <ref-list> | < <object-list>]"
 msgstr "git pack-objects --stdout [<опции>…] [< <список-ссылок> | < <список-объектов>]"
 
-#: builtin/pack-objects.c:53
+#: builtin/pack-objects.c:55
 msgid ""
 "git pack-objects [<options>...] <base-name> [< <ref-list> | < <object-list>]"
 msgstr "git pack-objects [<опции>…] <имя-базы> [< <список-ссылок> | < <список-объектов>]"
 
-#: builtin/pack-objects.c:424
+#: builtin/pack-objects.c:443
 #, c-format
 msgid "bad packed object CRC for %s"
 msgstr ""
 
-#: builtin/pack-objects.c:435
+#: builtin/pack-objects.c:454
 #, c-format
 msgid "corrupt packed object for %s"
 msgstr ""
 
-#: builtin/pack-objects.c:566
+#: builtin/pack-objects.c:585
 #, c-format
 msgid "recursive delta detected for object %s"
 msgstr ""
 
-#: builtin/pack-objects.c:777
+#: builtin/pack-objects.c:796
 #, c-format
 msgid "ordered %u objects, expected %<PRIu32>"
 msgstr ""
 
-#: builtin/pack-objects.c:790
-#, c-format
-msgid "packfile is invalid: %s"
-msgstr ""
-
-#: builtin/pack-objects.c:794
-#, c-format
-msgid "unable to open packfile for reuse: %s"
-msgstr ""
-
-#: builtin/pack-objects.c:798
-msgid "unable to seek in reused packfile"
-msgstr ""
-
-#: builtin/pack-objects.c:809
-msgid "unable to read from reused packfile"
-msgstr ""
-
-#: builtin/pack-objects.c:837
+#: builtin/pack-objects.c:1004
 msgid "disabling bitmap writing, packs are split due to pack.packSizeLimit"
 msgstr "отключение записи битовых карт, так как карты были разбиты на части из-за pack.packSizeLimit"
 
-#: builtin/pack-objects.c:850
+#: builtin/pack-objects.c:1017
 msgid "Writing objects"
 msgstr "Запись объектов"
 
-#: builtin/pack-objects.c:912 builtin/update-index.c:89
+#: builtin/pack-objects.c:1078 builtin/update-index.c:90
 #, c-format
 msgid "failed to stat %s"
 msgstr "не удалось выполнить stat %s"
 
-#: builtin/pack-objects.c:965
+#: builtin/pack-objects.c:1131
 #, c-format
 msgid "wrote %<PRIu32> objects while expecting %<PRIu32>"
 msgstr ""
 
-#: builtin/pack-objects.c:1161
+#: builtin/pack-objects.c:1348
 msgid "disabling bitmap writing, as some objects are not being packed"
 msgstr "отключение записи битовых карт, так как некоторые объекты не были упакованы"
 
-#: builtin/pack-objects.c:1589
+#: builtin/pack-objects.c:1796
 #, c-format
 msgid "delta base offset overflow in pack for %s"
 msgstr ""
 
-#: builtin/pack-objects.c:1598
+#: builtin/pack-objects.c:1805
 #, c-format
 msgid "delta base offset out of bound for %s"
 msgstr ""
 
-#: builtin/pack-objects.c:1867
+#: builtin/pack-objects.c:2086
 msgid "Counting objects"
 msgstr "Подсчет объектов"
 
-#: builtin/pack-objects.c:1997
-#, c-format
-msgid "unable to get size of %s"
-msgstr "не удалось получить размер %s"
-
-#: builtin/pack-objects.c:2012
+#: builtin/pack-objects.c:2231
 #, c-format
 msgid "unable to parse object header of %s"
 msgstr "не удалось разобрать заголовок объекта %s"
 
-#: builtin/pack-objects.c:2082 builtin/pack-objects.c:2098
-#: builtin/pack-objects.c:2108
+#: builtin/pack-objects.c:2301 builtin/pack-objects.c:2317
+#: builtin/pack-objects.c:2327
 #, c-format
 msgid "object %s cannot be read"
 msgstr ""
 
-#: builtin/pack-objects.c:2085 builtin/pack-objects.c:2112
+#: builtin/pack-objects.c:2304 builtin/pack-objects.c:2331
 #, c-format
 msgid "object %s inconsistent object length (%<PRIuMAX> vs %<PRIuMAX>)"
 msgstr ""
 
-#: builtin/pack-objects.c:2122
+#: builtin/pack-objects.c:2341
 msgid "suboptimal pack - out of memory"
 msgstr ""
 
-#: builtin/pack-objects.c:2448
+#: builtin/pack-objects.c:2656
 #, c-format
 msgid "Delta compression using up to %d threads"
 msgstr "При сжатии изменений используется до %d потоков"
 
-#: builtin/pack-objects.c:2580
+#: builtin/pack-objects.c:2795
 #, c-format
 msgid "unable to pack objects reachable from tag %s"
 msgstr ""
 
-#: builtin/pack-objects.c:2667
+#: builtin/pack-objects.c:2883
 msgid "Compressing objects"
 msgstr "Сжатие объектов"
 
-#: builtin/pack-objects.c:2673
+#: builtin/pack-objects.c:2889
 msgid "inconsistency with delta count"
 msgstr ""
 
-#: builtin/pack-objects.c:2754
+#: builtin/pack-objects.c:2961
+#, c-format
+msgid ""
+"value of uploadpack.blobpackfileuri must be of the form '<object-hash> "
+"<pack-hash> <uri>' (got '%s')"
+msgstr ""
+
+#: builtin/pack-objects.c:2964
+#, c-format
+msgid ""
+"object already configured in another uploadpack.blobpackfileuri (got '%s')"
+msgstr ""
+
+#: builtin/pack-objects.c:2993
 #, c-format
 msgid ""
 "expected edge object ID, got garbage:\n"
 " %s"
 msgstr ""
 
-#: builtin/pack-objects.c:2760
+#: builtin/pack-objects.c:2999
 #, c-format
 msgid ""
 "expected object ID, got garbage:\n"
 " %s"
 msgstr ""
 
-#: builtin/pack-objects.c:2858
+#: builtin/pack-objects.c:3097
 msgid "invalid value for --missing"
 msgstr "недопустимое значение для --missing"
 
-#: builtin/pack-objects.c:2917 builtin/pack-objects.c:3025
+#: builtin/pack-objects.c:3156 builtin/pack-objects.c:3264
 msgid "cannot open pack index"
 msgstr ""
 
-#: builtin/pack-objects.c:2948
+#: builtin/pack-objects.c:3187
 #, c-format
 msgid "loose object at %s could not be examined"
 msgstr ""
 
-#: builtin/pack-objects.c:3033
+#: builtin/pack-objects.c:3272
 msgid "unable to force loose object"
 msgstr ""
 
-#: builtin/pack-objects.c:3125
+#: builtin/pack-objects.c:3365
 #, c-format
 msgid "not a rev '%s'"
 msgstr ""
 
-#: builtin/pack-objects.c:3128
+#: builtin/pack-objects.c:3368
 #, c-format
 msgid "bad revision '%s'"
 msgstr ""
 
-#: builtin/pack-objects.c:3153
+#: builtin/pack-objects.c:3393
 msgid "unable to add recent objects"
 msgstr ""
 
-#: builtin/pack-objects.c:3206
+#: builtin/pack-objects.c:3446
 #, c-format
 msgid "unsupported index version %s"
 msgstr "неподдерживаемая версия индекса %s"
 
-#: builtin/pack-objects.c:3210
+#: builtin/pack-objects.c:3450
 #, c-format
 msgid "bad index version '%s'"
 msgstr "плохая версия индекса «%s»"
 
-#: builtin/pack-objects.c:3240
-msgid "do not show progress meter"
-msgstr "не выводить прогресс выполнения"
-
-#: builtin/pack-objects.c:3242
-msgid "show progress meter"
-msgstr "показать прогресс выполнения"
-
-#: builtin/pack-objects.c:3244
-msgid "show progress meter during object writing phase"
-msgstr "показать прогресс выполнения во время записи объектов"
-
-#: builtin/pack-objects.c:3247
-msgid "similar to --all-progress when progress meter is shown"
-msgstr "похоже на --all-progress при включенном прогрессе выполнения"
-
-#: builtin/pack-objects.c:3248
+#: builtin/pack-objects.c:3488
 msgid "<version>[,<offset>]"
 msgstr ""
 
-#: builtin/pack-objects.c:3249
+#: builtin/pack-objects.c:3489
 msgid "write the pack index file in the specified idx format version"
 msgstr "записать файл индекса пакета в указанной версии формата"
 
-#: builtin/pack-objects.c:3252
+#: builtin/pack-objects.c:3492
 msgid "maximum size of each output pack file"
 msgstr "максимальный размер каждого выходного файла пакета"
 
-#: builtin/pack-objects.c:3254
+#: builtin/pack-objects.c:3494
 msgid "ignore borrowed objects from alternate object store"
 msgstr "игнорировать чужие объекты, взятые из альтернативного хранилища объектов"
 
-#: builtin/pack-objects.c:3256
+#: builtin/pack-objects.c:3496
 msgid "ignore packed objects"
 msgstr "игнорировать упакованные объекты"
 
-#: builtin/pack-objects.c:3258
+#: builtin/pack-objects.c:3498
 msgid "limit pack window by objects"
 msgstr "ограничить окно пакета по количеству объектов"
 
-#: builtin/pack-objects.c:3260
+#: builtin/pack-objects.c:3500
 msgid "limit pack window by memory in addition to object limit"
 msgstr "дополнительно к количеству объектов ограничить окно пакета по памяти"
 
-#: builtin/pack-objects.c:3262
+#: builtin/pack-objects.c:3502
 msgid "maximum length of delta chain allowed in the resulting pack"
 msgstr "максимальная разрешенная длина цепочки дельт в результирующем пакете"
 
-#: builtin/pack-objects.c:3264
+#: builtin/pack-objects.c:3504
 msgid "reuse existing deltas"
 msgstr "использовать повторно существующие дельты"
 
-#: builtin/pack-objects.c:3266
+#: builtin/pack-objects.c:3506
 msgid "reuse existing objects"
 msgstr "использовать повторно существующие объекты"
 
-#: builtin/pack-objects.c:3268
+#: builtin/pack-objects.c:3508
 msgid "use OFS_DELTA objects"
 msgstr "использовать объекты OFS_DELTA"
 
-#: builtin/pack-objects.c:3270
+#: builtin/pack-objects.c:3510
 msgid "use threads when searching for best delta matches"
 msgstr "использовать многопоточность при поиске лучших совпадений дельт"
 
-#: builtin/pack-objects.c:3272
+#: builtin/pack-objects.c:3512
 msgid "do not create an empty pack output"
 msgstr "не создавать пустые выходные пакеты"
 
-#: builtin/pack-objects.c:3274
+#: builtin/pack-objects.c:3514
 msgid "read revision arguments from standard input"
 msgstr "прочитать аргументы редакций из стандартного ввода"
 
-#: builtin/pack-objects.c:3276
+#: builtin/pack-objects.c:3516
 msgid "limit the objects to those that are not yet packed"
 msgstr "ограничиться объектами, которые еще не упакованы"
 
-#: builtin/pack-objects.c:3279
+#: builtin/pack-objects.c:3519
 msgid "include objects reachable from any reference"
 msgstr "включить объекты, которые достижимы по любой из ссылок"
 
-#: builtin/pack-objects.c:3282
+#: builtin/pack-objects.c:3522
 msgid "include objects referred by reflog entries"
 msgstr "включить объекты, на которые ссылаются записи журнала ссылок"
 
-#: builtin/pack-objects.c:3285
+#: builtin/pack-objects.c:3525
 msgid "include objects referred to by the index"
 msgstr "включить объекты, на которые ссылается индекс"
 
-#: builtin/pack-objects.c:3288
+#: builtin/pack-objects.c:3528
 msgid "output pack to stdout"
 msgstr "вывести пакет на  стандартный вывод"
 
-#: builtin/pack-objects.c:3290
+#: builtin/pack-objects.c:3530
 msgid "include tag objects that refer to objects to be packed"
 msgstr "включить объекты меток, которые ссылаются на упаковываемые объекты"
 
-#: builtin/pack-objects.c:3292
+#: builtin/pack-objects.c:3532
 msgid "keep unreachable objects"
 msgstr "сохранять ссылки на недоступные объекты"
 
-#: builtin/pack-objects.c:3294
+#: builtin/pack-objects.c:3534
 msgid "pack loose unreachable objects"
 msgstr "паковать недостижимые объекты"
 
-#: builtin/pack-objects.c:3296
+#: builtin/pack-objects.c:3536
 msgid "unpack unreachable objects newer than <time>"
 msgstr "распаковать недоступные объекты, которые новее, чем <время>"
 
-#: builtin/pack-objects.c:3299
+#: builtin/pack-objects.c:3539
 msgid "use the sparse reachability algorithm"
 msgstr ""
 
-#: builtin/pack-objects.c:3301
+#: builtin/pack-objects.c:3541
 msgid "create thin packs"
 msgstr "создавать тонкие пакеты"
 
-#: builtin/pack-objects.c:3303
+#: builtin/pack-objects.c:3543
 msgid "create packs suitable for shallow fetches"
 msgstr "создавать пакеты, подходящие для частичных извлечений"
 
-#: builtin/pack-objects.c:3305
+#: builtin/pack-objects.c:3545
 msgid "ignore packs that have companion .keep file"
 msgstr "игнорировать пакеты, рядом с которыми лежит .keep файл"
 
-#: builtin/pack-objects.c:3307
+#: builtin/pack-objects.c:3547
 msgid "ignore this pack"
 msgstr "игнорировать этот пакет"
 
-#: builtin/pack-objects.c:3309
+#: builtin/pack-objects.c:3549
 msgid "pack compression level"
 msgstr "уровень сжатия пакета"
 
-#: builtin/pack-objects.c:3311
+#: builtin/pack-objects.c:3551
 msgid "do not hide commits by grafts"
 msgstr "не скрывать коммиты сращениями"
 
-#: builtin/pack-objects.c:3313
+#: builtin/pack-objects.c:3553
 msgid "use a bitmap index if available to speed up counting objects"
 msgstr "по возможности использовать индекс в битовых картах, для ускорения подсчета объектов"
 
-#: builtin/pack-objects.c:3315
+#: builtin/pack-objects.c:3555
 msgid "write a bitmap index together with the pack index"
 msgstr "запись индекса в битовых картах вместе с индексом пакета"
 
-#: builtin/pack-objects.c:3318
+#: builtin/pack-objects.c:3559
+msgid "write a bitmap index if possible"
+msgstr ""
+
+#: builtin/pack-objects.c:3563
 msgid "handling for missing objects"
 msgstr "обработка отсутствующих объектов"
 
-#: builtin/pack-objects.c:3321
+#: builtin/pack-objects.c:3566
 msgid "do not pack objects in promisor packfiles"
 msgstr "не упаковывать объекты в promisor файлы пакетов"
 
-#: builtin/pack-objects.c:3323
+#: builtin/pack-objects.c:3568
 msgid "respect islands during delta compression"
 msgstr ""
 
-#: builtin/pack-objects.c:3348
+#: builtin/pack-objects.c:3570
+msgid "protocol"
+msgstr ""
+
+#: builtin/pack-objects.c:3571
+msgid "exclude any configured uploadpack.blobpackfileuri with this protocol"
+msgstr ""
+
+#: builtin/pack-objects.c:3600
 #, c-format
 msgid "delta chain depth %d is too deep, forcing %d"
 msgstr "глубина цепочки изменений %d слишком большая, использую принудительно %d"
 
-#: builtin/pack-objects.c:3353
+#: builtin/pack-objects.c:3605
 #, c-format
 msgid "pack.deltaCacheLimit is too high, forcing %d"
 msgstr "лисит pack.deltaCacheLimit слишком высокий, использую принудительно %d"
 
-#: builtin/pack-objects.c:3407
+#: builtin/pack-objects.c:3659
 msgid "--max-pack-size cannot be used to build a pack for transfer"
 msgstr ""
 
-#: builtin/pack-objects.c:3409
+#: builtin/pack-objects.c:3661
 msgid "minimum pack size limit is 1 MiB"
 msgstr ""
 
-#: builtin/pack-objects.c:3414
+#: builtin/pack-objects.c:3666
 msgid "--thin cannot be used to build an indexable pack"
 msgstr ""
 
-#: builtin/pack-objects.c:3417
+#: builtin/pack-objects.c:3669
 msgid "--keep-unreachable and --unpack-unreachable are incompatible"
 msgstr ""
 
-#: builtin/pack-objects.c:3423
+#: builtin/pack-objects.c:3675
 msgid "cannot use --filter without --stdout"
 msgstr ""
 
-#: builtin/pack-objects.c:3484
+#: builtin/pack-objects.c:3735
 msgid "Enumerating objects"
 msgstr "Перечисление объектов"
 
-#: builtin/pack-objects.c:3514
+#: builtin/pack-objects.c:3766
 #, c-format
-msgid "Total %<PRIu32> (delta %<PRIu32>), reused %<PRIu32> (delta %<PRIu32>)"
-msgstr "Всего %<PRIu32> (изменения %<PRIu32>), повторно использовано %<PRIu32> (изменения %<PRIu32>)"
+msgid ""
+"Total %<PRIu32> (delta %<PRIu32>), reused %<PRIu32> (delta %<PRIu32>), pack-"
+"reused %<PRIu32>"
+msgstr "Всего %<PRIu32> (изменений %<PRIu32>), повторно использовано %<PRIu32> (изменений %<PRIu32>), повторно использовано пакетов %<PRIu32>"
 
 #: builtin/pack-refs.c:8
 msgid "git pack-refs [<options>]"
@@ -15101,98 +17299,110 @@ msgstr "паковать всё"
 msgid "prune loose refs (default)"
 msgstr "почистить слабые ссылки (по умолчанию)"
 
-#: builtin/prune-packed.c:9
+#: builtin/prune-packed.c:6
 msgid "git prune-packed [-n | --dry-run] [-q | --quiet]"
 msgstr "git prune-packed [-n | --dry-run] [-q | --quiet]"
 
-#: builtin/prune-packed.c:42
-msgid "Removing duplicate objects"
-msgstr "Удаление дублирующихся объектов"
-
-#: builtin/prune.c:12
+#: builtin/prune.c:14
 msgid "git prune [-n] [-v] [--progress] [--expire <time>] [--] [<head>...]"
 msgstr "git prune [-n] [-v] [--progress] [--expire <время>] [--] [<редакция>…]"
 
-#: builtin/prune.c:131
+#: builtin/prune.c:133
 msgid "report pruned objects"
 msgstr "вывести список удаленных объектов"
 
-#: builtin/prune.c:134
+#: builtin/prune.c:136
 msgid "expire objects older than <time>"
 msgstr "удалить объекты старее чем <дата-окончания>"
 
-#: builtin/prune.c:136
+#: builtin/prune.c:138
 msgid "limit traversal to objects outside promisor packfiles"
 msgstr "ограничить обход объектами вне promisor файлов пакетов"
 
-#: builtin/prune.c:150
+#: builtin/prune.c:152
 msgid "cannot prune in a precious-objects repo"
 msgstr "нельзя почистить неиспользуемые объекты в precious-objects репозитории"
 
-#: builtin/pull.c:66 builtin/pull.c:68
+#: builtin/pull.c:45 builtin/pull.c:47
 #, c-format
 msgid "Invalid value for %s: %s"
 msgstr "Неправильное значение %s: %s"
 
-#: builtin/pull.c:88
+#: builtin/pull.c:67
 msgid "git pull [<options>] [<repository> [<refspec>...]]"
 msgstr "git pull [<опции>] [<репозиторий> [<спецификатор-ссылки>…]]"
 
-#: builtin/pull.c:140
+#: builtin/pull.c:123
 msgid "control for recursive fetching of submodules"
 msgstr "управление рекурсивным извлечением подмодулей"
 
-#: builtin/pull.c:144
+#: builtin/pull.c:127
 msgid "Options related to merging"
 msgstr "Опции, связанные со слиянием"
 
-#: builtin/pull.c:147
+#: builtin/pull.c:130
 msgid "incorporate changes by rebasing rather than merging"
 msgstr "забрать изменения с помощью перемещения, а не слияния"
 
-#: builtin/pull.c:175 builtin/rebase.c:447 builtin/revert.c:125
+#: builtin/pull.c:158 builtin/rebase.c:490 builtin/revert.c:126
 msgid "allow fast-forward"
 msgstr "разрешить перемотку вперед"
 
-#: builtin/pull.c:184
-msgid "automatically stash/stash pop before and after rebase"
-msgstr "автоматически выполнять stash/stash pop до и после перемещения"
+#: builtin/pull.c:167 parse-options.h:339
+msgid "automatically stash/stash pop before and after"
+msgstr ""
 
-#: builtin/pull.c:200
+#: builtin/pull.c:183
 msgid "Options related to fetching"
 msgstr "Опции, связанные с извлечением изменений"
 
-#: builtin/pull.c:210
+#: builtin/pull.c:193
 msgid "force overwrite of local branch"
 msgstr "принудительная перезапись локальной ветки"
 
-#: builtin/pull.c:218
+#: builtin/pull.c:201
 msgid "number of submodules pulled in parallel"
 msgstr "количество подмодулей, которые будут получены парралельно"
 
-#: builtin/pull.c:313
+#: builtin/pull.c:317
 #, c-format
 msgid "Invalid value for pull.ff: %s"
 msgstr "Неправильное значение для pull.ff: %s"
 
-#: builtin/pull.c:430
+#: builtin/pull.c:348
+msgid ""
+"Pulling without specifying how to reconcile divergent branches is\n"
+"discouraged. You can squelch this message by running one of the following\n"
+"commands sometime before your next pull:\n"
+"\n"
+"  git config pull.rebase false  # merge (the default strategy)\n"
+"  git config pull.rebase true   # rebase\n"
+"  git config pull.ff only       # fast-forward only\n"
+"\n"
+"You can replace \"git config\" with \"git config --global\" to set a default\n"
+"preference for all repositories. You can also pass --rebase, --no-rebase,\n"
+"or --ff-only on the command line to override the configured default per\n"
+"invocation.\n"
+msgstr ""
+
+#: builtin/pull.c:458
 msgid ""
 "There is no candidate for rebasing against among the refs that you just "
 "fetched."
 msgstr "Нет претендентов для перемещения среди ссылок, которые вы только что получили."
 
-#: builtin/pull.c:432
+#: builtin/pull.c:460
 msgid ""
 "There are no candidates for merging among the refs that you just fetched."
 msgstr "Нет претендентов для слияния среди ссылок, которые вы только что получили."
 
-#: builtin/pull.c:433
+#: builtin/pull.c:461
 msgid ""
 "Generally this means that you provided a wildcard refspec which had no\n"
 "matches on the remote end."
 msgstr "Обычно это означает, что вы передали спецификацию ссылки с помощью шаблона и этот шаблон ни с чем не совпал на внешнем репозитории."
 
-#: builtin/pull.c:436
+#: builtin/pull.c:464
 #, c-format
 msgid ""
 "You asked to pull from the remote '%s', but did not specify\n"
@@ -15200,74 +17410,69 @@ msgid ""
 "for your current branch, you must specify a branch on the command line."
 msgstr "Вы попросили получить изменения со внешнего репозитория «%s», но не указали ветку. Так как это не репозиторий по умолчанию для  вашей текущей ветки, вы должны указать ветку в командной строке."
 
-#: builtin/pull.c:441 builtin/rebase.c:1321 git-parse-remote.sh:73
+#: builtin/pull.c:469 builtin/rebase.c:1246
 msgid "You are not currently on a branch."
 msgstr "Вы сейчас ни на одной из веток."
 
-#: builtin/pull.c:443 builtin/pull.c:458 git-parse-remote.sh:79
+#: builtin/pull.c:471 builtin/pull.c:486
 msgid "Please specify which branch you want to rebase against."
 msgstr "Пожалуйста, укажите на какую ветку вы хотите переместить изменения."
 
-#: builtin/pull.c:445 builtin/pull.c:460 git-parse-remote.sh:82
+#: builtin/pull.c:473 builtin/pull.c:488
 msgid "Please specify which branch you want to merge with."
 msgstr "Пожалуйста, укажите с какой веткой вы хотите слить изменения."
 
-#: builtin/pull.c:446 builtin/pull.c:461
+#: builtin/pull.c:474 builtin/pull.c:489
 msgid "See git-pull(1) for details."
 msgstr "Для дополнительной информации, смотрите git-pull(1)."
 
-#: builtin/pull.c:448 builtin/pull.c:454 builtin/pull.c:463
-#: builtin/rebase.c:1327 git-parse-remote.sh:64
+#: builtin/pull.c:476 builtin/pull.c:482 builtin/pull.c:491
+#: builtin/rebase.c:1252
 msgid "<remote>"
 msgstr "<внешний-репозиторий>"
 
-#: builtin/pull.c:448 builtin/pull.c:463 builtin/pull.c:468
-#: git-parse-remote.sh:65
+#: builtin/pull.c:476 builtin/pull.c:491 builtin/pull.c:496
 msgid "<branch>"
 msgstr "<ветка>"
 
-#: builtin/pull.c:456 builtin/rebase.c:1319 git-parse-remote.sh:75
+#: builtin/pull.c:484 builtin/rebase.c:1244
 msgid "There is no tracking information for the current branch."
 msgstr "У текущей ветки нет информации об отслеживании."
 
-#: builtin/pull.c:465 git-parse-remote.sh:95
+#: builtin/pull.c:493
 msgid ""
 "If you wish to set tracking information for this branch you can do so with:"
 msgstr "Если вы хотите указать информацию о отслеживаемой ветке, выполните:"
 
-#: builtin/pull.c:470
+#: builtin/pull.c:498
 #, c-format
 msgid ""
 "Your configuration specifies to merge with the ref '%s'\n"
 "from the remote, but no such ref was fetched."
 msgstr "Ваша конфигурация указывает, что нужно слить изменения со ссылкой\n«%s» из внешнего репозитория, но такая ссылка не была получена."
 
-#: builtin/pull.c:574
+#: builtin/pull.c:609
 #, c-format
 msgid "unable to access commit %s"
 msgstr ""
 
-#: builtin/pull.c:854
+#: builtin/pull.c:915
 msgid "ignoring --verify-signatures for rebase"
 msgstr "игнорирование --verify-signatures при перемещении"
 
-#: builtin/pull.c:909
-msgid "--[no-]autostash option is only valid with --rebase."
-msgstr "--[no-]autostash можно использовать только вместе с --rebase."
-
-#: builtin/pull.c:917
+#: builtin/pull.c:972
 msgid "Updating an unborn branch with changes added to the index."
 msgstr "Обновление еще не начавшейся ветки с изменениями, добавленными в индекс."
 
-#: builtin/pull.c:921
+#: builtin/pull.c:976
 msgid "pull with rebase"
 msgstr "получение с перемещением"
 
-#: builtin/pull.c:922
+#: builtin/pull.c:977
 msgid "please commit or stash them."
 msgstr "сделайте коммит или спрячьте их."
 
-#: builtin/pull.c:947
+#: builtin/pull.c:1002
 #, c-format
 msgid ""
 "fetch updated the current branch head.\n"
@@ -15275,7 +17480,7 @@ msgid ""
 "commit %s."
 msgstr "извлечение обновило указатель на вашу текущую ветку.\nперемотка вашего рабочего каталога\nс коммита %s."
 
-#: builtin/pull.c:953
+#: builtin/pull.c:1008
 #, c-format
 msgid ""
 "Cannot fast-forward your working tree.\n"
@@ -15286,15 +17491,15 @@ msgid ""
 "to recover."
 msgstr "Не удалось перемотать вперёд изменения в вашем рабочем каталоге.\nПосле того, как вы убедитесь, что вы сохранили всё необходимое из вывода\n$ git diff %s\n, запустите\n$ git reset --hard\nдля восстановления исходного состояния."
 
-#: builtin/pull.c:968
+#: builtin/pull.c:1023
 msgid "Cannot merge multiple branches into empty head."
 msgstr "Нельзя слить несколько веток в пустой указатель на ветку."
 
-#: builtin/pull.c:972
+#: builtin/pull.c:1027
 msgid "Cannot rebase onto multiple branches."
 msgstr "Невозможно переместить над несколькими ветками."
 
-#: builtin/pull.c:979
+#: builtin/pull.c:1041
 msgid "cannot rebase with locally recorded submodule modifications"
 msgstr "невозможно выполнить перемещение с записанными локальными изменениями в подмодулях"
 
@@ -15306,17 +17511,17 @@ msgstr "git push [<опции>] [<репозиторий> [<спецификат
 msgid "tag shorthand without <tag>"
 msgstr "указано сокращение tag, но не указана сама <метка>"
 
-#: builtin/push.c:121
+#: builtin/push.c:119
 msgid "--delete only accepts plain target ref names"
 msgstr "опция --delete принимает только простые целевые имена ссылок"
 
-#: builtin/push.c:167
+#: builtin/push.c:164
 msgid ""
 "\n"
 "To choose either option permanently, see push.default in 'git help config'."
 msgstr "\nЧтобы выбрать любую из опций на постоянной основе, смотрите push.default в «git help config»."
 
-#: builtin/push.c:170
+#: builtin/push.c:167
 #, c-format
 msgid ""
 "The upstream branch of your current branch does not match\n"
@@ -15331,7 +17536,7 @@ msgid ""
 "%s"
 msgstr ""
 
-#: builtin/push.c:185
+#: builtin/push.c:182
 #, c-format
 msgid ""
 "You are not currently on a branch.\n"
@@ -15341,7 +17546,7 @@ msgid ""
 "    git push %s HEAD:<name-of-remote-branch>\n"
 msgstr "Вы сейчас не находитесь ни на одной из веток.\nЧтобы отправить историю, ведущую к текущему (отделённый HEAD) состоянию, используйте\n\n    git push %s HEAD:<имя-внешней-ветки>\n"
 
-#: builtin/push.c:199
+#: builtin/push.c:194
 #, c-format
 msgid ""
 "The current branch %s has no upstream branch.\n"
@@ -15350,13 +17555,13 @@ msgid ""
 "    git push --set-upstream %s %s\n"
 msgstr "Текущая ветка %s не имеет вышестоящей ветки.\nЧтобы отправить текущую ветку и установить внешнюю ветку как вышестоящую для этой ветки, используйте\n\n    git push --set-upstream %s %s\n"
 
-#: builtin/push.c:207
+#: builtin/push.c:202
 #, c-format
 msgid ""
 "The current branch %s has multiple upstream branches, refusing to push."
 msgstr "Ваша текущая ветка %s имеет несколько вышестоящих веток, отказ в отправке изменений."
 
-#: builtin/push.c:210
+#: builtin/push.c:205
 #, c-format
 msgid ""
 "You are pushing to remote '%s', which is not the upstream of\n"
@@ -15364,11 +17569,11 @@ msgid ""
 "to update which remote branch."
 msgstr "Вы сейчас отправляете изменения на внешний репозиторий «%s», который не является вышестоящим для вашей текущей ветки «%s», без указания того, что отправлять и в какую внешнюю ветку."
 
-#: builtin/push.c:269
+#: builtin/push.c:260
 msgid "You didn't specify any refspecs to push, and push.default is \"nothing\"."
 msgstr "Вы не указали спецификацию ссылки для отправки, а push.default указан как «nothing»."
 
-#: builtin/push.c:276
+#: builtin/push.c:267
 msgid ""
 "Updates were rejected because the tip of your current branch is behind\n"
 "its remote counterpart. Integrate the remote changes (e.g.\n"
@@ -15376,7 +17581,7 @@ msgid ""
 "See the 'Note about fast-forwards' in 'git push --help' for details."
 msgstr "Обновления были отклонены, так как верхушка вашей текущей ветки\nпозади ее внешней части. Заберите и слейте внешние изменения \n(например, с помощью «git pull …») перед повторной попыткой отправки\nизменений.\nДля дополнительной информации, смотрите «Note about fast-forwards»\nв «git push --help»."
 
-#: builtin/push.c:282
+#: builtin/push.c:273
 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"
@@ -15384,7 +17589,7 @@ msgid ""
 "See the 'Note about fast-forwards' in 'git push --help' for details."
 msgstr "Обновления были отклонены, так как верхушка отправляемой ветки\nпозади ее внешней части. Переключитесь на ветку и заберите внешние\nизменения (например, с помощью «git pull …») перед повторной\nпопыткой отправки изменений.\nДля дополнительной информации, смотрите «Note about fast-forwards»\nв «git push --help»."
 
-#: builtin/push.c:288
+#: builtin/push.c:279
 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"
@@ -15393,86 +17598,81 @@ msgid ""
 "See the 'Note about fast-forwards' in 'git push --help' for details."
 msgstr "Обновления были отклонены, так как внешний репозиторий содержит\nизменения, которых у вас нет в вашем локальном репозитории.\nОбычно, это связанно с тем, что кто-то уже отправил изменения в \nто же место. Перед повторной отправкой ваших изменений, вам нужно\nзабрать и слить изменения из внешнего репозитория себе\n(например, с помощью «git pull …»).\nДля дополнительной информации, смотрите «Note about fast-forwards»\nв «git push --help»."
 
-#: builtin/push.c:295
+#: builtin/push.c:286
 msgid "Updates were rejected because the tag already exists in the remote."
 msgstr "Обновления были отклонены, так как метка уже существует во внешнем репозитории."
 
-#: builtin/push.c:298
+#: builtin/push.c:289
 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 "Вы не можете обновить внешнюю ссылку, которая указывает на объект, не являющийся коммитом или обновить внешнюю ссылку так, чтобы она указывала на объект, не являющийся коммитом, без указания опции «--force».\n"
 
-#: builtin/push.c:359
+#: builtin/push.c:294
+msgid ""
+"Updates were rejected because the tip of the remote-tracking\n"
+"branch has been updated since the last checkout. You may want\n"
+"to integrate those changes locally (e.g., 'git pull ...')\n"
+"before forcing an update.\n"
+msgstr ""
+
+#: builtin/push.c:364
 #, c-format
 msgid "Pushing to %s\n"
 msgstr "Отправка в %s\n"
 
-#: builtin/push.c:364
+#: builtin/push.c:371
 #, c-format
 msgid "failed to push some refs to '%s'"
 msgstr "не удалось отправить некоторые ссылки в «%s»"
 
-#: builtin/push.c:398
-#, c-format
-msgid "bad repository '%s'"
-msgstr "плохой репозитория «%s»"
-
-#: builtin/push.c:399
-msgid ""
-"No configured push destination.\n"
-"Either specify the URL from the command-line or configure a remote repository using\n"
-"\n"
-"    git remote add <name> <url>\n"
-"\n"
-"and then push using the remote name\n"
-"\n"
-"    git push <name>\n"
-msgstr "Не настроена точка назначения для отправки.\nЛибо укажите URL с помощью командной строки, либо настройте внешний репозиторий с помощью\n\n    git remote add <имя> <адрес>\n\nа затем отправьте изменения с помощью имени внешнего репозитория\n\n    git push <имя>\n"
-
-#: builtin/push.c:554
+#: builtin/push.c:553
 msgid "repository"
 msgstr "репозиторий"
 
-#: builtin/push.c:555 builtin/send-pack.c:164
+#: builtin/push.c:554 builtin/send-pack.c:189
 msgid "push all refs"
 msgstr "отправить все ссылки"
 
-#: builtin/push.c:556 builtin/send-pack.c:166
+#: builtin/push.c:555 builtin/send-pack.c:191
 msgid "mirror all refs"
 msgstr "сделать зеркало всех ссылок"
 
-#: builtin/push.c:558
+#: builtin/push.c:557
 msgid "delete refs"
 msgstr "удалить ссылки"
 
-#: builtin/push.c:559
+#: builtin/push.c:558
 msgid "push tags (can't be used with --all or --mirror)"
 msgstr "отправить метки (нельзя использовать вместе с --all или --mirror)"
 
-#: builtin/push.c:562 builtin/send-pack.c:167
+#: builtin/push.c:561 builtin/send-pack.c:192
 msgid "force updates"
 msgstr "принудительное обновление"
 
-#: builtin/push.c:564 builtin/send-pack.c:181
+#: builtin/push.c:562 builtin/send-pack.c:204
 msgid "<refname>:<expect>"
 msgstr ""
 
-#: builtin/push.c:565 builtin/send-pack.c:182
+#: builtin/push.c:563 builtin/send-pack.c:205
 msgid "require old value of ref to be at this value"
 msgstr "требовать, чтобы старое значение ссылки было ожидаемым"
 
-#: builtin/push.c:568
+#: builtin/push.c:566 builtin/send-pack.c:208
+msgid "require remote updates to be integrated locally"
+msgstr ""
+
+#: builtin/push.c:569
 msgid "control recursive pushing of submodules"
 msgstr "управление рекурсивной отправкой подмодулей"
 
-#: builtin/push.c:570 builtin/send-pack.c:175
+#: builtin/push.c:570 builtin/send-pack.c:199
 msgid "use thin pack"
 msgstr "использовать тонкие пакеты"
 
-#: builtin/push.c:571 builtin/push.c:572 builtin/send-pack.c:161
-#: builtin/send-pack.c:162
+#: builtin/push.c:571 builtin/push.c:572 builtin/send-pack.c:186
+#: builtin/send-pack.c:187
 msgid "receive pack program"
 msgstr "путь к программе упаковки на сервере"
 
@@ -15492,43 +17692,60 @@ msgstr "пропустить перехватчик pre-push"
 msgid "push missing but relevant tags"
 msgstr "отправить пропущенные, но нужные метки"
 
-#: builtin/push.c:582 builtin/send-pack.c:169
+#: builtin/push.c:581 builtin/send-pack.c:193
 msgid "GPG sign the push"
 msgstr "подписать отправку с помощью GPG"
 
-#: builtin/push.c:584 builtin/send-pack.c:176
+#: builtin/push.c:583 builtin/send-pack.c:200
 msgid "request atomic transaction on remote side"
 msgstr "запросить выполнение атомарной транзакции на внешней стороне"
 
-#: builtin/push.c:602
+#: builtin/push.c:601
 msgid "--delete is incompatible with --all, --mirror and --tags"
 msgstr "--delete несовместимо с  --all, --mirror и --tags"
 
-#: builtin/push.c:604
+#: builtin/push.c:603
 msgid "--delete doesn't make sense without any refs"
 msgstr "--delete не имеет смысла без указания ссылок"
 
-#: builtin/push.c:607
+#: builtin/push.c:623
+#, c-format
+msgid "bad repository '%s'"
+msgstr "плохой репозитория «%s»"
+
+#: builtin/push.c:624
+msgid ""
+"No configured push destination.\n"
+"Either specify the URL from the command-line or configure a remote repository using\n"
+"\n"
+"    git remote add <name> <url>\n"
+"\n"
+"and then push using the remote name\n"
+"\n"
+"    git push <name>\n"
+msgstr "Не настроена точка назначения для отправки.\nЛибо укажите URL с помощью командной строки, либо настройте внешний репозиторий с помощью\n\n    git remote add <имя> <адрес>\n\nа затем отправьте изменения с помощью имени внешнего репозитория\n\n    git push <имя>\n"
+
+#: builtin/push.c:639
 msgid "--all and --tags are incompatible"
 msgstr "--all и --tags нельзя использовать одновременно"
 
-#: builtin/push.c:609
+#: builtin/push.c:641
 msgid "--all can't be combined with refspecs"
 msgstr "--all нельзя использовать вместе со спецификаторами ссылок"
 
-#: builtin/push.c:613
+#: builtin/push.c:645
 msgid "--mirror and --tags are incompatible"
 msgstr "--mirror и --tags нельзя использовать одновременно"
 
-#: builtin/push.c:615
+#: builtin/push.c:647
 msgid "--mirror can't be combined with refspecs"
 msgstr "--mirror нельзя использовать вместе со спецификаторами ссылок"
 
-#: builtin/push.c:618
+#: builtin/push.c:650
 msgid "--all and --mirror are incompatible"
 msgstr "--all и --mirror нельзя использовать одновременно"
 
-#: builtin/push.c:637
+#: builtin/push.c:657
 msgid "push options must not have new line characters"
 msgstr "опции для отправки не должны содержать символы перевода строк"
 
@@ -15544,24 +17761,32 @@ msgstr ""
 msgid "git range-diff [<options>] <base> <old-tip> <new-tip>"
 msgstr ""
 
-#: builtin/range-diff.c:21
+#: builtin/range-diff.c:22
 msgid "Percentage by which creation is weighted"
 msgstr ""
 
-#: builtin/range-diff.c:23
+#: builtin/range-diff.c:24
 msgid "use simple diff colors"
 msgstr ""
 
-#: builtin/range-diff.c:46 builtin/range-diff.c:50
+#: builtin/range-diff.c:26
+msgid "notes"
+msgstr ""
+
+#: builtin/range-diff.c:26
+msgid "passed to 'git log'"
+msgstr ""
+
+#: builtin/range-diff.c:50 builtin/range-diff.c:54
 #, c-format
 msgid "no .. in range: '%s'"
 msgstr ""
 
-#: builtin/range-diff.c:60
+#: builtin/range-diff.c:64
 msgid "single arg format must be symmetric range"
 msgstr ""
 
-#: builtin/range-diff.c:75
+#: builtin/range-diff.c:79
 msgid "need two commit ranges"
 msgstr ""
 
@@ -15640,232 +17865,213 @@ msgstr "отладка unpack-trees"
 msgid "suppress feedback messages"
 msgstr ""
 
-#: builtin/rebase.c:32
+#: builtin/read-tree.c:188
+msgid "You need to resolve your current index first"
+msgstr ""
+
+#: builtin/rebase.c:35
 msgid ""
-"git rebase [-i] [options] [--exec <cmd>] [--onto <newbase>] [<upstream>] "
-"[<branch>]"
+"git rebase [-i] [options] [--exec <cmd>] [--onto <newbase> | --keep-base] "
+"[<upstream> [<branch>]]"
 msgstr ""
 
-#: builtin/rebase.c:34
+#: builtin/rebase.c:37
 msgid ""
 "git rebase [-i] [options] [--exec <cmd>] [--onto <newbase>] --root "
 "[<branch>]"
 msgstr ""
 
-#: builtin/rebase.c:36
+#: builtin/rebase.c:39
 msgid "git rebase --continue | --abort | --skip | --edit-todo"
 msgstr ""
 
-#: builtin/rebase.c:158 builtin/rebase.c:182 builtin/rebase.c:209
+#: builtin/rebase.c:193 builtin/rebase.c:217 builtin/rebase.c:244
 #, c-format
 msgid "unusable todo list: '%s'"
 msgstr "непригодный для использования список дел: «%s»"
 
-#: builtin/rebase.c:167 builtin/rebase.c:193 builtin/rebase.c:217
-#, c-format
-msgid "could not write '%s'."
-msgstr ""
-
-#: builtin/rebase.c:252
-msgid "no HEAD?"
-msgstr ""
-
-#: builtin/rebase.c:279
+#: builtin/rebase.c:310
 #, c-format
 msgid "could not create temporary %s"
 msgstr ""
 
-#: builtin/rebase.c:285
+#: builtin/rebase.c:316
 msgid "could not mark as interactive"
 msgstr ""
 
-#: builtin/rebase.c:343
+#: builtin/rebase.c:369
 msgid "could not generate todo list"
 msgstr ""
 
-#: builtin/rebase.c:382
+#: builtin/rebase.c:411
 msgid "a base commit must be provided with --upstream or --onto"
 msgstr ""
 
-#: builtin/rebase.c:437
+#: builtin/rebase.c:480
 msgid "git rebase--interactive [<options>]"
 msgstr ""
 
-#: builtin/rebase.c:449
-msgid "keep empty commits"
-msgstr "оставить пустые коммиты"
+#: builtin/rebase.c:493 builtin/rebase.c:1388
+msgid "keep commits which start empty"
+msgstr ""
 
-#: builtin/rebase.c:451 builtin/revert.c:127
+#: builtin/rebase.c:497 builtin/revert.c:128
 msgid "allow commits with empty messages"
 msgstr "разрешить коммиты с пустыми сообщениями"
 
-#: builtin/rebase.c:452
+#: builtin/rebase.c:499
 msgid "rebase merge commits"
 msgstr ""
 
-#: builtin/rebase.c:454
+#: builtin/rebase.c:501
 msgid "keep original branch points of cousins"
 msgstr ""
 
-#: builtin/rebase.c:456
+#: builtin/rebase.c:503
 msgid "move commits that begin with squash!/fixup!"
 msgstr ""
 
-#: builtin/rebase.c:457
+#: builtin/rebase.c:504
 msgid "sign commits"
 msgstr ""
 
-#: builtin/rebase.c:459 builtin/rebase.c:1397
+#: builtin/rebase.c:506 builtin/rebase.c:1327
 msgid "display a diffstat of what changed upstream"
 msgstr ""
 
-#: builtin/rebase.c:461
+#: builtin/rebase.c:508
 msgid "continue rebase"
 msgstr "продолжить перемещение"
 
-#: builtin/rebase.c:463
+#: builtin/rebase.c:510
 msgid "skip commit"
 msgstr ""
 
-#: builtin/rebase.c:464
+#: builtin/rebase.c:511
 msgid "edit the todo list"
 msgstr ""
 
-#: builtin/rebase.c:466
+#: builtin/rebase.c:513
 msgid "show the current patch"
 msgstr ""
 
-#: builtin/rebase.c:469
+#: builtin/rebase.c:516
 msgid "shorten commit ids in the todo list"
 msgstr "вывести короткие идентификаторы коммитов в списке действий"
 
-#: builtin/rebase.c:471
+#: builtin/rebase.c:518
 msgid "expand commit ids in the todo list"
 msgstr "вывести полные идентификаторы коммитов в списке действий"
 
-#: builtin/rebase.c:473
+#: builtin/rebase.c:520
 msgid "check the todo list"
 msgstr "проверить список дел"
 
-#: builtin/rebase.c:475
+#: builtin/rebase.c:522
 msgid "rearrange fixup/squash lines"
 msgstr "переставить строки fixup/squash"
 
-#: builtin/rebase.c:477
+#: builtin/rebase.c:524
 msgid "insert exec commands in todo list"
 msgstr "вставить команды исполнения коммитов в списке действий"
 
-#: builtin/rebase.c:478
+#: builtin/rebase.c:525
 msgid "onto"
 msgstr ""
 
-#: builtin/rebase.c:481
+#: builtin/rebase.c:528
 msgid "restrict-revision"
 msgstr ""
 
-#: builtin/rebase.c:481
+#: builtin/rebase.c:528
 msgid "restrict revision"
 msgstr ""
 
-#: builtin/rebase.c:483
+#: builtin/rebase.c:530
 msgid "squash-onto"
 msgstr ""
 
-#: builtin/rebase.c:484
+#: builtin/rebase.c:531
 msgid "squash onto"
 msgstr ""
 
-#: builtin/rebase.c:486
+#: builtin/rebase.c:533
 msgid "the upstream commit"
 msgstr ""
 
-#: builtin/rebase.c:488
+#: builtin/rebase.c:535
 msgid "head-name"
 msgstr ""
 
-#: builtin/rebase.c:488
+#: builtin/rebase.c:535
 msgid "head name"
 msgstr ""
 
-#: builtin/rebase.c:493
+#: builtin/rebase.c:540
 msgid "rebase strategy"
 msgstr ""
 
-#: builtin/rebase.c:494
+#: builtin/rebase.c:541
 msgid "strategy-opts"
 msgstr ""
 
-#: builtin/rebase.c:495
+#: builtin/rebase.c:542
 msgid "strategy options"
 msgstr ""
 
-#: builtin/rebase.c:496
+#: builtin/rebase.c:543
 msgid "switch-to"
 msgstr ""
 
-#: builtin/rebase.c:497
+#: builtin/rebase.c:544
 msgid "the branch or commit to checkout"
 msgstr ""
 
-#: builtin/rebase.c:498
+#: builtin/rebase.c:545
 msgid "onto-name"
 msgstr ""
 
-#: builtin/rebase.c:498
+#: builtin/rebase.c:545
 msgid "onto name"
 msgstr ""
 
-#: builtin/rebase.c:499
+#: builtin/rebase.c:546
 msgid "cmd"
 msgstr ""
 
-#: builtin/rebase.c:499
+#: builtin/rebase.c:546
 msgid "the command to run"
 msgstr ""
 
-#: builtin/rebase.c:502 builtin/rebase.c:1480
+#: builtin/rebase.c:549 builtin/rebase.c:1421
 msgid "automatically re-schedule any `exec` that fails"
 msgstr ""
 
-#: builtin/rebase.c:518
+#: builtin/rebase.c:565
 msgid "--[no-]rebase-cousins has no effect without --rebase-merges"
 msgstr "--[no-]rebase-cousins не имеет смысла без указания --rebase-merges"
 
-#: builtin/rebase.c:534 builtin/rebase.c:1787
+#: builtin/rebase.c:581
 #, c-format
-msgid "%s requires an interactive rebase"
+msgid "%s requires the merge backend"
 msgstr ""
 
-#: builtin/rebase.c:586
+#: builtin/rebase.c:624
 #, c-format
 msgid "could not get 'onto': '%s'"
 msgstr ""
 
-#: builtin/rebase.c:601
+#: builtin/rebase.c:641
 #, c-format
 msgid "invalid orig-head: '%s'"
 msgstr ""
 
-#: builtin/rebase.c:626
+#: builtin/rebase.c:666
 #, c-format
 msgid "ignoring invalid allow_rerere_autoupdate: '%s'"
 msgstr ""
 
-#: builtin/rebase.c:702
-#, c-format
-msgid "Could not read '%s'"
-msgstr ""
-
-#: builtin/rebase.c:720
-#, c-format
-msgid "Cannot store %s"
-msgstr ""
-
-#: builtin/rebase.c:817
-msgid "could not determine HEAD revision"
-msgstr ""
-
-#: builtin/rebase.c:940
+#: builtin/rebase.c:811 git-rebase--preserve-merges.sh:81
 msgid ""
 "Resolve all conflicts manually, mark them as resolved with\n"
 "\"git add/rm <conflicted_files>\", then run \"git rebase --continue\".\n"
@@ -15873,7 +18079,7 @@ msgid ""
 "To abort and get back to the state before \"git rebase\", run \"git rebase --abort\"."
 msgstr "Разрешите все конфликты вручную, пометьте их разрешёнными с помощью «git add/rm <конфликтующие-файлы>», а затем запустите «git rebase --continue».\nЕсли вы хотите пропустить этот коммит, то запустите «git rebase --skip».\nЧтобы вернуться на состояние до «git rebase», запустите «git rebase --abort»."
 
-#: builtin/rebase.c:1021
+#: builtin/rebase.c:894
 #, c-format
 msgid ""
 "\n"
@@ -15885,7 +18091,12 @@ msgid ""
 "As a result, git cannot rebase them."
 msgstr ""
 
-#: builtin/rebase.c:1313
+#: builtin/rebase.c:1220
+#, c-format
+msgid "unrecognized empty type '%s'; valid values are \"drop\", \"keep\", and \"ask\"."
+msgstr ""
+
+#: builtin/rebase.c:1238
 #, c-format
 msgid ""
 "%s\n"
@@ -15896,7 +18107,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: builtin/rebase.c:1329
+#: builtin/rebase.c:1254
 #, c-format
 msgid ""
 "If you wish to set tracking information for this branch you can do so with:\n"
@@ -15905,174 +18116,201 @@ msgid ""
 "\n"
 msgstr ""
 
-#: builtin/rebase.c:1359
+#: builtin/rebase.c:1284
 msgid "exec commands cannot contain newlines"
 msgstr ""
 
-#: builtin/rebase.c:1363
+#: builtin/rebase.c:1288
 msgid "empty exec command"
 msgstr ""
 
-#: builtin/rebase.c:1390
+#: builtin/rebase.c:1318
 msgid "rebase onto given branch instead of upstream"
 msgstr ""
 
-#: builtin/rebase.c:1392
+#: builtin/rebase.c:1320
+msgid "use the merge-base of upstream and branch as the current base"
+msgstr ""
+
+#: builtin/rebase.c:1322
 msgid "allow pre-rebase hook to run"
 msgstr ""
 
-#: builtin/rebase.c:1394
+#: builtin/rebase.c:1324
 msgid "be quiet. implies --no-stat"
 msgstr ""
 
-#: builtin/rebase.c:1400
+#: builtin/rebase.c:1330
 msgid "do not show diffstat of what changed upstream"
 msgstr ""
 
-#: builtin/rebase.c:1403
-msgid "add a Signed-off-by: line to each commit"
+#: builtin/rebase.c:1333
+msgid "add a Signed-off-by trailer to each commit"
+msgstr ""
+
+#: builtin/rebase.c:1336
+msgid "make committer date match author date"
+msgstr ""
+
+#: builtin/rebase.c:1338
+msgid "ignore author date and use current date"
 msgstr ""
 
-#: builtin/rebase.c:1405 builtin/rebase.c:1409 builtin/rebase.c:1411
-msgid "passed to 'git am'"
+#: builtin/rebase.c:1340
+msgid "synonym of --reset-author-date"
 msgstr ""
 
-#: builtin/rebase.c:1413 builtin/rebase.c:1415
+#: builtin/rebase.c:1342 builtin/rebase.c:1346
 msgid "passed to 'git apply'"
 msgstr ""
 
-#: builtin/rebase.c:1417 builtin/rebase.c:1420
+#: builtin/rebase.c:1344
+msgid "ignore changes in whitespace"
+msgstr ""
+
+#: builtin/rebase.c:1348 builtin/rebase.c:1351
 msgid "cherry-pick all commits, even if unchanged"
 msgstr ""
 
-#: builtin/rebase.c:1422
+#: builtin/rebase.c:1353
 msgid "continue"
 msgstr ""
 
-#: builtin/rebase.c:1425
+#: builtin/rebase.c:1356
 msgid "skip current patch and continue"
 msgstr ""
 
-#: builtin/rebase.c:1427
+#: builtin/rebase.c:1358
 msgid "abort and check out the original branch"
 msgstr ""
 
-#: builtin/rebase.c:1430
+#: builtin/rebase.c:1361
 msgid "abort but keep HEAD where it is"
 msgstr ""
 
-#: builtin/rebase.c:1431
+#: builtin/rebase.c:1362
 msgid "edit the todo list during an interactive rebase"
 msgstr ""
 
-#: builtin/rebase.c:1434
+#: builtin/rebase.c:1365
 msgid "show the patch file being applied or merged"
 msgstr ""
 
-#: builtin/rebase.c:1437
+#: builtin/rebase.c:1368
+msgid "use apply strategies to rebase"
+msgstr ""
+
+#: builtin/rebase.c:1372
 msgid "use merging strategies to rebase"
 msgstr ""
 
-#: builtin/rebase.c:1441
+#: builtin/rebase.c:1376
 msgid "let the user edit the list of commits to rebase"
 msgstr ""
 
-#: builtin/rebase.c:1445
+#: builtin/rebase.c:1380
 msgid "(DEPRECATED) try to recreate merges instead of ignoring them"
 msgstr ""
 
-#: builtin/rebase.c:1449
-msgid "preserve empty commits during rebase"
+#: builtin/rebase.c:1385
+msgid "how to handle commits that become empty"
 msgstr ""
 
-#: builtin/rebase.c:1451
+#: builtin/rebase.c:1392
 msgid "move commits that begin with squash!/fixup! under -i"
 msgstr ""
 
-#: builtin/rebase.c:1457
-msgid "automatically stash/stash pop before and after"
-msgstr ""
-
-#: builtin/rebase.c:1459
+#: builtin/rebase.c:1399
 msgid "add exec lines after each commit of the editable list"
 msgstr ""
 
-#: builtin/rebase.c:1463
+#: builtin/rebase.c:1403
 msgid "allow rebasing commits with empty messages"
 msgstr ""
 
-#: builtin/rebase.c:1466
+#: builtin/rebase.c:1407
 msgid "try to rebase merges instead of skipping them"
 msgstr ""
 
-#: builtin/rebase.c:1469
+#: builtin/rebase.c:1410
 msgid "use 'merge-base --fork-point' to refine upstream"
 msgstr ""
 
-#: builtin/rebase.c:1471
+#: builtin/rebase.c:1412
 msgid "use the given merge strategy"
 msgstr ""
 
-#: builtin/rebase.c:1473 builtin/revert.c:114
+#: builtin/rebase.c:1414 builtin/revert.c:115
 msgid "option"
 msgstr "опция"
 
-#: builtin/rebase.c:1474
+#: builtin/rebase.c:1415
 msgid "pass the argument through to the merge strategy"
 msgstr ""
 
-#: builtin/rebase.c:1477
+#: builtin/rebase.c:1418
 msgid "rebase all reachable commits up to the root(s)"
 msgstr ""
 
-#: builtin/rebase.c:1498
+#: builtin/rebase.c:1423
+msgid "apply all changes, even those already present upstream"
+msgstr ""
+
+#: builtin/rebase.c:1440
 msgid ""
 "the rebase.useBuiltin support has been removed!\n"
 "See its entry in 'git help config' for details."
 msgstr ""
 
-#: builtin/rebase.c:1504
+#: builtin/rebase.c:1446
 msgid "It looks like 'git am' is in progress. Cannot rebase."
 msgstr "Похоже, что выполняется «git am». Невозможно выполнить перемещение."
 
-#: builtin/rebase.c:1545
+#: builtin/rebase.c:1487
 msgid ""
 "git rebase --preserve-merges is deprecated. Use --rebase-merges instead."
 msgstr ""
 
-#: builtin/rebase.c:1549
+#: builtin/rebase.c:1492
+msgid "cannot combine '--keep-base' with '--onto'"
+msgstr ""
+
+#: builtin/rebase.c:1494
+msgid "cannot combine '--keep-base' with '--root'"
+msgstr ""
+
+#: builtin/rebase.c:1498
+msgid "cannot combine '--root' with '--fork-point'"
+msgstr ""
+
+#: builtin/rebase.c:1501
 msgid "No rebase in progress?"
 msgstr "Нет перемещения в процессе?"
 
-#: builtin/rebase.c:1553
+#: builtin/rebase.c:1505
 msgid "The --edit-todo action can only be used during interactive rebase."
 msgstr "Действие --edit-todo может использоваться только при интерактивном перемещении."
 
-#: builtin/rebase.c:1576
+#: builtin/rebase.c:1528 t/helper/test-fast-rebase.c:123
 msgid "Cannot read HEAD"
 msgstr "Не удалось прочитать HEAD"
 
-#: builtin/rebase.c:1588
+#: builtin/rebase.c:1540
 msgid ""
 "You must edit all merge conflicts and then\n"
 "mark them as resolved using git add"
 msgstr "Вы должны отредактировать все\nконфликты слияния, а потом пометить\nих как разрешенные с помощью git add"
 
-#: builtin/rebase.c:1607
+#: builtin/rebase.c:1559
 msgid "could not discard worktree changes"
 msgstr ""
 
-#: builtin/rebase.c:1626
-#, c-format
-msgid "could not move back to %s"
-msgstr ""
-
-#: builtin/rebase.c:1637 builtin/rm.c:369
+#: builtin/rebase.c:1578
 #, c-format
-msgid "could not remove '%s'"
-msgstr "не удалось удалить «%s»"
+msgid "could not move back to %s"
+msgstr ""
 
-#: builtin/rebase.c:1663
+#: builtin/rebase.c:1624
 #, c-format
 msgid ""
 "It seems that there is already a %s directory, and\n"
@@ -16085,167 +18323,140 @@ msgid ""
 "valuable there.\n"
 msgstr ""
 
-#: builtin/rebase.c:1684
+#: builtin/rebase.c:1652
 msgid "switch `C' expects a numerical value"
 msgstr ""
 
-#: builtin/rebase.c:1725
+#: builtin/rebase.c:1694
 #, c-format
 msgid "Unknown mode: %s"
 msgstr ""
 
-#: builtin/rebase.c:1747
+#: builtin/rebase.c:1733
 msgid "--strategy requires --merge or --interactive"
 msgstr ""
 
-#: builtin/rebase.c:1796
-msgid "cannot combine am options with either interactive or merge options"
+#: builtin/rebase.c:1763
+msgid "cannot combine apply options with merge options"
 msgstr ""
 
-#: builtin/rebase.c:1815
-msgid "cannot combine '--preserve-merges' with '--rebase-merges'"
+#: builtin/rebase.c:1776
+#, c-format
+msgid "Unknown rebase backend: %s"
 msgstr ""
 
-#: builtin/rebase.c:1819
-msgid ""
-"error: cannot combine '--preserve-merges' with '--reschedule-failed-exec'"
+#: builtin/rebase.c:1806
+msgid "--reschedule-failed-exec requires --exec or --interactive"
 msgstr ""
 
-#: builtin/rebase.c:1825
-msgid "cannot combine '--rebase-merges' with '--strategy-option'"
+#: builtin/rebase.c:1826
+msgid "cannot combine '--preserve-merges' with '--rebase-merges'"
 msgstr ""
 
-#: builtin/rebase.c:1828
-msgid "cannot combine '--rebase-merges' with '--strategy'"
+#: builtin/rebase.c:1830
+msgid ""
+"error: cannot combine '--preserve-merges' with '--reschedule-failed-exec'"
 msgstr ""
 
-#: builtin/rebase.c:1852
+#: builtin/rebase.c:1854
 #, c-format
 msgid "invalid upstream '%s'"
 msgstr ""
 
-#: builtin/rebase.c:1858
+#: builtin/rebase.c:1860
 msgid "Could not create new root commit"
 msgstr ""
 
-#: builtin/rebase.c:1876
+#: builtin/rebase.c:1886
+#, c-format
+msgid "'%s': need exactly one merge base with branch"
+msgstr ""
+
+#: builtin/rebase.c:1889
 #, c-format
 msgid "'%s': need exactly one merge base"
 msgstr ""
 
-#: builtin/rebase.c:1883
+#: builtin/rebase.c:1897
 #, c-format
 msgid "Does not point to a valid commit '%s'"
 msgstr ""
 
-#: builtin/rebase.c:1908
+#: builtin/rebase.c:1923
 #, c-format
 msgid "fatal: no such branch/commit '%s'"
 msgstr ""
 
-#: builtin/rebase.c:1916 builtin/submodule--helper.c:38
-#: builtin/submodule--helper.c:1933
+#: builtin/rebase.c:1931 builtin/submodule--helper.c:40
+#: builtin/submodule--helper.c:2414
 #, c-format
 msgid "No such ref: %s"
 msgstr "Нет такой ссылки: %s"
 
-#: builtin/rebase.c:1927
+#: builtin/rebase.c:1942
 msgid "Could not resolve HEAD to a revision"
 msgstr ""
 
-#: builtin/rebase.c:1968
-msgid "Cannot autostash"
-msgstr "Не удалось автоматически спрятать изменения"
-
-#: builtin/rebase.c:1971
-#, c-format
-msgid "Unexpected stash response: '%s'"
-msgstr ""
-
-#: builtin/rebase.c:1977
-#, c-format
-msgid "Could not create directory for '%s'"
-msgstr ""
-
-#: builtin/rebase.c:1980
-#, c-format
-msgid "Created autostash: %s\n"
-msgstr ""
-
-#: builtin/rebase.c:1983
-msgid "could not reset --hard"
-msgstr ""
-
-#: builtin/rebase.c:1984 builtin/reset.c:114
-#, c-format
-msgid "HEAD is now at %s"
-msgstr "HEAD сейчас на %s"
-
-#: builtin/rebase.c:2000
+#: builtin/rebase.c:1963
 msgid "Please commit or stash them."
 msgstr "Сделайте коммит или спрячьте их."
 
-#: builtin/rebase.c:2027
-#, c-format
-msgid "could not parse '%s'"
-msgstr ""
-
-#: builtin/rebase.c:2040
+#: builtin/rebase.c:1999
 #, c-format
 msgid "could not switch to %s"
 msgstr ""
 
-#: builtin/rebase.c:2051
+#: builtin/rebase.c:2010
 msgid "HEAD is up to date."
 msgstr "HEAD уже в актуальном состоянии."
 
-#: builtin/rebase.c:2053
+#: builtin/rebase.c:2012
 #, c-format
 msgid "Current branch %s is up to date.\n"
 msgstr ""
 
-#: builtin/rebase.c:2061
+#: builtin/rebase.c:2020
 msgid "HEAD is up to date, rebase forced."
 msgstr "HEAD уже в актуальном состоянии, принудительное перемещение."
 
-#: builtin/rebase.c:2063
+#: builtin/rebase.c:2022
 #, c-format
 msgid "Current branch %s is up to date, rebase forced.\n"
 msgstr ""
 
-#: builtin/rebase.c:2071
+#: builtin/rebase.c:2030
 msgid "The pre-rebase hook refused to rebase."
 msgstr "Перехватчик pre-rebase отказал в перемещении."
 
-#: builtin/rebase.c:2078
+#: builtin/rebase.c:2037
 #, c-format
 msgid "Changes to %s:\n"
 msgstr ""
 
-#: builtin/rebase.c:2081
+#: builtin/rebase.c:2040
 #, c-format
 msgid "Changes from %s to %s:\n"
 msgstr ""
 
-#: builtin/rebase.c:2106
+#: builtin/rebase.c:2065
 #, c-format
 msgid "First, rewinding head to replay your work on top of it...\n"
 msgstr ""
 
-#: builtin/rebase.c:2115
+#: builtin/rebase.c:2074
 msgid "Could not detach HEAD"
 msgstr ""
 
-#: builtin/rebase.c:2124
+#: builtin/rebase.c:2083
 #, c-format
 msgid "Fast-forwarded %s to %s.\n"
 msgstr ""
 
-#: builtin/receive-pack.c:33
+#: builtin/receive-pack.c:34
 msgid "git receive-pack <git-dir>"
 msgstr "git receive-pack <каталог-git>"
 
-#: builtin/receive-pack.c:833
+#: builtin/receive-pack.c:1276
 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"
@@ -16262,7 +18473,7 @@ msgid ""
 "'receive.denyCurrentBranch' configuration variable to 'refuse'."
 msgstr "По умолчанию, обновлять текущую ветку в репозитории с рабочей\nкопией (не голом) запрещено, так как это сделает состояние индекса\nи рабочего каталога противоречивым, и вам прийдется выполнить\n«git reset --hard», чтобы состояние рабочего каталога снова\nсоответствовало HEAD.\n\nВы можете установить значение опции «receive.denyCurrentBranch»\nв «ignore» или «warn» во внешнем репозитории, чтобы разрешить\nотправку в его текущую ветку; но это не рекомендуется, если только\nвы не намерены обновить его рабочий каталог способом подобным\nвышеописанному.\n\nЧтобы пропустить это сообщение и все равно оставить поведение\nпо умолчанию, установите значение опции «receive.denyCurrentBranch»\nв «refuse»."
 
-#: builtin/receive-pack.c:853
+#: builtin/receive-pack.c:1296
 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"
@@ -16274,11 +18485,11 @@ msgid ""
 "To squelch this message, you can set it to 'refuse'."
 msgstr "По умолчанию, удаление текущей ветки запрещено, так как последующий\n«git clone» не сможет получить никаких файлов, что приведет к путанице.\n\nВы можете установить значение опции «receive.denyDeleteCurrent»\nв «warn» или «ignore», во внешнем репозитории,  чтобы разрешить\nудаление текущей ветки с или без предупреждающего сообщения.\n\nЧтобы пропустить это сообщение, вы можете установить значение опции\nв «refuse»."
 
-#: builtin/receive-pack.c:1940
+#: builtin/receive-pack.c:2481
 msgid "quiet"
 msgstr "тихий режим"
 
-#: builtin/receive-pack.c:1954
+#: builtin/receive-pack.c:2495
 msgid "You must specify a directory."
 msgstr "Вы должны указать каталог."
 
@@ -16299,210 +18510,218 @@ msgstr ""
 msgid "git reflog exists <ref>"
 msgstr ""
 
-#: builtin/reflog.c:567 builtin/reflog.c:572
+#: builtin/reflog.c:568 builtin/reflog.c:573
 #, c-format
 msgid "'%s' is not a valid timestamp"
 msgstr "«%s» не является допустимой меткой даты/времени"
 
-#: builtin/reflog.c:605
+#: builtin/reflog.c:606
 #, c-format
 msgid "Marking reachable objects..."
 msgstr ""
 
-#: builtin/reflog.c:643
+#: builtin/reflog.c:644
 #, c-format
 msgid "%s points nowhere!"
 msgstr ""
 
-#: builtin/reflog.c:695
+#: builtin/reflog.c:696
 msgid "no reflog specified to delete"
 msgstr ""
 
-#: builtin/reflog.c:704
+#: builtin/reflog.c:705
 #, c-format
 msgid "not a reflog: %s"
 msgstr ""
 
-#: builtin/reflog.c:709
+#: builtin/reflog.c:710
 #, c-format
 msgid "no reflog for '%s'"
 msgstr ""
 
-#: builtin/reflog.c:755
+#: builtin/reflog.c:756
 #, c-format
 msgid "invalid ref format: %s"
 msgstr ""
 
-#: builtin/reflog.c:764
+#: builtin/reflog.c:765
 msgid "git reflog [ show | expire | delete | exists ]"
 msgstr ""
 
-#: builtin/remote.c:16
+#: builtin/remote.c:17
 msgid "git remote [-v | --verbose]"
 msgstr "git remote [-v | --verbose]"
 
-#: builtin/remote.c:17
+#: builtin/remote.c:18
 msgid ""
 "git remote add [-t <branch>] [-m <master>] [-f] [--tags | --no-tags] "
 "[--mirror=<fetch|push>] <name> <url>"
 msgstr "git remote add [-t <ветка>] [-m <мастер-ветка>] [-f] [--tags | --no-tags] [--mirror=<fetch|push>] <имя> <адрес>"
 
-#: builtin/remote.c:18 builtin/remote.c:38
+#: builtin/remote.c:19 builtin/remote.c:39
 msgid "git remote rename <old> <new>"
 msgstr "git remote rename <старое-название> <новое-название>"
 
-#: builtin/remote.c:19 builtin/remote.c:43
+#: builtin/remote.c:20 builtin/remote.c:44
 msgid "git remote remove <name>"
 msgstr "git remote remove <имя>"
 
-#: builtin/remote.c:20 builtin/remote.c:48
+#: builtin/remote.c:21 builtin/remote.c:49
 msgid "git remote set-head <name> (-a | --auto | -d | --delete | <branch>)"
 msgstr "git remote set-head <имя> (-a | --auto | -d | --delete | <ветка>)"
 
-#: builtin/remote.c:21
+#: builtin/remote.c:22
 msgid "git remote [-v | --verbose] show [-n] <name>"
 msgstr "git remote [-v | --verbose] show [-n] <имя>"
 
-#: builtin/remote.c:22
+#: builtin/remote.c:23
 msgid "git remote prune [-n | --dry-run] <name>"
 msgstr "git remote prune [-n | --dry-run] <имя>"
 
-#: builtin/remote.c:23
+#: builtin/remote.c:24
 msgid ""
 "git remote [-v | --verbose] update [-p | --prune] [(<group> | <remote>)...]"
 msgstr "git remote [-v | --verbose] update [-p | --prune] [(<группа> | <имя-внешнего-репозитория>)…]"
 
-#: builtin/remote.c:24
+#: builtin/remote.c:25
 msgid "git remote set-branches [--add] <name> <branch>..."
 msgstr "git remote set-branches [--add] <имя> <ветка>…"
 
-#: builtin/remote.c:25 builtin/remote.c:74
+#: builtin/remote.c:26 builtin/remote.c:75
 msgid "git remote get-url [--push] [--all] <name>"
 msgstr "git remote get-url [--push] [--all] <имя>"
 
-#: builtin/remote.c:26 builtin/remote.c:79
+#: builtin/remote.c:27 builtin/remote.c:80
 msgid "git remote set-url [--push] <name> <newurl> [<oldurl>]"
 msgstr "git remote set-url [--push] <имя> <новый-url> [<старый-url>]"
 
-#: builtin/remote.c:27 builtin/remote.c:80
+#: builtin/remote.c:28 builtin/remote.c:81
 msgid "git remote set-url --add <name> <newurl>"
 msgstr "git remote set-url --add <имя> <новый-url>"
 
-#: builtin/remote.c:28 builtin/remote.c:81
+#: builtin/remote.c:29 builtin/remote.c:82
 msgid "git remote set-url --delete <name> <url>"
 msgstr "git remote set-url --delete <имя> <url>"
 
-#: builtin/remote.c:33
+#: builtin/remote.c:34
 msgid "git remote add [<options>] <name> <url>"
 msgstr "git remote add [<опции>] <имя> <url>"
 
-#: builtin/remote.c:53
+#: builtin/remote.c:54
 msgid "git remote set-branches <name> <branch>..."
 msgstr "git remote set-branches <имя> <ветка>…"
 
-#: builtin/remote.c:54
+#: builtin/remote.c:55
 msgid "git remote set-branches --add <name> <branch>..."
 msgstr "git remote set-branches --add <имя> <ветка>…"
 
-#: builtin/remote.c:59
+#: builtin/remote.c:60
 msgid "git remote show [<options>] <name>"
 msgstr "git remote show [<опции>] <имя>"
 
-#: builtin/remote.c:64
+#: builtin/remote.c:65
 msgid "git remote prune [<options>] <name>"
 msgstr "git remote prune [<опции>] <имя>"
 
-#: builtin/remote.c:69
+#: builtin/remote.c:70
 msgid "git remote update [<options>] [<group> | <remote>]..."
 msgstr "git remote update [<опции>] [<группа> | <имя-внешнего-репозитория>]…"
 
-#: builtin/remote.c:98
+#: builtin/remote.c:99
 #, c-format
 msgid "Updating %s"
 msgstr "Обновление %s"
 
-#: builtin/remote.c:130
+#: builtin/remote.c:131
 msgid ""
 "--mirror is dangerous and deprecated; please\n"
 "\t use --mirror=fetch or --mirror=push instead"
 msgstr "ключ --mirror небезопасен и не рекомендуется к использованию;\nиспользуйте вместо него --mirror=fetch или --mirror=push"
 
-#: builtin/remote.c:147
+#: builtin/remote.c:148
 #, c-format
 msgid "unknown mirror argument: %s"
 msgstr "неизвестный аргумент для mirror: %s"
 
-#: builtin/remote.c:163
+#: builtin/remote.c:164
 msgid "fetch the remote branches"
 msgstr "извлечь внешние ветки"
 
-#: builtin/remote.c:165
+#: builtin/remote.c:166
 msgid "import all tags and associated objects when fetching"
 msgstr "импортировать все метки и ассоциированные объекты при извлечении"
 
-#: builtin/remote.c:168
+#: builtin/remote.c:169
 msgid "or do not fetch any tag at all (--no-tags)"
 msgstr "или не извлекать метки вообще (--no-tags)"
 
-#: builtin/remote.c:170
+#: builtin/remote.c:171
 msgid "branch(es) to track"
 msgstr "отслеживаемые ветки"
 
-#: builtin/remote.c:171
+#: builtin/remote.c:172
 msgid "master branch"
 msgstr "мастер ветка"
 
-#: builtin/remote.c:173
+#: builtin/remote.c:174
 msgid "set up remote as a mirror to push to or fetch from"
 msgstr "настроить внешний репозиторий как зеркало для отправки или извлечения изменений"
 
-#: builtin/remote.c:185
+#: builtin/remote.c:186
 msgid "specifying a master branch makes no sense with --mirror"
 msgstr "указание мастер ветки не имеет смысла с параметром --mirror"
 
-#: builtin/remote.c:187
+#: builtin/remote.c:188
 msgid "specifying branches to track makes sense only with fetch mirrors"
 msgstr "указание отслеживаемых веток имеет смысл только при зеркальном извлечении"
 
-#: builtin/remote.c:194 builtin/remote.c:636
+#: builtin/remote.c:195 builtin/remote.c:700
 #, c-format
 msgid "remote %s already exists."
 msgstr "внешний репозиторий %s уже существует"
 
-#: builtin/remote.c:198 builtin/remote.c:640
-#, c-format
-msgid "'%s' is not a valid remote name"
-msgstr "«%s» не является допустимым именем внешнего репозитория."
-
-#: builtin/remote.c:238
+#: builtin/remote.c:240
 #, c-format
 msgid "Could not setup master '%s'"
 msgstr "Не удалось настроить мастер ветку «%s»"
 
-#: builtin/remote.c:344
+#: builtin/remote.c:355
 #, c-format
 msgid "Could not get fetch map for refspec %s"
 msgstr "Не удалось извлечь карту для спецификатора ссылки %s"
 
-#: builtin/remote.c:443 builtin/remote.c:451
+#: builtin/remote.c:454 builtin/remote.c:462
 msgid "(matching)"
 msgstr "(соответствующая)"
 
-#: builtin/remote.c:455
+#: builtin/remote.c:466
 msgid "(delete)"
 msgstr "(удаленная)"
 
-#: builtin/remote.c:629 builtin/remote.c:765 builtin/remote.c:864
+#: builtin/remote.c:655
+#, c-format
+msgid "could not set '%s'"
+msgstr ""
+
+#: builtin/remote.c:660
+#, c-format
+msgid ""
+"The %s configuration remote.pushDefault in:\n"
+"\t%s:%d\n"
+"now names the non-existent remote '%s'"
+msgstr ""
+
+#: builtin/remote.c:691 builtin/remote.c:836 builtin/remote.c:946
 #, c-format
 msgid "No such remote: '%s'"
 msgstr ""
 
-#: builtin/remote.c:646
+#: builtin/remote.c:710
 #, c-format
 msgid "Could not rename config section '%s' to '%s'"
 msgstr "Не удалось переименовать секцию конфигурации с «%s» на «%s»"
 
-#: builtin/remote.c:666
+#: builtin/remote.c:730
 #, c-format
 msgid ""
 "Not updating non-default fetch refspec\n"
@@ -16510,17 +18729,17 @@ msgid ""
 "\tPlease update the configuration manually if necessary."
 msgstr "Не обновляю нестандартную спецификатор ссылки для извлечения\n\t%s\n\tПожалуйста, если требуется, обновите конфигурацию вручную."
 
-#: builtin/remote.c:702
+#: builtin/remote.c:770
 #, c-format
 msgid "deleting '%s' failed"
 msgstr "не удалось удалить «%s»"
 
-#: builtin/remote.c:736
+#: builtin/remote.c:804
 #, c-format
 msgid "creating '%s' failed"
 msgstr "не удалось создать «%s»"
 
-#: builtin/remote.c:802
+#: builtin/remote.c:882
 msgid ""
 "Note: A branch outside the refs/remotes/ hierarchy was not removed;\n"
 "to delete it, use:"
@@ -16532,148 +18751,148 @@ msgstr[1] "Примечание: Некоторые ветки вне иерар
 msgstr[2] "Примечание: Некоторые ветки вне иерархии refs/remotes/ не будут удалены;\nчтобы удалить их, используйте:"
 msgstr[3] "Примечание: Некоторые ветки вне иерархии refs/remotes/ не будут удалены;\nчтобы удалить их, используйте:"
 
-#: builtin/remote.c:816
+#: builtin/remote.c:896
 #, c-format
 msgid "Could not remove config section '%s'"
 msgstr "Не удалось удалить секцию файла конфигурации «%s»"
 
-#: builtin/remote.c:917
+#: builtin/remote.c:999
 #, c-format
 msgid " new (next fetch will store in remotes/%s)"
 msgstr " новая (следующее извлечение сохранит ее в remotes/%s)"
 
-#: builtin/remote.c:920
+#: builtin/remote.c:1002
 msgid " tracked"
 msgstr " отслеживается"
 
-#: builtin/remote.c:922
+#: builtin/remote.c:1004
 msgid " stale (use 'git remote prune' to remove)"
 msgstr " недействительна (используйте «git remote prune», чтобы удалить)"
 
-#: builtin/remote.c:924
+#: builtin/remote.c:1006
 msgid " ???"
 msgstr " ???"
 
-#: builtin/remote.c:965
+#: builtin/remote.c:1047
 #, c-format
 msgid "invalid branch.%s.merge; cannot rebase onto > 1 branch"
 msgstr "неправильный параметр конфигурации branch.%s.merge; невозможно переместить более чем над 1 веткой"
 
-#: builtin/remote.c:974
+#: builtin/remote.c:1056
 #, c-format
 msgid "rebases interactively onto remote %s"
 msgstr "перемещается интерактивно над внешней веткой %s"
 
-#: builtin/remote.c:976
+#: builtin/remote.c:1058
 #, c-format
 msgid "rebases interactively (with merges) onto remote %s"
 msgstr ""
 
-#: builtin/remote.c:979
+#: builtin/remote.c:1061
 #, c-format
 msgid "rebases onto remote %s"
 msgstr "перемещается над внешней веткой %s"
 
-#: builtin/remote.c:983
+#: builtin/remote.c:1065
 #, c-format
 msgid " merges with remote %s"
 msgstr " будет слита с внешней веткой %s"
 
-#: builtin/remote.c:986
+#: builtin/remote.c:1068
 #, c-format
 msgid "merges with remote %s"
 msgstr "будет слита с внешней веткой %s"
 
-#: builtin/remote.c:989
+#: builtin/remote.c:1071
 #, c-format
 msgid "%-*s    and with remote %s\n"
 msgstr "%-*s    и с внешней веткой %s\n"
 
-#: builtin/remote.c:1032
+#: builtin/remote.c:1114
 msgid "create"
 msgstr "создана"
 
-#: builtin/remote.c:1035
+#: builtin/remote.c:1117
 msgid "delete"
 msgstr "удалена"
 
-#: builtin/remote.c:1039
+#: builtin/remote.c:1121
 msgid "up to date"
 msgstr "уже актуальна"
 
-#: builtin/remote.c:1042
+#: builtin/remote.c:1124
 msgid "fast-forwardable"
 msgstr "возможна перемотка вперед"
 
-#: builtin/remote.c:1045
+#: builtin/remote.c:1127
 msgid "local out of date"
 msgstr "локальная ветка устарела"
 
-#: builtin/remote.c:1052
+#: builtin/remote.c:1134
 #, c-format
 msgid "    %-*s forces to %-*s (%s)"
 msgstr "    %-*s будет принудительно отправлена в %-*s (%s)"
 
-#: builtin/remote.c:1055
+#: builtin/remote.c:1137
 #, c-format
 msgid "    %-*s pushes to %-*s (%s)"
 msgstr "    %-*s будет отправлена в %-*s (%s)"
 
-#: builtin/remote.c:1059
+#: builtin/remote.c:1141
 #, c-format
 msgid "    %-*s forces to %s"
 msgstr "    %-*s будет принудительно отправлена в %s"
 
-#: builtin/remote.c:1062
+#: builtin/remote.c:1144
 #, c-format
 msgid "    %-*s pushes to %s"
 msgstr "    %-*s будет отправлена в %s"
 
-#: builtin/remote.c:1130
+#: builtin/remote.c:1212
 msgid "do not query remotes"
 msgstr "не опрашивать внешние репозитории"
 
-#: builtin/remote.c:1157
+#: builtin/remote.c:1239
 #, c-format
 msgid "* remote %s"
 msgstr "* внешний репозиторий %s"
 
-#: builtin/remote.c:1158
+#: builtin/remote.c:1240
 #, c-format
 msgid "  Fetch URL: %s"
 msgstr "  URL для извлечения: %s"
 
-#: builtin/remote.c:1159 builtin/remote.c:1175 builtin/remote.c:1314
+#: builtin/remote.c:1241 builtin/remote.c:1257 builtin/remote.c:1396
 msgid "(no URL)"
 msgstr "(нет URL)"
 
 #. TRANSLATORS: the colon ':' should align
 #. with the one in " Fetch URL: %s"
 #. translation.
-#: builtin/remote.c:1173 builtin/remote.c:1175
+#: builtin/remote.c:1255 builtin/remote.c:1257
 #, c-format
 msgid "  Push  URL: %s"
 msgstr "    URL для отправки: %s"
 
-#: builtin/remote.c:1177 builtin/remote.c:1179 builtin/remote.c:1181
+#: builtin/remote.c:1259 builtin/remote.c:1261 builtin/remote.c:1263
 #, c-format
 msgid "  HEAD branch: %s"
 msgstr "  HEAD ветка: %s"
 
-#: builtin/remote.c:1177
+#: builtin/remote.c:1259
 msgid "(not queried)"
 msgstr "(не запрашивался)"
 
-#: builtin/remote.c:1179
+#: builtin/remote.c:1261
 msgid "(unknown)"
 msgstr "(неизвестно)"
 
-#: builtin/remote.c:1183
+#: builtin/remote.c:1265
 #, c-format
 msgid "  HEAD branch (remote HEAD is ambiguous, may be one of the following):\n"
 msgstr "  HEAD ветка (HEAD внешнего репозитория неоднозначный, может быть одним из):\n"
 
-#: builtin/remote.c:1195
+#: builtin/remote.c:1277
 #, c-format
 msgid "  Remote branch:%s"
 msgid_plural "  Remote branches:%s"
@@ -16682,11 +18901,11 @@ msgstr[1] "  Внешние ветки:%s"
 msgstr[2] "  Внешние ветки:%s"
 msgstr[3] "  Внешние ветки:%s"
 
-#: builtin/remote.c:1198 builtin/remote.c:1224
+#: builtin/remote.c:1280 builtin/remote.c:1306
 msgid " (status not queried)"
 msgstr " (статус не запрашивался)"
 
-#: builtin/remote.c:1207
+#: builtin/remote.c:1289
 msgid "  Local branch configured for 'git pull':"
 msgid_plural "  Local branches configured for 'git pull':"
 msgstr[0] "  Локальная ветка, настроенная для «git pull»:"
@@ -16694,11 +18913,11 @@ msgstr[1] "  Локальные ветки, настроенные для «git
 msgstr[2] "  Локальные ветки, настроенные для «git pull»:"
 msgstr[3] "  Локальные ветки, настроенные для «git pull»:"
 
-#: builtin/remote.c:1215
+#: builtin/remote.c:1297
 msgid "  Local refs will be mirrored by 'git push'"
 msgstr " Локальные ссылки, зеркалируемые с помощью «git push»"
 
-#: builtin/remote.c:1221
+#: builtin/remote.c:1303
 #, c-format
 msgid "  Local ref configured for 'git push'%s:"
 msgid_plural "  Local refs configured for 'git push'%s:"
@@ -16707,266 +18926,250 @@ msgstr[1] "  Локальные ссылки, настроенные для «gi
 msgstr[2] "  Локальные ссылки, настроенные для «git push»%s:"
 msgstr[3] "  Локальные ссылки, настроенные для «git push»%s:"
 
-#: builtin/remote.c:1242
+#: builtin/remote.c:1324
 msgid "set refs/remotes/<name>/HEAD according to remote"
 msgstr "установить refs/remotes/<имя>/HEAD в зависимости от внешнего репозитория"
 
-#: builtin/remote.c:1244
+#: builtin/remote.c:1326
 msgid "delete refs/remotes/<name>/HEAD"
 msgstr "удалить refs/remotes/<имя>/HEAD"
 
-#: builtin/remote.c:1259
+#: builtin/remote.c:1341
 msgid "Cannot determine remote HEAD"
 msgstr "Не удалось определить внешний HEAD"
 
-#: builtin/remote.c:1261
+#: builtin/remote.c:1343
 msgid "Multiple remote HEAD branches. Please choose one explicitly with:"
 msgstr "Несколько внешних HEAD веток. Укажите явно одну из них:"
 
-#: builtin/remote.c:1271
+#: builtin/remote.c:1353
 #, c-format
 msgid "Could not delete %s"
 msgstr "Не удалось удалить %s"
 
-#: builtin/remote.c:1279
+#: builtin/remote.c:1361
 #, c-format
 msgid "Not a valid ref: %s"
 msgstr "Недопустимая ссылка: %s"
 
-#: builtin/remote.c:1281
+#: builtin/remote.c:1363
 #, c-format
 msgid "Could not setup %s"
 msgstr "Не удалось настроить %s"
 
-#: builtin/remote.c:1299
+#: builtin/remote.c:1381
 #, c-format
 msgid " %s will become dangling!"
 msgstr " %s будет висящей веткой!"
 
-#: builtin/remote.c:1300
+#: builtin/remote.c:1382
 #, c-format
 msgid " %s has become dangling!"
 msgstr " %s стала висящей веткой!"
 
-#: builtin/remote.c:1310
+#: builtin/remote.c:1392
 #, c-format
 msgid "Pruning %s"
 msgstr "Очистка %s"
 
-#: builtin/remote.c:1311
+#: builtin/remote.c:1393
 #, c-format
 msgid "URL: %s"
 msgstr "URL: %s"
 
-#: builtin/remote.c:1327
+#: builtin/remote.c:1409
 #, c-format
 msgid " * [would prune] %s"
 msgstr " * [будет удалена] %s"
 
-#: builtin/remote.c:1330
+#: builtin/remote.c:1412
 #, c-format
 msgid " * [pruned] %s"
 msgstr " * [удалена] %s"
 
-#: builtin/remote.c:1375
+#: builtin/remote.c:1457
 msgid "prune remotes after fetching"
 msgstr "почистить внешние репозитории после извлечения"
 
-#: builtin/remote.c:1438 builtin/remote.c:1492 builtin/remote.c:1560
+#: builtin/remote.c:1521 builtin/remote.c:1577 builtin/remote.c:1647
 #, c-format
 msgid "No such remote '%s'"
 msgstr "Нет такого внешнего репозитория «%s»"
 
-#: builtin/remote.c:1454
+#: builtin/remote.c:1539
 msgid "add branch"
 msgstr "добавить ветку"
 
-#: builtin/remote.c:1461
+#: builtin/remote.c:1546
 msgid "no remote specified"
 msgstr "не указан внешний репозиторий"
 
-#: builtin/remote.c:1478
+#: builtin/remote.c:1563
 msgid "query push URLs rather than fetch URLs"
 msgstr "запросить URL отправки, вместо URL извлечения"
 
-#: builtin/remote.c:1480
+#: builtin/remote.c:1565
 msgid "return all URLs"
 msgstr "вернуть все URL"
 
-#: builtin/remote.c:1508
+#: builtin/remote.c:1595
 #, c-format
 msgid "no URLs configured for remote '%s'"
 msgstr "URL не настроены для внешнего репозитория «%s»"
 
-#: builtin/remote.c:1534
+#: builtin/remote.c:1621
 msgid "manipulate push URLs"
 msgstr "управление URL отправки"
 
-#: builtin/remote.c:1536
+#: builtin/remote.c:1623
 msgid "add URL"
 msgstr "добавить URL"
 
-#: builtin/remote.c:1538
+#: builtin/remote.c:1625
 msgid "delete URLs"
 msgstr "удалить URL"
 
-#: builtin/remote.c:1545
+#: builtin/remote.c:1632
 msgid "--add --delete doesn't make sense"
 msgstr "--add нельзя использовать одновременно с --delete"
 
-#: builtin/remote.c:1584
+#: builtin/remote.c:1673
 #, c-format
 msgid "Invalid old URL pattern: %s"
 msgstr "Неправильный шаблон старого URL: %s"
 
-#: builtin/remote.c:1592
+#: builtin/remote.c:1681
 #, c-format
 msgid "No such URL found: %s"
 msgstr "Не найдены совпадения URL: %s"
 
-#: builtin/remote.c:1594
+#: builtin/remote.c:1683
 msgid "Will not delete all non-push URLs"
 msgstr "Нельзя удалить все URL не-отправки"
 
-#: builtin/remote.c:1610
-msgid "be verbose; must be placed before a subcommand"
-msgstr "быть многословнее; должно стоять перед подкомандой"
-
-#: builtin/remote.c:1641
-#, c-format
-msgid "Unknown subcommand: %s"
-msgstr "Неизвестная подкоманда: %s"
-
-#: builtin/repack.c:22
+#: builtin/repack.c:25
 msgid "git repack [<options>]"
 msgstr "git repack [<опции>]"
 
-#: builtin/repack.c:27
+#: builtin/repack.c:30
 msgid ""
 "Incremental repacks are incompatible with bitmap indexes.  Use\n"
 "--no-write-bitmap-index or disable the pack.writebitmaps configuration."
 msgstr "Инкрементальные перепаковки не совместимы с индексами в битовых картах.  Используйте опцию --no-write-bitmap-index или отключите параметр конфигурации pack.writebitmaps."
 
-#: builtin/repack.c:200
+#: builtin/repack.c:197
 msgid "could not start pack-objects to repack promisor objects"
 msgstr ""
 
-#: builtin/repack.c:239 builtin/repack.c:414
+#: builtin/repack.c:268 builtin/repack.c:447
 msgid "repack: Expecting full hex object ID lines only from pack-objects."
 msgstr ""
 
-#: builtin/repack.c:256
+#: builtin/repack.c:295
 msgid "could not finish pack-objects to repack promisor objects"
 msgstr ""
 
-#: builtin/repack.c:294
+#: builtin/repack.c:323
 msgid "pack everything in a single pack"
 msgstr "упаковать всё в один пакет"
 
-#: builtin/repack.c:296
+#: builtin/repack.c:325
 msgid "same as -a, and turn unreachable objects loose"
 msgstr "тоже, что и -a, но дополнительно отбросить недостижимые объекты"
 
-#: builtin/repack.c:299
+#: builtin/repack.c:328
 msgid "remove redundant packs, and run git-prune-packed"
 msgstr "удалите лишние пакеты и запустите git-prune-packed"
 
-#: builtin/repack.c:301
+#: builtin/repack.c:330
 msgid "pass --no-reuse-delta to git-pack-objects"
 msgstr "передать опцию --no-reuse-delta в git-pack-objects"
 
-#: builtin/repack.c:303
+#: builtin/repack.c:332
 msgid "pass --no-reuse-object to git-pack-objects"
 msgstr "передать опцию --no-reuse-object в git-pack-objects"
 
-#: builtin/repack.c:305
+#: builtin/repack.c:334
 msgid "do not run git-update-server-info"
 msgstr "не запускать git-update-server-info"
 
-#: builtin/repack.c:308
+#: builtin/repack.c:337
 msgid "pass --local to git-pack-objects"
 msgstr "передать опцию --local в git-pack-objects"
 
-#: builtin/repack.c:310
+#: builtin/repack.c:339
 msgid "write bitmap index"
 msgstr "запись индекса в битовых картах"
 
-#: builtin/repack.c:312
+#: builtin/repack.c:341
 msgid "pass --delta-islands to git-pack-objects"
 msgstr ""
 
-#: builtin/repack.c:313
+#: builtin/repack.c:342
 msgid "approxidate"
 msgstr "примерная-дата"
 
-#: builtin/repack.c:314
+#: builtin/repack.c:343
 msgid "with -A, do not loosen objects older than this"
 msgstr "с опцией -A, не отбрасывать объекты старее, чем указано"
 
-#: builtin/repack.c:316
+#: builtin/repack.c:345
 msgid "with -a, repack unreachable objects"
 msgstr "с параметром -a, перепаковать недоступные объекты"
 
-#: builtin/repack.c:318
+#: builtin/repack.c:347
 msgid "size of the window used for delta compression"
 msgstr "размер окна, используемый для компрессии дельт"
 
-#: builtin/repack.c:319 builtin/repack.c:325
+#: builtin/repack.c:348 builtin/repack.c:354
 msgid "bytes"
 msgstr "количество-байт"
 
-#: builtin/repack.c:320
+#: builtin/repack.c:349
 msgid "same as the above, but limit memory size instead of entries count"
 msgstr "тоже, что и выше, но ограничить размер памяти, а не количество записей"
 
-#: builtin/repack.c:322
+#: builtin/repack.c:351
 msgid "limits the maximum delta depth"
 msgstr "ограничение на максимальную глубину дельт"
 
-#: builtin/repack.c:324
+#: builtin/repack.c:353
 msgid "limits the maximum number of threads"
 msgstr "ограничение на максимальное количество потоков"
 
-#: builtin/repack.c:326
+#: builtin/repack.c:355
 msgid "maximum size of each packfile"
 msgstr "максимальный размер каждого из файлов пакета"
 
-#: builtin/repack.c:328
+#: builtin/repack.c:357
 msgid "repack objects in packs marked with .keep"
 msgstr "переупаковать объекты в пакеты, помеченные файлом .keep"
 
-#: builtin/repack.c:330
+#: builtin/repack.c:359
 msgid "do not repack this pack"
 msgstr ""
 
-#: builtin/repack.c:340
+#: builtin/repack.c:369
 msgid "cannot delete packs in a precious-objects repo"
 msgstr "нельзя удалять пакеты в precious-objects репозитории"
 
-#: builtin/repack.c:344
+#: builtin/repack.c:373
 msgid "--keep-unreachable and -A are incompatible"
 msgstr "--keep-unreachable и -A нельзя использовать одновременно"
 
-#: builtin/repack.c:423
+#: builtin/repack.c:456
 msgid "Nothing new to pack."
 msgstr ""
 
-#: builtin/repack.c:484
+#: builtin/repack.c:486
 #, c-format
-msgid ""
-"WARNING: Some packs in use have been renamed by\n"
-"WARNING: prefixing old- to their name, in order to\n"
-"WARNING: replace them with the new version of the\n"
-"WARNING: file.  But the operation failed, and the\n"
-"WARNING: attempt to rename them back to their\n"
-"WARNING: original names also failed.\n"
-"WARNING: Please rename them in %s manually:\n"
+msgid "missing required file: %s"
 msgstr ""
 
-#: builtin/repack.c:532
+#: builtin/repack.c:488
 #, c-format
-msgid "failed to remove '%s'"
-msgstr "сбой удаления «%s»"
+msgid "could not unlink: %s"
+msgstr ""
 
 #: builtin/replace.c:22
 msgid "git replace [-f] <object> <replacement>"
@@ -17066,8 +19269,8 @@ msgstr ""
 msgid "unable to write object to database"
 msgstr ""
 
-#: builtin/replace.c:322 builtin/replace.c:377 builtin/replace.c:422
-#: builtin/replace.c:452
+#: builtin/replace.c:322 builtin/replace.c:378 builtin/replace.c:424
+#: builtin/replace.c:454
 #, c-format
 msgid "not a valid object name: '%s'"
 msgstr ""
@@ -17086,124 +19289,124 @@ msgstr ""
 msgid "new object is the same as the old one: '%s'"
 msgstr ""
 
-#: builtin/replace.c:383
+#: builtin/replace.c:384
 #, c-format
 msgid "could not parse %s as a commit"
 msgstr ""
 
-#: builtin/replace.c:414
+#: builtin/replace.c:416
 #, c-format
 msgid "bad mergetag in commit '%s'"
 msgstr "плохая метка слияния в коммите «%s»"
 
-#: builtin/replace.c:416
+#: builtin/replace.c:418
 #, c-format
 msgid "malformed mergetag in commit '%s'"
 msgstr "повреждённая метка слияния в коммите «%s»"
 
-#: builtin/replace.c:428
+#: builtin/replace.c:430
 #, 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:467
+#: builtin/replace.c:469
 #, c-format
 msgid "the original commit '%s' has a gpg signature"
 msgstr ""
 
-#: builtin/replace.c:468
+#: builtin/replace.c:470
 msgid "the signature will be removed in the replacement commit!"
 msgstr "подпись будет удалена в замененном коммите!"
 
-#: builtin/replace.c:478
+#: builtin/replace.c:480
 #, c-format
 msgid "could not write replacement commit for: '%s'"
 msgstr "не удалось записать замену для коммита: «%s»"
 
-#: builtin/replace.c:486
+#: builtin/replace.c:488
 #, c-format
 msgid "graft for '%s' unnecessary"
 msgstr ""
 
-#: builtin/replace.c:490
+#: builtin/replace.c:492
 #, c-format
 msgid "new commit is the same as the old one: '%s'"
 msgstr ""
 
-#: builtin/replace.c:525
+#: builtin/replace.c:527
 #, c-format
 msgid ""
 "could not convert the following graft(s):\n"
 "%s"
 msgstr ""
 
-#: builtin/replace.c:546
+#: builtin/replace.c:548
 msgid "list replace refs"
 msgstr "вывести список заменяемых ссылок"
 
-#: builtin/replace.c:547
+#: builtin/replace.c:549
 msgid "delete replace refs"
 msgstr "удаление заменяемых ссылок"
 
-#: builtin/replace.c:548
+#: builtin/replace.c:550
 msgid "edit existing object"
 msgstr "изменение существующего объекта"
 
-#: builtin/replace.c:549
+#: builtin/replace.c:551
 msgid "change a commit's parents"
 msgstr "изменение родителя коммита"
 
-#: builtin/replace.c:550
+#: builtin/replace.c:552
 msgid "convert existing graft file"
 msgstr ""
 
-#: builtin/replace.c:551
+#: builtin/replace.c:553
 msgid "replace the ref if it exists"
 msgstr "замена ссылки, если она существует"
 
-#: builtin/replace.c:553
+#: builtin/replace.c:555
 msgid "do not pretty-print contents for --edit"
 msgstr "не делать структурированный вывод содержимого для --edit"
 
-#: builtin/replace.c:554
+#: builtin/replace.c:556
 msgid "use this format"
 msgstr "использовать этот формат"
 
-#: builtin/replace.c:567
+#: builtin/replace.c:569
 msgid "--format cannot be used when not listing"
 msgstr ""
 
-#: builtin/replace.c:575
+#: builtin/replace.c:577
 msgid "-f only makes sense when writing a replacement"
 msgstr ""
 
-#: builtin/replace.c:579
+#: builtin/replace.c:581
 msgid "--raw only makes sense with --edit"
 msgstr ""
 
-#: builtin/replace.c:585
+#: builtin/replace.c:587
 msgid "-d needs at least one argument"
 msgstr ""
 
-#: builtin/replace.c:591
+#: builtin/replace.c:593
 msgid "bad number of arguments"
 msgstr ""
 
-#: builtin/replace.c:597
+#: builtin/replace.c:599
 msgid "-e needs exactly one argument"
 msgstr ""
 
-#: builtin/replace.c:603
+#: builtin/replace.c:605
 msgid "-g needs at least one argument"
 msgstr ""
 
-#: builtin/replace.c:609
+#: builtin/replace.c:611
 msgid "--convert-graft-file takes no argument"
 msgstr ""
 
-#: builtin/replace.c:615
+#: builtin/replace.c:617
 msgid "only one pattern can be given with -l"
 msgstr ""
 
@@ -17230,113 +19433,123 @@ msgid ""
 msgstr "git reset [--mixed | --soft | --hard | --merge | --keep] [-q] [<коммит>]"
 
 #: builtin/reset.c:33
-msgid "git reset [-q] [<tree-ish>] [--] <paths>..."
-msgstr "git reset [-q] [<указатель-дерева>] [--] <пути>…"
+msgid "git reset [-q] [<tree-ish>] [--] <pathspec>..."
+msgstr ""
 
 #: builtin/reset.c:34
-msgid "git reset --patch [<tree-ish>] [--] [<paths>...]"
-msgstr "git reset --patch [<указатель-дерева>] [--] [<пути>…]"
+msgid ""
+"git reset [-q] [--pathspec-from-file [--pathspec-file-nul]] [<tree-ish>]"
+msgstr ""
+
+#: builtin/reset.c:35
+msgid "git reset --patch [<tree-ish>] [--] [<pathspec>...]"
+msgstr ""
 
-#: builtin/reset.c:40
+#: builtin/reset.c:41
 msgid "mixed"
 msgstr "смешанный"
 
-#: builtin/reset.c:40
+#: builtin/reset.c:41
 msgid "soft"
 msgstr "мягкий"
 
-#: builtin/reset.c:40
+#: builtin/reset.c:41
 msgid "hard"
 msgstr "жесткий"
 
-#: builtin/reset.c:40
+#: builtin/reset.c:41
 msgid "merge"
 msgstr "слиянием"
 
-#: builtin/reset.c:40
+#: builtin/reset.c:41
 msgid "keep"
 msgstr "оставлением"
 
-#: builtin/reset.c:81
+#: builtin/reset.c:83
 msgid "You do not have a valid HEAD."
 msgstr "У вас нет верного HEAD."
 
-#: builtin/reset.c:83
+#: builtin/reset.c:85
 msgid "Failed to find tree of HEAD."
 msgstr "Не удалось найти дерево у HEAD."
 
-#: builtin/reset.c:89
+#: builtin/reset.c:91
 #, c-format
 msgid "Failed to find tree of %s."
 msgstr "Не удалось найти дерево у %s."
 
-#: builtin/reset.c:193
+#: builtin/reset.c:116
+#, c-format
+msgid "HEAD is now at %s"
+msgstr "HEAD сейчас на %s"
+
+#: builtin/reset.c:195
 #, c-format
 msgid "Cannot do a %s reset in the middle of a merge."
 msgstr "Нельзя выполнить сброс в режиме «%s» во время слияния."
 
-#: builtin/reset.c:293 builtin/stash.c:514 builtin/stash.c:589
-#: builtin/stash.c:613
+#: builtin/reset.c:295 builtin/stash.c:520 builtin/stash.c:594
+#: builtin/stash.c:618
 msgid "be quiet, only report errors"
 msgstr "тихий режим, выводить только ошибки"
 
-#: builtin/reset.c:295
+#: builtin/reset.c:297
 msgid "reset HEAD and index"
 msgstr "сбросить HEAD и индекс"
 
-#: builtin/reset.c:296
+#: builtin/reset.c:298
 msgid "reset only HEAD"
 msgstr "сбросить только HEAD"
 
-#: builtin/reset.c:298 builtin/reset.c:300
+#: builtin/reset.c:300 builtin/reset.c:302
 msgid "reset HEAD, index and working tree"
 msgstr "сбросить HEAD, индекс и рабочий каталог"
 
-#: builtin/reset.c:302
+#: builtin/reset.c:304
 msgid "reset HEAD but keep local changes"
 msgstr "сбросить HEAD, но оставить локальные изменения"
 
-#: builtin/reset.c:308
+#: builtin/reset.c:310
 msgid "record only the fact that removed paths will be added later"
 msgstr "записать только факт того, что удаленные пути будут добавлены позже"
 
-#: builtin/reset.c:326
+#: builtin/reset.c:344
 #, c-format
 msgid "Failed to resolve '%s' as a valid revision."
 msgstr "Не удалось распознать «%s» как действительную редакцию."
 
-#: builtin/reset.c:334
+#: builtin/reset.c:352
 #, c-format
 msgid "Failed to resolve '%s' as a valid tree."
 msgstr "Не удалось распознать «%s» как действительное дерево."
 
-#: builtin/reset.c:343
+#: builtin/reset.c:361
 msgid "--patch is incompatible with --{hard,mixed,soft}"
 msgstr "--patch нельзя использовать одновременно с --{hard,mixed,soft}"
 
-#: builtin/reset.c:353
+#: builtin/reset.c:371
 msgid "--mixed with paths is deprecated; use 'git reset -- <paths>' instead."
 msgstr "использование опции --mixed с путями устарело; используйте «git reset -- <пути>» instead."
 
-#: builtin/reset.c:355
+#: builtin/reset.c:373
 #, c-format
 msgid "Cannot do %s reset with paths."
 msgstr "Нельзя выполнить сброс в режиме «%s» вместе с указанием пути."
 
-#: builtin/reset.c:370
+#: builtin/reset.c:388
 #, c-format
 msgid "%s reset is not allowed in a bare repository"
 msgstr "сброс «%s» разрешен только с голым репозиторием"
 
-#: builtin/reset.c:374
+#: builtin/reset.c:392
 msgid "-N can only be used with --mixed"
 msgstr "-N можно использовать вместе с --mixed"
 
-#: builtin/reset.c:395
+#: builtin/reset.c:413
 msgid "Unstaged changes after reset:"
 msgstr "Непроиндексированные изменения после сброса:"
 
-#: builtin/reset.c:398
+#: builtin/reset.c:416
 #, c-format
 msgid ""
 "\n"
@@ -17345,53 +19558,48 @@ msgid ""
 "to make this the default.\n"
 msgstr ""
 
-#: builtin/reset.c:408
+#: builtin/reset.c:434
 #, c-format
 msgid "Could not reset index file to revision '%s'."
 msgstr "Не удалось сбросить файл индекса на редакцию «%s»."
 
-#: builtin/reset.c:412
+#: builtin/reset.c:439
 msgid "Could not write new index file."
 msgstr "Не удалось записать новый файл индекса."
 
-#: builtin/rev-list.c:405
+#: builtin/rev-list.c:499
 msgid "cannot combine --exclude-promisor-objects and --missing"
 msgstr ""
 
-#: builtin/rev-list.c:466
+#: builtin/rev-list.c:560
 msgid "object filtering requires --objects"
 msgstr "фильтрация объектов требует указания параметра --objects"
 
-#: builtin/rev-list.c:469
-#, c-format
-msgid "invalid sparse value '%s'"
-msgstr "недопустимое частичное значение «%s»"
-
-#: builtin/rev-list.c:510
+#: builtin/rev-list.c:610
 msgid "rev-list does not support display of notes"
 msgstr "rev-list не поддерживает отображение заметок"
 
-#: builtin/rev-list.c:513
-msgid "cannot combine --use-bitmap-index with object filtering"
-msgstr "нельзя использовать --use-bitmap-index одновременно с фильтрацией объектов"
+#: builtin/rev-list.c:615
+msgid "marked counting is incompatible with --objects"
+msgstr ""
 
-#: builtin/rev-parse.c:408
+#: builtin/rev-parse.c:409
 msgid "git rev-parse --parseopt [<options>] -- [<args>...]"
 msgstr "git rev-parse --parseopt [<опции>] -- [<аргументы>…]"
 
-#: builtin/rev-parse.c:413
+#: builtin/rev-parse.c:414
 msgid "keep the `--` passed as an arg"
 msgstr "передавать далее «--» как аргумент"
 
-#: builtin/rev-parse.c:415
+#: builtin/rev-parse.c:416
 msgid "stop parsing after the first non-option argument"
 msgstr "остановить разбор после первого аргумента не являющегося опцией"
 
-#: builtin/rev-parse.c:418
+#: builtin/rev-parse.c:419
 msgid "output in stuck long form"
 msgstr "выводить аргументы в длинном формате"
 
-#: builtin/rev-parse.c:551
+#: builtin/rev-parse.c:552
 msgid ""
 "git rev-parse --parseopt [<options>] -- [<args>...]\n"
 "   or: git rev-parse --sq-quote [<arg>...]\n"
@@ -17438,47 +19646,51 @@ msgstr "продолжить последовательность копиров
 msgid "cancel revert or cherry-pick sequence"
 msgstr "отмена последовательности копирования или обращения изменений коммитов"
 
-#: builtin/revert.c:106
+#: builtin/revert.c:105
+msgid "skip current commit and continue"
+msgstr ""
+
+#: builtin/revert.c:107
 msgid "don't automatically commit"
 msgstr "не коммитить автоматически"
 
-#: builtin/revert.c:107
+#: builtin/revert.c:108
 msgid "edit the commit message"
 msgstr "изменить сообщение коммита"
 
-#: builtin/revert.c:110
+#: builtin/revert.c:111
 msgid "parent-number"
 msgstr "номер-родителя"
 
-#: builtin/revert.c:111
+#: builtin/revert.c:112
 msgid "select mainline parent"
 msgstr "выбор основного родителя"
 
-#: builtin/revert.c:113
+#: builtin/revert.c:114
 msgid "merge strategy"
 msgstr "стратегия слияния"
 
-#: builtin/revert.c:115
+#: builtin/revert.c:116
 msgid "option for merge strategy"
 msgstr "опция для стратегии слияния"
 
-#: builtin/revert.c:124
+#: builtin/revert.c:125
 msgid "append commit name"
 msgstr "добавить имя коммита"
 
-#: builtin/revert.c:126
+#: builtin/revert.c:127
 msgid "preserve initially empty commits"
 msgstr "сохранить изначально пустые коммиты"
 
-#: builtin/revert.c:128
+#: builtin/revert.c:129
 msgid "keep redundant, empty commits"
 msgstr "оставить избыточные, пустые коммиты"
 
-#: builtin/revert.c:227
+#: builtin/revert.c:239
 msgid "revert failed"
 msgstr "сбой обращения изменений коммита"
 
-#: builtin/revert.c:240
+#: builtin/revert.c:252
 msgid "cherry-pick failed"
 msgstr "сбой при копировании коммита"
 
@@ -17526,36 +19738,40 @@ msgstr[1] "следующие файлы содержат локальные и
 msgstr[2] "следующие файлы содержат локальные изменения:"
 msgstr[3] "следующие файлы содержат локальные изменения:"
 
-#: builtin/rm.c:242
+#: builtin/rm.c:243
 msgid "do not list removed files"
 msgstr "не выводить список удаленных файлов"
 
-#: builtin/rm.c:243
+#: builtin/rm.c:244
 msgid "only remove from the index"
 msgstr "удалить только из индекса"
 
-#: builtin/rm.c:244
+#: builtin/rm.c:245
 msgid "override the up-to-date check"
 msgstr "пропустить проверку актуальности"
 
-#: builtin/rm.c:245
+#: builtin/rm.c:246
 msgid "allow recursive removal"
 msgstr "разрешить рекурсивное удаление"
 
-#: builtin/rm.c:247
+#: builtin/rm.c:248
 msgid "exit with a zero status even if nothing matched"
 msgstr "выход с нулевым кодом возврата, даже если ничего не найдено"
 
-#: builtin/rm.c:289
+#: builtin/rm.c:282
+msgid "No pathspec was given. Which files should I remove?"
+msgstr ""
+
+#: builtin/rm.c:305
 msgid "please stage your changes to .gitmodules or stash them to proceed"
 msgstr ""
 
-#: builtin/rm.c:307
+#: builtin/rm.c:323
 #, c-format
 msgid "not removing '%s' recursively without -r"
 msgstr "не удаляю рекурсивно «%s» без указания опции -r"
 
-#: builtin/rm.c:346
+#: builtin/rm.c:362
 #, c-format
 msgid "git rm: unable to remove %s"
 msgstr "git rm: не удалось удалить %s"
@@ -17566,55 +19782,76 @@ msgid ""
 "  --all and explicit <ref> specification are mutually exclusive."
 msgstr "git send-pack [--all | --mirror] [--dry-run] [--force] [--receive-pack=<git-receive-pack>] [--verbose] [--thin] [--atomic] [<сервер>:]<каталог> [<ссылка>…]\n  --all и явный спецификатор <ссылки> взаимно исключающие."
 
-#: builtin/send-pack.c:163
+#: builtin/send-pack.c:188
 msgid "remote name"
 msgstr "имя внешнего репозитория"
 
-#: builtin/send-pack.c:177
+#: builtin/send-pack.c:201
 msgid "use stateless RPC protocol"
 msgstr "протокол без сохранения состояния для RPC"
 
-#: builtin/send-pack.c:178
+#: builtin/send-pack.c:202
 msgid "read refs from stdin"
 msgstr "прочитать ссылки из стандартного ввода"
 
-#: builtin/send-pack.c:179
+#: builtin/send-pack.c:203
 msgid "print status from remote helper"
 msgstr "вывести статус от скрипта внешнего сервера"
 
-#: builtin/shortlog.c:14
+#: builtin/shortlog.c:16
 msgid "git shortlog [<options>] [<revision-range>] [[--] <path>...]"
 msgstr "git shortlog [<опции>] [<диапазон-редакций>] [[--] <путь>…]"
 
-#: builtin/shortlog.c:15
+#: builtin/shortlog.c:17
 msgid "git log --pretty=short | git shortlog [<options>]"
 msgstr "git log --pretty=short | git shortlog [<опции>]"
 
-#: builtin/shortlog.c:264
+#: builtin/shortlog.c:135
+msgid "using multiple --group options with stdin is not supported"
+msgstr ""
+
+#: builtin/shortlog.c:145
+msgid "using --group=trailer with stdin is not supported"
+msgstr ""
+
+#: builtin/shortlog.c:335
+#, c-format
+msgid "unknown group type: %s"
+msgstr ""
+
+#: builtin/shortlog.c:363
 msgid "Group by committer rather than author"
 msgstr "Группировать по коммитеру, а не по автору"
 
-#: builtin/shortlog.c:266
+#: builtin/shortlog.c:366
 msgid "sort output according to the number of commits per author"
 msgstr "отсортировать вывод по количеству коммитов у автора"
 
-#: builtin/shortlog.c:268
+#: builtin/shortlog.c:368
 msgid "Suppress commit descriptions, only provides commit count"
 msgstr "Не выводить описания коммитов, а только их количество"
 
-#: builtin/shortlog.c:270
+#: builtin/shortlog.c:370
 msgid "Show the email address of each author"
 msgstr "Показать почту каждого из авторов"
 
-#: builtin/shortlog.c:271
+#: builtin/shortlog.c:371
 msgid "<w>[,<i1>[,<i2>]]"
 msgstr "<w>[,<i1>[,<i2>]]"
 
-#: builtin/shortlog.c:272
+#: builtin/shortlog.c:372
 msgid "Linewrap output"
 msgstr "Перенос строк на выводе"
 
-#: builtin/shortlog.c:301
+#: builtin/shortlog.c:374
+msgid "field"
+msgstr ""
+
+#: builtin/shortlog.c:375
+msgid "Group by field"
+msgstr ""
+
+#: builtin/shortlog.c:403
 msgid "too many arguments given outside repository"
 msgstr ""
 
@@ -17639,90 +19876,90 @@ msgstr[1] "игнорирование %s; невозможно обработа
 msgstr[2] "игнорирование %s; невозможно обработать больше %d ссылок"
 msgstr[3] "игнорирование %s; невозможно обработать больше %d ссылки"
 
-#: builtin/show-branch.c:549
+#: builtin/show-branch.c:548
 #, c-format
 msgid "no matching refs with %s"
 msgstr "нет совпадающих записей с %s"
 
-#: builtin/show-branch.c:646
+#: builtin/show-branch.c:645
 msgid "show remote-tracking and local branches"
 msgstr "показать список и отслеживаемых внешних и локальных веток"
 
-#: builtin/show-branch.c:648
+#: builtin/show-branch.c:647
 msgid "show remote-tracking branches"
 msgstr "показать список отслеживаемых внешних веток"
 
-#: builtin/show-branch.c:650
+#: builtin/show-branch.c:649
 msgid "color '*!+-' corresponding to the branch"
 msgstr "окрашивать «*!+-» в соответствии с веткой"
 
-#: builtin/show-branch.c:652
+#: builtin/show-branch.c:651
 msgid "show <n> more commits after the common ancestor"
 msgstr "показать <n> коммитов после общего предка"
 
-#: builtin/show-branch.c:654
+#: builtin/show-branch.c:653
 msgid "synonym to more=-1"
 msgstr "синоним для more=-1"
 
-#: builtin/show-branch.c:655
+#: builtin/show-branch.c:654
 msgid "suppress naming strings"
 msgstr "не выводить именованные строки"
 
-#: builtin/show-branch.c:657
+#: builtin/show-branch.c:656
 msgid "include the current branch"
 msgstr "включить в вывод текущую ветку"
 
-#: builtin/show-branch.c:659
+#: builtin/show-branch.c:658
 msgid "name commits with their object names"
 msgstr "именовать коммиты их именами объектов"
 
-#: builtin/show-branch.c:661
+#: builtin/show-branch.c:660
 msgid "show possible merge bases"
 msgstr "вывести возможные базы слияния"
 
-#: builtin/show-branch.c:663
+#: builtin/show-branch.c:662
 msgid "show refs unreachable from any other ref"
 msgstr "вывести ссылки, недоступные из любых других ссылок"
 
-#: builtin/show-branch.c:665
+#: builtin/show-branch.c:664
 msgid "show commits in topological order"
 msgstr "вывести коммиты в топологическом порядке"
 
-#: builtin/show-branch.c:668
+#: builtin/show-branch.c:667
 msgid "show only commits not on the first branch"
 msgstr "вывести только коммиты, отсутствующие в первой ветке"
 
-#: builtin/show-branch.c:670
+#: builtin/show-branch.c:669
 msgid "show merges reachable from only one tip"
 msgstr "вывести слияния, достижимые только из одной из верхушек"
 
-#: builtin/show-branch.c:672
+#: builtin/show-branch.c:671
 msgid "topologically sort, maintaining date order where possible"
 msgstr "топологическая сортировка, с сохранением порядка дат, если возможно"
 
-#: builtin/show-branch.c:675
+#: builtin/show-branch.c:674
 msgid "<n>[,<base>]"
 msgstr "<n>[,<база>]"
 
-#: builtin/show-branch.c:676
+#: builtin/show-branch.c:675
 msgid "show <n> most recent ref-log entries starting at base"
 msgstr "показать <n> последних записей в журнале ссылок, начиная с базы"
 
-#: builtin/show-branch.c:712
+#: builtin/show-branch.c:711
 msgid ""
 "--reflog is incompatible with --all, --remotes, --independent or --merge-"
 "base"
 msgstr "--reflog несовместимо с --all, --remotes, --independent и --merge-base"
 
-#: builtin/show-branch.c:736
+#: builtin/show-branch.c:735
 msgid "no branches given, and HEAD is not valid"
 msgstr "не указаны ветки и HEAD не действительный"
 
-#: builtin/show-branch.c:739
+#: builtin/show-branch.c:738
 msgid "--reflog option needs one branch name"
 msgstr "параметр --reflog требует указания имени одной ветки"
 
-#: builtin/show-branch.c:742
+#: builtin/show-branch.c:741
 #, c-format
 msgid "only %d entry can be shown at one time."
 msgid_plural "only %d entries can be shown at one time."
@@ -17731,12 +19968,12 @@ msgstr[1] "только %d записи могут быть показаны о
 msgstr[2] "только %d записей могут быть показаны одновременно."
 msgstr[3] "только %d записи могут быть показаны одновременно."
 
-#: builtin/show-branch.c:746
+#: builtin/show-branch.c:745
 #, c-format
 msgid "no such ref %s"
 msgstr "нет такой ссылки %s"
 
-#: builtin/show-branch.c:832
+#: builtin/show-branch.c:831
 #, c-format
 msgid "cannot handle more than %d rev."
 msgid_plural "cannot handle more than %d revs."
@@ -17745,16 +19982,24 @@ msgstr[1] "невозможно обработать больше %d редак
 msgstr[2] "невозможно обработать больше %d редакций."
 msgstr[3] "невозможно обработать больше %d редакции."
 
-#: builtin/show-branch.c:836
+#: builtin/show-branch.c:835
 #, c-format
 msgid "'%s' is not a valid ref."
 msgstr "«%s» не является допустимой ссылкой на коммит."
 
-#: builtin/show-branch.c:839
+#: builtin/show-branch.c:838
 #, c-format
 msgid "cannot find commit %s (%s)"
 msgstr "не удалось найти коммит %s (%s)"
 
+#: builtin/show-index.c:21
+msgid "hash-algorithm"
+msgstr ""
+
+#: builtin/show-index.c:31
+msgid "Unknown hash algorithm"
+msgstr ""
+
 #: builtin/show-ref.c:12
 msgid ""
 "git show-ref [-q | --quiet] [--verify] [--head] [-d | --dereference] [-s | "
@@ -17787,7 +20032,7 @@ msgstr "разыменовать метки в идентификаторы об
 
 #: builtin/show-ref.c:173
 msgid "only show SHA1 hash using <n> digits"
-msgstr "использовать <n> символов для вывода SHA-1 хеш-суммы"
+msgstr "использовать <n> символов для вывода хэш-кода SHA-1"
 
 #: builtin/show-ref.c:177
 msgid "do not print results to stdout (useful with --verify)"
@@ -17797,15 +20042,86 @@ msgstr "не печатать результат на стандартный в
 msgid "show refs from stdin that aren't in local repository"
 msgstr "вывести ссылки со стандартного ввода, которых нет в локальном репозитории"
 
-#: builtin/stash.c:22 builtin/stash.c:37
+#: builtin/sparse-checkout.c:21
+msgid "git sparse-checkout (init|list|set|add|reapply|disable) <options>"
+msgstr ""
+
+#: builtin/sparse-checkout.c:50
+msgid "git sparse-checkout list"
+msgstr ""
+
+#: builtin/sparse-checkout.c:76
+msgid "this worktree is not sparse (sparse-checkout file may not exist)"
+msgstr ""
+
+#: builtin/sparse-checkout.c:228
+msgid "failed to create directory for sparse-checkout file"
+msgstr ""
+
+#: builtin/sparse-checkout.c:269
+msgid "unable to upgrade repository format to enable worktreeConfig"
+msgstr ""
+
+#: builtin/sparse-checkout.c:271
+msgid "failed to set extensions.worktreeConfig setting"
+msgstr ""
+
+#: builtin/sparse-checkout.c:288
+msgid "git sparse-checkout init [--cone]"
+msgstr ""
+
+#: builtin/sparse-checkout.c:307
+msgid "initialize the sparse-checkout in cone mode"
+msgstr ""
+
+#: builtin/sparse-checkout.c:344
+#, c-format
+msgid "failed to open '%s'"
+msgstr "не удалось открыть «%s»"
+
+#: builtin/sparse-checkout.c:401
+#, c-format
+msgid "could not normalize path %s"
+msgstr ""
+
+#: builtin/sparse-checkout.c:413
+msgid "git sparse-checkout (set|add) (--stdin | <patterns>)"
+msgstr ""
+
+#: builtin/sparse-checkout.c:438
+#, c-format
+msgid "unable to unquote C-style string '%s'"
+msgstr ""
+
+#: builtin/sparse-checkout.c:492 builtin/sparse-checkout.c:516
+msgid "unable to load existing sparse-checkout patterns"
+msgstr ""
+
+#: builtin/sparse-checkout.c:561
+msgid "read patterns from standard in"
+msgstr ""
+
+#: builtin/sparse-checkout.c:576
+msgid "git sparse-checkout reapply"
+msgstr ""
+
+#: builtin/sparse-checkout.c:595
+msgid "git sparse-checkout disable"
+msgstr ""
+
+#: builtin/sparse-checkout.c:623
+msgid "error while refreshing working directory"
+msgstr ""
+
+#: builtin/stash.c:22 builtin/stash.c:38
 msgid "git stash list [<options>]"
 msgstr "git stash list [<опции>]"
 
-#: builtin/stash.c:23 builtin/stash.c:42
+#: builtin/stash.c:23 builtin/stash.c:43
 msgid "git stash show [<options>] [<stash>]"
 msgstr "git stash show [<опциии>] [<спрятанные-изменения>]"
 
-#: builtin/stash.c:24 builtin/stash.c:47
+#: builtin/stash.c:24 builtin/stash.c:48
 msgid "git stash drop [-q|--quiet] [<stash>]"
 msgstr "git stash drop [-q|--quiet] [<спрятанные-изменения>]"
 
@@ -17813,209 +20129,217 @@ msgstr "git stash drop [-q|--quiet] [<спрятанные-изменения>]"
 msgid "git stash ( pop | apply ) [--index] [-q|--quiet] [<stash>]"
 msgstr "git stash ( pop | apply ) [--index] [-q|--quiet] [<спрятанные-изменения>]"
 
-#: builtin/stash.c:26 builtin/stash.c:62
+#: builtin/stash.c:26 builtin/stash.c:63
 msgid "git stash branch <branchname> [<stash>]"
 msgstr "git stash branch <имя-ветки> [<спрятанные-изменения>]"
 
-#: builtin/stash.c:27 builtin/stash.c:67
+#: builtin/stash.c:27 builtin/stash.c:68
 msgid "git stash clear"
 msgstr "git stash clear"
 
-#: builtin/stash.c:28 builtin/stash.c:77
+#: builtin/stash.c:28
 msgid ""
 "git stash [push [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet]\n"
 "          [-u|--include-untracked] [-a|--all] [-m|--message <message>]\n"
+"          [--pathspec-from-file=<file> [--pathspec-file-nul]]\n"
 "          [--] [<pathspec>...]]"
-msgstr "git stash [push [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet]\n          [-u|--include-untracked] [-a|--all] [-m|--message <сообщение>]\n          [--] [<спецификатор-пути>…]]"
+msgstr ""
 
-#: builtin/stash.c:31 builtin/stash.c:84
+#: builtin/stash.c:32 builtin/stash.c:85
 msgid ""
 "git stash save [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet]\n"
 "          [-u|--include-untracked] [-a|--all] [<message>]"
 msgstr "git stash save [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet]\n          [-u|--include-untracked] [-a|--all] [<сообщение>]"
 
-#: builtin/stash.c:52
+#: builtin/stash.c:53
 msgid "git stash pop [--index] [-q|--quiet] [<stash>]"
 msgstr "git stash pop [--index] [-q|--quiet] [<спрятанные-изменения>]"
 
-#: builtin/stash.c:57
+#: builtin/stash.c:58
 msgid "git stash apply [--index] [-q|--quiet] [<stash>]"
 msgstr "git stash apply [--index] [-q|--quiet] [<спрятанные-изменения>]"
 
-#: builtin/stash.c:72
+#: builtin/stash.c:73
 msgid "git stash store [-m|--message <message>] [-q|--quiet] <commit>"
 msgstr "git stash store [-m|--message <сообщение>] [-q|--quiet] <коммит>"
 
-#: builtin/stash.c:127
+#: builtin/stash.c:78
+msgid ""
+"git stash [push [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet]\n"
+"          [-u|--include-untracked] [-a|--all] [-m|--message <message>]\n"
+"          [--] [<pathspec>...]]"
+msgstr "git stash [push [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet]\n          [-u|--include-untracked] [-a|--all] [-m|--message <сообщение>]\n          [--] [<спецификатор-пути>…]]"
+
+#: builtin/stash.c:128
 #, c-format
 msgid "'%s' is not a stash-like commit"
 msgstr "«%s» не является коммитом со спрятанными изменениями"
 
-#: builtin/stash.c:147
+#: builtin/stash.c:148
 #, c-format
 msgid "Too many revisions specified:%s"
 msgstr "Передано слишком много редакций:%s"
 
-#: builtin/stash.c:161 git-legacy-stash.sh:548
+#: builtin/stash.c:162
 msgid "No stash entries found."
 msgstr "Не найдены спрятанные изменения."
 
-#: builtin/stash.c:175
+#: builtin/stash.c:176
 #, c-format
 msgid "%s is not a valid reference"
 msgstr "%s не является допустимой ссылкой на коммит"
 
-#: builtin/stash.c:224 git-legacy-stash.sh:75
+#: builtin/stash.c:225
 msgid "git stash clear with parameters is unimplemented"
 msgstr "git stash очистка с параметрами не реализована"
 
-#: builtin/stash.c:403
+#: builtin/stash.c:404
 msgid "cannot apply a stash in the middle of a merge"
 msgstr "нельзя применить спрятанные изменения во время выполнения слияния"
 
-#: builtin/stash.c:414
+#: builtin/stash.c:415
 #, c-format
 msgid "could not generate diff %s^!."
 msgstr "не удалось сгенерировать список изменений %s^!."
 
-#: builtin/stash.c:421
-msgid "conflicts in index.Try without --index."
-msgstr "конфликты в индексе. Попробуйте без --index."
+#: builtin/stash.c:422
+msgid "conflicts in index. Try without --index."
+msgstr ""
 
-#: builtin/stash.c:427
+#: builtin/stash.c:428
 msgid "could not save index tree"
 msgstr "не удалось сохранить дерево индекса"
 
-#: builtin/stash.c:434
+#: builtin/stash.c:437
 msgid "could not restore untracked files from stash"
 msgstr "невозможно восстановить неотслеживаемые файлы из спрятанных файлов"
 
-#: builtin/stash.c:448
+#: builtin/stash.c:451
 #, c-format
 msgid "Merging %s with %s"
 msgstr "Слияние %s и %s"
 
-#: builtin/stash.c:458 git-legacy-stash.sh:680
+#: builtin/stash.c:461
 msgid "Index was not unstashed."
 msgstr "Индекс не был извлечён из спрятанных изменений."
 
-#: builtin/stash.c:516 builtin/stash.c:615
+#: builtin/stash.c:522 builtin/stash.c:620
 msgid "attempt to recreate the index"
 msgstr "попытка пересоздания индекса"
 
-#: builtin/stash.c:549
+#: builtin/stash.c:566
 #, c-format
 msgid "Dropped %s (%s)"
 msgstr "Отброшено %s (%s)"
 
-#: builtin/stash.c:552
+#: builtin/stash.c:569
 #, c-format
 msgid "%s: Could not drop stash entry"
 msgstr "%s: Не удалось отбросить запись из спрятанных изменений"
 
-#: builtin/stash.c:577
+#: builtin/stash.c:582
 #, c-format
 msgid "'%s' is not a stash reference"
 msgstr "«%s» не является ссылкой на спрятанные изменения"
 
-#: builtin/stash.c:627 git-legacy-stash.sh:694
+#: builtin/stash.c:632
 msgid "The stash entry is kept in case you need it again."
 msgstr "Спрятанные изменения сохранены, на случай если они снова вам понадобятся."
 
-#: builtin/stash.c:650 git-legacy-stash.sh:712
+#: builtin/stash.c:655
 msgid "No branch name specified"
 msgstr "Не указано имя ветки"
 
-#: builtin/stash.c:789 builtin/stash.c:826
+#: builtin/stash.c:799 builtin/stash.c:836
 #, c-format
 msgid "Cannot update %s with %s"
 msgstr "Не удолось обновить %s с %s"
 
-#: builtin/stash.c:807 builtin/stash.c:1474 builtin/stash.c:1510
+#: builtin/stash.c:817 builtin/stash.c:1471 builtin/stash.c:1536
 msgid "stash message"
 msgstr "описание спрятанных изменений"
 
-#: builtin/stash.c:817
+#: builtin/stash.c:827
 msgid "\"git stash store\" requires one <commit> argument"
 msgstr "«git stash store» требует указания одного аргумента <коммит>"
 
-#: builtin/stash.c:1039 git-legacy-stash.sh:217
+#: builtin/stash.c:1042
 msgid "No changes selected"
 msgstr "Изменения не выбраны"
 
-#: builtin/stash.c:1135 git-legacy-stash.sh:150
+#: builtin/stash.c:1142
 msgid "You do not have the initial commit yet"
 msgstr "У вас еще нет начального коммита"
 
-#: builtin/stash.c:1162 git-legacy-stash.sh:165
+#: builtin/stash.c:1169
 msgid "Cannot save the current index state"
 msgstr "Не удалось сохранить текущее состояние индекса"
 
-#: builtin/stash.c:1171 git-legacy-stash.sh:180
+#: builtin/stash.c:1178
 msgid "Cannot save the untracked files"
 msgstr "Невозможно сохранить неотслеживаемые файлы"
 
-#: builtin/stash.c:1182 builtin/stash.c:1191 git-legacy-stash.sh:200
-#: git-legacy-stash.sh:213
+#: builtin/stash.c:1189 builtin/stash.c:1198
 msgid "Cannot save the current worktree state"
 msgstr "Не удалось сохранить текущее состояние рабочего каталога"
 
-#: builtin/stash.c:1219 git-legacy-stash.sh:233
+#: builtin/stash.c:1226
 msgid "Cannot record working tree state"
 msgstr "Не удалось записать состояние рабочего каталога"
 
-#: builtin/stash.c:1268 git-legacy-stash.sh:337
+#: builtin/stash.c:1275
 msgid "Can't use --patch and --include-untracked or --all at the same time"
 msgstr "Нельзя использовать --patch и --include-untracked или --all одновременно"
 
-#: builtin/stash.c:1284
+#: builtin/stash.c:1291
 msgid "Did you forget to 'git add'?"
 msgstr "Возможно, вы забыли выполнить «git add»?"
 
-#: builtin/stash.c:1299 git-legacy-stash.sh:345
+#: builtin/stash.c:1306
 msgid "No local changes to save"
 msgstr "Нет локальных изменений для сохранения"
 
-#: builtin/stash.c:1306 git-legacy-stash.sh:350
+#: builtin/stash.c:1313
 msgid "Cannot initialize stash"
 msgstr "Не удалось инициализировать спрятанные изменения"
 
-#: builtin/stash.c:1321 git-legacy-stash.sh:354
+#: builtin/stash.c:1328
 msgid "Cannot save the current status"
 msgstr "Не удалось сохранить текущий статус"
 
-#: builtin/stash.c:1326
+#: builtin/stash.c:1333
 #, c-format
 msgid "Saved working directory and index state %s"
 msgstr "Рабочий каталог и состояние индекса сохранены %s"
 
-#: builtin/stash.c:1430 git-legacy-stash.sh:384
+#: builtin/stash.c:1423
 msgid "Cannot remove worktree changes"
 msgstr "Не удалось удалить изменения рабочего каталога"
 
-#: builtin/stash.c:1465 builtin/stash.c:1501
+#: builtin/stash.c:1462 builtin/stash.c:1527
 msgid "keep index"
 msgstr ""
 
-#: builtin/stash.c:1467 builtin/stash.c:1503
+#: builtin/stash.c:1464 builtin/stash.c:1529
 msgid "stash in patch mode"
 msgstr ""
 
-#: builtin/stash.c:1468 builtin/stash.c:1504
+#: builtin/stash.c:1465 builtin/stash.c:1530
 msgid "quiet mode"
 msgstr ""
 
-#: builtin/stash.c:1470 builtin/stash.c:1506
+#: builtin/stash.c:1467 builtin/stash.c:1532
 msgid "include untracked files in stash"
 msgstr ""
 
-#: builtin/stash.c:1472 builtin/stash.c:1508
+#: builtin/stash.c:1469 builtin/stash.c:1534
 msgid "include ignore files"
 msgstr ""
 
-#: builtin/stash.c:1568
-#, c-format
-msgid "could not exec %s"
+#: builtin/stash.c:1569
+msgid ""
+"the stash.useBuiltin support has been removed!\n"
+"See its entry in 'git help config' for details."
 msgstr ""
 
 #: builtin/stripspace.c:18
@@ -18034,393 +20358,502 @@ msgstr "пропустить и удалить все строки, начина
 msgid "prepend comment character and space to each line"
 msgstr "добавить перед каждой строкой символ комметария и пробел"
 
-#: builtin/submodule--helper.c:45 builtin/submodule--helper.c:1942
+#: builtin/submodule--helper.c:47 builtin/submodule--helper.c:2423
 #, c-format
 msgid "Expecting a full ref name, got %s"
 msgstr "Ожидалось полное имя ссылки, а получено %s"
 
-#: builtin/submodule--helper.c:62
+#: builtin/submodule--helper.c:64
 msgid "submodule--helper print-default-remote takes no arguments"
 msgstr ""
 
-#: builtin/submodule--helper.c:100
+#: builtin/submodule--helper.c:102
 #, c-format
 msgid "cannot strip one component off url '%s'"
 msgstr "не удалось обрезать один компонент url «%s»"
 
-#: builtin/submodule--helper.c:408 builtin/submodule--helper.c:1367
+#: builtin/submodule--helper.c:410 builtin/submodule--helper.c:1819
 msgid "alternative anchor for relative paths"
 msgstr "альтернативный символ для относительных путей"
 
-#: builtin/submodule--helper.c:413
+#: builtin/submodule--helper.c:415
 msgid "git submodule--helper list [--prefix=<path>] [<path>...]"
 msgstr "git submodule--helper list [--prefix=<путь>] [<путь>…]"
 
-#: builtin/submodule--helper.c:470 builtin/submodule--helper.c:627
-#: builtin/submodule--helper.c:650
+#: builtin/submodule--helper.c:472 builtin/submodule--helper.c:629
+#: builtin/submodule--helper.c:652
 #, c-format
 msgid "No url found for submodule path '%s' in .gitmodules"
 msgstr "URL для подмодуля по пути «%s» не найден в .gitmodules"
 
-#: builtin/submodule--helper.c:522
+#: builtin/submodule--helper.c:524
 #, c-format
 msgid "Entering '%s'\n"
 msgstr ""
 
-#: builtin/submodule--helper.c:525
+#: builtin/submodule--helper.c:527
 #, c-format
 msgid ""
 "run_command returned non-zero status for %s\n"
 "."
 msgstr ""
 
-#: builtin/submodule--helper.c:546
+#: builtin/submodule--helper.c:549
 #, c-format
 msgid ""
 "run_command returned non-zero status while recursing in the nested submodules of %s\n"
 "."
 msgstr ""
 
-#: builtin/submodule--helper.c:562
+#: builtin/submodule--helper.c:565
 msgid "Suppress output of entering each submodule command"
 msgstr ""
 
-#: builtin/submodule--helper.c:564 builtin/submodule--helper.c:1049
+#: builtin/submodule--helper.c:567 builtin/submodule--helper.c:1487
 msgid "Recurse into nested submodules"
 msgstr ""
 
-#: builtin/submodule--helper.c:569
+#: builtin/submodule--helper.c:572
 msgid "git submodule--helper foreach [--quiet] [--recursive] [--] <command>"
 msgstr ""
 
-#: builtin/submodule--helper.c:596
+#: builtin/submodule--helper.c:599
 #, c-format
 msgid ""
 "could not look up configuration '%s'. Assuming this repository is its own "
 "authoritative upstream."
 msgstr ""
 
-#: builtin/submodule--helper.c:664
+#: builtin/submodule--helper.c:666
 #, c-format
 msgid "Failed to register url for submodule path '%s'"
 msgstr "Сбой регистрации адреса для пути подмодуля «%s»"
 
-#: builtin/submodule--helper.c:668
+#: builtin/submodule--helper.c:670
 #, c-format
 msgid "Submodule '%s' (%s) registered for path '%s'\n"
 msgstr "Подмодуль «%s» (%s) зарегистрирован по пути «%s»\n"
 
-#: builtin/submodule--helper.c:678
+#: builtin/submodule--helper.c:680
 #, c-format
 msgid "warning: command update mode suggested for submodule '%s'\n"
 msgstr "внимание: предполагаемый режим обновления для подмодуля «%s»\n"
 
-#: builtin/submodule--helper.c:685
+#: builtin/submodule--helper.c:687
 #, c-format
 msgid "Failed to register update mode for submodule path '%s'"
 msgstr "Сбой регистрации режима обновления для пути подмодуля «%s»"
 
-#: builtin/submodule--helper.c:707
+#: builtin/submodule--helper.c:709
 msgid "Suppress output for initializing a submodule"
 msgstr "Не выводить информацию о инициализации подмодуля"
 
-#: builtin/submodule--helper.c:712
+#: builtin/submodule--helper.c:714
 msgid "git submodule--helper init [<options>] [<path>]"
 msgstr ""
 
-#: builtin/submodule--helper.c:784 builtin/submodule--helper.c:910
+#: builtin/submodule--helper.c:787 builtin/submodule--helper.c:922
 #, c-format
 msgid "no submodule mapping found in .gitmodules for path '%s'"
 msgstr "не найдено соответствие подмодулей в .gitmodules для пути «%s»"
 
-#: builtin/submodule--helper.c:823
+#: builtin/submodule--helper.c:835
 #, c-format
 msgid "could not resolve HEAD ref inside the submodule '%s'"
 msgstr "не удалось найти HEAD ссылку внутри подмодуля «%s»"
 
-#: builtin/submodule--helper.c:850 builtin/submodule--helper.c:1019
+#: builtin/submodule--helper.c:862 builtin/submodule--helper.c:1457
 #, c-format
 msgid "failed to recurse into submodule '%s'"
 msgstr "не удалось перейти вглубь подмодуля «%s»"
 
-#: builtin/submodule--helper.c:874 builtin/submodule--helper.c:1185
+#: builtin/submodule--helper.c:886 builtin/submodule--helper.c:1623
 msgid "Suppress submodule status output"
 msgstr "Не выводить статус подмодуля"
 
-#: builtin/submodule--helper.c:875
+#: builtin/submodule--helper.c:887
 msgid ""
 "Use commit stored in the index instead of the one stored in the submodule "
 "HEAD"
 msgstr "Использовать коммит хранящийся в индексе вместо коммита хранящегося в HEAD подмодуля"
 
-#: builtin/submodule--helper.c:876
+#: builtin/submodule--helper.c:888
 msgid "recurse into nested submodules"
 msgstr "проходить вглубь вложенных подмодулей"
 
-#: builtin/submodule--helper.c:881
+#: builtin/submodule--helper.c:893
 msgid "git submodule status [--quiet] [--cached] [--recursive] [<path>...]"
 msgstr "git submodule status [--quiet] [--cached] [--recursive] [<путь>…]"
 
-#: builtin/submodule--helper.c:905
+#: builtin/submodule--helper.c:917
 msgid "git submodule--helper name <path>"
 msgstr "git submodule--helper name <путь>"
 
-#: builtin/submodule--helper.c:969
+#: builtin/submodule--helper.c:989
+#, c-format
+msgid "* %s %s(blob)->%s(submodule)"
+msgstr ""
+
+#: builtin/submodule--helper.c:992
+#, c-format
+msgid "* %s %s(submodule)->%s(blob)"
+msgstr ""
+
+#: builtin/submodule--helper.c:1005
+#, c-format
+msgid "%s"
+msgstr ""
+
+#: builtin/submodule--helper.c:1055
+#, c-format
+msgid "couldn't hash object from '%s'"
+msgstr ""
+
+#: builtin/submodule--helper.c:1059
+#, c-format
+msgid "unexpected mode %o\n"
+msgstr ""
+
+#: builtin/submodule--helper.c:1300
+msgid "use the commit stored in the index instead of the submodule HEAD"
+msgstr ""
+
+#: builtin/submodule--helper.c:1302
+msgid "to compare the commit in the index with that in the submodule HEAD"
+msgstr ""
+
+#: builtin/submodule--helper.c:1304
+msgid "skip submodules with 'ignore_config' value set to 'all'"
+msgstr ""
+
+#: builtin/submodule--helper.c:1306
+msgid "limit the summary size"
+msgstr ""
+
+#: builtin/submodule--helper.c:1311
+msgid "git submodule--helper summary [<options>] [<commit>] [--] [<path>]"
+msgstr ""
+
+#: builtin/submodule--helper.c:1335
+msgid "could not fetch a revision for HEAD"
+msgstr ""
+
+#: builtin/submodule--helper.c:1340
+msgid "--cached and --files are mutually exclusive"
+msgstr ""
+
+#: builtin/submodule--helper.c:1407
 #, c-format
 msgid "Synchronizing submodule url for '%s'\n"
 msgstr ""
 
-#: builtin/submodule--helper.c:975
+#: builtin/submodule--helper.c:1413
 #, c-format
 msgid "failed to register url for submodule path '%s'"
 msgstr ""
 
-#: builtin/submodule--helper.c:989
+#: builtin/submodule--helper.c:1427
 #, c-format
 msgid "failed to get the default remote for submodule '%s'"
 msgstr ""
 
-#: builtin/submodule--helper.c:1000
+#: builtin/submodule--helper.c:1438
 #, c-format
 msgid "failed to update remote for submodule '%s'"
 msgstr ""
 
-#: builtin/submodule--helper.c:1047
+#: builtin/submodule--helper.c:1485
 msgid "Suppress output of synchronizing submodule url"
 msgstr ""
 
-#: builtin/submodule--helper.c:1054
+#: builtin/submodule--helper.c:1492
 msgid "git submodule--helper sync [--quiet] [--recursive] [<path>]"
 msgstr "git submodule--helper sync [--quiet] [--recursive] [<путь>]"
 
-#: builtin/submodule--helper.c:1108
+#: builtin/submodule--helper.c:1546
 #, 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:1120
+#: builtin/submodule--helper.c:1558
 #, c-format
 msgid ""
 "Submodule work tree '%s' contains local modifications; use '-f' to discard "
 "them"
 msgstr ""
 
-#: builtin/submodule--helper.c:1128
+#: builtin/submodule--helper.c:1566
 #, c-format
 msgid "Cleared directory '%s'\n"
 msgstr ""
 
-#: builtin/submodule--helper.c:1130
+#: builtin/submodule--helper.c:1568
 #, c-format
 msgid "Could not remove submodule work tree '%s'\n"
 msgstr ""
 
-#: builtin/submodule--helper.c:1141
+#: builtin/submodule--helper.c:1579
 #, c-format
 msgid "could not create empty submodule directory %s"
 msgstr ""
 
-#: builtin/submodule--helper.c:1157
+#: builtin/submodule--helper.c:1595
 #, c-format
 msgid "Submodule '%s' (%s) unregistered for path '%s'\n"
 msgstr ""
 
-#: builtin/submodule--helper.c:1186
+#: builtin/submodule--helper.c:1624
 msgid "Remove submodule working trees even if they contain local changes"
 msgstr ""
 
-#: builtin/submodule--helper.c:1187
+#: builtin/submodule--helper.c:1625
 msgid "Unregister all submodules"
 msgstr ""
 
-#: builtin/submodule--helper.c:1192
+#: builtin/submodule--helper.c:1630
 msgid ""
 "git submodule deinit [--quiet] [-f | --force] [--all | [--] [<path>...]]"
 msgstr "git submodule deinit [--quiet] [-f | --force] [--all | [--] [<путь>…]]"
 
-#: builtin/submodule--helper.c:1206
+#: builtin/submodule--helper.c:1644
 msgid "Use '--all' if you really want to deinitialize all submodules"
 msgstr "Используйте «--all», если вы действительно хотите деинициализировать все подмодули"
 
-#: builtin/submodule--helper.c:1301 builtin/submodule--helper.c:1304
+#: builtin/submodule--helper.c:1713
+msgid ""
+"An alternate computed from a superproject's alternate is invalid.\n"
+"To allow Git to clone without an alternate in such a case, set\n"
+"submodule.alternateErrorStrategy to 'info' or, equivalently, clone with\n"
+"'--reference-if-able' instead of '--reference'."
+msgstr ""
+
+#: builtin/submodule--helper.c:1752 builtin/submodule--helper.c:1755
 #, c-format
 msgid "submodule '%s' cannot add alternate: %s"
 msgstr "подмодулю «%s» не удалось добавить альтернативу: %s"
 
-#: builtin/submodule--helper.c:1340
+#: builtin/submodule--helper.c:1791
 #, c-format
 msgid "Value '%s' for submodule.alternateErrorStrategy is not recognized"
 msgstr "Значение «%s» для параметра submodule.alternateErrorStrategy не рапознано"
 
-#: builtin/submodule--helper.c:1347
+#: builtin/submodule--helper.c:1798
 #, c-format
 msgid "Value '%s' for submodule.alternateLocation is not recognized"
 msgstr "Значение «%s» для параметра submodule.alternateLocation не рапознано"
 
-#: builtin/submodule--helper.c:1370
+#: builtin/submodule--helper.c:1822
 msgid "where the new submodule will be cloned to"
 msgstr "куда должен быть склонирован новый подмодуль"
 
-#: builtin/submodule--helper.c:1373
+#: builtin/submodule--helper.c:1825
 msgid "name of the new submodule"
 msgstr "имя нового подмодуля"
 
-#: builtin/submodule--helper.c:1376
+#: builtin/submodule--helper.c:1828
 msgid "url where to clone the submodule from"
 msgstr "url откуда должен был склонирован новый подмодуль"
 
-#: builtin/submodule--helper.c:1384
+#: builtin/submodule--helper.c:1836
 msgid "depth for shallow clones"
 msgstr "глубина для частичного клона"
 
-#: builtin/submodule--helper.c:1387 builtin/submodule--helper.c:1871
+#: builtin/submodule--helper.c:1839 builtin/submodule--helper.c:2348
 msgid "force cloning progress"
 msgstr "принудительно выводить прогресс клонирования"
 
-#: builtin/submodule--helper.c:1392
+#: builtin/submodule--helper.c:1841 builtin/submodule--helper.c:2350
+msgid "disallow cloning into non-empty directory"
+msgstr ""
+
+#: builtin/submodule--helper.c:1848
 msgid ""
 "git submodule--helper clone [--prefix=<path>] [--quiet] [--reference "
-"<repository>] [--name <name>] [--depth <depth>] --url <url> --path <path>"
-msgstr "git submodule--helper clone [--prefix=<путь>] [--quiet] [--reference <репозиторий>] [--name <имя>] [--depth <глубина>] --url <url> --path <путь>"
+"<repository>] [--name <name>] [--depth <depth>] [--single-branch] --url "
+"<url> --path <path>"
+msgstr ""
+
+#: builtin/submodule--helper.c:1873
+#, c-format
+msgid "refusing to create/use '%s' in another submodule's git dir"
+msgstr ""
 
-#: builtin/submodule--helper.c:1423
+#: builtin/submodule--helper.c:1884
 #, c-format
 msgid "clone of '%s' into submodule path '%s' failed"
 msgstr "не удалось клонировать «%s» в подмодуль по пути «%s»"
 
-#: builtin/submodule--helper.c:1437
+#: builtin/submodule--helper.c:1888
+#, c-format
+msgid "directory not empty: '%s'"
+msgstr ""
+
+#: builtin/submodule--helper.c:1900
 #, c-format
 msgid "could not get submodule directory for '%s'"
 msgstr "не удалось получить каталог для подмодуля «%s»"
 
-#: builtin/submodule--helper.c:1473
+#: builtin/submodule--helper.c:1936
 #, c-format
 msgid "Invalid update mode '%s' for submodule path '%s'"
 msgstr ""
 
-#: builtin/submodule--helper.c:1477
+#: builtin/submodule--helper.c:1940
 #, c-format
 msgid "Invalid update mode '%s' configured for submodule path '%s'"
 msgstr ""
 
-#: builtin/submodule--helper.c:1570
+#: builtin/submodule--helper.c:2041
 #, c-format
 msgid "Submodule path '%s' not initialized"
 msgstr "Подмодуль по пути «%s» не инициализирован"
 
-#: builtin/submodule--helper.c:1574
+#: builtin/submodule--helper.c:2045
 msgid "Maybe you want to use 'update --init'?"
 msgstr "Возможно, вы хотели использовать «update --init»?"
 
-#: builtin/submodule--helper.c:1604
+#: builtin/submodule--helper.c:2075
 #, c-format
 msgid "Skipping unmerged submodule %s"
 msgstr "Пропуск не слитого подмодуля %s"
 
-#: builtin/submodule--helper.c:1633
+#: builtin/submodule--helper.c:2104
 #, c-format
 msgid "Skipping submodule '%s'"
 msgstr "Пропуск подмодуля «%s»"
 
-#: builtin/submodule--helper.c:1777
+#: builtin/submodule--helper.c:2254
 #, c-format
 msgid "Failed to clone '%s'. Retry scheduled"
 msgstr "Не удалось клонировать «%s». Запланирована повторная попытка"
 
-#: builtin/submodule--helper.c:1788
+#: builtin/submodule--helper.c:2265
 #, c-format
 msgid "Failed to clone '%s' a second time, aborting"
 msgstr "Не удалось клонировать «%s» со второй попытки, отмена"
 
-#: builtin/submodule--helper.c:1850 builtin/submodule--helper.c:2092
+#: builtin/submodule--helper.c:2327 builtin/submodule--helper.c:2573
 msgid "path into the working tree"
 msgstr "путь в рабочем каталоге"
 
-#: builtin/submodule--helper.c:1853
+#: builtin/submodule--helper.c:2330
 msgid "path into the working tree, across nested submodule boundaries"
 msgstr "путь в рабочем каталоге, в пределах границ подмодуля"
 
-#: builtin/submodule--helper.c:1857
+#: builtin/submodule--helper.c:2334
 msgid "rebase, merge, checkout or none"
 msgstr "rebase, merge, checkout или none"
 
-#: builtin/submodule--helper.c:1863
+#: builtin/submodule--helper.c:2340
 msgid "Create a shallow clone truncated to the specified number of revisions"
 msgstr "Создать частичный клон, ограниченный указанным количеством редакций"
 
-#: builtin/submodule--helper.c:1866
+#: builtin/submodule--helper.c:2343
 msgid "parallel jobs"
 msgstr "параллельные задачи"
 
-#: builtin/submodule--helper.c:1868
+#: builtin/submodule--helper.c:2345
 msgid "whether the initial clone should follow the shallow recommendation"
 msgstr "должен ли изначальный процесс клонирования следовать рекомендации о частичности"
 
-#: builtin/submodule--helper.c:1869
+#: builtin/submodule--helper.c:2346
 msgid "don't print cloning progress"
 msgstr "вы выводить прогресс клонирования"
 
-#: builtin/submodule--helper.c:1876
-msgid "git submodule--helper update_clone [--prefix=<path>] [<path>...]"
-msgstr "git submodule--helper update_clone [--prefix=<путь>] [<путь>…]"
+#: builtin/submodule--helper.c:2357
+msgid "git submodule--helper update-clone [--prefix=<path>] [<path>...]"
+msgstr ""
 
-#: builtin/submodule--helper.c:1889
+#: builtin/submodule--helper.c:2370
 msgid "bad value for update parameter"
 msgstr "плохое значение для параметра update"
 
-#: builtin/submodule--helper.c:1937
+#: builtin/submodule--helper.c:2418
 #, 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:2060
+#: builtin/submodule--helper.c:2541
 #, c-format
 msgid "could not get a repository handle for submodule '%s'"
 msgstr ""
 
-#: builtin/submodule--helper.c:2093
+#: builtin/submodule--helper.c:2574
 msgid "recurse into submodules"
 msgstr "рекурсивно по подмодулям"
 
-#: builtin/submodule--helper.c:2099
+#: builtin/submodule--helper.c:2580
 msgid "git submodule--helper absorb-git-dirs [<options>] [<path>...]"
 msgstr "git submodule--helper absorb-git-dirs [<опции>] [<путь>…]"
 
-#: builtin/submodule--helper.c:2156
+#: builtin/submodule--helper.c:2636
 msgid "check if it is safe to write to the .gitmodules file"
 msgstr ""
 
-#: builtin/submodule--helper.c:2159
+#: builtin/submodule--helper.c:2639
 msgid "unset the config in the .gitmodules file"
 msgstr ""
 
-#: builtin/submodule--helper.c:2164
+#: builtin/submodule--helper.c:2644
 msgid "git submodule--helper config <name> [<value>]"
 msgstr "git submodule--helper config <имя> [<значение>]"
 
-#: builtin/submodule--helper.c:2165
+#: builtin/submodule--helper.c:2645
 msgid "git submodule--helper config --unset <name>"
 msgstr "git submodule--helper config --unset <имя>"
 
-#: builtin/submodule--helper.c:2166
+#: builtin/submodule--helper.c:2646
 msgid "git submodule--helper config --check-writeable"
 msgstr "git submodule--helper config --check-writeable"
 
-#: builtin/submodule--helper.c:2185 git-submodule.sh:171
+#: builtin/submodule--helper.c:2665 git-submodule.sh:150
 #, sh-format
 msgid "please make sure that the .gitmodules file is in the working tree"
 msgstr ""
 
-#: builtin/submodule--helper.c:2235 git.c:433 git.c:685
+#: builtin/submodule--helper.c:2681
+msgid "Suppress output for setting url of a submodule"
+msgstr ""
+
+#: builtin/submodule--helper.c:2685
+msgid "git submodule--helper set-url [--quiet] <path> <newurl>"
+msgstr ""
+
+#: builtin/submodule--helper.c:2718
+msgid "set the default tracking branch to master"
+msgstr ""
+
+#: builtin/submodule--helper.c:2720
+msgid "set the default tracking branch"
+msgstr ""
+
+#: builtin/submodule--helper.c:2724
+msgid "git submodule--helper set-branch [-q|--quiet] (-d|--default) <path>"
+msgstr ""
+
+#: builtin/submodule--helper.c:2725
+msgid ""
+"git submodule--helper set-branch [-q|--quiet] (-b|--branch) <branch> <path>"
+msgstr ""
+
+#: builtin/submodule--helper.c:2732
+msgid "--branch or --default required"
+msgstr ""
+
+#: builtin/submodule--helper.c:2735
+msgid "--branch and --default are mutually exclusive"
+msgstr ""
+
+#: builtin/submodule--helper.c:2792 git.c:438 git.c:711
 #, c-format
 msgid "%s doesn't support --super-prefix"
 msgstr "%s не поддерживает параметр --super-prefix"
 
-#: builtin/submodule--helper.c:2241
+#: builtin/submodule--helper.c:2798
 #, c-format
 msgid "'%s' is not a valid submodule--helper subcommand"
 msgstr "«%s» не является подкомандой submodule--helper"
@@ -18445,11 +20878,11 @@ msgstr "удалить символьные ссылки"
 msgid "shorten ref output"
 msgstr "укороченный вывод ссылок"
 
-#: builtin/symbolic-ref.c:43 builtin/update-ref.c:363
+#: builtin/symbolic-ref.c:43 builtin/update-ref.c:499
 msgid "reason"
 msgstr "причина"
 
-#: builtin/symbolic-ref.c:43 builtin/update-ref.c:363
+#: builtin/symbolic-ref.c:43 builtin/update-ref.c:499
 msgid "reason of the update"
 msgstr "причина обновления"
 
@@ -18466,24 +20899,24 @@ msgstr "git tag -d <имя-метки>…"
 #: builtin/tag.c:28
 msgid ""
 "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[<количество>]] [--contains <коммит>] [--no-contains <коммит>] [--points-at <объект>]\n\t\t[--format=<формат>] [--[no-]merged [<коммит>]] [<шаблон>…]"
+"\t\t[--format=<format>] [--merged <commit>] [--no-merged <commit>] [<pattern>...]"
+msgstr ""
 
 #: builtin/tag.c:30
 msgid "git tag -v [--format=<format>] <tagname>..."
 msgstr "git tag -v [--format=<формат>] <имя-метки>…"
 
-#: builtin/tag.c:88
+#: builtin/tag.c:89
 #, c-format
 msgid "tag '%s' not found."
 msgstr "метка  «%s» не найдена."
 
-#: builtin/tag.c:104
+#: builtin/tag.c:105
 #, c-format
 msgid "Deleted tag '%s' (was %s)\n"
 msgstr "Метка «%s» удалена (была %s)\n"
 
-#: builtin/tag.c:134
+#: builtin/tag.c:135
 #, c-format
 msgid ""
 "\n"
@@ -18492,7 +20925,7 @@ msgid ""
 "Lines starting with '%c' will be ignored.\n"
 msgstr "\nВведите сообщение для метки:\n  %s\nСтроки, начинающиеся с «%c» будут проигнорированы.\n"
 
-#: builtin/tag.c:138
+#: builtin/tag.c:139
 #, c-format
 msgid ""
 "\n"
@@ -18501,15 +20934,15 @@ msgid ""
 "Lines starting with '%c' will be kept; you may remove them yourself if you want to.\n"
 msgstr "\nВведите сообщение для метки:\n  %s\nСтроки, начинающиеся с «%c» будут оставлены; вы можете удалить их вручную, если хотите.\n"
 
-#: builtin/tag.c:192
+#: builtin/tag.c:198
 msgid "unable to sign the tag"
 msgstr "не удалось подписать метку"
 
-#: builtin/tag.c:194
+#: builtin/tag.c:200
 msgid "unable to write tag file"
 msgstr "не удалось записать файл метки"
 
-#: builtin/tag.c:210
+#: builtin/tag.c:216
 #, c-format
 msgid ""
 "You have created a nested tag. The object referred to by your new tag is\n"
@@ -18518,382 +20951,386 @@ msgid ""
 "\tgit tag -f %s %s^{}"
 msgstr ""
 
-#: builtin/tag.c:226
+#: builtin/tag.c:232
 msgid "bad object type."
 msgstr "неправильный тип объекта"
 
-#: builtin/tag.c:278
+#: builtin/tag.c:285
 msgid "no tag message?"
 msgstr "нет описания метки?"
 
-#: builtin/tag.c:285
+#: builtin/tag.c:292
 #, c-format
 msgid "The tag message has been left in %s\n"
 msgstr "Сообщение метки было оставлено в %s\n"
 
-#: builtin/tag.c:396
+#: builtin/tag.c:403
 msgid "list tag names"
 msgstr "список названий меток"
 
-#: builtin/tag.c:398
+#: builtin/tag.c:405
 msgid "print <n> lines of each tag message"
 msgstr "печатать <n> строк описания от каждой метки"
 
-#: builtin/tag.c:400
+#: builtin/tag.c:407
 msgid "delete tags"
 msgstr "удалить метки"
 
-#: builtin/tag.c:401
+#: builtin/tag.c:408
 msgid "verify tags"
 msgstr "проверить метки"
 
-#: builtin/tag.c:403
+#: builtin/tag.c:410
 msgid "Tag creation options"
 msgstr "Настройки создания метки"
 
-#: builtin/tag.c:405
+#: builtin/tag.c:412
 msgid "annotated tag, needs a message"
 msgstr "для аннотированной метки нужно сообщение"
 
-#: builtin/tag.c:407
+#: builtin/tag.c:414
 msgid "tag message"
 msgstr "описание метки"
 
-#: builtin/tag.c:409
+#: builtin/tag.c:416
 msgid "force edit of tag message"
 msgstr ""
 
-#: builtin/tag.c:410
+#: builtin/tag.c:417
 msgid "annotated and GPG-signed tag"
 msgstr "аннотированная и подписанная с помощью GPG метка"
 
-#: builtin/tag.c:413
+#: builtin/tag.c:420
 msgid "use another key to sign the tag"
 msgstr "использовать другой ключ для подписания метки"
 
-#: builtin/tag.c:414
+#: builtin/tag.c:421
 msgid "replace the tag if exists"
 msgstr "замена метки, если она существует"
 
-#: builtin/tag.c:415 builtin/update-ref.c:369
+#: builtin/tag.c:422 builtin/update-ref.c:505
 msgid "create a reflog"
 msgstr "создать журнал ссылок"
 
-#: builtin/tag.c:417
+#: builtin/tag.c:424
 msgid "Tag listing options"
 msgstr "Настройки вывода списка меток"
 
-#: builtin/tag.c:418
+#: builtin/tag.c:425
 msgid "show tag list in columns"
 msgstr "показать список меток по столбцам"
 
-#: builtin/tag.c:419 builtin/tag.c:421
+#: builtin/tag.c:426 builtin/tag.c:428
 msgid "print only tags that contain the commit"
 msgstr "вывод только меток, которые содержат коммит"
 
-#: builtin/tag.c:420 builtin/tag.c:422
+#: builtin/tag.c:427 builtin/tag.c:429
 msgid "print only tags that don't contain the commit"
 msgstr "вывод только меток, которые не содержат коммит"
 
-#: builtin/tag.c:423
+#: builtin/tag.c:430
 msgid "print only tags that are merged"
 msgstr "вывод только слитых меток"
 
-#: builtin/tag.c:424
+#: builtin/tag.c:431
 msgid "print only tags that are not merged"
 msgstr "вывод только не слитых меток"
 
-#: builtin/tag.c:428
+#: builtin/tag.c:435
 msgid "print only tags of the object"
 msgstr "вывод только меток, определенного объекта"
 
-#: builtin/tag.c:472
+#: builtin/tag.c:483
 msgid "--column and -n are incompatible"
 msgstr "--column и -n нельзя использовать одновременно"
 
-#: builtin/tag.c:494
+#: builtin/tag.c:505
 msgid "-n option is only allowed in list mode"
 msgstr "опцию -n можно использовать только в режиме списка"
 
-#: builtin/tag.c:496
+#: builtin/tag.c:507
 msgid "--contains option is only allowed in list mode"
 msgstr "опцию --contains можно использовать только в режиме списка"
 
-#: builtin/tag.c:498
+#: builtin/tag.c:509
 msgid "--no-contains option is only allowed in list mode"
 msgstr "опцию --no-contains можно использовать только в режиме списка"
 
-#: builtin/tag.c:500
+#: builtin/tag.c:511
 msgid "--points-at option is only allowed in list mode"
 msgstr "опцию --points-at можно использовать только в режиме списка"
 
-#: builtin/tag.c:502
+#: builtin/tag.c:513
 msgid "--merged and --no-merged options are only allowed in list mode"
 msgstr "опции --merged и --no-merged можно использовать только в режиме списка"
 
-#: builtin/tag.c:513
+#: builtin/tag.c:524
 msgid "only one -F or -m option is allowed."
 msgstr "-F и -m нельзя использовать одновременно."
 
-#: builtin/tag.c:532
+#: builtin/tag.c:543
 msgid "too many params"
 msgstr "передано слишком много параметров"
 
-#: builtin/tag.c:538
+#: builtin/tag.c:549
 #, c-format
 msgid "'%s' is not a valid tag name."
 msgstr "«%s» не является допустимым именем метки."
 
-#: builtin/tag.c:543
+#: builtin/tag.c:554
 #, c-format
 msgid "tag '%s' already exists"
 msgstr "метка «%s» уже существует"
 
-#: builtin/tag.c:574
+#: builtin/tag.c:585
 #, c-format
 msgid "Updated tag '%s' (was %s)\n"
 msgstr "Метка «%s» обновлена (была %s)\n"
 
-#: builtin/unpack-objects.c:500
+#: builtin/unpack-objects.c:502
 msgid "Unpacking objects"
 msgstr "Распаковка объектов"
 
-#: builtin/update-index.c:83
+#: builtin/update-index.c:84
 #, c-format
 msgid "failed to create directory %s"
 msgstr "не удалось создать каталог %s"
 
-#: builtin/update-index.c:99
+#: builtin/update-index.c:100
 #, c-format
 msgid "failed to create file %s"
 msgstr "не удалось создать файл %s"
 
-#: builtin/update-index.c:107
+#: builtin/update-index.c:108
 #, c-format
 msgid "failed to delete file %s"
 msgstr "не удалось удалить файл %s"
 
-#: builtin/update-index.c:114 builtin/update-index.c:220
+#: builtin/update-index.c:115 builtin/update-index.c:221
 #, c-format
 msgid "failed to delete directory %s"
 msgstr "не удалось удалить каталог %s"
 
-#: builtin/update-index.c:139
+#: builtin/update-index.c:140
 #, c-format
 msgid "Testing mtime in '%s' "
 msgstr "Проверка mtime в «%s» "
 
-#: builtin/update-index.c:153
+#: builtin/update-index.c:154
 msgid "directory stat info does not change after adding a new file"
 msgstr "информация статистики каталога не изменяется после добавления нового файла"
 
-#: builtin/update-index.c:166
+#: builtin/update-index.c:167
 msgid "directory stat info does not change after adding a new directory"
 msgstr "информация статистики каталога не изменяется после добавления нового каталога"
 
-#: builtin/update-index.c:179
+#: builtin/update-index.c:180
 msgid "directory stat info changes after updating a file"
 msgstr "информация статистики каталога изменяется после добавления нового файла"
 
-#: builtin/update-index.c:190
+#: builtin/update-index.c:191
 msgid "directory stat info changes after adding a file inside subdirectory"
 msgstr "информация статистики каталога изменяется после добавления нового файла внутри подкаталога"
 
-#: builtin/update-index.c:201
+#: builtin/update-index.c:202
 msgid "directory stat info does not change after deleting a file"
 msgstr "информация статистики каталога не изменяется после удаления файла"
 
-#: builtin/update-index.c:214
+#: builtin/update-index.c:215
 msgid "directory stat info does not change after deleting a directory"
 msgstr "информация статистики каталога не изменяется после удаления каталога"
 
-#: builtin/update-index.c:221
+#: builtin/update-index.c:222
 msgid " OK"
 msgstr " OK"
 
-#: builtin/update-index.c:589
+#: builtin/update-index.c:591
 msgid "git update-index [<options>] [--] [<file>...]"
 msgstr "git update-index [<опции>] [--] [<файл>…]"
 
-#: builtin/update-index.c:971
+#: builtin/update-index.c:974
 msgid "continue refresh even when index needs update"
 msgstr "продолжить обновление, даже если индекс требует обновления"
 
-#: builtin/update-index.c:974
+#: builtin/update-index.c:977
 msgid "refresh: ignore submodules"
 msgstr "обновление: игнорировать подмодули"
 
-#: builtin/update-index.c:977
+#: builtin/update-index.c:980
 msgid "do not ignore new files"
 msgstr "не игнорировать новые файлы"
 
-#: builtin/update-index.c:979
+#: builtin/update-index.c:982
 msgid "let files replace directories and vice-versa"
 msgstr "разрешить файлам заменять каталоги и наоборот"
 
-#: builtin/update-index.c:981
+#: builtin/update-index.c:984
 msgid "notice files missing from worktree"
 msgstr "замечать файлы отсутствующие в рабочем каталоге"
 
-#: builtin/update-index.c:983
+#: builtin/update-index.c:986
 msgid "refresh even if index contains unmerged entries"
 msgstr "обновить, даже если в индексе имеются не слитые записи"
 
-#: builtin/update-index.c:986
+#: builtin/update-index.c:989
 msgid "refresh stat information"
 msgstr "обновить информацию о статусе файлов"
 
-#: builtin/update-index.c:990
+#: builtin/update-index.c:993
 msgid "like --refresh, but ignore assume-unchanged setting"
 msgstr "как --refresh, но игнорировать настройку assume-unchanged"
 
-#: builtin/update-index.c:994
+#: builtin/update-index.c:997
 msgid "<mode>,<object>,<path>"
 msgstr "<режим доступа>,<объект>,<путь>"
 
-#: builtin/update-index.c:995
+#: builtin/update-index.c:998
 msgid "add the specified entry to the index"
 msgstr "добавить указанную запись в индекс"
 
-#: builtin/update-index.c:1005
+#: builtin/update-index.c:1008
 msgid "mark files as \"not changing\""
 msgstr "пометить файлы как «не измененные»"
 
-#: builtin/update-index.c:1008
+#: builtin/update-index.c:1011
 msgid "clear assumed-unchanged bit"
 msgstr "убрать пометку assumed-unchanged"
 
-#: builtin/update-index.c:1011
+#: builtin/update-index.c:1014
 msgid "mark files as \"index-only\""
 msgstr "пометить файлы как «только в индексе»"
 
-#: builtin/update-index.c:1014
+#: builtin/update-index.c:1017
 msgid "clear skip-worktree bit"
 msgstr "убрать пометку skip-worktree"
 
-#: builtin/update-index.c:1017
+#: builtin/update-index.c:1020
+msgid "do not touch index-only entries"
+msgstr ""
+
+#: builtin/update-index.c:1022
 msgid "add to index only; do not add content to object database"
 msgstr "только добавить в индекс; не добавлять содержимое в базу данных объектов"
 
-#: builtin/update-index.c:1019
+#: builtin/update-index.c:1024
 msgid "remove named paths even if present in worktree"
 msgstr "удалить указанные пути, даже если они существуют в рабочем каталоге"
 
-#: builtin/update-index.c:1021
+#: builtin/update-index.c:1026
 msgid "with --stdin: input lines are terminated by null bytes"
 msgstr "с опцией --stdin: строки на вводе отделяются НУЛЕВЫМ байтом"
 
-#: builtin/update-index.c:1023
+#: builtin/update-index.c:1028
 msgid "read list of paths to be updated from standard input"
 msgstr "прочитать список обновляемых путей из стандартного ввода"
 
-#: builtin/update-index.c:1027
+#: builtin/update-index.c:1032
 msgid "add entries from standard input to the index"
 msgstr "добавить записи из стандартного ввода в индекс"
 
-#: builtin/update-index.c:1031
+#: builtin/update-index.c:1036
 msgid "repopulate stages #2 and #3 for the listed paths"
 msgstr "заново заполнить индекс #2 и #3 для указанных путей"
 
-#: builtin/update-index.c:1035
+#: builtin/update-index.c:1040
 msgid "only update entries that differ from HEAD"
 msgstr "обновить только записи, которые отличаются от HEAD"
 
-#: builtin/update-index.c:1039
+#: builtin/update-index.c:1044
 msgid "ignore files missing from worktree"
 msgstr "игнорировать файлы, отсутствующие в рабочем каталоге"
 
-#: builtin/update-index.c:1042
+#: builtin/update-index.c:1047
 msgid "report actions to standard output"
 msgstr "вывести выполняемые действия на стандартный вывод"
 
-#: builtin/update-index.c:1044
+#: builtin/update-index.c:1049
 msgid "(for porcelains) forget saved unresolved conflicts"
 msgstr "(для машинной обработки) забыть сохраненные неразрешенные конфликты"
 
-#: builtin/update-index.c:1048
+#: builtin/update-index.c:1053
 msgid "write index in this format"
 msgstr "записать индекс в указанном формате"
 
-#: builtin/update-index.c:1050
+#: builtin/update-index.c:1055
 msgid "enable or disable split index"
 msgstr "разрешить или запретить раздельный индекс"
 
-#: builtin/update-index.c:1052
+#: builtin/update-index.c:1057
 msgid "enable/disable untracked cache"
 msgstr "включить/отключить кэш неотслеживаемых файлов"
 
-#: builtin/update-index.c:1054
+#: builtin/update-index.c:1059
 msgid "test if the filesystem supports untracked cache"
 msgstr "проверить, что файловая система поддерживает кэш неотслеживаемых файлов"
 
-#: builtin/update-index.c:1056
+#: builtin/update-index.c:1061
 msgid "enable untracked cache without testing the filesystem"
 msgstr "включить кэш неотслеживаемых файлов без проверки файловой системы"
 
-#: builtin/update-index.c:1058
+#: builtin/update-index.c:1063
 msgid "write out the index even if is not flagged as changed"
 msgstr "записать индекс, даже если он не помечен как измененный"
 
-#: builtin/update-index.c:1060
+#: builtin/update-index.c:1065
 msgid "enable or disable file system monitor"
 msgstr "включить или выключить мониторинг файловой системы"
 
-#: builtin/update-index.c:1062
+#: builtin/update-index.c:1067
 msgid "mark files as fsmonitor valid"
 msgstr "пометить файл как действительный в мониторе файловой системы"
 
-#: builtin/update-index.c:1065
+#: builtin/update-index.c:1070
 msgid "clear fsmonitor valid bit"
 msgstr "снять пометку действительности мониторе файловой системы"
 
-#: builtin/update-index.c:1168
+#: builtin/update-index.c:1173
 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:1177
+#: builtin/update-index.c:1182
 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:1188
+#: builtin/update-index.c:1194
 msgid ""
 "core.untrackedCache is set to true; remove or change it, if you really want "
 "to disable the untracked cache"
 msgstr "параметр core.untrackedCache установлен true; удалите или измените его, если вы действительно хотите удалить кэш неотслеживаемых файлов"
 
-#: builtin/update-index.c:1192
+#: builtin/update-index.c:1198
 msgid "Untracked cache disabled"
 msgstr "Кэш неотслеживаемых файлов отключен"
 
-#: builtin/update-index.c:1200
+#: builtin/update-index.c:1206
 msgid ""
 "core.untrackedCache is set to false; remove or change it, if you really want"
 " to enable the untracked cache"
 msgstr "параметр core.untrackedCache установлен false; удалите или измените его, если вы действительно хотите включить кэш неотслеживаемых файлов"
 
-#: builtin/update-index.c:1204
+#: builtin/update-index.c:1210
 #, c-format
 msgid "Untracked cache enabled for '%s'"
 msgstr "Кэш неотслеживаемых файлов включен для «%s»"
 
-#: builtin/update-index.c:1212
+#: builtin/update-index.c:1218
 msgid "core.fsmonitor is unset; set it if you really want to enable fsmonitor"
 msgstr "параметр core.fsmonitor не установлен; установите его если вы действительно хотите включить мониторинг файловой системы"
 
-#: builtin/update-index.c:1216
+#: builtin/update-index.c:1222
 msgid "fsmonitor enabled"
 msgstr "мониторинг файловой системы включён"
 
-#: builtin/update-index.c:1219
+#: builtin/update-index.c:1225
 msgid ""
 "core.fsmonitor is set; remove it if you really want to disable fsmonitor"
 msgstr "параметр core.fsmonitor установлен; удалите его если вы действительно хотите выключить мониторинг файловой системы"
 
-#: builtin/update-index.c:1223
+#: builtin/update-index.c:1229
 msgid "fsmonitor disabled"
 msgstr "мониторинг файловой системы выключён"
 
@@ -18909,19 +21346,19 @@ msgstr "git update-ref [<опции>]    <имя-ссылки> <новое-зн
 msgid "git update-ref [<options>] --stdin [-z]"
 msgstr "git update-ref [<опции>] --stdin [-z]"
 
-#: builtin/update-ref.c:364
+#: builtin/update-ref.c:500
 msgid "delete the reference"
 msgstr "удалить ссылку"
 
-#: builtin/update-ref.c:366
+#: builtin/update-ref.c:502
 msgid "update <refname> not the one it points to"
 msgstr "обновить <имя-ссылки> а не то, на что она указывает"
 
-#: builtin/update-ref.c:367
+#: builtin/update-ref.c:503
 msgid "stdin has NUL-terminated arguments"
 msgstr "ввод отделённый НУЛЕВЫМИ символами"
 
-#: builtin/update-ref.c:368
+#: builtin/update-ref.c:504
 msgid "read updates from stdin"
 msgstr "прочитать обновления из стандартного ввода"
 
@@ -18953,308 +21390,312 @@ msgstr "не проверять <каталог>/.git/ если <каталог>
 msgid "interrupt transfer after <n> seconds of inactivity"
 msgstr "прервать передачу после <кол> секунд простоя"
 
-#: builtin/verify-commit.c:20
+#: builtin/verify-commit.c:19
 msgid "git verify-commit [-v | --verbose] <commit>..."
 msgstr "git verify-commit [-v | --verbose] <коммит>…"
 
-#: builtin/verify-commit.c:76
+#: builtin/verify-commit.c:68
 msgid "print commit contents"
 msgstr "вывести содержимое коммита"
 
-#: builtin/verify-commit.c:77 builtin/verify-tag.c:38
+#: builtin/verify-commit.c:69 builtin/verify-tag.c:37
 msgid "print raw gpg status output"
 msgstr "выводить сырой вывод статуса от gpg"
 
-#: builtin/verify-pack.c:55
+#: builtin/verify-pack.c:59
 msgid "git verify-pack [-v | --verbose] [-s | --stat-only] <pack>..."
 msgstr "git verify-pack [-v | --verbose] [-s | --stat-only] <пакет>…"
 
-#: builtin/verify-pack.c:65
+#: builtin/verify-pack.c:70
 msgid "verbose"
 msgstr "быть многословнее"
 
-#: builtin/verify-pack.c:67
+#: builtin/verify-pack.c:72
 msgid "show statistics only"
 msgstr "вывести только статистику"
 
-#: builtin/verify-tag.c:19
+#: builtin/verify-tag.c:18
 msgid "git verify-tag [-v | --verbose] [--format=<format>] <tag>..."
 msgstr "git verify-tag [-v | --verbose] [--format=<формат>] <метка>…"
 
-#: builtin/verify-tag.c:37
+#: builtin/verify-tag.c:36
 msgid "print tag contents"
 msgstr "вывести содержимое метки"
 
-#: builtin/worktree.c:18
+#: builtin/worktree.c:17
 msgid "git worktree add [<options>] <path> [<commit-ish>]"
 msgstr "git worktree add [<опции>] <путь> [<указатель-коммита>]"
 
-#: builtin/worktree.c:19
+#: builtin/worktree.c:18
 msgid "git worktree list [<options>]"
 msgstr "git worktree list [<опции>]"
 
-#: builtin/worktree.c:20
+#: builtin/worktree.c:19
 msgid "git worktree lock [<options>] <path>"
 msgstr "git worktree lock [<опции>] <путь>"
 
-#: builtin/worktree.c:21
+#: builtin/worktree.c:20
 msgid "git worktree move <worktree> <new-path>"
 msgstr "git worktree move <рабочий-каталог> <новый-путь>"
 
-#: builtin/worktree.c:22
+#: builtin/worktree.c:21
 msgid "git worktree prune [<options>]"
 msgstr "git worktree prune [<опции>]"
 
-#: builtin/worktree.c:23
+#: builtin/worktree.c:22
 msgid "git worktree remove [<options>] <worktree>"
 msgstr "git worktree remove [<опции>] <рабочий-каталог>"
 
-#: builtin/worktree.c:24
+#: builtin/worktree.c:23
 msgid "git worktree unlock <path>"
 msgstr "git worktree unlock <путь>"
 
-#: builtin/worktree.c:61 builtin/worktree.c:891
+#: builtin/worktree.c:60 builtin/worktree.c:973
 #, c-format
 msgid "failed to delete '%s'"
 msgstr "не удалось удалить «%s»"
 
-#: builtin/worktree.c:80
-#, c-format
-msgid "Removing worktrees/%s: not a valid directory"
-msgstr "Удаление рабочих каталогов/%s: не является каталогом"
+#: builtin/worktree.c:85
+msgid "not a valid directory"
+msgstr ""
 
-#: builtin/worktree.c:86
-#, c-format
-msgid "Removing worktrees/%s: gitdir file does not exist"
-msgstr "Удаление рабочих каталогов/%s: файл gitdir не существует"
+#: builtin/worktree.c:91
+msgid "gitdir file does not exist"
+msgstr ""
 
-#: builtin/worktree.c:91 builtin/worktree.c:100
+#: builtin/worktree.c:96 builtin/worktree.c:105
 #, c-format
-msgid "Removing worktrees/%s: unable to read gitdir file (%s)"
-msgstr "Удаление рабочих каталогов/%s: не удалось прочитать файл gitdir (%s)"
+msgid "unable to read gitdir file (%s)"
+msgstr ""
 
-#: builtin/worktree.c:110
+#: builtin/worktree.c:115
 #, c-format
-msgid ""
-"Removing worktrees/%s: short read (expected %<PRIuMAX> bytes, read "
-"%<PRIuMAX>)"
-msgstr "Удаление рабочего каталога/%s: прочитано мало данных (ожидалось %<PRIuMAX> байт, прочитано %<PRIuMAX>)"
+msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
+msgstr ""
 
-#: builtin/worktree.c:118
-#, c-format
-msgid "Removing worktrees/%s: invalid gitdir file"
-msgstr "Удаление рабочих каталогов/%s: недействительный файл gitdir"
+#: builtin/worktree.c:123
+msgid "invalid gitdir file"
+msgstr ""
 
-#: builtin/worktree.c:127
+#: builtin/worktree.c:131
+msgid "gitdir file points to non-existent location"
+msgstr ""
+
+#: builtin/worktree.c:146
 #, c-format
-msgid "Removing worktrees/%s: gitdir file points to non-existent location"
-msgstr "Удаление рабочих каталогов/%s: gitdir указывает на несуществующее расположение"
+msgid "Removing %s/%s: %s"
+msgstr ""
 
-#: builtin/worktree.c:166
+#: builtin/worktree.c:221
 msgid "report pruned working trees"
 msgstr "вывести список удаленных рабочих каталогов"
 
-#: builtin/worktree.c:168
+#: builtin/worktree.c:223
 msgid "expire working trees older than <time>"
 msgstr "удалить рабочие каталоги старее чем <дата-окончания>"
 
-#: builtin/worktree.c:235
+#: builtin/worktree.c:293
 #, c-format
 msgid "'%s' already exists"
 msgstr "«%s» уже существует"
 
-#: builtin/worktree.c:252
+#: builtin/worktree.c:302
 #, c-format
-msgid "unable to re-add worktree '%s'"
+msgid "unusable worktree destination '%s'"
 msgstr ""
 
-#: builtin/worktree.c:257
+#: builtin/worktree.c:307
 #, c-format
 msgid ""
 "'%s' is a missing but locked worktree;\n"
-"use 'add -f -f' to override, or 'unlock' and 'prune' or 'remove' to clear"
+"use '%s -f -f' to override, or 'unlock' and 'prune' or 'remove' to clear"
 msgstr ""
 
-#: builtin/worktree.c:259
+#: builtin/worktree.c:309
 #, c-format
 msgid ""
 "'%s' is a missing but already registered worktree;\n"
-"use 'add -f' to override, or 'prune' or 'remove' to clear"
+"use '%s -f' to override, or 'prune' or 'remove' to clear"
 msgstr ""
 
-#: builtin/worktree.c:302
+#: builtin/worktree.c:360
 #, c-format
 msgid "could not create directory of '%s'"
 msgstr "не удалось создать каталог «%s»"
 
-#: builtin/worktree.c:432 builtin/worktree.c:438
+#: builtin/worktree.c:494 builtin/worktree.c:500
 #, c-format
 msgid "Preparing worktree (new branch '%s')"
 msgstr ""
 
-#: builtin/worktree.c:434
+#: builtin/worktree.c:496
 #, c-format
 msgid "Preparing worktree (resetting branch '%s'; was at %s)"
 msgstr ""
 
-#: builtin/worktree.c:443
+#: builtin/worktree.c:505
 #, c-format
 msgid "Preparing worktree (checking out '%s')"
 msgstr ""
 
-#: builtin/worktree.c:449
+#: builtin/worktree.c:511
 #, c-format
 msgid "Preparing worktree (detached HEAD %s)"
 msgstr ""
 
-#: builtin/worktree.c:490
+#: builtin/worktree.c:552
 msgid "checkout <branch> even if already checked out in other worktree"
 msgstr "переключиться на <ветка> даже если она уже активна в другом рабочесм каталоге"
 
-#: builtin/worktree.c:493
+#: builtin/worktree.c:555
 msgid "create a new branch"
 msgstr "создать новую ветку"
 
-#: builtin/worktree.c:495
+#: builtin/worktree.c:557
 msgid "create or reset a branch"
 msgstr "создать или перейти на ветку"
 
-#: builtin/worktree.c:497
+#: builtin/worktree.c:559
 msgid "populate the new working tree"
 msgstr "наполнить новый рабочий каталог"
 
-#: builtin/worktree.c:498
+#: builtin/worktree.c:560
 msgid "keep the new working tree locked"
 msgstr "держать рабочий каталог заблокированным"
 
-#: builtin/worktree.c:501
+#: builtin/worktree.c:563
 msgid "set up tracking mode (see git-branch(1))"
 msgstr "настроить режим отслеживания ветки (смотрите git-branch(1))"
 
-#: builtin/worktree.c:504
+#: builtin/worktree.c:566
 msgid "try to match the new branch name with a remote-tracking branch"
 msgstr "пытаться найти соответствие имени новой ветки с именем внешней ветки"
 
-#: builtin/worktree.c:512
+#: builtin/worktree.c:574
 msgid "-b, -B, and --detach are mutually exclusive"
 msgstr "-b, -B и --detach нельзя использовать одновременно"
 
-#: builtin/worktree.c:573
+#: builtin/worktree.c:635
 msgid "--[no-]track can only be used if a new branch is created"
 msgstr "--[no-]track можно использовать только когда вы создаёте новую ветку"
 
-#: builtin/worktree.c:673
+#: builtin/worktree.c:758
 msgid "reason for locking"
 msgstr "причина блокировки"
 
-#: builtin/worktree.c:685 builtin/worktree.c:718 builtin/worktree.c:792
-#: builtin/worktree.c:919
+#: builtin/worktree.c:770 builtin/worktree.c:803 builtin/worktree.c:877
+#: builtin/worktree.c:1001
 #, c-format
 msgid "'%s' is not a working tree"
 msgstr "«%s» не является рабочим каталогом"
 
-#: builtin/worktree.c:687 builtin/worktree.c:720
+#: builtin/worktree.c:772 builtin/worktree.c:805
 msgid "The main working tree cannot be locked or unlocked"
 msgstr "Главный рабочий каталог не может быть заблокирован или разблокирован"
 
-#: builtin/worktree.c:692
+#: builtin/worktree.c:777
 #, c-format
 msgid "'%s' is already locked, reason: %s"
 msgstr "«%s» уже заблокирован, причина: %s"
 
-#: builtin/worktree.c:694
+#: builtin/worktree.c:779
 #, c-format
 msgid "'%s' is already locked"
 msgstr "«%s» уже заблокирован"
 
-#: builtin/worktree.c:722
+#: builtin/worktree.c:807
 #, c-format
 msgid "'%s' is not locked"
 msgstr "«%s» не заблокирован"
 
-#: builtin/worktree.c:763
+#: builtin/worktree.c:848
 msgid "working trees containing submodules cannot be moved or removed"
 msgstr ""
 
-#: builtin/worktree.c:771
+#: builtin/worktree.c:856
 msgid "force move even if worktree is dirty or locked"
 msgstr ""
 
-#: builtin/worktree.c:794 builtin/worktree.c:921
+#: builtin/worktree.c:879 builtin/worktree.c:1003
 #, c-format
 msgid "'%s' is a main working tree"
 msgstr ""
 
-#: builtin/worktree.c:799
+#: builtin/worktree.c:884
 #, c-format
 msgid "could not figure out destination name from '%s'"
 msgstr ""
 
-#: builtin/worktree.c:805
-#, c-format
-msgid "target '%s' already exists"
-msgstr ""
-
-#: builtin/worktree.c:813
+#: builtin/worktree.c:897
 #, c-format
 msgid ""
 "cannot move a locked working tree, lock reason: %s\n"
 "use 'move -f -f' to override or unlock first"
 msgstr ""
 
-#: builtin/worktree.c:815
+#: builtin/worktree.c:899
 msgid ""
 "cannot move a locked working tree;\n"
 "use 'move -f -f' to override or unlock first"
 msgstr ""
 
-#: builtin/worktree.c:818
+#: builtin/worktree.c:902
 #, c-format
 msgid "validation failed, cannot move working tree: %s"
 msgstr ""
 
-#: builtin/worktree.c:823
+#: builtin/worktree.c:907
 #, c-format
 msgid "failed to move '%s' to '%s'"
 msgstr ""
 
-#: builtin/worktree.c:871
+#: builtin/worktree.c:953
 #, c-format
 msgid "failed to run 'git status' on '%s'"
 msgstr ""
 
-#: builtin/worktree.c:875
+#: builtin/worktree.c:957
 #, c-format
-msgid "'%s' is dirty, use --force to delete it"
+msgid "'%s' contains modified or untracked files, use --force to delete it"
 msgstr ""
 
-#: builtin/worktree.c:880
+#: builtin/worktree.c:962
 #, c-format
 msgid "failed to run 'git status' on '%s', code %d"
 msgstr ""
 
-#: builtin/worktree.c:903
+#: builtin/worktree.c:985
 msgid "force removal even if worktree is dirty or locked"
 msgstr ""
 
-#: builtin/worktree.c:926
+#: builtin/worktree.c:1008
 #, c-format
 msgid ""
 "cannot remove a locked working tree, lock reason: %s\n"
 "use 'remove -f -f' to override or unlock first"
 msgstr ""
 
-#: builtin/worktree.c:928
+#: builtin/worktree.c:1010
 msgid ""
 "cannot remove a locked working tree;\n"
 "use 'remove -f -f' to override or unlock first"
 msgstr ""
 
-#: builtin/worktree.c:931
+#: builtin/worktree.c:1013
 #, c-format
 msgid "validation failed, cannot remove working tree: %s"
 msgstr ""
 
+#: builtin/worktree.c:1037
+#, c-format
+msgid "repair: %s: %s"
+msgstr ""
+
+#: builtin/worktree.c:1040
+#, c-format
+msgid "error: %s: %s"
+msgstr ""
+
 #: builtin/write-tree.c:15
 msgid "git write-tree [--missing-ok] [--prefix=<prefix>/]"
 msgstr "git write-tree [--missing-ok] [--prefix=<префикс>/]"
@@ -19271,25 +21712,29 @@ msgstr "вывести объект дерева для подкаталога 
 msgid "only useful for debugging"
 msgstr "используется только при отладке"
 
-#: credential-cache--daemon.c:223
+#: http-fetch.c:114
 #, c-format
-msgid ""
-"The permissions on your socket directory are too loose; other\n"
-"users may be able to read your cached credentials. Consider running:\n"
-"\n"
-"\tchmod 0700 %s"
-msgstr "Права доступа к вашему каталогу сокетов слишком свободны; друге пользователи могуи читать ваши закэшированные пароли доступа. Обдумайте запуск команды:\n\n\tchmod 0700 %s"
+msgid "argument to --packfile must be a valid hash (got '%s')"
+msgstr ""
 
-#: credential-cache--daemon.c:272
-msgid "print debugging messages to stderr"
-msgstr "вывод отладочных сообщений на stderr"
+#: http-fetch.c:122
+msgid "not a git repository"
+msgstr ""
 
-#: t/helper/test-reach.c:152
+#: t/helper/test-fast-rebase.c:141
+msgid "unhandled options"
+msgstr ""
+
+#: t/helper/test-fast-rebase.c:146
+msgid "error preparing revisions"
+msgstr ""
+
+#: t/helper/test-reach.c:154
 #, c-format
 msgid "commit %s is not marked reachable"
 msgstr ""
 
-#: t/helper/test-reach.c:162
+#: t/helper/test-reach.c:164
 msgid "too many commits marked reachable"
 msgstr ""
 
@@ -19301,7 +21746,7 @@ msgstr ""
 msgid "exit immediately after advertising capabilities"
 msgstr ""
 
-#: git.c:27
+#: git.c:28
 msgid ""
 "git [--version] [--help] [-C <path>] [-c <name>=<value>]\n"
 "           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]\n"
@@ -19310,146 +21755,147 @@ msgid ""
 "           <command> [<args>]"
 msgstr "git [--version] [--help] [-C <путь>] [-c <имя>=<значение>]\n           [--exec-path[=<путь>]] [--html-path] [--man-path] [--info-path]\n           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--bare]\n           [--git-dir=<путь>] [--work-tree=<путь>] [--namespace=<имя>]\n           <команда> [<аргументы>]"
 
-#: git.c:34
+#: git.c:35
 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 help -а» и «git help -g» выводит список доступных подкоманд и\nнекоторые руководства по темам. Запустите «git help <команда>» или\n«git help <термин>», чтобы прочесть о конкретных подкоманде или теме."
+"to read about a specific subcommand or concept.\n"
+"See 'git help git' for an overview of the system."
+msgstr ""
 
-#: git.c:185
+#: git.c:187
 #, c-format
 msgid "no directory given for --git-dir\n"
 msgstr ""
 
-#: git.c:199
+#: git.c:201
 #, c-format
 msgid "no namespace given for --namespace\n"
 msgstr ""
 
-#: git.c:213
+#: git.c:215
 #, c-format
 msgid "no directory given for --work-tree\n"
 msgstr ""
 
-#: git.c:227
+#: git.c:229
 #, c-format
 msgid "no prefix given for --super-prefix\n"
 msgstr ""
 
-#: git.c:249
+#: git.c:251
 #, c-format
 msgid "-c expects a configuration string\n"
 msgstr ""
 
-#: git.c:287
+#: git.c:289
 #, c-format
 msgid "no directory given for -C\n"
 msgstr ""
 
-#: git.c:313
+#: git.c:315
 #, c-format
 msgid "unknown option: %s\n"
 msgstr ""
 
-#: git.c:359
+#: git.c:364
 #, c-format
 msgid "while expanding alias '%s': '%s'"
 msgstr ""
 
-#: git.c:368
+#: git.c:373
 #, c-format
 msgid ""
 "alias '%s' changes environment variables.\n"
 "You can use '!git' in the alias to do this"
 msgstr ""
 
-#: git.c:376
+#: git.c:380
 #, c-format
 msgid "empty alias for %s"
 msgstr ""
 
-#: git.c:379
+#: git.c:383
 #, c-format
 msgid "recursive alias: %s"
 msgstr ""
 
-#: git.c:459
+#: git.c:465
 msgid "write failure on standard output"
 msgstr ""
 
-#: git.c:461
+#: git.c:467
 msgid "unknown write failure on standard output"
 msgstr ""
 
-#: git.c:463
+#: git.c:469
 msgid "close failed on standard output"
 msgstr ""
 
-#: git.c:797
+#: git.c:820
 #, c-format
 msgid "alias loop detected: expansion of '%s' does not terminate:%s"
 msgstr ""
 
-#: git.c:847
+#: git.c:870
 #, c-format
 msgid "cannot handle %s as a builtin"
 msgstr ""
 
-#: git.c:860
+#: git.c:883
 #, c-format
 msgid ""
 "usage: %s\n"
 "\n"
 msgstr ""
 
-#: git.c:880
+#: git.c:903
 #, c-format
 msgid "expansion of alias '%s' failed; '%s' is not a git command\n"
 msgstr ""
 
-#: git.c:892
+#: git.c:915
 #, c-format
 msgid "failed to run command '%s': %s\n"
 msgstr ""
 
-#: http.c:378
+#: http.c:399
 #, c-format
 msgid "negative value for http.postbuffer; defaulting to %d"
 msgstr "отрицательное значение http.postbuffer; использую стандартное значение %d"
 
-#: http.c:399
+#: http.c:420
 msgid "Delegation control is not supported with cURL < 7.22.0"
 msgstr "Делегация проверки полномочий не поддерживается с cURL < 7.22.0"
 
-#: http.c:408
+#: http.c:429
 msgid "Public key pinning not supported with cURL < 7.44.0"
 msgstr "Public key pinning не поддерживается с cURL < 7.44.0"
 
-#: http.c:876
+#: http.c:910
 msgid "CURLSSLOPT_NO_REVOKE not supported with cURL < 7.44.0"
 msgstr ""
 
-#: http.c:949
+#: http.c:989
 msgid "Protocol restrictions not supported with cURL < 7.19.4"
 msgstr ""
 
-#: http.c:1085
+#: http.c:1132
 #, c-format
 msgid "Unsupported SSL backend '%s'. Supported SSL backends:"
 msgstr ""
 
-#: http.c:1092
+#: http.c:1139
 #, c-format
 msgid "Could not set SSL backend to '%s': cURL was built without SSL backends"
 msgstr ""
 
-#: http.c:1096
+#: http.c:1143
 #, c-format
 msgid "Could not set SSL backend to '%s': already set"
 msgstr ""
 
-#: http.c:1965
+#: http.c:2025
 #, c-format
 msgid ""
 "unable to update url base from redirection:\n"
@@ -19457,152 +21903,193 @@ msgid ""
 "   redirect: %s"
 msgstr "не удалось обновить базовый url из переадресации:\n  запрошено: %s\n   переадресовано: %s"
 
-#: remote-curl.c:157
+#: remote-curl.c:183
 #, c-format
 msgid "invalid quoting in push-option value: '%s'"
 msgstr ""
 
-#: remote-curl.c:254
+#: remote-curl.c:307
 #, c-format
 msgid "%sinfo/refs not valid: is this a git repository?"
 msgstr ""
 
-#: remote-curl.c:355
+#: remote-curl.c:408
 msgid "invalid server response; expected service, got flush packet"
 msgstr ""
 
-#: remote-curl.c:386
+#: remote-curl.c:439
 #, c-format
 msgid "invalid server response; got '%s'"
 msgstr ""
 
-#: remote-curl.c:446
+#: remote-curl.c:499
 #, c-format
 msgid "repository '%s' not found"
 msgstr ""
 
-#: remote-curl.c:450
+#: remote-curl.c:503
 #, c-format
 msgid "Authentication failed for '%s'"
 msgstr ""
 
-#: remote-curl.c:454
+#: remote-curl.c:507
 #, c-format
 msgid "unable to access '%s': %s"
 msgstr "«%s» недоступно: %s"
 
-#: remote-curl.c:460
+#: remote-curl.c:513
 #, c-format
 msgid "redirecting to %s"
 msgstr "переадресация на %s"
 
-#: remote-curl.c:584
+#: remote-curl.c:642
 msgid "shouldn't have EOF when not gentle on EOF"
 msgstr ""
 
-#: remote-curl.c:664
-msgid "unable to rewind rpc post data - try increasing http.postBuffer"
+#: remote-curl.c:654
+msgid "remote server sent stateless separator"
 msgstr ""
 
 #: remote-curl.c:724
+msgid "unable to rewind rpc post data - try increasing http.postBuffer"
+msgstr ""
+
+#: remote-curl.c:754
+#, c-format
+msgid "remote-curl: bad line length character: %.4s"
+msgstr ""
+
+#: remote-curl.c:756
+msgid "remote-curl: unexpected response end packet"
+msgstr ""
+
+#: remote-curl.c:832
 #, c-format
 msgid "RPC failed; %s"
 msgstr ""
 
-#: remote-curl.c:764
+#: remote-curl.c:872
 msgid "cannot handle pushes this big"
 msgstr ""
 
-#: remote-curl.c:879
+#: remote-curl.c:987
 #, c-format
 msgid "cannot deflate request; zlib deflate error %d"
 msgstr ""
 
-#: remote-curl.c:883
+#: remote-curl.c:991
 #, c-format
 msgid "cannot deflate request; zlib end error %d"
 msgstr ""
 
-#: remote-curl.c:1014
+#: remote-curl.c:1041
+#, c-format
+msgid "%d bytes of length header were received"
+msgstr ""
+
+#: remote-curl.c:1043
+#, c-format
+msgid "%d bytes of body are still expected"
+msgstr ""
+
+#: remote-curl.c:1132
 msgid "dumb http transport does not support shallow capabilities"
 msgstr ""
 
-#: remote-curl.c:1028
+#: remote-curl.c:1147
 msgid "fetch failed."
 msgstr ""
 
-#: remote-curl.c:1076
+#: remote-curl.c:1193
 msgid "cannot fetch by sha1 over smart http"
 msgstr ""
 
-#: remote-curl.c:1120 remote-curl.c:1126
+#: remote-curl.c:1237 remote-curl.c:1243
 #, c-format
 msgid "protocol error: expected sha/ref, got '%s'"
 msgstr ""
 
-#: remote-curl.c:1138 remote-curl.c:1252
+#: remote-curl.c:1255 remote-curl.c:1373
 #, c-format
 msgid "http transport does not support %s"
 msgstr ""
 
-#: remote-curl.c:1174
+#: remote-curl.c:1291
 msgid "git-http-push failed"
 msgstr ""
 
-#: remote-curl.c:1360
+#: remote-curl.c:1479
 msgid "remote-curl: usage: git remote-curl <remote> [<url>]"
 msgstr ""
 
-#: remote-curl.c:1392
+#: remote-curl.c:1511
 msgid "remote-curl: error reading command stream from git"
 msgstr ""
 
-#: remote-curl.c:1399
+#: remote-curl.c:1518
 msgid "remote-curl: fetch attempted without a local repo"
 msgstr ""
 
-#: remote-curl.c:1439
+#: remote-curl.c:1559
 #, c-format
 msgid "remote-curl: unknown command '%s' from git"
 msgstr ""
 
-#: list-objects-filter-options.h:61
+#: compat/compiler.h:26
+msgid "no compiler information available\n"
+msgstr ""
+
+#: compat/compiler.h:38
+msgid "no libc information available\n"
+msgstr ""
+
+#: list-objects-filter-options.h:91
 msgid "args"
 msgstr "аргументы"
 
-#: list-objects-filter-options.h:62
+#: list-objects-filter-options.h:92
 msgid "object filtering"
 msgstr "фильтрация объектов"
 
-#: parse-options.h:170
+#: parse-options.h:183
 msgid "expiry-date"
 msgstr "дата-окончания"
 
-#: parse-options.h:184
+#: parse-options.h:197
 msgid "no-op (backward compatibility)"
 msgstr "ничего не делает (оставлено для обратной совместимости)"
 
-#: parse-options.h:304
+#: parse-options.h:309
 msgid "be more verbose"
 msgstr "быть многословнее"
 
-#: parse-options.h:306
+#: parse-options.h:311
 msgid "be more quiet"
 msgstr "тихий режим"
 
-#: parse-options.h:312
-msgid "use <n> digits to display SHA-1s"
-msgstr "использовать <n> цифр для вывода SHA-1"
+#: parse-options.h:317
+msgid "use <n> digits to display object names"
+msgstr ""
 
-#: parse-options.h:331
+#: parse-options.h:336
 msgid "how to strip spaces and #comments from message"
 msgstr "как удалять пробелы и #комментарии из сообщения коммита"
 
-#: ref-filter.h:101
+#: parse-options.h:337
+msgid "read pathspec from file"
+msgstr ""
+
+#: parse-options.h:338
+msgid ""
+"with --pathspec-from-file, pathspec elements are separated with NUL "
+"character"
+msgstr ""
+
+#: ref-filter.h:96
 msgid "key"
 msgstr "ключ"
 
-#: ref-filter.h:101
+#: ref-filter.h:96
 msgid "field name to sort on"
 msgstr "имя поля, по которому выполнить сортировку"
 
@@ -19610,6 +22097,14 @@ msgstr "имя поля, по которому выполнить сортиро
 msgid "update the index with reused conflict resolution if possible"
 msgstr "обновить индекс с помощью переиспользования разрешения конфликта, если возможно"
 
+#: wt-status.h:80
+msgid "HEAD detached at "
+msgstr "HEAD отделён на "
+
+#: wt-status.h:81
+msgid "HEAD detached from "
+msgstr "HEAD отделён начиная с "
+
 #: command-list.h:50
 msgid "Add file contents to the index"
 msgstr "Добавление содержимого файла в индекс"
@@ -19647,852 +22142,772 @@ msgid "List, create, or delete branches"
 msgstr "Вывод списка, создание или удаление веток"
 
 #: command-list.h:59
+msgid "Collect information for user to file a bug report"
+msgstr ""
+
+#: command-list.h:60
 msgid "Move objects and refs by archive"
 msgstr "Перемещение объектов и ссылок по архиву"
 
-#: command-list.h:60
+#: command-list.h:61
 msgid "Provide content or type and size information for repository objects"
 msgstr "Вывод содержимого или типа и информации о размере для объектов репозитория"
 
-#: command-list.h:61
+#: command-list.h:62
 msgid "Display gitattributes information"
 msgstr "Вывод информации из gitattributes"
 
-#: command-list.h:62
+#: command-list.h:63
 msgid "Debug gitignore / exclude files"
 msgstr "Отладка файлов gitignore / exclude"
 
-#: command-list.h:63
+#: command-list.h:64
 msgid "Show canonical names and email addresses of contacts"
 msgstr "Вывод каноничных имён и адресов электронной почты контактов"
 
-#: command-list.h:64
+#: command-list.h:65
 msgid "Switch branches or restore working tree files"
 msgstr "Переключение веток или восстановление файлов в рабочем каталоге"
 
-#: command-list.h:65
+#: command-list.h:66
 msgid "Copy files from the index to the working tree"
 msgstr "Копирование файлов из индекса в рабочий каталог"
 
-#: command-list.h:66
+#: command-list.h:67
 msgid "Ensures that a reference name is well formed"
 msgstr "Удостовериться, что имя ссылки правильно сформировано"
 
-#: command-list.h:67
+#: command-list.h:68
 msgid "Find commits yet to be applied to upstream"
 msgstr "Поиск коммитов которые еще не применены вышестоящим репозиторием"
 
-#: command-list.h:68
+#: command-list.h:69
 msgid "Apply the changes introduced by some existing commits"
 msgstr "Применение изменений, сделанных в каком-то существующем коммите"
 
-#: command-list.h:69
+#: command-list.h:70
 msgid "Graphical alternative to git-commit"
 msgstr "Графическая альтернатива для git-commit"
 
-#: command-list.h:70
+#: command-list.h:71
 msgid "Remove untracked files from the working tree"
 msgstr "Удаление неотслеживаемых файлов из рабочего каталога"
 
-#: command-list.h:71
+#: command-list.h:72
 msgid "Clone a repository into a new directory"
 msgstr "Клонирование репозитория в новый каталог"
 
-#: command-list.h:72
+#: command-list.h:73
 msgid "Display data in columns"
 msgstr "Вывод данных по колонкам"
 
-#: command-list.h:73
+#: command-list.h:74
 msgid "Record changes to the repository"
 msgstr "Запись изменений в репозиторий"
 
-#: command-list.h:74
+#: command-list.h:75
 msgid "Write and verify Git commit-graph files"
 msgstr "Запись и проверка commit-graph файлов Git"
 
-#: command-list.h:75
+#: command-list.h:76
 msgid "Create a new commit object"
 msgstr "Создание нового объекта коммита"
 
-#: command-list.h:76
+#: command-list.h:77
 msgid "Get and set repository or global options"
 msgstr "Получение и установка глобальных опций или опций репозитория"
 
-#: command-list.h:77
+#: command-list.h:78
 msgid "Count unpacked number of objects and their disk consumption"
 msgstr "Подсчет количества неупакованных объектов и их потребления диска"
 
-#: command-list.h:78
+#: command-list.h:79
 msgid "Retrieve and store user credentials"
 msgstr "Получение и сохранение учетных записей пользователя"
 
-#: command-list.h:79
+#: command-list.h:80
 msgid "Helper to temporarily store passwords in memory"
 msgstr "Помощник для временного хранения паролей в памяти"
 
-#: command-list.h:80
+#: command-list.h:81
 msgid "Helper to store credentials on disk"
 msgstr "Помощник для хранения учетных записей на диске"
 
-#: command-list.h:81
+#: command-list.h:82
 msgid "Export a single commit to a CVS checkout"
 msgstr "Экспорт единственного коммита в виде рабочей копии CVS"
 
-#: command-list.h:82
+#: command-list.h:83
 msgid "Salvage your data out of another SCM people love to hate"
 msgstr "Спасение ваших данных из другой СКВ которую люди любят ненавидеть"
 
-#: command-list.h:83
+#: command-list.h:84
 msgid "A CVS server emulator for Git"
 msgstr "Эмулятор сервера CVS для Git"
 
-#: command-list.h:84
+#: command-list.h:85
 msgid "A really simple server for Git repositories"
 msgstr "Очень простой сервер для Git репозиториев"
 
-#: command-list.h:85
+#: command-list.h:86
 msgid "Give an object a human readable name based on an available ref"
 msgstr "Присвоение объекту удобочитаемое имя на основе доступной ссылки"
 
-#: command-list.h:86
+#: command-list.h:87
 msgid "Show changes between commits, commit and working tree, etc"
 msgstr "Вывод разницы между коммитами, коммитом и рабочим каталогом и т.д."
 
-#: command-list.h:87
+#: command-list.h:88
 msgid "Compares files in the working tree and the index"
 msgstr "Сравнение седержимого файлов в рабочем каталоге с файлами в индексе"
 
-#: command-list.h:88
+#: command-list.h:89
 msgid "Compare a tree to the working tree or index"
 msgstr "Сравнение дерева файлов с рабочим каталогом или индексом"
 
-#: command-list.h:89
+#: command-list.h:90
 msgid "Compares the content and mode of blobs found via two tree objects"
 msgstr "Сравнение содержимого и режима двоичных объектов, найденных по двум объектам дерева"
 
-#: command-list.h:90
+#: command-list.h:91
 msgid "Show changes using common diff tools"
 msgstr "Показ изменений с помощью распространенных утилит сравнения"
 
-#: command-list.h:91
+#: command-list.h:92
 msgid "Git data exporter"
 msgstr "Экспорт данных Git"
 
-#: command-list.h:92
+#: command-list.h:93
 msgid "Backend for fast Git data importers"
 msgstr "Внутренний интерфейс для быстрого импорта данных Git"
 
-#: command-list.h:93
+#: command-list.h:94
 msgid "Download objects and refs from another repository"
 msgstr "Загрузка объектов и ссылок из другого репозитория"
 
-#: command-list.h:94
+#: command-list.h:95
 msgid "Receive missing objects from another repository"
 msgstr "Получение недостающих объектов из другого репозитория"
 
-#: command-list.h:95
+#: command-list.h:96
 msgid "Rewrite branches"
 msgstr "Перезапись веток"
 
-#: command-list.h:96
+#: command-list.h:97
 msgid "Produce a merge commit message"
 msgstr "Создание сообщения коммита для слияния"
 
-#: command-list.h:97
+#: command-list.h:98
 msgid "Output information on each ref"
 msgstr "Вывод информации о каждой ссылке"
 
-#: command-list.h:98
+#: command-list.h:99
+msgid "Run a Git command on a list of repositories"
+msgstr ""
+
+#: command-list.h:100
 msgid "Prepare patches for e-mail submission"
 msgstr "Подготовка патчей для отправки по электронной почте"
 
-#: command-list.h:99
+#: command-list.h:101
 msgid "Verifies the connectivity and validity of the objects in the database"
 msgstr "Проверка связности и валидности объектов в базе данных"
 
-#: command-list.h:100
+#: command-list.h:102
 msgid "Cleanup unnecessary files and optimize the local repository"
 msgstr "Очистка ненужных файлов и оптимизация локального репозитория"
 
-#: command-list.h:101
+#: command-list.h:103
 msgid "Extract commit ID from an archive created using git-archive"
 msgstr "Извлечение идентификатора коммита из архива, созданного с помощью git-archive"
 
-#: command-list.h:102
+#: command-list.h:104
 msgid "Print lines matching a pattern"
 msgstr "Вывод строк, соответствующих шаблону"
 
-#: command-list.h:103
+#: command-list.h:105
 msgid "A portable graphical interface to Git"
 msgstr "Портативный графический интерфейс для Git"
 
-#: command-list.h:104
+#: command-list.h:106
 msgid "Compute object ID and optionally creates a blob from a file"
 msgstr "Вычисление идентификатора объекта и возможное создание двоичного объекта из файла"
 
-#: command-list.h:105
+#: command-list.h:107
 msgid "Display help information about Git"
 msgstr "Отображение справочной информации о Git"
 
-#: command-list.h:106
+#: command-list.h:108
 msgid "Server side implementation of Git over HTTP"
 msgstr "Серверная реализация протокола Git над HTTP"
 
-#: command-list.h:107
+#: command-list.h:109
 msgid "Download from a remote Git repository via HTTP"
 msgstr "Загрузка из внешнего репозитория Git с помощью HTTP"
 
-#: command-list.h:108
+#: command-list.h:110
 msgid "Push objects over HTTP/DAV to another repository"
 msgstr "Отправка объектов в другой репозиторий с помощью HTTP/DAV"
 
-#: command-list.h:109
+#: command-list.h:111
 msgid "Send a collection of patches from stdin to an IMAP folder"
 msgstr "Отправка коллекции патчей из стандартного ввода в папку IMAP"
 
-#: command-list.h:110
+#: command-list.h:112
 msgid "Build pack index file for an existing packed archive"
 msgstr "Построение файла индекса для существующего упакованного архива"
 
-#: command-list.h:111
+#: command-list.h:113
 msgid "Create an empty Git repository or reinitialize an existing one"
 msgstr "Создание пустого репозитория Git или переинициализация существующего"
 
-#: command-list.h:112
+#: command-list.h:114
 msgid "Instantly browse your working repository in gitweb"
 msgstr "Мгновенный просмотр вашего рабочего репозитория в gitweb"
 
-#: command-list.h:113
+#: command-list.h:115
 msgid "Add or parse structured information in commit messages"
 msgstr "Добавление или разбор структурированной информации в сообщениях коммита"
 
-#: command-list.h:114
+#: command-list.h:116
 msgid "The Git repository browser"
 msgstr "Браузер репозитория Git"
 
-#: command-list.h:115
+#: command-list.h:117
 msgid "Show commit logs"
 msgstr "Вывод истории коммитов"
 
-#: command-list.h:116
+#: command-list.h:118
 msgid "Show information about files in the index and the working tree"
 msgstr "Вывод информации о файлах в индексе и в рабочем каталоге"
 
-#: command-list.h:117
+#: command-list.h:119
 msgid "List references in a remote repository"
 msgstr "Вывод списка ссылок во внешнем репозитории"
 
-#: command-list.h:118
+#: command-list.h:120
 msgid "List the contents of a tree object"
 msgstr "Вывод содержимого объекта дерева"
 
-#: command-list.h:119
+#: command-list.h:121
 msgid "Extracts patch and authorship from a single e-mail message"
 msgstr "Извлекает патч и авторство из одного сообщения электронной почты"
 
-#: command-list.h:120
+#: command-list.h:122
 msgid "Simple UNIX mbox splitter program"
 msgstr "Простая программа UNIX для разбора файла mbox"
 
-#: command-list.h:121
+#: command-list.h:123
+msgid "Run tasks to optimize Git repository data"
+msgstr ""
+
+#: command-list.h:124
 msgid "Join two or more development histories together"
 msgstr "Объединение одной или нескольких историй разработки вместе"
 
-#: command-list.h:122
+#: command-list.h:125
 msgid "Find as good common ancestors as possible for a merge"
 msgstr "Поиск подходящих общих предков для возможного слияния"
 
-#: command-list.h:123
+#: command-list.h:126
 msgid "Run a three-way file merge"
 msgstr "Запуск трёхходового слияния файлов"
 
-#: command-list.h:124
+#: command-list.h:127
 msgid "Run a merge for files needing merging"
 msgstr "Запуск слияния для файлов, которые требуют слияния"
 
-#: command-list.h:125
+#: command-list.h:128
 msgid "The standard helper program to use with git-merge-index"
 msgstr "Стандартная программа-помощник для использования совместно с git-merge-index"
 
-#: command-list.h:126
+#: command-list.h:129
 msgid "Run merge conflict resolution tools to resolve merge conflicts"
 msgstr "Запуск инструментов разрешения конфликтов слияния"
 
-#: command-list.h:127
+#: command-list.h:130
 msgid "Show three-way merge without touching index"
 msgstr "Вывод трёхходового слияние без затрагивания индекса"
 
-#: command-list.h:128
+#: command-list.h:131
 msgid "Write and verify multi-pack-indexes"
 msgstr "Запись и проверка файлов multi-pack-index"
 
-#: command-list.h:129
+#: command-list.h:132
 msgid "Creates a tag object"
 msgstr "Создание объектов меток"
 
-#: command-list.h:130
+#: command-list.h:133
 msgid "Build a tree-object from ls-tree formatted text"
 msgstr "Построение объекта дерева из текста формата ls-tree"
 
-#: command-list.h:131
+#: command-list.h:134
 msgid "Move or rename a file, a directory, or a symlink"
 msgstr "Перемещение или переименование файла, каталога или символьной ссылки"
 
-#: command-list.h:132
+#: command-list.h:135
 msgid "Find symbolic names for given revs"
 msgstr "Поиск символьных имён для указанных редакций"
 
-#: command-list.h:133
+#: command-list.h:136
 msgid "Add or inspect object notes"
 msgstr "Добавление или просмотр заметок объекта"
 
-#: command-list.h:134
+#: command-list.h:137
 msgid "Import from and submit to Perforce repositories"
 msgstr "Импорт и отправка в репозитории Perforce"
 
-#: command-list.h:135
+#: command-list.h:138
 msgid "Create a packed archive of objects"
 msgstr "Создание упакованного архива объектов"
 
-#: command-list.h:136
+#: command-list.h:139
 msgid "Find redundant pack files"
 msgstr "Поиск избыточных файлов пакетов"
 
-#: command-list.h:137
+#: command-list.h:140
 msgid "Pack heads and tags for efficient repository access"
 msgstr "Упаковка указателей на ветки и меток для эффективного доступа к репозиторию"
 
-#: command-list.h:138
-msgid "Routines to help parsing remote repository access parameters"
-msgstr "Подпрограммы для помощи разбора параметров доступа внешнего репозитория"
-
-#: command-list.h:139
+#: command-list.h:141
 msgid "Compute unique ID for a patch"
 msgstr "Вычисление уникального идентификатора для патча"
 
-#: command-list.h:140
+#: command-list.h:142
 msgid "Prune all unreachable objects from the object database"
 msgstr "Очистка всех недостижимых объектов из базы данных объектов"
 
-#: command-list.h:141
+#: command-list.h:143
 msgid "Remove extra objects that are already in pack files"
 msgstr "Удаление дополнительных объектов, которые уже содержатся в файлах пакетов"
 
-#: command-list.h:142
+#: command-list.h:144
 msgid "Fetch from and integrate with another repository or a local branch"
 msgstr "Извлечение изменений и объединение с другим репозиторием или локальной веткой"
 
-#: command-list.h:143
+#: command-list.h:145
 msgid "Update remote refs along with associated objects"
 msgstr "Обновление внешних ссылок и связанных объектов"
 
-#: command-list.h:144
+#: command-list.h:146
 msgid "Applies a quilt patchset onto the current branch"
 msgstr "Применение упорядоченного списка патчей над текущей веткой"
 
-#: command-list.h:145
+#: command-list.h:147
 msgid "Compare two commit ranges (e.g. two versions of a branch)"
 msgstr "Сравнение двух диапазонов коммитов (например двух версий ветки)"
 
-#: command-list.h:146
+#: command-list.h:148
 msgid "Reads tree information into the index"
 msgstr "Чтение информации о дереве в индекс"
 
-#: command-list.h:147
+#: command-list.h:149
 msgid "Reapply commits on top of another base tip"
 msgstr "Повторное применение коммитов над верхушкой другой ветки"
 
-#: command-list.h:148
+#: command-list.h:150
 msgid "Receive what is pushed into the repository"
 msgstr "Получение того, что было отправлено в репозиторий"
 
-#: command-list.h:149
+#: command-list.h:151
 msgid "Manage reflog information"
 msgstr "Управление информацией журнала ссылок"
 
-#: command-list.h:150
+#: command-list.h:152
 msgid "Manage set of tracked repositories"
 msgstr "Управление набором отслеживаемых репозиториев"
 
-#: command-list.h:151
+#: command-list.h:153
 msgid "Pack unpacked objects in a repository"
 msgstr "Упаковка неупакованных объектов в репозитории"
 
-#: command-list.h:152
+#: command-list.h:154
 msgid "Create, list, delete refs to replace objects"
 msgstr "Создание, вывод списка, удаление ссылок для замены объектов"
 
-#: command-list.h:153
+#: command-list.h:155
 msgid "Generates a summary of pending changes"
 msgstr "Генерация сводки предстоящих изменений"
 
-#: command-list.h:154
+#: command-list.h:156
 msgid "Reuse recorded resolution of conflicted merges"
 msgstr "Повторное использование записанных разрешений конфликтов при слияниях"
 
-#: command-list.h:155
+#: command-list.h:157
 msgid "Reset current HEAD to the specified state"
 msgstr "Сброс текущего состояния HEAD на указанное состояние"
 
-#: command-list.h:156
+#: command-list.h:158
+msgid "Restore working tree files"
+msgstr ""
+
+#: command-list.h:159
 msgid "Revert some existing commits"
 msgstr "Обращение изменений существующих коммитов"
 
-#: command-list.h:157
+#: command-list.h:160
 msgid "Lists commit objects in reverse chronological order"
 msgstr "Вывод списка объектов коммита в обратном хронологическом порядке"
 
-#: command-list.h:158
+#: command-list.h:161
 msgid "Pick out and massage parameters"
 msgstr "Разбор и обработка параметров"
 
-#: command-list.h:159
+#: command-list.h:162
 msgid "Remove files from the working tree and from the index"
 msgstr "Удаление файлов из рабочего каталога и индекса"
 
-#: command-list.h:160
+#: command-list.h:163
 msgid "Send a collection of patches as emails"
 msgstr "Отправка коллекции патчей на электронную почту"
 
-#: command-list.h:161
+#: command-list.h:164
 msgid "Push objects over Git protocol to another repository"
 msgstr "Отправка объектов в другой репозиторий с помощью протокола Git"
 
-#: command-list.h:162
+#: command-list.h:165
 msgid "Restricted login shell for Git-only SSH access"
 msgstr "Ограниченная оболочка входа в систему для доступа Git через SSH"
 
-#: command-list.h:163
+#: command-list.h:166
 msgid "Summarize 'git log' output"
 msgstr "Обобщение вывода «git log»"
 
-#: command-list.h:164
+#: command-list.h:167
 msgid "Show various types of objects"
 msgstr "Вывод различных типов объектов"
 
-#: command-list.h:165
+#: command-list.h:168
 msgid "Show branches and their commits"
 msgstr "Вывод веток и их коммитов"
 
-#: command-list.h:166
+#: command-list.h:169
 msgid "Show packed archive index"
 msgstr "Вывод индекса упакованного архива"
 
-#: command-list.h:167
+#: command-list.h:170
 msgid "List references in a local repository"
 msgstr "Вывод ссылок в локальном репозитории"
 
-#: command-list.h:168
+#: command-list.h:171
 msgid "Git's i18n setup code for shell scripts"
 msgstr "Код настройки интернационализации для сценариев оболочки Git"
 
-#: command-list.h:169
+#: command-list.h:172
 msgid "Common Git shell script setup code"
 msgstr "Общий код настройки для сценариев оболочки Git"
 
-#: command-list.h:170
+#: command-list.h:173
+msgid "Initialize and modify the sparse-checkout"
+msgstr ""
+
+#: command-list.h:174
 msgid "Stash the changes in a dirty working directory away"
 msgstr "Спрятать изменения в изменённом рабочем каталоге"
 
-#: command-list.h:171
+#: command-list.h:175
 msgid "Add file contents to the staging area"
 msgstr "Добавление содержимого файлов в индекс"
 
-#: command-list.h:172
+#: command-list.h:176
 msgid "Show the working tree status"
 msgstr "Вывод состояния рабочего каталога"
 
-#: command-list.h:173
+#: command-list.h:177
 msgid "Remove unnecessary whitespace"
 msgstr "Удаление ненужных пробелов"
 
-#: command-list.h:174
+#: command-list.h:178
 msgid "Initialize, update or inspect submodules"
 msgstr "Инициализация, обновление или просмотр подмодулей"
 
-#: command-list.h:175
+#: command-list.h:179
 msgid "Bidirectional operation between a Subversion repository and Git"
 msgstr "Двухсторонние операции между репозиториями Subversion и Git"
 
-#: command-list.h:176
+#: command-list.h:180
+msgid "Switch branches"
+msgstr ""
+
+#: command-list.h:181
 msgid "Read, modify and delete symbolic refs"
 msgstr "Чтение, изменение и удаление символических ссылок"
 
-#: command-list.h:177
+#: command-list.h:182
 msgid "Create, list, delete or verify a tag object signed with GPG"
 msgstr "Создание, вывод списка, удаление или проверка метки, подписанной с помощью GPG"
 
-#: command-list.h:178
+#: command-list.h:183
 msgid "Creates a temporary file with a blob's contents"
 msgstr "Создание временного файла с содержимым двоичного объекта"
 
-#: command-list.h:179
+#: command-list.h:184
 msgid "Unpack objects from a packed archive"
 msgstr "Распаковка объектов из упакованного архива"
 
-#: command-list.h:180
+#: command-list.h:185
 msgid "Register file contents in the working tree to the index"
 msgstr "Регистрация содержимого файла из рабочего каталога в индекс"
 
-#: command-list.h:181
+#: command-list.h:186
 msgid "Update the object name stored in a ref safely"
 msgstr "Безопасное обновление имени объекта хранящегося в ссылке"
 
-#: command-list.h:182
+#: command-list.h:187
 msgid "Update auxiliary info file to help dumb servers"
 msgstr "Обновление файла со вспомогательной информацией для глупых серверов"
 
-#: command-list.h:183
+#: command-list.h:188
 msgid "Send archive back to git-archive"
 msgstr "Отправка архива обратно в git-archive"
 
-#: command-list.h:184
+#: command-list.h:189
 msgid "Send objects packed back to git-fetch-pack"
 msgstr "Отправка упакованных объектов обратно в git-fetch-pack"
 
-#: command-list.h:185
+#: command-list.h:190
 msgid "Show a Git logical variable"
 msgstr "Вывод логической переменной Git"
 
-#: command-list.h:186
+#: command-list.h:191
 msgid "Check the GPG signature of commits"
 msgstr "Проверка подписи GPG коммитов"
 
-#: command-list.h:187
+#: command-list.h:192
 msgid "Validate packed Git archive files"
 msgstr "Проверка файлов упакованных архивов Git"
 
-#: command-list.h:188
+#: command-list.h:193
 msgid "Check the GPG signature of tags"
 msgstr "Проверка подписи GPG меток"
 
-#: command-list.h:189
+#: command-list.h:194
 msgid "Git web interface (web frontend to Git repositories)"
 msgstr "Веб интерфейс Git (веб-интерфейс для Git репозиториев)"
 
-#: command-list.h:190
+#: command-list.h:195
 msgid "Show logs with difference each commit introduces"
 msgstr "Вывод журнала с изменениями, которые вводил каждый из коммитов"
 
-#: command-list.h:191
+#: command-list.h:196
 msgid "Manage multiple working trees"
 msgstr "Управление несколькими рабочими каталогами"
 
-#: command-list.h:192
+#: command-list.h:197
 msgid "Create a tree object from the current index"
 msgstr "Создание объекта дерева из текущего индекса"
 
-#: command-list.h:193
+#: command-list.h:198
 msgid "Defining attributes per path"
 msgstr "Определение атрибутов для путей файлов или каталогов"
 
-#: command-list.h:194
+#: command-list.h:199
 msgid "Git command-line interface and conventions"
 msgstr "Интерфейс коммандной строки Git и соглашения"
 
-#: command-list.h:195
+#: command-list.h:200
 msgid "A Git core tutorial for developers"
 msgstr "Учебник по ядру Git для разработчиков"
 
-#: command-list.h:196
+#: command-list.h:201
+msgid "Providing usernames and passwords to Git"
+msgstr ""
+
+#: command-list.h:202
 msgid "Git for CVS users"
 msgstr "Git для пользователей CVS"
 
-#: command-list.h:197
+#: command-list.h:203
 msgid "Tweaking diff output"
 msgstr "Подстройка вывода списка изменений"
 
-#: command-list.h:198
+#: command-list.h:204
 msgid "A useful minimum set of commands for Everyday Git"
 msgstr "Полезный минимум команд для каждодневного использования Git"
 
-#: command-list.h:199
+#: command-list.h:205
+msgid "Frequently asked questions about using Git"
+msgstr ""
+
+#: command-list.h:206
 msgid "A Git Glossary"
 msgstr "Глоссарий Git"
 
-#: command-list.h:200
+#: command-list.h:207
 msgid "Hooks used by Git"
 msgstr "Перехватчики используемые Git"
 
-#: command-list.h:201
+#: command-list.h:208
 msgid "Specifies intentionally untracked files to ignore"
 msgstr "Указание специально игнорируемых файлов"
 
-#: command-list.h:202
+#: command-list.h:209
 msgid "Defining submodule properties"
 msgstr "Определение свойств подмодулей"
 
-#: command-list.h:203
+#: command-list.h:210
 msgid "Git namespaces"
 msgstr "Пространства имён Git"
 
-#: command-list.h:204
+#: command-list.h:211
+msgid "Helper programs to interact with remote repositories"
+msgstr ""
+
+#: command-list.h:212
 msgid "Git Repository Layout"
 msgstr "Содержимое репозитория Git"
 
-#: command-list.h:205
+#: command-list.h:213
 msgid "Specifying revisions and ranges for Git"
 msgstr "Указание редакций и диапазонов для Git"
 
-#: command-list.h:206
+#: command-list.h:214
+msgid "Mounting one repository inside another"
+msgstr ""
+
+#: command-list.h:215
 msgid "A tutorial introduction to Git: part two"
 msgstr "Обучающее введение в Git: часть вторая"
 
-#: command-list.h:207
+#: command-list.h:216
 msgid "A tutorial introduction to Git"
 msgstr "Обучающее введение в Git"
 
-#: command-list.h:208
+#: command-list.h:217
 msgid "An overview of recommended workflows with Git"
 msgstr "Обзор рекомендуемых последовательностей выполняемых действий с Git"
 
-#: git-bisect.sh:54
-msgid "You need to start by \"git bisect start\""
-msgstr "Вам нужно начать с помощью «git bisect start»"
-
-#. TRANSLATORS: Make sure to include [Y] and [n] in your
-#. translation. The program will only accept English input
-#. at this point.
-#: git-bisect.sh:60
-msgid "Do you want me to do it for you [Y/n]? "
-msgstr "Вы уверены, что хотите, чтобы я сделал это [Y - да/n - нет]? "
-
-#: git-bisect.sh:101
+#: git-bisect.sh:48
 #, sh-format
 msgid "Bad rev input: $arg"
 msgstr "Плохой ввод номера редакции: $arg"
 
-#: git-bisect.sh:121
-#, sh-format
-msgid "Bad rev input: $bisected_head"
-msgstr "Плохой ввод номера редакции: $bisected_head"
-
-#: git-bisect.sh:130
-#, sh-format
-msgid "Bad rev input: $rev"
-msgstr "Плохой ввод номера редакции: $rev"
-
-#: git-bisect.sh:139
-#, sh-format
-msgid "'git bisect $TERM_BAD' can take only one argument."
-msgstr "«git bisect $TERM_BAD» может принимать только один аргумент."
-
-#: git-bisect.sh:209
+#: git-bisect.sh:82
 msgid "No logfile given"
 msgstr "Не передан файл журнала"
 
-#: git-bisect.sh:210
+#: git-bisect.sh:83
 #, sh-format
 msgid "cannot read $file for replaying"
 msgstr "не удалось прочитать $file для повтора изменений"
 
-#: git-bisect.sh:232
+#: git-bisect.sh:105
 msgid "?? what are you talking about?"
 msgstr "?? вы о чем?"
 
-#: git-bisect.sh:241
+#: git-bisect.sh:115
 msgid "bisect run failed: no command provided."
 msgstr "сбой при выполнении двоичного поиска: не передана команда."
 
-#: git-bisect.sh:246
+#: git-bisect.sh:120
 #, sh-format
 msgid "running $command"
 msgstr "запускаю $command"
 
-#: git-bisect.sh:253
+#: git-bisect.sh:127
 #, sh-format
 msgid ""
 "bisect run failed:\n"
 "exit code $res from '$command' is < 0 or >= 128"
 msgstr "не удалось выполнить двоичный поиск:\nкод завершения $res от «$command» оказался < 0 или >= 128"
 
-#: git-bisect.sh:279
+#: git-bisect.sh:152
 msgid "bisect run cannot continue any more"
 msgstr "bisect run больше не может продолжать"
 
-#: git-bisect.sh:285
+#: git-bisect.sh:158
 #, sh-format
 msgid ""
 "bisect run failed:\n"
-"'bisect_state $state' exited with error code $res"
-msgstr "не удалось выполнить двоичный поиск:\n«bisect_state $state» завершился с кодом ошибки $res"
+"'bisect-state $state' exited with error code $res"
+msgstr ""
 
-#: git-bisect.sh:292
+#: git-bisect.sh:165
 msgid "bisect run success"
 msgstr "bisect run выполнен успешно"
 
-#: git-bisect.sh:300
+#: git-bisect.sh:173
 msgid "We are not bisecting."
 msgstr "Вы сейчас не в процессе бинарного поиска."
 
 #: git-merge-octopus.sh:46
 msgid ""
 "Error: Your local changes to the following files would be overwritten by "
-"merge"
-msgstr "Ошибка: Ваши локальные изменения в указанных файлах будут перезаписаны при слиянии"
-
-#: git-merge-octopus.sh:61
-msgid "Automated merge did not work."
-msgstr "Не удалось автоматически слить изменения."
-
-#: git-merge-octopus.sh:62
-msgid "Should not be doing an octopus."
-msgstr "Должно быть octopus не подходит."
-
-#: git-merge-octopus.sh:73
-#, sh-format
-msgid "Unable to find common commit with $pretty_name"
-msgstr "Не удалось найти общий коммит с $pretty_name"
-
-#: git-merge-octopus.sh:77
-#, sh-format
-msgid "Already up to date with $pretty_name"
-msgstr "Уже обновлено в соответствии с $pretty_name"
-
-#: git-merge-octopus.sh:89
-#, sh-format
-msgid "Fast-forwarding to: $pretty_name"
-msgstr "Перемотка вперед до: $pretty_name"
-
-#: git-merge-octopus.sh:97
-#, sh-format
-msgid "Trying simple merge with $pretty_name"
-msgstr "Попытка простого слияния с $pretty_name"
-
-#: git-merge-octopus.sh:102
-msgid "Simple merge did not work, trying automatic merge."
-msgstr "Простое слияние не удалось, попытка автоматического слияния."
-
-#: git-legacy-stash.sh:220
-msgid "Cannot remove temporary index (can't happen)"
-msgstr "Не удалось удалить временный индекс (не должно случаться)"
-
-#: git-legacy-stash.sh:271
-#, sh-format
-msgid "Cannot update $ref_stash with $w_commit"
-msgstr "Не удалось обновить $ref_stash с помощью $w_commit"
-
-#: git-legacy-stash.sh:323
-#, sh-format
-msgid "error: unknown option for 'stash push': $option"
-msgstr "ошибка: неизвестный параметр для «stash push»: $option"
-
-#: git-legacy-stash.sh:355
-#, sh-format
-msgid "Saved working directory and index state $stash_msg"
-msgstr "Рабочий каталог и состояние индекса сохранены $stash_msg"
-
-#: git-legacy-stash.sh:535
-#, sh-format
-msgid "unknown option: $opt"
-msgstr "неизвестная опция: $opt"
-
-#: git-legacy-stash.sh:555
-#, sh-format
-msgid "Too many revisions specified: $REV"
-msgstr "Передано слишком много редакций: $REV"
-
-#: git-legacy-stash.sh:570
-#, sh-format
-msgid "$reference is not a valid reference"
-msgstr "$reference не является действительной ссылкой"
-
-#: git-legacy-stash.sh:598
-#, sh-format
-msgid "'$args' is not a stash-like commit"
-msgstr "«$args» не похоже на коммит со спрятанными изменениями"
-
-#: git-legacy-stash.sh:609
-#, sh-format
-msgid "'$args' is not a stash reference"
-msgstr "«$args» не является ссылкой на спрятанные изменения"
-
-#: git-legacy-stash.sh:617
-msgid "unable to refresh index"
-msgstr "не удалось обновить индекс"
-
-#: git-legacy-stash.sh:621
-msgid "Cannot apply a stash in the middle of a merge"
-msgstr "Нельзя применить спрятанные изменения во время выполнения слияния"
+"merge"
+msgstr "Ошибка: Ваши локальные изменения в указанных файлах будут перезаписаны при слиянии"
 
-#: git-legacy-stash.sh:629
-msgid "Conflicts in index. Try without --index."
-msgstr "Ð\9aонÑ\84ликÑ\82Ñ\8b Ð² Ð¸Ð½Ð´ÐµÐºÑ\81е. Ð\9fопÑ\80обÑ\83йÑ\82е Ð±ÐµÐ· --index."
+#: git-merge-octopus.sh:61
+msgid "Automated merge did not work."
+msgstr "Ð\9dе Ñ\83далоÑ\81Ñ\8c Ð°Ð²Ñ\82омаÑ\82иÑ\87еÑ\81ки Ñ\81лиÑ\82Ñ\8c Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ\8f."
 
-#: git-legacy-stash.sh:631
-msgid "Could not save index tree"
-msgstr "Ð\9dе Ñ\83далоÑ\81Ñ\8c Ñ\81оÑ\85Ñ\80аниÑ\82Ñ\8c Ð´ÐµÑ\80ево Ð¸Ð½Ð´ÐµÐºÑ\81а"
+#: git-merge-octopus.sh:62
+msgid "Should not be doing an octopus."
+msgstr "Ð\94олжно Ð±Ñ\8bÑ\82Ñ\8c octopus Ð½Ðµ Ð¿Ð¾Ð´Ñ\85одиÑ\82."
 
-#: git-legacy-stash.sh:640
-msgid "Could not restore untracked files from stash entry"
-msgstr "Невозможно восстановить неотслеживаемые файлы из спрятанных изменений"
+#: git-merge-octopus.sh:73
+#, sh-format
+msgid "Unable to find common commit with $pretty_name"
+msgstr "Не удалось найти общий коммит с $pretty_name"
 
-#: git-legacy-stash.sh:665
-msgid "Cannot unstage modified files"
-msgstr "Невозможно убрать из индекса измененные файлы"
+#: git-merge-octopus.sh:77
+#, sh-format
+msgid "Already up to date with $pretty_name"
+msgstr "Уже обновлено в соответствии с $pretty_name"
 
-#: git-legacy-stash.sh:703
+#: git-merge-octopus.sh:89
 #, sh-format
-msgid "Dropped ${REV} ($s)"
-msgstr "Ð\9eÑ\82бÑ\80оÑ\88ено ${REV} ($s)"
+msgid "Fast-forwarding to: $pretty_name"
+msgstr "Ð\9fеÑ\80емоÑ\82ка Ð²Ð¿ÐµÑ\80ед Ð´Ð¾: $pretty_name"
 
-#: git-legacy-stash.sh:704
+#: git-merge-octopus.sh:97
 #, sh-format
-msgid "${REV}: Could not drop stash entry"
-msgstr "${REV}: Не удалось отбросить запись из спрятанных изменений"
+msgid "Trying simple merge with $pretty_name"
+msgstr "Попытка простого слияния с $pretty_name"
 
-#: git-legacy-stash.sh:791
-msgid "(To restore them type \"git stash apply\")"
-msgstr "(Чтобы восстановить их, наберите «git stash apply»)"
+#: git-merge-octopus.sh:102
+msgid "Simple merge did not work, trying automatic merge."
+msgstr "Простое слияние не удалось, попытка автоматического слияния."
 
-#: git-submodule.sh:200
+#: git-submodule.sh:179
 msgid "Relative path can only be used from the toplevel of the working tree"
 msgstr "Относительный путь можно использовать только находясь на вершине рабочего каталога"
 
-#: git-submodule.sh:210
+#: git-submodule.sh:189
 #, sh-format
 msgid "repo URL: '$repo' must be absolute or begin with ./|../"
 msgstr "URL репозитория: «$repo» должен быть абсолютным или начинаться с ./|../"
 
-#: git-submodule.sh:229
+#: git-submodule.sh:208
 #, sh-format
 msgid "'$sm_path' already exists in the index"
 msgstr "«$sm_path» уже содержится в индексе"
 
-#: git-submodule.sh:232
+#: git-submodule.sh:211
 #, sh-format
 msgid "'$sm_path' already exists in the index and is not a submodule"
 msgstr "«$sm_path» уже содержится в индексе и не является подмодулем"
 
-#: git-submodule.sh:239
+#: git-submodule.sh:218
 #, sh-format
 msgid "'$sm_path' does not have a commit checked out"
 msgstr ""
 
-#: git-submodule.sh:245
-#, sh-format
-msgid ""
-"The following path is ignored by one of your .gitignore files:\n"
-"$sm_path\n"
-"Use -f if you really want to add it."
-msgstr "Следующие пути игнорируются одним из ваших файлов .gitignore:\n$sm_path\nИспользуйте опцию -f, если вы действительно хотите его добавить."
-
-#: git-submodule.sh:268
+#: git-submodule.sh:249
 #, sh-format
 msgid "Adding existing repo at '$sm_path' to the index"
 msgstr "Добавляю существующий репозиторий из «$sm_path» в индекс"
 
-#: git-submodule.sh:270
+#: 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:278
+#: 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:280
+#: git-submodule.sh:261
 #, sh-format
 msgid ""
 "If you want to reuse this local git directory instead of cloning again from\n"
@@ -20501,137 +22916,124 @@ msgid ""
 "or you are unsure what this means choose another name with the '--name' option."
 msgstr "Если вы хотите повторно использовать локальный каталог git вместо повторного клонирования из\n  $realrepo\nто используйте параметр «--force». Если же локальный каталог git не является нужным репозиторием или если вы не уверены, что это значит, то укажите другое имя для подмодуля с помощью параметра «--name»."
 
-#: git-submodule.sh:286
+#: git-submodule.sh:267
 #, sh-format
 msgid "Reactivating local git directory for submodule '$sm_name'."
 msgstr "Восстановление локального каталога git для подмодуля «$sm_name»."
 
-#: git-submodule.sh:298
+#: git-submodule.sh:279
 #, sh-format
 msgid "Unable to checkout submodule '$sm_path'"
 msgstr "Не удалось переключиться на состояние у подмодуля «$sm_path»"
 
-#: git-submodule.sh:303
+#: git-submodule.sh:284
 #, sh-format
 msgid "Failed to add submodule '$sm_path'"
 msgstr "Сбой добавления подмодуля «$sm_path»"
 
-#: git-submodule.sh:312
+#: git-submodule.sh:293
 #, sh-format
 msgid "Failed to register submodule '$sm_path'"
 msgstr "Не удалось зарегистрировать подмодуль «$sm_path»"
 
-#: git-submodule.sh:573
+#: git-submodule.sh:568
 #, sh-format
 msgid "Unable to find current revision in submodule path '$displaypath'"
 msgstr "Не удалось найти текущую редакцию для подмодуля по пути «$displaypath»"
 
-#: git-submodule.sh:583
+#: git-submodule.sh:578
 #, sh-format
 msgid "Unable to fetch in submodule path '$sm_path'"
 msgstr "Не удалось выполнить извлечение для подмодуля по пути «$sm_path»"
 
-#: git-submodule.sh:588
+#: git-submodule.sh:583
 #, sh-format
 msgid ""
 "Unable to find current ${remote_name}/${branch} revision in submodule path "
 "'$sm_path'"
 msgstr "Не удалось найти текущую редакцию ${remote_name}/${branch} для подмодуля по пути «$sm_path»"
 
-#: git-submodule.sh:606
+#: git-submodule.sh:601
 #, sh-format
 msgid ""
 "Unable to fetch in submodule path '$displaypath'; trying to directly fetch "
 "$sha1:"
 msgstr ""
 
-#: git-submodule.sh:612
+#: git-submodule.sh:607
 #, sh-format
 msgid ""
 "Fetched in submodule path '$displaypath', but it did not contain $sha1. "
 "Direct fetching of that commit failed."
 msgstr "Получен по пути подмодуля «$displaypath», но не содержит $sha1. Сбой при прямом получении коммита."
 
-#: git-submodule.sh:619
+#: git-submodule.sh:614
 #, sh-format
 msgid "Unable to checkout '$sha1' in submodule path '$displaypath'"
 msgstr "Не удалось переключиться на состояние «$sha1» для подмодуля по пути «$displaypath»"
 
-#: git-submodule.sh:620
+#: git-submodule.sh:615
 #, sh-format
 msgid "Submodule path '$displaypath': checked out '$sha1'"
 msgstr "Подмодуль по пути «$displaypath»: забрано состояние «$sha1»"
 
-#: git-submodule.sh:624
+#: git-submodule.sh:619
 #, sh-format
 msgid "Unable to rebase '$sha1' in submodule path '$displaypath'"
 msgstr "Не удалось переместить «$sha1» для подмодуля по пути «$displaypath»"
 
-#: git-submodule.sh:625
+#: git-submodule.sh:620
 #, sh-format
 msgid "Submodule path '$displaypath': rebased into '$sha1'"
 msgstr "Подмодуль по пути «$displaypath»: перемещен над «$sha1»"
 
-#: git-submodule.sh:630
+#: git-submodule.sh:625
 #, sh-format
 msgid "Unable to merge '$sha1' in submodule path '$displaypath'"
 msgstr "Не удалось выполнить слияние с «$sha1» для подмодуля по пути «$displaypath»"
 
-#: git-submodule.sh:631
+#: git-submodule.sh:626
 #, sh-format
 msgid "Submodule path '$displaypath': merged in '$sha1'"
 msgstr "Подмодуль по пути «$displaypath»: слито с «$sha1»"
 
-#: git-submodule.sh:636
+#: git-submodule.sh:631
 #, sh-format
 msgid "Execution of '$command $sha1' failed in submodule path '$displaypath'"
 msgstr "Сбой выполнения «$command $sha1» для подмодуля по пути «$displaypath»"
 
-#: git-submodule.sh:637
+#: git-submodule.sh:632
 #, sh-format
 msgid "Submodule path '$displaypath': '$command $sha1'"
 msgstr "Подмодуль по пути «$displaypath»: «$command $sha1»"
 
-#: git-submodule.sh:668
+#: git-submodule.sh:663
 #, sh-format
 msgid "Failed to recurse into submodule path '$displaypath'"
 msgstr "Не удалось выполнить рекурсивно для подмодуля по пути «$displaypath»"
 
-#: git-submodule.sh:830
-msgid "The --cached option cannot be used with the --files option"
-msgstr "Опцию --cached нельзя использовать одновременно с опцией --files"
-
-#: git-submodule.sh:882
-#, sh-format
-msgid "unexpected mode $mod_dst"
-msgstr "неизвестный режим $mod_dst"
-
-#: git-submodule.sh:902
-#, sh-format
-msgid "  Warn: $display_name doesn't contain commit $sha1_src"
-msgstr "  Предупреждение: $display_name не содержит коммит $sha1_src"
-
-#: git-submodule.sh:905
-#, sh-format
-msgid "  Warn: $display_name doesn't contain commit $sha1_dst"
-msgstr "  Предупреждение: $display_name не содержит коммит $sha1_dst"
+#: git-rebase--preserve-merges.sh:109
+msgid "Applied autostash."
+msgstr "Применены автоматически спрятанные изменения."
 
-#: git-submodule.sh:908
+#: git-rebase--preserve-merges.sh:112
 #, sh-format
-msgid "  Warn: $display_name doesn't contain commits $sha1_src and $sha1_dst"
-msgstr "  Предупреждение: $display_name не содержит коммиты $sha1_src и $sha1_dst"
+msgid "Cannot store $stash_sha1"
+msgstr "Не удалось сохранить $stash_sha1"
 
-#: git-parse-remote.sh:89
-#, sh-format
-msgid "See git-${cmd}(1) for details."
-msgstr "Для дополнительной информации, смотрите git-${cmd}(1)."
+#: git-rebase--preserve-merges.sh:113
+msgid ""
+"Applying autostash resulted in conflicts.\n"
+"Your changes are safe in the stash.\n"
+"You can run \"git stash pop\" or \"git stash drop\" at any time.\n"
+msgstr "Применение автоматически спрятанных изменений вызвало конфликты.\nВаши изменения спрятаны и в безопасности.\nВы можете выполнить «git stash pop» или «git stash drop» в любой момент.\n"
 
-#: git-rebase--preserve-merges.sh:136
+#: git-rebase--preserve-merges.sh:191
 #, sh-format
 msgid "Rebasing ($new_count/$total)"
 msgstr "Перемещение ($new_count/$total)"
 
-#: git-rebase--preserve-merges.sh:152
+#: git-rebase--preserve-merges.sh:197
 msgid ""
 "\n"
 "Commands:\n"
@@ -20652,7 +23054,7 @@ msgid ""
 "These lines can be re-ordered; they are executed from top to bottom.\n"
 msgstr "\nКоманды:\np, pick <коммит> = использовать коммит\nr, reword <коммит> = использовать коммит, но изменить сообщение коммита\ne, edit <коммит> = использовать коммит, но остановиться для исправления\ns, squash <коммит> = использовать коммит, но объединить с предыдущим коммитом\nf, fixup <коммит> = как «squash», но пропустить сообщение коммита\nx, exec <команда> = выполнить команду (остаток строки) с помощью командной оболочки\nd, drop <коммит> = удалить коммит\nl, label <метка> = дать имя текущему HEAD\nt, reset <метка> = сбросить HEAD к указанной метке\nm, merge [-C <коммит> | -c <коммит>] <метка> [# <строка>]\n. создать слияние используя сообщение коммита оригинального\n. слияния (или использовать указанную строку, если оригинальное\n. слияние не указано). Используйте -c <коммит> чтобы изменить\n. сообщение коммита.\n\nЭти строки можно перемещать; они будут выполнены сверху вниз.\n"
 
-#: git-rebase--preserve-merges.sh:215
+#: git-rebase--preserve-merges.sh:260
 #, sh-format
 msgid ""
 "You can amend the commit now, with\n"
@@ -20664,61 +23066,61 @@ msgid ""
 "\tgit rebase --continue"
 msgstr "Теперь вы можете исправить коммит с помощью\n\n\tgit commit --amend $gpg_sign_opt_quoted\n\nКак только вы будете довольны результатом, запустите\n\n\tgit rebase --continue"
 
-#: git-rebase--preserve-merges.sh:240
+#: git-rebase--preserve-merges.sh:285
 #, sh-format
 msgid "$sha1: not a commit that can be picked"
 msgstr "$sha1: не является коммитом, который можно взять"
 
-#: git-rebase--preserve-merges.sh:279
+#: git-rebase--preserve-merges.sh:324
 #, sh-format
 msgid "Invalid commit name: $sha1"
 msgstr "Недопустимое имя коммита: $sha1"
 
-#: git-rebase--preserve-merges.sh:309
+#: git-rebase--preserve-merges.sh:354
 msgid "Cannot write current commit's replacement sha1"
 msgstr "Не удалось записать замену sha1 текущего коммита"
 
-#: git-rebase--preserve-merges.sh:360
+#: git-rebase--preserve-merges.sh:405
 #, sh-format
 msgid "Fast-forward to $sha1"
 msgstr "Перемотка вперед до $sha1"
 
-#: git-rebase--preserve-merges.sh:362
+#: git-rebase--preserve-merges.sh:407
 #, sh-format
 msgid "Cannot fast-forward to $sha1"
 msgstr "Не удалось перемотать вперед до $sha1"
 
-#: git-rebase--preserve-merges.sh:371
+#: git-rebase--preserve-merges.sh:416
 #, sh-format
 msgid "Cannot move HEAD to $first_parent"
 msgstr "Не удалось переместить HEAD на $first_parent"
 
-#: git-rebase--preserve-merges.sh:376
+#: git-rebase--preserve-merges.sh:421
 #, sh-format
 msgid "Refusing to squash a merge: $sha1"
 msgstr "Нельзя уплотнить слияние: $sha1"
 
-#: git-rebase--preserve-merges.sh:394
+#: git-rebase--preserve-merges.sh:439
 #, sh-format
 msgid "Error redoing merge $sha1"
 msgstr "Ошибка при повторении слияния $sha1"
 
-#: git-rebase--preserve-merges.sh:403
+#: git-rebase--preserve-merges.sh:448
 #, sh-format
 msgid "Could not pick $sha1"
 msgstr "Не удалось взять $sha1"
 
-#: git-rebase--preserve-merges.sh:412
+#: git-rebase--preserve-merges.sh:457
 #, sh-format
 msgid "This is the commit message #${n}:"
 msgstr "Это сообщение коммита номер #${n}:"
 
-#: git-rebase--preserve-merges.sh:417
+#: git-rebase--preserve-merges.sh:462
 #, sh-format
 msgid "The commit message #${n} will be skipped:"
 msgstr "Сообщение коммита номер #${n} будет пропущено:"
 
-#: git-rebase--preserve-merges.sh:428
+#: git-rebase--preserve-merges.sh:473
 #, sh-format
 msgid "This is a combination of $count commit."
 msgid_plural "This is a combination of $count commits."
@@ -20727,22 +23129,22 @@ msgstr[1] "Это объединение $count коммитов"
 msgstr[2] "Это объединение $count коммитов"
 msgstr[3] "Это объединение $count коммитов"
 
-#: git-rebase--preserve-merges.sh:437
+#: git-rebase--preserve-merges.sh:482
 #, sh-format
 msgid "Cannot write $fixup_msg"
 msgstr "Не удалось записать $fixup_msg"
 
-#: git-rebase--preserve-merges.sh:440
+#: git-rebase--preserve-merges.sh:485
 msgid "This is a combination of 2 commits."
 msgstr "Это объединение 2 коммитов"
 
-#: git-rebase--preserve-merges.sh:481 git-rebase--preserve-merges.sh:524
-#: git-rebase--preserve-merges.sh:527
+#: git-rebase--preserve-merges.sh:526 git-rebase--preserve-merges.sh:569
+#: git-rebase--preserve-merges.sh:572
 #, sh-format
 msgid "Could not apply $sha1... $rest"
 msgstr "Не удалось применить $sha1… $rest"
 
-#: git-rebase--preserve-merges.sh:556
+#: git-rebase--preserve-merges.sh:601
 #, sh-format
 msgid ""
 "Could not amend commit after successfully picking $sha1... $rest\n"
@@ -20751,31 +23153,31 @@ msgid ""
 "you are able to reword the commit."
 msgstr "Не удалось исправить коммит после успешного перехода на $sha1… $rest\nЭто произошло, скорее всего, из-за пустого сообщения коммита или из-за перехватчика перед коммитом. Если же это произошло из-за перехватчика перед коммитом, то вам нужно решить с ним проблему и повторить попытку снова."
 
-#: git-rebase--preserve-merges.sh:571
+#: git-rebase--preserve-merges.sh:616
 #, sh-format
 msgid "Stopped at $sha1_abbrev... $rest"
 msgstr "Остановлено на $sha1_abbrev… $rest"
 
-#: git-rebase--preserve-merges.sh:586
+#: git-rebase--preserve-merges.sh:631
 #, sh-format
 msgid "Cannot '$squash_style' without a previous commit"
 msgstr "Нельзя сделать «$squash_style» без указания предыдущего коммита"
 
-#: git-rebase--preserve-merges.sh:628
+#: git-rebase--preserve-merges.sh:673
 #, sh-format
 msgid "Executing: $rest"
 msgstr "Выполнение: $rest"
 
-#: git-rebase--preserve-merges.sh:636
+#: git-rebase--preserve-merges.sh:681
 #, sh-format
 msgid "Execution failed: $rest"
 msgstr "Не удалось выполнить: $rest"
 
-#: git-rebase--preserve-merges.sh:638
+#: git-rebase--preserve-merges.sh:683
 msgid "and made changes to the index and/or the working tree"
 msgstr "и были сделаны изменения в индексе и/или в рабочем каталоге"
 
-#: git-rebase--preserve-merges.sh:640
+#: git-rebase--preserve-merges.sh:685
 msgid ""
 "You can fix the problem, and then run\n"
 "\n"
@@ -20783,7 +23185,7 @@ msgid ""
 msgstr "Вы можете исправить ошибку, а затем запустить\n\n\tgit rebase --continue"
 
 #. TRANSLATORS: after these lines is a command to be issued by the user
-#: git-rebase--preserve-merges.sh:653
+#: git-rebase--preserve-merges.sh:698
 #, sh-format
 msgid ""
 "Execution succeeded: $rest\n"
@@ -20793,25 +23195,25 @@ msgid ""
 "\tgit rebase --continue"
 msgstr "Успешное выполнение: $rest\nно остались изменения в индексе и/или в рабочем каталоге\nСделайте коммит или спрячьте ваши изменения, а затем выполните\n\n\tgit rebase --continue"
 
-#: git-rebase--preserve-merges.sh:664
+#: git-rebase--preserve-merges.sh:709
 #, sh-format
 msgid "Unknown command: $command $sha1 $rest"
 msgstr "Неопознанная команда: $command $sha1 $rest"
 
-#: git-rebase--preserve-merges.sh:665
+#: git-rebase--preserve-merges.sh:710
 msgid "Please fix this using 'git rebase --edit-todo'."
 msgstr "Пожалуйста исправьте это с помощью «git rebase --edit-todo»."
 
-#: git-rebase--preserve-merges.sh:700
+#: git-rebase--preserve-merges.sh:745
 #, sh-format
 msgid "Successfully rebased and updated $head_name."
 msgstr "Успешно перемещён и обновлён $head_name."
 
-#: git-rebase--preserve-merges.sh:757
+#: git-rebase--preserve-merges.sh:802
 msgid "Could not remove CHERRY_PICK_HEAD"
 msgstr "Не удалось удалить CHERRY_PICK_HEAD"
 
-#: git-rebase--preserve-merges.sh:762
+#: git-rebase--preserve-merges.sh:807
 #, sh-format
 msgid ""
 "You have staged changes in your working tree.\n"
@@ -20829,43 +23231,43 @@ msgid ""
 "  git rebase --continue\n"
 msgstr "У вас имеются проиндексированные изменения в рабочем каталоге.\nЕсли эти изменения должны быть объеденены с предыдущим коммитом, то запустите:\n\n  git commit --amend $gpg_sign_opt_quoted\n\nЕсли же они должны быть помещены в новый коммит, то запустите:\n\n  git commit $gpg_sign_opt_quoted\n\nВ любом случае, после того как вы закончите, продолжить перемещение можно выполнив:\n\n  git rebase --continue\n"
 
-#: git-rebase--preserve-merges.sh:779
+#: git-rebase--preserve-merges.sh:824
 msgid "Error trying to find the author identity to amend commit"
 msgstr "Произошла ошибка при поиске автора для исправления коммита"
 
-#: git-rebase--preserve-merges.sh:784
+#: git-rebase--preserve-merges.sh:829
 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--preserve-merges.sh:789 git-rebase--preserve-merges.sh:793
+#: git-rebase--preserve-merges.sh:834 git-rebase--preserve-merges.sh:838
 msgid "Could not commit staged changes."
 msgstr "Не удалось закоммитить проиндексированные изменения."
 
-#: git-rebase--preserve-merges.sh:824 git-rebase--preserve-merges.sh:910
+#: git-rebase--preserve-merges.sh:869 git-rebase--preserve-merges.sh:955
 msgid "Could not execute editor"
 msgstr "Не удалось запустить редактор"
 
-#: git-rebase--preserve-merges.sh:845
+#: git-rebase--preserve-merges.sh:890
 #, sh-format
 msgid "Could not checkout $switch_to"
 msgstr "Не удалось перейти на версию $switch_to"
 
-#: git-rebase--preserve-merges.sh:852
+#: git-rebase--preserve-merges.sh:897
 msgid "No HEAD?"
 msgstr "Нет указателя HEAD?"
 
-#: git-rebase--preserve-merges.sh:853
+#: git-rebase--preserve-merges.sh:898
 #, sh-format
 msgid "Could not create temporary $state_dir"
 msgstr "Не удалось создать временный каталог $state_dir"
 
-#: git-rebase--preserve-merges.sh:856
+#: git-rebase--preserve-merges.sh:901
 msgid "Could not mark as interactive"
 msgstr "Не удалось пометить как интерактивный"
 
-#: git-rebase--preserve-merges.sh:888
+#: git-rebase--preserve-merges.sh:933
 #, sh-format
 msgid "Rebase $shortrevisions onto $shortonto ($todocount command)"
 msgid_plural "Rebase $shortrevisions onto $shortonto ($todocount commands)"
@@ -20874,7 +23276,11 @@ msgstr[1] "Перемещение $shortrevisions над $shortonto ($todocount
 msgstr[2] "Перемещение $shortrevisions над $shortonto ($todocount команд)"
 msgstr[3] "Перемещение $shortrevisions над $shortonto ($todocount команд)"
 
-#: git-rebase--preserve-merges.sh:942 git-rebase--preserve-merges.sh:947
+#: git-rebase--preserve-merges.sh:945
+msgid "Note that empty commits are commented out"
+msgstr "Заметьте, что пустые коммиты закомментированны"
+
+#: git-rebase--preserve-merges.sh:987 git-rebase--preserve-merges.sh:992
 msgid "Could not init rewritten commits"
 msgstr "Не удалось инициализировать перезаписанные коммиты"
 
@@ -20936,59 +23342,12 @@ msgid "Unable to determine absolute path of git directory"
 msgstr "Не удалось определить абсолютный путь к каталогу git"
 
 #. TRANSLATORS: you can adjust this to align "git add -i" status menu
-#: git-add--interactive.perl:196
+#: git-add--interactive.perl:212
 #, perl-format
 msgid "%12s %12s %s"
 msgstr "%12s %12s %s"
 
-#: git-add--interactive.perl:197
-msgid "staged"
-msgstr "в индексе"
-
-#: git-add--interactive.perl:197
-msgid "unstaged"
-msgstr "не в индексе"
-
-#: git-add--interactive.perl:253 git-add--interactive.perl:278
-msgid "binary"
-msgstr "двоичный"
-
-#: git-add--interactive.perl:262 git-add--interactive.perl:316
-msgid "nothing"
-msgstr "ничего"
-
-#: git-add--interactive.perl:298 git-add--interactive.perl:313
-msgid "unchanged"
-msgstr "нет изменений"
-
-#: 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"
-msgstr[2] "добавлено %d путей\n"
-msgstr[3] "добавлено %d пути\n"
-
-#: 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"
-msgstr[2] "обновлено %d путей\n"
-msgstr[3] "обновлено %d пути\n"
-
-#: 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"
-msgstr[2] "обращены изменения %d путей\n"
-msgstr[3] "обращены изменения %d путей\n"
-
-#: git-add--interactive.perl:618
+#: git-add--interactive.perl:632
 #, perl-format
 msgid "touched %d path\n"
 msgid_plural "touched %d paths\n"
@@ -20997,67 +23356,44 @@ msgstr[1] "тронуты %d пути\n"
 msgstr[2] "тронуты %d путей\n"
 msgstr[3] "тронуты %d пути\n"
 
-#: git-add--interactive.perl:627
-msgid "Update"
-msgstr "Обновить"
-
-#: git-add--interactive.perl:639
-msgid "Revert"
-msgstr "Обратить изменения"
-
-#: git-add--interactive.perl:662
-#, perl-format
-msgid "note: %s is untracked now.\n"
-msgstr "примечание: %s теперь неотслеживаемый.\n"
-
-#: git-add--interactive.perl:673
-msgid "Add untracked"
-msgstr "Добавить неотслеживаемый"
-
-#: git-add--interactive.perl:679
-msgid "No untracked files.\n"
-msgstr "Нет неотслеживаемых файлов.\n"
-
-#: git-add--interactive.perl:1033
+#: git-add--interactive.perl:1056
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for staging."
 msgstr "Если патч применяется без ошибок, то изменённый блок будет сразу помечен для индексирования."
 
-#: git-add--interactive.perl:1036
+#: git-add--interactive.perl:1059
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for stashing."
 msgstr "Если патч применяется без ошибок, то изменённый блок будет сразу помечен для прятанья."
 
-#: git-add--interactive.perl:1039
+#: git-add--interactive.perl:1062
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for unstaging."
 msgstr "Если патч применяется без ошибок, то изменённый блок будет сразу помечен для убирания из индекса."
 
-#: git-add--interactive.perl:1042 git-add--interactive.perl:1051
+#: git-add--interactive.perl:1065 git-add--interactive.perl:1074
+#: git-add--interactive.perl:1080
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for applying."
 msgstr "Если патч применяется без ошибок, то изменённый блок будет сразу помечен для применения."
 
-#: git-add--interactive.perl:1045 git-add--interactive.perl:1048
+#: git-add--interactive.perl:1068 git-add--interactive.perl:1071
+#: git-add--interactive.perl:1077
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for discarding."
 msgstr "Если патч применяется без ошибок, то изменённый блок будет сразу помечен для отмены изменений."
 
-#: git-add--interactive.perl:1085
+#: git-add--interactive.perl:1114
 #, perl-format
 msgid "failed to open hunk edit file for writing: %s"
 msgstr "не удалось открыть файл редактирования блока изменений для записи: %s"
 
-#: git-add--interactive.perl:1086
-msgid "Manual hunk edit mode -- see bottom for a quick guide.\n"
-msgstr "Ручной режим редактирования блока изменений — смотрите ниже для небольшого руководства.\n"
-
-#: git-add--interactive.perl:1092
+#: git-add--interactive.perl:1121
 #, perl-format
 msgid ""
 "---\n"
@@ -21066,32 +23402,12 @@ msgid ""
 "Lines starting with %s will be removed.\n"
 msgstr "---\nЧтобы удалить «%s» строки, сделайте их ' ' строками (контекст).\nЧтобы удалить «%s» строки, удалите их.\nСтроки, начинающиеся с %s будут удалены.\n"
 
-#. TRANSLATORS: 'it' refers to the patch mentioned in the previous messages.
-#: 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 "Если патч не применяется без ошибок, вам будет дана\nвозможность изменить его снова. Если все строки блока\nизменений удалены, то редактирование будет отменено\nи блок останется без изменений.\n"
-
-#: git-add--interactive.perl:1114
+#: git-add--interactive.perl:1143
 #, perl-format
 msgid "failed to open hunk edit file for reading: %s"
 msgstr "не удалось открыть файл редактирования блока изменений для чтения: %s"
 
-#. TRANSLATORS: do not translate [y/n]
-#. The program will only accept that input
-#. at this point.
-#. 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:1213
-msgid ""
-"Your edited hunk does not apply. Edit again (saying \"no\" discards!) [y/n]?"
-" "
-msgstr "Изменённый вами блок не применяется. Редактировать снова (ответ «y» означает «нет»!) [y/n]? "
-
-#: git-add--interactive.perl:1222
+#: git-add--interactive.perl:1251
 msgid ""
 "y - stage this hunk\n"
 "n - do not stage this hunk\n"
@@ -21100,7 +23416,7 @@ msgid ""
 "d - do not stage this hunk or any of the later hunks in the file"
 msgstr "y - проиндексировать блок изменений\nn - не индексировать этот блок изменений\nq - выход; не индексировать этот и последующие блоки\na - проиндексировать этот и все последующие блоки файла\nd - не индексировать этот и последующие блоки файла"
 
-#: git-add--interactive.perl:1228
+#: git-add--interactive.perl:1257
 msgid ""
 "y - stash this hunk\n"
 "n - do not stash this hunk\n"
@@ -21109,7 +23425,7 @@ msgid ""
 "d - do not stash this hunk or any of the later hunks in the file"
 msgstr "y - спрятать изменения блока\nq - выход; не прятать изменения этого и последующих блоков\na - спрятать этот и все последующие блоки файла\nd - не прятать этот и последующие блоки файла"
 
-#: git-add--interactive.perl:1234
+#: git-add--interactive.perl:1263
 msgid ""
 "y - unstage this hunk\n"
 "n - do not unstage this hunk\n"
@@ -21118,7 +23434,7 @@ msgid ""
 "d - do not unstage this hunk or any of the later hunks in the file"
 msgstr "y - убрать из индекса этот блок изменений\nn - не убирать из индекса этот блок изменений\nq - выход; не убирать из индекса этот и последующие блоки\na - убрать из индекса этот и все последующие блоки файла\nd - не убирать из индекса этот и последующие блоки файла"
 
-#: git-add--interactive.perl:1240
+#: git-add--interactive.perl:1269
 msgid ""
 "y - apply this hunk to index\n"
 "n - do not apply this hunk to index\n"
@@ -21127,7 +23443,7 @@ msgid ""
 "d - do not apply this hunk or any of the later hunks in the file"
 msgstr "y - применить блок изменений к индексу\nn - не применять этот блок изменений к индексу\nq - выход; не применять этот и последующие блоки\na - применить этот блок и все последующие блоки файла\nd - не применять этот и последующие блоки файла"
 
-#: git-add--interactive.perl:1246
+#: git-add--interactive.perl:1275 git-add--interactive.perl:1293
 msgid ""
 "y - discard this hunk from worktree\n"
 "n - do not discard this hunk from worktree\n"
@@ -21136,7 +23452,7 @@ msgid ""
 "d - do not discard this hunk or any of the later hunks in the file"
 msgstr "y - отменить изменения этого блока в рабочем каталоге\nn - не отменять изменения этого блока в рабочем каталоге\nq - выход; не отменять изменения этого блока и всех последующих\na - отменить изменения этого и всех последующих блоков файла\nd - не отменять изменения этого и всех последующих блоков файла"
 
-#: git-add--interactive.perl:1252
+#: git-add--interactive.perl:1281
 msgid ""
 "y - discard this hunk from index and worktree\n"
 "n - do not discard this hunk from index and worktree\n"
@@ -21145,7 +23461,7 @@ msgid ""
 "d - do not discard this hunk or any of the later hunks in the file"
 msgstr "y - отменить изменения этого блока в индексе и рабочем каталоге\nn - не отменять изменения этого блока в индексе и рабочем каталоге\nq - выход; не отменять изменения этого блока и всех последующих\na - отменить изменения этого и всех последующих блоков файла\nd - не отменять изменения этого и всех последующих блоков файла"
 
-#: git-add--interactive.perl:1258
+#: git-add--interactive.perl:1287
 msgid ""
 "y - apply this hunk to index and worktree\n"
 "n - do not apply this hunk to index and worktree\n"
@@ -21154,7 +23470,16 @@ msgid ""
 "d - do not apply this hunk or any of the later hunks in the file"
 msgstr "y - применить блок изменений к индексу и рабочему каталогу\nn - не применять этот блок изменений к индексу и рабочему каталогу\nq - выход; не применять этот и последующие блоки\na - применить этот блок и все последующие блоки файла\nd - не применять этот и последующие блоки файла"
 
-#: git-add--interactive.perl:1273
+#: git-add--interactive.perl:1299
+msgid ""
+"y - apply this hunk to worktree\n"
+"n - do not apply this hunk to worktree\n"
+"q - quit; do not apply this hunk or any of the remaining ones\n"
+"a - apply this hunk and all later hunks in the file\n"
+"d - do not apply this hunk or any of the later hunks in the file"
+msgstr ""
+
+#: git-add--interactive.perl:1314
 msgid ""
 "g - select a hunk to go to\n"
 "/ - search for a hunk matching the given regex\n"
@@ -21167,158 +23492,45 @@ msgid ""
 "? - print help\n"
 msgstr "g - выбрать блок изменений на который нужно перейти\n/ - поиск блока изменений с помощью регулярного выражения\nj - не принимать решение по этому блоку, перейти на следующий без решения\nJ - не принимать решение по этому блоку, перейти на следующий\nk - не принимать решение по этому блоку, перейти на предыдущий без решения\nK - не принимать решение по этому блоку, перейти на предыдущий\ns - разделить текущий блок на блоки меньшего размера\ne - вручную отредактировать текущий блок\n? - вывести справку\n"
 
-#: git-add--interactive.perl:1304
+#: git-add--interactive.perl:1345
 msgid "The selected hunks do not apply to the index!\n"
 msgstr "Выбранные блоки не применяются без ошибок к индексу!\n"
 
-#: git-add--interactive.perl:1305
-msgid "Apply them to the worktree anyway? "
-msgstr "Все равно применить их к рабочему каталогу?"
-
-#: git-add--interactive.perl:1308
-msgid "Nothing was applied.\n"
-msgstr "Ничего не применено.\n"
-
-#: git-add--interactive.perl:1319
+#: git-add--interactive.perl:1360
 #, perl-format
 msgid "ignoring unmerged: %s\n"
 msgstr "игнорирую не слитое: %s\n"
 
-#: git-add--interactive.perl:1328
-msgid "Only binary files changed.\n"
-msgstr "Только изменения двоичных файлов.\n"
-
-#: git-add--interactive.perl:1330
-msgid "No changes.\n"
-msgstr "Нет изменений.\n"
-
-#: git-add--interactive.perl:1338
-msgid "Patch update"
-msgstr "Обновление патча"
-
-#: 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:1391
-#, perl-format
-msgid "Stage deletion [y,n,q,a,d%s,?]? "
-msgstr "Проиндексировать удаление [y,n,q,a,d%s,?]? "
-
-#: 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:1395
-#, perl-format
-msgid "Stash mode change [y,n,q,a,d%s,?]? "
-msgstr "Спрятать изменение режима доступа [y,n,q,a,d%s,?]? "
-
-#: 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:1397
-#, perl-format
-msgid "Stash this hunk [y,n,q,a,d%s,?]? "
-msgstr "Спрятать этот блок изменений [y,n,q,a,d%s,?]? "
-
-#: 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:1401
-#, perl-format
-msgid "Unstage deletion [y,n,q,a,d%s,?]? "
-msgstr "Убрать удаление из индекса [y,n,q,a,d%s,?]? "
-
-#: 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: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: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: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: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: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: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: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: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:1417
+#: git-add--interactive.perl:1479
 #, perl-format
-msgid "Discard this hunk from index and worktree [y,n,q,a,d%s,?]? "
-msgstr "Отменить изменения этого блока в индексе и рабочем каталоге [y,n,q,a,d%s,?]? "
+msgid "Apply mode change to worktree [y,n,q,a,d%s,?]? "
+msgstr ""
 
-#: git-add--interactive.perl:1420
+#: git-add--interactive.perl:1480
 #, perl-format
-msgid "Apply mode change to index and worktree [y,n,q,a,d%s,?]? "
-msgstr "Применить изменения режима доступа к индексу и рабочему каталогу [y,n,q,a,d%s,?]? "
+msgid "Apply deletion to worktree [y,n,q,a,d%s,?]? "
+msgstr ""
 
-#: git-add--interactive.perl:1421
+#: git-add--interactive.perl:1481
 #, perl-format
-msgid "Apply deletion to index and worktree [y,n,q,a,d%s,?]? "
-msgstr "Применить удаление к индексу и рабочему каталогу [y,n,q,a,d%s,?]? "
+msgid "Apply addition to worktree [y,n,q,a,d%s,?]? "
+msgstr ""
 
-#: git-add--interactive.perl:1422
+#: git-add--interactive.perl:1482
 #, perl-format
-msgid "Apply this hunk to index and worktree [y,n,q,a,d%s,?]? "
-msgstr "Применить изменения этого блока к индексу и рабочему каталогу [y,n,q,a,d%s,?]? "
+msgid "Apply this hunk to worktree [y,n,q,a,d%s,?]? "
+msgstr ""
 
-#: git-add--interactive.perl:1522
+#: git-add--interactive.perl:1599
 msgid "No other hunks to goto\n"
 msgstr ""
 
-#: git-add--interactive.perl:1529
-msgid "go to which hunk (<ret> to see more)? "
-msgstr "на какой блок перейти (нажмите <ввод> чтобы увидеть еще)? "
-
-#: git-add--interactive.perl:1531
-msgid "go to which hunk? "
-msgstr "на какой блок перейти? "
-
-#: git-add--interactive.perl:1540
+#: git-add--interactive.perl:1617
 #, perl-format
 msgid "Invalid number: '%s'\n"
 msgstr "Неверный номер: «%s»\n"
 
-#: git-add--interactive.perl:1545
+#: git-add--interactive.perl:1622
 #, perl-format
 msgid "Sorry, only %d hunk available.\n"
 msgid_plural "Sorry, only %d hunks available.\n"
@@ -21327,36 +23539,32 @@ msgstr[1] "Простите, но только %d блока изменений
 msgstr[2] "Простите, но только %d блоков изменений доступно.\n"
 msgstr[3] "Простите, но только %d блока изменений доступно.\n"
 
-#: git-add--interactive.perl:1571
+#: git-add--interactive.perl:1657
 msgid "No other hunks to search\n"
 msgstr ""
 
-#: git-add--interactive.perl:1575
-msgid "search for regex? "
-msgstr "искать с помощью регулярного выражения? "
-
-#: git-add--interactive.perl:1588
+#: git-add--interactive.perl:1674
 #, perl-format
 msgid "Malformed search regexp %s: %s\n"
 msgstr "Регулярное выражение для поиска в неверном формате %s: %s\n"
 
-#: git-add--interactive.perl:1598
+#: git-add--interactive.perl:1684
 msgid "No hunk matches the given pattern\n"
 msgstr "Не найдены блоки, которые соответствуют указанному шаблону\n"
 
-#: git-add--interactive.perl:1610 git-add--interactive.perl:1632
+#: git-add--interactive.perl:1696 git-add--interactive.perl:1718
 msgid "No previous hunk\n"
 msgstr "Нет предыдущего блока\n"
 
-#: git-add--interactive.perl:1619 git-add--interactive.perl:1638
+#: git-add--interactive.perl:1705 git-add--interactive.perl:1724
 msgid "No next hunk\n"
 msgstr "Не следующего блока\n"
 
-#: git-add--interactive.perl:1644
+#: git-add--interactive.perl:1730
 msgid "Sorry, cannot split this hunk\n"
 msgstr ""
 
-#: git-add--interactive.perl:1650
+#: git-add--interactive.perl:1736
 #, perl-format
 msgid "Split into %d hunk.\n"
 msgid_plural "Split into %d hunks.\n"
@@ -21365,17 +23573,13 @@ msgstr[1] "Разбито на %d блока изменений.\n"
 msgstr[2] "Разбито на %d блоков изменений.\n"
 msgstr[3] "Разбито на %d блока изменений.\n"
 
-#: git-add--interactive.perl:1660
+#: git-add--interactive.perl:1746
 msgid "Sorry, cannot edit this hunk\n"
 msgstr ""
 
-#: 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:1725
+#: git-add--interactive.perl:1811
 msgid ""
 "status        - show paths with changes\n"
 "update        - add working tree state to the staged set of changes\n"
@@ -21385,18 +23589,19 @@ msgid ""
 "add untracked - add contents of untracked files to the staged set of changes\n"
 msgstr "status        - показать пути с изменениями\nupdate        - добавить состояние рабочего каталога индекс\nrevert        - вернуть проиндексированный набор изменений к HEAD версии\npatch         - выбрать и выборочно обновить блоки\ndiff          - просмотреть изменения между HEAD и индексом\nadd untracked - добавить содержимое неотслеживаемых файлов в индекс\n"
 
-#: 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
+#: git-add--interactive.perl:1828 git-add--interactive.perl:1840
+#: git-add--interactive.perl:1843 git-add--interactive.perl:1850
+#: git-add--interactive.perl:1853 git-add--interactive.perl:1860
+#: git-add--interactive.perl:1864 git-add--interactive.perl:1870
 msgid "missing --"
 msgstr "отсутствует --"
 
-#: git-add--interactive.perl:1763
+#: git-add--interactive.perl:1866
 #, perl-format
 msgid "unknown --patch mode: %s"
 msgstr "неизвестный режим для --patch: %s"
 
-#: git-add--interactive.perl:1769 git-add--interactive.perl:1775
+#: git-add--interactive.perl:1872 git-add--interactive.perl:1878
 #, perl-format
 msgid "invalid argument %s, expecting --"
 msgstr "недопустимый аргумент %s, ожидается --"
@@ -21409,65 +23614,72 @@ msgstr "локальный часовой пояс отличается от GMT
 msgid "local time offset greater than or equal to 24 hours\n"
 msgstr "локальный сдвиг времени больше или равен 24 часа\n"
 
-#: git-send-email.perl:219 git-send-email.perl:225
+#: git-send-email.perl:223 git-send-email.perl:229
 msgid "the editor exited uncleanly, aborting everything"
 msgstr "редактор был завершен с ошибкой, отменяю всё"
 
-#: git-send-email.perl:302
+#: git-send-email.perl:312
 #, perl-format
 msgid "'%s' contains an intermediate version of the email you were composing.\n"
 msgstr "«%s» содержит промежуточную версию письма, которое вы готовите.\n"
 
-#: git-send-email.perl:307
+#: git-send-email.perl:317
 #, perl-format
 msgid "'%s.final' contains the composed email.\n"
 msgstr "«%s.final» содержит подготовленное письмо.\n"
 
-#: git-send-email.perl:326
+#: git-send-email.perl:410
 msgid "--dump-aliases incompatible with other options\n"
 msgstr "--dump-aliases не совместимо с другими опциями\n"
 
-#: git-send-email.perl:395 git-send-email.perl:656
+#: git-send-email.perl:484
+msgid ""
+"fatal: found configuration options for 'sendmail'\n"
+"git-send-email is configured with the sendemail.* options - note the 'e'.\n"
+"Set sendemail.forbidSendmailVariables to false to disable this check.\n"
+msgstr ""
+
+#: git-send-email.perl:489 git-send-email.perl:691
 msgid "Cannot run git format-patch from outside a repository\n"
 msgstr "Нельзя запускать git format-patch вне репозитория\n"
 
-#: git-send-email.perl:398
+#: git-send-email.perl:492
 msgid ""
 "`batch-size` and `relogin` must be specified together (via command-line or "
 "configuration option)\n"
 msgstr ""
 
-#: git-send-email.perl:470
+#: git-send-email.perl:505
 #, perl-format
 msgid "Unknown --suppress-cc field: '%s'\n"
 msgstr "Неизвестное поле --suppress-cc: «%s»\n"
 
-#: git-send-email.perl:501
+#: git-send-email.perl:536
 #, perl-format
 msgid "Unknown --confirm setting: '%s'\n"
 msgstr "Неизвестный параметр --confirm: «%s»\n"
 
-#: git-send-email.perl:529
+#: git-send-email.perl:564
 #, perl-format
 msgid "warning: sendmail alias with quotes is not supported: %s\n"
 msgstr "предупреждение: сокращение для sendmail с кавычками не поддерживается: %s\n"
 
-#: git-send-email.perl:531
+#: git-send-email.perl:566
 #, perl-format
 msgid "warning: `:include:` not supported: %s\n"
 msgstr "предупреждение: «:include:» не поддерживается: %s\n"
 
-#: git-send-email.perl:533
+#: git-send-email.perl:568
 #, perl-format
 msgid "warning: `/file` or `|pipe` redirection not supported: %s\n"
 msgstr "предупреждение: перенаправление «/file» или «|pipe» не поддерживается: %s\n"
 
-#: git-send-email.perl:538
+#: git-send-email.perl:573
 #, perl-format
 msgid "warning: sendmail line is not recognized: %s\n"
 msgstr "предупреждение: строка sendmail не распознана: %s\n"
 
-#: git-send-email.perl:622
+#: git-send-email.perl:657
 #, perl-format
 msgid ""
 "File '%s' exists but it could also be the range of commits\n"
@@ -21477,36 +23689,36 @@ msgid ""
 "    * Giving --format-patch option if you mean a range.\n"
 msgstr "Файл «%s» существует, но это также может быть и\nдиапазоном коммитов для которых нужно сделать патчи. \nУстраните неоднозначность…\n\n    * Указав \"./%s\" если вы имеете в виду имя файла; или\n    * Передав опцию --format-patch если вы имеете в виду диапазон коммитов.\n"
 
-#: git-send-email.perl:643
+#: git-send-email.perl:678
 #, perl-format
 msgid "Failed to opendir %s: %s"
 msgstr "Не удалось выполнить opendir %s: %s"
 
-#: git-send-email.perl:667
+#: git-send-email.perl:702
 #, perl-format
 msgid ""
 "fatal: %s: %s\n"
 "warning: no patches were sent\n"
 msgstr "критическая ошибка: %s: %s\nпредупреждение: патчи не были отправлены\n"
 
-#: git-send-email.perl:678
+#: git-send-email.perl:713
 msgid ""
 "\n"
 "No patch files specified!\n"
 "\n"
 msgstr "\nФайл с патчем не указан!\n\n"
 
-#: git-send-email.perl:691
+#: git-send-email.perl:726
 #, perl-format
 msgid "No subject line in %s?"
 msgstr "Нет строки с темой в %s?"
 
-#: git-send-email.perl:701
+#: git-send-email.perl:736
 #, perl-format
 msgid "Failed to open for writing %s: %s"
 msgstr "Не удалось открыть для записи %s: %s"
 
-#: git-send-email.perl:712
+#: git-send-email.perl:747
 msgid ""
 "Lines beginning in \"GIT:\" will be removed.\n"
 "Consider including an overall diffstat or table of contents\n"
@@ -21515,37 +23727,37 @@ msgid ""
 "Clear the body content if you don't wish to send a summary.\n"
 msgstr "Строки, начинающиеся с «GIT:» будут удалены.\nВозможно будет полезно включить статистику добавлений\nи удалений или таблицу содержимого к создаваемому патчу.\n\nОчистите содержимое, если вы не хотите отправлять письмо со сводкой изменений.\n"
 
-#: git-send-email.perl:736
+#: git-send-email.perl:771
 #, perl-format
 msgid "Failed to open %s: %s"
 msgstr "Не удалось открыть %s: %s"
 
-#: git-send-email.perl:753
+#: git-send-email.perl:788
 #, perl-format
 msgid "Failed to open %s.final: %s"
 msgstr "Не удалось открыть %s.final: %s"
 
-#: git-send-email.perl:796
+#: git-send-email.perl:831
 msgid "Summary email is empty, skipping it\n"
 msgstr "Письмо со сводкой изменений пустое, попускаю его\n"
 
 #. TRANSLATORS: please keep [y/N] as is.
-#: git-send-email.perl:831
+#: git-send-email.perl:866
 #, perl-format
 msgid "Are you sure you want to use <%s> [y/N]? "
 msgstr "Вы уверены, что хотите использовать <%s> [y/N]? "
 
-#: git-send-email.perl:886
+#: git-send-email.perl:921
 msgid ""
 "The following files are 8bit, but do not declare a Content-Transfer-"
 "Encoding.\n"
 msgstr "Следующие файлы 8 битные, но не содержат Content-Transfer-Encoding.\n"
 
-#: git-send-email.perl:891
+#: git-send-email.perl:926
 msgid "Which 8bit encoding should I declare [UTF-8]? "
 msgstr "Какую 8 битную кодировку нужно указать [UTF-8]? "
 
-#: git-send-email.perl:899
+#: git-send-email.perl:934
 #, perl-format
 msgid ""
 "Refusing to send because the patch\n"
@@ -21553,20 +23765,20 @@ msgid ""
 "has the template subject '*** SUBJECT HERE ***'. Pass --force if you really want to send.\n"
 msgstr "Отказываюсь отправить, т.к. патч\n\t%s\nсодержит шаблонный заголовок «*** SUBJECT HERE ***». Укажите параметр --force, если вы  действительно хотите отправить его.\n"
 
-#: git-send-email.perl:918
+#: git-send-email.perl:953
 msgid "To whom should the emails be sent (if anyone)?"
 msgstr "Кому должны быть отправлены письма (если нужно)?"
 
-#: git-send-email.perl:936
+#: git-send-email.perl:971
 #, perl-format
 msgid "fatal: alias '%s' expands to itself\n"
 msgstr "критическая ошибка: сокращение «%s» раскрывается само в себя\n"
 
-#: git-send-email.perl:948
+#: git-send-email.perl:983
 msgid "Message-ID to be used as In-Reply-To for the first email (if any)? "
 msgstr "Message-ID который нужно использовать в поле In-Reply-To для первого письма (если нужно)? "
 
-#: git-send-email.perl:1006 git-send-email.perl:1014
+#: git-send-email.perl:1041 git-send-email.perl:1049
 #, perl-format
 msgid "error: unable to extract a valid address from: %s\n"
 msgstr "ошибка: не удалось выделить действительный адрес из: %s\n"
@@ -21574,16 +23786,16 @@ msgstr "ошибка: не удалось выделить действител
 #. TRANSLATORS: Make sure to include [q] [d] [e] in your
 #. translation. The program will only accept English input
 #. at this point.
-#: git-send-email.perl:1018
+#: git-send-email.perl:1053
 msgid "What to do with this address? ([q]uit|[d]rop|[e]dit): "
 msgstr "Что нужно сделать с этим адресом? ([q] - выход|[d] - отбросить|[e] - редактировать): "
 
-#: git-send-email.perl:1335
+#: git-send-email.perl:1370
 #, perl-format
 msgid "CA path \"%s\" does not exist"
 msgstr "путь CA «%s» не существует"
 
-#: git-send-email.perl:1418
+#: git-send-email.perl:1453
 msgid ""
 "    The Cc list above has been expanded by additional\n"
 "    addresses found in the patch commit message. By default\n"
@@ -21600,128 +23812,128 @@ msgstr "    Список Cc (получателей копии письма) б
 #. 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:1433
+#: git-send-email.perl:1468
 msgid "Send this email? ([y]es|[n]o|[e]dit|[q]uit|[a]ll): "
 msgstr "Отправить это письмо? ([y] - да|[n] - нет|[e] - изменить|[q] - выход|[a] - все): "
 
-#: git-send-email.perl:1436
+#: git-send-email.perl:1471
 msgid "Send this email reply required"
 msgstr "Отправка этого ответа на письмо обязательна"
 
-#: git-send-email.perl:1464
+#: git-send-email.perl:1499
 msgid "The required SMTP server is not properly defined."
 msgstr "Требуемый SMTP сервер не был правильно объявлен."
 
-#: git-send-email.perl:1511
+#: git-send-email.perl:1546
 #, perl-format
 msgid "Server does not support STARTTLS! %s"
 msgstr "Сервер не поддерживает STARTTLS! %s"
 
-#: git-send-email.perl:1516 git-send-email.perl:1520
+#: git-send-email.perl:1551 git-send-email.perl:1555
 #, perl-format
 msgid "STARTTLS failed! %s"
 msgstr "Ошибка STARTTLS! %s"
 
-#: git-send-email.perl:1529
+#: git-send-email.perl:1564
 msgid "Unable to initialize SMTP properly. Check config and use --smtp-debug."
 msgstr "Не удалось инициализировать SMTP. Проверьте ваши настройки и попробуйте запустить в параметром --smtp-debug."
 
-#: git-send-email.perl:1547
+#: git-send-email.perl:1582
 #, perl-format
 msgid "Failed to send %s\n"
 msgstr "Не удалось отправить %s\n"
 
-#: git-send-email.perl:1550
+#: git-send-email.perl:1585
 #, perl-format
 msgid "Dry-Sent %s\n"
 msgstr "Имитация отправки %s\n"
 
-#: git-send-email.perl:1550
+#: git-send-email.perl:1585
 #, perl-format
 msgid "Sent %s\n"
 msgstr "Отправлено %s\n"
 
-#: git-send-email.perl:1552
+#: git-send-email.perl:1587
 msgid "Dry-OK. Log says:\n"
 msgstr "Имитация OK. Журнал содержит:\n"
 
-#: git-send-email.perl:1552
+#: git-send-email.perl:1587
 msgid "OK. Log says:\n"
 msgstr "OK. Журнал содержит:\n"
 
-#: git-send-email.perl:1564
+#: git-send-email.perl:1599
 msgid "Result: "
 msgstr "Результат: "
 
-#: git-send-email.perl:1567
+#: git-send-email.perl:1602
 msgid "Result: OK\n"
 msgstr "Результат: OK\n"
 
-#: git-send-email.perl:1585
+#: git-send-email.perl:1620
 #, perl-format
 msgid "can't open file %s"
 msgstr "не удалось открыть файл %s"
 
-#: git-send-email.perl:1632 git-send-email.perl:1652
+#: git-send-email.perl:1667 git-send-email.perl:1687
 #, perl-format
 msgid "(mbox) Adding cc: %s from line '%s'\n"
 msgstr "(mbox) Добавление cc: %s со строки «%s»\n"
 
-#: git-send-email.perl:1638
+#: git-send-email.perl:1673
 #, perl-format
 msgid "(mbox) Adding to: %s from line '%s'\n"
 msgstr "(mbox) Добавление to: %s со строки «%s»\n"
 
-#: git-send-email.perl:1691
+#: git-send-email.perl:1730
 #, perl-format
 msgid "(non-mbox) Adding cc: %s from line '%s'\n"
 msgstr "(non-mbox) Добавление cc: %s со строки «%s»\n"
 
-#: git-send-email.perl:1726
+#: git-send-email.perl:1765
 #, perl-format
 msgid "(body) Adding cc: %s from line '%s'\n"
 msgstr "(body) Добавление cc: %s со строки «%s»\n"
 
-#: git-send-email.perl:1837
+#: git-send-email.perl:1876
 #, perl-format
 msgid "(%s) Could not execute '%s'"
 msgstr "(%s) Не удалось выполнить «%s»"
 
-#: git-send-email.perl:1844
+#: git-send-email.perl:1883
 #, perl-format
 msgid "(%s) Adding %s: %s from: '%s'\n"
 msgstr "(%s) Добавление %s: %s из: «%s»\n"
 
-#: git-send-email.perl:1848
+#: git-send-email.perl:1887
 #, perl-format
 msgid "(%s) failed to close pipe to '%s'"
 msgstr "(%s) не удалось закрыть поток к «%s»"
 
-#: git-send-email.perl:1878
+#: git-send-email.perl:1917
 msgid "cannot send message as 7bit"
 msgstr "не удалось отправить сообщение в 7 битной кодировке"
 
-#: git-send-email.perl:1886
+#: git-send-email.perl:1925
 msgid "invalid transfer encoding"
 msgstr "недопустимая кодировка передачи"
 
-#: git-send-email.perl:1927 git-send-email.perl:1979 git-send-email.perl:1989
+#: git-send-email.perl:1966 git-send-email.perl:2018 git-send-email.perl:2028
 #, perl-format
 msgid "unable to open %s: %s\n"
 msgstr "не удалось открыть %s: %s\n"
 
-#: git-send-email.perl:1930
+#: git-send-email.perl:1969
 #, perl-format
 msgid "%s: patch contains a line longer than 998 characters"
 msgstr "%s: патч содержит строку длиннее чем 998 символов"
 
-#: git-send-email.perl:1947
+#: git-send-email.perl:1986
 #, 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:1951
+#: git-send-email.perl:1990
 #, perl-format
 msgid "Do you really want to send %s? [y|N]: "
-msgstr "Вы действительно хотите отправить %s? [y - да|N - нет]: "
+msgstr "Вы действительно хотите отправить %s? [y] - да, [N] - нет: "
index f7766d72e53de6ecb3978959747574ccb8352607..7270baecbcb6fd4ef2c54a985ff48ab322eea30b 100644 (file)
--- a/po/sv.po
+++ b/po/sv.po
@@ -1,14 +1,14 @@
 # Swedish translations for Git.
-# Copyright (C) 2010-2020 Peter Krefting <peter@softwolves.pp.se>
+# Copyright (C) 2010-2021 Peter Krefting <peter@softwolves.pp.se>
 # This file is distributed under the same license as the Git package.
-# Peter Krefting <peter@softwolves.pp.se>, 2010-2020.
+# Peter Krefting <peter@softwolves.pp.se>, 2010-2021.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: git 2.30.0\n"
+"Project-Id-Version: git 2.31.0\n"
 "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2020-12-21 07:10+0800\n"
-"PO-Revision-Date: 2020-12-21 08:08+0100\n"
+"POT-Creation-Date: 2021-03-04 22:41+0800\n"
+"PO-Revision-Date: 2021-03-04 19:06+0100\n"
 "Last-Translator: Peter Krefting <peter@softwolves.pp.se>\n"
 "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
 "Language: sv\n"
@@ -23,9 +23,9 @@ msgstr ""
 msgid "Huh (%s)?"
 msgstr "Vadå (%s)?"
 
-#: add-interactive.c:529 add-interactive.c:830 reset.c:65 sequencer.c:3284
-#: sequencer.c:3735 sequencer.c:3890 builtin/rebase.c:1532
-#: builtin/rebase.c:1955
+#: add-interactive.c:529 add-interactive.c:830 reset.c:65 sequencer.c:3292
+#: sequencer.c:3743 sequencer.c:3898 builtin/rebase.c:1538
+#: builtin/rebase.c:1963
 msgid "could not read index"
 msgstr "kunde inte läsa indexet"
 
@@ -53,7 +53,7 @@ msgstr "Uppdatera"
 msgid "could not stage '%s'"
 msgstr "kunde inte köa \"%s\""
 
-#: add-interactive.c:703 add-interactive.c:892 reset.c:89 sequencer.c:3478
+#: add-interactive.c:703 add-interactive.c:892 reset.c:89 sequencer.c:3486
 msgid "could not write index"
 msgstr "kunde inte skriva indexet"
 
@@ -211,7 +211,7 @@ msgstr "ej köad"
 
 #: add-interactive.c:1144 apply.c:4987 apply.c:4990 builtin/am.c:2257
 #: builtin/am.c:2260 builtin/bugreport.c:134 builtin/clone.c:124
-#: builtin/fetch.c:147 builtin/merge.c:284 builtin/pull.c:190
+#: builtin/fetch.c:150 builtin/merge.c:285 builtin/pull.c:190
 #: builtin/submodule--helper.c:409 builtin/submodule--helper.c:1818
 #: builtin/submodule--helper.c:1821 builtin/submodule--helper.c:2326
 #: builtin/submodule--helper.c:2329 builtin/submodule--helper.c:2572
@@ -797,7 +797,7 @@ msgstr ""
 msgid "Exiting because of an unresolved conflict."
 msgstr "Avslutar på grund av olöst konflikgt."
 
-#: advice.c:281 builtin/merge.c:1369
+#: advice.c:281 builtin/merge.c:1370
 msgid "You have not concluded your merge (MERGE_HEAD exists)."
 msgstr "Du har inte avslutat sammanslagningen (MERGE_HEAD finns)."
 
@@ -1101,7 +1101,8 @@ msgstr "patch misslyckades: %s:%ld"
 msgid "cannot checkout %s"
 msgstr "kan inte checka ut %s"
 
-#: apply.c:3405 apply.c:3416 apply.c:3462 midx.c:73 setup.c:308
+#: apply.c:3405 apply.c:3416 apply.c:3462 midx.c:86 pack-revindex.c:213
+#: setup.c:308
 #, c-format
 msgid "failed to read %s"
 msgstr "misslyckades läsa %s"
@@ -1262,7 +1263,7 @@ msgstr "kan inte skapa säkerhetsminne för nyligen skapade filen %s"
 msgid "unable to add cache entry for %s"
 msgstr "kan inte lägga till cachepost för %s"
 
-#: apply.c:4374 builtin/bisect--helper.c:524
+#: apply.c:4374 builtin/bisect--helper.c:523
 #, c-format
 msgid "failed to write to '%s'"
 msgstr "misslyckades skriva till \"%s\""
@@ -1298,7 +1299,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:4576 builtin/fetch.c:927 builtin/fetch.c:1228
+#: apply.c:4576 builtin/fetch.c:933 builtin/fetch.c:1334
 #, c-format
 msgid "cannot open %s"
 msgstr "kan inte öppna %s"
@@ -1352,7 +1353,7 @@ 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:4960 builtin/add.c:618 builtin/mv.c:304 builtin/rm.c:406
+#: apply.c:4960 builtin/add.c:626 builtin/mv.c:304 builtin/rm.c:406
 msgid "Unable to write new index file"
 msgstr "Kunde inte skriva ny indexfil"
 
@@ -1420,7 +1421,7 @@ msgstr "försök en trevägssammanslagning om patchen inte kan tillämpas"
 msgid "build a temporary index based on embedded index information"
 msgstr "bygg ett temporärt index baserat på inbyggd indexinformation"
 
-#: apply.c:5025 builtin/checkout-index.c:182 builtin/ls-files.c:525
+#: apply.c:5025 builtin/checkout-index.c:195 builtin/ls-files.c:540
 msgid "paths are separated with NUL character"
 msgstr "sökvägar avdelas med NUL-tecken"
 
@@ -1430,7 +1431,7 @@ msgstr "se till att åtminstone <n> rader sammanhang är lika"
 
 #: apply.c:5028 builtin/am.c:2245 builtin/interpret-trailers.c:98
 #: builtin/interpret-trailers.c:100 builtin/interpret-trailers.c:102
-#: builtin/pack-objects.c:3562 builtin/rebase.c:1346
+#: builtin/pack-objects.c:3577 builtin/rebase.c:1352
 msgid "action"
 msgstr "åtgärd"
 
@@ -1458,9 +1459,9 @@ msgstr "lämna refuserade stycken i motsvarande *.rej-filer"
 msgid "allow overlapping hunks"
 msgstr "tillåt överlappande stycken"
 
-#: apply.c:5045 builtin/add.c:329 builtin/check-ignore.c:22
-#: builtin/commit.c:1364 builtin/count-objects.c:98 builtin/fsck.c:775
-#: builtin/log.c:2287 builtin/mv.c:123 builtin/read-tree.c:128
+#: apply.c:5045 builtin/add.c:337 builtin/check-ignore.c:22
+#: builtin/commit.c:1364 builtin/count-objects.c:98 builtin/fsck.c:757
+#: builtin/log.c:2286 builtin/mv.c:123 builtin/read-tree.c:128
 msgid "be verbose"
 msgstr "var pratsam"
 
@@ -1548,14 +1549,14 @@ msgstr "git archive --remote <arkiv> [--exec <kmd>] --list"
 msgid "cannot read %s"
 msgstr "kan inte läsa %s"
 
-#: archive.c:345 sequencer.c:459 sequencer.c:1736 sequencer.c:2886
-#: sequencer.c:3327 sequencer.c:3436 builtin/am.c:249 builtin/commit.c:786
-#: builtin/merge.c:1138
+#: archive.c:345 sequencer.c:459 sequencer.c:1744 sequencer.c:2894
+#: sequencer.c:3335 sequencer.c:3444 builtin/am.c:249 builtin/commit.c:786
+#: builtin/merge.c:1139
 #, c-format
 msgid "could not read '%s'"
 msgstr "kunde inte läsa \"%s\""
 
-#: archive.c:430 builtin/add.c:181 builtin/add.c:594 builtin/rm.c:315
+#: archive.c:430 builtin/add.c:189 builtin/add.c:602 builtin/rm.c:315
 #, c-format
 msgid "pathspec '%s' did not match any files"
 msgstr "sökvägsangivelsen \"%s\" motsvarade inte några filer"
@@ -1597,7 +1598,7 @@ msgstr "fmt"
 msgid "archive format"
 msgstr "arkivformat"
 
-#: archive.c:556 builtin/log.c:1765
+#: archive.c:556 builtin/log.c:1764
 msgid "prefix"
 msgstr "prefix"
 
@@ -1605,11 +1606,11 @@ msgstr "prefix"
 msgid "prepend prefix to each pathname in the archive"
 msgstr "lägg till prefix till varje sökväg i arkivet"
 
-#: archive.c:558 archive.c:561 builtin/blame.c:886 builtin/blame.c:890
-#: builtin/blame.c:891 builtin/commit-tree.c:117 builtin/config.c:135
+#: archive.c:558 archive.c:561 builtin/blame.c:884 builtin/blame.c:888
+#: builtin/blame.c:889 builtin/commit-tree.c:117 builtin/config.c:135
 #: builtin/fast-export.c:1207 builtin/fast-export.c:1209
-#: builtin/fast-export.c:1213 builtin/grep.c:919 builtin/hash-object.c:105
-#: builtin/ls-files.c:561 builtin/ls-files.c:564 builtin/notes.c:412
+#: builtin/fast-export.c:1213 builtin/grep.c:920 builtin/hash-object.c:105
+#: builtin/ls-files.c:576 builtin/ls-files.c:579 builtin/notes.c:412
 #: builtin/notes.c:578 builtin/read-tree.c:123 parse-options.h:190
 msgid "file"
 msgstr "fil"
@@ -1775,12 +1776,12 @@ msgstr "Bisect: en sammanslagningsbas måste testas\n"
 msgid "a %s revision is needed"
 msgstr "en %s-revision behövs"
 
-#: bisect.c:941 builtin/notes.c:177 builtin/tag.c:255
+#: bisect.c:941 builtin/notes.c:177 builtin/tag.c:287
 #, c-format
 msgid "could not create file '%s'"
 msgstr "kunde inte skapa filen \"%s\""
 
-#: bisect.c:987 builtin/merge.c:152
+#: bisect.c:987 builtin/merge.c:153
 #, c-format
 msgid "could not read file '%s'"
 msgstr "kunde inte läsa filen \"%s\""
@@ -1798,10 +1799,10 @@ msgstr "%s var både %s och %s\n"
 #, c-format
 msgid ""
 "No testable commit found.\n"
-"Maybe you started with bad path parameters?\n"
+"Maybe you started with bad path arguments?\n"
 msgstr ""
 "Ingen testbar incheckning hittades.\n"
-"Kanske du startade med felaktiga sökvägsparametrar?\n"
+"Kanske du startade med felaktiga sökvägsargument?\n"
 
 #: bisect.c:1095
 #, c-format
@@ -1834,11 +1835,11 @@ msgstr ""
 "--reverse och --first-parent tillsammans kräver att du anger senaste "
 "incheckningen"
 
-#: blame.c:2821 bundle.c:213 ref-filter.c:2272 remote.c:2031 sequencer.c:2138
-#: sequencer.c:4633 submodule.c:855 builtin/commit.c:1045 builtin/log.c:409
-#: builtin/log.c:1023 builtin/log.c:1625 builtin/log.c:2046 builtin/log.c:2336
-#: builtin/merge.c:423 builtin/pack-objects.c:3380 builtin/pack-objects.c:3395
-#: builtin/shortlog.c:267
+#: blame.c:2821 bundle.c:213 ref-filter.c:2206 remote.c:2041 sequencer.c:2146
+#: sequencer.c:4641 submodule.c:856 builtin/commit.c:1045 builtin/log.c:411
+#: builtin/log.c:1016 builtin/log.c:1624 builtin/log.c:2045 builtin/log.c:2335
+#: builtin/merge.c:424 builtin/pack-objects.c:3395 builtin/pack-objects.c:3410
+#: builtin/shortlog.c:255
 msgid "revision walk setup failed"
 msgstr "misslyckades skapa revisionstraversering"
 
@@ -2022,7 +2023,7 @@ msgstr "'%s' ser inte ut som en v2- eller v3-paket-fil (bundle)"
 msgid "unrecognized header: %s%s (%d)"
 msgstr "okänt huvud: %s%s (%d)"
 
-#: bundle.c:136 rerere.c:480 rerere.c:690 sequencer.c:2390 sequencer.c:3176
+#: bundle.c:136 rerere.c:464 rerere.c:674 sequencer.c:2398 sequencer.c:3184
 #: builtin/commit.c:814
 #, c-format
 msgid "could not open '%s'"
@@ -2066,278 +2067,291 @@ msgstr "Kunde inte starta pack-objects"
 msgid "pack-objects died"
 msgstr "pack-objects misslyckades"
 
-#: bundle.c:379
-msgid "rev-list died"
-msgstr "rev-list dog"
-
-#: bundle.c:428
+#: bundle.c:386
 #, c-format
 msgid "ref '%s' is excluded by the rev-list options"
 msgstr "referensen \"%s\" exkluderas av argumenten till rev-list"
 
-#: bundle.c:498
+#: bundle.c:490
 #, c-format
 msgid "unsupported bundle version %d"
 msgstr "version %d för paket (bundle) stöds ej"
 
-#: bundle.c:500
+#: bundle.c:492
 #, c-format
 msgid "cannot write bundle version %d with algorithm %s"
 msgstr "kan inte skriva paket (bundle) med version %d med algoritmen %s"
 
-#: bundle.c:522 builtin/log.c:209 builtin/log.c:1927 builtin/shortlog.c:408
+#: bundle.c:510 builtin/log.c:210 builtin/log.c:1926 builtin/shortlog.c:396
 #, c-format
 msgid "unrecognized argument: %s"
 msgstr "okänt argument: %s"
 
-#: bundle.c:530
+#: bundle.c:539
 msgid "Refusing to create empty bundle."
 msgstr "Vägrar skapa ett tomt paket (bundle)."
 
-#: bundle.c:540
+#: bundle.c:549
 #, c-format
 msgid "cannot create '%s'"
 msgstr "kan inte skapa \"%s\""
 
-#: bundle.c:565
+#: bundle.c:574
 msgid "index-pack died"
 msgstr "index-pack dog"
 
+#: chunk-format.c:113
+msgid "terminating chunk id appears earlier than expected"
+msgstr "avslutande stycke-id förekommer tidigare än förväntat"
+
+#: chunk-format.c:122
+#, c-format
+msgid "improper chunk offset(s) %<PRIx64> and %<PRIx64>"
+msgstr "felaktigt stycke-offset %<PRIx64> och %<PRIx64>"
+
+#: chunk-format.c:129
+#, c-format
+msgid "duplicate chunk ID %<PRIx32> found"
+msgstr "dubblerat stycke-ID %<PRIx32> upptäckt"
+
+#: chunk-format.c:143
+#, c-format
+msgid "final chunk has non-zero id %<PRIx32>"
+msgstr "avslutande stycke har id %<PRIx32> som inte är noll"
+
 #: color.c:329
 #, c-format
 msgid "invalid color value: %.*s"
 msgstr "felaktigt färgvärde: %.*s"
 
-#: commit-graph.c:188 midx.c:47
+#: commit-graph.c:197 midx.c:46
 msgid "invalid hash version"
 msgstr "felaktig hashnings-version"
 
-#: commit-graph.c:246
+#: commit-graph.c:255
 msgid "commit-graph file is too small"
 msgstr "incheckningsgraffilen %s är för liten"
 
-#: commit-graph.c:311
+#: commit-graph.c:348
 #, c-format
 msgid "commit-graph signature %X does not match signature %X"
 msgstr "incheckningsgrafens signatur %X stämmer inte med signaturen %X"
 
-#: commit-graph.c:318
+#: commit-graph.c:355
 #, c-format
 msgid "commit-graph version %X does not match version %X"
 msgstr "incheckningsgrafens version %X stämmer inte med versionen %X"
 
-#: commit-graph.c:325
+#: commit-graph.c:362
 #, c-format
 msgid "commit-graph hash version %X does not match version %X"
 msgstr "incheckningsgrafens hashversion %X stämmer inte med versionen %X"
 
-#: commit-graph.c:342
+#: commit-graph.c:379
 #, c-format
 msgid "commit-graph file is too small to hold %u chunks"
 msgstr "incheckningsgraffilen är för liten för att innehålla %u stycken"
 
-#: commit-graph.c:361
-#, c-format
-msgid "commit-graph improper chunk offset %08x%08x"
-msgstr "felaktigt offset för stycke %08x%08x i incheckningsgraffilen"
-
-#: commit-graph.c:433
-#, c-format
-msgid "commit-graph chunk id %08x appears multiple times"
-msgstr "incheckningsgrafens stycke-id %08x förekommer flera gånger"
-
-#: commit-graph.c:499
+#: commit-graph.c:472
 msgid "commit-graph has no base graphs chunk"
 msgstr "incheckningsgrafen har inga bas-graf-stycken"
 
-#: commit-graph.c:509
+#: commit-graph.c:482
 msgid "commit-graph chain does not match"
 msgstr "incheckningsgrafens kedja stämmer inte"
 
-#: commit-graph.c:557
+#: commit-graph.c:530
 #, c-format
 msgid "invalid commit-graph chain: line '%s' not a hash"
 msgstr "ogiltig incheckingsgrafkedja: rad \"%s\" är inte ett hash-värde"
 
-#: commit-graph.c:581
+#: commit-graph.c:554
 msgid "unable to find all commit-graph files"
 msgstr "kan inte hitta alla incheckingsgraffiler"
 
-#: commit-graph.c:721 commit-graph.c:785
+#: commit-graph.c:735 commit-graph.c:772
 msgid "invalid commit position. commit-graph is likely corrupt"
 msgstr "ogiltig incheckningsposition. incheckningsgrafen är troligtvis trasig"
 
-#: commit-graph.c:742
+#: commit-graph.c:756
 #, c-format
 msgid "could not find commit %s"
 msgstr "kunde inte hitta incheckningen %s"
 
-#: commit-graph.c:1036 builtin/am.c:1292
+#: commit-graph.c:789
+msgid "commit-graph requires overflow generation data but has none"
+msgstr "incheckningsgraf kräver spillgenerationsdata, men har ingen"
+
+#: commit-graph.c:1065 builtin/am.c:1292
 #, c-format
 msgid "unable to parse commit %s"
 msgstr "kunde inte tolka incheckningen %s"
 
-#: commit-graph.c:1252 builtin/pack-objects.c:2864
+#: commit-graph.c:1327 builtin/pack-objects.c:2872
 #, c-format
 msgid "unable to get type of object %s"
 msgstr "kunde inte hämta typ för objektet %s"
 
-#: commit-graph.c:1283
+#: commit-graph.c:1358
 msgid "Loading known commits in commit graph"
 msgstr "Läser in kända incheckningar i incheckningsgraf"
 
-#: commit-graph.c:1300
+#: commit-graph.c:1375
 msgid "Expanding reachable commits in commit graph"
 msgstr "Expanderar nåbara incheckningar i incheckningsgraf"
 
-#: commit-graph.c:1320
+#: commit-graph.c:1395
 msgid "Clearing commit marks in commit graph"
 msgstr "Rensar incheckningsmärken i incheckningsgraf"
 
-#: commit-graph.c:1339
+#: commit-graph.c:1414
+msgid "Computing commit graph topological levels"
+msgstr "Beräknar topografiska nivåer för incheckningsgraf"
+
+#: commit-graph.c:1467
 msgid "Computing commit graph generation numbers"
 msgstr "Beräknar generationsvärden för incheckningsgraf"
 
-#: commit-graph.c:1406
+#: commit-graph.c:1548
 msgid "Computing commit changed paths Bloom filters"
 msgstr "Beräknar Bloom-filter för sökvägar ändrade av incheckningen"
 
-#: commit-graph.c:1483
+#: commit-graph.c:1625
 msgid "Collecting referenced commits"
 msgstr "Samlar refererade incheckningar"
 
-#: commit-graph.c:1508
+#: commit-graph.c:1650
 #, c-format
 msgid "Finding commits for commit graph in %d pack"
 msgid_plural "Finding commits for commit graph in %d packs"
 msgstr[0] "Söker incheckningar för incheckingsgraf i %d paket"
 msgstr[1] "Söker incheckningar för incheckingsgraf i %d paket"
 
-#: commit-graph.c:1521
+#: commit-graph.c:1663
 #, c-format
 msgid "error adding pack %s"
 msgstr "fel vid tillägg av paketet %s"
 
-#: commit-graph.c:1525
+#: commit-graph.c:1667
 #, c-format
 msgid "error opening index for %s"
 msgstr "fel vid öppning av indexet för %s"
 
-#: commit-graph.c:1562
+#: commit-graph.c:1704
 msgid "Finding commits for commit graph among packed objects"
 msgstr "Söker incheckningar för incheckingsgraf i packade objekt"
 
-#: commit-graph.c:1580
+#: commit-graph.c:1722
 msgid "Finding extra edges in commit graph"
 msgstr "Söker ytterligare kanter i incheckingsgraf"
 
-#: commit-graph.c:1628
+#: commit-graph.c:1771
 msgid "failed to write correct number of base graph ids"
 msgstr "kunde inte skriva korrekt antal bas-graf-id:n"
 
-#: commit-graph.c:1670 midx.c:819
+#: commit-graph.c:1802 midx.c:794
 #, c-format
 msgid "unable to create leading directories of %s"
 msgstr "kunde inte skapa inledande kataloger för %s"
 
-#: commit-graph.c:1683
+#: commit-graph.c:1815
 msgid "unable to create temporary graph layer"
 msgstr "kan inte skapa temporärt graflager"
 
-#: commit-graph.c:1688
+#: commit-graph.c:1820
 #, c-format
 msgid "unable to adjust shared permissions for '%s'"
 msgstr "kan inte justera delade behörigheter för \"%s\""
 
-#: commit-graph.c:1758
+#: commit-graph.c:1879
 #, c-format
 msgid "Writing out commit graph in %d pass"
 msgid_plural "Writing out commit graph in %d passes"
 msgstr[0] "Skriver ut incheckningsgraf i %d pass"
 msgstr[1] "Skriver ut incheckningsgraf i %d pass"
 
-#: commit-graph.c:1803
+#: commit-graph.c:1915
 msgid "unable to open commit-graph chain file"
 msgstr "Kunde inte öppna incheckningsgrafkedjefilen"
 
-#: commit-graph.c:1819
+#: commit-graph.c:1931
 msgid "failed to rename base commit-graph file"
 msgstr "kunde inte byta namn på bas-incheckingsgraffilen"
 
-#: commit-graph.c:1839
+#: commit-graph.c:1951
 msgid "failed to rename temporary commit-graph file"
 msgstr "kunde inte byta namn på temporär incheckningsgraffil"
 
-#: commit-graph.c:1965
+#: commit-graph.c:2084
 msgid "Scanning merged commits"
 msgstr "Söker sammanslagna incheckningar"
 
-#: commit-graph.c:2009
+#: commit-graph.c:2128
 msgid "Merging commit-graph"
 msgstr "Slår ihop incheckningsgraf"
 
-#: commit-graph.c:2115
+#: commit-graph.c:2235
 msgid "attempting to write a commit-graph, but 'core.commitGraph' is disabled"
 msgstr ""
 "försöker skriva en incheckningsgraf, men \"core.commitGraph\" är inaktiverad"
 
-#: commit-graph.c:2214
+#: commit-graph.c:2342
 msgid "too many commits to write graph"
 msgstr "för många incheckningar för att skriva graf"
 
-#: commit-graph.c:2307
+#: commit-graph.c:2440
 msgid "the commit-graph file has incorrect checksum and is likely corrupt"
 msgstr ""
 "filen med incheckningsgraf har felaktig checksumma och är troligtvis trasig"
 
-#: commit-graph.c:2317
+#: commit-graph.c:2450
 #, c-format
 msgid "commit-graph has incorrect OID order: %s then %s"
 msgstr "incheckningsgrafen har felaktig OID-ordning: %s så %s"
 
-#: commit-graph.c:2327 commit-graph.c:2342
+#: commit-graph.c:2460 commit-graph.c:2475
 #, c-format
 msgid "commit-graph has incorrect fanout value: fanout[%d] = %u != %u"
 msgstr ""
 "incheckningsgrafen har felaktig utbredningsvärde: fanout[%d] = %u != %u"
 
-#: commit-graph.c:2334
+#: commit-graph.c:2467
 #, c-format
 msgid "failed to parse commit %s from commit-graph"
 msgstr "kunde inte tolka incheckning %s från incheckningsgraf"
 
-#: commit-graph.c:2352
+#: commit-graph.c:2485
 msgid "Verifying commits in commit graph"
 msgstr "Bekräftar incheckningar i incheckningsgrafen"
 
-#: commit-graph.c:2367
+#: commit-graph.c:2500
 #, c-format
 msgid "failed to parse commit %s from object database for commit-graph"
 msgstr ""
 "misslyckades tolka incheckning %s från objektdatabasen för incheckningsgraf"
 
-#: commit-graph.c:2374
+#: commit-graph.c:2507
 #, c-format
 msgid "root tree OID for commit %s in commit-graph is %s != %s"
 msgstr "rot-trädets OID för incheckningen %s i incheckningsgrafen är %s != %s"
 
-#: commit-graph.c:2384
+#: commit-graph.c:2517
 #, c-format
 msgid "commit-graph parent list for commit %s is too long"
 msgstr "incheckningsgrafens föräldralista för incheckningen %s är för lång"
 
-#: commit-graph.c:2393
+#: commit-graph.c:2526
 #, c-format
 msgid "commit-graph parent for %s is %s != %s"
 msgstr "incheckningsgrafens förälder för %s är %s != %s"
 
-#: commit-graph.c:2407
+#: commit-graph.c:2540
 #, c-format
 msgid "commit-graph parent list for commit %s terminates early"
 msgstr ""
 "incheckningsgrafens föräldralista för incheckningen %s avslutas för tidigt"
 
-#: commit-graph.c:2412
+#: commit-graph.c:2545
 #, c-format
 msgid ""
 "commit-graph has generation number zero for commit %s, but non-zero elsewhere"
@@ -2345,7 +2359,7 @@ msgstr ""
 "incheckningsgrafen har generationsnummer noll för incheckningen %s, men icke-"
 "noll på annan plats"
 
-#: commit-graph.c:2416
+#: commit-graph.c:2549
 #, c-format
 msgid ""
 "commit-graph has non-zero generation number for commit %s, but zero elsewhere"
@@ -2353,19 +2367,21 @@ msgstr ""
 "incheckningsgrafen har generationsnummer skilt från noll för incheckningen "
 "%s, men noll på annan plats"
 
-#: commit-graph.c:2432
+#: commit-graph.c:2566
 #, c-format
-msgid "commit-graph generation for commit %s is %u != %u"
-msgstr "incheckningsgrafens generation för incheckningen %s är %u != %u"
+msgid "commit-graph generation for commit %s is %<PRIuMAX> < %<PRIuMAX>"
+msgstr ""
+"incheckningsgrafens generation för incheckningen %s är %<PRIuMAX> < "
+"%<PRIuMAX>"
 
-#: commit-graph.c:2438
+#: commit-graph.c:2572
 #, c-format
 msgid "commit date for commit %s in commit-graph is %<PRIuMAX> != %<PRIuMAX>"
 msgstr ""
 "incheckningsdatumet för incheckningen %s i incheckningsgrafen är %<PRIuMAX> !"
 "= %<PRIuMAX>"
 
-#: commit.c:52 sequencer.c:2879 builtin/am.c:359 builtin/am.c:403
+#: commit.c:52 sequencer.c:2887 builtin/am.c:359 builtin/am.c:403
 #: builtin/am.c:1371 builtin/am.c:2018 builtin/replace.c:457
 #, c-format
 msgid "could not parse %s"
@@ -2396,29 +2412,29 @@ msgstr ""
 "Slå av detta meddelande genom att skriva\n"
 "\"git config advice.graftFileDeprecated false\""
 
-#: commit.c:1172
+#: commit.c:1223
 #, c-format
 msgid "Commit %s has an untrusted GPG signature, allegedly by %s."
 msgstr ""
 "Incheckningen %s har en obetrodd GPG-signatur som påstås vara gjord av %s."
 
-#: commit.c:1176
+#: commit.c:1227
 #, c-format
 msgid "Commit %s has a bad GPG signature allegedly by %s."
 msgstr ""
 "Incheckningen %s har en felaktig GPG-signatur som påstås vara gjord av %s."
 
-#: commit.c:1179
+#: commit.c:1230
 #, c-format
 msgid "Commit %s does not have a GPG signature."
 msgstr "Incheckning %s har inte någon GPG-signatur."
 
-#: commit.c:1182
+#: commit.c:1233
 #, c-format
 msgid "Commit %s has a good GPG signature by %s\n"
 msgstr "Incheckningen %s har en korrekt GPG-signatur av %s\n"
 
-#: commit.c:1436
+#: commit.c:1487
 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"
@@ -2432,7 +2448,7 @@ msgstr ""
 msgid "memory exhausted"
 msgstr "minnet slut"
 
-#: config.c:125
+#: config.c:126
 #, c-format
 msgid ""
 "exceeded maximum include depth (%d) while including\n"
@@ -2447,296 +2463,340 @@ msgstr ""
 "\t%s\n"
 "Det kan bero på cirkulära inkluderingar."
 
-#: config.c:141
+#: config.c:142
 #, c-format
 msgid "could not expand include path '%s'"
 msgstr "kunde inte expandera inkluderingssökväg \"%s\""
 
-#: config.c:152
+#: config.c:153
 msgid "relative config includes must come from files"
 msgstr "relativa konfigureringsinkluderingar måste komma från filer"
 
-#: config.c:198
+#: config.c:199
 msgid "relative config include conditionals must come from files"
 msgstr "relativa konfigureringsinkluderingsvillkor måste komma från filer"
 
-#: config.c:378
+#: config.c:396
+#, c-format
+msgid "invalid config format: %s"
+msgstr "felaktigt konfigurationsformat: %s"
+
+#: config.c:400
+#, c-format
+msgid "missing environment variable name for configuration '%.*s'"
+msgstr "miljövariabelnamn saknas för konfigurationen \"%.*s\""
+
+#: config.c:405
+#, c-format
+msgid "missing environment variable '%s' for configuration '%.*s'"
+msgstr "miljövariabeln \"%s\" saknas för konfigurationen \"%.*s\""
+
+#: config.c:442
 #, c-format
 msgid "key does not contain a section: %s"
 msgstr "nyckeln innehåller inte ett stycke: %s"
 
-#: config.c:384
+#: config.c:448
 #, c-format
 msgid "key does not contain variable name: %s"
 msgstr "nyckeln innehåller inte variabelnamn: %s"
 
-#: config.c:408 sequencer.c:2580
+#: config.c:472 sequencer.c:2588
 #, c-format
 msgid "invalid key: %s"
 msgstr "felaktig nyckel: %s"
 
-#: config.c:414
+#: config.c:478
 #, c-format
 msgid "invalid key (newline): %s"
 msgstr "ogiltig nyckel (nyradstecken): %s"
 
-#: config.c:450 config.c:462
+#: config.c:511
+msgid "empty config key"
+msgstr "tom konfigurationsnyckel"
+
+#: config.c:529 config.c:541
 #, c-format
 msgid "bogus config parameter: %s"
 msgstr "falsk konfigureringsparameter: %s"
 
-#: config.c:497
+#: config.c:555 config.c:572 config.c:579 config.c:588
 #, c-format
 msgid "bogus format in %s"
 msgstr "felaktigt format i %s"
 
-#: config.c:836
+#: config.c:622
+#, c-format
+msgid "bogus count in %s"
+msgstr "felaktigt antal i %s"
+
+#: config.c:626
+#, c-format
+msgid "too many entries in %s"
+msgstr "för många poster i %s"
+
+#: config.c:636
+#, c-format
+msgid "missing config key %s"
+msgstr "konfigurationsnyckel saknas för %s"
+
+#: config.c:644
+#, c-format
+msgid "missing config value %s"
+msgstr "konfigurationsvärde saknas för %s"
+
+#: config.c:995
 #, c-format
 msgid "bad config line %d in blob %s"
 msgstr "felaktig konfigurationsfil rad %d i blob:en %s"
 
-#: config.c:840
+#: config.c:999
 #, c-format
 msgid "bad config line %d in file %s"
 msgstr "felaktig konfigurationsfil rad %d i filen %s"
 
-#: config.c:844
+#: config.c:1003
 #, c-format
 msgid "bad config line %d in standard input"
 msgstr "felaktig konfigurationsfil rad %d i standard in"
 
-#: config.c:848
+#: config.c:1007
 #, c-format
 msgid "bad config line %d in submodule-blob %s"
 msgstr "felaktig konfigurationsfil rad %d i undermoduls-blob:en %s"
 
-#: config.c:852
+#: config.c:1011
 #, c-format
 msgid "bad config line %d in command line %s"
 msgstr "felaktig konfigurationsfil rad %d i kommandoraden %s"
 
-#: config.c:856
+#: config.c:1015
 #, c-format
 msgid "bad config line %d in %s"
 msgstr "felaktig konfigurationsfil rad %d i %s"
 
-#: config.c:993
+#: config.c:1152
 msgid "out of range"
 msgstr "utanför intervallet"
 
-#: config.c:993
+#: config.c:1152
 msgid "invalid unit"
 msgstr "ogiltig enhet"
 
-#: config.c:994
+#: config.c:1153
 #, c-format
 msgid "bad numeric config value '%s' for '%s': %s"
 msgstr "felaktigt numeriskt konfigurationsvärde \"%s\" för \"%s\": %s"
 
-#: config.c:1013
+#: config.c:1163
 #, 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:1016
+#: config.c:1166
 #, 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:1019
+#: config.c:1169
 #, 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:1022
+#: config.c:1172
 #, 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:1025
+#: config.c:1175
 #, 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:1028
+#: config.c:1178
 #, 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:1123
+#: config.c:1194
+#, c-format
+msgid "bad boolean config value '%s' for '%s'"
+msgstr "felaktigt booleskt konfigurationsvärde \"%s\" för \"%s\""
+
+#: config.c:1289
 #, c-format
 msgid "failed to expand user dir in: '%s'"
 msgstr "misslyckades expandera användarkatalog i: \"%s\""
 
-#: config.c:1132
+#: config.c:1298
 #, c-format
 msgid "'%s' for '%s' is not a valid timestamp"
 msgstr "\"%s\" för \"%s\" är inte en giltig tidsstämpel"
 
-#: config.c:1223
+#: config.c:1391
 #, c-format
 msgid "abbrev length out of range: %d"
 msgstr "förkortningslängd utanför intervallet: %d"
 
-#: config.c:1237 config.c:1248
+#: config.c:1405 config.c:1416
 #, c-format
 msgid "bad zlib compression level %d"
 msgstr "felaktigt zlib-komprimeringsgrad %d"
 
-#: config.c:1340
+#: config.c:1508
 msgid "core.commentChar should only be one character"
 msgstr "core.commentChar kan bara vara ett tecken"
 
-#: config.c:1373
+#: config.c:1541
 #, c-format
 msgid "invalid mode for object creation: %s"
 msgstr "felaktigt läge för skapande av objekt: %s"
 
-#: config.c:1445
+#: config.c:1613
 #, c-format
 msgid "malformed value for %s"
 msgstr "felformat värde för %s"
 
-#: config.c:1471
+#: config.c:1639
 #, c-format
 msgid "malformed value for %s: %s"
 msgstr "felformat värde för %s: %s"
 
-#: config.c:1472
+#: config.c:1640
 msgid "must be one of nothing, matching, simple, upstream or current"
 msgstr "måste vara en av nothing, matching, simple, upstream eller current"
 
-#: config.c:1533 builtin/pack-objects.c:3649
+#: config.c:1701 builtin/pack-objects.c:3666
 #, c-format
 msgid "bad pack compression level %d"
 msgstr "felaktig paketkomprimeringsgrad %d"
 
-#: config.c:1655
+#: config.c:1823
 #, c-format
 msgid "unable to load config blob object '%s'"
 msgstr "kunde inte läsa konfigurerings-blobobjektet \"%s\""
 
-#: config.c:1658
+#: config.c:1826
 #, c-format
 msgid "reference '%s' does not point to a blob"
 msgstr "referensen \"%s\" pekar inte på en blob"
 
-#: config.c:1675
+#: config.c:1843
 #, c-format
 msgid "unable to resolve config blob '%s'"
 msgstr "kan inte slå upp konfigurerings-bloben \"%s\""
 
-#: config.c:1705
+#: config.c:1873
 #, c-format
 msgid "failed to parse %s"
 msgstr "kunde inte tolka %s"
 
-#: config.c:1759
+#: config.c:1927
 msgid "unable to parse command-line config"
 msgstr "kan inte tolka kommandoradskonfiguration"
 
-#: config.c:2122
+#: config.c:2290
 msgid "unknown error occurred while reading the configuration files"
 msgstr "okänt fel uppstod vid läsning av konfigurationsfilerna"
 
-#: config.c:2296
+#: config.c:2464
 #, c-format
 msgid "Invalid %s: '%s'"
 msgstr "Felaktigt %s: \"%s\""
 
-#: config.c:2341
+#: config.c:2509
 #, 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:2387
+#: config.c:2555
 #, c-format
 msgid "unable to parse '%s' from command-line config"
 msgstr "kunde inte tolka värdet \"%s\" från kommandoradskonfiguration"
 
-#: config.c:2389
+#: config.c:2557
 #, 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:2473
+#: config.c:2641
 #, c-format
 msgid "invalid section name '%s'"
 msgstr "felaktigt sektionsnamn \"%s\""
 
-#: config.c:2505
+#: config.c:2673
 #, c-format
 msgid "%s has multiple values"
 msgstr "%s har flera värden"
 
-#: config.c:2534
+#: config.c:2702
 #, c-format
 msgid "failed to write new configuration file %s"
 msgstr "kan inte skriva nya konfigurationsfilen \"%s\""
 
-#: config.c:2786 config.c:3112
+#: config.c:2954 config.c:3280
 #, c-format
 msgid "could not lock config file %s"
 msgstr "kunde inte låsa konfigurationsfilen %s"
 
-#: config.c:2797
+#: config.c:2965
 #, c-format
 msgid "opening %s"
 msgstr "öppnar %s"
 
-#: config.c:2834 builtin/config.c:361
+#: config.c:3002 builtin/config.c:361
 #, c-format
 msgid "invalid pattern: %s"
 msgstr "ogiltigt mönster: %s"
 
-#: config.c:2859
+#: config.c:3027
 #, c-format
 msgid "invalid config file %s"
 msgstr "ogiltig konfigurationsfil: \"%s\""
 
-#: config.c:2872 config.c:3125
+#: config.c:3040 config.c:3293
 #, c-format
 msgid "fstat on %s failed"
 msgstr "fstat misslyckades på %s"
 
-#: config.c:2883
+#: config.c:3051
 #, c-format
 msgid "unable to mmap '%s'"
 msgstr "kunde inte utföra mmap på \"%s\""
 
-#: config.c:2892 config.c:3130
+#: config.c:3060 config.c:3298
 #, c-format
 msgid "chmod on %s failed"
 msgstr "chmod misslyckades på %s"
 
-#: config.c:2977 config.c:3227
+#: config.c:3145 config.c:3395
 #, c-format
 msgid "could not write config file %s"
 msgstr "kunde inte skriva konfigurationsfilen %s"
 
-#: config.c:3011
+#: config.c:3179
 #, c-format
 msgid "could not set '%s' to '%s'"
 msgstr "kunde inte ställa in \"%s\" till \"%s\""
 
-#: config.c:3013 builtin/remote.c:657 builtin/remote.c:855 builtin/remote.c:863
+#: config.c:3181 builtin/remote.c:657 builtin/remote.c:855 builtin/remote.c:863
 #, c-format
 msgid "could not unset '%s'"
 msgstr "kunde inte ta bort inställning för \"%s\""
 
-#: config.c:3103
+#: config.c:3271
 #, c-format
 msgid "invalid section name: %s"
 msgstr "felaktigt namn på stycke: %s"
 
-#: config.c:3270
+#: config.c:3438
 #, c-format
 msgid "missing value for '%s'"
 msgstr "värde saknas för \"%s\""
@@ -2798,45 +2858,45 @@ msgstr "ogiltigt paket"
 msgid "protocol error: unexpected '%s'"
 msgstr "protokollfel: förväntade inte \"%s\""
 
-#: connect.c:473
+#: connect.c:497
 #, c-format
 msgid "unknown object format '%s' specified by server"
 msgstr "okänt objektformat \"%s\" angavs av servern"
 
-#: connect.c:500
+#: connect.c:526
 #, c-format
 msgid "invalid ls-refs response: %s"
 msgstr "ogiltigt svar på ls-refs: %s"
 
-#: connect.c:504
+#: connect.c:530
 msgid "expected flush after ref listing"
 msgstr "förväntade \"flush\" efter ref-listan"
 
-#: connect.c:507
+#: connect.c:533
 msgid "expected response end packet after ref listing"
 msgstr "förväntade svarsavslutningspaket efter ref-listan"
 
-#: connect.c:640
+#: connect.c:666
 #, c-format
 msgid "protocol '%s' is not supported"
 msgstr "protokollet \"%s\" stöds inte"
 
-#: connect.c:691
+#: connect.c:717
 msgid "unable to set SO_KEEPALIVE on socket"
 msgstr "kunde inte sätta SO_KEEPALIVE på uttaget"
 
-#: connect.c:731 connect.c:794
+#: connect.c:757 connect.c:820
 #, c-format
 msgid "Looking up %s ... "
 msgstr "Slår upp %s..."
 
-#: connect.c:735
+#: connect.c:761
 #, c-format
 msgid "unable to look up %s (port %s) (%s)"
 msgstr "kan inte slå upp %s (port %s) (%s)"
 
 #. TRANSLATORS: this is the end of "Looking up %s ... "
-#: connect.c:739 connect.c:810
+#: connect.c:765 connect.c:836
 #, c-format
 msgid ""
 "done.\n"
@@ -2845,7 +2905,7 @@ msgstr ""
 "klart.\n"
 "Ansluter till %s (port %s)..."
 
-#: connect.c:761 connect.c:838
+#: connect.c:787 connect.c:864
 #, c-format
 msgid ""
 "unable to connect to %s:\n"
@@ -2855,63 +2915,67 @@ msgstr ""
 "%s"
 
 #. TRANSLATORS: this is the end of "Connecting to %s (port %s) ... "
-#: connect.c:767 connect.c:844
+#: connect.c:793 connect.c:870
 msgid "done."
 msgstr "klart."
 
-#: connect.c:798
+#: connect.c:824
 #, c-format
 msgid "unable to look up %s (%s)"
 msgstr "kunde inte slå upp %s (%s)"
 
-#: connect.c:804
+#: connect.c:830
 #, c-format
 msgid "unknown port %s"
 msgstr "okänd port %s"
 
-#: connect.c:941 connect.c:1271
+#: connect.c:967 connect.c:1299
 #, c-format
 msgid "strange hostname '%s' blocked"
 msgstr "konstigt värdnamn \"%s\" blockerat"
 
-#: connect.c:943
+#: connect.c:969
 #, c-format
 msgid "strange port '%s' blocked"
 msgstr "konstig port \"%s\" blockerad"
 
-#: connect.c:953
+#: connect.c:979
 #, c-format
 msgid "cannot start proxy %s"
 msgstr "kan inte starta mellanserver (proxy) %s"
 
-#: connect.c:1024
+#: connect.c:1050
 msgid "no path specified; see 'git help pull' for valid url syntax"
 msgstr "ingen sökväg angavs; se \"git help pull\" för giltig URL-syntax"
 
-#: connect.c:1219
+#: connect.c:1190
+msgid "newline is forbidden in git:// hosts and repo paths"
+msgstr "radbrytningar är förbjudna i git://-värdnamn och arkivsökvägar"
+
+#: connect.c:1247
 msgid "ssh variant 'simple' does not support -4"
 msgstr "ssh-varianten \"simple\" stöder inte -4"
 
-#: connect.c:1231
+#: connect.c:1259
 msgid "ssh variant 'simple' does not support -6"
 msgstr "ssh-varianten \"simple\" stöder inte -6"
 
-#: connect.c:1248
+#: connect.c:1276
 msgid "ssh variant 'simple' does not support setting port"
 msgstr "ssh-varianten \"simple\" stöder inte val av port"
 
-#: connect.c:1360
+#: connect.c:1388
 #, c-format
 msgid "strange pathname '%s' blocked"
 msgstr "konstigt sökvägsnamn \"%s\" blockerat"
 
-#: connect.c:1408
+#: connect.c:1436
 msgid "unable to fork"
 msgstr "kunde inte grena (fork)"
 
 # Vague original, not networking-related, but rather related to the actual
 # objects in the database.
-#: connected.c:108 builtin/fsck.c:209 builtin/prune.c:45
+#: connected.c:108 builtin/fsck.c:191 builtin/prune.c:45
 msgid "Checking connectivity"
 msgstr "Kontrollerar konnektivitet"
 
@@ -3175,6 +3239,11 @@ msgstr "ö-regex från konfiguration har för många fångstgrupper (max=%d)"
 msgid "Marked %d islands, done.\n"
 msgstr "Markerade %d öar, klar.\n"
 
+#: diff-merges.c:70
+#, c-format
+msgid "unknown value for --diff-merges: %s"
+msgstr "okänt värde för --diff-merges: %s"
+
 #: diff-lib.c:534
 msgid "--merge-base does not work with ranges"
 msgstr "--merge-base fungerar inte med intervall"
@@ -3262,30 +3331,30 @@ msgstr ""
 msgid "external diff died, stopping at %s"
 msgstr "extern diff dog, stannar vid %s"
 
-#: diff.c:4625
+#: diff.c:4628
 msgid "--name-only, --name-status, --check and -s are mutually exclusive"
 msgstr "--name-only, --name-status, -check och -s är ömsesidigt uteslutande"
 
-#: diff.c:4628
+#: diff.c:4631
 msgid "-G, -S and --find-object are mutually exclusive"
 msgstr "-G, -S och --find-object är ömsesidigt uteslutande"
 
-#: diff.c:4707
+#: diff.c:4710
 msgid "--follow requires exactly one pathspec"
 msgstr "--follow kräver exakt en sökvägsangivelse"
 
-#: diff.c:4755
+#: diff.c:4758
 #, c-format
 msgid "invalid --stat value: %s"
 msgstr "ogiltigt värde för --stat: %s"
 
-#: diff.c:4760 diff.c:4765 diff.c:4770 diff.c:4775 diff.c:5303
+#: diff.c:4763 diff.c:4768 diff.c:4773 diff.c:4778 diff.c:5306
 #: parse-options.c:197 parse-options.c:201 builtin/commit-graph.c:180
 #, c-format
 msgid "%s expects a numerical value"
 msgstr "%s förväntar ett numeriskt värde"
 
-#: diff.c:4792
+#: diff.c:4795
 #, c-format
 msgid ""
 "Failed to parse --dirstat/-X option parameter:\n"
@@ -3294,42 +3363,42 @@ msgstr ""
 "Misslyckades tolka argument till flaggan --dirstat/-X;\n"
 "%s"
 
-#: diff.c:4877
+#: diff.c:4880
 #, c-format
 msgid "unknown change class '%c' in --diff-filter=%s"
 msgstr "okänd ändringsklass \"%c\" i --diff-filter=%s"
 
-#: diff.c:4901
+#: diff.c:4904
 #, c-format
 msgid "unknown value after ws-error-highlight=%.*s"
 msgstr "okänt värde efter ws-error-highlight=%.*s"
 
-#: diff.c:4915
+#: diff.c:4918
 #, c-format
 msgid "unable to resolve '%s'"
 msgstr "kunde inte slå upp \"%s\""
 
-#: diff.c:4965 diff.c:4971
+#: diff.c:4968 diff.c:4974
 #, c-format
 msgid "%s expects <n>/<m> form"
 msgstr "%s förväntar formen <n>/<m>"
 
-#: diff.c:4983
+#: diff.c:4986
 #, c-format
 msgid "%s expects a character, got '%s'"
 msgstr "%s förväntar ett tecken, fick \"%s\""
 
-#: diff.c:5004
+#: diff.c:5007
 #, c-format
 msgid "bad --color-moved argument: %s"
 msgstr "felaktigt argument till --color-moved: %s"
 
-#: diff.c:5023
+#: diff.c:5026
 #, c-format
 msgid "invalid mode '%s' in --color-moved-ws"
 msgstr "ogiltigt läge %s\" i --color-moved-ws"
 
-#: diff.c:5063
+#: diff.c:5066
 msgid ""
 "option diff-algorithm accepts \"myers\", \"minimal\", \"patience\" and "
 "\"histogram\""
@@ -3337,154 +3406,154 @@ msgstr ""
 "flaggan diff-algorithm godtar\"myers\", \"minimal\", \"patience\" och "
 "\"histogram\""
 
-#: diff.c:5099 diff.c:5119
+#: diff.c:5102 diff.c:5122
 #, c-format
 msgid "invalid argument to %s"
 msgstr "ogiltigt argument för %s"
 
-#: diff.c:5223
+#: diff.c:5226
 #, c-format
 msgid "invalid regex given to -I: '%s'"
 msgstr "ogiltigt reguljärt uttryck angavs för -I: \"%s\""
 
-#: diff.c:5272
+#: diff.c:5275
 #, c-format
 msgid "failed to parse --submodule option parameter: '%s'"
 msgstr "misslyckades tolka argument till flaggan --submodule: \"%s\""
 
-#: diff.c:5328
+#: diff.c:5331
 #, c-format
 msgid "bad --word-diff argument: %s"
 msgstr "felaktigt argument --word-diff: %s"
 
-#: diff.c:5351
+#: diff.c:5367
 msgid "Diff output format options"
 msgstr "Formatflaggor för diff-utdata"
 
-#: diff.c:5353 diff.c:5359
+#: diff.c:5369 diff.c:5375
 msgid "generate patch"
 msgstr "skapar patch"
 
-#: diff.c:5356 builtin/log.c:178
+#: diff.c:5372 builtin/log.c:179
 msgid "suppress diff output"
 msgstr "undertryck diff-utdata"
 
-#: diff.c:5361 diff.c:5475 diff.c:5482
+#: diff.c:5377 diff.c:5491 diff.c:5498
 msgid "<n>"
 msgstr "<n>"
 
-#: diff.c:5362 diff.c:5365
+#: diff.c:5378 diff.c:5381
 msgid "generate diffs with <n> lines context"
 msgstr "skapa diffar med <n> rader sammanhang"
 
-#: diff.c:5367
+#: diff.c:5383
 msgid "generate the diff in raw format"
 msgstr "generera diff i råformat"
 
-#: diff.c:5370
+#: diff.c:5386
 msgid "synonym for '-p --raw'"
 msgstr "synonym till \"-p --raw\""
 
-#: diff.c:5374
+#: diff.c:5390
 msgid "synonym for '-p --stat'"
 msgstr "synonym till \"-p --stat\""
 
-#: diff.c:5378
+#: diff.c:5394
 msgid "machine friendly --stat"
 msgstr "maskinläsbar --stat"
 
-#: diff.c:5381
+#: diff.c:5397
 msgid "output only the last line of --stat"
 msgstr "skriv bara ut den sista raden för --stat"
 
-#: diff.c:5383 diff.c:5391
+#: diff.c:5399 diff.c:5407
 msgid "<param1,param2>..."
 msgstr "<param1,param2>..."
 
-#: diff.c:5384
+#: diff.c:5400
 msgid ""
 "output the distribution of relative amount of changes for each sub-directory"
 msgstr ""
 "skriv ut distributionen av relativa mängder ändringar för varje underkatalog"
 
-#: diff.c:5388
+#: diff.c:5404
 msgid "synonym for --dirstat=cumulative"
 msgstr "synonym för --dirstat=cumulative"
 
-#: diff.c:5392
+#: diff.c:5408
 msgid "synonym for --dirstat=files,param1,param2..."
 msgstr "synonym för --dirstat=filer,param1,param2..."
 
-#: diff.c:5396
+#: diff.c:5412
 msgid "warn if changes introduce conflict markers or whitespace errors"
 msgstr "varna om ändringar introducerar konfliktmarkörer eller blankstegsfel"
 
-#: diff.c:5399
+#: diff.c:5415
 msgid "condensed summary such as creations, renames and mode changes"
 msgstr "kortfattad summering såsom skapade, namnbyten och ändrade lägen"
 
-#: diff.c:5402
+#: diff.c:5418
 msgid "show only names of changed files"
 msgstr "visa endast namnen på ändrade filer"
 
-#: diff.c:5405
+#: diff.c:5421
 msgid "show only names and status of changed files"
 msgstr "visa endast namn och status för ändrade filer"
 
-#: diff.c:5407
+#: diff.c:5423
 msgid "<width>[,<name-width>[,<count>]]"
 msgstr "<bredd>[,<namn-bredd>[,<antal>]]"
 
-#: diff.c:5408
+#: diff.c:5424
 msgid "generate diffstat"
 msgstr "skapa diffstat"
 
-#: diff.c:5410 diff.c:5413 diff.c:5416
+#: diff.c:5426 diff.c:5429 diff.c:5432
 msgid "<width>"
 msgstr "<bredd>"
 
-#: diff.c:5411
+#: diff.c:5427
 msgid "generate diffstat with a given width"
 msgstr "generera en diffstat med given bredd"
 
-#: diff.c:5414
+#: diff.c:5430
 msgid "generate diffstat with a given name width"
 msgstr "generera en diffstat med given namnbredd"
 
-#: diff.c:5417
+#: diff.c:5433
 msgid "generate diffstat with a given graph width"
 msgstr "generera en diffstat med given grafbredd"
 
-#: diff.c:5419
+#: diff.c:5435
 msgid "<count>"
 msgstr "<antal>"
 
-#: diff.c:5420
+#: diff.c:5436
 msgid "generate diffstat with limited lines"
 msgstr "generera diffstat med begränsade rader"
 
-#: diff.c:5423
+#: diff.c:5439
 msgid "generate compact summary in diffstat"
 msgstr "skapa kompakt översikt i diffstat"
 
-#: diff.c:5426
+#: diff.c:5442
 msgid "output a binary diff that can be applied"
 msgstr "skapa en binärdiff som kan appliceras"
 
-#: diff.c:5429
+#: diff.c:5445
 msgid "show full pre- and post-image object names on the \"index\" lines"
 msgstr ""
 "visa fullständiga objektnamn i \"index\"-rader för läget både före och efter"
 
-#: diff.c:5431
+#: diff.c:5447
 msgid "show colored diff"
 msgstr "visa färgad diff"
 
-#: diff.c:5432
+#: diff.c:5448
 msgid "<kind>"
 msgstr "<typ>"
 
-#: diff.c:5433
+#: diff.c:5449
 msgid ""
 "highlight whitespace errors in the 'context', 'old' or 'new' lines in the "
 "diff"
@@ -3492,7 +3561,7 @@ msgstr ""
 "ljusmarkera blankstegsfel i \"context\" (sammanhang), \"old\" (gamla) eller "
 "\"new\" (nya) rader i diffen"
 
-#: diff.c:5436
+#: diff.c:5452
 msgid ""
 "do not munge pathnames and use NULs as output field terminators in --raw or "
 "--numstat"
@@ -3500,87 +3569,87 @@ msgstr ""
 "skriv inte om sökvägsnamn och använd NUL-tecken som fältseparerare i --raw "
 "eller --numstat"
 
-#: diff.c:5439 diff.c:5442 diff.c:5445 diff.c:5554
+#: diff.c:5455 diff.c:5458 diff.c:5461 diff.c:5570
 msgid "<prefix>"
 msgstr "<prefix>"
 
-#: diff.c:5440
+#: diff.c:5456
 msgid "show the given source prefix instead of \"a/\""
 msgstr "visa givet källprefix istället för \"a/\""
 
-#: diff.c:5443
+#: diff.c:5459
 msgid "show the given destination prefix instead of \"b/\""
 msgstr "visa givet målprefix istället för \"b/\""
 
-#: diff.c:5446
+#: diff.c:5462
 msgid "prepend an additional prefix to every line of output"
 msgstr "lägg till ytterligare prefix på alla rader i utdata"
 
-#: diff.c:5449
+#: diff.c:5465
 msgid "do not show any source or destination prefix"
 msgstr "visa inte käll- eller målprefix"
 
-#: diff.c:5452
+#: diff.c:5468
 msgid "show context between diff hunks up to the specified number of lines"
 msgstr "visa sammnhang mellan diff-stycken upp till angivet antal rader"
 
-#: diff.c:5456 diff.c:5461 diff.c:5466
+#: diff.c:5472 diff.c:5477 diff.c:5482
 msgid "<char>"
 msgstr "<tecken>"
 
-#: diff.c:5457
+#: diff.c:5473
 msgid "specify the character to indicate a new line instead of '+'"
 msgstr "ange tecken för att ange ny rad istället för \"+\""
 
-#: diff.c:5462
+#: diff.c:5478
 msgid "specify the character to indicate an old line instead of '-'"
 msgstr "ange tecken för att ange gammal rad istället för \"-\""
 
-#: diff.c:5467
+#: diff.c:5483
 msgid "specify the character to indicate a context instead of ' '"
 msgstr "ange tecken för att ange sammanhang istället för \" \""
 
-#: diff.c:5470
+#: diff.c:5486
 msgid "Diff rename options"
 msgstr "Diff-namnbytesflaggor"
 
-#: diff.c:5471
+#: diff.c:5487
 msgid "<n>[/<m>]"
 msgstr "<n>[/<m>]"
 
-#: diff.c:5472
+#: diff.c:5488
 msgid "break complete rewrite changes into pairs of delete and create"
 msgstr "dela upp kompletta omskrivningar till ta bort och skapa-par"
 
-#: diff.c:5476
+#: diff.c:5492
 msgid "detect renames"
 msgstr "detektera namnändringar"
 
-#: diff.c:5480
+#: diff.c:5496
 msgid "omit the preimage for deletes"
 msgstr "ta bort för-version för borttagningar"
 
-#: diff.c:5483
+#: diff.c:5499
 msgid "detect copies"
 msgstr "detektera kopior"
 
-#: diff.c:5487
+#: diff.c:5503
 msgid "use unmodified files as source to find copies"
 msgstr "använd oförändrade som källa för att hitta kopior"
 
-#: diff.c:5489
+#: diff.c:5505
 msgid "disable rename detection"
 msgstr "inaktivera detektering av namnbyten"
 
-#: diff.c:5492
+#: diff.c:5508
 msgid "use empty blobs as rename source"
 msgstr "använd tomma blob:ar som namnändringskälla"
 
-#: diff.c:5494
+#: diff.c:5510
 msgid "continue listing the history of a file beyond renames"
 msgstr "fortsätt lista historiken för en fil bortom namnändringar"
 
-#: diff.c:5497
+#: diff.c:5513
 msgid ""
 "prevent rename/copy detection if the number of rename/copy targets exceeds "
 "given limit"
@@ -3588,163 +3657,163 @@ msgstr ""
 "förhindra namnbyte/kopie-detektering om antalet namnbyten/kopior överskriver "
 "given gräns"
 
-#: diff.c:5499
+#: diff.c:5515
 msgid "Diff algorithm options"
 msgstr "Alternativ för diff-algoritm"
 
-#: diff.c:5501
+#: diff.c:5517
 msgid "produce the smallest possible diff"
 msgstr "skapa minsta möjliga diff"
 
-#: diff.c:5504
+#: diff.c:5520
 msgid "ignore whitespace when comparing lines"
 msgstr "ignorera blanktecken vid radjämförelse"
 
-#: diff.c:5507
+#: diff.c:5523
 msgid "ignore changes in amount of whitespace"
 msgstr "ignorera ändringar i antal blanktecken vid radjämförelse"
 
-#: diff.c:5510
+#: diff.c:5526
 msgid "ignore changes in whitespace at EOL"
 msgstr "ignorera blanktecken vid radslut"
 
-#: diff.c:5513
+#: diff.c:5529
 msgid "ignore carrier-return at the end of line"
 msgstr "ignorera CR-tecken vid radslut"
 
-#: diff.c:5516
+#: diff.c:5532
 msgid "ignore changes whose lines are all blank"
 msgstr "ignorera ändringar i rader som är helt blanka"
 
-#: diff.c:5518 diff.c:5540 diff.c:5543 diff.c:5588
+#: diff.c:5534 diff.c:5556 diff.c:5559 diff.c:5604
 msgid "<regex>"
 msgstr "<reguttr>"
 
-#: diff.c:5519
+#: diff.c:5535
 msgid "ignore changes whose all lines match <regex>"
 msgstr "ignorera ändringar där samtliga rader motsvarar <reguttr>"
 
-#: diff.c:5522
+#: diff.c:5538
 msgid "heuristic to shift diff hunk boundaries for easy reading"
 msgstr "heuristik för att flytta diff-gränser för lättare läsning"
 
-#: diff.c:5525
+#: diff.c:5541
 msgid "generate diff using the \"patience diff\" algorithm"
 msgstr "skapa diffar med algoritmen \"patience diff\""
 
-#: diff.c:5529
+#: diff.c:5545
 msgid "generate diff using the \"histogram diff\" algorithm"
 msgstr "skapa diffar med algoritmen \"histogram diff\""
 
-#: diff.c:5531
+#: diff.c:5547
 msgid "<algorithm>"
 msgstr "<algoritm>"
 
-#: diff.c:5532
+#: diff.c:5548
 msgid "choose a diff algorithm"
 msgstr "välj en diff-algoritm"
 
-#: diff.c:5534
+#: diff.c:5550
 msgid "<text>"
 msgstr "<text>"
 
-#: diff.c:5535
+#: diff.c:5551
 msgid "generate diff using the \"anchored diff\" algorithm"
 msgstr "skapa diffar med algoritmen \"anchored diff\""
 
-#: diff.c:5537 diff.c:5546 diff.c:5549
+#: diff.c:5553 diff.c:5562 diff.c:5565
 msgid "<mode>"
 msgstr "<läge>"
 
-#: diff.c:5538
+#: diff.c:5554
 msgid "show word diff, using <mode> to delimit changed words"
 msgstr "visa orddiff, där <läge> avgränsar ändrade ord"
 
-#: diff.c:5541
+#: diff.c:5557
 msgid "use <regex> to decide what a word is"
 msgstr "använd <reguttr> för att bestämma vad som är ett ord"
 
-#: diff.c:5544
+#: diff.c:5560
 msgid "equivalent to --word-diff=color --word-diff-regex=<regex>"
 msgstr "motsvarar --word-diff=color --word-diff-regex=<reguttr>"
 
-#: diff.c:5547
+#: diff.c:5563
 msgid "moved lines of code are colored differently"
 msgstr "flyttade kodrader färgas på annat sätt"
 
-#: diff.c:5550
+#: diff.c:5566
 msgid "how white spaces are ignored in --color-moved"
 msgstr "hur blanktecken ignoreras i --color-moved"
 
-#: diff.c:5553
+#: diff.c:5569
 msgid "Other diff options"
 msgstr "Andra diff-flaggor"
 
-#: diff.c:5555
+#: diff.c:5571
 msgid "when run from subdir, exclude changes outside and show relative paths"
 msgstr ""
 "vid start från underkatalog, uteslut ändringar utanför och visa relativa "
 "sökvägar"
 
-#: diff.c:5559
+#: diff.c:5575
 msgid "treat all files as text"
 msgstr "hantera alla filer som text"
 
-#: diff.c:5561
+#: diff.c:5577
 msgid "swap two inputs, reverse the diff"
 msgstr "växla två indatafiler, vänd diffen"
 
-#: diff.c:5563
+#: diff.c:5579
 msgid "exit with 1 if there were differences, 0 otherwise"
 msgstr "avsluta med 1 vid ändringar, annars 0"
 
-#: diff.c:5565
+#: diff.c:5581
 msgid "disable all output of the program"
 msgstr "slå av alla utdata från programmet"
 
-#: diff.c:5567
+#: diff.c:5583
 msgid "allow an external diff helper to be executed"
 msgstr "tillåt köra en extern diff-hjälpare"
 
-#: diff.c:5569
+#: diff.c:5585
 msgid "run external text conversion filters when comparing binary files"
 msgstr "kör externt textkonverteringsfiler när binärfiler jämförs"
 
-#: diff.c:5571
+#: diff.c:5587
 msgid "<when>"
 msgstr "<när>"
 
-#: diff.c:5572
+#: diff.c:5588
 msgid "ignore changes to submodules in the diff generation"
 msgstr "ignorera ändringar i undermoduler när diffen skapas"
 
-#: diff.c:5575
+#: diff.c:5591
 msgid "<format>"
 msgstr "<format>"
 
-#: diff.c:5576
+#: diff.c:5592
 msgid "specify how differences in submodules are shown"
 msgstr "ange hur ändringar i undermoduler visas"
 
-#: diff.c:5580
+#: diff.c:5596
 msgid "hide 'git add -N' entries from the index"
 msgstr "dölj \"git add -N\"-poster från indexet"
 
-#: diff.c:5583
+#: diff.c:5599
 msgid "treat 'git add -N' entries as real in the index"
 msgstr "tolka \"git add -N\"-poster som äkta i indexet"
 
-#: diff.c:5585
+#: diff.c:5601
 msgid "<string>"
 msgstr "<sträng>"
 
-#: diff.c:5586
+#: diff.c:5602
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "string"
 msgstr "se efter ändringar som ändrar antalet förekomster av angiven sträng"
 
-#: diff.c:5589
+#: diff.c:5605
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "regex"
@@ -3752,54 +3821,66 @@ msgstr ""
 "se efter ändringar som ändrar antalet förekomster av angivet reguljärt "
 "uttryck"
 
-#: diff.c:5592
+#: diff.c:5608
 msgid "show all changes in the changeset with -S or -G"
 msgstr "visa alla ändringar i ändringsuppsättningen med -S eller -G"
 
-#: diff.c:5595
+#: diff.c:5611
 msgid "treat <string> in -S as extended POSIX regular expression"
 msgstr "tolka <sträng> i -S som utökade POSIX-reguljära uttryck"
 
-#: diff.c:5598
+#: diff.c:5614
 msgid "control the order in which files appear in the output"
 msgstr "styr ordningen i vilken filer visas i utdata"
 
-#: diff.c:5599
+#: diff.c:5615 diff.c:5618
+msgid "<path>"
+msgstr "<sökväg>"
+
+#: diff.c:5616
+msgid "show the change in the specified path first"
+msgstr "visa ändringen i angiven sökväg först"
+
+#: diff.c:5619
+msgid "skip the output to the specified path"
+msgstr "hoppa över utdata fram till angiven sökväg"
+
+#: diff.c:5621
 msgid "<object-id>"
 msgstr "<objekt-id>"
 
-#: diff.c:5600
+#: diff.c:5622
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "object"
 msgstr "se efter ändringar som ändrar antalet förekomster av angivet objekt"
 
-#: diff.c:5602
+#: diff.c:5624
 msgid "[(A|C|D|M|R|T|U|X|B)...[*]]"
 msgstr "[(A|C|D|M|R|T|U|X|B)...[*]]"
 
-#: diff.c:5603
+#: diff.c:5625
 msgid "select files by diff type"
 msgstr "välj filter efter diff-typ"
 
-#: diff.c:5605
+#: diff.c:5627
 msgid "<file>"
 msgstr "<fil>"
 
-#: diff.c:5606
+#: diff.c:5628
 msgid "Output to a specific file"
 msgstr "Skriv utdata till en specifik fil"
 
-#: diff.c:6263
+#: diff.c:6285
 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:6266
+#: diff.c:6288
 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:6269
+#: diff.c:6291
 #, c-format
 msgid ""
 "you may want to set your %s variable to at least %d and retry the command."
@@ -3811,10 +3892,15 @@ msgstr ""
 msgid "failed to read orderfile '%s'"
 msgstr "kunde inte läsa orderfilen \"%s\""
 
-#: diffcore-rename.c:592
+#: diffcore-rename.c:786
 msgid "Performing inexact rename detection"
 msgstr "Utför onöjaktig namnbytesdetektering"
 
+#: diffcore-rotate.c:29
+#, c-format
+msgid "No such path '%s' in the diff"
+msgstr "Sökvägen \"%s\" finns inte i diffen"
+
 #: dir.c:578
 #, c-format
 msgid "pathspec '%s' did not match any file(s) known to git"
@@ -3859,17 +3945,17 @@ msgstr "misslyckades hämta kärnans namn och information"
 msgid "untracked cache is disabled on this system or location"
 msgstr "ospårad cache är inaktiverad på systemet eller platsen"
 
-#: dir.c:3520
+#: dir.c:3534
 #, c-format
 msgid "index file corrupt in repo %s"
 msgstr "indexfilen trasig i arkivet %s"
 
-#: dir.c:3565 dir.c:3570
+#: dir.c:3579 dir.c:3584
 #, c-format
 msgid "could not create directories for %s"
 msgstr "kunde inte skapa kataloger för %s"
 
-#: dir.c:3599
+#: dir.c:3613
 #, c-format
 msgid "could not migrate git directory from '%s' to '%s'"
 msgstr "kunde inte migrera git-katalog från \"%s\" till \"%s\""
@@ -3888,12 +3974,12 @@ msgstr "Filtrerar innehåll"
 msgid "could not stat file '%s'"
 msgstr "kunde inte ta status på filen \"%s\""
 
-#: environment.c:150
+#: environment.c:152
 #, c-format
 msgid "bad git namespace path \"%s\""
 msgstr "felaktig git-namnrymdssökväg \"%s\""
 
-#: environment.c:337
+#: environment.c:335
 #, c-format
 msgid "could not set GIT_DIR to '%s'"
 msgstr "kunde inte ställa in GIT_DIR till \"%s\""
@@ -3928,32 +4014,32 @@ msgstr "kunde inte skriva till fjärren"
 msgid "--stateless-rpc requires multi_ack_detailed"
 msgstr "--stateless-rpc kräver \"multi_ack_detailed\""
 
-#: fetch-pack.c:378 fetch-pack.c:1406
+#: fetch-pack.c:378 fetch-pack.c:1457
 #, c-format
 msgid "invalid shallow line: %s"
 msgstr "ogiltig \"shallow\"-rad: %s"
 
-#: fetch-pack.c:384 fetch-pack.c:1412
+#: fetch-pack.c:384 fetch-pack.c:1463
 #, c-format
 msgid "invalid unshallow line: %s"
 msgstr "ogiltig \"unshallow\"-rad: %s"
 
-#: fetch-pack.c:386 fetch-pack.c:1414
+#: fetch-pack.c:386 fetch-pack.c:1465
 #, c-format
 msgid "object not found: %s"
 msgstr "objektet hittades inte: %s"
 
-#: fetch-pack.c:389 fetch-pack.c:1417
+#: fetch-pack.c:389 fetch-pack.c:1468
 #, c-format
 msgid "error in object: %s"
 msgstr "fel i objekt: %s"
 
-#: fetch-pack.c:391 fetch-pack.c:1419
+#: fetch-pack.c:391 fetch-pack.c:1470
 #, c-format
 msgid "no shallow found: %s"
 msgstr "ingen \"shallow\" hittades: %s"
 
-#: fetch-pack.c:394 fetch-pack.c:1423
+#: fetch-pack.c:394 fetch-pack.c:1474
 #, c-format
 msgid "expected shallow/unshallow, got %s"
 msgstr "förväntade shallow/unshallow, fick %s"
@@ -3991,172 +4077,176 @@ msgstr "Markerar %s som komplett"
 msgid "already have %s (%s)"
 msgstr "har redan %s (%s)"
 
-#: fetch-pack.c:827
+#: fetch-pack.c:844
 msgid "fetch-pack: unable to fork off sideband demultiplexer"
 msgstr "fetch-patch: kunde inte grena av sidbandsmultiplexare"
 
-#: fetch-pack.c:835
+#: fetch-pack.c:852
 msgid "protocol error: bad pack header"
 msgstr "protokollfel: felaktigt packhuvud"
 
-#: fetch-pack.c:919
+#: fetch-pack.c:946
 #, c-format
 msgid "fetch-pack: unable to fork off %s"
 msgstr "fetch-patch: kunde inte grena av %s"
 
-#: fetch-pack.c:937
+#: fetch-pack.c:952
+msgid "fetch-pack: invalid index-pack output"
+msgstr "fetch-patch: ogiltig utdata från index-pack"
+
+#: fetch-pack.c:969
 #, c-format
 msgid "%s failed"
 msgstr "%s misslyckades"
 
-#: fetch-pack.c:939
+#: fetch-pack.c:971
 msgid "error in sideband demultiplexer"
 msgstr "fel i sidbands-avmultiplexare"
 
-#: fetch-pack.c:982
+#: fetch-pack.c:1031
 #, c-format
 msgid "Server version is %.*s"
 msgstr "Serverversionen är %.*s"
 
-#: fetch-pack.c:990 fetch-pack.c:996 fetch-pack.c:999 fetch-pack.c:1005
-#: fetch-pack.c:1009 fetch-pack.c:1013 fetch-pack.c:1017 fetch-pack.c:1021
-#: fetch-pack.c:1025 fetch-pack.c:1029 fetch-pack.c:1033 fetch-pack.c:1037
-#: fetch-pack.c:1043 fetch-pack.c:1049 fetch-pack.c:1054 fetch-pack.c:1059
+#: fetch-pack.c:1039 fetch-pack.c:1045 fetch-pack.c:1048 fetch-pack.c:1054
+#: fetch-pack.c:1058 fetch-pack.c:1062 fetch-pack.c:1066 fetch-pack.c:1070
+#: fetch-pack.c:1074 fetch-pack.c:1078 fetch-pack.c:1082 fetch-pack.c:1086
+#: fetch-pack.c:1092 fetch-pack.c:1098 fetch-pack.c:1103 fetch-pack.c:1108
 #, c-format
 msgid "Server supports %s"
 msgstr "Servern stöder %s"
 
-#: fetch-pack.c:992
+#: fetch-pack.c:1041
 msgid "Server does not support shallow clients"
 msgstr "Servern stöder inte klienter med grunda arkiv"
 
-#: fetch-pack.c:1052
+#: fetch-pack.c:1101
 msgid "Server does not support --shallow-since"
 msgstr "Servern stöder inte --shallow-since"
 
-#: fetch-pack.c:1057
+#: fetch-pack.c:1106
 msgid "Server does not support --shallow-exclude"
 msgstr "Servern stöder inte --shallow-exclude"
 
-#: fetch-pack.c:1061
+#: fetch-pack.c:1110
 msgid "Server does not support --deepen"
 msgstr "Servern stöder inte --deepen"
 
-#: fetch-pack.c:1063
+#: fetch-pack.c:1112
 msgid "Server does not support this repository's object format"
 msgstr "Servern stöder inte det här arkivets objektformat"
 
-#: fetch-pack.c:1076
+#: fetch-pack.c:1125
 msgid "no common commits"
 msgstr "inga gemensamma incheckningar"
 
-#: fetch-pack.c:1088 fetch-pack.c:1628
+#: fetch-pack.c:1138 fetch-pack.c:1682
 msgid "git fetch-pack: fetch failed."
 msgstr "git fetch-patch: hämtning misslyckades."
 
-#: fetch-pack.c:1214
+#: fetch-pack.c:1265
 #, c-format
 msgid "mismatched algorithms: client %s; server %s"
 msgstr "omaka algoritmer: klient %s; server %s"
 
-#: fetch-pack.c:1218
+#: fetch-pack.c:1269
 #, c-format
 msgid "the server does not support algorithm '%s'"
 msgstr "servern stöder inte algoritmen \"%s\""
 
-#: fetch-pack.c:1238
+#: fetch-pack.c:1289
 msgid "Server does not support shallow requests"
 msgstr "Servern stöder inte grunda förfrågningar"
 
-#: fetch-pack.c:1245
+#: fetch-pack.c:1296
 msgid "Server supports filter"
 msgstr "Servern stöder filter"
 
-#: fetch-pack.c:1284
+#: fetch-pack.c:1335
 msgid "unable to write request to remote"
 msgstr "kunde inte skriva anrop till fjärren"
 
-#: fetch-pack.c:1302
+#: fetch-pack.c:1353
 #, c-format
 msgid "error reading section header '%s'"
 msgstr "fel vid läsning av styckehuvudet \"%s\""
 
-#: fetch-pack.c:1308
+#: fetch-pack.c:1359
 #, c-format
 msgid "expected '%s', received '%s'"
 msgstr "förväntade \"%s\", tog emot \"%s\""
 
-#: fetch-pack.c:1369
+#: fetch-pack.c:1420
 #, c-format
 msgid "unexpected acknowledgment line: '%s'"
 msgstr "oväntad bekräftelserad: \"%s\""
 
-#: fetch-pack.c:1374
+#: fetch-pack.c:1425
 #, c-format
 msgid "error processing acks: %d"
 msgstr "fel vid hantering av bekräftelser: %d"
 
-#: fetch-pack.c:1384
+#: fetch-pack.c:1435
 msgid "expected packfile to be sent after 'ready'"
 msgstr "väntade att paketfil skulle sändas efter \"ready\""
 
-#: fetch-pack.c:1386
+#: fetch-pack.c:1437
 msgid "expected no other sections to be sent after no 'ready'"
 msgstr ""
 "väntade inte att några ytterligare sektioner skulle sändas efter \"ready\""
 
-#: fetch-pack.c:1428
+#: fetch-pack.c:1479
 #, c-format
 msgid "error processing shallow info: %d"
 msgstr "fel vid hantering av grund (\"shallow\") info: %d"
 
-#: fetch-pack.c:1475
+#: fetch-pack.c:1526
 #, c-format
 msgid "expected wanted-ref, got '%s'"
 msgstr "förväntade wanted-ref, fick %s"
 
-#: fetch-pack.c:1480
+#: fetch-pack.c:1531
 #, c-format
 msgid "unexpected wanted-ref: '%s'"
 msgstr "oväntad wanted-ref: \"%s\""
 
-#: fetch-pack.c:1485
+#: fetch-pack.c:1536
 #, c-format
 msgid "error processing wanted refs: %d"
 msgstr "fel vid hantering av önskade referenser: %d"
 
-#: fetch-pack.c:1515
+#: fetch-pack.c:1566
 msgid "git fetch-pack: expected response end packet"
 msgstr "git fetch-pack: förväntade svarsavslutningspaket"
 
-#: fetch-pack.c:1897
+#: fetch-pack.c:1960
 msgid "no matching remote head"
 msgstr "inget motsvarande fjärrhuvud"
 
-#: fetch-pack.c:1920 builtin/clone.c:693
+#: fetch-pack.c:1983 builtin/clone.c:693
 msgid "remote did not send all necessary objects"
 msgstr "fjärren sände inte alla nödvändiga objekt"
 
-#: fetch-pack.c:1947
+#: fetch-pack.c:2010
 #, c-format
 msgid "no such remote ref %s"
 msgstr "ingen sådan fjärreferens: %s"
 
-#: fetch-pack.c:1950
+#: fetch-pack.c:2013
 #, 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:272
+#: gpg-interface.c:273
 msgid "could not create temporary file"
 msgstr "kunde inte skapa temporära fil"
 
-#: gpg-interface.c:275
+#: gpg-interface.c:276
 #, c-format
 msgid "failed writing detached signature to '%s'"
 msgstr "misslyckades skriva fristående signatur till \"%s\""
 
-#: gpg-interface.c:457
+#: gpg-interface.c:470
 msgid "gpg failed to sign the data"
 msgstr "gpg misslyckades signera data"
 
@@ -4165,7 +4255,7 @@ msgstr "gpg misslyckades signera data"
 msgid "ignore invalid color '%.*s' in log.graphColors"
 msgstr "ignorera felaktig färg \"%.*s\" i log.graphColors"
 
-#: grep.c:640
+#: grep.c:543
 msgid ""
 "given pattern contains NULL byte (via -f <file>). This is only supported "
 "with -P under PCRE v2"
@@ -4173,18 +4263,18 @@ msgstr ""
 "angivet mönster innehåller NULL-byte (via -f <fil>). Detta stöds endast med -"
 "P under PCRE v2"
 
-#: grep.c:2100
+#: grep.c:1906
 #, c-format
 msgid "'%s': unable to read %s"
 msgstr "\"%s\" kunde inte läsa %s"
 
-#: grep.c:2117 setup.c:176 builtin/clone.c:412 builtin/diff.c:89
+#: grep.c:1923 setup.c:176 builtin/clone.c:412 builtin/diff.c:90
 #: builtin/rm.c:135
 #, c-format
 msgid "failed to stat '%s'"
 msgstr "misslyckades ta status på \"%s\""
 
-#: grep.c:2128
+#: grep.c:1934
 #, c-format
 msgid "'%s': short read"
 msgstr "\"%s\": kort läsning"
@@ -4254,7 +4344,7 @@ msgstr "git-kommandon från andra platser i din $PATH"
 msgid "These are common Git commands used in various situations:"
 msgstr "Dessa vanliga Git-kommandon används i olika situationer:"
 
-#: help.c:365 git.c:99
+#: help.c:365 git.c:100
 #, c-format
 msgid "unsupported command listing type '%s'"
 msgstr "okänd kommandolisttyp \"%s\""
@@ -4493,130 +4583,52 @@ msgstr ""
 msgid "Unable to create '%s.lock': %s"
 msgstr "Kunde inte skapa \"%s.lock\": %s"
 
-#: ls-refs.c:109
-msgid "expected flush after ls-refs arguments"
-msgstr "förväntade \"flush\" efter ls-refs-argument"
-
-#: merge-ort-wrappers.c:13 merge-recursive.c:3672
-#, c-format
-msgid ""
-"Your local changes to the following files would be overwritten by merge:\n"
-"  %s"
-msgstr ""
-"Dina lokala ändringar av följande filer skulle skrivas över av "
-"sammanslagning:\n"
-"  %s"
-
-#: merge-ort-wrappers.c:33 merge-recursive.c:3436
-#, c-format
-msgid "Already up to date!"
-msgstr "Redan à jour!"
-
-#: merge-recursive.c:356
-msgid "(bad commit)\n"
-msgstr "(felaktig incheckning)\n"
-
-#: merge-recursive.c:379
-#, 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:388
-#, c-format
-msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
-msgstr ""
-"add_cacheinfo misslyckades uppdatera för sökvägen \"%s\"; avslutar "
-"sammanslagningen."
-
-#: merge-recursive.c:874
-#, c-format
-msgid "failed to create path '%s'%s"
-msgstr "misslyckades skapa sökvägen \"%s\"%s"
-
-#: merge-recursive.c:885
-#, 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:899 merge-recursive.c:918
-msgid ": perhaps a D/F conflict?"
-msgstr ": kanske en K/F-konflikt?"
-
-#: merge-recursive.c:908
-#, c-format
-msgid "refusing to lose untracked file at '%s'"
-msgstr "vägrar förlora ospårad fil vid \"%s\""
-
-#: merge-recursive.c:949 builtin/cat-file.c:41
-#, c-format
-msgid "cannot read object %s '%s'"
-msgstr "kan inte läsa objektet %s: \"%s\""
-
-#: merge-recursive.c:954
-#, c-format
-msgid "blob expected for %s '%s'"
-msgstr "blob förväntades för %s \"%s\""
-
-#: merge-recursive.c:979
-#, c-format
-msgid "failed to open '%s': %s"
-msgstr "misslyckades öppna \"%s\": %s"
-
-#: merge-recursive.c:990
+#: ls-refs.c:37
 #, c-format
-msgid "failed to symlink '%s': %s"
-msgstr "misslyckades skapa symboliska länken \"%s\": %s"
+msgid "invalid value '%s' for lsrefs.unborn"
+msgstr "ogiltigt värde \"%s\" för lsrefs.unborn"
 
-#: merge-recursive.c:995
-#, c-format
-msgid "do not know what to do with %06o %s '%s'"
-msgstr "vet inte hur %06o %s \"%s\" ska hanteras"
+#: ls-refs.c:167
+msgid "expected flush after ls-refs arguments"
+msgstr "förväntade \"flush\" efter ls-refs-argument"
 
-#: merge-recursive.c:1191
+#: merge-ort.c:888 merge-recursive.c:1191
 #, c-format
 msgid "Failed to merge submodule %s (not checked out)"
 msgstr "Misslyckades slå ihop undermodulen %s (ej utcheckad)"
 
-#: merge-recursive.c:1198
+#: merge-ort.c:897 merge-recursive.c:1198
 #, c-format
 msgid "Failed to merge submodule %s (commits not present)"
 msgstr "Misslyckades slå ihop undermodulen %s (incheckningar saknas)"
 
-#: merge-recursive.c:1205
+#: merge-ort.c:906 merge-recursive.c:1205
 #, 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:1213 merge-recursive.c:1225
+#: merge-ort.c:916 merge-ort.c:923
 #, c-format
-msgid "Fast-forwarding submodule %s to the following commit:"
-msgstr "Snabbspolar undermodulen %s till följande incheckning:"
+msgid "Note: Fast-forwarding submodule %s to %s"
+msgstr "Obs: Snabbspolar undermodulen %s till %s"
 
-#: merge-recursive.c:1216 merge-recursive.c:1228
+#: merge-ort.c:944
 #, c-format
-msgid "Fast-forwarding submodule %s"
-msgstr "Snabbspolar undermodulen %s"
+msgid "Failed to merge submodule %s"
+msgstr "Misslyckades slå ihop undermodulen %s"
 
-#: merge-recursive.c:1251
+#: merge-ort.c:951
 #, c-format
-msgid "Failed to merge submodule %s (merge following commits not found)"
+msgid ""
+"Failed to merge submodule %s, but a possible merge resolution exists:\n"
+"%s\n"
 msgstr ""
-"Misslyckades slå ihop undermodulen %s (sammanslagning efter incheckningar "
-"hittades inte)"
-
-#: merge-recursive.c:1255
-#, c-format
-msgid "Failed to merge submodule %s (not fast-forward)"
-msgstr "Misslyckades slå ihop undermodulen %s (ej snabbspolning)"
-
-#: merge-recursive.c:1256
-msgid "Found a possible merge resolution for the submodule:\n"
-msgstr "Hittade en möjlig lösning av sammanslagning för undermodulen:\n"
+"Misslyckades slå ihop undermodulen %s, men en möjlig lösning finns:\n"
+"%s\n"
 
-#: merge-recursive.c:1259
+#: merge-ort.c:955 merge-recursive.c:1259
 #, c-format
 msgid ""
 "If this is correct simply add it to the index for example\n"
@@ -4633,69 +4645,338 @@ msgstr ""
 "\n"
 "vilket godtar lösningen.\n"
 
-#: merge-recursive.c:1268
+#: merge-ort.c:968
 #, c-format
-msgid "Failed to merge submodule %s (multiple merges found)"
+msgid ""
+"Failed to merge submodule %s, but multiple possible merges exist:\n"
+"%s"
 msgstr ""
-"Misslyckades slå ihop undermodulen %s (flera sammanslagningar hittades)"
+"Misslyckades slå ihop undermodulen %s, men flera möjliga sammanslagningar "
+"finns:\n"
+"%s"
 
-#: merge-recursive.c:1341
+#: merge-ort.c:1127 merge-recursive.c:1341
 msgid "Failed to execute internal merge"
 msgstr "Misslyckades exekvera intern sammanslagning"
 
-#: merge-recursive.c:1346
+#: merge-ort.c:1132 merge-recursive.c:1346
 #, c-format
 msgid "Unable to add %s to database"
 msgstr "Kunde inte lägga till %s till databasen"
 
-#: merge-recursive.c:1378
+#: merge-ort.c:1139 merge-recursive.c:1378
 #, c-format
 msgid "Auto-merging %s"
 msgstr "Slår ihop %s automatiskt"
 
-#: merge-recursive.c:1402
+#: merge-ort.c:1278 merge-recursive.c:2100
 #, 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."
+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:1474
+#: merge-ort.c:1288 merge-recursive.c:2110
 #, c-format
 msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
-"in tree."
+"CONFLICT (implicit dir rename): Cannot map more than one path to %s; "
+"implicit directory renames tried to put these paths there: %s"
 msgstr ""
-"KONFLIKT (%s/radera): %s raderad i %s och %s i %s. Versionen %s av %s lämnad "
-"i trädet."
+"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:1479
+#: merge-ort.c:1471
 #, c-format
 msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
-"left in tree."
+"CONFLICT (directory rename split): Unclear where to rename %s to; it was "
+"renamed to multiple other directories, with no destination getting a "
+"majority of the files."
 msgstr ""
-"KONFLIKT (%s/radera): %s raderad i %s och %s till %s i %s. Versionen %s av "
-"%s lämnad i trädet."
+"KONFLIKT (namnändrad delad katalog): Osäker på var %s ska namnbytas till; "
+"den har namnbytts till flera andra kataloger, utan att någon destination "
+"fick en majoritet av filerna."
 
-#: merge-recursive.c:1486
+#: merge-ort.c:1637 merge-recursive.c:2447
 #, c-format
 msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
-"in tree at %s."
+"WARNING: Avoiding applying %s -> %s rename to %s, because %s itself was "
+"renamed."
 msgstr ""
-"KONFLIKT (%s/radera): %s raderad i %s och %s i %s. Versionen %s av %s lämnad "
-"i trädet vid %s."
+"VARNING: Undviker att applicera namnändring %s -> %s på %s, då %s själv har "
+"bytt namn."
 
-#: merge-recursive.c:1491
+#: merge-ort.c:1781 merge-recursive.c:3215
 #, 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."
+"Path updated: %s added in %s inside a directory that was renamed in %s; "
+"moving it to %s."
 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."
+"Uppdaterad sökväg: %s lade till %s inuti en katalog som bytte namn i %s; "
+"flyttar den till %s."
 
-#: merge-recursive.c:1526
-msgid "rename"
+#: merge-ort.c:1788 merge-recursive.c:3222
+#, c-format
+msgid ""
+"Path updated: %s renamed to %s in %s, inside a directory that was renamed in "
+"%s; moving it to %s."
+msgstr ""
+"Uppdaterad sökväg: %s bytte namn till %s i %s, inuti en katalog som bytte "
+"namn i %s; flyttar den till %s."
+
+#: merge-ort.c:1801 merge-recursive.c:3218
+#, c-format
+msgid ""
+"CONFLICT (file location): %s added in %s inside a directory that was renamed "
+"in %s, suggesting it should perhaps be moved to %s."
+msgstr ""
+"KONFLIKT (filplacering): %s lade till %s inuti en katalog som bytte namn i "
+"%s, föreslår att den bör flyttas till%s."
+
+#: merge-ort.c:1809 merge-recursive.c:3225
+#, c-format
+msgid ""
+"CONFLICT (file location): %s renamed to %s in %s, inside a directory that "
+"was renamed in %s, suggesting it should perhaps be moved to %s."
+msgstr ""
+"KONFLIKT (filplacering): %s bytte namn till %s i %s, inuti en katalog som "
+"bytte namn i %s; flyttar den till %s."
+
+#: merge-ort.c:1952
+#, c-format
+msgid "CONFLICT (rename/rename): %s renamed to %s in %s and to %s in %s."
+msgstr ""
+"KONFLIKT (namnbyte/namnbyte): %s namnbytt till %s i %s och till %s i %s."
+
+#: merge-ort.c:2047
+#, c-format
+msgid ""
+"CONFLICT (rename involved in collision): rename of %s -> %s has content "
+"conflicts AND collides with another path; this may result in nested conflict "
+"markers."
+msgstr ""
+"KONFLIKT (namnbyte involverad i krock): namnbyte av %s -> %s har "
+"innehållskonflikter OCH krockar med en annan sökväg; detta kan leda till "
+"nästlade konfliktmarkörer."
+
+#: merge-ort.c:2066 merge-ort.c:2090
+#, c-format
+msgid "CONFLICT (rename/delete): %s renamed to %s in %s, but deleted in %s."
+msgstr ""
+"KONFLIKT (namnbyte/radera): %s namnbytt till %s i %s, men borttagen i %s."
+
+#: merge-ort.c:2735
+#, c-format
+msgid ""
+"CONFLICT (file/directory): directory in the way of %s from %s; moving it to "
+"%s instead."
+msgstr ""
+"KONFLIKT (fil/katalog): katalogen är i vägen för %s från %s; flyttar den "
+"till %s istället."
+
+#: merge-ort.c:2808
+#, c-format
+msgid ""
+"CONFLICT (distinct types): %s had different types on each side; renamed %s "
+"of them so each can be recorded somewhere."
+msgstr ""
+"KONFLIKT (olika typer): %s hade olika typer på varje sida; namnbytte %s så "
+"att de kan protokollföras någonstans."
+
+#: merge-ort.c:2812
+msgid "both"
+msgstr "båda"
+
+#: merge-ort.c:2812
+msgid "one"
+msgstr "en"
+
+#: merge-ort.c:2907 merge-recursive.c:3052
+msgid "content"
+msgstr "innehåll"
+
+#: merge-ort.c:2909 merge-recursive.c:3056
+msgid "add/add"
+msgstr "tillägg/tillägg"
+
+#: merge-ort.c:2911 merge-recursive.c:3101
+msgid "submodule"
+msgstr "undermodul"
+
+#: merge-ort.c:2913 merge-recursive.c:3102
+#, c-format
+msgid "CONFLICT (%s): Merge conflict in %s"
+msgstr "KONFLIKT (%s): Sammanslagningskonflikt i %s"
+
+#: merge-ort.c:2938
+#, c-format
+msgid ""
+"CONFLICT (modify/delete): %s deleted in %s and modified in %s.  Version %s "
+"of %s left in tree."
+msgstr ""
+"KONFLIKT (ändra/radera): %s raderad i %s och ändrad i %s. Versionen %s av %s "
+"lämnad i trädet."
+
+#. TRANSLATORS: The %s arguments are: 1) tree hash of a merge
+#. base, and 2-3) the trees for the two trees we're merging.
+#.
+#: merge-ort.c:3406
+#, c-format
+msgid "collecting merge info failed for trees %s, %s, %s"
+msgstr "samling av sammanslagningsinfo misslyckades för träden %s, %s, %s"
+
+#: merge-ort-wrappers.c:13 merge-recursive.c:3661
+#, c-format
+msgid ""
+"Your local changes to the following files would be overwritten by merge:\n"
+"  %s"
+msgstr ""
+"Dina lokala ändringar av följande filer skulle skrivas över av "
+"sammanslagning:\n"
+"  %s"
+
+#: merge-ort-wrappers.c:33 merge-recursive.c:3436
+#, c-format
+msgid "Already up to date!"
+msgstr "Redan à jour!"
+
+#: merge-recursive.c:356
+msgid "(bad commit)\n"
+msgstr "(felaktig incheckning)\n"
+
+#: merge-recursive.c:379
+#, 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:388
+#, c-format
+msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
+msgstr ""
+"add_cacheinfo misslyckades uppdatera för sökvägen \"%s\"; avslutar "
+"sammanslagningen."
+
+#: merge-recursive.c:874
+#, c-format
+msgid "failed to create path '%s'%s"
+msgstr "misslyckades skapa sökvägen \"%s\"%s"
+
+#: merge-recursive.c:885
+#, 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:899 merge-recursive.c:918
+msgid ": perhaps a D/F conflict?"
+msgstr ": kanske en K/F-konflikt?"
+
+#: merge-recursive.c:908
+#, c-format
+msgid "refusing to lose untracked file at '%s'"
+msgstr "vägrar förlora ospårad fil vid \"%s\""
+
+#: merge-recursive.c:949 builtin/cat-file.c:41
+#, c-format
+msgid "cannot read object %s '%s'"
+msgstr "kan inte läsa objektet %s: \"%s\""
+
+#: merge-recursive.c:954
+#, c-format
+msgid "blob expected for %s '%s'"
+msgstr "blob förväntades för %s \"%s\""
+
+#: merge-recursive.c:979
+#, c-format
+msgid "failed to open '%s': %s"
+msgstr "misslyckades öppna \"%s\": %s"
+
+#: merge-recursive.c:990
+#, c-format
+msgid "failed to symlink '%s': %s"
+msgstr "misslyckades skapa symboliska länken \"%s\": %s"
+
+#: merge-recursive.c:995
+#, c-format
+msgid "do not know what to do with %06o %s '%s'"
+msgstr "vet inte hur %06o %s \"%s\" ska hanteras"
+
+#: merge-recursive.c:1213 merge-recursive.c:1225
+#, c-format
+msgid "Fast-forwarding submodule %s to the following commit:"
+msgstr "Snabbspolar undermodulen %s till följande incheckning:"
+
+#: merge-recursive.c:1216 merge-recursive.c:1228
+#, c-format
+msgid "Fast-forwarding submodule %s"
+msgstr "Snabbspolar undermodulen %s"
+
+#: merge-recursive.c:1251
+#, 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:1255
+#, c-format
+msgid "Failed to merge submodule %s (not fast-forward)"
+msgstr "Misslyckades slå ihop undermodulen %s (ej snabbspolning)"
+
+#: merge-recursive.c:1256
+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:1268
+#, c-format
+msgid "Failed to merge submodule %s (multiple merges found)"
+msgstr ""
+"Misslyckades slå ihop undermodulen %s (flera sammanslagningar hittades)"
+
+#: merge-recursive.c:1402
+#, 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:1474
+#, c-format
+msgid ""
+"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
+"in tree."
+msgstr ""
+"KONFLIKT (%s/radera): %s raderad i %s och %s i %s. Versionen %s av %s lämnad "
+"i trädet."
+
+#: merge-recursive.c:1479
+#, c-format
+msgid ""
+"CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
+"left in tree."
+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:1486
+#, c-format
+msgid ""
+"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
+"in tree at %s."
+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:1491
+#, 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 ""
+"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:1526
+msgid "rename"
 msgstr "namnbyte"
 
 #: merge-recursive.c:1526
@@ -4757,24 +5038,6 @@ msgstr ""
 "katalogen %s bytte namn till flera andra kataloger, utan att någon "
 "destination fick en majoritet av filerna."
 
-#: merge-recursive.c:2100
-#, c-format
-msgid ""
-"CONFLICT (implicit dir rename): Existing file/dir at %s in the way of "
-"implicit directory rename(s) putting the following path(s) there: %s."
-msgstr ""
-"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:2110
-#, c-format
-msgid ""
-"CONFLICT (implicit dir rename): Cannot map more than one path to %s; "
-"implicit directory renames tried to put these paths there: %s"
-msgstr ""
-"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:2202
 #, c-format
 msgid ""
@@ -4784,15 +5047,6 @@ msgstr ""
 "KONFLIKT (namnbyte/namnbyte): Namnbytt katalog %s->%s i %s. Namnbytt katalog "
 "%s->%s i %s"
 
-#: merge-recursive.c:2447
-#, 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:2973
 #, c-format
 msgid "cannot read object %s"
@@ -4811,70 +5065,17 @@ msgstr "ändra"
 msgid "modified"
 msgstr "ändrad"
 
-#: merge-recursive.c:3052
-msgid "content"
-msgstr "innehåll"
-
-#: merge-recursive.c:3056
-msgid "add/add"
-msgstr "tillägg/tillägg"
-
 #: merge-recursive.c:3079
 #, c-format
 msgid "Skipped %s (merged same as existing)"
 msgstr "Hoppade över %s (sammanslagen samma som befintlig)"
 
-#: merge-recursive.c:3101
-msgid "submodule"
-msgstr "undermodul"
-
-#: merge-recursive.c:3102
-#, c-format
-msgid "CONFLICT (%s): Merge conflict in %s"
-msgstr "KONFLIKT (%s): Sammanslagningskonflikt i %s"
-
 #: merge-recursive.c:3132
 #, c-format
 msgid "Adding as %s instead"
 msgstr "Lägger till som %s istället"
 
-#: merge-recursive.c:3215
-#, c-format
-msgid ""
-"Path updated: %s added in %s inside a directory that was renamed in %s; "
-"moving it to %s."
-msgstr ""
-"Uppdaterad sökväg: %s lade till %s inuti en katalog som bytte namn i %s; "
-"flyttar den till %s."
-
-#: merge-recursive.c:3218
-#, c-format
-msgid ""
-"CONFLICT (file location): %s added in %s inside a directory that was renamed "
-"in %s, suggesting it should perhaps be moved to %s."
-msgstr ""
-"KONFLIKT (filplacering): %s lade till %s inuti en katalog som bytte namn i "
-"%s, föreslår att den bör flyttas till%s."
-
-#: merge-recursive.c:3222
-#, c-format
-msgid ""
-"Path updated: %s renamed to %s in %s, inside a directory that was renamed in "
-"%s; moving it to %s."
-msgstr ""
-"Uppdaterad sökväg: %s bytte namn till %s i %s, inuti en katalog som bytte "
-"namn i %s; flyttar den till %s."
-
-#: merge-recursive.c:3225
-#, c-format
-msgid ""
-"CONFLICT (file location): %s renamed to %s in %s, inside a directory that "
-"was renamed in %s, suggesting it should perhaps be moved to %s."
-msgstr ""
-"KONFLIKT (filplacering): %s bytte namn till %s i %s, inuti en katalog som "
-"bytte namn i %s; flyttar den till %s."
-
-#: merge-recursive.c:3339
+#: merge-recursive.c:3339
 #, c-format
 msgid "Removing %s"
 msgstr "Tar bort %s"
@@ -4908,27 +5109,28 @@ msgstr "KONFLIKT (tillägg/tillägg): Sammanslagningskonflikt i %s"
 msgid "merging of trees %s and %s failed"
 msgstr "sammanslagning av träden %s och %s misslyckades"
 
-#: merge-recursive.c:3550
+#: merge-recursive.c:3539
 msgid "Merging:"
 msgstr "Slår ihop:"
 
-#: merge-recursive.c:3563
+#: merge-recursive.c:3552
 #, 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:3613
+#: merge-recursive.c:3602
 msgid "merge returned no commit"
 msgstr "sammanslagningen returnerade ingen incheckning"
 
-#: merge-recursive.c:3769
+#: merge-recursive.c:3758
 #, c-format
 msgid "Could not parse object '%s'"
 msgstr "Kunde inte tolka objektet \"%s\""
 
-#: merge-recursive.c:3787 builtin/merge.c:711 builtin/merge.c:895
+#: merge-recursive.c:3776 builtin/merge.c:712 builtin/merge.c:896
+#: builtin/stash.c:471
 msgid "Unable to write index."
 msgstr "Kunde inte skriva indexet."
 
@@ -4936,185 +5138,177 @@ msgstr "Kunde inte skriva indexet."
 msgid "failed to read the cache"
 msgstr "misslyckades läsa cachen"
 
-#: merge.c:109 rerere.c:720 builtin/am.c:1883 builtin/am.c:1917
-#: builtin/checkout.c:573 builtin/checkout.c:829 builtin/clone.c:817
+#: merge.c:109 rerere.c:704 builtin/am.c:1883 builtin/am.c:1917
+#: builtin/checkout.c:575 builtin/checkout.c:828 builtin/clone.c:817
 #: builtin/stash.c:265
 msgid "unable to write new index file"
 msgstr "kunde inte skriva ny indexfil"
 
-#: midx.c:80
+#: midx.c:62
+msgid "multi-pack-index OID fanout is of the wrong size"
+msgstr "multi-pack-indexets OID-utbredning har fel storlek"
+
+#: midx.c:93
 #, c-format
 msgid "multi-pack-index file %s is too small"
 msgstr "multi-pack-indexfilen %s är för liten"
 
-#: midx.c:96
+#: midx.c:109
 #, c-format
 msgid "multi-pack-index signature 0x%08x does not match signature 0x%08x"
 msgstr "multi-pack-indexsignaturen 0x%08x stämmer inte med signaturen 0x%08x"
 
-#: midx.c:101
+#: midx.c:114
 #, c-format
 msgid "multi-pack-index version %d not recognized"
 msgstr "multi-pack-indexversionen %d stöds inte"
 
-#: midx.c:106
+#: midx.c:119
 #, c-format
 msgid "multi-pack-index hash version %u does not match version %u"
 msgstr "multi-pack-index-hashversionen %u stämmer inte med versionen %u"
 
-#: midx.c:123
-msgid "invalid chunk offset (too large)"
-msgstr "felaktigt offset för stycke (för stort)"
-
-#: midx.c:147
-msgid "terminating multi-pack-index chunk id appears earlier than expected"
-msgstr "avslutande multi-pack-index-stycke-id förekommer tidigare än förväntat"
-
-#: midx.c:160
+#: midx.c:136
 msgid "multi-pack-index missing required pack-name chunk"
 msgstr "multi-pack-index saknar krävd paketnamn-stycke"
 
-#: midx.c:162
+#: midx.c:138
 msgid "multi-pack-index missing required OID fanout chunk"
 msgstr "multi-pack-index saknar krävt OID-utbredningsstycke"
 
-#: midx.c:164
+#: midx.c:140
 msgid "multi-pack-index missing required OID lookup chunk"
 msgstr "multi-pack-index saknar krävt OID-uppslagnignsstycke"
 
-#: midx.c:166
+#: midx.c:142
 msgid "multi-pack-index missing required object offsets chunk"
 msgstr "multi-pack-index saknar krävt objekt-offsetstycke"
 
-#: midx.c:180
+#: midx.c:158
 #, c-format
 msgid "multi-pack-index pack names out of order: '%s' before '%s'"
 msgstr "multi-pack-index-paketnamn i fel ordning: \"%s\" före \"%s\""
 
-#: midx.c:223
+#: midx.c:202
 #, c-format
 msgid "bad pack-int-id: %u (%u total packs)"
 msgstr "bad pack-int-id: %u (%u paket totalt)"
 
-#: midx.c:273
+#: midx.c:252
 msgid "multi-pack-index stores a 64-bit offset, but off_t is too small"
 msgstr "multi-pack-index skriver 64-bitars offset, men off_t är för liten"
 
-#: midx.c:480
+#: midx.c:467
 #, c-format
 msgid "failed to add packfile '%s'"
 msgstr "misslyckades läsa paketfilen \"%s\""
 
-#: midx.c:486
+#: midx.c:473
 #, c-format
 msgid "failed to open pack-index '%s'"
 msgstr "misslyckades öppna paketindexet \"%s\""
 
-#: midx.c:546
+#: midx.c:533
 #, c-format
 msgid "failed to locate object %d in packfile"
 msgstr "misslyckades hitta objekt %d i paketfilen"
 
-#: midx.c:846
+#: midx.c:821
 msgid "Adding packfiles to multi-pack-index"
 msgstr "Lägger till paketfiler till multi-pack-index"
 
-#: midx.c:879
+#: midx.c:855
 #, c-format
 msgid "did not see pack-file %s to drop"
 msgstr "såg inte paketfilen %s som skulle kastas"
 
-#: midx.c:931
+#: midx.c:904
 msgid "no pack files to index."
 msgstr "inga paketfiler att indexera."
 
-#: midx.c:982
-msgid "Writing chunks to multi-pack-index"
-msgstr "Skriver stycken till multi-pack-index"
-
-#: midx.c:1060
+#: midx.c:965
 #, c-format
 msgid "failed to clear multi-pack-index at %s"
 msgstr "misslyckades städa multi-pack-index på %s"
 
-#: midx.c:1116
+#: midx.c:1021
 msgid "multi-pack-index file exists, but failed to parse"
 msgstr "multi-pack-indexfilen finns, men kunde inte tolkas"
 
-#: midx.c:1124
+#: midx.c:1029
 msgid "Looking for referenced packfiles"
 msgstr "Ser efter refererade packfiler"
 
-#: midx.c:1139
+#: midx.c:1044
 #, c-format
 msgid ""
 "oid fanout out of order: fanout[%d] = %<PRIx32> > %<PRIx32> = fanout[%d]"
 msgstr ""
 "oid-utbredning i fel ordning: fanout[%d] = %<PRIx32> > %<PRIx32> = fanout[%d]"
 
-#: midx.c:1144
+#: midx.c:1049
 msgid "the midx contains no oid"
 msgstr "midx saknar oid"
 
-#: midx.c:1153
+#: midx.c:1058
 msgid "Verifying OID order in multi-pack-index"
 msgstr "Bekräftar OID-ordning i multi-pack-index"
 
-#: midx.c:1162
+#: midx.c:1067
 #, c-format
 msgid "oid lookup out of order: oid[%d] = %s >= %s = oid[%d]"
 msgstr "oid-uppslagning i fel ordning: oid[%d] = %s >= %s = oid[%d]"
 
-#: midx.c:1182
+#: midx.c:1087
 msgid "Sorting objects by packfile"
 msgstr "Sorterar objekt efter packfil"
 
-#: midx.c:1189
+#: midx.c:1094
 msgid "Verifying object offsets"
 msgstr "Bekräftar offset för objekt"
 
-#: midx.c:1205
+#: midx.c:1110
 #, c-format
 msgid "failed to load pack entry for oid[%d] = %s"
 msgstr "misslyckades läsa paketpost för oid[%d] = %s"
 
-#: midx.c:1211
+#: midx.c:1116
 #, c-format
 msgid "failed to load pack-index for packfile %s"
 msgstr "misslyckades läsa paketindex för paketfil %s"
 
-#: midx.c:1220
+#: midx.c:1125
 #, c-format
 msgid "incorrect object offset for oid[%d] = %s: %<PRIx64> != %<PRIx64>"
 msgstr "felaktigt objekt-offset för oid[%d] = %s: %<PRIx64> != %<PRIx64>"
 
-#: midx.c:1245
+#: midx.c:1150
 msgid "Counting referenced objects"
 msgstr "Räknar refererade objekt"
 
-#: midx.c:1255
+#: midx.c:1160
 msgid "Finding and deleting unreferenced packfiles"
 msgstr "Ser efter och tar bort orefererade packfiler"
 
-#: midx.c:1446
+#: midx.c:1351
 msgid "could not start pack-objects"
 msgstr "kunde inte starta pack-objects"
 
-#: midx.c:1466
+#: midx.c:1371
 msgid "could not finish pack-objects"
 msgstr "kunde inte avsluta pack-objects"
 
-#: name-hash.c:537
+#: name-hash.c:538
 #, c-format
 msgid "unable to create lazy_dir thread: %s"
 msgstr "misslyckades skapa lazy_dir-tråd: %s"
 
-#: name-hash.c:559
+#: name-hash.c:560
 #, c-format
 msgid "unable to create lazy_name thread: %s"
 msgstr "misslyckades skapa lazy_name-tråd: %s"
 
-#: name-hash.c:565
+#: name-hash.c:566
 #, c-format
 msgid "unable to join lazy_name thread: %s"
 msgstr "misslyckades utföra join på lazy_name-tråd: %s"
@@ -5159,2972 +5353,3035 @@ 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:53
+#: object-file.c:480
 #, c-format
-msgid "invalid object type \"%s\""
-msgstr "ogiltig objekttyp \"%s\""
+msgid "object directory %s does not exist; check .git/objects/info/alternates"
+msgstr "objektkatalogen %s finns inte; se .git/objects/info/alternates"
 
-#: object.c:173
+#: object-file.c:531
 #, c-format
-msgid "object %s is a %s, not a %s"
-msgstr "objektet %s är en %s, inte en %s"
+msgid "unable to normalize alternate object path: %s"
+msgstr "kunde inte normalisera supplerande objektsökväg: %s"
 
-#: object.c:233
+#: object-file.c:603
 #, c-format
-msgid "object %s has unknown type id %d"
-msgstr "objektet %s har okänd typ-id %d"
+msgid "%s: ignoring alternate object stores, nesting too deep"
+msgstr "%s: ignorerar supplerande objektlager, för djup nästling"
 
-#: object.c:246
+#: object-file.c:610
 #, c-format
-msgid "unable to parse object: %s"
-msgstr "kunde inte tolka objektet: %s"
+msgid "unable to normalize object directory: %s"
+msgstr "kan inte normalisera objektkatalogen: %s"
 
-#: object.c:266 object.c:278
-#, c-format
-msgid "hash mismatch %s"
-msgstr "hashvärde stämmer inte överens %s"
+#: object-file.c:653
+msgid "unable to fdopen alternates lockfile"
+msgstr "kan inte utföra \"fdopen\" på suppleantlåsfil"
 
-#: pack-bitmap.c:815 pack-bitmap.c:821 builtin/pack-objects.c:2216
-#, c-format
-msgid "unable to get size of %s"
-msgstr "kan inte hämta storlek på %s"
+#: object-file.c:671
+msgid "unable to read alternates file"
+msgstr "kan inte läsa \"alternates\"-filen"
 
-#: packfile.c:615
-msgid "offset before end of packfile (broken .idx?)"
-msgstr "offset före slutet av packfilen (trasig .idx?)"
+#: object-file.c:678
+msgid "unable to move new alternates file into place"
+msgstr "kan inte flytta ny \"alternates\"-fil på plats"
 
-#: packfile.c:1907
+#: object-file.c:713
 #, 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?)"
+msgid "path '%s' does not exist"
+msgstr "sökvägen \"%s\" finns inte"
 
-#: packfile.c:1911
+#: object-file.c:734
 #, c-format
-msgid "offset beyond end of pack index for %s (truncated index?)"
-msgstr "offset borton slutet av packindex för %s (trunkerat index?)"
+msgid "reference repository '%s' as a linked checkout is not supported yet."
+msgstr "referensarkivet \"%s\" som en länkad utcheckning stöds inte ännu."
 
-#: parse-options-cb.c:20 parse-options-cb.c:24
+#: object-file.c:740
 #, c-format
-msgid "option `%s' expects a numerical value"
-msgstr "flaggan \"%s\" antar ett numeriskt värde"
+msgid "reference repository '%s' is not a local repository."
+msgstr "referensarkivet \"%s\" är inte ett lokalt arkiv."
 
-#: parse-options-cb.c:41
+#: object-file.c:746
 #, c-format
-msgid "malformed expiration date '%s'"
-msgstr "trasigt utlöpsdatum: \"%s\""
+msgid "reference repository '%s' is shallow"
+msgstr "referensarkivet \"%s\" är grunt"
 
-#: parse-options-cb.c:54
+#: object-file.c:754
 #, c-format
-msgid "option `%s' expects \"always\", \"auto\", or \"never\""
-msgstr ""
-"flaggan \"%s\" antar \"always\" (alltid), \"auto\" eller \"never\" (aldrig)"
+msgid "reference repository '%s' is grafted"
+msgstr "referensarkivet \"%s\" är ympat"
 
-#: parse-options-cb.c:132 parse-options-cb.c:149
+#: object-file.c:814
 #, c-format
-msgid "malformed object name '%s'"
-msgstr "felformat objektnamn \"%s\""
+msgid "invalid line while parsing alternate refs: %s"
+msgstr "felaktig rad vid tolkning av supplerande referenser: %s"
 
-#: parse-options.c:38
+#: object-file.c:964
 #, c-format
-msgid "%s requires a value"
-msgstr "%s behöver ett värde"
+msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
+msgstr "försök att utföra \"mmap\" på %<PRIuMAX> över gränsen %<PRIuMAX>"
 
-#: parse-options.c:73
-#, c-format
-msgid "%s is incompatible with %s"
-msgstr "%s är inkompatibel med %s"
+#: object-file.c:985
+msgid "mmap failed"
+msgstr "mmap misslyckades"
 
-#: parse-options.c:78
+#: object-file.c:1149
 #, c-format
-msgid "%s : incompatible with something else"
-msgstr "%s: inkompatibelt med något annat"
+msgid "object file %s is empty"
+msgstr "objektfilen %s är tom"
 
-#: parse-options.c:92 parse-options.c:96 parse-options.c:317
+#: object-file.c:1284 object-file.c:2477
 #, c-format
-msgid "%s takes no value"
-msgstr "%s tar inget värde"
+msgid "corrupt loose object '%s'"
+msgstr "trasigt löst objekt \"%s\""
 
-#: parse-options.c:94
+#: object-file.c:1286 object-file.c:2481
 #, c-format
-msgid "%s isn't available"
-msgstr "%s är inte tillgängligt"
+msgid "garbage at end of loose object '%s'"
+msgstr "skräp i slutet av löst objekt \"%s\""
 
-#: parse-options.c:217
-#, c-format
-msgid "%s expects a non-negative integer value with an optional k/m/g suffix"
-msgstr "%s förväntar ett icke-negativt heltalsvärde, med valfritt k/m/g-suffix"
+#: object-file.c:1328
+msgid "invalid object type"
+msgstr "felaktig objekttyp"
 
-#: parse-options.c:386
+#: object-file.c:1412
 #, c-format
-msgid "ambiguous option: %s (could be --%s%s or --%s%s)"
-msgstr "tvetydig flagga: %s (kan vara --%s%s eller --%s%s)"
+msgid "unable to unpack %s header with --allow-unknown-type"
+msgstr "kan inte packa upp %s-huvud med --allow-unknown-type"
 
-#: parse-options.c:420 parse-options.c:428
+#: object-file.c:1415
 #, c-format
-msgid "did you mean `--%s` (with two dashes)?"
-msgstr "menade du \"--%s\" (med två bindestreck)?"
+msgid "unable to unpack %s header"
+msgstr "kan inte packa upp %s-huvudet"
 
-#: parse-options.c:666 parse-options.c:971
+#: object-file.c:1421
 #, c-format
-msgid "alias of --%s"
-msgstr "alias för --%s"
+msgid "unable to parse %s header with --allow-unknown-type"
+msgstr "kan inte tolka %s-huvud med --allow-unknown-type"
 
-#: parse-options.c:862
+#: object-file.c:1424
 #, c-format
-msgid "unknown option `%s'"
-msgstr "okänd flagga \"%s\""
+msgid "unable to parse %s header"
+msgstr "kan inte tolka %s-huvud"
 
-#: parse-options.c:864
+#: object-file.c:1651
 #, c-format
-msgid "unknown switch `%c'"
-msgstr "okänd flagga \"%c\""
+msgid "failed to read object %s"
+msgstr "misslyckades läsa objektet %s"
 
-#: parse-options.c:866
+#: object-file.c:1655
 #, c-format
-msgid "unknown non-ascii option in string: `%s'"
-msgstr "okänd icke-ascii-flagga i strängen: \"%s\""
-
-#: parse-options.c:890
-msgid "..."
-msgstr "..."
+msgid "replacement %s not found for %s"
+msgstr "ersättningen %s hittades inte för %s"
 
-#: parse-options.c:909
+#: object-file.c:1659
 #, c-format
-msgid "usage: %s"
-msgstr "användning: %s"
+msgid "loose object %s (stored in %s) is corrupt"
+msgstr "löst objekt %s (lagrat i %s) är trasigt"
 
-#. TRANSLATORS: the colon here should align with the
-#. one in "usage: %s" translation.
-#.
-#: parse-options.c:915
+#: object-file.c:1663
 #, c-format
-msgid "   or: %s"
-msgstr "     eller: %s"
+msgid "packed object %s (stored in %s) is corrupt"
+msgstr "packat objekt %s (lagrat i %s) är trasigt"
 
-#: parse-options.c:918
+#: object-file.c:1768
 #, c-format
-msgid "    %s"
-msgstr "    %s"
-
-#: parse-options.c:957
-msgid "-NUM"
-msgstr "-TAL"
+msgid "unable to write file %s"
+msgstr "kunde inte skriva filen %s"
 
-#: path.c:915
+#: object-file.c:1775
 #, c-format
-msgid "Could not make %s writable by group"
-msgstr "Kunde inte göra %s skrivbar för gruppen"
-
-#: pathspec.c:130
-msgid "Escape character '\\' not allowed as last character in attr value"
-msgstr "Specialtecknet \"\\\" tillåts inte som sista tecken i attributvärde"
+msgid "unable to set permission to '%s'"
+msgstr "kan inte sätta behörigheten till \"%s\""
 
-#: pathspec.c:148
-msgid "Only one 'attr:' specification is allowed."
-msgstr "Endast en \"attr:\"-angivelse tillåten."
+#: object-file.c:1782
+msgid "file write error"
+msgstr "fel vid skrivning av fil"
 
-#: pathspec.c:151
-msgid "attr spec must not be empty"
-msgstr "attr-angivelse kan inte vara tom"
+#: object-file.c:1802
+msgid "error when closing loose object file"
+msgstr "fel vid stängning av fil för löst objekt"
 
-#: pathspec.c:194
+#: object-file.c:1867
 #, c-format
-msgid "invalid attribute name %s"
-msgstr "ogiltigt attributnamn %s"
-
-#: pathspec.c:259
-msgid "global 'glob' and 'noglob' pathspec settings are incompatible"
+msgid "insufficient permission for adding an object to repository database %s"
 msgstr ""
-"de globala sökvägsinställningarna \"glob\" och \"noglob\" är inkompatibla"
+"otillräcklig behörighet för att lägga till objekt till arkivdatabasen %s"
 
-#: pathspec.c:266
-msgid ""
-"global 'literal' pathspec setting is incompatible with all other global "
-"pathspec settings"
-msgstr ""
-"den globala sökvägsinställningen \"literal\" är inkompatibel med alla andra "
-"globala sökvägsinställningar"
+#: object-file.c:1869
+msgid "unable to create temporary file"
+msgstr "kan inte skapa temporär fil"
 
-#: pathspec.c:306
-msgid "invalid parameter for pathspec magic 'prefix'"
-msgstr "ogiltig parameter för sökvägsuttrycket för \"prefix\""
+#: object-file.c:1893
+msgid "unable to write loose object file"
+msgstr "kunde inte skriva fil för löst objekt"
 
-#: pathspec.c:327
+#: object-file.c:1899
 #, c-format
-msgid "Invalid pathspec magic '%.*s' in '%s'"
-msgstr "Felaktigt sökvägsuttryck \"%.*s\" i \"%s\""
+msgid "unable to deflate new object %s (%d)"
+msgstr "kan inte utföra \"deflate\" på nytt objekt %s (%d)"
 
-#: pathspec.c:332
+#: object-file.c:1903
 #, c-format
-msgid "Missing ')' at the end of pathspec magic in '%s'"
-msgstr "\")\" saknas i slutet av sökvägsuttrycket för \"%s\""
+msgid "deflateEnd on object %s failed (%d)"
+msgstr "\"deflateend\" på objektet %s misslyckades (%d)"
 
-#: pathspec.c:370
+#: object-file.c:1907
 #, c-format
-msgid "Unimplemented pathspec magic '%c' in '%s'"
-msgstr "Ej implementerat sökvägsuttryckmagi \"%c\" i \"%s\""
+msgid "confused by unstable object source data for %s"
+msgstr "förvirrad av instabil objektkälldata för %s"
 
-#: pathspec.c:429
+#: object-file.c:1917 builtin/pack-objects.c:1097
 #, c-format
-msgid "%s: 'literal' and 'glob' are incompatible"
-msgstr "%s: \"literal\" och \"glob\" är inkompatibla"
+msgid "failed utime() on %s"
+msgstr "\"utime()\" misslyckades på %s"
 
-#: pathspec.c:445
+#: object-file.c:1994
 #, c-format
-msgid "%s: '%s' is outside repository at '%s'"
-msgstr "%s: \"%s\" är utanför arkivet på \"%s\""
+msgid "cannot read object for %s"
+msgstr "kan inte läsa objekt för %s"
 
-#: pathspec.c:521
-#, c-format
-msgid "'%s' (mnemonic: '%c')"
-msgstr "\"%s\" (minnesstöd: \"%c\")"
+#: object-file.c:2045
+msgid "corrupt commit"
+msgstr "trasik incheckning"
 
-#: pathspec.c:531
-#, c-format
-msgid "%s: pathspec magic not supported by this command: %s"
-msgstr "%s: sökvägsuttrycket hanteras inte av det här kommandot: %s"
+#: object-file.c:2053
+msgid "corrupt tag"
+msgstr "trasig tagg"
 
-#: pathspec.c:598
+#: object-file.c:2153
 #, c-format
-msgid "pathspec '%s' is beyond a symbolic link"
-msgstr "sökvägsangivelsen \"%s\" är på andra sidan av en symbolisk länk"
+msgid "read error while indexing %s"
+msgstr "läsfel vid indexering av %s"
 
-#: pathspec.c:643
+#: object-file.c:2156
 #, c-format
-msgid "line is badly quoted: %s"
-msgstr "linjen er felaktigt citerad: %s"
-
-#: pkt-line.c:92
-msgid "unable to write flush packet"
-msgstr "kan inte skriva flush-paket"
-
-#: pkt-line.c:99
-msgid "unable to write delim packet"
-msgstr "kan inte skriva delim-paket"
-
-#: pkt-line.c:106
-msgid "unable to write stateless separator packet"
-msgstr "kan inte skriva tillståndslöst avdelarpaket"
-
-#: pkt-line.c:113
-msgid "flush packet write failed"
-msgstr "fel vid skrivning av \"flush\"-paket"
-
-#: pkt-line.c:153 pkt-line.c:239
-msgid "protocol error: impossibly long line"
-msgstr "protokollfel: omöjligt lång rad"
-
-#: pkt-line.c:169 pkt-line.c:171
-msgid "packet write with format failed"
-msgstr "paketskrivning med format misslyckades"
+msgid "short read while indexing %s"
+msgstr "för lite lästes vid indexering av %s"
 
-#: pkt-line.c:203
-msgid "packet write failed - data exceeds max packet size"
-msgstr "paketskrivning misslyckades - data överskrider maximal paketstorlek"
+#: object-file.c:2229 object-file.c:2239
+#, c-format
+msgid "%s: failed to insert into database"
+msgstr "%s: misslyckades lägga in i databasen"
 
-#: pkt-line.c:210 pkt-line.c:217
-msgid "packet write failed"
-msgstr "paketskrivning misslyckades"
+#: object-file.c:2245
+#, c-format
+msgid "%s: unsupported file type"
+msgstr "%s: filtypen stöds ej"
 
-#: pkt-line.c:302
-msgid "read error"
-msgstr "läsfel"
+#: object-file.c:2269
+#, c-format
+msgid "%s is not a valid object"
+msgstr "%s är inte ett giltigt objekt"
 
-#: pkt-line.c:310
-msgid "the remote end hung up unexpectedly"
-msgstr "fjärren lade på oväntat"
+#: object-file.c:2271
+#, c-format
+msgid "%s is not a valid '%s' object"
+msgstr "%s är inte ett giltigt \"%s\"-objekt"
 
-#: pkt-line.c:338
+#: object-file.c:2298 builtin/index-pack.c:192
 #, c-format
-msgid "protocol error: bad line length character: %.4s"
-msgstr "protokollfel: felaktig radlängdstecken: %.4s"
+msgid "unable to open %s"
+msgstr "kan inte öppna %s"
 
-#: pkt-line.c:352 pkt-line.c:357
+#: object-file.c:2488 object-file.c:2541
 #, c-format
-msgid "protocol error: bad line length %d"
-msgstr "protokollfel: felaktig radlängd: %d"
+msgid "hash mismatch for %s (expected %s)"
+msgstr "hash stämmer inte för %s (förväntade %s)"
 
-#: pkt-line.c:373 sideband.c:165
+#: object-file.c:2512
 #, c-format
-msgid "remote error: %s"
-msgstr "fjärrfel: %s"
+msgid "unable to mmap %s"
+msgstr "kan inte utföra \"mmap\" för %s"
 
-#: preload-index.c:119
-msgid "Refreshing index"
-msgstr "Uppdaterar indexet"
+#: object-file.c:2517
+#, c-format
+msgid "unable to unpack header of %s"
+msgstr "kan inte packa upp huvud för %s"
 
-#: preload-index.c:138
+#: object-file.c:2523
 #, c-format
-msgid "unable to create threaded lstat: %s"
-msgstr "kunde inte skapa trådad lstat: %s"
+msgid "unable to parse header of %s"
+msgstr "kan inte tolka huvud för %s"
 
-#: pretty.c:983
-msgid "unable to parse --pretty format"
-msgstr "kunde inte tolka format för --pretty"
+#: object-file.c:2534
+#, c-format
+msgid "unable to unpack contents of %s"
+msgstr "kan inte tolka innehåll i %s"
 
-#: promisor-remote.c:30
-msgid "promisor-remote: unable to fork off fetch subprocess"
-msgstr "promisor-remote: kunde inte starta (fork) underprocessen för fetch"
+#: object-name.c:486
+#, c-format
+msgid "short object ID %s is ambiguous"
+msgstr "kort objekt-ID %s är tvetydigt"
 
-#: promisor-remote.c:35 promisor-remote.c:37
-msgid "promisor-remote: could not write to fetch subprocess"
-msgstr "promisor-remote: kunde skriva till underprocessen för fetch"
+#: object-name.c:497
+msgid "The candidates are:"
+msgstr "Kandidaterna är:"
 
-#: promisor-remote.c:41
-msgid "promisor-remote: could not close stdin to fetch subprocess"
+#: object-name.c:796
+msgid ""
+"Git normally never creates a ref that ends with 40 hex characters\n"
+"because it will be ignored when you just specify 40-hex. These refs\n"
+"may be created by mistake. For example,\n"
+"\n"
+"  git switch -c $br $(git rev-parse ...)\n"
+"\n"
+"where \"$br\" is somehow empty and a 40-hex ref is created. Please\n"
+"examine these refs and maybe delete them. Turn this message off by\n"
+"running \"git config advice.objectNameWarning false\""
 msgstr ""
-"promisor-remote: kunde inte stänga standard in för underprocessen för fetch"
+"Git skapar normalt aldrig referenser som slutar med 40 hexadecimala\n"
+"tecken, då detta ignoreras när du anger 40-hex enbart. Dessa\n"
+"referenser kan skapas av misstag. Till exempel, för\n"
+"\n"
+"  git switch -c $br $(git rev-parse ...)\n"
+"\n"
+"där \"$br\" på något sätt blivit tomt och en 40-hex-referens skapats.\n"
+"Undersök referenserna och ta kanske bort dem. Stäng av meddelandet\n"
+"genom att köra \"git config advice.objectNameWarning false\""
 
-#: promisor-remote.c:53
+#: object-name.c:916
 #, c-format
-msgid "promisor remote name cannot begin with '/': %s"
-msgstr "kontraktsfjärr kan inte börja med \"/\": %s"
+msgid "log for '%.*s' only goes back to %s"
+msgstr "loggen för \"%.*s\" räcker bara tillbaka till %s"
 
-#: prune-packed.c:35
-msgid "Removing duplicate objects"
-msgstr "Tar bort duplicerade objekt"
+#: object-name.c:924
+#, c-format
+msgid "log for '%.*s' only has %d entries"
+msgstr "loggen för \"%.*s\" har bara %d poster"
 
-#: range-diff.c:77
-msgid "could not start `log`"
-msgstr "kunde inte starta \"log\""
+#: object-name.c:1702
+#, c-format
+msgid "path '%s' exists on disk, but not in '%.*s'"
+msgstr "Sökvägen \"%s\" finns på disken, men inte i \"%.*s\""
 
-#: range-diff.c:79
-msgid "could not read `log` output"
-msgstr "kunde inte läsa utdata från \"log\""
+#: object-name.c:1708
+#, c-format
+msgid ""
+"path '%s' exists, but not '%s'\n"
+"hint: Did you mean '%.*s:%s' aka '%.*s:./%s'?"
+msgstr ""
+"sökvägen \"%s\" finns, men inte i \"%s\"\n"
+"tips: Menade du \"%.*s:%s\", även känd som \"%.*s:./%s\"?"
 
-#: range-diff.c:98 sequencer.c:5310
+#: object-name.c:1717
 #, c-format
-msgid "could not parse commit '%s'"
-msgstr "kunde inte tolka incheckningen \"%s\""
+msgid "path '%s' does not exist in '%.*s'"
+msgstr "sökvägen \"%s\" finns inte i \"%.*s\""
 
-#: range-diff.c:112
+#: object-name.c:1745
 #, c-format
 msgid ""
-"could not parse first line of `log` output: did not start with 'commit ': "
-"'%s'"
+"path '%s' is in the index, but not at stage %d\n"
+"hint: Did you mean ':%d:%s'?"
 msgstr ""
-"kunde inte tolka första raden i \"log\"-updata: börjar inte med \"commit \": "
-"\"%s\""
+"sökvägen \"%s\" finns i indexet men inte i etapp %d\n"
+"tips: Menade du \":%d:%s\"?"
 
-#: range-diff.c:137
+#: object-name.c:1761
 #, c-format
-msgid "could not parse git header '%.*s'"
-msgstr "kunde inte tolka git-huvudet \"%.*s\""
+msgid ""
+"path '%s' is in the index, but not '%s'\n"
+"hint: Did you mean ':%d:%s' aka ':%d:./%s'?"
+msgstr ""
+"sökvägen \"%s\" finns i indexet, men inte i \"%s\"\n"
+"tips: Menade du \":%d:%s\", även känd som \":%d:./%s\"?"
 
-#: range-diff.c:299
-msgid "failed to generate diff"
-msgstr "misslyckades skapa diff"
+#: object-name.c:1769
+#, c-format
+msgid "path '%s' exists on disk, but not in the index"
+msgstr "sökvägen \"%s\" finns på disk, men inte i indexet"
 
-#: range-diff.c:532 range-diff.c:534
+#: object-name.c:1771
 #, c-format
-msgid "could not parse log for '%s'"
-msgstr "kunde inte tolka loggen för \"%s\""
+msgid "path '%s' does not exist (neither on disk nor in the index)"
+msgstr "sökvägen \"%s\" finns inte (varken i disken eller i indexet)"
 
-#: read-cache.c:682
+#: object-name.c:1784
+msgid "relative path syntax can't be used outside working tree"
+msgstr "relativ sökväg kan inte användas utanför arbetskatalogen"
+
+#: object-name.c:1922
 #, c-format
-msgid "will not add file alias '%s' ('%s' already exists in index)"
-msgstr "lägger inte till filalias \"%s\" (\"%s\" finns redan i indexet)"
+msgid "invalid object name '%.*s'."
+msgstr "felaktigt objektnamn \"%.*s\"."
 
-#: read-cache.c:698
-msgid "cannot create an empty blob in the object database"
-msgstr "kan inte skapa tom blob i objektdatabasen"
+#: object.c:53
+#, c-format
+msgid "invalid object type \"%s\""
+msgstr "ogiltig objekttyp \"%s\""
 
-#: read-cache.c:720
+#: object.c:173
 #, c-format
-msgid "%s: can only add regular files, symbolic links or git-directories"
-msgstr ""
-"%s: kan bara lägga till vanliga filer, symboliska länkar och git-kataloger"
+msgid "object %s is a %s, not a %s"
+msgstr "objektet %s är en %s, inte en %s"
 
-#: read-cache.c:725
+#: object.c:233
 #, c-format
-msgid "'%s' does not have a commit checked out"
-msgstr "\"%s\" har inte någon utcheckad incheckning"
+msgid "object %s has unknown type id %d"
+msgstr "objektet %s har okänd typ-id %d"
 
-#: read-cache.c:777
+#: object.c:246
 #, c-format
-msgid "unable to index file '%s'"
-msgstr "kan inte indexera filen \"%s\""
+msgid "unable to parse object: %s"
+msgstr "kunde inte tolka objektet: %s"
 
-#: read-cache.c:796
+#: object.c:266 object.c:278
 #, c-format
-msgid "unable to add '%s' to index"
-msgstr "kan inte lägga till \"%s\" till indexet"
+msgid "hash mismatch %s"
+msgstr "hashvärde stämmer inte överens %s"
 
-#: read-cache.c:807
+#: pack-bitmap.c:843 pack-bitmap.c:849 builtin/pack-objects.c:2226
 #, c-format
-msgid "unable to stat '%s'"
-msgstr "kan inte ta status på \"%s\""
+msgid "unable to get size of %s"
+msgstr "kan inte hämta storlek på %s"
 
-#: read-cache.c:1318
+#: pack-bitmap.c:1489 builtin/rev-list.c:92
 #, c-format
-msgid "'%s' appears as both a file and as a directory"
-msgstr "\"%s\" finns både som en fil och en katalog"
+msgid "unable to get disk usage of %s"
+msgstr "kan inte hämta diskanvändning för %s"
 
-#: read-cache.c:1524
-msgid "Refresh index"
-msgstr "Uppdatera indexet"
+#: pack-revindex.c:220
+#, c-format
+msgid "reverse-index file %s is too small"
+msgstr "reverse-index-filen %s är för liten"
 
-#: read-cache.c:1639
+#: pack-revindex.c:225
 #, c-format
-msgid ""
-"index.version set, but the value is invalid.\n"
-"Using version %i"
-msgstr ""
-"index.version satt, men värdet är ogiltigt.\n"
-"Använder version %i"
+msgid "reverse-index file %s is corrupt"
+msgstr "reverse-index-filen %s är trasig"
 
-#: read-cache.c:1649
+#: pack-revindex.c:233
 #, c-format
-msgid ""
-"GIT_INDEX_VERSION set, but the value is invalid.\n"
-"Using version %i"
-msgstr ""
-"GIT_INDEX_VERSION satt, men värdet är ogiltigt.\n"
-"Använder version %i"
+msgid "reverse-index file %s has unknown signature"
+msgstr "reverse-index-filen %s har okänd signatur"
 
-#: read-cache.c:1705
+#: pack-revindex.c:237
 #, c-format
-msgid "bad signature 0x%08x"
-msgstr "felaktig signatur 0x%08x"
+msgid "reverse-index file %s has unsupported version %<PRIu32>"
+msgstr "reverse-index-filen %s har versionen %<PRIu32> som inte stöds"
 
-#: read-cache.c:1708
+#: pack-revindex.c:242
 #, c-format
-msgid "bad index version %d"
-msgstr "felaktig indexversion %d"
+msgid "reverse-index file %s has unsupported hash id %<PRIu32>"
+msgstr "reverse-index-filen %s har hash-ID %<PRIu32> som inte stöds"
 
-#: read-cache.c:1717
-msgid "bad index file sha1 signature"
-msgstr "felaktig sha1-signatur för indexfil"
+#: pack-write.c:236
+msgid "cannot both write and verify reverse index"
+msgstr "kan inte både skriva och bekräfta reverse-index"
 
-#: read-cache.c:1747
+#: pack-write.c:257
 #, c-format
-msgid "index uses %.4s extension, which we do not understand"
-msgstr "index använder filtillägget %.4s, vilket vi inte förstår"
+msgid "could not stat: %s"
+msgstr "kunde inte ta status: %s"
 
-#: read-cache.c:1749
+#: pack-write.c:269
 #, c-format
-msgid "ignoring %.4s extension"
-msgstr "ignorerar filtillägget %.4s"
+msgid "failed to make %s readable"
+msgstr "kunde inte göra %s läsbar"
 
-#: read-cache.c:1786
+#: pack-write.c:508
 #, c-format
-msgid "unknown index entry format 0x%08x"
-msgstr "okänt format 0x%08x på indexpost"
+msgid "could not write '%s' promisor file"
+msgstr "kunde inte skriva kontraktsfilen \"%s\""
+
+#: packfile.c:625
+msgid "offset before end of packfile (broken .idx?)"
+msgstr "offset före slutet av packfilen (trasig .idx?)"
 
-#: read-cache.c:1802
+#: packfile.c:1934
 #, c-format
-msgid "malformed name field in the index, near path '%s'"
-msgstr "felformat namnfält i indexet, nära sökvägen \"%s\""
+msgid "offset before start of pack index for %s (corrupt index?)"
+msgstr "offset före slutet av packindex för %s (trasigt index?)"
 
-#: read-cache.c:1859
-msgid "unordered stage entries in index"
-msgstr "osorterade köposter i index"
+#: packfile.c:1938
+#, c-format
+msgid "offset beyond end of pack index for %s (truncated index?)"
+msgstr "offset borton slutet av packindex för %s (trunkerat index?)"
 
-#: read-cache.c:1862
+#: parse-options-cb.c:20 parse-options-cb.c:24
 #, c-format
-msgid "multiple stage entries for merged file '%s'"
-msgstr "flera köposter för den sammanslagna filen \"%s\""
+msgid "option `%s' expects a numerical value"
+msgstr "flaggan \"%s\" antar ett numeriskt värde"
 
-#: read-cache.c:1865
+#: parse-options-cb.c:41
 #, c-format
-msgid "unordered stage entries for '%s'"
-msgstr "osorterade köposter för \"%s\""
+msgid "malformed expiration date '%s'"
+msgstr "trasigt utlöpsdatum: \"%s\""
 
-#: read-cache.c:1971 read-cache.c:2262 rerere.c:565 rerere.c:599 rerere.c:1111
-#: submodule.c:1628 builtin/add.c:538 builtin/check-ignore.c:181
-#: builtin/checkout.c:502 builtin/checkout.c:688 builtin/clean.c:991
-#: builtin/commit.c:364 builtin/diff-tree.c:122 builtin/grep.c:507
-#: builtin/mv.c:146 builtin/reset.c:247 builtin/rm.c:290
-#: builtin/submodule--helper.c:332
-msgid "index file corrupt"
-msgstr "indexfilen trasig"
+#: parse-options-cb.c:54
+#, c-format
+msgid "option `%s' expects \"always\", \"auto\", or \"never\""
+msgstr ""
+"flaggan \"%s\" antar \"always\" (alltid), \"auto\" eller \"never\" (aldrig)"
 
-#: read-cache.c:2115
+#: parse-options-cb.c:132 parse-options-cb.c:149
 #, c-format
-msgid "unable to create load_cache_entries thread: %s"
-msgstr "kunde inte läsa in cache_entries-tråden: %s"
+msgid "malformed object name '%s'"
+msgstr "felformat objektnamn \"%s\""
 
-#: read-cache.c:2128
+#: parse-options.c:38
 #, c-format
-msgid "unable to join load_cache_entries thread: %s"
-msgstr "kunde inte utföra join på cache_entries-tråden: %s"
+msgid "%s requires a value"
+msgstr "%s behöver ett värde"
 
-#: read-cache.c:2161
+#: parse-options.c:73
 #, c-format
-msgid "%s: index file open failed"
-msgstr "%s: öppning av indexfilen misslyckades"
+msgid "%s is incompatible with %s"
+msgstr "%s är inkompatibel med %s"
 
-#: read-cache.c:2165
+#: parse-options.c:78
 #, c-format
-msgid "%s: cannot stat the open index"
-msgstr "%s: kan inte ta startus på det öppna indexet"
+msgid "%s : incompatible with something else"
+msgstr "%s: inkompatibelt med något annat"
 
-#: read-cache.c:2169
+#: parse-options.c:92 parse-options.c:96 parse-options.c:317
 #, c-format
-msgid "%s: index file smaller than expected"
-msgstr "%s: indexfilen mindre än förväntat"
+msgid "%s takes no value"
+msgstr "%s tar inget värde"
 
-#: read-cache.c:2173
+#: parse-options.c:94
 #, c-format
-msgid "%s: unable to map index file"
-msgstr "%s: kan inte koppla indexfilen"
+msgid "%s isn't available"
+msgstr "%s är inte tillgängligt"
 
-#: read-cache.c:2215
+#: parse-options.c:217
 #, c-format
-msgid "unable to create load_index_extensions thread: %s"
-msgstr "kunde inte skapa load_index_extensions-tråden: %s"
+msgid "%s expects a non-negative integer value with an optional k/m/g suffix"
+msgstr "%s förväntar ett icke-negativt heltalsvärde, med valfritt k/m/g-suffix"
 
-#: read-cache.c:2242
+#: parse-options.c:386
 #, c-format
-msgid "unable to join load_index_extensions thread: %s"
-msgstr "kunde inte utföra join på load_index_extensions-tråden: %s"
+msgid "ambiguous option: %s (could be --%s%s or --%s%s)"
+msgstr "tvetydig flagga: %s (kan vara --%s%s eller --%s%s)"
 
-#: read-cache.c:2274
+#: parse-options.c:420 parse-options.c:428
 #, c-format
-msgid "could not freshen shared index '%s'"
-msgstr "kunde inte uppdatera delat index \"%s\""
+msgid "did you mean `--%s` (with two dashes)?"
+msgstr "menade du \"--%s\" (med två bindestreck)?"
 
-#: read-cache.c:2321
+#: parse-options.c:666 parse-options.c:971
 #, c-format
-msgid "broken index, expect %s in %s, got %s"
-msgstr "trasigt index, förväntade %s i %s, fick %s"
+msgid "alias of --%s"
+msgstr "alias för --%s"
 
-#: read-cache.c:3017 strbuf.c:1171 wrapper.c:633 builtin/merge.c:1140
+#: parse-options.c:862
 #, c-format
-msgid "could not close '%s'"
-msgstr "kunde inte stänga \"%s\""
+msgid "unknown option `%s'"
+msgstr "okänd flagga \"%s\""
 
-#: read-cache.c:3120 sequencer.c:2479 sequencer.c:4231
+#: parse-options.c:864
 #, c-format
-msgid "could not stat '%s'"
-msgstr "kunde inte ta status på \"%s\""
+msgid "unknown switch `%c'"
+msgstr "okänd flagga \"%c\""
 
-#: read-cache.c:3133
+#: parse-options.c:866
 #, c-format
-msgid "unable to open git dir: %s"
-msgstr "kunde inte öppna git-katalog: %s"
+msgid "unknown non-ascii option in string: `%s'"
+msgstr "okänd icke-ascii-flagga i strängen: \"%s\""
+
+#: parse-options.c:890
+msgid "..."
+msgstr "..."
 
-#: read-cache.c:3145
+#: parse-options.c:909
 #, c-format
-msgid "unable to unlink: %s"
-msgstr "misslyckades ta bort länken: %s"
+msgid "usage: %s"
+msgstr "användning: %s"
 
-#: read-cache.c:3170
+#. TRANSLATORS: the colon here should align with the
+#. one in "usage: %s" translation.
+#.
+#: parse-options.c:915
 #, c-format
-msgid "cannot fix permission bits on '%s'"
-msgstr "kan inte rätta behörighetsbitar på \"%s\""
+msgid "   or: %s"
+msgstr "     eller: %s"
 
-#: read-cache.c:3319
+#: parse-options.c:918
 #, c-format
-msgid "%s: cannot drop to stage #0"
-msgstr "%s: kan inte återgå till kö 0"
+msgid "    %s"
+msgstr "    %s"
 
-#: rebase-interactive.c:11
-msgid ""
-"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 ""
-"Du kan rätta detta med \"git rebase --edit-todo\" följt av \"git rebase --"
-"continue\".\n"
-"Avbryt ombaseringen med \"git rebase --abort\".\n"
+#: parse-options.c:957
+msgid "-NUM"
+msgstr "-TAL"
 
-#: rebase-interactive.c:33
+#: path.c:915
 #, c-format
-msgid ""
-"unrecognized setting %s for option rebase.missingCommitsCheck. Ignoring."
-msgstr ""
-"okänd inställning %s för flaggan rebase.missingCommitsCheck. Ignorerar."
+msgid "Could not make %s writable by group"
+msgstr "Kunde inte göra %s skrivbar för gruppen"
 
-#: rebase-interactive.c:42
-msgid ""
-"\n"
-"Commands:\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"
-"b, break = stop here (continue rebase later with 'git rebase --continue')\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 <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"
-"b, break = stoppa här (fortsätt ombaseringen senare med \"git rebase --"
-"continue\")\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"
+#: pathspec.c:130
+msgid "Escape character '\\' not allowed as last character in attr value"
+msgstr "Specialtecknet \"\\\" tillåts inte som sista tecken i attributvärde"
 
-#: rebase-interactive.c:63
-#, c-format
-msgid "Rebase %s onto %s (%d command)"
-msgid_plural "Rebase %s onto %s (%d commands)"
-msgstr[0] "Ombasera %s på %s (%d kommando)"
-msgstr[1] "Ombasera %s på %s (%d kommandon)"
+#: pathspec.c:148
+msgid "Only one 'attr:' specification is allowed."
+msgstr "Endast en \"attr:\"-angivelse tillåten."
 
-#: rebase-interactive.c:72 git-rebase--preserve-merges.sh:218
-msgid ""
-"\n"
-"Do not remove any line. Use 'drop' explicitly to remove a commit.\n"
-msgstr ""
-"\n"
-"Ta inte bort rader. Använd \"drop\" för att specifikt förkasta en "
-"incheckning.\n"
+#: pathspec.c:151
+msgid "attr spec must not be empty"
+msgstr "attr-angivelse kan inte vara tom"
 
-#: rebase-interactive.c:75 git-rebase--preserve-merges.sh:222
-msgid ""
-"\n"
-"If you remove a line here THAT COMMIT WILL BE LOST.\n"
-msgstr ""
-"\n"
-"Om du tar bort en rad KOMMER DEN INCHECKNINGEN ATT FÖRLORAS.\n"
+#: pathspec.c:194
+#, c-format
+msgid "invalid attribute name %s"
+msgstr "ogiltigt attributnamn %s"
 
-#: rebase-interactive.c:81 git-rebase--preserve-merges.sh:861
-msgid ""
-"\n"
-"You are editing the todo file of an ongoing interactive rebase.\n"
-"To continue rebase after editing, run:\n"
-"    git rebase --continue\n"
-"\n"
+#: pathspec.c:259
+msgid "global 'glob' and 'noglob' pathspec settings are incompatible"
 msgstr ""
-"\n"
-"Du redigerar \"todo\"-filen för en pågående interaktiv ombasering.\n"
-"För att forsätta ombasera efter redigeringen, kör:\n"
-"    git rebase --continue\n"
-"\n"
+"de globala sökvägsinställningarna \"glob\" och \"noglob\" är inkompatibla"
 
-#: rebase-interactive.c:86 git-rebase--preserve-merges.sh:938
+#: pathspec.c:266
 msgid ""
-"\n"
-"However, if you remove everything, the rebase will be aborted.\n"
-"\n"
+"global 'literal' pathspec setting is incompatible with all other global "
+"pathspec settings"
 msgstr ""
-"\n"
-"Ombaseringen kommer dock att avbrytas om du tar bort allting.\n"
-"\n"
+"den globala sökvägsinställningen \"literal\" är inkompatibel med alla andra "
+"globala sökvägsinställningar"
 
-#: rebase-interactive.c:110 rerere.c:485 rerere.c:692 sequencer.c:3607
-#: sequencer.c:3633 sequencer.c:5416 builtin/fsck.c:347 builtin/rebase.c:270
-#, c-format
-msgid "could not write '%s'"
-msgstr "kunde inte skriva \"%s\""
+#: pathspec.c:306
+msgid "invalid parameter for pathspec magic 'prefix'"
+msgstr "ogiltig parameter för sökvägsuttrycket för \"prefix\""
 
-#: rebase-interactive.c:116 builtin/rebase.c:202 builtin/rebase.c:228
-#: builtin/rebase.c:252
+#: pathspec.c:327
 #, c-format
-msgid "could not write '%s'."
-msgstr "kunde inte skriva \"%s\"."
+msgid "Invalid pathspec magic '%.*s' in '%s'"
+msgstr "Felaktigt sökvägsuttryck \"%.*s\" i \"%s\""
 
-#: rebase-interactive.c:193
+#: pathspec.c:332
 #, c-format
-msgid ""
-"Warning: some commits may have been dropped accidentally.\n"
-"Dropped commits (newer to older):\n"
-msgstr ""
-"Varning: vissa incheckningar kan av misstag ha tappats.\n"
-"Tappade incheckningar (nyaste först):\n"
+msgid "Missing ')' at the end of pathspec magic in '%s'"
+msgstr "\")\" saknas i slutet av sökvägsuttrycket för \"%s\""
 
-#: rebase-interactive.c:200
+#: pathspec.c:370
 #, c-format
-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"
-"The possible behaviours are: ignore, warn, error.\n"
-"\n"
-msgstr ""
-"För att undvika det här meddelandet kan du använda \"drop\" för att "
-"explicit\n"
-"kasta en incheckning.\n"
-"\n"
-"Använd \"git config rebase.missingCommitsCheck\" för att ändra "
-"varningsnivån.\n"
-"Möjliga bettenden är: \"ignore\" (ignorera), \"warn\" (varna), \"error"
-"\" (fel).\n"
-"\n"
+msgid "Unimplemented pathspec magic '%c' in '%s'"
+msgstr "Ej implementerat sökvägsuttryckmagi \"%c\" i \"%s\""
 
-#: rebase-interactive.c:233 rebase-interactive.c:238 sequencer.c:2394
-#: builtin/rebase.c:188 builtin/rebase.c:213 builtin/rebase.c:239
-#: builtin/rebase.c:264
+#: pathspec.c:429
 #, c-format
-msgid "could not read '%s'."
-msgstr "kunde inte läsa \"%s\"."
-
-#: ref-filter.c:42 wt-status.c:1973
-msgid "gone"
-msgstr "försvunnen"
+msgid "%s: 'literal' and 'glob' are incompatible"
+msgstr "%s: \"literal\" och \"glob\" är inkompatibla"
 
-#: ref-filter.c:43
+#: pathspec.c:445
 #, c-format
-msgid "ahead %d"
-msgstr "före %d"
+msgid "%s: '%s' is outside repository at '%s'"
+msgstr "%s: \"%s\" är utanför arkivet på \"%s\""
 
-#: ref-filter.c:44
+#: pathspec.c:521
 #, c-format
-msgid "behind %d"
-msgstr "bakom %d"
+msgid "'%s' (mnemonic: '%c')"
+msgstr "\"%s\" (minnesstöd: \"%c\")"
 
-#: ref-filter.c:45
+#: pathspec.c:531
 #, c-format
-msgid "ahead %d, behind %d"
-msgstr "före %d, bakom %d"
+msgid "%s: pathspec magic not supported by this command: %s"
+msgstr "%s: sökvägsuttrycket hanteras inte av det här kommandot: %s"
 
-#: ref-filter.c:169
+#: pathspec.c:598
 #, c-format
-msgid "expected format: %%(color:<color>)"
-msgstr "förväntat format: %%(color:<color>)"
+msgid "pathspec '%s' is beyond a symbolic link"
+msgstr "sökvägsangivelsen \"%s\" är på andra sidan av en symbolisk länk"
 
-#: ref-filter.c:171
+#: pathspec.c:643
 #, c-format
-msgid "unrecognized color: %%(color:%s)"
-msgstr "okänd färg: %%(color:%s)"
+msgid "line is badly quoted: %s"
+msgstr "linjen er felaktigt citerad: %s"
 
-#: ref-filter.c:193
-#, c-format
-msgid "Integer value expected refname:lstrip=%s"
-msgstr "Heltalsvärde förväntades refname:lstrip=%s"
+#: pkt-line.c:92
+msgid "unable to write flush packet"
+msgstr "kan inte skriva flush-paket"
 
-#: ref-filter.c:197
-#, c-format
-msgid "Integer value expected refname:rstrip=%s"
-msgstr "Heltalsvärde förväntades refname:rstrip=%s"
+#: pkt-line.c:99
+msgid "unable to write delim packet"
+msgstr "kan inte skriva delim-paket"
 
-#: ref-filter.c:199
-#, c-format
-msgid "unrecognized %%(%s) argument: %s"
-msgstr "okänt %%(%s)-argument: %s"
+#: pkt-line.c:106
+msgid "unable to write stateless separator packet"
+msgstr "kan inte skriva tillståndslöst avdelarpaket"
 
-#: ref-filter.c:254
-#, c-format
-msgid "%%(objecttype) does not take arguments"
-msgstr "%%(objecttype) tar inte argument"
+#: pkt-line.c:113
+msgid "flush packet write failed"
+msgstr "fel vid skrivning av \"flush\"-paket"
 
-#: ref-filter.c:276
-#, c-format
-msgid "unrecognized %%(objectsize) argument: %s"
-msgstr "okänt %%(objectsize)-argument: %s"
+#: pkt-line.c:153 pkt-line.c:239
+msgid "protocol error: impossibly long line"
+msgstr "protokollfel: omöjligt lång rad"
 
-#: ref-filter.c:284
-#, c-format
-msgid "%%(deltabase) does not take arguments"
-msgstr "%%(deltabase) tar inte argument"
+#: pkt-line.c:169 pkt-line.c:171
+msgid "packet write with format failed"
+msgstr "paketskrivning med format misslyckades"
 
-#: ref-filter.c:296
-#, c-format
-msgid "%%(body) does not take arguments"
-msgstr "%%(body) tar inte argument"
+#: pkt-line.c:203
+msgid "packet write failed - data exceeds max packet size"
+msgstr "paketskrivning misslyckades - data överskrider maximal paketstorlek"
 
-#: ref-filter.c:309
-#, c-format
-msgid "unrecognized %%(subject) argument: %s"
-msgstr "okänt %%(subject)-argument: %s"
+#: pkt-line.c:210 pkt-line.c:217
+msgid "packet write failed"
+msgstr "paketskrivning misslyckades"
 
-#: ref-filter.c:330
-#, c-format
-msgid "unknown %%(trailers) argument: %s"
-msgstr "okänt %%(trailers)-argument: %s"
+#: pkt-line.c:302
+msgid "read error"
+msgstr "läsfel"
 
-#: ref-filter.c:363
-#, c-format
-msgid "positive value expected contents:lines=%s"
-msgstr "positivt värde förväntat contents:lines=%s"
+#: pkt-line.c:310
+msgid "the remote end hung up unexpectedly"
+msgstr "fjärren lade på oväntat"
 
-#: ref-filter.c:365
+#: pkt-line.c:338
 #, c-format
-msgid "unrecognized %%(contents) argument: %s"
-msgstr "okänt %%(contents)-argument: %s"
+msgid "protocol error: bad line length character: %.4s"
+msgstr "protokollfel: felaktig radlängdstecken: %.4s"
 
-#: ref-filter.c:380
+#: pkt-line.c:352 pkt-line.c:357
 #, c-format
-msgid "positive value expected '%s' in %%(%s)"
-msgstr "positivt värde förväntat \"%s\" i %%(%s)"
+msgid "protocol error: bad line length %d"
+msgstr "protokollfel: felaktig radlängd: %d"
 
-#: ref-filter.c:384
+#: pkt-line.c:373 sideband.c:165
 #, c-format
-msgid "unrecognized argument '%s' in %%(%s)"
-msgstr "okänt argument \"%s\" i %%(%s)"
+msgid "remote error: %s"
+msgstr "fjärrfel: %s"
 
-#: ref-filter.c:398
-#, c-format
-msgid "unrecognized email option: %s"
-msgstr "okänd e-postalternativ: %s"
+#: preload-index.c:125
+msgid "Refreshing index"
+msgstr "Uppdaterar indexet"
 
-#: ref-filter.c:428
+#: preload-index.c:144
 #, c-format
-msgid "expected format: %%(align:<width>,<position>)"
-msgstr "förväntat format: %%(align:<bredd>,<position>)"
+msgid "unable to create threaded lstat: %s"
+msgstr "kunde inte skapa trådad lstat: %s"
 
-#: ref-filter.c:440
-#, c-format
-msgid "unrecognized position:%s"
-msgstr "okänd position:%s"
+#: pretty.c:984
+msgid "unable to parse --pretty format"
+msgstr "kunde inte tolka format för --pretty"
 
-#: ref-filter.c:447
-#, c-format
-msgid "unrecognized width:%s"
-msgstr "okänd bredd:%s"
+#: promisor-remote.c:30
+msgid "promisor-remote: unable to fork off fetch subprocess"
+msgstr "promisor-remote: kunde inte starta (fork) underprocessen för fetch"
 
-#: ref-filter.c:456
-#, c-format
-msgid "unrecognized %%(align) argument: %s"
-msgstr "okänt %%(align)-argument: %s"
+#: promisor-remote.c:35 promisor-remote.c:37
+msgid "promisor-remote: could not write to fetch subprocess"
+msgstr "promisor-remote: kunde skriva till underprocessen för fetch"
 
-#: ref-filter.c:464
-#, c-format
-msgid "positive width expected with the %%(align) atom"
-msgstr "positiv bredd förväntad med atomen %%(align)"
+#: promisor-remote.c:41
+msgid "promisor-remote: could not close stdin to fetch subprocess"
+msgstr ""
+"promisor-remote: kunde inte stänga standard in för underprocessen för fetch"
 
-#: ref-filter.c:482
+#: promisor-remote.c:53
 #, c-format
-msgid "unrecognized %%(if) argument: %s"
-msgstr "okänt %%(if)-argument: %s"
+msgid "promisor remote name cannot begin with '/': %s"
+msgstr "kontraktsfjärr kan inte börja med \"/\": %s"
 
-#: ref-filter.c:584
-#, c-format
-msgid "malformed field name: %.*s"
-msgstr "felformat fältnamn: %.*s"
+#: prune-packed.c:35
+msgid "Removing duplicate objects"
+msgstr "Tar bort duplicerade objekt"
+
+#: range-diff.c:78
+msgid "could not start `log`"
+msgstr "kunde inte starta \"log\""
+
+#: range-diff.c:80
+msgid "could not read `log` output"
+msgstr "kunde inte läsa utdata från \"log\""
 
-#: ref-filter.c:611
+#: range-diff.c:101 sequencer.c:5318
 #, c-format
-msgid "unknown field name: %.*s"
-msgstr "okänt fältnamn: %.*s"
+msgid "could not parse commit '%s'"
+msgstr "kunde inte tolka incheckningen \"%s\""
 
-#: ref-filter.c:615
+#: range-diff.c:115
 #, c-format
 msgid ""
-"not a git repository, but the field '%.*s' requires access to object data"
+"could not parse first line of `log` output: did not start with 'commit ': "
+"'%s'"
 msgstr ""
-"inte ett git-arkiv, men fältet \"%.*s\" kräver tillgång till objektdata"
+"kunde inte tolka första raden i \"log\"-updata: börjar inte med \"commit \": "
+"\"%s\""
 
-#: ref-filter.c:739
+#: range-diff.c:140
 #, c-format
-msgid "format: %%(if) atom used without a %%(then) atom"
-msgstr "format: atomen %%(if) använd utan en %%(then)-atom"
+msgid "could not parse git header '%.*s'"
+msgstr "kunde inte tolka git-huvudet \"%.*s\""
 
-#: ref-filter.c:802
-#, c-format
-msgid "format: %%(then) atom used without an %%(if) atom"
-msgstr "format: atomen %%(then) använd utan en %%(if)-atom"
+#: range-diff.c:306
+msgid "failed to generate diff"
+msgstr "misslyckades skapa diff"
 
-#: ref-filter.c:804
-#, c-format
-msgid "format: %%(then) atom used more than once"
-msgstr "format: atomen %%(then) använd mer än en gång"
+#: range-diff.c:558
+msgid "--left-only and --right-only are mutually exclusive"
+msgstr "--left-only och --right-only är ömsesidigt uteslutande"
 
-#: ref-filter.c:806
+#: range-diff.c:561 range-diff.c:563
 #, c-format
-msgid "format: %%(then) atom used after %%(else)"
-msgstr "format: atomen %%(then) använd efter %%(else)"
+msgid "could not parse log for '%s'"
+msgstr "kunde inte tolka loggen för \"%s\""
 
-#: ref-filter.c:834
+#: read-cache.c:682
 #, c-format
-msgid "format: %%(else) atom used without an %%(if) atom"
-msgstr "format: atomen %%(else) använd utan en %%(if)-atom"
+msgid "will not add file alias '%s' ('%s' already exists in index)"
+msgstr "lägger inte till filalias \"%s\" (\"%s\" finns redan i indexet)"
 
-#: ref-filter.c:836
-#, c-format
-msgid "format: %%(else) atom used without a %%(then) atom"
-msgstr "format: atomen %%(else) använd utan en %%(then)-atom"
+#: read-cache.c:698
+msgid "cannot create an empty blob in the object database"
+msgstr "kan inte skapa tom blob i objektdatabasen"
 
-#: ref-filter.c:838
+#: read-cache.c:720
 #, c-format
-msgid "format: %%(else) atom used more than once"
-msgstr "format: atomen %%(else) använd mer än en gång"
+msgid "%s: can only add regular files, symbolic links or git-directories"
+msgstr ""
+"%s: kan bara lägga till vanliga filer, symboliska länkar och git-kataloger"
 
-#: ref-filter.c:853
+#: read-cache.c:725
 #, c-format
-msgid "format: %%(end) atom used without corresponding atom"
-msgstr "format: atomen %%(end) använd utan motsvarande atom"
+msgid "'%s' does not have a commit checked out"
+msgstr "\"%s\" har inte någon utcheckad incheckning"
 
-#: ref-filter.c:910
+#: read-cache.c:777
 #, c-format
-msgid "malformed format string %s"
-msgstr "felformad formatsträng %s"
+msgid "unable to index file '%s'"
+msgstr "kan inte indexera filen \"%s\""
 
-#: ref-filter.c:1549
+#: read-cache.c:796
 #, c-format
-msgid "no branch, rebasing %s"
-msgstr "ingen gren, ombaserar %s"
+msgid "unable to add '%s' to index"
+msgstr "kan inte lägga till \"%s\" till indexet"
 
-#: ref-filter.c:1552
+#: read-cache.c:807
 #, c-format
-msgid "no branch, rebasing detached HEAD %s"
-msgstr "ingen gren, ombaserar frånkopplat HEAD %s"
+msgid "unable to stat '%s'"
+msgstr "kan inte ta status på \"%s\""
 
-#: ref-filter.c:1555
+#: read-cache.c:1318
 #, c-format
-msgid "no branch, bisect started on %s"
-msgstr "ingen gren, \"bisect\" startad på %s"
-
-#: ref-filter.c:1565
-msgid "no branch"
-msgstr "ingen gren"
-
-#: ref-filter.c:1599 ref-filter.c:1808
-#, c-format
-msgid "missing object %s for %s"
-msgstr "objektet %s saknas för %s"
-
-#: ref-filter.c:1609
-#, c-format
-msgid "parse_object_buffer failed on %s for %s"
-msgstr "parse_object_buffer misslyckades på %s för %s"
-
-#: ref-filter.c:2062
-#, c-format
-msgid "malformed object at '%s'"
-msgstr "felformat objekt vid \"%s\""
-
-#: ref-filter.c:2151
-#, c-format
-msgid "ignoring ref with broken name %s"
-msgstr "ignorerar referens med trasigt namn %s"
-
-#: ref-filter.c:2156 refs.c:676
-#, c-format
-msgid "ignoring broken ref %s"
-msgstr "ignorerar trasig referens %s"
-
-#: ref-filter.c:2472
-#, c-format
-msgid "format: %%(end) atom missing"
-msgstr "format: atomen %%(end) saknas"
-
-#: ref-filter.c:2571
-#, c-format
-msgid "malformed object name %s"
-msgstr "felformat objektnamn %s"
+msgid "'%s' appears as both a file and as a directory"
+msgstr "\"%s\" finns både som en fil och en katalog"
 
-#: ref-filter.c:2576
-#, c-format
-msgid "option `%s' must point to a commit"
-msgstr "flaggan \"%s\" måste peka på en incheckning"
+#: read-cache.c:1532
+msgid "Refresh index"
+msgstr "Uppdatera indexet"
 
-#: refs.c:264
+#: read-cache.c:1657
 #, c-format
-msgid "%s does not point to a valid object!"
-msgstr "\"%s\" pekar inte på ett giltigt objekt!"
+msgid ""
+"index.version set, but the value is invalid.\n"
+"Using version %i"
+msgstr ""
+"index.version satt, men värdet är ogiltigt.\n"
+"Använder version %i"
 
-#: refs.c:566
+#: read-cache.c:1667
 #, c-format
 msgid ""
-"Using '%s' as the name for the initial branch. This default branch name\n"
-"is subject to change. To configure the initial branch name to use in all\n"
-"of your new repositories, which will suppress this warning, call:\n"
-"\n"
-"\tgit config --global init.defaultBranch <name>\n"
-"\n"
-"Names commonly chosen instead of 'master' are 'main', 'trunk' and\n"
-"'development'. The just-created branch can be renamed via this command:\n"
-"\n"
-"\tgit branch -m <name>\n"
+"GIT_INDEX_VERSION set, but the value is invalid.\n"
+"Using version %i"
 msgstr ""
-"Använder \"%s\" som namn för den inledande grenen. Detta förvalda grennamn\n"
-"kan ändras i framtiden. För att välja vilket namn som ska användas på\n"
-"den inledande grenen i alla nya arkiv, och dölja denna varning, kör du:\n"
-"\n"
-"\tgit config --global init.defaultBranch <namn>\n"
-"\n"
-"Namn som ofta används instället för \"master\" är \"main\", \"trunk\" och\n"
-"\"development\". Den nyskapade grenen kan ges nytt namn med kommandot:\n"
-"\n"
-"\tgit branch -m <namn>\n"
+"GIT_INDEX_VERSION satt, men värdet är ogiltigt.\n"
+"Använder version %i"
 
-#: refs.c:588
+#: read-cache.c:1723
 #, c-format
-msgid "could not retrieve `%s`"
-msgstr "kunde inte hämta \"%s\""
+msgid "bad signature 0x%08x"
+msgstr "felaktig signatur 0x%08x"
 
-#: refs.c:598
+#: read-cache.c:1726
 #, c-format
-msgid "invalid branch name: %s = %s"
-msgstr "felaktigt namn på gren: %s = %s"
+msgid "bad index version %d"
+msgstr "felaktig indexversion %d"
 
-#: refs.c:674
-#, c-format
-msgid "ignoring dangling symref %s"
-msgstr "ignorerar dinglande symbolisk referens %s"
+#: read-cache.c:1735
+msgid "bad index file sha1 signature"
+msgstr "felaktig sha1-signatur för indexfil"
 
-#: refs.c:911
+#: read-cache.c:1765
 #, c-format
-msgid "log for ref %s has gap after %s"
-msgstr "loggen för referensen %s har lucka efter %s"
+msgid "index uses %.4s extension, which we do not understand"
+msgstr "index använder filtillägget %.4s, vilket vi inte förstår"
 
-#: refs.c:917
+#: read-cache.c:1767
 #, c-format
-msgid "log for ref %s unexpectedly ended on %s"
-msgstr "loggen för referensen %s slutade oväntat på %s"
+msgid "ignoring %.4s extension"
+msgstr "ignorerar filtillägget %.4s"
 
-#: refs.c:976
+#: read-cache.c:1804
 #, c-format
-msgid "log for %s is empty"
-msgstr "loggen för %s är tom"
+msgid "unknown index entry format 0x%08x"
+msgstr "okänt format 0x%08x på indexpost"
 
-#: refs.c:1068
+#: read-cache.c:1820
 #, c-format
-msgid "refusing to update ref with bad name '%s'"
-msgstr "vägrar uppdatera referens med trasigt namn \"%s\""
+msgid "malformed name field in the index, near path '%s'"
+msgstr "felformat namnfält i indexet, nära sökvägen \"%s\""
 
-#: refs.c:1139
-#, c-format
-msgid "update_ref failed for ref '%s': %s"
-msgstr "update_ref misslyckades för referensen \"%s\": %s"
+#: read-cache.c:1877
+msgid "unordered stage entries in index"
+msgstr "osorterade köposter i index"
 
-#: refs.c:1963
+#: read-cache.c:1880
 #, c-format
-msgid "multiple updates for ref '%s' not allowed"
-msgstr "flera uppdateringar för referensen \"%s\" tillåts inte"
+msgid "multiple stage entries for merged file '%s'"
+msgstr "flera köposter för den sammanslagna filen \"%s\""
 
-#: refs.c:2043
-msgid "ref updates forbidden inside quarantine environment"
-msgstr "referensuppdateringar förbjudna i karantänmiljö"
+#: read-cache.c:1883
+#, c-format
+msgid "unordered stage entries for '%s'"
+msgstr "osorterade köposter för \"%s\""
 
-#: refs.c:2054
-msgid "ref updates aborted by hook"
-msgstr "referensuppdateringar avbrutna av krok"
+#: read-cache.c:1989 read-cache.c:2280 rerere.c:549 rerere.c:583 rerere.c:1095
+#: submodule.c:1634 builtin/add.c:546 builtin/check-ignore.c:181
+#: builtin/checkout.c:504 builtin/checkout.c:690 builtin/clean.c:991
+#: builtin/commit.c:364 builtin/diff-tree.c:122 builtin/grep.c:505
+#: builtin/mv.c:146 builtin/reset.c:247 builtin/rm.c:290
+#: builtin/submodule--helper.c:332
+msgid "index file corrupt"
+msgstr "indexfilen trasig"
 
-#: refs.c:2154 refs.c:2184
+#: read-cache.c:2133
 #, c-format
-msgid "'%s' exists; cannot create '%s'"
-msgstr "\"%s\" finns; kan inte skapa \"%s\""
+msgid "unable to create load_cache_entries thread: %s"
+msgstr "kunde inte läsa in cache_entries-tråden: %s"
 
-#: refs.c:2160 refs.c:2195
+#: read-cache.c:2146
 #, c-format
-msgid "cannot process '%s' and '%s' at the same time"
-msgstr "kan inte hantera \"%s\" och \"%s\" samtidigt"
+msgid "unable to join load_cache_entries thread: %s"
+msgstr "kunde inte utföra join på cache_entries-tråden: %s"
 
-#: refs/files-backend.c:1228
+#: read-cache.c:2179
 #, c-format
-msgid "could not remove reference %s"
-msgstr "kunde inte ta bort referensen %s"
+msgid "%s: index file open failed"
+msgstr "%s: öppning av indexfilen misslyckades"
 
-#: refs/files-backend.c:1242 refs/packed-backend.c:1542
-#: refs/packed-backend.c:1552
+#: read-cache.c:2183
 #, c-format
-msgid "could not delete reference %s: %s"
-msgstr "kunde inte ta bort referensen %s: %s"
+msgid "%s: cannot stat the open index"
+msgstr "%s: kan inte ta startus på det öppna indexet"
 
-#: refs/files-backend.c:1245 refs/packed-backend.c:1555
+#: read-cache.c:2187
 #, c-format
-msgid "could not delete references: %s"
-msgstr "kunde inte ta bort referenser: %s"
+msgid "%s: index file smaller than expected"
+msgstr "%s: indexfilen mindre än förväntat"
 
-#: refspec.c:170
+#: read-cache.c:2191
 #, c-format
-msgid "invalid refspec '%s'"
-msgstr "felaktig referensspecifikation: \"%s\""
+msgid "%s: unable to map index file"
+msgstr "%s: kan inte koppla indexfilen"
 
-#: remote.c:351
+#: read-cache.c:2233
 #, c-format
-msgid "config remote shorthand cannot begin with '/': %s"
-msgstr "konfigurerad kortform för fjärr kan inte börja med \"/\": %s"
-
-#: remote.c:399
-msgid "more than one receivepack given, using the first"
-msgstr "mer än en receivepack angavs, använder den första"
-
-#: remote.c:407
-msgid "more than one uploadpack given, using the first"
-msgstr "mer än en uploadpack angavs, använder den första"
+msgid "unable to create load_index_extensions thread: %s"
+msgstr "kunde inte skapa load_index_extensions-tråden: %s"
 
-#: remote.c:590
+#: read-cache.c:2260
 #, c-format
-msgid "Cannot fetch both %s and %s to %s"
-msgstr "Kan inte hämta både %s och %s till %s"
+msgid "unable to join load_index_extensions thread: %s"
+msgstr "kunde inte utföra join på load_index_extensions-tråden: %s"
 
-#: remote.c:594
+#: read-cache.c:2292
 #, c-format
-msgid "%s usually tracks %s, not %s"
-msgstr "%s spårar vanligtvis %s, inte %s"
+msgid "could not freshen shared index '%s'"
+msgstr "kunde inte uppdatera delat index \"%s\""
 
-#: remote.c:598
+#: read-cache.c:2339
 #, c-format
-msgid "%s tracks both %s and %s"
-msgstr "%s spårar både %s och %s"
+msgid "broken index, expect %s in %s, got %s"
+msgstr "trasigt index, förväntade %s i %s, fick %s"
 
-#: remote.c:666
+#: read-cache.c:3035 strbuf.c:1171 wrapper.c:633 builtin/merge.c:1141
 #, c-format
-msgid "key '%s' of pattern had no '*'"
-msgstr "nyckeln \"%s\" i mönstret innehåller ingen \"*\""
+msgid "could not close '%s'"
+msgstr "kunde inte stänga \"%s\""
 
-#: remote.c:676
+#: read-cache.c:3138 sequencer.c:2487 sequencer.c:4239
 #, c-format
-msgid "value '%s' of pattern has no '*'"
-msgstr "värdet \"%s\" i mönstret innehåller ingen \"*\""
+msgid "could not stat '%s'"
+msgstr "kunde inte ta status på \"%s\""
 
-#: remote.c:1073
+#: read-cache.c:3151
 #, c-format
-msgid "src refspec %s does not match any"
-msgstr "käll-referensspecifikationen %s motsvarar ingen"
+msgid "unable to open git dir: %s"
+msgstr "kunde inte öppna git-katalog: %s"
 
-#: remote.c:1078
+#: read-cache.c:3163
 #, c-format
-msgid "src refspec %s matches more than one"
-msgstr "käll-referensspecifikationen %s motsvarar mer än en"
+msgid "unable to unlink: %s"
+msgstr "misslyckades ta bort länken: %s"
 
-#. TRANSLATORS: "matches '%s'%" is the <dst> part of "git push
-#. <remote> <src>:<dst>" push, and "being pushed ('%s')" is
-#. the <src>.
-#.
-#: remote.c:1093
+#: read-cache.c:3188
 #, c-format
-msgid ""
-"The destination you provided is not a full refname (i.e.,\n"
-"starting with \"refs/\"). We tried to guess what you meant by:\n"
-"\n"
-"- Looking for a ref that matches '%s' on the remote side.\n"
-"- Checking if the <src> being pushed ('%s')\n"
-"  is a ref in \"refs/{heads,tags}/\". If so we add a corresponding\n"
-"  refs/{heads,tags}/ prefix on the remote side.\n"
-"\n"
-"Neither worked, so we gave up. You must fully qualify the ref."
-msgstr ""
-"Målet du angav är inte ett komplett referensamn (dvs.,\n"
-"startar med \"refs/\"). Vi försökte gissa vad du menade genom att:\n"
-"\n"
-"- Se efter en referens som motsvarar \"%s\" på fjärrsidan.\n"
-"- Se om <källan> som sänds (\"%s\")\n"
-"  är en referens i \"refs/{heads,tags}/\". Om så lägger vi till\n"
-"  motsvarande refs/{heads,tags}/-prefix på fjärrsidan.\n"
-"\n"
-"Inget av dem fungerade, så vi gav upp. Ange fullständig referens."
+msgid "cannot fix permission bits on '%s'"
+msgstr "kan inte rätta behörighetsbitar på \"%s\""
 
-#: remote.c:1113
+#: read-cache.c:3337
 #, c-format
+msgid "%s: cannot drop to stage #0"
+msgstr "%s: kan inte återgå till kö 0"
+
+#: rebase-interactive.c:11
 msgid ""
-"The <src> part of the refspec is a commit object.\n"
-"Did you mean to create a new branch by pushing to\n"
-"'%s:refs/heads/%s'?"
+"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 ""
-"<Källa>-delen av ref.spec-en är ett incheckningsobjekt.\n"
-"Var det meningen att skapa en ny gren genom att sända\n"
-"till \"%s:refs/heads/%s\"?"
+"Du kan rätta detta med \"git rebase --edit-todo\" följt av \"git rebase --"
+"continue\".\n"
+"Avbryt ombaseringen med \"git rebase --abort\".\n"
 
-#: remote.c:1118
+#: rebase-interactive.c:33
 #, c-format
 msgid ""
-"The <src> part of the refspec is a tag object.\n"
-"Did you mean to create a new tag by pushing to\n"
-"'%s:refs/tags/%s'?"
+"unrecognized setting %s for option rebase.missingCommitsCheck. Ignoring."
 msgstr ""
-"<Källa>-delen av ref.spec-en är ett taggobjekt.\n"
-"Var det meningen att skapa en ny tagg genom att sända\n"
-"till \"%s:refs/tags/%s\"?"
+"okänd inställning %s för flaggan rebase.missingCommitsCheck. Ignorerar."
 
-#: remote.c:1123
-#, c-format
+#: rebase-interactive.c:42
 msgid ""
-"The <src> part of the refspec is a tree object.\n"
-"Did you mean to tag a new tree by pushing to\n"
-"'%s:refs/tags/%s'?"
-msgstr ""
-"<Källa>-delen av ref.spec-en är ett trädobjekt.\n"
-"Var det meningen att tagga ett nytt träd genom att sända\n"
-"till \"%s:refs/tags/%s\"?"
+"\n"
+"Commands:\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"
+"b, break = stop here (continue rebase later with 'git rebase --continue')\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 <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"
+"b, break = stoppa här (fortsätt ombaseringen senare med \"git rebase --"
+"continue\")\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"
 
-#: remote.c:1128
+#: rebase-interactive.c:63
 #, c-format
+msgid "Rebase %s onto %s (%d command)"
+msgid_plural "Rebase %s onto %s (%d commands)"
+msgstr[0] "Ombasera %s på %s (%d kommando)"
+msgstr[1] "Ombasera %s på %s (%d kommandon)"
+
+#: rebase-interactive.c:72 git-rebase--preserve-merges.sh:218
 msgid ""
-"The <src> part of the refspec is a blob object.\n"
-"Did you mean to tag a new blob by pushing to\n"
-"'%s:refs/tags/%s'?"
+"\n"
+"Do not remove any line. Use 'drop' explicitly to remove a commit.\n"
 msgstr ""
-"<Källa>-delen av ref.spec-en är ett blobobjekt.\n"
-"Var det meningen att tagga en ny blob genom att sända\n"
-"till \"%s:refs/tags/%s\"?"
+"\n"
+"Ta inte bort rader. Använd \"drop\" för att specifikt förkasta en "
+"incheckning.\n"
 
-#: remote.c:1164
-#, c-format
-msgid "%s cannot be resolved to branch"
-msgstr "%s kan inte slås upp till en gren"
+#: rebase-interactive.c:75 git-rebase--preserve-merges.sh:222
+msgid ""
+"\n"
+"If you remove a line here THAT COMMIT WILL BE LOST.\n"
+msgstr ""
+"\n"
+"Om du tar bort en rad KOMMER DEN INCHECKNINGEN ATT FÖRLORAS.\n"
 
-#: remote.c:1175
-#, c-format
-msgid "unable to delete '%s': remote ref does not exist"
-msgstr "kan inte ta bort \"%s\": fjärreferensen finns inte"
+#: rebase-interactive.c:81 git-rebase--preserve-merges.sh:861
+msgid ""
+"\n"
+"You are editing the todo file of an ongoing interactive rebase.\n"
+"To continue rebase after editing, run:\n"
+"    git rebase --continue\n"
+"\n"
+msgstr ""
+"\n"
+"Du redigerar \"todo\"-filen för en pågående interaktiv ombasering.\n"
+"För att forsätta ombasera efter redigeringen, kör:\n"
+"    git rebase --continue\n"
+"\n"
 
-#: remote.c:1187
-#, c-format
-msgid "dst refspec %s matches more than one"
-msgstr "fjärr-referensspecifikationen \"%s\" motsvarar mer än en"
+#: rebase-interactive.c:86 git-rebase--preserve-merges.sh:938
+msgid ""
+"\n"
+"However, if you remove everything, the rebase will be aborted.\n"
+"\n"
+msgstr ""
+"\n"
+"Ombaseringen kommer dock att avbrytas om du tar bort allting.\n"
+"\n"
 
-#: remote.c:1194
+#: rebase-interactive.c:110 rerere.c:469 rerere.c:676 sequencer.c:3615
+#: sequencer.c:3641 sequencer.c:5424 builtin/fsck.c:329 builtin/rebase.c:272
 #, c-format
-msgid "dst ref %s receives from more than one src"
-msgstr "fjärr-referensen \"%s\" hämtar från mer än en källa"
-
-#: remote.c:1714 remote.c:1815
-msgid "HEAD does not point to a branch"
-msgstr "HEAD pekar inte på en gren"
+msgid "could not write '%s'"
+msgstr "kunde inte skriva \"%s\""
 
-#: remote.c:1723
+#: rebase-interactive.c:116 builtin/rebase.c:204 builtin/rebase.c:230
+#: builtin/rebase.c:254
 #, c-format
-msgid "no such branch: '%s'"
-msgstr "okänd gren: \"%s\""
+msgid "could not write '%s'."
+msgstr "kunde inte skriva \"%s\"."
 
-#: remote.c:1726
+#: rebase-interactive.c:193
 #, c-format
-msgid "no upstream configured for branch '%s'"
-msgstr "ingen standarduppström angiven för grenen \"%s\""
+msgid ""
+"Warning: some commits may have been dropped accidentally.\n"
+"Dropped commits (newer to older):\n"
+msgstr ""
+"Varning: vissa incheckningar kan av misstag ha tappats.\n"
+"Tappade incheckningar (nyaste först):\n"
 
-#: remote.c:1732
+#: rebase-interactive.c:200
 #, 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"
+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"
+"The possible behaviours are: ignore, warn, error.\n"
+"\n"
+msgstr ""
+"För att undvika det här meddelandet kan du använda \"drop\" för att "
+"explicit\n"
+"kasta en incheckning.\n"
+"\n"
+"Använd \"git config rebase.missingCommitsCheck\" för att ändra "
+"varningsnivån.\n"
+"Möjliga bettenden är: \"ignore\" (ignorera), \"warn\" (varna), \"error"
+"\" (fel).\n"
+"\n"
 
-#: remote.c:1747
+#: rebase-interactive.c:233 rebase-interactive.c:238 sequencer.c:2402
+#: builtin/rebase.c:190 builtin/rebase.c:215 builtin/rebase.c:241
+#: builtin/rebase.c:266
 #, 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"
+msgid "could not read '%s'."
+msgstr "kunde inte läsa \"%s\"."
+
+#: ref-filter.c:42 wt-status.c:1975
+msgid "gone"
+msgstr "försvunnen"
 
-#: remote.c:1759
+#: ref-filter.c:43
 #, c-format
-msgid "branch '%s' has no remote for pushing"
-msgstr "grenen \"%s\" har ingen fjärr för \"push\""
+msgid "ahead %d"
+msgstr "före %d"
 
-#: remote.c:1769
+#: ref-filter.c:44
 #, c-format
-msgid "push refspecs for '%s' do not include '%s'"
-msgstr "\"push\"-referensspecifikation för \"%s\" innehåller inte \"%s\""
+msgid "behind %d"
+msgstr "bakom %d"
 
-#: remote.c:1782
-msgid "push has no destination (push.default is 'nothing')"
-msgstr "\"push\" har inget mål (push.default är \"ingenting\")"
+#: ref-filter.c:45
+#, c-format
+msgid "ahead %d, behind %d"
+msgstr "före %d, bakom %d"
 
-#: remote.c:1804
-msgid "cannot resolve 'simple' push to a single destination"
-msgstr "\"enkel push\" motsvarar flera olika mål"
+#: ref-filter.c:175
+#, c-format
+msgid "expected format: %%(color:<color>)"
+msgstr "förväntat format: %%(color:<color>)"
 
-#: remote.c:1933
+#: ref-filter.c:177
 #, c-format
-msgid "couldn't find remote ref %s"
-msgstr "Kunde inte hitta fjärr-referensen %s"
+msgid "unrecognized color: %%(color:%s)"
+msgstr "okänd färg: %%(color:%s)"
 
-#: remote.c:1946
+#: ref-filter.c:199
 #, c-format
-msgid "* Ignoring funny ref '%s' locally"
-msgstr "* Ignorerar märklig referens \"%s\" lokalt"
+msgid "Integer value expected refname:lstrip=%s"
+msgstr "Heltalsvärde förväntades refname:lstrip=%s"
 
-#: remote.c:2109
+#: ref-filter.c:203
 #, 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"
+msgid "Integer value expected refname:rstrip=%s"
+msgstr "Heltalsvärde förväntades refname:rstrip=%s"
 
-#: remote.c:2113
-msgid "  (use \"git branch --unset-upstream\" to fixup)\n"
-msgstr "  (använd \"git branch --unset-upstream\" för att rätta)\n"
+#: ref-filter.c:205
+#, c-format
+msgid "unrecognized %%(%s) argument: %s"
+msgstr "okänt %%(%s)-argument: %s"
 
-#: remote.c:2116
+#: ref-filter.c:260
 #, c-format
-msgid "Your branch is up to date with '%s'.\n"
-msgstr "Din gren är à jour med \"%s\".\n"
+msgid "%%(objecttype) does not take arguments"
+msgstr "%%(objecttype) tar inte argument"
 
-#: remote.c:2120
+#: ref-filter.c:282
 #, c-format
-msgid "Your branch and '%s' refer to different commits.\n"
-msgstr "Din gren och \"%s\" pekar på olika incheckningar.\n"
+msgid "unrecognized %%(objectsize) argument: %s"
+msgstr "okänt %%(objectsize)-argument: %s"
 
-#: remote.c:2123
+#: ref-filter.c:290
 #, c-format
-msgid "  (use \"%s\" for details)\n"
-msgstr "  (använd \"%s\" för detaljer)\n"
+msgid "%%(deltabase) does not take arguments"
+msgstr "%%(deltabase) tar inte argument"
 
-#: remote.c:2127
+#: ref-filter.c:302
 #, 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"
+msgid "%%(body) does not take arguments"
+msgstr "%%(body) tar inte argument"
 
-#: remote.c:2133
-msgid "  (use \"git push\" to publish your local commits)\n"
-msgstr "  (använd \"git push\" för att publicera dina lokala incheckningar)\n"
+#: ref-filter.c:315
+#, c-format
+msgid "unrecognized %%(subject) argument: %s"
+msgstr "okänt %%(subject)-argument: %s"
 
-#: remote.c:2136
+#: ref-filter.c:334
 #, 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] ""
-"Din gren ligger efter \"%s\" med %d incheckning, och kan snabbspolas.\n"
-msgstr[1] ""
-"Din gren ligger efter \"%s\" med %d incheckningar, och kan snabbspolas.\n"
+msgid "expected %%(trailers:key=<value>)"
+msgstr "förvändate %%(trailers:nyckel=<värde>)"
 
-#: remote.c:2144
-msgid "  (use \"git pull\" to update your local branch)\n"
-msgstr "  (använd \"git pull\" för att uppdatera din lokala gren)\n"
+#: ref-filter.c:336
+#, c-format
+msgid "unknown %%(trailers) argument: %s"
+msgstr "okänt %%(trailers)-argument: %s"
 
-#: remote.c:2147
+#: ref-filter.c:367
 #, c-format
-msgid ""
-"Your branch and '%s' have diverged,\n"
-"and have %d and %d different commit each, respectively.\n"
-msgid_plural ""
-"Your branch and '%s' have diverged,\n"
-"and have %d and %d different commits each, respectively.\n"
-msgstr[0] ""
-"Din gren och \"%s\" har divergerat,\n"
-"och har %d respektive %d olika incheckning.\n"
-msgstr[1] ""
-"Din gren och \"%s\" har divergerat,\n"
-"och har %d respektive %d olika incheckningar.\n"
+msgid "positive value expected contents:lines=%s"
+msgstr "positivt värde förväntat contents:lines=%s"
 
-#: remote.c:2157
-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"
+#: ref-filter.c:369
+#, c-format
+msgid "unrecognized %%(contents) argument: %s"
+msgstr "okänt %%(contents)-argument: %s"
 
-#: remote.c:2349
+#: ref-filter.c:384
 #, c-format
-msgid "cannot parse expected object name '%s'"
-msgstr "kan inte tolka förväntat objektnamn \"%s\""
+msgid "positive value expected '%s' in %%(%s)"
+msgstr "positivt värde förväntat \"%s\" i %%(%s)"
 
-#: replace-object.c:21
+#: ref-filter.c:388
 #, c-format
-msgid "bad replace ref name: %s"
-msgstr "felaktig ersättningsreferensnamn: %s"
+msgid "unrecognized argument '%s' in %%(%s)"
+msgstr "okänt argument \"%s\" i %%(%s)"
 
-#: replace-object.c:30
+#: ref-filter.c:402
 #, c-format
-msgid "duplicate replace ref: %s"
-msgstr "duplicerat ersättningsreferensnamn: %s"
+msgid "unrecognized email option: %s"
+msgstr "okänd e-postalternativ: %s"
 
-#: replace-object.c:82
+#: ref-filter.c:432
 #, c-format
-msgid "replace depth too high for object %s"
-msgstr "ersättningsdjupet för högt för objektet %s"
-
-#: rerere.c:217 rerere.c:226 rerere.c:229
-msgid "corrupt MERGE_RR"
-msgstr "trasig MERGE_RR"
-
-#: rerere.c:264 rerere.c:269
-msgid "unable to write rerere record"
-msgstr "kunde inte skriva rerere-post"
+msgid "expected format: %%(align:<width>,<position>)"
+msgstr "förväntat format: %%(align:<bredd>,<position>)"
 
-#: rerere.c:495
+#: ref-filter.c:444
 #, c-format
-msgid "there were errors while writing '%s' (%s)"
-msgstr "fel vid skrivning av \"%s\" (%s)"
+msgid "unrecognized position:%s"
+msgstr "okänd position:%s"
 
-#: rerere.c:498
+#: ref-filter.c:451
 #, c-format
-msgid "failed to flush '%s'"
-msgstr "misslyckades spola \"%s\""
+msgid "unrecognized width:%s"
+msgstr "okänd bredd:%s"
 
-#: rerere.c:503 rerere.c:1039
+#: ref-filter.c:460
 #, c-format
-msgid "could not parse conflict hunks in '%s'"
-msgstr "kunde inte tolka konflikt-stycket i \"%s\""
+msgid "unrecognized %%(align) argument: %s"
+msgstr "okänt %%(align)-argument: %s"
 
-#: rerere.c:684
+#: ref-filter.c:468
 #, c-format
-msgid "failed utime() on '%s'"
-msgstr "\"utime()\" misslyckades på \"%s\""
+msgid "positive width expected with the %%(align) atom"
+msgstr "positiv bredd förväntad med atomen %%(align)"
 
-#: rerere.c:694
+#: ref-filter.c:486
 #, c-format
-msgid "writing '%s' failed"
-msgstr "misslyckades skriva \"%s\""
+msgid "unrecognized %%(if) argument: %s"
+msgstr "okänt %%(if)-argument: %s"
 
-#: rerere.c:714
+#: ref-filter.c:588
 #, c-format
-msgid "Staged '%s' using previous resolution."
-msgstr "Köade \"%s\" med sparad lösning."
+msgid "malformed field name: %.*s"
+msgstr "felformat fältnamn: %.*s"
 
-#: rerere.c:753
+#: ref-filter.c:615
 #, c-format
-msgid "Recorded resolution for '%s'."
-msgstr "Sparade lösning för \"%s\"."
+msgid "unknown field name: %.*s"
+msgstr "okänt fältnamn: %.*s"
 
-#: rerere.c:788
+#: ref-filter.c:619
 #, c-format
-msgid "Resolved '%s' using previous resolution."
-msgstr "Löste \"%s\" med tidigare lösning."
+msgid ""
+"not a git repository, but the field '%.*s' requires access to object data"
+msgstr ""
+"inte ett git-arkiv, men fältet \"%.*s\" kräver tillgång till objektdata"
 
-#: rerere.c:803
+#: ref-filter.c:743
 #, c-format
-msgid "cannot unlink stray '%s'"
-msgstr "kan inte ta bort lös länk \"%s\""
+msgid "format: %%(if) atom used without a %%(then) atom"
+msgstr "format: atomen %%(if) använd utan en %%(then)-atom"
 
-#: rerere.c:807
+#: ref-filter.c:806
 #, c-format
-msgid "Recorded preimage for '%s'"
-msgstr "Sparade förhandsbild för \"%s\""
+msgid "format: %%(then) atom used without an %%(if) atom"
+msgstr "format: atomen %%(then) använd utan en %%(if)-atom"
 
-#: rerere.c:881 submodule.c:2082 builtin/log.c:1992
-#: builtin/submodule--helper.c:1878 builtin/submodule--helper.c:1890
+#: ref-filter.c:808
 #, c-format
-msgid "could not create directory '%s'"
-msgstr "kunde inte skapa katalogen \"%s\""
+msgid "format: %%(then) atom used more than once"
+msgstr "format: atomen %%(then) använd mer än en gång"
 
-#: rerere.c:1057
+#: ref-filter.c:810
 #, c-format
-msgid "failed to update conflicted state in '%s'"
-msgstr "misslyckades uppdatera tillstånd för sammanslagningsproblem i \"%s\""
+msgid "format: %%(then) atom used after %%(else)"
+msgstr "format: atomen %%(then) använd efter %%(else)"
 
-#: rerere.c:1068 rerere.c:1075
+#: ref-filter.c:838
 #, c-format
-msgid "no remembered resolution for '%s'"
-msgstr "inget sparat sammanslagningsresultat för \"%s\""
+msgid "format: %%(else) atom used without an %%(if) atom"
+msgstr "format: atomen %%(else) använd utan en %%(if)-atom"
 
-#: rerere.c:1077
+#: ref-filter.c:840
 #, c-format
-msgid "cannot unlink '%s'"
-msgstr "kan inte ta bort länken \"%s\""
+msgid "format: %%(else) atom used without a %%(then) atom"
+msgstr "format: atomen %%(else) använd utan en %%(then)-atom"
 
-#: rerere.c:1087
+#: ref-filter.c:842
 #, c-format
-msgid "Updated preimage for '%s'"
-msgstr "Uppdaterade förhandsbild för \"%s\""
+msgid "format: %%(else) atom used more than once"
+msgstr "format: atomen %%(else) använd mer än en gång"
 
-#: rerere.c:1096
+#: ref-filter.c:857
 #, c-format
-msgid "Forgot resolution for '%s'\n"
-msgstr "Glömde lösning för \"%s\"\n"
-
-#: rerere.c:1199
-msgid "unable to open rr-cache directory"
-msgstr "kan inte uppdatera katalogen rr-cache"
+msgid "format: %%(end) atom used without corresponding atom"
+msgstr "format: atomen %%(end) använd utan motsvarande atom"
 
-#: reset.c:42
-msgid "could not determine HEAD revision"
-msgstr "kunde inte bestämma HEAD-revision"
+#: ref-filter.c:914
+#, c-format
+msgid "malformed format string %s"
+msgstr "felformad formatsträng %s"
 
-#: reset.c:70 reset.c:76 sequencer.c:3460
+#: ref-filter.c:1555
 #, c-format
-msgid "failed to find tree of %s"
-msgstr "kunde inte hitta trädet för %s."
+msgid "(no branch, rebasing %s)"
+msgstr "(ingen gren, ombaserar %s)"
 
-#: revision.c:2336
-msgid "--unpacked=<packfile> no longer supported"
-msgstr "--unpacked=<paketfil> stöds inte längre"
+#: ref-filter.c:1558
+#, c-format
+msgid "(no branch, rebasing detached HEAD %s)"
+msgstr "(ingen gren, ombaserar frånkopplat HEAD %s)"
 
-#: revision.c:2356
+#: ref-filter.c:1561
 #, c-format
-msgid "unknown value for --diff-merges: %s"
-msgstr "okänt värde för --diff-merges: %s"
+msgid "(no branch, bisect started on %s)"
+msgstr "(ingen gren, \"bisect\" startad på %s)"
 
-#: revision.c:2694
-msgid "your current branch appears to be broken"
-msgstr "din nuvarande gren verkar vara trasig"
+#: ref-filter.c:1565
+#, c-format
+msgid "(HEAD detached at %s)"
+msgstr "(HEAD frånkopplat vid %s)"
 
-#: revision.c:2697
+#: ref-filter.c:1568
 #, 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"
+msgid "(HEAD detached from %s)"
+msgstr "(HEAD frånkopplat från %s)"
 
-#: revision.c:2907
-msgid "-L does not yet support diff formats besides -p and -s"
-msgstr "-L stöder ännu inte andra diff-format än -p och -s"
+#: ref-filter.c:1571
+msgid "(no branch)"
+msgstr "(ingen gren)"
 
-#: run-command.c:764
-msgid "open /dev/null failed"
-msgstr "misslyckades öppna /dev/null"
+#: ref-filter.c:1603 ref-filter.c:1812
+#, c-format
+msgid "missing object %s for %s"
+msgstr "objektet %s saknas för %s"
 
-#: run-command.c:1271
+#: ref-filter.c:1613
 #, c-format
-msgid "cannot create async thread: %s"
-msgstr "kan inte skapa asynkron tråd: %s"
+msgid "parse_object_buffer failed on %s for %s"
+msgstr "parse_object_buffer misslyckades på %s för %s"
 
-#: run-command.c:1335
+#: ref-filter.c:1996
 #, c-format
-msgid ""
-"The '%s' hook was ignored because it's not set as executable.\n"
-"You can disable this warning with `git config advice.ignoredHook false`."
-msgstr ""
-"Kroken \"%s\" ignorerades eftersom den inte är markerad som körbar.\n"
-"Du kan inaktivera varningen med \"git config advice.ignoredHook false\"."
+msgid "malformed object at '%s'"
+msgstr "felformat objekt vid \"%s\""
 
-#: send-pack.c:146
-msgid "unexpected flush packet while reading remote unpack status"
-msgstr "oväntat flush-paket vid läsning av fjärruppackningsstatus"
+#: ref-filter.c:2085
+#, c-format
+msgid "ignoring ref with broken name %s"
+msgstr "ignorerar referens med trasigt namn %s"
 
-#: send-pack.c:148
+#: ref-filter.c:2090 refs.c:676
 #, c-format
-msgid "unable to parse remote unpack status: %s"
-msgstr "kunde inte tolka fjärruppackningsstatus: %s"
+msgid "ignoring broken ref %s"
+msgstr "ignorerar trasig referens %s"
 
-#: send-pack.c:150
+#: ref-filter.c:2430
 #, c-format
-msgid "remote unpack failed: %s"
-msgstr "fjärruppackning misslyckades: %s"
+msgid "format: %%(end) atom missing"
+msgstr "format: atomen %%(end) saknas"
 
-#: send-pack.c:374
-msgid "failed to sign the push certificate"
-msgstr "misslyckades underteckna push-certifikatet"
+#: ref-filter.c:2529
+#, c-format
+msgid "malformed object name %s"
+msgstr "felformat objektnamn %s"
 
-#: send-pack.c:467
-msgid "the receiving end does not support this repository's hash algorithm"
-msgstr "mottagarsidan stöder inte arkivets hashningsalgoritm"
+#: ref-filter.c:2534
+#, c-format
+msgid "option `%s' must point to a commit"
+msgstr "flaggan \"%s\" måste peka på en incheckning"
 
-#: send-pack.c:476
-msgid "the receiving end does not support --signed push"
-msgstr "mottagarsidan stöder inte push med --signed"
+#: refs.c:264
+#, c-format
+msgid "%s does not point to a valid object!"
+msgstr "\"%s\" pekar inte på ett giltigt objekt!"
 
-#: send-pack.c:478
+#: refs.c:566
+#, c-format
 msgid ""
-"not sending a push certificate since the receiving end does not support --"
-"signed push"
+"Using '%s' as the name for the initial branch. This default branch name\n"
+"is subject to change. To configure the initial branch name to use in all\n"
+"of your new repositories, which will suppress this warning, call:\n"
+"\n"
+"\tgit config --global init.defaultBranch <name>\n"
+"\n"
+"Names commonly chosen instead of 'master' are 'main', 'trunk' and\n"
+"'development'. The just-created branch can be renamed via this command:\n"
+"\n"
+"\tgit branch -m <name>\n"
 msgstr ""
-"sänder inte push-certifikat eftersom mottagarsidan inte stlder push med --"
-"signed"
+"Använder \"%s\" som namn för den inledande grenen. Detta förvalda grennamn\n"
+"kan ändras i framtiden. För att välja vilket namn som ska användas på\n"
+"den inledande grenen i alla nya arkiv, och dölja denna varning, kör du:\n"
+"\n"
+"\tgit config --global init.defaultBranch <namn>\n"
+"\n"
+"Namn som ofta används instället för \"master\" är \"main\", \"trunk\" och\n"
+"\"development\". Den nyskapade grenen kan ges nytt namn med kommandot:\n"
+"\n"
+"\tgit branch -m <namn>\n"
 
-#: send-pack.c:490
-msgid "the receiving end does not support --atomic push"
-msgstr "mottagarsidan stöder inte push med --atomic"
+#: refs.c:588
+#, c-format
+msgid "could not retrieve `%s`"
+msgstr "kunde inte hämta \"%s\""
 
-#: send-pack.c:495
-msgid "the receiving end does not support push options"
-msgstr "mottagarsidan stöder inte push-flaggor"
+#: refs.c:598
+#, c-format
+msgid "invalid branch name: %s = %s"
+msgstr "felaktigt namn på gren: %s = %s"
 
-#: sequencer.c:195
+#: refs.c:674
 #, c-format
-msgid "invalid commit message cleanup mode '%s'"
-msgstr "felaktigt incheckningsmeddelandestädningsläge \"%s\""
+msgid "ignoring dangling symref %s"
+msgstr "ignorerar dinglande symbolisk referens %s"
 
-#: sequencer.c:323
+#: refs.c:922
 #, c-format
-msgid "could not delete '%s'"
-msgstr "kunde inte ta bort \"%s\""
+msgid "log for ref %s has gap after %s"
+msgstr "loggen för referensen %s har lucka efter %s"
 
-#: sequencer.c:343 builtin/rebase.c:755 builtin/rebase.c:1596 builtin/rm.c:385
+#: refs.c:929
 #, c-format
-msgid "could not remove '%s'"
-msgstr "kunde inte ta bort \"%s\""
+msgid "log for ref %s unexpectedly ended on %s"
+msgstr "loggen för referensen %s slutade oväntat på %s"
 
-#: sequencer.c:353
-msgid "revert"
-msgstr "revert"
+#: refs.c:994
+#, c-format
+msgid "log for %s is empty"
+msgstr "loggen för %s är tom"
 
-#: sequencer.c:355
-msgid "cherry-pick"
-msgstr "cherry-pick"
+#: refs.c:1086
+#, c-format
+msgid "refusing to update ref with bad name '%s'"
+msgstr "vägrar uppdatera referens med trasigt namn \"%s\""
 
-#: sequencer.c:357
-msgid "rebase"
-msgstr "rebase"
+#: refs.c:1157
+#, c-format
+msgid "update_ref failed for ref '%s': %s"
+msgstr "update_ref misslyckades för referensen \"%s\": %s"
 
-#: sequencer.c:359
+#: refs.c:2051
 #, c-format
-msgid "unknown action: %d"
-msgstr "okänd funktion: %d"
+msgid "multiple updates for ref '%s' not allowed"
+msgstr "flera uppdateringar för referensen \"%s\" tillåts inte"
 
-#: sequencer.c:418
-msgid ""
-"after resolving the conflicts, mark the corrected paths\n"
-"with 'git add <paths>' or 'git rm <paths>'"
-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>\""
+#: refs.c:2131
+msgid "ref updates forbidden inside quarantine environment"
+msgstr "referensuppdateringar förbjudna i karantänmiljö"
 
-#: sequencer.c:421
-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 ""
-"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>\"\n"
-"och checka in resultatet med \"git commit\""
-
-#: sequencer.c:434 sequencer.c:3062
-#, c-format
-msgid "could not lock '%s'"
-msgstr "kunde inte låsa \"%s\""
+#: refs.c:2142
+msgid "ref updates aborted by hook"
+msgstr "referensuppdateringar avbrutna av krok"
 
-#: sequencer.c:436 sequencer.c:2861 sequencer.c:3066 sequencer.c:3080
-#: sequencer.c:3337 sequencer.c:5326 strbuf.c:1168 wrapper.c:631
+#: refs.c:2242 refs.c:2272
 #, c-format
-msgid "could not write to '%s'"
-msgstr "kunde inte skriva till \"%s\""
+msgid "'%s' exists; cannot create '%s'"
+msgstr "\"%s\" finns; kan inte skapa \"%s\""
 
-#: sequencer.c:441
+#: refs.c:2248 refs.c:2283
 #, c-format
-msgid "could not write eol to '%s'"
-msgstr "kunde inte skriva radslut till \"%s\""
+msgid "cannot process '%s' and '%s' at the same time"
+msgstr "kan inte hantera \"%s\" och \"%s\" samtidigt"
 
-#: sequencer.c:446 sequencer.c:2866 sequencer.c:3068 sequencer.c:3082
-#: sequencer.c:3345
+#: refs/files-backend.c:1228
 #, c-format
-msgid "failed to finalize '%s'"
-msgstr "misslyckades färdigställa \"%s\""
+msgid "could not remove reference %s"
+msgstr "kunde inte ta bort referensen %s"
 
-#: sequencer.c:485
+#: refs/files-backend.c:1242 refs/packed-backend.c:1542
+#: refs/packed-backend.c:1552
 #, c-format
-msgid "your local changes would be overwritten by %s."
-msgstr "dina lokala ändringar skulle skrivas över av %s."
-
-#: sequencer.c:489
-msgid "commit your changes or stash them to proceed."
-msgstr "checka in dina ändringar eller använd \"stash\" för att fortsätta."
+msgid "could not delete reference %s: %s"
+msgstr "kunde inte ta bort referensen %s: %s"
 
-#: sequencer.c:521
+#: refs/files-backend.c:1245 refs/packed-backend.c:1555
 #, c-format
-msgid "%s: fast-forward"
-msgstr "%s: snabbspola"
+msgid "could not delete references: %s"
+msgstr "kunde inte ta bort referenser: %s"
 
-#: sequencer.c:560 builtin/tag.c:566
+#: refspec.c:170
 #, c-format
-msgid "Invalid cleanup mode %s"
-msgstr "Felaktigt städningsläge %s"
+msgid "invalid refspec '%s'"
+msgstr "felaktig referensspecifikation: \"%s\""
 
-#. TRANSLATORS: %s will be "revert", "cherry-pick" or
-#. "rebase".
-#.
-#: sequencer.c:670
+#: remote.c:351
 #, c-format
-msgid "%s: Unable to write new index file"
-msgstr "%s: Kunde inte skriva ny indexfil"
+msgid "config remote shorthand cannot begin with '/': %s"
+msgstr "konfigurerad kortform för fjärr kan inte börja med \"/\": %s"
 
-#: sequencer.c:687
-msgid "unable to update cache tree"
-msgstr "kan inte uppdatera cacheträd"
+#: remote.c:399
+msgid "more than one receivepack given, using the first"
+msgstr "mer än en receivepack angavs, använder den första"
 
-#: sequencer.c:701
-msgid "could not resolve HEAD commit"
-msgstr "kunde inte bestämma HEAD:s incheckning"
+#: remote.c:407
+msgid "more than one uploadpack given, using the first"
+msgstr "mer än en uploadpack angavs, använder den första"
 
-#: sequencer.c:781
+#: remote.c:590
 #, c-format
-msgid "no key present in '%.*s'"
-msgstr "ingen nyckel i  \"%.*s\""
+msgid "Cannot fetch both %s and %s to %s"
+msgstr "Kan inte hämta både %s och %s till %s"
 
-#: sequencer.c:792
+#: remote.c:594
 #, c-format
-msgid "unable to dequote value of '%s'"
-msgstr "kan inte ta bort citering av värdet \"%s\""
+msgid "%s usually tracks %s, not %s"
+msgstr "%s spårar vanligtvis %s, inte %s"
 
-#: sequencer.c:829 wrapper.c:201 wrapper.c:371 builtin/am.c:710
-#: builtin/am.c:802 builtin/merge.c:1135 builtin/rebase.c:908
+#: remote.c:598
 #, c-format
-msgid "could not open '%s' for reading"
-msgstr "kunde inte öppna \"%s\" för läsning"
-
-#: sequencer.c:839
-msgid "'GIT_AUTHOR_NAME' already given"
-msgstr "\"GIT_AUTHOR_NAME\" har redan angivits"
-
-#: sequencer.c:844
-msgid "'GIT_AUTHOR_EMAIL' already given"
-msgstr "\"GIT_AUTHOR_EMAIL\" har redan angivits"
-
-#: sequencer.c:849
-msgid "'GIT_AUTHOR_DATE' already given"
-msgstr "\"GIT_AUTHOR_DATE\" har redan angivits"
+msgid "%s tracks both %s and %s"
+msgstr "%s spårar både %s och %s"
 
-#: sequencer.c:853
+#: remote.c:666
 #, c-format
-msgid "unknown variable '%s'"
-msgstr "okänd variabel \"%s\""
+msgid "key '%s' of pattern had no '*'"
+msgstr "nyckeln \"%s\" i mönstret innehåller ingen \"*\""
 
-#: sequencer.c:858
-msgid "missing 'GIT_AUTHOR_NAME'"
-msgstr "\"GIT_AUTHOR_NAME\" saknas"
+#: remote.c:676
+#, c-format
+msgid "value '%s' of pattern has no '*'"
+msgstr "värdet \"%s\" i mönstret innehåller ingen \"*\""
 
-#: sequencer.c:860
-msgid "missing 'GIT_AUTHOR_EMAIL'"
-msgstr "\"GIT_AUTHOR_EMAIL\" saknas"
+#: remote.c:1083
+#, c-format
+msgid "src refspec %s does not match any"
+msgstr "käll-referensspecifikationen %s motsvarar ingen"
 
-#: sequencer.c:862
-msgid "missing 'GIT_AUTHOR_DATE'"
-msgstr "\"GIT_AUTHOR_DATE\" saknas"
+#: remote.c:1088
+#, c-format
+msgid "src refspec %s matches more than one"
+msgstr "käll-referensspecifikationen %s motsvarar mer än en"
 
-#: sequencer.c:927
+#. TRANSLATORS: "matches '%s'%" is the <dst> part of "git push
+#. <remote> <src>:<dst>" push, and "being pushed ('%s')" is
+#. the <src>.
+#.
+#: remote.c:1103
 #, c-format
 msgid ""
-"you have staged changes in your working tree\n"
-"If these changes are meant to be squashed into the previous commit, run:\n"
-"\n"
-"  git commit --amend %s\n"
-"\n"
-"If they are meant to go into a new commit, run:\n"
-"\n"
-"  git commit %s\n"
+"The destination you provided is not a full refname (i.e.,\n"
+"starting with \"refs/\"). We tried to guess what you meant by:\n"
 "\n"
-"In both cases, once you're done, continue with:\n"
+"- Looking for a ref that matches '%s' on the remote side.\n"
+"- Checking if the <src> being pushed ('%s')\n"
+"  is a ref in \"refs/{heads,tags}/\". If so we add a corresponding\n"
+"  refs/{heads,tags}/ prefix on the remote side.\n"
 "\n"
-"  git rebase --continue\n"
+"Neither worked, so we gave up. You must fully qualify the ref."
 msgstr ""
-"du har köade ändringar i din arbetskatalog.\n"
-"Om ändringarna ska läggas in i föregående incheckning, kör:\n"
-"\n"
-"  git commit --amend %s\n"
-"\n"
-"Om de ska checkas in i en egen incheckning, kör:\n"
-"\n"
-"  git commit %s\n"
+"Målet du angav är inte ett komplett referensamn (dvs.,\n"
+"startar med \"refs/\"). Vi försökte gissa vad du menade genom att:\n"
 "\n"
-"Oavsett vilket, när du är färdig fortsätter du med:\n"
+"- Se efter en referens som motsvarar \"%s\" på fjärrsidan.\n"
+"- Se om <källan> som sänds (\"%s\")\n"
+"  är en referens i \"refs/{heads,tags}/\". Om så lägger vi till\n"
+"  motsvarande refs/{heads,tags}/-prefix på fjärrsidan.\n"
 "\n"
-"  git rebase --continue\n"
+"Inget av dem fungerade, så vi gav upp. Ange fullständig referens."
 
-#: sequencer.c:1208
-msgid "'prepare-commit-msg' hook failed"
-msgstr "kroken \"prepare-commit-msg\" misslyckades"
+#: remote.c:1123
+#, c-format
+msgid ""
+"The <src> part of the refspec is a commit object.\n"
+"Did you mean to create a new branch by pushing to\n"
+"'%s:refs/heads/%s'?"
+msgstr ""
+"<Källa>-delen av ref.spec-en är ett incheckningsobjekt.\n"
+"Var det meningen att skapa en ny gren genom att sända\n"
+"till \"%s:refs/heads/%s\"?"
 
-#: sequencer.c:1214
+#: remote.c:1128
+#, c-format
 msgid ""
-"Your name and email address were configured automatically based\n"
-"on your username and hostname. Please check that they are accurate.\n"
-"You can suppress this message by setting them explicitly. Run the\n"
-"following command and follow the instructions in your editor to edit\n"
-"your configuration file:\n"
-"\n"
-"    git config --global --edit\n"
-"\n"
-"After doing this, you may fix the identity used for this commit with:\n"
-"\n"
-"    git commit --amend --reset-author\n"
+"The <src> part of the refspec is a tag object.\n"
+"Did you mean to create a new tag by pushing to\n"
+"'%s:refs/tags/%s'?"
 msgstr ""
-"Ditt namn och e-postadress konfigurerades automatiskt baserat på\n"
-"ditt användar-id och värdnamn. Kontrollera att de är riktiga. Du\n"
-"kan förhindra det här meddelandet genom att ställa dem explicit.\n"
-"Kör följande kommandon och följ instruktionerna i textredigeraren\n"
-"för att redigera din konfigurationsfil:\n"
-"\n"
-"    git config --global --edit\n"
-"\n"
-"När du gjort det kan du rätta identiteten som användes för den här\n"
-"incheckningen med:\n"
-"\n"
-"    git commit --amend --reset-author\n"
+"<Källa>-delen av ref.spec-en är ett taggobjekt.\n"
+"Var det meningen att skapa en ny tagg genom att sända\n"
+"till \"%s:refs/tags/%s\"?"
 
-#: sequencer.c:1227
+#: remote.c:1133
+#, c-format
 msgid ""
-"Your name and email address were configured automatically based\n"
-"on your username and hostname. Please check that they are accurate.\n"
-"You can suppress this message by setting them explicitly:\n"
-"\n"
-"    git config --global user.name \"Your Name\"\n"
-"    git config --global user.email you@example.com\n"
-"\n"
-"After doing this, you may fix the identity used for this commit with:\n"
-"\n"
-"    git commit --amend --reset-author\n"
+"The <src> part of the refspec is a tree object.\n"
+"Did you mean to tag a new tree by pushing to\n"
+"'%s:refs/tags/%s'?"
 msgstr ""
-"Ditt namn och e-postadress konfigurerades automatiskt baserat på\n"
-"ditt användar-id och värdnamn. Kontrollera att de är riktiga. Du\n"
-"kan förhindra det här meddelandet genom att ställa dem explicit:\n"
-"\n"
-"    git config --global user.name \"Ditt namn\"\n"
-"    git config --global user.email du@example.com\n"
-"\n"
-"När du gjort det kan du rätta identiteten som användes för den här\n"
-"incheckningen med:\n"
-"\n"
-"    git commit --amend --reset-author\n"
+"<Källa>-delen av ref.spec-en är ett trädobjekt.\n"
+"Var det meningen att tagga ett nytt träd genom att sända\n"
+"till \"%s:refs/tags/%s\"?"
 
-#: sequencer.c:1269
-msgid "couldn't look up newly created commit"
-msgstr "kunde inte slå upp en precis skapad incheckning"
+#: remote.c:1138
+#, c-format
+msgid ""
+"The <src> part of the refspec is a blob object.\n"
+"Did you mean to tag a new blob by pushing to\n"
+"'%s:refs/tags/%s'?"
+msgstr ""
+"<Källa>-delen av ref.spec-en är ett blobobjekt.\n"
+"Var det meningen att tagga en ny blob genom att sända\n"
+"till \"%s:refs/tags/%s\"?"
 
-#: sequencer.c:1271
-msgid "could not parse newly created commit"
-msgstr "kunde inte tolka en precis skapad incheckning"
+#: remote.c:1174
+#, c-format
+msgid "%s cannot be resolved to branch"
+msgstr "%s kan inte slås upp till en gren"
 
-#: sequencer.c:1317
-msgid "unable to resolve HEAD after creating commit"
-msgstr "kunde inte bestämma HEAD efter att ha skapat incheckning"
+#: remote.c:1185
+#, c-format
+msgid "unable to delete '%s': remote ref does not exist"
+msgstr "kan inte ta bort \"%s\": fjärreferensen finns inte"
 
-#: sequencer.c:1319
-msgid "detached HEAD"
-msgstr "frånkopplad HEAD"
+#: remote.c:1197
+#, c-format
+msgid "dst refspec %s matches more than one"
+msgstr "fjärr-referensspecifikationen \"%s\" motsvarar mer än en"
 
-#: sequencer.c:1323
-msgid " (root-commit)"
-msgstr " (rotincheckning)"
+#: remote.c:1204
+#, c-format
+msgid "dst ref %s receives from more than one src"
+msgstr "fjärr-referensen \"%s\" hämtar från mer än en källa"
 
-#: sequencer.c:1344
-msgid "could not parse HEAD"
-msgstr "kunde inte tolka HEAD"
+#: remote.c:1724 remote.c:1825
+msgid "HEAD does not point to a branch"
+msgstr "HEAD pekar inte på en gren"
+
+#: remote.c:1733
+#, c-format
+msgid "no such branch: '%s'"
+msgstr "okänd gren: \"%s\""
+
+#: remote.c:1736
+#, c-format
+msgid "no upstream configured for branch '%s'"
+msgstr "ingen standarduppström angiven för grenen \"%s\""
+
+#: remote.c:1742
+#, 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:1757
+#, 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:1769
+#, c-format
+msgid "branch '%s' has no remote for pushing"
+msgstr "grenen \"%s\" har ingen fjärr för \"push\""
+
+#: remote.c:1779
+#, c-format
+msgid "push refspecs for '%s' do not include '%s'"
+msgstr "\"push\"-referensspecifikation för \"%s\" innehåller inte \"%s\""
+
+#: remote.c:1792
+msgid "push has no destination (push.default is 'nothing')"
+msgstr "\"push\" har inget mål (push.default är \"ingenting\")"
+
+#: remote.c:1814
+msgid "cannot resolve 'simple' push to a single destination"
+msgstr "\"enkel push\" motsvarar flera olika mål"
+
+#: remote.c:1943
+#, c-format
+msgid "couldn't find remote ref %s"
+msgstr "Kunde inte hitta fjärr-referensen %s"
+
+#: remote.c:1956
+#, c-format
+msgid "* Ignoring funny ref '%s' locally"
+msgstr "* Ignorerar märklig referens \"%s\" lokalt"
+
+#: remote.c:2119
+#, 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:2123
+msgid "  (use \"git branch --unset-upstream\" to fixup)\n"
+msgstr "  (använd \"git branch --unset-upstream\" för att rätta)\n"
+
+#: remote.c:2126
+#, c-format
+msgid "Your branch is up to date with '%s'.\n"
+msgstr "Din gren är à jour med \"%s\".\n"
+
+#: remote.c:2130
+#, c-format
+msgid "Your branch and '%s' refer to different commits.\n"
+msgstr "Din gren och \"%s\" pekar på olika incheckningar.\n"
+
+#: remote.c:2133
+#, c-format
+msgid "  (use \"%s\" for details)\n"
+msgstr "  (använd \"%s\" för detaljer)\n"
+
+#: remote.c:2137
+#, c-format
+msgid "Your branch is ahead of '%s' by %d commit.\n"
+msgid_plural "Your branch is ahead of '%s' by %d commits.\n"
+msgstr[0] "Din gren ligger före \"%s\" med %d incheckning.\n"
+msgstr[1] "Din gren ligger före \"%s\" med %d incheckningar.\n"
+
+#: remote.c:2143
+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:2146
+#, c-format
+msgid "Your branch is behind '%s' by %d commit, and can be fast-forwarded.\n"
+msgid_plural ""
+"Your branch is behind '%s' by %d commits, and can be fast-forwarded.\n"
+msgstr[0] ""
+"Din gren ligger efter \"%s\" med %d incheckning, och kan snabbspolas.\n"
+msgstr[1] ""
+"Din gren ligger efter \"%s\" med %d incheckningar, och kan snabbspolas.\n"
+
+#: remote.c:2154
+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:2157
+#, c-format
+msgid ""
+"Your branch and '%s' have diverged,\n"
+"and have %d and %d different commit each, respectively.\n"
+msgid_plural ""
+"Your branch and '%s' have diverged,\n"
+"and have %d and %d different commits each, respectively.\n"
+msgstr[0] ""
+"Din gren och \"%s\" har divergerat,\n"
+"och har %d respektive %d olika incheckning.\n"
+msgstr[1] ""
+"Din gren och \"%s\" har divergerat,\n"
+"och har %d respektive %d olika incheckningar.\n"
+
+#: remote.c:2167
+msgid "  (use \"git pull\" to merge the remote branch into yours)\n"
+msgstr "  (använd \"git pull\" för att slå ihop fjärrgrenen med din egen)\n"
+
+#: remote.c:2359
+#, c-format
+msgid "cannot parse expected object name '%s'"
+msgstr "kan inte tolka förväntat objektnamn \"%s\""
+
+#: replace-object.c:21
+#, c-format
+msgid "bad replace ref name: %s"
+msgstr "felaktig ersättningsreferensnamn: %s"
 
-#: sequencer.c:1346
+#: replace-object.c:30
 #, c-format
-msgid "HEAD %s is not a commit!"
-msgstr "HEAD %s är inte en incheckning!"
+msgid "duplicate replace ref: %s"
+msgstr "duplicerat ersättningsreferensnamn: %s"
 
-#: sequencer.c:1350 sequencer.c:1425 builtin/commit.c:1577
-msgid "could not parse HEAD commit"
-msgstr "kunde inte tolka HEAD:s incheckning"
+#: replace-object.c:82
+#, c-format
+msgid "replace depth too high for object %s"
+msgstr "ersättningsdjupet för högt för objektet %s"
 
-#: sequencer.c:1403 sequencer.c:2100
-msgid "unable to parse commit author"
-msgstr "kunde inte tolka incheckningens författare"
+#: rerere.c:201 rerere.c:210 rerere.c:213
+msgid "corrupt MERGE_RR"
+msgstr "trasig MERGE_RR"
 
-#: sequencer.c:1414 builtin/am.c:1566 builtin/merge.c:701
-msgid "git write-tree failed to write a tree"
-msgstr "git write-tree misslyckades skriva ett träd"
+#: rerere.c:248 rerere.c:253
+msgid "unable to write rerere record"
+msgstr "kunde inte skriva rerere-post"
 
-#: sequencer.c:1447 sequencer.c:1565
+#: rerere.c:479
 #, c-format
-msgid "unable to read commit message from '%s'"
-msgstr "kunde inte läsa incheckningsmeddelande från \"%s\""
+msgid "there were errors while writing '%s' (%s)"
+msgstr "fel vid skrivning av \"%s\" (%s)"
 
-#: sequencer.c:1476 sequencer.c:1508
+#: rerere.c:482
 #, c-format
-msgid "invalid author identity '%s'"
-msgstr "ogiltig författar-identitet \"%s\""
-
-#: sequencer.c:1482
-msgid "corrupt author: missing date information"
-msgstr "trasig författare: saknar datuminformation"
+msgid "failed to flush '%s'"
+msgstr "misslyckades spola \"%s\""
 
-#: sequencer.c:1521 builtin/am.c:1593 builtin/commit.c:1678 builtin/merge.c:904
-#: builtin/merge.c:929 t/helper/test-fast-rebase.c:78
-msgid "failed to write commit object"
-msgstr "kunde inte skriva incheckningsobjekt"
+#: rerere.c:487 rerere.c:1023
+#, c-format
+msgid "could not parse conflict hunks in '%s'"
+msgstr "kunde inte tolka konflikt-stycket i \"%s\""
 
-#: sequencer.c:1548 sequencer.c:4283 t/helper/test-fast-rebase.c:198
+#: rerere.c:668
 #, c-format
-msgid "could not update %s"
-msgstr "kunde inte uppdatera %s"
+msgid "failed utime() on '%s'"
+msgstr "\"utime()\" misslyckades på \"%s\""
 
-#: sequencer.c:1597
+#: rerere.c:678
 #, c-format
-msgid "could not parse commit %s"
-msgstr "kunde inte tolka incheckningen %s"
+msgid "writing '%s' failed"
+msgstr "misslyckades skriva \"%s\""
 
-#: sequencer.c:1602
+#: rerere.c:698
 #, c-format
-msgid "could not parse parent commit %s"
-msgstr "kunde inte tolka föräldraincheckningen %s"
+msgid "Staged '%s' using previous resolution."
+msgstr "Köade \"%s\" med sparad lösning."
 
-#: sequencer.c:1685 sequencer.c:1796
+#: rerere.c:737
 #, c-format
-msgid "unknown command: %d"
-msgstr "okänt kommando: %d"
+msgid "Recorded resolution for '%s'."
+msgstr "Sparade lösning för \"%s\"."
 
-#: sequencer.c:1743 sequencer.c:1768
+#: rerere.c:772
 #, c-format
-msgid "This is a combination of %d commits."
-msgstr "Det här är en kombination av %d incheckningar."
+msgid "Resolved '%s' using previous resolution."
+msgstr "Löste \"%s\" med tidigare lösning."
 
-#: sequencer.c:1753
-msgid "need a HEAD to fixup"
-msgstr "behöver en HEAD-incheckning att rätta"
+#: rerere.c:787
+#, c-format
+msgid "cannot unlink stray '%s'"
+msgstr "kan inte ta bort lös länk \"%s\""
 
-#: sequencer.c:1755 sequencer.c:3372
-msgid "could not read HEAD"
-msgstr "kunde inte läsa HEAD"
+#: rerere.c:791
+#, c-format
+msgid "Recorded preimage for '%s'"
+msgstr "Sparade förhandsbild för \"%s\""
 
-#: sequencer.c:1757
-msgid "could not read HEAD's commit message"
-msgstr "kunde inte läsa HEAD:s incheckningsmeddelande"
+#: rerere.c:865 submodule.c:2088 builtin/log.c:1991
+#: builtin/submodule--helper.c:1878 builtin/submodule--helper.c:1890
+#, c-format
+msgid "could not create directory '%s'"
+msgstr "kunde inte skapa katalogen \"%s\""
 
-#: sequencer.c:1763
+#: rerere.c:1041
 #, c-format
-msgid "cannot write '%s'"
-msgstr "kan inte skriva \"%s\""
+msgid "failed to update conflicted state in '%s'"
+msgstr "misslyckades uppdatera tillstånd för sammanslagningsproblem i \"%s\""
 
-#: sequencer.c:1770 git-rebase--preserve-merges.sh:486
-msgid "This is the 1st commit message:"
-msgstr "Det här är 1:a incheckningsmeddelandet:"
+#: rerere.c:1052 rerere.c:1059
+#, c-format
+msgid "no remembered resolution for '%s'"
+msgstr "inget sparat sammanslagningsresultat för \"%s\""
 
-#: sequencer.c:1778
+#: rerere.c:1061
 #, c-format
-msgid "could not read commit message of %s"
-msgstr "kunde inte läsa incheckningsmeddelande för %s"
+msgid "cannot unlink '%s'"
+msgstr "kan inte ta bort länken \"%s\""
 
-#: sequencer.c:1785
+#: rerere.c:1071
 #, c-format
-msgid "This is the commit message #%d:"
-msgstr "Det här är incheckningsmeddelande %d:"
+msgid "Updated preimage for '%s'"
+msgstr "Uppdaterade förhandsbild för \"%s\""
 
-#: sequencer.c:1791
+#: rerere.c:1080
 #, c-format
-msgid "The commit message #%d will be skipped:"
-msgstr "Incheckningsmeddelande %d kommer hoppas över:"
+msgid "Forgot resolution for '%s'\n"
+msgstr "Glömde lösning för \"%s\"\n"
 
-#: sequencer.c:1879
-msgid "your index file is unmerged."
-msgstr "din indexfil har inte slagits ihop."
+#: rerere.c:1191
+msgid "unable to open rr-cache directory"
+msgstr "kan inte uppdatera katalogen rr-cache"
 
-#: sequencer.c:1886
-msgid "cannot fixup root commit"
-msgstr "kan inte göra \"fixup\" på rotincheckning"
+#: reset.c:42
+msgid "could not determine HEAD revision"
+msgstr "kunde inte bestämma HEAD-revision"
 
-#: sequencer.c:1905
+#: reset.c:70 reset.c:76 sequencer.c:3468
 #, 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."
+msgid "failed to find tree of %s"
+msgstr "kunde inte hitta trädet för %s."
 
-#: sequencer.c:1913 sequencer.c:1921
-#, c-format
-msgid "commit %s does not have parent %d"
-msgstr "incheckning %s har inte förälder %d"
+#: revision.c:2338
+msgid "--unpacked=<packfile> no longer supported"
+msgstr "--unpacked=<paketfil> stöds inte längre"
 
-#: sequencer.c:1927
-#, c-format
-msgid "cannot get commit message for %s"
-msgstr "kan inte hämta incheckningsmeddelande för %s"
+#: revision.c:2668
+msgid "your current branch appears to be broken"
+msgstr "din nuvarande gren verkar vara trasig"
 
-#. TRANSLATORS: The first %s will be a "todo" command like
-#. "revert" or "pick", the second %s a SHA1.
-#: sequencer.c:1946
+#: revision.c:2671
 #, c-format
-msgid "%s: cannot parse parent commit %s"
-msgstr "%s: kan inte tolka föräldraincheckningen %s"
+msgid "your current branch '%s' does not have any commits yet"
+msgstr "din nuvarande gren \"%s\" innehåller ännu inte några incheckningar"
 
-#: sequencer.c:2011
-#, c-format
-msgid "could not rename '%s' to '%s'"
-msgstr "kunde inte byta namn på \"%s\" till \"%s\""
+#: revision.c:2877
+msgid "-L does not yet support diff formats besides -p and -s"
+msgstr "-L stöder ännu inte andra diff-format än -p och -s"
 
-#: sequencer.c:2071
-#, c-format
-msgid "could not revert %s... %s"
-msgstr "kunde inte ångra %s... %s"
+#: run-command.c:767
+msgid "open /dev/null failed"
+msgstr "misslyckades öppna /dev/null"
 
-#: sequencer.c:2072
+#: run-command.c:1274
 #, c-format
-msgid "could not apply %s... %s"
-msgstr "kunde inte tillämpa %s... %s"
+msgid "cannot create async thread: %s"
+msgstr "kan inte skapa asynkron tråd: %s"
 
-#: sequencer.c:2092
+#: run-command.c:1338
 #, c-format
-msgid "dropping %s %s -- patch contents already upstream\n"
-msgstr "utelämnar %s %s -- patchinnehållet finns redan uppströms\n"
+msgid ""
+"The '%s' hook was ignored because it's not set as executable.\n"
+"You can disable this warning with `git config advice.ignoredHook false`."
+msgstr ""
+"Kroken \"%s\" ignorerades eftersom den inte är markerad som körbar.\n"
+"Du kan inaktivera varningen med \"git config advice.ignoredHook false\"."
 
-#: sequencer.c:2150
-#, c-format
-msgid "git %s: failed to read the index"
-msgstr "git %s: misslyckades läsa indexet"
+#: send-pack.c:146
+msgid "unexpected flush packet while reading remote unpack status"
+msgstr "oväntat flush-paket vid läsning av fjärruppackningsstatus"
 
-#: sequencer.c:2157
+#: send-pack.c:148
 #, c-format
-msgid "git %s: failed to refresh the index"
-msgstr "git %s: misslyckades uppdatera indexet"
+msgid "unable to parse remote unpack status: %s"
+msgstr "kunde inte tolka fjärruppackningsstatus: %s"
 
-#: sequencer.c:2234
+#: send-pack.c:150
 #, c-format
-msgid "%s does not accept arguments: '%s'"
-msgstr "%s tar inte argument: \"%s\""
+msgid "remote unpack failed: %s"
+msgstr "fjärruppackning misslyckades: %s"
 
-#: sequencer.c:2243
-#, c-format
-msgid "missing arguments for %s"
-msgstr "argument saknas för %s"
+#: send-pack.c:374
+msgid "failed to sign the push certificate"
+msgstr "misslyckades underteckna push-certifikatet"
 
-#: sequencer.c:2274
-#, c-format
-msgid "could not parse '%s'"
-msgstr "kunde inte tolka \"%s\""
+#: send-pack.c:467
+msgid "the receiving end does not support this repository's hash algorithm"
+msgstr "mottagarsidan stöder inte arkivets hashningsalgoritm"
 
-#: sequencer.c:2335
-#, c-format
-msgid "invalid line %d: %.*s"
-msgstr "ogiltig rad %d: %.*s"
+#: send-pack.c:476
+msgid "the receiving end does not support --signed push"
+msgstr "mottagarsidan stöder inte push med --signed"
 
-#: sequencer.c:2346
-#, c-format
-msgid "cannot '%s' without a previous commit"
-msgstr "kan inte utföra \"%s\" utan en föregående incheckning"
+#: send-pack.c:478
+msgid ""
+"not sending a push certificate since the receiving end does not support --"
+"signed push"
+msgstr ""
+"sänder inte push-certifikat eftersom mottagarsidan inte stlder push med --"
+"signed"
 
-#: sequencer.c:2432
-msgid "cancelling a cherry picking in progress"
-msgstr "avbryter pågående \"cherry-pick\""
+#: send-pack.c:490
+msgid "the receiving end does not support --atomic push"
+msgstr "mottagarsidan stöder inte push med --atomic"
 
-#: sequencer.c:2441
-msgid "cancelling a revert in progress"
-msgstr "avbryter pågående \"revert\""
+#: send-pack.c:495
+msgid "the receiving end does not support push options"
+msgstr "mottagarsidan stöder inte push-flaggor"
 
-#: sequencer.c:2485
-msgid "please fix this using 'git rebase --edit-todo'."
-msgstr "rätta det med \"git rebase --edit-todo\"."
+#: sequencer.c:195
+#, c-format
+msgid "invalid commit message cleanup mode '%s'"
+msgstr "felaktigt incheckningsmeddelandestädningsläge \"%s\""
 
-#: sequencer.c:2487
+#: sequencer.c:323
 #, c-format
-msgid "unusable instruction sheet: '%s'"
-msgstr "oanvändbart manus: \"%s\""
+msgid "could not delete '%s'"
+msgstr "kunde inte ta bort \"%s\""
 
-#: sequencer.c:2492
-msgid "no commits parsed."
-msgstr "inga incheckningar lästes."
+#: sequencer.c:343 builtin/rebase.c:757 builtin/rebase.c:1602 builtin/rm.c:385
+#, c-format
+msgid "could not remove '%s'"
+msgstr "kunde inte ta bort \"%s\""
 
-#: sequencer.c:2503
-msgid "cannot cherry-pick during a revert."
-msgstr "kan inte utföra \"cherry-pick\" under en \"revert\"."
+#: sequencer.c:353
+msgid "revert"
+msgstr "revert"
 
-#: sequencer.c:2505
-msgid "cannot revert during a cherry-pick."
-msgstr "kan inte utföra \"revert\" under en \"cherry-pick\"."
+#: sequencer.c:355
+msgid "cherry-pick"
+msgstr "cherry-pick"
+
+#: sequencer.c:357
+msgid "rebase"
+msgstr "rebase"
 
-#: sequencer.c:2583
+#: sequencer.c:359
 #, c-format
-msgid "invalid value for %s: %s"
-msgstr "felaktigt värde för %s: %s"
+msgid "unknown action: %d"
+msgstr "okänd funktion: %d"
 
-#: sequencer.c:2690
-msgid "unusable squash-onto"
-msgstr "oanvändbar squash-onto"
+#: sequencer.c:418
+msgid ""
+"after resolving the conflicts, mark the corrected paths\n"
+"with 'git add <paths>' or 'git rm <paths>'"
+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:421
+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 ""
+"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>\"\n"
+"och checka in resultatet med \"git commit\""
+
+#: sequencer.c:434 sequencer.c:3070
+#, c-format
+msgid "could not lock '%s'"
+msgstr "kunde inte låsa \"%s\""
 
-#: sequencer.c:2710
+#: sequencer.c:436 sequencer.c:2869 sequencer.c:3074 sequencer.c:3088
+#: sequencer.c:3345 sequencer.c:5334 strbuf.c:1168 wrapper.c:631
 #, c-format
-msgid "malformed options sheet: '%s'"
-msgstr "trasigt manus: \"%s\""
+msgid "could not write to '%s'"
+msgstr "kunde inte skriva till \"%s\""
 
-#: sequencer.c:2803 sequencer.c:4636
-msgid "empty commit set passed"
-msgstr "den angivna uppsättningen incheckningar är tom"
+#: sequencer.c:441
+#, c-format
+msgid "could not write eol to '%s'"
+msgstr "kunde inte skriva radslut till \"%s\""
 
-#: sequencer.c:2820
-msgid "revert is already in progress"
-msgstr "en \"revert\" pågår redan"
+#: sequencer.c:446 sequencer.c:2874 sequencer.c:3076 sequencer.c:3090
+#: sequencer.c:3353
+#, c-format
+msgid "failed to finalize '%s'"
+msgstr "misslyckades färdigställa \"%s\""
 
-#: sequencer.c:2822
+#: sequencer.c:485
 #, c-format
-msgid "try \"git revert (--continue | %s--abort | --quit)\""
-msgstr "testa \"git revert (--continue | %s--abort | --quit)\""
+msgid "your local changes would be overwritten by %s."
+msgstr "dina lokala ändringar skulle skrivas över av %s."
 
-#: sequencer.c:2825
-msgid "cherry-pick is already in progress"
-msgstr "en \"cherry-pick\" pågår redan"
+#: sequencer.c:489
+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:2827
+#: sequencer.c:521
 #, c-format
-msgid "try \"git cherry-pick (--continue | %s--abort | --quit)\""
-msgstr "testa \"git cherry-pick (--continue | %s--abort | --quit)\""
+msgid "%s: fast-forward"
+msgstr "%s: snabbspola"
 
-#: sequencer.c:2841
+#: sequencer.c:560 builtin/tag.c:598
 #, c-format
-msgid "could not create sequencer directory '%s'"
-msgstr "kunde inte skapa \"sequencer\"-katalogen \"%s\""
-
-#: sequencer.c:2856
-msgid "could not lock HEAD"
-msgstr "kunde inte låsa HEAD"
+msgid "Invalid cleanup mode %s"
+msgstr "Felaktigt städningsläge %s"
 
-#: sequencer.c:2916 sequencer.c:4371
-msgid "no cherry-pick or revert in progress"
-msgstr "ingen \"cherry-pick\" eller \"revert\" pågår"
+#. TRANSLATORS: %s will be "revert", "cherry-pick" or
+#. "rebase".
+#.
+#: sequencer.c:670
+#, c-format
+msgid "%s: Unable to write new index file"
+msgstr "%s: Kunde inte skriva ny indexfil"
 
-#: sequencer.c:2918 sequencer.c:2929
-msgid "cannot resolve HEAD"
-msgstr "kan inte bestämma HEAD"
+#: sequencer.c:684
+msgid "unable to update cache tree"
+msgstr "kan inte uppdatera cacheträd"
 
-#: sequencer.c:2920 sequencer.c:2964
-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:698
+msgid "could not resolve HEAD commit"
+msgstr "kunde inte bestämma HEAD:s incheckning"
 
-#: sequencer.c:2950 builtin/grep.c:756
+#: sequencer.c:778
 #, c-format
-msgid "cannot open '%s'"
-msgstr "kan inte öppna \"%s\""
+msgid "no key present in '%.*s'"
+msgstr "ingen nyckel i  \"%.*s\""
 
-#: sequencer.c:2952
+#: sequencer.c:789
 #, c-format
-msgid "cannot read '%s': %s"
-msgstr "kan inte läsa \"%s\": %s"
-
-#: sequencer.c:2953
-msgid "unexpected end of file"
-msgstr "oväntat filslut"
+msgid "unable to dequote value of '%s'"
+msgstr "kan inte ta bort citering av värdet \"%s\""
 
-#: sequencer.c:2959
+#: sequencer.c:826 wrapper.c:201 wrapper.c:371 builtin/am.c:710
+#: builtin/am.c:802 builtin/merge.c:1136 builtin/rebase.c:910
 #, 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:2970
-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:3011
-msgid "no revert in progress"
-msgstr "ingen \"revers\" pågår"
+msgid "could not open '%s' for reading"
+msgstr "kunde inte öppna \"%s\" för läsning"
 
-#: sequencer.c:3020
-msgid "no cherry-pick in progress"
-msgstr "ingen \"cherry-pick\" pågår"
+#: sequencer.c:836
+msgid "'GIT_AUTHOR_NAME' already given"
+msgstr "\"GIT_AUTHOR_NAME\" har redan angivits"
 
-#: sequencer.c:3030
-msgid "failed to skip the commit"
-msgstr "kunde inte hoppa över incheckningen"
+#: sequencer.c:841
+msgid "'GIT_AUTHOR_EMAIL' already given"
+msgstr "\"GIT_AUTHOR_EMAIL\" har redan angivits"
 
-#: sequencer.c:3037
-msgid "there is nothing to skip"
-msgstr "ingenting att hoppa över"
+#: sequencer.c:846
+msgid "'GIT_AUTHOR_DATE' already given"
+msgstr "\"GIT_AUTHOR_DATE\" har redan angivits"
 
-#: sequencer.c:3040
+#: sequencer.c:850
 #, c-format
-msgid ""
-"have you committed already?\n"
-"try \"git %s --continue\""
-msgstr ""
-"har du redan checkat in?\n"
-"testa \"git %s --continue\""
+msgid "unknown variable '%s'"
+msgstr "okänd variabel \"%s\""
 
-#: sequencer.c:3202 sequencer.c:4263
-msgid "cannot read HEAD"
-msgstr "kan inte läsa HEAD"
+#: sequencer.c:855
+msgid "missing 'GIT_AUTHOR_NAME'"
+msgstr "\"GIT_AUTHOR_NAME\" saknas"
 
-#: sequencer.c:3219
-#, c-format
-msgid "unable to copy '%s' to '%s'"
-msgstr "kan inte kopiera in \"%s\" till \"%s\""
+#: sequencer.c:857
+msgid "missing 'GIT_AUTHOR_EMAIL'"
+msgstr "\"GIT_AUTHOR_EMAIL\" saknas"
 
-#: sequencer.c:3227
+#: sequencer.c:859
+msgid "missing 'GIT_AUTHOR_DATE'"
+msgstr "\"GIT_AUTHOR_DATE\" saknas"
+
+#: sequencer.c:924
 #, c-format
 msgid ""
-"You can amend the commit now, with\n"
+"you have staged changes in your working tree\n"
+"If these changes are meant to be squashed into the previous commit, run:\n"
 "\n"
 "  git commit --amend %s\n"
 "\n"
-"Once you are satisfied with your changes, run\n"
+"If they are meant to go into a new commit, run:\n"
+"\n"
+"  git commit %s\n"
+"\n"
+"In both cases, once you're done, continue with:\n"
 "\n"
 "  git rebase --continue\n"
 msgstr ""
-"Du kan utöka incheckningen nu, med\n"
+"du har köade ändringar i din arbetskatalog.\n"
+"Om ändringarna ska läggas in i föregående incheckning, kör:\n"
 "\n"
-"\tgit commit --amend %s\n"
+"  git commit --amend %s\n"
 "\n"
-"När du är nöjd med dina ändringar kör du\n"
+"Om de ska checkas in i en egen incheckning, kör:\n"
 "\n"
-"\tgit rebase --continue\n"
-
-#: sequencer.c:3237
-#, c-format
-msgid "Could not apply %s... %.*s"
-msgstr "Kunde inte tillämpa %s... %.*s"
-
-#: sequencer.c:3244
-#, c-format
-msgid "Could not merge %.*s"
-msgstr "Kunde inte slå ihop %.*s"
-
-#: sequencer.c:3258 sequencer.c:3262 builtin/difftool.c:640
-#, c-format
-msgid "could not copy '%s' to '%s'"
-msgstr "kunde inte kopiera in \"%s\" till \"%s\""
+"  git commit %s\n"
+"\n"
+"Oavsett vilket, när du är färdig fortsätter du med:\n"
+"\n"
+"  git rebase --continue\n"
 
-#: sequencer.c:3274
-#, c-format
-msgid "Executing: %s\n"
-msgstr "Kör: %s\n"
+#: sequencer.c:1211
+msgid "'prepare-commit-msg' hook failed"
+msgstr "kroken \"prepare-commit-msg\" misslyckades"
 
-#: sequencer.c:3289
-#, c-format
+#: sequencer.c:1217
 msgid ""
-"execution failed: %s\n"
-"%sYou can fix the problem, and then run\n"
+"Your name and email address were configured automatically based\n"
+"on your username and hostname. Please check that they are accurate.\n"
+"You can suppress this message by setting them explicitly. Run the\n"
+"following command and follow the instructions in your editor to edit\n"
+"your configuration file:\n"
 "\n"
-"  git rebase --continue\n"
+"    git config --global --edit\n"
+"\n"
+"After doing this, you may fix the identity used for this commit with:\n"
 "\n"
+"    git commit --amend --reset-author\n"
 msgstr ""
-"körningen misslyckades: %s\n"
-"%sDu kan rätta problemet och sedan köra\n"
+"Ditt namn och e-postadress konfigurerades automatiskt baserat på\n"
+"ditt användar-id och värdnamn. Kontrollera att de är riktiga. Du\n"
+"kan förhindra det här meddelandet genom att ställa dem explicit.\n"
+"Kör följande kommandon och följ instruktionerna i textredigeraren\n"
+"för att redigera din konfigurationsfil:\n"
 "\n"
-"\tgit rebase --continue\n"
+"    git config --global --edit\n"
 "\n"
+"När du gjort det kan du rätta identiteten som användes för den här\n"
+"incheckningen med:\n"
+"\n"
+"    git commit --amend --reset-author\n"
 
-#: sequencer.c:3295
-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:3301
-#, c-format
+#: sequencer.c:1230
 msgid ""
-"execution succeeded: %s\n"
-"but left changes to the index and/or the working tree\n"
-"Commit or stash your changes, and then run\n"
+"Your name and email address were configured automatically based\n"
+"on your username and hostname. Please check that they are accurate.\n"
+"You can suppress this message by setting them explicitly:\n"
 "\n"
-"  git rebase --continue\n"
+"    git config --global user.name \"Your Name\"\n"
+"    git config --global user.email you@example.com\n"
+"\n"
+"After doing this, you may fix the identity used for this commit with:\n"
 "\n"
+"    git commit --amend --reset-author\n"
 msgstr ""
-"körningen lyckades: %s\n"
-"men lämnade kvar ändringar i indexet och/eller arbetskatalogen\n"
-"Checka in eller utför \"stash\" på ändringarna och kör sedan\n"
+"Ditt namn och e-postadress konfigurerades automatiskt baserat på\n"
+"ditt användar-id och värdnamn. Kontrollera att de är riktiga. Du\n"
+"kan förhindra det här meddelandet genom att ställa dem explicit:\n"
 "\n"
-"\tgit rebase --continue\n"
+"    git config --global user.name \"Ditt namn\"\n"
+"    git config --global user.email du@example.com\n"
+"\n"
+"När du gjort det kan du rätta identiteten som användes för den här\n"
+"incheckningen med:\n"
 "\n"
+"    git commit --amend --reset-author\n"
 
-#: sequencer.c:3362
-#, c-format
-msgid "illegal label name: '%.*s'"
-msgstr "ogiltigt etikettnamn: \"%.*s\""
+#: sequencer.c:1272
+msgid "couldn't look up newly created commit"
+msgstr "kunde inte slå upp en precis skapad incheckning"
 
-#: sequencer.c:3416
-msgid "writing fake root commit"
-msgstr "skriver fejkad rotincheckning"
+#: sequencer.c:1274
+msgid "could not parse newly created commit"
+msgstr "kunde inte tolka en precis skapad incheckning"
 
-#: sequencer.c:3421
-msgid "writing squash-onto"
-msgstr "skriver squash-onto"
+#: sequencer.c:1320
+msgid "unable to resolve HEAD after creating commit"
+msgstr "kunde inte bestämma HEAD efter att ha skapat incheckning"
+
+#: sequencer.c:1322
+msgid "detached HEAD"
+msgstr "frånkopplad HEAD"
+
+#: sequencer.c:1326
+msgid " (root-commit)"
+msgstr " (rotincheckning)"
+
+#: sequencer.c:1347
+msgid "could not parse HEAD"
+msgstr "kunde inte tolka HEAD"
 
-#: sequencer.c:3505
+#: sequencer.c:1349
 #, c-format
-msgid "could not resolve '%s'"
-msgstr "kunde inte upplösa \"%s\""
+msgid "HEAD %s is not a commit!"
+msgstr "HEAD %s är inte en incheckning!"
 
-#: sequencer.c:3538
-msgid "cannot merge without a current revision"
-msgstr "kan inte slå ihop utan en aktuell incheckning"
+#: sequencer.c:1353 sequencer.c:1431 builtin/commit.c:1577
+msgid "could not parse HEAD commit"
+msgstr "kunde inte tolka HEAD:s incheckning"
+
+#: sequencer.c:1409 sequencer.c:2108
+msgid "unable to parse commit author"
+msgstr "kunde inte tolka incheckningens författare"
 
-#: sequencer.c:3560
+#: sequencer.c:1420 builtin/am.c:1566 builtin/merge.c:702
+msgid "git write-tree failed to write a tree"
+msgstr "git write-tree misslyckades skriva ett träd"
+
+#: sequencer.c:1453 sequencer.c:1573
 #, c-format
-msgid "unable to parse '%.*s'"
-msgstr "kan inte tolka \"%.*s\""
+msgid "unable to read commit message from '%s'"
+msgstr "kunde inte läsa incheckningsmeddelande från \"%s\""
+
+#: sequencer.c:1484 sequencer.c:1516
+#, c-format
+msgid "invalid author identity '%s'"
+msgstr "ogiltig författar-identitet \"%s\""
+
+#: sequencer.c:1490
+msgid "corrupt author: missing date information"
+msgstr "trasig författare: saknar datuminformation"
+
+#: sequencer.c:1529 builtin/am.c:1593 builtin/commit.c:1678 builtin/merge.c:905
+#: builtin/merge.c:930 t/helper/test-fast-rebase.c:78
+msgid "failed to write commit object"
+msgstr "kunde inte skriva incheckningsobjekt"
 
-#: sequencer.c:3569
+#: sequencer.c:1556 sequencer.c:4291 t/helper/test-fast-rebase.c:198
 #, c-format
-msgid "nothing to merge: '%.*s'"
-msgstr "inget att slå samman: \"%.*s\""
+msgid "could not update %s"
+msgstr "kunde inte uppdatera %s"
 
-#: sequencer.c:3581
-msgid "octopus merge cannot be executed on top of a [new root]"
-msgstr "\"octopus\"-sammanslagning kan inte köras ovanpå en [ny rot]"
+#: sequencer.c:1605
+#, c-format
+msgid "could not parse commit %s"
+msgstr "kunde inte tolka incheckningen %s"
 
-#: sequencer.c:3597
+#: sequencer.c:1610
 #, c-format
-msgid "could not get commit message of '%s'"
-msgstr "kunde inte läsa incheckningsmeddelande för \"%s\""
+msgid "could not parse parent commit %s"
+msgstr "kunde inte tolka föräldraincheckningen %s"
 
-#: sequencer.c:3780
+#: sequencer.c:1693 sequencer.c:1804
 #, c-format
-msgid "could not even attempt to merge '%.*s'"
-msgstr "kunde inte ens försöka slå ihop \"%.*s\""
+msgid "unknown command: %d"
+msgstr "okänt kommando: %d"
 
-#: sequencer.c:3796
-msgid "merge: Unable to write new index file"
-msgstr "sammanslagning: Kunde inte skriva ny indexfil"
+#: sequencer.c:1751 sequencer.c:1776
+#, c-format
+msgid "This is a combination of %d commits."
+msgstr "Det här är en kombination av %d incheckningar."
 
-#: sequencer.c:3870
-msgid "Cannot autostash"
-msgstr "Kan inte utföra \"autostash\""
+#: sequencer.c:1761
+msgid "need a HEAD to fixup"
+msgstr "behöver en HEAD-incheckning att rätta"
 
-#: sequencer.c:3873
-#, c-format
-msgid "Unexpected stash response: '%s'"
-msgstr "Oväntat svar från stash: \"%s\""
+#: sequencer.c:1763 sequencer.c:3380
+msgid "could not read HEAD"
+msgstr "kunde inte läsa HEAD"
 
-#: sequencer.c:3879
-#, c-format
-msgid "Could not create directory for '%s'"
-msgstr "Kunde inte skapa katalog för \"%s\""
+#: sequencer.c:1765
+msgid "could not read HEAD's commit message"
+msgstr "kunde inte läsa HEAD:s incheckningsmeddelande"
 
-#: sequencer.c:3882
+#: sequencer.c:1771
 #, c-format
-msgid "Created autostash: %s\n"
-msgstr "Skapade autostash: %s\n"
+msgid "cannot write '%s'"
+msgstr "kan inte skriva \"%s\""
 
-#: sequencer.c:3886
-msgid "could not reset --hard"
-msgstr "kunde inte utföra \"reset --hard\""
+#: sequencer.c:1778 git-rebase--preserve-merges.sh:486
+msgid "This is the 1st commit message:"
+msgstr "Det här är 1:a incheckningsmeddelandet:"
 
-#: sequencer.c:3911
+#: sequencer.c:1786
 #, c-format
-msgid "Applied autostash.\n"
-msgstr "Tillämpade autostash.\n"
+msgid "could not read commit message of %s"
+msgstr "kunde inte läsa incheckningsmeddelande för %s"
 
-#: sequencer.c:3923
+#: sequencer.c:1793
 #, c-format
-msgid "cannot store %s"
-msgstr "kan inte spara %s"
+msgid "This is the commit message #%d:"
+msgstr "Det här är incheckningsmeddelande %d:"
 
-#: sequencer.c:3926
+#: sequencer.c:1799
 #, c-format
-msgid ""
-"%s\n"
-"Your changes are safe in the stash.\n"
-"You can run \"git stash pop\" or \"git stash drop\" at any time.\n"
-msgstr ""
-"%s\n"
-"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:3931
-msgid "Applying autostash resulted in conflicts."
-msgstr "Tillämpning av autostash gav konflikter."
+msgid "The commit message #%d will be skipped:"
+msgstr "Incheckningsmeddelande %d kommer hoppas över:"
 
-#: sequencer.c:3932
-msgid "Autostash exists; creating a new stash entry."
-msgstr "Autostash finns; skapar ny stash-post."
+#: sequencer.c:1887
+msgid "your index file is unmerged."
+msgstr "din indexfil har inte slagits ihop."
 
-#: sequencer.c:4025 git-rebase--preserve-merges.sh:769
-msgid "could not detach HEAD"
-msgstr "kunde inte koppla från HEAD"
+#: sequencer.c:1894
+msgid "cannot fixup root commit"
+msgstr "kan inte göra \"fixup\" på rotincheckning"
 
-#: sequencer.c:4040
+#: sequencer.c:1913
 #, c-format
-msgid "Stopped at HEAD\n"
-msgstr "Stoppade på HEAD\n"
+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:4042
+#: sequencer.c:1921 sequencer.c:1929
 #, c-format
-msgid "Stopped at %s\n"
-msgstr "Stoppade på %s\n"
+msgid "commit %s does not have parent %d"
+msgstr "incheckning %s har inte förälder %d"
 
-#: sequencer.c:4050
+#: sequencer.c:1935
 #, 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"
+msgid "cannot get commit message for %s"
+msgstr "kan inte hämta incheckningsmeddelande för %s"
 
-#: sequencer.c:4096
+#. TRANSLATORS: The first %s will be a "todo" command like
+#. "revert" or "pick", the second %s a SHA1.
+#: sequencer.c:1954
 #, c-format
-msgid "Rebasing (%d/%d)%s"
-msgstr "Ombaserar (%d/%d)%s"
+msgid "%s: cannot parse parent commit %s"
+msgstr "%s: kan inte tolka föräldraincheckningen %s"
 
-#: sequencer.c:4141
+#: sequencer.c:2019
 #, c-format
-msgid "Stopped at %s...  %.*s\n"
-msgstr "Stoppade på %s... %.*s\n"
+msgid "could not rename '%s' to '%s'"
+msgstr "kunde inte byta namn på \"%s\" till \"%s\""
 
-#: sequencer.c:4212
+#: sequencer.c:2079
 #, c-format
-msgid "unknown command %d"
-msgstr "okänt kommando %d"
-
-#: sequencer.c:4271
-msgid "could not read orig-head"
-msgstr "kunde inte läsa orig-head"
-
-#: sequencer.c:4276
-msgid "could not read 'onto'"
-msgstr "kunde inte läsa \"onto\""
+msgid "could not revert %s... %s"
+msgstr "kunde inte ångra %s... %s"
 
-#: sequencer.c:4290
+#: sequencer.c:2080
 #, c-format
-msgid "could not update HEAD to %s"
-msgstr "kunde inte uppdatera HEAD till %s"
+msgid "could not apply %s... %s"
+msgstr "kunde inte tillämpa %s... %s"
 
-#: sequencer.c:4350
+#: sequencer.c:2100
 #, c-format
-msgid "Successfully rebased and updated %s.\n"
-msgstr "Lyckades ombasera och uppdatera %s.\n"
-
-#: sequencer.c:4383
-msgid "cannot rebase: You have unstaged changes."
-msgstr "kan inte ombasera: Du har oköade ändringar."
-
-#: sequencer.c:4392
-msgid "cannot amend non-existing commit"
-msgstr "kan inte lägga till incheckning som inte finns"
+msgid "dropping %s %s -- patch contents already upstream\n"
+msgstr "utelämnar %s %s -- patchinnehållet finns redan uppströms\n"
 
-#: sequencer.c:4394
+#: sequencer.c:2158
 #, c-format
-msgid "invalid file: '%s'"
-msgstr "ogiltig fil: \"%s\""
+msgid "git %s: failed to read the index"
+msgstr "git %s: misslyckades läsa indexet"
 
-#: sequencer.c:4396
+#: sequencer.c:2165
 #, c-format
-msgid "invalid contents: '%s'"
-msgstr "ogiltigt innehåll: \"%s\""
-
-#: sequencer.c:4399
-msgid ""
-"\n"
-"You have uncommitted changes in your working tree. Please, commit them\n"
-"first and then run 'git rebase --continue' again."
-msgstr ""
-"\n"
-"Du har ändringar i arbetskatalogen som inte checkats in. Checka in dem\n"
-"först och kör sedan \"git rebase --continue\" igen."
+msgid "git %s: failed to refresh the index"
+msgstr "git %s: misslyckades uppdatera indexet"
 
-#: sequencer.c:4435 sequencer.c:4474
+#: sequencer.c:2242
 #, c-format
-msgid "could not write file: '%s'"
-msgstr "kunde inte skriva fil: \"%s\""
+msgid "%s does not accept arguments: '%s'"
+msgstr "%s tar inte argument: \"%s\""
 
-#: sequencer.c:4490
-msgid "could not remove CHERRY_PICK_HEAD"
-msgstr "kunde inte ta bort CHERRY_PICK_HEAD"
+#: sequencer.c:2251
+#, c-format
+msgid "missing arguments for %s"
+msgstr "argument saknas för %s"
 
-#: sequencer.c:4497
-msgid "could not commit staged changes."
-msgstr "kunde inte checka in köade ändringar."
+#: sequencer.c:2282
+#, c-format
+msgid "could not parse '%s'"
+msgstr "kunde inte tolka \"%s\""
 
-#: sequencer.c:4613
+#: sequencer.c:2343
 #, c-format
-msgid "%s: can't cherry-pick a %s"
-msgstr "%s: kan inte göra \"cherry-pick\" på typen \"%s\""
+msgid "invalid line %d: %.*s"
+msgstr "ogiltig rad %d: %.*s"
 
-#: sequencer.c:4617
+#: sequencer.c:2354
 #, c-format
-msgid "%s: bad revision"
-msgstr "%s: felaktig revision"
+msgid "cannot '%s' without a previous commit"
+msgstr "kan inte utföra \"%s\" utan en föregående incheckning"
 
-#: sequencer.c:4652
-msgid "can't revert as initial commit"
-msgstr "kan inte ångra som första incheckning"
+#: sequencer.c:2440
+msgid "cancelling a cherry picking in progress"
+msgstr "avbryter pågående \"cherry-pick\""
 
-#: sequencer.c:5129
-msgid "make_script: unhandled options"
-msgstr "make_script: flaggor som inte stöds"
+#: sequencer.c:2449
+msgid "cancelling a revert in progress"
+msgstr "avbryter pågående \"revert\""
 
-#: sequencer.c:5132
-msgid "make_script: error preparing revisions"
-msgstr "make_script: fel när revisioner skulle förberedas"
+#: sequencer.c:2493
+msgid "please fix this using 'git rebase --edit-todo'."
+msgstr "rätta det med \"git rebase --edit-todo\"."
 
-#: sequencer.c:5374 sequencer.c:5391
-msgid "nothing to do"
-msgstr "inget att göra"
+#: sequencer.c:2495
+#, c-format
+msgid "unusable instruction sheet: '%s'"
+msgstr "oanvändbart manus: \"%s\""
 
-#: sequencer.c:5410
-msgid "could not skip unnecessary pick commands"
-msgstr "kunde inte hoppa över onödiga \"pick\"-kommandon"
+#: sequencer.c:2500
+msgid "no commits parsed."
+msgstr "inga incheckningar lästes."
 
-#: sequencer.c:5504
-msgid "the script was already rearranged."
-msgstr "skriptet har redan omordnats."
+#: sequencer.c:2511
+msgid "cannot cherry-pick during a revert."
+msgstr "kan inte utföra \"cherry-pick\" under en \"revert\"."
 
-#: setup.c:133
-#, c-format
-msgid "'%s' is outside repository at '%s'"
-msgstr "\"%s\" är utanför arkivet på \"%s\""
+#: sequencer.c:2513
+msgid "cannot revert during a cherry-pick."
+msgstr "kan inte utföra \"revert\" under en \"cherry-pick\"."
 
-#: setup.c:185
+#: sequencer.c:2591
 #, 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 ""
-"%s: sökvägen finns inte i arbetskatalogen.\n"
-"Använd \"git <kommando> -- <sökväg>..\" för att ange sökvägar som inte finns "
-"lokalt."
+msgid "invalid value for %s: %s"
+msgstr "felaktigt värde för %s: %s"
 
-#: setup.c:198
-#, c-format
-msgid ""
-"ambiguous argument '%s': unknown revision or path not in the working tree.\n"
-"Use '--' to separate paths from revisions, like this:\n"
-"'git <command> [<revision>...] -- [<file>...]'"
-msgstr ""
-"tvetydigt argument \"%s\": okänd revision eller sökväg inte i "
-"arbetskatalogen.\n"
-"Använd \"--\" för att skilja sökvägar från revisioner, så här:\n"
-"\"git <kommando> [<revision>...] -- [<fil>...]\""
+#: sequencer.c:2698
+msgid "unusable squash-onto"
+msgstr "oanvändbar squash-onto"
 
-#: setup.c:264
+#: sequencer.c:2718
 #, c-format
-msgid "option '%s' must come before non-option arguments"
-msgstr "flaggan \"%s\" måste anges före argument som inte är flaggor"
+msgid "malformed options sheet: '%s'"
+msgstr "trasigt manus: \"%s\""
 
-#: setup.c:283
+#: sequencer.c:2811 sequencer.c:4644
+msgid "empty commit set passed"
+msgstr "den angivna uppsättningen incheckningar är tom"
+
+#: sequencer.c:2828
+msgid "revert is already in progress"
+msgstr "en \"revert\" pågår redan"
+
+#: sequencer.c:2830
 #, c-format
-msgid ""
-"ambiguous argument '%s': both revision and filename\n"
-"Use '--' to separate paths from revisions, like this:\n"
-"'git <command> [<revision>...] -- [<file>...]'"
-msgstr ""
-"tvetydigt argument \"%s\": både revision och filnamn\n"
-"Använd \"--\" för att skilja sökvägar från revisioner, så här:\n"
-"\"git <kommando> [<revision>...] -- [<fil>...]\""
+msgid "try \"git revert (--continue | %s--abort | --quit)\""
+msgstr "testa \"git revert (--continue | %s--abort | --quit)\""
 
-#: setup.c:419
-msgid "unable to set up work tree using invalid config"
-msgstr "kan inte skapa arbetskatalog med felaktig konfiguration"
+#: sequencer.c:2833
+msgid "cherry-pick is already in progress"
+msgstr "en \"cherry-pick\" pågår redan"
 
-#: setup.c:423
-msgid "this operation must be run in a work tree"
-msgstr "funktionen måste köras i en arbetskatalog"
+#: sequencer.c:2835
+#, c-format
+msgid "try \"git cherry-pick (--continue | %s--abort | --quit)\""
+msgstr "testa \"git cherry-pick (--continue | %s--abort | --quit)\""
 
-#: setup.c:661
+#: sequencer.c:2849
 #, c-format
-msgid "Expected git repo version <= %d, found %d"
-msgstr "Förväntade git-arkivversion <= %d, hittade %d"
+msgid "could not create sequencer directory '%s'"
+msgstr "kunde inte skapa \"sequencer\"-katalogen \"%s\""
 
-#: setup.c:669
-msgid "unknown repository extensions found:"
-msgstr "okända arkivutökningar hittades:"
+#: sequencer.c:2864
+msgid "could not lock HEAD"
+msgstr "kunde inte låsa HEAD"
 
-#: setup.c:681
-msgid "repo version is 0, but v1-only extensions found:"
-msgstr "arkivversionen är 0, men utökningar som bara finns i v1 upptäcktes:"
+#: sequencer.c:2924 sequencer.c:4379
+msgid "no cherry-pick or revert in progress"
+msgstr "ingen \"cherry-pick\" eller \"revert\" pågår"
 
-#: setup.c:700
-#, c-format
-msgid "error opening '%s'"
-msgstr "fel vid öppning av \"%s\""
+#: sequencer.c:2926 sequencer.c:2937
+msgid "cannot resolve HEAD"
+msgstr "kan inte bestämma HEAD"
 
-#: setup.c:702
-#, c-format
-msgid "too large to be a .git file: '%s'"
-msgstr "för stor för att vara en .git-fil: \"%s\""
+#: sequencer.c:2928 sequencer.c:2972
+msgid "cannot abort from a branch yet to be born"
+msgstr "kan inte avbryta från en gren som ännu inte är född"
 
-#: setup.c:704
+#: sequencer.c:2958 builtin/grep.c:757
 #, c-format
-msgid "error reading %s"
-msgstr "fel vid läsning av %s"
+msgid "cannot open '%s'"
+msgstr "kan inte öppna \"%s\""
 
-#: setup.c:706
+#: sequencer.c:2960
 #, c-format
-msgid "invalid gitfile format: %s"
-msgstr "ogiltigt gitfilformat: %s"
+msgid "cannot read '%s': %s"
+msgstr "kan inte läsa \"%s\": %s"
 
-#: setup.c:708
-#, c-format
-msgid "no path in gitfile: %s"
-msgstr "ingen sökväg i gitfil: %s"
+#: sequencer.c:2961
+msgid "unexpected end of file"
+msgstr "oväntat filslut"
 
-#: setup.c:710
+#: sequencer.c:2967
 #, c-format
-msgid "not a git repository: %s"
-msgstr "inte ett git-arkiv: %s"
+msgid "stored pre-cherry-pick HEAD file '%s' is corrupt"
+msgstr "sparad HEAD-fil från före \"cherry-pick\", \"%s\", är trasig"
 
-#: setup.c:812
-#, c-format
-msgid "'$%s' too big"
-msgstr "\"$%s\" för stor"
+#: sequencer.c:2978
+msgid "You seem to have moved HEAD. Not rewinding, check your HEAD!"
+msgstr ""
+"Du verkar ha flyttat HEAD.\n"
+"Spolar inte tillbaka, kontrollera HEAD!"
 
-#: setup.c:826
+#: sequencer.c:3019
+msgid "no revert in progress"
+msgstr "ingen \"revers\" pågår"
+
+#: sequencer.c:3028
+msgid "no cherry-pick in progress"
+msgstr "ingen \"cherry-pick\" pågår"
+
+#: sequencer.c:3038
+msgid "failed to skip the commit"
+msgstr "kunde inte hoppa över incheckningen"
+
+#: sequencer.c:3045
+msgid "there is nothing to skip"
+msgstr "ingenting att hoppa över"
+
+#: sequencer.c:3048
 #, c-format
-msgid "not a git repository: '%s'"
-msgstr "inte ett git-arkiv: \"%s\""
+msgid ""
+"have you committed already?\n"
+"try \"git %s --continue\""
+msgstr ""
+"har du redan checkat in?\n"
+"testa \"git %s --continue\""
 
-#: setup.c:855 setup.c:857 setup.c:888
+#: sequencer.c:3210 sequencer.c:4271
+msgid "cannot read HEAD"
+msgstr "kan inte läsa HEAD"
+
+#: sequencer.c:3227
 #, c-format
-msgid "cannot chdir to '%s'"
-msgstr "kan inte byta katalog (chdir) till \"%s\""
+msgid "unable to copy '%s' to '%s'"
+msgstr "kan inte kopiera in \"%s\" till \"%s\""
 
-#: setup.c:860 setup.c:916 setup.c:926 setup.c:965 setup.c:973
-msgid "cannot come back to cwd"
-msgstr "kan inte gå tillbaka till arbetskatalogen (cwd)"
+#: sequencer.c:3235
+#, c-format
+msgid ""
+"You can amend the commit now, with\n"
+"\n"
+"  git commit --amend %s\n"
+"\n"
+"Once you are satisfied with your changes, run\n"
+"\n"
+"  git rebase --continue\n"
+msgstr ""
+"Du kan utöka incheckningen nu, med\n"
+"\n"
+"\tgit commit --amend %s\n"
+"\n"
+"När du är nöjd med dina ändringar kör du\n"
+"\n"
+"\tgit rebase --continue\n"
 
-#: setup.c:987
+#: sequencer.c:3245
 #, c-format
-msgid "failed to stat '%*s%s%s'"
-msgstr "misslyckades ta status på \"%*ss%s%s\""
+msgid "Could not apply %s... %.*s"
+msgstr "Kunde inte tillämpa %s... %.*s"
 
-#: setup.c:1225
-msgid "Unable to read current working directory"
-msgstr "Kan inte läsa aktuell arbetskatalog"
+#: sequencer.c:3252
+#, c-format
+msgid "Could not merge %.*s"
+msgstr "Kunde inte slå ihop %.*s"
 
-#: setup.c:1234 setup.c:1240
+#: sequencer.c:3266 sequencer.c:3270 builtin/difftool.c:640
 #, c-format
-msgid "cannot change to '%s'"
-msgstr "kan inte byta till \"%s\""
+msgid "could not copy '%s' to '%s'"
+msgstr "kunde inte kopiera in \"%s\" till \"%s\""
 
-#: setup.c:1245
+#: sequencer.c:3282
 #, 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"
+msgid "Executing: %s\n"
+msgstr "Kör: %s\n"
 
-#: setup.c:1251
+#: sequencer.c:3297
 #, 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)."
+"execution failed: %s\n"
+"%sYou can fix the problem, and then run\n"
+"\n"
+"  git rebase --continue\n"
+"\n"
 msgstr ""
-"inte ett git-arkiv (eller någon av föräldrakatalogerna upp till "
-"monteringspunkten %s)\n"
-"Stoppar vid filsystemsgräns (GIT_DISCOVERY_ACROSS_FILESYSTEM är inte satt)."
+"körningen misslyckades: %s\n"
+"%sDu kan rätta problemet och sedan köra\n"
+"\n"
+"\tgit rebase --continue\n"
+"\n"
 
-#: setup.c:1362
+#: sequencer.c:3303
+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:3309
 #, c-format
 msgid ""
-"problem with core.sharedRepository filemode value (0%.3o).\n"
-"The owner of files must always have read and write permissions."
+"execution succeeded: %s\n"
+"but left changes to the index and/or the working tree\n"
+"Commit or stash your changes, and then run\n"
+"\n"
+"  git rebase --continue\n"
+"\n"
 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."
+"körningen lyckades: %s\n"
+"men lämnade kvar ändringar i indexet och/eller arbetskatalogen\n"
+"Checka in eller utför \"stash\" på ändringarna och kör sedan\n"
+"\n"
+"\tgit rebase --continue\n"
+"\n"
 
-#: setup.c:1409
-msgid "open /dev/null or dup failed"
-msgstr "misslyckades öppna /dev/null eller \"dup\""
+#: sequencer.c:3370
+#, c-format
+msgid "illegal label name: '%.*s'"
+msgstr "ogiltigt etikettnamn: \"%.*s\""
 
-#: setup.c:1424
-msgid "fork failed"
-msgstr "\"fork\" misslyckades"
+#: sequencer.c:3424
+msgid "writing fake root commit"
+msgstr "skriver fejkad rotincheckning"
 
-#: setup.c:1429
-msgid "setsid failed"
-msgstr "\"setsid\" misslyckades"
+#: sequencer.c:3429
+msgid "writing squash-onto"
+msgstr "skriver squash-onto"
 
-#: sha1-file.c:480
+#: sequencer.c:3513
 #, c-format
-msgid "object directory %s does not exist; check .git/objects/info/alternates"
-msgstr "objektkatalogen %s finns inte; se .git/objects/info/alternates"
+msgid "could not resolve '%s'"
+msgstr "kunde inte upplösa \"%s\""
+
+#: sequencer.c:3546
+msgid "cannot merge without a current revision"
+msgstr "kan inte slå ihop utan en aktuell incheckning"
 
-#: sha1-file.c:531
+#: sequencer.c:3568
 #, c-format
-msgid "unable to normalize alternate object path: %s"
-msgstr "kunde inte normalisera supplerande objektsökväg: %s"
+msgid "unable to parse '%.*s'"
+msgstr "kan inte tolka \"%.*s\""
 
-#: sha1-file.c:603
+#: sequencer.c:3577
 #, c-format
-msgid "%s: ignoring alternate object stores, nesting too deep"
-msgstr "%s: ignorerar supplerande objektlager, för djup nästling"
+msgid "nothing to merge: '%.*s'"
+msgstr "inget att slå samman: \"%.*s\""
+
+#: sequencer.c:3589
+msgid "octopus merge cannot be executed on top of a [new root]"
+msgstr "\"octopus\"-sammanslagning kan inte köras ovanpå en [ny rot]"
 
-#: sha1-file.c:610
+#: sequencer.c:3605
 #, c-format
-msgid "unable to normalize object directory: %s"
-msgstr "kan inte normalisera objektkatalogen: %s"
+msgid "could not get commit message of '%s'"
+msgstr "kunde inte läsa incheckningsmeddelande för \"%s\""
 
-#: sha1-file.c:653
-msgid "unable to fdopen alternates lockfile"
-msgstr "kan inte utföra \"fdopen\" på suppleantlåsfil"
+#: sequencer.c:3788
+#, c-format
+msgid "could not even attempt to merge '%.*s'"
+msgstr "kunde inte ens försöka slå ihop \"%.*s\""
 
-#: sha1-file.c:671
-msgid "unable to read alternates file"
-msgstr "kan inte läsa \"alternates\"-filen"
+#: sequencer.c:3804
+msgid "merge: Unable to write new index file"
+msgstr "sammanslagning: Kunde inte skriva ny indexfil"
 
-#: sha1-file.c:678
-msgid "unable to move new alternates file into place"
-msgstr "kan inte flytta ny \"alternates\"-fil på plats"
+#: sequencer.c:3878
+msgid "Cannot autostash"
+msgstr "Kan inte utföra \"autostash\""
 
-#: sha1-file.c:713
+#: sequencer.c:3881
 #, c-format
-msgid "path '%s' does not exist"
-msgstr "sökvägen \"%s\" finns inte"
+msgid "Unexpected stash response: '%s'"
+msgstr "Oväntat svar från stash: \"%s\""
 
-#: sha1-file.c:734
+#: sequencer.c:3887
 #, 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."
+msgid "Could not create directory for '%s'"
+msgstr "Kunde inte skapa katalog för \"%s\""
 
-#: sha1-file.c:740
+#: sequencer.c:3890
 #, c-format
-msgid "reference repository '%s' is not a local repository."
-msgstr "referensarkivet \"%s\" är inte ett lokalt arkiv."
+msgid "Created autostash: %s\n"
+msgstr "Skapade autostash: %s\n"
+
+#: sequencer.c:3894
+msgid "could not reset --hard"
+msgstr "kunde inte utföra \"reset --hard\""
 
-#: sha1-file.c:746
+#: sequencer.c:3919
 #, c-format
-msgid "reference repository '%s' is shallow"
-msgstr "referensarkivet \"%s\" är grunt"
+msgid "Applied autostash.\n"
+msgstr "Tillämpade autostash.\n"
 
-#: sha1-file.c:754
+#: sequencer.c:3931
 #, c-format
-msgid "reference repository '%s' is grafted"
-msgstr "referensarkivet \"%s\" är ympat"
+msgid "cannot store %s"
+msgstr "kan inte spara %s"
 
-#: sha1-file.c:814
+#: sequencer.c:3934
 #, c-format
-msgid "invalid line while parsing alternate refs: %s"
-msgstr "felaktig rad vid tolkning av supplerande referenser: %s"
+msgid ""
+"%s\n"
+"Your changes are safe in the stash.\n"
+"You can run \"git stash pop\" or \"git stash drop\" at any time.\n"
+msgstr ""
+"%s\n"
+"Dina ändringar är säkra i stashen.\n"
+"Du kan när som helst använda \"git stash pop\" eller \"git stash drop\".\n"
 
-#: sha1-file.c:964
-#, c-format
-msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
-msgstr "försök att utföra \"mmap\" på %<PRIuMAX> över gränsen %<PRIuMAX>"
+#: sequencer.c:3939
+msgid "Applying autostash resulted in conflicts."
+msgstr "Tillämpning av autostash gav konflikter."
 
-#: sha1-file.c:985
-msgid "mmap failed"
-msgstr "mmap misslyckades"
+#: sequencer.c:3940
+msgid "Autostash exists; creating a new stash entry."
+msgstr "Autostash finns; skapar ny stash-post."
 
-#: sha1-file.c:1149
-#, c-format
-msgid "object file %s is empty"
-msgstr "objektfilen %s är tom"
+#: sequencer.c:4033 git-rebase--preserve-merges.sh:769
+msgid "could not detach HEAD"
+msgstr "kunde inte koppla från HEAD"
 
-#: sha1-file.c:1284 sha1-file.c:2477
+#: sequencer.c:4048
 #, c-format
-msgid "corrupt loose object '%s'"
-msgstr "trasigt löst objekt \"%s\""
+msgid "Stopped at HEAD\n"
+msgstr "Stoppade på HEAD\n"
 
-#: sha1-file.c:1286 sha1-file.c:2481
+#: sequencer.c:4050
 #, c-format
-msgid "garbage at end of loose object '%s'"
-msgstr "skräp i slutet av löst objekt \"%s\""
-
-#: sha1-file.c:1328
-msgid "invalid object type"
-msgstr "felaktig objekttyp"
+msgid "Stopped at %s\n"
+msgstr "Stoppade på %s\n"
 
-#: sha1-file.c:1412
+#: sequencer.c:4058
 #, c-format
-msgid "unable to unpack %s header with --allow-unknown-type"
-msgstr "kan inte packa upp %s-huvud med --allow-unknown-type"
+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"
 
-#: sha1-file.c:1415
+#: sequencer.c:4104
 #, c-format
-msgid "unable to unpack %s header"
-msgstr "kan inte packa upp %s-huvudet"
+msgid "Rebasing (%d/%d)%s"
+msgstr "Ombaserar (%d/%d)%s"
 
-#: sha1-file.c:1421
+#: sequencer.c:4149
 #, c-format
-msgid "unable to parse %s header with --allow-unknown-type"
-msgstr "kan inte tolka %s-huvud med --allow-unknown-type"
+msgid "Stopped at %s...  %.*s\n"
+msgstr "Stoppade på %s... %.*s\n"
 
-#: sha1-file.c:1424
+#: sequencer.c:4220
 #, c-format
-msgid "unable to parse %s header"
-msgstr "kan inte tolka %s-huvud"
+msgid "unknown command %d"
+msgstr "okänt kommando %d"
 
-#: sha1-file.c:1651
-#, c-format
-msgid "failed to read object %s"
-msgstr "misslyckades läsa objektet %s"
+#: sequencer.c:4279
+msgid "could not read orig-head"
+msgstr "kunde inte läsa orig-head"
 
-#: sha1-file.c:1655
-#, c-format
-msgid "replacement %s not found for %s"
-msgstr "ersättningen %s hittades inte för %s"
+#: sequencer.c:4284
+msgid "could not read 'onto'"
+msgstr "kunde inte läsa \"onto\""
 
-#: sha1-file.c:1659
+#: sequencer.c:4298
 #, c-format
-msgid "loose object %s (stored in %s) is corrupt"
-msgstr "löst objekt %s (lagrat i %s) är trasigt"
+msgid "could not update HEAD to %s"
+msgstr "kunde inte uppdatera HEAD till %s"
 
-#: sha1-file.c:1663
+#: sequencer.c:4358
 #, c-format
-msgid "packed object %s (stored in %s) is corrupt"
-msgstr "packat objekt %s (lagrat i %s) är trasigt"
+msgid "Successfully rebased and updated %s.\n"
+msgstr "Lyckades ombasera och uppdatera %s.\n"
 
-#: sha1-file.c:1768
-#, c-format
-msgid "unable to write file %s"
-msgstr "kunde inte skriva filen %s"
+#: sequencer.c:4391
+msgid "cannot rebase: You have unstaged changes."
+msgstr "kan inte ombasera: Du har oköade ändringar."
+
+#: sequencer.c:4400
+msgid "cannot amend non-existing commit"
+msgstr "kan inte lägga till incheckning som inte finns"
 
-#: sha1-file.c:1775
+#: sequencer.c:4402
 #, c-format
-msgid "unable to set permission to '%s'"
-msgstr "kan inte sätta behörigheten till \"%s\""
+msgid "invalid file: '%s'"
+msgstr "ogiltig fil: \"%s\""
 
-#: sha1-file.c:1782
-msgid "file write error"
-msgstr "fel vid skrivning av fil"
+#: sequencer.c:4404
+#, c-format
+msgid "invalid contents: '%s'"
+msgstr "ogiltigt innehåll: \"%s\""
 
-#: sha1-file.c:1802
-msgid "error when closing loose object file"
-msgstr "fel vid stängning av fil för löst objekt"
+#: sequencer.c:4407
+msgid ""
+"\n"
+"You have uncommitted changes in your working tree. Please, commit them\n"
+"first and then run 'git rebase --continue' again."
+msgstr ""
+"\n"
+"Du har ändringar i arbetskatalogen som inte checkats in. Checka in dem\n"
+"först och kör sedan \"git rebase --continue\" igen."
 
-#: sha1-file.c:1867
+#: sequencer.c:4443 sequencer.c:4482
 #, c-format
-msgid "insufficient permission for adding an object to repository database %s"
-msgstr ""
-"otillräcklig behörighet för att lägga till objekt till arkivdatabasen %s"
+msgid "could not write file: '%s'"
+msgstr "kunde inte skriva fil: \"%s\""
 
-#: sha1-file.c:1869
-msgid "unable to create temporary file"
-msgstr "kan inte skapa temporär fil"
+#: sequencer.c:4498
+msgid "could not remove CHERRY_PICK_HEAD"
+msgstr "kunde inte ta bort CHERRY_PICK_HEAD"
 
-#: sha1-file.c:1893
-msgid "unable to write loose object file"
-msgstr "kunde inte skriva fil för löst objekt"
+#: sequencer.c:4505
+msgid "could not commit staged changes."
+msgstr "kunde inte checka in köade ändringar."
 
-#: sha1-file.c:1899
+#: sequencer.c:4621
 #, c-format
-msgid "unable to deflate new object %s (%d)"
-msgstr "kan inte utföra \"deflate\" på nytt objekt %s (%d)"
+msgid "%s: can't cherry-pick a %s"
+msgstr "%s: kan inte göra \"cherry-pick\" på typen \"%s\""
 
-#: sha1-file.c:1903
+#: sequencer.c:4625
 #, c-format
-msgid "deflateEnd on object %s failed (%d)"
-msgstr "\"deflateend\" på objektet %s misslyckades (%d)"
+msgid "%s: bad revision"
+msgstr "%s: felaktig revision"
 
-#: sha1-file.c:1907
-#, c-format
-msgid "confused by unstable object source data for %s"
-msgstr "förvirrad av instabil objektkälldata för %s"
+#: sequencer.c:4660
+msgid "can't revert as initial commit"
+msgstr "kan inte ångra som första incheckning"
 
-#: sha1-file.c:1917 builtin/pack-objects.c:1086
-#, c-format
-msgid "failed utime() on %s"
-msgstr "\"utime()\" misslyckades på %s"
+#: sequencer.c:5137
+msgid "make_script: unhandled options"
+msgstr "make_script: flaggor som inte stöds"
 
-#: sha1-file.c:1994
-#, c-format
-msgid "cannot read object for %s"
-msgstr "kan inte läsa objekt för %s"
+#: sequencer.c:5140
+msgid "make_script: error preparing revisions"
+msgstr "make_script: fel när revisioner skulle förberedas"
 
-#: sha1-file.c:2045
-msgid "corrupt commit"
-msgstr "trasik incheckning"
+#: sequencer.c:5382 sequencer.c:5399
+msgid "nothing to do"
+msgstr "inget att göra"
 
-#: sha1-file.c:2053
-msgid "corrupt tag"
-msgstr "trasig tagg"
+#: sequencer.c:5418
+msgid "could not skip unnecessary pick commands"
+msgstr "kunde inte hoppa över onödiga \"pick\"-kommandon"
 
-#: sha1-file.c:2153
-#, c-format
-msgid "read error while indexing %s"
-msgstr "läsfel vid indexering av %s"
+#: sequencer.c:5512
+msgid "the script was already rearranged."
+msgstr "skriptet har redan omordnats."
 
-#: sha1-file.c:2156
+#: setup.c:133
 #, c-format
-msgid "short read while indexing %s"
-msgstr "för lite lästes vid indexering av %s"
+msgid "'%s' is outside repository at '%s'"
+msgstr "\"%s\" är utanför arkivet på \"%s\""
 
-#: sha1-file.c:2229 sha1-file.c:2239
+#: setup.c:185
 #, c-format
-msgid "%s: failed to insert into database"
-msgstr "%s: misslyckades lägga in i databasen"
+msgid ""
+"%s: no such path in the working tree.\n"
+"Use 'git <command> -- <path>...' to specify paths that do not exist locally."
+msgstr ""
+"%s: sökvägen finns inte i arbetskatalogen.\n"
+"Använd \"git <kommando> -- <sökväg>..\" för att ange sökvägar som inte finns "
+"lokalt."
 
-#: sha1-file.c:2245
+#: setup.c:198
 #, c-format
-msgid "%s: unsupported file type"
-msgstr "%s: filtypen stöds ej"
+msgid ""
+"ambiguous argument '%s': unknown revision or path not in the working tree.\n"
+"Use '--' to separate paths from revisions, like this:\n"
+"'git <command> [<revision>...] -- [<file>...]'"
+msgstr ""
+"tvetydigt argument \"%s\": okänd revision eller sökväg inte i "
+"arbetskatalogen.\n"
+"Använd \"--\" för att skilja sökvägar från revisioner, så här:\n"
+"\"git <kommando> [<revision>...] -- [<fil>...]\""
 
-#: sha1-file.c:2269
+#: setup.c:264
 #, c-format
-msgid "%s is not a valid object"
-msgstr "%s är inte ett giltigt objekt"
+msgid "option '%s' must come before non-option arguments"
+msgstr "flaggan \"%s\" måste anges före argument som inte är flaggor"
 
-#: sha1-file.c:2271
+#: setup.c:283
 #, c-format
-msgid "%s is not a valid '%s' object"
-msgstr "%s är inte ett giltigt \"%s\"-objekt"
+msgid ""
+"ambiguous argument '%s': both revision and filename\n"
+"Use '--' to separate paths from revisions, like this:\n"
+"'git <command> [<revision>...] -- [<file>...]'"
+msgstr ""
+"tvetydigt argument \"%s\": både revision och filnamn\n"
+"Använd \"--\" för att skilja sökvägar från revisioner, så här:\n"
+"\"git <kommando> [<revision>...] -- [<fil>...]\""
 
-#: sha1-file.c:2298 builtin/index-pack.c:192
-#, c-format
-msgid "unable to open %s"
-msgstr "kan inte öppna %s"
+#: setup.c:419
+msgid "unable to set up work tree using invalid config"
+msgstr "kan inte skapa arbetskatalog med felaktig konfiguration"
 
-#: sha1-file.c:2488 sha1-file.c:2541
-#, c-format
-msgid "hash mismatch for %s (expected %s)"
-msgstr "hash stämmer inte för %s (förväntade %s)"
+#: setup.c:423
+msgid "this operation must be run in a work tree"
+msgstr "funktionen måste köras i en arbetskatalog"
 
-#: sha1-file.c:2512
+#: setup.c:661
 #, c-format
-msgid "unable to mmap %s"
-msgstr "kan inte utföra \"mmap\" för %s"
+msgid "Expected git repo version <= %d, found %d"
+msgstr "Förväntade git-arkivversion <= %d, hittade %d"
 
-#: sha1-file.c:2517
-#, c-format
-msgid "unable to unpack header of %s"
-msgstr "kan inte packa upp huvud för %s"
+#: setup.c:669
+msgid "unknown repository extensions found:"
+msgstr "okända arkivutökningar hittades:"
 
-#: sha1-file.c:2523
-#, c-format
-msgid "unable to parse header of %s"
-msgstr "kan inte tolka huvud för %s"
+#: setup.c:681
+msgid "repo version is 0, but v1-only extensions found:"
+msgstr "arkivversionen är 0, men utökningar som bara finns i v1 upptäcktes:"
 
-#: sha1-file.c:2534
+#: setup.c:700
 #, c-format
-msgid "unable to unpack contents of %s"
-msgstr "kan inte tolka innehåll i %s"
+msgid "error opening '%s'"
+msgstr "fel vid öppning av \"%s\""
 
-#: sha1-name.c:486
+#: setup.c:702
 #, c-format
-msgid "short SHA1 %s is ambiguous"
-msgstr "kort SHA1 %s är tvetydig"
-
-#: sha1-name.c:497
-msgid "The candidates are:"
-msgstr "Kandidaterna är:"
+msgid "too large to be a .git file: '%s'"
+msgstr "för stor för att vara en .git-fil: \"%s\""
 
-#: sha1-name.c:796
-msgid ""
-"Git normally never creates a ref that ends with 40 hex characters\n"
-"because it will be ignored when you just specify 40-hex. These refs\n"
-"may be created by mistake. For example,\n"
-"\n"
-"  git switch -c $br $(git rev-parse ...)\n"
-"\n"
-"where \"$br\" is somehow empty and a 40-hex ref is created. Please\n"
-"examine these refs and maybe delete them. Turn this message off by\n"
-"running \"git config advice.objectNameWarning false\""
-msgstr ""
-"Git skapar normalt aldrig referenser som slutar med 40 hexadecimala\n"
-"tecken, då detta ignoreras när du anger 40-hex enbart. Dessa\n"
-"referenser kan skapas av misstag. Till exempel, för\n"
-"\n"
-"  git switch -c $br $(git rev-parse ...)\n"
-"\n"
-"där \"$br\" på något sätt blivit tomt och en 40-hex-referens skapats.\n"
-"Undersök referenserna och ta kanske bort dem. Stäng av meddelandet\n"
-"genom att köra \"git config advice.objectNameWarning false\""
+#: setup.c:704
+#, c-format
+msgid "error reading %s"
+msgstr "fel vid läsning av %s"
 
-#: sha1-name.c:916
+#: setup.c:706
 #, c-format
-msgid "log for '%.*s' only goes back to %s"
-msgstr "loggen för \"%.*s\" räcker bara tillbaka till %s"
+msgid "invalid gitfile format: %s"
+msgstr "ogiltigt gitfilformat: %s"
 
-#: sha1-name.c:924
+#: setup.c:708
 #, c-format
-msgid "log for '%.*s' only has %d entries"
-msgstr "loggen för \"%.*s\" har bara %d poster"
+msgid "no path in gitfile: %s"
+msgstr "ingen sökväg i gitfil: %s"
 
-#: sha1-name.c:1702
+#: setup.c:710
 #, c-format
-msgid "path '%s' exists on disk, but not in '%.*s'"
-msgstr "Sökvägen \"%s\" finns på disken, men inte i \"%.*s\""
+msgid "not a git repository: %s"
+msgstr "inte ett git-arkiv: %s"
 
-#: sha1-name.c:1708
+#: setup.c:812
 #, c-format
-msgid ""
-"path '%s' exists, but not '%s'\n"
-"hint: Did you mean '%.*s:%s' aka '%.*s:./%s'?"
-msgstr ""
-"sökvägen \"%s\" finns, men inte i \"%s\"\n"
-"tips: Menade du \"%.*s:%s\", även känd som \"%.*s:./%s\"?"
+msgid "'$%s' too big"
+msgstr "\"$%s\" för stor"
 
-#: sha1-name.c:1717
+#: setup.c:826
 #, c-format
-msgid "path '%s' does not exist in '%.*s'"
-msgstr "sökvägen \"%s\" finns inte i \"%.*s\""
+msgid "not a git repository: '%s'"
+msgstr "inte ett git-arkiv: \"%s\""
 
-#: sha1-name.c:1745
+#: setup.c:855 setup.c:857 setup.c:888
 #, c-format
-msgid ""
-"path '%s' is in the index, but not at stage %d\n"
-"hint: Did you mean ':%d:%s'?"
-msgstr ""
-"sökvägen \"%s\" finns i indexet men inte i etapp %d\n"
-"tips: Menade du \":%d:%s\"?"
+msgid "cannot chdir to '%s'"
+msgstr "kan inte byta katalog (chdir) till \"%s\""
+
+#: setup.c:860 setup.c:916 setup.c:926 setup.c:965 setup.c:973
+msgid "cannot come back to cwd"
+msgstr "kan inte gå tillbaka till arbetskatalogen (cwd)"
 
-#: sha1-name.c:1761
+#: setup.c:987
 #, c-format
-msgid ""
-"path '%s' is in the index, but not '%s'\n"
-"hint: Did you mean ':%d:%s' aka ':%d:./%s'?"
-msgstr ""
-"sökvägen \"%s\" finns i indexet, men inte i \"%s\"\n"
-"tips: Menade du \":%d:%s\", även känd som \":%d:./%s\"?"
+msgid "failed to stat '%*s%s%s'"
+msgstr "misslyckades ta status på \"%*ss%s%s\""
+
+#: setup.c:1225
+msgid "Unable to read current working directory"
+msgstr "Kan inte läsa aktuell arbetskatalog"
 
-#: sha1-name.c:1769
+#: setup.c:1234 setup.c:1240
 #, c-format
-msgid "path '%s' exists on disk, but not in the index"
-msgstr "sökvägen \"%s\" finns på disk, men inte i indexet"
+msgid "cannot change to '%s'"
+msgstr "kan inte byta till \"%s\""
 
-#: sha1-name.c:1771
+#: setup.c:1245
 #, c-format
-msgid "path '%s' does not exist (neither on disk nor in the index)"
-msgstr "sökvägen \"%s\" finns inte (varken i disken eller i indexet)"
+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"
 
-#: sha1-name.c:1784
-msgid "relative path syntax can't be used outside working tree"
-msgstr "relativ sökväg kan inte användas utanför arbetskatalogen"
+#: setup.c:1251
+#, 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 ""
+"inte ett git-arkiv (eller någon av föräldrakatalogerna upp till "
+"monteringspunkten %s)\n"
+"Stoppar vid filsystemsgräns (GIT_DISCOVERY_ACROSS_FILESYSTEM är inte satt)."
 
-#: sha1-name.c:1922
+#: setup.c:1362
 #, c-format
-msgid "invalid object name '%.*s'."
-msgstr "felaktigt objektnamn \"%.*s\"."
+msgid ""
+"problem with core.sharedRepository filemode value (0%.3o).\n"
+"The owner of files must always have read and write permissions."
+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:1409
+msgid "open /dev/null or dup failed"
+msgstr "misslyckades öppna /dev/null eller \"dup\""
+
+#: setup.c:1424
+msgid "fork failed"
+msgstr "\"fork\" misslyckades"
+
+#: setup.c:1429
+msgid "setsid failed"
+msgstr "\"setsid\" misslyckades"
 
 #. TRANSLATORS: IEC 80000-13:2008 gibibyte
 #: strbuf.c:848
@@ -8179,7 +8436,7 @@ msgstr[0] "%u byte/s"
 msgstr[1] "%u bytes/s"
 
 #: strbuf.c:1166 wrapper.c:199 wrapper.c:369 builtin/am.c:719
-#: builtin/rebase.c:864
+#: builtin/rebase.c:866
 #, c-format
 msgid "could not open '%s' for writing"
 msgstr "kunde inte öppna \"%s\" för skrivning"
@@ -8243,12 +8500,12 @@ msgstr "i ej utcheckad undermodul \"%s\""
 msgid "Pathspec '%s' is in submodule '%.*s'"
 msgstr "Sökvägsangivelsen \"%s\" är i undermodulen \"%.*s\""
 
-#: submodule.c:434
+#: submodule.c:435
 #, c-format
 msgid "bad --ignore-submodules argument: %s"
 msgstr "felaktigt argument till --ignore-submodules: %s"
 
-#: submodule.c:816
+#: submodule.c:817
 #, c-format
 msgid ""
 "Submodule in commit %s at path: '%s' collides with a submodule named the "
@@ -8257,12 +8514,12 @@ msgstr ""
 "Undermodulen i incheckning %s på sökvägen: \"%s\" krockar med en undermodul "
 "med samma namn. Hoppar över den."
 
-#: submodule.c:919
+#: submodule.c:920
 #, 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:1004
+#: submodule.c:1005
 #, c-format
 msgid ""
 "Could not run 'git rev-list <commits> --not --remotes -n 1' command in "
@@ -8271,36 +8528,36 @@ msgstr ""
 "kunde inte köra \"git rev-list <incheckningar> --not --remotes -n 1\" i "
 "undermodulen \"%s\""
 
-#: submodule.c:1127
+#: submodule.c:1128
 #, c-format
 msgid "process for submodule '%s' failed"
 msgstr "process för undermodulen \"%s\" misslyckades"
 
-#: submodule.c:1156 builtin/branch.c:680 builtin/submodule--helper.c:2469
+#: submodule.c:1157 builtin/branch.c:689 builtin/submodule--helper.c:2469
 msgid "Failed to resolve HEAD as a valid ref."
 msgstr "Misslyckades slå upp HEAD som giltig referens."
 
-#: submodule.c:1167
+#: submodule.c:1168
 #, c-format
 msgid "Pushing submodule '%s'\n"
 msgstr "Sänder undermodulen \"%s\"\n"
 
-#: submodule.c:1170
+#: submodule.c:1171
 #, c-format
 msgid "Unable to push submodule '%s'\n"
 msgstr "Kunde inte sända undermodulen \"%s\"\n"
 
-#: submodule.c:1462
+#: submodule.c:1463
 #, c-format
 msgid "Fetching submodule %s%s\n"
 msgstr "Hämtar undermodulen %s%s\n"
 
-#: submodule.c:1492
+#: submodule.c:1497
 #, c-format
 msgid "Could not access submodule '%s'\n"
 msgstr "Kunde inte komma åt undermodulen \"%s\"\n"
 
-#: submodule.c:1646
+#: submodule.c:1652
 #, c-format
 msgid ""
 "Errors during submodule fetch:\n"
@@ -8309,61 +8566,61 @@ msgstr ""
 "Fel vid hämtning av undermodul:\n"
 "%s"
 
-#: submodule.c:1671
+#: submodule.c:1677
 #, c-format
 msgid "'%s' not recognized as a git repository"
 msgstr "\"%s\" känns inte igen som ett git-arkiv"
 
-#: submodule.c:1688
+#: submodule.c:1694
 #, c-format
 msgid "Could not run 'git status --porcelain=2' in submodule %s"
 msgstr "Kunde inte köra \"git status --porcelain=2\" i undermodulen \"%s\""
 
-#: submodule.c:1729
+#: submodule.c:1735
 #, c-format
 msgid "'git status --porcelain=2' failed in submodule %s"
 msgstr "\"git status --porcelain=2\" misslyckades i undermodulen \"%s\""
 
-#: submodule.c:1804
+#: submodule.c:1810
 #, c-format
 msgid "could not start 'git status' in submodule '%s'"
 msgstr "kunde inte starta \"git status\" i undermodulen \"%s\""
 
-#: submodule.c:1817
+#: submodule.c:1823
 #, c-format
 msgid "could not run 'git status' in submodule '%s'"
 msgstr "kunde inte köra \"git status\" i undermodulen \"%s\""
 
-#: submodule.c:1832
+#: submodule.c:1838
 #, c-format
 msgid "Could not unset core.worktree setting in submodule '%s'"
 msgstr "Kunde inte ta bort inställningen core.worktree i undermodulen \"%s\""
 
-#: submodule.c:1859 submodule.c:2169
+#: submodule.c:1865 submodule.c:2175
 #, c-format
 msgid "could not recurse into submodule '%s'"
 msgstr "kunde inte rekursera in i undermodulen \"%s\""
 
-#: submodule.c:1880
+#: submodule.c:1886
 msgid "could not reset submodule index"
 msgstr "kunde inte återställa indexet i undermodul"
 
-#: submodule.c:1922
+#: submodule.c:1928
 #, c-format
 msgid "submodule '%s' has dirty index"
 msgstr "undermodulen \"%s\" har ett smutsigt index"
 
-#: submodule.c:1974
+#: submodule.c:1980
 #, c-format
 msgid "Submodule '%s' could not be updated."
 msgstr "Undermoduler \"%s\" kunde inte uppdateras."
 
-#: submodule.c:2042
+#: submodule.c:2048
 #, c-format
 msgid "submodule git dir '%s' is inside git dir '%.*s'"
 msgstr "undermodul-gitkatalogen \"%s\" är inuti gitkatalogen \"%.*s\""
 
-#: submodule.c:2063
+#: submodule.c:2069
 #, c-format
 msgid ""
 "relocate_gitdir for submodule '%s' with more than one worktree not supported"
@@ -8371,17 +8628,17 @@ msgstr ""
 "relocate_gitdir för undermodulen \"%s\", som har mer än en arbetskatalog, "
 "stöds ej"
 
-#: submodule.c:2075 submodule.c:2134
+#: submodule.c:2081 submodule.c:2140
 #, c-format
 msgid "could not lookup name for submodule '%s'"
 msgstr "kunde inte slå upp namnet för undermodulen \"%s\""
 
-#: submodule.c:2079
+#: submodule.c:2085
 #, c-format
 msgid "refusing to move '%s' into an existing git dir"
 msgstr "vägrar flytta \"%s\" till en befintlig gitkatalog"
 
-#: submodule.c:2086
+#: submodule.c:2092
 #, c-format
 msgid ""
 "Migrating git directory of '%s%s' from\n"
@@ -8392,11 +8649,11 @@ msgstr ""
 "\"%s\" till\n"
 "\"%s\"\n"
 
-#: submodule.c:2214
+#: submodule.c:2220
 msgid "could not start ls-files in .."
 msgstr "kunde inte starta ls-files i .."
 
-#: submodule.c:2254
+#: submodule.c:2260
 #, c-format
 msgid "ls-tree returned unexpected return code %d"
 msgstr "ls-tree returnerade en oväntad returkod %d"
@@ -8427,7 +8684,7 @@ msgstr "tom släpradssymbol i släpraden \"%.*s\""
 msgid "could not read input file '%s'"
 msgstr "kunde inte läsa indatafilen \"%s\""
 
-#: trailer.c:751
+#: trailer.c:751 builtin/mktag.c:91
 msgid "could not read from stdin"
 msgstr "kunde inte läsa från standard in"
 
@@ -8501,7 +8758,7 @@ msgstr "kunde inte köra fast-import"
 msgid "error while running fast-import"
 msgstr "fel när fast-import kördes"
 
-#: transport-helper.c:549 transport-helper.c:1236
+#: transport-helper.c:549 transport-helper.c:1237
 #, c-format
 msgid "could not read ref %s"
 msgstr "kunde inte läsa referensen %s"
@@ -8519,7 +8776,7 @@ msgstr "protkollet stöder inte att sätta sökväg till fjärrtjänst"
 msgid "invalid remote service path"
 msgstr "felaktig sökväg till fjärrtjänst"
 
-#: transport-helper.c:661 transport.c:1446
+#: transport-helper.c:661 transport.c:1447
 msgid "operation not supported by protocol"
 msgstr "funktionen stöds inte av protokollet"
 
@@ -8598,52 +8855,52 @@ msgstr ""
 "Inga gemensamma referenser och inga angavs; gör inget.\n"
 "Du kanske borde ange en gren.\n"
 
-#: transport-helper.c:1213
+#: transport-helper.c:1214
 #, c-format
 msgid "unsupported object format '%s'"
 msgstr "objektformatet \"%s\" stöds ej"
 
-#: transport-helper.c:1222
+#: transport-helper.c:1223
 #, c-format
 msgid "malformed response in ref list: %s"
 msgstr "felformat svar i referenslistan: %s"
 
-#: transport-helper.c:1374
+#: transport-helper.c:1375
 #, c-format
 msgid "read(%s) failed"
 msgstr "läs(%s) misslyckades"
 
-#: transport-helper.c:1401
+#: transport-helper.c:1402
 #, c-format
 msgid "write(%s) failed"
 msgstr "skriv(%s) misslyckades"
 
-#: transport-helper.c:1450
+#: transport-helper.c:1451
 #, c-format
 msgid "%s thread failed"
 msgstr "%s-tråden misslyckades"
 
-#: transport-helper.c:1454
+#: transport-helper.c:1455
 #, c-format
 msgid "%s thread failed to join: %s"
 msgstr "%s-tråden misslyckades ansluta: %s"
 
-#: transport-helper.c:1473 transport-helper.c:1477
+#: transport-helper.c:1474 transport-helper.c:1478
 #, c-format
 msgid "can't start thread for copying data: %s"
 msgstr "kan inte starta tråd för kopiering av data: %s"
 
-#: transport-helper.c:1514
+#: transport-helper.c:1515
 #, c-format
 msgid "%s process failed to wait"
 msgstr "processen %s misslyckades vänta"
 
-#: transport-helper.c:1518
+#: transport-helper.c:1519
 #, c-format
 msgid "%s process failed"
 msgstr "processen %s misslyckades"
 
-#: transport-helper.c:1536 transport-helper.c:1545
+#: transport-helper.c:1537 transport-helper.c:1546
 msgid "can't start thread for copying data"
 msgstr "kan inte skapa tråd för kopiering av data"
 
@@ -8732,23 +8989,23 @@ msgstr ""
 msgid "Aborting."
 msgstr "Avbryter."
 
-#: transport.c:1315
+#: transport.c:1316
 msgid "failed to push all needed submodules"
 msgstr "kunde inte sända alla nödvändiga undermoduler"
 
-#: tree-walk.c:32
+#: tree-walk.c:33
 msgid "too-short tree object"
 msgstr "trädobjekt för kort"
 
-#: tree-walk.c:38
+#: tree-walk.c:39
 msgid "malformed mode in tree entry"
 msgstr "felformat läge i trädpost"
 
-#: tree-walk.c:42
+#: tree-walk.c:43
 msgid "empty filename in tree entry"
 msgstr "tomt filnamn i trädpost"
 
-#: tree-walk.c:117
+#: tree-walk.c:118
 msgid "too-short tree file"
 msgstr "trädfil för kort"
 
@@ -9011,7 +9268,7 @@ msgstr ""
 msgid "Updating index flags"
 msgstr "Uppdaterar indexflaggor"
 
-#: upload-pack.c:1550
+#: upload-pack.c:1543
 msgid "expected flush after fetch arguments"
 msgstr "förväntade \"flush\" efter \"fetch\"-argument"
 
@@ -9048,72 +9305,102 @@ msgstr "felaktigt \"..\"-sökvägssegment"
 msgid "Fetching objects"
 msgstr "Hämtar objekt"
 
-#: worktree.c:236 builtin/am.c:2103
+#: worktree.c:238 builtin/am.c:2103
 #, c-format
 msgid "failed to read '%s'"
 msgstr "misslyckades läsa \"%s\""
 
-#: worktree.c:283
+#: worktree.c:304
 #, c-format
 msgid "'%s' at main working tree is not the repository directory"
 msgstr "\"%s\" i huvudarbetskatalogen är inte arkivkatalogen"
 
-#: worktree.c:294
+#: worktree.c:315
 #, c-format
 msgid "'%s' file does not contain absolute path to the working tree location"
 msgstr "filen \"%s\" innehåller inte absolut sökväg till arbetskatalogen"
 
-#: worktree.c:306
+#: worktree.c:327
 #, c-format
 msgid "'%s' does not exist"
 msgstr "\"%s\" finns inte"
 
-#: worktree.c:312
+#: worktree.c:333
 #, c-format
 msgid "'%s' is not a .git file, error code %d"
 msgstr "\"%s\" är inte en .git-fil, felkod %d"
 
-#: worktree.c:321
+#: worktree.c:342
 #, c-format
 msgid "'%s' does not point back to '%s'"
 msgstr "\"%s\" pekar inte tillbaka till \"%s\""
 
-#: worktree.c:587
+#: worktree.c:608
 msgid "not a directory"
 msgstr "inte en katalog"
 
-#: worktree.c:596
+#: worktree.c:617
 msgid ".git is not a file"
 msgstr ".git är inte en fil"
 
-#: worktree.c:598
+#: worktree.c:619
 msgid ".git file broken"
 msgstr ".git-filen är trasig"
 
-#: worktree.c:600
+#: worktree.c:621
 msgid ".git file incorrect"
 msgstr ".git-filen är felaktig"
 
-#: worktree.c:670
+#: worktree.c:727
 msgid "not a valid path"
 msgstr "inte en giltig sökväg"
 
-#: worktree.c:676
+#: worktree.c:733
 msgid "unable to locate repository; .git is not a file"
 msgstr "hittar inte arkivet; .git är inte en fil"
 
-#: worktree.c:679
+#: worktree.c:737
+msgid "unable to locate repository; .git file does not reference a repository"
+msgstr "hittar inte arkivet; .git-filen hänvisar inte till ett arkiv"
+
+#: worktree.c:741
 msgid "unable to locate repository; .git file broken"
 msgstr "hittar inte arkivet; .git-filen är trasig"
 
-#: worktree.c:685
+#: worktree.c:747
 msgid "gitdir unreadable"
 msgstr "gitdir är oläsbar"
 
-#: worktree.c:689
+#: worktree.c:751
 msgid "gitdir incorrect"
 msgstr "gitdir är felaktig"
 
+#: worktree.c:776
+msgid "not a valid directory"
+msgstr "inte i en giltig katalog"
+
+#: worktree.c:782
+msgid "gitdir file does not exist"
+msgstr "gitdir-filen existerar inte"
+
+#: worktree.c:787 worktree.c:796
+#, c-format
+msgid "unable to read gitdir file (%s)"
+msgstr "kunde inte läsa gitdir-filen (%s)"
+
+#: worktree.c:806
+#, c-format
+msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
+msgstr "kort läsning (förväntade %<PRIuMAX> byte, läste %<PRIuMAX>)"
+
+#: worktree.c:814
+msgid "invalid gitdir file"
+msgstr "ogiltig gitdir-fil"
+
+#: worktree.c:822
+msgid "gitdir file points to non-existent location"
+msgstr "gitdir-filen pekar på en ickeexisterande plats"
+
 #: wrapper.c:197 wrapper.c:367
 #, c-format
 msgid "could not open '%s' for reading and writing"
@@ -9159,11 +9446,11 @@ msgstr "  (använd \"git add/rm <fil>...\" som lämpligt för att ange lösning)
 msgid "  (use \"git rm <file>...\" to mark resolution)"
 msgstr "  (använd \"git rm <fil>...\" för att ange lösning)"
 
-#: wt-status.c:211 wt-status.c:1070
+#: wt-status.c:211 wt-status.c:1072
 msgid "Changes to be committed:"
 msgstr "Ändringar att checka in:"
 
-#: wt-status.c:234 wt-status.c:1079
+#: wt-status.c:234 wt-status.c:1081
 msgid "Changes not staged for commit:"
 msgstr "Ändringar ej i incheckningskön:"
 
@@ -9266,22 +9553,22 @@ msgstr "ändrat innehåll, "
 msgid "untracked content, "
 msgstr "ospårat innehåll, "
 
-#: wt-status.c:903
+#: wt-status.c:905
 #, 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:934
+#: wt-status.c:936
 msgid "Submodules changed but not updated:"
 msgstr "Undermoduler ändrade men inte uppdaterade:"
 
-#: wt-status.c:936
+#: wt-status.c:938
 msgid "Submodule changes to be committed:"
 msgstr "Undermodulers ändringar att checka in:"
 
-#: wt-status.c:1018
+#: wt-status.c:1020
 msgid ""
 "Do not modify or remove the line above.\n"
 "Everything below it will be ignored."
@@ -9289,7 +9576,7 @@ msgstr ""
 "Raden ovan får inte ändras eller tas bort.\n"
 "Allt under den kommer tas bort."
 
-#: wt-status.c:1110
+#: wt-status.c:1112
 #, c-format
 msgid ""
 "\n"
@@ -9300,107 +9587,107 @@ msgstr ""
 "Det tog %.2f sekunder att räkna före/bakom-värden.\n"
 "Du kan använda \"--no-ahead-behind\" för undvika detta.\n"
 
-#: wt-status.c:1140
+#: wt-status.c:1142
 msgid "You have unmerged paths."
 msgstr "Du har ej sammanslagna sökvägar."
 
-#: wt-status.c:1143
+#: wt-status.c:1145
 msgid "  (fix conflicts and run \"git commit\")"
 msgstr "  (rätta konflikter och kör \"git commit\")"
 
-#: wt-status.c:1145
+#: wt-status.c:1147
 msgid "  (use \"git merge --abort\" to abort the merge)"
 msgstr "  (använd \"git merge --abort\" för att avbryta sammanslagningen)"
 
-#: wt-status.c:1149
+#: wt-status.c:1151
 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:1152
+#: wt-status.c:1154
 msgid "  (use \"git commit\" to conclude merge)"
 msgstr "  (använd \"git commit\" för att slutföra sammanslagningen)"
 
-#: wt-status.c:1161
+#: wt-status.c:1163
 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:1164
+#: wt-status.c:1166
 msgid "The current patch is empty."
 msgstr "Aktuell patch är tom."
 
-#: wt-status.c:1168
+#: wt-status.c:1170
 msgid "  (fix conflicts and then run \"git am --continue\")"
 msgstr "  (rätta konflikter och kör sedan \"git am --continue\")"
 
-#: wt-status.c:1170
+#: wt-status.c:1172
 msgid "  (use \"git am --skip\" to skip this patch)"
 msgstr "  (använd \"git am --skip\" för att hoppa över patchen)"
 
-#: wt-status.c:1172
+#: wt-status.c:1174
 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:1305
+#: wt-status.c:1307
 msgid "git-rebase-todo is missing."
 msgstr "git-rebase-todo saknas."
 
-#: wt-status.c:1307
+#: wt-status.c:1309
 msgid "No commands done."
 msgstr "Inga kommandon utförda."
 
-#: wt-status.c:1310
+#: wt-status.c:1312
 #, 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:1321
+#: wt-status.c:1323
 #, c-format
 msgid "  (see more in file %s)"
 msgstr "  (se fler i filen %s)"
 
-#: wt-status.c:1326
+#: wt-status.c:1328
 msgid "No commands remaining."
 msgstr "Inga kommandon återstår."
 
-#: wt-status.c:1329
+#: wt-status.c:1331
 #, 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:1337
+#: wt-status.c:1339
 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:1349
+#: wt-status.c:1351
 #, 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:1354
+#: wt-status.c:1356
 msgid "You are currently rebasing."
 msgstr "Du håller på med en ombasering."
 
-#: wt-status.c:1367
+#: wt-status.c:1369
 msgid "  (fix conflicts and then run \"git rebase --continue\")"
 msgstr "  (rätta konflikter och kör sedan \"git rebase --continue\")"
 
-#: wt-status.c:1369
+#: wt-status.c:1371
 msgid "  (use \"git rebase --skip\" to skip this patch)"
 msgstr "  (använd \"git rebase --skip\" för att hoppa över patchen)"
 
-#: wt-status.c:1371
+#: wt-status.c:1373
 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:1378
+#: wt-status.c:1380
 msgid "  (all conflicts fixed: run \"git rebase --continue\")"
 msgstr "  (alla konflikter rättade: kör \"git rebase --continue\")"
 
-#: wt-status.c:1382
+#: wt-status.c:1384
 #, c-format
 msgid ""
 "You are currently splitting a commit while rebasing branch '%s' on '%s'."
@@ -9408,147 +9695,155 @@ msgstr ""
 "Du håller på att dela upp en incheckning medan du ombaserar grenen \"%s\" "
 "ovanpå \"%s\"."
 
-#: wt-status.c:1387
+#: wt-status.c:1389
 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:1390
+#: wt-status.c:1392
 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:1394
+#: wt-status.c:1396
 #, 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:1399
+#: wt-status.c:1401
 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:1402
+#: wt-status.c:1404
 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:1404
+#: wt-status.c:1406
 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:1415
+#: wt-status.c:1417
 msgid "Cherry-pick currently in progress."
 msgstr "Cherry-pick pågår."
 
-#: wt-status.c:1418
+#: wt-status.c:1420
 #, 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:1425
+#: wt-status.c:1427
 msgid "  (fix conflicts and run \"git cherry-pick --continue\")"
 msgstr "  (rätta konflikter och kör sedan \"git cherry-pick --continue\")"
 
-#: wt-status.c:1428
+#: wt-status.c:1430
 msgid "  (run \"git cherry-pick --continue\" to continue)"
 msgstr "  (kör \"git cherry-pick --continue\" för att fortsätta)"
 
-#: wt-status.c:1431
+#: wt-status.c:1433
 msgid "  (all conflicts fixed: run \"git cherry-pick --continue\")"
 msgstr "  (alla konflikter rättade: kör \"git cherry-pick --continue\")"
 
-#: wt-status.c:1433
+#: wt-status.c:1435
 msgid "  (use \"git cherry-pick --skip\" to skip this patch)"
 msgstr "  (använd \"git cherry-pick --skip\" för att hoppa över patchen)"
 
-#: wt-status.c:1435
+#: wt-status.c:1437
 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:1445
+#: wt-status.c:1447
 msgid "Revert currently in progress."
 msgstr "Ångring pågår."
 
-#: wt-status.c:1448
+#: wt-status.c:1450
 #, c-format
 msgid "You are currently reverting commit %s."
 msgstr "Du håller på med att ångra incheckningen %s."
 
-#: wt-status.c:1454
+#: wt-status.c:1456
 msgid "  (fix conflicts and run \"git revert --continue\")"
 msgstr "  (rätta konflikter och kör sedan \"git revert --continue\")"
 
-#: wt-status.c:1457
+#: wt-status.c:1459
 msgid "  (run \"git revert --continue\" to continue)"
 msgstr "  (kör \"git revert --continue\" för att fortsätta)"
 
-#: wt-status.c:1460
+#: wt-status.c:1462
 msgid "  (all conflicts fixed: run \"git revert --continue\")"
 msgstr "  (alla konflikter rättade: kör \"git revert --continue\")"
 
-#: wt-status.c:1462
+#: wt-status.c:1464
 msgid "  (use \"git revert --skip\" to skip this patch)"
 msgstr "  (använd \"git revert --skip\" för att hoppa över patchen)"
 
-#: wt-status.c:1464
+#: wt-status.c:1466
 msgid "  (use \"git revert --abort\" to cancel the revert operation)"
 msgstr "  (använd \"git revert --abort\" för att avbryta ångrandet)"
 
-#: wt-status.c:1474
+#: wt-status.c:1476
 #, 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:1478
+#: wt-status.c:1480
 msgid "You are currently bisecting."
 msgstr "Du håller på med en \"bisect\"."
 
-#: wt-status.c:1481
+#: wt-status.c:1483
 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:1492
+#: wt-status.c:1494
 #, c-format
 msgid "You are in a sparse checkout with %d%% of tracked files present."
 msgstr "Du är i en gles utcheckning med %d%% spårade filer på plats."
 
-#: wt-status.c:1731
+#: wt-status.c:1733
 msgid "On branch "
 msgstr "På grenen "
 
-#: wt-status.c:1738
+#: wt-status.c:1740
 msgid "interactive rebase in progress; onto "
 msgstr "interaktiv ombasering pågår; ovanpå "
 
-#: wt-status.c:1740
+#: wt-status.c:1742
 msgid "rebase in progress; onto "
 msgstr "ombasering pågår; ovanpå "
 
-#: wt-status.c:1750
+#: wt-status.c:1747
+msgid "HEAD detached at "
+msgstr "HEAD frånkopplad vid "
+
+#: wt-status.c:1749
+msgid "HEAD detached from "
+msgstr "HEAD frånkopplad från "
+
+#: wt-status.c:1752
 msgid "Not currently on any branch."
 msgstr "Inte på någon gren för närvarande."
 
-#: wt-status.c:1767
+#: wt-status.c:1769
 msgid "Initial commit"
 msgstr "Första incheckning"
 
-#: wt-status.c:1768
+#: wt-status.c:1770
 msgid "No commits yet"
 msgstr "Inga incheckningar ännu"
 
-#: wt-status.c:1782
+#: wt-status.c:1784
 msgid "Untracked files"
 msgstr "Ospårade filer"
 
-#: wt-status.c:1784
+#: wt-status.c:1786
 msgid "Ignored files"
 msgstr "Ignorerade filer"
 
-#: wt-status.c:1788
+#: wt-status.c:1790
 #, c-format
 msgid ""
 "It took %.2f seconds to enumerate untracked files. 'status -uno'\n"
@@ -9560,32 +9855,32 @@ msgstr ""
 "lägga till nya filer själv (se \"git help status\")."
 
 # %s är nästa sträng eller tom.
-#: wt-status.c:1794
+#: wt-status.c:1796
 #, c-format
 msgid "Untracked files not listed%s"
 msgstr "Ospårade filer visas ej%s"
 
-#: wt-status.c:1796
+#: wt-status.c:1798
 msgid " (use -u option to show untracked files)"
 msgstr " (använd flaggan -u för att visa ospårade filer)"
 
-#: wt-status.c:1802
+#: wt-status.c:1804
 msgid "No changes"
 msgstr "Inga ändringar"
 
-#: wt-status.c:1807
+#: wt-status.c:1809
 #, c-format
 msgid "no changes added to commit (use \"git add\" and/or \"git commit -a\")\n"
 msgstr ""
 "inga ändringar att checka in (använd \"git add\" och/eller \"git commit -a"
 "\")\n"
 
-#: wt-status.c:1811
+#: wt-status.c:1813
 #, c-format
 msgid "no changes added to commit\n"
 msgstr "inga ändringar att checka in\n"
 
-#: wt-status.c:1815
+#: wt-status.c:1817
 #, c-format
 msgid ""
 "nothing added to commit but untracked files present (use \"git add\" to "
@@ -9594,62 +9889,62 @@ msgstr ""
 "inget köat för incheckning, men ospårade filer finns (spåra med \"git add"
 "\")\n"
 
-#: wt-status.c:1819
+#: wt-status.c:1821
 #, 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:1823
+#: wt-status.c:1825
 #, 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:1827 wt-status.c:1833
+#: wt-status.c:1829 wt-status.c:1835
 #, c-format
 msgid "nothing to commit\n"
 msgstr "inget att checka in\n"
 
-#: wt-status.c:1830
+#: wt-status.c:1832
 #, 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:1835
+#: wt-status.c:1837
 #, c-format
 msgid "nothing to commit, working tree clean\n"
 msgstr "inget att checka in, arbetskatalogen ren\n"
 
-#: wt-status.c:1940
+#: wt-status.c:1942
 msgid "No commits yet on "
 msgstr "Inga incheckningar ännu på "
 
-#: wt-status.c:1944
+#: wt-status.c:1946
 msgid "HEAD (no branch)"
 msgstr "HEAD (ingen gren)"
 
-#: wt-status.c:1975
+#: wt-status.c:1977
 msgid "different"
 msgstr "olika"
 
-#: wt-status.c:1977 wt-status.c:1985
+#: wt-status.c:1979 wt-status.c:1987
 msgid "behind "
 msgstr "efter "
 
-#: wt-status.c:1980 wt-status.c:1983
+#: wt-status.c:1982 wt-status.c:1985
 msgid "ahead "
 msgstr "före "
 
 #. TRANSLATORS: the action is e.g. "pull with rebase"
-#: wt-status.c:2505
+#: wt-status.c:2507
 #, c-format
 msgid "cannot %s: You have unstaged changes."
 msgstr "kan inte %s: Du har oköade ändringar."
 
-#: wt-status.c:2511
+#: wt-status.c:2513
 msgid "additionally, your index contains uncommitted changes."
 msgstr "dessutom innehåller dit index ändringar som inte har checkats in."
 
-#: wt-status.c:2513
+#: wt-status.c:2515
 #, c-format
 msgid "cannot %s: Your index contains uncommitted changes."
 msgstr "kan inte %s: Ditt index innehåller ändringar som inte checkats in."
@@ -9663,126 +9958,131 @@ msgstr "misslyckades ta bort länken \"%s\""
 msgid "git add [<options>] [--] <pathspec>..."
 msgstr "git add [<flaggor>] [--] <sökväg>..."
 
-#: builtin/add.c:88
+#: builtin/add.c:58
+#, c-format
+msgid "cannot chmod %cx '%s'"
+msgstr "kan inte utföra chmod %cx \"%s\""
+
+#: builtin/add.c:96
 #, c-format
 msgid "unexpected diff status %c"
 msgstr "diff-status %c förväntades inte"
 
-#: builtin/add.c:93 builtin/commit.c:285
+#: builtin/add.c:101 builtin/commit.c:285
 msgid "updating files failed"
 msgstr "misslyckades uppdatera filer"
 
-#: builtin/add.c:103
+#: builtin/add.c:111
 #, c-format
 msgid "remove '%s'\n"
 msgstr "ta bort \"%s\"\n"
 
-#: builtin/add.c:178
+#: builtin/add.c:186
 msgid "Unstaged changes after refreshing the index:"
 msgstr "Oköade ändringar efter att ha uppdaterat indexet:"
 
-#: builtin/add.c:272 builtin/rev-parse.c:908
+#: builtin/add.c:280 builtin/rev-parse.c:991
 msgid "Could not read the index"
 msgstr "Kunde inte läsa indexet"
 
-#: builtin/add.c:283
+#: builtin/add.c:291
 #, c-format
 msgid "Could not open '%s' for writing."
 msgstr "Kunde inte öppna \"%s\" för skrivning."
 
-#: builtin/add.c:287
+#: builtin/add.c:295
 msgid "Could not write patch"
 msgstr "Kunde inte skriva patch"
 
-#: builtin/add.c:290
+#: builtin/add.c:298
 msgid "editing patch failed"
 msgstr "redigering av patch misslyckades"
 
-#: builtin/add.c:293
+#: builtin/add.c:301
 #, c-format
 msgid "Could not stat '%s'"
 msgstr "Kunde inte ta status på \"%s\""
 
-#: builtin/add.c:295
+#: builtin/add.c:303
 msgid "Empty patch. Aborted."
 msgstr "Tom patch. Avbryter."
 
-#: builtin/add.c:300
+#: builtin/add.c:308
 #, c-format
 msgid "Could not apply '%s'"
 msgstr "Kunde inte tillämpa \"%s\""
 
-#: builtin/add.c:308
+#: builtin/add.c:316
 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:328 builtin/clean.c:904 builtin/fetch.c:166 builtin/mv.c:124
+#: builtin/add.c:336 builtin/clean.c:904 builtin/fetch.c:169 builtin/mv.c:124
 #: builtin/prune-packed.c:14 builtin/pull.c:204 builtin/push.c:559
 #: builtin/remote.c:1427 builtin/rm.c:242 builtin/send-pack.c:190
 msgid "dry run"
 msgstr "testkörning"
 
-#: builtin/add.c:331
+#: builtin/add.c:339
 msgid "interactive picking"
 msgstr "plocka interaktivt"
 
-#: builtin/add.c:332 builtin/checkout.c:1547 builtin/reset.c:308
+#: builtin/add.c:340 builtin/checkout.c:1546 builtin/reset.c:308
 msgid "select hunks interactively"
 msgstr "välj stycken interaktivt"
 
-#: builtin/add.c:333
+#: builtin/add.c:341
 msgid "edit current diff and apply"
 msgstr "redigera aktuell diff och applicera"
 
-#: builtin/add.c:334
+#: builtin/add.c:342
 msgid "allow adding otherwise ignored files"
 msgstr "tillåt lägga till annars ignorerade filer"
 
-#: builtin/add.c:335
+#: builtin/add.c:343
 msgid "update tracked files"
 msgstr "uppdatera spårade filer"
 
-#: builtin/add.c:336
+#: builtin/add.c:344
 msgid "renormalize EOL of tracked files (implies -u)"
 msgstr "åternormalisera radslut i spårade filer (implicerar -u)"
 
-#: builtin/add.c:337
+#: builtin/add.c:345
 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:338
+#: builtin/add.c:346
 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:341
+#: builtin/add.c:349
 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:343
+#: builtin/add.c:351
 msgid "don't add, only refresh the index"
 msgstr "lägg inte till, uppdatera endast indexet"
 
-#: builtin/add.c:344
+#: builtin/add.c:352
 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:345
+#: builtin/add.c:353
 msgid "check if - even missing - files are ignored in dry run"
 msgstr "se om - även saknade - filer ignoreras i testkörning"
 
-#: builtin/add.c:347 builtin/update-index.c:1004
+#: builtin/add.c:355 builtin/update-index.c:1004
 msgid "override the executable bit of the listed files"
 msgstr "överstyr exekveringsbiten för angivna filer"
 
-#: builtin/add.c:349
+#: builtin/add.c:357
 msgid "warn when adding an embedded repository"
 msgstr "varna när ett inbyggt arkiv läggs till"
 
-#: builtin/add.c:351
+#: builtin/add.c:359
 msgid "backend for `git stash -p`"
 msgstr "bakända för \"git stash -p\""
 
-#: builtin/add.c:369
+#: builtin/add.c:377
 #, c-format
 msgid ""
 "You've added another git repository inside your current repository.\n"
@@ -9813,12 +10113,12 @@ msgstr ""
 "\n"
 "Se \"git help submodule\" för ytterligare information."
 
-#: builtin/add.c:397
+#: builtin/add.c:405
 #, c-format
 msgid "adding embedded git repository: %s"
 msgstr "lägger till inbäddat git-arkiv: %s"
 
-#: builtin/add.c:416
+#: builtin/add.c:424
 msgid ""
 "Use -f if you really want to add them.\n"
 "Turn this message off by running\n"
@@ -9828,47 +10128,47 @@ msgstr ""
 "Slå av detta meddelande med\n"
 "\"git config advice.addIgnoredFile false\""
 
-#: builtin/add.c:425
+#: builtin/add.c:433
 msgid "adding files failed"
 msgstr "misslyckades lägga till filer"
 
-#: builtin/add.c:453 builtin/commit.c:345
+#: builtin/add.c:461 builtin/commit.c:345
 msgid "--pathspec-from-file is incompatible with --interactive/--patch"
 msgstr "--pathspec-from-file är inkompatibelt med --interactive/--patch"
 
-#: builtin/add.c:470
+#: builtin/add.c:478
 msgid "--pathspec-from-file is incompatible with --edit"
 msgstr "--pathspec-from-file är inkompatibelt med --edit"
 
-#: builtin/add.c:482
+#: builtin/add.c:490
 msgid "-A and -u are mutually incompatible"
 msgstr "-A och -u är ömsesidigt inkompatibla"
 
-#: builtin/add.c:485
+#: builtin/add.c:493
 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:489
+#: builtin/add.c:497
 #, 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:507 builtin/checkout.c:1715 builtin/commit.c:351
-#: builtin/reset.c:328 builtin/rm.c:272 builtin/stash.c:1502
+#: builtin/add.c:515 builtin/checkout.c:1714 builtin/commit.c:351
+#: builtin/reset.c:328 builtin/rm.c:272 builtin/stash.c:1569
 msgid "--pathspec-from-file is incompatible with pathspec arguments"
 msgstr "--pathspec-from-file är inkompatibelt med sökvägsangivelsesparametrar"
 
-#: builtin/add.c:514 builtin/checkout.c:1727 builtin/commit.c:357
-#: builtin/reset.c:334 builtin/rm.c:278 builtin/stash.c:1508
+#: builtin/add.c:522 builtin/checkout.c:1726 builtin/commit.c:357
+#: builtin/reset.c:334 builtin/rm.c:278 builtin/stash.c:1575
 msgid "--pathspec-file-nul requires --pathspec-from-file"
 msgstr "--pathspec-file-nul kräver --pathspec-from-file"
 
-#: builtin/add.c:518
+#: builtin/add.c:526
 #, c-format
 msgid "Nothing specified, nothing added.\n"
 msgstr "Inget angivet, inget tillagt.\n"
 
-#: builtin/add.c:520
+#: builtin/add.c:528
 msgid ""
 "Maybe you wanted to say 'git add .'?\n"
 "Turn this message off by running\n"
@@ -10124,7 +10424,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:2225 builtin/init-db.c:560 builtin/prune-packed.c:16
-#: builtin/repack.c:335 builtin/stash.c:815
+#: builtin/repack.c:334 builtin/stash.c:882
 msgid "be quiet"
 msgstr "var tyst"
 
@@ -10167,17 +10467,17 @@ msgid "pass it through git-apply"
 msgstr "sänd det genom git-apply"
 
 #: builtin/am.c:2263 builtin/commit.c:1395 builtin/fmt-merge-msg.c:17
-#: builtin/fmt-merge-msg.c:20 builtin/grep.c:903 builtin/merge.c:260
+#: builtin/fmt-merge-msg.c:20 builtin/grep.c:904 builtin/merge.c:261
 #: builtin/pull.c:141 builtin/pull.c:200 builtin/pull.c:217
-#: builtin/rebase.c:1341 builtin/repack.c:346 builtin/repack.c:350
-#: builtin/repack.c:352 builtin/show-branch.c:650 builtin/show-ref.c:172
-#: builtin/tag.c:404 parse-options.h:154 parse-options.h:175
+#: builtin/rebase.c:1347 builtin/repack.c:345 builtin/repack.c:349
+#: builtin/repack.c:351 builtin/show-branch.c:650 builtin/show-ref.c:172
+#: builtin/tag.c:436 parse-options.h:154 parse-options.h:175
 #: parse-options.h:316
 msgid "n"
 msgstr "n"
 
-#: builtin/am.c:2269 builtin/branch.c:661 builtin/bugreport.c:136
-#: builtin/for-each-ref.c:38 builtin/replace.c:556 builtin/tag.c:438
+#: builtin/am.c:2269 builtin/branch.c:670 builtin/bugreport.c:136
+#: builtin/for-each-ref.c:38 builtin/replace.c:556 builtin/tag.c:470
 #: builtin/verify-tag.c:38
 msgid "format"
 msgstr "format"
@@ -10203,12 +10503,12 @@ msgid "skip the current patch"
 msgstr "hoppa över den aktuella grenen"
 
 #: builtin/am.c:2287
-msgid "restore the original branch and abort the patching operation."
-msgstr "återställ originalgrenen och avbryt patchningen."
+msgid "restore the original branch and abort the patching operation"
+msgstr "återställ originalgrenen och avbryt patchningen"
 
 #: builtin/am.c:2290
-msgid "abort the patching operation but keep HEAD where it is."
-msgstr "avbryt patchningen men behåll HEAD där det är."
+msgid "abort the patching operation but keep HEAD where it is"
+msgstr "avbryt patchningen men behåll HEAD där det är"
 
 #: builtin/am.c:2294
 msgid "show the patch being applied"
@@ -10223,12 +10523,12 @@ msgid "use current timestamp for author date"
 msgstr "använd nuvarande tidsstämpel för författardatum"
 
 #: builtin/am.c:2303 builtin/commit-tree.c:120 builtin/commit.c:1515
-#: builtin/merge.c:297 builtin/pull.c:175 builtin/rebase.c:536
-#: builtin/rebase.c:1394 builtin/revert.c:117 builtin/tag.c:419
+#: builtin/merge.c:298 builtin/pull.c:175 builtin/rebase.c:538
+#: builtin/rebase.c:1400 builtin/revert.c:117 builtin/tag.c:451
 msgid "key-id"
 msgstr "nyckel-id"
 
-#: builtin/am.c:2304 builtin/rebase.c:537 builtin/rebase.c:1395
+#: builtin/am.c:2304 builtin/rebase.c:539 builtin/rebase.c:1401
 msgid "GPG-sign commits"
 msgstr "GPG-signera incheckningar"
 
@@ -10309,27 +10609,11 @@ msgid "git bisect--helper --bisect-reset [<commit>]"
 msgstr "git bisect--helper --bisect-reset [<incheckning>]"
 
 #: builtin/bisect--helper.c:24
-msgid ""
-"git bisect--helper --bisect-write [--no-log] <state> <revision> <good_term> "
-"<bad_term>"
-msgstr ""
-"git bisect--helper --bisect-write [--no-log] <tillstånd> <revision> <term-"
-"för-rätt> <term-för-fel>"
-
-#: builtin/bisect--helper.c:25
-msgid ""
-"git bisect--helper --bisect-check-and-set-terms <command> <good_term> "
-"<bad_term>"
-msgstr ""
-"git bisect--helper --bisect-check-and-set-terms <kommadno> <term-för-rätt> "
-"<term-för-fel>"
-
-#: builtin/bisect--helper.c:26
 msgid "git bisect--helper --bisect-next-check <good_term> <bad_term> [<term>]"
 msgstr ""
 "git bisect--helper --bisect-next-check <term-för-rätt> <term-för-fel> <eterm>"
 
-#: builtin/bisect--helper.c:27
+#: builtin/bisect--helper.c:25
 msgid ""
 "git bisect--helper --bisect-terms [--term-good | --term-old | --term-bad | --"
 "term-new]"
@@ -10337,7 +10621,7 @@ msgstr ""
 "git-bisect--helper --bisect-terms [--term-good | --term-old | --term-bad | --"
 "term-new]"
 
-#: builtin/bisect--helper.c:28
+#: builtin/bisect--helper.c:26
 msgid ""
 "git bisect--helper --bisect-start [--term-{new,bad}=<term> --term-{old,good}"
 "=<term>] [--no-checkout] [--first-parent] [<bad> [<good>...]] [--] "
@@ -10347,62 +10631,66 @@ msgstr ""
 "=<term>] [--no-checkout] [--first-parent] [<dålig> [<bra>...]] [--] "
 "[<sökvägar>...]"
 
-#: builtin/bisect--helper.c:30
+#: builtin/bisect--helper.c:28
 msgid "git bisect--helper --bisect-next"
 msgstr "git bisect--helper --bisect-next"
 
-#: builtin/bisect--helper.c:31
-msgid "git bisect--helper --bisect-auto-next"
-msgstr "git bisect--helper --bisect-auto-next"
-
-#: builtin/bisect--helper.c:32
+#: builtin/bisect--helper.c:29
 msgid "git bisect--helper --bisect-state (bad|new) [<rev>]"
 msgstr "git bisect--helper --bisect-state (bad|new) [<incheckning>]"
 
-#: builtin/bisect--helper.c:33
+#: builtin/bisect--helper.c:30
 msgid "git bisect--helper --bisect-state (good|old) [<rev>...]"
 msgstr "git bisect--helper --bisect-state (good|old) [<incheckning>...]"
 
-#: builtin/bisect--helper.c:108
+#: builtin/bisect--helper.c:31
+msgid "git bisect--helper --bisect-replay <filename>"
+msgstr "git bisect--helper --bisect-replay <filnamn>"
+
+#: builtin/bisect--helper.c:32
+msgid "git bisect--helper --bisect-skip [(<rev>|<range>)...]"
+msgstr "git bisect--helper --bisect-skip [(<incheckning>|<intervall>)...]"
+
+#: builtin/bisect--helper.c:107
 #, c-format
 msgid "cannot open file '%s' in mode '%s'"
 msgstr "kan inte kopiera filen \"%s\" i läget \"%s\""
 
-#: builtin/bisect--helper.c:115
+#: builtin/bisect--helper.c:114
 #, c-format
 msgid "could not write to file '%s'"
 msgstr "kunde inte skriva till filen \"%s\""
 
-#: builtin/bisect--helper.c:154
+#: builtin/bisect--helper.c:153
 #, c-format
 msgid "'%s' is not a valid term"
 msgstr "\"%s\" är inte en giltig term"
 
-#: builtin/bisect--helper.c:158
+#: builtin/bisect--helper.c:157
 #, c-format
 msgid "can't use the builtin command '%s' as a term"
 msgstr "kan inte använda det inbyggda kommandot \"%s\" som term"
 
-#: builtin/bisect--helper.c:168
+#: builtin/bisect--helper.c:167
 #, c-format
 msgid "can't change the meaning of the term '%s'"
 msgstr "kan inte ändra betydelsen av termen \"%s\""
 
-#: builtin/bisect--helper.c:178
+#: builtin/bisect--helper.c:177
 msgid "please use two different terms"
 msgstr "termerna måste vara olika"
 
-#: builtin/bisect--helper.c:194
+#: builtin/bisect--helper.c:193
 #, c-format
 msgid "We are not bisecting.\n"
 msgstr "Vi utför ingen bisect för tillfället.\n"
 
-#: builtin/bisect--helper.c:202
+#: builtin/bisect--helper.c:201
 #, c-format
 msgid "'%s' is not a valid commit"
 msgstr "\"%s\" är inte en giltig incheckning"
 
-#: builtin/bisect--helper.c:211
+#: builtin/bisect--helper.c:210
 #, c-format
 msgid ""
 "could not check out original HEAD '%s'. Try 'git bisect reset <commit>'."
@@ -10410,27 +10698,27 @@ msgstr ""
 "Kunde inte checka ut original-HEAD \"%s\". Försök \"git bisect reset "
 "<incheckning>\"."
 
-#: builtin/bisect--helper.c:255
+#: builtin/bisect--helper.c:254
 #, c-format
 msgid "Bad bisect_write argument: %s"
 msgstr "Felaktigt argument till bisect_write: %s"
 
-#: builtin/bisect--helper.c:260
+#: builtin/bisect--helper.c:259
 #, c-format
 msgid "couldn't get the oid of the rev '%s'"
 msgstr "kan inte läsa oid för referensen \"%s\""
 
-#: builtin/bisect--helper.c:272
+#: builtin/bisect--helper.c:271
 #, c-format
 msgid "couldn't open the file '%s'"
 msgstr "kunde inte öppna filen \"%s\""
 
-#: builtin/bisect--helper.c:298
+#: builtin/bisect--helper.c:297
 #, c-format
 msgid "Invalid command: you're currently in a %s/%s bisect"
 msgstr "Ogiltigt kommando: du utför just nu en \"bisect\" med %s/%s."
 
-#: builtin/bisect--helper.c:325
+#: builtin/bisect--helper.c:324
 #, c-format
 msgid ""
 "You need to give me at least one %s and %s revision.\n"
@@ -10439,7 +10727,7 @@ msgstr ""
 "Du måste ange åtminstone en %s och en %s version.\n"
 "(Du kan använda \"git bisect %s\" och \"git bisect %s\" för detta.)"
 
-#: builtin/bisect--helper.c:329
+#: builtin/bisect--helper.c:328
 #, c-format
 msgid ""
 "You need to start by \"git bisect start\".\n"
@@ -10450,7 +10738,7 @@ msgstr ""
 "Du måste sedan ange åtminstone en %s och en %s version.\n"
 "(Du kan använda \"git bisect %s\" och \"git bisect %s\" för detta.)"
 
-#: builtin/bisect--helper.c:349
+#: builtin/bisect--helper.c:348
 #, c-format
 msgid "bisecting only with a %s commit"
 msgstr "utför bisect med endast en %s incheckning"
@@ -10459,15 +10747,15 @@ msgstr "utför bisect med endast en %s incheckning"
 #. translation. The program will only accept English input
 #. at this point.
 #.
-#: builtin/bisect--helper.c:357
+#: builtin/bisect--helper.c:356
 msgid "Are you sure [Y/n]? "
 msgstr "Är du säker [Y=ja/N=nej]? "
 
-#: builtin/bisect--helper.c:418
+#: builtin/bisect--helper.c:417
 msgid "no terms defined"
 msgstr "inga termer angivna"
 
-#: builtin/bisect--helper.c:421
+#: builtin/bisect--helper.c:420
 #, c-format
 msgid ""
 "Your current terms are %s for the old state\n"
@@ -10476,7 +10764,7 @@ msgstr ""
 "Aktuella termer är %s för det gamla tillståndet\n"
 "och %s för det nya tillståndet.\n"
 
-#: builtin/bisect--helper.c:431
+#: builtin/bisect--helper.c:430
 #, c-format
 msgid ""
 "invalid argument %s for 'git bisect terms'.\n"
@@ -10485,54 +10773,54 @@ msgstr ""
 "ogiltigt argument %s för \"git bisect terms\".\n"
 "Flaggor som stöds är: --term-good|--term-old och --term-bad|--term-new."
 
-#: builtin/bisect--helper.c:498
+#: builtin/bisect--helper.c:497 builtin/bisect--helper.c:1014
 msgid "revision walk setup failed\n"
 msgstr "misslyckades starta revisionstraversering\n"
 
-#: builtin/bisect--helper.c:520
+#: builtin/bisect--helper.c:519
 #, c-format
 msgid "could not open '%s' for appending"
 msgstr "kunde inte öppna \"%s\" för tillägg"
 
-#: builtin/bisect--helper.c:639 builtin/bisect--helper.c:652
+#: builtin/bisect--helper.c:638 builtin/bisect--helper.c:651
 msgid "'' is not a valid term"
 msgstr "\"\" är inte en giltig term"
 
-#: builtin/bisect--helper.c:662
+#: builtin/bisect--helper.c:661
 #, c-format
 msgid "unrecognized option: '%s'"
 msgstr "okänd flagga: %s"
 
-#: builtin/bisect--helper.c:666
+#: builtin/bisect--helper.c:665
 #, c-format
 msgid "'%s' does not appear to be a valid revision"
 msgstr "\"%s\" verkar inte vara en giltig revision"
 
-#: builtin/bisect--helper.c:697
+#: builtin/bisect--helper.c:696
 msgid "bad HEAD - I need a HEAD"
 msgstr "felaktigt HEAD - Jag behöver ett HEAD"
 
-#: builtin/bisect--helper.c:712
+#: builtin/bisect--helper.c:711
 #, c-format
 msgid "checking out '%s' failed. Try 'git bisect start <valid-branch>'."
 msgstr ""
 "misslyckades checka ut \"%s\". Försök \"git bisect reset <giltig_gren>\"."
 
 # cogito-relaterat
-#: builtin/bisect--helper.c:733
+#: builtin/bisect--helper.c:732
 msgid "won't bisect on cg-seek'ed tree"
 msgstr "kör inte \"bisect\" på träd där \"cg-seek\" använts"
 
-#: builtin/bisect--helper.c:736
+#: builtin/bisect--helper.c:735
 msgid "bad HEAD - strange symbolic ref"
 msgstr "felaktigt HEAD - konstig symbolisk referens"
 
-#: builtin/bisect--helper.c:756
+#: builtin/bisect--helper.c:755
 #, c-format
 msgid "invalid ref: '%s'"
 msgstr "ogiltig referens: \"%s\""
 
-#: builtin/bisect--helper.c:814
+#: builtin/bisect--helper.c:813
 msgid "You need to start by \"git bisect start\"\n"
 msgstr "Du måste starta med \"git bisect start\"\n"
 
@@ -10540,92 +10828,101 @@ msgstr "Du måste starta med \"git bisect start\"\n"
 #. translation. The program will only accept English input
 #. at this point.
 #.
-#: builtin/bisect--helper.c:825
+#: builtin/bisect--helper.c:824
 msgid "Do you want me to do it for you [Y/n]? "
 msgstr "Vill du att jag ska göra det åt dig [Y=ja/N=nej]? "
 
-#: builtin/bisect--helper.c:843
+#: builtin/bisect--helper.c:842
 msgid "Please call `--bisect-state` with at least one argument"
 msgstr "Anropa \"--bisect-state\" med minst ett argument."
 
-#: builtin/bisect--helper.c:856
+#: builtin/bisect--helper.c:855
 #, c-format
 msgid "'git bisect %s' can take only one argument."
 msgstr "\"git bisect %s\" kan bara ta ett argument."
 
-#: builtin/bisect--helper.c:868 builtin/bisect--helper.c:879
+#: builtin/bisect--helper.c:867 builtin/bisect--helper.c:878
 #, c-format
 msgid "Bad rev input: %s"
 msgstr "Felaktig rev-indata: %s"
 
-#: builtin/bisect--helper.c:924
-msgid "reset the bisection state"
-msgstr "återställ bisect-tillstånd"
+#: builtin/bisect--helper.c:912
+msgid "We are not bisecting."
+msgstr "Vi utför ingen bisect för tillfället."
+
+#: builtin/bisect--helper.c:962
+#, c-format
+msgid "'%s'?? what are you talking about?"
+msgstr "\"%s\"?? vad menar du?"
 
-#: builtin/bisect--helper.c:926
-msgid "write out the bisection state in BISECT_LOG"
-msgstr "skriver bisect-tillståndet i BISECT_LOG"
+#: builtin/bisect--helper.c:974
+#, c-format
+msgid "cannot read file '%s' for replaying"
+msgstr "kan inte läsa filen \"%s\" för återuppspelning"
 
-#: builtin/bisect--helper.c:928
-msgid "check and set terms in a bisection state"
-msgstr "visa och ange termer för bisect-tillstånd"
+#: builtin/bisect--helper.c:1047
+msgid "reset the bisection state"
+msgstr "återställ bisect-tillstånd"
 
-#: builtin/bisect--helper.c:930
+#: builtin/bisect--helper.c:1049
 msgid "check whether bad or good terms exist"
 msgstr "se efter om termer för rätt och fel finns"
 
-#: builtin/bisect--helper.c:932
+#: builtin/bisect--helper.c:1051
 msgid "print out the bisect terms"
 msgstr "skriv ut termer för bisect"
 
-#: builtin/bisect--helper.c:934
+#: builtin/bisect--helper.c:1053
 msgid "start the bisect session"
 msgstr "påbörja bisect-körningen"
 
-#: builtin/bisect--helper.c:936
+#: builtin/bisect--helper.c:1055
 msgid "find the next bisection commit"
 msgstr "hitta nästa incheckning i bisect"
 
-#: builtin/bisect--helper.c:938
-msgid "verify the next bisection state then checkout the next bisection commit"
-msgstr ""
-"kontrollera nästa bisect-tillstånd och checka så ut nästa bisect-incheckning"
-
-#: builtin/bisect--helper.c:940
+#: builtin/bisect--helper.c:1057
 msgid "mark the state of ref (or refs)"
 msgstr "markera tillståndet för en eller flera referenser"
 
-#: builtin/bisect--helper.c:942
+#: builtin/bisect--helper.c:1059
+msgid "list the bisection steps so far"
+msgstr "lista \"bisect\"-stegen som utförts så långt"
+
+#: builtin/bisect--helper.c:1061
+msgid "replay the bisection process from the given file"
+msgstr "spela upp \"bisect\"-processen från angiven fil"
+
+#: builtin/bisect--helper.c:1063
+msgid "skip some commits for checkout"
+msgstr "hoppa över ett par incheckningar"
+
+#: builtin/bisect--helper.c:1065
 msgid "no log for BISECT_WRITE"
 msgstr "ingen logg för BISECT_WRITE"
 
-#: builtin/bisect--helper.c:957
+#: builtin/bisect--helper.c:1080
 msgid "--bisect-reset requires either no argument or a commit"
 msgstr "--bisect-reset kräver antingen inget argument eller en incheckning"
 
-#: builtin/bisect--helper.c:961
-msgid "--bisect-write requires either 4 or 5 arguments"
-msgstr "--bisect-write kräver antingen 4 eller 5 argument"
-
-#: builtin/bisect--helper.c:967
-msgid "--check-and-set-terms requires 3 arguments"
-msgstr "--check-and-set-terms kräver tre argument"
-
-#: builtin/bisect--helper.c:973
+#: builtin/bisect--helper.c:1085
 msgid "--bisect-next-check requires 2 or 3 arguments"
 msgstr "--bisect-next-check kräver 2 eller 3 argument"
 
-#: builtin/bisect--helper.c:979
+#: builtin/bisect--helper.c:1091
 msgid "--bisect-terms requires 0 or 1 argument"
 msgstr "--bisect-terms kräver noll eller ett argument"
 
-#: builtin/bisect--helper.c:988
+#: builtin/bisect--helper.c:1100
 msgid "--bisect-next requires 0 arguments"
 msgstr "--bisect-next kräver 0 argument"
 
-#: builtin/bisect--helper.c:994
-msgid "--bisect-auto-next requires 0 arguments"
-msgstr "--bisect-auto-next kräver 0 argument"
+#: builtin/bisect--helper.c:1111
+msgid "--bisect-log requires 0 arguments"
+msgstr "--bisect-log kräver 0 argument"
+
+#: builtin/bisect--helper.c:1116
+msgid "no logfile given"
+msgstr "ingen loggfil angiven"
 
 #: builtin/blame.c:32
 msgid "git blame [<options>] [<rev-opts>] [<rev>] [--] <file>"
@@ -10644,138 +10941,141 @@ msgstr "förväntade en färg: %s"
 msgid "must end with a color"
 msgstr "måste sluta med en färg"
 
-#: builtin/blame.c:730
+#: builtin/blame.c:728
 #, c-format
 msgid "invalid color '%s' in color.blame.repeatedLines"
 msgstr "felaktig färg \"%s\" i color.blame.repeatedLines"
 
-#: builtin/blame.c:748
+#: builtin/blame.c:746
 msgid "invalid value for blame.coloring"
 msgstr "ogiltigt värde för blame.coloring"
 
-#: builtin/blame.c:847
+#: builtin/blame.c:845
 #, c-format
 msgid "cannot find revision %s to ignore"
 msgstr "kan inte hitta revision %s att ignorera"
 
+#: builtin/blame.c:867
+msgid "show blame entries as we find them, incrementally"
+msgstr "visa klandringsposter när vi hittar dem, interaktivt"
+
+#: builtin/blame.c:868
+msgid "do not show object names of boundary commits (Default: off)"
+msgstr "visa inte objektnamn för gränsincheckningar (Standard: av)"
+
 #: builtin/blame.c:869
-msgid "Show blame entries as we find them, incrementally"
-msgstr "Visa klandringsposter när vi hittar dem, interaktivt"
+msgid "do not treat root commits as boundaries (Default: off)"
+msgstr "vehandla inte rotincheckningar som gränser (Standard: av)"
 
 #: builtin/blame.c:870
-msgid "Do not show object names of boundary commits (Default: off)"
-msgstr "Visa inte objektnamn för gränsincheckningar (Standard: av)"
+msgid "show work cost statistics"
+msgstr "visa statistik över arbetskostnad"
 
-#: builtin/blame.c:871
-msgid "Do not treat root commits as boundaries (Default: off)"
-msgstr "Behandla inte rotincheckningar som gränser (Standard: av)"
+#: builtin/blame.c:871 builtin/checkout.c:1503 builtin/clone.c:92
+#: builtin/commit-graph.c:84 builtin/commit-graph.c:222 builtin/fetch.c:175
+#: builtin/merge.c:297 builtin/multi-pack-index.c:27 builtin/pull.c:119
+#: builtin/push.c:575 builtin/send-pack.c:198
+msgid "force progress reporting"
+msgstr "tvinga förloppsrapportering"
 
 #: builtin/blame.c:872
-msgid "Show work cost statistics"
-msgstr "Visa statistik över arbetskostnad"
+msgid "show output score for blame entries"
+msgstr "visa utdatapoäng för klandringsposter"
 
 #: builtin/blame.c:873
-msgid "Force progress reporting"
-msgstr "Tvinga förloppsrapportering"
+msgid "show original filename (Default: auto)"
+msgstr "visa originalfilnamn (Standard: auto)"
 
 #: builtin/blame.c:874
-msgid "Show output score for blame entries"
-msgstr "Visa utdatapoäng för klandringsposter"
+msgid "show original linenumber (Default: off)"
+msgstr "visa ursprungligt radnummer (Standard: av)"
 
 #: builtin/blame.c:875
-msgid "Show original filename (Default: auto)"
-msgstr "Visa originalfilnamn (Standard: auto)"
+msgid "show in a format designed for machine consumption"
+msgstr "visa i ett format avsett för maskinkonsumtion"
 
 #: builtin/blame.c:876
-msgid "Show original linenumber (Default: off)"
-msgstr "Visa ursprungligt radnummer (Standard: av)"
+msgid "show porcelain format with per-line commit information"
+msgstr "visa porslinsformat med per-rad-incheckningsinformation"
 
 #: builtin/blame.c:877
-msgid "Show in a format designed for machine consumption"
-msgstr "Visa i ett format avsett för maskinkonsumtion"
+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:878
-msgid "Show porcelain format with per-line commit information"
-msgstr "Visa porslinsformat med per-rad-incheckningsinformation"
+msgid "show raw timestamp (Default: off)"
+msgstr "visa rå tidsstämpel (Standard: av)"
 
 #: builtin/blame.c:879
-msgid "Use the same output mode as git-annotate (Default: off)"
-msgstr "Använd samma utdataläge som git-annotate (Standard: av)"
+msgid "show long commit SHA1 (Default: off)"
+msgstr "visa lång inchecknings-SHA1 (Standard: av)"
 
 #: builtin/blame.c:880
-msgid "Show raw timestamp (Default: off)"
-msgstr "Visa rå tidsstämpel (Standard: av)"
+msgid "suppress author name and timestamp (Default: off)"
+msgstr "undertryck författarnamn och tidsstämpel (Standard: av)"
 
 #: builtin/blame.c:881
-msgid "Show long commit SHA1 (Default: off)"
-msgstr "Visa lång inchecknings-SHA1 (Standard: av)"
+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:882
-msgid "Suppress author name and timestamp (Default: off)"
-msgstr "Undertryck författarnamn och tidsstämpel (Standard: av)"
+msgid "ignore whitespace differences"
+msgstr "ignorera ändringar i blanksteg"
+
+#: builtin/blame.c:883 builtin/log.c:1812
+msgid "rev"
+msgstr "incheckning"
 
 #: builtin/blame.c:883
-msgid "Show author email instead of name (Default: off)"
-msgstr "Visa författarens e-post istället för namn (Standard: av)"
+msgid "ignore <rev> when blaming"
+msgstr "ignorera <incheckning> vid klandringen"
 
 #: builtin/blame.c:884
-msgid "Ignore whitespace differences"
-msgstr "Ignorera ändringar i blanksteg"
-
-#: builtin/blame.c:885 builtin/log.c:1813
-msgid "rev"
-msgstr "rev"
+msgid "ignore revisions from <file>"
+msgstr "ignorera incheckningar från <fil>"
 
 #: builtin/blame.c:885
-msgid "Ignore <rev> when blaming"
-msgstr "ignorera <rev> vid klandren"
-
-#: builtin/blame.c:886
-msgid "Ignore revisions from <file>"
-msgstr "ignorera revisioner från <fil>"
-
-#: builtin/blame.c:887
 msgid "color redundant metadata from previous line differently"
 msgstr "färglägg redundant metadata från tidigare rader annorlunda"
 
-#: builtin/blame.c:888
+#: builtin/blame.c:886
 msgid "color lines by age"
 msgstr "färglägg rader efter ålder"
 
-#: builtin/blame.c:889
-msgid "Spend extra cycles to find better match"
-msgstr "Slösa extra cykler med att hitta bättre träff"
+#: builtin/blame.c:887
+msgid "spend extra cycles to find better match"
+msgstr "slösa extra cykler med att hitta bättre träff"
 
-#: builtin/blame.c:890
-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:888
+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:891
-msgid "Use <file>'s contents as the final image"
-msgstr "Använd <fil>s innehåll som slutgiltig bild"
+#: builtin/blame.c:889
+msgid "use <file>'s contents as the final image"
+msgstr "använd <fil>s innehåll som slutgiltig bild"
 
-#: builtin/blame.c:892 builtin/blame.c:893
+#: builtin/blame.c:890 builtin/blame.c:891
 msgid "score"
 msgstr "poäng"
 
-#: builtin/blame.c:892
-msgid "Find line copies within and across files"
-msgstr "Hitta kopierade rader inuti och mellan filer"
+#: builtin/blame.c:890
+msgid "find line copies within and across files"
+msgstr "hitta kopierade rader inuti och mellan filer"
 
-#: builtin/blame.c:893
-msgid "Find line movements within and across files"
-msgstr "Hitta flyttade rader inuti och mellan filer"
+#: builtin/blame.c:891
+msgid "find line movements within and across files"
+msgstr "hitta flyttade rader inuti och mellan filer"
 
-#: builtin/blame.c:894
+#: builtin/blame.c:892
 msgid "range"
 msgstr "intervall"
 
-#: builtin/blame.c:895
-msgid "Process only line range <start>,<end> or function :<funcname>"
+#: builtin/blame.c:893
+msgid "process only line range <start>,<end> or function :<funcname>"
 msgstr ""
-"Behandla endast intervallet <start>,<slut> eller funktionen :<funknamn>"
+"behandla endast intervallet <start>,<slut> eller funktionen :<funknamn>"
 
-#: builtin/blame.c:947
+#: builtin/blame.c:945
 msgid "--progress can't be used with --incremental or porcelain formats"
 msgstr "--progress kan inte användas med --incremental eller porslinsformat"
 
@@ -10787,18 +11087,18 @@ msgstr "--progress kan inte användas med --incremental eller porslinsformat"
 #. your language may need more or fewer display
 #. columns.
 #.
-#: builtin/blame.c:998
+#: builtin/blame.c:996
 msgid "4 years, 11 months ago"
 msgstr "4 år, 11 månader sedan"
 
-#: builtin/blame.c:1114
+#: builtin/blame.c:1112
 #, c-format
 msgid "file %s has only %lu line"
 msgid_plural "file %s has only %lu lines"
 msgstr[0] "filen %s har bara %lu rad"
 msgstr[1] "filen %s har bara %lu rader"
 
-#: builtin/blame.c:1159
+#: builtin/blame.c:1157
 msgid "Blaming lines"
 msgstr "Klandra rader"
 
@@ -10866,118 +11166,108 @@ msgstr ""
 msgid "Update of config-file failed"
 msgstr "Misslyckades uppdatera konfigurationsfil"
 
-#: builtin/branch.c:220
+#: builtin/branch.c:223
 msgid "cannot use -a with -d"
 msgstr "kan inte ange -a med -d"
 
-#: builtin/branch.c:226
+#: builtin/branch.c:230
 msgid "Couldn't look up commit object for HEAD"
 msgstr "Kunde inte slå upp incheckningsobjekt för HEAD"
 
-#: builtin/branch.c:240
+#: builtin/branch.c:244
 #, c-format
 msgid "Cannot delete branch '%s' checked out at '%s'"
 msgstr "Kan inte ta bort grenen \"%s\" som är utcheckad på \"%s\""
 
-#: builtin/branch.c:255
+#: builtin/branch.c:259
 #, c-format
 msgid "remote-tracking branch '%s' not found."
 msgstr "fjärrspårande grenen \"%s\" hittades inte."
 
-#: builtin/branch.c:256
+#: builtin/branch.c:260
 #, c-format
 msgid "branch '%s' not found."
 msgstr "grenen \"%s\" hittades inte."
 
-#: builtin/branch.c:271
-#, c-format
-msgid "Error deleting remote-tracking branch '%s'"
-msgstr "Fel vid borttagning av fjärrspårande grenen \"%s\""
-
-#: builtin/branch.c:272
-#, c-format
-msgid "Error deleting branch '%s'"
-msgstr "Fel vid borttagning av grenen \"%s\""
-
-#: builtin/branch.c:279
+#: builtin/branch.c:291
 #, c-format
 msgid "Deleted remote-tracking branch %s (was %s).\n"
 msgstr "Tog bort fjärrspårande grenen %s (var %s).\n"
 
-#: builtin/branch.c:280
+#: builtin/branch.c:292
 #, c-format
 msgid "Deleted branch %s (was %s).\n"
 msgstr "Tog bort grenen %s (var %s).\n"
 
-#: builtin/branch.c:429 builtin/tag.c:61
+#: builtin/branch.c:438 builtin/tag.c:61
 msgid "unable to parse format string"
 msgstr "kan inte tolka formatsträng"
 
-#: builtin/branch.c:460
+#: builtin/branch.c:469
 msgid "could not resolve HEAD"
 msgstr "kunde inte slå upp HEAD"
 
-#: builtin/branch.c:466
+#: builtin/branch.c:475
 #, c-format
 msgid "HEAD (%s) points outside of refs/heads/"
 msgstr "HEAD (%s) pekar utenför refs/heads/"
 
-#: builtin/branch.c:481
+#: builtin/branch.c:490
 #, c-format
 msgid "Branch %s is being rebased at %s"
 msgstr "Grenen %s ombaseras på %s"
 
-#: builtin/branch.c:485
+#: builtin/branch.c:494
 #, c-format
 msgid "Branch %s is being bisected at %s"
 msgstr "Grenen %s är i en \"bisect\" på %s"
 
-#: builtin/branch.c:502
+#: builtin/branch.c:511
 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:504
+#: builtin/branch.c:513
 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:515
+#: builtin/branch.c:524
 #, c-format
 msgid "Invalid branch name: '%s'"
 msgstr "Felaktigt namn på gren: \"%s\""
 
-#: builtin/branch.c:544
+#: builtin/branch.c:553
 msgid "Branch rename failed"
 msgstr "Misslyckades byta namn på gren"
 
-#: builtin/branch.c:546
+#: builtin/branch.c:555
 msgid "Branch copy failed"
 msgstr "Misslyckades kopiera gren"
 
-#: builtin/branch.c:550
+#: builtin/branch.c:559
 #, c-format
 msgid "Created a copy of a misnamed branch '%s'"
 msgstr "Skapade kopia av felaktigt namngiven gren \"%s\""
 
-#: builtin/branch.c:553
+#: builtin/branch.c:562
 #, c-format
 msgid "Renamed a misnamed branch '%s' away"
 msgstr "Bytte bort namn på en felaktigt namngiven gren \"%s\""
 
-#: builtin/branch.c:559
+#: builtin/branch.c:568
 #, 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:568
+#: builtin/branch.c:577
 msgid "Branch is renamed, but update of config-file failed"
 msgstr "Grenen namnbytt, men misslyckades uppdatera konfigurationsfilen"
 
-#: builtin/branch.c:570
+#: builtin/branch.c:579
 msgid "Branch is copied, but update of config-file failed"
 msgstr "Grenen kopierades, men misslyckades uppdatera konfigurationsfilen"
 
-#: builtin/branch.c:586
+#: builtin/branch.c:595
 #, c-format
 msgid ""
 "Please edit the description for the branch\n"
@@ -10988,211 +11278,211 @@ msgstr ""
 "  %s\n"
 "Rader som inleds med \"%c\" ignoreras.\n"
 
-#: builtin/branch.c:620
+#: builtin/branch.c:629
 msgid "Generic options"
 msgstr "Allmänna flaggor"
 
-#: builtin/branch.c:622
+#: builtin/branch.c:631
 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:623
+#: builtin/branch.c:632
 msgid "suppress informational messages"
 msgstr "undertryck informationsmeddelanden"
 
-#: builtin/branch.c:624
+#: builtin/branch.c:633
 msgid "set up tracking mode (see git-pull(1))"
 msgstr "ställ in spårningsläge (se git-pull(1))"
 
-#: builtin/branch.c:626
+#: builtin/branch.c:635
 msgid "do not use"
 msgstr "använd ej"
 
-#: builtin/branch.c:628 builtin/rebase.c:532
+#: builtin/branch.c:637 builtin/rebase.c:534
 msgid "upstream"
 msgstr "uppströms"
 
-#: builtin/branch.c:628
+#: builtin/branch.c:637
 msgid "change the upstream info"
 msgstr "ändra uppströmsinformationen"
 
-#: builtin/branch.c:629
+#: builtin/branch.c:638
 msgid "unset the upstream info"
 msgstr "ta bort uppströmsinformationen"
 
-#: builtin/branch.c:630
+#: builtin/branch.c:639
 msgid "use colored output"
 msgstr "använd färgad utdata"
 
-#: builtin/branch.c:631
+#: builtin/branch.c:640
 msgid "act on remote-tracking branches"
 msgstr "arbeta på fjärrspårande grenar"
 
-#: builtin/branch.c:633 builtin/branch.c:635
+#: builtin/branch.c:642 builtin/branch.c:644
 msgid "print only branches that contain the commit"
 msgstr "visa endast grenar som innehåller incheckningen"
 
-#: builtin/branch.c:634 builtin/branch.c:636
+#: builtin/branch.c:643 builtin/branch.c:645
 msgid "print only branches that don't contain the commit"
 msgstr "visa endast grenar som inte innehåller incheckningen"
 
-#: builtin/branch.c:639
+#: builtin/branch.c:648
 msgid "Specific git-branch actions:"
 msgstr "Specifika git-branch-åtgärder:"
 
-#: builtin/branch.c:640
+#: builtin/branch.c:649
 msgid "list both remote-tracking and local branches"
 msgstr "visa både fjärrspårande och lokala grenar"
 
-#: builtin/branch.c:642
+#: builtin/branch.c:651
 msgid "delete fully merged branch"
 msgstr "ta bort helt sammanslagen gren"
 
-#: builtin/branch.c:643
+#: builtin/branch.c:652
 msgid "delete branch (even if not merged)"
 msgstr "ta bort gren (även om inte helt sammanslagen)"
 
-#: builtin/branch.c:644
+#: builtin/branch.c:653
 msgid "move/rename a branch and its reflog"
 msgstr "flytta/ta bort en gren och dess reflogg"
 
-#: builtin/branch.c:645
+#: builtin/branch.c:654
 msgid "move/rename a branch, even if target exists"
 msgstr "flytta/ta bort en gren, även om målet finns"
 
-#: builtin/branch.c:646
+#: builtin/branch.c:655
 msgid "copy a branch and its reflog"
 msgstr "kopiera en gren och dess reflogg"
 
-#: builtin/branch.c:647
+#: builtin/branch.c:656
 msgid "copy a branch, even if target exists"
 msgstr "kopiera en gren, även om målet finns"
 
-#: builtin/branch.c:648
+#: builtin/branch.c:657
 msgid "list branch names"
 msgstr "lista namn på grenar"
 
-#: builtin/branch.c:649
+#: builtin/branch.c:658
 msgid "show current branch name"
 msgstr "visa namn på aktuell gren"
 
-#: builtin/branch.c:650
+#: builtin/branch.c:659
 msgid "create the branch's reflog"
 msgstr "skapa grenens reflogg"
 
-#: builtin/branch.c:652
+#: builtin/branch.c:661
 msgid "edit the description for the branch"
 msgstr "redigera beskrivning för grenen"
 
-#: builtin/branch.c:653
+#: builtin/branch.c:662
 msgid "force creation, move/rename, deletion"
 msgstr "tvinga skapande, flytt/namnändring, borttagande"
 
-#: builtin/branch.c:654
+#: builtin/branch.c:663
 msgid "print only branches that are merged"
 msgstr "visa endast sammanslagna grenar"
 
-#: builtin/branch.c:655
+#: builtin/branch.c:664
 msgid "print only branches that are not merged"
 msgstr "visa endast ej sammanslagna grenar"
 
-#: builtin/branch.c:656
+#: builtin/branch.c:665
 msgid "list branches in columns"
 msgstr "visa grenar i spalter"
 
-#: builtin/branch.c:658 builtin/for-each-ref.c:42 builtin/notes.c:415
+#: builtin/branch.c:667 builtin/for-each-ref.c:42 builtin/notes.c:415
 #: builtin/notes.c:418 builtin/notes.c:581 builtin/notes.c:584
-#: builtin/tag.c:434
+#: builtin/tag.c:466
 msgid "object"
 msgstr "objekt"
 
-#: builtin/branch.c:659
+#: builtin/branch.c:668
 msgid "print only branches of the object"
 msgstr "visa endast grenar för objektet"
 
-#: builtin/branch.c:660 builtin/for-each-ref.c:48 builtin/tag.c:441
+#: builtin/branch.c:669 builtin/for-each-ref.c:48 builtin/tag.c:473
 msgid "sorting and filtering are case insensitive"
 msgstr "sortering och filtrering skiljer gemener och VERSALER"
 
-#: builtin/branch.c:661 builtin/for-each-ref.c:38 builtin/tag.c:439
+#: builtin/branch.c:670 builtin/for-each-ref.c:38 builtin/tag.c:471
 #: builtin/verify-tag.c:38
 msgid "format to use for the output"
 msgstr "format att använda för utdata"
 
-#: builtin/branch.c:684 builtin/clone.c:790
+#: builtin/branch.c:693 builtin/clone.c:790
 msgid "HEAD not found below refs/heads!"
 msgstr "HEAD hittades inte under refs/heads!"
 
-#: builtin/branch.c:708
+#: builtin/branch.c:717
 msgid "--column and --verbose are incompatible"
 msgstr "--column och --verbose är inkompatibla"
 
-#: builtin/branch.c:723 builtin/branch.c:777 builtin/branch.c:786
+#: builtin/branch.c:732 builtin/branch.c:788 builtin/branch.c:797
 msgid "branch name required"
 msgstr "grennamn krävs"
 
-#: builtin/branch.c:753
+#: builtin/branch.c:764
 msgid "Cannot give description to detached HEAD"
 msgstr "Kan inte beskriva frånkopplad HEAD"
 
-#: builtin/branch.c:758
+#: builtin/branch.c:769
 msgid "cannot edit description of more than one branch"
 msgstr "kan inte redigera beskrivning för mer än en gren"
 
-#: builtin/branch.c:765
+#: builtin/branch.c:776
 #, c-format
 msgid "No commit on branch '%s' yet."
 msgstr "Inga incheckningar på grenen \"%s\" ännu."
 
-#: builtin/branch.c:768
+#: builtin/branch.c:779
 #, c-format
 msgid "No branch named '%s'."
 msgstr "Ingen gren vid namnet \"%s\"."
 
-#: builtin/branch.c:783
+#: builtin/branch.c:794
 msgid "too many branches for a copy operation"
 msgstr "för många grenar för kopiering"
 
-#: builtin/branch.c:792
+#: builtin/branch.c:803
 msgid "too many arguments for a rename operation"
 msgstr "för många flaggor för namnbyte"
 
-#: builtin/branch.c:797
+#: builtin/branch.c:808
 msgid "too many arguments to set new upstream"
 msgstr "för många flaggor för att byta uppström"
 
-#: builtin/branch.c:801
+#: builtin/branch.c:812
 #, 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:804 builtin/branch.c:827
+#: builtin/branch.c:815 builtin/branch.c:838
 #, c-format
 msgid "no such branch '%s'"
 msgstr "okänd gren \"%s\""
 
-#: builtin/branch.c:808
+#: builtin/branch.c:819
 #, c-format
 msgid "branch '%s' does not exist"
 msgstr "grenen \"%s\" finns inte"
 
-#: builtin/branch.c:821
+#: builtin/branch.c:832
 msgid "too many arguments to unset upstream"
 msgstr "för många flaggor för att ta bort uppström"
 
-#: builtin/branch.c:825
+#: builtin/branch.c:836
 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:831
+#: builtin/branch.c:842
 #, c-format
 msgid "Branch '%s' has no upstream information"
 msgstr "Grenen \"%s\" har ingen uppströmsinformation"
 
-#: builtin/branch.c:841
+#: builtin/branch.c:852
 msgid ""
 "The -a, and -r, options to 'git branch' do not take a branch name.\n"
 "Did you mean to use: -a|-r --list <pattern>?"
@@ -11200,7 +11490,7 @@ msgstr ""
 "Flaggorna -a och -r på \"git branch\" tar inte ett namn på gren.\n"
 "Menade du att använda: -a|-r --list <mönster>?"
 
-#: builtin/branch.c:845
+#: builtin/branch.c:856
 msgid ""
 "the '--set-upstream' option is no longer supported. Please use '--track' or "
 "'--set-upstream-to' instead."
@@ -11321,19 +11611,19 @@ msgstr "git bundle list-heads <fil> [<refnamn>...]"
 msgid "git bundle unbundle <file> [<refname>...]"
 msgstr "git bundle unbundle <fil> [<refnamn>...]"
 
-#: builtin/bundle.c:67 builtin/pack-objects.c:3480
+#: builtin/bundle.c:67 builtin/pack-objects.c:3495
 msgid "do not show progress meter"
 msgstr "visa inte förloppsindikator"
 
-#: builtin/bundle.c:69 builtin/pack-objects.c:3482
+#: builtin/bundle.c:69 builtin/pack-objects.c:3497
 msgid "show progress meter"
 msgstr "visa förloppsindikator"
 
-#: builtin/bundle.c:71 builtin/pack-objects.c:3484
+#: builtin/bundle.c:71 builtin/pack-objects.c:3499
 msgid "show progress meter during object writing phase"
 msgstr "visa förloppsindikator under objektskrivningsfasen"
 
-#: builtin/bundle.c:74 builtin/pack-objects.c:3487
+#: builtin/bundle.c:74 builtin/pack-objects.c:3502
 msgid "similar to --all-progress when progress meter is shown"
 msgstr "som --all-progress när förloppsindikatorn visas"
 
@@ -11476,8 +11766,8 @@ 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:21 builtin/checkout.c:1500 builtin/gc.c:541
-#: builtin/worktree.c:561
+#: builtin/check-ignore.c:21 builtin/checkout.c:1499 builtin/gc.c:549
+#: builtin/worktree.c:489
 msgid "suppress progress reporting"
 msgstr "undertryck förloppsrapportering"
 
@@ -11530,54 +11820,54 @@ msgstr "kunde inte tolka kontakt: %s"
 msgid "no contacts specified"
 msgstr "inga kontakter angavs"
 
-#: builtin/checkout-index.c:139
+#: builtin/checkout-index.c:152
 msgid "git checkout-index [<options>] [--] [<file>...]"
 msgstr "git checkout-index [<flaggor>] [--] [<fil>...]"
 
-#: builtin/checkout-index.c:156
+#: builtin/checkout-index.c:169
 msgid "stage should be between 1 and 3 or all"
 msgstr "etapp måste vara mellan 1 och 3 eller \"all\""
 
-#: builtin/checkout-index.c:173
+#: builtin/checkout-index.c:186
 msgid "check out all files in the index"
 msgstr "checka ut alla filer i indexet"
 
-#: builtin/checkout-index.c:174
+#: builtin/checkout-index.c:187
 msgid "force overwrite of existing files"
 msgstr "tvinga överskrivning av befintliga filer"
 
-#: builtin/checkout-index.c:176
+#: builtin/checkout-index.c:189
 msgid "no warning for existing files and files not in index"
 msgstr "ingen varning för existerande filer och filer ej i indexet"
 
-#: builtin/checkout-index.c:178
+#: builtin/checkout-index.c:191
 msgid "don't checkout new files"
 msgstr "checka inte ut nya filer"
 
-#: builtin/checkout-index.c:180
+#: builtin/checkout-index.c:193
 msgid "update stat information in the index file"
 msgstr "uppdatera stat-information i indexfilen"
 
-#: builtin/checkout-index.c:184
+#: builtin/checkout-index.c:197
 msgid "read list of paths from the standard input"
 msgstr "läs listan över sökvägar från standard in"
 
-#: builtin/checkout-index.c:186
+#: builtin/checkout-index.c:199
 msgid "write the content to temporary files"
 msgstr "skriv innehåll till temporära filer"
 
-#: builtin/checkout-index.c:187 builtin/column.c:31
+#: builtin/checkout-index.c:200 builtin/column.c:31
 #: builtin/submodule--helper.c:1824 builtin/submodule--helper.c:1827
 #: builtin/submodule--helper.c:1835 builtin/submodule--helper.c:2333
-#: builtin/worktree.c:757
+#: builtin/worktree.c:717
 msgid "string"
 msgstr "sträng"
 
-#: builtin/checkout-index.c:188
+#: builtin/checkout-index.c:201
 msgid "when creating files, prepend <string>"
 msgstr "när filer skapas, lägg till <sträng> först"
 
-#: builtin/checkout-index.c:190
+#: builtin/checkout-index.c:203
 msgid "copy out the files from named stage"
 msgstr "kopiera ut filer från namngiven etapp"
 
@@ -11679,16 +11969,16 @@ msgstr "\"%s\" måste användas när \"%s\" inte anges"
 msgid "'%s' or '%s' cannot be used with %s"
 msgstr "\"%s\" eller \"%s\" kan inte användas med %s"
 
-#: builtin/checkout.c:541 builtin/checkout.c:548
+#: builtin/checkout.c:543 builtin/checkout.c:550
 #, c-format
 msgid "path '%s' is unmerged"
 msgstr "sökvägen \"%s\" har inte slagits ihop"
 
-#: builtin/checkout.c:716
+#: builtin/checkout.c:718
 msgid "you need to resolve your current index first"
 msgstr "du måste lösa ditt befintliga index först"
 
-#: builtin/checkout.c:770
+#: builtin/checkout.c:772
 #, c-format
 msgid ""
 "cannot continue with staged changes in the following files:\n"
@@ -11697,50 +11987,50 @@ msgstr ""
 "kan inte fortsätta med köade ändringar i följande filer:\n"
 "%s"
 
-#: builtin/checkout.c:866
+#: builtin/checkout.c:865
 #, c-format
 msgid "Can not do reflog for '%s': %s\n"
 msgstr "Kan inte skapa referenslogg för \"%s\": %s\n"
 
-#: builtin/checkout.c:908
+#: builtin/checkout.c:907
 msgid "HEAD is now at"
 msgstr "HEAD är nu på"
 
-#: builtin/checkout.c:912 builtin/clone.c:721 t/helper/test-fast-rebase.c:202
+#: builtin/checkout.c:911 builtin/clone.c:721 t/helper/test-fast-rebase.c:202
 msgid "unable to update HEAD"
 msgstr "kan inte uppdatera HEAD"
 
-#: builtin/checkout.c:916
+#: builtin/checkout.c:915
 #, c-format
 msgid "Reset branch '%s'\n"
 msgstr "Återställ gren \"%s\"\n"
 
-#: builtin/checkout.c:919
+#: builtin/checkout.c:918
 #, c-format
 msgid "Already on '%s'\n"
 msgstr "Redan på \"%s\"\n"
 
-#: builtin/checkout.c:923
+#: builtin/checkout.c:922
 #, c-format
 msgid "Switched to and reset branch '%s'\n"
 msgstr "Växlade till och nollställde grenen \"%s\"\n"
 
-#: builtin/checkout.c:925 builtin/checkout.c:1356
+#: builtin/checkout.c:924 builtin/checkout.c:1355
 #, c-format
 msgid "Switched to a new branch '%s'\n"
 msgstr "Växlade till en ny gren \"%s\"\n"
 
-#: builtin/checkout.c:927
+#: builtin/checkout.c:926
 #, c-format
 msgid "Switched to branch '%s'\n"
 msgstr "Växlade till grenen \"%s\"\n"
 
-#: builtin/checkout.c:978
+#: builtin/checkout.c:977
 #, c-format
 msgid " ... and %d more.\n"
 msgstr " ... och %d till.\n"
 
-#: builtin/checkout.c:984
+#: builtin/checkout.c:983
 #, c-format
 msgid ""
 "Warning: you are leaving %d commit behind, not connected to\n"
@@ -11763,7 +12053,7 @@ msgstr[1] ""
 "\n"
 "%s\n"
 
-#: builtin/checkout.c:1003
+#: builtin/checkout.c:1002
 #, c-format
 msgid ""
 "If you want to keep it by creating a new branch, this may be a good time\n"
@@ -11790,19 +12080,19 @@ msgstr[1] ""
 " git branch <nytt_grennamn> %s\n"
 "\n"
 
-#: builtin/checkout.c:1038
+#: builtin/checkout.c:1037
 msgid "internal error in revision walk"
 msgstr "internt fel vid genomgång av revisioner (revision walk)"
 
-#: builtin/checkout.c:1042
+#: builtin/checkout.c:1041
 msgid "Previous HEAD position was"
 msgstr "Tidigare position för HEAD var"
 
-#: builtin/checkout.c:1082 builtin/checkout.c:1351
+#: builtin/checkout.c:1081 builtin/checkout.c:1350
 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:1164
+#: builtin/checkout.c:1163
 #, c-format
 msgid ""
 "'%s' could be both a local file and a tracking branch.\n"
@@ -11811,7 +12101,7 @@ msgstr ""
 "\"%s\" kan vara både en lokal fil och en spårande gren.\n"
 "Använd -- (och möjligen --no-guess) för att göra otvetydig"
 
-#: builtin/checkout.c:1171
+#: builtin/checkout.c:1170
 msgid ""
 "If you meant to check out a remote tracking branch on, e.g. 'origin',\n"
 "you can do so by fully qualifying the name with the --track option:\n"
@@ -11831,51 +12121,51 @@ msgstr ""
 "föredra en fjärr, t.ex fjärren \"origin\" kan du ställa in\n"
 "checkout.defaultRemote=origin i din konfiguration."
 
-#: builtin/checkout.c:1181
+#: builtin/checkout.c:1180
 #, c-format
 msgid "'%s' matched multiple (%d) remote tracking branches"
 msgstr "\"%s\" motsvarar flera (%d) spårade fjärrgrenar"
 
-#: builtin/checkout.c:1247
+#: builtin/checkout.c:1246
 msgid "only one reference expected"
 msgstr "endast en referens förväntades"
 
-#: builtin/checkout.c:1264
+#: builtin/checkout.c:1263
 #, c-format
 msgid "only one reference expected, %d given."
 msgstr "endast en referens förväntades, %d gavs."
 
-#: builtin/checkout.c:1310 builtin/worktree.c:342 builtin/worktree.c:510
+#: builtin/checkout.c:1309 builtin/worktree.c:270 builtin/worktree.c:438
 #, c-format
 msgid "invalid reference: %s"
 msgstr "felaktig referens: %s"
 
-#: builtin/checkout.c:1323 builtin/checkout.c:1689
+#: builtin/checkout.c:1322 builtin/checkout.c:1688
 #, c-format
 msgid "reference is not a tree: %s"
 msgstr "referensen är inte ett träd: %s"
 
-#: builtin/checkout.c:1370
+#: builtin/checkout.c:1369
 #, c-format
 msgid "a branch is expected, got tag '%s'"
 msgstr "förväntade gren, fick taggen \"%s\""
 
-#: builtin/checkout.c:1372
+#: builtin/checkout.c:1371
 #, c-format
 msgid "a branch is expected, got remote branch '%s'"
 msgstr "förväntade gren, fick fjärrgrenen \"%s\""
 
-#: builtin/checkout.c:1373 builtin/checkout.c:1381
+#: builtin/checkout.c:1372 builtin/checkout.c:1380
 #, c-format
 msgid "a branch is expected, got '%s'"
 msgstr "förväntade gren, fick \"%s\""
 
-#: builtin/checkout.c:1376
+#: builtin/checkout.c:1375
 #, c-format
 msgid "a branch is expected, got commit '%s'"
 msgstr "förväntade gren, fick incheckningen \"%s\""
 
-#: builtin/checkout.c:1392
+#: builtin/checkout.c:1391
 msgid ""
 "cannot switch branch while merging\n"
 "Consider \"git merge --quit\" or \"git worktree add\"."
@@ -11883,7 +12173,7 @@ msgstr ""
 "kan inte växla gren vid sammanslagning\n"
 "Överväg \"git merge --quit\" eller \"git worktree add\"."
 
-#: builtin/checkout.c:1396
+#: builtin/checkout.c:1395
 msgid ""
 "cannot switch branch in the middle of an am session\n"
 "Consider \"git am --quit\" or \"git worktree add\"."
@@ -11891,7 +12181,7 @@ msgstr ""
 "kan inte växla gren mitt i en \"am\"-körning\n"
 "Överväg \"git am --quit\" eller \"git worktree add\"."
 
-#: builtin/checkout.c:1400
+#: builtin/checkout.c:1399
 msgid ""
 "cannot switch branch while rebasing\n"
 "Consider \"git rebase --quit\" or \"git worktree add\"."
@@ -11899,7 +12189,7 @@ msgstr ""
 "kan inte växla gren vid ombasering\n"
 "Överväg \"git rebase --quit\" eller \"git worktree add\"."
 
-#: builtin/checkout.c:1404
+#: builtin/checkout.c:1403
 msgid ""
 "cannot switch branch while cherry-picking\n"
 "Consider \"git cherry-pick --quit\" or \"git worktree add\"."
@@ -11907,7 +12197,7 @@ msgstr ""
 "kan inte växla gren i en \"cherry-pick\"\n"
 "Överväg \"git cherry-pick --quit\" eller \"git worktree add\"."
 
-#: builtin/checkout.c:1408
+#: builtin/checkout.c:1407
 msgid ""
 "cannot switch branch while reverting\n"
 "Consider \"git revert --quit\" or \"git worktree add\"."
@@ -11915,146 +12205,139 @@ msgstr ""
 "kan inte växla gren i en \"revert\"\n"
 "Överväg \"git revert --quit\" eller \"git worktree add\"."
 
-#: builtin/checkout.c:1412
+#: builtin/checkout.c:1411
 msgid "you are switching branch while bisecting"
 msgstr "då växlar grenar medan du gör en \"bisect\""
 
-#: builtin/checkout.c:1419
+#: builtin/checkout.c:1418
 msgid "paths cannot be used with switching branches"
 msgstr "sökvägar kan inte användas vid byte av gren"
 
-#: builtin/checkout.c:1422 builtin/checkout.c:1426 builtin/checkout.c:1430
+#: builtin/checkout.c:1421 builtin/checkout.c:1425 builtin/checkout.c:1429
 #, c-format
 msgid "'%s' cannot be used with switching branches"
 msgstr "\"%s\" kan inte användas vid byte av gren"
 
-#: builtin/checkout.c:1434 builtin/checkout.c:1437 builtin/checkout.c:1440
-#: builtin/checkout.c:1445 builtin/checkout.c:1450
+#: builtin/checkout.c:1433 builtin/checkout.c:1436 builtin/checkout.c:1439
+#: builtin/checkout.c:1444 builtin/checkout.c:1449
 #, c-format
 msgid "'%s' cannot be used with '%s'"
 msgstr "\"%s\" kan inte användas med \"%s\""
 
-#: builtin/checkout.c:1447
+#: builtin/checkout.c:1446
 #, c-format
 msgid "'%s' cannot take <start-point>"
 msgstr "\"%s\" kan inte ta <startpunkt>"
 
-#: builtin/checkout.c:1455
+#: builtin/checkout.c:1454
 #, c-format
 msgid "Cannot switch branch to a non-commit '%s'"
 msgstr "Kan inte växla gren till icke-incheckningen \"%s\""
 
-#: builtin/checkout.c:1462
+#: builtin/checkout.c:1461
 msgid "missing branch or commit argument"
 msgstr "saknar gren- eller incheckingsargument"
 
-#: builtin/checkout.c:1504 builtin/clone.c:92 builtin/commit-graph.c:84
-#: builtin/commit-graph.c:222 builtin/fetch.c:172 builtin/merge.c:296
-#: builtin/multi-pack-index.c:27 builtin/pull.c:119 builtin/push.c:575
-#: builtin/send-pack.c:198
-msgid "force progress reporting"
-msgstr "tvinga förloppsrapportering"
-
-#: builtin/checkout.c:1505
+#: builtin/checkout.c:1504
 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:1506 builtin/log.c:1800 parse-options.h:322
+#: builtin/checkout.c:1505 builtin/log.c:1799 parse-options.h:322
 msgid "style"
 msgstr "stil"
 
-#: builtin/checkout.c:1507
+#: builtin/checkout.c:1506
 msgid "conflict style (merge or diff3)"
 msgstr "konfliktstil (merge eller diff3)"
 
-#: builtin/checkout.c:1519 builtin/worktree.c:558
+#: builtin/checkout.c:1518 builtin/worktree.c:486
 msgid "detach HEAD at named commit"
 msgstr "koppla från HEAD vid namngiven incheckning"
 
-#: builtin/checkout.c:1520
+#: builtin/checkout.c:1519
 msgid "set upstream info for new branch"
 msgstr "sätt uppströmsinformation för ny gren"
 
-#: builtin/checkout.c:1522
+#: builtin/checkout.c:1521
 msgid "force checkout (throw away local modifications)"
 msgstr "tvinga utcheckning (kasta bort lokala ändringar)"
 
-#: builtin/checkout.c:1524
+#: builtin/checkout.c:1523
 msgid "new-branch"
 msgstr "ny-gren"
 
-#: builtin/checkout.c:1524
+#: builtin/checkout.c:1523
 msgid "new unparented branch"
 msgstr "ny gren utan förälder"
 
-#: builtin/checkout.c:1526 builtin/merge.c:300
+#: builtin/checkout.c:1525 builtin/merge.c:301
 msgid "update ignored files (default)"
 msgstr "uppdatera ignorerade filer (standard)"
 
-#: builtin/checkout.c:1529
+#: builtin/checkout.c:1528
 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:1542
+#: builtin/checkout.c:1541
 msgid "checkout our version for unmerged files"
 msgstr "checka ut vår version för ej sammanslagna filer"
 
-#: builtin/checkout.c:1545
+#: builtin/checkout.c:1544
 msgid "checkout their version for unmerged files"
 msgstr "checka ut deras version för ej sammanslagna filer"
 
-#: builtin/checkout.c:1549
+#: builtin/checkout.c:1548
 msgid "do not limit pathspecs to sparse entries only"
 msgstr "begränsa inte sökvägar till endast glesa poster"
 
-#: builtin/checkout.c:1604
+#: builtin/checkout.c:1603
 #, c-format
 msgid "-%c, -%c and --orphan are mutually exclusive"
 msgstr "-%c, -%c och --orphan är ömsesidigt uteslutande"
 
-#: builtin/checkout.c:1608
+#: builtin/checkout.c:1607
 msgid "-p and --overlay are mutually exclusive"
 msgstr "-p och --overlay är ömsesidigt uteslutande"
 
-#: builtin/checkout.c:1645
+#: builtin/checkout.c:1644
 msgid "--track needs a branch name"
 msgstr "--track behöver ett namn på en gren"
 
-#: builtin/checkout.c:1650
+#: builtin/checkout.c:1649
 #, c-format
 msgid "missing branch name; try -%c"
 msgstr "grennamn saknas; försök med -%c"
 
-#: builtin/checkout.c:1682
+#: builtin/checkout.c:1681
 #, c-format
 msgid "could not resolve %s"
 msgstr "kunde inte upplösa %s"
 
-#: builtin/checkout.c:1698
+#: builtin/checkout.c:1697
 msgid "invalid path specification"
 msgstr "felaktig sökvägsangivelse"
 
-#: builtin/checkout.c:1705
+#: builtin/checkout.c:1704
 #, 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:1709
+#: builtin/checkout.c:1708
 #, 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:1718
+#: builtin/checkout.c:1717
 msgid "--pathspec-from-file is incompatible with --detach"
 msgstr "--pathspec-from-file är inkompatibelt med --detach"
 
-#: builtin/checkout.c:1721 builtin/reset.c:325 builtin/stash.c:1499
+#: builtin/checkout.c:1720 builtin/reset.c:325 builtin/stash.c:1566
 msgid "--pathspec-from-file is incompatible with --patch"
 msgstr "--pathspec-from-file är inkompatibelt med --patch"
 
-#: builtin/checkout.c:1734
+#: builtin/checkout.c:1733
 msgid ""
 "git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
 "checking out of the index."
@@ -12062,70 +12345,70 @@ msgstr ""
 "git checkout: --ours/--theirs, --force och --merge är inkompatibla när\n"
 "du checkar ut från indexet."
 
-#: builtin/checkout.c:1739
+#: builtin/checkout.c:1738
 msgid "you must specify path(s) to restore"
 msgstr "du måste ange katalog(er) att återställa"
 
-#: builtin/checkout.c:1765 builtin/checkout.c:1767 builtin/checkout.c:1816
-#: builtin/checkout.c:1818 builtin/clone.c:122 builtin/remote.c:170
-#: builtin/remote.c:172 builtin/submodule--helper.c:2719 builtin/worktree.c:554
-#: builtin/worktree.c:556
+#: builtin/checkout.c:1764 builtin/checkout.c:1766 builtin/checkout.c:1815
+#: builtin/checkout.c:1817 builtin/clone.c:122 builtin/remote.c:170
+#: builtin/remote.c:172 builtin/submodule--helper.c:2719 builtin/worktree.c:482
+#: builtin/worktree.c:484
 msgid "branch"
 msgstr "gren"
 
-#: builtin/checkout.c:1766
+#: builtin/checkout.c:1765
 msgid "create and checkout a new branch"
 msgstr "skapa och checka ut en ny gren"
 
-#: builtin/checkout.c:1768
+#: builtin/checkout.c:1767
 msgid "create/reset and checkout a branch"
 msgstr "skapa/nollställ och checka ut en gren"
 
-#: builtin/checkout.c:1769
+#: builtin/checkout.c:1768
 msgid "create reflog for new branch"
 msgstr "skapa reflogg för ny gren"
 
-#: builtin/checkout.c:1771
+#: builtin/checkout.c:1770
 msgid "second guess 'git checkout <no-such-branch>' (default)"
 msgstr "förutspå \"git checkout <gren-saknas>\" (förval)"
 
-#: builtin/checkout.c:1772
+#: builtin/checkout.c:1771
 msgid "use overlay mode (default)"
 msgstr "använd överläggsläge (standard)"
 
-#: builtin/checkout.c:1817
+#: builtin/checkout.c:1816
 msgid "create and switch to a new branch"
 msgstr "skapa och växla till en ny gren"
 
-#: builtin/checkout.c:1819
+#: builtin/checkout.c:1818
 msgid "create/reset and switch to a branch"
 msgstr "skapa/nollställ och växla till en gren"
 
-#: builtin/checkout.c:1821
+#: builtin/checkout.c:1820
 msgid "second guess 'git switch <no-such-branch>'"
 msgstr "förutspå \"git checkout <gren-saknas>\""
 
-#: builtin/checkout.c:1823
+#: builtin/checkout.c:1822
 msgid "throw away local modifications"
 msgstr "kasta bort lokala ändringar"
 
-#: builtin/checkout.c:1857
+#: builtin/checkout.c:1856
 msgid "which tree-ish to checkout from"
 msgstr "vilken träd-igt att checka ut från"
 
-#: builtin/checkout.c:1859
+#: builtin/checkout.c:1858
 msgid "restore the index"
 msgstr "återställ indexet"
 
-#: builtin/checkout.c:1861
+#: builtin/checkout.c:1860
 msgid "restore the working tree (default)"
 msgstr "återställ arbetskatalogen (förval)"
 
-#: builtin/checkout.c:1863
+#: builtin/checkout.c:1862
 msgid "ignore unmerged entries"
 msgstr "ignorera ej sammanslagna poster"
 
-#: builtin/checkout.c:1864
+#: builtin/checkout.c:1863
 msgid "use overlay mode"
 msgstr "använd överläggsläge"
 
@@ -12271,8 +12554,8 @@ msgid "remove whole directories"
 msgstr "ta bort hela kataloger"
 
 #: builtin/clean.c:909 builtin/describe.c:565 builtin/describe.c:567
-#: builtin/grep.c:921 builtin/log.c:183 builtin/log.c:185
-#: builtin/ls-files.c:558 builtin/name-rev.c:526 builtin/name-rev.c:528
+#: builtin/grep.c:922 builtin/log.c:184 builtin/log.c:186
+#: builtin/ls-files.c:573 builtin/name-rev.c:526 builtin/name-rev.c:528
 #: builtin/show-ref.c:179
 msgid "pattern"
 msgstr "mönster"
@@ -12368,7 +12651,7 @@ msgid "use --reference only while cloning"
 msgstr "använd --reference endast under kloningen"
 
 #: builtin/clone.c:120 builtin/column.c:27 builtin/init-db.c:563
-#: builtin/merge-file.c:46 builtin/pack-objects.c:3546 builtin/repack.c:358
+#: builtin/merge-file.c:46 builtin/pack-objects.c:3561 builtin/repack.c:357
 msgid "name"
 msgstr "namn"
 
@@ -12384,7 +12667,7 @@ msgstr "checka ut <gren> istället för fjärrens HEAD"
 msgid "path to git-upload-pack on the remote"
 msgstr "sökväg till git-upload-pack på fjärren"
 
-#: builtin/clone.c:126 builtin/fetch.c:173 builtin/grep.c:860
+#: builtin/clone.c:126 builtin/fetch.c:176 builtin/grep.c:861
 #: builtin/pull.c:208
 msgid "depth"
 msgstr "djup"
@@ -12393,7 +12676,7 @@ msgstr "djup"
 msgid "create a shallow clone of that depth"
 msgstr "skapa en grund klon på detta djup"
 
-#: builtin/clone.c:128 builtin/fetch.c:175 builtin/pack-objects.c:3535
+#: builtin/clone.c:128 builtin/fetch.c:178 builtin/pack-objects.c:3550
 #: builtin/pull.c:211
 msgid "time"
 msgstr "tid"
@@ -12402,12 +12685,12 @@ msgstr "tid"
 msgid "create a shallow clone since a specific time"
 msgstr "skapa en grund klon från en angiven tidpunkt"
 
-#: builtin/clone.c:130 builtin/fetch.c:177 builtin/fetch.c:200
-#: builtin/pull.c:214 builtin/pull.c:239 builtin/rebase.c:1317
+#: builtin/clone.c:130 builtin/fetch.c:180 builtin/fetch.c:203
+#: builtin/pull.c:214 builtin/pull.c:239 builtin/rebase.c:1323
 msgid "revision"
 msgstr "revision"
 
-#: builtin/clone.c:131 builtin/fetch.c:178 builtin/pull.c:215
+#: builtin/clone.c:131 builtin/fetch.c:181 builtin/pull.c:215
 msgid "deepen history of shallow clone, excluding rev"
 msgstr "fördjupa historik för grund klon, exkludera revisionen"
 
@@ -12440,24 +12723,24 @@ msgstr "nyckel=värde"
 msgid "set config inside the new repository"
 msgstr "ställ in konfiguration i det nya arkivet"
 
-#: builtin/clone.c:143 builtin/fetch.c:195 builtin/ls-remote.c:76
+#: builtin/clone.c:143 builtin/fetch.c:198 builtin/ls-remote.c:77
 #: builtin/pull.c:230 builtin/push.c:584 builtin/send-pack.c:196
 msgid "server-specific"
 msgstr "serverspecifik"
 
-#: builtin/clone.c:143 builtin/fetch.c:195 builtin/ls-remote.c:76
+#: builtin/clone.c:143 builtin/fetch.c:198 builtin/ls-remote.c:77
 #: builtin/pull.c:231 builtin/push.c:584 builtin/send-pack.c:197
 msgid "option to transmit"
 msgstr ""
 "inget att checka in\n"
 "flagga att sända"
 
-#: builtin/clone.c:144 builtin/fetch.c:196 builtin/pull.c:234
+#: builtin/clone.c:144 builtin/fetch.c:199 builtin/pull.c:234
 #: builtin/push.c:585
 msgid "use IPv4 addresses only"
 msgstr "använd endast IPv4-adresser"
 
-#: builtin/clone.c:146 builtin/fetch.c:198 builtin/pull.c:237
+#: builtin/clone.c:146 builtin/fetch.c:201 builtin/pull.c:237
 #: builtin/push.c:587
 msgid "use IPv6 addresses only"
 msgstr "använd endast IPv6-adresser"
@@ -12558,112 +12841,112 @@ msgstr "kan inte packa om för att städa upp"
 msgid "cannot unlink temporary alternates file"
 msgstr "kunde inte ta bort temporär \"alternates\"-fil"
 
-#: builtin/clone.c:992 builtin/receive-pack.c:2493
+#: builtin/clone.c:993 builtin/receive-pack.c:2493
 msgid "Too many arguments."
 msgstr "För många argument."
 
-#: builtin/clone.c:996
+#: builtin/clone.c:997
 msgid "You must specify a repository to clone."
 msgstr "Du måste ange ett arkiv att klona."
 
-#: builtin/clone.c:1009
+#: builtin/clone.c:1010
 #, c-format
 msgid "--bare and --origin %s options are incompatible."
 msgstr "flaggorna --bare och --origin %s är inkompatibla."
 
-#: builtin/clone.c:1012
+#: builtin/clone.c:1013
 msgid "--bare and --separate-git-dir are incompatible."
 msgstr "flaggorna --bare och --separate-git-dir är inkompatibla."
 
-#: builtin/clone.c:1025
+#: builtin/clone.c:1026
 #, c-format
 msgid "repository '%s' does not exist"
 msgstr "arkivet \"%s\" finns inte"
 
-#: builtin/clone.c:1029 builtin/fetch.c:1841
+#: builtin/clone.c:1030 builtin/fetch.c:1951
 #, c-format
 msgid "depth %s is not a positive number"
 msgstr "djupet %s är inte ett positivt tal"
 
-#: builtin/clone.c:1039
+#: builtin/clone.c:1040
 #, 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:1045
+#: builtin/clone.c:1046
 #, c-format
 msgid "repository path '%s' already exists and is not an empty directory."
 msgstr "arkivsökvägen \"%s\" finns redan och är inte en tom katalog."
 
-#: builtin/clone.c:1059
+#: builtin/clone.c:1060
 #, c-format
 msgid "working tree '%s' already exists."
 msgstr "arbetsträdet \"%s\" finns redan."
 
-#: builtin/clone.c:1074 builtin/clone.c:1095 builtin/difftool.c:271
-#: builtin/log.c:1987 builtin/worktree.c:354 builtin/worktree.c:386
+#: builtin/clone.c:1075 builtin/clone.c:1096 builtin/difftool.c:271
+#: builtin/log.c:1986 builtin/worktree.c:282 builtin/worktree.c:314
 #, c-format
 msgid "could not create leading directories of '%s'"
 msgstr "kunde inte skapa inledande kataloger för \"%s\""
 
-#: builtin/clone.c:1079
+#: builtin/clone.c:1080
 #, c-format
 msgid "could not create work tree dir '%s'"
 msgstr "kunde inte skapa arbetskatalogen \"%s\""
 
-#: builtin/clone.c:1099
+#: builtin/clone.c:1100
 #, c-format
 msgid "Cloning into bare repository '%s'...\n"
 msgstr "Klonar till ett naket arkiv \"%s\"...\n"
 
-#: builtin/clone.c:1101
+#: builtin/clone.c:1102
 #, c-format
 msgid "Cloning into '%s'...\n"
 msgstr "Klonar till \"%s\"...\n"
 
-#: builtin/clone.c:1125
+#: builtin/clone.c:1126
 msgid ""
 "clone --recursive is not compatible with both --reference and --reference-if-"
 "able"
 msgstr ""
 "clone --recursive är inte kompatibel med --reference och --reference-if-able"
 
-#: builtin/clone.c:1169 builtin/remote.c:200 builtin/remote.c:705
+#: builtin/clone.c:1170 builtin/remote.c:200 builtin/remote.c:705
 #, c-format
 msgid "'%s' is not a valid remote name"
 msgstr "\"%s\" är inte ett giltigt namn på fjärrarkiv"
 
-#: builtin/clone.c:1210
+#: builtin/clone.c:1211
 msgid "--depth is ignored in local clones; use file:// instead."
 msgstr "--depth ignoreras i lokala kloningar; använd file:// istället."
 
-#: builtin/clone.c:1212
+#: builtin/clone.c:1213
 msgid "--shallow-since is ignored in local clones; use file:// instead."
 msgstr "--shallow-since ignoreras i lokala kloningar; använd file:// istället."
 
-#: builtin/clone.c:1214
+#: builtin/clone.c:1215
 msgid "--shallow-exclude is ignored in local clones; use file:// instead."
 msgstr ""
 "--shallow-exclude ignoreras i lokala kloningar; använd file:// istället."
 
-#: builtin/clone.c:1216
+#: builtin/clone.c:1217
 msgid "--filter is ignored in local clones; use file:// instead."
 msgstr "--filter ignoreras i lokala kloningar; använd file:// istället."
 
-#: builtin/clone.c:1219
+#: builtin/clone.c:1220
 msgid "source repository is shallow, ignoring --local"
 msgstr "källarkivet är grunt, ignorerar --local"
 
-#: builtin/clone.c:1224
+#: builtin/clone.c:1225
 msgid "--local is ignored"
 msgstr "--local ignoreras"
 
-#: builtin/clone.c:1311 builtin/clone.c:1319
+#: builtin/clone.c:1315 builtin/clone.c:1323
 #, c-format
 msgid "Remote branch %s not found in upstream %s"
 msgstr "Fjärrgrenen %s hittades inte i uppströmsarkivet %s"
 
-#: builtin/clone.c:1322
+#: builtin/clone.c:1326
 msgid "You appear to have cloned an empty repository."
 msgstr "Du verkar ha klonat ett tomt arkiv."
 
@@ -12721,14 +13004,14 @@ msgid "could not find object directory matching %s"
 msgstr "kunde inte hitta objektkatalog för %s"
 
 #: builtin/commit-graph.c:80 builtin/commit-graph.c:210
-#: builtin/commit-graph.c:316 builtin/fetch.c:184 builtin/log.c:1769
+#: builtin/commit-graph.c:316 builtin/fetch.c:187 builtin/log.c:1768
 msgid "dir"
 msgstr "kat"
 
 #: builtin/commit-graph.c:81 builtin/commit-graph.c:211
 #: builtin/commit-graph.c:317
-msgid "The object directory to store the graph"
-msgstr "Objektkatalogen där grafen ska lagras"
+msgid "the object directory to store the graph"
+msgstr "objektkatalogen där grafen ska lagras"
 
 #: builtin/commit-graph.c:83
 msgid "if the commit-graph is split, only verify the tip file"
@@ -12816,7 +13099,7 @@ msgstr ""
 msgid "duplicate parent %s ignored"
 msgstr "duplicerad förälder %s ignorerades"
 
-#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:555
+#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:557
 #, c-format
 msgid "not a valid object name %s"
 msgstr "objektnamnet är inte giltigt: %s"
@@ -12844,9 +13127,9 @@ msgstr "förälder"
 msgid "id of a parent commit object"
 msgstr "id på ett förälderincheckningsobjekt"
 
-#: builtin/commit-tree.c:114 builtin/commit.c:1504 builtin/merge.c:281
-#: builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1470
-#: builtin/tag.c:413
+#: builtin/commit-tree.c:114 builtin/commit.c:1504 builtin/merge.c:282
+#: builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1537
+#: builtin/tag.c:445
 msgid "message"
 msgstr "meddelande"
 
@@ -12858,7 +13141,7 @@ msgstr "incheckningsmeddelande"
 msgid "read commit log message from file"
 msgstr "läs incheckningsloggmeddelande från fil"
 
-#: builtin/commit-tree.c:121 builtin/commit.c:1516 builtin/merge.c:298
+#: builtin/commit-tree.c:121 builtin/commit.c:1516 builtin/merge.c:299
 #: builtin/pull.c:176 builtin/revert.c:118
 msgid "GPG sign commit"
 msgstr "GPG-signera incheckning"
@@ -13012,7 +13295,7 @@ msgstr ""
 msgid "could not lookup commit %s"
 msgstr "kunde inte slå upp incheckningen %s"
 
-#: builtin/commit.c:729 builtin/shortlog.c:425
+#: builtin/commit.c:729 builtin/shortlog.c:413
 #, c-format
 msgid "(reading log message from standard input)\n"
 msgstr "(läser loggmeddelande från standard in)\n"
@@ -13110,7 +13393,7 @@ msgstr "Kan inte läsa indexet"
 msgid "Error building trees"
 msgstr "Fel vid byggande av träd"
 
-#: builtin/commit.c:1011 builtin/tag.c:276
+#: builtin/commit.c:1011 builtin/tag.c:308
 #, c-format
 msgid "Please supply the message using either -m or -F option.\n"
 msgstr "Ange meddelandet en av flaggorna -m eller -F.\n"
@@ -13202,7 +13485,7 @@ msgid "version"
 msgstr "version"
 
 #: builtin/commit.c:1374 builtin/commit.c:1533 builtin/push.c:560
-#: builtin/worktree.c:725
+#: builtin/worktree.c:679
 msgid "machine-readable output"
 msgstr "maskinläsbar utdata"
 
@@ -13216,7 +13499,7 @@ msgstr "terminera poster med NUL"
 
 #: builtin/commit.c:1382 builtin/commit.c:1386 builtin/commit.c:1541
 #: builtin/fast-export.c:1198 builtin/fast-export.c:1201
-#: builtin/fast-export.c:1204 builtin/rebase.c:1406 parse-options.h:336
+#: builtin/fast-export.c:1204 builtin/rebase.c:1412 parse-options.h:336
 msgid "mode"
 msgstr "läge"
 
@@ -13272,7 +13555,7 @@ msgstr "visa diff i mallen för incheckningsmeddelandet"
 msgid "Commit message options"
 msgstr "Alternativ för incheckningsmeddelande"
 
-#: builtin/commit.c:1501 builtin/merge.c:285 builtin/tag.c:415
+#: builtin/commit.c:1501 builtin/merge.c:286 builtin/tag.c:447
 msgid "read message from file"
 msgstr "läs meddelande från fil"
 
@@ -13284,7 +13567,7 @@ msgstr "författare"
 msgid "override author for commit"
 msgstr "överstyr författare för incheckningen"
 
-#: builtin/commit.c:1503 builtin/gc.c:542
+#: builtin/commit.c:1503 builtin/gc.c:550
 msgid "date"
 msgstr "datum"
 
@@ -13293,7 +13576,7 @@ msgid "override date for commit"
 msgstr "överstyr datum för incheckningen"
 
 #: builtin/commit.c:1505 builtin/commit.c:1506 builtin/commit.c:1507
-#: builtin/commit.c:1508 parse-options.h:328 ref-filter.h:87
+#: builtin/commit.c:1508 parse-options.h:328 ref-filter.h:90
 msgid "commit"
 msgstr "incheckning"
 
@@ -13320,7 +13603,7 @@ msgstr ""
 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:1510 builtin/log.c:1744 builtin/merge.c:301
+#: builtin/commit.c:1510 builtin/log.c:1743 builtin/merge.c:302
 #: builtin/pull.c:145 builtin/revert.c:110
 msgid "add a Signed-off-by trailer"
 msgstr "lägg till Signed-off-by-släprad"
@@ -13956,41 +14239,41 @@ msgstr "--stdin och --merge-base är ömsesidigt uteslutande"
 msgid "--merge-base only works with two commits"
 msgstr "--merge-base fungerar endast med två incheckningar"
 
-#: builtin/diff.c:91
+#: builtin/diff.c:92
 #, c-format
 msgid "'%s': not a regular file or symlink"
 msgstr "\"%s\": inte en normal fil eller symbolisk länk"
 
-#: builtin/diff.c:258
+#: builtin/diff.c:259
 #, c-format
 msgid "invalid option: %s"
 msgstr "ogiltig flagga: %s"
 
-#: builtin/diff.c:375
+#: builtin/diff.c:376
 #, c-format
 msgid "%s...%s: no merge base"
 msgstr "%s...%s: ingen sammanslagningsbas"
 
-#: builtin/diff.c:485
+#: builtin/diff.c:486
 msgid "Not a git repository"
 msgstr "Inte ett git-arkiv"
 
-#: builtin/diff.c:530 builtin/grep.c:681
+#: builtin/diff.c:532 builtin/grep.c:682
 #, c-format
 msgid "invalid object '%s' given."
 msgstr "objektet \"%s\" som angavs är felaktigt."
 
-#: builtin/diff.c:541
+#: builtin/diff.c:543
 #, c-format
 msgid "more than two blobs given: '%s'"
 msgstr "mer än två blobbar angavs: \"%s\""
 
-#: builtin/diff.c:546
+#: builtin/diff.c:548
 #, c-format
 msgid "unhandled object '%s' given."
 msgstr "ej hanterat objekt \"%s\" angavs."
 
-#: builtin/diff.c:580
+#: builtin/diff.c:582
 #, c-format
 msgid "%s...%s: multiple merge bases, using %s"
 msgstr "%s...%s: flera sammanslagningsbaser, använder %s"
@@ -14171,40 +14454,40 @@ msgid "select handling of commit messages in an alternate encoding"
 msgstr "välj hantering av incheckningsmeddelanden i alternativ teckenkodning"
 
 #: builtin/fast-export.c:1208
-msgid "Dump marks to this file"
-msgstr "Dumpa märken till filen"
+msgid "dump marks to this file"
+msgstr "dumpa märken till filen"
 
 #: builtin/fast-export.c:1210
-msgid "Import marks from this file"
-msgstr "Importera märken från filen"
+msgid "import marks from this file"
+msgstr "importera märken från filen"
 
 #: builtin/fast-export.c:1214
-msgid "Import marks from this file if it exists"
-msgstr "Importera märken från filen, om den finns"
+msgid "import marks from this file if it exists"
+msgstr "importera märken från filen, om den finns"
 
 #: builtin/fast-export.c:1216
-msgid "Fake a tagger when tags lack one"
-msgstr "Fejka taggare när taggen saknar en"
+msgid "fake a tagger when tags lack one"
+msgstr "fejka taggare när taggen saknar en"
 
 #: builtin/fast-export.c:1218
-msgid "Output full tree for each commit"
-msgstr "Skriv ut hela trädet för varje incheckning"
+msgid "output full tree for each commit"
+msgstr "skriv ut hela trädet för varje incheckning"
 
 #: builtin/fast-export.c:1220
-msgid "Use the done feature to terminate the stream"
-msgstr "Använd done-funktionen för att avsluta strömmen"
+msgid "use the done feature to terminate the stream"
+msgstr "använd done-funktionen för att avsluta strömmen"
 
 #: builtin/fast-export.c:1221
-msgid "Skip output of blob data"
-msgstr "Hoppa över skrivning av blob-data"
+msgid "skip output of blob data"
+msgstr "hoppa över skrivning av blob-data"
 
-#: builtin/fast-export.c:1222 builtin/log.c:1816
+#: builtin/fast-export.c:1222 builtin/log.c:1815
 msgid "refspec"
 msgstr "referensspecifikation"
 
 #: builtin/fast-export.c:1223
-msgid "Apply refspec to exported refs"
-msgstr "Applicera referensspecifikation på exporterade referenser"
+msgid "apply refspec to exported refs"
+msgstr "applicera referensspecifikation på exporterade referenser"
 
 #: builtin/fast-export.c:1224
 msgid "anonymize output"
@@ -14219,16 +14502,16 @@ msgid "convert <from> to <to> in anonymized output"
 msgstr "konvertera <från> till <till> i anonymiserad utdata"
 
 #: builtin/fast-export.c:1229
-msgid "Reference parents which are not in fast-export stream by object id"
-msgstr "Referera föräldrar som inte finns i fast-export-ström med objekt-id"
+msgid "reference parents which are not in fast-export stream by object id"
+msgstr "referera föräldrar som inte finns i fast-export-ström med objekt-id"
 
 #: builtin/fast-export.c:1231
-msgid "Show original object ids of blobs/commits"
-msgstr "Visa ursprungliga objekt-id för blobbar/incheckningar"
+msgid "show original object ids of blobs/commits"
+msgstr "visa ursprungliga objekt-id för blobbar/incheckningar"
 
 #: builtin/fast-export.c:1233
-msgid "Label tags with mark ids"
-msgstr "Märk taggar med märke-id"
+msgid "label tags with mark ids"
+msgstr "märk taggar med märke-id"
 
 #: builtin/fast-export.c:1256
 msgid "--anonymize-map without --anonymize does not make sense"
@@ -14267,7 +14550,7 @@ msgstr "Förvändae formatet namn:filnamn för undermodul-omskrivningsflaggan"
 msgid "feature '%s' forbidden in input without --allow-unsafe-features"
 msgstr "funktionen \"%s\" förbjuden i indata utan --allow-unsafe-features"
 
-#: builtin/fetch-pack.c:241
+#: builtin/fetch-pack.c:242
 #, c-format
 msgid "Lockfile created but not reported: %s"
 msgstr "Låsfil skapad men inte rapporterad: %s"
@@ -14288,93 +14571,97 @@ msgstr "git fetch --multiple [<flaggor>] [(<arkiv> | <grupp>)...]"
 msgid "git fetch --all [<options>]"
 msgstr "git fetch --all [<flaggor>]"
 
-#: builtin/fetch.c:119
+#: builtin/fetch.c:120
 msgid "fetch.parallel cannot be negative"
 msgstr "fetch.parallel kan inte vara negativt"
 
-#: builtin/fetch.c:142 builtin/pull.c:185
+#: builtin/fetch.c:143 builtin/pull.c:185
 msgid "fetch from all remotes"
 msgstr "hämta från alla fjärrar"
 
-#: builtin/fetch.c:144 builtin/pull.c:245
+#: builtin/fetch.c:145 builtin/pull.c:245
 msgid "set upstream for git pull/fetch"
 msgstr "ställ in uppström för git pull/fetch"
 
-#: builtin/fetch.c:146 builtin/pull.c:188
+#: builtin/fetch.c:147 builtin/pull.c:188
 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:148 builtin/pull.c:191
+#: builtin/fetch.c:149
+msgid "use atomic transaction to update references"
+msgstr "använd atomiska transaktioner för att uppdatera referenser"
+
+#: builtin/fetch.c:151 builtin/pull.c:191
 msgid "path to upload pack on remote end"
 msgstr "sökväg till upload pack på fjärren"
 
-#: builtin/fetch.c:149
+#: builtin/fetch.c:152
 msgid "force overwrite of local reference"
 msgstr "tvinga överskrivning av lokal referens"
 
-#: builtin/fetch.c:151
+#: builtin/fetch.c:154
 msgid "fetch from multiple remotes"
 msgstr "hämta från flera fjärrar"
 
-#: builtin/fetch.c:153 builtin/pull.c:195
+#: builtin/fetch.c:156 builtin/pull.c:195
 msgid "fetch all tags and associated objects"
 msgstr "hämta alla taggar och associerade objekt"
 
-#: builtin/fetch.c:155
+#: builtin/fetch.c:158
 msgid "do not fetch all tags (--no-tags)"
 msgstr "hämta inte alla taggar (--no-tags)"
 
-#: builtin/fetch.c:157
+#: builtin/fetch.c:160
 msgid "number of submodules fetched in parallel"
 msgstr "antal undermoduler som hämtas parallellt"
 
-#: builtin/fetch.c:159 builtin/pull.c:198
+#: builtin/fetch.c:162 builtin/pull.c:198
 msgid "prune remote-tracking branches no longer on remote"
 msgstr "rensa fjärrspårande grenar ej längre på fjärren"
 
-#: builtin/fetch.c:161
+#: builtin/fetch.c:164
 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:162 builtin/fetch.c:187 builtin/pull.c:122
+#: builtin/fetch.c:165 builtin/fetch.c:190 builtin/pull.c:122
 msgid "on-demand"
 msgstr "on-demand"
 
-#: builtin/fetch.c:163
+#: builtin/fetch.c:166
 msgid "control recursive fetching of submodules"
 msgstr "styr rekursiv hämtning av undermoduler"
 
-#: builtin/fetch.c:168
+#: builtin/fetch.c:171
 msgid "write fetched references to the FETCH_HEAD file"
 msgstr "skriv hämtade referenser till FETCH_HEAD-filen"
 
-#: builtin/fetch.c:169 builtin/pull.c:206
+#: builtin/fetch.c:172 builtin/pull.c:206
 msgid "keep downloaded pack"
 msgstr "behåll hämtade paket"
 
-#: builtin/fetch.c:171
+#: builtin/fetch.c:174
 msgid "allow updating of HEAD ref"
 msgstr "tillåt uppdatering av HEAD-referens"
 
-#: builtin/fetch.c:174 builtin/fetch.c:180 builtin/pull.c:209
+#: builtin/fetch.c:177 builtin/fetch.c:183 builtin/pull.c:209
 #: builtin/pull.c:218
 msgid "deepen history of shallow clone"
 msgstr "fördjupa historik för grund klon"
 
-#: builtin/fetch.c:176 builtin/pull.c:212
+#: builtin/fetch.c:179 builtin/pull.c:212
 msgid "deepen history of shallow repository based on time"
 msgstr "fördjupa historik för grund klon baserad på tid"
 
-#: builtin/fetch.c:182 builtin/pull.c:221
+#: builtin/fetch.c:185 builtin/pull.c:221
 msgid "convert to a complete repository"
 msgstr "konvertera till komplett arkiv"
 
-#: builtin/fetch.c:185
+#: builtin/fetch.c:188
 msgid "prepend this to submodule path output"
 msgstr "lägg till i början av undermodulens sökvägsutdata"
 
-#: builtin/fetch.c:188
+#: builtin/fetch.c:191
 msgid ""
 "default for recursive fetching of submodules (lower priority than config "
 "files)"
@@ -14382,98 +14669,98 @@ msgstr ""
 "standard för rekursiv hämtning av undermoduler (lägre prioritet än "
 "konfigurationsfiler)"
 
-#: builtin/fetch.c:192 builtin/pull.c:224
+#: builtin/fetch.c:195 builtin/pull.c:224
 msgid "accept refs that update .git/shallow"
 msgstr "tar emot referenser som uppdaterar .git/shallow"
 
-#: builtin/fetch.c:193 builtin/pull.c:226
+#: builtin/fetch.c:196 builtin/pull.c:226
 msgid "refmap"
 msgstr "referenskarta"
 
-#: builtin/fetch.c:194 builtin/pull.c:227
+#: builtin/fetch.c:197 builtin/pull.c:227
 msgid "specify fetch refmap"
 msgstr "ange referenskarta för \"fetch\""
 
-#: builtin/fetch.c:201 builtin/pull.c:240
+#: builtin/fetch.c:204 builtin/pull.c:240
 msgid "report that we have only objects reachable from this object"
 msgstr "rapportera att vi bara har objekt nåbara från detta objektet"
 
-#: builtin/fetch.c:204 builtin/fetch.c:206
+#: builtin/fetch.c:207 builtin/fetch.c:209
 msgid "run 'maintenance --auto' after fetching"
 msgstr "kör \"maintenance --auto\" efter hämtning"
 
-#: builtin/fetch.c:208 builtin/pull.c:243
+#: builtin/fetch.c:211 builtin/pull.c:243
 msgid "check for forced-updates on all updated branches"
 msgstr "se efter tvingade uppdateringar i alla uppdaterade grenar"
 
-#: builtin/fetch.c:210
+#: builtin/fetch.c:213
 msgid "write the commit-graph after fetching"
 msgstr "skriv incheckingsgrafen efter hämtning"
 
-#: builtin/fetch.c:212
+#: builtin/fetch.c:215
 msgid "accept refspecs from stdin"
 msgstr "ta emot referenser från standard in"
 
-#: builtin/fetch.c:523
+#: builtin/fetch.c:526
 msgid "Couldn't find remote ref HEAD"
 msgstr "Kunde inte hitta fjärr-referensen HEAD"
 
-#: builtin/fetch.c:677
+#: builtin/fetch.c:697
 #, 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:775
+#: builtin/fetch.c:796
 #, c-format
 msgid "object %s not found"
 msgstr "objektet %s hittades inte"
 
-#: builtin/fetch.c:779
+#: builtin/fetch.c:800
 msgid "[up to date]"
 msgstr "[àjour]"
 
-#: builtin/fetch.c:792 builtin/fetch.c:808 builtin/fetch.c:880
+#: builtin/fetch.c:813 builtin/fetch.c:829 builtin/fetch.c:901
 msgid "[rejected]"
 msgstr "[refuserad]"
 
-#: builtin/fetch.c:793
+#: builtin/fetch.c:814
 msgid "can't fetch in current branch"
 msgstr "kan inte hämta i aktuell gren"
 
-#: builtin/fetch.c:803
+#: builtin/fetch.c:824
 msgid "[tag update]"
 msgstr "[uppdaterad tagg]"
 
-#: builtin/fetch.c:804 builtin/fetch.c:841 builtin/fetch.c:863
-#: builtin/fetch.c:875
+#: builtin/fetch.c:825 builtin/fetch.c:862 builtin/fetch.c:884
+#: builtin/fetch.c:896
 msgid "unable to update local ref"
 msgstr "kunde inte uppdatera lokal ref"
 
-#: builtin/fetch.c:808
+#: builtin/fetch.c:829
 msgid "would clobber existing tag"
 msgstr "skulle skriva över befintlig tagg"
 
-#: builtin/fetch.c:830
+#: builtin/fetch.c:851
 msgid "[new tag]"
 msgstr "[ny tagg]"
 
-#: builtin/fetch.c:833
+#: builtin/fetch.c:854
 msgid "[new branch]"
 msgstr "[ny gren]"
 
-#: builtin/fetch.c:836
+#: builtin/fetch.c:857
 msgid "[new ref]"
 msgstr "[ny ref]"
 
-#: builtin/fetch.c:875
+#: builtin/fetch.c:896
 msgid "forced update"
 msgstr "tvingad uppdatering"
 
-#: builtin/fetch.c:880
+#: builtin/fetch.c:901
 msgid "non-fast-forward"
 msgstr "ej snabbspolad"
 
-#: builtin/fetch.c:901
+#: builtin/fetch.c:1005
 msgid ""
 "Fetch normally indicates which branches had a forced update,\n"
 "but that check has been disabled. To re-enable, use '--show-forced-updates'\n"
@@ -14484,7 +14771,7 @@ msgstr ""
 "av. För att slå på igen, använd flaggan \"--show-forced-updates\" eller kör\n"
 "\"git config fetch.showForcedUpdates true\"."
 
-#: builtin/fetch.c:905
+#: builtin/fetch.c:1009
 #, c-format
 msgid ""
 "It took %.2f seconds to check forced updates. You can use\n"
@@ -14497,22 +14784,22 @@ msgstr ""
 "showForcedUpdates\n"
 "false\" för att undvika testet.\n"
 
-#: builtin/fetch.c:939
+#: builtin/fetch.c:1041
 #, 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:960
+#: builtin/fetch.c:1069
 #, 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:1053 builtin/fetch.c:1191
+#: builtin/fetch.c:1146 builtin/fetch.c:1297
 #, c-format
 msgid "From %.*s\n"
 msgstr "Från %.*s\n"
 
-#: builtin/fetch.c:1064
+#: builtin/fetch.c:1168
 #, c-format
 msgid ""
 "some local refs could not be updated; try running\n"
@@ -14521,56 +14808,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:1161
+#: builtin/fetch.c:1267
 #, c-format
 msgid "   (%s will become dangling)"
 msgstr "   (%s kommer bli dinglande)"
 
-#: builtin/fetch.c:1162
+#: builtin/fetch.c:1268
 #, c-format
 msgid "   (%s has become dangling)"
 msgstr "   (%s har blivit dinglande)"
 
-#: builtin/fetch.c:1194
+#: builtin/fetch.c:1300
 msgid "[deleted]"
 msgstr "[borttagen]"
 
-#: builtin/fetch.c:1195 builtin/remote.c:1118
+#: builtin/fetch.c:1301 builtin/remote.c:1118
 msgid "(none)"
 msgstr "(ingen)"
 
-#: builtin/fetch.c:1218
+#: builtin/fetch.c:1324
 #, 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:1237
+#: builtin/fetch.c:1343
 #, 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:1240
+#: builtin/fetch.c:1346
 #, c-format
 msgid "Option \"%s\" is ignored for %s\n"
 msgstr "Flaggan \"%s\" ignoreras för %s\n"
 
-#: builtin/fetch.c:1448
+#: builtin/fetch.c:1558
 msgid "multiple branches detected, incompatible with --set-upstream"
 msgstr "flera grenar upptäcktes, inkompatibelt med --set-upstream"
 
-#: builtin/fetch.c:1463
+#: builtin/fetch.c:1573
 msgid "not setting upstream for a remote remote-tracking branch"
 msgstr "ställer inte in uppströmsgren för en fjärrspårande gren på fjärren"
 
-#: builtin/fetch.c:1465
+#: builtin/fetch.c:1575
 msgid "not setting upstream for a remote tag"
 msgstr "ställer inte in uppström för en fjärrtag"
 
-#: builtin/fetch.c:1467
+#: builtin/fetch.c:1577
 msgid "unknown branch type"
 msgstr "okänd grentyp"
 
-#: builtin/fetch.c:1469
+#: builtin/fetch.c:1579
 msgid ""
 "no source branch found.\n"
 "you need to specify exactly one branch with the --set-upstream option."
@@ -14578,22 +14865,22 @@ msgstr ""
 "hittade ingen källgren.\n"
 "du måste ange exakt en gren med flaggan --set-upstream."
 
-#: builtin/fetch.c:1598 builtin/fetch.c:1661
+#: builtin/fetch.c:1708 builtin/fetch.c:1771
 #, c-format
 msgid "Fetching %s\n"
 msgstr "Hämtar %s\n"
 
-#: builtin/fetch.c:1608 builtin/fetch.c:1663 builtin/remote.c:101
+#: builtin/fetch.c:1718 builtin/fetch.c:1773 builtin/remote.c:101
 #, c-format
 msgid "Could not fetch %s"
 msgstr "Kunde inte hämta %s"
 
-#: builtin/fetch.c:1620
+#: builtin/fetch.c:1730
 #, c-format
 msgid "could not fetch '%s' (exit code: %d)\n"
 msgstr "kunde inte hämta \"%s\" (felkod: %d)\n"
 
-#: builtin/fetch.c:1724
+#: builtin/fetch.c:1834
 msgid ""
 "No remote repository specified.  Please, specify either a URL or a\n"
 "remote name from which new revisions should be fetched."
@@ -14601,44 +14888,44 @@ msgstr ""
 "Inget fjärrarkiv angavs. Ange antingen en URL eller namnet på ett\n"
 "fjärrarkiv som nya incheckningar ska hämtas från."
 
-#: builtin/fetch.c:1760
+#: builtin/fetch.c:1870
 msgid "You need to specify a tag name."
 msgstr "Du måste ange namnet på en tagg."
 
-#: builtin/fetch.c:1825
+#: builtin/fetch.c:1935
 msgid "Negative depth in --deepen is not supported"
 msgstr "Negativa djup stöds inte i --deepen"
 
-#: builtin/fetch.c:1827
+#: builtin/fetch.c:1937
 msgid "--deepen and --depth are mutually exclusive"
 msgstr "--deepen och --depth är ömsesidigt uteslutande"
 
-#: builtin/fetch.c:1832
+#: builtin/fetch.c:1942
 msgid "--depth and --unshallow cannot be used together"
 msgstr "--depth och --unshallow kan inte användas samtidigt"
 
-#: builtin/fetch.c:1834
+#: builtin/fetch.c:1944
 msgid "--unshallow on a complete repository does not make sense"
 msgstr "--unshallow kan inte användas på ett komplett arkiv"
 
-#: builtin/fetch.c:1851
+#: builtin/fetch.c:1961
 msgid "fetch --all does not take a repository argument"
 msgstr "fetch --all tar inte namnet på ett arkiv som argument"
 
-#: builtin/fetch.c:1853
+#: builtin/fetch.c:1963
 msgid "fetch --all does not make sense with refspecs"
 msgstr "fetch --all kan inte anges med referensspecifikationer"
 
-#: builtin/fetch.c:1862
+#: builtin/fetch.c:1972
 #, c-format
 msgid "No such remote or remote group: %s"
 msgstr "Fjärren eller fjärrgruppen finns inte: %s"
 
-#: builtin/fetch.c:1869
+#: builtin/fetch.c:1979
 msgid "Fetching a group and specifying refspecs does not make sense"
 msgstr "Kan inte hämta från grupp och ange referensspecifikationer"
 
-#: builtin/fetch.c:1887
+#: builtin/fetch.c:1997
 msgid ""
 "--filter can only be used with the remote configured in extensions."
 "partialclone"
@@ -14646,9 +14933,13 @@ msgstr ""
 "--filter kan endast användas med fjärren konfigurerad i extensions."
 "partialclone"
 
-#: builtin/fetch.c:1891
+#: builtin/fetch.c:2001
+msgid "--atomic can only be used when fetching from one remote"
+msgstr "--atomic kan bara användas vid hämtning från en fjärr"
+
+#: builtin/fetch.c:2005
 msgid "--stdin can only be used when fetching from one remote"
-msgstr "--stdin kan bara användas för att hämta från en fjärr"
+msgstr "--stdin kan bara användas vid hämtning fårn en fjärr"
 
 #: builtin/fmt-merge-msg.c:7
 msgid ""
@@ -14714,7 +15005,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:440
+#: builtin/for-each-ref.c:39 builtin/tag.c:472
 msgid "respect format colors"
 msgstr "använd formatfärger"
 
@@ -14754,32 +15045,32 @@ msgstr "konfigurationsnyckel som innehåller en lista över arkivsökvägar"
 msgid "missing --config=<config>"
 msgstr "saknar --config=<konfig>"
 
-#: builtin/fsck.c:69 builtin/fsck.c:148 builtin/fsck.c:149
+#: builtin/fsck.c:69 builtin/fsck.c:130 builtin/fsck.c:131
 msgid "unknown"
 msgstr "okänd"
 
 #. TRANSLATORS: e.g. error in tree 01bfda: <more explanation>
-#: builtin/fsck.c:101 builtin/fsck.c:121
+#: builtin/fsck.c:83 builtin/fsck.c:103
 #, c-format
 msgid "error in %s %s: %s"
 msgstr "fel i %s %s: %s"
 
 #. TRANSLATORS: e.g. warning in tree 01bfda: <more explanation>
-#: builtin/fsck.c:115
+#: builtin/fsck.c:97
 #, c-format
 msgid "warning in %s %s: %s"
 msgstr "varning i %s %s: %s"
 
-#: builtin/fsck.c:144 builtin/fsck.c:147
+#: builtin/fsck.c:126 builtin/fsck.c:129
 #, c-format
 msgid "broken link from %7s %s"
 msgstr "trasig länk från %7s %s"
 
-#: builtin/fsck.c:156
+#: builtin/fsck.c:138
 msgid "wrong object type in link"
 msgstr "fel objekttyp i länk"
 
-#: builtin/fsck.c:172
+#: builtin/fsck.c:154
 #, c-format
 msgid ""
 "broken link from %7s %s\n"
@@ -14788,215 +15079,215 @@ msgstr ""
 "trasig länk från %7s %s\n"
 "            till %7s %s"
 
-#: builtin/fsck.c:283
+#: builtin/fsck.c:265
 #, c-format
 msgid "missing %s %s"
 msgstr "saknat %s %s"
 
-#: builtin/fsck.c:310
+#: builtin/fsck.c:292
 #, c-format
 msgid "unreachable %s %s"
 msgstr "onåbart %s %s"
 
-#: builtin/fsck.c:330
+#: builtin/fsck.c:312
 #, c-format
 msgid "dangling %s %s"
 msgstr "hängande %s %s"
 
-#: builtin/fsck.c:340
+#: builtin/fsck.c:322
 msgid "could not create lost-found"
 msgstr "kunde inte skapa lost-found"
 
-#: builtin/fsck.c:351
+#: builtin/fsck.c:333
 #, c-format
 msgid "could not finish '%s'"
 msgstr "kunde inte avsluta \"%s\""
 
-#: builtin/fsck.c:368
+#: builtin/fsck.c:350
 #, c-format
 msgid "Checking %s"
 msgstr "Kontrollerar %s"
 
 # Vague original, not networking-related, but rather related to the actual
 # objects in the database.
-#: builtin/fsck.c:406
+#: builtin/fsck.c:388
 #, c-format
 msgid "Checking connectivity (%d objects)"
 msgstr "Kontrollerar konnektivitet (%d objekt)"
 
-#: builtin/fsck.c:425
+#: builtin/fsck.c:407
 #, c-format
 msgid "Checking %s %s"
 msgstr "Kontrollerar %s %s"
 
-#: builtin/fsck.c:430
+#: builtin/fsck.c:412
 msgid "broken links"
 msgstr "trasiga länkar"
 
-#: builtin/fsck.c:439
+#: builtin/fsck.c:421
 #, c-format
 msgid "root %s"
 msgstr "roten %s"
 
-#: builtin/fsck.c:447
+#: builtin/fsck.c:429
 #, c-format
 msgid "tagged %s %s (%s) in %s"
 msgstr "taggad %s %s (%s) i %s"
 
-#: builtin/fsck.c:476
+#: builtin/fsck.c:458
 #, c-format
 msgid "%s: object corrupt or missing"
 msgstr "%s: objekt trasigt eller saknas"
 
-#: builtin/fsck.c:501
+#: builtin/fsck.c:483
 #, c-format
 msgid "%s: invalid reflog entry %s"
 msgstr "%s: ogiltig reflog-post %s"
 
-#: builtin/fsck.c:515
+#: builtin/fsck.c:497
 #, c-format
 msgid "Checking reflog %s->%s"
 msgstr "Kontrollerar reflog %s->%s"
 
-#: builtin/fsck.c:549
+#: builtin/fsck.c:531
 #, c-format
 msgid "%s: invalid sha1 pointer %s"
 msgstr "%s: ogiltig sha1-pekare %s"
 
-#: builtin/fsck.c:556
+#: builtin/fsck.c:538
 #, c-format
 msgid "%s: not a commit"
 msgstr "%s: inte en incheckning!"
 
-#: builtin/fsck.c:610
+#: builtin/fsck.c:592
 msgid "notice: No default references"
 msgstr "obs: Inga förvalda referenser"
 
-#: builtin/fsck.c:625
+#: builtin/fsck.c:607
 #, c-format
 msgid "%s: object corrupt or missing: %s"
 msgstr "%s: objektet trasigt eller saknas: %s"
 
-#: builtin/fsck.c:638
+#: builtin/fsck.c:620
 #, c-format
 msgid "%s: object could not be parsed: %s"
 msgstr "%s: objektet kunde inte tolkas: %s"
 
-#: builtin/fsck.c:658
+#: builtin/fsck.c:640
 #, c-format
 msgid "bad sha1 file: %s"
 msgstr "ogiltig sha1-fil: %s"
 
-#: builtin/fsck.c:673
+#: builtin/fsck.c:655
 msgid "Checking object directory"
 msgstr "Kontrollerar objektkatalog"
 
-#: builtin/fsck.c:676
+#: builtin/fsck.c:658
 msgid "Checking object directories"
 msgstr "Kontrollerar objektkataloger"
 
-#: builtin/fsck.c:691
+#: builtin/fsck.c:673
 #, c-format
 msgid "Checking %s link"
 msgstr "Kontrollerar %s-länk"
 
-#: builtin/fsck.c:696 builtin/index-pack.c:865
+#: builtin/fsck.c:678 builtin/index-pack.c:865
 #, c-format
 msgid "invalid %s"
 msgstr "ogiltigt %s"
 
-#: builtin/fsck.c:703
+#: builtin/fsck.c:685
 #, c-format
 msgid "%s points to something strange (%s)"
 msgstr "%s pekar på något konstigt (%s)"
 
-#: builtin/fsck.c:709
+#: builtin/fsck.c:691
 #, c-format
 msgid "%s: detached HEAD points at nothing"
 msgstr "%s: frånkopplat HEAD pekar på ingenting"
 
-#: builtin/fsck.c:713
+#: builtin/fsck.c:695
 #, c-format
 msgid "notice: %s points to an unborn branch (%s)"
 msgstr "obs: %s pekar på en ofödd gren (%s)"
 
-#: builtin/fsck.c:725
+#: builtin/fsck.c:707
 msgid "Checking cache tree"
 msgstr "Kontrollerar cacheträd"
 
-#: builtin/fsck.c:730
+#: builtin/fsck.c:712
 #, c-format
 msgid "%s: invalid sha1 pointer in cache-tree"
 msgstr "%s: ogiltig sha1-pekare i cacheträd"
 
-#: builtin/fsck.c:739
+#: builtin/fsck.c:721
 msgid "non-tree in cache-tree"
 msgstr "icke-träd i cacheträd"
 
-#: builtin/fsck.c:770
+#: builtin/fsck.c:752
 msgid "git fsck [<options>] [<object>...]"
 msgstr "git fsck [<flaggor>] [<objekt>...]"
 
-#: builtin/fsck.c:776
+#: builtin/fsck.c:758
 msgid "show unreachable objects"
 msgstr "visa onåbara objekt"
 
-#: builtin/fsck.c:777
+#: builtin/fsck.c:759
 msgid "show dangling objects"
 msgstr "visa dinglande objekt"
 
-#: builtin/fsck.c:778
+#: builtin/fsck.c:760
 msgid "report tags"
 msgstr "rapportera taggar"
 
-#: builtin/fsck.c:779
+#: builtin/fsck.c:761
 msgid "report root nodes"
 msgstr "rapportera rotnoder"
 
-#: builtin/fsck.c:780
+#: builtin/fsck.c:762
 msgid "make index objects head nodes"
 msgstr "gör indexojekt till huvudnoder"
 
-#: builtin/fsck.c:781
+#: builtin/fsck.c:763
 msgid "make reflogs head nodes (default)"
 msgstr "gör refloggar till huvudnoder (standard)"
 
-#: builtin/fsck.c:782
+#: builtin/fsck.c:764
 msgid "also consider packs and alternate objects"
 msgstr "ta även hänsyn till paket och supplerande objekt"
 
 # Vague original, not networking-related, but rather related to the actual
 # objects in the database.
-#: builtin/fsck.c:783
+#: builtin/fsck.c:765
 msgid "check only connectivity"
 msgstr "kontrollera endast konnektivitet"
 
-#: builtin/fsck.c:784
+#: builtin/fsck.c:766 builtin/mktag.c:78
 msgid "enable more strict checking"
 msgstr "aktivera striktare kontroll"
 
-#: builtin/fsck.c:786
+#: builtin/fsck.c:768
 msgid "write dangling objects in .git/lost-found"
 msgstr "skriv dinglande objekt i .git/lost-found"
 
-#: builtin/fsck.c:787 builtin/prune.c:134
+#: builtin/fsck.c:769 builtin/prune.c:134
 msgid "show progress"
 msgstr "visa förlopp"
 
-#: builtin/fsck.c:788
+#: builtin/fsck.c:770
 msgid "show verbose names for reachable objects"
 msgstr "visa ordrika namn för nåbara objekt"
 
-#: builtin/fsck.c:847 builtin/index-pack.c:261
+#: builtin/fsck.c:829 builtin/index-pack.c:261
 msgid "Checking objects"
 msgstr "Kontrollerar objekt"
 
-#: builtin/fsck.c:875
+#: builtin/fsck.c:857
 #, c-format
 msgid "%s: object missing"
 msgstr "%s: objekt saknas"
 
-#: builtin/fsck.c:886
+#: builtin/fsck.c:868
 #, c-format
 msgid "invalid parameter: expected sha1, got '%s'"
 msgstr "ogiltig parameter: förväntade sha1, fick \"%s\""
@@ -15005,27 +15296,27 @@ msgstr "ogiltig parameter: förväntade sha1, fick \"%s\""
 msgid "git gc [<options>]"
 msgstr "git gc [<flaggor>]"
 
-#: builtin/gc.c:94
+#: builtin/gc.c:93
 #, c-format
 msgid "Failed to fstat %s: %s"
 msgstr "Misslyckades ta status (fstat) på %s: %s"
 
-#: builtin/gc.c:130
+#: builtin/gc.c:129
 #, c-format
 msgid "failed to parse '%s' value '%s'"
 msgstr "misslyckades tolka \"%s\" värde \"%s\""
 
-#: builtin/gc.c:479 builtin/init-db.c:58
+#: builtin/gc.c:487 builtin/init-db.c:58
 #, c-format
 msgid "cannot stat '%s'"
 msgstr "kan inte ta status på \"%s\""
 
-#: builtin/gc.c:488 builtin/notes.c:240 builtin/tag.c:530
+#: builtin/gc.c:496 builtin/notes.c:240 builtin/tag.c:562
 #, c-format
 msgid "cannot read '%s'"
 msgstr "kunde inte läsa \"%s\""
 
-#: builtin/gc.c:495
+#: builtin/gc.c:503
 #, c-format
 msgid ""
 "The last gc run reported the following. Please correct the root cause\n"
@@ -15040,52 +15331,52 @@ msgstr ""
 "\n"
 "%s"
 
-#: builtin/gc.c:543
+#: builtin/gc.c:551
 msgid "prune unreferenced objects"
 msgstr "rensa ej refererade objekt"
 
-#: builtin/gc.c:545
+#: builtin/gc.c:553
 msgid "be more thorough (increased runtime)"
 msgstr "var mer grundlig (ökar körtiden)"
 
-#: builtin/gc.c:546
+#: builtin/gc.c:554
 msgid "enable auto-gc mode"
 msgstr "aktivera auto-gc-läge"
 
-#: builtin/gc.c:549
+#: builtin/gc.c:557
 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:552
+#: builtin/gc.c:560
 msgid "repack all other packs except the largest pack"
 msgstr "packa om alla paket förutom det största paketet"
 
-#: builtin/gc.c:569
+#: builtin/gc.c:576
 #, c-format
 msgid "failed to parse gc.logexpiry value %s"
 msgstr "kunde inte tolka värdet %s för gc.logexpiry"
 
-#: builtin/gc.c:580
+#: builtin/gc.c:587
 #, c-format
 msgid "failed to parse prune expiry value %s"
 msgstr "kunde inte tolka värdet %s för prune expiry"
 
-#: builtin/gc.c:600
+#: builtin/gc.c:607
 #, 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:602
+#: builtin/gc.c:609
 #, c-format
 msgid "Auto packing the repository for optimum performance.\n"
 msgstr "Packar arkivet automatiskt för optimal prestanda.\n"
 
-#: builtin/gc.c:603
+#: builtin/gc.c:610
 #, 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:643
+#: builtin/gc.c:650
 #, c-format
 msgid ""
 "gc is already running on machine '%s' pid %<PRIuMAX> (use --force if not)"
@@ -15093,145 +15384,172 @@ msgstr ""
 "gc körs redan på maskinen \"%s\" pid %<PRIuMAX> (använd --force om så inte "
 "är fallet)"
 
-#: builtin/gc.c:698
+#: builtin/gc.c:705
 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/gc.c:708
+#: builtin/gc.c:715
 msgid ""
 "git maintenance run [--auto] [--[no-]quiet] [--task=<task>] [--schedule]"
 msgstr ""
 "git maintenance run [--auto] [--[no-]quiet] [--task=<uppgift>] [--schedule]"
 
-#: builtin/gc.c:738
+#: builtin/gc.c:745
 msgid "--no-schedule is not allowed"
 msgstr "--no-schedule tillåts inte"
 
-#: builtin/gc.c:743
+#: builtin/gc.c:750
 #, c-format
 msgid "unrecognized --schedule argument '%s'"
 msgstr "okänt argument för --schedule, %s"
 
-#: builtin/gc.c:862
+#: builtin/gc.c:869
 msgid "failed to write commit-graph"
 msgstr "kunde inte skriva incheckningsgraf"
 
-#: builtin/gc.c:901
+#: builtin/gc.c:914
 msgid "failed to fill remotes"
 msgstr "kunde inte fylla fjärrar"
 
-#: builtin/gc.c:1024
+#: builtin/gc.c:1037
 msgid "failed to start 'git pack-objects' process"
 msgstr "kunde inte starta \"git pack-objects\"-process"
 
-#: builtin/gc.c:1041
+#: builtin/gc.c:1054
 msgid "failed to finish 'git pack-objects' process"
 msgstr "kunde inte avsluta \"git pack-objects\"-process"
 
-#: builtin/gc.c:1093
+#: builtin/gc.c:1106
 msgid "failed to write multi-pack-index"
 msgstr "kunde inte skriva multi-pack-index"
 
-#: builtin/gc.c:1111
+#: builtin/gc.c:1124
 msgid "'git multi-pack-index expire' failed"
 msgstr "\"git multi-pack-index expire\" misslyckades"
 
-#: builtin/gc.c:1172
+#: builtin/gc.c:1185
 msgid "'git multi-pack-index repack' failed"
 msgstr "\"git multi-pack-index repack\" misslyckades"
 
-#: builtin/gc.c:1181
+#: builtin/gc.c:1194
 msgid ""
 "skipping incremental-repack task because core.multiPackIndex is disabled"
 msgstr ""
 "hoppar över \"incremental-repack\"-uppgift eftersom core.multiPackIndex är "
 "inaktiverat"
 
-#: builtin/gc.c:1279
+#: builtin/gc.c:1298
 #, c-format
 msgid "lock file '%s' exists, skipping maintenance"
 msgstr "låsfilen \"%s\" finns, hoppar över underhåll"
 
-#: builtin/gc.c:1309
+#: builtin/gc.c:1328
 #, c-format
 msgid "task '%s' failed"
 msgstr "uppgiften \"%s\" misslyckades"
 
-#: builtin/gc.c:1389
+#: builtin/gc.c:1410
 #, c-format
 msgid "'%s' is not a valid task"
 msgstr "\"%s\" är inte en giltig uppgift"
 
-#: builtin/gc.c:1394
+#: builtin/gc.c:1415
 #, c-format
 msgid "task '%s' cannot be selected multiple times"
 msgstr "uppgiften \"%s\" kan inte väljas flera gånger"
 
-#: builtin/gc.c:1409
+#: builtin/gc.c:1430
 msgid "run tasks based on the state of the repository"
 msgstr "kör uppgifter baserad på arkivets tillstånd"
 
-#: builtin/gc.c:1410
+#: builtin/gc.c:1431
 msgid "frequency"
 msgstr "frekvens"
 
-#: builtin/gc.c:1411
+#: builtin/gc.c:1432
 msgid "run tasks based on frequency"
 msgstr "kör uppgifter baserat på frekvens"
 
-#: builtin/gc.c:1414
+#: builtin/gc.c:1435
 msgid "do not report progress or other information over stderr"
 msgstr "rapportera inte framgång eller annan information över standard fel"
 
-#: builtin/gc.c:1415
+#: builtin/gc.c:1436
 msgid "task"
 msgstr "uppgift"
 
-#: builtin/gc.c:1416
+#: builtin/gc.c:1437
 msgid "run a specific task"
 msgstr "utför en specifik uppgift"
 
-#: builtin/gc.c:1433
+#: builtin/gc.c:1454
 msgid "use at most one of --auto and --schedule=<frequency>"
 msgstr "använd som mest en av --auto och --schedule=<frekvens>"
 
-#: builtin/gc.c:1467
+#: builtin/gc.c:1497
 msgid "failed to run 'git config'"
 msgstr "misslyckades köra \"git config\""
 
-#: builtin/gc.c:1512
-msgid "another process is scheduling background maintenance"
-msgstr "en annan process schemalägger bakgrundsunderhåll"
+#: builtin/gc.c:1562
+#, c-format
+msgid "failed to expand path '%s'"
+msgstr "misslyckades expandera sökvägen \"%s\""
+
+#: builtin/gc.c:1591
+msgid "failed to start launchctl"
+msgstr "misslyckades starta launchctl"
+
+#: builtin/gc.c:1628
+#, c-format
+msgid "failed to create directories for '%s'"
+msgstr "misslyckades skapa kataloger för \"%s\""
 
-#: builtin/gc.c:1525
+#: builtin/gc.c:1689
+#, c-format
+msgid "failed to bootstrap service %s"
+msgstr "misslyckades starta tjänsten %s"
+
+#: builtin/gc.c:1760
+msgid "failed to create temp xml file"
+msgstr "misslyckades skapa temporär xml-fil"
+
+#: builtin/gc.c:1850
+msgid "failed to start schtasks"
+msgstr "misslyckades starta schtasks"
+
+#: builtin/gc.c:1894
 msgid "failed to run 'crontab -l'; your system might not support 'cron'"
 msgstr ""
 "kunde inte köra \"crontab -l\"; ditt system kanske inte stöder \"cron\""
 
-#: builtin/gc.c:1544
+#: builtin/gc.c:1911
 msgid "failed to run 'crontab'; your system might not support 'cron'"
 msgstr "kunde inte köra \"crontab\"; ditt system kanske inte stöder \"cron\""
 
-#: builtin/gc.c:1550
+#: builtin/gc.c:1915
 msgid "failed to open stdin of 'crontab'"
 msgstr "misslyckades öppna standard in för \"crontab\""
 
-#: builtin/gc.c:1592
+#: builtin/gc.c:1956
 msgid "'crontab' died"
 msgstr "\"crontab\" dog"
 
-#: builtin/gc.c:1605
+#: builtin/gc.c:1990
+msgid "another process is scheduling background maintenance"
+msgstr "en annan process schemalägger bakgrundsunderhåll"
+
+#: builtin/gc.c:2009
 msgid "failed to add repo to global config"
 msgstr "misslyckades lägga till arkiv till global konfiguration"
 
-#: builtin/gc.c:1615
+#: builtin/gc.c:2019
 msgid "git maintenance <subcommand> [<options>]"
 msgstr "git maintenance <underkommando> [<flaggor>]"
 
-#: builtin/gc.c:1634
+#: builtin/gc.c:2038
 #, c-format
 msgid "invalid subcommand: %s"
 msgstr "felaktigt underkommando: %s"
@@ -15240,12 +15558,12 @@ msgstr "felaktigt underkommando: %s"
 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:223
 #, c-format
 msgid "grep: failed to create thread: %s"
 msgstr "grep: misslyckades skapa tråd. %s"
 
-#: builtin/grep.c:279
+#: builtin/grep.c:277
 #, c-format
 msgid "invalid number of threads specified (%d) for %s"
 msgstr "felaktigt antal trådar angivet (%d) för %s"
@@ -15254,258 +15572,258 @@ msgstr "felaktigt antal trådar angivet (%d) för %s"
 #. variable for tweaking threads, currently
 #. grep.threads
 #.
-#: builtin/grep.c:287 builtin/index-pack.c:1576 builtin/index-pack.c:1766
-#: builtin/pack-objects.c:2936
+#: builtin/grep.c:285 builtin/index-pack.c:1589 builtin/index-pack.c:1808
+#: builtin/pack-objects.c:2944
 #, c-format
 msgid "no threads support, ignoring %s"
 msgstr "trådstöd saknas, ignorerar %s"
 
-#: builtin/grep.c:475 builtin/grep.c:600 builtin/grep.c:640
+#: builtin/grep.c:473 builtin/grep.c:601 builtin/grep.c:641
 #, c-format
 msgid "unable to read tree (%s)"
 msgstr "kunde inte läsa träd (%s)"
 
-#: builtin/grep.c:655
+#: builtin/grep.c:656
 #, c-format
 msgid "unable to grep from object of type %s"
 msgstr "kunde inte \"grep\" från objekt av typen %s"
 
-#: builtin/grep.c:736
+#: builtin/grep.c:737
 #, c-format
 msgid "switch `%c' expects a numerical value"
 msgstr "flaggan \"%c\" antar ett numeriskt värde"
 
-#: builtin/grep.c:835
+#: builtin/grep.c:836
 msgid "search in index instead of in the work tree"
 msgstr "sök i indexet istället för i arbetskatalogen"
 
-#: builtin/grep.c:837
+#: builtin/grep.c:838
 msgid "find in contents not managed by git"
 msgstr "sök i innehåll som inte hanteras av git"
 
-#: builtin/grep.c:839
+#: builtin/grep.c:840
 msgid "search in both tracked and untracked files"
 msgstr "sök i både spårade och ospårade filer"
 
-#: builtin/grep.c:841
+#: builtin/grep.c:842
 msgid "ignore files specified via '.gitignore'"
 msgstr "ignorera filer angivna i \".gitignore\""
 
-#: builtin/grep.c:843
+#: builtin/grep.c:844
 msgid "recursively search in each submodule"
 msgstr "sök varje undermodul rekursivt"
 
-#: builtin/grep.c:846
+#: builtin/grep.c:847
 msgid "show non-matching lines"
 msgstr "visa rader som inte träffas"
 
-#: builtin/grep.c:848
+#: builtin/grep.c:849
 msgid "case insensitive matching"
 msgstr "skiftlägesokänslig sökning"
 
-#: builtin/grep.c:850
+#: builtin/grep.c:851
 msgid "match patterns only at word boundaries"
 msgstr "träffa endast mönster vid ordgränser"
 
-#: builtin/grep.c:852
+#: builtin/grep.c:853
 msgid "process binary files as text"
 msgstr "hantera binärfiler som text"
 
-#: builtin/grep.c:854
+#: builtin/grep.c:855
 msgid "don't match patterns in binary files"
 msgstr "träffa inte mönster i binärfiler"
 
-#: builtin/grep.c:857
+#: builtin/grep.c:858
 msgid "process binary files with textconv filters"
 msgstr "hantera binärfiler med textconv-filter"
 
-#: builtin/grep.c:859
+#: builtin/grep.c:860
 msgid "search in subdirectories (default)"
 msgstr "sök i underkataloger (standard)"
 
-#: builtin/grep.c:861
+#: builtin/grep.c:862
 msgid "descend at most <depth> levels"
 msgstr "gå som mest ned <djup> nivåer"
 
-#: builtin/grep.c:865
+#: builtin/grep.c:866
 msgid "use extended POSIX regular expressions"
 msgstr "använd utökade POSIX-reguljära uttryck"
 
-#: builtin/grep.c:868
+#: builtin/grep.c:869
 msgid "use basic POSIX regular expressions (default)"
 msgstr "använd grundläggande POSIX-reguljära uttryck (standard)"
 
-#: builtin/grep.c:871
+#: builtin/grep.c:872
 msgid "interpret patterns as fixed strings"
 msgstr "tolka mönster som fixerade strängar"
 
-#: builtin/grep.c:874
+#: builtin/grep.c:875
 msgid "use Perl-compatible regular expressions"
 msgstr "använd Perlkompatibla reguljära uttryck"
 
-#: builtin/grep.c:877
+#: builtin/grep.c:878
 msgid "show line numbers"
 msgstr "visa radnummer"
 
-#: builtin/grep.c:878
+#: builtin/grep.c:879
 msgid "show column number of first match"
 msgstr "visa kolumnnummer för första träff"
 
-#: builtin/grep.c:879
+#: builtin/grep.c:880
 msgid "don't show filenames"
 msgstr "visa inte filnamn"
 
-#: builtin/grep.c:880
+#: builtin/grep.c:881
 msgid "show filenames"
 msgstr "visa filnamn"
 
-#: builtin/grep.c:882
+#: builtin/grep.c:883
 msgid "show filenames relative to top directory"
 msgstr "visa filnamn relativa till toppkatalogen"
 
-#: builtin/grep.c:884
+#: builtin/grep.c:885
 msgid "show only filenames instead of matching lines"
 msgstr "visa endast filnamn istället för träffade rader"
 
-#: builtin/grep.c:886
+#: builtin/grep.c:887
 msgid "synonym for --files-with-matches"
 msgstr "synonym för --files-with-matches"
 
-#: builtin/grep.c:889
+#: builtin/grep.c:890
 msgid "show only the names of files without match"
 msgstr "visa endast namn på filer utan träffar"
 
-#: builtin/grep.c:891
+#: builtin/grep.c:892
 msgid "print NUL after filenames"
 msgstr "skriv NUL efter filnamn"
 
-#: builtin/grep.c:894
+#: builtin/grep.c:895
 msgid "show only matching parts of a line"
 msgstr "visa endast träffade delar av rader"
 
-#: builtin/grep.c:896
+#: builtin/grep.c:897
 msgid "show the number of matches instead of matching lines"
 msgstr "visa antal träffar istället för träffade rader"
 
-#: builtin/grep.c:897
+#: builtin/grep.c:898
 msgid "highlight matches"
 msgstr "ljusmarkera träffar"
 
-#: builtin/grep.c:899
+#: builtin/grep.c:900
 msgid "print empty line between matches from different files"
 msgstr "skriv tomma rader mellan träffar från olika filer"
 
-#: builtin/grep.c:901
+#: builtin/grep.c:902
 msgid "show filename only once above matches from same file"
 msgstr "visa filnamn endast en gång ovanför träffar från samma fil"
 
-#: builtin/grep.c:904
+#: builtin/grep.c:905
 msgid "show <n> context lines before and after matches"
 msgstr "visa <n> rader sammanhang före och efter träffar"
 
-#: builtin/grep.c:907
+#: builtin/grep.c:908
 msgid "show <n> context lines before matches"
 msgstr "visa <n> rader sammanhang före träffar"
 
-#: builtin/grep.c:909
+#: builtin/grep.c:910
 msgid "show <n> context lines after matches"
 msgstr "visa <n> rader sammanhang efter träffar"
 
-#: builtin/grep.c:911
+#: builtin/grep.c:912
 msgid "use <n> worker threads"
 msgstr "använd <n> jobbtrådar"
 
-#: builtin/grep.c:912
+#: builtin/grep.c:913
 msgid "shortcut for -C NUM"
 msgstr "genväg för -C NUM"
 
-#: builtin/grep.c:915
+#: builtin/grep.c:916
 msgid "show a line with the function name before matches"
 msgstr "visa en rad med funktionsnamnet före träffen"
 
-#: builtin/grep.c:917
+#: builtin/grep.c:918
 msgid "show the surrounding function"
 msgstr "visa den omkringliggande funktionen"
 
-#: builtin/grep.c:920
+#: builtin/grep.c:921
 msgid "read patterns from file"
 msgstr "läs mönster från fil"
 
-#: builtin/grep.c:922
+#: builtin/grep.c:923
 msgid "match <pattern>"
 msgstr "träffa <mönster>"
 
-#: builtin/grep.c:924
+#: builtin/grep.c:925
 msgid "combine patterns specified with -e"
 msgstr "kombinera mönster som anges med -e"
 
-#: builtin/grep.c:936
+#: builtin/grep.c:937
 msgid "indicate hit with exit status without output"
 msgstr "ange träff med slutstatuskod utan utdata"
 
-#: builtin/grep.c:938
+#: builtin/grep.c:939
 msgid "show only matches from files that match all patterns"
 msgstr "visa endast träffar från filer som träffar alla mönster"
 
-#: builtin/grep.c:940
-msgid "show parse tree for grep expression"
-msgstr "visa analysträd för grep-uttryck"
-
-#: builtin/grep.c:944
+#: builtin/grep.c:942
 msgid "pager"
 msgstr "bläddrare"
 
-#: builtin/grep.c:944
+#: builtin/grep.c:942
 msgid "show matching files in the pager"
 msgstr "visa träffade filer i filbläddraren"
 
-#: builtin/grep.c:948
+#: builtin/grep.c:946
 msgid "allow calling of grep(1) (ignored by this build)"
 msgstr "tillåt anropa grep(1) (ignoreras av detta bygge)"
 
-#: builtin/grep.c:1014
+#: builtin/grep.c:1012
 msgid "no pattern given"
 msgstr "inget mönster angavs"
 
-#: builtin/grep.c:1050
+#: builtin/grep.c:1048
 msgid "--no-index or --untracked cannot be used with revs"
 msgstr "--no-index och --untracked kan inte användas med revisioner"
 
-#: builtin/grep.c:1058
+#: builtin/grep.c:1056
 #, c-format
 msgid "unable to resolve revision: %s"
 msgstr "kan inte slå upp revision: %s"
 
-#: builtin/grep.c:1088
+#: builtin/grep.c:1086
 msgid "--untracked not supported with --recurse-submodules"
 msgstr "--untracked stöds inte med --recurse-submodules"
 
-#: builtin/grep.c:1092
+#: builtin/grep.c:1090
 msgid "invalid option combination, ignoring --threads"
 msgstr "ogiltig kombination av flaggor, ignorerar --threads"
 
-#: builtin/grep.c:1095 builtin/pack-objects.c:3655
+#: builtin/grep.c:1093 builtin/pack-objects.c:3672
 msgid "no threads support, ignoring --threads"
 msgstr "trådstöd saknas, ignorerar --threads"
 
-#: builtin/grep.c:1098 builtin/index-pack.c:1573 builtin/pack-objects.c:2933
+#: builtin/grep.c:1096 builtin/index-pack.c:1586 builtin/pack-objects.c:2941
 #, c-format
 msgid "invalid number of threads specified (%d)"
 msgstr "felaktigt antal trådar angivet (%d)"
 
-#: builtin/grep.c:1132
+#: builtin/grep.c:1130
 msgid "--open-files-in-pager only works on the worktree"
 msgstr "--open-files-in-pager fungerar endast i arbetskatalogen"
 
-#: builtin/grep.c:1158
+#: builtin/grep.c:1156
 msgid "--cached or --untracked cannot be used with --no-index"
 msgstr "--cached och --untracked kan inte användas med --no-index"
 
-#: builtin/grep.c:1164
+#: builtin/grep.c:1159
+msgid "--untracked cannot be used with --cached"
+msgstr "--untracked kan inte användas med --cached"
+
+#: builtin/grep.c:1165
 msgid "--[no-]exclude-standard cannot be used for tracked contents"
 msgstr "--[no-]exclude-standard kan inte användas för spårat innehåll"
 
-#: builtin/grep.c:1172
+#: builtin/grep.c:1173
 msgid "both --cached and trees are given"
 msgstr "både --cached och träd angavs"
 
@@ -15637,12 +15955,12 @@ msgstr "ingen man-visare hanterade förfrågan"
 msgid "no info viewer handled the request"
 msgstr "ingen info-visare hanterade förfrågan"
 
-#: builtin/help.c:520 builtin/help.c:531 git.c:337
+#: builtin/help.c:520 builtin/help.c:531 git.c:340
 #, c-format
 msgid "'%s' is aliased to '%s'"
 msgstr "\"%s\" är ett alias för \"%s\""
 
-#: builtin/help.c:534 git.c:369
+#: builtin/help.c:534 git.c:372
 #, c-format
 msgid "bad alias.%s string: %s"
 msgstr "felaktig alias.%s-sträng: %s"
@@ -15690,7 +16008,7 @@ msgstr "indataläsfel"
 msgid "used more bytes than were available"
 msgstr "använde fler byte än tillgängligt"
 
-#: builtin/index-pack.c:324 builtin/pack-objects.c:619
+#: builtin/index-pack.c:324 builtin/pack-objects.c:624
 msgid "pack too large for current definition of off_t"
 msgstr "paket för stort för nuvarande definition av off_t"
 
@@ -15698,7 +16016,7 @@ msgstr "paket för stort för nuvarande definition av off_t"
 msgid "pack exceeds maximum allowed size"
 msgstr "paket är större än tillåten maximal storlek"
 
-#: builtin/index-pack.c:342 builtin/repack.c:286
+#: builtin/index-pack.c:342
 #, c-format
 msgid "unable to create '%s'"
 msgstr "kunde inte skapa \"%s\""
@@ -15823,7 +16141,7 @@ msgstr "förvirrad bortom vanvett i parse_pack_objects()"
 msgid "Resolving deltas"
 msgstr "Analyserar delta"
 
-#: builtin/index-pack.c:1249 builtin/pack-objects.c:2697
+#: builtin/index-pack.c:1249 builtin/pack-objects.c:2707
 #, c-format
 msgid "unable to create thread: %s"
 msgstr "kunde inte skapa tråd: %s"
@@ -15861,10 +16179,10 @@ msgstr "kunde inte utföra \"deflate\" på tillagt objekt (%d)"
 msgid "local object %s is corrupt"
 msgstr "lokalt objekt %s är trasigt"
 
-#: builtin/index-pack.c:1444
+#: builtin/index-pack.c:1445
 #, c-format
-msgid "packfile name '%s' does not end with '.pack'"
-msgstr "paketfilnamnet \"%s\" slutar inte med \".pack\""
+msgid "packfile name '%s' does not end with '.%s'"
+msgstr "paketfilnamnet \"%s\" slutar inte med \".%s\""
 
 #: builtin/index-pack.c:1469
 #, c-format
@@ -15876,79 +16194,83 @@ msgstr "kan inte ta skriva %s-fil \"%s\""
 msgid "cannot close written %s file '%s'"
 msgstr "kan inte stänga skriven %s-fil \"%s\""
 
-#: builtin/index-pack.c:1501
+#: builtin/index-pack.c:1503
 msgid "error while closing pack file"
 msgstr "fel vid stängning av paketfil"
 
-#: builtin/index-pack.c:1515
+#: builtin/index-pack.c:1517
 msgid "cannot store pack file"
 msgstr "kan inte spara paketfil"
 
-#: builtin/index-pack.c:1523
+#: builtin/index-pack.c:1525
 msgid "cannot store index file"
 msgstr "kan inte spara indexfil"
 
-#: builtin/index-pack.c:1567 builtin/pack-objects.c:2944
+#: builtin/index-pack.c:1534
+msgid "cannot store reverse index file"
+msgstr "kan inte spara reverse-index-fil"
+
+#: builtin/index-pack.c:1580 builtin/pack-objects.c:2952
 #, c-format
 msgid "bad pack.indexversion=%<PRIu32>"
 msgstr "felaktig pack.indexversion=%<PRIu32>"
 
-#: builtin/index-pack.c:1631
+#: builtin/index-pack.c:1650
 #, c-format
 msgid "Cannot open existing pack file '%s'"
 msgstr "Kan inte öppna befintlig paketfil \"%s\""
 
-#: builtin/index-pack.c:1633
+#: builtin/index-pack.c:1652
 #, 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:1681
+#: builtin/index-pack.c:1700
 #, 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:1688
+#: builtin/index-pack.c:1707
 #, 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:1728
+#: builtin/index-pack.c:1765
 msgid "Cannot come back to cwd"
 msgstr "Kan inte gå tillbaka till arbetskatalogen (cwd)"
 
-#: builtin/index-pack.c:1777 builtin/index-pack.c:1780
-#: builtin/index-pack.c:1796 builtin/index-pack.c:1800
+#: builtin/index-pack.c:1819 builtin/index-pack.c:1822
+#: builtin/index-pack.c:1838 builtin/index-pack.c:1842
 #, c-format
 msgid "bad %s"
 msgstr "felaktig %s"
 
-#: builtin/index-pack.c:1806 builtin/init-db.c:392 builtin/init-db.c:625
+#: builtin/index-pack.c:1848 builtin/init-db.c:392 builtin/init-db.c:625
 #, c-format
 msgid "unknown hash algorithm '%s'"
 msgstr "okänd hashningsalgoritm \"%s\""
 
-#: builtin/index-pack.c:1821
+#: builtin/index-pack.c:1867
 msgid "--fix-thin cannot be used without --stdin"
 msgstr "--fix-thin kan inte användas med --stdin"
 
-#: builtin/index-pack.c:1823
+#: builtin/index-pack.c:1869
 msgid "--stdin requires a git repository"
 msgstr "--stdin kräver ett git-arkiv"
 
-#: builtin/index-pack.c:1825
+#: builtin/index-pack.c:1871
 msgid "--object-format cannot be used with --stdin"
 msgstr "--object-format kan inte användas med --stdin"
 
-#: builtin/index-pack.c:1831
+#: builtin/index-pack.c:1886
 msgid "--verify with no packfile name given"
 msgstr "--verify angavs utan paketfilnamn"
 
-#: builtin/index-pack.c:1892 builtin/unpack-objects.c:582
+#: builtin/index-pack.c:1956 builtin/unpack-objects.c:582
 msgid "fsck error in pack objects"
 msgstr "fsck-fel i packat objekt"
 
@@ -16165,130 +16487,130 @@ msgstr "--trailer med --only-input ger ingen mening"
 msgid "no input file given for in-place editing"
 msgstr "ingen indatafil angiven för redigering på plats"
 
-#: builtin/log.c:58
+#: builtin/log.c:59
 msgid "git log [<options>] [<revision-range>] [[--] <path>...]"
 msgstr "git log [<flaggor>] [<versionsintervall>] [[--] <sökväg>...]"
 
-#: builtin/log.c:59
+#: builtin/log.c:60
 msgid "git show [<options>] <object>..."
 msgstr "git show [<flaggor>] <objekt>..."
 
-#: builtin/log.c:112
+#: builtin/log.c:113
 #, c-format
 msgid "invalid --decorate option: %s"
 msgstr "ogiltig flagga för --decorate: %s"
 
-#: builtin/log.c:179
+#: builtin/log.c:180
 msgid "show source"
 msgstr "visa källkod"
 
-#: builtin/log.c:180
-msgid "Use mail map file"
-msgstr "Använd e-postmappningsfil"
+#: builtin/log.c:181
+msgid "use mail map file"
+msgstr "använd e-postmappningsfil"
 
-#: builtin/log.c:183
+#: builtin/log.c:184
 msgid "only decorate refs that match <pattern>"
 msgstr "dekorera endast referenser som motsvarar <mönster>"
 
-#: builtin/log.c:185
+#: builtin/log.c:186
 msgid "do not decorate refs that match <pattern>"
 msgstr "dekorera inte referenser som motsvarar <mönster>"
 
-#: builtin/log.c:186
+#: builtin/log.c:187
 msgid "decorate options"
 msgstr "dekoreringsflaggor"
 
-#: builtin/log.c:189
+#: builtin/log.c:190
 msgid ""
-"Trace the evolution of line range <start>,<end> or function :<funcname> in "
+"trace the evolution of line range <start>,<end> or function :<funcname> in "
 "<file>"
 msgstr ""
-"Spåra utvecklingen av intervallet <start>,<slut> eller funktionen :"
+"spåra utvecklingen av radintervallet <start>,<slut> eller funktionen :"
 "<funknamn> i <fil>"
 
-#: builtin/log.c:212
+#: builtin/log.c:213
 msgid "-L<range>:<file> cannot be used with pathspec"
 msgstr "-L<intervall>:<fil> kan inte användas med sökvägsspecifikation"
 
-#: builtin/log.c:302
+#: builtin/log.c:303
 #, c-format
 msgid "Final output: %d %s\n"
 msgstr "Slututdata: %d %s\n"
 
-#: builtin/log.c:564
+#: builtin/log.c:566
 #, c-format
 msgid "git show %s: bad file"
 msgstr "git show %s: felaktig fil"
 
-#: builtin/log.c:579 builtin/log.c:674
+#: builtin/log.c:581 builtin/log.c:671
 #, c-format
 msgid "could not read object %s"
 msgstr "kunde inte läsa objektet %s"
 
-#: builtin/log.c:699
+#: builtin/log.c:696
 #, c-format
 msgid "unknown type: %d"
 msgstr "okänd typ: %d"
 
-#: builtin/log.c:848
+#: builtin/log.c:841
 #, c-format
 msgid "%s: invalid cover from description mode"
 msgstr "%s: ogiltigt omslag från beskrivningsläge"
 
-#: builtin/log.c:855
+#: builtin/log.c:848
 msgid "format.headers without value"
 msgstr "format.headers utan värde"
 
-#: builtin/log.c:984
+#: builtin/log.c:977
 #, c-format
 msgid "cannot open patch file %s"
 msgstr "kan inte öppna patchfilen %s"
 
-#: builtin/log.c:1001
+#: builtin/log.c:994
 msgid "need exactly one range"
 msgstr "behöver precis ett intervall"
 
-#: builtin/log.c:1011
+#: builtin/log.c:1004
 msgid "not a range"
 msgstr "inte ett intervall"
 
-#: builtin/log.c:1175
+#: builtin/log.c:1168
 msgid "cover letter needs email format"
 msgstr "omslagsbrevet behöver e-postformat"
 
-#: builtin/log.c:1181
+#: builtin/log.c:1174
 msgid "failed to create cover-letter file"
 msgstr "misslyckades skapa fil för omslagsbrev"
 
-#: builtin/log.c:1262
+#: builtin/log.c:1261
 #, c-format
 msgid "insane in-reply-to: %s"
 msgstr "tokigt in-reply-to: %s"
 
-#: builtin/log.c:1289
+#: builtin/log.c:1288
 msgid "git format-patch [<options>] [<since> | <revision-range>]"
 msgstr "git format-patch [<flaggor>] [<sedan> | <revisionsintervall>]"
 
-#: builtin/log.c:1347
+#: builtin/log.c:1346
 msgid "two output directories?"
 msgstr "två utdatakataloger?"
 
-#: builtin/log.c:1498 builtin/log.c:2318 builtin/log.c:2320 builtin/log.c:2332
+#: builtin/log.c:1497 builtin/log.c:2317 builtin/log.c:2319 builtin/log.c:2331
 #, c-format
 msgid "unknown commit %s"
 msgstr "okänd incheckning %s"
 
-#: builtin/log.c:1509 builtin/replace.c:58 builtin/replace.c:207
+#: builtin/log.c:1508 builtin/replace.c:58 builtin/replace.c:207
 #: builtin/replace.c:210
 #, c-format
 msgid "failed to resolve '%s' as a valid ref"
 msgstr "misslyckades slå upp \"%s\" som en giltig referens"
 
-#: builtin/log.c:1518
+#: builtin/log.c:1517
 msgid "could not find exact merge base"
 msgstr "kunde inte hitta exakt sammanslagningsbas"
 
-#: builtin/log.c:1528
+#: builtin/log.c:1527
 msgid ""
 "failed to get upstream, if you want to record base commit automatically,\n"
 "please use git branch --set-upstream-to to track a remote branch.\n"
@@ -16298,393 +16620,397 @@ msgstr ""
 "använd git branch --set-upstream-to för att spåra en fjärrgren.\n"
 "Eller så kan du ange basincheckning med --base=<bas-inchecknings-id> manuellt"
 
-#: builtin/log.c:1551
+#: builtin/log.c:1550
 msgid "failed to find exact merge base"
 msgstr "kunde inte hitta exakt sammanslagningsbas"
 
-#: builtin/log.c:1568
+#: builtin/log.c:1567
 msgid "base commit should be the ancestor of revision list"
 msgstr "basincheckningen bör vara förfader till revisionslistan"
 
-#: builtin/log.c:1578
+#: builtin/log.c:1577
 msgid "base commit shouldn't be in revision list"
 msgstr "basincheckningen bör inte vara i revisionslistan"
 
-#: builtin/log.c:1636
+#: builtin/log.c:1635
 msgid "cannot get patch id"
 msgstr "kan inte hämta patch-id"
 
-#: builtin/log.c:1693
+#: builtin/log.c:1692
 msgid "failed to infer range-diff origin of current series"
 msgstr "misslyckades räkna ut intervalldiff-ursprung för aktuell serie"
 
-#: builtin/log.c:1695
+#: builtin/log.c:1694
 #, c-format
 msgid "using '%s' as range-diff origin of current series"
 msgstr "använd \"%s\" som intervalldiff-ursprung för aktuell serie"
 
-#: builtin/log.c:1739
+#: builtin/log.c:1738
 msgid "use [PATCH n/m] even with a single patch"
 msgstr "använd [PATCH n/m] även för en ensam patch"
 
-#: builtin/log.c:1742
+#: builtin/log.c:1741
 msgid "use [PATCH] even with multiple patches"
 msgstr "använd [PATCH] även för flera patchar"
 
-#: builtin/log.c:1746
+#: builtin/log.c:1745
 msgid "print patches to standard out"
 msgstr "skriv patcharna på standard ut"
 
-#: builtin/log.c:1748
+#: builtin/log.c:1747
 msgid "generate a cover letter"
 msgstr "generera ett följebrev"
 
-#: builtin/log.c:1750
+#: builtin/log.c:1749
 msgid "use simple number sequence for output file names"
 msgstr "använd enkel nummersekvens för utdatafilnamn"
 
-#: builtin/log.c:1751
+#: builtin/log.c:1750
 msgid "sfx"
 msgstr "sfx"
 
-#: builtin/log.c:1752
+#: builtin/log.c:1751
 msgid "use <sfx> instead of '.patch'"
 msgstr "använd <sfx> istället för \".patch\""
 
-#: builtin/log.c:1754
+#: builtin/log.c:1753
 msgid "start numbering patches at <n> instead of 1"
 msgstr "börja numrera patchar på <n> istället för 1"
 
-#: builtin/log.c:1756
+#: builtin/log.c:1755
 msgid "mark the series as Nth re-roll"
 msgstr "markera serien som N:te försök"
 
-#: builtin/log.c:1758
+#: builtin/log.c:1757
 msgid "max length of output filename"
 msgstr "maximal längd för utdatafilnamn"
 
-#: builtin/log.c:1760
-msgid "Use [RFC PATCH] instead of [PATCH]"
-msgstr "Använd  [RFC PATCH] istället för [PATCH]"
+#: builtin/log.c:1759
+msgid "use [RFC PATCH] instead of [PATCH]"
+msgstr "använd [RFC PATCH] istället för [PATCH]"
 
-#: builtin/log.c:1763
+#: builtin/log.c:1762
 msgid "cover-from-description-mode"
 msgstr "cover-from-description-läge"
 
-#: builtin/log.c:1764
+#: builtin/log.c:1763
 msgid "generate parts of a cover letter based on a branch's description"
 msgstr "skapa delar av omslagsbrevet baserat på grenbeskrivelsen"
 
-#: builtin/log.c:1766
-msgid "Use [<prefix>] instead of [PATCH]"
-msgstr "Använd [<prefix>] istället för [PATCH]"
+#: builtin/log.c:1765
+msgid "use [<prefix>] instead of [PATCH]"
+msgstr "använd [<prefix>] istället för [PATCH]"
 
-#: builtin/log.c:1769
+#: builtin/log.c:1768
 msgid "store resulting files in <dir>"
 msgstr "spara filerna i <katalog>"
 
-#: builtin/log.c:1772
+#: builtin/log.c:1771
 msgid "don't strip/add [PATCH]"
 msgstr "ta inte bort eller lägg till [PATCH]"
 
-#: builtin/log.c:1775
+#: builtin/log.c:1774
 msgid "don't output binary diffs"
 msgstr "skriv inte binära diffar"
 
-#: builtin/log.c:1777
+#: builtin/log.c:1776
 msgid "output all-zero hash in From header"
 msgstr "använd hashvärde med nollor i From-huvud"
 
-#: builtin/log.c:1779
+#: builtin/log.c:1778
 msgid "don't include a patch matching a commit upstream"
 msgstr "ta inte med patchar som motsvarar en uppströmsincheckning"
 
-#: builtin/log.c:1781
+#: builtin/log.c:1780
 msgid "show patch format instead of default (patch + stat)"
 msgstr "visa patchformat istället för standard (patch + stat)"
 
-#: builtin/log.c:1783
+#: builtin/log.c:1782
 msgid "Messaging"
 msgstr "E-post"
 
-#: builtin/log.c:1784
+#: builtin/log.c:1783
 msgid "header"
 msgstr "huvud"
 
-#: builtin/log.c:1785
+#: builtin/log.c:1784
 msgid "add email header"
 msgstr "lägg till e-posthuvud"
 
-#: builtin/log.c:1786 builtin/log.c:1787
+#: builtin/log.c:1785 builtin/log.c:1786
 msgid "email"
 msgstr "epost"
 
-#: builtin/log.c:1786
+#: builtin/log.c:1785
 msgid "add To: header"
 msgstr "lägg till mottagarhuvud (\"To:\")"
 
-#: builtin/log.c:1787
+#: builtin/log.c:1786
 msgid "add Cc: header"
 msgstr "lägg till kopiehuvud (\"Cc:\")"
 
-#: builtin/log.c:1788
+#: builtin/log.c:1787
 msgid "ident"
 msgstr "ident"
 
-#: builtin/log.c:1789
+#: builtin/log.c:1788
 msgid "set From address to <ident> (or committer ident if absent)"
 msgstr "sätt Från-adress till <ident> (eller incheckare om ident saknas)"
 
-#: builtin/log.c:1791
+#: builtin/log.c:1790
 msgid "message-id"
 msgstr "meddelande-id"
 
-#: builtin/log.c:1792
+#: builtin/log.c:1791
 msgid "make first mail a reply to <message-id>"
 msgstr "gör det första brevet ett svar till <meddelande-id>"
 
-#: builtin/log.c:1793 builtin/log.c:1796
+#: builtin/log.c:1792 builtin/log.c:1795
 msgid "boundary"
 msgstr "gräns"
 
-#: builtin/log.c:1794
+#: builtin/log.c:1793
 msgid "attach the patch"
 msgstr "bifoga patchen"
 
-#: builtin/log.c:1797
+#: builtin/log.c:1796
 msgid "inline the patch"
 msgstr "gör patchen ett inline-objekt"
 
-#: builtin/log.c:1801
+#: builtin/log.c:1800
 msgid "enable message threading, styles: shallow, deep"
 msgstr "aktivera brevtrådning, typer: shallow, deep"
 
-#: builtin/log.c:1803
+#: builtin/log.c:1802
 msgid "signature"
 msgstr "signatur"
 
-#: builtin/log.c:1804
+#: builtin/log.c:1803
 msgid "add a signature"
 msgstr "lägg till signatur"
 
-#: builtin/log.c:1805
+#: builtin/log.c:1804
 msgid "base-commit"
 msgstr "basincheckning"
 
-#: builtin/log.c:1806
+#: builtin/log.c:1805
 msgid "add prerequisite tree info to the patch series"
 msgstr "lägg till förhandskrävd trädinfo i patchserien"
 
-#: builtin/log.c:1809
+#: builtin/log.c:1808
 msgid "add a signature from a file"
 msgstr "lägg till signatur från fil"
 
-#: builtin/log.c:1810
+#: builtin/log.c:1809
 msgid "don't print the patch filenames"
 msgstr "visa inte filnamn för patchar"
 
-#: builtin/log.c:1812
+#: builtin/log.c:1811
 msgid "show progress while generating patches"
 msgstr "visa förloppsindikator medan patchar skapas"
 
-#: builtin/log.c:1814
+#: builtin/log.c:1813
 msgid "show changes against <rev> in cover letter or single patch"
 msgstr "visa ändringar mot <rev> i omslagsbrev eller ensam patch"
 
-#: builtin/log.c:1817
+#: builtin/log.c:1816
 msgid "show changes against <refspec> in cover letter or single patch"
 msgstr "visa ändringar mot <refspec> i omslagsbrev eller ensam patch"
 
-#: builtin/log.c:1819
+#: builtin/log.c:1818
 msgid "percentage by which creation is weighted"
 msgstr "procent som skapelse vägs med"
 
-#: builtin/log.c:1905
+#: builtin/log.c:1904
 #, c-format
 msgid "invalid ident line: %s"
 msgstr "ogiltig ident-rad: %s"
 
-#: builtin/log.c:1920
+#: builtin/log.c:1919
 msgid "-n and -k are mutually exclusive"
 msgstr "-n och -k kan inte användas samtidigt"
 
-#: builtin/log.c:1922
+#: builtin/log.c:1921
 msgid "--subject-prefix/--rfc and -k are mutually exclusive"
 msgstr "--subject-prefix/--rfc och -k kan inte användas samtidigt"
 
-#: builtin/log.c:1930
+#: builtin/log.c:1929
 msgid "--name-only does not make sense"
 msgstr "kan inte använda --name-only"
 
-#: builtin/log.c:1932
+#: builtin/log.c:1931
 msgid "--name-status does not make sense"
 msgstr "kan inte använda --name-status"
 
-#: builtin/log.c:1934
+#: builtin/log.c:1933
 msgid "--check does not make sense"
 msgstr "kan inte använda --check"
 
-#: builtin/log.c:1956
+#: builtin/log.c:1955
 msgid "--stdout, --output, and --output-directory are mutually exclusive"
 msgstr "--stdout, --output, och --output-directory är ömsesidigt uteslutande"
 
-#: builtin/log.c:2079
+#: builtin/log.c:2078
 msgid "--interdiff requires --cover-letter or single patch"
 msgstr "--interdiff kräver --cover-letter eller ensam patch"
 
-#: builtin/log.c:2083
+#: builtin/log.c:2082
 msgid "Interdiff:"
 msgstr "Interdiff:"
 
-#: builtin/log.c:2084
+#: builtin/log.c:2083
 #, c-format
 msgid "Interdiff against v%d:"
 msgstr "Interdiff mot v%d:"
 
-#: builtin/log.c:2090
+#: builtin/log.c:2089
 msgid "--creation-factor requires --range-diff"
 msgstr "--creation-factor kräver --range-diff"
 
-#: builtin/log.c:2094
+#: builtin/log.c:2093
 msgid "--range-diff requires --cover-letter or single patch"
 msgstr "--range-diff kräver --cover-letter eller ensam patch"
 
-#: builtin/log.c:2102
+#: builtin/log.c:2101
 msgid "Range-diff:"
 msgstr "Intervall-diff:"
 
-#: builtin/log.c:2103
+#: builtin/log.c:2102
 #, c-format
 msgid "Range-diff against v%d:"
 msgstr "Intervall-diff mot v%d:"
 
-#: builtin/log.c:2114
+#: builtin/log.c:2113
 #, c-format
 msgid "unable to read signature file '%s'"
 msgstr "kunde inte läsa signaturfil \"%s\""
 
-#: builtin/log.c:2150
+#: builtin/log.c:2149
 msgid "Generating patches"
 msgstr "Skapar patchar"
 
-#: builtin/log.c:2194
+#: builtin/log.c:2193
 msgid "failed to create output files"
 msgstr "misslyckades skapa utdatafiler"
 
-#: builtin/log.c:2253
+#: builtin/log.c:2252
 msgid "git cherry [-v] [<upstream> [<head> [<limit>]]]"
 msgstr "git cherry [-v] [<uppström> [<huvud> [<gräns>]]]"
 
-#: builtin/log.c:2307
+#: builtin/log.c:2306
 #, c-format
 msgid ""
 "Could not find a tracked remote branch, please specify <upstream> manually.\n"
 msgstr "Kunde inte hitta en spårad fjärrgren, ange <uppström> manuellt.\n"
 
-#: builtin/ls-files.c:471
+#: builtin/ls-files.c:486
 msgid "git ls-files [<options>] [<file>...]"
 msgstr "git ls-files [<flaggor>] [<fil>...]"
 
-#: builtin/ls-files.c:527
+#: builtin/ls-files.c:542
 msgid "identify the file status with tags"
 msgstr "identifiera filstatus med taggar"
 
-#: builtin/ls-files.c:529
+#: builtin/ls-files.c:544
 msgid "use lowercase letters for 'assume unchanged' files"
 msgstr "använd små bokstäver för \"anta oförändrade\"-filer"
 
-#: builtin/ls-files.c:531
+#: builtin/ls-files.c:546
 msgid "use lowercase letters for 'fsmonitor clean' files"
 msgstr "använd små bokstäver för \"fsmonitor clean\"-filer"
 
-#: builtin/ls-files.c:533
+#: builtin/ls-files.c:548
 msgid "show cached files in the output (default)"
 msgstr "visa cachade filer i utdata (standard)"
 
-#: builtin/ls-files.c:535
+#: builtin/ls-files.c:550
 msgid "show deleted files in the output"
 msgstr "visa borttagna filer i utdata"
 
-#: builtin/ls-files.c:537
+#: builtin/ls-files.c:552
 msgid "show modified files in the output"
 msgstr "visa modifierade filer i utdata"
 
-#: builtin/ls-files.c:539
+#: builtin/ls-files.c:554
 msgid "show other files in the output"
 msgstr "visa andra filer i utdata"
 
-#: builtin/ls-files.c:541
+#: builtin/ls-files.c:556
 msgid "show ignored files in the output"
 msgstr "visa ignorerade filer i utdata"
 
-#: builtin/ls-files.c:544
+#: builtin/ls-files.c:559
 msgid "show staged contents' object name in the output"
 msgstr "visa köat innehålls objektnamn i utdata"
 
-#: builtin/ls-files.c:546
+#: builtin/ls-files.c:561
 msgid "show files on the filesystem that need to be removed"
 msgstr "visa filer i filsystemet som behöver tas bort"
 
-#: builtin/ls-files.c:548
+#: builtin/ls-files.c:563
 msgid "show 'other' directories' names only"
 msgstr "visa endast namn för \"andra\" kataloger"
 
-#: builtin/ls-files.c:550
+#: builtin/ls-files.c:565
 msgid "show line endings of files"
 msgstr "visa radslut i filer"
 
-#: builtin/ls-files.c:552
+#: builtin/ls-files.c:567
 msgid "don't show empty directories"
 msgstr "visa inte tomma kataloger"
 
-#: builtin/ls-files.c:555
+#: builtin/ls-files.c:570
 msgid "show unmerged files in the output"
 msgstr "visa ej sammanslagna filer i utdata"
 
-#: builtin/ls-files.c:557
+#: builtin/ls-files.c:572
 msgid "show resolve-undo information"
 msgstr "visa \"resolve-undo\"-information"
 
-#: builtin/ls-files.c:559
+#: builtin/ls-files.c:574
 msgid "skip files matching pattern"
 msgstr "hoppa över filer som motsvarar mönster"
 
-#: builtin/ls-files.c:562
+#: builtin/ls-files.c:577
 msgid "exclude patterns are read from <file>"
 msgstr "exkludera mönster som läses från <fil>"
 
-#: builtin/ls-files.c:565
+#: builtin/ls-files.c:580
 msgid "read additional per-directory exclude patterns in <file>"
 msgstr "läs ytterligare per-katalog-exkluderingsmönster från <fil>"
 
-#: builtin/ls-files.c:567
+#: builtin/ls-files.c:582
 msgid "add the standard git exclusions"
 msgstr "lägg till git:s standardexkluderingar"
 
-#: builtin/ls-files.c:571
+#: builtin/ls-files.c:586
 msgid "make the output relative to the project top directory"
 msgstr "gör utdata relativ till projektets toppkatalog"
 
-#: builtin/ls-files.c:574
+#: builtin/ls-files.c:589
 msgid "recurse through submodules"
 msgstr "rekursera ner i undermoduler"
 
-#: builtin/ls-files.c:576
+#: builtin/ls-files.c:591
 msgid "if any <file> is not in the index, treat this as an error"
 msgstr "om en <fil> inte är indexet, betrakta det som ett fel"
 
-#: builtin/ls-files.c:577
+#: builtin/ls-files.c:592
 msgid "tree-ish"
 msgstr "träd-igt"
 
-#: builtin/ls-files.c:578
+#: builtin/ls-files.c:593
 msgid "pretend that paths removed since <tree-ish> are still present"
 msgstr "låtsas att sökvägar borttagna sedan <träd-igt> fortfarande finns"
 
-#: builtin/ls-files.c:580
+#: builtin/ls-files.c:595
 msgid "show debugging data"
 msgstr "visa felsökningsutdata"
 
+#: builtin/ls-files.c:597
+msgid "suppress duplicate entries"
+msgstr "undertyck dublettposter"
+
 #: builtin/ls-remote.c:9
 msgid ""
 "git ls-remote [--heads] [--tags] [--refs] [--upload-pack=<exec>]\n"
@@ -16695,39 +17021,39 @@ msgstr ""
 "                     [-q | --quiet] [--exit-code] [--get-url]\n"
 "                     [--symref] [<arkiv> [<referenser>...]]"
 
-#: builtin/ls-remote.c:59
+#: builtin/ls-remote.c:60
 msgid "do not print remote URL"
 msgstr "visa inte fjärr-URL"
 
-#: builtin/ls-remote.c:60 builtin/ls-remote.c:62 builtin/rebase.c:1398
+#: builtin/ls-remote.c:61 builtin/ls-remote.c:63 builtin/rebase.c:1404
 msgid "exec"
 msgstr "exec"
 
-#: builtin/ls-remote.c:61 builtin/ls-remote.c:63
+#: builtin/ls-remote.c:62 builtin/ls-remote.c:64
 msgid "path of git-upload-pack on the remote host"
 msgstr "sökväg till git-upload-pack på fjärren"
 
-#: builtin/ls-remote.c:65
+#: builtin/ls-remote.c:66
 msgid "limit to tags"
 msgstr "begränsa till taggar"
 
-#: builtin/ls-remote.c:66
+#: builtin/ls-remote.c:67
 msgid "limit to heads"
 msgstr "begränsa till huvuden"
 
-#: builtin/ls-remote.c:67
+#: builtin/ls-remote.c:68
 msgid "do not show peeled tags"
 msgstr "visa inte avskalade taggar"
 
-#: builtin/ls-remote.c:69
+#: builtin/ls-remote.c:70
 msgid "take url.<base>.insteadOf into account"
 msgstr "ta hänsyn till url.<bas>.insteadOf"
 
-#: builtin/ls-remote.c:72
+#: 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:75
+#: 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å"
 
@@ -16883,192 +17209,192 @@ msgstr "kunde inte bestämma referensen \"%s\""
 msgid "Merging %s with %s\n"
 msgstr "Slår ihop %s med %s\n"
 
-#: builtin/merge.c:57
+#: builtin/merge.c:58
 msgid "git merge [<options>] [<commit>...]"
 msgstr "git merge [<flaggor>] [<incheckning>...]"
 
-#: builtin/merge.c:58
+#: builtin/merge.c:59
 msgid "git merge --abort"
 msgstr "git merge --abort"
 
-#: builtin/merge.c:59
+#: builtin/merge.c:60
 msgid "git merge --continue"
 msgstr "git merge --continue"
 
-#: builtin/merge.c:122
+#: builtin/merge.c:123
 msgid "switch `m' requires a value"
 msgstr "flaggan \"m\" behöver ett värde"
 
-#: builtin/merge.c:145
+#: builtin/merge.c:146
 #, c-format
 msgid "option `%s' requires a value"
 msgstr "flaggan \"%s\" behöver ett värde"
 
-#: builtin/merge.c:198
+#: builtin/merge.c:199
 #, c-format
 msgid "Could not find merge strategy '%s'.\n"
 msgstr "Kunde inte hitta sammanslagningsstrategin \"%s\".\n"
 
-#: builtin/merge.c:199
+#: builtin/merge.c:200
 #, c-format
 msgid "Available strategies are:"
 msgstr "Tillgängliga strategier är:"
 
-#: builtin/merge.c:204
+#: builtin/merge.c:205
 #, c-format
 msgid "Available custom strategies are:"
 msgstr "Tillgängliga skräddarsydda strategier är:"
 
-#: builtin/merge.c:255 builtin/pull.c:133
+#: builtin/merge.c:256 builtin/pull.c:133
 msgid "do not show a diffstat at the end of the merge"
 msgstr "visa inte en diffstat när sammanslagningen är färdig"
 
-#: builtin/merge.c:258 builtin/pull.c:136
+#: builtin/merge.c:259 builtin/pull.c:136
 msgid "show a diffstat at the end of the merge"
 msgstr "visa en diffstat när sammanslagningen är färdig"
 
-#: builtin/merge.c:259 builtin/pull.c:139
+#: builtin/merge.c:260 builtin/pull.c:139
 msgid "(synonym to --stat)"
 msgstr "(synonym till --stat)"
 
-#: builtin/merge.c:261 builtin/pull.c:142
+#: builtin/merge.c:262 builtin/pull.c:142
 msgid "add (at most <n>) entries from shortlog to merge commit message"
 msgstr ""
 "lägg till (som mest <n>) poster från shortlog till incheckningsmeddelandet"
 
-#: builtin/merge.c:264 builtin/pull.c:148
+#: builtin/merge.c:265 builtin/pull.c:148
 msgid "create a single commit instead of doing a merge"
 msgstr "skapa en ensam incheckning istället för en sammanslagning"
 
-#: builtin/merge.c:266 builtin/pull.c:151
+#: builtin/merge.c:267 builtin/pull.c:151
 msgid "perform a commit if the merge succeeds (default)"
 msgstr "utför en incheckning om sammanslagningen lyckades (standard)"
 
-#: builtin/merge.c:268 builtin/pull.c:154
+#: builtin/merge.c:269 builtin/pull.c:154
 msgid "edit message before committing"
 msgstr "redigera meddelande innan incheckning"
 
-#: builtin/merge.c:270
+#: builtin/merge.c:271
 msgid "allow fast-forward (default)"
 msgstr "tillåt snabbspolning (standard)"
 
-#: builtin/merge.c:272 builtin/pull.c:161
+#: builtin/merge.c:273 builtin/pull.c:161
 msgid "abort if fast-forward is not possible"
 msgstr "avbryt om snabbspolning inte är möjlig"
 
-#: builtin/merge.c:276 builtin/pull.c:164
+#: builtin/merge.c:277 builtin/pull.c:164
 msgid "verify that the named commit has a valid GPG signature"
 msgstr "bekräfta att den namngivna incheckningen har en giltig GPG-signatur"
 
-#: builtin/merge.c:277 builtin/notes.c:787 builtin/pull.c:168
-#: builtin/rebase.c:539 builtin/rebase.c:1412 builtin/revert.c:114
+#: builtin/merge.c:278 builtin/notes.c:787 builtin/pull.c:168
+#: builtin/rebase.c:541 builtin/rebase.c:1418 builtin/revert.c:114
 msgid "strategy"
 msgstr "strategi"
 
-#: builtin/merge.c:278 builtin/pull.c:169
+#: builtin/merge.c:279 builtin/pull.c:169
 msgid "merge strategy to use"
 msgstr "sammanslagningsstrategi att använda"
 
-#: builtin/merge.c:279 builtin/pull.c:172
+#: builtin/merge.c:280 builtin/pull.c:172
 msgid "option=value"
 msgstr "alternativ=värde"
 
-#: builtin/merge.c:280 builtin/pull.c:173
+#: builtin/merge.c:281 builtin/pull.c:173
 msgid "option for selected merge strategy"
 msgstr "alternativ för vald sammanslagningsstrategi"
 
-#: builtin/merge.c:282
+#: builtin/merge.c:283
 msgid "merge commit message (for a non-fast-forward merge)"
 msgstr "incheckningsmeddelande för (icke snabbspolande) sammanslagning"
 
-#: builtin/merge.c:289
+#: builtin/merge.c:290
 msgid "abort the current in-progress merge"
 msgstr "avbryt den pågående sammanslagningen"
 
-#: builtin/merge.c:291
+#: builtin/merge.c:292
 msgid "--abort but leave index and working tree alone"
 msgstr "--abort men lämna index och arbetskatalog ensamma"
 
-#: builtin/merge.c:293
+#: builtin/merge.c:294
 msgid "continue the current in-progress merge"
 msgstr "fortsätt den pågående sammanslagningen"
 
-#: builtin/merge.c:295 builtin/pull.c:180
+#: builtin/merge.c:296 builtin/pull.c:180
 msgid "allow merging unrelated histories"
 msgstr "tillåt sammanslagning av orelaterade historier"
 
-#: builtin/merge.c:302
+#: builtin/merge.c:303
 msgid "bypass pre-merge-commit and commit-msg hooks"
 msgstr "förbigå pre-merge-commit- och commit-msg-krokar"
 
-#: builtin/merge.c:319
+#: builtin/merge.c:320
 msgid "could not run stash."
 msgstr "kunde köra stash."
 
-#: builtin/merge.c:324
+#: builtin/merge.c:325
 msgid "stash failed"
 msgstr "stash misslyckades"
 
-#: builtin/merge.c:329
+#: builtin/merge.c:330
 #, c-format
 msgid "not a valid object: %s"
 msgstr "inte ett giltigt objekt: %s"
 
-#: builtin/merge.c:351 builtin/merge.c:368
+#: builtin/merge.c:352 builtin/merge.c:369
 msgid "read-tree failed"
 msgstr "read-tree misslyckades"
 
-#: builtin/merge.c:398
+#: builtin/merge.c:399
 msgid " (nothing to squash)"
 msgstr " (inget att platta till)"
 
-#: builtin/merge.c:409
+#: builtin/merge.c:410
 #, c-format
 msgid "Squash commit -- not updating HEAD\n"
 msgstr "Tillplattningsincheckning -- uppdaterar inte HEAD\n"
 
-#: builtin/merge.c:459
+#: builtin/merge.c:460
 #, c-format
 msgid "No merge message -- not updating HEAD\n"
 msgstr "Inget sammanslagningsmeddelande -- uppdaterar inte HEAD\n"
 
-#: builtin/merge.c:510
+#: builtin/merge.c:511
 #, c-format
 msgid "'%s' does not point to a commit"
 msgstr "\"%s\" verkar inte peka på en incheckning"
 
-#: builtin/merge.c:597
+#: builtin/merge.c:598
 #, c-format
 msgid "Bad branch.%s.mergeoptions string: %s"
 msgstr "Felaktig branch.%s.mergeoptions-sträng: %s"
 
-#: builtin/merge.c:723
+#: builtin/merge.c:724
 msgid "Not handling anything other than two heads merge."
 msgstr "Hanterar inte något annat än en sammanslagning av två huvuden."
 
-#: builtin/merge.c:736
+#: builtin/merge.c:737
 #, c-format
 msgid "Unknown option for merge-recursive: -X%s"
 msgstr "Felaktig flagga för merge-recursive: -X%s"
 
-#: builtin/merge.c:755 t/helper/test-fast-rebase.c:209
+#: builtin/merge.c:756 t/helper/test-fast-rebase.c:209
 #, c-format
 msgid "unable to write %s"
 msgstr "kunde inte skriva %s"
 
-#: builtin/merge.c:807
+#: builtin/merge.c:808
 #, c-format
 msgid "Could not read from '%s'"
 msgstr "Kunde inte läsa från \"%s\""
 
-#: builtin/merge.c:816
+#: builtin/merge.c:817
 #, c-format
 msgid "Not committing merge; use 'git commit' to complete the merge.\n"
 msgstr ""
 "Checkar inte in sammanslagningen; använd \"git commit\" för att slutföra "
 "den.\n"
 
-#: builtin/merge.c:822
+#: builtin/merge.c:823
 msgid ""
 "Please enter a commit message to explain why this merge is necessary,\n"
 "especially if it merges an updated upstream into a topic branch.\n"
@@ -17079,11 +17405,11 @@ msgstr ""
 "temagren.\n"
 "\n"
 
-#: builtin/merge.c:827
+#: builtin/merge.c:828
 msgid "An empty message aborts the commit.\n"
 msgstr "Ett tomt meddelande avbryter incheckningen.\n"
 
-#: builtin/merge.c:830
+#: builtin/merge.c:831
 #, c-format
 msgid ""
 "Lines starting with '%c' will be ignored, and an empty message aborts\n"
@@ -17092,73 +17418,73 @@ msgstr ""
 "Rader som inleds med \"%c\" kommer ignoreras, och ett tomt meddelande\n"
 "avbryter incheckningen.\n"
 
-#: builtin/merge.c:883
+#: builtin/merge.c:884
 msgid "Empty commit message."
 msgstr "Tomt incheckningsmeddelande."
 
-#: builtin/merge.c:898
+#: builtin/merge.c:899
 #, c-format
 msgid "Wonderful.\n"
 msgstr "Underbart.\n"
 
-#: builtin/merge.c:959
+#: builtin/merge.c:960
 #, 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:998
+#: builtin/merge.c:999
 msgid "No current branch."
 msgstr "Inte på någon gren."
 
-#: builtin/merge.c:1000
+#: builtin/merge.c:1001
 msgid "No remote for the current branch."
 msgstr "Ingen fjärr för aktuell gren."
 
-#: builtin/merge.c:1002
+#: builtin/merge.c:1003
 msgid "No default upstream defined for the current branch."
 msgstr "Ingen standarduppström angiven för aktuell gren."
 
-#: builtin/merge.c:1007
+#: builtin/merge.c:1008
 #, 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:1064
+#: builtin/merge.c:1065
 #, c-format
 msgid "Bad value '%s' in environment '%s'"
 msgstr "Felaktigt värde \"%s\" i miljövariabeln \"%s\""
 
-#: builtin/merge.c:1167
+#: builtin/merge.c:1168
 #, 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:1201
+#: builtin/merge.c:1202
 msgid "not something we can merge"
 msgstr "inte något vi kan slå ihop"
 
-#: builtin/merge.c:1311
+#: builtin/merge.c:1312
 msgid "--abort expects no arguments"
 msgstr "--abort tar inga argument"
 
-#: builtin/merge.c:1315
+#: builtin/merge.c:1316
 msgid "There is no merge to abort (MERGE_HEAD missing)."
 msgstr "Ingen sammanslagning att avbryta (MERGE_HEAD saknas)."
 
-#: builtin/merge.c:1333
+#: builtin/merge.c:1334
 msgid "--quit expects no arguments"
 msgstr "--quit tar inga argument"
 
-#: builtin/merge.c:1346
+#: builtin/merge.c:1347
 msgid "--continue expects no arguments"
 msgstr "--continue tar inga argument"
 
-#: builtin/merge.c:1350
+#: builtin/merge.c:1351
 msgid "There is no merge in progress (MERGE_HEAD missing)."
 msgstr "Ingen sammanslagning pågår (MERGE_HEAD saknas)."
 
-#: builtin/merge.c:1366
+#: builtin/merge.c:1367
 msgid ""
 "You have not concluded your merge (MERGE_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -17166,7 +17492,7 @@ msgstr ""
 "Du har inte avslutat sammanslagningen (MERGE_HEAD finns).\n"
 "Checka in dina ändringar innan du slår ihop."
 
-#: builtin/merge.c:1373
+#: builtin/merge.c:1374
 msgid ""
 "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -17174,101 +17500,142 @@ 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:1376
+#: builtin/merge.c:1377
 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:1390
+#: builtin/merge.c:1391
 msgid "You cannot combine --squash with --no-ff."
 msgstr "Du kan inte kombinera --squash med --no-ff."
 
-#: builtin/merge.c:1392
+#: builtin/merge.c:1393
 msgid "You cannot combine --squash with --commit."
 msgstr "Du kan inte kombinera --squash med --commit."
 
-#: builtin/merge.c:1408
+#: builtin/merge.c:1409
 msgid "No commit specified and merge.defaultToUpstream not set."
 msgstr "Ingen incheckning angiven och merge.defaultToUpstream är ej satt."
 
-#: builtin/merge.c:1425
+#: builtin/merge.c:1426
 msgid "Squash commit into empty head not supported yet"
 msgstr "Stöder inte en tillplattningsincheckning på ett tomt huvud ännu"
 
-#: builtin/merge.c:1427
+#: builtin/merge.c:1428
 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:1432
+#: builtin/merge.c:1433
 #, c-format
 msgid "%s - not something we can merge"
 msgstr "%s - inte något vi kan slå ihop"
 
-#: builtin/merge.c:1434
+#: builtin/merge.c:1435
 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:1515
+#: builtin/merge.c:1516
 msgid "refusing to merge unrelated histories"
 msgstr "vägrar slå samman orelaterad historik"
 
-#: builtin/merge.c:1524
+#: builtin/merge.c:1525
 msgid "Already up to date."
 msgstr "Redan à jour."
 
-#: builtin/merge.c:1534
+#: builtin/merge.c:1535
 #, c-format
 msgid "Updating %s..%s\n"
 msgstr "Uppdaterar %s..%s\n"
 
-#: builtin/merge.c:1580
+#: builtin/merge.c:1581
 #, c-format
 msgid "Trying really trivial in-index merge...\n"
 msgstr "Försöker riktigt enkel sammanslagning i indexet...\n"
 
-#: builtin/merge.c:1587
+#: builtin/merge.c:1588
 #, c-format
 msgid "Nope.\n"
 msgstr "Nej.\n"
 
-#: builtin/merge.c:1612
+#: builtin/merge.c:1613
 msgid "Already up to date. Yeeah!"
 msgstr "Redan à jour. Toppen!"
 
-#: builtin/merge.c:1618
+#: builtin/merge.c:1619
 msgid "Not possible to fast-forward, aborting."
 msgstr "Kan inte snabbspola, avbryter."
 
-#: builtin/merge.c:1646 builtin/merge.c:1711
+#: builtin/merge.c:1647 builtin/merge.c:1712
 #, c-format
 msgid "Rewinding the tree to pristine...\n"
 msgstr "Återspolar trädet till orört...\n"
 
-#: builtin/merge.c:1650
+#: builtin/merge.c:1651
 #, c-format
 msgid "Trying merge strategy %s...\n"
 msgstr "Försöker sammanslagningsstrategin %s...\n"
 
-#: builtin/merge.c:1702
+#: builtin/merge.c:1703
 #, c-format
 msgid "No merge strategy handled the merge.\n"
 msgstr "Ingen sammanslagningsstrategi hanterade sammanslagningen.\n"
 
-#: builtin/merge.c:1704
+#: builtin/merge.c:1705
 #, c-format
 msgid "Merge with strategy %s failed.\n"
 msgstr "Sammanslagning med strategin %s misslyckades.\n"
 
-#: builtin/merge.c:1713
+#: builtin/merge.c:1714
 #, 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:1727
+#: builtin/merge.c:1728
 #, c-format
 msgid "Automatic merge went well; stopped before committing as requested\n"
 msgstr ""
 "Automatisk sammanslagning lyckades; stoppar före incheckning som önskat\n"
 
+#: builtin/mktag.c:10
+msgid "git mktag"
+msgstr "git mktag"
+
+#: builtin/mktag.c:30
+#, c-format
+msgid "warning: tag input does not pass fsck: %s"
+msgstr "varning: taggindata godkänns inte av fsck: %s"
+
+#: builtin/mktag.c:41
+#, c-format
+msgid "error: tag input does not pass fsck: %s"
+msgstr "fel: taggindata godkänns inte av fsck: %s"
+
+#: builtin/mktag.c:44
+#, c-format
+msgid "%d (FSCK_IGNORE?) should never trigger this callback"
+msgstr "%d (FSCK_IGNORE?) skulle aldrig utlösa detta återanrop"
+
+#: builtin/mktag.c:59
+#, c-format
+msgid "could not read tagged object '%s'"
+msgstr "kunde inte läsa det taggade objektet \"%s\""
+
+#: builtin/mktag.c:62
+#, c-format
+msgid "object '%s' tagged as '%s', but is a '%s' type"
+msgstr "objektet \"%s\" taggat som \"%s\", men är av typen \"%s\""
+
+#: builtin/mktag.c:99
+msgid "tag on stdin did not pass our strict fsck check"
+msgstr "tagg på stdin godkänns inte av vår strikta fsck-kontroll"
+
+#: builtin/mktag.c:102
+msgid "tag on stdin did not refer to a valid object"
+msgstr "taggen på stdin pekar inte på ett giltigt objekt"
+
+#: builtin/mktag.c:105 builtin/tag.c:232
+msgid "unable to write tag file"
+msgstr "kunde inte skriva tagg-filen"
+
 #: builtin/mktree.c:66
 msgid "git mktree [-z] [--missing] [--batch]"
 msgstr "git mktree [-z] [--missing] [--batch]"
@@ -17305,7 +17672,10 @@ msgstr ""
 "vid ompackning, samla mindre paketfiler i en bunt som är större än denna "
 "storlekt"
 
-#: builtin/multi-pack-index.c:50 builtin/prune-packed.c:25
+#: builtin/multi-pack-index.c:50 builtin/notes.c:376 builtin/notes.c:431
+#: builtin/notes.c:509 builtin/notes.c:521 builtin/notes.c:598
+#: builtin/notes.c:665 builtin/notes.c:815 builtin/notes.c:963
+#: builtin/notes.c:985 builtin/prune-packed.c:25 builtin/tag.c:575
 msgid "too many arguments"
 msgstr "för många argument"
 
@@ -17410,7 +17780,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:280 builtin/remote.c:785 builtin/repack.c:484
+#: builtin/mv.c:280 builtin/remote.c:785 builtin/repack.c:483
 #, c-format
 msgid "renaming '%s' failed"
 msgstr "misslyckades byta namn på \"%s\""
@@ -17602,7 +17972,7 @@ 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:242 builtin/tag.c:533
+#: builtin/notes.c:242 builtin/tag.c:565
 #, c-format
 msgid "could not open or read '%s'"
 msgstr "kunde inte öppna eller läsa \"%s\""
@@ -17642,12 +18012,6 @@ msgstr "misslyckades kopiera anteckningar från \"%s\" till \"%s\""
 msgid "refusing to %s notes in %s (outside of refs/notes/)"
 msgstr "vägrar utföra \"%s\" på anteckningar i %s (utanför refs/notes/)"
 
-#: builtin/notes.c:376 builtin/notes.c:431 builtin/notes.c:509
-#: builtin/notes.c:521 builtin/notes.c:598 builtin/notes.c:665
-#: builtin/notes.c:815 builtin/notes.c:963 builtin/notes.c:985
-msgid "too many parameters"
-msgstr "för många parametrar"
-
 #: builtin/notes.c:389 builtin/notes.c:678
 #, c-format
 msgid "no note found for object %s."
@@ -17705,8 +18069,8 @@ msgid "load rewriting config for <command> (implies --stdin)"
 msgstr "läs omskrivningsinställning för <kommando> (implicerar --stdin)"
 
 #: builtin/notes.c:517
-msgid "too few parameters"
-msgstr "för få parametrar"
+msgid "too few arguments"
+msgstr "för få argument"
 
 #: builtin/notes.c:538
 #, c-format
@@ -17836,7 +18200,7 @@ msgstr ""
 "%s och checka in resultatet med \"git notes merge --commit\", eller avbryt "
 "sammanslagningen med \"git notes merge --abort\".\n"
 
-#: builtin/notes.c:897 builtin/tag.c:546
+#: builtin/notes.c:897 builtin/tag.c:578
 #, c-format
 msgid "Failed to resolve '%s' as a valid ref."
 msgstr "Kunde inte slå upp \"%s\" som en giltig referens."
@@ -17854,7 +18218,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:954 builtin/prune.c:132 builtin/worktree.c:220
+#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:148
 msgid "do not remove, show only"
 msgstr "ta inte bort, bara visa"
 
@@ -17870,7 +18234,7 @@ msgstr "anteckningar-ref"
 msgid "use notes from <notes-ref>"
 msgstr "använd anteckningar från <anteckningsref>"
 
-#: builtin/notes.c:1034 builtin/stash.c:1604
+#: builtin/notes.c:1034 builtin/stash.c:1671
 #, c-format
 msgid "unknown subcommand: %s"
 msgstr "okänt underkommando: %s"
@@ -17887,102 +18251,116 @@ msgid ""
 msgstr ""
 "git pack-objects [<flaggor>...] <basnamn> [< <reflista> | < <objektlista>]"
 
-#: builtin/pack-objects.c:443
+#: builtin/pack-objects.c:440
+#, c-format
+msgid ""
+"write_reuse_object: could not locate %s, expected at offset %<PRIuMAX> in "
+"pack %s"
+msgstr ""
+"write_reuse_object: kunde inte hitta %s, förväntat på position %<PRIuMAX> i "
+"paketet %s"
+
+#: builtin/pack-objects.c:448
 #, c-format
 msgid "bad packed object CRC for %s"
 msgstr "felaktig CRC för packat objekt %s"
 
-#: builtin/pack-objects.c:454
+#: builtin/pack-objects.c:459
 #, c-format
 msgid "corrupt packed object for %s"
 msgstr "trasigt packat objekt för %s"
 
-#: builtin/pack-objects.c:585
+#: builtin/pack-objects.c:590
 #, c-format
 msgid "recursive delta detected for object %s"
 msgstr "rekursivt delta upptäcktes för objektet %s"
 
-#: builtin/pack-objects.c:796
+#: builtin/pack-objects.c:801
 #, c-format
 msgid "ordered %u objects, expected %<PRIu32>"
 msgstr "ordnade %u objekt, förväntade %<PRIu32>"
 
-#: builtin/pack-objects.c:1004
+#: builtin/pack-objects.c:896
+#, c-format
+msgid "expected object at offset %<PRIuMAX> in pack %s"
+msgstr "förväntade objekt på position %<PRIuMAX> i paketet %s"
+
+#: builtin/pack-objects.c:1015
 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:1017
+#: builtin/pack-objects.c:1028
 msgid "Writing objects"
 msgstr "Skriver objekt"
 
-#: builtin/pack-objects.c:1078 builtin/update-index.c:90
+#: builtin/pack-objects.c:1089 builtin/update-index.c:90
 #, c-format
 msgid "failed to stat %s"
 msgstr "misslyckades ta status på %s"
 
-#: builtin/pack-objects.c:1131
+#: builtin/pack-objects.c:1141
 #, c-format
 msgid "wrote %<PRIu32> objects while expecting %<PRIu32>"
 msgstr "skrev %<PRIu32> objekt medan %<PRIu32> förväntades"
 
-#: builtin/pack-objects.c:1348
+#: builtin/pack-objects.c:1358
 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:1796
+#: builtin/pack-objects.c:1806
 #, c-format
 msgid "delta base offset overflow in pack for %s"
 msgstr "deltabasoffset utanför gränsen i pack för %s"
 
-#: builtin/pack-objects.c:1805
+#: builtin/pack-objects.c:1815
 #, c-format
 msgid "delta base offset out of bound for %s"
 msgstr "deltabasoffset utanför gränsvärden för %s"
 
-#: builtin/pack-objects.c:2086
+#: builtin/pack-objects.c:2096
 msgid "Counting objects"
 msgstr "Räknar objekt"
 
-#: builtin/pack-objects.c:2231
+#: builtin/pack-objects.c:2241
 #, c-format
 msgid "unable to parse object header of %s"
 msgstr "kunde inte tolka objekthuvud för %s"
 
-#: builtin/pack-objects.c:2301 builtin/pack-objects.c:2317
-#: builtin/pack-objects.c:2327
+#: builtin/pack-objects.c:2311 builtin/pack-objects.c:2327
+#: builtin/pack-objects.c:2337
 #, c-format
 msgid "object %s cannot be read"
 msgstr "objektet %s kunde inte läsas"
 
-#: builtin/pack-objects.c:2304 builtin/pack-objects.c:2331
+#: builtin/pack-objects.c:2314 builtin/pack-objects.c:2341
 #, c-format
 msgid "object %s inconsistent object length (%<PRIuMAX> vs %<PRIuMAX>)"
 msgstr "objektet %s har inkonsistent objektlängd (%<PRIuMAX> mot %<PRIuMAX>)"
 
-#: builtin/pack-objects.c:2341
+#: builtin/pack-objects.c:2351
 msgid "suboptimal pack - out of memory"
 msgstr "icke-optimalt pack - minnet slut"
 
-#: builtin/pack-objects.c:2656
+#: builtin/pack-objects.c:2666
 #, c-format
 msgid "Delta compression using up to %d threads"
 msgstr "Deltakomprimering använder upp till %d trådar"
 
-#: builtin/pack-objects.c:2795
+#: builtin/pack-objects.c:2805
 #, c-format
 msgid "unable to pack objects reachable from tag %s"
 msgstr "kan inte packa objekt nåbara från taggen %s"
 
-#: builtin/pack-objects.c:2883
+#: builtin/pack-objects.c:2891
 msgid "Compressing objects"
 msgstr "Komprimerar objekt"
 
-#: builtin/pack-objects.c:2889
+#: builtin/pack-objects.c:2897
 msgid "inconsistency with delta count"
 msgstr "deltaräknaren är inkonsekvent"
 
-#: builtin/pack-objects.c:2961
+#: builtin/pack-objects.c:2976
 #, c-format
 msgid ""
 "value of uploadpack.blobpackfileuri must be of the form '<object-hash> <pack-"
@@ -17991,14 +18369,14 @@ msgstr ""
 "värdet på uploadpack.blobpackfileuri måste vara på formen '<objekt-hash> "
 "<paket-hash> <uri>' (fick '%s')"
 
-#: builtin/pack-objects.c:2964
+#: builtin/pack-objects.c:2979
 #, c-format
 msgid ""
 "object already configured in another uploadpack.blobpackfileuri (got '%s')"
 msgstr ""
 "objektet redan konfigurerat i et annat uploadpack.blobpackfileuri (fick '%s)"
 
-#: builtin/pack-objects.c:2993
+#: builtin/pack-objects.c:3008
 #, c-format
 msgid ""
 "expected edge object ID, got garbage:\n"
@@ -18007,7 +18385,7 @@ msgstr ""
 "förväntade kant-objekt-id, fick skräp:\n"
 " %s"
 
-#: builtin/pack-objects.c:2999
+#: builtin/pack-objects.c:3014
 #, c-format
 msgid ""
 "expected object ID, got garbage:\n"
@@ -18016,236 +18394,236 @@ msgstr ""
 "förväntade objekt-id, fick skräp:\n"
 " %s"
 
-#: builtin/pack-objects.c:3097
+#: builtin/pack-objects.c:3112
 msgid "invalid value for --missing"
 msgstr "ogiltigt värde för --missing"
 
-#: builtin/pack-objects.c:3156 builtin/pack-objects.c:3264
+#: builtin/pack-objects.c:3171 builtin/pack-objects.c:3279
 msgid "cannot open pack index"
 msgstr "kan inte öppna paketfilen"
 
-#: builtin/pack-objects.c:3187
+#: builtin/pack-objects.c:3202
 #, c-format
 msgid "loose object at %s could not be examined"
 msgstr "lösa objekt på %s kunde inte underökas"
 
-#: builtin/pack-objects.c:3272
+#: builtin/pack-objects.c:3287
 msgid "unable to force loose object"
 msgstr "kan inte tvinga lösa objekt"
 
-#: builtin/pack-objects.c:3365
+#: builtin/pack-objects.c:3380
 #, c-format
 msgid "not a rev '%s'"
 msgstr "inte en referens \"%s\""
 
-#: builtin/pack-objects.c:3368
+#: builtin/pack-objects.c:3383
 #, c-format
 msgid "bad revision '%s'"
 msgstr "felaktig revision \"%s\""
 
-#: builtin/pack-objects.c:3393
+#: builtin/pack-objects.c:3408
 msgid "unable to add recent objects"
 msgstr "kan inte lägga till nya objekt"
 
-#: builtin/pack-objects.c:3446
+#: builtin/pack-objects.c:3461
 #, c-format
 msgid "unsupported index version %s"
 msgstr "indexversionen %s stöds ej"
 
-#: builtin/pack-objects.c:3450
+#: builtin/pack-objects.c:3465
 #, c-format
 msgid "bad index version '%s'"
 msgstr "felaktig indexversion \"%s\""
 
-#: builtin/pack-objects.c:3488
+#: builtin/pack-objects.c:3503
 msgid "<version>[,<offset>]"
 msgstr "<version>[,<offset>]"
 
-#: builtin/pack-objects.c:3489
+#: builtin/pack-objects.c:3504
 msgid "write the pack index file in the specified idx format version"
 msgstr "skriv paketindexfilen i angiven indexformatversion"
 
-#: builtin/pack-objects.c:3492
+#: builtin/pack-objects.c:3507
 msgid "maximum size of each output pack file"
 msgstr "maximal storlek på varje utdatapaketfil"
 
-#: builtin/pack-objects.c:3494
+#: builtin/pack-objects.c:3509
 msgid "ignore borrowed objects from alternate object store"
 msgstr "ignorera lånade objekt från supplerande objektlager"
 
-#: builtin/pack-objects.c:3496
+#: builtin/pack-objects.c:3511
 msgid "ignore packed objects"
 msgstr "ignorera packade objekt"
 
-#: builtin/pack-objects.c:3498
+#: builtin/pack-objects.c:3513
 msgid "limit pack window by objects"
 msgstr "begränsa paketfönster efter objekt"
 
-#: builtin/pack-objects.c:3500
+#: builtin/pack-objects.c:3515
 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:3502
+#: builtin/pack-objects.c:3517
 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:3504
+#: builtin/pack-objects.c:3519
 msgid "reuse existing deltas"
 msgstr "återanvänd befintliga delta"
 
-#: builtin/pack-objects.c:3506
+#: builtin/pack-objects.c:3521
 msgid "reuse existing objects"
 msgstr "återanvänd befintliga objekt"
 
-#: builtin/pack-objects.c:3508
+#: builtin/pack-objects.c:3523
 msgid "use OFS_DELTA objects"
 msgstr "använd OFS_DELTA-objekt"
 
-#: builtin/pack-objects.c:3510
+#: builtin/pack-objects.c:3525
 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:3512
+#: builtin/pack-objects.c:3527
 msgid "do not create an empty pack output"
 msgstr "försök inte skapa tom paketutdata"
 
-#: builtin/pack-objects.c:3514
+#: builtin/pack-objects.c:3529
 msgid "read revision arguments from standard input"
 msgstr "läs revisionsargument från standard in"
 
-#: builtin/pack-objects.c:3516
+#: builtin/pack-objects.c:3531
 msgid "limit the objects to those that are not yet packed"
 msgstr "begränsa objekt till dem som ännu inte packats"
 
-#: builtin/pack-objects.c:3519
+#: builtin/pack-objects.c:3534
 msgid "include objects reachable from any reference"
 msgstr "inkludera objekt som kan nås från någon referens"
 
-#: builtin/pack-objects.c:3522
+#: builtin/pack-objects.c:3537
 msgid "include objects referred by reflog entries"
 msgstr "inkludera objekt som refereras från referensloggposter"
 
-#: builtin/pack-objects.c:3525
+#: builtin/pack-objects.c:3540
 msgid "include objects referred to by the index"
 msgstr "inkludera objekt som refereras från indexet"
 
-#: builtin/pack-objects.c:3528
+#: builtin/pack-objects.c:3543
 msgid "output pack to stdout"
 msgstr "skriv paket på standard ut"
 
-#: builtin/pack-objects.c:3530
+#: builtin/pack-objects.c:3545
 msgid "include tag objects that refer to objects to be packed"
 msgstr "inkludera taggobjekt som refererar objekt som ska packas"
 
-#: builtin/pack-objects.c:3532
+#: builtin/pack-objects.c:3547
 msgid "keep unreachable objects"
 msgstr "behåll onåbara objekt"
 
-#: builtin/pack-objects.c:3534
+#: builtin/pack-objects.c:3549
 msgid "pack loose unreachable objects"
 msgstr "packa lösa onåbara objekt"
 
-#: builtin/pack-objects.c:3536
+#: builtin/pack-objects.c:3551
 msgid "unpack unreachable objects newer than <time>"
 msgstr "packa upp onåbara objekt nyare än <tid>"
 
-#: builtin/pack-objects.c:3539
+#: builtin/pack-objects.c:3554
 msgid "use the sparse reachability algorithm"
 msgstr "använd gles-nåbarhetsalgoritmen"
 
-#: builtin/pack-objects.c:3541
+#: builtin/pack-objects.c:3556
 msgid "create thin packs"
 msgstr "skapa tunna paket"
 
-#: builtin/pack-objects.c:3543
+#: builtin/pack-objects.c:3558
 msgid "create packs suitable for shallow fetches"
 msgstr "skapa packfiler lämpade för grunda hämtningar"
 
-#: builtin/pack-objects.c:3545
+#: builtin/pack-objects.c:3560
 msgid "ignore packs that have companion .keep file"
 msgstr "ignorera paket som har tillhörande .keep-fil"
 
-#: builtin/pack-objects.c:3547
+#: builtin/pack-objects.c:3562
 msgid "ignore this pack"
 msgstr "ignorera detta paket"
 
-#: builtin/pack-objects.c:3549
+#: builtin/pack-objects.c:3564
 msgid "pack compression level"
 msgstr "komprimeringsgrad för paket"
 
-#: builtin/pack-objects.c:3551
+#: builtin/pack-objects.c:3566
 msgid "do not hide commits by grafts"
 msgstr "göm inte incheckningar med ympningar (\"grafts\")"
 
-#: builtin/pack-objects.c:3553
+#: builtin/pack-objects.c:3568
 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:3555
+#: builtin/pack-objects.c:3570
 msgid "write a bitmap index together with the pack index"
 msgstr "använd bitkartindex tillsammans med packindexet"
 
-#: builtin/pack-objects.c:3559
+#: builtin/pack-objects.c:3574
 msgid "write a bitmap index if possible"
 msgstr "skriv bitkartindex om möjligt"
 
-#: builtin/pack-objects.c:3563
+#: builtin/pack-objects.c:3578
 msgid "handling for missing objects"
 msgstr "hantering av saknade objekt"
 
-#: builtin/pack-objects.c:3566
+#: builtin/pack-objects.c:3581
 msgid "do not pack objects in promisor packfiles"
 msgstr "packa inte objekt i kontraktspackfiler"
 
-#: builtin/pack-objects.c:3568
+#: builtin/pack-objects.c:3583
 msgid "respect islands during delta compression"
 msgstr "respektera öar under deltakomprimering"
 
-#: builtin/pack-objects.c:3570
+#: builtin/pack-objects.c:3585
 msgid "protocol"
 msgstr "protokoll"
 
-#: builtin/pack-objects.c:3571
+#: builtin/pack-objects.c:3586
 msgid "exclude any configured uploadpack.blobpackfileuri with this protocol"
 msgstr ""
 "uteslut redan konfigurerade uploadpack.blobpackfileuri med detta protokoll"
 
-#: builtin/pack-objects.c:3600
+#: builtin/pack-objects.c:3617
 #, 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:3605
+#: builtin/pack-objects.c:3622
 #, 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:3659
+#: builtin/pack-objects.c:3676
 msgid "--max-pack-size cannot be used to build a pack for transfer"
 msgstr ""
 "--max-pack-size kan inte användas för att bygga ett paket som ska överföras"
 
-#: builtin/pack-objects.c:3661
+#: builtin/pack-objects.c:3678
 msgid "minimum pack size limit is 1 MiB"
 msgstr "minsta packstorlek är 1 MiB"
 
-#: builtin/pack-objects.c:3666
+#: builtin/pack-objects.c:3683
 msgid "--thin cannot be used to build an indexable pack"
 msgstr "--thin kan inte användas för att bygga ett indexerbart paket"
 
-#: builtin/pack-objects.c:3669
+#: builtin/pack-objects.c:3686
 msgid "--keep-unreachable and --unpack-unreachable are incompatible"
 msgstr "--keep-unreachable och -unpack-unreachable kan inte användas samtidigt"
 
-#: builtin/pack-objects.c:3675
+#: builtin/pack-objects.c:3692
 msgid "cannot use --filter without --stdout"
 msgstr "kan inte använda --filter utan --stdout"
 
-#: builtin/pack-objects.c:3735
+#: builtin/pack-objects.c:3752
 msgid "Enumerating objects"
 msgstr "Räknar upp objekt"
 
-#: builtin/pack-objects.c:3766
+#: builtin/pack-objects.c:3783
 #, c-format
 msgid ""
 "Total %<PRIu32> (delta %<PRIu32>), reused %<PRIu32> (delta %<PRIu32>), pack-"
@@ -18254,6 +18632,20 @@ msgstr ""
 "Totalt %<PRIu32> (delta %<PRIu32>), återanvände %<PRIu32> (delta %<PRIu32>), "
 "paket-återanvända %<PRIu32>"
 
+#: builtin/pack-redundant.c:601
+msgid ""
+"'git pack-redundant' is nominated for removal.\n"
+"If you still use this command, please add an extra\n"
+"option, '--i-still-use-this', on the command line\n"
+"and let us know you still use it by sending an e-mail\n"
+"to <git@vger.kernel.org>.  Thanks.\n"
+msgstr ""
+"\"git pack-redundant\" har nominerats för borttagning.\n"
+"Om du fortfarande använder kommandot, lägg till flaggan\n"
+"\"--i-still-use-this\" på kommandoraden och berätta för\n"
+"oss att du fortfarande använder det på e-post till\n"
+"<git@vger.kernel.org>. Tack.\n"
+
 #: builtin/pack-refs.c:8
 msgid "git pack-refs [<options>]"
 msgstr "git pack-refs [<flaggor>]"
@@ -18311,61 +18703,32 @@ msgstr "Alternativ gällande sammanslagning"
 msgid "incorporate changes by rebasing rather than merging"
 msgstr "inlemma ändringar genom ombasering i stället för sammanslagning"
 
-#: builtin/pull.c:158 builtin/rebase.c:490 builtin/revert.c:126
+#: builtin/pull.c:158 builtin/rebase.c:492 builtin/revert.c:126
 msgid "allow fast-forward"
 msgstr "tillåt snabbspolning"
 
-#: builtin/pull.c:167 parse-options.h:339
-msgid "automatically stash/stash pop before and after"
-msgstr "utför automatiskt stash/stash pop före och efter"
-
-#: builtin/pull.c:183
-msgid "Options related to fetching"
-msgstr "Alternativ gällande hämtningar"
-
-#: builtin/pull.c:193
-msgid "force overwrite of local branch"
-msgstr "tvinga överskrivning av lokal gren"
-
-#: builtin/pull.c:201
-msgid "number of submodules pulled in parallel"
-msgstr "antal undermoduler som hämtas parallellt"
-
-#: builtin/pull.c:317
-#, c-format
-msgid "Invalid value for pull.ff: %s"
-msgstr "Felaktigt värde för pull.ff: %s"
-
-#: builtin/pull.c:348
-msgid ""
-"Pulling without specifying how to reconcile divergent branches is\n"
-"discouraged. You can squelch this message by running one of the following\n"
-"commands sometime before your next pull:\n"
-"\n"
-"  git config pull.rebase false  # merge (the default strategy)\n"
-"  git config pull.rebase true   # rebase\n"
-"  git config pull.ff only       # fast-forward only\n"
-"\n"
-"You can replace \"git config\" with \"git config --global\" to set a "
-"default\n"
-"preference for all repositories. You can also pass --rebase, --no-rebase,\n"
-"or --ff-only on the command line to override the configured default per\n"
-"invocation.\n"
-msgstr ""
-"Det avråds från att göra \"pull\" utan att ange hur avvikande grenar\n"
-"ska förlikas. Du kan ta bort det här meddelandet genom att köra ett av\n"
-"följande kommandon innan du gör \"pull\" nästa gång: \n"
-"\n"
-"  git config pull.rebase false  # sammanslagning (förvald strategi)\n"
-"  git config pull.rebase true   # ombasering\n"
-"  git config pull.ff only       # endast snabbspolning\n"
-"\n"
-"Du kan ersätta \"git config\" med \"git config --global\" för att välja en\n"
-"förvald inställning för alla arkiv. Du kan också ange --rebase, --no-rebase\n"
-"eller --ff-only på kommandoraden för att överstyra det konfigurerade\n"
-"förvalet vid körning.\n"
-
-#: builtin/pull.c:458
+#: builtin/pull.c:167 parse-options.h:339
+msgid "automatically stash/stash pop before and after"
+msgstr "utför automatiskt stash/stash pop före och efter"
+
+#: builtin/pull.c:183
+msgid "Options related to fetching"
+msgstr "Alternativ gällande hämtningar"
+
+#: builtin/pull.c:193
+msgid "force overwrite of local branch"
+msgstr "tvinga överskrivning av lokal gren"
+
+#: builtin/pull.c:201
+msgid "number of submodules pulled in parallel"
+msgstr "antal undermoduler som hämtas parallellt"
+
+#: builtin/pull.c:317
+#, c-format
+msgid "Invalid value for pull.ff: %s"
+msgstr "Felaktigt värde för pull.ff: %s"
+
+#: builtin/pull.c:445
 msgid ""
 "There is no candidate for rebasing against among the refs that you just "
 "fetched."
@@ -18373,14 +18736,14 @@ msgstr ""
 "Det finns ingen kandidat för ombasering bland referenserna du precis har "
 "hämtat."
 
-#: builtin/pull.c:460
+#: builtin/pull.c:447
 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:461
+#: builtin/pull.c:448
 msgid ""
 "Generally this means that you provided a wildcard refspec which had no\n"
 "matches on the remote end."
@@ -18388,7 +18751,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:464
+#: builtin/pull.c:451
 #, c-format
 msgid ""
 "You asked to pull from the remote '%s', but did not specify\n"
@@ -18399,41 +18762,41 @@ 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:469 builtin/rebase.c:1246
+#: builtin/pull.c:456 builtin/rebase.c:1253
 msgid "You are not currently on a branch."
 msgstr "Du är inte på någon gren för närvarande."
 
-#: builtin/pull.c:471 builtin/pull.c:486
+#: builtin/pull.c:458 builtin/pull.c:473
 msgid "Please specify which branch you want to rebase against."
 msgstr "Ange vilken gren du vill ombasera mot."
 
-#: builtin/pull.c:473 builtin/pull.c:488
+#: builtin/pull.c:460 builtin/pull.c:475
 msgid "Please specify which branch you want to merge with."
 msgstr "Ange vilken gren du vill slå samman med."
 
-#: builtin/pull.c:474 builtin/pull.c:489
+#: builtin/pull.c:461 builtin/pull.c:476
 msgid "See git-pull(1) for details."
 msgstr "Se git-pull(1) för detaljer."
 
-#: builtin/pull.c:476 builtin/pull.c:482 builtin/pull.c:491
-#: builtin/rebase.c:1252
+#: builtin/pull.c:463 builtin/pull.c:469 builtin/pull.c:478
+#: builtin/rebase.c:1259
 msgid "<remote>"
 msgstr "<fjärr>"
 
-#: builtin/pull.c:476 builtin/pull.c:491 builtin/pull.c:496
+#: builtin/pull.c:463 builtin/pull.c:478 builtin/pull.c:483
 msgid "<branch>"
 msgstr "<gren>"
 
-#: builtin/pull.c:484 builtin/rebase.c:1244
+#: builtin/pull.c:471 builtin/rebase.c:1251
 msgid "There is no tracking information for the current branch."
 msgstr "Det finns ingen spårningsinformation för aktuell gren."
 
-#: builtin/pull.c:493
+#: builtin/pull.c:480
 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:498
+#: builtin/pull.c:485
 #, c-format
 msgid ""
 "Your configuration specifies to merge with the ref '%s'\n"
@@ -18442,28 +18805,57 @@ 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:609
+#: builtin/pull.c:596
 #, c-format
 msgid "unable to access commit %s"
 msgstr "kunde inte komma åt incheckningen %s"
 
-#: builtin/pull.c:915
+#: builtin/pull.c:902
 msgid "ignoring --verify-signatures for rebase"
 msgstr "ignorera --verify-signatures för ombasering"
 
-#: builtin/pull.c:972
+#: builtin/pull.c:930
+msgid ""
+"Pulling without specifying how to reconcile divergent branches is\n"
+"discouraged. You can squelch this message by running one of the following\n"
+"commands sometime before your next pull:\n"
+"\n"
+"  git config pull.rebase false  # merge (the default strategy)\n"
+"  git config pull.rebase true   # rebase\n"
+"  git config pull.ff only       # fast-forward only\n"
+"\n"
+"You can replace \"git config\" with \"git config --global\" to set a "
+"default\n"
+"preference for all repositories. You can also pass --rebase, --no-rebase,\n"
+"or --ff-only on the command line to override the configured default per\n"
+"invocation.\n"
+msgstr ""
+"Det avråds från att göra \"pull\" utan att ange hur avvikande grenar\n"
+"ska förlikas. Du kan ta bort det här meddelandet genom att köra ett av\n"
+"följande kommandon innan du gör \"pull\" nästa gång: \n"
+"\n"
+"  git config pull.rebase false  # sammanslagning (förvald strategi)\n"
+"  git config pull.rebase true   # ombasering\n"
+"  git config pull.ff only       # endast snabbspolning\n"
+"\n"
+"Du kan ersätta \"git config\" med \"git config --global\" för att välja en\n"
+"förvald inställning för alla arkiv. Du kan också ange --rebase, --no-rebase\n"
+"eller --ff-only på kommandoraden för att överstyra det konfigurerade\n"
+"förvalet vid körning.\n"
+
+#: builtin/pull.c:991
 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:976
+#: builtin/pull.c:995
 msgid "pull with rebase"
 msgstr "pull med ombasering"
 
-#: builtin/pull.c:977
+#: builtin/pull.c:996
 msgid "please commit or stash them."
 msgstr "checka in eller använd \"stash\" på dem."
 
-#: builtin/pull.c:1002
+#: builtin/pull.c:1021
 #, c-format
 msgid ""
 "fetch updated the current branch head.\n"
@@ -18474,7 +18866,7 @@ msgstr ""
 "snabbspolar din arbetskatalog från\n"
 "incheckningen %s."
 
-#: builtin/pull.c:1008
+#: builtin/pull.c:1027
 #, c-format
 msgid ""
 "Cannot fast-forward your working tree.\n"
@@ -18491,15 +18883,15 @@ msgstr ""
 "$ git reset --hard\n"
 "för att återgå."
 
-#: builtin/pull.c:1023
+#: builtin/pull.c:1042
 msgid "Cannot merge multiple branches into empty head."
 msgstr "Kan inte slå ihop flera grenar i ett tomt huvud."
 
-#: builtin/pull.c:1027
+#: builtin/pull.c:1046
 msgid "Cannot rebase onto multiple branches."
 msgstr "Kan inte ombasera ovanpå flera grenar."
 
-#: builtin/pull.c:1041
+#: builtin/pull.c:1067
 msgid "cannot rebase with locally recorded submodule modifications"
 msgstr "kan inte ombasera med lokalt lagrade ändringar i undermoful"
 
@@ -18806,45 +19198,53 @@ msgstr "--all och --mirror är inkompatibla"
 msgid "push options must not have new line characters"
 msgstr "push-flaggor kan inte innehålla radbrytning"
 
-#: builtin/range-diff.c:8
+#: builtin/range-diff.c:9
 msgid "git range-diff [<options>] <old-base>..<old-tip> <new-base>..<new-tip>"
 msgstr ""
 "git range-diff [<flaggor>] <gammal-bas>..<gammal-ända> <ny-bas>..<ny-ända>"
 
-#: builtin/range-diff.c:9
+#: builtin/range-diff.c:10
 msgid "git range-diff [<options>] <old-tip>...<new-tip>"
 msgstr "git range-diff [<flaggor>] <gammal-bas>..<ny-ända>"
 
-#: builtin/range-diff.c:10
+#: builtin/range-diff.c:11
 msgid "git range-diff [<options>] <base> <old-tip> <new-tip>"
 msgstr "git range-diff [<flaggor>] <bas> <gammal-ända> <ny-ända>"
 
-#: builtin/range-diff.c:22
+#: builtin/range-diff.c:28
 msgid "Percentage by which creation is weighted"
 msgstr "Procent som skapelse vägs med"
 
-#: builtin/range-diff.c:24
+#: builtin/range-diff.c:30
 msgid "use simple diff colors"
 msgstr "använd enkla diff-färger"
 
-#: builtin/range-diff.c:26
+#: builtin/range-diff.c:32
 msgid "notes"
 msgstr "anteckningar"
 
-#: builtin/range-diff.c:26
+#: builtin/range-diff.c:32
 msgid "passed to 'git log'"
 msgstr "sänds till \"git log\""
 
-#: builtin/range-diff.c:50 builtin/range-diff.c:54
+#: builtin/range-diff.c:35
+msgid "only emit output related to the first range"
+msgstr "visa endast utdata för det första intervallet"
+
+#: builtin/range-diff.c:37
+msgid "only emit output related to the second range"
+msgstr "visa endast utdata för det andra intervallet"
+
+#: builtin/range-diff.c:60 builtin/range-diff.c:64
 #, c-format
-msgid "no .. in range: '%s'"
-msgstr ".. saknas i intervall: \"%s\""
+msgid "not a commit range: '%s'"
+msgstr "inte ett incheckningsintervall: \"%s\""
 
-#: builtin/range-diff.c:64
+#: builtin/range-diff.c:74
 msgid "single arg format must be symmetric range"
 msgstr "ensamt argument måste vara symmetriskt intervall"
 
-#: builtin/range-diff.c:79
+#: builtin/range-diff.c:89
 msgid "need two commit ranges"
 msgstr "behöver två incheckningsintervall"
 
@@ -18948,193 +19348,193 @@ msgstr ""
 msgid "git rebase --continue | --abort | --skip | --edit-todo"
 msgstr "git rebase --continue | --abort | --skip | --edit-todo"
 
-#: builtin/rebase.c:193 builtin/rebase.c:217 builtin/rebase.c:244
+#: builtin/rebase.c:195 builtin/rebase.c:219 builtin/rebase.c:246
 #, c-format
 msgid "unusable todo list: '%s'"
 msgstr "oanvändbar todo-lista: %s"
 
-#: builtin/rebase.c:310
+#: builtin/rebase.c:312
 #, c-format
 msgid "could not create temporary %s"
 msgstr "kunde inte skapa temporär %s"
 
-#: builtin/rebase.c:316
+#: builtin/rebase.c:318
 msgid "could not mark as interactive"
 msgstr "kunde inte markera som interaktiv"
 
-#: builtin/rebase.c:369
+#: builtin/rebase.c:371
 msgid "could not generate todo list"
 msgstr "Kunde inte skapa attgöra-lista"
 
-#: builtin/rebase.c:411
+#: builtin/rebase.c:413
 msgid "a base commit must be provided with --upstream or --onto"
 msgstr "en basincheckning måste anges med --upstream eller --onto"
 
-#: builtin/rebase.c:480
+#: builtin/rebase.c:482
 msgid "git rebase--interactive [<options>]"
 msgstr "git rebase--interactive [<flaggor>]"
 
-#: builtin/rebase.c:493 builtin/rebase.c:1388
+#: builtin/rebase.c:495 builtin/rebase.c:1394
 msgid "keep commits which start empty"
 msgstr "behåller incheckningar som är tomma från början"
 
-#: builtin/rebase.c:497 builtin/revert.c:128
+#: builtin/rebase.c:499 builtin/revert.c:128
 msgid "allow commits with empty messages"
 msgstr "tillåt incheckningar med tomt meddelande"
 
-#: builtin/rebase.c:499
+#: builtin/rebase.c:501
 msgid "rebase merge commits"
 msgstr "ombasera sammanslagningar"
 
-#: builtin/rebase.c:501
+#: builtin/rebase.c:503
 msgid "keep original branch points of cousins"
 msgstr "behåll ursprungliga förgreningspunkter för kusiner"
 
-#: builtin/rebase.c:503
+#: builtin/rebase.c:505
 msgid "move commits that begin with squash!/fixup!"
 msgstr "flytta incheckningar som inleds med squash!/fixup!"
 
-#: builtin/rebase.c:504
+#: builtin/rebase.c:506
 msgid "sign commits"
 msgstr "signera incheckningar"
 
-#: builtin/rebase.c:506 builtin/rebase.c:1327
+#: builtin/rebase.c:508 builtin/rebase.c:1333
 msgid "display a diffstat of what changed upstream"
 msgstr "vis diffstat för vad som ändrats uppströms"
 
-#: builtin/rebase.c:508
+#: builtin/rebase.c:510
 msgid "continue rebase"
 msgstr "fortsätt ombasering"
 
-#: builtin/rebase.c:510
+#: builtin/rebase.c:512
 msgid "skip commit"
 msgstr "hoppa över incheckning"
 
-#: builtin/rebase.c:511
+#: builtin/rebase.c:513
 msgid "edit the todo list"
 msgstr "redigera attgöra-listan"
 
-#: builtin/rebase.c:513
+#: builtin/rebase.c:515
 msgid "show the current patch"
 msgstr "visa nuvarande patch"
 
-#: builtin/rebase.c:516
+#: builtin/rebase.c:518
 msgid "shorten commit ids in the todo list"
 msgstr "förkorta inchecknings-id i todo-listan"
 
-#: builtin/rebase.c:518
+#: builtin/rebase.c:520
 msgid "expand commit ids in the todo list"
 msgstr "utöka inchecknings-id i todo-listan"
 
-#: builtin/rebase.c:520
+#: builtin/rebase.c:522
 msgid "check the todo list"
 msgstr "kontrollera todo-listan"
 
-#: builtin/rebase.c:522
+#: builtin/rebase.c:524
 msgid "rearrange fixup/squash lines"
 msgstr "ordna om fixup-/squash-rader"
 
-#: builtin/rebase.c:524
+#: builtin/rebase.c:526
 msgid "insert exec commands in todo list"
 msgstr "lägg in exec-kommandon i todo-listan"
 
-#: builtin/rebase.c:525
+#: builtin/rebase.c:527
 msgid "onto"
 msgstr "ovanpå"
 
-#: builtin/rebase.c:528
+#: builtin/rebase.c:530
 msgid "restrict-revision"
 msgstr "restrict-revision"
 
-#: builtin/rebase.c:528
+#: builtin/rebase.c:530
 msgid "restrict revision"
 msgstr "begränsa revision"
 
-#: builtin/rebase.c:530
+#: builtin/rebase.c:532
 msgid "squash-onto"
 msgstr "squash-onto"
 
-#: builtin/rebase.c:531
+#: builtin/rebase.c:533
 msgid "squash onto"
 msgstr "tryck ihop ovanpå"
 
-#: builtin/rebase.c:533
+#: builtin/rebase.c:535
 msgid "the upstream commit"
 msgstr "uppströmsincheckningen"
 
-#: builtin/rebase.c:535
+#: builtin/rebase.c:537
 msgid "head-name"
 msgstr "head-name"
 
-#: builtin/rebase.c:535
+#: builtin/rebase.c:537
 msgid "head name"
 msgstr "namn på huvud"
 
-#: builtin/rebase.c:540
+#: builtin/rebase.c:542
 msgid "rebase strategy"
 msgstr "sammanslagningsstrategi"
 
-#: builtin/rebase.c:541
+#: builtin/rebase.c:543
 msgid "strategy-opts"
 msgstr "strategy-opts"
 
-#: builtin/rebase.c:542
+#: builtin/rebase.c:544
 msgid "strategy options"
 msgstr "strategiflaggor"
 
-#: builtin/rebase.c:543
+#: builtin/rebase.c:545
 msgid "switch-to"
 msgstr "switch-to"
 
-#: builtin/rebase.c:544
+#: builtin/rebase.c:546
 msgid "the branch or commit to checkout"
 msgstr "gren eller inchecking att checka ut"
 
-#: builtin/rebase.c:545
+#: builtin/rebase.c:547
 msgid "onto-name"
 msgstr "onto-name"
 
-#: builtin/rebase.c:545
+#: builtin/rebase.c:547
 msgid "onto name"
 msgstr "på-namn"
 
-#: builtin/rebase.c:546
+#: builtin/rebase.c:548
 msgid "cmd"
 msgstr "kmd"
 
-#: builtin/rebase.c:546
+#: builtin/rebase.c:548
 msgid "the command to run"
 msgstr "kommando att köra"
 
-#: builtin/rebase.c:549 builtin/rebase.c:1421
+#: builtin/rebase.c:551 builtin/rebase.c:1427
 msgid "automatically re-schedule any `exec` that fails"
 msgstr "kör automatiskt alla \"exec\" som misslyckas på nytt"
 
-#: builtin/rebase.c:565
+#: builtin/rebase.c:567
 msgid "--[no-]rebase-cousins has no effect without --rebase-merges"
 msgstr "--[no-]rebase-cousins har ingen effekt utan --rebase-merges"
 
-#: builtin/rebase.c:581
+#: builtin/rebase.c:583
 #, c-format
 msgid "%s requires the merge backend"
 msgstr "%s kräver \"merge\"-bakändan"
 
-#: builtin/rebase.c:624
+#: builtin/rebase.c:626
 #, c-format
 msgid "could not get 'onto': '%s'"
 msgstr "kunde inte hämta \"onto\": \"%s\""
 
-#: builtin/rebase.c:641
+#: builtin/rebase.c:643
 #, c-format
 msgid "invalid orig-head: '%s'"
 msgstr "ogiltigt orig-head: \"%s\""
 
-#: builtin/rebase.c:666
+#: builtin/rebase.c:668
 #, c-format
 msgid "ignoring invalid allow_rerere_autoupdate: '%s'"
 msgstr "ignorera ogiltigt allow_rerere_autoupdate: \"%s\""
 
-#: builtin/rebase.c:811 git-rebase--preserve-merges.sh:81
+#: builtin/rebase.c:813 git-rebase--preserve-merges.sh:81
 msgid ""
 "Resolve all conflicts manually, mark them as resolved with\n"
 "\"git add/rm <conflicted_files>\", then run \"git rebase --continue\".\n"
@@ -19148,7 +19548,7 @@ msgstr ""
 "För att avbryta och återgå till där du var före ombaseringen, kör \"git "
 "rebase --abort\"."
 
-#: builtin/rebase.c:894
+#: builtin/rebase.c:896
 #, c-format
 msgid ""
 "\n"
@@ -19167,7 +19567,7 @@ msgstr ""
 "\n"
 "Därför kan inte git ombasera dessa."
 
-#: builtin/rebase.c:1220
+#: builtin/rebase.c:1227
 #, c-format
 msgid ""
 "unrecognized empty type '%s'; valid values are \"drop\", \"keep\", and \"ask"
@@ -19175,7 +19575,7 @@ msgid ""
 msgstr ""
 "okänd tom-typ \"%s\"; giltiga värden är \"drop\", \"keep\" och \"ask\"."
 
-#: builtin/rebase.c:1238
+#: builtin/rebase.c:1245
 #, c-format
 msgid ""
 "%s\n"
@@ -19192,7 +19592,7 @@ msgstr ""
 "    git rebase '<gren>'\n"
 "\n"
 
-#: builtin/rebase.c:1254
+#: builtin/rebase.c:1261
 #, c-format
 msgid ""
 "If you wish to set tracking information for this branch you can do so with:\n"
@@ -19205,148 +19605,148 @@ msgstr ""
 "    git branch --set-upstream-to=%s/<gren> %s\n"
 "\n"
 
-#: builtin/rebase.c:1284
+#: builtin/rebase.c:1291
 msgid "exec commands cannot contain newlines"
 msgstr "exec-kommandon kan inte innehålla nyradstecken"
 
-#: builtin/rebase.c:1288
+#: builtin/rebase.c:1295
 msgid "empty exec command"
 msgstr "tomt exec-kommando"
 
-#: builtin/rebase.c:1318
+#: builtin/rebase.c:1324
 msgid "rebase onto given branch instead of upstream"
 msgstr "ombasera mot given grenen istället för uppström"
 
-#: builtin/rebase.c:1320
+#: builtin/rebase.c:1326
 msgid "use the merge-base of upstream and branch as the current base"
 msgstr "använd sammanslagningsbasen mellan uppströms och gren som aktuell bas"
 
-#: builtin/rebase.c:1322
+#: builtin/rebase.c:1328
 msgid "allow pre-rebase hook to run"
 msgstr "tillåt pre-rebase-krok att köra"
 
-#: builtin/rebase.c:1324
+#: builtin/rebase.c:1330
 msgid "be quiet. implies --no-stat"
 msgstr "var tyst. implicerar --no-stat"
 
-#: builtin/rebase.c:1330
+#: builtin/rebase.c:1336
 msgid "do not show diffstat of what changed upstream"
 msgstr "visa inte en diffstat för vad som ändrats uppströms"
 
-#: builtin/rebase.c:1333
+#: builtin/rebase.c:1339
 msgid "add a Signed-off-by trailer to each commit"
 msgstr "lägg \"Signed-off-by:\"-släprad till varje incheckning"
 
-#: builtin/rebase.c:1336
+#: builtin/rebase.c:1342
 msgid "make committer date match author date"
 msgstr "sätt incheckningsdatum till författardatum"
 
-#: builtin/rebase.c:1338
+#: builtin/rebase.c:1344
 msgid "ignore author date and use current date"
 msgstr "ignorera författardatum och använd nuvarande"
 
-#: builtin/rebase.c:1340
+#: builtin/rebase.c:1346
 msgid "synonym of --reset-author-date"
 msgstr "synonym för --reset-author-date"
 
-#: builtin/rebase.c:1342 builtin/rebase.c:1346
+#: builtin/rebase.c:1348 builtin/rebase.c:1352
 msgid "passed to 'git apply'"
 msgstr "sänds till \"git apply\""
 
-#: builtin/rebase.c:1344
+#: builtin/rebase.c:1350
 msgid "ignore changes in whitespace"
 msgstr "ignorera ändringar i blanksteg"
 
-#: builtin/rebase.c:1348 builtin/rebase.c:1351
+#: builtin/rebase.c:1354 builtin/rebase.c:1357
 msgid "cherry-pick all commits, even if unchanged"
 msgstr "utför cherry-pick på alla incheckningar, även om oändrad"
 
-#: builtin/rebase.c:1353
+#: builtin/rebase.c:1359
 msgid "continue"
 msgstr "fortsätt"
 
-#: builtin/rebase.c:1356
+#: builtin/rebase.c:1362
 msgid "skip current patch and continue"
 msgstr "hoppa över nuvarande patch och fortsätt"
 
-#: builtin/rebase.c:1358
+#: builtin/rebase.c:1364
 msgid "abort and check out the original branch"
 msgstr "avbryt och checka ut ursprungsgrenen"
 
-#: builtin/rebase.c:1361
+#: builtin/rebase.c:1367
 msgid "abort but keep HEAD where it is"
 msgstr "avbryt men behåll HEAD där det är"
 
-#: builtin/rebase.c:1362
+#: builtin/rebase.c:1368
 msgid "edit the todo list during an interactive rebase"
 msgstr "redigera attgöra-listan under interaktiv ombasering."
 
-#: builtin/rebase.c:1365
+#: builtin/rebase.c:1371
 msgid "show the patch file being applied or merged"
 msgstr "visa patchen som tillämpas eller slås samman"
 
-#: builtin/rebase.c:1368
+#: builtin/rebase.c:1374
 msgid "use apply strategies to rebase"
 msgstr "använd appliceringstrategier för ombasering"
 
-#: builtin/rebase.c:1372
+#: builtin/rebase.c:1378
 msgid "use merging strategies to rebase"
 msgstr "använd sammanslagningsstrategier för ombasering"
 
-#: builtin/rebase.c:1376
+#: builtin/rebase.c:1382
 msgid "let the user edit the list of commits to rebase"
 msgstr "låt användaren redigera listan över incheckningar att ombasera"
 
-#: builtin/rebase.c:1380
+#: builtin/rebase.c:1386
 msgid "(DEPRECATED) try to recreate merges instead of ignoring them"
 msgstr ""
 "(AVRÅDS) försök återskapa sammanslagningar istället för att ignorera dem"
 
-#: builtin/rebase.c:1385
+#: builtin/rebase.c:1391
 msgid "how to handle commits that become empty"
 msgstr "hur incheckningar som blir tomma ska hanteras"
 
-#: builtin/rebase.c:1392
+#: builtin/rebase.c:1398
 msgid "move commits that begin with squash!/fixup! under -i"
 msgstr "flytta incheckningar som börjar med squash!/fixup! under -i"
 
-#: builtin/rebase.c:1399
+#: builtin/rebase.c:1405
 msgid "add exec lines after each commit of the editable list"
 msgstr "lägg till exec-rader efter varje incheckning i den redigerbara listan"
 
-#: builtin/rebase.c:1403
+#: builtin/rebase.c:1409
 msgid "allow rebasing commits with empty messages"
 msgstr "tillåt ombasering av incheckningar med tomt meddelande"
 
-#: builtin/rebase.c:1407
+#: builtin/rebase.c:1413
 msgid "try to rebase merges instead of skipping them"
 msgstr "försök ombasera sammanslagningar istället för att ignorera dem"
 
-#: builtin/rebase.c:1410
+#: builtin/rebase.c:1416
 msgid "use 'merge-base --fork-point' to refine upstream"
 msgstr "använd \"merge-base --fork-point\" för att förfina uppström"
 
-#: builtin/rebase.c:1412
+#: builtin/rebase.c:1418
 msgid "use the given merge strategy"
 msgstr "använd angiven sammanslagningsstrategi"
 
-#: builtin/rebase.c:1414 builtin/revert.c:115
+#: builtin/rebase.c:1420 builtin/revert.c:115
 msgid "option"
 msgstr "alternativ"
 
-#: builtin/rebase.c:1415
+#: builtin/rebase.c:1421
 msgid "pass the argument through to the merge strategy"
 msgstr "sänd flaggan till sammanslagningsstrategin"
 
-#: builtin/rebase.c:1418
+#: builtin/rebase.c:1424
 msgid "rebase all reachable commits up to the root(s)"
 msgstr "ombasera alla nåbara incheckningar upp till roten/rötterna"
 
-#: builtin/rebase.c:1423
+#: builtin/rebase.c:1429
 msgid "apply all changes, even those already present upstream"
 msgstr "applicera alla ändringar, även de som redan finns uppströms"
 
-#: builtin/rebase.c:1440
+#: builtin/rebase.c:1446
 msgid ""
 "the rebase.useBuiltin support has been removed!\n"
 "See its entry in 'git help config' for details."
@@ -19354,41 +19754,41 @@ msgstr ""
 "stödet för rebase.useBuiltin har tagits bort!\n"
 "Se posten för det i \"git help config\" för detaljer."
 
-#: builtin/rebase.c:1446
+#: builtin/rebase.c:1452
 msgid "It looks like 'git am' is in progress. Cannot rebase."
 msgstr "Det verkar som en \"git am\" körs. Kan inte ombasera."
 
-#: builtin/rebase.c:1487
+#: builtin/rebase.c:1493
 msgid ""
 "git rebase --preserve-merges is deprecated. Use --rebase-merges instead."
 msgstr ""
 "git rebase --preserve-merges avråds från. Använd --rebase-merges istället."
 
-#: builtin/rebase.c:1492
+#: builtin/rebase.c:1498
 msgid "cannot combine '--keep-base' with '--onto'"
 msgstr "kan inte kombinera \"--keep-base\" med \"--onto\""
 
-#: builtin/rebase.c:1494
+#: builtin/rebase.c:1500
 msgid "cannot combine '--keep-base' with '--root'"
 msgstr "kan inte kombinera \"--keep-base\" med \"--root\""
 
-#: builtin/rebase.c:1498
+#: builtin/rebase.c:1504
 msgid "cannot combine '--root' with '--fork-point'"
 msgstr "kan inte kombinera \"--root\" med \"--fork-point\""
 
-#: builtin/rebase.c:1501
+#: builtin/rebase.c:1507
 msgid "No rebase in progress?"
 msgstr "Ingen ombasering pågår?"
 
-#: builtin/rebase.c:1505
+#: builtin/rebase.c:1511
 msgid "The --edit-todo action can only be used during interactive rebase."
 msgstr "Åtgärden --edit-todo kan endast användas under interaktiv ombasering."
 
-#: builtin/rebase.c:1528 t/helper/test-fast-rebase.c:123
+#: builtin/rebase.c:1534 t/helper/test-fast-rebase.c:123
 msgid "Cannot read HEAD"
 msgstr "Kan inte läsa HEAD"
 
-#: builtin/rebase.c:1540
+#: builtin/rebase.c:1546
 msgid ""
 "You must edit all merge conflicts and then\n"
 "mark them as resolved using git add"
@@ -19396,16 +19796,16 @@ msgstr ""
 "Du måste redigera alla sammanslagningskonflikter och\n"
 "därefter markera dem som lösta med git add"
 
-#: builtin/rebase.c:1559
+#: builtin/rebase.c:1565
 msgid "could not discard worktree changes"
 msgstr "kunde inte kasta ändringar i arbetskatalogen"
 
-#: builtin/rebase.c:1578
+#: builtin/rebase.c:1584
 #, c-format
 msgid "could not move back to %s"
 msgstr "kunde inte flytta tillbaka till %s"
 
-#: builtin/rebase.c:1624
+#: builtin/rebase.c:1630
 #, c-format
 msgid ""
 "It seems that there is already a %s directory, and\n"
@@ -19426,134 +19826,134 @@ msgstr ""
 "och kör programmet igen. Jag avslutar ifall du fortfarande har\n"
 "något av värde där.\n"
 
-#: builtin/rebase.c:1652
+#: builtin/rebase.c:1658
 msgid "switch `C' expects a numerical value"
 msgstr "flaggan \"C\" förväntar ett numeriskt värde"
 
-#: builtin/rebase.c:1694
+#: builtin/rebase.c:1700
 #, c-format
 msgid "Unknown mode: %s"
 msgstr "Okänt läge: %s"
 
-#: builtin/rebase.c:1733
+#: builtin/rebase.c:1739
 msgid "--strategy requires --merge or --interactive"
 msgstr "--strategy kräver --merge eller --interactive"
 
-#: builtin/rebase.c:1763
+#: builtin/rebase.c:1769
 msgid "cannot combine apply options with merge options"
 msgstr "kan inte kombinera apply-flaggor med merge-flaggor"
 
-#: builtin/rebase.c:1776
+#: builtin/rebase.c:1782
 #, c-format
 msgid "Unknown rebase backend: %s"
 msgstr "Okänd rebase-bakända: %s"
 
-#: builtin/rebase.c:1806
+#: builtin/rebase.c:1812
 msgid "--reschedule-failed-exec requires --exec or --interactive"
 msgstr "--reschedule-failed-exec kräver --exec eller --interactive"
 
-#: builtin/rebase.c:1826
+#: builtin/rebase.c:1832
 msgid "cannot combine '--preserve-merges' with '--rebase-merges'"
 msgstr "kan inte kombinera \"--preserve-merges\" med \"--rebase-merges\""
 
-#: builtin/rebase.c:1830
+#: builtin/rebase.c:1836
 msgid ""
 "error: cannot combine '--preserve-merges' with '--reschedule-failed-exec'"
 msgstr ""
 "fel: kan inte kombinera \"--preserve-merges\" med \"--reschedule-failed-exec"
 "\""
 
-#: builtin/rebase.c:1854
+#: builtin/rebase.c:1860
 #, c-format
 msgid "invalid upstream '%s'"
 msgstr "felaktig uppström \"%s\""
 
-#: builtin/rebase.c:1860
+#: builtin/rebase.c:1866
 msgid "Could not create new root commit"
 msgstr "kunde inte skapa ny rotincheckning"
 
-#: builtin/rebase.c:1886
+#: builtin/rebase.c:1892
 #, c-format
 msgid "'%s': need exactly one merge base with branch"
 msgstr "\"%s\": behöver precis en sammanslagningsbas med gren"
 
-#: builtin/rebase.c:1889
+#: builtin/rebase.c:1895
 #, c-format
 msgid "'%s': need exactly one merge base"
 msgstr "\"%s\": behöver precis en sammanslagningsbas"
 
-#: builtin/rebase.c:1897
+#: builtin/rebase.c:1903
 #, c-format
 msgid "Does not point to a valid commit '%s'"
 msgstr "Pekar inte på en giltig incheckning: \"%s\""
 
-#: builtin/rebase.c:1923
+#: builtin/rebase.c:1931
 #, c-format
 msgid "fatal: no such branch/commit '%s'"
 msgstr "ödesdigert: ingen sådan gren/incheckning: \"%s\""
 
-#: builtin/rebase.c:1931 builtin/submodule--helper.c:40
+#: builtin/rebase.c:1939 builtin/submodule--helper.c:40
 #: builtin/submodule--helper.c:2414
 #, c-format
 msgid "No such ref: %s"
 msgstr "Ingen sådan referens: %s"
 
-#: builtin/rebase.c:1942
+#: builtin/rebase.c:1950
 msgid "Could not resolve HEAD to a revision"
 msgstr "Kunde inte bestämma HEAD:s incheckning"
 
-#: builtin/rebase.c:1963
+#: builtin/rebase.c:1971
 msgid "Please commit or stash them."
 msgstr "Checka in eller använd \"stash\" på dem."
 
-#: builtin/rebase.c:1999
+#: builtin/rebase.c:2007
 #, c-format
 msgid "could not switch to %s"
 msgstr "kunde inte växla till %s"
 
-#: builtin/rebase.c:2010
+#: builtin/rebase.c:2018
 msgid "HEAD is up to date."
 msgstr "HEAD är à jour."
 
-#: builtin/rebase.c:2012
+#: builtin/rebase.c:2020
 #, c-format
 msgid "Current branch %s is up to date.\n"
 msgstr "Aktuell gren %s är à jour.\n"
 
-#: builtin/rebase.c:2020
+#: builtin/rebase.c:2028
 msgid "HEAD is up to date, rebase forced."
 msgstr "HEAD är à jour, ombasering framtvingad."
 
-#: builtin/rebase.c:2022
+#: builtin/rebase.c:2030
 #, c-format
 msgid "Current branch %s is up to date, rebase forced.\n"
 msgstr "Aktuell gren %s är à jour, ombasering framtvingad.\n"
 
-#: builtin/rebase.c:2030
+#: builtin/rebase.c:2038
 msgid "The pre-rebase hook refused to rebase."
 msgstr "Kroken pre-rebase vägrade ombaseringen."
 
-#: builtin/rebase.c:2037
+#: builtin/rebase.c:2045
 #, c-format
 msgid "Changes to %s:\n"
 msgstr "Ändringar till %s:\n"
 
-#: builtin/rebase.c:2040
+#: builtin/rebase.c:2048
 #, c-format
 msgid "Changes from %s to %s:\n"
 msgstr "Ändringar från %s till %s:\n"
 
-#: builtin/rebase.c:2065
+#: builtin/rebase.c:2073
 #, c-format
 msgid "First, rewinding head to replay your work on top of it...\n"
 msgstr ""
 "Först, spolar tillbaka huvudet för att spela av ditt arbete ovanpå det...\n"
 
-#: builtin/rebase.c:2074
+#: builtin/rebase.c:2082
 msgid "Could not detach HEAD"
 msgstr "Kunde inte koppla från HEAD"
 
-#: builtin/rebase.c:2083
+#: builtin/rebase.c:2091
 #, c-format
 msgid "Fast-forwarded %s to %s.\n"
 msgstr "Snabbspolade %s till %s.\n"
@@ -19648,36 +20048,36 @@ msgstr "git reflog exists <referens>"
 msgid "'%s' is not a valid timestamp"
 msgstr "\"%s\" är inte en giltig tidsstämpel"
 
-#: builtin/reflog.c:606
+#: builtin/reflog.c:609
 #, c-format
 msgid "Marking reachable objects..."
 msgstr "Markerar nåbara objekt..."
 
-#: builtin/reflog.c:644
+#: builtin/reflog.c:647
 #, c-format
 msgid "%s points nowhere!"
 msgstr "%s pekar ingenstans!"
 
-#: builtin/reflog.c:696
+#: builtin/reflog.c:699
 msgid "no reflog specified to delete"
 msgstr "ingen referenslogg att ta bort angavs"
 
-#: builtin/reflog.c:705
+#: builtin/reflog.c:708
 #, c-format
 msgid "not a reflog: %s"
 msgstr "inte en referenslogg: %s"
 
-#: builtin/reflog.c:710
+#: builtin/reflog.c:713
 #, c-format
 msgid "no reflog for '%s'"
 msgstr "ingen referenslogg för \"%s\""
 
-#: builtin/reflog.c:756
+#: builtin/reflog.c:759
 #, c-format
 msgid "invalid ref format: %s"
 msgstr "felaktigt referensformat: %s"
 
-#: builtin/reflog.c:765
+#: builtin/reflog.c:768
 msgid "git reflog [ show | expire | delete | exists ]"
 msgstr "git reflog [ show | expire | delete | exists ]"
 
@@ -20189,11 +20589,11 @@ msgstr "Ingen sådan URL hittades: %s"
 msgid "Will not delete all non-push URLs"
 msgstr "Kommer inte ta bort alla icke-sänd-URL:er"
 
-#: builtin/repack.c:25
+#: builtin/repack.c:26
 msgid "git repack [<options>]"
 msgstr "git repack [<flaggor>]"
 
-#: builtin/repack.c:30
+#: builtin/repack.c:31
 msgid ""
 "Incremental repacks are incompatible with bitmap indexes.  Use\n"
 "--no-write-bitmap-index or disable the pack.writebitmaps configuration."
@@ -20202,117 +20602,117 @@ msgstr ""
 "Använd --no-write-bitmap-index eller inaktivera inställningen\n"
 "pack.writebitmaps"
 
-#: builtin/repack.c:197
+#: builtin/repack.c:198
 msgid "could not start pack-objects to repack promisor objects"
 msgstr "kunde inte starta pack-objects för att packa om kontraktsobjekt"
 
-#: builtin/repack.c:268 builtin/repack.c:447
+#: builtin/repack.c:270 builtin/repack.c:446
 msgid "repack: Expecting full hex object ID lines only from pack-objects."
 msgstr ""
 "repack: Förväntar kompletta hex-objekt-id-rader endast från pack-objects."
 
-#: builtin/repack.c:295
+#: builtin/repack.c:294
 msgid "could not finish pack-objects to repack promisor objects"
 msgstr "kunde inte avsluta pack-objects för att packa om kontraktsobjekt"
 
-#: builtin/repack.c:323
+#: builtin/repack.c:322
 msgid "pack everything in a single pack"
 msgstr "packa allt i ett enda paket"
 
-#: builtin/repack.c:325
+#: builtin/repack.c:324
 msgid "same as -a, and turn unreachable objects loose"
 msgstr "samma som -a, och gör onåbara objekt lösa"
 
-#: builtin/repack.c:328
+#: builtin/repack.c:327
 msgid "remove redundant packs, and run git-prune-packed"
 msgstr "ta bort överflödiga paket, och kör git-prune-packed"
 
-#: builtin/repack.c:330
+#: builtin/repack.c:329
 msgid "pass --no-reuse-delta to git-pack-objects"
 msgstr "sänd --no-reuse-delta till git-pack-objects"
 
-#: builtin/repack.c:332
+#: builtin/repack.c:331
 msgid "pass --no-reuse-object to git-pack-objects"
 msgstr "sänd --no-reuse-object till git-pack-objects"
 
-#: builtin/repack.c:334
+#: builtin/repack.c:333
 msgid "do not run git-update-server-info"
 msgstr "kör inte git-update-server-info"
 
-#: builtin/repack.c:337
+#: builtin/repack.c:336
 msgid "pass --local to git-pack-objects"
 msgstr "sänd --local till git-pack-objects"
 
-#: builtin/repack.c:339
+#: builtin/repack.c:338
 msgid "write bitmap index"
 msgstr "skriv bitkartindex"
 
-#: builtin/repack.c:341
+#: builtin/repack.c:340
 msgid "pass --delta-islands to git-pack-objects"
 msgstr "sänd --delta-islands till git-pack-objects"
 
-#: builtin/repack.c:342
+#: builtin/repack.c:341
 msgid "approxidate"
 msgstr "cirkadatum"
 
-#: builtin/repack.c:343
+#: builtin/repack.c:342
 msgid "with -A, do not loosen objects older than this"
 msgstr "med -A, lös inte upp objekt äldre än detta"
 
-#: builtin/repack.c:345
+#: builtin/repack.c:344
 msgid "with -a, repack unreachable objects"
 msgstr "med -a, packa om onåbara objekt"
 
-#: builtin/repack.c:347
+#: builtin/repack.c:346
 msgid "size of the window used for delta compression"
 msgstr "storlek på fönster använt för deltakomprimering"
 
-#: builtin/repack.c:348 builtin/repack.c:354
+#: builtin/repack.c:347 builtin/repack.c:353
 msgid "bytes"
 msgstr "byte"
 
-#: builtin/repack.c:349
+#: builtin/repack.c:348
 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:351
+#: builtin/repack.c:350
 msgid "limits the maximum delta depth"
 msgstr "begränsa maximalt deltadjup"
 
-#: builtin/repack.c:353
+#: builtin/repack.c:352
 msgid "limits the maximum number of threads"
 msgstr "begränsar maximalt antal trådar"
 
-#: builtin/repack.c:355
+#: builtin/repack.c:354
 msgid "maximum size of each packfile"
 msgstr "maximal storlek på varje paketfil"
 
-#: builtin/repack.c:357
+#: builtin/repack.c:356
 msgid "repack objects in packs marked with .keep"
 msgstr "packa om objekt i paket märkta med .keep"
 
-#: builtin/repack.c:359
+#: builtin/repack.c:358
 msgid "do not repack this pack"
 msgstr "packa inte om detta paket"
 
-#: builtin/repack.c:369
+#: builtin/repack.c:368
 msgid "cannot delete packs in a precious-objects repo"
 msgstr "kan inte ta bort paket i ett \"precious-objects\"-arkiv"
 
-#: builtin/repack.c:373
+#: builtin/repack.c:372
 msgid "--keep-unreachable and -A are incompatible"
 msgstr "--keep-unreachable och -A kan inte användas samtidigt"
 
-#: builtin/repack.c:456
+#: builtin/repack.c:455
 msgid "Nothing new to pack."
 msgstr "Inget nytt att packa."
 
-#: builtin/repack.c:486
+#: builtin/repack.c:485
 #, c-format
 msgid "missing required file: %s"
 msgstr "nödvändig fil saknas: %s"
 
-#: builtin/repack.c:488
+#: builtin/repack.c:487
 #, c-format
 msgid "could not unlink: %s"
 msgstr "kunde inte ta bort: \"%s\""
@@ -20645,8 +21045,8 @@ msgstr "HEAD är nu på %s"
 msgid "Cannot do a %s reset in the middle of a merge."
 msgstr "Kan inte utföra en %s återställning mitt i en sammanslagning."
 
-#: builtin/reset.c:295 builtin/stash.c:520 builtin/stash.c:594
-#: builtin/stash.c:618
+#: builtin/reset.c:295 builtin/stash.c:587 builtin/stash.c:661
+#: builtin/stash.c:685
 msgid "be quiet, only report errors"
 msgstr "var tyst, rapportera endast fel"
 
@@ -20730,19 +21130,19 @@ msgstr "Kunde inte återställa indexfilen till versionen \"%s\"."
 msgid "Could not write new index file."
 msgstr "Kunde inte skriva ny indexfil."
 
-#: builtin/rev-list.c:499
+#: builtin/rev-list.c:534
 msgid "cannot combine --exclude-promisor-objects and --missing"
 msgstr "kan inte kombinera --exclude-promisor-objects och --missing"
 
-#: builtin/rev-list.c:560
+#: builtin/rev-list.c:595
 msgid "object filtering requires --objects"
 msgstr "objektfiltrering kräver --objects"
 
-#: builtin/rev-list.c:610
+#: builtin/rev-list.c:651
 msgid "rev-list does not support display of notes"
 msgstr "rev-list stöder inte visning av anteckningar"
 
-#: builtin/rev-list.c:615
+#: builtin/rev-list.c:656
 msgid "marked counting is incompatible with --objects"
 msgstr "markerad räkning är inkompatibelt med --objects"
 
@@ -20982,52 +21382,52 @@ msgstr "git shortlog [<flaggor>] [<versionsintervall>] [[--] <sökväg>...]"
 msgid "git log --pretty=short | git shortlog [<options>]"
 msgstr "git log --pretty=short | git shortlog [<flaggor>]"
 
-#: builtin/shortlog.c:135
+#: builtin/shortlog.c:123
 msgid "using multiple --group options with stdin is not supported"
 msgstr "mer än en --group-flagga stöds inte med standard in"
 
-#: builtin/shortlog.c:145
+#: builtin/shortlog.c:133
 msgid "using --group=trailer with stdin is not supported"
 msgstr "att använda --group=trailer stöds inte med standard in"
 
-#: builtin/shortlog.c:335
+#: builtin/shortlog.c:323
 #, c-format
 msgid "unknown group type: %s"
 msgstr "okänd grupptyp: %s"
 
-#: builtin/shortlog.c:363
-msgid "Group by committer rather than author"
-msgstr "Gruppera efter incheckare istället för författare"
+#: builtin/shortlog.c:351
+msgid "group by committer rather than author"
+msgstr "gruppera efter incheckare istället för författare"
 
-#: builtin/shortlog.c:366
+#: builtin/shortlog.c:354
 msgid "sort output according to the number of commits per author"
 msgstr "sortera utdata enligt antal incheckningar per författare"
 
-#: builtin/shortlog.c:368
-msgid "Suppress commit descriptions, only provides commit count"
-msgstr "Undertryck beskrivningar, visa bara antal incheckningar"
+#: builtin/shortlog.c:356
+msgid "suppress commit descriptions, only provides commit count"
+msgstr "undertryck beskrivningar, visa bara antal incheckningar"
 
-#: builtin/shortlog.c:370
-msgid "Show the email address of each author"
-msgstr "Visa e-postadress för varje författare"
+#: builtin/shortlog.c:358
+msgid "show the email address of each author"
+msgstr "visa e-postadress för varje författare"
 
-#: builtin/shortlog.c:371
+#: builtin/shortlog.c:359
 msgid "<w>[,<i1>[,<i2>]]"
 msgstr "<w>[,<i1>[,<i2>]]"
 
-#: builtin/shortlog.c:372
-msgid "Linewrap output"
-msgstr "Radbryt utdata"
+#: builtin/shortlog.c:360
+msgid "linewrap output"
+msgstr "radbryt utdata"
 
-#: builtin/shortlog.c:374
+#: builtin/shortlog.c:362
 msgid "field"
 msgstr "föt"
 
-#: builtin/shortlog.c:375
-msgid "Group by field"
-msgstr "Gruppera efter fält"
+#: builtin/shortlog.c:363
+msgid "group by field"
+msgstr "gruppera efter fält"
 
-#: builtin/shortlog.c:403
+#: builtin/shortlog.c:391
 msgid "too many arguments given outside repository"
 msgstr "för många flaggor givna utanför arkivet"
 
@@ -21223,71 +21623,71 @@ msgstr "visa referenser från standard in som inte finns i lokalt arkiv"
 msgid "git sparse-checkout (init|list|set|add|reapply|disable) <options>"
 msgstr "git sparse-checkout (init|list|set|add|reapply|disable) <flaggor>"
 
-#: builtin/sparse-checkout.c:50
+#: builtin/sparse-checkout.c:45
 msgid "git sparse-checkout list"
 msgstr "git sparse-checkout list"
 
-#: builtin/sparse-checkout.c:76
+#: builtin/sparse-checkout.c:71
 msgid "this worktree is not sparse (sparse-checkout file may not exist)"
 msgstr ""
 "arbetskatalogen är inte glest (sparse-checkout-filen kanske inte finns)"
 
-#: builtin/sparse-checkout.c:228
+#: builtin/sparse-checkout.c:223
 msgid "failed to create directory for sparse-checkout file"
 msgstr "misslyckades skapa katalog för \"sparse-checkout\"-filen"
 
-#: builtin/sparse-checkout.c:269
+#: builtin/sparse-checkout.c:264
 msgid "unable to upgrade repository format to enable worktreeConfig"
 msgstr "kunde inte uppgradera arkivformat för att aktivera worktreeConfig"
 
-#: builtin/sparse-checkout.c:271
+#: builtin/sparse-checkout.c:266
 msgid "failed to set extensions.worktreeConfig setting"
 msgstr "misslyckades ändra inställningen extensions.worktreeConfig"
 
-#: builtin/sparse-checkout.c:288
+#: builtin/sparse-checkout.c:283
 msgid "git sparse-checkout init [--cone]"
 msgstr "git sparse-checkout init [--cone]"
 
-#: builtin/sparse-checkout.c:307
+#: builtin/sparse-checkout.c:302
 msgid "initialize the sparse-checkout in cone mode"
 msgstr "initiera sparse-checkout i konläge"
 
-#: builtin/sparse-checkout.c:344
+#: builtin/sparse-checkout.c:339
 #, c-format
 msgid "failed to open '%s'"
 msgstr "misslyckades öppna \"%s\""
 
-#: builtin/sparse-checkout.c:401
+#: builtin/sparse-checkout.c:396
 #, c-format
 msgid "could not normalize path %s"
 msgstr "kunde inte normalisera sökvägen \"%s\""
 
-#: builtin/sparse-checkout.c:413
+#: builtin/sparse-checkout.c:408
 msgid "git sparse-checkout (set|add) (--stdin | <patterns>)"
 msgstr "git sparse-checkout (set|add) (--stdin | <mönster>)"
 
-#: builtin/sparse-checkout.c:438
+#: builtin/sparse-checkout.c:433
 #, c-format
 msgid "unable to unquote C-style string '%s'"
 msgstr "kan inte ta bort citering av C-sträng \"%s\""
 
-#: builtin/sparse-checkout.c:492 builtin/sparse-checkout.c:516
+#: builtin/sparse-checkout.c:487 builtin/sparse-checkout.c:511
 msgid "unable to load existing sparse-checkout patterns"
 msgstr "kunde inte läsa in existerande mönster för gles utcheckning"
 
-#: builtin/sparse-checkout.c:561
+#: builtin/sparse-checkout.c:556
 msgid "read patterns from standard in"
 msgstr "läs mönster från standard in"
 
-#: builtin/sparse-checkout.c:576
+#: builtin/sparse-checkout.c:571
 msgid "git sparse-checkout reapply"
 msgstr "git sparse-checkout reapply"
 
-#: builtin/sparse-checkout.c:595
+#: builtin/sparse-checkout.c:590
 msgid "git sparse-checkout disable"
 msgstr "git sparse-checkout disable"
 
-#: builtin/sparse-checkout.c:623
+#: builtin/sparse-checkout.c:618
 msgid "error while refreshing working directory"
 msgstr "fel vid uppdatering av arbetskatalog"
 
@@ -21377,153 +21777,164 @@ msgid "%s is not a valid reference"
 msgstr "%s är inte en giltigt referens"
 
 #: builtin/stash.c:225
-msgid "git stash clear with parameters is unimplemented"
-msgstr "\"git stash clear\" med parametrar har inte implementerats"
+msgid "git stash clear with arguments is unimplemented"
+msgstr "\"git stash clear\" med argument har inte implementerats"
+
+#: builtin/stash.c:429
+#, c-format
+msgid ""
+"WARNING: Untracked file in way of tracked file!  Renaming\n"
+"            %s -> %s\n"
+"         to make room.\n"
+msgstr ""
+"VARNING: En ospårad fil är i vägen för en spårad fil! Byter namn\n"
+"            %s -> %s\n"
+"         för att lämna plats.\n"
 
-#: builtin/stash.c:404
+#: builtin/stash.c:490
 msgid "cannot apply a stash in the middle of a merge"
 msgstr "kan inte tillämpa en \"stash\" mitt i en sammanslagning"
 
-#: builtin/stash.c:415
+#: builtin/stash.c:501
 #, c-format
 msgid "could not generate diff %s^!."
 msgstr "kunde inte skapa diff %s^!."
 
-#: builtin/stash.c:422
+#: builtin/stash.c:508
 msgid "conflicts in index. Try without --index."
 msgstr "konflikter i indexet. Testa utan --index."
 
-#: builtin/stash.c:428
+#: builtin/stash.c:514
 msgid "could not save index tree"
 msgstr "kunde inte spara indexträd"
 
-#: builtin/stash.c:437
+#: builtin/stash.c:523
 msgid "could not restore untracked files from stash"
 msgstr "kunde inte återställa ospårade filer från stash-post"
 
-#: builtin/stash.c:451
+#: builtin/stash.c:537
 #, c-format
 msgid "Merging %s with %s"
 msgstr "Slår ihop %s med %s"
 
-#: builtin/stash.c:461
+#: builtin/stash.c:547
 msgid "Index was not unstashed."
 msgstr "Indexet har inte tagits upp ur \"stash\":en"
 
-#: builtin/stash.c:522 builtin/stash.c:620
+#: builtin/stash.c:589 builtin/stash.c:687
 msgid "attempt to recreate the index"
 msgstr "försök återskapa indexet"
 
-#: builtin/stash.c:566
+#: builtin/stash.c:633
 #, c-format
 msgid "Dropped %s (%s)"
 msgstr "Kastade %s (%s)"
 
-#: builtin/stash.c:569
+#: builtin/stash.c:636
 #, c-format
 msgid "%s: Could not drop stash entry"
 msgstr "%s: Kunde inte kasta \"stash\"-post"
 
-#: builtin/stash.c:582
+#: builtin/stash.c:649
 #, c-format
 msgid "'%s' is not a stash reference"
 msgstr "\"%s\" är inte en \"stash\"-referens"
 
-#: builtin/stash.c:632
+#: builtin/stash.c:699
 msgid "The stash entry is kept in case you need it again."
 msgstr "Stash-posten behålls ifall du behöver den igen."
 
-#: builtin/stash.c:655
+#: builtin/stash.c:722
 msgid "No branch name specified"
 msgstr "Inget grennamn angavs"
 
-#: builtin/stash.c:799 builtin/stash.c:836
+#: builtin/stash.c:866 builtin/stash.c:903
 #, c-format
 msgid "Cannot update %s with %s"
 msgstr "Kan inte uppdatera %s med %s"
 
-#: builtin/stash.c:817 builtin/stash.c:1471 builtin/stash.c:1536
+#: builtin/stash.c:884 builtin/stash.c:1538 builtin/stash.c:1603
 msgid "stash message"
 msgstr "\"stash\"-meddelande"
 
-#: builtin/stash.c:827
+#: builtin/stash.c:894
 msgid "\"git stash store\" requires one <commit> argument"
 msgstr "\"git stash store\" kräver ett <incheckning>-argument"
 
-#: builtin/stash.c:1042
+#: builtin/stash.c:1109
 msgid "No changes selected"
 msgstr "Inga ändringar valda"
 
-#: builtin/stash.c:1142
+#: builtin/stash.c:1209
 msgid "You do not have the initial commit yet"
 msgstr "Du har inte den första incheckningen ännu"
 
-#: builtin/stash.c:1169
+#: builtin/stash.c:1236
 msgid "Cannot save the current index state"
 msgstr "Kan inte spara aktuellt tillstånd för indexet"
 
-#: builtin/stash.c:1178
+#: builtin/stash.c:1245
 msgid "Cannot save the untracked files"
 msgstr "Kan inte spara ospårade filer"
 
-#: builtin/stash.c:1189 builtin/stash.c:1198
+#: builtin/stash.c:1256 builtin/stash.c:1265
 msgid "Cannot save the current worktree state"
 msgstr "Kan inte spara aktuellt tillstånd för arbetskatalogen"
 
-#: builtin/stash.c:1226
+#: builtin/stash.c:1293
 msgid "Cannot record working tree state"
 msgstr "Kan inte registrera tillstånd för arbetskatalog"
 
-#: builtin/stash.c:1275
+#: builtin/stash.c:1342
 msgid "Can't use --patch and --include-untracked or --all at the same time"
 msgstr "Kan inte använda --patch och --include-untracked eller --all samtidigt"
 
-#: builtin/stash.c:1291
+#: builtin/stash.c:1358
 msgid "Did you forget to 'git add'?"
 msgstr "Glömde du använda \"git add\"?"
 
-#: builtin/stash.c:1306
+#: builtin/stash.c:1373
 msgid "No local changes to save"
 msgstr "Inga lokala ändringar att spara"
 
-#: builtin/stash.c:1313
+#: builtin/stash.c:1380
 msgid "Cannot initialize stash"
 msgstr "Kan inte initiera \"stash\""
 
-#: builtin/stash.c:1328
+#: builtin/stash.c:1395
 msgid "Cannot save the current status"
 msgstr "Kan inte spara aktuell status"
 
-#: builtin/stash.c:1333
+#: builtin/stash.c:1400
 #, c-format
 msgid "Saved working directory and index state %s"
 msgstr "Sparade arbetskatalogen och indexstatus %s"
 
-#: builtin/stash.c:1423
+#: builtin/stash.c:1490
 msgid "Cannot remove worktree changes"
 msgstr "Kan inte ta bort ändringar i arbetskatalogen"
 
-#: builtin/stash.c:1462 builtin/stash.c:1527
+#: builtin/stash.c:1529 builtin/stash.c:1594
 msgid "keep index"
 msgstr "behåll indexet"
 
-#: builtin/stash.c:1464 builtin/stash.c:1529
+#: builtin/stash.c:1531 builtin/stash.c:1596
 msgid "stash in patch mode"
 msgstr "\"stash\" i \"patch\"-läge"
 
-#: builtin/stash.c:1465 builtin/stash.c:1530
+#: builtin/stash.c:1532 builtin/stash.c:1597
 msgid "quiet mode"
 msgstr "tyst läge"
 
-#: builtin/stash.c:1467 builtin/stash.c:1532
+#: builtin/stash.c:1534 builtin/stash.c:1599
 msgid "include untracked files in stash"
 msgstr "ta med ospårade filer i \"stash\""
 
-#: builtin/stash.c:1469 builtin/stash.c:1534
+#: builtin/stash.c:1536 builtin/stash.c:1601
 msgid "include ignore files"
 msgstr "ta med ignorerade filer"
 
-#: builtin/stash.c:1569
+#: builtin/stash.c:1636
 msgid ""
 "the stash.useBuiltin support has been removed!\n"
 "See its entry in 'git help config' for details."
@@ -21601,12 +22012,13 @@ msgstr ""
 "."
 
 #: builtin/submodule--helper.c:565
-msgid "Suppress output of entering each submodule command"
-msgstr "Dölj utdata från för varje undermodulskommando som startas"
+msgid "suppress output of entering each submodule command"
+msgstr "dölj utdata från för varje undermodulskommando som startas"
 
-#: builtin/submodule--helper.c:567 builtin/submodule--helper.c:1487
-msgid "Recurse into nested submodules"
-msgstr "Rekursera in i nästlade undermoduler"
+#: builtin/submodule--helper.c:567 builtin/submodule--helper.c:888
+#: builtin/submodule--helper.c:1487
+msgid "recurse into nested submodules"
+msgstr "rekursera in i nästlade undermoduler"
 
 #: builtin/submodule--helper.c:572
 msgid "git submodule--helper foreach [--quiet] [--recursive] [--] <command>"
@@ -21642,8 +22054,8 @@ 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:709
-msgid "Suppress output for initializing a submodule"
-msgstr "Dölj utdata från initiering av undermodul"
+msgid "suppress output for initializing a submodule"
+msgstr "dölj utdata från initiering av undermodul"
 
 #: builtin/submodule--helper.c:714
 msgid "git submodule--helper init [<options>] [<path>]"
@@ -21665,21 +22077,17 @@ msgid "failed to recurse into submodule '%s'"
 msgstr "misslyckades rekursera in i undermodulen \"%s\""
 
 #: builtin/submodule--helper.c:886 builtin/submodule--helper.c:1623
-msgid "Suppress submodule status output"
-msgstr "Hindra statusutskrift för undermodul"
+msgid "suppress submodule status output"
+msgstr "hindra statusutskrift för undermodul"
 
 #: builtin/submodule--helper.c:887
 msgid ""
-"Use commit stored in the index instead of the one stored in the submodule "
+"use commit stored in the index instead of the one stored in the submodule "
 "HEAD"
 msgstr ""
-"Visa incheckning från indexet istället för den som lagrats i undermodulens "
+"visa incheckning från indexet istället för den som lagrats i undermodulens "
 "HEAD"
 
-#: builtin/submodule--helper.c:888
-msgid "recurse into nested submodules"
-msgstr "rekursera in i nästlade undermoduler"
-
 #: builtin/submodule--helper.c:893
 msgid "git submodule status [--quiet] [--cached] [--recursive] [<path>...]"
 msgstr "git submodule status [--quitet] [--cached] [--recursive] [<sökväg>...]"
@@ -21766,8 +22174,8 @@ msgid "failed to update remote for submodule '%s'"
 msgstr "misslyckades uppdatera fjärr för undermodulsökväg \"%s\""
 
 #: builtin/submodule--helper.c:1485
-msgid "Suppress output of synchronizing submodule url"
-msgstr "Dölj utdata från synkroniering av undermodul-url"
+msgid "suppress output of synchronizing submodule url"
+msgstr "dölj utdata från synkronisering av undermodul-url"
 
 #: builtin/submodule--helper.c:1492
 msgid "git submodule--helper sync [--quiet] [--recursive] [<path>]"
@@ -21812,13 +22220,13 @@ 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:1624
-msgid "Remove submodule working trees even if they contain local changes"
+msgid "remove submodule working trees even if they contain local changes"
 msgstr ""
-"Ta bort undermodulers arbetskataloger även om de innehåller lokala ändringar"
+"ta bort undermodulers arbetskataloger även om de innehåller lokala ändringar"
 
 #: builtin/submodule--helper.c:1625
-msgid "Unregister all submodules"
-msgstr "Avregistrera alla undermoduler"
+msgid "unregister all submodules"
+msgstr "avregistrera alla undermoduler"
 
 #: builtin/submodule--helper.c:1630
 msgid ""
@@ -21964,8 +22372,8 @@ msgid "rebase, merge, checkout or none"
 msgstr "rebase, merge, checkout eller none"
 
 #: builtin/submodule--helper.c:2340
-msgid "Create a shallow clone truncated to the specified number of revisions"
-msgstr "Skapa en grund klon trunkerad till angivet antal revisioner"
+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:2343
 msgid "parallel jobs"
@@ -22035,8 +22443,8 @@ msgid "please make sure that the .gitmodules file is in the working tree"
 msgstr "se till att .gitmodules finns i arbetskatalogen"
 
 #: builtin/submodule--helper.c:2681
-msgid "Suppress output for setting url of a submodule"
-msgstr "Dölj utdata från inställning av url för undermodul"
+msgid "suppress output for setting url of a submodule"
+msgstr "dölj utdata från inställning av url för undermodul"
 
 #: builtin/submodule--helper.c:2685
 msgid "git submodule--helper set-url [--quiet] <path> <newurl>"
@@ -22068,7 +22476,7 @@ msgstr "--branch eller --default krävs"
 msgid "--branch and --default are mutually exclusive"
 msgstr "--branch och --default är ömsesidigt uteslutande"
 
-#: builtin/submodule--helper.c:2792 git.c:438 git.c:711
+#: builtin/submodule--helper.c:2792 git.c:441 git.c:714
 #, c-format
 msgid "%s doesn't support --super-prefix"
 msgstr "%s stöder inte --super-prefix"
@@ -22140,12 +22548,12 @@ msgstr "git tag -v [--format=<format>] <taggnamn>..."
 msgid "tag '%s' not found."
 msgstr "taggen \"%s\" hittades inte."
 
-#: builtin/tag.c:105
+#: builtin/tag.c:124
 #, c-format
 msgid "Deleted tag '%s' (was %s)\n"
 msgstr "Tog bort tagg \"%s\" (var %s)\n"
 
-#: builtin/tag.c:135
+#: builtin/tag.c:159
 #, c-format
 msgid ""
 "\n"
@@ -22158,7 +22566,7 @@ msgstr ""
 "  %s\n"
 "Rader som inleds med \"%c\" ignoreras.\n"
 
-#: builtin/tag.c:139
+#: builtin/tag.c:163
 #, c-format
 msgid ""
 "\n"
@@ -22173,15 +22581,11 @@ msgstr ""
 "Rader som inleds med \"%c\" kommer behållas; du kan själv ta bort dem om\n"
 "du vill.\n"
 
-#: builtin/tag.c:198
+#: builtin/tag.c:230
 msgid "unable to sign the tag"
 msgstr "kunde inte signera taggen"
 
-#: builtin/tag.c:200
-msgid "unable to write tag file"
-msgstr "kunde inte skriva tagg-filen"
-
-#: builtin/tag.c:216
+#: builtin/tag.c:248
 #, c-format
 msgid ""
 "You have created a nested tag. The object referred to by your new tag is\n"
@@ -22194,138 +22598,134 @@ msgstr ""
 "\n"
 "\tgit tag -f %s %s^{}"
 
-#: builtin/tag.c:232
+#: builtin/tag.c:264
 msgid "bad object type."
 msgstr "felaktig objekttyp."
 
-#: builtin/tag.c:285
+#: builtin/tag.c:317
 msgid "no tag message?"
 msgstr "inget taggmeddelande?"
 
-#: builtin/tag.c:292
+#: builtin/tag.c:324
 #, c-format
 msgid "The tag message has been left in %s\n"
 msgstr "Taggmeddelandet har lämnats i %s\n"
 
-#: builtin/tag.c:403
+#: builtin/tag.c:435
 msgid "list tag names"
 msgstr "lista taggnamn"
 
-#: builtin/tag.c:405
+#: builtin/tag.c:437
 msgid "print <n> lines of each tag message"
 msgstr "visa <n> rader från varje taggmeddelande"
 
-#: builtin/tag.c:407
+#: builtin/tag.c:439
 msgid "delete tags"
 msgstr "ta bort taggar"
 
-#: builtin/tag.c:408
+#: builtin/tag.c:440
 msgid "verify tags"
 msgstr "verifiera taggar"
 
-#: builtin/tag.c:410
+#: builtin/tag.c:442
 msgid "Tag creation options"
 msgstr "Alternativ för att skapa taggar"
 
-#: builtin/tag.c:412
+#: builtin/tag.c:444
 msgid "annotated tag, needs a message"
 msgstr "annoterad tagg, behöver meddelande"
 
-#: builtin/tag.c:414
+#: builtin/tag.c:446
 msgid "tag message"
 msgstr "taggmeddelande"
 
-#: builtin/tag.c:416
+#: builtin/tag.c:448
 msgid "force edit of tag message"
 msgstr "tvinga redigering av incheckningsmeddelande"
 
-#: builtin/tag.c:417
+#: builtin/tag.c:449
 msgid "annotated and GPG-signed tag"
 msgstr "annoterad och GPG-signerad tagg"
 
-#: builtin/tag.c:420
+#: builtin/tag.c:452
 msgid "use another key to sign the tag"
 msgstr "använd annan nyckel för att signera taggen"
 
-#: builtin/tag.c:421
+#: builtin/tag.c:453
 msgid "replace the tag if exists"
 msgstr "ersätt taggen om den finns"
 
-#: builtin/tag.c:422 builtin/update-ref.c:505
+#: builtin/tag.c:454 builtin/update-ref.c:505
 msgid "create a reflog"
 msgstr "skapa en reflog"
 
-#: builtin/tag.c:424
+#: builtin/tag.c:456
 msgid "Tag listing options"
 msgstr "Alternativ för listning av taggar"
 
-#: builtin/tag.c:425
+#: builtin/tag.c:457
 msgid "show tag list in columns"
 msgstr "lista taggar i spalter"
 
-#: builtin/tag.c:426 builtin/tag.c:428
+#: builtin/tag.c:458 builtin/tag.c:460
 msgid "print only tags that contain the commit"
 msgstr "visa endast taggar som innehåller incheckningen"
 
-#: builtin/tag.c:427 builtin/tag.c:429
+#: builtin/tag.c:459 builtin/tag.c:461
 msgid "print only tags that don't contain the commit"
 msgstr "visa endast taggar som inte innehåller incheckningen"
 
-#: builtin/tag.c:430
+#: builtin/tag.c:462
 msgid "print only tags that are merged"
 msgstr "visa endast taggar som slagits samman"
 
-#: builtin/tag.c:431
+#: builtin/tag.c:463
 msgid "print only tags that are not merged"
 msgstr "visa endast taggar som ej slagits samman"
 
-#: builtin/tag.c:435
+#: builtin/tag.c:467
 msgid "print only tags of the object"
 msgstr "visa endast taggar för objektet"
 
-#: builtin/tag.c:483
+#: builtin/tag.c:515
 msgid "--column and -n are incompatible"
 msgstr "--column och -n är inkompatibla"
 
-#: builtin/tag.c:505
+#: builtin/tag.c:537
 msgid "-n option is only allowed in list mode"
 msgstr "Flaggan -n är endast tillåten i listläge"
 
-#: builtin/tag.c:507
+#: builtin/tag.c:539
 msgid "--contains option is only allowed in list mode"
 msgstr "Flaggan --contains är endast tillåten i listläge"
 
-#: builtin/tag.c:509
+#: builtin/tag.c:541
 msgid "--no-contains option is only allowed in list mode"
 msgstr "Flaggan --no-contains är endast tillåten i listläge"
 
-#: builtin/tag.c:511
+#: builtin/tag.c:543
 msgid "--points-at option is only allowed in list mode"
 msgstr "Flaggan --points-at är endast tillåten i listläge"
 
-#: builtin/tag.c:513
+#: builtin/tag.c:545
 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:524
+#: builtin/tag.c:556
 msgid "only one -F or -m option is allowed."
 msgstr "endast en av flaggorna -F eller -m tillåts."
 
-#: builtin/tag.c:543
-msgid "too many params"
-msgstr "för många parametrar"
-
-#: builtin/tag.c:549
+#: builtin/tag.c:581
 #, c-format
 msgid "'%s' is not a valid tag name."
 msgstr "\"%s\" är inte ett giltigt taggnamn."
 
-#: builtin/tag.c:554
+#: builtin/tag.c:586
 #, c-format
 msgid "tag '%s' already exists"
 msgstr "taggen \"%s\" finns redan"
 
-#: builtin/tag.c:585
+#: builtin/tag.c:617
 #, c-format
 msgid "Updated tag '%s' (was %s)\n"
 msgstr "Uppdaterad tagg \"%s\" (var %s)\n"
@@ -22677,89 +23077,63 @@ msgstr "git verify-tag [-v | --verbose] [--format=<format] <tagg>..."
 msgid "print tag contents"
 msgstr "visa innehåll för tag"
 
-#: builtin/worktree.c:17
+#: builtin/worktree.c:18
 msgid "git worktree add [<options>] <path> [<commit-ish>]"
 msgstr "git worktree add [<flaggor>] <sökväg> [<incheckning-igt>]"
 
-#: builtin/worktree.c:18
+#: builtin/worktree.c:19
 msgid "git worktree list [<options>]"
 msgstr "git worktree list [<flaggor>]"
 
-#: builtin/worktree.c:19
+#: builtin/worktree.c:20
 msgid "git worktree lock [<options>] <path>"
 msgstr "git worktree lock [<flaggor>] <sökväg>"
 
-#: builtin/worktree.c:20
+#: builtin/worktree.c:21
 msgid "git worktree move <worktree> <new-path>"
 msgstr "git worktree move <arbetskatalog> <ny-sökväg>"
 
-#: builtin/worktree.c:21
+#: builtin/worktree.c:22
 msgid "git worktree prune [<options>]"
 msgstr "git worktree prune [<flaggor>]"
 
-#: builtin/worktree.c:22
+#: builtin/worktree.c:23
 msgid "git worktree remove [<options>] <worktree>"
 msgstr "git worktree remove [<flaggor>] <arbetskatalog>"
 
-#: builtin/worktree.c:23
+#: builtin/worktree.c:24
 msgid "git worktree unlock <path>"
 msgstr "git worktree unlock <sökväg>"
 
-#: builtin/worktree.c:60 builtin/worktree.c:973
+#: builtin/worktree.c:61 builtin/worktree.c:933
 #, c-format
 msgid "failed to delete '%s'"
 msgstr "misslyckades ta bort \"%s\""
 
-#: builtin/worktree.c:85
-msgid "not a valid directory"
-msgstr "inte i en giltig katalog"
-
-#: builtin/worktree.c:91
-msgid "gitdir file does not exist"
-msgstr "gitdir-filen existerar inte"
-
-#: builtin/worktree.c:96 builtin/worktree.c:105
-#, c-format
-msgid "unable to read gitdir file (%s)"
-msgstr "kunde inte läsa gitdir-filen (%s)"
-
-#: builtin/worktree.c:115
-#, c-format
-msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
-msgstr "kort läsning (förväntade %<PRIuMAX> byte, läste %<PRIuMAX>)"
-
-#: builtin/worktree.c:123
-msgid "invalid gitdir file"
-msgstr "ogiltig gitdir-fil"
-
-#: builtin/worktree.c:131
-msgid "gitdir file points to non-existent location"
-msgstr "gitdir-filen pekar på en ickeexisterande plats"
-
-#: builtin/worktree.c:146
+#: builtin/worktree.c:74
 #, c-format
 msgid "Removing %s/%s: %s"
 msgstr "Tar bort %s/%s: %s"
 
-#: builtin/worktree.c:221
+#: builtin/worktree.c:149
 msgid "report pruned working trees"
 msgstr "rapportera borttagna arbetskataloger"
 
-#: builtin/worktree.c:223
+#: builtin/worktree.c:151
 msgid "expire working trees older than <time>"
 msgstr "låt tid gå ut för arbetskataloger äldre än <tid>"
 
-#: builtin/worktree.c:293
+#: builtin/worktree.c:221
 #, c-format
 msgid "'%s' already exists"
 msgstr "\"%s\" finns redan"
 
-#: builtin/worktree.c:302
+#: builtin/worktree.c:230
 #, c-format
 msgid "unusable worktree destination '%s'"
 msgstr "oanvändbar mål för arbetskatalog \"%s\""
 
-#: builtin/worktree.c:307
+#: builtin/worktree.c:235
 #, c-format
 msgid ""
 "'%s' is a missing but locked worktree;\n"
@@ -22769,7 +23143,7 @@ msgstr ""
 "använd \"%s -f -f\" för att överstyra, eller \"unlock\" och \"prune\" eller "
 "\"remove\" för att rensa"
 
-#: builtin/worktree.c:309
+#: builtin/worktree.c:237
 #, c-format
 msgid ""
 "'%s' is a missing but already registered worktree;\n"
@@ -22779,116 +23153,129 @@ msgstr ""
 "använd \"%s -f\" för att överstyra, eller \"prune\" eller \"remove\" för att "
 "rensa"
 
-#: builtin/worktree.c:360
+#: builtin/worktree.c:288
 #, c-format
 msgid "could not create directory of '%s'"
 msgstr "kunde inte skapa katalogen \"%s\""
 
-#: builtin/worktree.c:494 builtin/worktree.c:500
+#: builtin/worktree.c:422 builtin/worktree.c:428
 #, c-format
 msgid "Preparing worktree (new branch '%s')"
 msgstr "Förbereder arbetskatalog (ny gren \"%s\")"
 
-#: builtin/worktree.c:496
+#: builtin/worktree.c:424
 #, 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:505
+#: builtin/worktree.c:433
 #, c-format
 msgid "Preparing worktree (checking out '%s')"
 msgstr "Förbereder arbetskatalog (checkar ut \"%s\")"
 
-#: builtin/worktree.c:511
+#: builtin/worktree.c:439
 #, c-format
 msgid "Preparing worktree (detached HEAD %s)"
 msgstr "Förbereder arbetskatalog (frånkopplat HEAD %s)"
 
-#: builtin/worktree.c:552
+#: builtin/worktree.c:480
 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:555
+#: builtin/worktree.c:483
 msgid "create a new branch"
 msgstr "skapa en ny gren"
 
-#: builtin/worktree.c:557
+#: builtin/worktree.c:485
 msgid "create or reset a branch"
 msgstr "skapa eller återställ en gren"
 
-#: builtin/worktree.c:559
+#: builtin/worktree.c:487
 msgid "populate the new working tree"
 msgstr "befolka den nya arbetskatalogen"
 
-#: builtin/worktree.c:560
+#: builtin/worktree.c:488
 msgid "keep the new working tree locked"
 msgstr "låt arbetskatalogen förbli låst"
 
-#: builtin/worktree.c:563
+#: builtin/worktree.c:491
 msgid "set up tracking mode (see git-branch(1))"
 msgstr "ställ in spårningsläge (se git-branch(1))"
 
-#: builtin/worktree.c:566
+#: builtin/worktree.c:494
 msgid "try to match the new branch name with a remote-tracking branch"
 msgstr "försök träffa namn på ny gren mot en fjärrspårande gren"
 
-#: builtin/worktree.c:574
+#: builtin/worktree.c:502
 msgid "-b, -B, and --detach are mutually exclusive"
 msgstr "-b, -B och --detach är ömsesidigt uteslutande"
 
-#: builtin/worktree.c:635
+#: builtin/worktree.c:563
 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:758
+#: builtin/worktree.c:680
+msgid "show extended annotations and reasons, if available"
+msgstr "visa utökade annoteringar och grunder, om tillgängliga"
+
+#: builtin/worktree.c:682
+msgid "add 'prunable' annotation to worktrees older than <time>"
+msgstr ""
+"lägg till \"prunable\"-annoteringar till arbetskataloger äldre än <tid>"
+
+#: builtin/worktree.c:691
+msgid "--verbose and --porcelain are mutually exclusive"
+msgstr "--verbose och --porcelain är ömsesidigt uteslutande"
+
+#: builtin/worktree.c:718
 msgid "reason for locking"
 msgstr "orsak till lås"
 
-#: builtin/worktree.c:770 builtin/worktree.c:803 builtin/worktree.c:877
-#: builtin/worktree.c:1001
+#: builtin/worktree.c:730 builtin/worktree.c:763 builtin/worktree.c:837
+#: builtin/worktree.c:961
 #, c-format
 msgid "'%s' is not a working tree"
 msgstr "\"%s\" är inte en arbetskatalog"
 
-#: builtin/worktree.c:772 builtin/worktree.c:805
+#: builtin/worktree.c:732 builtin/worktree.c:765
 msgid "The main working tree cannot be locked or unlocked"
 msgstr "Huvudarbetskatalogen kan inte låsas eller låsas upp"
 
-#: builtin/worktree.c:777
+#: builtin/worktree.c:737
 #, c-format
 msgid "'%s' is already locked, reason: %s"
 msgstr "\"%s\" är redan låst, orsak: %s"
 
-#: builtin/worktree.c:779
+#: builtin/worktree.c:739
 #, c-format
 msgid "'%s' is already locked"
 msgstr "\"%s\" är redan låst"
 
-#: builtin/worktree.c:807
+#: builtin/worktree.c:767
 #, c-format
 msgid "'%s' is not locked"
 msgstr "\"%s\" är inte låst"
 
-#: builtin/worktree.c:848
+#: builtin/worktree.c:808
 msgid "working trees containing submodules cannot be moved or removed"
 msgstr "arbetskataloger med undermoduler kan inte flyttas eller tas bort"
 
-#: builtin/worktree.c:856
+#: builtin/worktree.c:816
 msgid "force move even if worktree is dirty or locked"
 msgstr "tvinga flyttning även om arbetskatalogen är smutsig eller låst"
 
-#: builtin/worktree.c:879 builtin/worktree.c:1003
+#: builtin/worktree.c:839 builtin/worktree.c:963
 #, c-format
 msgid "'%s' is a main working tree"
 msgstr "\"%s\" är inte en huvudarbetskatalog"
 
-#: builtin/worktree.c:884
+#: builtin/worktree.c:844
 #, c-format
 msgid "could not figure out destination name from '%s'"
 msgstr "kunde inte lista ut målnamn från \"%s\""
 
-#: builtin/worktree.c:897
+#: builtin/worktree.c:857
 #, c-format
 msgid ""
 "cannot move a locked working tree, lock reason: %s\n"
@@ -22897,7 +23284,7 @@ msgstr ""
 "kan inte flytta en låst arbetskatalog, orsak till lås: %s\n"
 "använd \"move -f -f\" för att överstyra, eller lås upp först"
 
-#: builtin/worktree.c:899
+#: builtin/worktree.c:859
 msgid ""
 "cannot move a locked working tree;\n"
 "use 'move -f -f' to override or unlock first"
@@ -22905,38 +23292,38 @@ msgstr ""
 "kan inte flytta en låst arbetskatalog;\n"
 "använd \"move -f -f\" för att överstyra, eller lås upp först"
 
-#: builtin/worktree.c:902
+#: builtin/worktree.c:862
 #, c-format
 msgid "validation failed, cannot move working tree: %s"
 msgstr "kontroll misslyckades, kan inte flytta arbetskatalog: %s"
 
-#: builtin/worktree.c:907
+#: builtin/worktree.c:867
 #, c-format
 msgid "failed to move '%s' to '%s'"
 msgstr "misslyckades flytta \"%s\" till \"%s\""
 
-#: builtin/worktree.c:953
+#: builtin/worktree.c:913
 #, c-format
 msgid "failed to run 'git status' on '%s'"
 msgstr "misslyckades köra \"git status\" på \"%s\""
 
-#: builtin/worktree.c:957
+#: builtin/worktree.c:917
 #, c-format
 msgid "'%s' contains modified or untracked files, use --force to delete it"
 msgstr ""
 "\"%s\" innehåller ändrade eller ospårade filer, använd --force för att ta "
 "bort det"
 
-#: builtin/worktree.c:962
+#: builtin/worktree.c:922
 #, 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:985
+#: builtin/worktree.c:945
 msgid "force removal even if worktree is dirty or locked"
 msgstr "tvinga ta bort även om arbetskatalogen är smutsig eller låst"
 
-#: builtin/worktree.c:1008
+#: builtin/worktree.c:968
 #, c-format
 msgid ""
 "cannot remove a locked working tree, lock reason: %s\n"
@@ -22945,7 +23332,7 @@ msgstr ""
 "kan inte ta bort en låst arbetskatalog, orsak till låset: %s\n"
 "använd \"remove -f -f\" för att överstyra, eller lås upp först"
 
-#: builtin/worktree.c:1010
+#: builtin/worktree.c:970
 msgid ""
 "cannot remove a locked working tree;\n"
 "use 'remove -f -f' to override or unlock first"
@@ -22953,17 +23340,17 @@ msgstr ""
 "kan inte ta bort en låst arbetskatalog;\n"
 "använd \"remove -f -f\" för att överstyra, eller lås upp först"
 
-#: builtin/worktree.c:1013
+#: builtin/worktree.c:973
 #, c-format
 msgid "validation failed, cannot remove working tree: %s"
 msgstr "kontroll misslyckades, kan inte ta bort arbetskatalog: %s"
 
-#: builtin/worktree.c:1037
+#: builtin/worktree.c:997
 #, c-format
 msgid "repair: %s: %s"
 msgstr "reparera: %s: %s"
 
-#: builtin/worktree.c:1040
+#: builtin/worktree.c:1000
 #, c-format
 msgid "error: %s: %s"
 msgstr "fel: %s: %s"
@@ -22984,16 +23371,24 @@ msgstr "visa trädobjekt för underkatalogen <prefix>"
 msgid "only useful for debugging"
 msgstr "endast användbart vid felsökning"
 
-#: http-fetch.c:114
+#: http-fetch.c:118
 #, c-format
 msgid "argument to --packfile must be a valid hash (got '%s')"
 msgstr ""
 "argumentet till --packfile måste vara ett giltigt hashvärde (fick '%s')"
 
-#: http-fetch.c:122
+#: http-fetch.c:128
 msgid "not a git repository"
 msgstr "inte ett git-arkiv"
 
+#: http-fetch.c:134
+msgid "--packfile requires --index-pack-args"
+msgstr "--packfile kräver --index-pack-args"
+
+#: http-fetch.c:143
+msgid "--index-pack-args can only be used with --packfile"
+msgstr "--index-pack-args kan endast användas med --packfile"
+
 #: t/helper/test-fast-rebase.c:141
 msgid "unhandled options"
 msgstr "flaggor som inte hanterats"
@@ -23026,6 +23421,7 @@ msgid ""
 "           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--"
 "bare]\n"
 "           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]\n"
+"           [--super-prefix=<path>] [--config-env=<name>=<envvar>]\n"
 "           <command> [<args>]"
 msgstr ""
 "git [--version] [--help] [-C <sökväg>] [-c <namn>=<värde>]\n"
@@ -23034,9 +23430,10 @@ msgstr ""
 "           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--"
 "bare]\n"
 "           [--git-dir=<sökväg>] [--work-tree=<sökväg>] [--namespace=<namn>]\n"
+"           [--super-prefix=<sökväg>] [--config-env=<namn>=<miljövar>]\n"
 "           <kommando> [<flaggor>]"
 
-#: git.c:35
+#: git.c:36
 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"
@@ -23048,47 +23445,47 @@ msgstr ""
 "<koncept>\" för att läsa mer om specifika underkommandon och koncept.\n"
 "See \"git help git\" för en översikt över systemet."
 
-#: git.c:187
+#: git.c:188
 #, c-format
 msgid "no directory given for --git-dir\n"
 msgstr "ingen katalog angavs för --git-dir\n"
 
-#: git.c:201
+#: git.c:202
 #, c-format
 msgid "no namespace given for --namespace\n"
 msgstr "ingen namnrymd angavs för --namespace\n"
 
-#: git.c:215
+#: git.c:216
 #, c-format
 msgid "no directory given for --work-tree\n"
 msgstr "ingen katalog angavs för --work-tree\n"
 
-#: git.c:229
+#: git.c:230
 #, c-format
 msgid "no prefix given for --super-prefix\n"
 msgstr "inget prefix angavs för --super-prefix\n"
 
-#: git.c:251
+#: git.c:252
 #, c-format
 msgid "-c expects a configuration string\n"
 msgstr "-c förväntar en konfigurationssträng\n"
 
-#: git.c:289
+#: git.c:292
 #, c-format
 msgid "no directory given for -C\n"
 msgstr "ingen katalog angavs för -C\n"
 
-#: git.c:315
+#: git.c:318
 #, c-format
 msgid "unknown option: %s\n"
 msgstr "okänd flagga: %s\n"
 
-#: git.c:364
+#: git.c:367
 #, c-format
 msgid "while expanding alias '%s': '%s'"
 msgstr "vid expandering av aliaset \"%s\": \"%s\""
 
-#: git.c:373
+#: git.c:376
 #, c-format
 msgid ""
 "alias '%s' changes environment variables.\n"
@@ -23097,39 +23494,39 @@ msgstr ""
 "aliaset \"%s\" ändrar miljövariabler.\n"
 "Du kan använda \"!git\" i aliaset för att göra det"
 
-#: git.c:380
+#: git.c:383
 #, c-format
 msgid "empty alias for %s"
 msgstr "tomt alias för %s"
 
-#: git.c:383
+#: git.c:386
 #, c-format
 msgid "recursive alias: %s"
 msgstr "rekursivt alias: %s"
 
-#: git.c:465
+#: git.c:468
 msgid "write failure on standard output"
 msgstr "skrivfel på standard ut"
 
-#: git.c:467
+#: git.c:470
 msgid "unknown write failure on standard output"
 msgstr "okänt skrivfel på standard ut"
 
-#: git.c:469
+#: git.c:472
 msgid "close failed on standard output"
 msgstr "stäng misslyckades på standard ut"
 
-#: git.c:820
+#: git.c:823
 #, c-format
 msgid "alias loop detected: expansion of '%s' does not terminate:%s"
 msgstr "alias-slinga detekterades: expansionen av \"%s\" avslutas aldrig:%s"
 
-#: git.c:870
+#: git.c:873
 #, c-format
 msgid "cannot handle %s as a builtin"
 msgstr "kan inte hantera %s som inbyggd"
 
-#: git.c:883
+#: git.c:886
 #, c-format
 msgid ""
 "usage: %s\n"
@@ -23138,13 +23535,13 @@ msgstr ""
 "användning: %s\n"
 "\n"
 
-#: git.c:903
+#: git.c:906
 #, 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:915
+#: git.c:918
 #, c-format
 msgid "failed to run command '%s': %s\n"
 msgstr "misslyckades köra kommandot \"%s\": %s\n"
@@ -23377,11 +23774,11 @@ msgid ""
 "with --pathspec-from-file, pathspec elements are separated with NUL character"
 msgstr "med --pathspec-from-file, sökvägsangivelser avdelas med NUL-tecken"
 
-#: ref-filter.h:96
+#: ref-filter.h:99
 msgid "key"
 msgstr "nyckel"
 
-#: ref-filter.h:96
+#: ref-filter.h:99
 msgid "field name to sort on"
 msgstr "fältnamn att sortera på"
 
@@ -23389,14 +23786,6 @@ msgstr "fältnamn att sortera på"
 msgid "update the index with reused conflict resolution if possible"
 msgstr "uppdatera indexet med återanvänd konfliktlösning om möjligt"
 
-#: wt-status.h:80
-msgid "HEAD detached at "
-msgstr "HEAD frånkopplad vid "
-
-#: wt-status.h:81
-msgid "HEAD detached from "
-msgstr "HEAD frånkopplad från "
-
 #: command-list.h:50
 msgid "Add file contents to the index"
 msgstr "Lägg filinnehåll till indexet"
@@ -23728,8 +24117,8 @@ msgid "Write and verify multi-pack-indexes"
 msgstr "Skriv och verifiera multi-pack-index"
 
 #: command-list.h:132
-msgid "Creates a tag object"
-msgstr "Skapar ett taggobjekt"
+msgid "Creates a tag object with extra validation"
+msgstr "skapar ett taggobjekt med extra validering"
 
 #: command-list.h:133
 msgid "Build a tree-object from ls-tree formatted text"
@@ -24036,69 +24425,55 @@ msgid "Specifies intentionally untracked files to ignore"
 msgstr "Ange avsiktligen ospårade filer att ignorera"
 
 #: command-list.h:209
+msgid "Map author/committer names and/or E-Mail addresses"
+msgstr "Mappa författar-/incheckarnamn och/eller -e-postadresser"
+
+#: command-list.h:210
 msgid "Defining submodule properties"
 msgstr "Ange egenskaper för undermoduler"
 
-#: command-list.h:210
+#: command-list.h:211
 msgid "Git namespaces"
 msgstr "Git-namnrymder"
 
-#: command-list.h:211
+#: command-list.h:212
 msgid "Helper programs to interact with remote repositories"
 msgstr "Hjälpprogram för att interagera med fjärrarkiv"
 
-#: command-list.h:212
+#: command-list.h:213
 msgid "Git Repository Layout"
 msgstr "Gits arkivlayout"
 
-#: command-list.h:213
+#: command-list.h:214
 msgid "Specifying revisions and ranges for Git"
 msgstr "Ange versioner och intervall i Git"
 
-#: command-list.h:214
+#: command-list.h:215
 msgid "Mounting one repository inside another"
 msgstr "Monterar ett arkiv inuti ett annat"
 
-#: command-list.h:215
+#: command-list.h:216
 msgid "A tutorial introduction to Git: part two"
 msgstr "Introduktion till Git: del två"
 
-#: command-list.h:216
+#: command-list.h:217
 msgid "A tutorial introduction to Git"
 msgstr "Introduktion till Git"
 
-#: command-list.h:217
+#: command-list.h:218
 msgid "An overview of recommended workflows with Git"
 msgstr "Översikt över rekommenderade arbetsflöden med Git"
 
-#: git-bisect.sh:48
-#, sh-format
-msgid "Bad rev input: $arg"
-msgstr "Felaktig rev-indata: $arg"
-
-#: git-bisect.sh:82
-msgid "No logfile given"
-msgstr "Ingen loggfil angiven"
-
-#: git-bisect.sh:83
-#, sh-format
-msgid "cannot read $file for replaying"
-msgstr "kan inte läsa $file för uppspelning"
-
-#: git-bisect.sh:105
-msgid "?? what are you talking about?"
-msgstr "?? vad menar du?"
-
-#: git-bisect.sh:115
+#: git-bisect.sh:68
 msgid "bisect run failed: no command provided."
 msgstr "bisect-körning misslyckades: inget kommando gavs."
 
-#: git-bisect.sh:120
+#: git-bisect.sh:73
 #, sh-format
 msgid "running $command"
 msgstr "kör $command"
 
-#: git-bisect.sh:127
+#: git-bisect.sh:80
 #, sh-format
 msgid ""
 "bisect run failed:\n"
@@ -24107,11 +24482,11 @@ msgstr ""
 "\"bisect\"-körningen misslyckades:\n"
 "felkod $res från \"$command\" är < 0 eller >= 128"
 
-#: git-bisect.sh:152
+#: git-bisect.sh:105
 msgid "bisect run cannot continue any more"
 msgstr "\"bisect\"-körningen kan inte fortsätta längre"
 
-#: git-bisect.sh:158
+#: git-bisect.sh:111
 #, sh-format
 msgid ""
 "bisect run failed:\n"
@@ -24120,14 +24495,10 @@ msgstr ""
 "\"bisect\"-körningen misslyckades:\n"
 "\"bisect-state $state\" avslutades med felkoden $res"
 
-#: git-bisect.sh:165
+#: git-bisect.sh:118
 msgid "bisect run success"
 msgstr "\"bisect\"-körningen lyckades"
 
-#: git-bisect.sh:173
-msgid "We are not bisecting."
-msgstr "Vi utför ingen bisect för tillfället."
-
 #: git-merge-octopus.sh:46
 msgid ""
 "Error: Your local changes to the following files would be overwritten by "
@@ -25420,6 +25791,96 @@ msgstr ""
 msgid "Do you really want to send %s? [y|N]: "
 msgstr "Vill du verkligen sända %s? [y=ja, n=nej]: "
 
+#~ msgid "repository contains replace objects; skipping commit-graph"
+#~ msgstr "arkivet innehåller replace-objekt; hoppar över incheckningsgraf"
+
+#~ msgid "repository contains (deprecated) grafts; skipping commit-graph"
+#~ msgstr ""
+#~ "arkivet innehåller ympningar (avråds från); hoppar över incheckningsgraf"
+
+#~ msgid "repository is shallow; skipping commit-graph"
+#~ msgstr "källarkivet är grunt; hoppar över incheckningsgraf"
+
+#~ msgid "commit-graph improper chunk offset %08x%08x"
+#~ msgstr "felaktigt offset för stycke %08x%08x i incheckningsgraffilen"
+
+#~ msgid "commit-graph chunk id %08x appears multiple times"
+#~ msgstr "incheckningsgrafens stycke-id %08x förekommer flera gånger"
+
+#~ msgid "invalid chunk offset (too large)"
+#~ msgstr "felaktigt offset för stycke (för stort)"
+
+#~ msgid "Writing chunks to multi-pack-index"
+#~ msgstr "Skriver stycken till multi-pack-index"
+
+#~ msgid "rev-list died"
+#~ msgstr "rev-list dog"
+
+#~ msgid ""
+#~ "git bisect--helper --bisect-write [--no-log] <state> <revision> "
+#~ "<good_term> <bad_term>"
+#~ msgstr ""
+#~ "git bisect--helper --bisect-write [--no-log] <tillstånd> <revision> <term-"
+#~ "för-rätt> <term-för-fel>"
+
+#~ msgid ""
+#~ "git bisect--helper --bisect-check-and-set-terms <command> <good_term> "
+#~ "<bad_term>"
+#~ msgstr ""
+#~ "git bisect--helper --bisect-check-and-set-terms <kommadno> <term-för-"
+#~ "rätt> <term-för-fel>"
+
+#~ msgid "git bisect--helper --bisect-auto-next"
+#~ msgstr "git bisect--helper --bisect-auto-next"
+
+#~ msgid "write out the bisection state in BISECT_LOG"
+#~ msgstr "skriver bisect-tillståndet i BISECT_LOG"
+
+#~ msgid "check and set terms in a bisection state"
+#~ msgstr "visa och ange termer för bisect-tillstånd"
+
+#~ msgid ""
+#~ "verify the next bisection state then checkout the next bisection commit"
+#~ msgstr ""
+#~ "kontrollera nästa bisect-tillstånd och checka så ut nästa bisect-"
+#~ "incheckning"
+
+#~ msgid "--bisect-write requires either 4 or 5 arguments"
+#~ msgstr "--bisect-write kräver antingen 4 eller 5 argument"
+
+#~ msgid "--check-and-set-terms requires 3 arguments"
+#~ msgstr "--check-and-set-terms kräver tre argument"
+
+#~ msgid "--bisect-auto-next requires 0 arguments"
+#~ msgstr "--bisect-auto-next kräver 0 argument"
+
+#~ msgid "Force progress reporting"
+#~ msgstr "Tvinga förloppsrapportering"
+
+#~ msgid "Error deleting remote-tracking branch '%s'"
+#~ msgstr "Fel vid borttagning av fjärrspårande grenen \"%s\""
+
+#~ msgid "Error deleting branch '%s'"
+#~ msgstr "Fel vid borttagning av grenen \"%s\""
+
+#~ msgid "show parse tree for grep expression"
+#~ msgstr "visa analysträd för grep-uttryck"
+
+#~ msgid "too many parameters"
+#~ msgstr "för många parametrar"
+
+#~ msgid "too few parameters"
+#~ msgstr "för få parametrar"
+
+#~ msgid "Recurse into nested submodules"
+#~ msgstr "Rekursera in i nästlade undermoduler"
+
+#~ msgid "too many params"
+#~ msgstr "för många parametrar"
+
+#~ msgid "Bad rev input: $arg"
+#~ msgstr "Felaktig rev-indata: $arg"
+
 #~ msgid "Counting distinct commits in commit graph"
 #~ msgstr "Räknar olika incheckningar i incheckningsgraf"
 
@@ -25456,9 +25917,6 @@ msgstr "Vill du verkligen sända %s? [y=ja, n=nej]: "
 #~ msgid "git bisect--helper --write-terms <bad_term> <good_term>"
 #~ msgstr "git bisect--helper --write-terms <term-för-fel> <term-för-rätt>"
 
-#~ msgid "git bisect--helper --bisect-clean-state"
-#~ msgstr "git bisect--helper --bisect-clean-state"
-
 #~ msgid "git bisect--helper --bisect-autostart"
 #~ msgstr "git bisect--helper --bisect-autostart"
 
@@ -25928,12 +26386,6 @@ msgstr "Vill du verkligen sända %s? [y=ja, n=nej]: "
 #~ msgid "Server supports ofs-delta"
 #~ msgstr "Servern stöder \"ofs-delta\""
 
-#~ msgid "(HEAD detached at %s)"
-#~ msgstr "(HEAD frånkopplat vid %s)"
-
-#~ msgid "(HEAD detached from %s)"
-#~ msgstr "(HEAD frånkopplat från %s)"
-
 #~ msgid "Checking out files"
 #~ msgstr "Checkar ut filer"
 
@@ -27138,9 +27590,6 @@ msgstr "Vill du verkligen sända %s? [y=ja, n=nej]: "
 #~ msgid "--detach cannot be used with -b/-B/--orphan"
 #~ msgstr "--detcah kan inte användas med -b/-B/--orphan"
 
-#~ msgid "--detach cannot be used with -t"
-#~ msgstr "--detach kan inte användas med -t"
-
 #~ msgid "--orphan and -b|-B are mutually exclusive"
 #~ msgstr "--orphan och -b|-B kan inte användas samtidigt"
 
index 30f4c35c905be667ca211c78028eb629dff1bece..388258fc3367ef680c641bcfe90c90af73a00e78 100644 (file)
--- a/po/tr.po
+++ b/po/tr.po
@@ -1,8 +1,8 @@
 # Turkish translations for Git
 # Git Türkçe çevirileri
-# Copyright (C) 2020 Emir SARI <bitigchi@me.com>
+# Copyright (C) 2020-2021 Emir SARI <bitigchi@me.com>
 # This file is distributed under the same license as the Git package.
-# Emir SARI <bitigchi@me.com>, 2020
+# Emir SARI <bitigchi@me.com>, 2020-2021
 #
 # ######################################################### #
 #     Git Türkçe kavramlar dizini / Git Turkish Glossary    #
@@ -11,6 +11,7 @@
 # ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––#
 # 3-way merge                 | 3 yönlü birleştirme         #
 # bare repository             | çıplak depo                 #
+# blame                       | genel bakış
 # blob object                 | ikili nesne                 #
 # branch                      | dal                         #
 # bundle                      | demet                       #
@@ -89,8 +90,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Git Turkish Localization Project\n"
 "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2020-12-21 07:10+0800\n"
-"PO-Revision-Date: 2020-12-16 16:00+0300\n"
+"POT-Creation-Date: 2021-03-04 22:41+0800\n"
+"PO-Revision-Date: 2020-02/27 16:00+0300\n"
 "Last-Translator: Emir SARI <bitigchi@me.com>\n"
 "Language-Team: Turkish (https://github.com/bitigchi/git-po/)\n"
 "Language: tr\n"
@@ -104,9 +105,9 @@ msgstr ""
 msgid "Huh (%s)?"
 msgstr "Pardon (%s)?"
 
-#: add-interactive.c:529 add-interactive.c:830 reset.c:65 sequencer.c:3284
-#: sequencer.c:3735 sequencer.c:3890 builtin/rebase.c:1532
-#: builtin/rebase.c:1955
+#: add-interactive.c:529 add-interactive.c:830 reset.c:65 sequencer.c:3292
+#: sequencer.c:3743 sequencer.c:3898 builtin/rebase.c:1538
+#: builtin/rebase.c:1963
 msgid "could not read index"
 msgstr "indeks okunamadı"
 
@@ -134,7 +135,7 @@ msgstr "Güncelle"
 msgid "could not stage '%s'"
 msgstr "'%s' hazırlanamadı"
 
-#: add-interactive.c:703 add-interactive.c:892 reset.c:89 sequencer.c:3478
+#: add-interactive.c:703 add-interactive.c:892 reset.c:89 sequencer.c:3486
 msgid "could not write index"
 msgstr "indeks yazılamadı"
 
@@ -292,7 +293,7 @@ msgstr "hazırlanmamış"
 
 #: add-interactive.c:1144 apply.c:4987 apply.c:4990 builtin/am.c:2257
 #: builtin/am.c:2260 builtin/bugreport.c:134 builtin/clone.c:124
-#: builtin/fetch.c:147 builtin/merge.c:284 builtin/pull.c:190
+#: builtin/fetch.c:150 builtin/merge.c:285 builtin/pull.c:190
 #: builtin/submodule--helper.c:409 builtin/submodule--helper.c:1818
 #: builtin/submodule--helper.c:1821 builtin/submodule--helper.c:2326
 #: builtin/submodule--helper.c:2329 builtin/submodule--helper.c:2572
@@ -870,7 +871,7 @@ msgstr ""
 msgid "Exiting because of an unresolved conflict."
 msgstr "Çözüme kavuşturulmamış bir çakışmadan dolayı çıkılıyor."
 
-#: advice.c:281 builtin/merge.c:1369
+#: advice.c:281 builtin/merge.c:1370
 msgid "You have not concluded your merge (MERGE_HEAD exists)."
 msgstr "Birleştirmenizi sonuçlandırmadınız (MERGE_HEAD mevcut)."
 
@@ -1169,7 +1170,8 @@ msgstr "yama başarısız oldu: %s:%ld"
 msgid "cannot checkout %s"
 msgstr "%s çıkışı yapılamıyor"
 
-#: apply.c:3405 apply.c:3416 apply.c:3462 midx.c:73 setup.c:308
+#: apply.c:3405 apply.c:3416 apply.c:3462 midx.c:86 pack-revindex.c:213
+#: setup.c:308
 #, c-format
 msgid "failed to read %s"
 msgstr "%s okunamadı"
@@ -1330,7 +1332,7 @@ msgstr "yeni oluşturulan %s dosyası için yardımcı bellek oluşturulamıyor"
 msgid "unable to add cache entry for %s"
 msgstr "%s için önbellek girdisi eklenemiyor"
 
-#: apply.c:4374 builtin/bisect--helper.c:524
+#: apply.c:4374 builtin/bisect--helper.c:523
 #, c-format
 msgid "failed to write to '%s'"
 msgstr "şuraya yazılamadı: '%s'"
@@ -1366,7 +1368,7 @@ msgstr[1] "%%s yaması %d geri çevirme ile uygulanıyor..."
 msgid "truncating .rej filename to %.*s.rej"
 msgstr ".rej dosya adı %.*s.rej olarak kısaltılıyor"
 
-#: apply.c:4576 builtin/fetch.c:927 builtin/fetch.c:1228
+#: apply.c:4576 builtin/fetch.c:933 builtin/fetch.c:1334
 #, c-format
 msgid "cannot open %s"
 msgstr "%s açılamıyor"
@@ -1420,7 +1422,7 @@ msgid_plural "%d lines applied after fixing whitespace errors."
 msgstr[0] "Boşluk hataları düzeltildikten sonra %d satır uygulandı."
 msgstr[1] "Boşluk hataları düzeltildikten sonra %d satır uygulandı."
 
-#: apply.c:4960 builtin/add.c:618 builtin/mv.c:304 builtin/rm.c:406
+#: apply.c:4960 builtin/add.c:626 builtin/mv.c:304 builtin/rm.c:406
 msgid "Unable to write new index file"
 msgstr "Yeni indeks dosyası yazılamıyor"
 
@@ -1488,7 +1490,7 @@ msgstr "bir yama uygulanamıyorsa 3 yönlü birleştirme dene"
 msgid "build a temporary index based on embedded index information"
 msgstr "gömülü indeks bilgisini temel alan geçici bir indeks oluştur"
 
-#: apply.c:5025 builtin/checkout-index.c:182 builtin/ls-files.c:525
+#: apply.c:5025 builtin/checkout-index.c:195 builtin/ls-files.c:540
 msgid "paths are separated with NUL character"
 msgstr "yollar NUL karakteri ile ayrılır"
 
@@ -1498,7 +1500,7 @@ msgstr "en az <n> bağlam satırının eşleştiğinden emin ol"
 
 #: apply.c:5028 builtin/am.c:2245 builtin/interpret-trailers.c:98
 #: builtin/interpret-trailers.c:100 builtin/interpret-trailers.c:102
-#: builtin/pack-objects.c:3562 builtin/rebase.c:1346
+#: builtin/pack-objects.c:3577 builtin/rebase.c:1352
 msgid "action"
 msgstr "eylem"
 
@@ -1526,9 +1528,9 @@ msgstr "reddedilmiş parçaları ilgili *.rej dosyalarında bırak"
 msgid "allow overlapping hunks"
 msgstr "üst üste binen parçalara izin ver"
 
-#: apply.c:5045 builtin/add.c:329 builtin/check-ignore.c:22
-#: builtin/commit.c:1364 builtin/count-objects.c:98 builtin/fsck.c:775
-#: builtin/log.c:2287 builtin/mv.c:123 builtin/read-tree.c:128
+#: apply.c:5045 builtin/add.c:337 builtin/check-ignore.c:22
+#: builtin/commit.c:1364 builtin/count-objects.c:98 builtin/fsck.c:757
+#: builtin/log.c:2286 builtin/mv.c:123 builtin/read-tree.c:128
 msgid "be verbose"
 msgstr "ayrıntı ver"
 
@@ -1615,14 +1617,14 @@ msgstr "git archive --remote <depo> [--exec <komut>] --list"
 msgid "cannot read %s"
 msgstr "%s okunamıyor"
 
-#: archive.c:345 sequencer.c:459 sequencer.c:1736 sequencer.c:2886
-#: sequencer.c:3327 sequencer.c:3436 builtin/am.c:249 builtin/commit.c:786
-#: builtin/merge.c:1138
+#: archive.c:345 sequencer.c:459 sequencer.c:1744 sequencer.c:2894
+#: sequencer.c:3335 sequencer.c:3444 builtin/am.c:249 builtin/commit.c:786
+#: builtin/merge.c:1139
 #, c-format
 msgid "could not read '%s'"
 msgstr "'%s' okunamadı"
 
-#: archive.c:430 builtin/add.c:181 builtin/add.c:594 builtin/rm.c:315
+#: archive.c:430 builtin/add.c:189 builtin/add.c:602 builtin/rm.c:315
 #, c-format
 msgid "pathspec '%s' did not match any files"
 msgstr "yol belirteci '%s' hiçbir dosya ile eşleşmedi"
@@ -1664,7 +1666,7 @@ msgstr "biçim"
 msgid "archive format"
 msgstr "arşiv biçimi"
 
-#: archive.c:556 builtin/log.c:1765
+#: archive.c:556 builtin/log.c:1764
 msgid "prefix"
 msgstr "önek"
 
@@ -1672,11 +1674,11 @@ msgstr "önek"
 msgid "prepend prefix to each pathname in the archive"
 msgstr "öneki arşivdeki tüm yol adlarının başına ekle"
 
-#: archive.c:558 archive.c:561 builtin/blame.c:886 builtin/blame.c:890
-#: builtin/blame.c:891 builtin/commit-tree.c:117 builtin/config.c:135
+#: archive.c:558 archive.c:561 builtin/blame.c:884 builtin/blame.c:888
+#: builtin/blame.c:889 builtin/commit-tree.c:117 builtin/config.c:135
 #: builtin/fast-export.c:1207 builtin/fast-export.c:1209
-#: builtin/fast-export.c:1213 builtin/grep.c:919 builtin/hash-object.c:105
-#: builtin/ls-files.c:561 builtin/ls-files.c:564 builtin/notes.c:412
+#: builtin/fast-export.c:1213 builtin/grep.c:920 builtin/hash-object.c:105
+#: builtin/ls-files.c:576 builtin/ls-files.c:579 builtin/notes.c:412
 #: builtin/notes.c:578 builtin/read-tree.c:123 parse-options.h:190
 msgid "file"
 msgstr "dosya"
@@ -1841,12 +1843,12 @@ msgstr "İkili arama: Birleştirme temelleri sınanmalı\n"
 msgid "a %s revision is needed"
 msgstr "bir %s revizyonu gerekiyor"
 
-#: bisect.c:941 builtin/notes.c:177 builtin/tag.c:255
+#: bisect.c:941 builtin/notes.c:177 builtin/tag.c:287
 #, c-format
 msgid "could not create file '%s'"
 msgstr "'%s' dosyası oluşturulamadı"
 
-#: bisect.c:987 builtin/merge.c:152
+#: bisect.c:987 builtin/merge.c:153
 #, c-format
 msgid "could not read file '%s'"
 msgstr "'%s' dosyası okunamadı"
@@ -1864,10 +1866,10 @@ msgstr "%s hem %s hem %s idi\n"
 #, c-format
 msgid ""
 "No testable commit found.\n"
-"Maybe you started with bad path parameters?\n"
+"Maybe you started with bad path arguments?\n"
 msgstr ""
 "Sınanabilir bir işleme bulunamadı.\n"
-"Hatalı yol parametreleri ile mi başladınız?\n"
+"Hatalı yol argümanları ile mi başladınız?\n"
 
 #: bisect.c:1095
 #, c-format
@@ -1900,11 +1902,11 @@ msgstr ""
 "--reverse ve --first-parent birlikte en son işlemenin belirtilmesini "
 "gerektiriyor"
 
-#: blame.c:2821 bundle.c:213 ref-filter.c:2272 remote.c:2031 sequencer.c:2138
-#: sequencer.c:4633 submodule.c:855 builtin/commit.c:1045 builtin/log.c:409
-#: builtin/log.c:1023 builtin/log.c:1625 builtin/log.c:2046 builtin/log.c:2336
-#: builtin/merge.c:423 builtin/pack-objects.c:3380 builtin/pack-objects.c:3395
-#: builtin/shortlog.c:267
+#: blame.c:2821 bundle.c:213 ref-filter.c:2206 remote.c:2041 sequencer.c:2146
+#: sequencer.c:4641 submodule.c:856 builtin/commit.c:1045 builtin/log.c:411
+#: builtin/log.c:1016 builtin/log.c:1624 builtin/log.c:2045 builtin/log.c:2335
+#: builtin/merge.c:424 builtin/pack-objects.c:3395 builtin/pack-objects.c:3410
+#: builtin/shortlog.c:255
 msgid "revision walk setup failed"
 msgstr "revizyonda gezinme ayarlaması başarısız oldu"
 
@@ -2088,7 +2090,7 @@ msgstr "'%s' bir v2 veya v3 demet dosyası gibi görünmüyor"
 msgid "unrecognized header: %s%s (%d)"
 msgstr "tanımlanamayan üstbilgi: %s%s (%d)"
 
-#: bundle.c:136 rerere.c:480 rerere.c:690 sequencer.c:2390 sequencer.c:3176
+#: bundle.c:136 rerere.c:464 rerere.c:674 sequencer.c:2398 sequencer.c:3184
 #: builtin/commit.c:814
 #, c-format
 msgid "could not open '%s'"
@@ -2132,279 +2134,292 @@ msgstr "pack-objects ortaya çıkarılamadı"
 msgid "pack-objects died"
 msgstr "pack-objects sonlandı"
 
-#: bundle.c:379
-msgid "rev-list died"
-msgstr "rev-list sonlandı"
-
-#: bundle.c:428
+#: bundle.c:386
 #, c-format
 msgid "ref '%s' is excluded by the rev-list options"
 msgstr "'%s' başvurusu revizyon listesi seçenekleri tarafından dışlandı"
 
-#: bundle.c:498
+#: bundle.c:490
 #, c-format
 msgid "unsupported bundle version %d"
 msgstr "desteklenmeyen demet sürümü %d"
 
-#: bundle.c:500
+#: bundle.c:492
 #, c-format
 msgid "cannot write bundle version %d with algorithm %s"
 msgstr "demet sürümü %d, %s algoritması ile yazılamıyor"
 
-#: bundle.c:522 builtin/log.c:209 builtin/log.c:1927 builtin/shortlog.c:408
+#: bundle.c:510 builtin/log.c:210 builtin/log.c:1926 builtin/shortlog.c:396
 #, c-format
 msgid "unrecognized argument: %s"
 msgstr "tanımlanamayan argüman: %s"
 
-#: bundle.c:530
+#: bundle.c:539
 msgid "Refusing to create empty bundle."
 msgstr "Boş demet oluşturma reddediliyor."
 
-#: bundle.c:540
+#: bundle.c:549
 #, c-format
 msgid "cannot create '%s'"
 msgstr "'%s' oluşturulamıyor"
 
-#: bundle.c:565
+#: bundle.c:574
 msgid "index-pack died"
 msgstr "index-pack sonlandı"
 
+#: chunk-format.c:113
+msgid "terminating chunk id appears earlier than expected"
+msgstr "iri parça numarası sonlandırması beklenenden önce ortaya çıkıyor"
+
+#: chunk-format.c:122
+#, c-format
+msgid "improper chunk offset(s) %<PRIx64> and %<PRIx64>"
+msgstr "düzgün olmayan iri parça ofseti %<PRIx64> ve %<PRIx64>"
+
+#: chunk-format.c:129
+#, c-format
+msgid "duplicate chunk ID %<PRIx32> found"
+msgstr "yinelenmiş iri parça numarası %<PRIx32> bulundu"
+
+#: chunk-format.c:143
+#, c-format
+msgid "final chunk has non-zero id %<PRIx32>"
+msgstr "en son iri parçanın numarası sıfır olmayan %<PRIx32>"
+
 #: color.c:329
 #, c-format
 msgid "invalid color value: %.*s"
 msgstr "geçersiz renk değeri: %.*s"
 
-#: commit-graph.c:188 midx.c:47
+#: commit-graph.c:197 midx.c:46
 msgid "invalid hash version"
 msgstr "geçersiz sağlama sürümü"
 
-#: commit-graph.c:246
+#: commit-graph.c:255
 msgid "commit-graph file is too small"
 msgstr "commit-graph dosyası pek küçük"
 
-#: commit-graph.c:311
+#: commit-graph.c:348
 #, c-format
 msgid "commit-graph signature %X does not match signature %X"
 msgstr "commit-graph imzası %X, %X ile eşleşmiyor"
 
-#: commit-graph.c:318
+#: commit-graph.c:355
 #, c-format
 msgid "commit-graph version %X does not match version %X"
 msgstr "commit-graph sürümü %x, %X ile eşleşmiyor"
 
-#: commit-graph.c:325
+#: commit-graph.c:362
 #, c-format
 msgid "commit-graph hash version %X does not match version %X"
 msgstr "commit-graph sağlama sürümü %X, %X ile eşleşmiyor"
 
-#: commit-graph.c:342
+#: commit-graph.c:379
 #, c-format
 msgid "commit-graph file is too small to hold %u chunks"
 msgstr "commit-graph dosyası %u iri parça tutmak için pek küçük"
 
-#: commit-graph.c:361
-#, c-format
-msgid "commit-graph improper chunk offset %08x%08x"
-msgstr "commit-graph biçimsiz iri parça ofseti %08x%08x"
-
-#: commit-graph.c:433
-#, c-format
-msgid "commit-graph chunk id %08x appears multiple times"
-msgstr "commit-graph iri parça numarası %08x birden çok görünüyor"
-
-#: commit-graph.c:499
+#: commit-graph.c:472
 msgid "commit-graph has no base graphs chunk"
 msgstr "commit-graph temel grafiği iri parçasına iye değil"
 
-#: commit-graph.c:509
+#: commit-graph.c:482
 msgid "commit-graph chain does not match"
 msgstr "commit-graph zinciri eşleşmiyor"
 
-#: commit-graph.c:557
+#: commit-graph.c:530
 #, c-format
 msgid "invalid commit-graph chain: line '%s' not a hash"
 msgstr "geçersiz commit-graph zinciri: '%s'. satır bir sağlama değil"
 
-#: commit-graph.c:581
+#: commit-graph.c:554
 msgid "unable to find all commit-graph files"
 msgstr "tüm commit-graph dosyaları bulunamıyor"
 
-#: commit-graph.c:721 commit-graph.c:785
+#: commit-graph.c:735 commit-graph.c:772
 msgid "invalid commit position. commit-graph is likely corrupt"
 msgstr "geçersiz işleme konumu. commit-graph büyük olasılıkla hasar görmüş."
 
-#: commit-graph.c:742
+#: commit-graph.c:756
 #, c-format
 msgid "could not find commit %s"
 msgstr "%s işlemesi bulunamadı"
 
-#: commit-graph.c:1036 builtin/am.c:1292
+#: commit-graph.c:789
+msgid "commit-graph requires overflow generation data but has none"
+msgstr "commit-graph, taşım oluşturma verisi gerektiriyor; ancak hiç yok"
+
+#: commit-graph.c:1065 builtin/am.c:1292
 #, c-format
 msgid "unable to parse commit %s"
 msgstr "%s işlemesi ayrıştırılamıyor"
 
-#: commit-graph.c:1252 builtin/pack-objects.c:2864
+#: commit-graph.c:1327 builtin/pack-objects.c:2872
 #, c-format
 msgid "unable to get type of object %s"
 msgstr "%s nesnesinin türü alınamıyor"
 
-#: commit-graph.c:1283
+#: commit-graph.c:1358
 msgid "Loading known commits in commit graph"
 msgstr "İşleme grafiğindeki bilinen işlemeler yükleniyor"
 
-#: commit-graph.c:1300
+#: commit-graph.c:1375
 msgid "Expanding reachable commits in commit graph"
 msgstr "İşleme grafiğindeki ulaşılabilir işlemeler genişletiliyor"
 
-#: commit-graph.c:1320
+#: commit-graph.c:1395
 msgid "Clearing commit marks in commit graph"
 msgstr "İşleme grafiğindeki işleme imleri temizleniyor"
 
-#: commit-graph.c:1339
+#: commit-graph.c:1414
+msgid "Computing commit graph topological levels"
+msgstr "İşleme grafiği ilingesel düzeyleri hesaplanıyor"
+
+#: commit-graph.c:1467
 msgid "Computing commit graph generation numbers"
 msgstr "İşleme grafiği kuşak sayıları hesaplanıyor"
 
-#: commit-graph.c:1406
+#: commit-graph.c:1548
 msgid "Computing commit changed paths Bloom filters"
 msgstr ""
 "Geçerli işlemelerdeki değiştirilmiş yollar için Bloom süzgeci hesaplanıyor"
 
-#: commit-graph.c:1483
+#: commit-graph.c:1625
 msgid "Collecting referenced commits"
 msgstr "Başvurulmuş işlemeler toplanıyor"
 
-#: commit-graph.c:1508
+#: commit-graph.c:1650
 #, c-format
 msgid "Finding commits for commit graph in %d pack"
 msgid_plural "Finding commits for commit graph in %d packs"
 msgstr[0] "%d pakette işleme grafiği için işlemeler bulunuyor"
 msgstr[1] "%d pakette işleme grafiği için işlemeler bulunuyor"
 
-#: commit-graph.c:1521
+#: commit-graph.c:1663
 #, c-format
 msgid "error adding pack %s"
 msgstr "%s paketi eklenirken hata"
 
-#: commit-graph.c:1525
+#: commit-graph.c:1667
 #, c-format
 msgid "error opening index for %s"
 msgstr "%s için indeks açılırken hata"
 
-#: commit-graph.c:1562
+#: commit-graph.c:1704
 msgid "Finding commits for commit graph among packed objects"
 msgstr "Paketlenmiş nesneler arasından işleme grafiği için işlemeler bulunuyor"
 
-#: commit-graph.c:1580
+#: commit-graph.c:1722
 msgid "Finding extra edges in commit graph"
 msgstr "İşleme grafiğindeki ek sınırlar bulunuyor"
 
-#: commit-graph.c:1628
+#: commit-graph.c:1771
 msgid "failed to write correct number of base graph ids"
 msgstr "temel grafiği numaralarının doğru sayısı yazılamadı"
 
-#: commit-graph.c:1670 midx.c:819
+#: commit-graph.c:1802 midx.c:794
 #, c-format
 msgid "unable to create leading directories of %s"
 msgstr "%s öncü dizinleri oluşturulamıyor"
 
-#: commit-graph.c:1683
+#: commit-graph.c:1815
 msgid "unable to create temporary graph layer"
 msgstr "geçici grafik katmanı oluşturulamıyor"
 
-#: commit-graph.c:1688
+#: commit-graph.c:1820
 #, c-format
 msgid "unable to adjust shared permissions for '%s'"
 msgstr "'%s' için paylaşılan izinler ayarlanamıyor"
 
-#: commit-graph.c:1758
+#: commit-graph.c:1879
 #, c-format
 msgid "Writing out commit graph in %d pass"
 msgid_plural "Writing out commit graph in %d passes"
 msgstr[0] "İşleme grafiği %d geçişte yazılıyor"
 msgstr[1] "İşleme grafiği %d geçişte yazılıyor"
 
-#: commit-graph.c:1803
+#: commit-graph.c:1915
 msgid "unable to open commit-graph chain file"
 msgstr "commit-graph zincir dosyası açılamıyor"
 
-#: commit-graph.c:1819
+#: commit-graph.c:1931
 msgid "failed to rename base commit-graph file"
 msgstr "temel commit-graph dosyası yeniden adlandırılamadı"
 
-#: commit-graph.c:1839
+#: commit-graph.c:1951
 msgid "failed to rename temporary commit-graph file"
 msgstr "geçici commit-graph dosyası yeniden adlandırılamadı"
 
-#: commit-graph.c:1965
+#: commit-graph.c:2084
 msgid "Scanning merged commits"
 msgstr "Birleştirilen işlemeler taranıyor"
 
-#: commit-graph.c:2009
+#: commit-graph.c:2128
 msgid "Merging commit-graph"
 msgstr "commit-graph birleştiriliyor"
 
-#: commit-graph.c:2115
+#: commit-graph.c:2235
 msgid "attempting to write a commit-graph, but 'core.commitGraph' is disabled"
 msgstr ""
 "bir commit-graph yazılmaya çalışılıyor; ancak 'core.commitGraph' devre dışı"
 
-#: commit-graph.c:2214
+#: commit-graph.c:2342
 msgid "too many commits to write graph"
 msgstr "grafik yazımı için çok fazla işleme"
 
-#: commit-graph.c:2307
+#: commit-graph.c:2440
 msgid "the commit-graph file has incorrect checksum and is likely corrupt"
 msgstr ""
 "commit-graph dosyasının sağlama toplamı yanlış ve büyük olasılıkla hasar "
 "görmüş"
 
-#: commit-graph.c:2317
+#: commit-graph.c:2450
 #, c-format
 msgid "commit-graph has incorrect OID order: %s then %s"
 msgstr "commit-graph hatalı nesne tanımlayıcı sırasına iye: %s, sonra %s"
 
-#: commit-graph.c:2327 commit-graph.c:2342
+#: commit-graph.c:2460 commit-graph.c:2475
 #, c-format
 msgid "commit-graph has incorrect fanout value: fanout[%d] = %u != %u"
 msgstr "commit-graph hatalı fanout değerine iye: fanout[%d] = %u != %u"
 
-#: commit-graph.c:2334
+#: commit-graph.c:2467
 #, c-format
 msgid "failed to parse commit %s from commit-graph"
 msgstr "%s işlemesi commit-graph'tan ayrıştırılamadı"
 
-#: commit-graph.c:2352
+#: commit-graph.c:2485
 msgid "Verifying commits in commit graph"
 msgstr "İşleme grafiğindeki işlemeler doğrulanıyor"
 
-#: commit-graph.c:2367
+#: commit-graph.c:2500
 #, c-format
 msgid "failed to parse commit %s from object database for commit-graph"
 msgstr ""
 "%s işlemesi commit-graph için olan nesne veritabanından ayrıştırılamadı"
 
-#: commit-graph.c:2374
+#: commit-graph.c:2507
 #, c-format
 msgid "root tree OID for commit %s in commit-graph is %s != %s"
 msgstr ""
 "commit-graph'teki %s işlemesi için olan kök ağaç nesne tanımlayıcısı %s != %s"
 
-#: commit-graph.c:2384
+#: commit-graph.c:2517
 #, c-format
 msgid "commit-graph parent list for commit %s is too long"
 msgstr "%s işlemesi için olan commit-graph üst öge listesi çok uzun"
 
-#: commit-graph.c:2393
+#: commit-graph.c:2526
 #, c-format
 msgid "commit-graph parent for %s is %s != %s"
 msgstr "%s için olan commit-graph üst ögesi %s != %s"
 
-#: commit-graph.c:2407
+#: commit-graph.c:2540
 #, c-format
 msgid "commit-graph parent list for commit %s terminates early"
 msgstr "%s işlemesi için olan commit-graph üst öge listesi erkenden sonlanıyor"
 
-#: commit-graph.c:2412
+#: commit-graph.c:2545
 #, c-format
 msgid ""
 "commit-graph has generation number zero for commit %s, but non-zero elsewhere"
@@ -2412,7 +2427,7 @@ msgstr ""
 "%s işlemesi için commit-graph kuşak sayısı sıfır; ancak başka yerlerde "
 "sıfırdan farklı"
 
-#: commit-graph.c:2416
+#: commit-graph.c:2549
 #, c-format
 msgid ""
 "commit-graph has non-zero generation number for commit %s, but zero elsewhere"
@@ -2420,18 +2435,18 @@ msgstr ""
 "%s işlemesi için commit-graph kuşak sayısı sıfırdan farklı; ancak başka "
 "yerlerde sıfır"
 
-#: commit-graph.c:2432
+#: commit-graph.c:2566
 #, c-format
-msgid "commit-graph generation for commit %s is %u != %u"
-msgstr "%s işlemesi için commit-graph kuşağı %u != %u"
+msgid "commit-graph generation for commit %s is %<PRIuMAX> < %<PRIuMAX>"
+msgstr "%s işlemesi için commit-graph kuşağı %<PRIuMAX> < %<PRIuMAX>"
 
-#: commit-graph.c:2438
+#: commit-graph.c:2572
 #, c-format
 msgid "commit date for commit %s in commit-graph is %<PRIuMAX> != %<PRIuMAX>"
 msgstr ""
 "%s işlemesi için commit-graph içindeki işleme tarihi %<PRIuMAX> != %<PRIuMAX>"
 
-#: commit.c:52 sequencer.c:2879 builtin/am.c:359 builtin/am.c:403
+#: commit.c:52 sequencer.c:2887 builtin/am.c:359 builtin/am.c:403
 #: builtin/am.c:1371 builtin/am.c:2018 builtin/replace.c:457
 #, c-format
 msgid "could not parse %s"
@@ -2462,28 +2477,28 @@ msgstr ""
 "\"git config advice.graftFileDeprecated false\"\n"
 "kullanarak bu iletiyi kapatabilirsiniz."
 
-#: commit.c:1172
+#: commit.c:1223
 #, c-format
 msgid "Commit %s has an untrusted GPG signature, allegedly by %s."
 msgstr ""
 "%s işlemesinin güvenilmeyen bir GPG imzası var, iddiaya göre %s tarafından."
 
-#: commit.c:1176
+#: commit.c:1227
 #, c-format
 msgid "Commit %s has a bad GPG signature allegedly by %s."
 msgstr "%s işlemesinin hatalı bir GPG imzası var, iddiaya göre %s tarafından."
 
-#: commit.c:1179
+#: commit.c:1230
 #, c-format
 msgid "Commit %s does not have a GPG signature."
 msgstr "%s işlemesinin bir GPG imzası yok."
 
-#: commit.c:1182
+#: commit.c:1233
 #, c-format
 msgid "Commit %s has a good GPG signature by %s\n"
 msgstr "%s işlemesinin %s tarafından sağlanan düzgün bir GPG imzası var\n"
 
-#: commit.c:1436
+#: commit.c:1487
 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"
@@ -2498,7 +2513,7 @@ msgstr ""
 msgid "memory exhausted"
 msgstr "bellek tükendi"
 
-#: config.c:125
+#: config.c:126
 #, c-format
 msgid ""
 "exceeded maximum include depth (%d) while including\n"
@@ -2513,297 +2528,341 @@ msgstr ""
 "\t%s\n"
 "Bu dairesel içermelerden dolayı olabilir."
 
-#: config.c:141
+#: config.c:142
 #, c-format
 msgid "could not expand include path '%s'"
 msgstr "içerme yolu '%s' genişletilemedi"
 
-#: config.c:152
+#: config.c:153
 msgid "relative config includes must come from files"
 msgstr "göreceli yapılandırma içermeleri dosyalardan gelmeli"
 
-#: config.c:198
+#: config.c:199
 msgid "relative config include conditionals must come from files"
 msgstr "göreceli yapılandırma içerme koşulluları dosyalardan gelmeli"
 
-#: config.c:378
+#: config.c:396
+#, c-format
+msgid "invalid config format: %s"
+msgstr "geçersiz yapılandırma biçimi: %s"
+
+#: config.c:400
+#, c-format
+msgid "missing environment variable name for configuration '%.*s'"
+msgstr "'%.*s' yapılandırması için ortam değişkeni adı eksik"
+
+#: config.c:405
+#, c-format
+msgid "missing environment variable '%s' for configuration '%.*s'"
+msgstr "şu yapılandırma için '%s' ortam değişkeni eksik: '%.*s'"
+
+#: config.c:442
 #, c-format
 msgid "key does not contain a section: %s"
 msgstr "anahtar, bir bölüm içermiyor: %s"
 
-#: config.c:384
+#: config.c:448
 #, c-format
 msgid "key does not contain variable name: %s"
 msgstr "anahtar, bir değişken adı içermiyor: %s"
 
-#: config.c:408 sequencer.c:2580
+#: config.c:472 sequencer.c:2588
 #, c-format
 msgid "invalid key: %s"
 msgstr "geçersiz anahtar: %s"
 
-#: config.c:414
+#: config.c:478
 #, c-format
 msgid "invalid key (newline): %s"
 msgstr "geçersiz anahtar (yenisatır): %s"
 
-#: config.c:450 config.c:462
+#: config.c:511
+msgid "empty config key"
+msgstr "boş yapılandırma anahtarı"
+
+#: config.c:529 config.c:541
 #, c-format
 msgid "bogus config parameter: %s"
 msgstr "düzmece yapılandırma parametresi: %s"
 
-#: config.c:497
+#: config.c:555 config.c:572 config.c:579 config.c:588
 #, c-format
 msgid "bogus format in %s"
 msgstr "%s içinde düzmece biçim"
 
-#: config.c:836
+#: config.c:622
+#, c-format
+msgid "bogus count in %s"
+msgstr "%s içinde düzmece sayım"
+
+#: config.c:626
+#, c-format
+msgid "too many entries in %s"
+msgstr "%s içinde çok fazla girdi"
+
+#: config.c:636
+#, c-format
+msgid "missing config key %s"
+msgstr "%s yapılandırma anahtarı eksik"
+
+#: config.c:644
+#, c-format
+msgid "missing config value %s"
+msgstr "%s yapılandırma değeri eksik"
+
+#: config.c:995
 #, c-format
 msgid "bad config line %d in blob %s"
 msgstr "hatalı yapılandırma satırı %d, %s ikili nesnesi içinde"
 
-#: config.c:840
+#: config.c:999
 #, c-format
 msgid "bad config line %d in file %s"
 msgstr "hatalı yapılandırma satırı %d, %s dosyası içinde"
 
-#: config.c:844
+#: config.c:1003
 #, c-format
 msgid "bad config line %d in standard input"
 msgstr "standart girdi içinde hatalı yapılandırma satırı %d"
 
-#: config.c:848
+#: config.c:1007
 #, c-format
 msgid "bad config line %d in submodule-blob %s"
 msgstr "hatalı yapılandırma satırı %d, %s altmodül ikili nesnesi içinde"
 
-#: config.c:852
+#: config.c:1011
 #, c-format
 msgid "bad config line %d in command line %s"
 msgstr "hatalı yapılandırma satırı %d, %s komut satırı içinde"
 
-#: config.c:856
+#: config.c:1015
 #, c-format
 msgid "bad config line %d in %s"
 msgstr "hatalı yapılandırma satırı %d, %s içinde"
 
-#: config.c:993
+#: config.c:1152
 msgid "out of range"
 msgstr "erim dışı"
 
-#: config.c:993
+#: config.c:1152
 msgid "invalid unit"
 msgstr "geçersiz birim"
 
-#: config.c:994
+#: config.c:1153
 #, c-format
 msgid "bad numeric config value '%s' for '%s': %s"
 msgstr "hatalı sayısal yapılandırma değeri '%s', '%s' için: %s"
 
-#: config.c:1013
+#: config.c:1163
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in blob %s: %s"
 msgstr ""
 "hatalı sayısal yapılandırma değeri '%s', '%s' için, %s ikili nesnesi içinde: "
 "%s"
 
-#: config.c:1016
+#: config.c:1166
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in file %s: %s"
 msgstr ""
 "hatalı sayısal yapılandırma değeri '%s', '%s' için, %s dosyası içinde: %s"
 
-#: config.c:1019
+#: config.c:1169
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in standard input: %s"
 msgstr ""
 "hatalı sayısal yapılandırma değeri '%s', '%s' için, standart girdi içinde: %s"
 
-#: config.c:1022
+#: config.c:1172
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in submodule-blob %s: %s"
 msgstr ""
 "hatalı sayısal yapılandırma değeri '%s', '%s' için, %s altmodül ikili "
 "nesnesi içinde: %s"
 
-#: config.c:1025
+#: config.c:1175
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in command line %s: %s"
 msgstr ""
 "hatalı sayısal yapılandırma değeri '%s', '%s' için, %s komut satırı içinde: "
 "%s"
 
-#: config.c:1028
+#: config.c:1178
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in %s: %s"
 msgstr "hatalı sayısal yapılandırma değeri '%s', '%s' için, %s içinde: %s"
 
-#: config.c:1123
+#: config.c:1194
+#, c-format
+msgid "bad boolean config value '%s' for '%s'"
+msgstr "hatalı Boole yapılandırma değeri '%s', '%s' için"
+
+#: config.c:1289
 #, c-format
 msgid "failed to expand user dir in: '%s'"
 msgstr "şuradaki kullanıcı dizini genişletilemedi: '%s'"
 
-#: config.c:1132
+#: config.c:1298
 #, c-format
 msgid "'%s' for '%s' is not a valid timestamp"
 msgstr "%s', '%s' için geçerli bir zaman damgası değil"
 
-#: config.c:1223
+#: config.c:1391
 #, c-format
 msgid "abbrev length out of range: %d"
 msgstr "kısaltma uzunluğu erim dışında: %d"
 
-#: config.c:1237 config.c:1248
+#: config.c:1405 config.c:1416
 #, c-format
 msgid "bad zlib compression level %d"
 msgstr "hatalı zlib sıkıştırma düzeyi %d"
 
-#: config.c:1340
+#: config.c:1508
 msgid "core.commentChar should only be one character"
 msgstr "core.commentChar yalnızca bir karakter olmalı"
 
-#: config.c:1373
+#: config.c:1541
 #, c-format
 msgid "invalid mode for object creation: %s"
 msgstr "nesne oluşturma için geçersiz kip: %s"
 
-#: config.c:1445
+#: config.c:1613
 #, c-format
 msgid "malformed value for %s"
 msgstr "%s için hatalı oluşturulmuş değer"
 
-#: config.c:1471
+#: config.c:1639
 #, c-format
 msgid "malformed value for %s: %s"
 msgstr "%s için hatalı oluşturulmuş değer: %s"
 
-#: config.c:1472
+#: config.c:1640
 msgid "must be one of nothing, matching, simple, upstream or current"
 msgstr "nothing, matching, simple, upstream veya current içinden biri olmalı"
 
-#: config.c:1533 builtin/pack-objects.c:3649
+#: config.c:1701 builtin/pack-objects.c:3666
 #, c-format
 msgid "bad pack compression level %d"
 msgstr "hatalı paket sıkıştırma düzeyi %d"
 
-#: config.c:1655
+#: config.c:1823
 #, c-format
 msgid "unable to load config blob object '%s'"
 msgstr "'%s' yapılandırma ikili nesnesi yüklenemiyor"
 
-#: config.c:1658
+#: config.c:1826
 #, c-format
 msgid "reference '%s' does not point to a blob"
 msgstr "'%s' başvurusu ikili bir nesneye işaret etmiyor"
 
-#: config.c:1675
+#: config.c:1843
 #, c-format
 msgid "unable to resolve config blob '%s'"
 msgstr "'%s' yapılandırma ikili nesnesi çözülemiyor"
 
-#: config.c:1705
+#: config.c:1873
 #, c-format
 msgid "failed to parse %s"
 msgstr "%s ayrıştırılamadı"
 
-#: config.c:1759
+#: config.c:1927
 msgid "unable to parse command-line config"
 msgstr "komut satırı yapılandırması ayrıştırılamıyor"
 
-#: config.c:2122
+#: config.c:2290
 msgid "unknown error occurred while reading the configuration files"
 msgstr "yapılandırma dosyaları okunurken beklenmedik bir hata oluştu"
 
-#: config.c:2296
+#: config.c:2464
 #, c-format
 msgid "Invalid %s: '%s'"
 msgstr "Geçersiz %s: '%s'"
 
-#: config.c:2341
+#: config.c:2509
 #, c-format
 msgid "splitIndex.maxPercentChange value '%d' should be between 0 and 100"
 msgstr "splitIndex.maxPercentChange değeri '%d' 0 ve 100 arasında olmalı"
 
-#: config.c:2387
+#: config.c:2555
 #, c-format
 msgid "unable to parse '%s' from command-line config"
 msgstr "'%s' komut satırı yapılandırmasından ayrıştırılamıyor"
 
-#: config.c:2389
+#: config.c:2557
 #, c-format
 msgid "bad config variable '%s' in file '%s' at line %d"
 msgstr "hatalı yapılandırma değişkeni '%s', '%s' dosyası %d. satırda"
 
-#: config.c:2473
+#: config.c:2641
 #, c-format
 msgid "invalid section name '%s'"
 msgstr "geçersiz bölüm adı '%s'"
 
-#: config.c:2505
+#: config.c:2673
 #, c-format
 msgid "%s has multiple values"
 msgstr "%s birden çok değere iye"
 
-#: config.c:2534
+#: config.c:2702
 #, c-format
 msgid "failed to write new configuration file %s"
 msgstr "yeni yapılandırma dosyası %s yazılamadı"
 
-#: config.c:2786 config.c:3112
+#: config.c:2954 config.c:3280
 #, c-format
 msgid "could not lock config file %s"
 msgstr "%s yapılandırma dosyası kilitlenemedi"
 
-#: config.c:2797
+#: config.c:2965
 #, c-format
 msgid "opening %s"
 msgstr "%s açılıyor"
 
-#: config.c:2834 builtin/config.c:361
+#: config.c:3002 builtin/config.c:361
 #, c-format
 msgid "invalid pattern: %s"
 msgstr "geçersiz dizgi: %s"
 
-#: config.c:2859
+#: config.c:3027
 #, c-format
 msgid "invalid config file %s"
 msgstr "geçersiz yapılandırma dosyası %s"
 
-#: config.c:2872 config.c:3125
+#: config.c:3040 config.c:3293
 #, c-format
 msgid "fstat on %s failed"
 msgstr "%s üzerinde fstat başarısız oldu"
 
-#: config.c:2883
+#: config.c:3051
 #, c-format
 msgid "unable to mmap '%s'"
 msgstr "'%s' mmap yapılamıyor"
 
-#: config.c:2892 config.c:3130
+#: config.c:3060 config.c:3298
 #, c-format
 msgid "chmod on %s failed"
 msgstr "%s üzerinde chmod başarısız oldu"
 
-#: config.c:2977 config.c:3227
+#: config.c:3145 config.c:3395
 #, c-format
 msgid "could not write config file %s"
 msgstr "%s yapılandırma dosyası yazılamadı"
 
-#: config.c:3011
+#: config.c:3179
 #, c-format
 msgid "could not set '%s' to '%s'"
 msgstr "'%s', '%s' olarak ayarlanamadı"
 
-#: config.c:3013 builtin/remote.c:657 builtin/remote.c:855 builtin/remote.c:863
+#: config.c:3181 builtin/remote.c:657 builtin/remote.c:855 builtin/remote.c:863
 #, c-format
 msgid "could not unset '%s'"
 msgstr "'%s' ayarı kapatılamadı"
 
-#: config.c:3103
+#: config.c:3271
 #, c-format
 msgid "invalid section name: %s"
 msgstr "geçersiz bölüm adı: %s"
 
-#: config.c:3270
+#: config.c:3438
 #, c-format
 msgid "missing value for '%s'"
 msgstr "'%s' için değer eksik"
@@ -2865,45 +2924,45 @@ msgstr "geçersiz paket"
 msgid "protocol error: unexpected '%s'"
 msgstr "protokol hatası: beklenmedik '%s'"
 
-#: connect.c:473
+#: connect.c:497
 #, c-format
 msgid "unknown object format '%s' specified by server"
 msgstr "sunucu tarafından bilinmeyen nesne biçimi '%s' belirtildi"
 
-#: connect.c:500
+#: connect.c:526
 #, c-format
 msgid "invalid ls-refs response: %s"
 msgstr "geçersiz ls-refs yanıtı: %s"
 
-#: connect.c:504
+#: connect.c:530
 msgid "expected flush after ref listing"
 msgstr "başvuru listelemesinden sonra floş bekleniyordu"
 
-#: connect.c:507
+#: connect.c:533
 msgid "expected response end packet after ref listing"
 msgstr "başvuru listelemesinden sonra yanıt sonu paketi bekleniyordu"
 
-#: connect.c:640
+#: connect.c:666
 #, c-format
 msgid "protocol '%s' is not supported"
 msgstr "'%s' protokolü desteklenmiyor"
 
-#: connect.c:691
+#: connect.c:717
 msgid "unable to set SO_KEEPALIVE on socket"
 msgstr "soket üzerinde SO_KEEPALIVE ayarlanamıyor"
 
-#: connect.c:731 connect.c:794
+#: connect.c:757 connect.c:820
 #, c-format
 msgid "Looking up %s ... "
 msgstr "%s adresi aranıyor..."
 
-#: connect.c:735
+#: connect.c:761
 #, c-format
 msgid "unable to look up %s (port %s) (%s)"
 msgstr "%s aranamıyor (kapı %s) (%s)"
 
 #. TRANSLATORS: this is the end of "Looking up %s ... "
-#: connect.c:739 connect.c:810
+#: connect.c:765 connect.c:836
 #, c-format
 msgid ""
 "done.\n"
@@ -2912,7 +2971,7 @@ msgstr ""
 "bitti.\n"
 "%s adresine bağlanılıyor (kapı %s)..."
 
-#: connect.c:761 connect.c:838
+#: connect.c:787 connect.c:864
 #, c-format
 msgid ""
 "unable to connect to %s:\n"
@@ -2922,61 +2981,65 @@ msgstr ""
 "%s"
 
 #. TRANSLATORS: this is the end of "Connecting to %s (port %s) ... "
-#: connect.c:767 connect.c:844
+#: connect.c:793 connect.c:870
 msgid "done."
 msgstr "bitti."
 
-#: connect.c:798
+#: connect.c:824
 #, c-format
 msgid "unable to look up %s (%s)"
 msgstr "%s aranamıyor (%s)"
 
-#: connect.c:804
+#: connect.c:830
 #, c-format
 msgid "unknown port %s"
 msgstr "bilinmeyen kapı %s"
 
-#: connect.c:941 connect.c:1271
+#: connect.c:967 connect.c:1299
 #, c-format
 msgid "strange hostname '%s' blocked"
 msgstr "garip makine adı '%s' engellendi"
 
-#: connect.c:943
+#: connect.c:969
 #, c-format
 msgid "strange port '%s' blocked"
 msgstr "garip kapı '%s' engellendi"
 
-#: connect.c:953
+#: connect.c:979
 #, c-format
 msgid "cannot start proxy %s"
 msgstr "vekil %s başlatılamıyor"
 
-#: connect.c:1024
+#: connect.c:1050
 msgid "no path specified; see 'git help pull' for valid url syntax"
 msgstr "yol belirtilmedi; geçerli url sözdizimi için 'git help pull' yazın"
 
-#: connect.c:1219
+#: connect.c:1190
+msgid "newline is forbidden in git:// hosts and repo paths"
+msgstr "git:// makinelerinde ve depo yollarında yenisatır karakteri yasak"
+
+#: connect.c:1247
 msgid "ssh variant 'simple' does not support -4"
 msgstr "ssh değişik biçimi 'simple' -4 desteklemiyor"
 
-#: connect.c:1231
+#: connect.c:1259
 msgid "ssh variant 'simple' does not support -6"
 msgstr "ssh değişik biçimi 'simple' -6 desteklemiyor"
 
-#: connect.c:1248
+#: connect.c:1276
 msgid "ssh variant 'simple' does not support setting port"
 msgstr "ssh değişik biçimi 'simple' kapı ayarlamayı desteklemiyor"
 
-#: connect.c:1360
+#: connect.c:1388
 #, c-format
 msgid "strange pathname '%s' blocked"
 msgstr "garip yol adı '%s' engellendi"
 
-#: connect.c:1408
+#: connect.c:1436
 msgid "unable to fork"
 msgstr "çatallanamıyor"
 
-#: connected.c:108 builtin/fsck.c:209 builtin/prune.c:45
+#: connected.c:108 builtin/fsck.c:191 builtin/prune.c:45
 msgid "Checking connectivity"
 msgstr "Bağlantı denetleniyor"
 
@@ -3241,6 +3304,11 @@ msgstr ""
 msgid "Marked %d islands, done.\n"
 msgstr "%d delta adası imlendi, bitti.\n"
 
+#: diff-merges.c:70
+#, c-format
+msgid "unknown value for --diff-merges: %s"
+msgstr "--diff-merges için bilinmeyen değer: %s"
+
 #: diff-lib.c:534
 msgid "--merge-base does not work with ranges"
 msgstr "--merge-base erimlerle çalışmaz"
@@ -3327,30 +3395,30 @@ msgstr ""
 msgid "external diff died, stopping at %s"
 msgstr "dış diff sonlandı, %s konumunda durdu"
 
-#: diff.c:4625
+#: diff.c:4628
 msgid "--name-only, --name-status, --check and -s are mutually exclusive"
 msgstr "--name-only, --name-status, --check ve -s birlikte kullanılmaz"
 
-#: diff.c:4628
+#: diff.c:4631
 msgid "-G, -S and --find-object are mutually exclusive"
 msgstr "-G, -S ve --find-object birlikte kullanılmaz"
 
-#: diff.c:4707
+#: diff.c:4710
 msgid "--follow requires exactly one pathspec"
 msgstr "--follow tam olarak yalnızca bir yol belirteci gerektiriyor"
 
-#: diff.c:4755
+#: diff.c:4758
 #, c-format
 msgid "invalid --stat value: %s"
 msgstr "geçersiz --stat değeri: %s"
 
-#: diff.c:4760 diff.c:4765 diff.c:4770 diff.c:4775 diff.c:5303
+#: diff.c:4763 diff.c:4768 diff.c:4773 diff.c:4778 diff.c:5306
 #: parse-options.c:197 parse-options.c:201 builtin/commit-graph.c:180
 #, c-format
 msgid "%s expects a numerical value"
 msgstr "%s bir sayısal değer bekliyor"
 
-#: diff.c:4792
+#: diff.c:4795
 #, c-format
 msgid ""
 "Failed to parse --dirstat/-X option parameter:\n"
@@ -3359,42 +3427,42 @@ msgstr ""
 "--dirstat/-X seçenek parametresi ayrıştırılamadı:\n"
 "%s"
 
-#: diff.c:4877
+#: diff.c:4880
 #, c-format
 msgid "unknown change class '%c' in --diff-filter=%s"
 msgstr "şurada bilinmeyen değişiklik sınıfı '%c': -diff-filter=%s"
 
-#: diff.c:4901
+#: diff.c:4904
 #, c-format
 msgid "unknown value after ws-error-highlight=%.*s"
 msgstr "şundan sonra bilinmeyen değer: ws-error-highlight=%.*s"
 
-#: diff.c:4915
+#: diff.c:4918
 #, c-format
 msgid "unable to resolve '%s'"
 msgstr "'%s' çözülemiyor"
 
-#: diff.c:4965 diff.c:4971
+#: diff.c:4968 diff.c:4974
 #, c-format
 msgid "%s expects <n>/<m> form"
 msgstr "%s <n>/<m> biçimi bekliyor"
 
-#: diff.c:4983
+#: diff.c:4986
 #, c-format
 msgid "%s expects a character, got '%s'"
 msgstr "%s bir karakter bekliyor, '%s' aldı"
 
-#: diff.c:5004
+#: diff.c:5007
 #, c-format
 msgid "bad --color-moved argument: %s"
 msgstr "hatalı --color-moved argümanı: %s"
 
-#: diff.c:5023
+#: diff.c:5026
 #, c-format
 msgid "invalid mode '%s' in --color-moved-ws"
 msgstr "--color-moved-ws içinde geçersiz kip '%s'"
 
-#: diff.c:5063
+#: diff.c:5066
 msgid ""
 "option diff-algorithm accepts \"myers\", \"minimal\", \"patience\" and "
 "\"histogram\""
@@ -3402,162 +3470,162 @@ msgstr ""
 "diff-algorithm seçeneği şunları kabul eder: \"myers\", \"minimal\", "
 "\"patience\" ve \"histogram\""
 
-#: diff.c:5099 diff.c:5119
+#: diff.c:5102 diff.c:5122
 #, c-format
 msgid "invalid argument to %s"
 msgstr "%s için geçersiz argüman"
 
-#: diff.c:5223
+#: diff.c:5226
 #, c-format
 msgid "invalid regex given to -I: '%s'"
 msgstr "-I'ya geçersiz düzenli ifade verildi: '%s'"
 
-#: diff.c:5272
+#: diff.c:5275
 #, c-format
 msgid "failed to parse --submodule option parameter: '%s'"
 msgstr "--submodule seçenek parametresi ayrıştırılamadı: '%s'"
 
-#: diff.c:5328
+#: diff.c:5331
 #, c-format
 msgid "bad --word-diff argument: %s"
 msgstr "hatalı --word-diff argümanı: %s"
 
-#: diff.c:5351
+#: diff.c:5367
 msgid "Diff output format options"
 msgstr "Diff çıktısı biçimlendirme seçenekleri"
 
-#: diff.c:5353 diff.c:5359
+#: diff.c:5369 diff.c:5375
 msgid "generate patch"
 msgstr "yama oluştur"
 
-#: diff.c:5356 builtin/log.c:178
+#: diff.c:5372 builtin/log.c:179
 msgid "suppress diff output"
 msgstr "diff çıktısını gizle"
 
-#: diff.c:5361 diff.c:5475 diff.c:5482
+#: diff.c:5377 diff.c:5491 diff.c:5498
 msgid "<n>"
 msgstr "<n>"
 
-#: diff.c:5362 diff.c:5365
+#: diff.c:5378 diff.c:5381
 msgid "generate diffs with <n> lines context"
 msgstr "diff'leri <n> satır bağlamlı oluştur"
 
-#: diff.c:5367
+#: diff.c:5383
 msgid "generate the diff in raw format"
 msgstr "diff'i ham biçimde oluştur"
 
-#: diff.c:5370
+#: diff.c:5386
 msgid "synonym for '-p --raw'"
 msgstr "'-p --raw eşanlamlısı"
 
-#: diff.c:5374
+#: diff.c:5390
 msgid "synonym for '-p --stat'"
 msgstr "'-p --stat eşanlamlısı"
 
-#: diff.c:5378
+#: diff.c:5394
 msgid "machine friendly --stat"
 msgstr "makinede okunabilen --stat"
 
-#: diff.c:5381
+#: diff.c:5397
 msgid "output only the last line of --stat"
 msgstr "--stat'ın yalnızca son satırını çıktı ver"
 
-#: diff.c:5383 diff.c:5391
+#: diff.c:5399 diff.c:5407
 msgid "<param1,param2>..."
 msgstr "<param1,param2>..."
 
-#: diff.c:5384
+#: diff.c:5400
 msgid ""
 "output the distribution of relative amount of changes for each sub-directory"
 msgstr ""
 "her alt dizin için göreceli bir miktar değişikliğin dağıtımını çıktı ver"
 
-#: diff.c:5388
+#: diff.c:5404
 msgid "synonym for --dirstat=cumulative"
 msgstr "--dirstat-cumulative eşanlamlısı"
 
-#: diff.c:5392
+#: diff.c:5408
 msgid "synonym for --dirstat=files,param1,param2..."
 msgstr "--dirstat=files,param1,param2... eşanlamlısı"
 
-#: diff.c:5396
+#: diff.c:5412
 msgid "warn if changes introduce conflict markers or whitespace errors"
 msgstr ""
 "değişiklikler çakışma imleyicileri veya boşluk hataları doğuruyorsa uyar"
 
-#: diff.c:5399
+#: diff.c:5415
 msgid "condensed summary such as creations, renames and mode changes"
 msgstr ""
 "sıkışık özet; örn. oluşumlar, yeniden adlandırmalar ve kip değişiklikleri"
 
-#: diff.c:5402
+#: diff.c:5418
 msgid "show only names of changed files"
 msgstr "yalnızca değiştirilen dosyaların adlarını göster"
 
-#: diff.c:5405
+#: diff.c:5421
 msgid "show only names and status of changed files"
 msgstr "yalnızca değiştirilen dosyaların adlarını ve durumlarını göster"
 
-#: diff.c:5407
+#: diff.c:5423
 msgid "<width>[,<name-width>[,<count>]]"
 msgstr "<genişlik>[,<ad-genişlik>[,<sayım>]]"
 
-#: diff.c:5408
+#: diff.c:5424
 msgid "generate diffstat"
 msgstr "diffstat oluştur"
 
-#: diff.c:5410 diff.c:5413 diff.c:5416
+#: diff.c:5426 diff.c:5429 diff.c:5432
 msgid "<width>"
 msgstr "<genişlik>"
 
-#: diff.c:5411
+#: diff.c:5427
 msgid "generate diffstat with a given width"
 msgstr "diffstat'ı verilmiş bir genişlik ile oluştur"
 
-#: diff.c:5414
+#: diff.c:5430
 msgid "generate diffstat with a given name width"
 msgstr "diffstat'ı verilmiş bir ad genişliği ile oluştur"
 
-#: diff.c:5417
+#: diff.c:5433
 msgid "generate diffstat with a given graph width"
 msgstr "diffstat'ı verilmiş bir grafik genişliği ile oluştur"
 
-#: diff.c:5419
+#: diff.c:5435
 msgid "<count>"
 msgstr "<sayım>"
 
-#: diff.c:5420
+#: diff.c:5436
 msgid "generate diffstat with limited lines"
 msgstr "diffstat'ı kısıtlı satırlarla oluştur"
 
-#: diff.c:5423
+#: diff.c:5439
 msgid "generate compact summary in diffstat"
 msgstr "diffstat içinde ufak özet oluştur"
 
-#: diff.c:5426
+#: diff.c:5442
 msgid "output a binary diff that can be applied"
 msgstr "uygulanabilir bir ikili diff çıktısı ver"
 
-#: diff.c:5429
+#: diff.c:5445
 msgid "show full pre- and post-image object names on the \"index\" lines"
 msgstr "\"index\" satırlarında tam ön ve songörüntü nesne adlarını göster"
 
-#: diff.c:5431
+#: diff.c:5447
 msgid "show colored diff"
 msgstr "renkli diff göster"
 
-#: diff.c:5432
+#: diff.c:5448
 msgid "<kind>"
 msgstr "<çeşit>"
 
-#: diff.c:5433
+#: diff.c:5449
 msgid ""
 "highlight whitespace errors in the 'context', 'old' or 'new' lines in the "
 "diff"
 msgstr ""
 "diff'teki boşluk hatalarını 'context', 'old' veya 'new' satırlarında vurgula"
 
-#: diff.c:5436
+#: diff.c:5452
 msgid ""
 "do not munge pathnames and use NULs as output field terminators in --raw or "
 "--numstat"
@@ -3565,88 +3633,88 @@ msgstr ""
 "--raw veya --numstat içinde yol adlarını tahrip etme ve çıktı alanı "
 "sonlandırıcıları olarak NUL'ları kullan"
 
-#: diff.c:5439 diff.c:5442 diff.c:5445 diff.c:5554
+#: diff.c:5455 diff.c:5458 diff.c:5461 diff.c:5570
 msgid "<prefix>"
 msgstr "<önek>"
 
-#: diff.c:5440
+#: diff.c:5456
 msgid "show the given source prefix instead of \"a/\""
 msgstr "\"a/\" yerine verilmiş kaynak önekini göster"
 
-#: diff.c:5443
+#: diff.c:5459
 msgid "show the given destination prefix instead of \"b/\""
 msgstr "\"b/\"yerine verilmiş kaynak önekini göster"
 
-#: diff.c:5446
+#: diff.c:5462
 msgid "prepend an additional prefix to every line of output"
 msgstr "çıktının her satırının başına ek bir önek ekle"
 
-#: diff.c:5449
+#: diff.c:5465
 msgid "do not show any source or destination prefix"
 msgstr "hiçbir kaynak ve hedef önekini gösterme"
 
-#: diff.c:5452
+#: diff.c:5468
 msgid "show context between diff hunks up to the specified number of lines"
 msgstr "diff parçaları arasındaki bağlamı belirtilen satır sayısı kadar göster"
 
-#: diff.c:5456 diff.c:5461 diff.c:5466
+#: diff.c:5472 diff.c:5477 diff.c:5482
 msgid "<char>"
 msgstr "<karakter>"
 
-#: diff.c:5457
+#: diff.c:5473
 msgid "specify the character to indicate a new line instead of '+'"
 msgstr "yeni satırı belirtmek için '+' yerine kullanılacak karakteri belirle"
 
-#: diff.c:5462
+#: diff.c:5478
 msgid "specify the character to indicate an old line instead of '-'"
 msgstr "eski satırı belirtmek için '-' yerine kullanılacak karakteri belirle"
 
-#: diff.c:5467
+#: diff.c:5483
 msgid "specify the character to indicate a context instead of ' '"
 msgstr "bağlam belirtmek için ' ' yerine kullanılacak karakteri belirle"
 
-#: diff.c:5470
+#: diff.c:5486
 msgid "Diff rename options"
 msgstr "Diff yeniden adlandırma seçenekleri"
 
-#: diff.c:5471
+#: diff.c:5487
 msgid "<n>[/<m>]"
 msgstr "<n>[/<m>]"
 
-#: diff.c:5472
+#: diff.c:5488
 msgid "break complete rewrite changes into pairs of delete and create"
 msgstr "tam yeniden yazım değişikliklerini silme ve oluşturma olarak ayır"
 
-#: diff.c:5476
+#: diff.c:5492
 msgid "detect renames"
 msgstr "yeniden adlandırmaları algıla"
 
-#: diff.c:5480
+#: diff.c:5496
 msgid "omit the preimage for deletes"
 msgstr "silmeler için öngörüntüyü atla"
 
-#: diff.c:5483
+#: diff.c:5499
 msgid "detect copies"
 msgstr "kopyaları algıla"
 
-#: diff.c:5487
+#: diff.c:5503
 msgid "use unmodified files as source to find copies"
 msgstr "değiştirilmemiş dosyaları kopyaları bulmak için kaynak olarak kullan"
 
-#: diff.c:5489
+#: diff.c:5505
 msgid "disable rename detection"
 msgstr "yeniden adlandırma algılamasını devre dışı bırak"
 
-#: diff.c:5492
+#: diff.c:5508
 msgid "use empty blobs as rename source"
 msgstr "boş ikili nesneleri yeniden adlandırma kaynağı olarak kullan"
 
-#: diff.c:5494
+#: diff.c:5510
 msgid "continue listing the history of a file beyond renames"
 msgstr ""
 "bir dosyanın geçmişini listelemeyi yeniden adlandırmaların ötesinde sürdür"
 
-#: diff.c:5497
+#: diff.c:5513
 msgid ""
 "prevent rename/copy detection if the number of rename/copy targets exceeds "
 "given limit"
@@ -3654,222 +3722,234 @@ msgstr ""
 "eğer yeniden adlandırma/kopyalama hedeflerinin sayısı verilen sınırı aşarsa "
 "yeniden adlandırma/kopyalama algılamasını önle"
 
-#: diff.c:5499
+#: diff.c:5515
 msgid "Diff algorithm options"
 msgstr "Diff algoritma seçenekleri"
 
-#: diff.c:5501
+#: diff.c:5517
 msgid "produce the smallest possible diff"
 msgstr "olabilecek en küçük diff'i üret"
 
-#: diff.c:5504
+#: diff.c:5520
 msgid "ignore whitespace when comparing lines"
 msgstr "satırları karşılaştırırken boşlukları yok say"
 
-#: diff.c:5507
+#: diff.c:5523
 msgid "ignore changes in amount of whitespace"
 msgstr "boşluk sayısındaki değişiklikleri yok say"
 
-#: diff.c:5510
+#: diff.c:5526
 msgid "ignore changes in whitespace at EOL"
 msgstr "satır sonundaki boşluk değişikliklerini yok say"
 
-#: diff.c:5513
+#: diff.c:5529
 msgid "ignore carrier-return at the end of line"
 msgstr "satır sonundaki satırbaşı karakterini yok say"
 
-#: diff.c:5516
+#: diff.c:5532
 msgid "ignore changes whose lines are all blank"
 msgstr "satırlarının tümü boş olan değişiklikleri yok say"
 
-#: diff.c:5518 diff.c:5540 diff.c:5543 diff.c:5588
+#: diff.c:5534 diff.c:5556 diff.c:5559 diff.c:5604
 msgid "<regex>"
 msgstr "<ifade>"
 
-#: diff.c:5519
+#: diff.c:5535
 msgid "ignore changes whose all lines match <regex>"
 msgstr "satırlarının tümü <ifade> ile eşleşen değişiklikleri yok say"
 
-#: diff.c:5522
+#: diff.c:5538
 msgid "heuristic to shift diff hunk boundaries for easy reading"
 msgstr "diff parça sınırlarını kolay okuma için bulgusal olarak kaydır"
 
-#: diff.c:5525
+#: diff.c:5541
 msgid "generate diff using the \"patience diff\" algorithm"
 msgstr "diff'i \"patience diff\" algoritmasını kullanarak oluştur"
 
-#: diff.c:5529
+#: diff.c:5545
 msgid "generate diff using the \"histogram diff\" algorithm"
 msgstr "diff'i \"histogram diff\" algoritmasını kullanarak oluştur"
 
-#: diff.c:5531
+#: diff.c:5547
 msgid "<algorithm>"
 msgstr "<algoritma>"
 
-#: diff.c:5532
+#: diff.c:5548
 msgid "choose a diff algorithm"
 msgstr "bir diff algoritması seç"
 
-#: diff.c:5534
+#: diff.c:5550
 msgid "<text>"
 msgstr "<metin>"
 
-#: diff.c:5535
+#: diff.c:5551
 msgid "generate diff using the \"anchored diff\" algorithm"
 msgstr "diff'i \"anchored diff\" algoritmasını kullanarak oluştur"
 
-#: diff.c:5537 diff.c:5546 diff.c:5549
+#: diff.c:5553 diff.c:5562 diff.c:5565
 msgid "<mode>"
 msgstr "<kip>"
 
-#: diff.c:5538
+#: diff.c:5554
 msgid "show word diff, using <mode> to delimit changed words"
 msgstr ""
 "sözcük diff'ini değiştirilen sözcükleri sınırlandırmak için <kip> kullanarak "
 "göster"
 
-#: diff.c:5541
+#: diff.c:5557
 msgid "use <regex> to decide what a word is"
 msgstr "bir sözcüğün ne olduğuna karar vermek için <ifade> kullan"
 
-#: diff.c:5544
+#: diff.c:5560
 msgid "equivalent to --word-diff=color --word-diff-regex=<regex>"
 msgstr "şuna eşdeğer: --word-diff=color --word-diff-regex=<ifade>"
 
-#: diff.c:5547
+#: diff.c:5563
 msgid "moved lines of code are colored differently"
 msgstr "taşınan kod satırları farklı renklendirilir"
 
-#: diff.c:5550
+#: diff.c:5566
 msgid "how white spaces are ignored in --color-moved"
 msgstr "boşluklar --color-moved içinde nasıl yok sayılır"
 
-#: diff.c:5553
+#: diff.c:5569
 msgid "Other diff options"
 msgstr "Diğer diff seçenekleri"
 
-#: diff.c:5555
+#: diff.c:5571
 msgid "when run from subdir, exclude changes outside and show relative paths"
 msgstr ""
 "altdizinden çalıştırıldığında dışarıdaki değişiklikleri hariç tut ve "
 "göreceli yolları göster"
 
-#: diff.c:5559
+#: diff.c:5575
 msgid "treat all files as text"
 msgstr "tüm dosyaları metin olarak varsay"
 
-#: diff.c:5561
+#: diff.c:5577
 msgid "swap two inputs, reverse the diff"
 msgstr "iki girdiyi değiştir, diff'i tersine döndür"
 
-#: diff.c:5563
+#: diff.c:5579
 msgid "exit with 1 if there were differences, 0 otherwise"
 msgstr "ayrımlar varsa 1 ile, yoksa 0 ile çık"
 
-#: diff.c:5565
+#: diff.c:5581
 msgid "disable all output of the program"
 msgstr "tüm program çıktısını devre dışı bırak"
 
-#: diff.c:5567
+#: diff.c:5583
 msgid "allow an external diff helper to be executed"
 msgstr "bir dış diff yardımcısının çalıştırılmasına izin ver"
 
-#: diff.c:5569
+#: diff.c:5585
 msgid "run external text conversion filters when comparing binary files"
 msgstr ""
 "ikili dosyaları karşılaştırırken dış metin dönüştürme süzgeçlerini çalıştır"
 
-#: diff.c:5571
+#: diff.c:5587
 msgid "<when>"
 msgstr "<ne-zaman>"
 
-#: diff.c:5572
+#: diff.c:5588
 msgid "ignore changes to submodules in the diff generation"
 msgstr "diff oluştururken altmodüllere olan değişiklikleri yok say"
 
-#: diff.c:5575
+#: diff.c:5591
 msgid "<format>"
 msgstr "<biçim>"
 
-#: diff.c:5576
+#: diff.c:5592
 msgid "specify how differences in submodules are shown"
 msgstr "altmodüllerdeki değişikliklerin nasıl gösterileceğini belirt"
 
-#: diff.c:5580
+#: diff.c:5596
 msgid "hide 'git add -N' entries from the index"
 msgstr "indeksten 'git add -N' girdilerini gizle"
 
-#: diff.c:5583
+#: diff.c:5599
 msgid "treat 'git add -N' entries as real in the index"
 msgstr "indekste 'git add -N' girdilerine gerçekmiş gibi davran"
 
-#: diff.c:5585
+#: diff.c:5601
 msgid "<string>"
 msgstr "<dizi>"
 
-#: diff.c:5586
+#: diff.c:5602
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "string"
 msgstr "belirtilen dizinin görülme sayısını değiştiren ayrımlara bak"
 
-#: diff.c:5589
+#: diff.c:5605
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "regex"
 msgstr "belirtilen düzenli ifadenin görülme sayısını değiştiren ayrımlara bak"
 
-#: diff.c:5592
+#: diff.c:5608
 msgid "show all changes in the changeset with -S or -G"
 msgstr "değişiklik setinde -S veya -G içeren tüm değişiklikleri göster"
 
-#: diff.c:5595
+#: diff.c:5611
 msgid "treat <string> in -S as extended POSIX regular expression"
 msgstr "-S içindeki <dizi>'yi genişletilmiş POSIX düzenli ifadesi olarak işle"
 
-#: diff.c:5598
+#: diff.c:5614
 msgid "control the order in which files appear in the output"
 msgstr "dosyaların çıktıda hangi sırayla görüneceğini denetle"
 
-#: diff.c:5599
+#: diff.c:5615 diff.c:5618
+msgid "<path>"
+msgstr "<yol>"
+
+#: diff.c:5616
+msgid "show the change in the specified path first"
+msgstr "öncelikle belirtilen yoldaki değişikliği göster"
+
+#: diff.c:5619
+msgid "skip the output to the specified path"
+msgstr "belirtilen yola olan çıktıyı atla"
+
+#: diff.c:5621
 msgid "<object-id>"
 msgstr "<nesne-no>"
 
-#: diff.c:5600
+#: diff.c:5622
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "object"
 msgstr "belirtilen nesnenin görülme sayısını değiştiren ayrımlara bak"
 
-#: diff.c:5602
+#: diff.c:5624
 msgid "[(A|C|D|M|R|T|U|X|B)...[*]]"
 msgstr "[(A|C|D|M|R|T|U|X|B)...[*]]"
 
-#: diff.c:5603
+#: diff.c:5625
 msgid "select files by diff type"
 msgstr "dosyaları diff türüne göre seç"
 
-#: diff.c:5605
+#: diff.c:5627
 msgid "<file>"
 msgstr "<dosya>"
 
-#: diff.c:5606
+#: diff.c:5628
 msgid "Output to a specific file"
 msgstr "belirli bir dosyaya çıktı ver"
 
-#: diff.c:6263
+#: diff.c:6285
 msgid "inexact rename detection was skipped due to too many files."
 msgstr ""
 "Kesin olmayan yeniden adlandırma algılaması çok fazla dosya olmasından "
 "dolayı atlandı."
 
-#: diff.c:6266
+#: diff.c:6288
 msgid "only found copies from modified paths due to too many files."
 msgstr ""
 "Çok fazla dosya olmasından dolayı yalnızca değiştirilen yollardan kopyalar "
 "bulundu."
 
-#: diff.c:6269
+#: diff.c:6291
 #, c-format
 msgid ""
 "you may want to set your %s variable to at least %d and retry the command."
@@ -3882,10 +3962,15 @@ msgstr ""
 msgid "failed to read orderfile '%s'"
 msgstr "orderfile '%s' okunamadı"
 
-#: diffcore-rename.c:592
+#: diffcore-rename.c:786
 msgid "Performing inexact rename detection"
 msgstr "Kesin olmayan yeniden adlandırma algılaması gerçekleştiriliyor"
 
+#: diffcore-rotate.c:29
+#, c-format
+msgid "No such path '%s' in the diff"
+msgstr "diff'te '%s' diye bir yol yok"
+
 #: dir.c:578
 #, c-format
 msgid "pathspec '%s' did not match any file(s) known to git"
@@ -3928,17 +4013,17 @@ msgstr "çekirdek adı ve bilgisi alınamadı"
 msgid "untracked cache is disabled on this system or location"
 msgstr "izlenmeyen önbellek bu sistemde veya konumda devre dışı bırakılmış"
 
-#: dir.c:3520
+#: dir.c:3534
 #, c-format
 msgid "index file corrupt in repo %s"
 msgstr "%s deposundaki indeks dosyası hasarlı"
 
-#: dir.c:3565 dir.c:3570
+#: dir.c:3579 dir.c:3584
 #, c-format
 msgid "could not create directories for %s"
 msgstr "%s için dizinler oluşturulamadı"
 
-#: dir.c:3599
+#: dir.c:3613
 #, c-format
 msgid "could not migrate git directory from '%s' to '%s'"
 msgstr "git dizini '%s' konumundan '%s' konumuna göç ettirilemedi"
@@ -3957,12 +4042,12 @@ msgstr "İçerik süzülüyor"
 msgid "could not stat file '%s'"
 msgstr "'%s' dosyasının bilgileri alınamadı"
 
-#: environment.c:150
+#: environment.c:152
 #, c-format
 msgid "bad git namespace path \"%s\""
 msgstr "hatalı git ad alanı yolu \"%s\""
 
-#: environment.c:337
+#: environment.c:335
 #, c-format
 msgid "could not set GIT_DIR to '%s'"
 msgstr "GIT_DIR şuna ayarlanamadı: '%s'"
@@ -3997,32 +4082,32 @@ msgstr "uzak konuma yazılamıyor"
 msgid "--stateless-rpc requires multi_ack_detailed"
 msgstr "--stateless-rpc multi_ack_detailed gerektiriyor"
 
-#: fetch-pack.c:378 fetch-pack.c:1406
+#: fetch-pack.c:378 fetch-pack.c:1457
 #, c-format
 msgid "invalid shallow line: %s"
 msgstr "geçersiz sığ satır: %s"
 
-#: fetch-pack.c:384 fetch-pack.c:1412
+#: fetch-pack.c:384 fetch-pack.c:1463
 #, c-format
 msgid "invalid unshallow line: %s"
 msgstr "geçersiz sığ olmayan satır: %s"
 
-#: fetch-pack.c:386 fetch-pack.c:1414
+#: fetch-pack.c:386 fetch-pack.c:1465
 #, c-format
 msgid "object not found: %s"
 msgstr "nesne bulunamadı: %s"
 
-#: fetch-pack.c:389 fetch-pack.c:1417
+#: fetch-pack.c:389 fetch-pack.c:1468
 #, c-format
 msgid "error in object: %s"
 msgstr "nesne içinde hata: %s"
 
-#: fetch-pack.c:391 fetch-pack.c:1419
+#: fetch-pack.c:391 fetch-pack.c:1470
 #, c-format
 msgid "no shallow found: %s"
 msgstr "sığ bulunamadı: %s"
 
-#: fetch-pack.c:394 fetch-pack.c:1423
+#: fetch-pack.c:394 fetch-pack.c:1474
 #, c-format
 msgid "expected shallow/unshallow, got %s"
 msgstr "sığ/sığ olmayan bekleniyordu, %s alındı"
@@ -4060,171 +4145,175 @@ msgstr "%s tamam olarak imleniyor"
 msgid "already have %s (%s)"
 msgstr "%s halihazırda var (%s)"
 
-#: fetch-pack.c:827
+#: fetch-pack.c:844
 msgid "fetch-pack: unable to fork off sideband demultiplexer"
 msgstr "fetch-pack: yanbant çoğullama çözücüsü ayrı çatallanamıyor"
 
-#: fetch-pack.c:835
+#: fetch-pack.c:852
 msgid "protocol error: bad pack header"
 msgstr "protokol hatası: hatalı paket üstbilgisi"
 
-#: fetch-pack.c:919
+#: fetch-pack.c:946
 #, c-format
 msgid "fetch-pack: unable to fork off %s"
 msgstr "fetch-pack: %s ayrı çatallanamıyor"
 
-#: fetch-pack.c:937
+#: fetch-pack.c:952
+msgid "fetch-pack: invalid index-pack output"
+msgstr "fetch-pack: geçersiz index-pack çıktısı"
+
+#: fetch-pack.c:969
 #, c-format
 msgid "%s failed"
 msgstr "%s başarısız oldu"
 
-#: fetch-pack.c:939
+#: fetch-pack.c:971
 msgid "error in sideband demultiplexer"
 msgstr "yanbant çoğullama çözücüsünde hata"
 
-#: fetch-pack.c:982
+#: fetch-pack.c:1031
 #, c-format
 msgid "Server version is %.*s"
 msgstr "Sunucu sürümü %.*s"
 
-#: fetch-pack.c:990 fetch-pack.c:996 fetch-pack.c:999 fetch-pack.c:1005
-#: fetch-pack.c:1009 fetch-pack.c:1013 fetch-pack.c:1017 fetch-pack.c:1021
-#: fetch-pack.c:1025 fetch-pack.c:1029 fetch-pack.c:1033 fetch-pack.c:1037
-#: fetch-pack.c:1043 fetch-pack.c:1049 fetch-pack.c:1054 fetch-pack.c:1059
+#: fetch-pack.c:1039 fetch-pack.c:1045 fetch-pack.c:1048 fetch-pack.c:1054
+#: fetch-pack.c:1058 fetch-pack.c:1062 fetch-pack.c:1066 fetch-pack.c:1070
+#: fetch-pack.c:1074 fetch-pack.c:1078 fetch-pack.c:1082 fetch-pack.c:1086
+#: fetch-pack.c:1092 fetch-pack.c:1098 fetch-pack.c:1103 fetch-pack.c:1108
 #, c-format
 msgid "Server supports %s"
 msgstr "Sunucu %s destekliyor"
 
-#: fetch-pack.c:992
+#: fetch-pack.c:1041
 msgid "Server does not support shallow clients"
 msgstr "Sunucu sığ istemcileri desteklemiyor"
 
-#: fetch-pack.c:1052
+#: fetch-pack.c:1101
 msgid "Server does not support --shallow-since"
 msgstr "Sunucu --shallow-since desteklemiyor"
 
-#: fetch-pack.c:1057
+#: fetch-pack.c:1106
 msgid "Server does not support --shallow-exclude"
 msgstr "Sunucu --shallow-exclude desteklemiyor"
 
-#: fetch-pack.c:1061
+#: fetch-pack.c:1110
 msgid "Server does not support --deepen"
 msgstr "Sunucu --deepen desteklemiyor"
 
-#: fetch-pack.c:1063
+#: fetch-pack.c:1112
 msgid "Server does not support this repository's object format"
 msgstr "Sunucu bu deponun nesne türünü desteklemiyor"
 
-#: fetch-pack.c:1076
+#: fetch-pack.c:1125
 msgid "no common commits"
 msgstr "ortak işleme yok"
 
-#: fetch-pack.c:1088 fetch-pack.c:1628
+#: fetch-pack.c:1138 fetch-pack.c:1682
 msgid "git fetch-pack: fetch failed."
 msgstr "git fetch-pack: getirme başarısız"
 
-#: fetch-pack.c:1214
+#: fetch-pack.c:1265
 #, c-format
 msgid "mismatched algorithms: client %s; server %s"
 msgstr "eşleşmeyen algoritmalar: istemci %s; sunucu %s"
 
-#: fetch-pack.c:1218
+#: fetch-pack.c:1269
 #, c-format
 msgid "the server does not support algorithm '%s'"
 msgstr "sunucu '%s' algoritmasını desteklemiyor"
 
-#: fetch-pack.c:1238
+#: fetch-pack.c:1289
 msgid "Server does not support shallow requests"
 msgstr "Sunucu sığ istekleri desteklemiyor"
 
-#: fetch-pack.c:1245
+#: fetch-pack.c:1296
 msgid "Server supports filter"
 msgstr "Sunucu süzgeç destekliyor"
 
-#: fetch-pack.c:1284
+#: fetch-pack.c:1335
 msgid "unable to write request to remote"
 msgstr "uzak konuma istek yazılamıyor"
 
-#: fetch-pack.c:1302
+#: fetch-pack.c:1353
 #, c-format
 msgid "error reading section header '%s'"
 msgstr "bölüm üstbilgisi '%s' okunurken hata"
 
-#: fetch-pack.c:1308
+#: fetch-pack.c:1359
 #, c-format
 msgid "expected '%s', received '%s'"
 msgstr "'%s' bekleniyordu, '%s' alındı"
 
-#: fetch-pack.c:1369
+#: fetch-pack.c:1420
 #, c-format
 msgid "unexpected acknowledgment line: '%s'"
 msgstr "beklenmedik alındı satırı: '%s'"
 
-#: fetch-pack.c:1374
+#: fetch-pack.c:1425
 #, c-format
 msgid "error processing acks: %d"
 msgstr "alındılar işlenirken hata: %d"
 
-#: fetch-pack.c:1384
+#: fetch-pack.c:1435
 msgid "expected packfile to be sent after 'ready'"
 msgstr "paket dosyasının 'ready'den sonra gönderilmesi gerekiyordu"
 
-#: fetch-pack.c:1386
+#: fetch-pack.c:1437
 msgid "expected no other sections to be sent after no 'ready'"
 msgstr "'ready' \"yok\" iken başka hiçbir bölümün gönderilmemesi gerekiyordu"
 
-#: fetch-pack.c:1428
+#: fetch-pack.c:1479
 #, c-format
 msgid "error processing shallow info: %d"
 msgstr "sığ bilgi işlenirken hata: %d"
 
-#: fetch-pack.c:1475
+#: fetch-pack.c:1526
 #, c-format
 msgid "expected wanted-ref, got '%s'"
 msgstr "wanted-ref bekleniyordu, '%s' alındı"
 
-#: fetch-pack.c:1480
+#: fetch-pack.c:1531
 #, c-format
 msgid "unexpected wanted-ref: '%s'"
 msgstr "beklenmedik wanted-ref: '%s'"
 
-#: fetch-pack.c:1485
+#: fetch-pack.c:1536
 #, c-format
 msgid "error processing wanted refs: %d"
 msgstr "aranan başvurular işlenirken hata: %d"
 
-#: fetch-pack.c:1515
+#: fetch-pack.c:1566
 msgid "git fetch-pack: expected response end packet"
 msgstr "git fetch-pack: yanıt sonu paketi bekleniyordu"
 
-#: fetch-pack.c:1897
+#: fetch-pack.c:1960
 msgid "no matching remote head"
 msgstr "eşleşen uzak dal ucu yok"
 
-#: fetch-pack.c:1920 builtin/clone.c:693
+#: fetch-pack.c:1983 builtin/clone.c:693
 msgid "remote did not send all necessary objects"
 msgstr "uzak konum gereken tüm nesneleri göndermedi"
 
-#: fetch-pack.c:1947
+#: fetch-pack.c:2010
 #, c-format
 msgid "no such remote ref %s"
 msgstr "böyle bir uzak başvuru yok: %s"
 
-#: fetch-pack.c:1950
+#: fetch-pack.c:2013
 #, c-format
 msgid "Server does not allow request for unadvertised object %s"
 msgstr "Sunucu %s tanıtılmamış nesnesi için isteğe izin vermiyor"
 
-#: gpg-interface.c:272
+#: gpg-interface.c:273
 msgid "could not create temporary file"
 msgstr "geçici dosya oluşturulamadı"
 
-#: gpg-interface.c:275
+#: gpg-interface.c:276
 #, c-format
 msgid "failed writing detached signature to '%s'"
 msgstr "şuna ayrık imza yazılamadı: '%s'"
 
-#: gpg-interface.c:457
+#: gpg-interface.c:470
 msgid "gpg failed to sign the data"
 msgstr "gpg veriyi imzalayamadı"
 
@@ -4233,7 +4322,7 @@ msgstr "gpg veriyi imzalayamadı"
 msgid "ignore invalid color '%.*s' in log.graphColors"
 msgstr "log.graphColors içindeki '%.*s' geçersiz rengini yok say"
 
-#: grep.c:640
+#: grep.c:543
 msgid ""
 "given pattern contains NULL byte (via -f <file>). This is only supported "
 "with -P under PCRE v2"
@@ -4241,18 +4330,18 @@ msgstr ""
 "verilen dizgi NULL baytı içeriyor (-f <dosya> aracılığıyla). Bu yalnızca "
 "PCRE v2 altında -P ile desteklenir"
 
-#: grep.c:2100
+#: grep.c:1906
 #, c-format
 msgid "'%s': unable to read %s"
 msgstr "'%s': %s okunamıyor"
 
-#: grep.c:2117 setup.c:176 builtin/clone.c:412 builtin/diff.c:89
+#: grep.c:1923 setup.c:176 builtin/clone.c:412 builtin/diff.c:90
 #: builtin/rm.c:135
 #, c-format
 msgid "failed to stat '%s'"
 msgstr "'%s' dosyasının bilgileri alınamadı"
 
-#: grep.c:2128
+#: grep.c:1934
 #, c-format
 msgid "'%s': short read"
 msgstr "'%s': kısa okuma"
@@ -4323,7 +4412,7 @@ msgstr "$PATH içindeki başka yerlerden kullanılabilen git komutları"
 msgid "These are common Git commands used in various situations:"
 msgstr "En çok kullanılan temel Git komutlarının bir listesi aşağıdadır:"
 
-#: help.c:365 git.c:99
+#: help.c:365 git.c:100
 #, c-format
 msgid "unsupported command listing type '%s'"
 msgstr "desteklenmeyen komut listeleme türü '%s'"
@@ -4564,125 +4653,50 @@ msgstr ""
 msgid "Unable to create '%s.lock': %s"
 msgstr "'%s.lock' oluşturulamıyor: %s"
 
-#: ls-refs.c:109
-msgid "expected flush after ls-refs arguments"
-msgstr "ls-refs argümanlarından sonra floş bekleniyordu"
-
-#: merge-ort-wrappers.c:13 merge-recursive.c:3672
-#, c-format
-msgid ""
-"Your local changes to the following files would be overwritten by merge:\n"
-"  %s"
-msgstr ""
-"Birleştirme ile aşağıdaki dosyalardaki yerel değişikliklerin üzerine "
-"yazılacak:\n"
-"\t%s"
-
-#: merge-ort-wrappers.c:33 merge-recursive.c:3436
-#, c-format
-msgid "Already up to date!"
-msgstr "Tümü güncel!"
-
-#: merge-recursive.c:356
-msgid "(bad commit)\n"
-msgstr "(hatalı işleme)\n"
-
-#: merge-recursive.c:379
-#, c-format
-msgid "add_cacheinfo failed for path '%s'; merge aborting."
-msgstr ""
-"add_cacheinfo '%s' yolu için başarısız oldu; birleştirme iptal ediliyor."
-
-#: merge-recursive.c:388
-#, c-format
-msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
-msgstr "add_cacheinfo '%s' yolu için yenilenemedi; birleştirme iptal ediliyor."
-
-#: merge-recursive.c:874
-#, c-format
-msgid "failed to create path '%s'%s"
-msgstr "'%s'%s yolu oluşturulamadı"
-
-#: merge-recursive.c:885
-#, c-format
-msgid "Removing %s to make room for subdirectory\n"
-msgstr "Altdizine yer açmak için %s kaldırılıyor\n"
-
-#: merge-recursive.c:899 merge-recursive.c:918
-msgid ": perhaps a D/F conflict?"
-msgstr ": bir D/F çakışması olabilir mi?"
-
-#: merge-recursive.c:908
-#, c-format
-msgid "refusing to lose untracked file at '%s'"
-msgstr "'%s' konumundaki izlenmeyen dosyayı kaybetme reddediliyor"
-
-#: merge-recursive.c:949 builtin/cat-file.c:41
-#, c-format
-msgid "cannot read object %s '%s'"
-msgstr "%s '%s' nesnesi okunamıyor"
-
-#: merge-recursive.c:954
-#, c-format
-msgid "blob expected for %s '%s'"
-msgstr "%s '%s' için ikili nesne bekleniyordu"
-
-#: merge-recursive.c:979
-#, c-format
-msgid "failed to open '%s': %s"
-msgstr "'%s' açılamadı: %s"
-
-#: merge-recursive.c:990
+#: ls-refs.c:37
 #, c-format
-msgid "failed to symlink '%s': %s"
-msgstr "'%s' için sembolik bağ oluşturulamadı: %s"
+msgid "invalid value '%s' for lsrefs.unborn"
+msgstr "lsrefs.unborn için '%s' geçersiz değeri"
 
-#: merge-recursive.c:995
-#, c-format
-msgid "do not know what to do with %06o %s '%s'"
-msgstr "şununla ne yapılacağı bilinmiyor: %06o %s '%s'"
+#: ls-refs.c:167
+msgid "expected flush after ls-refs arguments"
+msgstr "ls-refs argümanlarından sonra floş bekleniyordu"
 
-#: merge-recursive.c:1191
+#: merge-ort.c:888 merge-recursive.c:1191
 #, c-format
 msgid "Failed to merge submodule %s (not checked out)"
 msgstr "%s altmodülü birleştirilemedi (çıkış yapılmadı)"
 
-#: merge-recursive.c:1198
+#: merge-ort.c:897 merge-recursive.c:1198
 #, c-format
 msgid "Failed to merge submodule %s (commits not present)"
 msgstr "%s altmodülü birleştirilemedi (işlemeler mevcut değil)"
 
-#: merge-recursive.c:1205
+#: merge-ort.c:906 merge-recursive.c:1205
 #, c-format
 msgid "Failed to merge submodule %s (commits don't follow merge-base)"
 msgstr "%s altmodülü birleştirilemedi (işlemeler merge-base'i takip etmiyor)"
 
-#: merge-recursive.c:1213 merge-recursive.c:1225
+#: merge-ort.c:916 merge-ort.c:923
 #, c-format
-msgid "Fast-forwarding submodule %s to the following commit:"
-msgstr "%s altmodülü şu işlemeye ileri sarılıyor:"
+msgid "Note: Fast-forwarding submodule %s to %s"
+msgstr "Not: %s altmodülü %s yönüne ileri sarılıyor"
 
-#: merge-recursive.c:1216 merge-recursive.c:1228
+#: merge-ort.c:944
 #, c-format
-msgid "Fast-forwarding submodule %s"
-msgstr "%s altmodülü ileri sarılıyor"
+msgid "Failed to merge submodule %s"
+msgstr "'%s' altmodülünü birleştirilemedi"
 
-#: merge-recursive.c:1251
+#: merge-ort.c:951
 #, c-format
-msgid "Failed to merge submodule %s (merge following commits not found)"
+msgid ""
+"Failed to merge submodule %s, but a possible merge resolution exists:\n"
+"%s\n"
 msgstr ""
-"%s altmodülü birleştirilemedi (işlemeleri takip eden birleştirme bulunamadı)"
-
-#: merge-recursive.c:1255
-#, c-format
-msgid "Failed to merge submodule %s (not fast-forward)"
-msgstr "%s altmodülü birleştirilemedi (ileri sarım değil)"
-
-#: merge-recursive.c:1256
-msgid "Found a possible merge resolution for the submodule:\n"
-msgstr "Şu altmodül için olası bir birleştirme çözümü bulundu:\n"
+"%s altmodülü birleştirilemedi; ancak olası bir birleştirme çözümü mevcut:\n"
+"%s\n"
 
-#: merge-recursive.c:1259
+#: merge-ort.c:955 merge-recursive.c:1259
 #, c-format
 msgid ""
 "If this is correct simply add it to the index for example\n"
@@ -4698,71 +4712,342 @@ msgstr ""
 "\n"
 "komutu bu öneriyi kabul edecektir.\n"
 
-#: merge-recursive.c:1268
+#: merge-ort.c:968
 #, c-format
-msgid "Failed to merge submodule %s (multiple merges found)"
-msgstr "%s altmodülü birleştirilemedi (birden çok birleştirme bulundu)"
+msgid ""
+"Failed to merge submodule %s, but multiple possible merges exist:\n"
+"%s"
+msgstr ""
+"%s altmodülü birleştirilemedi; ancak birden çok olası birleştirmeler "
+"mevcut:\n"
+"%s"
 
-#: merge-recursive.c:1341
+#: merge-ort.c:1127 merge-recursive.c:1341
 msgid "Failed to execute internal merge"
 msgstr "İç birleştirme çalıştırılamadı"
 
-#: merge-recursive.c:1346
+#: merge-ort.c:1132 merge-recursive.c:1346
 #, c-format
 msgid "Unable to add %s to database"
 msgstr "%s veritabanına eklenemedi"
 
-#: merge-recursive.c:1378
+#: merge-ort.c:1139 merge-recursive.c:1378
 #, c-format
 msgid "Auto-merging %s"
 msgstr "%s kendiliğinden birleştiriliyor"
 
-#: merge-recursive.c:1402
+#: merge-ort.c:1278 merge-recursive.c:2100
 #, c-format
-msgid "Error: Refusing to lose untracked file at %s; writing to %s instead."
+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 ""
-"Hata: %s konumundaki izlenmeyen dosyayı kaybetme reddediliyor, bunun yerine "
-"%s konumuna yazılacak."
+"ÇAKIŞMA (örtülü dizin yeniden adlandırma): %s konumundaki mevcut dosya/dizin "
+"örtülü yeniden adlandırmanın aşağıdaki yolları oraya koymasına engel oluyor: "
+"%s."
 
-#: merge-recursive.c:1474
+#: merge-ort.c:1288 merge-recursive.c:2110
 #, c-format
 msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
-"in tree."
+"CONFLICT (implicit dir rename): Cannot map more than one path to %s; "
+"implicit directory renames tried to put these paths there: %s"
 msgstr ""
-"ÇAKIŞMA (%s/silme): %s silindi (%s içinde) ve %s (%s içinde). %s (%s) sürümü "
-"ağaçta bırakıldı."
+"ÇAKIŞMA (örtülü dizin yeniden adlandırma): %s için birden çok yol "
+"eşlemlenemiyor; örtülü dizin yeniden adlandırmaları aşağıdaki yolları oraya "
+"koymayı denedi: %s."
 
-#: merge-recursive.c:1479
+#: merge-ort.c:1471
 #, c-format
 msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
-"left in tree."
+"CONFLICT (directory rename split): Unclear where to rename %s to; it was "
+"renamed to multiple other directories, with no destination getting a "
+"majority of the files."
 msgstr ""
-"ÇAKIŞMA (%s/silme): %s silindi (%s içinde) ve %s şuraya: %s (%s içinde). %s "
-"(%s) sürümü ağaçta bırakıldı."
+"ÇAKIŞMA: (dizin yeniden adlandırma ayrılması): %s ögesinin nereye yeniden "
+"adlandırılacağı belirsiz; herhangi bir hedef dosyaların çoğunu almadan "
+"birden çok başka dizine yeniden adlandırılmıştı."
 
-#: merge-recursive.c:1486
+#: merge-ort.c:1637 merge-recursive.c:2447
 #, c-format
 msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
-"in tree at %s."
+"WARNING: Avoiding applying %s -> %s rename to %s, because %s itself was "
+"renamed."
 msgstr ""
-"ÇAKIŞMA (%s/silme): %s silindi (%s içinde) ve %s (%s içinde). %s (%s) sürümü "
-"ağaçta %s konumunda bırakıldı."
+"UYARI: %s -> %s yeniden adlandırmasını %s ögesine uygulamadan kaçınılıyor, "
+"çünkü %s ögesinin kendisi yeniden adlandırıldı."
 
-#: merge-recursive.c:1491
+#: merge-ort.c:1781 merge-recursive.c:3215
 #, 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."
+"Path updated: %s added in %s inside a directory that was renamed in %s; "
+"moving it to %s."
 msgstr ""
-"ÇAKIŞMA (%s/silme): %s silindi (%s içinde) ve %s şuraya: %s (%s içinde). %s "
-"(%s) sürümü ağaçta %s konumunda bırakıldı."
+"Yol güncellendi: %s, (%s içinde eklenen) %s içinde yeniden adlandırılan bir "
+"dizinde; onu %s konumuna taşıdı."
 
-#: merge-recursive.c:1526
-msgid "rename"
-msgstr "yeniden adlandır"
+#: merge-ort.c:1788 merge-recursive.c:3222
+#, c-format
+msgid ""
+"Path updated: %s renamed to %s in %s, inside a directory that was renamed in "
+"%s; moving it to %s."
+msgstr ""
+"Yol güncellendi: %s, %s olarak yeniden adlandırıldı (%s içinde), %s içinde "
+"yeniden adlandırılan bir dizinde; onu %s konumuna taşıdı."
+
+#: merge-ort.c:1801 merge-recursive.c:3218
+#, c-format
+msgid ""
+"CONFLICT (file location): %s added in %s inside a directory that was renamed "
+"in %s, suggesting it should perhaps be moved to %s."
+msgstr ""
+"ÇAKIŞMA (dosya konumu): %s, (%s içinde eklenen) %s içinde yeniden "
+"adlandırılan bir dizinde, belki de %s konumuna taşınmalı."
+
+#: merge-ort.c:1809 merge-recursive.c:3225
+#, c-format
+msgid ""
+"CONFLICT (file location): %s renamed to %s in %s, inside a directory that "
+"was renamed in %s, suggesting it should perhaps be moved to %s."
+msgstr ""
+"ÇAKIŞMA (dosya konumu): %s, %s olarak yeniden adlandırıldı (%s içinde), %s "
+"içinde yeniden adlandırılan bir dizinde, belki de %s konumuna taşınmalı."
+
+#: merge-ort.c:1952
+#, c-format
+msgid "CONFLICT (rename/rename): %s renamed to %s in %s and to %s in %s."
+msgstr ""
+"ÇAKIŞMA (y. adlandır/y. adlandır): %s->%s olarak adlandırıldı (%s içinde) ve "
+"ek olarak %s olarak da adlandırıldı (%s içinde)."
+
+#: merge-ort.c:2047
+#, c-format
+msgid ""
+"CONFLICT (rename involved in collision): rename of %s -> %s has content "
+"conflicts AND collides with another path; this may result in nested conflict "
+"markers."
+msgstr ""
+"ÇAKIŞMA (yeniden adlandırma çarpışması): %s -> %s yeniden adlandırmasının "
+"içerik çakışmaları var ve başka bir yolla çarpışıyor; bu iç içe geçmiş "
+"çakışmaimleyicilerine neden olabilir."
+
+#: merge-ort.c:2066 merge-ort.c:2090
+#, c-format
+msgid "CONFLICT (rename/delete): %s renamed to %s in %s, but deleted in %s."
+msgstr ""
+"ÇAKIŞMA (yeniden adlandır/sil): %s->%s olarak adlandırıldı (%s içinde); "
+"ancak %s içinde silindi."
+
+#: merge-ort.c:2735
+#, c-format
+msgid ""
+"CONFLICT (file/directory): directory in the way of %s from %s; moving it to "
+"%s instead."
+msgstr ""
+"ÇAKIŞMA (dosya/dizin): Dizin, şuradan %s yolunda: %s; bunun yerine %s "
+"konumuna taşınıyor."
+
+#: merge-ort.c:2808
+#, c-format
+msgid ""
+"CONFLICT (distinct types): %s had different types on each side; renamed %s "
+"of them so each can be recorded somewhere."
+msgstr ""
+"ÇAKIŞMA (belirgin türler): %s ögesinin her bir yanında değişik türler vardı; "
+"bunlardan %s tanesi yeniden adlandırıldı; böylelikle başka bir yerde "
+"kayıtları yazılabilir."
+
+#: merge-ort.c:2812
+msgid "both"
+msgstr "her ikisi de"
+
+#: merge-ort.c:2812
+msgid "one"
+msgstr "bir"
+
+#: merge-ort.c:2907 merge-recursive.c:3052
+msgid "content"
+msgstr "içerik"
+
+#: merge-ort.c:2909 merge-recursive.c:3056
+msgid "add/add"
+msgstr "ekle/ekle"
+
+#: merge-ort.c:2911 merge-recursive.c:3101
+msgid "submodule"
+msgstr "altmodül"
+
+#: merge-ort.c:2913 merge-recursive.c:3102
+#, c-format
+msgid "CONFLICT (%s): Merge conflict in %s"
+msgstr "ÇAKIŞMA (%s): %s içinde birleştirme çakışması"
+
+#: merge-ort.c:2938
+#, c-format
+msgid ""
+"CONFLICT (modify/delete): %s deleted in %s and modified in %s.  Version %s "
+"of %s left in tree."
+msgstr ""
+"ÇAKIŞMA (değiştir/sil): %s silindi (%s içinde) ve %s içinde değiştirildi. %s "
+"sürümü (şunun: %s) ağaçta bırakıldı."
+
+#. TRANSLATORS: The %s arguments are: 1) tree hash of a merge
+#. base, and 2-3) the trees for the two trees we're merging.
+#.
+#: merge-ort.c:3406
+#, c-format
+msgid "collecting merge info failed for trees %s, %s, %s"
+msgstr "şu ağaçlar için birleştirme bilgisi toplama başarısız: %s, %s, %s"
+
+#: merge-ort-wrappers.c:13 merge-recursive.c:3661
+#, c-format
+msgid ""
+"Your local changes to the following files would be overwritten by merge:\n"
+"  %s"
+msgstr ""
+"Birleştirme ile aşağıdaki dosyalardaki yerel değişikliklerin üzerine "
+"yazılacak:\n"
+"\t%s"
+
+#: merge-ort-wrappers.c:33 merge-recursive.c:3436
+#, c-format
+msgid "Already up to date!"
+msgstr "Tümü güncel!"
+
+#: merge-recursive.c:356
+msgid "(bad commit)\n"
+msgstr "(hatalı işleme)\n"
+
+#: merge-recursive.c:379
+#, c-format
+msgid "add_cacheinfo failed for path '%s'; merge aborting."
+msgstr ""
+"add_cacheinfo '%s' yolu için başarısız oldu; birleştirme iptal ediliyor."
+
+#: merge-recursive.c:388
+#, c-format
+msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
+msgstr "add_cacheinfo '%s' yolu için yenilenemedi; birleştirme iptal ediliyor."
+
+#: merge-recursive.c:874
+#, c-format
+msgid "failed to create path '%s'%s"
+msgstr "'%s'%s yolu oluşturulamadı"
+
+#: merge-recursive.c:885
+#, c-format
+msgid "Removing %s to make room for subdirectory\n"
+msgstr "Altdizine yer açmak için %s kaldırılıyor\n"
+
+#: merge-recursive.c:899 merge-recursive.c:918
+msgid ": perhaps a D/F conflict?"
+msgstr ": bir D/F çakışması olabilir mi?"
+
+#: merge-recursive.c:908
+#, c-format
+msgid "refusing to lose untracked file at '%s'"
+msgstr "'%s' konumundaki izlenmeyen dosyayı kaybetme reddediliyor"
+
+#: merge-recursive.c:949 builtin/cat-file.c:41
+#, c-format
+msgid "cannot read object %s '%s'"
+msgstr "%s '%s' nesnesi okunamıyor"
+
+#: merge-recursive.c:954
+#, c-format
+msgid "blob expected for %s '%s'"
+msgstr "%s '%s' için ikili nesne bekleniyordu"
+
+#: merge-recursive.c:979
+#, c-format
+msgid "failed to open '%s': %s"
+msgstr "'%s' açılamadı: %s"
+
+#: merge-recursive.c:990
+#, c-format
+msgid "failed to symlink '%s': %s"
+msgstr "'%s' için sembolik bağ oluşturulamadı: %s"
+
+#: merge-recursive.c:995
+#, c-format
+msgid "do not know what to do with %06o %s '%s'"
+msgstr "şununla ne yapılacağı bilinmiyor: %06o %s '%s'"
+
+#: merge-recursive.c:1213 merge-recursive.c:1225
+#, c-format
+msgid "Fast-forwarding submodule %s to the following commit:"
+msgstr "%s altmodülü şu işlemeye ileri sarılıyor:"
+
+#: merge-recursive.c:1216 merge-recursive.c:1228
+#, c-format
+msgid "Fast-forwarding submodule %s"
+msgstr "%s altmodülü ileri sarılıyor"
+
+#: merge-recursive.c:1251
+#, c-format
+msgid "Failed to merge submodule %s (merge following commits not found)"
+msgstr ""
+"%s altmodülü birleştirilemedi (işlemeleri takip eden birleştirme bulunamadı)"
+
+#: merge-recursive.c:1255
+#, c-format
+msgid "Failed to merge submodule %s (not fast-forward)"
+msgstr "%s altmodülü birleştirilemedi (ileri sarım değil)"
+
+#: merge-recursive.c:1256
+msgid "Found a possible merge resolution for the submodule:\n"
+msgstr "Şu altmodül için olası bir birleştirme çözümü bulundu:\n"
+
+#: merge-recursive.c:1268
+#, c-format
+msgid "Failed to merge submodule %s (multiple merges found)"
+msgstr "%s altmodülü birleştirilemedi (birden çok birleştirme bulundu)"
+
+#: merge-recursive.c:1402
+#, c-format
+msgid "Error: Refusing to lose untracked file at %s; writing to %s instead."
+msgstr ""
+"Hata: %s konumundaki izlenmeyen dosyayı kaybetme reddediliyor, bunun yerine "
+"%s konumuna yazılacak."
+
+#: merge-recursive.c:1474
+#, c-format
+msgid ""
+"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
+"in tree."
+msgstr ""
+"ÇAKIŞMA (%s/silme): %s silindi (%s içinde) ve %s (%s içinde). %s (%s) sürümü "
+"ağaçta bırakıldı."
+
+#: merge-recursive.c:1479
+#, c-format
+msgid ""
+"CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
+"left in tree."
+msgstr ""
+"ÇAKIŞMA (%s/silme): %s silindi (%s içinde) ve %s şuraya: %s (%s içinde). %s "
+"(%s) sürümü ağaçta bırakıldı."
+
+#: merge-recursive.c:1486
+#, c-format
+msgid ""
+"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
+"in tree at %s."
+msgstr ""
+"ÇAKIŞMA (%s/silme): %s silindi (%s içinde) ve %s (%s içinde). %s (%s) sürümü "
+"ağaçta %s konumunda bırakıldı."
+
+#: merge-recursive.c:1491
+#, 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 ""
+"ÇAKIŞMA (%s/silme): %s silindi (%s içinde) ve %s şuraya: %s (%s içinde). %s "
+"(%s) sürümü ağaçta %s konumunda bırakıldı."
+
+#: merge-recursive.c:1526
+msgid "rename"
+msgstr "yeniden adlandır"
 
 #: merge-recursive.c:1526
 msgid "renamed"
@@ -4829,26 +5114,6 @@ msgstr ""
 "yerleştirileceği belirsiz; çünkü %s dizini birden çok başka dizine yeniden "
 "adlandırılırken hiçbir hedef dosyaların büyük çoğunluğunu almadı."
 
-#: merge-recursive.c:2100
-#, c-format
-msgid ""
-"CONFLICT (implicit dir rename): Existing file/dir at %s in the way of "
-"implicit directory rename(s) putting the following path(s) there: %s."
-msgstr ""
-"ÇAKIŞMA (örtülü dizin yeniden adlandırma): %s konumundaki mevcut dosya/dizin "
-"örtülü yeniden adlandırmanın aşağıdaki yolları oraya koymasına engel oluyor: "
-"%s."
-
-#: merge-recursive.c:2110
-#, c-format
-msgid ""
-"CONFLICT (implicit dir rename): Cannot map more than one path to %s; "
-"implicit directory renames tried to put these paths there: %s"
-msgstr ""
-"ÇAKIŞMA (örtülü dizin yeniden adlandırma): %s için birden çok yol "
-"eşlemlenemiyor; örtülü dizin yeniden adlandırmaları aşağıdaki yolları oraya "
-"koymayı denedi: %s."
-
 #: merge-recursive.c:2202
 #, c-format
 msgid ""
@@ -4858,15 +5123,6 @@ msgstr ""
 "ÇAKIŞMA (y. adlandır/y. adlandır): Dizini %s->%s olarak adlandır (%s "
 "içinde). Dizini %s->%s olarak adlandır (%s içinde)."
 
-#: merge-recursive.c:2447
-#, c-format
-msgid ""
-"WARNING: Avoiding applying %s -> %s rename to %s, because %s itself was "
-"renamed."
-msgstr ""
-"UYARI: %s -> %s yeniden adlandırmasını %s ögesine uygulamadan kaçınılıyor, "
-"çünkü %s ögesinin kendisi yeniden adlandırıldı."
-
 #: merge-recursive.c:2973
 #, c-format
 msgid "cannot read object %s"
@@ -4885,70 +5141,17 @@ msgstr "değiştir"
 msgid "modified"
 msgstr "değiştirilmiş"
 
-#: merge-recursive.c:3052
-msgid "content"
-msgstr "içerik"
-
-#: merge-recursive.c:3056
-msgid "add/add"
-msgstr "ekle/ekle"
-
 #: merge-recursive.c:3079
 #, c-format
 msgid "Skipped %s (merged same as existing)"
 msgstr "%s atlandı (mevcut ile aynı biçimde birleştirildi)"
 
-#: merge-recursive.c:3101
-msgid "submodule"
-msgstr "altmodül"
-
-#: merge-recursive.c:3102
-#, c-format
-msgid "CONFLICT (%s): Merge conflict in %s"
-msgstr "ÇAKIŞMA (%s): %s içinde birleştirme çakışması"
-
 #: merge-recursive.c:3132
 #, c-format
 msgid "Adding as %s instead"
 msgstr "Bunun yerine %s olarak ekleniyor"
 
-#: merge-recursive.c:3215
-#, c-format
-msgid ""
-"Path updated: %s added in %s inside a directory that was renamed in %s; "
-"moving it to %s."
-msgstr ""
-"Yol güncellendi: %s, (%s içinde eklenen) %s içinde yeniden adlandırılan bir "
-"dizinde; onu %s konumuna taşıdı."
-
-#: merge-recursive.c:3218
-#, c-format
-msgid ""
-"CONFLICT (file location): %s added in %s inside a directory that was renamed "
-"in %s, suggesting it should perhaps be moved to %s."
-msgstr ""
-"ÇAKIŞMA (dosya konumu): %s, (%s içinde eklenen) %s içinde yeniden "
-"adlandırılan bir dizinde, belki de %s konumuna taşınmalı."
-
-#: merge-recursive.c:3222
-#, c-format
-msgid ""
-"Path updated: %s renamed to %s in %s, inside a directory that was renamed in "
-"%s; moving it to %s."
-msgstr ""
-"Yol güncellendi: %s, %s olarak yeniden adlandırıldı (%s içinde), %s içinde "
-"yeniden adlandırılan bir dizinde; onu %s konumuna taşıdı."
-
-#: merge-recursive.c:3225
-#, c-format
-msgid ""
-"CONFLICT (file location): %s renamed to %s in %s, inside a directory that "
-"was renamed in %s, suggesting it should perhaps be moved to %s."
-msgstr ""
-"ÇAKIŞMA (dosya konumu): %s, %s olarak yeniden adlandırıldı (%s içinde), %s "
-"içinde yeniden adlandırılan bir dizinde, belki de %s konumuna taşınmalı."
-
-#: merge-recursive.c:3339
+#: merge-recursive.c:3339
 #, c-format
 msgid "Removing %s"
 msgstr "%s kaldırılıyor"
@@ -4982,27 +5185,28 @@ msgstr "ÇAKIŞMA (ekle/ekle): %s içinde birleştirme çakışması"
 msgid "merging of trees %s and %s failed"
 msgstr "%s ve %s ağaçlarının birleştirilmesi başarısız"
 
-#: merge-recursive.c:3550
+#: merge-recursive.c:3539
 msgid "Merging:"
 msgstr "Birleştiriliyor:"
 
-#: merge-recursive.c:3563
+#: merge-recursive.c:3552
 #, c-format
 msgid "found %u common ancestor:"
 msgid_plural "found %u common ancestors:"
 msgstr[0] "%u ortak ata bulundu:"
 msgstr[1] "%u ortak ata bulundu:"
 
-#: merge-recursive.c:3613
+#: merge-recursive.c:3602
 msgid "merge returned no commit"
 msgstr "birleştirme herhangi bir işleme döndürmedi"
 
-#: merge-recursive.c:3769
+#: merge-recursive.c:3758
 #, c-format
 msgid "Could not parse object '%s'"
 msgstr "'%s' nesnesi ayrıştırılamadı"
 
-#: merge-recursive.c:3787 builtin/merge.c:711 builtin/merge.c:895
+#: merge-recursive.c:3776 builtin/merge.c:712 builtin/merge.c:896
+#: builtin/stash.c:471
 msgid "Unable to write index."
 msgstr "İndeks yazılamıyor."
 
@@ -5010,186 +5214,176 @@ msgstr "İndeks yazılamıyor."
 msgid "failed to read the cache"
 msgstr "önbellek okunamadı"
 
-#: merge.c:109 rerere.c:720 builtin/am.c:1883 builtin/am.c:1917
-#: builtin/checkout.c:573 builtin/checkout.c:829 builtin/clone.c:817
+#: merge.c:109 rerere.c:704 builtin/am.c:1883 builtin/am.c:1917
+#: builtin/checkout.c:575 builtin/checkout.c:828 builtin/clone.c:817
 #: builtin/stash.c:265
 msgid "unable to write new index file"
 msgstr "yeni indeks dosyası yazılamıyor"
 
-#: midx.c:80
+#: midx.c:62
+msgid "multi-pack-index OID fanout is of the wrong size"
+msgstr "multi-pack-index OID ikiye bölümünün boyutu hatalı"
+
+#: midx.c:93
 #, c-format
 msgid "multi-pack-index file %s is too small"
 msgstr "multi-pack-index dosyası %s pek küçük"
 
-#: midx.c:96
+#: midx.c:109
 #, c-format
 msgid "multi-pack-index signature 0x%08x does not match signature 0x%08x"
 msgstr "multi-pack-index imzası 0x%08x, 0x%08x imzası ile eşleşmiyor"
 
-#: midx.c:101
+#: midx.c:114
 #, c-format
 msgid "multi-pack-index version %d not recognized"
 msgstr "multi-pack-index sürümü %d tanımlanamıyor"
 
-#: midx.c:106
+#: midx.c:119
 #, c-format
 msgid "multi-pack-index hash version %u does not match version %u"
 msgstr "multi-pack-index sağlama sürümü %u, %u sürümü ile eşleşmiyor"
 
-#: midx.c:123
-msgid "invalid chunk offset (too large)"
-msgstr "geçersiz iri parça ofseti (çok geniş)"
-
-#: midx.c:147
-msgid "terminating multi-pack-index chunk id appears earlier than expected"
-msgstr ""
-"multi-pack-index iri parçası sonlandırılıyor, numarası beklenenden önce "
-"görünüyor"
-
-#: midx.c:160
+#: midx.c:136
 msgid "multi-pack-index missing required pack-name chunk"
 msgstr "multi-pack-index'ten gerekli pack-name iri parçası eksik"
 
-#: midx.c:162
+#: midx.c:138
 msgid "multi-pack-index missing required OID fanout chunk"
 msgstr "multi-pack-index'ten gerekli OID fanout iri parçası eksik"
 
-#: midx.c:164
+#: midx.c:140
 msgid "multi-pack-index missing required OID lookup chunk"
 msgstr "multi-pack-index'ten gerekli OID arama iri parçası eksik"
 
-#: midx.c:166
+#: midx.c:142
 msgid "multi-pack-index missing required object offsets chunk"
 msgstr "multi-pack-index'ten gerekli nesne ofsetleri iri parçası eksik"
 
-#: midx.c:180
+#: midx.c:158
 #, c-format
 msgid "multi-pack-index pack names out of order: '%s' before '%s'"
 msgstr "multi-pack-index paket adlarının sırasız: '%s' şundan önce: '%s'"
 
-#: midx.c:223
+#: midx.c:202
 #, c-format
 msgid "bad pack-int-id: %u (%u total packs)"
 msgstr "hatalı pack-int-id: %u (%u toplam paket)"
 
-#: midx.c:273
+#: midx.c:252
 msgid "multi-pack-index stores a 64-bit offset, but off_t is too small"
 msgstr "multi-pack-index bir 64 bit ofset depoluyor; ancak off_t pek küçük"
 
-#: midx.c:480
+#: midx.c:467
 #, c-format
 msgid "failed to add packfile '%s'"
 msgstr "paket dosyası '%s' eklenemedi"
 
-#: midx.c:486
+#: midx.c:473
 #, c-format
 msgid "failed to open pack-index '%s'"
 msgstr "pack-index '%s' açılamadı"
 
-#: midx.c:546
+#: midx.c:533
 #, c-format
 msgid "failed to locate object %d in packfile"
 msgstr "%d nesnesi paket dosyasında bulunamadı"
 
-#: midx.c:846
+#: midx.c:821
 msgid "Adding packfiles to multi-pack-index"
 msgstr "Paket dosyaları multi-pack-index'e ekleniyor"
 
-#: midx.c:879
+#: midx.c:855
 #, c-format
 msgid "did not see pack-file %s to drop"
 msgstr "bırakılacak pack-file %s görülmedi"
 
-#: midx.c:931
+#: midx.c:904
 msgid "no pack files to index."
 msgstr "indekslenecek paket dosyası yok."
 
-#: midx.c:982
-msgid "Writing chunks to multi-pack-index"
-msgstr "İri parçalar multi-pack-index'e yazılıyor"
-
-#: midx.c:1060
+#: midx.c:965
 #, c-format
 msgid "failed to clear multi-pack-index at %s"
 msgstr "multi-pack-index %s konumunda temizlenemedi"
 
-#: midx.c:1116
+#: midx.c:1021
 msgid "multi-pack-index file exists, but failed to parse"
 msgstr "multi-pack-index dosyası mevcut, ancak ayrıştırılamadı"
 
-#: midx.c:1124
+#: midx.c:1029
 msgid "Looking for referenced packfiles"
 msgstr "Başvurulmuş paket dosyaları aranıyor"
 
-#: midx.c:1139
+#: midx.c:1044
 #, c-format
 msgid ""
 "oid fanout out of order: fanout[%d] = %<PRIx32> > %<PRIx32> = fanout[%d]"
 msgstr "oid fanout sırasız: fanout[%d] = %<PRIx32> > %<PRIx32> = fanout[%d]"
 
-#: midx.c:1144
+#: midx.c:1049
 msgid "the midx contains no oid"
 msgstr "midx bir oid içermiyor"
 
-#: midx.c:1153
+#: midx.c:1058
 msgid "Verifying OID order in multi-pack-index"
 msgstr "multi-pack-index içindeki OID sırası doğrulanıyor"
 
-#: midx.c:1162
+#: midx.c:1067
 #, c-format
 msgid "oid lookup out of order: oid[%d] = %s >= %s = oid[%d]"
 msgstr "oid araması sırasız: oid[%d] = %s >= %s = oid[%d]"
 
-#: midx.c:1182
+#: midx.c:1087
 msgid "Sorting objects by packfile"
 msgstr "Nesneler paket dosyasına göre sıralanıyor"
 
-#: midx.c:1189
+#: midx.c:1094
 msgid "Verifying object offsets"
 msgstr "Nesne ofsetleri doğrulanıyor"
 
-#: midx.c:1205
+#: midx.c:1110
 #, c-format
 msgid "failed to load pack entry for oid[%d] = %s"
 msgstr "şunun için paket girdisi yüklenemedi: oid[%d] = %s"
 
-#: midx.c:1211
+#: midx.c:1116
 #, c-format
 msgid "failed to load pack-index for packfile %s"
 msgstr "paket dosyası %s için pack-index yüklenemedi"
 
-#: midx.c:1220
+#: midx.c:1125
 #, c-format
 msgid "incorrect object offset for oid[%d] = %s: %<PRIx64> != %<PRIx64>"
 msgstr "şunun için yanlış nesne ofseti: oid[%d] = %s: %<PRIx64> != %<PRIx64>"
 
-#: midx.c:1245
+#: midx.c:1150
 msgid "Counting referenced objects"
 msgstr "Başvurulmuş nesneler sayılıyor"
 
-#: midx.c:1255
+#: midx.c:1160
 msgid "Finding and deleting unreferenced packfiles"
 msgstr "Başvurulmamış paket dosyaları bulunuyor ve siliniyor"
 
-#: midx.c:1446
+#: midx.c:1351
 msgid "could not start pack-objects"
 msgstr "pack-objects başlatılamadı"
 
-#: midx.c:1466
+#: midx.c:1371
 msgid "could not finish pack-objects"
 msgstr "pack-objects bitirilemedi"
 
-#: name-hash.c:537
+#: name-hash.c:538
 #, c-format
 msgid "unable to create lazy_dir thread: %s"
 msgstr "lazy_dir iş parçacığı oluşturulamıyor: %s"
 
-#: name-hash.c:559
+#: name-hash.c:560
 #, c-format
 msgid "unable to create lazy_name thread: %s"
 msgstr "lazy_name oluşturulamıyor: %s"
 
-#: name-hash.c:565
+#: name-hash.c:566
 #, c-format
 msgid "unable to join lazy_name thread: %s"
 msgstr "lazy_name iş parçacığı ucu birleştirilemiyor: %s"
@@ -5234,2961 +5428,3024 @@ msgstr "%s içindeki notları yeniden yazma reddediliyor (refs/notes/ dışında
 msgid "Bad %s value: '%s'"
 msgstr "Hatalı %s değeri: '%s'"
 
-#: object.c:53
+#: object-file.c:480
 #, c-format
-msgid "invalid object type \"%s\""
-msgstr "geçersiz nesne türü \"%s\""
+msgid "object directory %s does not exist; check .git/objects/info/alternates"
+msgstr "nesne dizini %s yok; şurayı denetleyin: .git/objects/info/alternates"
 
-#: object.c:173
+#: object-file.c:531
 #, c-format
-msgid "object %s is a %s, not a %s"
-msgstr "%s nesnesi bir %s, %s değil"
+msgid "unable to normalize alternate object path: %s"
+msgstr "alternatif nesne yolu olağanlaştırılamıyor: %s"
 
-#: object.c:233
+#: object-file.c:603
 #, c-format
-msgid "object %s has unknown type id %d"
-msgstr "%s nesnesi %d bilinmeyen tür numarasına iye"
+msgid "%s: ignoring alternate object stores, nesting too deep"
+msgstr "%s: alternatif nesne depoları yok sayılıyor, iç içe geçme pek derin"
 
-#: object.c:246
+#: object-file.c:610
 #, c-format
-msgid "unable to parse object: %s"
-msgstr "nesne ayrıştırılamıyor: %s"
+msgid "unable to normalize object directory: %s"
+msgstr "nesne dizini olağanlaştırılamıyor: %s"
 
-#: object.c:266 object.c:278
-#, c-format
-msgid "hash mismatch %s"
-msgstr "sağlama uyuşmazlığı %s"
+#: object-file.c:653
+msgid "unable to fdopen alternates lockfile"
+msgstr "alternatifler kilit dosyası fdopen yapılamıyor"
 
-#: pack-bitmap.c:815 pack-bitmap.c:821 builtin/pack-objects.c:2216
-#, c-format
-msgid "unable to get size of %s"
-msgstr "%s boyutu alınamıyor"
+#: object-file.c:671
+msgid "unable to read alternates file"
+msgstr "alternatifler dosyası okunamıyor"
 
-#: packfile.c:615
-msgid "offset before end of packfile (broken .idx?)"
-msgstr "ofset paket dosyasının sonundan önce (bozuk .idx?)"
+#: object-file.c:678
+msgid "unable to move new alternates file into place"
+msgstr "yeni alternatifler dosyası yerine taşınamıyor"
 
-#: packfile.c:1907
+#: object-file.c:713
 #, c-format
-msgid "offset before start of pack index for %s (corrupt index?)"
-msgstr "ofset %s için paket indeksinin başlangıcından önce (hasarlı indeks?)"
+msgid "path '%s' does not exist"
+msgstr "'%s' diye bir yol yok"
 
-#: packfile.c:1911
+#: object-file.c:734
 #, c-format
-msgid "offset beyond end of pack index for %s (truncated index?)"
-msgstr "ofset %s için paket indeksinin sonundan ötede (kırpılmış index?)"
+msgid "reference repository '%s' as a linked checkout is not supported yet."
+msgstr ""
+"Bağlantı yapılmış çıkış olarak '%s' başvuru deposu henüz desteklenmiyor."
 
-#: parse-options-cb.c:20 parse-options-cb.c:24
+#: object-file.c:740
 #, c-format
-msgid "option `%s' expects a numerical value"
-msgstr "'%s' seçeneği sayısal bir değer bekliyor"
+msgid "reference repository '%s' is not a local repository."
+msgstr "Başvuru deposu '%s' yerel bir depo değil."
 
-#: parse-options-cb.c:41
+#: object-file.c:746
 #, c-format
-msgid "malformed expiration date '%s'"
-msgstr "hatalı oluşturulmuş son kullanım tarihi '%s'"
+msgid "reference repository '%s' is shallow"
+msgstr "başvuru deposu '%s' sığ"
 
-#: parse-options-cb.c:54
+#: object-file.c:754
 #, c-format
-msgid "option `%s' expects \"always\", \"auto\", or \"never\""
-msgstr "'%s' seçeneği \"always\", \"auto\" veya \"never\" bekliyor"
+msgid "reference repository '%s' is grafted"
+msgstr "başvuru deposu '%s' aşılı"
 
-#: parse-options-cb.c:132 parse-options-cb.c:149
+#: object-file.c:814
 #, c-format
-msgid "malformed object name '%s'"
-msgstr "hatalı oluşturulmuş nesne adı '%s'"
+msgid "invalid line while parsing alternate refs: %s"
+msgstr "alternatif başvurular ayrıştırılırken geçersiz satır: %s"
 
-#: parse-options.c:38
+#: object-file.c:964
 #, c-format
-msgid "%s requires a value"
-msgstr "%s bir değer gerektiriyor"
+msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
+msgstr "%<PRIuMAX>, %<PRIuMAX> sınırı üzerinden mmap yapılmaya çalışılıyor"
 
-#: parse-options.c:73
-#, c-format
-msgid "%s is incompatible with %s"
-msgstr "%s, %s ile uyumsuz"
+#: object-file.c:985
+msgid "mmap failed"
+msgstr "mmap başarısız"
 
-#: parse-options.c:78
+#: object-file.c:1149
 #, c-format
-msgid "%s : incompatible with something else"
-msgstr "%s: başka bir şeyle uyumsuz"
+msgid "object file %s is empty"
+msgstr "nesne dosyası %s boş"
 
-#: parse-options.c:92 parse-options.c:96 parse-options.c:317
+#: object-file.c:1284 object-file.c:2477
 #, c-format
-msgid "%s takes no value"
-msgstr "%s bir değer almıyor"
+msgid "corrupt loose object '%s'"
+msgstr "hasar görmüş gevşek nesne '%s'"
 
-#: parse-options.c:94
+#: object-file.c:1286 object-file.c:2481
 #, c-format
-msgid "%s isn't available"
-msgstr "%s kullanılabilir değil"
+msgid "garbage at end of loose object '%s'"
+msgstr "gevşek nesne '%s' sonunda anlamsız veri"
 
-#: parse-options.c:217
-#, c-format
-msgid "%s expects a non-negative integer value with an optional k/m/g suffix"
-msgstr "%s negatif olmayan bir tamsayı bekliyor, isteğe bağlı k/m/g eki ile"
+#: object-file.c:1328
+msgid "invalid object type"
+msgstr "geçersiz nesne türü"
 
-#: parse-options.c:386
+#: object-file.c:1412
 #, c-format
-msgid "ambiguous option: %s (could be --%s%s or --%s%s)"
-msgstr "belirsiz seçenek: %s (--%s%s veya --%s%s olabilir)"
+msgid "unable to unpack %s header with --allow-unknown-type"
+msgstr "%s üstbilgisi --allow-unknown-type ile açılamıyor"
 
-#: parse-options.c:420 parse-options.c:428
+#: object-file.c:1415
 #, c-format
-msgid "did you mean `--%s` (with two dashes)?"
-msgstr "şunu mu demek istediniz: '--%s' (iki tire ile)?"
+msgid "unable to unpack %s header"
+msgstr "%s üstbilgisi açılamıyor"
 
-#: parse-options.c:666 parse-options.c:971
+#: object-file.c:1421
 #, c-format
-msgid "alias of --%s"
-msgstr "şunun arması: --%s"
+msgid "unable to parse %s header with --allow-unknown-type"
+msgstr "%s üstbilgisi paketi --allow-unknown-type ile ayrıştırılamıyor"
 
-#: parse-options.c:862
+#: object-file.c:1424
 #, c-format
-msgid "unknown option `%s'"
-msgstr "bilinmeyen seçenek '%s'"
+msgid "unable to parse %s header"
+msgstr "%s üstbilgisi ayrıştırılamıyor"
 
-#: parse-options.c:864
+#: object-file.c:1651
 #, c-format
-msgid "unknown switch `%c'"
-msgstr "bilinmeyen anahtar '%c'"
+msgid "failed to read object %s"
+msgstr "%s nesnesi okunamadı"
 
-#: parse-options.c:866
+#: object-file.c:1655
 #, c-format
-msgid "unknown non-ascii option in string: `%s'"
-msgstr "dizi içinde bilinmeyen ascii dışı seçenek: '%s'"
-
-#: parse-options.c:890
-msgid "..."
-msgstr "..."
+msgid "replacement %s not found for %s"
+msgstr "%s yedeği %s için bulunamadı"
 
-#: parse-options.c:909
+#: object-file.c:1659
 #, c-format
-msgid "usage: %s"
-msgstr "kullanım: %s"
+msgid "loose object %s (stored in %s) is corrupt"
+msgstr "%s gevşek nesnesi (%s içinde depolanıyor) hasar görmüş"
 
-#. TRANSLATORS: the colon here should align with the
-#. one in "usage: %s" translation.
-#.
-#: parse-options.c:915
+#: object-file.c:1663
 #, c-format
-msgid "   or: %s"
-msgstr "    veya: %s"
+msgid "packed object %s (stored in %s) is corrupt"
+msgstr "paketlenmiş nesne %s (%s içinde depolanıyor) hasar görmüş"
 
-#: parse-options.c:918
+#: object-file.c:1768
 #, c-format
-msgid "    %s"
-msgstr "    %s"
-
-#: parse-options.c:957
-msgid "-NUM"
-msgstr "-SAYI"
+msgid "unable to write file %s"
+msgstr "%s dosyası yazılamıyor"
 
-#: path.c:915
+#: object-file.c:1775
 #, c-format
-msgid "Could not make %s writable by group"
-msgstr "%s grup ile yazılabilir yapılamadı"
-
-#: pathspec.c:130
-msgid "Escape character '\\' not allowed as last character in attr value"
-msgstr "Kaçış karakteri '\\' attr değerindeki son karakter olarak kullanılamaz"
+msgid "unable to set permission to '%s'"
+msgstr "'%s' ögesine izin ayarlanamıyor"
 
-#: pathspec.c:148
-msgid "Only one 'attr:' specification is allowed."
-msgstr "Yalnızca bir 'attr:' belirtimine izin verilir."
+#: object-file.c:1782
+msgid "file write error"
+msgstr "dosya yazım hatası"
 
-#: pathspec.c:151
-msgid "attr spec must not be empty"
-msgstr "attr belirteci boş olmamalı"
+#: object-file.c:1802
+msgid "error when closing loose object file"
+msgstr "gevşek nesne dosyası kapatılırken hata"
 
-#: pathspec.c:194
+#: object-file.c:1867
 #, c-format
-msgid "invalid attribute name %s"
-msgstr "geçersiz öznitelik adı %s"
-
-#: pathspec.c:259
-msgid "global 'glob' and 'noglob' pathspec settings are incompatible"
-msgstr "global 'glob' ve 'noglob' yol belirteci ayarları birbiriyle uyumsuz"
+msgid "insufficient permission for adding an object to repository database %s"
+msgstr "%s depo veritabanına nesne eklemek için yetersiz izin"
 
-#: pathspec.c:266
-msgid ""
-"global 'literal' pathspec setting is incompatible with all other global "
-"pathspec settings"
-msgstr ""
-"global 'literal' yol belirteci ayarı diğer tüm global yol belirteci "
-"ayarlarıyla uyumsuz"
+#: object-file.c:1869
+msgid "unable to create temporary file"
+msgstr "geçici dosya oluşturulamıyor"
 
-#: pathspec.c:306
-msgid "invalid parameter for pathspec magic 'prefix'"
-msgstr "yol belirteci sihri 'prefix' için geçersiz parametre"
+#: object-file.c:1893
+msgid "unable to write loose object file"
+msgstr "gevşek nesne dosyası yazılamıyor"
 
-#: pathspec.c:327
+#: object-file.c:1899
 #, c-format
-msgid "Invalid pathspec magic '%.*s' in '%s'"
-msgstr "Geçersiz yol belirteci sihri '%.*s' (%s içinde)"
+msgid "unable to deflate new object %s (%d)"
+msgstr "yeni nesne %s söndürülemiyor (%d)"
 
-#: pathspec.c:332
+#: object-file.c:1903
 #, c-format
-msgid "Missing ')' at the end of pathspec magic in '%s'"
-msgstr "'%s' içindeki yol belirteci sihrinin sonunda eksik ')'"
+msgid "deflateEnd on object %s failed (%d)"
+msgstr "%s nesnesi üzerinde deflateEnd başarısız oldu (%d)"
 
-#: pathspec.c:370
+#: object-file.c:1907
 #, c-format
-msgid "Unimplemented pathspec magic '%c' in '%s'"
-msgstr "Yerine getirilmemiş yol belirteci sihri '%c' ('%s' içinde)"
+msgid "confused by unstable object source data for %s"
+msgstr "%s için olan nesne kaynak verisinden dolayı kafa karışıklığı"
 
-#: pathspec.c:429
+#: object-file.c:1917 builtin/pack-objects.c:1097
 #, c-format
-msgid "%s: 'literal' and 'glob' are incompatible"
-msgstr "%s: 'literal' ve 'glob' birbiriyle uyumsuz"
+msgid "failed utime() on %s"
+msgstr "%s üzerinde utime() başarısız"
 
-#: pathspec.c:445
+#: object-file.c:1994
 #, c-format
-msgid "%s: '%s' is outside repository at '%s'"
-msgstr "%s: '%s', '%s' konumunda depo dışında"
+msgid "cannot read object for %s"
+msgstr "%s için nesne okunamıyor"
 
-#: pathspec.c:521
-#, c-format
-msgid "'%s' (mnemonic: '%c')"
-msgstr "'%s' (belleten: '%c')"
+#: object-file.c:2045
+msgid "corrupt commit"
+msgstr "hasar görmüş işleme"
 
-#: pathspec.c:531
-#, c-format
-msgid "%s: pathspec magic not supported by this command: %s"
-msgstr "%s: yol belirteci sihri bu komut tarafından desteklenmiyor: %s"
+#: object-file.c:2053
+msgid "corrupt tag"
+msgstr "hasar görmüş etiket"
 
-#: pathspec.c:598
+#: object-file.c:2153
 #, c-format
-msgid "pathspec '%s' is beyond a symbolic link"
-msgstr "yol belirteci '%s' bir sembolik bağın ötesinde"
+msgid "read error while indexing %s"
+msgstr "%s indekslenirken okuma hatası"
 
-#: pathspec.c:643
+#: object-file.c:2156
 #, c-format
-msgid "line is badly quoted: %s"
-msgstr "satırda hatalı tırnaklar: %s"
-
-#: pkt-line.c:92
-msgid "unable to write flush packet"
-msgstr "floş paketi yazılamıyor"
-
-#: pkt-line.c:99
-msgid "unable to write delim packet"
-msgstr "sınırlandıran paket yazılamıyor"
-
-#: pkt-line.c:106
-msgid "unable to write stateless separator packet"
-msgstr "durumsuz ayırıcı paketi yazılamıyor"
-
-#: pkt-line.c:113
-msgid "flush packet write failed"
-msgstr "floş paketi yazımı başarısız"
-
-#: pkt-line.c:153 pkt-line.c:239
-msgid "protocol error: impossibly long line"
-msgstr "protokol hatası: olanaksız uzun satır"
-
-#: pkt-line.c:169 pkt-line.c:171
-msgid "packet write with format failed"
-msgstr "biçimlendirilmiş paket yazımı başarısız"
+msgid "short read while indexing %s"
+msgstr "%s indekslenirken kısa read"
 
-#: pkt-line.c:203
-msgid "packet write failed - data exceeds max packet size"
-msgstr "paket yazımı başarısız - veri olabilecek en çok paket boyutunu aşıyor"
+#: object-file.c:2229 object-file.c:2239
+#, c-format
+msgid "%s: failed to insert into database"
+msgstr "%s: veritabanına ekleme başarısız"
 
-#: pkt-line.c:210 pkt-line.c:217
-msgid "packet write failed"
-msgstr "paket yazımı başarısız"
+#: object-file.c:2245
+#, c-format
+msgid "%s: unsupported file type"
+msgstr "%s: desteklenmeyen dosya türü"
 
-#: pkt-line.c:302
-msgid "read error"
-msgstr "okuma hatası"
+#: object-file.c:2269
+#, c-format
+msgid "%s is not a valid object"
+msgstr "%s geçerli bir nesne değil"
 
-#: pkt-line.c:310
-msgid "the remote end hung up unexpectedly"
-msgstr "uzak konum beklenmedik bir biçimde hattı kapattı"
+#: object-file.c:2271
+#, c-format
+msgid "%s is not a valid '%s' object"
+msgstr "%s geçerli bir '%s' nesnesi değil"
 
-#: pkt-line.c:338
+#: object-file.c:2298 builtin/index-pack.c:192
 #, c-format
-msgid "protocol error: bad line length character: %.4s"
-msgstr "protokol hatası: hatalı satır uzunluğu karakteri: %.4s"
+msgid "unable to open %s"
+msgstr "%s açılamıyor"
 
-#: pkt-line.c:352 pkt-line.c:357
+#: object-file.c:2488 object-file.c:2541
 #, c-format
-msgid "protocol error: bad line length %d"
-msgstr "protokol hatası: hatalı satır uzunluğu %d"
+msgid "hash mismatch for %s (expected %s)"
+msgstr "%s için sağlama uyuşmazlığı (%s bekleniyordu)"
 
-#: pkt-line.c:373 sideband.c:165
+#: object-file.c:2512
 #, c-format
-msgid "remote error: %s"
-msgstr "uzak konum hatası: %s"
+msgid "unable to mmap %s"
+msgstr "%s mmap yapılamadı"
 
-#: preload-index.c:119
-msgid "Refreshing index"
-msgstr "İndeks yenileniyor"
+#: object-file.c:2517
+#, c-format
+msgid "unable to unpack header of %s"
+msgstr "%s üstbilgisi açılamıyor"
 
-#: preload-index.c:138
+#: object-file.c:2523
 #, c-format
-msgid "unable to create threaded lstat: %s"
-msgstr "iş parçacıklarına ayrılmış 'lstat' oluşturulamıyor: %s"
+msgid "unable to parse header of %s"
+msgstr "%s üstbilgisi ayrıştırılamıyor"
 
-#: pretty.c:983
-msgid "unable to parse --pretty format"
-msgstr "--pretty biçimi ayrıştırılamıyor"
+#: object-file.c:2534
+#, c-format
+msgid "unable to unpack contents of %s"
+msgstr "%s içeriği açılamıyor"
 
-#: promisor-remote.c:30
-msgid "promisor-remote: unable to fork off fetch subprocess"
-msgstr "promisor-remote: getirme altişlemi çatallanamıyor"
+#: object-name.c:486
+#, c-format
+msgid "short object ID %s is ambiguous"
+msgstr "kısa nesne ID'si %s belirsiz"
 
-#: promisor-remote.c:35 promisor-remote.c:37
-msgid "promisor-remote: could not write to fetch subprocess"
-msgstr "promisor-remote: getirme altişlemine yazılamıyor"
+#: object-name.c:497
+msgid "The candidates are:"
+msgstr "Adaylar:"
 
-#: promisor-remote.c:41
-msgid "promisor-remote: could not close stdin to fetch subprocess"
-msgstr "promisor-remote: altişlemi getirmek için stdin kapatılamıyor"
+#: object-name.c:796
+msgid ""
+"Git normally never creates a ref that ends with 40 hex characters\n"
+"because it will be ignored when you just specify 40-hex. These refs\n"
+"may be created by mistake. For example,\n"
+"\n"
+"  git switch -c $br $(git rev-parse ...)\n"
+"\n"
+"where \"$br\" is somehow empty and a 40-hex ref is created. Please\n"
+"examine these refs and maybe delete them. Turn this message off by\n"
+"running \"git config advice.objectNameWarning false\""
+msgstr ""
+"Git normalde hiçbir zaman 40 onaltılı karakterlerle biten bir başvuru\n"
+"oluşturmaz; çünkü 40 onaltılı bir başvuru, onu belirlediğiniz zaman yok\n"
+"sayılacaktır. Bu başvurular yanlışlıkla oluşturulmuş olabilir. Örneğin:\n"
+"\n"
+"\tgit switch -c $br $(git rev-parse ...)\n"
+"\n"
+"komutunda \"$br\" bir şekilde boş kalmış ve 40 onaltılı bir başvuru\n"
+"oluşturulmuş. Lütfen bu başvuruları inceleyin ve gerekirse silin. Bu "
+"iletiyi\n"
+"kapatmak için \"git config advice.objectNameWarning\" yapın."
 
-#: promisor-remote.c:53
+#: object-name.c:916
 #, c-format
-msgid "promisor remote name cannot begin with '/': %s"
-msgstr "vaatçi uzak konum adı '/' ile başlayamaz: %s"
+msgid "log for '%.*s' only goes back to %s"
+msgstr "'%.*s' günlüğü yalnızca şuna geri gider: %s"
 
-#: prune-packed.c:35
-msgid "Removing duplicate objects"
-msgstr "Yinelenmiş nesneler kaldırılıyor"
+#: object-name.c:924
+#, c-format
+msgid "log for '%.*s' only has %d entries"
+msgstr "'%.*s' günlüğünde yalnızca %d girdi var"
 
-#: range-diff.c:77
-msgid "could not start `log`"
-msgstr "'log' başlatılamadı"
+#: object-name.c:1702
+#, c-format
+msgid "path '%s' exists on disk, but not in '%.*s'"
+msgstr "'%s' yolu disk üzerinde mevcut; ancak '%.*s' içinde değil"
 
-#: range-diff.c:79
-msgid "could not read `log` output"
-msgstr "'log' çıktısı okunamadı"
+#: object-name.c:1708
+#, c-format
+msgid ""
+"path '%s' exists, but not '%s'\n"
+"hint: Did you mean '%.*s:%s' aka '%.*s:./%s'?"
+msgstr ""
+"'%s' yolu mevcut; ancak '%s' değil\n"
+"İpucu: Şunu mu demek istediniz: '%.*s:%s', nam-ı diğer '%.*s:./%s'?"
 
-#: range-diff.c:98 sequencer.c:5310
+#: object-name.c:1717
 #, c-format
-msgid "could not parse commit '%s'"
-msgstr "'%s' işlemesi ayrıştırılamadı"
+msgid "path '%s' does not exist in '%.*s'"
+msgstr "'%s' yolu '%.*s' içinde mevcut değil"
 
-#: range-diff.c:112
+#: object-name.c:1745
 #, c-format
 msgid ""
-"could not parse first line of `log` output: did not start with 'commit ': "
-"'%s'"
+"path '%s' is in the index, but not at stage %d\n"
+"hint: Did you mean ':%d:%s'?"
 msgstr ""
-"'log' çıktısının ilk satırı ayrıştırılamadı: 'commit ' ile başlamıyor: '%s'"
+"'%s' yolu indekste; ancak %d numaralı alanda değil\n"
+"İpucu: Şunu mu demek istediniz: ':%d:%s'?"
 
-#: range-diff.c:137
+#: object-name.c:1761
 #, c-format
-msgid "could not parse git header '%.*s'"
-msgstr "git üstbilgisi '%.*s' ayrıştırılamadı"
+msgid ""
+"path '%s' is in the index, but not '%s'\n"
+"hint: Did you mean ':%d:%s' aka ':%d:./%s'?"
+msgstr ""
+"'%s' yolu indekste; ancak '%s' değil\n"
+"İpucu: Şunu mu demek istediniz: '%d:%s', nam-ı diğer ':%d:./%s'?"
 
-#: range-diff.c:299
-msgid "failed to generate diff"
-msgstr "diff oluşturulamadı"
+#: object-name.c:1769
+#, c-format
+msgid "path '%s' exists on disk, but not in the index"
+msgstr "'%s' yolu diskte mevcut; ancak indekste değil"
 
-#: range-diff.c:532 range-diff.c:534
+#: object-name.c:1771
 #, c-format
-msgid "could not parse log for '%s'"
-msgstr "'%s' günlüğü ayrıştırılamadı"
+msgid "path '%s' does not exist (neither on disk nor in the index)"
+msgstr "'%s' diye bir yol yok (ne diskte ne de indekste)"
 
-#: read-cache.c:682
+#: object-name.c:1784
+msgid "relative path syntax can't be used outside working tree"
+msgstr "göreceli yol sözdizimi çalışma ağacı dışında kullanılamaz"
+
+#: object-name.c:1922
 #, c-format
-msgid "will not add file alias '%s' ('%s' already exists in index)"
-msgstr "dosya arması '%s' eklenmeyecek ('%s' indekste halihazırda var)"
+msgid "invalid object name '%.*s'."
+msgstr "geçersiz nesne adı: '%.*s'"
 
-#: read-cache.c:698
-msgid "cannot create an empty blob in the object database"
-msgstr "nesne veritabanında boş ikili bir nesne oluşturulamıyor"
+#: object.c:53
+#, c-format
+msgid "invalid object type \"%s\""
+msgstr "geçersiz nesne türü \"%s\""
 
-#: read-cache.c:720
+#: object.c:173
 #, c-format
-msgid "%s: can only add regular files, symbolic links or git-directories"
-msgstr ""
-"%s: yalnızca sıradan dosyalar, sembolik bağlar ve git dizinleri eklenebilir"
+msgid "object %s is a %s, not a %s"
+msgstr "%s nesnesi bir %s, %s değil"
 
-#: read-cache.c:725
+#: object.c:233
 #, c-format
-msgid "'%s' does not have a commit checked out"
-msgstr "'%s' çıkışı yapılmış bir işlemeye iye değil"
+msgid "object %s has unknown type id %d"
+msgstr "%s nesnesi %d bilinmeyen tür numarasına iye"
 
-#: read-cache.c:777
+#: object.c:246
 #, c-format
-msgid "unable to index file '%s'"
-msgstr "'%s' dosyası indekslenemiyor"
+msgid "unable to parse object: %s"
+msgstr "nesne ayrıştırılamıyor: %s"
 
-#: read-cache.c:796
+#: object.c:266 object.c:278
 #, c-format
-msgid "unable to add '%s' to index"
-msgstr "'%s' indekse eklenemiyor"
+msgid "hash mismatch %s"
+msgstr "sağlama uyuşmazlığı %s"
 
-#: read-cache.c:807
+#: pack-bitmap.c:843 pack-bitmap.c:849 builtin/pack-objects.c:2226
 #, c-format
-msgid "unable to stat '%s'"
-msgstr "'%s' dosyasının bilgileri alınamıyor"
+msgid "unable to get size of %s"
+msgstr "%s boyutu alınamıyor"
 
-#: read-cache.c:1318
+#: pack-bitmap.c:1489 builtin/rev-list.c:92
 #, c-format
-msgid "'%s' appears as both a file and as a directory"
-msgstr "'%s' hem bir dosya hem de bir dizin olarak görünüyor"
+msgid "unable to get disk usage of %s"
+msgstr "%s ögesinin disk kullanımı alınamıyor"
 
-#: read-cache.c:1524
-msgid "Refresh index"
-msgstr "İndeks yenileniyor"
+#: pack-revindex.c:220
+#, c-format
+msgid "reverse-index file %s is too small"
+msgstr "reverse-index dosyası %s pek küçük"
 
-#: read-cache.c:1639
+#: pack-revindex.c:225
 #, c-format
-msgid ""
-"index.version set, but the value is invalid.\n"
-"Using version %i"
-msgstr ""
-"index.version ayarlanmış; ancak değer geçersiz.\n"
-"%i sürümü kullanılıyor"
+msgid "reverse-index file %s is corrupt"
+msgstr "reverse-index dosyası %s hasar görmüş"
 
-#: read-cache.c:1649
+#: pack-revindex.c:233
 #, c-format
-msgid ""
-"GIT_INDEX_VERSION set, but the value is invalid.\n"
-"Using version %i"
-msgstr ""
-"GIT_INDEX_VERSION ayarlanmış; ancak değer geçersiz.\n"
-"%i sürümü kullanılıyor"
+msgid "reverse-index file %s has unknown signature"
+msgstr "%s reverse-index dosyasının bilinmeyen bir imzası var"
 
-#: read-cache.c:1705
+#: pack-revindex.c:237
 #, c-format
-msgid "bad signature 0x%08x"
-msgstr "hatalı imza 0x%08x"
+msgid "reverse-index file %s has unsupported version %<PRIu32>"
+msgstr "%s reverse-index dosyasının sürümü %<PRIu32> desteklenmiyor"
 
-#: read-cache.c:1708
+#: pack-revindex.c:242
 #, c-format
-msgid "bad index version %d"
-msgstr "hatalı indeks sürümü %d"
+msgid "reverse-index file %s has unsupported hash id %<PRIu32>"
+msgstr "%s reverse-index dosyasının sağlama numarası %<PRIu32> desteklenmiyor"
 
-#: read-cache.c:1717
-msgid "bad index file sha1 signature"
-msgstr "hatalı indeks dosyası sha1 imzası"
+#: pack-write.c:236
+msgid "cannot both write and verify reverse index"
+msgstr "ters indeks dosyası hem yazılıp hem doğrulanamıyor"
 
-#: read-cache.c:1747
+#: pack-write.c:257
 #, c-format
-msgid "index uses %.4s extension, which we do not understand"
-msgstr "indeks bizim anlamadığımız %.4s imzası kullanıyor"
+msgid "could not stat: %s"
+msgstr "dosya bilgileri alınamadı: %s"
 
-#: read-cache.c:1749
+#: pack-write.c:269
 #, c-format
-msgid "ignoring %.4s extension"
-msgstr "%.4s uzantısı yok sayılıyor"
+msgid "failed to make %s readable"
+msgstr "%s, yazılabilir yapılamadı"
 
-#: read-cache.c:1786
+#: pack-write.c:508
 #, c-format
-msgid "unknown index entry format 0x%08x"
-msgstr "bilinmeyen indeks girdisi biçimi 0x%08x"
+msgid "could not write '%s' promisor file"
+msgstr "vaat dosyası '%s' yazılamadı"
 
-#: read-cache.c:1802
+#: packfile.c:625
+msgid "offset before end of packfile (broken .idx?)"
+msgstr "ofset paket dosyasının sonundan önce (bozuk .idx?)"
+
+#: packfile.c:1934
 #, c-format
-msgid "malformed name field in the index, near path '%s'"
-msgstr "indekste hatalı oluşturulmuş ad alanı, '%s' yolu yakınında"
+msgid "offset before start of pack index for %s (corrupt index?)"
+msgstr "ofset %s için paket indeksinin başlangıcından önce (hasarlı indeks?)"
 
-#: read-cache.c:1859
-msgid "unordered stage entries in index"
-msgstr "indekste sırasız hazırlama alanı girdileri"
+#: packfile.c:1938
+#, c-format
+msgid "offset beyond end of pack index for %s (truncated index?)"
+msgstr "ofset %s için paket indeksinin sonundan ötede (kırpılmış index?)"
 
-#: read-cache.c:1862
+#: parse-options-cb.c:20 parse-options-cb.c:24
 #, c-format
-msgid "multiple stage entries for merged file '%s'"
-msgstr "birleştirilmiş dosya '%s' için çoklu hazırlama alanı girdileri"
+msgid "option `%s' expects a numerical value"
+msgstr "'%s' seçeneği sayısal bir değer bekliyor"
 
-#: read-cache.c:1865
+#: parse-options-cb.c:41
 #, c-format
-msgid "unordered stage entries for '%s'"
-msgstr "'%s' için sırasız hazırlama alanı girdileri"
+msgid "malformed expiration date '%s'"
+msgstr "hatalı oluşturulmuş son kullanım tarihi '%s'"
 
-#: read-cache.c:1971 read-cache.c:2262 rerere.c:565 rerere.c:599 rerere.c:1111
-#: submodule.c:1628 builtin/add.c:538 builtin/check-ignore.c:181
-#: builtin/checkout.c:502 builtin/checkout.c:688 builtin/clean.c:991
-#: builtin/commit.c:364 builtin/diff-tree.c:122 builtin/grep.c:507
-#: builtin/mv.c:146 builtin/reset.c:247 builtin/rm.c:290
-#: builtin/submodule--helper.c:332
-msgid "index file corrupt"
-msgstr "indeks dosyası hasar görmüş"
+#: parse-options-cb.c:54
+#, c-format
+msgid "option `%s' expects \"always\", \"auto\", or \"never\""
+msgstr "'%s' seçeneği \"always\", \"auto\" veya \"never\" bekliyor"
 
-#: read-cache.c:2115
+#: parse-options-cb.c:132 parse-options-cb.c:149
 #, c-format
-msgid "unable to create load_cache_entries thread: %s"
-msgstr "load_cache_entries iş parçacığı oluşturulamıyor: %s"
+msgid "malformed object name '%s'"
+msgstr "hatalı oluşturulmuş nesne adı '%s'"
 
-#: read-cache.c:2128
+#: parse-options.c:38
 #, c-format
-msgid "unable to join load_cache_entries thread: %s"
-msgstr "load_cache_entries iş parçacığı ucu birleştirilemiyor: %s"
+msgid "%s requires a value"
+msgstr "%s bir değer gerektiriyor"
 
-#: read-cache.c:2161
+#: parse-options.c:73
 #, c-format
-msgid "%s: index file open failed"
-msgstr "%s: indeks dosyası açılamadı"
+msgid "%s is incompatible with %s"
+msgstr "%s, %s ile uyumsuz"
 
-#: read-cache.c:2165
+#: parse-options.c:78
 #, c-format
-msgid "%s: cannot stat the open index"
-msgstr "%s: açık indeksin bilgileri alınamıyor"
+msgid "%s : incompatible with something else"
+msgstr "%s: başka bir şeyle uyumsuz"
 
-#: read-cache.c:2169
+#: parse-options.c:92 parse-options.c:96 parse-options.c:317
 #, c-format
-msgid "%s: index file smaller than expected"
-msgstr "%s: indeks dosyası beklenenden daha küçük"
+msgid "%s takes no value"
+msgstr "%s bir değer almıyor"
 
-#: read-cache.c:2173
+#: parse-options.c:94
 #, c-format
-msgid "%s: unable to map index file"
-msgstr "%s: indeks dosyası eşlemlenemiyor"
+msgid "%s isn't available"
+msgstr "%s kullanılabilir değil"
 
-#: read-cache.c:2215
+#: parse-options.c:217
 #, c-format
-msgid "unable to create load_index_extensions thread: %s"
-msgstr "load_index_extensions iş parçacığı oluşturulamıyor: %s"
+msgid "%s expects a non-negative integer value with an optional k/m/g suffix"
+msgstr "%s negatif olmayan bir tamsayı bekliyor, isteğe bağlı k/m/g eki ile"
 
-#: read-cache.c:2242
+#: parse-options.c:386
 #, c-format
-msgid "unable to join load_index_extensions thread: %s"
-msgstr "load_index_extensions iş parçacığı ucu birleştirilemiyor: %s"
+msgid "ambiguous option: %s (could be --%s%s or --%s%s)"
+msgstr "belirsiz seçenek: %s (--%s%s veya --%s%s olabilir)"
 
-#: read-cache.c:2274
+#: parse-options.c:420 parse-options.c:428
 #, c-format
-msgid "could not freshen shared index '%s'"
-msgstr "paylaşılan indeks '%s' tazelenemedi"
+msgid "did you mean `--%s` (with two dashes)?"
+msgstr "şunu mu demek istediniz: '--%s' (iki tire ile)?"
 
-#: read-cache.c:2321
+#: parse-options.c:666 parse-options.c:971
 #, c-format
-msgid "broken index, expect %s in %s, got %s"
-msgstr "bozuk indeks, %s bekleniyordu (%s içinde), %s alındı"
+msgid "alias of --%s"
+msgstr "şunun arması: --%s"
 
-#: read-cache.c:3017 strbuf.c:1171 wrapper.c:633 builtin/merge.c:1140
+#: parse-options.c:862
 #, c-format
-msgid "could not close '%s'"
-msgstr "'%s' kapatılamadı"
+msgid "unknown option `%s'"
+msgstr "bilinmeyen seçenek '%s'"
 
-#: read-cache.c:3120 sequencer.c:2479 sequencer.c:4231
+#: parse-options.c:864
 #, c-format
-msgid "could not stat '%s'"
-msgstr "'%s' bilgileri alınamadı"
+msgid "unknown switch `%c'"
+msgstr "bilinmeyen anahtar '%c'"
 
-#: read-cache.c:3133
+#: parse-options.c:866
 #, c-format
-msgid "unable to open git dir: %s"
-msgstr "git dizini açılamıyor: %s"
+msgid "unknown non-ascii option in string: `%s'"
+msgstr "dizi içinde bilinmeyen ascii dışı seçenek: '%s'"
+
+#: parse-options.c:890
+msgid "..."
+msgstr "..."
 
-#: read-cache.c:3145
+#: parse-options.c:909
 #, c-format
-msgid "unable to unlink: %s"
-msgstr "bağlantı kesilemiyor: %s"
+msgid "usage: %s"
+msgstr "kullanım: %s"
 
-#: read-cache.c:3170
+#. TRANSLATORS: the colon here should align with the
+#. one in "usage: %s" translation.
+#.
+#: parse-options.c:915
 #, c-format
-msgid "cannot fix permission bits on '%s'"
-msgstr "'%s' üzerindeki izin bitleri onarılamıyor"
+msgid "   or: %s"
+msgstr "    veya: %s"
 
-#: read-cache.c:3319
+#: parse-options.c:918
 #, c-format
-msgid "%s: cannot drop to stage #0"
-msgstr "%s: #0 numaralı hazırlama alanına bırakılamıyor"
+msgid "    %s"
+msgstr "    %s"
 
-#: rebase-interactive.c:11
-msgid ""
-"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 ""
-"Bunu 'git rebase --edit-todo' ile düzeltebilir ve ardından 'git rebase --"
-"continue' yapabilirsiniz.\n"
-"Yeniden temellendirmeyi durdurmak isterseniz 'git rebase --abort' yapın.\n"
+#: parse-options.c:957
+msgid "-NUM"
+msgstr "-SAYI"
 
-#: rebase-interactive.c:33
+#: path.c:915
 #, c-format
-msgid ""
-"unrecognized setting %s for option rebase.missingCommitsCheck. Ignoring."
-msgstr ""
-"rebase.missingCommitsCheck seçeneği için tanımlanamayan %s ayarı. Yok "
-"sayılıyor."
+msgid "Could not make %s writable by group"
+msgstr "%s grup ile yazılabilir yapılamadı"
 
-#: rebase-interactive.c:42
-msgid ""
-"\n"
-"Commands:\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"
-"b, break = stop here (continue rebase later with 'git rebase --continue')\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"
-"Komutlar:\n"
-"p, pick <işleme> = işlemeyi kullan\n"
-"r, reword <işleme> = işlemeyi kullan; ancak işleme iletisini düzenle\n"
-"e, edit <işleme> = işlemeyi kullan; ancak değiştirmek için dur\n"
-"s, squash <işleme> = işlemeyi kullan; ancak önceki işleme içine karıştır\n"
-"f, fixup <işleme> = \"squash\" gibi; ancak bu işlemenin günlük iletisini at\n"
-"x, exec <komut> = komutu (satırın geri kalanı) kabuk kullanarak çalıştır\n"
-"b, break = burada dur (daha sonra sürdürmek için 'git rebase --continue')\n"
-"d, drop <işleme> = işlemeyi kaldır\n"
-"l, label <etiket> = geçerli HEAD'i bir ad ile etiketle\n"
-"t, reset <etiket> = HEAD'i bir etikete sıfırla\n"
-"m, merge [-C <işleme> | -c <işleme>] <etiket> [# <teksatır>]\n"
-".       orijinal birleştirme işlemesi iletisini kullanarak bir\n"
-".       birleştirme işlemesi oluştur (veya teksatır, eğer bir orijinal\n"
-".       birleştirme işlemesi belirtilmemişse). İşleme iletisini yeniden\n"
-".       yazmak için -c <işleme> kullanın.\n"
-"\n"
-"Bu satırlar yeniden sıralanabilirler, yukarıdan aşağıya çalıştırılırlar.\n"
+#: pathspec.c:130
+msgid "Escape character '\\' not allowed as last character in attr value"
+msgstr "Kaçış karakteri '\\' attr değerindeki son karakter olarak kullanılamaz"
 
-#: rebase-interactive.c:63
-#, c-format
-msgid "Rebase %s onto %s (%d command)"
-msgid_plural "Rebase %s onto %s (%d commands)"
-msgstr[0] "%s ögesini %s üzerine yeniden temellendir (%d komut)"
-msgstr[1] "%s ögesini %s üzerine yeniden temellendir (%d komut)"
+#: pathspec.c:148
+msgid "Only one 'attr:' specification is allowed."
+msgstr "Yalnızca bir 'attr:' belirtimine izin verilir."
 
-#: rebase-interactive.c:72 git-rebase--preserve-merges.sh:218
-msgid ""
-"\n"
-"Do not remove any line. Use 'drop' explicitly to remove a commit.\n"
-msgstr ""
-"\n"
-"Hiçbir satırı kaldırmayın. Bir işlemeyi kaldırmak için 'drop'u açıkça "
-"kullanın.\n"
+#: pathspec.c:151
+msgid "attr spec must not be empty"
+msgstr "attr belirteci boş olmamalı"
 
-#: rebase-interactive.c:75 git-rebase--preserve-merges.sh:222
-msgid ""
-"\n"
-"If you remove a line here THAT COMMIT WILL BE LOST.\n"
-msgstr ""
-"\n"
-"Buradaki bir satırı kaldırırsanız İŞLEME KAYBOLUR.\n"
+#: pathspec.c:194
+#, c-format
+msgid "invalid attribute name %s"
+msgstr "geçersiz öznitelik adı %s"
 
-#: rebase-interactive.c:81 git-rebase--preserve-merges.sh:861
-msgid ""
-"\n"
-"You are editing the todo file of an ongoing interactive rebase.\n"
-"To continue rebase after editing, run:\n"
-"    git rebase --continue\n"
-"\n"
-msgstr ""
-"\n"
-"Sürmekte olan bir etkileşimli yeniden temellendirmenin yapılacaklar "
-"dosyasını düzenlemektesiniz.\n"
-"Düzenlemenin ardından yeniden temellendirmeyi sürdürmek için şunu kullanın:\n"
-"\tgit rebase --continue\n"
-"\n"
+#: pathspec.c:259
+msgid "global 'glob' and 'noglob' pathspec settings are incompatible"
+msgstr "global 'glob' ve 'noglob' yol belirteci ayarları birbiriyle uyumsuz"
 
-#: rebase-interactive.c:86 git-rebase--preserve-merges.sh:938
+#: pathspec.c:266
 msgid ""
-"\n"
-"However, if you remove everything, the rebase will be aborted.\n"
-"\n"
+"global 'literal' pathspec setting is incompatible with all other global "
+"pathspec settings"
 msgstr ""
-"\n"
-"Ancak tümünü kaldırırsanız yeniden temellendirme iptal edilecektir.\n"
-"\n"
+"global 'literal' yol belirteci ayarı diğer tüm global yol belirteci "
+"ayarlarıyla uyumsuz"
 
-#: rebase-interactive.c:110 rerere.c:485 rerere.c:692 sequencer.c:3607
-#: sequencer.c:3633 sequencer.c:5416 builtin/fsck.c:347 builtin/rebase.c:270
-#, c-format
-msgid "could not write '%s'"
-msgstr "'%s' yazılamadı"
+#: pathspec.c:306
+msgid "invalid parameter for pathspec magic 'prefix'"
+msgstr "yol belirteci sihri 'prefix' için geçersiz parametre"
 
-#: rebase-interactive.c:116 builtin/rebase.c:202 builtin/rebase.c:228
-#: builtin/rebase.c:252
+#: pathspec.c:327
 #, c-format
-msgid "could not write '%s'."
-msgstr "'%s' yazılamadı."
+msgid "Invalid pathspec magic '%.*s' in '%s'"
+msgstr "Geçersiz yol belirteci sihri '%.*s' (%s içinde)"
 
-#: rebase-interactive.c:193
+#: pathspec.c:332
 #, c-format
-msgid ""
-"Warning: some commits may have been dropped accidentally.\n"
-"Dropped commits (newer to older):\n"
-msgstr ""
-"Uyarı: Bazı işlemeler yanlışlıkla bırakılmış olabilir.\n"
-"Bırakılan işlemeler: (yeniden eskiye):\n"
+msgid "Missing ')' at the end of pathspec magic in '%s'"
+msgstr "'%s' içindeki yol belirteci sihrinin sonunda eksik ')'"
 
-#: rebase-interactive.c:200
+#: pathspec.c:370
 #, c-format
-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"
-"The possible behaviours are: ignore, warn, error.\n"
-"\n"
-msgstr ""
-"Bu iletiden kaçınmak için, bir işlemeyi kaldırırken açıkça \"drop\" "
-"kullanın.\n"
-"Uyarıların düzeyini değiştirmek için 'git config rebase.missingCommitsCheck' "
-"kullanın.\n"
-"Kullanılabilir davranışlar: ignore, warn, error.\n"
-"\n"
+msgid "Unimplemented pathspec magic '%c' in '%s'"
+msgstr "Yerine getirilmemiş yol belirteci sihri '%c' ('%s' içinde)"
 
-#: rebase-interactive.c:233 rebase-interactive.c:238 sequencer.c:2394
-#: builtin/rebase.c:188 builtin/rebase.c:213 builtin/rebase.c:239
-#: builtin/rebase.c:264
+#: pathspec.c:429
 #, c-format
-msgid "could not read '%s'."
-msgstr "'%s' okunamadı."
-
-#: ref-filter.c:42 wt-status.c:1973
-msgid "gone"
-msgstr "gitti"
+msgid "%s: 'literal' and 'glob' are incompatible"
+msgstr "%s: 'literal' ve 'glob' birbiriyle uyumsuz"
 
-#: ref-filter.c:43
+#: pathspec.c:445
 #, c-format
-msgid "ahead %d"
-msgstr "%d önünde"
+msgid "%s: '%s' is outside repository at '%s'"
+msgstr "%s: '%s', '%s' konumunda depo dışında"
 
-#: ref-filter.c:44
+#: pathspec.c:521
 #, c-format
-msgid "behind %d"
-msgstr "%d arkasında"
+msgid "'%s' (mnemonic: '%c')"
+msgstr "'%s' (belleten: '%c')"
 
-#: ref-filter.c:45
+#: pathspec.c:531
 #, c-format
-msgid "ahead %d, behind %d"
-msgstr "%d önünde, %d arkasında"
+msgid "%s: pathspec magic not supported by this command: %s"
+msgstr "%s: yol belirteci sihri bu komut tarafından desteklenmiyor: %s"
 
-#: ref-filter.c:169
+#: pathspec.c:598
 #, c-format
-msgid "expected format: %%(color:<color>)"
-msgstr "beklenen biçim: %%(color:<renk>)"
+msgid "pathspec '%s' is beyond a symbolic link"
+msgstr "yol belirteci '%s' bir sembolik bağın ötesinde"
 
-#: ref-filter.c:171
+#: pathspec.c:643
 #, c-format
-msgid "unrecognized color: %%(color:%s)"
-msgstr "tanımlanamayan renk: %%(color:%s)"
+msgid "line is badly quoted: %s"
+msgstr "satırda hatalı tırnaklar: %s"
 
-#: ref-filter.c:193
-#, c-format
-msgid "Integer value expected refname:lstrip=%s"
-msgstr "Tamsayı değeri şunu bekliyordu: refname:lstrip=%s"
+#: pkt-line.c:92
+msgid "unable to write flush packet"
+msgstr "floş paketi yazılamıyor"
 
-#: ref-filter.c:197
-#, c-format
-msgid "Integer value expected refname:rstrip=%s"
-msgstr "Tamsayı değeri şunu bekliyordu: refname:rstrip=%s"
+#: pkt-line.c:99
+msgid "unable to write delim packet"
+msgstr "sınırlandıran paket yazılamıyor"
 
-#: ref-filter.c:199
-#, c-format
-msgid "unrecognized %%(%s) argument: %s"
-msgstr "tanımlanamayan %%(%s) argümanı: %s"
+#: pkt-line.c:106
+msgid "unable to write stateless separator packet"
+msgstr "durumsuz ayırıcı paketi yazılamıyor"
 
-#: ref-filter.c:254
-#, c-format
-msgid "%%(objecttype) does not take arguments"
-msgstr "%%(objecttype) argüman almıyor"
+#: pkt-line.c:113
+msgid "flush packet write failed"
+msgstr "floş paketi yazımı başarısız"
 
-#: ref-filter.c:276
-#, c-format
-msgid "unrecognized %%(objectsize) argument: %s"
-msgstr "tanımlanamayan %%(objectsize) argümanı: %s"
+#: pkt-line.c:153 pkt-line.c:239
+msgid "protocol error: impossibly long line"
+msgstr "protokol hatası: olanaksız uzun satır"
 
-#: ref-filter.c:284
-#, c-format
-msgid "%%(deltabase) does not take arguments"
-msgstr "%%(deltabase) argüman almıyor"
+#: pkt-line.c:169 pkt-line.c:171
+msgid "packet write with format failed"
+msgstr "biçimlendirilmiş paket yazımı başarısız"
 
-#: ref-filter.c:296
-#, c-format
-msgid "%%(body) does not take arguments"
-msgstr "%%(body) argüman almıyor"
+#: pkt-line.c:203
+msgid "packet write failed - data exceeds max packet size"
+msgstr "paket yazımı başarısız - veri olabilecek en çok paket boyutunu aşıyor"
 
-#: ref-filter.c:309
-#, c-format
-msgid "unrecognized %%(subject) argument: %s"
-msgstr "tanımlanamayan %%(subject) argümanı: %s"
+#: pkt-line.c:210 pkt-line.c:217
+msgid "packet write failed"
+msgstr "paket yazımı başarısız"
 
-#: ref-filter.c:330
-#, c-format
-msgid "unknown %%(trailers) argument: %s"
-msgstr "bilinmeyen %%(trailers) argümanı: %s"
+#: pkt-line.c:302
+msgid "read error"
+msgstr "okuma hatası"
 
-#: ref-filter.c:363
-#, c-format
-msgid "positive value expected contents:lines=%s"
-msgstr "pozitif değer şunu bekliyordu: contents:lines=%s"
+#: pkt-line.c:310
+msgid "the remote end hung up unexpectedly"
+msgstr "uzak konum beklenmedik bir biçimde hattı kapattı"
 
-#: ref-filter.c:365
+#: pkt-line.c:338
 #, c-format
-msgid "unrecognized %%(contents) argument: %s"
-msgstr "tanımlanamayan %%(contents) argümanı: %s"
+msgid "protocol error: bad line length character: %.4s"
+msgstr "protokol hatası: hatalı satır uzunluğu karakteri: %.4s"
 
-#: ref-filter.c:380
+#: pkt-line.c:352 pkt-line.c:357
 #, c-format
-msgid "positive value expected '%s' in %%(%s)"
-msgstr "pozitif değer şurada '%s' bekliyordu: %%(%s)"
+msgid "protocol error: bad line length %d"
+msgstr "protokol hatası: hatalı satır uzunluğu %d"
 
-#: ref-filter.c:384
+#: pkt-line.c:373 sideband.c:165
 #, c-format
-msgid "unrecognized argument '%s' in %%(%s)"
-msgstr "şurada tanımlanamayan argüman '%s': %%(%s)"
+msgid "remote error: %s"
+msgstr "uzak konum hatası: %s"
 
-#: ref-filter.c:398
-#, c-format
-msgid "unrecognized email option: %s"
-msgstr "tanımlanamayan e-posta seçeneği: %s"
+#: preload-index.c:125
+msgid "Refreshing index"
+msgstr "İndeks yenileniyor"
 
-#: ref-filter.c:428
+#: preload-index.c:144
 #, c-format
-msgid "expected format: %%(align:<width>,<position>)"
-msgstr "beklenen biçim: %%(align:<genişlik>,<konum>)"
+msgid "unable to create threaded lstat: %s"
+msgstr "iş parçacıklarına ayrılmış 'lstat' oluşturulamıyor: %s"
 
-#: ref-filter.c:440
-#, c-format
-msgid "unrecognized position:%s"
-msgstr "tanımlanamayan konum:%s"
+#: pretty.c:984
+msgid "unable to parse --pretty format"
+msgstr "--pretty biçimi ayrıştırılamıyor"
 
-#: ref-filter.c:447
-#, c-format
-msgid "unrecognized width:%s"
-msgstr "tanımlanamayan genişlik:%s"
+#: promisor-remote.c:30
+msgid "promisor-remote: unable to fork off fetch subprocess"
+msgstr "promisor-remote: getirme altişlemi çatallanamıyor"
 
-#: ref-filter.c:456
-#, c-format
-msgid "unrecognized %%(align) argument: %s"
-msgstr "tanımlanamayan %%(align) argümanı: %s"
+#: promisor-remote.c:35 promisor-remote.c:37
+msgid "promisor-remote: could not write to fetch subprocess"
+msgstr "promisor-remote: getirme altişlemine yazılamıyor"
 
-#: ref-filter.c:464
-#, c-format
-msgid "positive width expected with the %%(align) atom"
-msgstr "pozitif genişlik %%(align) ögeciği ile birlikte bekleniyordu"
+#: promisor-remote.c:41
+msgid "promisor-remote: could not close stdin to fetch subprocess"
+msgstr "promisor-remote: altişlemi getirmek için stdin kapatılamıyor"
 
-#: ref-filter.c:482
+#: promisor-remote.c:53
 #, c-format
-msgid "unrecognized %%(if) argument: %s"
-msgstr "tanımlanamayan %%(if) argümanı: %s"
+msgid "promisor remote name cannot begin with '/': %s"
+msgstr "vaatçi uzak konum adı '/' ile başlayamaz: %s"
 
-#: ref-filter.c:584
-#, c-format
-msgid "malformed field name: %.*s"
-msgstr "hatalı oluşturulmuş alan adı: %.*s"
+#: prune-packed.c:35
+msgid "Removing duplicate objects"
+msgstr "Yinelenmiş nesneler kaldırılıyor"
 
-#: ref-filter.c:611
+#: range-diff.c:78
+msgid "could not start `log`"
+msgstr "'log' başlatılamadı"
+
+#: range-diff.c:80
+msgid "could not read `log` output"
+msgstr "'log' çıktısı okunamadı"
+
+#: range-diff.c:101 sequencer.c:5318
 #, c-format
-msgid "unknown field name: %.*s"
-msgstr "bilinmeyen alan adı: %.*s"
+msgid "could not parse commit '%s'"
+msgstr "'%s' işlemesi ayrıştırılamadı"
 
-#: ref-filter.c:615
+#: range-diff.c:115
 #, c-format
 msgid ""
-"not a git repository, but the field '%.*s' requires access to object data"
+"could not parse first line of `log` output: did not start with 'commit ': "
+"'%s'"
 msgstr ""
-"bir git deposu değil; ancak '%.*s' alanı nesne verisine erişim gerektiriyor"
+"'log' çıktısının ilk satırı ayrıştırılamadı: 'commit ' ile başlamıyor: '%s'"
 
-#: ref-filter.c:739
+#: range-diff.c:140
 #, c-format
-msgid "format: %%(if) atom used without a %%(then) atom"
-msgstr "biçim: %%(if) ögeciği bir %%(then) ögeciği olmadan kullanıldı"
+msgid "could not parse git header '%.*s'"
+msgstr "git üstbilgisi '%.*s' ayrıştırılamadı"
 
-#: ref-filter.c:802
-#, c-format
-msgid "format: %%(then) atom used without an %%(if) atom"
-msgstr "biçim: %%(then) ögeciği bir %%(if) ögeciği olmadan kullanıldı"
+#: range-diff.c:306
+msgid "failed to generate diff"
+msgstr "diff oluşturulamadı"
 
-#: ref-filter.c:804
-#, c-format
-msgid "format: %%(then) atom used more than once"
-msgstr "biçim: %%(then) ögeciği birden çok kez kullanıldı"
+#: range-diff.c:558
+msgid "--left-only and --right-only are mutually exclusive"
+msgstr "-p ve --overlay birlikte kullanılmaz"
 
-#: ref-filter.c:806
+#: range-diff.c:561 range-diff.c:563
 #, c-format
-msgid "format: %%(then) atom used after %%(else)"
-msgstr "biçim: %%(then) ögeciği %%(else) ögeciğinden sonra kullanıldı"
+msgid "could not parse log for '%s'"
+msgstr "'%s' günlüğü ayrıştırılamadı"
 
-#: ref-filter.c:834
+#: read-cache.c:682
 #, c-format
-msgid "format: %%(else) atom used without an %%(if) atom"
-msgstr "biçim: %%(else) ögeciği bir %%(if) ögeciği olmadan kullanıldı"
+msgid "will not add file alias '%s' ('%s' already exists in index)"
+msgstr "dosya arması '%s' eklenmeyecek ('%s' indekste halihazırda var)"
 
-#: ref-filter.c:836
-#, c-format
-msgid "format: %%(else) atom used without a %%(then) atom"
-msgstr "biçim: %%(else) ögeciği bir %%(then) ögeciği olmadan kullanıldı"
+#: read-cache.c:698
+msgid "cannot create an empty blob in the object database"
+msgstr "nesne veritabanında boş ikili bir nesne oluşturulamıyor"
 
-#: ref-filter.c:838
+#: read-cache.c:720
 #, c-format
-msgid "format: %%(else) atom used more than once"
-msgstr "biçim: %%(else) ögeciği birden çok kez kullanıldı"
+msgid "%s: can only add regular files, symbolic links or git-directories"
+msgstr ""
+"%s: yalnızca sıradan dosyalar, sembolik bağlar ve git dizinleri eklenebilir"
 
-#: ref-filter.c:853
+#: read-cache.c:725
 #, c-format
-msgid "format: %%(end) atom used without corresponding atom"
-msgstr "biçim: %%(end) ögeciği eş ögeciği olmadan kullanıldı"
+msgid "'%s' does not have a commit checked out"
+msgstr "'%s' çıkışı yapılmış bir işlemeye iye değil"
 
-#: ref-filter.c:910
+#: read-cache.c:777
 #, c-format
-msgid "malformed format string %s"
-msgstr "hatalı oluşturulmuş biçim dizisi %s"
+msgid "unable to index file '%s'"
+msgstr "'%s' dosyası indekslenemiyor"
 
-#: ref-filter.c:1549
+#: read-cache.c:796
 #, c-format
-msgid "no branch, rebasing %s"
-msgstr "dal yok, %s yeniden temellendiriliyor"
+msgid "unable to add '%s' to index"
+msgstr "'%s' indekse eklenemiyor"
 
-#: ref-filter.c:1552
+#: read-cache.c:807
 #, c-format
-msgid "no branch, rebasing detached HEAD %s"
-msgstr "dal yok, ayrık HEAD %s yeniden temellendiriliyor"
+msgid "unable to stat '%s'"
+msgstr "'%s' dosyasının bilgileri alınamıyor"
 
-#: ref-filter.c:1555
+#: read-cache.c:1318
 #, c-format
-msgid "no branch, bisect started on %s"
-msgstr "dal yok, ikili arama %s üzerinde başladı"
+msgid "'%s' appears as both a file and as a directory"
+msgstr "'%s' hem bir dosya hem de bir dizin olarak görünüyor"
 
-#: ref-filter.c:1565
-msgid "no branch"
-msgstr "dal yok"
-
-#: ref-filter.c:1599 ref-filter.c:1808
-#, c-format
-msgid "missing object %s for %s"
-msgstr "eksik nesne %s (%s için)"
-
-#: ref-filter.c:1609
-#, c-format
-msgid "parse_object_buffer failed on %s for %s"
-msgstr "parse_object_buffer %s üzerinde başarısız oldu (%s için)"
-
-#: ref-filter.c:2062
-#, c-format
-msgid "malformed object at '%s'"
-msgstr "'%s' konumunda hatalı oluşturulmuş nesne"
-
-#: ref-filter.c:2151
-#, c-format
-msgid "ignoring ref with broken name %s"
-msgstr "bozuk ada iye %s başvurusu yok sayılıyor"
-
-#: ref-filter.c:2156 refs.c:676
-#, c-format
-msgid "ignoring broken ref %s"
-msgstr "bozuk başvuru %s yok sayılıyor"
-
-#: ref-filter.c:2472
-#, c-format
-msgid "format: %%(end) atom missing"
-msgstr "biçim: %%(end) ögeciği eksik"
-
-#: ref-filter.c:2571
-#, c-format
-msgid "malformed object name %s"
-msgstr "hatalı oluşturulmuş nesne adı %s"
-
-#: ref-filter.c:2576
-#, c-format
-msgid "option `%s' must point to a commit"
-msgstr "'%s' bir işlemeye işaret etmeli"
+#: read-cache.c:1532
+msgid "Refresh index"
+msgstr "İndeks yenileniyor"
 
-#: refs.c:264
+#: read-cache.c:1657
 #, c-format
-msgid "%s does not point to a valid object!"
-msgstr "%s geçerli bir nesneye işaret etmiyor!"
+msgid ""
+"index.version set, but the value is invalid.\n"
+"Using version %i"
+msgstr ""
+"index.version ayarlanmış; ancak değer geçersiz.\n"
+"%i sürümü kullanılıyor"
 
-#: refs.c:566
+#: read-cache.c:1667
 #, c-format
 msgid ""
-"Using '%s' as the name for the initial branch. This default branch name\n"
-"is subject to change. To configure the initial branch name to use in all\n"
-"of your new repositories, which will suppress this warning, call:\n"
-"\n"
-"\tgit config --global init.defaultBranch <name>\n"
-"\n"
-"Names commonly chosen instead of 'master' are 'main', 'trunk' and\n"
-"'development'. The just-created branch can be renamed via this command:\n"
-"\n"
-"\tgit branch -m <name>\n"
+"GIT_INDEX_VERSION set, but the value is invalid.\n"
+"Using version %i"
 msgstr ""
-"Başlangıç dal adı olarak %s kullanılıyor. Bu öntanımlı dal adı\n"
-"değiştirilebilir. Bu iletiyi kapatmak ve yeni depolarınızda kullanılacak\n"
-"başlangıç dal adını yapılandırmak için şu komutu kullanın:\n"
-"\n"
-"\tgit config --global init.defaultBranch <ad>\n"
-"\n"
-"'master' yerine kullanılan diğer yaygın dal adları 'main', 'trunk' ve/veya\n"
-"'development'tır. Yeni oluşturulan dal şu komutla yeniden adlandırılabilir:\n"
-"\n"
-"\tgit branch -m <ad>\n"
+"GIT_INDEX_VERSION ayarlanmış; ancak değer geçersiz.\n"
+"%i sürümü kullanılıyor"
 
-#: refs.c:588
+#: read-cache.c:1723
 #, c-format
-msgid "could not retrieve `%s`"
-msgstr "'%s' alınamadı"
+msgid "bad signature 0x%08x"
+msgstr "hatalı imza 0x%08x"
 
-#: refs.c:598
+#: read-cache.c:1726
 #, c-format
-msgid "invalid branch name: %s = %s"
-msgstr "geçersiz dal adı: %s = %s"
+msgid "bad index version %d"
+msgstr "hatalı indeks sürümü %d"
 
-#: refs.c:674
-#, c-format
-msgid "ignoring dangling symref %s"
-msgstr "sarkan sembolik başvuru %s yok sayılıyor"
+#: read-cache.c:1735
+msgid "bad index file sha1 signature"
+msgstr "hatalı indeks dosyası sha1 imzası"
 
-#: refs.c:911
+#: read-cache.c:1765
 #, c-format
-msgid "log for ref %s has gap after %s"
-msgstr "%s başvurusu için olan günlükte %s sonrasında boşluk var"
+msgid "index uses %.4s extension, which we do not understand"
+msgstr "indeks bizim anlamadığımız %.4s imzası kullanıyor"
 
-#: refs.c:917
+#: read-cache.c:1767
 #, c-format
-msgid "log for ref %s unexpectedly ended on %s"
-msgstr ""
-"%s başvurusu için olan günlük %s konumunda beklenmedik bir biçimde sonlandı"
+msgid "ignoring %.4s extension"
+msgstr "%.4s uzantısı yok sayılıyor"
 
-#: refs.c:976
+#: read-cache.c:1804
 #, c-format
-msgid "log for %s is empty"
-msgstr "%s için olan günlük boş"
+msgid "unknown index entry format 0x%08x"
+msgstr "bilinmeyen indeks girdisi biçimi 0x%08x"
 
-#: refs.c:1068
+#: read-cache.c:1820
 #, c-format
-msgid "refusing to update ref with bad name '%s'"
-msgstr "hatalı ada iye '%s' başvurusunu güncelleme reddediliyor"
+msgid "malformed name field in the index, near path '%s'"
+msgstr "indekste hatalı oluşturulmuş ad alanı, '%s' yolu yakınında"
 
-#: refs.c:1139
-#, c-format
-msgid "update_ref failed for ref '%s': %s"
-msgstr "'%s' başvurusu için update_ref başarısız oldu: %s"
+#: read-cache.c:1877
+msgid "unordered stage entries in index"
+msgstr "indekste sırasız hazırlama alanı girdileri"
 
-#: refs.c:1963
+#: read-cache.c:1880
 #, c-format
-msgid "multiple updates for ref '%s' not allowed"
-msgstr "'%s' başvurusu için birden çok güncellemeye izin verilmiyor"
+msgid "multiple stage entries for merged file '%s'"
+msgstr "birleştirilmiş dosya '%s' için çoklu hazırlama alanı girdileri"
 
-#: refs.c:2043
-msgid "ref updates forbidden inside quarantine environment"
-msgstr "başvuru güncellemeleri karantina ortamı içinde yasak"
+#: read-cache.c:1883
+#, c-format
+msgid "unordered stage entries for '%s'"
+msgstr "'%s' için sırasız hazırlama alanı girdileri"
 
-#: refs.c:2054
-msgid "ref updates aborted by hook"
-msgstr "başvuru güncellemeleri kanca tarafından iptal edildi"
+#: read-cache.c:1989 read-cache.c:2280 rerere.c:549 rerere.c:583 rerere.c:1095
+#: submodule.c:1634 builtin/add.c:546 builtin/check-ignore.c:181
+#: builtin/checkout.c:504 builtin/checkout.c:690 builtin/clean.c:991
+#: builtin/commit.c:364 builtin/diff-tree.c:122 builtin/grep.c:505
+#: builtin/mv.c:146 builtin/reset.c:247 builtin/rm.c:290
+#: builtin/submodule--helper.c:332
+msgid "index file corrupt"
+msgstr "indeks dosyası hasar görmüş"
 
-#: refs.c:2154 refs.c:2184
+#: read-cache.c:2133
 #, c-format
-msgid "'%s' exists; cannot create '%s'"
-msgstr "'%s' mevcut; '%s' oluşturulamıyor"
+msgid "unable to create load_cache_entries thread: %s"
+msgstr "load_cache_entries iş parçacığı oluşturulamıyor: %s"
 
-#: refs.c:2160 refs.c:2195
+#: read-cache.c:2146
 #, c-format
-msgid "cannot process '%s' and '%s' at the same time"
-msgstr "'%s' ve '%s' aynı anda işlenemiyor"
+msgid "unable to join load_cache_entries thread: %s"
+msgstr "load_cache_entries iş parçacığı ucu birleştirilemiyor: %s"
 
-#: refs/files-backend.c:1228
+#: read-cache.c:2179
 #, c-format
-msgid "could not remove reference %s"
-msgstr "%s başvurusu kaldırılamadı"
+msgid "%s: index file open failed"
+msgstr "%s: indeks dosyası açılamadı"
 
-#: refs/files-backend.c:1242 refs/packed-backend.c:1542
-#: refs/packed-backend.c:1552
+#: read-cache.c:2183
 #, c-format
-msgid "could not delete reference %s: %s"
-msgstr "%s başvurusu silinemedi: %s"
+msgid "%s: cannot stat the open index"
+msgstr "%s: açık indeksin bilgileri alınamıyor"
 
-#: refs/files-backend.c:1245 refs/packed-backend.c:1555
+#: read-cache.c:2187
 #, c-format
-msgid "could not delete references: %s"
-msgstr "başvurular silinemedi: %s"
+msgid "%s: index file smaller than expected"
+msgstr "%s: indeks dosyası beklenenden daha küçük"
 
-#: refspec.c:170
+#: read-cache.c:2191
 #, c-format
-msgid "invalid refspec '%s'"
-msgstr "geçersiz başvuru belirteci '%s'"
+msgid "%s: unable to map index file"
+msgstr "%s: indeks dosyası eşlemlenemiyor"
 
-#: remote.c:351
+#: read-cache.c:2233
 #, c-format
-msgid "config remote shorthand cannot begin with '/': %s"
-msgstr "uzak konum yapılandırma stenografisi '/' ile başlayamaz: %s"
-
-#: remote.c:399
-msgid "more than one receivepack given, using the first"
-msgstr "birden fazla receivepack verildi, birincisi kullanılıyor"
-
-#: remote.c:407
-msgid "more than one uploadpack given, using the first"
-msgstr "birden fazla uploadpack verildi, birincisi kullanılıyor"
+msgid "unable to create load_index_extensions thread: %s"
+msgstr "load_index_extensions iş parçacığı oluşturulamıyor: %s"
 
-#: remote.c:590
+#: read-cache.c:2260
 #, c-format
-msgid "Cannot fetch both %s and %s to %s"
-msgstr "Hem %s hem %s şuraya getirilemiyor: %s"
+msgid "unable to join load_index_extensions thread: %s"
+msgstr "load_index_extensions iş parçacığı ucu birleştirilemiyor: %s"
 
-#: remote.c:594
+#: read-cache.c:2292
 #, c-format
-msgid "%s usually tracks %s, not %s"
-msgstr "%s genelde %s ögesini izler, %s değil"
+msgid "could not freshen shared index '%s'"
+msgstr "paylaşılan indeks '%s' tazelenemedi"
 
-#: remote.c:598
+#: read-cache.c:2339
 #, c-format
-msgid "%s tracks both %s and %s"
-msgstr "%s hem %s hem %s ögelerini izler"
+msgid "broken index, expect %s in %s, got %s"
+msgstr "bozuk indeks, %s bekleniyordu (%s içinde), %s alındı"
 
-#: remote.c:666
+#: read-cache.c:3035 strbuf.c:1171 wrapper.c:633 builtin/merge.c:1141
 #, c-format
-msgid "key '%s' of pattern had no '*'"
-msgstr "dizginin '%s' anahtarında '*' yoktu"
+msgid "could not close '%s'"
+msgstr "'%s' kapatılamadı"
 
-#: remote.c:676
+#: read-cache.c:3138 sequencer.c:2487 sequencer.c:4239
 #, c-format
-msgid "value '%s' of pattern has no '*'"
-msgstr "dizginin '%s' değerinde '*' yok"
+msgid "could not stat '%s'"
+msgstr "'%s' bilgileri alınamadı"
 
-#: remote.c:1073
+#: read-cache.c:3151
 #, c-format
-msgid "src refspec %s does not match any"
-msgstr "kaynak başvuru belirteci %s başka hiçbir şeyle eşleşmiyor"
+msgid "unable to open git dir: %s"
+msgstr "git dizini açılamıyor: %s"
 
-#: remote.c:1078
+#: read-cache.c:3163
 #, c-format
-msgid "src refspec %s matches more than one"
-msgstr "kaynak başvuru belirteci %s birden fazlası ile eşleşiyor"
+msgid "unable to unlink: %s"
+msgstr "bağlantı kesilemiyor: %s"
 
-#. TRANSLATORS: "matches '%s'%" is the <dst> part of "git push
-#. <remote> <src>:<dst>" push, and "being pushed ('%s')" is
-#. the <src>.
-#.
-#: remote.c:1093
+#: read-cache.c:3188
 #, c-format
-msgid ""
-"The destination you provided is not a full refname (i.e.,\n"
-"starting with \"refs/\"). We tried to guess what you meant by:\n"
-"\n"
-"- Looking for a ref that matches '%s' on the remote side.\n"
-"- Checking if the <src> being pushed ('%s')\n"
-"  is a ref in \"refs/{heads,tags}/\". If so we add a corresponding\n"
-"  refs/{heads,tags}/ prefix on the remote side.\n"
-"\n"
-"Neither worked, so we gave up. You must fully qualify the ref."
-msgstr ""
-"Sağladığınız kaynak tam bir başvuru belirteci değil (örneğin \"refs/\"\n"
-"ile başlamıyor. Bununla ne demek istediğinizi bulabilmek için:\n"
-"\n"
-"- Uzak konumda '%s' ile eşleşen bir başvuru aradık.\n"
-"- İtilen <kaynak>'ın ('%s') \"refs/{heads,tags}/\" içinde bir\n"
-"  başvuru olup olmadığına baktık. Eğer öyleyse uzak konum tarafında\n"
-"  eşleşen bir refs/{heads,tags}/ öneki ekledik.\n"
-"\n"
-"Hiçbiri işe yaramadı, biz de bıraktık. Başvuruyu tam olarak "
-"nitelendirmelisiniz."
+msgid "cannot fix permission bits on '%s'"
+msgstr "'%s' üzerindeki izin bitleri onarılamıyor"
 
-#: remote.c:1113
+#: read-cache.c:3337
 #, c-format
+msgid "%s: cannot drop to stage #0"
+msgstr "%s: #0 numaralı hazırlama alanına bırakılamıyor"
+
+#: rebase-interactive.c:11
 msgid ""
-"The <src> part of the refspec is a commit object.\n"
-"Did you mean to create a new branch by pushing to\n"
-"'%s:refs/heads/%s'?"
+"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 ""
-"Başvuru belirtecinin <kaynak> kısmı bir işleme nesnesi.\n"
-"'%s:refs/heads/%s' konumuna iterek yeni bir dal mı\n"
-"oluşturmak istediniz?"
+"Bunu 'git rebase --edit-todo' ile düzeltebilir ve ardından 'git rebase --"
+"continue' yapabilirsiniz.\n"
+"Yeniden temellendirmeyi durdurmak isterseniz 'git rebase --abort' yapın.\n"
 
-#: remote.c:1118
+#: rebase-interactive.c:33
 #, c-format
 msgid ""
-"The <src> part of the refspec is a tag object.\n"
-"Did you mean to create a new tag by pushing to\n"
-"'%s:refs/tags/%s'?"
+"unrecognized setting %s for option rebase.missingCommitsCheck. Ignoring."
 msgstr ""
-"Başvuru belirtecinin <kaynak> kısmı bir etiket nesnesi.\n"
-"'%s:refs/tags/%s' konumuna iterek yeni bir etiket mi\n"
-"oluşturmak istediniz?"
+"rebase.missingCommitsCheck seçeneği için tanımlanamayan %s ayarı. Yok "
+"sayılıyor."
 
-#: remote.c:1123
-#, c-format
+#: rebase-interactive.c:42
 msgid ""
-"The <src> part of the refspec is a tree object.\n"
-"Did you mean to tag a new tree by pushing to\n"
-"'%s:refs/tags/%s'?"
+"\n"
+"Commands:\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"
+"b, break = stop here (continue rebase later with 'git rebase --continue')\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 ""
-"Başvuru belirtecinin <kaynak> kısmı bir ağaç nesnesi.\n"
-"'%s:refs/tags/%s' konumuna iterek yeni bir ağaç mı\n"
-"etiketlemek istediniz?"
+"\n"
+"Komutlar:\n"
+"p, pick <işleme> = işlemeyi kullan\n"
+"r, reword <işleme> = işlemeyi kullan; ancak işleme iletisini düzenle\n"
+"e, edit <işleme> = işlemeyi kullan; ancak değiştirmek için dur\n"
+"s, squash <işleme> = işlemeyi kullan; ancak önceki işleme içine karıştır\n"
+"f, fixup <işleme> = \"squash\" gibi; ancak bu işlemenin günlük iletisini at\n"
+"x, exec <komut> = komutu (satırın geri kalanı) kabuk kullanarak çalıştır\n"
+"b, break = burada dur (daha sonra sürdürmek için 'git rebase --continue')\n"
+"d, drop <işleme> = işlemeyi kaldır\n"
+"l, label <etiket> = geçerli HEAD'i bir ad ile etiketle\n"
+"t, reset <etiket> = HEAD'i bir etikete sıfırla\n"
+"m, merge [-C <işleme> | -c <işleme>] <etiket> [# <teksatır>]\n"
+".       orijinal birleştirme işlemesi iletisini kullanarak bir\n"
+".       birleştirme işlemesi oluştur (veya teksatır, eğer bir orijinal\n"
+".       birleştirme işlemesi belirtilmemişse). İşleme iletisini yeniden\n"
+".       yazmak için -c <işleme> kullanın.\n"
+"\n"
+"Bu satırlar yeniden sıralanabilirler, yukarıdan aşağıya çalıştırılırlar.\n"
 
-#: remote.c:1128
+#: rebase-interactive.c:63
 #, c-format
+msgid "Rebase %s onto %s (%d command)"
+msgid_plural "Rebase %s onto %s (%d commands)"
+msgstr[0] "%s ögesini %s üzerine yeniden temellendir (%d komut)"
+msgstr[1] "%s ögesini %s üzerine yeniden temellendir (%d komut)"
+
+#: rebase-interactive.c:72 git-rebase--preserve-merges.sh:218
 msgid ""
-"The <src> part of the refspec is a blob object.\n"
-"Did you mean to tag a new blob by pushing to\n"
-"'%s:refs/tags/%s'?"
+"\n"
+"Do not remove any line. Use 'drop' explicitly to remove a commit.\n"
 msgstr ""
-"Başvuru belirtecinin <kaynak> kısmı ikili bir nesne.\n"
-"'%s:refs/tags/%s' konumuna iterek yeni ikili bir nesne mi\n"
-"etiketlemek istediniz?"
+"\n"
+"Hiçbir satırı kaldırmayın. Bir işlemeyi kaldırmak için 'drop'u açıkça "
+"kullanın.\n"
+
+#: rebase-interactive.c:75 git-rebase--preserve-merges.sh:222
+msgid ""
+"\n"
+"If you remove a line here THAT COMMIT WILL BE LOST.\n"
+msgstr ""
+"\n"
+"Buradaki bir satırı kaldırırsanız İŞLEME KAYBOLUR.\n"
+
+#: rebase-interactive.c:81 git-rebase--preserve-merges.sh:861
+msgid ""
+"\n"
+"You are editing the todo file of an ongoing interactive rebase.\n"
+"To continue rebase after editing, run:\n"
+"    git rebase --continue\n"
+"\n"
+msgstr ""
+"\n"
+"Sürmekte olan bir etkileşimli yeniden temellendirmenin yapılacaklar "
+"dosyasını düzenlemektesiniz.\n"
+"Düzenlemenin ardından yeniden temellendirmeyi sürdürmek için şunu kullanın:\n"
+"\tgit rebase --continue\n"
+"\n"
+
+#: rebase-interactive.c:86 git-rebase--preserve-merges.sh:938
+msgid ""
+"\n"
+"However, if you remove everything, the rebase will be aborted.\n"
+"\n"
+msgstr ""
+"\n"
+"Ancak tümünü kaldırırsanız yeniden temellendirme iptal edilecektir.\n"
+"\n"
 
-#: remote.c:1164
+#: rebase-interactive.c:110 rerere.c:469 rerere.c:676 sequencer.c:3615
+#: sequencer.c:3641 sequencer.c:5424 builtin/fsck.c:329 builtin/rebase.c:272
 #, c-format
-msgid "%s cannot be resolved to branch"
-msgstr "%s dala çözülemiyor"
+msgid "could not write '%s'"
+msgstr "'%s' yazılamadı"
 
-#: remote.c:1175
+#: rebase-interactive.c:116 builtin/rebase.c:204 builtin/rebase.c:230
+#: builtin/rebase.c:254
 #, c-format
-msgid "unable to delete '%s': remote ref does not exist"
-msgstr "'%s' silinemiyor: uzak başvuru yok"
+msgid "could not write '%s'."
+msgstr "'%s' yazılamadı."
 
-#: remote.c:1187
+#: rebase-interactive.c:193
 #, c-format
-msgid "dst refspec %s matches more than one"
-msgstr "birden çok hedef başvuru belirteci %s eşleşmesi"
+msgid ""
+"Warning: some commits may have been dropped accidentally.\n"
+"Dropped commits (newer to older):\n"
+msgstr ""
+"Uyarı: Bazı işlemeler yanlışlıkla bırakılmış olabilir.\n"
+"Bırakılan işlemeler: (yeniden eskiye):\n"
 
-#: remote.c:1194
+#: rebase-interactive.c:200
 #, c-format
-msgid "dst ref %s receives from more than one src"
-msgstr "hedef başvurusu %s birden çok kaynaktan alıyor"
+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"
+"The possible behaviours are: ignore, warn, error.\n"
+"\n"
+msgstr ""
+"Bu iletiden kaçınmak için, bir işlemeyi kaldırırken açıkça \"drop\" "
+"kullanın.\n"
+"Uyarıların düzeyini değiştirmek için 'git config rebase.missingCommitsCheck' "
+"kullanın.\n"
+"Kullanılabilir davranışlar: ignore, warn, error.\n"
+"\n"
 
-#: remote.c:1714 remote.c:1815
-msgid "HEAD does not point to a branch"
-msgstr "HEAD bir dala işaret etmiyor"
+#: rebase-interactive.c:233 rebase-interactive.c:238 sequencer.c:2402
+#: builtin/rebase.c:190 builtin/rebase.c:215 builtin/rebase.c:241
+#: builtin/rebase.c:266
+#, c-format
+msgid "could not read '%s'."
+msgstr "'%s' okunamadı."
+
+#: ref-filter.c:42 wt-status.c:1975
+msgid "gone"
+msgstr "gitti"
 
-#: remote.c:1723
+#: ref-filter.c:43
 #, c-format
-msgid "no such branch: '%s'"
-msgstr "böyle bir dal yok: '%s'"
+msgid "ahead %d"
+msgstr "%d önünde"
 
-#: remote.c:1726
+#: ref-filter.c:44
 #, c-format
-msgid "no upstream configured for branch '%s'"
-msgstr "'%s' dalı için üstkaynak yapılandırılmamış"
+msgid "behind %d"
+msgstr "%d arkasında"
 
-#: remote.c:1732
+#: ref-filter.c:45
 #, c-format
-msgid "upstream branch '%s' not stored as a remote-tracking branch"
-msgstr "üstkaynak dalı '%s' bir uzak izleme dalı olarak depolanmıyor"
+msgid "ahead %d, behind %d"
+msgstr "%d önünde, %d arkasında"
 
-#: remote.c:1747
+#: ref-filter.c:175
 #, c-format
-msgid "push destination '%s' on remote '%s' has no local tracking branch"
-msgstr "'%s' itme hedefinin ('%s' uzak konumunda) yerel izleme dalı yok"
+msgid "expected format: %%(color:<color>)"
+msgstr "beklenen biçim: %%(color:<renk>)"
 
-#: remote.c:1759
+#: ref-filter.c:177
 #, c-format
-msgid "branch '%s' has no remote for pushing"
-msgstr "'%s' dalının itme için uzak konumu yok"
+msgid "unrecognized color: %%(color:%s)"
+msgstr "tanımlanamayan renk: %%(color:%s)"
 
-#: remote.c:1769
+#: ref-filter.c:199
 #, c-format
-msgid "push refspecs for '%s' do not include '%s'"
-msgstr "'%s' için olan başvuru belirteçleri '%s' içermiyor"
+msgid "Integer value expected refname:lstrip=%s"
+msgstr "Tamsayı değeri şunu bekliyordu: refname:lstrip=%s"
 
-#: remote.c:1782
-msgid "push has no destination (push.default is 'nothing')"
-msgstr "itilecek bir hedef yok (push.default: 'nothing')"
+#: ref-filter.c:203
+#, c-format
+msgid "Integer value expected refname:rstrip=%s"
+msgstr "Tamsayı değeri şunu bekliyordu: refname:rstrip=%s"
 
-#: remote.c:1804
-msgid "cannot resolve 'simple' push to a single destination"
-msgstr "tek bir konuma 'simple' itme çözülemiyor"
+#: ref-filter.c:205
+#, c-format
+msgid "unrecognized %%(%s) argument: %s"
+msgstr "tanımlanamayan %%(%s) argümanı: %s"
 
-#: remote.c:1933
+#: ref-filter.c:260
 #, c-format
-msgid "couldn't find remote ref %s"
-msgstr "%s uzak başvurusu bulunamadı"
+msgid "%%(objecttype) does not take arguments"
+msgstr "%%(objecttype) argüman almıyor"
 
-#: remote.c:1946
+#: ref-filter.c:282
 #, c-format
-msgid "* Ignoring funny ref '%s' locally"
-msgstr "* Eğlenceli başvuru '%s' yerel olarak yok sayılıyor"
+msgid "unrecognized %%(objectsize) argument: %s"
+msgstr "tanımlanamayan %%(objectsize) argümanı: %s"
 
-#: remote.c:2109
+#: ref-filter.c:290
 #, c-format
-msgid "Your branch is based on '%s', but the upstream is gone.\n"
-msgstr "Dalınız '%s' temelli; ancak üstkaynak kaybolmuş.\n"
+msgid "%%(deltabase) does not take arguments"
+msgstr "%%(deltabase) argüman almıyor"
 
-#: remote.c:2113
-msgid "  (use \"git branch --unset-upstream\" to fixup)\n"
-msgstr "  (düzeltmek için \"git branch --unset-upstream\" kullan)\n"
+#: ref-filter.c:302
+#, c-format
+msgid "%%(body) does not take arguments"
+msgstr "%%(body) argüman almıyor"
 
-#: remote.c:2116
+#: ref-filter.c:315
 #, c-format
-msgid "Your branch is up to date with '%s'.\n"
-msgstr "Dalınız '%s' ile güncel.\n"
+msgid "unrecognized %%(subject) argument: %s"
+msgstr "tanımlanamayan %%(subject) argümanı: %s"
 
-#: remote.c:2120
+#: ref-filter.c:334
 #, c-format
-msgid "Your branch and '%s' refer to different commits.\n"
-msgstr "Sizin dalınız ve '%s' başka işlemelere başvuruyor.\n"
+msgid "expected %%(trailers:key=<value>)"
+msgstr "%%(trailers:key=<değer>) bekleniyordu"
 
-#: remote.c:2123
+#: ref-filter.c:336
 #, c-format
-msgid "  (use \"%s\" for details)\n"
-msgstr "  (ayrıntılar için \"%s\" kullanın)\n"
+msgid "unknown %%(trailers) argument: %s"
+msgstr "bilinmeyen %%(trailers) argümanı: %s"
 
-#: remote.c:2127
+#: ref-filter.c:367
 #, 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] "Dalınız '%s' dalından %d işleme ileride.\n"
-msgstr[1] "Dalınız '%s' dalından %d işleme ileride.\n"
+msgid "positive value expected contents:lines=%s"
+msgstr "pozitif değer şunu bekliyordu: contents:lines=%s"
 
-#: remote.c:2133
-msgid "  (use \"git push\" to publish your local commits)\n"
-msgstr "  (yerel işlemelerinizi yayımlamak için \"git push\" kullanın)\n"
+#: ref-filter.c:369
+#, c-format
+msgid "unrecognized %%(contents) argument: %s"
+msgstr "tanımlanamayan %%(contents) argümanı: %s"
 
-#: remote.c:2136
+#: ref-filter.c:384
 #, 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] "Dalınız '%s' dalından %d işleme geride ve ileri sarılabilir.\n"
-msgstr[1] "Dalınız '%s' dalından %d işleme geride ve ileri sarılabilir.\n"
+msgid "positive value expected '%s' in %%(%s)"
+msgstr "pozitif değer şurada '%s' bekliyordu: %%(%s)"
 
-#: remote.c:2144
-msgid "  (use \"git pull\" to update your local branch)\n"
-msgstr "  (yerel dalınızı güncellemek için \"git pull\" kullanın)\n"
+#: ref-filter.c:388
+#, c-format
+msgid "unrecognized argument '%s' in %%(%s)"
+msgstr "şurada tanımlanamayan argüman '%s': %%(%s)"
 
-#: remote.c:2147
+#: ref-filter.c:402
 #, c-format
-msgid ""
-"Your branch and '%s' have diverged,\n"
-"and have %d and %d different commit each, respectively.\n"
-msgid_plural ""
-"Your branch and '%s' have diverged,\n"
-"and have %d and %d different commits each, respectively.\n"
-msgstr[0] ""
-"Sizin dalınız ve '%s' birbirinden uzaklaşmış ve sırasıyla\n"
-"her birinde %d ve %d işleme var.\n"
-msgstr[1] ""
-"Sizin dalınız ve '%s' birbirinden uzaklaşmış ve sırasıyla\n"
-"her birinde %d ve %d işleme var.\n"
+msgid "unrecognized email option: %s"
+msgstr "tanımlanamayan e-posta seçeneği: %s"
 
-#: remote.c:2157
-msgid "  (use \"git pull\" to merge the remote branch into yours)\n"
-msgstr "  (uzak dalı kendi dalınıza birleştirmek için \"git pull\" kullanın)\n"
+#: ref-filter.c:432
+#, c-format
+msgid "expected format: %%(align:<width>,<position>)"
+msgstr "beklenen biçim: %%(align:<genişlik>,<konum>)"
 
-#: remote.c:2349
+#: ref-filter.c:444
 #, c-format
-msgid "cannot parse expected object name '%s'"
-msgstr "beklenen nesne adı '%s' ayrıştırılamıyor"
+msgid "unrecognized position:%s"
+msgstr "tanımlanamayan konum:%s"
 
-#: replace-object.c:21
+#: ref-filter.c:451
 #, c-format
-msgid "bad replace ref name: %s"
-msgstr "hatalı değiştirme başvurusu adı: %s"
+msgid "unrecognized width:%s"
+msgstr "tanımlanamayan genişlik:%s"
 
-#: replace-object.c:30
+#: ref-filter.c:460
 #, c-format
-msgid "duplicate replace ref: %s"
-msgstr "yinelenmiş değiştirme başvurusu: %s"
+msgid "unrecognized %%(align) argument: %s"
+msgstr "tanımlanamayan %%(align) argümanı: %s"
 
-#: replace-object.c:82
+#: ref-filter.c:468
 #, c-format
-msgid "replace depth too high for object %s"
-msgstr "%s nesnesi için değiştirme derinliği pek yüksek"
+msgid "positive width expected with the %%(align) atom"
+msgstr "pozitif genişlik %%(align) ögeciği ile birlikte bekleniyordu"
 
-#: rerere.c:217 rerere.c:226 rerere.c:229
-msgid "corrupt MERGE_RR"
-msgstr "hasar görmüş MERGE_RR"
+#: ref-filter.c:486
+#, c-format
+msgid "unrecognized %%(if) argument: %s"
+msgstr "tanımlanamayan %%(if) argümanı: %s"
 
-#: rerere.c:264 rerere.c:269
-msgid "unable to write rerere record"
-msgstr "rerere kaydı yazılamıyor"
+#: ref-filter.c:588
+#, c-format
+msgid "malformed field name: %.*s"
+msgstr "hatalı oluşturulmuş alan adı: %.*s"
 
-#: rerere.c:495
+#: ref-filter.c:615
 #, c-format
-msgid "there were errors while writing '%s' (%s)"
-msgstr "'%s' yazılırken hatalar vardı (%s)"
+msgid "unknown field name: %.*s"
+msgstr "bilinmeyen alan adı: %.*s"
 
-#: rerere.c:498
+#: ref-filter.c:619
 #, c-format
-msgid "failed to flush '%s'"
-msgstr "'%s' floş yapılamadı"
+msgid ""
+"not a git repository, but the field '%.*s' requires access to object data"
+msgstr ""
+"bir git deposu değil; ancak '%.*s' alanı nesne verisine erişim gerektiriyor"
 
-#: rerere.c:503 rerere.c:1039
+#: ref-filter.c:743
 #, c-format
-msgid "could not parse conflict hunks in '%s'"
-msgstr "'%s' içindeki çakışan parçalar ayrıştırılamadı"
+msgid "format: %%(if) atom used without a %%(then) atom"
+msgstr "biçim: %%(if) ögeciği bir %%(then) ögeciği olmadan kullanıldı"
 
-#: rerere.c:684
+#: ref-filter.c:806
 #, c-format
-msgid "failed utime() on '%s'"
-msgstr "'%s' üzerinde utime() başarısız"
+msgid "format: %%(then) atom used without an %%(if) atom"
+msgstr "biçim: %%(then) ögeciği bir %%(if) ögeciği olmadan kullanıldı"
 
-#: rerere.c:694
+#: ref-filter.c:808
 #, c-format
-msgid "writing '%s' failed"
-msgstr "'%s' yazılamadı"
+msgid "format: %%(then) atom used more than once"
+msgstr "biçim: %%(then) ögeciği birden çok kez kullanıldı"
 
-#: rerere.c:714
+#: ref-filter.c:810
 #, c-format
-msgid "Staged '%s' using previous resolution."
-msgstr "'%s' bir önceki çözüm kullanılarak hazırlama alanına alındı"
+msgid "format: %%(then) atom used after %%(else)"
+msgstr "biçim: %%(then) ögeciği %%(else) ögeciğinden sonra kullanıldı"
 
-#: rerere.c:753
+#: ref-filter.c:838
 #, c-format
-msgid "Recorded resolution for '%s'."
-msgstr "'%s' için çözüm kaydedildi."
+msgid "format: %%(else) atom used without an %%(if) atom"
+msgstr "biçim: %%(else) ögeciği bir %%(if) ögeciği olmadan kullanıldı"
 
-#: rerere.c:788
+#: ref-filter.c:840
 #, c-format
-msgid "Resolved '%s' using previous resolution."
-msgstr "'%s' bir önceki çözüm kullanılarak çözüldü."
+msgid "format: %%(else) atom used without a %%(then) atom"
+msgstr "biçim: %%(else) ögeciği bir %%(then) ögeciği olmadan kullanıldı"
 
-#: rerere.c:803
+#: ref-filter.c:842
 #, c-format
-msgid "cannot unlink stray '%s'"
-msgstr "'%s' başıboşunun bağlantısı kesilemiyor"
+msgid "format: %%(else) atom used more than once"
+msgstr "biçim: %%(else) ögeciği birden çok kez kullanıldı"
 
-#: rerere.c:807
+#: ref-filter.c:857
 #, c-format
-msgid "Recorded preimage for '%s'"
-msgstr "'%s' için öngörüntü kaydedildi"
+msgid "format: %%(end) atom used without corresponding atom"
+msgstr "biçim: %%(end) ögeciği eş ögeciği olmadan kullanıldı"
 
-#: rerere.c:881 submodule.c:2082 builtin/log.c:1992
-#: builtin/submodule--helper.c:1878 builtin/submodule--helper.c:1890
+#: ref-filter.c:914
 #, c-format
-msgid "could not create directory '%s'"
-msgstr "'%s' dizini oluşturulamadı"
+msgid "malformed format string %s"
+msgstr "hatalı oluşturulmuş biçim dizisi %s"
 
-#: rerere.c:1057
+#: ref-filter.c:1555
 #, c-format
-msgid "failed to update conflicted state in '%s'"
-msgstr "'%s' içindeki çakışan durum güncellenemedi"
+msgid "(no branch, rebasing %s)"
+msgstr "(dal yok, %s yeniden temellendiriliyor)"
 
-#: rerere.c:1068 rerere.c:1075
+#: ref-filter.c:1558
 #, c-format
-msgid "no remembered resolution for '%s'"
-msgstr "'%s' için hatırlanan çözüm yok"
+msgid "(no branch, rebasing detached HEAD %s)"
+msgstr "(dal yok, ayrık HEAD %s yeniden temellendiriliyor)"
 
-#: rerere.c:1077
+#: ref-filter.c:1561
 #, c-format
-msgid "cannot unlink '%s'"
-msgstr "'%s' bağlantısı kesilemiyor"
+msgid "(no branch, bisect started on %s)"
+msgstr "(dal yok, ikili arama %s üzerinde başladı)"
 
-#: rerere.c:1087
+#: ref-filter.c:1565
 #, c-format
-msgid "Updated preimage for '%s'"
-msgstr "'%s' için öngörüntü güncellendi"
+msgid "(HEAD detached at %s)"
+msgstr "(HEAD, %s konumunda ayrıldı)"
 
-#: rerere.c:1096
+#: ref-filter.c:1568
 #, c-format
-msgid "Forgot resolution for '%s'\n"
-msgstr "'%s' için çözüm unutuldu\n"
+msgid "(HEAD detached from %s)"
+msgstr "(HEAD, %s ögesinden ayrıldı)"
 
-#: rerere.c:1199
-msgid "unable to open rr-cache directory"
-msgstr "rr-cache dizini açılamıyor"
+#: ref-filter.c:1571
+msgid "(no branch)"
+msgstr "(dal yok)"
 
-#: reset.c:42
-msgid "could not determine HEAD revision"
-msgstr "HEAD revizyonu saptanamadı"
+#: ref-filter.c:1603 ref-filter.c:1812
+#, c-format
+msgid "missing object %s for %s"
+msgstr "eksik nesne %s (%s için)"
 
-#: reset.c:70 reset.c:76 sequencer.c:3460
+#: ref-filter.c:1613
 #, c-format
-msgid "failed to find tree of %s"
-msgstr "%s ögesinin ağacı bulunamadı"
+msgid "parse_object_buffer failed on %s for %s"
+msgstr "parse_object_buffer %s üzerinde başarısız oldu (%s için)"
 
-#: revision.c:2336
-msgid "--unpacked=<packfile> no longer supported"
-msgstr "--unpacked=<paketdosyası> artık desteklenmiyor"
+#: ref-filter.c:1996
+#, c-format
+msgid "malformed object at '%s'"
+msgstr "'%s' konumunda hatalı oluşturulmuş nesne"
 
-#: revision.c:2356
+#: ref-filter.c:2085
 #, c-format
-msgid "unknown value for --diff-merges: %s"
-msgstr "--diff-merges için bilinmeyen değer: %s"
+msgid "ignoring ref with broken name %s"
+msgstr "bozuk ada iye %s başvurusu yok sayılıyor"
 
-#: revision.c:2694
-msgid "your current branch appears to be broken"
-msgstr "geçerli dalınız bozuk gibi görünüyor"
+#: ref-filter.c:2090 refs.c:676
+#, c-format
+msgid "ignoring broken ref %s"
+msgstr "bozuk başvuru %s yok sayılıyor"
 
-#: revision.c:2697
+#: ref-filter.c:2430
 #, c-format
-msgid "your current branch '%s' does not have any commits yet"
-msgstr "geçerli dalınız '%s' içinde henüz bir işleme yok"
+msgid "format: %%(end) atom missing"
+msgstr "biçim: %%(end) ögeciği eksik"
 
-#: revision.c:2907
-msgid "-L does not yet support diff formats besides -p and -s"
-msgstr "-L, -p ve -s dışında başka diff biçimlerini henüz desteklemiyor"
+#: ref-filter.c:2529
+#, c-format
+msgid "malformed object name %s"
+msgstr "hatalı oluşturulmuş nesne adı %s"
 
-#: run-command.c:764
-msgid "open /dev/null failed"
-msgstr "/dev/null açılamadı"
+#: ref-filter.c:2534
+#, c-format
+msgid "option `%s' must point to a commit"
+msgstr "'%s' bir işlemeye işaret etmeli"
 
-#: run-command.c:1271
+#: refs.c:264
 #, c-format
-msgid "cannot create async thread: %s"
-msgstr "async iş parçacığı oluşturulamadı: %s"
+msgid "%s does not point to a valid object!"
+msgstr "%s geçerli bir nesneye işaret etmiyor!"
 
-#: run-command.c:1335
+#: refs.c:566
 #, c-format
 msgid ""
-"The '%s' hook was ignored because it's not set as executable.\n"
-"You can disable this warning with `git config advice.ignoredHook false`."
+"Using '%s' as the name for the initial branch. This default branch name\n"
+"is subject to change. To configure the initial branch name to use in all\n"
+"of your new repositories, which will suppress this warning, call:\n"
+"\n"
+"\tgit config --global init.defaultBranch <name>\n"
+"\n"
+"Names commonly chosen instead of 'master' are 'main', 'trunk' and\n"
+"'development'. The just-created branch can be renamed via this command:\n"
+"\n"
+"\tgit branch -m <name>\n"
 msgstr ""
-"'%s' kancası yok sayıldı; çünkü bir çalıştırılabilir olarak ayarlanmamış.\n"
-"Bu uyarıyı 'git config advice.ignoredHook false' ile kapatabilirsiniz."
-
-#: send-pack.c:146
-msgid "unexpected flush packet while reading remote unpack status"
-msgstr "uzak konum açım durumu okunurken beklenmedik floş paketi"
+"Başlangıç dal adı olarak %s kullanılıyor. Bu öntanımlı dal adı\n"
+"değiştirilebilir. Bu iletiyi kapatmak ve yeni depolarınızda kullanılacak\n"
+"başlangıç dal adını yapılandırmak için şu komutu kullanın:\n"
+"\n"
+"\tgit config --global init.defaultBranch <ad>\n"
+"\n"
+"'master' yerine kullanılan diğer yaygın dal adları 'main', 'trunk' ve/veya\n"
+"'development'tır. Yeni oluşturulan dal şu komutla yeniden adlandırılabilir:\n"
+"\n"
+"\tgit branch -m <ad>\n"
 
-#: send-pack.c:148
+#: refs.c:588
 #, c-format
-msgid "unable to parse remote unpack status: %s"
-msgstr "uzak konum açım durumu ayrıştırılamadı: %s"
+msgid "could not retrieve `%s`"
+msgstr "'%s' alınamadı"
 
-#: send-pack.c:150
+#: refs.c:598
 #, c-format
-msgid "remote unpack failed: %s"
-msgstr "uzak konum açımı başarısız: %s"
-
-#: send-pack.c:374
-msgid "failed to sign the push certificate"
-msgstr "itme sertifikası imzalanamadı"
+msgid "invalid branch name: %s = %s"
+msgstr "geçersiz dal adı: %s = %s"
 
-#: send-pack.c:467
-msgid "the receiving end does not support this repository's hash algorithm"
-msgstr "alıcı uç bu deponun sağlama algoritmasını desteklemiyor"
+#: refs.c:674
+#, c-format
+msgid "ignoring dangling symref %s"
+msgstr "sarkan sembolik başvuru %s yok sayılıyor"
 
-#: send-pack.c:476
-msgid "the receiving end does not support --signed push"
-msgstr "alıcı uç --signed itmeyi desteklemiyor"
+#: refs.c:922
+#, c-format
+msgid "log for ref %s has gap after %s"
+msgstr "%s başvurusu için olan günlükte %s sonrasında boşluk var"
 
-#: send-pack.c:478
-msgid ""
-"not sending a push certificate since the receiving end does not support --"
-"signed push"
+#: refs.c:929
+#, c-format
+msgid "log for ref %s unexpectedly ended on %s"
 msgstr ""
-"alıcı uç --signed itmeyi desteklemediğinden dolayı bir itme sertifikası "
-"gönderilmiyor"
-
-#: send-pack.c:490
-msgid "the receiving end does not support --atomic push"
-msgstr "alıcı uç --atomic itmeyi desteklemiyor"
-
-#: send-pack.c:495
-msgid "the receiving end does not support push options"
-msgstr "alıcı uç itme seçeneklerini desteklemiyor"
+"%s başvurusu için olan günlük %s konumunda beklenmedik bir biçimde sonlandı"
 
-#: sequencer.c:195
+#: refs.c:994
 #, c-format
-msgid "invalid commit message cleanup mode '%s'"
-msgstr "geçersiz işleme iletisi temizleme kipi '%s'"
+msgid "log for %s is empty"
+msgstr "%s için olan günlük boş"
 
-#: sequencer.c:323
+#: refs.c:1086
 #, c-format
-msgid "could not delete '%s'"
-msgstr "'%s' silinemedi"
+msgid "refusing to update ref with bad name '%s'"
+msgstr "hatalı ada iye '%s' başvurusunu güncelleme reddediliyor"
 
-#: sequencer.c:343 builtin/rebase.c:755 builtin/rebase.c:1596 builtin/rm.c:385
+#: refs.c:1157
 #, c-format
-msgid "could not remove '%s'"
-msgstr "'%s' kaldırılamadı"
-
-#: sequencer.c:353
-msgid "revert"
-msgstr "geri al"
-
-#: sequencer.c:355
-msgid "cherry-pick"
-msgstr "seç-al"
-
-#: sequencer.c:357
-msgid "rebase"
-msgstr "yeniden temellendirme"
+msgid "update_ref failed for ref '%s': %s"
+msgstr "'%s' başvurusu için update_ref başarısız oldu: %s"
 
-#: sequencer.c:359
+#: refs.c:2051
 #, c-format
-msgid "unknown action: %d"
-msgstr "bilinmeyen eylem: %d"
+msgid "multiple updates for ref '%s' not allowed"
+msgstr "'%s' başvurusu için birden çok güncellemeye izin verilmiyor"
 
-#: sequencer.c:418
-msgid ""
-"after resolving the conflicts, mark the corrected paths\n"
-"with 'git add <paths>' or 'git rm <paths>'"
-msgstr ""
-"çakışmaları çözdükten sonra doğrusu verilen yolları 'git add <yollar>'\n"
-"veya 'git rm <yollar>' ile imleyin"
+#: refs.c:2131
+msgid "ref updates forbidden inside quarantine environment"
+msgstr "başvuru güncellemeleri karantina ortamı içinde yasak"
 
-#: sequencer.c:421
-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 ""
-"çakışmaları çözdükten sonra doğrusu verilen yolları 'git add <yollar>'\n"
-"veya 'git rm <yollar>' ile imleyin ve çıkan sonucu\n"
-"'git commit' ile işleyin"
+#: refs.c:2142
+msgid "ref updates aborted by hook"
+msgstr "başvuru güncellemeleri kanca tarafından iptal edildi"
 
-#: sequencer.c:434 sequencer.c:3062
+#: refs.c:2242 refs.c:2272
 #, c-format
-msgid "could not lock '%s'"
-msgstr "'%s' kilitlenemedi"
+msgid "'%s' exists; cannot create '%s'"
+msgstr "'%s' mevcut; '%s' oluşturulamıyor"
 
-#: sequencer.c:436 sequencer.c:2861 sequencer.c:3066 sequencer.c:3080
-#: sequencer.c:3337 sequencer.c:5326 strbuf.c:1168 wrapper.c:631
+#: refs.c:2248 refs.c:2283
 #, c-format
-msgid "could not write to '%s'"
-msgstr "şuraya yazılamadı: '%s'"
-
-#: sequencer.c:441
-#, c-format
-msgid "could not write eol to '%s'"
-msgstr "satır sonu şuraya yazılamadı: '%s'"
+msgid "cannot process '%s' and '%s' at the same time"
+msgstr "'%s' ve '%s' aynı anda işlenemiyor"
 
-#: sequencer.c:446 sequencer.c:2866 sequencer.c:3068 sequencer.c:3082
-#: sequencer.c:3345
+#: refs/files-backend.c:1228
 #, c-format
-msgid "failed to finalize '%s'"
-msgstr "'%s' tamamlanamadı"
+msgid "could not remove reference %s"
+msgstr "%s başvurusu kaldırılamadı"
 
-#: sequencer.c:485
+#: refs/files-backend.c:1242 refs/packed-backend.c:1542
+#: refs/packed-backend.c:1552
 #, c-format
-msgid "your local changes would be overwritten by %s."
-msgstr "%s ile yerel değişikliklerinizin üzerine yazılacaktır."
-
-#: sequencer.c:489
-msgid "commit your changes or stash them to proceed."
-msgstr "İlerlemek için değişikliklerinizi işleyin veya zulalayın."
+msgid "could not delete reference %s: %s"
+msgstr "%s başvurusu silinemedi: %s"
 
-#: sequencer.c:521
+#: refs/files-backend.c:1245 refs/packed-backend.c:1555
 #, c-format
-msgid "%s: fast-forward"
-msgstr "%s: ileri sar"
+msgid "could not delete references: %s"
+msgstr "başvurular silinemedi: %s"
 
-#: sequencer.c:560 builtin/tag.c:566
+#: refspec.c:170
 #, c-format
-msgid "Invalid cleanup mode %s"
-msgstr "Geçersiz temizlik kipi %s"
+msgid "invalid refspec '%s'"
+msgstr "geçersiz başvuru belirteci '%s'"
 
-#. TRANSLATORS: %s will be "revert", "cherry-pick" or
-#. "rebase".
-#.
-#: sequencer.c:670
+#: remote.c:351
 #, c-format
-msgid "%s: Unable to write new index file"
-msgstr "%s: Yeni indeks dosyası yazılamıyor"
+msgid "config remote shorthand cannot begin with '/': %s"
+msgstr "uzak konum yapılandırma stenografisi '/' ile başlayamaz: %s"
 
-#: sequencer.c:687
-msgid "unable to update cache tree"
-msgstr "önbellek ağacı güncellenemiyor"
+#: remote.c:399
+msgid "more than one receivepack given, using the first"
+msgstr "birden fazla receivepack verildi, birincisi kullanılıyor"
 
-#: sequencer.c:701
-msgid "could not resolve HEAD commit"
-msgstr "HEAD işlemesi çözülemedi"
+#: remote.c:407
+msgid "more than one uploadpack given, using the first"
+msgstr "birden fazla uploadpack verildi, birincisi kullanılıyor"
 
-#: sequencer.c:781
+#: remote.c:590
 #, c-format
-msgid "no key present in '%.*s'"
-msgstr "'%.*s' içinde bir anahtar yok"
+msgid "Cannot fetch both %s and %s to %s"
+msgstr "Hem %s hem %s şuraya getirilemiyor: %s"
 
-#: sequencer.c:792
+#: remote.c:594
 #, c-format
-msgid "unable to dequote value of '%s'"
-msgstr "'%s' ögesinin tırnakları kaldırılamıyor"
+msgid "%s usually tracks %s, not %s"
+msgstr "%s genelde %s ögesini izler, %s değil"
 
-#: sequencer.c:829 wrapper.c:201 wrapper.c:371 builtin/am.c:710
-#: builtin/am.c:802 builtin/merge.c:1135 builtin/rebase.c:908
+#: remote.c:598
 #, c-format
-msgid "could not open '%s' for reading"
-msgstr "'%s' okuma için açılamadı"
-
-#: sequencer.c:839
-msgid "'GIT_AUTHOR_NAME' already given"
-msgstr "'GIT_AUTHOR_NAME' halihazırda verilmiş"
-
-#: sequencer.c:844
-msgid "'GIT_AUTHOR_EMAIL' already given"
-msgstr "'GIT_AUTHOR_EMAIL' halihazırda verilmiş"
-
-#: sequencer.c:849
-msgid "'GIT_AUTHOR_DATE' already given"
-msgstr "'GIT_AUTHOR_DATE' halihazırda verilmiş"
+msgid "%s tracks both %s and %s"
+msgstr "%s hem %s hem %s ögelerini izler"
 
-#: sequencer.c:853
+#: remote.c:666
 #, c-format
-msgid "unknown variable '%s'"
-msgstr "bilinmeyen değişken '%s'"
+msgid "key '%s' of pattern had no '*'"
+msgstr "dizginin '%s' anahtarında '*' yoktu"
 
-#: sequencer.c:858
-msgid "missing 'GIT_AUTHOR_NAME'"
-msgstr "'GIT_AUTHOR_NAME' eksik"
+#: remote.c:676
+#, c-format
+msgid "value '%s' of pattern has no '*'"
+msgstr "dizginin '%s' değerinde '*' yok"
 
-#: sequencer.c:860
-msgid "missing 'GIT_AUTHOR_EMAIL'"
-msgstr "'GIT_AUTHOR_EMAIL' eksik"
+#: remote.c:1083
+#, c-format
+msgid "src refspec %s does not match any"
+msgstr "kaynak başvuru belirteci %s başka hiçbir şeyle eşleşmiyor"
 
-#: sequencer.c:862
-msgid "missing 'GIT_AUTHOR_DATE'"
-msgstr "'GIT_AUTHOR_DATE' eksik"
+#: remote.c:1088
+#, c-format
+msgid "src refspec %s matches more than one"
+msgstr "kaynak başvuru belirteci %s birden fazlası ile eşleşiyor"
 
-#: sequencer.c:927
+#. TRANSLATORS: "matches '%s'%" is the <dst> part of "git push
+#. <remote> <src>:<dst>" push, and "being pushed ('%s')" is
+#. the <src>.
+#.
+#: remote.c:1103
 #, c-format
 msgid ""
-"you have staged changes in your working tree\n"
-"If these changes are meant to be squashed into the previous commit, run:\n"
-"\n"
-"  git commit --amend %s\n"
-"\n"
-"If they are meant to go into a new commit, run:\n"
-"\n"
-"  git commit %s\n"
+"The destination you provided is not a full refname (i.e.,\n"
+"starting with \"refs/\"). We tried to guess what you meant by:\n"
 "\n"
-"In both cases, once you're done, continue with:\n"
+"- Looking for a ref that matches '%s' on the remote side.\n"
+"- Checking if the <src> being pushed ('%s')\n"
+"  is a ref in \"refs/{heads,tags}/\". If so we add a corresponding\n"
+"  refs/{heads,tags}/ prefix on the remote side.\n"
 "\n"
-"  git rebase --continue\n"
+"Neither worked, so we gave up. You must fully qualify the ref."
 msgstr ""
-"Çalışma ağacınızda hazırlanmış değişiklikleriniz var.\n"
-"Eğer bu değişikliklerin bir önceki işlemeye eklenmesi\n"
-"gerekiyorsa şu komutu çalıştırın:\n"
-"\n"
-"\tgit commit --amend %s\n"
-"\n"
-"Yeni bir işleme yapmak istiyorsanız şu komutu çalıştırın:\n"
-"\n"
-"\tgit commit %s\n"
+"Sağladığınız kaynak tam bir başvuru belirteci değil (örneğin \"refs/\"\n"
+"ile başlamıyor. Bununla ne demek istediğinizi bulabilmek için:\n"
 "\n"
-"Her iki durumda da işiniz bittikten sonra şu komut ile sürdürün:\n"
+"- Uzak konumda '%s' ile eşleşen bir başvuru aradık.\n"
+"- İtilen <kaynak>'ın ('%s') \"refs/{heads,tags}/\" içinde bir\n"
+"  başvuru olup olmadığına baktık. Eğer öyleyse uzak konum tarafında\n"
+"  eşleşen bir refs/{heads,tags}/ öneki ekledik.\n"
 "\n"
-"\tgit rebase --continue\n"
+"Hiçbiri işe yaramadı, biz de bıraktık. Başvuruyu tam olarak "
+"nitelendirmelisiniz."
 
-#: sequencer.c:1208
-msgid "'prepare-commit-msg' hook failed"
-msgstr "'prepare-commit-msg' başarısız oldu"
+#: remote.c:1123
+#, c-format
+msgid ""
+"The <src> part of the refspec is a commit object.\n"
+"Did you mean to create a new branch by pushing to\n"
+"'%s:refs/heads/%s'?"
+msgstr ""
+"Başvuru belirtecinin <kaynak> kısmı bir işleme nesnesi.\n"
+"'%s:refs/heads/%s' konumuna iterek yeni bir dal mı\n"
+"oluşturmak istediniz?"
 
-#: sequencer.c:1214
+#: remote.c:1128
+#, c-format
 msgid ""
-"Your name and email address were configured automatically based\n"
-"on your username and hostname. Please check that they are accurate.\n"
-"You can suppress this message by setting them explicitly. Run the\n"
-"following command and follow the instructions in your editor to edit\n"
-"your configuration file:\n"
-"\n"
-"    git config --global --edit\n"
-"\n"
-"After doing this, you may fix the identity used for this commit with:\n"
-"\n"
-"    git commit --amend --reset-author\n"
+"The <src> part of the refspec is a tag object.\n"
+"Did you mean to create a new tag by pushing to\n"
+"'%s:refs/tags/%s'?"
 msgstr ""
-"Adınız ve e-posta adresiniz kullanıcı adınız ve makine adı temel alınarak\n"
-"kendiliğinden yapılandırıldı. Lütfen doğru olup olmadığını denetleyin.\n"
-"Bu iletiyi onları el ile belirterek gizleyebilirsiniz. Aşağıdaki komutu\n"
-"çalıştırın ve yapılandırma dosyanızı düzenlemek için düzenleyicinizdeki\n"
-"yönergeleri izleyin:\n"
-"\n"
-"\tgit config --global --edit\n"
-"\n"
-"Bundan sonra bu işleme için kullanılan kimliği düzeltmek isteyebilirsiniz:\n"
-"\n"
-"\tgit commit --amend --reset-author\n"
+"Başvuru belirtecinin <kaynak> kısmı bir etiket nesnesi.\n"
+"'%s:refs/tags/%s' konumuna iterek yeni bir etiket mi\n"
+"oluşturmak istediniz?"
 
-#: sequencer.c:1227
+#: remote.c:1133
+#, c-format
 msgid ""
-"Your name and email address were configured automatically based\n"
-"on your username and hostname. Please check that they are accurate.\n"
-"You can suppress this message by setting them explicitly:\n"
-"\n"
-"    git config --global user.name \"Your Name\"\n"
-"    git config --global user.email you@example.com\n"
-"\n"
-"After doing this, you may fix the identity used for this commit with:\n"
-"\n"
-"    git commit --amend --reset-author\n"
+"The <src> part of the refspec is a tree object.\n"
+"Did you mean to tag a new tree by pushing to\n"
+"'%s:refs/tags/%s'?"
 msgstr ""
-"Adınız ve e-posta adresiniz kullanıcı adınız ve makine adı temel alınarak\n"
-"kendiliğinden yapılandırıldı. Lütfen doğru olup olmadığını denetleyin.\n"
-"Bu iletiyi onları el ile belirterek gizleyebilirsiniz:\n"
-"\n"
-"\tgit config --global user.name \"Adınız\"\n"
-"\tgit config --global user.email \"siz@e-posta.com\"\n"
-"\n"
-"Bundan sonra bu işleme için kullanılan kimliği düzeltmek isteyebilirsiniz:\n"
-"\n"
-"\tgit commit --amend --reset-author\n"
+"Başvuru belirtecinin <kaynak> kısmı bir ağaç nesnesi.\n"
+"'%s:refs/tags/%s' konumuna iterek yeni bir ağaç mı\n"
+"etiketlemek istediniz?"
+
+#: remote.c:1138
+#, c-format
+msgid ""
+"The <src> part of the refspec is a blob object.\n"
+"Did you mean to tag a new blob by pushing to\n"
+"'%s:refs/tags/%s'?"
+msgstr ""
+"Başvuru belirtecinin <kaynak> kısmı ikili bir nesne.\n"
+"'%s:refs/tags/%s' konumuna iterek yeni ikili bir nesne mi\n"
+"etiketlemek istediniz?"
+
+#: remote.c:1174
+#, c-format
+msgid "%s cannot be resolved to branch"
+msgstr "%s dala çözülemiyor"
+
+#: remote.c:1185
+#, c-format
+msgid "unable to delete '%s': remote ref does not exist"
+msgstr "'%s' silinemiyor: uzak başvuru yok"
+
+#: remote.c:1197
+#, c-format
+msgid "dst refspec %s matches more than one"
+msgstr "birden çok hedef başvuru belirteci %s eşleşmesi"
+
+#: remote.c:1204
+#, c-format
+msgid "dst ref %s receives from more than one src"
+msgstr "hedef başvurusu %s birden çok kaynaktan alıyor"
+
+#: remote.c:1724 remote.c:1825
+msgid "HEAD does not point to a branch"
+msgstr "HEAD bir dala işaret etmiyor"
+
+#: remote.c:1733
+#, c-format
+msgid "no such branch: '%s'"
+msgstr "böyle bir dal yok: '%s'"
+
+#: remote.c:1736
+#, c-format
+msgid "no upstream configured for branch '%s'"
+msgstr "'%s' dalı için üstkaynak yapılandırılmamış"
+
+#: remote.c:1742
+#, c-format
+msgid "upstream branch '%s' not stored as a remote-tracking branch"
+msgstr "üstkaynak dalı '%s' bir uzak izleme dalı olarak depolanmıyor"
+
+#: remote.c:1757
+#, c-format
+msgid "push destination '%s' on remote '%s' has no local tracking branch"
+msgstr "'%s' itme hedefinin ('%s' uzak konumunda) yerel izleme dalı yok"
+
+#: remote.c:1769
+#, c-format
+msgid "branch '%s' has no remote for pushing"
+msgstr "'%s' dalının itme için uzak konumu yok"
 
-#: sequencer.c:1269
-msgid "couldn't look up newly created commit"
-msgstr "yeni yapılan işleme aranamadı"
+#: remote.c:1779
+#, c-format
+msgid "push refspecs for '%s' do not include '%s'"
+msgstr "'%s' için olan başvuru belirteçleri '%s' içermiyor"
 
-#: sequencer.c:1271
-msgid "could not parse newly created commit"
-msgstr "yeni yapılan işleme ayrıştırılamadı"
+#: remote.c:1792
+msgid "push has no destination (push.default is 'nothing')"
+msgstr "itilecek bir hedef yok (push.default: 'nothing')"
 
-#: sequencer.c:1317
-msgid "unable to resolve HEAD after creating commit"
-msgstr "HEAD, işleme yapıldıktan sonra çözülemiyor"
+#: remote.c:1814
+msgid "cannot resolve 'simple' push to a single destination"
+msgstr "tek bir konuma 'simple' itme çözülemiyor"
 
-#: sequencer.c:1319
-msgid "detached HEAD"
-msgstr "ayrık HEAD"
+#: remote.c:1943
+#, c-format
+msgid "couldn't find remote ref %s"
+msgstr "%s uzak başvurusu bulunamadı"
 
-#: sequencer.c:1323
-msgid " (root-commit)"
-msgstr " (kök işleme)"
+#: remote.c:1956
+#, c-format
+msgid "* Ignoring funny ref '%s' locally"
+msgstr "* Eğlenceli başvuru '%s' yerel olarak yok sayılıyor"
 
-#: sequencer.c:1344
-msgid "could not parse HEAD"
-msgstr "HEAD ayrıştırılamadı"
+#: remote.c:2119
+#, c-format
+msgid "Your branch is based on '%s', but the upstream is gone.\n"
+msgstr "Dalınız '%s' temelli; ancak üstkaynak kaybolmuş.\n"
+
+#: remote.c:2123
+msgid "  (use \"git branch --unset-upstream\" to fixup)\n"
+msgstr "  (düzeltmek için \"git branch --unset-upstream\" kullan)\n"
 
-#: sequencer.c:1346
+#: remote.c:2126
 #, c-format
-msgid "HEAD %s is not a commit!"
-msgstr "HEAD %s bir işleme değil"
+msgid "Your branch is up to date with '%s'.\n"
+msgstr "Dalınız '%s' ile güncel.\n"
 
-#: sequencer.c:1350 sequencer.c:1425 builtin/commit.c:1577
-msgid "could not parse HEAD commit"
-msgstr "HEAD işlemesi ayrıştırılamadı"
+#: remote.c:2130
+#, c-format
+msgid "Your branch and '%s' refer to different commits.\n"
+msgstr "Sizin dalınız ve '%s' başka işlemelere başvuruyor.\n"
 
-#: sequencer.c:1403 sequencer.c:2100
-msgid "unable to parse commit author"
-msgstr "işleme yazarı ayrıştırılamıyor"
+#: remote.c:2133
+#, c-format
+msgid "  (use \"%s\" for details)\n"
+msgstr "  (ayrıntılar için \"%s\" kullanın)\n"
 
-#: sequencer.c:1414 builtin/am.c:1566 builtin/merge.c:701
-msgid "git write-tree failed to write a tree"
-msgstr "git write-tree bir ağaca yazamadı"
+#: remote.c:2137
+#, c-format
+msgid "Your branch is ahead of '%s' by %d commit.\n"
+msgid_plural "Your branch is ahead of '%s' by %d commits.\n"
+msgstr[0] "Dalınız '%s' dalından %d işleme ileride.\n"
+msgstr[1] "Dalınız '%s' dalından %d işleme ileride.\n"
+
+#: remote.c:2143
+msgid "  (use \"git push\" to publish your local commits)\n"
+msgstr "  (yerel işlemelerinizi yayımlamak için \"git push\" kullanın)\n"
 
-#: sequencer.c:1447 sequencer.c:1565
+#: remote.c:2146
 #, c-format
-msgid "unable to read commit message from '%s'"
-msgstr "'%s' konumundan işleme iletisi okunamıyor"
+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] "Dalınız '%s' dalından %d işleme geride ve ileri sarılabilir.\n"
+msgstr[1] "Dalınız '%s' dalından %d işleme geride ve ileri sarılabilir.\n"
+
+#: remote.c:2154
+msgid "  (use \"git pull\" to update your local branch)\n"
+msgstr "  (yerel dalınızı güncellemek için \"git pull\" kullanın)\n"
 
-#: sequencer.c:1476 sequencer.c:1508
+#: remote.c:2157
 #, c-format
-msgid "invalid author identity '%s'"
-msgstr "geçersiz yazar kimliği '%s'"
+msgid ""
+"Your branch and '%s' have diverged,\n"
+"and have %d and %d different commit each, respectively.\n"
+msgid_plural ""
+"Your branch and '%s' have diverged,\n"
+"and have %d and %d different commits each, respectively.\n"
+msgstr[0] ""
+"Sizin dalınız ve '%s' birbirinden uzaklaşmış ve sırasıyla\n"
+"her birinde %d ve %d işleme var.\n"
+msgstr[1] ""
+"Sizin dalınız ve '%s' birbirinden uzaklaşmış ve sırasıyla\n"
+"her birinde %d ve %d işleme var.\n"
 
-#: sequencer.c:1482
-msgid "corrupt author: missing date information"
-msgstr "hasar görmüş yazar: tarih bilgisi eksik"
+#: remote.c:2167
+msgid "  (use \"git pull\" to merge the remote branch into yours)\n"
+msgstr "  (uzak dalı kendi dalınıza birleştirmek için \"git pull\" kullanın)\n"
 
-#: sequencer.c:1521 builtin/am.c:1593 builtin/commit.c:1678 builtin/merge.c:904
-#: builtin/merge.c:929 t/helper/test-fast-rebase.c:78
-msgid "failed to write commit object"
-msgstr "işleme nesnesi yazılamadı"
+#: remote.c:2359
+#, c-format
+msgid "cannot parse expected object name '%s'"
+msgstr "beklenen nesne adı '%s' ayrıştırılamıyor"
 
-#: sequencer.c:1548 sequencer.c:4283 t/helper/test-fast-rebase.c:198
+#: replace-object.c:21
 #, c-format
-msgid "could not update %s"
-msgstr "%s güncellenemedi"
+msgid "bad replace ref name: %s"
+msgstr "hatalı değiştirme başvurusu adı: %s"
 
-#: sequencer.c:1597
+#: replace-object.c:30
 #, c-format
-msgid "could not parse commit %s"
-msgstr "%s işlemesi ayrıştırılamadı"
+msgid "duplicate replace ref: %s"
+msgstr "yinelenmiş değiştirme başvurusu: %s"
 
-#: sequencer.c:1602
+#: replace-object.c:82
 #, c-format
-msgid "could not parse parent commit %s"
-msgstr "üst işleme %s ayrıştırılamadı"
+msgid "replace depth too high for object %s"
+msgstr "%s nesnesi için değiştirme derinliği pek yüksek"
+
+#: rerere.c:201 rerere.c:210 rerere.c:213
+msgid "corrupt MERGE_RR"
+msgstr "hasar görmüş MERGE_RR"
+
+#: rerere.c:248 rerere.c:253
+msgid "unable to write rerere record"
+msgstr "rerere kaydı yazılamıyor"
 
-#: sequencer.c:1685 sequencer.c:1796
+#: rerere.c:479
 #, c-format
-msgid "unknown command: %d"
-msgstr "bilinmeyen komut: %d"
+msgid "there were errors while writing '%s' (%s)"
+msgstr "'%s' yazılırken hatalar vardı (%s)"
 
-#: sequencer.c:1743 sequencer.c:1768
+#: rerere.c:482
 #, c-format
-msgid "This is a combination of %d commits."
-msgstr "Bu %d işlemenin bir birleşimi."
+msgid "failed to flush '%s'"
+msgstr "'%s' floş yapılamadı"
 
-#: sequencer.c:1753
-msgid "need a HEAD to fixup"
-msgstr "düzeltmek için bir HEAD gerekiyor"
+#: rerere.c:487 rerere.c:1023
+#, c-format
+msgid "could not parse conflict hunks in '%s'"
+msgstr "'%s' içindeki çakışan parçalar ayrıştırılamadı"
 
-#: sequencer.c:1755 sequencer.c:3372
-msgid "could not read HEAD"
-msgstr "HEAD okunamadı"
+#: rerere.c:668
+#, c-format
+msgid "failed utime() on '%s'"
+msgstr "'%s' üzerinde utime() başarısız"
 
-#: sequencer.c:1757
-msgid "could not read HEAD's commit message"
-msgstr "HEAD'in işleme iletisi okunamadı"
+#: rerere.c:678
+#, c-format
+msgid "writing '%s' failed"
+msgstr "'%s' yazılamadı"
 
-#: sequencer.c:1763
+#: rerere.c:698
 #, c-format
-msgid "cannot write '%s'"
-msgstr "'%s' yazılamıyor"
+msgid "Staged '%s' using previous resolution."
+msgstr "'%s' bir önceki çözüm kullanılarak hazırlama alanına alındı"
 
-#: sequencer.c:1770 git-rebase--preserve-merges.sh:486
-msgid "This is the 1st commit message:"
-msgstr "Birinci işleme iletisi bu:"
+#: rerere.c:737
+#, c-format
+msgid "Recorded resolution for '%s'."
+msgstr "'%s' için çözüm kaydedildi."
 
-#: sequencer.c:1778
+#: rerere.c:772
 #, c-format
-msgid "could not read commit message of %s"
-msgstr "%s işleme iletisi okunamadı"
+msgid "Resolved '%s' using previous resolution."
+msgstr "'%s' bir önceki çözüm kullanılarak çözüldü."
 
-#: sequencer.c:1785
+#: rerere.c:787
 #, c-format
-msgid "This is the commit message #%d:"
-msgstr "İşleme iletisi #%d bu:"
+msgid "cannot unlink stray '%s'"
+msgstr "'%s' başıboşunun bağlantısı kesilemiyor"
 
-#: sequencer.c:1791
+#: rerere.c:791
 #, c-format
-msgid "The commit message #%d will be skipped:"
-msgstr "İşleme iletisi #%d atlanacak:"
+msgid "Recorded preimage for '%s'"
+msgstr "'%s' için öngörüntü kaydedildi"
 
-#: sequencer.c:1879
-msgid "your index file is unmerged."
-msgstr "indeks dosyanız birleştirilmemiş"
+#: rerere.c:865 submodule.c:2088 builtin/log.c:1991
+#: builtin/submodule--helper.c:1878 builtin/submodule--helper.c:1890
+#, c-format
+msgid "could not create directory '%s'"
+msgstr "'%s' dizini oluşturulamadı"
 
-#: sequencer.c:1886
-msgid "cannot fixup root commit"
-msgstr "kök işleme düzeltilemiyor"
+#: rerere.c:1041
+#, c-format
+msgid "failed to update conflicted state in '%s'"
+msgstr "'%s' içindeki çakışan durum güncellenemedi"
 
-#: sequencer.c:1905
+#: rerere.c:1052 rerere.c:1059
 #, c-format
-msgid "commit %s is a merge but no -m option was given."
-msgstr "%s işlemesi bir birleştirme; ancak bir -m seçeneği verilmedi."
+msgid "no remembered resolution for '%s'"
+msgstr "'%s' için hatırlanan çözüm yok"
 
-#: sequencer.c:1913 sequencer.c:1921
+#: rerere.c:1061
 #, c-format
-msgid "commit %s does not have parent %d"
-msgstr "%s işlemesinin %d diye bir üst ögesi yok"
+msgid "cannot unlink '%s'"
+msgstr "'%s' bağlantısı kesilemiyor"
 
-#: sequencer.c:1927
+#: rerere.c:1071
 #, c-format
-msgid "cannot get commit message for %s"
-msgstr "%s işlemesinin iletisi alınamıyor"
+msgid "Updated preimage for '%s'"
+msgstr "'%s' için öngörüntü güncellendi"
 
-#. TRANSLATORS: The first %s will be a "todo" command like
-#. "revert" or "pick", the second %s a SHA1.
-#: sequencer.c:1946
+#: rerere.c:1080
 #, c-format
-msgid "%s: cannot parse parent commit %s"
-msgstr "%s: üst işleme %s ayrıştırılamıyor"
+msgid "Forgot resolution for '%s'\n"
+msgstr "'%s' için çözüm unutuldu\n"
+
+#: rerere.c:1191
+msgid "unable to open rr-cache directory"
+msgstr "rr-cache dizini açılamıyor"
+
+#: reset.c:42
+msgid "could not determine HEAD revision"
+msgstr "HEAD revizyonu saptanamadı"
 
-#: sequencer.c:2011
+#: reset.c:70 reset.c:76 sequencer.c:3468
 #, c-format
-msgid "could not rename '%s' to '%s'"
-msgstr "'%s', '%s' olarak yeniden adlandırılamadı"
+msgid "failed to find tree of %s"
+msgstr "%s ögesinin ağacı bulunamadı"
+
+#: revision.c:2338
+msgid "--unpacked=<packfile> no longer supported"
+msgstr "--unpacked=<paketdosyası> artık desteklenmiyor"
 
-#: sequencer.c:2071
+#: revision.c:2668
+msgid "your current branch appears to be broken"
+msgstr "geçerli dalınız bozuk gibi görünüyor"
+
+#: revision.c:2671
 #, c-format
-msgid "could not revert %s... %s"
-msgstr "%s geri alınamadı... %s"
+msgid "your current branch '%s' does not have any commits yet"
+msgstr "geçerli dalınız '%s' içinde henüz bir işleme yok"
+
+#: revision.c:2877
+msgid "-L does not yet support diff formats besides -p and -s"
+msgstr "-L, -p ve -s dışında başka diff biçimlerini henüz desteklemiyor"
+
+#: run-command.c:767
+msgid "open /dev/null failed"
+msgstr "/dev/null açılamadı"
 
-#: sequencer.c:2072
+#: run-command.c:1274
 #, c-format
-msgid "could not apply %s... %s"
-msgstr "%s uygulanamadı... %s"
+msgid "cannot create async thread: %s"
+msgstr "async iş parçacığı oluşturulamadı: %s"
 
-#: sequencer.c:2092
+#: run-command.c:1338
 #, c-format
-msgid "dropping %s %s -- patch contents already upstream\n"
-msgstr "%s %s bırakılıyor -- yama içeriği halihazırda üstkaynakta\n"
+msgid ""
+"The '%s' hook was ignored because it's not set as executable.\n"
+"You can disable this warning with `git config advice.ignoredHook false`."
+msgstr ""
+"'%s' kancası yok sayıldı; çünkü bir çalıştırılabilir olarak ayarlanmamış.\n"
+"Bu uyarıyı 'git config advice.ignoredHook false' ile kapatabilirsiniz."
+
+#: send-pack.c:146
+msgid "unexpected flush packet while reading remote unpack status"
+msgstr "uzak konum açım durumu okunurken beklenmedik floş paketi"
 
-#: sequencer.c:2150
+#: send-pack.c:148
 #, c-format
-msgid "git %s: failed to read the index"
-msgstr "git %s: indeks okunamadı"
+msgid "unable to parse remote unpack status: %s"
+msgstr "uzak konum açım durumu ayrıştırılamadı: %s"
 
-#: sequencer.c:2157
+#: send-pack.c:150
 #, c-format
-msgid "git %s: failed to refresh the index"
-msgstr "git %s: indeks yenilenemedi"
+msgid "remote unpack failed: %s"
+msgstr "uzak konum açımı başarısız: %s"
+
+#: send-pack.c:374
+msgid "failed to sign the push certificate"
+msgstr "itme sertifikası imzalanamadı"
+
+#: send-pack.c:467
+msgid "the receiving end does not support this repository's hash algorithm"
+msgstr "alıcı uç bu deponun sağlama algoritmasını desteklemiyor"
+
+#: send-pack.c:476
+msgid "the receiving end does not support --signed push"
+msgstr "alıcı uç --signed itmeyi desteklemiyor"
+
+#: send-pack.c:478
+msgid ""
+"not sending a push certificate since the receiving end does not support --"
+"signed push"
+msgstr ""
+"alıcı uç --signed itmeyi desteklemediğinden dolayı bir itme sertifikası "
+"gönderilmiyor"
 
-#: sequencer.c:2234
-#, c-format
-msgid "%s does not accept arguments: '%s'"
-msgstr "%s argüman kabul etmiyor: '%s'"
+#: send-pack.c:490
+msgid "the receiving end does not support --atomic push"
+msgstr "alıcı uç --atomic itmeyi desteklemiyor"
 
-#: sequencer.c:2243
-#, c-format
-msgid "missing arguments for %s"
-msgstr "%s için eksik argüman"
+#: send-pack.c:495
+msgid "the receiving end does not support push options"
+msgstr "alıcı uç itme seçeneklerini desteklemiyor"
 
-#: sequencer.c:2274
+#: sequencer.c:195
 #, c-format
-msgid "could not parse '%s'"
-msgstr "'%s' ayrıştırılamadı"
+msgid "invalid commit message cleanup mode '%s'"
+msgstr "geçersiz işleme iletisi temizleme kipi '%s'"
 
-#: sequencer.c:2335
+#: sequencer.c:323
 #, c-format
-msgid "invalid line %d: %.*s"
-msgstr "geçersiz satır %d: %.*s"
+msgid "could not delete '%s'"
+msgstr "'%s' silinemedi"
 
-#: sequencer.c:2346
+#: sequencer.c:343 builtin/rebase.c:757 builtin/rebase.c:1602 builtin/rm.c:385
 #, c-format
-msgid "cannot '%s' without a previous commit"
-msgstr "öncesinde bir işleme olmadan '%s' yapılamıyor"
+msgid "could not remove '%s'"
+msgstr "'%s' kaldırılamadı"
 
-#: sequencer.c:2432
-msgid "cancelling a cherry picking in progress"
-msgstr "sürmekte olan bir seç-al iptal ediliyor"
+#: sequencer.c:353
+msgid "revert"
+msgstr "geri al"
 
-#: sequencer.c:2441
-msgid "cancelling a revert in progress"
-msgstr "sürmekte olan bir geri al iptal ediliyor"
+#: sequencer.c:355
+msgid "cherry-pick"
+msgstr "seç-al"
 
-#: sequencer.c:2485
-msgid "please fix this using 'git rebase --edit-todo'."
-msgstr "lütfen bunu 'git rebase --edit-todo' kullanarak onarın."
+#: sequencer.c:357
+msgid "rebase"
+msgstr "yeniden temellendirme"
 
-#: sequencer.c:2487
+#: sequencer.c:359
 #, c-format
-msgid "unusable instruction sheet: '%s'"
-msgstr "kullanılabilir olmayan yönerge tablosu: '%s'"
-
-#: sequencer.c:2492
-msgid "no commits parsed."
-msgstr "Hiçbir işleme ayrıştırılmadı."
+msgid "unknown action: %d"
+msgstr "bilinmeyen eylem: %d"
 
-#: sequencer.c:2503
-msgid "cannot cherry-pick during a revert."
-msgstr "bir geri al sırasında seç-al yapılamıyor"
+#: sequencer.c:418
+msgid ""
+"after resolving the conflicts, mark the corrected paths\n"
+"with 'git add <paths>' or 'git rm <paths>'"
+msgstr ""
+"çakışmaları çözdükten sonra doğrusu verilen yolları 'git add <yollar>'\n"
+"veya 'git rm <yollar>' ile imleyin"
 
-#: sequencer.c:2505
-msgid "cannot revert during a cherry-pick."
-msgstr "bir seç-al sırasında geri al yapılamıyor"
+#: sequencer.c:421
+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 ""
+"çakışmaları çözdükten sonra doğrusu verilen yolları 'git add <yollar>'\n"
+"veya 'git rm <yollar>' ile imleyin ve çıkan sonucu\n"
+"'git commit' ile işleyin"
 
-#: sequencer.c:2583
+#: sequencer.c:434 sequencer.c:3070
 #, c-format
-msgid "invalid value for %s: %s"
-msgstr "%s için geçersiz değer: %s"
-
-#: sequencer.c:2690
-msgid "unusable squash-onto"
-msgstr "kullanılabilir olmayan squash-onto"
+msgid "could not lock '%s'"
+msgstr "'%s' kilitlenemedi"
 
-#: sequencer.c:2710
+#: sequencer.c:436 sequencer.c:2869 sequencer.c:3074 sequencer.c:3088
+#: sequencer.c:3345 sequencer.c:5334 strbuf.c:1168 wrapper.c:631
 #, c-format
-msgid "malformed options sheet: '%s'"
-msgstr "hatalı oluşturulmuş seçenekler tablosu: '%s'"
+msgid "could not write to '%s'"
+msgstr "şuraya yazılamadı: '%s'"
 
-#: sequencer.c:2803 sequencer.c:4636
-msgid "empty commit set passed"
-msgstr "boş işleme seti aktarıldı"
+#: sequencer.c:441
+#, c-format
+msgid "could not write eol to '%s'"
+msgstr "satır sonu şuraya yazılamadı: '%s'"
 
-#: sequencer.c:2820
-msgid "revert is already in progress"
-msgstr "geri al halihazırda sürüyor"
+#: sequencer.c:446 sequencer.c:2874 sequencer.c:3076 sequencer.c:3090
+#: sequencer.c:3353
+#, c-format
+msgid "failed to finalize '%s'"
+msgstr "'%s' tamamlanamadı"
 
-#: sequencer.c:2822
+#: sequencer.c:485
 #, c-format
-msgid "try \"git revert (--continue | %s--abort | --quit)\""
-msgstr "\"git revert (--continue | %s--abort | --quit)\" deneyin"
+msgid "your local changes would be overwritten by %s."
+msgstr "%s ile yerel değişikliklerinizin üzerine yazılacaktır."
 
-#: sequencer.c:2825
-msgid "cherry-pick is already in progress"
-msgstr "seç-al halihazırda sürüyor"
+#: sequencer.c:489
+msgid "commit your changes or stash them to proceed."
+msgstr "İlerlemek için değişikliklerinizi işleyin veya zulalayın."
 
-#: sequencer.c:2827
+#: sequencer.c:521
 #, c-format
-msgid "try \"git cherry-pick (--continue | %s--abort | --quit)\""
-msgstr "\"git cherry-pick (--continue | %s--abort | --quit)\" deneyin"
+msgid "%s: fast-forward"
+msgstr "%s: ileri sar"
 
-#: sequencer.c:2841
+#: sequencer.c:560 builtin/tag.c:598
 #, c-format
-msgid "could not create sequencer directory '%s'"
-msgstr "ardıştırıcı dizini '%s' oluşturulamadı"
-
-#: sequencer.c:2856
-msgid "could not lock HEAD"
-msgstr "HEAD kilitlenemedi"
+msgid "Invalid cleanup mode %s"
+msgstr "Geçersiz temizlik kipi %s"
 
-#: sequencer.c:2916 sequencer.c:4371
-msgid "no cherry-pick or revert in progress"
-msgstr "süren bir seç-al veya geri al yok"
+#. TRANSLATORS: %s will be "revert", "cherry-pick" or
+#. "rebase".
+#.
+#: sequencer.c:670
+#, c-format
+msgid "%s: Unable to write new index file"
+msgstr "%s: Yeni indeks dosyası yazılamıyor"
 
-#: sequencer.c:2918 sequencer.c:2929
-msgid "cannot resolve HEAD"
-msgstr "HEAD çözülemiyor"
+#: sequencer.c:684
+msgid "unable to update cache tree"
+msgstr "önbellek ağacı güncellenemiyor"
 
-#: sequencer.c:2920 sequencer.c:2964
-msgid "cannot abort from a branch yet to be born"
-msgstr "daha doğmamış bir daldan iptal edilemiyor"
+#: sequencer.c:698
+msgid "could not resolve HEAD commit"
+msgstr "HEAD işlemesi çözülemedi"
 
-#: sequencer.c:2950 builtin/grep.c:756
+#: sequencer.c:778
 #, c-format
-msgid "cannot open '%s'"
-msgstr "'%s' açılamıyor"
+msgid "no key present in '%.*s'"
+msgstr "'%.*s' içinde bir anahtar yok"
 
-#: sequencer.c:2952
+#: sequencer.c:789
 #, c-format
-msgid "cannot read '%s': %s"
-msgstr "'%s' okunamıyor: %s"
-
-#: sequencer.c:2953
-msgid "unexpected end of file"
-msgstr "beklenmedik dosya sonu"
+msgid "unable to dequote value of '%s'"
+msgstr "'%s' ögesinin tırnakları kaldırılamıyor"
 
-#: sequencer.c:2959
+#: sequencer.c:826 wrapper.c:201 wrapper.c:371 builtin/am.c:710
+#: builtin/am.c:802 builtin/merge.c:1136 builtin/rebase.c:910
 #, c-format
-msgid "stored pre-cherry-pick HEAD file '%s' is corrupt"
-msgstr "depolanmış seç-al öncesi HEAD dosyası '%s' hasar görmüş"
-
-#: sequencer.c:2970
-msgid "You seem to have moved HEAD. Not rewinding, check your HEAD!"
-msgstr "HEAD'i taşımış görünüyorsunuz. Geri sarılmıyor, HEAD'inizi denetleyin!"
-
-#: sequencer.c:3011
-msgid "no revert in progress"
-msgstr "süren bir geri al yok"
+msgid "could not open '%s' for reading"
+msgstr "'%s' okuma için açılamadı"
 
-#: sequencer.c:3020
-msgid "no cherry-pick in progress"
-msgstr "süren bir seç-al yok"
+#: sequencer.c:836
+msgid "'GIT_AUTHOR_NAME' already given"
+msgstr "'GIT_AUTHOR_NAME' halihazırda verilmiş"
 
-#: sequencer.c:3030
-msgid "failed to skip the commit"
-msgstr "işleme atlanamadı"
+#: sequencer.c:841
+msgid "'GIT_AUTHOR_EMAIL' already given"
+msgstr "'GIT_AUTHOR_EMAIL' halihazırda verilmiş"
 
-#: sequencer.c:3037
-msgid "there is nothing to skip"
-msgstr "atlanacak bir şey yok"
+#: sequencer.c:846
+msgid "'GIT_AUTHOR_DATE' already given"
+msgstr "'GIT_AUTHOR_DATE' halihazırda verilmiş"
 
-#: sequencer.c:3040
+#: sequencer.c:850
 #, c-format
-msgid ""
-"have you committed already?\n"
-"try \"git %s --continue\""
-msgstr ""
-"İşlemeyi yaptınız mı?\n"
-"\"git %s --continue\" deneyin.\""
+msgid "unknown variable '%s'"
+msgstr "bilinmeyen değişken '%s'"
 
-#: sequencer.c:3202 sequencer.c:4263
-msgid "cannot read HEAD"
-msgstr "HEAD okunamıyor"
+#: sequencer.c:855
+msgid "missing 'GIT_AUTHOR_NAME'"
+msgstr "'GIT_AUTHOR_NAME' eksik"
 
-#: sequencer.c:3219
-#, c-format
-msgid "unable to copy '%s' to '%s'"
-msgstr "'%s', '%s' konumuna kopyalanamıyor"
+#: sequencer.c:857
+msgid "missing 'GIT_AUTHOR_EMAIL'"
+msgstr "'GIT_AUTHOR_EMAIL' eksik"
 
-#: sequencer.c:3227
+#: sequencer.c:859
+msgid "missing 'GIT_AUTHOR_DATE'"
+msgstr "'GIT_AUTHOR_DATE' eksik"
+
+#: sequencer.c:924
 #, c-format
 msgid ""
-"You can amend the commit now, with\n"
+"you have staged changes in your working tree\n"
+"If these changes are meant to be squashed into the previous commit, run:\n"
 "\n"
 "  git commit --amend %s\n"
 "\n"
-"Once you are satisfied with your changes, run\n"
+"If they are meant to go into a new commit, run:\n"
+"\n"
+"  git commit %s\n"
+"\n"
+"In both cases, once you're done, continue with:\n"
 "\n"
 "  git rebase --continue\n"
 msgstr ""
-"İşlemeyi şimdi şu komutla değiştirebilirsiniz:\n"
+"Çalışma ağacınızda hazırlanmış değişiklikleriniz var.\n"
+"Eğer bu değişikliklerin bir önceki işlemeye eklenmesi\n"
+"gerekiyorsa şu komutu çalıştırın:\n"
 "\n"
 "\tgit commit --amend %s\n"
 "\n"
-"Değişikliklerinizden memnunsanız şu komutla sürdürün:\n"
+"Yeni bir işleme yapmak istiyorsanız şu komutu çalıştırın:\n"
+"\n"
+"\tgit commit %s\n"
+"\n"
+"Her iki durumda da işiniz bittikten sonra şu komut ile sürdürün:\n"
 "\n"
 "\tgit rebase --continue\n"
 
-#: sequencer.c:3237
-#, c-format
-msgid "Could not apply %s... %.*s"
-msgstr "%s uygulanamıyor... %.*s"
-
-#: sequencer.c:3244
-#, c-format
-msgid "Could not merge %.*s"
-msgstr "%.*s birleştirilemedi"
-
-#: sequencer.c:3258 sequencer.c:3262 builtin/difftool.c:640
-#, c-format
-msgid "could not copy '%s' to '%s'"
-msgstr "'%s', '%s' konumuna kopyalanamadı"
-
-#: sequencer.c:3274
-#, c-format
-msgid "Executing: %s\n"
-msgstr "Çalıştırılıyor: %s\n"
+#: sequencer.c:1211
+msgid "'prepare-commit-msg' hook failed"
+msgstr "'prepare-commit-msg' başarısız oldu"
 
-#: sequencer.c:3289
-#, c-format
+#: sequencer.c:1217
 msgid ""
-"execution failed: %s\n"
-"%sYou can fix the problem, and then run\n"
+"Your name and email address were configured automatically based\n"
+"on your username and hostname. Please check that they are accurate.\n"
+"You can suppress this message by setting them explicitly. Run the\n"
+"following command and follow the instructions in your editor to edit\n"
+"your configuration file:\n"
 "\n"
-"  git rebase --continue\n"
+"    git config --global --edit\n"
+"\n"
+"After doing this, you may fix the identity used for this commit with:\n"
 "\n"
+"    git commit --amend --reset-author\n"
 msgstr ""
-"Çalıştırma başarısız: %s\n"
-"%sSorunu çözüp sürdürmek için şunu çalıştırın:\n"
+"Adınız ve e-posta adresiniz kullanıcı adınız ve makine adı temel alınarak\n"
+"kendiliğinden yapılandırıldı. Lütfen doğru olup olmadığını denetleyin.\n"
+"Bu iletiyi onları el ile belirterek gizleyebilirsiniz. Aşağıdaki komutu\n"
+"çalıştırın ve yapılandırma dosyanızı düzenlemek için düzenleyicinizdeki\n"
+"yönergeleri izleyin:\n"
 "\n"
-"\tgit rebase --continue\n"
+"\tgit config --global --edit\n"
 "\n"
+"Bundan sonra bu işleme için kullanılan kimliği düzeltmek isteyebilirsiniz:\n"
+"\n"
+"\tgit commit --amend --reset-author\n"
 
-#: sequencer.c:3295
-msgid "and made changes to the index and/or the working tree\n"
-msgstr "ve indekse ve/veya çalışma ağacına değişiklikler yapıldı\n"
-
-#: sequencer.c:3301
-#, c-format
-msgid ""
-"execution succeeded: %s\n"
-"but left changes to the index and/or the working tree\n"
-"Commit or stash your changes, and then run\n"
+#: sequencer.c:1230
+msgid ""
+"Your name and email address were configured automatically based\n"
+"on your username and hostname. Please check that they are accurate.\n"
+"You can suppress this message by setting them explicitly:\n"
 "\n"
-"  git rebase --continue\n"
+"    git config --global user.name \"Your Name\"\n"
+"    git config --global user.email you@example.com\n"
+"\n"
+"After doing this, you may fix the identity used for this commit with:\n"
 "\n"
+"    git commit --amend --reset-author\n"
 msgstr ""
-"Çalıştırma başarılı oldu: %s,\n"
-"ancak indeksinize ve/veya çalışma ağacınıza değişiklikler bıraktı\n"
-"Değişikliklerinizi işleyin veya zulalayın, ardından şunu çalıştırın:\n"
+"Adınız ve e-posta adresiniz kullanıcı adınız ve makine adı temel alınarak\n"
+"kendiliğinden yapılandırıldı. Lütfen doğru olup olmadığını denetleyin.\n"
+"Bu iletiyi onları el ile belirterek gizleyebilirsiniz:\n"
 "\n"
-"\tgit rebase --continue\n"
+"\tgit config --global user.name \"Adınız\"\n"
+"\tgit config --global user.email \"siz@e-posta.com\"\n"
+"\n"
+"Bundan sonra bu işleme için kullanılan kimliği düzeltmek isteyebilirsiniz:\n"
 "\n"
+"\tgit commit --amend --reset-author\n"
 
-#: sequencer.c:3362
-#, c-format
-msgid "illegal label name: '%.*s'"
-msgstr "izin verilmeyen etiket adı: '%.*s'"
+#: sequencer.c:1272
+msgid "couldn't look up newly created commit"
+msgstr "yeni yapılan işleme aranamadı"
 
-#: sequencer.c:3416
-msgid "writing fake root commit"
-msgstr "sahte kök işlemesi yazılıyor"
+#: sequencer.c:1274
+msgid "could not parse newly created commit"
+msgstr "yeni yapılan işleme ayrıştırılamadı"
 
-#: sequencer.c:3421
-msgid "writing squash-onto"
-msgstr "squash-onto yazılıyor"
+#: sequencer.c:1320
+msgid "unable to resolve HEAD after creating commit"
+msgstr "HEAD, işleme yapıldıktan sonra çözülemiyor"
 
-#: sequencer.c:3505
-#, c-format
-msgid "could not resolve '%s'"
-msgstr "'%s' çözülemedi"
+#: sequencer.c:1322
+msgid "detached HEAD"
+msgstr "ayrık HEAD"
 
-#: sequencer.c:3538
-msgid "cannot merge without a current revision"
-msgstr "güncel bir revizyon olmadan birleştirilemiyor"
+#: sequencer.c:1326
+msgid " (root-commit)"
+msgstr " (kök işleme)"
 
-#: sequencer.c:3560
-#, c-format
-msgid "unable to parse '%.*s'"
-msgstr "'%.*s' ayrıştırılamıyor"
+#: sequencer.c:1347
+msgid "could not parse HEAD"
+msgstr "HEAD ayrıştırılamadı"
 
-#: sequencer.c:3569
+#: sequencer.c:1349
 #, c-format
-msgid "nothing to merge: '%.*s'"
-msgstr "birleştirilecek bir şey yok: '%.*s'"
+msgid "HEAD %s is not a commit!"
+msgstr "HEAD %s bir işleme değil"
 
-#: sequencer.c:3581
-msgid "octopus merge cannot be executed on top of a [new root]"
-msgstr "ahtapot birleştirmesi bir [yeni kök]ün üzerinde çalıştırılamaz"
+#: sequencer.c:1353 sequencer.c:1431 builtin/commit.c:1577
+msgid "could not parse HEAD commit"
+msgstr "HEAD işlemesi ayrıştırılamadı"
+
+#: sequencer.c:1409 sequencer.c:2108
+msgid "unable to parse commit author"
+msgstr "işleme yazarı ayrıştırılamıyor"
 
-#: sequencer.c:3597
+#: sequencer.c:1420 builtin/am.c:1566 builtin/merge.c:702
+msgid "git write-tree failed to write a tree"
+msgstr "git write-tree bir ağaca yazamadı"
+
+#: sequencer.c:1453 sequencer.c:1573
 #, c-format
-msgid "could not get commit message of '%s'"
-msgstr "'%s' işlemesinin işleme iletisi alınamadı"
+msgid "unable to read commit message from '%s'"
+msgstr "'%s' konumundan işleme iletisi okunamıyor"
 
-#: sequencer.c:3780
+#: sequencer.c:1484 sequencer.c:1516
 #, c-format
-msgid "could not even attempt to merge '%.*s'"
-msgstr "şunu birleştirme girişiminde bulunulamadı bile: '%.*s'"
+msgid "invalid author identity '%s'"
+msgstr "geçersiz yazar kimliği '%s'"
 
-#: sequencer.c:3796
-msgid "merge: Unable to write new index file"
-msgstr "merge: Yeni indeks dosyası yazılamıyor"
+#: sequencer.c:1490
+msgid "corrupt author: missing date information"
+msgstr "hasar görmüş yazar: tarih bilgisi eksik"
 
-#: sequencer.c:3870
-msgid "Cannot autostash"
-msgstr "Kendiliğinden zulalanamıyor"
+#: sequencer.c:1529 builtin/am.c:1593 builtin/commit.c:1678 builtin/merge.c:905
+#: builtin/merge.c:930 t/helper/test-fast-rebase.c:78
+msgid "failed to write commit object"
+msgstr "işleme nesnesi yazılamadı"
 
-#: sequencer.c:3873
+#: sequencer.c:1556 sequencer.c:4291 t/helper/test-fast-rebase.c:198
 #, c-format
-msgid "Unexpected stash response: '%s'"
-msgstr "Beklenmedik zula yanıtı: '%s'"
+msgid "could not update %s"
+msgstr "%s güncellenemedi"
 
-#: sequencer.c:3879
+#: sequencer.c:1605
 #, c-format
-msgid "Could not create directory for '%s'"
-msgstr "'%s' için dizin oluşturulamadı"
+msgid "could not parse commit %s"
+msgstr "%s işlemesi ayrıştırılamadı"
 
-#: sequencer.c:3882
+#: sequencer.c:1610
 #, c-format
-msgid "Created autostash: %s\n"
-msgstr "Zula kendiliğinden oluşturuldu: %s\n"
-
-#: sequencer.c:3886
-msgid "could not reset --hard"
-msgstr "'reset --hard' yapılamadı"
+msgid "could not parse parent commit %s"
+msgstr "üst işleme %s ayrıştırılamadı"
 
-#: sequencer.c:3911
+#: sequencer.c:1693 sequencer.c:1804
 #, c-format
-msgid "Applied autostash.\n"
-msgstr "Kendiliğinden zulalama uygulandı.\n"
+msgid "unknown command: %d"
+msgstr "bilinmeyen komut: %d"
 
-#: sequencer.c:3923
+#: sequencer.c:1751 sequencer.c:1776
 #, c-format
-msgid "cannot store %s"
-msgstr "%s depolanamıyor"
+msgid "This is a combination of %d commits."
+msgstr "Bu %d işlemenin bir birleşimi."
+
+#: sequencer.c:1761
+msgid "need a HEAD to fixup"
+msgstr "düzeltmek için bir HEAD gerekiyor"
+
+#: sequencer.c:1763 sequencer.c:3380
+msgid "could not read HEAD"
+msgstr "HEAD okunamadı"
 
-#: sequencer.c:3926
+#: sequencer.c:1765
+msgid "could not read HEAD's commit message"
+msgstr "HEAD'in işleme iletisi okunamadı"
+
+#: sequencer.c:1771
 #, c-format
-msgid ""
-"%s\n"
-"Your changes are safe in the stash.\n"
-"You can run \"git stash pop\" or \"git stash drop\" at any time.\n"
-msgstr ""
-"%s\n"
-"Değişiklikleriniz zulada güvende.\n"
-"İstediğiniz zaman \"git stash pop\" veya \"git stash drop\" yapabilirsiniz.\n"
+msgid "cannot write '%s'"
+msgstr "'%s' yazılamıyor"
 
-#: sequencer.c:3931
-msgid "Applying autostash resulted in conflicts."
-msgstr "Kendiliğinden zulalama çakışmalara neden oldu."
+#: sequencer.c:1778 git-rebase--preserve-merges.sh:486
+msgid "This is the 1st commit message:"
+msgstr "Birinci işleme iletisi bu:"
 
-#: sequencer.c:3932
-msgid "Autostash exists; creating a new stash entry."
-msgstr "Kendiliğinden zulalama mevcut; yeni bir zula girdisi oluşturuluyor."
+#: sequencer.c:1786
+#, c-format
+msgid "could not read commit message of %s"
+msgstr "%s işleme iletisi okunamadı"
 
-#: sequencer.c:4025 git-rebase--preserve-merges.sh:769
-msgid "could not detach HEAD"
-msgstr "HEAD ayrılamadı"
+#: sequencer.c:1793
+#, c-format
+msgid "This is the commit message #%d:"
+msgstr "İşleme iletisi #%d bu:"
 
-#: sequencer.c:4040
+#: sequencer.c:1799
 #, c-format
-msgid "Stopped at HEAD\n"
-msgstr "HEAD'de duruldu\n"
+msgid "The commit message #%d will be skipped:"
+msgstr "İşleme iletisi #%d atlanacak:"
+
+#: sequencer.c:1887
+msgid "your index file is unmerged."
+msgstr "indeks dosyanız birleştirilmemiş"
+
+#: sequencer.c:1894
+msgid "cannot fixup root commit"
+msgstr "kök işleme düzeltilemiyor"
 
-#: sequencer.c:4042
+#: sequencer.c:1913
 #, c-format
-msgid "Stopped at %s\n"
-msgstr "%s konumunda duruldu\n"
+msgid "commit %s is a merge but no -m option was given."
+msgstr "%s işlemesi bir birleştirme; ancak bir -m seçeneği verilmedi."
 
-#: sequencer.c:4050
+#: sequencer.c:1921 sequencer.c:1929
 #, 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 ""
-"todo komutu çalıştırılamadı.\n"
-"\n"
-"\t%.*s\n"
-"Yeniden zamanlandı; sürdürmeden önce komutu düzenlemek için lütfen\n"
-"önce yapılacaklar listesini düzenleyin:\n"
-"\n"
-"\tgit rebase --edit-todo\n"
-"\tgit rebase --continue\n"
+msgid "commit %s does not have parent %d"
+msgstr "%s işlemesinin %d diye bir üst ögesi yok"
 
-#: sequencer.c:4096
+#: sequencer.c:1935
 #, c-format
-msgid "Rebasing (%d/%d)%s"
-msgstr "Yeniden temellendiriliyor: (%d/%d)%s"
+msgid "cannot get commit message for %s"
+msgstr "%s işlemesinin iletisi alınamıyor"
 
-#: sequencer.c:4141
+#. TRANSLATORS: The first %s will be a "todo" command like
+#. "revert" or "pick", the second %s a SHA1.
+#: sequencer.c:1954
 #, c-format
-msgid "Stopped at %s...  %.*s\n"
-msgstr "%s konumunda durdu... %.*s\n"
+msgid "%s: cannot parse parent commit %s"
+msgstr "%s: üst işleme %s ayrıştırılamıyor"
 
-#: sequencer.c:4212
+#: sequencer.c:2019
 #, c-format
-msgid "unknown command %d"
-msgstr "bilinmeyen komut %d"
+msgid "could not rename '%s' to '%s'"
+msgstr "'%s', '%s' olarak yeniden adlandırılamadı"
 
-#: sequencer.c:4271
-msgid "could not read orig-head"
-msgstr "orig-head okunamadı"
+#: sequencer.c:2079
+#, c-format
+msgid "could not revert %s... %s"
+msgstr "%s geri alınamadı... %s"
 
-#: sequencer.c:4276
-msgid "could not read 'onto'"
-msgstr "'onto' okunamadı"
+#: sequencer.c:2080
+#, c-format
+msgid "could not apply %s... %s"
+msgstr "%s uygulanamadı... %s"
 
-#: sequencer.c:4290
+#: sequencer.c:2100
 #, c-format
-msgid "could not update HEAD to %s"
-msgstr "HEAD şu konuma güncellenemedi: %s"
+msgid "dropping %s %s -- patch contents already upstream\n"
+msgstr "%s %s bırakılıyor -- yama içeriği halihazırda üstkaynakta\n"
 
-#: sequencer.c:4350
+#: sequencer.c:2158
 #, c-format
-msgid "Successfully rebased and updated %s.\n"
-msgstr "%s başarıyla yeniden temellendirildi ve güncellendi.\n"
+msgid "git %s: failed to read the index"
+msgstr "git %s: indeks okunamadı"
 
-#: sequencer.c:4383
-msgid "cannot rebase: You have unstaged changes."
-msgstr "Yeniden temellendirilemiyor: Hazırlanmamış değişiklikleriniz var."
+#: sequencer.c:2165
+#, c-format
+msgid "git %s: failed to refresh the index"
+msgstr "git %s: indeks yenilenemedi"
 
-#: sequencer.c:4392
-msgid "cannot amend non-existing commit"
-msgstr "var olmayan işleme değiştirilemiyor"
+#: sequencer.c:2242
+#, c-format
+msgid "%s does not accept arguments: '%s'"
+msgstr "%s argüman kabul etmiyor: '%s'"
 
-#: sequencer.c:4394
+#: sequencer.c:2251
 #, c-format
-msgid "invalid file: '%s'"
-msgstr "geçersiz dosya: '%s'"
+msgid "missing arguments for %s"
+msgstr "%s için eksik argüman"
 
-#: sequencer.c:4396
+#: sequencer.c:2282
 #, c-format
-msgid "invalid contents: '%s'"
-msgstr "geçersiz içerik: '%s'"
+msgid "could not parse '%s'"
+msgstr "'%s' ayrıştırılamadı"
 
-#: sequencer.c:4399
-msgid ""
-"\n"
-"You have uncommitted changes in your working tree. Please, commit them\n"
-"first and then run 'git rebase --continue' again."
-msgstr ""
-"\n"
-"Çalışma ağacınızda işlenmemiş değişiklikleriniz var. Lütfen önce\n"
-"onları işleyin ve ardından 'git rebase --continue' yapın."
+#: sequencer.c:2343
+#, c-format
+msgid "invalid line %d: %.*s"
+msgstr "geçersiz satır %d: %.*s"
 
-#: sequencer.c:4435 sequencer.c:4474
+#: sequencer.c:2354
 #, c-format
-msgid "could not write file: '%s'"
-msgstr "dosya yazılamadı: '%s'"
+msgid "cannot '%s' without a previous commit"
+msgstr "öncesinde bir işleme olmadan '%s' yapılamıyor"
 
-#: sequencer.c:4490
-msgid "could not remove CHERRY_PICK_HEAD"
-msgstr "CHERRY_PICK_HEAD kaldırılamadı"
+#: sequencer.c:2440
+msgid "cancelling a cherry picking in progress"
+msgstr "sürmekte olan bir seç-al iptal ediliyor"
 
-#: sequencer.c:4497
-msgid "could not commit staged changes."
-msgstr "Hazırlanmış değişiklikler işlenemedi."
+#: sequencer.c:2449
+msgid "cancelling a revert in progress"
+msgstr "sürmekte olan bir geri al iptal ediliyor"
 
-#: sequencer.c:4613
-#, c-format
-msgid "%s: can't cherry-pick a %s"
-msgstr "%s: Bir %s seçip alınamıyor"
+#: sequencer.c:2493
+msgid "please fix this using 'git rebase --edit-todo'."
+msgstr "lütfen bunu 'git rebase --edit-todo' kullanarak onarın."
 
-#: sequencer.c:4617
+#: sequencer.c:2495
 #, c-format
-msgid "%s: bad revision"
-msgstr "%s hatalı revizyon"
-
-#: sequencer.c:4652
-msgid "can't revert as initial commit"
-msgstr "ilk işleme geri alınamaz"
+msgid "unusable instruction sheet: '%s'"
+msgstr "kullanılabilir olmayan yönerge tablosu: '%s'"
 
-#: sequencer.c:5129
-msgid "make_script: unhandled options"
-msgstr "make_script: ele alınmayan seçenekler"
+#: sequencer.c:2500
+msgid "no commits parsed."
+msgstr "Hiçbir işleme ayrıştırılmadı."
 
-#: sequencer.c:5132
-msgid "make_script: error preparing revisions"
-msgstr "make_script: revizyonlar hazırlanırken hata"
+#: sequencer.c:2511
+msgid "cannot cherry-pick during a revert."
+msgstr "bir geri al sırasında seç-al yapılamıyor"
 
-#: sequencer.c:5374 sequencer.c:5391
-msgid "nothing to do"
-msgstr "yapılacak bir şey yok"
+#: sequencer.c:2513
+msgid "cannot revert during a cherry-pick."
+msgstr "bir seç-al sırasında geri al yapılamıyor"
 
-#: sequencer.c:5410
-msgid "could not skip unnecessary pick commands"
-msgstr "gerekli olmayan seçim komutları atlanamadı"
+#: sequencer.c:2591
+#, c-format
+msgid "invalid value for %s: %s"
+msgstr "%s için geçersiz değer: %s"
 
-#: sequencer.c:5504
-msgid "the script was already rearranged."
-msgstr "betik halihazırda yeniden düzenlenmişti"
+#: sequencer.c:2698
+msgid "unusable squash-onto"
+msgstr "kullanılabilir olmayan squash-onto"
 
-#: setup.c:133
+#: sequencer.c:2718
 #, c-format
-msgid "'%s' is outside repository at '%s'"
-msgstr "'%s', '%s' konumunda depo dışında"
+msgid "malformed options sheet: '%s'"
+msgstr "hatalı oluşturulmuş seçenekler tablosu: '%s'"
 
-#: setup.c:185
-#, 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 ""
-"%s: Çalışma ağacında böyle bir yol yok.\n"
-"Yerelde var olmayan yolları belirtmek için 'git <komut> -- <yol>... kullanın."
+#: sequencer.c:2811 sequencer.c:4644
+msgid "empty commit set passed"
+msgstr "boş işleme seti aktarıldı"
 
-#: setup.c:198
-#, c-format
-msgid ""
-"ambiguous argument '%s': unknown revision or path not in the working tree.\n"
-"Use '--' to separate paths from revisions, like this:\n"
-"'git <command> [<revision>...] -- [<file>...]'"
-msgstr ""
-"Belirsiz argüman '%s': Çalışma ağacında olmayan bilinmeyen revizyon veya "
-"yol.\n"
-"Yolları revizyonlardan ayırmak için '--' kullanın, şöyle:\n"
-"'git <komut> [<revizyon>...] -- [<dosya>...]'"
+#: sequencer.c:2828
+msgid "revert is already in progress"
+msgstr "geri al halihazırda sürüyor"
 
-#: setup.c:264
+#: sequencer.c:2830
 #, c-format
-msgid "option '%s' must come before non-option arguments"
-msgstr "'%s' seçeneği seçenek olmayan argümanlardan önce gelmeli"
+msgid "try \"git revert (--continue | %s--abort | --quit)\""
+msgstr "\"git revert (--continue | %s--abort | --quit)\" deneyin"
 
-#: setup.c:283
+#: sequencer.c:2833
+msgid "cherry-pick is already in progress"
+msgstr "seç-al halihazırda sürüyor"
+
+#: sequencer.c:2835
 #, c-format
-msgid ""
-"ambiguous argument '%s': both revision and filename\n"
-"Use '--' to separate paths from revisions, like this:\n"
-"'git <command> [<revision>...] -- [<file>...]'"
-msgstr ""
-"Belirsiz argüman '%s': Hem revizyon hem dosya adı.\n"
-"Yolları revizyonlardan ayırmak için '--' kullanın, şöyle:\n"
-"'git <komut> [<revizyon>...] -- [<dosya>...]'"
+msgid "try \"git cherry-pick (--continue | %s--abort | --quit)\""
+msgstr "\"git cherry-pick (--continue | %s--abort | --quit)\" deneyin"
 
-#: setup.c:419
-msgid "unable to set up work tree using invalid config"
-msgstr "geçersiz yapılandırma kullanılarak çalışma ağacı kurulamıyor"
+#: sequencer.c:2849
+#, c-format
+msgid "could not create sequencer directory '%s'"
+msgstr "ardıştırıcı dizini '%s' oluşturulamadı"
 
-#: setup.c:423
-msgid "this operation must be run in a work tree"
-msgstr "bu işlem bir çalışma ağacı içinde çalıştırılmalı"
+#: sequencer.c:2864
+msgid "could not lock HEAD"
+msgstr "HEAD kilitlenemedi"
 
-#: setup.c:661
-#, c-format
-msgid "Expected git repo version <= %d, found %d"
-msgstr "Beklenen git repo sürümü <= %d, %d bulundu"
+#: sequencer.c:2924 sequencer.c:4379
+msgid "no cherry-pick or revert in progress"
+msgstr "süren bir seç-al veya geri al yok"
 
-#: setup.c:669
-msgid "unknown repository extensions found:"
-msgstr "bilinmeyen depo genişletmeleri bulundu:"
+#: sequencer.c:2926 sequencer.c:2937
+msgid "cannot resolve HEAD"
+msgstr "HEAD çözülemiyor"
 
-#: setup.c:681
-msgid "repo version is 0, but v1-only extensions found:"
-msgstr "depo sürümü 0; ancak v1'e özel genişletmeler bulundu:"
+#: sequencer.c:2928 sequencer.c:2972
+msgid "cannot abort from a branch yet to be born"
+msgstr "daha doğmamış bir daldan iptal edilemiyor"
 
-#: setup.c:700
+#: sequencer.c:2958 builtin/grep.c:757
 #, c-format
-msgid "error opening '%s'"
-msgstr "'%s' açılırken hata"
+msgid "cannot open '%s'"
+msgstr "'%s' açılamıyor"
 
-#: setup.c:702
+#: sequencer.c:2960
 #, c-format
-msgid "too large to be a .git file: '%s'"
-msgstr "bir .git dosyası olabilmek için çok büyük: '%s'"
+msgid "cannot read '%s': %s"
+msgstr "'%s' okunamıyor: %s"
 
-#: setup.c:704
-#, c-format
-msgid "error reading %s"
-msgstr "%s okunurken hata"
+#: sequencer.c:2961
+msgid "unexpected end of file"
+msgstr "beklenmedik dosya sonu"
 
-#: setup.c:706
+#: sequencer.c:2967
 #, c-format
-msgid "invalid gitfile format: %s"
-msgstr "geçersiz gitfile biçimi: %s"
+msgid "stored pre-cherry-pick HEAD file '%s' is corrupt"
+msgstr "depolanmış seç-al öncesi HEAD dosyası '%s' hasar görmüş"
 
-#: setup.c:708
-#, c-format
-msgid "no path in gitfile: %s"
-msgstr "gitfile içinde yol yok: %s"
+#: sequencer.c:2978
+msgid "You seem to have moved HEAD. Not rewinding, check your HEAD!"
+msgstr "HEAD'i taşımış görünüyorsunuz. Geri sarılmıyor, HEAD'inizi denetleyin!"
 
-#: setup.c:710
-#, c-format
-msgid "not a git repository: %s"
-msgstr "bir git deposu değil: %s"
+#: sequencer.c:3019
+msgid "no revert in progress"
+msgstr "süren bir geri al yok"
 
-#: setup.c:812
-#, c-format
-msgid "'$%s' too big"
-msgstr "'$%s' çok büyük"
+#: sequencer.c:3028
+msgid "no cherry-pick in progress"
+msgstr "süren bir seç-al yok"
 
-#: setup.c:826
+#: sequencer.c:3038
+msgid "failed to skip the commit"
+msgstr "işleme atlanamadı"
+
+#: sequencer.c:3045
+msgid "there is nothing to skip"
+msgstr "atlanacak bir şey yok"
+
+#: sequencer.c:3048
 #, c-format
-msgid "not a git repository: '%s'"
-msgstr "bir git deposu değil: '%s'"
+msgid ""
+"have you committed already?\n"
+"try \"git %s --continue\""
+msgstr ""
+"İşlemeyi yaptınız mı?\n"
+"\"git %s --continue\" deneyin.\""
 
-#: setup.c:855 setup.c:857 setup.c:888
+#: sequencer.c:3210 sequencer.c:4271
+msgid "cannot read HEAD"
+msgstr "HEAD okunamıyor"
+
+#: sequencer.c:3227
 #, c-format
-msgid "cannot chdir to '%s'"
-msgstr "'%s' konumuna chdir yapılamıyor"
+msgid "unable to copy '%s' to '%s'"
+msgstr "'%s', '%s' konumuna kopyalanamıyor"
 
-#: setup.c:860 setup.c:916 setup.c:926 setup.c:965 setup.c:973
-msgid "cannot come back to cwd"
-msgstr "cwd'ye geri dönülemiyor"
+#: sequencer.c:3235
+#, c-format
+msgid ""
+"You can amend the commit now, with\n"
+"\n"
+"  git commit --amend %s\n"
+"\n"
+"Once you are satisfied with your changes, run\n"
+"\n"
+"  git rebase --continue\n"
+msgstr ""
+"İşlemeyi şimdi şu komutla değiştirebilirsiniz:\n"
+"\n"
+"\tgit commit --amend %s\n"
+"\n"
+"Değişikliklerinizden memnunsanız şu komutla sürdürün:\n"
+"\n"
+"\tgit rebase --continue\n"
 
-#: setup.c:987
+#: sequencer.c:3245
 #, c-format
-msgid "failed to stat '%*s%s%s'"
-msgstr "'%*s%s%s' bilgileri alınamadı"
+msgid "Could not apply %s... %.*s"
+msgstr "%s uygulanamıyor... %.*s"
 
-#: setup.c:1225
-msgid "Unable to read current working directory"
-msgstr "Şu anki çalışma dizini okunamıyor"
+#: sequencer.c:3252
+#, c-format
+msgid "Could not merge %.*s"
+msgstr "%.*s birleştirilemedi"
 
-#: setup.c:1234 setup.c:1240
+#: sequencer.c:3266 sequencer.c:3270 builtin/difftool.c:640
 #, c-format
-msgid "cannot change to '%s'"
-msgstr "şuraya değiştirilemiyor: '%s'"
+msgid "could not copy '%s' to '%s'"
+msgstr "'%s', '%s' konumuna kopyalanamadı"
 
-#: setup.c:1245
+#: sequencer.c:3282
 #, c-format
-msgid "not a git repository (or any of the parent directories): %s"
-msgstr "bir git deposu (veya üst dizinlerinden birisi) değil: %s"
+msgid "Executing: %s\n"
+msgstr "Çalıştırılıyor: %s\n"
 
-#: setup.c:1251
+#: sequencer.c:3297
 #, 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)."
+"execution failed: %s\n"
+"%sYou can fix the problem, and then run\n"
+"\n"
+"  git rebase --continue\n"
+"\n"
 msgstr ""
-"Bir git deposu veya (%s bağlama noktasına kadar olan üstü) değil\n"
-"Dosya sistemi sınırında duruluyor (GIT_DISCOVERY_ACROSS_FILESYSTEM "
-"ayarlanmamış)."
+"Çalıştırma başarısız: %s\n"
+"%sSorunu çözüp sürdürmek için şunu çalıştırın:\n"
+"\n"
+"\tgit rebase --continue\n"
+"\n"
 
-#: setup.c:1362
+#: sequencer.c:3303
+msgid "and made changes to the index and/or the working tree\n"
+msgstr "ve indekse ve/veya çalışma ağacına değişiklikler yapıldı\n"
+
+#: sequencer.c:3309
 #, c-format
 msgid ""
-"problem with core.sharedRepository filemode value (0%.3o).\n"
-"The owner of files must always have read and write permissions."
+"execution succeeded: %s\n"
+"but left changes to the index and/or the working tree\n"
+"Commit or stash your changes, and then run\n"
+"\n"
+"  git rebase --continue\n"
+"\n"
 msgstr ""
-"core.sharedRepository dosya kipi değeri ile sorun (0%.3o).\n"
-"Dosyaların sahibinin her zaman okuma ve yazma izni olması gerekir."
+"Çalıştırma başarılı oldu: %s,\n"
+"ancak indeksinize ve/veya çalışma ağacınıza değişiklikler bıraktı\n"
+"Değişikliklerinizi işleyin veya zulalayın, ardından şunu çalıştırın:\n"
+"\n"
+"\tgit rebase --continue\n"
+"\n"
 
-#: setup.c:1409
-msgid "open /dev/null or dup failed"
-msgstr "/dev/null açılması veya açıklayıcı çoğaltılması başarısız"
+#: sequencer.c:3370
+#, c-format
+msgid "illegal label name: '%.*s'"
+msgstr "izin verilmeyen etiket adı: '%.*s'"
 
-#: setup.c:1424
-msgid "fork failed"
-msgstr "çatallama başarısız"
+#: sequencer.c:3424
+msgid "writing fake root commit"
+msgstr "sahte kök işlemesi yazılıyor"
 
-#: setup.c:1429
-msgid "setsid failed"
-msgstr "setsid başarısız"
+#: sequencer.c:3429
+msgid "writing squash-onto"
+msgstr "squash-onto yazılıyor"
+
+#: sequencer.c:3513
+#, c-format
+msgid "could not resolve '%s'"
+msgstr "'%s' çözülemedi"
+
+#: sequencer.c:3546
+msgid "cannot merge without a current revision"
+msgstr "güncel bir revizyon olmadan birleştirilemiyor"
 
-#: sha1-file.c:480
+#: sequencer.c:3568
 #, c-format
-msgid "object directory %s does not exist; check .git/objects/info/alternates"
-msgstr "nesne dizini %s yok; şurayı denetleyin: .git/objects/info/alternates"
+msgid "unable to parse '%.*s'"
+msgstr "'%.*s' ayrıştırılamıyor"
 
-#: sha1-file.c:531
+#: sequencer.c:3577
 #, c-format
-msgid "unable to normalize alternate object path: %s"
-msgstr "alternatif nesne yolu olağanlaştırılamıyor: %s"
+msgid "nothing to merge: '%.*s'"
+msgstr "birleştirilecek bir şey yok: '%.*s'"
 
-#: sha1-file.c:603
-#, c-format
-msgid "%s: ignoring alternate object stores, nesting too deep"
-msgstr "%s: alternatif nesne depoları yok sayılıyor, iç içe geçme pek derin"
+#: sequencer.c:3589
+msgid "octopus merge cannot be executed on top of a [new root]"
+msgstr "ahtapot birleştirmesi bir [yeni kök]ün üzerinde çalıştırılamaz"
 
-#: sha1-file.c:610
+#: sequencer.c:3605
 #, c-format
-msgid "unable to normalize object directory: %s"
-msgstr "nesne dizini olağanlaştırılamıyor: %s"
+msgid "could not get commit message of '%s'"
+msgstr "'%s' işlemesinin işleme iletisi alınamadı"
 
-#: sha1-file.c:653
-msgid "unable to fdopen alternates lockfile"
-msgstr "alternatifler kilit dosyası fdopen yapılamıyor"
+#: sequencer.c:3788
+#, c-format
+msgid "could not even attempt to merge '%.*s'"
+msgstr "şunu birleştirme girişiminde bulunulamadı bile: '%.*s'"
 
-#: sha1-file.c:671
-msgid "unable to read alternates file"
-msgstr "alternatifler dosyası okunamıyor"
+#: sequencer.c:3804
+msgid "merge: Unable to write new index file"
+msgstr "merge: Yeni indeks dosyası yazılamıyor"
 
-#: sha1-file.c:678
-msgid "unable to move new alternates file into place"
-msgstr "yeni alternatifler dosyası yerine taşınamıyor"
+#: sequencer.c:3878
+msgid "Cannot autostash"
+msgstr "Kendiliğinden zulalanamıyor"
 
-#: sha1-file.c:713
+#: sequencer.c:3881
 #, c-format
-msgid "path '%s' does not exist"
-msgstr "'%s' diye bir yol yok"
+msgid "Unexpected stash response: '%s'"
+msgstr "Beklenmedik zula yanıtı: '%s'"
 
-#: sha1-file.c:734
+#: sequencer.c:3887
 #, c-format
-msgid "reference repository '%s' as a linked checkout is not supported yet."
-msgstr ""
-"Bağlantı yapılmış çıkış olarak '%s' başvuru deposu henüz desteklenmiyor."
+msgid "Could not create directory for '%s'"
+msgstr "'%s' için dizin oluşturulamadı"
 
-#: sha1-file.c:740
+#: sequencer.c:3890
 #, c-format
-msgid "reference repository '%s' is not a local repository."
-msgstr "Başvuru deposu '%s' yerel bir depo değil."
+msgid "Created autostash: %s\n"
+msgstr "Zula kendiliğinden oluşturuldu: %s\n"
 
-#: sha1-file.c:746
-#, c-format
-msgid "reference repository '%s' is shallow"
-msgstr "başvuru deposu '%s' sığ"
+#: sequencer.c:3894
+msgid "could not reset --hard"
+msgstr "'reset --hard' yapılamadı"
 
-#: sha1-file.c:754
+#: sequencer.c:3919
 #, c-format
-msgid "reference repository '%s' is grafted"
-msgstr "başvuru deposu '%s' aşılı"
+msgid "Applied autostash.\n"
+msgstr "Kendiliğinden zulalama uygulandı.\n"
 
-#: sha1-file.c:814
+#: sequencer.c:3931
 #, c-format
-msgid "invalid line while parsing alternate refs: %s"
-msgstr "alternatif başvurular ayrıştırılırken geçersiz satır: %s"
+msgid "cannot store %s"
+msgstr "%s depolanamıyor"
 
-#: sha1-file.c:964
+#: sequencer.c:3934
 #, c-format
-msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
-msgstr "%<PRIuMAX>, %<PRIuMAX> sınırı üzerinden mmap yapılmaya çalışılıyor"
+msgid ""
+"%s\n"
+"Your changes are safe in the stash.\n"
+"You can run \"git stash pop\" or \"git stash drop\" at any time.\n"
+msgstr ""
+"%s\n"
+"Değişiklikleriniz zulada güvende.\n"
+"İstediğiniz zaman \"git stash pop\" veya \"git stash drop\" yapabilirsiniz.\n"
 
-#: sha1-file.c:985
-msgid "mmap failed"
-msgstr "mmap başarısız"
+#: sequencer.c:3939
+msgid "Applying autostash resulted in conflicts."
+msgstr "Kendiliğinden zulalama çakışmalara neden oldu."
 
-#: sha1-file.c:1149
-#, c-format
-msgid "object file %s is empty"
-msgstr "nesne dosyası %s boş"
+#: sequencer.c:3940
+msgid "Autostash exists; creating a new stash entry."
+msgstr "Kendiliğinden zulalama mevcut; yeni bir zula girdisi oluşturuluyor."
+
+#: sequencer.c:4033 git-rebase--preserve-merges.sh:769
+msgid "could not detach HEAD"
+msgstr "HEAD ayrılamadı"
 
-#: sha1-file.c:1284 sha1-file.c:2477
+#: sequencer.c:4048
 #, c-format
-msgid "corrupt loose object '%s'"
-msgstr "hasar görmüş gevşek nesne '%s'"
+msgid "Stopped at HEAD\n"
+msgstr "HEAD'de duruldu\n"
 
-#: sha1-file.c:1286 sha1-file.c:2481
+#: sequencer.c:4050
 #, c-format
-msgid "garbage at end of loose object '%s'"
-msgstr "gevşek nesne '%s' sonunda anlamsız veri"
+msgid "Stopped at %s\n"
+msgstr "%s konumunda duruldu\n"
 
-#: sha1-file.c:1328
-msgid "invalid object type"
-msgstr "geçersiz nesne türü"
+#: sequencer.c:4058
+#, 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 ""
+"todo komutu çalıştırılamadı.\n"
+"\n"
+"\t%.*s\n"
+"Yeniden zamanlandı; sürdürmeden önce komutu düzenlemek için lütfen\n"
+"önce yapılacaklar listesini düzenleyin:\n"
+"\n"
+"\tgit rebase --edit-todo\n"
+"\tgit rebase --continue\n"
 
-#: sha1-file.c:1412
+#: sequencer.c:4104
 #, c-format
-msgid "unable to unpack %s header with --allow-unknown-type"
-msgstr "%s üstbilgisi --allow-unknown-type ile açılamıyor"
+msgid "Rebasing (%d/%d)%s"
+msgstr "Yeniden temellendiriliyor: (%d/%d)%s"
 
-#: sha1-file.c:1415
+#: sequencer.c:4149
 #, c-format
-msgid "unable to unpack %s header"
-msgstr "%s üstbilgisi açılamıyor"
+msgid "Stopped at %s...  %.*s\n"
+msgstr "%s konumunda durdu... %.*s\n"
 
-#: sha1-file.c:1421
+#: sequencer.c:4220
 #, c-format
-msgid "unable to parse %s header with --allow-unknown-type"
-msgstr "%s üstbilgisi paketi --allow-unknown-type ile ayrıştırılamıyor"
+msgid "unknown command %d"
+msgstr "bilinmeyen komut %d"
+
+#: sequencer.c:4279
+msgid "could not read orig-head"
+msgstr "orig-head okunamadı"
+
+#: sequencer.c:4284
+msgid "could not read 'onto'"
+msgstr "'onto' okunamadı"
 
-#: sha1-file.c:1424
+#: sequencer.c:4298
 #, c-format
-msgid "unable to parse %s header"
-msgstr "%s üstbilgisi ayrıştırılamıyor"
+msgid "could not update HEAD to %s"
+msgstr "HEAD şu konuma güncellenemedi: %s"
 
-#: sha1-file.c:1651
+#: sequencer.c:4358
 #, c-format
-msgid "failed to read object %s"
-msgstr "%s nesnesi okunamadı"
+msgid "Successfully rebased and updated %s.\n"
+msgstr "%s başarıyla yeniden temellendirildi ve güncellendi.\n"
+
+#: sequencer.c:4391
+msgid "cannot rebase: You have unstaged changes."
+msgstr "Yeniden temellendirilemiyor: Hazırlanmamış değişiklikleriniz var."
 
-#: sha1-file.c:1655
+#: sequencer.c:4400
+msgid "cannot amend non-existing commit"
+msgstr "var olmayan işleme değiştirilemiyor"
+
+#: sequencer.c:4402
 #, c-format
-msgid "replacement %s not found for %s"
-msgstr "%s yedeği %s için bulunamadı"
+msgid "invalid file: '%s'"
+msgstr "geçersiz dosya: '%s'"
 
-#: sha1-file.c:1659
+#: sequencer.c:4404
 #, c-format
-msgid "loose object %s (stored in %s) is corrupt"
-msgstr "%s gevşek nesnesi (%s içinde depolanıyor) hasar görmüş"
+msgid "invalid contents: '%s'"
+msgstr "geçersiz içerik: '%s'"
+
+#: sequencer.c:4407
+msgid ""
+"\n"
+"You have uncommitted changes in your working tree. Please, commit them\n"
+"first and then run 'git rebase --continue' again."
+msgstr ""
+"\n"
+"Çalışma ağacınızda işlenmemiş değişiklikleriniz var. Lütfen önce\n"
+"onları işleyin ve ardından 'git rebase --continue' yapın."
 
-#: sha1-file.c:1663
+#: sequencer.c:4443 sequencer.c:4482
 #, c-format
-msgid "packed object %s (stored in %s) is corrupt"
-msgstr "paketlenmiş nesne %s (%s içinde depolanıyor) hasar görmüş"
+msgid "could not write file: '%s'"
+msgstr "dosya yazılamadı: '%s'"
+
+#: sequencer.c:4498
+msgid "could not remove CHERRY_PICK_HEAD"
+msgstr "CHERRY_PICK_HEAD kaldırılamadı"
+
+#: sequencer.c:4505
+msgid "could not commit staged changes."
+msgstr "Hazırlanmış değişiklikler işlenemedi."
 
-#: sha1-file.c:1768
+#: sequencer.c:4621
 #, c-format
-msgid "unable to write file %s"
-msgstr "%s dosyası yazılamıyor"
+msgid "%s: can't cherry-pick a %s"
+msgstr "%s: Bir %s seçip alınamıyor"
 
-#: sha1-file.c:1775
+#: sequencer.c:4625
 #, c-format
-msgid "unable to set permission to '%s'"
-msgstr "'%s' ögesine izin ayarlanamıyor"
+msgid "%s: bad revision"
+msgstr "%s hatalı revizyon"
 
-#: sha1-file.c:1782
-msgid "file write error"
-msgstr "dosya yazım hatası"
+#: sequencer.c:4660
+msgid "can't revert as initial commit"
+msgstr "ilk işleme geri alınamaz"
 
-#: sha1-file.c:1802
-msgid "error when closing loose object file"
-msgstr "gevşek nesne dosyası kapatılırken hata"
+#: sequencer.c:5137
+msgid "make_script: unhandled options"
+msgstr "make_script: ele alınmayan seçenekler"
 
-#: sha1-file.c:1867
-#, c-format
-msgid "insufficient permission for adding an object to repository database %s"
-msgstr "%s depo veritabanına nesne eklemek için yetersiz izin"
+#: sequencer.c:5140
+msgid "make_script: error preparing revisions"
+msgstr "make_script: revizyonlar hazırlanırken hata"
 
-#: sha1-file.c:1869
-msgid "unable to create temporary file"
-msgstr "geçici dosya oluşturulamıyor"
+#: sequencer.c:5382 sequencer.c:5399
+msgid "nothing to do"
+msgstr "yapılacak bir şey yok"
 
-#: sha1-file.c:1893
-msgid "unable to write loose object file"
-msgstr "gevşek nesne dosyası yazılamıyor"
+#: sequencer.c:5418
+msgid "could not skip unnecessary pick commands"
+msgstr "gerekli olmayan seçim komutları atlanamadı"
 
-#: sha1-file.c:1899
-#, c-format
-msgid "unable to deflate new object %s (%d)"
-msgstr "yeni nesne %s söndürülemiyor (%d)"
+#: sequencer.c:5512
+msgid "the script was already rearranged."
+msgstr "betik halihazırda yeniden düzenlenmişti"
 
-#: sha1-file.c:1903
+#: setup.c:133
 #, c-format
-msgid "deflateEnd on object %s failed (%d)"
-msgstr "%s nesnesi üzerinde deflateEnd başarısız oldu (%d)"
+msgid "'%s' is outside repository at '%s'"
+msgstr "'%s', '%s' konumunda depo dışında"
 
-#: sha1-file.c:1907
+#: setup.c:185
 #, c-format
-msgid "confused by unstable object source data for %s"
-msgstr "%s için olan nesne kaynak verisinden dolayı kafa karışıklığı"
+msgid ""
+"%s: no such path in the working tree.\n"
+"Use 'git <command> -- <path>...' to specify paths that do not exist locally."
+msgstr ""
+"%s: Çalışma ağacında böyle bir yol yok.\n"
+"Yerelde var olmayan yolları belirtmek için 'git <komut> -- <yol>... kullanın."
 
-#: sha1-file.c:1917 builtin/pack-objects.c:1086
+#: setup.c:198
 #, c-format
-msgid "failed utime() on %s"
-msgstr "%s üzerinde utime() başarısız"
+msgid ""
+"ambiguous argument '%s': unknown revision or path not in the working tree.\n"
+"Use '--' to separate paths from revisions, like this:\n"
+"'git <command> [<revision>...] -- [<file>...]'"
+msgstr ""
+"Belirsiz argüman '%s': Çalışma ağacında olmayan bilinmeyen revizyon veya "
+"yol.\n"
+"Yolları revizyonlardan ayırmak için '--' kullanın, şöyle:\n"
+"'git <komut> [<revizyon>...] -- [<dosya>...]'"
 
-#: sha1-file.c:1994
+#: setup.c:264
 #, c-format
-msgid "cannot read object for %s"
-msgstr "%s için nesne okunamıyor"
-
-#: sha1-file.c:2045
-msgid "corrupt commit"
-msgstr "hasar görmüş işleme"
-
-#: sha1-file.c:2053
-msgid "corrupt tag"
-msgstr "hasar görmüş etiket"
+msgid "option '%s' must come before non-option arguments"
+msgstr "'%s' seçeneği seçenek olmayan argümanlardan önce gelmeli"
 
-#: sha1-file.c:2153
+#: setup.c:283
 #, c-format
-msgid "read error while indexing %s"
-msgstr "%s indekslenirken okuma hatası"
+msgid ""
+"ambiguous argument '%s': both revision and filename\n"
+"Use '--' to separate paths from revisions, like this:\n"
+"'git <command> [<revision>...] -- [<file>...]'"
+msgstr ""
+"Belirsiz argüman '%s': Hem revizyon hem dosya adı.\n"
+"Yolları revizyonlardan ayırmak için '--' kullanın, şöyle:\n"
+"'git <komut> [<revizyon>...] -- [<dosya>...]'"
+
+#: setup.c:419
+msgid "unable to set up work tree using invalid config"
+msgstr "geçersiz yapılandırma kullanılarak çalışma ağacı kurulamıyor"
 
-#: sha1-file.c:2156
-#, c-format
-msgid "short read while indexing %s"
-msgstr "%s indekslenirken kısa read"
+#: setup.c:423
+msgid "this operation must be run in a work tree"
+msgstr "bu işlem bir çalışma ağacı içinde çalıştırılmalı"
 
-#: sha1-file.c:2229 sha1-file.c:2239
+#: setup.c:661
 #, c-format
-msgid "%s: failed to insert into database"
-msgstr "%s: veritabanına ekleme başarısız"
+msgid "Expected git repo version <= %d, found %d"
+msgstr "Beklenen git repo sürümü <= %d, %d bulundu"
 
-#: sha1-file.c:2245
-#, c-format
-msgid "%s: unsupported file type"
-msgstr "%s: desteklenmeyen dosya türü"
+#: setup.c:669
+msgid "unknown repository extensions found:"
+msgstr "bilinmeyen depo genişletmeleri bulundu:"
 
-#: sha1-file.c:2269
-#, c-format
-msgid "%s is not a valid object"
-msgstr "%s geçerli bir nesne değil"
+#: setup.c:681
+msgid "repo version is 0, but v1-only extensions found:"
+msgstr "depo sürümü 0; ancak v1'e özel genişletmeler bulundu:"
 
-#: sha1-file.c:2271
+#: setup.c:700
 #, c-format
-msgid "%s is not a valid '%s' object"
-msgstr "%s geçerli bir '%s' nesnesi değil"
+msgid "error opening '%s'"
+msgstr "'%s' açılırken hata"
 
-#: sha1-file.c:2298 builtin/index-pack.c:192
+#: setup.c:702
 #, c-format
-msgid "unable to open %s"
-msgstr "%s açılamıyor"
+msgid "too large to be a .git file: '%s'"
+msgstr "bir .git dosyası olabilmek için çok büyük: '%s'"
 
-#: sha1-file.c:2488 sha1-file.c:2541
+#: setup.c:704
 #, c-format
-msgid "hash mismatch for %s (expected %s)"
-msgstr "%s için sağlama uyuşmazlığı (%s bekleniyordu)"
+msgid "error reading %s"
+msgstr "%s okunurken hata"
 
-#: sha1-file.c:2512
+#: setup.c:706
 #, c-format
-msgid "unable to mmap %s"
-msgstr "%s mmap yapılamadı"
+msgid "invalid gitfile format: %s"
+msgstr "geçersiz gitfile biçimi: %s"
 
-#: sha1-file.c:2517
+#: setup.c:708
 #, c-format
-msgid "unable to unpack header of %s"
-msgstr "%s üstbilgisi açılamıyor"
+msgid "no path in gitfile: %s"
+msgstr "gitfile içinde yol yok: %s"
 
-#: sha1-file.c:2523
+#: setup.c:710
 #, c-format
-msgid "unable to parse header of %s"
-msgstr "%s üstbilgisi ayrıştırılamıyor"
+msgid "not a git repository: %s"
+msgstr "bir git deposu değil: %s"
 
-#: sha1-file.c:2534
+#: setup.c:812
 #, c-format
-msgid "unable to unpack contents of %s"
-msgstr "%s içeriği açılamıyor"
+msgid "'$%s' too big"
+msgstr "'$%s' çok büyük"
 
-#: sha1-name.c:486
+#: setup.c:826
 #, c-format
-msgid "short SHA1 %s is ambiguous"
-msgstr "kısa SHA1 %s belirsiz"
-
-#: sha1-name.c:497
-msgid "The candidates are:"
-msgstr "Adaylar:"
-
-#: sha1-name.c:796
-msgid ""
-"Git normally never creates a ref that ends with 40 hex characters\n"
-"because it will be ignored when you just specify 40-hex. These refs\n"
-"may be created by mistake. For example,\n"
-"\n"
-"  git switch -c $br $(git rev-parse ...)\n"
-"\n"
-"where \"$br\" is somehow empty and a 40-hex ref is created. Please\n"
-"examine these refs and maybe delete them. Turn this message off by\n"
-"running \"git config advice.objectNameWarning false\""
-msgstr ""
-"Git normalde hiçbir zaman 40 onaltılı karakterlerle biten bir başvuru\n"
-"oluşturmaz; çünkü 40 onaltılı bir başvuru, onu belirlediğiniz zaman yok\n"
-"sayılacaktır. Bu başvurular yanlışlıkla oluşturulmuş olabilir. Örneğin:\n"
-"\n"
-"\tgit switch -c $br $(git rev-parse ...)\n"
-"\n"
-"komutunda \"$br\" bir şekilde boş kalmış ve 40 onaltılı bir başvuru\n"
-"oluşturulmuş. Lütfen bu başvuruları inceleyin ve gerekirse silin. Bu "
-"iletiyi\n"
-"kapatmak için \"git config advice.objectNameWarning\" yapın."
+msgid "not a git repository: '%s'"
+msgstr "bir git deposu değil: '%s'"
 
-#: sha1-name.c:916
+#: setup.c:855 setup.c:857 setup.c:888
 #, c-format
-msgid "log for '%.*s' only goes back to %s"
-msgstr "'%.*s' günlüğü yalnızca şuna geri gider: %s"
+msgid "cannot chdir to '%s'"
+msgstr "'%s' konumuna chdir yapılamıyor"
 
-#: sha1-name.c:924
-#, c-format
-msgid "log for '%.*s' only has %d entries"
-msgstr "'%.*s' günlüğünde yalnızca %d girdi var"
+#: setup.c:860 setup.c:916 setup.c:926 setup.c:965 setup.c:973
+msgid "cannot come back to cwd"
+msgstr "cwd'ye geri dönülemiyor"
 
-#: sha1-name.c:1702
+#: setup.c:987
 #, c-format
-msgid "path '%s' exists on disk, but not in '%.*s'"
-msgstr "'%s' yolu disk üzerinde mevcut; ancak '%.*s' içinde değil"
+msgid "failed to stat '%*s%s%s'"
+msgstr "'%*s%s%s' bilgileri alınamadı"
+
+#: setup.c:1225
+msgid "Unable to read current working directory"
+msgstr "Şu anki çalışma dizini okunamıyor"
 
-#: sha1-name.c:1708
+#: setup.c:1234 setup.c:1240
 #, c-format
-msgid ""
-"path '%s' exists, but not '%s'\n"
-"hint: Did you mean '%.*s:%s' aka '%.*s:./%s'?"
-msgstr ""
-"'%s' yolu mevcut; ancak '%s' değil\n"
-"İpucu: Şunu mu demek istediniz: '%.*s:%s', nam-ı diğer '%.*s:./%s'?"
+msgid "cannot change to '%s'"
+msgstr "şuraya değiştirilemiyor: '%s'"
 
-#: sha1-name.c:1717
+#: setup.c:1245
 #, c-format
-msgid "path '%s' does not exist in '%.*s'"
-msgstr "'%s' yolu '%.*s' içinde mevcut değil"
+msgid "not a git repository (or any of the parent directories): %s"
+msgstr "bir git deposu (veya üst dizinlerinden birisi) değil: %s"
 
-#: sha1-name.c:1745
+#: setup.c:1251
 #, c-format
 msgid ""
-"path '%s' is in the index, but not at stage %d\n"
-"hint: Did you mean ':%d:%s'?"
+"not a git repository (or any parent up to mount point %s)\n"
+"Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set)."
 msgstr ""
-"'%s' yolu indekste; ancak %d numaralı alanda değil\n"
-"İpucu: Şunu mu demek istediniz: ':%d:%s'?"
+"Bir git deposu veya (%s bağlama noktasına kadar olan üstü) değil\n"
+"Dosya sistemi sınırında duruluyor (GIT_DISCOVERY_ACROSS_FILESYSTEM "
+"ayarlanmamış)."
 
-#: sha1-name.c:1761
+#: setup.c:1362
 #, c-format
 msgid ""
-"path '%s' is in the index, but not '%s'\n"
-"hint: Did you mean ':%d:%s' aka ':%d:./%s'?"
+"problem with core.sharedRepository filemode value (0%.3o).\n"
+"The owner of files must always have read and write permissions."
 msgstr ""
-"'%s' yolu indekste; ancak '%s' değil\n"
-"İpucu: Şunu mu demek istediniz: '%d:%s', nam-ı diğer ':%d:./%s'?"
-
-#: sha1-name.c:1769
-#, c-format
-msgid "path '%s' exists on disk, but not in the index"
-msgstr "'%s' yolu diskte mevcut; ancak indekste değil"
+"core.sharedRepository dosya kipi değeri ile sorun (0%.3o).\n"
+"Dosyaların sahibinin her zaman okuma ve yazma izni olması gerekir."
 
-#: sha1-name.c:1771
-#, c-format
-msgid "path '%s' does not exist (neither on disk nor in the index)"
-msgstr "'%s' diye bir yol yok (ne diskte ne de indekste)"
+#: setup.c:1409
+msgid "open /dev/null or dup failed"
+msgstr "/dev/null açılması veya açıklayıcı çoğaltılması başarısız"
 
-#: sha1-name.c:1784
-msgid "relative path syntax can't be used outside working tree"
-msgstr "göreceli yol sözdizimi çalışma ağacı dışında kullanılamaz"
+#: setup.c:1424
+msgid "fork failed"
+msgstr "çatallama başarısız"
 
-#: sha1-name.c:1922
-#, c-format
-msgid "invalid object name '%.*s'."
-msgstr "geçersiz nesne adı: '%.*s'"
+#: setup.c:1429
+msgid "setsid failed"
+msgstr "setsid başarısız"
 
 #. TRANSLATORS: IEC 80000-13:2008 gibibyte
 #: strbuf.c:848
@@ -8243,7 +8500,7 @@ msgstr[0] "%u bayt/sn"
 msgstr[1] "%u bayt/sn"
 
 #: strbuf.c:1166 wrapper.c:199 wrapper.c:369 builtin/am.c:719
-#: builtin/rebase.c:864
+#: builtin/rebase.c:866
 #, c-format
 msgid "could not open '%s' for writing"
 msgstr "'%s' yazma için açılamadı"
@@ -8308,12 +8565,12 @@ msgstr "içi doldurulmamış '%s' altmodülünde"
 msgid "Pathspec '%s' is in submodule '%.*s'"
 msgstr "Yol belirteci '%s' '%.*s' altmodülünde"
 
-#: submodule.c:434
+#: submodule.c:435
 #, c-format
 msgid "bad --ignore-submodules argument: %s"
 msgstr "hatalı --ignore-submodules argümanı: %s"
 
-#: submodule.c:816
+#: submodule.c:817
 #, c-format
 msgid ""
 "Submodule in commit %s at path: '%s' collides with a submodule named the "
@@ -8322,12 +8579,12 @@ msgstr ""
 "%s işlemesinde '%s' yolunda bulunan altmodül, aynı adlı bir altmodülle "
 "çarpışıyor. Atlanıyor."
 
-#: submodule.c:919
+#: submodule.c:920
 #, c-format
 msgid "submodule entry '%s' (%s) is a %s, not a commit"
 msgstr "altmodül girdisi '%s' (%s) bir %s, işleme değil"
 
-#: submodule.c:1004
+#: submodule.c:1005
 #, c-format
 msgid ""
 "Could not run 'git rev-list <commits> --not --remotes -n 1' command in "
@@ -8336,36 +8593,36 @@ msgstr ""
 "'%s' altmodülünde 'git rev-list <commits> --not --remotes -n 1' "
 "çalıştırılamadı"
 
-#: submodule.c:1127
+#: submodule.c:1128
 #, c-format
 msgid "process for submodule '%s' failed"
 msgstr "'%s' altmodülü için işlem başarısız oldu"
 
-#: submodule.c:1156 builtin/branch.c:680 builtin/submodule--helper.c:2469
+#: submodule.c:1157 builtin/branch.c:689 builtin/submodule--helper.c:2469
 msgid "Failed to resolve HEAD as a valid ref."
 msgstr "HEAD geçerli bir başvuru olarak çözülemedi."
 
-#: submodule.c:1167
+#: submodule.c:1168
 #, c-format
 msgid "Pushing submodule '%s'\n"
 msgstr "'%s' altmodülü itiliyor\n"
 
-#: submodule.c:1170
+#: submodule.c:1171
 #, c-format
 msgid "Unable to push submodule '%s'\n"
 msgstr "'%s' altmodülü itilemiyor\n"
 
-#: submodule.c:1462
+#: submodule.c:1463
 #, c-format
 msgid "Fetching submodule %s%s\n"
 msgstr "%s%s altmodülü getiriliyor\n"
 
-#: submodule.c:1492
+#: submodule.c:1497
 #, c-format
 msgid "Could not access submodule '%s'\n"
 msgstr "'%s' altmodülüne erişilemedi\n"
 
-#: submodule.c:1646
+#: submodule.c:1652
 #, c-format
 msgid ""
 "Errors during submodule fetch:\n"
@@ -8374,78 +8631,78 @@ msgstr ""
 "Altmodül getirilirken hata:\n"
 "%s"
 
-#: submodule.c:1671
+#: submodule.c:1677
 #, c-format
 msgid "'%s' not recognized as a git repository"
 msgstr "'%s' bir git deposu olarak tanımlanamadı"
 
-#: submodule.c:1688
+#: submodule.c:1694
 #, c-format
 msgid "Could not run 'git status --porcelain=2' in submodule %s"
 msgstr "'%s' altmodülü içinde 'git status --porcelain=2' çalıştırılamadı"
 
-#: submodule.c:1729
+#: submodule.c:1735
 #, c-format
 msgid "'git status --porcelain=2' failed in submodule %s"
 msgstr "'%s' altmodülü içinde 'git status --porcelain=2' başarısız oldu"
 
-#: submodule.c:1804
+#: submodule.c:1810
 #, c-format
 msgid "could not start 'git status' in submodule '%s'"
 msgstr "'%s' altmodülü içinde 'git status' başlatılamadı"
 
-#: submodule.c:1817
+#: submodule.c:1823
 #, c-format
 msgid "could not run 'git status' in submodule '%s'"
 msgstr "'%s' altmodülü içinde 'git status' çalıştırılamadı"
 
-#: submodule.c:1832
+#: submodule.c:1838
 #, c-format
 msgid "Could not unset core.worktree setting in submodule '%s'"
 msgstr "'%s' altmodülü içinde core.worktree ayarı kapatılamadı"
 
-#: submodule.c:1859 submodule.c:2169
+#: submodule.c:1865 submodule.c:2175
 #, c-format
 msgid "could not recurse into submodule '%s'"
 msgstr "'%s' altmodülüne özyinelenemedi"
 
-#: submodule.c:1880
+#: submodule.c:1886
 msgid "could not reset submodule index"
 msgstr "altmodül indeksi sıfırlanamadı"
 
-#: submodule.c:1922
+#: submodule.c:1928
 #, c-format
 msgid "submodule '%s' has dirty index"
 msgstr "'%s' altmodülü indeksi kirli"
 
-#: submodule.c:1974
+#: submodule.c:1980
 #, c-format
 msgid "Submodule '%s' could not be updated."
 msgstr "'%s' altmodülü güncellenemedi."
 
-#: submodule.c:2042
+#: submodule.c:2048
 #, c-format
 msgid "submodule git dir '%s' is inside git dir '%.*s'"
 msgstr "altmodül git dizini '%s', '%.*s' git dizini içinde"
 
-#: submodule.c:2063
+#: submodule.c:2069
 #, c-format
 msgid ""
 "relocate_gitdir for submodule '%s' with more than one worktree not supported"
 msgstr ""
 "relocate_gitdir birden çok çalışma ağaçlı '%s' altmodülü için desteklenmiyor"
 
-#: submodule.c:2075 submodule.c:2134
+#: submodule.c:2081 submodule.c:2140
 #, c-format
 msgid "could not lookup name for submodule '%s'"
 msgstr "'%s' altmodülü adı aranamadı"
 
-#: submodule.c:2079
+#: submodule.c:2085
 #, c-format
 msgid "refusing to move '%s' into an existing git dir"
 msgstr "'%s' ögesini mevcut bir git dizinine taşıma reddediliyor"
 
-#: submodule.c:2086
+#: submodule.c:2092
 #, c-format
 msgid ""
 "Migrating git directory of '%s%s' from\n"
@@ -8456,11 +8713,11 @@ msgstr ""
 "şuradan: '%s'\n"
 "şuraya: '%s'\n"
 
-#: submodule.c:2214
+#: submodule.c:2220
 msgid "could not start ls-files in .."
 msgstr "ls-files şurada başlatılamadı .."
 
-#: submodule.c:2254
+#: submodule.c:2260
 #, c-format
 msgid "ls-tree returned unexpected return code %d"
 msgstr "ls-tree beklenmedik bir biçimde %d kodu ile çıktı"
@@ -8491,7 +8748,7 @@ msgstr "'%.*s' artbilgisi içinde boş artbilgi jetonu"
 msgid "could not read input file '%s'"
 msgstr "'%s' girdi dosyası okunamadı"
 
-#: trailer.c:751
+#: trailer.c:751 builtin/mktag.c:91
 msgid "could not read from stdin"
 msgstr "stdin'den okunamadı"
 
@@ -8563,7 +8820,7 @@ msgstr "fast-import çalıştırılamadı"
 msgid "error while running fast-import"
 msgstr "fast-import çalıştırılırken hata"
 
-#: transport-helper.c:549 transport-helper.c:1236
+#: transport-helper.c:549 transport-helper.c:1237
 #, c-format
 msgid "could not read ref %s"
 msgstr "%s başvurusu okunamadı"
@@ -8581,7 +8838,7 @@ msgstr "uzak servis yolu ayarlama protokol tarafından desteklenmiyor"
 msgid "invalid remote service path"
 msgstr "geçersiz uzak konum servis yolu"
 
-#: transport-helper.c:661 transport.c:1446
+#: transport-helper.c:661 transport.c:1447
 msgid "operation not supported by protocol"
 msgstr "işlem protokol tarafından desteklenmiyor"
 
@@ -8660,52 +8917,52 @@ msgstr ""
 "Ortak başvuru yok ve hiç belirtilmemiş; bir şey yapılmayacak.\n"
 "Belki de bir dal belirtmelisiniz.\n"
 
-#: transport-helper.c:1213
+#: transport-helper.c:1214
 #, c-format
 msgid "unsupported object format '%s'"
 msgstr "desteklenmeyen nesne biçimi '%s'"
 
-#: transport-helper.c:1222
+#: transport-helper.c:1223
 #, c-format
 msgid "malformed response in ref list: %s"
 msgstr "başvuru listesinde hatalı oluşturulmuş yanıt: %s"
 
-#: transport-helper.c:1374
+#: transport-helper.c:1375
 #, c-format
 msgid "read(%s) failed"
 msgstr "read(%s) başarısız oldu"
 
-#: transport-helper.c:1401
+#: transport-helper.c:1402
 #, c-format
 msgid "write(%s) failed"
 msgstr "write(%s) başarısız oldu"
 
-#: transport-helper.c:1450
+#: transport-helper.c:1451
 #, c-format
 msgid "%s thread failed"
 msgstr "%s iş parçacığı başarısız oldu"
 
-#: transport-helper.c:1454
+#: transport-helper.c:1455
 #, c-format
 msgid "%s thread failed to join: %s"
 msgstr "%s iş parçacığı eklenemedi: %s"
 
-#: transport-helper.c:1473 transport-helper.c:1477
+#: transport-helper.c:1474 transport-helper.c:1478
 #, c-format
 msgid "can't start thread for copying data: %s"
 msgstr "veri kopyalama için iş parçacığı başlatılamıyor: %s"
 
-#: transport-helper.c:1514
+#: transport-helper.c:1515
 #, c-format
 msgid "%s process failed to wait"
 msgstr "%s işlemi bekleyemedi"
 
-#: transport-helper.c:1518
+#: transport-helper.c:1519
 #, c-format
 msgid "%s process failed"
 msgstr "%s işlemi başarısız oldu"
 
-#: transport-helper.c:1536 transport-helper.c:1545
+#: transport-helper.c:1537 transport-helper.c:1546
 msgid "can't start thread for copying data"
 msgstr "veri kopyalama için iş parçacığı başlatılamıyor"
 
@@ -8794,23 +9051,23 @@ msgstr ""
 msgid "Aborting."
 msgstr "İptal ediliyor"
 
-#: transport.c:1315
+#: transport.c:1316
 msgid "failed to push all needed submodules"
 msgstr "gereken tüm altmodüller itilemedi"
 
-#: tree-walk.c:32
+#: tree-walk.c:33
 msgid "too-short tree object"
 msgstr "ağaç nesnesi çok kısa"
 
-#: tree-walk.c:38
+#: tree-walk.c:39
 msgid "malformed mode in tree entry"
 msgstr "ağaç girdisinde hatalı oluşturulmuş kip"
 
-#: tree-walk.c:42
+#: tree-walk.c:43
 msgid "empty filename in tree entry"
 msgstr "ağaç girdisinde boş dosya adı"
 
-#: tree-walk.c:117
+#: tree-walk.c:118
 msgid "too-short tree file"
 msgstr "ağaç dosyası çok kısa"
 
@@ -9069,7 +9326,7 @@ msgstr ""
 msgid "Updating index flags"
 msgstr "İndeks bayrakları güncelleniyor"
 
-#: upload-pack.c:1550
+#: upload-pack.c:1543
 msgid "expected flush after fetch arguments"
 msgstr "getir argümanlarından sonra floş bekleniyordu"
 
@@ -9106,72 +9363,102 @@ msgstr "geçersiz '..' yol kesimi"
 msgid "Fetching objects"
 msgstr "Nesneler getiriliyor"
 
-#: worktree.c:236 builtin/am.c:2103
+#: worktree.c:238 builtin/am.c:2103
 #, c-format
 msgid "failed to read '%s'"
 msgstr "'%s' okunamadı"
 
-#: worktree.c:283
+#: worktree.c:304
 #, c-format
 msgid "'%s' at main working tree is not the repository directory"
 msgstr "ana çalışma ağacındaki '%s' depo dizini değil"
 
-#: worktree.c:294
+#: worktree.c:315
 #, c-format
 msgid "'%s' file does not contain absolute path to the working tree location"
 msgstr "'%s' dosyası çalışma ağacı konumuna olan tam yolu içermiyor"
 
-#: worktree.c:306
+#: worktree.c:327
 #, c-format
 msgid "'%s' does not exist"
 msgstr "'%s' mevcut değil"
 
-#: worktree.c:312
+#: worktree.c:333
 #, c-format
 msgid "'%s' is not a .git file, error code %d"
 msgstr "'%s' bir .git dosyası değil, hata kodu %d"
 
-#: worktree.c:321
+#: worktree.c:342
 #, c-format
 msgid "'%s' does not point back to '%s'"
 msgstr "'%s' şuna geri işaret etmiyor: '%s'"
 
-#: worktree.c:587
+#: worktree.c:608
 msgid "not a directory"
 msgstr "bir dizin değil"
 
-#: worktree.c:596
+#: worktree.c:617
 msgid ".git is not a file"
 msgstr ".git bir dosya değil"
 
-#: worktree.c:598
+#: worktree.c:619
 msgid ".git file broken"
 msgstr ".git dosyası bozuk"
 
-#: worktree.c:600
+#: worktree.c:621
 msgid ".git file incorrect"
 msgstr ".git dosyası doğru değil"
 
-#: worktree.c:670
+#: worktree.c:727
 msgid "not a valid path"
 msgstr "geçerli bir yol değil"
 
-#: worktree.c:676
+#: worktree.c:733
 msgid "unable to locate repository; .git is not a file"
 msgstr "depo konumu bulunamıyor: .git bir dosya değil"
 
-#: worktree.c:679
+#: worktree.c:737
+msgid "unable to locate repository; .git file does not reference a repository"
+msgstr "depo konumu bulunamıyor: .git dosyası bir depoya başvurmuyor"
+
+#: worktree.c:741
 msgid "unable to locate repository; .git file broken"
 msgstr "depo konumu bulunamıyor: .git dosyası bozuk"
 
-#: worktree.c:685
+#: worktree.c:747
 msgid "gitdir unreadable"
 msgstr "okunamayan gitdir"
 
-#: worktree.c:689
+#: worktree.c:751
 msgid "gitdir incorrect"
 msgstr "doğru olmayan gitdir"
 
+#: worktree.c:776
+msgid "not a valid directory"
+msgstr "geçerli bir dizin değil"
+
+#: worktree.c:782
+msgid "gitdir file does not exist"
+msgstr "gitdir dosyası mevcut değil"
+
+#: worktree.c:787 worktree.c:796
+#, c-format
+msgid "unable to read gitdir file (%s)"
+msgstr "gitdir dosyası (%s) okunamıyor"
+
+#: worktree.c:806
+#, c-format
+msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
+msgstr "az okundu (%<PRIuMAX> bayt bekleniyordu, %<PRIuMAX> okundu)"
+
+#: worktree.c:814
+msgid "invalid gitdir file"
+msgstr "geçersiz gitdir dosyası"
+
+#: worktree.c:822
+msgid "gitdir file points to non-existent location"
+msgstr "gitdir dosyası var olmayan bir konuma işaret ediyor"
+
 #: wrapper.c:197 wrapper.c:367
 #, c-format
 msgid "could not open '%s' for reading and writing"
@@ -9220,11 +9507,11 @@ msgstr ""
 msgid "  (use \"git rm <file>...\" to mark resolution)"
 msgstr "  (hazırlığı bitirmek için \"git rm <dosya>...\" kullanın)"
 
-#: wt-status.c:211 wt-status.c:1070
+#: wt-status.c:211 wt-status.c:1072
 msgid "Changes to be committed:"
 msgstr "İşlenecek değişiklikler:"
 
-#: wt-status.c:234 wt-status.c:1079
+#: wt-status.c:234 wt-status.c:1081
 msgid "Changes not staged for commit:"
 msgstr "İşleme için hazırlanmamış değişiklikler:"
 
@@ -9324,22 +9611,22 @@ msgstr "değiştirilen içerik, "
 msgid "untracked content, "
 msgstr "izlenmeyen içerik, "
 
-#: wt-status.c:903
+#: wt-status.c:905
 #, c-format
 msgid "Your stash currently has %d entry"
 msgid_plural "Your stash currently has %d entries"
 msgstr[0] "Zulanızda şu anda %d girdi var"
 msgstr[1] "Zulanızda şu anda %d girdi var"
 
-#: wt-status.c:934
+#: wt-status.c:936
 msgid "Submodules changed but not updated:"
 msgstr "Değiştirilen; ancak güncellenmeyen altmodüller:"
 
-#: wt-status.c:936
+#: wt-status.c:938
 msgid "Submodule changes to be committed:"
 msgstr "İşlenecek altmodül değişiklikleri:"
 
-#: wt-status.c:1018
+#: wt-status.c:1020
 msgid ""
 "Do not modify or remove the line above.\n"
 "Everything below it will be ignored."
@@ -9347,7 +9634,7 @@ msgstr ""
 "Yukarıdaki satırı değiştirmeyin veya kaldırmayın.\n"
 "Altındaki her şey yok sayılacaktır."
 
-#: wt-status.c:1110
+#: wt-status.c:1112
 #, c-format
 msgid ""
 "\n"
@@ -9358,107 +9645,107 @@ msgstr ""
 "Dal önünde/arkasında değerlerini hesaplama %.2f saniye sürdü.\n"
 "Bundan kaçınmak için --no-ahead-behind kullanabilirsiniz.\n"
 
-#: wt-status.c:1140
+#: wt-status.c:1142
 msgid "You have unmerged paths."
 msgstr "Birleştirilmemiş yollarınız var."
 
-#: wt-status.c:1143
+#: wt-status.c:1145
 msgid "  (fix conflicts and run \"git commit\")"
 msgstr "  (çakışmaları onar ve \"git commit\" çalıştır)"
 
-#: wt-status.c:1145
+#: wt-status.c:1147
 msgid "  (use \"git merge --abort\" to abort the merge)"
 msgstr "  (birleştirmeyi iptal etmek için \"git merge --abort\" kullanın)"
 
-#: wt-status.c:1149
+#: wt-status.c:1151
 msgid "All conflicts fixed but you are still merging."
 msgstr "Tüm çakışmalar onarıldı; ancak siz hâlâ birleştiriyorsunuz."
 
-#: wt-status.c:1152
+#: wt-status.c:1154
 msgid "  (use \"git commit\" to conclude merge)"
 msgstr "  (birleştirmeyi sonuçlandırmak için \"git commit\" kullanın)"
 
-#: wt-status.c:1161
+#: wt-status.c:1163
 msgid "You are in the middle of an am session."
 msgstr "Bir 'am' oturumunun tam ortasındasınız."
 
-#: wt-status.c:1164
+#: wt-status.c:1166
 msgid "The current patch is empty."
 msgstr "Mevcut yama boş."
 
-#: wt-status.c:1168
+#: wt-status.c:1170
 msgid "  (fix conflicts and then run \"git am --continue\")"
 msgstr "  (çakışmaları onar ve ardından \"git am --continue\" çalıştır)"
 
-#: wt-status.c:1170
+#: wt-status.c:1172
 msgid "  (use \"git am --skip\" to skip this patch)"
 msgstr "  (bu yamayı atlamak için \"git am --skip\" kullanın"
 
-#: wt-status.c:1172
+#: wt-status.c:1174
 msgid "  (use \"git am --abort\" to restore the original branch)"
 msgstr "  (ilk dalı eski durumuna getirmek için \"git am --abort\" kullanın)"
 
-#: wt-status.c:1305
+#: wt-status.c:1307
 msgid "git-rebase-todo is missing."
 msgstr "git-rebase-todo eksik"
 
-#: wt-status.c:1307
+#: wt-status.c:1309
 msgid "No commands done."
 msgstr "Yerine getirilen bir komut yok."
 
-#: wt-status.c:1310
+#: wt-status.c:1312
 #, c-format
 msgid "Last command done (%d command done):"
 msgid_plural "Last commands done (%d commands done):"
 msgstr[0] "Son yerine getirilen komut (toplamda %d komut):"
 msgstr[1] "Son yerine getirilen komutlar (toplamda %d komut):"
 
-#: wt-status.c:1321
+#: wt-status.c:1323
 #, c-format
 msgid "  (see more in file %s)"
 msgstr "  (ek bilgi için %s dosyasına bakın)"
 
-#: wt-status.c:1326
+#: wt-status.c:1328
 msgid "No commands remaining."
 msgstr "Kalan komut yok."
 
-#: wt-status.c:1329
+#: wt-status.c:1331
 #, c-format
 msgid "Next command to do (%d remaining command):"
 msgid_plural "Next commands to do (%d remaining commands):"
 msgstr[0] "Sıradaki yerine getirilecek komut (%d kalan komut):"
 msgstr[1] "Sıradaki yerine getirilecek komutlar (%d kalan komut):"
 
-#: wt-status.c:1337
+#: wt-status.c:1339
 msgid "  (use \"git rebase --edit-todo\" to view and edit)"
 msgstr "  (görüntüleme ve düzenleme için \"git rebase --edit-todo\" kullanın)"
 
-#: wt-status.c:1349
+#: wt-status.c:1351
 #, c-format
 msgid "You are currently rebasing branch '%s' on '%s'."
 msgstr "Şu anda '%s' dalını '%s' üzerine yeniden temellendiriyorsunuz."
 
-#: wt-status.c:1354
+#: wt-status.c:1356
 msgid "You are currently rebasing."
 msgstr "Şu anda yeniden temellendirme yapmaktasınız."
 
-#: wt-status.c:1367
+#: wt-status.c:1369
 msgid "  (fix conflicts and then run \"git rebase --continue\")"
 msgstr "  (çakışmaları çözün ve ardından \"git rebase --continue\" çalıştır)"
 
-#: wt-status.c:1369
+#: wt-status.c:1371
 msgid "  (use \"git rebase --skip\" to skip this patch)"
 msgstr "  (bu yamayı atlamak için \"git rebase --skip\" kullanın)"
 
-#: wt-status.c:1371
+#: wt-status.c:1373
 msgid "  (use \"git rebase --abort\" to check out the original branch)"
 msgstr "  (ilk dalı çıkış yapmak için \"git rebase --abort\" kullanın)"
 
-#: wt-status.c:1378
+#: wt-status.c:1380
 msgid "  (all conflicts fixed: run \"git rebase --continue\")"
 msgstr "  (tüm çakışmalar onarıldı: \"git rebase --continue\" çalıştır)"
 
-#: wt-status.c:1382
+#: wt-status.c:1384
 #, c-format
 msgid ""
 "You are currently splitting a commit while rebasing branch '%s' on '%s'."
@@ -9466,146 +9753,154 @@ msgstr ""
 "Şu anda '%s' dalını '%s' üzerine yeniden temellendirirken bir işlemeyi "
 "parçalara bölüyorsunuz."
 
-#: wt-status.c:1387
+#: wt-status.c:1389
 msgid "You are currently splitting a commit during a rebase."
 msgstr ""
 "Şu anda yeniden temellendirme sırasında bir işlemeyi parçalara bölüyorsunuz."
 
-#: wt-status.c:1390
+#: wt-status.c:1392
 msgid "  (Once your working directory is clean, run \"git rebase --continue\")"
 msgstr ""
 "  (Çalışma dizininiz temizlendiğinde \"git rebase --continue\" çalıştır)"
 
-#: wt-status.c:1394
+#: wt-status.c:1396
 #, c-format
 msgid "You are currently editing a commit while rebasing branch '%s' on '%s'."
 msgstr ""
 "Şu anda '%s' dalını '%s' üzerine yeniden temellendirirken bir işlemeyi "
 "düzenliyorsunuz."
 
-#: wt-status.c:1399
+#: wt-status.c:1401
 msgid "You are currently editing a commit during a rebase."
 msgstr "Şu anda yeniden temellendirme sırasında bir işlemeyi düzenliyorsunuz."
 
-#: wt-status.c:1402
+#: wt-status.c:1404
 msgid "  (use \"git commit --amend\" to amend the current commit)"
 msgstr "  (geçerli işlemeyi değiştirmek için \"git commit --amend\" kullanın)"
 
-#: wt-status.c:1404
+#: wt-status.c:1406
 msgid ""
 "  (use \"git rebase --continue\" once you are satisfied with your changes)"
 msgstr ""
 "  (değişikliklerinizden memnunsanız \"git rebase --continue\" kullanın)"
 
-#: wt-status.c:1415
+#: wt-status.c:1417
 msgid "Cherry-pick currently in progress."
 msgstr "Seç-al şu anda sürmekte."
 
-#: wt-status.c:1418
+#: wt-status.c:1420
 #, c-format
 msgid "You are currently cherry-picking commit %s."
 msgstr "Şu anda %s işlemesini seç-al yapıyorsunuz."
 
-#: wt-status.c:1425
+#: wt-status.c:1427
 msgid "  (fix conflicts and run \"git cherry-pick --continue\")"
 msgstr "  (çakışmaları onar ve \"git cherry-pick --continue\" çalıştır)"
 
-#: wt-status.c:1428
+#: wt-status.c:1430
 msgid "  (run \"git cherry-pick --continue\" to continue)"
 msgstr "  (sürdürmek için \"git cherry-pick --continue\" çalıştır)"
 
-#: wt-status.c:1431
+#: wt-status.c:1433
 msgid "  (all conflicts fixed: run \"git cherry-pick --continue\")"
 msgstr "  (tüm çakışmalar onarıldı: \"git cherry-pick --continue\" çalıştır)"
 
-#: wt-status.c:1433
+#: wt-status.c:1435
 msgid "  (use \"git cherry-pick --skip\" to skip this patch)"
 msgstr "  (bu yamayı atlamak için \"git cherry-pick --skip\" kullanın)"
 
-#: wt-status.c:1435
+#: wt-status.c:1437
 msgid "  (use \"git cherry-pick --abort\" to cancel the cherry-pick operation)"
 msgstr "  (seç-al işlemini iptal için \"git cherry-pick --abort\" kullanın)"
 
-#: wt-status.c:1445
+#: wt-status.c:1447
 msgid "Revert currently in progress."
 msgstr "Geriye al şu anda sürmekte."
 
-#: wt-status.c:1448
+#: wt-status.c:1450
 #, c-format
 msgid "You are currently reverting commit %s."
 msgstr "Şu anda %s işlemesini geri alıyorsunuz."
 
-#: wt-status.c:1454
+#: wt-status.c:1456
 msgid "  (fix conflicts and run \"git revert --continue\")"
 msgstr "  (çakışmaları onar ve \"git revert --continue\" çalıştır)"
 
-#: wt-status.c:1457
+#: wt-status.c:1459
 msgid "  (run \"git revert --continue\" to continue)"
 msgstr "  (sürdürmek için \"git revert --continue\" çalıştır)"
 
-#: wt-status.c:1460
+#: wt-status.c:1462
 msgid "  (all conflicts fixed: run \"git revert --continue\")"
 msgstr "  (tüm çakışmalar onarıldı: \"git revert --continue\" çalıştır)"
 
-#: wt-status.c:1462
+#: wt-status.c:1464
 msgid "  (use \"git revert --skip\" to skip this patch)"
 msgstr "  (bu yamayı atlamak için \"git revert --skip\" kullanın)"
 
-#: wt-status.c:1464
+#: wt-status.c:1466
 msgid "  (use \"git revert --abort\" to cancel the revert operation)"
 msgstr "  (geri al işlemini iptal için \"git revert --abort\" kullanın)"
 
-#: wt-status.c:1474
+#: wt-status.c:1476
 #, c-format
 msgid "You are currently bisecting, started from branch '%s'."
 msgstr "Şu anda ikili arama yapıyorsunuz, '%s' dalından başlandı."
 
-#: wt-status.c:1478
+#: wt-status.c:1480
 msgid "You are currently bisecting."
 msgstr "Şu anda ikili arama yapıyorsunuz"
 
-#: wt-status.c:1481
+#: wt-status.c:1483
 msgid "  (use \"git bisect reset\" to get back to the original branch)"
 msgstr "  (ilk dala dönmek için \"git bisect reset\" kullanın)"
 
-#: wt-status.c:1492
+#: wt-status.c:1494
 #, c-format
 msgid "You are in a sparse checkout with %d%% of tracked files present."
 msgstr "İzlenen dosyaların %%%d mevcut olduğu aralıklı bir çıkıştasınız."
 
-#: wt-status.c:1731
+#: wt-status.c:1733
 msgid "On branch "
 msgstr "Üzerinde bulunulan dal: "
 
-#: wt-status.c:1738
+#: wt-status.c:1740
 msgid "interactive rebase in progress; onto "
 msgstr "şunun üzerine etkileşimli yeniden temellendirme sürmekte: "
 
-#: wt-status.c:1740
+#: wt-status.c:1742
 msgid "rebase in progress; onto "
 msgstr "şunun üzerine yeniden temellendirme sürmekte: "
 
-#: wt-status.c:1750
+#: wt-status.c:1747
+msgid "HEAD detached at "
+msgstr "HEAD şurada ayrıldı: "
+
+#: wt-status.c:1749
+msgid "HEAD detached from "
+msgstr "HEAD şundan ayrıldı: "
+
+#: wt-status.c:1752
 msgid "Not currently on any branch."
 msgstr "Şu anda bir dal üzerinde değil."
 
-#: wt-status.c:1767
+#: wt-status.c:1769
 msgid "Initial commit"
 msgstr "İlk işleme"
 
-#: wt-status.c:1768
+#: wt-status.c:1770
 msgid "No commits yet"
 msgstr "Henüz bir işleme yok"
 
-#: wt-status.c:1782
+#: wt-status.c:1784
 msgid "Untracked files"
 msgstr "İzlenmeyen dosyalar"
 
-#: wt-status.c:1784
+#: wt-status.c:1786
 msgid "Ignored files"
 msgstr "Yok sayılan dosyalar"
 
-#: wt-status.c:1788
+#: wt-status.c:1790
 #, c-format
 msgid ""
 "It took %.2f seconds to enumerate untracked files. 'status -uno'\n"
@@ -9616,32 +9911,32 @@ msgstr ""
 "bunu hızlandırabilir; ancak yeni dosyaları eklemeyi unutmamanız\n"
 "konusunda dikkatli olmalısınız (ek bilgi için 'git help status')."
 
-#: wt-status.c:1794
+#: wt-status.c:1796
 #, c-format
 msgid "Untracked files not listed%s"
 msgstr "İzlenmeyen dosyalar listelenmiyor%s"
 
-#: wt-status.c:1796
+#: wt-status.c:1798
 msgid " (use -u option to show untracked files)"
 msgstr " (izlenmeyen dosyaları göstermek için -u seçeneğini kullanın)"
 
-#: wt-status.c:1802
+#: wt-status.c:1804
 msgid "No changes"
 msgstr "Değişiklik yok"
 
-#: wt-status.c:1807
+#: wt-status.c:1809
 #, c-format
 msgid "no changes added to commit (use \"git add\" and/or \"git commit -a\")\n"
 msgstr ""
 "İşlemeye eklenen değişiklik yok (\"git add\" ve/veya \"git commit -a\" "
 "kullanın)\n"
 
-#: wt-status.c:1811
+#: wt-status.c:1813
 #, c-format
 msgid "no changes added to commit\n"
 msgstr "İşlemeye eklenen değişiklik yok\n"
 
-#: wt-status.c:1815
+#: wt-status.c:1817
 #, c-format
 msgid ""
 "nothing added to commit but untracked files present (use \"git add\" to "
@@ -9650,65 +9945,65 @@ msgstr ""
 "işlemeye bir şey eklenmedi; ancak izlenmeyen dosyalar var (izlemek için\n"
 "\"git add\" kullanın)\n"
 
-#: wt-status.c:1819
+#: wt-status.c:1821
 #, c-format
 msgid "nothing added to commit but untracked files present\n"
 msgstr "işlemeye bir şey eklenmedi; ancak izlenmeyen dosyalar var\n"
 
-#: wt-status.c:1823
+#: wt-status.c:1825
 #, c-format
 msgid "nothing to commit (create/copy files and use \"git add\" to track)\n"
 msgstr ""
 "İşlenecek bir şey yok (dosyalar oluşturun/kopyalayın ve izlemek için \"git "
 "add\" kullanın)\n"
 
-#: wt-status.c:1827 wt-status.c:1833
+#: wt-status.c:1829 wt-status.c:1835
 #, c-format
 msgid "nothing to commit\n"
 msgstr "İşlenecek bir şey yok\n"
 
-#: wt-status.c:1830
+#: wt-status.c:1832
 #, c-format
 msgid "nothing to commit (use -u to show untracked files)\n"
 msgstr ""
 "İşlenecek bir şey yok (izlenmeyen dosyaları göstermek için -u kullanın)\n"
 
-#: wt-status.c:1835
+#: wt-status.c:1837
 #, c-format
 msgid "nothing to commit, working tree clean\n"
 msgstr "İşlenecek bir şey yok, çalışma ağacı temiz\n"
 
-#: wt-status.c:1940
+#: wt-status.c:1942
 msgid "No commits yet on "
 msgstr "Şurada henüz bir işleme yok: "
 
-#: wt-status.c:1944
+#: wt-status.c:1946
 msgid "HEAD (no branch)"
 msgstr "HEAD (dal yok)"
 
-#: wt-status.c:1975
+#: wt-status.c:1977
 msgid "different"
 msgstr "değişik"
 
-#: wt-status.c:1977 wt-status.c:1985
+#: wt-status.c:1979 wt-status.c:1987
 msgid "behind "
 msgstr "şunun arkasında: "
 
-#: wt-status.c:1980 wt-status.c:1983
+#: wt-status.c:1982 wt-status.c:1985
 msgid "ahead "
 msgstr "şunun önünde: "
 
 #. TRANSLATORS: the action is e.g. "pull with rebase"
-#: wt-status.c:2505
+#: wt-status.c:2507
 #, c-format
 msgid "cannot %s: You have unstaged changes."
 msgstr "%s yapılamıyor: Hazırlanmamış değişiklikleriniz var."
 
-#: wt-status.c:2511
+#: wt-status.c:2513
 msgid "additionally, your index contains uncommitted changes."
 msgstr "Ek olarak, indeksiniz işlenmemiş değişiklikler içeriyor."
 
-#: wt-status.c:2513
+#: wt-status.c:2515
 #, c-format
 msgid "cannot %s: Your index contains uncommitted changes."
 msgstr "%s yapılamıyor: İndeksiniz işlenmemiş değişiklikler içeriyor."
@@ -9722,130 +10017,135 @@ msgstr "'%s' bağlantısı kesilemedi"
 msgid "git add [<options>] [--] <pathspec>..."
 msgstr "git add [<seçenekler>] [--] <yol-blrtç>..."
 
-#: builtin/add.c:88
+#: builtin/add.c:58
+#, c-format
+msgid "cannot chmod %cx '%s'"
+msgstr "%cx '%s' chmod yapılamıyor"
+
+#: builtin/add.c:96
 #, c-format
 msgid "unexpected diff status %c"
 msgstr "beklenmedik diff durumu %c"
 
-#: builtin/add.c:93 builtin/commit.c:285
+#: builtin/add.c:101 builtin/commit.c:285
 msgid "updating files failed"
 msgstr "dosyaları güncelleme başarısız"
 
-#: builtin/add.c:103
+#: builtin/add.c:111
 #, c-format
 msgid "remove '%s'\n"
 msgstr "kaldır: '%s'\n"
 
-#: builtin/add.c:178
+#: builtin/add.c:186
 msgid "Unstaged changes after refreshing the index:"
 msgstr "İndeksi yeniledikten sonra hazırlanmamış değişiklikler:"
 
-#: builtin/add.c:272 builtin/rev-parse.c:908
+#: builtin/add.c:280 builtin/rev-parse.c:991
 msgid "Could not read the index"
 msgstr "İndeks okunamadı"
 
-#: builtin/add.c:283
+#: builtin/add.c:291
 #, c-format
 msgid "Could not open '%s' for writing."
 msgstr "'%s' yazım için açılamadı."
 
-#: builtin/add.c:287
+#: builtin/add.c:295
 msgid "Could not write patch"
 msgstr "Yama yazılamadı"
 
-#: builtin/add.c:290
+#: builtin/add.c:298
 msgid "editing patch failed"
 msgstr "yamayı düzenleme başarısız"
 
-#: builtin/add.c:293
+#: builtin/add.c:301
 #, c-format
 msgid "Could not stat '%s'"
 msgstr "'%s' dosya bilgileri alınamadı"
 
-#: builtin/add.c:295
+#: builtin/add.c:303
 msgid "Empty patch. Aborted."
 msgstr "Boş yama. İptal edildi."
 
-#: builtin/add.c:300
+#: builtin/add.c:308
 #, c-format
 msgid "Could not apply '%s'"
 msgstr "'%s' uygulanamadı"
 
-#: builtin/add.c:308
+#: builtin/add.c:316
 msgid "The following paths are ignored by one of your .gitignore files:\n"
 msgstr ""
 "Aşağıdaki yollar sizin .gitignore dosyalarınızın biri tarafından yok "
 "sayılıyor:\n"
 
-#: builtin/add.c:328 builtin/clean.c:904 builtin/fetch.c:166 builtin/mv.c:124
+#: builtin/add.c:336 builtin/clean.c:904 builtin/fetch.c:169 builtin/mv.c:124
 #: builtin/prune-packed.c:14 builtin/pull.c:204 builtin/push.c:559
 #: builtin/remote.c:1427 builtin/rm.c:242 builtin/send-pack.c:190
 msgid "dry run"
 msgstr "sınama turu"
 
-#: builtin/add.c:331
+#: builtin/add.c:339
 msgid "interactive picking"
 msgstr "etkileşimli seçim"
 
-#: builtin/add.c:332 builtin/checkout.c:1547 builtin/reset.c:308
+#: builtin/add.c:340 builtin/checkout.c:1546 builtin/reset.c:308
 msgid "select hunks interactively"
 msgstr "parçaları etkileşimli olarak seç"
 
-#: builtin/add.c:333
+#: builtin/add.c:341
 msgid "edit current diff and apply"
 msgstr "geçerli diff'i düzenle ve uygula"
 
-#: builtin/add.c:334
+#: builtin/add.c:342
 msgid "allow adding otherwise ignored files"
 msgstr "başka türlü yok sayılan dosyaların eklenmesine izin ver"
 
-#: builtin/add.c:335
+#: builtin/add.c:343
 msgid "update tracked files"
 msgstr "izlenen dosyaları güncelle"
 
-#: builtin/add.c:336
+#: builtin/add.c:344
 msgid "renormalize EOL of tracked files (implies -u)"
 msgstr "izlenen dosyaların satır sonlarını yeniden olağanlaştır (-u ima eder)"
 
-#: builtin/add.c:337
+#: builtin/add.c:345
 msgid "record only the fact that the path will be added later"
 msgstr "yalnızca yolun sonra ekleneceği gerçeğinin kaydını yaz"
 
-#: builtin/add.c:338
+#: builtin/add.c:346
 msgid "add changes from all tracked and untracked files"
 msgstr "tüm izlenen/izlenmeyen dosyalardan değişiklikleri ekle"
 
-#: builtin/add.c:341
+#: builtin/add.c:349
 msgid "ignore paths removed in the working tree (same as --no-all)"
 msgstr "çalışma ağacında kaldırılan yolları yok say (--no-all ile aynı)"
 
-#: builtin/add.c:343
+#: builtin/add.c:351
 msgid "don't add, only refresh the index"
 msgstr "ekleme, yalnızca indeksi yenile"
 
-#: builtin/add.c:344
+#: builtin/add.c:352
 msgid "just skip files which cannot be added because of errors"
 msgstr "yalnızca hatalardan dolayı eklenemeyen dosyaları atla"
 
-#: builtin/add.c:345
+#: builtin/add.c:353
 msgid "check if - even missing - files are ignored in dry run"
 msgstr ""
 "dosyaların -eksik olsalar bile- sınama turunda yok sayılıp sayılmadığını "
 "denetle"
 
-#: builtin/add.c:347 builtin/update-index.c:1004
+#: builtin/add.c:355 builtin/update-index.c:1004
 msgid "override the executable bit of the listed files"
 msgstr "listelenen dosyaların çalıştırılabilir kısımlarını geçersiz kıl"
 
-#: builtin/add.c:349
+#: builtin/add.c:357
 msgid "warn when adding an embedded repository"
 msgstr "gömülü bir depo eklenirken uyar"
 
-#: builtin/add.c:351
+#: builtin/add.c:359
 msgid "backend for `git stash -p`"
 msgstr "'git stash -p' için arka uç"
 
-#: builtin/add.c:369
+#: builtin/add.c:377
 #, c-format
 msgid ""
 "You've added another git repository inside your current repository.\n"
@@ -9876,12 +10176,12 @@ msgstr ""
 "\n"
 "Ek bilgi için: \"git help submodule\"."
 
-#: builtin/add.c:397
+#: builtin/add.c:405
 #, c-format
 msgid "adding embedded git repository: %s"
 msgstr "gömülü git deposu ekleniyor: %s"
 
-#: builtin/add.c:416
+#: builtin/add.c:424
 msgid ""
 "Use -f if you really want to add them.\n"
 "Turn this message off by running\n"
@@ -9891,49 +10191,49 @@ msgstr ""
 "Bu iletiyi 'git config advice.addIgnoredFile false'\n"
 "kullanarak kapatabilirsiniz."
 
-#: builtin/add.c:425
+#: builtin/add.c:433
 msgid "adding files failed"
 msgstr "dosya ekleme başarısız"
 
-#: builtin/add.c:453 builtin/commit.c:345
+#: builtin/add.c:461 builtin/commit.c:345
 msgid "--pathspec-from-file is incompatible with --interactive/--patch"
 msgstr "--pathspec-from-file, --interactive/--patch ile uyumsuz"
 
-#: builtin/add.c:470
+#: builtin/add.c:478
 msgid "--pathspec-from-file is incompatible with --edit"
 msgstr "--pathspec-from-file, --edit ile uyumsuz"
 
-#: builtin/add.c:482
+#: builtin/add.c:490
 msgid "-A and -u are mutually incompatible"
 msgstr "-A ve -u karşılıklı olarak uyumlu"
 
-#: builtin/add.c:485
+#: builtin/add.c:493
 msgid "Option --ignore-missing can only be used together with --dry-run"
 msgstr ""
 "--ignore-missing seçeneği yalnızca --dry-run seçeneği ile birlikte "
 "kullanılabilir"
 
-#: builtin/add.c:489
+#: builtin/add.c:497
 #, c-format
 msgid "--chmod param '%s' must be either -x or +x"
 msgstr "--chmod param '%s' ya -x ya da +x olmalıdır"
 
-#: builtin/add.c:507 builtin/checkout.c:1715 builtin/commit.c:351
-#: builtin/reset.c:328 builtin/rm.c:272 builtin/stash.c:1502
+#: builtin/add.c:515 builtin/checkout.c:1714 builtin/commit.c:351
+#: builtin/reset.c:328 builtin/rm.c:272 builtin/stash.c:1569
 msgid "--pathspec-from-file is incompatible with pathspec arguments"
 msgstr "--pathspec-from-file yol belirteci argümanları ile uyumsuz"
 
-#: builtin/add.c:514 builtin/checkout.c:1727 builtin/commit.c:357
-#: builtin/reset.c:334 builtin/rm.c:278 builtin/stash.c:1508
+#: builtin/add.c:522 builtin/checkout.c:1726 builtin/commit.c:357
+#: builtin/reset.c:334 builtin/rm.c:278 builtin/stash.c:1575
 msgid "--pathspec-file-nul requires --pathspec-from-file"
 msgstr "--pathspec-file-nul, --pathspec-from-file gerektiriyor"
 
-#: builtin/add.c:518
+#: builtin/add.c:526
 #, c-format
 msgid "Nothing specified, nothing added.\n"
 msgstr "Hiçbir şey belirtilmedi, hiçbir şey eklenmedi.\n"
 
-#: builtin/add.c:520
+#: builtin/add.c:528
 msgid ""
 "Maybe you wanted to say 'git add .'?\n"
 "Turn this message off by running\n"
@@ -10191,7 +10491,7 @@ msgid "allow fall back on 3way merging if needed"
 msgstr "gerekirse 3 yönlü birleştirmeye geri çekilmeye izin ver"
 
 #: builtin/am.c:2225 builtin/init-db.c:560 builtin/prune-packed.c:16
-#: builtin/repack.c:335 builtin/stash.c:815
+#: builtin/repack.c:334 builtin/stash.c:882
 msgid "be quiet"
 msgstr "sessiz ol"
 
@@ -10235,17 +10535,17 @@ msgid "pass it through git-apply"
 msgstr "git-apply aracılığıyla geçir"
 
 #: builtin/am.c:2263 builtin/commit.c:1395 builtin/fmt-merge-msg.c:17
-#: builtin/fmt-merge-msg.c:20 builtin/grep.c:903 builtin/merge.c:260
+#: builtin/fmt-merge-msg.c:20 builtin/grep.c:904 builtin/merge.c:261
 #: builtin/pull.c:141 builtin/pull.c:200 builtin/pull.c:217
-#: builtin/rebase.c:1341 builtin/repack.c:346 builtin/repack.c:350
-#: builtin/repack.c:352 builtin/show-branch.c:650 builtin/show-ref.c:172
-#: builtin/tag.c:404 parse-options.h:154 parse-options.h:175
+#: builtin/rebase.c:1347 builtin/repack.c:345 builtin/repack.c:349
+#: builtin/repack.c:351 builtin/show-branch.c:650 builtin/show-ref.c:172
+#: builtin/tag.c:436 parse-options.h:154 parse-options.h:175
 #: parse-options.h:316
 msgid "n"
 msgstr "n"
 
-#: builtin/am.c:2269 builtin/branch.c:661 builtin/bugreport.c:136
-#: builtin/for-each-ref.c:38 builtin/replace.c:556 builtin/tag.c:438
+#: builtin/am.c:2269 builtin/branch.c:670 builtin/bugreport.c:136
+#: builtin/for-each-ref.c:38 builtin/replace.c:556 builtin/tag.c:470
 #: builtin/verify-tag.c:38
 msgid "format"
 msgstr "biçim"
@@ -10271,11 +10571,11 @@ msgid "skip the current patch"
 msgstr "geçerli yamayı atla"
 
 #: builtin/am.c:2287
-msgid "restore the original branch and abort the patching operation."
-msgstr "ilk dalı eski durumuna getir ve yamalama işlemini iptal et"
+msgid "restore the original branch and abort the patching operation"
+msgstr "orijinal dalı eski durumuna getir ve yamalama işlemini iptal et"
 
 #: builtin/am.c:2290
-msgid "abort the patching operation but keep HEAD where it is."
+msgid "abort the patching operation but keep HEAD where it is"
 msgstr "yamalama işlemini iptal et; ancak HEAD'i olduğu yerde bırak"
 
 #: builtin/am.c:2294
@@ -10291,12 +10591,12 @@ msgid "use current timestamp for author date"
 msgstr "yazar tarihi için geçerli zaman damgasını kullan"
 
 #: builtin/am.c:2303 builtin/commit-tree.c:120 builtin/commit.c:1515
-#: builtin/merge.c:297 builtin/pull.c:175 builtin/rebase.c:536
-#: builtin/rebase.c:1394 builtin/revert.c:117 builtin/tag.c:419
+#: builtin/merge.c:298 builtin/pull.c:175 builtin/rebase.c:538
+#: builtin/rebase.c:1400 builtin/revert.c:117 builtin/tag.c:451
 msgid "key-id"
 msgstr "key-id"
 
-#: builtin/am.c:2304 builtin/rebase.c:537 builtin/rebase.c:1395
+#: builtin/am.c:2304 builtin/rebase.c:539 builtin/rebase.c:1401
 msgid "GPG-sign commits"
 msgstr "GPG imzalı işlemeler"
 
@@ -10378,27 +10678,11 @@ msgid "git bisect--helper --bisect-reset [<commit>]"
 msgstr "git bisect--helper --bisect-reset [<işleme>]"
 
 #: builtin/bisect--helper.c:24
-msgid ""
-"git bisect--helper --bisect-write [--no-log] <state> <revision> <good_term> "
-"<bad_term>"
-msgstr ""
-"git bisect--helper --bisect-write [--no-log] <durum> <revizyon> <iyi_terim> "
-"<kötü_terim>"
-
-#: builtin/bisect--helper.c:25
-msgid ""
-"git bisect--helper --bisect-check-and-set-terms <command> <good_term> "
-"<bad_term>"
-msgstr ""
-"git bisect--helper --bisect-check-and-set-terms <komut> <iyi_terim> "
-"<kötü_terim>"
-
-#: builtin/bisect--helper.c:26
 msgid "git bisect--helper --bisect-next-check <good_term> <bad_term> [<term>]"
 msgstr ""
 "git bisect--helper --bisect-next-check <iyi_terim> <kötü_terim> [<terim>]"
 
-#: builtin/bisect--helper.c:27
+#: builtin/bisect--helper.c:25
 msgid ""
 "git bisect--helper --bisect-terms [--term-good | --term-old | --term-bad | --"
 "term-new]"
@@ -10406,7 +10690,7 @@ msgstr ""
 "git bisect--helper --bisect-terms [--term-good | --term-old | --term-bad | --"
 "term-new]"
 
-#: builtin/bisect--helper.c:28
+#: builtin/bisect--helper.c:26
 msgid ""
 "git bisect--helper --bisect-start [--term-{new,bad}=<term> --term-{old,good}"
 "=<term>] [--no-checkout] [--first-parent] [<bad> [<good>...]] [--] "
@@ -10416,89 +10700,93 @@ msgstr ""
 "=<terim>] [--no-checkout] [--first-parent] [<kötü> [<iyi>...]] [--] "
 "[<yollar>...]"
 
-#: builtin/bisect--helper.c:30
+#: builtin/bisect--helper.c:28
 msgid "git bisect--helper --bisect-next"
 msgstr "git bisect--helper --bisect-next"
 
-#: builtin/bisect--helper.c:31
-msgid "git bisect--helper --bisect-auto-next"
-msgstr "git bisect--helper --bisect-auto-next"
-
-#: builtin/bisect--helper.c:32
+#: builtin/bisect--helper.c:29
 msgid "git bisect--helper --bisect-state (bad|new) [<rev>]"
 msgstr "git bisect--helper --bisect-state (bad|new) [<rev>]"
 
-#: builtin/bisect--helper.c:33
+#: builtin/bisect--helper.c:30
 msgid "git bisect--helper --bisect-state (good|old) [<rev>...]"
 msgstr "git bisect--helper --bisect-state (good|old) [<rev>...]"
 
-#: builtin/bisect--helper.c:108
+#: builtin/bisect--helper.c:31
+msgid "git bisect--helper --bisect-replay <filename>"
+msgstr "git bisect--helper --bisect-replay <dosyaadı>"
+
+#: builtin/bisect--helper.c:32
+msgid "git bisect--helper --bisect-skip [(<rev>|<range>)...]"
+msgstr "git bisect--helper --bisect-skip [(<rev>|<erim>)...]"
+
+#: builtin/bisect--helper.c:107
 #, c-format
 msgid "cannot open file '%s' in mode '%s'"
 msgstr "'%s' dosyası '%s' kipinde açılamıyor"
 
-#: builtin/bisect--helper.c:115
+#: builtin/bisect--helper.c:114
 #, c-format
 msgid "could not write to file '%s'"
 msgstr "'%s' dosyasına yazılamadı"
 
-#: builtin/bisect--helper.c:154
+#: builtin/bisect--helper.c:153
 #, c-format
 msgid "'%s' is not a valid term"
 msgstr "'%s' geçerli bir terim değil"
 
-#: builtin/bisect--helper.c:158
+#: builtin/bisect--helper.c:157
 #, c-format
 msgid "can't use the builtin command '%s' as a term"
 msgstr "'%s yerleşik komutu bir terim olarak kullanılamıyor"
 
-#: builtin/bisect--helper.c:168
+#: builtin/bisect--helper.c:167
 #, c-format
 msgid "can't change the meaning of the term '%s'"
 msgstr "'%s' teriminin anlamı değiştirilemiyor"
 
-#: builtin/bisect--helper.c:178
+#: builtin/bisect--helper.c:177
 msgid "please use two different terms"
 msgstr "lütfen iki değişik terim kullanın"
 
-#: builtin/bisect--helper.c:194
+#: builtin/bisect--helper.c:193
 #, c-format
 msgid "We are not bisecting.\n"
 msgstr "İkili arama yapılmıyor.\n"
 
-#: builtin/bisect--helper.c:202
+#: builtin/bisect--helper.c:201
 #, c-format
 msgid "'%s' is not a valid commit"
 msgstr "'%s' geçerli bir işleme değil"
 
-#: builtin/bisect--helper.c:211
+#: builtin/bisect--helper.c:210
 #, c-format
 msgid ""
 "could not check out original HEAD '%s'. Try 'git bisect reset <commit>'."
 msgstr ""
 "Orijinal HEAD '%s' çıkışı yapılamadı. 'git bisect reset <işleme>' deneyin."
 
-#: builtin/bisect--helper.c:255
+#: builtin/bisect--helper.c:254
 #, c-format
 msgid "Bad bisect_write argument: %s"
 msgstr "Hatalı bisect_write argümanı: %s"
 
-#: builtin/bisect--helper.c:260
+#: builtin/bisect--helper.c:259
 #, c-format
 msgid "couldn't get the oid of the rev '%s'"
 msgstr "'%s' revizyonunun oid'si alınamadı"
 
-#: builtin/bisect--helper.c:272
+#: builtin/bisect--helper.c:271
 #, c-format
 msgid "couldn't open the file '%s'"
 msgstr "'%s' dosyası açılamadı"
 
-#: builtin/bisect--helper.c:298
+#: builtin/bisect--helper.c:297
 #, c-format
 msgid "Invalid command: you're currently in a %s/%s bisect"
 msgstr "Geçersiz komut: Şu anda bir %s/%s ikili aramasındasınız"
 
-#: builtin/bisect--helper.c:325
+#: builtin/bisect--helper.c:324
 #, c-format
 msgid ""
 "You need to give me at least one %s and %s revision.\n"
@@ -10507,7 +10795,7 @@ msgstr ""
 "Bana en azından bir %s ve %s revizyonu vermeniz gerekiyor.\n"
 "Bunun için \"git bisect %s\" ve \"git bisect %s\" kullanabilirsiniz."
 
-#: builtin/bisect--helper.c:329
+#: builtin/bisect--helper.c:328
 #, c-format
 msgid ""
 "You need to start by \"git bisect start\".\n"
@@ -10518,7 +10806,7 @@ msgstr ""
 "Bundan sonra bana en azından bir %s ve %s revizyonu vermeniz gerekiyor.\n"
 "Bunun için \"git bisect %s\" ve \"git bisect %s\" kullanabilirsiniz."
 
-#: builtin/bisect--helper.c:349
+#: builtin/bisect--helper.c:348
 #, c-format
 msgid "bisecting only with a %s commit"
 msgstr "yalnızca bir %s işlemesi ile ikili arama yapılıyor"
@@ -10527,15 +10815,15 @@ msgstr "yalnızca bir %s işlemesi ile ikili arama yapılıyor"
 #. translation. The program will only accept English input
 #. at this point.
 #.
-#: builtin/bisect--helper.c:357
+#: builtin/bisect--helper.c:356
 msgid "Are you sure [Y/n]? "
 msgstr "Emin misiniz [Y/n]? "
 
-#: builtin/bisect--helper.c:418
+#: builtin/bisect--helper.c:417
 msgid "no terms defined"
 msgstr "hiçbir terim tanımlanmadı"
 
-#: builtin/bisect--helper.c:421
+#: builtin/bisect--helper.c:420
 #, c-format
 msgid ""
 "Your current terms are %s for the old state\n"
@@ -10544,7 +10832,7 @@ msgstr ""
 "Mevcut terimleriniz eski durum için %s ve\n"
 "yeni durum için %s.\n"
 
-#: builtin/bisect--helper.c:431
+#: builtin/bisect--helper.c:430
 #, c-format
 msgid ""
 "invalid argument %s for 'git bisect terms'.\n"
@@ -10553,52 +10841,52 @@ msgstr ""
 "'git bisect terms' için geçersiz argüman %s.\n"
 "Desteklenen seçenekler: --term-good|--term-old ve --term-bad|--term-new."
 
-#: builtin/bisect--helper.c:498
+#: builtin/bisect--helper.c:497 builtin/bisect--helper.c:1014
 msgid "revision walk setup failed\n"
 msgstr "revizyonda gezinme ayarlaması başarısız oldu\n"
 
-#: builtin/bisect--helper.c:520
+#: builtin/bisect--helper.c:519
 #, c-format
 msgid "could not open '%s' for appending"
 msgstr "'%s' iliştirme için açılamadı"
 
-#: builtin/bisect--helper.c:639 builtin/bisect--helper.c:652
+#: builtin/bisect--helper.c:638 builtin/bisect--helper.c:651
 msgid "'' is not a valid term"
 msgstr "'' geçerli bir terim değil"
 
-#: builtin/bisect--helper.c:662
+#: builtin/bisect--helper.c:661
 #, c-format
 msgid "unrecognized option: '%s'"
 msgstr "tanımlanamayan seçenek: '%s'"
 
-#: builtin/bisect--helper.c:666
+#: builtin/bisect--helper.c:665
 #, c-format
 msgid "'%s' does not appear to be a valid revision"
 msgstr "'%s' geçerli bir revizyon değil gibi görünüyor"
 
-#: builtin/bisect--helper.c:697
+#: builtin/bisect--helper.c:696
 msgid "bad HEAD - I need a HEAD"
 msgstr "hatalı HEAD - Bana bir HEAD gerek"
 
-#: builtin/bisect--helper.c:712
+#: builtin/bisect--helper.c:711
 #, c-format
 msgid "checking out '%s' failed. Try 'git bisect start <valid-branch>'."
 msgstr "'%s' çıkış yapımı başarısız. 'git bisect start <geçerli-dal>' deneyin."
 
-#: builtin/bisect--helper.c:733
+#: builtin/bisect--helper.c:732
 msgid "won't bisect on cg-seek'ed tree"
 msgstr "cg-seek yapılmış bir ağaçta ikili arama yapılmayacak"
 
-#: builtin/bisect--helper.c:736
+#: builtin/bisect--helper.c:735
 msgid "bad HEAD - strange symbolic ref"
 msgstr "hatalı HEAD - tuhaf sembolik başvuru"
 
-#: builtin/bisect--helper.c:756
+#: builtin/bisect--helper.c:755
 #, c-format
 msgid "invalid ref: '%s'"
 msgstr "geçersiz başvuru: '%s'"
 
-#: builtin/bisect--helper.c:814
+#: builtin/bisect--helper.c:813
 msgid "You need to start by \"git bisect start\"\n"
 msgstr "\"git bisect start\" ile başlamalısınız\n"
 
@@ -10606,93 +10894,101 @@ msgstr "\"git bisect start\" ile başlamalısınız\n"
 #. translation. The program will only accept English input
 #. at this point.
 #.
-#: builtin/bisect--helper.c:825
+#: builtin/bisect--helper.c:824
 msgid "Do you want me to do it for you [Y/n]? "
 msgstr "Bunu sizin yerinize benim yapmamı ister misiniz [Y/n]? "
 
-#: builtin/bisect--helper.c:843
+#: builtin/bisect--helper.c:842
 msgid "Please call `--bisect-state` with at least one argument"
 msgstr "Lütfen '--bisec-state'i en az bir argümanla çalıştırın"
 
-#: builtin/bisect--helper.c:856
+#: builtin/bisect--helper.c:855
 #, c-format
 msgid "'git bisect %s' can take only one argument."
 msgstr "'git bisect %s' yalnızca bir argüman alabilir."
 
-#: builtin/bisect--helper.c:868 builtin/bisect--helper.c:879
+#: builtin/bisect--helper.c:867 builtin/bisect--helper.c:878
 #, c-format
 msgid "Bad rev input: %s"
 msgstr "Hatalı revizyon girdisi: %s"
 
-#: builtin/bisect--helper.c:924
-msgid "reset the bisection state"
-msgstr "ikili arama durumunu sıfırla"
+#: builtin/bisect--helper.c:912
+msgid "We are not bisecting."
+msgstr "İkili arama yapmıyoruz."
+
+#: builtin/bisect--helper.c:962
+#, c-format
+msgid "'%s'?? what are you talking about?"
+msgstr "'%s'?? ney ney?"
 
-#: builtin/bisect--helper.c:926
-msgid "write out the bisection state in BISECT_LOG"
-msgstr "ikili arama durumunu BISECT_LOG içine yaz"
+#: builtin/bisect--helper.c:974
+#, c-format
+msgid "cannot read file '%s' for replaying"
+msgstr "'%s' dosyası yeniden oynatım için okunamıyor"
 
-#: builtin/bisect--helper.c:928
-msgid "check and set terms in a bisection state"
-msgstr "bir ikili arama durumundaki terimleri denetle ve ayarla"
+#: builtin/bisect--helper.c:1047
+msgid "reset the bisection state"
+msgstr "ikili arama durumunu sıfırla"
 
-#: builtin/bisect--helper.c:930
+#: builtin/bisect--helper.c:1049
 msgid "check whether bad or good terms exist"
 msgstr "iyi veya kötü terimlerin olup olmadığını denetle"
 
-#: builtin/bisect--helper.c:932
+#: builtin/bisect--helper.c:1051
 msgid "print out the bisect terms"
 msgstr "ikili arama terimlerini yazdır"
 
-#: builtin/bisect--helper.c:934
+#: builtin/bisect--helper.c:1053
 msgid "start the bisect session"
 msgstr "ikili arama oturumunu başlat"
 
-#: builtin/bisect--helper.c:936
+#: builtin/bisect--helper.c:1055
 msgid "find the next bisection commit"
 msgstr "bir sonraki ikili arama işlemesini bul"
 
-#: builtin/bisect--helper.c:938
-msgid "verify the next bisection state then checkout the next bisection commit"
-msgstr ""
-"bir sonraki ikili arama durumunu doğrula ve bir sonraki ikili arama "
-"işlemesini çıkış yap"
-
-#: builtin/bisect--helper.c:940
+#: builtin/bisect--helper.c:1057
 msgid "mark the state of ref (or refs)"
 msgstr "başvurunun (veya başvuruların) durumunu imle"
 
-#: builtin/bisect--helper.c:942
+#: builtin/bisect--helper.c:1059
+msgid "list the bisection steps so far"
+msgstr "şu ana kadarki ikili arama durumunu listele"
+
+#: builtin/bisect--helper.c:1061
+msgid "replay the bisection process from the given file"
+msgstr "verilen dosyadan ikili arama işlemini yeniden oynat"
+
+#: builtin/bisect--helper.c:1063
+msgid "skip some commits for checkout"
+msgstr "çıkış için birkaç işlemeyi atla"
+
+#: builtin/bisect--helper.c:1065
 msgid "no log for BISECT_WRITE"
 msgstr "BISECT_WRITE için günlük yok"
 
-#: builtin/bisect--helper.c:957
+#: builtin/bisect--helper.c:1080
 msgid "--bisect-reset requires either no argument or a commit"
 msgstr "--bisect-reset bir argüman veya işleme gerektirmiyor"
 
-#: builtin/bisect--helper.c:961
-msgid "--bisect-write requires either 4 or 5 arguments"
-msgstr "--bisect-write 4 veya 5 argüman gerektiriyor"
-
-#: builtin/bisect--helper.c:967
-msgid "--check-and-set-terms requires 3 arguments"
-msgstr "--check-and-set-terms 3 argüman gerektiriyor"
-
-#: builtin/bisect--helper.c:973
+#: builtin/bisect--helper.c:1085
 msgid "--bisect-next-check requires 2 or 3 arguments"
 msgstr "--bisect-next-check 2 veya 3 argüman gerektiriyor"
 
-#: builtin/bisect--helper.c:979
+#: builtin/bisect--helper.c:1091
 msgid "--bisect-terms requires 0 or 1 argument"
 msgstr "--bisect-terms 0 veya 1 argüman gerektiriyor"
 
-#: builtin/bisect--helper.c:988
+#: builtin/bisect--helper.c:1100
 msgid "--bisect-next requires 0 arguments"
 msgstr "--bisect-next 0 argüman gerektiriyor"
 
-#: builtin/bisect--helper.c:994
-msgid "--bisect-auto-next requires 0 arguments"
-msgstr "--bisect-auto-next 0 argüman gerektiriyor"
+#: builtin/bisect--helper.c:1111
+msgid "--bisect-log requires 0 arguments"
+msgstr "--bisect-log 0 argüman gerektiriyor"
+
+#: builtin/bisect--helper.c:1116
+msgid "no logfile given"
+msgstr "hiçbir günlük dosyası verilmedi"
 
 #: builtin/blame.c:32
 msgid "git blame [<options>] [<rev-opts>] [<rev>] [--] <file>"
@@ -10711,138 +11007,141 @@ msgstr "bir renk bekleniyor: %s"
 msgid "must end with a color"
 msgstr "bir renk ile bitmeli"
 
-#: builtin/blame.c:730
+#: builtin/blame.c:728
 #, c-format
 msgid "invalid color '%s' in color.blame.repeatedLines"
 msgstr "color.blame.repeatedLines içinde geçersiz renk '%s'"
 
-#: builtin/blame.c:748
+#: builtin/blame.c:746
 msgid "invalid value for blame.coloring"
 msgstr "blame.coloring için geçersiz değer"
 
-#: builtin/blame.c:847
+#: builtin/blame.c:845
 #, c-format
 msgid "cannot find revision %s to ignore"
 msgstr "yok saymak için %s revizyonu bulunamıyor"
 
-#: builtin/blame.c:869
-msgid "Show blame entries as we find them, incrementally"
-msgstr "genel bakış girdilerini buldukça artan biçimde göster"
+#: builtin/blame.c:867
+msgid "show blame entries as we find them, incrementally"
+msgstr "genel bakış girdilerini biz buldukça artan biçimde göster"
 
-#: builtin/blame.c:870
-msgid "Do not show object names of boundary commits (Default: off)"
+#: builtin/blame.c:868
+msgid "do not show object names of boundary commits (Default: off)"
 msgstr "sınır işlemeleri için nesne adlarını gösterme (Öntanımlı: Kapalı)"
 
-#: builtin/blame.c:871
-msgid "Do not treat root commits as boundaries (Default: off)"
-msgstr "kök işlemelerini sınır olarak varsayma (Öntanımlı: Kapalı)"
+#: builtin/blame.c:869
+msgid "do not treat root commits as boundaries (Default: off)"
+msgstr "kök işlemelerini sınır olarak değerlendirme (Öntanımlı: Kapalı)"
 
-#: builtin/blame.c:872
-msgid "Show work cost statistics"
+#: builtin/blame.c:870
+msgid "show work cost statistics"
 msgstr "iş maliyet istatistiklerini göster"
 
-#: builtin/blame.c:873
-msgid "Force progress reporting"
-msgstr "durum bildirmeyi zorla"
+#: builtin/blame.c:871 builtin/checkout.c:1503 builtin/clone.c:92
+#: builtin/commit-graph.c:84 builtin/commit-graph.c:222 builtin/fetch.c:175
+#: builtin/merge.c:297 builtin/multi-pack-index.c:27 builtin/pull.c:119
+#: builtin/push.c:575 builtin/send-pack.c:198
+msgid "force progress reporting"
+msgstr "durum belirtmeyi zorla"
 
-#: builtin/blame.c:874
-msgid "Show output score for blame entries"
+#: builtin/blame.c:872
+msgid "show output score for blame entries"
 msgstr "genel bakış girdileri için çıktı skorunu göster"
 
-#: builtin/blame.c:875
-msgid "Show original filename (Default: auto)"
+#: builtin/blame.c:873
+msgid "show original filename (Default: auto)"
 msgstr "orijinal dosya adını göster (Öntanımlı: Otomatik)"
 
-#: builtin/blame.c:876
-msgid "Show original linenumber (Default: off)"
+#: builtin/blame.c:874
+msgid "show original linenumber (Default: off)"
 msgstr "orijinal satır numarasını göster (Öntanımlı: Kapalı)"
 
-#: builtin/blame.c:877
-msgid "Show in a format designed for machine consumption"
+#: builtin/blame.c:875
+msgid "show in a format designed for machine consumption"
 msgstr "makine işlemesi için tasarlanmış bir biçimde göster"
 
-#: builtin/blame.c:878
-msgid "Show porcelain format with per-line commit information"
+#: builtin/blame.c:876
+msgid "show porcelain format with per-line commit information"
 msgstr "okunabilir biçimde her satır için işleme bilgisi ile göster"
 
-#: builtin/blame.c:879
-msgid "Use the same output mode as git-annotate (Default: off)"
+#: builtin/blame.c:877
+msgid "use the same output mode as git-annotate (Default: off)"
 msgstr "git-annotate ile aynı çıktı kipini kullan (Öntanımlı: Kapalı)"
 
-#: builtin/blame.c:880
-msgid "Show raw timestamp (Default: off)"
+#: builtin/blame.c:878
+msgid "show raw timestamp (Default: off)"
 msgstr "ham zaman damgasını göster (Öntanımlı: Kapalı)"
 
-#: builtin/blame.c:881
-msgid "Show long commit SHA1 (Default: off)"
+#: builtin/blame.c:879
+msgid "show long commit SHA1 (Default: off)"
 msgstr "uzun işleme SHA1'ini göster (Öntanımlı: Kapalı)"
 
-#: builtin/blame.c:882
-msgid "Suppress author name and timestamp (Default: off)"
+#: builtin/blame.c:880
+msgid "suppress author name and timestamp (Default: off)"
 msgstr "yazar adını ve zaman damgasını gizle (Öntanımlı: Kapalı)"
 
-#: builtin/blame.c:883
-msgid "Show author email instead of name (Default: off)"
+#: builtin/blame.c:881
+msgid "show author email instead of name (Default: off)"
 msgstr "yazar adı yerine e-postasını göster (Öntanımlı: Kapalı)"
 
-#: builtin/blame.c:884
-msgid "Ignore whitespace differences"
+#: builtin/blame.c:882
+msgid "ignore whitespace differences"
 msgstr "boşluk ayrımlarını yok say"
 
-#: builtin/blame.c:885 builtin/log.c:1813
+#: builtin/blame.c:883 builtin/log.c:1812
 msgid "rev"
 msgstr "revizyon"
 
-#: builtin/blame.c:885
-msgid "Ignore <rev> when blaming"
+#: builtin/blame.c:883
+msgid "ignore <rev> when blaming"
 msgstr "suçlarken <revizyon>'u yok say"
 
-#: builtin/blame.c:886
-msgid "Ignore revisions from <file>"
+#: builtin/blame.c:884
+msgid "ignore revisions from <file>"
 msgstr "<dosya>'dan olan revizyonları yok say"
 
-#: builtin/blame.c:887
+#: builtin/blame.c:885
 msgid "color redundant metadata from previous line differently"
 msgstr "bir önceki dosyadan gereksiz üstveriyi başka biçimde renklendir"
 
-#: builtin/blame.c:888
+#: builtin/blame.c:886
 msgid "color lines by age"
 msgstr "satırları yaşına göre renklendir"
 
-#: builtin/blame.c:889
-msgid "Spend extra cycles to find better match"
+#: builtin/blame.c:887
+msgid "spend extra cycles to find better match"
 msgstr "daha iyi eşleşme bulmak için ek döngüler harca"
 
-#: builtin/blame.c:890
-msgid "Use revisions from <file> instead of calling git-rev-list"
+#: builtin/blame.c:888
+msgid "use revisions from <file> instead of calling git-rev-list"
 msgstr "git-rev-list çağırma yerine <dosya>'dan olan revizyonları kullan"
 
-#: builtin/blame.c:891
-msgid "Use <file>'s contents as the final image"
+#: builtin/blame.c:889
+msgid "use <file>'s contents as the final image"
 msgstr "<dosya>'nın içeriğini son görüntü olarak kullan"
 
-#: builtin/blame.c:892 builtin/blame.c:893
+#: builtin/blame.c:890 builtin/blame.c:891
 msgid "score"
 msgstr "skor"
 
-#: builtin/blame.c:892
-msgid "Find line copies within and across files"
-msgstr "satır kopyalarını dosyalar içinde ve arasında ara"
+#: builtin/blame.c:890
+msgid "find line copies within and across files"
+msgstr "satır kopyalarını dosyaların içinde ve aralarında ara"
 
-#: builtin/blame.c:893
-msgid "Find line movements within and across files"
-msgstr "satır hareketlerini dosyalar içinde ve arasında ara"
+#: builtin/blame.c:891
+msgid "find line movements within and across files"
+msgstr "satır hareketlerini dosyaların içinde ve aralarında ara"
 
-#: builtin/blame.c:894
+#: builtin/blame.c:892
 msgid "range"
 msgstr "erim"
 
-#: builtin/blame.c:895
-msgid "Process only line range <start>,<end> or function :<funcname>"
+#: builtin/blame.c:893
+msgid "process only line range <start>,<end> or function :<funcname>"
 msgstr ""
 "Yalnızca <başlangıç>,<bitiş> satır erimini veya :<işlevadı> işlevini işle"
 
-#: builtin/blame.c:947
+#: builtin/blame.c:945
 msgid "--progress can't be used with --incremental or porcelain formats"
 msgstr "--progress, --incremental veya okunabilir biçimlerle kullanılamaz"
 
@@ -10854,18 +11153,18 @@ msgstr "--progress, --incremental veya okunabilir biçimlerle kullanılamaz"
 #. your language may need more or fewer display
 #. columns.
 #.
-#: builtin/blame.c:998
+#: builtin/blame.c:996
 msgid "4 years, 11 months ago"
 msgstr "4 yıl 11 ay önce"
 
-#: builtin/blame.c:1114
+#: builtin/blame.c:1112
 #, c-format
 msgid "file %s has only %lu line"
 msgid_plural "file %s has only %lu lines"
 msgstr[0] "%s dosyasında yalnızca %lu satır var"
 msgstr[1] "%s dosyasında yalnızca %lu satır var"
 
-#: builtin/blame.c:1159
+#: builtin/blame.c:1157
 msgid "Blaming lines"
 msgstr "Genel bakış satırları"
 
@@ -10933,117 +11232,107 @@ msgstr ""
 msgid "Update of config-file failed"
 msgstr "config-file güncellemesi başarısız"
 
-#: builtin/branch.c:220
+#: builtin/branch.c:223
 msgid "cannot use -a with -d"
 msgstr "-a, -d ile kullanılamıyor"
 
-#: builtin/branch.c:226
+#: builtin/branch.c:230
 msgid "Couldn't look up commit object for HEAD"
 msgstr "HEAD için işleme nesnesi aranamadı"
 
-#: builtin/branch.c:240
+#: builtin/branch.c:244
 #, c-format
 msgid "Cannot delete branch '%s' checked out at '%s'"
 msgstr "'%s' dalı silinemiyor, şurada çıkış yapılmış: '%s'"
 
-#: builtin/branch.c:255
+#: builtin/branch.c:259
 #, c-format
 msgid "remote-tracking branch '%s' not found."
 msgstr "uzak izleme dalı '%s' bulunamadı"
 
-#: builtin/branch.c:256
+#: builtin/branch.c:260
 #, c-format
 msgid "branch '%s' not found."
 msgstr "'%s' dalı bulunamadı"
 
-#: builtin/branch.c:271
-#, c-format
-msgid "Error deleting remote-tracking branch '%s'"
-msgstr "Uzak izleme dalı '%s' silinirken hata"
-
-#: builtin/branch.c:272
-#, c-format
-msgid "Error deleting branch '%s'"
-msgstr "'%s' dalı silinirken hata"
-
-#: builtin/branch.c:279
+#: builtin/branch.c:291
 #, c-format
 msgid "Deleted remote-tracking branch %s (was %s).\n"
 msgstr "Uzak izleme dalı %s silindi (%s idi).\n"
 
-#: builtin/branch.c:280
+#: builtin/branch.c:292
 #, c-format
 msgid "Deleted branch %s (was %s).\n"
 msgstr "%s dalı silindi (%s idi).\n"
 
-#: builtin/branch.c:429 builtin/tag.c:61
+#: builtin/branch.c:438 builtin/tag.c:61
 msgid "unable to parse format string"
 msgstr "biçim dizisi ayrıştırılamıyor"
 
-#: builtin/branch.c:460
+#: builtin/branch.c:469
 msgid "could not resolve HEAD"
 msgstr "HEAD çözülemedi"
 
-#: builtin/branch.c:466
+#: builtin/branch.c:475
 #, c-format
 msgid "HEAD (%s) points outside of refs/heads/"
 msgstr "HEAD (%s), refs/heads/ dışına işaret ediyor"
 
-#: builtin/branch.c:481
+#: builtin/branch.c:490
 #, c-format
 msgid "Branch %s is being rebased at %s"
 msgstr "%s dalı %s konumunda yeniden temellendiriliyor"
 
-#: builtin/branch.c:485
+#: builtin/branch.c:494
 #, c-format
 msgid "Branch %s is being bisected at %s"
 msgstr "%s dalı %s konumunda ikili aranıyor"
 
-#: builtin/branch.c:502
+#: builtin/branch.c:511
 msgid "cannot copy the current branch while not on any."
 msgstr "bir dalın üzerinde değilken geçerli dal kopyalanamaz"
 
-#: builtin/branch.c:504
+#: builtin/branch.c:513
 msgid "cannot rename the current branch while not on any."
 msgstr "bir dalın üzerinde değilken geçerli dal yeniden adlandırılamaz"
 
-#: builtin/branch.c:515
+#: builtin/branch.c:524
 #, c-format
 msgid "Invalid branch name: '%s'"
 msgstr "Geçersiz dal adı: '%s'"
 
-#: builtin/branch.c:544
+#: builtin/branch.c:553
 msgid "Branch rename failed"
 msgstr "Dal yeniden adlandırması başarısız"
 
-#: builtin/branch.c:546
+#: builtin/branch.c:555
 msgid "Branch copy failed"
 msgstr "Dal kopyalaması başarısız"
 
-#: builtin/branch.c:550
+#: builtin/branch.c:559
 #, c-format
 msgid "Created a copy of a misnamed branch '%s'"
 msgstr "Yanlış adlandırılan '%s' dalının bir kopyası oluşturuldu"
 
-#: builtin/branch.c:553
+#: builtin/branch.c:562
 #, c-format
 msgid "Renamed a misnamed branch '%s' away"
 msgstr "Yanlış adlandırılan '%s' dalı yeniden adlandırıldı"
 
-#: builtin/branch.c:559
+#: builtin/branch.c:568
 #, c-format
 msgid "Branch renamed to %s, but HEAD is not updated!"
 msgstr "Dal %s olarak yeniden adlandırıldı; ancak HEAD güncellenmedi!"
 
-#: builtin/branch.c:568
+#: builtin/branch.c:577
 msgid "Branch is renamed, but update of config-file failed"
 msgstr "Dal yeniden adlandırıldı; ancak config-file güncellemesi başarısız"
 
-#: builtin/branch.c:570
+#: builtin/branch.c:579
 msgid "Branch is copied, but update of config-file failed"
 msgstr "Dal kopyalandı; ancak config-file güncellemesi başarısız"
 
-#: builtin/branch.c:586
+#: builtin/branch.c:595
 #, c-format
 msgid ""
 "Please edit the description for the branch\n"
@@ -11054,180 +11343,180 @@ msgstr ""
 "\t%s\n"
 "'%c' ile başlayan satırlar çıkarılacaktır.\n"
 
-#: builtin/branch.c:620
+#: builtin/branch.c:629
 msgid "Generic options"
 msgstr "Genel seçenekler"
 
-#: builtin/branch.c:622
+#: builtin/branch.c:631
 msgid "show hash and subject, give twice for upstream branch"
 msgstr "sağlamayı ve konuyu göster, üstkaynak dalı için iki kez ver"
 
-#: builtin/branch.c:623
+#: builtin/branch.c:632
 msgid "suppress informational messages"
 msgstr "bilgi iletilerini gizle"
 
-#: builtin/branch.c:624
+#: builtin/branch.c:633
 msgid "set up tracking mode (see git-pull(1))"
 msgstr "izleme kipini ayarla (bilgi için: git-pull(1))"
 
-#: builtin/branch.c:626
+#: builtin/branch.c:635
 msgid "do not use"
 msgstr "kullanma"
 
-#: builtin/branch.c:628 builtin/rebase.c:532
+#: builtin/branch.c:637 builtin/rebase.c:534
 msgid "upstream"
 msgstr "üstkaynak"
 
-#: builtin/branch.c:628
+#: builtin/branch.c:637
 msgid "change the upstream info"
 msgstr "üstkaynak bilgisini değiştir"
 
-#: builtin/branch.c:629
+#: builtin/branch.c:638
 msgid "unset the upstream info"
 msgstr "üstkaynak bilgisini kaldır"
 
-#: builtin/branch.c:630
+#: builtin/branch.c:639
 msgid "use colored output"
 msgstr "renklendirilmiş çıktı kullan"
 
-#: builtin/branch.c:631
+#: builtin/branch.c:640
 msgid "act on remote-tracking branches"
 msgstr "uzak izleme dallarında iş yap"
 
-#: builtin/branch.c:633 builtin/branch.c:635
+#: builtin/branch.c:642 builtin/branch.c:644
 msgid "print only branches that contain the commit"
 msgstr "yalnızca işlemeyi içeren dalları yazdır"
 
-#: builtin/branch.c:634 builtin/branch.c:636
+#: builtin/branch.c:643 builtin/branch.c:645
 msgid "print only branches that don't contain the commit"
 msgstr "yalnızca işlemeyi içermeyen dalları yazdır"
 
-#: builtin/branch.c:639
+#: builtin/branch.c:648
 msgid "Specific git-branch actions:"
 msgstr "Özel git-branch eylemleri:"
 
-#: builtin/branch.c:640
+#: builtin/branch.c:649
 msgid "list both remote-tracking and local branches"
 msgstr "hem uzak izleme hem de yerel dalları listele"
 
-#: builtin/branch.c:642
+#: builtin/branch.c:651
 msgid "delete fully merged branch"
 msgstr "tümüyle birleştirilen dalı sil"
 
-#: builtin/branch.c:643
+#: builtin/branch.c:652
 msgid "delete branch (even if not merged)"
 msgstr "dalı sil (birleştirilmemiş olsa bile)"
 
-#: builtin/branch.c:644
+#: builtin/branch.c:653
 msgid "move/rename a branch and its reflog"
 msgstr "bir dalı ve onun başvuru günlüğünü taşı/yeniden adlandır"
 
-#: builtin/branch.c:645
+#: builtin/branch.c:654
 msgid "move/rename a branch, even if target exists"
 msgstr "bir dalı taşı/yeniden adlandır, hedef var olsa bile"
 
-#: builtin/branch.c:646
+#: builtin/branch.c:655
 msgid "copy a branch and its reflog"
 msgstr "bir dalı ve onun başvuru günlüğünü kopyala"
 
-#: builtin/branch.c:647
+#: builtin/branch.c:656
 msgid "copy a branch, even if target exists"
 msgstr "bir dalı kopyala, hedef var olsa bile"
 
-#: builtin/branch.c:648
+#: builtin/branch.c:657
 msgid "list branch names"
 msgstr "dal adlarını listele"
 
-#: builtin/branch.c:649
+#: builtin/branch.c:658
 msgid "show current branch name"
 msgstr "geçerli dal adını göster"
 
-#: builtin/branch.c:650
+#: builtin/branch.c:659
 msgid "create the branch's reflog"
 msgstr "dalın başvuru günlüğünü oluştur"
 
-#: builtin/branch.c:652
+#: builtin/branch.c:661
 msgid "edit the description for the branch"
 msgstr "dalın açıklamasını düzenle"
 
-#: builtin/branch.c:653
+#: builtin/branch.c:662
 msgid "force creation, move/rename, deletion"
 msgstr "zorla oluştur, taşı/yeniden adlandır, sil"
 
-#: builtin/branch.c:654
+#: builtin/branch.c:663
 msgid "print only branches that are merged"
 msgstr "yalnızca birleştirilen dalları yazdır"
 
-#: builtin/branch.c:655
+#: builtin/branch.c:664
 msgid "print only branches that are not merged"
 msgstr "yalnızca birleştirilmeyen dalları yazdır"
 
-#: builtin/branch.c:656
+#: builtin/branch.c:665
 msgid "list branches in columns"
 msgstr "dalları sütunlarla listele"
 
-#: builtin/branch.c:658 builtin/for-each-ref.c:42 builtin/notes.c:415
+#: builtin/branch.c:667 builtin/for-each-ref.c:42 builtin/notes.c:415
 #: builtin/notes.c:418 builtin/notes.c:581 builtin/notes.c:584
-#: builtin/tag.c:434
+#: builtin/tag.c:466
 msgid "object"
 msgstr "nesne"
 
-#: builtin/branch.c:659
+#: builtin/branch.c:668
 msgid "print only branches of the object"
 msgstr "yalnızca nesnenin dallarını yazdır"
 
-#: builtin/branch.c:660 builtin/for-each-ref.c:48 builtin/tag.c:441
+#: builtin/branch.c:669 builtin/for-each-ref.c:48 builtin/tag.c:473
 msgid "sorting and filtering are case insensitive"
 msgstr "sıralama ve süzme BÜYÜK/küçük harf duyarlı değildir"
 
-#: builtin/branch.c:661 builtin/for-each-ref.c:38 builtin/tag.c:439
+#: builtin/branch.c:670 builtin/for-each-ref.c:38 builtin/tag.c:471
 #: builtin/verify-tag.c:38
 msgid "format to use for the output"
 msgstr "çıktı için kullanılacak biçim"
 
-#: builtin/branch.c:684 builtin/clone.c:790
+#: builtin/branch.c:693 builtin/clone.c:790
 msgid "HEAD not found below refs/heads!"
 msgstr "HEAD, refs/heads altında bulunamadı!"
 
-#: builtin/branch.c:708
+#: builtin/branch.c:717
 msgid "--column and --verbose are incompatible"
 msgstr "--column ve --verbose birbiriyle uyumsuz"
 
-#: builtin/branch.c:723 builtin/branch.c:777 builtin/branch.c:786
+#: builtin/branch.c:732 builtin/branch.c:788 builtin/branch.c:797
 msgid "branch name required"
 msgstr "dal adı gerekli"
 
-#: builtin/branch.c:753
+#: builtin/branch.c:764
 msgid "Cannot give description to detached HEAD"
 msgstr "Ayrılmış HEAD'e açıklama verilemiyor"
 
-#: builtin/branch.c:758
+#: builtin/branch.c:769
 msgid "cannot edit description of more than one branch"
 msgstr "birden çok dalın açıklaması düzenlenemiyor"
 
-#: builtin/branch.c:765
+#: builtin/branch.c:776
 #, c-format
 msgid "No commit on branch '%s' yet."
 msgstr "'%s' dalında henüz bir işleme yok."
 
-#: builtin/branch.c:768
+#: builtin/branch.c:779
 #, c-format
 msgid "No branch named '%s'."
 msgstr "'%s' adında bir dal yok."
 
-#: builtin/branch.c:783
+#: builtin/branch.c:794
 msgid "too many branches for a copy operation"
 msgstr "bir kopyalama işlemi için çok fazla dal"
 
-#: builtin/branch.c:792
+#: builtin/branch.c:803
 msgid "too many arguments for a rename operation"
 msgstr "bir yeniden adlandırma işlemi için çok fazla argüman"
 
-#: builtin/branch.c:797
+#: builtin/branch.c:808
 msgid "too many arguments to set new upstream"
 msgstr "yeni üstkaynak ayarlamak için çok fazla argüman"
 
-#: builtin/branch.c:801
+#: builtin/branch.c:812
 #, c-format
 msgid ""
 "could not set upstream of HEAD to %s when it does not point to any branch."
@@ -11235,31 +11524,31 @@ msgstr ""
 "HEAD'in üst kaynağı %s olarak ayarlanamadı; çünkü herhangi bir dala işaret "
 "etmiyor."
 
-#: builtin/branch.c:804 builtin/branch.c:827
+#: builtin/branch.c:815 builtin/branch.c:838
 #, c-format
 msgid "no such branch '%s'"
 msgstr "'%s' diye bir dal yok"
 
-#: builtin/branch.c:808
+#: builtin/branch.c:819
 #, c-format
 msgid "branch '%s' does not exist"
 msgstr "'%s' diye bir dal mevcut değil"
 
-#: builtin/branch.c:821
+#: builtin/branch.c:832
 msgid "too many arguments to unset upstream"
 msgstr "üst kaynağı kaldırmak için çok fazla argüman"
 
-#: builtin/branch.c:825
+#: builtin/branch.c:836
 msgid "could not unset upstream of HEAD when it does not point to any branch."
 msgstr ""
 "HEAD'in üst kaynağı kaldırılamadı; çünkü herhangi bir dala işaret etmiyor."
 
-#: builtin/branch.c:831
+#: builtin/branch.c:842
 #, c-format
 msgid "Branch '%s' has no upstream information"
 msgstr "'%s' dalının üstkaynak bilgisi yok"
 
-#: builtin/branch.c:841
+#: builtin/branch.c:852
 msgid ""
 "The -a, and -r, options to 'git branch' do not take a branch name.\n"
 "Did you mean to use: -a|-r --list <pattern>?"
@@ -11267,7 +11556,7 @@ msgstr ""
 "'git branch'in -a ve -r seçenekleri bir dal adı almaz.\n"
 "Şunu mu demek istediniz: -a|-r --list <dizgi>?"
 
-#: builtin/branch.c:845
+#: builtin/branch.c:856
 msgid ""
 "the '--set-upstream' option is no longer supported. Please use '--track' or "
 "'--set-upstream-to' instead."
@@ -11387,19 +11676,19 @@ msgstr "git bundle list-heads <dosya> [<başvuru-adı>...]"
 msgid "git bundle unbundle <file> [<refname>...]"
 msgstr "git bundle unbundle <dosya> [<başvuru-adı>...]"
 
-#: builtin/bundle.c:67 builtin/pack-objects.c:3480
+#: builtin/bundle.c:67 builtin/pack-objects.c:3495
 msgid "do not show progress meter"
 msgstr "ilerleme çubuğunu gösterme"
 
-#: builtin/bundle.c:69 builtin/pack-objects.c:3482
+#: builtin/bundle.c:69 builtin/pack-objects.c:3497
 msgid "show progress meter"
 msgstr "ilerleme çubuğunu göster"
 
-#: builtin/bundle.c:71 builtin/pack-objects.c:3484
+#: builtin/bundle.c:71 builtin/pack-objects.c:3499
 msgid "show progress meter during object writing phase"
 msgstr "ilerleme çubuğunu nesne yazımı aşaması sırasında göster"
 
-#: builtin/bundle.c:74 builtin/pack-objects.c:3487
+#: builtin/bundle.c:74 builtin/pack-objects.c:3502
 msgid "similar to --all-progress when progress meter is shown"
 msgstr "ilerleme çubuğu gösterildiğinde --all-progress'e benzer"
 
@@ -11542,8 +11831,8 @@ msgstr "dosya adlarını stdin'den oku"
 msgid "terminate input and output records by a NUL character"
 msgstr "girdi ve çıktı kayıtlarını bir NUL karakteri ile sonlandır"
 
-#: builtin/check-ignore.c:21 builtin/checkout.c:1500 builtin/gc.c:541
-#: builtin/worktree.c:561
+#: builtin/check-ignore.c:21 builtin/checkout.c:1499 builtin/gc.c:549
+#: builtin/worktree.c:489
 msgid "suppress progress reporting"
 msgstr "ilerleme bildirimini gizle"
 
@@ -11596,54 +11885,54 @@ msgstr "kişi ayrıştırılamadı: %s"
 msgid "no contacts specified"
 msgstr "kişi belirtilmedi"
 
-#: builtin/checkout-index.c:139
+#: builtin/checkout-index.c:152
 msgid "git checkout-index [<options>] [--] [<file>...]"
 msgstr "git checkout-index [<seçenekler>] [--] [<dosya>...]"
 
-#: builtin/checkout-index.c:156
+#: builtin/checkout-index.c:169
 msgid "stage should be between 1 and 3 or all"
 msgstr "stage 1 ve 3 arasında veya tümü olmalıdır"
 
-#: builtin/checkout-index.c:173
+#: builtin/checkout-index.c:186
 msgid "check out all files in the index"
 msgstr "indeksteki tüm dosyaları çıkış yap"
 
-#: builtin/checkout-index.c:174
+#: builtin/checkout-index.c:187
 msgid "force overwrite of existing files"
 msgstr "mevcut dosyaların üzerine yazılmasını zorla"
 
-#: builtin/checkout-index.c:176
+#: builtin/checkout-index.c:189
 msgid "no warning for existing files and files not in index"
 msgstr "mevcut dosyalar ve indekste olmayan dosyalar için uyarma"
 
-#: builtin/checkout-index.c:178
+#: builtin/checkout-index.c:191
 msgid "don't checkout new files"
 msgstr "yeni dosyaları çıkış yapma"
 
-#: builtin/checkout-index.c:180
+#: builtin/checkout-index.c:193
 msgid "update stat information in the index file"
 msgstr "indeks dosyasındaki dosya bilgilerini güncelle"
 
-#: builtin/checkout-index.c:184
+#: builtin/checkout-index.c:197
 msgid "read list of paths from the standard input"
 msgstr "yolların listesini standart girdi'den oku"
 
-#: builtin/checkout-index.c:186
+#: builtin/checkout-index.c:199
 msgid "write the content to temporary files"
 msgstr "içeriği geçici dosyalara yaz"
 
-#: builtin/checkout-index.c:187 builtin/column.c:31
+#: builtin/checkout-index.c:200 builtin/column.c:31
 #: builtin/submodule--helper.c:1824 builtin/submodule--helper.c:1827
 #: builtin/submodule--helper.c:1835 builtin/submodule--helper.c:2333
-#: builtin/worktree.c:757
+#: builtin/worktree.c:717
 msgid "string"
 msgstr "dizi"
 
-#: builtin/checkout-index.c:188
+#: builtin/checkout-index.c:201
 msgid "when creating files, prepend <string>"
 msgstr "dosyalar oluştururken başına <dizi> ekle"
 
-#: builtin/checkout-index.c:190
+#: builtin/checkout-index.c:203
 msgid "copy out the files from named stage"
 msgstr "dosyaları adı verilen alandan kopyala"
 
@@ -11745,16 +12034,16 @@ msgstr "'%s', '%s' ögesinin belirtilmediği durumlarda kullanılmalıdır"
 msgid "'%s' or '%s' cannot be used with %s"
 msgstr "'%s' veya '%s', %s ile birlikte kullanılamaz"
 
-#: builtin/checkout.c:541 builtin/checkout.c:548
+#: builtin/checkout.c:543 builtin/checkout.c:550
 #, c-format
 msgid "path '%s' is unmerged"
 msgstr "'%s' yolu birleştirilmemiş"
 
-#: builtin/checkout.c:716
+#: builtin/checkout.c:718
 msgid "you need to resolve your current index first"
 msgstr "önce geçerli indeksinizi çözmelisiniz"
 
-#: builtin/checkout.c:770
+#: builtin/checkout.c:772
 #, c-format
 msgid ""
 "cannot continue with staged changes in the following files:\n"
@@ -11763,50 +12052,50 @@ msgstr ""
 "aşağıdaki dosyalardaki hazırlanan değişikliklerle sürdürülemiyor:\n"
 "%s"
 
-#: builtin/checkout.c:866
+#: builtin/checkout.c:865
 #, c-format
 msgid "Can not do reflog for '%s': %s\n"
 msgstr "'%s' için başvuru günlüğü yapılamıyor: %s\n"
 
-#: builtin/checkout.c:908
+#: builtin/checkout.c:907
 msgid "HEAD is now at"
 msgstr "HEAD konumu:"
 
-#: builtin/checkout.c:912 builtin/clone.c:721 t/helper/test-fast-rebase.c:202
+#: builtin/checkout.c:911 builtin/clone.c:721 t/helper/test-fast-rebase.c:202
 msgid "unable to update HEAD"
 msgstr "HEAD güncellenemiyor"
 
-#: builtin/checkout.c:916
+#: builtin/checkout.c:915
 #, c-format
 msgid "Reset branch '%s'\n"
 msgstr "'%s' dalı sıfırlandı.\n"
 
-#: builtin/checkout.c:919
+#: builtin/checkout.c:918
 #, c-format
 msgid "Already on '%s'\n"
 msgstr "Halihazırda '%s' üzerinde\n"
 
-#: builtin/checkout.c:923
+#: builtin/checkout.c:922
 #, c-format
 msgid "Switched to and reset branch '%s'\n"
 msgstr "'%s' dalına geçildi ve sıfırlandı.\n"
 
-#: builtin/checkout.c:925 builtin/checkout.c:1356
+#: builtin/checkout.c:924 builtin/checkout.c:1355
 #, c-format
 msgid "Switched to a new branch '%s'\n"
 msgstr "Yeni '%s' dalına geçildi.\n"
 
-#: builtin/checkout.c:927
+#: builtin/checkout.c:926
 #, c-format
 msgid "Switched to branch '%s'\n"
 msgstr "'%s' dalına geçildi.\n"
 
-#: builtin/checkout.c:978
+#: builtin/checkout.c:977
 #, c-format
 msgid " ... and %d more.\n"
 msgstr "... ve %d daha.\n"
 
-#: builtin/checkout.c:984
+#: builtin/checkout.c:983
 #, c-format
 msgid ""
 "Warning: you are leaving %d commit behind, not connected to\n"
@@ -11829,7 +12118,7 @@ msgstr[1] ""
 "\n"
 "%s\n"
 
-#: builtin/checkout.c:1003
+#: builtin/checkout.c:1002
 #, c-format
 msgid ""
 "If you want to keep it by creating a new branch, this may be a good time\n"
@@ -11856,19 +12145,19 @@ msgstr[1] ""
 "\tgit branch <yeni-dal-adı> %s\n"
 "\n"
 
-#: builtin/checkout.c:1038
+#: builtin/checkout.c:1037
 msgid "internal error in revision walk"
 msgstr "revizyonlarda gezinirken iç hata"
 
-#: builtin/checkout.c:1042
+#: builtin/checkout.c:1041
 msgid "Previous HEAD position was"
 msgstr "Önceki HEAD konumu şuydu:"
 
-#: builtin/checkout.c:1082 builtin/checkout.c:1351
+#: builtin/checkout.c:1081 builtin/checkout.c:1350
 msgid "You are on a branch yet to be born"
 msgstr "Henüz doğmamış bir dal üzerindesiniz"
 
-#: builtin/checkout.c:1164
+#: builtin/checkout.c:1163
 #, c-format
 msgid ""
 "'%s' could be both a local file and a tracking branch.\n"
@@ -11877,7 +12166,7 @@ msgstr ""
 "'%s' hem bir yerel dosya hem de bir izleme dalı olabilir.\n"
 "Lütfen -- (ve isteğe bağlı olarak --no-guess) kullanıp belirsizliği giderin."
 
-#: builtin/checkout.c:1171
+#: builtin/checkout.c:1170
 msgid ""
 "If you meant to check out a remote tracking branch on, e.g. 'origin',\n"
 "you can do so by fully qualifying the name with the --track option:\n"
@@ -11897,51 +12186,51 @@ msgstr ""
 "isterseniz, örn. 'origin', yapılandırmanızda checkout.defaultsRemote=origin\n"
 "ayarını yapmayı düşünün."
 
-#: builtin/checkout.c:1181
+#: builtin/checkout.c:1180
 #, c-format
 msgid "'%s' matched multiple (%d) remote tracking branches"
 msgstr "'%s' birden çok (%d) uzak izleme dalıyla eşleşti"
 
-#: builtin/checkout.c:1247
+#: builtin/checkout.c:1246
 msgid "only one reference expected"
 msgstr "yalnızca bir başvuru bekleniyordu"
 
-#: builtin/checkout.c:1264
+#: builtin/checkout.c:1263
 #, c-format
 msgid "only one reference expected, %d given."
 msgstr "yalnızca bir başvuru bekleniyordu, %d verildi"
 
-#: builtin/checkout.c:1310 builtin/worktree.c:342 builtin/worktree.c:510
+#: builtin/checkout.c:1309 builtin/worktree.c:270 builtin/worktree.c:438
 #, c-format
 msgid "invalid reference: %s"
 msgstr "geçersiz başvuru: %s"
 
-#: builtin/checkout.c:1323 builtin/checkout.c:1689
+#: builtin/checkout.c:1322 builtin/checkout.c:1688
 #, c-format
 msgid "reference is not a tree: %s"
 msgstr "başvuru bir ağaca değil: %s"
 
-#: builtin/checkout.c:1370
+#: builtin/checkout.c:1369
 #, c-format
 msgid "a branch is expected, got tag '%s'"
 msgstr "bir dal bekleniyordu, '%s' etiketi alındı"
 
-#: builtin/checkout.c:1372
+#: builtin/checkout.c:1371
 #, c-format
 msgid "a branch is expected, got remote branch '%s'"
 msgstr "bir dal bekleniyordu, '%s' uzak dalı alındı"
 
-#: builtin/checkout.c:1373 builtin/checkout.c:1381
+#: builtin/checkout.c:1372 builtin/checkout.c:1380
 #, c-format
 msgid "a branch is expected, got '%s'"
 msgstr "bir dal bekleniyordu, '%s' alındı"
 
-#: builtin/checkout.c:1376
+#: builtin/checkout.c:1375
 #, c-format
 msgid "a branch is expected, got commit '%s'"
 msgstr "bir dal bekleniyordu, '%s' işlemesi alındı"
 
-#: builtin/checkout.c:1392
+#: builtin/checkout.c:1391
 msgid ""
 "cannot switch branch while merging\n"
 "Consider \"git merge --quit\" or \"git worktree add\"."
@@ -11949,7 +12238,7 @@ msgstr ""
 "Birleştirme yaparken dal değiştirilemiyor.\n"
 "\"git merge --quit\" veya \"git worktree add\" yapmayı düşünün."
 
-#: builtin/checkout.c:1396
+#: builtin/checkout.c:1395
 msgid ""
 "cannot switch branch in the middle of an am session\n"
 "Consider \"git am --quit\" or \"git worktree add\"."
@@ -11957,7 +12246,7 @@ msgstr ""
 "Bir \"am\" oturumunun ortasında dal değiştirilemiyor.\n"
 "\"git am --quit\" veya \"git worktree add\" yapmayı düşünün."
 
-#: builtin/checkout.c:1400
+#: builtin/checkout.c:1399
 msgid ""
 "cannot switch branch while rebasing\n"
 "Consider \"git rebase --quit\" or \"git worktree add\"."
@@ -11965,7 +12254,7 @@ msgstr ""
 "Yeniden temellendirme yaparken dal değiştirilemiyor.\n"
 "\"git rebase --quit\" veya \"git worktree add\" yapmayı düşünün."
 
-#: builtin/checkout.c:1404
+#: builtin/checkout.c:1403
 msgid ""
 "cannot switch branch while cherry-picking\n"
 "Consider \"git cherry-pick --quit\" or \"git worktree add\"."
@@ -11973,7 +12262,7 @@ msgstr ""
 "Seç-al yaparken dal değiştirilemiyor.\n"
 "\"git cherry-pick --quit\" veya \"git worktree add\" yapmayı düşünün."
 
-#: builtin/checkout.c:1408
+#: builtin/checkout.c:1407
 msgid ""
 "cannot switch branch while reverting\n"
 "Consider \"git revert --quit\" or \"git worktree add\"."
@@ -11981,145 +12270,138 @@ msgstr ""
 "Geriye al yaparken dal değiştirilemiyor.\n"
 "\"git revert --quit\" veya \"git worktree add\" yapmayı düşünün."
 
-#: builtin/checkout.c:1412
+#: builtin/checkout.c:1411
 msgid "you are switching branch while bisecting"
 msgstr "ikili arama yaparken dal değiştiriyorsunuz"
 
-#: builtin/checkout.c:1419
+#: builtin/checkout.c:1418
 msgid "paths cannot be used with switching branches"
 msgstr "dal değiştirilirken yollar kullanılamaz"
 
-#: builtin/checkout.c:1422 builtin/checkout.c:1426 builtin/checkout.c:1430
+#: builtin/checkout.c:1421 builtin/checkout.c:1425 builtin/checkout.c:1429
 #, c-format
 msgid "'%s' cannot be used with switching branches"
 msgstr "dal değiştirilirken '%s' kullanılamaz"
 
-#: builtin/checkout.c:1434 builtin/checkout.c:1437 builtin/checkout.c:1440
-#: builtin/checkout.c:1445 builtin/checkout.c:1450
+#: builtin/checkout.c:1433 builtin/checkout.c:1436 builtin/checkout.c:1439
+#: builtin/checkout.c:1444 builtin/checkout.c:1449
 #, c-format
 msgid "'%s' cannot be used with '%s'"
 msgstr "'%s', '%s' ile birlikte kullanılamaz"
 
-#: builtin/checkout.c:1447
+#: builtin/checkout.c:1446
 #, c-format
 msgid "'%s' cannot take <start-point>"
 msgstr "'%s', <başlama-noktası> alamaz"
 
-#: builtin/checkout.c:1455
+#: builtin/checkout.c:1454
 #, c-format
 msgid "Cannot switch branch to a non-commit '%s'"
 msgstr "Dal, işleme olmayan '%s' ögesine değiştirilemez"
 
-#: builtin/checkout.c:1462
+#: builtin/checkout.c:1461
 msgid "missing branch or commit argument"
 msgstr "dal veya işleme argümanı eksik"
 
-#: builtin/checkout.c:1504 builtin/clone.c:92 builtin/commit-graph.c:84
-#: builtin/commit-graph.c:222 builtin/fetch.c:172 builtin/merge.c:296
-#: builtin/multi-pack-index.c:27 builtin/pull.c:119 builtin/push.c:575
-#: builtin/send-pack.c:198
-msgid "force progress reporting"
-msgstr "durum belirtmeyi zorla"
-
-#: builtin/checkout.c:1505
+#: builtin/checkout.c:1504
 msgid "perform a 3-way merge with the new branch"
 msgstr "yeni dal ile bir 3 yönlü birleştirme gerçekleştir"
 
-#: builtin/checkout.c:1506 builtin/log.c:1800 parse-options.h:322
+#: builtin/checkout.c:1505 builtin/log.c:1799 parse-options.h:322
 msgid "style"
 msgstr "stil"
 
-#: builtin/checkout.c:1507
+#: builtin/checkout.c:1506
 msgid "conflict style (merge or diff3)"
 msgstr "çakışma stili (birleştirme veya diff3)"
 
-#: builtin/checkout.c:1519 builtin/worktree.c:558
+#: builtin/checkout.c:1518 builtin/worktree.c:486
 msgid "detach HEAD at named commit"
 msgstr "adı verilen işlemede HEAD'i ayır"
 
-#: builtin/checkout.c:1520
+#: builtin/checkout.c:1519
 msgid "set upstream info for new branch"
 msgstr "yeni dal için üstkaynak bilgisi ayarla"
 
-#: builtin/checkout.c:1522
+#: builtin/checkout.c:1521
 msgid "force checkout (throw away local modifications)"
 msgstr "zorla çıkış yap (yerel değişiklikleri çöpe at)"
 
-#: builtin/checkout.c:1524
+#: builtin/checkout.c:1523
 msgid "new-branch"
 msgstr "yeni dal"
 
-#: builtin/checkout.c:1524
+#: builtin/checkout.c:1523
 msgid "new unparented branch"
 msgstr "yeni üst ögesi olmayan dal"
 
-#: builtin/checkout.c:1526 builtin/merge.c:300
+#: builtin/checkout.c:1525 builtin/merge.c:301
 msgid "update ignored files (default)"
 msgstr "yok sayılan dosyaları güncelle (öntanımlı)"
 
-#: builtin/checkout.c:1529
+#: builtin/checkout.c:1528
 msgid "do not check if another worktree is holding the given ref"
 msgstr ""
 "verilen başvuruyu başka bir çalışma ağacının tutup tutmadığını denetleme"
 
-#: builtin/checkout.c:1542
+#: builtin/checkout.c:1541
 msgid "checkout our version for unmerged files"
 msgstr "birleştirilmeyen dosyalar için bizdeki sürümü çıkış yap"
 
-#: builtin/checkout.c:1545
+#: builtin/checkout.c:1544
 msgid "checkout their version for unmerged files"
 msgstr "birleştirilmeyen dosyalar için onlardaki sürümünü çıkış yap"
 
-#: builtin/checkout.c:1549
+#: builtin/checkout.c:1548
 msgid "do not limit pathspecs to sparse entries only"
 msgstr "yol belirteçlerini yalnızca aralıklı girdilere kısıtlama"
 
-#: builtin/checkout.c:1604
+#: builtin/checkout.c:1603
 #, c-format
 msgid "-%c, -%c and --orphan are mutually exclusive"
 msgstr "-%c, -%c ve --orphan birlikte kullanılmaz"
 
-#: builtin/checkout.c:1608
+#: builtin/checkout.c:1607
 msgid "-p and --overlay are mutually exclusive"
 msgstr "-p ve --overlay birlikte kullanılmaz"
 
-#: builtin/checkout.c:1645
+#: builtin/checkout.c:1644
 msgid "--track needs a branch name"
 msgstr "--track için bir dal adı gerekli"
 
-#: builtin/checkout.c:1650
+#: builtin/checkout.c:1649
 #, c-format
 msgid "missing branch name; try -%c"
 msgstr "eksik dal adı; -%c deneyin"
 
-#: builtin/checkout.c:1682
+#: builtin/checkout.c:1681
 #, c-format
 msgid "could not resolve %s"
 msgstr "%s çözülemedi"
 
-#: builtin/checkout.c:1698
+#: builtin/checkout.c:1697
 msgid "invalid path specification"
 msgstr "geçersiz yol belirtimi"
 
-#: builtin/checkout.c:1705
+#: builtin/checkout.c:1704
 #, c-format
 msgid "'%s' is not a commit and a branch '%s' cannot be created from it"
 msgstr "'%s' bir işleme değil ve ondan bir '%s' dalı oluşturulamaz"
 
-#: builtin/checkout.c:1709
+#: builtin/checkout.c:1708
 #, c-format
 msgid "git checkout: --detach does not take a path argument '%s'"
 msgstr "git checkout: --detach bir '%s' yol argümanı almıyor"
 
-#: builtin/checkout.c:1718
+#: builtin/checkout.c:1717
 msgid "--pathspec-from-file is incompatible with --detach"
 msgstr "--pathspec-from-file, --detach ile uyumsuz"
 
-#: builtin/checkout.c:1721 builtin/reset.c:325 builtin/stash.c:1499
+#: builtin/checkout.c:1720 builtin/reset.c:325 builtin/stash.c:1566
 msgid "--pathspec-from-file is incompatible with --patch"
 msgstr "--pathspec-from-file, --patch ile uyumsuz"
 
-#: builtin/checkout.c:1734
+#: builtin/checkout.c:1733
 msgid ""
 "git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
 "checking out of the index."
@@ -12127,70 +12409,70 @@ msgstr ""
 "git checkout: --ours/--theirs, --force ve --merge indeks çıkışı yapılırken\n"
 "birlikte kullanılamaz"
 
-#: builtin/checkout.c:1739
+#: builtin/checkout.c:1738
 msgid "you must specify path(s) to restore"
 msgstr "eski durumuna getirilecek yolları belirtmelisiniz"
 
-#: builtin/checkout.c:1765 builtin/checkout.c:1767 builtin/checkout.c:1816
-#: builtin/checkout.c:1818 builtin/clone.c:122 builtin/remote.c:170
-#: builtin/remote.c:172 builtin/submodule--helper.c:2719 builtin/worktree.c:554
-#: builtin/worktree.c:556
+#: builtin/checkout.c:1764 builtin/checkout.c:1766 builtin/checkout.c:1815
+#: builtin/checkout.c:1817 builtin/clone.c:122 builtin/remote.c:170
+#: builtin/remote.c:172 builtin/submodule--helper.c:2719 builtin/worktree.c:482
+#: builtin/worktree.c:484
 msgid "branch"
 msgstr "dal"
 
-#: builtin/checkout.c:1766
+#: builtin/checkout.c:1765
 msgid "create and checkout a new branch"
 msgstr "yeni bir dal oluştur ve çıkış yap"
 
-#: builtin/checkout.c:1768
+#: builtin/checkout.c:1767
 msgid "create/reset and checkout a branch"
 msgstr "bir dal oluştur/sıfırla ve çıkış yap"
 
-#: builtin/checkout.c:1769
+#: builtin/checkout.c:1768
 msgid "create reflog for new branch"
 msgstr "yeni dal için başvuru günlüğü oluştur"
 
-#: builtin/checkout.c:1771
+#: builtin/checkout.c:1770
 msgid "second guess 'git checkout <no-such-branch>' (default)"
 msgstr "'git checkout <böyle-bir-dal-yok>'a temkinli yaklaş (öntanımlı)"
 
-#: builtin/checkout.c:1772
+#: builtin/checkout.c:1771
 msgid "use overlay mode (default)"
 msgstr "yerpaylaşım kipini kullan (öntanımlı)"
 
-#: builtin/checkout.c:1817
+#: builtin/checkout.c:1816
 msgid "create and switch to a new branch"
 msgstr "yeni bir dal oluştur ve ona geç"
 
-#: builtin/checkout.c:1819
+#: builtin/checkout.c:1818
 msgid "create/reset and switch to a branch"
 msgstr "bir dal oluştur/sıfırla ve ona geç"
 
-#: builtin/checkout.c:1821
+#: builtin/checkout.c:1820
 msgid "second guess 'git switch <no-such-branch>'"
 msgstr "'git switch <böyle-bir-dal-yok>'a temkinli yaklaş"
 
-#: builtin/checkout.c:1823
+#: builtin/checkout.c:1822
 msgid "throw away local modifications"
 msgstr "yerel değişiklikleri çöpe at"
 
-#: builtin/checkout.c:1857
+#: builtin/checkout.c:1856
 msgid "which tree-ish to checkout from"
 msgstr "çıkış yapılacak ağacımsı"
 
-#: builtin/checkout.c:1859
+#: builtin/checkout.c:1858
 msgid "restore the index"
 msgstr "indeksi eski durumuna getir"
 
-#: builtin/checkout.c:1861
+#: builtin/checkout.c:1860
 msgid "restore the working tree (default)"
 msgstr "çalışma ağacını eski durumuna getir"
 
-#: builtin/checkout.c:1863
+#: builtin/checkout.c:1862
 msgid "ignore unmerged entries"
 msgstr "birleştirilmemiş girdileri yok say"
 
-#: builtin/checkout.c:1864
+#: builtin/checkout.c:1863
 msgid "use overlay mode"
 msgstr "yerpaylaşım kipini kullan"
 
@@ -12334,8 +12616,8 @@ msgid "remove whole directories"
 msgstr "dizinleri tümüyle kaldır"
 
 #: builtin/clean.c:909 builtin/describe.c:565 builtin/describe.c:567
-#: builtin/grep.c:921 builtin/log.c:183 builtin/log.c:185
-#: builtin/ls-files.c:558 builtin/name-rev.c:526 builtin/name-rev.c:528
+#: builtin/grep.c:922 builtin/log.c:184 builtin/log.c:186
+#: builtin/ls-files.c:573 builtin/name-rev.c:526 builtin/name-rev.c:528
 #: builtin/show-ref.c:179
 msgid "pattern"
 msgstr "dizgi"
@@ -12431,7 +12713,7 @@ msgid "use --reference only while cloning"
 msgstr "--reference'ı yalnızca klonlarken kullan"
 
 #: builtin/clone.c:120 builtin/column.c:27 builtin/init-db.c:563
-#: builtin/merge-file.c:46 builtin/pack-objects.c:3546 builtin/repack.c:358
+#: builtin/merge-file.c:46 builtin/pack-objects.c:3561 builtin/repack.c:357
 msgid "name"
 msgstr "ad"
 
@@ -12447,7 +12729,7 @@ msgstr "uzak konumun HEAD'i yerine <dal>'ı çıkış yap"
 msgid "path to git-upload-pack on the remote"
 msgstr "uzak konumdaki git-upload-pack'e olan yol"
 
-#: builtin/clone.c:126 builtin/fetch.c:173 builtin/grep.c:860
+#: builtin/clone.c:126 builtin/fetch.c:176 builtin/grep.c:861
 #: builtin/pull.c:208
 msgid "depth"
 msgstr "derinlik"
@@ -12456,7 +12738,7 @@ msgstr "derinlik"
 msgid "create a shallow clone of that depth"
 msgstr "verilen derinlikte sığ bir depo oluştur"
 
-#: builtin/clone.c:128 builtin/fetch.c:175 builtin/pack-objects.c:3535
+#: builtin/clone.c:128 builtin/fetch.c:178 builtin/pack-objects.c:3550
 #: builtin/pull.c:211
 msgid "time"
 msgstr "zaman"
@@ -12465,12 +12747,12 @@ msgstr "zaman"
 msgid "create a shallow clone since a specific time"
 msgstr "verilen zamandan sonrasını içeren bir sığ depo oluştur"
 
-#: builtin/clone.c:130 builtin/fetch.c:177 builtin/fetch.c:200
-#: builtin/pull.c:214 builtin/pull.c:239 builtin/rebase.c:1317
+#: builtin/clone.c:130 builtin/fetch.c:180 builtin/fetch.c:203
+#: builtin/pull.c:214 builtin/pull.c:239 builtin/rebase.c:1323
 msgid "revision"
 msgstr "revizyon"
 
-#: builtin/clone.c:131 builtin/fetch.c:178 builtin/pull.c:215
+#: builtin/clone.c:131 builtin/fetch.c:181 builtin/pull.c:215
 msgid "deepen history of shallow clone, excluding rev"
 msgstr "revizyonu hariç tutarak sığ klonun geçmişini derinleştir"
 
@@ -12503,22 +12785,22 @@ msgstr "anahtar=değer"
 msgid "set config inside the new repository"
 msgstr "yapılandırmayı yeni deponun içinde ayarla"
 
-#: builtin/clone.c:143 builtin/fetch.c:195 builtin/ls-remote.c:76
+#: builtin/clone.c:143 builtin/fetch.c:198 builtin/ls-remote.c:77
 #: builtin/pull.c:230 builtin/push.c:584 builtin/send-pack.c:196
 msgid "server-specific"
 msgstr "sunucuya özel"
 
-#: builtin/clone.c:143 builtin/fetch.c:195 builtin/ls-remote.c:76
+#: builtin/clone.c:143 builtin/fetch.c:198 builtin/ls-remote.c:77
 #: builtin/pull.c:231 builtin/push.c:584 builtin/send-pack.c:197
 msgid "option to transmit"
 msgstr "iletme seçeneği"
 
-#: builtin/clone.c:144 builtin/fetch.c:196 builtin/pull.c:234
+#: builtin/clone.c:144 builtin/fetch.c:199 builtin/pull.c:234
 #: builtin/push.c:585
 msgid "use IPv4 addresses only"
 msgstr "yalnızca IPv4 adresleri kullan"
 
-#: builtin/clone.c:146 builtin/fetch.c:198 builtin/pull.c:237
+#: builtin/clone.c:146 builtin/fetch.c:201 builtin/pull.c:237
 #: builtin/push.c:587
 msgid "use IPv6 addresses only"
 msgstr "yalnızca IPv6 adresleri kullan"
@@ -12621,112 +12903,112 @@ msgstr "temizlik için yeniden paketlenemiyor"
 msgid "cannot unlink temporary alternates file"
 msgstr "geçici alternatifler dosyasının bağlantısı kesilemiyor"
 
-#: builtin/clone.c:992 builtin/receive-pack.c:2493
+#: builtin/clone.c:993 builtin/receive-pack.c:2493
 msgid "Too many arguments."
 msgstr "Çok fazla argüman."
 
-#: builtin/clone.c:996
+#: builtin/clone.c:997
 msgid "You must specify a repository to clone."
 msgstr "Klonlamak için bir depo belirtmelisiniz."
 
-#: builtin/clone.c:1009
+#: builtin/clone.c:1010
 #, c-format
 msgid "--bare and --origin %s options are incompatible."
 msgstr "--bare ve --origin %s seçenekleri birbiriyle uyumsuz."
 
-#: builtin/clone.c:1012
+#: builtin/clone.c:1013
 msgid "--bare and --separate-git-dir are incompatible."
 msgstr "--bare ve --separate-git-dir birbiriyle uyumsuz."
 
-#: builtin/clone.c:1025
+#: builtin/clone.c:1026
 #, c-format
 msgid "repository '%s' does not exist"
 msgstr "'%s' deposu mevcut değil"
 
-#: builtin/clone.c:1029 builtin/fetch.c:1841
+#: builtin/clone.c:1030 builtin/fetch.c:1951
 #, c-format
 msgid "depth %s is not a positive number"
 msgstr "%s derinliği pozitif bir sayı değil"
 
-#: builtin/clone.c:1039
+#: builtin/clone.c:1040
 #, c-format
 msgid "destination path '%s' already exists and is not an empty directory."
 msgstr "Hedef yolu '%s' halihazırda mevcut ve boş bir dizin değil."
 
-#: builtin/clone.c:1045
+#: builtin/clone.c:1046
 #, c-format
 msgid "repository path '%s' already exists and is not an empty directory."
 msgstr "Depo yolu '%s' halihazırda mevcut ve boş bir dizin değil."
 
-#: builtin/clone.c:1059
+#: builtin/clone.c:1060
 #, c-format
 msgid "working tree '%s' already exists."
 msgstr "Çalışma ağacı '%s' halihazırda mevcut."
 
-#: builtin/clone.c:1074 builtin/clone.c:1095 builtin/difftool.c:271
-#: builtin/log.c:1987 builtin/worktree.c:354 builtin/worktree.c:386
+#: builtin/clone.c:1075 builtin/clone.c:1096 builtin/difftool.c:271
+#: builtin/log.c:1986 builtin/worktree.c:282 builtin/worktree.c:314
 #, c-format
 msgid "could not create leading directories of '%s'"
 msgstr "şunun öncü dizinleri oluşturulamadı: '%s'"
 
-#: builtin/clone.c:1079
+#: builtin/clone.c:1080
 #, c-format
 msgid "could not create work tree dir '%s'"
 msgstr "'%s' çalışma ağacı dizini oluşturulamadı"
 
-#: builtin/clone.c:1099
+#: builtin/clone.c:1100
 #, c-format
 msgid "Cloning into bare repository '%s'...\n"
 msgstr "'%s' çıplak deposuna klonlanıyor...\n"
 
-#: builtin/clone.c:1101
+#: builtin/clone.c:1102
 #, c-format
 msgid "Cloning into '%s'...\n"
 msgstr "Klonlama konumu: '%s'...\n"
 
-#: builtin/clone.c:1125
+#: builtin/clone.c:1126
 msgid ""
 "clone --recursive is not compatible with both --reference and --reference-if-"
 "able"
 msgstr ""
 "clone --recursive hem --reference hem --reference-if-able ile uyumlu değil"
 
-#: builtin/clone.c:1169 builtin/remote.c:200 builtin/remote.c:705
+#: builtin/clone.c:1170 builtin/remote.c:200 builtin/remote.c:705
 #, c-format
 msgid "'%s' is not a valid remote name"
 msgstr "'%s' geçerli bir uzak konum adı değil"
 
-#: builtin/clone.c:1210
+#: builtin/clone.c:1211
 msgid "--depth is ignored in local clones; use file:// instead."
 msgstr "--depth yerel klonlarda yok sayılır; yerine file:// kullanın."
 
-#: builtin/clone.c:1212
+#: builtin/clone.c:1213
 msgid "--shallow-since is ignored in local clones; use file:// instead."
 msgstr "--shallow-since yerel klonlarda yok sayılır; yerine file:// kullanın."
 
-#: builtin/clone.c:1214
+#: builtin/clone.c:1215
 msgid "--shallow-exclude is ignored in local clones; use file:// instead."
 msgstr ""
 "--shallow-exclude yerel klonlarda yok sayılır; yerine file:// kullanın."
 
-#: builtin/clone.c:1216
+#: builtin/clone.c:1217
 msgid "--filter is ignored in local clones; use file:// instead."
 msgstr "--filter yerel klonlarda yok sayılır; yerine file:// kullanın."
 
-#: builtin/clone.c:1219
+#: builtin/clone.c:1220
 msgid "source repository is shallow, ignoring --local"
 msgstr "kaynak depo sığ, --local yok sayılıyor"
 
-#: builtin/clone.c:1224
+#: builtin/clone.c:1225
 msgid "--local is ignored"
 msgstr "--local yok sayıldı"
 
-#: builtin/clone.c:1311 builtin/clone.c:1319
+#: builtin/clone.c:1315 builtin/clone.c:1323
 #, c-format
 msgid "Remote branch %s not found in upstream %s"
 msgstr "%s uzak dalı %s üstkaynağında bulunamadı"
 
-#: builtin/clone.c:1322
+#: builtin/clone.c:1326
 msgid "You appear to have cloned an empty repository."
 msgstr "Boş bir depoyu klonlamış görünüyorsunuz."
 
@@ -12784,13 +13066,13 @@ msgid "could not find object directory matching %s"
 msgstr "'%s' ile eşleşen nesne dizini bulunamadı"
 
 #: builtin/commit-graph.c:80 builtin/commit-graph.c:210
-#: builtin/commit-graph.c:316 builtin/fetch.c:184 builtin/log.c:1769
+#: builtin/commit-graph.c:316 builtin/fetch.c:187 builtin/log.c:1768
 msgid "dir"
 msgstr "dizin"
 
 #: builtin/commit-graph.c:81 builtin/commit-graph.c:211
 #: builtin/commit-graph.c:317
-msgid "The object directory to store the graph"
+msgid "the object directory to store the graph"
 msgstr "Grafiğin depolanacağı nesne dizini"
 
 #: builtin/commit-graph.c:83
@@ -12882,7 +13164,7 @@ msgstr ""
 msgid "duplicate parent %s ignored"
 msgstr "yinelenmiş üst öge %s yok sayıldı"
 
-#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:555
+#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:557
 #, c-format
 msgid "not a valid object name %s"
 msgstr "%s geçerli bir nesne adı değil"
@@ -12910,9 +13192,9 @@ msgstr "üst öge"
 msgid "id of a parent commit object"
 msgstr "bir üst işleme ögesinin no'su"
 
-#: builtin/commit-tree.c:114 builtin/commit.c:1504 builtin/merge.c:281
-#: builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1470
-#: builtin/tag.c:413
+#: builtin/commit-tree.c:114 builtin/commit.c:1504 builtin/merge.c:282
+#: builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1537
+#: builtin/tag.c:445
 msgid "message"
 msgstr "ileti"
 
@@ -12924,7 +13206,7 @@ msgstr "işleme iletisi"
 msgid "read commit log message from file"
 msgstr "işleme günlük iletisini dosyadan oku"
 
-#: builtin/commit-tree.c:121 builtin/commit.c:1516 builtin/merge.c:298
+#: builtin/commit-tree.c:121 builtin/commit.c:1516 builtin/merge.c:299
 #: builtin/pull.c:176 builtin/revert.c:118
 msgid "GPG sign commit"
 msgstr "işlemeyi GPG ile imzala"
@@ -13078,7 +13360,7 @@ msgstr ""
 msgid "could not lookup commit %s"
 msgstr "%s işlemesi aranamadı"
 
-#: builtin/commit.c:729 builtin/shortlog.c:425
+#: builtin/commit.c:729 builtin/shortlog.c:413
 #, c-format
 msgid "(reading log message from standard input)\n"
 msgstr "(günlük iletisi standart girdi'den okunuyor)\n"
@@ -13175,7 +13457,7 @@ msgstr "İndeks okunamıyor"
 msgid "Error building trees"
 msgstr "Ağaçlar yapılırken hata"
 
-#: builtin/commit.c:1011 builtin/tag.c:276
+#: builtin/commit.c:1011 builtin/tag.c:308
 #, c-format
 msgid "Please supply the message using either -m or -F option.\n"
 msgstr "Lütfen iletiyi -m veya -F seçeneğini kullanarak destekleyin.\n"
@@ -13271,7 +13553,7 @@ msgid "version"
 msgstr "sürüm"
 
 #: builtin/commit.c:1374 builtin/commit.c:1533 builtin/push.c:560
-#: builtin/worktree.c:725
+#: builtin/worktree.c:679
 msgid "machine-readable output"
 msgstr "makine tarafından okunabilir çıktı"
 
@@ -13285,7 +13567,7 @@ msgstr "girdileri NUL ile sonlandır"
 
 #: builtin/commit.c:1382 builtin/commit.c:1386 builtin/commit.c:1541
 #: builtin/fast-export.c:1198 builtin/fast-export.c:1201
-#: builtin/fast-export.c:1204 builtin/rebase.c:1406 parse-options.h:336
+#: builtin/fast-export.c:1204 builtin/rebase.c:1412 parse-options.h:336
 msgid "mode"
 msgstr "kip"
 
@@ -13346,7 +13628,7 @@ msgstr "diff'i işleme iletisi şablonunda göster"
 msgid "Commit message options"
 msgstr "İşleme iletisi seçenekleri"
 
-#: builtin/commit.c:1501 builtin/merge.c:285 builtin/tag.c:415
+#: builtin/commit.c:1501 builtin/merge.c:286 builtin/tag.c:447
 msgid "read message from file"
 msgstr "iletiyi dosyadan oku"
 
@@ -13358,7 +13640,7 @@ msgstr "yazar"
 msgid "override author for commit"
 msgstr "işleme yazarını geçersiz kıl"
 
-#: builtin/commit.c:1503 builtin/gc.c:542
+#: builtin/commit.c:1503 builtin/gc.c:550
 msgid "date"
 msgstr "tarih"
 
@@ -13367,7 +13649,7 @@ msgid "override date for commit"
 msgstr "işleme tarihini geçersiz kıl"
 
 #: builtin/commit.c:1505 builtin/commit.c:1506 builtin/commit.c:1507
-#: builtin/commit.c:1508 parse-options.h:328 ref-filter.h:87
+#: builtin/commit.c:1508 parse-options.h:328 ref-filter.h:90
 msgid "commit"
 msgstr "işleme"
 
@@ -13396,7 +13678,7 @@ msgid "the commit is authored by me now (used with -C/-c/--amend)"
 msgstr ""
 "işlemenin yazarı şu andan itibaren benim (-C/-c/--amend ile kullanıldı)"
 
-#: builtin/commit.c:1510 builtin/log.c:1744 builtin/merge.c:301
+#: builtin/commit.c:1510 builtin/log.c:1743 builtin/merge.c:302
 #: builtin/pull.c:145 builtin/revert.c:110
 msgid "add a Signed-off-by trailer"
 msgstr "bir Signed-off-by artbilgisi ekle"
@@ -14033,41 +14315,41 @@ msgstr "--stdin ve --merge-base birlikte kullanılamaz"
 msgid "--merge-base only works with two commits"
 msgstr "--merge-base yalnızca iki işleme ile kullanılabilir"
 
-#: builtin/diff.c:91
+#: builtin/diff.c:92
 #, c-format
 msgid "'%s': not a regular file or symlink"
 msgstr "'%s': Sıradan bir dosya veya sembolik bağ değil"
 
-#: builtin/diff.c:258
+#: builtin/diff.c:259
 #, c-format
 msgid "invalid option: %s"
 msgstr "geçersiz seçenek: %s"
 
-#: builtin/diff.c:375
+#: builtin/diff.c:376
 #, c-format
 msgid "%s...%s: no merge base"
 msgstr "%s...%s: birleştirme temeli yok"
 
-#: builtin/diff.c:485
+#: builtin/diff.c:486
 msgid "Not a git repository"
 msgstr "Bir git deposu değil"
 
-#: builtin/diff.c:530 builtin/grep.c:681
+#: builtin/diff.c:532 builtin/grep.c:682
 #, c-format
 msgid "invalid object '%s' given."
 msgstr "geçersiz nesne '%s' verildi"
 
-#: builtin/diff.c:541
+#: builtin/diff.c:543
 #, c-format
 msgid "more than two blobs given: '%s'"
 msgstr "ikiden çok ikili nesne verildi: '%s'"
 
-#: builtin/diff.c:546
+#: builtin/diff.c:548
 #, c-format
 msgid "unhandled object '%s' given."
 msgstr "ele alınmayan nesne '%s' verildi"
 
-#: builtin/diff.c:580
+#: builtin/diff.c:582
 #, c-format
 msgid "%s...%s: multiple merge bases, using %s"
 msgstr "%s...%s: çoklu birleştirme temelleri, %s kullanılıyor"
@@ -14250,40 +14532,40 @@ msgstr ""
 "başka bir kodlamaya iye işleme iletilerinin nasıl ele alınacağını seçin"
 
 #: builtin/fast-export.c:1208
-msgid "Dump marks to this file"
+msgid "dump marks to this file"
 msgstr "imleri bu dosyaya boşalt"
 
 #: builtin/fast-export.c:1210
-msgid "Import marks from this file"
+msgid "import marks from this file"
 msgstr "imleri bu dosyadan içe aktar"
 
 #: builtin/fast-export.c:1214
-msgid "Import marks from this file if it exists"
+msgid "import marks from this file if it exists"
 msgstr "eğer varsa bu dosyadan imleri içe aktar"
 
 #: builtin/fast-export.c:1216
-msgid "Fake a tagger when tags lack one"
+msgid "fake a tagger when tags lack one"
 msgstr "etiketlerin bir etiketleyicisi yoksa varmış gibi davran"
 
 #: builtin/fast-export.c:1218
-msgid "Output full tree for each commit"
+msgid "output full tree for each commit"
 msgstr "her işleme için tüm ağacın çıktısını ver"
 
 #: builtin/fast-export.c:1220
-msgid "Use the done feature to terminate the stream"
+msgid "use the done feature to terminate the stream"
 msgstr "akışı sonlandırmak için 'done' özelliğini kullan"
 
 #: builtin/fast-export.c:1221
-msgid "Skip output of blob data"
+msgid "skip output of blob data"
 msgstr "ikili nesne verisi çıktısını atla"
 
-#: builtin/fast-export.c:1222 builtin/log.c:1816
+#: builtin/fast-export.c:1222 builtin/log.c:1815
 msgid "refspec"
 msgstr "başvuru belirteci"
 
 #: builtin/fast-export.c:1223
-msgid "Apply refspec to exported refs"
-msgstr "başvuru belirtecini dışa aktarılan başvurulara aktar"
+msgid "apply refspec to exported refs"
+msgstr "başvuru belirtecini dışa aktarılan başvurulara uygula"
 
 #: builtin/fast-export.c:1224
 msgid "anonymize output"
@@ -14298,15 +14580,15 @@ msgid "convert <from> to <to> in anonymized output"
 msgstr "<kimden> ve <kime>'yi anonimleştirilmiş çıktıda dönüştür"
 
 #: builtin/fast-export.c:1229
-msgid "Reference parents which are not in fast-export stream by object id"
+msgid "reference parents which are not in fast-export stream by object id"
 msgstr "'fast-export' akışında olmayan üst ögelere nesne numarası ile başvur"
 
 #: builtin/fast-export.c:1231
-msgid "Show original object ids of blobs/commits"
+msgid "show original object ids of blobs/commits"
 msgstr "ikili nesnelerin/işlemelerin orijinal nesne numaralarını göster"
 
 #: builtin/fast-export.c:1233
-msgid "Label tags with mark ids"
+msgid "label tags with mark ids"
 msgstr "etiketleri im numaralarıyla adlandır"
 
 #: builtin/fast-export.c:1256
@@ -14346,7 +14628,7 @@ msgstr "Altmodül yeniden yazım seçeneği için name:filename biçimi bekleniy
 msgid "feature '%s' forbidden in input without --allow-unsafe-features"
 msgstr "'%s' özelliği --allow-unsafe-features olmadan girdide yasaklı"
 
-#: builtin/fetch-pack.c:241
+#: builtin/fetch-pack.c:242
 #, c-format
 msgid "Lockfile created but not reported: %s"
 msgstr "Kilit dosyası oluşturuldu; ancak raporlanmadı: %s"
@@ -14367,94 +14649,98 @@ msgstr "git fetch --multiple [<seçenekler>] [(<depo> | <grup>)...]"
 msgid "git fetch --all [<options>]"
 msgstr "git fetch --all [<seçenekler>]"
 
-#: builtin/fetch.c:119
+#: builtin/fetch.c:120
 msgid "fetch.parallel cannot be negative"
 msgstr "fetch.parallel negatif olamaz"
 
-#: builtin/fetch.c:142 builtin/pull.c:185
+#: builtin/fetch.c:143 builtin/pull.c:185
 msgid "fetch from all remotes"
 msgstr "tüm uzak konumlardan getir"
 
-#: builtin/fetch.c:144 builtin/pull.c:245
+#: builtin/fetch.c:145 builtin/pull.c:245
 msgid "set upstream for git pull/fetch"
 msgstr "git pull/fetch için üstkaynak ayarla"
 
-#: builtin/fetch.c:146 builtin/pull.c:188
+#: builtin/fetch.c:147 builtin/pull.c:188
 msgid "append to .git/FETCH_HEAD instead of overwriting"
 msgstr ".git/FETCH_HEAD'in üzerine yazmak yerine ona iliştir"
 
-#: builtin/fetch.c:148 builtin/pull.c:191
+#: builtin/fetch.c:149
+msgid "use atomic transaction to update references"
+msgstr "başvuruları güncellemek için atomsal işlem kullan"
+
+#: builtin/fetch.c:151 builtin/pull.c:191
 msgid "path to upload pack on remote end"
 msgstr "uzak uçtaki yükleme paketine olan yol"
 
-#: builtin/fetch.c:149
+#: builtin/fetch.c:152
 msgid "force overwrite of local reference"
 msgstr "yerel başvurunun üzerine zorla yaz"
 
-#: builtin/fetch.c:151
+#: builtin/fetch.c:154
 msgid "fetch from multiple remotes"
 msgstr "birden çok uzak konumdan getir"
 
-#: builtin/fetch.c:153 builtin/pull.c:195
+#: builtin/fetch.c:156 builtin/pull.c:195
 msgid "fetch all tags and associated objects"
 msgstr "tüm etiketleri ve ilişkilendirilen nesneleri getir"
 
-#: builtin/fetch.c:155
+#: builtin/fetch.c:158
 msgid "do not fetch all tags (--no-tags)"
 msgstr "tüm etiketleri getirme (--no-tags)"
 
-#: builtin/fetch.c:157
+#: builtin/fetch.c:160
 msgid "number of submodules fetched in parallel"
 msgstr "paralelde getirilen altmodüllerin sayısı"
 
-#: builtin/fetch.c:159 builtin/pull.c:198
+#: builtin/fetch.c:162 builtin/pull.c:198
 msgid "prune remote-tracking branches no longer on remote"
 msgstr "artık uzak konumda olmayan uzak izleme dallarını buda"
 
-#: builtin/fetch.c:161
+#: builtin/fetch.c:164
 msgid "prune local tags no longer on remote and clobber changed tags"
 msgstr ""
 "artık uzak konumda olmayan yerel etiketleri buda ve değiştirilen etiketleri "
 "güncelle"
 
-#: builtin/fetch.c:162 builtin/fetch.c:187 builtin/pull.c:122
+#: builtin/fetch.c:165 builtin/fetch.c:190 builtin/pull.c:122
 msgid "on-demand"
 msgstr "istek üzerine"
 
-#: builtin/fetch.c:163
+#: builtin/fetch.c:166
 msgid "control recursive fetching of submodules"
 msgstr "altmodüllerin özyineli getirilmesini denetle"
 
-#: builtin/fetch.c:168
+#: builtin/fetch.c:171
 msgid "write fetched references to the FETCH_HEAD file"
 msgstr "getirilen başvuruları FETCH_HEAD dosyasına yaz"
 
-#: builtin/fetch.c:169 builtin/pull.c:206
+#: builtin/fetch.c:172 builtin/pull.c:206
 msgid "keep downloaded pack"
 msgstr "indirilen paketi tut"
 
-#: builtin/fetch.c:171
+#: builtin/fetch.c:174
 msgid "allow updating of HEAD ref"
 msgstr "HEAD başvurusunun güncellenmesine izin ver"
 
-#: builtin/fetch.c:174 builtin/fetch.c:180 builtin/pull.c:209
+#: builtin/fetch.c:177 builtin/fetch.c:183 builtin/pull.c:209
 #: builtin/pull.c:218
 msgid "deepen history of shallow clone"
 msgstr "sığ klonun geçmişini derinleştir"
 
-#: builtin/fetch.c:176 builtin/pull.c:212
+#: builtin/fetch.c:179 builtin/pull.c:212
 msgid "deepen history of shallow repository based on time"
 msgstr "zamana bağlı olarak sığ deponun geçmişini derinleştir"
 
-#: builtin/fetch.c:182 builtin/pull.c:221
+#: builtin/fetch.c:185 builtin/pull.c:221
 msgid "convert to a complete repository"
 msgstr "tam bir depoya dönüştür"
 
-#: builtin/fetch.c:185
+#: builtin/fetch.c:188
 msgid "prepend this to submodule path output"
 msgstr "bunu altmodül yol çıktısının başına ekle"
 
-#: builtin/fetch.c:188
+#: builtin/fetch.c:191
 msgid ""
 "default for recursive fetching of submodules (lower priority than config "
 "files)"
@@ -14462,98 +14748,98 @@ msgstr ""
 "altmodüllerin özyineli getirilmesi için öntanımlı (yapılandırma "
 "dosyalarından daha az önceliğe iye)"
 
-#: builtin/fetch.c:192 builtin/pull.c:224
+#: builtin/fetch.c:195 builtin/pull.c:224
 msgid "accept refs that update .git/shallow"
 msgstr ".git/shallow'u güncelleyen başvuruları kabul et"
 
-#: builtin/fetch.c:193 builtin/pull.c:226
+#: builtin/fetch.c:196 builtin/pull.c:226
 msgid "refmap"
 msgstr "ilgili başvuru"
 
-#: builtin/fetch.c:194 builtin/pull.c:227
+#: builtin/fetch.c:197 builtin/pull.c:227
 msgid "specify fetch refmap"
 msgstr "getirme ile ilgili başvuruları belirt"
 
-#: builtin/fetch.c:201 builtin/pull.c:240
+#: builtin/fetch.c:204 builtin/pull.c:240
 msgid "report that we have only objects reachable from this object"
 msgstr "yalnızca bu nesneden ulaşılabilir nesnelerimiz olduğunu bildir"
 
-#: builtin/fetch.c:204 builtin/fetch.c:206
+#: builtin/fetch.c:207 builtin/fetch.c:209
 msgid "run 'maintenance --auto' after fetching"
 msgstr "getirme sonrasında 'maintenance --auto' çalıştır"
 
-#: builtin/fetch.c:208 builtin/pull.c:243
+#: builtin/fetch.c:211 builtin/pull.c:243
 msgid "check for forced-updates on all updated branches"
 msgstr "tüm güncellenmiş dalları zorlanmış güncellemeler için denetle"
 
-#: builtin/fetch.c:210
+#: builtin/fetch.c:213
 msgid "write the commit-graph after fetching"
 msgstr "getirdikten sonra işleme grafiğini yaz"
 
-#: builtin/fetch.c:212
+#: builtin/fetch.c:215
 msgid "accept refspecs from stdin"
 msgstr "başvuru belirteçlerini stdin'den oku"
 
-#: builtin/fetch.c:523
+#: builtin/fetch.c:526
 msgid "Couldn't find remote ref HEAD"
 msgstr "Uzak HEAD başvurusu bulunamadı"
 
-#: builtin/fetch.c:677
+#: builtin/fetch.c:697
 #, c-format
 msgid "configuration fetch.output contains invalid value %s"
 msgstr "fetch.output yapılandırması geçersiz değer içeriyor: %s"
 
-#: builtin/fetch.c:775
+#: builtin/fetch.c:796
 #, c-format
 msgid "object %s not found"
 msgstr "%s nesnesi bulunamadı"
 
-#: builtin/fetch.c:779
+#: builtin/fetch.c:800
 msgid "[up to date]"
 msgstr "[güncel]"
 
-#: builtin/fetch.c:792 builtin/fetch.c:808 builtin/fetch.c:880
+#: builtin/fetch.c:813 builtin/fetch.c:829 builtin/fetch.c:901
 msgid "[rejected]"
 msgstr "[reddedildi]"
 
-#: builtin/fetch.c:793
+#: builtin/fetch.c:814
 msgid "can't fetch in current branch"
 msgstr "geçerli dalda getirme yapılamıyor"
 
-#: builtin/fetch.c:803
+#: builtin/fetch.c:824
 msgid "[tag update]"
 msgstr "[etiket güncellemesi]"
 
-#: builtin/fetch.c:804 builtin/fetch.c:841 builtin/fetch.c:863
-#: builtin/fetch.c:875
+#: builtin/fetch.c:825 builtin/fetch.c:862 builtin/fetch.c:884
+#: builtin/fetch.c:896
 msgid "unable to update local ref"
 msgstr "yerel başvuru güncellenemiyor"
 
-#: builtin/fetch.c:808
+#: builtin/fetch.c:829
 msgid "would clobber existing tag"
 msgstr "var olan etiketi değiştirecektir"
 
-#: builtin/fetch.c:830
+#: builtin/fetch.c:851
 msgid "[new tag]"
 msgstr "[yeni etiket]"
 
-#: builtin/fetch.c:833
+#: builtin/fetch.c:854
 msgid "[new branch]"
 msgstr "[yeni dal]"
 
-#: builtin/fetch.c:836
+#: builtin/fetch.c:857
 msgid "[new ref]"
 msgstr "[yeni başvuru]"
 
-#: builtin/fetch.c:875
+#: builtin/fetch.c:896
 msgid "forced update"
 msgstr "zorlanmış güncelleme"
 
-#: builtin/fetch.c:880
+#: builtin/fetch.c:901
 msgid "non-fast-forward"
 msgstr "ileri sarım değil"
 
-#: builtin/fetch.c:901
+#: builtin/fetch.c:1005
 msgid ""
 "Fetch normally indicates which branches had a forced update,\n"
 "but that check has been disabled. To re-enable, use '--show-forced-updates'\n"
@@ -14563,7 +14849,7 @@ msgstr ""
 "ancak bu denetleme kapatılmış. Yeniden açmak için --show-forced-updates\n"
 "bayrağını kullanın veya 'git config fetch.showForcedUpdates true' çalıştırın."
 
-#: builtin/fetch.c:905
+#: builtin/fetch.c:1009
 #, c-format
 msgid ""
 "It took %.2f seconds to check forced updates. You can use\n"
@@ -14575,22 +14861,22 @@ msgstr ""
 "kullanarak veya 'git config fetch.showForcedUpdates false' çalıştırarak\n"
 "bu denetlemeden kaçınabilirsiniz.\n"
 
-#: builtin/fetch.c:939
+#: builtin/fetch.c:1041
 #, c-format
 msgid "%s did not send all necessary objects\n"
 msgstr "%s tüm gerekli nesneleri göndermedi\n"
 
-#: builtin/fetch.c:960
+#: builtin/fetch.c:1069
 #, c-format
 msgid "reject %s because shallow roots are not allowed to be updated"
 msgstr "%s reddedilmeli; çünkü sığ köklerin güncellenmesine izin verilmiyor"
 
-#: builtin/fetch.c:1053 builtin/fetch.c:1191
+#: builtin/fetch.c:1146 builtin/fetch.c:1297
 #, c-format
 msgid "From %.*s\n"
 msgstr "Şu konumdan: %.*s\n"
 
-#: builtin/fetch.c:1064
+#: builtin/fetch.c:1168
 #, c-format
 msgid ""
 "some local refs could not be updated; try running\n"
@@ -14599,56 +14885,56 @@ msgstr ""
 "bazı yerel başvurular güncellenemedi; 'git remote prune %s'\n"
 "kullanarak eski ve çakışan dalları kaldırmayı deneyin"
 
-#: builtin/fetch.c:1161
+#: builtin/fetch.c:1267
 #, c-format
 msgid "   (%s will become dangling)"
 msgstr "   (%s sarkacak)"
 
-#: builtin/fetch.c:1162
+#: builtin/fetch.c:1268
 #, c-format
 msgid "   (%s has become dangling)"
 msgstr "   (%s sarkmaya başladı)"
 
-#: builtin/fetch.c:1194
+#: builtin/fetch.c:1300
 msgid "[deleted]"
 msgstr "[silindi]"
 
-#: builtin/fetch.c:1195 builtin/remote.c:1118
+#: builtin/fetch.c:1301 builtin/remote.c:1118
 msgid "(none)"
 msgstr "(hiçbiri)"
 
-#: builtin/fetch.c:1218
+#: builtin/fetch.c:1324
 #, c-format
 msgid "Refusing to fetch into current branch %s of non-bare repository"
 msgstr "Çıplak olmayan deponun geçerli %s dalına getirme reddediliyor"
 
-#: builtin/fetch.c:1237
+#: builtin/fetch.c:1343
 #, c-format
 msgid "Option \"%s\" value \"%s\" is not valid for %s"
 msgstr "\"%s\" seçeneği \"%s\" değeri %s için geçerli değil"
 
-#: builtin/fetch.c:1240
+#: builtin/fetch.c:1346
 #, c-format
 msgid "Option \"%s\" is ignored for %s\n"
 msgstr "\"%s\" seçeneği %s için yok sayılıyor\n"
 
-#: builtin/fetch.c:1448
+#: builtin/fetch.c:1558
 msgid "multiple branches detected, incompatible with --set-upstream"
 msgstr "birden çok dal algılandı, --set-upstream ile uyumsuz"
 
-#: builtin/fetch.c:1463
+#: builtin/fetch.c:1573
 msgid "not setting upstream for a remote remote-tracking branch"
 msgstr "bir uzak konum uzak izleme dalı için üstkaynak ayarlanmıyor"
 
-#: builtin/fetch.c:1465
+#: builtin/fetch.c:1575
 msgid "not setting upstream for a remote tag"
 msgstr "bir uzak konum etiketi için üstkaynak ayarlanmıyor"
 
-#: builtin/fetch.c:1467
+#: builtin/fetch.c:1577
 msgid "unknown branch type"
 msgstr "bilinmeyen dal türü"
 
-#: builtin/fetch.c:1469
+#: builtin/fetch.c:1579
 msgid ""
 "no source branch found.\n"
 "you need to specify exactly one branch with the --set-upstream option."
@@ -14656,22 +14942,22 @@ msgstr ""
 "Kaynak dal bulunamadı.\n"
 "--set-upstream-option ile tam olarak bir dal belirtmeniz gerekiyor."
 
-#: builtin/fetch.c:1598 builtin/fetch.c:1661
+#: builtin/fetch.c:1708 builtin/fetch.c:1771
 #, c-format
 msgid "Fetching %s\n"
 msgstr "%s getiriliyor\n"
 
-#: builtin/fetch.c:1608 builtin/fetch.c:1663 builtin/remote.c:101
+#: builtin/fetch.c:1718 builtin/fetch.c:1773 builtin/remote.c:101
 #, c-format
 msgid "Could not fetch %s"
 msgstr "%s getirilemedi"
 
-#: builtin/fetch.c:1620
+#: builtin/fetch.c:1730
 #, c-format
 msgid "could not fetch '%s' (exit code: %d)\n"
 msgstr "'%s' getirilemedi (çıkış kodu: %d)\n"
 
-#: builtin/fetch.c:1724
+#: builtin/fetch.c:1834
 msgid ""
 "No remote repository specified.  Please, specify either a URL or a\n"
 "remote name from which new revisions should be fetched."
@@ -14679,45 +14965,45 @@ msgstr ""
 "Bir uzak dal belirtilmedi. Lütfen yeni revizyonların\n"
 "alınacağı bir URL veya uzak konum adı belirtin."
 
-#: builtin/fetch.c:1760
+#: builtin/fetch.c:1870
 msgid "You need to specify a tag name."
 msgstr "Bir etiket adı belirtmeniz gerekiyor."
 
-#: builtin/fetch.c:1825
+#: builtin/fetch.c:1935
 msgid "Negative depth in --deepen is not supported"
 msgstr "--deepen için negatif derinlik desteklenmiyor"
 
-#: builtin/fetch.c:1827
+#: builtin/fetch.c:1937
 msgid "--deepen and --depth are mutually exclusive"
 msgstr "--deepen ve --depth birlikte kullanılamaz"
 
-#: builtin/fetch.c:1832
+#: builtin/fetch.c:1942
 msgid "--depth and --unshallow cannot be used together"
 msgstr "--depth ve --unshallow birlikte kullanılamaz"
 
-#: builtin/fetch.c:1834
+#: builtin/fetch.c:1944
 msgid "--unshallow on a complete repository does not make sense"
 msgstr "tam bir depo üzerinde --unshallow bir anlam ifade etmiyor"
 
-#: builtin/fetch.c:1851
+#: builtin/fetch.c:1961
 msgid "fetch --all does not take a repository argument"
 msgstr "fetch --all bir depo argümanı almıyor"
 
-#: builtin/fetch.c:1853
+#: builtin/fetch.c:1963
 msgid "fetch --all does not make sense with refspecs"
 msgstr "fetch --all başvuru belirteçleri ile birlikte bir anlam ifade etmiyor"
 
-#: builtin/fetch.c:1862
+#: builtin/fetch.c:1972
 #, c-format
 msgid "No such remote or remote group: %s"
 msgstr "Böyle bir uzak konum veya uzak konum grubu yok: %s"
 
-#: builtin/fetch.c:1869
+#: builtin/fetch.c:1979
 msgid "Fetching a group and specifying refspecs does not make sense"
 msgstr ""
 "Bir grubu getirme ve başvuru belirteçleri tanımlama bir anlam ifade etmiyor"
 
-#: builtin/fetch.c:1887
+#: builtin/fetch.c:1997
 msgid ""
 "--filter can only be used with the remote configured in extensions."
 "partialclone"
@@ -14725,7 +15011,11 @@ msgstr ""
 "--filter yalnızca extensions.partialclone içinde yapılandırılmış uzak konum "
 "ile kullanılabilir."
 
-#: builtin/fetch.c:1891
+#: builtin/fetch.c:2001
+msgid "--atomic can only be used when fetching from one remote"
+msgstr "--atomic yalnızca bir uzak konumdan getirirken kullanılabilir"
+
+#: builtin/fetch.c:2005
 msgid "--stdin can only be used when fetching from one remote"
 msgstr ""
 "--stdin seçeneği yalnızca bir uzak konumdan getirilirken kullanılabilir"
@@ -14792,7 +15082,7 @@ msgstr "yer tutucuları Tcl'nin anlayabileceği biçimde tırnak içine al"
 msgid "show only <n> matched refs"
 msgstr "yalnızca <n> eşleşen başvuruyu göster"
 
-#: builtin/for-each-ref.c:39 builtin/tag.c:440
+#: builtin/for-each-ref.c:39 builtin/tag.c:472
 msgid "respect format colors"
 msgstr "biçim renklerine uy"
 
@@ -14832,32 +15122,32 @@ msgstr "bir depo yolları listesi tutan yapılandırma anahtarı"
 msgid "missing --config=<config>"
 msgstr "--config=<yapılandırma> eksik"
 
-#: builtin/fsck.c:69 builtin/fsck.c:148 builtin/fsck.c:149
+#: builtin/fsck.c:69 builtin/fsck.c:130 builtin/fsck.c:131
 msgid "unknown"
 msgstr "bilinmeyen"
 
 #. TRANSLATORS: e.g. error in tree 01bfda: <more explanation>
-#: builtin/fsck.c:101 builtin/fsck.c:121
+#: builtin/fsck.c:83 builtin/fsck.c:103
 #, c-format
 msgid "error in %s %s: %s"
 msgstr "%s %s içinde hata: %s"
 
 #. TRANSLATORS: e.g. warning in tree 01bfda: <more explanation>
-#: builtin/fsck.c:115
+#: builtin/fsck.c:97
 #, c-format
 msgid "warning in %s %s: %s"
 msgstr "%s %s içinde uyarı: %s"
 
-#: builtin/fsck.c:144 builtin/fsck.c:147
+#: builtin/fsck.c:126 builtin/fsck.c:129
 #, c-format
 msgid "broken link from %7s %s"
 msgstr "şuradan kırık bağ: %7s %s"
 
-#: builtin/fsck.c:156
+#: builtin/fsck.c:138
 msgid "wrong object type in link"
 msgstr "bağda yanlış nesne türü"
 
-#: builtin/fsck.c:172
+#: builtin/fsck.c:154
 #, c-format
 msgid ""
 "broken link from %7s %s\n"
@@ -14866,211 +15156,211 @@ msgstr ""
 "şuradan kırık bağ: %7s %s\n"
 "           şuraya: %7s %s"
 
-#: builtin/fsck.c:283
+#: builtin/fsck.c:265
 #, c-format
 msgid "missing %s %s"
 msgstr "eksik %s %s"
 
-#: builtin/fsck.c:310
+#: builtin/fsck.c:292
 #, c-format
 msgid "unreachable %s %s"
 msgstr "ulaşılamayan %s %s"
 
-#: builtin/fsck.c:330
+#: builtin/fsck.c:312
 #, c-format
 msgid "dangling %s %s"
 msgstr "sarkan %s %s"
 
-#: builtin/fsck.c:340
+#: builtin/fsck.c:322
 msgid "could not create lost-found"
 msgstr "lost-found oluşturulamadı"
 
-#: builtin/fsck.c:351
+#: builtin/fsck.c:333
 #, c-format
 msgid "could not finish '%s'"
 msgstr "'%s' bitirilemedi"
 
-#: builtin/fsck.c:368
+#: builtin/fsck.c:350
 #, c-format
 msgid "Checking %s"
 msgstr "%s denetleniyor"
 
-#: builtin/fsck.c:406
+#: builtin/fsck.c:388
 #, c-format
 msgid "Checking connectivity (%d objects)"
 msgstr "Bağlanabilirlik denetleniyor (%d nesne)"
 
-#: builtin/fsck.c:425
+#: builtin/fsck.c:407
 #, c-format
 msgid "Checking %s %s"
 msgstr "%s %s denetleniyor"
 
-#: builtin/fsck.c:430
+#: builtin/fsck.c:412
 msgid "broken links"
 msgstr "kırık bağlar"
 
-#: builtin/fsck.c:439
+#: builtin/fsck.c:421
 #, c-format
 msgid "root %s"
 msgstr "kök %s"
 
-#: builtin/fsck.c:447
+#: builtin/fsck.c:429
 #, c-format
 msgid "tagged %s %s (%s) in %s"
 msgstr "%s %s (%s) şurada etiketlendi: %s"
 
-#: builtin/fsck.c:476
+#: builtin/fsck.c:458
 #, c-format
 msgid "%s: object corrupt or missing"
 msgstr "%s: nesne hasar görmüş veya kayıp"
 
-#: builtin/fsck.c:501
+#: builtin/fsck.c:483
 #, c-format
 msgid "%s: invalid reflog entry %s"
 msgstr "%s: geçersiz başvuru günlüğü girdisi %s"
 
-#: builtin/fsck.c:515
+#: builtin/fsck.c:497
 #, c-format
 msgid "Checking reflog %s->%s"
 msgstr "Başvuru günlüğü denetleniyor: %s->%s"
 
-#: builtin/fsck.c:549
+#: builtin/fsck.c:531
 #, c-format
 msgid "%s: invalid sha1 pointer %s"
 msgstr "%s: geçersiz sha1 işaretçisi %s"
 
-#: builtin/fsck.c:556
+#: builtin/fsck.c:538
 #, c-format
 msgid "%s: not a commit"
 msgstr "%s: bir işleme değil"
 
-#: builtin/fsck.c:610
+#: builtin/fsck.c:592
 msgid "notice: No default references"
 msgstr "Uyarı: Öntanımlı başvurular yok"
 
-#: builtin/fsck.c:625
+#: builtin/fsck.c:607
 #, c-format
 msgid "%s: object corrupt or missing: %s"
 msgstr "%s: nesne hasar görmüş veya kayıp: %s"
 
-#: builtin/fsck.c:638
+#: builtin/fsck.c:620
 #, c-format
 msgid "%s: object could not be parsed: %s"
 msgstr "%s: nesne ayrıştırılamadı: %s"
 
-#: builtin/fsck.c:658
+#: builtin/fsck.c:640
 #, c-format
 msgid "bad sha1 file: %s"
 msgstr "hatalı sha1 dosyası: %s"
 
-#: builtin/fsck.c:673
+#: builtin/fsck.c:655
 msgid "Checking object directory"
 msgstr "Nesne dizini denetleniyor"
 
-#: builtin/fsck.c:676
+#: builtin/fsck.c:658
 msgid "Checking object directories"
 msgstr "Nesne dizinleri denetleniyor"
 
-#: builtin/fsck.c:691
+#: builtin/fsck.c:673
 #, c-format
 msgid "Checking %s link"
 msgstr "%s bağ denetleniyor"
 
-#: builtin/fsck.c:696 builtin/index-pack.c:865
+#: builtin/fsck.c:678 builtin/index-pack.c:865
 #, c-format
 msgid "invalid %s"
 msgstr "geçersiz %s"
 
-#: builtin/fsck.c:703
+#: builtin/fsck.c:685
 #, c-format
 msgid "%s points to something strange (%s)"
 msgstr "%s garip bir şeye işaret ediyor (%s)"
 
-#: builtin/fsck.c:709
+#: builtin/fsck.c:691
 #, c-format
 msgid "%s: detached HEAD points at nothing"
 msgstr "%s: ayrık HEAD bir şeye işaret etmiyor"
 
-#: builtin/fsck.c:713
+#: builtin/fsck.c:695
 #, c-format
 msgid "notice: %s points to an unborn branch (%s)"
 msgstr "Uyarı: %s henüz doğmamış bir dala işaret ediyor (%s)"
 
-#: builtin/fsck.c:725
+#: builtin/fsck.c:707
 msgid "Checking cache tree"
 msgstr "Önbellek ağacı denetleniyor"
 
-#: builtin/fsck.c:730
+#: builtin/fsck.c:712
 #, c-format
 msgid "%s: invalid sha1 pointer in cache-tree"
 msgstr "%s: cache-tree içinde geçersiz sha1 işaretçisi"
 
-#: builtin/fsck.c:739
+#: builtin/fsck.c:721
 msgid "non-tree in cache-tree"
 msgstr "cache-tree içinde ağaç olmayan öge"
 
-#: builtin/fsck.c:770
+#: builtin/fsck.c:752
 msgid "git fsck [<options>] [<object>...]"
 msgstr "git fsck [<seçenekler>] [<nesne>...]"
 
-#: builtin/fsck.c:776
+#: builtin/fsck.c:758
 msgid "show unreachable objects"
 msgstr "ulaşılamayan nesneleri göster"
 
-#: builtin/fsck.c:777
+#: builtin/fsck.c:759
 msgid "show dangling objects"
 msgstr "sarkan nesneleri göster"
 
-#: builtin/fsck.c:778
+#: builtin/fsck.c:760
 msgid "report tags"
 msgstr "etiketleri bildir"
 
-#: builtin/fsck.c:779
+#: builtin/fsck.c:761
 msgid "report root nodes"
 msgstr "kök düğümleri bildir"
 
-#: builtin/fsck.c:780
+#: builtin/fsck.c:762
 msgid "make index objects head nodes"
 msgstr "indeks nesnelerini dal ucu düğümü yap"
 
-#: builtin/fsck.c:781
+#: builtin/fsck.c:763
 msgid "make reflogs head nodes (default)"
 msgstr "başvuru günlüklerini dal ucu düğümü yap (öntanımlı)"
 
-#: builtin/fsck.c:782
+#: builtin/fsck.c:764
 msgid "also consider packs and alternate objects"
 msgstr "ek olarak paketleri ve alternatif nesneleri de dikkate al"
 
-#: builtin/fsck.c:783
+#: builtin/fsck.c:765
 msgid "check only connectivity"
 msgstr "yalnızca bağlanabilirliği denetle"
 
-#: builtin/fsck.c:784
+#: builtin/fsck.c:766 builtin/mktag.c:78
 msgid "enable more strict checking"
 msgstr "daha kesin denetlemeyi etkinleştir"
 
-#: builtin/fsck.c:786
+#: builtin/fsck.c:768
 msgid "write dangling objects in .git/lost-found"
 msgstr "sarkan nesneleri .git/lost-found'a yaz"
 
-#: builtin/fsck.c:787 builtin/prune.c:134
+#: builtin/fsck.c:769 builtin/prune.c:134
 msgid "show progress"
 msgstr "ilerlemeyi göster"
 
-#: builtin/fsck.c:788
+#: builtin/fsck.c:770
 msgid "show verbose names for reachable objects"
 msgstr "ulaşılabilir nesneler için ayrıntılı adları göster"
 
-#: builtin/fsck.c:847 builtin/index-pack.c:261
+#: builtin/fsck.c:829 builtin/index-pack.c:261
 msgid "Checking objects"
 msgstr "Nesneler denetleniyor"
 
-#: builtin/fsck.c:875
+#: builtin/fsck.c:857
 #, c-format
 msgid "%s: object missing"
 msgstr "%s: nesne kayıp"
 
-#: builtin/fsck.c:886
+#: builtin/fsck.c:868
 #, c-format
 msgid "invalid parameter: expected sha1, got '%s'"
 msgstr "geçersiz parametre: sha1 bekleniyordu, '%s' alındı"
@@ -15079,27 +15369,27 @@ msgstr "geçersiz parametre: sha1 bekleniyordu, '%s' alındı"
 msgid "git gc [<options>]"
 msgstr "git gc [<seçenekler>]"
 
-#: builtin/gc.c:94
+#: builtin/gc.c:93
 #, c-format
 msgid "Failed to fstat %s: %s"
 msgstr "%s fstat yapılamadı: %s"
 
-#: builtin/gc.c:130
+#: builtin/gc.c:129
 #, c-format
 msgid "failed to parse '%s' value '%s'"
 msgstr "'%s' değeri '%s' ayrıştırılamadı"
 
-#: builtin/gc.c:479 builtin/init-db.c:58
+#: builtin/gc.c:487 builtin/init-db.c:58
 #, c-format
 msgid "cannot stat '%s'"
 msgstr "'%s' bilgileri alınamıyor"
 
-#: builtin/gc.c:488 builtin/notes.c:240 builtin/tag.c:530
+#: builtin/gc.c:496 builtin/notes.c:240 builtin/tag.c:562
 #, c-format
 msgid "cannot read '%s'"
 msgstr "'%s' okunamıyor"
 
-#: builtin/gc.c:495
+#: builtin/gc.c:503
 #, c-format
 msgid ""
 "The last gc run reported the following. Please correct the root cause\n"
@@ -15114,52 +15404,52 @@ msgstr ""
 "\n"
 "%s"
 
-#: builtin/gc.c:543
+#: builtin/gc.c:551
 msgid "prune unreferenced objects"
 msgstr "başvurulmayan nesneleri buda"
 
-#: builtin/gc.c:545
+#: builtin/gc.c:553
 msgid "be more thorough (increased runtime)"
 msgstr "biraz daha titiz ol (artırılmış işleyiş süresi)"
 
-#: builtin/gc.c:546
+#: builtin/gc.c:554
 msgid "enable auto-gc mode"
 msgstr "auto-gc kipini etkinleştir"
 
-#: builtin/gc.c:549
+#: builtin/gc.c:557
 msgid "force running gc even if there may be another gc running"
 msgstr "başka bir gc çalışıyor olsa bile zorla gc çalıştır"
 
-#: builtin/gc.c:552
+#: builtin/gc.c:560
 msgid "repack all other packs except the largest pack"
 msgstr "en büyük paket dışındaki diğer tüm paketleri yeniden paketle"
 
-#: builtin/gc.c:569
+#: builtin/gc.c:576
 #, c-format
 msgid "failed to parse gc.logexpiry value %s"
 msgstr "gc.logexpiry değeri %s ayrıştırılamadı"
 
-#: builtin/gc.c:580
+#: builtin/gc.c:587
 #, c-format
 msgid "failed to parse prune expiry value %s"
 msgstr "'prune expiry' değeri %s ayrıştırılamadı"
 
-#: builtin/gc.c:600
+#: builtin/gc.c:607
 #, c-format
 msgid "Auto packing the repository in background for optimum performance.\n"
 msgstr "En iyi başarım için depo arka planda kendiliğinden paketleniyor.\n"
 
-#: builtin/gc.c:602
+#: builtin/gc.c:609
 #, c-format
 msgid "Auto packing the repository for optimum performance.\n"
 msgstr "En iyi başarım için depo kendiliğinden paketleniyor.\n"
 
-#: builtin/gc.c:603
+#: builtin/gc.c:610
 #, c-format
 msgid "See \"git help gc\" for manual housekeeping.\n"
 msgstr "El ile ortalık temizliği için \"git help gc\"ye bakın.\n"
 
-#: builtin/gc.c:643
+#: builtin/gc.c:650
 #, c-format
 msgid ""
 "gc is already running on machine '%s' pid %<PRIuMAX> (use --force if not)"
@@ -15167,142 +15457,169 @@ msgstr ""
 "gc %s makinesinde halihazırda çalışıyor (pid %<PRIuMAX> - çalışmıyorsa --"
 "force kullanın)"
 
-#: builtin/gc.c:698
+#: builtin/gc.c:705
 msgid ""
 "There are too many unreachable loose objects; run 'git prune' to remove them."
 msgstr ""
 "Çok fazla ulaşılabilir boşta nesne var; kaldırmak için 'git prune' kullanın."
 
-#: builtin/gc.c:708
+#: builtin/gc.c:715
 msgid ""
 "git maintenance run [--auto] [--[no-]quiet] [--task=<task>] [--schedule]"
 msgstr ""
 "git maintenance run [--auto] [--[no-]quiet] [--task=<görev>] [--schedule]"
 
-#: builtin/gc.c:738
+#: builtin/gc.c:745
 msgid "--no-schedule is not allowed"
 msgstr "--no-schedule kullanımına izin yok"
 
-#: builtin/gc.c:743
+#: builtin/gc.c:750
 #, c-format
 msgid "unrecognized --schedule argument '%s'"
 msgstr "tanımlanamayan --schedule argümanı, %s"
 
-#: builtin/gc.c:862
+#: builtin/gc.c:869
 msgid "failed to write commit-graph"
 msgstr "commit-graph yazılamadı"
 
-#: builtin/gc.c:901
+#: builtin/gc.c:914
 msgid "failed to fill remotes"
 msgstr "uzak konumlar doldurulamadı"
 
-#: builtin/gc.c:1024
+#: builtin/gc.c:1037
 msgid "failed to start 'git pack-objects' process"
 msgstr "'git-pack-objects' işlemi başlatılamadı"
 
-#: builtin/gc.c:1041
+#: builtin/gc.c:1054
 msgid "failed to finish 'git pack-objects' process"
 msgstr "'git-pack-objects' işlemi bitirilemedi"
 
-#: builtin/gc.c:1093
+#: builtin/gc.c:1106
 msgid "failed to write multi-pack-index"
 msgstr "multi-pack-index yazılamadı"
 
-#: builtin/gc.c:1111
+#: builtin/gc.c:1124
 msgid "'git multi-pack-index expire' failed"
 msgstr "'git multi-pack-index expire' başarısız oldu"
 
-#: builtin/gc.c:1172
+#: builtin/gc.c:1185
 msgid "'git multi-pack-index repack' failed"
 msgstr "'git multi-pack-index repack' başarısız oldu"
 
-#: builtin/gc.c:1181
+#: builtin/gc.c:1194
 msgid ""
 "skipping incremental-repack task because core.multiPackIndex is disabled"
 msgstr ""
 "incremental-repack görevi atlanıyor; çünkü core.multiPackIndex devre dışı"
 
-#: builtin/gc.c:1279
+#: builtin/gc.c:1298
 #, c-format
 msgid "lock file '%s' exists, skipping maintenance"
 msgstr "kilit dosyası '%s' mevcut, bakım atlanıyor"
 
-#: builtin/gc.c:1309
+#: builtin/gc.c:1328
 #, c-format
 msgid "task '%s' failed"
 msgstr "'%s' görevi başarısız oldu"
 
-#: builtin/gc.c:1389
+#: builtin/gc.c:1410
 #, c-format
 msgid "'%s' is not a valid task"
 msgstr "'%s' geçerli bir görev değil"
 
-#: builtin/gc.c:1394
+#: builtin/gc.c:1415
 #, c-format
 msgid "task '%s' cannot be selected multiple times"
 msgstr "'%s' görevi birden çok kez seçilemez"
 
-#: builtin/gc.c:1409
+#: builtin/gc.c:1430
 msgid "run tasks based on the state of the repository"
 msgstr "görevleri deponun durumuna göre çalıştır"
 
-#: builtin/gc.c:1410
+#: builtin/gc.c:1431
 msgid "frequency"
 msgstr "sıklık"
 
-#: builtin/gc.c:1411
+#: builtin/gc.c:1432
 msgid "run tasks based on frequency"
 msgstr "görevleri sıklığa göre çalıştır"
 
-#: builtin/gc.c:1414
+#: builtin/gc.c:1435
 msgid "do not report progress or other information over stderr"
 msgstr "stderr üzerinden ilerlemeyi veya başka bir bilgiyi raporlama"
 
-#: builtin/gc.c:1415
+#: builtin/gc.c:1436
 msgid "task"
 msgstr "görev"
 
-#: builtin/gc.c:1416
+#: builtin/gc.c:1437
 msgid "run a specific task"
 msgstr "belirli bir görevi çalıştır"
 
-#: builtin/gc.c:1433
+#: builtin/gc.c:1454
 msgid "use at most one of --auto and --schedule=<frequency>"
 msgstr "tek kezde --auto ve --schedule=<sıklık>'tan birini kullan"
 
-#: builtin/gc.c:1467
+#: builtin/gc.c:1497
 msgid "failed to run 'git config'"
 msgstr "'git config' çalıştırılamadı"
 
-#: builtin/gc.c:1512
-msgid "another process is scheduling background maintenance"
-msgstr "başka bir işlem arka plan bakımı zamanının ayarlıyor"
+#: builtin/gc.c:1562
+#, c-format
+msgid "failed to expand path '%s'"
+msgstr "'%s' yolu oluşturulamadı"
+
+#: builtin/gc.c:1591
+msgid "failed to start launchctl"
+msgstr "launchctl başlatılamadı"
 
-#: builtin/gc.c:1525
+#: builtin/gc.c:1628
+#, c-format
+msgid "failed to create directories for '%s'"
+msgstr "'%s' için dizinler oluşturulamadı"
+
+#: builtin/gc.c:1689
+#, c-format
+msgid "failed to bootstrap service %s"
+msgstr "%s servisi özyüklenemedi"
+
+#: builtin/gc.c:1760
+msgid "failed to create temp xml file"
+msgstr "geçici xml dosyası oluşturulamadı"
+
+#: builtin/gc.c:1850
+msgid "failed to start schtasks"
+msgstr "schtasks başlatılamadı"
+
+#: builtin/gc.c:1894
 msgid "failed to run 'crontab -l'; your system might not support 'cron'"
 msgstr "'crontab -l' çalıştırılamadı; sisteminiz 'cron' desteklemiyor olabilir"
 
-#: builtin/gc.c:1544
+#: builtin/gc.c:1911
 msgid "failed to run 'crontab'; your system might not support 'cron'"
 msgstr "'crontab' çalıştırılamadı; sisteminiz 'cron' desteklemiyor olabilir"
 
-#: builtin/gc.c:1550
+#: builtin/gc.c:1915
 msgid "failed to open stdin of 'crontab'"
 msgstr "'crontab' stdin'i açılamadı"
 
-#: builtin/gc.c:1592
+#: builtin/gc.c:1956
 msgid "'crontab' died"
 msgstr "'crontab' beklenmedik bir biçimde sonlandı"
 
-#: builtin/gc.c:1605
+#: builtin/gc.c:1990
+msgid "another process is scheduling background maintenance"
+msgstr "başka bir işlem arka plan bakımı zamanının ayarlıyor"
+
+#: builtin/gc.c:2009
 msgid "failed to add repo to global config"
 msgstr "depo, global yapılandırmaya eklenemedi"
 
-#: builtin/gc.c:1615
+#: builtin/gc.c:2019
 msgid "git maintenance <subcommand> [<options>]"
 msgstr "git maintenance <altkomut> [<seçenekler>]"
 
-#: builtin/gc.c:1634
+#: builtin/gc.c:2038
 #, c-format
 msgid "invalid subcommand: %s"
 msgstr "geçersiz altkomut: %s"
@@ -15311,12 +15628,12 @@ msgstr "geçersiz altkomut: %s"
 msgid "git grep [<options>] [-e] <pattern> [<rev>...] [[--] <path>...]"
 msgstr "git grep [<seçenekler>] [-e] <dizgi> [<rev>...] [[--] <yol>...]"
 
-#: builtin/grep.c:225
+#: builtin/grep.c:223
 #, c-format
 msgid "grep: failed to create thread: %s"
 msgstr "grep: iş parçacığı oluşturulamadı: %s"
 
-#: builtin/grep.c:279
+#: builtin/grep.c:277
 #, c-format
 msgid "invalid number of threads specified (%d) for %s"
 msgstr "geçersiz belirtilen iş parçacığı sayısı (%d), %s için"
@@ -15325,259 +15642,259 @@ msgstr "geçersiz belirtilen iş parçacığı sayısı (%d), %s için"
 #. variable for tweaking threads, currently
 #. grep.threads
 #.
-#: builtin/grep.c:287 builtin/index-pack.c:1576 builtin/index-pack.c:1766
-#: builtin/pack-objects.c:2936
+#: builtin/grep.c:285 builtin/index-pack.c:1589 builtin/index-pack.c:1808
+#: builtin/pack-objects.c:2944
 #, c-format
 msgid "no threads support, ignoring %s"
 msgstr "iş parçacığı desteği yok, %s yok sayılıyor"
 
-#: builtin/grep.c:475 builtin/grep.c:600 builtin/grep.c:640
+#: builtin/grep.c:473 builtin/grep.c:601 builtin/grep.c:641
 #, c-format
 msgid "unable to read tree (%s)"
 msgstr "ağaç okunamıyor (%s)"
 
-#: builtin/grep.c:655
+#: builtin/grep.c:656
 #, c-format
 msgid "unable to grep from object of type %s"
 msgstr "%s türündeki bir nesneden grep yapılamıyor"
 
-#: builtin/grep.c:736
+#: builtin/grep.c:737
 #, c-format
 msgid "switch `%c' expects a numerical value"
 msgstr "'%c' anahtarı sayısal bir değer bekliyor"
 
-#: builtin/grep.c:835
+#: builtin/grep.c:836
 msgid "search in index instead of in the work tree"
 msgstr "çalışma ağacı yerine indekste ara"
 
-#: builtin/grep.c:837
+#: builtin/grep.c:838
 msgid "find in contents not managed by git"
 msgstr "git tarafından yönetilmeyen içerikte bul"
 
-#: builtin/grep.c:839
+#: builtin/grep.c:840
 msgid "search in both tracked and untracked files"
 msgstr "hem izlenen hem izlenmeyen dosyalar içinde ara"
 
-#: builtin/grep.c:841
+#: builtin/grep.c:842
 msgid "ignore files specified via '.gitignore'"
 msgstr "'.gitignore'da belirtilen dosyaları yok say"
 
-#: builtin/grep.c:843
+#: builtin/grep.c:844
 msgid "recursively search in each submodule"
 msgstr "her altmodülde özyineli olarak ara"
 
-#: builtin/grep.c:846
+#: builtin/grep.c:847
 msgid "show non-matching lines"
 msgstr "eşleşmeyen satırları göster"
 
-#: builtin/grep.c:848
+#: builtin/grep.c:849
 msgid "case insensitive matching"
 msgstr "BÜYÜK/küçük harf duyarsız eşleşme"
 
-#: builtin/grep.c:850
+#: builtin/grep.c:851
 msgid "match patterns only at word boundaries"
 msgstr "yalnızca sözcük sınırlarındaki dizgileri eşleştir"
 
-#: builtin/grep.c:852
+#: builtin/grep.c:853
 msgid "process binary files as text"
 msgstr "ikili dosyaları metin olarak işle"
 
-#: builtin/grep.c:854
+#: builtin/grep.c:855
 msgid "don't match patterns in binary files"
 msgstr "ikili dosyalardaki dizgileri eşleştirme"
 
-#: builtin/grep.c:857
+#: builtin/grep.c:858
 msgid "process binary files with textconv filters"
 msgstr "ikili dosyaları textconv süzgeçleri ile işle"
 
-#: builtin/grep.c:859
+#: builtin/grep.c:860
 msgid "search in subdirectories (default)"
 msgstr "altdizinlerde ara (öntanımlı)"
 
-#: builtin/grep.c:861
+#: builtin/grep.c:862
 msgid "descend at most <depth> levels"
 msgstr "en çok <derinlik> düzey in"
 
-#: builtin/grep.c:865
+#: builtin/grep.c:866
 msgid "use extended POSIX regular expressions"
 msgstr "genişletilmiş POSIX düzenli ifadelerini kullan"
 
-#: builtin/grep.c:868
+#: builtin/grep.c:869
 msgid "use basic POSIX regular expressions (default)"
 msgstr "temel POSIX düzenli ifadelerini kullan (öntanımlı)"
 
-#: builtin/grep.c:871
+#: builtin/grep.c:872
 msgid "interpret patterns as fixed strings"
 msgstr "dizgileri sabit diziler olarak yorumla"
 
-#: builtin/grep.c:874
+#: builtin/grep.c:875
 msgid "use Perl-compatible regular expressions"
 msgstr "Perl uyumlu düzenli ifadeler kullan"
 
-#: builtin/grep.c:877
+#: builtin/grep.c:878
 msgid "show line numbers"
 msgstr "satır numaralarını göster"
 
-#: builtin/grep.c:878
+#: builtin/grep.c:879
 msgid "show column number of first match"
 msgstr "ilk eşleşmenin sütun numarasını göster"
 
-#: builtin/grep.c:879
+#: builtin/grep.c:880
 msgid "don't show filenames"
 msgstr "dosya adlarını gösterme"
 
-#: builtin/grep.c:880
+#: builtin/grep.c:881
 msgid "show filenames"
 msgstr "dosya adlarını göster"
 
-#: builtin/grep.c:882
+#: builtin/grep.c:883
 msgid "show filenames relative to top directory"
 msgstr "dosya adlarını en üst dizine göreceli olarak göster"
 
-#: builtin/grep.c:884
+#: builtin/grep.c:885
 msgid "show only filenames instead of matching lines"
 msgstr "eşleşen satırlar yerine yalnızca dosya adlarını göster"
 
-#: builtin/grep.c:886
+#: builtin/grep.c:887
 msgid "synonym for --files-with-matches"
 msgstr "--files-with-matches eşanlamlısı"
 
-#: builtin/grep.c:889
+#: builtin/grep.c:890
 msgid "show only the names of files without match"
 msgstr "eşleşme olmadan yalnızca dosya adlarını göster"
 
-#: builtin/grep.c:891
+#: builtin/grep.c:892
 msgid "print NUL after filenames"
 msgstr "dosya adlarından sonra NUL yazdır"
 
-#: builtin/grep.c:894
+#: builtin/grep.c:895
 msgid "show only matching parts of a line"
 msgstr "yalnızca bir satırın eşleşen kısımlarını göster"
 
-#: builtin/grep.c:896
+#: builtin/grep.c:897
 msgid "show the number of matches instead of matching lines"
 msgstr "eşleşen satırlar yerine eşleşme sayısını göster"
 
-#: builtin/grep.c:897
+#: builtin/grep.c:898
 msgid "highlight matches"
 msgstr "eşleşmeleri vurgula"
 
-#: builtin/grep.c:899
+#: builtin/grep.c:900
 msgid "print empty line between matches from different files"
 msgstr "başka dosyalardan olan eşleşmelerin arasına boş satır yazdır"
 
-#: builtin/grep.c:901
+#: builtin/grep.c:902
 msgid "show filename only once above matches from same file"
 msgstr ""
 "aynı dosyadan olan eşleşmelerin üzerinde dosya adını yalnızca bir kez göster"
 
-#: builtin/grep.c:904
+#: builtin/grep.c:905
 msgid "show <n> context lines before and after matches"
 msgstr "eşleşmelerden önce ve sonra <n> satır bağlam göster"
 
-#: builtin/grep.c:907
+#: builtin/grep.c:908
 msgid "show <n> context lines before matches"
 msgstr "eşleşmelerden önce <n> satır bağlam göster"
 
-#: builtin/grep.c:909
+#: builtin/grep.c:910
 msgid "show <n> context lines after matches"
 msgstr "eşleşmelerden sonra <n> satır bağlam göster"
 
-#: builtin/grep.c:911
+#: builtin/grep.c:912
 msgid "use <n> worker threads"
 msgstr "<n> iş parçacığı kullan"
 
-#: builtin/grep.c:912
+#: builtin/grep.c:913
 msgid "shortcut for -C NUM"
 msgstr "-C NUM için kısayol"
 
-#: builtin/grep.c:915
+#: builtin/grep.c:916
 msgid "show a line with the function name before matches"
 msgstr "eşleşmelerden önce işlev adının olduğu bir satır göster"
 
-#: builtin/grep.c:917
+#: builtin/grep.c:918
 msgid "show the surrounding function"
 msgstr "çevresindeki işlevi göster"
 
-#: builtin/grep.c:920
+#: builtin/grep.c:921
 msgid "read patterns from file"
 msgstr "dizgileri dosyadan oku"
 
-#: builtin/grep.c:922
+#: builtin/grep.c:923
 msgid "match <pattern>"
 msgstr "<dizgi> ile eşleş"
 
-#: builtin/grep.c:924
+#: builtin/grep.c:925
 msgid "combine patterns specified with -e"
 msgstr "-e ile belirtilen dizgileri birleştir"
 
-#: builtin/grep.c:936
+#: builtin/grep.c:937
 msgid "indicate hit with exit status without output"
 msgstr "çıkış durumu ile olan eşleşmelerde çıktı verme"
 
-#: builtin/grep.c:938
+#: builtin/grep.c:939
 msgid "show only matches from files that match all patterns"
 msgstr "yalnızca tüm dizgilerle eşleşen dosyalardan eşleşmeleri göster"
 
-#: builtin/grep.c:940
-msgid "show parse tree for grep expression"
-msgstr "grep ifadesi için ayrıştırma ağacını göster"
-
-#: builtin/grep.c:944
+#: builtin/grep.c:942
 msgid "pager"
 msgstr "sayfalayıcı"
 
-#: builtin/grep.c:944
+#: builtin/grep.c:942
 msgid "show matching files in the pager"
 msgstr "sayfalayıcıda eşleşen dosyaları göster"
 
-#: builtin/grep.c:948
+#: builtin/grep.c:946
 msgid "allow calling of grep(1) (ignored by this build)"
 msgstr "grep(1)'in çağrılmasına izin ver (bu yapım tarafından yok sayıldı)"
 
-#: builtin/grep.c:1014
+#: builtin/grep.c:1012
 msgid "no pattern given"
 msgstr "bir dizgi verilmedi"
 
-#: builtin/grep.c:1050
+#: builtin/grep.c:1048
 msgid "--no-index or --untracked cannot be used with revs"
 msgstr "--no-index veya --untracked revizyonlarla birlikte kullanılamaz"
 
-#: builtin/grep.c:1058
+#: builtin/grep.c:1056
 #, c-format
 msgid "unable to resolve revision: %s"
 msgstr "revizyon çözülemiyor: %s"
 
-#: builtin/grep.c:1088
+#: builtin/grep.c:1086
 msgid "--untracked not supported with --recurse-submodules"
 msgstr "--untracked, --recurse-submodules ile desteklenmiyor"
 
-#: builtin/grep.c:1092
+#: builtin/grep.c:1090
 msgid "invalid option combination, ignoring --threads"
 msgstr "geçersiz seçenek birleştirmesi, --threads yok sayılıyor"
 
-#: builtin/grep.c:1095 builtin/pack-objects.c:3655
+#: builtin/grep.c:1093 builtin/pack-objects.c:3672
 msgid "no threads support, ignoring --threads"
 msgstr "iş parçacığı desteği yok, --threads yok sayılıyor"
 
-#: builtin/grep.c:1098 builtin/index-pack.c:1573 builtin/pack-objects.c:2933
+#: builtin/grep.c:1096 builtin/index-pack.c:1586 builtin/pack-objects.c:2941
 #, c-format
 msgid "invalid number of threads specified (%d)"
 msgstr "geçersiz belirtilen iş parçacığı sayısı (%d)"
 
-#: builtin/grep.c:1132
+#: builtin/grep.c:1130
 msgid "--open-files-in-pager only works on the worktree"
 msgstr "--open-files-in-pager yalnızca çalışma ağacında çalışır"
 
-#: builtin/grep.c:1158
+#: builtin/grep.c:1156
 msgid "--cached or --untracked cannot be used with --no-index"
 msgstr "--cached veya --untracked, --no-index ile birlikte kullanılamıyor"
 
-#: builtin/grep.c:1164
+#: builtin/grep.c:1159
+msgid "--untracked cannot be used with --cached"
+msgstr "--untracked, --cached ile birlikte kullanılamıyor"
+
+#: builtin/grep.c:1165
 msgid "--[no-]exclude-standard cannot be used for tracked contents"
 msgstr "--[no-]exclude-standard, izlenen içerik için kullanılamıyor"
 
-#: builtin/grep.c:1172
+#: builtin/grep.c:1173
 msgid "both --cached and trees are given"
 msgstr "hem --cached hem ağaçlar verilmiş"
 
@@ -15710,12 +16027,12 @@ msgstr "isteğe hiçbir man görüntüleyicisi ele almadı"
 msgid "no info viewer handled the request"
 msgstr "isteğe hiçbir bilgi görüntüleyicisi ele almadı"
 
-#: builtin/help.c:520 builtin/help.c:531 git.c:337
+#: builtin/help.c:520 builtin/help.c:531 git.c:340
 #, c-format
 msgid "'%s' is aliased to '%s'"
 msgstr "'%s', '%s' olarak armalanmış"
 
-#: builtin/help.c:534 git.c:369
+#: builtin/help.c:534 git.c:372
 #, c-format
 msgid "bad alias.%s string: %s"
 msgstr "hatalı alias.%s dizisi: %s"
@@ -15763,7 +16080,7 @@ msgstr "girdide okuma hatası"
 msgid "used more bytes than were available"
 msgstr "kullanılabilir olandan daha çok bayt kullanıldı"
 
-#: builtin/index-pack.c:324 builtin/pack-objects.c:619
+#: builtin/index-pack.c:324 builtin/pack-objects.c:624
 msgid "pack too large for current definition of off_t"
 msgstr "paket off_t'nin geçerli tanımı için çok büyük"
 
@@ -15771,7 +16088,7 @@ msgstr "paket off_t'nin geçerli tanımı için çok büyük"
 msgid "pack exceeds maximum allowed size"
 msgstr "paket izin verilen en büyük boyutu aşıyor"
 
-#: builtin/index-pack.c:342 builtin/repack.c:286
+#: builtin/index-pack.c:342
 #, c-format
 msgid "unable to create '%s'"
 msgstr "'%s' oluşturulamıyor"
@@ -15896,7 +16213,7 @@ msgstr "parse_pack_objects() içindeki karmaşa akıl almaz düzeyde"
 msgid "Resolving deltas"
 msgstr "Deltalar çözülüyor"
 
-#: builtin/index-pack.c:1249 builtin/pack-objects.c:2697
+#: builtin/index-pack.c:1249 builtin/pack-objects.c:2707
 #, c-format
 msgid "unable to create thread: %s"
 msgstr "iş parçacığı oluşturulamadı: %s"
@@ -15934,10 +16251,10 @@ msgstr "iliştirilen nesne söndürülemedi (%d)"
 msgid "local object %s is corrupt"
 msgstr "yerel nesne %s hasarlı"
 
-#: builtin/index-pack.c:1444
+#: builtin/index-pack.c:1445
 #, c-format
-msgid "packfile name '%s' does not end with '.pack'"
-msgstr "paket dosyası adı '%s', '.pack' ile bitmiyor"
+msgid "packfile name '%s' does not end with '.%s'"
+msgstr "paket dosyası adı '%s', '.%s' ile bitmiyor"
 
 #: builtin/index-pack.c:1469
 #, c-format
@@ -15949,79 +16266,83 @@ msgstr "%s dosyası '%s' yazılamıyor"
 msgid "cannot close written %s file '%s'"
 msgstr "yazılmış %s dosyası '%s' kapatılamıyor"
 
-#: builtin/index-pack.c:1501
+#: builtin/index-pack.c:1503
 msgid "error while closing pack file"
 msgstr "paket dosyası kapatılırken hata"
 
-#: builtin/index-pack.c:1515
+#: builtin/index-pack.c:1517
 msgid "cannot store pack file"
 msgstr "paket dosyası depolanamıyor"
 
-#: builtin/index-pack.c:1523
+#: builtin/index-pack.c:1525
 msgid "cannot store index file"
 msgstr "indeks dosyası depolanamıyor"
 
-#: builtin/index-pack.c:1567 builtin/pack-objects.c:2944
+#: builtin/index-pack.c:1534
+msgid "cannot store reverse index file"
+msgstr "ters indeks dosyası depolanamıyor"
+
+#: builtin/index-pack.c:1580 builtin/pack-objects.c:2952
 #, c-format
 msgid "bad pack.indexversion=%<PRIu32>"
 msgstr "hatalı pack.indexversion=%<PRIu32>"
 
-#: builtin/index-pack.c:1631
+#: builtin/index-pack.c:1650
 #, c-format
 msgid "Cannot open existing pack file '%s'"
 msgstr "Mevcut paket dosyası '%s' açılamıyor"
 
-#: builtin/index-pack.c:1633
+#: builtin/index-pack.c:1652
 #, c-format
 msgid "Cannot open existing pack idx file for '%s'"
 msgstr "'%s' için mevcut paket idx dosyası açılamıyor"
 
-#: builtin/index-pack.c:1681
+#: builtin/index-pack.c:1700
 #, c-format
 msgid "non delta: %d object"
 msgid_plural "non delta: %d objects"
 msgstr[0] "delta değil: %d nesne"
 msgstr[1] "delta değil: %d nesne"
 
-#: builtin/index-pack.c:1688
+#: builtin/index-pack.c:1707
 #, c-format
 msgid "chain length = %d: %lu object"
 msgid_plural "chain length = %d: %lu objects"
 msgstr[0] "zincir uzunluğu = %d: %lu nesne"
 msgstr[1] "zincir uzunluğu = %d: %lu nesne"
 
-#: builtin/index-pack.c:1728
+#: builtin/index-pack.c:1765
 msgid "Cannot come back to cwd"
 msgstr "Şu anki çalışma dizinine geri gelinemiyor"
 
-#: builtin/index-pack.c:1777 builtin/index-pack.c:1780
-#: builtin/index-pack.c:1796 builtin/index-pack.c:1800
+#: builtin/index-pack.c:1819 builtin/index-pack.c:1822
+#: builtin/index-pack.c:1838 builtin/index-pack.c:1842
 #, c-format
 msgid "bad %s"
 msgstr "hatalı %s"
 
-#: builtin/index-pack.c:1806 builtin/init-db.c:392 builtin/init-db.c:625
+#: builtin/index-pack.c:1848 builtin/init-db.c:392 builtin/init-db.c:625
 #, c-format
 msgid "unknown hash algorithm '%s'"
 msgstr "bilinmeyen sağlama algoritması '%s'"
 
-#: builtin/index-pack.c:1821
+#: builtin/index-pack.c:1867
 msgid "--fix-thin cannot be used without --stdin"
 msgstr "--fix-thin, --stdin olmadan kullanılamaz"
 
-#: builtin/index-pack.c:1823
+#: builtin/index-pack.c:1869
 msgid "--stdin requires a git repository"
 msgstr "--stdin bir git dizini gerektirir"
 
-#: builtin/index-pack.c:1825
+#: builtin/index-pack.c:1871
 msgid "--object-format cannot be used with --stdin"
 msgstr "--object-format, --stdin olmadan kullanılamaz"
 
-#: builtin/index-pack.c:1831
+#: builtin/index-pack.c:1886
 msgid "--verify with no packfile name given"
 msgstr "--verify ile bir paket dosyası adı verilmedi"
 
-#: builtin/index-pack.c:1892 builtin/unpack-objects.c:582
+#: builtin/index-pack.c:1956 builtin/unpack-objects.c:582
 msgid "fsck error in pack objects"
 msgstr "paket nesnelerinde fsck hatası"
 
@@ -16238,130 +16559,130 @@ msgstr "--trailer ile --only-input bir anlam ifade etmiyor"
 msgid "no input file given for in-place editing"
 msgstr "yerinde düzenleme için girdi dosyası verilmedi"
 
-#: builtin/log.c:58
+#: builtin/log.c:59
 msgid "git log [<options>] [<revision-range>] [[--] <path>...]"
 msgstr "git log [<seçenekler>] [<revizyon-erimi>] [[--] <yol>...]"
 
-#: builtin/log.c:59
+#: builtin/log.c:60
 msgid "git show [<options>] <object>..."
 msgstr "git show [<seçenekler>] <nesne>..."
 
-#: builtin/log.c:112
+#: builtin/log.c:113
 #, c-format
 msgid "invalid --decorate option: %s"
 msgstr "geçersiz --decorate seçeneği: %s"
 
-#: builtin/log.c:179
+#: builtin/log.c:180
 msgid "show source"
 msgstr "kaynağı göster"
 
-#: builtin/log.c:180
-msgid "Use mail map file"
+#: builtin/log.c:181
+msgid "use mail map file"
 msgstr "posta eşlem dosyasını kullan"
 
-#: builtin/log.c:183
+#: builtin/log.c:184
 msgid "only decorate refs that match <pattern>"
 msgstr "yalnızca <dizgi> ile eşleşen başvuruları süsle"
 
-#: builtin/log.c:185
+#: builtin/log.c:186
 msgid "do not decorate refs that match <pattern>"
 msgstr "<dizgi> ile eşleşen başvuruları süsleme"
 
-#: builtin/log.c:186
+#: builtin/log.c:187
 msgid "decorate options"
 msgstr "süsleme seçenekleri"
 
-#: builtin/log.c:189
+#: builtin/log.c:190
 msgid ""
-"Trace the evolution of line range <start>,<end> or function :<funcname> in "
+"trace the evolution of line range <start>,<end> or function :<funcname> in "
 "<file>"
 msgstr ""
-"<dosya> içindeki <başlangıç>,<bitiş> eriminin veya :<işlevadı> işlevinin "
-"evrimini izle"
+"<dosya> içindeki <başlangıç>,<bitiş> satır eriminin veya :<işlevadı> "
+"işlevinin evrimini izle"
 
-#: builtin/log.c:212
+#: builtin/log.c:213
 msgid "-L<range>:<file> cannot be used with pathspec"
 msgstr "-L<erim>:<dosya>, yol belirteci ile kullanılamıyor"
 
-#: builtin/log.c:302
+#: builtin/log.c:303
 #, c-format
 msgid "Final output: %d %s\n"
 msgstr "Son çıktı: %d %s\n"
 
-#: builtin/log.c:564
+#: builtin/log.c:566
 #, c-format
 msgid "git show %s: bad file"
 msgstr "git show %s: hatalı dosya"
 
-#: builtin/log.c:579 builtin/log.c:674
+#: builtin/log.c:581 builtin/log.c:671
 #, c-format
 msgid "could not read object %s"
 msgstr "%s nesnesi okunamadı"
 
-#: builtin/log.c:699
+#: builtin/log.c:696
 #, c-format
 msgid "unknown type: %d"
 msgstr "bilinmeyen tür: %d"
 
-#: builtin/log.c:848
+#: builtin/log.c:841
 #, c-format
 msgid "%s: invalid cover from description mode"
 msgstr "%s: açıklama kipinden geçersiz kapak sayfası"
 
-#: builtin/log.c:855
+#: builtin/log.c:848
 msgid "format.headers without value"
 msgstr "format.headers değere iye değil"
 
-#: builtin/log.c:984
+#: builtin/log.c:977
 #, c-format
 msgid "cannot open patch file %s"
 msgstr "%s yama dosyası okunamıyor"
 
-#: builtin/log.c:1001
+#: builtin/log.c:994
 msgid "need exactly one range"
 msgstr "bir tam erim gerekiyor"
 
-#: builtin/log.c:1011
+#: builtin/log.c:1004
 msgid "not a range"
 msgstr "bir erim değil"
 
-#: builtin/log.c:1175
+#: builtin/log.c:1168
 msgid "cover letter needs email format"
 msgstr "ön yazı için e-posta biçimi gerekli"
 
-#: builtin/log.c:1181
+#: builtin/log.c:1174
 msgid "failed to create cover-letter file"
 msgstr "cover-letter dosyası oluşturulamadı"
 
-#: builtin/log.c:1262
+#: builtin/log.c:1261
 #, c-format
 msgid "insane in-reply-to: %s"
 msgstr "akıl almaz in-reply-to: %s"
 
-#: builtin/log.c:1289
+#: builtin/log.c:1288
 msgid "git format-patch [<options>] [<since> | <revision-range>]"
 msgstr "git format-patch [<seçenekler>] [<-beri> | <revizyon-erimi>]"
 
-#: builtin/log.c:1347
+#: builtin/log.c:1346
 msgid "two output directories?"
 msgstr "iki çıktı dizini?"
 
-#: builtin/log.c:1498 builtin/log.c:2318 builtin/log.c:2320 builtin/log.c:2332
+#: builtin/log.c:1497 builtin/log.c:2317 builtin/log.c:2319 builtin/log.c:2331
 #, c-format
 msgid "unknown commit %s"
 msgstr "bilinmeyen işleme %s"
 
-#: builtin/log.c:1509 builtin/replace.c:58 builtin/replace.c:207
+#: builtin/log.c:1508 builtin/replace.c:58 builtin/replace.c:207
 #: builtin/replace.c:210
 #, c-format
 msgid "failed to resolve '%s' as a valid ref"
 msgstr "'%s' geçerli bir başvuru olarak çözülemedi"
 
-#: builtin/log.c:1518
+#: builtin/log.c:1517
 msgid "could not find exact merge base"
 msgstr "kesin birleştirme temeli bulunamadı"
 
-#: builtin/log.c:1528
+#: builtin/log.c:1527
 msgid ""
 "failed to get upstream, if you want to record base commit automatically,\n"
 "please use git branch --set-upstream-to to track a remote branch.\n"
@@ -16372,395 +16693,399 @@ msgstr ""
 "izleyin. Bunun dışında taban işlemesini kendiniz --base=<taban-işlemesi-no>\n"
 "kullanarak el ile belirtebilirsiniz."
 
-#: builtin/log.c:1551
+#: builtin/log.c:1550
 msgid "failed to find exact merge base"
 msgstr "kesin birleştirme temeli bulunamadı"
 
-#: builtin/log.c:1568
+#: builtin/log.c:1567
 msgid "base commit should be the ancestor of revision list"
 msgstr "taban işlemesi revizyon listesinin atası olmalı"
 
-#: builtin/log.c:1578
+#: builtin/log.c:1577
 msgid "base commit shouldn't be in revision list"
 msgstr "taban işlemesi revizyon listesinde olmamalı"
 
-#: builtin/log.c:1636
+#: builtin/log.c:1635
 msgid "cannot get patch id"
 msgstr "yama numarası alınamıyor"
 
-#: builtin/log.c:1693
+#: builtin/log.c:1692
 msgid "failed to infer range-diff origin of current series"
 msgstr "geçerli dizinin range-diff kökeninden bir anlam çıkartılamadı"
 
-#: builtin/log.c:1695
+#: builtin/log.c:1694
 #, c-format
 msgid "using '%s' as range-diff origin of current series"
 msgstr "geçerli dizinin range-diff kökeni olarak '%s' kullanılıyor"
 
-#: builtin/log.c:1739
+#: builtin/log.c:1738
 msgid "use [PATCH n/m] even with a single patch"
 msgstr "bir yamayla bile olsa [PATCH n/m] kullan"
 
-#: builtin/log.c:1742
+#: builtin/log.c:1741
 msgid "use [PATCH] even with multiple patches"
 msgstr "birden çok yama bile olsa [PATCH] kullan"
 
-#: builtin/log.c:1746
+#: builtin/log.c:1745
 msgid "print patches to standard out"
 msgstr "yamaları standart çıktıya yazdır"
 
-#: builtin/log.c:1748
+#: builtin/log.c:1747
 msgid "generate a cover letter"
 msgstr "bir ön yazı oluştur"
 
-#: builtin/log.c:1750
+#: builtin/log.c:1749
 msgid "use simple number sequence for output file names"
 msgstr "çıktı dosya adları için yalın sayı dizisi oluştur"
 
-#: builtin/log.c:1751
+#: builtin/log.c:1750
 msgid "sfx"
 msgstr "sonek"
 
-#: builtin/log.c:1752
+#: builtin/log.c:1751
 msgid "use <sfx> instead of '.patch'"
 msgstr "'.patch' yerine <sonek> kullan"
 
-#: builtin/log.c:1754
+#: builtin/log.c:1753
 msgid "start numbering patches at <n> instead of 1"
 msgstr "yamaları 1 yerine <n>'de numaralandırmaya başla"
 
-#: builtin/log.c:1756
+#: builtin/log.c:1755
 msgid "mark the series as Nth re-roll"
 msgstr "diziyi n. deneme olarak imle"
 
-#: builtin/log.c:1758
+#: builtin/log.c:1757
 msgid "max length of output filename"
 msgstr "çıktı dosya adının olabilecek en çok uzunluğu"
 
-#: builtin/log.c:1760
-msgid "Use [RFC PATCH] instead of [PATCH]"
+#: builtin/log.c:1759
+msgid "use [RFC PATCH] instead of [PATCH]"
 msgstr "[PATCH] yerine [RFC PATCH] kullan"
 
-#: builtin/log.c:1763
+#: builtin/log.c:1762
 msgid "cover-from-description-mode"
 msgstr "açıklama kipinden kapak sayfası kipi"
 
-#: builtin/log.c:1764
+#: builtin/log.c:1763
 msgid "generate parts of a cover letter based on a branch's description"
 msgstr "ön yazının bazı kısımlarını dalın açıklamasından oluştur"
 
-#: builtin/log.c:1766
-msgid "Use [<prefix>] instead of [PATCH]"
+#: builtin/log.c:1765
+msgid "use [<prefix>] instead of [PATCH]"
 msgstr "[PATCH] yerine [<önek>] kullan"
 
-#: builtin/log.c:1769
+#: builtin/log.c:1768
 msgid "store resulting files in <dir>"
 msgstr "ortaya çıkan dosyaları <dizin>'de depola"
 
-#: builtin/log.c:1772
+#: builtin/log.c:1771
 msgid "don't strip/add [PATCH]"
 msgstr "[PATCH]'i soyma/ekleme"
 
-#: builtin/log.c:1775
+#: builtin/log.c:1774
 msgid "don't output binary diffs"
 msgstr "ikili diff'leri çıktı verme"
 
-#: builtin/log.c:1777
+#: builtin/log.c:1776
 msgid "output all-zero hash in From header"
 msgstr "From başlığında tümü sıfırdan oluşan sağlama çıktısı ver"
 
-#: builtin/log.c:1779
+#: builtin/log.c:1778
 msgid "don't include a patch matching a commit upstream"
 msgstr "üstkaynaktaki bir işleme ile eşleşen bir yamayı içerme"
 
-#: builtin/log.c:1781
+#: builtin/log.c:1780
 msgid "show patch format instead of default (patch + stat)"
 msgstr "öntanımlı yerine yama biçimini göster (patch + stat)"
 
-#: builtin/log.c:1783
+#: builtin/log.c:1782
 msgid "Messaging"
 msgstr "İletileşme"
 
-#: builtin/log.c:1784
+#: builtin/log.c:1783
 msgid "header"
 msgstr "üstbilgi"
 
-#: builtin/log.c:1785
+#: builtin/log.c:1784
 msgid "add email header"
 msgstr "e-posta üstbilgisi ekle"
 
-#: builtin/log.c:1786 builtin/log.c:1787
+#: builtin/log.c:1785 builtin/log.c:1786
 msgid "email"
 msgstr "e-posta"
 
-#: builtin/log.c:1786
+#: builtin/log.c:1785
 msgid "add To: header"
 msgstr "To: üstbilgisi ekle"
 
-#: builtin/log.c:1787
+#: builtin/log.c:1786
 msgid "add Cc: header"
 msgstr "Cc: üstbilgisi ekle"
 
-#: builtin/log.c:1788
+#: builtin/log.c:1787
 msgid "ident"
 msgstr "tanımlayıcı"
 
-#: builtin/log.c:1789
+#: builtin/log.c:1788
 msgid "set From address to <ident> (or committer ident if absent)"
 msgstr ""
 "From adresini <tanımlayıcı> olarak ayarla (veya yoksa işleyici tanımlayıcısı)"
 
-#: builtin/log.c:1791
+#: builtin/log.c:1790
 msgid "message-id"
 msgstr "ileti no"
 
-#: builtin/log.c:1792
+#: builtin/log.c:1791
 msgid "make first mail a reply to <message-id>"
 msgstr "ilk postayı <ileti no>'ya bir yanıt yap"
 
-#: builtin/log.c:1793 builtin/log.c:1796
+#: builtin/log.c:1792 builtin/log.c:1795
 msgid "boundary"
 msgstr "sınır"
 
-#: builtin/log.c:1794
+#: builtin/log.c:1793
 msgid "attach the patch"
 msgstr "yamayı ekle"
 
-#: builtin/log.c:1797
+#: builtin/log.c:1796
 msgid "inline the patch"
 msgstr "yamayı iletiye koy"
 
-#: builtin/log.c:1801
+#: builtin/log.c:1800
 msgid "enable message threading, styles: shallow, deep"
 msgstr "iletileri kataloglamayı etkinleştir, stiller: shallow, deep"
 
-#: builtin/log.c:1803
+#: builtin/log.c:1802
 msgid "signature"
 msgstr "imza"
 
-#: builtin/log.c:1804
+#: builtin/log.c:1803
 msgid "add a signature"
 msgstr "imza ekle"
 
-#: builtin/log.c:1805
+#: builtin/log.c:1804
 msgid "base-commit"
 msgstr "taban işleme"
 
-#: builtin/log.c:1806
+#: builtin/log.c:1805
 msgid "add prerequisite tree info to the patch series"
 msgstr "yama dizisine önkoşul ağaç bilgisini ekle"
 
-#: builtin/log.c:1809
+#: builtin/log.c:1808
 msgid "add a signature from a file"
 msgstr "dosyadan bir imza ekle"
 
-#: builtin/log.c:1810
+#: builtin/log.c:1809
 msgid "don't print the patch filenames"
 msgstr "yama dosya adlarını yazdırma"
 
-#: builtin/log.c:1812
+#: builtin/log.c:1811
 msgid "show progress while generating patches"
 msgstr "yamalar oluşturulurken ilerlemeyi göster"
 
-#: builtin/log.c:1814
+#: builtin/log.c:1813
 msgid "show changes against <rev> in cover letter or single patch"
 msgstr "<rev> karşısındaki değişiklikleri ön yazıda veya tek bir yamada göster"
 
-#: builtin/log.c:1817
+#: builtin/log.c:1816
 msgid "show changes against <refspec> in cover letter or single patch"
 msgstr ""
 "<bşvr-blrtç> karşısındaki değişiklikleri ön yazıda veya tek bir yamada göster"
 
-#: builtin/log.c:1819
+#: builtin/log.c:1818
 msgid "percentage by which creation is weighted"
 msgstr "oluşumun tartıldığı yüzde"
 
-#: builtin/log.c:1905
+#: builtin/log.c:1904
 #, c-format
 msgid "invalid ident line: %s"
 msgstr "geçersiz tanımlayıcı satırı: %s"
 
-#: builtin/log.c:1920
+#: builtin/log.c:1919
 msgid "-n and -k are mutually exclusive"
 msgstr "-n ve -k birlikte kullanılamaz"
 
-#: builtin/log.c:1922
+#: builtin/log.c:1921
 msgid "--subject-prefix/--rfc and -k are mutually exclusive"
 msgstr "--subject-prefix/--rfc ve -k birlikte kullanılamaz"
 
-#: builtin/log.c:1930
+#: builtin/log.c:1929
 msgid "--name-only does not make sense"
 msgstr "--name-only bir anlam ifade etmiyor"
 
-#: builtin/log.c:1932
+#: builtin/log.c:1931
 msgid "--name-status does not make sense"
 msgstr "--name-status bir anlam ifade etmiyor"
 
-#: builtin/log.c:1934
+#: builtin/log.c:1933
 msgid "--check does not make sense"
 msgstr "--check bir anlam ifade etmiyor"
 
-#: builtin/log.c:1956
+#: builtin/log.c:1955
 msgid "--stdout, --output, and --output-directory are mutually exclusive"
 msgstr "--stdout, --output ve --output-directory  birlikte kullanılamaz"
 
-#: builtin/log.c:2079
+#: builtin/log.c:2078
 msgid "--interdiff requires --cover-letter or single patch"
 msgstr "--interdiff, --cover-letter veya tek yama gerektiriyor"
 
-#: builtin/log.c:2083
+#: builtin/log.c:2082
 msgid "Interdiff:"
 msgstr "Interdiff:"
 
-#: builtin/log.c:2084
+#: builtin/log.c:2083
 #, c-format
 msgid "Interdiff against v%d:"
 msgstr "Interdiff v%d karşısında:"
 
-#: builtin/log.c:2090
+#: builtin/log.c:2089
 msgid "--creation-factor requires --range-diff"
 msgstr "--creation-factor, --range-diff gerektiriyor"
 
-#: builtin/log.c:2094
+#: builtin/log.c:2093
 msgid "--range-diff requires --cover-letter or single patch"
 msgstr "--range-diff, --cover-letter veya tek yama gerektiriyor"
 
-#: builtin/log.c:2102
+#: builtin/log.c:2101
 msgid "Range-diff:"
 msgstr "Range-diff:"
 
-#: builtin/log.c:2103
+#: builtin/log.c:2102
 #, c-format
 msgid "Range-diff against v%d:"
 msgstr "Range-diff v%d karşısında:"
 
-#: builtin/log.c:2114
+#: builtin/log.c:2113
 #, c-format
 msgid "unable to read signature file '%s'"
 msgstr "'%s' imza dosyası okunamıyor"
 
-#: builtin/log.c:2150
+#: builtin/log.c:2149
 msgid "Generating patches"
 msgstr "Yamalar oluşturuluyor"
 
-#: builtin/log.c:2194
+#: builtin/log.c:2193
 msgid "failed to create output files"
 msgstr "çıktı dosyaları oluşturulamadı"
 
-#: builtin/log.c:2253
+#: builtin/log.c:2252
 msgid "git cherry [-v] [<upstream> [<head> [<limit>]]]"
 msgstr "git cherry [-v] [<üstkaynak> [<dal-ucu> [<sınır>]]]"
 
-#: builtin/log.c:2307
+#: builtin/log.c:2306
 #, c-format
 msgid ""
 "Could not find a tracked remote branch, please specify <upstream> manually.\n"
 msgstr "İzlenen bir uzak dal bulunamadı, lütfen el ile <üstkaynak> belirtin.\n"
 
-#: builtin/ls-files.c:471
+#: builtin/ls-files.c:486
 msgid "git ls-files [<options>] [<file>...]"
 msgstr "git ls-files [<seçenekler>] [<dosya>...]"
 
-#: builtin/ls-files.c:527
+#: builtin/ls-files.c:542
 msgid "identify the file status with tags"
 msgstr "dosya durumunu etiketlerle tanımla"
 
-#: builtin/ls-files.c:529
+#: builtin/ls-files.c:544
 msgid "use lowercase letters for 'assume unchanged' files"
 msgstr "'değiştirilmediği düşünülen' dosyaları küçük harflerle göster"
 
-#: builtin/ls-files.c:531
+#: builtin/ls-files.c:546
 msgid "use lowercase letters for 'fsmonitor clean' files"
 msgstr "'fsmonitor clean' dosyalarını küçük harflerle göster"
 
-#: builtin/ls-files.c:533
+#: builtin/ls-files.c:548
 msgid "show cached files in the output (default)"
 msgstr "önbelleğe alınan dosyaları çıktıda göster (öntanımlı)"
 
-#: builtin/ls-files.c:535
+#: builtin/ls-files.c:550
 msgid "show deleted files in the output"
 msgstr "silinen dosyaları çıktıda göster"
 
-#: builtin/ls-files.c:537
+#: builtin/ls-files.c:552
 msgid "show modified files in the output"
 msgstr "değiştirilen dosyaları çıktıda göster"
 
-#: builtin/ls-files.c:539
+#: builtin/ls-files.c:554
 msgid "show other files in the output"
 msgstr "diğer dosyaları çıktıda göster"
 
-#: builtin/ls-files.c:541
+#: builtin/ls-files.c:556
 msgid "show ignored files in the output"
 msgstr "yok sayılan dosyaları çıktıda göster"
 
-#: builtin/ls-files.c:544
+#: builtin/ls-files.c:559
 msgid "show staged contents' object name in the output"
 msgstr "hazırlanan içeriğin nesne adını çıktıda göster"
 
-#: builtin/ls-files.c:546
+#: builtin/ls-files.c:561
 msgid "show files on the filesystem that need to be removed"
 msgstr "dosya sistemindeki kaldırılması gereken dosyaları göster"
 
-#: builtin/ls-files.c:548
+#: builtin/ls-files.c:563
 msgid "show 'other' directories' names only"
 msgstr "'diğer' dizinlerin yalnızca adını göster"
 
-#: builtin/ls-files.c:550
+#: builtin/ls-files.c:565
 msgid "show line endings of files"
 msgstr "dosyaların satır sonlarını göster"
 
-#: builtin/ls-files.c:552
+#: builtin/ls-files.c:567
 msgid "don't show empty directories"
 msgstr "boş dizinleri gösterme"
 
-#: builtin/ls-files.c:555
+#: builtin/ls-files.c:570
 msgid "show unmerged files in the output"
 msgstr "birleştirilmemiş dosyaları çıktıda göster"
 
-#: builtin/ls-files.c:557
+#: builtin/ls-files.c:572
 msgid "show resolve-undo information"
 msgstr "'resolve-undo' bilgisini göster"
 
-#: builtin/ls-files.c:559
+#: builtin/ls-files.c:574
 msgid "skip files matching pattern"
 msgstr "dizgi ile eşleşen dosyaları atla"
 
-#: builtin/ls-files.c:562
+#: builtin/ls-files.c:577
 msgid "exclude patterns are read from <file>"
 msgstr "hariç tutma dizgileri <dosya>'dan okunuyor"
 
-#: builtin/ls-files.c:565
+#: builtin/ls-files.c:580
 msgid "read additional per-directory exclude patterns in <file>"
 msgstr "ek dizin başı hariç tutma dizgilerini <dosya>'dan oku"
 
-#: builtin/ls-files.c:567
+#: builtin/ls-files.c:582
 msgid "add the standard git exclusions"
 msgstr "standart git hariç tutmalarını ekle"
 
-#: builtin/ls-files.c:571
+#: builtin/ls-files.c:586
 msgid "make the output relative to the project top directory"
 msgstr "çıktıyı en üst proje dizinine göreceli olarak yap"
 
-#: builtin/ls-files.c:574
+#: builtin/ls-files.c:589
 msgid "recurse through submodules"
 msgstr "altmodüller içinden özyinele"
 
-#: builtin/ls-files.c:576
+#: builtin/ls-files.c:591
 msgid "if any <file> is not in the index, treat this as an error"
 msgstr "eğer bir <dosya> indekste değilse bunu bir hata olarak gör"
 
-#: builtin/ls-files.c:577
+#: builtin/ls-files.c:592
 msgid "tree-ish"
 msgstr "ağacımsı"
 
-#: builtin/ls-files.c:578
+#: builtin/ls-files.c:593
 msgid "pretend that paths removed since <tree-ish> are still present"
 msgstr "<ağacımsı>'dan bu yana kaldırılan yolların hâlâ var olduğunu varsay"
 
-#: builtin/ls-files.c:580
+#: builtin/ls-files.c:595
 msgid "show debugging data"
 msgstr "hata ayıklama verisini göster"
 
+#: builtin/ls-files.c:597
+msgid "suppress duplicate entries"
+msgstr "yinelenen girdileri sustur"
+
 #: builtin/ls-remote.c:9
 msgid ""
 "git ls-remote [--heads] [--tags] [--refs] [--upload-pack=<exec>]\n"
@@ -16771,39 +17096,39 @@ msgstr ""
 "                     [-q | --quiet] [--exit-code] [--get-url]\n"
 "                     [--symref] [<depo> [<başvurular>...]]"
 
-#: builtin/ls-remote.c:59
+#: builtin/ls-remote.c:60
 msgid "do not print remote URL"
 msgstr "uzak konum URL'sini yazdırma"
 
-#: builtin/ls-remote.c:60 builtin/ls-remote.c:62 builtin/rebase.c:1398
+#: builtin/ls-remote.c:61 builtin/ls-remote.c:63 builtin/rebase.c:1404
 msgid "exec"
 msgstr "çalıştır"
 
-#: builtin/ls-remote.c:61 builtin/ls-remote.c:63
+#: builtin/ls-remote.c:62 builtin/ls-remote.c:64
 msgid "path of git-upload-pack on the remote host"
 msgstr "uzak konum makinesindeki git-upload-pack yolu"
 
-#: builtin/ls-remote.c:65
+#: builtin/ls-remote.c:66
 msgid "limit to tags"
 msgstr "etiketlere kısıtla"
 
-#: builtin/ls-remote.c:66
+#: builtin/ls-remote.c:67
 msgid "limit to heads"
 msgstr "uç işlemelere kısıtla"
 
-#: builtin/ls-remote.c:67
+#: builtin/ls-remote.c:68
 msgid "do not show peeled tags"
 msgstr "soyulmuş etiketleri gösterme"
 
-#: builtin/ls-remote.c:69
+#: builtin/ls-remote.c:70
 msgid "take url.<base>.insteadOf into account"
 msgstr "url.<temel>.insteadOf'u dikkate al"
 
-#: builtin/ls-remote.c:72
+#: builtin/ls-remote.c:73
 msgid "exit with exit code 2 if no matching refs are found"
 msgstr "eşleşen başvuru bulunamazsa 2 numaralı çıkış koduyla çık"
 
-#: builtin/ls-remote.c:75
+#: builtin/ls-remote.c:76
 msgid "show underlying ref in addition to the object pointed by it"
 msgstr "işaret ettiği nesneye ek olarak altında yatan başvuruyu göster"
 
@@ -16959,191 +17284,191 @@ msgstr "'%s' başvurusu çözülemedi"
 msgid "Merging %s with %s\n"
 msgstr "%s, %s ile birleştiriliyor\n"
 
-#: builtin/merge.c:57
+#: builtin/merge.c:58
 msgid "git merge [<options>] [<commit>...]"
 msgstr "git merge [<seçenekler>] [<işleme>...]"
 
-#: builtin/merge.c:58
+#: builtin/merge.c:59
 msgid "git merge --abort"
 msgstr "git merge --abort"
 
-#: builtin/merge.c:59
+#: builtin/merge.c:60
 msgid "git merge --continue"
 msgstr "git merge --continue"
 
-#: builtin/merge.c:122
+#: builtin/merge.c:123
 msgid "switch `m' requires a value"
 msgstr "'m' anahtarı bir değer gerektiriyor"
 
-#: builtin/merge.c:145
+#: builtin/merge.c:146
 #, c-format
 msgid "option `%s' requires a value"
 msgstr "'%s' seçeneği bir değer gerektiriyor"
 
-#: builtin/merge.c:198
+#: builtin/merge.c:199
 #, c-format
 msgid "Could not find merge strategy '%s'.\n"
 msgstr "Birleştirme stratejisi '%s' bulunamadı.\n"
 
-#: builtin/merge.c:199
+#: builtin/merge.c:200
 #, c-format
 msgid "Available strategies are:"
 msgstr "Kullanılabilir stratejiler:"
 
-#: builtin/merge.c:204
+#: builtin/merge.c:205
 #, c-format
 msgid "Available custom strategies are:"
 msgstr "Kullanılabilir özel stratejiler:"
 
-#: builtin/merge.c:255 builtin/pull.c:133
+#: builtin/merge.c:256 builtin/pull.c:133
 msgid "do not show a diffstat at the end of the merge"
 msgstr "birleştirmenin sonunda bir diffstat gösterme"
 
-#: builtin/merge.c:258 builtin/pull.c:136
+#: builtin/merge.c:259 builtin/pull.c:136
 msgid "show a diffstat at the end of the merge"
 msgstr "birleştirmenin sonunda bir diffstat göster"
 
-#: builtin/merge.c:259 builtin/pull.c:139
+#: builtin/merge.c:260 builtin/pull.c:139
 msgid "(synonym to --stat)"
 msgstr "(--stat eşanlamlısı)"
 
-#: builtin/merge.c:261 builtin/pull.c:142
+#: builtin/merge.c:262 builtin/pull.c:142
 msgid "add (at most <n>) entries from shortlog to merge commit message"
 msgstr ""
 "kısa günlükten birleştirme işlemesi iletisine girdiler (en çok <n>) ekle"
 
-#: builtin/merge.c:264 builtin/pull.c:148
+#: builtin/merge.c:265 builtin/pull.c:148
 msgid "create a single commit instead of doing a merge"
 msgstr "birleştirme yerine tek bir işleme oluştur"
 
-#: builtin/merge.c:266 builtin/pull.c:151
+#: builtin/merge.c:267 builtin/pull.c:151
 msgid "perform a commit if the merge succeeds (default)"
 msgstr "birleştirme başarılı olursa bir işleme gerçekleştir (öntanımlı)"
 
-#: builtin/merge.c:268 builtin/pull.c:154
+#: builtin/merge.c:269 builtin/pull.c:154
 msgid "edit message before committing"
 msgstr "göndermeden önce iletiyi düzenle"
 
-#: builtin/merge.c:270
+#: builtin/merge.c:271
 msgid "allow fast-forward (default)"
 msgstr "ileri sarıma izin ver (öntanımlı)"
 
-#: builtin/merge.c:272 builtin/pull.c:161
+#: builtin/merge.c:273 builtin/pull.c:161
 msgid "abort if fast-forward is not possible"
 msgstr "ileri sarım olanaklı değilse iptal et"
 
-#: builtin/merge.c:276 builtin/pull.c:164
+#: builtin/merge.c:277 builtin/pull.c:164
 msgid "verify that the named commit has a valid GPG signature"
 msgstr "adı verilen işlemenin geçerli bir GPG imzası olduğunu doğrula"
 
-#: builtin/merge.c:277 builtin/notes.c:787 builtin/pull.c:168
-#: builtin/rebase.c:539 builtin/rebase.c:1412 builtin/revert.c:114
+#: builtin/merge.c:278 builtin/notes.c:787 builtin/pull.c:168
+#: builtin/rebase.c:541 builtin/rebase.c:1418 builtin/revert.c:114
 msgid "strategy"
 msgstr "strateji"
 
-#: builtin/merge.c:278 builtin/pull.c:169
+#: builtin/merge.c:279 builtin/pull.c:169
 msgid "merge strategy to use"
 msgstr "kullanılacak birleştirme stratejisi"
 
-#: builtin/merge.c:279 builtin/pull.c:172
+#: builtin/merge.c:280 builtin/pull.c:172
 msgid "option=value"
 msgstr "seçenek=değer"
 
-#: builtin/merge.c:280 builtin/pull.c:173
+#: builtin/merge.c:281 builtin/pull.c:173
 msgid "option for selected merge strategy"
 msgstr "seçili birleştirme stratejisi için seçenekler"
 
-#: builtin/merge.c:282
+#: builtin/merge.c:283
 msgid "merge commit message (for a non-fast-forward merge)"
 msgstr ""
 "birleştirme işlemesi iletisi (ileri sarım olmayan bir birleştirme için)"
 
-#: builtin/merge.c:289
+#: builtin/merge.c:290
 msgid "abort the current in-progress merge"
 msgstr "ilerlemekte olan geçerli birleştirmeyi iptal et"
 
-#: builtin/merge.c:291
+#: builtin/merge.c:292
 msgid "--abort but leave index and working tree alone"
 msgstr "--abort; ancak indeksi ve çalışma ağacını değiştirmeden bırakın"
 
-#: builtin/merge.c:293
+#: builtin/merge.c:294
 msgid "continue the current in-progress merge"
 msgstr "ilerlemekte olan geçerli birleştirmeyi sürdürün"
 
-#: builtin/merge.c:295 builtin/pull.c:180
+#: builtin/merge.c:296 builtin/pull.c:180
 msgid "allow merging unrelated histories"
 msgstr "birbiriyle ilişkisi olmayan geçmişlerin birleştirilmesine izin ver"
 
-#: builtin/merge.c:302
+#: builtin/merge.c:303
 msgid "bypass pre-merge-commit and commit-msg hooks"
 msgstr "pre-merge-commit ve commit-msg kancalarını atla"
 
-#: builtin/merge.c:319
+#: builtin/merge.c:320
 msgid "could not run stash."
 msgstr "zula yapılamadı"
 
-#: builtin/merge.c:324
+#: builtin/merge.c:325
 msgid "stash failed"
 msgstr "zulalama başarısız oldu"
 
-#: builtin/merge.c:329
+#: builtin/merge.c:330
 #, c-format
 msgid "not a valid object: %s"
 msgstr "geçerli bir nesne değil: %s"
 
-#: builtin/merge.c:351 builtin/merge.c:368
+#: builtin/merge.c:352 builtin/merge.c:369
 msgid "read-tree failed"
 msgstr "read-tree başarısız oldu"
 
-#: builtin/merge.c:398
+#: builtin/merge.c:399
 msgid " (nothing to squash)"
 msgstr " (tıkıştırılacak bir şey yok)"
 
-#: builtin/merge.c:409
+#: builtin/merge.c:410
 #, c-format
 msgid "Squash commit -- not updating HEAD\n"
 msgstr "Tıkıştırma işlemesi -- HEAD güncellenmiyor\n"
 
-#: builtin/merge.c:459
+#: builtin/merge.c:460
 #, c-format
 msgid "No merge message -- not updating HEAD\n"
 msgstr "Birleştirme iletisi yok -- HEAD güncellenmiyor\n"
 
-#: builtin/merge.c:510
+#: builtin/merge.c:511
 #, c-format
 msgid "'%s' does not point to a commit"
 msgstr "'%s' bir işlemeye işaret etmiyor"
 
-#: builtin/merge.c:597
+#: builtin/merge.c:598
 #, c-format
 msgid "Bad branch.%s.mergeoptions string: %s"
 msgstr "Hatalı branch.%s.mergeoptions dizisi: %s"
 
-#: builtin/merge.c:723
+#: builtin/merge.c:724
 msgid "Not handling anything other than two heads merge."
 msgstr "İki uç işlemenin birleştirilmesi dışında bir şey yapılmıyor."
 
-#: builtin/merge.c:736
+#: builtin/merge.c:737
 #, c-format
 msgid "Unknown option for merge-recursive: -X%s"
 msgstr "merge-recursive için geçersiz seçenek: -X%s"
 
-#: builtin/merge.c:755 t/helper/test-fast-rebase.c:209
+#: builtin/merge.c:756 t/helper/test-fast-rebase.c:209
 #, c-format
 msgid "unable to write %s"
 msgstr "%s yazılamıyor"
 
-#: builtin/merge.c:807
+#: builtin/merge.c:808
 #, c-format
 msgid "Could not read from '%s'"
 msgstr "Şu konumdan okunamadı: '%s'"
 
-#: builtin/merge.c:816
+#: builtin/merge.c:817
 #, c-format
 msgid "Not committing merge; use 'git commit' to complete the merge.\n"
 msgstr "Birleştirme işlenmiyor, tamamlamak için 'git commit' kullanın.\n"
 
-#: builtin/merge.c:822
+#: builtin/merge.c:823
 msgid ""
 "Please enter a commit message to explain why this merge is necessary,\n"
 "especially if it merges an updated upstream into a topic branch.\n"
@@ -17153,11 +17478,11 @@ msgstr ""
 "girin, özellikle güncellenmiş bir üstkaynağı kişisel dala birleştiriyorsa.\n"
 "\n"
 
-#: builtin/merge.c:827
+#: builtin/merge.c:828
 msgid "An empty message aborts the commit.\n"
 msgstr "Boş bir ileti işlemeyi iptal eder.\n"
 
-#: builtin/merge.c:830
+#: builtin/merge.c:831
 #, c-format
 msgid ""
 "Lines starting with '%c' will be ignored, and an empty message aborts\n"
@@ -17166,72 +17491,72 @@ msgstr ""
 "'%c' ile başlayan satırlar yok sayılacaktır. Boş bir ileti işlemeyi\n"
 "iptal eder.\n"
 
-#: builtin/merge.c:883
+#: builtin/merge.c:884
 msgid "Empty commit message."
 msgstr "Boş işleme iletisi."
 
-#: builtin/merge.c:898
+#: builtin/merge.c:899
 #, c-format
 msgid "Wonderful.\n"
 msgstr "Harika.\n"
 
-#: builtin/merge.c:959
+#: builtin/merge.c:960
 #, c-format
 msgid "Automatic merge failed; fix conflicts and then commit the result.\n"
 msgstr "Otomatik birleştirme başarısız; çakışmaları çözün ve sonucu işleyin.\n"
 
-#: builtin/merge.c:998
+#: builtin/merge.c:999
 msgid "No current branch."
 msgstr "Geçerli dal yok."
 
-#: builtin/merge.c:1000
+#: builtin/merge.c:1001
 msgid "No remote for the current branch."
 msgstr "Geçerli dal için uzak konum yok."
 
-#: builtin/merge.c:1002
+#: builtin/merge.c:1003
 msgid "No default upstream defined for the current branch."
 msgstr "Geçerli dal için öntanımlı üstkaynak tanımlanmamış."
 
-#: builtin/merge.c:1007
+#: builtin/merge.c:1008
 #, c-format
 msgid "No remote-tracking branch for %s from %s"
 msgstr "%s için %s konumundan uzak izleme dalı yok"
 
-#: builtin/merge.c:1064
+#: builtin/merge.c:1065
 #, c-format
 msgid "Bad value '%s' in environment '%s'"
 msgstr "Hatalı değer '%s', '%s' ortamında"
 
-#: builtin/merge.c:1167
+#: builtin/merge.c:1168
 #, c-format
 msgid "not something we can merge in %s: %s"
 msgstr "%s içinde birleştirebileceğimiz bir şey değil: %s"
 
-#: builtin/merge.c:1201
+#: builtin/merge.c:1202
 msgid "not something we can merge"
 msgstr "birleştirebileceğimiz bir şey değil"
 
-#: builtin/merge.c:1311
+#: builtin/merge.c:1312
 msgid "--abort expects no arguments"
 msgstr "--abort bir argüman beklemez"
 
-#: builtin/merge.c:1315
+#: builtin/merge.c:1316
 msgid "There is no merge to abort (MERGE_HEAD missing)."
 msgstr "İptal edilecek bir birleştirme yok (MERGE_HEAD eksik)."
 
-#: builtin/merge.c:1333
+#: builtin/merge.c:1334
 msgid "--quit expects no arguments"
 msgstr "--quit bir argüman beklemez"
 
-#: builtin/merge.c:1346
+#: builtin/merge.c:1347
 msgid "--continue expects no arguments"
 msgstr "--continue bir argüman beklemez"
 
-#: builtin/merge.c:1350
+#: builtin/merge.c:1351
 msgid "There is no merge in progress (MERGE_HEAD missing)."
 msgstr "İlerlemekte olan bir birleştirme yok (MERGE_HEAD eksik)."
 
-#: builtin/merge.c:1366
+#: builtin/merge.c:1367
 msgid ""
 "You have not concluded your merge (MERGE_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -17239,7 +17564,7 @@ msgstr ""
 "Birleştirmenizi sonuçlandırmadınız (MERGE_HEAD mevcut).\n"
 "Lütfen birleştirmeden önce değişikliklerinizi işleyin."
 
-#: builtin/merge.c:1373
+#: builtin/merge.c:1374
 msgid ""
 "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -17247,102 +17572,143 @@ msgstr ""
 "Seç-al'ınızı sonuçlandırmadınız (CHERRY_PICK_HEAD mevcut).\n"
 "Lütfen birleştirmeden önce değişikliklerinizi işleyin."
 
-#: builtin/merge.c:1376
+#: builtin/merge.c:1377
 msgid "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists)."
 msgstr "Seç-al'ınızı sonuçlandırmadınız (CHERRY_PICK_HEAD mevcut)."
 
-#: builtin/merge.c:1390
+#: builtin/merge.c:1391
 msgid "You cannot combine --squash with --no-ff."
 msgstr "--squash ile --no-ff birlikte kullanılamaz."
 
-#: builtin/merge.c:1392
+#: builtin/merge.c:1393
 msgid "You cannot combine --squash with --commit."
 msgstr "--squash ile --commit birlikte kullanılamaz."
 
-#: builtin/merge.c:1408
+#: builtin/merge.c:1409
 msgid "No commit specified and merge.defaultToUpstream not set."
 msgstr "Belirtilen bir işleme yok ve merge.defaultToUpstream ayarlanmamış."
 
-#: builtin/merge.c:1425
+#: builtin/merge.c:1426
 msgid "Squash commit into empty head not supported yet"
 msgstr "İşlemeyi boş dal ucuna tıkıştırma henüz desteklenmiyor"
 
-#: builtin/merge.c:1427
+#: builtin/merge.c:1428
 msgid "Non-fast-forward commit does not make sense into an empty head"
 msgstr ""
 "İleri sarım olmayan işlemeyi boş dal ucuna yapmak bir anlam ifade etmiyor"
 
-#: builtin/merge.c:1432
+#: builtin/merge.c:1433
 #, c-format
 msgid "%s - not something we can merge"
 msgstr "%s - birleştirebileceğimiz bir şey değil"
 
-#: builtin/merge.c:1434
+#: builtin/merge.c:1435
 msgid "Can merge only exactly one commit into empty head"
 msgstr "Boş dal ucuna tam olarak yalnızca bir işleme birleştirilebilir"
 
-#: builtin/merge.c:1515
+#: builtin/merge.c:1516
 msgid "refusing to merge unrelated histories"
 msgstr "birbiriyle ilişkisi olmayan geçmişleri birleştirme reddediliyor"
 
-#: builtin/merge.c:1524
+#: builtin/merge.c:1525
 msgid "Already up to date."
 msgstr "Tümü güncel."
 
-#: builtin/merge.c:1534
+#: builtin/merge.c:1535
 #, c-format
 msgid "Updating %s..%s\n"
 msgstr "Güncelleniyor: %s..%s\n"
 
-#: builtin/merge.c:1580
+#: builtin/merge.c:1581
 #, c-format
 msgid "Trying really trivial in-index merge...\n"
 msgstr "Gerçekten önemsiz indeks içi birleştirme deneniyor...\n"
 
-#: builtin/merge.c:1587
+#: builtin/merge.c:1588
 #, c-format
 msgid "Nope.\n"
 msgstr "Yok.\n"
 
-#: builtin/merge.c:1612
+#: builtin/merge.c:1613
 msgid "Already up to date. Yeeah!"
 msgstr "Tümü güncel. İşte bu!"
 
-#: builtin/merge.c:1618
+#: builtin/merge.c:1619
 msgid "Not possible to fast-forward, aborting."
 msgstr "İleri sarma olanaklı değil, iptal ediliyor."
 
-#: builtin/merge.c:1646 builtin/merge.c:1711
+#: builtin/merge.c:1647 builtin/merge.c:1712
 #, c-format
 msgid "Rewinding the tree to pristine...\n"
 msgstr "Ağaç bozulmamış durumuna geri sarılıyor...\n"
 
-#: builtin/merge.c:1650
+#: builtin/merge.c:1651
 #, c-format
 msgid "Trying merge strategy %s...\n"
 msgstr "%s birleştirme stratejisi deneniyor...\n"
 
-#: builtin/merge.c:1702
+#: builtin/merge.c:1703
 #, c-format
 msgid "No merge strategy handled the merge.\n"
 msgstr "Birleştirmeyi hiçbir birleştirme stratejisi işlemedi\n"
 
-#: builtin/merge.c:1704
+#: builtin/merge.c:1705
 #, c-format
 msgid "Merge with strategy %s failed.\n"
 msgstr "%s stratejisi ile birleştirme başarısız oldu.\n"
 
-#: builtin/merge.c:1713
+#: builtin/merge.c:1714
 #, c-format
 msgid "Using the %s to prepare resolving by hand.\n"
 msgstr "El ile çözümü hazırlamak için %s kullanılıyor.\n"
 
-#: builtin/merge.c:1727
+#: builtin/merge.c:1728
 #, c-format
 msgid "Automatic merge went well; stopped before committing as requested\n"
 msgstr ""
 "Otomatik birleştirme iyi geçti; istendiği üzere gönderme öncesinde durdu.\n"
 
+#: builtin/mktag.c:10
+msgid "git mktag"
+msgstr "git mktag"
+
+#: builtin/mktag.c:30
+#, c-format
+msgid "warning: tag input does not pass fsck: %s"
+msgstr "uyarı: etiket girdisi fsck'den geçemiyor: %s"
+
+#: builtin/mktag.c:41
+#, c-format
+msgid "error: tag input does not pass fsck: %s"
+msgstr "hata: etiket girdisi fsck'den geçemiyor: %s"
+
+#: builtin/mktag.c:44
+#, c-format
+msgid "%d (FSCK_IGNORE?) should never trigger this callback"
+msgstr "%d (FSCK_IGNORE?) hiçbir zaman bu geri çağırmayı tetiklememeli"
+
+#: builtin/mktag.c:59
+#, c-format
+msgid "could not read tagged object '%s'"
+msgstr "etiketlenmiş nesne '%s' okunamadı"
+
+#: builtin/mktag.c:62
+#, c-format
+msgid "object '%s' tagged as '%s', but is a '%s' type"
+msgstr "'%s' nesnesi '%s' olarak etiketlenmiş; ancak bir '%s' türü"
+
+#: builtin/mktag.c:99
+msgid "tag on stdin did not pass our strict fsck check"
+msgstr "stdin üzerindeki etiket bizim sıkı fsck denetimimizi geçemedi"
+
+#: builtin/mktag.c:102
+msgid "tag on stdin did not refer to a valid object"
+msgstr "stdin üzerindeki etiket geçerli bir nesneye başvurmuyor"
+
+#: builtin/mktag.c:105 builtin/tag.c:232
+msgid "unable to write tag file"
+msgstr "etiket dosyası yazılamıyor"
+
 #: builtin/mktree.c:66
 msgid "git mktree [-z] [--missing] [--batch]"
 msgstr "git mktree [-z] [--missing] [--batch]"
@@ -17379,7 +17745,10 @@ msgstr ""
 "yeniden paketleme sırasında daha küçük boyutlu paket dosyalarını bu boyuttan "
 "daha büyük bir toplu iş olarak toplayın"
 
-#: builtin/multi-pack-index.c:50 builtin/prune-packed.c:25
+#: builtin/multi-pack-index.c:50 builtin/notes.c:376 builtin/notes.c:431
+#: builtin/notes.c:509 builtin/notes.c:521 builtin/notes.c:598
+#: builtin/notes.c:665 builtin/notes.c:815 builtin/notes.c:963
+#: builtin/notes.c:985 builtin/prune-packed.c:25 builtin/tag.c:575
 msgid "too many arguments"
 msgstr "çok fazla argüman"
 
@@ -17485,7 +17854,7 @@ msgstr "%s, kaynak=%s, hedef:%s"
 msgid "Renaming %s to %s\n"
 msgstr "%s, %s olarak yeniden adlandırılıyor\n"
 
-#: builtin/mv.c:280 builtin/remote.c:785 builtin/repack.c:484
+#: builtin/mv.c:280 builtin/remote.c:785 builtin/repack.c:483
 #, c-format
 msgid "renaming '%s' failed"
 msgstr "'%s' yeniden adlandırılamadı"
@@ -17675,7 +18044,7 @@ msgstr "not nesnesi yazılamıyor"
 msgid "the note contents have been left in %s"
 msgstr "not içeriği %s içinde bırakıldı"
 
-#: builtin/notes.c:242 builtin/tag.c:533
+#: builtin/notes.c:242 builtin/tag.c:565
 #, c-format
 msgid "could not open or read '%s'"
 msgstr "'%s' açılamadı veya okunamadı"
@@ -17715,12 +18084,6 @@ msgstr "notlar '%s' konumundan '%s' konumuna kopyalanamadı"
 msgid "refusing to %s notes in %s (outside of refs/notes/)"
 msgstr "notları %s yapma (%s içinde) reddediliyor (refs/notes/ dışında)"
 
-#: builtin/notes.c:376 builtin/notes.c:431 builtin/notes.c:509
-#: builtin/notes.c:521 builtin/notes.c:598 builtin/notes.c:665
-#: builtin/notes.c:815 builtin/notes.c:963 builtin/notes.c:985
-msgid "too many parameters"
-msgstr "çok fazla parametre"
-
 #: builtin/notes.c:389 builtin/notes.c:678
 #, c-format
 msgid "no note found for object %s."
@@ -17778,8 +18141,8 @@ msgid "load rewriting config for <command> (implies --stdin)"
 msgstr "<komut> için yapılandırma yeniden yazımını yükle (--stdin ima eder)"
 
 #: builtin/notes.c:517
-msgid "too few parameters"
-msgstr "çok az parametre"
+msgid "too few arguments"
+msgstr "pek az argüman"
 
 #: builtin/notes.c:538
 #, c-format
@@ -17907,7 +18270,7 @@ msgstr ""
 "çözün ve sonucu 'git notes merge --commit' ile işleyin. Birleştirmeyi iptal "
 "etmek isterseniz 'git notes merge --abort' kullanarak bunu yapabilirsiniz.\n"
 
-#: builtin/notes.c:897 builtin/tag.c:546
+#: builtin/notes.c:897 builtin/tag.c:578
 #, c-format
 msgid "Failed to resolve '%s' as a valid ref."
 msgstr "'%s' geçerli bir başvuru olarak çözülemiyor"
@@ -17925,7 +18288,7 @@ msgstr "var olmayan notu kaldırma denemesi bir hata değil"
 msgid "read object names from the standard input"
 msgstr "nesne adlarını standart girdi'den oku"
 
-#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:220
+#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:148
 msgid "do not remove, show only"
 msgstr "kaldırma, yalnızca göster"
 
@@ -17941,7 +18304,7 @@ msgstr "not başvurusu"
 msgid "use notes from <notes-ref>"
 msgstr "notları <not-bşvr>'ndan kullan"
 
-#: builtin/notes.c:1034 builtin/stash.c:1604
+#: builtin/notes.c:1034 builtin/stash.c:1671
 #, c-format
 msgid "unknown subcommand: %s"
 msgstr "bilinmeyen altkomut: %s"
@@ -17959,103 +18322,117 @@ msgid ""
 msgstr ""
 "git pack-objects [<sçnklr>...] <base-name> [< <bşvr-liste> | < <nesne-liste>]"
 
-#: builtin/pack-objects.c:443
+#: builtin/pack-objects.c:440
+#, c-format
+msgid ""
+"write_reuse_object: could not locate %s, expected at offset %<PRIuMAX> in "
+"pack %s"
+msgstr ""
+"write_reuse_object: %s bulunamıyor, %<PRIuMAX> ofsetinde bekleniyordu (%s "
+"paketinde)"
+
+#: builtin/pack-objects.c:448
 #, c-format
 msgid "bad packed object CRC for %s"
 msgstr "%s için hatalı paketlenmiş nesne CRC'si"
 
-#: builtin/pack-objects.c:454
+#: builtin/pack-objects.c:459
 #, c-format
 msgid "corrupt packed object for %s"
 msgstr "%s için hasar görmüş paketlenmiş nesne"
 
-#: builtin/pack-objects.c:585
+#: builtin/pack-objects.c:590
 #, c-format
 msgid "recursive delta detected for object %s"
 msgstr "%s nesnesi için özyineli delta algılandı"
 
-#: builtin/pack-objects.c:796
+#: builtin/pack-objects.c:801
 #, c-format
 msgid "ordered %u objects, expected %<PRIu32>"
 msgstr "%u nesne sipariş verildi, %<PRIu32> bekleniyordu"
 
-#: builtin/pack-objects.c:1004
+#: builtin/pack-objects.c:896
+#, c-format
+msgid "expected object at offset %<PRIuMAX> in pack %s"
+msgstr "şu paketin %<PRIuMAX> ofsetinde nesne bekleniyordu: %s"
+
+#: builtin/pack-objects.c:1015
 msgid "disabling bitmap writing, packs are split due to pack.packSizeLimit"
 msgstr ""
 "biteşlem yazımı kapatılıyor, paketler pack.packSizeLimit dolayısıyla "
 "parçalara ayrılmış"
 
-#: builtin/pack-objects.c:1017
+#: builtin/pack-objects.c:1028
 msgid "Writing objects"
 msgstr "Nesneler yazılıyor"
 
-#: builtin/pack-objects.c:1078 builtin/update-index.c:90
+#: builtin/pack-objects.c:1089 builtin/update-index.c:90
 #, c-format
 msgid "failed to stat %s"
 msgstr "%s bilgileri alınamıyor"
 
-#: builtin/pack-objects.c:1131
+#: builtin/pack-objects.c:1141
 #, c-format
 msgid "wrote %<PRIu32> objects while expecting %<PRIu32>"
 msgstr "%<PRIu32> nesne yazıldı (%<PRIu32> bekleniyordu)"
 
-#: builtin/pack-objects.c:1348
+#: builtin/pack-objects.c:1358
 msgid "disabling bitmap writing, as some objects are not being packed"
 msgstr "bazı nesneler paketlenmediğinden dolayı biteşlem yazımı kapatılıyor"
 
-#: builtin/pack-objects.c:1796
+#: builtin/pack-objects.c:1806
 #, c-format
 msgid "delta base offset overflow in pack for %s"
 msgstr "%s için paket içinde delta taban ofset taşımı"
 
-#: builtin/pack-objects.c:1805
+#: builtin/pack-objects.c:1815
 #, c-format
 msgid "delta base offset out of bound for %s"
 msgstr "%s için delta taban ofseti sınırların dışında"
 
-#: builtin/pack-objects.c:2086
+#: builtin/pack-objects.c:2096
 msgid "Counting objects"
 msgstr "Nesneler sayılıyor"
 
-#: builtin/pack-objects.c:2231
+#: builtin/pack-objects.c:2241
 #, c-format
 msgid "unable to parse object header of %s"
 msgstr "%s nesne üstbilgisi ayrıştırılamıyor"
 
-#: builtin/pack-objects.c:2301 builtin/pack-objects.c:2317
-#: builtin/pack-objects.c:2327
+#: builtin/pack-objects.c:2311 builtin/pack-objects.c:2327
+#: builtin/pack-objects.c:2337
 #, c-format
 msgid "object %s cannot be read"
 msgstr "%s nesnesi okunamıyor"
 
-#: builtin/pack-objects.c:2304 builtin/pack-objects.c:2331
+#: builtin/pack-objects.c:2314 builtin/pack-objects.c:2341
 #, c-format
 msgid "object %s inconsistent object length (%<PRIuMAX> vs %<PRIuMAX>)"
 msgstr "%s nesnesi için tutarsız nesne uzunluğu (%<PRIuMAX> / %<PRIuMAX>)"
 
-#: builtin/pack-objects.c:2341
+#: builtin/pack-objects.c:2351
 msgid "suboptimal pack - out of memory"
 msgstr "standart altı paket - bellek yetersiz"
 
-#: builtin/pack-objects.c:2656
+#: builtin/pack-objects.c:2666
 #, c-format
 msgid "Delta compression using up to %d threads"
 msgstr "Delta sıkıştırması %d iş parçacığı kullanıyor"
 
-#: builtin/pack-objects.c:2795
+#: builtin/pack-objects.c:2805
 #, c-format
 msgid "unable to pack objects reachable from tag %s"
 msgstr "%s etiketinden ulaşılabilir nesneler paketlenemiyor"
 
-#: builtin/pack-objects.c:2883
+#: builtin/pack-objects.c:2891
 msgid "Compressing objects"
 msgstr "Nesneler sıkıştırılıyor"
 
-#: builtin/pack-objects.c:2889
+#: builtin/pack-objects.c:2897
 msgid "inconsistency with delta count"
 msgstr "delta sayımında tutarsızlık"
 
-#: builtin/pack-objects.c:2961
+#: builtin/pack-objects.c:2976
 #, c-format
 msgid ""
 "value of uploadpack.blobpackfileuri must be of the form '<object-hash> <pack-"
@@ -18064,7 +18441,7 @@ msgstr ""
 "uploadpack.blobpackfileuri değeri '<nesne-sağlaması> <paket-sağlaması> <uri> "
 "biçiminde olmalıdır ('%s' alındı)"
 
-#: builtin/pack-objects.c:2964
+#: builtin/pack-objects.c:2979
 #, c-format
 msgid ""
 "object already configured in another uploadpack.blobpackfileuri (got '%s')"
@@ -18072,7 +18449,7 @@ msgstr ""
 "nesne halihazırda başka bir uploadpack.blobpackfileuri içinde yapılandırıldı "
 "('%s' alındı)"
 
-#: builtin/pack-objects.c:2993
+#: builtin/pack-objects.c:3008
 #, c-format
 msgid ""
 "expected edge object ID, got garbage:\n"
@@ -18081,7 +18458,7 @@ msgstr ""
 "sınır nesnesi numarası bekleniyordu, anlamsız veri alındı:\n"
 " %s"
 
-#: builtin/pack-objects.c:2999
+#: builtin/pack-objects.c:3014
 #, c-format
 msgid ""
 "expected object ID, got garbage:\n"
@@ -18090,237 +18467,237 @@ msgstr ""
 "nesne numarası bekleniyordu, anlamsız veri alındı:\n"
 "%s"
 
-#: builtin/pack-objects.c:3097
+#: builtin/pack-objects.c:3112
 msgid "invalid value for --missing"
 msgstr "--missing için geçersiz değer"
 
-#: builtin/pack-objects.c:3156 builtin/pack-objects.c:3264
+#: builtin/pack-objects.c:3171 builtin/pack-objects.c:3279
 msgid "cannot open pack index"
 msgstr "paket indeksi açılamıyor"
 
-#: builtin/pack-objects.c:3187
+#: builtin/pack-objects.c:3202
 #, c-format
 msgid "loose object at %s could not be examined"
 msgstr "%s konumundaki gevşek nesne incelenemedi"
 
-#: builtin/pack-objects.c:3272
+#: builtin/pack-objects.c:3287
 msgid "unable to force loose object"
 msgstr "gevşek nesne zorlanamıyor"
 
-#: builtin/pack-objects.c:3365
+#: builtin/pack-objects.c:3380
 #, c-format
 msgid "not a rev '%s'"
 msgstr "bir revizyon değil: '%s'"
 
-#: builtin/pack-objects.c:3368
+#: builtin/pack-objects.c:3383
 #, c-format
 msgid "bad revision '%s'"
 msgstr "hatalı revizyon: '%s'"
 
-#: builtin/pack-objects.c:3393
+#: builtin/pack-objects.c:3408
 msgid "unable to add recent objects"
 msgstr "en son nesneler eklenemiyor"
 
-#: builtin/pack-objects.c:3446
+#: builtin/pack-objects.c:3461
 #, c-format
 msgid "unsupported index version %s"
 msgstr "desteklenmeyen indeks sürümü %s"
 
-#: builtin/pack-objects.c:3450
+#: builtin/pack-objects.c:3465
 #, c-format
 msgid "bad index version '%s'"
 msgstr "hatalı indeks sürümü '%s'"
 
-#: builtin/pack-objects.c:3488
+#: builtin/pack-objects.c:3503
 msgid "<version>[,<offset>]"
 msgstr "<sürüm>[,<ofset>]"
 
-#: builtin/pack-objects.c:3489
+#: builtin/pack-objects.c:3504
 msgid "write the pack index file in the specified idx format version"
 msgstr "paket indeks dosyasını belirtilen idx biçiminde yaz"
 
-#: builtin/pack-objects.c:3492
+#: builtin/pack-objects.c:3507
 msgid "maximum size of each output pack file"
 msgstr "her çıktı paketi dosyasının olabilecek en büyük boyutu"
 
-#: builtin/pack-objects.c:3494
+#: builtin/pack-objects.c:3509
 msgid "ignore borrowed objects from alternate object store"
 msgstr "alternatif nesne mağazasından ödünç alınan nesneleri yok say"
 
-#: builtin/pack-objects.c:3496
+#: builtin/pack-objects.c:3511
 msgid "ignore packed objects"
 msgstr "paketlenmiş nesneleri yok say"
 
-#: builtin/pack-objects.c:3498
+#: builtin/pack-objects.c:3513
 msgid "limit pack window by objects"
 msgstr "paket penceresini nesnelerle sınırla"
 
-#: builtin/pack-objects.c:3500
+#: builtin/pack-objects.c:3515
 msgid "limit pack window by memory in addition to object limit"
 msgstr "paket penceresini nesne limitine ek olarak bellek ile kısıtla"
 
-#: builtin/pack-objects.c:3502
+#: builtin/pack-objects.c:3517
 msgid "maximum length of delta chain allowed in the resulting pack"
 msgstr "ortaya çıkan pakette olabilecek en büyük delta zincirinin uzunluğu"
 
-#: builtin/pack-objects.c:3504
+#: builtin/pack-objects.c:3519
 msgid "reuse existing deltas"
 msgstr "var olan deltaları yeniden kullan"
 
-#: builtin/pack-objects.c:3506
+#: builtin/pack-objects.c:3521
 msgid "reuse existing objects"
 msgstr "var olan nesneleri yeniden kullan"
 
-#: builtin/pack-objects.c:3508
+#: builtin/pack-objects.c:3523
 msgid "use OFS_DELTA objects"
 msgstr "OFS_DELTA nesneleri kullan"
 
-#: builtin/pack-objects.c:3510
+#: builtin/pack-objects.c:3525
 msgid "use threads when searching for best delta matches"
 msgstr "en iyi delta eşleşmelerini ararken iş parçacıklarını kullan"
 
-#: builtin/pack-objects.c:3512
+#: builtin/pack-objects.c:3527
 msgid "do not create an empty pack output"
 msgstr "boş bir paket çıktısı oluşturma"
 
-#: builtin/pack-objects.c:3514
+#: builtin/pack-objects.c:3529
 msgid "read revision arguments from standard input"
 msgstr "revizyon argümanlarını standart girdi'den oku"
 
-#: builtin/pack-objects.c:3516
+#: builtin/pack-objects.c:3531
 msgid "limit the objects to those that are not yet packed"
 msgstr "nesneleri henüz paketlenmeyenlere kısıtla"
 
-#: builtin/pack-objects.c:3519
+#: builtin/pack-objects.c:3534
 msgid "include objects reachable from any reference"
 msgstr "herhangi bir başvurudan ulaşılabilir olan nesneleri içer"
 
-#: builtin/pack-objects.c:3522
+#: builtin/pack-objects.c:3537
 msgid "include objects referred by reflog entries"
 msgstr "başvuru günlüğü tarafından başvurulan nesneleri içer"
 
-#: builtin/pack-objects.c:3525
+#: builtin/pack-objects.c:3540
 msgid "include objects referred to by the index"
 msgstr "indeks tarafından başvurulan nesneleri içer"
 
-#: builtin/pack-objects.c:3528
+#: builtin/pack-objects.c:3543
 msgid "output pack to stdout"
 msgstr "paketi stdout'a çıktı ver"
 
-#: builtin/pack-objects.c:3530
+#: builtin/pack-objects.c:3545
 msgid "include tag objects that refer to objects to be packed"
 msgstr "paketlenecek nesnelere başvuran etiket nesnelerini içer"
 
-#: builtin/pack-objects.c:3532
+#: builtin/pack-objects.c:3547
 msgid "keep unreachable objects"
 msgstr "ulaşılamayan nesneleri tut"
 
-#: builtin/pack-objects.c:3534
+#: builtin/pack-objects.c:3549
 msgid "pack loose unreachable objects"
 msgstr "ulaşılamayan gevşek nesneleri paketle"
 
-#: builtin/pack-objects.c:3536
+#: builtin/pack-objects.c:3551
 msgid "unpack unreachable objects newer than <time>"
 msgstr "<zaman>'dan daha yeni ulaşılamayan nesneleri aç"
 
-#: builtin/pack-objects.c:3539
+#: builtin/pack-objects.c:3554
 msgid "use the sparse reachability algorithm"
 msgstr "aralıklı ulaşılabilirlik algoritmasını kullan"
 
-#: builtin/pack-objects.c:3541
+#: builtin/pack-objects.c:3556
 msgid "create thin packs"
 msgstr "ince paketler oluştur"
 
-#: builtin/pack-objects.c:3543
+#: builtin/pack-objects.c:3558
 msgid "create packs suitable for shallow fetches"
 msgstr "sığ getirmelere uygun paketler oluştur"
 
-#: builtin/pack-objects.c:3545
+#: builtin/pack-objects.c:3560
 msgid "ignore packs that have companion .keep file"
 msgstr "eşlik eden .keep dosyasına iye paketleri yok say"
 
-#: builtin/pack-objects.c:3547
+#: builtin/pack-objects.c:3562
 msgid "ignore this pack"
 msgstr "bu paketi yok say"
 
-#: builtin/pack-objects.c:3549
+#: builtin/pack-objects.c:3564
 msgid "pack compression level"
 msgstr "paket sıkıştırma düzeyi"
 
-#: builtin/pack-objects.c:3551
+#: builtin/pack-objects.c:3566
 msgid "do not hide commits by grafts"
 msgstr "aşılarla gelen işlemeleri gizleme"
 
-#: builtin/pack-objects.c:3553
+#: builtin/pack-objects.c:3568
 msgid "use a bitmap index if available to speed up counting objects"
 msgstr ""
 "nesnelerin sayımını hızlandırmak için eğer varsa bir biteşlem indeksi kullan"
 
-#: builtin/pack-objects.c:3555
+#: builtin/pack-objects.c:3570
 msgid "write a bitmap index together with the pack index"
 msgstr "paket indeksiyle birlikte bir biteşlem indeksi de yaz"
 
-#: builtin/pack-objects.c:3559
+#: builtin/pack-objects.c:3574
 msgid "write a bitmap index if possible"
 msgstr "eğer olanaklıysa bir biteşlem indeksi yaz"
 
-#: builtin/pack-objects.c:3563
+#: builtin/pack-objects.c:3578
 msgid "handling for missing objects"
 msgstr "eksik nesneler için işlem"
 
-#: builtin/pack-objects.c:3566
+#: builtin/pack-objects.c:3581
 msgid "do not pack objects in promisor packfiles"
 msgstr "nesneleri vaatçi paket dosyalarıyla paketleme"
 
-#: builtin/pack-objects.c:3568
+#: builtin/pack-objects.c:3583
 msgid "respect islands during delta compression"
 msgstr "delta sıkıştırması sırasında adalara uy"
 
-#: builtin/pack-objects.c:3570
+#: builtin/pack-objects.c:3585
 msgid "protocol"
 msgstr "protokol"
 
-#: builtin/pack-objects.c:3571
+#: builtin/pack-objects.c:3586
 msgid "exclude any configured uploadpack.blobpackfileuri with this protocol"
 msgstr ""
 "bu protokol ile herhangi bir yapılandırılmış uploadpack.blobpackfileuri "
 "ögesini hariç tut"
 
-#: builtin/pack-objects.c:3600
+#: builtin/pack-objects.c:3617
 #, c-format
 msgid "delta chain depth %d is too deep, forcing %d"
 msgstr "delta zincir derinliği %d çok derin, %d zorlanıyor"
 
-#: builtin/pack-objects.c:3605
+#: builtin/pack-objects.c:3622
 #, c-format
 msgid "pack.deltaCacheLimit is too high, forcing %d"
 msgstr "pack.deltaCacheLimit çok yüksek, %d zorlanıyor"
 
-#: builtin/pack-objects.c:3659
+#: builtin/pack-objects.c:3676
 msgid "--max-pack-size cannot be used to build a pack for transfer"
 msgstr "--max-pack-size, aktarım için bir paket yapımında kullanılamaz"
 
-#: builtin/pack-objects.c:3661
+#: builtin/pack-objects.c:3678
 msgid "minimum pack size limit is 1 MiB"
 msgstr "olabilecek en küçük paket boyutu limiti 1 MiB'dır"
 
-#: builtin/pack-objects.c:3666
+#: builtin/pack-objects.c:3683
 msgid "--thin cannot be used to build an indexable pack"
 msgstr "--thin bir indekslenebilir paket yapımında kullanılamaz"
 
-#: builtin/pack-objects.c:3669
+#: builtin/pack-objects.c:3686
 msgid "--keep-unreachable and --unpack-unreachable are incompatible"
 msgstr "--keep-unreachable ve --unpack-unreachable birbiriyle uyumsuz"
 
-#: builtin/pack-objects.c:3675
+#: builtin/pack-objects.c:3692
 msgid "cannot use --filter without --stdout"
 msgstr "--filter, --stdout olmadan kullanılamaz"
 
-#: builtin/pack-objects.c:3735
+#: builtin/pack-objects.c:3752
 msgid "Enumerating objects"
 msgstr "Nesneler ortaya dökülüyor"
 
-#: builtin/pack-objects.c:3766
+#: builtin/pack-objects.c:3783
 #, c-format
 msgid ""
 "Total %<PRIu32> (delta %<PRIu32>), reused %<PRIu32> (delta %<PRIu32>), pack-"
@@ -18329,6 +18706,21 @@ msgstr ""
 "Toplam %<PRIu32> (delta %<PRIu32>), yeniden kullanılan %<PRIu32> (delta "
 "%<PRIu32>), yeniden kullanılan paket %<PRIu32>"
 
+#: builtin/pack-redundant.c:601
+msgid ""
+"'git pack-redundant' is nominated for removal.\n"
+"If you still use this command, please add an extra\n"
+"option, '--i-still-use-this', on the command line\n"
+"and let us know you still use it by sending an e-mail\n"
+"to <git@vger.kernel.org>.  Thanks.\n"
+msgstr ""
+"'git pack-redundant' komutu kaldırma için aday\n"
+"gösterildi. Bu komutu hâlâ kullanıyorsanız lütfen\n"
+"komut satırında '--i-still-use-this' ek seçeneğini\n"
+"kullanın ve bunu hâlâ kullandığınızı\n"
+"<git@vger.kernel.org> adresine bir e-posta atarak\n"
+"bize haber verin. Sağ olun.\n"
+
 #: builtin/pack-refs.c:8
 msgid "git pack-refs [<options>]"
 msgstr "git pack-refs [<seçenekler>]"
@@ -18387,7 +18779,7 @@ msgstr "Birleştirme ile ilgili seçenekler"
 msgid "incorporate changes by rebasing rather than merging"
 msgstr "değişiklikleri birleştirme yerine yeniden temellendirme ile kat"
 
-#: builtin/pull.c:158 builtin/rebase.c:490 builtin/revert.c:126
+#: builtin/pull.c:158 builtin/rebase.c:492 builtin/revert.c:126
 msgid "allow fast-forward"
 msgstr "ileri sarıma izin ver"
 
@@ -18412,47 +18804,19 @@ msgstr "paralelde çekilen altmodüllerin sayısı"
 msgid "Invalid value for pull.ff: %s"
 msgstr "pull.ff için geçersiz değer: %s"
 
-#: builtin/pull.c:348
-msgid ""
-"Pulling without specifying how to reconcile divergent branches is\n"
-"discouraged. You can squelch this message by running one of the following\n"
-"commands sometime before your next pull:\n"
-"\n"
-"  git config pull.rebase false  # merge (the default strategy)\n"
-"  git config pull.rebase true   # rebase\n"
-"  git config pull.ff only       # fast-forward only\n"
-"\n"
-"You can replace \"git config\" with \"git config --global\" to set a "
-"default\n"
-"preference for all repositories. You can also pass --rebase, --no-rebase,\n"
-"or --ff-only on the command line to override the configured default per\n"
-"invocation.\n"
-msgstr ""
-"Iraksak dalların nasıl uzlaştırılacağını belirtmeden çekme\n"
-"yapılması önerilmez. Bu iletiyi bir sonraki çekimden önce\n"
-"aşağıdaki komutlardan birini çalıştırarak susturabilirsiniz:\n"
-"\n"
-"\tgit config pull.rebase false  # birleştir (öntanımlı strateji)\n"
-"\tgit config pull.rebase true   # yeniden temellendir\n"
-"\tgit config pull.ff only       # yalnızca ileri sarım\n"
-"\n"
-"Ayarı global kılmak için \"git config\"i \"git config --global\" ile\n"
-"değiştirin. Öntanımlı yapılandırmayı yürütme sırasında --rebase,\n"
-"--no-rebase veya --ff-only ile geçersiz kılabilirsiniz.\n"
-
-#: builtin/pull.c:458
+#: builtin/pull.c:445
 msgid ""
 "There is no candidate for rebasing against among the refs that you just "
 "fetched."
 msgstr ""
 "Az önce getirdiğiniz başvurular arasında yeniden temellendirme için aday yok."
 
-#: builtin/pull.c:460
+#: builtin/pull.c:447
 msgid ""
 "There are no candidates for merging among the refs that you just fetched."
 msgstr "Az önce getirdiğiniz başvurular arasında birleştirme için aday yok."
 
-#: builtin/pull.c:461
+#: builtin/pull.c:448
 msgid ""
 "Generally this means that you provided a wildcard refspec which had no\n"
 "matches on the remote end."
@@ -18460,7 +18824,7 @@ msgstr ""
 "Genellikle bu, uzak uçta eşleşmesi olmayan bir joker başvuru belirteci\n"
 "sağladığınız anlamına gelir."
 
-#: builtin/pull.c:464
+#: builtin/pull.c:451
 #, c-format
 msgid ""
 "You asked to pull from the remote '%s', but did not specify\n"
@@ -18471,43 +18835,43 @@ msgstr ""
 "Bu, geçerli dalınız için öntanımlı yapılandırılmış uzak konum olmadığından,\n"
 "komut satırında bir dal belirtmeniz gerekir."
 
-#: builtin/pull.c:469 builtin/rebase.c:1246
+#: builtin/pull.c:456 builtin/rebase.c:1253
 msgid "You are not currently on a branch."
 msgstr "Şu anda bir dal üzerinde değilsiniz."
 
-#: builtin/pull.c:471 builtin/pull.c:486
+#: builtin/pull.c:458 builtin/pull.c:473
 msgid "Please specify which branch you want to rebase against."
 msgstr ""
 "Lütfen hangi dala karşı yeniden temellendirme yapmak istediğinizi belirtin."
 
-#: builtin/pull.c:473 builtin/pull.c:488
+#: builtin/pull.c:460 builtin/pull.c:475
 msgid "Please specify which branch you want to merge with."
 msgstr "Lütfen hangi dal ile birleştirmek istediğinizi belirtin."
 
-#: builtin/pull.c:474 builtin/pull.c:489
+#: builtin/pull.c:461 builtin/pull.c:476
 msgid "See git-pull(1) for details."
 msgstr "Ayrıntılar için: git-pull(1)"
 
-#: builtin/pull.c:476 builtin/pull.c:482 builtin/pull.c:491
-#: builtin/rebase.c:1252
+#: builtin/pull.c:463 builtin/pull.c:469 builtin/pull.c:478
+#: builtin/rebase.c:1259
 msgid "<remote>"
 msgstr "<uzak-konum>"
 
-#: builtin/pull.c:476 builtin/pull.c:491 builtin/pull.c:496
+#: builtin/pull.c:463 builtin/pull.c:478 builtin/pull.c:483
 msgid "<branch>"
 msgstr "<dal>"
 
-#: builtin/pull.c:484 builtin/rebase.c:1244
+#: builtin/pull.c:471 builtin/rebase.c:1251
 msgid "There is no tracking information for the current branch."
 msgstr "Geçerli dal için izleme bilgisi yok."
 
-#: builtin/pull.c:493
+#: builtin/pull.c:480
 msgid ""
 "If you wish to set tracking information for this branch you can do so with:"
 msgstr ""
 "Eğer bu dal için izleme bilgisi ayarlamak isterseniz şununla yapabilirsiniz:"
 
-#: builtin/pull.c:498
+#: builtin/pull.c:485
 #, c-format
 msgid ""
 "Your configuration specifies to merge with the ref '%s'\n"
@@ -18516,28 +18880,56 @@ msgstr ""
 "Yapılandırmanız uzak konumdan '%s' başvurusu ile birleştirmeyi belirtiyor,\n"
 "ancak böyle bir başvuru getirilmedi."
 
-#: builtin/pull.c:609
+#: builtin/pull.c:596
 #, c-format
 msgid "unable to access commit %s"
 msgstr "%s işlemesine erişilemedi"
 
-#: builtin/pull.c:915
+#: builtin/pull.c:902
 msgid "ignoring --verify-signatures for rebase"
 msgstr "yeniden temellendirme için --verify-signature yok sayılıyor"
 
-#: builtin/pull.c:972
+#: builtin/pull.c:930
+msgid ""
+"Pulling without specifying how to reconcile divergent branches is\n"
+"discouraged. You can squelch this message by running one of the following\n"
+"commands sometime before your next pull:\n"
+"\n"
+"  git config pull.rebase false  # merge (the default strategy)\n"
+"  git config pull.rebase true   # rebase\n"
+"  git config pull.ff only       # fast-forward only\n"
+"\n"
+"You can replace \"git config\" with \"git config --global\" to set a "
+"default\n"
+"preference for all repositories. You can also pass --rebase, --no-rebase,\n"
+"or --ff-only on the command line to override the configured default per\n"
+"invocation.\n"
+msgstr ""
+"Iraksak dalların nasıl uzlaştırılacağını belirtmeden çekme\n"
+"yapılması önerilmez. Bu iletiyi bir sonraki çekimden önce\n"
+"aşağıdaki komutlardan birini çalıştırarak susturabilirsiniz:\n"
+"\n"
+"\tgit config pull.rebase false  # birleştir (öntanımlı strateji)\n"
+"\tgit config pull.rebase true   # yeniden temellendir\n"
+"\tgit config pull.ff only       # yalnızca ileri sarım\n"
+"\n"
+"Ayarı global kılmak için \"git config\"i \"git config --global\" ile\n"
+"değiştirin. Öntanımlı yapılandırmayı yürütme sırasında --rebase,\n"
+"--no-rebase veya --ff-only ile geçersiz kılabilirsiniz.\n"
+
+#: builtin/pull.c:991
 msgid "Updating an unborn branch with changes added to the index."
 msgstr "İndekse eklenen değişikliklerle henüz doğmamış bir dal güncelleniyor."
 
-#: builtin/pull.c:976
+#: builtin/pull.c:995
 msgid "pull with rebase"
 msgstr "yeniden temellendirme ile çekim"
 
-#: builtin/pull.c:977
+#: builtin/pull.c:996
 msgid "please commit or stash them."
 msgstr "Lütfen onları işleyin veya zulalayın."
 
-#: builtin/pull.c:1002
+#: builtin/pull.c:1021
 #, c-format
 msgid ""
 "fetch updated the current branch head.\n"
@@ -18548,7 +18940,7 @@ msgstr ""
 "Çalışma ağacınız %s işlemesinden\n"
 "ileri sarılıyor."
 
-#: builtin/pull.c:1008
+#: builtin/pull.c:1027
 #, c-format
 msgid ""
 "Cannot fast-forward your working tree.\n"
@@ -18565,15 +18957,15 @@ msgstr ""
 "$ git reset --hard\n"
 "komutunu çalıştırın."
 
-#: builtin/pull.c:1023
+#: builtin/pull.c:1042
 msgid "Cannot merge multiple branches into empty head."
 msgstr "Boş dal ucuna birden çok dal birleştirilemez."
 
-#: builtin/pull.c:1027
+#: builtin/pull.c:1046
 msgid "Cannot rebase onto multiple branches."
 msgstr "Birden çok dala yeniden temellendirme yapılamaz."
 
-#: builtin/pull.c:1041
+#: builtin/pull.c:1067
 msgid "cannot rebase with locally recorded submodule modifications"
 msgstr ""
 "yerelde kaydı yazılmış altmodül değişiklikleriyle yeniden temellendirme "
@@ -18880,45 +19272,53 @@ msgstr "--all ve --mirror birbiriyle uyumsuz"
 msgid "push options must not have new line characters"
 msgstr "itme seçeneklerinde yeni satır karakterleri olmamalı"
 
-#: builtin/range-diff.c:8
+#: builtin/range-diff.c:9
 msgid "git range-diff [<options>] <old-base>..<old-tip> <new-base>..<new-tip>"
 msgstr ""
 "git range-diff [<seçenekler>] <old-base>..<old-tip> <new-base>..<new-tip>"
 
-#: builtin/range-diff.c:9
+#: builtin/range-diff.c:10
 msgid "git range-diff [<options>] <old-tip>...<new-tip>"
 msgstr "git range-diff [<seçenekler>] <old-tip>...<new-tip>"
 
-#: builtin/range-diff.c:10
+#: builtin/range-diff.c:11
 msgid "git range-diff [<options>] <base> <old-tip> <new-tip>"
 msgstr "git range-diff [<seçenekler>] <base> <old-tip> <new-tip>"
 
-#: builtin/range-diff.c:22
+#: builtin/range-diff.c:28
 msgid "Percentage by which creation is weighted"
 msgstr "oluşumun tartıldığı yüzde"
 
-#: builtin/range-diff.c:24
+#: builtin/range-diff.c:30
 msgid "use simple diff colors"
 msgstr "yalın diff renklerini kullan"
 
-#: builtin/range-diff.c:26
+#: builtin/range-diff.c:32
 msgid "notes"
 msgstr "notlar"
 
-#: builtin/range-diff.c:26
+#: builtin/range-diff.c:32
 msgid "passed to 'git log'"
 msgstr "'git log'a aktarıldı"
 
-#: builtin/range-diff.c:50 builtin/range-diff.c:54
+#: builtin/range-diff.c:35
+msgid "only emit output related to the first range"
+msgstr "yalnızca ilk erimle ilişkili çıktıyı yay"
+
+#: builtin/range-diff.c:37
+msgid "only emit output related to the second range"
+msgstr "yalnızca ikinci erimle ilişkili çıktıyı yay"
+
+#: builtin/range-diff.c:60 builtin/range-diff.c:64
 #, c-format
-msgid "no .. in range: '%s'"
-msgstr "erimde .. yok: '%s'"
+msgid "not a commit range: '%s'"
+msgstr "bir işleme erimi değil: '%s'"
 
-#: builtin/range-diff.c:64
+#: builtin/range-diff.c:74
 msgid "single arg format must be symmetric range"
 msgstr "tekli argüman biçimi simetrik erim olmalı"
 
-#: builtin/range-diff.c:79
+#: builtin/range-diff.c:89
 msgid "need two commit ranges"
 msgstr "iki işleme erimi gerekli"
 
@@ -19023,194 +19423,194 @@ msgstr ""
 msgid "git rebase --continue | --abort | --skip | --edit-todo"
 msgstr "git rebase --continue | --abort | --skip | --edit-todo"
 
-#: builtin/rebase.c:193 builtin/rebase.c:217 builtin/rebase.c:244
+#: builtin/rebase.c:195 builtin/rebase.c:219 builtin/rebase.c:246
 #, c-format
 msgid "unusable todo list: '%s'"
 msgstr "kullanılamaz yapılacaklar listesi: '%s'"
 
-#: builtin/rebase.c:310
+#: builtin/rebase.c:312
 #, c-format
 msgid "could not create temporary %s"
 msgstr "geçici %s oluşturulamadı"
 
-#: builtin/rebase.c:316
+#: builtin/rebase.c:318
 msgid "could not mark as interactive"
 msgstr "etkileşimli olarak imlenemedi"
 
-#: builtin/rebase.c:369
+#: builtin/rebase.c:371
 msgid "could not generate todo list"
 msgstr "yapılacaklar listesi oluşturulamadı"
 
-#: builtin/rebase.c:411
+#: builtin/rebase.c:413
 msgid "a base commit must be provided with --upstream or --onto"
 msgstr "bir taban işlemesi --upstream veya --onto ile sağlanmalıdır"
 
-#: builtin/rebase.c:480
+#: builtin/rebase.c:482
 msgid "git rebase--interactive [<options>]"
 msgstr "git rebase--interactive [<seçenekler>]"
 
-#: builtin/rebase.c:493 builtin/rebase.c:1388
+#: builtin/rebase.c:495 builtin/rebase.c:1394
 msgid "keep commits which start empty"
 msgstr "boş başlayan işlemeleri tut"
 
-#: builtin/rebase.c:497 builtin/revert.c:128
+#: builtin/rebase.c:499 builtin/revert.c:128
 msgid "allow commits with empty messages"
 msgstr "boş iletili işlemelere izin ver"
 
-#: builtin/rebase.c:499
+#: builtin/rebase.c:501
 msgid "rebase merge commits"
 msgstr "birleştirme işlemelerini yeniden temellendir"
 
-#: builtin/rebase.c:501
+#: builtin/rebase.c:503
 msgid "keep original branch points of cousins"
 msgstr "kuzenlerin orijinal dal noktalarını tut"
 
-#: builtin/rebase.c:503
+#: builtin/rebase.c:505
 msgid "move commits that begin with squash!/fixup!"
 msgstr "squash!/fixup! ile başlayan işlemeleri taşı"
 
-#: builtin/rebase.c:504
+#: builtin/rebase.c:506
 msgid "sign commits"
 msgstr "işlemeleri imzala"
 
-#: builtin/rebase.c:506 builtin/rebase.c:1327
+#: builtin/rebase.c:508 builtin/rebase.c:1333
 msgid "display a diffstat of what changed upstream"
 msgstr "üstkaynakta nelerin değiştiğini gösteren bir diffstat görüntüle"
 
-#: builtin/rebase.c:508
+#: builtin/rebase.c:510
 msgid "continue rebase"
 msgstr "yeniden temellendirmeyi sürdür"
 
-#: builtin/rebase.c:510
+#: builtin/rebase.c:512
 msgid "skip commit"
 msgstr "işlemeyi atla"
 
-#: builtin/rebase.c:511
+#: builtin/rebase.c:513
 msgid "edit the todo list"
 msgstr "yapılacaklar listesini düzenle"
 
-#: builtin/rebase.c:513
+#: builtin/rebase.c:515
 msgid "show the current patch"
 msgstr "geçerli yamayı göster"
 
-#: builtin/rebase.c:516
+#: builtin/rebase.c:518
 msgid "shorten commit ids in the todo list"
 msgstr "yapılacaklar listesindeki işleme numaralarını kısalt"
 
-#: builtin/rebase.c:518
+#: builtin/rebase.c:520
 msgid "expand commit ids in the todo list"
 msgstr "yapılacaklar listesindeki işleme numaralarını genişlet"
 
-#: builtin/rebase.c:520
+#: builtin/rebase.c:522
 msgid "check the todo list"
 msgstr "yapılacaklar listesini denetle"
 
-#: builtin/rebase.c:522
+#: builtin/rebase.c:524
 msgid "rearrange fixup/squash lines"
 msgstr "fixup/squash satırlarını yeniden düzenle"
 
-#: builtin/rebase.c:524
+#: builtin/rebase.c:526
 msgid "insert exec commands in todo list"
 msgstr "yapılacaklar listesine 'exec' komutları ekle"
 
-#: builtin/rebase.c:525
+#: builtin/rebase.c:527
 msgid "onto"
 msgstr "üzerine"
 
-#: builtin/rebase.c:528
+#: builtin/rebase.c:530
 msgid "restrict-revision"
 msgstr "restrict-revision"
 
-#: builtin/rebase.c:528
+#: builtin/rebase.c:530
 msgid "restrict revision"
 msgstr "revizyonu sınırla"
 
-#: builtin/rebase.c:530
+#: builtin/rebase.c:532
 msgid "squash-onto"
 msgstr "squash-onto"
 
-#: builtin/rebase.c:531
+#: builtin/rebase.c:533
 msgid "squash onto"
 msgstr "tıkıştır"
 
-#: builtin/rebase.c:533
+#: builtin/rebase.c:535
 msgid "the upstream commit"
 msgstr "üstkaynak işlemesi"
 
-#: builtin/rebase.c:535
+#: builtin/rebase.c:537
 msgid "head-name"
 msgstr "head-name"
 
-#: builtin/rebase.c:535
+#: builtin/rebase.c:537
 msgid "head name"
 msgstr "dal ucu adı"
 
-#: builtin/rebase.c:540
+#: builtin/rebase.c:542
 msgid "rebase strategy"
 msgstr "yeniden temellendirme stratejisi"
 
-#: builtin/rebase.c:541
+#: builtin/rebase.c:543
 msgid "strategy-opts"
 msgstr "strategy-opts"
 
-#: builtin/rebase.c:542
+#: builtin/rebase.c:544
 msgid "strategy options"
 msgstr "strateji seçenekleri"
 
-#: builtin/rebase.c:543
+#: builtin/rebase.c:545
 msgid "switch-to"
 msgstr "switch-to"
 
-#: builtin/rebase.c:544
+#: builtin/rebase.c:546
 msgid "the branch or commit to checkout"
 msgstr "çıkış yapılacak dal veya işleme"
 
-#: builtin/rebase.c:545
+#: builtin/rebase.c:547
 msgid "onto-name"
 msgstr "onto-name"
 
-#: builtin/rebase.c:545
+#: builtin/rebase.c:547
 msgid "onto name"
 msgstr "'onto' adı:"
 
-#: builtin/rebase.c:546
+#: builtin/rebase.c:548
 msgid "cmd"
 msgstr "komut"
 
-#: builtin/rebase.c:546
+#: builtin/rebase.c:548
 msgid "the command to run"
 msgstr "çalıştırılacak komut"
 
-#: builtin/rebase.c:549 builtin/rebase.c:1421
+#: builtin/rebase.c:551 builtin/rebase.c:1427
 msgid "automatically re-schedule any `exec` that fails"
 msgstr "başarısız olan her 'exec'i kendiliğinden yeniden zamanla"
 
-#: builtin/rebase.c:565
+#: builtin/rebase.c:567
 msgid "--[no-]rebase-cousins has no effect without --rebase-merges"
 msgstr ""
 "--[no-]rebase-cousins seçeneğinin --rebase-merges olmadan hiçbir etkisi yok"
 
-#: builtin/rebase.c:581
+#: builtin/rebase.c:583
 #, c-format
 msgid "%s requires the merge backend"
 msgstr "%s birleştirme arka ucunu gerektiriyor"
 
-#: builtin/rebase.c:624
+#: builtin/rebase.c:626
 #, c-format
 msgid "could not get 'onto': '%s'"
 msgstr "'onto' alınamadı: '%s'"
 
-#: builtin/rebase.c:641
+#: builtin/rebase.c:643
 #, c-format
 msgid "invalid orig-head: '%s'"
 msgstr "geçersiz orig-head: '%s'"
 
-#: builtin/rebase.c:666
+#: builtin/rebase.c:668
 #, c-format
 msgid "ignoring invalid allow_rerere_autoupdate: '%s'"
 msgstr "geçersiz allow_rerere_autoupdate yok sayılıyor: '%s'"
 
-#: builtin/rebase.c:811 git-rebase--preserve-merges.sh:81
+#: builtin/rebase.c:813 git-rebase--preserve-merges.sh:81
 msgid ""
 "Resolve all conflicts manually, mark them as resolved with\n"
 "\"git add/rm <conflicted_files>\", then run \"git rebase --continue\".\n"
@@ -19224,7 +19624,7 @@ msgstr ""
 "İptal edip \"git rebase\" öncesine geri dönmek için \"git rebase --abort\"\n"
 "çalıştırın."
 
-#: builtin/rebase.c:894
+#: builtin/rebase.c:896
 #, c-format
 msgid ""
 "\n"
@@ -19243,7 +19643,7 @@ msgstr ""
 "\n"
 "Bunun sonucu olarak git onları yeniden temellendiremiyor."
 
-#: builtin/rebase.c:1220
+#: builtin/rebase.c:1227
 #, c-format
 msgid ""
 "unrecognized empty type '%s'; valid values are \"drop\", \"keep\", and \"ask"
@@ -19251,7 +19651,7 @@ msgid ""
 msgstr ""
 "tanımlanamayan boş tür '%s'; geçerli türler: \"drop\", \"keep\" ve \"ask\""
 
-#: builtin/rebase.c:1238
+#: builtin/rebase.c:1245
 #, c-format
 msgid ""
 "%s\n"
@@ -19268,7 +19668,7 @@ msgstr ""
 "\tgit rebase '<dal>'\n"
 "\n"
 
-#: builtin/rebase.c:1254
+#: builtin/rebase.c:1261
 #, c-format
 msgid ""
 "If you wish to set tracking information for this branch you can do so with:\n"
@@ -19281,153 +19681,153 @@ msgstr ""
 "\tgit branch --set-upstream-to=%s/<dal> %s\n"
 "\n"
 
-#: builtin/rebase.c:1284
+#: builtin/rebase.c:1291
 msgid "exec commands cannot contain newlines"
 msgstr "'exec' komutları yenisatırlar içeremez"
 
-#: builtin/rebase.c:1288
+#: builtin/rebase.c:1295
 msgid "empty exec command"
 msgstr "boş 'exec' komutu"
 
-#: builtin/rebase.c:1318
+#: builtin/rebase.c:1324
 msgid "rebase onto given branch instead of upstream"
 msgstr "üstkaynak yerine verilen dalın üzerine yeniden temellendir"
 
-#: builtin/rebase.c:1320
+#: builtin/rebase.c:1326
 msgid "use the merge-base of upstream and branch as the current base"
 msgstr "üstkaynağın birleştirme temelini ve dalını geçerli temel olarak kullan"
 
-#: builtin/rebase.c:1322
+#: builtin/rebase.c:1328
 msgid "allow pre-rebase hook to run"
 msgstr "pre-rebase kancasının çalışmasına izin ver"
 
-#: builtin/rebase.c:1324
+#: builtin/rebase.c:1330
 msgid "be quiet. implies --no-stat"
 msgstr "sessiz ol (--no-stat ima eder)"
 
-#: builtin/rebase.c:1330
+#: builtin/rebase.c:1336
 msgid "do not show diffstat of what changed upstream"
 msgstr "üstkaynakta nelerin değiştiğini gösteren diffstat gösterme"
 
-#: builtin/rebase.c:1333
+#: builtin/rebase.c:1339
 msgid "add a Signed-off-by trailer to each commit"
 msgstr "her işlemeye bir Signed-off-by artbilgisi ekle"
 
-#: builtin/rebase.c:1336
+#: builtin/rebase.c:1342
 msgid "make committer date match author date"
 msgstr "işleyici tarihi ile yazar tarihini aynı yap"
 
-#: builtin/rebase.c:1338
+#: builtin/rebase.c:1344
 msgid "ignore author date and use current date"
 msgstr "yazar tarihini yok say ve geçerli tarihi kullan"
 
-#: builtin/rebase.c:1340
+#: builtin/rebase.c:1346
 msgid "synonym of --reset-author-date"
 msgstr "--reset-author-date eşanlamlısı"
 
-#: builtin/rebase.c:1342 builtin/rebase.c:1346
+#: builtin/rebase.c:1348 builtin/rebase.c:1352
 msgid "passed to 'git apply'"
 msgstr "'git apply'a aktarıldı"
 
-#: builtin/rebase.c:1344
+#: builtin/rebase.c:1350
 msgid "ignore changes in whitespace"
 msgstr "boşluk değişikliklerini yok say"
 
-#: builtin/rebase.c:1348 builtin/rebase.c:1351
+#: builtin/rebase.c:1354 builtin/rebase.c:1357
 msgid "cherry-pick all commits, even if unchanged"
 msgstr "değiştirilmemiş olsa bile tüm işlemeleri seç-al yap"
 
-#: builtin/rebase.c:1353
+#: builtin/rebase.c:1359
 msgid "continue"
 msgstr "sürdür"
 
-#: builtin/rebase.c:1356
+#: builtin/rebase.c:1362
 msgid "skip current patch and continue"
 msgstr "geçerli yamayı atla ve sürdür"
 
-#: builtin/rebase.c:1358
+#: builtin/rebase.c:1364
 msgid "abort and check out the original branch"
 msgstr "iptal et ve orijinal dalı çıkış yap"
 
-#: builtin/rebase.c:1361
+#: builtin/rebase.c:1367
 msgid "abort but keep HEAD where it is"
 msgstr "iptal et; ancak HEAD'i olduğu yerde bırak"
 
-#: builtin/rebase.c:1362
+#: builtin/rebase.c:1368
 msgid "edit the todo list during an interactive rebase"
 msgstr ""
 "bir etkileşimli yeniden temellendirme sırasında yapılacaklar listesini "
 "düzenle"
 
-#: builtin/rebase.c:1365
+#: builtin/rebase.c:1371
 msgid "show the patch file being applied or merged"
 msgstr "yama dosyası uygulanırken veya birleştirilirken göster"
 
-#: builtin/rebase.c:1368
+#: builtin/rebase.c:1374
 msgid "use apply strategies to rebase"
 msgstr "yeniden temellendirmek için \"apply\" stratejilerini kullan"
 
-#: builtin/rebase.c:1372
+#: builtin/rebase.c:1378
 msgid "use merging strategies to rebase"
 msgstr "yeniden temellendirmek için birleştirme stratejilerini kullan"
 
-#: builtin/rebase.c:1376
+#: builtin/rebase.c:1382
 msgid "let the user edit the list of commits to rebase"
 msgstr ""
 "yeniden temellendirilecek işlemelerin listesini kullanıcının düzenlemesine "
 "izin ver"
 
-#: builtin/rebase.c:1380
+#: builtin/rebase.c:1386
 msgid "(DEPRECATED) try to recreate merges instead of ignoring them"
 msgstr ""
 "(KULLANILMAMALI) birleştirmeleri yok saymak yerine onları yeniden "
 "oluşturmaya çalış"
 
-#: builtin/rebase.c:1385
+#: builtin/rebase.c:1391
 msgid "how to handle commits that become empty"
 msgstr "boşalan işlemelerin nasıl ele alınacağı"
 
-#: builtin/rebase.c:1392
+#: builtin/rebase.c:1398
 msgid "move commits that begin with squash!/fixup! under -i"
 msgstr "-i altındaki squash!/fixup! ile başlayan işlemeleri taşı"
 
-#: builtin/rebase.c:1399
+#: builtin/rebase.c:1405
 msgid "add exec lines after each commit of the editable list"
 msgstr "düzenlenebilir listenin her işlemesinden sonra exec satırları ekle"
 
-#: builtin/rebase.c:1403
+#: builtin/rebase.c:1409
 msgid "allow rebasing commits with empty messages"
 msgstr "boş iletili işlemelerin yeniden temellendirilmesine izin ver"
 
-#: builtin/rebase.c:1407
+#: builtin/rebase.c:1413
 msgid "try to rebase merges instead of skipping them"
 msgstr "birleştirmeleri atlamak yerine onları yeniden temellendirmeyi dene"
 
-#: builtin/rebase.c:1410
+#: builtin/rebase.c:1416
 msgid "use 'merge-base --fork-point' to refine upstream"
 msgstr "üstkaynağı arılaştırmak için 'merge-base --fork-point' kullan"
 
-#: builtin/rebase.c:1412
+#: builtin/rebase.c:1418
 msgid "use the given merge strategy"
 msgstr "verilen birleştirme stratejisini kullan"
 
-#: builtin/rebase.c:1414 builtin/revert.c:115
+#: builtin/rebase.c:1420 builtin/revert.c:115
 msgid "option"
 msgstr "seçenek"
 
-#: builtin/rebase.c:1415
+#: builtin/rebase.c:1421
 msgid "pass the argument through to the merge strategy"
 msgstr "argümanı birleştirme stratejisine aktar"
 
-#: builtin/rebase.c:1418
+#: builtin/rebase.c:1424
 msgid "rebase all reachable commits up to the root(s)"
 msgstr "ulaşılabilir tüm işlemeleri kök(ler)e kadar yeniden temellendir"
 
-#: builtin/rebase.c:1423
+#: builtin/rebase.c:1429
 msgid "apply all changes, even those already present upstream"
 msgstr "tüm değişiklikleri uygula, halihazırda üstkaynakta olanları bile"
 
-#: builtin/rebase.c:1440
+#: builtin/rebase.c:1446
 msgid ""
 "the rebase.useBuiltin support has been removed!\n"
 "See its entry in 'git help config' for details."
@@ -19435,43 +19835,43 @@ msgstr ""
 "'rebase.useBuiltin' desteği kaldırıldı!\n"
 "Ayrıntılar için 'git help config' içindeki girdisine bakın."
 
-#: builtin/rebase.c:1446
+#: builtin/rebase.c:1452
 msgid "It looks like 'git am' is in progress. Cannot rebase."
 msgstr "Görünüşe göre 'git am' sürmekte. Yeniden temellendirilemiyor."
 
-#: builtin/rebase.c:1487
+#: builtin/rebase.c:1493
 msgid ""
 "git rebase --preserve-merges is deprecated. Use --rebase-merges instead."
 msgstr ""
 "'git rebase --preserve-merges' artık eski. Yerine --rebase-merges kullanın."
 
-#: builtin/rebase.c:1492
+#: builtin/rebase.c:1498
 msgid "cannot combine '--keep-base' with '--onto'"
 msgstr "--keep-base ile --onto birlikte kullanılamaz"
 
-#: builtin/rebase.c:1494
+#: builtin/rebase.c:1500
 msgid "cannot combine '--keep-base' with '--root'"
 msgstr "--keep-base ile --root birlikte kullanılamaz"
 
-#: builtin/rebase.c:1498
+#: builtin/rebase.c:1504
 msgid "cannot combine '--root' with '--fork-point'"
 msgstr "--root ile --fork-point birlikte kullanılamaz"
 
-#: builtin/rebase.c:1501
+#: builtin/rebase.c:1507
 msgid "No rebase in progress?"
 msgstr "Sürmekte olan bir yeniden temellendirme yok"
 
-#: builtin/rebase.c:1505
+#: builtin/rebase.c:1511
 msgid "The --edit-todo action can only be used during interactive rebase."
 msgstr ""
 "--edit-todo seçeneği yalnızca etkileşimli yeniden temellendirme sırasında "
 "kullanılabilir."
 
-#: builtin/rebase.c:1528 t/helper/test-fast-rebase.c:123
+#: builtin/rebase.c:1534 t/helper/test-fast-rebase.c:123
 msgid "Cannot read HEAD"
 msgstr "HEAD okunamıyor"
 
-#: builtin/rebase.c:1540
+#: builtin/rebase.c:1546
 msgid ""
 "You must edit all merge conflicts and then\n"
 "mark them as resolved using git add"
@@ -19479,16 +19879,16 @@ msgstr ""
 "Önce tüm birleştirme çakışmalarını düzenlemeli ve onları\n"
 "git add kullanarak tamamlandı olarak imlemelisiniz."
 
-#: builtin/rebase.c:1559
+#: builtin/rebase.c:1565
 msgid "could not discard worktree changes"
 msgstr "çalışma ağacı değişiklikleri atılamadı"
 
-#: builtin/rebase.c:1578
+#: builtin/rebase.c:1584
 #, c-format
 msgid "could not move back to %s"
 msgstr "%s konumuna geri taşınamadı"
 
-#: builtin/rebase.c:1624
+#: builtin/rebase.c:1630
 #, c-format
 msgid ""
 "It seems that there is already a %s directory, and\n"
@@ -19509,134 +19909,134 @@ msgstr ""
 "yapın ve beni yeniden çalıştırın. Ben sizi belki orada hâlâ değerli bir\n"
 "şeyler olabilir diye durdurdum.\n"
 
-#: builtin/rebase.c:1652
+#: builtin/rebase.c:1658
 msgid "switch `C' expects a numerical value"
 msgstr "'C' anahtarı sayısal bir değer bekliyor"
 
-#: builtin/rebase.c:1694
+#: builtin/rebase.c:1700
 #, c-format
 msgid "Unknown mode: %s"
 msgstr "Bilinmeyen kip: %s"
 
-#: builtin/rebase.c:1733
+#: builtin/rebase.c:1739
 msgid "--strategy requires --merge or --interactive"
 msgstr "--strategy, --merge veya --interactive gerektiriyor"
 
-#: builtin/rebase.c:1763
+#: builtin/rebase.c:1769
 msgid "cannot combine apply options with merge options"
 msgstr "\"apply\" seçenekleri \"merge\" seçenekleriyle birlikte kullanılamıyor"
 
-#: builtin/rebase.c:1776
+#: builtin/rebase.c:1782
 #, c-format
 msgid "Unknown rebase backend: %s"
 msgstr "Bilinmeyen yeniden temellendirme arka ucu: %s"
 
-#: builtin/rebase.c:1806
+#: builtin/rebase.c:1812
 msgid "--reschedule-failed-exec requires --exec or --interactive"
 msgstr "--reschedule-failed-exec, --exec veya --interactive gerektiriyor"
 
-#: builtin/rebase.c:1826
+#: builtin/rebase.c:1832
 msgid "cannot combine '--preserve-merges' with '--rebase-merges'"
 msgstr "--preserve-merges ile --rebase-merges birlikte kullanılamıyor"
 
-#: builtin/rebase.c:1830
+#: builtin/rebase.c:1836
 msgid ""
 "error: cannot combine '--preserve-merges' with '--reschedule-failed-exec'"
 msgstr ""
 "hata: --preserve-merges ile --reschedule-failed-exec birlikte kullanılamıyor"
 
-#: builtin/rebase.c:1854
+#: builtin/rebase.c:1860
 #, c-format
 msgid "invalid upstream '%s'"
 msgstr "geçersiz üstkaynak '%s'"
 
-#: builtin/rebase.c:1860
+#: builtin/rebase.c:1866
 msgid "Could not create new root commit"
 msgstr "Yeni kök işleme oluşturulamadı"
 
-#: builtin/rebase.c:1886
+#: builtin/rebase.c:1892
 #, c-format
 msgid "'%s': need exactly one merge base with branch"
 msgstr "'%s': tam olarak dallı bir birleştirme temeli gerekli"
 
-#: builtin/rebase.c:1889
+#: builtin/rebase.c:1895
 #, c-format
 msgid "'%s': need exactly one merge base"
 msgstr "'%s': tam olarak bir birleştirme temeli gerekiyor"
 
-#: builtin/rebase.c:1897
+#: builtin/rebase.c:1903
 #, c-format
 msgid "Does not point to a valid commit '%s'"
 msgstr "'%s' geçerli bir işlemeye işaret etmiyor"
 
-#: builtin/rebase.c:1923
+#: builtin/rebase.c:1931
 #, c-format
 msgid "fatal: no such branch/commit '%s'"
 msgstr "onulmaz: böyle bir dal/işleme yok: '%s'"
 
-#: builtin/rebase.c:1931 builtin/submodule--helper.c:40
+#: builtin/rebase.c:1939 builtin/submodule--helper.c:40
 #: builtin/submodule--helper.c:2414
 #, c-format
 msgid "No such ref: %s"
 msgstr "Böyle bir başvuru yok: %s"
 
-#: builtin/rebase.c:1942
+#: builtin/rebase.c:1950
 msgid "Could not resolve HEAD to a revision"
 msgstr "HEAD bir revizyona çözülemedi"
 
-#: builtin/rebase.c:1963
+#: builtin/rebase.c:1971
 msgid "Please commit or stash them."
 msgstr "Lütfen onları işleyin veya zulalayın."
 
-#: builtin/rebase.c:1999
+#: builtin/rebase.c:2007
 #, c-format
 msgid "could not switch to %s"
 msgstr "şuraya geçilemedi: %s"
 
-#: builtin/rebase.c:2010
+#: builtin/rebase.c:2018
 msgid "HEAD is up to date."
 msgstr "HEAD güncel."
 
-#: builtin/rebase.c:2012
+#: builtin/rebase.c:2020
 #, c-format
 msgid "Current branch %s is up to date.\n"
 msgstr "Geçerli dal %s güncel.\n"
 
-#: builtin/rebase.c:2020
+#: builtin/rebase.c:2028
 msgid "HEAD is up to date, rebase forced."
 msgstr "HEAD güncel, yeniden temellendirme zorla yapıldı."
 
-#: builtin/rebase.c:2022
+#: builtin/rebase.c:2030
 #, c-format
 msgid "Current branch %s is up to date, rebase forced.\n"
 msgstr "Geçerli dal %s güncel, yeniden temellendirme zorla yapıldı.\n"
 
-#: builtin/rebase.c:2030
+#: builtin/rebase.c:2038
 msgid "The pre-rebase hook refused to rebase."
 msgstr "'pre-rebase' kancası yeniden temellendirmeyi reddetti."
 
-#: builtin/rebase.c:2037
+#: builtin/rebase.c:2045
 #, c-format
 msgid "Changes to %s:\n"
 msgstr "%s için olan değişiklikler:\n"
 
-#: builtin/rebase.c:2040
+#: builtin/rebase.c:2048
 #, c-format
 msgid "Changes from %s to %s:\n"
 msgstr "%s -> %s değişiklikleri:\n"
 
-#: builtin/rebase.c:2065
+#: builtin/rebase.c:2073
 #, c-format
 msgid "First, rewinding head to replay your work on top of it...\n"
 msgstr ""
 "Öncelikle dal ucu üzerindeki çalışmanızı yeniden oynatmak için geri "
 "sarılıyor...\n"
 
-#: builtin/rebase.c:2074
+#: builtin/rebase.c:2082
 msgid "Could not detach HEAD"
 msgstr "HEAD ayrılamadı"
 
-#: builtin/rebase.c:2083
+#: builtin/rebase.c:2091
 #, c-format
 msgid "Fast-forwarded %s to %s.\n"
 msgstr "%s, %s konumuna ileri sarıldı.\n"
@@ -19729,36 +20129,36 @@ msgstr "git reflog exists <başvuru>"
 msgid "'%s' is not a valid timestamp"
 msgstr "'%s' geçerli bir zaman damgası değil"
 
-#: builtin/reflog.c:606
+#: builtin/reflog.c:609
 #, c-format
 msgid "Marking reachable objects..."
 msgstr "Ulaşılabilir nesneler imleniyor..."
 
-#: builtin/reflog.c:644
+#: builtin/reflog.c:647
 #, c-format
 msgid "%s points nowhere!"
 msgstr "%s hiçbir yere işaret etmiyor!"
 
-#: builtin/reflog.c:696
+#: builtin/reflog.c:699
 msgid "no reflog specified to delete"
 msgstr "silmek için bir başvuru günlüğü belirtilmedi"
 
-#: builtin/reflog.c:705
+#: builtin/reflog.c:708
 #, c-format
 msgid "not a reflog: %s"
 msgstr "bir başvuru günlüğü değil: %s"
 
-#: builtin/reflog.c:710
+#: builtin/reflog.c:713
 #, c-format
 msgid "no reflog for '%s'"
 msgstr "'%s' için başvuru günlüğü yok"
 
-#: builtin/reflog.c:756
+#: builtin/reflog.c:759
 #, c-format
 msgid "invalid ref format: %s"
 msgstr "geçersiz başvuru biçimi: %s"
 
-#: builtin/reflog.c:765
+#: builtin/reflog.c:768
 msgid "git reflog [ show | expire | delete | exists ]"
 msgstr "git reflog [ show | expire | delete | exists ]"
 
@@ -20276,11 +20676,11 @@ msgstr "Böyle bir URL bulunamadı: %s"
 msgid "Will not delete all non-push URLs"
 msgstr "Tüm itme olmayan URL'ler silinmeyecek"
 
-#: builtin/repack.c:25
+#: builtin/repack.c:26
 msgid "git repack [<options>]"
 msgstr "git repack [<seçenekler>]"
 
-#: builtin/repack.c:30
+#: builtin/repack.c:31
 msgid ""
 "Incremental repacks are incompatible with bitmap indexes.  Use\n"
 "--no-write-bitmap-index or disable the pack.writebitmaps configuration."
@@ -20289,117 +20689,117 @@ msgstr ""
 "--no-write-bitmap-index kullanın veya pack.writebitmaps yapılandırmasını\n"
 "devre dışı bırakın."
 
-#: builtin/repack.c:197
+#: builtin/repack.c:198
 msgid "could not start pack-objects to repack promisor objects"
 msgstr "vaatçi nesneleri yeniden paketleme için pack-objects başlatılamadı"
 
-#: builtin/repack.c:268 builtin/repack.c:447
+#: builtin/repack.c:270 builtin/repack.c:446
 msgid "repack: Expecting full hex object ID lines only from pack-objects."
 msgstr ""
 "repack: Onaltılı tam nesne no satırları yalnızca pack-objects'ten bekleniyor."
 
-#: builtin/repack.c:295
+#: builtin/repack.c:294
 msgid "could not finish pack-objects to repack promisor objects"
 msgstr "vaatçi nesneleri yeniden paketleme için pack-objects bitirilemedi"
 
-#: builtin/repack.c:323
+#: builtin/repack.c:322
 msgid "pack everything in a single pack"
 msgstr "her şeyi tek bir pakete sığdır"
 
-#: builtin/repack.c:325
+#: builtin/repack.c:324
 msgid "same as -a, and turn unreachable objects loose"
 msgstr "-a ile aynı ve ulaşılamayan nesneleri serbest bırakır"
 
-#: builtin/repack.c:328
+#: builtin/repack.c:327
 msgid "remove redundant packs, and run git-prune-packed"
 msgstr "gereksiz paketleri kaldır ve 'git prune-packed' çalıştır"
 
-#: builtin/repack.c:330
+#: builtin/repack.c:329
 msgid "pass --no-reuse-delta to git-pack-objects"
 msgstr "'git-pack-objects'e --no-reuse-delta geçir"
 
-#: builtin/repack.c:332
+#: builtin/repack.c:331
 msgid "pass --no-reuse-object to git-pack-objects"
 msgstr "'git-pack-objects'e --no-reuse-object geçir"
 
-#: builtin/repack.c:334
+#: builtin/repack.c:333
 msgid "do not run git-update-server-info"
 msgstr "'git-update-server-info' çalıştırma"
 
-#: builtin/repack.c:337
+#: builtin/repack.c:336
 msgid "pass --local to git-pack-objects"
 msgstr "--local'ı 'git-pack-objects'e geçir"
 
-#: builtin/repack.c:339
+#: builtin/repack.c:338
 msgid "write bitmap index"
 msgstr "biteşlem indeksi yaz"
 
-#: builtin/repack.c:341
+#: builtin/repack.c:340
 msgid "pass --delta-islands to git-pack-objects"
 msgstr "--delta-islands'ı 'git-pack-objects'e geçir"
 
-#: builtin/repack.c:342
+#: builtin/repack.c:341
 msgid "approxidate"
 msgstr "yaklaşık tarih"
 
-#: builtin/repack.c:343
+#: builtin/repack.c:342
 msgid "with -A, do not loosen objects older than this"
 msgstr "-A ile, bundan daha eski nesneleri bırakma"
 
-#: builtin/repack.c:345
+#: builtin/repack.c:344
 msgid "with -a, repack unreachable objects"
 msgstr "-a ile, ulaşılamayan nesneleri yeniden paketle"
 
-#: builtin/repack.c:347
+#: builtin/repack.c:346
 msgid "size of the window used for delta compression"
 msgstr "delta sıkıştırması için kullanılan pencerenin boyutu"
 
-#: builtin/repack.c:348 builtin/repack.c:354
+#: builtin/repack.c:347 builtin/repack.c:353
 msgid "bytes"
 msgstr "baytlar"
 
-#: builtin/repack.c:349
+#: builtin/repack.c:348
 msgid "same as the above, but limit memory size instead of entries count"
 msgstr "yukarıdakiyle aynı; ancak girdi sayısı yerine bellek boyutunu kısıtla"
 
-#: builtin/repack.c:351
+#: builtin/repack.c:350
 msgid "limits the maximum delta depth"
 msgstr "olabilecek en büyük delta derinliğini kısıtlar"
 
-#: builtin/repack.c:353
+#: builtin/repack.c:352
 msgid "limits the maximum number of threads"
 msgstr "iş parçacıklarının olabilecek en büyük sayısını kısıtlar"
 
-#: builtin/repack.c:355
+#: builtin/repack.c:354
 msgid "maximum size of each packfile"
 msgstr "her paket dosyasının olabilecek en büyük boyutu"
 
-#: builtin/repack.c:357
+#: builtin/repack.c:356
 msgid "repack objects in packs marked with .keep"
 msgstr "nesneleri .keep ile imlenmiş paketlerde yeniden paketle"
 
-#: builtin/repack.c:359
+#: builtin/repack.c:358
 msgid "do not repack this pack"
 msgstr "bu paketi yeniden paketleme"
 
-#: builtin/repack.c:369
+#: builtin/repack.c:368
 msgid "cannot delete packs in a precious-objects repo"
 msgstr "bir precious-objects deposundaki paketler silinemiyor"
 
-#: builtin/repack.c:373
+#: builtin/repack.c:372
 msgid "--keep-unreachable and -A are incompatible"
 msgstr "--keep-unreachable ve -A birbiriyle uyumsuz"
 
-#: builtin/repack.c:456
+#: builtin/repack.c:455
 msgid "Nothing new to pack."
 msgstr "Paketlenecek yeni bir şey yok."
 
-#: builtin/repack.c:486
+#: builtin/repack.c:485
 #, c-format
 msgid "missing required file: %s"
 msgstr "gereken dosya eksik: %s"
 
-#: builtin/repack.c:488
+#: builtin/repack.c:487
 #, c-format
 msgid "could not unlink: %s"
 msgstr "bağlantı kaldırılamadı: %s"
@@ -20732,8 +21132,8 @@ msgstr "HEAD şimdi şurada: %s"
 msgid "Cannot do a %s reset in the middle of a merge."
 msgstr "Bir birleştirmenin ortasında %s sıfırlaması yapılamıyor."
 
-#: builtin/reset.c:295 builtin/stash.c:520 builtin/stash.c:594
-#: builtin/stash.c:618
+#: builtin/reset.c:295 builtin/stash.c:587 builtin/stash.c:661
+#: builtin/stash.c:685
 msgid "be quiet, only report errors"
 msgstr "sessiz ol, yalnızca hataları bildir"
 
@@ -20818,19 +21218,19 @@ msgstr "İndeks dosyası '%s' revizyonuna sıfırlanamadı."
 msgid "Could not write new index file."
 msgstr "Yeni indeks dosyası yazılamadı."
 
-#: builtin/rev-list.c:499
+#: builtin/rev-list.c:534
 msgid "cannot combine --exclude-promisor-objects and --missing"
 msgstr "--exclude-promisor-objects ve --missing birlikte kullanılamıyor"
 
-#: builtin/rev-list.c:560
+#: builtin/rev-list.c:595
 msgid "object filtering requires --objects"
 msgstr "nesne süzme --objects gerektiriyor"
 
-#: builtin/rev-list.c:610
+#: builtin/rev-list.c:651
 msgid "rev-list does not support display of notes"
 msgstr "rev-list not görüntülemesini desteklemiyor"
 
-#: builtin/rev-list.c:615
+#: builtin/rev-list.c:656
 msgid "marked counting is incompatible with --objects"
 msgstr "imlenmiş sayım, --objects ile uyumsuz"
 
@@ -21072,52 +21472,52 @@ msgstr "git shortlog [<seçenekler>] [<revizyon-erimi>] [[--] <yol>...]"
 msgid "git log --pretty=short | git shortlog [<options>]"
 msgstr "git log --pretty=short | git shortlog [<seçenekler>]"
 
-#: builtin/shortlog.c:135
+#: builtin/shortlog.c:123
 msgid "using multiple --group options with stdin is not supported"
 msgstr "stdin ile çoklu --group seçenekleri kullanımı desteklenmiyor"
 
-#: builtin/shortlog.c:145
+#: builtin/shortlog.c:133
 msgid "using --group=trailer with stdin is not supported"
 msgstr "stdin ile --group=trailer kullanımı desteklenmiyor"
 
-#: builtin/shortlog.c:335
+#: builtin/shortlog.c:323
 #, c-format
 msgid "unknown group type: %s"
 msgstr "bilinmeyen grup türü: %s"
 
-#: builtin/shortlog.c:363
-msgid "Group by committer rather than author"
-msgstr "Yazar yerine işleyici ile grupla"
+#: builtin/shortlog.c:351
+msgid "group by committer rather than author"
+msgstr "yazar yerine işleyici ile grupla"
 
-#: builtin/shortlog.c:366
+#: builtin/shortlog.c:354
 msgid "sort output according to the number of commits per author"
 msgstr "çıktıyı yazar başına olan işleme sayısına göre sırala"
 
-#: builtin/shortlog.c:368
-msgid "Suppress commit descriptions, only provides commit count"
-msgstr "İşleme açıklamalarını gizle, yalnızca işleme sayısını ver"
+#: builtin/shortlog.c:356
+msgid "suppress commit descriptions, only provides commit count"
+msgstr "işleme açıklamalarını gizle, yalnızca işleme sayısını ver"
 
-#: builtin/shortlog.c:370
-msgid "Show the email address of each author"
-msgstr "Her yazarın e-posta adresini göster"
+#: builtin/shortlog.c:358
+msgid "show the email address of each author"
+msgstr "her yazarın e-posta adresini göster"
 
-#: builtin/shortlog.c:371
+#: builtin/shortlog.c:359
 msgid "<w>[,<i1>[,<i2>]]"
 msgstr "<w>[,<i1>[,<i2>]]"
 
-#: builtin/shortlog.c:372
-msgid "Linewrap output"
-msgstr "Ã\87ıktı satırlarını kaydır"
+#: builtin/shortlog.c:360
+msgid "linewrap output"
+msgstr "çıktıyı kaydır"
 
-#: builtin/shortlog.c:374
+#: builtin/shortlog.c:362
 msgid "field"
 msgstr "alan"
 
-#: builtin/shortlog.c:375
-msgid "Group by field"
-msgstr "Alan ile grupla"
+#: builtin/shortlog.c:363
+msgid "group by field"
+msgstr "alan ile grupla"
 
-#: builtin/shortlog.c:403
+#: builtin/shortlog.c:391
 msgid "too many arguments given outside repository"
 msgstr "depo dışında çok fazla argüman verildi"
 
@@ -21312,71 +21712,71 @@ msgstr "stdin'den yerel bir depoda olmayan başvuruları göster"
 msgid "git sparse-checkout (init|list|set|add|reapply|disable) <options>"
 msgstr "git sparse-checkout (init|list|set|add|reapply|disable) <seçenekler>"
 
-#: builtin/sparse-checkout.c:50
+#: builtin/sparse-checkout.c:45
 msgid "git sparse-checkout list"
 msgstr "git sparse-checkout list"
 
-#: builtin/sparse-checkout.c:76
+#: builtin/sparse-checkout.c:71
 msgid "this worktree is not sparse (sparse-checkout file may not exist)"
 msgstr ""
 "bu çalışma ağacı aralıklı değil (sparse-checkout dosyası var olmayabilir)"
 
-#: builtin/sparse-checkout.c:228
+#: builtin/sparse-checkout.c:223
 msgid "failed to create directory for sparse-checkout file"
 msgstr "aralıklı çıkış dosyası için dizin oluşturulamadı"
 
-#: builtin/sparse-checkout.c:269
+#: builtin/sparse-checkout.c:264
 msgid "unable to upgrade repository format to enable worktreeConfig"
 msgstr "depo biçimi worktreeConfig etkinleştirmesi için yükseltilemiyor"
 
-#: builtin/sparse-checkout.c:271
+#: builtin/sparse-checkout.c:266
 msgid "failed to set extensions.worktreeConfig setting"
 msgstr "extensions.worktreeConfig yapılandırması ayarlanamadı"
 
-#: builtin/sparse-checkout.c:288
+#: builtin/sparse-checkout.c:283
 msgid "git sparse-checkout init [--cone]"
 msgstr "git sparse-checkout init [--cone]"
 
-#: builtin/sparse-checkout.c:307
+#: builtin/sparse-checkout.c:302
 msgid "initialize the sparse-checkout in cone mode"
 msgstr "aralıklı çıkışı koni kipinde ilklendir"
 
-#: builtin/sparse-checkout.c:344
+#: builtin/sparse-checkout.c:339
 #, c-format
 msgid "failed to open '%s'"
 msgstr "'%s' açılamadı"
 
-#: builtin/sparse-checkout.c:401
+#: builtin/sparse-checkout.c:396
 #, c-format
 msgid "could not normalize path %s"
 msgstr "'%s' yolu olağanlaştırılamadı"
 
-#: builtin/sparse-checkout.c:413
+#: builtin/sparse-checkout.c:408
 msgid "git sparse-checkout (set|add) (--stdin | <patterns>)"
 msgstr "git sparse-checkout (set|add) (--stdin | <dizgiler>)"
 
-#: builtin/sparse-checkout.c:438
+#: builtin/sparse-checkout.c:433
 #, c-format
 msgid "unable to unquote C-style string '%s'"
 msgstr "C biçemli '%s' dizisinin tırnakları kaldırılamıyor"
 
-#: builtin/sparse-checkout.c:492 builtin/sparse-checkout.c:516
+#: builtin/sparse-checkout.c:487 builtin/sparse-checkout.c:511
 msgid "unable to load existing sparse-checkout patterns"
 msgstr "mevcut aralıklı çıkış dizgileri yüklenemiyor"
 
-#: builtin/sparse-checkout.c:561
+#: builtin/sparse-checkout.c:556
 msgid "read patterns from standard in"
 msgstr "dizgileri stdin'den oku"
 
-#: builtin/sparse-checkout.c:576
+#: builtin/sparse-checkout.c:571
 msgid "git sparse-checkout reapply"
 msgstr "git sparse-checkout reapply"
 
-#: builtin/sparse-checkout.c:595
+#: builtin/sparse-checkout.c:590
 msgid "git sparse-checkout disable"
 msgstr "git sparse-checkout disable"
 
-#: builtin/sparse-checkout.c:623
+#: builtin/sparse-checkout.c:618
 msgid "error while refreshing working directory"
 msgstr "çalışma dizini yenilenirken hata"
 
@@ -21466,153 +21866,165 @@ msgid "%s is not a valid reference"
 msgstr "%s geçerli bir başvuru değil"
 
 #: builtin/stash.c:225
-msgid "git stash clear with parameters is unimplemented"
+msgid "git stash clear with arguments is unimplemented"
 msgstr "parametreli git stash clear henüz kullanılabilir değil"
 
-#: builtin/stash.c:404
+#: builtin/stash.c:429
+#, c-format
+msgid ""
+"WARNING: Untracked file in way of tracked file!  Renaming\n"
+"            %s -> %s\n"
+"         to make room.\n"
+msgstr ""
+"UYARI: İzlenmeyen dosya, izlenen dosyanın önüne çıktı!\n"
+"Yer açmak için\n"
+"            %s -> %s\n"
+"         yeniden adlandırılıyor.\n"
+
+#: builtin/stash.c:490
 msgid "cannot apply a stash in the middle of a merge"
 msgstr "bir birleştirmenin ortasında zula uygulanamıyor"
 
-#: builtin/stash.c:415
+#: builtin/stash.c:501
 #, c-format
 msgid "could not generate diff %s^!."
 msgstr "diff oluşturulamadı: %s^!."
 
-#: builtin/stash.c:422
+#: builtin/stash.c:508
 msgid "conflicts in index. Try without --index."
 msgstr "İndekste çakışmalar var. --index olmadan deneyin."
 
-#: builtin/stash.c:428
+#: builtin/stash.c:514
 msgid "could not save index tree"
 msgstr "indeks ağacı kaydedilemedi"
 
-#: builtin/stash.c:437
+#: builtin/stash.c:523
 msgid "could not restore untracked files from stash"
 msgstr "izlenmeyen dosyalar zuladan geri getirilemedi"
 
-#: builtin/stash.c:451
+#: builtin/stash.c:537
 #, c-format
 msgid "Merging %s with %s"
 msgstr "%s, %s ile birleştiriliyor"
 
-#: builtin/stash.c:461
+#: builtin/stash.c:547
 msgid "Index was not unstashed."
 msgstr "İndeks zuladan çıkartılmamıştı."
 
-#: builtin/stash.c:522 builtin/stash.c:620
+#: builtin/stash.c:589 builtin/stash.c:687
 msgid "attempt to recreate the index"
 msgstr "indeks yeniden oluşturulmaya çalışılıyor"
 
-#: builtin/stash.c:566
+#: builtin/stash.c:633
 #, c-format
 msgid "Dropped %s (%s)"
 msgstr "%s bırakıldı (%s)"
 
-#: builtin/stash.c:569
+#: builtin/stash.c:636
 #, c-format
 msgid "%s: Could not drop stash entry"
 msgstr "%s: Zula girdisi bırakılamadı"
 
-#: builtin/stash.c:582
+#: builtin/stash.c:649
 #, c-format
 msgid "'%s' is not a stash reference"
 msgstr "'%s' bir zula başvurusu değil"
 
-#: builtin/stash.c:632
+#: builtin/stash.c:699
 msgid "The stash entry is kept in case you need it again."
 msgstr "Zula girdisi yeniden gereksiniminiz olursa diye saklanıyor."
 
-#: builtin/stash.c:655
+#: builtin/stash.c:722
 msgid "No branch name specified"
 msgstr "Dal adı belirtilmedi"
 
-#: builtin/stash.c:799 builtin/stash.c:836
+#: builtin/stash.c:866 builtin/stash.c:903
 #, c-format
 msgid "Cannot update %s with %s"
 msgstr "%s, %s ile güncellenemiyor"
 
-#: builtin/stash.c:817 builtin/stash.c:1471 builtin/stash.c:1536
+#: builtin/stash.c:884 builtin/stash.c:1538 builtin/stash.c:1603
 msgid "stash message"
 msgstr "zula iletisi"
 
-#: builtin/stash.c:827
+#: builtin/stash.c:894
 msgid "\"git stash store\" requires one <commit> argument"
 msgstr "\"git stash store\" bir <işleme> argümanı gerektirir"
 
-#: builtin/stash.c:1042
+#: builtin/stash.c:1109
 msgid "No changes selected"
 msgstr "Değişiklik seçilmedi"
 
-#: builtin/stash.c:1142
+#: builtin/stash.c:1209
 msgid "You do not have the initial commit yet"
 msgstr "Henüz ilk işleme yapılmamış"
 
-#: builtin/stash.c:1169
+#: builtin/stash.c:1236
 msgid "Cannot save the current index state"
 msgstr "Geçerli indeks durumu kaydedilemiyor"
 
-#: builtin/stash.c:1178
+#: builtin/stash.c:1245
 msgid "Cannot save the untracked files"
 msgstr "İzlenmeyen dosyalar kaydedilemiyor"
 
-#: builtin/stash.c:1189 builtin/stash.c:1198
+#: builtin/stash.c:1256 builtin/stash.c:1265
 msgid "Cannot save the current worktree state"
 msgstr "Geçerli çalışma ağacı durumu kaydedilemiyor"
 
-#: builtin/stash.c:1226
+#: builtin/stash.c:1293
 msgid "Cannot record working tree state"
 msgstr "Çalışma ağacı durumu kaydı yazılamıyor"
 
-#: builtin/stash.c:1275
+#: builtin/stash.c:1342
 msgid "Can't use --patch and --include-untracked or --all at the same time"
 msgstr "--patch, --include-untracked veya --all hepsi bir anda kullanılamıyor"
 
-#: builtin/stash.c:1291
+#: builtin/stash.c:1358
 msgid "Did you forget to 'git add'?"
 msgstr "'git add' yapmayı mı unuttunuz?"
 
-#: builtin/stash.c:1306
+#: builtin/stash.c:1373
 msgid "No local changes to save"
 msgstr "Kaydedilecek yerel değişiklik yok"
 
-#: builtin/stash.c:1313
+#: builtin/stash.c:1380
 msgid "Cannot initialize stash"
 msgstr "Zula ilklendirilemiyor"
 
-#: builtin/stash.c:1328
+#: builtin/stash.c:1395
 msgid "Cannot save the current status"
 msgstr "Geçerli durum kaydedilemiyor"
 
-#: builtin/stash.c:1333
+#: builtin/stash.c:1400
 #, c-format
 msgid "Saved working directory and index state %s"
 msgstr "Çalışma dizini ve indeks durumu %s kaydedildi"
 
-#: builtin/stash.c:1423
+#: builtin/stash.c:1490
 msgid "Cannot remove worktree changes"
 msgstr "Çalışma ağacı değişiklikleri kaldırılamıyor"
 
-#: builtin/stash.c:1462 builtin/stash.c:1527
+#: builtin/stash.c:1529 builtin/stash.c:1594
 msgid "keep index"
 msgstr "indeksi tut"
 
-#: builtin/stash.c:1464 builtin/stash.c:1529
+#: builtin/stash.c:1531 builtin/stash.c:1596
 msgid "stash in patch mode"
 msgstr "yama kipinde zula"
 
-#: builtin/stash.c:1465 builtin/stash.c:1530
+#: builtin/stash.c:1532 builtin/stash.c:1597
 msgid "quiet mode"
 msgstr "sessiz kip"
 
-#: builtin/stash.c:1467 builtin/stash.c:1532
+#: builtin/stash.c:1534 builtin/stash.c:1599
 msgid "include untracked files in stash"
 msgstr "zulada izlenmeyen dosyaları içer"
 
-#: builtin/stash.c:1469 builtin/stash.c:1534
+#: builtin/stash.c:1536 builtin/stash.c:1601
 msgid "include ignore files"
 msgstr "yok sayma dosyalarını içer"
 
-#: builtin/stash.c:1569
+#: builtin/stash.c:1636
 msgid ""
 "the stash.useBuiltin support has been removed!\n"
 "See its entry in 'git help config' for details."
@@ -21689,12 +22101,13 @@ msgstr ""
 "sıfır olmayan durum döndürdü"
 
 #: builtin/submodule--helper.c:565
-msgid "Suppress output of entering each submodule command"
-msgstr "Her altmodül komutu girişinin çıktısını gizle"
+msgid "suppress output of entering each submodule command"
+msgstr "her bir altmodül komutu girişinin çıktısını gizle"
 
-#: builtin/submodule--helper.c:567 builtin/submodule--helper.c:1487
-msgid "Recurse into nested submodules"
-msgstr "İç içe geçmiş altmodüller içine özyinele"
+#: builtin/submodule--helper.c:567 builtin/submodule--helper.c:888
+#: builtin/submodule--helper.c:1487
+msgid "recurse into nested submodules"
+msgstr "iç içe geçmiş altmodüle özyinele"
 
 #: builtin/submodule--helper.c:572
 msgid "git submodule--helper foreach [--quiet] [--recursive] [--] <command>"
@@ -21730,8 +22143,8 @@ msgid "Failed to register update mode for submodule path '%s'"
 msgstr "'%s' altmodülü yolu için güncelleme kipi kaydı yapılamadı"
 
 #: builtin/submodule--helper.c:709
-msgid "Suppress output for initializing a submodule"
-msgstr "Bir altmodül ilklendirmesi çıktısını gizle"
+msgid "suppress output for initializing a submodule"
+msgstr "bir altmodül ilklendirmesi çıktısını gizle"
 
 #: builtin/submodule--helper.c:714
 msgid "git submodule--helper init [<options>] [<path>]"
@@ -21753,21 +22166,17 @@ msgid "failed to recurse into submodule '%s'"
 msgstr "'%s' altmodülüne özyinelenemedi"
 
 #: builtin/submodule--helper.c:886 builtin/submodule--helper.c:1623
-msgid "Suppress submodule status output"
-msgstr "Altmodül durum çıktısını gizle"
+msgid "suppress submodule status output"
+msgstr "altmodül durum çıktısını gizle"
 
 #: builtin/submodule--helper.c:887
 msgid ""
-"Use commit stored in the index instead of the one stored in the submodule "
+"use commit stored in the index instead of the one stored in the submodule "
 "HEAD"
 msgstr ""
-"Altmodül HEAD'i içinde depolanan işleme yerine indekste depolanan işlemeyi "
+"altmodül HEAD'i içinde depolanan işleme yerine indekste depolanan işlemeyi "
 "kullan"
 
-#: builtin/submodule--helper.c:888
-msgid "recurse into nested submodules"
-msgstr "iç içe geçmiş altmodüle özyinele"
-
 #: builtin/submodule--helper.c:893
 msgid "git submodule status [--quiet] [--cached] [--recursive] [<path>...]"
 msgstr "git submodule status [--quiet] [--cached] [--recursive] [<yol>...]"
@@ -21850,8 +22259,8 @@ msgid "failed to update remote for submodule '%s'"
 msgstr "'%s' altmodülü için uzak konum güncellenemedi"
 
 #: builtin/submodule--helper.c:1485
-msgid "Suppress output of synchronizing submodule url"
-msgstr "Altmodül url'si eşitleme çıktısını gizle"
+msgid "suppress output of synchronizing submodule url"
+msgstr "altmodül url'si eşitleme çıktısını gizle"
 
 #: builtin/submodule--helper.c:1492
 msgid "git submodule--helper sync [--quiet] [--recursive] [<path>]"
@@ -21896,12 +22305,12 @@ msgid "Submodule '%s' (%s) unregistered for path '%s'\n"
 msgstr "'%s' altmodülü (%s), '%s' yoluna kaydı yapılmamış\n"
 
 #: builtin/submodule--helper.c:1624
-msgid "Remove submodule working trees even if they contain local changes"
-msgstr "Altmodül çalışma ağaçlarını yerel değişiklikler içerseler bile kaldır"
+msgid "remove submodule working trees even if they contain local changes"
+msgstr "altmodül çalışma ağaçlarını yerel değişiklikler içerseler bile kaldır"
 
 #: builtin/submodule--helper.c:1625
-msgid "Unregister all submodules"
-msgstr "Tüm altmodüllerin kaydını kaldır"
+msgid "unregister all submodules"
+msgstr "tüm altmodüllerin kaydını kaldır"
 
 #: builtin/submodule--helper.c:1630
 msgid ""
@@ -22048,8 +22457,8 @@ msgid "rebase, merge, checkout or none"
 msgstr "rebase, merge, checkout veya none"
 
 #: builtin/submodule--helper.c:2340
-msgid "Create a shallow clone truncated to the specified number of revisions"
-msgstr "Belirli bir revizyon sayısına kısaltılmış sığ klon oluştur"
+msgid "create a shallow clone truncated to the specified number of revisions"
+msgstr "belirli bir revizyon sayısına kısaltılmış sığ klon oluştur"
 
 #: builtin/submodule--helper.c:2343
 msgid "parallel jobs"
@@ -22119,8 +22528,8 @@ msgid "please make sure that the .gitmodules file is in the working tree"
 msgstr ".gitmodules dosyasının çalışma ağacında olduğundan lütfen emin ol"
 
 #: builtin/submodule--helper.c:2681
-msgid "Suppress output for setting url of a submodule"
-msgstr "Bir altmodül url ayarlanması çıktısını gizle"
+msgid "suppress output for setting url of a submodule"
+msgstr "bir altmodül url ayarlanması çıktısını gizle"
 
 #: builtin/submodule--helper.c:2685
 msgid "git submodule--helper set-url [--quiet] <path> <newurl>"
@@ -22152,7 +22561,7 @@ msgstr "--branch veya --default gerekli"
 msgid "--branch and --default are mutually exclusive"
 msgstr "--branch ve --default birlikte kullanılamaz"
 
-#: builtin/submodule--helper.c:2792 git.c:438 git.c:711
+#: builtin/submodule--helper.c:2792 git.c:441 git.c:714
 #, c-format
 msgid "%s doesn't support --super-prefix"
 msgstr "%s, --super-prefix desteklemiyor"
@@ -22223,12 +22632,12 @@ msgstr "git tag -v [--format=<biçim>] <etiket-adı>..."
 msgid "tag '%s' not found."
 msgstr "'%s' etiketi bulunamadı."
 
-#: builtin/tag.c:105
+#: builtin/tag.c:124
 #, c-format
 msgid "Deleted tag '%s' (was %s)\n"
 msgstr "'%s' etiketi silindi (%s idi)\n"
 
-#: builtin/tag.c:135
+#: builtin/tag.c:159
 #, c-format
 msgid ""
 "\n"
@@ -22241,7 +22650,7 @@ msgstr ""
 "  %s\n"
 "'%c' ile başlayan satırlar yok sayılacaktır.\n"
 
-#: builtin/tag.c:139
+#: builtin/tag.c:163
 #, c-format
 msgid ""
 "\n"
@@ -22256,15 +22665,11 @@ msgstr ""
 "'%c' ile başlayan satırlar tutulacaktır; isterseniz onları "
 "kaldırabilirsiniz.\n"
 
-#: builtin/tag.c:198
+#: builtin/tag.c:230
 msgid "unable to sign the tag"
 msgstr "etiket imzalanamıyor"
 
-#: builtin/tag.c:200
-msgid "unable to write tag file"
-msgstr "etiket dosyası yazılamıyor"
-
-#: builtin/tag.c:216
+#: builtin/tag.c:248
 #, c-format
 msgid ""
 "You have created a nested tag. The object referred to by your new tag is\n"
@@ -22277,139 +22682,135 @@ msgstr ""
 "\n"
 "\tgit tag -f %s %s^{}"
 
-#: builtin/tag.c:232
+#: builtin/tag.c:264
 msgid "bad object type."
 msgstr "hatalı nesne türü"
 
-#: builtin/tag.c:285
+#: builtin/tag.c:317
 msgid "no tag message?"
 msgstr "etiket iletisi yok mu?"
 
-#: builtin/tag.c:292
+#: builtin/tag.c:324
 #, c-format
 msgid "The tag message has been left in %s\n"
 msgstr "Etiket iletisi %s içinde bırakıldı\n"
 
-#: builtin/tag.c:403
+#: builtin/tag.c:435
 msgid "list tag names"
 msgstr "etiket adlarını listele"
 
-#: builtin/tag.c:405
+#: builtin/tag.c:437
 msgid "print <n> lines of each tag message"
 msgstr "her etiket iletisinin <n> satırını listele"
 
-#: builtin/tag.c:407
+#: builtin/tag.c:439
 msgid "delete tags"
 msgstr "etiketleri sil"
 
-#: builtin/tag.c:408
+#: builtin/tag.c:440
 msgid "verify tags"
 msgstr "etiketleri doğrula"
 
-#: builtin/tag.c:410
+#: builtin/tag.c:442
 msgid "Tag creation options"
 msgstr "Etiket oluşturma seçenekleri"
 
-#: builtin/tag.c:412
+#: builtin/tag.c:444
 msgid "annotated tag, needs a message"
 msgstr "açıklama eklenmiş etiket için bir ileti gerek"
 
-#: builtin/tag.c:414
+#: builtin/tag.c:446
 msgid "tag message"
 msgstr "etiket iletisi"
 
-#: builtin/tag.c:416
+#: builtin/tag.c:448
 msgid "force edit of tag message"
 msgstr "etiket iletisini zorla düzenle"
 
-#: builtin/tag.c:417
+#: builtin/tag.c:449
 msgid "annotated and GPG-signed tag"
 msgstr "açıklama eklenmiş ve GPG imzalı etiket"
 
-#: builtin/tag.c:420
+#: builtin/tag.c:452
 msgid "use another key to sign the tag"
 msgstr "etiketi imzalamak için başka bir anahtar kullanın"
 
-#: builtin/tag.c:421
+#: builtin/tag.c:453
 msgid "replace the tag if exists"
 msgstr "eğer varsa etiketi başkasıyla değiştir"
 
-#: builtin/tag.c:422 builtin/update-ref.c:505
+#: builtin/tag.c:454 builtin/update-ref.c:505
 msgid "create a reflog"
 msgstr "bir başvuru günlüğü oluştur"
 
-#: builtin/tag.c:424
+#: builtin/tag.c:456
 msgid "Tag listing options"
 msgstr "Etiket listeleme seçenekleri"
 
-#: builtin/tag.c:425
+#: builtin/tag.c:457
 msgid "show tag list in columns"
 msgstr "etiket listesini sütunlarla göster"
 
-#: builtin/tag.c:426 builtin/tag.c:428
+#: builtin/tag.c:458 builtin/tag.c:460
 msgid "print only tags that contain the commit"
 msgstr "yalnızca işlemeyi içeren etiketleri yazdır"
 
-#: builtin/tag.c:427 builtin/tag.c:429
+#: builtin/tag.c:459 builtin/tag.c:461
 msgid "print only tags that don't contain the commit"
 msgstr "yalnızca işleme içermeyen etiketleri yazdır"
 
-#: builtin/tag.c:430
+#: builtin/tag.c:462
 msgid "print only tags that are merged"
 msgstr "yalnızca birleştirilen etiketleri yazdır"
 
-#: builtin/tag.c:431
+#: builtin/tag.c:463
 msgid "print only tags that are not merged"
 msgstr "yalnızca birleştirilmeyen etiketleri yazdır"
 
-#: builtin/tag.c:435
+#: builtin/tag.c:467
 msgid "print only tags of the object"
 msgstr "yalnızca nesnenin etiketlerini yazdır"
 
-#: builtin/tag.c:483
+#: builtin/tag.c:515
 msgid "--column and -n are incompatible"
 msgstr "--column ve -n birbiriyle uyumsuz"
 
-#: builtin/tag.c:505
+#: builtin/tag.c:537
 msgid "-n option is only allowed in list mode"
 msgstr "-n seçeneğine yalnızca liste kipinde izin verilir"
 
-#: builtin/tag.c:507
+#: builtin/tag.c:539
 msgid "--contains option is only allowed in list mode"
 msgstr "--contains seçeneğine yalnızca liste kipinde izin verilir"
 
-#: builtin/tag.c:509
+#: builtin/tag.c:541
 msgid "--no-contains option is only allowed in list mode"
 msgstr "--no-contains seçeneğine yalnızca liste kipinde izin verilir"
 
-#: builtin/tag.c:511
+#: builtin/tag.c:543
 msgid "--points-at option is only allowed in list mode"
 msgstr "--points-at seçeneğine yalnızca liste kipinde izin verilir"
 
-#: builtin/tag.c:513
+#: builtin/tag.c:545
 msgid "--merged and --no-merged options are only allowed in list mode"
 msgstr ""
 "--merged ve --no-merged seçeneklerine yalnızca liste kipinde izin verilir"
 
-#: builtin/tag.c:524
+#: builtin/tag.c:556
 msgid "only one -F or -m option is allowed."
 msgstr "yalnızca bir -F veya -m seçeneğine izin verilir"
 
-#: builtin/tag.c:543
-msgid "too many params"
-msgstr "çok fazla parametre"
-
-#: builtin/tag.c:549
+#: builtin/tag.c:581
 #, c-format
 msgid "'%s' is not a valid tag name."
 msgstr "'%s' geçerli bir etiket adı değil."
 
-#: builtin/tag.c:554
+#: builtin/tag.c:586
 #, c-format
 msgid "tag '%s' already exists"
 msgstr "'%s' etiketi halihazırda var"
 
-#: builtin/tag.c:585
+#: builtin/tag.c:617
 #, c-format
 msgid "Updated tag '%s' (was %s)\n"
 msgstr "'%s' etiketi güncellendi (%s idi)\n"
@@ -22762,89 +23163,63 @@ msgstr "git verify-tag [-v | --verbose] [--format=<biçim>] <etiket>..."
 msgid "print tag contents"
 msgstr "etiket içeriğini yazdır"
 
-#: builtin/worktree.c:17
+#: builtin/worktree.c:18
 msgid "git worktree add [<options>] <path> [<commit-ish>]"
 msgstr "git worktree add [<seçenekler>] <yol> [<işlememsi>]"
 
-#: builtin/worktree.c:18
+#: builtin/worktree.c:19
 msgid "git worktree list [<options>]"
 msgstr "git worktree list [<seçenekler>]"
 
-#: builtin/worktree.c:19
+#: builtin/worktree.c:20
 msgid "git worktree lock [<options>] <path>"
 msgstr "git worktree lock [<seçenekler>] <yol>"
 
-#: builtin/worktree.c:20
+#: builtin/worktree.c:21
 msgid "git worktree move <worktree> <new-path>"
 msgstr "git worktree move <ç-ağacı> <yeni-yol>"
 
-#: builtin/worktree.c:21
+#: builtin/worktree.c:22
 msgid "git worktree prune [<options>]"
 msgstr "git worktree prune [<seçenekler>]"
 
-#: builtin/worktree.c:22
+#: builtin/worktree.c:23
 msgid "git worktree remove [<options>] <worktree>"
 msgstr "git worktree remove [<seçenekler>] <ç-ağacı>"
 
-#: builtin/worktree.c:23
+#: builtin/worktree.c:24
 msgid "git worktree unlock <path>"
 msgstr "git worktree unlock <yol>"
 
-#: builtin/worktree.c:60 builtin/worktree.c:973
+#: builtin/worktree.c:61 builtin/worktree.c:933
 #, c-format
 msgid "failed to delete '%s'"
 msgstr "'%s' silinemedi"
 
-#: builtin/worktree.c:85
-msgid "not a valid directory"
-msgstr "geçerli bir dizin değil"
-
-#: builtin/worktree.c:91
-msgid "gitdir file does not exist"
-msgstr "gitdir dosyası mevcut değil"
-
-#: builtin/worktree.c:96 builtin/worktree.c:105
-#, c-format
-msgid "unable to read gitdir file (%s)"
-msgstr "gitdir dosyası (%s) okunamıyor"
-
-#: builtin/worktree.c:115
-#, c-format
-msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
-msgstr "az okundu (%<PRIuMAX> bayt bekleniyordu, %<PRIuMAX> okundu)"
-
-#: builtin/worktree.c:123
-msgid "invalid gitdir file"
-msgstr "geçersiz gitdir dosyası"
-
-#: builtin/worktree.c:131
-msgid "gitdir file points to non-existent location"
-msgstr "gitdir dosyası var olmayan bir konuma işaret ediyor"
-
-#: builtin/worktree.c:146
+#: builtin/worktree.c:74
 #, c-format
 msgid "Removing %s/%s: %s"
 msgstr "%s/%s kaldırılıyor: %s"
 
-#: builtin/worktree.c:221
+#: builtin/worktree.c:149
 msgid "report pruned working trees"
 msgstr "budanan çalışma ağaçlarını bildir"
 
-#: builtin/worktree.c:223
+#: builtin/worktree.c:151
 msgid "expire working trees older than <time>"
 msgstr "<zaman>'dan eski çalışma ağaçlarının hükmünü kaldır"
 
-#: builtin/worktree.c:293
+#: builtin/worktree.c:221
 #, c-format
 msgid "'%s' already exists"
 msgstr "'%s' halihazırda var"
 
-#: builtin/worktree.c:302
+#: builtin/worktree.c:230
 #, c-format
 msgid "unusable worktree destination '%s'"
 msgstr "kullanılamayan çalışma ağacı konumu '%s'"
 
-#: builtin/worktree.c:307
+#: builtin/worktree.c:235
 #, c-format
 msgid ""
 "'%s' is a missing but locked worktree;\n"
@@ -22854,7 +23229,7 @@ msgstr ""
 "geçersiz kılmak için '%s -f -f', temizlemek için 'unlock', 'prune' veya "
 "'remove' kullanın"
 
-#: builtin/worktree.c:309
+#: builtin/worktree.c:237
 #, c-format
 msgid ""
 "'%s' is a missing but already registered worktree;\n"
@@ -22863,115 +23238,127 @@ msgstr ""
 "'%s' eksik; ancak halihazırda kaydı yapılmış bir çalışma ağacı;\n"
 "geçersiz kılmak için '%s -f', temizlemek için 'prune' veya 'remove' kullanın"
 
-#: builtin/worktree.c:360
+#: builtin/worktree.c:288
 #, c-format
 msgid "could not create directory of '%s'"
 msgstr "'%s' dizini oluşturulamadı"
 
-#: builtin/worktree.c:494 builtin/worktree.c:500
+#: builtin/worktree.c:422 builtin/worktree.c:428
 #, c-format
 msgid "Preparing worktree (new branch '%s')"
 msgstr "Çalışma ağacı hazırlanıyor (yeni dal '%s')"
 
-#: builtin/worktree.c:496
+#: builtin/worktree.c:424
 #, c-format
 msgid "Preparing worktree (resetting branch '%s'; was at %s)"
 msgstr "Çalışma ağacı hazırlanıyor ('%s' dalı sıfırlanıyor; %s konumundaydı)"
 
-#: builtin/worktree.c:505
+#: builtin/worktree.c:433
 #, c-format
 msgid "Preparing worktree (checking out '%s')"
 msgstr "Çalışma ağacı hazırlanıyor ('%s' çıkış yapılıyor)"
 
-#: builtin/worktree.c:511
+#: builtin/worktree.c:439
 #, c-format
 msgid "Preparing worktree (detached HEAD %s)"
 msgstr "Çalışma ağacı hazırlanıyor (ayrık HEAD %s)"
 
-#: builtin/worktree.c:552
+#: builtin/worktree.c:480
 msgid "checkout <branch> even if already checked out in other worktree"
 msgstr "diğer çalışma ağacında çıkış yapılmış olsa bile <dal> çıkışını yap"
 
-#: builtin/worktree.c:555
+#: builtin/worktree.c:483
 msgid "create a new branch"
 msgstr "yeni bir dal oluştur"
 
-#: builtin/worktree.c:557
+#: builtin/worktree.c:485
 msgid "create or reset a branch"
 msgstr "yeni bir dal oluştur veya sıfırla"
 
-#: builtin/worktree.c:559
+#: builtin/worktree.c:487
 msgid "populate the new working tree"
 msgstr "yeni çalışma ağacını doldur"
 
-#: builtin/worktree.c:560
+#: builtin/worktree.c:488
 msgid "keep the new working tree locked"
 msgstr "yeni çalışma ağacını kilitli tut"
 
-#: builtin/worktree.c:563
+#: builtin/worktree.c:491
 msgid "set up tracking mode (see git-branch(1))"
 msgstr "izleme kipini ayarla (bkz: git-branch(1))"
 
-#: builtin/worktree.c:566
+#: builtin/worktree.c:494
 msgid "try to match the new branch name with a remote-tracking branch"
 msgstr "yeni dalın adını bir uzak izleme dalıyla eşleştirmeyi dene"
 
-#: builtin/worktree.c:574
+#: builtin/worktree.c:502
 msgid "-b, -B, and --detach are mutually exclusive"
 msgstr "-b, -B ve --detach birlikte kullanılamaz"
 
-#: builtin/worktree.c:635
+#: builtin/worktree.c:563
 msgid "--[no-]track can only be used if a new branch is created"
 msgstr "--[no-]track yalnızca yeni bir dal oluşturulmuşsa kullanılabilir"
 
-#: builtin/worktree.c:758
+#: builtin/worktree.c:680
+msgid "show extended annotations and reasons, if available"
+msgstr "varsa genişletilmiş açıklamaları ve nedenleri göster"
+
+#: builtin/worktree.c:682
+msgid "add 'prunable' annotation to worktrees older than <time>"
+msgstr "<zaman>'dan eski çalışma ağaçlarına 'budanabilir' açıklama ekle"
+
+#: builtin/worktree.c:691
+msgid "--verbose and --porcelain are mutually exclusive"
+msgstr "--verbose ve --porcelain birlikte kullanılamaz"
+
+#: builtin/worktree.c:718
 msgid "reason for locking"
 msgstr "kilitleme nedeni"
 
-#: builtin/worktree.c:770 builtin/worktree.c:803 builtin/worktree.c:877
-#: builtin/worktree.c:1001
+#: builtin/worktree.c:730 builtin/worktree.c:763 builtin/worktree.c:837
+#: builtin/worktree.c:961
 #, c-format
 msgid "'%s' is not a working tree"
 msgstr "'%s' bir çalışma ağacı değil"
 
-#: builtin/worktree.c:772 builtin/worktree.c:805
+#: builtin/worktree.c:732 builtin/worktree.c:765
 msgid "The main working tree cannot be locked or unlocked"
 msgstr "Ana çalışma ağacı kilitlenemez veya kilidi açılamaz"
 
-#: builtin/worktree.c:777
+#: builtin/worktree.c:737
 #, c-format
 msgid "'%s' is already locked, reason: %s"
 msgstr "'%s' halihazırda kilitli, nedeni: %s"
 
-#: builtin/worktree.c:779
+#: builtin/worktree.c:739
 #, c-format
 msgid "'%s' is already locked"
 msgstr "'%s' halihazırda kilitli"
 
-#: builtin/worktree.c:807
+#: builtin/worktree.c:767
 #, c-format
 msgid "'%s' is not locked"
 msgstr "'%s' kilitli değil"
 
-#: builtin/worktree.c:848
+#: builtin/worktree.c:808
 msgid "working trees containing submodules cannot be moved or removed"
 msgstr "altmodül içeren çalışma ağaçları taşınamaz veya kaldırılamaz"
 
-#: builtin/worktree.c:856
+#: builtin/worktree.c:816
 msgid "force move even if worktree is dirty or locked"
 msgstr "çalışma ağacı kirli veya kilitli olsa bile zorla taşı"
 
-#: builtin/worktree.c:879 builtin/worktree.c:1003
+#: builtin/worktree.c:839 builtin/worktree.c:963
 #, c-format
 msgid "'%s' is a main working tree"
 msgstr "'%s' bir ana çalışma ağacı"
 
-#: builtin/worktree.c:884
+#: builtin/worktree.c:844
 #, c-format
 msgid "could not figure out destination name from '%s'"
 msgstr "hedef adı şuradan anlaşılamadı: '%s'"
 
-#: builtin/worktree.c:897
+#: builtin/worktree.c:857
 #, c-format
 msgid ""
 "cannot move a locked working tree, lock reason: %s\n"
@@ -22980,7 +23367,7 @@ msgstr ""
 "kilitli bir çalışma ağacı taşınamıyor, kilit nedeni: %s\n"
 "geçersiz kılmak için 'move -f -f' kullanın veya önce kilidini açın"
 
-#: builtin/worktree.c:899
+#: builtin/worktree.c:859
 msgid ""
 "cannot move a locked working tree;\n"
 "use 'move -f -f' to override or unlock first"
@@ -22988,38 +23375,38 @@ msgstr ""
 "kilitli bir çalışma ağacı taşınamıyor;\n"
 "geçersiz kılmak için 'move -f -f' kullanın veya önce kilidini açın"
 
-#: builtin/worktree.c:902
+#: builtin/worktree.c:862
 #, c-format
 msgid "validation failed, cannot move working tree: %s"
 msgstr "doğrulama başarısız, çalışma ağacı taşınamıyor: %s"
 
-#: builtin/worktree.c:907
+#: builtin/worktree.c:867
 #, c-format
 msgid "failed to move '%s' to '%s'"
 msgstr "'%s' -> '%s' taşıması başarısız"
 
-#: builtin/worktree.c:953
+#: builtin/worktree.c:913
 #, c-format
 msgid "failed to run 'git status' on '%s'"
 msgstr "'%s' üzerinde 'git status' çalıştırılamadı"
 
-#: builtin/worktree.c:957
+#: builtin/worktree.c:917
 #, c-format
 msgid "'%s' contains modified or untracked files, use --force to delete it"
 msgstr ""
 "'%s' değiştirilmiş veya izlenmeyen dosyalar içeriyor, silmek için --force "
 "kullanın"
 
-#: builtin/worktree.c:962
+#: builtin/worktree.c:922
 #, c-format
 msgid "failed to run 'git status' on '%s', code %d"
 msgstr "'%s' üzerinde 'git status' çalıştırılamadı, kod %d"
 
-#: builtin/worktree.c:985
+#: builtin/worktree.c:945
 msgid "force removal even if worktree is dirty or locked"
 msgstr "çalışma ağacı kirli veya kilitli olsa bile zorla kaldır"
 
-#: builtin/worktree.c:1008
+#: builtin/worktree.c:968
 #, c-format
 msgid ""
 "cannot remove a locked working tree, lock reason: %s\n"
@@ -23028,7 +23415,7 @@ msgstr ""
 "kilitli bir çalışma ağacı kaldırılamıyor, kilit nedeni: %s\n"
 "geçersiz kılmak için 'remove -f -f' kullanın veya önce kilidini açın"
 
-#: builtin/worktree.c:1010
+#: builtin/worktree.c:970
 msgid ""
 "cannot remove a locked working tree;\n"
 "use 'remove -f -f' to override or unlock first"
@@ -23036,17 +23423,17 @@ msgstr ""
 "kilitli bir çalışma ağacı kaldırılamıyor;\n"
 "geçersiz kılmak için 'remove -f -f' kullanın veya önce kilidini açın"
 
-#: builtin/worktree.c:1013
+#: builtin/worktree.c:973
 #, c-format
 msgid "validation failed, cannot remove working tree: %s"
 msgstr "doğrulama başarısız, çalışma ağacı kaldırılamıyor: %s"
 
-#: builtin/worktree.c:1037
+#: builtin/worktree.c:997
 #, c-format
 msgid "repair: %s: %s"
 msgstr "şunu onar %s: %s"
 
-#: builtin/worktree.c:1040
+#: builtin/worktree.c:1000
 #, c-format
 msgid "error: %s: %s"
 msgstr "hata: %s: %s"
@@ -23067,15 +23454,23 @@ msgstr "bir <önek> altdizini için ağaç nesnesi yaz"
 msgid "only useful for debugging"
 msgstr "yalnızca hata ayıklama için yararlı"
 
-#: http-fetch.c:114
+#: http-fetch.c:118
 #, c-format
 msgid "argument to --packfile must be a valid hash (got '%s')"
 msgstr "--packfile için argüman geçerli bir sağlama olmalıdır ('%s' alındı)"
 
-#: http-fetch.c:122
+#: http-fetch.c:128
 msgid "not a git repository"
 msgstr "bir git deposu değil"
 
+#: http-fetch.c:134
+msgid "--packfile requires --index-pack-args"
+msgstr "--packfile, --index-pack-args gerektiriyor"
+
+#: http-fetch.c:143
+msgid "--index-pack-args can only be used with --packfile"
+msgstr "--index-pack-args yalnızca --packfile ile kullanılabilir"
+
 #: t/helper/test-fast-rebase.c:141
 msgid "unhandled options"
 msgstr "beklenmeyen seçenekler"
@@ -23108,6 +23503,7 @@ msgid ""
 "           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--"
 "bare]\n"
 "           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]\n"
+"           [--super-prefix=<path>] [--config-env=<name>=<envvar>]\n"
 "           <command> [<args>]"
 msgstr ""
 "git [--version] [--help] [-C <yol>] [-c <ad>=<değer>]\n"
@@ -23115,9 +23511,10 @@ msgstr ""
 "           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--"
 "bare]\n"
 "           [--git-dir=<yol>] [--work-tree=<yol>] [--namespace=<ad>]\n"
+"           [--super-prefix=<yol>] [--config-env=<ad>=<ortamdeğişkeni>]\n"
 "           <komut> [<argümanlar>]"
 
-#: git.c:35
+#: git.c:36
 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"
@@ -23129,47 +23526,47 @@ msgstr ""
 "için 'git help <komut>' veya 'git help <konsept>' yazın. Genel bir görünüm\n"
 "için 'git help git' kullanabilirsiniz."
 
-#: git.c:187
+#: git.c:188
 #, c-format
 msgid "no directory given for --git-dir\n"
 msgstr "--git-dir için dizin verilmedi\n"
 
-#: git.c:201
+#: git.c:202
 #, c-format
 msgid "no namespace given for --namespace\n"
 msgstr "--namespace için ad alanı verilmedi\n"
 
-#: git.c:215
+#: git.c:216
 #, c-format
 msgid "no directory given for --work-tree\n"
 msgstr "--work-tree için dizin verilmedi\n"
 
-#: git.c:229
+#: git.c:230
 #, c-format
 msgid "no prefix given for --super-prefix\n"
 msgstr "--super-prefix için önek verilmedi\n"
 
-#: git.c:251
+#: git.c:252
 #, c-format
 msgid "-c expects a configuration string\n"
 msgstr "-c bir yapılandırma dizisi bekliyor\n"
 
-#: git.c:289
+#: git.c:292
 #, c-format
 msgid "no directory given for -C\n"
 msgstr "-C için dizin verilmedi\n"
 
-#: git.c:315
+#: git.c:318
 #, c-format
 msgid "unknown option: %s\n"
 msgstr "bilinmeyen seçenek: %s\n"
 
-#: git.c:364
+#: git.c:367
 #, c-format
 msgid "while expanding alias '%s': '%s'"
 msgstr "'%s' arması genişletirilirken: '%s'"
 
-#: git.c:373
+#: git.c:376
 #, c-format
 msgid ""
 "alias '%s' changes environment variables.\n"
@@ -23178,39 +23575,39 @@ msgstr ""
 "'%s' arması ortam değişkenlerini değiştirir.\n"
 "Bunu yapmak için armada '!git' kullanabilirsiniz."
 
-#: git.c:380
+#: git.c:383
 #, c-format
 msgid "empty alias for %s"
 msgstr "%s için boş arma"
 
-#: git.c:383
+#: git.c:386
 #, c-format
 msgid "recursive alias: %s"
 msgstr "özyineli arma: %s"
 
-#: git.c:465
+#: git.c:468
 msgid "write failure on standard output"
 msgstr "standart çıktı'da yazma hatası"
 
-#: git.c:467
+#: git.c:470
 msgid "unknown write failure on standard output"
 msgstr "standart çıktı'da bilinmeyen yazma hatası"
 
-#: git.c:469
+#: git.c:472
 msgid "close failed on standard output"
 msgstr "standart çıktı'da kapatma başarısız"
 
-#: git.c:820
+#: git.c:823
 #, c-format
 msgid "alias loop detected: expansion of '%s' does not terminate:%s"
 msgstr "arma döngüsü algılandı: '%s' genişletilmesi sonlanmıyor:%s"
 
-#: git.c:870
+#: git.c:873
 #, c-format
 msgid "cannot handle %s as a builtin"
 msgstr "%s bir yerleşik olarak ele alınamıyor"
 
-#: git.c:883
+#: git.c:886
 #, c-format
 msgid ""
 "usage: %s\n"
@@ -23219,13 +23616,13 @@ msgstr ""
 "kullanım: %s\n"
 "\n"
 
-#: git.c:903
+#: git.c:906
 #, c-format
 msgid "expansion of alias '%s' failed; '%s' is not a git command\n"
 msgstr ""
 "'%s' armasının genişletilmesi başarısız oldu; '%s' bir git komutu değil\n"
 
-#: git.c:915
+#: git.c:918
 #, c-format
 msgid "failed to run command '%s': %s\n"
 msgstr "'%s' komutu çalıştırılamadı: %s\n"
@@ -23461,11 +23858,11 @@ msgid ""
 msgstr ""
 "--pathspec-from-file ile, yol belirteci ögeleri NUL karakteri ile ayrılır"
 
-#: ref-filter.h:96
+#: ref-filter.h:99
 msgid "key"
 msgstr "anahtar"
 
-#: ref-filter.h:96
+#: ref-filter.h:99
 msgid "field name to sort on"
 msgstr "üzerine sıralanacak alan adı"
 
@@ -23474,14 +23871,6 @@ msgid "update the index with reused conflict resolution if possible"
 msgstr ""
 "eğer olanaklıysa indeksi yeniden kullanılmış çakışma çözümü ile güncelle"
 
-#: wt-status.h:80
-msgid "HEAD detached at "
-msgstr "HEAD şurada ayrıldı: "
-
-#: wt-status.h:81
-msgid "HEAD detached from "
-msgstr "HEAD şundan ayrıldı: "
-
 #: command-list.h:50
 msgid "Add file contents to the index"
 msgstr "Dosya içeriğini indekse ekle"
@@ -23812,8 +24201,8 @@ msgid "Write and verify multi-pack-indexes"
 msgstr "multi-pack-index doğrula ve yaz"
 
 #: command-list.h:132
-msgid "Creates a tag object"
-msgstr "Bir etiket nesnesi oluştur"
+msgid "Creates a tag object with extra validation"
+msgstr "Ek doğrulamalı bir etiket nesnesi oluştur"
 
 #: command-list.h:133
 msgid "Build a tree-object from ls-tree formatted text"
@@ -24121,69 +24510,55 @@ msgid "Specifies intentionally untracked files to ignore"
 msgstr "Özellikle yok sayılması istenen dosyaları belirt"
 
 #: command-list.h:209
+msgid "Map author/committer names and/or E-Mail addresses"
+msgstr "Yazar/İşleyici adlarını ve/veya e-posta adreslerini eşlemle"
+
+#: command-list.h:210
 msgid "Defining submodule properties"
 msgstr "Altmodül özelliklerini tanımlama"
 
-#: command-list.h:210
+#: command-list.h:211
 msgid "Git namespaces"
 msgstr "Git ad alanları"
 
-#: command-list.h:211
+#: command-list.h:212
 msgid "Helper programs to interact with remote repositories"
 msgstr "Uzak depolar ile etkileşim için yardımcı programlar"
 
-#: command-list.h:212
+#: command-list.h:213
 msgid "Git Repository Layout"
 msgstr "Git Depo Yerleşimi"
 
-#: command-list.h:213
+#: command-list.h:214
 msgid "Specifying revisions and ranges for Git"
 msgstr "Git için revizyonları ve erimleri belirtme"
 
-#: command-list.h:214
+#: command-list.h:215
 msgid "Mounting one repository inside another"
 msgstr "Bir depoyu bir başkasının içine bağlama"
 
-#: command-list.h:215
+#: command-list.h:216
 msgid "A tutorial introduction to Git: part two"
 msgstr "Git'e Giriş: Bölüm 2"
 
-#: command-list.h:216
+#: command-list.h:217
 msgid "A tutorial introduction to Git"
 msgstr "Git'e Giriş"
 
-#: command-list.h:217
+#: command-list.h:218
 msgid "An overview of recommended workflows with Git"
 msgstr "Önerilen Git çalışma akışlarına genel bakış"
 
-#: git-bisect.sh:48
-#, sh-format
-msgid "Bad rev input: $arg"
-msgstr "Hatalı revizyon girdisi: $arg"
-
-#: git-bisect.sh:82
-msgid "No logfile given"
-msgstr "Günlük dosyası verilmedi"
-
-#: git-bisect.sh:83
-#, sh-format
-msgid "cannot read $file for replaying"
-msgstr "$file yeniden oynatım için okunamıyor"
-
-#: git-bisect.sh:105
-msgid "?? what are you talking about?"
-msgstr "?? neden söz ediyorsun?"
-
-#: git-bisect.sh:115
+#: git-bisect.sh:68
 msgid "bisect run failed: no command provided."
 msgstr "ikili arama başarısız: Komut verilmedi."
 
-#: git-bisect.sh:120
+#: git-bisect.sh:73
 #, sh-format
 msgid "running $command"
 msgstr "$command çalıştırılıyor"
 
-#: git-bisect.sh:127
+#: git-bisect.sh:80
 #, sh-format
 msgid ""
 "bisect run failed:\n"
@@ -24192,11 +24567,11 @@ msgstr ""
 "bisect çalıştırılamadı:\n"
 "çıkış kodu $res, '$command' konumundan, < 0 veya >= 128"
 
-#: git-bisect.sh:152
+#: git-bisect.sh:105
 msgid "bisect run cannot continue any more"
 msgstr "bisect daha fazla çalıştırılamıyor"
 
-#: git-bisect.sh:158
+#: git-bisect.sh:111
 #, sh-format
 msgid ""
 "bisect run failed:\n"
@@ -24205,14 +24580,10 @@ msgstr ""
 "ikili arama başarısız oldu:\n"
 "'bisect-state $state' $res hata koduyla çıktı"
 
-#: git-bisect.sh:165
+#: git-bisect.sh:118
 msgid "bisect run success"
 msgstr "ikili arama başarılı"
 
-#: git-bisect.sh:173
-msgid "We are not bisecting."
-msgstr "İkili arama yapmıyoruz."
-
 #: git-merge-octopus.sh:46
 msgid ""
 "Error: Your local changes to the following files would be overwritten by "
index 65df3d0c4ecb35c167e27e8c2affd1e6d7e642ff..f0ee9a8743c96959e35fa99fb37bad2f7e251e8e 100644 (file)
--- a/po/vi.po
+++ b/po/vi.po
@@ -2,15 +2,15 @@
 # Bản dịch tiếng Việt dành cho GIT-CORE.
 # This file is distributed under the same license as the git-core package.
 # Nguyễn Thái Ngọc Duy <pclouds@gmail.com>, 2012.
-# Trần Ngọc Quân <vnwildman@gmail.com>, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020.
+# Trần Ngọc Quân <vnwildman@gmail.com>, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021.
 # Đoàn Trần Công Danh <congdanhqx@gmail.com>, 2020.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: git v2.30.0 rd2\n"
+"Project-Id-Version: git  v2.31.0-rc1 rd2\n"
 "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2020-12-21 07:10+0800\n"
-"PO-Revision-Date: 2020-12-21 08:42+0700\n"
+"POT-Creation-Date: 2021-03-04 22:41+0800\n"
+"PO-Revision-Date: 2021-03-08 08:58+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"
@@ -28,9 +28,9 @@ msgstr ""
 msgid "Huh (%s)?"
 msgstr "Hả (%s)?"
 
-#: add-interactive.c:529 add-interactive.c:830 reset.c:65 sequencer.c:3284
-#: sequencer.c:3735 sequencer.c:3890 builtin/rebase.c:1532
-#: builtin/rebase.c:1955
+#: add-interactive.c:529 add-interactive.c:830 reset.c:65 sequencer.c:3292
+#: sequencer.c:3743 sequencer.c:3898 builtin/rebase.c:1538
+#: builtin/rebase.c:1963
 msgid "could not read index"
 msgstr "không thể đọc bảng mục lục"
 
@@ -58,7 +58,7 @@ msgstr "Cập nhật"
 msgid "could not stage '%s'"
 msgstr "không thể đưa “%s” lên bệ phóng"
 
-#: add-interactive.c:703 add-interactive.c:892 reset.c:89 sequencer.c:3478
+#: add-interactive.c:703 add-interactive.c:892 reset.c:89 sequencer.c:3486
 msgid "could not write index"
 msgstr "không thể ghi bảng mục lục"
 
@@ -219,7 +219,7 @@ msgstr "chưa đưa lên bệ phóng"
 
 #: add-interactive.c:1144 apply.c:4987 apply.c:4990 builtin/am.c:2257
 #: builtin/am.c:2260 builtin/bugreport.c:134 builtin/clone.c:124
-#: builtin/fetch.c:147 builtin/merge.c:284 builtin/pull.c:190
+#: builtin/fetch.c:150 builtin/merge.c:285 builtin/pull.c:190
 #: builtin/submodule--helper.c:409 builtin/submodule--helper.c:1818
 #: builtin/submodule--helper.c:1821 builtin/submodule--helper.c:2326
 #: builtin/submodule--helper.c:2329 builtin/submodule--helper.c:2572
@@ -805,7 +805,7 @@ msgstr ""
 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:281 builtin/merge.c:1369
+#: advice.c:281 builtin/merge.c:1370
 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)."
 
@@ -1108,7 +1108,8 @@ msgstr "gặp lỗi khi vá: %s:%ld"
 msgid "cannot checkout %s"
 msgstr "không thể lấy ra %s"
 
-#: apply.c:3405 apply.c:3416 apply.c:3462 midx.c:73 setup.c:308
+#: apply.c:3405 apply.c:3416 apply.c:3462 midx.c:86 pack-revindex.c:213
+#: setup.c:308
 #, c-format
 msgid "failed to read %s"
 msgstr "gặp lỗi khi đọc %s"
@@ -1267,7 +1268,7 @@ msgstr "không thể tạo “kho lưu đằng sau” cho tập tin được t
 msgid "unable to add cache entry for %s"
 msgstr "không thể thêm mục nhớ đệm cho %s"
 
-#: apply.c:4374 builtin/bisect--helper.c:524
+#: apply.c:4374 builtin/bisect--helper.c:523
 #, c-format
 msgid "failed to write to '%s'"
 msgstr "gặp lỗi khi ghi vào “%s”"
@@ -1302,7 +1303,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:4576 builtin/fetch.c:927 builtin/fetch.c:1228
+#: apply.c:4576 builtin/fetch.c:933 builtin/fetch.c:1334
 #, c-format
 msgid "cannot open %s"
 msgstr "không mở được “%s”"
@@ -1353,7 +1354,7 @@ 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:4960 builtin/add.c:618 builtin/mv.c:304 builtin/rm.c:406
+#: apply.c:4960 builtin/add.c:626 builtin/mv.c:304 builtin/rm.c:406
 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"
 
@@ -1425,7 +1426,7 @@ msgid "build a temporary index based on embedded index information"
 msgstr ""
 "xây dựng bảng mục lục tạm thời trên cơ sở thông tin bảng mục lục được nhúng"
 
-#: apply.c:5025 builtin/checkout-index.c:182 builtin/ls-files.c:525
+#: apply.c:5025 builtin/checkout-index.c:195 builtin/ls-files.c:540
 msgid "paths are separated with NUL character"
 msgstr "các đường dẫn bị ngăn cách bởi ký tự NULL"
 
@@ -1435,7 +1436,7 @@ msgstr "đảm bảo rằng có ít nhất <n> dòng ngữ cảnh khớp"
 
 #: apply.c:5028 builtin/am.c:2245 builtin/interpret-trailers.c:98
 #: builtin/interpret-trailers.c:100 builtin/interpret-trailers.c:102
-#: builtin/pack-objects.c:3562 builtin/rebase.c:1346
+#: builtin/pack-objects.c:3577 builtin/rebase.c:1352
 msgid "action"
 msgstr "hành động"
 
@@ -1463,9 +1464,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:5045 builtin/add.c:329 builtin/check-ignore.c:22
-#: builtin/commit.c:1364 builtin/count-objects.c:98 builtin/fsck.c:775
-#: builtin/log.c:2287 builtin/mv.c:123 builtin/read-tree.c:128
+#: apply.c:5045 builtin/add.c:337 builtin/check-ignore.c:22
+#: builtin/commit.c:1364 builtin/count-objects.c:98 builtin/fsck.c:757
+#: builtin/log.c:2286 builtin/mv.c:123 builtin/read-tree.c:128
 msgid "be verbose"
 msgstr "chi tiết"
 
@@ -1554,14 +1555,14 @@ msgstr "git archive --remote <kho> [--exec <lệnh>] --list"
 msgid "cannot read %s"
 msgstr "không thể đọc %s"
 
-#: archive.c:345 sequencer.c:459 sequencer.c:1736 sequencer.c:2886
-#: sequencer.c:3327 sequencer.c:3436 builtin/am.c:249 builtin/commit.c:786
-#: builtin/merge.c:1138
+#: archive.c:345 sequencer.c:459 sequencer.c:1744 sequencer.c:2894
+#: sequencer.c:3335 sequencer.c:3444 builtin/am.c:249 builtin/commit.c:786
+#: builtin/merge.c:1139
 #, c-format
 msgid "could not read '%s'"
 msgstr "không thể đọc “%s”"
 
-#: archive.c:430 builtin/add.c:181 builtin/add.c:594 builtin/rm.c:315
+#: archive.c:430 builtin/add.c:189 builtin/add.c:602 builtin/rm.c:315
 #, 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"
@@ -1603,7 +1604,7 @@ msgstr "định_dạng"
 msgid "archive format"
 msgstr "định dạng lưu trữ"
 
-#: archive.c:556 builtin/log.c:1765
+#: archive.c:556 builtin/log.c:1764
 msgid "prefix"
 msgstr "tiền_tố"
 
@@ -1611,11 +1612,11 @@ msgstr "tiền_tố"
 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:558 archive.c:561 builtin/blame.c:886 builtin/blame.c:890
-#: builtin/blame.c:891 builtin/commit-tree.c:117 builtin/config.c:135
+#: archive.c:558 archive.c:561 builtin/blame.c:884 builtin/blame.c:888
+#: builtin/blame.c:889 builtin/commit-tree.c:117 builtin/config.c:135
 #: builtin/fast-export.c:1207 builtin/fast-export.c:1209
-#: builtin/fast-export.c:1213 builtin/grep.c:919 builtin/hash-object.c:105
-#: builtin/ls-files.c:561 builtin/ls-files.c:564 builtin/notes.c:412
+#: builtin/fast-export.c:1213 builtin/grep.c:920 builtin/hash-object.c:105
+#: builtin/ls-files.c:576 builtin/ls-files.c:579 builtin/notes.c:412
 #: builtin/notes.c:578 builtin/read-tree.c:123 parse-options.h:190
 msgid "file"
 msgstr "tập_tin"
@@ -1781,12 +1782,12 @@ msgstr "Bisecting: nền hòa trộn cần phải được kiểm tra\n"
 msgid "a %s revision is needed"
 msgstr "cần một điểm xét duyệt %s"
 
-#: bisect.c:941 builtin/notes.c:177 builtin/tag.c:255
+#: bisect.c:941 builtin/notes.c:177 builtin/tag.c:287
 #, c-format
 msgid "could not create file '%s'"
 msgstr "không thể tạo tập tin “%s”"
 
-#: bisect.c:987 builtin/merge.c:152
+#: bisect.c:987 builtin/merge.c:153
 #, c-format
 msgid "could not read file '%s'"
 msgstr "không thể đọc tập tin “%s”"
@@ -1804,7 +1805,7 @@ msgstr "%s là cả %s và %s\n"
 #, c-format
 msgid ""
 "No testable commit found.\n"
-"Maybe you started with bad path parameters?\n"
+"Maybe you started with bad path arguments?\n"
 msgstr ""
 "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"
@@ -1837,11 +1838,11 @@ msgid "--reverse and --first-parent together require specified latest commit"
 msgstr ""
 "cùng sử dụng --reverse và --first-parent cần chỉ định lần chuyển giao cuối"
 
-#: blame.c:2821 bundle.c:213 ref-filter.c:2272 remote.c:2031 sequencer.c:2138
-#: sequencer.c:4633 submodule.c:855 builtin/commit.c:1045 builtin/log.c:409
-#: builtin/log.c:1023 builtin/log.c:1625 builtin/log.c:2046 builtin/log.c:2336
-#: builtin/merge.c:423 builtin/pack-objects.c:3380 builtin/pack-objects.c:3395
-#: builtin/shortlog.c:267
+#: blame.c:2821 bundle.c:213 ref-filter.c:2206 remote.c:2041 sequencer.c:2146
+#: sequencer.c:4641 submodule.c:856 builtin/commit.c:1045 builtin/log.c:411
+#: builtin/log.c:1016 builtin/log.c:1624 builtin/log.c:2045 builtin/log.c:2335
+#: builtin/merge.c:424 builtin/pack-objects.c:3395 builtin/pack-objects.c:3410
+#: builtin/shortlog.c:255
 msgid "revision walk setup failed"
 msgstr "cài đặt việc di chuyển qua các điểm xét duyệt gặp lỗi"
 
@@ -2023,7 +2024,7 @@ msgstr "“%s” không giống như tập tin v2 hay v3 bundle (định dạng
 msgid "unrecognized header: %s%s (%d)"
 msgstr "phần đầu không được thừa nhận: %s%s (%d)"
 
-#: bundle.c:136 rerere.c:480 rerere.c:690 sequencer.c:2390 sequencer.c:3176
+#: bundle.c:136 rerere.c:464 rerere.c:674 sequencer.c:2398 sequencer.c:3184
 #: builtin/commit.c:814
 #, c-format
 msgid "could not open '%s'"
@@ -2065,293 +2066,306 @@ msgstr "Không thể sản sinh đối tượng gói"
 msgid "pack-objects died"
 msgstr "đối tượng gói đã chết"
 
-#: bundle.c:379
-msgid "rev-list died"
-msgstr "rev-list đã chết"
-
-#: bundle.c:428
+#: bundle.c:386
 #, c-format
 msgid "ref '%s' is excluded by the rev-list options"
 msgstr "th.chiếu “%s” bị loại trừ bởi các tùy chọn rev-list"
 
-#: bundle.c:498
+#: bundle.c:490
 #, c-format
 msgid "unsupported bundle version %d"
 msgstr "phiên bản bundle %d không được hỗ trợ"
 
-#: bundle.c:500
+#: bundle.c:492
 #, c-format
 msgid "cannot write bundle version %d with algorithm %s"
 msgstr "không thể ghi phiên bản bundle %d với thuật toán %s"
 
-#: bundle.c:522 builtin/log.c:209 builtin/log.c:1927 builtin/shortlog.c:408
+#: bundle.c:510 builtin/log.c:210 builtin/log.c:1926 builtin/shortlog.c:396
 #, c-format
 msgid "unrecognized argument: %s"
 msgstr "đối số không được thừa nhận: %s"
 
-#: bundle.c:530
+#: bundle.c:539
 msgid "Refusing to create empty bundle."
 msgstr "Từ chối tạo một bó dữ liệu trống rỗng."
 
-#: bundle.c:540
+#: bundle.c:549
 #, c-format
 msgid "cannot create '%s'"
 msgstr "không thể tạo “%s”"
 
-#: bundle.c:565
+#: bundle.c:574
 msgid "index-pack died"
 msgstr "mục lục gói đã chết"
 
+#: chunk-format.c:113
+msgid "terminating chunk id appears earlier than expected"
+msgstr "mã mảnh kết thúc sớm hơn bình thường"
+
+#: chunk-format.c:122
+#, c-format
+msgid "improper chunk offset(s) %<PRIx64> and %<PRIx64>"
+msgstr "bù mảnh không đúng cách %<PRIx64> và %<PRIx64>"
+
+#: chunk-format.c:129
+#, c-format
+msgid "duplicate chunk ID %<PRIx32> found"
+msgstr "tìm thấy ID của mảnh bị trùng lặp %<PRIx32>"
+
+#: chunk-format.c:143
+#, c-format
+msgid "final chunk has non-zero id %<PRIx32>"
+msgstr "mảnh cuối cùng có id không bằng không %<PRIx32>"
+
 #: color.c:329
 #, c-format
 msgid "invalid color value: %.*s"
 msgstr "giá trị màu không hợp lệ: %.*s"
 
-#: commit-graph.c:188 midx.c:47
+#: commit-graph.c:197 midx.c:46
 msgid "invalid hash version"
 msgstr "phiên bản băm không hợp lệ"
 
-#: commit-graph.c:246
+#: commit-graph.c:255
 msgid "commit-graph file is too small"
 msgstr "tập tin đồ-thị-các-lần-chuyển-giao quá nhỏ"
 
-#: commit-graph.c:311
+#: commit-graph.c:348
 #, c-format
 msgid "commit-graph signature %X does not match signature %X"
 msgstr "chữ ký đồ-thị-các-lần-chuyển-giao %X không khớp chữ ký %X"
 
-#: commit-graph.c:318
+#: commit-graph.c:355
 #, c-format
 msgid "commit-graph version %X does not match version %X"
 msgstr "phiên bản đồ-thị-các-lần-chuyển-giao %X không khớp phiên bản %X"
 
-#: commit-graph.c:325
+#: commit-graph.c:362
 #, c-format
 msgid "commit-graph hash version %X does not match version %X"
 msgstr "phiên bản đồ-thị-các-lần-chuyển-giao %X không khớp phiên bản %X"
 
-#: commit-graph.c:342
+#: commit-graph.c:379
 #, c-format
 msgid "commit-graph file is too small to hold %u chunks"
 msgstr "tập tin đồ-thị-các-lần-chuyển-giao quá nhỏ để giữ %u mảnh dữ liệu"
 
-#: commit-graph.c:361
-#, c-format
-msgid "commit-graph improper chunk offset %08x%08x"
-msgstr "bù mảnh đồ-thị-các-lần-chuyển-giao không đúng chỗ %08x%08x"
-
-#: commit-graph.c:433
-#, c-format
-msgid "commit-graph chunk id %08x appears multiple times"
-msgstr "mã mảnh đồ-thị-các-lần-chuyển-giao %08x xuất hiện nhiều lần"
-
-#: commit-graph.c:499
+#: commit-graph.c:472
 msgid "commit-graph has no base graphs chunk"
 msgstr "đồ-thị-các-lần-chuyển-giao có không có mảnh các đồ họa cơ sở"
 
-#: commit-graph.c:509
+#: commit-graph.c:482
 msgid "commit-graph chain does not match"
 msgstr "móc xích đồ-thị-các-lần-chuyển-giao không khớp"
 
-#: commit-graph.c:557
+#: commit-graph.c:530
 #, c-format
 msgid "invalid commit-graph chain: line '%s' not a hash"
 msgstr ""
 "móc xích đồ-thị-các-lần-chuyển-giao không hợp lệ: dòng “%s” không phải là "
 "một mã băm"
 
-#: commit-graph.c:581
+#: commit-graph.c:554
 msgid "unable to find all commit-graph files"
 msgstr "không thể tìm thấy tất cả các tập tin đồ-thị-các-lần-chuyển-giao"
 
-#: commit-graph.c:721 commit-graph.c:785
+#: commit-graph.c:735 commit-graph.c:772
 msgid "invalid commit position. commit-graph is likely corrupt"
 msgstr ""
 "vị trí lần chuyển giao không hợp lệ. đồ-thị-các-lần-chuyển-giao có vẻ như đã "
 "bị hỏng"
 
-#: commit-graph.c:742
+#: commit-graph.c:756
 #, c-format
 msgid "could not find commit %s"
 msgstr "không thể tìm thấy lần chuyển giao %s"
 
-#: commit-graph.c:1036 builtin/am.c:1292
+#: commit-graph.c:789
+msgid "commit-graph requires overflow generation data but has none"
+msgstr "commit-graph yêu cầu dữ liệu tạo tràn nhưng không có"
+
+#: commit-graph.c:1065 builtin/am.c:1292
 #, c-format
 msgid "unable to parse commit %s"
 msgstr "không thể phân tích lần chuyển giao “%s”"
 
-#: commit-graph.c:1252 builtin/pack-objects.c:2864
+#: commit-graph.c:1327 builtin/pack-objects.c:2872
 #, c-format
 msgid "unable to get type of object %s"
 msgstr "không thể lấy kiểu của đối tượng “%s”"
 
-#: commit-graph.c:1283
+#: commit-graph.c:1358
 msgid "Loading known commits in commit graph"
 msgstr "Đang tải các lần chuyển giao chưa biết trong đồ thị lần chuyển giao"
 
-#: commit-graph.c:1300
+#: commit-graph.c:1375
 msgid "Expanding reachable commits in commit graph"
 msgstr ""
 "Mở rộng các lần chuyển giao có thể tiếp cận được trong trong đồ thị lần "
 "chuyển giao"
 
-#: commit-graph.c:1320
+#: commit-graph.c:1395
 msgid "Clearing commit marks in commit graph"
 msgstr "Đang dọn dẹp các đánh dấu lần chuyển giao trong đồ thị lần chuyển giao"
 
-#: commit-graph.c:1339
+#: commit-graph.c:1414
+msgid "Computing commit graph topological levels"
+msgstr "Đang tính mức hình học tô-pô tạo đồ thị các lần chuyển giao"
+
+#: commit-graph.c:1467
 msgid "Computing commit graph generation numbers"
 msgstr "Đang tính toán số tạo đồ thị các lần chuyển giao"
 
-#: commit-graph.c:1406
+#: commit-graph.c:1548
 msgid "Computing commit changed paths Bloom filters"
 msgstr "Đang tính toán chuyển giao các bộ lọc Bloom đường dẫn bị thay đổi"
 
-#: commit-graph.c:1483
+#: commit-graph.c:1625
 msgid "Collecting referenced commits"
 msgstr "Đang sưu tập các lần chuyển giao được tham chiếu"
 
-#: commit-graph.c:1508
+#: commit-graph.c:1650
 #, c-format
 msgid "Finding commits for commit graph in %d pack"
 msgid_plural "Finding commits for commit graph in %d packs"
 msgstr[0] ""
 "Đang tìm các lần chuyển giao cho đồ thị lần chuyển giao trong %d gói"
 
-#: commit-graph.c:1521
+#: commit-graph.c:1663
 #, c-format
 msgid "error adding pack %s"
 msgstr "gặp lỗi thêm gói %s"
 
-#: commit-graph.c:1525
+#: commit-graph.c:1667
 #, c-format
 msgid "error opening index for %s"
 msgstr "gặp lỗi khi mở mục lục cho “%s”"
 
-#: commit-graph.c:1562
+#: commit-graph.c:1704
 msgid "Finding commits for commit graph among packed objects"
 msgstr ""
 "Đang tìm các lần chuyển giao cho đồ thị lần chuyển giao trong số các đối "
 "tượng đã đóng gói"
 
-#: commit-graph.c:1580
+#: commit-graph.c:1722
 msgid "Finding extra edges in commit graph"
 msgstr "Đang tìm các cạnh mở tộng trong đồ thị lần chuyển giao"
 
-#: commit-graph.c:1628
+#: commit-graph.c:1771
 msgid "failed to write correct number of base graph ids"
 msgstr "gặp lỗi khi ghi số đúng của mã đồ họa cơ sở"
 
-#: commit-graph.c:1670 midx.c:819
+#: commit-graph.c:1802 midx.c:794
 #, c-format
 msgid "unable to create leading directories of %s"
 msgstr "không thể tạo các thư mục dẫn đầu của “%s”"
 
-#: commit-graph.c:1683
+#: commit-graph.c:1815
 msgid "unable to create temporary graph layer"
 msgstr "không thể tạo lớp sơ đồ tạm thời"
 
-#: commit-graph.c:1688
+#: commit-graph.c:1820
 #, c-format
 msgid "unable to adjust shared permissions for '%s'"
 msgstr "không thể chỉnh sửa quyền chia sẻ thành “%s”"
 
-#: commit-graph.c:1758
+#: commit-graph.c:1879
 #, c-format
 msgid "Writing out commit graph in %d pass"
 msgid_plural "Writing out commit graph in %d passes"
 msgstr[0] "Đang ghi ra đồ thị các lần chuyển giao trong lần %d"
 
-#: commit-graph.c:1803
+#: commit-graph.c:1915
 msgid "unable to open commit-graph chain file"
 msgstr "không thể mở tập tin mắt xích đồ thị chuyển giao"
 
-#: commit-graph.c:1819
+#: commit-graph.c:1931
 msgid "failed to rename base commit-graph file"
 msgstr "gặp lỗi khi đổi tên tập tin đồ-thị-các-lần-chuyển-giao"
 
-#: commit-graph.c:1839
+#: commit-graph.c:1951
 msgid "failed to rename temporary commit-graph file"
 msgstr "gặp lỗi khi đổi tên tập tin đồ-thị-các-lần-chuyển-giao tạm thời"
 
-#: commit-graph.c:1965
+#: commit-graph.c:2084
 msgid "Scanning merged commits"
 msgstr "Đang quét các lần chuyển giao đã hòa trộn"
 
-#: commit-graph.c:2009
+#: commit-graph.c:2128
 msgid "Merging commit-graph"
 msgstr "Đang hòa trộn đồ-thị-các-lần-chuyển-giao"
 
-#: commit-graph.c:2115
+#: commit-graph.c:2235
 msgid "attempting to write a commit-graph, but 'core.commitGraph' is disabled"
 msgstr ""
 "cố gắng để ghi một đồ thị các lần chuyển giao, nhưng “core.commitGraph” bị "
 "vô hiệu hóa"
 
-#: commit-graph.c:2214
+#: commit-graph.c:2342
 msgid "too many commits to write graph"
 msgstr "có quá nhiều lần chuyển giao để ghi đồ thị"
 
-#: commit-graph.c:2307
+#: commit-graph.c:2440
 msgid "the commit-graph file has incorrect checksum and is likely corrupt"
 msgstr ""
 "tập tin đồ-thị-các-lần-chuyển-giao có tổng kiểm không đúng và có vẻ như là "
 "đã hỏng"
 
-#: commit-graph.c:2317
+#: commit-graph.c:2450
 #, c-format
 msgid "commit-graph has incorrect OID order: %s then %s"
 msgstr "đồ-thị-các-lần-chuyển-giao có thứ tự OID không đúng: %s sau %s"
 
-#: commit-graph.c:2327 commit-graph.c:2342
+#: commit-graph.c:2460 commit-graph.c:2475
 #, c-format
 msgid "commit-graph has incorrect fanout value: fanout[%d] = %u != %u"
 msgstr ""
 "đồ-thị-các-lần-chuyển-giao có giá trị fanout không đúng: fanout[%d] = %u != "
 "%u"
 
-#: commit-graph.c:2334
+#: commit-graph.c:2467
 #, c-format
 msgid "failed to parse commit %s from commit-graph"
 msgstr "gặp lỗi khi phân tích lần chuyển giao từ %s đồ-thị-các-lần-chuyển-giao"
 
-#: commit-graph.c:2352
+#: commit-graph.c:2485
 msgid "Verifying commits in commit graph"
 msgstr "Đang thẩm tra các lần chuyển giao trong đồ thị lần chuyển giao"
 
-#: commit-graph.c:2367
+#: commit-graph.c:2500
 #, c-format
 msgid "failed to parse commit %s from object database for commit-graph"
 msgstr ""
 "gặp lỗi khi phân tích lần chuyển giao %s từ cơ sở dữ liệu đối tượng cho đồ "
 "thị lần chuyển giao"
 
-#: commit-graph.c:2374
+#: commit-graph.c:2507
 #, c-format
 msgid "root tree OID for commit %s in commit-graph is %s != %s"
 msgstr ""
 "OID cây gốc cho lần chuyển giao %s trong đồ-thị-các-lần-chuyển-giao là %s != "
 "%s"
 
-#: commit-graph.c:2384
+#: commit-graph.c:2517
 #, c-format
 msgid "commit-graph parent list for commit %s is too long"
 msgstr ""
 "danh sách cha mẹ đồ-thị-các-lần-chuyển-giao cho lần chuyển giao %s là quá dài"
 
-#: commit-graph.c:2393
+#: commit-graph.c:2526
 #, c-format
 msgid "commit-graph parent for %s is %s != %s"
 msgstr "cha mẹ đồ-thị-các-lần-chuyển-giao cho %s là %s != %s"
 
-#: commit-graph.c:2407
+#: commit-graph.c:2540
 #, c-format
 msgid "commit-graph parent list for commit %s terminates early"
 msgstr ""
 "danh sách cha mẹ đồ-thị-các-lần-chuyển-giao cho lần chuyển giao %s bị chấm "
 "dứt quá sớm"
 
-#: commit-graph.c:2412
+#: commit-graph.c:2545
 #, c-format
 msgid ""
 "commit-graph has generation number zero for commit %s, but non-zero elsewhere"
@@ -2359,7 +2373,7 @@ msgstr ""
 "đồ-thị-các-lần-chuyển-giao có con số không lần tạo cho lần chuyển giao %s, "
 "nhưng không phải số không ở chỗ khác"
 
-#: commit-graph.c:2416
+#: commit-graph.c:2549
 #, c-format
 msgid ""
 "commit-graph has non-zero generation number for commit %s, but zero elsewhere"
@@ -2367,19 +2381,21 @@ msgstr ""
 "đồ-thị-các-lần-chuyển-giao có con số không phải không lần tạo cho lần chuyển "
 "giao %s, nhưng số không ở chỗ khác"
 
-#: commit-graph.c:2432
+#: commit-graph.c:2566
 #, c-format
-msgid "commit-graph generation for commit %s is %u != %u"
-msgstr "tạo đồ-thị-các-lần-chuyển-giao cho lần chuyển giao %s là %u != %u"
+msgid "commit-graph generation for commit %s is %<PRIuMAX> < %<PRIuMAX>"
+msgstr ""
+"tạo đồ-thị-các-lần-chuyển-giao cho lần chuyển giao %s là %<PRIuMAX> < "
+"%<PRIuMAX>"
 
-#: commit-graph.c:2438
+#: commit-graph.c:2572
 #, c-format
 msgid "commit date for commit %s in commit-graph is %<PRIuMAX> != %<PRIuMAX>"
 msgstr ""
 "ngày chuyển giao cho lần chuyển giao %s trong đồ-thị-các-lần-chuyển-giao là "
 "%<PRIuMAX> != %<PRIuMAX>"
 
-#: commit.c:52 sequencer.c:2879 builtin/am.c:359 builtin/am.c:403
+#: commit.c:52 sequencer.c:2887 builtin/am.c:359 builtin/am.c:403
 #: builtin/am.c:1371 builtin/am.c:2018 builtin/replace.c:457
 #, c-format
 msgid "could not parse %s"
@@ -2410,28 +2426,28 @@ msgstr ""
 "Tắt lời nhắn này bằng cách chạy\n"
 "\"git config advice.graftFileDeprecated false\""
 
-#: commit.c:1172
+#: commit.c:1223
 #, c-format
 msgid "Commit %s has an untrusted GPG signature, allegedly by %s."
 msgstr ""
 "Lần chuyển giao %s có một chữ ký GPG không đáng tin, được cho là bởi %s."
 
-#: commit.c:1176
+#: commit.c:1227
 #, c-format
 msgid "Commit %s has a bad GPG signature allegedly by %s."
 msgstr "Lần chuyển giao %s có một chữ ký GPG sai, được cho là bởi %s."
 
-#: commit.c:1179
+#: commit.c:1230
 #, c-format
 msgid "Commit %s does not have a GPG signature."
 msgstr "Lần chuyển giao %s không có chữ ký GPG."
 
-#: commit.c:1182
+#: commit.c:1233
 #, c-format
 msgid "Commit %s has a good GPG signature by %s\n"
 msgstr "Lần chuyển giao %s có một chữ ký GPG tốt bởi %s\n"
 
-#: commit.c:1436
+#: commit.c:1487
 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"
@@ -2445,7 +2461,7 @@ msgstr ""
 msgid "memory exhausted"
 msgstr "hết bộ nhớ"
 
-#: config.c:125
+#: config.c:126
 #, c-format
 msgid ""
 "exceeded maximum include depth (%d) while including\n"
@@ -2460,291 +2476,335 @@ msgstr ""
 "\t%s\n"
 "Nguyên nhân có thể là gồm quẩn vòng."
 
-#: config.c:141
+#: config.c:142
 #, c-format
 msgid "could not expand include path '%s'"
 msgstr "không thể khai triển đường dẫn “%s”"
 
-#: config.c:152
+#: config.c:153
 msgid "relative config includes must come from files"
 msgstr "các bao gồm cấu hình liên quan phải đến từ các tập tin"
 
-#: config.c:198
+#: config.c:199
 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:378
+#: config.c:396
+#, c-format
+msgid "invalid config format: %s"
+msgstr "định dạng cấu hình không hợp lệ: %s"
+
+#: config.c:400
+#, c-format
+msgid "missing environment variable name for configuration '%.*s'"
+msgstr "thiếu tên biến môi trường cho cấu hình '%.*s'"
+
+#: config.c:405
+#, c-format
+msgid "missing environment variable '%s' for configuration '%.*s'"
+msgstr "thiếu biến môi trường '%s' cho cấu hình '%.*s'"
+
+#: config.c:442
 #, c-format
 msgid "key does not contain a section: %s"
 msgstr "khóa không chứa một phần: %s"
 
-#: config.c:384
+#: config.c:448
 #, c-format
 msgid "key does not contain variable name: %s"
 msgstr "khóa không chứa bất kỳ một tên biến nào: %s"
 
-#: config.c:408 sequencer.c:2580
+#: config.c:472 sequencer.c:2588
 #, c-format
 msgid "invalid key: %s"
 msgstr "khóa không đúng: %s"
 
-#: config.c:414
+#: config.c:478
 #, c-format
 msgid "invalid key (newline): %s"
 msgstr "khóa không hợp lệ (dòng mới): %s"
 
-#: config.c:450 config.c:462
+#: config.c:511
+msgid "empty config key"
+msgstr "khóa cấu hình trống rỗng"
+
+#: config.c:529 config.c:541
 #, c-format
 msgid "bogus config parameter: %s"
 msgstr "tham số cấu hình không có thực: %s"
 
-#: config.c:497
+#: config.c:555 config.c:572 config.c:579 config.c:588
 #, c-format
 msgid "bogus format in %s"
 msgstr "định dạng không có thực trong %s"
 
-#: config.c:836
+#: config.c:622
+#, c-format
+msgid "bogus count in %s"
+msgstr "số lượng không có thực trong %s"
+
+#: config.c:626
+#, c-format
+msgid "too many entries in %s"
+msgstr "quá nhiều mục tin trong %s"
+
+#: config.c:636
+#, c-format
+msgid "missing config key %s"
+msgstr "thiếu khóa cấu hình “%s”"
+
+#: config.c:644
+#, c-format
+msgid "missing config value %s"
+msgstr "thiếu giá trị cấu hình “%s”"
+
+#: config.c:995
 #, 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:840
+#: config.c:999
 #, 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:844
+#: config.c:1003
 #, 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:848
+#: config.c:1007
 #, 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:852
+#: config.c:1011
 #, 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:856
+#: config.c:1015
 #, c-format
 msgid "bad config line %d in %s"
 msgstr "cấu hình sai tại dòng %d trong %s"
 
-#: config.c:993
+#: config.c:1152
 msgid "out of range"
 msgstr "nằm ngoài phạm vi"
 
-#: config.c:993
+#: config.c:1152
 msgid "invalid unit"
 msgstr "đơn vị không hợp lệ"
 
-#: config.c:994
+#: config.c:1153
 #, 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:1013
+#: config.c:1163
 #, 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:1016
+#: config.c:1166
 #, 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:1019
+#: config.c:1169
 #, 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:1022
+#: config.c:1172
 #, 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:1025
+#: config.c:1175
 #, 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:1028
+#: config.c:1178
 #, 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:1123
+#: config.c:1194
+#, c-format
+msgid "bad boolean config value '%s' for '%s'"
+msgstr "sai giá trị kiểu lô-gíc của cấu hình “%s” cho “%s”"
+
+#: config.c:1289
 #, 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:1132
+#: config.c:1298
 #, 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:1223
+#: config.c:1391
 #, c-format
 msgid "abbrev length out of range: %d"
 msgstr "chiều dài abbrev nằm ngoài phạm vi: %d"
 
-#: config.c:1237 config.c:1248
+#: config.c:1405 config.c:1416
 #, c-format
 msgid "bad zlib compression level %d"
 msgstr "mức nén zlib %d là sai"
 
-#: config.c:1340
+#: config.c:1508
 msgid "core.commentChar should only be one character"
 msgstr "core.commentChar chỉ được có một ký tự"
 
-#: config.c:1373
+#: config.c:1541
 #, 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:1445
+#: config.c:1613
 #, c-format
 msgid "malformed value for %s"
 msgstr "giá trị cho %s sai dạng"
 
-#: config.c:1471
+#: config.c:1639
 #, c-format
 msgid "malformed value for %s: %s"
 msgstr "giá trị cho %s sai dạng: %s"
 
-#: config.c:1472
+#: config.c:1640
 msgid "must be one of nothing, matching, simple, upstream or current"
 msgstr "phải là một trong số nothing, matching, simple, upstream hay current"
 
-#: config.c:1533 builtin/pack-objects.c:3649
+#: config.c:1701 builtin/pack-objects.c:3666
 #, c-format
 msgid "bad pack compression level %d"
 msgstr "mức nén gói %d không hợp lệ"
 
-#: config.c:1655
+#: config.c:1823
 #, c-format
 msgid "unable to load config blob object '%s'"
 msgstr "không thể tải đối tượng blob cấu hình “%s”"
 
-#: config.c:1658
+#: config.c:1826
 #, c-format
 msgid "reference '%s' does not point to a blob"
 msgstr "tham chiếu “%s” không chỉ đến một blob nào cả"
 
-#: config.c:1675
+#: config.c:1843
 #, c-format
 msgid "unable to resolve config blob '%s'"
 msgstr "không thể phân giải điểm xét duyệt “%s”"
 
-#: config.c:1705
+#: config.c:1873
 #, c-format
 msgid "failed to parse %s"
 msgstr "gặp lỗi khi phân tích cú pháp %s"
 
-#: config.c:1759
+#: config.c:1927
 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:2122
+#: config.c:2290
 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:2296
+#: config.c:2464
 #, c-format
 msgid "Invalid %s: '%s'"
 msgstr "%s không hợp lệ: “%s”"
 
-#: config.c:2341
+#: config.c:2509
 #, 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:2387
+#: config.c:2555
 #, 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:2389
+#: config.c:2557
 #, 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:2473
+#: config.c:2641
 #, c-format
 msgid "invalid section name '%s'"
 msgstr "tên của phần không hợp lệ “%s”"
 
-#: config.c:2505
+#: config.c:2673
 #, c-format
 msgid "%s has multiple values"
 msgstr "%s có đa giá trị"
 
-#: config.c:2534
+#: config.c:2702
 #, c-format
 msgid "failed to write new configuration file %s"
 msgstr "gặp lỗi khi ghi tập tin cấu hình “%s”"
 
-#: config.c:2786 config.c:3112
+#: config.c:2954 config.c:3280
 #, c-format
 msgid "could not lock config file %s"
 msgstr "không thể khóa tập tin cấu hình %s"
 
-#: config.c:2797
+#: config.c:2965
 #, c-format
 msgid "opening %s"
 msgstr "đang mở “%s”"
 
-#: config.c:2834 builtin/config.c:361
+#: config.c:3002 builtin/config.c:361
 #, c-format
 msgid "invalid pattern: %s"
 msgstr "mẫu không hợp lệ: %s"
 
-#: config.c:2859
+#: config.c:3027
 #, c-format
 msgid "invalid config file %s"
 msgstr "tập tin cấu hình “%s” không hợp lệ"
 
-#: config.c:2872 config.c:3125
+#: config.c:3040 config.c:3293
 #, c-format
 msgid "fstat on %s failed"
 msgstr "fstat trên %s gặp lỗi"
 
-#: config.c:2883
+#: config.c:3051
 #, c-format
 msgid "unable to mmap '%s'"
 msgstr "không thể mmap “%s”"
 
-#: config.c:2892 config.c:3130
+#: config.c:3060 config.c:3298
 #, c-format
 msgid "chmod on %s failed"
 msgstr "chmod trên %s gặp lỗi"
 
-#: config.c:2977 config.c:3227
+#: config.c:3145 config.c:3395
 #, c-format
 msgid "could not write config file %s"
 msgstr "không thể ghi tập tin cấu hình “%s”"
 
-#: config.c:3011
+#: config.c:3179
 #, c-format
 msgid "could not set '%s' to '%s'"
 msgstr "không thể đặt “%s” thành “%s”"
 
-#: config.c:3013 builtin/remote.c:657 builtin/remote.c:855 builtin/remote.c:863
+#: config.c:3181 builtin/remote.c:657 builtin/remote.c:855 builtin/remote.c:863
 #, c-format
 msgid "could not unset '%s'"
 msgstr "không thể thôi đặt “%s”"
 
-#: config.c:3103
+#: config.c:3271
 #, c-format
 msgid "invalid section name: %s"
 msgstr "tên của phần không hợp lệ: %s"
 
-#: config.c:3270
+#: config.c:3438
 #, c-format
 msgid "missing value for '%s'"
 msgstr "thiếu giá trị cho cho “%s”"
@@ -2806,45 +2866,45 @@ msgstr "gói không hợp lệ"
 msgid "protocol error: unexpected '%s'"
 msgstr "lỗi giao thức: không cần “%s”"
 
-#: connect.c:473
+#: connect.c:497
 #, c-format
 msgid "unknown object format '%s' specified by server"
 msgstr "không hiểu định dạng đối tượng “%s” được chỉ định bởi máy phục vụ"
 
-#: connect.c:500
+#: connect.c:526
 #, c-format
 msgid "invalid ls-refs response: %s"
 msgstr "trả về của ls-refs không hợp lệ: %s"
 
-#: connect.c:504
+#: connect.c:530
 msgid "expected flush after ref listing"
 msgstr "cần đẩy dữ liệu lên đĩa sau khi liệt kê tham chiếu"
 
-#: connect.c:507
+#: connect.c:533
 msgid "expected response end packet after ref listing"
 msgstr "cần nhận được trả lời là kết thúc gói sau khi liệt kê tham chiếu"
 
-#: connect.c:640
+#: connect.c:666
 #, c-format
 msgid "protocol '%s' is not supported"
 msgstr "giao thức “%s” chưa được hỗ trợ"
 
-#: connect.c:691
+#: connect.c:717
 msgid "unable to set SO_KEEPALIVE on socket"
 msgstr "không thể đặt SO_KEEPALIVE trên ổ cắm"
 
-#: connect.c:731 connect.c:794
+#: connect.c:757 connect.c:820
 #, c-format
 msgid "Looking up %s ... "
 msgstr "Đang tìm kiếm %s … "
 
-#: connect.c:735
+#: connect.c:761
 #, c-format
 msgid "unable to look up %s (port %s) (%s)"
 msgstr "không tìm được %s (cổng %s) (%s)"
 
 #. TRANSLATORS: this is the end of "Looking up %s ... "
-#: connect.c:739 connect.c:810
+#: connect.c:765 connect.c:836
 #, c-format
 msgid ""
 "done.\n"
@@ -2853,7 +2913,7 @@ msgstr ""
 "xong.\n"
 "Đang kết nối đến %s (cổng %s) … "
 
-#: connect.c:761 connect.c:838
+#: connect.c:787 connect.c:864
 #, c-format
 msgid ""
 "unable to connect to %s:\n"
@@ -2863,61 +2923,65 @@ msgstr ""
 "%s"
 
 #. TRANSLATORS: this is the end of "Connecting to %s (port %s) ... "
-#: connect.c:767 connect.c:844
+#: connect.c:793 connect.c:870
 msgid "done."
 msgstr "hoàn tất."
 
-#: connect.c:798
+#: connect.c:824
 #, c-format
 msgid "unable to look up %s (%s)"
 msgstr "không thể tìm thấy %s (%s)"
 
-#: connect.c:804
+#: connect.c:830
 #, c-format
 msgid "unknown port %s"
 msgstr "không hiểu cổng %s"
 
-#: connect.c:941 connect.c:1271
+#: connect.c:967 connect.c:1299
 #, c-format
 msgid "strange hostname '%s' blocked"
 msgstr "đã khóa tên máy lạ “%s”"
 
-#: connect.c:943
+#: connect.c:969
 #, c-format
 msgid "strange port '%s' blocked"
 msgstr "đã khóa cổng lạ “%s”"
 
-#: connect.c:953
+#: connect.c:979
 #, c-format
 msgid "cannot start proxy %s"
 msgstr "không thể khởi chạy ủy nhiệm “%s”"
 
-#: connect.c:1024
+#: connect.c:1050
 msgid "no path specified; see 'git help pull' for valid url syntax"
 msgstr "chưa chỉ định đường dẫn; xem'git help pull” để biết cú pháp url hợp lệ"
 
-#: connect.c:1219
+#: connect.c:1190
+msgid "newline is forbidden in git:// hosts and repo paths"
+msgstr "newline bị cấm trong các git:// máy chủ và đường dẫn repo"
+
+#: connect.c:1247
 msgid "ssh variant 'simple' does not support -4"
 msgstr "ssh biến thể “simple” không hỗ trợ -4"
 
-#: connect.c:1231
+#: connect.c:1259
 msgid "ssh variant 'simple' does not support -6"
 msgstr "ssh biến thể “simple” không hỗ trợ -6"
 
-#: connect.c:1248
+#: connect.c:1276
 msgid "ssh variant 'simple' does not support setting port"
 msgstr "ssh biến thể “simple” không hỗ trợ đặt cổng"
 
-#: connect.c:1360
+#: connect.c:1388
 #, c-format
 msgid "strange pathname '%s' blocked"
 msgstr "đã khóa tên đường dẫn lạ “%s”"
 
-#: connect.c:1408
+#: connect.c:1436
 msgid "unable to fork"
 msgstr "không thể rẽ nhánh tiến trình con"
 
-#: connected.c:108 builtin/fsck.c:209 builtin/prune.c:45
+#: connected.c:108 builtin/fsck.c:191 builtin/prune.c:45
 msgid "Checking connectivity"
 msgstr "Đang kiểm tra kết nối"
 
@@ -3172,6 +3236,11 @@ msgstr ""
 msgid "Marked %d islands, done.\n"
 msgstr "Đã đánh dấu %d island, xong.\n"
 
+#: diff-merges.c:70
+#, c-format
+msgid "unknown value for --diff-merges: %s"
+msgstr "không hiểu giá trị cho --diff-merges: %s"
+
 #: diff-lib.c:534
 msgid "--merge-base does not work with ranges"
 msgstr "--merge-base không hoạt động với phạm vi"
@@ -3259,30 +3328,30 @@ msgstr ""
 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:4625
+#: diff.c:4628
 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:4628
+#: diff.c:4631
 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:4707
+#: diff.c:4710
 msgid "--follow requires exactly one pathspec"
 msgstr "--follow cần chính xác một đặc tả đường dẫn"
 
-#: diff.c:4755
+#: diff.c:4758
 #, c-format
 msgid "invalid --stat value: %s"
 msgstr "giá trị --stat không hợp lệ: “%s”"
 
-#: diff.c:4760 diff.c:4765 diff.c:4770 diff.c:4775 diff.c:5303
+#: diff.c:4763 diff.c:4768 diff.c:4773 diff.c:4778 diff.c:5306
 #: parse-options.c:197 parse-options.c:201 builtin/commit-graph.c:180
 #, c-format
 msgid "%s expects a numerical value"
 msgstr "tùy chọn “%s” cần một giá trị bằng số"
 
-#: diff.c:4792
+#: diff.c:4795
 #, c-format
 msgid ""
 "Failed to parse --dirstat/-X option parameter:\n"
@@ -3291,42 +3360,42 @@ msgstr ""
 "Gặp lỗi khi phân tích đối số tùy chọn --dirstat/-X:\n"
 "%s"
 
-#: diff.c:4877
+#: diff.c:4880
 #, c-format
 msgid "unknown change class '%c' in --diff-filter=%s"
 msgstr "không hiểu lớp thay đổi “%c” trong --diff-filter=%s"
 
-#: diff.c:4901
+#: diff.c:4904
 #, c-format
 msgid "unknown value after ws-error-highlight=%.*s"
 msgstr "không hiểu giá trị sau ws-error-highlight=%.*s"
 
-#: diff.c:4915
+#: diff.c:4918
 #, c-format
 msgid "unable to resolve '%s'"
 msgstr "không thể phân giải “%s”"
 
-#: diff.c:4965 diff.c:4971
+#: diff.c:4968 diff.c:4974
 #, c-format
 msgid "%s expects <n>/<m> form"
 msgstr "%s cần dạng <n>/<m>"
 
-#: diff.c:4983
+#: diff.c:4986
 #, c-format
 msgid "%s expects a character, got '%s'"
 msgstr "%s cần một ký tự, nhưng lại nhận được “%s”"
 
-#: diff.c:5004
+#: diff.c:5007
 #, c-format
 msgid "bad --color-moved argument: %s"
 msgstr "đối số --color-moved sai: %s"
 
-#: diff.c:5023
+#: diff.c:5026
 #, c-format
 msgid "invalid mode '%s' in --color-moved-ws"
 msgstr "chế độ “%s” không hợp lệ trong --color-moved-ws"
 
-#: diff.c:5063
+#: diff.c:5066
 msgid ""
 "option diff-algorithm accepts \"myers\", \"minimal\", \"patience\" and "
 "\"histogram\""
@@ -3334,155 +3403,155 @@ msgstr ""
 "tùy chọn  diff-algorithm chấp nhận \"myers\", \"minimal\", \"patience\" và "
 "\"histogram\""
 
-#: diff.c:5099 diff.c:5119
+#: diff.c:5102 diff.c:5122
 #, c-format
 msgid "invalid argument to %s"
 msgstr "tham số cho %s không hợp lệ"
 
-#: diff.c:5223
+#: diff.c:5226
 #, c-format
 msgid "invalid regex given to -I: '%s'"
 msgstr "đưa cho -I biểu thức chính quy không hợp lệ: “%s”"
 
-#: diff.c:5272
+#: diff.c:5275
 #, 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:5328
+#: diff.c:5331
 #, c-format
 msgid "bad --word-diff argument: %s"
 msgstr "đối số --word-diff sai: %s"
 
-#: diff.c:5351
+#: diff.c:5367
 msgid "Diff output format options"
 msgstr "Các tùy chọn định dạng khi xuất các khác biệt"
 
-#: diff.c:5353 diff.c:5359
+#: diff.c:5369 diff.c:5375
 msgid "generate patch"
 msgstr "tạo miếng vá"
 
-#: diff.c:5356 builtin/log.c:178
+#: diff.c:5372 builtin/log.c:179
 msgid "suppress diff output"
 msgstr "chặn mọi kết xuất từ diff"
 
-#: diff.c:5361 diff.c:5475 diff.c:5482
+#: diff.c:5377 diff.c:5491 diff.c:5498
 msgid "<n>"
 msgstr "<n>"
 
-#: diff.c:5362 diff.c:5365
+#: diff.c:5378 diff.c:5381
 msgid "generate diffs with <n> lines context"
 msgstr "tạo khác biệt với <n> dòng ngữ cảnh"
 
-#: diff.c:5367
+#: diff.c:5383
 msgid "generate the diff in raw format"
 msgstr "tạo khác biệt ở định dạng thô"
 
-#: diff.c:5370
+#: diff.c:5386
 msgid "synonym for '-p --raw'"
 msgstr "đồng nghĩa với “-p --raw”"
 
-#: diff.c:5374
+#: diff.c:5390
 msgid "synonym for '-p --stat'"
 msgstr "đồng nghĩa với “-p --stat”"
 
-#: diff.c:5378
+#: diff.c:5394
 msgid "machine friendly --stat"
 msgstr "--stat thuận tiện cho máy đọc"
 
-#: diff.c:5381
+#: diff.c:5397
 msgid "output only the last line of --stat"
 msgstr "chỉ xuất những dòng cuối của --stat"
 
-#: diff.c:5383 diff.c:5391
+#: diff.c:5399 diff.c:5407
 msgid "<param1,param2>..."
 msgstr "<tham_số_1,tham_số_2>…"
 
-#: diff.c:5384
+#: diff.c:5400
 msgid ""
 "output the distribution of relative amount of changes for each sub-directory"
 msgstr "đầu ra phân phối của số lượng thay đổi tương đối cho mỗi thư mục con"
 
-#: diff.c:5388
+#: diff.c:5404
 msgid "synonym for --dirstat=cumulative"
 msgstr "đồng nghĩa với --dirstat=cumulative"
 
-#: diff.c:5392
+#: diff.c:5408
 msgid "synonym for --dirstat=files,param1,param2..."
 msgstr "đồng nghĩa với --dirstat=files,param1,param2…"
 
-#: diff.c:5396
+#: diff.c:5412
 msgid "warn if changes introduce conflict markers or whitespace errors"
 msgstr ""
 "cảnh báo nếu các thay đổi đưa ra các bộ tạo xung đột hay lỗi khoảng trắng"
 
-#: diff.c:5399
+#: diff.c:5415
 msgid "condensed summary such as creations, renames and mode changes"
 msgstr "tổng hợp dạng xúc tích như là tạo, đổi tên và các thay đổi chế độ"
 
-#: diff.c:5402
+#: diff.c:5418
 msgid "show only names of changed files"
 msgstr "chỉ hiển thị tên của các tập tin đổi"
 
-#: diff.c:5405
+#: diff.c:5421
 msgid "show only names and status of changed files"
 msgstr "chỉ hiển thị tên tập tin và tình trạng của các tập tin bị thay đổi"
 
-#: diff.c:5407
+#: diff.c:5423
 msgid "<width>[,<name-width>[,<count>]]"
 msgstr "<rộng>[,<name-width>[,<số-lượng>]]"
 
-#: diff.c:5408
+#: diff.c:5424
 msgid "generate diffstat"
 msgstr "tạo diffstat"
 
-#: diff.c:5410 diff.c:5413 diff.c:5416
+#: diff.c:5426 diff.c:5429 diff.c:5432
 msgid "<width>"
 msgstr "<rộng>"
 
-#: diff.c:5411
+#: diff.c:5427
 msgid "generate diffstat with a given width"
 msgstr "tạo diffstat với độ rộng đã cho"
 
-#: diff.c:5414
+#: diff.c:5430
 msgid "generate diffstat with a given name width"
 msgstr "tạo diffstat với tên độ rộng đã cho"
 
-#: diff.c:5417
+#: diff.c:5433
 msgid "generate diffstat with a given graph width"
 msgstr "tạo diffstat với độ rộng đồ thị đã cho"
 
-#: diff.c:5419
+#: diff.c:5435
 msgid "<count>"
 msgstr "<số_lượng>"
 
-#: diff.c:5420
+#: diff.c:5436
 msgid "generate diffstat with limited lines"
 msgstr "tạo diffstat với các dòng bị giới hạn"
 
-#: diff.c:5423
+#: diff.c:5439
 msgid "generate compact summary in diffstat"
 msgstr "tạo tổng hợp xúc tích trong diffstat"
 
-#: diff.c:5426
+#: diff.c:5442
 msgid "output a binary diff that can be applied"
 msgstr "xuất ra một khác biệt dạng nhị phân cái mà có thể được áp dụng"
 
-#: diff.c:5429
+#: diff.c:5445
 msgid "show full pre- and post-image object names on the \"index\" lines"
 msgstr ""
 "hiển thị đầy đủ các tên đối tượng pre- và post-image trên các dòng \"mục lục"
 "\""
 
-#: diff.c:5431
+#: diff.c:5447
 msgid "show colored diff"
 msgstr "hiển thị thay đổi được tô màu"
 
-#: diff.c:5432
+#: diff.c:5448
 msgid "<kind>"
 msgstr "<kiểu>"
 
-#: diff.c:5433
+#: diff.c:5449
 msgid ""
 "highlight whitespace errors in the 'context', 'old' or 'new' lines in the "
 "diff"
@@ -3490,7 +3559,7 @@ msgstr ""
 "tô sáng các lỗi về khoảng trắng trong các dòng “context”, “old” và “new” "
 "trong khác biệt"
 
-#: diff.c:5436
+#: diff.c:5452
 msgid ""
 "do not munge pathnames and use NULs as output field terminators in --raw or "
 "--numstat"
@@ -3498,89 +3567,89 @@ msgstr ""
 "không munge tên đường dẫn và sử dụng NUL làm bộ phân tách trường đầu ra "
 "trong --raw hay --numstat"
 
-#: diff.c:5439 diff.c:5442 diff.c:5445 diff.c:5554
+#: diff.c:5455 diff.c:5458 diff.c:5461 diff.c:5570
 msgid "<prefix>"
 msgstr "<tiền_tố>"
 
-#: diff.c:5440
+#: diff.c:5456
 msgid "show the given source prefix instead of \"a/\""
 msgstr "hiển thị tiền tố nguồn đã cho thay cho \"a/\""
 
-#: diff.c:5443
+#: diff.c:5459
 msgid "show the given destination prefix instead of \"b/\""
 msgstr "hiển thị tiền tố đích đã cho thay cho \"b/\""
 
-#: diff.c:5446
+#: diff.c:5462
 msgid "prepend an additional prefix to every line of output"
 msgstr "treo vào trước một tiền tố bổ sung cho mỗi dòng kết xuất"
 
-#: diff.c:5449
+#: diff.c:5465
 msgid "do not show any source or destination prefix"
 msgstr "đừng hiển thị bất kỳ tiền tố nguồn hay đích"
 
-#: diff.c:5452
+#: diff.c:5468
 msgid "show context between diff hunks up to the specified number of lines"
 msgstr ""
 "hiển thị ngữ cảnh giữa các khúc khác biệt khi đạt đến số lượng dòng đã chỉ "
 "định"
 
-#: diff.c:5456 diff.c:5461 diff.c:5466
+#: diff.c:5472 diff.c:5477 diff.c:5482
 msgid "<char>"
 msgstr "<ký_tự>"
 
-#: diff.c:5457
+#: diff.c:5473
 msgid "specify the character to indicate a new line instead of '+'"
 msgstr "chỉ định một ký tự để biểu thị một dòng được thêm mới thay cho “+”"
 
-#: diff.c:5462
+#: diff.c:5478
 msgid "specify the character to indicate an old line instead of '-'"
 msgstr "chỉ định một ký tự để biểu thị một dòng đã cũ thay cho “-”"
 
-#: diff.c:5467
+#: diff.c:5483
 msgid "specify the character to indicate a context instead of ' '"
 msgstr "chỉ định một ký tự để biểu thị một ngữ cảnh thay cho “”"
 
-#: diff.c:5470
+#: diff.c:5486
 msgid "Diff rename options"
 msgstr "Tùy chọn khác biệt đổi tên"
 
-#: diff.c:5471
+#: diff.c:5487
 msgid "<n>[/<m>]"
 msgstr "<n>[/<m>]"
 
-#: diff.c:5472
+#: diff.c:5488
 msgid "break complete rewrite changes into pairs of delete and create"
 msgstr "ngắt các thay đổi ghi lại hoàn thiện thành cặp của xóa và tạo"
 
-#: diff.c:5476
+#: diff.c:5492
 msgid "detect renames"
 msgstr "dò tìm các tên thay đổi"
 
-#: diff.c:5480
+#: diff.c:5496
 msgid "omit the preimage for deletes"
 msgstr "bỏ qua preimage (tiền ảnh??) cho các việc xóa"
 
-#: diff.c:5483
+#: diff.c:5499
 msgid "detect copies"
 msgstr "dò bản sao"
 
-#: diff.c:5487
+#: diff.c:5503
 msgid "use unmodified files as source to find copies"
 msgstr "dùng các tập tin không bị chỉnh sửa như là nguồn để tìm các bản sao"
 
-#: diff.c:5489
+#: diff.c:5505
 msgid "disable rename detection"
 msgstr "tắt dò tìm đổi tên"
 
-#: diff.c:5492
+#: diff.c:5508
 msgid "use empty blobs as rename source"
 msgstr "dùng các blob trống rống như là nguồn đổi tên"
 
-#: diff.c:5494
+#: diff.c:5510
 msgid "continue listing the history of a file beyond renames"
 msgstr "tiếp tục liệt kê lịch sử của một tập tin ngoài đổi tên"
 
-#: diff.c:5497
+#: diff.c:5513
 msgid ""
 "prevent rename/copy detection if the number of rename/copy targets exceeds "
 "given limit"
@@ -3588,160 +3657,160 @@ msgstr ""
 "ngăn cản dò tìm đổi tên/bản sao nếu số lượng của đích đổi tên/bản sao vượt "
 "quá giới hạn đưa ra"
 
-#: diff.c:5499
+#: diff.c:5515
 msgid "Diff algorithm options"
 msgstr "Tùy chọn thuật toán khác biệt"
 
-#: diff.c:5501
+#: diff.c:5517
 msgid "produce the smallest possible diff"
 msgstr "sản sinh khác biệt ít nhất có thể"
 
-#: diff.c:5504
+#: diff.c:5520
 msgid "ignore whitespace when comparing lines"
 msgstr "lờ đi sự thay đổi do khoảng trắng gây ra khi so sánh các dòng"
 
-#: diff.c:5507
+#: diff.c:5523
 msgid "ignore changes in amount of whitespace"
 msgstr "lờ đi sự thay đổi do số lượng khoảng trắng gây ra"
 
-#: diff.c:5510
+#: diff.c:5526
 msgid "ignore changes in whitespace at EOL"
 msgstr "lờ đi sự thay đổi do khoảng trắng gây ra khi ở cuối dòng EOL"
 
-#: diff.c:5513
+#: diff.c:5529
 msgid "ignore carrier-return at the end of line"
 msgstr "bỏ qua ký tự về đầu dòng tại cuối dòng"
 
-#: diff.c:5516
+#: diff.c:5532
 msgid "ignore changes whose lines are all blank"
 msgstr "bỏ qua các thay đổi cho toàn bộ các dòng là trống"
 
-#: diff.c:5518 diff.c:5540 diff.c:5543 diff.c:5588
+#: diff.c:5534 diff.c:5556 diff.c:5559 diff.c:5604
 msgid "<regex>"
 msgstr "<regex>"
 
-#: diff.c:5519
+#: diff.c:5535
 msgid "ignore changes whose all lines match <regex>"
 msgstr "bỏ qua các thay đổi có tất cả các dòng khớp <regex>"
 
-#: diff.c:5522
+#: diff.c:5538
 msgid "heuristic to shift diff hunk boundaries for easy reading"
 msgstr "heuristic để dịch hạn biên của khối khác biệt cho dễ đọc"
 
-#: diff.c:5525
+#: diff.c:5541
 msgid "generate diff using the \"patience diff\" algorithm"
 msgstr "tạo khác biệt sử dung thuật toán \"patience diff\""
 
-#: diff.c:5529
+#: diff.c:5545
 msgid "generate diff using the \"histogram diff\" algorithm"
 msgstr "tạo khác biệt sử dung thuật toán \"histogram diff\""
 
-#: diff.c:5531
+#: diff.c:5547
 msgid "<algorithm>"
 msgstr "<thuật toán>"
 
-#: diff.c:5532
+#: diff.c:5548
 msgid "choose a diff algorithm"
 msgstr "chọn một thuật toán khác biệt"
 
-#: diff.c:5534
+#: diff.c:5550
 msgid "<text>"
 msgstr "<văn bản>"
 
-#: diff.c:5535
+#: diff.c:5551
 msgid "generate diff using the \"anchored diff\" algorithm"
 msgstr "tạo khác biệt sử dung thuật toán \"anchored diff\""
 
-#: diff.c:5537 diff.c:5546 diff.c:5549
+#: diff.c:5553 diff.c:5562 diff.c:5565
 msgid "<mode>"
 msgstr "<chế độ>"
 
-#: diff.c:5538
+#: diff.c:5554
 msgid "show word diff, using <mode> to delimit changed words"
 msgstr ""
 "hiển thị khác biệt từ, sử dụng <chế độ> để bỏ giới hạn các từ bị thay đổi"
 
-#: diff.c:5541
+#: diff.c:5557
 msgid "use <regex> to decide what a word is"
 msgstr "dùng <regex> để quyết định từ là cái gì"
 
-#: diff.c:5544
+#: diff.c:5560
 msgid "equivalent to --word-diff=color --word-diff-regex=<regex>"
 msgstr "tương đương với --word-diff=color --word-diff-regex=<regex>"
 
-#: diff.c:5547
+#: diff.c:5563
 msgid "moved lines of code are colored differently"
 msgstr "các dòng di chuyển của mã mà được tô màu khác nhau"
 
-#: diff.c:5550
+#: diff.c:5566
 msgid "how white spaces are ignored in --color-moved"
 msgstr "cách bỏ qua khoảng trắng trong --color-moved"
 
-#: diff.c:5553
+#: diff.c:5569
 msgid "Other diff options"
 msgstr "Các tùy chọn khác biệt khác"
 
-#: diff.c:5555
+#: diff.c:5571
 msgid "when run from subdir, exclude changes outside and show relative paths"
 msgstr ""
 "khi chạy từ thư mục con, thực thi các thay đổi bên ngoài và hiển thị các "
 "đường dẫn liên quan"
 
-#: diff.c:5559
+#: diff.c:5575
 msgid "treat all files as text"
 msgstr "coi mọi tập tin là dạng văn bản thường"
 
-#: diff.c:5561
+#: diff.c:5577
 msgid "swap two inputs, reverse the diff"
 msgstr "tráo đổi hai đầu vào, đảo ngược khác biệt"
 
-#: diff.c:5563
+#: diff.c:5579
 msgid "exit with 1 if there were differences, 0 otherwise"
 msgstr "thoát với mã 1 nếu không có khác biệt gì, 0 nếu ngược lại"
 
-#: diff.c:5565
+#: diff.c:5581
 msgid "disable all output of the program"
 msgstr "tắt mọi kết xuất của chương trình"
 
-#: diff.c:5567
+#: diff.c:5583
 msgid "allow an external diff helper to be executed"
 msgstr "cho phép mộ bộ hỗ trợ xuất khác biệt ở bên ngoài được phép thực thi"
 
-#: diff.c:5569
+#: diff.c:5585
 msgid "run external text conversion filters when comparing binary files"
 msgstr ""
 "chạy các bộ lọc văn bản thông thường bên ngoài khi so sánh các tập tin nhị "
 "phân"
 
-#: diff.c:5571
+#: diff.c:5587
 msgid "<when>"
 msgstr "<khi>"
 
-#: diff.c:5572
+#: diff.c:5588
 msgid "ignore changes to submodules in the diff generation"
 msgstr "bỏ qua các thay đổi trong mô-đun-con trong khi tạo khác biệt"
 
-#: diff.c:5575
+#: diff.c:5591
 msgid "<format>"
 msgstr "<định dạng>"
 
-#: diff.c:5576
+#: diff.c:5592
 msgid "specify how differences in submodules are shown"
 msgstr "chi định khác biệt bao nhiêu trong các mô đun con được hiển thị"
 
-#: diff.c:5580
+#: diff.c:5596
 msgid "hide 'git add -N' entries from the index"
 msgstr "ẩn các mục “git add -N” từ bảng mục lục"
 
-#: diff.c:5583
+#: diff.c:5599
 msgid "treat 'git add -N' entries as real in the index"
 msgstr "coi các mục “git add -N” như là có thật trong bảng mục lục"
 
-#: diff.c:5585
+#: diff.c:5601
 msgid "<string>"
 msgstr "<chuỗi>"
 
-#: diff.c:5586
+#: diff.c:5602
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "string"
@@ -3749,7 +3818,7 @@ msgstr ""
 "tìm các khác biệt cái mà thay đổi số lượng xảy ra của các phát sinh của "
 "chuỗi được chỉ ra"
 
-#: diff.c:5589
+#: diff.c:5605
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "regex"
@@ -3757,23 +3826,35 @@ msgstr ""
 "tìm các khác biệt cái mà thay đổi số lượng xảy ra của các phát sinh của biểu "
 "thức chính quy được chỉ ra"
 
-#: diff.c:5592
+#: diff.c:5608
 msgid "show all changes in the changeset with -S or -G"
 msgstr "hiển thị tất cả các thay đổi trong một bộ các thay đổi với -S hay -G"
 
-#: diff.c:5595
+#: diff.c:5611
 msgid "treat <string> in -S as extended POSIX regular expression"
 msgstr "coi <chuỗi> trong -S như là biểu thức chính qui POSIX có mở rộng"
 
-#: diff.c:5598
+#: diff.c:5614
 msgid "control the order in which files appear in the output"
 msgstr "điều khiển thứ tự xuát hiện các tập tin trong kết xuất"
 
-#: diff.c:5599
+#: diff.c:5615 diff.c:5618
+msgid "<path>"
+msgstr "<đường-dẫn>"
+
+#: diff.c:5616
+msgid "show the change in the specified path first"
+msgstr "hiển thị các thay đổi trong đường dẫn đã cho đầu tiên"
+
+#: diff.c:5619
+msgid "skip the output to the specified path"
+msgstr "bỏ qua đầu ra đến đường dẫn đã cho"
+
+#: diff.c:5621
 msgid "<object-id>"
 msgstr "<mã-số-đối-tượng>"
 
-#: diff.c:5600
+#: diff.c:5622
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "object"
@@ -3781,33 +3862,33 @@ msgstr ""
 "tìm các khác biệt cái mà thay đổi số lượng xảy ra của các phát sinh của đối "
 "tượng được chỉ ra"
 
-#: diff.c:5602
+#: diff.c:5624
 msgid "[(A|C|D|M|R|T|U|X|B)...[*]]"
 msgstr "[(A|C|D|M|R|T|U|X|B)…[*]]"
 
-#: diff.c:5603
+#: diff.c:5625
 msgid "select files by diff type"
 msgstr "chọn các tập tin theo kiểu khác biệt"
 
-#: diff.c:5605
+#: diff.c:5627
 msgid "<file>"
 msgstr "<tập_tin>"
 
-#: diff.c:5606
+#: diff.c:5628
 msgid "Output to a specific file"
 msgstr "Xuất ra một tập tin cụ thể"
 
-#: diff.c:6263
+#: diff.c:6285
 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:6266
+#: diff.c:6288
 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:6269
+#: diff.c:6291
 #, c-format
 msgid ""
 "you may want to set your %s variable to at least %d and retry the command."
@@ -3820,10 +3901,15 @@ msgstr ""
 msgid "failed to read orderfile '%s'"
 msgstr "gặp lỗi khi đọc tập-tin-thứ-tự “%s”"
 
-#: diffcore-rename.c:592
+#: diffcore-rename.c:786
 msgid "Performing inexact rename detection"
 msgstr "Đang thực hiện dò tìm đổi tên không chính xác"
 
+#: diffcore-rotate.c:29
+#, c-format
+msgid "No such path '%s' in the diff"
+msgstr "Không có đường dẫn %s trong diff"
+
 #: dir.c:578
 #, c-format
 msgid "pathspec '%s' did not match any file(s) known to git"
@@ -3866,17 +3952,17 @@ msgstr "gặp lỗi khi lấy tên và thông tin của nhân"
 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:3520
+#: dir.c:3534
 #, c-format
 msgid "index file corrupt in repo %s"
 msgstr "tập tin ghi bảng mục lục bị hỏng trong kho %s"
 
-#: dir.c:3565 dir.c:3570
+#: dir.c:3579 dir.c:3584
 #, c-format
 msgid "could not create directories for %s"
 msgstr "không thể tạo thư mục cho %s"
 
-#: dir.c:3599
+#: dir.c:3613
 #, c-format
 msgid "could not migrate git directory from '%s' to '%s'"
 msgstr "không thể di dời thư mục git từ “%s” sang “%s”"
@@ -3895,12 +3981,12 @@ msgstr "Nội dung lọc"
 msgid "could not stat file '%s'"
 msgstr "không thể lấy thống kê tập tin “%s”"
 
-#: environment.c:150
+#: environment.c:152
 #, c-format
 msgid "bad git namespace path \"%s\""
 msgstr "đường dẫn không gian tên git \"%s\" sai"
 
-#: environment.c:337
+#: environment.c:335
 #, c-format
 msgid "could not set GIT_DIR to '%s'"
 msgstr "không thể đặt GIT_DIR thành “%s”"
@@ -3935,32 +4021,32 @@ msgstr "không thể ghi lên máy phục vụ"
 msgid "--stateless-rpc requires multi_ack_detailed"
 msgstr "--stateless-rpc cần multi_ack_detailed"
 
-#: fetch-pack.c:378 fetch-pack.c:1406
+#: fetch-pack.c:378 fetch-pack.c:1457
 #, c-format
 msgid "invalid shallow line: %s"
 msgstr "dòng shallow không hợp lệ: %s"
 
-#: fetch-pack.c:384 fetch-pack.c:1412
+#: fetch-pack.c:384 fetch-pack.c:1463
 #, c-format
 msgid "invalid unshallow line: %s"
 msgstr "dòng unshallow không hợp lệ: %s"
 
-#: fetch-pack.c:386 fetch-pack.c:1414
+#: fetch-pack.c:386 fetch-pack.c:1465
 #, c-format
 msgid "object not found: %s"
 msgstr "không tìm thấy đối tượng: %s"
 
-#: fetch-pack.c:389 fetch-pack.c:1417
+#: fetch-pack.c:389 fetch-pack.c:1468
 #, c-format
 msgid "error in object: %s"
 msgstr "lỗi trong đối tượng: %s"
 
-#: fetch-pack.c:391 fetch-pack.c:1419
+#: fetch-pack.c:391 fetch-pack.c:1470
 #, c-format
 msgid "no shallow found: %s"
 msgstr "không tìm shallow nào: %s"
 
-#: fetch-pack.c:394 fetch-pack.c:1423
+#: fetch-pack.c:394 fetch-pack.c:1474
 #, c-format
 msgid "expected shallow/unshallow, got %s"
 msgstr "cần shallow/unshallow, nhưng lại nhận được %s"
@@ -3998,172 +4084,176 @@ msgstr "Đánh dấu %s là đã hoàn thành"
 msgid "already have %s (%s)"
 msgstr "đã sẵn có %s (%s)"
 
-#: fetch-pack.c:827
+#: fetch-pack.c:844
 msgid "fetch-pack: unable to fork off sideband demultiplexer"
 msgstr "fetch-pack: không thể rẽ nhánh sideband demultiplexer"
 
-#: fetch-pack.c:835
+#: fetch-pack.c:852
 msgid "protocol error: bad pack header"
 msgstr "lỗi giao thức: phần đầu gói bị sai"
 
-#: fetch-pack.c:919
+#: fetch-pack.c:946
 #, c-format
 msgid "fetch-pack: unable to fork off %s"
 msgstr "fetch-pack: không thể rẽ nhánh %s"
 
-#: fetch-pack.c:937
+#: fetch-pack.c:952
+msgid "fetch-pack: invalid index-pack output"
+msgstr "fetch-pack: kết xuất index-pack không hợp lệ"
+
+#: fetch-pack.c:969
 #, c-format
 msgid "%s failed"
 msgstr "%s gặp lỗi"
 
-#: fetch-pack.c:939
+#: fetch-pack.c:971
 msgid "error in sideband demultiplexer"
 msgstr "có lỗi trong sideband demultiplexer"
 
-#: fetch-pack.c:982
+#: fetch-pack.c:1031
 #, c-format
 msgid "Server version is %.*s"
 msgstr "Phiên bản máy chủ là %.*s"
 
-#: fetch-pack.c:990 fetch-pack.c:996 fetch-pack.c:999 fetch-pack.c:1005
-#: fetch-pack.c:1009 fetch-pack.c:1013 fetch-pack.c:1017 fetch-pack.c:1021
-#: fetch-pack.c:1025 fetch-pack.c:1029 fetch-pack.c:1033 fetch-pack.c:1037
-#: fetch-pack.c:1043 fetch-pack.c:1049 fetch-pack.c:1054 fetch-pack.c:1059
+#: fetch-pack.c:1039 fetch-pack.c:1045 fetch-pack.c:1048 fetch-pack.c:1054
+#: fetch-pack.c:1058 fetch-pack.c:1062 fetch-pack.c:1066 fetch-pack.c:1070
+#: fetch-pack.c:1074 fetch-pack.c:1078 fetch-pack.c:1082 fetch-pack.c:1086
+#: fetch-pack.c:1092 fetch-pack.c:1098 fetch-pack.c:1103 fetch-pack.c:1108
 #, c-format
 msgid "Server supports %s"
 msgstr "Máy chủ hỗ trợ %s"
 
-#: fetch-pack.c:992
+#: fetch-pack.c:1041
 msgid "Server does not support shallow clients"
 msgstr "Máy chủ không hỗ trợ máy khách shallow"
 
-#: fetch-pack.c:1052
+#: fetch-pack.c:1101
 msgid "Server does not support --shallow-since"
 msgstr "Máy chủ không hỗ trợ --shallow-since"
 
-#: fetch-pack.c:1057
+#: fetch-pack.c:1106
 msgid "Server does not support --shallow-exclude"
 msgstr "Máy chủ không hỗ trợ --shallow-exclude"
 
-#: fetch-pack.c:1061
+#: fetch-pack.c:1110
 msgid "Server does not support --deepen"
 msgstr "Máy chủ không hỗ trợ --deepen"
 
-#: fetch-pack.c:1063
+#: fetch-pack.c:1112
 msgid "Server does not support this repository's object format"
 msgstr "Máy chủ không hỗ trợ định dạng đối tượng của kho này"
 
-#: fetch-pack.c:1076
+#: fetch-pack.c:1125
 msgid "no common commits"
 msgstr "không có lần chuyển giao chung nào"
 
-#: fetch-pack.c:1088 fetch-pack.c:1628
+#: fetch-pack.c:1138 fetch-pack.c:1682
 msgid "git fetch-pack: fetch failed."
 msgstr "git fetch-pack: fetch gặp lỗi."
 
-#: fetch-pack.c:1214
+#: fetch-pack.c:1265
 #, c-format
 msgid "mismatched algorithms: client %s; server %s"
 msgstr "các thuật toán không khớp nhau: máy khách %s; máy chủ %s"
 
-#: fetch-pack.c:1218
+#: fetch-pack.c:1269
 #, c-format
 msgid "the server does not support algorithm '%s'"
 msgstr "máy chủ không hỗ trợ thuật toán “%s”"
 
-#: fetch-pack.c:1238
+#: fetch-pack.c:1289
 msgid "Server does not support shallow requests"
 msgstr "Máy chủ không hỗ trợ yêu cầu shallow"
 
-#: fetch-pack.c:1245
+#: fetch-pack.c:1296
 msgid "Server supports filter"
 msgstr "Máy chủ hỗ trợ bộ lọc"
 
-#: fetch-pack.c:1284
+#: fetch-pack.c:1335
 msgid "unable to write request to remote"
 msgstr "không thể ghi các yêu cầu lên máy phục vụ"
 
-#: fetch-pack.c:1302
+#: fetch-pack.c:1353
 #, c-format
 msgid "error reading section header '%s'"
 msgstr "gặp lỗi khi đọc phần đầu của đoạn %s"
 
-#: fetch-pack.c:1308
+#: fetch-pack.c:1359
 #, c-format
 msgid "expected '%s', received '%s'"
 msgstr "cần “%s”, nhưng lại nhận “%s”"
 
-#: fetch-pack.c:1369
+#: fetch-pack.c:1420
 #, c-format
 msgid "unexpected acknowledgment line: '%s'"
 msgstr "gặp dòng không được thừa nhận: “%s”"
 
-#: fetch-pack.c:1374
+#: fetch-pack.c:1425
 #, c-format
 msgid "error processing acks: %d"
 msgstr "gặp lỗi khi xử lý tín hiệu trả lời: %d"
 
-#: fetch-pack.c:1384
+#: fetch-pack.c:1435
 msgid "expected packfile to be sent after 'ready'"
 msgstr "cần tập tin gói để gửi sau “ready”"
 
-#: fetch-pack.c:1386
+#: fetch-pack.c:1437
 msgid "expected no other sections to be sent after no 'ready'"
 msgstr "không cần thêm phần nào để gửi sau “ready”"
 
-#: fetch-pack.c:1428
+#: fetch-pack.c:1479
 #, c-format
 msgid "error processing shallow info: %d"
 msgstr "lỗi xử lý thông tin shallow: %d"
 
-#: fetch-pack.c:1475
+#: fetch-pack.c:1526
 #, c-format
 msgid "expected wanted-ref, got '%s'"
 msgstr "cần wanted-ref, nhưng lại nhận được “%s”"
 
-#: fetch-pack.c:1480
+#: fetch-pack.c:1531
 #, c-format
 msgid "unexpected wanted-ref: '%s'"
 msgstr "wanted-ref không được mong đợi: “%s”"
 
-#: fetch-pack.c:1485
+#: fetch-pack.c:1536
 #, c-format
 msgid "error processing wanted refs: %d"
 msgstr "lỗi khi xử lý wanted refs: %d"
 
-#: fetch-pack.c:1515
+#: fetch-pack.c:1566
 msgid "git fetch-pack: expected response end packet"
 msgstr "git fetch-pack: cần nhận được trả lời là kết thúc gói"
 
-#: fetch-pack.c:1897
+#: fetch-pack.c:1960
 msgid "no matching remote head"
 msgstr "không khớp phần đầu máy chủ"
 
-#: fetch-pack.c:1920 builtin/clone.c:693
+#: fetch-pack.c:1983 builtin/clone.c:693
 msgid "remote did not send all necessary objects"
 msgstr "máy chủ đã không gửi tất cả các đối tượng cần thiết"
 
-#: fetch-pack.c:1947
+#: fetch-pack.c:2010
 #, 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:1950
+#: fetch-pack.c:2013
 #, 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:272
+#: gpg-interface.c:273
 msgid "could not create temporary file"
 msgstr "không thể tạo tập tin tạm thời"
 
-#: gpg-interface.c:275
+#: gpg-interface.c:276
 #, c-format
 msgid "failed writing detached signature to '%s'"
 msgstr "gặp lỗi khi ghi chữ ký đính kèm vào “%s”"
 
-#: gpg-interface.c:457
+#: gpg-interface.c:470
 msgid "gpg failed to sign the data"
 msgstr "gpg gặp lỗi khi ký dữ liệu"
 
@@ -4172,7 +4262,7 @@ msgstr "gpg gặp lỗi khi ký dữ liệu"
 msgid "ignore invalid color '%.*s' in log.graphColors"
 msgstr "bỏ qua màu không hợp lệ “%.*s” trong log.graphColors"
 
-#: grep.c:640
+#: grep.c:543
 msgid ""
 "given pattern contains NULL byte (via -f <file>). This is only supported "
 "with -P under PCRE v2"
@@ -4180,18 +4270,18 @@ msgstr ""
 "mẫu đã cho có chứa NULL byte (qua -f <file>). Điều này chỉ được hỗ trợ với -"
 "P dưới PCRE v2"
 
-#: grep.c:2100
+#: grep.c:1906
 #, c-format
 msgid "'%s': unable to read %s"
 msgstr "“%s”: không thể đọc %s"
 
-#: grep.c:2117 setup.c:176 builtin/clone.c:412 builtin/diff.c:89
+#: grep.c:1923 setup.c:176 builtin/clone.c:412 builtin/diff.c:90
 #: builtin/rm.c:135
 #, c-format
 msgid "failed to stat '%s'"
 msgstr "gặp lỗi khi lấy thống kê về “%s”"
 
-#: grep.c:2128
+#: grep.c:1934
 #, c-format
 msgid "'%s': short read"
 msgstr "“%s”: đọc ngắn"
@@ -4261,7 +4351,7 @@ msgstr "các lệnh git sẵn có từ một nơi khác trong $PATH của bạn"
 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:365 git.c:99
+#: help.c:365 git.c:100
 #, c-format
 msgid "unsupported command listing type '%s'"
 msgstr "không hỗ trợ liệt kê lệnh kiểu “%s”"
@@ -4492,129 +4582,52 @@ msgstr ""
 msgid "Unable to create '%s.lock': %s"
 msgstr "Không thể tạo “%s.lock”: %s"
 
-#: ls-refs.c:109
-msgid "expected flush after ls-refs arguments"
-msgstr "cần đẩy dữ liệu lên đĩa sau tham số ls-refs (liệt kê tham chiếu)"
-
-#: merge-ort-wrappers.c:13 merge-recursive.c:3672
-#, c-format
-msgid ""
-"Your local changes to the following files would be overwritten by merge:\n"
-"  %s"
-msgstr ""
-"Các thay đổi nội bộ của bạn với các tập tin sau đây sẽ bị ghi đè bởi lệnh "
-"hòa trộn:\n"
-"  %s"
-
-#: merge-ort-wrappers.c:33 merge-recursive.c:3436
-#, c-format
-msgid "Already up to date!"
-msgstr "Đã cập nhật rồi!"
-
-#: merge-recursive.c:356
-msgid "(bad commit)\n"
-msgstr "(commit sai)\n"
-
-#: merge-recursive.c:379
-#, 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:388
-#, c-format
-msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
-msgstr ""
-"addinfo_cache gặp lỗi khi làm mới đối với đường dẫn “%s”; việc hòa trộn bị "
-"bãi bỏ."
-
-#: merge-recursive.c:874
-#, 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:885
-#, 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:899 merge-recursive.c:918
-msgid ": perhaps a D/F conflict?"
-msgstr ": có lẽ là một xung đột D/F?"
-
-#: merge-recursive.c:908
-#, 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:949 builtin/cat-file.c:41
-#, c-format
-msgid "cannot read object %s '%s'"
-msgstr "không thể đọc đối tượng %s “%s”"
-
-#: merge-recursive.c:954
-#, c-format
-msgid "blob expected for %s '%s'"
-msgstr "mong đợi đối tượng blob cho %s “%s”"
-
-#: merge-recursive.c:979
-#, c-format
-msgid "failed to open '%s': %s"
-msgstr "gặp lỗi khi mở “%s”: %s"
-
-#: merge-recursive.c:990
+#: ls-refs.c:37
 #, 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"
+msgid "invalid value '%s' for lsrefs.unborn"
+msgstr "giá trị '%s' không hợp lệ cho lsrefs.unborn"
 
-#: merge-recursive.c:995
-#, 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”"
+#: ls-refs.c:167
+msgid "expected flush after ls-refs arguments"
+msgstr "cần đẩy dữ liệu lên đĩa sau tham số ls-refs (liệt kê tham chiếu)"
 
-#: merge-recursive.c:1191
+#: merge-ort.c:888 merge-recursive.c:1191
 #, 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:1198
+#: merge-ort.c:897 merge-recursive.c:1198
 #, 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:1205
+#: merge-ort.c:906 merge-recursive.c:1205
 #, 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:1213 merge-recursive.c:1225
+#: merge-ort.c:916 merge-ort.c:923
 #, 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:"
+msgid "Note: Fast-forwarding submodule %s to %s"
+msgstr "Chú ý: Chuyển-tiếp-nhanh mô-đun-con “%s” sang “%s”"
 
-#: merge-recursive.c:1216 merge-recursive.c:1228
+#: merge-ort.c:944
 #, c-format
-msgid "Fast-forwarding submodule %s"
-msgstr "Chuyển-tiếp-nhanh mô-đun-con “%s”"
+msgid "Failed to merge submodule %s"
+msgstr "Gặp lỗi khi hòa trộn mô-đun-con “%s”"
 
-#: merge-recursive.c:1251
+#: merge-ort.c:951
 #, c-format
-msgid "Failed to merge submodule %s (merge following commits not found)"
+msgid ""
+"Failed to merge submodule %s, but a possible merge resolution exists:\n"
+"%s\n"
 msgstr ""
-"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:1255
-#, 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:1256
-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"
+"Gặp lỗi khi hòa trộn mô-đun-con “%s”, nhưng có cách giải quyết:\n"
+"%s\n"
 
-#: merge-recursive.c:1259
+#: merge-ort.c:955 merge-recursive.c:1259
 #, c-format
 msgid ""
 "If this is correct simply add it to the index for example\n"
@@ -4631,70 +4644,337 @@ msgstr ""
 "\n"
 "cái mà sẽ chấp nhận gợi ý này.\n"
 
-#: merge-recursive.c:1268
+#: merge-ort.c:968
 #, 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)"
+msgid ""
+"Failed to merge submodule %s, but multiple possible merges exist:\n"
+"%s"
+msgstr ""
+"Gặp lỗi khi hòa trộn mô-đun-con “%s”, nhưng có nhiều cách giải quyết:\n"
+"%s"
 
-#: merge-recursive.c:1341
+#: merge-ort.c:1127 merge-recursive.c:1341
 msgid "Failed to execute internal merge"
 msgstr "Gặp lỗi khi thực hiện trộn nội bộ"
 
-#: merge-recursive.c:1346
+#: merge-ort.c:1132 merge-recursive.c:1346
 #, 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:1378
+#: merge-ort.c:1139 merge-recursive.c:1378
 #, c-format
 msgid "Auto-merging %s"
 msgstr "Tự-động-hòa-trộn %s"
 
-#: merge-recursive.c:1402
+#: merge-ort.c:1278 merge-recursive.c:2100
 #, c-format
-msgid "Error: Refusing to lose untracked file at %s; writing to %s instead."
+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 ""
-"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."
+"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:1474
+#: merge-ort.c:1288 merge-recursive.c:2110
 #, c-format
 msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
-"in tree."
+"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 (%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)."
+"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 Ä\91á»\95i tên thÆ° mục ngầm cá»\91 Ä\91ặt các Ä\91Æ°á»\9dng dẫn á»\9f Ä\91ây: %s"
 
-#: merge-recursive.c:1479
+#: merge-ort.c:1471
 #, c-format
 msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
-"left in tree."
+"CONFLICT (directory rename split): Unclear where to rename %s to; it was "
+"renamed to multiple other directories, with no destination getting a "
+"majority of the files."
 msgstr ""
-"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)."
+"XUNG ĐỘT: (thư mục đổi tên chia tách): Không rõ ràng nơi để đổi tên %s "
+"thành; nó đã bị đổi tên thành nhiều thư mục khác, với không đích đến nhận "
+"một phần nhiều của các tập tin."
 
-#: merge-recursive.c:1486
+#: merge-ort.c:1637 merge-recursive.c:2447
 #, c-format
 msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
-"in tree at %s."
+"WARNING: Avoiding applying %s -> %s rename to %s, because %s itself was "
+"renamed."
 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."
+"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:1491
+#: merge-ort.c:1781 merge-recursive.c:3215
 #, 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."
+"Path updated: %s added in %s inside a directory that was renamed in %s; "
+"moving it to %s."
 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."
+"Đường dẫn đã được cập nhật: %s được thêm vào trong %s bên trong một thư mục "
+"đã được đổi tên trong %s; di chuyển nó đến %s."
 
-#: merge-recursive.c:1526
-msgid "rename"
+#: merge-ort.c:1788 merge-recursive.c:3222
+#, c-format
+msgid ""
+"Path updated: %s renamed to %s in %s, inside a directory that was renamed in "
+"%s; moving it to %s."
+msgstr ""
+"Đường dẫn đã được cập nhật: %s được đổi tên thành %s trong %s, bên trong một "
+"thư mục đã được đổi tên trong %s; di chuyển nó đến %s."
+
+#: merge-ort.c:1801 merge-recursive.c:3218
+#, c-format
+msgid ""
+"CONFLICT (file location): %s added in %s inside a directory that was renamed "
+"in %s, suggesting it should perhaps be moved to %s."
+msgstr ""
+"XUNG ĐỘT (vị trí tệp): %s được thêm vào trong %s trong một thư mục đã được "
+"đổi tên thành %s, đoán là nó nên được di chuyển đến %s."
+
+#: merge-ort.c:1809 merge-recursive.c:3225
+#, c-format
+msgid ""
+"CONFLICT (file location): %s renamed to %s in %s, inside a directory that "
+"was renamed in %s, suggesting it should perhaps be moved to %s."
+msgstr ""
+"XUNG ĐỘT (vị trí tệp): %s được đổi tên thành %s trong %s, bên trong một thư "
+"mục đã được đổi tên thành %s, đoán là nó nên được di chuyển đến %s."
+
+#: merge-ort.c:1952
+#, c-format
+msgid "CONFLICT (rename/rename): %s renamed to %s in %s and to %s in %s."
+msgstr ""
+"XUNG ĐỘT (đổi-tên/đổi-tên): Đổi tên %s->%s trong %s và thành %s trong %s."
+
+#: merge-ort.c:2047
+#, c-format
+msgid ""
+"CONFLICT (rename involved in collision): rename of %s -> %s has content "
+"conflicts AND collides with another path; this may result in nested conflict "
+"markers."
+msgstr ""
+"XUNG ĐỘT (đổi tên liên quan đến va chạm): đổi tên %s -> %s xung đột nội dung "
+"VÀ va chạm với một đường dẫn khác; điều này có thể dẫn đến tạo ra các xung "
+"đột lồng nhau."
+
+#: merge-ort.c:2066 merge-ort.c:2090
+#, c-format
+msgid "CONFLICT (rename/delete): %s renamed to %s in %s, but deleted in %s."
+msgstr ""
+"XUNG ĐỘT (đổi-tên/xóa): Đổi tên %s->%s trong %s, nhưng lại bị xóa trong %s."
+
+#: merge-ort.c:2735
+#, c-format
+msgid ""
+"CONFLICT (file/directory): directory in the way of %s from %s; moving it to "
+"%s instead."
+msgstr ""
+"XUNG ĐỘT (tập tin/thư mục): thư mục theo cách của %s từ %s; thay vào đó, di "
+"chuyển nó đến %s."
+
+#: merge-ort.c:2808
+#, c-format
+msgid ""
+"CONFLICT (distinct types): %s had different types on each side; renamed %s "
+"of them so each can be recorded somewhere."
+msgstr ""
+"CONFLICT (các loại riêng biệt): %s có các loại khác nhau ở mỗi bên; được đổi "
+"tên %s trong số chúng để mỗi cái có thể được ghi lại ở đâu đó."
+
+#: merge-ort.c:2812
+msgid "both"
+msgstr "cả hai"
+
+#: merge-ort.c:2812
+msgid "one"
+msgstr "một"
+
+#: merge-ort.c:2907 merge-recursive.c:3052
+msgid "content"
+msgstr "nội dung"
+
+#: merge-ort.c:2909 merge-recursive.c:3056
+msgid "add/add"
+msgstr "thêm/thêm"
+
+#: merge-ort.c:2911 merge-recursive.c:3101
+msgid "submodule"
+msgstr "mô-đun-con"
+
+#: merge-ort.c:2913 merge-recursive.c:3102
+#, c-format
+msgid "CONFLICT (%s): Merge conflict in %s"
+msgstr "XUNG ĐỘT (%s): Xung đột hòa trộn trong %s"
+
+#: merge-ort.c:2938
+#, c-format
+msgid ""
+"CONFLICT (modify/delete): %s deleted in %s and modified in %s.  Version %s "
+"of %s left in tree."
+msgstr ""
+"XUNG ĐỘT (sửa/xóa): %s bị xóa trong %s và sửa trong %s. Phiên bản %s của %s "
+"còn lại trong cây (tree)."
+
+#. TRANSLATORS: The %s arguments are: 1) tree hash of a merge
+#. base, and 2-3) the trees for the two trees we're merging.
+#.
+#: merge-ort.c:3406
+#, c-format
+msgid "collecting merge info failed for trees %s, %s, %s"
+msgstr "thu thập thông tin hòa trộn gặp lỗi cho cây %s, %s, %s"
+
+#: merge-ort-wrappers.c:13 merge-recursive.c:3661
+#, c-format
+msgid ""
+"Your local changes to the following files would be overwritten by merge:\n"
+"  %s"
+msgstr ""
+"Các thay đổi nội bộ của bạn với các tập tin sau đây sẽ bị ghi đè bởi lệnh "
+"hòa trộn:\n"
+"  %s"
+
+#: merge-ort-wrappers.c:33 merge-recursive.c:3436
+#, c-format
+msgid "Already up to date!"
+msgstr "Đã cập nhật rồi!"
+
+#: merge-recursive.c:356
+msgid "(bad commit)\n"
+msgstr "(commit sai)\n"
+
+#: merge-recursive.c:379
+#, 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:388
+#, c-format
+msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
+msgstr ""
+"addinfo_cache gặp lỗi khi làm mới đối với đường dẫn “%s”; việc hòa trộn bị "
+"bãi bỏ."
+
+#: merge-recursive.c:874
+#, 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:885
+#, 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:899 merge-recursive.c:918
+msgid ": perhaps a D/F conflict?"
+msgstr ": có lẽ là một xung đột D/F?"
+
+#: merge-recursive.c:908
+#, 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:949 builtin/cat-file.c:41
+#, c-format
+msgid "cannot read object %s '%s'"
+msgstr "không thể đọc đối tượng %s “%s”"
+
+#: merge-recursive.c:954
+#, c-format
+msgid "blob expected for %s '%s'"
+msgstr "mong đợi đối tượng blob cho %s “%s”"
+
+#: merge-recursive.c:979
+#, c-format
+msgid "failed to open '%s': %s"
+msgstr "gặp lỗi khi mở “%s”: %s"
+
+#: merge-recursive.c:990
+#, 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:995
+#, 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:1213 merge-recursive.c:1225
+#, 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:1216 merge-recursive.c:1228
+#, c-format
+msgid "Fast-forwarding submodule %s"
+msgstr "Chuyển-tiếp-nhanh mô-đun-con “%s”"
+
+#: merge-recursive.c:1251
+#, 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:1255
+#, 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:1256
+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:1268
+#, 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:1402
+#, 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:1474
+#, c-format
+msgid ""
+"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
+"in tree."
+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:1479
+#, c-format
+msgid ""
+"CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
+"left in tree."
+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:1486
+#, c-format
+msgid ""
+"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
+"in tree at %s."
+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:1491
+#, 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 ""
+"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:1526
+msgid "rename"
 msgstr "đổi tên"
 
 #: merge-recursive.c:1526
@@ -4761,24 +5041,6 @@ msgstr ""
 "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:2100
-#, c-format
-msgid ""
-"CONFLICT (implicit dir rename): Existing file/dir at %s in the way of "
-"implicit directory rename(s) putting the following path(s) there: %s."
-msgstr ""
-"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:2110
-#, c-format
-msgid ""
-"CONFLICT (implicit dir rename): Cannot map more than one path to %s; "
-"implicit directory renames tried to put these paths there: %s"
-msgstr ""
-"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:2202
 #, c-format
 msgid ""
@@ -4788,15 +5050,6 @@ 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:2447
-#, 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:2973
 #, c-format
 msgid "cannot read object %s"
@@ -4815,70 +5068,17 @@ msgstr "sửa đổi"
 msgid "modified"
 msgstr "đã sửa"
 
-#: merge-recursive.c:3052
-msgid "content"
-msgstr "nội dung"
-
-#: merge-recursive.c:3056
-msgid "add/add"
-msgstr "thêm/thêm"
-
 #: merge-recursive.c:3079
 #, 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:3101
-msgid "submodule"
-msgstr "mô-đun-con"
-
-#: merge-recursive.c:3102
-#, c-format
-msgid "CONFLICT (%s): Merge conflict in %s"
-msgstr "XUNG ĐỘT (%s): Xung đột hòa trộn trong %s"
-
 #: merge-recursive.c:3132
 #, c-format
 msgid "Adding as %s instead"
 msgstr "Thay vào đó thêm vào %s"
 
-#: merge-recursive.c:3215
-#, c-format
-msgid ""
-"Path updated: %s added in %s inside a directory that was renamed in %s; "
-"moving it to %s."
-msgstr ""
-"Đường dẫn đã được cập nhật: %s được thêm vào trong %s bên trong một thư mục "
-"đã được đổi tên trong %s; di chuyển nó đến %s."
-
-#: merge-recursive.c:3218
-#, c-format
-msgid ""
-"CONFLICT (file location): %s added in %s inside a directory that was renamed "
-"in %s, suggesting it should perhaps be moved to %s."
-msgstr ""
-"XUNG ĐỘT (vị trí tệp): %s được thêm vào trong %s trong một thư mục đã được "
-"đổi tên thành %s, đoán là nó nên được di chuyển đến %s."
-
-#: merge-recursive.c:3222
-#, c-format
-msgid ""
-"Path updated: %s renamed to %s in %s, inside a directory that was renamed in "
-"%s; moving it to %s."
-msgstr ""
-"Đường dẫn đã được cập nhật: %s được đổi tên thành %s trong %s, bên trong một "
-"thư mục đã được đổi tên trong %s; di chuyển nó đến %s."
-
-#: merge-recursive.c:3225
-#, c-format
-msgid ""
-"CONFLICT (file location): %s renamed to %s in %s, inside a directory that "
-"was renamed in %s, suggesting it should perhaps be moved to %s."
-msgstr ""
-"XUNG ĐỘT (vị trí tệp): %s được đổi tên thành %s trong %s, bên trong một thư "
-"mục đã được đổi tên thành %s, đoán là nó nên được di chuyển đến %s."
-
-#: merge-recursive.c:3339
+#: merge-recursive.c:3339
 #, c-format
 msgid "Removing %s"
 msgstr "Đang xóa %s"
@@ -4913,26 +5113,27 @@ msgstr "XUNG ĐỘT (thêm/thêm): Xung đột hòa trộn trong %s"
 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:3550
+#: merge-recursive.c:3539
 msgid "Merging:"
 msgstr "Đang trộn:"
 
-#: merge-recursive.c:3563
+#: merge-recursive.c:3552
 #, 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:3613
+#: merge-recursive.c:3602
 msgid "merge returned no commit"
 msgstr "hòa trộn không trả về lần chuyển giao nào"
 
-#: merge-recursive.c:3769
+#: merge-recursive.c:3758
 #, c-format
 msgid "Could not parse object '%s'"
 msgstr "Không thể phân tích đối tượng “%s”"
 
-#: merge-recursive.c:3787 builtin/merge.c:711 builtin/merge.c:895
+#: merge-recursive.c:3776 builtin/merge.c:712 builtin/merge.c:896
+#: builtin/stash.c:471
 msgid "Unable to write index."
 msgstr "Không thể ghi bảng mục lục."
 
@@ -4940,185 +5141,177 @@ msgstr "Không thể ghi bảng mục lục."
 msgid "failed to read the cache"
 msgstr "gặp lỗi khi đọc bộ nhớ đệm"
 
-#: merge.c:109 rerere.c:720 builtin/am.c:1883 builtin/am.c:1917
-#: builtin/checkout.c:573 builtin/checkout.c:829 builtin/clone.c:817
+#: merge.c:109 rerere.c:704 builtin/am.c:1883 builtin/am.c:1917
+#: builtin/checkout.c:575 builtin/checkout.c:828 builtin/clone.c:817
 #: builtin/stash.c:265
 msgid "unable to write new index file"
 msgstr "không thể ghi tập tin lưu bảng mục lục mới"
 
-#: midx.c:80
+#: midx.c:62
+msgid "multi-pack-index OID fanout is of the wrong size"
+msgstr "fanout OID nhiều gói chỉ mục có kích thước sai"
+
+#: midx.c:93
 #, c-format
 msgid "multi-pack-index file %s is too small"
 msgstr "tập tin đồ thị multi-pack-index %s quá nhỏ"
 
-#: midx.c:96
+#: midx.c:109
 #, c-format
 msgid "multi-pack-index signature 0x%08x does not match signature 0x%08x"
 msgstr "chữ ký multi-pack-index 0x%08x không khớp chữ ký 0x%08x"
 
-#: midx.c:101
+#: midx.c:114
 #, c-format
 msgid "multi-pack-index version %d not recognized"
 msgstr "không nhận ra phiên bản %d của multi-pack-index"
 
-#: midx.c:106
+#: midx.c:119
 #, c-format
 msgid "multi-pack-index hash version %u does not match version %u"
 msgstr "phiên bản băm multi-pack-index %u không khớp phiên bản %u"
 
-#: midx.c:123
-msgid "invalid chunk offset (too large)"
-msgstr "khoảng bù đoạn không hợp lệ (quá lớn)"
-
-#: midx.c:147
-msgid "terminating multi-pack-index chunk id appears earlier than expected"
-msgstr "mã mảnh kết thúc multi-pack-index xuất hiện sớm hơn bình thường"
-
-#: midx.c:160
+#: midx.c:136
 msgid "multi-pack-index missing required pack-name chunk"
 msgstr "multi-pack-index thiếu mảnh pack-name cần thiết"
 
-#: midx.c:162
+#: midx.c:138
 msgid "multi-pack-index missing required OID fanout chunk"
 msgstr "multi-pack-index thiếu mảnh OID fanout cần thiết"
 
-#: midx.c:164
+#: midx.c:140
 msgid "multi-pack-index missing required OID lookup chunk"
 msgstr "multi-pack-index thiếu mảnh OID lookup cần thiết"
 
-#: midx.c:166
+#: midx.c:142
 msgid "multi-pack-index missing required object offsets chunk"
 msgstr "multi-pack-index thiếu mảnh các khoảng bù đối tượng cần thiết"
 
-#: midx.c:180
+#: midx.c:158
 #, c-format
 msgid "multi-pack-index pack names out of order: '%s' before '%s'"
 msgstr "các tên gói multi-pack-index không đúng thứ tự: “%s” trước “%s”"
 
-#: midx.c:223
+#: midx.c:202
 #, c-format
 msgid "bad pack-int-id: %u (%u total packs)"
 msgstr "pack-int-id sai: %u (%u các gói tổng)"
 
-#: midx.c:273
+#: midx.c:252
 msgid "multi-pack-index stores a 64-bit offset, but off_t is too small"
 msgstr "multi-pack-index lưu trữ một khoảng bù 64-bít, nhưng off_t là quá nhỏ"
 
-#: midx.c:480
+#: midx.c:467
 #, c-format
 msgid "failed to add packfile '%s'"
 msgstr "gặp lỗi khi thêm tập tin gói “%s”"
 
-#: midx.c:486
+#: midx.c:473
 #, c-format
 msgid "failed to open pack-index '%s'"
 msgstr "gặp lỗi khi mở pack-index “%s”"
 
-#: midx.c:546
+#: midx.c:533
 #, c-format
 msgid "failed to locate object %d in packfile"
 msgstr "gặp lỗi khi phân bổ đối tượng “%d” trong tập tin gói"
 
-#: midx.c:846
+#: midx.c:821
 msgid "Adding packfiles to multi-pack-index"
 msgstr "Đang thêm tập tin gói từ multi-pack-index"
 
-#: midx.c:879
+#: midx.c:855
 #, c-format
 msgid "did not see pack-file %s to drop"
 msgstr "đã không thấy tập tin gói %s để mà xóa"
 
-#: midx.c:931
+#: midx.c:904
 msgid "no pack files to index."
 msgstr "không có tập tin gói để đánh mục lục."
 
-#: midx.c:982
-msgid "Writing chunks to multi-pack-index"
-msgstr "Đang ghi các khúc vào multi-pack-index"
-
-#: midx.c:1060
+#: midx.c:965
 #, c-format
 msgid "failed to clear multi-pack-index at %s"
 msgstr "gặp lỗi khi xóa multi-pack-index tại %s"
 
-#: midx.c:1116
+#: midx.c:1021
 msgid "multi-pack-index file exists, but failed to parse"
 msgstr "đã có tập tin multi-pack-index, nhưng gặp lỗi khi phân tích cú pháp"
 
-#: midx.c:1124
+#: midx.c:1029
 msgid "Looking for referenced packfiles"
 msgstr "Đang khóa cho các gói bị tham chiếu"
 
-#: midx.c:1139
+#: midx.c:1044
 #, c-format
 msgid ""
 "oid fanout out of order: fanout[%d] = %<PRIx32> > %<PRIx32> = fanout[%d]"
 msgstr "fanout cũ sai thứ tự: fanout[%d] = %<PRIx32> > %<PRIx32> = fanout[%d]"
 
-#: midx.c:1144
+#: midx.c:1049
 msgid "the midx contains no oid"
 msgstr "midx chẳng chứa oid nào"
 
-#: midx.c:1153
+#: midx.c:1058
 msgid "Verifying OID order in multi-pack-index"
 msgstr "Thẩm tra thứ tự OID trong multi-pack-index"
 
-#: midx.c:1162
+#: midx.c:1067
 #, c-format
 msgid "oid lookup out of order: oid[%d] = %s >= %s = oid[%d]"
 msgstr "lookup cũ sai thứ tự: oid[%d] = %s >= %s = oid[%d]"
 
-#: midx.c:1182
+#: midx.c:1087
 msgid "Sorting objects by packfile"
 msgstr "Đang sắp xếp các đối tượng theo tập tin gói"
 
-#: midx.c:1189
+#: midx.c:1094
 msgid "Verifying object offsets"
 msgstr "Đang thẩm tra các khoảng bù đối tượng"
 
-#: midx.c:1205
+#: midx.c:1110
 #, c-format
 msgid "failed to load pack entry for oid[%d] = %s"
 msgstr "gặp lỗi khi tải mục gói cho oid[%d] = %s"
 
-#: midx.c:1211
+#: midx.c:1116
 #, c-format
 msgid "failed to load pack-index for packfile %s"
 msgstr "gặp lỗi khi tải pack-index cho tập tin gói %s"
 
-#: midx.c:1220
+#: midx.c:1125
 #, c-format
 msgid "incorrect object offset for oid[%d] = %s: %<PRIx64> != %<PRIx64>"
 msgstr ""
 "khoảng bù đối tượng không đúng cho oid[%d] = %s: %<PRIx64> != %<PRIx64>"
 
-#: midx.c:1245
+#: midx.c:1150
 msgid "Counting referenced objects"
 msgstr "Đang đếm các đối tượng được tham chiếu"
 
-#: midx.c:1255
+#: midx.c:1160
 msgid "Finding and deleting unreferenced packfiles"
 msgstr "Đang tìm và xóa các gói không được tham chiếu"
 
-#: midx.c:1446
+#: midx.c:1351
 msgid "could not start pack-objects"
 msgstr "không thể lấy thông tin thống kê về các đối tượng gói"
 
-#: midx.c:1466
+#: midx.c:1371
 msgid "could not finish pack-objects"
 msgstr "không thể hoàn thiện các đối tượng gói"
 
-#: name-hash.c:537
+#: name-hash.c:538
 #, c-format
 msgid "unable to create lazy_dir thread: %s"
 msgstr "không thể tạo tuyến lazy_dir: %s"
 
-#: name-hash.c:559
+#: name-hash.c:560
 #, c-format
 msgid "unable to create lazy_name thread: %s"
 msgstr "không thể tạo tuyến lazy_name: %s"
 
-#: name-hash.c:565
+#: name-hash.c:566
 #, c-format
 msgid "unable to join lazy_name thread: %s"
 msgstr "không thể gia nhập tuyến lazy_name: %s"
@@ -5165,2989 +5358,3052 @@ 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:53
+#: object-file.c:480
 #, c-format
-msgid "invalid object type \"%s\""
-msgstr "kiểu đối tượng \"%s\" không hợp lệ"
+msgid "object directory %s does not exist; check .git/objects/info/alternates"
+msgstr ""
+"thư mục đối tượng %s không tồn tại; kiểm tra .git/objects/info/alternates"
 
-#: object.c:173
+#: object-file.c:531
 #, c-format
-msgid "object %s is a %s, not a %s"
-msgstr "đối tượng %s là một %s, không phải là một %s"
+msgid "unable to normalize alternate object path: %s"
+msgstr "không thể thường hóa đường dẫn đối tượng thay thế: “%s”"
 
-#: object.c:233
+#: object-file.c:603
 #, c-format
-msgid "object %s has unknown type id %d"
-msgstr "đối tượng %s có mã kiểu %d chưa biết"
+msgid "%s: ignoring alternate object stores, nesting too deep"
+msgstr "%s: đang bỏ qua kho đối tượng thay thế, lồng nhau quá sâu"
 
-#: object.c:246
+#: object-file.c:610
 #, c-format
-msgid "unable to parse object: %s"
-msgstr "không thể phân tích đối tượng: “%s”"
+msgid "unable to normalize object directory: %s"
+msgstr "không thể chuẩn hóa thư mục đối tượng: “%s”"
 
-#: object.c:266 object.c:278
-#, c-format
-msgid "hash mismatch %s"
-msgstr "mã băm không khớp %s"
+#: object-file.c:653
+msgid "unable to fdopen alternates lockfile"
+msgstr "không thể fdopen tập tin khóa thay thế"
 
-#: pack-bitmap.c:815 pack-bitmap.c:821 builtin/pack-objects.c:2216
-#, c-format
-msgid "unable to get size of %s"
-msgstr "không thể lấy kích cỡ của %s"
+#: object-file.c:671
+msgid "unable to read alternates file"
+msgstr "không thể đọc tập tin thay thế"
 
-#: packfile.c:615
-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 à?)"
+#: object-file.c:678
+msgid "unable to move new alternates file into place"
+msgstr "không thể di chuyển tập tin thay thế vào chỗ"
 
-#: packfile.c:1907
+#: object-file.c:713
 #, 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 à?)"
+msgid "path '%s' does not exist"
+msgstr "đường dẫn “%s” không tồn tại"
 
-#: packfile.c:1911
+#: object-file.c:734
 #, 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 à?)"
+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ợ."
 
-#: parse-options-cb.c:20 parse-options-cb.c:24
+#: object-file.c:740
 #, c-format
-msgid "option `%s' expects a numerical value"
-msgstr "tùy chọn “%s” cần một giá trị bằng số"
+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ộ."
 
-#: parse-options-cb.c:41
+#: object-file.c:746
 #, c-format
-msgid "malformed expiration date '%s'"
-msgstr "ngày tháng hết hạn dị hình “%s”"
+msgid "reference repository '%s' is shallow"
+msgstr "kho tham chiếu “%s” là nông"
 
-#: parse-options-cb.c:54
+#: object-file.c:754
 #, c-format
-msgid "option `%s' expects \"always\", \"auto\", or \"never\""
-msgstr "tùy chọn “%s” cần \"always\", \"auto\", hoặc \"never\""
+msgid "reference repository '%s' is grafted"
+msgstr "kho tham chiếu “%s” bị cấy ghép"
 
-#: parse-options-cb.c:132 parse-options-cb.c:149
+#: object-file.c:814
 #, c-format
-msgid "malformed object name '%s'"
-msgstr "tên đối tượng dị hình “%s”"
+msgid "invalid line while parsing alternate refs: %s"
+msgstr "dòng không hợp lệ trong khi phân tích các tham chiếu thay thế: %s"
 
-#: parse-options.c:38
+#: object-file.c:964
 #, c-format
-msgid "%s requires a value"
-msgstr "“%s” yêu cầu một giá trị"
+msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
+msgstr "đang cố để mmap %<PRIuMAX> vượt quá giới hạn %<PRIuMAX>"
 
-#: parse-options.c:73
-#, c-format
-msgid "%s is incompatible with %s"
-msgstr "%s là xung khắc với %s"
+#: object-file.c:985
+msgid "mmap failed"
+msgstr "mmap gặp lỗi"
 
-#: parse-options.c:78
+#: object-file.c:1149
 #, c-format
-msgid "%s : incompatible with something else"
-msgstr "%s : xung khắc với các cái khác"
+msgid "object file %s is empty"
+msgstr "tập tin đối tượng %s trống rỗng"
 
-#: parse-options.c:92 parse-options.c:96 parse-options.c:317
+#: object-file.c:1284 object-file.c:2477
 #, c-format
-msgid "%s takes no value"
-msgstr "%s k nhận giá trị"
+msgid "corrupt loose object '%s'"
+msgstr "đối tượng mất hỏng “%s”"
 
-#: parse-options.c:94
+#: object-file.c:1286 object-file.c:2481
 #, c-format
-msgid "%s isn't available"
-msgstr "%s không sẵn có"
+msgid "garbage at end of loose object '%s'"
+msgstr "gặp rác tại cuối của đối tượng bị mất “%s”"
 
-#: parse-options.c:217
-#, c-format
-msgid "%s expects a non-negative integer value with an optional k/m/g suffix"
-msgstr "%s cần một giá trị dạng số không âm với một hậu tố tùy chọn k/m/g"
+#: object-file.c:1328
+msgid "invalid object type"
+msgstr "kiểu đối tượng không hợp lệ"
 
-#: parse-options.c:386
+#: object-file.c:1412
 #, c-format
-msgid "ambiguous option: %s (could be --%s%s or --%s%s)"
-msgstr "tùy chọn chưa rõ rang: %s (nên là --%s%s hay --%s%s)"
+msgid "unable to unpack %s header with --allow-unknown-type"
+msgstr "không thể giải nén phần đầu gói %s với --allow-unknown-type"
 
-#: parse-options.c:420 parse-options.c:428
+#: object-file.c:1415
 #, c-format
-msgid "did you mean `--%s` (with two dashes)?"
-msgstr "có phải ý bạn là “--%s“ (với hai dấu gạch ngang)?"
+msgid "unable to unpack %s header"
+msgstr "không thể giải gói phần đầu %s"
 
-#: parse-options.c:666 parse-options.c:971
+#: object-file.c:1421
 #, c-format
-msgid "alias of --%s"
-msgstr "bí danh của --%s"
+msgid "unable to parse %s header with --allow-unknown-type"
+msgstr "không thể phân tích phần đầu gói %s với --allow-unknown-type"
 
-#: parse-options.c:862
+#: object-file.c:1424
 #, c-format
-msgid "unknown option `%s'"
-msgstr "không hiểu tùy chọn “%s”"
+msgid "unable to parse %s header"
+msgstr "không thể phân tích phần đầu của “%s”"
 
-#: parse-options.c:864
+#: object-file.c:1651
 #, c-format
-msgid "unknown switch `%c'"
-msgstr "không hiểu tùy chọn “%c”"
+msgid "failed to read object %s"
+msgstr "gặp lỗi khi đọc đối tượng “%s”"
 
-#: parse-options.c:866
+#: object-file.c:1655
 #, c-format
-msgid "unknown non-ascii option in string: `%s'"
-msgstr "không hiểu tùy chọn non-ascii trong chuỗi: “%s”"
-
-#: parse-options.c:890
-msgid "..."
-msgstr "…"
+msgid "replacement %s not found for %s"
+msgstr "c%s thay thế không được tìm thấy cho %s"
 
-#: parse-options.c:909
+#: object-file.c:1659
 #, c-format
-msgid "usage: %s"
-msgstr "cách dùng: %s"
+msgid "loose object %s (stored in %s) is corrupt"
+msgstr "đối tượng mất %s (được lưu trong %s) bị hỏng"
 
-#. TRANSLATORS: the colon here should align with the
-#. one in "usage: %s" translation.
-#.
-#: parse-options.c:915
+#: object-file.c:1663
 #, c-format
-msgid "   or: %s"
-msgstr "     hoặc: %s"
+msgid "packed object %s (stored in %s) is corrupt"
+msgstr "đối tượng đã đóng gói %s (được lưu trong %s) bị hỏng"
 
-#: parse-options.c:918
+#: object-file.c:1768
 #, c-format
-msgid "    %s"
-msgstr "    %s"
-
-#: parse-options.c:957
-msgid "-NUM"
-msgstr "-SỐ"
+msgid "unable to write file %s"
+msgstr "không thể ghi tập tin %s"
 
-#: path.c:915
+#: object-file.c:1775
 #, c-format
-msgid "Could not make %s writable by group"
-msgstr "Không thể làm %s được ghi bởi nhóm"
-
-#: pathspec.c:130
-msgid "Escape character '\\' not allowed as last character in attr value"
-msgstr ""
-"Ký tự thoát chuỗi “\\” không được phép là ký tự cuối trong giá trị thuộc tính"
+msgid "unable to set permission to '%s'"
+msgstr "không thể đặt quyền thành “%s”"
 
-#: pathspec.c:148
-msgid "Only one 'attr:' specification is allowed."
-msgstr "Chỉ có một đặc tả “attr:” là được phép."
+#: object-file.c:1782
+msgid "file write error"
+msgstr "lỗi ghi tập tin"
 
-#: pathspec.c:151
-msgid "attr spec must not be empty"
-msgstr "đặc tả attr phải không được để trống"
+#: object-file.c:1802
+msgid "error when closing loose object file"
+msgstr "gặp lỗi trong khi đóng tập tin đối tượng"
 
-#: pathspec.c:194
+#: object-file.c:1867
 #, c-format
-msgid "invalid attribute name %s"
-msgstr "tên thuộc tính không hợp lệ %s"
-
-#: pathspec.c:259
-msgid "global 'glob' and 'noglob' pathspec settings are incompatible"
+msgid "insufficient permission for adding an object to repository database %s"
 msgstr ""
-"các cài đặt đặc tả đường dẫn “glob” và “noglob” toàn cục là xung khắc nhau"
+"không đủ thẩm quyền để thêm một đối tượng vào cơ sở dữ liệu kho chứa %s"
 
-#: pathspec.c:266
-msgid ""
-"global 'literal' pathspec setting is incompatible with all other global "
-"pathspec settings"
-msgstr ""
-"cài đặt đặc tả đường dẫn “literal” toàn cục là xung khắc với các cài đặt đặc "
-"tả đường dẫn toàn cục khác"
+#: object-file.c:1869
+msgid "unable to create temporary file"
+msgstr "không thể tạo tập tin tạm thời"
 
-#: pathspec.c:306
-msgid "invalid parameter for pathspec magic 'prefix'"
-msgstr "tham số không hợp lệ cho “tiền tố” màu nhiệm đặc tả đường đẫn"
+#: object-file.c:1893
+msgid "unable to write loose object file"
+msgstr "không thể ghi tập tin đối tượng đã mất"
 
-#: pathspec.c:327
+#: object-file.c:1899
 #, c-format
-msgid "Invalid pathspec magic '%.*s' in '%s'"
-msgstr "Số màu nhiệm đặc tả đường dẫn không hợp lệ “%.*s” trong “%s”"
+msgid "unable to deflate new object %s (%d)"
+msgstr "không thể xả nén đối tượng mới %s (%d)"
 
-#: pathspec.c:332
+#: object-file.c:1903
 #, c-format
-msgid "Missing ')' at the end of pathspec magic in '%s'"
-msgstr "Thiếu “)” tại cuối của số màu nhiệm đặc tả đường dẫn trong “%s”"
+msgid "deflateEnd on object %s failed (%d)"
+msgstr "deflateEnd trên đối tượng %s gặp lỗi (%d)"
 
-#: pathspec.c:370
+#: object-file.c:1907
 #, c-format
-msgid "Unimplemented pathspec magic '%c' in '%s'"
-msgstr "Chưa viết mã cho số màu nhiệm đặc tả đường dẫn “%c” trong “%s”"
+msgid "confused by unstable object source data for %s"
+msgstr "chưa rõ ràng baowir dữ liệu nguồn đối tượng không ổn định cho %s"
 
-#: pathspec.c:429
+#: object-file.c:1917 builtin/pack-objects.c:1097
 #, c-format
-msgid "%s: 'literal' and 'glob' are incompatible"
-msgstr "%s: “literal” và “glob” xung khắc nhau"
+msgid "failed utime() on %s"
+msgstr "gặp lỗi utime() trên “%s”"
 
-#: pathspec.c:445
+#: object-file.c:1994
 #, c-format
-msgid "%s: '%s' is outside repository at '%s'"
-msgstr "%s: “%s” ngoài một kho chứa tại “%s”"
-
-#: pathspec.c:521
+msgid "cannot read object for %s"
+msgstr "không thể đọc đối tượng cho %s"
+
+#: object-file.c:2045
+msgid "corrupt commit"
+msgstr "lần chuyển giao sai hỏng"
+
+#: object-file.c:2053
+msgid "corrupt tag"
+msgstr "thẻ sai hỏng"
+
+#: object-file.c:2153
 #, c-format
-msgid "'%s' (mnemonic: '%c')"
-msgstr "“%s” (mnemonic: “%c”)"
+msgid "read error while indexing %s"
+msgstr "gặp lỗi đọc khi đánh mục lục %s"
 
-#: pathspec.c:531
+#: object-file.c:2156
 #, c-format
-msgid "%s: pathspec magic not supported by this command: %s"
-msgstr "%s: số mầu nhiệm đặc tả đường dẫn chưa được hỗ trợ bởi lệnh này: %s"
+msgid "short read while indexing %s"
+msgstr "không đọc ngắn khi đánh mục lục %s"
 
-#: pathspec.c:598
+#: object-file.c:2229 object-file.c:2239
 #, c-format
-msgid "pathspec '%s' is beyond a symbolic link"
-msgstr "đặc tả đường dẫn “%s” vượt ra ngoài liên kết mềm"
+msgid "%s: failed to insert into database"
+msgstr "%s: gặp lỗi khi thêm vào cơ sở dữ liệu"
 
-#: pathspec.c:643
+#: object-file.c:2245
 #, c-format
-msgid "line is badly quoted: %s"
-msgstr "dòng được trích dẫn sai: %s"
+msgid "%s: unsupported file type"
+msgstr "%s: kiểu tập tin không được hỗ trợ"
 
-#: pkt-line.c:92
-msgid "unable to write flush packet"
-msgstr "không thể đẩy dữ liệu của gói lên đĩa"
+#: object-file.c:2269
+#, c-format
+msgid "%s is not a valid object"
+msgstr "%s không phải là một đối tượng hợp lệ"
 
-#: pkt-line.c:99
-msgid "unable to write delim packet"
-msgstr "không thể ghi gói delim"
+#: object-file.c:2271
+#, c-format
+msgid "%s is not a valid '%s' object"
+msgstr "%s không phải là một đối tượng “%s” hợp lệ"
 
-#: pkt-line.c:106
-msgid "unable to write stateless separator packet"
-msgstr "không thể ghi gói phân tách không trạng thái"
+#: object-file.c:2298 builtin/index-pack.c:192
+#, c-format
+msgid "unable to open %s"
+msgstr "không thể mở %s"
 
-#: pkt-line.c:113
-msgid "flush packet write failed"
-msgstr "gặp lỗi khi ghi vào tập tin gói lúc đẩy dữ liệu lên bộ nhớ"
+#: object-file.c:2488 object-file.c:2541
+#, c-format
+msgid "hash mismatch for %s (expected %s)"
+msgstr "mã băm không khớp cho %s (cần %s)"
 
-#: pkt-line.c:153 pkt-line.c:239
-msgid "protocol error: impossibly long line"
-msgstr "lỗi giao thức: không thể làm được dòng dài"
+#: object-file.c:2512
+#, c-format
+msgid "unable to mmap %s"
+msgstr "không thể mmap %s"
 
-#: pkt-line.c:169 pkt-line.c:171
-msgid "packet write with format failed"
-msgstr "gặp lỗi khi ghi gói có định dạng"
+#: object-file.c:2517
+#, c-format
+msgid "unable to unpack header of %s"
+msgstr "không thể giải gói phần đầu của “%s”"
 
-#: pkt-line.c:203
-msgid "packet write failed - data exceeds max packet size"
-msgstr "gặp lỗi khi ghi gói - dữ liệu vượt quá cỡ vói tối đa"
+#: object-file.c:2523
+#, c-format
+msgid "unable to parse header of %s"
+msgstr "không thể phân tích phần đầu của “%s”"
 
-#: pkt-line.c:210 pkt-line.c:217
-msgid "packet write failed"
-msgstr "gặp lỗi khi ghi gói"
+#: object-file.c:2534
+#, c-format
+msgid "unable to unpack contents of %s"
+msgstr "không thể giải gói nội dung của “%s”"
 
-#: pkt-line.c:302
-msgid "read error"
-msgstr "lỗi đọc"
+#: object-name.c:486
+#, c-format
+msgid "short object ID %s is ambiguous"
+msgstr "mã đối tượng dạng rút gọn %s chưa rõ ràng"
 
-#: pkt-line.c:310
-msgid "the remote end hung up unexpectedly"
-msgstr "máy chủ bị treo bất ngờ"
+#: object-name.c:497
+msgid "The candidates are:"
+msgstr "Các ứng cử là:"
 
-#: pkt-line.c:338
-#, c-format
-msgid "protocol error: bad line length character: %.4s"
-msgstr "lỗi giao thức: ký tự chiều dài dòng bị sai: %.4s"
+#: object-name.c:796
+msgid ""
+"Git normally never creates a ref that ends with 40 hex characters\n"
+"because it will be ignored when you just specify 40-hex. These refs\n"
+"may be created by mistake. For example,\n"
+"\n"
+"  git switch -c $br $(git rev-parse ...)\n"
+"\n"
+"where \"$br\" is somehow empty and a 40-hex ref is created. Please\n"
+"examine these refs and maybe delete them. Turn this message off by\n"
+"running \"git config advice.objectNameWarning false\""
+msgstr ""
+"Git thường không bao giờ tạo tham chiếu mà nó kết thúc với 40 ký tự hex\n"
+"bởi vì nó sẽ bị bỏ qua khi bạn chỉ định 40-hex. Những tham chiếu này\n"
+"có lẽ được tạo ra bởi một sai sót nào đó. Ví dụ,\n"
+"\n"
+"  git switch -c $br $(git rev-parse …)\n"
+"\n"
+"với \"$br\" không hiểu lý do vì sao trống rỗng và một tham chiếu 40-hex được "
+"tạo ra.\n"
+"Xin hãy kiểm tra những tham chiếu này và có thể xóa chúng đi. Tắt lời nhắn "
+"này\n"
+"bằng cách chạy lệnh \"git config advice.objectNameWarning false\""
 
-#: pkt-line.c:352 pkt-line.c:357
+#: object-name.c:916
 #, c-format
-msgid "protocol error: bad line length %d"
-msgstr "lỗi giao thức: chiều dài dòng bị sai %d"
+msgid "log for '%.*s' only goes back to %s"
+msgstr "nhật ký cho “%.*s” chỉ trở lại đến %s"
 
-#: pkt-line.c:373 sideband.c:165
+#: object-name.c:924
 #, c-format
-msgid "remote error: %s"
-msgstr "lỗi máy chủ: %s"
-
-#: preload-index.c:119
-msgid "Refreshing index"
-msgstr "Làm mới bảng mục lục"
+msgid "log for '%.*s' only has %d entries"
+msgstr "nhật ký cho “%.*s” chỉ có %d mục"
 
-#: preload-index.c:138
+#: object-name.c:1702
 #, c-format
-msgid "unable to create threaded lstat: %s"
-msgstr "không thể tạo tuyến trình lstat: %s"
-
-#: pretty.c:983
-msgid "unable to parse --pretty format"
-msgstr "không thể phân tích định dạng --pretty"
+msgid "path '%s' exists on disk, but not in '%.*s'"
+msgstr "đường dẫn “%s” có ở trên đĩa, nhưng không trong “%.*s”"
 
-#: promisor-remote.c:30
-msgid "promisor-remote: unable to fork off fetch subprocess"
-msgstr "promisor-remote: không thể rẽ nhánh tuyến trình con fetch"
+#: object-name.c:1708
+#, c-format
+msgid ""
+"path '%s' exists, but not '%s'\n"
+"hint: Did you mean '%.*s:%s' aka '%.*s:./%s'?"
+msgstr ""
+"đường dẫn “%s” tồn tại, nhưng không phải “%s”\n"
+"gợi ý: Có phải ý bạn là “%.*s:%s” aka “%.*s:./%s”?"
 
-#: promisor-remote.c:35 promisor-remote.c:37
-msgid "promisor-remote: could not write to fetch subprocess"
-msgstr "promisor-remote: không thể ghi tiến trình con fetch"
+#: object-name.c:1717
+#, c-format
+msgid "path '%s' does not exist in '%.*s'"
+msgstr "đường dẫn “%s” không tồn tại trong “%.*s”"
 
-#: promisor-remote.c:41
-msgid "promisor-remote: could not close stdin to fetch subprocess"
+#: object-name.c:1745
+#, c-format
+msgid ""
+"path '%s' is in the index, but not at stage %d\n"
+"hint: Did you mean ':%d:%s'?"
 msgstr ""
-"promisor-remote: không thể đóng đầu vào tiêu chuẩn tiến trình con fetch"
+"đường dẫn “%s” nằm trong chỉ mục, nhưng không phải ở giai đoạn %d\n"
+"gợi ý: Có phải ý bạn là “:%d:%s”?"
 
-#: promisor-remote.c:53
+#: object-name.c:1761
 #, c-format
-msgid "promisor remote name cannot begin with '/': %s"
-msgstr "tên máy chủ hứa hẹn không thể bắt đầu bằng “/”: %s"
+msgid ""
+"path '%s' is in the index, but not '%s'\n"
+"hint: Did you mean ':%d:%s' aka ':%d:./%s'?"
+msgstr ""
+"đường dẫn “%s” nằm trong chỉ mục, nhưng không phải “%s”\n"
+"gợi ý: Có phải ý bạn là “:% d:%s “ aka “:%d:./%s”?"
 
-#: prune-packed.c:35
-msgid "Removing duplicate objects"
-msgstr "Đang gỡ các đối tượng trùng lặp"
+#: object-name.c:1769
+#, c-format
+msgid "path '%s' exists on disk, but not in the index"
+msgstr "đường dẫn “%s” tồn tại trên đĩa, nhưng không có trong chỉ mục"
 
-#: range-diff.c:77
-msgid "could not start `log`"
-msgstr "không thể lấy thông tin thống kê về “log“"
+#: object-name.c:1771
+#, c-format
+msgid "path '%s' does not exist (neither on disk nor in the index)"
+msgstr "đường dẫn “%s” không tồn tại (không trên đĩa cũng không trong mục lục)"
 
-#: range-diff.c:79
-msgid "could not read `log` output"
-msgstr "không thể đọc kết xuất “log”"
+#: object-name.c:1784
+msgid "relative path syntax can't be used outside working tree"
+msgstr "cú pháp đường dẫn tương đối không thể thể dùng ngoài cây làm việc"
 
-#: range-diff.c:98 sequencer.c:5310
+#: object-name.c:1922
 #, c-format
-msgid "could not parse commit '%s'"
-msgstr "không thể phân tích lần chuyển giao “%s”"
+msgid "invalid object name '%.*s'."
+msgstr "“%.*s” không phải là tên đối tượng hợp lệ."
 
-#: range-diff.c:112
+#: object.c:53
 #, c-format
-msgid ""
-"could not parse first line of `log` output: did not start with 'commit ': "
-"'%s'"
-msgstr ""
-"không thể phân tích cú pháp dòng đầu tiên của đầu ra “log”: không bắt đầu "
-"bằng “commit ”: “%s”"
+msgid "invalid object type \"%s\""
+msgstr "kiểu đối tượng \"%s\" không hợp lệ"
 
-#: range-diff.c:137
+#: object.c:173
 #, c-format
-msgid "could not parse git header '%.*s'"
-msgstr "không thể phân tích cú pháp phần đầu git “%.*s”"
+msgid "object %s is a %s, not a %s"
+msgstr "đối tượng %s là một %s, không phải là một %s"
 
-#: range-diff.c:299
-msgid "failed to generate diff"
-msgstr "gặp lỗi khi tạo khác biệt"
+#: object.c:233
+#, c-format
+msgid "object %s has unknown type id %d"
+msgstr "đối tượng %s có mã kiểu %d chưa biết"
 
-#: range-diff.c:532 range-diff.c:534
+#: object.c:246
 #, c-format
-msgid "could not parse log for '%s'"
-msgstr "không thể phân tích nhật ký cho “%s”"
+msgid "unable to parse object: %s"
+msgstr "không thể phân tích đối tượng: “%s”"
 
-#: read-cache.c:682
+#: object.c:266 object.c:278
 #, c-format
-msgid "will not add file alias '%s' ('%s' already exists in index)"
-msgstr ""
-"sẽ không thêm các bí danh “%s” (“%s” đã có từ trước trong bảng mục lục)"
+msgid "hash mismatch %s"
+msgstr "mã băm không khớp %s"
 
-#: read-cache.c:698
-msgid "cannot create an empty blob in the object database"
-msgstr "không thể tạo một blob rỗng trong cơ sở dữ liệu đối tượng"
+#: pack-bitmap.c:843 pack-bitmap.c:849 builtin/pack-objects.c:2226
+#, c-format
+msgid "unable to get size of %s"
+msgstr "không thể lấy kích cỡ của %s"
 
-#: read-cache.c:720
+#: pack-bitmap.c:1489 builtin/rev-list.c:92
 #, c-format
-msgid "%s: can only add regular files, symbolic links or git-directories"
-msgstr ""
-"%s: chỉ có thể thêm tập tin thông thường, liên kết mềm hoặc git-directories"
+msgid "unable to get disk usage of %s"
+msgstr "không thể dung lượng đĩa đã dùng của %s"
 
-#: read-cache.c:725
+#: pack-revindex.c:220
 #, c-format
-msgid "'%s' does not have a commit checked out"
-msgstr "“%s” không có một lần chuyển giao nào được lấy ra"
+msgid "reverse-index file %s is too small"
+msgstr "tập tin reverse-index %s quá nhỏ"
 
-#: read-cache.c:777
+#: pack-revindex.c:225
 #, c-format
-msgid "unable to index file '%s'"
-msgstr "không thể đánh mục lục tập tin “%s”"
+msgid "reverse-index file %s is corrupt"
+msgstr "tập tin reverse-index %s bị hỏng"
 
-#: read-cache.c:796
+#: pack-revindex.c:233
 #, c-format
-msgid "unable to add '%s' to index"
-msgstr "không thể thêm %s vào bảng mục lục"
+msgid "reverse-index file %s has unknown signature"
+msgstr "tập tin reverse-index %s có chữ ký chưa biết"
 
-#: read-cache.c:807
+#: pack-revindex.c:237
 #, c-format
-msgid "unable to stat '%s'"
-msgstr "không thể lấy thống kê “%s”"
+msgid "reverse-index file %s has unsupported version %<PRIu32>"
+msgstr "tệp chỉ mục ngược %s có phiên bản không được hỗ trợ %<PRIu32>"
 
-#: read-cache.c:1318
+#: pack-revindex.c:242
 #, c-format
-msgid "'%s' appears as both a file and as a directory"
-msgstr "%s có vẻ không phải là tập tin và cũng chẳng phải là một thư mục"
+msgid "reverse-index file %s has unsupported hash id %<PRIu32>"
+msgstr "tệp chỉ mục ngược %s có id mã băm không được hỗ trợ %<PRIu32>"
 
-#: read-cache.c:1524
-msgid "Refresh index"
-msgstr "Làm tươi mới bảng mục lục"
+#: pack-write.c:236
+msgid "cannot both write and verify reverse index"
+msgstr "không thể cùng lúc đọc và xác minh được bảng mục lục đảo ngược"
 
-#: read-cache.c:1639
+#: pack-write.c:257
 #, c-format
-msgid ""
-"index.version set, but the value is invalid.\n"
-"Using version %i"
-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"
+msgid "could not stat: %s"
+msgstr "không thể lấy thông tin thống kê: %s"
 
-#: read-cache.c:1649
+#: pack-write.c:269
 #, c-format
-msgid ""
-"GIT_INDEX_VERSION set, but the value is invalid.\n"
-"Using version %i"
-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"
+msgid "failed to make %s readable"
+msgstr "gặp lỗi làm cho %s đọc được"
 
-#: read-cache.c:1705
+#: pack-write.c:508
 #, c-format
-msgid "bad signature 0x%08x"
-msgstr "chữ ký sai 0x%08x"
-
-#: read-cache.c:1708
-#, c-format
-msgid "bad index version %d"
-msgstr "phiên bản mục lục sai %d"
+msgid "could not write '%s' promisor file"
+msgstr "không thể ghi tập tin promisor “%s”"
 
-#: read-cache.c:1717
-msgid "bad index file sha1 signature"
-msgstr "chữ ký dạng sha1 cho tập tin mục lục không đúng"
+#: packfile.c:625
+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 à?)"
 
-#: read-cache.c:1747
+#: packfile.c:1934
 #, c-format
-msgid "index uses %.4s extension, which we do not understand"
-msgstr "mục lục dùng phần mở rộng %.4s, cái mà chúng tôi không hiểu được"
+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 à?)"
 
-#: read-cache.c:1749
+#: packfile.c:1938
 #, c-format
-msgid "ignoring %.4s extension"
-msgstr "đang lờ đi phần mở rộng %.4s"
+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 à?)"
 
-#: read-cache.c:1786
+#: parse-options-cb.c:20 parse-options-cb.c:24
 #, c-format
-msgid "unknown index entry format 0x%08x"
-msgstr "không hiểu định dạng mục lục 0x%08x"
+msgid "option `%s' expects a numerical value"
+msgstr "tùy chọn “%s” cần một giá trị bằng số"
 
-#: read-cache.c:1802
+#: parse-options-cb.c:41
 #, c-format
-msgid "malformed name field in the index, near path '%s'"
-msgstr "trường tên sai sạng trong mục lục, gần đường dẫn “%s”"
-
-#: read-cache.c:1859
-msgid "unordered stage entries in index"
-msgstr "các mục tin stage không đúng thứ tự trong mục lục"
+msgid "malformed expiration date '%s'"
+msgstr "ngày tháng hết hạn dị hình “%s”"
 
-#: read-cache.c:1862
+#: parse-options-cb.c:54
 #, c-format
-msgid "multiple stage entries for merged file '%s'"
-msgstr "nhiều mục stage cho tập tin hòa trộn “%s”"
+msgid "option `%s' expects \"always\", \"auto\", or \"never\""
+msgstr "tùy chọn “%s” cần \"always\", \"auto\", hoặc \"never\""
 
-#: read-cache.c:1865
+#: parse-options-cb.c:132 parse-options-cb.c:149
 #, c-format
-msgid "unordered stage entries for '%s'"
-msgstr "các mục tin stage không đúng thứ tự cho “%s”"
-
-#: read-cache.c:1971 read-cache.c:2262 rerere.c:565 rerere.c:599 rerere.c:1111
-#: submodule.c:1628 builtin/add.c:538 builtin/check-ignore.c:181
-#: builtin/checkout.c:502 builtin/checkout.c:688 builtin/clean.c:991
-#: builtin/commit.c:364 builtin/diff-tree.c:122 builtin/grep.c:507
-#: builtin/mv.c:146 builtin/reset.c:247 builtin/rm.c:290
-#: builtin/submodule--helper.c:332
-msgid "index file corrupt"
-msgstr "tập tin ghi bảng mục lục bị hỏng"
+msgid "malformed object name '%s'"
+msgstr "tên đối tượng dị hình “%s”"
 
-#: read-cache.c:2115
+#: parse-options.c:38
 #, c-format
-msgid "unable to create load_cache_entries thread: %s"
-msgstr "không thể tạo tuyến load_cache_entries: %s"
+msgid "%s requires a value"
+msgstr "“%s” yêu cầu một giá trị"
 
-#: read-cache.c:2128
+#: parse-options.c:73
 #, c-format
-msgid "unable to join load_cache_entries thread: %s"
-msgstr "không thể gia nhập tuyến load_cache_entries: %s"
+msgid "%s is incompatible with %s"
+msgstr "%s là xung khắc với %s"
 
-#: read-cache.c:2161
+#: parse-options.c:78
 #, c-format
-msgid "%s: index file open failed"
-msgstr "%s: mở tập tin mục lục gặp lỗi"
+msgid "%s : incompatible with something else"
+msgstr "%s : xung khắc với các cái khác"
 
-#: read-cache.c:2165
+#: parse-options.c:92 parse-options.c:96 parse-options.c:317
 #, c-format
-msgid "%s: cannot stat the open index"
-msgstr "%s: không thể lấy thống kê bảng mục lục đã mở"
+msgid "%s takes no value"
+msgstr "%s k nhận giá trị"
 
-#: read-cache.c:2169
+#: parse-options.c:94
 #, c-format
-msgid "%s: index file smaller than expected"
-msgstr "%s: tập tin mục lục nhỏ hơn mong đợi"
+msgid "%s isn't available"
+msgstr "%s không sẵn có"
 
-#: read-cache.c:2173
+#: parse-options.c:217
 #, c-format
-msgid "%s: unable to map index file"
-msgstr "%s: không thể ánh xạ tập tin mục lục"
+msgid "%s expects a non-negative integer value with an optional k/m/g suffix"
+msgstr "%s cần một giá trị dạng số không âm với một hậu tố tùy chọn k/m/g"
 
-#: read-cache.c:2215
+#: parse-options.c:386
 #, c-format
-msgid "unable to create load_index_extensions thread: %s"
-msgstr "không thể tạo tuyến load_index_extensions: %s"
+msgid "ambiguous option: %s (could be --%s%s or --%s%s)"
+msgstr "tùy chọn chưa rõ rang: %s (nên là --%s%s hay --%s%s)"
 
-#: read-cache.c:2242
+#: parse-options.c:420 parse-options.c:428
 #, c-format
-msgid "unable to join load_index_extensions thread: %s"
-msgstr "không thể gia nhập tuyến load_index_extensions: %s"
+msgid "did you mean `--%s` (with two dashes)?"
+msgstr "có phải ý bạn là “--%s“ (với hai dấu gạch ngang)?"
 
-#: read-cache.c:2274
+#: parse-options.c:666 parse-options.c:971
 #, c-format
-msgid "could not freshen shared index '%s'"
-msgstr "không thể làm tươi mới mục lục đã chia sẻ “%s”"
+msgid "alias of --%s"
+msgstr "bí danh của --%s"
 
-#: read-cache.c:2321
+#: parse-options.c:862
 #, c-format
-msgid "broken index, expect %s in %s, got %s"
-msgstr "mục lục bị hỏng, cần %s trong %s, nhưng lại nhận được %s"
+msgid "unknown option `%s'"
+msgstr "không hiểu tùy chọn “%s”"
 
-#: read-cache.c:3017 strbuf.c:1171 wrapper.c:633 builtin/merge.c:1140
+#: parse-options.c:864
 #, c-format
-msgid "could not close '%s'"
-msgstr "không thể đóng “%s”"
+msgid "unknown switch `%c'"
+msgstr "không hiểu tùy chọn “%c”"
 
-#: read-cache.c:3120 sequencer.c:2479 sequencer.c:4231
+#: parse-options.c:866
 #, c-format
-msgid "could not stat '%s'"
-msgstr "không thể lấy thông tin thống kê về “%s”"
+msgid "unknown non-ascii option in string: `%s'"
+msgstr "không hiểu tùy chọn non-ascii trong chuỗi: “%s”"
 
-#: read-cache.c:3133
-#, c-format
-msgid "unable to open git dir: %s"
-msgstr "không thể mở thư mục git: %s"
+#: parse-options.c:890
+msgid "..."
+msgstr "…"
 
-#: read-cache.c:3145
+#: parse-options.c:909
 #, c-format
-msgid "unable to unlink: %s"
-msgstr "không thể bỏ liên kết (unlink): “%s”"
+msgid "usage: %s"
+msgstr "cách dùng: %s"
 
-#: read-cache.c:3170
+#. TRANSLATORS: the colon here should align with the
+#. one in "usage: %s" translation.
+#.
+#: parse-options.c:915
 #, c-format
-msgid "cannot fix permission bits on '%s'"
-msgstr "không thể sửa các bít phân quyền trên “%s”"
+msgid "   or: %s"
+msgstr "     hoặc: %s"
 
-#: read-cache.c:3319
+#: parse-options.c:918
 #, c-format
-msgid "%s: cannot drop to stage #0"
-msgstr "%s: không thể xóa bỏ stage #0"
+msgid "    %s"
+msgstr "    %s"
 
-#: rebase-interactive.c:11
-msgid ""
-"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 ""
-"Bạn có thể sửa nó bằng “git rebase --edit-todo” và sau đó chạy “git rebase --"
-"continue”.\n"
-"Hoặc là bạn có thể bãi bỏ việc cải tổ bằng “git rebase --abort”.\n"
+#: parse-options.c:957
+msgid "-NUM"
+msgstr "-SỐ"
 
-#: rebase-interactive.c:33
+#: path.c:915
 #, 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."
+msgid "Could not make %s writable by group"
+msgstr "Không thể làm %s được ghi bởi nhóm"
 
-#: rebase-interactive.c:42
-msgid ""
-"\n"
-"Commands:\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"
-"b, break = stop here (continue rebase later with 'git rebase --continue')\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"
+#: pathspec.c:130
+msgid "Escape character '\\' not allowed as last character in attr value"
 msgstr ""
-"\n"
-"Các lệnh:\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"
-"b, break = dừng tại đây (tiếp tục cải tổ sau này bằng “git rebase --"
-"continue”)\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"
+"Ký tự thoát chuỗi “\\” không được phép là ký tự cuối trong giá trị thuộc tính"
 
-#: rebase-interactive.c:63
-#, c-format
-msgid "Rebase %s onto %s (%d command)"
-msgid_plural "Rebase %s onto %s (%d commands)"
-msgstr[0] "Cải tổ %s vào %s (%d lệnh )"
+#: pathspec.c:148
+msgid "Only one 'attr:' specification is allowed."
+msgstr "Chỉ có một đặc tả “attr:” là được phép."
 
-#: rebase-interactive.c:72 git-rebase--preserve-merges.sh:218
-msgid ""
-"\n"
-"Do not remove any line. Use 'drop' explicitly to remove a commit.\n"
-msgstr ""
-"\n"
-"Đừ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"
+#: pathspec.c:151
+msgid "attr spec must not be empty"
+msgstr "đặc tả attr phải không được để trống"
 
-#: rebase-interactive.c:75 git-rebase--preserve-merges.sh:222
-msgid ""
-"\n"
-"If you remove a line here THAT COMMIT WILL BE LOST.\n"
-msgstr ""
-"\n"
-"Nếu bạn xóa bỏ một dòng ở đây thì LẦN CHUYỂN GIAO ĐÓ SẼ MẤT.\n"
+#: pathspec.c:194
+#, c-format
+msgid "invalid attribute name %s"
+msgstr "tên thuộc tính không hợp lệ %s"
 
-#: rebase-interactive.c:81 git-rebase--preserve-merges.sh:861
-msgid ""
-"\n"
-"You are editing the todo file of an ongoing interactive rebase.\n"
-"To continue rebase after editing, run:\n"
-"    git rebase --continue\n"
-"\n"
+#: pathspec.c:259
+msgid "global 'glob' and 'noglob' pathspec settings are incompatible"
 msgstr ""
-"\n"
-"Bạn đang sửa tập tin todo của một lần cải tổ tương tác đang thực hiện.\n"
-"Để tiếp tục cải tổ sau khi sửa, chạy:\n"
-"    git rebase --continue\n"
-"\n"
+"các cài đặt đặc tả đường dẫn “glob” và “noglob” toàn cục là xung khắc nhau"
 
-#: rebase-interactive.c:86 git-rebase--preserve-merges.sh:938
+#: pathspec.c:266
 msgid ""
-"\n"
-"However, if you remove everything, the rebase will be aborted.\n"
-"\n"
+"global 'literal' pathspec setting is incompatible with all other global "
+"pathspec settings"
 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"
-"\n"
+"cài đặt đặc tả đường dẫn “literal” toàn cục là xung khắc với các cài đặt đặc "
+"tả đường dẫn toàn cục khác"
 
-#: rebase-interactive.c:110 rerere.c:485 rerere.c:692 sequencer.c:3607
-#: sequencer.c:3633 sequencer.c:5416 builtin/fsck.c:347 builtin/rebase.c:270
-#, c-format
-msgid "could not write '%s'"
-msgstr "không thể ghi “%s”"
+#: pathspec.c:306
+msgid "invalid parameter for pathspec magic 'prefix'"
+msgstr "tham số không hợp lệ cho “tiền tố” màu nhiệm đặc tả đường đẫn"
 
-#: rebase-interactive.c:116 builtin/rebase.c:202 builtin/rebase.c:228
-#: builtin/rebase.c:252
+#: pathspec.c:327
 #, c-format
-msgid "could not write '%s'."
-msgstr "không thể ghi “%s”."
+msgid "Invalid pathspec magic '%.*s' in '%s'"
+msgstr "Số màu nhiệm đặc tả đường dẫn không hợp lệ “%.*s” trong “%s”"
 
-#: rebase-interactive.c:193
+#: pathspec.c:332
 #, c-format
-msgid ""
-"Warning: some commits may have been dropped accidentally.\n"
-"Dropped commits (newer to older):\n"
-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"
+msgid "Missing ')' at the end of pathspec magic in '%s'"
+msgstr "Thiếu “)” tại cuối của số màu nhiệm đặc tả đường dẫn trong “%s”"
 
-#: rebase-interactive.c:200
+#: pathspec.c:370
 #, c-format
-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"
-"The possible behaviours are: ignore, warn, error.\n"
-"\n"
-msgstr ""
-"Để tránh thông báo này, dùng \"drop\" một cách rõ ràng để xóa bỏ một lần "
-"chuyển giao.\n"
-"\n"
-"Dùng “git config rebase.missingCommitsCheck” để thay đổi mức độ của cảnh "
-"báo.\n"
-"Cánh ứng xử có thể là: ignore, warn, error.\n"
-"\n"
+msgid "Unimplemented pathspec magic '%c' in '%s'"
+msgstr "Chưa viết mã cho số màu nhiệm đặc tả đường dẫn “%c” trong “%s”"
 
-#: rebase-interactive.c:233 rebase-interactive.c:238 sequencer.c:2394
-#: builtin/rebase.c:188 builtin/rebase.c:213 builtin/rebase.c:239
-#: builtin/rebase.c:264
+#: pathspec.c:429
 #, c-format
-msgid "could not read '%s'."
-msgstr "không thể đọc “%s”."
-
-#: ref-filter.c:42 wt-status.c:1973
-msgid "gone"
-msgstr "đã ra đi"
+msgid "%s: 'literal' and 'glob' are incompatible"
+msgstr "%s: “literal” và “glob” xung khắc nhau"
 
-#: ref-filter.c:43
+#: pathspec.c:445
 #, c-format
-msgid "ahead %d"
-msgstr "phía trước %d"
+msgid "%s: '%s' is outside repository at '%s'"
+msgstr "%s: “%s” ngoài một kho chứa tại “%s”"
 
-#: ref-filter.c:44
+#: pathspec.c:521
 #, c-format
-msgid "behind %d"
-msgstr "đằng sau %d"
+msgid "'%s' (mnemonic: '%c')"
+msgstr "“%s” (mnemonic: “%c”)"
 
-#: ref-filter.c:45
+#: pathspec.c:531
 #, c-format
-msgid "ahead %d, behind %d"
-msgstr "trước %d, sau %d"
+msgid "%s: pathspec magic not supported by this command: %s"
+msgstr "%s: số mầu nhiệm đặc tả đường dẫn chưa được hỗ trợ bởi lệnh này: %s"
 
-#: ref-filter.c:169
+#: pathspec.c:598
 #, c-format
-msgid "expected format: %%(color:<color>)"
-msgstr "cần định dạng: %%(color:<color>)"
+msgid "pathspec '%s' is beyond a symbolic link"
+msgstr "đặc tả đường dẫn “%s” vượt ra ngoài liên kết mềm"
 
-#: ref-filter.c:171
+#: pathspec.c:643
 #, c-format
-msgid "unrecognized color: %%(color:%s)"
-msgstr "không nhận ra màu: %%(màu:%s)"
+msgid "line is badly quoted: %s"
+msgstr "dòng được trích dẫn sai: %s"
 
-#: ref-filter.c:193
-#, c-format
-msgid "Integer value expected refname:lstrip=%s"
-msgstr "Giá trị nguyên cần tên tham chiếu:lstrip=%s"
+#: pkt-line.c:92
+msgid "unable to write flush packet"
+msgstr "không thể đẩy dữ liệu của gói lên đĩa"
 
-#: ref-filter.c:197
-#, c-format
-msgid "Integer value expected refname:rstrip=%s"
-msgstr "Giá trị nguyên cần tên tham chiếu:rstrip=%s"
+#: pkt-line.c:99
+msgid "unable to write delim packet"
+msgstr "không thể ghi gói delim"
 
-#: ref-filter.c:199
-#, c-format
-msgid "unrecognized %%(%s) argument: %s"
-msgstr "đối số không được thừa nhận %%(%s): %s"
+#: pkt-line.c:106
+msgid "unable to write stateless separator packet"
+msgstr "không thể ghi gói phân tách không trạng thái"
 
-#: ref-filter.c:254
-#, c-format
-msgid "%%(objecttype) does not take arguments"
-msgstr "%%(objecttype) không nhận các đối số"
+#: pkt-line.c:113
+msgid "flush packet write failed"
+msgstr "gặp lỗi khi ghi vào tập tin gói lúc đẩy dữ liệu lên bộ nhớ"
 
-#: ref-filter.c:276
-#, c-format
-msgid "unrecognized %%(objectsize) argument: %s"
-msgstr "tham số không được thừa nhận %%(objectname): %s"
+#: pkt-line.c:153 pkt-line.c:239
+msgid "protocol error: impossibly long line"
+msgstr "lỗi giao thức: không thể làm được dòng dài"
 
-#: ref-filter.c:284
-#, c-format
-msgid "%%(deltabase) does not take arguments"
-msgstr "%%(deltabase) không nhận các đối số"
+#: pkt-line.c:169 pkt-line.c:171
+msgid "packet write with format failed"
+msgstr "gặp lỗi khi ghi gói có định dạng"
 
-#: ref-filter.c:296
-#, c-format
-msgid "%%(body) does not take arguments"
-msgstr "%%(body) không nhận các đối số"
+#: pkt-line.c:203
+msgid "packet write failed - data exceeds max packet size"
+msgstr "gặp lỗi khi ghi gói - dữ liệu vượt quá cỡ vói tối đa"
 
-#: ref-filter.c:309
-#, c-format
-msgid "unrecognized %%(subject) argument: %s"
-msgstr "tham số không được thừa nhận %%(subject): %s"
+#: pkt-line.c:210 pkt-line.c:217
+msgid "packet write failed"
+msgstr "gặp lỗi khi ghi gói"
 
-#: ref-filter.c:330
-#, c-format
-msgid "unknown %%(trailers) argument: %s"
-msgstr "không hiểu tham số %%(trailers): %s"
+#: pkt-line.c:302
+msgid "read error"
+msgstr "lỗi đọc"
 
-#: ref-filter.c:363
-#, c-format
-msgid "positive value expected contents:lines=%s"
-msgstr "cần nội dung mang giá trị dương:lines=%s"
+#: pkt-line.c:310
+msgid "the remote end hung up unexpectedly"
+msgstr "máy chủ bị treo bất ngờ"
 
-#: ref-filter.c:365
+#: pkt-line.c:338
 #, c-format
-msgid "unrecognized %%(contents) argument: %s"
-msgstr "đối số không được thừa nhận %%(contents): %s"
+msgid "protocol error: bad line length character: %.4s"
+msgstr "lỗi giao thức: ký tự chiều dài dòng bị sai: %.4s"
 
-#: ref-filter.c:380
+#: pkt-line.c:352 pkt-line.c:357
 #, c-format
-msgid "positive value expected '%s' in %%(%s)"
-msgstr "cần giá trị dương “%s” trong %%(%s)"
+msgid "protocol error: bad line length %d"
+msgstr "lỗi giao thức: chiều dài dòng bị sai %d"
 
-#: ref-filter.c:384
+#: pkt-line.c:373 sideband.c:165
 #, c-format
-msgid "unrecognized argument '%s' in %%(%s)"
-msgstr "đối số “%s” không được thừa nhận trong %%(%s)"
+msgid "remote error: %s"
+msgstr "lỗi máy chủ: %s"
 
-#: ref-filter.c:398
-#, c-format
-msgid "unrecognized email option: %s"
-msgstr "không nhận ra tùy chọn thư điện tử: “%s”"
+#: preload-index.c:125
+msgid "Refreshing index"
+msgstr "Làm mới bảng mục lục"
 
-#: ref-filter.c:428
+#: preload-index.c:144
 #, c-format
-msgid "expected format: %%(align:<width>,<position>)"
-msgstr "cần định dạng: %%(align:<width>,<position>)"
+msgid "unable to create threaded lstat: %s"
+msgstr "không thể tạo tuyến trình lstat: %s"
 
-#: ref-filter.c:440
-#, c-format
-msgid "unrecognized position:%s"
-msgstr "vị trí không được thừa nhận:%s"
+#: pretty.c:984
+msgid "unable to parse --pretty format"
+msgstr "không thể phân tích định dạng --pretty"
 
-#: ref-filter.c:447
-#, c-format
-msgid "unrecognized width:%s"
-msgstr "chiều rộng không được thừa nhận:%s"
+#: promisor-remote.c:30
+msgid "promisor-remote: unable to fork off fetch subprocess"
+msgstr "promisor-remote: không thể rẽ nhánh tuyến trình con fetch"
 
-#: ref-filter.c:456
-#, c-format
-msgid "unrecognized %%(align) argument: %s"
-msgstr "đối số không được thừa nhận %%(align): %s"
+#: promisor-remote.c:35 promisor-remote.c:37
+msgid "promisor-remote: could not write to fetch subprocess"
+msgstr "promisor-remote: không thể ghi tiến trình con fetch"
 
-#: ref-filter.c:464
-#, 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)"
+#: promisor-remote.c:41
+msgid "promisor-remote: could not close stdin to fetch subprocess"
+msgstr ""
+"promisor-remote: không thể đóng đầu vào tiêu chuẩn tiến trình con fetch"
 
-#: ref-filter.c:482
+#: promisor-remote.c:53
 #, c-format
-msgid "unrecognized %%(if) argument: %s"
-msgstr "đối số không được thừa nhận %%(if): %s"
+msgid "promisor remote name cannot begin with '/': %s"
+msgstr "tên máy chủ hứa hẹn không thể bắt đầu bằng “/”: %s"
 
-#: ref-filter.c:584
-#, c-format
-msgid "malformed field name: %.*s"
-msgstr "tên trường dị hình: %.*s"
+#: prune-packed.c:35
+msgid "Removing duplicate objects"
+msgstr "Đang gỡ các đối tượng trùng lặp"
+
+#: range-diff.c:78
+msgid "could not start `log`"
+msgstr "không thể lấy thông tin thống kê về “log“"
+
+#: range-diff.c:80
+msgid "could not read `log` output"
+msgstr "không thể đọc kết xuất “log”"
 
-#: ref-filter.c:611
+#: range-diff.c:101 sequencer.c:5318
 #, c-format
-msgid "unknown field name: %.*s"
-msgstr "không hiểu tên trường: %.*s"
+msgid "could not parse commit '%s'"
+msgstr "không thể phân tích lần chuyển giao “%s”"
 
-#: ref-filter.c:615
+#: range-diff.c:115
 #, c-format
 msgid ""
-"not a git repository, but the field '%.*s' requires access to object data"
+"could not parse first line of `log` output: did not start with 'commit ': "
+"'%s'"
 msgstr ""
-"không phải là một kho git, nhưng trường “%.*s” yêu cầu truy cập vào dữ liệu "
-"đối tượng"
+"không thể phân tích cú pháp dòng đầu tiên của đầu ra “log”: không bắt đầu "
+"bằng “commit ”: “%s”"
 
-#: ref-filter.c:739
+#: range-diff.c:140
 #, 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)"
+msgid "could not parse git header '%.*s'"
+msgstr "không thể phân tích cú pháp phần đầu git “%.*s”"
 
-#: ref-filter.c:802
-#, 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)"
+#: range-diff.c:306
+msgid "failed to generate diff"
+msgstr "gặp lỗi khi tạo khác biệt"
 
-#: ref-filter.c:804
-#, 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"
+#: range-diff.c:558
+msgid "--left-only and --right-only are mutually exclusive"
+msgstr "--left-only và --right-only loại từ lẫn nhau"
 
-#: ref-filter.c:806
+#: range-diff.c:561 range-diff.c:563
 #, c-format
-msgid "format: %%(then) atom used after %%(else)"
-msgstr "định dạng: nguyên tử %%(then) được dùng sau %%(else)"
+msgid "could not parse log for '%s'"
+msgstr "không thể phân tích nhật ký cho “%s”"
 
-#: ref-filter.c:834
+#: read-cache.c:682
 #, 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)"
+msgid "will not add file alias '%s' ('%s' already exists in index)"
+msgstr ""
+"sẽ không thêm các bí danh “%s” (“%s” đã có từ trước trong bảng mục lục)"
 
-#: ref-filter.c:836
-#, 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)"
+#: read-cache.c:698
+msgid "cannot create an empty blob in the object database"
+msgstr "không thể tạo một blob rỗng trong cơ sở dữ liệu đối tượng"
 
-#: ref-filter.c:838
+#: read-cache.c:720
 #, 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"
+msgid "%s: can only add regular files, symbolic links or git-directories"
+msgstr ""
+"%s: chỉ có thể thêm tập tin thông thường, liên kết mềm hoặc git-directories"
 
-#: ref-filter.c:853
+#: read-cache.c:725
 #, 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"
+msgid "'%s' does not have a commit checked out"
+msgstr "“%s” không có một lần chuyển giao nào được lấy ra"
 
-#: ref-filter.c:910
+#: read-cache.c:777
 #, c-format
-msgid "malformed format string %s"
-msgstr "chuỗi định dạng dị hình %s"
-
-#: ref-filter.c:1549
-#, c-format
-msgid "no branch, rebasing %s"
-msgstr "không nhánh, đang cải tổ %s"
-
-#: ref-filter.c:1552
-#, 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:1555
-#, c-format
-msgid "no branch, bisect started on %s"
-msgstr "không nhánh, di chuyển nửa bước được bắt đầu tại %s"
-
-#: ref-filter.c:1565
-msgid "no branch"
-msgstr "không nhánh"
+msgid "unable to index file '%s'"
+msgstr "không thể đánh mục lục tập tin “%s”"
 
-#: ref-filter.c:1599 ref-filter.c:1808
+#: read-cache.c:796
 #, c-format
-msgid "missing object %s for %s"
-msgstr "thiếu đối tượng %s cho %s"
+msgid "unable to add '%s' to index"
+msgstr "không thể thêm %s vào bảng mục lục"
 
-#: ref-filter.c:1609
+#: read-cache.c:807
 #, c-format
-msgid "parse_object_buffer failed on %s for %s"
-msgstr "parse_object_buffer gặp lỗi trên %s cho %s"
+msgid "unable to stat '%s'"
+msgstr "không thể lấy thống kê “%s”"
 
-#: ref-filter.c:2062
+#: read-cache.c:1318
 #, c-format
-msgid "malformed object at '%s'"
-msgstr "đối tượng dị hình tại “%s”"
+msgid "'%s' appears as both a file and as a directory"
+msgstr "%s có vẻ không phải là tập tin và cũng chẳng phải là một thư mục"
 
-#: ref-filter.c:2151
-#, c-format
-msgid "ignoring ref with broken name %s"
-msgstr "đang lờ đi tham chiếu với tên hỏng %s"
+#: read-cache.c:1532
+msgid "Refresh index"
+msgstr "Làm tươi mới bảng mục lục"
 
-#: ref-filter.c:2156 refs.c:676
+#: read-cache.c:1657
 #, c-format
-msgid "ignoring broken ref %s"
-msgstr "đang lờ đi tham chiếu hỏng %s"
+msgid ""
+"index.version set, but the value is invalid.\n"
+"Using version %i"
+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"
 
-#: ref-filter.c:2472
+#: read-cache.c:1667
 #, c-format
-msgid "format: %%(end) atom missing"
-msgstr "định dạng: thiếu nguyên tử %%(end)"
+msgid ""
+"GIT_INDEX_VERSION set, but the value is invalid.\n"
+"Using version %i"
+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"
 
-#: ref-filter.c:2571
+#: read-cache.c:1723
 #, c-format
-msgid "malformed object name %s"
-msgstr "tên đối tượng dị hình %s"
+msgid "bad signature 0x%08x"
+msgstr "chữ ký sai 0x%08x"
 
-#: ref-filter.c:2576
+#: read-cache.c:1726
 #, c-format
-msgid "option `%s' must point to a commit"
-msgstr "tùy chọn “%s” phải chỉ đến một lần chuyển giao"
+msgid "bad index version %d"
+msgstr "phiên bản mục lục sai %d"
 
-#: refs.c:264
-#, c-format
-msgid "%s does not point to a valid object!"
-msgstr "“%s” không chỉ đến một lần chuyển giao hợp lệ nào cả!"
+#: read-cache.c:1735
+msgid "bad index file sha1 signature"
+msgstr "chữ ký dạng sha1 cho tập tin mục lục không đúng"
 
-#: refs.c:566
+#: read-cache.c:1765
 #, c-format
-msgid ""
-"Using '%s' as the name for the initial branch. This default branch name\n"
-"is subject to change. To configure the initial branch name to use in all\n"
-"of your new repositories, which will suppress this warning, call:\n"
-"\n"
-"\tgit config --global init.defaultBranch <name>\n"
-"\n"
-"Names commonly chosen instead of 'master' are 'main', 'trunk' and\n"
-"'development'. The just-created branch can be renamed via this command:\n"
-"\n"
-"\tgit branch -m <name>\n"
-msgstr ""
-"Sử dụng '%s' làm tên cho nhánh ban đầu. Tên nhánh mặc định này\n"
-"có thể thay đổi. Để cấu hình tên nhánh khởi đầu sử dụng trong tất cả\n"
-"kho lưu trữ mới của bạn, cái mà sẽ ngăn chặn cảnh báo này, gọi lệnh:\n"
-"\n"
-"\tgit config --global init.defaultBranch <tên>\n"
-"\n"
-"Tên thường được chọn thay cho 'master' là 'main', 'trunk' và\n"
-"'development'. Nhánh vừa tạo có thể được đổi tên thông qua lệnh:\n"
-"\n"
-"\tgit branch -m <tên>\n"
+msgid "index uses %.4s extension, which we do not understand"
+msgstr "mục lục dùng phần mở rộng %.4s, cái mà chúng tôi không hiểu được"
 
-#: refs.c:588
+#: read-cache.c:1767
 #, c-format
-msgid "could not retrieve `%s`"
-msgstr "không thể lấy về “%s”"
+msgid "ignoring %.4s extension"
+msgstr "đang lờ đi phần mở rộng %.4s"
 
-#: refs.c:598
+#: read-cache.c:1804
 #, c-format
-msgid "invalid branch name: %s = %s"
-msgstr "tên nhánh không hợp lệ: %s = %s"
+msgid "unknown index entry format 0x%08x"
+msgstr "không hiểu định dạng mục lục 0x%08x"
 
-#: refs.c:674
+#: read-cache.c:1820
 #, c-format
-msgid "ignoring dangling symref %s"
-msgstr "đang lờ đi tham chiếu mềm thừa %s"
+msgid "malformed name field in the index, near path '%s'"
+msgstr "trường tên sai sạng trong mục lục, gần đường dẫn “%s”"
 
-#: refs.c:911
-#, c-format
-msgid "log for ref %s has gap after %s"
-msgstr "nhật ký cho tham chiếu %s có khoảng trống sau %s"
+#: read-cache.c:1877
+msgid "unordered stage entries in index"
+msgstr "các mục tin stage không đúng thứ tự trong mục lục"
 
-#: refs.c:917
+#: read-cache.c:1880
 #, c-format
-msgid "log for ref %s unexpectedly ended on %s"
-msgstr "nhật ký cho tham chiếu %s kết thúc bất ngờ trên %s"
+msgid "multiple stage entries for merged file '%s'"
+msgstr "nhiều mục stage cho tập tin hòa trộn “%s”"
 
-#: refs.c:976
+#: read-cache.c:1883
 #, c-format
-msgid "log for %s is empty"
-msgstr "nhật ký cho %s trống rỗng"
+msgid "unordered stage entries for '%s'"
+msgstr "các mục tin stage không đúng thứ tự cho “%s”"
 
-#: refs.c:1068
-#, c-format
-msgid "refusing to update ref with bad name '%s'"
-msgstr "từ chối cập nhật tham chiếu với tên sai “%s”"
+#: read-cache.c:1989 read-cache.c:2280 rerere.c:549 rerere.c:583 rerere.c:1095
+#: submodule.c:1634 builtin/add.c:546 builtin/check-ignore.c:181
+#: builtin/checkout.c:504 builtin/checkout.c:690 builtin/clean.c:991
+#: builtin/commit.c:364 builtin/diff-tree.c:122 builtin/grep.c:505
+#: builtin/mv.c:146 builtin/reset.c:247 builtin/rm.c:290
+#: builtin/submodule--helper.c:332
+msgid "index file corrupt"
+msgstr "tập tin ghi bảng mục lục bị hỏng"
 
-#: refs.c:1139
+#: read-cache.c:2133
 #, c-format
-msgid "update_ref failed for ref '%s': %s"
-msgstr "update_ref bị lỗi cho ref “%s”: %s"
+msgid "unable to create load_cache_entries thread: %s"
+msgstr "không thể tạo tuyến load_cache_entries: %s"
 
-#: refs.c:1963
+#: read-cache.c:2146
 #, c-format
-msgid "multiple updates for ref '%s' not allowed"
-msgstr "không cho phép đa cập nhật cho tham chiếu “%s”"
-
-#: refs.c:2043
-msgid "ref updates forbidden inside quarantine environment"
-msgstr "cập nhật tham chiếu bị cấm trong môi trường kiểm tra"
-
-#: refs.c:2054
-msgid "ref updates aborted by hook"
-msgstr "các cập nhật tham chiếu bị bãi bỏ bởi móc"
+msgid "unable to join load_cache_entries thread: %s"
+msgstr "không thể gia nhập tuyến load_cache_entries: %s"
 
-#: refs.c:2154 refs.c:2184
+#: read-cache.c:2179
 #, c-format
-msgid "'%s' exists; cannot create '%s'"
-msgstr "“%s” sẵn có; không thể tạo “%s”"
+msgid "%s: index file open failed"
+msgstr "%s: mở tập tin mục lục gặp lỗi"
 
-#: refs.c:2160 refs.c:2195
+#: read-cache.c:2183
 #, c-format
-msgid "cannot process '%s' and '%s' at the same time"
-msgstr "không thể xử lý “%s” và “%s” cùng một lúc"
+msgid "%s: cannot stat the open index"
+msgstr "%s: không thể lấy thống kê bảng mục lục đã mở"
 
-#: refs/files-backend.c:1228
+#: read-cache.c:2187
 #, c-format
-msgid "could not remove reference %s"
-msgstr "không thể gỡ bỏ tham chiếu: %s"
+msgid "%s: index file smaller than expected"
+msgstr "%s: tập tin mục lục nhỏ hơn mong đợi"
 
-#: refs/files-backend.c:1242 refs/packed-backend.c:1542
-#: refs/packed-backend.c:1552
+#: read-cache.c:2191
 #, c-format
-msgid "could not delete reference %s: %s"
-msgstr "không thể xóa bỏ tham chiếu %s: %s"
+msgid "%s: unable to map index file"
+msgstr "%s: không thể ánh xạ tập tin mục lục"
 
-#: refs/files-backend.c:1245 refs/packed-backend.c:1555
+#: read-cache.c:2233
 #, c-format
-msgid "could not delete references: %s"
-msgstr "không thể xóa bỏ tham chiếu: %s"
+msgid "unable to create load_index_extensions thread: %s"
+msgstr "không thể tạo tuyến load_index_extensions: %s"
 
-#: refspec.c:170
+#: read-cache.c:2260
 #, c-format
-msgid "invalid refspec '%s'"
-msgstr "refspec không hợp lệ “%s”"
+msgid "unable to join load_index_extensions thread: %s"
+msgstr "không thể gia nhập tuyến load_index_extensions: %s"
 
-#: remote.c:351
+#: read-cache.c:2292
 #, c-format
-msgid "config remote shorthand cannot begin with '/': %s"
-msgstr "cấu hình viết tắt máy chủ không thể bắt đầu bằng “/”: %s"
-
-#: remote.c:399
-msgid "more than one receivepack given, using the first"
-msgstr "đã đưa ra nhiều hơn một gói nhận về, đang sử dụng cái đầu tiên"
-
-#: remote.c:407
-msgid "more than one uploadpack given, using the first"
-msgstr "đã đưa ra nhiều hơn một gói tải lên, đang sử dụng cái đầu tiên"
+msgid "could not freshen shared index '%s'"
+msgstr "không thể làm tươi mới mục lục đã chia sẻ “%s”"
 
-#: remote.c:590
+#: read-cache.c:2339
 #, c-format
-msgid "Cannot fetch both %s and %s to %s"
-msgstr "Không thể lấy về cả %s và %s cho %s"
+msgid "broken index, expect %s in %s, got %s"
+msgstr "mục lục bị hỏng, cần %s trong %s, nhưng lại nhận được %s"
 
-#: remote.c:594
+#: read-cache.c:3035 strbuf.c:1171 wrapper.c:633 builtin/merge.c:1141
 #, c-format
-msgid "%s usually tracks %s, not %s"
-msgstr "%s thường theo dõi %s, không phải %s"
+msgid "could not close '%s'"
+msgstr "không thể đóng “%s”"
 
-#: remote.c:598
+#: read-cache.c:3138 sequencer.c:2487 sequencer.c:4239
 #, c-format
-msgid "%s tracks both %s and %s"
-msgstr "%s theo dõi cả %s và %s"
+msgid "could not stat '%s'"
+msgstr "không thể lấy thông tin thống kê về “%s”"
 
-#: remote.c:666
+#: read-cache.c:3151
 #, c-format
-msgid "key '%s' of pattern had no '*'"
-msgstr "khóa â\80\9c%sâ\80\9d của mẫu k có â\80\9c\80\9d"
+msgid "unable to open git dir: %s"
+msgstr "không thá»\83 má»\9f thÆ° mục git: %s"
 
-#: remote.c:676
+#: read-cache.c:3163
 #, c-format
-msgid "value '%s' of pattern has no '*'"
-msgstr "giá trị “%s” của mẫu k có “*”"
+msgid "unable to unlink: %s"
+msgstr "không thể bỏ liên kết (unlink): “%s”"
 
-#: remote.c:1073
+#: read-cache.c:3188
 #, c-format
-msgid "src refspec %s does not match any"
-msgstr "refspec %s nguồn không khớp bất kỳ cái gì"
+msgid "cannot fix permission bits on '%s'"
+msgstr "không thể sửa các bít phân quyền trên “%s”"
 
-#: remote.c:1078
+#: read-cache.c:3337
 #, c-format
-msgid "src refspec %s matches more than one"
-msgstr "refspec %s nguồn khớp nhiều hơn một"
+msgid "%s: cannot drop to stage #0"
+msgstr "%s: không thể xóa bỏ stage #0"
 
-#. TRANSLATORS: "matches '%s'%" is the <dst> part of "git push
-#. <remote> <src>:<dst>" push, and "being pushed ('%s')" is
-#. the <src>.
-#.
-#: remote.c:1093
-#, c-format
+#: rebase-interactive.c:11
 msgid ""
-"The destination you provided is not a full refname (i.e.,\n"
-"starting with \"refs/\"). We tried to guess what you meant by:\n"
-"\n"
-"- Looking for a ref that matches '%s' on the remote side.\n"
-"- Checking if the <src> being pushed ('%s')\n"
-"  is a ref in \"refs/{heads,tags}/\". If so we add a corresponding\n"
-"  refs/{heads,tags}/ prefix on the remote side.\n"
-"\n"
-"Neither worked, so we gave up. You must fully qualify the ref."
+"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 ""
-"Đích bạn đã cung cấp không phải tên tham chiếu đầy đủ (tức là\n"
-"bắt đầu bằng \"refs/\"). Chúng tôi đã cố suy luận rằng ý của bạn là:\n"
-"\n"
-"- Tìm kiếm một tham chiếu mà nó khớp “%s” bên phía máy chủ.\n"
-"- Kiểm tra xem <src> được đẩy lên (“%s”)\n"
-"  là một tham chiếu trong \"refs/{heads,tags}/\". Nếu thế chúng tôi thêm một "
-"tiền tố\n"
-"  refs/{heads,tags}/ tương ứng bên phía máy chủ.\n"
-"\n"
-"Nếu cả hai là không thể, thì chúng tôi cũng chịu thua. Bạn phải dùng tham "
-"chiếu dạng đầy đủ."
+"Bạn có thể sửa nó bằng “git rebase --edit-todo” và sau đó chạy “git rebase --"
+"continue”.\n"
+"Hoặc là bạn có thể bãi bỏ việc cải tổ bằng “git rebase --abort”.\n"
 
-#: remote.c:1113
+#: rebase-interactive.c:33
 #, c-format
 msgid ""
-"The <src> part of the refspec is a commit object.\n"
-"Did you mean to create a new branch by pushing to\n"
-"'%s:refs/heads/%s'?"
+"unrecognized setting %s for option rebase.missingCommitsCheck. Ignoring."
 msgstr ""
-"Phần <src> của đặc tả đường dẫn là một đối tượng lần chuyển giao.\n"
-"Có phải ý bạn là một tạo một nhánh mới bằng cách đẩy lên\n"
-"“%s:refs/heads/%s”?"
+"không nhận ra cài đặt %s cho tùy chọn rebase.missingCommitsCheck. Nên bỏ qua."
 
-#: remote.c:1118
-#, c-format
+#: rebase-interactive.c:42
 msgid ""
-"The <src> part of the refspec is a tag object.\n"
-"Did you mean to create a new tag by pushing to\n"
-"'%s:refs/tags/%s'?"
+"\n"
+"Commands:\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"
+"b, break = stop here (continue rebase later with 'git rebase --continue')\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 ""
-"Phần <src> của đặc tả đường dẫn là một đối tượng thẻ.\n"
-"Có phải ý bạn là một tạo một thẻ mới bằng cách đẩy lên\n"
-"“%s:refs/tags/%s”?"
+"\n"
+"Các lệnh:\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"
+"b, break = dừng tại đây (tiếp tục cải tổ sau này bằng “git rebase --"
+"continue”)\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"
 
-#: remote.c:1123
+#: rebase-interactive.c:63
 #, c-format
+msgid "Rebase %s onto %s (%d command)"
+msgid_plural "Rebase %s onto %s (%d commands)"
+msgstr[0] "Cải tổ %s vào %s (%d lệnh )"
+
+#: rebase-interactive.c:72 git-rebase--preserve-merges.sh:218
 msgid ""
-"The <src> part of the refspec is a tree object.\n"
-"Did you mean to tag a new tree by pushing to\n"
-"'%s:refs/tags/%s'?"
+"\n"
+"Do not remove any line. Use 'drop' explicitly to remove a commit.\n"
 msgstr ""
-"Phần <src> của đặc tả đường dẫn là một đối tượng cây.\n"
-"Có phải ý bạn là một tạo một cây mới bằng cách đẩy lên\n"
-"“%s:refs/tags/%s”?"
+"\n"
+"Đừ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"
 
-#: remote.c:1128
-#, c-format
+#: rebase-interactive.c:75 git-rebase--preserve-merges.sh:222
 msgid ""
-"The <src> part of the refspec is a blob object.\n"
-"Did you mean to tag a new blob by pushing to\n"
-"'%s:refs/tags/%s'?"
+"\n"
+"If you remove a line here THAT COMMIT WILL BE LOST.\n"
 msgstr ""
-"Phần <src> của đặc tả đường dẫn là một đối tượng blob.\n"
-"Có phải ý bạn là một tạo một blob mới bằng cách đẩy lên\n"
-"“%s:refs/tags/%s”?"
-
-#: remote.c:1164
-#, c-format
-msgid "%s cannot be resolved to branch"
-msgstr "“%s” không thể được phân giải thành nhánh"
+"\n"
+"Nếu bạn xóa bỏ một dòng ở đây thì LẦN CHUYỂN GIAO ĐÓ SẼ MẤT.\n"
 
-#: remote.c:1175
-#, c-format
-msgid "unable to delete '%s': remote ref does not exist"
-msgstr "không thể xóa “%s”: tham chiếu trên máy chủ không tồn tại"
+#: rebase-interactive.c:81 git-rebase--preserve-merges.sh:861
+msgid ""
+"\n"
+"You are editing the todo file of an ongoing interactive rebase.\n"
+"To continue rebase after editing, run:\n"
+"    git rebase --continue\n"
+"\n"
+msgstr ""
+"\n"
+"Bạn đang sửa tập tin todo của một lần cải tổ tương tác đang thực hiện.\n"
+"Để tiếp tục cải tổ sau khi sửa, chạy:\n"
+"    git rebase --continue\n"
+"\n"
 
-#: remote.c:1187
-#, c-format
-msgid "dst refspec %s matches more than one"
-msgstr "dst refspec %s khớp nhiều hơn một"
+#: rebase-interactive.c:86 git-rebase--preserve-merges.sh:938
+msgid ""
+"\n"
+"However, if you remove everything, the rebase will be aborted.\n"
+"\n"
+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"
+"\n"
 
-#: remote.c:1194
+#: rebase-interactive.c:110 rerere.c:469 rerere.c:676 sequencer.c:3615
+#: sequencer.c:3641 sequencer.c:5424 builtin/fsck.c:329 builtin/rebase.c:272
 #, c-format
-msgid "dst ref %s receives from more than one src"
-msgstr "dst ref %s nhận từ hơn một nguồn"
-
-#: remote.c:1714 remote.c:1815
-msgid "HEAD does not point to a branch"
-msgstr "HEAD không chỉ đến một nhánh nào cả"
+msgid "could not write '%s'"
+msgstr "không thể ghi “%s”"
 
-#: remote.c:1723
+#: rebase-interactive.c:116 builtin/rebase.c:204 builtin/rebase.c:230
+#: builtin/rebase.c:254
 #, c-format
-msgid "no such branch: '%s'"
-msgstr "không có nhánh nào như thế: “%s”"
+msgid "could not write '%s'."
+msgstr "không thể ghi “%s”."
 
-#: remote.c:1726
+#: rebase-interactive.c:193
 #, 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”"
+msgid ""
+"Warning: some commits may have been dropped accidentally.\n"
+"Dropped commits (newer to older):\n"
+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"
 
-#: remote.c:1732
+#: rebase-interactive.c:200
 #, c-format
-msgid "upstream branch '%s' not stored as a remote-tracking branch"
+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"
+"The possible behaviours are: ignore, warn, error.\n"
+"\n"
 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ủ"
+"Để tránh thông báo này, dùng \"drop\" một cách rõ ràng để xóa bỏ một lần "
+"chuyển giao.\n"
+"\n"
+"Dùng “git config rebase.missingCommitsCheck” để thay đổi mức độ của cảnh "
+"báo.\n"
+"Cánh ứng xử có thể là: ignore, warn, error.\n"
+"\n"
 
-#: remote.c:1747
+#: rebase-interactive.c:233 rebase-interactive.c:238 sequencer.c:2402
+#: builtin/rebase.c:190 builtin/rebase.c:215 builtin/rebase.c:241
+#: builtin/rebase.c:266
 #, 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ộ"
+msgid "could not read '%s'."
+msgstr "không thể đọc “%s”."
+
+#: ref-filter.c:42 wt-status.c:1975
+msgid "gone"
+msgstr "đã ra đi"
 
-#: remote.c:1759
+#: ref-filter.c:43
 #, c-format
-msgid "branch '%s' has no remote for pushing"
-msgstr "nhánh “%s” không có máy chủ để đẩy lên"
+msgid "ahead %d"
+msgstr "phía trước %d"
 
-#: remote.c:1769
+#: ref-filter.c:44
 #, c-format
-msgid "push refspecs for '%s' do not include '%s'"
-msgstr "Ä\91ẩy refspecs cho â\80\9c%sâ\80\9d không bao gá»\93m â\80\9c%sâ\80\9d"
+msgid "behind %d"
+msgstr "Ä\91ằng sau %d"
 
-#: remote.c:1782
-msgid "push has no destination (push.default is 'nothing')"
-msgstr "đẩy lên mà không có đích (push.default là “nothing”)"
+#: ref-filter.c:45
+#, c-format
+msgid "ahead %d, behind %d"
+msgstr "trước %d, sau %d"
 
-#: remote.c:1804
-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"
+#: ref-filter.c:175
+#, c-format
+msgid "expected format: %%(color:<color>)"
+msgstr "cần định dạng: %%(color:<color>)"
 
-#: remote.c:1933
+#: ref-filter.c:177
 #, c-format
-msgid "couldn't find remote ref %s"
-msgstr "không thể tìm thấy tham chiếu máy chủ %s"
+msgid "unrecognized color: %%(color:%s)"
+msgstr "không nhận ra màu: %%(màu:%s)"
 
-#: remote.c:1946
+#: ref-filter.c:199
 #, c-format
-msgid "* Ignoring funny ref '%s' locally"
-msgstr "* Đang bỏ qua tham chiếu thú vị nội bộ “%s”"
+msgid "Integer value expected refname:lstrip=%s"
+msgstr "Giá trị nguyên cần tên tham chiếu:lstrip=%s"
 
-#: remote.c:2109
+#: ref-filter.c:203
 #, 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"
+msgid "Integer value expected refname:rstrip=%s"
+msgstr "Giá trị nguyên cần tên tham chiếu:rstrip=%s"
 
-#: remote.c:2113
-msgid "  (use \"git branch --unset-upstream\" to fixup)\n"
-msgstr "   (dùng \" git branch --unset-upstream\" để sửa)\n"
+#: ref-filter.c:205
+#, c-format
+msgid "unrecognized %%(%s) argument: %s"
+msgstr "đối số không được thừa nhận %%(%s): %s"
 
-#: remote.c:2116
+#: ref-filter.c:260
 #, 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"
+msgid "%%(objecttype) does not take arguments"
+msgstr "%%(objecttype) không nhận các đối số"
 
-#: remote.c:2120
+#: ref-filter.c:282
 #, 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"
+msgid "unrecognized %%(objectsize) argument: %s"
+msgstr "tham số không được thừa nhận %%(objectname): %s"
 
-#: remote.c:2123
+#: ref-filter.c:290
 #, c-format
-msgid "  (use \"%s\" for details)\n"
-msgstr "  (dùng \"%s\" để biết thêm chi tiết)\n"
+msgid "%%(deltabase) does not take arguments"
+msgstr "%%(deltabase) không nhận các đối số"
 
-#: remote.c:2127
+#: ref-filter.c:302
 #, 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"
+msgid "%%(body) does not take arguments"
+msgstr "%%(body) không nhận các đối số"
 
-#: remote.c:2133
-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"
+#: ref-filter.c:315
+#, c-format
+msgid "unrecognized %%(subject) argument: %s"
+msgstr "tham số không được thừa nhận %%(subject): %s"
 
-#: remote.c:2136
+#: ref-filter.c:334
 #, 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] ""
-"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"
+msgid "expected %%(trailers:key=<value>)"
+msgstr "cần %%(trailers:key=<giá trị>)"
 
-#: remote.c:2144
-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"
+#: ref-filter.c:336
+#, c-format
+msgid "unknown %%(trailers) argument: %s"
+msgstr "không hiểu tham số %%(trailers): %s"
 
-#: remote.c:2147
+#: ref-filter.c:367
 #, c-format
-msgid ""
-"Your branch and '%s' have diverged,\n"
-"and have %d and %d different commit each, respectively.\n"
-msgid_plural ""
-"Your branch and '%s' have diverged,\n"
-"and have %d and %d different commits each, respectively.\n"
-msgstr[0] ""
-"Nhánh của bạn và “%s” bị phân kỳ,\n"
-"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"
+msgid "positive value expected contents:lines=%s"
+msgstr "cần nội dung mang giá trị dương:lines=%s"
 
-#: remote.c:2157
-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"
+#: ref-filter.c:369
+#, c-format
+msgid "unrecognized %%(contents) argument: %s"
+msgstr "đối số không được thừa nhận %%(contents): %s"
 
-#: remote.c:2349
+#: ref-filter.c:384
 #, c-format
-msgid "cannot parse expected object name '%s'"
-msgstr "không thể phân tích tên đối tượng mong muốn “%s”"
+msgid "positive value expected '%s' in %%(%s)"
+msgstr "cần giá trị dương “%s” trong %%(%s)"
 
-#: replace-object.c:21
+#: ref-filter.c:388
 #, c-format
-msgid "bad replace ref name: %s"
-msgstr "tên tham chiếu thay thế bị sai: %s"
+msgid "unrecognized argument '%s' in %%(%s)"
+msgstr "đối số “%s” không được thừa nhận trong %%(%s)"
 
-#: replace-object.c:30
+#: ref-filter.c:402
 #, c-format
-msgid "duplicate replace ref: %s"
-msgstr "tham chiếu thay thế bị trùng: %s"
+msgid "unrecognized email option: %s"
+msgstr "không nhận ra tùy chọn thư điện tử: “%s”"
 
-#: replace-object.c:82
+#: ref-filter.c:432
 #, c-format
-msgid "replace depth too high for object %s"
-msgstr "độ sâu thay thế quá cao cho đối tượng %s"
-
-#: rerere.c:217 rerere.c:226 rerere.c:229
-msgid "corrupt MERGE_RR"
-msgstr "MERGE_RR sai hỏng"
-
-#: rerere.c:264 rerere.c:269
-msgid "unable to write rerere record"
-msgstr "không thể ghi bản ghi rerere"
+msgid "expected format: %%(align:<width>,<position>)"
+msgstr "cần định dạng: %%(align:<width>,<position>)"
 
-#: rerere.c:495
+#: ref-filter.c:444
 #, c-format
-msgid "there were errors while writing '%s' (%s)"
-msgstr "gặp lỗi đọc khi đang ghi “%s” (%s)"
+msgid "unrecognized position:%s"
+msgstr "vị trí không được thừa nhận:%s"
 
-#: rerere.c:498
+#: ref-filter.c:451
 #, c-format
-msgid "failed to flush '%s'"
-msgstr "gặp lỗi khi đẩy dữ liệu “%s” lên đĩa"
+msgid "unrecognized width:%s"
+msgstr "chiều rộng không được thừa nhận:%s"
 
-#: rerere.c:503 rerere.c:1039
+#: ref-filter.c:460
 #, c-format
-msgid "could not parse conflict hunks in '%s'"
-msgstr "không thể phân tích các mảnh xung đột trong “%s”"
+msgid "unrecognized %%(align) argument: %s"
+msgstr "đối số không được thừa nhận %%(align): %s"
 
-#: rerere.c:684
+#: ref-filter.c:468
 #, c-format
-msgid "failed utime() on '%s'"
-msgstr "gặp lỗi utime() trên “%s”"
+msgid "positive width expected with the %%(align) atom"
+msgstr "cần giá trị độ rộng dương với nguyên tử %%(align)"
 
-#: rerere.c:694
+#: ref-filter.c:486
 #, c-format
-msgid "writing '%s' failed"
-msgstr "gặp lỗi khi đang ghi “%s”"
+msgid "unrecognized %%(if) argument: %s"
+msgstr "đối số không được thừa nhận %%(if): %s"
 
-#: rerere.c:714
+#: ref-filter.c:588
 #, c-format
-msgid "Staged '%s' using previous resolution."
-msgstr "Đã tạm cất “%s” sử dụng cách phân giải kế trước."
+msgid "malformed field name: %.*s"
+msgstr "tên trường dị hình: %.*s"
 
-#: rerere.c:753
+#: ref-filter.c:615
 #, c-format
-msgid "Recorded resolution for '%s'."
-msgstr "Cách giải quyết đã ghi lại cho “%s”."
+msgid "unknown field name: %.*s"
+msgstr "không hiểu tên trường: %.*s"
 
-#: rerere.c:788
+#: ref-filter.c:619
 #, c-format
-msgid "Resolved '%s' using previous resolution."
-msgstr "Đã phân giải giải “%s” sử dụng cách giải quyết kế trước."
+msgid ""
+"not a git repository, but the field '%.*s' requires access to object data"
+msgstr ""
+"không phải là một kho git, nhưng trường “%.*s” yêu cầu truy cập vào dữ liệu "
+"đối tượng"
 
-#: rerere.c:803
+#: ref-filter.c:743
 #, c-format
-msgid "cannot unlink stray '%s'"
-msgstr "không thể unlink stray “%s”"
+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)"
 
-#: rerere.c:807
+#: ref-filter.c:806
 #, c-format
-msgid "Recorded preimage for '%s'"
-msgstr "Preimage đã được ghi lại cho “%s”"
+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)"
 
-#: rerere.c:881 submodule.c:2082 builtin/log.c:1992
-#: builtin/submodule--helper.c:1878 builtin/submodule--helper.c:1890
+#: ref-filter.c:808
 #, c-format
-msgid "could not create directory '%s'"
-msgstr "không thể tạo thư mục “%s”"
+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"
 
-#: rerere.c:1057
+#: ref-filter.c:810
 #, c-format
-msgid "failed to update conflicted state in '%s'"
-msgstr "gặp lỗi khi chạy cập nhật trạng thái bị xung đột trong “%s”"
+msgid "format: %%(then) atom used after %%(else)"
+msgstr "định dạng: nguyên tử %%(then) được dùng sau %%(else)"
 
-#: rerere.c:1068 rerere.c:1075
+#: ref-filter.c:838
 #, c-format
-msgid "no remembered resolution for '%s'"
-msgstr "Ä\91ừng nhó các giải quyết cho â\80\9c%sâ\80\9d"
+msgid "format: %%(else) atom used without an %%(if) atom"
+msgstr "Ä\91á»\8bnh dạng: nguyên tá»­ %%(else) Ä\91ược dùng mà không có nguyên tá»­ %%(if)"
 
-#: rerere.c:1077
+#: ref-filter.c:840
 #, c-format
-msgid "cannot unlink '%s'"
-msgstr "không thể unlink “%s”"
+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)"
 
-#: rerere.c:1087
+#: ref-filter.c:842
 #, c-format
-msgid "Updated preimage for '%s'"
-msgstr "Ä\90ã cập nhật preimage cho â\80\9c%sâ\80\9d"
+msgid "format: %%(else) atom used more than once"
+msgstr "Ä\91á»\8bnh dạng: nguyên tá»­ %%(else) Ä\91ược dùng nhiá»\81u hÆ¡n má»\99t lần"
 
-#: rerere.c:1096
+#: ref-filter.c:857
 #, c-format
-msgid "Forgot resolution for '%s'\n"
-msgstr "Quên phân giải cho “%s”\n"
-
-#: rerere.c:1199
-msgid "unable to open rr-cache directory"
-msgstr "không thể mở thư mục rr-cache"
+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"
 
-#: reset.c:42
-msgid "could not determine HEAD revision"
-msgstr "không thể dò tìm điểm xét duyệt HEAD"
+#: ref-filter.c:914
+#, c-format
+msgid "malformed format string %s"
+msgstr "chuỗi định dạng dị hình %s"
 
-#: reset.c:70 reset.c:76 sequencer.c:3460
+#: ref-filter.c:1555
 #, c-format
-msgid "failed to find tree of %s"
-msgstr "gặp lỗi khi tìm cây của %s"
+msgid "(no branch, rebasing %s)"
+msgstr "(không nhánh, đang cải tổ %s)"
 
-#: revision.c:2336
-msgid "--unpacked=<packfile> no longer supported"
-msgstr "--unpacked=<packfile> không còn được hỗ trợ nữa"
+#: ref-filter.c:1558
+#, c-format
+msgid "(no branch, rebasing detached HEAD %s)"
+msgstr "(không nhánh, đang cải tổ HEAD %s đã tách rời)"
 
-#: revision.c:2356
+#: ref-filter.c:1561
 #, c-format
-msgid "unknown value for --diff-merges: %s"
-msgstr "không hiểu giá trị cho --diff-merges: %s"
+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)"
 
-#: revision.c:2694
-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"
+#: ref-filter.c:1565
+#, c-format
+msgid "(HEAD detached at %s)"
+msgstr "(HEAD được tách rời tại %s)"
 
-#: revision.c:2697
+#: ref-filter.c:1568
 #, 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ả"
+msgid "(HEAD detached from %s)"
+msgstr "(HEAD được tách rời từ %s)"
 
-#: revision.c:2907
-msgid "-L does not yet support diff formats besides -p and -s"
-msgstr "-L vẫn chưa hỗ trợ định dạng khác biệt nào ngoài -p và -s"
+#: ref-filter.c:1571
+msgid "(no branch)"
+msgstr "(không nhánh)"
 
-#: run-command.c:764
-msgid "open /dev/null failed"
-msgstr "gặp lỗi khi mở “/dev/null”"
+#: ref-filter.c:1603 ref-filter.c:1812
+#, c-format
+msgid "missing object %s for %s"
+msgstr "thiếu đối tượng %s cho %s"
 
-#: run-command.c:1271
+#: ref-filter.c:1613
 #, c-format
-msgid "cannot create async thread: %s"
-msgstr "không thể tạo tuyến async: %s"
+msgid "parse_object_buffer failed on %s for %s"
+msgstr "parse_object_buffer gặp lỗi trên %s cho %s"
 
-#: run-command.c:1335
+#: ref-filter.c:1996
 #, c-format
-msgid ""
-"The '%s' hook was ignored because it's not set as executable.\n"
-"You can disable this warning with `git config advice.ignoredHook false`."
-msgstr ""
-"Móc “%s” bị bỏ qua bởi vì nó không thể đặt là thực thi được.\n"
-"Bạn có thể tắt cảnh báo này bằng “git config advice.ignoredHook false“."
+msgid "malformed object at '%s'"
+msgstr "đối tượng dị hình tại “%s”"
 
-#: send-pack.c:146
-msgid "unexpected flush packet while reading remote unpack status"
-msgstr ""
-"gặp gói flush không cần trong khi đọc tình trạng giải nén gói trên máy chủ"
+#: ref-filter.c:2085
+#, c-format
+msgid "ignoring ref with broken name %s"
+msgstr "đang lờ đi tham chiếu với tên hỏng %s"
 
-#: send-pack.c:148
+#: ref-filter.c:2090 refs.c:676
 #, c-format
-msgid "unable to parse remote unpack status: %s"
-msgstr "không thể phân tích tình trạng unpack máy chủ: %s"
+msgid "ignoring broken ref %s"
+msgstr "đang lờ đi tham chiếu hỏng %s"
 
-#: send-pack.c:150
+#: ref-filter.c:2430
 #, c-format
-msgid "remote unpack failed: %s"
-msgstr "máy chủ gặp lỗi unpack: %s"
+msgid "format: %%(end) atom missing"
+msgstr "định dạng: thiếu nguyên tử %%(end)"
 
-#: send-pack.c:374
-msgid "failed to sign the push certificate"
-msgstr "gặp lỗi khi ký chứng thực đẩy"
+#: ref-filter.c:2529
+#, c-format
+msgid "malformed object name %s"
+msgstr "tên đối tượng dị hình %s"
 
-#: send-pack.c:467
-msgid "the receiving end does not support this repository's hash algorithm"
-msgstr "kết thúc nhận không hỗ trợ các tùy chọn của lệnh push"
+#: ref-filter.c:2534
+#, c-format
+msgid "option `%s' must point to a commit"
+msgstr "tùy chọn “%s” phải chỉ đến một lần chuyển giao"
 
-#: send-pack.c:476
-msgid "the receiving end does not support --signed push"
-msgstr "kết thúc nhận không hỗ trợ đẩy --signed"
+#: refs.c:264
+#, c-format
+msgid "%s does not point to a valid object!"
+msgstr "“%s” không chỉ đến một lần chuyển giao hợp lệ nào cả!"
 
-#: send-pack.c:478
+#: refs.c:566
+#, c-format
 msgid ""
-"not sending a push certificate since the receiving end does not support --"
-"signed push"
+"Using '%s' as the name for the initial branch. This default branch name\n"
+"is subject to change. To configure the initial branch name to use in all\n"
+"of your new repositories, which will suppress this warning, call:\n"
+"\n"
+"\tgit config --global init.defaultBranch <name>\n"
+"\n"
+"Names commonly chosen instead of 'master' are 'main', 'trunk' and\n"
+"'development'. The just-created branch can be renamed via this command:\n"
+"\n"
+"\tgit branch -m <name>\n"
 msgstr ""
-"đừng gửi giấy chứng nhận đẩy trước khi kết thúc nhận không hỗ trợ đẩy --"
-"signed"
-
-#: send-pack.c:490
-msgid "the receiving end does not support --atomic push"
-msgstr "kết thúc nhận không hỗ trợ đẩy --atomic"
+"Sử dụng '%s' làm tên cho nhánh ban đầu. Tên nhánh mặc định này\n"
+"có thể thay đổi. Để cấu hình tên nhánh khởi đầu sử dụng trong tất cả\n"
+"kho lưu trữ mới của bạn, cái mà sẽ ngăn chặn cảnh báo này, gọi lệnh:\n"
+"\n"
+"\tgit config --global init.defaultBranch <tên>\n"
+"\n"
+"Tên thường được chọn thay cho 'master' là 'main', 'trunk' và\n"
+"'development'. Nhánh vừa tạo có thể được đổi tên thông qua lệnh:\n"
+"\n"
+"\tgit branch -m <tên>\n"
 
-#: send-pack.c:495
-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"
+#: refs.c:588
+#, c-format
+msgid "could not retrieve `%s`"
+msgstr "không thể lấy về “%s”"
 
-#: sequencer.c:195
+#: refs.c:598
 #, 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”"
+msgid "invalid branch name: %s = %s"
+msgstr "tên nhánh không hợp lệ: %s = %s"
 
-#: sequencer.c:323
+#: refs.c:674
 #, c-format
-msgid "could not delete '%s'"
-msgstr "không thể xóa bỏ “%s”"
+msgid "ignoring dangling symref %s"
+msgstr "đang lờ đi tham chiếu mềm thừa %s"
 
-#: sequencer.c:343 builtin/rebase.c:755 builtin/rebase.c:1596 builtin/rm.c:385
+#: refs.c:922
 #, c-format
-msgid "could not remove '%s'"
-msgstr "không thể gỡ bỏ “%s”"
+msgid "log for ref %s has gap after %s"
+msgstr "nhật ký cho tham chiếu %s có khoảng trống sau %s"
 
-#: sequencer.c:353
-msgid "revert"
-msgstr "hoàn nguyên"
+#: refs.c:929
+#, c-format
+msgid "log for ref %s unexpectedly ended on %s"
+msgstr "nhật ký cho tham chiếu %s kết thúc bất ngờ trên %s"
 
-#: sequencer.c:355
-msgid "cherry-pick"
-msgstr "cherry-pick"
+#: refs.c:994
+#, c-format
+msgid "log for %s is empty"
+msgstr "nhật ký cho %s trống rỗng"
 
-#: sequencer.c:357
-msgid "rebase"
-msgstr "rebase"
+#: refs.c:1086
+#, c-format
+msgid "refusing to update ref with bad name '%s'"
+msgstr "từ chối cập nhật tham chiếu với tên sai “%s”"
 
-#: sequencer.c:359
+#: refs.c:1157
 #, c-format
-msgid "unknown action: %d"
-msgstr "không nhận ra thao tác: %d"
+msgid "update_ref failed for ref '%s': %s"
+msgstr "update_ref bị lỗi cho ref “%s”: %s"
 
-#: sequencer.c:418
-msgid ""
-"after resolving the conflicts, mark the corrected paths\n"
-"with 'git add <paths>' or 'git rm <paths>'"
-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 </các/đường/dẫn>” hoặc “git rm </các/đường/dẫn>”"
+#: refs.c:2051
+#, c-format
+msgid "multiple updates for ref '%s' not allowed"
+msgstr "không cho phép đa cập nhật cho tham chiếu “%s”"
 
-#: sequencer.c:421
-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 ""
-"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 </các/đường/dẫn>” hoặc “git rm </các/đường/dẫn>”\n"
-"và chuyển giao kết quả bằng lệnh “git commit”"
+#: refs.c:2131
+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"
 
-#: sequencer.c:434 sequencer.c:3062
-#, c-format
-msgid "could not lock '%s'"
-msgstr "không thể khóa “%s”"
+#: refs.c:2142
+msgid "ref updates aborted by hook"
+msgstr "các cập nhật tham chiếu bị bãi bỏ bởi móc"
 
-#: sequencer.c:436 sequencer.c:2861 sequencer.c:3066 sequencer.c:3080
-#: sequencer.c:3337 sequencer.c:5326 strbuf.c:1168 wrapper.c:631
+#: refs.c:2242 refs.c:2272
 #, c-format
-msgid "could not write to '%s'"
-msgstr "không thể ghi vào “%s”"
+msgid "'%s' exists; cannot create '%s'"
+msgstr "“%s” sẵn có; không thể tạo “%s”"
 
-#: sequencer.c:441
+#: refs.c:2248 refs.c:2283
 #, c-format
-msgid "could not write eol to '%s'"
-msgstr "không thể ghi eol vào “%s”"
+msgid "cannot process '%s' and '%s' at the same time"
+msgstr "không thể xử lý “%s” và “%s” cùng một lúc"
 
-#: sequencer.c:446 sequencer.c:2866 sequencer.c:3068 sequencer.c:3082
-#: sequencer.c:3345
+#: refs/files-backend.c:1228
 #, c-format
-msgid "failed to finalize '%s'"
-msgstr "gặp lỗi khi hoàn thành “%s”"
+msgid "could not remove reference %s"
+msgstr "không thể gỡ bỏ tham chiếu: %s"
 
-#: sequencer.c:485
+#: refs/files-backend.c:1242 refs/packed-backend.c:1542
+#: refs/packed-backend.c:1552
 #, 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:489
-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ý."
+msgid "could not delete reference %s: %s"
+msgstr "không thể xóa bỏ tham chiếu %s: %s"
 
-#: sequencer.c:521
+#: refs/files-backend.c:1245 refs/packed-backend.c:1555
 #, c-format
-msgid "%s: fast-forward"
-msgstr "%s: chuyển-tiếp-nhanh"
+msgid "could not delete references: %s"
+msgstr "không thể xóa bỏ tham chiếu: %s"
 
-#: sequencer.c:560 builtin/tag.c:566
+#: refspec.c:170
 #, c-format
-msgid "Invalid cleanup mode %s"
-msgstr "Chế độ dọn dẹp không hợp lệ %s"
+msgid "invalid refspec '%s'"
+msgstr "refspec không hợp lệ “%s”"
 
-#. TRANSLATORS: %s will be "revert", "cherry-pick" or
-#. "rebase".
-#.
-#: sequencer.c:670
+#: remote.c:351
 #, 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"
+msgid "config remote shorthand cannot begin with '/': %s"
+msgstr "cấu hình viết tắt máy chủ không thể bắt đầu bằng “/”: %s"
 
-#: sequencer.c:687
-msgid "unable to update cache tree"
-msgstr "không thể cập nhật cây bộ nhớ đệm"
+#: remote.c:399
+msgid "more than one receivepack given, using the first"
+msgstr "đã đưa ra nhiều hơn một gói nhận về, đang sử dụng cái đầu tiên"
 
-#: sequencer.c:701
-msgid "could not resolve HEAD commit"
-msgstr "không thể phân giải lần chuyển giao HEAD"
+#: remote.c:407
+msgid "more than one uploadpack given, using the first"
+msgstr "đã đưa ra nhiều hơn một gói tải lên, đang sử dụng cái đầu tiên"
 
-#: sequencer.c:781
+#: remote.c:590
 #, c-format
-msgid "no key present in '%.*s'"
-msgstr "không có khóa hiện diện trong “%.*s”"
+msgid "Cannot fetch both %s and %s to %s"
+msgstr "Không thể lấy về cả %s và %s cho %s"
 
-#: sequencer.c:792
+#: remote.c:594
 #, c-format
-msgid "unable to dequote value of '%s'"
-msgstr "không thể giải trích dẫn giá trị của “%s”"
+msgid "%s usually tracks %s, not %s"
+msgstr "%s thường theo dõi %s, không phải %s"
 
-#: sequencer.c:829 wrapper.c:201 wrapper.c:371 builtin/am.c:710
-#: builtin/am.c:802 builtin/merge.c:1135 builtin/rebase.c:908
+#: remote.c:598
 #, c-format
-msgid "could not open '%s' for reading"
-msgstr "không thể mở “%s” để đọc"
-
-#: sequencer.c:839
-msgid "'GIT_AUTHOR_NAME' already given"
-msgstr "“GIT_AUTHOR_NAME” đã sẵn đưa ra rồi"
-
-#: sequencer.c:844
-msgid "'GIT_AUTHOR_EMAIL' already given"
-msgstr "“GIT_AUTHOR_EMAIL” đã sẵn đưa ra rồi"
-
-#: sequencer.c:849
-msgid "'GIT_AUTHOR_DATE' already given"
-msgstr "“GIT_AUTHOR_DATE” đã sẵn đưa ra rồi"
+msgid "%s tracks both %s and %s"
+msgstr "%s theo dõi cả %s và %s"
 
-#: sequencer.c:853
+#: remote.c:666
 #, c-format
-msgid "unknown variable '%s'"
-msgstr "không hiá»\83u biến â\80\9c%s”"
+msgid "key '%s' of pattern had no '*'"
+msgstr "khóa â\80\9c%sâ\80\9d của mẫu k có â\80\9c*”"
 
-#: sequencer.c:858
-msgid "missing 'GIT_AUTHOR_NAME'"
-msgstr "thiếu “GIT_AUTHOR_NAME”"
+#: remote.c:676
+#, c-format
+msgid "value '%s' of pattern has no '*'"
+msgstr "giá trị “%s” của mẫu k có “*”"
 
-#: sequencer.c:860
-msgid "missing 'GIT_AUTHOR_EMAIL'"
-msgstr "thiếu “GIT_AUTHOR_EMAIL”"
+#: remote.c:1083
+#, c-format
+msgid "src refspec %s does not match any"
+msgstr "refspec %s nguồn không khớp bất kỳ cái gì"
 
-#: sequencer.c:862
-msgid "missing 'GIT_AUTHOR_DATE'"
-msgstr "thiếu “GIT_AUTHOR_DATE”"
+#: remote.c:1088
+#, c-format
+msgid "src refspec %s matches more than one"
+msgstr "refspec %s nguồn khớp nhiều hơn một"
 
-#: sequencer.c:927
+#. TRANSLATORS: "matches '%s'%" is the <dst> part of "git push
+#. <remote> <src>:<dst>" push, and "being pushed ('%s')" is
+#. the <src>.
+#.
+#: remote.c:1103
 #, c-format
 msgid ""
-"you have staged changes in your working tree\n"
-"If these changes are meant to be squashed into the previous commit, run:\n"
-"\n"
-"  git commit --amend %s\n"
-"\n"
-"If they are meant to go into a new commit, run:\n"
-"\n"
-"  git commit %s\n"
+"The destination you provided is not a full refname (i.e.,\n"
+"starting with \"refs/\"). We tried to guess what you meant by:\n"
 "\n"
-"In both cases, once you're done, continue with:\n"
+"- Looking for a ref that matches '%s' on the remote side.\n"
+"- Checking if the <src> being pushed ('%s')\n"
+"  is a ref in \"refs/{heads,tags}/\". If so we add a corresponding\n"
+"  refs/{heads,tags}/ prefix on the remote side.\n"
 "\n"
-"  git rebase --continue\n"
+"Neither worked, so we gave up. You must fully qualify the ref."
 msgstr ""
-"bạn có các thay đổi so với trong bệ phóng trong thư mục làm việc của bạn.\n"
-"Nếu các thay đổi này là muốn squash vào lần chuyển giao kế trước, chạy:\n"
-"\n"
-"  git commit --amend %s\n"
-"\n"
-"Nếu chúng có ý là đi đến lần chuyển giao mới, thì chạy:\n"
-"\n"
-"  git commit %s\n"
+"Đích bạn đã cung cấp không phải tên tham chiếu đầy đủ (tức là\n"
+"bắt đầu bằng \"refs/\"). Chúng tôi đã cố suy luận rằng ý của bạn là:\n"
 "\n"
-"Trong cả hai trường hợp, một khi bạn làm xong, tiếp tục bằng:\n"
+"- Tìm kiếm một tham chiếu mà nó khớp “%s” bên phía máy chủ.\n"
+"- Kiểm tra xem <src> được đẩy lên (“%s”)\n"
+"  là một tham chiếu trong \"refs/{heads,tags}/\". Nếu thế chúng tôi thêm một "
+"tiền tố\n"
+"  refs/{heads,tags}/ tương ứng bên phía máy chủ.\n"
 "\n"
-"  git rebase --continue\n"
+"Nếu cả hai là không thể, thì chúng tôi cũng chịu thua. Bạn phải dùng tham "
+"chiếu dạng đầy đủ."
 
-#: sequencer.c:1208
-msgid "'prepare-commit-msg' hook failed"
-msgstr "móc “prepare-commit-msg” bị lỗi"
+#: remote.c:1123
+#, c-format
+msgid ""
+"The <src> part of the refspec is a commit object.\n"
+"Did you mean to create a new branch by pushing to\n"
+"'%s:refs/heads/%s'?"
+msgstr ""
+"Phần <src> của đặc tả đường dẫn là một đối tượng lần chuyển giao.\n"
+"Có phải ý bạn là một tạo một nhánh mới bằng cách đẩy lên\n"
+"“%s:refs/heads/%s”?"
 
-#: sequencer.c:1214
+#: remote.c:1128
+#, c-format
 msgid ""
-"Your name and email address were configured automatically based\n"
-"on your username and hostname. Please check that they are accurate.\n"
-"You can suppress this message by setting them explicitly. Run the\n"
-"following command and follow the instructions in your editor to edit\n"
-"your configuration file:\n"
-"\n"
-"    git config --global --edit\n"
-"\n"
-"After doing this, you may fix the identity used for this commit with:\n"
-"\n"
-"    git commit --amend --reset-author\n"
+"The <src> part of the refspec is a tag object.\n"
+"Did you mean to create a new tag by pushing to\n"
+"'%s:refs/tags/%s'?"
 msgstr ""
-"Tên và địa chỉ thư điện tử của bạn được cấu hình một cách tự động trên cơ "
-"sở\n"
-"tài khoản và địa chỉ máy chủ của bạn. Xin hãy kiểm tra xem chúng có chính "
-"xác không.\n"
-"Bạn có thể chặn những thông báo kiểu này bằng cách cài đặt các thông tin "
-"trên\n"
-"một cách rõ ràng. Chạy lệnh sau đây là theo các hướng dẫn trong bộ soạn "
-"thảo\n"
-"để chỉnh sửa tập tin cấu hình của mình:\n"
-"\n"
-"    git config --global --edit\n"
-"\n"
-"Sau khi thực hiện xong, bạn có thể sửa chữa định danh được sử dụng cho\n"
-"lần chuyển giao này với lệnh:\n"
-"\n"
-"    git commit --amend --reset-author\n"
+"Phần <src> của đặc tả đường dẫn là một đối tượng thẻ.\n"
+"Có phải ý bạn là một tạo một thẻ mới bằng cách đẩy lên\n"
+"“%s:refs/tags/%s”?"
 
-#: sequencer.c:1227
+#: remote.c:1133
+#, c-format
 msgid ""
-"Your name and email address were configured automatically based\n"
-"on your username and hostname. Please check that they are accurate.\n"
-"You can suppress this message by setting them explicitly:\n"
-"\n"
-"    git config --global user.name \"Your Name\"\n"
-"    git config --global user.email you@example.com\n"
-"\n"
-"After doing this, you may fix the identity used for this commit with:\n"
-"\n"
-"    git commit --amend --reset-author\n"
+"The <src> part of the refspec is a tree object.\n"
+"Did you mean to tag a new tree by pushing to\n"
+"'%s:refs/tags/%s'?"
 msgstr ""
-"Tên và địa chỉ thư điện tử của bạn được cấu hình một cách tự động trên cơ "
-"sở\n"
-"tài khoản và địa chỉ máy chủ của bạn. Xin hãy kiểm tra xem chúng có chính "
-"xác không.\n"
-"Bạn có thể chặn những thông báo kiểu này bằng cách cài đặt các thông tin "
-"trên một cách rõ ràng:\n"
-"\n"
-"    git config --global user.name \"Tên của bạn\"\n"
-"    git config --global user.email you@example.com\n"
-"\n"
-"Sau khi thực hiện xong, bạn có thể sửa chữa định danh được sử dụng cho lần "
-"chuyển giao này với lệnh:\n"
-"\n"
-"    git commit --amend --reset-author\n"
+"Phần <src> của đặc tả đường dẫn là một đối tượng cây.\n"
+"Có phải ý bạn là một tạo một cây mới bằng cách đẩy lên\n"
+"“%s:refs/tags/%s”?"
 
-#: sequencer.c:1269
-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"
+#: remote.c:1138
+#, c-format
+msgid ""
+"The <src> part of the refspec is a blob object.\n"
+"Did you mean to tag a new blob by pushing to\n"
+"'%s:refs/tags/%s'?"
+msgstr ""
+"Phần <src> của đặc tả đường dẫn là một đối tượng blob.\n"
+"Có phải ý bạn là một tạo một blob mới bằng cách đẩy lên\n"
+"“%s:refs/tags/%s”?"
 
-#: sequencer.c:1271
-msgid "could not parse newly created commit"
+#: remote.c:1174
+#, c-format
+msgid "%s cannot be resolved to branch"
+msgstr "“%s” không thể được phân giải thành nhánh"
+
+#: remote.c:1185
+#, c-format
+msgid "unable to delete '%s': remote ref does not exist"
+msgstr "không thể xóa “%s”: tham chiếu trên máy chủ không tồn tại"
+
+#: remote.c:1197
+#, c-format
+msgid "dst refspec %s matches more than one"
+msgstr "dst refspec %s khớp nhiều hơn một"
+
+#: remote.c:1204
+#, c-format
+msgid "dst ref %s receives from more than one src"
+msgstr "dst ref %s nhận từ hơn một nguồn"
+
+#: remote.c:1724 remote.c:1825
+msgid "HEAD does not point to a branch"
+msgstr "HEAD không chỉ đến một nhánh nào cả"
+
+#: remote.c:1733
+#, c-format
+msgid "no such branch: '%s'"
+msgstr "không có nhánh nào như thế: “%s”"
+
+#: remote.c:1736
+#, 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:1742
+#, c-format
+msgid "upstream branch '%s' not stored as a remote-tracking branch"
 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"
+"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ủ"
 
-#: sequencer.c:1317
-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"
+#: remote.c:1757
+#, 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ộ"
 
-#: sequencer.c:1319
-msgid "detached HEAD"
-msgstr "đã rời khỏi HEAD"
+#: remote.c:1769
+#, c-format
+msgid "branch '%s' has no remote for pushing"
+msgstr "nhánh “%s” không có máy chủ để đẩy lên"
 
-#: sequencer.c:1323
-msgid " (root-commit)"
-msgstr " (root-commit)"
+#: remote.c:1779
+#, c-format
+msgid "push refspecs for '%s' do not include '%s'"
+msgstr "đẩy refspecs cho “%s” không bao gồm “%s”"
 
-#: sequencer.c:1344
-msgid "could not parse HEAD"
-msgstr "không thể phân tích HEAD"
+#: remote.c:1792
+msgid "push has no destination (push.default is 'nothing')"
+msgstr "đẩy lên mà không có đích (push.default là “nothing”)"
 
-#: sequencer.c:1346
+#: remote.c:1814
+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:1943
 #, c-format
-msgid "HEAD %s is not a commit!"
-msgstr "HEAD %s không phải là một lần chuyển giao!"
+msgid "couldn't find remote ref %s"
+msgstr "không thể tìm thấy tham chiếu máy chủ %s"
 
-#: sequencer.c:1350 sequencer.c:1425 builtin/commit.c:1577
-msgid "could not parse HEAD commit"
-msgstr "không thể phân tích commit (lần chuyển giao) HEAD"
+#: remote.c:1956
+#, c-format
+msgid "* Ignoring funny ref '%s' locally"
+msgstr "* Đang bỏ qua tham chiếu thú vị nội bộ “%s”"
 
-#: sequencer.c:1403 sequencer.c:2100
-msgid "unable to parse commit author"
-msgstr "không thể phân tích tác giả của lần chuyển giao"
+#: remote.c:2119
+#, 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:2123
+msgid "  (use \"git branch --unset-upstream\" to fixup)\n"
+msgstr "   (dùng \" git branch --unset-upstream\" để sửa)\n"
+
+#: remote.c:2126
+#, 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:2130
+#, 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:2133
+#, c-format
+msgid "  (use \"%s\" for details)\n"
+msgstr "  (dùng \"%s\" để biết thêm chi tiết)\n"
+
+#: remote.c:2137
+#, c-format
+msgid "Your branch is ahead of '%s' by %d commit.\n"
+msgid_plural "Your branch is ahead of '%s' by %d commits.\n"
+msgstr[0] "Nhánh của bạn đứng trước “%s” %d lần chuyển giao.\n"
+
+#: remote.c:2143
+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:2146
+#, c-format
+msgid "Your branch is behind '%s' by %d commit, and can be fast-forwarded.\n"
+msgid_plural ""
+"Your branch is behind '%s' by %d commits, and can be fast-forwarded.\n"
+msgstr[0] ""
+"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:2154
+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:2157
+#, c-format
+msgid ""
+"Your branch and '%s' have diverged,\n"
+"and have %d and %d different commit each, respectively.\n"
+msgid_plural ""
+"Your branch and '%s' have diverged,\n"
+"and have %d and %d different commits each, respectively.\n"
+msgstr[0] ""
+"Nhánh của bạn và “%s” bị phân kỳ,\n"
+"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:2167
+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"
+
+#: remote.c:2359
+#, c-format
+msgid "cannot parse expected object name '%s'"
+msgstr "không thể phân tích tên đối tượng mong muốn “%s”"
 
-#: sequencer.c:1414 builtin/am.c:1566 builtin/merge.c:701
-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"
+#: replace-object.c:21
+#, c-format
+msgid "bad replace ref name: %s"
+msgstr "tên tham chiếu thay thế bị sai: %s"
 
-#: sequencer.c:1447 sequencer.c:1565
+#: replace-object.c:30
 #, c-format
-msgid "unable to read commit message from '%s'"
-msgstr "không thể đọc phần chú thích (message) từ “%s”"
+msgid "duplicate replace ref: %s"
+msgstr "tham chiếu thay thế bị trùng: %s"
 
-#: sequencer.c:1476 sequencer.c:1508
+#: replace-object.c:82
 #, c-format
-msgid "invalid author identity '%s'"
-msgstr "Ä\91á»\8bnh danh tác giả không hợp lá»\87 â\80\9c%sâ\80\9d"
+msgid "replace depth too high for object %s"
+msgstr "Ä\91á»\99 sâu thay thế quá cao cho Ä\91á»\91i tượng %s"
 
-#: sequencer.c:1482
-msgid "corrupt author: missing date information"
-msgstr "tác giả sai hỏng: thiếu thông tin này tháng"
+#: rerere.c:201 rerere.c:210 rerere.c:213
+msgid "corrupt MERGE_RR"
+msgstr "MERGE_RR sai hỏng"
 
-#: sequencer.c:1521 builtin/am.c:1593 builtin/commit.c:1678 builtin/merge.c:904
-#: builtin/merge.c:929 t/helper/test-fast-rebase.c:78
-msgid "failed to write commit object"
-msgstr "gặp lỗi khi ghi đối tượng chuyển giao"
+#: rerere.c:248 rerere.c:253
+msgid "unable to write rerere record"
+msgstr "không thể ghi bản ghi rerere"
 
-#: sequencer.c:1548 sequencer.c:4283 t/helper/test-fast-rebase.c:198
+#: rerere.c:479
 #, c-format
-msgid "could not update %s"
-msgstr "không thể cập nhật %s"
+msgid "there were errors while writing '%s' (%s)"
+msgstr "gặp lỗi đọc khi đang ghi “%s” (%s)"
 
-#: sequencer.c:1597
+#: rerere.c:482
 #, c-format
-msgid "could not parse commit %s"
-msgstr "không thể phân tích lần chuyển giao %s"
+msgid "failed to flush '%s'"
+msgstr "gặp lỗi khi đẩy dữ liệu “%s” lên đĩa"
 
-#: sequencer.c:1602
+#: rerere.c:487 rerere.c:1023
 #, 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”"
+msgid "could not parse conflict hunks in '%s'"
+msgstr "không thể phân tích các mảnh xung đột trong “%s”"
 
-#: sequencer.c:1685 sequencer.c:1796
+#: rerere.c:668
 #, c-format
-msgid "unknown command: %d"
-msgstr "không hiểu câu lệnh %d"
+msgid "failed utime() on '%s'"
+msgstr "gặp lỗi utime() trên “%s”"
 
-#: sequencer.c:1743 sequencer.c:1768
+#: rerere.c:678
 #, 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:1753
-msgid "need a HEAD to fixup"
-msgstr "cần một HEAD để sửa"
-
-#: sequencer.c:1755 sequencer.c:3372
-msgid "could not read HEAD"
-msgstr "không thể đọc HEAD"
-
-#: sequencer.c:1757
-msgid "could not read HEAD's commit message"
-msgstr "không thể đọc phần chú thích (message) của HEAD"
+msgid "writing '%s' failed"
+msgstr "gặp lỗi khi đang ghi “%s”"
 
-#: sequencer.c:1763
+#: rerere.c:698
 #, c-format
-msgid "cannot write '%s'"
-msgstr "không thể ghi “%s”"
-
-#: sequencer.c:1770 git-rebase--preserve-merges.sh:486
-msgid "This is the 1st commit message:"
-msgstr "Đây là chú thích cho lần chuyển giao thứ nhất:"
+msgid "Staged '%s' using previous resolution."
+msgstr "Đã tạm cất “%s” sử dụng cách phân giải kế trước."
 
-#: sequencer.c:1778
+#: rerere.c:737
 #, c-format
-msgid "could not read commit message of %s"
-msgstr "không thể đọc phần chú thích (message) của %s"
+msgid "Recorded resolution for '%s'."
+msgstr "Cách giải quyết đã ghi lại cho “%s”."
 
-#: sequencer.c:1785
+#: rerere.c:772
 #, c-format
-msgid "This is the commit message #%d:"
-msgstr "Ä\90ây là chú thích cho lần chuyá»\83n giao thứ #%d:"
+msgid "Resolved '%s' using previous resolution."
+msgstr "Ä\90ã phân giải giải â\80\9c%sâ\80\9d sá»­ dụng cách giải quyết kế trÆ°á»\9bc."
 
-#: sequencer.c:1791
+#: rerere.c:787
 #, 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:1879
-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:1886
-msgid "cannot fixup root commit"
-msgstr "không thể sửa chữa lần chuyển giao gốc"
+msgid "cannot unlink stray '%s'"
+msgstr "không thể unlink stray “%s”"
 
-#: sequencer.c:1905
+#: rerere.c:791
 #, 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."
+msgid "Recorded preimage for '%s'"
+msgstr "Preimage đã được ghi lại cho “%s”"
 
-#: sequencer.c:1913 sequencer.c:1921
+#: rerere.c:865 submodule.c:2088 builtin/log.c:1991
+#: builtin/submodule--helper.c:1878 builtin/submodule--helper.c:1890
 #, c-format
-msgid "commit %s does not have parent %d"
-msgstr "lần chuyển giao %s không có cha mẹ %d"
+msgid "could not create directory '%s'"
+msgstr "không thể tạo thư mục “%s”"
 
-#: sequencer.c:1927
+#: rerere.c:1041
 #, c-format
-msgid "cannot get commit message for %s"
-msgstr "không thể lấy ghi chú lần chuyển giao cho %s"
+msgid "failed to update conflicted state in '%s'"
+msgstr "gặp lỗi khi chạy cập nhật trạng thái bị xung đột trong “%s”"
 
-#. TRANSLATORS: The first %s will be a "todo" command like
-#. "revert" or "pick", the second %s a SHA1.
-#: sequencer.c:1946
+#: rerere.c:1052 rerere.c:1059
 #, 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"
+msgid "no remembered resolution for '%s'"
+msgstr "đừng nhó các giải quyết cho “%s”"
 
-#: sequencer.c:2011
+#: rerere.c:1061
 #, c-format
-msgid "could not rename '%s' to '%s'"
-msgstr "không thể đổi tên “%s” thành “%s”"
+msgid "cannot unlink '%s'"
+msgstr "không thể unlink “%s”"
 
-#: sequencer.c:2071
+#: rerere.c:1071
 #, c-format
-msgid "could not revert %s... %s"
-msgstr "không thể hoàn nguyên %s… %s"
+msgid "Updated preimage for '%s'"
+msgstr "Đã cập nhật preimage cho “%s”"
 
-#: sequencer.c:2072
+#: rerere.c:1080
 #, c-format
-msgid "could not apply %s... %s"
-msgstr "không thể áp dụng miếng vá %s… %s"
+msgid "Forgot resolution for '%s'\n"
+msgstr "Quên phân giải cho “%s”\n"
 
-#: sequencer.c:2092
-#, c-format
-msgid "dropping %s %s -- patch contents already upstream\n"
-msgstr "xóa %s %s -- vá nội dung thượng nguồn đã có\n"
+#: rerere.c:1191
+msgid "unable to open rr-cache directory"
+msgstr "không thể mở thư mục rr-cache"
 
-#: sequencer.c:2150
-#, c-format
-msgid "git %s: failed to read the index"
-msgstr "git %s: gặp lỗi đọc bảng mục lục"
+#: reset.c:42
+msgid "could not determine HEAD revision"
+msgstr "không thể dò tìm điểm xét duyệt HEAD"
 
-#: sequencer.c:2157
+#: reset.c:70 reset.c:76 sequencer.c:3468
 #, 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"
+msgid "failed to find tree of %s"
+msgstr "gặp lỗi khi tìm cây của %s"
+
+#: revision.c:2338
+msgid "--unpacked=<packfile> no longer supported"
+msgstr "--unpacked=<packfile> không còn được hỗ trợ nữa"
 
-#: sequencer.c:2234
+#: revision.c:2668
+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:2671
 #, c-format
-msgid "%s does not accept arguments: '%s'"
-msgstr "%s không nhận các đối số: “%s”"
+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:2877
+msgid "-L does not yet support diff formats besides -p and -s"
+msgstr "-L vẫn chưa hỗ trợ định dạng khác biệt nào ngoài -p và -s"
+
+#: run-command.c:767
+msgid "open /dev/null failed"
+msgstr "gặp lỗi khi mở “/dev/null”"
 
-#: sequencer.c:2243
+#: run-command.c:1274
 #, c-format
-msgid "missing arguments for %s"
-msgstr "thiếu đối số cho %s"
+msgid "cannot create async thread: %s"
+msgstr "không thể tạo tuyến async: %s"
 
-#: sequencer.c:2274
+#: run-command.c:1338
 #, c-format
-msgid "could not parse '%s'"
-msgstr "không thể phân tích cú pháp “%s”"
+msgid ""
+"The '%s' hook was ignored because it's not set as executable.\n"
+"You can disable this warning with `git config advice.ignoredHook false`."
+msgstr ""
+"Móc “%s” bị bỏ qua bởi vì nó không thể đặt là thực thi được.\n"
+"Bạn có thể tắt cảnh báo này bằng “git config advice.ignoredHook false“."
+
+#: send-pack.c:146
+msgid "unexpected flush packet while reading remote unpack status"
+msgstr ""
+"gặp gói flush không cần trong khi đọc tình trạng giải nén gói trên máy chủ"
 
-#: sequencer.c:2335
+#: send-pack.c:148
 #, c-format
-msgid "invalid line %d: %.*s"
-msgstr "dòng không hợp lệ %d: %.*s"
+msgid "unable to parse remote unpack status: %s"
+msgstr "không thể phân tích tình trạng unpack máy chủ: %s"
 
-#: sequencer.c:2346
+#: send-pack.c:150
 #, 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"
+msgid "remote unpack failed: %s"
+msgstr "máy chủ gặp lỗi unpack: %s"
 
-#: sequencer.c:2432
-msgid "cancelling a cherry picking in progress"
-msgstr "đang hủy bỏ thao tác cherry pick đang thực hiện"
+#: send-pack.c:374
+msgid "failed to sign the push certificate"
+msgstr "gặp lỗi khi ký chứng thực đẩy"
 
-#: sequencer.c:2441
-msgid "cancelling a revert in progress"
-msgstr "đang hủy bỏ các thao tác hoàn nguyên đang thực hiện"
+#: send-pack.c:467
+msgid "the receiving end does not support this repository's hash algorithm"
+msgstr "kết thúc nhận không hỗ trợ các tùy chọn của lệnh push"
 
-#: sequencer.c:2485
-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”."
+#: send-pack.c:476
+msgid "the receiving end does not support --signed push"
+msgstr "kết thúc nhận không hỗ trợ đẩy --signed"
 
-#: sequencer.c:2487
-#, c-format
-msgid "unusable instruction sheet: '%s'"
-msgstr "bảng chỉ thị không thể dùng được: %s"
+#: send-pack.c:478
+msgid ""
+"not sending a push certificate since the receiving end does not support --"
+"signed push"
+msgstr ""
+"đừng gửi giấy chứng nhận đẩy trước khi kết thúc nhận không hỗ trợ đẩy --"
+"signed"
 
-#: sequencer.c:2492
-msgid "no commits parsed."
-msgstr "không có lần chuyển giao nào được phân tích."
+#: send-pack.c:490
+msgid "the receiving end does not support --atomic push"
+msgstr "kết thúc nhận không hỗ trợ đẩy --atomic"
 
-#: sequencer.c:2503
-msgid "cannot cherry-pick during a revert."
-msgstr "không thể cherry-pick trong khi hoàn nguyên."
+#: send-pack.c:495
+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:2505
-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:195
+#, 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:2583
+#: sequencer.c:323
 #, c-format
-msgid "invalid value for %s: %s"
-msgstr "giá trị cho %s không hợp lệ: %s"
+msgid "could not delete '%s'"
+msgstr "không thể xóa bỏ “%s”"
 
-#: sequencer.c:2690
-msgid "unusable squash-onto"
-msgstr "squash-onto không dùng được"
+#: sequencer.c:343 builtin/rebase.c:757 builtin/rebase.c:1602 builtin/rm.c:385
+#, c-format
+msgid "could not remove '%s'"
+msgstr "không thể gỡ bỏ “%s”"
+
+#: sequencer.c:353
+msgid "revert"
+msgstr "hoàn nguyên"
+
+#: sequencer.c:355
+msgid "cherry-pick"
+msgstr "cherry-pick"
+
+#: sequencer.c:357
+msgid "rebase"
+msgstr "rebase"
 
-#: sequencer.c:2710
+#: sequencer.c:359
 #, c-format
-msgid "malformed options sheet: '%s'"
-msgstr "bảng tùy chọn dị hình: “%s”"
+msgid "unknown action: %d"
+msgstr "không nhận ra thao tác: %d"
 
-#: sequencer.c:2803 sequencer.c:4636
-msgid "empty commit set passed"
-msgstr "lần chuyển giao trống rỗng đặt là hợp quy cách"
+#: sequencer.c:418
+msgid ""
+"after resolving the conflicts, mark the corrected paths\n"
+"with 'git add <paths>' or 'git rm <paths>'"
+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 </các/đường/dẫn>” hoặc “git rm </các/đường/dẫn>”"
 
-#: sequencer.c:2820
-msgid "revert is already in progress"
-msgstr "có thao tác hoàn nguyên đang được thực hiện"
+#: sequencer.c:421
+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 ""
+"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 </các/đường/dẫn>” hoặc “git rm </các/đường/dẫn>”\n"
+"và chuyển giao kết quả bằng lệnh “git commit”"
 
-#: sequencer.c:2822
+#: sequencer.c:434 sequencer.c:3070
 #, c-format
-msgid "try \"git revert (--continue | %s--abort | --quit)\""
-msgstr "hãy thử \"git revert (--continue | %s--abort | --quit)\""
-
-#: sequencer.c:2825
-msgid "cherry-pick is already in progress"
-msgstr "có thao tác “cherry-pick” đang được thực hiện"
+msgid "could not lock '%s'"
+msgstr "không thể khóa “%s”"
 
-#: sequencer.c:2827
+#: sequencer.c:436 sequencer.c:2869 sequencer.c:3074 sequencer.c:3088
+#: sequencer.c:3345 sequencer.c:5334 strbuf.c:1168 wrapper.c:631
 #, c-format
-msgid "try \"git cherry-pick (--continue | %s--abort | --quit)\""
-msgstr "hãy thử \"git cherry-pick (--continue | %s--abort | --quit)\""
+msgid "could not write to '%s'"
+msgstr "không thể ghi vào “%s”"
 
-#: sequencer.c:2841
+#: sequencer.c:441
 #, c-format
-msgid "could not create sequencer directory '%s'"
-msgstr "không thể tạo thư mục xếp dãy “%s”"
+msgid "could not write eol to '%s'"
+msgstr "không thể ghi eol vào “%s”"
 
-#: sequencer.c:2856
-msgid "could not lock HEAD"
-msgstr "không thể khóa HEAD"
+#: sequencer.c:446 sequencer.c:2874 sequencer.c:3076 sequencer.c:3090
+#: sequencer.c:3353
+#, c-format
+msgid "failed to finalize '%s'"
+msgstr "gặp lỗi khi hoàn thành “%s”"
 
-#: sequencer.c:2916 sequencer.c:4371
-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:485
+#, 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:2918 sequencer.c:2929
-msgid "cannot resolve HEAD"
-msgstr "không thể phân giải HEAD"
+#: sequencer.c:489
+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:2920 sequencer.c:2964
-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:521
+#, c-format
+msgid "%s: fast-forward"
+msgstr "%s: chuyển-tiếp-nhanh"
 
-#: sequencer.c:2950 builtin/grep.c:756
+#: sequencer.c:560 builtin/tag.c:598
 #, c-format
-msgid "cannot open '%s'"
-msgstr "không mở được “%s”"
+msgid "Invalid cleanup mode %s"
+msgstr "Chế độ dọn dẹp không hợp lệ %s"
 
-#: sequencer.c:2952
+#. TRANSLATORS: %s will be "revert", "cherry-pick" or
+#. "rebase".
+#.
+#: sequencer.c:670
 #, c-format
-msgid "cannot read '%s': %s"
-msgstr "không thể đọc “%s”: %s"
+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:2953
-msgid "unexpected end of file"
-msgstr "gặp kết thúc tập tin đột xuất"
+#: sequencer.c:684
+msgid "unable to update cache tree"
+msgstr "không thể cập nhật cây bộ nhớ đệm"
+
+#: sequencer.c:698
+msgid "could not resolve HEAD commit"
+msgstr "không thể phân giải lần chuyển giao HEAD"
 
-#: sequencer.c:2959
+#: sequencer.c:778
 #, 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"
+msgid "no key present in '%.*s'"
+msgstr "không có khóa hiện diện trong “%.*s”"
 
-#: sequencer.c:2970
-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:789
+#, c-format
+msgid "unable to dequote value of '%s'"
+msgstr "không thể giải trích dẫn giá trị của “%s”"
 
-#: sequencer.c:3011
-msgid "no revert in progress"
-msgstr "không có tiến trình hoàn nguyên nào"
+#: sequencer.c:826 wrapper.c:201 wrapper.c:371 builtin/am.c:710
+#: builtin/am.c:802 builtin/merge.c:1136 builtin/rebase.c:910
+#, c-format
+msgid "could not open '%s' for reading"
+msgstr "không thể mở “%s” để đọc"
 
-#: sequencer.c:3020
-msgid "no cherry-pick in progress"
-msgstr "không có cherry-pick đang được thực hiện"
+#: sequencer.c:836
+msgid "'GIT_AUTHOR_NAME' already given"
+msgstr "“GIT_AUTHOR_NAME” đã sẵn đưa ra rồi"
 
-#: sequencer.c:3030
-msgid "failed to skip the commit"
-msgstr "gặp lỗi khi bỏ qua đối tượng chuyển giao"
+#: sequencer.c:841
+msgid "'GIT_AUTHOR_EMAIL' already given"
+msgstr "“GIT_AUTHOR_EMAIL” đã sẵn đưa ra rồi"
 
-#: sequencer.c:3037
-msgid "there is nothing to skip"
-msgstr "ở đây không có gì để mà bỏ qua cả"
+#: sequencer.c:846
+msgid "'GIT_AUTHOR_DATE' already given"
+msgstr "“GIT_AUTHOR_DATE” đã sẵn đưa ra rồi"
 
-#: sequencer.c:3040
+#: sequencer.c:850
 #, c-format
-msgid ""
-"have you committed already?\n"
-"try \"git %s --continue\""
-msgstr ""
-"bạn đã sẵn sàng chuyển giao chưa?\n"
-"thử \"git %s --continue\""
+msgid "unknown variable '%s'"
+msgstr "không hiểu biến “%s”"
 
-#: sequencer.c:3202 sequencer.c:4263
-msgid "cannot read HEAD"
-msgstr "không thể đọc HEAD"
+#: sequencer.c:855
+msgid "missing 'GIT_AUTHOR_NAME'"
+msgstr "thiếu “GIT_AUTHOR_NAME”"
 
-#: sequencer.c:3219
-#, c-format
-msgid "unable to copy '%s' to '%s'"
-msgstr "không thể chép “%s” sang “%s”"
+#: sequencer.c:857
+msgid "missing 'GIT_AUTHOR_EMAIL'"
+msgstr "thiếu “GIT_AUTHOR_EMAIL”"
 
-#: sequencer.c:3227
+#: sequencer.c:859
+msgid "missing 'GIT_AUTHOR_DATE'"
+msgstr "thiếu “GIT_AUTHOR_DATE”"
+
+#: sequencer.c:924
 #, c-format
 msgid ""
-"You can amend the commit now, with\n"
+"you have staged changes in your working tree\n"
+"If these changes are meant to be squashed into the previous commit, run:\n"
 "\n"
 "  git commit --amend %s\n"
 "\n"
-"Once you are satisfied with your changes, run\n"
+"If they are meant to go into a new commit, run:\n"
+"\n"
+"  git commit %s\n"
+"\n"
+"In both cases, once you're done, continue with:\n"
 "\n"
 "  git rebase --continue\n"
 msgstr ""
-"Bạn có thể tu bổ lần chuyển giao ngay bây giờ bằng:\n"
+"bạn có các thay đổi so với trong bệ phóng trong thư mục làm việc của bạn.\n"
+"Nếu các thay đổi này là muốn squash vào lần chuyển giao kế trước, chạy:\n"
 "\n"
 "  git commit --amend %s\n"
 "\n"
-"Một khi đã hài lòng với những thay đổi của mình, thì chạy:\n"
+"Nếu chúng có ý là đi đến lần chuyển giao mới, thì chạy:\n"
+"\n"
+"  git commit %s\n"
+"\n"
+"Trong cả hai trường hợp, một khi bạn làm xong, tiếp tục bằng:\n"
 "\n"
 "  git rebase --continue\n"
 
-#: sequencer.c:3237
-#, c-format
-msgid "Could not apply %s... %.*s"
-msgstr "Không thể áp dụng %s… %.*s"
-
-#: sequencer.c:3244
-#, c-format
-msgid "Could not merge %.*s"
-msgstr "Không hòa trộn %.*s"
-
-#: sequencer.c:3258 sequencer.c:3262 builtin/difftool.c:640
-#, c-format
-msgid "could not copy '%s' to '%s'"
-msgstr "không thể chép “%s” sang “%s”"
-
-#: sequencer.c:3274
-#, c-format
-msgid "Executing: %s\n"
-msgstr "Đang thực thi: %s\n"
+#: sequencer.c:1211
+msgid "'prepare-commit-msg' hook failed"
+msgstr "móc “prepare-commit-msg” bị lỗi"
 
-#: sequencer.c:3289
-#, c-format
+#: sequencer.c:1217
 msgid ""
-"execution failed: %s\n"
-"%sYou can fix the problem, and then run\n"
+"Your name and email address were configured automatically based\n"
+"on your username and hostname. Please check that they are accurate.\n"
+"You can suppress this message by setting them explicitly. Run the\n"
+"following command and follow the instructions in your editor to edit\n"
+"your configuration file:\n"
 "\n"
-"  git rebase --continue\n"
+"    git config --global --edit\n"
+"\n"
+"After doing this, you may fix the identity used for this commit with:\n"
 "\n"
+"    git commit --amend --reset-author\n"
 msgstr ""
-"thực thi gặp lỗi: %s\n"
-"%sBạn có thể sửa các trục trặc, và sau đó chạy lệnh\n"
+"Tên và địa chỉ thư điện tử của bạn được cấu hình một cách tự động trên cơ "
+"sở\n"
+"tài khoản và địa chỉ máy chủ của bạn. Xin hãy kiểm tra xem chúng có chính "
+"xác không.\n"
+"Bạn có thể chặn những thông báo kiểu này bằng cách cài đặt các thông tin "
+"trên\n"
+"một cách rõ ràng. Chạy lệnh sau đây là theo các hướng dẫn trong bộ soạn "
+"thảo\n"
+"để chỉnh sửa tập tin cấu hình của mình:\n"
 "\n"
-"  git rebase --continue\n"
+"    git config --global --edit\n"
 "\n"
+"Sau khi thực hiện xong, bạn có thể sửa chữa định danh được sử dụng cho\n"
+"lần chuyển giao này với lệnh:\n"
+"\n"
+"    git commit --amend --reset-author\n"
 
-#: sequencer.c:3295
-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:3301
-#, c-format
+#: sequencer.c:1230
 msgid ""
-"execution succeeded: %s\n"
-"but left changes to the index and/or the working tree\n"
-"Commit or stash your changes, and then run\n"
+"Your name and email address were configured automatically based\n"
+"on your username and hostname. Please check that they are accurate.\n"
+"You can suppress this message by setting them explicitly:\n"
 "\n"
-"  git rebase --continue\n"
+"    git config --global user.name \"Your Name\"\n"
+"    git config --global user.email you@example.com\n"
 "\n"
+"After doing this, you may fix the identity used for this commit with:\n"
+"\n"
+"    git commit --amend --reset-author\n"
 msgstr ""
-"thực thi thành công: %s\n"
-"nhưng còn các thay đổi trong mục lục và/hoặc cây làm việc\n"
-"Chuyển giao hay tạm cất các thay đổi này đi, rồi chạy\n"
+"Tên và địa chỉ thư điện tử của bạn được cấu hình một cách tự động trên cơ "
+"sở\n"
+"tài khoản và địa chỉ máy chủ của bạn. Xin hãy kiểm tra xem chúng có chính "
+"xác không.\n"
+"Bạn có thể chặn những thông báo kiểu này bằng cách cài đặt các thông tin "
+"trên một cách rõ ràng:\n"
 "\n"
-"  git rebase --continue\n"
+"    git config --global user.name \"Tên của bạn\"\n"
+"    git config --global user.email you@example.com\n"
+"\n"
+"Sau khi thực hiện xong, bạn có thể sửa chữa định danh được sử dụng cho lần "
+"chuyển giao này với lệnh:\n"
 "\n"
+"    git commit --amend --reset-author\n"
 
-#: sequencer.c:3362
-#, c-format
-msgid "illegal label name: '%.*s'"
-msgstr "tên nhãn dị hình: “%.*s”"
+#: sequencer.c:1272
+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:3416
-msgid "writing fake root commit"
-msgstr "ghi lần chuyển giao gốc giả"
+#: sequencer.c:1274
+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:3421
-msgid "writing squash-onto"
-msgstr "đang ghi squash-onto"
+#: sequencer.c:1320
+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:3505
-#, c-format
-msgid "could not resolve '%s'"
-msgstr "không thể phân giải “%s”"
+#: sequencer.c:1322
+msgid "detached HEAD"
+msgstr "đã rời khỏi HEAD"
 
-#: sequencer.c:3538
-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:1326
+msgid " (root-commit)"
+msgstr " (root-commit)"
 
-#: sequencer.c:3560
-#, c-format
-msgid "unable to parse '%.*s'"
-msgstr "không thể phân tích “%.*s”"
+#: sequencer.c:1347
+msgid "could not parse HEAD"
+msgstr "không thể phân tích HEAD"
 
-#: sequencer.c:3569
+#: sequencer.c:1349
 #, c-format
-msgid "nothing to merge: '%.*s'"
-msgstr "chẳng có gì để hòa trộn: “%.*s”"
+msgid "HEAD %s is not a commit!"
+msgstr "HEAD %s không phải là một lần chuyển giao!"
 
-#: sequencer.c:3581
-msgid "octopus merge cannot be executed on top of a [new root]"
-msgstr "hòa trộn octopus không thể được thực thi trên đỉnh của một [new root]"
+#: sequencer.c:1353 sequencer.c:1431 builtin/commit.c:1577
+msgid "could not parse HEAD commit"
+msgstr "không thể phân tích commit (lần chuyển giao) HEAD"
 
-#: sequencer.c:3597
-#, 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:1409 sequencer.c:2108
+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:3780
+#: sequencer.c:1420 builtin/am.c:1566 builtin/merge.c:702
+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:1453 sequencer.c:1573
 #, c-format
-msgid "could not even attempt to merge '%.*s'"
-msgstr "không thể ngay cả khi thử hòa trộn “%.*s”"
+msgid "unable to read commit message from '%s'"
+msgstr "không thể đọc phần chú thích (message) từ “%s”"
 
-#: sequencer.c:3796
-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:1484 sequencer.c:1516
+#, c-format
+msgid "invalid author identity '%s'"
+msgstr "định danh tác giả không hợp lệ “%s”"
 
-#: sequencer.c:3870
-msgid "Cannot autostash"
-msgstr "Không thể autostash"
+#: sequencer.c:1490
+msgid "corrupt author: missing date information"
+msgstr "tác giả sai hỏng: thiếu thông tin này tháng"
 
-#: sequencer.c:3873
-#, c-format
-msgid "Unexpected stash response: '%s'"
-msgstr "Gặp đáp ứng stash không cần: “%s”"
+#: sequencer.c:1529 builtin/am.c:1593 builtin/commit.c:1678 builtin/merge.c:905
+#: builtin/merge.c:930 t/helper/test-fast-rebase.c:78
+msgid "failed to write commit object"
+msgstr "gặp lỗi khi ghi đối tượng chuyển giao"
 
-#: sequencer.c:3879
+#: sequencer.c:1556 sequencer.c:4291 t/helper/test-fast-rebase.c:198
 #, c-format
-msgid "Could not create directory for '%s'"
-msgstr "Không thể tạo thư mục cho “%s”"
+msgid "could not update %s"
+msgstr "không thể cập nhật %s"
 
-#: sequencer.c:3882
+#: sequencer.c:1605
 #, c-format
-msgid "Created autostash: %s\n"
-msgstr "Đã tạo autostash: %s\n"
-
-#: sequencer.c:3886
-msgid "could not reset --hard"
-msgstr "không thể reset --hard"
+msgid "could not parse commit %s"
+msgstr "không thể phân tích lần chuyển giao %s"
 
-#: sequencer.c:3911
+#: sequencer.c:1610
 #, c-format
-msgid "Applied autostash.\n"
-msgstr "Đã áp dụng autostash.\n"
+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:3923
+#: sequencer.c:1693 sequencer.c:1804
 #, c-format
-msgid "cannot store %s"
-msgstr "không thử lưu “%s”"
+msgid "unknown command: %d"
+msgstr "không hiểu câu lệnh %d"
 
-#: sequencer.c:3926
+#: sequencer.c:1751 sequencer.c:1776
 #, c-format
-msgid ""
-"%s\n"
-"Your changes are safe in the stash.\n"
-"You can run \"git stash pop\" or \"git stash drop\" at any time.\n"
-msgstr ""
-"%s\n"
-"Các thay đổi của bạn an toàn trong stash (tạm cất đi).\n"
-"Bạn có thể chạy lệnh \"git stash pop\" hay \"git stash drop\" bất kỳ lúc "
-"nào.\n"
+msgid "This is a combination of %d commits."
+msgstr "Đây là tổ hợp của %d lần chuyển giao."
 
-#: sequencer.c:3931
-msgid "Applying autostash resulted in conflicts."
-msgstr "Áp dụng autostash có hiệu quả trong các xung đột."
+#: sequencer.c:1761
+msgid "need a HEAD to fixup"
+msgstr "cần một HEAD để sửa"
 
-#: sequencer.c:3932
-msgid "Autostash exists; creating a new stash entry."
-msgstr "Autostash đã sẵn có; nên tạo một mục stash mới."
+#: sequencer.c:1763 sequencer.c:3380
+msgid "could not read HEAD"
+msgstr "không thể đọc HEAD"
 
-#: sequencer.c:4025 git-rebase--preserve-merges.sh:769
-msgid "could not detach HEAD"
-msgstr "không thể tách rời HEAD"
+#: sequencer.c:1765
+msgid "could not read HEAD's commit message"
+msgstr "không thể đọc phần chú thích (message) của HEAD"
 
-#: sequencer.c:4040
+#: sequencer.c:1771
 #, c-format
-msgid "Stopped at HEAD\n"
-msgstr "Dừng lại ở HEAD\n"
+msgid "cannot write '%s'"
+msgstr "không thể ghi “%s”"
 
-#: sequencer.c:4042
-#, c-format
-msgid "Stopped at %s\n"
-msgstr "Dừng lại ở %s\n"
+#: sequencer.c:1778 git-rebase--preserve-merges.sh:486
+msgid "This is the 1st commit message:"
+msgstr "Đây là chú thích cho lần chuyển giao thứ nhất:"
 
-#: sequencer.c:4050
+#: sequencer.c:1786
 #, 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ên 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"
+msgid "could not read commit message of %s"
+msgstr "không thể đọc phần chú thích (message) của %s"
 
-#: sequencer.c:4096
+#: sequencer.c:1793
 #, c-format
-msgid "Rebasing (%d/%d)%s"
-msgstr "Đang cải tổ (%d/%d)%s"
+msgid "This is the commit message #%d:"
+msgstr "Đây là chú thích cho lần chuyển giao thứ #%d:"
 
-#: sequencer.c:4141
+#: sequencer.c:1799
 #, c-format
-msgid "Stopped at %s...  %.*s\n"
-msgstr "Dừng lại ở %s…  %.*s\n"
+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:1887
+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:1894
+msgid "cannot fixup root commit"
+msgstr "không thể sửa chữa lần chuyển giao gốc"
 
-#: sequencer.c:4212
+#: sequencer.c:1913
 #, c-format
-msgid "unknown command %d"
-msgstr "không hiểu câu lệnh %d"
+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:4271
-msgid "could not read orig-head"
-msgstr "không thể đọc orig-head"
+#: sequencer.c:1921 sequencer.c:1929
+#, 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:4276
-msgid "could not read 'onto'"
-msgstr "không thể đọc “onto”."
+#: sequencer.c:1935
+#, c-format
+msgid "cannot get commit message for %s"
+msgstr "không thể lấy ghi chú lần chuyển giao cho %s"
 
-#: sequencer.c:4290
+#. TRANSLATORS: The first %s will be a "todo" command like
+#. "revert" or "pick", the second %s a SHA1.
+#: sequencer.c:1954
 #, c-format
-msgid "could not update HEAD to %s"
-msgstr "không thể cập nhật HEAD thành %s"
+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:4350
+#: sequencer.c:2019
 #, c-format
-msgid "Successfully rebased and updated %s.\n"
-msgstr "Cài tổ và cập nhật %s một cách thành công.\n"
+msgid "could not rename '%s' to '%s'"
+msgstr "không thể đổi tên “%s” thành “%s”"
 
-#: sequencer.c:4383
-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:2079
+#, c-format
+msgid "could not revert %s... %s"
+msgstr "không thể hoàn nguyên %s… %s"
 
-#: sequencer.c:4392
-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:2080
+#, c-format
+msgid "could not apply %s... %s"
+msgstr "không thể áp dụng miếng vá %s… %s"
 
-#: sequencer.c:4394
+#: sequencer.c:2100
 #, c-format
-msgid "invalid file: '%s'"
-msgstr "tập tin không hợp lệ: “%s”"
+msgid "dropping %s %s -- patch contents already upstream\n"
+msgstr "xóa %s %s -- vá nội dung thượng nguồn đã có\n"
 
-#: sequencer.c:4396
+#: sequencer.c:2158
 #, c-format
-msgid "invalid contents: '%s'"
-msgstr "nội dung không hợp lệ: “%s”"
+msgid "git %s: failed to read the index"
+msgstr "git %s: gặp lỗi đọc bảng mục lục"
 
-#: sequencer.c:4399
-msgid ""
-"\n"
-"You have uncommitted changes in your working tree. Please, commit them\n"
-"first and then run 'git rebase --continue' again."
-msgstr ""
-"\n"
-"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:2165
+#, 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:4435 sequencer.c:4474
+#: sequencer.c:2242
 #, c-format
-msgid "could not write file: '%s'"
-msgstr "không thể ghi tập tin: “%s”"
+msgid "%s does not accept arguments: '%s'"
+msgstr "%s không nhận các đối số: “%s”"
 
-#: sequencer.c:4490
-msgid "could not remove CHERRY_PICK_HEAD"
-msgstr "không thể xóa bỏ CHERRY_PICK_HEAD"
+#: sequencer.c:2251
+#, c-format
+msgid "missing arguments for %s"
+msgstr "thiếu đối số cho %s"
 
-#: sequencer.c:4497
-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:2282
+#, c-format
+msgid "could not parse '%s'"
+msgstr "không thể phân tích cú pháp “%s”"
 
-#: sequencer.c:4613
+#: sequencer.c:2343
 #, c-format
-msgid "%s: can't cherry-pick a %s"
-msgstr "%s: không thể cherry-pick một %s"
+msgid "invalid line %d: %.*s"
+msgstr "dòng không hợp lệ %d: %.*s"
 
-#: sequencer.c:4617
+#: sequencer.c:2354
 #, c-format
-msgid "%s: bad revision"
-msgstr "%s: điểm xét duyệt sai"
+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:4652
-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:2440
+msgid "cancelling a cherry picking in progress"
+msgstr "đang hủy bỏ thao tác cherry pick đang thực hiện"
 
-#: sequencer.c:5129
-msgid "make_script: unhandled options"
-msgstr "make_script: các tùy chọn được không xử lý"
+#: sequencer.c:2449
+msgid "cancelling a revert in progress"
+msgstr "đang hủy bỏ các thao tác hoàn nguyên đang thực hiện"
 
-#: sequencer.c:5132
-msgid "make_script: error preparing revisions"
-msgstr "make_script: lỗi chuẩn bị điểm hiệu chỉnh"
+#: sequencer.c:2493
+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:5374 sequencer.c:5391
-msgid "nothing to do"
-msgstr "không có gì để làm"
+#: sequencer.c:2495
+#, c-format
+msgid "unusable instruction sheet: '%s'"
+msgstr "bảng chỉ thị không thể dùng được: %s"
 
-#: sequencer.c:5410
-msgid "could not skip unnecessary pick commands"
-msgstr "không thể bỏ qua các lệnh cậy (pick) không cần thiết"
+#: sequencer.c:2500
+msgid "no commits parsed."
+msgstr "không có lần chuyển giao nào được phân tích."
 
-#: sequencer.c:5504
-msgid "the script was already rearranged."
-msgstr "văn lệnh đã sẵn được sắp đặt rồi."
+#: sequencer.c:2511
+msgid "cannot cherry-pick during a revert."
+msgstr "không thể cherry-pick trong khi hoàn nguyên."
 
-#: setup.c:133
-#, c-format
-msgid "'%s' is outside repository at '%s'"
-msgstr "“%s” ngoài một kho chứa tại “%s”"
+#: sequencer.c:2513
+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."
 
-#: setup.c:185
+#: sequencer.c:2591
 #, 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 ""
-"%s: không có đường dẫn nào như thế ở trong cây làm việc.\n"
-"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ộ."
+msgid "invalid value for %s: %s"
+msgstr "giá trị cho %s không hợp lệ: %s"
 
-#: setup.c:198
-#, c-format
-msgid ""
-"ambiguous argument '%s': unknown revision or path not in the working tree.\n"
-"Use '--' to separate paths from revisions, like this:\n"
-"'git <command> [<revision>...] -- [<file>...]'"
-msgstr ""
-"tham số chưa rõ ràng “%s”: chưa biết điểm xem xét hay đường dẫn không trong "
-"cây làm việc.\n"
-"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>…]”"
+#: sequencer.c:2698
+msgid "unusable squash-onto"
+msgstr "squash-onto không dùng được"
 
-#: setup.c:264
+#: sequencer.c:2718
 #, 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"
+msgid "malformed options sheet: '%s'"
+msgstr "bảng tùy chọn dị hình: “%s”"
 
-#: setup.c:283
+#: sequencer.c:2811 sequencer.c:4644
+msgid "empty commit set passed"
+msgstr "lần chuyển giao trống rỗng đặt là hợp quy cách"
+
+#: sequencer.c:2828
+msgid "revert is already in progress"
+msgstr "có thao tác hoàn nguyên đang được thực hiện"
+
+#: sequencer.c:2830
 #, c-format
-msgid ""
-"ambiguous argument '%s': both revision and filename\n"
-"Use '--' to separate paths from revisions, like this:\n"
-"'git <command> [<revision>...] -- [<file>...]'"
-msgstr ""
-"tham số chưa rõ ràng “%s”: cả điểm xem xét và tên tập tin.\n"
-"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>…]”"
+msgid "try \"git revert (--continue | %s--abort | --quit)\""
+msgstr "hãy thử \"git revert (--continue | %s--abort | --quit)\""
 
-#: setup.c:419
-msgid "unable to set up work tree using invalid config"
-msgstr "không thể cài đặt thư mục làm việc sử dụng cấu hình không hợp lệ"
+#: sequencer.c:2833
+msgid "cherry-pick is already in progress"
+msgstr "có thao tác “cherry-pick” đang được thực hiện"
 
-#: setup.c:423
-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"
+#: sequencer.c:2835
+#, c-format
+msgid "try \"git cherry-pick (--continue | %s--abort | --quit)\""
+msgstr "hãy thử \"git cherry-pick (--continue | %s--abort | --quit)\""
 
-#: setup.c:661
+#: sequencer.c:2849
 #, 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"
+msgid "could not create sequencer directory '%s'"
+msgstr "không thể tạo thư mục xếp dãy “%s”"
 
-#: setup.c:669
-msgid "unknown repository extensions found:"
-msgstr "tìm thấy phần mở rộng kho chưa biết:"
+#: sequencer.c:2864
+msgid "could not lock HEAD"
+msgstr "không thể khóa HEAD"
 
-#: setup.c:681
-msgid "repo version is 0, but v1-only extensions found:"
-msgstr "phiên bản kho là 0, nhưng lại tìm thấy phần mở rộng chỉ v1:"
+#: sequencer.c:2924 sequencer.c:4379
+msgid "no cherry-pick or revert in progress"
+msgstr "không cherry-pick hay hoàn nguyên trong tiến trình"
 
-#: setup.c:700
-#, c-format
-msgid "error opening '%s'"
-msgstr "gặp lỗi khi mở “%s”"
+#: sequencer.c:2926 sequencer.c:2937
+msgid "cannot resolve HEAD"
+msgstr "không thể phân giải HEAD"
 
-#: setup.c:702
-#, c-format
-msgid "too large to be a .git file: '%s'"
-msgstr "tập tin .git là quá lớn: “%s”"
+#: sequencer.c:2928 sequencer.c:2972
+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"
 
-#: setup.c:704
+#: sequencer.c:2958 builtin/grep.c:757
 #, c-format
-msgid "error reading %s"
-msgstr "gặp lỗi khi đọc %s"
+msgid "cannot open '%s'"
+msgstr "không mở được “%s”"
 
-#: setup.c:706
+#: sequencer.c:2960
 #, c-format
-msgid "invalid gitfile format: %s"
-msgstr "định dạng tập tin git không hợp lệ: %s"
+msgid "cannot read '%s': %s"
+msgstr "không thể đọc “%s”: %s"
 
-#: setup.c:708
-#, c-format
-msgid "no path in gitfile: %s"
-msgstr "không có đường dẫn trong tập tin git: %s"
+#: sequencer.c:2961
+msgid "unexpected end of file"
+msgstr "gặp kết thúc tập tin đột xuất"
 
-#: setup.c:710
+#: sequencer.c:2967
 #, c-format
-msgid "not a git repository: %s"
-msgstr "không phải là kho git: %s"
+msgid "stored pre-cherry-pick HEAD file '%s' is corrupt"
+msgstr "tập tin HEAD “pre-cherry-pick” đã lưu “%s” bị hỏng"
 
-#: setup.c:812
-#, c-format
-msgid "'$%s' too big"
-msgstr "“$%s” quá lớn"
+#: sequencer.c:2978
+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!"
 
-#: setup.c:826
+#: sequencer.c:3019
+msgid "no revert in progress"
+msgstr "không có tiến trình hoàn nguyên nào"
+
+#: sequencer.c:3028
+msgid "no cherry-pick in progress"
+msgstr "không có cherry-pick đang được thực hiện"
+
+#: sequencer.c:3038
+msgid "failed to skip the commit"
+msgstr "gặp lỗi khi bỏ qua đối tượng chuyển giao"
+
+#: sequencer.c:3045
+msgid "there is nothing to skip"
+msgstr "ở đây không có gì để mà bỏ qua cả"
+
+#: sequencer.c:3048
 #, c-format
-msgid "not a git repository: '%s'"
-msgstr "không phải là kho git: “%s”"
+msgid ""
+"have you committed already?\n"
+"try \"git %s --continue\""
+msgstr ""
+"bạn đã sẵn sàng chuyển giao chưa?\n"
+"thử \"git %s --continue\""
 
-#: setup.c:855 setup.c:857 setup.c:888
+#: sequencer.c:3210 sequencer.c:4271
+msgid "cannot read HEAD"
+msgstr "không thể đọc HEAD"
+
+#: sequencer.c:3227
 #, c-format
-msgid "cannot chdir to '%s'"
-msgstr "không thể chdir (chuyển đổi thư mục) sang “%s”"
+msgid "unable to copy '%s' to '%s'"
+msgstr "không thể chép “%s” sang “%s”"
 
-#: setup.c:860 setup.c:916 setup.c:926 setup.c:965 setup.c:973
-msgid "cannot come back to cwd"
-msgstr "không thể quay lại cwd"
+#: sequencer.c:3235
+#, c-format
+msgid ""
+"You can amend the commit now, with\n"
+"\n"
+"  git commit --amend %s\n"
+"\n"
+"Once you are satisfied with your changes, run\n"
+"\n"
+"  git rebase --continue\n"
+msgstr ""
+"Bạn có thể tu bổ lần chuyển giao ngay bây giờ bằng:\n"
+"\n"
+"  git commit --amend %s\n"
+"\n"
+"Một khi đã hài lòng với những thay đổi của mình, thì chạy:\n"
+"\n"
+"  git rebase --continue\n"
 
-#: setup.c:987
+#: sequencer.c:3245
 #, c-format
-msgid "failed to stat '%*s%s%s'"
-msgstr "gặp lỗi khi lấy thống kê về “%*s%s%s”"
+msgid "Could not apply %s... %.*s"
+msgstr "Không thể áp dụng %s… %.*s"
 
-#: setup.c:1225
-msgid "Unable to read current working directory"
-msgstr "Không thể đọc thư mục làm việc hiện hành"
+#: sequencer.c:3252
+#, c-format
+msgid "Could not merge %.*s"
+msgstr "Không hòa trộn %.*s"
 
-#: setup.c:1234 setup.c:1240
+#: sequencer.c:3266 sequencer.c:3270 builtin/difftool.c:640
 #, c-format
-msgid "cannot change to '%s'"
-msgstr "không thể chuyển sang “%s”"
+msgid "could not copy '%s' to '%s'"
+msgstr "không thể chép “%s” sang “%s”"
 
-#: setup.c:1245
+#: sequencer.c:3282
 #, 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"
+msgid "Executing: %s\n"
+msgstr "Đang thực thi: %s\n"
 
-#: setup.c:1251
+#: sequencer.c:3297
 #, 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)."
+"execution failed: %s\n"
+"%sYou can fix the problem, and then run\n"
+"\n"
+"  git rebase --continue\n"
+"\n"
 msgstr ""
-"không phải là kho git (hay bất kỳ cha mẹ nào đến tận điểm gắn kết %s)\n"
-"Dừng tại biên của hệ thống tập tin (GIT_DISCOVERY_ACROSS_FILESYSTEM chưa "
-"đặt)."
+"thực thi gặp lỗi: %s\n"
+"%sBạn có thể sửa các trục trặc, và sau đó chạy lệnh\n"
+"\n"
+"  git rebase --continue\n"
+"\n"
 
-#: setup.c:1362
+#: sequencer.c:3303
+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:3309
 #, c-format
 msgid ""
-"problem with core.sharedRepository filemode value (0%.3o).\n"
-"The owner of files must always have read and write permissions."
+"execution succeeded: %s\n"
+"but left changes to the index and/or the working tree\n"
+"Commit or stash your changes, and then run\n"
+"\n"
+"  git rebase --continue\n"
+"\n"
 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."
+"thực thi thành công: %s\n"
+"nhưng còn các thay đổi trong mục lục và/hoặc cây làm việc\n"
+"Chuyển giao hay tạm cất các thay đổi này đi, rồi chạy\n"
+"\n"
+"  git rebase --continue\n"
+"\n"
 
-#: setup.c:1409
-msgid "open /dev/null or dup failed"
-msgstr "gặp lỗi khi mở “/dev/null” hay dup"
+#: sequencer.c:3370
+#, c-format
+msgid "illegal label name: '%.*s'"
+msgstr "tên nhãn dị hình: “%.*s”"
 
-#: setup.c:1424
-msgid "fork failed"
-msgstr "gặp lỗi khi rẽ nhánh tiến trình"
+#: sequencer.c:3424
+msgid "writing fake root commit"
+msgstr "ghi lần chuyển giao gốc giả"
 
-#: setup.c:1429
-msgid "setsid failed"
-msgstr "setsid gặp lỗi"
+#: sequencer.c:3429
+msgid "writing squash-onto"
+msgstr "đang ghi squash-onto"
 
-#: sha1-file.c:480
+#: sequencer.c:3513
 #, c-format
-msgid "object directory %s does not exist; check .git/objects/info/alternates"
-msgstr ""
-"thư mục đối tượng %s không tồn tại; kiểm tra .git/objects/info/alternates"
+msgid "could not resolve '%s'"
+msgstr "không thể phân giải “%s”"
+
+#: sequencer.c:3546
+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"
 
-#: sha1-file.c:531
+#: sequencer.c:3568
 #, c-format
-msgid "unable to normalize alternate object path: %s"
-msgstr "không thể thường hóa đường dẫn đối tượng thay thế: “%s”"
+msgid "unable to parse '%.*s'"
+msgstr "không thể phân tích “%.*s”"
 
-#: sha1-file.c:603
+#: sequencer.c:3577
 #, c-format
-msgid "%s: ignoring alternate object stores, nesting too deep"
-msgstr "%s: đang bỏ qua kho đối tượng thay thế, lồng nhau quá sâu"
+msgid "nothing to merge: '%.*s'"
+msgstr "chẳng có gì để hòa trộn: “%.*s”"
+
+#: sequencer.c:3589
+msgid "octopus merge cannot be executed on top of a [new root]"
+msgstr "hòa trộn octopus không thể được thực thi trên đỉnh của một [new root]"
 
-#: sha1-file.c:610
+#: sequencer.c:3605
 #, c-format
-msgid "unable to normalize object directory: %s"
-msgstr "không thể chuẩn hóa thư mục đối tượng: “%s”"
+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”"
 
-#: sha1-file.c:653
-msgid "unable to fdopen alternates lockfile"
-msgstr "không thể fdopen tập tin khóa thay thế"
+#: sequencer.c:3788
+#, c-format
+msgid "could not even attempt to merge '%.*s'"
+msgstr "không thể ngay cả khi thử hòa trộn “%.*s”"
 
-#: sha1-file.c:671
-msgid "unable to read alternates file"
-msgstr "không thể đọc tập tin thay thế"
+#: sequencer.c:3804
+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"
 
-#: sha1-file.c:678
-msgid "unable to move new alternates file into place"
-msgstr "không thể di chuyển tập tin thay thế vào chỗ"
+#: sequencer.c:3878
+msgid "Cannot autostash"
+msgstr "Không thể autostash"
 
-#: sha1-file.c:713
+#: sequencer.c:3881
 #, c-format
-msgid "path '%s' does not exist"
-msgstr "đường dẫn “%s” không tồn tại"
+msgid "Unexpected stash response: '%s'"
+msgstr "Gặp đáp ứng stash không cần: “%s”"
 
-#: sha1-file.c:734
+#: sequencer.c:3887
 #, 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ợ."
+msgid "Could not create directory for '%s'"
+msgstr "Không thể tạo thư mục cho “%s”"
 
-#: sha1-file.c:740
+#: sequencer.c:3890
 #, 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ộ."
+msgid "Created autostash: %s\n"
+msgstr "Đã tạo autostash: %s\n"
 
-#: sha1-file.c:746
-#, c-format
-msgid "reference repository '%s' is shallow"
-msgstr "kho tham chiếu “%s” là nông"
+#: sequencer.c:3894
+msgid "could not reset --hard"
+msgstr "không thể reset --hard"
 
-#: sha1-file.c:754
+#: sequencer.c:3919
 #, c-format
-msgid "reference repository '%s' is grafted"
-msgstr "kho tham chiếu “%s” bị cấy ghép"
+msgid "Applied autostash.\n"
+msgstr "Đã áp dụng autostash.\n"
 
-#: sha1-file.c:814
+#: sequencer.c:3931
 #, c-format
-msgid "invalid line while parsing alternate refs: %s"
-msgstr "dòng không hợp lệ trong khi phân tích các tham chiếu thay thế: %s"
+msgid "cannot store %s"
+msgstr "không thử lưu “%s”"
 
-#: sha1-file.c:964
+#: sequencer.c:3934
 #, c-format
-msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
-msgstr "đang cố để mmap %<PRIuMAX> vượt quá giới hạn %<PRIuMAX>"
+msgid ""
+"%s\n"
+"Your changes are safe in the stash.\n"
+"You can run \"git stash pop\" or \"git stash drop\" at any time.\n"
+msgstr ""
+"%s\n"
+"Các thay đổi của bạn an toàn trong stash (tạm cất đi).\n"
+"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:3939
+msgid "Applying autostash resulted in conflicts."
+msgstr "Áp dụng autostash có hiệu quả trong các xung đột."
 
-#: sha1-file.c:985
-msgid "mmap failed"
-msgstr "mmap gặp lỗi"
+#: sequencer.c:3940
+msgid "Autostash exists; creating a new stash entry."
+msgstr "Autostash đã sẵn có; nên tạo một mục stash mới."
 
-#: sha1-file.c:1149
-#, c-format
-msgid "object file %s is empty"
-msgstr "tập tin đối tượng %s trống rỗng"
+#: sequencer.c:4033 git-rebase--preserve-merges.sh:769
+msgid "could not detach HEAD"
+msgstr "không thể tách rời HEAD"
 
-#: sha1-file.c:1284 sha1-file.c:2477
+#: sequencer.c:4048
 #, c-format
-msgid "corrupt loose object '%s'"
-msgstr "đối tượng mất hỏng “%s”"
+msgid "Stopped at HEAD\n"
+msgstr "Dừng lại ở HEAD\n"
 
-#: sha1-file.c:1286 sha1-file.c:2481
+#: sequencer.c:4050
 #, c-format
-msgid "garbage at end of loose object '%s'"
-msgstr "gặp rác tại cuối của đối tượng bị mất “%s”"
-
-#: sha1-file.c:1328
-msgid "invalid object type"
-msgstr "kiểu đối tượng không hợp lệ"
+msgid "Stopped at %s\n"
+msgstr "Dừng lại ở %s\n"
 
-#: sha1-file.c:1412
+#: sequencer.c:4058
 #, c-format
-msgid "unable to unpack %s header with --allow-unknown-type"
-msgstr "không thể giải nén phần đầu gói %s với --allow-unknown-type"
+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ên 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"
 
-#: sha1-file.c:1415
+#: sequencer.c:4104
 #, c-format
-msgid "unable to unpack %s header"
-msgstr "không thể giải gói phần đầu %s"
+msgid "Rebasing (%d/%d)%s"
+msgstr "Đang cải tổ (%d/%d)%s"
 
-#: sha1-file.c:1421
+#: sequencer.c:4149
 #, c-format
-msgid "unable to parse %s header with --allow-unknown-type"
-msgstr "không thể phân tích phần đầu gói %s với --allow-unknown-type"
+msgid "Stopped at %s...  %.*s\n"
+msgstr "Dừng lại ở %s…  %.*s\n"
 
-#: sha1-file.c:1424
+#: sequencer.c:4220
 #, c-format
-msgid "unable to parse %s header"
-msgstr "không thể phân tích phần đầu của “%s”"
+msgid "unknown command %d"
+msgstr "không hiểu câu lệnh %d"
 
-#: sha1-file.c:1651
-#, c-format
-msgid "failed to read object %s"
-msgstr "gặp lỗi khi đọc đối tượng “%s”"
+#: sequencer.c:4279
+msgid "could not read orig-head"
+msgstr "không thể đọc orig-head"
 
-#: sha1-file.c:1655
-#, c-format
-msgid "replacement %s not found for %s"
-msgstr "c%s thay thế không được tìm thấy cho %s"
+#: sequencer.c:4284
+msgid "could not read 'onto'"
+msgstr "không thể đọc “onto”."
 
-#: sha1-file.c:1659
+#: sequencer.c:4298
 #, c-format
-msgid "loose object %s (stored in %s) is corrupt"
-msgstr "đối tượng mất %s (được lưu trong %s) bị hỏng"
+msgid "could not update HEAD to %s"
+msgstr "không thể cập nhật HEAD thành %s"
 
-#: sha1-file.c:1663
+#: sequencer.c:4358
 #, c-format
-msgid "packed object %s (stored in %s) is corrupt"
-msgstr "đối tượng đã đóng gói %s (được lưu trong %s) bị hỏng"
+msgid "Successfully rebased and updated %s.\n"
+msgstr "Cài tổ và cập nhật %s một cách thành công.\n"
 
-#: sha1-file.c:1768
-#, c-format
-msgid "unable to write file %s"
-msgstr "không thể ghi tập tin %s"
+#: sequencer.c:4391
+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:4400
+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"
 
-#: sha1-file.c:1775
+#: sequencer.c:4402
 #, c-format
-msgid "unable to set permission to '%s'"
-msgstr "không thể đặt quyền thành “%s”"
+msgid "invalid file: '%s'"
+msgstr "tập tin không hợp lệ: “%s”"
 
-#: sha1-file.c:1782
-msgid "file write error"
-msgstr "lỗi ghi tập tin"
+#: sequencer.c:4404
+#, c-format
+msgid "invalid contents: '%s'"
+msgstr "nội dung không hợp lệ: “%s”"
 
-#: sha1-file.c:1802
-msgid "error when closing loose object file"
-msgstr "gặp lỗi trong khi đóng tập tin đối tượng"
+#: sequencer.c:4407
+msgid ""
+"\n"
+"You have uncommitted changes in your working tree. Please, commit them\n"
+"first and then run 'git rebase --continue' again."
+msgstr ""
+"\n"
+"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."
 
-#: sha1-file.c:1867
+#: sequencer.c:4443 sequencer.c:4482
 #, c-format
-msgid "insufficient permission for adding an object to repository database %s"
-msgstr ""
-"không đủ thẩm quyền để thêm một đối tượng vào cơ sở dữ liệu kho chứa %s"
+msgid "could not write file: '%s'"
+msgstr "không thể ghi tập tin: “%s”"
 
-#: sha1-file.c:1869
-msgid "unable to create temporary file"
-msgstr "không thể tạo tập tin tạm thời"
+#: sequencer.c:4498
+msgid "could not remove CHERRY_PICK_HEAD"
+msgstr "không thể xóa bỏ CHERRY_PICK_HEAD"
 
-#: sha1-file.c:1893
-msgid "unable to write loose object file"
-msgstr "không thể ghi tập tin đối tượng đã mất"
+#: sequencer.c:4505
+msgid "could not commit staged changes."
+msgstr "không thể chuyển giao các thay đổi đã đưa lên bệ phóng."
 
-#: sha1-file.c:1899
+#: sequencer.c:4621
 #, c-format
-msgid "unable to deflate new object %s (%d)"
-msgstr "không thể xả nén đối tượng mới %s (%d)"
+msgid "%s: can't cherry-pick a %s"
+msgstr "%s: không thể cherry-pick một %s"
 
-#: sha1-file.c:1903
+#: sequencer.c:4625
 #, c-format
-msgid "deflateEnd on object %s failed (%d)"
-msgstr "deflateEnd trên đối tượng %s gặp lỗi (%d)"
+msgid "%s: bad revision"
+msgstr "%s: điểm xét duyệt sai"
 
-#: sha1-file.c:1907
-#, c-format
-msgid "confused by unstable object source data for %s"
-msgstr "chưa rõ ràng baowir dữ liệu nguồn đối tượng không ổn định cho %s"
+#: sequencer.c:4660
+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"
 
-#: sha1-file.c:1917 builtin/pack-objects.c:1086
-#, c-format
-msgid "failed utime() on %s"
-msgstr "gặp lỗi utime() trên “%s”"
+#: sequencer.c:5137
+msgid "make_script: unhandled options"
+msgstr "make_script: các tùy chọn được không xử lý"
 
-#: sha1-file.c:1994
-#, c-format
-msgid "cannot read object for %s"
-msgstr "không thể đọc đối tượng cho %s"
+#: sequencer.c:5140
+msgid "make_script: error preparing revisions"
+msgstr "make_script: lỗi chuẩn bị điểm hiệu chỉnh"
 
-#: sha1-file.c:2045
-msgid "corrupt commit"
-msgstr "lần chuyển giao sai hỏng"
+#: sequencer.c:5382 sequencer.c:5399
+msgid "nothing to do"
+msgstr "không có gì để làm"
 
-#: sha1-file.c:2053
-msgid "corrupt tag"
-msgstr "thẻ sai hỏng"
+#: sequencer.c:5418
+msgid "could not skip unnecessary pick commands"
+msgstr "không thể bỏ qua các lệnh cậy (pick) không cần thiết"
 
-#: sha1-file.c:2153
-#, c-format
-msgid "read error while indexing %s"
-msgstr "gặp lỗi đọc khi đánh mục lục %s"
+#: sequencer.c:5512
+msgid "the script was already rearranged."
+msgstr "văn lệnh đã sẵn được sắp đặt rồi."
 
-#: sha1-file.c:2156
+#: setup.c:133
 #, c-format
-msgid "short read while indexing %s"
-msgstr "không đọc ngắn khi đánh mục lục %s"
+msgid "'%s' is outside repository at '%s'"
+msgstr "“%s” ngoài một kho chứa tại “%s”"
 
-#: sha1-file.c:2229 sha1-file.c:2239
+#: setup.c:185
 #, c-format
-msgid "%s: failed to insert into database"
-msgstr "%s: gặp lỗi khi thêm vào cơ sở dữ liệu"
+msgid ""
+"%s: no such path in the working tree.\n"
+"Use 'git <command> -- <path>...' to specify paths that do not exist locally."
+msgstr ""
+"%s: không có đường dẫn nào như thế ở trong cây làm việc.\n"
+"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ộ."
 
-#: sha1-file.c:2245
+#: setup.c:198
 #, c-format
-msgid "%s: unsupported file type"
-msgstr "%s: kiểu tập tin không được hỗ trợ"
+msgid ""
+"ambiguous argument '%s': unknown revision or path not in the working tree.\n"
+"Use '--' to separate paths from revisions, like this:\n"
+"'git <command> [<revision>...] -- [<file>...]'"
+msgstr ""
+"tham số chưa rõ ràng “%s”: chưa biết điểm xem xét hay đường dẫn không trong "
+"cây làm việc.\n"
+"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>…]”"
 
-#: sha1-file.c:2269
+#: setup.c:264
 #, c-format
-msgid "%s is not a valid object"
-msgstr "%s không phải là một đối tượng hợp lệ"
+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"
 
-#: sha1-file.c:2271
+#: setup.c:283
 #, c-format
-msgid "%s is not a valid '%s' object"
-msgstr "%s không phải là một đối tượng “%s” hợp lệ"
+msgid ""
+"ambiguous argument '%s': both revision and filename\n"
+"Use '--' to separate paths from revisions, like this:\n"
+"'git <command> [<revision>...] -- [<file>...]'"
+msgstr ""
+"tham số chưa rõ ràng “%s”: cả điểm xem xét và tên tập tin.\n"
+"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>…]”"
 
-#: sha1-file.c:2298 builtin/index-pack.c:192
-#, c-format
-msgid "unable to open %s"
-msgstr "không thể mở %s"
+#: setup.c:419
+msgid "unable to set up work tree using invalid config"
+msgstr "không thể cài đặt thư mục làm việc sử dụng cấu hình không hợp lệ"
 
-#: sha1-file.c:2488 sha1-file.c:2541
-#, c-format
-msgid "hash mismatch for %s (expected %s)"
-msgstr "mã băm không khớp cho %s (cần %s)"
+#: setup.c:423
+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"
 
-#: sha1-file.c:2512
+#: setup.c:661
 #, c-format
-msgid "unable to mmap %s"
-msgstr "không thể mmap %s"
+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"
 
-#: sha1-file.c:2517
-#, c-format
-msgid "unable to unpack header of %s"
-msgstr "không thể giải gói phần đầu của “%s”"
+#: setup.c:669
+msgid "unknown repository extensions found:"
+msgstr "tìm thấy phần mở rộng kho chưa biết:"
 
-#: sha1-file.c:2523
-#, c-format
-msgid "unable to parse header of %s"
-msgstr "không thể phân tích phần đầu của “%s”"
+#: setup.c:681
+msgid "repo version is 0, but v1-only extensions found:"
+msgstr "phiên bản kho là 0, nhưng lại tìm thấy phần mở rộng chỉ v1:"
 
-#: sha1-file.c:2534
+#: setup.c:700
 #, c-format
-msgid "unable to unpack contents of %s"
-msgstr "không thể giải gói nội dung của “%s”"
+msgid "error opening '%s'"
+msgstr "gặp lỗi khi mở “%s”"
 
-#: sha1-name.c:486
+#: setup.c:702
 #, c-format
-msgid "short SHA1 %s is ambiguous"
-msgstr "tóm lược SHA1 %s chưa rõ ràng"
-
-#: sha1-name.c:497
-msgid "The candidates are:"
-msgstr "Các ứng cử là:"
+msgid "too large to be a .git file: '%s'"
+msgstr "tập tin .git là quá lớn: “%s”"
 
-#: sha1-name.c:796
-msgid ""
-"Git normally never creates a ref that ends with 40 hex characters\n"
-"because it will be ignored when you just specify 40-hex. These refs\n"
-"may be created by mistake. For example,\n"
-"\n"
-"  git switch -c $br $(git rev-parse ...)\n"
-"\n"
-"where \"$br\" is somehow empty and a 40-hex ref is created. Please\n"
-"examine these refs and maybe delete them. Turn this message off by\n"
-"running \"git config advice.objectNameWarning false\""
-msgstr ""
-"Git thường không bao giờ tạo tham chiếu mà nó kết thúc với 40 ký tự hex\n"
-"bởi vì nó sẽ bị bỏ qua khi bạn chỉ định 40-hex. Những tham chiếu này\n"
-"có lẽ được tạo ra bởi một sai sót nào đó. Ví dụ,\n"
-"\n"
-"  git switch -c $br $(git rev-parse …)\n"
-"\n"
-"với \"$br\" không hiểu lý do vì sao trống rỗng và một tham chiếu 40-hex được "
-"tạo ra.\n"
-"Xin hãy kiểm tra những tham chiếu này và có thể xóa chúng đi. Tắt lời nhắn "
-"này\n"
-"bằng cách chạy lệnh \"git config advice.objectNameWarning false\""
+#: setup.c:704
+#, c-format
+msgid "error reading %s"
+msgstr "gặp lỗi khi đọc %s"
 
-#: sha1-name.c:916
+#: setup.c:706
 #, c-format
-msgid "log for '%.*s' only goes back to %s"
-msgstr "nhật ký cho “%.*s” chỉ trở lại đến %s"
+msgid "invalid gitfile format: %s"
+msgstr "định dạng tập tin git không hợp lệ: %s"
 
-#: sha1-name.c:924
+#: setup.c:708
 #, c-format
-msgid "log for '%.*s' only has %d entries"
-msgstr "nhật ký cho “%.*s” chỉ có %d mục"
+msgid "no path in gitfile: %s"
+msgstr "không có đường dẫn trong tập tin git: %s"
 
-#: sha1-name.c:1702
+#: setup.c:710
 #, c-format
-msgid "path '%s' exists on disk, but not in '%.*s'"
-msgstr "đường dẫn “%s” có ở trên đĩa, nhưng không trong “%.*s”"
+msgid "not a git repository: %s"
+msgstr "không phải là kho git: %s"
 
-#: sha1-name.c:1708
+#: setup.c:812
 #, c-format
-msgid ""
-"path '%s' exists, but not '%s'\n"
-"hint: Did you mean '%.*s:%s' aka '%.*s:./%s'?"
-msgstr ""
-"đường dẫn “%s” tồn tại, nhưng không phải “%s”\n"
-"gợi ý: Có phải ý bạn là “%.*s:%s” aka “%.*s:./%s”?"
+msgid "'$%s' too big"
+msgstr "“$%s” quá lớn"
 
-#: sha1-name.c:1717
+#: setup.c:826
 #, c-format
-msgid "path '%s' does not exist in '%.*s'"
-msgstr "đường dẫn “%s” không tồn tại trong “%.*s”"
+msgid "not a git repository: '%s'"
+msgstr "không phải là kho git: “%s”"
 
-#: sha1-name.c:1745
+#: setup.c:855 setup.c:857 setup.c:888
 #, c-format
-msgid ""
-"path '%s' is in the index, but not at stage %d\n"
-"hint: Did you mean ':%d:%s'?"
-msgstr ""
-"đường dẫn “%s” nằm trong chỉ mục, nhưng không phải ở giai đoạn %d\n"
-"gợi ý: Có phải ý bạn là “:%d:%s”?"
+msgid "cannot chdir to '%s'"
+msgstr "không thể chdir (chuyển đổi thư mục) sang “%s”"
+
+#: setup.c:860 setup.c:916 setup.c:926 setup.c:965 setup.c:973
+msgid "cannot come back to cwd"
+msgstr "không thể quay lại cwd"
 
-#: sha1-name.c:1761
+#: setup.c:987
 #, c-format
-msgid ""
-"path '%s' is in the index, but not '%s'\n"
-"hint: Did you mean ':%d:%s' aka ':%d:./%s'?"
-msgstr ""
-"đường dẫn “%s” nằm trong chỉ mục, nhưng không phải “%s”\n"
-"gợi ý: Có phải ý bạn là “:% d:%s “ aka “:%d:./%s”?"
+msgid "failed to stat '%*s%s%s'"
+msgstr "gặp lỗi khi lấy thống kê về “%*s%s%s”"
+
+#: setup.c:1225
+msgid "Unable to read current working directory"
+msgstr "Không thể đọc thư mục làm việc hiện hành"
 
-#: sha1-name.c:1769
+#: setup.c:1234 setup.c:1240
 #, c-format
-msgid "path '%s' exists on disk, but not in the index"
-msgstr "đường dẫn “%s” tồn tại trên đĩa, nhưng không có trong chỉ mục"
+msgid "cannot change to '%s'"
+msgstr "không thể chuyển sang “%s”"
 
-#: sha1-name.c:1771
+#: setup.c:1245
 #, c-format
-msgid "path '%s' does not exist (neither on disk nor in the index)"
-msgstr "đường dẫn “%s” không tồn tại (không trên đĩa cũng không trong mục lục)"
+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"
 
-#: sha1-name.c:1784
-msgid "relative path syntax can't be used outside working tree"
-msgstr "cú pháp đường dẫn tương đối không thể thể dùng ngoài cây làm việc"
+#: setup.c:1251
+#, 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 ""
+"không phải là kho git (hay bất kỳ cha mẹ nào đến tận điểm gắn kết %s)\n"
+"Dừng tại biên của hệ thống tập tin (GIT_DISCOVERY_ACROSS_FILESYSTEM chưa "
+"đặt)."
 
-#: sha1-name.c:1922
+#: setup.c:1362
 #, c-format
-msgid "invalid object name '%.*s'."
-msgstr "“%.*s” không phải là tên đối tượng hợp lệ."
+msgid ""
+"problem with core.sharedRepository filemode value (0%.3o).\n"
+"The owner of files must always have read and write permissions."
+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:1409
+msgid "open /dev/null or dup failed"
+msgstr "gặp lỗi khi mở “/dev/null” hay dup"
+
+#: setup.c:1424
+msgid "fork failed"
+msgstr "gặp lỗi khi rẽ nhánh tiến trình"
+
+#: setup.c:1429
+msgid "setsid failed"
+msgstr "setsid gặp lỗi"
 
 #. TRANSLATORS: IEC 80000-13:2008 gibibyte
 #: strbuf.c:848
@@ -8200,7 +8456,7 @@ msgid_plural "%u bytes/s"
 msgstr[0] "%u byte/giây"
 
 #: strbuf.c:1166 wrapper.c:199 wrapper.c:369 builtin/am.c:719
-#: builtin/rebase.c:864
+#: builtin/rebase.c:866
 #, c-format
 msgid "could not open '%s' for writing"
 msgstr "không thể mở “%s” để ghi"
@@ -8266,12 +8522,12 @@ msgstr "trong mô-đun-con không có gì “%s”"
 msgid "Pathspec '%s' is in submodule '%.*s'"
 msgstr "Đặc tả đường dẫn “%s” thì ở trong mô-đun-con “%.*s”"
 
-#: submodule.c:434
+#: submodule.c:435
 #, c-format
 msgid "bad --ignore-submodules argument: %s"
 msgstr "đối số --ignore-submodules sai: %s"
 
-#: submodule.c:816
+#: submodule.c:817
 #, c-format
 msgid ""
 "Submodule in commit %s at path: '%s' collides with a submodule named the "
@@ -8280,13 +8536,13 @@ msgstr ""
 "Mô-đun-con trong lần chuyển giao %s tại đường dẫn: “%s” va chạm với mô-đun-"
 "con cùng tên. Nên bỏ qua nó."
 
-#: submodule.c:919
+#: submodule.c:920
 #, 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:1004
+#: submodule.c:1005
 #, c-format
 msgid ""
 "Could not run 'git rev-list <commits> --not --remotes -n 1' command in "
@@ -8295,36 +8551,36 @@ msgstr ""
 "Không thể chạy lệnh “git rev-list <các lần chuyển giao> --not --remotes -n "
 "1” trong mô-đun-con “%s”"
 
-#: submodule.c:1127
+#: submodule.c:1128
 #, c-format
 msgid "process for submodule '%s' failed"
 msgstr "xử lý cho mô-đun-con “%s” gặp lỗi"
 
-#: submodule.c:1156 builtin/branch.c:680 builtin/submodule--helper.c:2469
+#: submodule.c:1157 builtin/branch.c:689 builtin/submodule--helper.c:2469
 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:1167
+#: submodule.c:1168
 #, c-format
 msgid "Pushing submodule '%s'\n"
 msgstr "Đẩy lên mô-đun-con “%s”\n"
 
-#: submodule.c:1170
+#: submodule.c:1171
 #, c-format
 msgid "Unable to push submodule '%s'\n"
 msgstr "Không thể đẩy lên mô-đun-con “%s”\n"
 
-#: submodule.c:1462
+#: submodule.c:1463
 #, c-format
 msgid "Fetching submodule %s%s\n"
 msgstr "Đang lấy về mô-đun-con %s%s\n"
 
-#: submodule.c:1492
+#: submodule.c:1497
 #, c-format
 msgid "Could not access submodule '%s'\n"
 msgstr "Không thể truy cập mô-đun-con “%s”\n"
 
-#: submodule.c:1646
+#: submodule.c:1652
 #, c-format
 msgid ""
 "Errors during submodule fetch:\n"
@@ -8333,61 +8589,61 @@ msgstr ""
 "Có lỗi khi lấy về mô-đun-con:\n"
 " “%s”"
 
-#: submodule.c:1671
+#: submodule.c:1677
 #, c-format
 msgid "'%s' not recognized as a git repository"
 msgstr "không nhận ra “%s” là một kho git"
 
-#: submodule.c:1688
+#: submodule.c:1694
 #, c-format
 msgid "Could not run 'git status --porcelain=2' in submodule %s"
 msgstr "Không thể chạy “git status --porcelain=2” trong mô-đun-con “%s”"
 
-#: submodule.c:1729
+#: submodule.c:1735
 #, c-format
 msgid "'git status --porcelain=2' failed in submodule %s"
 msgstr "“git status --porcelain=2” gặp lỗi trong mô-đun-con “%s”"
 
-#: submodule.c:1804
+#: submodule.c:1810
 #, 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:1817
+#: submodule.c:1823
 #, 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:1832
+#: submodule.c:1838
 #, c-format
 msgid "Could not unset core.worktree setting in submodule '%s'"
 msgstr "Không thể đặt core.worktree trong mô-đun-con “%s”"
 
-#: submodule.c:1859 submodule.c:2169
+#: submodule.c:1865 submodule.c:2175
 #, c-format
 msgid "could not recurse into submodule '%s'"
 msgstr "không thể đệ quy vào trong mô-đun-con “%s”"
 
-#: submodule.c:1880
+#: submodule.c:1886
 msgid "could not reset submodule index"
 msgstr "không thể đặt lại mục lục của mô-đun-con"
 
-#: submodule.c:1922
+#: submodule.c:1928
 #, c-format
 msgid "submodule '%s' has dirty index"
 msgstr "mô-đun-con “%s” có mục lục còn bẩn"
 
-#: submodule.c:1974
+#: submodule.c:1980
 #, c-format
 msgid "Submodule '%s' could not be updated."
 msgstr "Mô-đun-con “%s” không thể được cập nhật."
 
-#: submodule.c:2042
+#: submodule.c:2048
 #, c-format
 msgid "submodule git dir '%s' is inside git dir '%.*s'"
 msgstr "thư mục git mô đun con “%s” là bên trong git DIR “%.*s”"
 
-#: submodule.c:2063
+#: submodule.c:2069
 #, c-format
 msgid ""
 "relocate_gitdir for submodule '%s' with more than one worktree not supported"
@@ -8395,17 +8651,17 @@ 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:2075 submodule.c:2134
+#: submodule.c:2081 submodule.c:2140
 #, 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:2079
+#: submodule.c:2085
 #, c-format
 msgid "refusing to move '%s' into an existing git dir"
 msgstr "từ chối di chuyển “%s” vào trong một thư mục git sẵn có"
 
-#: submodule.c:2086
+#: submodule.c:2092
 #, c-format
 msgid ""
 "Migrating git directory of '%s%s' from\n"
@@ -8416,11 +8672,11 @@ msgstr ""
 "“%s” sang\n"
 "“%s”\n"
 
-#: submodule.c:2214
+#: submodule.c:2220
 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:2254
+#: submodule.c:2260
 #, c-format
 msgid "ls-tree returned unexpected return code %d"
 msgstr "ls-tree trả về mã không như mong đợi %d"
@@ -8451,7 +8707,7 @@ msgstr "thẻ thừa trống rỗng trong phần thừa “%.*s”"
 msgid "could not read input file '%s'"
 msgstr "không đọc được tập tin đầu vào “%s”"
 
-#: trailer.c:751
+#: trailer.c:751 builtin/mktag.c:91
 msgid "could not read from stdin"
 msgstr "không thể đọc từ đầu vào tiêu chuẩn"
 
@@ -8523,7 +8779,7 @@ msgstr "không thể chạy fast-import"
 msgid "error while running fast-import"
 msgstr "gặp lỗi trong khi chạy fast-import"
 
-#: transport-helper.c:549 transport-helper.c:1236
+#: transport-helper.c:549 transport-helper.c:1237
 #, c-format
 msgid "could not read ref %s"
 msgstr "không thể đọc tham chiếu %s"
@@ -8541,7 +8797,7 @@ msgstr "giao thức này không hỗ trợ cài đặt đường dẫn dịch v
 msgid "invalid remote service path"
 msgstr "đường dẫn dịch vụ máy chủ không hợp lệ"
 
-#: transport-helper.c:661 transport.c:1446
+#: transport-helper.c:661 transport.c:1447
 msgid "operation not supported by protocol"
 msgstr "thao tác không được gia thức hỗ trợ"
 
@@ -8621,52 +8877,52 @@ msgstr ""
 "cả.\n"
 "Tuy nhiên bạn nên chỉ định một nhánh.\n"
 
-#: transport-helper.c:1213
+#: transport-helper.c:1214
 #, c-format
 msgid "unsupported object format '%s'"
 msgstr "không hỗ trợ định dạng đối tượng “%s”"
 
-#: transport-helper.c:1222
+#: transport-helper.c:1223
 #, c-format
 msgid "malformed response in ref list: %s"
 msgstr "đáp ứng sai dạng trong danh sách tham chiếu: %s"
 
-#: transport-helper.c:1374
+#: transport-helper.c:1375
 #, c-format
 msgid "read(%s) failed"
 msgstr "read(%s) gặp lỗi"
 
-#: transport-helper.c:1401
+#: transport-helper.c:1402
 #, c-format
 msgid "write(%s) failed"
 msgstr "write(%s) gặp lỗi"
 
-#: transport-helper.c:1450
+#: transport-helper.c:1451
 #, c-format
 msgid "%s thread failed"
 msgstr "tuyến trình %s gặp lỗi"
 
-#: transport-helper.c:1454
+#: transport-helper.c:1455
 #, c-format
 msgid "%s thread failed to join: %s"
 msgstr "tuyến trình %s gặp lỗi khi gia nhập: %s"
 
-#: transport-helper.c:1473 transport-helper.c:1477
+#: transport-helper.c:1474 transport-helper.c:1478
 #, c-format
 msgid "can't start thread for copying data: %s"
 msgstr "không thể khởi chạy tuyến trình để sao chép dữ liệu: %s"
 
-#: transport-helper.c:1514
+#: transport-helper.c:1515
 #, c-format
 msgid "%s process failed to wait"
 msgstr "xử lý %s gặp lỗi khi đợi"
 
-#: transport-helper.c:1518
+#: transport-helper.c:1519
 #, c-format
 msgid "%s process failed"
 msgstr "xử lý %s gặp lỗi"
 
-#: transport-helper.c:1536 transport-helper.c:1545
+#: transport-helper.c:1537 transport-helper.c:1546
 msgid "can't start thread for copying data"
 msgstr "không thể khởi chạy tuyến trình cho việc chép dữ liệu"
 
@@ -8755,23 +9011,23 @@ msgstr ""
 msgid "Aborting."
 msgstr "Bãi bỏ."
 
-#: transport.c:1315
+#: transport.c:1316
 msgid "failed to push all needed submodules"
 msgstr "gặp lỗi khi đẩy dữ liệu của tất cả các mô-đun-con cần thiết"
 
-#: tree-walk.c:32
+#: tree-walk.c:33
 msgid "too-short tree object"
 msgstr "đối tượng cây quá ngắn"
 
-#: tree-walk.c:38
+#: tree-walk.c:39
 msgid "malformed mode in tree entry"
 msgstr "chế độ dị hình trong đề mục cây"
 
-#: tree-walk.c:42
+#: tree-walk.c:43
 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:117
+#: tree-walk.c:118
 msgid "too-short tree file"
 msgstr "tập tin cây quá ngắn"
 
@@ -9045,7 +9301,7 @@ msgstr ""
 msgid "Updating index flags"
 msgstr "Đang cập nhật các cờ mục lục"
 
-#: upload-pack.c:1550
+#: upload-pack.c:1543
 msgid "expected flush after fetch arguments"
 msgstr "cần đẩy dữ liệu lên đĩa sau các tham số của lệnh fetch"
 
@@ -9082,73 +9338,103 @@ msgstr "đoạn đường dẫn “..” không hợp lệ"
 msgid "Fetching objects"
 msgstr "Đang lấy về các đối tượng"
 
-#: worktree.c:236 builtin/am.c:2103
+#: worktree.c:238 builtin/am.c:2103
 #, c-format
 msgid "failed to read '%s'"
 msgstr "gặp lỗi khi đọc “%s”"
 
-#: worktree.c:283
+#: worktree.c:304
 #, c-format
 msgid "'%s' at main working tree is not the repository directory"
 msgstr "“%s” tại cây làm việc chình không phải là thư mục kho"
 
-#: worktree.c:294
+#: worktree.c:315
 #, c-format
 msgid "'%s' file does not contain absolute path to the working tree location"
 msgstr ""
 "tập tin “%s” không chứa đường dẫn tuyệt đối đến vị trí cây làm việc hiện"
 
-#: worktree.c:306
+#: worktree.c:327
 #, c-format
 msgid "'%s' does not exist"
 msgstr "\"%s\" không tồn tại"
 
-#: worktree.c:312
+#: worktree.c:333
 #, c-format
 msgid "'%s' is not a .git file, error code %d"
 msgstr "“%s” không phải là tập tin .git, mã lỗi %d"
 
-#: worktree.c:321
+#: worktree.c:342
 #, c-format
 msgid "'%s' does not point back to '%s'"
 msgstr "“%s” không chỉ ngược đến “%s”"
 
-#: worktree.c:587
+#: worktree.c:608
 msgid "not a directory"
 msgstr "không phải thư mục"
 
-#: worktree.c:596
+#: worktree.c:617
 msgid ".git is not a file"
 msgstr ".git không phải là một tập tin"
 
-#: worktree.c:598
+#: worktree.c:619
 msgid ".git file broken"
 msgstr "tệp .git bị hỏng"
 
-#: worktree.c:600
+#: worktree.c:621
 msgid ".git file incorrect"
 msgstr "tập tin .git không chính xác"
 
-#: worktree.c:670
+#: worktree.c:727
 msgid "not a valid path"
 msgstr "không phải là một đường dẫn hợp lệ"
 
-#: worktree.c:676
+#: worktree.c:733
 msgid "unable to locate repository; .git is not a file"
 msgstr "không thể phân bổ kho chứa; .git không phải là một tập tin"
 
-#: worktree.c:679
+#: worktree.c:737
+msgid "unable to locate repository; .git file does not reference a repository"
+msgstr "không thể phân bổ kho chứa; tập tin .git tham chiếu đến một kho"
+
+#: worktree.c:741
 msgid "unable to locate repository; .git file broken"
 msgstr "không thể phân bổ kho chứa; tập tin .git bị hỏng"
 
-#: worktree.c:685
+#: worktree.c:747
 msgid "gitdir unreadable"
 msgstr "gitdir không thể đọc được"
 
-#: worktree.c:689
+#: worktree.c:751
 msgid "gitdir incorrect"
 msgstr "gitdir không chính xác"
 
+#: worktree.c:776
+msgid "not a valid directory"
+msgstr "không phải thư mục hợp lệ"
+
+#: worktree.c:782
+msgid "gitdir file does not exist"
+msgstr "tập tin gitdir không tồn tại"
+
+#: worktree.c:787 worktree.c:796
+#, c-format
+msgid "unable to read gitdir file (%s)"
+msgstr "không thể đọc tập tin gitdir (%s)"
+
+#: worktree.c:806
+#, c-format
+msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
+msgstr "đọc ngắn (cần %<PRIuMAX> byte, đọc %<PRIuMAX>)"
+
+#: worktree.c:814
+msgid "invalid gitdir file"
+msgstr "tập tin gitdir (thư mục git) không hợp lệ"
+
+#: worktree.c:822
+msgid "gitdir file points to non-existent location"
+msgstr "tập tin gitdir chỉ đến vị trí không tồn tại"
+
 #: wrapper.c:197 wrapper.c:367
 #, c-format
 msgid "could not open '%s' for reading and writing"
@@ -9196,11 +9482,11 @@ msgstr ""
 msgid "  (use \"git rm <file>...\" to mark resolution)"
 msgstr "  (dùng \"git rm <tập-tin>…\" để đánh dấu là cần giải quyết)"
 
-#: wt-status.c:211 wt-status.c:1070
+#: wt-status.c:211 wt-status.c:1072
 msgid "Changes to be committed:"
 msgstr "Những thay đổi sẽ được chuyển giao:"
 
-#: wt-status.c:234 wt-status.c:1079
+#: wt-status.c:234 wt-status.c:1081
 msgid "Changes not staged for commit:"
 msgstr "Các thay đổi chưa được đặt lên bệ phóng để chuyển giao:"
 
@@ -9304,21 +9590,21 @@ msgstr "nội dung bị sửa đổi, "
 msgid "untracked content, "
 msgstr "nội dung chưa được theo dõi, "
 
-#: wt-status.c:903
+#: wt-status.c:905
 #, 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:934
+#: wt-status.c:936
 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:936
+#: wt-status.c:938
 msgid "Submodule changes to be committed:"
 msgstr "Những mô-đun-con thay đổi đã được chuyển giao:"
 
-#: wt-status.c:1018
+#: wt-status.c:1020
 msgid ""
 "Do not modify or remove the line above.\n"
 "Everything below it will be ignored."
@@ -9326,7 +9612,7 @@ 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:1110
+#: wt-status.c:1112
 #, c-format
 msgid ""
 "\n"
@@ -9337,109 +9623,109 @@ msgstr ""
 "Nó cần %.2f giây để tính toán giá trị của trước/sau của nhánh.\n"
 "Bạn có thể dùng “--no-ahead-behind” tránh phải điều này.\n"
 
-#: wt-status.c:1140
+#: wt-status.c:1142
 msgid "You have unmerged paths."
 msgstr "Bạn có những đường dẫn chưa được hòa trộn."
 
-#: wt-status.c:1143
+#: wt-status.c:1145
 msgid "  (fix conflicts and run \"git commit\")"
 msgstr "  (sửa các xung đột rồi chạy \"git commit\")"
 
-#: wt-status.c:1145
+#: wt-status.c:1147
 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:1149
+#: wt-status.c:1151
 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:1152
+#: wt-status.c:1154
 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:1161
+#: wt-status.c:1163
 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:1164
+#: wt-status.c:1166
 msgid "The current patch is empty."
 msgstr "Miếng vá hiện tại bị trống rỗng."
 
-#: wt-status.c:1168
+#: wt-status.c:1170
 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:1170
+#: wt-status.c:1172
 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:1172
+#: wt-status.c:1174
 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:1305
+#: wt-status.c:1307
 msgid "git-rebase-todo is missing."
 msgstr "thiếu git-rebase-todo."
 
-#: wt-status.c:1307
+#: wt-status.c:1309
 msgid "No commands done."
 msgstr "Không thực hiện lệnh nào."
 
-#: wt-status.c:1310
+#: wt-status.c:1312
 #, 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:1321
+#: wt-status.c:1323
 #, c-format
 msgid "  (see more in file %s)"
 msgstr "  (xem thêm trong %s)"
 
-#: wt-status.c:1326
+#: wt-status.c:1328
 msgid "No commands remaining."
 msgstr "Không có lệnh nào còn lại."
 
-#: wt-status.c:1329
+#: wt-status.c:1331
 #, 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:1337
+#: wt-status.c:1339
 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:1349
+#: wt-status.c:1351
 #, 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:1354
+#: wt-status.c:1356
 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:1367
+#: wt-status.c:1369
 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:1369
+#: wt-status.c:1371
 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:1371
+#: wt-status.c:1373
 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:1378
+#: wt-status.c:1380
 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:1382
+#: wt-status.c:1384
 #, c-format
 msgid ""
 "You are currently splitting a commit while rebasing branch '%s' on '%s'."
@@ -9447,157 +9733,165 @@ 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:1387
+#: wt-status.c:1389
 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:1390
+#: wt-status.c:1392
 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:1394
+#: wt-status.c:1396
 #, 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:1399
+#: wt-status.c:1401
 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:1402
+#: wt-status.c:1404
 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:1404
+#: wt-status.c:1406
 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:1415
+#: wt-status.c:1417
 msgid "Cherry-pick currently in progress."
 msgstr "Cherry-pick hiện tại đang được thực hiện."
 
-#: wt-status.c:1418
+#: wt-status.c:1420
 #, 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:1425
+#: wt-status.c:1427
 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:1428
+#: wt-status.c:1430
 msgid "  (run \"git cherry-pick --continue\" to continue)"
 msgstr "  (chạy lệnh \"git cherry-pick --continue\" để tiếp tục)"
 
-#: wt-status.c:1431
+#: wt-status.c:1433
 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:1433
+#: wt-status.c:1435
 msgid "  (use \"git cherry-pick --skip\" to skip this patch)"
 msgstr "  (dùng \"git cherry-pick --skip\" để bỏ qua miếng vá này)"
 
-#: wt-status.c:1435
+#: wt-status.c:1437
 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:1445
+#: wt-status.c:1447
 msgid "Revert currently in progress."
 msgstr "Hoàn nguyên hiện tại đang thực hiện."
 
-#: wt-status.c:1448
+#: wt-status.c:1450
 #, 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:1454
+#: wt-status.c:1456
 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:1457
+#: wt-status.c:1459
 msgid "  (run \"git revert --continue\" to continue)"
 msgstr "  (chạy lệnh \"git revert --continue\" để tiếp tục)"
 
-#: wt-status.c:1460
+#: wt-status.c:1462
 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:1462
+#: wt-status.c:1464
 msgid "  (use \"git revert --skip\" to skip this patch)"
 msgstr "  (dùng lệnh \"git revert --skip\" để bỏ qua lần vá này)"
 
-#: wt-status.c:1464
+#: wt-status.c:1466
 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:1474
+#: wt-status.c:1476
 #, 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:1478
+#: wt-status.c:1480
 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:1481
+#: wt-status.c:1483
 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:1492
+#: wt-status.c:1494
 #, c-format
 msgid "You are in a sparse checkout with %d%% of tracked files present."
 msgstr ""
 "Bạn đang ở trong lần lấy ra sparser %d%% của các tập tin được theo dõi hiện "
 "tại."
 
-#: wt-status.c:1731
+#: wt-status.c:1733
 msgid "On branch "
 msgstr "Trên nhánh "
 
-#: wt-status.c:1738
+#: wt-status.c:1740
 msgid "interactive rebase in progress; onto "
 msgstr "rebase ở chế độ tương tác đang được thực hiện; lên trên "
 
-#: wt-status.c:1740
+#: wt-status.c:1742
 msgid "rebase in progress; onto "
 msgstr "rebase đang được thực hiện: lên trên "
 
-#: wt-status.c:1750
+#: wt-status.c:1747
+msgid "HEAD detached at "
+msgstr "HEAD được tách rời tại "
+
+#: wt-status.c:1749
+msgid "HEAD detached from "
+msgstr "HEAD được tách rời từ "
+
+#: wt-status.c:1752
 msgid "Not currently on any branch."
 msgstr "Hiện tại chẳng ở nhánh nào cả."
 
-#: wt-status.c:1767
+#: wt-status.c:1769
 msgid "Initial commit"
 msgstr "Lần chuyển giao khởi tạo"
 
-#: wt-status.c:1768
+#: wt-status.c:1770
 msgid "No commits yet"
 msgstr "Vẫn chưa chuyển giao"
 
-#: wt-status.c:1782
+#: wt-status.c:1784
 msgid "Untracked files"
 msgstr "Những tập tin chưa được theo dõi"
 
-#: wt-status.c:1784
+#: wt-status.c:1786
 msgid "Ignored files"
 msgstr "Những tập tin bị lờ đi"
 
-#: wt-status.c:1788
+#: wt-status.c:1790
 #, c-format
 msgid ""
 "It took %.2f seconds to enumerate untracked files. 'status -uno'\n"
@@ -9609,32 +9903,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:1794
+#: wt-status.c:1796
 #, c-format
 msgid "Untracked files not listed%s"
 msgstr "Những tập tin chưa được theo dõi không được liệt kê ra %s"
 
-#: wt-status.c:1796
+#: wt-status.c:1798
 msgid " (use -u option to show untracked files)"
 msgstr " (dùng tùy chọn -u để hiển thị các tập tin chưa được theo dõi)"
 
-#: wt-status.c:1802
+#: wt-status.c:1804
 msgid "No changes"
 msgstr "Không có thay đổi nào"
 
-#: wt-status.c:1807
+#: wt-status.c:1809
 #, c-format
 msgid "no changes added to commit (use \"git add\" and/or \"git commit -a\")\n"
 msgstr ""
 "không có thay đổi nào được thêm vào để chuyển giao (dùng \"git add\" và/hoặc "
 "\"git commit -a\")\n"
 
-#: wt-status.c:1811
+#: wt-status.c:1813
 #, 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:1815
+#: wt-status.c:1817
 #, c-format
 msgid ""
 "nothing added to commit but untracked files present (use \"git add\" to "
@@ -9643,68 +9937,68 @@ 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:1819
+#: wt-status.c:1821
 #, 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:1823
+#: wt-status.c:1825
 #, 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:1827 wt-status.c:1833
+#: wt-status.c:1829 wt-status.c:1835
 #, c-format
 msgid "nothing to commit\n"
 msgstr "không có gì để chuyển giao\n"
 
-#: wt-status.c:1830
+#: wt-status.c:1832
 #, 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:1835
+#: wt-status.c:1837
 #, 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:1940
+#: wt-status.c:1942
 msgid "No commits yet on "
 msgstr "Vẫn không thực hiện lệnh chuyển giao nào "
 
-#: wt-status.c:1944
+#: wt-status.c:1946
 msgid "HEAD (no branch)"
 msgstr "HEAD (không nhánh)"
 
-#: wt-status.c:1975
+#: wt-status.c:1977
 msgid "different"
 msgstr "khác"
 
-#: wt-status.c:1977 wt-status.c:1985
+#: wt-status.c:1979 wt-status.c:1987
 msgid "behind "
 msgstr "đằng sau "
 
-#: wt-status.c:1980 wt-status.c:1983
+#: wt-status.c:1982 wt-status.c:1985
 msgid "ahead "
 msgstr "phía trước "
 
 #. TRANSLATORS: the action is e.g. "pull with rebase"
-#: wt-status.c:2505
+#: wt-status.c:2507
 #, 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:2511
+#: wt-status.c:2513
 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:2513
+#: wt-status.c:2515
 #, c-format
 msgid "cannot %s: Your index contains uncommitted changes."
 msgstr ""
@@ -9719,133 +10013,138 @@ msgstr "gặp lỗi khi bỏ liên kết (unlink) “%s”"
 msgid "git add [<options>] [--] <pathspec>..."
 msgstr "git add [<các tùy chọn>] [--]  <pathspec>…"
 
-#: builtin/add.c:88
+#: builtin/add.c:58
+#, c-format
+msgid "cannot chmod %cx '%s'"
+msgstr "không thể chmod %cx '%s'"
+
+#: builtin/add.c:96
 #, c-format
 msgid "unexpected diff status %c"
 msgstr "trạng thái lệnh diff không như mong đợi %c"
 
-#: builtin/add.c:93 builtin/commit.c:285
+#: builtin/add.c:101 builtin/commit.c:285
 msgid "updating files failed"
 msgstr "cập nhật tập tin gặp lỗi"
 
-#: builtin/add.c:103
+#: builtin/add.c:111
 #, c-format
 msgid "remove '%s'\n"
 msgstr "gỡ bỏ “%s”\n"
 
-#: builtin/add.c:178
+#: builtin/add.c:186
 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:272 builtin/rev-parse.c:908
+#: builtin/add.c:280 builtin/rev-parse.c:991
 msgid "Could not read the index"
 msgstr "Không thể đọc bảng mục lục"
 
-#: builtin/add.c:283
+#: builtin/add.c:291
 #, c-format
 msgid "Could not open '%s' for writing."
 msgstr "Không thể mở “%s” để ghi."
 
-#: builtin/add.c:287
+#: builtin/add.c:295
 msgid "Could not write patch"
 msgstr "Không thể ghi ra miếng vá"
 
-#: builtin/add.c:290
+#: builtin/add.c:298
 msgid "editing patch failed"
 msgstr "gặp lỗi khi sửa miếng vá"
 
-#: builtin/add.c:293
+#: builtin/add.c:301
 #, c-format
 msgid "Could not stat '%s'"
 msgstr "Không thể lấy thông tin thống kê về “%s”"
 
-#: builtin/add.c:295
+#: builtin/add.c:303
 msgid "Empty patch. Aborted."
 msgstr "Miếng vá trống rỗng. Nên bỏ qua."
 
-#: builtin/add.c:300
+#: builtin/add.c:308
 #, c-format
 msgid "Could not apply '%s'"
 msgstr "Không thể áp dụng miếng vá “%s”"
 
-#: builtin/add.c:308
+#: builtin/add.c:316
 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:328 builtin/clean.c:904 builtin/fetch.c:166 builtin/mv.c:124
+#: builtin/add.c:336 builtin/clean.c:904 builtin/fetch.c:169 builtin/mv.c:124
 #: builtin/prune-packed.c:14 builtin/pull.c:204 builtin/push.c:559
 #: builtin/remote.c:1427 builtin/rm.c:242 builtin/send-pack.c:190
 msgid "dry run"
 msgstr "chạy thử"
 
-#: builtin/add.c:331
+#: builtin/add.c:339
 msgid "interactive picking"
 msgstr "sửa bằng cách tương tác"
 
-#: builtin/add.c:332 builtin/checkout.c:1547 builtin/reset.c:308
+#: builtin/add.c:340 builtin/checkout.c:1546 builtin/reset.c:308
 msgid "select hunks interactively"
 msgstr "chọn “hunks” theo kiểu tương tác"
 
-#: builtin/add.c:333
+#: builtin/add.c:341
 msgid "edit current diff and apply"
 msgstr "sửa diff hiện nay và áp dụng nó"
 
-#: builtin/add.c:334
+#: builtin/add.c:342
 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:335
+#: builtin/add.c:343
 msgid "update tracked files"
 msgstr "cập nhật các tập tin được theo dõi"
 
-#: builtin/add.c:336
+#: builtin/add.c:344
 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:337
+#: builtin/add.c:345
 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:338
+#: builtin/add.c:346
 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:341
+#: builtin/add.c:349
 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:343
+#: builtin/add.c:351
 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:344
+#: builtin/add.c:352
 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:345
+#: builtin/add.c:353
 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:347 builtin/update-index.c:1004
+#: builtin/add.c:355 builtin/update-index.c:1004
 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:349
+#: builtin/add.c:357
 msgid "warn when adding an embedded repository"
 msgstr "cảnh báo khi thêm một kho nhúng"
 
-#: builtin/add.c:351
+#: builtin/add.c:359
 msgid "backend for `git stash -p`"
 msgstr "ứng dụng chạy phía sau cho “git stash -p”"
 
-#: builtin/add.c:369
+#: builtin/add.c:377
 #, c-format
 msgid ""
 "You've added another git repository inside your current repository.\n"
@@ -9876,12 +10175,12 @@ msgstr ""
 "\n"
 "Xem \"git help submodule\" để biết thêm chi tiết."
 
-#: builtin/add.c:397
+#: builtin/add.c:405
 #, c-format
 msgid "adding embedded git repository: %s"
 msgstr "thêm cần một kho git nhúng: %s"
 
-#: builtin/add.c:416
+#: builtin/add.c:424
 msgid ""
 "Use -f if you really want to add them.\n"
 "Turn this message off by running\n"
@@ -9891,47 +10190,47 @@ msgstr ""
 "Tắt thông báo này bằng cách chạy lệnh\n"
 "\"git config advice.addIgnoredFile false\""
 
-#: builtin/add.c:425
+#: builtin/add.c:433
 msgid "adding files failed"
 msgstr "thêm tập tin gặp lỗi"
 
-#: builtin/add.c:453 builtin/commit.c:345
+#: builtin/add.c:461 builtin/commit.c:345
 msgid "--pathspec-from-file is incompatible with --interactive/--patch"
 msgstr "--pathspec-from-file xung khắc với --interactive/--patch"
 
-#: builtin/add.c:470
+#: builtin/add.c:478
 msgid "--pathspec-from-file is incompatible with --edit"
 msgstr "--pathspec-from-file xung khắc với --edit"
 
-#: builtin/add.c:482
+#: builtin/add.c:490
 msgid "-A and -u are mutually incompatible"
 msgstr "-A và -u xung khắc nhau"
 
-#: builtin/add.c:485
+#: builtin/add.c:493
 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:489
+#: builtin/add.c:497
 #, 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:507 builtin/checkout.c:1715 builtin/commit.c:351
-#: builtin/reset.c:328 builtin/rm.c:272 builtin/stash.c:1502
+#: builtin/add.c:515 builtin/checkout.c:1714 builtin/commit.c:351
+#: builtin/reset.c:328 builtin/rm.c:272 builtin/stash.c:1569
 msgid "--pathspec-from-file is incompatible with pathspec arguments"
 msgstr "--pathspec-from-file xung khắc với các tham số đặc tả đường dẫn"
 
-#: builtin/add.c:514 builtin/checkout.c:1727 builtin/commit.c:357
-#: builtin/reset.c:334 builtin/rm.c:278 builtin/stash.c:1508
+#: builtin/add.c:522 builtin/checkout.c:1726 builtin/commit.c:357
+#: builtin/reset.c:334 builtin/rm.c:278 builtin/stash.c:1575
 msgid "--pathspec-file-nul requires --pathspec-from-file"
 msgstr "--pathspec-file-nul cần --pathspec-from-file"
 
-#: builtin/add.c:518
+#: builtin/add.c:526
 #, 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:520
+#: builtin/add.c:528
 msgid ""
 "Maybe you wanted to say 'git add .'?\n"
 "Turn this message off by running\n"
@@ -10188,7 +10487,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:2225 builtin/init-db.c:560 builtin/prune-packed.c:16
-#: builtin/repack.c:335 builtin/stash.c:815
+#: builtin/repack.c:334 builtin/stash.c:882
 msgid "be quiet"
 msgstr "im lặng"
 
@@ -10232,17 +10531,17 @@ msgid "pass it through git-apply"
 msgstr "chuyển nó qua git-apply"
 
 #: builtin/am.c:2263 builtin/commit.c:1395 builtin/fmt-merge-msg.c:17
-#: builtin/fmt-merge-msg.c:20 builtin/grep.c:903 builtin/merge.c:260
+#: builtin/fmt-merge-msg.c:20 builtin/grep.c:904 builtin/merge.c:261
 #: builtin/pull.c:141 builtin/pull.c:200 builtin/pull.c:217
-#: builtin/rebase.c:1341 builtin/repack.c:346 builtin/repack.c:350
-#: builtin/repack.c:352 builtin/show-branch.c:650 builtin/show-ref.c:172
-#: builtin/tag.c:404 parse-options.h:154 parse-options.h:175
+#: builtin/rebase.c:1347 builtin/repack.c:345 builtin/repack.c:349
+#: builtin/repack.c:351 builtin/show-branch.c:650 builtin/show-ref.c:172
+#: builtin/tag.c:436 parse-options.h:154 parse-options.h:175
 #: parse-options.h:316
 msgid "n"
 msgstr "n"
 
-#: builtin/am.c:2269 builtin/branch.c:661 builtin/bugreport.c:136
-#: builtin/for-each-ref.c:38 builtin/replace.c:556 builtin/tag.c:438
+#: builtin/am.c:2269 builtin/branch.c:670 builtin/bugreport.c:136
+#: builtin/for-each-ref.c:38 builtin/replace.c:556 builtin/tag.c:470
 #: builtin/verify-tag.c:38
 msgid "format"
 msgstr "định dạng"
@@ -10268,12 +10567,12 @@ msgid "skip the current patch"
 msgstr "bỏ qua miếng vá hiện hành"
 
 #: builtin/am.c:2287
-msgid "restore the original branch and abort the patching operation."
-msgstr "phục hồi lại nhánh gốc và loại bỏ thao tác vá."
+msgid "restore the original branch and abort the patching operation"
+msgstr "phục hồi lại nhánh gốc và loại bỏ thao tác vá"
 
 #: builtin/am.c:2290
-msgid "abort the patching operation but keep HEAD where it is."
-msgstr "bỏ qua thao tác vá nhưng vẫn giữ HEAD chỉ đến nó."
+msgid "abort the patching operation but keep HEAD where it is"
+msgstr "bỏ qua thao tác vá nhưng vẫn giữ HEAD nơi nó chỉ đến"
 
 #: builtin/am.c:2294
 msgid "show the patch being applied"
@@ -10288,12 +10587,12 @@ 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:2303 builtin/commit-tree.c:120 builtin/commit.c:1515
-#: builtin/merge.c:297 builtin/pull.c:175 builtin/rebase.c:536
-#: builtin/rebase.c:1394 builtin/revert.c:117 builtin/tag.c:419
+#: builtin/merge.c:298 builtin/pull.c:175 builtin/rebase.c:538
+#: builtin/rebase.c:1400 builtin/revert.c:117 builtin/tag.c:451
 msgid "key-id"
 msgstr "mã-số-khóa"
 
-#: builtin/am.c:2304 builtin/rebase.c:537 builtin/rebase.c:1395
+#: builtin/am.c:2304 builtin/rebase.c:539 builtin/rebase.c:1401
 msgid "GPG-sign commits"
 msgstr "Các lần chuyển giao ký-GPG"
 
@@ -10374,26 +10673,10 @@ msgid "git bisect--helper --bisect-reset [<commit>]"
 msgstr "git bisect--helper --bisect-reset [<lần_chuyển_giao>]"
 
 #: builtin/bisect--helper.c:24
-msgid ""
-"git bisect--helper --bisect-write [--no-log] <state> <revision> <good_term> "
-"<bad_term>"
-msgstr ""
-"git bisect--helper --bisect-write [--no-log] <state> <revision> <lúc_sai> "
-"<lúc_đúng>"
-
-#: builtin/bisect--helper.c:25
-msgid ""
-"git bisect--helper --bisect-check-and-set-terms <command> <good_term> "
-"<bad_term>"
-msgstr ""
-"git bisect--helper --bisect-check-and-set-terms <command> <lúc_sai> "
-"<lúc_đúng>"
-
-#: builtin/bisect--helper.c:26
 msgid "git bisect--helper --bisect-next-check <good_term> <bad_term> [<term>]"
 msgstr "git bisect--helper --bisect-next-check <lúc_sai> <lúc_đúng> [<term>]"
 
-#: builtin/bisect--helper.c:27
+#: builtin/bisect--helper.c:25
 msgid ""
 "git bisect--helper --bisect-terms [--term-good | --term-old | --term-bad | --"
 "term-new]"
@@ -10401,7 +10684,7 @@ msgstr ""
 "git bisect--helper --bisect-terms [--term-good | --term-old | --term-bad | --"
 "term-new]"
 
-#: builtin/bisect--helper.c:28
+#: builtin/bisect--helper.c:26
 msgid ""
 "git bisect--helper --bisect-start [--term-{new,bad}=<term> --term-{old,good}"
 "=<term>] [--no-checkout] [--first-parent] [<bad> [<good>...]] [--] "
@@ -10411,62 +10694,66 @@ msgstr ""
 "=<term>] [--no-checkout] [--first-parent] [<bad> [<good>…]] [--] [</các/"
 "đường/dẫn>…]"
 
-#: builtin/bisect--helper.c:30
+#: builtin/bisect--helper.c:28
 msgid "git bisect--helper --bisect-next"
 msgstr "git bisect--helper --bisect-next"
 
-#: builtin/bisect--helper.c:31
-msgid "git bisect--helper --bisect-auto-next"
-msgstr "git bisect--helper --bisect-auto-next"
-
-#: builtin/bisect--helper.c:32
+#: builtin/bisect--helper.c:29
 msgid "git bisect--helper --bisect-state (bad|new) [<rev>]"
 msgstr "git bisect--helper --bisect-state (bad|new) [<lần_chuyển_giao>]"
 
-#: builtin/bisect--helper.c:33
+#: builtin/bisect--helper.c:30
 msgid "git bisect--helper --bisect-state (good|old) [<rev>...]"
 msgstr "git bisect--helper --bisect-reset (good|old) [<lần_chuyển_giao>…]"
 
-#: builtin/bisect--helper.c:108
+#: builtin/bisect--helper.c:31
+msgid "git bisect--helper --bisect-replay <filename>"
+msgstr "git bisect--helper --bisect-replay <tên_tập_tin>"
+
+#: builtin/bisect--helper.c:32
+msgid "git bisect--helper --bisect-skip [(<rev>|<range>)...]"
+msgstr "git bisect--helper --bisect-skip [(<rev>|<vùng>)...]"
+
+#: builtin/bisect--helper.c:107
 #, c-format
 msgid "cannot open file '%s' in mode '%s'"
 msgstr "không thể mở tập tin “%s” ở chế độ “%s”"
 
-#: builtin/bisect--helper.c:115
+#: builtin/bisect--helper.c:114
 #, c-format
 msgid "could not write to file '%s'"
 msgstr "không thể ghi vào tập tin “%s”"
 
-#: builtin/bisect--helper.c:154
+#: builtin/bisect--helper.c:153
 #, c-format
 msgid "'%s' is not a valid term"
 msgstr "“%s” không phải một thời hạn hợp lệ"
 
-#: builtin/bisect--helper.c:158
+#: builtin/bisect--helper.c:157
 #, c-format
 msgid "can't use the builtin command '%s' as a term"
 msgstr "không thể dùng lệnh tích hợp “%s” như là một thời kỳ"
 
-#: builtin/bisect--helper.c:168
+#: builtin/bisect--helper.c:167
 #, c-format
 msgid "can't change the meaning of the term '%s'"
 msgstr "không thể thay đổi nghĩa của thời kỳ “%s”"
 
-#: builtin/bisect--helper.c:178
+#: builtin/bisect--helper.c:177
 msgid "please use two different terms"
 msgstr "vui lòng dùng hai thời kỳ khác nhau"
 
-#: builtin/bisect--helper.c:194
+#: builtin/bisect--helper.c:193
 #, c-format
 msgid "We are not bisecting.\n"
 msgstr "Chúng tôi đang không bisect.\n"
 
-#: builtin/bisect--helper.c:202
+#: builtin/bisect--helper.c:201
 #, c-format
 msgid "'%s' is not a valid commit"
 msgstr "“%s” không phải một lần chuyển giao hợp lệ"
 
-#: builtin/bisect--helper.c:211
+#: builtin/bisect--helper.c:210
 #, c-format
 msgid ""
 "could not check out original HEAD '%s'. Try 'git bisect reset <commit>'."
@@ -10474,27 +10761,27 @@ msgstr ""
 "không thể lấy ra HEAD nguyên thủy của “%s”. Hãy thử “git bisect reset <lần-"
 "chuyển-giao>”."
 
-#: builtin/bisect--helper.c:255
+#: builtin/bisect--helper.c:254
 #, c-format
 msgid "Bad bisect_write argument: %s"
 msgstr "Đối số bisect_write sai: %s"
 
-#: builtin/bisect--helper.c:260
+#: builtin/bisect--helper.c:259
 #, c-format
 msgid "couldn't get the oid of the rev '%s'"
 msgstr "không thể lấy oid của điểm xét duyệt “%s”"
 
-#: builtin/bisect--helper.c:272
+#: builtin/bisect--helper.c:271
 #, c-format
 msgid "couldn't open the file '%s'"
 msgstr "không thể mở tập tin “%s”"
 
-#: builtin/bisect--helper.c:298
+#: builtin/bisect--helper.c:297
 #, c-format
 msgid "Invalid command: you're currently in a %s/%s bisect"
 msgstr "Lệnh không hợp lệ: bạn hiện đang ở một bisect %s/%s"
 
-#: builtin/bisect--helper.c:325
+#: builtin/bisect--helper.c:324
 #, c-format
 msgid ""
 "You need to give me at least one %s and %s revision.\n"
@@ -10503,7 +10790,7 @@ msgstr ""
 "Bạn phải chỉ cho tôi ít nhất một điểm %s và một %s.\n"
 "Bạn có thể sử dụng \"git bisect %s\" và \"git bisect %s\" cho cái đó."
 
-#: builtin/bisect--helper.c:329
+#: builtin/bisect--helper.c:328
 #, c-format
 msgid ""
 "You need to start by \"git bisect start\".\n"
@@ -10514,7 +10801,7 @@ msgstr ""
 "Bạn sau đó cần phải chỉ cho tôi ít nhất một điểm xét duyệt %s và một %s.\n"
 "Bạn có thể sử dụng \"git bisect %s\" và \"git bisect %s\" cho chúng."
 
-#: builtin/bisect--helper.c:349
+#: builtin/bisect--helper.c:348
 #, c-format
 msgid "bisecting only with a %s commit"
 msgstr "chỉ thực hiện việc bisect với một lần chuyển giao %s"
@@ -10523,15 +10810,15 @@ msgstr "chỉ thực hiện việc bisect với một lần chuyển giao %s"
 #. translation. The program will only accept English input
 #. at this point.
 #.
-#: builtin/bisect--helper.c:357
+#: builtin/bisect--helper.c:356
 msgid "Are you sure [Y/n]? "
 msgstr "Bạn có chắc chắn chưa [Y/n]? "
 
-#: builtin/bisect--helper.c:418
+#: builtin/bisect--helper.c:417
 msgid "no terms defined"
 msgstr "chưa định nghĩa thời kỳ nào"
 
-#: builtin/bisect--helper.c:421
+#: builtin/bisect--helper.c:420
 #, c-format
 msgid ""
 "Your current terms are %s for the old state\n"
@@ -10540,7 +10827,7 @@ msgstr ""
 "Bạn hiện tại đang ở thời kỳ %s cho tình trạng cũ\n"
 "và %s cho tình trạng mới.\n"
 
-#: builtin/bisect--helper.c:431
+#: builtin/bisect--helper.c:430
 #, c-format
 msgid ""
 "invalid argument %s for 'git bisect terms'.\n"
@@ -10549,52 +10836,52 @@ msgstr ""
 "tham số không hợp lệ %s cho “git bisect terms”.\n"
 "Các tùy chọn hỗ trợ là: --term-good|--term-old và --term-bad|--term-new."
 
-#: builtin/bisect--helper.c:498
+#: builtin/bisect--helper.c:497 builtin/bisect--helper.c:1014
 msgid "revision walk setup failed\n"
 msgstr "gặp lỗi cài đặt việc di chuyển qua các điểm xét duyệt\n"
 
-#: builtin/bisect--helper.c:520
+#: builtin/bisect--helper.c:519
 #, c-format
 msgid "could not open '%s' for appending"
 msgstr "không thể mở “%s” để nối thêm"
 
-#: builtin/bisect--helper.c:639 builtin/bisect--helper.c:652
+#: builtin/bisect--helper.c:638 builtin/bisect--helper.c:651
 msgid "'' is not a valid term"
 msgstr "” không phải một thời hạn hợp lệ"
 
-#: builtin/bisect--helper.c:662
+#: builtin/bisect--helper.c:661
 #, c-format
 msgid "unrecognized option: '%s'"
 msgstr "tùy chọn không được thừa nhận: “%s”"
 
-#: builtin/bisect--helper.c:666
+#: builtin/bisect--helper.c:665
 #, c-format
 msgid "'%s' does not appear to be a valid revision"
 msgstr "“%s” không có vẻ như là một điểm xét duyệt hợp lệ"
 
-#: builtin/bisect--helper.c:697
+#: builtin/bisect--helper.c:696
 msgid "bad HEAD - I need a HEAD"
 msgstr "sai HEAD - Tôi cần một HEAD"
 
-#: builtin/bisect--helper.c:712
+#: builtin/bisect--helper.c:711
 #, c-format
 msgid "checking out '%s' failed. Try 'git bisect start <valid-branch>'."
 msgstr "lấy ra “%s” ra gặp lỗi. Hãy thử \"git bisect reset <nhánh_hợp_lệ>\"."
 
-#: builtin/bisect--helper.c:733
+#: builtin/bisect--helper.c:732
 msgid "won't bisect on cg-seek'ed tree"
 msgstr "sẽ không di chuyển nửa bước trên cây được cg-seek"
 
-#: builtin/bisect--helper.c:736
+#: builtin/bisect--helper.c:735
 msgid "bad HEAD - strange symbolic ref"
 msgstr "sai HEAD - tham chiếu mềm kỳ lạ"
 
-#: builtin/bisect--helper.c:756
+#: builtin/bisect--helper.c:755
 #, c-format
 msgid "invalid ref: '%s'"
 msgstr "refspec không hợp lệ: “%s”"
 
-#: builtin/bisect--helper.c:814
+#: builtin/bisect--helper.c:813
 msgid "You need to start by \"git bisect start\"\n"
 msgstr "Bạn cần khởi đầu bằng \"git bisect start\"\n"
 
@@ -10602,93 +10889,102 @@ msgstr "Bạn cần khởi đầu bằng \"git bisect start\"\n"
 #. translation. The program will only accept English input
 #. at this point.
 #.
-#: builtin/bisect--helper.c:825
+#: builtin/bisect--helper.c:824
 msgid "Do you want me to do it for you [Y/n]? "
 msgstr "Bạn có muốn tôi thực hiện điều này cho bạn không [Y/n]? "
 
-#: builtin/bisect--helper.c:843
+#: builtin/bisect--helper.c:842
 msgid "Please call `--bisect-state` with at least one argument"
 msgstr "Hãy gọi “--bisect-state” với ít nhất một đối số"
 
-#: builtin/bisect--helper.c:856
+#: builtin/bisect--helper.c:855
 #, c-format
 msgid "'git bisect %s' can take only one argument."
 msgstr "“git bisect %s” có thể lấy chỉ một đối số."
 
-#: builtin/bisect--helper.c:868 builtin/bisect--helper.c:879
+#: builtin/bisect--helper.c:867 builtin/bisect--helper.c:878
 #, c-format
 msgid "Bad rev input: %s"
 msgstr "Đầu vào rev sai: %s"
 
-#: builtin/bisect--helper.c:924
-msgid "reset the bisection state"
-msgstr "đặt lại trạng di chuyển nửa bước"
+#: builtin/bisect--helper.c:912
+msgid "We are not bisecting."
+msgstr "Chúng tôi không bisect."
 
-#: builtin/bisect--helper.c:926
-msgid "write out the bisection state in BISECT_LOG"
-msgstr "ghi ra tình trạng di chuyển nửa bước trong BISECT_LOG"
+#: builtin/bisect--helper.c:962
+#, c-format
+msgid "'%s'?? what are you talking about?"
+msgstr "'%s'?? bạn đang nói gì thế?"
+
+#: builtin/bisect--helper.c:974
+#, c-format
+msgid "cannot read file '%s' for replaying"
+msgstr "không thể đọc tập tin '%s' để thao diễn lại"
 
-#: builtin/bisect--helper.c:928
-msgid "check and set terms in a bisection state"
-msgstr "kiểm tra và đặt thời điểm trong di chuyển nửa bước"
+#: builtin/bisect--helper.c:1047
+msgid "reset the bisection state"
+msgstr "đặt lại trạng di chuyển nửa bước"
 
-#: builtin/bisect--helper.c:930
+#: builtin/bisect--helper.c:1049
 msgid "check whether bad or good terms exist"
 msgstr "kiểm tra xem các thời điểm xấu/tốt có tồn tại không"
 
-#: builtin/bisect--helper.c:932
+#: builtin/bisect--helper.c:1051
 msgid "print out the bisect terms"
 msgstr "in ra các thời điểm di chuyển nửa bước"
 
-#: builtin/bisect--helper.c:934
+#: builtin/bisect--helper.c:1053
 msgid "start the bisect session"
 msgstr "bắt đầu phiên di chuyển nửa bước"
 
-#: builtin/bisect--helper.c:936
+#: builtin/bisect--helper.c:1055
 msgid "find the next bisection commit"
 msgstr "tìm lần chuyển giao không di chuyển phân đôi"
 
-#: builtin/bisect--helper.c:938
-msgid "verify the next bisection state then checkout the next bisection commit"
-msgstr ""
-"xác nhận trạng thái phân đôi kế sau đó lấy ra lần chuyển giao phân đôi kế"
-
-#: builtin/bisect--helper.c:940
+#: builtin/bisect--helper.c:1057
 msgid "mark the state of ref (or refs)"
 msgstr "đánh dấu trạng thái ref (hoặc refs)"
 
-#: builtin/bisect--helper.c:942
+#: builtin/bisect--helper.c:1059
+msgid "list the bisection steps so far"
+msgstr "liệt kê các bước bisection đi quá xa"
+
+#: builtin/bisect--helper.c:1061
+msgid "replay the bisection process from the given file"
+msgstr "phát lại quá trình bisection từ tệp đã cho"
+
+#: builtin/bisect--helper.c:1063
+msgid "skip some commits for checkout"
+msgstr "bỏ qua một số lần chuyển giao để lấy ra"
+
+#: builtin/bisect--helper.c:1065
 msgid "no log for BISECT_WRITE"
 msgstr "không có nhật ký cho BISECT_WRITE"
 
-#: builtin/bisect--helper.c:957
+#: builtin/bisect--helper.c:1080
 msgid "--bisect-reset requires either no argument or a commit"
 msgstr ""
 "--bisect-reset requires không nhận đối số cũng không nhận lần chuyển giao"
 
-#: builtin/bisect--helper.c:961
-msgid "--bisect-write requires either 4 or 5 arguments"
-msgstr "--bisect-write cần 4 hoặc 5 tham số"
-
-#: builtin/bisect--helper.c:967
-msgid "--check-and-set-terms requires 3 arguments"
-msgstr "--check-and-set-terms cần 3 tham số"
-
-#: builtin/bisect--helper.c:973
+#: builtin/bisect--helper.c:1085
 msgid "--bisect-next-check requires 2 or 3 arguments"
 msgstr "--bisect-next-check cần 2 hoặc 3 tham số"
 
-#: builtin/bisect--helper.c:979
+#: builtin/bisect--helper.c:1091
 msgid "--bisect-terms requires 0 or 1 argument"
 msgstr "--bisect-terms cần 0 hoặc 1 tham số"
 
-#: builtin/bisect--helper.c:988
+#: builtin/bisect--helper.c:1100
 msgid "--bisect-next requires 0 arguments"
 msgstr "--bisect-next cần 0 tham số"
 
-#: builtin/bisect--helper.c:994
-msgid "--bisect-auto-next requires 0 arguments"
-msgstr "--bisect-auto-next cần 0 tham số"
+#: builtin/bisect--helper.c:1111
+msgid "--bisect-log requires 0 arguments"
+msgstr "--bisect-log cần 0 tham số"
+
+#: builtin/bisect--helper.c:1116
+msgid "no logfile given"
+msgstr "chưa chỉ ra tập tin ghi nhật ký"
 
 #: builtin/blame.c:32
 msgid "git blame [<options>] [<rev-opts>] [<rev>] [--] <file>"
@@ -10707,140 +11003,143 @@ msgstr "cần một màu: %s"
 msgid "must end with a color"
 msgstr "phải kết thúc bằng một màu"
 
-#: builtin/blame.c:730
+#: builtin/blame.c:728
 #, 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:748
+#: builtin/blame.c:746
 msgid "invalid value for blame.coloring"
 msgstr "màu không hợp lệ cho blame.coloring"
 
-#: builtin/blame.c:847
+#: builtin/blame.c:845
 #, c-format
 msgid "cannot find revision %s to ignore"
 msgstr "không thể tìm thấy điểm xét duyệt %s để mà bỏ qua"
 
-#: builtin/blame.c:869
-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:867
+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:870
-msgid "Do not show object names of boundary commits (Default: off)"
+#: builtin/blame.c:868
+msgid "do not show object names of boundary commits (Default: off)"
 msgstr ""
-"Ä\90ừng hiển thị tên đối tượng của những lần chuyển giao biên giới (Mặc định: "
+"Ä\91ừng hiển thị tên đối tượng của những lần chuyển giao biên giới (Mặc định: "
 "off)"
 
-#: builtin/blame.c:871
-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:869
+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:870
+msgid "show work cost statistics"
+msgstr "hiển thị thống kê công sức làm việc"
+
+#: builtin/blame.c:871 builtin/checkout.c:1503 builtin/clone.c:92
+#: builtin/commit-graph.c:84 builtin/commit-graph.c:222 builtin/fetch.c:175
+#: builtin/merge.c:297 builtin/multi-pack-index.c:27 builtin/pull.c:119
+#: builtin/push.c:575 builtin/send-pack.c:198
+msgid "force progress reporting"
+msgstr "ép buộc báo cáo tiến triển công việc"
 
 #: builtin/blame.c:872
-msgid "Show work cost statistics"
-msgstr "Hiển thị thống kê công sức làm việc"
+msgid "show output score for blame entries"
+msgstr "hiển thị kết xuất điểm số cho các mục tin “blame”"
 
 #: builtin/blame.c:873
-msgid "Force progress reporting"
-msgstr "Ép buộc báo cáo diễn biến công việc"
+msgid "show original filename (Default: auto)"
+msgstr "hiển thị tên tập tin gốc (Mặc định: auto)"
 
 #: builtin/blame.c:874
-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”"
+msgid "show original linenumber (Default: off)"
+msgstr "hiển thị số dòng gốc (Mặc định: off)"
 
 #: builtin/blame.c:875
-msgid "Show original filename (Default: auto)"
-msgstr "Hiển thị tên tập tin gốc (Mặc định: auto)"
+msgid "show in a format designed for machine consumption"
+msgstr "hiển thị ở định dạng đã thiết kế cho dùng bằng máy"
 
 #: builtin/blame.c:876
-msgid "Show original linenumber (Default: off)"
-msgstr "Hiển thị số dòng gốc (Mặc định: off)"
+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:877
-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"
+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:878
-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"
+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:879
-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)"
+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:880
-msgid "Show raw timestamp (Default: off)"
-msgstr "Hiển thị dấu vết thời gian dạng thô (Mặc định: off)"
+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:881
-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)"
+msgid "show author email instead of name (Default: off)"
+msgstr "hiển thị thư điện tử của tác giả thay cho tên (Mặc định: off)"
 
 #: builtin/blame.c:882
-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:883
-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:884
-msgid "Ignore whitespace differences"
-msgstr "Bỏ qua các khác biệt do khoảng trắng gây ra"
+msgid "ignore whitespace differences"
+msgstr "bỏ qua các khác biệt do khoảng trắng gây ra"
 
-#: builtin/blame.c:885 builtin/log.c:1813
+#: builtin/blame.c:883 builtin/log.c:1812
 msgid "rev"
 msgstr "rev"
 
-#: builtin/blame.c:885
-msgid "Ignore <rev> when blaming"
-msgstr "Bỏ qua <rev> khi blame"
+#: builtin/blame.c:883
+msgid "ignore <rev> when blaming"
+msgstr "bỏ qua <rev> khi blame"
 
-#: builtin/blame.c:886
-msgid "Ignore revisions from <file>"
-msgstr "Bỏ qua các điểm xét duyệt từ <tập tin>"
+#: builtin/blame.c:884
+msgid "ignore revisions from <file>"
+msgstr "bỏ qua các điểm xét duyệt từ <tập tin>"
 
-#: builtin/blame.c:887
+#: builtin/blame.c:885
 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:888
+#: builtin/blame.c:886
 msgid "color lines by age"
 msgstr "các dòng màu theo tuổi"
 
-#: builtin/blame.c:889
-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:887
+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:890
-msgid "Use revisions from <file> instead of calling git-rev-list"
+#: builtin/blame.c:888
+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”"
+"sử dụng các điểm xét duyệt (revision) từ <tập tin> thay vì gọi “git-rev-list”"
 
-#: builtin/blame.c:891
-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:889
+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:892 builtin/blame.c:893
+#: builtin/blame.c:890 builtin/blame.c:891
 msgid "score"
 msgstr "điểm số"
 
-#: builtin/blame.c:892
-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:890
+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:893
-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:891
+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:894
+#: builtin/blame.c:892
 msgid "range"
 msgstr "vùng"
 
-#: builtin/blame.c:895
-msgid "Process only line range <start>,<end> or function :<funcname>"
-msgstr "Xử lý chỉ dòng vùng <đầu>,<cuối> hoặc tính năng :<funcname>"
+#: builtin/blame.c:893
+msgid "process only line range <start>,<end> or function :<funcname>"
+msgstr "xử lý chỉ dòng vùng <đầu>,<cuối> hoặc tính năng :<funcname>"
 
-#: builtin/blame.c:947
+#: builtin/blame.c:945
 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"
@@ -10853,17 +11152,17 @@ msgstr ""
 #. your language may need more or fewer display
 #. columns.
 #.
-#: builtin/blame.c:998
+#: builtin/blame.c:996
 msgid "4 years, 11 months ago"
 msgstr "4 năm, 11 tháng trước"
 
-#: builtin/blame.c:1114
+#: builtin/blame.c:1112
 #, c-format
 msgid "file %s has only %lu line"
 msgid_plural "file %s has only %lu lines"
 msgstr[0] "tập tin %s chỉ có %lu dòng"
 
-#: builtin/blame.c:1159
+#: builtin/blame.c:1157
 msgid "Blaming lines"
 msgstr "Các dòng blame"
 
@@ -10931,117 +11230,107 @@ msgstr ""
 msgid "Update of config-file failed"
 msgstr "Cập nhật tập tin cấu hình gặp lỗi"
 
-#: builtin/branch.c:220
+#: builtin/branch.c:223
 msgid "cannot use -a with -d"
 msgstr "không thể dùng tùy chọn -a với -d"
 
-#: builtin/branch.c:226
+#: builtin/branch.c:230
 msgid "Couldn't look up commit object for HEAD"
 msgstr "Không thể tìm kiếm đối tượng chuyển giao cho HEAD"
 
-#: builtin/branch.c:240
+#: builtin/branch.c:244
 #, c-format
 msgid "Cannot delete branch '%s' checked out at '%s'"
 msgstr "Không thể xóa nhánh “%s” đã được lấy ra tại “%s”"
 
-#: builtin/branch.c:255
+#: builtin/branch.c:259
 #, c-format
 msgid "remote-tracking branch '%s' not found."
 msgstr "không tìm thấy nhánh theo dõi máy chủ “%s”."
 
-#: builtin/branch.c:256
+#: builtin/branch.c:260
 #, c-format
 msgid "branch '%s' not found."
 msgstr "không tìm thấy nhánh “%s”."
 
-#: builtin/branch.c:271
-#, c-format
-msgid "Error deleting remote-tracking branch '%s'"
-msgstr "Gặp lỗi khi đang xóa nhánh theo dõi máy chủ “%s”"
-
-#: builtin/branch.c:272
-#, c-format
-msgid "Error deleting branch '%s'"
-msgstr "Gặp lỗi khi xóa bỏ nhánh “%s”"
-
-#: builtin/branch.c:279
+#: builtin/branch.c:291
 #, c-format
 msgid "Deleted remote-tracking branch %s (was %s).\n"
 msgstr "Đã xóa nhánh theo dõi máy chủ \"%s\" (từng là %s).\n"
 
-#: builtin/branch.c:280
+#: builtin/branch.c:292
 #, c-format
 msgid "Deleted branch %s (was %s).\n"
 msgstr "Nhánh “%s” đã bị xóa (từng là %s)\n"
 
-#: builtin/branch.c:429 builtin/tag.c:61
+#: builtin/branch.c:438 builtin/tag.c:61
 msgid "unable to parse format string"
 msgstr "không thể phân tích chuỗi định dạng"
 
-#: builtin/branch.c:460
+#: builtin/branch.c:469
 msgid "could not resolve HEAD"
 msgstr "không thể phân giải HEAD"
 
-#: builtin/branch.c:466
+#: builtin/branch.c:475
 #, c-format
 msgid "HEAD (%s) points outside of refs/heads/"
 msgstr "HEAD (%s) chỉ bên ngoài của refs/heads/"
 
-#: builtin/branch.c:481
+#: builtin/branch.c:490
 #, 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:485
+#: builtin/branch.c:494
 #, 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:502
+#: builtin/branch.c:511
 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:504
+#: builtin/branch.c:513
 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:515
+#: builtin/branch.c:524
 #, c-format
 msgid "Invalid branch name: '%s'"
 msgstr "Tên nhánh không hợp lệ: “%s”"
 
-#: builtin/branch.c:544
+#: builtin/branch.c:553
 msgid "Branch rename failed"
 msgstr "Gặp lỗi khi đổi tên nhánh"
 
-#: builtin/branch.c:546
+#: builtin/branch.c:555
 msgid "Branch copy failed"
 msgstr "Gặp lỗi khi sao chép nhánh"
 
-#: builtin/branch.c:550
+#: builtin/branch.c:559
 #, 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:553
+#: builtin/branch.c:562
 #, c-format
 msgid "Renamed a misnamed branch '%s' away"
 msgstr "Đã đổi tên nhánh khuyết danh “%s” đi"
 
-#: builtin/branch.c:559
+#: builtin/branch.c:568
 #, 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:568
+#: builtin/branch.c:577
 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:570
+#: builtin/branch.c:579
 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:586
+#: builtin/branch.c:595
 #, c-format
 msgid ""
 "Please edit the description for the branch\n"
@@ -11052,180 +11341,180 @@ msgstr ""
 "  %s\n"
 "Những dòng được bắt đầu bằng “%c” sẽ được cắt bỏ.\n"
 
-#: builtin/branch.c:620
+#: builtin/branch.c:629
 msgid "Generic options"
 msgstr "Tùy chọn chung"
 
-#: builtin/branch.c:622
+#: builtin/branch.c:631
 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:623
+#: builtin/branch.c:632
 msgid "suppress informational messages"
 msgstr "không xuất các thông tin"
 
-#: builtin/branch.c:624
+#: builtin/branch.c:633
 msgid "set up tracking mode (see git-pull(1))"
 msgstr "cài đặt chế độ theo dõi (xem git-pull(1))"
 
-#: builtin/branch.c:626
+#: builtin/branch.c:635
 msgid "do not use"
 msgstr "không dùng"
 
-#: builtin/branch.c:628 builtin/rebase.c:532
+#: builtin/branch.c:637 builtin/rebase.c:534
 msgid "upstream"
 msgstr "thượng nguồn"
 
-#: builtin/branch.c:628
+#: builtin/branch.c:637
 msgid "change the upstream info"
 msgstr "thay đổi thông tin thượng nguồn"
 
-#: builtin/branch.c:629
+#: builtin/branch.c:638
 msgid "unset the upstream info"
 msgstr "bỏ đặt thông tin thượng nguồn"
 
-#: builtin/branch.c:630
+#: builtin/branch.c:639
 msgid "use colored output"
 msgstr "tô màu kết xuất"
 
-#: builtin/branch.c:631
+#: builtin/branch.c:640
 msgid "act on remote-tracking branches"
 msgstr "thao tác trên nhánh “remote-tracking”"
 
-#: builtin/branch.c:633 builtin/branch.c:635
+#: builtin/branch.c:642 builtin/branch.c:644
 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:634 builtin/branch.c:636
+#: builtin/branch.c:643 builtin/branch.c:645
 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:639
+#: builtin/branch.c:648
 msgid "Specific git-branch actions:"
 msgstr "Hành động git-branch:"
 
-#: builtin/branch.c:640
+#: builtin/branch.c:649
 msgid "list both remote-tracking and local branches"
 msgstr "liệt kê cả nhánh “remote-tracking” và nội bộ"
 
-#: builtin/branch.c:642
+#: builtin/branch.c:651
 msgid "delete fully merged branch"
 msgstr "xóa một toàn bộ nhánh đã hòa trộn"
 
-#: builtin/branch.c:643
+#: builtin/branch.c:652
 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:644
+#: builtin/branch.c:653
 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:645
+#: builtin/branch.c:654
 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:646
+#: builtin/branch.c:655
 msgid "copy a branch and its reflog"
 msgstr "sao chép một nhánh và reflog của nó"
 
-#: builtin/branch.c:647
+#: builtin/branch.c:656
 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:648
+#: builtin/branch.c:657
 msgid "list branch names"
 msgstr "liệt kê các tên nhánh"
 
-#: builtin/branch.c:649
+#: builtin/branch.c:658
 msgid "show current branch name"
 msgstr "hiển thị nhánh hiện hành"
 
-#: builtin/branch.c:650
+#: builtin/branch.c:659
 msgid "create the branch's reflog"
 msgstr "tạo reflog của nhánh"
 
-#: builtin/branch.c:652
+#: builtin/branch.c:661
 msgid "edit the description for the branch"
 msgstr "sửa mô tả cho nhánh"
 
-#: builtin/branch.c:653
+#: builtin/branch.c:662
 msgid "force creation, move/rename, deletion"
 msgstr "buộc tạo, di chuyển/đổi tên, xóa"
 
-#: builtin/branch.c:654
+#: builtin/branch.c:663
 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:655
+#: builtin/branch.c:664
 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:656
+#: builtin/branch.c:665
 msgid "list branches in columns"
 msgstr "liệt kê các nhánh trong các cột"
 
-#: builtin/branch.c:658 builtin/for-each-ref.c:42 builtin/notes.c:415
+#: builtin/branch.c:667 builtin/for-each-ref.c:42 builtin/notes.c:415
 #: builtin/notes.c:418 builtin/notes.c:581 builtin/notes.c:584
-#: builtin/tag.c:434
+#: builtin/tag.c:466
 msgid "object"
 msgstr "đối tượng"
 
-#: builtin/branch.c:659
+#: builtin/branch.c:668
 msgid "print only branches of the object"
 msgstr "chỉ hiển thị các nhánh của đối tượng"
 
-#: builtin/branch.c:660 builtin/for-each-ref.c:48 builtin/tag.c:441
+#: builtin/branch.c:669 builtin/for-each-ref.c:48 builtin/tag.c:473
 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:661 builtin/for-each-ref.c:38 builtin/tag.c:439
+#: builtin/branch.c:670 builtin/for-each-ref.c:38 builtin/tag.c:471
 #: builtin/verify-tag.c:38
 msgid "format to use for the output"
 msgstr "định dạng sẽ dùng cho đầu ra"
 
-#: builtin/branch.c:684 builtin/clone.c:790
+#: builtin/branch.c:693 builtin/clone.c:790
 msgid "HEAD not found below refs/heads!"
 msgstr "Không tìm thấy HEAD ở dưới refs/heads!"
 
-#: builtin/branch.c:708
+#: builtin/branch.c:717
 msgid "--column and --verbose are incompatible"
 msgstr "tùy chọn --column và --verbose xung khắc nhau"
 
-#: builtin/branch.c:723 builtin/branch.c:777 builtin/branch.c:786
+#: builtin/branch.c:732 builtin/branch.c:788 builtin/branch.c:797
 msgid "branch name required"
 msgstr "cần chỉ ra tên nhánh"
 
-#: builtin/branch.c:753
+#: builtin/branch.c:764
 msgid "Cannot give description to detached HEAD"
 msgstr "Không thể đưa ra mô tả HEAD đã tách rời"
 
-#: builtin/branch.c:758
+#: builtin/branch.c:769
 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:765
+#: builtin/branch.c:776
 #, 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:768
+#: builtin/branch.c:779
 #, c-format
 msgid "No branch named '%s'."
 msgstr "Không có nhánh nào có tên “%s”."
 
-#: builtin/branch.c:783
+#: builtin/branch.c:794
 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:792
+#: builtin/branch.c:803
 msgid "too many arguments for a rename operation"
 msgstr "quá nhiều tham số cho thao tác đổi tên"
 
-#: builtin/branch.c:797
+#: builtin/branch.c:808
 msgid "too many arguments to set new upstream"
 msgstr "quá nhiều tham số để đặt thượng nguồn mới"
 
-#: builtin/branch.c:801
+#: builtin/branch.c:812
 #, c-format
 msgid ""
 "could not set upstream of HEAD to %s when it does not point to any branch."
@@ -11233,30 +11522,30 @@ 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:804 builtin/branch.c:827
+#: builtin/branch.c:815 builtin/branch.c:838
 #, c-format
 msgid "no such branch '%s'"
 msgstr "không có nhánh nào như thế “%s”"
 
-#: builtin/branch.c:808
+#: builtin/branch.c:819
 #, c-format
 msgid "branch '%s' does not exist"
 msgstr "chưa có nhánh “%s”"
 
-#: builtin/branch.c:821
+#: builtin/branch.c:832
 msgid "too many arguments to unset upstream"
 msgstr "quá nhiều tham số để bỏ đặt thượng nguồn"
 
-#: builtin/branch.c:825
+#: builtin/branch.c:836
 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:831
+#: builtin/branch.c:842
 #, 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:841
+#: builtin/branch.c:852
 msgid ""
 "The -a, and -r, options to 'git branch' do not take a branch name.\n"
 "Did you mean to use: -a|-r --list <pattern>?"
@@ -11265,7 +11554,7 @@ msgstr ""
 "nhánh.\n"
 "Có phải ý bạn là dùng: -a|-r --list <mẫu>?"
 
-#: builtin/branch.c:845
+#: builtin/branch.c:856
 msgid ""
 "the '--set-upstream' option is no longer supported. Please use '--track' or "
 "'--set-upstream-to' instead."
@@ -11386,19 +11675,19 @@ msgstr "git bundle list-heads <tập tin> [<tên tham chiếu>…]"
 msgid "git bundle unbundle <file> [<refname>...]"
 msgstr "git bundle unbundle <tập tin> [<tên tham chiếu>…]"
 
-#: builtin/bundle.c:67 builtin/pack-objects.c:3480
+#: builtin/bundle.c:67 builtin/pack-objects.c:3495
 msgid "do not show progress meter"
 msgstr "không hiển thị bộ đo tiến trình"
 
-#: builtin/bundle.c:69 builtin/pack-objects.c:3482
+#: builtin/bundle.c:69 builtin/pack-objects.c:3497
 msgid "show progress meter"
 msgstr "hiển thị bộ đo tiến trình"
 
-#: builtin/bundle.c:71 builtin/pack-objects.c:3484
+#: builtin/bundle.c:71 builtin/pack-objects.c:3499
 msgid "show progress meter during object writing phase"
 msgstr "hiển thị bộ đo tiến triển trong suốt pha ghi đối tượng"
 
-#: builtin/bundle.c:74 builtin/pack-objects.c:3487
+#: builtin/bundle.c:74 builtin/pack-objects.c:3502
 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"
 
@@ -11541,8 +11830,8 @@ 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:21 builtin/checkout.c:1500 builtin/gc.c:541
-#: builtin/worktree.c:561
+#: builtin/check-ignore.c:21 builtin/checkout.c:1499 builtin/gc.c:549
+#: builtin/worktree.c:489
 msgid "suppress progress reporting"
 msgstr "chặn các báo cáo tiến trình hoạt động"
 
@@ -11595,55 +11884,55 @@ msgstr "không thể phân tích danh bạ: “%s”"
 msgid "no contacts specified"
 msgstr "chưa chỉ ra danh bạ"
 
-#: builtin/checkout-index.c:139
+#: builtin/checkout-index.c:152
 msgid "git checkout-index [<options>] [--] [<file>...]"
 msgstr "git checkout-index [<các tùy chọn>] [--] [<tập-tin>…]"
 
-#: builtin/checkout-index.c:156
+#: builtin/checkout-index.c:169
 msgid "stage should be between 1 and 3 or all"
 msgstr "stage nên giữa 1 và 3 hay all"
 
-#: builtin/checkout-index.c:173
+#: builtin/checkout-index.c:186
 msgid "check out all files in the index"
 msgstr "lấy ra toàn bộ các tập tin trong bảng mục lục"
 
-#: builtin/checkout-index.c:174
+#: builtin/checkout-index.c:187
 msgid "force overwrite of existing files"
 msgstr "ép buộc ghi đè lên tập tin đã sẵn có từ trước"
 
-#: builtin/checkout-index.c:176
+#: builtin/checkout-index.c:189
 msgid "no warning for existing files and files not in index"
 msgstr ""
 "không cảnh báo cho những tập tin tồn tại và không có trong bảng mục lục"
 
-#: builtin/checkout-index.c:178
+#: builtin/checkout-index.c:191
 msgid "don't checkout new files"
 msgstr "không checkout các tập tin mới"
 
-#: builtin/checkout-index.c:180
+#: builtin/checkout-index.c:193
 msgid "update stat information in the index file"
 msgstr "cập nhật thông tin thống kê trong tập tin lưu bảng mục lục mới"
 
-#: builtin/checkout-index.c:184
+#: builtin/checkout-index.c:197
 msgid "read list of paths from the standard input"
 msgstr "đọc danh sách đường dẫn từ đầu vào tiêu chuẩn"
 
-#: builtin/checkout-index.c:186
+#: builtin/checkout-index.c:199
 msgid "write the content to temporary files"
 msgstr "ghi nội dung vào tập tin tạm"
 
-#: builtin/checkout-index.c:187 builtin/column.c:31
+#: builtin/checkout-index.c:200 builtin/column.c:31
 #: builtin/submodule--helper.c:1824 builtin/submodule--helper.c:1827
 #: builtin/submodule--helper.c:1835 builtin/submodule--helper.c:2333
-#: builtin/worktree.c:757
+#: builtin/worktree.c:717
 msgid "string"
 msgstr "chuỗi"
 
-#: builtin/checkout-index.c:188
+#: builtin/checkout-index.c:201
 msgid "when creating files, prepend <string>"
 msgstr "khi tạo các tập tin, nối thêm <chuỗi>"
 
-#: builtin/checkout-index.c:190
+#: builtin/checkout-index.c:203
 msgid "copy out the files from named stage"
 msgstr "sao chép ra các tập tin từ bệ phóng có tên"
 
@@ -11743,16 +12032,16 @@ msgstr "phải có “%s” khi không chỉ định “%s”"
 msgid "'%s' or '%s' cannot be used with %s"
 msgstr "“%s” hay “%s” không thể được sử dụng với %s"
 
-#: builtin/checkout.c:541 builtin/checkout.c:548
+#: builtin/checkout.c:543 builtin/checkout.c:550
 #, c-format
 msgid "path '%s' is unmerged"
 msgstr "đường dẫn “%s” không được hòa trộn"
 
-#: builtin/checkout.c:716
+#: builtin/checkout.c:718
 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:770
+#: builtin/checkout.c:772
 #, c-format
 msgid ""
 "cannot continue with staged changes in the following files:\n"
@@ -11762,50 +12051,50 @@ msgstr ""
 "sau:\n"
 "%s"
 
-#: builtin/checkout.c:866
+#: builtin/checkout.c:865
 #, 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:908
+#: builtin/checkout.c:907
 msgid "HEAD is now at"
 msgstr "HEAD hiện giờ tại"
 
-#: builtin/checkout.c:912 builtin/clone.c:721 t/helper/test-fast-rebase.c:202
+#: builtin/checkout.c:911 builtin/clone.c:721 t/helper/test-fast-rebase.c:202
 msgid "unable to update HEAD"
 msgstr "không thể cập nhật HEAD"
 
-#: builtin/checkout.c:916
+#: builtin/checkout.c:915
 #, c-format
 msgid "Reset branch '%s'\n"
 msgstr "Đặt lại nhánh “%s”\n"
 
-#: builtin/checkout.c:919
+#: builtin/checkout.c:918
 #, c-format
 msgid "Already on '%s'\n"
 msgstr "Đã sẵn sàng trên “%s”\n"
 
-#: builtin/checkout.c:923
+#: builtin/checkout.c:922
 #, 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:925 builtin/checkout.c:1356
+#: builtin/checkout.c:924 builtin/checkout.c:1355
 #, c-format
 msgid "Switched to a new branch '%s'\n"
 msgstr "Đã chuyển đến nhánh mới “%s”\n"
 
-#: builtin/checkout.c:927
+#: builtin/checkout.c:926
 #, c-format
 msgid "Switched to branch '%s'\n"
 msgstr "Đã chuyển đến nhánh “%s”\n"
 
-#: builtin/checkout.c:978
+#: builtin/checkout.c:977
 #, c-format
 msgid " ... and %d more.\n"
 msgstr " … và nhiều hơn %d.\n"
 
-#: builtin/checkout.c:984
+#: builtin/checkout.c:983
 #, c-format
 msgid ""
 "Warning: you are leaving %d commit behind, not connected to\n"
@@ -11824,7 +12113,7 @@ msgstr[0] ""
 "\n"
 "%s\n"
 
-#: builtin/checkout.c:1003
+#: builtin/checkout.c:1002
 #, c-format
 msgid ""
 "If you want to keep it by creating a new branch, this may be a good time\n"
@@ -11845,19 +12134,19 @@ msgstr[0] ""
 " git branch <tên_nhánh_mới> %s\n"
 "\n"
 
-#: builtin/checkout.c:1038
+#: builtin/checkout.c:1037
 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:1042
+#: builtin/checkout.c:1041
 msgid "Previous HEAD position was"
 msgstr "Vị trí trước kia của HEAD là"
 
-#: builtin/checkout.c:1082 builtin/checkout.c:1351
+#: builtin/checkout.c:1081 builtin/checkout.c:1350
 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:1164
+#: builtin/checkout.c:1163
 #, c-format
 msgid ""
 "'%s' could be both a local file and a tracking branch.\n"
@@ -11866,7 +12155,7 @@ msgstr ""
 "“%s” không thể là cả tập tin nội bộ và một nhánh theo dõi.\n"
 "Vui long dùng -- (và tùy chọn thêm --no-guess) để tránh lẫn lộn"
 
-#: builtin/checkout.c:1171
+#: builtin/checkout.c:1170
 msgid ""
 "If you meant to check out a remote tracking branch on, e.g. 'origin',\n"
 "you can do so by fully qualifying the name with the --track option:\n"
@@ -11886,51 +12175,51 @@ msgstr ""
 "chưa rõ ràng, ví dụ máy chủ “origin”, cân nhắc cài đặt\n"
 "checkout.defaultRemote=origin trong cấu hình của bạn."
 
-#: builtin/checkout.c:1181
+#: builtin/checkout.c:1180
 #, c-format
 msgid "'%s' matched multiple (%d) remote tracking branches"
 msgstr "“%s” khớp với nhiều (%d) nhánh máy chủ được theo dõi"
 
-#: builtin/checkout.c:1247
+#: builtin/checkout.c:1246
 msgid "only one reference expected"
 msgstr "chỉ cần một tham chiếu"
 
-#: builtin/checkout.c:1264
+#: builtin/checkout.c:1263
 #, 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:1310 builtin/worktree.c:342 builtin/worktree.c:510
+#: builtin/checkout.c:1309 builtin/worktree.c:270 builtin/worktree.c:438
 #, c-format
 msgid "invalid reference: %s"
 msgstr "tham chiếu không hợp lệ: %s"
 
-#: builtin/checkout.c:1323 builtin/checkout.c:1689
+#: builtin/checkout.c:1322 builtin/checkout.c:1688
 #, 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:1370
+#: builtin/checkout.c:1369
 #, c-format
 msgid "a branch is expected, got tag '%s'"
 msgstr "cần một nhánh, nhưng lại nhận được thẻ “%s”"
 
-#: builtin/checkout.c:1372
+#: builtin/checkout.c:1371
 #, c-format
 msgid "a branch is expected, got remote branch '%s'"
 msgstr "cần một nhánh, nhưng lại nhận được nhánh máy phục vụ “%s”"
 
-#: builtin/checkout.c:1373 builtin/checkout.c:1381
+#: builtin/checkout.c:1372 builtin/checkout.c:1380
 #, c-format
 msgid "a branch is expected, got '%s'"
 msgstr "cần một nhánh, nhưng lại nhận được “%s”"
 
-#: builtin/checkout.c:1376
+#: builtin/checkout.c:1375
 #, c-format
 msgid "a branch is expected, got commit '%s'"
 msgstr "cần một nhánh, nhưng lại nhận được “%s”"
 
-#: builtin/checkout.c:1392
+#: builtin/checkout.c:1391
 msgid ""
 "cannot switch branch while merging\n"
 "Consider \"git merge --quit\" or \"git worktree add\"."
@@ -11938,7 +12227,7 @@ msgstr ""
 "không thể chuyển nhánh trong khi đang hòa trộn\n"
 "Cân nhắc dung \"git merge --quit\" hoặc \"git worktree add\"."
 
-#: builtin/checkout.c:1396
+#: builtin/checkout.c:1395
 msgid ""
 "cannot switch branch in the middle of an am session\n"
 "Consider \"git am --quit\" or \"git worktree add\"."
@@ -11946,7 +12235,7 @@ msgstr ""
 "không thể chuyển nhanh ở giữa một phiên am\n"
 "Cân nhắc dùng \"git am --quit\" hoặc \"git worktree add\"."
 
-#: builtin/checkout.c:1400
+#: builtin/checkout.c:1399
 msgid ""
 "cannot switch branch while rebasing\n"
 "Consider \"git rebase --quit\" or \"git worktree add\"."
@@ -11954,7 +12243,7 @@ msgstr ""
 "không thể chuyển nhánh trong khi cải tổ\n"
 "Cân nhắc dùng \"git rebase --quit\" hay \"git worktree add\"."
 
-#: builtin/checkout.c:1404
+#: builtin/checkout.c:1403
 msgid ""
 "cannot switch branch while cherry-picking\n"
 "Consider \"git cherry-pick --quit\" or \"git worktree add\"."
@@ -11962,7 +12251,7 @@ msgstr ""
 "không thể chuyển nhánh trong khi  cherry-picking\n"
 "Cân nhắc dùng \"git cherry-pick --quit\" hay \"git worktree add\"."
 
-#: builtin/checkout.c:1408
+#: builtin/checkout.c:1407
 msgid ""
 "cannot switch branch while reverting\n"
 "Consider \"git revert --quit\" or \"git worktree add\"."
@@ -11970,150 +12259,143 @@ msgstr ""
 "không thể chuyển nhánh trong khi hoàn nguyên\n"
 "Cân nhắc dùng \"git revert --quit\" hoặc \"git worktree add\"."
 
-#: builtin/checkout.c:1412
+#: builtin/checkout.c:1411
 msgid "you are switching branch while bisecting"
 msgstr ""
 "bạn hiện tại đang thực hiện việc chuyển nhánh trong khi đang di chuyển nửa "
 "bước"
 
-#: builtin/checkout.c:1419
+#: builtin/checkout.c:1418
 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:1422 builtin/checkout.c:1426 builtin/checkout.c:1430
+#: builtin/checkout.c:1421 builtin/checkout.c:1425 builtin/checkout.c:1429
 #, 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:1434 builtin/checkout.c:1437 builtin/checkout.c:1440
-#: builtin/checkout.c:1445 builtin/checkout.c:1450
+#: builtin/checkout.c:1433 builtin/checkout.c:1436 builtin/checkout.c:1439
+#: builtin/checkout.c:1444 builtin/checkout.c:1449
 #, c-format
 msgid "'%s' cannot be used with '%s'"
 msgstr "“%s” không thể được dùng với “%s”"
 
-#: builtin/checkout.c:1447
+#: builtin/checkout.c:1446
 #, c-format
 msgid "'%s' cannot take <start-point>"
 msgstr "“%s” không thể nhận <điểm-đầu>"
 
-#: builtin/checkout.c:1455
+#: builtin/checkout.c:1454
 #, 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:1462
+#: builtin/checkout.c:1461
 msgid "missing branch or commit argument"
 msgstr "thiếu tham số là nhánh hoặc lần chuyển giao"
 
-#: builtin/checkout.c:1504 builtin/clone.c:92 builtin/commit-graph.c:84
-#: builtin/commit-graph.c:222 builtin/fetch.c:172 builtin/merge.c:296
-#: builtin/multi-pack-index.c:27 builtin/pull.c:119 builtin/push.c:575
-#: builtin/send-pack.c:198
-msgid "force progress reporting"
-msgstr "ép buộc báo cáo tiến triển công việc"
-
-#: builtin/checkout.c:1505
+#: builtin/checkout.c:1504
 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:1506 builtin/log.c:1800 parse-options.h:322
+#: builtin/checkout.c:1505 builtin/log.c:1799 parse-options.h:322
 msgid "style"
 msgstr "kiểu"
 
-#: builtin/checkout.c:1507
+#: builtin/checkout.c:1506
 msgid "conflict style (merge or diff3)"
 msgstr "xung đột kiểu (hòa trộn hoặc diff3)"
 
-#: builtin/checkout.c:1519 builtin/worktree.c:558
+#: builtin/checkout.c:1518 builtin/worktree.c:486
 msgid "detach HEAD at named commit"
 msgstr "rời bỏ HEAD tại lần chuyển giao theo tên"
 
-#: builtin/checkout.c:1520
+#: builtin/checkout.c:1519
 msgid "set upstream info for new branch"
 msgstr "đặt thông tin thượng nguồn cho nhánh mới"
 
-#: builtin/checkout.c:1522
+#: builtin/checkout.c:1521
 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:1524
+#: builtin/checkout.c:1523
 msgid "new-branch"
 msgstr "nhánh-mới"
 
-#: builtin/checkout.c:1524
+#: builtin/checkout.c:1523
 msgid "new unparented branch"
 msgstr "nhánh không cha mới"
 
-#: builtin/checkout.c:1526 builtin/merge.c:300
+#: builtin/checkout.c:1525 builtin/merge.c:301
 msgid "update ignored files (default)"
 msgstr "cập nhật các tập tin bị bỏ qua (mặc định)"
 
-#: builtin/checkout.c:1529
+#: builtin/checkout.c:1528
 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:1542
+#: builtin/checkout.c:1541
 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:1545
+#: builtin/checkout.c:1544
 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:1549
+#: builtin/checkout.c:1548
 msgid "do not limit pathspecs to sparse entries only"
 msgstr "không giới hạn đặc tả đường dẫn thành chỉ các mục rải rác"
 
-#: builtin/checkout.c:1604
+#: builtin/checkout.c:1603
 #, c-format
 msgid "-%c, -%c and --orphan are mutually exclusive"
 msgstr "-%c, -%c và --orphan loại từ lẫn nhau"
 
-#: builtin/checkout.c:1608
+#: builtin/checkout.c:1607
 msgid "-p and --overlay are mutually exclusive"
 msgstr "-p và --overlay loại từ lẫn nhau"
 
-#: builtin/checkout.c:1645
+#: builtin/checkout.c:1644
 msgid "--track needs a branch name"
 msgstr "--track cần tên một nhánh"
 
-#: builtin/checkout.c:1650
+#: builtin/checkout.c:1649
 #, c-format
 msgid "missing branch name; try -%c"
 msgstr "thiếu tên nhánh; hãy thử -%c"
 
-#: builtin/checkout.c:1682
+#: builtin/checkout.c:1681
 #, c-format
 msgid "could not resolve %s"
 msgstr "không thể phân giải “%s”"
 
-#: builtin/checkout.c:1698
+#: builtin/checkout.c:1697
 msgid "invalid path specification"
 msgstr "đường dẫn đã cho không hợp lệ"
 
-#: builtin/checkout.c:1705
+#: builtin/checkout.c:1704
 #, 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:1709
+#: builtin/checkout.c:1708
 #, 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:1718
+#: builtin/checkout.c:1717
 msgid "--pathspec-from-file is incompatible with --detach"
 msgstr "--pathspec-from-file xung khắc với --detach"
 
-#: builtin/checkout.c:1721 builtin/reset.c:325 builtin/stash.c:1499
+#: builtin/checkout.c:1720 builtin/reset.c:325 builtin/stash.c:1566
 msgid "--pathspec-from-file is incompatible with --patch"
 msgstr "--pathspec-from-file xung khắc với --patch"
 
-#: builtin/checkout.c:1734
+#: builtin/checkout.c:1733
 msgid ""
 "git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
 "checking out of the index."
@@ -12121,70 +12403,70 @@ msgstr ""
 "git checkout: --ours/--theirs, --force và --merge là xung khắc với nhau khi\n"
 "checkout bảng mục lục (index)."
 
-#: builtin/checkout.c:1739
+#: builtin/checkout.c:1738
 msgid "you must specify path(s) to restore"
 msgstr "bạn phải chỉ định các thư mục muốn hồi phục"
 
-#: builtin/checkout.c:1765 builtin/checkout.c:1767 builtin/checkout.c:1816
-#: builtin/checkout.c:1818 builtin/clone.c:122 builtin/remote.c:170
-#: builtin/remote.c:172 builtin/submodule--helper.c:2719 builtin/worktree.c:554
-#: builtin/worktree.c:556
+#: builtin/checkout.c:1764 builtin/checkout.c:1766 builtin/checkout.c:1815
+#: builtin/checkout.c:1817 builtin/clone.c:122 builtin/remote.c:170
+#: builtin/remote.c:172 builtin/submodule--helper.c:2719 builtin/worktree.c:482
+#: builtin/worktree.c:484
 msgid "branch"
 msgstr "nhánh"
 
-#: builtin/checkout.c:1766
+#: builtin/checkout.c:1765
 msgid "create and checkout a new branch"
 msgstr "tạo và checkout một nhánh mới"
 
-#: builtin/checkout.c:1768
+#: builtin/checkout.c:1767
 msgid "create/reset and checkout a branch"
 msgstr "tạo/đặt_lại và checkout một nhánh"
 
-#: builtin/checkout.c:1769
+#: builtin/checkout.c:1768
 msgid "create reflog for new branch"
 msgstr "tạo reflog cho nhánh mới"
 
-#: builtin/checkout.c:1771
+#: builtin/checkout.c:1770
 msgid "second guess 'git checkout <no-such-branch>' (default)"
 msgstr "đoán thứ hai “git checkout <không-nhánh-nào-như-vậy>” (mặc định)"
 
-#: builtin/checkout.c:1772
+#: builtin/checkout.c:1771
 msgid "use overlay mode (default)"
 msgstr "dùng chế độ che phủ (mặc định)"
 
-#: builtin/checkout.c:1817
+#: builtin/checkout.c:1816
 msgid "create and switch to a new branch"
 msgstr "tạo và chuyển đến một nhánh mới"
 
-#: builtin/checkout.c:1819
+#: builtin/checkout.c:1818
 msgid "create/reset and switch to a branch"
 msgstr "tạo/đặt_lại và chuyển đến một nhánh"
 
-#: builtin/checkout.c:1821
+#: builtin/checkout.c:1820
 msgid "second guess 'git switch <no-such-branch>'"
 msgstr "gợi ý thứ hai \"git checkout <không-nhánh-nào-như-vậy>\""
 
-#: builtin/checkout.c:1823
+#: builtin/checkout.c:1822
 msgid "throw away local modifications"
 msgstr "vứt bỏ các sửa đổi địa phương"
 
-#: builtin/checkout.c:1857
+#: builtin/checkout.c:1856
 msgid "which tree-ish to checkout from"
 msgstr "lấy ra từ tree-ish nào"
 
-#: builtin/checkout.c:1859
+#: builtin/checkout.c:1858
 msgid "restore the index"
 msgstr "phục hồi bảng mục lục"
 
-#: builtin/checkout.c:1861
+#: builtin/checkout.c:1860
 msgid "restore the working tree (default)"
 msgstr "phục hồi cây làm việc (mặc định)"
 
-#: builtin/checkout.c:1863
+#: builtin/checkout.c:1862
 msgid "ignore unmerged entries"
 msgstr "bỏ qua những thứ chưa hòa trộn: %s"
 
-#: builtin/checkout.c:1864
+#: builtin/checkout.c:1863
 msgid "use overlay mode"
 msgstr "dùng chế độ che phủ"
 
@@ -12329,8 +12611,8 @@ msgid "remove whole directories"
 msgstr "gỡ bỏ toàn bộ thư mục"
 
 #: builtin/clean.c:909 builtin/describe.c:565 builtin/describe.c:567
-#: builtin/grep.c:921 builtin/log.c:183 builtin/log.c:185
-#: builtin/ls-files.c:558 builtin/name-rev.c:526 builtin/name-rev.c:528
+#: builtin/grep.c:922 builtin/log.c:184 builtin/log.c:186
+#: builtin/ls-files.c:573 builtin/name-rev.c:526 builtin/name-rev.c:528
 #: builtin/show-ref.c:179
 msgid "pattern"
 msgstr "mẫu"
@@ -12426,7 +12708,7 @@ msgid "use --reference only while cloning"
 msgstr "chỉ dùng --reference khi nhân bản"
 
 #: builtin/clone.c:120 builtin/column.c:27 builtin/init-db.c:563
-#: builtin/merge-file.c:46 builtin/pack-objects.c:3546 builtin/repack.c:358
+#: builtin/merge-file.c:46 builtin/pack-objects.c:3561 builtin/repack.c:357
 msgid "name"
 msgstr "tên"
 
@@ -12442,7 +12724,7 @@ msgstr "lấy ra <nhánh> thay cho HEAD của máy chủ"
 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:126 builtin/fetch.c:173 builtin/grep.c:860
+#: builtin/clone.c:126 builtin/fetch.c:176 builtin/grep.c:861
 #: builtin/pull.c:208
 msgid "depth"
 msgstr "độ-sâu"
@@ -12451,7 +12733,7 @@ msgstr "độ-sâu"
 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:128 builtin/fetch.c:175 builtin/pack-objects.c:3535
+#: builtin/clone.c:128 builtin/fetch.c:178 builtin/pack-objects.c:3550
 #: builtin/pull.c:211
 msgid "time"
 msgstr "thời-gian"
@@ -12460,12 +12742,12 @@ msgstr "thời-gian"
 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:130 builtin/fetch.c:177 builtin/fetch.c:200
-#: builtin/pull.c:214 builtin/pull.c:239 builtin/rebase.c:1317
+#: builtin/clone.c:130 builtin/fetch.c:180 builtin/fetch.c:203
+#: builtin/pull.c:214 builtin/pull.c:239 builtin/rebase.c:1323
 msgid "revision"
 msgstr "điểm xét duyệt"
 
-#: builtin/clone.c:131 builtin/fetch.c:178 builtin/pull.c:215
+#: builtin/clone.c:131 builtin/fetch.c:181 builtin/pull.c:215
 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ừ"
 
@@ -12500,22 +12782,22 @@ msgstr "khóa=giá_trị"
 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:143 builtin/fetch.c:195 builtin/ls-remote.c:76
+#: builtin/clone.c:143 builtin/fetch.c:198 builtin/ls-remote.c:77
 #: builtin/pull.c:230 builtin/push.c:584 builtin/send-pack.c:196
 msgid "server-specific"
 msgstr "đặc-tả-máy-phục-vụ"
 
-#: builtin/clone.c:143 builtin/fetch.c:195 builtin/ls-remote.c:76
+#: builtin/clone.c:143 builtin/fetch.c:198 builtin/ls-remote.c:77
 #: builtin/pull.c:231 builtin/push.c:584 builtin/send-pack.c:197
 msgid "option to transmit"
 msgstr "tùy chọn để chuyển giao"
 
-#: builtin/clone.c:144 builtin/fetch.c:196 builtin/pull.c:234
+#: builtin/clone.c:144 builtin/fetch.c:199 builtin/pull.c:234
 #: builtin/push.c:585
 msgid "use IPv4 addresses only"
 msgstr "chỉ dùng địa chỉ IPv4"
 
-#: builtin/clone.c:146 builtin/fetch.c:198 builtin/pull.c:237
+#: builtin/clone.c:146 builtin/fetch.c:201 builtin/pull.c:237
 #: builtin/push.c:587
 msgid "use IPv6 addresses only"
 msgstr "chỉ dùng địa chỉ IPv6"
@@ -12615,71 +12897,71 @@ msgstr "không thể đóng gói để dọn dẹp"
 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:992 builtin/receive-pack.c:2493
+#: builtin/clone.c:993 builtin/receive-pack.c:2493
 msgid "Too many arguments."
 msgstr "Có quá nhiều đối số."
 
-#: builtin/clone.c:996
+#: builtin/clone.c:997
 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:1009
+#: builtin/clone.c:1010
 #, 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:1012
+#: builtin/clone.c:1013
 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:1025
+#: builtin/clone.c:1026
 #, c-format
 msgid "repository '%s' does not exist"
 msgstr "kho chứa “%s” chưa tồn tại"
 
-#: builtin/clone.c:1029 builtin/fetch.c:1841
+#: builtin/clone.c:1030 builtin/fetch.c:1951
 #, 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:1039
+#: builtin/clone.c:1040
 #, 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:1045
+#: builtin/clone.c:1046
 #, c-format
 msgid "repository path '%s' already exists and is not an empty directory."
 msgstr ""
 "đường dẫn kho chứa “%s” đã có từ trước và không phải là một thư mục rỗng."
 
-#: builtin/clone.c:1059
+#: builtin/clone.c:1060
 #, 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:1074 builtin/clone.c:1095 builtin/difftool.c:271
-#: builtin/log.c:1987 builtin/worktree.c:354 builtin/worktree.c:386
+#: builtin/clone.c:1075 builtin/clone.c:1096 builtin/difftool.c:271
+#: builtin/log.c:1986 builtin/worktree.c:282 builtin/worktree.c:314
 #, 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:1079
+#: builtin/clone.c:1080
 #, 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:1099
+#: builtin/clone.c:1100
 #, 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:1101
+#: builtin/clone.c:1102
 #, c-format
 msgid "Cloning into '%s'...\n"
 msgstr "Đang nhân bản thành “%s”…\n"
 
-#: builtin/clone.c:1125
+#: builtin/clone.c:1126
 msgid ""
 "clone --recursive is not compatible with both --reference and --reference-if-"
 "able"
@@ -12687,46 +12969,46 @@ msgstr ""
 "nhân bản --recursive không tương thích với cả hai --reference và --reference-"
 "if-able"
 
-#: builtin/clone.c:1169 builtin/remote.c:200 builtin/remote.c:705
+#: builtin/clone.c:1170 builtin/remote.c:200 builtin/remote.c:705
 #, 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/clone.c:1210
+#: builtin/clone.c:1211
 msgid "--depth is ignored in local clones; use file:// instead."
 msgstr "--depth bị lờ đi khi nhân bản nội bộ; hãy sử dụng file:// để thay thế."
 
-#: builtin/clone.c:1212
+#: builtin/clone.c:1213
 msgid "--shallow-since is ignored in local clones; use file:// instead."
 msgstr ""
 "--shallow-since bị lờ đi khi nhân bản nội bộ; hãy sử dụng file:// để thay "
 "thế."
 
-#: builtin/clone.c:1214
+#: builtin/clone.c:1215
 msgid "--shallow-exclude is ignored in local clones; use file:// instead."
 msgstr ""
 "--shallow-exclude bị lờ đi khi nhân bản nội bộ; hãy sử dụng file:// để thay "
 "thế."
 
-#: builtin/clone.c:1216
+#: builtin/clone.c:1217
 msgid "--filter is ignored in local clones; use file:// instead."
 msgstr ""
 "--filter bị lờ đi khi nhân bản nội bộ; hãy sử dụng file:// để thay thế."
 
-#: builtin/clone.c:1219
+#: builtin/clone.c:1220
 msgid "source repository is shallow, ignoring --local"
 msgstr "kho nguồn là nông, nên bỏ qua --local"
 
-#: builtin/clone.c:1224
+#: builtin/clone.c:1225
 msgid "--local is ignored"
 msgstr "--local bị lờ đi"
 
-#: builtin/clone.c:1311 builtin/clone.c:1319
+#: builtin/clone.c:1315 builtin/clone.c:1323
 #, c-format
 msgid "Remote branch %s not found in upstream %s"
 msgstr "Nhánh máy chủ %s không tìm thấy trong thượng nguồn %s"
 
-#: builtin/clone.c:1322
+#: builtin/clone.c:1326
 msgid "You appear to have cloned an empty repository."
 msgstr "Bạn hình như là đã nhân bản một kho trống rỗng."
 
@@ -12786,14 +13068,14 @@ msgid "could not find object directory matching %s"
 msgstr "không thể tìm thấy thư mục đối tượng khớp với “%s”"
 
 #: builtin/commit-graph.c:80 builtin/commit-graph.c:210
-#: builtin/commit-graph.c:316 builtin/fetch.c:184 builtin/log.c:1769
+#: builtin/commit-graph.c:316 builtin/fetch.c:187 builtin/log.c:1768
 msgid "dir"
 msgstr "tmục"
 
 #: builtin/commit-graph.c:81 builtin/commit-graph.c:211
 #: builtin/commit-graph.c:317
-msgid "The object directory to store the graph"
-msgstr "Thư mục đối tượng để lưu đồ thị"
+msgid "the object directory to store the graph"
+msgstr "thư mục đối tượng để lưu đồ thị"
 
 #: builtin/commit-graph.c:83
 msgid "if the commit-graph is split, only verify the tip file"
@@ -12889,7 +13171,7 @@ msgstr ""
 msgid "duplicate parent %s ignored"
 msgstr "cha mẹ bị trùng lặp %s đã bị bỏ qua"
 
-#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:555
+#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:557
 #, c-format
 msgid "not a valid object name %s"
 msgstr "không phải là tên đối tượng hợp lệ “%s”"
@@ -12917,9 +13199,9 @@ msgstr "cha-mẹ"
 msgid "id of a parent commit object"
 msgstr "mã số của đối tượng chuyển giao cha mẹ"
 
-#: builtin/commit-tree.c:114 builtin/commit.c:1504 builtin/merge.c:281
-#: builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1470
-#: builtin/tag.c:413
+#: builtin/commit-tree.c:114 builtin/commit.c:1504 builtin/merge.c:282
+#: builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1537
+#: builtin/tag.c:445
 msgid "message"
 msgstr "chú thích"
 
@@ -12931,7 +13213,7 @@ msgstr "chú thích của lần chuyển giao"
 msgid "read commit log message from file"
 msgstr "đọc chú thích nhật ký lần chuyển giao từ tập tin"
 
-#: builtin/commit-tree.c:121 builtin/commit.c:1516 builtin/merge.c:298
+#: builtin/commit-tree.c:121 builtin/commit.c:1516 builtin/merge.c:299
 #: builtin/pull.c:176 builtin/revert.c:118
 msgid "GPG sign commit"
 msgstr "Ký lần chuyển giao dùng GPG"
@@ -13092,7 +13374,7 @@ msgstr ""
 msgid "could not lookup commit %s"
 msgstr "không thể tìm kiếm commit (lần chuyển giao) %s"
 
-#: builtin/commit.c:729 builtin/shortlog.c:425
+#: builtin/commit.c:729 builtin/shortlog.c:413
 #, 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"
@@ -13192,7 +13474,7 @@ msgstr "Không đọc được bảng mục lục"
 msgid "Error building trees"
 msgstr "Gặp lỗi khi xây dựng cây"
 
-#: builtin/commit.c:1011 builtin/tag.c:276
+#: builtin/commit.c:1011 builtin/tag.c:308
 #, 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"
@@ -13291,7 +13573,7 @@ msgid "version"
 msgstr "phiên bản"
 
 #: builtin/commit.c:1374 builtin/commit.c:1533 builtin/push.c:560
-#: builtin/worktree.c:725
+#: builtin/worktree.c:679
 msgid "machine-readable output"
 msgstr "kết xuất dạng máy-có-thể-đọc"
 
@@ -13305,7 +13587,7 @@ msgstr "chấm dứt các mục bằng NUL"
 
 #: builtin/commit.c:1382 builtin/commit.c:1386 builtin/commit.c:1541
 #: builtin/fast-export.c:1198 builtin/fast-export.c:1201
-#: builtin/fast-export.c:1204 builtin/rebase.c:1406 parse-options.h:336
+#: builtin/fast-export.c:1204 builtin/rebase.c:1412 parse-options.h:336
 msgid "mode"
 msgstr "chế độ"
 
@@ -13364,7 +13646,7 @@ msgstr "hiển thị sự khác biệt trong mẫu tin nhắn chuyển giao"
 msgid "Commit message options"
 msgstr "Các tùy chọn ghi chú commit"
 
-#: builtin/commit.c:1501 builtin/merge.c:285 builtin/tag.c:415
+#: builtin/commit.c:1501 builtin/merge.c:286 builtin/tag.c:447
 msgid "read message from file"
 msgstr "đọc chú thích từ tập tin"
 
@@ -13376,7 +13658,7 @@ msgstr "tác giả"
 msgid "override author for commit"
 msgstr "ghi đè tác giả cho commit"
 
-#: builtin/commit.c:1503 builtin/gc.c:542
+#: builtin/commit.c:1503 builtin/gc.c:550
 msgid "date"
 msgstr "ngày tháng"
 
@@ -13385,7 +13667,7 @@ msgid "override date for commit"
 msgstr "ghi đè ngày tháng cho lần chuyển giao"
 
 #: builtin/commit.c:1505 builtin/commit.c:1506 builtin/commit.c:1507
-#: builtin/commit.c:1508 parse-options.h:328 ref-filter.h:87
+#: builtin/commit.c:1508 parse-options.h:328 ref-filter.h:90
 msgid "commit"
 msgstr "lần_chuyển_giao"
 
@@ -13413,7 +13695,7 @@ 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:1510 builtin/log.c:1744 builtin/merge.c:301
+#: builtin/commit.c:1510 builtin/log.c:1743 builtin/merge.c:302
 #: builtin/pull.c:145 builtin/revert.c:110
 msgid "add a Signed-off-by trailer"
 msgstr "thêm dòng Signed-off-by vào cuối"
@@ -14052,41 +14334,41 @@ msgstr "--stdin và --merge-base loại từ lẫn nhau"
 msgid "--merge-base only works with two commits"
 msgstr "--merge-base chỉ hoạt động với hai lần chuyển giao"
 
-#: builtin/diff.c:91
+#: builtin/diff.c:92
 #, c-format
 msgid "'%s': not a regular file or symlink"
 msgstr "“%s”: không phải tập tin bình thường hay liên kết mềm"
 
-#: builtin/diff.c:258
+#: builtin/diff.c:259
 #, c-format
 msgid "invalid option: %s"
 msgstr "tùy chọn không hợp lệ: %s"
 
-#: builtin/diff.c:375
+#: builtin/diff.c:376
 #, c-format
 msgid "%s...%s: no merge base"
 msgstr "%s…%s: không có cơ sở hòa trộn"
 
-#: builtin/diff.c:485
+#: builtin/diff.c:486
 msgid "Not a git repository"
 msgstr "Không phải là kho git"
 
-#: builtin/diff.c:530 builtin/grep.c:681
+#: builtin/diff.c:532 builtin/grep.c:682
 #, c-format
 msgid "invalid object '%s' given."
 msgstr "đối tượng đã cho “%s” không hợp lệ."
 
-#: builtin/diff.c:541
+#: builtin/diff.c:543
 #, c-format
 msgid "more than two blobs given: '%s'"
 msgstr "đã cho nhiều hơn hai đối tượng blob: “%s”"
 
-#: builtin/diff.c:546
+#: builtin/diff.c:548
 #, c-format
 msgid "unhandled object '%s' given."
 msgstr "đã cho đối tượng không thể nắm giữ “%s”."
 
-#: builtin/diff.c:580
+#: builtin/diff.c:582
 #, c-format
 msgid "%s...%s: multiple merge bases, using %s"
 msgstr "%s…%s: có nhiều cơ sở để hòa trộn, nên dùng %s"
@@ -14268,40 +14550,40 @@ msgstr ""
 "chọn bộ xử lý cho các ghi chú của lần chuyển giao theo một bộ mã thay thế"
 
 #: builtin/fast-export.c:1208
-msgid "Dump marks to this file"
-msgstr "Ä\90ổ các đánh dấu này vào tập-tin"
+msgid "dump marks to this file"
+msgstr "Ä\91ổ các đánh dấu này vào tập-tin"
 
 #: builtin/fast-export.c:1210
-msgid "Import marks from this file"
-msgstr "Nhập vào đánh dấu từ tập tin này"
+msgid "import marks from this file"
+msgstr "nhập vào đánh dấu từ tập tin này"
 
 #: builtin/fast-export.c:1214
-msgid "Import marks from this file if it exists"
-msgstr "Nhập vào đánh dấu từ tập tin sẵn có"
+msgid "import marks from this file if it exists"
+msgstr "nhập vào đánh dấu từ tập tin sẵn có"
 
 #: builtin/fast-export.c:1216
-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"
+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:1218
-msgid "Output full tree for each commit"
-msgstr "Xuất ra toàn bộ cây cho mỗi lần chuyển giao"
+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:1220
-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"
+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:1221
-msgid "Skip output of blob data"
-msgstr "Bỏ qua kết xuất của dữ liệu blob"
+msgid "skip output of blob data"
+msgstr "bỏ qua kết xuất của dữ liệu blob"
 
-#: builtin/fast-export.c:1222 builtin/log.c:1816
+#: builtin/fast-export.c:1222 builtin/log.c:1815
 msgid "refspec"
 msgstr "refspec"
 
 #: builtin/fast-export.c:1223
-msgid "Apply refspec to exported refs"
-msgstr "Ã\81p dụng refspec cho refs đã xuất"
+msgid "apply refspec to exported refs"
+msgstr "áp dụng refspec cho refs đã xuất"
 
 #: builtin/fast-export.c:1224
 msgid "anonymize output"
@@ -14316,18 +14598,18 @@ msgid "convert <from> to <to> in anonymized output"
 msgstr "chuyển đổi <from> sang <to> đầu ra ẩn danh"
 
 #: builtin/fast-export.c:1229
-msgid "Reference parents which are not in fast-export stream by object id"
+msgid "reference parents which are not in fast-export stream by object id"
 msgstr ""
-"Các cha mẹ tham chiếu cái mà k trong luồng dữ liệu fast-export bởi mã id đối "
-"tượng"
+"các cha mẹ tham chiếu cái mà không trong luồng dữ liệu fast-export bởi mã id "
+"đối tượng"
 
 #: builtin/fast-export.c:1231
-msgid "Show original object ids of blobs/commits"
-msgstr "Hiển thị các mã id nguyên gốc của blobs/commits"
+msgid "show original object ids of blobs/commits"
+msgstr "hiển thị các mã id nguyên gốc của blobs/commits"
 
 #: builtin/fast-export.c:1233
-msgid "Label tags with mark ids"
-msgstr "Gắn nhãn thẻ ID dấu"
+msgid "label tags with mark ids"
+msgstr "gắn thẻ với các mã ID đánh dấu"
 
 #: builtin/fast-export.c:1256
 msgid "--anonymize-map without --anonymize does not make sense"
@@ -14367,7 +14649,7 @@ msgid "feature '%s' forbidden in input without --allow-unsafe-features"
 msgstr ""
 "tính năng “%s” bị cấm chỉ trong đầu vào mà không có --allow-unsafe-features"
 
-#: builtin/fetch-pack.c:241
+#: builtin/fetch-pack.c:242
 #, c-format
 msgid "Lockfile created but not reported: %s"
 msgstr "Tập tin khóa đã được tạo nhưng chưa được báo cáo: %s"
@@ -14388,94 +14670,98 @@ msgstr "git fetch --multiple [<các tùy chọn>] [(<kho> | <nhóm>)…]"
 msgid "git fetch --all [<options>]"
 msgstr "git fetch --all [<các tùy chọn>]"
 
-#: builtin/fetch.c:119
+#: builtin/fetch.c:120
 msgid "fetch.parallel cannot be negative"
 msgstr "fetch.parallel không thể âm"
 
-#: builtin/fetch.c:142 builtin/pull.c:185
+#: builtin/fetch.c:143 builtin/pull.c:185
 msgid "fetch from all remotes"
 msgstr "lấy về từ tất cả các máy chủ"
 
-#: builtin/fetch.c:144 builtin/pull.c:245
+#: builtin/fetch.c:145 builtin/pull.c:245
 msgid "set upstream for git pull/fetch"
 msgstr "đặt thượng nguồn cho git pull/fetch"
 
-#: builtin/fetch.c:146 builtin/pull.c:188
+#: builtin/fetch.c:147 builtin/pull.c:188
 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:148 builtin/pull.c:191
+#: builtin/fetch.c:149
+msgid "use atomic transaction to update references"
+msgstr "sử dụng giao dịch hạt nhân bên phía máy chủ"
+
+#: builtin/fetch.c:151 builtin/pull.c:191
 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:149
+#: builtin/fetch.c:152
 msgid "force overwrite of local reference"
 msgstr "ép buộc ghi đè lên tham chiếu nội bộ"
 
-#: builtin/fetch.c:151
+#: builtin/fetch.c:154
 msgid "fetch from multiple remotes"
 msgstr "lấy từ nhiều máy chủ cùng lúc"
 
-#: builtin/fetch.c:153 builtin/pull.c:195
+#: builtin/fetch.c:156 builtin/pull.c:195
 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:155
+#: builtin/fetch.c:158
 msgid "do not fetch all tags (--no-tags)"
 msgstr "không lấy tất cả các thẻ (--no-tags)"
 
-#: builtin/fetch.c:157
+#: builtin/fetch.c:160
 msgid "number of submodules fetched in parallel"
 msgstr "số lượng mô-đun-con được lấy đồng thời"
 
-#: builtin/fetch.c:159 builtin/pull.c:198
+#: builtin/fetch.c:162 builtin/pull.c:198
 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:161
+#: builtin/fetch.c:164
 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:162 builtin/fetch.c:187 builtin/pull.c:122
+#: builtin/fetch.c:165 builtin/fetch.c:190 builtin/pull.c:122
 msgid "on-demand"
 msgstr "khi-cần"
 
-#: builtin/fetch.c:163
+#: builtin/fetch.c:166
 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:168
+#: builtin/fetch.c:171
 msgid "write fetched references to the FETCH_HEAD file"
 msgstr "ghi các tham chiếu lấy về vào tập tin FETCH_HEAD"
 
-#: builtin/fetch.c:169 builtin/pull.c:206
+#: builtin/fetch.c:172 builtin/pull.c:206
 msgid "keep downloaded pack"
 msgstr "giữ lại gói đã tải về"
 
-#: builtin/fetch.c:171
+#: builtin/fetch.c:174
 msgid "allow updating of HEAD ref"
 msgstr "cho phép cập nhật th.chiếu HEAD"
 
-#: builtin/fetch.c:174 builtin/fetch.c:180 builtin/pull.c:209
+#: builtin/fetch.c:177 builtin/fetch.c:183 builtin/pull.c:209
 #: builtin/pull.c:218
 msgid "deepen history of shallow clone"
 msgstr "làm sâu hơn lịch sử của bản sao"
 
-#: builtin/fetch.c:176 builtin/pull.c:212
+#: builtin/fetch.c:179 builtin/pull.c:212
 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:182 builtin/pull.c:221
+#: builtin/fetch.c:185 builtin/pull.c:221
 msgid "convert to a complete repository"
 msgstr "chuyển đổi hoàn toàn sang kho git"
 
-#: builtin/fetch.c:185
+#: builtin/fetch.c:188
 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:188
+#: builtin/fetch.c:191
 msgid ""
 "default for recursive fetching of submodules (lower priority than config "
 "files)"
@@ -14483,99 +14769,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:192 builtin/pull.c:224
+#: builtin/fetch.c:195 builtin/pull.c:224
 msgid "accept refs that update .git/shallow"
 msgstr "chấp nhận tham chiếu cập nhật .git/shallow"
 
-#: builtin/fetch.c:193 builtin/pull.c:226
+#: builtin/fetch.c:196 builtin/pull.c:226
 msgid "refmap"
 msgstr "refmap"
 
-#: builtin/fetch.c:194 builtin/pull.c:227
+#: builtin/fetch.c:197 builtin/pull.c:227
 msgid "specify fetch refmap"
 msgstr "chỉ ra refmap cần lấy về"
 
-#: builtin/fetch.c:201 builtin/pull.c:240
+#: builtin/fetch.c:204 builtin/pull.c:240
 msgid "report that we have only objects reachable from this object"
 msgstr ""
 "báo cáo rằng chúng ta chỉ có các đối tượng tiếp cận được từ đối tượng này"
 
-#: builtin/fetch.c:204 builtin/fetch.c:206
+#: builtin/fetch.c:207 builtin/fetch.c:209
 msgid "run 'maintenance --auto' after fetching"
 msgstr "chạy “maintenance --auto” sau khi lấy về"
 
-#: builtin/fetch.c:208 builtin/pull.c:243
+#: builtin/fetch.c:211 builtin/pull.c:243
 msgid "check for forced-updates on all updated branches"
 msgstr "kiểm cho các-cập-nhật-bắt-buộc trên mọi nhánh đã cập nhật"
 
-#: builtin/fetch.c:210
+#: builtin/fetch.c:213
 msgid "write the commit-graph after fetching"
 msgstr "ghi ra đồ thị các lần chuyển giao sau khi lấy về"
 
-#: builtin/fetch.c:212
+#: builtin/fetch.c:215
 msgid "accept refspecs from stdin"
 msgstr "chấp nhận tham chiếu từ đầu vào tiêu chuẩn"
 
-#: builtin/fetch.c:523
+#: builtin/fetch.c:526
 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:677
+#: builtin/fetch.c:697
 #, 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:775
+#: builtin/fetch.c:796
 #, c-format
 msgid "object %s not found"
 msgstr "không tìm thấy đối tượng %s"
 
-#: builtin/fetch.c:779
+#: builtin/fetch.c:800
 msgid "[up to date]"
 msgstr "[đã cập nhật]"
 
-#: builtin/fetch.c:792 builtin/fetch.c:808 builtin/fetch.c:880
+#: builtin/fetch.c:813 builtin/fetch.c:829 builtin/fetch.c:901
 msgid "[rejected]"
 msgstr "[Bị từ chối]"
 
-#: builtin/fetch.c:793
+#: builtin/fetch.c:814
 msgid "can't fetch in current branch"
 msgstr "không thể fetch (lấy) về nhánh hiện hành"
 
-#: builtin/fetch.c:803
+#: builtin/fetch.c:824
 msgid "[tag update]"
 msgstr "[cập nhật thẻ]"
 
-#: builtin/fetch.c:804 builtin/fetch.c:841 builtin/fetch.c:863
-#: builtin/fetch.c:875
+#: builtin/fetch.c:825 builtin/fetch.c:862 builtin/fetch.c:884
+#: builtin/fetch.c:896
 msgid "unable to update local ref"
 msgstr "không thể cập nhật tham chiếu nội bộ"
 
-#: builtin/fetch.c:808
+#: builtin/fetch.c:829
 msgid "would clobber existing tag"
 msgstr "nên xóa chồng các thẻ có sẵn"
 
-#: builtin/fetch.c:830
+#: builtin/fetch.c:851
 msgid "[new tag]"
 msgstr "[thẻ mới]"
 
-#: builtin/fetch.c:833
+#: builtin/fetch.c:854
 msgid "[new branch]"
 msgstr "[nhánh mới]"
 
-#: builtin/fetch.c:836
+#: builtin/fetch.c:857
 msgid "[new ref]"
 msgstr "[ref (tham chiếu) mới]"
 
-#: builtin/fetch.c:875
+#: builtin/fetch.c:896
 msgid "forced update"
 msgstr "cưỡng bức cập nhật"
 
-#: builtin/fetch.c:880
+#: builtin/fetch.c:901
 msgid "non-fast-forward"
 msgstr "không-phải-chuyển-tiếp-nhanh"
 
-#: builtin/fetch.c:901
+#: builtin/fetch.c:1005
 msgid ""
 "Fetch normally indicates which branches had a forced update,\n"
 "but that check has been disabled. To re-enable, use '--show-forced-updates'\n"
@@ -14585,7 +14871,7 @@ msgstr ""
 "nhưng lựa chọn bị tắt. Để kích hoạt lại, sử dụng cờ\n"
 "“--show-forced-updates” hoặc chạy “git config fetch.showForcedUpdates true”."
 
-#: builtin/fetch.c:905
+#: builtin/fetch.c:1009
 #, c-format
 msgid ""
 "It took %.2f seconds to check forced updates. You can use\n"
@@ -14598,22 +14884,22 @@ msgstr ""
 "false”\n"
 "để tránh kiểm tra này.\n"
 
-#: builtin/fetch.c:939
+#: builtin/fetch.c:1041
 #, 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:960
+#: builtin/fetch.c:1069
 #, 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:1053 builtin/fetch.c:1191
+#: builtin/fetch.c:1146 builtin/fetch.c:1297
 #, c-format
 msgid "From %.*s\n"
 msgstr "Từ %.*s\n"
 
-#: builtin/fetch.c:1064
+#: builtin/fetch.c:1168
 #, c-format
 msgid ""
 "some local refs could not be updated; try running\n"
@@ -14622,58 +14908,58 @@ 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:1161
+#: builtin/fetch.c:1267
 #, 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:1162
+#: builtin/fetch.c:1268
 #, c-format
 msgid "   (%s has become dangling)"
 msgstr "   (%s đã trở thành không đầu (không được quản lý))"
 
-#: builtin/fetch.c:1194
+#: builtin/fetch.c:1300
 msgid "[deleted]"
 msgstr "[đã xóa]"
 
-#: builtin/fetch.c:1195 builtin/remote.c:1118
+#: builtin/fetch.c:1301 builtin/remote.c:1118
 msgid "(none)"
 msgstr "(không)"
 
-#: builtin/fetch.c:1218
+#: builtin/fetch.c:1324
 #, 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:1237
+#: builtin/fetch.c:1343
 #, 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:1240
+#: builtin/fetch.c:1346
 #, 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:1448
+#: builtin/fetch.c:1558
 msgid "multiple branches detected, incompatible with --set-upstream"
 msgstr "phát hiện nhiều nhánh, không tương thích với --set-upstream"
 
-#: builtin/fetch.c:1463
+#: builtin/fetch.c:1573
 msgid "not setting upstream for a remote remote-tracking branch"
 msgstr "không cài đặt thượng nguồn cho một nhánh được theo dõi trên máy chủ"
 
-#: builtin/fetch.c:1465
+#: builtin/fetch.c:1575
 msgid "not setting upstream for a remote tag"
 msgstr "không cài đặt thượng nguồn cho một thẻ nhánh trên máy chủ"
 
-#: builtin/fetch.c:1467
+#: builtin/fetch.c:1577
 msgid "unknown branch type"
 msgstr "không hiểu kiểu nhánh"
 
-#: builtin/fetch.c:1469
+#: builtin/fetch.c:1579
 msgid ""
 "no source branch found.\n"
 "you need to specify exactly one branch with the --set-upstream option."
@@ -14681,22 +14967,22 @@ msgstr ""
 "không tìm thấy nhánh nguồn.\n"
 "bạn cần phải chỉ định chính xác một nhánh với tùy chọn --set-upstream."
 
-#: builtin/fetch.c:1598 builtin/fetch.c:1661
+#: builtin/fetch.c:1708 builtin/fetch.c:1771
 #, c-format
 msgid "Fetching %s\n"
 msgstr "Đang lấy “%s” về\n"
 
-#: builtin/fetch.c:1608 builtin/fetch.c:1663 builtin/remote.c:101
+#: builtin/fetch.c:1718 builtin/fetch.c:1773 builtin/remote.c:101
 #, c-format
 msgid "Could not fetch %s"
 msgstr "Không thể lấy“%s” về"
 
-#: builtin/fetch.c:1620
+#: builtin/fetch.c:1730
 #, c-format
 msgid "could not fetch '%s' (exit code: %d)\n"
 msgstr "không thể lấy “%s” (mã thoát: %d)\n"
 
-#: builtin/fetch.c:1724
+#: builtin/fetch.c:1834
 msgid ""
 "No remote repository specified.  Please, specify either a URL or a\n"
 "remote name from which new revisions should be fetched."
@@ -14704,44 +14990,44 @@ 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:1760
+#: builtin/fetch.c:1870
 msgid "You need to specify a tag name."
 msgstr "Bạn phải định rõ tên thẻ."
 
-#: builtin/fetch.c:1825
+#: builtin/fetch.c:1935
 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:1827
+#: builtin/fetch.c:1937
 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:1832
+#: builtin/fetch.c:1942
 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:1834
+#: builtin/fetch.c:1944
 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:1851
+#: builtin/fetch.c:1961
 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:1853
+#: builtin/fetch.c:1963
 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:1862
+#: builtin/fetch.c:1972
 #, 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:1869
+#: builtin/fetch.c:1979
 msgid "Fetching a group and specifying refspecs does not make sense"
 msgstr "Việc lấy về cả một nhóm và chỉ định refspecs không hợp lý"
 
-#: builtin/fetch.c:1887
+#: builtin/fetch.c:1997
 msgid ""
 "--filter can only be used with the remote configured in extensions."
 "partialclone"
@@ -14749,7 +15035,11 @@ msgstr ""
 "--filter chỉ có thể được dùng với máy chủ được cấu hình bằng extensions."
 "partialclone"
 
-#: builtin/fetch.c:1891
+#: builtin/fetch.c:2001
+msgid "--atomic can only be used when fetching from one remote"
+msgstr "--atomic chỉ có thể dùng khi lấy về từ một máy chủ"
+
+#: builtin/fetch.c:2005
 msgid "--stdin can only be used when fetching from one remote"
 msgstr "--stdin chỉ có thể dùng khi lấy về từ một máy chủ"
 
@@ -14820,7 +15110,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:440
+#: builtin/for-each-ref.c:39 builtin/tag.c:472
 msgid "respect format colors"
 msgstr "các màu định dạng lưu tâm"
 
@@ -14860,32 +15150,32 @@ msgstr "khóa cấu hình lưu trữ danh sách đường dẫn kho lưu trữ"
 msgid "missing --config=<config>"
 msgstr "thiếu --config=<config>"
 
-#: builtin/fsck.c:69 builtin/fsck.c:148 builtin/fsck.c:149
+#: builtin/fsck.c:69 builtin/fsck.c:130 builtin/fsck.c:131
 msgid "unknown"
 msgstr "không hiểu"
 
 #. TRANSLATORS: e.g. error in tree 01bfda: <more explanation>
-#: builtin/fsck.c:101 builtin/fsck.c:121
+#: builtin/fsck.c:83 builtin/fsck.c:103
 #, c-format
 msgid "error in %s %s: %s"
 msgstr "lỗi trong %s %s: %s"
 
 #. TRANSLATORS: e.g. warning in tree 01bfda: <more explanation>
-#: builtin/fsck.c:115
+#: builtin/fsck.c:97
 #, c-format
 msgid "warning in %s %s: %s"
 msgstr "có cảnh báo trong %s %s: %s"
 
-#: builtin/fsck.c:144 builtin/fsck.c:147
+#: builtin/fsck.c:126 builtin/fsck.c:129
 #, c-format
 msgid "broken link from %7s %s"
 msgstr "liên kết gãy từ %7s %s"
 
-#: builtin/fsck.c:156
+#: builtin/fsck.c:138
 msgid "wrong object type in link"
 msgstr "kiểu đối tượng sai trong liên kết"
 
-#: builtin/fsck.c:172
+#: builtin/fsck.c:154
 #, c-format
 msgid ""
 "broken link from %7s %s\n"
@@ -14894,211 +15184,211 @@ msgstr ""
 "liên kết gãy từ %7s %s \n"
 "              tới %7s %s"
 
-#: builtin/fsck.c:283
+#: builtin/fsck.c:265
 #, c-format
 msgid "missing %s %s"
 msgstr "thiếu %s %s"
 
-#: builtin/fsck.c:310
+#: builtin/fsck.c:292
 #, c-format
 msgid "unreachable %s %s"
 msgstr "không tiếp cận được %s %s"
 
-#: builtin/fsck.c:330
+#: builtin/fsck.c:312
 #, c-format
 msgid "dangling %s %s"
 msgstr "dangling %s %s"
 
-#: builtin/fsck.c:340
+#: builtin/fsck.c:322
 msgid "could not create lost-found"
 msgstr "không thể tạo lost-found"
 
-#: builtin/fsck.c:351
+#: builtin/fsck.c:333
 #, c-format
 msgid "could not finish '%s'"
 msgstr "không thể hoàn thành “%s”"
 
-#: builtin/fsck.c:368
+#: builtin/fsck.c:350
 #, c-format
 msgid "Checking %s"
 msgstr "Đang kiểm tra %s"
 
-#: builtin/fsck.c:406
+#: builtin/fsck.c:388
 #, c-format
 msgid "Checking connectivity (%d objects)"
 msgstr "Đang kiểm tra kết nối (%d đối tượng)"
 
-#: builtin/fsck.c:425
+#: builtin/fsck.c:407
 #, c-format
 msgid "Checking %s %s"
 msgstr "Đang kiểm tra %s %s"
 
-#: builtin/fsck.c:430
+#: builtin/fsck.c:412
 msgid "broken links"
 msgstr "các liên kết bị gẫy"
 
-#: builtin/fsck.c:439
+#: builtin/fsck.c:421
 #, c-format
 msgid "root %s"
 msgstr "gốc %s"
 
-#: builtin/fsck.c:447
+#: builtin/fsck.c:429
 #, c-format
 msgid "tagged %s %s (%s) in %s"
 msgstr "đã đánh thẻ %s %s (%s) trong %s"
 
-#: builtin/fsck.c:476
+#: builtin/fsck.c:458
 #, c-format
 msgid "%s: object corrupt or missing"
 msgstr "%s: đối tượng thiếu hay hỏng"
 
-#: builtin/fsck.c:501
+#: builtin/fsck.c:483
 #, c-format
 msgid "%s: invalid reflog entry %s"
 msgstr "%s: mục reflog không hợp lệ %s"
 
-#: builtin/fsck.c:515
+#: builtin/fsck.c:497
 #, c-format
 msgid "Checking reflog %s->%s"
 msgstr "Đang kiểm tra việc đổi tên của “%s” thành “%s”"
 
-#: builtin/fsck.c:549
+#: builtin/fsck.c:531
 #, c-format
 msgid "%s: invalid sha1 pointer %s"
 msgstr "%s: con trỏ sha1 không hợp lệ %s"
 
-#: builtin/fsck.c:556
+#: builtin/fsck.c:538
 #, c-format
 msgid "%s: not a commit"
 msgstr "%s: không phải là một lần chuyển giao"
 
-#: builtin/fsck.c:610
+#: builtin/fsck.c:592
 msgid "notice: No default references"
 msgstr "cảnh báo: Không có các tham chiếu mặc định"
 
-#: builtin/fsck.c:625
+#: builtin/fsck.c:607
 #, c-format
 msgid "%s: object corrupt or missing: %s"
 msgstr "%s: thiếu đối tượng hoặc hỏng: %s"
 
-#: builtin/fsck.c:638
+#: builtin/fsck.c:620
 #, c-format
 msgid "%s: object could not be parsed: %s"
 msgstr "%s: không thể phân tích cú đối tượng: %s"
 
-#: builtin/fsck.c:658
+#: builtin/fsck.c:640
 #, c-format
 msgid "bad sha1 file: %s"
 msgstr "tập tin sha1 sai: %s"
 
-#: builtin/fsck.c:673
+#: builtin/fsck.c:655
 msgid "Checking object directory"
 msgstr "Đang kiểm tra thư mục đối tượng"
 
-#: builtin/fsck.c:676
+#: builtin/fsck.c:658
 msgid "Checking object directories"
 msgstr "Đang kiểm tra các thư mục đối tượng"
 
-#: builtin/fsck.c:691
+#: builtin/fsck.c:673
 #, c-format
 msgid "Checking %s link"
 msgstr "Đang lấy liên kết %s"
 
-#: builtin/fsck.c:696 builtin/index-pack.c:865
+#: builtin/fsck.c:678 builtin/index-pack.c:865
 #, c-format
 msgid "invalid %s"
 msgstr "%s không hợp lệ"
 
-#: builtin/fsck.c:703
+#: builtin/fsck.c:685
 #, c-format
 msgid "%s points to something strange (%s)"
 msgstr "%s chỉ đến thứ gì đó xa lạ (%s)"
 
-#: builtin/fsck.c:709
+#: builtin/fsck.c:691
 #, c-format
 msgid "%s: detached HEAD points at nothing"
 msgstr "%s: HEAD đã tách rời không chỉ vào đâu cả"
 
-#: builtin/fsck.c:713
+#: builtin/fsck.c:695
 #, c-format
 msgid "notice: %s points to an unborn branch (%s)"
 msgstr "chú ý: %s chỉ đến một nhánh chưa sinh (%s)"
 
-#: builtin/fsck.c:725
+#: builtin/fsck.c:707
 msgid "Checking cache tree"
 msgstr "Đang kiểm tra cây nhớ tạm"
 
-#: builtin/fsck.c:730
+#: builtin/fsck.c:712
 #, c-format
 msgid "%s: invalid sha1 pointer in cache-tree"
 msgstr "%s: con trỏ sha1 không hợp lệ trong cache-tree"
 
-#: builtin/fsck.c:739
+#: builtin/fsck.c:721
 msgid "non-tree in cache-tree"
 msgstr "non-tree trong cache-tree"
 
-#: builtin/fsck.c:770
+#: builtin/fsck.c:752
 msgid "git fsck [<options>] [<object>...]"
 msgstr "git fsck [<các tùy chọn>] [<đối-tượng>…]"
 
-#: builtin/fsck.c:776
+#: builtin/fsck.c:758
 msgid "show unreachable objects"
 msgstr "hiển thị các đối tượng không thể đọc được"
 
-#: builtin/fsck.c:777
+#: builtin/fsck.c:759
 msgid "show dangling objects"
 msgstr "hiển thị các đối tượng không được quản lý"
 
-#: builtin/fsck.c:778
+#: builtin/fsck.c:760
 msgid "report tags"
 msgstr "báo cáo các thẻ"
 
-#: builtin/fsck.c:779
+#: builtin/fsck.c:761
 msgid "report root nodes"
 msgstr "báo cáo node gốc"
 
-#: builtin/fsck.c:780
+#: builtin/fsck.c:762
 msgid "make index objects head nodes"
 msgstr "tạo “index objects head nodes”"
 
-#: builtin/fsck.c:781
+#: builtin/fsck.c:763
 msgid "make reflogs head nodes (default)"
 msgstr "tạo “reflogs head nodes” (mặc định)"
 
-#: builtin/fsck.c:782
+#: builtin/fsck.c:764
 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:783
+#: builtin/fsck.c:765
 msgid "check only connectivity"
 msgstr "chỉ kiểm tra kết nối"
 
-#: builtin/fsck.c:784
+#: builtin/fsck.c:766 builtin/mktag.c:78
 msgid "enable more strict checking"
 msgstr "cho phép kiểm tra hạn chế hơn"
 
-#: builtin/fsck.c:786
+#: builtin/fsck.c:768
 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:787 builtin/prune.c:134
+#: builtin/fsck.c:769 builtin/prune.c:134
 msgid "show progress"
 msgstr "hiển thị quá trình"
 
-#: builtin/fsck.c:788
+#: builtin/fsck.c:770
 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:847 builtin/index-pack.c:261
+#: builtin/fsck.c:829 builtin/index-pack.c:261
 msgid "Checking objects"
 msgstr "Đang kiểm tra các đối tượng"
 
-#: builtin/fsck.c:875
+#: builtin/fsck.c:857
 #, c-format
 msgid "%s: object missing"
 msgstr "%s: thiếu đối tượng"
 
-#: builtin/fsck.c:886
+#: builtin/fsck.c:868
 #, c-format
 msgid "invalid parameter: expected sha1, got '%s'"
 msgstr "tham số không hợp lệ: cần sha1, nhưng lại nhận được “%s”"
@@ -15107,27 +15397,27 @@ msgstr "tham số không hợp lệ: cần sha1, nhưng lại nhận được 
 msgid "git gc [<options>]"
 msgstr "git gc [<các tùy chọn>]"
 
-#: builtin/gc.c:94
+#: builtin/gc.c:93
 #, 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:130
+#: builtin/gc.c:129
 #, c-format
 msgid "failed to parse '%s' value '%s'"
 msgstr "gặp lỗi khi phân tích “%s” giá trị “%s”"
 
-#: builtin/gc.c:479 builtin/init-db.c:58
+#: builtin/gc.c:487 builtin/init-db.c:58
 #, c-format
 msgid "cannot stat '%s'"
 msgstr "không thể lấy thông tin thống kê về “%s”"
 
-#: builtin/gc.c:488 builtin/notes.c:240 builtin/tag.c:530
+#: builtin/gc.c:496 builtin/notes.c:240 builtin/tag.c:562
 #, c-format
 msgid "cannot read '%s'"
 msgstr "không thể đọc “%s”"
 
-#: builtin/gc.c:495
+#: builtin/gc.c:503
 #, c-format
 msgid ""
 "The last gc run reported the following. Please correct the root cause\n"
@@ -15142,54 +15432,54 @@ msgstr ""
 "\n"
 "%s"
 
-#: builtin/gc.c:543
+#: builtin/gc.c:551
 msgid "prune unreferenced objects"
 msgstr "xóa bỏ các đối tượng không được tham chiếu"
 
-#: builtin/gc.c:545
+#: builtin/gc.c:553
 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:546
+#: builtin/gc.c:554
 msgid "enable auto-gc mode"
 msgstr "bật chế độ auto-gc"
 
-#: builtin/gc.c:549
+#: builtin/gc.c:557
 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:552
+#: builtin/gc.c:560
 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:569
+#: builtin/gc.c:576
 #, 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"
 
-#: builtin/gc.c:580
+#: builtin/gc.c:587
 #, 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:600
+#: builtin/gc.c:607
 #, 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:602
+#: builtin/gc.c:609
 #, 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:603
+#: builtin/gc.c:610
 #, 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:643
+#: builtin/gc.c:650
 #, c-format
 msgid ""
 "gc is already running on machine '%s' pid %<PRIuMAX> (use --force if not)"
@@ -15197,143 +15487,170 @@ 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:698
+#: builtin/gc.c:705
 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/gc.c:708
+#: builtin/gc.c:715
 msgid ""
 "git maintenance run [--auto] [--[no-]quiet] [--task=<task>] [--schedule]"
 msgstr ""
 "git maintenance run [--auto] [--[no-]quiet] [--task=<nhiệm vụ>] [--schedule]"
 
-#: builtin/gc.c:738
+#: builtin/gc.c:745
 msgid "--no-schedule is not allowed"
 msgstr "--no-schedule không được phép"
 
-#: builtin/gc.c:743
+#: builtin/gc.c:750
 #, c-format
 msgid "unrecognized --schedule argument '%s'"
 msgstr "đối số --schedule không được thừa nhận %s"
 
-#: builtin/gc.c:862
+#: builtin/gc.c:869
 msgid "failed to write commit-graph"
 msgstr "gặp lỗi khi ghi đồ thị các lần chuyển giao"
 
-#: builtin/gc.c:901
+#: builtin/gc.c:914
 msgid "failed to fill remotes"
 msgstr "gặp lỗi khi điền đầy các máy chủ"
 
-#: builtin/gc.c:1024
+#: builtin/gc.c:1037
 msgid "failed to start 'git pack-objects' process"
 msgstr "gặp lỗi khi lấy thông tin thống kê về tiến trình “git pack-objects”"
 
-#: builtin/gc.c:1041
+#: builtin/gc.c:1054
 msgid "failed to finish 'git pack-objects' process"
 msgstr "gặp lỗi khi hoàn tất tiến trình “git pack-objects”"
 
-#: builtin/gc.c:1093
+#: builtin/gc.c:1106
 msgid "failed to write multi-pack-index"
 msgstr "gặp lỗi khi ghi multi-pack-index"
 
-#: builtin/gc.c:1111
+#: builtin/gc.c:1124
 msgid "'git multi-pack-index expire' failed"
 msgstr "gặp lỗi khi chạy “git multi-pack-index expire”"
 
-#: builtin/gc.c:1172
+#: builtin/gc.c:1185
 msgid "'git multi-pack-index repack' failed"
 msgstr "gặp lỗi khi chạy “git multi-pack-index repack”"
 
-#: builtin/gc.c:1181
+#: builtin/gc.c:1194
 msgid ""
 "skipping incremental-repack task because core.multiPackIndex is disabled"
 msgstr "bỏ qua tác vụ incremental-repack vì core.multiPackIndex bị vô hiệu hóa"
 
-#: builtin/gc.c:1279
+#: builtin/gc.c:1298
 #, c-format
 msgid "lock file '%s' exists, skipping maintenance"
 msgstr "đã có khóa của tập tin “%s”, bỏ qua bảo trì"
 
-#: builtin/gc.c:1309
+#: builtin/gc.c:1328
 #, c-format
 msgid "task '%s' failed"
 msgstr "gặp lỗi khi thực hiện nhiệm vụ “%s”"
 
-#: builtin/gc.c:1389
+#: builtin/gc.c:1410
 #, c-format
 msgid "'%s' is not a valid task"
 msgstr "“%s” không phải một nhiệm vụ hợp lệ"
 
-#: builtin/gc.c:1394
+#: builtin/gc.c:1415
 #, c-format
 msgid "task '%s' cannot be selected multiple times"
 msgstr "nhiệm vụ “%s” không được chọn nhiều lần"
 
-#: builtin/gc.c:1409
+#: builtin/gc.c:1430
 msgid "run tasks based on the state of the repository"
 msgstr "chạy nhiệm vụ dựa trên trạng thái của kho chứa"
 
-#: builtin/gc.c:1410
+#: builtin/gc.c:1431
 msgid "frequency"
 msgstr "tần số"
 
-#: builtin/gc.c:1411
+#: builtin/gc.c:1432
 msgid "run tasks based on frequency"
 msgstr "chạy nhiệm vụ dựa trên tần suất"
 
-#: builtin/gc.c:1414
+#: builtin/gc.c:1435
 msgid "do not report progress or other information over stderr"
 msgstr "đừng báo cáo diễn tiến hay các thông tin khác ra đầu lỗi tiêu chuẩn"
 
-#: builtin/gc.c:1415
+#: builtin/gc.c:1436
 msgid "task"
 msgstr "tác vụ"
 
-#: builtin/gc.c:1416
+#: builtin/gc.c:1437
 msgid "run a specific task"
 msgstr "chạy một nhiệm vụ cụ thể"
 
-#: builtin/gc.c:1433
+#: builtin/gc.c:1454
 msgid "use at most one of --auto and --schedule=<frequency>"
 msgstr "dùng nhiều nhất là một trong --auto và --schedule=<frequency>"
 
-#: builtin/gc.c:1467
+#: builtin/gc.c:1497
 msgid "failed to run 'git config'"
 msgstr "gặp lỗi khi chạy “git config”"
 
-#: builtin/gc.c:1512
-msgid "another process is scheduling background maintenance"
-msgstr "một tiến trình khác được lập kế hoạch chạy nền để bảo trì"
+#: builtin/gc.c:1562
+#, c-format
+msgid "failed to expand path '%s'"
+msgstr "gặp lỗi khi khai triển đường dẫn “%s”"
 
-#: builtin/gc.c:1525
+#: builtin/gc.c:1591
+msgid "failed to start launchctl"
+msgstr "gặp lỗi khi khởi chạy launchctl"
+
+#: builtin/gc.c:1628
+#, c-format
+msgid "failed to create directories for '%s'"
+msgstr "gặp lỗi khi tạo thư mục cho \"%s\""
+
+#: builtin/gc.c:1689
+#, c-format
+msgid "failed to bootstrap service %s"
+msgstr "gặp lỗi khi mồi dịch vụ %s"
+
+#: builtin/gc.c:1760
+msgid "failed to create temp xml file"
+msgstr "gặp lỗi khi tạo tập tin xml tạm thời"
+
+#: builtin/gc.c:1850
+msgid "failed to start schtasks"
+msgstr "gặp lỗi khi lấy thông tin thống kê về schtasks"
+
+#: builtin/gc.c:1894
 msgid "failed to run 'crontab -l'; your system might not support 'cron'"
 msgstr ""
 "gặp lỗi khi chạy “crontab -l”; hệ thống của bạn có thể không hỗ trợ “cron”"
 
-#: builtin/gc.c:1544
+#: builtin/gc.c:1911
 msgid "failed to run 'crontab'; your system might not support 'cron'"
 msgstr "gặp lỗi khi chạy “crontab”; hiển thị của bạn có lẽ không hỗ trợ “cron”"
 
-#: builtin/gc.c:1550
+#: builtin/gc.c:1915
 msgid "failed to open stdin of 'crontab'"
 msgstr "gặp lỗi khi mở đầu vào tiêu chuẩn của “crontab”"
 
-#: builtin/gc.c:1592
+#: builtin/gc.c:1956
 msgid "'crontab' died"
 msgstr "“crontab” đã chết"
 
-#: builtin/gc.c:1605
+#: builtin/gc.c:1990
+msgid "another process is scheduling background maintenance"
+msgstr "một tiến trình khác được lập kế hoạch chạy nền để bảo trì"
+
+#: builtin/gc.c:2009
 msgid "failed to add repo to global config"
 msgstr "gặp lỗi khi thêm cấu hình toàn cục"
 
-#: builtin/gc.c:1615
+#: builtin/gc.c:2019
 msgid "git maintenance <subcommand> [<options>]"
 msgstr "git maintenance run <lệnh_con> [<các tùy chọn>]"
 
-#: builtin/gc.c:1634
+#: builtin/gc.c:2038
 #, c-format
 msgid "invalid subcommand: %s"
 msgstr "lện con không hợp lệ: %s"
@@ -15342,12 +15659,12 @@ msgstr "lện con không hợp lệ: %s"
 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:223
 #, c-format
 msgid "grep: failed to create thread: %s"
 msgstr "grep: gặp lỗi tạo tuyến (thread): %s"
 
-#: builtin/grep.c:279
+#: builtin/grep.c:277
 #, c-format
 msgid "invalid number of threads specified (%d) for %s"
 msgstr "số tuyến đã cho không hợp lệ (%d) cho %s"
@@ -15356,259 +15673,259 @@ msgstr "số tuyến đã cho không hợp lệ (%d) cho %s"
 #. variable for tweaking threads, currently
 #. grep.threads
 #.
-#: builtin/grep.c:287 builtin/index-pack.c:1576 builtin/index-pack.c:1766
-#: builtin/pack-objects.c:2936
+#: builtin/grep.c:285 builtin/index-pack.c:1589 builtin/index-pack.c:1808
+#: builtin/pack-objects.c:2944
 #, c-format
 msgid "no threads support, ignoring %s"
 msgstr "không hỗ trợ đa tuyến, bỏ qua %s"
 
-#: builtin/grep.c:475 builtin/grep.c:600 builtin/grep.c:640
+#: builtin/grep.c:473 builtin/grep.c:601 builtin/grep.c:641
 #, c-format
 msgid "unable to read tree (%s)"
 msgstr "không thể đọc cây (%s)"
 
-#: builtin/grep.c:655
+#: builtin/grep.c:656
 #, 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"
 
-#: builtin/grep.c:736
+#: builtin/grep.c:737
 #, c-format
 msgid "switch `%c' expects a numerical value"
 msgstr "chuyển đến “%c” cần một giá trị bằng số"
 
-#: builtin/grep.c:835
+#: builtin/grep.c:836
 msgid "search in index instead of in the work tree"
 msgstr "tìm trong bảng mục lục thay vì trong cây làm việc"
 
-#: builtin/grep.c:837
+#: builtin/grep.c:838
 msgid "find in contents not managed by git"
 msgstr "tìm trong nội dung không được quản lý bởi git"
 
-#: builtin/grep.c:839
+#: builtin/grep.c:840
 msgid "search in both tracked and untracked files"
 msgstr "tìm kiếm các tập tin được và chưa được theo dõi dấu vết"
 
-#: builtin/grep.c:841
+#: builtin/grep.c:842
 msgid "ignore files specified via '.gitignore'"
 msgstr "các tập tin bị bỏ qua được chỉ định thông qua “.gitignore”"
 
-#: builtin/grep.c:843
+#: builtin/grep.c:844
 msgid "recursively search in each submodule"
 msgstr "tìm kiếm đệ quy trong từng mô-đun-con"
 
-#: builtin/grep.c:846
+#: builtin/grep.c:847
 msgid "show non-matching lines"
 msgstr "hiển thị những dòng không khớp với mẫu"
 
-#: builtin/grep.c:848
+#: builtin/grep.c:849
 msgid "case insensitive matching"
 msgstr "phân biệt HOA/thường"
 
-#: builtin/grep.c:850
+#: builtin/grep.c:851
 msgid "match patterns only at word boundaries"
 msgstr "chỉ khớp mẫu tại đường ranh giới từ"
 
-#: builtin/grep.c:852
+#: builtin/grep.c:853
 msgid "process binary files as text"
 msgstr "xử lý tập tin nhị phân như là dạng văn bản thường"
 
-#: builtin/grep.c:854
+#: builtin/grep.c:855
 msgid "don't match patterns in binary files"
 msgstr "không khớp mẫu trong các tập tin nhị phân"
 
-#: builtin/grep.c:857
+#: builtin/grep.c:858
 msgid "process binary files with textconv filters"
 msgstr "xử lý tập tin nhị phân với các bộ lọc “textconv”"
 
-#: builtin/grep.c:859
+#: builtin/grep.c:860
 msgid "search in subdirectories (default)"
 msgstr "tìm kiếm trong thư mục con (mặc định)"
 
-#: builtin/grep.c:861
+#: builtin/grep.c:862
 msgid "descend at most <depth> levels"
 msgstr "hạ xuống ít nhất là mức <sâu>"
 
-#: builtin/grep.c:865
+#: builtin/grep.c:866
 msgid "use extended POSIX regular expressions"
 msgstr "dùng biểu thức chính qui POSIX có mở rộng"
 
-#: builtin/grep.c:868
+#: builtin/grep.c:869
 msgid "use basic POSIX regular expressions (default)"
 msgstr "sử dụng biểu thức chính quy kiểu POSIX (mặc định)"
 
-#: builtin/grep.c:871
+#: builtin/grep.c:872
 msgid "interpret patterns as fixed strings"
 msgstr "diễn dịch các mẫu như là chuỗi cố định"
 
-#: builtin/grep.c:874
+#: builtin/grep.c:875
 msgid "use Perl-compatible regular expressions"
 msgstr "sử dụng biểu thức chính quy tương thích Perl"
 
-#: builtin/grep.c:877
+#: builtin/grep.c:878
 msgid "show line numbers"
 msgstr "hiển thị số của dòng"
 
-#: builtin/grep.c:878
+#: builtin/grep.c:879
 msgid "show column number of first match"
 msgstr "hiển thị số cột của khớp với mẫu đầu tiên"
 
-#: builtin/grep.c:879
+#: builtin/grep.c:880
 msgid "don't show filenames"
 msgstr "không hiển thị tên tập tin"
 
-#: builtin/grep.c:880
+#: builtin/grep.c:881
 msgid "show filenames"
 msgstr "hiển thị các tên tập tin"
 
-#: builtin/grep.c:882
+#: builtin/grep.c:883
 msgid "show filenames relative to top directory"
 msgstr "hiển thị tên tập tin tương đối với thư mục đỉnh (top)"
 
-#: builtin/grep.c:884
+#: builtin/grep.c:885
 msgid "show only filenames instead of matching lines"
 msgstr "chỉ hiển thị tên tập tin thay vì những dòng khớp với mẫu"
 
-#: builtin/grep.c:886
+#: builtin/grep.c:887
 msgid "synonym for --files-with-matches"
 msgstr "đồng nghĩa với --files-with-matches"
 
-#: builtin/grep.c:889
+#: builtin/grep.c:890
 msgid "show only the names of files without match"
 msgstr "chỉ hiển thị tên cho những tập tin không khớp với mẫu"
 
-#: builtin/grep.c:891
+#: builtin/grep.c:892
 msgid "print NUL after filenames"
 msgstr "thêm NUL vào sau tên tập tin"
 
-#: builtin/grep.c:894
+#: builtin/grep.c:895
 msgid "show only matching parts of a line"
 msgstr "chỉ hiển thị những phần khớp với mẫu của một dòng"
 
-#: builtin/grep.c:896
+#: builtin/grep.c:897
 msgid "show the number of matches instead of matching lines"
 msgstr "hiển thị số lượng khớp thay vì những dòng khớp với mẫu"
 
-#: builtin/grep.c:897
+#: builtin/grep.c:898
 msgid "highlight matches"
 msgstr "tô sáng phần khớp mẫu"
 
-#: builtin/grep.c:899
+#: builtin/grep.c:900
 msgid "print empty line between matches from different files"
 msgstr "hiển thị dòng trống giữa các lần khớp từ các tập tin khác biệt"
 
-#: builtin/grep.c:901
+#: builtin/grep.c:902
 msgid "show filename only once above matches from same file"
 msgstr ""
 "hiển thị tên tập tin một lần phía trên các lần khớp từ cùng một tập tin"
 
-#: builtin/grep.c:904
+#: builtin/grep.c:905
 msgid "show <n> context lines before and after matches"
 msgstr "hiển thị <n> dòng nội dung phía trước và sau các lần khớp"
 
-#: builtin/grep.c:907
+#: builtin/grep.c:908
 msgid "show <n> context lines before matches"
 msgstr "hiển thị <n> dòng nội dung trước khớp"
 
-#: builtin/grep.c:909
+#: builtin/grep.c:910
 msgid "show <n> context lines after matches"
 msgstr "hiển thị <n> dòng nội dung sau khớp"
 
-#: builtin/grep.c:911
+#: builtin/grep.c:912
 msgid "use <n> worker threads"
 msgstr "dùng <n> tuyến trình làm việc"
 
-#: builtin/grep.c:912
+#: builtin/grep.c:913
 msgid "shortcut for -C NUM"
 msgstr "dạng viết tắt của -C SỐ"
 
-#: builtin/grep.c:915
+#: builtin/grep.c:916
 msgid "show a line with the function name before matches"
 msgstr "hiển thị dòng vói tên hàm trước các lần khớp"
 
-#: builtin/grep.c:917
+#: builtin/grep.c:918
 msgid "show the surrounding function"
 msgstr "hiển thị hàm bao quanh"
 
-#: builtin/grep.c:920
+#: builtin/grep.c:921
 msgid "read patterns from file"
 msgstr "đọc mẫu từ tập-tin"
 
-#: builtin/grep.c:922
+#: builtin/grep.c:923
 msgid "match <pattern>"
 msgstr "match <mẫu>"
 
-#: builtin/grep.c:924
+#: builtin/grep.c:925
 msgid "combine patterns specified with -e"
 msgstr "tổ hợp mẫu được chỉ ra với tùy chọn -e"
 
-#: builtin/grep.c:936
+#: builtin/grep.c:937
 msgid "indicate hit with exit status without output"
 msgstr "đưa ra gợi ý với trạng thái thoát mà không có kết xuất"
 
-#: builtin/grep.c:938
+#: builtin/grep.c:939
 msgid "show only matches from files that match all patterns"
 msgstr "chỉ hiển thị những cái khớp từ tập tin mà nó khớp toàn bộ các mẫu"
 
-#: builtin/grep.c:940
-msgid "show parse tree for grep expression"
-msgstr "hiển thị cây phân tích cú pháp cho biểu thức “grep” (tìm kiếm)"
-
-#: builtin/grep.c:944
+#: builtin/grep.c:942
 msgid "pager"
 msgstr "dàn trang"
 
-#: builtin/grep.c:944
+#: builtin/grep.c:942
 msgid "show matching files in the pager"
 msgstr "hiển thị các tập tin khớp trong trang giấy"
 
-#: builtin/grep.c:948
+#: builtin/grep.c:946
 msgid "allow calling of grep(1) (ignored by this build)"
 msgstr "cho phép gọi grep(1) (bị bỏ qua bởi lần dịch này)"
 
-#: builtin/grep.c:1014
+#: builtin/grep.c:1012
 msgid "no pattern given"
 msgstr "chưa chỉ ra mẫu"
 
-#: builtin/grep.c:1050
+#: builtin/grep.c:1048
 msgid "--no-index or --untracked cannot be used with revs"
 msgstr "--no-index hay --untracked không được sử dụng cùng với revs"
 
-#: builtin/grep.c:1058
+#: builtin/grep.c:1056
 #, c-format
 msgid "unable to resolve revision: %s"
 msgstr "không thể phân giải điểm xét duyệt: %s"
 
-#: builtin/grep.c:1088
+#: builtin/grep.c:1086
 msgid "--untracked not supported with --recurse-submodules"
 msgstr "tùy chọn --untracked không được hỗ trợ với --recurse-submodules"
 
-#: builtin/grep.c:1092
+#: builtin/grep.c:1090
 msgid "invalid option combination, ignoring --threads"
 msgstr "tổ hợp tùy chọn không hợp lệ, bỏ qua --threads"
 
-#: builtin/grep.c:1095 builtin/pack-objects.c:3655
+#: builtin/grep.c:1093 builtin/pack-objects.c:3672
 msgid "no threads support, ignoring --threads"
 msgstr "không hỗ trợ đa tuyến, bỏ qua --threads"
 
-#: builtin/grep.c:1098 builtin/index-pack.c:1573 builtin/pack-objects.c:2933
+#: builtin/grep.c:1096 builtin/index-pack.c:1586 builtin/pack-objects.c:2941
 #, c-format
 msgid "invalid number of threads specified (%d)"
 msgstr "số tuyến chỉ ra không hợp lệ (%d)"
 
-#: builtin/grep.c:1132
+#: builtin/grep.c:1130
 msgid "--open-files-in-pager only works on the worktree"
 msgstr "--open-files-in-pager chỉ làm việc trên cây-làm-việc"
 
-#: builtin/grep.c:1158
+#: builtin/grep.c:1156
 msgid "--cached or --untracked cannot be used with --no-index"
 msgstr "--cached hay --untracked không được sử dụng với --no-index"
 
-#: builtin/grep.c:1164
+#: builtin/grep.c:1159
+msgid "--untracked cannot be used with --cached"
+msgstr "--untracked không thể được sử dụng với tùy chọn --cached"
+
+#: builtin/grep.c:1165
 msgid "--[no-]exclude-standard cannot be used for tracked contents"
 msgstr "--[no-]exclude-standard không thể sử dụng cho nội dung lưu dấu vết"
 
-#: builtin/grep.c:1172
+#: builtin/grep.c:1173
 msgid "both --cached and trees are given"
 msgstr "cả hai --cached và các cây phải được chỉ ra"
 
@@ -15739,12 +16056,12 @@ msgstr "không có trình xem trợ giúp dạng manpage tiếp hợp với yêu
 msgid "no info viewer handled the request"
 msgstr "không có trình xem trợ giúp dạng info tiếp hợp với yêu cầu"
 
-#: builtin/help.c:520 builtin/help.c:531 git.c:337
+#: builtin/help.c:520 builtin/help.c:531 git.c:340
 #, c-format
 msgid "'%s' is aliased to '%s'"
 msgstr "“%s” được đặt bí danh thành “%s”"
 
-#: builtin/help.c:534 git.c:369
+#: builtin/help.c:534 git.c:372
 #, c-format
 msgid "bad alias.%s string: %s"
 msgstr "chuỗi alias.%s sai: %s"
@@ -15791,7 +16108,7 @@ msgstr "lỗi đọc ở đầu vào"
 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:324 builtin/pack-objects.c:619
+#: builtin/index-pack.c:324 builtin/pack-objects.c:624
 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"
 
@@ -15799,7 +16116,7 @@ msgstr "gói quá lớn so với định nghĩa hiện tại của kiểu off_t"
 msgid "pack exceeds maximum allowed size"
 msgstr "gói đã vượt quá cỡ tối đa được phép"
 
-#: builtin/index-pack.c:342 builtin/repack.c:286
+#: builtin/index-pack.c:342
 #, c-format
 msgid "unable to create '%s'"
 msgstr "không thể tạo “%s”"
@@ -15923,7 +16240,7 @@ msgstr "lộn xộn hơn cả điên rồ khi chạy hàm parse_pack_objects()"
 msgid "Resolving deltas"
 msgstr "Đang phân giải các delta"
 
-#: builtin/index-pack.c:1249 builtin/pack-objects.c:2697
+#: builtin/index-pack.c:1249 builtin/pack-objects.c:2707
 #, c-format
 msgid "unable to create thread: %s"
 msgstr "không thể tạo tuyến: %s"
@@ -15959,10 +16276,10 @@ msgstr "không thể xả nén đối tượng nối thêm (%d)"
 msgid "local object %s is corrupt"
 msgstr "đối tượng nội bộ %s bị hỏng"
 
-#: builtin/index-pack.c:1444
+#: builtin/index-pack.c:1445
 #, 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”"
+msgid "packfile name '%s' does not end with '.%s'"
+msgstr "tên tập tin tập tin gói “%s” không được kết thúc “.%s”"
 
 #: builtin/index-pack.c:1469
 #, c-format
@@ -15974,77 +16291,81 @@ msgstr "không thể ghi %s tập tin “%s”"
 msgid "cannot close written %s file '%s'"
 msgstr "không thể đóng tập tin được ghi %s “%s”"
 
-#: builtin/index-pack.c:1501
+#: builtin/index-pack.c:1503
 msgid "error while closing pack file"
 msgstr "gặp lỗi trong khi đóng tập tin gói"
 
-#: builtin/index-pack.c:1515
+#: builtin/index-pack.c:1517
 msgid "cannot store pack file"
 msgstr "không thể lưu tập tin gói"
 
-#: builtin/index-pack.c:1523
+#: builtin/index-pack.c:1525
 msgid "cannot store index file"
 msgstr "không thể lưu trữ tập tin ghi mục lục"
 
-#: builtin/index-pack.c:1567 builtin/pack-objects.c:2944
+#: builtin/index-pack.c:1534
+msgid "cannot store reverse index file"
+msgstr "không thể lưu trữ tập tin ghi mục lục đảo ngược"
+
+#: builtin/index-pack.c:1580 builtin/pack-objects.c:2952
 #, c-format
 msgid "bad pack.indexversion=%<PRIu32>"
 msgstr "sai pack.indexversion=%<PRIu32>"
 
-#: builtin/index-pack.c:1631
+#: builtin/index-pack.c:1650
 #, 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:1633
+#: builtin/index-pack.c:1652
 #, 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:1681
+#: builtin/index-pack.c:1700
 #, 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:1688
+#: builtin/index-pack.c:1707
 #, 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:1728
+#: builtin/index-pack.c:1765
 msgid "Cannot come back to cwd"
 msgstr "Không thể quay lại cwd"
 
-#: builtin/index-pack.c:1777 builtin/index-pack.c:1780
-#: builtin/index-pack.c:1796 builtin/index-pack.c:1800
+#: builtin/index-pack.c:1819 builtin/index-pack.c:1822
+#: builtin/index-pack.c:1838 builtin/index-pack.c:1842
 #, c-format
 msgid "bad %s"
 msgstr "%s sai"
 
-#: builtin/index-pack.c:1806 builtin/init-db.c:392 builtin/init-db.c:625
+#: builtin/index-pack.c:1848 builtin/init-db.c:392 builtin/init-db.c:625
 #, c-format
 msgid "unknown hash algorithm '%s'"
 msgstr "không hiểu thuật toán băm dữ liệu “%s”"
 
-#: builtin/index-pack.c:1821
+#: builtin/index-pack.c:1867
 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:1823
+#: builtin/index-pack.c:1869
 msgid "--stdin requires a git repository"
 msgstr "--stdin cần một kho git"
 
-#: builtin/index-pack.c:1825
+#: builtin/index-pack.c:1871
 msgid "--object-format cannot be used with --stdin"
 msgstr "--object-format không thể được dùng với --stdin"
 
-#: builtin/index-pack.c:1831
+#: builtin/index-pack.c:1886
 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:1892 builtin/unpack-objects.c:582
+#: builtin/index-pack.c:1956 builtin/unpack-objects.c:582
 msgid "fsck error in pack objects"
 msgstr "lỗi fsck trong các đối tượng gói"
 
@@ -16261,130 +16582,130 @@ msgstr "--trailer cùng với --only-input không hợp lý"
 msgid "no input file given for in-place editing"
 msgstr "không đưa ra tập tin đầu vào để sửa tại-chỗ"
 
-#: builtin/log.c:58
+#: builtin/log.c:59
 msgid "git log [<options>] [<revision-range>] [[--] <path>...]"
 msgstr "git log [<các tùy chọn>] [<vùng-xem-xét>] [[--] </đường/dẫn>…]"
 
-#: builtin/log.c:59
+#: builtin/log.c:60
 msgid "git show [<options>] <object>..."
 msgstr "git show [<các tùy chọn>] <đối-tượng>…"
 
-#: builtin/log.c:112
+#: builtin/log.c:113
 #, c-format
 msgid "invalid --decorate option: %s"
 msgstr "tùy chọn--decorate không hợp lệ: %s"
 
-#: builtin/log.c:179
+#: builtin/log.c:180
 msgid "show source"
 msgstr "hiển thị mã nguồn"
 
-#: builtin/log.c:180
-msgid "Use mail map file"
-msgstr "Sử dụng tập tin ánh xạ thư"
+#: builtin/log.c:181
+msgid "use mail map file"
+msgstr "sử dụng tập tin ánh xạ thư"
 
-#: builtin/log.c:183
+#: builtin/log.c:184
 msgid "only decorate refs that match <pattern>"
 msgstr "chỉ tô sáng các tham chiếu khớp với <mẫu>"
 
-#: builtin/log.c:185
+#: builtin/log.c:186
 msgid "do not decorate refs that match <pattern>"
 msgstr "không tô sáng các tham chiếu khớp với <mẫu>"
 
-#: builtin/log.c:186
+#: builtin/log.c:187
 msgid "decorate options"
 msgstr "các tùy chọn trang trí"
 
-#: builtin/log.c:189
+#: builtin/log.c:190
 msgid ""
-"Trace the evolution of line range <start>,<end> or function :<funcname> in "
+"trace the evolution of line range <start>,<end> or function :<funcname> in "
 "<file>"
 msgstr ""
-"Theo dõi sự tiến hóa của phạm vi <start><end> dòng, hoặc chức năng:"
+"theo dõi sự tiến hóa của phạm vi <start><end> dòng, hoặc chức năng:"
 "<funcname> trong <file>"
 
-#: builtin/log.c:212
+#: builtin/log.c:213
 msgid "-L<range>:<file> cannot be used with pathspec"
 msgstr "-L<vùng>:<tập_tin> không thể được sử dụng với đặc tả đường dẫn"
 
-#: builtin/log.c:302
+#: builtin/log.c:303
 #, c-format
 msgid "Final output: %d %s\n"
 msgstr "Kết xuất cuối cùng: %d %s\n"
 
-#: builtin/log.c:564
+#: builtin/log.c:566
 #, c-format
 msgid "git show %s: bad file"
 msgstr "git show %s: sai tập tin"
 
-#: builtin/log.c:579 builtin/log.c:674
+#: builtin/log.c:581 builtin/log.c:671
 #, c-format
 msgid "could not read object %s"
 msgstr "không thể đọc đối tượng %s"
 
-#: builtin/log.c:699
+#: builtin/log.c:696
 #, c-format
 msgid "unknown type: %d"
 msgstr "không nhận ra kiểu: %d"
 
-#: builtin/log.c:848
+#: builtin/log.c:841
 #, c-format
 msgid "%s: invalid cover from description mode"
 msgstr "%s: bao bọc không hợp lệ từ chế độ mô tả"
 
-#: builtin/log.c:855
+#: builtin/log.c:848
 msgid "format.headers without value"
 msgstr "format.headers không có giá trị cụ thể"
 
-#: builtin/log.c:984
+#: builtin/log.c:977
 #, c-format
 msgid "cannot open patch file %s"
 msgstr "không thể mở tập tin miếng vá: %s"
 
-#: builtin/log.c:1001
+#: builtin/log.c:994
 msgid "need exactly one range"
 msgstr "cần chính xác một vùng"
 
-#: builtin/log.c:1011
+#: builtin/log.c:1004
 msgid "not a range"
 msgstr "không phải là một vùng"
 
-#: builtin/log.c:1175
+#: builtin/log.c:1168
 msgid "cover letter needs email format"
 msgstr "“cover letter” cần cho định dạng thư"
 
-#: builtin/log.c:1181
+#: builtin/log.c:1174
 msgid "failed to create cover-letter file"
 msgstr "gặp lỗi khi tạo các tập tin cover-letter"
 
-#: builtin/log.c:1262
+#: builtin/log.c:1261
 #, c-format
 msgid "insane in-reply-to: %s"
 msgstr "in-reply-to điên rồ: %s"
 
-#: builtin/log.c:1289
+#: builtin/log.c:1288
 msgid "git format-patch [<options>] [<since> | <revision-range>]"
 msgstr "git format-patch [<các tùy chọn>] [<kể-từ> | <vùng-xem-xét>]"
 
-#: builtin/log.c:1347
+#: builtin/log.c:1346
 msgid "two output directories?"
 msgstr "hai thư mục kết xuất?"
 
-#: builtin/log.c:1498 builtin/log.c:2318 builtin/log.c:2320 builtin/log.c:2332
+#: builtin/log.c:1497 builtin/log.c:2317 builtin/log.c:2319 builtin/log.c:2331
 #, c-format
 msgid "unknown commit %s"
 msgstr "không hiểu lần chuyển giao %s"
 
-#: builtin/log.c:1509 builtin/replace.c:58 builtin/replace.c:207
+#: builtin/log.c:1508 builtin/replace.c:58 builtin/replace.c:207
 #: builtin/replace.c:210
 #, c-format
 msgid "failed to resolve '%s' as a valid ref"
 msgstr "gặp lỗi khi phân giải “%s” như là một tham chiếu hợp lệ"
 
-#: builtin/log.c:1518
+#: builtin/log.c:1517
 msgid "could not find exact merge base"
 msgstr "không tìm thấy nền hòa trộn chính xác"
 
-#: builtin/log.c:1528
+#: builtin/log.c:1527
 msgid ""
 "failed to get upstream, if you want to record base commit automatically,\n"
 "please use git branch --set-upstream-to to track a remote branch.\n"
@@ -16395,289 +16716,289 @@ msgstr ""
 "nhánh máy chủ. Hoặc là bạn có thể chỉ định lần chuyển giao nền bằng\n"
 "\"--base=<base-commit-id>\" một cách thủ công"
 
-#: builtin/log.c:1551
+#: builtin/log.c:1550
 msgid "failed to find exact merge base"
 msgstr "gặp lỗi khi tìm nền hòa trộn chính xác"
 
-#: builtin/log.c:1568
+#: builtin/log.c:1567
 msgid "base commit should be the ancestor of revision list"
 msgstr "lần chuyển giao nền không là tổ tiên của danh sách điểm xét duyệt"
 
-#: builtin/log.c:1578
+#: builtin/log.c:1577
 msgid "base commit shouldn't be in revision list"
 msgstr "lần chuyển giao nền không được trong danh sách điểm xét duyệt"
 
-#: builtin/log.c:1636
+#: builtin/log.c:1635
 msgid "cannot get patch id"
 msgstr "không thể lấy mã miếng vá"
 
-#: builtin/log.c:1693
+#: builtin/log.c:1692
 msgid "failed to infer range-diff origin of current series"
 msgstr ""
 "gặp lỗi khi suy luận range-diff (vùng khác biệt) gốc của sê-ri hiện tại"
 
-#: builtin/log.c:1695
+#: builtin/log.c:1694
 #, c-format
 msgid "using '%s' as range-diff origin of current series"
 msgstr "dùng “%s” như là gốc range-diff của sê-ri hiện tại"
 
-#: builtin/log.c:1739
+#: builtin/log.c:1738
 msgid "use [PATCH n/m] even with a single patch"
 msgstr "dùng [PATCH n/m] ngay cả với miếng vá đơn"
 
-#: builtin/log.c:1742
+#: builtin/log.c:1741
 msgid "use [PATCH] even with multiple patches"
 msgstr "dùng [VÁ] ngay cả với các miếng vá phức tạp"
 
-#: builtin/log.c:1746
+#: builtin/log.c:1745
 msgid "print patches to standard out"
 msgstr "hiển thị miếng vá ra đầu ra chuẩn"
 
-#: builtin/log.c:1748
+#: builtin/log.c:1747
 msgid "generate a cover letter"
 msgstr "tạo bì thư"
 
-#: builtin/log.c:1750
+#: builtin/log.c:1749
 msgid "use simple number sequence for output file names"
 msgstr "sử dụng chỗi dãy số dạng đơn giản cho tên tập-tin xuất ra"
 
-#: builtin/log.c:1751
+#: builtin/log.c:1750
 msgid "sfx"
 msgstr "sfx"
 
-#: builtin/log.c:1752
+#: builtin/log.c:1751
 msgid "use <sfx> instead of '.patch'"
 msgstr "sử dụng <sfx> thay cho “.patch”"
 
-#: builtin/log.c:1754
+#: builtin/log.c:1753
 msgid "start numbering patches at <n> instead of 1"
 msgstr "bắt đầu đánh số miếng vá từ <n> thay vì 1"
 
-#: builtin/log.c:1756
+#: builtin/log.c:1755
 msgid "mark the series as Nth re-roll"
 msgstr "đánh dấu chuỗi nối tiếp dạng thứ-N re-roll"
 
-#: builtin/log.c:1758
+#: builtin/log.c:1757
 msgid "max length of output filename"
 msgstr "chiều dài tên tập tin đầu ra tối đa"
 
-#: builtin/log.c:1760
-msgid "Use [RFC PATCH] instead of [PATCH]"
-msgstr "Dùng [RFC VÁ] thay cho [VÁ]"
+#: builtin/log.c:1759
+msgid "use [RFC PATCH] instead of [PATCH]"
+msgstr "dùng [VÁ RFC] thay cho [VÁ]"
 
-#: builtin/log.c:1763
+#: builtin/log.c:1762
 msgid "cover-from-description-mode"
 msgstr "cover-from-description-mode"
 
-#: builtin/log.c:1764
+#: builtin/log.c:1763
 msgid "generate parts of a cover letter based on a branch's description"
 msgstr "tạo ra các phần của một lá thư bao gồm dựa trên mô tả của nhánh"
 
-#: builtin/log.c:1766
-msgid "Use [<prefix>] instead of [PATCH]"
-msgstr "Dùng [<tiền-tố>] thay cho [VÁ]"
+#: builtin/log.c:1765
+msgid "use [<prefix>] instead of [PATCH]"
+msgstr "dùng [<tiền-tố>] thay cho [VÁ]"
 
-#: builtin/log.c:1769
+#: builtin/log.c:1768
 msgid "store resulting files in <dir>"
 msgstr "lưu các tập tin kết quả trong <t.mục>"
 
-#: builtin/log.c:1772
+#: builtin/log.c:1771
 msgid "don't strip/add [PATCH]"
 msgstr "không strip/add [VÁ]"
 
-#: builtin/log.c:1775
+#: builtin/log.c:1774
 msgid "don't output binary diffs"
 msgstr "không kết xuất diff (những khác biệt) nhị phân"
 
-#: builtin/log.c:1777
+#: builtin/log.c:1776
 msgid "output all-zero hash in From header"
 msgstr "xuất mọi mã băm all-zero trong phần đầu From"
 
-#: builtin/log.c:1779
+#: builtin/log.c:1778
 msgid "don't include a patch matching a commit upstream"
 msgstr "không bao gồm miếng vá khớp với một lần chuyển giao thượng nguồn"
 
-#: builtin/log.c:1781
+#: builtin/log.c:1780
 msgid "show patch format instead of default (patch + stat)"
 msgstr "hiển thị định dạng miếng vá thay vì mặc định (miếng vá + thống kê)"
 
-#: builtin/log.c:1783
+#: builtin/log.c:1782
 msgid "Messaging"
 msgstr "Lời nhắn"
 
-#: builtin/log.c:1784
+#: builtin/log.c:1783
 msgid "header"
 msgstr "đầu đề thư"
 
-#: builtin/log.c:1785
+#: builtin/log.c:1784
 msgid "add email header"
 msgstr "thêm đầu đề thư"
 
-#: builtin/log.c:1786 builtin/log.c:1787
+#: builtin/log.c:1785 builtin/log.c:1786
 msgid "email"
 msgstr "thư điện tử"
 
-#: builtin/log.c:1786
+#: builtin/log.c:1785
 msgid "add To: header"
 msgstr "thêm To: đầu đề thư"
 
-#: builtin/log.c:1787
+#: builtin/log.c:1786
 msgid "add Cc: header"
 msgstr "thêm Cc: đầu đề thư"
 
-#: builtin/log.c:1788
+#: builtin/log.c:1787
 msgid "ident"
 msgstr "thụt lề"
 
-#: builtin/log.c:1789
+#: builtin/log.c:1788
 msgid "set From address to <ident> (or committer ident if absent)"
 msgstr ""
 "đặt “Địa chỉ gửi” thành <thụ lề> (hoặc thụt lề người commit nếu bỏ quên)"
 
-#: builtin/log.c:1791
+#: builtin/log.c:1790
 msgid "message-id"
 msgstr "message-id"
 
-#: builtin/log.c:1792
+#: builtin/log.c:1791
 msgid "make first mail a reply to <message-id>"
 msgstr "dùng thư đầu tiên để trả lời <message-id>"
 
-#: builtin/log.c:1793 builtin/log.c:1796
+#: builtin/log.c:1792 builtin/log.c:1795
 msgid "boundary"
 msgstr "ranh giới"
 
-#: builtin/log.c:1794
+#: builtin/log.c:1793
 msgid "attach the patch"
 msgstr "đính kèm miếng vá"
 
-#: builtin/log.c:1797
+#: builtin/log.c:1796
 msgid "inline the patch"
 msgstr "dùng miếng vá làm nội dung"
 
-#: builtin/log.c:1801
+#: builtin/log.c:1800
 msgid "enable message threading, styles: shallow, deep"
 msgstr "cho phép luồng lời nhắn, kiểu: “shallow”, “deep”"
 
-#: builtin/log.c:1803
+#: builtin/log.c:1802
 msgid "signature"
 msgstr "chữ ký"
 
-#: builtin/log.c:1804
+#: builtin/log.c:1803
 msgid "add a signature"
 msgstr "thêm chữ ký"
 
-#: builtin/log.c:1805
+#: builtin/log.c:1804
 msgid "base-commit"
 msgstr "lần_chuyển_giao_nền"
 
-#: builtin/log.c:1806
+#: builtin/log.c:1805
 msgid "add prerequisite tree info to the patch series"
 msgstr "add trước hết đòi hỏi thông tin cây tới sê-ri miếng vá"
 
-#: builtin/log.c:1809
+#: builtin/log.c:1808
 msgid "add a signature from a file"
 msgstr "thêm chữ ký từ một tập tin"
 
-#: builtin/log.c:1810
+#: builtin/log.c:1809
 msgid "don't print the patch filenames"
 msgstr "không hiển thị các tên tập tin của miếng vá"
 
-#: builtin/log.c:1812
+#: builtin/log.c:1811
 msgid "show progress while generating patches"
 msgstr "hiển thị bộ đo tiến triển trong khi tạo các miếng vá"
 
-#: builtin/log.c:1814
+#: builtin/log.c:1813
 msgid "show changes against <rev> in cover letter or single patch"
 msgstr ""
 "hiển thị các thay đổi dựa trên <rev> trong các chữ bao bọc hoặc miếng vá đơn"
 
-#: builtin/log.c:1817
+#: builtin/log.c:1816
 msgid "show changes against <refspec> in cover letter or single patch"
 msgstr ""
 "hiển thị các thay đổi dựa trên <refspec> trong các chữ bao bọc hoặc miếng vá "
 "đơn"
 
-#: builtin/log.c:1819
+#: builtin/log.c:1818
 msgid "percentage by which creation is weighted"
 msgstr "tỷ lệ phần trăm theo cái tạo là weighted"
 
-#: builtin/log.c:1905
+#: builtin/log.c:1904
 #, c-format
 msgid "invalid ident line: %s"
 msgstr "dòng định danh không hợp lệ: %s"
 
-#: builtin/log.c:1920
+#: builtin/log.c:1919
 msgid "-n and -k are mutually exclusive"
 msgstr "-n và -k loại trừ lẫn nhau"
 
-#: builtin/log.c:1922
+#: builtin/log.c:1921
 msgid "--subject-prefix/--rfc and -k are mutually exclusive"
 msgstr "--subject-prefix/--rfc và -k xung khắc nhau"
 
-#: builtin/log.c:1930
+#: builtin/log.c:1929
 msgid "--name-only does not make sense"
 msgstr "--name-only không hợp lý"
 
-#: builtin/log.c:1932
+#: builtin/log.c:1931
 msgid "--name-status does not make sense"
 msgstr "--name-status không hợp lý"
 
-#: builtin/log.c:1934
+#: builtin/log.c:1933
 msgid "--check does not make sense"
 msgstr "--check không hợp lý"
 
-#: builtin/log.c:1956
+#: builtin/log.c:1955
 msgid "--stdout, --output, and --output-directory are mutually exclusive"
 msgstr "Các tùy chọn--stdout, --output, và --output-directory loại từ lẫn nhau"
 
-#: builtin/log.c:2079
+#: builtin/log.c:2078
 msgid "--interdiff requires --cover-letter or single patch"
 msgstr "--interdiff cần --cover-letter hoặc vá đơn"
 
-#: builtin/log.c:2083
+#: builtin/log.c:2082
 msgid "Interdiff:"
 msgstr "Interdiff:"
 
-#: builtin/log.c:2084
+#: builtin/log.c:2083
 #, c-format
 msgid "Interdiff against v%d:"
 msgstr "Interdiff dựa trên v%d:"
 
-#: builtin/log.c:2090
+#: builtin/log.c:2089
 msgid "--creation-factor requires --range-diff"
 msgstr "--creation-factor yêu cầu --range-diff"
 
-#: builtin/log.c:2094
+#: builtin/log.c:2093
 msgid "--range-diff requires --cover-letter or single patch"
 msgstr "--range-diff yêu cầu --cover-letter hoặc miếng vá đơn"
 
-#: builtin/log.c:2102
+#: builtin/log.c:2101
 msgid "Range-diff:"
 msgstr "Range-diff:"
 
-#: builtin/log.c:2103
+#: builtin/log.c:2102
 #, c-format
 msgid "Range-diff against v%d:"
 msgstr "Range-diff dựa trên v%d:"
 
-#: builtin/log.c:2114
+#: builtin/log.c:2113
 #, c-format
 msgid "unable to read signature file '%s'"
 msgstr "không thể đọc tập tin chữ ký “%s”"
 
-#: builtin/log.c:2150
+#: builtin/log.c:2149
 msgid "Generating patches"
 msgstr "Đang tạo các miếng vá"
 
-#: builtin/log.c:2194
+#: builtin/log.c:2193
 msgid "failed to create output files"
 msgstr "gặp lỗi khi tạo các tập tin kết xuất"
 
-#: builtin/log.c:2253
+#: builtin/log.c:2252
 msgid "git cherry [-v] [<upstream> [<head> [<limit>]]]"
 msgstr "git cherry [-v] [<thượng-nguồn> [<đầu> [<giới-hạn>]]]"
 
-#: builtin/log.c:2307
+#: builtin/log.c:2306
 #, c-format
 msgid ""
 "Could not find a tracked remote branch, please specify <upstream> manually.\n"
@@ -16685,113 +17006,117 @@ msgstr ""
 "Không tìm thấy nhánh mạng được theo dõi, hãy chỉ định <thượng-nguồn> một "
 "cách thủ công.\n"
 
-#: builtin/ls-files.c:471
+#: builtin/ls-files.c:486
 msgid "git ls-files [<options>] [<file>...]"
 msgstr "git ls-files [<các tùy chọn>] [<tập-tin>…]"
 
-#: builtin/ls-files.c:527
+#: builtin/ls-files.c:542
 msgid "identify the file status with tags"
 msgstr "nhận dạng các trạng thái tập tin với thẻ"
 
-#: builtin/ls-files.c:529
+#: builtin/ls-files.c:544
 msgid "use lowercase letters for 'assume unchanged' files"
 msgstr ""
 "dùng chữ cái viết thường cho các tập tin “assume unchanged” (giả định không "
 "thay đổi)"
 
-#: builtin/ls-files.c:531
+#: builtin/ls-files.c:546
 msgid "use lowercase letters for 'fsmonitor clean' files"
 msgstr "dùng chữ cái viết thường cho các tập tin “fsmonitor clean”"
 
-#: builtin/ls-files.c:533
+#: builtin/ls-files.c:548
 msgid "show cached files in the output (default)"
 msgstr "hiển thị các tập tin được nhớ tạm vào đầu ra (mặc định)"
 
-#: builtin/ls-files.c:535
+#: builtin/ls-files.c:550
 msgid "show deleted files in the output"
 msgstr "hiển thị các tập tin đã xóa trong kết xuất"
 
-#: builtin/ls-files.c:537
+#: builtin/ls-files.c:552
 msgid "show modified files in the output"
 msgstr "hiển thị các tập tin đã bị sửa đổi ra kết xuất"
 
-#: builtin/ls-files.c:539
+#: builtin/ls-files.c:554
 msgid "show other files in the output"
 msgstr "hiển thị các tập tin khác trong kết xuất"
 
-#: builtin/ls-files.c:541
+#: builtin/ls-files.c:556
 msgid "show ignored files in the output"
 msgstr "hiển thị các tập tin bị bỏ qua trong kết xuất"
 
-#: builtin/ls-files.c:544
+#: builtin/ls-files.c:559
 msgid "show staged contents' object name in the output"
 msgstr "hiển thị tên đối tượng của nội dung được đặt lên bệ phóng ra kết xuất"
 
-#: builtin/ls-files.c:546
+#: builtin/ls-files.c:561
 msgid "show files on the filesystem that need to be removed"
 msgstr "hiển thị các tập tin trên hệ thống tập tin mà nó cần được gỡ bỏ"
 
-#: builtin/ls-files.c:548
+#: builtin/ls-files.c:563
 msgid "show 'other' directories' names only"
 msgstr "chỉ hiển thị tên của các thư mục “khác”"
 
-#: builtin/ls-files.c:550
+#: builtin/ls-files.c:565
 msgid "show line endings of files"
 msgstr "hiển thị kết thúc dòng của các tập tin"
 
-#: builtin/ls-files.c:552
+#: builtin/ls-files.c:567
 msgid "don't show empty directories"
 msgstr "không hiển thị thư mục rỗng"
 
-#: builtin/ls-files.c:555
+#: builtin/ls-files.c:570
 msgid "show unmerged files in the output"
 msgstr "hiển thị các tập tin chưa hòa trộn trong kết xuất"
 
-#: builtin/ls-files.c:557
+#: builtin/ls-files.c:572
 msgid "show resolve-undo information"
 msgstr "hiển thị thông tin resolve-undo"
 
-#: builtin/ls-files.c:559
+#: builtin/ls-files.c:574
 msgid "skip files matching pattern"
 msgstr "bỏ qua những tập tin khớp với một mẫu"
 
-#: builtin/ls-files.c:562
+#: builtin/ls-files.c:577
 msgid "exclude patterns are read from <file>"
 msgstr "mẫu loại trừ được đọc từ <tập tin>"
 
-#: builtin/ls-files.c:565
+#: builtin/ls-files.c:580
 msgid "read additional per-directory exclude patterns in <file>"
 msgstr "đọc thêm các mẫu ngoại trừ mỗi thư mục trong <tập tin>"
 
-#: builtin/ls-files.c:567
+#: builtin/ls-files.c:582
 msgid "add the standard git exclusions"
 msgstr "thêm loại trừ tiêu chuẩn kiểu git"
 
-#: builtin/ls-files.c:571
+#: builtin/ls-files.c:586
 msgid "make the output relative to the project top directory"
 msgstr "làm cho kết xuất liên quan đến thư mục ở mức cao nhất (gốc) của dự án"
 
-#: builtin/ls-files.c:574
+#: builtin/ls-files.c:589
 msgid "recurse through submodules"
 msgstr "đệ quy xuyên qua mô-đun con"
 
-#: builtin/ls-files.c:576
+#: builtin/ls-files.c:591
 msgid "if any <file> is not in the index, treat this as an error"
 msgstr "nếu <tập tin> bất kỳ không ở trong bảng mục lục, xử lý nó như một lỗi"
 
-#: builtin/ls-files.c:577
+#: builtin/ls-files.c:592
 msgid "tree-ish"
 msgstr "tree-ish"
 
-#: builtin/ls-files.c:578
+#: builtin/ls-files.c:593
 msgid "pretend that paths removed since <tree-ish> are still present"
 msgstr ""
 "giả định rằng các đường dẫn đã bị gỡ bỏ kể từ <tree-ish> nay vẫn hiện diện"
 
-#: builtin/ls-files.c:580
+#: builtin/ls-files.c:595
 msgid "show debugging data"
 msgstr "hiển thị dữ liệu gỡ lỗi"
 
+#: builtin/ls-files.c:597
+msgid "suppress duplicate entries"
+msgstr "chặn các mục tin trùng lặp"
+
 #: builtin/ls-remote.c:9
 msgid ""
 "git ls-remote [--heads] [--tags] [--refs] [--upload-pack=<exec>]\n"
@@ -16802,39 +17127,39 @@ msgstr ""
 "                     [-q | --quiet] [--exit-code] [--get-url]\n"
 "                     [--symref] [<kho> [<các tham chiếu>…]]"
 
-#: builtin/ls-remote.c:59
+#: builtin/ls-remote.c:60
 msgid "do not print remote URL"
 msgstr "không hiển thị URL máy chủ"
 
-#: builtin/ls-remote.c:60 builtin/ls-remote.c:62 builtin/rebase.c:1398
+#: builtin/ls-remote.c:61 builtin/ls-remote.c:63 builtin/rebase.c:1404
 msgid "exec"
 msgstr "thực thi"
 
-#: builtin/ls-remote.c:61 builtin/ls-remote.c:63
+#: builtin/ls-remote.c:62 builtin/ls-remote.c:64
 msgid "path of git-upload-pack on the remote host"
 msgstr "đường dẫn của git-upload-pack trên máy chủ"
 
-#: builtin/ls-remote.c:65
+#: builtin/ls-remote.c:66
 msgid "limit to tags"
 msgstr "giới hạn tới các thẻ"
 
-#: builtin/ls-remote.c:66
+#: builtin/ls-remote.c:67
 msgid "limit to heads"
 msgstr "giới hạn cho các đầu"
 
-#: builtin/ls-remote.c:67
+#: builtin/ls-remote.c:68
 msgid "do not show peeled tags"
 msgstr "không hiển thị thẻ bị peel (gọt bỏ)"
 
-#: builtin/ls-remote.c:69
+#: builtin/ls-remote.c:70
 msgid "take url.<base>.insteadOf into account"
 msgstr "lấy url.<base>.insteadOf vào trong tài khoản"
 
-#: builtin/ls-remote.c:72
+#: 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:75
+#: 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ó"
 
@@ -16989,193 +17314,193 @@ msgstr "không thể phân giải tham chiếu %s"
 msgid "Merging %s with %s\n"
 msgstr "Đang hòa trộn %s với %s\n"
 
-#: builtin/merge.c:57
+#: builtin/merge.c:58
 msgid "git merge [<options>] [<commit>...]"
 msgstr "git merge [<các tùy chọn>] [<commit>…]"
 
-#: builtin/merge.c:58
+#: builtin/merge.c:59
 msgid "git merge --abort"
 msgstr "git merge --abort"
 
-#: builtin/merge.c:59
+#: builtin/merge.c:60
 msgid "git merge --continue"
 msgstr "git merge --continue"
 
-#: builtin/merge.c:122
+#: builtin/merge.c:123
 msgid "switch `m' requires a value"
 msgstr "switch “m” yêu cầu một giá trị"
 
-#: builtin/merge.c:145
+#: builtin/merge.c:146
 #, c-format
 msgid "option `%s' requires a value"
 msgstr "tùy chọn “%s” yêu cầu một giá trị"
 
-#: builtin/merge.c:198
+#: builtin/merge.c:199
 #, 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:199
+#: builtin/merge.c:200
 #, c-format
 msgid "Available strategies are:"
 msgstr "Các chiến lược sẵn sàng là:"
 
-#: builtin/merge.c:204
+#: builtin/merge.c:205
 #, 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:255 builtin/pull.c:133
+#: builtin/merge.c:256 builtin/pull.c:133
 msgid "do not show a diffstat at the end of the merge"
 msgstr "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:258 builtin/pull.c:136
+#: builtin/merge.c:259 builtin/pull.c:136
 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:259 builtin/pull.c:139
+#: builtin/merge.c:260 builtin/pull.c:139
 msgid "(synonym to --stat)"
 msgstr "(đồng nghĩa với --stat)"
 
-#: builtin/merge.c:261 builtin/pull.c:142
+#: builtin/merge.c:262 builtin/pull.c:142
 msgid "add (at most <n>) entries from shortlog to merge commit message"
 msgstr "thêm (ít nhất <n>) mục từ shortlog cho ghi chú chuyển giao hòa trộn"
 
-#: builtin/merge.c:264 builtin/pull.c:148
+#: builtin/merge.c:265 builtin/pull.c:148
 msgid "create a single commit instead of doing a merge"
 msgstr "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:266 builtin/pull.c:151
+#: builtin/merge.c:267 builtin/pull.c:151
 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:268 builtin/pull.c:154
+#: builtin/merge.c:269 builtin/pull.c:154
 msgid "edit message before committing"
 msgstr "sửa chú thích trước khi chuyển giao"
 
-#: builtin/merge.c:270
+#: builtin/merge.c:271
 msgid "allow fast-forward (default)"
 msgstr "cho phép chuyển-tiếp-nhanh (mặc định)"
 
-#: builtin/merge.c:272 builtin/pull.c:161
+#: builtin/merge.c:273 builtin/pull.c:161
 msgid "abort if fast-forward is not possible"
 msgstr "bỏ qua nếu chuyển-tiếp-nhanh không thể được"
 
-#: builtin/merge.c:276 builtin/pull.c:164
+#: builtin/merge.c:277 builtin/pull.c:164
 msgid "verify that the named commit has a valid GPG signature"
 msgstr "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:277 builtin/notes.c:787 builtin/pull.c:168
-#: builtin/rebase.c:539 builtin/rebase.c:1412 builtin/revert.c:114
+#: builtin/merge.c:278 builtin/notes.c:787 builtin/pull.c:168
+#: builtin/rebase.c:541 builtin/rebase.c:1418 builtin/revert.c:114
 msgid "strategy"
 msgstr "chiến lược"
 
-#: builtin/merge.c:278 builtin/pull.c:169
+#: builtin/merge.c:279 builtin/pull.c:169
 msgid "merge strategy to use"
 msgstr "chiến lược hòa trộn sẽ dùng"
 
-#: builtin/merge.c:279 builtin/pull.c:172
+#: builtin/merge.c:280 builtin/pull.c:172
 msgid "option=value"
 msgstr "tùy_chọn=giá_trị"
 
-#: builtin/merge.c:280 builtin/pull.c:173
+#: builtin/merge.c:281 builtin/pull.c:173
 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:282
+#: builtin/merge.c:283
 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:289
+#: builtin/merge.c:290
 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:291
+#: builtin/merge.c:292
 msgid "--abort but leave index and working tree alone"
 msgstr "--abort nhưng để lại bảng mục lục và cây làm việc"
 
-#: builtin/merge.c:293
+#: builtin/merge.c:294
 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:295 builtin/pull.c:180
+#: builtin/merge.c:296 builtin/pull.c:180
 msgid "allow merging unrelated histories"
 msgstr "cho phép hòa trộn lịch sử không liên quan"
 
-#: builtin/merge.c:302
+#: builtin/merge.c:303
 msgid "bypass pre-merge-commit and commit-msg hooks"
 msgstr "vòng qua móc (hook) pre-merge-commit và commit-msg"
 
-#: builtin/merge.c:319
+#: builtin/merge.c:320
 msgid "could not run stash."
 msgstr "không thể chạy stash."
 
-#: builtin/merge.c:324
+#: builtin/merge.c:325
 msgid "stash failed"
 msgstr "lệnh tạm cất gặp lỗi"
 
-#: builtin/merge.c:329
+#: builtin/merge.c:330
 #, 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:351 builtin/merge.c:368
+#: builtin/merge.c:352 builtin/merge.c:369
 msgid "read-tree failed"
 msgstr "read-tree gặp lỗi"
 
-#: builtin/merge.c:398
+#: builtin/merge.c:399
 msgid " (nothing to squash)"
 msgstr " (không có gì để squash)"
 
-#: builtin/merge.c:409
+#: builtin/merge.c:410
 #, c-format
 msgid "Squash commit -- not updating HEAD\n"
 msgstr "Squash commit -- không cập nhật HEAD\n"
 
-#: builtin/merge.c:459
+#: builtin/merge.c:460
 #, 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:510
+#: builtin/merge.c:511
 #, 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:597
+#: builtin/merge.c:598
 #, c-format
 msgid "Bad branch.%s.mergeoptions string: %s"
 msgstr "Chuỗi branch.%s.mergeoptions sai: %s"
 
-#: builtin/merge.c:723
+#: builtin/merge.c:724
 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:736
+#: builtin/merge.c:737
 #, 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:755 t/helper/test-fast-rebase.c:209
+#: builtin/merge.c:756 t/helper/test-fast-rebase.c:209
 #, c-format
 msgid "unable to write %s"
 msgstr "không thể ghi %s"
 
-#: builtin/merge.c:807
+#: builtin/merge.c:808
 #, c-format
 msgid "Could not read from '%s'"
 msgstr "Không thể đọc từ “%s”"
 
-#: builtin/merge.c:816
+#: builtin/merge.c:817
 #, c-format
 msgid "Not committing merge; use 'git commit' to complete the merge.\n"
 msgstr ""
 "Vẫn chưa hòa trộn các lần chuyển giao; sử dụng lệnh “git commit” để hoàn tất "
 "việc hòa trộn.\n"
 
-#: builtin/merge.c:822
+#: builtin/merge.c:823
 msgid ""
 "Please enter a commit message to explain why this merge is necessary,\n"
 "especially if it merges an updated upstream into a topic branch.\n"
@@ -17187,11 +17512,11 @@ msgstr ""
 "topic.\n"
 "\n"
 
-#: builtin/merge.c:827
+#: builtin/merge.c:828
 msgid "An empty message aborts the commit.\n"
 msgstr "Nếu phần chú thích rỗng sẽ hủy bỏ lần chuyển giao.\n"
 
-#: builtin/merge.c:830
+#: builtin/merge.c:831
 #, c-format
 msgid ""
 "Lines starting with '%c' will be ignored, and an empty message aborts\n"
@@ -17200,75 +17525,75 @@ msgstr ""
 "Những dòng được bắt đầu bằng “%c” sẽ được bỏ qua, và nếu phần chú\n"
 "thích rỗng sẽ hủy bỏ lần chuyển giao.\n"
 
-#: builtin/merge.c:883
+#: builtin/merge.c:884
 msgid "Empty commit message."
 msgstr "Chú thích của lần commit (chuyển giao) bị trống rỗng."
 
-#: builtin/merge.c:898
+#: builtin/merge.c:899
 #, c-format
 msgid "Wonderful.\n"
 msgstr "Tuyệt vời.\n"
 
-#: builtin/merge.c:959
+#: builtin/merge.c:960
 #, 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:998
+#: builtin/merge.c:999
 msgid "No current branch."
 msgstr "Không phải nhánh hiện hành."
 
-#: builtin/merge.c:1000
+#: builtin/merge.c:1001
 msgid "No remote for the current branch."
 msgstr "Không có máy chủ cho nhánh hiện hành."
 
-#: builtin/merge.c:1002
+#: builtin/merge.c:1003
 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:1007
+#: builtin/merge.c:1008
 #, 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:1064
+#: builtin/merge.c:1065
 #, 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:1167
+#: builtin/merge.c:1168
 #, 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:1201
+#: builtin/merge.c:1202
 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:1311
+#: builtin/merge.c:1312
 msgid "--abort expects no arguments"
 msgstr "--abort không nhận các đối số"
 
-#: builtin/merge.c:1315
+#: builtin/merge.c:1316
 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:1333
+#: builtin/merge.c:1334
 msgid "--quit expects no arguments"
 msgstr "--quit không nhận các đối số"
 
-#: builtin/merge.c:1346
+#: builtin/merge.c:1347
 msgid "--continue expects no arguments"
 msgstr "--continue không nhận đối số"
 
-#: builtin/merge.c:1350
+#: builtin/merge.c:1351
 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:1366
+#: builtin/merge.c:1367
 msgid ""
 "You have not concluded your merge (MERGE_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -17276,7 +17601,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:1373
+#: builtin/merge.c:1374
 msgid ""
 "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -17284,104 +17609,147 @@ 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:1376
+#: builtin/merge.c:1377
 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:1390
+#: builtin/merge.c:1391
 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:1392
+#: builtin/merge.c:1393
 msgid "You cannot combine --squash with --commit."
 msgstr "Bạn không thể kết hợp --squash với --commit."
 
-#: builtin/merge.c:1408
+#: builtin/merge.c:1409
 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:1425
+#: builtin/merge.c:1426
 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:1427
+#: builtin/merge.c:1428
 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:1432
+#: builtin/merge.c:1433
 #, 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:1434
+#: builtin/merge.c:1435
 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:1515
+#: builtin/merge.c:1516
 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:1524
+#: builtin/merge.c:1525
 msgid "Already up to date."
 msgstr "Đã cập nhật rồi."
 
-#: builtin/merge.c:1534
+#: builtin/merge.c:1535
 #, c-format
 msgid "Updating %s..%s\n"
 msgstr "Đang cập nhật %s..%s\n"
 
-#: builtin/merge.c:1580
+#: builtin/merge.c:1581
 #, 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:1587
+#: builtin/merge.c:1588
 #, c-format
 msgid "Nope.\n"
 msgstr "Không.\n"
 
-#: builtin/merge.c:1612
+#: builtin/merge.c:1613
 msgid "Already up to date. Yeeah!"
 msgstr "Đã cập nhật rồi. Yeeah!"
 
-#: builtin/merge.c:1618
+#: builtin/merge.c:1619
 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:1646 builtin/merge.c:1711
+#: builtin/merge.c:1647 builtin/merge.c:1712
 #, 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:1650
+#: builtin/merge.c:1651
 #, c-format
 msgid "Trying merge strategy %s...\n"
 msgstr "Đang thử chiến lược hòa trộn %s…\n"
 
-#: builtin/merge.c:1702
+#: builtin/merge.c:1703
 #, 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:1704
+#: builtin/merge.c:1705
 #, 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:1713
+#: builtin/merge.c:1714
 #, 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:1727
+#: builtin/merge.c:1728
 #, c-format
 msgid "Automatic merge went well; stopped before committing as requested\n"
 msgstr ""
 "Hòa trộn tự động đã trở nên tốt; bị dừng trước khi việc chuyển giao được yêu "
 "cầu\n"
 
+#: builtin/mktag.c:10
+msgid "git mktag"
+msgstr "git mktag"
+
+#: builtin/mktag.c:30
+#, c-format
+msgid "warning: tag input does not pass fsck: %s"
+msgstr "cảnh báo: đầu vào thẻ không qua kiểm tra fsck: %s"
+
+#: builtin/mktag.c:41
+#, c-format
+msgid "error: tag input does not pass fsck: %s"
+msgstr "lỗi: đầu vào thẻ không vượt qua fsck: %s"
+
+#: builtin/mktag.c:44
+#, c-format
+msgid "%d (FSCK_IGNORE?) should never trigger this callback"
+msgstr "%d (FSCK_IGNORE?) không bao giờ nên kích hoạt cuộc gọi ngược này"
+
+#: builtin/mktag.c:59
+#, c-format
+msgid "could not read tagged object '%s'"
+msgstr "không thể đọc đối tượng được đánh thẻ %s"
+
+#: builtin/mktag.c:62
+#, c-format
+msgid "object '%s' tagged as '%s', but is a '%s' type"
+msgstr "đối tượng %s được đánh thẻ là %s, không phải là kiểu %s"
+
+#: builtin/mktag.c:99
+msgid "tag on stdin did not pass our strict fsck check"
+msgstr ""
+"thẻ trên stdin đã không vượt qua kiểm tra fsck nghiêm ngặt của chúng tôi"
+
+#: builtin/mktag.c:102
+msgid "tag on stdin did not refer to a valid object"
+msgstr ""
+"thẻ trên đầu vào tiêu chuẩn không chỉ đến một lần chuyển giao hợp lệ nào cả"
+
+#: builtin/mktag.c:105 builtin/tag.c:232
+msgid "unable to write tag file"
+msgstr "không thể ghi vào tập tin lưu thẻ"
+
 #: builtin/mktree.c:66
 msgid "git mktree [-z] [--missing] [--batch]"
 msgstr "git mktree [-z] [--missing] [--batch]"
@@ -17418,7 +17786,10 @@ msgstr ""
 "trong suốt quá trình đóng gói lại, gom các tập tin gói có kích cỡ nhỏ hơn "
 "vào một bó cái mà lớn hơn kích thước này"
 
-#: builtin/multi-pack-index.c:50 builtin/prune-packed.c:25
+#: builtin/multi-pack-index.c:50 builtin/notes.c:376 builtin/notes.c:431
+#: builtin/notes.c:509 builtin/notes.c:521 builtin/notes.c:598
+#: builtin/notes.c:665 builtin/notes.c:815 builtin/notes.c:963
+#: builtin/notes.c:985 builtin/prune-packed.c:25 builtin/tag.c:575
 msgid "too many arguments"
 msgstr "có quá nhiều đối số"
 
@@ -17523,7 +17894,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:280 builtin/remote.c:785 builtin/repack.c:484
+#: builtin/mv.c:280 builtin/remote.c:785 builtin/repack.c:483
 #, c-format
 msgid "renaming '%s' failed"
 msgstr "gặp lỗi khi đổi tên “%s”"
@@ -17715,7 +18086,7 @@ 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:242 builtin/tag.c:533
+#: builtin/notes.c:242 builtin/tag.c:565
 #, c-format
 msgid "could not open or read '%s'"
 msgstr "không thể mở hay đọc “%s”"
@@ -17755,12 +18126,6 @@ msgstr "gặp lỗi khi sao chép ghi chú (note) từ “%s” sang “%s”"
 msgid "refusing to %s notes in %s (outside of refs/notes/)"
 msgstr "từ chối %s ghi chú trong %s (nằm ngoài refs/notes/)"
 
-#: builtin/notes.c:376 builtin/notes.c:431 builtin/notes.c:509
-#: builtin/notes.c:521 builtin/notes.c:598 builtin/notes.c:665
-#: builtin/notes.c:815 builtin/notes.c:963 builtin/notes.c:985
-msgid "too many parameters"
-msgstr "quá nhiều đối số"
-
 #: builtin/notes.c:389 builtin/notes.c:678
 #, c-format
 msgid "no note found for object %s."
@@ -17818,7 +18183,7 @@ msgid "load rewriting config for <command> (implies --stdin)"
 msgstr "tải cấu hình chép lại cho <lệnh> (ngầm định là --stdin)"
 
 #: builtin/notes.c:517
-msgid "too few parameters"
+msgid "too few arguments"
 msgstr "quá ít đối số"
 
 #: builtin/notes.c:538
@@ -17949,7 +18314,7 @@ msgstr ""
 "chuyển giao kết quả bằng “git notes merge --commit”, hoặc bãi bỏ việc hòa "
 "trộn bằng “git notes merge --abort”.\n"
 
-#: builtin/notes.c:897 builtin/tag.c:546
+#: builtin/notes.c:897 builtin/tag.c:578
 #, 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ệ."
@@ -17967,7 +18332,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:954 builtin/prune.c:132 builtin/worktree.c:220
+#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:148
 msgid "do not remove, show only"
 msgstr "không gỡ bỏ, chỉ hiển thị"
 
@@ -17983,7 +18348,7 @@ msgstr "notes-ref"
 msgid "use notes from <notes-ref>"
 msgstr "dùng “notes” từ <notes-ref>"
 
-#: builtin/notes.c:1034 builtin/stash.c:1604
+#: builtin/notes.c:1034 builtin/stash.c:1671
 #, c-format
 msgid "unknown subcommand: %s"
 msgstr "không hiểu câu lệnh con: %s"
@@ -18002,103 +18367,117 @@ 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:443
+#: builtin/pack-objects.c:440
+#, c-format
+msgid ""
+"write_reuse_object: could not locate %s, expected at offset %<PRIuMAX> in "
+"pack %s"
+msgstr ""
+"write_reuse_object: không thể phân bổ %s, cần tại vị trí bù %<PRIuMAX> trong "
+"gói %s"
+
+#: builtin/pack-objects.c:448
 #, c-format
 msgid "bad packed object CRC for %s"
 msgstr "CRC của đối tượng gói sai với %s"
 
-#: builtin/pack-objects.c:454
+#: builtin/pack-objects.c:459
 #, c-format
 msgid "corrupt packed object for %s"
 msgstr "đối tượng đã đóng gói sai hỏng cho %s"
 
-#: builtin/pack-objects.c:585
+#: builtin/pack-objects.c:590
 #, c-format
 msgid "recursive delta detected for object %s"
 msgstr "dò thấy delta đệ quy cho đối tượng %s"
 
-#: builtin/pack-objects.c:796
+#: builtin/pack-objects.c:801
 #, c-format
 msgid "ordered %u objects, expected %<PRIu32>"
 msgstr "đã sắp xếp %u đối tượng, cần %<PRIu32>"
 
-#: builtin/pack-objects.c:1004
+#: builtin/pack-objects.c:896
+#, c-format
+msgid "expected object at offset %<PRIuMAX> in pack %s"
+msgstr "cần đối tượng tại khoảng bù %<PRIuMAX> trong gói: %s"
+
+#: builtin/pack-objects.c:1015
 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:1017
+#: builtin/pack-objects.c:1028
 msgid "Writing objects"
 msgstr "Đang ghi lại các đối tượng"
 
-#: builtin/pack-objects.c:1078 builtin/update-index.c:90
+#: builtin/pack-objects.c:1089 builtin/update-index.c:90
 #, c-format
 msgid "failed to stat %s"
 msgstr "gặp lỗi khi lấy thông tin thống kê về %s"
 
-#: builtin/pack-objects.c:1131
+#: builtin/pack-objects.c:1141
 #, c-format
 msgid "wrote %<PRIu32> objects while expecting %<PRIu32>"
 msgstr "đã ghi %<PRIu32> đối tượng trong khi cần %<PRIu32>"
 
-#: builtin/pack-objects.c:1348
+#: builtin/pack-objects.c:1358
 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:1796
+#: builtin/pack-objects.c:1806
 #, c-format
 msgid "delta base offset overflow in pack for %s"
 msgstr "khoảng bù cơ sở cho delta bị tràn trong gói cho %s"
 
-#: builtin/pack-objects.c:1805
+#: builtin/pack-objects.c:1815
 #, c-format
 msgid "delta base offset out of bound for %s"
 msgstr "khoảng bù cơ sở cho delta nằm ngoài phạm cho %s"
 
-#: builtin/pack-objects.c:2086
+#: builtin/pack-objects.c:2096
 msgid "Counting objects"
 msgstr "Đang đếm các đối tượng"
 
-#: builtin/pack-objects.c:2231
+#: builtin/pack-objects.c:2241
 #, 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:2301 builtin/pack-objects.c:2317
-#: builtin/pack-objects.c:2327
+#: builtin/pack-objects.c:2311 builtin/pack-objects.c:2327
+#: builtin/pack-objects.c:2337
 #, c-format
 msgid "object %s cannot be read"
 msgstr "không thể đọc đối tượng %s"
 
-#: builtin/pack-objects.c:2304 builtin/pack-objects.c:2331
+#: builtin/pack-objects.c:2314 builtin/pack-objects.c:2341
 #, c-format
 msgid "object %s inconsistent object length (%<PRIuMAX> vs %<PRIuMAX>)"
 msgstr ""
 "đối tượng %s không nhất quán về chiều dài đối tượng (%<PRIuMAX> so với "
 "%<PRIuMAX>)"
 
-#: builtin/pack-objects.c:2341
+#: builtin/pack-objects.c:2351
 msgid "suboptimal pack - out of memory"
 msgstr "suboptimal pack - hết bộ nhớ"
 
-#: builtin/pack-objects.c:2656
+#: builtin/pack-objects.c:2666
 #, c-format
 msgid "Delta compression using up to %d threads"
 msgstr "Nén delta dùng tới %d tuyến trình"
 
-#: builtin/pack-objects.c:2795
+#: builtin/pack-objects.c:2805
 #, c-format
 msgid "unable to pack objects reachable from tag %s"
 msgstr "không thể đóng gói các đối tượng tiếp cận được từ thẻ “%s”"
 
-#: builtin/pack-objects.c:2883
+#: builtin/pack-objects.c:2891
 msgid "Compressing objects"
 msgstr "Đang nén các đối tượng"
 
-#: builtin/pack-objects.c:2889
+#: builtin/pack-objects.c:2897
 msgid "inconsistency with delta count"
 msgstr "mâu thuẫn với số lượng delta"
 
-#: builtin/pack-objects.c:2961
+#: builtin/pack-objects.c:2976
 #, c-format
 msgid ""
 "value of uploadpack.blobpackfileuri must be of the form '<object-hash> <pack-"
@@ -18107,7 +18486,7 @@ msgstr ""
 "giá trị của uploadpack.blobpackfileuri phải có dạng “<object-hash> <pack-"
 "hash> <uri>” (nhận “%s”)"
 
-#: builtin/pack-objects.c:2964
+#: builtin/pack-objects.c:2979
 #, c-format
 msgid ""
 "object already configured in another uploadpack.blobpackfileuri (got '%s')"
@@ -18115,7 +18494,7 @@ msgstr ""
 "đối tượng đã được cấu hình trong một uploadpack.blobpackfileuri khác (đã "
 "nhận “%s”)"
 
-#: builtin/pack-objects.c:2993
+#: builtin/pack-objects.c:3008
 #, c-format
 msgid ""
 "expected edge object ID, got garbage:\n"
@@ -18124,7 +18503,7 @@ msgstr ""
 "cần ID đối tượng cạnh, nhận được rác:\n"
 " %s"
 
-#: builtin/pack-objects.c:2999
+#: builtin/pack-objects.c:3014
 #, c-format
 msgid ""
 "expected object ID, got garbage:\n"
@@ -18133,236 +18512,236 @@ msgstr ""
 "cần ID đối tượng, nhận được rác:\n"
 " %s"
 
-#: builtin/pack-objects.c:3097
+#: builtin/pack-objects.c:3112
 msgid "invalid value for --missing"
 msgstr "giá trị cho --missing không hợp lệ"
 
-#: builtin/pack-objects.c:3156 builtin/pack-objects.c:3264
+#: builtin/pack-objects.c:3171 builtin/pack-objects.c:3279
 msgid "cannot open pack index"
 msgstr "không thể mở mục lục của gói"
 
-#: builtin/pack-objects.c:3187
+#: builtin/pack-objects.c:3202
 #, c-format
 msgid "loose object at %s could not be examined"
 msgstr "đối tượng mất tại %s không thể đã kiểm tra"
 
-#: builtin/pack-objects.c:3272
+#: builtin/pack-objects.c:3287
 msgid "unable to force loose object"
 msgstr "không thể buộc mất đối tượng"
 
-#: builtin/pack-objects.c:3365
+#: builtin/pack-objects.c:3380
 #, c-format
 msgid "not a rev '%s'"
 msgstr "không phải một rev “%s”"
 
-#: builtin/pack-objects.c:3368
+#: builtin/pack-objects.c:3383
 #, c-format
 msgid "bad revision '%s'"
 msgstr "điểm xem xét sai “%s”"
 
-#: builtin/pack-objects.c:3393
+#: builtin/pack-objects.c:3408
 msgid "unable to add recent objects"
 msgstr "không thể thêm các đối tượng mới dùng"
 
-#: builtin/pack-objects.c:3446
+#: builtin/pack-objects.c:3461
 #, 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:3450
+#: builtin/pack-objects.c:3465
 #, c-format
 msgid "bad index version '%s'"
 msgstr "phiên bản mục lục sai “%s”"
 
-#: builtin/pack-objects.c:3488
+#: builtin/pack-objects.c:3503
 msgid "<version>[,<offset>]"
 msgstr "<phiên bản>[,offset]"
 
-#: builtin/pack-objects.c:3489
+#: builtin/pack-objects.c:3504
 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:3492
+#: builtin/pack-objects.c:3507
 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:3494
+#: builtin/pack-objects.c:3509
 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:3496
+#: builtin/pack-objects.c:3511
 msgid "ignore packed objects"
 msgstr "bỏ qua các đối tượng đóng gói"
 
-#: builtin/pack-objects.c:3498
+#: builtin/pack-objects.c:3513
 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:3500
+#: builtin/pack-objects.c:3515
 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:3502
+#: builtin/pack-objects.c:3517
 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:3504
+#: builtin/pack-objects.c:3519
 msgid "reuse existing deltas"
 msgstr "dùng lại các delta sẵn có"
 
-#: builtin/pack-objects.c:3506
+#: builtin/pack-objects.c:3521
 msgid "reuse existing objects"
 msgstr "dùng lại các đối tượng sẵn có"
 
-#: builtin/pack-objects.c:3508
+#: builtin/pack-objects.c:3523
 msgid "use OFS_DELTA objects"
 msgstr "dùng các đối tượng OFS_DELTA"
 
-#: builtin/pack-objects.c:3510
+#: builtin/pack-objects.c:3525
 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:3512
+#: builtin/pack-objects.c:3527
 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:3514
+#: builtin/pack-objects.c:3529
 msgid "read revision arguments from standard input"
 msgstr "đọc tham số “revision” từ thiết bị nhập chuẩn"
 
-#: builtin/pack-objects.c:3516
+#: builtin/pack-objects.c:3531
 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:3519
+#: builtin/pack-objects.c:3534
 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:3522
+#: builtin/pack-objects.c:3537
 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:3525
+#: builtin/pack-objects.c:3540
 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:3528
+#: builtin/pack-objects.c:3543
 msgid "output pack to stdout"
 msgstr "xuất gói ra đầu ra tiêu chuẩn"
 
-#: builtin/pack-objects.c:3530
+#: builtin/pack-objects.c:3545
 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:3532
+#: builtin/pack-objects.c:3547
 msgid "keep unreachable objects"
 msgstr "giữ lại các đối tượng không thể đọc được"
 
-#: builtin/pack-objects.c:3534
+#: builtin/pack-objects.c:3549
 msgid "pack loose unreachable objects"
 msgstr "pack mất các đối tượng không thể đọc được"
 
-#: builtin/pack-objects.c:3536
+#: builtin/pack-objects.c:3551
 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:3539
+#: builtin/pack-objects.c:3554
 msgid "use the sparse reachability algorithm"
 msgstr "sử dụng thuật toán “sparse reachability”"
 
-#: builtin/pack-objects.c:3541
+#: builtin/pack-objects.c:3556
 msgid "create thin packs"
 msgstr "tạo gói nhẹ"
 
-#: builtin/pack-objects.c:3543
+#: builtin/pack-objects.c:3558
 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:3545
+#: builtin/pack-objects.c:3560
 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:3547
+#: builtin/pack-objects.c:3562
 msgid "ignore this pack"
 msgstr "bỏ qua gói này"
 
-#: builtin/pack-objects.c:3549
+#: builtin/pack-objects.c:3564
 msgid "pack compression level"
 msgstr "mức nén gói"
 
-#: builtin/pack-objects.c:3551
+#: builtin/pack-objects.c:3566
 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:3553
+#: builtin/pack-objects.c:3568
 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:3555
+#: builtin/pack-objects.c:3570
 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:3559
+#: builtin/pack-objects.c:3574
 msgid "write a bitmap index if possible"
 msgstr "ghi mục lục ánh xạ nếu được"
 
-#: builtin/pack-objects.c:3563
+#: builtin/pack-objects.c:3578
 msgid "handling for missing objects"
 msgstr "xử lý cho thiếu đối tượng"
 
-#: builtin/pack-objects.c:3566
+#: builtin/pack-objects.c:3581
 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:3568
+#: builtin/pack-objects.c:3583
 msgid "respect islands during delta compression"
 msgstr "tôn trọng island trong suốt quá trình nén “delta”"
 
-#: builtin/pack-objects.c:3570
+#: builtin/pack-objects.c:3585
 msgid "protocol"
 msgstr "giao thức"
 
-#: builtin/pack-objects.c:3571
+#: builtin/pack-objects.c:3586
 msgid "exclude any configured uploadpack.blobpackfileuri with this protocol"
 msgstr "loại trừ bất kỳ cấu hình uploadpack.blobpackfileuri với giao thức này"
 
-#: builtin/pack-objects.c:3600
+#: builtin/pack-objects.c:3617
 #, 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:3605
+#: builtin/pack-objects.c:3622
 #, c-format
 msgid "pack.deltaCacheLimit is too high, forcing %d"
 msgstr "pack.deltaCacheLimit là quá cao, ép dùng %d"
 
-#: builtin/pack-objects.c:3659
+#: builtin/pack-objects.c:3676
 msgid "--max-pack-size cannot be used to build a pack for transfer"
 msgstr ""
 "--max-pack-size không thể được sử dụng để xây dựng một gói để vận chuyển"
 
-#: builtin/pack-objects.c:3661
+#: builtin/pack-objects.c:3678
 msgid "minimum pack size limit is 1 MiB"
 msgstr "giới hạn kích thước tối thiểu của gói là 1 MiB"
 
-#: builtin/pack-objects.c:3666
+#: builtin/pack-objects.c:3683
 msgid "--thin cannot be used to build an indexable pack"
 msgstr "--thin không thể được dùng để xây dựng gói đánh mục lục được"
 
-#: builtin/pack-objects.c:3669
+#: builtin/pack-objects.c:3686
 msgid "--keep-unreachable and --unpack-unreachable are incompatible"
 msgstr "--keep-unreachable và --unpack-unreachable xung khắc nhau"
 
-#: builtin/pack-objects.c:3675
+#: builtin/pack-objects.c:3692
 msgid "cannot use --filter without --stdout"
 msgstr "không thể dùng tùy chọn --filter mà không có --stdout"
 
-#: builtin/pack-objects.c:3735
+#: builtin/pack-objects.c:3752
 msgid "Enumerating objects"
 msgstr "Đánh số các đối tượng"
 
-#: builtin/pack-objects.c:3766
+#: builtin/pack-objects.c:3783
 #, c-format
 msgid ""
 "Total %<PRIu32> (delta %<PRIu32>), reused %<PRIu32> (delta %<PRIu32>), pack-"
@@ -18371,6 +18750,20 @@ msgstr ""
 "Tổng %<PRIu32> (delta %<PRIu32>), dùng lại %<PRIu32> (delta %<PRIu32>), pack-"
 "reused %<PRIu32>"
 
+#: builtin/pack-redundant.c:601
+msgid ""
+"'git pack-redundant' is nominated for removal.\n"
+"If you still use this command, please add an extra\n"
+"option, '--i-still-use-this', on the command line\n"
+"and let us know you still use it by sending an e-mail\n"
+"to <git@vger.kernel.org>.  Thanks.\n"
+msgstr ""
+"'git pack-redundant' được đề cử để loại bỏ.\n"
+"Nếu bạn vẫn sử dụng lệnh này, vui lòng bổ sung\n"
+"thêm một tùy chọn, '--i-still-use-this', trên dòng lệnh\n"
+"và cho chúng tôi biết bạn vẫn sử dụng nó bằng cách gửi e-mail\n"
+"đến <git@vger.kernel.org>.  Cảm ơn.\n"
+
 #: builtin/pack-refs.c:8
 msgid "git pack-refs [<options>]"
 msgstr "git pack-refs [<các tùy chọn>]"
@@ -18428,7 +18821,7 @@ msgstr "Các tùy chọn liên quan đến hòa trộn"
 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:158 builtin/rebase.c:490 builtin/revert.c:126
+#: builtin/pull.c:158 builtin/rebase.c:492 builtin/revert.c:126
 msgid "allow fast-forward"
 msgstr "cho phép chuyển-tiếp-nhanh"
 
@@ -18440,53 +18833,20 @@ msgstr "tự động stash/stash pop trước và sau"
 msgid "Options related to fetching"
 msgstr "Các tùy chọn liên quan đến lệnh lấy về"
 
-#: builtin/pull.c:193
-msgid "force overwrite of local branch"
-msgstr "ép buộc ghi đè lên nhánh nội bộ"
-
-#: builtin/pull.c:201
-msgid "number of submodules pulled in parallel"
-msgstr "số lượng mô-đun-con được đẩy lên đồng thời"
-
-#: builtin/pull.c:317
-#, c-format
-msgid "Invalid value for pull.ff: %s"
-msgstr "Giá trị không hợp lệ cho pull.ff: %s"
-
-#: builtin/pull.c:348
-msgid ""
-"Pulling without specifying how to reconcile divergent branches is\n"
-"discouraged. You can squelch this message by running one of the following\n"
-"commands sometime before your next pull:\n"
-"\n"
-"  git config pull.rebase false  # merge (the default strategy)\n"
-"  git config pull.rebase true   # rebase\n"
-"  git config pull.ff only       # fast-forward only\n"
-"\n"
-"You can replace \"git config\" with \"git config --global\" to set a "
-"default\n"
-"preference for all repositories. You can also pass --rebase, --no-rebase,\n"
-"or --ff-only on the command line to override the configured default per\n"
-"invocation.\n"
-msgstr ""
-"Kéo mà không chỉ định làm thế nào để hòa giải các nhánh phân kỳ là khác nhau "
-"là\n"
-"không khuyến khích. Bạn có thể dịu thông báo này bằng cách chạy một trong "
-"những lệnh sau đây\n"
-"các lệnh thỉnh thoảng trước khi thực hiện lệnh pull tiếp theo của bạn:\n"
-"\n"
-"  git config pull.rebase false  # merge (chiến lược mặc định)\n"
-"  git config pull.rebase true   # rebase\n"
-"  git config pull.ff only       # fast-forward only\n"
-"\n"
-"Bạn có thể thay thế \"git config\" với \"git config --global\" để thiết lập "
-"mặc định\n"
-"ưu tiên cho tất cả các kho. Bạn cũng có thể chuyển qua --rebase, --no-"
-"rebase,\n"
-"hoặc --ff-only trên dòng lệnh để ghi đè mặc định được cấu hình cho mỗi\n"
-"lần gọi.\n"
+#: builtin/pull.c:193
+msgid "force overwrite of local branch"
+msgstr "ép buộc ghi đè lên nhánh nội bộ"
+
+#: builtin/pull.c:201
+msgid "number of submodules pulled in parallel"
+msgstr "số lượng mô-đun-con được đẩy lên đồng thời"
+
+#: builtin/pull.c:317
+#, c-format
+msgid "Invalid value for pull.ff: %s"
+msgstr "Giá trị không hợp lệ cho pull.ff: %s"
 
-#: builtin/pull.c:458
+#: builtin/pull.c:445
 msgid ""
 "There is no candidate for rebasing against among the refs that you just "
 "fetched."
@@ -18494,14 +18854,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:460
+#: builtin/pull.c:447
 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:461
+#: builtin/pull.c:448
 msgid ""
 "Generally this means that you provided a wildcard refspec which had no\n"
 "matches on the remote end."
@@ -18510,7 +18870,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:464
+#: builtin/pull.c:451
 #, c-format
 msgid ""
 "You asked to pull from the remote '%s', but did not specify\n"
@@ -18522,42 +18882,42 @@ 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:469 builtin/rebase.c:1246
+#: builtin/pull.c:456 builtin/rebase.c:1253
 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:471 builtin/pull.c:486
+#: builtin/pull.c:458 builtin/pull.c:473
 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:473 builtin/pull.c:488
+#: builtin/pull.c:460 builtin/pull.c:475
 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:474 builtin/pull.c:489
+#: builtin/pull.c:461 builtin/pull.c:476
 msgid "See git-pull(1) for details."
 msgstr "Xem git-pull(1) để biết thêm chi tiết."
 
-#: builtin/pull.c:476 builtin/pull.c:482 builtin/pull.c:491
-#: builtin/rebase.c:1252
+#: builtin/pull.c:463 builtin/pull.c:469 builtin/pull.c:478
+#: builtin/rebase.c:1259
 msgid "<remote>"
 msgstr "<máy chủ>"
 
-#: builtin/pull.c:476 builtin/pull.c:491 builtin/pull.c:496
+#: builtin/pull.c:463 builtin/pull.c:478 builtin/pull.c:483
 msgid "<branch>"
 msgstr "<nhánh>"
 
-#: builtin/pull.c:484 builtin/rebase.c:1244
+#: builtin/pull.c:471 builtin/rebase.c:1251
 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:493
+#: builtin/pull.c:480
 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:498
+#: builtin/pull.c:485
 #, c-format
 msgid ""
 "Your configuration specifies to merge with the ref '%s'\n"
@@ -18566,30 +18926,63 @@ 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:609
+#: builtin/pull.c:596
 #, c-format
 msgid "unable to access commit %s"
 msgstr "không thể truy cập lần chuyển giao “%s”"
 
-#: builtin/pull.c:915
+#: builtin/pull.c:902
 msgid "ignoring --verify-signatures for rebase"
 msgstr "bỏ qua --verify-signatures khi rebase"
 
-#: builtin/pull.c:972
+#: builtin/pull.c:930
+msgid ""
+"Pulling without specifying how to reconcile divergent branches is\n"
+"discouraged. You can squelch this message by running one of the following\n"
+"commands sometime before your next pull:\n"
+"\n"
+"  git config pull.rebase false  # merge (the default strategy)\n"
+"  git config pull.rebase true   # rebase\n"
+"  git config pull.ff only       # fast-forward only\n"
+"\n"
+"You can replace \"git config\" with \"git config --global\" to set a "
+"default\n"
+"preference for all repositories. You can also pass --rebase, --no-rebase,\n"
+"or --ff-only on the command line to override the configured default per\n"
+"invocation.\n"
+msgstr ""
+"Kéo mà không chỉ định làm thế nào để hòa giải các nhánh phân kỳ là khác nhau "
+"là\n"
+"không khuyến khích. Bạn có thể dịu thông báo này bằng cách chạy một trong "
+"những lệnh sau đây\n"
+"các lệnh thỉnh thoảng trước khi thực hiện lệnh pull tiếp theo của bạn:\n"
+"\n"
+"  git config pull.rebase false  # merge (chiến lược mặc định)\n"
+"  git config pull.rebase true   # rebase\n"
+"  git config pull.ff only       # fast-forward only\n"
+"\n"
+"Bạn có thể thay thế \"git config\" với \"git config --global\" để thiết lập "
+"mặc định\n"
+"ưu tiên cho tất cả các kho. Bạn cũng có thể chuyển qua --rebase, --no-"
+"rebase,\n"
+"hoặc --ff-only trên dòng lệnh để ghi đè mặc định được cấu hình cho mỗi\n"
+"lần gọi.\n"
+
+#: builtin/pull.c:991
 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:976
+#: builtin/pull.c:995
 msgid "pull with rebase"
 msgstr "pull với rebase"
 
-#: builtin/pull.c:977
+#: builtin/pull.c:996
 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:1002
+#: builtin/pull.c:1021
 #, c-format
 msgid ""
 "fetch updated the current branch head.\n"
@@ -18600,7 +18993,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:1008
+#: builtin/pull.c:1027
 #, c-format
 msgid ""
 "Cannot fast-forward your working tree.\n"
@@ -18618,15 +19011,15 @@ msgstr ""
 "$ git reset --hard\n"
 "để khôi phục lại."
 
-#: builtin/pull.c:1023
+#: builtin/pull.c:1042
 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:1027
+#: builtin/pull.c:1046
 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:1041
+#: builtin/pull.c:1067
 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ộ"
@@ -18941,45 +19334,53 @@ msgstr "--all và --mirror xung khắc nhau"
 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"
 
-#: builtin/range-diff.c:8
+#: builtin/range-diff.c:9
 msgid "git range-diff [<options>] <old-base>..<old-tip> <new-base>..<new-tip>"
 msgstr ""
 "git range-diff [<các tùy chọn>] <old-base>..<old-tip> <new-base>..<new-tip>"
 
-#: builtin/range-diff.c:9
+#: builtin/range-diff.c:10
 msgid "git range-diff [<options>] <old-tip>...<new-tip>"
 msgstr "git range-diff [<các tùy chọn>] <old-tip>…<new-tip>"
 
-#: builtin/range-diff.c:10
+#: builtin/range-diff.c:11
 msgid "git range-diff [<options>] <base> <old-tip> <new-tip>"
 msgstr "git range-diff [<các tùy chọn>] <base> <old-tip> <new-tip>"
 
-#: builtin/range-diff.c:22
+#: builtin/range-diff.c:28
 msgid "Percentage by which creation is weighted"
 msgstr "Tỷ lệ phần trăm cái tạo là weighted"
 
-#: builtin/range-diff.c:24
+#: builtin/range-diff.c:30
 msgid "use simple diff colors"
 msgstr "dùng màu diff đơn giản"
 
-#: builtin/range-diff.c:26
+#: builtin/range-diff.c:32
 msgid "notes"
 msgstr "ghi chú"
 
-#: builtin/range-diff.c:26
+#: builtin/range-diff.c:32
 msgid "passed to 'git log'"
 msgstr "chuyển cho “git log”"
 
-#: builtin/range-diff.c:50 builtin/range-diff.c:54
+#: builtin/range-diff.c:35
+msgid "only emit output related to the first range"
+msgstr "chỉ phát ra kết xuất liên quan đến vùng đầu tiên"
+
+#: builtin/range-diff.c:37
+msgid "only emit output related to the second range"
+msgstr "chỉ phát ra kết xuất liên quan đến vùng thứ hai"
+
+#: builtin/range-diff.c:60 builtin/range-diff.c:64
 #, c-format
-msgid "no .. in range: '%s'"
-msgstr "không có .. trong vùng: “%s”"
+msgid "not a commit range: '%s'"
+msgstr "không phải là vùng chuyển giao: “%s”"
 
-#: builtin/range-diff.c:64
+#: builtin/range-diff.c:74
 msgid "single arg format must be symmetric range"
 msgstr "định dạng đối số đơn phải là một vùng đối xứng"
 
-#: builtin/range-diff.c:79
+#: builtin/range-diff.c:89
 msgid "need two commit ranges"
 msgstr "cần hai vùng lần chuyển giao"
 
@@ -19086,193 +19487,193 @@ msgstr ""
 msgid "git rebase --continue | --abort | --skip | --edit-todo"
 msgstr "git rebase --continue | --abort | --skip | --edit-todo"
 
-#: builtin/rebase.c:193 builtin/rebase.c:217 builtin/rebase.c:244
+#: builtin/rebase.c:195 builtin/rebase.c:219 builtin/rebase.c:246
 #, c-format
 msgid "unusable todo list: '%s'"
 msgstr "danh sách cần làm không dùng được: “%s”"
 
-#: builtin/rebase.c:310
+#: builtin/rebase.c:312
 #, c-format
 msgid "could not create temporary %s"
 msgstr "không thể tạo %s tạm thời"
 
-#: builtin/rebase.c:316
+#: builtin/rebase.c:318
 msgid "could not mark as interactive"
 msgstr "không thể đánh dấu là tương tác"
 
-#: builtin/rebase.c:369
+#: builtin/rebase.c:371
 msgid "could not generate todo list"
 msgstr "không thể tạo danh sách cần làm"
 
-#: builtin/rebase.c:411
+#: builtin/rebase.c:413
 msgid "a base commit must be provided with --upstream or --onto"
 msgstr "lần chuyển giao cơ sỏ phải được chỉ định với --upstream hoặc --onto"
 
-#: builtin/rebase.c:480
+#: builtin/rebase.c:482
 msgid "git rebase--interactive [<options>]"
 msgstr "git rebase--interactive [<các tùy chọn>]"
 
-#: builtin/rebase.c:493 builtin/rebase.c:1388
+#: builtin/rebase.c:495 builtin/rebase.c:1394
 msgid "keep commits which start empty"
 msgstr "bỏ qua các lần chuyển giao mà nó bắt đầu trống rỗng"
 
-#: builtin/rebase.c:497 builtin/revert.c:128
+#: builtin/rebase.c:499 builtin/revert.c:128
 msgid "allow commits with empty messages"
 msgstr "chấp nhận chuyển giao mà không ghi chú gì"
 
-#: builtin/rebase.c:499
+#: builtin/rebase.c:501
 msgid "rebase merge commits"
 msgstr "cải tổ các lần chuyển giao hòa trộn"
 
-#: builtin/rebase.c:501
+#: builtin/rebase.c:503
 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.c:503
+#: builtin/rebase.c:505
 msgid "move commits that begin with squash!/fixup!"
 msgstr "di chuyển các lần chuyển giao bắt đầu bằng squash!/fixup!"
 
-#: builtin/rebase.c:504
+#: builtin/rebase.c:506
 msgid "sign commits"
 msgstr "ký các lần chuyển giao"
 
-#: builtin/rebase.c:506 builtin/rebase.c:1327
+#: builtin/rebase.c:508 builtin/rebase.c:1333
 msgid "display a diffstat of what changed upstream"
 msgstr "hiển thị một diffstat của những thay đổi thượng nguồn"
 
-#: builtin/rebase.c:508
+#: builtin/rebase.c:510
 msgid "continue rebase"
 msgstr "tiếp tục cải tổ"
 
-#: builtin/rebase.c:510
+#: builtin/rebase.c:512
 msgid "skip commit"
 msgstr "bỏ qua lần chuyển giao"
 
-#: builtin/rebase.c:511
+#: builtin/rebase.c:513
 msgid "edit the todo list"
 msgstr "sửa danh sách cần làm"
 
-#: builtin/rebase.c:513
+#: builtin/rebase.c:515
 msgid "show the current patch"
 msgstr "hiển thị miếng vá hiện hành"
 
-#: builtin/rebase.c:516
+#: builtin/rebase.c:518
 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.c:518
+#: builtin/rebase.c:520
 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.c:520
+#: builtin/rebase.c:522
 msgid "check the todo list"
 msgstr "kiểm tra danh sách cần làm"
 
-#: builtin/rebase.c:522
+#: builtin/rebase.c:524
 msgid "rearrange fixup/squash lines"
 msgstr "sắp xếp lại các dòng fixup/squash"
 
-#: builtin/rebase.c:524
+#: builtin/rebase.c:526
 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/rebase.c:525
+#: builtin/rebase.c:527
 msgid "onto"
 msgstr "lên trên"
 
-#: builtin/rebase.c:528
+#: builtin/rebase.c:530
 msgid "restrict-revision"
 msgstr "điểm-xét-duyệt-hạn-chế"
 
-#: builtin/rebase.c:528
+#: builtin/rebase.c:530
 msgid "restrict revision"
 msgstr "điểm xét duyệt hạn chế"
 
-#: builtin/rebase.c:530
+#: builtin/rebase.c:532
 msgid "squash-onto"
 msgstr "squash-lên-trên"
 
-#: builtin/rebase.c:531
+#: builtin/rebase.c:533
 msgid "squash onto"
 msgstr "squash lên trên"
 
-#: builtin/rebase.c:533
+#: builtin/rebase.c:535
 msgid "the upstream commit"
 msgstr "lần chuyển giao thượng nguồn"
 
-#: builtin/rebase.c:535
+#: builtin/rebase.c:537
 msgid "head-name"
 msgstr "tên-đầu"
 
-#: builtin/rebase.c:535
+#: builtin/rebase.c:537
 msgid "head name"
 msgstr "tên đầu"
 
-#: builtin/rebase.c:540
+#: builtin/rebase.c:542
 msgid "rebase strategy"
 msgstr "chiến lược cải tổ"
 
-#: builtin/rebase.c:541
+#: builtin/rebase.c:543
 msgid "strategy-opts"
 msgstr "tùy-chọn-chiến-lược"
 
-#: builtin/rebase.c:542
+#: builtin/rebase.c:544
 msgid "strategy options"
 msgstr "các tùy chọn chiến lược"
 
-#: builtin/rebase.c:543
+#: builtin/rebase.c:545
 msgid "switch-to"
 msgstr "chuyển-đến"
 
-#: builtin/rebase.c:544
+#: builtin/rebase.c:546
 msgid "the branch or commit to checkout"
 msgstr "nhánh hay lần chuyển giao lần lấy ra"
 
-#: builtin/rebase.c:545
+#: builtin/rebase.c:547
 msgid "onto-name"
 msgstr "onto-name"
 
-#: builtin/rebase.c:545
+#: builtin/rebase.c:547
 msgid "onto name"
 msgstr "tên lên trên"
 
-#: builtin/rebase.c:546
+#: builtin/rebase.c:548
 msgid "cmd"
 msgstr "lệnh"
 
-#: builtin/rebase.c:546
+#: builtin/rebase.c:548
 msgid "the command to run"
 msgstr "lệnh muốn chạy"
 
-#: builtin/rebase.c:549 builtin/rebase.c:1421
+#: builtin/rebase.c:551 builtin/rebase.c:1427
 msgid "automatically re-schedule any `exec` that fails"
 msgstr "lập lịch lại một cách tự động bất kỳ “exec“ bị lỗi"
 
-#: builtin/rebase.c:565
+#: builtin/rebase.c:567
 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/rebase.c:581
+#: builtin/rebase.c:583
 #, c-format
 msgid "%s requires the merge backend"
 msgstr "%s cần một ứng dụng hòa trộn chạy phía sau"
 
-#: builtin/rebase.c:624
+#: builtin/rebase.c:626
 #, c-format
 msgid "could not get 'onto': '%s'"
 msgstr "không thể đặt lấy “onto”: “%s”"
 
-#: builtin/rebase.c:641
+#: builtin/rebase.c:643
 #, c-format
 msgid "invalid orig-head: '%s'"
 msgstr "orig-head không hợp lệ: “%s”"
 
-#: builtin/rebase.c:666
+#: builtin/rebase.c:668
 #, c-format
 msgid "ignoring invalid allow_rerere_autoupdate: '%s'"
 msgstr "đang bỏ qua allow_rerere_autoupdate không hợp lệ: “%s”"
 
-#: builtin/rebase.c:811 git-rebase--preserve-merges.sh:81
+#: builtin/rebase.c:813 git-rebase--preserve-merges.sh:81
 msgid ""
 "Resolve all conflicts manually, mark them as resolved with\n"
 "\"git add/rm <conflicted_files>\", then run \"git rebase --continue\".\n"
@@ -19287,7 +19688,7 @@ msgstr ""
 "Để bãi bỏ và quay trở lại trạng thái trước \"git rebase\", chạy \"git rebase "
 "--abort\"."
 
-#: builtin/rebase.c:894
+#: builtin/rebase.c:896
 #, c-format
 msgid ""
 "\n"
@@ -19306,7 +19707,7 @@ msgstr ""
 "\n"
 "Kết quả là git không thể cải tổ lại chúng."
 
-#: builtin/rebase.c:1220
+#: builtin/rebase.c:1227
 #, c-format
 msgid ""
 "unrecognized empty type '%s'; valid values are \"drop\", \"keep\", and \"ask"
@@ -19315,7 +19716,7 @@ msgstr ""
 "kiểu rỗng không được nhận dạng “%s”; giá trị hợp lệ là \"drop\", \"keep\", "
 "và \"ask\"."
 
-#: builtin/rebase.c:1238
+#: builtin/rebase.c:1245
 #, c-format
 msgid ""
 "%s\n"
@@ -19332,7 +19733,7 @@ msgstr ""
 "    git rebase “<nhánh>”\n"
 "\n"
 
-#: builtin/rebase.c:1254
+#: builtin/rebase.c:1261
 #, c-format
 msgid ""
 "If you wish to set tracking information for this branch you can do so with:\n"
@@ -19346,150 +19747,150 @@ msgstr ""
 "    git branch --set-upstream-to=%s/<nhánh> %s\n"
 "\n"
 
-#: builtin/rebase.c:1284
+#: builtin/rebase.c:1291
 msgid "exec commands cannot contain newlines"
 msgstr "các lệnh thực thi không thể chứa các ký tự dòng mới"
 
-#: builtin/rebase.c:1288
+#: builtin/rebase.c:1295
 msgid "empty exec command"
 msgstr "lệnh thực thi trống rỗng"
 
-#: builtin/rebase.c:1318
+#: builtin/rebase.c:1324
 msgid "rebase onto given branch instead of upstream"
 msgstr "cải tổ vào nhánh đã cho thay cho thượng nguồn"
 
-#: builtin/rebase.c:1320
+#: builtin/rebase.c:1326
 msgid "use the merge-base of upstream and branch as the current base"
 msgstr ""
 "sử dụng các cơ sở hòa trộn của thượng nguồn và nhánh như là cơ sở hiện tại"
 
-#: builtin/rebase.c:1322
+#: builtin/rebase.c:1328
 msgid "allow pre-rebase hook to run"
 msgstr "cho phép móc (hook) pre-rebase được chạy"
 
-#: builtin/rebase.c:1324
+#: builtin/rebase.c:1330
 msgid "be quiet. implies --no-stat"
 msgstr "hãy im lặng. ý là --no-stat"
 
-#: builtin/rebase.c:1330
+#: builtin/rebase.c:1336
 msgid "do not show diffstat of what changed upstream"
 msgstr "đừng hiển thị diffstat của những thay đổi thượng nguồn"
 
-#: builtin/rebase.c:1333
+#: builtin/rebase.c:1339
 msgid "add a Signed-off-by trailer to each commit"
 msgstr "thêm dòng Signed-off-by vào cuối cho từng lần chuyển giao"
 
-#: builtin/rebase.c:1336
+#: builtin/rebase.c:1342
 msgid "make committer date match author date"
 msgstr "làm ngày tháng chuyển giao khớp với ngày của tác giả"
 
-#: builtin/rebase.c:1338
+#: builtin/rebase.c:1344
 msgid "ignore author date and use current date"
 msgstr "bỏ qua ngày tác giả và sử dụng ngày tháng hiện tại"
 
-#: builtin/rebase.c:1340
+#: builtin/rebase.c:1346
 msgid "synonym of --reset-author-date"
 msgstr "đồng nghĩa với --reset-author-date"
 
-#: builtin/rebase.c:1342 builtin/rebase.c:1346
+#: builtin/rebase.c:1348 builtin/rebase.c:1352
 msgid "passed to 'git apply'"
 msgstr "chuyển cho “git apply”"
 
-#: builtin/rebase.c:1344
+#: builtin/rebase.c:1350
 msgid "ignore changes in whitespace"
 msgstr "lờ đi sự thay đổi do khoảng trắng gây ra"
 
-#: builtin/rebase.c:1348 builtin/rebase.c:1351
+#: builtin/rebase.c:1354 builtin/rebase.c:1357
 msgid "cherry-pick all commits, even if unchanged"
 msgstr ""
 "cherry-pick tất cả các lần chuyển giao, ngay cả khi không có thay đổi gì"
 
-#: builtin/rebase.c:1353
+#: builtin/rebase.c:1359
 msgid "continue"
 msgstr "tiếp tục"
 
-#: builtin/rebase.c:1356
+#: builtin/rebase.c:1362
 msgid "skip current patch and continue"
 msgstr "bỏ qua miếng vá hiện hành và tiếp tục"
 
-#: builtin/rebase.c:1358
+#: builtin/rebase.c:1364
 msgid "abort and check out the original branch"
 msgstr "bãi bỏ và lấy ra nhánh nguyên thủy"
 
-#: builtin/rebase.c:1361
+#: builtin/rebase.c:1367
 msgid "abort but keep HEAD where it is"
 msgstr "bãi bỏ nhưng vẫn vẫn giữ HEAD chỉ đến nó"
 
-#: builtin/rebase.c:1362
+#: builtin/rebase.c:1368
 msgid "edit the todo list during an interactive rebase"
 msgstr "sửa danh sách cần làm trong quá trình “rebase” (cải tổ) tương tác"
 
-#: builtin/rebase.c:1365
+#: builtin/rebase.c:1371
 msgid "show the patch file being applied or merged"
 msgstr "hiển thị miếng vá đã được áp dụng hay hòa trộn"
 
-#: builtin/rebase.c:1368
+#: builtin/rebase.c:1374
 msgid "use apply strategies to rebase"
 msgstr "dùng chiến lược áp dụng để cải tổ"
 
-#: builtin/rebase.c:1372
+#: builtin/rebase.c:1378
 msgid "use merging strategies to rebase"
 msgstr "dùng chiến lược hòa trộn để cải tổ"
 
-#: builtin/rebase.c:1376
+#: builtin/rebase.c:1382
 msgid "let the user edit the list of commits to rebase"
 msgstr "để người dùng sửa danh sách các lần chuyển giao muốn cải tổ"
 
-#: builtin/rebase.c:1380
+#: builtin/rebase.c:1386
 msgid "(DEPRECATED) try to recreate merges instead of ignoring them"
 msgstr "(ĐàLẠC HẬU) hay thử tạo lại các hòa trộn thay vì bỏ qua chúng"
 
-#: builtin/rebase.c:1385
+#: builtin/rebase.c:1391
 msgid "how to handle commits that become empty"
 msgstr "xử lý các lần chuyển giao mà nó trở thành trống rỗng như thế nào"
 
-#: builtin/rebase.c:1392
+#: builtin/rebase.c:1398
 msgid "move commits that begin with squash!/fixup! under -i"
 msgstr "di chuyển các lần chuyển giao mà bắt đầu bằng squash!/fixup! dưới -i"
 
-#: builtin/rebase.c:1399
+#: builtin/rebase.c:1405
 msgid "add exec lines after each commit of the editable list"
 msgstr "thêm các dòng thực thi sau từng lần chuyển giao của danh sách sửa được"
 
-#: builtin/rebase.c:1403
+#: builtin/rebase.c:1409
 msgid "allow rebasing commits with empty messages"
 msgstr "chấp nhận cải tổ các chuyển giao mà không ghi chú gì"
 
-#: builtin/rebase.c:1407
+#: builtin/rebase.c:1413
 msgid "try to rebase merges instead of skipping them"
 msgstr "cố thử cải tổ các hòa trộn thay vì bỏ qua chúng"
 
-#: builtin/rebase.c:1410
+#: builtin/rebase.c:1416
 msgid "use 'merge-base --fork-point' to refine upstream"
 msgstr "dùng “merge-base --fork-point” để định nghĩa lại thượng nguồn"
 
-#: builtin/rebase.c:1412
+#: builtin/rebase.c:1418
 msgid "use the given merge strategy"
 msgstr "dùng chiến lược hòa trộn đã cho"
 
-#: builtin/rebase.c:1414 builtin/revert.c:115
+#: builtin/rebase.c:1420 builtin/revert.c:115
 msgid "option"
 msgstr "tùy chọn"
 
-#: builtin/rebase.c:1415
+#: builtin/rebase.c:1421
 msgid "pass the argument through to the merge strategy"
 msgstr "chuyển thao số đến chiến lược hòa trộn"
 
-#: builtin/rebase.c:1418
+#: builtin/rebase.c:1424
 msgid "rebase all reachable commits up to the root(s)"
 msgstr "cải tổ tất các các lần chuyển giao cho đến root"
 
-#: builtin/rebase.c:1423
+#: builtin/rebase.c:1429
 msgid "apply all changes, even those already present upstream"
 msgstr ""
 "áp dụng mọi thay đổi, ngay cả khi những thứ đó đã sẵn có ở thượng nguồn"
 
-#: builtin/rebase.c:1440
+#: builtin/rebase.c:1446
 msgid ""
 "the rebase.useBuiltin support has been removed!\n"
 "See its entry in 'git help config' for details."
@@ -19497,45 +19898,45 @@ msgstr ""
 "việc hỗ trợ rebase.useBuiltin đã bị xóa!\n"
 "Xem mục tin của nó trong “ git help config” để biết chi tiết."
 
-#: builtin/rebase.c:1446
+#: builtin/rebase.c:1452
 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."
 
-#: builtin/rebase.c:1487
+#: builtin/rebase.c:1493
 msgid ""
 "git rebase --preserve-merges is deprecated. Use --rebase-merges instead."
 msgstr ""
 "git rebase --preserve-merges đã lạc hậu. Hãy dùng --rebase-merges để thay "
 "thế."
 
-#: builtin/rebase.c:1492
+#: builtin/rebase.c:1498
 msgid "cannot combine '--keep-base' with '--onto'"
 msgstr "không thể kết hợp “--keep-base” với “--onto”"
 
-#: builtin/rebase.c:1494
+#: builtin/rebase.c:1500
 msgid "cannot combine '--keep-base' with '--root'"
 msgstr "không thể kết hợp “--keep-base” với “--root”"
 
-#: builtin/rebase.c:1498
+#: builtin/rebase.c:1504
 msgid "cannot combine '--root' with '--fork-point'"
 msgstr "không thể kết hợp “--root” với “--fork-point”"
 
-#: builtin/rebase.c:1501
+#: builtin/rebase.c:1507
 msgid "No rebase in progress?"
 msgstr "Không có tiến trình rebase nào phải không?"
 
-#: builtin/rebase.c:1505
+#: builtin/rebase.c:1511
 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."
 
-#: builtin/rebase.c:1528 t/helper/test-fast-rebase.c:123
+#: builtin/rebase.c:1534 t/helper/test-fast-rebase.c:123
 msgid "Cannot read HEAD"
 msgstr "Không thể đọc HEAD"
 
-#: builtin/rebase.c:1540
+#: builtin/rebase.c:1546
 msgid ""
 "You must edit all merge conflicts and then\n"
 "mark them as resolved using git add"
@@ -19543,16 +19944,16 @@ 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"
 
-#: builtin/rebase.c:1559
+#: builtin/rebase.c:1565
 msgid "could not discard worktree changes"
 msgstr "không thể loại bỏ các thay đổi cây-làm-việc"
 
-#: builtin/rebase.c:1578
+#: builtin/rebase.c:1584
 #, c-format
 msgid "could not move back to %s"
 msgstr "không thể quay trở lại %s"
 
-#: builtin/rebase.c:1624
+#: builtin/rebase.c:1630
 #, c-format
 msgid ""
 "It seems that there is already a %s directory, and\n"
@@ -19573,132 +19974,132 @@ 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.\n"
 
-#: builtin/rebase.c:1652
+#: builtin/rebase.c:1658
 msgid "switch `C' expects a numerical value"
 msgstr "tùy chọn “%c” cần một giá trị bằng số"
 
-#: builtin/rebase.c:1694
+#: builtin/rebase.c:1700
 #, c-format
 msgid "Unknown mode: %s"
 msgstr "Không hiểu chế độ: %s"
 
-#: builtin/rebase.c:1733
+#: builtin/rebase.c:1739
 msgid "--strategy requires --merge or --interactive"
 msgstr "--strategy cần --merge hay --interactive"
 
-#: builtin/rebase.c:1763
+#: builtin/rebase.c:1769
 msgid "cannot combine apply options with merge options"
 msgstr "không thể tổ hợp các tùy chọn áp dụng với các tùy chọn hòa trộn"
 
-#: builtin/rebase.c:1776
+#: builtin/rebase.c:1782
 #, c-format
 msgid "Unknown rebase backend: %s"
 msgstr "Không hiểu ứng dụng chạy phía sau lệnh cải tổ: %s"
 
-#: builtin/rebase.c:1806
+#: builtin/rebase.c:1812
 msgid "--reschedule-failed-exec requires --exec or --interactive"
 msgstr "--reschedule-failed-exec cần --exec hay --interactive"
 
-#: builtin/rebase.c:1826
+#: builtin/rebase.c:1832
 msgid "cannot combine '--preserve-merges' with '--rebase-merges'"
 msgstr "không thể kết hợp “--preserve-merges” với “--rebase-merges”"
 
-#: builtin/rebase.c:1830
+#: builtin/rebase.c:1836
 msgid ""
 "error: cannot combine '--preserve-merges' with '--reschedule-failed-exec'"
 msgstr "không thể kết hợp “--preserve-merges” với “--reschedule-failed-exec”"
 
-#: builtin/rebase.c:1854
+#: builtin/rebase.c:1860
 #, c-format
 msgid "invalid upstream '%s'"
 msgstr "thượng nguồn không hợp lệ “%s”"
 
-#: builtin/rebase.c:1860
+#: builtin/rebase.c:1866
 msgid "Could not create new root commit"
 msgstr "Không thể tạo lần chuyển giao gốc mới"
 
-#: builtin/rebase.c:1886
+#: builtin/rebase.c:1892
 #, c-format
 msgid "'%s': need exactly one merge base with branch"
 msgstr "“%s”: cần chính xác một cơ sở hòa trộn với nhánh"
 
-#: builtin/rebase.c:1889
+#: builtin/rebase.c:1895
 #, c-format
 msgid "'%s': need exactly one merge base"
 msgstr "“%s”: cần chính xác một cơ sở hòa trộn"
 
-#: builtin/rebase.c:1897
+#: builtin/rebase.c:1903
 #, c-format
 msgid "Does not point to a valid commit '%s'"
 msgstr "Không chỉ đến một lần chuyển giao không hợp lệ “%s”"
 
-#: builtin/rebase.c:1923
+#: builtin/rebase.c:1931
 #, c-format
 msgid "fatal: no such branch/commit '%s'"
 msgstr "nghiêm trọng: không có nhánh/lần chuyển giao “%s” như thế"
 
-#: builtin/rebase.c:1931 builtin/submodule--helper.c:40
+#: builtin/rebase.c:1939 builtin/submodule--helper.c:40
 #: builtin/submodule--helper.c:2414
 #, c-format
 msgid "No such ref: %s"
 msgstr "Không có tham chiếu nào như thế: %s"
 
-#: builtin/rebase.c:1942
+#: builtin/rebase.c:1950
 msgid "Could not resolve HEAD to a revision"
 msgstr "Không thể phân giải lần chuyển giao HEAD đến một điểm xét duyệt"
 
-#: builtin/rebase.c:1963
+#: builtin/rebase.c:1971
 msgid "Please commit or stash them."
 msgstr "Xin hãy chuyển giao hoặc tạm cất (stash) chúng."
 
-#: builtin/rebase.c:1999
+#: builtin/rebase.c:2007
 #, c-format
 msgid "could not switch to %s"
 msgstr "không thể chuyển đến %s"
 
-#: builtin/rebase.c:2010
+#: builtin/rebase.c:2018
 msgid "HEAD is up to date."
 msgstr "HEAD đã cập nhật."
 
-#: builtin/rebase.c:2012
+#: builtin/rebase.c:2020
 #, c-format
 msgid "Current branch %s is up to date.\n"
 msgstr "Nhánh hiện tại %s đã được cập nhật rồi.\n"
 
-#: builtin/rebase.c:2020
+#: builtin/rebase.c:2028
 msgid "HEAD is up to date, rebase forced."
 msgstr "HEAD hiện đã được cập nhật rồi, bị ép buộc rebase."
 
-#: builtin/rebase.c:2022
+#: builtin/rebase.c:2030
 #, c-format
 msgid "Current branch %s is up to date, rebase forced.\n"
 msgstr "Nhánh hiện tại %s đã được cập nhật rồi, lệnh rebase ép buộc.\n"
 
-#: builtin/rebase.c:2030
+#: builtin/rebase.c:2038
 msgid "The pre-rebase hook refused to rebase."
 msgstr "Móc (hook) pre-rebase từ chối rebase."
 
-#: builtin/rebase.c:2037
+#: builtin/rebase.c:2045
 #, c-format
 msgid "Changes to %s:\n"
 msgstr "Thay đổi thành %s:\n"
 
-#: builtin/rebase.c:2040
+#: builtin/rebase.c:2048
 #, c-format
 msgid "Changes from %s to %s:\n"
 msgstr "Thay đổi từ %s thành %s:\n"
 
-#: builtin/rebase.c:2065
+#: builtin/rebase.c:2073
 #, c-format
 msgid "First, rewinding head to replay your work on top of it...\n"
 msgstr ""
 "Trước tiên, di chuyển head để xem lại các công việc trên đỉnh của nó…\n"
 
-#: builtin/rebase.c:2074
+#: builtin/rebase.c:2082
 msgid "Could not detach HEAD"
 msgstr "Không thể tách rời HEAD"
 
-#: builtin/rebase.c:2083
+#: builtin/rebase.c:2091
 #, c-format
 msgid "Fast-forwarded %s to %s.\n"
 msgstr "Chuyển-tiếp-nhanh %s đến %s.\n"
@@ -19793,36 +20194,36 @@ msgstr "git reflog exists <tham_chiếu>"
 msgid "'%s' is not a valid timestamp"
 msgstr "“%s” không phải là dấu thời gian hợp lệ"
 
-#: builtin/reflog.c:606
+#: builtin/reflog.c:609
 #, c-format
 msgid "Marking reachable objects..."
 msgstr "Đánh dấu các đối tượng tiếp cận được…"
 
-#: builtin/reflog.c:644
+#: builtin/reflog.c:647
 #, c-format
 msgid "%s points nowhere!"
 msgstr "%s chẳng chỉ đến đâu cả!"
 
-#: builtin/reflog.c:696
+#: builtin/reflog.c:699
 msgid "no reflog specified to delete"
 msgstr "chưa chỉ ra reflog để xóa"
 
-#: builtin/reflog.c:705
+#: builtin/reflog.c:708
 #, c-format
 msgid "not a reflog: %s"
 msgstr "không phải một reflog: %s"
 
-#: builtin/reflog.c:710
+#: builtin/reflog.c:713
 #, c-format
 msgid "no reflog for '%s'"
 msgstr "không reflog cho “%s”"
 
-#: builtin/reflog.c:756
+#: builtin/reflog.c:759
 #, c-format
 msgid "invalid ref format: %s"
 msgstr "định dạng tham chiếu không hợp lệ: %s"
 
-#: builtin/reflog.c:765
+#: builtin/reflog.c:768
 msgid "git reflog [ show | expire | delete | exists ]"
 msgstr "git reflog [ show | expire | delete | exists ]"
 
@@ -20330,11 +20731,11 @@ msgstr "Không tìm thấy URL như vậy: %s"
 msgid "Will not delete all non-push URLs"
 msgstr "Sẽ không xóa những địa chỉ URL không-push"
 
-#: builtin/repack.c:25
+#: builtin/repack.c:26
 msgid "git repack [<options>]"
 msgstr "git repack [<các tùy chọn>]"
 
-#: builtin/repack.c:30
+#: builtin/repack.c:31
 msgid ""
 "Incremental repacks are incompatible with bitmap indexes.  Use\n"
 "--no-write-bitmap-index or disable the pack.writebitmaps configuration."
@@ -20342,120 +20743,120 @@ 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:197
+#: builtin/repack.c:198
 msgid "could not start pack-objects to repack promisor objects"
 msgstr ""
 "không thể lấy thông tin thống kê pack-objects để mà đóng gói lại các đối "
 "tượng hứa hẹn"
 
-#: builtin/repack.c:268 builtin/repack.c:447
+#: builtin/repack.c:270 builtin/repack.c:446
 msgid "repack: Expecting full hex object ID lines only from pack-objects."
 msgstr ""
 "repack: Đang chỉ cần các dòng ID đối tượng dạng thập lục phân đầy dủ từ pack-"
 "objects."
 
-#: builtin/repack.c:295
+#: builtin/repack.c:294
 msgid "could not finish pack-objects to repack promisor objects"
 msgstr "không thể hoàn tất pack-objects để đóng gói các đối tượng hứa hẹn"
 
-#: builtin/repack.c:323
+#: builtin/repack.c:322
 msgid "pack everything in a single pack"
 msgstr "đóng gói mọi thứ trong một gói đơn"
 
-#: builtin/repack.c:325
+#: builtin/repack.c:324
 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:328
+#: builtin/repack.c:327
 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:330
+#: builtin/repack.c:329
 msgid "pass --no-reuse-delta to git-pack-objects"
 msgstr "chuyển --no-reuse-delta cho git-pack-objects"
 
-#: builtin/repack.c:332
+#: builtin/repack.c:331
 msgid "pass --no-reuse-object to git-pack-objects"
 msgstr "chuyển --no-reuse-object cho git-pack-objects"
 
-#: builtin/repack.c:334
+#: builtin/repack.c:333
 msgid "do not run git-update-server-info"
 msgstr "không chạy git-update-server-info"
 
-#: builtin/repack.c:337
+#: builtin/repack.c:336
 msgid "pass --local to git-pack-objects"
 msgstr "chuyển --local cho git-pack-objects"
 
-#: builtin/repack.c:339
+#: builtin/repack.c:338
 msgid "write bitmap index"
 msgstr "ghi mục lục ánh xạ"
 
-#: builtin/repack.c:341
+#: builtin/repack.c:340
 msgid "pass --delta-islands to git-pack-objects"
 msgstr "chuyển --delta-islands cho git-pack-objects"
 
-#: builtin/repack.c:342
+#: builtin/repack.c:341
 msgid "approxidate"
 msgstr "ngày ước tính"
 
-#: builtin/repack.c:343
+#: builtin/repack.c:342
 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:345
+#: builtin/repack.c:344
 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:347
+#: builtin/repack.c:346
 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:348 builtin/repack.c:354
+#: builtin/repack.c:347 builtin/repack.c:353
 msgid "bytes"
 msgstr "byte"
 
-#: builtin/repack.c:349
+#: builtin/repack.c:348
 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:351
+#: builtin/repack.c:350
 msgid "limits the maximum delta depth"
 msgstr "giới hạn độ sâu tối đa của “delta”"
 
-#: builtin/repack.c:353
+#: builtin/repack.c:352
 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:355
+#: builtin/repack.c:354
 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:357
+#: builtin/repack.c:356
 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:359
+#: builtin/repack.c:358
 msgid "do not repack this pack"
 msgstr "đừng đóng gói lại gói này"
 
-#: builtin/repack.c:369
+#: builtin/repack.c:368
 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:373
+#: builtin/repack.c:372
 msgid "--keep-unreachable and -A are incompatible"
 msgstr "--keep-unreachable và -A xung khắc nhau"
 
-#: builtin/repack.c:456
+#: builtin/repack.c:455
 msgid "Nothing new to pack."
 msgstr "Không có gì mới để mà đóng gói."
 
-#: builtin/repack.c:486
+#: builtin/repack.c:485
 #, c-format
 msgid "missing required file: %s"
 msgstr "thiếu tập tin cần thiết: %s"
 
-#: builtin/repack.c:488
+#: builtin/repack.c:487
 #, c-format
 msgid "could not unlink: %s"
 msgstr "không thể bỏ liên kết: %s"
@@ -20789,8 +21190,8 @@ msgstr "HEAD hiện giờ tại %s"
 msgid "Cannot do a %s reset in the middle of a merge."
 msgstr "Không thể thực hiện một %s reset ở giữa của quá trình hòa trộn."
 
-#: builtin/reset.c:295 builtin/stash.c:520 builtin/stash.c:594
-#: builtin/stash.c:618
+#: builtin/reset.c:295 builtin/stash.c:587 builtin/stash.c:661
+#: builtin/stash.c:685
 msgid "be quiet, only report errors"
 msgstr "làm việc ở chế độ im lặng, chỉ hiển thị khi có lỗi"
 
@@ -20875,19 +21276,19 @@ msgstr "Không thể đặt lại (reset) bảng mục lục thành điểm xét
 msgid "Could not write new index file."
 msgstr "Không thể ghi tập tin lưu bảng mục lục mới."
 
-#: builtin/rev-list.c:499
+#: builtin/rev-list.c:534
 msgid "cannot combine --exclude-promisor-objects and --missing"
 msgstr "không thể tổ hợp --exclude-promisor-objects và --missing"
 
-#: builtin/rev-list.c:560
+#: builtin/rev-list.c:595
 msgid "object filtering requires --objects"
 msgstr "lọc đối tượng yêu cầu --objects"
 
-#: builtin/rev-list.c:610
+#: builtin/rev-list.c:651
 msgid "rev-list does not support display of notes"
 msgstr "rev-list không hỗ trợ hiển thị các ghi chú"
 
-#: builtin/rev-list.c:615
+#: builtin/rev-list.c:656
 msgid "marked counting is incompatible with --objects"
 msgstr "được đánh dấu đếm là xung khắc với --objects"
 
@@ -21123,53 +21524,53 @@ msgstr "git shortlog [<các tùy chọn>] [<vùng-xét-duyệt>] [[--] [<đườ
 msgid "git log --pretty=short | git shortlog [<options>]"
 msgstr "git log --pretty=short | git shortlog [<các tùy chọn>]"
 
-#: builtin/shortlog.c:135
+#: builtin/shortlog.c:123
 msgid "using multiple --group options with stdin is not supported"
 msgstr ""
 "việc dùng nhiều tùy chọn --group với đầu ra tiêu chuẩn là không được hỗ trợ"
 
-#: builtin/shortlog.c:145
+#: builtin/shortlog.c:133
 msgid "using --group=trailer with stdin is not supported"
 msgstr "việc dùng --group=trailer với đầu ra tiêu chuẩn là không được hỗ trợ"
 
-#: builtin/shortlog.c:335
+#: builtin/shortlog.c:323
 #, c-format
 msgid "unknown group type: %s"
 msgstr "không nhận ra kiểu nhóm: %s"
 
-#: builtin/shortlog.c:363
-msgid "Group by committer rather than author"
-msgstr "Nhóm theo người chuyển giao thay vì tác giả"
+#: builtin/shortlog.c:351
+msgid "group by committer rather than author"
+msgstr "nhóm theo người chuyển giao thay vì tác giả"
 
-#: builtin/shortlog.c:366
+#: builtin/shortlog.c:354
 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:368
-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:356
+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:370
-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:358
+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:371
+#: builtin/shortlog.c:359
 msgid "<w>[,<i1>[,<i2>]]"
 msgstr "<w>[,<i1>[,<i2>]]"
 
-#: builtin/shortlog.c:372
-msgid "Linewrap output"
-msgstr "Ngắt dòng khi quá dài"
+#: builtin/shortlog.c:360
+msgid "linewrap output"
+msgstr "ngắt dòng khi quá dài"
 
-#: builtin/shortlog.c:374
+#: builtin/shortlog.c:362
 msgid "field"
 msgstr "trường"
 
-#: builtin/shortlog.c:375
-msgid "Group by field"
-msgstr "Nhóm theo trường"
+#: builtin/shortlog.c:363
+msgid "group by field"
+msgstr "nhóm theo trường"
 
-#: builtin/shortlog.c:403
+#: builtin/shortlog.c:391
 msgid "too many arguments given outside repository"
 msgstr "quá nhiều tham số đưa ra ngoài kho chứa"
 
@@ -21366,72 +21767,72 @@ msgstr ""
 msgid "git sparse-checkout (init|list|set|add|reapply|disable) <options>"
 msgstr "git sparse-checkout (init|list|set|add|reapply|disable) <các-tùy-chọn>"
 
-#: builtin/sparse-checkout.c:50
+#: builtin/sparse-checkout.c:45
 msgid "git sparse-checkout list"
 msgstr "git sparse-checkout list"
 
-#: builtin/sparse-checkout.c:76
+#: builtin/sparse-checkout.c:71
 msgid "this worktree is not sparse (sparse-checkout file may not exist)"
 msgstr ""
 "không thể phân tích cú pháp cây làm việc này (tập tin sparse-checkout có lẽ "
 "không tồn tại)"
 
-#: builtin/sparse-checkout.c:228
+#: builtin/sparse-checkout.c:223
 msgid "failed to create directory for sparse-checkout file"
 msgstr "gặp lỗi khi tạo thư mục cho tập tin sparse-checkout"
 
-#: builtin/sparse-checkout.c:269
+#: builtin/sparse-checkout.c:264
 msgid "unable to upgrade repository format to enable worktreeConfig"
 msgstr "không thể nâng cấp định dạng kho lưu trữ để kích hoạt worktreeConfig"
 
-#: builtin/sparse-checkout.c:271
+#: builtin/sparse-checkout.c:266
 msgid "failed to set extensions.worktreeConfig setting"
 msgstr "gặp lỗi khi đặt cài đặt extensions.worktreeConfig"
 
-#: builtin/sparse-checkout.c:288
+#: builtin/sparse-checkout.c:283
 msgid "git sparse-checkout init [--cone]"
 msgstr "git sparse-checkout init [--cone]"
 
-#: builtin/sparse-checkout.c:307
+#: builtin/sparse-checkout.c:302
 msgid "initialize the sparse-checkout in cone mode"
 msgstr "khởi tạo sparse-checkout trong chế độ nón"
 
-#: builtin/sparse-checkout.c:344
+#: builtin/sparse-checkout.c:339
 #, c-format
 msgid "failed to open '%s'"
 msgstr "gặp lỗi khi mở “%s”"
 
-#: builtin/sparse-checkout.c:401
+#: builtin/sparse-checkout.c:396
 #, c-format
 msgid "could not normalize path %s"
 msgstr "không thể thường hóa đường dẫn “%s”"
 
-#: builtin/sparse-checkout.c:413
+#: builtin/sparse-checkout.c:408
 msgid "git sparse-checkout (set|add) (--stdin | <patterns>)"
 msgstr "git sparse-checkout (set|add) (--stdin | <các mẫu>)"
 
-#: builtin/sparse-checkout.c:438
+#: builtin/sparse-checkout.c:433
 #, c-format
 msgid "unable to unquote C-style string '%s'"
 msgstr "không thể bỏ trích dẫn chuỗi kiểu C “%s”"
 
-#: builtin/sparse-checkout.c:492 builtin/sparse-checkout.c:516
+#: builtin/sparse-checkout.c:487 builtin/sparse-checkout.c:511
 msgid "unable to load existing sparse-checkout patterns"
 msgstr "không thể tải các mẫu sparse-checkout"
 
-#: builtin/sparse-checkout.c:561
+#: builtin/sparse-checkout.c:556
 msgid "read patterns from standard in"
 msgstr "đọc các mẫu từ đầu vào tiêu chuẩn"
 
-#: builtin/sparse-checkout.c:576
+#: builtin/sparse-checkout.c:571
 msgid "git sparse-checkout reapply"
 msgstr "git sparse-checkout reapply"
 
-#: builtin/sparse-checkout.c:595
+#: builtin/sparse-checkout.c:590
 msgid "git sparse-checkout disable"
 msgstr "git sparse-checkout disable"
 
-#: builtin/sparse-checkout.c:623
+#: builtin/sparse-checkout.c:618
 msgid "error while refreshing working directory"
 msgstr "gặp lỗi khi đọc lại thư mục làm việc"
 
@@ -21521,154 +21922,164 @@ msgid "%s is not a valid reference"
 msgstr "“%s” không phải một tham chiếu hợp lệ"
 
 #: builtin/stash.c:225
-msgid "git stash clear with parameters is unimplemented"
+msgid "git stash clear with arguments is unimplemented"
+msgstr "git stash clear với các tham số là chưa được thực hiện"
+
+#: builtin/stash.c:429
+#, c-format
+msgid ""
+"WARNING: Untracked file in way of tracked file!  Renaming\n"
+"            %s -> %s\n"
+"         to make room.\n"
 msgstr ""
-"git stash clear với các tham số là chưa được thực hiện (không nhận đối số)"
+"CẢNH BÁO: Tệp chưa được theo dõi theo cách của tệp được theo dõi!  Đổi tên\n"
+"            %s -> %s\n"
+"         để nhường chỗ.\n"
 
-#: builtin/stash.c:404
+#: builtin/stash.c:490
 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"
 
-#: builtin/stash.c:415
+#: builtin/stash.c:501
 #, c-format
 msgid "could not generate diff %s^!."
 msgstr "không thể tạo diff %s^!."
 
-#: builtin/stash.c:422
+#: builtin/stash.c:508
 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."
 
-#: builtin/stash.c:428
+#: builtin/stash.c:514
 msgid "could not save index tree"
 msgstr "không thể ghi lại cây chỉ mục"
 
-#: builtin/stash.c:437
+#: builtin/stash.c:523
 msgid "could not restore untracked files from stash"
 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)"
 
-#: builtin/stash.c:451
+#: builtin/stash.c:537
 #, c-format
 msgid "Merging %s with %s"
 msgstr "Đang hòa trộn %s với %s"
 
-#: builtin/stash.c:461
+#: builtin/stash.c:547
 msgid "Index was not unstashed."
 msgstr "Bảng mục lục đã không được bỏ stash."
 
-#: builtin/stash.c:522 builtin/stash.c:620
+#: builtin/stash.c:589 builtin/stash.c:687
 msgid "attempt to recreate the index"
 msgstr "gặp lỗi đọc bảng mục lục"
 
-#: builtin/stash.c:566
+#: builtin/stash.c:633
 #, c-format
 msgid "Dropped %s (%s)"
 msgstr "Đã xóa %s (%s)"
 
-#: builtin/stash.c:569
+#: builtin/stash.c:636
 #, c-format
 msgid "%s: Could not drop stash entry"
 msgstr "%s: Không thể xóa bỏ mục stash"
 
-#: builtin/stash.c:582
+#: builtin/stash.c:649
 #, c-format
 msgid "'%s' is not a stash reference"
 msgstr "”%s” không phải tham chiếu đến stash"
 
-#: builtin/stash.c:632
+#: builtin/stash.c:699
 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ó."
 
-#: builtin/stash.c:655
+#: builtin/stash.c:722
 msgid "No branch name specified"
 msgstr "Chưa chỉ ra tên của nhánh"
 
-#: builtin/stash.c:799 builtin/stash.c:836
+#: builtin/stash.c:866 builtin/stash.c:903
 #, c-format
 msgid "Cannot update %s with %s"
 msgstr "Không thể cập nhật %s với %s"
 
-#: builtin/stash.c:817 builtin/stash.c:1471 builtin/stash.c:1536
+#: builtin/stash.c:884 builtin/stash.c:1538 builtin/stash.c:1603
 msgid "stash message"
 msgstr "phần chú thích cho stash"
 
-#: builtin/stash.c:827
+#: builtin/stash.c:894
 msgid "\"git stash store\" requires one <commit> argument"
 msgstr "\"git stash store\" cần một đối số <lần chuyển giao>"
 
-#: builtin/stash.c:1042
+#: builtin/stash.c:1109
 msgid "No changes selected"
 msgstr "Chưa có thay đổi nào được chọn"
 
-#: builtin/stash.c:1142
+#: builtin/stash.c:1209
 msgid "You do not have the initial commit yet"
 msgstr "Bạn chưa còn có lần chuyển giao khởi tạo"
 
-#: builtin/stash.c:1169
+#: builtin/stash.c:1236
 msgid "Cannot save the current index state"
 msgstr "Không thể ghi lại trạng thái bảng mục lục hiện hành"
 
-#: builtin/stash.c:1178
+#: builtin/stash.c:1245
 msgid "Cannot save the untracked files"
 msgstr "Không thể ghi lại các tập tin chưa theo dõi"
 
-#: builtin/stash.c:1189 builtin/stash.c:1198
+#: builtin/stash.c:1256 builtin/stash.c:1265
 msgid "Cannot save the current worktree state"
 msgstr "Không thể ghi lại trạng thái cây-làm-việc hiện hành"
 
-#: builtin/stash.c:1226
+#: builtin/stash.c:1293
 msgid "Cannot record working tree state"
 msgstr "Không thể ghi lại trạng thái cây làm việc hiện hành"
 
-#: builtin/stash.c:1275
+#: builtin/stash.c:1342
 msgid "Can't use --patch and --include-untracked or --all at the same time"
 msgstr "Không thể dùng --patch và --include-untracked hay --all cùng một lúc"
 
-#: builtin/stash.c:1291
+#: builtin/stash.c:1358
 msgid "Did you forget to 'git add'?"
 msgstr "Có lẽ bạn đã quên “git add ” phải không?"
 
-#: builtin/stash.c:1306
+#: builtin/stash.c:1373
 msgid "No local changes to save"
 msgstr "Không có thay đổi nội bộ nào được ghi lại"
 
-#: builtin/stash.c:1313
+#: builtin/stash.c:1380
 msgid "Cannot initialize stash"
 msgstr "Không thể khởi tạo stash"
 
-#: builtin/stash.c:1328
+#: builtin/stash.c:1395
 msgid "Cannot save the current status"
 msgstr "Không thể ghi lại trạng thái hiện hành"
 
-#: builtin/stash.c:1333
+#: builtin/stash.c:1400
 #, c-format
 msgid "Saved working directory and index state %s"
 msgstr "Đã ghi lại thư mục làm việc và trạng thái mục lục %s"
 
-#: builtin/stash.c:1423
+#: builtin/stash.c:1490
 msgid "Cannot remove worktree changes"
 msgstr "Không thể gỡ bỏ các thay đổi cây-làm-việc"
 
-#: builtin/stash.c:1462 builtin/stash.c:1527
+#: builtin/stash.c:1529 builtin/stash.c:1594
 msgid "keep index"
 msgstr "giữ nguyên bảng mục lục"
 
-#: builtin/stash.c:1464 builtin/stash.c:1529
+#: builtin/stash.c:1531 builtin/stash.c:1596
 msgid "stash in patch mode"
 msgstr "cất đi ở chế độ miếng vá"
 
-#: builtin/stash.c:1465 builtin/stash.c:1530
+#: builtin/stash.c:1532 builtin/stash.c:1597
 msgid "quiet mode"
 msgstr "chế độ im lặng"
 
-#: builtin/stash.c:1467 builtin/stash.c:1532
+#: builtin/stash.c:1534 builtin/stash.c:1599
 msgid "include untracked files in stash"
 msgstr "bao gồm các tập tin không được theo dõi trong stash"
 
-#: builtin/stash.c:1469 builtin/stash.c:1534
+#: builtin/stash.c:1536 builtin/stash.c:1601
 msgid "include ignore files"
 msgstr "bao gồm các tập tin bị bỏ qua"
 
-#: builtin/stash.c:1569
+#: builtin/stash.c:1636
 msgid ""
 "the stash.useBuiltin support has been removed!\n"
 "See its entry in 'git help config' for details."
@@ -21746,12 +22157,13 @@ msgstr ""
 "."
 
 #: builtin/submodule--helper.c:565
-msgid "Suppress output of entering each submodule command"
-msgstr "Chặn kết xuất của từng lệnh mô-đun-con"
+msgid "suppress output of entering each submodule command"
+msgstr "chặn kết xuất của từng lệnh mô-đun-con"
 
-#: builtin/submodule--helper.c:567 builtin/submodule--helper.c:1487
-msgid "Recurse into nested submodules"
-msgstr "Đệ quy vào trong các mô-đun-con lồng nhau"
+#: builtin/submodule--helper.c:567 builtin/submodule--helper.c:888
+#: builtin/submodule--helper.c:1487
+msgid "recurse into nested submodules"
+msgstr "đệ quy vào trong mô-đun-con lồng nhau"
 
 #: builtin/submodule--helper.c:572
 msgid "git submodule--helper foreach [--quiet] [--recursive] [--] <command>"
@@ -21787,8 +22199,8 @@ 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:709
-msgid "Suppress output for initializing a submodule"
-msgstr "Chặn kết xuất cho khởi tạo một mô-đun-con"
+msgid "suppress output for initializing a submodule"
+msgstr "chặn kết xuất của khởi tạo một mô-đun-con"
 
 #: builtin/submodule--helper.c:714
 msgid "git submodule--helper init [<options>] [<path>]"
@@ -21812,21 +22224,17 @@ 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:886 builtin/submodule--helper.c:1623
-msgid "Suppress submodule status output"
-msgstr "Chặn két xuất tình trạng mô-đun-con"
+msgid "suppress submodule status output"
+msgstr "chặn kết xuất về tình trạng mô-đun-con"
 
 #: builtin/submodule--helper.c:887
 msgid ""
-"Use commit stored in the index instead of the one stored in the submodule "
+"use commit stored in the index instead of the one stored in the submodule "
 "HEAD"
 msgstr ""
-"Dùng lần chuyển giao lưu trong mục lục thay cho cái được lưu trong HEAD mô-"
+"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:888
-msgid "recurse into nested submodules"
-msgstr "đệ quy vào trong mô-đun-con lồng nhau"
-
 #: builtin/submodule--helper.c:893
 msgid "git submodule status [--quiet] [--cached] [--recursive] [<path>...]"
 msgstr ""
@@ -21916,8 +22324,8 @@ 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:1485
-msgid "Suppress output of synchronizing submodule url"
-msgstr "Chặn kết xuất cho đồng bộ url mô-đun-con"
+msgid "suppress output of synchronizing submodule url"
+msgstr "chặn kết xuất của url mô-đun-con đồng bộ"
 
 #: builtin/submodule--helper.c:1492
 msgid "git submodule--helper sync [--quiet] [--recursive] [<path>]"
@@ -21962,12 +22370,12 @@ 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:1624
-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ộ"
+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:1625
-msgid "Unregister all submodules"
-msgstr "Bỏ đăng ký tất cả các trong mô-đun-con"
+msgid "unregister all submodules"
+msgstr "bỏ đăng ký tất cả các trong mô-đun-con"
 
 #: builtin/submodule--helper.c:1630
 msgid ""
@@ -22116,9 +22524,9 @@ msgid "rebase, merge, checkout or none"
 msgstr "rebase, merge, checkout hoặc không làm gì cả"
 
 #: builtin/submodule--helper.c:2340
-msgid "Create a shallow clone truncated to the specified number of revisions"
+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"
+"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:2343
 msgid "parallel jobs"
@@ -22189,8 +22597,8 @@ msgid "please make sure that the .gitmodules file is in the working tree"
 msgstr "hãy đảm bảo rằng tập tin .gitmodules có trong cây làm việc"
 
 #: builtin/submodule--helper.c:2681
-msgid "Suppress output for setting url of a submodule"
-msgstr "Chặn kết xuất cho cài đặt url của một mô-đun-con"
+msgid "suppress output for setting url of a submodule"
+msgstr "chặn kết xuất cho cài đặt url của một mô-đun-con"
 
 #: builtin/submodule--helper.c:2685
 msgid "git submodule--helper set-url [--quiet] <path> <newurl>"
@@ -22224,7 +22632,7 @@ msgstr "cần --branch hoặc --default"
 msgid "--branch and --default are mutually exclusive"
 msgstr "Các tùy chọn --branch và --default loại từ lẫn nhau"
 
-#: builtin/submodule--helper.c:2792 git.c:438 git.c:711
+#: builtin/submodule--helper.c:2792 git.c:441 git.c:714
 #, c-format
 msgid "%s doesn't support --super-prefix"
 msgstr "%s không hỗ trợ --super-prefix"
@@ -22295,12 +22703,12 @@ msgstr "git tag -v [--format=<định_dạng>]  <tên-thẻ>…"
 msgid "tag '%s' not found."
 msgstr "không tìm thấy tìm thấy thẻ “%s”."
 
-#: builtin/tag.c:105
+#: builtin/tag.c:124
 #, c-format
 msgid "Deleted tag '%s' (was %s)\n"
 msgstr "Thẻ đã bị xóa “%s” (từng là %s)\n"
 
-#: builtin/tag.c:135
+#: builtin/tag.c:159
 #, c-format
 msgid ""
 "\n"
@@ -22313,7 +22721,7 @@ msgstr ""
 "  %s\n"
 "Những dòng được bắt đầu bằng “%c” sẽ được bỏ qua.\n"
 
-#: builtin/tag.c:139
+#: builtin/tag.c:163
 #, c-format
 msgid ""
 "\n"
@@ -22328,15 +22736,11 @@ 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:198
+#: builtin/tag.c:230
 msgid "unable to sign the tag"
 msgstr "không thể ký thẻ"
 
-#: builtin/tag.c:200
-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:248
 #, c-format
 msgid ""
 "You have created a nested tag. The object referred to by your new tag is\n"
@@ -22349,139 +22753,135 @@ msgstr ""
 "\n"
 "\tgit tag -f %s %s^{}"
 
-#: builtin/tag.c:232
+#: builtin/tag.c:264
 msgid "bad object type."
 msgstr "kiểu đối tượng sai."
 
-#: builtin/tag.c:285
+#: builtin/tag.c:317
 msgid "no tag message?"
 msgstr "không có chú thích gì cho cho thẻ à?"
 
-#: builtin/tag.c:292
+#: builtin/tag.c:324
 #, 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:403
+#: builtin/tag.c:435
 msgid "list tag names"
 msgstr "chỉ liệt kê tên các thẻ"
 
-#: builtin/tag.c:405
+#: builtin/tag.c:437
 msgid "print <n> lines of each tag message"
 msgstr "hiển thị <n> dòng cho mỗi ghi chú"
 
-#: builtin/tag.c:407
+#: builtin/tag.c:439
 msgid "delete tags"
 msgstr "xóa thẻ"
 
-#: builtin/tag.c:408
+#: builtin/tag.c:440
 msgid "verify tags"
 msgstr "thẩm tra thẻ"
 
-#: builtin/tag.c:410
+#: builtin/tag.c:442
 msgid "Tag creation options"
 msgstr "Tùy chọn tạo thẻ"
 
-#: builtin/tag.c:412
+#: builtin/tag.c:444
 msgid "annotated tag, needs a message"
 msgstr "để chú giải cho thẻ, cần một lời ghi chú"
 
-#: builtin/tag.c:414
+#: builtin/tag.c:446
 msgid "tag message"
 msgstr "phần chú thích cho thẻ"
 
-#: builtin/tag.c:416
+#: builtin/tag.c:448
 msgid "force edit of tag message"
 msgstr "ép buộc sửa thẻ lần commit"
 
-#: builtin/tag.c:417
+#: builtin/tag.c:449
 msgid "annotated and GPG-signed tag"
 msgstr "thẻ chú giải và ký kiểu GPG"
 
-#: builtin/tag.c:420
+#: builtin/tag.c:452
 msgid "use another key to sign the tag"
 msgstr "dùng kháo khác để ký thẻ"
 
-#: builtin/tag.c:421
+#: builtin/tag.c:453
 msgid "replace the tag if exists"
 msgstr "thay thế nếu thẻ đó đã có trước"
 
-#: builtin/tag.c:422 builtin/update-ref.c:505
+#: builtin/tag.c:454 builtin/update-ref.c:505
 msgid "create a reflog"
 msgstr "tạo một reflog"
 
-#: builtin/tag.c:424
+#: builtin/tag.c:456
 msgid "Tag listing options"
 msgstr "Các tùy chọn liệt kê thẻ"
 
-#: builtin/tag.c:425
+#: builtin/tag.c:457
 msgid "show tag list in columns"
 msgstr "hiển thị danh sách thẻ trong các cột"
 
-#: builtin/tag.c:426 builtin/tag.c:428
+#: builtin/tag.c:458 builtin/tag.c:460
 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:427 builtin/tag.c:429
+#: builtin/tag.c:459 builtin/tag.c:461
 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:430
+#: builtin/tag.c:462
 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:431
+#: builtin/tag.c:463
 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:435
+#: builtin/tag.c:467
 msgid "print only tags of the object"
 msgstr "chỉ hiển thị các thẻ của đối tượng"
 
-#: builtin/tag.c:483
+#: builtin/tag.c:515
 msgid "--column and -n are incompatible"
 msgstr "--column và -n xung khắc nhau"
 
-#: builtin/tag.c:505
+#: builtin/tag.c:537
 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:507
+#: builtin/tag.c:539
 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:509
+#: builtin/tag.c:541
 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:511
+#: builtin/tag.c:543
 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:513
+#: builtin/tag.c:545
 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:524
+#: builtin/tag.c:556
 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:543
-msgid "too many params"
-msgstr "quá nhiều đối số"
-
-#: builtin/tag.c:549
+#: builtin/tag.c:581
 #, c-format
 msgid "'%s' is not a valid tag name."
 msgstr "“%s” không phải thẻ hợp lệ."
 
-#: builtin/tag.c:554
+#: builtin/tag.c:586
 #, c-format
 msgid "tag '%s' already exists"
 msgstr "thẻ “%s” đã tồn tại rồi"
 
-#: builtin/tag.c:585
+#: builtin/tag.c:617
 #, c-format
 msgid "Updated tag '%s' (was %s)\n"
 msgstr "Đã cập nhật thẻ “%s” (trước là %s)\n"
@@ -22839,89 +23239,63 @@ msgstr "git verify-tag [-v | --verbose] [--format=<định_dạng>] <thẻ>…"
 msgid "print tag contents"
 msgstr "hiển thị nội dung của thẻ"
 
-#: builtin/worktree.c:17
+#: builtin/worktree.c:18
 msgid "git worktree add [<options>] <path> [<commit-ish>]"
 msgstr "git worktree add [<các tùy chọn>] </đường/dẫn> [<commit-ish>]"
 
-#: builtin/worktree.c:18
+#: builtin/worktree.c:19
 msgid "git worktree list [<options>]"
 msgstr "git worktree list [<các tùy chọn>]"
 
-#: builtin/worktree.c:19
+#: builtin/worktree.c:20
 msgid "git worktree lock [<options>] <path>"
 msgstr "git worktree lock [<các tùy chọn>] </đường/dẫn>"
 
-#: builtin/worktree.c:20
+#: builtin/worktree.c:21
 msgid "git worktree move <worktree> <new-path>"
 msgstr "git worktree move <worktree> </đường/dẫn/mới>"
 
-#: builtin/worktree.c:21
+#: builtin/worktree.c:22
 msgid "git worktree prune [<options>]"
 msgstr "git worktree prune [<các tùy chọn>]"
 
-#: builtin/worktree.c:22
+#: builtin/worktree.c:23
 msgid "git worktree remove [<options>] <worktree>"
 msgstr "git worktree remove [<các tùy chọn>] <worktree>"
 
-#: builtin/worktree.c:23
+#: builtin/worktree.c:24
 msgid "git worktree unlock <path>"
 msgstr "git worktree unlock </đường/dẫn>"
 
-#: builtin/worktree.c:60 builtin/worktree.c:973
+#: builtin/worktree.c:61 builtin/worktree.c:933
 #, c-format
 msgid "failed to delete '%s'"
 msgstr "gặp lỗi khi xóa “%s”"
 
-#: builtin/worktree.c:85
-msgid "not a valid directory"
-msgstr "không phải thư mục hợp lệ"
-
-#: builtin/worktree.c:91
-msgid "gitdir file does not exist"
-msgstr "tập tin gitdir không tồn tại"
-
-#: builtin/worktree.c:96 builtin/worktree.c:105
-#, c-format
-msgid "unable to read gitdir file (%s)"
-msgstr "không thể đọc tập tin gitdir (%s)"
-
-#: builtin/worktree.c:115
-#, c-format
-msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
-msgstr "đọc ngắn (cần %<PRIuMAX> byte, đọc %<PRIuMAX>)"
-
-#: builtin/worktree.c:123
-msgid "invalid gitdir file"
-msgstr "tập tin gitdir (thư mục git) không hợp lệ"
-
-#: builtin/worktree.c:131
-msgid "gitdir file points to non-existent location"
-msgstr "tập tin gitdir chỉ đến vị trí không tồn tại"
-
-#: builtin/worktree.c:146
+#: builtin/worktree.c:74
 #, c-format
 msgid "Removing %s/%s: %s"
 msgstr "Đang xóa %s/%s: %s"
 
-#: builtin/worktree.c:221
+#: builtin/worktree.c:149
 msgid "report pruned working trees"
 msgstr "báo cáo các cây làm việc đã prune"
 
-#: builtin/worktree.c:223
+#: builtin/worktree.c:151
 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:293
+#: builtin/worktree.c:221
 #, c-format
 msgid "'%s' already exists"
 msgstr "“%s” đã có từ trước rồi"
 
-#: builtin/worktree.c:302
+#: builtin/worktree.c:230
 #, c-format
 msgid "unusable worktree destination '%s'"
 msgstr "đích cây làm việc không sử dụng được “%s”"
 
-#: builtin/worktree.c:307
+#: builtin/worktree.c:235
 #, c-format
 msgid ""
 "'%s' is a missing but locked worktree;\n"
@@ -22930,7 +23304,7 @@ msgstr ""
 "“%s” bị mất nhưng cây làm việc bị khóa;\n"
 "dùng “%s -f -f” để ghi đè, hoặc “unlock” và “prune” hay “remove” để xóa"
 
-#: builtin/worktree.c:309
+#: builtin/worktree.c:237
 #, c-format
 msgid ""
 "'%s' is a missing but already registered worktree;\n"
@@ -22939,115 +23313,129 @@ msgstr ""
 "“%s” bị mất nhưng cây làm việc đã được đăng ký;\n"
 "dùng “%s -f” để ghi đè, hoặc “prune” hay “remove” để xóa"
 
-#: builtin/worktree.c:360
+#: builtin/worktree.c:288
 #, c-format
 msgid "could not create directory of '%s'"
 msgstr "không thể tạo thư mục của “%s”"
 
-#: builtin/worktree.c:494 builtin/worktree.c:500
+#: builtin/worktree.c:422 builtin/worktree.c:428
 #, 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:496
+#: builtin/worktree.c:424
 #, 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:505
+#: builtin/worktree.c:433
 #, c-format
 msgid "Preparing worktree (checking out '%s')"
 msgstr "Đang chuẩn bị cây làm việc (đang lấy ra “%s”)"
 
-#: builtin/worktree.c:511
+#: builtin/worktree.c:439
 #, 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:552
+#: builtin/worktree.c:480
 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:555
+#: builtin/worktree.c:483
 msgid "create a new branch"
 msgstr "tạo nhánh mới"
 
-#: builtin/worktree.c:557
+#: builtin/worktree.c:485
 msgid "create or reset a branch"
 msgstr "tạo hay đặt lại một nhánh"
 
-#: builtin/worktree.c:559
+#: builtin/worktree.c:487
 msgid "populate the new working tree"
 msgstr "di chuyển cây làm việc mới"
 
-#: builtin/worktree.c:560
+#: builtin/worktree.c:488
 msgid "keep the new working tree locked"
 msgstr "giữ cây làm việc mới bị khóa"
 
-#: builtin/worktree.c:563
+#: builtin/worktree.c:491
 msgid "set up tracking mode (see git-branch(1))"
 msgstr "cài đặt chế độ theo dõi (xem git-branch(1))"
 
-#: builtin/worktree.c:566
+#: builtin/worktree.c:494
 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:574
+#: builtin/worktree.c:502
 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:635
+#: builtin/worktree.c:563
 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:758
+#: builtin/worktree.c:680
+msgid "show extended annotations and reasons, if available"
+msgstr "hiển thị chú thích và lý do mở rộng, nếu có"
+
+#: builtin/worktree.c:682
+msgid "add 'prunable' annotation to worktrees older than <time>"
+msgstr ""
+"thêm chú thích kiểu 'prunable' cho các cây làm việc hết hạn cũ hơn khoảng "
+"<thời gian>"
+
+#: builtin/worktree.c:691
+msgid "--verbose and --porcelain are mutually exclusive"
+msgstr "--verbose và --porcelain loại từ lẫn nhau"
+
+#: builtin/worktree.c:718
 msgid "reason for locking"
 msgstr "lý do khóa"
 
-#: builtin/worktree.c:770 builtin/worktree.c:803 builtin/worktree.c:877
-#: builtin/worktree.c:1001
+#: builtin/worktree.c:730 builtin/worktree.c:763 builtin/worktree.c:837
+#: builtin/worktree.c:961
 #, 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:772 builtin/worktree.c:805
+#: builtin/worktree.c:732 builtin/worktree.c:765
 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:777
+#: builtin/worktree.c:737
 #, c-format
 msgid "'%s' is already locked, reason: %s"
 msgstr "“%s” đã được khóa rồi, lý do: %s"
 
-#: builtin/worktree.c:779
+#: builtin/worktree.c:739
 #, c-format
 msgid "'%s' is already locked"
 msgstr "“%s” đã được khóa rồi"
 
-#: builtin/worktree.c:807
+#: builtin/worktree.c:767
 #, c-format
 msgid "'%s' is not locked"
 msgstr "“%s” chưa bị khóa"
 
-#: builtin/worktree.c:848
+#: builtin/worktree.c:808
 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:856
+#: builtin/worktree.c:816
 msgid "force move even if worktree is dirty or locked"
 msgstr "ép buộc ngay cả khi cây làm việc đang bẩn hay bị khóa"
 
-#: builtin/worktree.c:879 builtin/worktree.c:1003
+#: builtin/worktree.c:839 builtin/worktree.c:963
 #, c-format
 msgid "'%s' is a main working tree"
 msgstr "“%s” là cây làm việc chính"
 
-#: builtin/worktree.c:884
+#: builtin/worktree.c:844
 #, 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:897
+#: builtin/worktree.c:857
 #, c-format
 msgid ""
 "cannot move a locked working tree, lock reason: %s\n"
@@ -23056,7 +23444,7 @@ msgstr ""
 "không thể di chuyển một cây-làm-việc bị khóa, khóa vì: %s\n"
 "dùng “move -f -f” để ghi đè hoặc mở khóa trước đã"
 
-#: builtin/worktree.c:899
+#: builtin/worktree.c:859
 msgid ""
 "cannot move a locked working tree;\n"
 "use 'move -f -f' to override or unlock first"
@@ -23064,38 +23452,38 @@ msgstr ""
 "không thể di chuyển một cây-làm-việc bị khóa;\n"
 "dùng “move -f -f” để ghi đè hoặc mở khóa trước đã"
 
-#: builtin/worktree.c:902
+#: builtin/worktree.c:862
 #, 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:907
+#: builtin/worktree.c:867
 #, c-format
 msgid "failed to move '%s' to '%s'"
 msgstr "gặp lỗi khi chuyển “%s” sang “%s”"
 
-#: builtin/worktree.c:953
+#: builtin/worktree.c:913
 #, 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:957
+#: builtin/worktree.c:917
 #, c-format
 msgid "'%s' contains modified or untracked files, use --force to delete it"
 msgstr ""
 "“%s” có chứa các tập tin đã bị sửa chữa hoặc chưa được theo dõi, hãy dùng --"
 "force để xóa nó"
 
-#: builtin/worktree.c:962
+#: builtin/worktree.c:922
 #, 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:985
+#: builtin/worktree.c:945
 msgid "force removal even if worktree is dirty or locked"
 msgstr "ép buộc di chuyển thậm chí cả khi cây làm việc đang bẩn hay bị khóa"
 
-#: builtin/worktree.c:1008
+#: builtin/worktree.c:968
 #, c-format
 msgid ""
 "cannot remove a locked working tree, lock reason: %s\n"
@@ -23104,7 +23492,7 @@ msgstr ""
 "không thể xóa bỏ một cây-làm-việc bị khóa, khóa vì: %s\n"
 "dùng “remove -f -f” để ghi đè hoặc mở khóa trước đã"
 
-#: builtin/worktree.c:1010
+#: builtin/worktree.c:970
 msgid ""
 "cannot remove a locked working tree;\n"
 "use 'remove -f -f' to override or unlock first"
@@ -23112,17 +23500,17 @@ msgstr ""
 "không thể xóa bỏ một cây-làm-việc bị khóa;\n"
 "dùng “remove -f -f” để ghi đè hoặc mở khóa trước đã"
 
-#: builtin/worktree.c:1013
+#: builtin/worktree.c:973
 #, c-format
 msgid "validation failed, cannot remove working tree: %s"
 msgstr "thẩm tra gặp lỗi, không thể gỡ bỏ một cây-làm-việc: %s"
 
-#: builtin/worktree.c:1037
+#: builtin/worktree.c:997
 #, c-format
 msgid "repair: %s: %s"
 msgstr "sửa chữa: %s: %s"
 
-#: builtin/worktree.c:1040
+#: builtin/worktree.c:1000
 #, c-format
 msgid "error: %s: %s"
 msgstr "lỗi: %s: %s"
@@ -23143,15 +23531,24 @@ 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"
 
-#: http-fetch.c:114
+#: http-fetch.c:118
 #, c-format
 msgid "argument to --packfile must be a valid hash (got '%s')"
 msgstr "tham số cho --packfile phải là một giá trị băm hợp lệ (nhận được “%s”)"
 
-#: http-fetch.c:122
+#: http-fetch.c:128
 msgid "not a git repository"
 msgstr "không phải là kho git"
 
+#: http-fetch.c:134
+#| msgid "--pathspec-file-nul requires --pathspec-from-file"
+msgid "--packfile requires --index-pack-args"
+msgstr "--packfile cần --index-pack-args"
+
+#: http-fetch.c:143
+msgid "--index-pack-args can only be used with --packfile"
+msgstr "--index-pack-args chỉ được dùng khi có --packfile"
+
 #: t/helper/test-fast-rebase.c:141
 msgid "unhandled options"
 msgstr "các tùy chọn được không xử lý"
@@ -23184,6 +23581,7 @@ msgid ""
 "           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--"
 "bare]\n"
 "           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]\n"
+"           [--super-prefix=<path>] [--config-env=<name>=<envvar>]\n"
 "           <command> [<args>]"
 msgstr ""
 "git [--version] [--help] [-C </đường/dẫn/>] [-c <tên>=<giá trị>]\n"
@@ -23193,9 +23591,10 @@ msgstr ""
 "bare]\n"
 "           [--git-dir=</đường/dẫn/>] [--work-tree=</đường/dẫn/>] [--"
 "namespace=<tên>]\n"
+"           [--super-prefix=</đường/dẫn/>] [--config-env=<tên>=<envvar>]\n"
 "           <lệnh> [<các tham số>]"
 
-#: git.c:35
+#: git.c:36
 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"
@@ -23207,47 +23606,47 @@ msgstr ""
 "để xem các đặc tả cho lệnh hay khái niệm cụ thể.\n"
 "Xem “git help git” để biết tổng quan của hệ thống."
 
-#: git.c:187
+#: git.c:188
 #, c-format
 msgid "no directory given for --git-dir\n"
 msgstr "chưa chỉ ra thư mục cho --git-dir\n"
 
-#: git.c:201
+#: git.c:202
 #, 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:215
+#: git.c:216
 #, 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:229
+#: git.c:230
 #, c-format
 msgid "no prefix given for --super-prefix\n"
 msgstr "chưa đưa ra tiền tố cho --super-prefix\n"
 
-#: git.c:251
+#: git.c:252
 #, c-format
 msgid "-c expects a configuration string\n"
 msgstr "-c cần một chuỗi cấu hình\n"
 
-#: git.c:289
+#: git.c:292
 #, c-format
 msgid "no directory given for -C\n"
 msgstr "chưa đưa ra thư mục cho -C\n"
 
-#: git.c:315
+#: git.c:318
 #, c-format
 msgid "unknown option: %s\n"
 msgstr "không hiểu tùy chọn: %s\n"
 
-#: git.c:364
+#: git.c:367
 #, c-format
 msgid "while expanding alias '%s': '%s'"
 msgstr "trong khi triển khai bí danh “%s”: “%s”"
 
-#: git.c:373
+#: git.c:376
 #, c-format
 msgid ""
 "alias '%s' changes environment variables.\n"
@@ -23256,40 +23655,40 @@ msgstr ""
 "bí danh “%s” thay đổi biến môi trường.\n"
 "Bạn có thể sử dụng “!git” trong đặt bí danh để làm việc này"
 
-#: git.c:380
+#: git.c:383
 #, c-format
 msgid "empty alias for %s"
 msgstr "làm trống bí danh cho %s"
 
-#: git.c:383
+#: git.c:386
 #, c-format
 msgid "recursive alias: %s"
 msgstr "đệ quy các bí danh: %s"
 
-#: git.c:465
+#: git.c:468
 msgid "write failure on standard output"
 msgstr "lỗi ghi nghiêm trong trên đầu ra tiêu chuẩn"
 
-#: git.c:467
+#: git.c:470
 msgid "unknown write failure on standard output"
 msgstr "lỗi nghiêm trọng chưa biết khi ghi ra đầu ra tiêu chuẩn"
 
-#: git.c:469
+#: git.c:472
 msgid "close failed on standard output"
 msgstr "gặp lỗi khi đóng đầu ra tiêu chuẩn"
 
-#: git.c:820
+#: git.c:823
 #, c-format
 msgid "alias loop detected: expansion of '%s' does not terminate:%s"
 msgstr ""
 "dò tìm thấy các bí danh quẩn tròn: biểu thức của “%s” không có điểm kết:%s"
 
-#: git.c:870
+#: git.c:873
 #, c-format
 msgid "cannot handle %s as a builtin"
 msgstr "không thể xử lý %s như là một phần bổ sung"
 
-#: git.c:883
+#: git.c:886
 #, c-format
 msgid ""
 "usage: %s\n"
@@ -23298,12 +23697,12 @@ msgstr ""
 "cách dùng: %s\n"
 "\n"
 
-#: git.c:903
+#: git.c:906
 #, 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:915
+#: git.c:918
 #, c-format
 msgid "failed to run command '%s': %s\n"
 msgstr "gặp lỗi khi chạy lệnh “%s”: %s\n"
@@ -23544,11 +23943,11 @@ msgstr ""
 "với --pathspec-from-file, các phần tử đặc tả đường dẫn bị ngăn cách bởi ký "
 "tự NULL"
 
-#: ref-filter.h:96
+#: ref-filter.h:99
 msgid "key"
 msgstr "khóa"
 
-#: ref-filter.h:96
+#: ref-filter.h:99
 msgid "field name to sort on"
 msgstr "tên trường cần sắp xếp"
 
@@ -23556,14 +23955,6 @@ msgstr "tên trường cần sắp xếp"
 msgid "update the index with reused conflict resolution if possible"
 msgstr "cập nhật bảng mục lục với phân giải xung đột dùng lại nếu được"
 
-#: wt-status.h:80
-msgid "HEAD detached at "
-msgstr "HEAD được tách rời tại "
-
-#: wt-status.h:81
-msgid "HEAD detached from "
-msgstr "HEAD được tách rời từ "
-
 #: 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"
@@ -23908,8 +24299,8 @@ msgid "Write and verify multi-pack-indexes"
 msgstr "Ghi và thẩm tra các multi-pack-indexes"
 
 #: command-list.h:132
-msgid "Creates a tag object"
-msgstr "Tạo một đối tượng thẻ"
+msgid "Creates a tag object with extra validation"
+msgstr "Tạo một đối tượng thẻ với kiểm tra mở rộng"
 
 #: command-list.h:133
 msgid "Build a tree-object from ls-tree formatted text"
@@ -24217,69 +24608,55 @@ 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:209
+msgid "Map author/committer names and/or E-Mail addresses"
+msgstr "Ánh xạ tên tác giả/người chuyển giao và/hoặc địa chỉ E-Mail"
+
+#: command-list.h:210
 msgid "Defining submodule properties"
 msgstr "Định nghĩa thuộc tính mô-đun-con"
 
-#: command-list.h:210
+#: command-list.h:211
 msgid "Git namespaces"
 msgstr "Không gian tên Git"
 
-#: command-list.h:211
+#: command-list.h:212
 msgid "Helper programs to interact with remote repositories"
 msgstr "Các chương trình hỗ trợ để tương tác với các kho chứa trên máy chủ"
 
-#: command-list.h:212
+#: command-list.h:213
 msgid "Git Repository Layout"
 msgstr "Bố cục kho Git"
 
-#: command-list.h:213
+#: command-list.h:214
 msgid "Specifying revisions and ranges for Git"
 msgstr "Chỉ định điểm xét duyệt và vùng cho Git"
 
-#: command-list.h:214
+#: command-list.h:215
 msgid "Mounting one repository inside another"
 msgstr "Gắn một kho chứa vào trong một cái khác"
 
-#: command-list.h:215
+#: command-list.h:216
 msgid "A tutorial introduction to Git: part two"
 msgstr "Hướng dẫn cách dùng Git: phần hai"
 
-#: command-list.h:216
+#: command-list.h:217
 msgid "A tutorial introduction to Git"
 msgstr "Hướng dẫn cách dùng Git"
 
-#: command-list.h:217
+#: command-list.h:218
 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"
 
-#: git-bisect.sh:48
-#, sh-format
-msgid "Bad rev input: $arg"
-msgstr "Đầu vào rev sai: $arg"
-
-#: git-bisect.sh:82
-msgid "No logfile given"
-msgstr "Chưa chỉ ra tập tin ghi nhật ký"
-
-#: git-bisect.sh:83
-#, sh-format
-msgid "cannot read $file for replaying"
-msgstr "không thể đọc $file để thao diễn lại"
-
-#: git-bisect.sh:105
-msgid "?? what are you talking about?"
-msgstr "?? bạn đang nói gì thế?"
-
-#: git-bisect.sh:115
+#: git-bisect.sh:68
 msgid "bisect run failed: no command provided."
 msgstr "bisect chạy gặp lỗi: không đưa ra lệnh."
 
-#: git-bisect.sh:120
+#: git-bisect.sh:73
 #, sh-format
 msgid "running $command"
 msgstr "đang chạy lệnh $command"
 
-#: git-bisect.sh:127
+#: git-bisect.sh:80
 #, sh-format
 msgid ""
 "bisect run failed:\n"
@@ -24288,11 +24665,11 @@ msgstr ""
 "chạy bisect gặp lỗi:\n"
 "mã trả về $res từ lệnh “$command” là < 0 hoặc >= 128"
 
-#: git-bisect.sh:152
+#: git-bisect.sh:105
 msgid "bisect run cannot continue any more"
 msgstr "bisect không thể tiếp tục thêm được nữa"
 
-#: git-bisect.sh:158
+#: git-bisect.sh:111
 #, sh-format
 msgid ""
 "bisect run failed:\n"
@@ -24301,14 +24678,10 @@ msgstr ""
 "chạy bisect gặp lỗi:\n"
 "”bisect-state $state” đã thoát ra với mã lỗi $res"
 
-#: git-bisect.sh:165
+#: git-bisect.sh:118
 msgid "bisect run success"
 msgstr "bisect chạy thành công"
 
-#: git-bisect.sh:173
-msgid "We are not bisecting."
-msgstr "Chúng tôi không bisect."
-
 #: git-merge-octopus.sh:46
 msgid ""
 "Error: Your local changes to the following files would be overwritten by "
@@ -25618,6 +25991,102 @@ msgstr "Bỏ qua %s với hậu tố sao lưu dự phòng “%s”.\n"
 msgid "Do you really want to send %s? [y|N]: "
 msgstr "Bạn có thực sự muốn gửi %s? [y|N](có/KHÔNG): "
 
+#~ msgid "repository contains replace objects; skipping commit-graph"
+#~ msgstr ""
+#~ "kho lưu trữ chứa các đối tượng thay thế; bỏ qua sơ đồ lần chuyển giao"
+
+#~ msgid "repository contains (deprecated) grafts; skipping commit-graph"
+#~ msgstr ""
+#~ "kho lưu trữ chứa các mối ghép (đã lạc hậu); bỏ qua sơ đồ các lần chuyển "
+#~ "giao"
+
+#~ msgid "repository is shallow; skipping commit-graph"
+#~ msgstr "kho nguồn là nông, nên bỏ qua commit-graph"
+
+#, c-format
+#~ msgid "commit-graph improper chunk offset %08x%08x"
+#~ msgstr "bù mảnh đồ-thị-các-lần-chuyển-giao không đúng chỗ %08x%08x"
+
+#, c-format
+#~ msgid "commit-graph chunk id %08x appears multiple times"
+#~ msgstr "mã mảnh đồ-thị-các-lần-chuyển-giao %08x xuất hiện nhiều lần"
+
+#~ msgid "invalid chunk offset (too large)"
+#~ msgstr "khoảng bù đoạn không hợp lệ (quá lớn)"
+
+#~ msgid "Writing chunks to multi-pack-index"
+#~ msgstr "Đang ghi các khúc vào multi-pack-index"
+
+#~ msgid "rev-list died"
+#~ msgstr "rev-list đã chết"
+
+#~ msgid ""
+#~ "git bisect--helper --bisect-write [--no-log] <state> <revision> "
+#~ "<good_term> <bad_term>"
+#~ msgstr ""
+#~ "git bisect--helper --bisect-write [--no-log] <state> <revision> <lúc_sai> "
+#~ "<lúc_đúng>"
+
+#~ msgid ""
+#~ "git bisect--helper --bisect-check-and-set-terms <command> <good_term> "
+#~ "<bad_term>"
+#~ msgstr ""
+#~ "git bisect--helper --bisect-check-and-set-terms <command> <lúc_sai> "
+#~ "<lúc_đúng>"
+
+#~ msgid "git bisect--helper --bisect-auto-next"
+#~ msgstr "git bisect--helper --bisect-auto-next"
+
+#~ msgid "write out the bisection state in BISECT_LOG"
+#~ msgstr "ghi ra tình trạng di chuyển nửa bước trong BISECT_LOG"
+
+#~ msgid "check and set terms in a bisection state"
+#~ msgstr "kiểm tra và đặt thời điểm trong di chuyển nửa bước"
+
+#~ msgid ""
+#~ "verify the next bisection state then checkout the next bisection commit"
+#~ msgstr ""
+#~ "xác nhận trạng thái phân đôi kế sau đó lấy ra lần chuyển giao phân đôi kế"
+
+#~ msgid "--bisect-write requires either 4 or 5 arguments"
+#~ msgstr "--bisect-write cần 4 hoặc 5 tham số"
+
+#~ msgid "--check-and-set-terms requires 3 arguments"
+#~ msgstr "--check-and-set-terms cần 3 tham số"
+
+#~ msgid "--bisect-auto-next requires 0 arguments"
+#~ msgstr "--bisect-auto-next cần 0 tham số"
+
+#~ msgid "Force progress reporting"
+#~ msgstr "Ép buộc báo cáo diễn biến công việc"
+
+#, c-format
+#~ msgid "Error deleting remote-tracking branch '%s'"
+#~ msgstr "Gặp lỗi khi đang xóa nhánh theo dõi máy chủ “%s”"
+
+#, c-format
+#~ msgid "Error deleting branch '%s'"
+#~ msgstr "Gặp lỗi khi xóa bỏ nhánh “%s”"
+
+#~ msgid "show parse tree for grep expression"
+#~ msgstr "hiển thị cây phân tích cú pháp cho biểu thức “grep” (tìm kiếm)"
+
+#~ msgid "too many parameters"
+#~ msgstr "quá nhiều đối số"
+
+#~ msgid "too few parameters"
+#~ msgstr "quá ít đối số"
+
+#~ msgid "Recurse into nested submodules"
+#~ msgstr "Đệ quy vào trong các mô-đun-con lồng nhau"
+
+#~ msgid "too many params"
+#~ msgstr "quá nhiều đối số"
+
+#, sh-format
+#~ msgid "Bad rev input: $arg"
+#~ msgstr "Đầu vào rev sai: $arg"
+
 #~ msgid "Counting distinct commits in commit graph"
 #~ msgstr "Đang đếm các lần chuyển giao khác nhau trong đồ thị lần chuyển giao"
 
@@ -25656,9 +26125,6 @@ msgstr "Bạn có thực sự muốn gửi %s? [y|N](có/KHÔNG): "
 #~ msgid "git bisect--helper --write-terms <bad_term> <good_term>"
 #~ msgstr "git bisect--helper --write-terms <bad_term> <good_term>"
 
-#~ msgid "git bisect--helper --bisect-clean-state"
-#~ msgstr "git bisect--helper --bisect-clean-state"
-
 #~ msgid "git bisect--helper --bisect-autostart"
 #~ msgstr "git bisect--helper --bisect-autostart"
 
@@ -26129,12 +26595,6 @@ msgstr "Bạn có thực sự muốn gửi %s? [y|N](có/KHÔNG): "
 #~ msgid "Server supports ofs-delta"
 #~ msgstr "Máy chủ hỗ trợ ofs-delta"
 
-#~ msgid "(HEAD detached at %s)"
-#~ msgstr "(HEAD được tách rời tại %s)"
-
-#~ msgid "(HEAD detached from %s)"
-#~ msgstr "(HEAD được tách rời từ %s)"
-
 #~ msgid "Checking out files"
 #~ msgstr "Đang lấy ra các tập tin"
 
@@ -27341,9 +27801,6 @@ msgstr "Bạn có thực sự muốn gửi %s? [y|N](có/KHÔNG): "
 #~ msgid "--detach cannot be used with -b/-B/--orphan"
 #~ msgstr "--detach không thể được sử dụng với tùy chọn -b/-B/--orphan"
 
-#~ msgid "--detach cannot be used with -t"
-#~ msgstr "--detach không thể được sử dụng với tùy chọn -t"
-
 #~ msgid "--orphan and -b|-B are mutually exclusive"
 #~ msgstr "Tùy chọn --orphan và -b|-B loại từ lẫn nhau"
 
index b30a1e57046d9652a3ffade5f08b267a3a19c1b9..fdaaea81974ee0049f6cac714fe113ffbb813984 100644 (file)
@@ -92,6 +92,7 @@
 #   plumbing                         |  管件(Git 底层核心命令的别称)
 #   porcelain                        |  瓷件(Git 上层封装命令的别称)
 #   precious-objects repo            |  珍品仓库
+#   promisor                         |  承诺者
 #   prune                            |  清除
 #   pull                             |  拉,拉取
 #   push                             |  推,推送
@@ -140,8 +141,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Git\n"
 "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2020-12-21 07:10+0800\n"
-"PO-Revision-Date: 2020-12-26 21:43+0800\n"
+"POT-Creation-Date: 2021-03-04 22:41+0800\n"
+"PO-Revision-Date: 2021-03-14 23:21+0800\n"
 "Last-Translator: Jiang Xin <worldhello.net@gmail.com>\n"
 "Language-Team: GitHub <https://github.com/jiangxin/git/>\n"
 "Language: zh_CN\n"
@@ -155,9 +156,9 @@ msgstr ""
 msgid "Huh (%s)?"
 msgstr "嗯(%s)?"
 
-#: add-interactive.c:529 add-interactive.c:830 reset.c:65 sequencer.c:3284
-#: sequencer.c:3735 sequencer.c:3890 builtin/rebase.c:1532
-#: builtin/rebase.c:1955
+#: add-interactive.c:529 add-interactive.c:830 reset.c:65 sequencer.c:3292
+#: sequencer.c:3743 sequencer.c:3898 builtin/rebase.c:1538
+#: builtin/rebase.c:1963
 msgid "could not read index"
 msgstr "不能读取索引"
 
@@ -185,7 +186,7 @@ msgstr "更新"
 msgid "could not stage '%s'"
 msgstr "不能暂存 '%s'"
 
-#: add-interactive.c:703 add-interactive.c:892 reset.c:89 sequencer.c:3478
+#: add-interactive.c:703 add-interactive.c:892 reset.c:89 sequencer.c:3486
 msgid "could not write index"
 msgstr "不能写入索引"
 
@@ -343,7 +344,7 @@ msgstr "未缓存"
 
 #: add-interactive.c:1144 apply.c:4987 apply.c:4990 builtin/am.c:2257
 #: builtin/am.c:2260 builtin/bugreport.c:134 builtin/clone.c:124
-#: builtin/fetch.c:147 builtin/merge.c:284 builtin/pull.c:190
+#: builtin/fetch.c:150 builtin/merge.c:285 builtin/pull.c:190
 #: builtin/submodule--helper.c:409 builtin/submodule--helper.c:1818
 #: builtin/submodule--helper.c:1821 builtin/submodule--helper.c:2326
 #: builtin/submodule--helper.c:2329 builtin/submodule--helper.c:2572
@@ -904,7 +905,7 @@ msgstr ""
 msgid "Exiting because of an unresolved conflict."
 msgstr "因为存在未解决的冲突而退出。"
 
-#: advice.c:281 builtin/merge.c:1369
+#: advice.c:281 builtin/merge.c:1370
 msgid "You have not concluded your merge (MERGE_HEAD exists)."
 msgstr "您尚未结束您的合并(存在 MERGE_HEAD)。"
 
@@ -1194,7 +1195,8 @@ msgstr "打补丁失败:%s:%ld"
 msgid "cannot checkout %s"
 msgstr "不能检出 %s"
 
-#: apply.c:3405 apply.c:3416 apply.c:3462 midx.c:73 setup.c:308
+#: apply.c:3405 apply.c:3416 apply.c:3462 midx.c:86 pack-revindex.c:213
+#: setup.c:308
 #, c-format
 msgid "failed to read %s"
 msgstr "无法读取 %s"
@@ -1353,7 +1355,7 @@ msgstr "不能为新建文件 %s 创建后端存储"
 msgid "unable to add cache entry for %s"
 msgstr "无法为 %s 添加缓存条目"
 
-#: apply.c:4374 builtin/bisect--helper.c:524
+#: apply.c:4374 builtin/bisect--helper.c:523
 #, c-format
 msgid "failed to write to '%s'"
 msgstr "写入 '%s' 失败"
@@ -1389,7 +1391,7 @@ msgstr[1] "应用 %%s 个补丁,其中 %d 个被拒绝..."
 msgid "truncating .rej filename to %.*s.rej"
 msgstr "截短 .rej 文件名为 %.*s.rej"
 
-#: apply.c:4576 builtin/fetch.c:927 builtin/fetch.c:1228
+#: apply.c:4576 builtin/fetch.c:933 builtin/fetch.c:1334
 #, c-format
 msgid "cannot open %s"
 msgstr "不能打开 %s"
@@ -1443,7 +1445,7 @@ msgid_plural "%d lines applied after fixing whitespace errors."
 msgstr[0] "修复空白错误后,应用了 %d 行。"
 msgstr[1] "修复空白错误后,应用了 %d 行。"
 
-#: apply.c:4960 builtin/add.c:618 builtin/mv.c:304 builtin/rm.c:406
+#: apply.c:4960 builtin/add.c:626 builtin/mv.c:304 builtin/rm.c:406
 msgid "Unable to write new index file"
 msgstr "无法写入新索引文件"
 
@@ -1511,7 +1513,7 @@ msgstr "如果一个补丁不能应用则尝试三方合并"
 msgid "build a temporary index based on embedded index information"
 msgstr "创建一个临时索引基于嵌入的索引信息"
 
-#: apply.c:5025 builtin/checkout-index.c:182 builtin/ls-files.c:525
+#: apply.c:5025 builtin/checkout-index.c:195 builtin/ls-files.c:540
 msgid "paths are separated with NUL character"
 msgstr "路径以 NUL 字符分隔"
 
@@ -1521,7 +1523,7 @@ msgstr "确保至少匹配 <n> 行上下文"
 
 #: apply.c:5028 builtin/am.c:2245 builtin/interpret-trailers.c:98
 #: builtin/interpret-trailers.c:100 builtin/interpret-trailers.c:102
-#: builtin/pack-objects.c:3562 builtin/rebase.c:1346
+#: builtin/pack-objects.c:3577 builtin/rebase.c:1352
 msgid "action"
 msgstr "动作"
 
@@ -1549,9 +1551,9 @@ msgstr "将拒绝的补丁片段保存在对应的 *.rej 文件中"
 msgid "allow overlapping hunks"
 msgstr "允许重叠的补丁片段"
 
-#: apply.c:5045 builtin/add.c:329 builtin/check-ignore.c:22
-#: builtin/commit.c:1364 builtin/count-objects.c:98 builtin/fsck.c:775
-#: builtin/log.c:2287 builtin/mv.c:123 builtin/read-tree.c:128
+#: apply.c:5045 builtin/add.c:337 builtin/check-ignore.c:22
+#: builtin/commit.c:1364 builtin/count-objects.c:98 builtin/fsck.c:757
+#: builtin/log.c:2286 builtin/mv.c:123 builtin/read-tree.c:128
 msgid "be verbose"
 msgstr "冗长输出"
 
@@ -1638,14 +1640,14 @@ msgstr "git archive --remote <仓库> [--exec <命令>] --list"
 msgid "cannot read %s"
 msgstr "不能读取 %s"
 
-#: archive.c:345 sequencer.c:459 sequencer.c:1736 sequencer.c:2886
-#: sequencer.c:3327 sequencer.c:3436 builtin/am.c:249 builtin/commit.c:786
-#: builtin/merge.c:1138
+#: archive.c:345 sequencer.c:459 sequencer.c:1744 sequencer.c:2894
+#: sequencer.c:3335 sequencer.c:3444 builtin/am.c:249 builtin/commit.c:786
+#: builtin/merge.c:1139
 #, c-format
 msgid "could not read '%s'"
 msgstr "不能读取 '%s'"
 
-#: archive.c:430 builtin/add.c:181 builtin/add.c:594 builtin/rm.c:315
+#: archive.c:430 builtin/add.c:189 builtin/add.c:602 builtin/rm.c:315
 #, c-format
 msgid "pathspec '%s' did not match any files"
 msgstr "路径规格 '%s' 未匹配任何文件"
@@ -1687,7 +1689,7 @@ msgstr "格式"
 msgid "archive format"
 msgstr "归档格式"
 
-#: archive.c:556 builtin/log.c:1765
+#: archive.c:556 builtin/log.c:1764
 msgid "prefix"
 msgstr "前缀"
 
@@ -1695,11 +1697,11 @@ msgstr "前缀"
 msgid "prepend prefix to each pathname in the archive"
 msgstr "为归档中每个路径名加上前缀"
 
-#: archive.c:558 archive.c:561 builtin/blame.c:886 builtin/blame.c:890
-#: builtin/blame.c:891 builtin/commit-tree.c:117 builtin/config.c:135
+#: archive.c:558 archive.c:561 builtin/blame.c:884 builtin/blame.c:888
+#: builtin/blame.c:889 builtin/commit-tree.c:117 builtin/config.c:135
 #: builtin/fast-export.c:1207 builtin/fast-export.c:1209
-#: builtin/fast-export.c:1213 builtin/grep.c:919 builtin/hash-object.c:105
-#: builtin/ls-files.c:561 builtin/ls-files.c:564 builtin/notes.c:412
+#: builtin/fast-export.c:1213 builtin/grep.c:920 builtin/hash-object.c:105
+#: builtin/ls-files.c:576 builtin/ls-files.c:579 builtin/notes.c:412
 #: builtin/notes.c:578 builtin/read-tree.c:123 parse-options.h:190
 msgid "file"
 msgstr "文件"
@@ -1864,12 +1866,12 @@ msgstr "二分查找中:合并基线必须是经过测试的\n"
 msgid "a %s revision is needed"
 msgstr "需要一个 %s 版本"
 
-#: bisect.c:941 builtin/notes.c:177 builtin/tag.c:255
+#: bisect.c:941 builtin/notes.c:177 builtin/tag.c:287
 #, c-format
 msgid "could not create file '%s'"
 msgstr "不能创建文件 '%s'"
 
-#: bisect.c:987 builtin/merge.c:152
+#: bisect.c:987 builtin/merge.c:153
 #, c-format
 msgid "could not read file '%s'"
 msgstr "不能读取文件 '%s'"
@@ -1887,7 +1889,7 @@ msgstr "%s 同时为 %s 和 %s\n"
 #, c-format
 msgid ""
 "No testable commit found.\n"
-"Maybe you started with bad path parameters?\n"
+"Maybe you started with bad path arguments?\n"
 msgstr ""
 "没有发现可测试的提交。\n"
 "可能您在运行时使用了错误的路径参数?\n"
@@ -1921,11 +1923,11 @@ msgstr "不能将 --contents 和最终的提交对象名共用"
 msgid "--reverse and --first-parent together require specified latest commit"
 msgstr "--reverse 和 --first-parent 共用,需要指定最新的提交"
 
-#: blame.c:2821 bundle.c:213 ref-filter.c:2272 remote.c:2031 sequencer.c:2138
-#: sequencer.c:4633 submodule.c:855 builtin/commit.c:1045 builtin/log.c:409
-#: builtin/log.c:1023 builtin/log.c:1625 builtin/log.c:2046 builtin/log.c:2336
-#: builtin/merge.c:423 builtin/pack-objects.c:3380 builtin/pack-objects.c:3395
-#: builtin/shortlog.c:267
+#: blame.c:2821 bundle.c:213 ref-filter.c:2206 remote.c:2041 sequencer.c:2146
+#: sequencer.c:4641 submodule.c:856 builtin/commit.c:1045 builtin/log.c:411
+#: builtin/log.c:1016 builtin/log.c:1624 builtin/log.c:2045 builtin/log.c:2335
+#: builtin/merge.c:424 builtin/pack-objects.c:3395 builtin/pack-objects.c:3410
+#: builtin/shortlog.c:255
 msgid "revision walk setup failed"
 msgstr "版本遍历设置失败"
 
@@ -2097,7 +2099,7 @@ msgstr "'%s' 不像是一个 v2 或 v3 版本的归档包文件"
 msgid "unrecognized header: %s%s (%d)"
 msgstr "未能识别的包头:%s%s (%d)"
 
-#: bundle.c:136 rerere.c:480 rerere.c:690 sequencer.c:2390 sequencer.c:3176
+#: bundle.c:136 rerere.c:464 rerere.c:674 sequencer.c:2398 sequencer.c:3184
 #: builtin/commit.c:814
 #, c-format
 msgid "could not open '%s'"
@@ -2141,295 +2143,308 @@ msgstr "不能生成 pack-objects 进程"
 msgid "pack-objects died"
 msgstr "pack-objects 终止"
 
-#: bundle.c:379
-msgid "rev-list died"
-msgstr "rev-list 终止"
-
-#: bundle.c:428
+#: bundle.c:386
 #, c-format
 msgid "ref '%s' is excluded by the rev-list options"
 msgstr "引用 '%s' 被 rev-list 选项排除"
 
-#: bundle.c:498
+#: bundle.c:490
 #, c-format
 msgid "unsupported bundle version %d"
 msgstr "不支持的归档包版本 %d"
 
-#: bundle.c:500
+#: bundle.c:492
 #, c-format
 msgid "cannot write bundle version %d with algorithm %s"
 msgstr "不能写入,归档包版本 %d 不支持算法 %s"
 
-#: bundle.c:522 builtin/log.c:209 builtin/log.c:1927 builtin/shortlog.c:408
+#: bundle.c:510 builtin/log.c:210 builtin/log.c:1926 builtin/shortlog.c:396
 #, c-format
 msgid "unrecognized argument: %s"
 msgstr "未能识别的参数:%s"
 
-#: bundle.c:530
+#: bundle.c:539
 msgid "Refusing to create empty bundle."
 msgstr "不能创建空的归档包。"
 
-#: bundle.c:540
+#: bundle.c:549
 #, c-format
 msgid "cannot create '%s'"
 msgstr "不能创建 '%s'"
 
-#: bundle.c:565
+#: bundle.c:574
 msgid "index-pack died"
 msgstr "index-pack 终止"
 
+#: chunk-format.c:113
+msgid "terminating chunk id appears earlier than expected"
+msgstr "终止块 ID 比预期更早出现"
+
+#: chunk-format.c:122
+#, c-format
+msgid "improper chunk offset(s) %<PRIx64> and %<PRIx64>"
+msgstr "不正确的块偏移 %<PRIx64> 和 %<PRIx64>"
+
+#: chunk-format.c:129
+#, c-format
+msgid "duplicate chunk ID %<PRIx32> found"
+msgstr "发现重复的块ID %<PRIx32>"
+
+#: chunk-format.c:143
+#, c-format
+msgid "final chunk has non-zero id %<PRIx32>"
+msgstr "最终块有非零 ID %<PRIx32>"
+
 #: color.c:329
 #, c-format
 msgid "invalid color value: %.*s"
 msgstr "无效的颜色值:%.*s"
 
-#: commit-graph.c:188 midx.c:47
+#: commit-graph.c:197 midx.c:46
 msgid "invalid hash version"
 msgstr "无效的哈希版本"
 
-#: commit-graph.c:246
+#: commit-graph.c:255
 msgid "commit-graph file is too small"
 msgstr "提交图形文件太小"
 
-#: commit-graph.c:311
+#: commit-graph.c:348
 #, c-format
 msgid "commit-graph signature %X does not match signature %X"
 msgstr "提交图形签名 %X 和签名 %X 不匹配"
 
-#: commit-graph.c:318
+#: commit-graph.c:355
 #, c-format
 msgid "commit-graph version %X does not match version %X"
 msgstr "提交图形版本 %X 和版本 %X 不匹配"
 
-#: commit-graph.c:325
+#: commit-graph.c:362
 #, c-format
 msgid "commit-graph hash version %X does not match version %X"
 msgstr "提交图形哈希版本 %X 和版本 %X 不匹配"
 
-#: commit-graph.c:342
+#: commit-graph.c:379
 #, c-format
 msgid "commit-graph file is too small to hold %u chunks"
 msgstr "提交图形文件太小,容不下 %u 个块"
 
-#: commit-graph.c:361
-#, c-format
-msgid "commit-graph improper chunk offset %08x%08x"
-msgstr "提交图形不正确的块偏移 %08x%08x"
-
-#: commit-graph.c:433
-#, c-format
-msgid "commit-graph chunk id %08x appears multiple times"
-msgstr "提交图形块 id %08x 出现了多次"
-
-#: commit-graph.c:499
+#: commit-graph.c:472
 msgid "commit-graph has no base graphs chunk"
 msgstr "提交图形没有基础图形块"
 
-#: commit-graph.c:509
+#: commit-graph.c:482
 msgid "commit-graph chain does not match"
 msgstr "提交图形链不匹配"
 
-#: commit-graph.c:557
+#: commit-graph.c:530
 #, c-format
 msgid "invalid commit-graph chain: line '%s' not a hash"
 msgstr "无效的提交图形链:行 '%s' 不是一个哈希值"
 
-#: commit-graph.c:581
+#: commit-graph.c:554
 msgid "unable to find all commit-graph files"
 msgstr "无法找到所有提交图形文件"
 
-#: commit-graph.c:721 commit-graph.c:785
+#: commit-graph.c:735 commit-graph.c:772
 msgid "invalid commit position. commit-graph is likely corrupt"
 msgstr "无效的提交位置。提交图形可能已损坏"
 
-#: commit-graph.c:742
+#: commit-graph.c:756
 #, c-format
 msgid "could not find commit %s"
 msgstr "无法找到提交 %s"
 
-#: commit-graph.c:1036 builtin/am.c:1292
+#: commit-graph.c:789
+msgid "commit-graph requires overflow generation data but has none"
+msgstr "提交图需要溢出世代数据,但是没有"
+
+#: commit-graph.c:1065 builtin/am.c:1292
 #, c-format
 msgid "unable to parse commit %s"
 msgstr "不能解析提交 %s"
 
-#: commit-graph.c:1252 builtin/pack-objects.c:2864
+#: commit-graph.c:1327 builtin/pack-objects.c:2872
 #, c-format
 msgid "unable to get type of object %s"
 msgstr "无法获得对象 %s 类型"
 
-#: commit-graph.c:1283
+#: commit-graph.c:1358
 msgid "Loading known commits in commit graph"
 msgstr "正在加载提交图中的已知提交"
 
-#: commit-graph.c:1300
+#: commit-graph.c:1375
 msgid "Expanding reachable commits in commit graph"
 msgstr "正在扩展提交图中的可达提交"
 
-#: commit-graph.c:1320
+#: commit-graph.c:1395
 msgid "Clearing commit marks in commit graph"
 msgstr "正在清除提交图中的提交标记"
 
-#: commit-graph.c:1339
+#: commit-graph.c:1414
+msgid "Computing commit graph topological levels"
+msgstr "正在计算提交图拓扑级别"
+
+#: commit-graph.c:1467
 msgid "Computing commit graph generation numbers"
 msgstr "正在计算提交图世代数字"
 
-#: commit-graph.c:1406
+#: commit-graph.c:1548
 msgid "Computing commit changed paths Bloom filters"
 msgstr "计算提交变更路径的布隆过滤器"
 
-#: commit-graph.c:1483
+#: commit-graph.c:1625
 msgid "Collecting referenced commits"
 msgstr "正在收集引用的提交"
 
-#: commit-graph.c:1508
+#: commit-graph.c:1650
 #, c-format
 msgid "Finding commits for commit graph in %d pack"
 msgid_plural "Finding commits for commit graph in %d packs"
 msgstr[0] "正在 %d 个包中查找提交图的提交"
 msgstr[1] "正在 %d 个包中查找提交图的提交"
 
-#: commit-graph.c:1521
+#: commit-graph.c:1663
 #, c-format
 msgid "error adding pack %s"
 msgstr "添加包 %s 出错"
 
-#: commit-graph.c:1525
+#: commit-graph.c:1667
 #, c-format
 msgid "error opening index for %s"
 msgstr "为 %s 打开索引出错"
 
-#: commit-graph.c:1562
+#: commit-graph.c:1704
 msgid "Finding commits for commit graph among packed objects"
 msgstr "正在打包对象中查找提交图的提交"
 
-#: commit-graph.c:1580
+#: commit-graph.c:1722
 msgid "Finding extra edges in commit graph"
 msgstr "正在查找提交图中额外的边"
 
-#: commit-graph.c:1628
+#: commit-graph.c:1771
 msgid "failed to write correct number of base graph ids"
 msgstr "无法写入正确数量的基础图形 ID"
 
-#: commit-graph.c:1670 midx.c:819
+#: commit-graph.c:1802 midx.c:794
 #, c-format
 msgid "unable to create leading directories of %s"
 msgstr "不能为 %s 创建先导目录"
 
-#: commit-graph.c:1683
+#: commit-graph.c:1815
 msgid "unable to create temporary graph layer"
 msgstr "无法创建临时图层"
 
-#: commit-graph.c:1688
+#: commit-graph.c:1820
 #, c-format
 msgid "unable to adjust shared permissions for '%s'"
 msgstr "无法为 '%s' 调整共享权限"
 
-#: commit-graph.c:1758
+#: commit-graph.c:1879
 #, c-format
 msgid "Writing out commit graph in %d pass"
 msgid_plural "Writing out commit graph in %d passes"
 msgstr[0] "正在用 %d 步写出提交图"
 msgstr[1] "正在用 %d 步写出提交图"
 
-#: commit-graph.c:1803
+#: commit-graph.c:1915
 msgid "unable to open commit-graph chain file"
 msgstr "无法打开提交图形链文件"
 
-#: commit-graph.c:1819
+#: commit-graph.c:1931
 msgid "failed to rename base commit-graph file"
 msgstr "无法重命名基础提交图形文件"
 
-#: commit-graph.c:1839
+#: commit-graph.c:1951
 msgid "failed to rename temporary commit-graph file"
 msgstr "无法重命名临时提交图形文件"
 
-#: commit-graph.c:1965
+#: commit-graph.c:2084
 msgid "Scanning merged commits"
 msgstr "正在扫描合并提交"
 
-#: commit-graph.c:2009
+#: commit-graph.c:2128
 msgid "Merging commit-graph"
 msgstr "正在合并提交图形"
 
-#: commit-graph.c:2115
+#: commit-graph.c:2235
 msgid "attempting to write a commit-graph, but 'core.commitGraph' is disabled"
 msgstr "正尝试写提交图,但是 'core.commitGraph' 被禁用"
 
-#: commit-graph.c:2214
+#: commit-graph.c:2342
 msgid "too many commits to write graph"
 msgstr "提交太多不能画图"
 
-#: commit-graph.c:2307
+#: commit-graph.c:2440
 msgid "the commit-graph file has incorrect checksum and is likely corrupt"
 msgstr "提交图文件的校验码错误,可能已经损坏"
 
-#: commit-graph.c:2317
+#: commit-graph.c:2450
 #, c-format
 msgid "commit-graph has incorrect OID order: %s then %s"
 msgstr "提交图形的对象 ID 顺序不正确:%s 然后 %s"
 
-#: commit-graph.c:2327 commit-graph.c:2342
+#: commit-graph.c:2460 commit-graph.c:2475
 #, c-format
 msgid "commit-graph has incorrect fanout value: fanout[%d] = %u != %u"
 msgstr "提交图形有不正确的扇出值:fanout[%d] = %u != %u"
 
-#: commit-graph.c:2334
+#: commit-graph.c:2467
 #, c-format
 msgid "failed to parse commit %s from commit-graph"
 msgstr "无法从提交图形中解析提交 %s"
 
-#: commit-graph.c:2352
+#: commit-graph.c:2485
 msgid "Verifying commits in commit graph"
 msgstr "正在校验提交图中的提交"
 
-#: commit-graph.c:2367
+#: commit-graph.c:2500
 #, c-format
 msgid "failed to parse commit %s from object database for commit-graph"
 msgstr "无法从提交图形的对象库中解析提交 %s"
 
-#: commit-graph.c:2374
+#: commit-graph.c:2507
 #, c-format
 msgid "root tree OID for commit %s in commit-graph is %s != %s"
 msgstr "提交图形中的提交 %s 的根树对象 ID 是 %s != %s"
 
-#: commit-graph.c:2384
+#: commit-graph.c:2517
 #, c-format
 msgid "commit-graph parent list for commit %s is too long"
 msgstr "提交 %s 的提交图形父提交列表太长了"
 
-#: commit-graph.c:2393
+#: commit-graph.c:2526
 #, c-format
 msgid "commit-graph parent for %s is %s != %s"
 msgstr "%s 的提交图形父提交是 %s != %s"
 
-#: commit-graph.c:2407
+#: commit-graph.c:2540
 #, c-format
 msgid "commit-graph parent list for commit %s terminates early"
 msgstr "提交 %s 的提交图形父提交列表过早终止"
 
-#: commit-graph.c:2412
+#: commit-graph.c:2545
 #, c-format
 msgid ""
 "commit-graph has generation number zero for commit %s, but non-zero elsewhere"
 msgstr "提交图形中提交 %s 的世代号是零,但其它地方非零"
 
-#: commit-graph.c:2416
+#: commit-graph.c:2549
 #, c-format
 msgid ""
 "commit-graph has non-zero generation number for commit %s, but zero elsewhere"
 msgstr "提交图形中提交 %s 的世代号非零,但其它地方是零"
 
-#: commit-graph.c:2432
+#: commit-graph.c:2566
 #, c-format
-msgid "commit-graph generation for commit %s is %u != %u"
-msgstr "提交图形中的提交 %s 的世代号是 %u != %u"
+msgid "commit-graph generation for commit %s is %<PRIuMAX> < %<PRIuMAX>"
+msgstr "提交图形中的提交 %s 的世代号是 %<PRIuMAX> < %<PRIuMAX>"
 
-#: commit-graph.c:2438
+#: commit-graph.c:2572
 #, c-format
 msgid "commit date for commit %s in commit-graph is %<PRIuMAX> != %<PRIuMAX>"
 msgstr "提交图形中提交 %s 的提交日期是 %<PRIuMAX> != %<PRIuMAX>"
 
-#: commit.c:52 sequencer.c:2879 builtin/am.c:359 builtin/am.c:403
+#: commit.c:52 sequencer.c:2887 builtin/am.c:359 builtin/am.c:403
 #: builtin/am.c:1371 builtin/am.c:2018 builtin/replace.c:457
 #, c-format
 msgid "could not parse %s"
@@ -2460,27 +2475,27 @@ msgstr ""
 "设置 \"git config advice.graftFileDeprecated false\"\n"
 "可关闭本消息"
 
-#: commit.c:1172
+#: commit.c:1223
 #, c-format
 msgid "Commit %s has an untrusted GPG signature, allegedly by %s."
 msgstr "提交 %s 有一个非可信的声称来自 %s 的 GPG 签名。"
 
-#: commit.c:1176
+#: commit.c:1227
 #, c-format
 msgid "Commit %s has a bad GPG signature allegedly by %s."
 msgstr "提交 %s 有一个错误的声称来自 %s 的 GPG 签名。"
 
-#: commit.c:1179
+#: commit.c:1230
 #, c-format
 msgid "Commit %s does not have a GPG signature."
 msgstr "提交 %s 没有 GPG 签名。"
 
-#: commit.c:1182
+#: commit.c:1233
 #, c-format
 msgid "Commit %s has a good GPG signature by %s\n"
 msgstr "提交 %s 有一个来自 %s 的好的 GPG 签名。\n"
 
-#: commit.c:1436
+#: commit.c:1487
 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"
@@ -2494,7 +2509,7 @@ msgstr ""
 msgid "memory exhausted"
 msgstr "内存耗尽"
 
-#: config.c:125
+#: config.c:126
 #, c-format
 msgid ""
 "exceeded maximum include depth (%d) while including\n"
@@ -2509,289 +2524,333 @@ msgstr ""
 "\t%2$s\n"
 "这可能是因为循环包含。"
 
-#: config.c:141
+#: config.c:142
 #, c-format
 msgid "could not expand include path '%s'"
 msgstr "无法扩展包含路径 '%s'"
 
-#: config.c:152
+#: config.c:153
 msgid "relative config includes must come from files"
 msgstr "相对路径的配置文件引用必须来自于文件"
 
-#: config.c:198
+#: config.c:199
 msgid "relative config include conditionals must come from files"
 msgstr "相对路径的配置文件条件引用必须来自于文件"
 
-#: config.c:378
+#: config.c:396
+#, c-format
+msgid "invalid config format: %s"
+msgstr "无效的配置格式:%s"
+
+#: config.c:400
+#, c-format
+msgid "missing environment variable name for configuration '%.*s'"
+msgstr "配置 '%.*s' 缺少环境变量名称"
+
+#: config.c:405
+#, c-format
+msgid "missing environment variable '%s' for configuration '%.*s'"
+msgstr "缺少环境变量 '%s' 于配置 '%.*s' "
+
+#: config.c:442
 #, c-format
 msgid "key does not contain a section: %s"
 msgstr "键名没有包含一个小节名称:%s"
 
-#: config.c:384
+#: config.c:448
 #, c-format
 msgid "key does not contain variable name: %s"
 msgstr "键名没有包含变量名:%s"
 
-#: config.c:408 sequencer.c:2580
+#: config.c:472 sequencer.c:2588
 #, c-format
 msgid "invalid key: %s"
 msgstr "无效键名:%s"
 
-#: config.c:414
+#: config.c:478
 #, c-format
 msgid "invalid key (newline): %s"
 msgstr "无效键名(有换行符):%s"
 
-#: config.c:450 config.c:462
+#: config.c:511
+msgid "empty config key"
+msgstr "空的配置键名"
+
+#: config.c:529 config.c:541
 #, c-format
 msgid "bogus config parameter: %s"
 msgstr "伪配置参数:%s"
 
-#: config.c:497
+#: config.c:555 config.c:572 config.c:579 config.c:588
 #, c-format
 msgid "bogus format in %s"
 msgstr "%s 中格式错误"
 
-#: config.c:836
+#: config.c:622
+#, c-format
+msgid "bogus count in %s"
+msgstr "%s 中错误计数"
+
+#: config.c:626
+#, c-format
+msgid "too many entries in %s"
+msgstr "%s 中太多的条目"
+
+#: config.c:636
+#, c-format
+msgid "missing config key %s"
+msgstr "缺失配置键名 %s"
+
+#: config.c:644
+#, c-format
+msgid "missing config value %s"
+msgstr "缺失配置取值 %s"
+
+#: config.c:995
 #, c-format
 msgid "bad config line %d in blob %s"
 msgstr "数据对象 %2$s 中错误的配置行 %1$d"
 
-#: config.c:840
+#: config.c:999
 #, c-format
 msgid "bad config line %d in file %s"
 msgstr "文件 %2$s 中错误的配置行 %1$d"
 
-#: config.c:844
+#: config.c:1003
 #, c-format
 msgid "bad config line %d in standard input"
 msgstr "标准输入中错误的配置行 %d"
 
-#: config.c:848
+#: config.c:1007
 #, c-format
 msgid "bad config line %d in submodule-blob %s"
 msgstr "子模组数据对象 %2$s 中错误的配置行 %1$d"
 
-#: config.c:852
+#: config.c:1011
 #, c-format
 msgid "bad config line %d in command line %s"
 msgstr "命令行 %2$s 中错误的配置行 %1$d"
 
-#: config.c:856
+#: config.c:1015
 #, c-format
 msgid "bad config line %d in %s"
 msgstr "在 %2$s 中错误的配置行 %1$d"
 
-#: config.c:993
+#: config.c:1152
 msgid "out of range"
 msgstr "超出范围"
 
-#: config.c:993
+#: config.c:1152
 msgid "invalid unit"
 msgstr "无效的单位"
 
-#: config.c:994
+#: config.c:1153
 #, c-format
 msgid "bad numeric config value '%s' for '%s': %s"
 msgstr "配置变量 '%2$s' 的数字取值 '%1$s' 设置错误:%3$s"
 
-#: config.c:1013
+#: config.c:1163
 #, 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:1016
+#: config.c:1166
 #, 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:1019
+#: config.c:1169
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in standard input: %s"
 msgstr "标准输入中配置变量 '%2$s' 错误的取值 '%1$s':%3$s"
 
-#: config.c:1022
+#: config.c:1172
 #, 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:1025
+#: config.c:1175
 #, 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:1028
+#: config.c:1178
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in %s: %s"
 msgstr "在 %3$s 中配置变量 '%2$s' 错误的取值 '%1$s':%4$s"
 
-#: config.c:1123
+#: config.c:1194
+#, c-format
+msgid "bad boolean config value '%s' for '%s'"
+msgstr "'%2$s' 的错误的布尔取值 '%1$s'"
+
+#: config.c:1289
 #, c-format
 msgid "failed to expand user dir in: '%s'"
 msgstr "无法扩展用户目录:'%s'"
 
-#: config.c:1132
+#: config.c:1298
 #, c-format
 msgid "'%s' for '%s' is not a valid timestamp"
 msgstr "'%2$s' 的值 '%1$s' 不是一个有效的时间戳"
 
-#: config.c:1223
+#: config.c:1391
 #, c-format
 msgid "abbrev length out of range: %d"
 msgstr "缩写长度超出范围:%d"
 
-#: config.c:1237 config.c:1248
+#: config.c:1405 config.c:1416
 #, c-format
 msgid "bad zlib compression level %d"
 msgstr "错误的 zlib 压缩级别 %d"
 
-#: config.c:1340
+#: config.c:1508
 msgid "core.commentChar should only be one character"
 msgstr "core.commentChar 应该是一个字符"
 
-#: config.c:1373
+#: config.c:1541
 #, c-format
 msgid "invalid mode for object creation: %s"
 msgstr "无效的对象创建模式:%s"
 
-#: config.c:1445
+#: config.c:1613
 #, c-format
 msgid "malformed value for %s"
 msgstr "%s 的取值格式错误"
 
-#: config.c:1471
+#: config.c:1639
 #, c-format
 msgid "malformed value for %s: %s"
 msgstr "%s 的取值格式错误:%s"
 
-#: config.c:1472
+#: config.c:1640
 msgid "must be one of nothing, matching, simple, upstream or current"
 msgstr "必须是其中之一:nothing、matching、simple、upstream 或 current"
 
-#: config.c:1533 builtin/pack-objects.c:3649
+#: config.c:1701 builtin/pack-objects.c:3666
 #, c-format
 msgid "bad pack compression level %d"
 msgstr "错误的打包压缩级别 %d"
 
-#: config.c:1655
+#: config.c:1823
 #, c-format
 msgid "unable to load config blob object '%s'"
 msgstr "无法从数据对象 '%s' 加载配置"
 
-#: config.c:1658
+#: config.c:1826
 #, c-format
 msgid "reference '%s' does not point to a blob"
 msgstr "引用 '%s' 没有指向一个数据对象"
 
-#: config.c:1675
+#: config.c:1843
 #, c-format
 msgid "unable to resolve config blob '%s'"
 msgstr "不能解析配置对象 '%s'"
 
-#: config.c:1705
+#: config.c:1873
 #, c-format
 msgid "failed to parse %s"
 msgstr "解析 %s 失败"
 
-#: config.c:1759
+#: config.c:1927
 msgid "unable to parse command-line config"
 msgstr "无法解析命令行中的配置"
 
-#: config.c:2122
+#: config.c:2290
 msgid "unknown error occurred while reading the configuration files"
 msgstr "在读取配置文件时遇到未知错误"
 
-#: config.c:2296
+#: config.c:2464
 #, c-format
 msgid "Invalid %s: '%s'"
 msgstr "无效 %s:'%s'"
 
-#: config.c:2341
+#: config.c:2509
 #, c-format
 msgid "splitIndex.maxPercentChange value '%d' should be between 0 and 100"
 msgstr "splitIndex.maxPercentChange 的取值 '%d' 应该介于 0 和 100 之间"
 
-#: config.c:2387
+#: config.c:2555
 #, c-format
 msgid "unable to parse '%s' from command-line config"
 msgstr "无法解析命令行配置中的 '%s'"
 
-#: config.c:2389
+#: config.c:2557
 #, c-format
 msgid "bad config variable '%s' in file '%s' at line %d"
 msgstr "在文件 '%2$s' 的第 %3$d 行发现错误的配置变量 '%1$s'"
 
-#: config.c:2473
+#: config.c:2641
 #, c-format
 msgid "invalid section name '%s'"
 msgstr "无效的小节名称 '%s'"
 
-#: config.c:2505
+#: config.c:2673
 #, c-format
 msgid "%s has multiple values"
 msgstr "%s 有多个取值"
 
-#: config.c:2534
+#: config.c:2702
 #, c-format
 msgid "failed to write new configuration file %s"
 msgstr "写入新的配置文件 %s 失败"
 
-#: config.c:2786 config.c:3112
+#: config.c:2954 config.c:3280
 #, c-format
 msgid "could not lock config file %s"
 msgstr "不能锁定配置文件 %s"
 
-#: config.c:2797
+#: config.c:2965
 #, c-format
 msgid "opening %s"
 msgstr "打开 %s"
 
-#: config.c:2834 builtin/config.c:361
+#: config.c:3002 builtin/config.c:361
 #, c-format
 msgid "invalid pattern: %s"
 msgstr "无效模式:%s"
 
-#: config.c:2859
+#: config.c:3027
 #, c-format
 msgid "invalid config file %s"
 msgstr "无效的配置文件 %s"
 
-#: config.c:2872 config.c:3125
+#: config.c:3040 config.c:3293
 #, c-format
 msgid "fstat on %s failed"
 msgstr "对 %s 调用 fstat 失败"
 
-#: config.c:2883
+#: config.c:3051
 #, c-format
 msgid "unable to mmap '%s'"
 msgstr "不能 mmap '%s'"
 
-#: config.c:2892 config.c:3130
+#: config.c:3060 config.c:3298
 #, c-format
 msgid "chmod on %s failed"
 msgstr "对 %s 调用 chmod 失败"
 
-#: config.c:2977 config.c:3227
+#: config.c:3145 config.c:3395
 #, c-format
 msgid "could not write config file %s"
 msgstr "不能写入配置文件 %s"
 
-#: config.c:3011
+#: config.c:3179
 #, c-format
 msgid "could not set '%s' to '%s'"
 msgstr "不能设置 '%s' 为 '%s'"
 
-#: config.c:3013 builtin/remote.c:657 builtin/remote.c:855 builtin/remote.c:863
+#: config.c:3181 builtin/remote.c:657 builtin/remote.c:855 builtin/remote.c:863
 #, c-format
 msgid "could not unset '%s'"
 msgstr "不能取消设置 '%s'"
 
-#: config.c:3103
+#: config.c:3271
 #, c-format
 msgid "invalid section name: %s"
 msgstr "无效的小节名称:%s"
 
-#: config.c:3270
+#: config.c:3438
 #, c-format
 msgid "missing value for '%s'"
 msgstr "%s 的取值缺失"
@@ -2852,45 +2911,45 @@ msgstr "无效数据包"
 msgid "protocol error: unexpected '%s'"
 msgstr "协议错误:意外的 '%s'"
 
-#: connect.c:473
+#: connect.c:497
 #, c-format
 msgid "unknown object format '%s' specified by server"
 msgstr "服务器给出未知的对象格式 '%s'"
 
-#: connect.c:500
+#: connect.c:526
 #, c-format
 msgid "invalid ls-refs response: %s"
 msgstr "无效的 ls-refs 响应:%s"
 
-#: connect.c:504
+#: connect.c:530
 msgid "expected flush after ref listing"
 msgstr "在引用列表之后应该有一个 flush 包"
 
-#: connect.c:507
+#: connect.c:533
 msgid "expected response end packet after ref listing"
 msgstr "在引用列表之后应该有响应结束包"
 
-#: connect.c:640
+#: connect.c:666
 #, c-format
 msgid "protocol '%s' is not supported"
 msgstr "不支持 '%s' 协议"
 
-#: connect.c:691
+#: connect.c:717
 msgid "unable to set SO_KEEPALIVE on socket"
 msgstr "无法为 socket 设置 SO_KEEPALIVE"
 
-#: connect.c:731 connect.c:794
+#: connect.c:757 connect.c:820
 #, c-format
 msgid "Looking up %s ... "
 msgstr "查找 %s ..."
 
-#: connect.c:735
+#: connect.c:761
 #, c-format
 msgid "unable to look up %s (port %s) (%s)"
 msgstr "无法查找 %s(端口 %s)(%s)"
 
 #. TRANSLATORS: this is the end of "Looking up %s ... "
-#: connect.c:739 connect.c:810
+#: connect.c:765 connect.c:836
 #, c-format
 msgid ""
 "done.\n"
@@ -2899,7 +2958,7 @@ msgstr ""
 "完成。\n"
 "连接到 %s(端口 %s)... "
 
-#: connect.c:761 connect.c:838
+#: connect.c:787 connect.c:864
 #, c-format
 msgid ""
 "unable to connect to %s:\n"
@@ -2909,61 +2968,65 @@ msgstr ""
 "%s"
 
 #. TRANSLATORS: this is the end of "Connecting to %s (port %s) ... "
-#: connect.c:767 connect.c:844
+#: connect.c:793 connect.c:870
 msgid "done."
 msgstr "完成。"
 
-#: connect.c:798
+#: connect.c:824
 #, c-format
 msgid "unable to look up %s (%s)"
 msgstr "无法查找 %s(%s)"
 
-#: connect.c:804
+#: connect.c:830
 #, c-format
 msgid "unknown port %s"
 msgstr "未知端口 %s"
 
-#: connect.c:941 connect.c:1271
+#: connect.c:967 connect.c:1299
 #, c-format
 msgid "strange hostname '%s' blocked"
 msgstr "已阻止奇怪的主机名 '%s'"
 
-#: connect.c:943
+#: connect.c:969
 #, c-format
 msgid "strange port '%s' blocked"
 msgstr "已阻止奇怪的端口号 '%s'"
 
-#: connect.c:953
+#: connect.c:979
 #, c-format
 msgid "cannot start proxy %s"
 msgstr "不能启动代理 %s"
 
-#: connect.c:1024
+#: connect.c:1050
 msgid "no path specified; see 'git help pull' for valid url syntax"
 msgstr "未指定路径,执行 'git help pull' 查看有效的 url 语法"
 
-#: connect.c:1219
+#: connect.c:1190
+msgid "newline is forbidden in git:// hosts and repo paths"
+msgstr "在 git:// 主机和仓库路径中禁止使用换行符"
+
+#: connect.c:1247
 msgid "ssh variant 'simple' does not support -4"
 msgstr "ssh 变体 'simple' 不支持 -4"
 
-#: connect.c:1231
+#: connect.c:1259
 msgid "ssh variant 'simple' does not support -6"
 msgstr "ssh 变体 'simple' 不支持 -6"
 
-#: connect.c:1248
+#: connect.c:1276
 msgid "ssh variant 'simple' does not support setting port"
 msgstr "ssh 变体 'simple' 不支持设置端口"
 
-#: connect.c:1360
+#: connect.c:1388
 #, c-format
 msgid "strange pathname '%s' blocked"
 msgstr "已阻止奇怪的路径名 '%s'"
 
-#: connect.c:1408
+#: connect.c:1436
 msgid "unable to fork"
 msgstr "无法 fork"
 
-#: connected.c:108 builtin/fsck.c:209 builtin/prune.c:45
+#: connected.c:108 builtin/fsck.c:191 builtin/prune.c:45
 msgid "Checking connectivity"
 msgstr "正在检查连通性"
 
@@ -3223,6 +3286,11 @@ msgstr "来自 config 的数据岛正则表达式有太多的捕获组(最多
 msgid "Marked %d islands, done.\n"
 msgstr "已标记 %d 个数据岛,结束。\n"
 
+#: diff-merges.c:70
+#, c-format
+msgid "unknown value for --diff-merges: %s"
+msgstr "未知的 --diff-merges 取值:%s"
+
 #: diff-lib.c:534
 msgid "--merge-base does not work with ranges"
 msgstr "--merge-base 不适用于范围"
@@ -3307,30 +3375,30 @@ msgstr ""
 msgid "external diff died, stopping at %s"
 msgstr "外部 diff 退出,停止在 %s"
 
-#: diff.c:4625
+#: diff.c:4628
 msgid "--name-only, --name-status, --check and -s are mutually exclusive"
 msgstr "--name-only、--name-status、--check 和 -s 是互斥的"
 
-#: diff.c:4628
+#: diff.c:4631
 msgid "-G, -S and --find-object are mutually exclusive"
 msgstr "-G、-S 和 --find-object 是互斥的"
 
-#: diff.c:4707
+#: diff.c:4710
 msgid "--follow requires exactly one pathspec"
 msgstr "--follow 明确要求只跟一个路径规格"
 
-#: diff.c:4755
+#: diff.c:4758
 #, c-format
 msgid "invalid --stat value: %s"
 msgstr "无效的 --stat 值:%s"
 
-#: diff.c:4760 diff.c:4765 diff.c:4770 diff.c:4775 diff.c:5303
+#: diff.c:4763 diff.c:4768 diff.c:4773 diff.c:4778 diff.c:5306
 #: parse-options.c:197 parse-options.c:201 builtin/commit-graph.c:180
 #, c-format
 msgid "%s expects a numerical value"
 msgstr "%s 期望一个数字值"
 
-#: diff.c:4792
+#: diff.c:4795
 #, c-format
 msgid ""
 "Failed to parse --dirstat/-X option parameter:\n"
@@ -3339,200 +3407,200 @@ msgstr ""
 "无法解析 --dirstat/-X 选项的参数:\n"
 "%s"
 
-#: diff.c:4877
+#: diff.c:4880
 #, c-format
 msgid "unknown change class '%c' in --diff-filter=%s"
 msgstr "--diff-filter=%2$s 中未知的变更类 '%1$c'"
 
-#: diff.c:4901
+#: diff.c:4904
 #, c-format
 msgid "unknown value after ws-error-highlight=%.*s"
 msgstr "ws-error-highlight=%.*s 之后未知的值"
 
-#: diff.c:4915
+#: diff.c:4918
 #, c-format
 msgid "unable to resolve '%s'"
 msgstr "不能解析 '%s'"
 
-#: diff.c:4965 diff.c:4971
+#: diff.c:4968 diff.c:4974
 #, c-format
 msgid "%s expects <n>/<m> form"
 msgstr "%s 期望 <n>/<m> 格式"
 
-#: diff.c:4983
+#: diff.c:4986
 #, c-format
 msgid "%s expects a character, got '%s'"
 msgstr "%s 期望一个字符,得到 '%s'"
 
-#: diff.c:5004
+#: diff.c:5007
 #, c-format
 msgid "bad --color-moved argument: %s"
 msgstr "坏的 --color-moved 参数:%s"
 
-#: diff.c:5023
+#: diff.c:5026
 #, c-format
 msgid "invalid mode '%s' in --color-moved-ws"
 msgstr "--color-moved-ws 中的无效模式 '%s' "
 
-#: diff.c:5063
+#: diff.c:5066
 msgid ""
 "option diff-algorithm accepts \"myers\", \"minimal\", \"patience\" and "
 "\"histogram\""
 msgstr ""
 "diff-algorithm 选项有 \"myers\"、\"minimal\"、\"patience\" 和 \"histogram\""
 
-#: diff.c:5099 diff.c:5119
+#: diff.c:5102 diff.c:5122
 #, c-format
 msgid "invalid argument to %s"
 msgstr "%s 的参数无效"
 
-#: diff.c:5223
+#: diff.c:5226
 #, c-format
 msgid "invalid regex given to -I: '%s'"
 msgstr "选项 -I 的正则表达式无效:'%s'"
 
-#: diff.c:5272
+#: diff.c:5275
 #, c-format
 msgid "failed to parse --submodule option parameter: '%s'"
 msgstr "无法解析 --submodule 选项的参数:'%s'"
 
-#: diff.c:5328
+#: diff.c:5331
 #, c-format
 msgid "bad --word-diff argument: %s"
 msgstr "坏的 --word-diff 参数:%s"
 
-#: diff.c:5351
+#: diff.c:5367
 msgid "Diff output format options"
 msgstr "差异输出格式化选项"
 
-#: diff.c:5353 diff.c:5359
+#: diff.c:5369 diff.c:5375
 msgid "generate patch"
 msgstr "生成补丁"
 
-#: diff.c:5356 builtin/log.c:178
+#: diff.c:5372 builtin/log.c:179
 msgid "suppress diff output"
 msgstr "不显示差异输出"
 
-#: diff.c:5361 diff.c:5475 diff.c:5482
+#: diff.c:5377 diff.c:5491 diff.c:5498
 msgid "<n>"
 msgstr "<n>"
 
-#: diff.c:5362 diff.c:5365
+#: diff.c:5378 diff.c:5381
 msgid "generate diffs with <n> lines context"
 msgstr "生成含 <n> 行上下文的差异"
 
-#: diff.c:5367
+#: diff.c:5383
 msgid "generate the diff in raw format"
 msgstr "生成原始格式的差异"
 
-#: diff.c:5370
+#: diff.c:5386
 msgid "synonym for '-p --raw'"
 msgstr "和 '-p --raw' 同义"
 
-#: diff.c:5374
+#: diff.c:5390
 msgid "synonym for '-p --stat'"
 msgstr "和 '-p --stat' 同义"
 
-#: diff.c:5378
+#: diff.c:5394
 msgid "machine friendly --stat"
 msgstr "机器友好的 --stat"
 
-#: diff.c:5381
+#: diff.c:5397
 msgid "output only the last line of --stat"
 msgstr "只输出 --stat 的最后一行"
 
-#: diff.c:5383 diff.c:5391
+#: diff.c:5399 diff.c:5407
 msgid "<param1,param2>..."
 msgstr "<参数1,参数2>..."
 
-#: diff.c:5384
+#: diff.c:5400
 msgid ""
 "output the distribution of relative amount of changes for each sub-directory"
 msgstr "输出每个子目录相对变更的分布"
 
-#: diff.c:5388
+#: diff.c:5404
 msgid "synonym for --dirstat=cumulative"
 msgstr "和 --dirstat=cumulative 同义"
 
-#: diff.c:5392
+#: diff.c:5408
 msgid "synonym for --dirstat=files,param1,param2..."
 msgstr "是 --dirstat=files,param1,param2... 的同义词"
 
-#: diff.c:5396
+#: diff.c:5412
 msgid "warn if changes introduce conflict markers or whitespace errors"
 msgstr "如果变更中引入冲突定界符或空白错误,给出警告"
 
-#: diff.c:5399
+#: diff.c:5415
 msgid "condensed summary such as creations, renames and mode changes"
 msgstr "精简摘要,例如创建、重命名和模式变更"
 
-#: diff.c:5402
+#: diff.c:5418
 msgid "show only names of changed files"
 msgstr "只显示变更文件的文件名"
 
-#: diff.c:5405
+#: diff.c:5421
 msgid "show only names and status of changed files"
 msgstr "只显示变更文件的文件名和状态"
 
-#: diff.c:5407
+#: diff.c:5423
 msgid "<width>[,<name-width>[,<count>]]"
 msgstr "<宽度>[,<文件名宽度>[,<次数>]]"
 
-#: diff.c:5408
+#: diff.c:5424
 msgid "generate diffstat"
 msgstr "生成差异统计(diffstat)"
 
-#: diff.c:5410 diff.c:5413 diff.c:5416
+#: diff.c:5426 diff.c:5429 diff.c:5432
 msgid "<width>"
 msgstr "<宽度>"
 
-#: diff.c:5411
+#: diff.c:5427
 msgid "generate diffstat with a given width"
 msgstr "使用给定的长度生成差异统计"
 
-#: diff.c:5414
+#: diff.c:5430
 msgid "generate diffstat with a given name width"
 msgstr "使用给定的文件名长度生成差异统计"
 
-#: diff.c:5417
+#: diff.c:5433
 msgid "generate diffstat with a given graph width"
 msgstr "使用给定的图形长度生成差异统计"
 
-#: diff.c:5419
+#: diff.c:5435
 msgid "<count>"
 msgstr "<次数>"
 
-#: diff.c:5420
+#: diff.c:5436
 msgid "generate diffstat with limited lines"
 msgstr "生成有限行数的差异统计"
 
-#: diff.c:5423
+#: diff.c:5439
 msgid "generate compact summary in diffstat"
 msgstr "生成差异统计的简洁摘要"
 
-#: diff.c:5426
+#: diff.c:5442
 msgid "output a binary diff that can be applied"
 msgstr "输出一个可以应用的二进制差异"
 
-#: diff.c:5429
+#: diff.c:5445
 msgid "show full pre- and post-image object names on the \"index\" lines"
 msgstr "在 \"index\" 行显示完整的前后对象名称"
 
-#: diff.c:5431
+#: diff.c:5447
 msgid "show colored diff"
 msgstr "显示带颜色的差异"
 
-#: diff.c:5432
+#: diff.c:5448
 msgid "<kind>"
 msgstr "<类型>"
 
-#: diff.c:5433
+#: diff.c:5449
 msgid ""
 "highlight whitespace errors in the 'context', 'old' or 'new' lines in the "
 "diff"
 msgstr "对于差异中的上下文、旧的和新的行,加亮显示错误的空白字符"
 
-#: diff.c:5436
+#: diff.c:5452
 msgid ""
 "do not munge pathnames and use NULs as output field terminators in --raw or "
 "--numstat"
@@ -3540,299 +3608,311 @@ msgstr ""
 "在 --raw 或者 --numstat 中,不对路径字符转码并使用 NUL 字符做为输出字段的分隔"
 "符"
 
-#: diff.c:5439 diff.c:5442 diff.c:5445 diff.c:5554
+#: diff.c:5455 diff.c:5458 diff.c:5461 diff.c:5570
 msgid "<prefix>"
 msgstr "<前缀>"
 
-#: diff.c:5440
+#: diff.c:5456
 msgid "show the given source prefix instead of \"a/\""
 msgstr "显示给定的源前缀取代 \"a/\""
 
-#: diff.c:5443
+#: diff.c:5459
 msgid "show the given destination prefix instead of \"b/\""
 msgstr "显示给定的目标前缀取代 \"b/\""
 
-#: diff.c:5446
+#: diff.c:5462
 msgid "prepend an additional prefix to every line of output"
 msgstr "输出的每一行附加前缀"
 
-#: diff.c:5449
+#: diff.c:5465
 msgid "do not show any source or destination prefix"
 msgstr "不显示任何源和目标前缀"
 
-#: diff.c:5452
+#: diff.c:5468
 msgid "show context between diff hunks up to the specified number of lines"
 msgstr "显示指定行数的差异块间的上下文"
 
-#: diff.c:5456 diff.c:5461 diff.c:5466
+#: diff.c:5472 diff.c:5477 diff.c:5482
 msgid "<char>"
 msgstr "<字符>"
 
-#: diff.c:5457
+#: diff.c:5473
 msgid "specify the character to indicate a new line instead of '+'"
 msgstr "指定一个字符取代 '+' 来表示新的一行"
 
-#: diff.c:5462
+#: diff.c:5478
 msgid "specify the character to indicate an old line instead of '-'"
 msgstr "指定一个字符取代 '-' 来表示旧的一行"
 
-#: diff.c:5467
+#: diff.c:5483
 msgid "specify the character to indicate a context instead of ' '"
 msgstr "指定一个字符取代 ' ' 来表示一行上下文"
 
-#: diff.c:5470
+#: diff.c:5486
 msgid "Diff rename options"
 msgstr "差异重命名选项"
 
-#: diff.c:5471
+#: diff.c:5487
 msgid "<n>[/<m>]"
 msgstr "<n>[/<m>]"
 
-#: diff.c:5472
+#: diff.c:5488
 msgid "break complete rewrite changes into pairs of delete and create"
 msgstr "将完全重写的变更打破为成对的删除和创建"
 
-#: diff.c:5476
+#: diff.c:5492
 msgid "detect renames"
 msgstr "检测重命名"
 
-#: diff.c:5480
+#: diff.c:5496
 msgid "omit the preimage for deletes"
 msgstr "省略删除操作的差异输出"
 
-#: diff.c:5483
+#: diff.c:5499
 msgid "detect copies"
 msgstr "检测拷贝"
 
-#: diff.c:5487
+#: diff.c:5503
 msgid "use unmodified files as source to find copies"
 msgstr "使用未修改的文件做为发现拷贝的源"
 
-#: diff.c:5489
+#: diff.c:5505
 msgid "disable rename detection"
 msgstr "禁用重命名探测"
 
-#: diff.c:5492
+#: diff.c:5508
 msgid "use empty blobs as rename source"
 msgstr "使用空的数据对象做为重命名的源"
 
-#: diff.c:5494
+#: diff.c:5510
 msgid "continue listing the history of a file beyond renames"
 msgstr "继续列出文件重命名以外的历史记录"
 
-#: diff.c:5497
+#: diff.c:5513
 msgid ""
 "prevent rename/copy detection if the number of rename/copy targets exceeds "
 "given limit"
 msgstr "如果重命名/拷贝目标超过给定的限制,禁止重命名/拷贝检测"
 
-#: diff.c:5499
+#: diff.c:5515
 msgid "Diff algorithm options"
 msgstr "差异算法选项"
 
-#: diff.c:5501
+#: diff.c:5517
 msgid "produce the smallest possible diff"
 msgstr "生成尽可能小的差异"
 
-#: diff.c:5504
+#: diff.c:5520
 msgid "ignore whitespace when comparing lines"
 msgstr "行比较时忽略空白字符"
 
-#: diff.c:5507
+#: diff.c:5523
 msgid "ignore changes in amount of whitespace"
 msgstr "忽略空白字符的变更"
 
-#: diff.c:5510
+#: diff.c:5526
 msgid "ignore changes in whitespace at EOL"
 msgstr "忽略行尾的空白字符变更"
 
-#: diff.c:5513
+#: diff.c:5529
 msgid "ignore carrier-return at the end of line"
 msgstr "忽略行尾的回车符(CR)"
 
-#: diff.c:5516
+#: diff.c:5532
 msgid "ignore changes whose lines are all blank"
 msgstr "忽略整行都是空白的变更"
 
-#: diff.c:5518 diff.c:5540 diff.c:5543 diff.c:5588
+#: diff.c:5534 diff.c:5556 diff.c:5559 diff.c:5604
 msgid "<regex>"
 msgstr "<正则>"
 
-#: diff.c:5519
+#: diff.c:5535
 msgid "ignore changes whose all lines match <regex>"
 msgstr "忽略所有行都和正则表达式匹配的变更"
 
-#: diff.c:5522
+#: diff.c:5538
 msgid "heuristic to shift diff hunk boundaries for easy reading"
 msgstr "启发式转换差异边界以便阅读"
 
-#: diff.c:5525
+#: diff.c:5541
 msgid "generate diff using the \"patience diff\" algorithm"
 msgstr "使用 \"patience diff\" 算法生成差异"
 
-#: diff.c:5529
+#: diff.c:5545
 msgid "generate diff using the \"histogram diff\" algorithm"
 msgstr "使用 \"histogram diff\" 算法生成差异"
 
-#: diff.c:5531
+#: diff.c:5547
 msgid "<algorithm>"
 msgstr "<算法>"
 
-#: diff.c:5532
+#: diff.c:5548
 msgid "choose a diff algorithm"
 msgstr "选择一个差异算法"
 
-#: diff.c:5534
+#: diff.c:5550
 msgid "<text>"
 msgstr "<文本>"
 
-#: diff.c:5535
+#: diff.c:5551
 msgid "generate diff using the \"anchored diff\" algorithm"
 msgstr "使用 \"anchored diff\" 算法生成差异"
 
-#: diff.c:5537 diff.c:5546 diff.c:5549
+#: diff.c:5553 diff.c:5562 diff.c:5565
 msgid "<mode>"
 msgstr "<模式>"
 
-#: diff.c:5538
+#: diff.c:5554
 msgid "show word diff, using <mode> to delimit changed words"
 msgstr "显示单词差异,使用 <模式> 分隔变更的单词"
 
-#: diff.c:5541
+#: diff.c:5557
 msgid "use <regex> to decide what a word is"
 msgstr "使用 <正则表达式> 确定何为一个词"
 
-#: diff.c:5544
+#: diff.c:5560
 msgid "equivalent to --word-diff=color --word-diff-regex=<regex>"
 msgstr "相当于 --word-diff=color --word-diff-regex=<正则>"
 
-#: diff.c:5547
+#: diff.c:5563
 msgid "moved lines of code are colored differently"
 msgstr "移动的代码行用不同方式着色"
 
-#: diff.c:5550
+#: diff.c:5566
 msgid "how white spaces are ignored in --color-moved"
 msgstr "在 --color-moved 下如何忽略空白字符"
 
-#: diff.c:5553
+#: diff.c:5569
 msgid "Other diff options"
 msgstr "其它差异选项"
 
-#: diff.c:5555
+#: diff.c:5571
 msgid "when run from subdir, exclude changes outside and show relative paths"
 msgstr "当从子目录运行,排除目录之外的变更并显示相对路径"
 
-#: diff.c:5559
+#: diff.c:5575
 msgid "treat all files as text"
 msgstr "把所有文件当做文本处理"
 
-#: diff.c:5561
+#: diff.c:5577
 msgid "swap two inputs, reverse the diff"
 msgstr "交换两个输入,反转差异"
 
-#: diff.c:5563
+#: diff.c:5579
 msgid "exit with 1 if there were differences, 0 otherwise"
 msgstr "有差异时退出码为 1,否则为 0"
 
-#: diff.c:5565
+#: diff.c:5581
 msgid "disable all output of the program"
 msgstr "禁用本程序的所有输出"
 
-#: diff.c:5567
+#: diff.c:5583
 msgid "allow an external diff helper to be executed"
 msgstr "允许执行一个外置的差异助手"
 
-#: diff.c:5569
+#: diff.c:5585
 msgid "run external text conversion filters when comparing binary files"
 msgstr "当比较二进制文件时,运行外部的文本转换过滤器"
 
-#: diff.c:5571
+#: diff.c:5587
 msgid "<when>"
 msgstr "<何时>"
 
-#: diff.c:5572
+#: diff.c:5588
 msgid "ignore changes to submodules in the diff generation"
 msgstr "在生成差异时,忽略子模组的更改"
 
-#: diff.c:5575
+#: diff.c:5591
 msgid "<format>"
 msgstr "<格式>"
 
-#: diff.c:5576
+#: diff.c:5592
 msgid "specify how differences in submodules are shown"
 msgstr "指定子模组的差异如何显示"
 
-#: diff.c:5580
+#: diff.c:5596
 msgid "hide 'git add -N' entries from the index"
 msgstr "隐藏索引中 'git add -N' 条目"
 
-#: diff.c:5583
+#: diff.c:5599
 msgid "treat 'git add -N' entries as real in the index"
 msgstr "将索引中 'git add -N' 条目当做真实的"
 
-#: diff.c:5585
+#: diff.c:5601
 msgid "<string>"
 msgstr "<字符串>"
 
-#: diff.c:5586
+#: diff.c:5602
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "string"
 msgstr "查找改变了指定字符串出现次数的差异"
 
-#: diff.c:5589
+#: diff.c:5605
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "regex"
 msgstr "查找改变指定正则匹配出现次数的差异"
 
-#: diff.c:5592
+#: diff.c:5608
 msgid "show all changes in the changeset with -S or -G"
 msgstr "显示使用 -S 或 -G 的变更集的所有变更"
 
-#: diff.c:5595
+#: diff.c:5611
 msgid "treat <string> in -S as extended POSIX regular expression"
 msgstr "将 -S 的 <string> 当做扩展的 POSIX 正则表达式"
 
-#: diff.c:5598
+#: diff.c:5614
 msgid "control the order in which files appear in the output"
 msgstr "控制输出中的文件显示顺序"
 
-#: diff.c:5599
+#: diff.c:5615 diff.c:5618
+msgid "<path>"
+msgstr "<路径>"
+
+#: diff.c:5616
+msgid "show the change in the specified path first"
+msgstr "先显示指定路径的变更"
+
+#: diff.c:5619
+msgid "skip the output to the specified path"
+msgstr "跳过指定路径的输出"
+
+#: diff.c:5621
 msgid "<object-id>"
 msgstr "<对象 ID>"
 
-#: diff.c:5600
+#: diff.c:5622
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "object"
 msgstr "查找改变指定对象出现次数的差异"
 
-#: diff.c:5602
+#: diff.c:5624
 msgid "[(A|C|D|M|R|T|U|X|B)...[*]]"
 msgstr "[(A|C|D|M|R|T|U|X|B)...[*]]"
 
-#: diff.c:5603
+#: diff.c:5625
 msgid "select files by diff type"
 msgstr "通过差异类型选择文件"
 
-#: diff.c:5605
+#: diff.c:5627
 msgid "<file>"
 msgstr "<文件>"
 
-#: diff.c:5606
+#: diff.c:5628
 msgid "Output to a specific file"
 msgstr "输出到一个指定的文件"
 
-#: diff.c:6263
+#: diff.c:6285
 msgid "inexact rename detection was skipped due to too many files."
 msgstr "因为文件太多,略过不严格的重命名检查。"
 
-#: diff.c:6266
+#: diff.c:6288
 msgid "only found copies from modified paths due to too many files."
 msgstr "因为文件太多,只在修改的路径中查找拷贝。"
 
-#: diff.c:6269
+#: diff.c:6291
 #, c-format
 msgid ""
 "you may want to set your %s variable to at least %d and retry the command."
@@ -3843,10 +3923,15 @@ msgstr "您可能想要将变量 %s 设置为至少 %d 并再次执行此命令
 msgid "failed to read orderfile '%s'"
 msgstr "读取排序文件 '%s' 失败"
 
-#: diffcore-rename.c:592
+#: diffcore-rename.c:786
 msgid "Performing inexact rename detection"
 msgstr "正在进行非精确的重命名探测"
 
+#: diffcore-rotate.c:29
+#, c-format
+msgid "No such path '%s' in the diff"
+msgstr "在差异中无此路径 '%s'"
+
 #: dir.c:578
 #, c-format
 msgid "pathspec '%s' did not match any file(s) known to git"
@@ -3889,17 +3974,17 @@ msgstr "无法获得内核名称和信息"
 msgid "untracked cache is disabled on this system or location"
 msgstr "缓存未跟踪文件在本系统或位置中被禁用"
 
-#: dir.c:3520
+#: dir.c:3534
 #, c-format
 msgid "index file corrupt in repo %s"
 msgstr "仓库 %s 中的索引文件损坏"
 
-#: dir.c:3565 dir.c:3570
+#: dir.c:3579 dir.c:3584
 #, c-format
 msgid "could not create directories for %s"
 msgstr "不能为 %s 创建目录"
 
-#: dir.c:3599
+#: dir.c:3613
 #, c-format
 msgid "could not migrate git directory from '%s' to '%s'"
 msgstr "不能从 '%s' 迁移 git 目录到 '%s'"
@@ -3918,12 +4003,12 @@ msgstr "过滤内容"
 msgid "could not stat file '%s'"
 msgstr "不能对文件 '%s' 调用 stat"
 
-#: environment.c:150
+#: environment.c:152
 #, c-format
 msgid "bad git namespace path \"%s\""
 msgstr "错误的 git 名字空间路径 \"%s\""
 
-#: environment.c:337
+#: environment.c:335
 #, c-format
 msgid "could not set GIT_DIR to '%s'"
 msgstr "不能设置 GIT_DIR 为 '%s'"
@@ -3958,32 +4043,32 @@ msgstr "无法写到远程"
 msgid "--stateless-rpc requires multi_ack_detailed"
 msgstr "--stateless-rpc 需要 multi_ack_detailed"
 
-#: fetch-pack.c:378 fetch-pack.c:1406
+#: fetch-pack.c:378 fetch-pack.c:1457
 #, c-format
 msgid "invalid shallow line: %s"
 msgstr "无效的 shallow 信息:%s"
 
-#: fetch-pack.c:384 fetch-pack.c:1412
+#: fetch-pack.c:384 fetch-pack.c:1463
 #, c-format
 msgid "invalid unshallow line: %s"
 msgstr "无效的 unshallow 信息:%s"
 
-#: fetch-pack.c:386 fetch-pack.c:1414
+#: fetch-pack.c:386 fetch-pack.c:1465
 #, c-format
 msgid "object not found: %s"
 msgstr "对象未找到:%s"
 
-#: fetch-pack.c:389 fetch-pack.c:1417
+#: fetch-pack.c:389 fetch-pack.c:1468
 #, c-format
 msgid "error in object: %s"
 msgstr "对象中出错:%s"
 
-#: fetch-pack.c:391 fetch-pack.c:1419
+#: fetch-pack.c:391 fetch-pack.c:1470
 #, c-format
 msgid "no shallow found: %s"
 msgstr "未发现 shallow:%s"
 
-#: fetch-pack.c:394 fetch-pack.c:1423
+#: fetch-pack.c:394 fetch-pack.c:1474
 #, c-format
 msgid "expected shallow/unshallow, got %s"
 msgstr "应为 shallow/unshallow,却得到 %s"
@@ -4021,171 +4106,175 @@ msgstr "标记 %s 为完成"
 msgid "already have %s (%s)"
 msgstr "已经有 %s(%s)"
 
-#: fetch-pack.c:827
+#: fetch-pack.c:844
 msgid "fetch-pack: unable to fork off sideband demultiplexer"
 msgstr "fetch-pack:无法派生 sideband 多路输出"
 
-#: fetch-pack.c:835
+#: fetch-pack.c:852
 msgid "protocol error: bad pack header"
 msgstr "协议错误:坏的包头"
 
-#: fetch-pack.c:919
+#: fetch-pack.c:946
 #, c-format
 msgid "fetch-pack: unable to fork off %s"
 msgstr "fetch-pack:无法派生进程 %s"
 
-#: fetch-pack.c:937
+#: fetch-pack.c:952
+msgid "fetch-pack: invalid index-pack output"
+msgstr "fetch-pack:无效的 index-pack 输出"
+
+#: fetch-pack.c:969
 #, c-format
 msgid "%s failed"
 msgstr "%s 失败"
 
-#: fetch-pack.c:939
+#: fetch-pack.c:971
 msgid "error in sideband demultiplexer"
 msgstr "sideband 多路输出出错"
 
-#: fetch-pack.c:982
+#: fetch-pack.c:1031
 #, c-format
 msgid "Server version is %.*s"
 msgstr "服务器版本 %.*s"
 
-#: fetch-pack.c:990 fetch-pack.c:996 fetch-pack.c:999 fetch-pack.c:1005
-#: fetch-pack.c:1009 fetch-pack.c:1013 fetch-pack.c:1017 fetch-pack.c:1021
-#: fetch-pack.c:1025 fetch-pack.c:1029 fetch-pack.c:1033 fetch-pack.c:1037
-#: fetch-pack.c:1043 fetch-pack.c:1049 fetch-pack.c:1054 fetch-pack.c:1059
+#: fetch-pack.c:1039 fetch-pack.c:1045 fetch-pack.c:1048 fetch-pack.c:1054
+#: fetch-pack.c:1058 fetch-pack.c:1062 fetch-pack.c:1066 fetch-pack.c:1070
+#: fetch-pack.c:1074 fetch-pack.c:1078 fetch-pack.c:1082 fetch-pack.c:1086
+#: fetch-pack.c:1092 fetch-pack.c:1098 fetch-pack.c:1103 fetch-pack.c:1108
 #, c-format
 msgid "Server supports %s"
 msgstr "服务器支持 %s"
 
-#: fetch-pack.c:992
+#: fetch-pack.c:1041
 msgid "Server does not support shallow clients"
 msgstr "服务器不支持 shalllow 客户端"
 
-#: fetch-pack.c:1052
+#: fetch-pack.c:1101
 msgid "Server does not support --shallow-since"
 msgstr "服务器不支持 --shallow-since"
 
-#: fetch-pack.c:1057
+#: fetch-pack.c:1106
 msgid "Server does not support --shallow-exclude"
 msgstr "服务器不支持 --shallow-exclude"
 
-#: fetch-pack.c:1061
+#: fetch-pack.c:1110
 msgid "Server does not support --deepen"
 msgstr "服务器不支持 --deepen"
 
-#: fetch-pack.c:1063
+#: fetch-pack.c:1112
 msgid "Server does not support this repository's object format"
 msgstr "服务器不支持这个仓库的对象格式"
 
-#: fetch-pack.c:1076
+#: fetch-pack.c:1125
 msgid "no common commits"
 msgstr "没有共同的提交"
 
-#: fetch-pack.c:1088 fetch-pack.c:1628
+#: fetch-pack.c:1138 fetch-pack.c:1682
 msgid "git fetch-pack: fetch failed."
 msgstr "git fetch-pack:获取失败。"
 
-#: fetch-pack.c:1214
+#: fetch-pack.c:1265
 #, c-format
 msgid "mismatched algorithms: client %s; server %s"
 msgstr "不匹配的算法:客户端 %s,服务端 %s"
 
-#: fetch-pack.c:1218
+#: fetch-pack.c:1269
 #, c-format
 msgid "the server does not support algorithm '%s'"
 msgstr "服务器不支持算法 '%s'"
 
-#: fetch-pack.c:1238
+#: fetch-pack.c:1289
 msgid "Server does not support shallow requests"
 msgstr "服务器不支持 shalllow 请求"
 
-#: fetch-pack.c:1245
+#: fetch-pack.c:1296
 msgid "Server supports filter"
 msgstr "服务器支持 filter"
 
-#: fetch-pack.c:1284
+#: fetch-pack.c:1335
 msgid "unable to write request to remote"
 msgstr "无法将请求写到远程"
 
-#: fetch-pack.c:1302
+#: fetch-pack.c:1353
 #, c-format
 msgid "error reading section header '%s'"
 msgstr "读取节标题 '%s' 出错"
 
-#: fetch-pack.c:1308
+#: fetch-pack.c:1359
 #, c-format
 msgid "expected '%s', received '%s'"
 msgstr "预期 '%s',得到 '%s'"
 
-#: fetch-pack.c:1369
+#: fetch-pack.c:1420
 #, c-format
 msgid "unexpected acknowledgment line: '%s'"
 msgstr "意外的确认行:'%s'"
 
-#: fetch-pack.c:1374
+#: fetch-pack.c:1425
 #, c-format
 msgid "error processing acks: %d"
 msgstr "处理 ack 出错:%d"
 
-#: fetch-pack.c:1384
+#: fetch-pack.c:1435
 msgid "expected packfile to be sent after 'ready'"
 msgstr "预期在 'ready' 之后发送 packfile"
 
-#: fetch-pack.c:1386
+#: fetch-pack.c:1437
 msgid "expected no other sections to be sent after no 'ready'"
 msgstr "在没有 'ready' 不应该发送其它小节"
 
-#: fetch-pack.c:1428
+#: fetch-pack.c:1479
 #, c-format
 msgid "error processing shallow info: %d"
 msgstr "处理浅克隆信息出错:%d"
 
-#: fetch-pack.c:1475
+#: fetch-pack.c:1526
 #, c-format
 msgid "expected wanted-ref, got '%s'"
 msgstr "预期 wanted-ref,得到 '%s'"
 
-#: fetch-pack.c:1480
+#: fetch-pack.c:1531
 #, c-format
 msgid "unexpected wanted-ref: '%s'"
 msgstr "意外的 wanted-ref:'%s'"
 
-#: fetch-pack.c:1485
+#: fetch-pack.c:1536
 #, c-format
 msgid "error processing wanted refs: %d"
 msgstr "处理要获取的引用出错:%d"
 
-#: fetch-pack.c:1515
+#: fetch-pack.c:1566
 msgid "git fetch-pack: expected response end packet"
 msgstr "git fetch-pack:预期响应结束包"
 
-#: fetch-pack.c:1897
+#: fetch-pack.c:1960
 msgid "no matching remote head"
 msgstr "没有匹配的远程分支"
 
-#: fetch-pack.c:1920 builtin/clone.c:693
+#: fetch-pack.c:1983 builtin/clone.c:693
 msgid "remote did not send all necessary objects"
 msgstr "远程没有发送所有必需的对象"
 
-#: fetch-pack.c:1947
+#: fetch-pack.c:2010
 #, c-format
 msgid "no such remote ref %s"
 msgstr "没有这样的远程引用 %s"
 
-#: fetch-pack.c:1950
+#: fetch-pack.c:2013
 #, c-format
 msgid "Server does not allow request for unadvertised object %s"
 msgstr "服务器不允许请求未公开的对象 %s"
 
-#: gpg-interface.c:272
+#: gpg-interface.c:273
 msgid "could not create temporary file"
 msgstr "不能创建临时文件"
 
-#: gpg-interface.c:275
+#: gpg-interface.c:276
 #, c-format
 msgid "failed writing detached signature to '%s'"
 msgstr "无法将分离式签名写入 '%s'"
 
-#: gpg-interface.c:457
+#: gpg-interface.c:470
 msgid "gpg failed to sign the data"
 msgstr "gpg 数据签名失败"
 
@@ -4194,7 +4283,7 @@ msgstr "gpg 数据签名失败"
 msgid "ignore invalid color '%.*s' in log.graphColors"
 msgstr "忽略 log.graphColors 中无效的颜色 '%.*s'"
 
-#: grep.c:640
+#: grep.c:543
 msgid ""
 "given pattern contains NULL byte (via -f <file>). This is only supported "
 "with -P under PCRE v2"
@@ -4202,18 +4291,18 @@ msgstr ""
 "给定的模式包含 NULL 字符(通过 -f <文件> 参数)。只有 PCRE v2 下的 -P 支持此"
 "功能"
 
-#: grep.c:2100
+#: grep.c:1906
 #, c-format
 msgid "'%s': unable to read %s"
 msgstr "'%s':无法读取 %s"
 
-#: grep.c:2117 setup.c:176 builtin/clone.c:412 builtin/diff.c:89
+#: grep.c:1923 setup.c:176 builtin/clone.c:412 builtin/diff.c:90
 #: builtin/rm.c:135
 #, c-format
 msgid "failed to stat '%s'"
 msgstr "对 '%s' 调用 stat 失败"
 
-#: grep.c:2128
+#: grep.c:1934
 #, c-format
 msgid "'%s': short read"
 msgstr "'%s':读取不完整"
@@ -4283,7 +4372,7 @@ msgstr "在 $PATH 路径中的其他地方可用的 git 命令"
 msgid "These are common Git commands used in various situations:"
 msgstr "这些是各种场合常见的 Git 命令:"
 
-#: help.c:365 git.c:99
+#: help.c:365 git.c:100
 #, c-format
 msgid "unsupported command listing type '%s'"
 msgstr "不支持的命令列表类型 '%s'"
@@ -4518,11 +4607,229 @@ msgstr ""
 msgid "Unable to create '%s.lock': %s"
 msgstr "不能创建 '%s.lock':%s"
 
-#: ls-refs.c:109
+#: ls-refs.c:37
+#, c-format
+msgid "invalid value '%s' for lsrefs.unborn"
+msgstr "lsrefs.unborn 的取值 '%s' 无效"
+
+#: ls-refs.c:167
 msgid "expected flush after ls-refs arguments"
 msgstr "在 ls-refs 参数后应该有一个 flush 包"
 
-#: merge-ort-wrappers.c:13 merge-recursive.c:3672
+#: merge-ort.c:888 merge-recursive.c:1191
+#, c-format
+msgid "Failed to merge submodule %s (not checked out)"
+msgstr "无法合并子模组 %s (没有检出)"
+
+#: merge-ort.c:897 merge-recursive.c:1198
+#, c-format
+msgid "Failed to merge submodule %s (commits not present)"
+msgstr "无法合并子模组 %s(提交不存在)"
+
+#: merge-ort.c:906 merge-recursive.c:1205
+#, c-format
+msgid "Failed to merge submodule %s (commits don't follow merge-base)"
+msgstr "无法合并子模组 %s (提交未跟随合并基线)"
+
+#: merge-ort.c:916 merge-ort.c:923
+#, c-format
+msgid "Note: Fast-forwarding submodule %s to %s"
+msgstr "注意:快进子模组 %s 到 %s"
+
+#: merge-ort.c:944
+#, c-format
+msgid "Failed to merge submodule %s"
+msgstr "无法合并子模组 %s"
+
+#: merge-ort.c:951
+#, c-format
+msgid ""
+"Failed to merge submodule %s, but a possible merge resolution exists:\n"
+"%s\n"
+msgstr ""
+"无法合并子模组 %s,但是存在一个可能的合并方案:\n"
+"%s\n"
+
+#: merge-ort.c:955 merge-recursive.c:1259
+#, 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-ort.c:968
+#, c-format
+msgid ""
+"Failed to merge submodule %s, but multiple possible merges exist:\n"
+"%s"
+msgstr ""
+"无法合并子模组 %s,但是存在多个可能的合并:\n"
+"%s"
+
+#: merge-ort.c:1127 merge-recursive.c:1341
+msgid "Failed to execute internal merge"
+msgstr "无法执行内部合并"
+
+#: merge-ort.c:1132 merge-recursive.c:1346
+#, c-format
+msgid "Unable to add %s to database"
+msgstr "不能添加 %s 至对象库"
+
+#: merge-ort.c:1139 merge-recursive.c:1378
+#, c-format
+msgid "Auto-merging %s"
+msgstr "自动合并 %s"
+
+#: merge-ort.c:1278 merge-recursive.c:2100
+#, c-format
+msgid ""
+"CONFLICT (implicit dir rename): Existing file/dir at %s in the way of "
+"implicit directory rename(s) putting the following path(s) there: %s."
+msgstr ""
+"冲突(隐式目录重命名):处于隐式目录重命名的现存文件/目录 %s,将以下路径放"
+"在:%s。"
+
+#: merge-ort.c:1288 merge-recursive.c:2110
+#, c-format
+msgid ""
+"CONFLICT (implicit dir rename): Cannot map more than one path to %s; "
+"implicit directory renames tried to put these paths there: %s"
+msgstr ""
+"冲突(隐式目录重命名):无法映射一个以上路径到 %s,隐式目录重命名尝试将这些路"
+"径放置于此:%s"
+
+#: merge-ort.c:1471
+#, c-format
+msgid ""
+"CONFLICT (directory rename split): Unclear where to rename %s to; it was "
+"renamed to multiple other directories, with no destination getting a "
+"majority of the files."
+msgstr "冲突(分割的目录重命名):不清楚重命名 %s 到哪里,因为它被重命名到多个其他目录中,没有一个目标目录中包含多数文件。"
+
+#: merge-ort.c:1637 merge-recursive.c:2447
+#, c-format
+msgid ""
+"WARNING: Avoiding applying %s -> %s rename to %s, because %s itself was "
+"renamed."
+msgstr "警告:避免应用 %s -> %s 的重命名到 %s,因为 %s 本身已被重命名。"
+
+#: merge-ort.c:1781 merge-recursive.c:3215
+#, c-format
+msgid ""
+"Path updated: %s added in %s inside a directory that was renamed in %s; "
+"moving it to %s."
+msgstr ""
+"路径已更新:%s 添加到 %s,位于一个被重命名到 %s 的目录中,将其移动到 %s。"
+
+#: merge-ort.c:1788 merge-recursive.c:3222
+#, c-format
+msgid ""
+"Path updated: %s renamed to %s in %s, inside a directory that was renamed in "
+"%s; moving it to %s."
+msgstr ""
+"路径已更新:%1$s 重命名为 %3$s 中的 %2$s,而该目录被重命名到 %4$s 中,将其移"
+"动到 %5$s。"
+
+#: merge-ort.c:1801 merge-recursive.c:3218
+#, c-format
+msgid ""
+"CONFLICT (file location): %s added in %s inside a directory that was renamed "
+"in %s, suggesting it should perhaps be moved to %s."
+msgstr ""
+"冲突(文件位置):%s 添加到 %s,位于一个被重命名为 %s 的目录中,建议将其移动"
+"到 %s。"
+
+#: merge-ort.c:1809 merge-recursive.c:3225
+#, c-format
+msgid ""
+"CONFLICT (file location): %s renamed to %s in %s, inside a directory that "
+"was renamed in %s, suggesting it should perhaps be moved to %s."
+msgstr ""
+"冲突(文件位置):%1$s 重命名为 %3$s 中的 %2$s,而该目录被重命名到 %4$s 中,"
+"建议将其移动到 %5$s。"
+
+#: merge-ort.c:1952
+#, c-format
+msgid "CONFLICT (rename/rename): %s renamed to %s in %s and to %s in %s."
+msgstr "冲突(重命名/重命名):%1$s 重命名为 %3$s 中的 %2$s,以及在 %5$s 中的 %4$s。"
+
+#: merge-ort.c:2047
+#, c-format
+msgid ""
+"CONFLICT (rename involved in collision): rename of %s -> %s has content "
+"conflicts AND collides with another path; this may result in nested conflict "
+"markers."
+msgstr "冲突(重命名卷入冲突):重命名 %s -> %s 有内容冲突并且和另外一个路径碰撞,这可能导致嵌套的冲突标签。"
+
+#: merge-ort.c:2066 merge-ort.c:2090
+#, c-format
+msgid "CONFLICT (rename/delete): %s renamed to %s in %s, but deleted in %s."
+msgstr "冲突(重命名/删除):%1$s 在 %3$s 中重命名为 %2$s,但在 %4$s 中删除。"
+
+#: merge-ort.c:2735
+#, c-format
+msgid ""
+"CONFLICT (file/directory): directory in the way of %s from %s; moving it to "
+"%s instead."
+msgstr "冲突(文件/目录):目录已存在于 %2$s 中的 %1$s,将其移动到 %3$s。"
+
+#: merge-ort.c:2808
+#, c-format
+msgid ""
+"CONFLICT (distinct types): %s had different types on each side; renamed %s "
+"of them so each can be recorded somewhere."
+msgstr "冲突(不同类型):%s 在每一侧有不同的类型,重命名它们中的%s以便每个被记录在不同位置。"
+
+#: merge-ort.c:2812
+msgid "both"
+msgstr "双方"
+
+#: merge-ort.c:2812
+msgid "one"
+msgstr "一个"
+
+#: merge-ort.c:2907 merge-recursive.c:3052
+msgid "content"
+msgstr "内容"
+
+#: merge-ort.c:2909 merge-recursive.c:3056
+msgid "add/add"
+msgstr "添加/添加"
+
+#: merge-ort.c:2911 merge-recursive.c:3101
+msgid "submodule"
+msgstr "子模组"
+
+#: merge-ort.c:2913 merge-recursive.c:3102
+#, c-format
+msgid "CONFLICT (%s): Merge conflict in %s"
+msgstr "冲突(%s):合并冲突于 %s"
+
+#: merge-ort.c:2938
+#, c-format
+msgid ""
+"CONFLICT (modify/delete): %s deleted in %s and modified in %s.  Version %s "
+"of %s left in tree."
+msgstr "冲突(修改/删除):%1$s 在 %2$s 中被删除,在 %3$s 中被修改。%5$s 的 %4$s 版本在树中被保留。"
+
+#. TRANSLATORS: The %s arguments are: 1) tree hash of a merge
+#. base, and 2-3) the trees for the two trees we're merging.
+#.
+#: merge-ort.c:3406
+#, c-format
+msgid "collecting merge info failed for trees %s, %s, %s"
+msgstr "无法收集树 %s、%s、%s 的合并信息"
+
+#: merge-ort-wrappers.c:13 merge-recursive.c:3661
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by merge:\n"
@@ -4594,22 +4901,7 @@ msgstr "创建符号链接 '%s' 失败:%s"
 msgid "do not know what to do with %06o %s '%s'"
 msgstr "不知道如何处理 %06o %s '%s'"
 
-#: merge-recursive.c:1191
-#, c-format
-msgid "Failed to merge submodule %s (not checked out)"
-msgstr "无法合并子模组 %s (没有检出)"
-
-#: merge-recursive.c:1198
-#, c-format
-msgid "Failed to merge submodule %s (commits not present)"
-msgstr "无法合并子模组 %s(提交不存在)"
-
-#: merge-recursive.c:1205
-#, c-format
-msgid "Failed to merge submodule %s (commits don't follow merge-base)"
-msgstr "无法合并子模组 %s (提交未跟随合并基线)"
-
-#: merge-recursive.c:1213 merge-recursive.c:1225
+#: merge-recursive.c:1213 merge-recursive.c:1225
 #, c-format
 msgid "Fast-forwarding submodule %s to the following commit:"
 msgstr "子模组 %s 快进到如下提交:"
@@ -4633,41 +4925,11 @@ msgstr "无法合并子模组 %s(非快进)"
 msgid "Found a possible merge resolution for the submodule:\n"
 msgstr "找到子模组的一个可能的合并方案:\n"
 
-#: merge-recursive.c:1259
-#, 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:1268
 #, c-format
 msgid "Failed to merge submodule %s (multiple merges found)"
 msgstr "无法合并子模组 %s (发现多个合并)"
 
-#: merge-recursive.c:1341
-msgid "Failed to execute internal merge"
-msgstr "无法执行内部合并"
-
-#: merge-recursive.c:1346
-#, c-format
-msgid "Unable to add %s to database"
-msgstr "不能添加 %s 至对象库"
-
-#: merge-recursive.c:1378
-#, c-format
-msgid "Auto-merging %s"
-msgstr "自动合并 %s"
-
 #: merge-recursive.c:1402
 #, c-format
 msgid "Error: Refusing to lose untracked file at %s; writing to %s instead."
@@ -4772,24 +5034,6 @@ msgstr ""
 "冲突(分割的目录重命名):不清楚 %s 应该放在哪里,因为目录 %s 被重命名到多个"
 "其它目录,没有目录包含大部分文件。"
 
-#: merge-recursive.c:2100
-#, c-format
-msgid ""
-"CONFLICT (implicit dir rename): Existing file/dir at %s in the way of "
-"implicit directory rename(s) putting the following path(s) there: %s."
-msgstr ""
-"冲突(隐式目录重命名):处于隐式目录重命名的现存文件/目录 %s,将以下路径放"
-"在:%s。"
-
-#: merge-recursive.c:2110
-#, c-format
-msgid ""
-"CONFLICT (implicit dir rename): Cannot map more than one path to %s; "
-"implicit directory renames tried to put these paths there: %s"
-msgstr ""
-"冲突(隐式目录重命名):无法映射一个以上路径到 %s,隐式目录重命名尝试将这些路"
-"径放置于此:%s"
-
 #: merge-recursive.c:2202
 #, c-format
 msgid ""
@@ -4799,13 +5043,6 @@ msgstr ""
 "冲突(重命名/重命名):在 %3$s 中重命名目录 %1$s->%2$s,在 %6$s 中重命名目录 "
 "%4$s->%5$s"
 
-#: merge-recursive.c:2447
-#, c-format
-msgid ""
-"WARNING: Avoiding applying %s -> %s rename to %s, because %s itself was "
-"renamed."
-msgstr "警告:避免应用 %s -> %s 的重命名到 %s,因为 %s 本身已被重命名。"
-
 #: merge-recursive.c:2973
 #, c-format
 msgid "cannot read object %s"
@@ -4824,68 +5061,16 @@ msgstr "修改"
 msgid "modified"
 msgstr "修改"
 
-#: merge-recursive.c:3052
-msgid "content"
-msgstr "内容"
-
-#: merge-recursive.c:3056
-msgid "add/add"
-msgstr "添加/添加"
-
 #: merge-recursive.c:3079
 #, c-format
 msgid "Skipped %s (merged same as existing)"
 msgstr "略过 %s(已经做过相同合并)"
 
-#: merge-recursive.c:3101
-msgid "submodule"
-msgstr "子模组"
-
-#: merge-recursive.c:3102
-#, c-format
-msgid "CONFLICT (%s): Merge conflict in %s"
-msgstr "冲突(%s):合并冲突于 %s"
-
 #: merge-recursive.c:3132
 #, c-format
 msgid "Adding as %s instead"
 msgstr "而是以 %s 为名添加"
 
-#: merge-recursive.c:3215
-#, c-format
-msgid ""
-"Path updated: %s added in %s inside a directory that was renamed in %s; "
-"moving it to %s."
-msgstr ""
-"路径已更新:%s 添加到 %s,位于一个被重命名到 %s 的目录中,将其移动到 %s。"
-
-#: merge-recursive.c:3218
-#, c-format
-msgid ""
-"CONFLICT (file location): %s added in %s inside a directory that was renamed "
-"in %s, suggesting it should perhaps be moved to %s."
-msgstr ""
-"冲突(文件位置):%s 添加到 %s,位于一个被重命名为 %s 的目录中,建议将其移动"
-"到 %s。"
-
-#: merge-recursive.c:3222
-#, c-format
-msgid ""
-"Path updated: %s renamed to %s in %s, inside a directory that was renamed in "
-"%s; moving it to %s."
-msgstr ""
-"路径已更新:%1$s 重命名为 %3$s 中的 %2$s,而该目录被重命名到 %4$s 中,将其移"
-"动到 %5$s。"
-
-#: merge-recursive.c:3225
-#, c-format
-msgid ""
-"CONFLICT (file location): %s renamed to %s in %s, inside a directory that "
-"was renamed in %s, suggesting it should perhaps be moved to %s."
-msgstr ""
-"冲突(文件位置):%1$s 重命名为 %3$s 中的 %2$s,而该目录被重命名到 %4$s 中,"
-"建议将其移动到 %5$s。"
-
 #: merge-recursive.c:3339
 #, c-format
 msgid "Removing %s"
@@ -4919,27 +5104,28 @@ msgstr "冲突(add/add):合并冲突于 %s"
 msgid "merging of trees %s and %s failed"
 msgstr "无法合并树 %s 和 %s"
 
-#: merge-recursive.c:3550
+#: merge-recursive.c:3539
 msgid "Merging:"
 msgstr "合并:"
 
-#: merge-recursive.c:3563
+#: merge-recursive.c:3552
 #, c-format
 msgid "found %u common ancestor:"
 msgid_plural "found %u common ancestors:"
 msgstr[0] "发现 %u 个共同祖先:"
 msgstr[1] "发现 %u 个共同祖先:"
 
-#: merge-recursive.c:3613
+#: merge-recursive.c:3602
 msgid "merge returned no commit"
 msgstr "合并未返回提交"
 
-#: merge-recursive.c:3769
+#: merge-recursive.c:3758
 #, c-format
 msgid "Could not parse object '%s'"
 msgstr "不能解析对象 '%s'"
 
-#: merge-recursive.c:3787 builtin/merge.c:711 builtin/merge.c:895
+#: merge-recursive.c:3776 builtin/merge.c:712 builtin/merge.c:896
+#: builtin/stash.c:471
 msgid "Unable to write index."
 msgstr "不能写入索引。"
 
@@ -4947,184 +5133,176 @@ msgstr "不能写入索引。"
 msgid "failed to read the cache"
 msgstr "读取缓存失败"
 
-#: merge.c:109 rerere.c:720 builtin/am.c:1883 builtin/am.c:1917
-#: builtin/checkout.c:573 builtin/checkout.c:829 builtin/clone.c:817
+#: merge.c:109 rerere.c:704 builtin/am.c:1883 builtin/am.c:1917
+#: builtin/checkout.c:575 builtin/checkout.c:828 builtin/clone.c:817
 #: builtin/stash.c:265
 msgid "unable to write new index file"
 msgstr "无法写新的索引文件"
 
-#: midx.c:80
+#: midx.c:62
+msgid "multi-pack-index OID fanout is of the wrong size"
+msgstr "多包索引的对象ID扇出表大小错误"
+
+#: midx.c:93
 #, c-format
 msgid "multi-pack-index file %s is too small"
 msgstr "多包索引文件 %s 太小"
 
-#: midx.c:96
+#: midx.c:109
 #, c-format
 msgid "multi-pack-index signature 0x%08x does not match signature 0x%08x"
 msgstr "多包索引签名 0x%08x 和签名 0x%08x 不匹配"
 
-#: midx.c:101
+#: midx.c:114
 #, c-format
 msgid "multi-pack-index version %d not recognized"
 msgstr "multi-pack-index 版本 %d 不能被识别"
 
-#: midx.c:106
+#: midx.c:119
 #, c-format
 msgid "multi-pack-index hash version %u does not match version %u"
 msgstr "多包索引哈希版本 %u 和版本 %u 不匹配"
 
-#: midx.c:123
-msgid "invalid chunk offset (too large)"
-msgstr "无效的块偏移(太大)"
-
-#: midx.c:147
-msgid "terminating multi-pack-index chunk id appears earlier than expected"
-msgstr "终止多包索引块 id 出现时间早于预期"
-
-#: midx.c:160
+#: midx.c:136
 msgid "multi-pack-index missing required pack-name chunk"
 msgstr "多包索引缺少必需的包名块"
 
-#: midx.c:162
+#: midx.c:138
 msgid "multi-pack-index missing required OID fanout chunk"
 msgstr "多包索引缺少必需的对象 ID 扇出块"
 
-#: midx.c:164
+#: midx.c:140
 msgid "multi-pack-index missing required OID lookup chunk"
 msgstr "多包索引缺少必需的对象 ID 查询块"
 
-#: midx.c:166
+#: midx.c:142
 msgid "multi-pack-index missing required object offsets chunk"
 msgstr "多包索引缺少必需的对象偏移块"
 
-#: midx.c:180
+#: midx.c:158
 #, c-format
 msgid "multi-pack-index pack names out of order: '%s' before '%s'"
 msgstr "多包索引包名无序:'%s' 在 '%s' 之前"
 
-#: midx.c:223
+#: midx.c:202
 #, c-format
 msgid "bad pack-int-id: %u (%u total packs)"
 msgstr "错的 pack-int-id:%u(共有 %u 个包)"
 
-#: midx.c:273
+#: midx.c:252
 msgid "multi-pack-index stores a 64-bit offset, but off_t is too small"
 msgstr "多包索引存储一个64位偏移,但是 off_t 太小"
 
-#: midx.c:480
+#: midx.c:467
 #, c-format
 msgid "failed to add packfile '%s'"
 msgstr "添加包文件 '%s' 失败"
 
-#: midx.c:486
+#: midx.c:473
 #, c-format
 msgid "failed to open pack-index '%s'"
 msgstr "打开包索引 '%s' 失败"
 
-#: midx.c:546
+#: midx.c:533
 #, c-format
 msgid "failed to locate object %d in packfile"
 msgstr "在包文件中定位对象 %d 失败"
 
-#: midx.c:846
+#: midx.c:821
 msgid "Adding packfiles to multi-pack-index"
 msgstr "添加包文件到多包索引"
 
-#: midx.c:879
+#: midx.c:855
 #, c-format
 msgid "did not see pack-file %s to drop"
 msgstr "没有看到要丢弃的包文件 %s"
 
-#: midx.c:931
+#: midx.c:904
 msgid "no pack files to index."
 msgstr "没有要索引的包文件。"
 
-#: midx.c:982
-msgid "Writing chunks to multi-pack-index"
-msgstr "写入块到多包索引"
-
-#: midx.c:1060
+#: midx.c:965
 #, c-format
 msgid "failed to clear multi-pack-index at %s"
 msgstr "清理位于 %s 的多包索引失败"
 
-#: midx.c:1116
+#: midx.c:1021
 msgid "multi-pack-index file exists, but failed to parse"
 msgstr "多包索引文件存在,但无法解析"
 
-#: midx.c:1124
+#: midx.c:1029
 msgid "Looking for referenced packfiles"
 msgstr "正在查找引用的包文件"
 
-#: midx.c:1139
+#: midx.c:1044
 #, c-format
 msgid ""
 "oid fanout out of order: fanout[%d] = %<PRIx32> > %<PRIx32> = fanout[%d]"
 msgstr "对象 ID 扇出无序:fanout[%d] = %<PRIx32> > %<PRIx32> = fanout[%d]"
 
-#: midx.c:1144
+#: midx.c:1049
 msgid "the midx contains no oid"
 msgstr "midx 不包含 oid"
 
-#: midx.c:1153
+#: midx.c:1058
 msgid "Verifying OID order in multi-pack-index"
 msgstr "校验多包索引中的 OID 顺序"
 
-#: midx.c:1162
+#: midx.c:1067
 #, c-format
 msgid "oid lookup out of order: oid[%d] = %s >= %s = oid[%d]"
 msgstr "对象 ID 查询无序:oid[%d] = %s >= %s = oid[%d]"
 
-#: midx.c:1182
+#: midx.c:1087
 msgid "Sorting objects by packfile"
 msgstr "通过包文件为对象排序"
 
-#: midx.c:1189
+#: midx.c:1094
 msgid "Verifying object offsets"
 msgstr "校验对象偏移"
 
-#: midx.c:1205
+#: midx.c:1110
 #, c-format
 msgid "failed to load pack entry for oid[%d] = %s"
 msgstr "为 oid[%d] = %s 加载包条目失败"
 
-#: midx.c:1211
+#: midx.c:1116
 #, c-format
 msgid "failed to load pack-index for packfile %s"
 msgstr "为包文件 %s 加载包索引失败"
 
-#: midx.c:1220
+#: midx.c:1125
 #, c-format
 msgid "incorrect object offset for oid[%d] = %s: %<PRIx64> != %<PRIx64>"
 msgstr "oid[%d] = %s 错误的对象偏移:%<PRIx64> != %<PRIx64>"
 
-#: midx.c:1245
+#: midx.c:1150
 msgid "Counting referenced objects"
 msgstr "正在对引用对象计数"
 
-#: midx.c:1255
+#: midx.c:1160
 msgid "Finding and deleting unreferenced packfiles"
 msgstr "正在查找和删除未引用的包文件"
 
-#: midx.c:1446
+#: midx.c:1351
 msgid "could not start pack-objects"
 msgstr "不能开始 pack-objects"
 
-#: midx.c:1466
+#: midx.c:1371
 msgid "could not finish pack-objects"
 msgstr "不能结束 pack-objects"
 
-#: name-hash.c:537
+#: name-hash.c:538
 #, c-format
 msgid "unable to create lazy_dir thread: %s"
 msgstr "不能创建 lazy_dir 线程:%s"
 
-#: name-hash.c:559
+#: name-hash.c:560
 #, c-format
 msgid "unable to create lazy_name thread: %s"
 msgstr "不能创建 lazy_name 线程:%s"
 
-#: name-hash.c:565
+#: name-hash.c:566
 #, c-format
 msgid "unable to join lazy_name thread: %s"
 msgstr "不能加入 lasy_name 线程:%s"
@@ -5168,2933 +5346,2996 @@ msgstr "拒绝向 %s(在 refs/notes/ 之外)写入注解"
 msgid "Bad %s value: '%s'"
 msgstr "坏的 %s 值:'%s'"
 
-#: object.c:53
+#: object-file.c:480
 #, c-format
-msgid "invalid object type \"%s\""
-msgstr "无效的对象类型 \"%s\""
+msgid "object directory %s does not exist; check .git/objects/info/alternates"
+msgstr "对象目录 %s 不存在,检查 .git/objects/info/alternates"
 
-#: object.c:173
+#: object-file.c:531
 #, c-format
-msgid "object %s is a %s, not a %s"
-msgstr "对象 %s 是一个 %s,不是一个 %s"
+msgid "unable to normalize alternate object path: %s"
+msgstr "无法规范化备用对象路径:%s"
 
-#: object.c:233
+#: object-file.c:603
 #, c-format
-msgid "object %s has unknown type id %d"
-msgstr "对象 %s 有未知的类型 id %d"
+msgid "%s: ignoring alternate object stores, nesting too deep"
+msgstr "%s:忽略备用对象库,嵌套太深"
 
-#: object.c:246
+#: object-file.c:610
 #, c-format
-msgid "unable to parse object: %s"
-msgstr "不能解析对象:%s"
+msgid "unable to normalize object directory: %s"
+msgstr "无法规范化对象目录: %s"
 
-#: object.c:266 object.c:278
-#, c-format
-msgid "hash mismatch %s"
-msgstr "哈希值与 %s 不匹配"
+#: object-file.c:653
+msgid "unable to fdopen alternates lockfile"
+msgstr "无法 fdopen 替换锁文件"
 
-#: pack-bitmap.c:815 pack-bitmap.c:821 builtin/pack-objects.c:2216
-#, c-format
-msgid "unable to get size of %s"
-msgstr "无法得到 %s 的大小"
+#: object-file.c:671
+msgid "unable to read alternates file"
+msgstr "无法读取替代文件"
 
-#: packfile.c:615
-msgid "offset before end of packfile (broken .idx?)"
-msgstr "偏移量在包文件结束之前(损坏的 .idx?)"
+#: object-file.c:678
+msgid "unable to move new alternates file into place"
+msgstr "无法将新的替代文件移动到位"
 
-#: packfile.c:1907
+#: object-file.c:713
 #, c-format
-msgid "offset before start of pack index for %s (corrupt index?)"
-msgstr "偏移量在 %s 的包索引开始之前(损坏的索引?)"
+msgid "path '%s' does not exist"
+msgstr "路径 '%s' 不存在"
 
-#: packfile.c:1911
+#: object-file.c:734
 #, c-format
-msgid "offset beyond end of pack index for %s (truncated index?)"
-msgstr "å\81\8f移é\87\8fè¶\8aè¿\87äº\86 %s ç\9a\84å\8c\85ç´¢å¼\95ç\9a\84ç»\93å°¾ï¼\88被æ\88ªæ\96­ç\9a\84ç´¢å¼\95ï¼\9fï¼\89"
+msgid "reference repository '%s' as a linked checkout is not supported yet."
+msgstr "å°\9aä¸\8dæ\94¯æ\8c\81å°\86å\8f\82è\80\83ä»\93åº\93 '%s' ä½\9c为ä¸\80个é\93¾æ\8e¥æ£\80å\87ºã\80\82"
 
-#: parse-options-cb.c:20 parse-options-cb.c:24
+#: object-file.c:740
 #, c-format
-msgid "option `%s' expects a numerical value"
-msgstr "选项 `%s' 期望一个数字值"
+msgid "reference repository '%s' is not a local repository."
+msgstr "参考仓库 '%s' 不是一个本地仓库。"
 
-#: parse-options-cb.c:41
+#: object-file.c:746
 #, c-format
-msgid "malformed expiration date '%s'"
-msgstr "格式错误的到期时间:'%s'"
+msgid "reference repository '%s' is shallow"
+msgstr "参考仓库 '%s' 是一个浅克隆"
 
-#: parse-options-cb.c:54
+#: object-file.c:754
 #, c-format
-msgid "option `%s' expects \"always\", \"auto\", or \"never\""
-msgstr "选项 `%s' 期望 \"always\"、\"auto\" 或 \"never\""
+msgid "reference repository '%s' is grafted"
+msgstr "参考仓库 '%s' 已被移植"
 
-#: parse-options-cb.c:132 parse-options-cb.c:149
+#: object-file.c:814
 #, c-format
-msgid "malformed object name '%s'"
-msgstr "格式错误的对象名 '%s'"
+msgid "invalid line while parsing alternate refs: %s"
+msgstr "解析备用引用时无效的行:%s"
 
-#: parse-options.c:38
+#: object-file.c:964
 #, c-format
-msgid "%s requires a value"
-msgstr "%s 需要一个值"
+msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
+msgstr "尝试 mmap %<PRIuMAX>,超过了最大值 %<PRIuMAX>"
 
-#: parse-options.c:73
-#, c-format
-msgid "%s is incompatible with %s"
-msgstr "%s 与 %s 不兼容"
+#: object-file.c:985
+msgid "mmap failed"
+msgstr "mmap 失败"
 
-#: parse-options.c:78
+#: object-file.c:1149
 #, c-format
-msgid "%s : incompatible with something else"
-msgstr "%s:和其它的不兼容"
+msgid "object file %s is empty"
+msgstr "对象文件 %s 为空"
 
-#: parse-options.c:92 parse-options.c:96 parse-options.c:317
+#: object-file.c:1284 object-file.c:2477
 #, c-format
-msgid "%s takes no value"
-msgstr "%s 不取值"
+msgid "corrupt loose object '%s'"
+msgstr "损坏的松散对象 '%s'"
 
-#: parse-options.c:94
+#: object-file.c:1286 object-file.c:2481
 #, c-format
-msgid "%s isn't available"
-msgstr "%s 不可用"
+msgid "garbage at end of loose object '%s'"
+msgstr "松散对象 '%s' 后面有垃圾数据"
 
-#: parse-options.c:217
-#, c-format
-msgid "%s expects a non-negative integer value with an optional k/m/g suffix"
-msgstr "%s 期望一个非负整数和一个可选的 k/m/g 后缀"
+#: object-file.c:1328
+msgid "invalid object type"
+msgstr "无效的对象类型"
 
-#: parse-options.c:386
+#: object-file.c:1412
 #, c-format
-msgid "ambiguous option: %s (could be --%s%s or --%s%s)"
-msgstr "æ\9c\89æ­§ä¹\89ç\9a\84é\80\89项ï¼\9a%sï¼\88å\8f¯ä»¥æ\98¯ --%s%s æ\88\96 --%s%sï¼\89"
+msgid "unable to unpack %s header with --allow-unknown-type"
+msgstr "æ\97 æ³\95ç\94¨ --allow-unknown-type å\8f\82æ\95°è§£å¼\80 %s å¤´ä¿¡æ\81¯"
 
-#: parse-options.c:420 parse-options.c:428
+#: object-file.c:1415
 #, c-format
-msgid "did you mean `--%s` (with two dashes)?"
-msgstr "你的意思是 `--%s`(有两个短线)?"
+msgid "unable to unpack %s header"
+msgstr "无法解开 %s 头部"
 
-#: parse-options.c:666 parse-options.c:971
+#: object-file.c:1421
 #, c-format
-msgid "alias of --%s"
-msgstr "--%s 的别名"
+msgid "unable to parse %s header with --allow-unknown-type"
+msgstr "无法用 --allow-unknown-type 参数解析 %s 头信息"
 
-#: parse-options.c:862
+#: object-file.c:1424
 #, c-format
-msgid "unknown option `%s'"
-msgstr "æ\9cªç\9f¥é\80\89项 `%s'"
+msgid "unable to parse %s header"
+msgstr "æ\97 æ³\95解æ\9e\90 %s å¤´é\83¨"
 
-#: parse-options.c:864
+#: object-file.c:1651
 #, c-format
-msgid "unknown switch `%c'"
-msgstr "未知开关 `%c'"
+msgid "failed to read object %s"
+msgstr "读取对象 %s 失败"
 
-#: parse-options.c:866
+#: object-file.c:1655
 #, c-format
-msgid "unknown non-ascii option in string: `%s'"
-msgstr "字符串中未知的非 ascii 字符选项:`%s'"
+msgid "replacement %s not found for %s"
+msgstr "找不到 %2$s 的替代 %1$s"
 
-#: parse-options.c:890
-msgid "..."
-msgstr "..."
+#: object-file.c:1659
+#, c-format
+msgid "loose object %s (stored in %s) is corrupt"
+msgstr "松散对象 %s(保存在 %s)已损坏"
 
-#: parse-options.c:909
+#: object-file.c:1663
 #, c-format
-msgid "usage: %s"
-msgstr "用法:%s"
+msgid "packed object %s (stored in %s) is corrupt"
+msgstr "打包对象 %s(保存在 %s)已损坏"
 
-#. TRANSLATORS: the colon here should align with the
-#. one in "usage: %s" translation.
-#.
-#: parse-options.c:915
+#: object-file.c:1768
 #, c-format
-msgid "   or: %s"
-msgstr "  或:%s"
+msgid "unable to write file %s"
+msgstr "无法写文件 %s"
 
-#  译者:为保证在输出中对齐,注意调整句中空格!
-#: parse-options.c:918
+#: object-file.c:1775
 #, c-format
-msgid "    %s"
-msgstr "    %s"
+msgid "unable to set permission to '%s'"
+msgstr "无法为 '%s' 设置权限"
 
-#: parse-options.c:957
-msgid "-NUM"
-msgstr "-数字"
+#: object-file.c:1782
+msgid "file write error"
+msgstr "文件写错误"
 
-#: path.c:915
+#: object-file.c:1802
+msgid "error when closing loose object file"
+msgstr "关闭松散对象文件时出错"
+
+#: object-file.c:1867
 #, c-format
-msgid "Could not make %s writable by group"
-msgstr "不能设置 %s 为组可写"
+msgid "insufficient permission for adding an object to repository database %s"
+msgstr "权限不足,无法在仓库对象库 %s 中添加对象"
 
-#: pathspec.c:130
-msgid "Escape character '\\' not allowed as last character in attr value"
-msgstr "转义字符 '\\' 不能作为属性值的最后一个字符"
+#: object-file.c:1869
+msgid "unable to create temporary file"
+msgstr "无法创建临时文件"
 
-#: pathspec.c:148
-msgid "Only one 'attr:' specification is allowed."
-msgstr "只允许一个 'attr:' 规格。"
+#: object-file.c:1893
+msgid "unable to write loose object file"
+msgstr "不能写松散对象文件"
 
-#: pathspec.c:151
-msgid "attr spec must not be empty"
-msgstr "属性规格不能为空"
+#: object-file.c:1899
+#, c-format
+msgid "unable to deflate new object %s (%d)"
+msgstr "不能压缩新对象 %s(%d)"
 
-#: pathspec.c:194
+#: object-file.c:1903
 #, c-format
-msgid "invalid attribute name %s"
-msgstr "无效的属性名 %s"
+msgid "deflateEnd on object %s failed (%d)"
+msgstr "在对象 %s 上调用 deflateEnd 失败(%d)"
 
-#: pathspec.c:259
-msgid "global 'glob' and 'noglob' pathspec settings are incompatible"
-msgstr "全局的 'glob' 和 'noglob' 路径规格设置不兼容"
+#: object-file.c:1907
+#, c-format
+msgid "confused by unstable object source data for %s"
+msgstr "被 %s 的不稳定对象源数据搞糊涂了"
 
-#: pathspec.c:266
-msgid ""
-"global 'literal' pathspec setting is incompatible with all other global "
-"pathspec settings"
-msgstr "全局的 'literal' 路径规格设置和其它的全局路径规格设置不兼容"
+#: object-file.c:1917 builtin/pack-objects.c:1097
+#, c-format
+msgid "failed utime() on %s"
+msgstr "在 %s 上调用 utime() 失败"
 
-#: pathspec.c:306
-msgid "invalid parameter for pathspec magic 'prefix'"
-msgstr "路径规格包含无效的神奇前缀"
+#: object-file.c:1994
+#, c-format
+msgid "cannot read object for %s"
+msgstr "不能读取对象 %s"
 
-#: pathspec.c:327
+#: object-file.c:2045
+msgid "corrupt commit"
+msgstr "损坏的提交"
+
+#: object-file.c:2053
+msgid "corrupt tag"
+msgstr "损坏的标签"
+
+#: object-file.c:2153
 #, c-format
-msgid "Invalid pathspec magic '%.*s' in '%s'"
-msgstr "在路径规格 '%3$s' 中无效的神奇前缀 '%2$.*1$s'"
+msgid "read error while indexing %s"
+msgstr "索引 %s 时读取错误"
 
-#: pathspec.c:332
+#: object-file.c:2156
 #, c-format
-msgid "Missing ')' at the end of pathspec magic in '%s'"
-msgstr "路径规格 '%s' 的神奇前缀结尾少了一个 ')'"
+msgid "short read while indexing %s"
+msgstr "索引 %s 时读入不完整"
 
-#: pathspec.c:370
+#: object-file.c:2229 object-file.c:2239
 #, c-format
-msgid "Unimplemented pathspec magic '%c' in '%s'"
-msgstr "路径规格 '%2$s' 中包含未实现的神奇前缀 '%1$c'"
+msgid "%s: failed to insert into database"
+msgstr "%s:插入数据库失败"
 
-#: pathspec.c:429
+#: object-file.c:2245
 #, c-format
-msgid "%s: 'literal' and 'glob' are incompatible"
-msgstr "%s:'literal' 和 'glob' 不兼容"
+msgid "%s: unsupported file type"
+msgstr "%s:不支持的文件类型"
 
-#: pathspec.c:445
+#: object-file.c:2269
 #, c-format
-msgid "%s: '%s' is outside repository at '%s'"
-msgstr "%s:'%s' 在位于 '%s' 的仓库之外"
+msgid "%s is not a valid object"
+msgstr "%s 不是一个有效的对象"
 
-#: pathspec.c:521
+#: object-file.c:2271
 #, c-format
-msgid "'%s' (mnemonic: '%c')"
-msgstr "'%s'(助记符:'%c')"
+msgid "%s is not a valid '%s' object"
+msgstr "%s 不是一个有效的 '%s' 对象"
 
-#: pathspec.c:531
+#: object-file.c:2298 builtin/index-pack.c:192
 #, c-format
-msgid "%s: pathspec magic not supported by this command: %s"
-msgstr "%s:路径规格神奇前缀不被此命令支持:%s"
+msgid "unable to open %s"
+msgstr "不能打开 %s"
 
-#: pathspec.c:598
+#: object-file.c:2488 object-file.c:2541
 #, c-format
-msgid "pathspec '%s' is beyond a symbolic link"
-msgstr "路径规格 '%s' 位于符号链接中"
+msgid "hash mismatch for %s (expected %s)"
+msgstr "%s 的哈希值不匹配(预期 %s)"
 
-#: pathspec.c:643
+#: object-file.c:2512
 #, c-format
-msgid "line is badly quoted: %s"
-msgstr "行被错误地引用:%s"
+msgid "unable to mmap %s"
+msgstr "不能 mmap %s"
 
-#: pkt-line.c:92
-msgid "unable to write flush packet"
-msgstr "无法写 flush 包"
+#: object-file.c:2517
+#, c-format
+msgid "unable to unpack header of %s"
+msgstr "无法解压缩 %s 的头部"
 
-#: pkt-line.c:99
-msgid "unable to write delim packet"
-msgstr "无法写 delim 包"
+#: object-file.c:2523
+#, c-format
+msgid "unable to parse header of %s"
+msgstr "无法解析 %s 的头部"
 
-#: pkt-line.c:106
-msgid "unable to write stateless separator packet"
-msgstr "无法写入无状态分隔符数据包"
+#: object-file.c:2534
+#, c-format
+msgid "unable to unpack contents of %s"
+msgstr "无法解压缩 %s 的内容"
 
-#: pkt-line.c:113
-msgid "flush packet write failed"
-msgstr "flush 包写错误"
+#: object-name.c:486
+#, c-format
+msgid "short object ID %s is ambiguous"
+msgstr "短对象ID %s 存在歧义"
 
-#: pkt-line.c:153 pkt-line.c:239
-msgid "protocol error: impossibly long line"
-msgstr "å\8d\8fè®®é\94\99误ï¼\9aä¸\8då\8f¯è\83½ç\9a\84é\95¿è¡\8c"
+#: object-name.c:497
+msgid "The candidates are:"
+msgstr "å\80\99é\80\89è\80\85æ\9c\89ï¼\9a"
 
-#: pkt-line.c:169 pkt-line.c:171
-msgid "packet write with format failed"
-msgstr "格式化包写入错误"
+#: object-name.c:796
+msgid ""
+"Git normally never creates a ref that ends with 40 hex characters\n"
+"because it will be ignored when you just specify 40-hex. These refs\n"
+"may be created by mistake. For example,\n"
+"\n"
+"  git switch -c $br $(git rev-parse ...)\n"
+"\n"
+"where \"$br\" is somehow empty and a 40-hex ref is created. Please\n"
+"examine these refs and maybe delete them. Turn this message off by\n"
+"running \"git config advice.objectNameWarning false\""
+msgstr ""
+"Git 通常不会创建一个以40个十六进制字符结尾的引用,因为当您只提供40\n"
+"个十六进制字符时将被忽略。这些引用可能被错误地创建。例如:\n"
+"\n"
+"  git switch -c $br $(git rev-parse ...)\n"
+"\n"
+"当 \"$br\" 某种原因空白时,一个40位十六进制的引用将被创建。请检查这些\n"
+"引用,可能需要删除它们。运行 \"git config advice.objectNameWarning\n"
+"false\" 命令关闭本消息通知。"
 
-#: pkt-line.c:203
-msgid "packet write failed - data exceeds max packet size"
-msgstr "写数据包失败:数据超过了包的最大长度"
+#: object-name.c:916
+#, c-format
+msgid "log for '%.*s' only goes back to %s"
+msgstr "'%.*s' 的日志仅能回到 %s"
 
-#: pkt-line.c:210 pkt-line.c:217
-msgid "packet write failed"
-msgstr "数据包写入失败"
+#: object-name.c:924
+#, c-format
+msgid "log for '%.*s' only has %d entries"
+msgstr "'%.*s' 的日志仅有 %d 个条目"
 
-#: pkt-line.c:302
-msgid "read error"
-msgstr "读取错误"
+#: object-name.c:1702
+#, c-format
+msgid "path '%s' exists on disk, but not in '%.*s'"
+msgstr "路径 '%s' 在磁盘上,但是不在 '%.*s' 中"
 
-#: pkt-line.c:310
-msgid "the remote end hung up unexpectedly"
-msgstr "远端意外挂断了"
+#: object-name.c:1708
+#, c-format
+msgid ""
+"path '%s' exists, but not '%s'\n"
+"hint: Did you mean '%.*s:%s' aka '%.*s:./%s'?"
+msgstr ""
+"路径 '%s' 存在,而 '%s' 不存在\n"
+"提示:您的意思是 '%.*s:%s' 亦即 '%.*s:./%s'?"
 
-#: pkt-line.c:338
+#: object-name.c:1717
 #, c-format
-msgid "protocol error: bad line length character: %.4s"
-msgstr "协议错误:错误的行长度字符串:%.4s"
+msgid "path '%s' does not exist in '%.*s'"
+msgstr "路径 '%s' 不在 '%.*s' 中"
 
-#: pkt-line.c:352 pkt-line.c:357
+#: object-name.c:1745
 #, c-format
-msgid "protocol error: bad line length %d"
-msgstr "协议错误:错误的行长度 %d"
+msgid ""
+"path '%s' is in the index, but not at stage %d\n"
+"hint: Did you mean ':%d:%s'?"
+msgstr ""
+"路径 '%s' 在索引中,但不在暂存区 %d 中\n"
+"提示:您的意思是 ':%d:%s'?"
 
-#: pkt-line.c:373 sideband.c:165
+#: object-name.c:1761
 #, c-format
-msgid "remote error: %s"
-msgstr "远程错误:%s"
+msgid ""
+"path '%s' is in the index, but not '%s'\n"
+"hint: Did you mean ':%d:%s' aka ':%d:./%s'?"
+msgstr ""
+"路径 '%s' 在索引中,但 '%s' 不在\n"
+"提示:您的意思是 ':%d:%s' 亦即 ':%d:./%s'?"
 
-#: preload-index.c:119
-msgid "Refreshing index"
-msgstr "正在刷新索引"
+#: object-name.c:1769
+#, c-format
+msgid "path '%s' exists on disk, but not in the index"
+msgstr "路径 '%s' 在磁盘上,但不在索引里"
 
-#: preload-index.c:138
+#: object-name.c:1771
 #, c-format
-msgid "unable to create threaded lstat: %s"
-msgstr "无法创建线程 lstat:%s"
+msgid "path '%s' does not exist (neither on disk nor in the index)"
+msgstr "路径 '%s' 不存在(既不在磁盘上,也不在索引中)"
 
-#: pretty.c:983
-msgid "unable to parse --pretty format"
-msgstr "不能解析 --pretty 格式"
+#: object-name.c:1784
+msgid "relative path syntax can't be used outside working tree"
+msgstr "不能在工作区之外使用相对路径语法"
 
-#: promisor-remote.c:30
-msgid "promisor-remote: unable to fork off fetch subprocess"
-msgstr "promisor-remote:无法派生 fetch 子进程"
+#: object-name.c:1922
+#, c-format
+msgid "invalid object name '%.*s'."
+msgstr "无效的对象名 '%.*s'。"
 
-#: promisor-remote.c:35 promisor-remote.c:37
-msgid "promisor-remote: could not write to fetch subprocess"
-msgstr "promisor-remote:无法向 fetch 子进程写入"
+#: object.c:53
+#, c-format
+msgid "invalid object type \"%s\""
+msgstr "无效的对象类型 \"%s\""
 
-#: promisor-remote.c:41
-msgid "promisor-remote: could not close stdin to fetch subprocess"
-msgstr "promisor-remote:无法关闭至 fetch 子进程的标准输入"
+#: object.c:173
+#, c-format
+msgid "object %s is a %s, not a %s"
+msgstr "对象 %s 是一个 %s,不是一个 %s"
 
-#: promisor-remote.c:53
+#: object.c:233
 #, c-format
-msgid "promisor remote name cannot begin with '/': %s"
-msgstr "promisor 远程名称不能以 '/' 开始:%s"
+msgid "object %s has unknown type id %d"
+msgstr "对象 %s 有未知的类型 id %d"
 
-#: prune-packed.c:35
-msgid "Removing duplicate objects"
-msgstr "正在删除重复对象"
+#: object.c:246
+#, c-format
+msgid "unable to parse object: %s"
+msgstr "不能解析对象:%s"
 
-#: range-diff.c:77
-msgid "could not start `log`"
-msgstr "不能启动 `log`"
+#: object.c:266 object.c:278
+#, c-format
+msgid "hash mismatch %s"
+msgstr "哈希值与 %s 不匹配"
 
-#: range-diff.c:79
-msgid "could not read `log` output"
-msgstr "不能读取 `log` 的输出"
+#: pack-bitmap.c:843 pack-bitmap.c:849 builtin/pack-objects.c:2226
+#, c-format
+msgid "unable to get size of %s"
+msgstr "无法得到 %s 的大小"
 
-#: range-diff.c:98 sequencer.c:5310
+#: pack-bitmap.c:1489 builtin/rev-list.c:92
 #, c-format
-msgid "could not parse commit '%s'"
-msgstr "不能解析提交 '%s'"
+msgid "unable to get disk usage of %s"
+msgstr "无法得到 %s 的磁盘使用量"
 
-#: range-diff.c:112
+#: pack-revindex.c:220
 #, c-format
-msgid ""
-"could not parse first line of `log` output: did not start with 'commit ': "
-"'%s'"
-msgstr "无法解析 `log` 输出的首行:不是以 'commit ' 开头:'%s'"
+msgid "reverse-index file %s is too small"
+msgstr "反向索引文件 %s 太小"
 
-#: range-diff.c:137
+#: pack-revindex.c:225
 #, c-format
-msgid "could not parse git header '%.*s'"
-msgstr "无法解析 git 头 '%.*s'"
+msgid "reverse-index file %s is corrupt"
+msgstr "反向索引文件 %s 损坏"
 
-#: range-diff.c:299
-msgid "failed to generate diff"
-msgstr "生成 diff 失败"
+#: pack-revindex.c:233
+#, c-format
+msgid "reverse-index file %s has unknown signature"
+msgstr "反向索引文件 %s 有错误的签名"
 
-#: range-diff.c:532 range-diff.c:534
+#: pack-revindex.c:237
 #, c-format
-msgid "could not parse log for '%s'"
-msgstr "不能解析 '%s' 的日志"
+msgid "reverse-index file %s has unsupported version %<PRIu32>"
+msgstr "反向索引文件 %s 不支持的版本 %<PRIu32>"
 
-#: read-cache.c:682
+#: pack-revindex.c:242
 #, c-format
-msgid "will not add file alias '%s' ('%s' already exists in index)"
-msgstr "å°\86ä¸\8dä¼\9aæ·»å\8a æ\96\87件å\88«å\90\8d '%s'ï¼\88'%s' å·²ç»\8få­\98å\9c¨äº\8eç´¢å¼\95中ï¼\89"
+msgid "reverse-index file %s has unsupported hash id %<PRIu32>"
+msgstr "å\8f\8då\90\91ç´¢å¼\95æ\96\87件 %s æ\9c\89ä¸\8dæ\94¯æ\8c\81ç\9a\84å\93\88å¸\8c ID %<PRIu32>"
 
-#: read-cache.c:698
-msgid "cannot create an empty blob in the object database"
-msgstr "不能在对象数据库中创建空的数据对象"
+#: pack-write.c:236
+msgid "cannot both write and verify reverse index"
+msgstr "无法同时写入和校验反向索引"
 
-#: read-cache.c:720
+#: pack-write.c:257
 #, c-format
-msgid "%s: can only add regular files, symbolic links or git-directories"
-msgstr "%s:只能添加常规文件、符号链接或 git 目录"
+msgid "could not stat: %s"
+msgstr "不能调用 stat:%s"
 
-#: read-cache.c:725
+#: pack-write.c:269
 #, c-format
-msgid "'%s' does not have a commit checked out"
-msgstr "'%s' 没有检出一个提交"
+msgid "failed to make %s readable"
+msgstr "无法设置 %s 为可读"
 
-#: read-cache.c:777
+#: pack-write.c:508
 #, c-format
-msgid "unable to index file '%s'"
-msgstr "无法索引文件 '%s'"
+msgid "could not write '%s' promisor file"
+msgstr "无法写入 '%s' 承诺者文件"
 
-#: read-cache.c:796
-#, c-format
-msgid "unable to add '%s' to index"
-msgstr "无法在索引中添加 '%s'"
+#: packfile.c:625
+msgid "offset before end of packfile (broken .idx?)"
+msgstr "偏移量在包文件结束之前(损坏的 .idx?)"
 
-#: read-cache.c:807
+#: packfile.c:1934
 #, c-format
-msgid "unable to stat '%s'"
-msgstr "无法对 %s 执行 stat"
+msgid "offset before start of pack index for %s (corrupt index?)"
+msgstr "偏移量在 %s 的包索引开始之前(损坏的索引?)"
 
-#: read-cache.c:1318
+#: packfile.c:1938
 #, c-format
-msgid "'%s' appears as both a file and as a directory"
-msgstr "'%s' 看起来既是文件又是目录"
+msgid "offset beyond end of pack index for %s (truncated index?)"
+msgstr "偏移量越过了 %s 的包索引的结尾(被截断的索引?)"
 
-#: read-cache.c:1524
-msgid "Refresh index"
-msgstr "刷新索引"
+#: parse-options-cb.c:20 parse-options-cb.c:24
+#, c-format
+msgid "option `%s' expects a numerical value"
+msgstr "选项 `%s' 期望一个数字值"
 
-#: read-cache.c:1639
+#: parse-options-cb.c:41
 #, c-format
-msgid ""
-"index.version set, but the value is invalid.\n"
-"Using version %i"
-msgstr ""
-"设置了 index.version,但是取值无效。\n"
-"使用版本 %i"
+msgid "malformed expiration date '%s'"
+msgstr "格式错误的到期时间:'%s'"
 
-#: read-cache.c:1649
+#: parse-options-cb.c:54
 #, c-format
-msgid ""
-"GIT_INDEX_VERSION set, but the value is invalid.\n"
-"Using version %i"
-msgstr ""
-"设置了 GIT_INDEX_VERSION,但是取值无效。\n"
-"使用版本 %i"
+msgid "option `%s' expects \"always\", \"auto\", or \"never\""
+msgstr "选项 `%s' 期望 \"always\"、\"auto\" 或 \"never\""
 
-#: read-cache.c:1705
+#: parse-options-cb.c:132 parse-options-cb.c:149
 #, c-format
-msgid "bad signature 0x%08x"
-msgstr "坏的签名 0x%08x"
+msgid "malformed object name '%s'"
+msgstr "格式错误的对象名 '%s'"
 
-#: read-cache.c:1708
+#: parse-options.c:38
 #, c-format
-msgid "bad index version %d"
-msgstr "坏的索引版本 %d"
+msgid "%s requires a value"
+msgstr "%s 需要一个值"
 
-#: read-cache.c:1717
-msgid "bad index file sha1 signature"
-msgstr "坏的索引文件 sha1 签名"
+#: parse-options.c:73
+#, c-format
+msgid "%s is incompatible with %s"
+msgstr "%s 与 %s 不兼容"
 
-#: read-cache.c:1747
+#: parse-options.c:78
 #, c-format
-msgid "index uses %.4s extension, which we do not understand"
-msgstr "索引使用不被支持的 %.4s 扩展"
+msgid "%s : incompatible with something else"
+msgstr "%s:和其它的不兼容"
 
-#      
-#: read-cache.c:1749
+#: parse-options.c:92 parse-options.c:96 parse-options.c:317
 #, c-format
-msgid "ignoring %.4s extension"
-msgstr "忽略 %.4s 扩展"
+msgid "%s takes no value"
+msgstr "%s 不取值"
 
-#: read-cache.c:1786
+#: parse-options.c:94
 #, c-format
-msgid "unknown index entry format 0x%08x"
-msgstr "未知的索引条目格式 0x%08x"
+msgid "%s isn't available"
+msgstr "%s 不可用"
 
-#: read-cache.c:1802
+#: parse-options.c:217
 #, c-format
-msgid "malformed name field in the index, near path '%s'"
-msgstr "索引中靠近路径 '%s' 有错误的名称字段"
+msgid "%s expects a non-negative integer value with an optional k/m/g suffix"
+msgstr "%s 期望一个非负整数和一个可选的 k/m/g 后缀"
 
-#: read-cache.c:1859
-msgid "unordered stage entries in index"
-msgstr "索引中有未排序的暂存条目"
+#: parse-options.c:386
+#, c-format
+msgid "ambiguous option: %s (could be --%s%s or --%s%s)"
+msgstr "有歧义的选项:%s(可以是 --%s%s 或 --%s%s)"
 
-#: read-cache.c:1862
+#: parse-options.c:420 parse-options.c:428
 #, c-format
-msgid "multiple stage entries for merged file '%s'"
-msgstr "合并文件 '%s' 有多个暂存条目"
+msgid "did you mean `--%s` (with two dashes)?"
+msgstr "你的意思是 `--%s`(有两个短线)?"
 
-#: read-cache.c:1865
+#: parse-options.c:666 parse-options.c:971
 #, c-format
-msgid "unordered stage entries for '%s'"
-msgstr "'%s' 的未排序暂存条目"
+msgid "alias of --%s"
+msgstr "--%s 的别名"
 
-#: read-cache.c:1971 read-cache.c:2262 rerere.c:565 rerere.c:599 rerere.c:1111
-#: submodule.c:1628 builtin/add.c:538 builtin/check-ignore.c:181
-#: builtin/checkout.c:502 builtin/checkout.c:688 builtin/clean.c:991
-#: builtin/commit.c:364 builtin/diff-tree.c:122 builtin/grep.c:507
-#: builtin/mv.c:146 builtin/reset.c:247 builtin/rm.c:290
-#: builtin/submodule--helper.c:332
-msgid "index file corrupt"
-msgstr "索引文件损坏"
+#: parse-options.c:862
+#, c-format
+msgid "unknown option `%s'"
+msgstr "未知选项 `%s'"
 
-#: read-cache.c:2115
+#: parse-options.c:864
 #, c-format
-msgid "unable to create load_cache_entries thread: %s"
-msgstr "æ\97 æ³\95å\88\9b建 load_cache_entries çº¿ç¨\8bï¼\9a%s"
+msgid "unknown switch `%c'"
+msgstr "æ\9cªç\9f¥å¼\80å\85³ `%c'"
 
-#: read-cache.c:2128
+#: parse-options.c:866
 #, c-format
-msgid "unable to join load_cache_entries thread: %s"
-msgstr "无法加入 load_cache_entries 线程:%s"
+msgid "unknown non-ascii option in string: `%s'"
+msgstr "字符串中未知的非 ascii 字符选项:`%s'"
+
+#: parse-options.c:890
+msgid "..."
+msgstr "..."
 
-#: read-cache.c:2161
+#: parse-options.c:909
 #, c-format
-msgid "%s: index file open failed"
-msgstr "%s:打开索引文件失败"
+msgid "usage: %s"
+msgstr "用法:%s"
 
-#: read-cache.c:2165
+#. TRANSLATORS: the colon here should align with the
+#. one in "usage: %s" translation.
+#.
+#: parse-options.c:915
 #, c-format
-msgid "%s: cannot stat the open index"
-msgstr "%s:不能对打开的索引执行 stat 操作"
+msgid "   or: %s"
+msgstr "  或:%s"
 
-#: read-cache.c:2169
+#  译者:为保证在输出中对齐,注意调整句中空格!
+#: parse-options.c:918
 #, c-format
-msgid "%s: index file smaller than expected"
-msgstr "%s:索引文件比预期的小"
+msgid "    %s"
+msgstr "    %s"
+
+#: parse-options.c:957
+msgid "-NUM"
+msgstr "-数字"
 
-#: read-cache.c:2173
+#: path.c:915
 #, c-format
-msgid "%s: unable to map index file"
-msgstr "%s:无法对索引文件执行 map 操作"
+msgid "Could not make %s writable by group"
+msgstr "不能设置 %s 为组可写"
+
+#: pathspec.c:130
+msgid "Escape character '\\' not allowed as last character in attr value"
+msgstr "转义字符 '\\' 不能作为属性值的最后一个字符"
+
+#: pathspec.c:148
+msgid "Only one 'attr:' specification is allowed."
+msgstr "只允许一个 'attr:' 规格。"
+
+#: pathspec.c:151
+msgid "attr spec must not be empty"
+msgstr "属性规格不能为空"
 
-#: read-cache.c:2215
+#: pathspec.c:194
 #, c-format
-msgid "unable to create load_index_extensions thread: %s"
-msgstr "无法创建 load_index_extensions 线程:%s"
+msgid "invalid attribute name %s"
+msgstr "无效的属性名 %s"
+
+#: pathspec.c:259
+msgid "global 'glob' and 'noglob' pathspec settings are incompatible"
+msgstr "全局的 'glob' 和 'noglob' 路径规格设置不兼容"
+
+#: pathspec.c:266
+msgid ""
+"global 'literal' pathspec setting is incompatible with all other global "
+"pathspec settings"
+msgstr "全局的 'literal' 路径规格设置和其它的全局路径规格设置不兼容"
+
+#: pathspec.c:306
+msgid "invalid parameter for pathspec magic 'prefix'"
+msgstr "路径规格包含无效的神奇前缀"
 
-#: read-cache.c:2242
+#: pathspec.c:327
 #, c-format
-msgid "unable to join load_index_extensions thread: %s"
-msgstr "无法加入 load_index_extensions 线程:%s"
+msgid "Invalid pathspec magic '%.*s' in '%s'"
+msgstr "在路径规格 '%3$s' 中无效的神奇前缀 '%2$.*1$s'"
 
-#: read-cache.c:2274
+#: pathspec.c:332
 #, c-format
-msgid "could not freshen shared index '%s'"
-msgstr "无法刷新共享索引 '%s'"
+msgid "Missing ')' at the end of pathspec magic in '%s'"
+msgstr "路径规格 '%s' 的神奇前缀结尾少了一个 ')'"
 
-#: read-cache.c:2321
+#: pathspec.c:370
 #, c-format
-msgid "broken index, expect %s in %s, got %s"
-msgstr "损坏的索引,期望在 %2$s 中的 %1$s,得到 %3$s"
+msgid "Unimplemented pathspec magic '%c' in '%s'"
+msgstr "路径规格 '%2$s' 中包含未实现的神奇前缀 '%1$c'"
 
-#: read-cache.c:3017 strbuf.c:1171 wrapper.c:633 builtin/merge.c:1140
+#: pathspec.c:429
 #, c-format
-msgid "could not close '%s'"
-msgstr "不能关闭 '%s'"
+msgid "%s: 'literal' and 'glob' are incompatible"
+msgstr "%s:'literal' 和 'glob' 不兼容"
 
-#: read-cache.c:3120 sequencer.c:2479 sequencer.c:4231
+#: pathspec.c:445
 #, c-format
-msgid "could not stat '%s'"
-msgstr "不能对 '%s' 调用 stat"
+msgid "%s: '%s' is outside repository at '%s'"
+msgstr "%s:'%s' 在位于 '%s' 的仓库之外"
 
-#: read-cache.c:3133
+#: pathspec.c:521
 #, c-format
-msgid "unable to open git dir: %s"
-msgstr "不能打开 git 目录:%s"
+msgid "'%s' (mnemonic: '%c')"
+msgstr "'%s'(助记符:'%c')"
 
-#: read-cache.c:3145
+#: pathspec.c:531
 #, c-format
-msgid "unable to unlink: %s"
-msgstr "无法删除:%s"
+msgid "%s: pathspec magic not supported by this command: %s"
+msgstr "%s:路径规格神奇前缀不被此命令支持:%s"
 
-#: read-cache.c:3170
+#: pathspec.c:598
 #, c-format
-msgid "cannot fix permission bits on '%s'"
-msgstr "不能修复 '%s' 的权限位"
+msgid "pathspec '%s' is beyond a symbolic link"
+msgstr "路径规格 '%s' 位于符号链接中"
 
-#: read-cache.c:3319
+#: pathspec.c:643
 #, c-format
-msgid "%s: cannot drop to stage #0"
-msgstr "%s:不能落到暂存区 #0"
+msgid "line is badly quoted: %s"
+msgstr "行被错误地引用:%s"
 
-#: rebase-interactive.c:11
-msgid ""
-"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 ""
-"您可以用 'git rebase --edit-todo' 修正,然后执行 'git rebase --continue'。\n"
-"或者您可以用 'git rebase --abort' 终止变基。\n"
+#: pkt-line.c:92
+msgid "unable to write flush packet"
+msgstr "无法写 flush 包"
 
-#: rebase-interactive.c:33
-#, c-format
-msgid ""
-"unrecognized setting %s for option rebase.missingCommitsCheck. Ignoring."
-msgstr "选项 rebase.missingCommitsCheck 的值 %s 无法识别。已忽略。"
+#: pkt-line.c:99
+msgid "unable to write delim packet"
+msgstr "无法写 delim 包"
 
-#: rebase-interactive.c:42
-msgid ""
-"\n"
-"Commands:\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"
-"b, break = stop here (continue rebase later with 'git rebase --continue')\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 <提交> = 使用提交,进入 shell 以便进行提交修补\n"
-"s, squash <提交> = 使用提交,但融合到前一个提交\n"
-"f, fixup <提交> = 类似于 \"squash\",但丢弃提交说明日志\n"
-"x, exec <命令> = 使用 shell 运行命令(此行剩余部分)\n"
-"b, break = 在此处停止(使用 'git rebase --continue' 继续变基)\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"
+#: pkt-line.c:106
+msgid "unable to write stateless separator packet"
+msgstr "无法写入无状态分隔符数据包"
 
-#: rebase-interactive.c:63
-#, c-format
-msgid "Rebase %s onto %s (%d command)"
-msgid_plural "Rebase %s onto %s (%d commands)"
-msgstr[0] "变基 %s 到 %s(%d 个提交)"
-msgstr[1] "变基 %s 到 %s(%d 个提交)"
+#: pkt-line.c:113
+msgid "flush packet write failed"
+msgstr "flush 包写错误"
 
-#: rebase-interactive.c:72 git-rebase--preserve-merges.sh:218
-msgid ""
-"\n"
-"Do not remove any line. Use 'drop' explicitly to remove a commit.\n"
-msgstr ""
-"\n"
-"不要删除任意一行。使用 'drop' 显式地删除一个提交。\n"
+#: pkt-line.c:153 pkt-line.c:239
+msgid "protocol error: impossibly long line"
+msgstr "协议错误:不可能的长行"
 
-#: rebase-interactive.c:75 git-rebase--preserve-merges.sh:222
-msgid ""
-"\n"
-"If you remove a line here THAT COMMIT WILL BE LOST.\n"
-msgstr ""
-"\n"
-"如果您在这里删除一行,对应的提交将会丢失。\n"
+#: pkt-line.c:169 pkt-line.c:171
+msgid "packet write with format failed"
+msgstr "格式化包写入错误"
 
-#: rebase-interactive.c:81 git-rebase--preserve-merges.sh:861
-msgid ""
-"\n"
-"You are editing the todo file of an ongoing interactive rebase.\n"
-"To continue rebase after editing, run:\n"
-"    git rebase --continue\n"
-"\n"
-msgstr ""
-"\n"
-"您正在修改进行中的交互式变基待办列表。若要在编辑结束后继续变基,\n"
-"请执行:\n"
-"    git rebase --continue\n"
-"\n"
+#: pkt-line.c:203
+msgid "packet write failed - data exceeds max packet size"
+msgstr "写数据包失败:数据超过了包的最大长度"
 
-#: rebase-interactive.c:86 git-rebase--preserve-merges.sh:938
-msgid ""
-"\n"
-"However, if you remove everything, the rebase will be aborted.\n"
-"\n"
-msgstr ""
-"\n"
-"然而,如果您删除全部内容,变基操作将会终止。\n"
-"\n"
+#: pkt-line.c:210 pkt-line.c:217
+msgid "packet write failed"
+msgstr "数据包写入失败"
 
-#: rebase-interactive.c:110 rerere.c:485 rerere.c:692 sequencer.c:3607
-#: sequencer.c:3633 sequencer.c:5416 builtin/fsck.c:347 builtin/rebase.c:270
-#, c-format
-msgid "could not write '%s'"
-msgstr "不能写入 '%s'"
+#: pkt-line.c:302
+msgid "read error"
+msgstr "读取错误"
 
-#: rebase-interactive.c:116 builtin/rebase.c:202 builtin/rebase.c:228
-#: builtin/rebase.c:252
-#, c-format
-msgid "could not write '%s'."
-msgstr "不能写入 '%s'。"
+#: pkt-line.c:310
+msgid "the remote end hung up unexpectedly"
+msgstr "远端意外挂断了"
 
-#: rebase-interactive.c:193
+#: pkt-line.c:338
 #, c-format
-msgid ""
-"Warning: some commits may have been dropped accidentally.\n"
-"Dropped commits (newer to older):\n"
-msgstr ""
-"警告:一些提交可能被意外丢弃。\n"
-"丢弃的提交(从新到旧):\n"
+msgid "protocol error: bad line length character: %.4s"
+msgstr "协议错误:错误的行长度字符串:%.4s"
 
-#: rebase-interactive.c:200
+#: pkt-line.c:352 pkt-line.c:357
 #, c-format
-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"
-"The possible behaviours are: ignore, warn, error.\n"
-"\n"
-msgstr ""
-"为避免这条信息,使用 \"drop\" 指令显式地删除一个提交。\n"
-"\n"
-"使用 'git config rebase.missingCommitsCheck' 来修改警告级别。\n"
-"可选值有:ignore、warn、error。\n"
-"\n"
+msgid "protocol error: bad line length %d"
+msgstr "协议错误:错误的行长度 %d"
 
-#: rebase-interactive.c:233 rebase-interactive.c:238 sequencer.c:2394
-#: builtin/rebase.c:188 builtin/rebase.c:213 builtin/rebase.c:239
-#: builtin/rebase.c:264
+#: pkt-line.c:373 sideband.c:165
 #, c-format
-msgid "could not read '%s'."
-msgstr "不能读取 '%s'。"
+msgid "remote error: %s"
+msgstr "远程错误:%s"
 
-#: ref-filter.c:42 wt-status.c:1973
-msgid "gone"
-msgstr "丢失"
+#: preload-index.c:125
+msgid "Refreshing index"
+msgstr "正在刷新索引"
 
-#: ref-filter.c:43
+#: preload-index.c:144
 #, c-format
-msgid "ahead %d"
-msgstr "领先 %d"
+msgid "unable to create threaded lstat: %s"
+msgstr "无法创建线程 lstat:%s"
 
-#: ref-filter.c:44
-#, c-format
-msgid "behind %d"
-msgstr "落后 %d"
+#: pretty.c:984
+msgid "unable to parse --pretty format"
+msgstr "不能解析 --pretty 格式"
 
-#: ref-filter.c:45
-#, c-format
-msgid "ahead %d, behind %d"
-msgstr "领先 %d,落后 %d"
+#: promisor-remote.c:30
+msgid "promisor-remote: unable to fork off fetch subprocess"
+msgstr "promisor-remote:无法派生 fetch 子进程"
 
-#: ref-filter.c:169
-#, c-format
-msgid "expected format: %%(color:<color>)"
-msgstr "期望的格式:%%(color:<颜色>)"
+#: promisor-remote.c:35 promisor-remote.c:37
+msgid "promisor-remote: could not write to fetch subprocess"
+msgstr "promisor-remote:无法向 fetch 子进程写入"
 
-#: ref-filter.c:171
-#, c-format
-msgid "unrecognized color: %%(color:%s)"
-msgstr "未能识别的颜色:%%(color:%s)"
+#: promisor-remote.c:41
+msgid "promisor-remote: could not close stdin to fetch subprocess"
+msgstr "promisor-remote:无法关闭至 fetch 子进程的标准输入"
 
-#: ref-filter.c:193
+#: promisor-remote.c:53
 #, c-format
-msgid "Integer value expected refname:lstrip=%s"
-msgstr "期望整数值 refname:lstrip=%s"
+msgid "promisor remote name cannot begin with '/': %s"
+msgstr "promisor 远程名称不能以 '/' 开始:%s"
 
-#: ref-filter.c:197
-#, c-format
-msgid "Integer value expected refname:rstrip=%s"
-msgstr "期望整数值 refname:rstrip=%s"
+#: prune-packed.c:35
+msgid "Removing duplicate objects"
+msgstr "正在删除重复对象"
 
-#: ref-filter.c:199
-#, c-format
-msgid "unrecognized %%(%s) argument: %s"
-msgstr "未能识别的 %%(%s) 参数:%s"
+#: range-diff.c:78
+msgid "could not start `log`"
+msgstr "不能启动 `log`"
 
-#: ref-filter.c:254
-#, c-format
-msgid "%%(objecttype) does not take arguments"
-msgstr "%%(objecttype) 不带参数"
+#: range-diff.c:80
+msgid "could not read `log` output"
+msgstr "不能读取 `log` 的输出"
 
-#: ref-filter.c:276
+#: range-diff.c:101 sequencer.c:5318
 #, c-format
-msgid "unrecognized %%(objectsize) argument: %s"
-msgstr "未能识别的 %%(objectsize) 参数:%s"
+msgid "could not parse commit '%s'"
+msgstr "不能解析提交 '%s'"
 
-#: ref-filter.c:284
+#: range-diff.c:115
 #, c-format
-msgid "%%(deltabase) does not take arguments"
-msgstr "%%(deltabase) 不带参数"
+msgid ""
+"could not parse first line of `log` output: did not start with 'commit ': "
+"'%s'"
+msgstr "无法解析 `log` 输出的首行:不是以 'commit ' 开头:'%s'"
 
-#: ref-filter.c:296
+#: range-diff.c:140
 #, c-format
-msgid "%%(body) does not take arguments"
-msgstr "%%(body) 不带参数"
+msgid "could not parse git header '%.*s'"
+msgstr "无法解析 git 头 '%.*s'"
 
-#: ref-filter.c:309
-#, c-format
-msgid "unrecognized %%(subject) argument: %s"
-msgstr "未能识别的 %%(subject) 参数:%s"
+#: range-diff.c:306
+msgid "failed to generate diff"
+msgstr "生成 diff 失败"
 
-#: ref-filter.c:330
-#, c-format
-msgid "unknown %%(trailers) argument: %s"
-msgstr "未知的 %%(trailers) 参数:%s"
+#: range-diff.c:558
+msgid "--left-only and --right-only are mutually exclusive"
+msgstr "--left-only 和 --right-only 互斥"
 
-#: ref-filter.c:363
+#: range-diff.c:561 range-diff.c:563
 #, c-format
-msgid "positive value expected contents:lines=%s"
-msgstr "期望一个正数 contents:lines=%s"
+msgid "could not parse log for '%s'"
+msgstr "不能解析 '%s' 的日志"
 
-#: ref-filter.c:365
+#: read-cache.c:682
 #, c-format
-msgid "unrecognized %%(contents) argument: %s"
-msgstr "未能识别的 %%(contents) 参数:%s"
+msgid "will not add file alias '%s' ('%s' already exists in index)"
+msgstr "将不会添加文件别名 '%s'('%s' 已经存在于索引中)"
+
+#: read-cache.c:698
+msgid "cannot create an empty blob in the object database"
+msgstr "不能在对象数据库中创建空的数据对象"
 
-#: ref-filter.c:380
+#: read-cache.c:720
 #, c-format
-msgid "positive value expected '%s' in %%(%s)"
-msgstr "期望 %%(%2$s) 中的 '%1$s' 是一个正数"
+msgid "%s: can only add regular files, symbolic links or git-directories"
+msgstr "%s:只能添加常规文件、符号链接或 git 目录"
 
-#: ref-filter.c:384
+#: read-cache.c:725
 #, c-format
-msgid "unrecognized argument '%s' in %%(%s)"
-msgstr "未能识别 %%(%2$s) 中的参数 '%1$s'"
+msgid "'%s' does not have a commit checked out"
+msgstr "'%s' 没有检出一个提交"
 
-#: ref-filter.c:398
+#: read-cache.c:777
 #, c-format
-msgid "unrecognized email option: %s"
-msgstr "æ\9cªè¯\86å\88«ç\9a\84é\82®ä»¶é\80\89项ï¼\9a%s"
+msgid "unable to index file '%s'"
+msgstr "æ\97 æ³\95ç´¢å¼\95æ\96\87件 '%s'"
 
-#: ref-filter.c:428
+#: read-cache.c:796
 #, c-format
-msgid "expected format: %%(align:<width>,<position>)"
-msgstr "æ\9c\9fæ\9c\9bç\9a\84æ ¼å¼\8fï¼\9a%%(align:<宽度>,<ä½\8dç½®>)"
+msgid "unable to add '%s' to index"
+msgstr "æ\97 æ³\95å\9c¨ç´¢å¼\95中添å\8a  '%s'"
 
-#: ref-filter.c:440
+#: read-cache.c:807
 #, c-format
-msgid "unrecognized position:%s"
-msgstr "æ\9cªè\83½è¯\86å\88«ç\9a\84ä½\8dç½®ï¼\9a%s"
+msgid "unable to stat '%s'"
+msgstr "æ\97 æ³\95对 %s æ\89§è¡\8c stat"
 
-#: ref-filter.c:447
+#: read-cache.c:1318
 #, c-format
-msgid "unrecognized width:%s"
-msgstr "未能识别的宽度:%s"
+msgid "'%s' appears as both a file and as a directory"
+msgstr "'%s' 看起来既是文件又是目录"
 
-#: ref-filter.c:456
-#, c-format
-msgid "unrecognized %%(align) argument: %s"
-msgstr "未能识别的 %%(align) 参数:%s"
+#: read-cache.c:1532
+msgid "Refresh index"
+msgstr "刷新索引"
 
-#: ref-filter.c:464
+#: read-cache.c:1657
 #, c-format
-msgid "positive width expected with the %%(align) atom"
-msgstr "元素 %%(align) 需要一个正数的宽度"
+msgid ""
+"index.version set, but the value is invalid.\n"
+"Using version %i"
+msgstr ""
+"设置了 index.version,但是取值无效。\n"
+"使用版本 %i"
 
-#: ref-filter.c:482
+#: read-cache.c:1667
 #, c-format
-msgid "unrecognized %%(if) argument: %s"
-msgstr "未能识别的 %%(if) 参数:%s"
+msgid ""
+"GIT_INDEX_VERSION set, but the value is invalid.\n"
+"Using version %i"
+msgstr ""
+"设置了 GIT_INDEX_VERSION,但是取值无效。\n"
+"使用版本 %i"
 
-#: ref-filter.c:584
+#: read-cache.c:1723
 #, c-format
-msgid "malformed field name: %.*s"
-msgstr "格式错误的字段名:%.*s"
+msgid "bad signature 0x%08x"
+msgstr "坏的签名 0x%08x"
 
-#: ref-filter.c:611
+#: read-cache.c:1726
 #, c-format
-msgid "unknown field name: %.*s"
-msgstr "未知的字段名:%.*s"
+msgid "bad index version %d"
+msgstr "坏的索引版本 %d"
 
-#: ref-filter.c:615
-#, c-format
-msgid ""
-"not a git repository, but the field '%.*s' requires access to object data"
-msgstr "不是 git 仓库,但是字段 '%.*s' 需要访问对象数据"
+#: read-cache.c:1735
+msgid "bad index file sha1 signature"
+msgstr "坏的索引文件 sha1 签名"
 
-#: ref-filter.c:739
+#: read-cache.c:1765
 #, c-format
-msgid "format: %%(if) atom used without a %%(then) atom"
-msgstr "格式:使用了 %%(if) 元素而没有 %%(then) 元素"
+msgid "index uses %.4s extension, which we do not understand"
+msgstr "索引使用不被支持的 %.4s 扩展"
 
-#: ref-filter.c:802
+#      
+#: read-cache.c:1767
 #, c-format
-msgid "format: %%(then) atom used without an %%(if) atom"
-msgstr "格式:使用了 %%(then) 元素而没有 %%(if) 元素"
+msgid "ignoring %.4s extension"
+msgstr "忽略 %.4s 扩展"
 
-#: ref-filter.c:804
+#: read-cache.c:1804
 #, c-format
-msgid "format: %%(then) atom used more than once"
-msgstr "æ ¼å¼\8fï¼\9a%%(then) å\85\83ç´ ç\94¨äº\86å¤\9a次"
+msgid "unknown index entry format 0x%08x"
+msgstr "æ\9cªç\9f¥ç\9a\84ç´¢å¼\95æ\9d¡ç\9b®æ ¼å¼\8f 0x%08x"
 
-#: ref-filter.c:806
+#: read-cache.c:1820
 #, c-format
-msgid "format: %%(then) atom used after %%(else)"
-msgstr "格式:%%(then) 元素用在了 %%(else) 之后"
+msgid "malformed name field in the index, near path '%s'"
+msgstr "索引中靠近路径 '%s' 有错误的名称字段"
+
+#: read-cache.c:1877
+msgid "unordered stage entries in index"
+msgstr "索引中有未排序的暂存条目"
 
-#: ref-filter.c:834
+#: read-cache.c:1880
 #, c-format
-msgid "format: %%(else) atom used without an %%(if) atom"
-msgstr "格式:使用了 %%(else) 元素而没有 %%(if) 元素"
+msgid "multiple stage entries for merged file '%s'"
+msgstr "合并文件 '%s' 有多个暂存条目"
 
-#: ref-filter.c:836
+#: read-cache.c:1883
 #, c-format
-msgid "format: %%(else) atom used without a %%(then) atom"
-msgstr "格式:使用了 %%(else) 元素而没有 %%(then) 元素"
+msgid "unordered stage entries for '%s'"
+msgstr "'%s' 的未排序暂存条目"
 
-#: ref-filter.c:838
+#: read-cache.c:1989 read-cache.c:2280 rerere.c:549 rerere.c:583 rerere.c:1095
+#: submodule.c:1634 builtin/add.c:546 builtin/check-ignore.c:181
+#: builtin/checkout.c:504 builtin/checkout.c:690 builtin/clean.c:991
+#: builtin/commit.c:364 builtin/diff-tree.c:122 builtin/grep.c:505
+#: builtin/mv.c:146 builtin/reset.c:247 builtin/rm.c:290
+#: builtin/submodule--helper.c:332
+msgid "index file corrupt"
+msgstr "索引文件损坏"
+
+#: read-cache.c:2133
 #, c-format
-msgid "format: %%(else) atom used more than once"
-msgstr "æ ¼å¼\8fï¼\9a%%(else) å\85\83ç´ ç\94¨äº\86å¤\9a次"
+msgid "unable to create load_cache_entries thread: %s"
+msgstr "æ\97 æ³\95å\88\9b建 load_cache_entries çº¿ç¨\8bï¼\9a%s"
 
-#: ref-filter.c:853
+#: read-cache.c:2146
 #, c-format
-msgid "format: %%(end) atom used without corresponding atom"
-msgstr "æ ¼å¼\8fï¼\9a使ç\94¨äº\86 %%(end) å\85\83ç´ å\8d´æ²¡æ\9c\89å®\83ç\9a\84对åº\94å\85\83ç´ "
+msgid "unable to join load_cache_entries thread: %s"
+msgstr "æ\97 æ³\95å\8a å\85¥ load_cache_entries çº¿ç¨\8bï¼\9a%s"
 
-#: ref-filter.c:910
+#: read-cache.c:2179
 #, c-format
-msgid "malformed format string %s"
-msgstr "错误的格式化字符串 %s"
+msgid "%s: index file open failed"
+msgstr "%s:打开索引文件失败"
 
-#: ref-filter.c:1549
+#: read-cache.c:2183
 #, c-format
-msgid "no branch, rebasing %s"
-msgstr "非分支,正变基 %s"
+msgid "%s: cannot stat the open index"
+msgstr "%s:不能对打开的索引执行 stat 操作"
 
-#: ref-filter.c:1552
+#: read-cache.c:2187
 #, c-format
-msgid "no branch, rebasing detached HEAD %s"
-msgstr "非分支,正变基分离头指针 %s"
+msgid "%s: index file smaller than expected"
+msgstr "%s:索引文件比预期的小"
 
-#: ref-filter.c:1555
+#: read-cache.c:2191
 #, c-format
-msgid "no branch, bisect started on %s"
-msgstr "非分支,二分查找开始于 %s"
+msgid "%s: unable to map index file"
+msgstr "%s:无法对索引文件执行 map 操作"
 
-#: ref-filter.c:1565
-msgid "no branch"
-msgstr "非分支"
+#: read-cache.c:2233
+#, c-format
+msgid "unable to create load_index_extensions thread: %s"
+msgstr "无法创建 load_index_extensions 线程:%s"
 
-#: ref-filter.c:1599 ref-filter.c:1808
+#: read-cache.c:2260
 #, c-format
-msgid "missing object %s for %s"
-msgstr "缺失 %2$s 的对象 %1$s"
+msgid "unable to join load_index_extensions thread: %s"
+msgstr "无法加入 load_index_extensions 线程:%s"
 
-#: ref-filter.c:1609
+#: read-cache.c:2292
 #, c-format
-msgid "parse_object_buffer failed on %s for %s"
-msgstr "parse_object_buffer 失败于 %2$s 的 %1$s"
+msgid "could not freshen shared index '%s'"
+msgstr "无法刷新共享索引 '%s'"
 
-#: ref-filter.c:2062
+#: read-cache.c:2339
 #, c-format
-msgid "malformed object at '%s'"
-msgstr "æ ¼å¼\8fé\94\99误ç\9a\84对象 '%s'"
+msgid "broken index, expect %s in %s, got %s"
+msgstr "æ\8d\9få\9d\8fç\9a\84ç´¢å¼\95ï¼\8cæ\9c\9fæ\9c\9bå\9c¨ %2$s ä¸­ç\9a\84 %1$sï¼\8cå¾\97å\88° %3$s"
 
-#: ref-filter.c:2151
+#: read-cache.c:3035 strbuf.c:1171 wrapper.c:633 builtin/merge.c:1141
 #, c-format
-msgid "ignoring ref with broken name %s"
-msgstr "忽略带有错误名称 %s 的引用"
+msgid "could not close '%s'"
+msgstr "不能关闭 '%s'"
 
-#: ref-filter.c:2156 refs.c:676
+#: read-cache.c:3138 sequencer.c:2487 sequencer.c:4239
 #, c-format
-msgid "ignoring broken ref %s"
-msgstr "忽略损坏的引用 %s"
+msgid "could not stat '%s'"
+msgstr "不能对 '%s' 调用 stat"
 
-#: ref-filter.c:2472
+#: read-cache.c:3151
 #, c-format
-msgid "format: %%(end) atom missing"
-msgstr "格式:缺少 %%(end) 元素"
+msgid "unable to open git dir: %s"
+msgstr "不能打开 git 目录:%s"
 
-#: ref-filter.c:2571
+#: read-cache.c:3163
 #, c-format
-msgid "malformed object name %s"
-msgstr "æ ¼å¼\8fé\94\99误ç\9a\84对象å\90\8d %s"
+msgid "unable to unlink: %s"
+msgstr "æ\97 æ³\95å\88 é\99¤ï¼\9a%s"
 
-#: ref-filter.c:2576
+#: read-cache.c:3188
 #, c-format
-msgid "option `%s' must point to a commit"
-msgstr "选项 `%s' 必须指向一个提交"
+msgid "cannot fix permission bits on '%s'"
+msgstr "不能修复 '%s' 的权限位"
 
-#: refs.c:264
+#: read-cache.c:3337
 #, c-format
-msgid "%s does not point to a valid object!"
-msgstr "%s 没有指向一个有效的对象!"
+msgid "%s: cannot drop to stage #0"
+msgstr "%s:不能落到暂存区 #0"
 
-#: refs.c:566
+#: rebase-interactive.c:11
+msgid ""
+"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 ""
+"您可以用 'git rebase --edit-todo' 修正,然后执行 'git rebase --continue'。\n"
+"或者您可以用 'git rebase --abort' 终止变基。\n"
+
+#: rebase-interactive.c:33
 #, c-format
 msgid ""
-"Using '%s' as the name for the initial branch. This default branch name\n"
-"is subject to change. To configure the initial branch name to use in all\n"
-"of your new repositories, which will suppress this warning, call:\n"
-"\n"
-"\tgit config --global init.defaultBranch <name>\n"
+"unrecognized setting %s for option rebase.missingCommitsCheck. Ignoring."
+msgstr "选项 rebase.missingCommitsCheck 的值 %s 无法识别。已忽略。"
+
+#: rebase-interactive.c:42
+msgid ""
 "\n"
-"Names commonly chosen instead of 'master' are 'main', 'trunk' and\n"
-"'development'. The just-created branch can be renamed via this command:\n"
+"Commands:\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"
+"b, break = stop here (continue rebase later with 'git rebase --continue')\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"
-"\tgit branch -m <name>\n"
+"These lines can be re-ordered; they are executed from top to bottom.\n"
 msgstr ""
-"使用 '%s' 作为初始分支的名称。这个默认分支名称可能会更改。要在新仓库中\n"
-"配置使用初始分支名,并消除这条警告,请执行:\n"
 "\n"
-"\tgit config --global init.defaultBranch <名称>\n"
-"\n"
-"除了 'master' 之外,通常选定的名字有 'main'、'trunk' 和 'development'。\n"
-"可以通过以下命令重命名刚创建的分支:\n"
+"命令:\n"
+"p, pick <提交> = 使用提交\n"
+"r, reword <提交> = 使用提交,但修改提交说明\n"
+"e, edit <提交> = 使用提交,进入 shell 以便进行提交修补\n"
+"s, squash <提交> = 使用提交,但融合到前一个提交\n"
+"f, fixup <提交> = 类似于 \"squash\",但丢弃提交说明日志\n"
+"x, exec <命令> = 使用 shell 运行命令(此行剩余部分)\n"
+"b, break = 在此处停止(使用 'git rebase --continue' 继续变基)\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"
-"\tgit branch -m <name>\n"
-
-#: refs.c:588
-#, c-format
-msgid "could not retrieve `%s`"
-msgstr "无法获取 `%s`"
+"可以对这些行重新排序,将从上至下执行。\n"
 
-#: refs.c:598
+#: rebase-interactive.c:63
 #, c-format
-msgid "invalid branch name: %s = %s"
-msgstr "无效的分支名:%s = %s"
+msgid "Rebase %s onto %s (%d command)"
+msgid_plural "Rebase %s onto %s (%d commands)"
+msgstr[0] "变基 %s 到 %s(%d 个提交)"
+msgstr[1] "变基 %s 到 %s(%d 个提交)"
 
-#: refs.c:674
-#, c-format
-msgid "ignoring dangling symref %s"
-msgstr "忽略悬空符号引用 %s"
+#: rebase-interactive.c:72 git-rebase--preserve-merges.sh:218
+msgid ""
+"\n"
+"Do not remove any line. Use 'drop' explicitly to remove a commit.\n"
+msgstr ""
+"\n"
+"不要删除任意一行。使用 'drop' 显式地删除一个提交。\n"
 
-#: refs.c:911
-#, c-format
-msgid "log for ref %s has gap after %s"
-msgstr "引用 %s 的日志在 %s 之后有缺口"
+#: rebase-interactive.c:75 git-rebase--preserve-merges.sh:222
+msgid ""
+"\n"
+"If you remove a line here THAT COMMIT WILL BE LOST.\n"
+msgstr ""
+"\n"
+"如果您在这里删除一行,对应的提交将会丢失。\n"
 
-#: refs.c:917
-#, c-format
-msgid "log for ref %s unexpectedly ended on %s"
-msgstr "引用 %s 的日志意外终止于 %s "
+#: rebase-interactive.c:81 git-rebase--preserve-merges.sh:861
+msgid ""
+"\n"
+"You are editing the todo file of an ongoing interactive rebase.\n"
+"To continue rebase after editing, run:\n"
+"    git rebase --continue\n"
+"\n"
+msgstr ""
+"\n"
+"您正在修改进行中的交互式变基待办列表。若要在编辑结束后继续变基,\n"
+"请执行:\n"
+"    git rebase --continue\n"
+"\n"
 
-#: refs.c:976
-#, c-format
-msgid "log for %s is empty"
-msgstr "%s 的日志为空"
+#: rebase-interactive.c:86 git-rebase--preserve-merges.sh:938
+msgid ""
+"\n"
+"However, if you remove everything, the rebase will be aborted.\n"
+"\n"
+msgstr ""
+"\n"
+"然而,如果您删除全部内容,变基操作将会终止。\n"
+"\n"
 
-#: refs.c:1068
+#: rebase-interactive.c:110 rerere.c:469 rerere.c:676 sequencer.c:3615
+#: sequencer.c:3641 sequencer.c:5424 builtin/fsck.c:329 builtin/rebase.c:272
 #, c-format
-msgid "refusing to update ref with bad name '%s'"
-msgstr "拒绝更新有错误名称 '%s' 的引用"
+msgid "could not write '%s'"
+msgstr "不能写入 '%s'"
 
-#: refs.c:1139
+#: rebase-interactive.c:116 builtin/rebase.c:204 builtin/rebase.c:230
+#: builtin/rebase.c:254
 #, c-format
-msgid "update_ref failed for ref '%s': %s"
-msgstr "对引用 '%s' 执行 update_ref 失败:%s"
+msgid "could not write '%s'."
+msgstr "不能写入 '%s'。"
 
-#: refs.c:1963
+#: rebase-interactive.c:193
 #, c-format
-msgid "multiple updates for ref '%s' not allowed"
-msgstr "不允许对引用 '%s' 多次更新"
-
-#: refs.c:2043
-msgid "ref updates forbidden inside quarantine environment"
-msgstr "在隔离环境中禁止更新引用"
-
-#: refs.c:2054
-msgid "ref updates aborted by hook"
-msgstr "引用更新被钩子中止"
+msgid ""
+"Warning: some commits may have been dropped accidentally.\n"
+"Dropped commits (newer to older):\n"
+msgstr ""
+"警告:一些提交可能被意外丢弃。\n"
+"丢弃的提交(从新到旧):\n"
 
-#: refs.c:2154 refs.c:2184
+#: rebase-interactive.c:200
 #, c-format
-msgid "'%s' exists; cannot create '%s'"
-msgstr "'%s' 已存在,无法创建 '%s'"
+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"
+"The possible behaviours are: ignore, warn, error.\n"
+"\n"
+msgstr ""
+"为避免这条信息,使用 \"drop\" 指令显式地删除一个提交。\n"
+"\n"
+"使用 'git config rebase.missingCommitsCheck' 来修改警告级别。\n"
+"可选值有:ignore、warn、error。\n"
+"\n"
 
-#: refs.c:2160 refs.c:2195
+#: rebase-interactive.c:233 rebase-interactive.c:238 sequencer.c:2402
+#: builtin/rebase.c:190 builtin/rebase.c:215 builtin/rebase.c:241
+#: builtin/rebase.c:266
 #, c-format
-msgid "cannot process '%s' and '%s' at the same time"
-msgstr "无法同时处理 '%s' 和 '%s'"
+msgid "could not read '%s'."
+msgstr "不能读取 '%s'。"
 
-#: refs/files-backend.c:1228
-#, c-format
-msgid "could not remove reference %s"
-msgstr "无法删除引用 %s"
+#: ref-filter.c:42 wt-status.c:1975
+msgid "gone"
+msgstr "丢失"
 
-#: refs/files-backend.c:1242 refs/packed-backend.c:1542
-#: refs/packed-backend.c:1552
+#: ref-filter.c:43
 #, c-format
-msgid "could not delete reference %s: %s"
-msgstr "无法删除引用 %s:%s"
+msgid "ahead %d"
+msgstr "领先 %d"
 
-#: refs/files-backend.c:1245 refs/packed-backend.c:1555
+#: ref-filter.c:44
 #, c-format
-msgid "could not delete references: %s"
-msgstr "无法删除引用:%s"
+msgid "behind %d"
+msgstr "落后 %d"
 
-#: refspec.c:170
+#: ref-filter.c:45
 #, c-format
-msgid "invalid refspec '%s'"
-msgstr "无效的引用表达式:'%s'"
+msgid "ahead %d, behind %d"
+msgstr "领先 %d,落后 %d"
 
-#: remote.c:351
+#: ref-filter.c:175
 #, c-format
-msgid "config remote shorthand cannot begin with '/': %s"
-msgstr "配置的远程短名称不能以 '/' 开始:%s"
-
-#: remote.c:399
-msgid "more than one receivepack given, using the first"
-msgstr "提供了一个以上的 receivepack,使用第一个"
-
-#: remote.c:407
-msgid "more than one uploadpack given, using the first"
-msgstr "提供了一个以上的 uploadpack,使用第一个"
+msgid "expected format: %%(color:<color>)"
+msgstr "期望的格式:%%(color:<颜色>)"
 
-#: remote.c:590
+#: ref-filter.c:177
 #, c-format
-msgid "Cannot fetch both %s and %s to %s"
-msgstr "不能同时获取 %s 和 %s 至 %s"
+msgid "unrecognized color: %%(color:%s)"
+msgstr "未能识别的颜色:%%(color:%s)"
 
-#: remote.c:594
+#: ref-filter.c:199
 #, c-format
-msgid "%s usually tracks %s, not %s"
-msgstr "%s 通常跟踪 %s,而非 %s"
+msgid "Integer value expected refname:lstrip=%s"
+msgstr "期望整数值 refname:lstrip=%s"
 
-#: remote.c:598
+#: ref-filter.c:203
 #, c-format
-msgid "%s tracks both %s and %s"
-msgstr "%s 同时跟踪 %s 和 %s"
+msgid "Integer value expected refname:rstrip=%s"
+msgstr "期望整数值 refname:rstrip=%s"
 
-#: remote.c:666
+#: ref-filter.c:205
 #, c-format
-msgid "key '%s' of pattern had no '*'"
-msgstr "模å¼\8fç\9a\84é\94® '%s' æ²¡æ\9c\89 '*'"
+msgid "unrecognized %%(%s) argument: %s"
+msgstr "æ\9cªè\83½è¯\86å\88«ç\9a\84 %%(%s) å\8f\82æ\95°ï¼\9a%s"
 
-#: remote.c:676
+#: ref-filter.c:260
 #, c-format
-msgid "value '%s' of pattern has no '*'"
-msgstr "模式的值 '%s' 没有 '*'"
+msgid "%%(objecttype) does not take arguments"
+msgstr "%%(objecttype) 不带参数"
 
-#: remote.c:1073
+#: ref-filter.c:282
 #, c-format
-msgid "src refspec %s does not match any"
-msgstr "æº\90å¼\95ç\94¨è¡¨è¾¾å¼\8f %s æ²¡æ\9c\89å\8c¹é\85\8d"
+msgid "unrecognized %%(objectsize) argument: %s"
+msgstr "æ\9cªè\83½è¯\86å\88«ç\9a\84 %%(objectsize) å\8f\82æ\95°ï¼\9a%s"
 
-#: remote.c:1078
+#: ref-filter.c:290
 #, c-format
-msgid "src refspec %s matches more than one"
-msgstr "源引用表达式 %s 匹配超过一个"
+msgid "%%(deltabase) does not take arguments"
+msgstr "%%(deltabase) 不带参数"
 
-#. TRANSLATORS: "matches '%s'%" is the <dst> part of "git push
-#. <remote> <src>:<dst>" push, and "being pushed ('%s')" is
-#. the <src>.
-#.
-#: remote.c:1093
+#: ref-filter.c:302
 #, c-format
-msgid ""
-"The destination you provided is not a full refname (i.e.,\n"
-"starting with \"refs/\"). We tried to guess what you meant by:\n"
-"\n"
-"- Looking for a ref that matches '%s' on the remote side.\n"
-"- Checking if the <src> being pushed ('%s')\n"
-"  is a ref in \"refs/{heads,tags}/\". If so we add a corresponding\n"
-"  refs/{heads,tags}/ prefix on the remote side.\n"
-"\n"
-"Neither worked, so we gave up. You must fully qualify the ref."
-msgstr ""
-"您提供的目标不是一个完整的引用名称(即以 \"refs/\" 开头)。我们\n"
-"试着猜测您的想法:\n"
-"\n"
-"- 在远端查询和 '%s' 匹配的引用。\n"
-"- 检查要推送的 <src>('%s')是不是在 \"refs/{heads,tags}/\" 中的\n"
-"  引用。如果是,我们会在对应的远端添加 refs/{heads,tags}/ 前缀。\n"
-"\n"
-"都不行,所以我们已放弃。您必须给出完整的引用。"
+msgid "%%(body) does not take arguments"
+msgstr "%%(body) 不带参数"
 
-#: remote.c:1113
+#: ref-filter.c:315
 #, c-format
-msgid ""
-"The <src> part of the refspec is a commit object.\n"
-"Did you mean to create a new branch by pushing to\n"
-"'%s:refs/heads/%s'?"
-msgstr ""
-"引用表达式的 <src> 是一个提交对象。您是想创建一个新的分支而向\n"
-"'%s:refs/heads/%s' 推送么?"
+msgid "unrecognized %%(subject) argument: %s"
+msgstr "未能识别的 %%(subject) 参数:%s"
 
-#: remote.c:1118
+#: ref-filter.c:334
 #, c-format
-msgid ""
-"The <src> part of the refspec is a tag object.\n"
-"Did you mean to create a new tag by pushing to\n"
-"'%s:refs/tags/%s'?"
-msgstr ""
-"引用表达式的 <src> 是一个标签对象。您是想创建一个新的标签而向\n"
-"'%s:refs/tags/%s' 推送么?"
+msgid "expected %%(trailers:key=<value>)"
+msgstr "预期 %%(trailers:key=<值>)"
 
-#: remote.c:1123
+#: ref-filter.c:336
 #, c-format
-msgid ""
-"The <src> part of the refspec is a tree object.\n"
-"Did you mean to tag a new tree by pushing to\n"
-"'%s:refs/tags/%s'?"
-msgstr ""
-"引用表达式的 <src> 是一个树对象。您是想为这个树对象创建标签而向\n"
-"'%s:refs/tags/%s' 推送么?"
+msgid "unknown %%(trailers) argument: %s"
+msgstr "未知的 %%(trailers) 参数:%s"
 
-#: remote.c:1128
+#: ref-filter.c:367
 #, c-format
-msgid ""
-"The <src> part of the refspec is a blob object.\n"
-"Did you mean to tag a new blob by pushing to\n"
-"'%s:refs/tags/%s'?"
-msgstr ""
-"引用表达式的 <src> 是一个数据对象。您是想为这个数据对象创建标签而向\n"
-"'%s:refs/tags/%s' 推送么?"
+msgid "positive value expected contents:lines=%s"
+msgstr "期望一个正数 contents:lines=%s"
 
-#: remote.c:1164
+#: ref-filter.c:369
 #, c-format
-msgid "%s cannot be resolved to branch"
-msgstr "%s 无法被解析为分支"
+msgid "unrecognized %%(contents) argument: %s"
+msgstr "未能识别的 %%(contents) 参数:%s"
 
-#: remote.c:1175
+#: ref-filter.c:384
 #, c-format
-msgid "unable to delete '%s': remote ref does not exist"
-msgstr "æ\97 æ³\95å\88 é\99¤ '%s'ï¼\9aè¿\9cç¨\8bå¼\95ç\94¨ä¸\8då­\98å\9c¨"
+msgid "positive value expected '%s' in %%(%s)"
+msgstr "æ\9c\9fæ\9c\9b %%(%2$s) ä¸­ç\9a\84 '%1$s' æ\98¯ä¸\80个正æ\95°"
 
-#: remote.c:1187
+#: ref-filter.c:388
 #, c-format
-msgid "dst refspec %s matches more than one"
-msgstr "目标引用表达式 %s 匹配超过一个"
+msgid "unrecognized argument '%s' in %%(%s)"
+msgstr "未能识别 %%(%2$s) 中的参数 '%1$s'"
 
-#: remote.c:1194
+#: ref-filter.c:402
 #, c-format
-msgid "dst ref %s receives from more than one src"
-msgstr "目标引用 %s 接收超过一个源"
-
-#: remote.c:1714 remote.c:1815
-msgid "HEAD does not point to a branch"
-msgstr "HEAD 没有指向一个分支"
+msgid "unrecognized email option: %s"
+msgstr "未识别的邮件选项:%s"
 
-#: remote.c:1723
+#: ref-filter.c:432
 #, c-format
-msgid "no such branch: '%s'"
-msgstr "没æ\9c\89æ­¤å\88\86æ\94¯ï¼\9a'%s'"
+msgid "expected format: %%(align:<width>,<position>)"
+msgstr "æ\9c\9fæ\9c\9bç\9a\84æ ¼å¼\8fï¼\9a%%(align:<宽度>,<ä½\8dç½®>)"
 
-#: remote.c:1726
+#: ref-filter.c:444
 #, c-format
-msgid "no upstream configured for branch '%s'"
-msgstr "尚未给分支 '%s' 设置上游"
+msgid "unrecognized position:%s"
+msgstr "未能识别的位置:%s"
 
-#: remote.c:1732
+#: ref-filter.c:451
 #, c-format
-msgid "upstream branch '%s' not stored as a remote-tracking branch"
-msgstr "上游分支 '%s' 没有存储为一个远程跟踪分支"
+msgid "unrecognized width:%s"
+msgstr "未能识别的宽度:%s"
 
-#: remote.c:1747
+#: ref-filter.c:460
 #, c-format
-msgid "push destination '%s' on remote '%s' has no local tracking branch"
-msgstr "æ\8e¨é\80\81ç\9b®æ \87 '%s' è\87³è¿\9cç¨\8b '%s' æ²¡æ\9c\89æ\9c¬å\9c°è·\9f踪å\88\86æ\94¯"
+msgid "unrecognized %%(align) argument: %s"
+msgstr "æ\9cªè\83½è¯\86å\88«ç\9a\84 %%(align) å\8f\82æ\95°ï¼\9a%s"
 
-#: remote.c:1759
+#: ref-filter.c:468
 #, c-format
-msgid "branch '%s' has no remote for pushing"
-msgstr "å\88\86æ\94¯ '%s' æ²¡æ\9c\89设置è¦\81æ\8e¨é\80\81ç\9a\84è¿\9cç¨\8bæ\9c\8då\8a¡å\99¨"
+msgid "positive width expected with the %%(align) atom"
+msgstr "å\85\83ç´  %%(align) é\9c\80è¦\81ä¸\80个正æ\95°ç\9a\84宽度"
 
-#: remote.c:1769
+#: ref-filter.c:486
 #, c-format
-msgid "push refspecs for '%s' do not include '%s'"
-msgstr "向 '%s' 推送引用规格未包含 '%s'"
-
-#: remote.c:1782
-msgid "push has no destination (push.default is 'nothing')"
-msgstr "推送无目标(push.default 是 'nothing')"
-
-#: remote.c:1804
-msgid "cannot resolve 'simple' push to a single destination"
-msgstr "无法解析 'simple' 推送至一个单独的目标"
+msgid "unrecognized %%(if) argument: %s"
+msgstr "未能识别的 %%(if) 参数:%s"
 
-#: remote.c:1933
+#: ref-filter.c:588
 #, c-format
-msgid "couldn't find remote ref %s"
-msgstr "æ\97 æ³\95æ\89¾å\88°è¿\9cç¨\8bå¼\95ç\94¨ %s"
+msgid "malformed field name: %.*s"
+msgstr "æ ¼å¼\8fé\94\99误ç\9a\84å­\97段å\90\8dï¼\9a%.*s"
 
-#: remote.c:1946
+#: ref-filter.c:615
 #, c-format
-msgid "* Ignoring funny ref '%s' locally"
-msgstr "* 在本地忽略可笑的引用 '%s'"
+msgid "unknown field name: %.*s"
+msgstr "未知的字段名:%.*s"
 
-#: remote.c:2109
+#: ref-filter.c:619
 #, c-format
-msgid "Your branch is based on '%s', but the upstream is gone.\n"
-msgstr "您的分支基于 '%s',但此上游分支已经不存在。\n"
-
-#: remote.c:2113
-msgid "  (use \"git branch --unset-upstream\" to fixup)\n"
-msgstr "  (使用 \"git branch --unset-upstream\" 来修复)\n"
+msgid ""
+"not a git repository, but the field '%.*s' requires access to object data"
+msgstr "不是 git 仓库,但是字段 '%.*s' 需要访问对象数据"
 
-#: remote.c:2116
+#: ref-filter.c:743
 #, c-format
-msgid "Your branch is up to date with '%s'.\n"
-msgstr "æ\82¨ç\9a\84å\88\86æ\94¯ä¸\8eä¸\8a游å\88\86æ\94¯ '%s' ä¸\80è\87´ã\80\82\n"
+msgid "format: %%(if) atom used without a %%(then) atom"
+msgstr "æ ¼å¼\8fï¼\9a使ç\94¨äº\86 %%(if) å\85\83ç´ è\80\8c没æ\9c\89 %%(then) å\85\83ç´ "
 
-#: remote.c:2120
+#: ref-filter.c:806
 #, c-format
-msgid "Your branch and '%s' refer to different commits.\n"
-msgstr "æ\82¨ç\9a\84å\88\86æ\94¯å\92\8c '%s' æ\8c\87å\90\91ä¸\8då\90\8cç\9a\84æ\8f\90交ã\80\82\n"
+msgid "format: %%(then) atom used without an %%(if) atom"
+msgstr "æ ¼å¼\8fï¼\9a使ç\94¨äº\86 %%(then) å\85\83ç´ è\80\8c没æ\9c\89 %%(if) å\85\83ç´ "
 
-#: remote.c:2123
+#: ref-filter.c:808
 #, c-format
-msgid "  (use \"%s\" for details)\n"
-msgstr "  (使用 \"%s\" 查看详情)\n"
+msgid "format: %%(then) atom used more than once"
+msgstr "格式:%%(then) 元素用了多次"
 
-#: remote.c:2127
+#: ref-filter.c:810
 #, 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"
+msgid "format: %%(then) atom used after %%(else)"
+msgstr "格式:%%(then) 元素用在了 %%(else) 之后"
 
-#: remote.c:2133
-msgid "  (use \"git push\" to publish your local commits)\n"
-msgstr "  (使用 \"git push\" 来发布您的本地提交)\n"
+#: ref-filter.c:838
+#, c-format
+msgid "format: %%(else) atom used without an %%(if) atom"
+msgstr "格式:使用了 %%(else) 元素而没有 %%(if) 元素"
 
-#: remote.c:2136
+#: ref-filter.c:840
 #, 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"
-msgstr[1] "您的分支落后 '%s' 共 %d 个提交,并且可以快进。\n"
+msgid "format: %%(else) atom used without a %%(then) atom"
+msgstr "格式:使用了 %%(else) 元素而没有 %%(then) 元素"
 
-#  译者:注意保持前导空格
-#: remote.c:2144
-msgid "  (use \"git pull\" to update your local branch)\n"
-msgstr "  (使用 \"git pull\" 来更新您的本地分支)\n"
+#: ref-filter.c:842
+#, c-format
+msgid "format: %%(else) atom used more than once"
+msgstr "格式:%%(else) 元素用了多次"
 
-#: remote.c:2147
+#: ref-filter.c:857
 #, c-format
-msgid ""
-"Your branch and '%s' have diverged,\n"
-"and have %d and %d different commit each, respectively.\n"
-msgid_plural ""
-"Your branch and '%s' have diverged,\n"
-"and have %d and %d different commits each, respectively.\n"
-msgstr[0] ""
-"您的分支和 '%s' 出现了偏离,\n"
-"并且分别有 %d 和 %d 处不同的提交。\n"
-msgstr[1] ""
-"您的分支和 '%s' 出现了偏离,\n"
-"并且分别有 %d 和 %d 处不同的提交。\n"
+msgid "format: %%(end) atom used without corresponding atom"
+msgstr "格式:使用了 %%(end) 元素却没有它的对应元素"
 
-#  译者:注意保持前导空格
-#: remote.c:2157
-msgid "  (use \"git pull\" to merge the remote branch into yours)\n"
-msgstr "  (使用 \"git pull\" 来合并远程分支)\n"
+#: ref-filter.c:914
+#, c-format
+msgid "malformed format string %s"
+msgstr "错误的格式化字符串 %s"
 
-#: remote.c:2349
+#: ref-filter.c:1555
 #, c-format
-msgid "cannot parse expected object name '%s'"
-msgstr "无法解析期望的对象名 '%s'"
+msgid "(no branch, rebasing %s)"
+msgstr "(非分支,正变基 %s)"
 
-#: replace-object.c:21
+#: ref-filter.c:1558
 #, c-format
-msgid "bad replace ref name: %s"
-msgstr "错误的替换引用名称:%s"
+msgid "(no branch, rebasing detached HEAD %s)"
+msgstr "(非分支,正变基分离头指针 %s)"
 
-#: replace-object.c:30
+#: ref-filter.c:1561
 #, c-format
-msgid "duplicate replace ref: %s"
-msgstr "重复的替换引用:%s"
+msgid "(no branch, bisect started on %s)"
+msgstr "(非分支,二分查找开始于 %s)"
 
-#: replace-object.c:82
+#: ref-filter.c:1565
 #, c-format
-msgid "replace depth too high for object %s"
-msgstr "对象 %s 的替换层级太深"
+msgid "(HEAD detached at %s)"
+msgstr "(头指针在 %s 分离)"
 
-#: rerere.c:217 rerere.c:226 rerere.c:229
-msgid "corrupt MERGE_RR"
-msgstr "损坏的 MERGE_RR"
+#: ref-filter.c:1568
+#, c-format
+msgid "(HEAD detached from %s)"
+msgstr "(头指针自 %s 分离)"
 
-#: rerere.c:264 rerere.c:269
-msgid "unable to write rerere record"
-msgstr "无法写入 rerere 记录"
+#: ref-filter.c:1571
+msgid "(no branch)"
+msgstr "(非分支)"
 
-#: rerere.c:495
+#: ref-filter.c:1603 ref-filter.c:1812
 #, c-format
-msgid "there were errors while writing '%s' (%s)"
-msgstr "写入 '%s' (%s) 时出错"
+msgid "missing object %s for %s"
+msgstr "缺失 %2$s 的对象 %1$s"
 
-#: rerere.c:498
+#: ref-filter.c:1613
 #, c-format
-msgid "failed to flush '%s'"
-msgstr "刷新 '%s' 失败"
+msgid "parse_object_buffer failed on %s for %s"
+msgstr "parse_object_buffer 失败于 %2$s 的 %1$s"
 
-#: rerere.c:503 rerere.c:1039
+#: ref-filter.c:1996
 #, c-format
-msgid "could not parse conflict hunks in '%s'"
-msgstr "不能解析 '%s' 中的冲突块"
+msgid "malformed object at '%s'"
+msgstr "格式错误的对象 '%s'"
 
-#: rerere.c:684
+#: ref-filter.c:2085
 #, c-format
-msgid "failed utime() on '%s'"
-msgstr "å\9c¨ '%s' ä¸\8aè°\83ç\94¨ utime() å¤±è´¥"
+msgid "ignoring ref with broken name %s"
+msgstr "忽ç\95¥å¸¦æ\9c\89é\94\99误å\90\8d称 %s ç\9a\84å¼\95ç\94¨"
 
-#: rerere.c:694
+#: ref-filter.c:2090 refs.c:676
 #, c-format
-msgid "writing '%s' failed"
-msgstr "å\86\99å\85¥ '%s' å¤±è´¥"
+msgid "ignoring broken ref %s"
+msgstr "忽ç\95¥æ\8d\9få\9d\8fç\9a\84å¼\95ç\94¨ %s"
 
-#: rerere.c:714
+#: ref-filter.c:2430
 #, c-format
-msgid "Staged '%s' using previous resolution."
-msgstr "使用之前的解决方案暂存 '%s'。"
+msgid "format: %%(end) atom missing"
+msgstr "格式:缺少 %%(end) 元素"
 
-#: rerere.c:753
+#: ref-filter.c:2529
 #, c-format
-msgid "Recorded resolution for '%s'."
-msgstr "已记录 '%s' 的解决方案。"
+msgid "malformed object name %s"
+msgstr "格式错误的对象名 %s"
 
-#: rerere.c:788
+#: ref-filter.c:2534
 #, c-format
-msgid "Resolved '%s' using previous resolution."
-msgstr "使用之前的解决方案解决 '%s'。"
+msgid "option `%s' must point to a commit"
+msgstr "选项 `%s' 必须指向一个提交"
 
-#: rerere.c:803
+#: refs.c:264
 #, c-format
-msgid "cannot unlink stray '%s'"
-msgstr "不能删除 stray '%s'"
+msgid "%s does not point to a valid object!"
+msgstr "%s 没有指向一个有效的对象!"
 
-#: rerere.c:807
+#: refs.c:566
 #, c-format
-msgid "Recorded preimage for '%s'"
-msgstr "为 '%s' 记录 preimage"
+msgid ""
+"Using '%s' as the name for the initial branch. This default branch name\n"
+"is subject to change. To configure the initial branch name to use in all\n"
+"of your new repositories, which will suppress this warning, call:\n"
+"\n"
+"\tgit config --global init.defaultBranch <name>\n"
+"\n"
+"Names commonly chosen instead of 'master' are 'main', 'trunk' and\n"
+"'development'. The just-created branch can be renamed via this command:\n"
+"\n"
+"\tgit branch -m <name>\n"
+msgstr ""
+"使用 '%s' 作为初始分支的名称。这个默认分支名称可能会更改。要在新仓库中\n"
+"配置使用初始分支名,并消除这条警告,请执行:\n"
+"\n"
+"\tgit config --global init.defaultBranch <名称>\n"
+"\n"
+"除了 'master' 之外,通常选定的名字有 'main'、'trunk' 和 'development'。\n"
+"可以通过以下命令重命名刚创建的分支:\n"
+"\n"
+"\tgit branch -m <name>\n"
 
-#: rerere.c:881 submodule.c:2082 builtin/log.c:1992
-#: builtin/submodule--helper.c:1878 builtin/submodule--helper.c:1890
+#: refs.c:588
 #, c-format
-msgid "could not create directory '%s'"
-msgstr "不能创建目录 '%s'"
+msgid "could not retrieve `%s`"
+msgstr "无法获取 `%s`"
 
-#: rerere.c:1057
+#: refs.c:598
 #, c-format
-msgid "failed to update conflicted state in '%s'"
-msgstr "æ\9b´æ\96° '%s' ä¸­ç\9a\84å\86²çª\81ç\8a¶æ\80\81失败"
+msgid "invalid branch name: %s = %s"
+msgstr "æ\97 æ\95\88ç\9a\84å\88\86æ\94¯å\90\8dï¼\9a%s = %s"
 
-#: rerere.c:1068 rerere.c:1075
+#: refs.c:674
 #, c-format
-msgid "no remembered resolution for '%s'"
-msgstr "没有为 '%s' 记忆的解决方案"
+msgid "ignoring dangling symref %s"
+msgstr "忽略悬空符号引用 %s"
 
-#: rerere.c:1077
+#: refs.c:922
 #, c-format
-msgid "cannot unlink '%s'"
-msgstr "不能删除 '%s'"
+msgid "log for ref %s has gap after %s"
+msgstr "引用 %s 的日志在 %s 之后有缺口"
 
-#: rerere.c:1087
+#: refs.c:929
 #, c-format
-msgid "Updated preimage for '%s'"
-msgstr "已为 '%s' æ\9b´æ\96° preimage"
+msgid "log for ref %s unexpectedly ended on %s"
+msgstr "å¼\95ç\94¨ %s ç\9a\84æ\97¥å¿\97æ\84\8få¤\96ç»\88æ­¢äº\8e %s "
 
-#: rerere.c:1096
+#: refs.c:994
 #, c-format
-msgid "Forgot resolution for '%s'\n"
-msgstr "忘记 '%s' 的解决方案\n"
-
-#: rerere.c:1199
-msgid "unable to open rr-cache directory"
-msgstr "不能打开 rr-cache 目录"
-
-#: reset.c:42
-msgid "could not determine HEAD revision"
-msgstr "不能确定 HEAD 版本"
+msgid "log for %s is empty"
+msgstr "%s 的日志为空"
 
-#: reset.c:70 reset.c:76 sequencer.c:3460
+#: refs.c:1086
 #, c-format
-msgid "failed to find tree of %s"
-msgstr "无法找到 %s 指向的树。"
-
-#: revision.c:2336
-msgid "--unpacked=<packfile> no longer supported"
-msgstr "不再支持 --unpacked=<packfile>"
+msgid "refusing to update ref with bad name '%s'"
+msgstr "拒绝更新有错误名称 '%s' 的引用"
 
-#: revision.c:2356
+#: refs.c:1157
 #, c-format
-msgid "unknown value for --diff-merges: %s"
-msgstr "未知的 --diff-merges 取值:%s"
-
-#: revision.c:2694
-msgid "your current branch appears to be broken"
-msgstr "您的当前分支好像被损坏"
+msgid "update_ref failed for ref '%s': %s"
+msgstr "对引用 '%s' 执行 update_ref 失败:%s"
 
-#: revision.c:2697
+#: refs.c:2051
 #, c-format
-msgid "your current branch '%s' does not have any commits yet"
-msgstr "您的当前分支 '%s' 尚无任何提交"
+msgid "multiple updates for ref '%s' not allowed"
+msgstr "不允许对引用 '%s' 多次更新"
 
-#: revision.c:2907
-msgid "-L does not yet support diff formats besides -p and -s"
-msgstr "-L 尚不支持 -p 和 -s 之外的差异格式"
+#: refs.c:2131
+msgid "ref updates forbidden inside quarantine environment"
+msgstr "在隔离环境中禁止更新引用"
 
-#: run-command.c:764
-msgid "open /dev/null failed"
-msgstr "不能打开 /dev/null"
+#: refs.c:2142
+msgid "ref updates aborted by hook"
+msgstr "引用更新被钩子中止"
 
-#: run-command.c:1271
+#: refs.c:2242 refs.c:2272
 #, c-format
-msgid "cannot create async thread: %s"
-msgstr "不能创建 async 线程:%s"
+msgid "'%s' exists; cannot create '%s'"
+msgstr "'%s' 已存在,无法创建 '%s'"
 
-#: run-command.c:1335
+#: refs.c:2248 refs.c:2283
 #, c-format
-msgid ""
-"The '%s' hook was ignored because it's not set as executable.\n"
-"You can disable this warning with `git config advice.ignoredHook false`."
-msgstr ""
-"因为没有将钩子 '%s' 设置为可执行,钩子被忽略。您可以通过\n"
-"配置 `git config advice.ignoredHook false` 来关闭这条警告。"
-
-#: send-pack.c:146
-msgid "unexpected flush packet while reading remote unpack status"
-msgstr "读取远程解包状态时收到意外的 flush 包"
+msgid "cannot process '%s' and '%s' at the same time"
+msgstr "无法同时处理 '%s' 和 '%s'"
 
-#: send-pack.c:148
+#: refs/files-backend.c:1228
 #, c-format
-msgid "unable to parse remote unpack status: %s"
-msgstr "不能解析远程解包状态:%s"
+msgid "could not remove reference %s"
+msgstr "无法删除引用 %s"
 
-#: send-pack.c:150
+#: refs/files-backend.c:1242 refs/packed-backend.c:1542
+#: refs/packed-backend.c:1552
 #, c-format
-msgid "remote unpack failed: %s"
-msgstr "远程解包失败:%s"
-
-#: send-pack.c:374
-msgid "failed to sign the push certificate"
-msgstr "为推送证书签名失败"
+msgid "could not delete reference %s: %s"
+msgstr "无法删除引用 %s:%s"
 
-#: send-pack.c:467
-msgid "the receiving end does not support this repository's hash algorithm"
-msgstr "接收端不支持这个仓库的哈希算法"
+#: refs/files-backend.c:1245 refs/packed-backend.c:1555
+#, c-format
+msgid "could not delete references: %s"
+msgstr "无法删除引用:%s"
 
-#: send-pack.c:476
-msgid "the receiving end does not support --signed push"
-msgstr "接收端不支持签名推送"
+#: refspec.c:170
+#, c-format
+msgid "invalid refspec '%s'"
+msgstr "无效的引用表达式:'%s'"
 
-#: send-pack.c:478
-msgid ""
-"not sending a push certificate since the receiving end does not support --"
-"signed push"
-msgstr "未发送推送证书,因为接收端不支持签名推送"
+#: remote.c:351
+#, c-format
+msgid "config remote shorthand cannot begin with '/': %s"
+msgstr "配置的远程短名称不能以 '/' 开始:%s"
 
-#: send-pack.c:490
-msgid "the receiving end does not support --atomic push"
-msgstr "æ\8e¥æ\94¶ç«¯ä¸\8dæ\94¯æ\8c\81å\8e\9få­\90æ\8e¨é\80\81"
+#: remote.c:399
+msgid "more than one receivepack given, using the first"
+msgstr "æ\8f\90ä¾\9bäº\86ä¸\80个以ä¸\8aç\9a\84 receivepackï¼\8c使ç\94¨ç¬¬ä¸\80个"
 
-#: send-pack.c:495
-msgid "the receiving end does not support push options"
-msgstr "æ\8e¥æ\94¶ç«¯ä¸\8dæ\94¯æ\8c\81æ\8e¨é\80\81é\80\89项"
+#: remote.c:407
+msgid "more than one uploadpack given, using the first"
+msgstr "æ\8f\90ä¾\9bäº\86ä¸\80个以ä¸\8aç\9a\84 uploadpackï¼\8c使ç\94¨ç¬¬ä¸\80个"
 
-#: sequencer.c:195
+#: remote.c:590
 #, c-format
-msgid "invalid commit message cleanup mode '%s'"
-msgstr "无效的提交信息清理模式 '%s'"
+msgid "Cannot fetch both %s and %s to %s"
+msgstr "不能同时获取 %s 和 %s 至 %s"
 
-#: sequencer.c:323
+#: remote.c:594
 #, c-format
-msgid "could not delete '%s'"
-msgstr "无法删除 '%s'"
+msgid "%s usually tracks %s, not %s"
+msgstr "%s 通常跟踪 %s,而非 %s"
 
-#: sequencer.c:343 builtin/rebase.c:755 builtin/rebase.c:1596 builtin/rm.c:385
+#: remote.c:598
 #, c-format
-msgid "could not remove '%s'"
-msgstr "无法删除 '%s'"
+msgid "%s tracks both %s and %s"
+msgstr "%s 同时跟踪 %s 和 %s"
 
-#: sequencer.c:353
-msgid "revert"
-msgstr "还原"
+#: remote.c:666
+#, c-format
+msgid "key '%s' of pattern had no '*'"
+msgstr "模式的键 '%s' 没有 '*'"
 
-#: sequencer.c:355
-msgid "cherry-pick"
-msgstr "拣选"
+#: remote.c:676
+#, c-format
+msgid "value '%s' of pattern has no '*'"
+msgstr "模式的值 '%s' 没有 '*'"
 
-#: sequencer.c:357
-msgid "rebase"
-msgstr "变基"
+#: remote.c:1083
+#, c-format
+msgid "src refspec %s does not match any"
+msgstr "源引用表达式 %s 没有匹配"
 
-#: sequencer.c:359
+#: remote.c:1088
 #, c-format
-msgid "unknown action: %d"
-msgstr "æ\9cªç\9f¥å\8a¨ä½\9cï¼\9a%d"
+msgid "src refspec %s matches more than one"
+msgstr "æº\90å¼\95ç\94¨è¡¨è¾¾å¼\8f %s å\8c¹é\85\8dè¶\85è¿\87ä¸\80个"
 
-#: sequencer.c:418
+#. TRANSLATORS: "matches '%s'%" is the <dst> part of "git push
+#. <remote> <src>:<dst>" push, and "being pushed ('%s')" is
+#. the <src>.
+#.
+#: remote.c:1103
+#, c-format
 msgid ""
-"after resolving the conflicts, mark the corrected paths\n"
-"with 'git add <paths>' or 'git rm <paths>'"
+"The destination you provided is not a full refname (i.e.,\n"
+"starting with \"refs/\"). We tried to guess what you meant by:\n"
+"\n"
+"- Looking for a ref that matches '%s' on the remote side.\n"
+"- Checking if the <src> being pushed ('%s')\n"
+"  is a ref in \"refs/{heads,tags}/\". If so we add a corresponding\n"
+"  refs/{heads,tags}/ prefix on the remote side.\n"
+"\n"
+"Neither worked, so we gave up. You must fully qualify the ref."
 msgstr ""
-"冲突解决完毕后,用 'git add <路径>' 或 'git rm <路径>'\n"
-"命令标记修正后的文件"
+"您提供的目标不是一个完整的引用名称(即以 \"refs/\" 开头)。我们\n"
+"试着猜测您的想法:\n"
+"\n"
+"- 在远端查询和 '%s' 匹配的引用。\n"
+"- 检查要推送的 <src>('%s')是不是在 \"refs/{heads,tags}/\" 中的\n"
+"  引用。如果是,我们会在对应的远端添加 refs/{heads,tags}/ 前缀。\n"
+"\n"
+"都不行,所以我们已放弃。您必须给出完整的引用。"
 
-#: sequencer.c:421
+#: remote.c:1123
+#, c-format
 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'"
+"The <src> part of the refspec is a commit object.\n"
+"Did you mean to create a new branch by pushing to\n"
+"'%s:refs/heads/%s'?"
 msgstr ""
-"冲突解决完毕后,用 'git add <路径>' 或 'git rm <路径>'\n"
-"对修正后的文件做标记,然后用 'git commit' 提交"
-
-#: sequencer.c:434 sequencer.c:3062
-#, c-format
-msgid "could not lock '%s'"
-msgstr "不能锁定 '%s'"
+"引用表达式的 <src> 是一个提交对象。您是想创建一个新的分支而向\n"
+"'%s:refs/heads/%s' 推送么?"
 
-#: sequencer.c:436 sequencer.c:2861 sequencer.c:3066 sequencer.c:3080
-#: sequencer.c:3337 sequencer.c:5326 strbuf.c:1168 wrapper.c:631
+#: remote.c:1128
 #, c-format
-msgid "could not write to '%s'"
-msgstr "不能写入 '%s'"
+msgid ""
+"The <src> part of the refspec is a tag object.\n"
+"Did you mean to create a new tag by pushing to\n"
+"'%s:refs/tags/%s'?"
+msgstr ""
+"引用表达式的 <src> 是一个标签对象。您是想创建一个新的标签而向\n"
+"'%s:refs/tags/%s' 推送么?"
 
-#: sequencer.c:441
+#: remote.c:1133
 #, c-format
-msgid "could not write eol to '%s'"
-msgstr "不能将换行符写入 '%s'"
+msgid ""
+"The <src> part of the refspec is a tree object.\n"
+"Did you mean to tag a new tree by pushing to\n"
+"'%s:refs/tags/%s'?"
+msgstr ""
+"引用表达式的 <src> 是一个树对象。您是想为这个树对象创建标签而向\n"
+"'%s:refs/tags/%s' 推送么?"
 
-#: sequencer.c:446 sequencer.c:2866 sequencer.c:3068 sequencer.c:3082
-#: sequencer.c:3345
+#: remote.c:1138
 #, c-format
-msgid "failed to finalize '%s'"
-msgstr "无法完成 '%s'"
+msgid ""
+"The <src> part of the refspec is a blob object.\n"
+"Did you mean to tag a new blob by pushing to\n"
+"'%s:refs/tags/%s'?"
+msgstr ""
+"引用表达式的 <src> 是一个数据对象。您是想为这个数据对象创建标签而向\n"
+"'%s:refs/tags/%s' 推送么?"
 
-#: sequencer.c:485
+#: remote.c:1174
 #, c-format
-msgid "your local changes would be overwritten by %s."
-msgstr "您的本地修改将被%s覆盖。"
-
-#: sequencer.c:489
-msgid "commit your changes or stash them to proceed."
-msgstr "提交您的修改或贮藏后再继续。"
+msgid "%s cannot be resolved to branch"
+msgstr "%s 无法被解析为分支"
 
-#: sequencer.c:521
+#: remote.c:1185
 #, c-format
-msgid "%s: fast-forward"
-msgstr "%s:快进"
+msgid "unable to delete '%s': remote ref does not exist"
+msgstr "无法删除 '%s':远程引用不存在"
 
-#: sequencer.c:560 builtin/tag.c:566
+#: remote.c:1197
 #, c-format
-msgid "Invalid cleanup mode %s"
-msgstr "无效的清理模式 %s"
+msgid "dst refspec %s matches more than one"
+msgstr "目标引用表达式 %s 匹配超过一个"
 
-#. TRANSLATORS: %s will be "revert", "cherry-pick" or
-#. "rebase".
-#.
-#: sequencer.c:670
+#: remote.c:1204
 #, c-format
-msgid "%s: Unable to write new index file"
-msgstr "%s:无法写入新索引文件"
-
-#: sequencer.c:687
-msgid "unable to update cache tree"
-msgstr "不能更新缓存树"
+msgid "dst ref %s receives from more than one src"
+msgstr "目标引用 %s 接收超过一个源"
 
-#: sequencer.c:701
-msgid "could not resolve HEAD commit"
-msgstr "不能解析 HEAD 提交"
+#: remote.c:1724 remote.c:1825
+msgid "HEAD does not point to a branch"
+msgstr "HEAD 没有指向一个分支"
 
-#: sequencer.c:781
+#: remote.c:1733
 #, c-format
-msgid "no key present in '%.*s'"
-msgstr "在 '%.*s' 中没有 key"
+msgid "no such branch: '%s'"
+msgstr "没有此分支:'%s'"
 
-#: sequencer.c:792
+#: remote.c:1736
 #, c-format
-msgid "unable to dequote value of '%s'"
-msgstr "无法为 '%s' 的值去引号"
+msgid "no upstream configured for branch '%s'"
+msgstr "尚未给分支 '%s' 设置上游"
 
-#: sequencer.c:829 wrapper.c:201 wrapper.c:371 builtin/am.c:710
-#: builtin/am.c:802 builtin/merge.c:1135 builtin/rebase.c:908
+#: remote.c:1742
 #, c-format
-msgid "could not open '%s' for reading"
-msgstr "无法打开 '%s' 进行读取"
-
-#: sequencer.c:839
-msgid "'GIT_AUTHOR_NAME' already given"
-msgstr "已经给出 'GIT_AUTHOR_NAME'"
-
-#: sequencer.c:844
-msgid "'GIT_AUTHOR_EMAIL' already given"
-msgstr "已经给出 'GIT_AUTHOR_EMAIL'"
-
-#: sequencer.c:849
-msgid "'GIT_AUTHOR_DATE' already given"
-msgstr "已经给出 'GIT_AUTHOR_DATE'"
+msgid "upstream branch '%s' not stored as a remote-tracking branch"
+msgstr "上游分支 '%s' 没有存储为一个远程跟踪分支"
 
-#: sequencer.c:853
+#: remote.c:1757
 #, c-format
-msgid "unknown variable '%s'"
-msgstr "未知变量 '%s'"
-
-#: sequencer.c:858
-msgid "missing 'GIT_AUTHOR_NAME'"
-msgstr "缺少 'GIT_AUTHOR_NAME'"
-
-#: sequencer.c:860
-msgid "missing 'GIT_AUTHOR_EMAIL'"
-msgstr "缺少 'GIT_AUTHOR_EMAIL'"
+msgid "push destination '%s' on remote '%s' has no local tracking branch"
+msgstr "推送目标 '%s' 至远程 '%s' 没有本地跟踪分支"
 
-#: sequencer.c:862
-msgid "missing 'GIT_AUTHOR_DATE'"
-msgstr "缺少 'GIT_AUTHOR_DATE'"
+#: remote.c:1769
+#, c-format
+msgid "branch '%s' has no remote for pushing"
+msgstr "分支 '%s' 没有设置要推送的远程服务器"
 
-#: sequencer.c:927
+#: remote.c:1779
 #, c-format
-msgid ""
-"you have staged changes in your working tree\n"
-"If these changes are meant to be squashed into the previous commit, run:\n"
-"\n"
-"  git commit --amend %s\n"
-"\n"
-"If they are meant to go into a new commit, run:\n"
-"\n"
-"  git commit %s\n"
-"\n"
-"In both cases, once you're done, continue with:\n"
-"\n"
-"  git rebase --continue\n"
-msgstr ""
-"您的工作区中存在已暂存的修改\n"
-"如果这些修改需要被并入前一个提交,执行:\n"
-"\n"
-"  git commit --amend %s\n"
-"\n"
-"如果这些修改要形成一个新提交,执行:\n"
-"\n"
-"  git commit %s\n"
-"\n"
-"无论哪种情况,当您完成提交,继续执行:\n"
-"\n"
-"  git rebase --continue\n"
+msgid "push refspecs for '%s' do not include '%s'"
+msgstr "向 '%s' 推送引用规格未包含 '%s'"
 
-#: sequencer.c:1208
-msgid "'prepare-commit-msg' hook failed"
-msgstr "'prepare-commit-msg' 钩子失败"
+#: remote.c:1792
+msgid "push has no destination (push.default is 'nothing')"
+msgstr "推送无目标(push.default 是 'nothing')"
 
-#: sequencer.c:1214
-msgid ""
-"Your name and email address were configured automatically based\n"
-"on your username and hostname. Please check that they are accurate.\n"
-"You can suppress this message by setting them explicitly. Run the\n"
-"following command and follow the instructions in your editor to edit\n"
-"your configuration file:\n"
-"\n"
-"    git config --global --edit\n"
-"\n"
-"After doing this, you may fix the identity used for this commit with:\n"
-"\n"
-"    git commit --amend --reset-author\n"
-msgstr ""
-"您的姓名和邮件地址基于登录名和主机名进行了自动设置。请检查它们正确\n"
-"与否。您可以对其进行设置以免再出现本提示信息。运行如下命令在编辑器\n"
-"中编辑您的配置文件:\n"
-"\n"
-"    git config --global --edit\n"
-"\n"
-"设置完毕后,您可以用下面的命令来修正本次提交所使用的用户身份:\n"
-"\n"
-"    git commit --amend --reset-author\n"
+#: remote.c:1814
+msgid "cannot resolve 'simple' push to a single destination"
+msgstr "无法解析 'simple' 推送至一个单独的目标"
 
-#: sequencer.c:1227
-msgid ""
-"Your name and email address were configured automatically based\n"
-"on your username and hostname. Please check that they are accurate.\n"
-"You can suppress this message by setting them explicitly:\n"
-"\n"
-"    git config --global user.name \"Your Name\"\n"
-"    git config --global user.email you@example.com\n"
-"\n"
-"After doing this, you may fix the identity used for this commit with:\n"
-"\n"
-"    git commit --amend --reset-author\n"
-msgstr ""
-"您的姓名和邮件地址基于登录名和主机名进行了自动设置。请检查它们正确\n"
-"与否。您可以对其进行设置以免再出现本提示信息:\n"
-"\n"
-"    git config --global user.name \"Your Name\"\n"
-"    git config --global user.email you@example.com\n"
-"\n"
-"设置完毕后,您可以用下面的命令来修正本次提交所使用的用户身份:\n"
-"\n"
-"    git commit --amend --reset-author\n"
+#: remote.c:1943
+#, c-format
+msgid "couldn't find remote ref %s"
+msgstr "无法找到远程引用 %s"
 
-#: sequencer.c:1269
-msgid "couldn't look up newly created commit"
-msgstr "无法找到新创建的提交"
+#: remote.c:1956
+#, c-format
+msgid "* Ignoring funny ref '%s' locally"
+msgstr "* 在本地忽略可笑的引用 '%s'"
 
-#: sequencer.c:1271
-msgid "could not parse newly created commit"
-msgstr "不能解析新创建的提交"
+#: remote.c:2119
+#, c-format
+msgid "Your branch is based on '%s', but the upstream is gone.\n"
+msgstr "您的分支基于 '%s',但此上游分支已经不存在。\n"
 
-#: sequencer.c:1317
-msgid "unable to resolve HEAD after creating commit"
-msgstr "创建提交后,不能解析 HEAD"
+#: remote.c:2123
+msgid "  (use \"git branch --unset-upstream\" to fixup)\n"
+msgstr "  (使用 \"git branch --unset-upstream\" 来修复)\n"
 
-#: sequencer.c:1319
-msgid "detached HEAD"
-msgstr "分离头指针"
+#: remote.c:2126
+#, c-format
+msgid "Your branch is up to date with '%s'.\n"
+msgstr "您的分支与上游分支 '%s' 一致。\n"
 
-#  译者:中文字符串拼接,可删除前导空格
-#: sequencer.c:1323
-msgid " (root-commit)"
-msgstr "(根提交)"
+#: remote.c:2130
+#, c-format
+msgid "Your branch and '%s' refer to different commits.\n"
+msgstr "您的分支和 '%s' 指向不同的提交。\n"
 
-#: sequencer.c:1344
-msgid "could not parse HEAD"
-msgstr "不能解析 HEAD"
+#: remote.c:2133
+#, c-format
+msgid "  (use \"%s\" for details)\n"
+msgstr "  (使用 \"%s\" 查看详情)\n"
 
-#: sequencer.c:1346
+#: remote.c:2137
 #, c-format
-msgid "HEAD %s is not a commit!"
-msgstr "HEAD %s 不是一个提交!"
+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"
 
-#: sequencer.c:1350 sequencer.c:1425 builtin/commit.c:1577
-msgid "could not parse HEAD commit"
-msgstr "不能解析 HEAD 提交"
+#: remote.c:2143
+msgid "  (use \"git push\" to publish your local commits)\n"
+msgstr "  (使用 \"git push\" 来发布您的本地提交)\n"
 
-#: sequencer.c:1403 sequencer.c:2100
-msgid "unable to parse commit author"
-msgstr "不能解析提交作者"
+#: remote.c:2146
+#, c-format
+msgid "Your branch is behind '%s' by %d commit, and can be fast-forwarded.\n"
+msgid_plural ""
+"Your branch is behind '%s' by %d commits, and can be fast-forwarded.\n"
+msgstr[0] "您的分支落后 '%s' 共 %d 个提交,并且可以快进。\n"
+msgstr[1] "您的分支落后 '%s' 共 %d 个提交,并且可以快进。\n"
 
-#: sequencer.c:1414 builtin/am.c:1566 builtin/merge.c:701
-msgid "git write-tree failed to write a tree"
-msgstr "git write-tree 无法写入树对象"
+#  译者:注意保持前导空格
+#: remote.c:2154
+msgid "  (use \"git pull\" to update your local branch)\n"
+msgstr "  (使用 \"git pull\" 来更新您的本地分支)\n"
 
-#: sequencer.c:1447 sequencer.c:1565
+#: remote.c:2157
 #, c-format
-msgid "unable to read commit message from '%s'"
-msgstr "不能从 '%s' 读取提交说明"
+msgid ""
+"Your branch and '%s' have diverged,\n"
+"and have %d and %d different commit each, respectively.\n"
+msgid_plural ""
+"Your branch and '%s' have diverged,\n"
+"and have %d and %d different commits each, respectively.\n"
+msgstr[0] ""
+"您的分支和 '%s' 出现了偏离,\n"
+"并且分别有 %d 和 %d 处不同的提交。\n"
+msgstr[1] ""
+"您的分支和 '%s' 出现了偏离,\n"
+"并且分别有 %d 和 %d 处不同的提交。\n"
+
+#  译者:注意保持前导空格
+#: remote.c:2167
+msgid "  (use \"git pull\" to merge the remote branch into yours)\n"
+msgstr "  (使用 \"git pull\" 来合并远程分支)\n"
 
-#: sequencer.c:1476 sequencer.c:1508
+#: remote.c:2359
 #, c-format
-msgid "invalid author identity '%s'"
-msgstr "æ\97 æ\95\88ç\9a\84ä½\9cè\80\85身份 '%s'"
+msgid "cannot parse expected object name '%s'"
+msgstr "æ\97 æ³\95解æ\9e\90æ\9c\9fæ\9c\9bç\9a\84对象å\90\8d '%s'"
 
-#: sequencer.c:1482
-msgid "corrupt author: missing date information"
-msgstr "损坏的作者:缺失日期信息"
+#: replace-object.c:21
+#, c-format
+msgid "bad replace ref name: %s"
+msgstr "错误的替换引用名称:%s"
 
-#: sequencer.c:1521 builtin/am.c:1593 builtin/commit.c:1678 builtin/merge.c:904
-#: builtin/merge.c:929 t/helper/test-fast-rebase.c:78
-msgid "failed to write commit object"
-msgstr "写提交对象失败"
+#: replace-object.c:30
+#, c-format
+msgid "duplicate replace ref: %s"
+msgstr "重复的替换引用:%s"
 
-#: sequencer.c:1548 sequencer.c:4283 t/helper/test-fast-rebase.c:198
+#: replace-object.c:82
 #, c-format
-msgid "could not update %s"
-msgstr "不能更新 %s"
+msgid "replace depth too high for object %s"
+msgstr "对象 %s 的替换层级太深"
 
-#: sequencer.c:1597
+#: rerere.c:201 rerere.c:210 rerere.c:213
+msgid "corrupt MERGE_RR"
+msgstr "损坏的 MERGE_RR"
+
+#: rerere.c:248 rerere.c:253
+msgid "unable to write rerere record"
+msgstr "无法写入 rerere 记录"
+
+#: rerere.c:479
 #, c-format
-msgid "could not parse commit %s"
-msgstr "不能解析提交 %s"
+msgid "there were errors while writing '%s' (%s)"
+msgstr "写入 '%s' (%s) 时出错"
 
-#: sequencer.c:1602
+#: rerere.c:482
 #, c-format
-msgid "could not parse parent commit %s"
-msgstr "不能解析父提交 %s"
+msgid "failed to flush '%s'"
+msgstr "刷新 '%s' 失败"
 
-#: sequencer.c:1685 sequencer.c:1796
+#: rerere.c:487 rerere.c:1023
 #, c-format
-msgid "unknown command: %d"
-msgstr "未知命令:%d"
+msgid "could not parse conflict hunks in '%s'"
+msgstr "不能解析 '%s' 中的冲突块"
 
-#: sequencer.c:1743 sequencer.c:1768
+#: rerere.c:668
 #, c-format
-msgid "This is a combination of %d commits."
-msgstr "这是一个 %d 个提交的组合。"
+msgid "failed utime() on '%s'"
+msgstr "在 '%s' 上调用 utime() 失败"
 
-#: sequencer.c:1753
-msgid "need a HEAD to fixup"
-msgstr "需要一个 HEAD 来修复"
+#: rerere.c:678
+#, c-format
+msgid "writing '%s' failed"
+msgstr "写入 '%s' 失败"
 
-#: sequencer.c:1755 sequencer.c:3372
-msgid "could not read HEAD"
-msgstr "不能读取 HEAD"
+#: rerere.c:698
+#, c-format
+msgid "Staged '%s' using previous resolution."
+msgstr "使用之前的解决方案暂存 '%s'。"
 
-#: sequencer.c:1757
-msgid "could not read HEAD's commit message"
-msgstr "不能读取 HEAD 的提交说明"
+#: rerere.c:737
+#, c-format
+msgid "Recorded resolution for '%s'."
+msgstr "已记录 '%s' 的解决方案。"
 
-#: sequencer.c:1763
+#: rerere.c:772
 #, c-format
-msgid "cannot write '%s'"
-msgstr "ä¸\8dè\83½å\86\99 '%s'"
+msgid "Resolved '%s' using previous resolution."
+msgstr "使ç\94¨ä¹\8bå\89\8dç\9a\84解å\86³æ\96¹æ¡\88解å\86³ '%s'ã\80\82"
 
-#: sequencer.c:1770 git-rebase--preserve-merges.sh:486
-msgid "This is the 1st commit message:"
-msgstr "这是第一个提交说明:"
+#: rerere.c:787
+#, c-format
+msgid "cannot unlink stray '%s'"
+msgstr "不能删除 stray '%s'"
 
-#: sequencer.c:1778
+#: rerere.c:791
 #, c-format
-msgid "could not read commit message of %s"
-msgstr "ä¸\8dè\83½è¯»å\8f\96 %s ç\9a\84æ\8f\90交说æ\98\8e"
+msgid "Recorded preimage for '%s'"
+msgstr "为 '%s' è®°å½\95 preimage"
 
-#: sequencer.c:1785
+#: rerere.c:865 submodule.c:2088 builtin/log.c:1991
+#: builtin/submodule--helper.c:1878 builtin/submodule--helper.c:1890
 #, c-format
-msgid "This is the commit message #%d:"
-msgstr "这是提交说明 #%d:"
+msgid "could not create directory '%s'"
+msgstr "不能创建目录 '%s'"
 
-#: sequencer.c:1791
+#: rerere.c:1041
 #, c-format
-msgid "The commit message #%d will be skipped:"
-msgstr "æ\8f\90交说æ\98\8e #%d å°\86被跳è¿\87ï¼\9a"
+msgid "failed to update conflicted state in '%s'"
+msgstr "æ\9b´æ\96° '%s' ä¸­ç\9a\84å\86²çª\81ç\8a¶æ\80\81失败"
 
-#: sequencer.c:1879
-msgid "your index file is unmerged."
-msgstr "您的索引文件未完成合并。"
+#: rerere.c:1052 rerere.c:1059
+#, c-format
+msgid "no remembered resolution for '%s'"
+msgstr "没有为 '%s' 记忆的解决方案"
 
-#: sequencer.c:1886
-msgid "cannot fixup root commit"
-msgstr "不能修复根提交"
+#: rerere.c:1061
+#, c-format
+msgid "cannot unlink '%s'"
+msgstr "不能删除 '%s'"
 
-#: sequencer.c:1905
+#: rerere.c:1071
 #, c-format
-msgid "commit %s is a merge but no -m option was given."
-msgstr "提交 %s 是一个合并提交但未提供 -m 选项。"
+msgid "Updated preimage for '%s'"
+msgstr "已为 '%s' 更新 preimage"
 
-#: sequencer.c:1913 sequencer.c:1921
+#: rerere.c:1080
 #, c-format
-msgid "commit %s does not have parent %d"
-msgstr "提交 %s 没有第 %d 个父提交"
+msgid "Forgot resolution for '%s'\n"
+msgstr "忘记 '%s' 的解决方案\n"
+
+#: rerere.c:1191
+msgid "unable to open rr-cache directory"
+msgstr "不能打开 rr-cache 目录"
 
-#: sequencer.c:1927
+#: reset.c:42
+msgid "could not determine HEAD revision"
+msgstr "不能确定 HEAD 版本"
+
+#: reset.c:70 reset.c:76 sequencer.c:3468
 #, c-format
-msgid "cannot get commit message for %s"
-msgstr "不能得到 %s 的提交说明"
+msgid "failed to find tree of %s"
+msgstr "无法找到 %s 指向的树。"
 
-#. TRANSLATORS: The first %s will be a "todo" command like
-#. "revert" or "pick", the second %s a SHA1.
-#: sequencer.c:1946
+#: revision.c:2338
+msgid "--unpacked=<packfile> no longer supported"
+msgstr "不再支持 --unpacked=<packfile>"
+
+#: revision.c:2668
+msgid "your current branch appears to be broken"
+msgstr "您的当前分支好像被损坏"
+
+#: revision.c:2671
 #, c-format
-msgid "%s: cannot parse parent commit %s"
-msgstr "%s:不能解析父提交 %s"
+msgid "your current branch '%s' does not have any commits yet"
+msgstr "您的当前分支 '%s' 尚无任何提交"
+
+#: revision.c:2877
+msgid "-L does not yet support diff formats besides -p and -s"
+msgstr "-L 尚不支持 -p 和 -s 之外的差异格式"
+
+#: run-command.c:767
+msgid "open /dev/null failed"
+msgstr "不能打开 /dev/null"
 
-#: sequencer.c:2011
+#: run-command.c:1274
 #, c-format
-msgid "could not rename '%s' to '%s'"
-msgstr "ä¸\8dè\83½å°\86 '%s' é\87\8då\91½å\90\8d为 '%s'"
+msgid "cannot create async thread: %s"
+msgstr "ä¸\8dè\83½å\88\9b建 async çº¿ç¨\8bï¼\9a%s"
 
-#: sequencer.c:2071
+#: run-command.c:1338
 #, c-format
-msgid "could not revert %s... %s"
-msgstr "不能还原 %s... %s"
+msgid ""
+"The '%s' hook was ignored because it's not set as executable.\n"
+"You can disable this warning with `git config advice.ignoredHook false`."
+msgstr ""
+"因为没有将钩子 '%s' 设置为可执行,钩子被忽略。您可以通过\n"
+"配置 `git config advice.ignoredHook false` 来关闭这条警告。"
+
+#: send-pack.c:146
+msgid "unexpected flush packet while reading remote unpack status"
+msgstr "读取远程解包状态时收到意外的 flush 包"
 
-#: sequencer.c:2072
+#: send-pack.c:148
 #, c-format
-msgid "could not apply %s... %s"
-msgstr "不能应用 %s... %s"
+msgid "unable to parse remote unpack status: %s"
+msgstr "不能解析远程解包状态:%s"
+
+#: send-pack.c:150
+#, c-format
+msgid "remote unpack failed: %s"
+msgstr "远程解包失败:%s"
+
+#: send-pack.c:374
+msgid "failed to sign the push certificate"
+msgstr "为推送证书签名失败"
 
-#: sequencer.c:2092
-#, c-format
-msgid "dropping %s %s -- patch contents already upstream\n"
-msgstr "丢弃 %s %s -- 补丁内容已在上游\n"
+#: send-pack.c:467
+msgid "the receiving end does not support this repository's hash algorithm"
+msgstr "接收端不支持这个仓库的哈希算法"
 
-#: sequencer.c:2150
-#, c-format
-msgid "git %s: failed to read the index"
-msgstr "git %s:无法读取索引"
+#: send-pack.c:476
+msgid "the receiving end does not support --signed push"
+msgstr "接收端不支持签名推送"
 
-#: sequencer.c:2157
-#, c-format
-msgid "git %s: failed to refresh the index"
-msgstr "git %s:无法刷新索引"
+#: send-pack.c:478
+msgid ""
+"not sending a push certificate since the receiving end does not support --"
+"signed push"
+msgstr "未发送推送证书,因为接收端不支持签名推送"
 
-#: sequencer.c:2234
-#, c-format
-msgid "%s does not accept arguments: '%s'"
-msgstr "%s 不接受参数:'%s'"
+#: send-pack.c:490
+msgid "the receiving end does not support --atomic push"
+msgstr "接收端不支持原子推送"
 
-#: sequencer.c:2243
-#, c-format
-msgid "missing arguments for %s"
-msgstr "缺少 %s 的参数"
+#: send-pack.c:495
+msgid "the receiving end does not support push options"
+msgstr "接收端不支持推送选项"
 
-#: sequencer.c:2274
+#: sequencer.c:195
 #, c-format
-msgid "could not parse '%s'"
-msgstr "æ\97 æ³\95解æ\9e\90 '%s'"
+msgid "invalid commit message cleanup mode '%s'"
+msgstr "æ\97 æ\95\88ç\9a\84æ\8f\90交信æ\81¯æ¸\85ç\90\86模å¼\8f '%s'"
 
-#: sequencer.c:2335
+#: sequencer.c:323
 #, c-format
-msgid "invalid line %d: %.*s"
-msgstr "æ\97 æ\95\88è¡\8c %dï¼\9a%.*s"
+msgid "could not delete '%s'"
+msgstr "æ\97 æ³\95å\88 é\99¤ '%s'"
 
-#: sequencer.c:2346
+#: sequencer.c:343 builtin/rebase.c:757 builtin/rebase.c:1602 builtin/rm.c:385
 #, c-format
-msgid "cannot '%s' without a previous commit"
-msgstr "没æ\9c\89ç\88¶æ\8f\90交ç\9a\84æ\83\85å\86µä¸\8bä¸\8dè\83½ '%s'"
+msgid "could not remove '%s'"
+msgstr "æ\97 æ³\95å\88 é\99¤ '%s'"
 
-#: sequencer.c:2432
-msgid "cancelling a cherry picking in progress"
-msgstr "正在取消一个进行中的拣选"
+#: sequencer.c:353
+msgid "revert"
+msgstr "还原"
 
-#: sequencer.c:2441
-msgid "cancelling a revert in progress"
-msgstr "æ­£å\9c¨å\8f\96æ¶\88ä¸\80个è¿\9bè¡\8c中ç\9a\84è¿\98å\8e\9f"
+#: sequencer.c:355
+msgid "cherry-pick"
+msgstr "æ\8b£é\80\89"
 
-#: sequencer.c:2485
-msgid "please fix this using 'git rebase --edit-todo'."
-msgstr "请用 'git rebase --edit-todo' 来修改。"
+#: sequencer.c:357
+msgid "rebase"
+msgstr "变基"
 
-#: sequencer.c:2487
+#: sequencer.c:359
 #, c-format
-msgid "unusable instruction sheet: '%s'"
-msgstr "不可用的指令清单:'%s'"
-
-#: sequencer.c:2492
-msgid "no commits parsed."
-msgstr "没有解析提交。"
+msgid "unknown action: %d"
+msgstr "未知动作:%d"
 
-#: sequencer.c:2503
-msgid "cannot cherry-pick during a revert."
-msgstr "不能在回退中执行拣选。"
+#: sequencer.c:418
+msgid ""
+"after resolving the conflicts, mark the corrected paths\n"
+"with 'git add <paths>' or 'git rm <paths>'"
+msgstr ""
+"冲突解决完毕后,用 'git add <路径>' 或 'git rm <路径>'\n"
+"命令标记修正后的文件"
 
-#: sequencer.c:2505
-msgid "cannot revert during a cherry-pick."
-msgstr "不能在拣选中执行回退。"
+#: sequencer.c:421
+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 ""
+"冲突解决完毕后,用 'git add <路径>' 或 'git rm <路径>'\n"
+"对修正后的文件做标记,然后用 'git commit' 提交"
 
-#: sequencer.c:2583
+#: sequencer.c:434 sequencer.c:3070
 #, c-format
-msgid "invalid value for %s: %s"
-msgstr "%s 的值无效:%s"
-
-#: sequencer.c:2690
-msgid "unusable squash-onto"
-msgstr "不可用的 squash-onto"
+msgid "could not lock '%s'"
+msgstr "不能锁定 '%s'"
 
-#: sequencer.c:2710
+#: sequencer.c:436 sequencer.c:2869 sequencer.c:3074 sequencer.c:3088
+#: sequencer.c:3345 sequencer.c:5334 strbuf.c:1168 wrapper.c:631
 #, c-format
-msgid "malformed options sheet: '%s'"
-msgstr "格式错误的选项清单:'%s'"
+msgid "could not write to '%s'"
+msgstr "不能写入 '%s'"
 
-#: sequencer.c:2803 sequencer.c:4636
-msgid "empty commit set passed"
-msgstr "提供了空的提交集"
+#: sequencer.c:441
+#, c-format
+msgid "could not write eol to '%s'"
+msgstr "不能将换行符写入 '%s'"
 
-#: sequencer.c:2820
-msgid "revert is already in progress"
-msgstr "一个还原操作已在进行"
+#: sequencer.c:446 sequencer.c:2874 sequencer.c:3076 sequencer.c:3090
+#: sequencer.c:3353
+#, c-format
+msgid "failed to finalize '%s'"
+msgstr "无法完成 '%s'"
 
-#: sequencer.c:2822
+#: sequencer.c:485
 #, c-format
-msgid "try \"git revert (--continue | %s--abort | --quit)\""
-msgstr "尝试 \"git revert (--continue | %s--abort | --quit)\""
+msgid "your local changes would be overwritten by %s."
+msgstr "您的本地修改将被%s覆盖。"
 
-#: sequencer.c:2825
-msgid "cherry-pick is already in progress"
-msgstr "æ\8b£é\80\89æ\93\8dä½\9cå·²å\9c¨è¿\9bè¡\8c"
+#: sequencer.c:489
+msgid "commit your changes or stash them to proceed."
+msgstr "æ\8f\90交æ\82¨ç\9a\84ä¿®æ\94¹æ\88\96è´®è\97\8få\90\8eå\86\8d继续ã\80\82"
 
-#: sequencer.c:2827
+#: sequencer.c:521
 #, c-format
-msgid "try \"git cherry-pick (--continue | %s--abort | --quit)\""
-msgstr "尝试 \"git cherry-pick (--continue | %s--abort | --quit)\""
+msgid "%s: fast-forward"
+msgstr "%s:快进"
 
-#: sequencer.c:2841
+#: sequencer.c:560 builtin/tag.c:598
 #, c-format
-msgid "could not create sequencer directory '%s'"
-msgstr "不能创建序列目录 '%s'"
-
-#: sequencer.c:2856
-msgid "could not lock HEAD"
-msgstr "不能锁定 HEAD"
+msgid "Invalid cleanup mode %s"
+msgstr "无效的清理模式 %s"
 
-#: sequencer.c:2916 sequencer.c:4371
-msgid "no cherry-pick or revert in progress"
-msgstr "拣选或还原操作并未进行"
+#. TRANSLATORS: %s will be "revert", "cherry-pick" or
+#. "rebase".
+#.
+#: sequencer.c:670
+#, c-format
+msgid "%s: Unable to write new index file"
+msgstr "%s:无法写入新索引文件"
 
-#: sequencer.c:2918 sequencer.c:2929
-msgid "cannot resolve HEAD"
-msgstr "不能解析 HEAD"
+#: sequencer.c:684
+msgid "unable to update cache tree"
+msgstr "不能更新缓存树"
 
-#: sequencer.c:2920 sequencer.c:2964
-msgid "cannot abort from a branch yet to be born"
-msgstr "不能从尚未建立的分支终止"
+#: sequencer.c:698
+msgid "could not resolve HEAD commit"
+msgstr "不能解析 HEAD 提交"
 
-#: sequencer.c:2950 builtin/grep.c:756
+#: sequencer.c:778
 #, c-format
-msgid "cannot open '%s'"
-msgstr "不能打开 '%s'"
+msgid "no key present in '%.*s'"
+msgstr "在 '%.*s' 中没有 key"
 
-#: sequencer.c:2952
+#: sequencer.c:789
 #, c-format
-msgid "cannot read '%s': %s"
-msgstr "不能读取 '%s':%s"
-
-#: sequencer.c:2953
-msgid "unexpected end of file"
-msgstr "意外的文件结束"
+msgid "unable to dequote value of '%s'"
+msgstr "无法为 '%s' 的值去引号"
 
-#: sequencer.c:2959
+#: sequencer.c:826 wrapper.c:201 wrapper.c:371 builtin/am.c:710
+#: builtin/am.c:802 builtin/merge.c:1136 builtin/rebase.c:910
 #, c-format
-msgid "stored pre-cherry-pick HEAD file '%s' is corrupt"
-msgstr "保存拣选提交前的 HEAD 文件 '%s' 损坏"
-
-#: sequencer.c:2970
-msgid "You seem to have moved HEAD. Not rewinding, check your HEAD!"
-msgstr "您好像移动了 HEAD。未能回退,检查您的 HEAD!"
-
-#: sequencer.c:3011
-msgid "no revert in progress"
-msgstr "没有正在进行的还原"
+msgid "could not open '%s' for reading"
+msgstr "无法打开 '%s' 进行读取"
 
-#: sequencer.c:3020
-msgid "no cherry-pick in progress"
-msgstr "没有正在进行的拣选"
+#: sequencer.c:836
+msgid "'GIT_AUTHOR_NAME' already given"
+msgstr "已经给出 'GIT_AUTHOR_NAME'"
 
-#: sequencer.c:3030
-msgid "failed to skip the commit"
-msgstr "无法跳过这个提交"
+#: sequencer.c:841
+msgid "'GIT_AUTHOR_EMAIL' already given"
+msgstr "已经给出 'GIT_AUTHOR_EMAIL'"
 
-#: sequencer.c:3037
-msgid "there is nothing to skip"
-msgstr "没有要跳过的"
+#: sequencer.c:846
+msgid "'GIT_AUTHOR_DATE' already given"
+msgstr "已经给出 'GIT_AUTHOR_DATE'"
 
-#: sequencer.c:3040
+#: sequencer.c:850
 #, c-format
-msgid ""
-"have you committed already?\n"
-"try \"git %s --continue\""
-msgstr ""
-"您已经提交了么?\n"
-"试试 \"git %s --continue\""
+msgid "unknown variable '%s'"
+msgstr "未知变量 '%s'"
 
-#: sequencer.c:3202 sequencer.c:4263
-msgid "cannot read HEAD"
-msgstr "不能读取 HEAD"
+#: sequencer.c:855
+msgid "missing 'GIT_AUTHOR_NAME'"
+msgstr "缺少 'GIT_AUTHOR_NAME'"
 
-#: sequencer.c:3219
-#, c-format
-msgid "unable to copy '%s' to '%s'"
-msgstr "无法拷贝 '%s' 至 '%s'"
+#: sequencer.c:857
+msgid "missing 'GIT_AUTHOR_EMAIL'"
+msgstr "缺少 'GIT_AUTHOR_EMAIL'"
 
-#: sequencer.c:3227
+#: sequencer.c:859
+msgid "missing 'GIT_AUTHOR_DATE'"
+msgstr "缺少 'GIT_AUTHOR_DATE'"
+
+#: sequencer.c:924
 #, c-format
 msgid ""
-"You can amend the commit now, with\n"
+"you have staged changes in your working tree\n"
+"If these changes are meant to be squashed into the previous commit, run:\n"
 "\n"
 "  git commit --amend %s\n"
 "\n"
-"Once you are satisfied with your changes, run\n"
+"If they are meant to go into a new commit, run:\n"
+"\n"
+"  git commit %s\n"
+"\n"
+"In both cases, once you're done, continue with:\n"
 "\n"
 "  git rebase --continue\n"
 msgstr ""
-"您现在可以修补这个提交,使用\n"
+"您的工作区中存在已暂存的修改\n"
+"如果这些修改需要被并入前一个提交,执行:\n"
 "\n"
 "  git commit --amend %s\n"
 "\n"
-"当您对变更感到满意,执行\n"
+"如果这些修改要形成一个新提交,执行:\n"
+"\n"
+"  git commit %s\n"
+"\n"
+"无论哪种情况,当您完成提交,继续执行:\n"
 "\n"
 "  git rebase --continue\n"
 
-#: sequencer.c:3237
-#, c-format
-msgid "Could not apply %s... %.*s"
-msgstr "不能应用 %s... %.*s"
-
-#: sequencer.c:3244
-#, c-format
-msgid "Could not merge %.*s"
-msgstr "不能合并 %.*s"
-
-#: sequencer.c:3258 sequencer.c:3262 builtin/difftool.c:640
-#, c-format
-msgid "could not copy '%s' to '%s'"
-msgstr "不能拷贝 '%s' 至 '%s'"
-
-#: sequencer.c:3274
-#, c-format
-msgid "Executing: %s\n"
-msgstr "正在执行:%s\n"
+#: sequencer.c:1211
+msgid "'prepare-commit-msg' hook failed"
+msgstr "'prepare-commit-msg' 钩子失败"
 
-#  译者:注意保持前导空格
-#: sequencer.c:3289
-#, c-format
+#: sequencer.c:1217
 msgid ""
-"execution failed: %s\n"
-"%sYou can fix the problem, and then run\n"
+"Your name and email address were configured automatically based\n"
+"on your username and hostname. Please check that they are accurate.\n"
+"You can suppress this message by setting them explicitly. Run the\n"
+"following command and follow the instructions in your editor to edit\n"
+"your configuration file:\n"
 "\n"
-"  git rebase --continue\n"
+"    git config --global --edit\n"
+"\n"
+"After doing this, you may fix the identity used for this commit with:\n"
+"\n"
+"    git commit --amend --reset-author\n"
+msgstr ""
+"您的姓名和邮件地址基于登录名和主机名进行了自动设置。请检查它们正确\n"
+"与否。您可以对其进行设置以免再出现本提示信息。运行如下命令在编辑器\n"
+"中编辑您的配置文件:\n"
 "\n"
-msgstr ""
-"执行失败:%s\n"
-"%s您可以改正该问题,然后运行\n"
+"    git config --global --edit\n"
 "\n"
-"  git rebase --continue\n"
+"设置完毕后,您可以用下面的命令来修正本次提交所使用的用户身份:\n"
 "\n"
+"    git commit --amend --reset-author\n"
 
-#: sequencer.c:3295
-msgid "and made changes to the index and/or the working tree\n"
-msgstr "并且修改索引和/或工作区\n"
-
-#: sequencer.c:3301
-#, c-format
+#: sequencer.c:1230
 msgid ""
-"execution succeeded: %s\n"
-"but left changes to the index and/or the working tree\n"
-"Commit or stash your changes, and then run\n"
+"Your name and email address were configured automatically based\n"
+"on your username and hostname. Please check that they are accurate.\n"
+"You can suppress this message by setting them explicitly:\n"
 "\n"
-"  git rebase --continue\n"
+"    git config --global user.name \"Your Name\"\n"
+"    git config --global user.email you@example.com\n"
+"\n"
+"After doing this, you may fix the identity used for this commit with:\n"
 "\n"
+"    git commit --amend --reset-author\n"
 msgstr ""
-"执行成功:%s\n"
-"但是在索引和/或工作区中存在变更\n"
-"提交或贮藏修改,然后运行\n"
+"您的姓名和邮件地址基于登录名和主机名进行了自动设置。请检查它们正确\n"
+"与否。您可以对其进行设置以免再出现本提示信息:\n"
 "\n"
-"  git rebase --continue\n"
+"    git config --global user.name \"Your Name\"\n"
+"    git config --global user.email you@example.com\n"
 "\n"
+"设置完毕后,您可以用下面的命令来修正本次提交所使用的用户身份:\n"
+"\n"
+"    git commit --amend --reset-author\n"
 
-#: sequencer.c:3362
-#, c-format
-msgid "illegal label name: '%.*s'"
-msgstr "非法的标签名称:'%.*s'"
+#: sequencer.c:1272
+msgid "couldn't look up newly created commit"
+msgstr "无法找到新创建的提交"
 
-#: sequencer.c:3416
-msgid "writing fake root commit"
-msgstr "写伪根提交"
+#: sequencer.c:1274
+msgid "could not parse newly created commit"
+msgstr "不能解析新创建的提交"
 
-#: sequencer.c:3421
-msgid "writing squash-onto"
-msgstr "å\86\99å\85¥ squash-onto"
+#: sequencer.c:1320
+msgid "unable to resolve HEAD after creating commit"
+msgstr "å\88\9b建æ\8f\90交å\90\8eï¼\8cä¸\8dè\83½è§£æ\9e\90 HEAD"
 
-#: sequencer.c:3505
-#, c-format
-msgid "could not resolve '%s'"
-msgstr "无法解析 '%s'"
+#: sequencer.c:1322
+msgid "detached HEAD"
+msgstr "分离头指针"
 
-#: sequencer.c:3538
-msgid "cannot merge without a current revision"
-msgstr "没有当前版本不能合并"
+#  译者:中文字符串拼接,可删除前导空格
+#: sequencer.c:1326
+msgid " (root-commit)"
+msgstr "(根提交)"
 
-#: sequencer.c:3560
-#, c-format
-msgid "unable to parse '%.*s'"
-msgstr "无法解析 '%.*s'"
+#: sequencer.c:1347
+msgid "could not parse HEAD"
+msgstr "不能解析 HEAD"
 
-#: sequencer.c:3569
+#: sequencer.c:1349
 #, c-format
-msgid "nothing to merge: '%.*s'"
-msgstr "无可用合并:'%.*s'"
+msgid "HEAD %s is not a commit!"
+msgstr "HEAD %s 不是一个提交!"
 
-#: sequencer.c:3581
-msgid "octopus merge cannot be executed on top of a [new root]"
-msgstr "章鱼合并不能在一个新的根提交上执行"
+#: sequencer.c:1353 sequencer.c:1431 builtin/commit.c:1577
+msgid "could not parse HEAD commit"
+msgstr "不能解析 HEAD 提交"
+
+#: sequencer.c:1409 sequencer.c:2108
+msgid "unable to parse commit author"
+msgstr "不能解析提交作者"
+
+#: sequencer.c:1420 builtin/am.c:1566 builtin/merge.c:702
+msgid "git write-tree failed to write a tree"
+msgstr "git write-tree 无法写入树对象"
 
-#: sequencer.c:3597
+#: sequencer.c:1453 sequencer.c:1573
 #, c-format
-msgid "could not get commit message of '%s'"
-msgstr "不能获取 '%s' 的提交说明"
+msgid "unable to read commit message from '%s'"
+msgstr "不能从 '%s' 读取提交说明"
 
-#: sequencer.c:3780
+#: sequencer.c:1484 sequencer.c:1516
 #, c-format
-msgid "could not even attempt to merge '%.*s'"
-msgstr "甚至不能尝试合并 '%.*s'"
+msgid "invalid author identity '%s'"
+msgstr "无效的作者身份 '%s'"
 
-#: sequencer.c:3796
-msgid "merge: Unable to write new index file"
-msgstr "合并:无法写入新索引文件"
+#: sequencer.c:1490
+msgid "corrupt author: missing date information"
+msgstr "损坏的作者:缺失日期信息"
 
-#: sequencer.c:3870
-msgid "Cannot autostash"
-msgstr "无法 autostash"
+#: sequencer.c:1529 builtin/am.c:1593 builtin/commit.c:1678 builtin/merge.c:905
+#: builtin/merge.c:930 t/helper/test-fast-rebase.c:78
+msgid "failed to write commit object"
+msgstr "写提交对象失败"
 
-#: sequencer.c:3873
+#: sequencer.c:1556 sequencer.c:4291 t/helper/test-fast-rebase.c:198
 #, c-format
-msgid "Unexpected stash response: '%s'"
-msgstr "意外的 stash 响应:'%s'"
+msgid "could not update %s"
+msgstr "不能更新 %s"
 
-#: sequencer.c:3879
+#: sequencer.c:1605
 #, c-format
-msgid "Could not create directory for '%s'"
-msgstr "不能为 '%s' 创建目录"
+msgid "could not parse commit %s"
+msgstr "不能解析提交 %s"
 
-#: sequencer.c:3882
+#: sequencer.c:1610
 #, c-format
-msgid "Created autostash: %s\n"
-msgstr "创建了 autostash:%s\n"
-
-#: sequencer.c:3886
-msgid "could not reset --hard"
-msgstr "无法 reset --hard"
+msgid "could not parse parent commit %s"
+msgstr "不能解析父提交 %s"
 
-#: sequencer.c:3911
+#: sequencer.c:1693 sequencer.c:1804
 #, c-format
-msgid "Applied autostash.\n"
-msgstr "已应用 autostash。\n"
+msgid "unknown command: %d"
+msgstr "未知命令:%d"
 
-#: sequencer.c:3923
+#: sequencer.c:1751 sequencer.c:1776
 #, c-format
-msgid "cannot store %s"
-msgstr "不能存储 %s"
+msgid "This is a combination of %d commits."
+msgstr "这是一个 %d 个提交的组合。"
+
+#: sequencer.c:1761
+msgid "need a HEAD to fixup"
+msgstr "需要一个 HEAD 来修复"
+
+#: sequencer.c:1763 sequencer.c:3380
+msgid "could not read HEAD"
+msgstr "不能读取 HEAD"
+
+#: sequencer.c:1765
+msgid "could not read HEAD's commit message"
+msgstr "不能读取 HEAD 的提交说明"
 
-#: sequencer.c:3926
+#: sequencer.c:1771
 #, c-format
-msgid ""
-"%s\n"
-"Your changes are safe in the stash.\n"
-"You can run \"git stash pop\" or \"git stash drop\" at any time.\n"
-msgstr ""
-"%s\n"
-"您的修改在贮藏区中很安全。\n"
-"您可以在任何时候运行 \"git stash pop\" 或 \"git stash drop\"。\n"
+msgid "cannot write '%s'"
+msgstr "不能写 '%s'"
 
-#: sequencer.c:3931
-msgid "Applying autostash resulted in conflicts."
-msgstr "应用自动贮藏导致冲突。"
+#: sequencer.c:1778 git-rebase--preserve-merges.sh:486
+msgid "This is the 1st commit message:"
+msgstr "这是第一个提交说明:"
 
-#: sequencer.c:3932
-msgid "Autostash exists; creating a new stash entry."
-msgstr "自动贮藏已经存在;正在创建一个新的贮藏条目。"
+#: sequencer.c:1786
+#, c-format
+msgid "could not read commit message of %s"
+msgstr "不能读取 %s 的提交说明"
 
-#: sequencer.c:4025 git-rebase--preserve-merges.sh:769
-msgid "could not detach HEAD"
-msgstr "不能分离头指针"
+#: sequencer.c:1793
+#, c-format
+msgid "This is the commit message #%d:"
+msgstr "这是提交说明 #%d:"
 
-#: sequencer.c:4040
+#: sequencer.c:1799
 #, c-format
-msgid "Stopped at HEAD\n"
-msgstr "停止在 HEAD\n"
+msgid "The commit message #%d will be skipped:"
+msgstr "提交说明 #%d 将被跳过:"
+
+#: sequencer.c:1887
+msgid "your index file is unmerged."
+msgstr "您的索引文件未完成合并。"
+
+#: sequencer.c:1894
+msgid "cannot fixup root commit"
+msgstr "不能修复根提交"
 
-#: sequencer.c:4042
+#: sequencer.c:1913
 #, c-format
-msgid "Stopped at %s\n"
-msgstr "停止在 %s\n"
+msgid "commit %s is a merge but no -m option was given."
+msgstr "提交 %s 是一个合并提交但未提供 -m 选项。"
 
-#: sequencer.c:4050
+#: sequencer.c:1921 sequencer.c:1929
 #, 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"
+msgid "commit %s does not have parent %d"
+msgstr "提交 %s 没有第 %d 个父提交"
 
-#: sequencer.c:4096
+#: sequencer.c:1935
 #, c-format
-msgid "Rebasing (%d/%d)%s"
-msgstr "正在变基(%d/%d)%s"
+msgid "cannot get commit message for %s"
+msgstr "不能得到 %s 的提交说明"
 
-#: sequencer.c:4141
+#. TRANSLATORS: The first %s will be a "todo" command like
+#. "revert" or "pick", the second %s a SHA1.
+#: sequencer.c:1954
 #, c-format
-msgid "Stopped at %s...  %.*s\n"
-msgstr "停止在 %s... %.*s\n"
+msgid "%s: cannot parse parent commit %s"
+msgstr "%s:不能解析父提交 %s"
 
-#: sequencer.c:4212
+#: sequencer.c:2019
 #, c-format
-msgid "unknown command %d"
-msgstr "未知命令 %d"
+msgid "could not rename '%s' to '%s'"
+msgstr "不能将 '%s' 重命名为 '%s'"
 
-#: sequencer.c:4271
-msgid "could not read orig-head"
-msgstr "不能读取 orig-head"
+#: sequencer.c:2079
+#, c-format
+msgid "could not revert %s... %s"
+msgstr "不能还原 %s... %s"
 
-#: sequencer.c:4276
-msgid "could not read 'onto'"
-msgstr "不能读取 'onto'"
+#: sequencer.c:2080
+#, c-format
+msgid "could not apply %s... %s"
+msgstr "不能应用 %s... %s"
 
-#: sequencer.c:4290
+#: sequencer.c:2100
 #, c-format
-msgid "could not update HEAD to %s"
-msgstr "ä¸\8dè\83½æ\9b´æ\96° HEAD ä¸º %s"
+msgid "dropping %s %s -- patch contents already upstream\n"
+msgstr "丢å¼\83 %s %s -- è¡¥ä¸\81å\86\85容已å\9c¨ä¸\8a游\n"
 
-#: sequencer.c:4350
+#: sequencer.c:2158
 #, c-format
-msgid "Successfully rebased and updated %s.\n"
-msgstr "成功变基并更新 %s。\n"
+msgid "git %s: failed to read the index"
+msgstr "git %s:无法读取索引"
 
-#: sequencer.c:4383
-msgid "cannot rebase: You have unstaged changes."
-msgstr "不能变基:您有未暂存的变更。"
+#: sequencer.c:2165
+#, c-format
+msgid "git %s: failed to refresh the index"
+msgstr "git %s:无法刷新索引"
 
-#: sequencer.c:4392
-msgid "cannot amend non-existing commit"
-msgstr "不能修补不存在的提交"
+#: sequencer.c:2242
+#, c-format
+msgid "%s does not accept arguments: '%s'"
+msgstr "%s 不接受参数:'%s'"
 
-#: sequencer.c:4394
+#: sequencer.c:2251
 #, c-format
-msgid "invalid file: '%s'"
-msgstr "无效文件:'%s'"
+msgid "missing arguments for %s"
+msgstr "缺少 %s 的参数"
 
-#: sequencer.c:4396
+#: sequencer.c:2282
 #, c-format
-msgid "invalid contents: '%s'"
-msgstr "æ\97 æ\95\88å\86\85容ï¼\9a'%s'"
+msgid "could not parse '%s'"
+msgstr "æ\97 æ³\95解æ\9e\90 '%s'"
 
-#: sequencer.c:4399
-msgid ""
-"\n"
-"You have uncommitted changes in your working tree. Please, commit them\n"
-"first and then run 'git rebase --continue' again."
-msgstr ""
-"\n"
-"您的工作区中有未提交的变更。请先提交然后再次运行 'git rebase --continue'。"
+#: sequencer.c:2343
+#, c-format
+msgid "invalid line %d: %.*s"
+msgstr "无效行 %d:%.*s"
 
-#: sequencer.c:4435 sequencer.c:4474
+#: sequencer.c:2354
 #, c-format
-msgid "could not write file: '%s'"
-msgstr "不能写入文件:'%s'"
+msgid "cannot '%s' without a previous commit"
+msgstr "没有父提交的情况下不能 '%s'"
 
-#: sequencer.c:4490
-msgid "could not remove CHERRY_PICK_HEAD"
-msgstr "不能删除 CHERRY_PICK_HEAD"
+#: sequencer.c:2440
+msgid "cancelling a cherry picking in progress"
+msgstr "正在取消一个进行中的拣选"
 
-#: sequencer.c:4497
-msgid "could not commit staged changes."
-msgstr "不能提交暂存的修改。"
+#: sequencer.c:2449
+msgid "cancelling a revert in progress"
+msgstr "正在取消一个进行中的还原"
 
-#: sequencer.c:4613
-#, c-format
-msgid "%s: can't cherry-pick a %s"
-msgstr "%s:不能拣选一个%s"
+#: sequencer.c:2493
+msgid "please fix this using 'git rebase --edit-todo'."
+msgstr "请用 'git rebase --edit-todo' 来修改。"
 
-#: sequencer.c:4617
+#: sequencer.c:2495
 #, c-format
-msgid "%s: bad revision"
-msgstr "%s:错误的版本"
-
-#: sequencer.c:4652
-msgid "can't revert as initial commit"
-msgstr "不能作为初始提交回退"
+msgid "unusable instruction sheet: '%s'"
+msgstr "不可用的指令清单:'%s'"
 
-#: sequencer.c:5129
-msgid "make_script: unhandled options"
-msgstr "make_script:有未能处理的选项"
+#: sequencer.c:2500
+msgid "no commits parsed."
+msgstr "没有解析提交。"
 
-#: sequencer.c:5132
-msgid "make_script: error preparing revisions"
-msgstr "make_script:准备版本时错误"
+#: sequencer.c:2511
+msgid "cannot cherry-pick during a revert."
+msgstr "不能在回退中执行拣选。"
 
-#: sequencer.c:5374 sequencer.c:5391
-msgid "nothing to do"
-msgstr "无事可做"
+#: sequencer.c:2513
+msgid "cannot revert during a cherry-pick."
+msgstr "不能在拣选中执行回退。"
 
-#: sequencer.c:5410
-msgid "could not skip unnecessary pick commands"
-msgstr "无法跳过不必要的拣选"
+#: sequencer.c:2591
+#, c-format
+msgid "invalid value for %s: %s"
+msgstr "%s 的值无效:%s"
 
-#: sequencer.c:5504
-msgid "the script was already rearranged."
-msgstr "脚本已经重新编排。"
+#: sequencer.c:2698
+msgid "unusable squash-onto"
+msgstr "不可用的 squash-onto"
 
-#: setup.c:133
+#: sequencer.c:2718
 #, c-format
-msgid "'%s' is outside repository at '%s'"
-msgstr "'%s' 在位于 '%s' 的仓库之外"
+msgid "malformed options sheet: '%s'"
+msgstr "格式错误的选项清单:'%s'"
 
-#: setup.c:185
-#, 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 ""
-"%s:工作区中无此路径。\n"
-"使用命令 'git <命令> -- <路径>...' 来指定本地不存在的路径。"
+#: sequencer.c:2811 sequencer.c:4644
+msgid "empty commit set passed"
+msgstr "提供了空的提交集"
 
-#: setup.c:198
-#, c-format
-msgid ""
-"ambiguous argument '%s': unknown revision or path not in the working tree.\n"
-"Use '--' to separate paths from revisions, like this:\n"
-"'git <command> [<revision>...] -- [<file>...]'"
-msgstr ""
-"有歧义的参数 '%s':未知的版本或路径不存在于工作区中。\n"
-"使用 '--' 来分隔版本和路径,例如:\n"
-"'git <命令> [<版本>...] -- [<文件>...]'"
+#: sequencer.c:2828
+msgid "revert is already in progress"
+msgstr "一个还原操作已在进行"
 
-#: setup.c:264
+#: sequencer.c:2830
 #, c-format
-msgid "option '%s' must come before non-option arguments"
-msgstr "选项 '%s' 必须在其他非选项参数之前"
+msgid "try \"git revert (--continue | %s--abort | --quit)\""
+msgstr "尝试 \"git revert (--continue | %s--abort | --quit)\""
 
-#: setup.c:283
+#: sequencer.c:2833
+msgid "cherry-pick is already in progress"
+msgstr "拣选操作已在进行"
+
+#: sequencer.c:2835
 #, c-format
-msgid ""
-"ambiguous argument '%s': both revision and filename\n"
-"Use '--' to separate paths from revisions, like this:\n"
-"'git <command> [<revision>...] -- [<file>...]'"
-msgstr ""
-"有歧义的参数 '%s':可同时是版本和文件\n"
-"使用 '--' 来分隔版本和路径,例如:\n"
-"'git <命令> [<版本>...] -- [<文件>...]'"
+msgid "try \"git cherry-pick (--continue | %s--abort | --quit)\""
+msgstr "尝试 \"git cherry-pick (--continue | %s--abort | --quit)\""
 
-#: setup.c:419
-msgid "unable to set up work tree using invalid config"
-msgstr "无法使用无效配置来创建工作区"
+#: sequencer.c:2849
+#, c-format
+msgid "could not create sequencer directory '%s'"
+msgstr "不能创建序列目录 '%s'"
 
-#: setup.c:423
-msgid "this operation must be run in a work tree"
-msgstr "该操作必须在一个工作区中运行"
+#: sequencer.c:2864
+msgid "could not lock HEAD"
+msgstr "不能锁定 HEAD"
 
-#: setup.c:661
-#, c-format
-msgid "Expected git repo version <= %d, found %d"
-msgstr "期望 git 仓库版本 <= %d,却得到 %d"
+#: sequencer.c:2924 sequencer.c:4379
+msgid "no cherry-pick or revert in progress"
+msgstr "拣选或还原操作并未进行"
 
-#: setup.c:669
-msgid "unknown repository extensions found:"
-msgstr "发现未知的仓库扩展:"
+#: sequencer.c:2926 sequencer.c:2937
+msgid "cannot resolve HEAD"
+msgstr "不能解析 HEAD"
 
-#: setup.c:681
-msgid "repo version is 0, but v1-only extensions found:"
-msgstr "ä»\93åº\93ç\9a\84ç\89\88æ\9c¬æ\98¯ 0ï¼\8cä½\86æ\98¯å\8f\91ç\8e°ä»\85ç\94¨äº\8e v1 ç\9a\84æ\89©å±\95ï¼\9a"
+#: sequencer.c:2928 sequencer.c:2972
+msgid "cannot abort from a branch yet to be born"
+msgstr "ä¸\8dè\83½ä»\8eå°\9aæ\9cªå»ºç«\8bç\9a\84å\88\86æ\94¯ç»\88æ­¢"
 
-#: setup.c:700
+#: sequencer.c:2958 builtin/grep.c:757
 #, c-format
-msgid "error opening '%s'"
-msgstr "打开 '%s' 出错"
+msgid "cannot open '%s'"
+msgstr "不能打开 '%s'"
 
-#: setup.c:702
+#: sequencer.c:2960
 #, c-format
-msgid "too large to be a .git file: '%s'"
-msgstr "文件太大,无法作为 .git 文件:'%s'"
+msgid "cannot read '%s': %s"
+msgstr "不能读取 '%s':%s"
 
-#: setup.c:704
-#, c-format
-msgid "error reading %s"
-msgstr "读取 %s 出错"
+#: sequencer.c:2961
+msgid "unexpected end of file"
+msgstr "意外的文件结束"
 
-#: setup.c:706
+#: sequencer.c:2967
 #, c-format
-msgid "invalid gitfile format: %s"
-msgstr "无效的 gitfile 格式:%s"
+msgid "stored pre-cherry-pick HEAD file '%s' is corrupt"
+msgstr "保存拣选提交前的 HEAD 文件 '%s' 损坏"
 
-#: setup.c:708
-#, c-format
-msgid "no path in gitfile: %s"
-msgstr "在 gitfile 中没有路径:%s"
+#: sequencer.c:2978
+msgid "You seem to have moved HEAD. Not rewinding, check your HEAD!"
+msgstr "您好像移动了 HEAD。未能回退,检查您的 HEAD!"
 
-#: setup.c:710
-#, c-format
-msgid "not a git repository: %s"
-msgstr "不是 git 仓库:%s"
+#: sequencer.c:3019
+msgid "no revert in progress"
+msgstr "没有正在进行的还原"
 
-#: setup.c:812
-#, c-format
-msgid "'$%s' too big"
-msgstr "'$%s' 太大"
+#: sequencer.c:3028
+msgid "no cherry-pick in progress"
+msgstr "没有正在进行的拣选"
 
-#: setup.c:826
+#: sequencer.c:3038
+msgid "failed to skip the commit"
+msgstr "无法跳过这个提交"
+
+#: sequencer.c:3045
+msgid "there is nothing to skip"
+msgstr "没有要跳过的"
+
+#: sequencer.c:3048
 #, c-format
-msgid "not a git repository: '%s'"
-msgstr "不是 git 仓库:'%s'"
+msgid ""
+"have you committed already?\n"
+"try \"git %s --continue\""
+msgstr ""
+"您已经提交了么?\n"
+"试试 \"git %s --continue\""
 
-#: setup.c:855 setup.c:857 setup.c:888
+#: sequencer.c:3210 sequencer.c:4271
+msgid "cannot read HEAD"
+msgstr "不能读取 HEAD"
+
+#: sequencer.c:3227
 #, c-format
-msgid "cannot chdir to '%s'"
-msgstr "不能切换目录到 '%s'"
+msgid "unable to copy '%s' to '%s'"
+msgstr "无法拷贝 '%s' 至 '%s'"
 
-#: setup.c:860 setup.c:916 setup.c:926 setup.c:965 setup.c:973
-msgid "cannot come back to cwd"
-msgstr "无法返回当前工作目录"
+#: sequencer.c:3235
+#, c-format
+msgid ""
+"You can amend the commit now, with\n"
+"\n"
+"  git commit --amend %s\n"
+"\n"
+"Once you are satisfied with your changes, run\n"
+"\n"
+"  git rebase --continue\n"
+msgstr ""
+"您现在可以修补这个提交,使用\n"
+"\n"
+"  git commit --amend %s\n"
+"\n"
+"当您对变更感到满意,执行\n"
+"\n"
+"  git rebase --continue\n"
 
-#: setup.c:987
+#: sequencer.c:3245
 #, c-format
-msgid "failed to stat '%*s%s%s'"
-msgstr "获取 '%*s%s%s' 状态(stat)失败"
+msgid "Could not apply %s... %.*s"
+msgstr "不能应用 %s... %.*s"
 
-#: setup.c:1225
-msgid "Unable to read current working directory"
-msgstr "不能读取当前工作目录"
+#: sequencer.c:3252
+#, c-format
+msgid "Could not merge %.*s"
+msgstr "不能合并 %.*s"
 
-#: setup.c:1234 setup.c:1240
+#: sequencer.c:3266 sequencer.c:3270 builtin/difftool.c:640
 #, c-format
-msgid "cannot change to '%s'"
-msgstr "不能切换到 '%s'"
+msgid "could not copy '%s' to '%s'"
+msgstr "不能拷贝 '%s' 至 '%s'"
 
-#: setup.c:1245
+#: sequencer.c:3282
 #, c-format
-msgid "not a git repository (or any of the parent directories): %s"
-msgstr "不是 git 仓库(或者任何父目录):%s"
+msgid "Executing: %s\n"
+msgstr "正在执行:%s\n"
 
-#: setup.c:1251
+#  译者:注意保持前导空格
+#: sequencer.c:3297
 #, 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)."
+"execution failed: %s\n"
+"%sYou can fix the problem, and then run\n"
+"\n"
+"  git rebase --continue\n"
+"\n"
 msgstr ""
-"不是 git 仓库(或者直至挂载点 %s 的任何父目录)\n"
-"停止在文件系统边界(未设置 GIT_DISCOVERY_ACROSS_FILESYSTEM)。"
+"执行失败:%s\n"
+"%s您可以改正该问题,然后运行\n"
+"\n"
+"  git rebase --continue\n"
+"\n"
 
-#: setup.c:1362
+#: sequencer.c:3303
+msgid "and made changes to the index and/or the working tree\n"
+msgstr "并且修改索引和/或工作区\n"
+
+#: sequencer.c:3309
 #, c-format
 msgid ""
-"problem with core.sharedRepository filemode value (0%.3o).\n"
-"The owner of files must always have read and write permissions."
+"execution succeeded: %s\n"
+"but left changes to the index and/or the working tree\n"
+"Commit or stash your changes, and then run\n"
+"\n"
+"  git rebase --continue\n"
+"\n"
 msgstr ""
-"参数 core.sharedRepository 的文件属性值有问题(0%.3o)。\n"
-"文件属主必须始终拥有读写权限。"
+"执行成功:%s\n"
+"但是在索引和/或工作区中存在变更\n"
+"提交或贮藏修改,然后运行\n"
+"\n"
+"  git rebase --continue\n"
+"\n"
 
-#: setup.c:1409
-msgid "open /dev/null or dup failed"
-msgstr "不能打开或者复制 /dev/null"
+#: sequencer.c:3370
+#, c-format
+msgid "illegal label name: '%.*s'"
+msgstr "非法的标签名称:'%.*s'"
 
-#: setup.c:1424
-msgid "fork failed"
-msgstr "fork 失败"
+#: sequencer.c:3424
+msgid "writing fake root commit"
+msgstr "写伪根提交"
 
-#: setup.c:1429
-msgid "setsid failed"
-msgstr "setsid 失败"
+#: sequencer.c:3429
+msgid "writing squash-onto"
+msgstr "写入 squash-onto"
 
-#: sha1-file.c:480
+#: sequencer.c:3513
 #, c-format
-msgid "object directory %s does not exist; check .git/objects/info/alternates"
-msgstr "对象目录 %s 不存在,检查 .git/objects/info/alternates"
+msgid "could not resolve '%s'"
+msgstr "无法解析 '%s'"
+
+#: sequencer.c:3546
+msgid "cannot merge without a current revision"
+msgstr "没有当前版本不能合并"
 
-#: sha1-file.c:531
+#: sequencer.c:3568
 #, c-format
-msgid "unable to normalize alternate object path: %s"
-msgstr "æ\97 æ³\95è§\84è\8c\83å\8c\96å¤\87ç\94¨å¯¹è±¡è·¯å¾\84ï¼\9a%s"
+msgid "unable to parse '%.*s'"
+msgstr "æ\97 æ³\95解æ\9e\90 '%.*s'"
 
-#: sha1-file.c:603
+#: sequencer.c:3577
 #, c-format
-msgid "%s: ignoring alternate object stores, nesting too deep"
-msgstr "%s:忽略备用对象库,嵌套太深"
+msgid "nothing to merge: '%.*s'"
+msgstr "无可用合并:'%.*s'"
+
+#: sequencer.c:3589
+msgid "octopus merge cannot be executed on top of a [new root]"
+msgstr "章鱼合并不能在一个新的根提交上执行"
 
-#: sha1-file.c:610
+#: sequencer.c:3605
 #, c-format
-msgid "unable to normalize object directory: %s"
-msgstr "无法规范化对象目录: %s"
+msgid "could not get commit message of '%s'"
+msgstr "不能获取 '%s' 的提交说明"
 
-#: sha1-file.c:653
-msgid "unable to fdopen alternates lockfile"
-msgstr "无法 fdopen 替换锁文件"
+#: sequencer.c:3788
+#, c-format
+msgid "could not even attempt to merge '%.*s'"
+msgstr "甚至不能尝试合并 '%.*s'"
 
-#: sha1-file.c:671
-msgid "unable to read alternates file"
-msgstr "无法读取替代文件"
+#: sequencer.c:3804
+msgid "merge: Unable to write new index file"
+msgstr "合并:无法写入新索引文件"
 
-#: sha1-file.c:678
-msgid "unable to move new alternates file into place"
-msgstr "无法将新的替代文件移动到位"
+#: sequencer.c:3878
+msgid "Cannot autostash"
+msgstr "无法 autostash"
 
-#: sha1-file.c:713
+#: sequencer.c:3881
 #, c-format
-msgid "path '%s' does not exist"
-msgstr "路径 '%s' 不存在"
+msgid "Unexpected stash response: '%s'"
+msgstr "意外的 stash 响应:'%s'"
 
-#: sha1-file.c:734
+#: sequencer.c:3887
 #, c-format
-msgid "reference repository '%s' as a linked checkout is not supported yet."
-msgstr "尚不支持将参考仓库 '%s' 作为一个链接检出。"
+msgid "Could not create directory for '%s'"
+msgstr "不能为 '%s' 创建目录"
 
-#: sha1-file.c:740
+#: sequencer.c:3890
 #, c-format
-msgid "reference repository '%s' is not a local repository."
-msgstr "å\8f\82è\80\83ä»\93åº\93 '%s' ä¸\8dæ\98¯ä¸\80个æ\9c¬å\9c°ä»\93åº\93ã\80\82"
+msgid "Created autostash: %s\n"
+msgstr "å\88\9b建äº\86 autostashï¼\9a%s\n"
 
-#: sha1-file.c:746
-#, c-format
-msgid "reference repository '%s' is shallow"
-msgstr "参考仓库 '%s' 是一个浅克隆"
+#: sequencer.c:3894
+msgid "could not reset --hard"
+msgstr "无法 reset --hard"
 
-#: sha1-file.c:754
+#: sequencer.c:3919
 #, c-format
-msgid "reference repository '%s' is grafted"
-msgstr "å\8f\82è\80\83ä»\93åº\93 '%s' å·²è¢«ç§»æ¤\8d"
+msgid "Applied autostash.\n"
+msgstr "å·²åº\94ç\94¨ autostashã\80\82\n"
 
-#: sha1-file.c:814
+#: sequencer.c:3931
 #, c-format
-msgid "invalid line while parsing alternate refs: %s"
-msgstr "解析备用引用时无效的行:%s"
+msgid "cannot store %s"
+msgstr "不能存储 %s"
 
-#: sha1-file.c:964
+#: sequencer.c:3934
 #, c-format
-msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
-msgstr "尝试 mmap %<PRIuMAX>,超过了最大值 %<PRIuMAX>"
+msgid ""
+"%s\n"
+"Your changes are safe in the stash.\n"
+"You can run \"git stash pop\" or \"git stash drop\" at any time.\n"
+msgstr ""
+"%s\n"
+"您的修改在贮藏区中很安全。\n"
+"您可以在任何时候运行 \"git stash pop\" 或 \"git stash drop\"。\n"
 
-#: sha1-file.c:985
-msgid "mmap failed"
-msgstr "mmap 失败"
+#: sequencer.c:3939
+msgid "Applying autostash resulted in conflicts."
+msgstr "应用自动贮藏导致冲突。"
 
-#: sha1-file.c:1149
-#, c-format
-msgid "object file %s is empty"
-msgstr "对象文件 %s 为空"
+#: sequencer.c:3940
+msgid "Autostash exists; creating a new stash entry."
+msgstr "自动贮藏已经存在;正在创建一个新的贮藏条目。"
+
+#: sequencer.c:4033 git-rebase--preserve-merges.sh:769
+msgid "could not detach HEAD"
+msgstr "不能分离头指针"
 
-#: sha1-file.c:1284 sha1-file.c:2477
+#: sequencer.c:4048
 #, c-format
-msgid "corrupt loose object '%s'"
-msgstr "损坏的松散对象 '%s'"
+msgid "Stopped at HEAD\n"
+msgstr "停止在 HEAD\n"
 
-#: sha1-file.c:1286 sha1-file.c:2481
+#: sequencer.c:4050
 #, c-format
-msgid "garbage at end of loose object '%s'"
-msgstr "松散对象 '%s' 后面有垃圾数据"
+msgid "Stopped at %s\n"
+msgstr "停止在 %s\n"
 
-#: sha1-file.c:1328
-msgid "invalid object type"
-msgstr "无效的对象类型"
+#: sequencer.c:4058
+#, 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"
 
-#: sha1-file.c:1412
+#: sequencer.c:4104
 #, c-format
-msgid "unable to unpack %s header with --allow-unknown-type"
-msgstr "æ\97 æ³\95ç\94¨ --allow-unknown-type å\8f\82æ\95°è§£å¼\80 %s å¤´ä¿¡æ\81¯"
+msgid "Rebasing (%d/%d)%s"
+msgstr "æ­£å\9c¨å\8f\98å\9fºï¼\88%d/%dï¼\89%s"
 
-#: sha1-file.c:1415
+#: sequencer.c:4149
 #, c-format
-msgid "unable to unpack %s header"
-msgstr "无法解开 %s 头部"
+msgid "Stopped at %s...  %.*s\n"
+msgstr "停止在 %s... %.*s\n"
 
-#: sha1-file.c:1421
+#: sequencer.c:4220
 #, c-format
-msgid "unable to parse %s header with --allow-unknown-type"
-msgstr "无法用 --allow-unknown-type 参数解析 %s 头信息"
+msgid "unknown command %d"
+msgstr "未知命令 %d"
+
+#: sequencer.c:4279
+msgid "could not read orig-head"
+msgstr "不能读取 orig-head"
+
+#: sequencer.c:4284
+msgid "could not read 'onto'"
+msgstr "不能读取 'onto'"
 
-#: sha1-file.c:1424
+#: sequencer.c:4298
 #, c-format
-msgid "unable to parse %s header"
-msgstr "无法解析 %s 头部"
+msgid "could not update HEAD to %s"
+msgstr "不能更新 HEAD 为 %s"
 
-#: sha1-file.c:1651
+#: sequencer.c:4358
 #, c-format
-msgid "failed to read object %s"
-msgstr "读取对象 %s 失败"
+msgid "Successfully rebased and updated %s.\n"
+msgstr "成功变基并更新 %s。\n"
 
-#: sha1-file.c:1655
+#: sequencer.c:4391
+msgid "cannot rebase: You have unstaged changes."
+msgstr "不能变基:您有未暂存的变更。"
+
+#: sequencer.c:4400
+msgid "cannot amend non-existing commit"
+msgstr "不能修补不存在的提交"
+
+#: sequencer.c:4402
 #, c-format
-msgid "replacement %s not found for %s"
-msgstr "æ\89¾ä¸\8då\88° %2$s ç\9a\84æ\9b¿ä»£ %1$s"
+msgid "invalid file: '%s'"
+msgstr "æ\97 æ\95\88æ\96\87件ï¼\9a'%s'"
 
-#: sha1-file.c:1659
+#: sequencer.c:4404
 #, c-format
-msgid "loose object %s (stored in %s) is corrupt"
-msgstr "松散对象 %s(保存在 %s)已损坏"
+msgid "invalid contents: '%s'"
+msgstr "无效内容:'%s'"
+
+#: sequencer.c:4407
+msgid ""
+"\n"
+"You have uncommitted changes in your working tree. Please, commit them\n"
+"first and then run 'git rebase --continue' again."
+msgstr ""
+"\n"
+"您的工作区中有未提交的变更。请先提交然后再次运行 'git rebase --continue'。"
 
-#: sha1-file.c:1663
+#: sequencer.c:4443 sequencer.c:4482
 #, c-format
-msgid "packed object %s (stored in %s) is corrupt"
-msgstr "打包对象 %s(保存在 %s)已损坏"
+msgid "could not write file: '%s'"
+msgstr "不能写入文件:'%s'"
+
+#: sequencer.c:4498
+msgid "could not remove CHERRY_PICK_HEAD"
+msgstr "不能删除 CHERRY_PICK_HEAD"
+
+#: sequencer.c:4505
+msgid "could not commit staged changes."
+msgstr "不能提交暂存的修改。"
 
-#: sha1-file.c:1768
+#: sequencer.c:4621
 #, c-format
-msgid "unable to write file %s"
-msgstr "无法写文件 %s"
+msgid "%s: can't cherry-pick a %s"
+msgstr "%s:不能拣选一个%s"
 
-#: sha1-file.c:1775
+#: sequencer.c:4625
 #, c-format
-msgid "unable to set permission to '%s'"
-msgstr "无法为 '%s' 设置权限"
+msgid "%s: bad revision"
+msgstr "%s:错误的版本"
 
-#: sha1-file.c:1782
-msgid "file write error"
-msgstr "文件写错误"
+#: sequencer.c:4660
+msgid "can't revert as initial commit"
+msgstr "不能作为初始提交回退"
 
-#: sha1-file.c:1802
-msgid "error when closing loose object file"
-msgstr "关闭松散对象文件时出错"
+#: sequencer.c:5137
+msgid "make_script: unhandled options"
+msgstr "make_script:有未能处理的选项"
 
-#: sha1-file.c:1867
-#, c-format
-msgid "insufficient permission for adding an object to repository database %s"
-msgstr "权限不足,无法在仓库对象库 %s 中添加对象"
+#: sequencer.c:5140
+msgid "make_script: error preparing revisions"
+msgstr "make_script:准备版本时错误"
 
-#: sha1-file.c:1869
-msgid "unable to create temporary file"
-msgstr "无法创建临时文件"
+#: sequencer.c:5382 sequencer.c:5399
+msgid "nothing to do"
+msgstr "无事可做"
 
-#: sha1-file.c:1893
-msgid "unable to write loose object file"
-msgstr "不能写松散对象文件"
+#: sequencer.c:5418
+msgid "could not skip unnecessary pick commands"
+msgstr "无法跳过不必要的拣选"
 
-#: sha1-file.c:1899
-#, c-format
-msgid "unable to deflate new object %s (%d)"
-msgstr "不能压缩新对象 %s(%d)"
+#: sequencer.c:5512
+msgid "the script was already rearranged."
+msgstr "脚本已经重新编排。"
 
-#: sha1-file.c:1903
+#: setup.c:133
 #, c-format
-msgid "deflateEnd on object %s failed (%d)"
-msgstr "在对象 %s 上调用 deflateEnd 失败(%d)"
+msgid "'%s' is outside repository at '%s'"
+msgstr "'%s' 在位于 '%s' 的仓库之外"
 
-#: sha1-file.c:1907
+#: setup.c:185
 #, c-format
-msgid "confused by unstable object source data for %s"
-msgstr "被 %s 的不稳定对象源数据搞糊涂了"
+msgid ""
+"%s: no such path in the working tree.\n"
+"Use 'git <command> -- <path>...' to specify paths that do not exist locally."
+msgstr ""
+"%s:工作区中无此路径。\n"
+"使用命令 'git <命令> -- <路径>...' 来指定本地不存在的路径。"
 
-#: sha1-file.c:1917 builtin/pack-objects.c:1086
+#: setup.c:198
 #, c-format
-msgid "failed utime() on %s"
-msgstr "在 %s 上调用 utime() 失败"
+msgid ""
+"ambiguous argument '%s': unknown revision or path not in the working tree.\n"
+"Use '--' to separate paths from revisions, like this:\n"
+"'git <command> [<revision>...] -- [<file>...]'"
+msgstr ""
+"有歧义的参数 '%s':未知的版本或路径不存在于工作区中。\n"
+"使用 '--' 来分隔版本和路径,例如:\n"
+"'git <命令> [<版本>...] -- [<文件>...]'"
 
-#: sha1-file.c:1994
+#: setup.c:264
 #, c-format
-msgid "cannot read object for %s"
-msgstr "不能读取对象 %s"
+msgid "option '%s' must come before non-option arguments"
+msgstr "选项 '%s' 必须在其他非选项参数之前"
 
-#: sha1-file.c:2045
-msgid "corrupt commit"
-msgstr "损坏的提交"
+#: setup.c:283
+#, c-format
+msgid ""
+"ambiguous argument '%s': both revision and filename\n"
+"Use '--' to separate paths from revisions, like this:\n"
+"'git <command> [<revision>...] -- [<file>...]'"
+msgstr ""
+"有歧义的参数 '%s':可同时是版本和文件\n"
+"使用 '--' 来分隔版本和路径,例如:\n"
+"'git <命令> [<版本>...] -- [<文件>...]'"
 
-#: sha1-file.c:2053
-msgid "corrupt tag"
-msgstr "æ\8d\9få\9d\8fç\9a\84æ \87ç­¾"
+#: setup.c:419
+msgid "unable to set up work tree using invalid config"
+msgstr "æ\97 æ³\95使ç\94¨æ\97 æ\95\88é\85\8dç½®æ\9d¥å\88\9b建工ä½\9cå\8cº"
 
-#: sha1-file.c:2153
-#, c-format
-msgid "read error while indexing %s"
-msgstr "索引 %s 时读取错误"
+#: setup.c:423
+msgid "this operation must be run in a work tree"
+msgstr "该操作必须在一个工作区中运行"
 
-#: sha1-file.c:2156
+#: setup.c:661
 #, c-format
-msgid "short read while indexing %s"
-msgstr "索引 %s 时读入不完整"
+msgid "Expected git repo version <= %d, found %d"
+msgstr "期望 git 仓库版本 <= %d,却得到 %d"
 
-#: sha1-file.c:2229 sha1-file.c:2239
-#, c-format
-msgid "%s: failed to insert into database"
-msgstr "%s:插入数据库失败"
+#: setup.c:669
+msgid "unknown repository extensions found:"
+msgstr "发现未知的仓库扩展:"
 
-#: sha1-file.c:2245
-#, c-format
-msgid "%s: unsupported file type"
-msgstr "%s:不支持的文件类型"
+#: setup.c:681
+msgid "repo version is 0, but v1-only extensions found:"
+msgstr "仓库的版本是 0,但是发现仅用于 v1 的扩展:"
 
-#: sha1-file.c:2269
+#: setup.c:700
 #, c-format
-msgid "%s is not a valid object"
-msgstr "%s 不是一个有效的对象"
+msgid "error opening '%s'"
+msgstr "打开 '%s' 出错"
 
-#: sha1-file.c:2271
+#: setup.c:702
 #, c-format
-msgid "%s is not a valid '%s' object"
-msgstr "%s 不是一个有效的 '%s' 对象"
+msgid "too large to be a .git file: '%s'"
+msgstr "文件太大,无法作为 .git 文件:'%s'"
 
-#: sha1-file.c:2298 builtin/index-pack.c:192
+#: setup.c:704
 #, c-format
-msgid "unable to open %s"
-msgstr "不能打开 %s"
+msgid "error reading %s"
+msgstr "读取 %s 出错"
 
-#: sha1-file.c:2488 sha1-file.c:2541
+#: setup.c:706
 #, c-format
-msgid "hash mismatch for %s (expected %s)"
-msgstr "%s 的哈希值不匹配(预期 %s)"
+msgid "invalid gitfile format: %s"
+msgstr "无效的 gitfile 格式:%s"
 
-#: sha1-file.c:2512
+#: setup.c:708
 #, c-format
-msgid "unable to mmap %s"
-msgstr "不能 mmap %s"
+msgid "no path in gitfile: %s"
+msgstr "在 gitfile 中没有路径:%s"
 
-#: sha1-file.c:2517
+#: setup.c:710
 #, c-format
-msgid "unable to unpack header of %s"
-msgstr "无法解压缩 %s 的头部"
+msgid "not a git repository: %s"
+msgstr "不是 git 仓库:%s"
 
-#: sha1-file.c:2523
+#: setup.c:812
 #, c-format
-msgid "unable to parse header of %s"
-msgstr "无法解析 %s 的头部"
+msgid "'$%s' too big"
+msgstr "'$%s' 太大"
 
-#: sha1-file.c:2534
+#: setup.c:826
 #, c-format
-msgid "unable to unpack contents of %s"
-msgstr "无法解压缩 %s 的内容"
+msgid "not a git repository: '%s'"
+msgstr "不是 git 仓库:'%s'"
 
-#: sha1-name.c:486
+#: setup.c:855 setup.c:857 setup.c:888
 #, c-format
-msgid "short SHA1 %s is ambiguous"
-msgstr "短 SHA1 %s 存在歧义"
-
-#: sha1-name.c:497
-msgid "The candidates are:"
-msgstr "候选者有:"
-
-#: sha1-name.c:796
-msgid ""
-"Git normally never creates a ref that ends with 40 hex characters\n"
-"because it will be ignored when you just specify 40-hex. These refs\n"
-"may be created by mistake. For example,\n"
-"\n"
-"  git switch -c $br $(git rev-parse ...)\n"
-"\n"
-"where \"$br\" is somehow empty and a 40-hex ref is created. Please\n"
-"examine these refs and maybe delete them. Turn this message off by\n"
-"running \"git config advice.objectNameWarning false\""
-msgstr ""
-"Git 通常不会创建一个以40个十六进制字符结尾的引用,因为当您只提供40\n"
-"个十六进制字符时将被忽略。这些引用可能被错误地创建。例如:\n"
-"\n"
-"  git switch -c $br $(git rev-parse ...)\n"
-"\n"
-"当 \"$br\" 某种原因空白时,一个40位十六进制的引用将被创建。请检查这些\n"
-"引用,可能需要删除它们。运行 \"git config advice.objectNameWarning\n"
-"false\" 命令关闭本消息通知。"
+msgid "cannot chdir to '%s'"
+msgstr "不能切换目录到 '%s'"
 
-#: sha1-name.c:916
-#, c-format
-msgid "log for '%.*s' only goes back to %s"
-msgstr "'%.*s' 的日志仅能回到 %s"
+#: setup.c:860 setup.c:916 setup.c:926 setup.c:965 setup.c:973
+msgid "cannot come back to cwd"
+msgstr "无法返回当前工作目录"
 
-#: sha1-name.c:924
+#: setup.c:987
 #, c-format
-msgid "log for '%.*s' only has %d entries"
-msgstr "'%.*s' 的日志仅有 %d 个条目"
+msgid "failed to stat '%*s%s%s'"
+msgstr "获取 '%*s%s%s' 状态(stat)失败"
 
-#: sha1-name.c:1702
-#, c-format
-msgid "path '%s' exists on disk, but not in '%.*s'"
-msgstr "路径 '%s' 在磁盘上,但是不在 '%.*s' 中"
+#: setup.c:1225
+msgid "Unable to read current working directory"
+msgstr "不能读取当前工作目录"
 
-#: sha1-name.c:1708
+#: setup.c:1234 setup.c:1240
 #, c-format
-msgid ""
-"path '%s' exists, but not '%s'\n"
-"hint: Did you mean '%.*s:%s' aka '%.*s:./%s'?"
-msgstr ""
-"路径 '%s' 存在,而 '%s' 不存在\n"
-"提示:您的意思是 '%.*s:%s' 亦即 '%.*s:./%s'?"
+msgid "cannot change to '%s'"
+msgstr "不能切换到 '%s'"
 
-#: sha1-name.c:1717
+#: setup.c:1245
 #, c-format
-msgid "path '%s' does not exist in '%.*s'"
-msgstr "路径 '%s' 不在 '%.*s' 中"
+msgid "not a git repository (or any of the parent directories): %s"
+msgstr "不是 git 仓库(或者任何父目录):%s"
 
-#: sha1-name.c:1745
+#: setup.c:1251
 #, c-format
 msgid ""
-"path '%s' is in the index, but not at stage %d\n"
-"hint: Did you mean ':%d:%s'?"
+"not a git repository (or any parent up to mount point %s)\n"
+"Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set)."
 msgstr ""
-"路径 '%s' 在索引中,但不在暂存区 %d 中\n"
-"提示:您的意思是 ':%d:%s'?"
+"不是 git 仓库(或者直至挂载点 %s 的任何父目录)\n"
+"停止在文件系统边界(未设置 GIT_DISCOVERY_ACROSS_FILESYSTEM)。"
 
-#: sha1-name.c:1761
+#: setup.c:1362
 #, c-format
 msgid ""
-"path '%s' is in the index, but not '%s'\n"
-"hint: Did you mean ':%d:%s' aka ':%d:./%s'?"
+"problem with core.sharedRepository filemode value (0%.3o).\n"
+"The owner of files must always have read and write permissions."
 msgstr ""
-"路径 '%s' 在索引中,但 '%s' 不在\n"
-"提示:您的意思是 ':%d:%s' 亦即 ':%d:./%s'?"
-
-#: sha1-name.c:1769
-#, c-format
-msgid "path '%s' exists on disk, but not in the index"
-msgstr "路径 '%s' 在磁盘上,但不在索引里"
+"参数 core.sharedRepository 的文件属性值有问题(0%.3o)。\n"
+"文件属主必须始终拥有读写权限。"
 
-#: sha1-name.c:1771
-#, c-format
-msgid "path '%s' does not exist (neither on disk nor in the index)"
-msgstr "路径 '%s' 不存在(既不在磁盘上,也不在索引中)"
+#: setup.c:1409
+msgid "open /dev/null or dup failed"
+msgstr "不能打开或者复制 /dev/null"
 
-#: sha1-name.c:1784
-msgid "relative path syntax can't be used outside working tree"
-msgstr "不能在工作区之外使用相对路径语法"
+#: setup.c:1424
+msgid "fork failed"
+msgstr "fork 失败"
 
-#: sha1-name.c:1922
-#, c-format
-msgid "invalid object name '%.*s'."
-msgstr "无效的对象名 '%.*s'。"
+#: setup.c:1429
+msgid "setsid failed"
+msgstr "setsid 失败"
 
 #. TRANSLATORS: IEC 80000-13:2008 gibibyte
 #: strbuf.c:848
@@ -8149,7 +8390,7 @@ msgstr[0] "%u 字节/秒"
 msgstr[1] "%u 字节/秒"
 
 #: strbuf.c:1166 wrapper.c:199 wrapper.c:369 builtin/am.c:719
-#: builtin/rebase.c:864
+#: builtin/rebase.c:866
 #, c-format
 msgid "could not open '%s' for writing"
 msgstr "无法打开 '%s' 进行写入"
@@ -8211,60 +8452,60 @@ msgstr "位于未检出的子模组 '%s'"
 msgid "Pathspec '%s' is in submodule '%.*s'"
 msgstr "路径规格 '%s' 在子模组 '%.*s' 中"
 
-#: submodule.c:434
+#: submodule.c:435
 #, c-format
 msgid "bad --ignore-submodules argument: %s"
 msgstr "坏的 --ignore-submodules 参数:%s"
 
-#: submodule.c:816
+#: submodule.c:817
 #, c-format
 msgid ""
 "Submodule in commit %s at path: '%s' collides with a submodule named the "
 "same. Skipping it."
 msgstr "提交 %s 中位于路径 '%s' 的子模组和同名的子模组冲突。 跳过它。"
 
-#: submodule.c:919
+#: submodule.c:920
 #, c-format
 msgid "submodule entry '%s' (%s) is a %s, not a commit"
 msgstr "子模组条目 '%s'(%s)是一个 %s,不是一个提交"
 
-#: submodule.c:1004
+#: submodule.c:1005
 #, c-format
 msgid ""
 "Could not run 'git rev-list <commits> --not --remotes -n 1' command in "
 "submodule %s"
 msgstr "无法在子模组 %s 中执行 'git rev-list <提交> --not --remotes -n 1'"
 
-#: submodule.c:1127
+#: submodule.c:1128
 #, c-format
 msgid "process for submodule '%s' failed"
 msgstr "处理子模组 '%s' 失败"
 
-#: submodule.c:1156 builtin/branch.c:680 builtin/submodule--helper.c:2469
+#: submodule.c:1157 builtin/branch.c:689 builtin/submodule--helper.c:2469
 msgid "Failed to resolve HEAD as a valid ref."
 msgstr "无法将 HEAD 解析为有效引用。"
 
-#: submodule.c:1167
+#: submodule.c:1168
 #, c-format
 msgid "Pushing submodule '%s'\n"
 msgstr "正在推送子模组 '%s'\n"
 
-#: submodule.c:1170
+#: submodule.c:1171
 #, c-format
 msgid "Unable to push submodule '%s'\n"
 msgstr "无法推送子模组 '%s'\n"
 
-#: submodule.c:1462
+#: submodule.c:1463
 #, c-format
 msgid "Fetching submodule %s%s\n"
 msgstr "正在获取子模组 %s%s\n"
 
-#: submodule.c:1492
+#: submodule.c:1497
 #, c-format
 msgid "Could not access submodule '%s'\n"
 msgstr "无法访问子模组 '%s'\n"
 
-#: submodule.c:1646
+#: submodule.c:1652
 #, c-format
 msgid ""
 "Errors during submodule fetch:\n"
@@ -8273,77 +8514,77 @@ msgstr ""
 "获取子模组时的错误:\n"
 "%s"
 
-#: submodule.c:1671
+#: submodule.c:1677
 #, c-format
 msgid "'%s' not recognized as a git repository"
 msgstr "无法将 '%s' 识别为 git 仓库"
 
-#: submodule.c:1688
+#: submodule.c:1694
 #, c-format
 msgid "Could not run 'git status --porcelain=2' in submodule %s"
 msgstr "无法在子模组 %s 中执行 'git status --porcelain=2'"
 
-#: submodule.c:1729
+#: submodule.c:1735
 #, c-format
 msgid "'git status --porcelain=2' failed in submodule %s"
 msgstr "在子模组 %s 中执行 'git status --porcelain=2' 失败"
 
-#: submodule.c:1804
+#: submodule.c:1810
 #, c-format
 msgid "could not start 'git status' in submodule '%s'"
 msgstr "无法在子模组 '%s' 中启动 'git status'"
 
-#: submodule.c:1817
+#: submodule.c:1823
 #, c-format
 msgid "could not run 'git status' in submodule '%s'"
 msgstr "无法在子模组 '%s' 中执行 'git status'"
 
-#: submodule.c:1832
+#: submodule.c:1838
 #, c-format
 msgid "Could not unset core.worktree setting in submodule '%s'"
 msgstr "无法在子模组 '%s' 中取消 core.worktree 的设置"
 
-#: submodule.c:1859 submodule.c:2169
+#: submodule.c:1865 submodule.c:2175
 #, c-format
 msgid "could not recurse into submodule '%s'"
 msgstr "无法递归进子模组路径 '%s'"
 
-#: submodule.c:1880
+#: submodule.c:1886
 msgid "could not reset submodule index"
 msgstr "无法重置子模组索引"
 
-#: submodule.c:1922
+#: submodule.c:1928
 #, c-format
 msgid "submodule '%s' has dirty index"
 msgstr "子模组 '%s' 中有脏索引"
 
-#: submodule.c:1974
+#: submodule.c:1980
 #, c-format
 msgid "Submodule '%s' could not be updated."
 msgstr "子模组 '%s' 无法被更新。"
 
-#: submodule.c:2042
+#: submodule.c:2048
 #, c-format
 msgid "submodule git dir '%s' is inside git dir '%.*s'"
 msgstr "子模组 git 目录 '%s' 位于 git 目录 '%.*s' 中"
 
-#: submodule.c:2063
+#: submodule.c:2069
 #, c-format
 msgid ""
 "relocate_gitdir for submodule '%s' with more than one worktree not supported"
 msgstr "不支持对有多个工作区的子模组 '%s' 执行 relocate_gitdir"
 
-#: submodule.c:2075 submodule.c:2134
+#: submodule.c:2081 submodule.c:2140
 #, c-format
 msgid "could not lookup name for submodule '%s'"
 msgstr "不能查询子模组 '%s' 的名称"
 
-#: submodule.c:2079
+#: submodule.c:2085
 #, c-format
 msgid "refusing to move '%s' into an existing git dir"
 msgstr "禁止移动 '%s' 到现存 git 目录中"
 
-#: submodule.c:2086
+#: submodule.c:2092
 #, c-format
 msgid ""
 "Migrating git directory of '%s%s' from\n"
@@ -8354,11 +8595,11 @@ msgstr ""
 "'%s' 迁移至\n"
 "'%s'\n"
 
-#: submodule.c:2214
+#: submodule.c:2220
 msgid "could not start ls-files in .."
 msgstr "无法在 .. 中启动 ls-files"
 
-#: submodule.c:2254
+#: submodule.c:2260
 #, c-format
 msgid "ls-tree returned unexpected return code %d"
 msgstr "ls-tree 返回未知返回值 %d"
@@ -8389,7 +8630,7 @@ msgstr "尾注 '%.*s' 的键为空"
 msgid "could not read input file '%s'"
 msgstr "不能读取输入文件 '%s'"
 
-#: trailer.c:751
+#: trailer.c:751 builtin/mktag.c:91
 msgid "could not read from stdin"
 msgstr "不能自标准输入读取"
 
@@ -8459,7 +8700,7 @@ msgstr "不能执行 fast-import"
 msgid "error while running fast-import"
 msgstr "执行 fast-import 出错"
 
-#: transport-helper.c:549 transport-helper.c:1236
+#: transport-helper.c:549 transport-helper.c:1237
 #, c-format
 msgid "could not read ref %s"
 msgstr "无法读取引用 %s"
@@ -8477,7 +8718,7 @@ msgstr "协议不支持设置远程服务路径"
 msgid "invalid remote service path"
 msgstr "无效的远程服务路径"
 
-#: transport-helper.c:661 transport.c:1446
+#: transport-helper.c:661 transport.c:1447
 msgid "operation not supported by protocol"
 msgstr "协议不支持该操作"
 
@@ -8556,52 +8797,52 @@ msgstr ""
 "没有共同的引用并且也没有指定,什么也不会做。\n"
 "也许您应该指定一个分支。\n"
 
-#: transport-helper.c:1213
+#: transport-helper.c:1214
 #, c-format
 msgid "unsupported object format '%s'"
 msgstr "不支持的对象格式 '%s'"
 
-#: transport-helper.c:1222
+#: transport-helper.c:1223
 #, c-format
 msgid "malformed response in ref list: %s"
 msgstr "引用列表中格式错误的响应:%s"
 
-#: transport-helper.c:1374
+#: transport-helper.c:1375
 #, c-format
 msgid "read(%s) failed"
 msgstr "读取(%s)失败"
 
-#: transport-helper.c:1401
+#: transport-helper.c:1402
 #, c-format
 msgid "write(%s) failed"
 msgstr "写(%s)失败"
 
-#: transport-helper.c:1450
+#: transport-helper.c:1451
 #, c-format
 msgid "%s thread failed"
 msgstr "%s 线程失败"
 
-#: transport-helper.c:1454
+#: transport-helper.c:1455
 #, c-format
 msgid "%s thread failed to join: %s"
 msgstr "%s 线程等待失败:%s"
 
-#: transport-helper.c:1473 transport-helper.c:1477
+#: transport-helper.c:1474 transport-helper.c:1478
 #, c-format
 msgid "can't start thread for copying data: %s"
 msgstr "不能启动线程来拷贝数据:%s"
 
-#: transport-helper.c:1514
+#: transport-helper.c:1515
 #, c-format
 msgid "%s process failed to wait"
 msgstr "%s 进程等待失败"
 
-#: transport-helper.c:1518
+#: transport-helper.c:1519
 #, c-format
 msgid "%s process failed"
 msgstr "%s 进程失败"
 
-#: transport-helper.c:1536 transport-helper.c:1545
+#: transport-helper.c:1537 transport-helper.c:1546
 msgid "can't start thread for copying data"
 msgstr "不能启动线程来拷贝数据"
 
@@ -8688,23 +8929,23 @@ msgstr ""
 msgid "Aborting."
 msgstr "正在终止。"
 
-#: transport.c:1315
+#: transport.c:1316
 msgid "failed to push all needed submodules"
 msgstr "不能推送全部需要的子模组"
 
-#: tree-walk.c:32
+#: tree-walk.c:33
 msgid "too-short tree object"
 msgstr "太短的树对象"
 
-#: tree-walk.c:38
+#: tree-walk.c:39
 msgid "malformed mode in tree entry"
 msgstr "树对象中的条目模式错误"
 
-#: tree-walk.c:42
+#: tree-walk.c:43
 msgid "empty filename in tree entry"
 msgstr "树对象条目中空的文件名"
 
-#: tree-walk.c:117
+#: tree-walk.c:118
 msgid "too-short tree file"
 msgstr "太短的树文件"
 
@@ -8953,7 +9194,7 @@ msgstr ""
 msgid "Updating index flags"
 msgstr "正在更新索引标志"
 
-#: upload-pack.c:1550
+#: upload-pack.c:1543
 msgid "expected flush after fetch arguments"
 msgstr "在 fetch 参数之后应该有一个 flush 包"
 
@@ -8990,72 +9231,102 @@ msgstr "无效的 '..' 路径片段"
 msgid "Fetching objects"
 msgstr "正在获取对象"
 
-#: worktree.c:236 builtin/am.c:2103
+#: worktree.c:238 builtin/am.c:2103
 #, c-format
 msgid "failed to read '%s'"
 msgstr "读取 '%s' 失败"
 
-#: worktree.c:283
+#: worktree.c:304
 #, c-format
 msgid "'%s' at main working tree is not the repository directory"
 msgstr "在主工作区的 '%s' 不是仓库目录"
 
-#: worktree.c:294
+#: worktree.c:315
 #, c-format
 msgid "'%s' file does not contain absolute path to the working tree location"
 msgstr "文件 '%s' 不包含工作区的绝对路径"
 
-#: worktree.c:306
+#: worktree.c:327
 #, c-format
 msgid "'%s' does not exist"
 msgstr "'%s' 不存在"
 
-#: worktree.c:312
+#: worktree.c:333
 #, c-format
 msgid "'%s' is not a .git file, error code %d"
 msgstr "'%s' 不是一个 .git 文件,错误码 %d"
 
-#: worktree.c:321
+#: worktree.c:342
 #, c-format
 msgid "'%s' does not point back to '%s'"
 msgstr "'%s' 没有指回到 '%s'"
 
-#: worktree.c:587
+#: worktree.c:608
 msgid "not a directory"
 msgstr "不是一个目录"
 
-#: worktree.c:596
+#: worktree.c:617
 msgid ".git is not a file"
 msgstr ".git 不是一个文件"
 
-#: worktree.c:598
+#: worktree.c:619
 msgid ".git file broken"
 msgstr ".git 文件损坏"
 
-#: worktree.c:600
+#: worktree.c:621
 msgid ".git file incorrect"
 msgstr ".git 文件不正确"
 
-#: worktree.c:670
+#: worktree.c:727
 msgid "not a valid path"
 msgstr "不是一个有效的路径"
 
-#: worktree.c:676
+#: worktree.c:733
 msgid "unable to locate repository; .git is not a file"
 msgstr "无法定位仓库,.git 不是一个文件"
 
-#: worktree.c:679
+#: worktree.c:737
+msgid "unable to locate repository; .git file does not reference a repository"
+msgstr "无法定位仓库,.git 文件没有指向一个仓库"
+
+#: worktree.c:741
 msgid "unable to locate repository; .git file broken"
 msgstr "无法定位仓库,.git 文件损坏"
 
-#: worktree.c:685
+#: worktree.c:747
 msgid "gitdir unreadable"
 msgstr "gitdir 不可读"
 
-#: worktree.c:689
+#: worktree.c:751
 msgid "gitdir incorrect"
 msgstr "gitdir 不正确"
 
+#: worktree.c:776
+msgid "not a valid directory"
+msgstr "不是一个有效的目录"
+
+#: worktree.c:782
+msgid "gitdir file does not exist"
+msgstr "gitdir 文件不存在"
+
+#: worktree.c:787 worktree.c:796
+#, c-format
+msgid "unable to read gitdir file (%s)"
+msgstr "无法读取 gitdir 文件(%s)"
+
+#: worktree.c:806
+#, c-format
+msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
+msgstr "读取过短(期望 %<PRIuMAX> 字节,读取 %<PRIuMAX>)"
+
+#: worktree.c:814
+msgid "invalid gitdir file"
+msgstr "无效的 gitdir 文件"
+
+#: worktree.c:822
+msgid "gitdir file points to non-existent location"
+msgstr "gitdir 文件指向一个不存在的位置"
+
 #: wrapper.c:197 wrapper.c:367
 #, c-format
 msgid "could not open '%s' for reading and writing"
@@ -9105,11 +9376,11 @@ msgstr "  (酌情使用 \"git add/rm <文件>...\" 标记解决方案)"
 msgid "  (use \"git rm <file>...\" to mark resolution)"
 msgstr "  (使用 \"git rm <文件>...\" 标记解决方案)"
 
-#: wt-status.c:211 wt-status.c:1070
+#: wt-status.c:211 wt-status.c:1072
 msgid "Changes to be committed:"
 msgstr "要提交的变更:"
 
-#: wt-status.c:234 wt-status.c:1079
+#: wt-status.c:234 wt-status.c:1081
 msgid "Changes not staged for commit:"
 msgstr "尚未暂存以备提交的变更:"
 
@@ -9215,22 +9486,22 @@ msgstr "修改的内容, "
 msgid "untracked content, "
 msgstr "未跟踪的内容, "
 
-#: wt-status.c:903
+#: wt-status.c:905
 #, 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:934
+#: wt-status.c:936
 msgid "Submodules changed but not updated:"
 msgstr "子模组已修改但尚未更新:"
 
-#: wt-status.c:936
+#: wt-status.c:938
 msgid "Submodule changes to be committed:"
 msgstr "要提交的子模组变更:"
 
-#: wt-status.c:1018
+#: wt-status.c:1020
 msgid ""
 "Do not modify or remove the line above.\n"
 "Everything below it will be ignored."
@@ -9238,7 +9509,7 @@ msgstr ""
 "不要改动或删除上面的一行。\n"
 "其下所有内容都将被忽略。"
 
-#: wt-status.c:1110
+#: wt-status.c:1112
 #, c-format
 msgid ""
 "\n"
@@ -9249,77 +9520,77 @@ msgstr ""
 "花了 %.2f 秒才计算出分支的领先/落后范围。\n"
 "为避免,您可以使用 '--no-ahead-behind'。\n"
 
-#: wt-status.c:1140
+#: wt-status.c:1142
 msgid "You have unmerged paths."
 msgstr "您有尚未合并的路径。"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1143
+#: wt-status.c:1145
 msgid "  (fix conflicts and run \"git commit\")"
 msgstr "  (解决冲突并运行 \"git commit\")"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1145
+#: wt-status.c:1147
 msgid "  (use \"git merge --abort\" to abort the merge)"
 msgstr "  (使用 \"git merge --abort\" 终止合并)"
 
-#: wt-status.c:1149
+#: wt-status.c:1151
 msgid "All conflicts fixed but you are still merging."
 msgstr "所有冲突已解决但您仍处于合并中。"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1152
+#: wt-status.c:1154
 msgid "  (use \"git commit\" to conclude merge)"
 msgstr "  (使用 \"git commit\" 结束合并)"
 
-#: wt-status.c:1161
+#: wt-status.c:1163
 msgid "You are in the middle of an am session."
 msgstr "您正处于 am 操作过程中。"
 
-#: wt-status.c:1164
+#: wt-status.c:1166
 msgid "The current patch is empty."
 msgstr "当前的补丁为空。"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1168
+#: wt-status.c:1170
 msgid "  (fix conflicts and then run \"git am --continue\")"
 msgstr "  (解决冲突,然后运行 \"git am --continue\")"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1170
+#: wt-status.c:1172
 msgid "  (use \"git am --skip\" to skip this patch)"
 msgstr "  (使用 \"git am --skip\" 跳过此补丁)"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1172
+#: wt-status.c:1174
 msgid "  (use \"git am --abort\" to restore the original branch)"
 msgstr "  (使用 \"git am --abort\" 恢复原有分支)"
 
-#: wt-status.c:1305
+#: wt-status.c:1307
 msgid "git-rebase-todo is missing."
 msgstr "git-rebase-todo 丢失。"
 
-#: wt-status.c:1307
+#: wt-status.c:1309
 msgid "No commands done."
 msgstr "没有命令被执行。"
 
-#: wt-status.c:1310
+#: wt-status.c:1312
 #, 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:1321
+#: wt-status.c:1323
 #, c-format
 msgid "  (see more in file %s)"
 msgstr "  (更多参见文件 %s)"
 
-#: wt-status.c:1326
+#: wt-status.c:1328
 msgid "No commands remaining."
 msgstr "未剩下任何命令。"
 
-#: wt-status.c:1329
+#: wt-status.c:1331
 #, c-format
 msgid "Next command to do (%d remaining command):"
 msgid_plural "Next commands to do (%d remaining commands):"
@@ -9327,194 +9598,202 @@ msgstr[0] "接下来要执行的命令(剩余 %d 条命令):"
 msgstr[1] "接下来要执行的命令(剩余 %d 条命令):"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1337
+#: wt-status.c:1339
 msgid "  (use \"git rebase --edit-todo\" to view and edit)"
 msgstr "  (使用 \"git rebase --edit-todo\" 来查看和编辑)"
 
-#: wt-status.c:1349
+#: wt-status.c:1351
 #, c-format
 msgid "You are currently rebasing branch '%s' on '%s'."
 msgstr "您在执行将分支 '%s' 变基到 '%s' 的操作。"
 
-#: wt-status.c:1354
+#: wt-status.c:1356
 msgid "You are currently rebasing."
 msgstr "您在执行变基操作。"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1367
+#: wt-status.c:1369
 msgid "  (fix conflicts and then run \"git rebase --continue\")"
 msgstr "  (解决冲突,然后运行 \"git rebase --continue\")"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1369
+#: wt-status.c:1371
 msgid "  (use \"git rebase --skip\" to skip this patch)"
 msgstr "  (使用 \"git rebase --skip\" 跳过此补丁)"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1371
+#: wt-status.c:1373
 msgid "  (use \"git rebase --abort\" to check out the original branch)"
 msgstr "  (使用 \"git rebase --abort\" 以检出原有分支)"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1378
+#: wt-status.c:1380
 msgid "  (all conflicts fixed: run \"git rebase --continue\")"
 msgstr "  (所有冲突已解决:运行 \"git rebase --continue\")"
 
-#: wt-status.c:1382
+#: wt-status.c:1384
 #, c-format
 msgid ""
 "You are currently splitting a commit while rebasing branch '%s' on '%s'."
 msgstr "您在执行将分支 '%s' 变基到 '%s' 的操作时拆分提交。"
 
-#: wt-status.c:1387
+#: wt-status.c:1389
 msgid "You are currently splitting a commit during a rebase."
 msgstr "您在执行变基操作时拆分提交。"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1390
+#: wt-status.c:1392
 msgid "  (Once your working directory is clean, run \"git rebase --continue\")"
 msgstr "  (一旦您工作目录提交干净后,运行 \"git rebase --continue\")"
 
-#: wt-status.c:1394
+#: wt-status.c:1396
 #, c-format
 msgid "You are currently editing a commit while rebasing branch '%s' on '%s'."
 msgstr "您在执行将分支 '%s' 变基到 '%s' 的操作时编辑提交。"
 
-#: wt-status.c:1399
+#: wt-status.c:1401
 msgid "You are currently editing a commit during a rebase."
 msgstr "您在执行变基操作时编辑提交。"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1402
+#: wt-status.c:1404
 msgid "  (use \"git commit --amend\" to amend the current commit)"
 msgstr "  (使用 \"git commit --amend\" 修补当前提交)"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1404
+#: wt-status.c:1406
 msgid ""
 "  (use \"git rebase --continue\" once you are satisfied with your changes)"
 msgstr "  (当您对您的修改满意后执行 \"git rebase --continue\")"
 
-#: wt-status.c:1415
+#: wt-status.c:1417
 msgid "Cherry-pick currently in progress."
 msgstr "拣选操作正在进行中。"
 
-#: wt-status.c:1418
+#: wt-status.c:1420
 #, c-format
 msgid "You are currently cherry-picking commit %s."
 msgstr "您在执行拣选提交 %s 的操作。"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1425
+#: wt-status.c:1427
 msgid "  (fix conflicts and run \"git cherry-pick --continue\")"
 msgstr "  (解决冲突并运行 \"git cherry-pick --continue\")"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1428
+#: wt-status.c:1430
 msgid "  (run \"git cherry-pick --continue\" to continue)"
 msgstr "  (执行 \"git cherry-pick --continue\" 以继续)"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1431
+#: wt-status.c:1433
 msgid "  (all conflicts fixed: run \"git cherry-pick --continue\")"
 msgstr "  (所有冲突已解决:运行 \"git cherry-pick --continue\")"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1433
+#: wt-status.c:1435
 msgid "  (use \"git cherry-pick --skip\" to skip this patch)"
 msgstr "  (使用 \"git cherry-pick --skip\" 跳过此补丁)"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1435
+#: wt-status.c:1437
 msgid "  (use \"git cherry-pick --abort\" to cancel the cherry-pick operation)"
 msgstr "  (使用 \"git cherry-pick --abort\" 以取消拣选操作)"
 
-#: wt-status.c:1445
+#: wt-status.c:1447
 msgid "Revert currently in progress."
 msgstr "还原操作正在行中。"
 
-#: wt-status.c:1448
+#: wt-status.c:1450
 #, c-format
 msgid "You are currently reverting commit %s."
 msgstr "您在执行反转提交 %s 的操作。"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1454
+#: wt-status.c:1456
 msgid "  (fix conflicts and run \"git revert --continue\")"
 msgstr "  (解决冲突并执行 \"git revert --continue\")"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1457
+#: wt-status.c:1459
 msgid "  (run \"git revert --continue\" to continue)"
 msgstr "  (执行 \"git revert --continue\" 以继续)"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1460
+#: wt-status.c:1462
 msgid "  (all conflicts fixed: run \"git revert --continue\")"
 msgstr "  (所有冲突已解决:执行 \"git revert --continue\")"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1462
+#: wt-status.c:1464
 msgid "  (use \"git revert --skip\" to skip this patch)"
 msgstr "  (使用 \"git revert --skip\" 跳过此补丁)"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1464
+#: wt-status.c:1466
 msgid "  (use \"git revert --abort\" to cancel the revert operation)"
 msgstr "  (使用 \"git revert --abort\" 以取消反转提交操作)"
 
-#: wt-status.c:1474
+#: wt-status.c:1476
 #, c-format
 msgid "You are currently bisecting, started from branch '%s'."
 msgstr "您在执行从分支 '%s' 开始的二分查找操作。"
 
-#: wt-status.c:1478
+#: wt-status.c:1480
 msgid "You are currently bisecting."
 msgstr "您在执行二分查找操作。"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1481
+#: wt-status.c:1483
 msgid "  (use \"git bisect reset\" to get back to the original branch)"
 msgstr "  (使用 \"git bisect reset\" 以回到原有分支)"
 
-#: wt-status.c:1492
+#: wt-status.c:1494
 #, c-format
 msgid "You are in a sparse checkout with %d%% of tracked files present."
 msgstr "您处于稀疏签出状态,包含 %d%% 的跟踪文件"
 
-#: wt-status.c:1731
+#: wt-status.c:1733
 msgid "On branch "
 msgstr "位于分支 "
 
-#: wt-status.c:1738
+#: wt-status.c:1740
 msgid "interactive rebase in progress; onto "
 msgstr "交互式变基操作正在进行中;至 "
 
-#: wt-status.c:1740
+#: wt-status.c:1742
 msgid "rebase in progress; onto "
 msgstr "变基操作正在进行中;至 "
 
-#: wt-status.c:1750
+#: wt-status.c:1747
+msgid "HEAD detached at "
+msgstr "头指针分离于 "
+
+#: wt-status.c:1749
+msgid "HEAD detached from "
+msgstr "头指针分离自 "
+
+#: wt-status.c:1752
 msgid "Not currently on any branch."
 msgstr "当前不在任何分支上。"
 
-#: wt-status.c:1767
+#: wt-status.c:1769
 msgid "Initial commit"
 msgstr "初始提交"
 
-#: wt-status.c:1768
+#: wt-status.c:1770
 msgid "No commits yet"
 msgstr "尚无提交"
 
-#: wt-status.c:1782
+#: wt-status.c:1784
 msgid "Untracked files"
 msgstr "未跟踪的文件"
 
-#: wt-status.c:1784
+#: wt-status.c:1786
 msgid "Ignored files"
 msgstr "忽略的文件"
 
-#: wt-status.c:1788
+#: wt-status.c:1790
 #, c-format
 msgid ""
 "It took %.2f seconds to enumerate untracked files. 'status -uno'\n"
@@ -9524,97 +9803,97 @@ msgstr ""
 "耗费了 %.2f 秒以枚举未跟踪的文件。'status -uno' 也许能提高速度,\n"
 "但您需要小心不要忘了添加新文件(参见 'git help status')。"
 
-#: wt-status.c:1794
+#: wt-status.c:1796
 #, c-format
 msgid "Untracked files not listed%s"
 msgstr "未跟踪的文件没有列出%s"
 
 #  译者:中文字符串拼接,可删除前导空格
-#: wt-status.c:1796
+#: wt-status.c:1798
 msgid " (use -u option to show untracked files)"
 msgstr "(使用 -u 参数显示未跟踪的文件)"
 
-#: wt-status.c:1802
+#: wt-status.c:1804
 msgid "No changes"
 msgstr "没有修改"
 
-#: wt-status.c:1807
+#: wt-status.c:1809
 #, c-format
 msgid "no changes added to commit (use \"git add\" and/or \"git commit -a\")\n"
 msgstr "修改尚未加入提交(使用 \"git add\" 和/或 \"git commit -a\")\n"
 
-#: wt-status.c:1811
+#: wt-status.c:1813
 #, c-format
 msgid "no changes added to commit\n"
 msgstr "修改尚未加入提交\n"
 
-#: wt-status.c:1815
+#: wt-status.c:1817
 #, c-format
 msgid ""
 "nothing added to commit but untracked files present (use \"git add\" to "
 "track)\n"
 msgstr "提交为空,但是存在尚未跟踪的文件(使用 \"git add\" 建立跟踪)\n"
 
-#: wt-status.c:1819
+#: wt-status.c:1821
 #, c-format
 msgid "nothing added to commit but untracked files present\n"
 msgstr "提交为空,但是存在尚未跟踪的文件\n"
 
 #  译者:中文字符串拼接,可删除前导空格
-#: wt-status.c:1823
+#: wt-status.c:1825
 #, c-format
 msgid "nothing to commit (create/copy files and use \"git add\" to track)\n"
 msgstr "无文件要提交(创建/拷贝文件并使用 \"git add\" 建立跟踪)\n"
 
-#: wt-status.c:1827 wt-status.c:1833
+#: wt-status.c:1829 wt-status.c:1835
 #, c-format
 msgid "nothing to commit\n"
 msgstr "无文件要提交\n"
 
 #  译者:中文字符串拼接,可删除前导空格
-#: wt-status.c:1830
+#: wt-status.c:1832
 #, c-format
 msgid "nothing to commit (use -u to show untracked files)\n"
 msgstr "无文件要提交(使用 -u 显示未跟踪的文件)\n"
 
 #  译者:中文字符串拼接,可删除前导空格
-#: wt-status.c:1835
+#: wt-status.c:1837
 #, c-format
 msgid "nothing to commit, working tree clean\n"
 msgstr "无文件要提交,干净的工作区\n"
 
-#: wt-status.c:1940
+#: wt-status.c:1942
 msgid "No commits yet on "
 msgstr "尚无提交在 "
 
-#: wt-status.c:1944
+#: wt-status.c:1946
 msgid "HEAD (no branch)"
 msgstr "HEAD(非分支)"
 
-#: wt-status.c:1975
+#: wt-status.c:1977
 msgid "different"
 msgstr "不同"
 
 #  译者:注意保持句尾空格
-#: wt-status.c:1977 wt-status.c:1985
+#: wt-status.c:1979 wt-status.c:1987
 msgid "behind "
 msgstr "落后 "
 
-#: wt-status.c:1980 wt-status.c:1983
+#: wt-status.c:1982 wt-status.c:1985
 msgid "ahead "
 msgstr "领先 "
 
 #. TRANSLATORS: the action is e.g. "pull with rebase"
-#: wt-status.c:2505
+#: wt-status.c:2507
 #, c-format
 msgid "cannot %s: You have unstaged changes."
 msgstr "不能%s:您有未暂存的变更。"
 
-#: wt-status.c:2511
+#: wt-status.c:2513
 msgid "additionally, your index contains uncommitted changes."
 msgstr "另外,您的索引中包含未提交的变更。"
 
-#: wt-status.c:2513
+#: wt-status.c:2515
 #, c-format
 msgid "cannot %s: Your index contains uncommitted changes."
 msgstr "不能%s:您的索引中包含未提交的变更。"
@@ -9628,126 +9907,131 @@ msgstr "删除 '%s' 失败"
 msgid "git add [<options>] [--] <pathspec>..."
 msgstr "git add [<选项>] [--] <路径规格>..."
 
-#: builtin/add.c:88
+#: builtin/add.c:58
+#, c-format
+msgid "cannot chmod %cx '%s'"
+msgstr "不能 chmod %cx '%s'"
+
+#: builtin/add.c:96
 #, c-format
 msgid "unexpected diff status %c"
 msgstr "意外的差异状态 %c"
 
-#: builtin/add.c:93 builtin/commit.c:285
+#: builtin/add.c:101 builtin/commit.c:285
 msgid "updating files failed"
 msgstr "更新文件失败"
 
-#: builtin/add.c:103
+#: builtin/add.c:111
 #, c-format
 msgid "remove '%s'\n"
 msgstr "删除 '%s'\n"
 
-#: builtin/add.c:178
+#: builtin/add.c:186
 msgid "Unstaged changes after refreshing the index:"
 msgstr "刷新索引之后尚未被暂存的变更:"
 
-#: builtin/add.c:272 builtin/rev-parse.c:908
+#: builtin/add.c:280 builtin/rev-parse.c:991
 msgid "Could not read the index"
 msgstr "不能读取索引"
 
-#: builtin/add.c:283
+#: builtin/add.c:291
 #, c-format
 msgid "Could not open '%s' for writing."
 msgstr "无法为写入打开 '%s'。"
 
-#: builtin/add.c:287
+#: builtin/add.c:295
 msgid "Could not write patch"
 msgstr "不能生成补丁"
 
-#: builtin/add.c:290
+#: builtin/add.c:298
 msgid "editing patch failed"
 msgstr "编辑补丁失败"
 
-#: builtin/add.c:293
+#: builtin/add.c:301
 #, c-format
 msgid "Could not stat '%s'"
 msgstr "不能对 '%s' 调用 stat"
 
-#: builtin/add.c:295
+#: builtin/add.c:303
 msgid "Empty patch. Aborted."
 msgstr "空补丁。异常终止。"
 
-#: builtin/add.c:300
+#: builtin/add.c:308
 #, c-format
 msgid "Could not apply '%s'"
 msgstr "不能应用 '%s'"
 
-#: builtin/add.c:308
+#: builtin/add.c:316
 msgid "The following paths are ignored by one of your .gitignore files:\n"
 msgstr "下列路径根据您的一个 .gitignore 文件而被忽略:\n"
 
-#: builtin/add.c:328 builtin/clean.c:904 builtin/fetch.c:166 builtin/mv.c:124
+#: builtin/add.c:336 builtin/clean.c:904 builtin/fetch.c:169 builtin/mv.c:124
 #: builtin/prune-packed.c:14 builtin/pull.c:204 builtin/push.c:559
 #: builtin/remote.c:1427 builtin/rm.c:242 builtin/send-pack.c:190
 msgid "dry run"
 msgstr "演习"
 
-#: builtin/add.c:331
+#: builtin/add.c:339
 msgid "interactive picking"
 msgstr "交互式拣选"
 
-#: builtin/add.c:332 builtin/checkout.c:1547 builtin/reset.c:308
+#: builtin/add.c:340 builtin/checkout.c:1546 builtin/reset.c:308
 msgid "select hunks interactively"
 msgstr "交互式挑选数据块"
 
-#: builtin/add.c:333
+#: builtin/add.c:341
 msgid "edit current diff and apply"
 msgstr "编辑当前差异并应用"
 
-#: builtin/add.c:334
+#: builtin/add.c:342
 msgid "allow adding otherwise ignored files"
 msgstr "允许添加忽略的文件"
 
-#: builtin/add.c:335
+#: builtin/add.c:343
 msgid "update tracked files"
 msgstr "更新已跟踪的文件"
 
-#: builtin/add.c:336
+#: builtin/add.c:344
 msgid "renormalize EOL of tracked files (implies -u)"
 msgstr "对已跟踪文件(暗含 -u)重新归一换行符"
 
-#: builtin/add.c:337
+#: builtin/add.c:345
 msgid "record only the fact that the path will be added later"
 msgstr "只记录,该路径稍后再添加"
 
-#: builtin/add.c:338
+#: builtin/add.c:346
 msgid "add changes from all tracked and untracked files"
 msgstr "添加所有改变的已跟踪文件和未跟踪文件"
 
-#: builtin/add.c:341
+#: builtin/add.c:349
 msgid "ignore paths removed in the working tree (same as --no-all)"
 msgstr "忽略工作区中移除的路径(和 --no-all 相同)"
 
-#: builtin/add.c:343
+#: builtin/add.c:351
 msgid "don't add, only refresh the index"
 msgstr "不添加,只刷新索引"
 
-#: builtin/add.c:344
+#: builtin/add.c:352
 msgid "just skip files which cannot be added because of errors"
 msgstr "跳过因出错不能添加的文件"
 
-#: builtin/add.c:345
+#: builtin/add.c:353
 msgid "check if - even missing - files are ignored in dry run"
 msgstr "检查在演习模式下文件(即使不存在)是否被忽略"
 
-#: builtin/add.c:347 builtin/update-index.c:1004
+#: builtin/add.c:355 builtin/update-index.c:1004
 msgid "override the executable bit of the listed files"
 msgstr "覆盖列表里文件的可执行位"
 
-#: builtin/add.c:349
+#: builtin/add.c:357
 msgid "warn when adding an embedded repository"
 msgstr "创建一个嵌入式仓库时给予警告"
 
-#: builtin/add.c:351
+#: builtin/add.c:359
 msgid "backend for `git stash -p`"
 msgstr "`git stash -p` 的后端"
 
-#: builtin/add.c:369
+#: builtin/add.c:377
 #, c-format
 msgid ""
 "You've added another git repository inside your current repository.\n"
@@ -9775,12 +10059,12 @@ msgstr ""
 "\n"
 "参见 \"git help submodule\" 获取更多信息。"
 
-#: builtin/add.c:397
+#: builtin/add.c:405
 #, c-format
 msgid "adding embedded git repository: %s"
 msgstr "正在添加嵌入式 git 仓库:%s"
 
-#: builtin/add.c:416
+#: builtin/add.c:424
 msgid ""
 "Use -f if you really want to add them.\n"
 "Turn this message off by running\n"
@@ -9790,47 +10074,47 @@ msgstr ""
 "运行下面的命令来关闭本消息\n"
 "\"git config advice.addIgnoredFile false\""
 
-#: builtin/add.c:425
+#: builtin/add.c:433
 msgid "adding files failed"
 msgstr "添加文件失败"
 
-#: builtin/add.c:453 builtin/commit.c:345
+#: builtin/add.c:461 builtin/commit.c:345
 msgid "--pathspec-from-file is incompatible with --interactive/--patch"
 msgstr "--pathspec-from-file 与 --interactive/--patch 不兼容"
 
-#: builtin/add.c:470
+#: builtin/add.c:478
 msgid "--pathspec-from-file is incompatible with --edit"
 msgstr "--pathspec-from-file 与 --edit 不兼容"
 
-#: builtin/add.c:482
+#: builtin/add.c:490
 msgid "-A and -u are mutually incompatible"
 msgstr "-A 和 -u 选项互斥"
 
-#: builtin/add.c:485
+#: builtin/add.c:493
 msgid "Option --ignore-missing can only be used together with --dry-run"
 msgstr "选项 --ignore-missing 只能和 --dry-run 同时使用"
 
-#: builtin/add.c:489
+#: builtin/add.c:497
 #, c-format
 msgid "--chmod param '%s' must be either -x or +x"
 msgstr "参数 --chmod 取值 '%s' 必须是 -x 或 +x"
 
-#: builtin/add.c:507 builtin/checkout.c:1715 builtin/commit.c:351
-#: builtin/reset.c:328 builtin/rm.c:272 builtin/stash.c:1502
+#: builtin/add.c:515 builtin/checkout.c:1714 builtin/commit.c:351
+#: builtin/reset.c:328 builtin/rm.c:272 builtin/stash.c:1569
 msgid "--pathspec-from-file is incompatible with pathspec arguments"
 msgstr "--pathspec-from-file 与路径表达式参数不兼容"
 
-#: builtin/add.c:514 builtin/checkout.c:1727 builtin/commit.c:357
-#: builtin/reset.c:334 builtin/rm.c:278 builtin/stash.c:1508
+#: builtin/add.c:522 builtin/checkout.c:1726 builtin/commit.c:357
+#: builtin/reset.c:334 builtin/rm.c:278 builtin/stash.c:1575
 msgid "--pathspec-file-nul requires --pathspec-from-file"
 msgstr "--pathspec-file-nul 需要 --pathspec-from-file"
 
-#: builtin/add.c:518
+#: builtin/add.c:526
 #, c-format
 msgid "Nothing specified, nothing added.\n"
 msgstr "没有指定文件,也没有文件被添加。\n"
 
-#: builtin/add.c:520
+#: builtin/add.c:528
 msgid ""
 "Maybe you wanted to say 'git add .'?\n"
 "Turn this message off by running\n"
@@ -10077,7 +10361,7 @@ msgid "allow fall back on 3way merging if needed"
 msgstr "如果必要,允许使用三方合并。"
 
 #: builtin/am.c:2225 builtin/init-db.c:560 builtin/prune-packed.c:16
-#: builtin/repack.c:335 builtin/stash.c:815
+#: builtin/repack.c:334 builtin/stash.c:882
 msgid "be quiet"
 msgstr "静默模式"
 
@@ -10120,17 +10404,17 @@ msgid "pass it through git-apply"
 msgstr "传递给 git-apply"
 
 #: builtin/am.c:2263 builtin/commit.c:1395 builtin/fmt-merge-msg.c:17
-#: builtin/fmt-merge-msg.c:20 builtin/grep.c:903 builtin/merge.c:260
+#: builtin/fmt-merge-msg.c:20 builtin/grep.c:904 builtin/merge.c:261
 #: builtin/pull.c:141 builtin/pull.c:200 builtin/pull.c:217
-#: builtin/rebase.c:1341 builtin/repack.c:346 builtin/repack.c:350
-#: builtin/repack.c:352 builtin/show-branch.c:650 builtin/show-ref.c:172
-#: builtin/tag.c:404 parse-options.h:154 parse-options.h:175
+#: builtin/rebase.c:1347 builtin/repack.c:345 builtin/repack.c:349
+#: builtin/repack.c:351 builtin/show-branch.c:650 builtin/show-ref.c:172
+#: builtin/tag.c:436 parse-options.h:154 parse-options.h:175
 #: parse-options.h:316
 msgid "n"
 msgstr "n"
 
-#: builtin/am.c:2269 builtin/branch.c:661 builtin/bugreport.c:136
-#: builtin/for-each-ref.c:38 builtin/replace.c:556 builtin/tag.c:438
+#: builtin/am.c:2269 builtin/branch.c:670 builtin/bugreport.c:136
+#: builtin/for-each-ref.c:38 builtin/replace.c:556 builtin/tag.c:470
 #: builtin/verify-tag.c:38
 msgid "format"
 msgstr "格式"
@@ -10156,12 +10440,12 @@ msgid "skip the current patch"
 msgstr "跳过当前补丁"
 
 #: builtin/am.c:2287
-msgid "restore the original branch and abort the patching operation."
-msgstr "恢复原始分支并终止打补丁操作"
+msgid "restore the original branch and abort the patching operation"
+msgstr "恢复原始分支并终止打补丁操作"
 
 #: builtin/am.c:2290
-msgid "abort the patching operation but keep HEAD where it is."
-msgstr "终止补丁操作但保持 HEAD 不变"
+msgid "abort the patching operation but keep HEAD where it is"
+msgstr "终止补丁操作但保持 HEAD 不变"
 
 #: builtin/am.c:2294
 msgid "show the patch being applied"
@@ -10176,12 +10460,12 @@ msgid "use current timestamp for author date"
 msgstr "用当前时间作为作者日期"
 
 #: builtin/am.c:2303 builtin/commit-tree.c:120 builtin/commit.c:1515
-#: builtin/merge.c:297 builtin/pull.c:175 builtin/rebase.c:536
-#: builtin/rebase.c:1394 builtin/revert.c:117 builtin/tag.c:419
+#: builtin/merge.c:298 builtin/pull.c:175 builtin/rebase.c:538
+#: builtin/rebase.c:1400 builtin/revert.c:117 builtin/tag.c:451
 msgid "key-id"
 msgstr "key-id"
 
-#: builtin/am.c:2304 builtin/rebase.c:537 builtin/rebase.c:1395
+#: builtin/am.c:2304 builtin/rebase.c:539 builtin/rebase.c:1401
 msgid "GPG-sign commits"
 msgstr "使用 GPG 签名提交"
 
@@ -10262,25 +10546,10 @@ msgid "git bisect--helper --bisect-reset [<commit>]"
 msgstr "git bisect--helper --bisect-reset [<提交>]"
 
 #: builtin/bisect--helper.c:24
-msgid ""
-"git bisect--helper --bisect-write [--no-log] <state> <revision> <good_term> "
-"<bad_term>"
-msgstr ""
-"git bisect--helper --bisect-write [--no-log] <状态> <版本> <好-术语> <坏-术语"
-">"
-
-#: builtin/bisect--helper.c:25
-msgid ""
-"git bisect--helper --bisect-check-and-set-terms <command> <good_term> "
-"<bad_term>"
-msgstr ""
-"git bisect--helper --bisect-check-and-set-terms <命令> <好-术语> <坏-术语>"
-
-#: builtin/bisect--helper.c:26
 msgid "git bisect--helper --bisect-next-check <good_term> <bad_term> [<term>]"
 msgstr "git bisect--helper --bisect-next-check <好-术语> <坏-术语> [<术语>]"
 
-#: builtin/bisect--helper.c:27
+#: builtin/bisect--helper.c:25
 msgid ""
 "git bisect--helper --bisect-terms [--term-good | --term-old | --term-bad | --"
 "term-new]"
@@ -10288,7 +10557,7 @@ msgstr ""
 "git bisect--helper --bisect-terms [--term-good | --term-old | --term-bad | --"
 "term-new]"
 
-#: builtin/bisect--helper.c:28
+#: builtin/bisect--helper.c:26
 msgid ""
 "git bisect--helper --bisect-start [--term-{new,bad}=<term> --term-{old,good}"
 "=<term>] [--no-checkout] [--first-parent] [<bad> [<good>...]] [--] "
@@ -10297,88 +10566,92 @@ msgstr ""
 "git bisect--helper --bisect-start [--term-{new,bad}=<术语> --term-{old,good}"
 "=<术语>] [--no-checkout] [--first-parent] [<坏> [<好>...]] [--] [<路径>...]"
 
-#: builtin/bisect--helper.c:30
+#: builtin/bisect--helper.c:28
 msgid "git bisect--helper --bisect-next"
 msgstr "git bisect--helper --bisect-next"
 
-#: builtin/bisect--helper.c:31
-msgid "git bisect--helper --bisect-auto-next"
-msgstr "git bisect--helper --bisect-auto-next"
-
-#: builtin/bisect--helper.c:32
+#: builtin/bisect--helper.c:29
 msgid "git bisect--helper --bisect-state (bad|new) [<rev>]"
 msgstr "git bisect--helper --bisect-state (bad|new) [<版本>]"
 
-#: builtin/bisect--helper.c:33
+#: builtin/bisect--helper.c:30
 msgid "git bisect--helper --bisect-state (good|old) [<rev>...]"
 msgstr "git bisect--helper --bisect-state (good|old) [<版本>...]"
 
-#: builtin/bisect--helper.c:108
+#: builtin/bisect--helper.c:31
+msgid "git bisect--helper --bisect-replay <filename>"
+msgstr "git bisect--helper --bisect-replay <文件>"
+
+#: builtin/bisect--helper.c:32
+msgid "git bisect--helper --bisect-skip [(<rev>|<range>)...]"
+msgstr "git bisect--helper --bisect-skip [(<版本>|<范围>)...]"
+
+#: builtin/bisect--helper.c:107
 #, c-format
 msgid "cannot open file '%s' in mode '%s'"
 msgstr "不能以 '%2$s' 模式打开文件 '%1$s'"
 
-#: builtin/bisect--helper.c:115
+#: builtin/bisect--helper.c:114
 #, c-format
 msgid "could not write to file '%s'"
 msgstr "不能写入文件 '%s'"
 
-#: builtin/bisect--helper.c:154
+#: builtin/bisect--helper.c:153
 #, c-format
 msgid "'%s' is not a valid term"
 msgstr "'%s' 不是一个有效的术语"
 
-#: builtin/bisect--helper.c:158
+#: builtin/bisect--helper.c:157
 #, c-format
 msgid "can't use the builtin command '%s' as a term"
 msgstr "不能使用内置命令 '%s' 作为术语"
 
-#: builtin/bisect--helper.c:168
+#: builtin/bisect--helper.c:167
 #, c-format
 msgid "can't change the meaning of the term '%s'"
 msgstr "不能修改术语 '%s' 的含义"
 
-#: builtin/bisect--helper.c:178
+#: builtin/bisect--helper.c:177
 msgid "please use two different terms"
 msgstr "请使用两个不同的术语"
 
-#: builtin/bisect--helper.c:194
+#: builtin/bisect--helper.c:193
 #, c-format
 msgid "We are not bisecting.\n"
 msgstr "我们没有在二分查找。\n"
 
-#: builtin/bisect--helper.c:202
+#: builtin/bisect--helper.c:201
 #, c-format
 msgid "'%s' is not a valid commit"
 msgstr "'%s' 不是一个有效的提交"
 
-#: builtin/bisect--helper.c:211
+#: builtin/bisect--helper.c:210
 #, c-format
 msgid ""
 "could not check out original HEAD '%s'. Try 'git bisect reset <commit>'."
 msgstr "不能检出原始 HEAD '%s'。尝试 'git bisect reset <提交>'。"
 
-#: builtin/bisect--helper.c:255
+#: builtin/bisect--helper.c:254
 #, c-format
 msgid "Bad bisect_write argument: %s"
 msgstr "坏的 bisect_write 参数:%s"
 
-#: builtin/bisect--helper.c:260
+#: builtin/bisect--helper.c:259
 #, c-format
 msgid "couldn't get the oid of the rev '%s'"
 msgstr "无法获取版本 '%s' 的对象 ID"
 
-#: builtin/bisect--helper.c:272
+#: builtin/bisect--helper.c:271
 #, c-format
 msgid "couldn't open the file '%s'"
 msgstr "无法打开文件 '%s'"
 
-#: builtin/bisect--helper.c:298
+#: builtin/bisect--helper.c:297
 #, c-format
 msgid "Invalid command: you're currently in a %s/%s bisect"
 msgstr "无效的命令:您当前正处于一个 %s/%s 二分查找中"
 
-#: builtin/bisect--helper.c:325
+#: builtin/bisect--helper.c:324
 #, c-format
 msgid ""
 "You need to give me at least one %s and %s revision.\n"
@@ -10387,7 +10660,7 @@ msgstr ""
 "您需要给我至少一个 %s 和一个 %s 版本。\n"
 "为此您可以用 \"git bisect %s\" 和 \"git bisect %s\"。"
 
-#: builtin/bisect--helper.c:329
+#: builtin/bisect--helper.c:328
 #, c-format
 msgid ""
 "You need to start by \"git bisect start\".\n"
@@ -10398,7 +10671,7 @@ msgstr ""
 "然后需要提供我至少一个 %s 和一个 %s 版本。\n"
 "为此您可以用 \"git bisect %s\" 和 \"git bisect %s\" 命令。"
 
-#: builtin/bisect--helper.c:349
+#: builtin/bisect--helper.c:348
 #, c-format
 msgid "bisecting only with a %s commit"
 msgstr "在只有一个 %s 提交的情况下二分查找"
@@ -10408,22 +10681,22 @@ msgstr "在只有一个 %s 提交的情况下二分查找"
 #. translation. The program will only accept English input
 #. at this point.
 #.
-#: builtin/bisect--helper.c:357
+#: builtin/bisect--helper.c:356
 msgid "Are you sure [Y/n]? "
 msgstr "您确认么[Y/n]? "
 
-#: builtin/bisect--helper.c:418
+#: builtin/bisect--helper.c:417
 msgid "no terms defined"
 msgstr "未定义术语"
 
-#: builtin/bisect--helper.c:421
+#: builtin/bisect--helper.c:420
 #, c-format
 msgid ""
 "Your current terms are %s for the old state\n"
 "and %s for the new state.\n"
 msgstr "您当前针对旧状态的术语是 %s,对新状态的术语是 %s。\n"
 
-#: builtin/bisect--helper.c:431
+#: builtin/bisect--helper.c:430
 #, c-format
 msgid ""
 "invalid argument %s for 'git bisect terms'.\n"
@@ -10432,52 +10705,52 @@ msgstr ""
 "命令 'git bisect terms' 的参数 %s 无效。\n"
 "支持的选项有:--term-good|--term-old 和 --term-bad|--term-new。"
 
-#: builtin/bisect--helper.c:498
+#: builtin/bisect--helper.c:497 builtin/bisect--helper.c:1014
 msgid "revision walk setup failed\n"
 msgstr "版本遍历设置失败\n"
 
-#: builtin/bisect--helper.c:520
+#: builtin/bisect--helper.c:519
 #, c-format
 msgid "could not open '%s' for appending"
 msgstr "无法打开 '%s' 进行追加"
 
-#: builtin/bisect--helper.c:639 builtin/bisect--helper.c:652
+#: builtin/bisect--helper.c:638 builtin/bisect--helper.c:651
 msgid "'' is not a valid term"
 msgstr "'' 不是一个有效的术语"
 
-#: builtin/bisect--helper.c:662
+#: builtin/bisect--helper.c:661
 #, c-format
 msgid "unrecognized option: '%s'"
 msgstr "未识别的选项:'%s'"
 
-#: builtin/bisect--helper.c:666
+#: builtin/bisect--helper.c:665
 #, c-format
 msgid "'%s' does not appear to be a valid revision"
 msgstr "'%s' 看起来不是一个有效的版本"
 
-#: builtin/bisect--helper.c:697
+#: builtin/bisect--helper.c:696
 msgid "bad HEAD - I need a HEAD"
 msgstr "坏的 HEAD - 我需要一个 HEAD"
 
-#: builtin/bisect--helper.c:712
+#: builtin/bisect--helper.c:711
 #, c-format
 msgid "checking out '%s' failed. Try 'git bisect start <valid-branch>'."
 msgstr "检出 '%s' 失败。尝试 'git bisect start <有效分支>'。"
 
-#: builtin/bisect--helper.c:733
+#: builtin/bisect--helper.c:732
 msgid "won't bisect on cg-seek'ed tree"
 msgstr "不会在做了 cg-seek 的树上做二分查找"
 
-#: builtin/bisect--helper.c:736
+#: builtin/bisect--helper.c:735
 msgid "bad HEAD - strange symbolic ref"
 msgstr "坏的 HEAD - 奇怪的符号引用"
 
-#: builtin/bisect--helper.c:756
+#: builtin/bisect--helper.c:755
 #, c-format
 msgid "invalid ref: '%s'"
 msgstr "无效的引用:'%s'"
 
-#: builtin/bisect--helper.c:814
+#: builtin/bisect--helper.c:813
 msgid "You need to start by \"git bisect start\"\n"
 msgstr "您需要执行 \"git bisect start\" 来开始\n"
 
@@ -10486,91 +10759,101 @@ msgstr "您需要执行 \"git bisect start\" 来开始\n"
 #. translation. The program will only accept English input
 #. at this point.
 #.
-#: builtin/bisect--helper.c:825
+#: builtin/bisect--helper.c:824
 msgid "Do you want me to do it for you [Y/n]? "
 msgstr "您想让我为您这样做么[Y/n]? "
 
-#: builtin/bisect--helper.c:843
+#: builtin/bisect--helper.c:842
 msgid "Please call `--bisect-state` with at least one argument"
 msgstr "请使用至少一个参数调用 `--bisect-state`"
 
-#: builtin/bisect--helper.c:856
+#: builtin/bisect--helper.c:855
 #, c-format
 msgid "'git bisect %s' can take only one argument."
 msgstr "'git bisect %s' 只能带一个参数。"
 
-#: builtin/bisect--helper.c:868 builtin/bisect--helper.c:879
+#: builtin/bisect--helper.c:867 builtin/bisect--helper.c:878
 #, c-format
 msgid "Bad rev input: %s"
 msgstr "坏的版本输入:%s"
 
-#: builtin/bisect--helper.c:924
-msgid "reset the bisection state"
-msgstr "清除二分查找状态"
+#: builtin/bisect--helper.c:912
+msgid "We are not bisecting."
+msgstr "我们没有在二分查找。"
+
+#: builtin/bisect--helper.c:962
+#, c-format
+msgid "'%s'?? what are you talking about?"
+msgstr "'%s'?? 您在说什么?"
 
-#: builtin/bisect--helper.c:926
-msgid "write out the bisection state in BISECT_LOG"
-msgstr "将二分查找的状态写入 BISECT_LOG"
+#: builtin/bisect--helper.c:974
+#, c-format
+msgid "cannot read file '%s' for replaying"
+msgstr "不能读取文件 '%s' 来重放"
 
-#: builtin/bisect--helper.c:928
-msgid "check and set terms in a bisection state"
-msgstr "在一个二分查找状态中检查和设置术语"
+#: builtin/bisect--helper.c:1047
+msgid "reset the bisection state"
+msgstr "清除二分查找状态"
 
-#: builtin/bisect--helper.c:930
+#: builtin/bisect--helper.c:1049
 msgid "check whether bad or good terms exist"
 msgstr "检查坏的或好的术语是否存在"
 
-#: builtin/bisect--helper.c:932
+#: builtin/bisect--helper.c:1051
 msgid "print out the bisect terms"
 msgstr "打印二分查找术语"
 
-#: builtin/bisect--helper.c:934
+#: builtin/bisect--helper.c:1053
 msgid "start the bisect session"
 msgstr "启动二分查找过程"
 
-#: builtin/bisect--helper.c:936
+#: builtin/bisect--helper.c:1055
 msgid "find the next bisection commit"
 msgstr "查询下一个二分查找提交"
 
-#: builtin/bisect--helper.c:938
-msgid "verify the next bisection state then checkout the next bisection commit"
-msgstr "校验下一个二分查找状态然后检出下一个二分查找提交"
-
-#: builtin/bisect--helper.c:940
+#: builtin/bisect--helper.c:1057
 msgid "mark the state of ref (or refs)"
 msgstr "标记引用的状态"
 
-#: builtin/bisect--helper.c:942
+#: builtin/bisect--helper.c:1059
+msgid "list the bisection steps so far"
+msgstr "列出到目前为止的二分查找步骤"
+
+#: builtin/bisect--helper.c:1061
+msgid "replay the bisection process from the given file"
+msgstr "从给定文件重放二分查找进程"
+
+#: builtin/bisect--helper.c:1063
+msgid "skip some commits for checkout"
+msgstr "跳过要检出的一些提交"
+
+#: builtin/bisect--helper.c:1065
 msgid "no log for BISECT_WRITE"
 msgstr "BISECT_WRITE 无日志"
 
-#: builtin/bisect--helper.c:957
+#: builtin/bisect--helper.c:1080
 msgid "--bisect-reset requires either no argument or a commit"
 msgstr "--bisect-reset 无需参数或者需要一个提交"
 
-#: builtin/bisect--helper.c:961
-msgid "--bisect-write requires either 4 or 5 arguments"
-msgstr "--bisect-write 需要 4 或 5 个参数"
-
-#: builtin/bisect--helper.c:967
-msgid "--check-and-set-terms requires 3 arguments"
-msgstr "--check-and-set-terms 需要 3 个参数"
-
-#: builtin/bisect--helper.c:973
+#: builtin/bisect--helper.c:1085
 msgid "--bisect-next-check requires 2 or 3 arguments"
 msgstr "--bisect-next-check 需要 2 或 3 个参数"
 
-#: builtin/bisect--helper.c:979
+#: builtin/bisect--helper.c:1091
 msgid "--bisect-terms requires 0 or 1 argument"
 msgstr "--bisect-terms 需要 0 或 1 个参数"
 
-#: builtin/bisect--helper.c:988
+#: builtin/bisect--helper.c:1100
 msgid "--bisect-next requires 0 arguments"
 msgstr "--bisect-next 需要 0 个参数"
 
-#: builtin/bisect--helper.c:994
-msgid "--bisect-auto-next requires 0 arguments"
-msgstr "--bisect-auto-next 需要 0 个参数"
+#: builtin/bisect--helper.c:1111
+msgid "--bisect-log requires 0 arguments"
+msgstr "--bisect-log 需要 0 个参数"
+
+#: builtin/bisect--helper.c:1116
+msgid "no logfile given"
+msgstr "未提供日志文件"
 
 #: builtin/blame.c:32
 msgid "git blame [<options>] [<rev-opts>] [<rev>] [--] <file>"
@@ -10589,137 +10872,140 @@ msgstr "期望一个颜色:%s"
 msgid "must end with a color"
 msgstr "必须以一个颜色结尾"
 
-#: builtin/blame.c:730
+#: builtin/blame.c:728
 #, c-format
 msgid "invalid color '%s' in color.blame.repeatedLines"
 msgstr "设置 color.blame.repeatedLines 中的无效颜色 '%s'"
 
-#: builtin/blame.c:748
+#: builtin/blame.c:746
 msgid "invalid value for blame.coloring"
 msgstr "设置 blame.coloring 中的无效取值"
 
-#: builtin/blame.c:847
+#: builtin/blame.c:845
 #, c-format
 msgid "cannot find revision %s to ignore"
 msgstr "不能找到要忽略的版本 %s"
 
-#: builtin/blame.c:869
-msgid "Show blame entries as we find them, incrementally"
+#: builtin/blame.c:867
+msgid "show blame entries as we find them, incrementally"
 msgstr "增量式地显示发现的 blame 条目"
 
-#: builtin/blame.c:870
-msgid "Do not show object names of boundary commits (Default: off)"
+#: builtin/blame.c:868
+msgid "do not show object names of boundary commits (Default: off)"
 msgstr "不显示边界提交的对象名(默认:关闭)"
 
-#: builtin/blame.c:871
-msgid "Do not treat root commits as boundaries (Default: off)"
+#: builtin/blame.c:869
+msgid "do not treat root commits as boundaries (Default: off)"
 msgstr "不把根提交作为边界(默认:关闭)"
 
-#: builtin/blame.c:872
-msgid "Show work cost statistics"
-msgstr "æ\98¾ç¤ºå\91½ä»¤消耗统计"
+#: builtin/blame.c:870
+msgid "show work cost statistics"
+msgstr "æ\98¾ç¤ºå·¥ä½\9c消耗统计"
 
-#: builtin/blame.c:873
-msgid "Force progress reporting"
-msgstr "强制进度显示"
+#: builtin/blame.c:871 builtin/checkout.c:1503 builtin/clone.c:92
+#: builtin/commit-graph.c:84 builtin/commit-graph.c:222 builtin/fetch.c:175
+#: builtin/merge.c:297 builtin/multi-pack-index.c:27 builtin/pull.c:119
+#: builtin/push.c:575 builtin/send-pack.c:198
+msgid "force progress reporting"
+msgstr "强制显示进度报告"
 
-#: builtin/blame.c:874
-msgid "Show output score for blame entries"
-msgstr "显示判断 blame 条目位移的得分诊断信息"
+#: builtin/blame.c:872
+msgid "show output score for blame entries"
+msgstr "显示 blame 条目的输出得分"
 
-#: builtin/blame.c:875
-msgid "Show original filename (Default: auto)"
+#: builtin/blame.c:873
+msgid "show original filename (Default: auto)"
 msgstr "显示原始文件名(默认:自动)"
 
-#: builtin/blame.c:876
-msgid "Show original linenumber (Default: off)"
+#: builtin/blame.c:874
+msgid "show original linenumber (Default: off)"
 msgstr "显示原始的行号(默认:关闭)"
 
-#: builtin/blame.c:877
-msgid "Show in a format designed for machine consumption"
+#: builtin/blame.c:875
+msgid "show in a format designed for machine consumption"
 msgstr "显示为一个适合机器读取的格式"
 
-#: builtin/blame.c:878
-msgid "Show porcelain format with per-line commit information"
+#: builtin/blame.c:876
+msgid "show porcelain format with per-line commit information"
 msgstr "为每一行显示机器适用的提交信息"
 
-#: builtin/blame.c:879
-msgid "Use the same output mode as git-annotate (Default: off)"
+#: builtin/blame.c:877
+msgid "use the same output mode as git-annotate (Default: off)"
 msgstr "使用和 git-annotate 相同的输出模式(默认:关闭)"
 
-#: builtin/blame.c:880
-msgid "Show raw timestamp (Default: off)"
+#: builtin/blame.c:878
+msgid "show raw timestamp (Default: off)"
 msgstr "显示原始时间戳(默认:关闭)"
 
-#: builtin/blame.c:881
-msgid "Show long commit SHA1 (Default: off)"
+#: builtin/blame.c:879
+msgid "show long commit SHA1 (Default: off)"
 msgstr "显示长的 SHA1 提交号(默认:关闭)"
 
-#: builtin/blame.c:882
-msgid "Suppress author name and timestamp (Default: off)"
+#: builtin/blame.c:880
+msgid "suppress author name and timestamp (Default: off)"
 msgstr "隐藏作者名字和时间戳(默认:关闭)"
 
-#: builtin/blame.c:883
-msgid "Show author email instead of name (Default: off)"
+#: builtin/blame.c:881
+msgid "show author email instead of name (Default: off)"
 msgstr "显示作者的邮箱而不是名字(默认:关闭)"
 
-#: builtin/blame.c:884
-msgid "Ignore whitespace differences"
+#: builtin/blame.c:882
+msgid "ignore whitespace differences"
 msgstr "忽略空白差异"
 
-#: builtin/blame.c:885 builtin/log.c:1813
+#: builtin/blame.c:883 builtin/log.c:1812
 msgid "rev"
 msgstr "版本"
 
-#: builtin/blame.c:885
-msgid "Ignore <rev> when blaming"
+#: builtin/blame.c:883
+msgid "ignore <rev> when blaming"
 msgstr "在执行 blame 操作时忽略 <版本>"
 
-#: builtin/blame.c:886
-msgid "Ignore revisions from <file>"
+#: builtin/blame.c:884
+msgid "ignore revisions from <file>"
 msgstr "忽略来自 <文件> 中的版本"
 
-#: builtin/blame.c:887
+#: builtin/blame.c:885
 msgid "color redundant metadata from previous line differently"
 msgstr "使用颜色间隔输出与前一行不同的重复元信息"
 
-#: builtin/blame.c:888
+#: builtin/blame.c:886
 msgid "color lines by age"
 msgstr "依据时间着色"
 
-#: builtin/blame.c:889
-msgid "Spend extra cycles to find better match"
+#: builtin/blame.c:887
+msgid "spend extra cycles to find better match"
 msgstr "花费额外的循环来找到更好的匹配"
 
-#: builtin/blame.c:890
-msgid "Use revisions from <file> instead of calling git-rev-list"
+#: builtin/blame.c:888
+msgid "use revisions from <file> instead of calling git-rev-list"
 msgstr "使用来自 <文件> 的修订集而不是调用 git-rev-list"
 
-#: builtin/blame.c:891
-msgid "Use <file>'s contents as the final image"
-msgstr "使用 <文件> 的内容作为最终的图片"
+#: builtin/blame.c:889
+msgid "use <file>'s contents as the final image"
+msgstr "使用 <文件> 的内容作为最终的镜像"
 
-#: builtin/blame.c:892 builtin/blame.c:893
+#: builtin/blame.c:890 builtin/blame.c:891
 msgid "score"
 msgstr "得分"
 
-#: builtin/blame.c:892
-msgid "Find line copies within and across files"
+#: builtin/blame.c:890
+msgid "find line copies within and across files"
 msgstr "找到文件内及跨文件的行拷贝"
 
-#: builtin/blame.c:893
-msgid "Find line movements within and across files"
+#: builtin/blame.c:891
+msgid "find line movements within and across files"
 msgstr "找到文件内及跨文件的行移动"
 
-#: builtin/blame.c:894
+#: builtin/blame.c:892
 msgid "range"
 msgstr "范围"
 
-#: builtin/blame.c:895
-msgid "Process only line range <start>,<end> or function :<funcname>"
+#: builtin/blame.c:893
+msgid "process only line range <start>,<end> or function :<funcname>"
 msgstr "只处理在 <开始>,<结束> 范围内的行,或者函数:<函数名>"
 
-#: builtin/blame.c:947
+#: builtin/blame.c:945
 msgid "--progress can't be used with --incremental or porcelain formats"
 msgstr "--progress 不能和 --incremental 或 --porcelain 同时使用"
 
@@ -10731,18 +11017,18 @@ msgstr "--progress 不能和 --incremental 或 --porcelain 同时使用"
 #. your language may need more or fewer display
 #. columns.
 #.
-#: builtin/blame.c:998
+#: builtin/blame.c:996
 msgid "4 years, 11 months ago"
 msgstr "4 年 11 个月前"
 
-#: builtin/blame.c:1114
+#: builtin/blame.c:1112
 #, c-format
 msgid "file %s has only %lu line"
 msgid_plural "file %s has only %lu lines"
 msgstr[0] "文件 %s 只有 %lu 行"
 msgstr[1] "文件 %s 只有 %lu 行"
 
-#: builtin/blame.c:1159
+#: builtin/blame.c:1157
 msgid "Blaming lines"
 msgstr "追踪代码行"
 
@@ -10812,117 +11098,107 @@ msgstr ""
 msgid "Update of config-file failed"
 msgstr "更新配置文件失败"
 
-#: builtin/branch.c:220
+#: builtin/branch.c:223
 msgid "cannot use -a with -d"
 msgstr "不能将 -a 和 -d 同时使用"
 
-#: builtin/branch.c:226
+#: builtin/branch.c:230
 msgid "Couldn't look up commit object for HEAD"
 msgstr "无法查询 HEAD 指向的提交对象"
 
-#: builtin/branch.c:240
+#: builtin/branch.c:244
 #, c-format
 msgid "Cannot delete branch '%s' checked out at '%s'"
 msgstr "无法删除检出于 '%2$s' 的分支 '%1$s'。"
 
-#: builtin/branch.c:255
+#: builtin/branch.c:259
 #, c-format
 msgid "remote-tracking branch '%s' not found."
 msgstr "未能找到远程跟踪分支 '%s'。"
 
-#: builtin/branch.c:256
+#: builtin/branch.c:260
 #, c-format
 msgid "branch '%s' not found."
 msgstr "分支 '%s' 未发现。"
 
-#: builtin/branch.c:271
-#, c-format
-msgid "Error deleting remote-tracking branch '%s'"
-msgstr "无法删除远程跟踪分支 '%s'"
-
-#: builtin/branch.c:272
-#, c-format
-msgid "Error deleting branch '%s'"
-msgstr "无法删除分支 '%s'"
-
-#: builtin/branch.c:279
+#: builtin/branch.c:291
 #, c-format
 msgid "Deleted remote-tracking branch %s (was %s).\n"
 msgstr "已删除远程跟踪分支 %s(曾为 %s)。\n"
 
-#: builtin/branch.c:280
+#: builtin/branch.c:292
 #, c-format
 msgid "Deleted branch %s (was %s).\n"
 msgstr "已删除分支 %s(曾为 %s)。\n"
 
-#: builtin/branch.c:429 builtin/tag.c:61
+#: builtin/branch.c:438 builtin/tag.c:61
 msgid "unable to parse format string"
 msgstr "不能解析格式化字符串"
 
-#: builtin/branch.c:460
+#: builtin/branch.c:469
 msgid "could not resolve HEAD"
 msgstr "不能解析 HEAD 提交"
 
-#: builtin/branch.c:466
+#: builtin/branch.c:475
 #, c-format
 msgid "HEAD (%s) points outside of refs/heads/"
 msgstr "HEAD (%s) 指向 refs/heads/ 之外"
 
-#: builtin/branch.c:481
+#: builtin/branch.c:490
 #, c-format
 msgid "Branch %s is being rebased at %s"
 msgstr "分支 %s 正被变基到 %s"
 
-#: builtin/branch.c:485
+#: builtin/branch.c:494
 #, c-format
 msgid "Branch %s is being bisected at %s"
 msgstr "分支 %s 正被二分查找于 %s"
 
-#: builtin/branch.c:502
+#: builtin/branch.c:511
 msgid "cannot copy the current branch while not on any."
 msgstr "无法拷贝当前分支因为不处于任何分支上。"
 
-#: builtin/branch.c:504
+#: builtin/branch.c:513
 msgid "cannot rename the current branch while not on any."
 msgstr "无法重命名当前分支因为不处于任何分支上。"
 
-#: builtin/branch.c:515
+#: builtin/branch.c:524
 #, c-format
 msgid "Invalid branch name: '%s'"
 msgstr "无效的分支名:'%s'"
 
-#: builtin/branch.c:544
+#: builtin/branch.c:553
 msgid "Branch rename failed"
 msgstr "分支重命名失败"
 
-#: builtin/branch.c:546
+#: builtin/branch.c:555
 msgid "Branch copy failed"
 msgstr "分支拷贝失败"
 
-#: builtin/branch.c:550
+#: builtin/branch.c:559
 #, c-format
 msgid "Created a copy of a misnamed branch '%s'"
 msgstr "已为错误命名的分支 '%s' 创建了一个副本"
 
-#: builtin/branch.c:553
+#: builtin/branch.c:562
 #, c-format
 msgid "Renamed a misnamed branch '%s' away"
 msgstr "已将错误命名的分支 '%s' 重命名"
 
-#: builtin/branch.c:559
+#: builtin/branch.c:568
 #, c-format
 msgid "Branch renamed to %s, but HEAD is not updated!"
 msgstr "分支重命名为 %s,但 HEAD 没有更新!"
 
-#: builtin/branch.c:568
+#: builtin/branch.c:577
 msgid "Branch is renamed, but update of config-file failed"
 msgstr "分支被重命名,但更新配置文件失败"
 
-#: builtin/branch.c:570
+#: builtin/branch.c:579
 msgid "Branch is copied, but update of config-file failed"
 msgstr "分支已拷贝,但更新配置文件失败"
 
-#: builtin/branch.c:586
+#: builtin/branch.c:595
 #, c-format
 msgid ""
 "Please edit the description for the branch\n"
@@ -10933,209 +11209,209 @@ msgstr ""
 "  %s\n"
 "以 '%c' 开头的行将被过滤。\n"
 
-#: builtin/branch.c:620
+#: builtin/branch.c:629
 msgid "Generic options"
 msgstr "通用选项"
 
-#: builtin/branch.c:622
+#: builtin/branch.c:631
 msgid "show hash and subject, give twice for upstream branch"
 msgstr "显示哈希值和主题,若参数出现两次则显示上游分支"
 
-#: builtin/branch.c:623
+#: builtin/branch.c:632
 msgid "suppress informational messages"
 msgstr "不显示信息"
 
-#: builtin/branch.c:624
+#: builtin/branch.c:633
 msgid "set up tracking mode (see git-pull(1))"
 msgstr "设置跟踪模式(参见 git-pull(1))"
 
-#: builtin/branch.c:626
+#: builtin/branch.c:635
 msgid "do not use"
 msgstr "不要使用"
 
-#: builtin/branch.c:628 builtin/rebase.c:532
+#: builtin/branch.c:637 builtin/rebase.c:534
 msgid "upstream"
 msgstr "上游"
 
-#: builtin/branch.c:628
+#: builtin/branch.c:637
 msgid "change the upstream info"
 msgstr "改变上游信息"
 
-#: builtin/branch.c:629
+#: builtin/branch.c:638
 msgid "unset the upstream info"
 msgstr "取消上游信息的设置"
 
-#: builtin/branch.c:630
+#: builtin/branch.c:639
 msgid "use colored output"
 msgstr "使用彩色输出"
 
-#: builtin/branch.c:631
+#: builtin/branch.c:640
 msgid "act on remote-tracking branches"
 msgstr "作用于远程跟踪分支"
 
-#: builtin/branch.c:633 builtin/branch.c:635
+#: builtin/branch.c:642 builtin/branch.c:644
 msgid "print only branches that contain the commit"
 msgstr "只打印包含该提交的分支"
 
-#: builtin/branch.c:634 builtin/branch.c:636
+#: builtin/branch.c:643 builtin/branch.c:645
 msgid "print only branches that don't contain the commit"
 msgstr "只打印不包含该提交的分支"
 
-#: builtin/branch.c:639
+#: builtin/branch.c:648
 msgid "Specific git-branch actions:"
 msgstr "具体的 git-branch 动作:"
 
-#: builtin/branch.c:640
+#: builtin/branch.c:649
 msgid "list both remote-tracking and local branches"
 msgstr "列出远程跟踪及本地分支"
 
-#: builtin/branch.c:642
+#: builtin/branch.c:651
 msgid "delete fully merged branch"
 msgstr "删除完全合并的分支"
 
-#: builtin/branch.c:643
+#: builtin/branch.c:652
 msgid "delete branch (even if not merged)"
 msgstr "删除分支(即使没有合并)"
 
-#: builtin/branch.c:644
+#: builtin/branch.c:653
 msgid "move/rename a branch and its reflog"
 msgstr "移动/重命名一个分支,以及它的引用日志"
 
-#: builtin/branch.c:645
+#: builtin/branch.c:654
 msgid "move/rename a branch, even if target exists"
 msgstr "移动/重命名一个分支,即使目标已存在"
 
-#: builtin/branch.c:646
+#: builtin/branch.c:655
 msgid "copy a branch and its reflog"
 msgstr "拷贝一个分支和它的引用日志"
 
-#: builtin/branch.c:647
+#: builtin/branch.c:656
 msgid "copy a branch, even if target exists"
 msgstr "拷贝一个分支,即使目标已存在"
 
-#: builtin/branch.c:648
+#: builtin/branch.c:657
 msgid "list branch names"
 msgstr "列出分支名"
 
-#: builtin/branch.c:649
+#: builtin/branch.c:658
 msgid "show current branch name"
 msgstr "显示当前分支名"
 
-#: builtin/branch.c:650
+#: builtin/branch.c:659
 msgid "create the branch's reflog"
 msgstr "创建分支的引用日志"
 
-#: builtin/branch.c:652
+#: builtin/branch.c:661
 msgid "edit the description for the branch"
 msgstr "标记分支的描述"
 
-#: builtin/branch.c:653
+#: builtin/branch.c:662
 msgid "force creation, move/rename, deletion"
 msgstr "强制创建、移动/重命名、删除"
 
-#: builtin/branch.c:654
+#: builtin/branch.c:663
 msgid "print only branches that are merged"
 msgstr "只打印已经合并的分支"
 
-#: builtin/branch.c:655
+#: builtin/branch.c:664
 msgid "print only branches that are not merged"
 msgstr "只打印尚未合并的分支"
 
-#: builtin/branch.c:656
+#: builtin/branch.c:665
 msgid "list branches in columns"
 msgstr "以列的方式显示分支"
 
-#: builtin/branch.c:658 builtin/for-each-ref.c:42 builtin/notes.c:415
+#: builtin/branch.c:667 builtin/for-each-ref.c:42 builtin/notes.c:415
 #: builtin/notes.c:418 builtin/notes.c:581 builtin/notes.c:584
-#: builtin/tag.c:434
+#: builtin/tag.c:466
 msgid "object"
 msgstr "对象"
 
-#: builtin/branch.c:659
+#: builtin/branch.c:668
 msgid "print only branches of the object"
 msgstr "只打印指向该对象的分支"
 
-#: builtin/branch.c:660 builtin/for-each-ref.c:48 builtin/tag.c:441
+#: builtin/branch.c:669 builtin/for-each-ref.c:48 builtin/tag.c:473
 msgid "sorting and filtering are case insensitive"
 msgstr "排序和过滤属于大小写不敏感"
 
-#: builtin/branch.c:661 builtin/for-each-ref.c:38 builtin/tag.c:439
+#: builtin/branch.c:670 builtin/for-each-ref.c:38 builtin/tag.c:471
 #: builtin/verify-tag.c:38
 msgid "format to use for the output"
 msgstr "输出格式"
 
-#: builtin/branch.c:684 builtin/clone.c:790
+#: builtin/branch.c:693 builtin/clone.c:790
 msgid "HEAD not found below refs/heads!"
 msgstr "HEAD 没有位于 /refs/heads 之下!"
 
-#: builtin/branch.c:708
+#: builtin/branch.c:717
 msgid "--column and --verbose are incompatible"
 msgstr "--column 和 --verbose 不兼容"
 
-#: builtin/branch.c:723 builtin/branch.c:777 builtin/branch.c:786
+#: builtin/branch.c:732 builtin/branch.c:788 builtin/branch.c:797
 msgid "branch name required"
 msgstr "必须提供分支名"
 
-#: builtin/branch.c:753
+#: builtin/branch.c:764
 msgid "Cannot give description to detached HEAD"
 msgstr "不能向分离头指针提供描述"
 
-#: builtin/branch.c:758
+#: builtin/branch.c:769
 msgid "cannot edit description of more than one branch"
 msgstr "不能为一个以上的分支编辑描述"
 
-#: builtin/branch.c:765
+#: builtin/branch.c:776
 #, c-format
 msgid "No commit on branch '%s' yet."
 msgstr "分支 '%s' 尚无提交。"
 
-#: builtin/branch.c:768
+#: builtin/branch.c:779
 #, c-format
 msgid "No branch named '%s'."
 msgstr "没有分支 '%s'。"
 
-#: builtin/branch.c:783
+#: builtin/branch.c:794
 msgid "too many branches for a copy operation"
 msgstr "为拷贝操作提供了太多的分支名"
 
-#: builtin/branch.c:792
+#: builtin/branch.c:803
 msgid "too many arguments for a rename operation"
 msgstr "为重命名操作提供了太多的参数"
 
-#: builtin/branch.c:797
+#: builtin/branch.c:808
 msgid "too many arguments to set new upstream"
 msgstr "为设置新上游提供了太多的参数"
 
-#: builtin/branch.c:801
+#: builtin/branch.c:812
 #, 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:804 builtin/branch.c:827
+#: builtin/branch.c:815 builtin/branch.c:838
 #, c-format
 msgid "no such branch '%s'"
 msgstr "没有此分支 '%s'"
 
-#: builtin/branch.c:808
+#: builtin/branch.c:819
 #, c-format
 msgid "branch '%s' does not exist"
 msgstr "分支 '%s' 不存在"
 
-#: builtin/branch.c:821
+#: builtin/branch.c:832
 msgid "too many arguments to unset upstream"
 msgstr "为取消上游设置操作提供了太多的参数"
 
-#: builtin/branch.c:825
+#: builtin/branch.c:836
 msgid "could not unset upstream of HEAD when it does not point to any branch."
 msgstr "无法取消 HEAD 的上游设置因为它没有指向一个分支"
 
-#: builtin/branch.c:831
+#: builtin/branch.c:842
 #, c-format
 msgid "Branch '%s' has no upstream information"
 msgstr "分支 '%s' 没有上游信息"
 
-#: builtin/branch.c:841
+#: builtin/branch.c:852
 msgid ""
 "The -a, and -r, options to 'git branch' do not take a branch name.\n"
 "Did you mean to use: -a|-r --list <pattern>?"
@@ -11143,7 +11419,7 @@ msgstr ""
 "'git branch' 的 -a 和 -r 选项不带一个分支名。\n"
 "您是否想要使用:-a|-r --list <模式>?"
 
-#: builtin/branch.c:845
+#: builtin/branch.c:856
 msgid ""
 "the '--set-upstream' option is no longer supported. Please use '--track' or "
 "'--set-upstream-to' instead."
@@ -11261,19 +11537,19 @@ msgstr "git bundle list-heads <文件> [<引用名>...]"
 msgid "git bundle unbundle <file> [<refname>...]"
 msgstr "git bundle unbundle <文件> [<引用名>...]"
 
-#: builtin/bundle.c:67 builtin/pack-objects.c:3480
+#: builtin/bundle.c:67 builtin/pack-objects.c:3495
 msgid "do not show progress meter"
 msgstr "不显示进度表"
 
-#: builtin/bundle.c:69 builtin/pack-objects.c:3482
+#: builtin/bundle.c:69 builtin/pack-objects.c:3497
 msgid "show progress meter"
 msgstr "显示进度表"
 
-#: builtin/bundle.c:71 builtin/pack-objects.c:3484
+#: builtin/bundle.c:71 builtin/pack-objects.c:3499
 msgid "show progress meter during object writing phase"
 msgstr "在对象写入阶段显示进度表"
 
-#: builtin/bundle.c:74 builtin/pack-objects.c:3487
+#: builtin/bundle.c:74 builtin/pack-objects.c:3502
 msgid "similar to --all-progress when progress meter is shown"
 msgstr "当进度表显示时类似于 --all-progress"
 
@@ -11415,8 +11691,8 @@ msgstr "从标准输入读出文件名"
 msgid "terminate input and output records by a NUL character"
 msgstr "输入和输出的记录使用 NUL 字符终结"
 
-#: builtin/check-ignore.c:21 builtin/checkout.c:1500 builtin/gc.c:541
-#: builtin/worktree.c:561
+#: builtin/check-ignore.c:21 builtin/checkout.c:1499 builtin/gc.c:549
+#: builtin/worktree.c:489
 msgid "suppress progress reporting"
 msgstr "不显示进度报告"
 
@@ -11469,54 +11745,54 @@ msgstr "不能解析联系地址:%s"
 msgid "no contacts specified"
 msgstr "未指定联系地址"
 
-#: builtin/checkout-index.c:139
+#: builtin/checkout-index.c:152
 msgid "git checkout-index [<options>] [--] [<file>...]"
 msgstr "git checkout-index [<选项>] [--] [<文件>...]"
 
-#: builtin/checkout-index.c:156
+#: builtin/checkout-index.c:169
 msgid "stage should be between 1 and 3 or all"
 msgstr "索引值应该取值 1 到 3 或者 all"
 
-#: builtin/checkout-index.c:173
+#: builtin/checkout-index.c:186
 msgid "check out all files in the index"
 msgstr "检出索引区的所有文件"
 
-#: builtin/checkout-index.c:174
+#: builtin/checkout-index.c:187
 msgid "force overwrite of existing files"
 msgstr "强制覆盖现有的文件"
 
-#: builtin/checkout-index.c:176
+#: builtin/checkout-index.c:189
 msgid "no warning for existing files and files not in index"
 msgstr "存在或不在索引中的文件都没有警告"
 
-#: builtin/checkout-index.c:178
+#: builtin/checkout-index.c:191
 msgid "don't checkout new files"
 msgstr "不检出新文件"
 
-#: builtin/checkout-index.c:180
+#: builtin/checkout-index.c:193
 msgid "update stat information in the index file"
 msgstr "更新索引中文件的状态信息"
 
-#: builtin/checkout-index.c:184
+#: builtin/checkout-index.c:197
 msgid "read list of paths from the standard input"
 msgstr "从标准输入读取路径列表"
 
-#: builtin/checkout-index.c:186
+#: builtin/checkout-index.c:199
 msgid "write the content to temporary files"
 msgstr "将内容写入临时文件"
 
-#: builtin/checkout-index.c:187 builtin/column.c:31
+#: builtin/checkout-index.c:200 builtin/column.c:31
 #: builtin/submodule--helper.c:1824 builtin/submodule--helper.c:1827
 #: builtin/submodule--helper.c:1835 builtin/submodule--helper.c:2333
-#: builtin/worktree.c:757
+#: builtin/worktree.c:717
 msgid "string"
 msgstr "字符串"
 
-#: builtin/checkout-index.c:188
+#: builtin/checkout-index.c:201
 msgid "when creating files, prepend <string>"
 msgstr "在创建文件时,在前面加上 <字符串>"
 
-#: builtin/checkout-index.c:190
+#: builtin/checkout-index.c:203
 msgid "copy out the files from named stage"
 msgstr "从指定暂存区中拷出文件"
 
@@ -11618,16 +11894,16 @@ msgstr "未指定 '%2$s' 时,必须使用 '%1$s'"
 msgid "'%s' or '%s' cannot be used with %s"
 msgstr "'%s' 或 '%s' 不能和 %s 一起使用"
 
-#: builtin/checkout.c:541 builtin/checkout.c:548
+#: builtin/checkout.c:543 builtin/checkout.c:550
 #, c-format
 msgid "path '%s' is unmerged"
 msgstr "路径 '%s' 未合并"
 
-#: builtin/checkout.c:716
+#: builtin/checkout.c:718
 msgid "you need to resolve your current index first"
 msgstr "您需要先解决当前索引的冲突"
 
-#: builtin/checkout.c:770
+#: builtin/checkout.c:772
 #, c-format
 msgid ""
 "cannot continue with staged changes in the following files:\n"
@@ -11636,51 +11912,51 @@ msgstr ""
 "不能继续,下列文件有暂存的修改:\n"
 "%s"
 
-#: builtin/checkout.c:866
+#: builtin/checkout.c:865
 #, c-format
 msgid "Can not do reflog for '%s': %s\n"
 msgstr "不能对 '%s' 执行 reflog 操作:%s\n"
 
-#: builtin/checkout.c:908
+#: builtin/checkout.c:907
 msgid "HEAD is now at"
 msgstr "HEAD 目前位于"
 
-#: builtin/checkout.c:912 builtin/clone.c:721 t/helper/test-fast-rebase.c:202
+#: builtin/checkout.c:911 builtin/clone.c:721 t/helper/test-fast-rebase.c:202
 msgid "unable to update HEAD"
 msgstr "不能更新 HEAD"
 
-#: builtin/checkout.c:916
+#: builtin/checkout.c:915
 #, c-format
 msgid "Reset branch '%s'\n"
 msgstr "重置分支 '%s'\n"
 
-#: builtin/checkout.c:919
+#: builtin/checkout.c:918
 #, c-format
 msgid "Already on '%s'\n"
 msgstr "已经位于 '%s'\n"
 
-#: builtin/checkout.c:923
+#: builtin/checkout.c:922
 #, c-format
 msgid "Switched to and reset branch '%s'\n"
 msgstr "切换并重置分支 '%s'\n"
 
-#: builtin/checkout.c:925 builtin/checkout.c:1356
+#: builtin/checkout.c:924 builtin/checkout.c:1355
 #, c-format
 msgid "Switched to a new branch '%s'\n"
 msgstr "切换到一个新分支 '%s'\n"
 
-#: builtin/checkout.c:927
+#: builtin/checkout.c:926
 #, c-format
 msgid "Switched to branch '%s'\n"
 msgstr "切换到分支 '%s'\n"
 
 #  译者:注意保持前导空格
-#: builtin/checkout.c:978
+#: builtin/checkout.c:977
 #, c-format
 msgid " ... and %d more.\n"
 msgstr " ... 及其它 %d 个。\n"
 
-#: builtin/checkout.c:984
+#: builtin/checkout.c:983
 #, c-format
 msgid ""
 "Warning: you are leaving %d commit behind, not connected to\n"
@@ -11701,7 +11977,7 @@ msgstr[1] ""
 "\n"
 "%s\n"
 
-#: builtin/checkout.c:1003
+#: builtin/checkout.c:1002
 #, c-format
 msgid ""
 "If you want to keep it by creating a new branch, this may be a good time\n"
@@ -11728,19 +12004,19 @@ msgstr[1] ""
 " git branch <新分支名> %s\n"
 "\n"
 
-#: builtin/checkout.c:1038
+#: builtin/checkout.c:1037
 msgid "internal error in revision walk"
 msgstr "在版本遍历时遇到内部错误"
 
-#: builtin/checkout.c:1042
+#: builtin/checkout.c:1041
 msgid "Previous HEAD position was"
 msgstr "之前的 HEAD 位置是"
 
-#: builtin/checkout.c:1082 builtin/checkout.c:1351
+#: builtin/checkout.c:1081 builtin/checkout.c:1350
 msgid "You are on a branch yet to be born"
 msgstr "您位于一个尚未初始化的分支"
 
-#: builtin/checkout.c:1164
+#: builtin/checkout.c:1163
 #, c-format
 msgid ""
 "'%s' could be both a local file and a tracking branch.\n"
@@ -11749,7 +12025,7 @@ msgstr ""
 "'%s' 既可以是一个本地文件,也可以是一个跟踪分支。\n"
 "请使用 --(和可选的 --no-guess)来消除歧义"
 
-#: builtin/checkout.c:1171
+#: builtin/checkout.c:1170
 msgid ""
 "If you meant to check out a remote tracking branch on, e.g. 'origin',\n"
 "you can do so by fully qualifying the name with the --track option:\n"
@@ -11768,51 +12044,51 @@ msgstr ""
 "如果您总是喜欢使用模糊的简短分支名 <名称>,而不喜欢如 'origin' 的远程\n"
 "名称,可以在配置中设置 checkout.defaultRemote=origin。"
 
-#: builtin/checkout.c:1181
+#: builtin/checkout.c:1180
 #, c-format
 msgid "'%s' matched multiple (%d) remote tracking branches"
 msgstr "'%s' 匹配多个(%d 个)远程跟踪分支"
 
-#: builtin/checkout.c:1247
+#: builtin/checkout.c:1246
 msgid "only one reference expected"
 msgstr "只期望一个引用"
 
-#: builtin/checkout.c:1264
+#: builtin/checkout.c:1263
 #, c-format
 msgid "only one reference expected, %d given."
 msgstr "应只有一个引用,却给出了 %d 个"
 
-#: builtin/checkout.c:1310 builtin/worktree.c:342 builtin/worktree.c:510
+#: builtin/checkout.c:1309 builtin/worktree.c:270 builtin/worktree.c:438
 #, c-format
 msgid "invalid reference: %s"
 msgstr "无效引用:%s"
 
-#: builtin/checkout.c:1323 builtin/checkout.c:1689
+#: builtin/checkout.c:1322 builtin/checkout.c:1688
 #, c-format
 msgid "reference is not a tree: %s"
 msgstr "引用不是一个树:%s"
 
-#: builtin/checkout.c:1370
+#: builtin/checkout.c:1369
 #, c-format
 msgid "a branch is expected, got tag '%s'"
 msgstr "期望一个分支,得到标签 '%s'"
 
-#: builtin/checkout.c:1372
+#: builtin/checkout.c:1371
 #, c-format
 msgid "a branch is expected, got remote branch '%s'"
 msgstr "期望一个分支,得到远程分支 '%s'"
 
-#: builtin/checkout.c:1373 builtin/checkout.c:1381
+#: builtin/checkout.c:1372 builtin/checkout.c:1380
 #, c-format
 msgid "a branch is expected, got '%s'"
 msgstr "期望一个分支,得到 '%s'"
 
-#: builtin/checkout.c:1376
+#: builtin/checkout.c:1375
 #, c-format
 msgid "a branch is expected, got commit '%s'"
 msgstr "期望一个分支,得到提交 '%s'"
 
-#: builtin/checkout.c:1392
+#: builtin/checkout.c:1391
 msgid ""
 "cannot switch branch while merging\n"
 "Consider \"git merge --quit\" or \"git worktree add\"."
@@ -11820,7 +12096,7 @@ msgstr ""
 "不能在合并时切换分支\n"
 "考虑使用 \"git merge --quit\" 或 \"git worktree add\"。"
 
-#: builtin/checkout.c:1396
+#: builtin/checkout.c:1395
 msgid ""
 "cannot switch branch in the middle of an am session\n"
 "Consider \"git am --quit\" or \"git worktree add\"."
@@ -11828,7 +12104,7 @@ msgstr ""
 "不能在一个 am 会话期间切换分支\n"
 "考虑使用 \"git am --quit\" 或 \"git worktree add\"。"
 
-#: builtin/checkout.c:1400
+#: builtin/checkout.c:1399
 msgid ""
 "cannot switch branch while rebasing\n"
 "Consider \"git rebase --quit\" or \"git worktree add\"."
@@ -11836,7 +12112,7 @@ msgstr ""
 "不能在变基时切换分支\n"
 "考虑使用 \"git rebase --quit\" 或 \"git worktree add\"。"
 
-#: builtin/checkout.c:1404
+#: builtin/checkout.c:1403
 msgid ""
 "cannot switch branch while cherry-picking\n"
 "Consider \"git cherry-pick --quit\" or \"git worktree add\"."
@@ -11844,7 +12120,7 @@ msgstr ""
 "不能在拣选时切换分支\n"
 "考虑使用 \"git cherry-pick --quit\" 或 \"git worktree add\"。"
 
-#: builtin/checkout.c:1408
+#: builtin/checkout.c:1407
 msgid ""
 "cannot switch branch while reverting\n"
 "Consider \"git revert --quit\" or \"git worktree add\"."
@@ -11852,214 +12128,207 @@ msgstr ""
 "不能在还原时切换分支\n"
 "考虑使用 \"git revert --quit\" 或 \"git worktree add\"。"
 
-#: builtin/checkout.c:1412
+#: builtin/checkout.c:1411
 msgid "you are switching branch while bisecting"
 msgstr "您在执行二分查找时切换分支"
 
-#: builtin/checkout.c:1419
+#: builtin/checkout.c:1418
 msgid "paths cannot be used with switching branches"
 msgstr "路径不能和切换分支同时使用"
 
-#: builtin/checkout.c:1422 builtin/checkout.c:1426 builtin/checkout.c:1430
+#: builtin/checkout.c:1421 builtin/checkout.c:1425 builtin/checkout.c:1429
 #, c-format
 msgid "'%s' cannot be used with switching branches"
 msgstr "'%s' 不能和切换分支同时使用"
 
-#: builtin/checkout.c:1434 builtin/checkout.c:1437 builtin/checkout.c:1440
-#: builtin/checkout.c:1445 builtin/checkout.c:1450
+#: builtin/checkout.c:1433 builtin/checkout.c:1436 builtin/checkout.c:1439
+#: builtin/checkout.c:1444 builtin/checkout.c:1449
 #, c-format
 msgid "'%s' cannot be used with '%s'"
 msgstr "'%s' 不能和 '%s' 同时使用"
 
-#: builtin/checkout.c:1447
+#: builtin/checkout.c:1446
 #, c-format
 msgid "'%s' cannot take <start-point>"
 msgstr "'%s' 不带 <起始点>"
 
-#: builtin/checkout.c:1455
+#: builtin/checkout.c:1454
 #, c-format
 msgid "Cannot switch branch to a non-commit '%s'"
 msgstr "不能切换分支到一个非提交 '%s'"
 
-#: builtin/checkout.c:1462
+#: builtin/checkout.c:1461
 msgid "missing branch or commit argument"
 msgstr "缺少分支或提交参数"
 
-#: builtin/checkout.c:1504 builtin/clone.c:92 builtin/commit-graph.c:84
-#: builtin/commit-graph.c:222 builtin/fetch.c:172 builtin/merge.c:296
-#: builtin/multi-pack-index.c:27 builtin/pull.c:119 builtin/push.c:575
-#: builtin/send-pack.c:198
-msgid "force progress reporting"
-msgstr "强制显示进度报告"
-
-#: builtin/checkout.c:1505
+#: builtin/checkout.c:1504
 msgid "perform a 3-way merge with the new branch"
 msgstr "和新的分支执行三方合并"
 
-#: builtin/checkout.c:1506 builtin/log.c:1800 parse-options.h:322
+#: builtin/checkout.c:1505 builtin/log.c:1799 parse-options.h:322
 msgid "style"
 msgstr "风格"
 
-#: builtin/checkout.c:1507
+#: builtin/checkout.c:1506
 msgid "conflict style (merge or diff3)"
 msgstr "冲突输出风格(merge 或 diff3)"
 
-#: builtin/checkout.c:1519 builtin/worktree.c:558
+#: builtin/checkout.c:1518 builtin/worktree.c:486
 msgid "detach HEAD at named commit"
 msgstr "HEAD 从指定的提交分离"
 
-#: builtin/checkout.c:1520
+#: builtin/checkout.c:1519
 msgid "set upstream info for new branch"
 msgstr "为新的分支设置上游信息"
 
-#: builtin/checkout.c:1522
+#: builtin/checkout.c:1521
 msgid "force checkout (throw away local modifications)"
 msgstr "强制检出(丢弃本地修改)"
 
-#: builtin/checkout.c:1524
+#: builtin/checkout.c:1523
 msgid "new-branch"
 msgstr "新分支"
 
-#: builtin/checkout.c:1524
+#: builtin/checkout.c:1523
 msgid "new unparented branch"
 msgstr "新的没有父提交的分支"
 
-#: builtin/checkout.c:1526 builtin/merge.c:300
+#: builtin/checkout.c:1525 builtin/merge.c:301
 msgid "update ignored files (default)"
 msgstr "更新忽略的文件(默认)"
 
-#: builtin/checkout.c:1529
+#: builtin/checkout.c:1528
 msgid "do not check if another worktree is holding the given ref"
 msgstr "不检查指定的引用是否被其他工作区所占用"
 
-#: builtin/checkout.c:1542
+#: builtin/checkout.c:1541
 msgid "checkout our version for unmerged files"
 msgstr "对尚未合并的文件检出我们的版本"
 
-#: builtin/checkout.c:1545
+#: builtin/checkout.c:1544
 msgid "checkout their version for unmerged files"
 msgstr "对尚未合并的文件检出他们的版本"
 
-#: builtin/checkout.c:1549
+#: builtin/checkout.c:1548
 msgid "do not limit pathspecs to sparse entries only"
 msgstr "对路径不做稀疏检出的限制"
 
-#: builtin/checkout.c:1604
+#: builtin/checkout.c:1603
 #, c-format
 msgid "-%c, -%c and --orphan are mutually exclusive"
 msgstr "-%c、-%c 和 --orphan 是互斥的"
 
-#: builtin/checkout.c:1608
+#: builtin/checkout.c:1607
 msgid "-p and --overlay are mutually exclusive"
 msgstr "-p 和 --overlay 互斥"
 
-#: builtin/checkout.c:1645
+#: builtin/checkout.c:1644
 msgid "--track needs a branch name"
 msgstr "--track 需要一个分支名"
 
-#: builtin/checkout.c:1650
+#: builtin/checkout.c:1649
 #, c-format
 msgid "missing branch name; try -%c"
 msgstr "缺少分支名,尝试 -%c"
 
-#: builtin/checkout.c:1682
+#: builtin/checkout.c:1681
 #, c-format
 msgid "could not resolve %s"
 msgstr "无法解析 %s"
 
-#: builtin/checkout.c:1698
+#: builtin/checkout.c:1697
 msgid "invalid path specification"
 msgstr "无效的路径规格"
 
-#: builtin/checkout.c:1705
+#: builtin/checkout.c:1704
 #, c-format
 msgid "'%s' is not a commit and a branch '%s' cannot be created from it"
 msgstr "'%s' 不是一个提交,不能基于它创建分支 '%s'"
 
-#: builtin/checkout.c:1709
+#: builtin/checkout.c:1708
 #, c-format
 msgid "git checkout: --detach does not take a path argument '%s'"
 msgstr "git checkout:--detach 不能接收路径参数 '%s'"
 
-#: builtin/checkout.c:1718
+#: builtin/checkout.c:1717
 msgid "--pathspec-from-file is incompatible with --detach"
 msgstr "--pathspec-from-file 与 --detach 不兼容"
 
-#: builtin/checkout.c:1721 builtin/reset.c:325 builtin/stash.c:1499
+#: builtin/checkout.c:1720 builtin/reset.c:325 builtin/stash.c:1566
 msgid "--pathspec-from-file is incompatible with --patch"
 msgstr "--pathspec-from-file 与 --patch 不兼容"
 
-#: builtin/checkout.c:1734
+#: builtin/checkout.c:1733
 msgid ""
 "git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
 "checking out of the index."
 msgstr ""
 "git checkout:在从索引检出时,--ours/--theirs、--force 和 --merge 不兼容。"
 
-#: builtin/checkout.c:1739
+#: builtin/checkout.c:1738
 msgid "you must specify path(s) to restore"
 msgstr "您必须指定一个要恢复的路径"
 
-#: builtin/checkout.c:1765 builtin/checkout.c:1767 builtin/checkout.c:1816
-#: builtin/checkout.c:1818 builtin/clone.c:122 builtin/remote.c:170
-#: builtin/remote.c:172 builtin/submodule--helper.c:2719 builtin/worktree.c:554
-#: builtin/worktree.c:556
+#: builtin/checkout.c:1764 builtin/checkout.c:1766 builtin/checkout.c:1815
+#: builtin/checkout.c:1817 builtin/clone.c:122 builtin/remote.c:170
+#: builtin/remote.c:172 builtin/submodule--helper.c:2719 builtin/worktree.c:482
+#: builtin/worktree.c:484
 msgid "branch"
 msgstr "分支"
 
-#: builtin/checkout.c:1766
+#: builtin/checkout.c:1765
 msgid "create and checkout a new branch"
 msgstr "创建并检出一个新的分支"
 
-#: builtin/checkout.c:1768
+#: builtin/checkout.c:1767
 msgid "create/reset and checkout a branch"
 msgstr "创建/重置并检出一个分支"
 
-#: builtin/checkout.c:1769
+#: builtin/checkout.c:1768
 msgid "create reflog for new branch"
 msgstr "为新的分支创建引用日志"
 
-#: builtin/checkout.c:1771
+#: builtin/checkout.c:1770
 msgid "second guess 'git checkout <no-such-branch>' (default)"
 msgstr "二次猜测 'git checkout <无此分支>'(默认)"
 
-#: builtin/checkout.c:1772
+#: builtin/checkout.c:1771
 msgid "use overlay mode (default)"
 msgstr "使用叠加模式(默认)"
 
-#: builtin/checkout.c:1817
+#: builtin/checkout.c:1816
 msgid "create and switch to a new branch"
 msgstr "创建并切换一个新分支"
 
-#: builtin/checkout.c:1819
+#: builtin/checkout.c:1818
 msgid "create/reset and switch to a branch"
 msgstr "创建/重置并切换一个分支"
 
-#: builtin/checkout.c:1821
+#: builtin/checkout.c:1820
 msgid "second guess 'git switch <no-such-branch>'"
 msgstr "二次猜测 'git switch <无此分支>'"
 
-#: builtin/checkout.c:1823
+#: builtin/checkout.c:1822
 msgid "throw away local modifications"
 msgstr "丢弃本地修改"
 
-#: builtin/checkout.c:1857
+#: builtin/checkout.c:1856
 msgid "which tree-ish to checkout from"
 msgstr "要检出哪一个树"
 
-#: builtin/checkout.c:1859
+#: builtin/checkout.c:1858
 msgid "restore the index"
 msgstr "恢复索引"
 
-#: builtin/checkout.c:1861
+#: builtin/checkout.c:1860
 msgid "restore the working tree (default)"
 msgstr "恢复工作区(默认)"
 
-#: builtin/checkout.c:1863
+#: builtin/checkout.c:1862
 msgid "ignore unmerged entries"
 msgstr "忽略未合并条目"
 
-#: builtin/checkout.c:1864
+#: builtin/checkout.c:1863
 msgid "use overlay mode"
 msgstr "使用叠加模式"
 
@@ -12204,8 +12473,8 @@ msgid "remove whole directories"
 msgstr "删除整个目录"
 
 #: builtin/clean.c:909 builtin/describe.c:565 builtin/describe.c:567
-#: builtin/grep.c:921 builtin/log.c:183 builtin/log.c:185
-#: builtin/ls-files.c:558 builtin/name-rev.c:526 builtin/name-rev.c:528
+#: builtin/grep.c:922 builtin/log.c:184 builtin/log.c:186
+#: builtin/ls-files.c:573 builtin/name-rev.c:526 builtin/name-rev.c:528
 #: builtin/show-ref.c:179
 msgid "pattern"
 msgstr "模式"
@@ -12299,7 +12568,7 @@ msgid "use --reference only while cloning"
 msgstr "仅在克隆时参考 --reference 指向的本地仓库"
 
 #: builtin/clone.c:120 builtin/column.c:27 builtin/init-db.c:563
-#: builtin/merge-file.c:46 builtin/pack-objects.c:3546 builtin/repack.c:358
+#: builtin/merge-file.c:46 builtin/pack-objects.c:3561 builtin/repack.c:357
 msgid "name"
 msgstr "名称"
 
@@ -12315,7 +12584,7 @@ msgstr "检出 <分支> 而不是远程 HEAD"
 msgid "path to git-upload-pack on the remote"
 msgstr "远程 git-upload-pack 路径"
 
-#: builtin/clone.c:126 builtin/fetch.c:173 builtin/grep.c:860
+#: builtin/clone.c:126 builtin/fetch.c:176 builtin/grep.c:861
 #: builtin/pull.c:208
 msgid "depth"
 msgstr "深度"
@@ -12324,7 +12593,7 @@ msgstr "深度"
 msgid "create a shallow clone of that depth"
 msgstr "创建一个指定深度的浅克隆"
 
-#: builtin/clone.c:128 builtin/fetch.c:175 builtin/pack-objects.c:3535
+#: builtin/clone.c:128 builtin/fetch.c:178 builtin/pack-objects.c:3550
 #: builtin/pull.c:211
 msgid "time"
 msgstr "时间"
@@ -12333,12 +12602,12 @@ msgstr "时间"
 msgid "create a shallow clone since a specific time"
 msgstr "从一个特定时间创建一个浅克隆"
 
-#: builtin/clone.c:130 builtin/fetch.c:177 builtin/fetch.c:200
-#: builtin/pull.c:214 builtin/pull.c:239 builtin/rebase.c:1317
+#: builtin/clone.c:130 builtin/fetch.c:180 builtin/fetch.c:203
+#: builtin/pull.c:214 builtin/pull.c:239 builtin/rebase.c:1323
 msgid "revision"
 msgstr "版本"
 
-#: builtin/clone.c:131 builtin/fetch.c:178 builtin/pull.c:215
+#: builtin/clone.c:131 builtin/fetch.c:181 builtin/pull.c:215
 msgid "deepen history of shallow clone, excluding rev"
 msgstr "深化浅克隆的历史,除了特定版本"
 
@@ -12371,22 +12640,22 @@ msgstr "key=value"
 msgid "set config inside the new repository"
 msgstr "在新仓库中设置配置信息"
 
-#: builtin/clone.c:143 builtin/fetch.c:195 builtin/ls-remote.c:76
+#: builtin/clone.c:143 builtin/fetch.c:198 builtin/ls-remote.c:77
 #: builtin/pull.c:230 builtin/push.c:584 builtin/send-pack.c:196
 msgid "server-specific"
 msgstr "server-specific"
 
-#: builtin/clone.c:143 builtin/fetch.c:195 builtin/ls-remote.c:76
+#: builtin/clone.c:143 builtin/fetch.c:198 builtin/ls-remote.c:77
 #: builtin/pull.c:231 builtin/push.c:584 builtin/send-pack.c:197
 msgid "option to transmit"
 msgstr "传输选项"
 
-#: builtin/clone.c:144 builtin/fetch.c:196 builtin/pull.c:234
+#: builtin/clone.c:144 builtin/fetch.c:199 builtin/pull.c:234
 #: builtin/push.c:585
 msgid "use IPv4 addresses only"
 msgstr "只使用 IPv4 地址"
 
-#: builtin/clone.c:146 builtin/fetch.c:198 builtin/pull.c:237
+#: builtin/clone.c:146 builtin/fetch.c:201 builtin/pull.c:237
 #: builtin/push.c:587
 msgid "use IPv6 addresses only"
 msgstr "只使用 IPv6 地址"
@@ -12486,110 +12755,110 @@ msgstr "无法执行 repack 来清理"
 msgid "cannot unlink temporary alternates file"
 msgstr "无法删除临时的 alternates 文件"
 
-#: builtin/clone.c:992 builtin/receive-pack.c:2493
+#: builtin/clone.c:993 builtin/receive-pack.c:2493
 msgid "Too many arguments."
 msgstr "太多参数。"
 
-#: builtin/clone.c:996
+#: builtin/clone.c:997
 msgid "You must specify a repository to clone."
 msgstr "您必须指定一个仓库来克隆。"
 
-#: builtin/clone.c:1009
+#: builtin/clone.c:1010
 #, c-format
 msgid "--bare and --origin %s options are incompatible."
 msgstr "--bare 和 --origin %s 选项不兼容。"
 
-#: builtin/clone.c:1012
+#: builtin/clone.c:1013
 msgid "--bare and --separate-git-dir are incompatible."
 msgstr "--bare 和 --separate-git-dir 选项不兼容。"
 
-#: builtin/clone.c:1025
+#: builtin/clone.c:1026
 #, c-format
 msgid "repository '%s' does not exist"
 msgstr "仓库 '%s' 不存在"
 
-#: builtin/clone.c:1029 builtin/fetch.c:1841
+#: builtin/clone.c:1030 builtin/fetch.c:1951
 #, c-format
 msgid "depth %s is not a positive number"
 msgstr "深度 %s 不是一个正数"
 
-#: builtin/clone.c:1039
+#: builtin/clone.c:1040
 #, c-format
 msgid "destination path '%s' already exists and is not an empty directory."
 msgstr "目标路径 '%s' 已经存在,并且不是一个空目录。"
 
-#: builtin/clone.c:1045
+#: builtin/clone.c:1046
 #, c-format
 msgid "repository path '%s' already exists and is not an empty directory."
 msgstr "仓库路径 '%s' 已经存在,并且不是一个空目录。"
 
-#: builtin/clone.c:1059
+#: builtin/clone.c:1060
 #, c-format
 msgid "working tree '%s' already exists."
 msgstr "工作区 '%s' 已经存在。"
 
-#: builtin/clone.c:1074 builtin/clone.c:1095 builtin/difftool.c:271
-#: builtin/log.c:1987 builtin/worktree.c:354 builtin/worktree.c:386
+#: builtin/clone.c:1075 builtin/clone.c:1096 builtin/difftool.c:271
+#: builtin/log.c:1986 builtin/worktree.c:282 builtin/worktree.c:314
 #, c-format
 msgid "could not create leading directories of '%s'"
 msgstr "不能为 '%s' 创建先导目录"
 
-#: builtin/clone.c:1079
+#: builtin/clone.c:1080
 #, c-format
 msgid "could not create work tree dir '%s'"
 msgstr "不能创建工作区目录 '%s'"
 
-#: builtin/clone.c:1099
+#: builtin/clone.c:1100
 #, c-format
 msgid "Cloning into bare repository '%s'...\n"
 msgstr "克隆到纯仓库 '%s'...\n"
 
-#: builtin/clone.c:1101
+#: builtin/clone.c:1102
 #, c-format
 msgid "Cloning into '%s'...\n"
 msgstr "正克隆到 '%s'...\n"
 
-#: builtin/clone.c:1125
+#: builtin/clone.c:1126
 msgid ""
 "clone --recursive is not compatible with both --reference and --reference-if-"
 "able"
 msgstr "clone --recursive 和 --reference 以及 --reference-if-able 不兼容"
 
-#: builtin/clone.c:1169 builtin/remote.c:200 builtin/remote.c:705
+#: builtin/clone.c:1170 builtin/remote.c:200 builtin/remote.c:705
 #, c-format
 msgid "'%s' is not a valid remote name"
 msgstr "'%s' 不是一个有效的远程名称"
 
-#: builtin/clone.c:1210
+#: builtin/clone.c:1211
 msgid "--depth is ignored in local clones; use file:// instead."
 msgstr "--depth 在本地克隆时被忽略,请改用 file:// 协议。"
 
-#: builtin/clone.c:1212
+#: builtin/clone.c:1213
 msgid "--shallow-since is ignored in local clones; use file:// instead."
 msgstr "--shallow-since 在本地克隆时被忽略,请改用 file:// 协议。"
 
-#: builtin/clone.c:1214
+#: builtin/clone.c:1215
 msgid "--shallow-exclude is ignored in local clones; use file:// instead."
 msgstr "--shallow-exclude 在本地克隆时被忽略,请改用 file:// 协议。"
 
-#: builtin/clone.c:1216
+#: builtin/clone.c:1217
 msgid "--filter is ignored in local clones; use file:// instead."
 msgstr "--filter 在本地克隆时被忽略,请改用 file:// 协议。"
 
-#: builtin/clone.c:1219
+#: builtin/clone.c:1220
 msgid "source repository is shallow, ignoring --local"
 msgstr "源仓库是浅克隆,忽略 --local"
 
-#: builtin/clone.c:1224
+#: builtin/clone.c:1225
 msgid "--local is ignored"
 msgstr "--local 被忽略"
 
-#: builtin/clone.c:1311 builtin/clone.c:1319
+#: builtin/clone.c:1315 builtin/clone.c:1323
 #, c-format
 msgid "Remote branch %s not found in upstream %s"
 msgstr "远程分支 %s 在上游 %s 未发现"
 
-#: builtin/clone.c:1322
+#: builtin/clone.c:1326
 msgid "You appear to have cloned an empty repository."
 msgstr "您似乎克隆了一个空仓库。"
 
@@ -12648,13 +12917,13 @@ msgid "could not find object directory matching %s"
 msgstr "无法找到和 %s 匹配的对象目录"
 
 #: builtin/commit-graph.c:80 builtin/commit-graph.c:210
-#: builtin/commit-graph.c:316 builtin/fetch.c:184 builtin/log.c:1769
+#: builtin/commit-graph.c:316 builtin/fetch.c:187 builtin/log.c:1768
 msgid "dir"
 msgstr "目录"
 
 #: builtin/commit-graph.c:81 builtin/commit-graph.c:211
 #: builtin/commit-graph.c:317
-msgid "The object directory to store the graph"
+msgid "the object directory to store the graph"
 msgstr "保存图形的对象目录"
 
 #: builtin/commit-graph.c:83
@@ -12742,7 +13011,7 @@ msgstr ""
 msgid "duplicate parent %s ignored"
 msgstr "忽略重复的父提交 %s"
 
-#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:555
+#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:557
 #, c-format
 msgid "not a valid object name %s"
 msgstr "不是一个有效的对象名 %s"
@@ -12770,9 +13039,9 @@ msgstr "父提交"
 msgid "id of a parent commit object"
 msgstr "父提交对象 ID"
 
-#: builtin/commit-tree.c:114 builtin/commit.c:1504 builtin/merge.c:281
-#: builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1470
-#: builtin/tag.c:413
+#: builtin/commit-tree.c:114 builtin/commit.c:1504 builtin/merge.c:282
+#: builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1537
+#: builtin/tag.c:445
 msgid "message"
 msgstr "说明"
 
@@ -12784,7 +13053,7 @@ msgstr "提交说明"
 msgid "read commit log message from file"
 msgstr "从文件中读取提交说明"
 
-#: builtin/commit-tree.c:121 builtin/commit.c:1516 builtin/merge.c:298
+#: builtin/commit-tree.c:121 builtin/commit.c:1516 builtin/merge.c:299
 #: builtin/pull.c:176 builtin/revert.c:118
 msgid "GPG sign commit"
 msgstr "GPG 提交签名"
@@ -12934,7 +13203,7 @@ msgstr "无法选择一个未被当前提交说明使用的注释字符"
 msgid "could not lookup commit %s"
 msgstr "不能查询提交 %s"
 
-#: builtin/commit.c:729 builtin/shortlog.c:425
+#: builtin/commit.c:729 builtin/shortlog.c:413
 #, c-format
 msgid "(reading log message from standard input)\n"
 msgstr "(正从标准输入中读取日志信息)\n"
@@ -13031,7 +13300,7 @@ msgstr "无法读取索引"
 msgid "Error building trees"
 msgstr "无法创建树对象"
 
-#: builtin/commit.c:1011 builtin/tag.c:276
+#: builtin/commit.c:1011 builtin/tag.c:308
 #, c-format
 msgid "Please supply the message using either -m or -F option.\n"
 msgstr "请使用 -m 或 -F 选项提供提交说明。\n"
@@ -13121,7 +13390,7 @@ msgid "version"
 msgstr "版本"
 
 #: builtin/commit.c:1374 builtin/commit.c:1533 builtin/push.c:560
-#: builtin/worktree.c:725
+#: builtin/worktree.c:679
 msgid "machine-readable output"
 msgstr "机器可读的输出"
 
@@ -13135,7 +13404,7 @@ msgstr "条目以 NUL 字符结尾"
 
 #: builtin/commit.c:1382 builtin/commit.c:1386 builtin/commit.c:1541
 #: builtin/fast-export.c:1198 builtin/fast-export.c:1201
-#: builtin/fast-export.c:1204 builtin/rebase.c:1406 parse-options.h:336
+#: builtin/fast-export.c:1204 builtin/rebase.c:1412 parse-options.h:336
 msgid "mode"
 msgstr "模式"
 
@@ -13189,7 +13458,7 @@ msgstr "在提交说明模板里显示差异"
 msgid "Commit message options"
 msgstr "提交说明选项"
 
-#: builtin/commit.c:1501 builtin/merge.c:285 builtin/tag.c:415
+#: builtin/commit.c:1501 builtin/merge.c:286 builtin/tag.c:447
 msgid "read message from file"
 msgstr "从文件中读取提交说明"
 
@@ -13201,7 +13470,7 @@ msgstr "作者"
 msgid "override author for commit"
 msgstr "提交时覆盖作者"
 
-#: builtin/commit.c:1503 builtin/gc.c:542
+#: builtin/commit.c:1503 builtin/gc.c:550
 msgid "date"
 msgstr "日期"
 
@@ -13210,7 +13479,7 @@ msgid "override date for commit"
 msgstr "提交时覆盖日期"
 
 #: builtin/commit.c:1505 builtin/commit.c:1506 builtin/commit.c:1507
-#: builtin/commit.c:1508 parse-options.h:328 ref-filter.h:87
+#: builtin/commit.c:1508 parse-options.h:328 ref-filter.h:90
 msgid "commit"
 msgstr "提交"
 
@@ -13234,7 +13503,7 @@ msgstr "使用 autosquash 格式的提交说明用以压缩至指定的提交"
 msgid "the commit is authored by me now (used with -C/-c/--amend)"
 msgstr "现在将该提交的作者改为我(和 -C/-c/--amend 参数共用)"
 
-#: builtin/commit.c:1510 builtin/log.c:1744 builtin/merge.c:301
+#: builtin/commit.c:1510 builtin/log.c:1743 builtin/merge.c:302
 #: builtin/pull.c:145 builtin/revert.c:110
 msgid "add a Signed-off-by trailer"
 msgstr "添加 Signed-off-by 尾注"
@@ -13862,41 +14131,41 @@ msgstr "--stdin 和 --merge-base 是互斥的"
 msgid "--merge-base only works with two commits"
 msgstr "--merge-base 仅适用于两个提交"
 
-#: builtin/diff.c:91
+#: builtin/diff.c:92
 #, c-format
 msgid "'%s': not a regular file or symlink"
 msgstr "'%s':不是一个正规文件或符号链接"
 
-#: builtin/diff.c:258
+#: builtin/diff.c:259
 #, c-format
 msgid "invalid option: %s"
 msgstr "无效选项:%s"
 
-#: builtin/diff.c:375
+#: builtin/diff.c:376
 #, c-format
 msgid "%s...%s: no merge base"
 msgstr "%s...%s:无合并基线"
 
-#: builtin/diff.c:485
+#: builtin/diff.c:486
 msgid "Not a git repository"
 msgstr "不是 git 仓库"
 
-#: builtin/diff.c:530 builtin/grep.c:681
+#: builtin/diff.c:532 builtin/grep.c:682
 #, c-format
 msgid "invalid object '%s' given."
 msgstr "提供了无效对象 '%s'。"
 
-#: builtin/diff.c:541
+#: builtin/diff.c:543
 #, c-format
 msgid "more than two blobs given: '%s'"
 msgstr "提供了超过两个数据对象:'%s'"
 
-#: builtin/diff.c:546
+#: builtin/diff.c:548
 #, c-format
 msgid "unhandled object '%s' given."
 msgstr "无法处理的对象 '%s'。"
 
-#: builtin/diff.c:580
+#: builtin/diff.c:582
 #, c-format
 msgid "%s...%s: multiple merge bases, using %s"
 msgstr "%s...%s:多条合并基线,使用 %s"
@@ -14070,39 +14339,39 @@ msgid "select handling of commit messages in an alternate encoding"
 msgstr "选择使用备用编码处理提交说明"
 
 #: builtin/fast-export.c:1208
-msgid "Dump marks to this file"
+msgid "dump marks to this file"
 msgstr "把标记存储到这个文件"
 
 #: builtin/fast-export.c:1210
-msgid "Import marks from this file"
+msgid "import marks from this file"
 msgstr "从这个文件导入标记"
 
 #: builtin/fast-export.c:1214
-msgid "Import marks from this file if it exists"
-msgstr "从该文件导入标记(如果存在的话)"
+msgid "import marks from this file if it exists"
+msgstr "如果文件存在,从该文件导入标记"
 
 #: builtin/fast-export.c:1216
-msgid "Fake a tagger when tags lack one"
-msgstr "当标签缺少标记字段时,假装提供一个"
+msgid "fake a tagger when tags lack one"
+msgstr "当标签缺少标记字段时,假装提供一个"
 
 #: builtin/fast-export.c:1218
-msgid "Output full tree for each commit"
+msgid "output full tree for each commit"
 msgstr "每次提交都输出整个树"
 
 #: builtin/fast-export.c:1220
-msgid "Use the done feature to terminate the stream"
+msgid "use the done feature to terminate the stream"
 msgstr "使用 done 功能来终止流"
 
 #: builtin/fast-export.c:1221
-msgid "Skip output of blob data"
+msgid "skip output of blob data"
 msgstr "跳过数据对象的输出"
 
-#: builtin/fast-export.c:1222 builtin/log.c:1816
+#: builtin/fast-export.c:1222 builtin/log.c:1815
 msgid "refspec"
 msgstr "引用规格"
 
 #: builtin/fast-export.c:1223
-msgid "Apply refspec to exported refs"
+msgid "apply refspec to exported refs"
 msgstr "对导出的引用应用引用规格"
 
 #: builtin/fast-export.c:1224
@@ -14118,15 +14387,15 @@ msgid "convert <from> to <to> in anonymized output"
 msgstr "在匿名输出中将 <from> 转换为 <to>"
 
 #: builtin/fast-export.c:1229
-msgid "Reference parents which are not in fast-export stream by object id"
+msgid "reference parents which are not in fast-export stream by object id"
 msgstr "引用父对象 ID 不在 fast-export 流中"
 
 #: builtin/fast-export.c:1231
-msgid "Show original object ids of blobs/commits"
+msgid "show original object ids of blobs/commits"
 msgstr "显示数据对象/提交的原始对象 ID"
 
 #: builtin/fast-export.c:1233
-msgid "Label tags with mark ids"
+msgid "label tags with mark ids"
 msgstr "对带有标记 ID 的标签做标记"
 
 #: builtin/fast-export.c:1256
@@ -14166,7 +14435,7 @@ msgstr "子模组重写选项的预期格式为 name:filename"
 msgid "feature '%s' forbidden in input without --allow-unsafe-features"
 msgstr "不带 --allow-unsafe-features 的输入中禁止使用功能 '%s'"
 
-#: builtin/fetch-pack.c:241
+#: builtin/fetch-pack.c:242
 #, c-format
 msgid "Lockfile created but not reported: %s"
 msgstr "Lockfile 已创建但未报告:%s"
@@ -14187,190 +14456,194 @@ msgstr "git fetch --multiple [<选项>] [(<仓库> | <组>)...]"
 msgid "git fetch --all [<options>]"
 msgstr "git fetch --all [<选项>]"
 
-#: builtin/fetch.c:119
+#: builtin/fetch.c:120
 msgid "fetch.parallel cannot be negative"
 msgstr "fetch.parallel 不能为负数"
 
-#: builtin/fetch.c:142 builtin/pull.c:185
+#: builtin/fetch.c:143 builtin/pull.c:185
 msgid "fetch from all remotes"
 msgstr "从所有的远程抓取"
 
-#: builtin/fetch.c:144 builtin/pull.c:245
+#: builtin/fetch.c:145 builtin/pull.c:245
 msgid "set upstream for git pull/fetch"
 msgstr "为 git pull/fetch 设置上游"
 
-#: builtin/fetch.c:146 builtin/pull.c:188
+#: builtin/fetch.c:147 builtin/pull.c:188
 msgid "append to .git/FETCH_HEAD instead of overwriting"
 msgstr "追加到 .git/FETCH_HEAD 而不是覆盖它"
 
-#: builtin/fetch.c:148 builtin/pull.c:191
+#: builtin/fetch.c:149
+msgid "use atomic transaction to update references"
+msgstr "使用原子事务更新引用"
+
+#: builtin/fetch.c:151 builtin/pull.c:191
 msgid "path to upload pack on remote end"
 msgstr "上传包到远程的路径"
 
-#: builtin/fetch.c:149
+#: builtin/fetch.c:152
 msgid "force overwrite of local reference"
 msgstr "强制覆盖本地引用"
 
-#: builtin/fetch.c:151
+#: builtin/fetch.c:154
 msgid "fetch from multiple remotes"
 msgstr "从多个远程抓取"
 
-#: builtin/fetch.c:153 builtin/pull.c:195
+#: builtin/fetch.c:156 builtin/pull.c:195
 msgid "fetch all tags and associated objects"
 msgstr "抓取所有的标签和关联对象"
 
-#: builtin/fetch.c:155
+#: builtin/fetch.c:158
 msgid "do not fetch all tags (--no-tags)"
 msgstr "不抓取任何标签(--no-tags)"
 
-#: builtin/fetch.c:157
+#: builtin/fetch.c:160
 msgid "number of submodules fetched in parallel"
 msgstr "子模组获取的并发数"
 
-#: builtin/fetch.c:159 builtin/pull.c:198
+#: builtin/fetch.c:162 builtin/pull.c:198
 msgid "prune remote-tracking branches no longer on remote"
 msgstr "清除远程已经不存在的分支的跟踪分支"
 
-#: builtin/fetch.c:161
+#: builtin/fetch.c:164
 msgid "prune local tags no longer on remote and clobber changed tags"
 msgstr "清除远程不存在的本地标签,并且替换变更标签"
 
 #  译者:可选值,不能翻译
-#: builtin/fetch.c:162 builtin/fetch.c:187 builtin/pull.c:122
+#: builtin/fetch.c:165 builtin/fetch.c:190 builtin/pull.c:122
 msgid "on-demand"
 msgstr "on-demand"
 
-#: builtin/fetch.c:163
+#: builtin/fetch.c:166
 msgid "control recursive fetching of submodules"
 msgstr "控制子模组的递归抓取"
 
-#: builtin/fetch.c:168
+#: builtin/fetch.c:171
 msgid "write fetched references to the FETCH_HEAD file"
 msgstr "将获取到的引用写入 FETCH_HEAD 文件"
 
-#: builtin/fetch.c:169 builtin/pull.c:206
+#: builtin/fetch.c:172 builtin/pull.c:206
 msgid "keep downloaded pack"
 msgstr "保持下载包"
 
-#: builtin/fetch.c:171
+#: builtin/fetch.c:174
 msgid "allow updating of HEAD ref"
 msgstr "允许更新 HEAD 引用"
 
-#: builtin/fetch.c:174 builtin/fetch.c:180 builtin/pull.c:209
+#: builtin/fetch.c:177 builtin/fetch.c:183 builtin/pull.c:209
 #: builtin/pull.c:218
 msgid "deepen history of shallow clone"
 msgstr "深化浅克隆的历史"
 
-#: builtin/fetch.c:176 builtin/pull.c:212
+#: builtin/fetch.c:179 builtin/pull.c:212
 msgid "deepen history of shallow repository based on time"
 msgstr "基于时间来深化浅克隆的历史"
 
-#: builtin/fetch.c:182 builtin/pull.c:221
+#: builtin/fetch.c:185 builtin/pull.c:221
 msgid "convert to a complete repository"
 msgstr "转换为一个完整的仓库"
 
-#: builtin/fetch.c:185
+#: builtin/fetch.c:188
 msgid "prepend this to submodule path output"
 msgstr "在子模组路径输出的前面加上此目录"
 
-#: builtin/fetch.c:188
+#: builtin/fetch.c:191
 msgid ""
 "default for recursive fetching of submodules (lower priority than config "
 "files)"
 msgstr "递归获取子模组的缺省值(比配置文件优先级低)"
 
-#: builtin/fetch.c:192 builtin/pull.c:224
+#: builtin/fetch.c:195 builtin/pull.c:224
 msgid "accept refs that update .git/shallow"
 msgstr "接受更新 .git/shallow 的引用"
 
-#: builtin/fetch.c:193 builtin/pull.c:226
+#: builtin/fetch.c:196 builtin/pull.c:226
 msgid "refmap"
 msgstr "引用映射"
 
-#: builtin/fetch.c:194 builtin/pull.c:227
+#: builtin/fetch.c:197 builtin/pull.c:227
 msgid "specify fetch refmap"
 msgstr "指定获取操作的引用映射"
 
-#: builtin/fetch.c:201 builtin/pull.c:240
+#: builtin/fetch.c:204 builtin/pull.c:240
 msgid "report that we have only objects reachable from this object"
 msgstr "报告我们只拥有从该对象开始可达的对象"
 
-#: builtin/fetch.c:204 builtin/fetch.c:206
+#: builtin/fetch.c:207 builtin/fetch.c:209
 msgid "run 'maintenance --auto' after fetching"
 msgstr "获取后执行 'maintenance --auto'"
 
-#: builtin/fetch.c:208 builtin/pull.c:243
+#: builtin/fetch.c:211 builtin/pull.c:243
 msgid "check for forced-updates on all updated branches"
 msgstr "在所有更新分支上检查强制更新"
 
-#: builtin/fetch.c:210
+#: builtin/fetch.c:213
 msgid "write the commit-graph after fetching"
 msgstr "抓取后写提交图"
 
-#: builtin/fetch.c:212
+#: builtin/fetch.c:215
 msgid "accept refspecs from stdin"
 msgstr "从标准输入获取引用表达式"
 
-#: builtin/fetch.c:523
+#: builtin/fetch.c:526
 msgid "Couldn't find remote ref HEAD"
 msgstr "无法发现远程 HEAD 引用"
 
-#: builtin/fetch.c:677
+#: builtin/fetch.c:697
 #, c-format
 msgid "configuration fetch.output contains invalid value %s"
 msgstr "配置变量 fetch.output 包含无效值 %s"
 
-#: builtin/fetch.c:775
+#: builtin/fetch.c:796
 #, c-format
 msgid "object %s not found"
 msgstr "对象 %s 未发现"
 
-#: builtin/fetch.c:779
+#: builtin/fetch.c:800
 msgid "[up to date]"
 msgstr "[最新]"
 
-#: builtin/fetch.c:792 builtin/fetch.c:808 builtin/fetch.c:880
+#: builtin/fetch.c:813 builtin/fetch.c:829 builtin/fetch.c:901
 msgid "[rejected]"
 msgstr "[已拒绝]"
 
-#: builtin/fetch.c:793
+#: builtin/fetch.c:814
 msgid "can't fetch in current branch"
 msgstr "当前分支下不能执行获取操作"
 
-#: builtin/fetch.c:803
+#: builtin/fetch.c:824
 msgid "[tag update]"
 msgstr "[标签更新]"
 
-#: builtin/fetch.c:804 builtin/fetch.c:841 builtin/fetch.c:863
-#: builtin/fetch.c:875
+#: builtin/fetch.c:825 builtin/fetch.c:862 builtin/fetch.c:884
+#: builtin/fetch.c:896
 msgid "unable to update local ref"
 msgstr "不能更新本地引用"
 
-#: builtin/fetch.c:808
+#: builtin/fetch.c:829
 msgid "would clobber existing tag"
 msgstr "会破坏现有的标签"
 
-#: builtin/fetch.c:830
+#: builtin/fetch.c:851
 msgid "[new tag]"
 msgstr "[新标签]"
 
-#: builtin/fetch.c:833
+#: builtin/fetch.c:854
 msgid "[new branch]"
 msgstr "[新分支]"
 
-#: builtin/fetch.c:836
+#: builtin/fetch.c:857
 msgid "[new ref]"
 msgstr "[新引用]"
 
-#: builtin/fetch.c:875
+#: builtin/fetch.c:896
 msgid "forced update"
 msgstr "强制更新"
 
-#: builtin/fetch.c:880
+#: builtin/fetch.c:901
 msgid "non-fast-forward"
 msgstr "非快进"
 
-#: builtin/fetch.c:901
+#: builtin/fetch.c:1005
 msgid ""
 "Fetch normally indicates which branches had a forced update,\n"
 "but that check has been disabled. To re-enable, use '--show-forced-updates'\n"
@@ -14380,7 +14653,7 @@ msgstr ""
 "要重新启用,请使用 '--show-forced-updates' 选项或运行\n"
 "'git config fetch.showForcedUpdates true'。"
 
-#: builtin/fetch.c:905
+#: builtin/fetch.c:1009
 #, c-format
 msgid ""
 "It took %.2f seconds to check forced updates. You can use\n"
@@ -14391,22 +14664,22 @@ msgstr ""
 "花了 %.2f 秒来检查强制更新。您可以使用 '--no-show-forced-updates'\n"
 "或运行 'git config fetch.showForcedUpdates false' 以避免此项检查。\n"
 
-#: builtin/fetch.c:939
+#: builtin/fetch.c:1041
 #, c-format
 msgid "%s did not send all necessary objects\n"
 msgstr "%s 未发送所有必需的对象\n"
 
-#: builtin/fetch.c:960
+#: builtin/fetch.c:1069
 #, c-format
 msgid "reject %s because shallow roots are not allowed to be updated"
 msgstr "拒绝 %s 因为浅克隆不允许被更新"
 
-#: builtin/fetch.c:1053 builtin/fetch.c:1191
+#: builtin/fetch.c:1146 builtin/fetch.c:1297
 #, c-format
 msgid "From %.*s\n"
 msgstr "来自 %.*s\n"
 
-#: builtin/fetch.c:1064
+#: builtin/fetch.c:1168
 #, c-format
 msgid ""
 "some local refs could not be updated; try running\n"
@@ -14416,57 +14689,57 @@ msgstr ""
 " 'git remote prune %s' 来删除旧的、有冲突的分支"
 
 #  译者:注意保持前导空格
-#: builtin/fetch.c:1161
+#: builtin/fetch.c:1267
 #, c-format
 msgid "   (%s will become dangling)"
 msgstr "   (%s 将成为悬空状态)"
 
 #  译者:注意保持前导空格
-#: builtin/fetch.c:1162
+#: builtin/fetch.c:1268
 #, c-format
 msgid "   (%s has become dangling)"
 msgstr "   (%s 已成为悬空状态)"
 
-#: builtin/fetch.c:1194
+#: builtin/fetch.c:1300
 msgid "[deleted]"
 msgstr "[已删除]"
 
-#: builtin/fetch.c:1195 builtin/remote.c:1118
+#: builtin/fetch.c:1301 builtin/remote.c:1118
 msgid "(none)"
 msgstr "(无)"
 
-#: builtin/fetch.c:1218
+#: builtin/fetch.c:1324
 #, c-format
 msgid "Refusing to fetch into current branch %s of non-bare repository"
 msgstr "拒绝获取到非纯仓库的当前分支 %s"
 
-#: builtin/fetch.c:1237
+#: builtin/fetch.c:1343
 #, c-format
 msgid "Option \"%s\" value \"%s\" is not valid for %s"
 msgstr "选项 \"%s\" 的值 \"%s\" 对于 %s 是无效的"
 
-#: builtin/fetch.c:1240
+#: builtin/fetch.c:1346
 #, c-format
 msgid "Option \"%s\" is ignored for %s\n"
 msgstr "选项 \"%s\" 为 %s 所忽略\n"
 
-#: builtin/fetch.c:1448
+#: builtin/fetch.c:1558
 msgid "multiple branches detected, incompatible with --set-upstream"
 msgstr "检测到多分支,和 --set-upstream 不兼容"
 
-#: builtin/fetch.c:1463
+#: builtin/fetch.c:1573
 msgid "not setting upstream for a remote remote-tracking branch"
 msgstr "没有为一个远程跟踪分支设置上游"
 
-#: builtin/fetch.c:1465
+#: builtin/fetch.c:1575
 msgid "not setting upstream for a remote tag"
 msgstr "没有为一个远程标签设置上游"
 
-#: builtin/fetch.c:1467
+#: builtin/fetch.c:1577
 msgid "unknown branch type"
 msgstr "未知的分支类型"
 
-#: builtin/fetch.c:1469
+#: builtin/fetch.c:1579
 msgid ""
 "no source branch found.\n"
 "you need to specify exactly one branch with the --set-upstream option."
@@ -14474,71 +14747,75 @@ msgstr ""
 "未发现源分支。\n"
 "您需要使用 --set-upstream 选项指定一个分支。"
 
-#: builtin/fetch.c:1598 builtin/fetch.c:1661
+#: builtin/fetch.c:1708 builtin/fetch.c:1771
 #, c-format
 msgid "Fetching %s\n"
 msgstr "正在获取 %s\n"
 
-#: builtin/fetch.c:1608 builtin/fetch.c:1663 builtin/remote.c:101
+#: builtin/fetch.c:1718 builtin/fetch.c:1773 builtin/remote.c:101
 #, c-format
 msgid "Could not fetch %s"
 msgstr "不能获取 %s"
 
-#: builtin/fetch.c:1620
+#: builtin/fetch.c:1730
 #, c-format
 msgid "could not fetch '%s' (exit code: %d)\n"
 msgstr "无法获取 '%s'(退出码:%d)\n"
 
-#: builtin/fetch.c:1724
+#: builtin/fetch.c:1834
 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:1760
+#: builtin/fetch.c:1870
 msgid "You need to specify a tag name."
 msgstr "您需要指定一个标签名称。"
 
-#: builtin/fetch.c:1825
+#: builtin/fetch.c:1935
 msgid "Negative depth in --deepen is not supported"
 msgstr "--deepen 不支持负数深度"
 
-#: builtin/fetch.c:1827
+#: builtin/fetch.c:1937
 msgid "--deepen and --depth are mutually exclusive"
 msgstr "--deepen 和 --depth 是互斥的"
 
-#: builtin/fetch.c:1832
+#: builtin/fetch.c:1942
 msgid "--depth and --unshallow cannot be used together"
 msgstr "--depth 和 --unshallow 不能同时使用"
 
-#: builtin/fetch.c:1834
+#: builtin/fetch.c:1944
 msgid "--unshallow on a complete repository does not make sense"
 msgstr "对于一个完整的仓库,参数 --unshallow 没有意义"
 
-#: builtin/fetch.c:1851
+#: builtin/fetch.c:1961
 msgid "fetch --all does not take a repository argument"
 msgstr "fetch --all 不能带一个仓库参数"
 
-#: builtin/fetch.c:1853
+#: builtin/fetch.c:1963
 msgid "fetch --all does not make sense with refspecs"
 msgstr "fetch --all 带引用规格没有任何意义"
 
-#: builtin/fetch.c:1862
+#: builtin/fetch.c:1972
 #, c-format
 msgid "No such remote or remote group: %s"
 msgstr "没有这样的远程或远程组:%s"
 
-#: builtin/fetch.c:1869
+#: builtin/fetch.c:1979
 msgid "Fetching a group and specifying refspecs does not make sense"
 msgstr "获取组并指定引用规格没有意义"
 
-#: builtin/fetch.c:1887
+#: builtin/fetch.c:1997
 msgid ""
 "--filter can only be used with the remote configured in extensions."
 "partialclone"
 msgstr "只可以将 --filter 用于在 extensions.partialClone 中配置的远程仓库"
 
-#: builtin/fetch.c:1891
+#: builtin/fetch.c:2001
+msgid "--atomic can only be used when fetching from one remote"
+msgstr "--atomic 仅在从一个远程仓库获取的时候可用"
+
+#: builtin/fetch.c:2005
 msgid "--stdin can only be used when fetching from one remote"
 msgstr "--stdin 仅在从一个远程仓库获取的时候可用"
 
@@ -14603,7 +14880,7 @@ msgstr "引用占位符适用于 Tcl"
 msgid "show only <n> matched refs"
 msgstr "只显示 <n> 个匹配的引用"
 
-#: builtin/for-each-ref.c:39 builtin/tag.c:440
+#: builtin/for-each-ref.c:39 builtin/tag.c:472
 msgid "respect format colors"
 msgstr "遵照格式中的颜色输出"
 
@@ -14643,32 +14920,32 @@ msgstr "存储着仓库路径列表的配置项键名"
 msgid "missing --config=<config>"
 msgstr "缺少 --config=<配置>"
 
-#: builtin/fsck.c:69 builtin/fsck.c:148 builtin/fsck.c:149
+#: builtin/fsck.c:69 builtin/fsck.c:130 builtin/fsck.c:131
 msgid "unknown"
 msgstr "未知"
 
 #. TRANSLATORS: e.g. error in tree 01bfda: <more explanation>
-#: builtin/fsck.c:101 builtin/fsck.c:121
+#: builtin/fsck.c:83 builtin/fsck.c:103
 #, c-format
 msgid "error in %s %s: %s"
 msgstr "%s %s 错误:%s"
 
 #. TRANSLATORS: e.g. warning in tree 01bfda: <more explanation>
-#: builtin/fsck.c:115
+#: builtin/fsck.c:97
 #, c-format
 msgid "warning in %s %s: %s"
 msgstr "%s %s 警告:%s"
 
-#: builtin/fsck.c:144 builtin/fsck.c:147
+#: builtin/fsck.c:126 builtin/fsck.c:129
 #, c-format
 msgid "broken link from %7s %s"
 msgstr "来自 %7s %s 的损坏的链接"
 
-#: builtin/fsck.c:156
+#: builtin/fsck.c:138
 msgid "wrong object type in link"
 msgstr "链接中错误的对象类型"
 
-#: builtin/fsck.c:172
+#: builtin/fsck.c:154
 #, c-format
 msgid ""
 "broken link from %7s %s\n"
@@ -14677,211 +14954,211 @@ msgstr ""
 "损坏的链接来自于 %7s %s\n"
 "              到 %7s %s"
 
-#: builtin/fsck.c:283
+#: builtin/fsck.c:265
 #, c-format
 msgid "missing %s %s"
 msgstr "缺失 %s %s"
 
-#: builtin/fsck.c:310
+#: builtin/fsck.c:292
 #, c-format
 msgid "unreachable %s %s"
 msgstr "不可达 %s %s"
 
-#: builtin/fsck.c:330
+#: builtin/fsck.c:312
 #, c-format
 msgid "dangling %s %s"
 msgstr "悬空 %s %s"
 
-#: builtin/fsck.c:340
+#: builtin/fsck.c:322
 msgid "could not create lost-found"
 msgstr "不能创建 lost-found"
 
-#: builtin/fsck.c:351
+#: builtin/fsck.c:333
 #, c-format
 msgid "could not finish '%s'"
 msgstr "不能完成 '%s'"
 
-#: builtin/fsck.c:368
+#: builtin/fsck.c:350
 #, c-format
 msgid "Checking %s"
 msgstr "正在检查 %s"
 
-#: builtin/fsck.c:406
+#: builtin/fsck.c:388
 #, c-format
 msgid "Checking connectivity (%d objects)"
 msgstr "正在检查连通性(%d 个对象)"
 
-#: builtin/fsck.c:425
+#: builtin/fsck.c:407
 #, c-format
 msgid "Checking %s %s"
 msgstr "正在检查 %s %s"
 
-#: builtin/fsck.c:430
+#: builtin/fsck.c:412
 msgid "broken links"
 msgstr "损坏的链接"
 
-#: builtin/fsck.c:439
+#: builtin/fsck.c:421
 #, c-format
 msgid "root %s"
 msgstr "根 %s"
 
-#: builtin/fsck.c:447
+#: builtin/fsck.c:429
 #, c-format
 msgid "tagged %s %s (%s) in %s"
 msgstr "标记 %s %s (%s) 于 %s"
 
-#: builtin/fsck.c:476
+#: builtin/fsck.c:458
 #, c-format
 msgid "%s: object corrupt or missing"
 msgstr "%s:对象损坏或丢失"
 
-#: builtin/fsck.c:501
+#: builtin/fsck.c:483
 #, c-format
 msgid "%s: invalid reflog entry %s"
 msgstr "%s:无效的引用日志条目 %s"
 
-#: builtin/fsck.c:515
+#: builtin/fsck.c:497
 #, c-format
 msgid "Checking reflog %s->%s"
 msgstr "正在检查引用日志 %s->%s"
 
-#: builtin/fsck.c:549
+#: builtin/fsck.c:531
 #, c-format
 msgid "%s: invalid sha1 pointer %s"
 msgstr "%s:无效的 sha1 指针 %s"
 
-#: builtin/fsck.c:556
+#: builtin/fsck.c:538
 #, c-format
 msgid "%s: not a commit"
 msgstr "%s:不是一个提交"
 
-#: builtin/fsck.c:610
+#: builtin/fsck.c:592
 msgid "notice: No default references"
 msgstr "注意:无默认引用"
 
-#: builtin/fsck.c:625
+#: builtin/fsck.c:607
 #, c-format
 msgid "%s: object corrupt or missing: %s"
 msgstr "%s:对象损坏或丢失:%s"
 
-#: builtin/fsck.c:638
+#: builtin/fsck.c:620
 #, c-format
 msgid "%s: object could not be parsed: %s"
 msgstr "%s:不能解析对象:%s"
 
-#: builtin/fsck.c:658
+#: builtin/fsck.c:640
 #, c-format
 msgid "bad sha1 file: %s"
 msgstr "坏的 sha1 文件:%s"
 
-#: builtin/fsck.c:673
+#: builtin/fsck.c:655
 msgid "Checking object directory"
 msgstr "正在检查对象目录"
 
-#: builtin/fsck.c:676
+#: builtin/fsck.c:658
 msgid "Checking object directories"
 msgstr "正在检查对象目录"
 
-#: builtin/fsck.c:691
+#: builtin/fsck.c:673
 #, c-format
 msgid "Checking %s link"
 msgstr "正在检查 %s 链接"
 
-#: builtin/fsck.c:696 builtin/index-pack.c:865
+#: builtin/fsck.c:678 builtin/index-pack.c:865
 #, c-format
 msgid "invalid %s"
 msgstr "无效的 %s"
 
-#: builtin/fsck.c:703
+#: builtin/fsck.c:685
 #, c-format
 msgid "%s points to something strange (%s)"
 msgstr "%s 指向奇怪的东西(%s)"
 
-#: builtin/fsck.c:709
+#: builtin/fsck.c:691
 #, c-format
 msgid "%s: detached HEAD points at nothing"
 msgstr "%s:分离头指针的指向不存在"
 
-#: builtin/fsck.c:713
+#: builtin/fsck.c:695
 #, c-format
 msgid "notice: %s points to an unborn branch (%s)"
 msgstr "注意:%s 指向一个尚未诞生的分支(%s)"
 
-#: builtin/fsck.c:725
+#: builtin/fsck.c:707
 msgid "Checking cache tree"
 msgstr "正在检查缓存树"
 
-#: builtin/fsck.c:730
+#: builtin/fsck.c:712
 #, c-format
 msgid "%s: invalid sha1 pointer in cache-tree"
 msgstr "%s:cache-tree 中无效的 sha1 指针"
 
-#: builtin/fsck.c:739
+#: builtin/fsck.c:721
 msgid "non-tree in cache-tree"
 msgstr "cache-tree 中非树对象"
 
-#: builtin/fsck.c:770
+#: builtin/fsck.c:752
 msgid "git fsck [<options>] [<object>...]"
 msgstr "git fsck [<选项>] [<对象>...]"
 
-#: builtin/fsck.c:776
+#: builtin/fsck.c:758
 msgid "show unreachable objects"
 msgstr "显示不可达的对象"
 
-#: builtin/fsck.c:777
+#: builtin/fsck.c:759
 msgid "show dangling objects"
 msgstr "显示悬空的对象"
 
-#: builtin/fsck.c:778
+#: builtin/fsck.c:760
 msgid "report tags"
 msgstr "报告标签"
 
-#: builtin/fsck.c:779
+#: builtin/fsck.c:761
 msgid "report root nodes"
 msgstr "报告根节点"
 
-#: builtin/fsck.c:780
+#: builtin/fsck.c:762
 msgid "make index objects head nodes"
 msgstr "将索引亦作为检查的头节点"
 
-#: builtin/fsck.c:781
+#: builtin/fsck.c:763
 msgid "make reflogs head nodes (default)"
 msgstr "将引用日志作为检查的头节点(默认)"
 
-#: builtin/fsck.c:782
+#: builtin/fsck.c:764
 msgid "also consider packs and alternate objects"
 msgstr "也考虑包和备用对象"
 
-#: builtin/fsck.c:783
+#: builtin/fsck.c:765
 msgid "check only connectivity"
 msgstr "仅检查连通性"
 
-#: builtin/fsck.c:784
+#: builtin/fsck.c:766 builtin/mktag.c:78
 msgid "enable more strict checking"
 msgstr "启用更严格的检查"
 
-#: builtin/fsck.c:786
+#: builtin/fsck.c:768
 msgid "write dangling objects in .git/lost-found"
 msgstr "将悬空对象写入 .git/lost-found 中"
 
-#: builtin/fsck.c:787 builtin/prune.c:134
+#: builtin/fsck.c:769 builtin/prune.c:134
 msgid "show progress"
 msgstr "显示进度"
 
-#: builtin/fsck.c:788
+#: builtin/fsck.c:770
 msgid "show verbose names for reachable objects"
 msgstr "显示可达对象的详细名称"
 
-#: builtin/fsck.c:847 builtin/index-pack.c:261
+#: builtin/fsck.c:829 builtin/index-pack.c:261
 msgid "Checking objects"
 msgstr "正在检查对象"
 
-#: builtin/fsck.c:875
+#: builtin/fsck.c:857
 #, c-format
 msgid "%s: object missing"
 msgstr "%s:对象缺失"
 
-#: builtin/fsck.c:886
+#: builtin/fsck.c:868
 #, c-format
 msgid "invalid parameter: expected sha1, got '%s'"
 msgstr "无效的参数:期望 sha1,得到 '%s'"
@@ -14890,27 +15167,27 @@ msgstr "无效的参数:期望 sha1,得到 '%s'"
 msgid "git gc [<options>]"
 msgstr "git gc [<选项>]"
 
-#: builtin/gc.c:94
+#: builtin/gc.c:93
 #, c-format
 msgid "Failed to fstat %s: %s"
 msgstr "对 %s 调用 fstat 失败:%s"
 
-#: builtin/gc.c:130
+#: builtin/gc.c:129
 #, c-format
 msgid "failed to parse '%s' value '%s'"
 msgstr "无法解析 '%s' 值 '%s'"
 
-#: builtin/gc.c:479 builtin/init-db.c:58
+#: builtin/gc.c:487 builtin/init-db.c:58
 #, c-format
 msgid "cannot stat '%s'"
 msgstr "不能对 '%s' 调用 stat"
 
-#: builtin/gc.c:488 builtin/notes.c:240 builtin/tag.c:530
+#: builtin/gc.c:496 builtin/notes.c:240 builtin/tag.c:562
 #, c-format
 msgid "cannot read '%s'"
 msgstr "不能读取 '%s'"
 
-#: builtin/gc.c:495
+#: builtin/gc.c:503
 #, c-format
 msgid ""
 "The last gc run reported the following. Please correct the root cause\n"
@@ -14924,192 +15201,219 @@ msgstr ""
 "\n"
 "%s"
 
-#: builtin/gc.c:543
+#: builtin/gc.c:551
 msgid "prune unreferenced objects"
 msgstr "清除未引用的对象"
 
-#: builtin/gc.c:545
+#: builtin/gc.c:553
 msgid "be more thorough (increased runtime)"
 msgstr "更彻底(增加运行时间)"
 
-#: builtin/gc.c:546
+#: builtin/gc.c:554
 msgid "enable auto-gc mode"
 msgstr "启用自动垃圾回收模式"
 
-#: builtin/gc.c:549
+#: builtin/gc.c:557
 msgid "force running gc even if there may be another gc running"
 msgstr "强制执行 gc 即使另外一个 gc 正在执行"
 
-#: builtin/gc.c:552
+#: builtin/gc.c:560
 msgid "repack all other packs except the largest pack"
 msgstr "除了最大的包之外,对所有其它包文件重新打包"
 
-#: builtin/gc.c:569
+#: builtin/gc.c:576
 #, c-format
 msgid "failed to parse gc.logexpiry value %s"
 msgstr "解析 gc.logexpiry 的值 %s 失败"
 
-#: builtin/gc.c:580
+#: builtin/gc.c:587
 #, c-format
 msgid "failed to parse prune expiry value %s"
 msgstr "解析清除期限值 %s 失败"
 
-#: builtin/gc.c:600
+#: builtin/gc.c:607
 #, c-format
 msgid "Auto packing the repository in background for optimum performance.\n"
 msgstr "自动在后台执行仓库打包以求最佳性能。\n"
 
-#: builtin/gc.c:602
+#: builtin/gc.c:609
 #, c-format
 msgid "Auto packing the repository for optimum performance.\n"
 msgstr "自动打包仓库以求最佳性能。\n"
 
-#: builtin/gc.c:603
+#: builtin/gc.c:610
 #, c-format
 msgid "See \"git help gc\" for manual housekeeping.\n"
 msgstr "手工维护参见 \"git help gc\"。\n"
 
-#: builtin/gc.c:643
+#: builtin/gc.c:650
 #, c-format
 msgid ""
 "gc is already running on machine '%s' pid %<PRIuMAX> (use --force if not)"
 msgstr ""
 "已经有一个 gc 正运行在机器 '%s' pid %<PRIuMAX>(如果不是,使用 --force)"
 
-#: builtin/gc.c:698
+#: builtin/gc.c:705
 msgid ""
 "There are too many unreachable loose objects; run 'git prune' to remove them."
 msgstr "有太多不可达的松散对象,运行 'git prune' 删除它们。"
 
-#: builtin/gc.c:708
+#: builtin/gc.c:715
 msgid ""
 "git maintenance run [--auto] [--[no-]quiet] [--task=<task>] [--schedule]"
 msgstr ""
 "git maintenance run [--auto] [--[no-]quiet] [--task=<任务>] [--schedule]"
 
-#: builtin/gc.c:738
+#: builtin/gc.c:745
 msgid "--no-schedule is not allowed"
 msgstr "--no-schedule 不被允许"
 
-#: builtin/gc.c:743
+#: builtin/gc.c:750
 #, c-format
 msgid "unrecognized --schedule argument '%s'"
 msgstr "无法识别的 --schedule 参数 '%s'"
 
-#: builtin/gc.c:862
+#: builtin/gc.c:869
 msgid "failed to write commit-graph"
 msgstr "无法写入提交图"
 
-#: builtin/gc.c:901
+#: builtin/gc.c:914
 msgid "failed to fill remotes"
 msgstr "无法填充远程仓库"
 
-#: builtin/gc.c:1024
+#: builtin/gc.c:1037
 msgid "failed to start 'git pack-objects' process"
 msgstr "无法启动 'git pack-objects' 进程"
 
-#: builtin/gc.c:1041
+#: builtin/gc.c:1054
 msgid "failed to finish 'git pack-objects' process"
 msgstr "无法完成 'git pack-objects' 进程"
 
-#: builtin/gc.c:1093
+#: builtin/gc.c:1106
 msgid "failed to write multi-pack-index"
 msgstr "无法写入多包索引"
 
-#: builtin/gc.c:1111
+#: builtin/gc.c:1124
 msgid "'git multi-pack-index expire' failed"
 msgstr "'git multi-pack-index expire' 失败"
 
-#: builtin/gc.c:1172
+#: builtin/gc.c:1185
 msgid "'git multi-pack-index repack' failed"
 msgstr "'git multi-pack-index repack' 失败"
 
-#: builtin/gc.c:1181
+#: builtin/gc.c:1194
 msgid ""
 "skipping incremental-repack task because core.multiPackIndex is disabled"
 msgstr "跳过增量重新打包任务,因为 core.multiPackIndex 被禁用"
 
-#: builtin/gc.c:1279
+#: builtin/gc.c:1298
 #, c-format
 msgid "lock file '%s' exists, skipping maintenance"
 msgstr "锁文件 '%s' 已存在,跳过维护"
 
-#: builtin/gc.c:1309
+#: builtin/gc.c:1328
 #, c-format
 msgid "task '%s' failed"
 msgstr "任务 '%s' 失败"
 
-#: builtin/gc.c:1389
+#: builtin/gc.c:1410
 #, c-format
 msgid "'%s' is not a valid task"
 msgstr "'%s' 不是一个有效的任务"
 
-#: builtin/gc.c:1394
+#: builtin/gc.c:1415
 #, c-format
 msgid "task '%s' cannot be selected multiple times"
 msgstr "任务 '%s' 不能被多次选择"
 
-#: builtin/gc.c:1409
+#: builtin/gc.c:1430
 msgid "run tasks based on the state of the repository"
 msgstr "基于仓库状态来运行任务"
 
-#: builtin/gc.c:1410
+#: builtin/gc.c:1431
 msgid "frequency"
 msgstr "频率"
 
-#: builtin/gc.c:1411
+#: builtin/gc.c:1432
 msgid "run tasks based on frequency"
 msgstr "基于频率运行任务"
 
-#: builtin/gc.c:1414
+#: builtin/gc.c:1435
 msgid "do not report progress or other information over stderr"
 msgstr "不通过标准错误报告进度或其它信息"
 
-#: builtin/gc.c:1415
+#: builtin/gc.c:1436
 msgid "task"
 msgstr "任务"
 
-#: builtin/gc.c:1416
+#: builtin/gc.c:1437
 msgid "run a specific task"
 msgstr "运行一个特定的任务"
 
-#: builtin/gc.c:1433
+#: builtin/gc.c:1454
 msgid "use at most one of --auto and --schedule=<frequency>"
 msgstr "最多使用 --auto 和 --schedule=<频率> 其中之一"
 
-#: builtin/gc.c:1467
+#: builtin/gc.c:1497
 msgid "failed to run 'git config'"
 msgstr "无法运行 'git config'"
 
-#: builtin/gc.c:1512
-msgid "another process is scheduling background maintenance"
-msgstr "另外一个进程正运行于后台维护"
+#: builtin/gc.c:1562
+#, c-format
+msgid "failed to expand path '%s'"
+msgstr "无法扩展路径 '%s'"
+
+#: builtin/gc.c:1591
+msgid "failed to start launchctl"
+msgstr "无法启动 launchctl"
 
-#: builtin/gc.c:1525
+#: builtin/gc.c:1628
+#, c-format
+msgid "failed to create directories for '%s'"
+msgstr "无法为 '%s' 创建目录"
+
+#: builtin/gc.c:1689
+#, c-format
+msgid "failed to bootstrap service %s"
+msgstr "无法引导服务 %s"
+
+#: builtin/gc.c:1760
+msgid "failed to create temp xml file"
+msgstr "无法创建临时 XML 文件"
+
+#: builtin/gc.c:1850
+msgid "failed to start schtasks"
+msgstr "无法启动计划任务"
+
+#: builtin/gc.c:1894
 msgid "failed to run 'crontab -l'; your system might not support 'cron'"
 msgstr "无法执行 'crontab -l',您的系统可能不支持 'cron'"
 
-#: builtin/gc.c:1544
+#: builtin/gc.c:1911
 msgid "failed to run 'crontab'; your system might not support 'cron'"
 msgstr "无法运行 'crontab',您的系统可能不支持 'cron'"
 
-#: builtin/gc.c:1550
+#: builtin/gc.c:1915
 msgid "failed to open stdin of 'crontab'"
 msgstr "无法打开 'crontab' 的标准输入"
 
-#: builtin/gc.c:1592
+#: builtin/gc.c:1956
 msgid "'crontab' died"
 msgstr "'crontab' 终止"
 
-#: builtin/gc.c:1605
+#: builtin/gc.c:1990
+msgid "another process is scheduling background maintenance"
+msgstr "另外一个进程正运行于后台维护"
+
+#: builtin/gc.c:2009
 msgid "failed to add repo to global config"
 msgstr "无法将仓库添加到全局配置"
 
-#: builtin/gc.c:1615
+#: builtin/gc.c:2019
 msgid "git maintenance <subcommand> [<options>]"
 msgstr "git maintenance <子命令> [<选项>]"
 
-#: builtin/gc.c:1634
+#: builtin/gc.c:2038
 #, c-format
 msgid "invalid subcommand: %s"
 msgstr "无效子命令:%s"
@@ -15118,12 +15422,12 @@ msgstr "无效子命令:%s"
 msgid "git grep [<options>] [-e] <pattern> [<rev>...] [[--] <path>...]"
 msgstr "git grep [<选项>] [-e] <模式> [<版本>...] [[--] <路径>...]"
 
-#: builtin/grep.c:225
+#: builtin/grep.c:223
 #, c-format
 msgid "grep: failed to create thread: %s"
 msgstr "grep:无法创建线程:%s"
 
-#: builtin/grep.c:279
+#: builtin/grep.c:277
 #, c-format
 msgid "invalid number of threads specified (%d) for %s"
 msgstr "为 %2$s 设定的线程数 (%1$d) 无效"
@@ -15132,259 +15436,259 @@ msgstr "为 %2$s 设定的线程数 (%1$d) 无效"
 #. variable for tweaking threads, currently
 #. grep.threads
 #.
-#: builtin/grep.c:287 builtin/index-pack.c:1576 builtin/index-pack.c:1766
-#: builtin/pack-objects.c:2936
+#: builtin/grep.c:285 builtin/index-pack.c:1589 builtin/index-pack.c:1808
+#: builtin/pack-objects.c:2944
 #, c-format
 msgid "no threads support, ignoring %s"
 msgstr "没有线程支持,忽略 %s"
 
-#: builtin/grep.c:475 builtin/grep.c:600 builtin/grep.c:640
+#: builtin/grep.c:473 builtin/grep.c:601 builtin/grep.c:641
 #, c-format
 msgid "unable to read tree (%s)"
 msgstr "无法读取树(%s)"
 
-#: builtin/grep.c:655
+#: builtin/grep.c:656
 #, c-format
 msgid "unable to grep from object of type %s"
 msgstr "无法抓取来自于 %s 类型的对象"
 
-#: builtin/grep.c:736
+#: builtin/grep.c:737
 #, c-format
 msgid "switch `%c' expects a numerical value"
 msgstr "开关 `%c' 期望一个数字值"
 
-#: builtin/grep.c:835
+#: builtin/grep.c:836
 msgid "search in index instead of in the work tree"
 msgstr "在索引区搜索而不是在工作区"
 
-#: builtin/grep.c:837
+#: builtin/grep.c:838
 msgid "find in contents not managed by git"
 msgstr "在未被 git 管理的内容中查找"
 
 #  译者:中文字符串拼接,可删除前导空格
-#: builtin/grep.c:839
+#: builtin/grep.c:840
 msgid "search in both tracked and untracked files"
 msgstr "在跟踪和未跟踪的文件中搜索"
 
-#: builtin/grep.c:841
+#: builtin/grep.c:842
 msgid "ignore files specified via '.gitignore'"
 msgstr "忽略 '.gitignore' 包含的文件"
 
-#: builtin/grep.c:843
+#: builtin/grep.c:844
 msgid "recursively search in each submodule"
 msgstr "在每一个子模组中递归搜索"
 
-#: builtin/grep.c:846
+#: builtin/grep.c:847
 msgid "show non-matching lines"
 msgstr "显示未匹配的行"
 
-#: builtin/grep.c:848
+#: builtin/grep.c:849
 msgid "case insensitive matching"
 msgstr "不区分大小写匹配"
 
-#: builtin/grep.c:850
+#: builtin/grep.c:851
 msgid "match patterns only at word boundaries"
 msgstr "只在单词边界匹配模式"
 
-#: builtin/grep.c:852
+#: builtin/grep.c:853
 msgid "process binary files as text"
 msgstr "把二进制文件当做文本处理"
 
-#: builtin/grep.c:854
+#: builtin/grep.c:855
 msgid "don't match patterns in binary files"
 msgstr "不在二进制文件中匹配模式"
 
-#: builtin/grep.c:857
+#: builtin/grep.c:858
 msgid "process binary files with textconv filters"
 msgstr "用 textconv 过滤器处理二进制文件"
 
-#: builtin/grep.c:859
+#: builtin/grep.c:860
 msgid "search in subdirectories (default)"
 msgstr "在子目录中寻找(默认)"
 
-#: builtin/grep.c:861
+#: builtin/grep.c:862
 msgid "descend at most <depth> levels"
 msgstr "最多以指定的深度向下寻找"
 
-#: builtin/grep.c:865
+#: builtin/grep.c:866
 msgid "use extended POSIX regular expressions"
 msgstr "使用扩展的 POSIX 正则表达式"
 
-#: builtin/grep.c:868
+#: builtin/grep.c:869
 msgid "use basic POSIX regular expressions (default)"
 msgstr "使用基本的 POSIX 正则表达式(默认)"
 
-#: builtin/grep.c:871
+#: builtin/grep.c:872
 msgid "interpret patterns as fixed strings"
 msgstr "把模式解析为固定的字符串"
 
-#: builtin/grep.c:874
+#: builtin/grep.c:875
 msgid "use Perl-compatible regular expressions"
 msgstr "使用 Perl 兼容的正则表达式"
 
-#: builtin/grep.c:877
+#: builtin/grep.c:878
 msgid "show line numbers"
 msgstr "显示行号"
 
-#: builtin/grep.c:878
+#: builtin/grep.c:879
 msgid "show column number of first match"
 msgstr "显示第一个匹配的列号"
 
-#: builtin/grep.c:879
+#: builtin/grep.c:880
 msgid "don't show filenames"
 msgstr "不显示文件名"
 
-#: builtin/grep.c:880
+#: builtin/grep.c:881
 msgid "show filenames"
 msgstr "显示文件名"
 
-#: builtin/grep.c:882
+#: builtin/grep.c:883
 msgid "show filenames relative to top directory"
 msgstr "显示相对于顶级目录的文件名"
 
-#: builtin/grep.c:884
+#: builtin/grep.c:885
 msgid "show only filenames instead of matching lines"
 msgstr "只显示文件名而不显示匹配的行"
 
-#: builtin/grep.c:886
+#: builtin/grep.c:887
 msgid "synonym for --files-with-matches"
 msgstr "和 --files-with-matches 同义"
 
-#: builtin/grep.c:889
+#: builtin/grep.c:890
 msgid "show only the names of files without match"
 msgstr "只显示未匹配的文件名"
 
-#: builtin/grep.c:891
+#: builtin/grep.c:892
 msgid "print NUL after filenames"
 msgstr "在文件名后输出 NUL 字符"
 
-#: builtin/grep.c:894
+#: builtin/grep.c:895
 msgid "show only matching parts of a line"
 msgstr "只显示行中的匹配的部分"
 
-#: builtin/grep.c:896
+#: builtin/grep.c:897
 msgid "show the number of matches instead of matching lines"
 msgstr "显示总匹配行数,而不显示匹配的行"
 
-#: builtin/grep.c:897
+#: builtin/grep.c:898
 msgid "highlight matches"
 msgstr "高亮显示匹配项"
 
-#: builtin/grep.c:899
+#: builtin/grep.c:900
 msgid "print empty line between matches from different files"
 msgstr "在不同文件的匹配项之间打印空行"
 
-#: builtin/grep.c:901
+#: builtin/grep.c:902
 msgid "show filename only once above matches from same file"
 msgstr "只在同一文件的匹配项的上面显示一次文件名"
 
-#: builtin/grep.c:904
+#: builtin/grep.c:905
 msgid "show <n> context lines before and after matches"
 msgstr "显示匹配项前后的 <n> 行上下文"
 
-#: builtin/grep.c:907
+#: builtin/grep.c:908
 msgid "show <n> context lines before matches"
 msgstr "显示匹配项前 <n> 行上下文"
 
-#: builtin/grep.c:909
+#: builtin/grep.c:910
 msgid "show <n> context lines after matches"
 msgstr "显示匹配项后 <n> 行上下文"
 
-#: builtin/grep.c:911
+#: builtin/grep.c:912
 msgid "use <n> worker threads"
 msgstr "使用 <n> 个工作线程"
 
-#: builtin/grep.c:912
+#: builtin/grep.c:913
 msgid "shortcut for -C NUM"
 msgstr "快捷键 -C 数字"
 
-#: builtin/grep.c:915
+#: builtin/grep.c:916
 msgid "show a line with the function name before matches"
 msgstr "在匹配的前面显示一行函数名"
 
-#: builtin/grep.c:917
+#: builtin/grep.c:918
 msgid "show the surrounding function"
 msgstr "显示所在函数的前后内容"
 
-#: builtin/grep.c:920
+#: builtin/grep.c:921
 msgid "read patterns from file"
 msgstr "从文件读取模式"
 
-#: builtin/grep.c:922
+#: builtin/grep.c:923
 msgid "match <pattern>"
 msgstr "匹配 <模式>"
 
-#: builtin/grep.c:924
+#: builtin/grep.c:925
 msgid "combine patterns specified with -e"
 msgstr "组合用 -e 参数设定的模式"
 
-#: builtin/grep.c:936
+#: builtin/grep.c:937
 msgid "indicate hit with exit status without output"
 msgstr "不输出,而用退出码标识命中状态"
 
-#: builtin/grep.c:938
+#: builtin/grep.c:939
 msgid "show only matches from files that match all patterns"
 msgstr "只显示匹配所有模式的文件中的匹配"
 
-#: builtin/grep.c:940
-msgid "show parse tree for grep expression"
-msgstr "显示 grep 表达式的解析树"
-
-#: builtin/grep.c:944
+#: builtin/grep.c:942
 msgid "pager"
 msgstr "分页"
 
-#: builtin/grep.c:944
+#: builtin/grep.c:942
 msgid "show matching files in the pager"
 msgstr "分页显示匹配的文件"
 
-#: builtin/grep.c:948
+#: builtin/grep.c:946
 msgid "allow calling of grep(1) (ignored by this build)"
 msgstr "允许调用 grep(1)(本次构建忽略)"
 
-#: builtin/grep.c:1014
+#: builtin/grep.c:1012
 msgid "no pattern given"
 msgstr "未提供匹配模式"
 
-#: builtin/grep.c:1050
+#: builtin/grep.c:1048
 msgid "--no-index or --untracked cannot be used with revs"
 msgstr "--no-index 或 --untracked 不能和版本同时使用"
 
-#: builtin/grep.c:1058
+#: builtin/grep.c:1056
 #, c-format
 msgid "unable to resolve revision: %s"
 msgstr "不能解析版本:%s"
 
-#: builtin/grep.c:1088
+#: builtin/grep.c:1086
 msgid "--untracked not supported with --recurse-submodules"
 msgstr "--untracked 不支持和 --recurse-submodules 共用"
 
-#: builtin/grep.c:1092
+#: builtin/grep.c:1090
 msgid "invalid option combination, ignoring --threads"
 msgstr "无效的选项组合,忽略 --threads"
 
-#: builtin/grep.c:1095 builtin/pack-objects.c:3655
+#: builtin/grep.c:1093 builtin/pack-objects.c:3672
 msgid "no threads support, ignoring --threads"
 msgstr "没有线程支持,忽略 --threads"
 
-#: builtin/grep.c:1098 builtin/index-pack.c:1573 builtin/pack-objects.c:2933
+#: builtin/grep.c:1096 builtin/index-pack.c:1586 builtin/pack-objects.c:2941
 #, c-format
 msgid "invalid number of threads specified (%d)"
 msgstr "指定的线程数无效(%d)"
 
-#: builtin/grep.c:1132
+#: builtin/grep.c:1130
 msgid "--open-files-in-pager only works on the worktree"
 msgstr "--open-files-in-pager 仅用于工作区"
 
-#: builtin/grep.c:1158
+#: builtin/grep.c:1156
 msgid "--cached or --untracked cannot be used with --no-index"
 msgstr "--cached 或 --untracked 不能与 --no-index 同时使用"
 
-#: builtin/grep.c:1164
+#: builtin/grep.c:1159
+msgid "--untracked cannot be used with --cached"
+msgstr "--untracked 不能与 --cached 同时使用"
+
+#: builtin/grep.c:1165
 msgid "--[no-]exclude-standard cannot be used for tracked contents"
 msgstr "--[no-]exclude-standard 不能用于已跟踪内容"
 
-#: builtin/grep.c:1172
+#: builtin/grep.c:1173
 msgid "both --cached and trees are given"
 msgstr "同时给出了 --cached 和树对象"
 
@@ -15515,12 +15819,12 @@ msgstr "没有 man 查看器处理此请求"
 msgid "no info viewer handled the request"
 msgstr "没有 info 查看器处理此请求"
 
-#: builtin/help.c:520 builtin/help.c:531 git.c:337
+#: builtin/help.c:520 builtin/help.c:531 git.c:340
 #, c-format
 msgid "'%s' is aliased to '%s'"
 msgstr "'%s' 是 '%s' 的别名"
 
-#: builtin/help.c:534 git.c:369
+#: builtin/help.c:534 git.c:372
 #, c-format
 msgid "bad alias.%s string: %s"
 msgstr "坏的 alias.%s 字符串:%s"
@@ -15568,7 +15872,7 @@ msgstr "输入上的读错误"
 msgid "used more bytes than were available"
 msgstr "用掉了超过可用的字节"
 
-#: builtin/index-pack.c:324 builtin/pack-objects.c:619
+#: builtin/index-pack.c:324 builtin/pack-objects.c:624
 msgid "pack too large for current definition of off_t"
 msgstr "包太大超过了当前 off_t 的定义"
 
@@ -15576,7 +15880,7 @@ msgstr "包太大超过了当前 off_t 的定义"
 msgid "pack exceeds maximum allowed size"
 msgstr "包超过了最大允许值"
 
-#: builtin/index-pack.c:342 builtin/repack.c:286
+#: builtin/index-pack.c:342
 #, c-format
 msgid "unable to create '%s'"
 msgstr "不能创建 '%s'"
@@ -15701,7 +16005,7 @@ msgstr "parse_pack_objects() 中遇到不可理喻的问题"
 msgid "Resolving deltas"
 msgstr "处理 delta 中"
 
-#: builtin/index-pack.c:1249 builtin/pack-objects.c:2697
+#: builtin/index-pack.c:1249 builtin/pack-objects.c:2707
 #, c-format
 msgid "unable to create thread: %s"
 msgstr "不能创建线程:%s"
@@ -15739,10 +16043,10 @@ msgstr "不能压缩附加对象(%d)"
 msgid "local object %s is corrupt"
 msgstr "本地对象 %s 已损坏"
 
-#: builtin/index-pack.c:1444
+#: builtin/index-pack.c:1445
 #, c-format
-msgid "packfile name '%s' does not end with '.pack'"
-msgstr "包文件名 '%s' 没有以 '.pack' 结尾"
+msgid "packfile name '%s' does not end with '.%s'"
+msgstr "包文件名 '%s' 没有以 '.%s' 结尾"
 
 #: builtin/index-pack.c:1469
 #, c-format
@@ -15754,79 +16058,83 @@ msgstr "无法写入 %s 文件 '%s'"
 msgid "cannot close written %s file '%s'"
 msgstr "无法关闭已写入的 %s 文件 '%s'"
 
-#: builtin/index-pack.c:1501
+#: builtin/index-pack.c:1503
 msgid "error while closing pack file"
 msgstr "关闭包文件时出错"
 
-#: builtin/index-pack.c:1515
+#: builtin/index-pack.c:1517
 msgid "cannot store pack file"
 msgstr "无法存储包文件"
 
-#: builtin/index-pack.c:1523
+#: builtin/index-pack.c:1525
 msgid "cannot store index file"
 msgstr "无法存储索引文件"
 
-#: builtin/index-pack.c:1567 builtin/pack-objects.c:2944
+#: builtin/index-pack.c:1534
+msgid "cannot store reverse index file"
+msgstr "无法存储反向索引文件"
+
+#: builtin/index-pack.c:1580 builtin/pack-objects.c:2952
 #, c-format
 msgid "bad pack.indexversion=%<PRIu32>"
 msgstr "坏的 pack.indexversion=%<PRIu32>"
 
-#: builtin/index-pack.c:1631
+#: builtin/index-pack.c:1650
 #, c-format
 msgid "Cannot open existing pack file '%s'"
 msgstr "无法打开现存包文件 '%s'"
 
-#: builtin/index-pack.c:1633
+#: builtin/index-pack.c:1652
 #, c-format
 msgid "Cannot open existing pack idx file for '%s'"
 msgstr "无法为 %s 打开包索引文件"
 
-#: builtin/index-pack.c:1681
+#: builtin/index-pack.c:1700
 #, 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:1688
+#: builtin/index-pack.c:1707
 #, 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:1728
+#: builtin/index-pack.c:1765
 msgid "Cannot come back to cwd"
 msgstr "无法返回当前工作目录"
 
-#: builtin/index-pack.c:1777 builtin/index-pack.c:1780
-#: builtin/index-pack.c:1796 builtin/index-pack.c:1800
+#: builtin/index-pack.c:1819 builtin/index-pack.c:1822
+#: builtin/index-pack.c:1838 builtin/index-pack.c:1842
 #, c-format
 msgid "bad %s"
 msgstr "错误选项 %s"
 
-#: builtin/index-pack.c:1806 builtin/init-db.c:392 builtin/init-db.c:625
+#: builtin/index-pack.c:1848 builtin/init-db.c:392 builtin/init-db.c:625
 #, c-format
 msgid "unknown hash algorithm '%s'"
 msgstr "未知的哈希算法 '%s'"
 
-#: builtin/index-pack.c:1821
+#: builtin/index-pack.c:1867
 msgid "--fix-thin cannot be used without --stdin"
 msgstr "--fix-thin 不能和 --stdin 同时使用"
 
-#: builtin/index-pack.c:1823
+#: builtin/index-pack.c:1869
 msgid "--stdin requires a git repository"
 msgstr "--stdin 需要 git 仓库"
 
-#: builtin/index-pack.c:1825
+#: builtin/index-pack.c:1871
 msgid "--object-format cannot be used with --stdin"
 msgstr "--object-format 不能和 --stdin 同时使用"
 
-#: builtin/index-pack.c:1831
+#: builtin/index-pack.c:1886
 msgid "--verify with no packfile name given"
 msgstr "--verify 没有提供包文件名参数"
 
-#: builtin/index-pack.c:1892 builtin/unpack-objects.c:582
+#: builtin/index-pack.c:1956 builtin/unpack-objects.c:582
 msgid "fsck error in pack objects"
 msgstr "在打包对象中 fsck 检查出错"
 
@@ -16041,128 +16349,128 @@ msgstr "--trailer 和 --only-input 同时使用没有意义"
 msgid "no input file given for in-place editing"
 msgstr "没有给出要原位编辑的文件"
 
-#: builtin/log.c:58
+#: builtin/log.c:59
 msgid "git log [<options>] [<revision-range>] [[--] <path>...]"
 msgstr "git log [<选项>] [<版本范围>] [[--] <路径>...]"
 
-#: builtin/log.c:59
+#: builtin/log.c:60
 msgid "git show [<options>] <object>..."
 msgstr "git show [<选项>] <对象>..."
 
-#: builtin/log.c:112
+#: builtin/log.c:113
 #, c-format
 msgid "invalid --decorate option: %s"
 msgstr "无效的 --decorate 选项:%s"
 
-#: builtin/log.c:179
+#: builtin/log.c:180
 msgid "show source"
 msgstr "显示源"
 
-#: builtin/log.c:180
-msgid "Use mail map file"
+#: builtin/log.c:181
+msgid "use mail map file"
 msgstr "使用邮件映射文件"
 
-#: builtin/log.c:183
+#: builtin/log.c:184
 msgid "only decorate refs that match <pattern>"
 msgstr "只修饰与 <模式> 匹配的引用"
 
-#: builtin/log.c:185
+#: builtin/log.c:186
 msgid "do not decorate refs that match <pattern>"
 msgstr "不修饰和 <模式> 匹配的引用"
 
-#: builtin/log.c:186
+#: builtin/log.c:187
 msgid "decorate options"
 msgstr "修饰选项"
 
-#: builtin/log.c:189
+#: builtin/log.c:190
 msgid ""
-"Trace the evolution of line range <start>,<end> or function :<funcname> in "
+"trace the evolution of line range <start>,<end> or function :<funcname> in "
 "<file>"
 msgstr "跟踪 <文件> 中 <开始>,<结束> 范围内的行或函数 :<函数名> 的演变"
 
-#: builtin/log.c:212
+#: builtin/log.c:213
 msgid "-L<range>:<file> cannot be used with pathspec"
 msgstr "-L<范围>:<文件> 不能和路径表达式共用"
 
-#: builtin/log.c:302
+#: builtin/log.c:303
 #, c-format
 msgid "Final output: %d %s\n"
 msgstr "最终输出:%d %s\n"
 
-#: builtin/log.c:564
+#: builtin/log.c:566
 #, c-format
 msgid "git show %s: bad file"
 msgstr "git show %s: 损坏的文件"
 
-#: builtin/log.c:579 builtin/log.c:674
+#: builtin/log.c:581 builtin/log.c:671
 #, c-format
 msgid "could not read object %s"
 msgstr "不能读取对象 %s"
 
-#: builtin/log.c:699
+#: builtin/log.c:696
 #, c-format
 msgid "unknown type: %d"
 msgstr "未知类型:%d"
 
-#: builtin/log.c:848
+#: builtin/log.c:841
 #, c-format
 msgid "%s: invalid cover from description mode"
 msgstr "%s:从描述生成附函的模式无效"
 
-#: builtin/log.c:855
+#: builtin/log.c:848
 msgid "format.headers without value"
 msgstr "format.headers 没有值"
 
-#: builtin/log.c:984
+#: builtin/log.c:977
 #, c-format
 msgid "cannot open patch file %s"
 msgstr "无法打开补丁文件 %s"
 
-#: builtin/log.c:1001
+#: builtin/log.c:994
 msgid "need exactly one range"
 msgstr "只需要一个范围"
 
-#: builtin/log.c:1011
+#: builtin/log.c:1004
 msgid "not a range"
 msgstr "不是一个范围"
 
-#: builtin/log.c:1175
+#: builtin/log.c:1168
 msgid "cover letter needs email format"
 msgstr "附函需要邮件地址格式"
 
-#: builtin/log.c:1181
+#: builtin/log.c:1174
 msgid "failed to create cover-letter file"
 msgstr "无法创建附函文件"
 
-#: builtin/log.c:1262
+#: builtin/log.c:1261
 #, c-format
 msgid "insane in-reply-to: %s"
 msgstr "不正常的 in-reply-to:%s"
 
-#: builtin/log.c:1289
+#: builtin/log.c:1288
 msgid "git format-patch [<options>] [<since> | <revision-range>]"
 msgstr "git format-patch [<选项>] [<从> | <版本范围>]"
 
-#: builtin/log.c:1347
+#: builtin/log.c:1346
 msgid "two output directories?"
 msgstr "两个输出目录?"
 
-#: builtin/log.c:1498 builtin/log.c:2318 builtin/log.c:2320 builtin/log.c:2332
+#: builtin/log.c:1497 builtin/log.c:2317 builtin/log.c:2319 builtin/log.c:2331
 #, c-format
 msgid "unknown commit %s"
 msgstr "未知提交 %s"
 
-#: builtin/log.c:1509 builtin/replace.c:58 builtin/replace.c:207
+#: builtin/log.c:1508 builtin/replace.c:58 builtin/replace.c:207
 #: builtin/replace.c:210
 #, c-format
 msgid "failed to resolve '%s' as a valid ref"
 msgstr "无法将 '%s' 解析为一个有效引用"
 
-#: builtin/log.c:1518
+#: builtin/log.c:1517
 msgid "could not find exact merge base"
 msgstr "不能找到准确的合并基线"
 
-#: builtin/log.c:1528
+#: builtin/log.c:1527
 msgid ""
 "failed to get upstream, if you want to record base commit automatically,\n"
 "please use git branch --set-upstream-to to track a remote branch.\n"
@@ -16172,393 +16480,397 @@ msgstr ""
 "git branch --set-upstream-to 来跟踪一个远程分支。或者你可以通过\n"
 "参数 --base=<基线提交> 手动指定一个基线提交"
 
-#: builtin/log.c:1551
+#: builtin/log.c:1550
 msgid "failed to find exact merge base"
 msgstr "无法找到准确的合并基线"
 
-#: builtin/log.c:1568
+#: builtin/log.c:1567
 msgid "base commit should be the ancestor of revision list"
 msgstr "基线提交应该是版本列表的祖先"
 
-#: builtin/log.c:1578
+#: builtin/log.c:1577
 msgid "base commit shouldn't be in revision list"
 msgstr "基线提交不应该出现在版本列表中"
 
-#: builtin/log.c:1636
+#: builtin/log.c:1635
 msgid "cannot get patch id"
 msgstr "无法得到补丁 id"
 
-#: builtin/log.c:1693
+#: builtin/log.c:1692
 msgid "failed to infer range-diff origin of current series"
 msgstr "无法推断当前系列的 range-diff 起始"
 
-#: builtin/log.c:1695
+#: builtin/log.c:1694
 #, c-format
 msgid "using '%s' as range-diff origin of current series"
 msgstr "使用 '%s' 作为当前系列的 range-diff 源"
 
-#: builtin/log.c:1739
+#: builtin/log.c:1738
 msgid "use [PATCH n/m] even with a single patch"
 msgstr "使用 [PATCH n/m],即使只有一个补丁"
 
-#: builtin/log.c:1742
+#: builtin/log.c:1741
 msgid "use [PATCH] even with multiple patches"
 msgstr "使用 [PATCH],即使有多个补丁"
 
-#: builtin/log.c:1746
+#: builtin/log.c:1745
 msgid "print patches to standard out"
 msgstr "打印补丁到标准输出"
 
-#: builtin/log.c:1748
+#: builtin/log.c:1747
 msgid "generate a cover letter"
 msgstr "生成一封附函"
 
-#: builtin/log.c:1750
+#: builtin/log.c:1749
 msgid "use simple number sequence for output file names"
 msgstr "使用简单的数字序列作为输出文件名"
 
-#: builtin/log.c:1751
+#: builtin/log.c:1750
 msgid "sfx"
 msgstr "后缀"
 
-#: builtin/log.c:1752
+#: builtin/log.c:1751
 msgid "use <sfx> instead of '.patch'"
 msgstr "使用 <后缀> 代替 '.patch'"
 
-#: builtin/log.c:1754
+#: builtin/log.c:1753
 msgid "start numbering patches at <n> instead of 1"
 msgstr "补丁以 <n> 开始编号,而不是1"
 
-#: builtin/log.c:1756
+#: builtin/log.c:1755
 msgid "mark the series as Nth re-roll"
 msgstr "标记补丁系列是第几次重制"
 
-#: builtin/log.c:1758
+#: builtin/log.c:1757
 msgid "max length of output filename"
 msgstr "输出文件名的最大长度"
 
-#: builtin/log.c:1760
-msgid "Use [RFC PATCH] instead of [PATCH]"
+#: builtin/log.c:1759
+msgid "use [RFC PATCH] instead of [PATCH]"
 msgstr "使用 [RFC PATCH] 代替 [PATCH]"
 
-#: builtin/log.c:1763
+#: builtin/log.c:1762
 msgid "cover-from-description-mode"
 msgstr "从分支描述获取附函的模式"
 
-#: builtin/log.c:1764
+#: builtin/log.c:1763
 msgid "generate parts of a cover letter based on a branch's description"
 msgstr "基于一个分支描述生成部分附函"
 
-#: builtin/log.c:1766
-msgid "Use [<prefix>] instead of [PATCH]"
+#: builtin/log.c:1765
+msgid "use [<prefix>] instead of [PATCH]"
 msgstr "使用 [<前缀>] 代替 [PATCH]"
 
-#: builtin/log.c:1769
+#: builtin/log.c:1768
 msgid "store resulting files in <dir>"
 msgstr "把结果文件存储在 <目录>"
 
-#: builtin/log.c:1772
+#: builtin/log.c:1771
 msgid "don't strip/add [PATCH]"
 msgstr "不删除/添加 [PATCH]"
 
-#: builtin/log.c:1775
+#: builtin/log.c:1774
 msgid "don't output binary diffs"
 msgstr "不输出二进制差异"
 
-#: builtin/log.c:1777
+#: builtin/log.c:1776
 msgid "output all-zero hash in From header"
 msgstr "在 From 头信息中输出全为零的哈希值"
 
-#: builtin/log.c:1779
+#: builtin/log.c:1778
 msgid "don't include a patch matching a commit upstream"
 msgstr "不包含已在上游提交中的补丁"
 
-#: builtin/log.c:1781
+#: builtin/log.c:1780
 msgid "show patch format instead of default (patch + stat)"
 msgstr "显示纯补丁格式而非默认的(补丁+状态)"
 
-#: builtin/log.c:1783
+#: builtin/log.c:1782
 msgid "Messaging"
 msgstr "邮件发送"
 
-#: builtin/log.c:1784
+#: builtin/log.c:1783
 msgid "header"
 msgstr "header"
 
-#: builtin/log.c:1785
+#: builtin/log.c:1784
 msgid "add email header"
 msgstr "添加邮件头"
 
-#: builtin/log.c:1786 builtin/log.c:1787
+#: builtin/log.c:1785 builtin/log.c:1786
 msgid "email"
 msgstr "邮件地址"
 
-#: builtin/log.c:1786
+#: builtin/log.c:1785
 msgid "add To: header"
 msgstr "添加收件人"
 
-#: builtin/log.c:1787
+#: builtin/log.c:1786
 msgid "add Cc: header"
 msgstr "添加抄送"
 
-#: builtin/log.c:1788
+#: builtin/log.c:1787
 msgid "ident"
 msgstr "标识"
 
-#: builtin/log.c:1789
+#: builtin/log.c:1788
 msgid "set From address to <ident> (or committer ident if absent)"
 msgstr "将 From 地址设置为 <标识>(如若不提供,则用提交者 ID 做为地址)"
 
-#: builtin/log.c:1791
+#: builtin/log.c:1790
 msgid "message-id"
 msgstr "邮件标识"
 
-#: builtin/log.c:1792
+#: builtin/log.c:1791
 msgid "make first mail a reply to <message-id>"
 msgstr "使第一封邮件作为对 <邮件标识> 的回复"
 
-#: builtin/log.c:1793 builtin/log.c:1796
+#: builtin/log.c:1792 builtin/log.c:1795
 msgid "boundary"
 msgstr "边界"
 
-#: builtin/log.c:1794
+#: builtin/log.c:1793
 msgid "attach the patch"
 msgstr "附件方式添加补丁"
 
-#: builtin/log.c:1797
+#: builtin/log.c:1796
 msgid "inline the patch"
 msgstr "内联显示补丁"
 
-#: builtin/log.c:1801
+#: builtin/log.c:1800
 msgid "enable message threading, styles: shallow, deep"
 msgstr "启用邮件线索,风格:浅,深"
 
-#: builtin/log.c:1803
+#: builtin/log.c:1802
 msgid "signature"
 msgstr "签名"
 
-#: builtin/log.c:1804
+#: builtin/log.c:1803
 msgid "add a signature"
 msgstr "添加一个签名"
 
-#: builtin/log.c:1805
+#: builtin/log.c:1804
 msgid "base-commit"
 msgstr "基线提交"
 
-#: builtin/log.c:1806
+#: builtin/log.c:1805
 msgid "add prerequisite tree info to the patch series"
 msgstr "为补丁列表添加前置树信息"
 
-#: builtin/log.c:1809
+#: builtin/log.c:1808
 msgid "add a signature from a file"
 msgstr "从文件添加一个签名"
 
-#: builtin/log.c:1810
+#: builtin/log.c:1809
 msgid "don't print the patch filenames"
 msgstr "不要打印补丁文件名"
 
-#: builtin/log.c:1812
+#: builtin/log.c:1811
 msgid "show progress while generating patches"
 msgstr "在生成补丁时显示进度"
 
-#: builtin/log.c:1814
+#: builtin/log.c:1813
 msgid "show changes against <rev> in cover letter or single patch"
 msgstr "在附函或单个补丁中显示和 <rev> 的差异"
 
-#: builtin/log.c:1817
+#: builtin/log.c:1816
 msgid "show changes against <refspec> in cover letter or single patch"
 msgstr "在附函或单个补丁中显示和 <refspec> 的差异"
 
-#: builtin/log.c:1819
+#: builtin/log.c:1818
 msgid "percentage by which creation is weighted"
 msgstr "创建权重的百分比"
 
-#: builtin/log.c:1905
+#: builtin/log.c:1904
 #, c-format
 msgid "invalid ident line: %s"
 msgstr "包含无效的身份标识:%s"
 
-#: builtin/log.c:1920
+#: builtin/log.c:1919
 msgid "-n and -k are mutually exclusive"
 msgstr "-n 和 -k 互斥"
 
-#: builtin/log.c:1922
+#: builtin/log.c:1921
 msgid "--subject-prefix/--rfc and -k are mutually exclusive"
 msgstr "--subject-prefix/--rfc 和 -k 互斥"
 
-#: builtin/log.c:1930
+#: builtin/log.c:1929
 msgid "--name-only does not make sense"
 msgstr "--name-only 无意义"
 
-#: builtin/log.c:1932
+#: builtin/log.c:1931
 msgid "--name-status does not make sense"
 msgstr "--name-status 无意义"
 
-#: builtin/log.c:1934
+#: builtin/log.c:1933
 msgid "--check does not make sense"
 msgstr "--check 无意义"
 
-#: builtin/log.c:1956
+#: builtin/log.c:1955
 msgid "--stdout, --output, and --output-directory are mutually exclusive"
 msgstr "--stdout、--output 和 --output-directory 是互斥的"
 
-#: builtin/log.c:2079
+#: builtin/log.c:2078
 msgid "--interdiff requires --cover-letter or single patch"
 msgstr "--interdiff 需要 --cover-letter 或单一补丁"
 
-#: builtin/log.c:2083
+#: builtin/log.c:2082
 msgid "Interdiff:"
 msgstr "版本间差异:"
 
-#: builtin/log.c:2084
+#: builtin/log.c:2083
 #, c-format
 msgid "Interdiff against v%d:"
 msgstr "对 v%d 的版本差异:"
 
-#: builtin/log.c:2090
+#: builtin/log.c:2089
 msgid "--creation-factor requires --range-diff"
 msgstr "--creation-factor 需要 --range-diff"
 
-#: builtin/log.c:2094
+#: builtin/log.c:2093
 msgid "--range-diff requires --cover-letter or single patch"
 msgstr "--range-diff 需要 --cover-letter 或单一补丁"
 
-#: builtin/log.c:2102
+#: builtin/log.c:2101
 msgid "Range-diff:"
 msgstr "范围差异:"
 
-#: builtin/log.c:2103
+#: builtin/log.c:2102
 #, c-format
 msgid "Range-diff against v%d:"
 msgstr "对 v%d 的范围差异:"
 
-#: builtin/log.c:2114
+#: builtin/log.c:2113
 #, c-format
 msgid "unable to read signature file '%s'"
 msgstr "无法读取签名文件 '%s'"
 
-#: builtin/log.c:2150
+#: builtin/log.c:2149
 msgid "Generating patches"
 msgstr "生成补丁"
 
-#: builtin/log.c:2194
+#: builtin/log.c:2193
 msgid "failed to create output files"
 msgstr "无法创建输出文件"
 
-#: builtin/log.c:2253
+#: builtin/log.c:2252
 msgid "git cherry [-v] [<upstream> [<head> [<limit>]]]"
 msgstr "git cherry [-v] [<上游> [<头> [<限制>]]]"
 
-#: builtin/log.c:2307
+#: builtin/log.c:2306
 #, c-format
 msgid ""
 "Could not find a tracked remote branch, please specify <upstream> manually.\n"
 msgstr "不能找到跟踪的远程分支,请手工指定 <上游>。\n"
 
-#: builtin/ls-files.c:471
+#: builtin/ls-files.c:486
 msgid "git ls-files [<options>] [<file>...]"
 msgstr "git ls-files [<选项>] [<文件>...]"
 
-#: builtin/ls-files.c:527
+#: builtin/ls-files.c:542
 msgid "identify the file status with tags"
 msgstr "用标签标识文件的状态"
 
-#: builtin/ls-files.c:529
+#: builtin/ls-files.c:544
 msgid "use lowercase letters for 'assume unchanged' files"
 msgstr "使用小写字母表示 '假设未改变的' 文件"
 
-#: builtin/ls-files.c:531
+#: builtin/ls-files.c:546
 msgid "use lowercase letters for 'fsmonitor clean' files"
 msgstr "使用小写字母表示 'fsmonitor clean' 文件"
 
-#: builtin/ls-files.c:533
+#: builtin/ls-files.c:548
 msgid "show cached files in the output (default)"
 msgstr "显示缓存的文件(默认)"
 
-#: builtin/ls-files.c:535
+#: builtin/ls-files.c:550
 msgid "show deleted files in the output"
 msgstr "显示已删除的文件"
 
-#: builtin/ls-files.c:537
+#: builtin/ls-files.c:552
 msgid "show modified files in the output"
 msgstr "显示已修改的文件"
 
-#: builtin/ls-files.c:539
+#: builtin/ls-files.c:554
 msgid "show other files in the output"
 msgstr "显示其它文件"
 
-#: builtin/ls-files.c:541
+#: builtin/ls-files.c:556
 msgid "show ignored files in the output"
 msgstr "显示忽略的文件"
 
-#: builtin/ls-files.c:544
+#: builtin/ls-files.c:559
 msgid "show staged contents' object name in the output"
 msgstr "显示暂存区内容的对象名称"
 
-#: builtin/ls-files.c:546
+#: builtin/ls-files.c:561
 msgid "show files on the filesystem that need to be removed"
 msgstr "显示文件系统需要删除的文件"
 
-#: builtin/ls-files.c:548
+#: builtin/ls-files.c:563
 msgid "show 'other' directories' names only"
 msgstr "只显示“其他”目录的名称"
 
-#: builtin/ls-files.c:550
+#: builtin/ls-files.c:565
 msgid "show line endings of files"
 msgstr "显示文件换行符格式"
 
-#: builtin/ls-files.c:552
+#: builtin/ls-files.c:567
 msgid "don't show empty directories"
 msgstr "不显示空目录"
 
-#: builtin/ls-files.c:555
+#: builtin/ls-files.c:570
 msgid "show unmerged files in the output"
 msgstr "显示未合并的文件"
 
-#: builtin/ls-files.c:557
+#: builtin/ls-files.c:572
 msgid "show resolve-undo information"
 msgstr "显示 resolve-undo 信息"
 
-#: builtin/ls-files.c:559
+#: builtin/ls-files.c:574
 msgid "skip files matching pattern"
 msgstr "跳过和模式匹配的文件"
 
-#: builtin/ls-files.c:562
+#: builtin/ls-files.c:577
 msgid "exclude patterns are read from <file>"
 msgstr "从 <文件> 中读取排除模式"
 
-#: builtin/ls-files.c:565
+#: builtin/ls-files.c:580
 msgid "read additional per-directory exclude patterns in <file>"
 msgstr "从 <文件> 读取额外的每个目录的排除模式"
 
-#: builtin/ls-files.c:567
+#: builtin/ls-files.c:582
 msgid "add the standard git exclusions"
 msgstr "添加标准的 git 排除"
 
-#: builtin/ls-files.c:571
+#: builtin/ls-files.c:586
 msgid "make the output relative to the project top directory"
 msgstr "显示相对于顶级目录的文件名"
 
-#: builtin/ls-files.c:574
+#: builtin/ls-files.c:589
 msgid "recurse through submodules"
 msgstr "在子模组中递归"
 
-#: builtin/ls-files.c:576
+#: builtin/ls-files.c:591
 msgid "if any <file> is not in the index, treat this as an error"
 msgstr "如果任何 <文件> 都不在索引区,视为错误"
 
-#: builtin/ls-files.c:577
+#: builtin/ls-files.c:592
 msgid "tree-ish"
 msgstr "树对象"
 
-#: builtin/ls-files.c:578
+#: builtin/ls-files.c:593
 msgid "pretend that paths removed since <tree-ish> are still present"
 msgstr "假装自从 <树对象> 之后删除的路径仍然存在"
 
-#: builtin/ls-files.c:580
+#: builtin/ls-files.c:595
 msgid "show debugging data"
 msgstr "显示调试数据"
 
+#: builtin/ls-files.c:597
+msgid "suppress duplicate entries"
+msgstr "抑制重复条目"
+
 #: builtin/ls-remote.c:9
 msgid ""
 "git ls-remote [--heads] [--tags] [--refs] [--upload-pack=<exec>]\n"
@@ -16569,39 +16881,39 @@ msgstr ""
 "                     [-q | --quiet] [--exit-code] [--get-url]\n"
 "                     [--symref] [<仓库> [<引用>...]]"
 
-#: builtin/ls-remote.c:59
+#: builtin/ls-remote.c:60
 msgid "do not print remote URL"
 msgstr "不打印远程 URL"
 
-#: builtin/ls-remote.c:60 builtin/ls-remote.c:62 builtin/rebase.c:1398
+#: builtin/ls-remote.c:61 builtin/ls-remote.c:63 builtin/rebase.c:1404
 msgid "exec"
 msgstr "exec"
 
-#: builtin/ls-remote.c:61 builtin/ls-remote.c:63
+#: builtin/ls-remote.c:62 builtin/ls-remote.c:64
 msgid "path of git-upload-pack on the remote host"
 msgstr "远程主机上的 git-upload-pack 路径"
 
-#: builtin/ls-remote.c:65
+#: builtin/ls-remote.c:66
 msgid "limit to tags"
 msgstr "仅限于标签"
 
-#: builtin/ls-remote.c:66
+#: builtin/ls-remote.c:67
 msgid "limit to heads"
 msgstr "仅限于分支"
 
-#: builtin/ls-remote.c:67
+#: builtin/ls-remote.c:68
 msgid "do not show peeled tags"
 msgstr "不显示已解析的标签"
 
-#: builtin/ls-remote.c:69
+#: builtin/ls-remote.c:70
 msgid "take url.<base>.insteadOf into account"
 msgstr "参考 url.<base>.insteadOf 设置"
 
-#: builtin/ls-remote.c:72
+#: builtin/ls-remote.c:73
 msgid "exit with exit code 2 if no matching refs are found"
 msgstr "若未找到匹配的引用则以退出码2退出"
 
-#: builtin/ls-remote.c:75
+#: builtin/ls-remote.c:76
 msgid "show underlying ref in addition to the object pointed by it"
 msgstr "除了显示指向的对象外,显示指向的引用名"
 
@@ -16757,191 +17069,191 @@ msgstr "无法解析引用 '%s'"
 msgid "Merging %s with %s\n"
 msgstr "合并 %s 和 %s\n"
 
-#: builtin/merge.c:57
+#: builtin/merge.c:58
 msgid "git merge [<options>] [<commit>...]"
 msgstr "git merge [<选项>] [<提交>...]"
 
-#: builtin/merge.c:58
+#: builtin/merge.c:59
 msgid "git merge --abort"
 msgstr "git merge --abort"
 
-#: builtin/merge.c:59
+#: builtin/merge.c:60
 msgid "git merge --continue"
 msgstr "git merge --continue"
 
-#: builtin/merge.c:122
+#: builtin/merge.c:123
 msgid "switch `m' requires a value"
 msgstr "开关 `m' 需要一个值"
 
-#: builtin/merge.c:145
+#: builtin/merge.c:146
 #, c-format
 msgid "option `%s' requires a value"
 msgstr "选项 `%s' 需要一个值"
 
-#: builtin/merge.c:198
+#: builtin/merge.c:199
 #, c-format
 msgid "Could not find merge strategy '%s'.\n"
 msgstr "不能找到合并策略 '%s'。\n"
 
-#: builtin/merge.c:199
+#: builtin/merge.c:200
 #, c-format
 msgid "Available strategies are:"
 msgstr "可用的策略有:"
 
-#: builtin/merge.c:204
+#: builtin/merge.c:205
 #, c-format
 msgid "Available custom strategies are:"
 msgstr "可用的自定义策略有:"
 
-#: builtin/merge.c:255 builtin/pull.c:133
+#: builtin/merge.c:256 builtin/pull.c:133
 msgid "do not show a diffstat at the end of the merge"
 msgstr "在合并的最后不显示差异统计"
 
-#: builtin/merge.c:258 builtin/pull.c:136
+#: builtin/merge.c:259 builtin/pull.c:136
 msgid "show a diffstat at the end of the merge"
 msgstr "在合并的最后显示差异统计"
 
-#: builtin/merge.c:259 builtin/pull.c:139
+#: builtin/merge.c:260 builtin/pull.c:139
 msgid "(synonym to --stat)"
 msgstr "(和 --stat 同义)"
 
-#: builtin/merge.c:261 builtin/pull.c:142
+#: builtin/merge.c:262 builtin/pull.c:142
 msgid "add (at most <n>) entries from shortlog to merge commit message"
 msgstr "在合并提交信息中添加(最多 <n> 条)精简提交记录"
 
-#: builtin/merge.c:264 builtin/pull.c:148
+#: builtin/merge.c:265 builtin/pull.c:148
 msgid "create a single commit instead of doing a merge"
 msgstr "创建一个单独的提交而不是做一次合并"
 
-#: builtin/merge.c:266 builtin/pull.c:151
+#: builtin/merge.c:267 builtin/pull.c:151
 msgid "perform a commit if the merge succeeds (default)"
 msgstr "如果合并成功,执行一次提交(默认)"
 
-#: builtin/merge.c:268 builtin/pull.c:154
+#: builtin/merge.c:269 builtin/pull.c:154
 msgid "edit message before committing"
 msgstr "在提交前编辑提交说明"
 
-#: builtin/merge.c:270
+#: builtin/merge.c:271
 msgid "allow fast-forward (default)"
 msgstr "允许快进(默认)"
 
-#: builtin/merge.c:272 builtin/pull.c:161
+#: builtin/merge.c:273 builtin/pull.c:161
 msgid "abort if fast-forward is not possible"
 msgstr "如果不能快进就放弃合并"
 
-#: builtin/merge.c:276 builtin/pull.c:164
+#: builtin/merge.c:277 builtin/pull.c:164
 msgid "verify that the named commit has a valid GPG signature"
 msgstr "验证指定的提交是否包含一个有效的 GPG 签名"
 
-#: builtin/merge.c:277 builtin/notes.c:787 builtin/pull.c:168
-#: builtin/rebase.c:539 builtin/rebase.c:1412 builtin/revert.c:114
+#: builtin/merge.c:278 builtin/notes.c:787 builtin/pull.c:168
+#: builtin/rebase.c:541 builtin/rebase.c:1418 builtin/revert.c:114
 msgid "strategy"
 msgstr "策略"
 
-#: builtin/merge.c:278 builtin/pull.c:169
+#: builtin/merge.c:279 builtin/pull.c:169
 msgid "merge strategy to use"
 msgstr "要使用的合并策略"
 
-#: builtin/merge.c:279 builtin/pull.c:172
+#: builtin/merge.c:280 builtin/pull.c:172
 msgid "option=value"
 msgstr "option=value"
 
-#: builtin/merge.c:280 builtin/pull.c:173
+#: builtin/merge.c:281 builtin/pull.c:173
 msgid "option for selected merge strategy"
 msgstr "所选的合并策略的选项"
 
-#: builtin/merge.c:282
+#: builtin/merge.c:283
 msgid "merge commit message (for a non-fast-forward merge)"
 msgstr "合并的提交说明(针对非快进式合并)"
 
-#: builtin/merge.c:289
+#: builtin/merge.c:290
 msgid "abort the current in-progress merge"
 msgstr "放弃当前正在进行的合并"
 
 #
-#: builtin/merge.c:291
+#: builtin/merge.c:292
 msgid "--abort but leave index and working tree alone"
 msgstr "--abort,但是保留索引和工作区"
 
-#: builtin/merge.c:293
+#: builtin/merge.c:294
 msgid "continue the current in-progress merge"
 msgstr "继续当前正在进行的合并"
 
-#: builtin/merge.c:295 builtin/pull.c:180
+#: builtin/merge.c:296 builtin/pull.c:180
 msgid "allow merging unrelated histories"
 msgstr "允许合并不相关的历史"
 
-#: builtin/merge.c:302
+#: builtin/merge.c:303
 msgid "bypass pre-merge-commit and commit-msg hooks"
 msgstr "绕过 pre-merge-commit 和 commit-msg 钩子"
 
-#: builtin/merge.c:319
+#: builtin/merge.c:320
 msgid "could not run stash."
 msgstr "不能运行贮藏。"
 
-#: builtin/merge.c:324
+#: builtin/merge.c:325
 msgid "stash failed"
 msgstr "贮藏失败"
 
-#: builtin/merge.c:329
+#: builtin/merge.c:330
 #, c-format
 msgid "not a valid object: %s"
 msgstr "不是一个有效对象:%s"
 
-#: builtin/merge.c:351 builtin/merge.c:368
+#: builtin/merge.c:352 builtin/merge.c:369
 msgid "read-tree failed"
 msgstr "读取树失败"
 
 #  译者:注意保持前导空格
-#: builtin/merge.c:398
+#: builtin/merge.c:399
 msgid " (nothing to squash)"
 msgstr " (无可压缩)"
 
-#: builtin/merge.c:409
+#: builtin/merge.c:410
 #, c-format
 msgid "Squash commit -- not updating HEAD\n"
 msgstr "压缩提交 -- 未更新 HEAD\n"
 
-#: builtin/merge.c:459
+#: builtin/merge.c:460
 #, c-format
 msgid "No merge message -- not updating HEAD\n"
 msgstr "无合并信息 -- 未更新 HEAD\n"
 
-#: builtin/merge.c:510
+#: builtin/merge.c:511
 #, c-format
 msgid "'%s' does not point to a commit"
 msgstr "'%s' 没有指向一个提交"
 
-#: builtin/merge.c:597
+#: builtin/merge.c:598
 #, c-format
 msgid "Bad branch.%s.mergeoptions string: %s"
 msgstr "坏的 branch.%s.mergeoptions 字符串:%s"
 
-#: builtin/merge.c:723
+#: builtin/merge.c:724
 msgid "Not handling anything other than two heads merge."
 msgstr "未处理两个头合并之外的任何操作。"
 
-#: builtin/merge.c:736
+#: builtin/merge.c:737
 #, c-format
 msgid "Unknown option for merge-recursive: -X%s"
 msgstr "merge-recursive 的未知选项:-X%s"
 
-#: builtin/merge.c:755 t/helper/test-fast-rebase.c:209
+#: builtin/merge.c:756 t/helper/test-fast-rebase.c:209
 #, c-format
 msgid "unable to write %s"
 msgstr "不能写 %s"
 
-#: builtin/merge.c:807
+#: builtin/merge.c:808
 #, c-format
 msgid "Could not read from '%s'"
 msgstr "不能从 '%s' 读取"
 
-#: builtin/merge.c:816
+#: builtin/merge.c:817
 #, c-format
 msgid "Not committing merge; use 'git commit' to complete the merge.\n"
 msgstr "未提交合并,使用 'git commit' 完成此次合并。\n"
 
-#: builtin/merge.c:822
+#: builtin/merge.c:823
 msgid ""
 "Please enter a commit message to explain why this merge is necessary,\n"
 "especially if it merges an updated upstream into a topic branch.\n"
@@ -16951,83 +17263,83 @@ msgstr ""
 "合并到主题分支。\n"
 "\n"
 
-#: builtin/merge.c:827
+#: builtin/merge.c:828
 msgid "An empty message aborts the commit.\n"
 msgstr "空的提交说明会终止提交。\n"
 
-#: builtin/merge.c:830
+#: builtin/merge.c:831
 #, c-format
 msgid ""
 "Lines starting with '%c' will be ignored, and an empty message aborts\n"
 "the commit.\n"
 msgstr "以 '%c' 开始的行将被忽略,而空的提交说明将终止提交。\n"
 
-#: builtin/merge.c:883
+#: builtin/merge.c:884
 msgid "Empty commit message."
 msgstr "空提交信息。"
 
-#: builtin/merge.c:898
+#: builtin/merge.c:899
 #, c-format
 msgid "Wonderful.\n"
 msgstr "太棒了。\n"
 
-#: builtin/merge.c:959
+#: builtin/merge.c:960
 #, c-format
 msgid "Automatic merge failed; fix conflicts and then commit the result.\n"
 msgstr "自动合并失败,修正冲突然后提交修正的结果。\n"
 
-#: builtin/merge.c:998
+#: builtin/merge.c:999
 msgid "No current branch."
 msgstr "没有当前分支。"
 
-#: builtin/merge.c:1000
+#: builtin/merge.c:1001
 msgid "No remote for the current branch."
 msgstr "当前分支没有对应的远程仓库。"
 
-#: builtin/merge.c:1002
+#: builtin/merge.c:1003
 msgid "No default upstream defined for the current branch."
 msgstr "当前分支没有定义默认的上游分支。"
 
-#: builtin/merge.c:1007
+#: builtin/merge.c:1008
 #, c-format
 msgid "No remote-tracking branch for %s from %s"
 msgstr "对于 %s 没有来自 %s 的远程跟踪分支"
 
-#: builtin/merge.c:1064
+#: builtin/merge.c:1065
 #, c-format
 msgid "Bad value '%s' in environment '%s'"
 msgstr "环境 '%2$s' 中存在坏的取值 '%1$s'"
 
-#: builtin/merge.c:1167
+#: builtin/merge.c:1168
 #, c-format
 msgid "not something we can merge in %s: %s"
 msgstr "不能在 %s 中合并:%s"
 
-#: builtin/merge.c:1201
+#: builtin/merge.c:1202
 msgid "not something we can merge"
 msgstr "不能合并"
 
-#: builtin/merge.c:1311
+#: builtin/merge.c:1312
 msgid "--abort expects no arguments"
 msgstr "--abort 不带参数"
 
-#: builtin/merge.c:1315
+#: builtin/merge.c:1316
 msgid "There is no merge to abort (MERGE_HEAD missing)."
 msgstr "没有要终止的合并(MERGE_HEAD 丢失)。"
 
-#: builtin/merge.c:1333
+#: builtin/merge.c:1334
 msgid "--quit expects no arguments"
 msgstr "--quit 不带参数"
 
-#: builtin/merge.c:1346
+#: builtin/merge.c:1347
 msgid "--continue expects no arguments"
 msgstr "--continue 不带参数"
 
-#: builtin/merge.c:1350
+#: builtin/merge.c:1351
 msgid "There is no merge in progress (MERGE_HEAD missing)."
 msgstr "没有进行中的合并(MERGE_HEAD 丢失)。"
 
-#: builtin/merge.c:1366
+#: builtin/merge.c:1367
 msgid ""
 "You have not concluded your merge (MERGE_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -17035,7 +17347,7 @@ msgstr ""
 "您尚未结束您的合并(存在 MERGE_HEAD)。\n"
 "请在合并前先提交您的修改。"
 
-#: builtin/merge.c:1373
+#: builtin/merge.c:1374
 msgid ""
 "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -17043,100 +17355,141 @@ msgstr ""
 "您尚未结束您的拣选(存在 CHERRY_PICK_HEAD)。\n"
 "请在合并前先提交您的修改。"
 
-#: builtin/merge.c:1376
+#: builtin/merge.c:1377
 msgid "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists)."
 msgstr "您尚未结束您的拣选(存在 CHERRY_PICK_HEAD)。"
 
-#: builtin/merge.c:1390
+#: builtin/merge.c:1391
 msgid "You cannot combine --squash with --no-ff."
 msgstr "您不能将 --squash 和 --no-ff 组合使用。"
 
-#: builtin/merge.c:1392
+#: builtin/merge.c:1393
 msgid "You cannot combine --squash with --commit."
 msgstr "您不能将 --squash 和 --commit 组合使用。"
 
-#: builtin/merge.c:1408
+#: builtin/merge.c:1409
 msgid "No commit specified and merge.defaultToUpstream not set."
 msgstr "未指定提交并且 merge.defaultToUpstream 未设置。"
 
-#: builtin/merge.c:1425
+#: builtin/merge.c:1426
 msgid "Squash commit into empty head not supported yet"
 msgstr "尚不支持到空分支的压缩提交"
 
-#: builtin/merge.c:1427
+#: builtin/merge.c:1428
 msgid "Non-fast-forward commit does not make sense into an empty head"
 msgstr "到空分支的非快进式提交没有意义"
 
-#: builtin/merge.c:1432
+#: builtin/merge.c:1433
 #, c-format
 msgid "%s - not something we can merge"
 msgstr "%s - 不能被合并"
 
-#: builtin/merge.c:1434
+#: builtin/merge.c:1435
 msgid "Can merge only exactly one commit into empty head"
 msgstr "只能将一个提交合并到空分支上"
 
-#: builtin/merge.c:1515
+#: builtin/merge.c:1516
 msgid "refusing to merge unrelated histories"
 msgstr "拒绝合并无关的历史"
 
-#: builtin/merge.c:1524
+#: builtin/merge.c:1525
 msgid "Already up to date."
 msgstr "已经是最新的。"
 
-#: builtin/merge.c:1534
+#: builtin/merge.c:1535
 #, c-format
 msgid "Updating %s..%s\n"
 msgstr "更新 %s..%s\n"
 
-#: builtin/merge.c:1580
+#: builtin/merge.c:1581
 #, c-format
 msgid "Trying really trivial in-index merge...\n"
 msgstr "尝试非常小的索引内合并...\n"
 
-#: builtin/merge.c:1587
+#: builtin/merge.c:1588
 #, c-format
 msgid "Nope.\n"
 msgstr "无。\n"
 
-#: builtin/merge.c:1612
+#: builtin/merge.c:1613
 msgid "Already up to date. Yeeah!"
 msgstr "已经是最新的。耶!"
 
-#: builtin/merge.c:1618
+#: builtin/merge.c:1619
 msgid "Not possible to fast-forward, aborting."
 msgstr "无法快进,终止。"
 
-#: builtin/merge.c:1646 builtin/merge.c:1711
+#: builtin/merge.c:1647 builtin/merge.c:1712
 #, c-format
 msgid "Rewinding the tree to pristine...\n"
 msgstr "将树回滚至原始状态...\n"
 
-#: builtin/merge.c:1650
+#: builtin/merge.c:1651
 #, c-format
 msgid "Trying merge strategy %s...\n"
 msgstr "尝试合并策略 %s...\n"
 
-#: builtin/merge.c:1702
+#: builtin/merge.c:1703
 #, c-format
 msgid "No merge strategy handled the merge.\n"
 msgstr "没有合并策略处理此合并。\n"
 
-#: builtin/merge.c:1704
+#: builtin/merge.c:1705
 #, c-format
 msgid "Merge with strategy %s failed.\n"
 msgstr "使用策略 %s 合并失败。\n"
 
-#: builtin/merge.c:1713
+#: builtin/merge.c:1714
 #, c-format
 msgid "Using the %s to prepare resolving by hand.\n"
 msgstr "使用 %s 以准备手工解决。\n"
 
-#: builtin/merge.c:1727
+#: builtin/merge.c:1728
 #, c-format
 msgid "Automatic merge went well; stopped before committing as requested\n"
 msgstr "自动合并进展顺利,按要求在提交前停止\n"
 
+#: builtin/mktag.c:10
+msgid "git mktag"
+msgstr "git mktag"
+
+#: builtin/mktag.c:30
+#, c-format
+msgid "warning: tag input does not pass fsck: %s"
+msgstr "警告:标签输入未通过 fsck:%s"
+
+#: builtin/mktag.c:41
+#, c-format
+msgid "error: tag input does not pass fsck: %s"
+msgstr "错误:标签输入未通过 fsck:%s"
+
+#: builtin/mktag.c:44
+#, c-format
+msgid "%d (FSCK_IGNORE?) should never trigger this callback"
+msgstr "%d(忽略 FSCK?)不应该触发这个调用"
+
+#: builtin/mktag.c:59
+#, c-format
+msgid "could not read tagged object '%s'"
+msgstr "不能读取被标记的对象 '%s'"
+
+#: builtin/mktag.c:62
+#, c-format
+msgid "object '%s' tagged as '%s', but is a '%s' type"
+msgstr "对象 '%s' 被标记为 '%s',然而是一个 '%s' 类型"
+
+#: builtin/mktag.c:99
+msgid "tag on stdin did not pass our strict fsck check"
+msgstr "标准输入上的标签未通过我们严格的 fsck 检查"
+
+#: builtin/mktag.c:102
+msgid "tag on stdin did not refer to a valid object"
+msgstr "标准输入上的标签未指向一个有效的对象"
+
+#: builtin/mktag.c:105 builtin/tag.c:232
+msgid "unable to write tag file"
+msgstr "无法写标签文件"
+
 #: builtin/mktree.c:66
 msgid "git mktree [-z] [--missing] [--batch]"
 msgstr "git mktree [-z] [--missing] [--batch]"
@@ -17171,7 +17524,10 @@ msgid ""
 "larger than this size"
 msgstr "在 repack 期间,将较小尺寸的包文件收集到大于此大小的批次中"
 
-#: builtin/multi-pack-index.c:50 builtin/prune-packed.c:25
+#: builtin/multi-pack-index.c:50 builtin/notes.c:376 builtin/notes.c:431
+#: builtin/notes.c:509 builtin/notes.c:521 builtin/notes.c:598
+#: builtin/notes.c:665 builtin/notes.c:815 builtin/notes.c:963
+#: builtin/notes.c:985 builtin/prune-packed.c:25 builtin/tag.c:575
 msgid "too many arguments"
 msgstr "太多参数"
 
@@ -17275,7 +17631,7 @@ msgstr "%s,源=%s,目标=%s"
 msgid "Renaming %s to %s\n"
 msgstr "重命名 %s 至 %s\n"
 
-#: builtin/mv.c:280 builtin/remote.c:785 builtin/repack.c:484
+#: builtin/mv.c:280 builtin/remote.c:785 builtin/repack.c:483
 #, c-format
 msgid "renaming '%s' failed"
 msgstr "重命名 '%s' 失败"
@@ -17464,7 +17820,7 @@ msgstr "不能写注解对象"
 msgid "the note contents have been left in %s"
 msgstr "注解内容被留在 %s 中"
 
-#: builtin/notes.c:242 builtin/tag.c:533
+#: builtin/notes.c:242 builtin/tag.c:565
 #, c-format
 msgid "could not open or read '%s'"
 msgstr "不能打开或读取 '%s'"
@@ -17504,12 +17860,6 @@ msgstr "从 '%s' 拷贝注解到 '%s' 时失败"
 msgid "refusing to %s notes in %s (outside of refs/notes/)"
 msgstr "拒绝向 %2$s(在 refs/notes/ 之外)%1$s注解"
 
-#: builtin/notes.c:376 builtin/notes.c:431 builtin/notes.c:509
-#: builtin/notes.c:521 builtin/notes.c:598 builtin/notes.c:665
-#: builtin/notes.c:815 builtin/notes.c:963 builtin/notes.c:985
-msgid "too many parameters"
-msgstr "参数太多"
-
 #: builtin/notes.c:389 builtin/notes.c:678
 #, c-format
 msgid "no note found for object %s."
@@ -17565,7 +17915,7 @@ msgid "load rewriting config for <command> (implies --stdin)"
 msgstr "重新加载 <命令> 的配置(隐含 --stdin)"
 
 #: builtin/notes.c:517
-msgid "too few parameters"
+msgid "too few arguments"
 msgstr "参数太少"
 
 #: builtin/notes.c:538
@@ -17689,7 +18039,7 @@ msgstr ""
 "自动合并说明失败。修改 %s 中的冲突并且使用命令 'git notes merge --commit' 提"
 "交结果,或者使用命令 'git notes merge --abort' 终止合并。\n"
 
-#: builtin/notes.c:897 builtin/tag.c:546
+#: builtin/notes.c:897 builtin/tag.c:578
 #, c-format
 msgid "Failed to resolve '%s' as a valid ref."
 msgstr "无法解析 '%s' 为一个有效引用。"
@@ -17707,7 +18057,7 @@ msgstr "尝试删除不存在的注解不是一个错误"
 msgid "read object names from the standard input"
 msgstr "从标准输入读取对象名称"
 
-#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:220
+#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:148
 msgid "do not remove, show only"
 msgstr "不删除,只显示"
 
@@ -17723,7 +18073,7 @@ msgstr "注解引用"
 msgid "use notes from <notes-ref>"
 msgstr "从 <注解引用> 使用注解"
 
-#: builtin/notes.c:1034 builtin/stash.c:1604
+#: builtin/notes.c:1034 builtin/stash.c:1671
 #, c-format
 msgid "unknown subcommand: %s"
 msgstr "未知子命令:%s"
@@ -17738,101 +18088,113 @@ msgid ""
 "git pack-objects [<options>...] <base-name> [< <ref-list> | < <object-list>]"
 msgstr "git pack-objects [<选项>...] <前缀名称> [< <引用列表> | < <对象列表>]"
 
-#: builtin/pack-objects.c:443
+#: builtin/pack-objects.c:440
+#, c-format
+msgid ""
+"write_reuse_object: could not locate %s, expected at offset %<PRIuMAX> in "
+"pack %s"
+msgstr "write_reuse_object:无法定位 %1$s,预期在包 %3$s 中的偏移量 %2$<PRIuMAX> 上"
+
+#: builtin/pack-objects.c:448
 #, c-format
 msgid "bad packed object CRC for %s"
 msgstr "%s 错的包对象 CRC"
 
-#: builtin/pack-objects.c:454
+#: builtin/pack-objects.c:459
 #, c-format
 msgid "corrupt packed object for %s"
 msgstr "%s 损坏的包对象"
 
-#: builtin/pack-objects.c:585
+#: builtin/pack-objects.c:590
 #, c-format
 msgid "recursive delta detected for object %s"
 msgstr "发现对象 %s 递归 delta"
 
-#: builtin/pack-objects.c:796
+#: builtin/pack-objects.c:801
 #, c-format
 msgid "ordered %u objects, expected %<PRIu32>"
 msgstr "排序了 %u 个对象,预期 %<PRIu32> 个"
 
-#: builtin/pack-objects.c:1004
+#: builtin/pack-objects.c:896
+#, c-format
+msgid "expected object at offset %<PRIuMAX> in pack %s"
+msgstr "预期对象在包文件 %2$s 的偏移量 %1$<PRIuMAX> 上"
+
+#: builtin/pack-objects.c:1015
 msgid "disabling bitmap writing, packs are split due to pack.packSizeLimit"
 msgstr "禁用 bitmap 写入,因为 pack.packSizeLimit 设置使得包被切分为多个"
 
-#: builtin/pack-objects.c:1017
+#: builtin/pack-objects.c:1028
 msgid "Writing objects"
 msgstr "写入对象中"
 
-#: builtin/pack-objects.c:1078 builtin/update-index.c:90
+#: builtin/pack-objects.c:1089 builtin/update-index.c:90
 #, c-format
 msgid "failed to stat %s"
 msgstr "对 %s 调用 stat 失败"
 
-#: builtin/pack-objects.c:1131
+#: builtin/pack-objects.c:1141
 #, c-format
 msgid "wrote %<PRIu32> objects while expecting %<PRIu32>"
 msgstr "写入 %<PRIu32> 个对象而预期 %<PRIu32> 个"
 
-#: builtin/pack-objects.c:1348
+#: builtin/pack-objects.c:1358
 msgid "disabling bitmap writing, as some objects are not being packed"
 msgstr "禁用 bitmap 写入,因为一些对象将不会被打包"
 
-#: builtin/pack-objects.c:1796
+#: builtin/pack-objects.c:1806
 #, c-format
 msgid "delta base offset overflow in pack for %s"
 msgstr "%s 压缩中 delta 基准偏移越界"
 
-#: builtin/pack-objects.c:1805
+#: builtin/pack-objects.c:1815
 #, c-format
 msgid "delta base offset out of bound for %s"
 msgstr "%s 的 delta 基准偏移越界"
 
-#: builtin/pack-objects.c:2086
+#: builtin/pack-objects.c:2096
 msgid "Counting objects"
 msgstr "对象计数中"
 
-#: builtin/pack-objects.c:2231
+#: builtin/pack-objects.c:2241
 #, c-format
 msgid "unable to parse object header of %s"
 msgstr "无法解析对象 %s 头信息"
 
-#: builtin/pack-objects.c:2301 builtin/pack-objects.c:2317
-#: builtin/pack-objects.c:2327
+#: builtin/pack-objects.c:2311 builtin/pack-objects.c:2327
+#: builtin/pack-objects.c:2337
 #, c-format
 msgid "object %s cannot be read"
 msgstr "对象 %s 无法读取"
 
-#: builtin/pack-objects.c:2304 builtin/pack-objects.c:2331
+#: builtin/pack-objects.c:2314 builtin/pack-objects.c:2341
 #, c-format
 msgid "object %s inconsistent object length (%<PRIuMAX> vs %<PRIuMAX>)"
 msgstr "对象 %s 不一致的对象长度(%<PRIuMAX> vs %<PRIuMAX>)"
 
-#: builtin/pack-objects.c:2341
+#: builtin/pack-objects.c:2351
 msgid "suboptimal pack - out of memory"
 msgstr "次优(suboptimal)打包 - 内存不足"
 
-#: builtin/pack-objects.c:2656
+#: builtin/pack-objects.c:2666
 #, c-format
 msgid "Delta compression using up to %d threads"
 msgstr "使用 %d 个线程进行压缩"
 
-#: builtin/pack-objects.c:2795
+#: builtin/pack-objects.c:2805
 #, c-format
 msgid "unable to pack objects reachable from tag %s"
 msgstr "无法为标签 %s 压缩对象"
 
-#: builtin/pack-objects.c:2883
+#: builtin/pack-objects.c:2891
 msgid "Compressing objects"
 msgstr "压缩对象中"
 
-#: builtin/pack-objects.c:2889
+#: builtin/pack-objects.c:2897
 msgid "inconsistency with delta count"
 msgstr "不一致的差异计数"
 
-#: builtin/pack-objects.c:2961
+#: builtin/pack-objects.c:2976
 #, c-format
 msgid ""
 "value of uploadpack.blobpackfileuri must be of the form '<object-hash> <pack-"
@@ -17841,13 +18203,13 @@ msgstr ""
 "uploadpack.blobpackfileuri 的取值必须是 '<object-hash> <pack-hash> <uri>' 格"
 "式(得到 '%s')"
 
-#: builtin/pack-objects.c:2964
+#: builtin/pack-objects.c:2979
 #, c-format
 msgid ""
 "object already configured in another uploadpack.blobpackfileuri (got '%s')"
 msgstr "对象已经在另外的 uploadpack.blobpackfileuri 中配置(得到 '%s')"
 
-#: builtin/pack-objects.c:2993
+#: builtin/pack-objects.c:3008
 #, c-format
 msgid ""
 "expected edge object ID, got garbage:\n"
@@ -17856,7 +18218,7 @@ msgstr ""
 "预期边界对象(edge object)ID,却得到垃圾数据:\n"
 " %s"
 
-#: builtin/pack-objects.c:2999
+#: builtin/pack-objects.c:3014
 #, c-format
 msgid ""
 "expected object ID, got garbage:\n"
@@ -17865,234 +18227,234 @@ msgstr ""
 "预期对象 ID,却得到垃圾数据:\n"
 " %s"
 
-#: builtin/pack-objects.c:3097
+#: builtin/pack-objects.c:3112
 msgid "invalid value for --missing"
 msgstr "选项 --missing 的值无效"
 
-#: builtin/pack-objects.c:3156 builtin/pack-objects.c:3264
+#: builtin/pack-objects.c:3171 builtin/pack-objects.c:3279
 msgid "cannot open pack index"
 msgstr "无法打开包文件索引"
 
-#: builtin/pack-objects.c:3187
+#: builtin/pack-objects.c:3202
 #, c-format
 msgid "loose object at %s could not be examined"
 msgstr "无法检查 %s 处的松散对象"
 
-#: builtin/pack-objects.c:3272
+#: builtin/pack-objects.c:3287
 msgid "unable to force loose object"
 msgstr "无法强制松散对象"
 
-#: builtin/pack-objects.c:3365
+#: builtin/pack-objects.c:3380
 #, c-format
 msgid "not a rev '%s'"
 msgstr "不是一个版本 '%s'"
 
-#: builtin/pack-objects.c:3368
+#: builtin/pack-objects.c:3383
 #, c-format
 msgid "bad revision '%s'"
 msgstr "坏的版本 '%s'"
 
-#: builtin/pack-objects.c:3393
+#: builtin/pack-objects.c:3408
 msgid "unable to add recent objects"
 msgstr "无法添加最近的对象"
 
-#: builtin/pack-objects.c:3446
+#: builtin/pack-objects.c:3461
 #, c-format
 msgid "unsupported index version %s"
 msgstr "不支持的索引版本 %s"
 
-#: builtin/pack-objects.c:3450
+#: builtin/pack-objects.c:3465
 #, c-format
 msgid "bad index version '%s'"
 msgstr "坏的索引版本 '%s'"
 
-#: builtin/pack-objects.c:3488
+#: builtin/pack-objects.c:3503
 msgid "<version>[,<offset>]"
 msgstr "<版本>[,<偏移>]"
 
-#: builtin/pack-objects.c:3489
+#: builtin/pack-objects.c:3504
 msgid "write the pack index file in the specified idx format version"
 msgstr "用指定的 idx 格式版本来写包索引文件"
 
-#: builtin/pack-objects.c:3492
+#: builtin/pack-objects.c:3507
 msgid "maximum size of each output pack file"
 msgstr "每个输出包的最大尺寸"
 
-#: builtin/pack-objects.c:3494
+#: builtin/pack-objects.c:3509
 msgid "ignore borrowed objects from alternate object store"
 msgstr "忽略从备用对象存储里借用对象"
 
-#: builtin/pack-objects.c:3496
+#: builtin/pack-objects.c:3511
 msgid "ignore packed objects"
 msgstr "忽略包对象"
 
-#: builtin/pack-objects.c:3498
+#: builtin/pack-objects.c:3513
 msgid "limit pack window by objects"
 msgstr "限制打包窗口的对象数"
 
-#: builtin/pack-objects.c:3500
+#: builtin/pack-objects.c:3515
 msgid "limit pack window by memory in addition to object limit"
 msgstr "除对象数量限制外设置打包窗口的内存限制"
 
-#: builtin/pack-objects.c:3502
+#: builtin/pack-objects.c:3517
 msgid "maximum length of delta chain allowed in the resulting pack"
 msgstr "打包允许的 delta 链的最大长度"
 
-#: builtin/pack-objects.c:3504
+#: builtin/pack-objects.c:3519
 msgid "reuse existing deltas"
 msgstr "重用已存在的 deltas"
 
-#: builtin/pack-objects.c:3506
+#: builtin/pack-objects.c:3521
 msgid "reuse existing objects"
 msgstr "重用已存在的对象"
 
-#: builtin/pack-objects.c:3508
+#: builtin/pack-objects.c:3523
 msgid "use OFS_DELTA objects"
 msgstr "使用 OFS_DELTA 对象"
 
-#: builtin/pack-objects.c:3510
+#: builtin/pack-objects.c:3525
 msgid "use threads when searching for best delta matches"
 msgstr "使用线程查询最佳 delta 匹配"
 
-#: builtin/pack-objects.c:3512
+#: builtin/pack-objects.c:3527
 msgid "do not create an empty pack output"
 msgstr "不创建空的包输出"
 
-#: builtin/pack-objects.c:3514
+#: builtin/pack-objects.c:3529
 msgid "read revision arguments from standard input"
 msgstr "从标准输入读取版本号参数"
 
-#: builtin/pack-objects.c:3516
+#: builtin/pack-objects.c:3531
 msgid "limit the objects to those that are not yet packed"
 msgstr "限制那些尚未打包的对象"
 
-#: builtin/pack-objects.c:3519
+#: builtin/pack-objects.c:3534
 msgid "include objects reachable from any reference"
 msgstr "包括可以从任何引用访问到的对象"
 
-#: builtin/pack-objects.c:3522
+#: builtin/pack-objects.c:3537
 msgid "include objects referred by reflog entries"
 msgstr "包括被引用日志引用到的对象"
 
-#: builtin/pack-objects.c:3525
+#: builtin/pack-objects.c:3540
 msgid "include objects referred to by the index"
 msgstr "包括被索引引用到的对象"
 
-#: builtin/pack-objects.c:3528
+#: builtin/pack-objects.c:3543
 msgid "output pack to stdout"
 msgstr "输出包到标准输出"
 
-#: builtin/pack-objects.c:3530
+#: builtin/pack-objects.c:3545
 msgid "include tag objects that refer to objects to be packed"
 msgstr "包括那些引用了待打包对象的标签对象"
 
-#: builtin/pack-objects.c:3532
+#: builtin/pack-objects.c:3547
 msgid "keep unreachable objects"
 msgstr "维持不可达的对象"
 
-#: builtin/pack-objects.c:3534
+#: builtin/pack-objects.c:3549
 msgid "pack loose unreachable objects"
 msgstr "打包松散的不可达对象"
 
-#: builtin/pack-objects.c:3536
+#: builtin/pack-objects.c:3551
 msgid "unpack unreachable objects newer than <time>"
 msgstr "将比给定 <时间> 新的无法访问的对象解包"
 
-#: builtin/pack-objects.c:3539
+#: builtin/pack-objects.c:3554
 msgid "use the sparse reachability algorithm"
 msgstr "使用稀疏可达性算法"
 
-#: builtin/pack-objects.c:3541
+#: builtin/pack-objects.c:3556
 msgid "create thin packs"
 msgstr "创建精简包"
 
-#: builtin/pack-objects.c:3543
+#: builtin/pack-objects.c:3558
 msgid "create packs suitable for shallow fetches"
 msgstr "创建适合浅克隆仓库获取的包"
 
-#: builtin/pack-objects.c:3545
+#: builtin/pack-objects.c:3560
 msgid "ignore packs that have companion .keep file"
 msgstr "忽略配有 .keep 文件的包"
 
-#: builtin/pack-objects.c:3547
+#: builtin/pack-objects.c:3562
 msgid "ignore this pack"
 msgstr "忽略该 pack"
 
-#: builtin/pack-objects.c:3549
+#: builtin/pack-objects.c:3564
 msgid "pack compression level"
 msgstr "打包压缩级别"
 
-#: builtin/pack-objects.c:3551
+#: builtin/pack-objects.c:3566
 msgid "do not hide commits by grafts"
 msgstr "显示被移植隐藏的提交"
 
-#: builtin/pack-objects.c:3553
+#: builtin/pack-objects.c:3568
 msgid "use a bitmap index if available to speed up counting objects"
 msgstr "使用 bitmap 索引(如果有的话)以提高对象计数时的速度"
 
-#: builtin/pack-objects.c:3555
+#: builtin/pack-objects.c:3570
 msgid "write a bitmap index together with the pack index"
 msgstr "在建立包索引的同时创建 bitmap 索引"
 
-#: builtin/pack-objects.c:3559
+#: builtin/pack-objects.c:3574
 msgid "write a bitmap index if possible"
 msgstr "如果可能,写 bitmap 索引"
 
-#: builtin/pack-objects.c:3563
+#: builtin/pack-objects.c:3578
 msgid "handling for missing objects"
 msgstr "处理丢失的对象"
 
-#: builtin/pack-objects.c:3566
+#: builtin/pack-objects.c:3581
 msgid "do not pack objects in promisor packfiles"
 msgstr "不要打包 promisor 包文件中的对象"
 
-#: builtin/pack-objects.c:3568
+#: builtin/pack-objects.c:3583
 msgid "respect islands during delta compression"
 msgstr "在增量压缩时参考数据岛"
 
-#: builtin/pack-objects.c:3570
+#: builtin/pack-objects.c:3585
 msgid "protocol"
 msgstr "协议"
 
-#: builtin/pack-objects.c:3571
+#: builtin/pack-objects.c:3586
 msgid "exclude any configured uploadpack.blobpackfileuri with this protocol"
 msgstr "使用此协议排除任何已配置的 uploadpack.blobpackfileuri"
 
-#: builtin/pack-objects.c:3600
+#: builtin/pack-objects.c:3617
 #, c-format
 msgid "delta chain depth %d is too deep, forcing %d"
 msgstr "增量链深度 %d 太深了,强制为 %d"
 
-#: builtin/pack-objects.c:3605
+#: builtin/pack-objects.c:3622
 #, c-format
 msgid "pack.deltaCacheLimit is too high, forcing %d"
 msgstr "配置 pack.deltaCacheLimit 太高了,强制为 %d"
 
-#: builtin/pack-objects.c:3659
+#: builtin/pack-objects.c:3676
 msgid "--max-pack-size cannot be used to build a pack for transfer"
 msgstr "不能使用 --max-pack-size 来构建传输用的包文件"
 
-#: builtin/pack-objects.c:3661
+#: builtin/pack-objects.c:3678
 msgid "minimum pack size limit is 1 MiB"
 msgstr "最小的包文件大小是 1 MiB"
 
-#: builtin/pack-objects.c:3666
+#: builtin/pack-objects.c:3683
 msgid "--thin cannot be used to build an indexable pack"
 msgstr "--thin 不能用于创建一个可索引包"
 
-#: builtin/pack-objects.c:3669
+#: builtin/pack-objects.c:3686
 msgid "--keep-unreachable and --unpack-unreachable are incompatible"
 msgstr "--keep-unreachable 和 --unpack-unreachable 不兼容"
 
-#: builtin/pack-objects.c:3675
+#: builtin/pack-objects.c:3692
 msgid "cannot use --filter without --stdout"
 msgstr "不能在没有 --stdout 的情况下使用 --filter"
 
-#: builtin/pack-objects.c:3735
+#: builtin/pack-objects.c:3752
 msgid "Enumerating objects"
 msgstr "枚举对象中"
 
-#: builtin/pack-objects.c:3766
+#: builtin/pack-objects.c:3783
 #, c-format
 msgid ""
 "Total %<PRIu32> (delta %<PRIu32>), reused %<PRIu32> (delta %<PRIu32>), pack-"
@@ -18101,6 +18463,19 @@ msgstr ""
 "总共 %<PRIu32>(差异 %<PRIu32>),复用 %<PRIu32>(差异 %<PRIu32>),包复用 "
 "%<PRIu32>"
 
+#: builtin/pack-redundant.c:601
+msgid ""
+"'git pack-redundant' is nominated for removal.\n"
+"If you still use this command, please add an extra\n"
+"option, '--i-still-use-this', on the command line\n"
+"and let us know you still use it by sending an e-mail\n"
+"to <git@vger.kernel.org>.  Thanks.\n"
+msgstr ""
+"准备移除 'git pack-redundant' 命令。如果您仍旧使用这个\n"
+"命令,请在命令行中添加额外参数:'--i-still-use-this',\n"
+"并通过发送邮件到 <git@vger.kernel.org> 让我们知道您仍旧\n"
+"使用它。 谢谢。\n"
+
 #: builtin/pack-refs.c:8
 msgid "git pack-refs [<options>]"
 msgstr "git pack-refs [<选项>]"
@@ -18158,7 +18533,7 @@ msgstr "和合并相关的选项"
 msgid "incorporate changes by rebasing rather than merging"
 msgstr "使用变基操作取代合并操作以合入修改"
 
-#: builtin/pull.c:158 builtin/rebase.c:490 builtin/revert.c:126
+#: builtin/pull.c:158 builtin/rebase.c:492 builtin/revert.c:126
 msgid "allow fast-forward"
 msgstr "允许快进式"
 
@@ -18183,51 +18558,24 @@ msgstr "并发拉取的子模组的数量"
 msgid "Invalid value for pull.ff: %s"
 msgstr "pull.ff 的取值无效:%s"
 
-#: builtin/pull.c:348
-msgid ""
-"Pulling without specifying how to reconcile divergent branches is\n"
-"discouraged. You can squelch this message by running one of the following\n"
-"commands sometime before your next pull:\n"
-"\n"
-"  git config pull.rebase false  # merge (the default strategy)\n"
-"  git config pull.rebase true   # rebase\n"
-"  git config pull.ff only       # fast-forward only\n"
-"\n"
-"You can replace \"git config\" with \"git config --global\" to set a "
-"default\n"
-"preference for all repositories. You can also pass --rebase, --no-rebase,\n"
-"or --ff-only on the command line to override the configured default per\n"
-"invocation.\n"
-msgstr ""
-"不建议在没有为偏离分支指定合并策略时执行 pull 操作。 您可以在执行下一次\n"
-"pull 操作之前执行下面一条命令来抑制本消息:\n"
-"\n"
-"  git config pull.rebase false  # 合并(缺省策略)\n"
-"  git config pull.rebase true   # 变基\n"
-"  git config pull.ff only       # 仅快进\n"
-"\n"
-"您可以将 \"git config\" 替换为 \"git config --global\" 以便为所有仓库设置\n"
-"缺省的配置项。您也可以在每次执行 pull 命令时添加 --rebase、--no-rebase,\n"
-"或者 --ff-only 参数覆盖缺省设置。\n"
-
-#: builtin/pull.c:458
+#: builtin/pull.c:445
 msgid ""
 "There is no candidate for rebasing against among the refs that you just "
 "fetched."
 msgstr "在您刚刚获取到的引用中没有变基操作的候选。"
 
-#: builtin/pull.c:460
+#: builtin/pull.c:447
 msgid ""
 "There are no candidates for merging among the refs that you just fetched."
 msgstr "在您刚刚获取到的引用中没有合并操作的候选。"
 
-#: builtin/pull.c:461
+#: builtin/pull.c:448
 msgid ""
 "Generally this means that you provided a wildcard refspec which had no\n"
 "matches on the remote end."
 msgstr "通常这意味着您提供了一个通配符引用规格但未能和远端匹配。"
 
-#: builtin/pull.c:464
+#: builtin/pull.c:451
 #, c-format
 msgid ""
 "You asked to pull from the remote '%s', but did not specify\n"
@@ -18237,41 +18585,41 @@ msgstr ""
 "您要求从远程 '%s' 拉取,但是未指定一个分支。因为这不是当前\n"
 "分支默认的远程仓库,您必须在命令行中指定一个分支名。"
 
-#: builtin/pull.c:469 builtin/rebase.c:1246
+#: builtin/pull.c:456 builtin/rebase.c:1253
 msgid "You are not currently on a branch."
 msgstr "您当前不在一个分支上。"
 
-#: builtin/pull.c:471 builtin/pull.c:486
+#: builtin/pull.c:458 builtin/pull.c:473
 msgid "Please specify which branch you want to rebase against."
 msgstr "请指定您要变基到哪一个分支。"
 
-#: builtin/pull.c:473 builtin/pull.c:488
+#: builtin/pull.c:460 builtin/pull.c:475
 msgid "Please specify which branch you want to merge with."
 msgstr "请指定您要合并哪一个分支。"
 
-#: builtin/pull.c:474 builtin/pull.c:489
+#: builtin/pull.c:461 builtin/pull.c:476
 msgid "See git-pull(1) for details."
 msgstr "详见 git-pull(1)。"
 
-#: builtin/pull.c:476 builtin/pull.c:482 builtin/pull.c:491
-#: builtin/rebase.c:1252
+#: builtin/pull.c:463 builtin/pull.c:469 builtin/pull.c:478
+#: builtin/rebase.c:1259
 msgid "<remote>"
 msgstr "<远程>"
 
-#: builtin/pull.c:476 builtin/pull.c:491 builtin/pull.c:496
+#: builtin/pull.c:463 builtin/pull.c:478 builtin/pull.c:483
 msgid "<branch>"
 msgstr "<分支>"
 
-#: builtin/pull.c:484 builtin/rebase.c:1244
+#: builtin/pull.c:471 builtin/rebase.c:1251
 msgid "There is no tracking information for the current branch."
 msgstr "当前分支没有跟踪信息。"
 
-#: builtin/pull.c:493
+#: builtin/pull.c:480
 msgid ""
 "If you wish to set tracking information for this branch you can do so with:"
 msgstr "如果您想要为此分支创建跟踪信息,您可以执行:"
 
-#: builtin/pull.c:498
+#: builtin/pull.c:485
 #, c-format
 msgid ""
 "Your configuration specifies to merge with the ref '%s'\n"
@@ -18280,28 +18628,55 @@ msgstr ""
 "您的配置中指定要合并远程的引用 '%s',\n"
 "但是没有获取到这个引用。"
 
-#: builtin/pull.c:609
+#: builtin/pull.c:596
 #, c-format
 msgid "unable to access commit %s"
 msgstr "无法访问提交 %s"
 
-#: builtin/pull.c:915
+#: builtin/pull.c:902
 msgid "ignoring --verify-signatures for rebase"
 msgstr "为变基操作忽略 --verify-signatures"
 
-#: builtin/pull.c:972
+#: builtin/pull.c:930
+msgid ""
+"Pulling without specifying how to reconcile divergent branches is\n"
+"discouraged. You can squelch this message by running one of the following\n"
+"commands sometime before your next pull:\n"
+"\n"
+"  git config pull.rebase false  # merge (the default strategy)\n"
+"  git config pull.rebase true   # rebase\n"
+"  git config pull.ff only       # fast-forward only\n"
+"\n"
+"You can replace \"git config\" with \"git config --global\" to set a "
+"default\n"
+"preference for all repositories. You can also pass --rebase, --no-rebase,\n"
+"or --ff-only on the command line to override the configured default per\n"
+"invocation.\n"
+msgstr ""
+"不建议在没有为偏离分支指定合并策略时执行 pull 操作。 您可以在执行下一次\n"
+"pull 操作之前执行下面一条命令来抑制本消息:\n"
+"\n"
+"  git config pull.rebase false  # 合并(缺省策略)\n"
+"  git config pull.rebase true   # 变基\n"
+"  git config pull.ff only       # 仅快进\n"
+"\n"
+"您可以将 \"git config\" 替换为 \"git config --global\" 以便为所有仓库设置\n"
+"缺省的配置项。您也可以在每次执行 pull 命令时添加 --rebase、--no-rebase,\n"
+"或者 --ff-only 参数覆盖缺省设置。\n"
+
+#: builtin/pull.c:991
 msgid "Updating an unborn branch with changes added to the index."
 msgstr "更新尚未诞生的分支,变更添加至索引。"
 
-#: builtin/pull.c:976
+#: builtin/pull.c:995
 msgid "pull with rebase"
 msgstr "变基式拉取"
 
-#: builtin/pull.c:977
+#: builtin/pull.c:996
 msgid "please commit or stash them."
 msgstr "请提交或贮藏它们。"
 
-#: builtin/pull.c:1002
+#: builtin/pull.c:1021
 #, c-format
 msgid ""
 "fetch updated the current branch head.\n"
@@ -18311,7 +18686,7 @@ msgstr ""
 "fetch 更新了当前的分支。快进您的工作区\n"
 "至提交 %s。"
 
-#: builtin/pull.c:1008
+#: builtin/pull.c:1027
 #, c-format
 msgid ""
 "Cannot fast-forward your working tree.\n"
@@ -18328,15 +18703,15 @@ msgstr ""
 "$ git reset --hard\n"
 "恢复之前的状态。"
 
-#: builtin/pull.c:1023
+#: builtin/pull.c:1042
 msgid "Cannot merge multiple branches into empty head."
 msgstr "无法将多个分支合并到空分支。"
 
-#: builtin/pull.c:1027
+#: builtin/pull.c:1046
 msgid "Cannot rebase onto multiple branches."
 msgstr "无法变基到多个分支。"
 
-#: builtin/pull.c:1041
+#: builtin/pull.c:1067
 msgid "cannot rebase with locally recorded submodule modifications"
 msgstr "本地子模组中有修改,无法变基"
 
@@ -18630,44 +19005,52 @@ msgstr "--all 和 --mirror 不兼容"
 msgid "push options must not have new line characters"
 msgstr "推送选项不能有换行符"
 
-#: builtin/range-diff.c:8
+#: builtin/range-diff.c:9
 msgid "git range-diff [<options>] <old-base>..<old-tip> <new-base>..<new-tip>"
 msgstr "git range-diff [<选项>] <old-base>..<old-tip> <new-base>..<new-tip>"
 
-#: builtin/range-diff.c:9
+#: builtin/range-diff.c:10
 msgid "git range-diff [<options>] <old-tip>...<new-tip>"
 msgstr "git range-diff [<选项>] <old-tip>...<new-tip>"
 
-#: builtin/range-diff.c:10
+#: builtin/range-diff.c:11
 msgid "git range-diff [<options>] <base> <old-tip> <new-tip>"
 msgstr "git range-diff [<选项>] <base> <old-tip> <new-tip>"
 
-#: builtin/range-diff.c:22
+#: builtin/range-diff.c:28
 msgid "Percentage by which creation is weighted"
 msgstr "创建权重的百分比"
 
-#: builtin/range-diff.c:24
+#: builtin/range-diff.c:30
 msgid "use simple diff colors"
 msgstr "使用简单差异颜色"
 
-#: builtin/range-diff.c:26
+#: builtin/range-diff.c:32
 msgid "notes"
 msgstr "注解"
 
-#: builtin/range-diff.c:26
+#: builtin/range-diff.c:32
 msgid "passed to 'git log'"
 msgstr "传递给 'git log'"
 
-#: builtin/range-diff.c:50 builtin/range-diff.c:54
+#: builtin/range-diff.c:35
+msgid "only emit output related to the first range"
+msgstr "仅显示与第一个范围有关的输出"
+
+#: builtin/range-diff.c:37
+msgid "only emit output related to the second range"
+msgstr "仅显示与第二个范围有关的输出"
+
+#: builtin/range-diff.c:60 builtin/range-diff.c:64
 #, c-format
-msgid "no .. in range: '%s'"
-msgstr "没有在范围中使用 ..:'%s'"
+msgid "not a commit range: '%s'"
+msgstr "不是一个提交范围:'%s'"
 
-#: builtin/range-diff.c:64
+#: builtin/range-diff.c:74
 msgid "single arg format must be symmetric range"
 msgstr "单个参数格式必须是对称范围(即包含...)"
 
-#: builtin/range-diff.c:79
+#: builtin/range-diff.c:89
 msgid "need two commit ranges"
 msgstr "需要两个提交范围"
 
@@ -18771,193 +19154,193 @@ msgstr ""
 msgid "git rebase --continue | --abort | --skip | --edit-todo"
 msgstr "git rebase --continue | --abort | --skip | --edit-todo"
 
-#: builtin/rebase.c:193 builtin/rebase.c:217 builtin/rebase.c:244
+#: builtin/rebase.c:195 builtin/rebase.c:219 builtin/rebase.c:246
 #, c-format
 msgid "unusable todo list: '%s'"
 msgstr "不可用的待办列表:'%s'"
 
-#: builtin/rebase.c:310
+#: builtin/rebase.c:312
 #, c-format
 msgid "could not create temporary %s"
 msgstr "无法创建临时的 %s"
 
-#: builtin/rebase.c:316
+#: builtin/rebase.c:318
 msgid "could not mark as interactive"
 msgstr "无法标记为交互式"
 
-#: builtin/rebase.c:369
+#: builtin/rebase.c:371
 msgid "could not generate todo list"
 msgstr "无法生成待办列表"
 
-#: builtin/rebase.c:411
+#: builtin/rebase.c:413
 msgid "a base commit must be provided with --upstream or --onto"
 msgstr "使用 --upstream 或 --onto 必须提供一个基线提交"
 
-#: builtin/rebase.c:480
+#: builtin/rebase.c:482
 msgid "git rebase--interactive [<options>]"
 msgstr "git rebase--interactive [<选项>]"
 
-#: builtin/rebase.c:493 builtin/rebase.c:1388
+#: builtin/rebase.c:495 builtin/rebase.c:1394
 msgid "keep commits which start empty"
 msgstr "保留初始为空的提交"
 
-#: builtin/rebase.c:497 builtin/revert.c:128
+#: builtin/rebase.c:499 builtin/revert.c:128
 msgid "allow commits with empty messages"
 msgstr "允许提交说明为空"
 
-#: builtin/rebase.c:499
+#: builtin/rebase.c:501
 msgid "rebase merge commits"
 msgstr "对合并提交变基"
 
-#: builtin/rebase.c:501
+#: builtin/rebase.c:503
 msgid "keep original branch points of cousins"
 msgstr "保持兄弟提交的原始分支点"
 
-#: builtin/rebase.c:503
+#: builtin/rebase.c:505
 msgid "move commits that begin with squash!/fixup!"
 msgstr "移动以 squash!/fixup! 开头的提交"
 
-#: builtin/rebase.c:504
+#: builtin/rebase.c:506
 msgid "sign commits"
 msgstr "签名提交"
 
-#: builtin/rebase.c:506 builtin/rebase.c:1327
+#: builtin/rebase.c:508 builtin/rebase.c:1333
 msgid "display a diffstat of what changed upstream"
 msgstr "显示上游变化的差异统计"
 
-#: builtin/rebase.c:508
+#: builtin/rebase.c:510
 msgid "continue rebase"
 msgstr "继续变基"
 
-#: builtin/rebase.c:510
+#: builtin/rebase.c:512
 msgid "skip commit"
 msgstr "跳过提交"
 
-#: builtin/rebase.c:511
+#: builtin/rebase.c:513
 msgid "edit the todo list"
 msgstr "变基待办列表"
 
-#: builtin/rebase.c:513
+#: builtin/rebase.c:515
 msgid "show the current patch"
 msgstr "显示当前补丁"
 
-#: builtin/rebase.c:516
+#: builtin/rebase.c:518
 msgid "shorten commit ids in the todo list"
 msgstr "缩短待办列表中的提交号"
 
-#: builtin/rebase.c:518
+#: builtin/rebase.c:520
 msgid "expand commit ids in the todo list"
 msgstr "扩展待办列表中的提交号"
 
-#: builtin/rebase.c:520
+#: builtin/rebase.c:522
 msgid "check the todo list"
 msgstr "检查待办列表"
 
-#: builtin/rebase.c:522
+#: builtin/rebase.c:524
 msgid "rearrange fixup/squash lines"
 msgstr "重新排列 fixup/squash 行"
 
-#: builtin/rebase.c:524
+#: builtin/rebase.c:526
 msgid "insert exec commands in todo list"
 msgstr "在待办列表中插入 exec 执行命令"
 
-#: builtin/rebase.c:525
+#: builtin/rebase.c:527
 msgid "onto"
 msgstr "onto"
 
-#: builtin/rebase.c:528
+#: builtin/rebase.c:530
 msgid "restrict-revision"
 msgstr "restrict-revision"
 
-#: builtin/rebase.c:528
+#: builtin/rebase.c:530
 msgid "restrict revision"
 msgstr "限制版本"
 
-#: builtin/rebase.c:530
+#: builtin/rebase.c:532
 msgid "squash-onto"
 msgstr "squash-onto"
 
-#: builtin/rebase.c:531
+#: builtin/rebase.c:533
 msgid "squash onto"
 msgstr "squash onto"
 
-#: builtin/rebase.c:533
+#: builtin/rebase.c:535
 msgid "the upstream commit"
 msgstr "上游提交"
 
-#: builtin/rebase.c:535
+#: builtin/rebase.c:537
 msgid "head-name"
 msgstr "head-name"
 
-#: builtin/rebase.c:535
+#: builtin/rebase.c:537
 msgid "head name"
 msgstr "head 名称"
 
-#: builtin/rebase.c:540
+#: builtin/rebase.c:542
 msgid "rebase strategy"
 msgstr "变基策略"
 
-#: builtin/rebase.c:541
+#: builtin/rebase.c:543
 msgid "strategy-opts"
 msgstr "strategy-opts"
 
-#: builtin/rebase.c:542
+#: builtin/rebase.c:544
 msgid "strategy options"
 msgstr "策略选项"
 
-#: builtin/rebase.c:543
+#: builtin/rebase.c:545
 msgid "switch-to"
 msgstr "切换到"
 
-#: builtin/rebase.c:544
+#: builtin/rebase.c:546
 msgid "the branch or commit to checkout"
 msgstr "要检出的分支或提交"
 
-#: builtin/rebase.c:545
+#: builtin/rebase.c:547
 msgid "onto-name"
 msgstr "onto-name"
 
-#: builtin/rebase.c:545
+#: builtin/rebase.c:547
 msgid "onto name"
 msgstr "onto name"
 
-#: builtin/rebase.c:546
+#: builtin/rebase.c:548
 msgid "cmd"
 msgstr "cmd"
 
-#: builtin/rebase.c:546
+#: builtin/rebase.c:548
 msgid "the command to run"
 msgstr "要执行的命令"
 
-#: builtin/rebase.c:549 builtin/rebase.c:1421
+#: builtin/rebase.c:551 builtin/rebase.c:1427
 msgid "automatically re-schedule any `exec` that fails"
 msgstr "自动重新安排任何失败的 `exec`"
 
-#: builtin/rebase.c:565
+#: builtin/rebase.c:567
 msgid "--[no-]rebase-cousins has no effect without --rebase-merges"
 msgstr "不使用 --rebase-merges,则 --[no-]rebase-cousins 没有效果"
 
-#: builtin/rebase.c:581
+#: builtin/rebase.c:583
 #, c-format
 msgid "%s requires the merge backend"
 msgstr "%s 需要合并后端"
 
-#: builtin/rebase.c:624
+#: builtin/rebase.c:626
 #, c-format
 msgid "could not get 'onto': '%s'"
 msgstr "无法获取 'onto':'%s'"
 
-#: builtin/rebase.c:641
+#: builtin/rebase.c:643
 #, c-format
 msgid "invalid orig-head: '%s'"
 msgstr "无效的原始 head:'%s'"
 
-#: builtin/rebase.c:666
+#: builtin/rebase.c:668
 #, c-format
 msgid "ignoring invalid allow_rerere_autoupdate: '%s'"
 msgstr "忽略无效的 allow_rerere_autoupdate:'%s'"
 
-#: builtin/rebase.c:811 git-rebase--preserve-merges.sh:81
+#: builtin/rebase.c:813 git-rebase--preserve-merges.sh:81
 msgid ""
 "Resolve all conflicts manually, mark them as resolved with\n"
 "\"git add/rm <conflicted_files>\", then run \"git rebase --continue\".\n"
@@ -18970,7 +19353,7 @@ msgstr ""
 "\"git rebase --skip\" 命令跳过这个提交。如果想要终止执行并回到\n"
 "\"git rebase\" 执行之前的状态,执行 \"git rebase --abort\"。"
 
-#: builtin/rebase.c:894
+#: builtin/rebase.c:896
 #, c-format
 msgid ""
 "\n"
@@ -18988,14 +19371,14 @@ msgstr ""
 "\n"
 "因此 git 无法对其变基。"
 
-#: builtin/rebase.c:1220
+#: builtin/rebase.c:1227
 #, c-format
 msgid ""
 "unrecognized empty type '%s'; valid values are \"drop\", \"keep\", and \"ask"
 "\"."
 msgstr "无法识别的空类型 '%s';有效值有 \"drop\"、\"keep\" 和 \"ask\"。"
 
-#: builtin/rebase.c:1238
+#: builtin/rebase.c:1245
 #, c-format
 msgid ""
 "%s\n"
@@ -19012,7 +19395,7 @@ msgstr ""
 "    git rebase '<branch>'\n"
 "\n"
 
-#: builtin/rebase.c:1254
+#: builtin/rebase.c:1261
 #, c-format
 msgid ""
 "If you wish to set tracking information for this branch you can do so with:\n"
@@ -19025,148 +19408,148 @@ msgstr ""
 "    git branch --set-upstream-to=%s/<branch> %s\n"
 "\n"
 
-#: builtin/rebase.c:1284
+#: builtin/rebase.c:1291
 msgid "exec commands cannot contain newlines"
 msgstr "exec 命令不能包含换行符"
 
-#: builtin/rebase.c:1288
+#: builtin/rebase.c:1295
 msgid "empty exec command"
 msgstr "空的 exec 命令"
 
-#: builtin/rebase.c:1318
+#: builtin/rebase.c:1324
 msgid "rebase onto given branch instead of upstream"
 msgstr "变基到给定的分支而非上游"
 
-#: builtin/rebase.c:1320
+#: builtin/rebase.c:1326
 msgid "use the merge-base of upstream and branch as the current base"
 msgstr "使用上游和分支的合并基线做为当前基线"
 
-#: builtin/rebase.c:1322
+#: builtin/rebase.c:1328
 msgid "allow pre-rebase hook to run"
 msgstr "允许执行 pre-rebase 钩子"
 
-#: builtin/rebase.c:1324
+#: builtin/rebase.c:1330
 msgid "be quiet. implies --no-stat"
 msgstr "安静。暗示 --no-stat"
 
-#: builtin/rebase.c:1330
+#: builtin/rebase.c:1336
 msgid "do not show diffstat of what changed upstream"
 msgstr "不显示上游变化的差异统计"
 
-#: builtin/rebase.c:1333
+#: builtin/rebase.c:1339
 msgid "add a Signed-off-by trailer to each commit"
 msgstr "为每一个提交添加 Signed-off-by 尾注"
 
-#: builtin/rebase.c:1336
+#: builtin/rebase.c:1342
 msgid "make committer date match author date"
 msgstr "使提交者日期和作者日期一致"
 
-#: builtin/rebase.c:1338
+#: builtin/rebase.c:1344
 msgid "ignore author date and use current date"
 msgstr "忽略作者日期,使用当前日期"
 
-#: builtin/rebase.c:1340
+#: builtin/rebase.c:1346
 msgid "synonym of --reset-author-date"
 msgstr "--reset-author-date 的同义词"
 
-#: builtin/rebase.c:1342 builtin/rebase.c:1346
+#: builtin/rebase.c:1348 builtin/rebase.c:1352
 msgid "passed to 'git apply'"
 msgstr "传递给 'git apply'"
 
-#: builtin/rebase.c:1344
+#: builtin/rebase.c:1350
 msgid "ignore changes in whitespace"
 msgstr "忽略空白字符的变更"
 
-#: builtin/rebase.c:1348 builtin/rebase.c:1351
+#: builtin/rebase.c:1354 builtin/rebase.c:1357
 msgid "cherry-pick all commits, even if unchanged"
 msgstr "拣选所有提交,即使未修改"
 
-#: builtin/rebase.c:1353
+#: builtin/rebase.c:1359
 msgid "continue"
 msgstr "继续"
 
-#: builtin/rebase.c:1356
+#: builtin/rebase.c:1362
 msgid "skip current patch and continue"
 msgstr "跳过当前补丁并继续"
 
 #  译者:注意保持前导空格
-#: builtin/rebase.c:1358
+#: builtin/rebase.c:1364
 msgid "abort and check out the original branch"
 msgstr "终止并检出原有分支"
 
-#: builtin/rebase.c:1361
+#: builtin/rebase.c:1367
 msgid "abort but keep HEAD where it is"
 msgstr "终止但保持 HEAD 不变"
 
-#: builtin/rebase.c:1362
+#: builtin/rebase.c:1368
 msgid "edit the todo list during an interactive rebase"
 msgstr "在交互式变基中编辑待办列表"
 
-#: builtin/rebase.c:1365
+#: builtin/rebase.c:1371
 msgid "show the patch file being applied or merged"
 msgstr "显示正在应用或合并的补丁文件"
 
-#: builtin/rebase.c:1368
+#: builtin/rebase.c:1374
 msgid "use apply strategies to rebase"
 msgstr "使用应用策略进行变基"
 
-#: builtin/rebase.c:1372
+#: builtin/rebase.c:1378
 msgid "use merging strategies to rebase"
 msgstr "使用合并策略进行变基"
 
-#: builtin/rebase.c:1376
+#: builtin/rebase.c:1382
 msgid "let the user edit the list of commits to rebase"
 msgstr "让用户编辑要变基的提交列表"
 
-#: builtin/rebase.c:1380
+#: builtin/rebase.c:1386
 msgid "(DEPRECATED) try to recreate merges instead of ignoring them"
 msgstr "(已弃用)尝试重建合并提交而非忽略它们"
 
-#: builtin/rebase.c:1385
+#: builtin/rebase.c:1391
 msgid "how to handle commits that become empty"
 msgstr "如何处理成为空提交的提交"
 
-#: builtin/rebase.c:1392
+#: builtin/rebase.c:1398
 msgid "move commits that begin with squash!/fixup! under -i"
 msgstr "在 -i 交互模式下,移动以 squash!/fixup! 开头的提交"
 
-#: builtin/rebase.c:1399
+#: builtin/rebase.c:1405
 msgid "add exec lines after each commit of the editable list"
 msgstr "可编辑列表的每一个提交下面增加一行 exec"
 
-#: builtin/rebase.c:1403
+#: builtin/rebase.c:1409
 msgid "allow rebasing commits with empty messages"
 msgstr "允许针对空提交说明的提交变基"
 
-#: builtin/rebase.c:1407
+#: builtin/rebase.c:1413
 msgid "try to rebase merges instead of skipping them"
 msgstr "尝试对合并提交变基而不是忽略它们"
 
-#: builtin/rebase.c:1410
+#: builtin/rebase.c:1416
 msgid "use 'merge-base --fork-point' to refine upstream"
 msgstr "使用 'merge-base --fork-point' 来优化上游"
 
-#: builtin/rebase.c:1412
+#: builtin/rebase.c:1418
 msgid "use the given merge strategy"
 msgstr "使用给定的合并策略"
 
-#: builtin/rebase.c:1414 builtin/revert.c:115
+#: builtin/rebase.c:1420 builtin/revert.c:115
 msgid "option"
 msgstr "选项"
 
-#: builtin/rebase.c:1415
+#: builtin/rebase.c:1421
 msgid "pass the argument through to the merge strategy"
 msgstr "将参数传递给合并策略"
 
-#: builtin/rebase.c:1418
+#: builtin/rebase.c:1424
 msgid "rebase all reachable commits up to the root(s)"
 msgstr "将所有可达的提交变基到根提交"
 
-#: builtin/rebase.c:1423
+#: builtin/rebase.c:1429
 msgid "apply all changes, even those already present upstream"
 msgstr "应用所有更改,甚至那些已在上游存在的"
 
-#: builtin/rebase.c:1440
+#: builtin/rebase.c:1446
 msgid ""
 "the rebase.useBuiltin support has been removed!\n"
 "See its entry in 'git help config' for details."
@@ -19174,40 +19557,40 @@ msgstr ""
 "对 rebase.useBuiltin 的支持已被删除!\n"
 "详见 'git help config' 中的条目。"
 
-#: builtin/rebase.c:1446
+#: builtin/rebase.c:1452
 msgid "It looks like 'git am' is in progress. Cannot rebase."
 msgstr "看起来 'git-am' 正在执行中。无法变基。"
 
-#: builtin/rebase.c:1487
+#: builtin/rebase.c:1493
 msgid ""
 "git rebase --preserve-merges is deprecated. Use --rebase-merges instead."
 msgstr "git rebase --preserve-merges 被弃用。用 --rebase-merges 代替。"
 
-#: builtin/rebase.c:1492
+#: builtin/rebase.c:1498
 msgid "cannot combine '--keep-base' with '--onto'"
 msgstr "不能将 '--keep-base' 和 '--onto' 组合使用"
 
-#: builtin/rebase.c:1494
+#: builtin/rebase.c:1500
 msgid "cannot combine '--keep-base' with '--root'"
 msgstr "不能将 '--keep-base' 和 '--root' 组合使用"
 
-#: builtin/rebase.c:1498
+#: builtin/rebase.c:1504
 msgid "cannot combine '--root' with '--fork-point'"
 msgstr "不能将 '--root' 和 '--fork-point' 组合使用"
 
-#: builtin/rebase.c:1501
+#: builtin/rebase.c:1507
 msgid "No rebase in progress?"
 msgstr "没有正在进行的变基?"
 
-#: builtin/rebase.c:1505
+#: builtin/rebase.c:1511
 msgid "The --edit-todo action can only be used during interactive rebase."
 msgstr "动作 --edit-todo 只能用在交互式变基过程中。"
 
-#: builtin/rebase.c:1528 t/helper/test-fast-rebase.c:123
+#: builtin/rebase.c:1534 t/helper/test-fast-rebase.c:123
 msgid "Cannot read HEAD"
 msgstr "不能读取 HEAD"
 
-#: builtin/rebase.c:1540
+#: builtin/rebase.c:1546
 msgid ""
 "You must edit all merge conflicts and then\n"
 "mark them as resolved using git add"
@@ -19215,16 +19598,16 @@ msgstr ""
 "您必须编辑所有的合并冲突,然后通过 git add\n"
 "命令将它们标记为已解决"
 
-#: builtin/rebase.c:1559
+#: builtin/rebase.c:1565
 msgid "could not discard worktree changes"
 msgstr "无法丢弃工作区变更"
 
-#: builtin/rebase.c:1578
+#: builtin/rebase.c:1584
 #, c-format
 msgid "could not move back to %s"
 msgstr "无法移回 %s"
 
-#: builtin/rebase.c:1624
+#: builtin/rebase.c:1630
 #, c-format
 msgid ""
 "It seems that there is already a %s directory, and\n"
@@ -19243,132 +19626,132 @@ msgstr ""
 "\t%s\n"
 "然后再重新执行。 为避免丢失重要数据,我已经停止当前操作。\n"
 
-#: builtin/rebase.c:1652
+#: builtin/rebase.c:1658
 msgid "switch `C' expects a numerical value"
 msgstr "开关 `C' 期望一个数字值"
 
-#: builtin/rebase.c:1694
+#: builtin/rebase.c:1700
 #, c-format
 msgid "Unknown mode: %s"
 msgstr "未知模式:%s"
 
-#: builtin/rebase.c:1733
+#: builtin/rebase.c:1739
 msgid "--strategy requires --merge or --interactive"
 msgstr "--strategy 需要 --merge 或 --interactive"
 
-#: builtin/rebase.c:1763
+#: builtin/rebase.c:1769
 msgid "cannot combine apply options with merge options"
 msgstr "不能组合使用应用选项和合并选项"
 
-#: builtin/rebase.c:1776
+#: builtin/rebase.c:1782
 #, c-format
 msgid "Unknown rebase backend: %s"
 msgstr "未知的变基后端:%s"
 
-#: builtin/rebase.c:1806
+#: builtin/rebase.c:1812
 msgid "--reschedule-failed-exec requires --exec or --interactive"
 msgstr "--reschedule-failed-exec 需要 --exec 或 --interactive"
 
-#: builtin/rebase.c:1826
+#: builtin/rebase.c:1832
 msgid "cannot combine '--preserve-merges' with '--rebase-merges'"
 msgstr "不能将 '--preserve-merges' 和 '--rebase-merges' 同时使用"
 
-#: builtin/rebase.c:1830
+#: builtin/rebase.c:1836
 msgid ""
 "error: cannot combine '--preserve-merges' with '--reschedule-failed-exec'"
 msgstr ""
 "错误:不能将 '--preserve-merges' 和 '--reschedule-failed-exec' 同时使用"
 
-#: builtin/rebase.c:1854
+#: builtin/rebase.c:1860
 #, c-format
 msgid "invalid upstream '%s'"
 msgstr "无效的上游 '%s'"
 
-#: builtin/rebase.c:1860
+#: builtin/rebase.c:1866
 msgid "Could not create new root commit"
 msgstr "不能创建新的根提交"
 
-#: builtin/rebase.c:1886
+#: builtin/rebase.c:1892
 #, c-format
 msgid "'%s': need exactly one merge base with branch"
 msgstr "'%s':只需要与分支的一个合并基线"
 
-#: builtin/rebase.c:1889
+#: builtin/rebase.c:1895
 #, c-format
 msgid "'%s': need exactly one merge base"
 msgstr "'%s':只需要一个合并基线"
 
-#: builtin/rebase.c:1897
+#: builtin/rebase.c:1903
 #, c-format
 msgid "Does not point to a valid commit '%s'"
 msgstr "没有指向一个有效的提交 '%s'"
 
-#: builtin/rebase.c:1923
+#: builtin/rebase.c:1931
 #, c-format
 msgid "fatal: no such branch/commit '%s'"
 msgstr "致命错误:无此分支/提交 '%s'"
 
-#: builtin/rebase.c:1931 builtin/submodule--helper.c:40
+#: builtin/rebase.c:1939 builtin/submodule--helper.c:40
 #: builtin/submodule--helper.c:2414
 #, c-format
 msgid "No such ref: %s"
 msgstr "没有这样的引用:%s"
 
-#: builtin/rebase.c:1942
+#: builtin/rebase.c:1950
 msgid "Could not resolve HEAD to a revision"
 msgstr "无法将 HEAD 解析为一个版本"
 
-#: builtin/rebase.c:1963
+#: builtin/rebase.c:1971
 msgid "Please commit or stash them."
 msgstr "请提交或贮藏修改。"
 
-#: builtin/rebase.c:1999
+#: builtin/rebase.c:2007
 #, c-format
 msgid "could not switch to %s"
 msgstr "无法切换到 %s"
 
-#: builtin/rebase.c:2010
+#: builtin/rebase.c:2018
 msgid "HEAD is up to date."
 msgstr "HEAD 是最新的。"
 
-#: builtin/rebase.c:2012
+#: builtin/rebase.c:2020
 #, c-format
 msgid "Current branch %s is up to date.\n"
 msgstr "当前分支 %s 是最新的。\n"
 
-#: builtin/rebase.c:2020
+#: builtin/rebase.c:2028
 msgid "HEAD is up to date, rebase forced."
 msgstr "HEAD 是最新的,强制变基。"
 
-#: builtin/rebase.c:2022
+#: builtin/rebase.c:2030
 #, c-format
 msgid "Current branch %s is up to date, rebase forced.\n"
 msgstr "当前分支 %s 是最新的,强制变基。\n"
 
-#: builtin/rebase.c:2030
+#: builtin/rebase.c:2038
 msgid "The pre-rebase hook refused to rebase."
 msgstr "pre-rebase 钩子拒绝了变基操作。"
 
-#: builtin/rebase.c:2037
+#: builtin/rebase.c:2045
 #, c-format
 msgid "Changes to %s:\n"
 msgstr "到 %s 的变更:\n"
 
-#: builtin/rebase.c:2040
+#: builtin/rebase.c:2048
 #, c-format
 msgid "Changes from %s to %s:\n"
 msgstr "从 %s 到 %s 的变更:\n"
 
-#: builtin/rebase.c:2065
+#: builtin/rebase.c:2073
 #, c-format
 msgid "First, rewinding head to replay your work on top of it...\n"
 msgstr "首先,回退头指针以便在其上重放您的工作...\n"
 
-#: builtin/rebase.c:2074
+#: builtin/rebase.c:2082
 msgid "Could not detach HEAD"
 msgstr "无法分离头指针"
 
-#: builtin/rebase.c:2083
+#: builtin/rebase.c:2091
 #, c-format
 msgid "Fast-forwarded %s to %s.\n"
 msgstr "快进 %s 到 %s。\n"
@@ -19457,36 +19840,36 @@ msgstr "git reflog exists <引用>"
 msgid "'%s' is not a valid timestamp"
 msgstr "'%s' 不是一个有效的时间戳"
 
-#: builtin/reflog.c:606
+#: builtin/reflog.c:609
 #, c-format
 msgid "Marking reachable objects..."
 msgstr "正在标记可达对象..."
 
-#: builtin/reflog.c:644
+#: builtin/reflog.c:647
 #, c-format
 msgid "%s points nowhere!"
 msgstr "%s 指向不存在!"
 
-#: builtin/reflog.c:696
+#: builtin/reflog.c:699
 msgid "no reflog specified to delete"
 msgstr "未指定要删除的引用日志"
 
-#: builtin/reflog.c:705
+#: builtin/reflog.c:708
 #, c-format
 msgid "not a reflog: %s"
 msgstr "不是一个引用日志:%s"
 
-#: builtin/reflog.c:710
+#: builtin/reflog.c:713
 #, c-format
 msgid "no reflog for '%s'"
 msgstr "没有 '%s' 的引用日志"
 
-#: builtin/reflog.c:756
+#: builtin/reflog.c:759
 #, c-format
 msgid "invalid ref format: %s"
 msgstr "无效的引用格式:%s"
 
-#: builtin/reflog.c:765
+#: builtin/reflog.c:768
 msgid "git reflog [ show | expire | delete | exists ]"
 msgstr "git reflog [ show | expire | delete | exists ]"
 
@@ -19997,11 +20380,11 @@ msgstr "未找到此 URL:%s"
 msgid "Will not delete all non-push URLs"
 msgstr "将不会删除所有非推送 URL 地址"
 
-#: builtin/repack.c:25
+#: builtin/repack.c:26
 msgid "git repack [<options>]"
 msgstr "git repack [<选项>]"
 
-#: builtin/repack.c:30
+#: builtin/repack.c:31
 msgid ""
 "Incremental repacks are incompatible with bitmap indexes.  Use\n"
 "--no-write-bitmap-index or disable the pack.writebitmaps configuration."
@@ -20009,116 +20392,116 @@ msgstr ""
 "增量 repack 和 bitmap 索引不兼容。  使用 --no-write-bitmap-index\n"
 "或禁用 pack.writebitmaps 配置。"
 
-#: builtin/repack.c:197
+#: builtin/repack.c:198
 msgid "could not start pack-objects to repack promisor objects"
 msgstr "无法开始 pack-objects 来重新打包 promisor 对象"
 
-#: builtin/repack.c:268 builtin/repack.c:447
+#: builtin/repack.c:270 builtin/repack.c:446
 msgid "repack: Expecting full hex object ID lines only from pack-objects."
 msgstr "repack:期望来自 pack-objects 的完整十六进制对象 ID。"
 
-#: builtin/repack.c:295
+#: builtin/repack.c:294
 msgid "could not finish pack-objects to repack promisor objects"
 msgstr "无法完成 pack-objects 来重新打包 promisor 对象"
 
-#: builtin/repack.c:323
+#: builtin/repack.c:322
 msgid "pack everything in a single pack"
 msgstr "所有内容打包到一个包文件中"
 
-#: builtin/repack.c:325
+#: builtin/repack.c:324
 msgid "same as -a, and turn unreachable objects loose"
 msgstr "和 -a 相同,并将不可达的对象设为松散对象"
 
-#: builtin/repack.c:328
+#: builtin/repack.c:327
 msgid "remove redundant packs, and run git-prune-packed"
 msgstr "删除多余的包,运行 git-prune-packed"
 
-#: builtin/repack.c:330
+#: builtin/repack.c:329
 msgid "pass --no-reuse-delta to git-pack-objects"
 msgstr "向 git-pack-objects 传递参数 --no-reuse-delta"
 
-#: builtin/repack.c:332
+#: builtin/repack.c:331
 msgid "pass --no-reuse-object to git-pack-objects"
 msgstr "向 git-pack-objects 传递参数 --no-reuse-object"
 
-#: builtin/repack.c:334
+#: builtin/repack.c:333
 msgid "do not run git-update-server-info"
 msgstr "不运行 git-update-server-info"
 
-#: builtin/repack.c:337
+#: builtin/repack.c:336
 msgid "pass --local to git-pack-objects"
 msgstr "向 git-pack-objects 传递参数 --local"
 
-#: builtin/repack.c:339
+#: builtin/repack.c:338
 msgid "write bitmap index"
 msgstr "写 bitmap 索引"
 
-#: builtin/repack.c:341
+#: builtin/repack.c:340
 msgid "pass --delta-islands to git-pack-objects"
 msgstr "向 git-pack-objects 传递参数 --delta-islands"
 
-#: builtin/repack.c:342
+#: builtin/repack.c:341
 msgid "approxidate"
 msgstr "近似日期"
 
-#: builtin/repack.c:343
+#: builtin/repack.c:342
 msgid "with -A, do not loosen objects older than this"
 msgstr "使用 -A,不要将早于给定时间的对象过期"
 
-#: builtin/repack.c:345
+#: builtin/repack.c:344
 msgid "with -a, repack unreachable objects"
 msgstr "使用 -a ,重新对不可达对象打包"
 
-#: builtin/repack.c:347
+#: builtin/repack.c:346
 msgid "size of the window used for delta compression"
 msgstr "用于增量压缩的窗口值"
 
-#: builtin/repack.c:348 builtin/repack.c:354
+#: builtin/repack.c:347 builtin/repack.c:353
 msgid "bytes"
 msgstr "字节"
 
-#: builtin/repack.c:349
+#: builtin/repack.c:348
 msgid "same as the above, but limit memory size instead of entries count"
 msgstr "和上面的相似,但限制内存大小而非条目数"
 
-#: builtin/repack.c:351
+#: builtin/repack.c:350
 msgid "limits the maximum delta depth"
 msgstr "限制最大增量深度"
 
-#: builtin/repack.c:353
+#: builtin/repack.c:352
 msgid "limits the maximum number of threads"
 msgstr "限制最大线程数"
 
-#: builtin/repack.c:355
+#: builtin/repack.c:354
 msgid "maximum size of each packfile"
 msgstr "每个包文件的最大尺寸"
 
-#: builtin/repack.c:357
+#: builtin/repack.c:356
 msgid "repack objects in packs marked with .keep"
 msgstr "对标记为 .keep 的包中的对象重新打包"
 
-#: builtin/repack.c:359
+#: builtin/repack.c:358
 msgid "do not repack this pack"
 msgstr "不要对该包文件重新打包"
 
-#: builtin/repack.c:369
+#: builtin/repack.c:368
 msgid "cannot delete packs in a precious-objects repo"
 msgstr "不能删除珍品仓库中的打包文件"
 
-#: builtin/repack.c:373
+#: builtin/repack.c:372
 msgid "--keep-unreachable and -A are incompatible"
 msgstr "--keep-unreachable 和 -A 不兼容"
 
-#: builtin/repack.c:456
+#: builtin/repack.c:455
 msgid "Nothing new to pack."
 msgstr "没有新的要打包。"
 
-#: builtin/repack.c:486
+#: builtin/repack.c:485
 #, c-format
 msgid "missing required file: %s"
 msgstr "缺少需要的文件:%s"
 
-#: builtin/repack.c:488
+#: builtin/repack.c:487
 #, c-format
 msgid "could not unlink: %s"
 msgstr "不能删除:%s"
@@ -20448,8 +20831,8 @@ msgstr "HEAD 现在位于 %s"
 msgid "Cannot do a %s reset in the middle of a merge."
 msgstr "在合并过程中不能做%s重置操作。"
 
-#: builtin/reset.c:295 builtin/stash.c:520 builtin/stash.c:594
-#: builtin/stash.c:618
+#: builtin/reset.c:295 builtin/stash.c:587 builtin/stash.c:661
+#: builtin/stash.c:685
 msgid "be quiet, only report errors"
 msgstr "安静模式,只报告错误"
 
@@ -20532,19 +20915,19 @@ msgstr "不能重置索引文件至版本 '%s'。"
 msgid "Could not write new index file."
 msgstr "不能写入新的索引文件。"
 
-#: builtin/rev-list.c:499
+#: builtin/rev-list.c:534
 msgid "cannot combine --exclude-promisor-objects and --missing"
 msgstr "不能同时使用 --exclude-promisor-objects 和 --missing 选项"
 
-#: builtin/rev-list.c:560
+#: builtin/rev-list.c:595
 msgid "object filtering requires --objects"
 msgstr "对象过滤需要 --objects"
 
-#: builtin/rev-list.c:610
+#: builtin/rev-list.c:651
 msgid "rev-list does not support display of notes"
 msgstr "rev-list 不支持显示注解"
 
-#: builtin/rev-list.c:615
+#: builtin/rev-list.c:656
 msgid "marked counting is incompatible with --objects"
 msgstr "标记计数和 --objects 不兼容"
 
@@ -20779,52 +21162,52 @@ msgstr "git shortlog [<选项>] [<版本范围>] [[--] <路径>...]"
 msgid "git log --pretty=short | git shortlog [<options>]"
 msgstr "git log --pretty=short | git shortlog [<选项>]"
 
-#: builtin/shortlog.c:135
+#: builtin/shortlog.c:123
 msgid "using multiple --group options with stdin is not supported"
 msgstr "不支持和标准输入一起使用多个 --group 选项"
 
-#: builtin/shortlog.c:145
+#: builtin/shortlog.c:133
 msgid "using --group=trailer with stdin is not supported"
 msgstr "不支持和标准输入一起使用 --group=trailer"
 
-#: builtin/shortlog.c:335
+#: builtin/shortlog.c:323
 #, c-format
 msgid "unknown group type: %s"
 msgstr "未知分组类型:%s"
 
-#: builtin/shortlog.c:363
-msgid "Group by committer rather than author"
-msgstr "按照提交者分组而不是作者"
+#: builtin/shortlog.c:351
+msgid "group by committer rather than author"
+msgstr "按照提交者而不是作者分组"
 
-#: builtin/shortlog.c:366
+#: builtin/shortlog.c:354
 msgid "sort output according to the number of commits per author"
 msgstr "根据每个作者的提交数量排序"
 
-#: builtin/shortlog.c:368
-msgid "Suppress commit descriptions, only provides commit count"
-msgstr "隐藏提交说明,只提供提交数量"
+#: builtin/shortlog.c:356
+msgid "suppress commit descriptions, only provides commit count"
+msgstr "抑制提交描述,只提供提交数量"
 
-#: builtin/shortlog.c:370
-msgid "Show the email address of each author"
+#: builtin/shortlog.c:358
+msgid "show the email address of each author"
 msgstr "显示每个作者的电子邮件地址"
 
-#: builtin/shortlog.c:371
+#: builtin/shortlog.c:359
 msgid "<w>[,<i1>[,<i2>]]"
 msgstr "<w>[,<i1>[,<i2>]]"
 
-#: builtin/shortlog.c:372
-msgid "Linewrap output"
+#: builtin/shortlog.c:360
+msgid "linewrap output"
 msgstr "折行输出"
 
-#: builtin/shortlog.c:374
+#: builtin/shortlog.c:362
 msgid "field"
 msgstr "字段"
 
-#: builtin/shortlog.c:375
-msgid "Group by field"
+#: builtin/shortlog.c:363
+msgid "group by field"
 msgstr "按字段分组"
 
-#: builtin/shortlog.c:403
+#: builtin/shortlog.c:391
 msgid "too many arguments given outside repository"
 msgstr "仓库外执行提供了太多的参数"
 
@@ -21018,70 +21401,70 @@ msgstr "显示从标准输入中读入的不在本地仓库中的引用"
 msgid "git sparse-checkout (init|list|set|add|reapply|disable) <options>"
 msgstr "git sparse-checkout (init|list|set|add|reapply|disable) <选项>"
 
-#: builtin/sparse-checkout.c:50
+#: builtin/sparse-checkout.c:45
 msgid "git sparse-checkout list"
 msgstr "git sparse-checkout list"
 
-#: builtin/sparse-checkout.c:76
+#: builtin/sparse-checkout.c:71
 msgid "this worktree is not sparse (sparse-checkout file may not exist)"
 msgstr "本工作区不是稀疏模式(稀疏检出文件可能不存在)"
 
-#: builtin/sparse-checkout.c:228
+#: builtin/sparse-checkout.c:223
 msgid "failed to create directory for sparse-checkout file"
 msgstr "无法为稀疏检出文件创建目录"
 
-#: builtin/sparse-checkout.c:269
+#: builtin/sparse-checkout.c:264
 msgid "unable to upgrade repository format to enable worktreeConfig"
 msgstr "无法升级仓库格式以启用 worktreeConfig"
 
-#: builtin/sparse-checkout.c:271
+#: builtin/sparse-checkout.c:266
 msgid "failed to set extensions.worktreeConfig setting"
 msgstr "无法设置 extensions.worktreeConfig"
 
-#: builtin/sparse-checkout.c:288
+#: builtin/sparse-checkout.c:283
 msgid "git sparse-checkout init [--cone]"
 msgstr "git sparse-checkout init [--cone]"
 
-#: builtin/sparse-checkout.c:307
+#: builtin/sparse-checkout.c:302
 msgid "initialize the sparse-checkout in cone mode"
 msgstr "初始化稀疏检出为 cone 模式"
 
-#: builtin/sparse-checkout.c:344
+#: builtin/sparse-checkout.c:339
 #, c-format
 msgid "failed to open '%s'"
 msgstr "无法打开 '%s'"
 
-#: builtin/sparse-checkout.c:401
+#: builtin/sparse-checkout.c:396
 #, c-format
 msgid "could not normalize path %s"
 msgstr "无法规范化路径 %s"
 
-#: builtin/sparse-checkout.c:413
+#: builtin/sparse-checkout.c:408
 msgid "git sparse-checkout (set|add) (--stdin | <patterns>)"
 msgstr "git sparse-checkout (set|add) (--stdin | <模式>)"
 
-#: builtin/sparse-checkout.c:438
+#: builtin/sparse-checkout.c:433
 #, c-format
 msgid "unable to unquote C-style string '%s'"
 msgstr "无法为 C 语言风格的字符串 '%s' 去引号"
 
-#: builtin/sparse-checkout.c:492 builtin/sparse-checkout.c:516
+#: builtin/sparse-checkout.c:487 builtin/sparse-checkout.c:511
 msgid "unable to load existing sparse-checkout patterns"
 msgstr "无法加载现存的稀疏检出模式"
 
-#: builtin/sparse-checkout.c:561
+#: builtin/sparse-checkout.c:556
 msgid "read patterns from standard in"
 msgstr "从标准输入读取模式"
 
-#: builtin/sparse-checkout.c:576
+#: builtin/sparse-checkout.c:571
 msgid "git sparse-checkout reapply"
 msgstr "git sparse-checkout reapply"
 
-#: builtin/sparse-checkout.c:595
+#: builtin/sparse-checkout.c:590
 msgid "git sparse-checkout disable"
 msgstr "git sparse-checkout disable"
 
-#: builtin/sparse-checkout.c:623
+#: builtin/sparse-checkout.c:618
 msgid "error while refreshing working directory"
 msgstr "刷新工作目录时出错"
 
@@ -21171,153 +21554,164 @@ msgid "%s is not a valid reference"
 msgstr "%s 不是一个有效的引用名"
 
 #: builtin/stash.c:225
-msgid "git stash clear with parameters is unimplemented"
+msgid "git stash clear with arguments is unimplemented"
 msgstr "git stash clear 不支持参数"
 
-#: builtin/stash.c:404
+#: builtin/stash.c:429
+#, c-format
+msgid ""
+"WARNING: Untracked file in way of tracked file!  Renaming\n"
+"            %s -> %s\n"
+"         to make room.\n"
+msgstr ""
+"警告:未跟踪文件出现在跟踪文件的路径上!重命名\n"
+"            %s -> %s\n"
+"         以腾出空间。\n"
+
+#: builtin/stash.c:490
 msgid "cannot apply a stash in the middle of a merge"
 msgstr "无法在合并过程中应用贮藏"
 
-#: builtin/stash.c:415
+#: builtin/stash.c:501
 #, c-format
 msgid "could not generate diff %s^!."
 msgstr "无法生成差异 %s^!."
 
-#: builtin/stash.c:422
+#: builtin/stash.c:508
 msgid "conflicts in index. Try without --index."
 msgstr "索引中有冲突。尝试不用 --index。"
 
-#: builtin/stash.c:428
+#: builtin/stash.c:514
 msgid "could not save index tree"
 msgstr "不能保存索引树"
 
-#: builtin/stash.c:437
+#: builtin/stash.c:523
 msgid "could not restore untracked files from stash"
 msgstr "无法从贮藏条目中恢复未跟踪文件"
 
-#: builtin/stash.c:451
+#: builtin/stash.c:537
 #, c-format
 msgid "Merging %s with %s"
 msgstr "正在合并 %s 和 %s"
 
-#: builtin/stash.c:461
+#: builtin/stash.c:547
 msgid "Index was not unstashed."
 msgstr "索引未从贮藏中恢复。"
 
-#: builtin/stash.c:522 builtin/stash.c:620
+#: builtin/stash.c:589 builtin/stash.c:687
 msgid "attempt to recreate the index"
 msgstr "尝试重建索引"
 
-#: builtin/stash.c:566
+#: builtin/stash.c:633
 #, c-format
 msgid "Dropped %s (%s)"
 msgstr "丢弃了 %s(%s)"
 
-#: builtin/stash.c:569
+#: builtin/stash.c:636
 #, c-format
 msgid "%s: Could not drop stash entry"
 msgstr "%s:无法丢弃贮藏条目"
 
-#: builtin/stash.c:582
+#: builtin/stash.c:649
 #, c-format
 msgid "'%s' is not a stash reference"
 msgstr "'%s' 不是一个贮藏引用"
 
-#: builtin/stash.c:632
+#: builtin/stash.c:699
 msgid "The stash entry is kept in case you need it again."
 msgstr "贮藏条目被保留以备您再次需要。"
 
-#: builtin/stash.c:655
+#: builtin/stash.c:722
 msgid "No branch name specified"
 msgstr "未指定分支名"
 
-#: builtin/stash.c:799 builtin/stash.c:836
+#: builtin/stash.c:866 builtin/stash.c:903
 #, c-format
 msgid "Cannot update %s with %s"
 msgstr "无法用 %2$s 更新 %1$s"
 
-#: builtin/stash.c:817 builtin/stash.c:1471 builtin/stash.c:1536
+#: builtin/stash.c:884 builtin/stash.c:1538 builtin/stash.c:1603
 msgid "stash message"
 msgstr "贮藏说明"
 
-#: builtin/stash.c:827
+#: builtin/stash.c:894
 msgid "\"git stash store\" requires one <commit> argument"
 msgstr "\"git stash store\" 需要一个 <提交> 参数"
 
-#: builtin/stash.c:1042
+#: builtin/stash.c:1109
 msgid "No changes selected"
 msgstr "没有选择变更"
 
-#: builtin/stash.c:1142
+#: builtin/stash.c:1209
 msgid "You do not have the initial commit yet"
 msgstr "您尚未建立初始提交"
 
-#: builtin/stash.c:1169
+#: builtin/stash.c:1236
 msgid "Cannot save the current index state"
 msgstr "无法保存当前索引状态"
 
-#: builtin/stash.c:1178
+#: builtin/stash.c:1245
 msgid "Cannot save the untracked files"
 msgstr "无法保存未跟踪文件"
 
-#: builtin/stash.c:1189 builtin/stash.c:1198
+#: builtin/stash.c:1256 builtin/stash.c:1265
 msgid "Cannot save the current worktree state"
 msgstr "无法保存当前工作区状态"
 
-#: builtin/stash.c:1226
+#: builtin/stash.c:1293
 msgid "Cannot record working tree state"
 msgstr "不能记录工作区状态"
 
-#: builtin/stash.c:1275
+#: builtin/stash.c:1342
 msgid "Can't use --patch and --include-untracked or --all at the same time"
 msgstr "不能同时使用参数 --patch 和 --include-untracked 或 --all"
 
-#: builtin/stash.c:1291
+#: builtin/stash.c:1358
 msgid "Did you forget to 'git add'?"
 msgstr "您是否忘了执行 'git add'?"
 
-#: builtin/stash.c:1306
+#: builtin/stash.c:1373
 msgid "No local changes to save"
 msgstr "没有要保存的本地修改"
 
-#: builtin/stash.c:1313
+#: builtin/stash.c:1380
 msgid "Cannot initialize stash"
 msgstr "无法初始化贮藏"
 
-#: builtin/stash.c:1328
+#: builtin/stash.c:1395
 msgid "Cannot save the current status"
 msgstr "无法保存当前状态"
 
-#: builtin/stash.c:1333
+#: builtin/stash.c:1400
 #, c-format
 msgid "Saved working directory and index state %s"
 msgstr "保存工作目录和索引状态 %s"
 
-#: builtin/stash.c:1423
+#: builtin/stash.c:1490
 msgid "Cannot remove worktree changes"
 msgstr "无法删除工作区变更"
 
-#: builtin/stash.c:1462 builtin/stash.c:1527
+#: builtin/stash.c:1529 builtin/stash.c:1594
 msgid "keep index"
 msgstr "保持索引"
 
-#: builtin/stash.c:1464 builtin/stash.c:1529
+#: builtin/stash.c:1531 builtin/stash.c:1596
 msgid "stash in patch mode"
 msgstr "以补丁模式贮藏"
 
-#: builtin/stash.c:1465 builtin/stash.c:1530
+#: builtin/stash.c:1532 builtin/stash.c:1597
 msgid "quiet mode"
 msgstr "静默模式"
 
-#: builtin/stash.c:1467 builtin/stash.c:1532
+#: builtin/stash.c:1534 builtin/stash.c:1599
 msgid "include untracked files in stash"
 msgstr "贮藏中包含未跟踪文件"
 
-#: builtin/stash.c:1469 builtin/stash.c:1534
+#: builtin/stash.c:1536 builtin/stash.c:1601
 msgid "include ignore files"
 msgstr "包含忽略的文件"
 
-#: builtin/stash.c:1569
+#: builtin/stash.c:1636
 msgid ""
 "the stash.useBuiltin support has been removed!\n"
 "See its entry in 'git help config' for details."
@@ -21394,11 +21788,12 @@ msgstr ""
 "."
 
 #: builtin/submodule--helper.c:565
-msgid "Suppress output of entering each submodule command"
-msgstr "阻止进入每一个子模组命令的输出"
+msgid "suppress output of entering each submodule command"
+msgstr "抑制进入每一个子模组命令的输出"
 
-#: builtin/submodule--helper.c:567 builtin/submodule--helper.c:1487
-msgid "Recurse into nested submodules"
+#: builtin/submodule--helper.c:567 builtin/submodule--helper.c:888
+#: builtin/submodule--helper.c:1487
+msgid "recurse into nested submodules"
 msgstr "递归进入嵌套子模组中"
 
 #: builtin/submodule--helper.c:572
@@ -21433,8 +21828,8 @@ msgid "Failed to register update mode for submodule path '%s'"
 msgstr "无法为子模组 '%s' 注册更新模式"
 
 #: builtin/submodule--helper.c:709
-msgid "Suppress output for initializing a submodule"
-msgstr "阻止子模组初始化的输出"
+msgid "suppress output for initializing a submodule"
+msgstr "抑制子模组初始化的输出"
 
 #: builtin/submodule--helper.c:714
 msgid "git submodule--helper init [<options>] [<path>]"
@@ -21456,19 +21851,15 @@ msgid "failed to recurse into submodule '%s'"
 msgstr "递归子模组 '%s' 失败"
 
 #: builtin/submodule--helper.c:886 builtin/submodule--helper.c:1623
-msgid "Suppress submodule status output"
-msgstr "阻止子模组状态输出"
+msgid "suppress submodule status output"
+msgstr "抑制子模组状态输出"
 
 #: builtin/submodule--helper.c:887
 msgid ""
-"Use commit stored in the index instead of the one stored in the submodule "
+"use commit stored in the index instead of the one stored in the submodule "
 "HEAD"
 msgstr "使用存储在索引中的提交,而非存储在子模组 HEAD 中的提交"
 
-#: builtin/submodule--helper.c:888
-msgid "recurse into nested submodules"
-msgstr "递归进入嵌套子模组中"
-
 #: builtin/submodule--helper.c:893
 msgid "git submodule status [--quiet] [--cached] [--recursive] [<path>...]"
 msgstr "git submodule status [--quiet] [--cached] [--recursive] [<路径>...]"
@@ -21551,8 +21942,8 @@ msgid "failed to update remote for submodule '%s'"
 msgstr "无法为子模组 '%s' 更新远程关联"
 
 #: builtin/submodule--helper.c:1485
-msgid "Suppress output of synchronizing submodule url"
-msgstr "阻止子模组 url 同步的输出"
+msgid "suppress output of synchronizing submodule url"
+msgstr "抑制子模组 URL 同步的输出"
 
 #: builtin/submodule--helper.c:1492
 msgid "git submodule--helper sync [--quiet] [--recursive] [<path>]"
@@ -21595,11 +21986,11 @@ msgid "Submodule '%s' (%s) unregistered for path '%s'\n"
 msgstr "子模组 '%s'(%s)未对路径 '%s' 注册\n"
 
 #: builtin/submodule--helper.c:1624
-msgid "Remove submodule working trees even if they contain local changes"
+msgid "remove submodule working trees even if they contain local changes"
 msgstr "删除子模组工作区,即使包含本地修改"
 
 #: builtin/submodule--helper.c:1625
-msgid "Unregister all submodules"
+msgid "unregister all submodules"
 msgstr "将所有子模组取消注册"
 
 #: builtin/submodule--helper.c:1630
@@ -21744,7 +22135,7 @@ msgid "rebase, merge, checkout or none"
 msgstr "rebase、merge、checkout 或 none"
 
 #: builtin/submodule--helper.c:2340
-msgid "Create a shallow clone truncated to the specified number of revisions"
+msgid "create a shallow clone truncated to the specified number of revisions"
 msgstr "创建一个指定深度的浅克隆"
 
 #: builtin/submodule--helper.c:2343
@@ -21813,8 +22204,8 @@ msgid "please make sure that the .gitmodules file is in the working tree"
 msgstr "请确认 .gitmodules 文件在工作区里"
 
 #: builtin/submodule--helper.c:2681
-msgid "Suppress output for setting url of a submodule"
-msgstr "阻止设置子模组 URL 的输出"
+msgid "suppress output for setting url of a submodule"
+msgstr "抑制设置子模组 URL 的输出"
 
 #: builtin/submodule--helper.c:2685
 msgid "git submodule--helper set-url [--quiet] <path> <newurl>"
@@ -21846,7 +22237,7 @@ msgstr "需要 --branch 或 --default"
 msgid "--branch and --default are mutually exclusive"
 msgstr "--branch 和 --default 是互斥的"
 
-#: builtin/submodule--helper.c:2792 git.c:438 git.c:711
+#: builtin/submodule--helper.c:2792 git.c:441 git.c:714
 #, c-format
 msgid "%s doesn't support --super-prefix"
 msgstr "%s 不支持 --super-prefix"
@@ -21916,12 +22307,12 @@ msgstr "git tag -v [--format=<格式>] <标签名>..."
 msgid "tag '%s' not found."
 msgstr "未发现标签 '%s'。"
 
-#: builtin/tag.c:105
+#: builtin/tag.c:124
 #, c-format
 msgid "Deleted tag '%s' (was %s)\n"
 msgstr "已删除标签 '%s'(曾为 %s)\n"
 
-#: builtin/tag.c:135
+#: builtin/tag.c:159
 #, c-format
 msgid ""
 "\n"
@@ -21934,7 +22325,7 @@ msgstr ""
 "  %s\n"
 "以 '%c' 开头的行将被忽略。\n"
 
-#: builtin/tag.c:139
+#: builtin/tag.c:163
 #, c-format
 msgid ""
 "\n"
@@ -21948,15 +22339,11 @@ msgstr ""
 "  %s\n"
 "以 '%c' 开头的行将被保留,如果您愿意也可以删除它们。\n"
 
-#: builtin/tag.c:198
+#: builtin/tag.c:230
 msgid "unable to sign the tag"
 msgstr "无法签署标签"
 
-#: builtin/tag.c:200
-msgid "unable to write tag file"
-msgstr "无法写标签文件"
-
-#: builtin/tag.c:216
+#: builtin/tag.c:248
 #, c-format
 msgid ""
 "You have created a nested tag. The object referred to by your new tag is\n"
@@ -21969,138 +22356,134 @@ msgstr ""
 "\n"
 "\tgit tag -f %s %s^{}"
 
-#: builtin/tag.c:232
+#: builtin/tag.c:264
 msgid "bad object type."
 msgstr "坏的对象类型。"
 
-#: builtin/tag.c:285
+#: builtin/tag.c:317
 msgid "no tag message?"
 msgstr "无标签说明?"
 
-#: builtin/tag.c:292
+#: builtin/tag.c:324
 #, c-format
 msgid "The tag message has been left in %s\n"
 msgstr "标签说明被保留在 %s\n"
 
-#: builtin/tag.c:403
+#: builtin/tag.c:435
 msgid "list tag names"
 msgstr "列出标签名称"
 
-#: builtin/tag.c:405
+#: builtin/tag.c:437
 msgid "print <n> lines of each tag message"
 msgstr "每个标签信息打印 <n> 行"
 
-#: builtin/tag.c:407
+#: builtin/tag.c:439
 msgid "delete tags"
 msgstr "删除标签"
 
-#: builtin/tag.c:408
+#: builtin/tag.c:440
 msgid "verify tags"
 msgstr "验证标签"
 
-#: builtin/tag.c:410
+#: builtin/tag.c:442
 msgid "Tag creation options"
 msgstr "标签创建选项"
 
-#: builtin/tag.c:412
+#: builtin/tag.c:444
 msgid "annotated tag, needs a message"
 msgstr "附注标签,需要一个说明"
 
-#: builtin/tag.c:414
+#: builtin/tag.c:446
 msgid "tag message"
 msgstr "标签说明"
 
-#: builtin/tag.c:416
+#: builtin/tag.c:448
 msgid "force edit of tag message"
 msgstr "强制编辑标签说明"
 
-#: builtin/tag.c:417
+#: builtin/tag.c:449
 msgid "annotated and GPG-signed tag"
 msgstr "附注并附加 GPG 签名的标签"
 
-#: builtin/tag.c:420
+#: builtin/tag.c:452
 msgid "use another key to sign the tag"
 msgstr "使用另外的私钥签名该标签"
 
-#: builtin/tag.c:421
+#: builtin/tag.c:453
 msgid "replace the tag if exists"
 msgstr "如果存在,替换现有的标签"
 
-#: builtin/tag.c:422 builtin/update-ref.c:505
+#: builtin/tag.c:454 builtin/update-ref.c:505
 msgid "create a reflog"
 msgstr "创建引用日志"
 
-#: builtin/tag.c:424
+#: builtin/tag.c:456
 msgid "Tag listing options"
 msgstr "标签列表选项"
 
-#: builtin/tag.c:425
+#: builtin/tag.c:457
 msgid "show tag list in columns"
 msgstr "以列的方式显示标签列表"
 
-#: builtin/tag.c:426 builtin/tag.c:428
+#: builtin/tag.c:458 builtin/tag.c:460
 msgid "print only tags that contain the commit"
 msgstr "只打印包含该提交的标签"
 
-#: builtin/tag.c:427 builtin/tag.c:429
+#: builtin/tag.c:459 builtin/tag.c:461
 msgid "print only tags that don't contain the commit"
 msgstr "只打印不包含该提交的标签"
 
-#: builtin/tag.c:430
+#: builtin/tag.c:462
 msgid "print only tags that are merged"
 msgstr "只打印已经合并的标签"
 
-#: builtin/tag.c:431
+#: builtin/tag.c:463
 msgid "print only tags that are not merged"
 msgstr "只打印尚未合并的标签"
 
-#: builtin/tag.c:435
+#: builtin/tag.c:467
 msgid "print only tags of the object"
 msgstr "只打印指向该对象的标签"
 
-#: builtin/tag.c:483
+#: builtin/tag.c:515
 msgid "--column and -n are incompatible"
 msgstr "--column 和 -n 不兼容"
 
-#: builtin/tag.c:505
+#: builtin/tag.c:537
 msgid "-n option is only allowed in list mode"
 msgstr "-n 选项只允许用在列表显示模式"
 
-#: builtin/tag.c:507
+#: builtin/tag.c:539
 msgid "--contains option is only allowed in list mode"
 msgstr "--contains 选项只允许用在列表显示模式"
 
-#: builtin/tag.c:509
+#: builtin/tag.c:541
 msgid "--no-contains option is only allowed in list mode"
 msgstr "--no-contains 选项只允许用在列表显示模式"
 
-#: builtin/tag.c:511
+#: builtin/tag.c:543
 msgid "--points-at option is only allowed in list mode"
 msgstr "--points-at 选项只允许用在列表显示模式"
 
-#: builtin/tag.c:513
+#: builtin/tag.c:545
 msgid "--merged and --no-merged options are only allowed in list mode"
 msgstr "--merged 和 --no-merged 选项只允许用在列表显示模式"
 
-#: builtin/tag.c:524
+#: builtin/tag.c:556
 msgid "only one -F or -m option is allowed."
 msgstr "只允许一个 -F 或 -m 选项。"
 
-#: builtin/tag.c:543
-msgid "too many params"
-msgstr "太多参数"
-
-#: builtin/tag.c:549
+#: builtin/tag.c:581
 #, c-format
 msgid "'%s' is not a valid tag name."
 msgstr "'%s' 不是一个有效的标签名称。"
 
-#: builtin/tag.c:554
+#: builtin/tag.c:586
 #, c-format
 msgid "tag '%s' already exists"
 msgstr "标签 '%s' 已存在"
 
-#: builtin/tag.c:585
+#: builtin/tag.c:617
 #, c-format
 msgid "Updated tag '%s' (was %s)\n"
 msgstr "已更新标签 '%s'(曾为 %s)\n"
@@ -22446,89 +22829,63 @@ msgstr "git verify-tag [-v | --verbose] [--format=<格式>] <标签>..."
 msgid "print tag contents"
 msgstr "打印标签内容"
 
-#: builtin/worktree.c:17
+#: builtin/worktree.c:18
 msgid "git worktree add [<options>] <path> [<commit-ish>]"
 msgstr "git worktree add [<选项>] <路径> [<提交>]"
 
-#: builtin/worktree.c:18
+#: builtin/worktree.c:19
 msgid "git worktree list [<options>]"
 msgstr "git worktree list [<选项>]"
 
-#: builtin/worktree.c:19
+#: builtin/worktree.c:20
 msgid "git worktree lock [<options>] <path>"
 msgstr "git worktree lock [<选项>] <路径>"
 
-#: builtin/worktree.c:20
+#: builtin/worktree.c:21
 msgid "git worktree move <worktree> <new-path>"
 msgstr "git worktree move <工作区> <新路径>"
 
-#: builtin/worktree.c:21
+#: builtin/worktree.c:22
 msgid "git worktree prune [<options>]"
 msgstr "git worktree prune [<选项>]"
 
-#: builtin/worktree.c:22
+#: builtin/worktree.c:23
 msgid "git worktree remove [<options>] <worktree>"
 msgstr "git worktree remove [<选项>] <工作区>"
 
-#: builtin/worktree.c:23
+#: builtin/worktree.c:24
 msgid "git worktree unlock <path>"
 msgstr "git worktree unlock <路径>"
 
-#: builtin/worktree.c:60 builtin/worktree.c:973
+#: builtin/worktree.c:61 builtin/worktree.c:933
 #, c-format
 msgid "failed to delete '%s'"
 msgstr "删除 '%s' 失败"
 
-#: builtin/worktree.c:85
-msgid "not a valid directory"
-msgstr "不是一个有效的目录"
-
-#: builtin/worktree.c:91
-msgid "gitdir file does not exist"
-msgstr "gitdir 文件不存在"
-
-#: builtin/worktree.c:96 builtin/worktree.c:105
-#, c-format
-msgid "unable to read gitdir file (%s)"
-msgstr "无法读取 gitdir 文件(%s)"
-
-#: builtin/worktree.c:115
-#, c-format
-msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
-msgstr "读取过短(期望 %<PRIuMAX> 字节,读取 %<PRIuMAX>)"
-
-#: builtin/worktree.c:123
-msgid "invalid gitdir file"
-msgstr "无效的 gitdir 文件"
-
-#: builtin/worktree.c:131
-msgid "gitdir file points to non-existent location"
-msgstr "gitdir 文件指向一个不存在的位置"
-
-#: builtin/worktree.c:146
+#: builtin/worktree.c:74
 #, c-format
 msgid "Removing %s/%s: %s"
 msgstr "删除 %s/%s: %s"
 
-#: builtin/worktree.c:221
+#: builtin/worktree.c:149
 msgid "report pruned working trees"
 msgstr "报告清除的工作区"
 
-#: builtin/worktree.c:223
+#: builtin/worktree.c:151
 msgid "expire working trees older than <time>"
 msgstr "将早于 <时间> 的工作区过期"
 
-#: builtin/worktree.c:293
+#: builtin/worktree.c:221
 #, c-format
 msgid "'%s' already exists"
 msgstr "'%s' 已经存在"
 
-#: builtin/worktree.c:302
+#: builtin/worktree.c:230
 #, c-format
 msgid "unusable worktree destination '%s'"
 msgstr "无法使用的工作区目标 '%s'"
 
-#: builtin/worktree.c:307
+#: builtin/worktree.c:235
 #, c-format
 msgid ""
 "'%s' is a missing but locked worktree;\n"
@@ -22537,7 +22894,7 @@ msgstr ""
 "'%s' 是一个丢失但锁定的工作区,\n"
 "使用 '%s -f -f' 覆盖,或用 'unlock' 和 'prune' 或 'remove' 清除"
 
-#: builtin/worktree.c:309
+#: builtin/worktree.c:237
 #, c-format
 msgid ""
 "'%s' is a missing but already registered worktree;\n"
@@ -22546,115 +22903,127 @@ msgstr ""
 "'%s' 是一个丢失但已经注册的工作区,\n"
 "使用 '%s -f' 覆盖,或用 'prune' 或 'remove' 清除"
 
-#: builtin/worktree.c:360
+#: builtin/worktree.c:288
 #, c-format
 msgid "could not create directory of '%s'"
 msgstr "不能创建目录 '%s'"
 
-#: builtin/worktree.c:494 builtin/worktree.c:500
+#: builtin/worktree.c:422 builtin/worktree.c:428
 #, c-format
 msgid "Preparing worktree (new branch '%s')"
 msgstr "准备工作区(新分支 '%s')"
 
-#: builtin/worktree.c:496
+#: builtin/worktree.c:424
 #, c-format
 msgid "Preparing worktree (resetting branch '%s'; was at %s)"
 msgstr "准备工作区(重置分支 '%s',之前为 %s)"
 
-#: builtin/worktree.c:505
+#: builtin/worktree.c:433
 #, c-format
 msgid "Preparing worktree (checking out '%s')"
 msgstr "准备工作区(检出 '%s')"
 
-#: builtin/worktree.c:511
+#: builtin/worktree.c:439
 #, c-format
 msgid "Preparing worktree (detached HEAD %s)"
 msgstr "准备工作区(分离头指针 %s)"
 
-#: builtin/worktree.c:552
+#: builtin/worktree.c:480
 msgid "checkout <branch> even if already checked out in other worktree"
 msgstr "检出 <分支>,即使已经被检出到其它工作区"
 
-#: builtin/worktree.c:555
+#: builtin/worktree.c:483
 msgid "create a new branch"
 msgstr "创建一个新分支"
 
-#: builtin/worktree.c:557
+#: builtin/worktree.c:485
 msgid "create or reset a branch"
 msgstr "创建或重置一个分支"
 
-#: builtin/worktree.c:559
+#: builtin/worktree.c:487
 msgid "populate the new working tree"
 msgstr "生成新的工作区"
 
-#: builtin/worktree.c:560
+#: builtin/worktree.c:488
 msgid "keep the new working tree locked"
 msgstr "锁定新工作区"
 
-#: builtin/worktree.c:563
+#: builtin/worktree.c:491
 msgid "set up tracking mode (see git-branch(1))"
 msgstr "设置跟踪模式(参见 git-branch(1))"
 
-#: builtin/worktree.c:566
+#: builtin/worktree.c:494
 msgid "try to match the new branch name with a remote-tracking branch"
 msgstr "尝试为新分支名匹配一个远程跟踪分支"
 
-#: builtin/worktree.c:574
+#: builtin/worktree.c:502
 msgid "-b, -B, and --detach are mutually exclusive"
 msgstr "-b、-B 和 --detach 是互斥的"
 
-#: builtin/worktree.c:635
+#: builtin/worktree.c:563
 msgid "--[no-]track can only be used if a new branch is created"
 msgstr "只能在创建新分支时使用选项 --[no-]track "
 
-#: builtin/worktree.c:758
+#: builtin/worktree.c:680
+msgid "show extended annotations and reasons, if available"
+msgstr "显示扩展的注释和原因(如果有)"
+
+#: builtin/worktree.c:682
+msgid "add 'prunable' annotation to worktrees older than <time>"
+msgstr "向早于 <时间> 的工作区添添加“可修剪”注释"
+
+#: builtin/worktree.c:691
+msgid "--verbose and --porcelain are mutually exclusive"
+msgstr "--verbose 和 --porcelain 互斥"
+
+#: builtin/worktree.c:718
 msgid "reason for locking"
 msgstr "锁定原因"
 
-#: builtin/worktree.c:770 builtin/worktree.c:803 builtin/worktree.c:877
-#: builtin/worktree.c:1001
+#: builtin/worktree.c:730 builtin/worktree.c:763 builtin/worktree.c:837
+#: builtin/worktree.c:961
 #, c-format
 msgid "'%s' is not a working tree"
 msgstr "'%s' 不是一个工作区"
 
-#: builtin/worktree.c:772 builtin/worktree.c:805
+#: builtin/worktree.c:732 builtin/worktree.c:765
 msgid "The main working tree cannot be locked or unlocked"
 msgstr "主工作区无法被加锁或解锁"
 
-#: builtin/worktree.c:777
+#: builtin/worktree.c:737
 #, c-format
 msgid "'%s' is already locked, reason: %s"
 msgstr "'%s' 已被锁定,原因:%s"
 
-#: builtin/worktree.c:779
+#: builtin/worktree.c:739
 #, c-format
 msgid "'%s' is already locked"
 msgstr "'%s' 已被锁定"
 
-#: builtin/worktree.c:807
+#: builtin/worktree.c:767
 #, c-format
 msgid "'%s' is not locked"
 msgstr "'%s' 未被锁定"
 
-#: builtin/worktree.c:848
+#: builtin/worktree.c:808
 msgid "working trees containing submodules cannot be moved or removed"
 msgstr "不能移动或删除包含子模组的工作区"
 
-#: builtin/worktree.c:856
+#: builtin/worktree.c:816
 msgid "force move even if worktree is dirty or locked"
 msgstr "强制移动,即使工作区是脏的或已锁定"
 
-#: builtin/worktree.c:879 builtin/worktree.c:1003
+#: builtin/worktree.c:839 builtin/worktree.c:963
 #, c-format
 msgid "'%s' is a main working tree"
 msgstr "'%s' 是一个主工作区"
 
-#: builtin/worktree.c:884
+#: builtin/worktree.c:844
 #, c-format
 msgid "could not figure out destination name from '%s'"
 msgstr "无法从 '%s' 算出目标名称"
 
-#: builtin/worktree.c:897
+#: builtin/worktree.c:857
 #, c-format
 msgid ""
 "cannot move a locked working tree, lock reason: %s\n"
@@ -22663,7 +23032,7 @@ msgstr ""
 "无法移动一个锁定的工作区,锁定原因:%s\n"
 "使用 'move -f -f' 覆盖或先解锁"
 
-#: builtin/worktree.c:899
+#: builtin/worktree.c:859
 msgid ""
 "cannot move a locked working tree;\n"
 "use 'move -f -f' to override or unlock first"
@@ -22671,36 +23040,36 @@ msgstr ""
 "无法移动一个锁定的工作区,\n"
 "使用 'move -f -f' 覆盖或先解锁"
 
-#: builtin/worktree.c:902
+#: builtin/worktree.c:862
 #, c-format
 msgid "validation failed, cannot move working tree: %s"
 msgstr "验证失败,无法移动工作区:%s"
 
-#: builtin/worktree.c:907
+#: builtin/worktree.c:867
 #, c-format
 msgid "failed to move '%s' to '%s'"
 msgstr "移动 '%s' 到 '%s' 失败"
 
-#: builtin/worktree.c:953
+#: builtin/worktree.c:913
 #, c-format
 msgid "failed to run 'git status' on '%s'"
 msgstr "在 '%s' 中执行 'git status' 失败"
 
-#: builtin/worktree.c:957
+#: builtin/worktree.c:917
 #, c-format
 msgid "'%s' contains modified or untracked files, use --force to delete it"
 msgstr "'%s' 包含修改或未跟踪的文件,使用 --force 删除"
 
-#: builtin/worktree.c:962
+#: builtin/worktree.c:922
 #, c-format
 msgid "failed to run 'git status' on '%s', code %d"
 msgstr "在 '%s' 中执行 'git status' 失败,退出码 %d"
 
-#: builtin/worktree.c:985
+#: builtin/worktree.c:945
 msgid "force removal even if worktree is dirty or locked"
 msgstr "强制删除,即使工作区是脏的或已锁定"
 
-#: builtin/worktree.c:1008
+#: builtin/worktree.c:968
 #, c-format
 msgid ""
 "cannot remove a locked working tree, lock reason: %s\n"
@@ -22709,7 +23078,7 @@ msgstr ""
 "无法删除一个锁定的工作区,锁定原因:%s\n"
 "使用 'remove -f -f' 覆盖或先解锁"
 
-#: builtin/worktree.c:1010
+#: builtin/worktree.c:970
 msgid ""
 "cannot remove a locked working tree;\n"
 "use 'remove -f -f' to override or unlock first"
@@ -22717,17 +23086,17 @@ msgstr ""
 "无法删除一个锁定的工作区,\n"
 "使用 'remove -f -f' 覆盖或先解锁"
 
-#: builtin/worktree.c:1013
+#: builtin/worktree.c:973
 #, c-format
 msgid "validation failed, cannot remove working tree: %s"
 msgstr "验证失败,无法删除工作区:%s"
 
-#: builtin/worktree.c:1037
+#: builtin/worktree.c:997
 #, c-format
 msgid "repair: %s: %s"
 msgstr "修理:%s:%s"
 
-#: builtin/worktree.c:1040
+#: builtin/worktree.c:1000
 #, c-format
 msgid "error: %s: %s"
 msgstr "错误:%s:%s"
@@ -22748,15 +23117,23 @@ msgstr "将 <前缀> 子目录内容写到一个树对象"
 msgid "only useful for debugging"
 msgstr "只对调试有用"
 
-#: http-fetch.c:114
+#: http-fetch.c:118
 #, c-format
 msgid "argument to --packfile must be a valid hash (got '%s')"
 msgstr "--packfile 的参数必须是有效的哈希值(得到 '%s')"
 
-#: http-fetch.c:122
+#: http-fetch.c:128
 msgid "not a git repository"
 msgstr "不是 git 仓库"
 
+#: http-fetch.c:134
+msgid "--packfile requires --index-pack-args"
+msgstr "--packfile 需要 --index-pack-args"
+
+#: http-fetch.c:143
+msgid "--index-pack-args can only be used with --packfile"
+msgstr "--index-pack-args 只能和 --packfile 一起使用"
+
 #: t/helper/test-fast-rebase.c:141
 msgid "unhandled options"
 msgstr "未处理的选项"
@@ -22789,16 +23166,17 @@ msgid ""
 "           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--"
 "bare]\n"
 "           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]\n"
+"           [--super-prefix=<path>] [--config-env=<name>=<envvar>]\n"
 "           <command> [<args>]"
 msgstr ""
 "git [--version] [--help] [-C <路径>] [-c <名称>=<取值>]\n"
 "           [--exec-path[=<路径>]] [--html-path] [--man-path] [--info-path]\n"
-"           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--"
-"bare]\n"
+"           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--bare]\n"
 "           [--git-dir=<路径>] [--work-tree=<路径>] [--namespace=<名称>]\n"
+"           [--super-prefix=<路径>] [--config-env=<名称>=<环境变量>]\n"
 "           <命令> [<参数>]"
 
-#: git.c:35
+#: git.c:36
 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"
@@ -22810,47 +23188,47 @@ msgstr ""
 "帮助。\n"
 "有关系统的概述,查看 'git help git'。"
 
-#: git.c:187
+#: git.c:188
 #, c-format
 msgid "no directory given for --git-dir\n"
 msgstr "没有为 --git-dir 提供目录\n"
 
-#: git.c:201
+#: git.c:202
 #, c-format
 msgid "no namespace given for --namespace\n"
 msgstr "没有为 --namespace 提供命名空间\n"
 
-#: git.c:215
+#: git.c:216
 #, c-format
 msgid "no directory given for --work-tree\n"
 msgstr "没有为 --work-tree 提供目录\n"
 
-#: git.c:229
+#: git.c:230
 #, c-format
 msgid "no prefix given for --super-prefix\n"
 msgstr "没有为 --super-prefix 提供前缀\n"
 
-#: git.c:251
+#: git.c:252
 #, c-format
 msgid "-c expects a configuration string\n"
 msgstr "应为 -c 提供一个配置字符串\n"
 
-#: git.c:289
+#: git.c:292
 #, c-format
 msgid "no directory given for -C\n"
 msgstr "没有为 -C 提供目录\n"
 
-#: git.c:315
+#: git.c:318
 #, c-format
 msgid "unknown option: %s\n"
 msgstr "未知选项:%s\n"
 
-#: git.c:364
+#: git.c:367
 #, c-format
 msgid "while expanding alias '%s': '%s'"
 msgstr "在扩展别名 '%s' 时:'%s'"
 
-#: git.c:373
+#: git.c:376
 #, c-format
 msgid ""
 "alias '%s' changes environment variables.\n"
@@ -22859,39 +23237,39 @@ msgstr ""
 "别名 '%s' 修改环境变量。您可以使用在别名中\n"
 "使用 '!git'"
 
-#: git.c:380
+#: git.c:383
 #, c-format
 msgid "empty alias for %s"
 msgstr "%s 的空别名"
 
-#: git.c:383
+#: git.c:386
 #, c-format
 msgid "recursive alias: %s"
 msgstr "递归的别名:%s"
 
-#: git.c:465
+#: git.c:468
 msgid "write failure on standard output"
 msgstr "在标准输出写入失败"
 
-#: git.c:467
+#: git.c:470
 msgid "unknown write failure on standard output"
 msgstr "到标准输出的未知写入错误"
 
-#: git.c:469
+#: git.c:472
 msgid "close failed on standard output"
 msgstr "标准输出关闭失败"
 
-#: git.c:820
+#: git.c:823
 #, c-format
 msgid "alias loop detected: expansion of '%s' does not terminate:%s"
 msgstr "检测到别名循环:'%s'的扩展未终止:%s"
 
-#: git.c:870
+#: git.c:873
 #, c-format
 msgid "cannot handle %s as a builtin"
 msgstr "不能作为内置命令处理 %s"
 
-#: git.c:883
+#: git.c:886
 #, c-format
 msgid ""
 "usage: %s\n"
@@ -22900,12 +23278,12 @@ msgstr ""
 "用法:%s\n"
 "\n"
 
-#: git.c:903
+#: git.c:906
 #, c-format
 msgid "expansion of alias '%s' failed; '%s' is not a git command\n"
 msgstr "展开别名命令 '%s' 失败,'%s' 不是一个 git 命令\n"
 
-#: git.c:915
+#: git.c:918
 #, c-format
 msgid "failed to run command '%s': %s\n"
 msgstr "运行命令 '%s' 失败:%s\n"
@@ -23138,11 +23516,11 @@ msgid ""
 "with --pathspec-from-file, pathspec elements are separated with NUL character"
 msgstr "使用 --pathspec-from-file,路径表达式用空字符分隔"
 
-#: ref-filter.h:96
+#: ref-filter.h:99
 msgid "key"
 msgstr "key"
 
-#: ref-filter.h:96
+#: ref-filter.h:99
 msgid "field name to sort on"
 msgstr "排序的字段名"
 
@@ -23150,14 +23528,6 @@ msgstr "排序的字段名"
 msgid "update the index with reused conflict resolution if possible"
 msgstr "如果可能,重用冲突解决更新索引"
 
-#: wt-status.h:80
-msgid "HEAD detached at "
-msgstr "头指针分离于 "
-
-#: wt-status.h:81
-msgid "HEAD detached from "
-msgstr "头指针分离自 "
-
 #: command-list.h:50
 msgid "Add file contents to the index"
 msgstr "添加文件内容至索引"
@@ -23487,8 +23857,8 @@ msgid "Write and verify multi-pack-indexes"
 msgstr "写入和校验多包索引"
 
 #: command-list.h:132
-msgid "Creates a tag object"
-msgstr "创建一个标签对象"
+msgid "Creates a tag object with extra validation"
+msgstr "å\88\9b建ä¸\80个æ\9c\89é¢\9då¤\96éª\8cè¯\81ç\9a\84æ \87签对象"
 
 #: command-list.h:133
 msgid "Build a tree-object from ls-tree formatted text"
@@ -23796,69 +24166,55 @@ msgid "Specifies intentionally untracked files to ignore"
 msgstr "忽略指定的未跟踪文件"
 
 #: command-list.h:209
+msgid "Map author/committer names and/or E-Mail addresses"
+msgstr "映射作者/提交者的名称和/或邮件地址"
+
+#: command-list.h:210
 msgid "Defining submodule properties"
 msgstr "定义子模组属性"
 
-#: command-list.h:210
+#: command-list.h:211
 msgid "Git namespaces"
 msgstr "Git 名字空间"
 
-#: command-list.h:211
+#: command-list.h:212
 msgid "Helper programs to interact with remote repositories"
 msgstr "与远程仓库交互的助手程序"
 
-#: command-list.h:212
+#: command-list.h:213
 msgid "Git Repository Layout"
 msgstr "Git 仓库布局"
 
-#: command-list.h:213
+#: command-list.h:214
 msgid "Specifying revisions and ranges for Git"
 msgstr "指定 Git 的版本和版本范围"
 
-#: command-list.h:214
+#: command-list.h:215
 msgid "Mounting one repository inside another"
 msgstr "将一个仓库安装到另外一个仓库中"
 
-#: command-list.h:215
+#: command-list.h:216
 msgid "A tutorial introduction to Git: part two"
 msgstr "一个 Git 教程:第二部分"
 
-#: command-list.h:216
+#: command-list.h:217
 msgid "A tutorial introduction to Git"
 msgstr "一个 Git 教程"
 
-#: command-list.h:217
+#: command-list.h:218
 msgid "An overview of recommended workflows with Git"
 msgstr "Git 推荐的工作流概览"
 
-#: git-bisect.sh:48
-#, sh-format
-msgid "Bad rev input: $arg"
-msgstr "坏的输入版本:$arg"
-
-#: git-bisect.sh:82
-msgid "No logfile given"
-msgstr "未提供日志文件"
-
-#: git-bisect.sh:83
-#, sh-format
-msgid "cannot read $file for replaying"
-msgstr "不能读取 $file 来重放"
-
-#: git-bisect.sh:105
-msgid "?? what are you talking about?"
-msgstr "?? 您在说什么?"
-
-#: git-bisect.sh:115
+#: git-bisect.sh:68
 msgid "bisect run failed: no command provided."
 msgstr "二分查找运行失败:没有提供命令。"
 
-#: git-bisect.sh:120
+#: git-bisect.sh:73
 #, sh-format
 msgid "running $command"
 msgstr "运行 $command"
 
-#: git-bisect.sh:127
+#: git-bisect.sh:80
 #, sh-format
 msgid ""
 "bisect run failed:\n"
@@ -23867,11 +24223,11 @@ msgstr ""
 "二分查找运行失败:\n"
 "命令 '$command' 的退出码 $res 小于 0 或大于等于 128"
 
-#: git-bisect.sh:152
+#: git-bisect.sh:105
 msgid "bisect run cannot continue any more"
 msgstr "二分查找不能继续运行"
 
-#: git-bisect.sh:158
+#: git-bisect.sh:111
 #, sh-format
 msgid ""
 "bisect run failed:\n"
@@ -23880,14 +24236,10 @@ msgstr ""
 "二分查找运行失败:\n"
 "'bisect-state $state' 退出码为 $res"
 
-#: git-bisect.sh:165
+#: git-bisect.sh:118
 msgid "bisect run success"
 msgstr "二分查找运行成功"
 
-#: git-bisect.sh:173
-msgid "We are not bisecting."
-msgstr "我们没有在二分查找。"
-
 #: git-merge-octopus.sh:46
 msgid ""
 "Error: Your local changes to the following files would be overwritten by "
index 960f7164ab26fbc86a8cf7f26187c5a78ead9e16..a0a23a955b2f34a5759c38740710bf1cc1c1a25b 100644 (file)
@@ -292,8 +292,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Git\n"
 "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2020-12-21 07:10+0800\n"
-"PO-Revision-Date: 2020-12-23 22:30+0800\n"
+"POT-Creation-Date: 2021-03-04 22:41+0800\n"
+"PO-Revision-Date: 2021-03-06 02:21+0800\n"
 "Last-Translator: Yi-Jyun Pan <pan93412@gmail.com>\n"
 "Language-Team: Chinese (Traditional) <zh-l10n@lists.linux.org.tw>\n"
 "Language: zh_TW\n"
@@ -310,9 +310,9 @@ msgstr ""
 msgid "Huh (%s)?"
 msgstr "嗯(%s)?"
 
-#: add-interactive.c:529 add-interactive.c:830 reset.c:65 sequencer.c:3284
-#: sequencer.c:3735 sequencer.c:3890 builtin/rebase.c:1532
-#: builtin/rebase.c:1955
+#: add-interactive.c:529 add-interactive.c:830 reset.c:65 sequencer.c:3292
+#: sequencer.c:3743 sequencer.c:3898 builtin/rebase.c:1538
+#: builtin/rebase.c:1963
 msgid "could not read index"
 msgstr "無法讀取索引"
 
@@ -340,7 +340,7 @@ msgstr "更新"
 msgid "could not stage '%s'"
 msgstr "無法暫存「%s」"
 
-#: add-interactive.c:703 add-interactive.c:892 reset.c:89 sequencer.c:3478
+#: add-interactive.c:703 add-interactive.c:892 reset.c:89 sequencer.c:3486
 msgid "could not write index"
 msgstr "無法寫入索引"
 
@@ -353,7 +353,7 @@ msgstr[0] "已更新 %d 個路徑\n"
 #: add-interactive.c:724 git-add--interactive.perl:676
 #, c-format, perl-format
 msgid "note: %s is untracked now.\n"
-msgstr ":%s 現已不再追蹤。\n"
+msgstr "注意:%s 現已不再追蹤。\n"
 
 #: add-interactive.c:729 apply.c:4125 builtin/checkout.c:295
 #: builtin/reset.c:145
@@ -495,7 +495,7 @@ msgstr "未快取"
 
 #: add-interactive.c:1144 apply.c:4987 apply.c:4990 builtin/am.c:2257
 #: builtin/am.c:2260 builtin/bugreport.c:134 builtin/clone.c:124
-#: builtin/fetch.c:147 builtin/merge.c:284 builtin/pull.c:190
+#: builtin/fetch.c:150 builtin/merge.c:285 builtin/pull.c:190
 #: builtin/submodule--helper.c:409 builtin/submodule--helper.c:1818
 #: builtin/submodule--helper.c:1821 builtin/submodule--helper.c:2326
 #: builtin/submodule--helper.c:2329 builtin/submodule--helper.c:2572
@@ -1055,7 +1055,7 @@ msgstr ""
 msgid "Exiting because of an unresolved conflict."
 msgstr "因為存在未解決的衝突而離開。"
 
-#: advice.c:281 builtin/merge.c:1369
+#: advice.c:281 builtin/merge.c:1370
 msgid "You have not concluded your merge (MERGE_HEAD exists)."
 msgstr "您尚未結束您的合併(存在 MERGE_HEAD)。"
 
@@ -1344,7 +1344,8 @@ msgstr "打修補檔失敗:%s:%ld"
 msgid "cannot checkout %s"
 msgstr "不能檢出 %s"
 
-#: apply.c:3405 apply.c:3416 apply.c:3462 midx.c:73 setup.c:308
+#: apply.c:3405 apply.c:3416 apply.c:3462 midx.c:86 pack-revindex.c:213
+#: setup.c:308
 #, c-format
 msgid "failed to read %s"
 msgstr "無法讀取 %s"
@@ -1503,7 +1504,7 @@ msgstr "不能為建立檔案 %s 建立後端儲存"
 msgid "unable to add cache entry for %s"
 msgstr "無法為 %s 新增快取條目"
 
-#: apply.c:4374 builtin/bisect--helper.c:524
+#: apply.c:4374 builtin/bisect--helper.c:523
 #, c-format
 msgid "failed to write to '%s'"
 msgstr "寫入 '%s' 失敗"
@@ -1538,7 +1539,7 @@ msgstr[0] "套用 %%s 個修補檔,其中 %d 個被拒絕..."
 msgid "truncating .rej filename to %.*s.rej"
 msgstr "截短 .rej 檔案名為 %.*s.rej"
 
-#: apply.c:4576 builtin/fetch.c:927 builtin/fetch.c:1228
+#: apply.c:4576 builtin/fetch.c:933 builtin/fetch.c:1334
 #, c-format
 msgid "cannot open %s"
 msgstr "不能開啟 %s"
@@ -1589,7 +1590,7 @@ msgid "%d line applied after fixing whitespace errors."
 msgid_plural "%d lines applied after fixing whitespace errors."
 msgstr[0] "修復空白錯誤後,應用了 %d 行。"
 
-#: apply.c:4960 builtin/add.c:618 builtin/mv.c:304 builtin/rm.c:406
+#: apply.c:4960 builtin/add.c:626 builtin/mv.c:304 builtin/rm.c:406
 msgid "Unable to write new index file"
 msgstr "無法寫入新索引檔案"
 
@@ -1657,7 +1658,7 @@ msgstr "如果一個修補檔不能應用則嘗試三方合併"
 msgid "build a temporary index based on embedded index information"
 msgstr "建立一個暫時索引基於嵌入的索引訊息"
 
-#: apply.c:5025 builtin/checkout-index.c:182 builtin/ls-files.c:525
+#: apply.c:5025 builtin/checkout-index.c:195 builtin/ls-files.c:540
 msgid "paths are separated with NUL character"
 msgstr "路徑以 NUL 字元分隔"
 
@@ -1667,7 +1668,7 @@ msgstr "確保至少符合 <n> 行上下文"
 
 #: apply.c:5028 builtin/am.c:2245 builtin/interpret-trailers.c:98
 #: builtin/interpret-trailers.c:100 builtin/interpret-trailers.c:102
-#: builtin/pack-objects.c:3562 builtin/rebase.c:1346
+#: builtin/pack-objects.c:3577 builtin/rebase.c:1352
 msgid "action"
 msgstr "動作"
 
@@ -1695,9 +1696,9 @@ msgstr "將拒絕的修補檔片段儲存在對應的 *.rej 檔案中"
 msgid "allow overlapping hunks"
 msgstr "允許重疊的修補檔片段"
 
-#: apply.c:5045 builtin/add.c:329 builtin/check-ignore.c:22
-#: builtin/commit.c:1364 builtin/count-objects.c:98 builtin/fsck.c:775
-#: builtin/log.c:2287 builtin/mv.c:123 builtin/read-tree.c:128
+#: apply.c:5045 builtin/add.c:337 builtin/check-ignore.c:22
+#: builtin/commit.c:1364 builtin/count-objects.c:98 builtin/fsck.c:757
+#: builtin/log.c:2286 builtin/mv.c:123 builtin/read-tree.c:128
 msgid "be verbose"
 msgstr "詳細輸出"
 
@@ -1773,25 +1774,25 @@ msgstr "git archive --list"
 msgid ""
 "git archive --remote <repo> [--exec <cmd>] [<options>] <tree-ish> [<path>...]"
 msgstr ""
-"git archive --remote <版本庫> [--exec <令>] [<選項>] <樹或提交> [<路徑>...]"
+"git archive --remote <版本庫> [--exec <令>] [<選項>] <樹或提交> [<路徑>...]"
 
 #: archive.c:17
 msgid "git archive --remote <repo> [--exec <cmd>] --list"
-msgstr "git archive --remote <版本庫> [--exec <令>] --list"
+msgstr "git archive --remote <版本庫> [--exec <令>] --list"
 
 #: archive.c:192
 #, c-format
 msgid "cannot read %s"
 msgstr "不能讀取 %s"
 
-#: archive.c:345 sequencer.c:459 sequencer.c:1736 sequencer.c:2886
-#: sequencer.c:3327 sequencer.c:3436 builtin/am.c:249 builtin/commit.c:786
-#: builtin/merge.c:1138
+#: archive.c:345 sequencer.c:459 sequencer.c:1744 sequencer.c:2894
+#: sequencer.c:3335 sequencer.c:3444 builtin/am.c:249 builtin/commit.c:786
+#: builtin/merge.c:1139
 #, c-format
 msgid "could not read '%s'"
 msgstr "不能讀取 '%s'"
 
-#: archive.c:430 builtin/add.c:181 builtin/add.c:594 builtin/rm.c:315
+#: archive.c:430 builtin/add.c:189 builtin/add.c:602 builtin/rm.c:315
 #, c-format
 msgid "pathspec '%s' did not match any files"
 msgstr "路徑規格 '%s' 未符合任何檔案"
@@ -1833,7 +1834,7 @@ msgstr "格式"
 msgid "archive format"
 msgstr "歸檔格式"
 
-#: archive.c:556 builtin/log.c:1765
+#: archive.c:556 builtin/log.c:1764
 msgid "prefix"
 msgstr "前綴"
 
@@ -1841,11 +1842,11 @@ msgstr "前綴"
 msgid "prepend prefix to each pathname in the archive"
 msgstr "為歸檔中每個路徑名加上前綴"
 
-#: archive.c:558 archive.c:561 builtin/blame.c:886 builtin/blame.c:890
-#: builtin/blame.c:891 builtin/commit-tree.c:117 builtin/config.c:135
+#: archive.c:558 archive.c:561 builtin/blame.c:884 builtin/blame.c:888
+#: builtin/blame.c:889 builtin/commit-tree.c:117 builtin/config.c:135
 #: builtin/fast-export.c:1207 builtin/fast-export.c:1209
-#: builtin/fast-export.c:1213 builtin/grep.c:919 builtin/hash-object.c:105
-#: builtin/ls-files.c:561 builtin/ls-files.c:564 builtin/notes.c:412
+#: builtin/fast-export.c:1213 builtin/grep.c:920 builtin/hash-object.c:105
+#: builtin/ls-files.c:576 builtin/ls-files.c:579 builtin/notes.c:412
 #: builtin/notes.c:578 builtin/read-tree.c:123 parse-options.h:190
 msgid "file"
 msgstr "檔案"
@@ -1944,7 +1945,7 @@ msgstr "檔案 '%s' 包含錯誤的引用格式:%s"
 #: bisect.c:699
 #, c-format
 msgid "We cannot bisect more!\n"
-msgstr "我們無法進行更多的二分尋找!\n"
+msgstr "我們無法進行更多的二分搜尋!\n"
 
 #: bisect.c:766
 #, c-format
@@ -1986,7 +1987,7 @@ msgid ""
 "Maybe you mistook %s and %s revs?\n"
 msgstr ""
 "一些 %s 版本不是 %s 版本的祖先。\n"
-"這種情況下 git 二分尋找無法正常工作。\n"
+"這種情況下 git 二分搜尋無法正常工作。\n"
 "您可能弄錯了 %s 和 %s 版本?\n"
 
 #: bisect.c:822
@@ -2003,26 +2004,26 @@ msgstr ""
 #: bisect.c:861
 #, c-format
 msgid "Bisecting: a merge base must be tested\n"
-msgstr "二分尋找中:合併基礎必須是經過測試的\n"
+msgstr "二分搜尋中:合併基礎必須是經過測試的\n"
 
 #: bisect.c:911
 #, c-format
 msgid "a %s revision is needed"
 msgstr "需要一個 %s 版本"
 
-#: bisect.c:941 builtin/notes.c:177 builtin/tag.c:255
+#: bisect.c:941 builtin/notes.c:177 builtin/tag.c:287
 #, c-format
 msgid "could not create file '%s'"
 msgstr "不能建立檔案 '%s'"
 
-#: bisect.c:987 builtin/merge.c:152
+#: bisect.c:987 builtin/merge.c:153
 #, c-format
 msgid "could not read file '%s'"
 msgstr "不能讀取檔案 '%s'"
 
 #: bisect.c:1027
 msgid "reading bisect refs failed"
-msgstr "讀取二分尋找引用失敗"
+msgstr "讀取二分搜尋引用失敗"
 
 #: bisect.c:1057
 #, c-format
@@ -2033,10 +2034,10 @@ msgstr "%s 同時為 %s 和 %s\n"
 #, c-format
 msgid ""
 "No testable commit found.\n"
-"Maybe you started with bad path parameters?\n"
+"Maybe you started with bad path arguments?\n"
 msgstr ""
-"æ²\92æ\9c\89ç\99¼ç\8f¾å\8f¯測試的提交。\n"
-"å\8f¯è\83½æ\82¨å\9c¨å\9f·è¡\8cæ\99\82使ç\94¨äº\86é\8c¯èª¤ç\9a\84è·¯å¾\91å\8f\83æ\95¸?\n"
+"æ²\92æ\89¾å\88°è\83½å¤ 測試的提交。\n"
+"å\8f¯è\83½æ\98¯å\9f·è¡\8cå\82³å\85¥ç\9a\84è·¯å¾\91å¼\95æ\95¸æ\98¯é\8c¯èª¤ç\9a\84?\n"
 
 #: bisect.c:1095
 #, c-format
@@ -2051,7 +2052,7 @@ msgstr[0] "(大概 %d 步)"
 #, 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[0] "二分搜尋中:在此之後,還剩 %d 個版本待測試 %s\n"
 
 #: blame.c:2777
 msgid "--contents and --reverse do not blend well."
@@ -2065,11 +2066,11 @@ msgstr "不能將 --contents 和最終的提交物件名共用"
 msgid "--reverse and --first-parent together require specified latest commit"
 msgstr "--reverse 和 --first-parent 共用,需要指定最新的提交"
 
-#: blame.c:2821 bundle.c:213 ref-filter.c:2272 remote.c:2031 sequencer.c:2138
-#: sequencer.c:4633 submodule.c:855 builtin/commit.c:1045 builtin/log.c:409
-#: builtin/log.c:1023 builtin/log.c:1625 builtin/log.c:2046 builtin/log.c:2336
-#: builtin/merge.c:423 builtin/pack-objects.c:3380 builtin/pack-objects.c:3395
-#: builtin/shortlog.c:267
+#: blame.c:2821 bundle.c:213 ref-filter.c:2206 remote.c:2041 sequencer.c:2146
+#: sequencer.c:4641 submodule.c:856 builtin/commit.c:1045 builtin/log.c:411
+#: builtin/log.c:1016 builtin/log.c:1624 builtin/log.c:2045 builtin/log.c:2335
+#: builtin/merge.c:424 builtin/pack-objects.c:3395 builtin/pack-objects.c:3410
+#: builtin/shortlog.c:255
 msgid "revision walk setup failed"
 msgstr "版本遍歷設定失敗"
 
@@ -2241,7 +2242,7 @@ msgstr "'%s' 不像是一個 v2 或 v3 版本的包檔案"
 msgid "unrecognized header: %s%s (%d)"
 msgstr "無法識別的包頭:%s%s (%d)"
 
-#: bundle.c:136 rerere.c:480 rerere.c:690 sequencer.c:2390 sequencer.c:3176
+#: bundle.c:136 rerere.c:464 rerere.c:674 sequencer.c:2398 sequencer.c:3184
 #: builtin/commit.c:814
 #, c-format
 msgid "could not open '%s'"
@@ -2283,293 +2284,308 @@ msgstr "不能生成 pack-objects 進程"
 msgid "pack-objects died"
 msgstr "pack-objects 終止"
 
-#: bundle.c:379
-msgid "rev-list died"
-msgstr "rev-list 終止"
-
-#: bundle.c:428
+#: bundle.c:386
 #, c-format
 msgid "ref '%s' is excluded by the rev-list options"
 msgstr "引用 '%s' 被 rev-list 選項排除"
 
-#: bundle.c:498
+#: bundle.c:490
 #, c-format
 msgid "unsupported bundle version %d"
 msgstr "不支援的包版本 %d"
 
-#: bundle.c:500
+#: bundle.c:492
 #, c-format
 msgid "cannot write bundle version %d with algorithm %s"
 msgstr "無法寫入 %2$s 演算法的包版本 %1$d"
 
-#: bundle.c:522 builtin/log.c:209 builtin/log.c:1927 builtin/shortlog.c:408
+#: bundle.c:510 builtin/log.c:210 builtin/log.c:1926 builtin/shortlog.c:396
 #, c-format
 msgid "unrecognized argument: %s"
 msgstr "無法識別的參數:%s"
 
-#: bundle.c:530
+#: bundle.c:539
 msgid "Refusing to create empty bundle."
 msgstr "不能建立空包。"
 
-#: bundle.c:540
+#: bundle.c:549
 #, c-format
 msgid "cannot create '%s'"
 msgstr "不能建立 '%s'"
 
-#: bundle.c:565
+#: bundle.c:574
 msgid "index-pack died"
 msgstr "index-pack 終止"
 
+#: chunk-format.c:113
+msgid "terminating chunk id appears earlier than expected"
+msgstr "終止區塊 id 出現的時間早於預期"
+
+#: chunk-format.c:122
+#, c-format
+msgid "improper chunk offset(s) %<PRIx64> and %<PRIx64>"
+msgstr "不正確的區塊偏移 %<PRIx64> 及 %<PRIx64>"
+
+#: chunk-format.c:129
+#, c-format
+msgid "duplicate chunk ID %<PRIx32> found"
+msgstr "找到重複的區塊 ID %<PRIx32>"
+
+#: chunk-format.c:143
+#, c-format
+msgid "final chunk has non-zero id %<PRIx32>"
+msgstr "最終區塊有非零 ID %<PRIx32>"
+
 #: color.c:329
 #, c-format
 msgid "invalid color value: %.*s"
 msgstr "無效的顏色值:%.*s"
 
-#: commit-graph.c:188 midx.c:47
+#: commit-graph.c:197 midx.c:46
 msgid "invalid hash version"
 msgstr "無效的雜湊版本"
 
-#: commit-graph.c:246
+#: commit-graph.c:255
 msgid "commit-graph file is too small"
 msgstr "提交圖形檔案太小"
 
-#: commit-graph.c:311
+#: commit-graph.c:348
 #, c-format
 msgid "commit-graph signature %X does not match signature %X"
 msgstr "提交圖形簽名 %X 和簽名 %X 不符合"
 
-#: commit-graph.c:318
+#: commit-graph.c:355
 #, c-format
 msgid "commit-graph version %X does not match version %X"
 msgstr "提交圖形版本 %X 和版本 %X 不符合"
 
-#: commit-graph.c:325
+#: commit-graph.c:362
 #, c-format
 msgid "commit-graph hash version %X does not match version %X"
 msgstr "提交圖形雜湊版本 %X 和版本 %X 不符合"
 
-#: commit-graph.c:342
+#: commit-graph.c:379
 #, c-format
 msgid "commit-graph file is too small to hold %u chunks"
 msgstr "commit-graph 檔案不夠放置 %u 個區塊"
 
-#: commit-graph.c:361
-#, c-format
-msgid "commit-graph improper chunk offset %08x%08x"
-msgstr "提交圖形不正確的區塊位移 %08x%08x"
-
-#: commit-graph.c:433
-#, c-format
-msgid "commit-graph chunk id %08x appears multiple times"
-msgstr "提交圖形區塊 id %08x 出現了多次"
-
-#: commit-graph.c:499
+#: commit-graph.c:472
 msgid "commit-graph has no base graphs chunk"
 msgstr "提交圖形沒有基礎圖形區塊"
 
-#: commit-graph.c:509
+#: commit-graph.c:482
 msgid "commit-graph chain does not match"
 msgstr "提交圖形鏈不符合"
 
-#: commit-graph.c:557
+#: commit-graph.c:530
 #, c-format
 msgid "invalid commit-graph chain: line '%s' not a hash"
 msgstr "無效的提交圖形鏈:行 '%s' 不是一個雜湊值"
 
-#: commit-graph.c:581
+#: commit-graph.c:554
 msgid "unable to find all commit-graph files"
 msgstr "無法找到所有提交圖形檔案"
 
-#: commit-graph.c:721 commit-graph.c:785
+#: commit-graph.c:735 commit-graph.c:772
 msgid "invalid commit position. commit-graph is likely corrupt"
 msgstr "無效的提交位置。提交圖形可能已損壞"
 
-#: commit-graph.c:742
+#: commit-graph.c:756
 #, c-format
 msgid "could not find commit %s"
 msgstr "無法找到提交 %s"
 
-#: commit-graph.c:1036 builtin/am.c:1292
+#: commit-graph.c:789
+msgid "commit-graph requires overflow generation data but has none"
+msgstr ""
+
+#: commit-graph.c:1065 builtin/am.c:1292
 #, c-format
 msgid "unable to parse commit %s"
 msgstr "不能解析提交 %s"
 
-#: commit-graph.c:1252 builtin/pack-objects.c:2864
+#: commit-graph.c:1327 builtin/pack-objects.c:2872
 #, c-format
 msgid "unable to get type of object %s"
 msgstr "無法獲得物件 %s 類型"
 
-#: commit-graph.c:1283
+#: commit-graph.c:1358
 msgid "Loading known commits in commit graph"
 msgstr "正在載入提交圖中的已知提交"
 
-#: commit-graph.c:1300
+#: commit-graph.c:1375
 msgid "Expanding reachable commits in commit graph"
 msgstr "正在擴展提交圖中的可以取得提交"
 
-#: commit-graph.c:1320
+#: commit-graph.c:1395
 msgid "Clearing commit marks in commit graph"
 msgstr "正在清除提交圖中的提交標記"
 
-#: commit-graph.c:1339
+#: commit-graph.c:1414
+#, fuzzy
+#| msgid "Computing commit graph generation numbers"
+msgid "Computing commit graph topological levels"
+msgstr "正在計算提交圖世代數字"
+
+#: commit-graph.c:1467
 msgid "Computing commit graph generation numbers"
 msgstr "正在計算提交圖世代數字"
 
-#: commit-graph.c:1406
+#: commit-graph.c:1548
 msgid "Computing commit changed paths Bloom filters"
 msgstr "正在計算提交變更路徑的布隆過濾器"
 
-#: commit-graph.c:1483
+#: commit-graph.c:1625
 msgid "Collecting referenced commits"
 msgstr "正在收集引用提交"
 
-#: commit-graph.c:1508
+#: commit-graph.c:1650
 #, c-format
 msgid "Finding commits for commit graph in %d pack"
 msgid_plural "Finding commits for commit graph in %d packs"
 msgstr[0] "正在 %d 個包中尋找提交圖的提交"
 
-#: commit-graph.c:1521
+#: commit-graph.c:1663
 #, c-format
 msgid "error adding pack %s"
 msgstr "新增包 %s 發生錯誤"
 
-#: commit-graph.c:1525
+#: commit-graph.c:1667
 #, c-format
 msgid "error opening index for %s"
 msgstr "為 %s 開啟索引發生錯誤"
 
-#: commit-graph.c:1562
+#: commit-graph.c:1704
 msgid "Finding commits for commit graph among packed objects"
 msgstr "正在打包物件中尋找提交圖的提交"
 
-#: commit-graph.c:1580
+#: commit-graph.c:1722
 msgid "Finding extra edges in commit graph"
 msgstr "正在尋找提交圖中額外的邊"
 
-#: commit-graph.c:1628
+#: commit-graph.c:1771
 msgid "failed to write correct number of base graph ids"
 msgstr "無法寫入正確數量的基礎圖形 ID"
 
-#: commit-graph.c:1670 midx.c:819
+#: commit-graph.c:1802 midx.c:794
 #, c-format
 msgid "unable to create leading directories of %s"
 msgstr "不能為 %s 建立先導目錄"
 
-#: commit-graph.c:1683
+#: commit-graph.c:1815
 msgid "unable to create temporary graph layer"
 msgstr "無法建立暫時的圖形層"
 
-#: commit-graph.c:1688
+#: commit-graph.c:1820
 #, c-format
 msgid "unable to adjust shared permissions for '%s'"
 msgstr "無法調整「%s」的共用權限"
 
-#: commit-graph.c:1758
+#: commit-graph.c:1879
 #, c-format
 msgid "Writing out commit graph in %d pass"
 msgid_plural "Writing out commit graph in %d passes"
 msgstr[0] "正在用 %d 步寫出提交圖"
 
-#: commit-graph.c:1803
+#: commit-graph.c:1915
 msgid "unable to open commit-graph chain file"
 msgstr "無法開啟提交圖形鏈檔案"
 
-#: commit-graph.c:1819
+#: commit-graph.c:1931
 msgid "failed to rename base commit-graph file"
 msgstr "無法重新命名基礎提交圖形檔案"
 
-#: commit-graph.c:1839
+#: commit-graph.c:1951
 msgid "failed to rename temporary commit-graph file"
 msgstr "無法重新命名暫時提交圖形檔案"
 
-#: commit-graph.c:1965
+#: commit-graph.c:2084
 msgid "Scanning merged commits"
 msgstr "正在掃描合併提交"
 
-#: commit-graph.c:2009
+#: commit-graph.c:2128
 msgid "Merging commit-graph"
 msgstr "正在合併提交圖形"
 
-#: commit-graph.c:2115
+#: commit-graph.c:2235
 msgid "attempting to write a commit-graph, but 'core.commitGraph' is disabled"
 msgstr "嘗試寫入提交圖形,但 “core.commitGraph” 已被停用。"
 
-#: commit-graph.c:2214
+#: commit-graph.c:2342
 msgid "too many commits to write graph"
 msgstr "提交太多不能畫圖"
 
-#: commit-graph.c:2307
+#: commit-graph.c:2440
 msgid "the commit-graph file has incorrect checksum and is likely corrupt"
 msgstr "提交圖檔案的總和檢查碼錯誤,可能已經損壞"
 
-#: commit-graph.c:2317
+#: commit-graph.c:2450
 #, c-format
 msgid "commit-graph has incorrect OID order: %s then %s"
 msgstr "提交圖形的物件 ID 順序不正確:%s 然後 %s"
 
-#: commit-graph.c:2327 commit-graph.c:2342
+#: commit-graph.c:2460 commit-graph.c:2475
 #, c-format
 msgid "commit-graph has incorrect fanout value: fanout[%d] = %u != %u"
 msgstr "提交圖形有不正確的扇出值:fanout[%d] = %u != %u"
 
-#: commit-graph.c:2334
+#: commit-graph.c:2467
 #, c-format
 msgid "failed to parse commit %s from commit-graph"
 msgstr "無法從提交圖形中解析提交 %s"
 
-#: commit-graph.c:2352
+#: commit-graph.c:2485
 msgid "Verifying commits in commit graph"
 msgstr "正在驗證提交圖中的提交"
 
-#: commit-graph.c:2367
+#: commit-graph.c:2500
 #, c-format
 msgid "failed to parse commit %s from object database for commit-graph"
 msgstr "無法從提交圖形的物件庫中解析提交 %s"
 
-#: commit-graph.c:2374
+#: commit-graph.c:2507
 #, c-format
 msgid "root tree OID for commit %s in commit-graph is %s != %s"
 msgstr "提交圖形中的提交 %s 的根樹狀物件 ID 是 %s != %s"
 
-#: commit-graph.c:2384
+#: commit-graph.c:2517
 #, c-format
 msgid "commit-graph parent list for commit %s is too long"
 msgstr "提交 %s 的提交圖形父提交列表太長了"
 
-#: commit-graph.c:2393
+#: commit-graph.c:2526
 #, c-format
 msgid "commit-graph parent for %s is %s != %s"
 msgstr "%s 的提交圖形父提交是 %s != %s"
 
-#: commit-graph.c:2407
+#: commit-graph.c:2540
 #, c-format
 msgid "commit-graph parent list for commit %s terminates early"
 msgstr "提交 %s 的提交圖形父提交列表過早終止"
 
-#: commit-graph.c:2412
+#: commit-graph.c:2545
 #, c-format
 msgid ""
 "commit-graph has generation number zero for commit %s, but non-zero elsewhere"
 msgstr "提交圖形中提交 %s 的世代號是零,但其它地方非零"
 
-#: commit-graph.c:2416
+#: commit-graph.c:2549
 #, c-format
 msgid ""
 "commit-graph has non-zero generation number for commit %s, but zero elsewhere"
 msgstr "提交圖形中提交 %s 的世代號非零,但其它地方是零"
 
-#: commit-graph.c:2432
+#: commit-graph.c:2566
 #, c-format
-msgid "commit-graph generation for commit %s is %u != %u"
-msgstr "提交圖形中的提交 %s 的世代號是 %u != %u"
+msgid "commit-graph generation for commit %s is %<PRIuMAX> < %<PRIuMAX>"
+msgstr "提交 %s 的提交圖形處於 %<PRIuMAX> < %<PRIuMAX> 世代"
 
-#: commit-graph.c:2438
+#: commit-graph.c:2572
 #, c-format
 msgid "commit date for commit %s in commit-graph is %<PRIuMAX> != %<PRIuMAX>"
 msgstr "提交圖形中提交 %s 的提交日期是 %<PRIuMAX> != %<PRIuMAX>"
 
-#: commit.c:52 sequencer.c:2879 builtin/am.c:359 builtin/am.c:403
+#: commit.c:52 sequencer.c:2887 builtin/am.c:359 builtin/am.c:403
 #: builtin/am.c:1371 builtin/am.c:2018 builtin/replace.c:457
 #, c-format
 msgid "could not parse %s"
@@ -2600,27 +2616,27 @@ msgstr ""
 "設定 \"git config advice.graftFileDeprecated false\"\n"
 "可關閉本消息"
 
-#: commit.c:1172
+#: commit.c:1223
 #, c-format
 msgid "Commit %s has an untrusted GPG signature, allegedly by %s."
 msgstr "提交 %s 有一個非可信的聲稱來自 %s 的 GPG 簽名。"
 
-#: commit.c:1176
+#: commit.c:1227
 #, c-format
 msgid "Commit %s has a bad GPG signature allegedly by %s."
 msgstr "提交 %s 有一個錯誤的聲稱來自 %s 的 GPG 簽名。"
 
-#: commit.c:1179
+#: commit.c:1230
 #, c-format
 msgid "Commit %s does not have a GPG signature."
 msgstr "提交 %s 沒有 GPG 簽名。"
 
-#: commit.c:1182
+#: commit.c:1233
 #, c-format
 msgid "Commit %s has a good GPG signature by %s\n"
 msgstr "提交 %s 有一個來自 %s 的好的 GPG 簽名。\n"
 
-#: commit.c:1436
+#: commit.c:1487
 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"
@@ -2634,7 +2650,7 @@ msgstr ""
 msgid "memory exhausted"
 msgstr "記憶體耗盡"
 
-#: config.c:125
+#: config.c:126
 #, c-format
 msgid ""
 "exceeded maximum include depth (%d) while including\n"
@@ -2649,289 +2665,333 @@ msgstr ""
 "\t%2$s\n"
 "這可能是因為循環包含。"
 
-#: config.c:141
+#: config.c:142
 #, c-format
 msgid "could not expand include path '%s'"
 msgstr "無法擴展包含路徑 '%s'"
 
-#: config.c:152
+#: config.c:153
 msgid "relative config includes must come from files"
 msgstr "相對路徑的設定檔案引用必須來自於檔案"
 
-#: config.c:198
+#: config.c:199
 msgid "relative config include conditionals must come from files"
 msgstr "相對路徑的設定檔案條件引用必須來自於檔案"
 
-#: config.c:378
+#: config.c:396
+#, c-format
+msgid "invalid config format: %s"
+msgstr "無效的設定檔格式:%s"
+
+#: config.c:400
+#, c-format
+msgid "missing environment variable name for configuration '%.*s'"
+msgstr "缺少「%.*s」組態設定的環境變數名稱"
+
+#: config.c:405
+#, c-format
+msgid "missing environment variable '%s' for configuration '%.*s'"
+msgstr "缺少環境變數「%s」(於「%.*s」組態設定)"
+
+#: config.c:442
 #, c-format
 msgid "key does not contain a section: %s"
 msgstr "鍵名沒有包含一個小節名稱:%s"
 
-#: config.c:384
+#: config.c:448
 #, c-format
 msgid "key does not contain variable name: %s"
 msgstr "鍵名沒有包含變數名:%s"
 
-#: config.c:408 sequencer.c:2580
+#: config.c:472 sequencer.c:2588
 #, c-format
 msgid "invalid key: %s"
 msgstr "無效鍵名:%s"
 
-#: config.c:414
+#: config.c:478
 #, c-format
 msgid "invalid key (newline): %s"
 msgstr "無效鍵名(有換行符號):%s"
 
-#: config.c:450 config.c:462
+#: config.c:511
+msgid "empty config key"
+msgstr "空白設定鍵"
+
+#: config.c:529 config.c:541
 #, c-format
 msgid "bogus config parameter: %s"
 msgstr "偽設定參數:%s"
 
-#: config.c:497
+#: config.c:555 config.c:572 config.c:579 config.c:588
 #, c-format
 msgid "bogus format in %s"
 msgstr "%s 中格式錯誤"
 
-#: config.c:836
+#: config.c:622
+#, c-format
+msgid "bogus count in %s"
+msgstr "%s 中有偽計數"
+
+#: config.c:626
+#, c-format
+msgid "too many entries in %s"
+msgstr "%s 中的項目過多"
+
+#: config.c:636
+#, c-format
+msgid "missing config key %s"
+msgstr "缺少 %s 設定鍵"
+
+#: config.c:644
+#, c-format
+msgid "missing config value %s"
+msgstr "缺少 %s 設定值"
+
+#: config.c:995
 #, c-format
 msgid "bad config line %d in blob %s"
 msgstr "資料物件 %2$s 中錯誤的設定行 %1$d"
 
-#: config.c:840
+#: config.c:999
 #, c-format
 msgid "bad config line %d in file %s"
 msgstr "檔案 %2$s 中錯誤的設定行 %1$d"
 
-#: config.c:844
+#: config.c:1003
 #, c-format
 msgid "bad config line %d in standard input"
 msgstr "標準輸入中錯誤的設定行 %d"
 
-#: config.c:848
+#: config.c:1007
 #, c-format
 msgid "bad config line %d in submodule-blob %s"
 msgstr "子模組資料物件 %2$s 中錯誤的設定行 %1$d"
 
-#: config.c:852
+#: config.c:1011
 #, c-format
 msgid "bad config line %d in command line %s"
 msgstr "指令列 %2$s 中錯誤的設定行 %1$d"
 
-#: config.c:856
+#: config.c:1015
 #, c-format
 msgid "bad config line %d in %s"
 msgstr "在 %2$s 中錯誤的設定行 %1$d"
 
-#: config.c:993
+#: config.c:1152
 msgid "out of range"
 msgstr "超出範圍"
 
-#: config.c:993
+#: config.c:1152
 msgid "invalid unit"
 msgstr "無效的單位"
 
-#: config.c:994
+#: config.c:1153
 #, c-format
 msgid "bad numeric config value '%s' for '%s': %s"
 msgstr "設定變數 '%2$s' 的數字取值 '%1$s' 設定錯誤:%3$s"
 
-#: config.c:1013
+#: config.c:1163
 #, 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:1016
+#: config.c:1166
 #, 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:1019
+#: config.c:1169
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in standard input: %s"
 msgstr "標準輸入中設定變數 '%2$s' 錯誤的取值 '%1$s':%3$s"
 
-#: config.c:1022
+#: config.c:1172
 #, 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:1025
+#: config.c:1175
 #, 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:1028
+#: config.c:1178
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in %s: %s"
 msgstr "在 %3$s 中設定變數 '%2$s' 錯誤的取值 '%1$s':%4$s"
 
-#: config.c:1123
+#: config.c:1194
+#, c-format
+msgid "bad boolean config value '%s' for '%s'"
+msgstr "「%2$s」的「%1$s」布林設定值無效"
+
+#: config.c:1289
 #, c-format
 msgid "failed to expand user dir in: '%s'"
 msgstr "無法擴展使用者目錄:'%s'"
 
-#: config.c:1132
+#: config.c:1298
 #, c-format
 msgid "'%s' for '%s' is not a valid timestamp"
 msgstr "'%2$s' 的值 '%1$s' 不是一個有效的時間戳"
 
-#: config.c:1223
+#: config.c:1391
 #, c-format
 msgid "abbrev length out of range: %d"
 msgstr "縮寫長度超出範圍:%d"
 
-#: config.c:1237 config.c:1248
+#: config.c:1405 config.c:1416
 #, c-format
 msgid "bad zlib compression level %d"
 msgstr "錯誤的 zlib 壓縮級別 %d"
 
-#: config.c:1340
+#: config.c:1508
 msgid "core.commentChar should only be one character"
 msgstr "core.commentChar 應該是一個字元"
 
-#: config.c:1373
+#: config.c:1541
 #, c-format
 msgid "invalid mode for object creation: %s"
 msgstr "無效的物件建立模式:%s"
 
-#: config.c:1445
+#: config.c:1613
 #, c-format
 msgid "malformed value for %s"
 msgstr "%s 的取值格式錯誤"
 
-#: config.c:1471
+#: config.c:1639
 #, c-format
 msgid "malformed value for %s: %s"
 msgstr "%s 的取值格式錯誤:%s"
 
-#: config.c:1472
+#: config.c:1640
 msgid "must be one of nothing, matching, simple, upstream or current"
 msgstr "必須是其中之一:nothing、matching、simple、upstream 或 current"
 
-#: config.c:1533 builtin/pack-objects.c:3649
+#: config.c:1701 builtin/pack-objects.c:3666
 #, c-format
 msgid "bad pack compression level %d"
 msgstr "錯誤的打包壓縮級別 %d"
 
-#: config.c:1655
+#: config.c:1823
 #, c-format
 msgid "unable to load config blob object '%s'"
 msgstr "無法從資料物件 '%s' 載入設定"
 
-#: config.c:1658
+#: config.c:1826
 #, c-format
 msgid "reference '%s' does not point to a blob"
 msgstr "引用 '%s' 沒有指向一個資料物件"
 
-#: config.c:1675
+#: config.c:1843
 #, c-format
 msgid "unable to resolve config blob '%s'"
 msgstr "不能解析設定物件 '%s'"
 
-#: config.c:1705
+#: config.c:1873
 #, c-format
 msgid "failed to parse %s"
 msgstr "解析 %s 失敗"
 
-#: config.c:1759
+#: config.c:1927
 msgid "unable to parse command-line config"
 msgstr "無法解析指令列中的設定"
 
-#: config.c:2122
+#: config.c:2290
 msgid "unknown error occurred while reading the configuration files"
 msgstr "在讀取設定檔案時遇到未知錯誤"
 
-#: config.c:2296
+#: config.c:2464
 #, c-format
 msgid "Invalid %s: '%s'"
 msgstr "無效 %s:'%s'"
 
-#: config.c:2341
+#: config.c:2509
 #, c-format
 msgid "splitIndex.maxPercentChange value '%d' should be between 0 and 100"
 msgstr "splitIndex.maxPercentChange 的取值 '%d' 應該介於 0 和 100 之間"
 
-#: config.c:2387
+#: config.c:2555
 #, c-format
 msgid "unable to parse '%s' from command-line config"
 msgstr "無法解析指令列設定中的 '%s'"
 
-#: config.c:2389
+#: config.c:2557
 #, c-format
 msgid "bad config variable '%s' in file '%s' at line %d"
 msgstr "在檔案 '%2$s' 的第 %3$d 行發現錯誤的設定變數 '%1$s'"
 
-#: config.c:2473
+#: config.c:2641
 #, c-format
 msgid "invalid section name '%s'"
 msgstr "無效的小節名稱 '%s'"
 
-#: config.c:2505
+#: config.c:2673
 #, c-format
 msgid "%s has multiple values"
 msgstr "%s 有多個取值"
 
-#: config.c:2534
+#: config.c:2702
 #, c-format
 msgid "failed to write new configuration file %s"
 msgstr "寫入新的設定檔案 %s 失敗"
 
-#: config.c:2786 config.c:3112
+#: config.c:2954 config.c:3280
 #, c-format
 msgid "could not lock config file %s"
 msgstr "不能鎖定設定檔案 %s"
 
-#: config.c:2797
+#: config.c:2965
 #, c-format
 msgid "opening %s"
 msgstr "開啟 %s"
 
-#: config.c:2834 builtin/config.c:361
+#: config.c:3002 builtin/config.c:361
 #, c-format
 msgid "invalid pattern: %s"
 msgstr "無效模式:%s"
 
-#: config.c:2859
+#: config.c:3027
 #, c-format
 msgid "invalid config file %s"
 msgstr "無效的設定檔案 %s"
 
-#: config.c:2872 config.c:3125
+#: config.c:3040 config.c:3293
 #, c-format
 msgid "fstat on %s failed"
 msgstr "對 %s 呼叫 fstat 失敗"
 
-#: config.c:2883
+#: config.c:3051
 #, c-format
 msgid "unable to mmap '%s'"
 msgstr "不能 mmap '%s'"
 
-#: config.c:2892 config.c:3130
+#: config.c:3060 config.c:3298
 #, c-format
 msgid "chmod on %s failed"
 msgstr "對 %s 呼叫 chmod 失敗"
 
-#: config.c:2977 config.c:3227
+#: config.c:3145 config.c:3395
 #, c-format
 msgid "could not write config file %s"
 msgstr "不能寫入設定檔案 %s"
 
-#: config.c:3011
+#: config.c:3179
 #, c-format
 msgid "could not set '%s' to '%s'"
 msgstr "不能設定 '%s' 為 '%s'"
 
-#: config.c:3013 builtin/remote.c:657 builtin/remote.c:855 builtin/remote.c:863
+#: config.c:3181 builtin/remote.c:657 builtin/remote.c:855 builtin/remote.c:863
 #, c-format
 msgid "could not unset '%s'"
 msgstr "不能取消設定 '%s'"
 
-#: config.c:3103
+#: config.c:3271
 #, c-format
 msgid "invalid section name: %s"
 msgstr "無效的小節名稱:%s"
 
-#: config.c:3270
+#: config.c:3438
 #, c-format
 msgid "missing value for '%s'"
 msgstr "%s 的取值缺少"
@@ -2992,45 +3052,45 @@ msgstr "無效封包"
 msgid "protocol error: unexpected '%s'"
 msgstr "協定錯誤:意外的 '%s'"
 
-#: connect.c:473
+#: connect.c:497
 #, c-format
 msgid "unknown object format '%s' specified by server"
 msgstr "伺服器指定的「%s」物件格式無效"
 
-#: connect.c:500
+#: connect.c:526
 #, c-format
 msgid "invalid ls-refs response: %s"
 msgstr "無效的 ls-refs 回應:%s"
 
-#: connect.c:504
+#: connect.c:530
 msgid "expected flush after ref listing"
 msgstr "在引用列表之後應該有一個 flush 包"
 
-#: connect.c:507
+#: connect.c:533
 msgid "expected response end packet after ref listing"
 msgstr "在引用列表後預期要有回應結束封包"
 
-#: connect.c:640
+#: connect.c:666
 #, c-format
 msgid "protocol '%s' is not supported"
 msgstr "不支援 '%s' 協定"
 
-#: connect.c:691
+#: connect.c:717
 msgid "unable to set SO_KEEPALIVE on socket"
 msgstr "無法為 socket 設定 SO_KEEPALIVE"
 
-#: connect.c:731 connect.c:794
+#: connect.c:757 connect.c:820
 #, c-format
 msgid "Looking up %s ... "
 msgstr "尋找 %s ... "
 
-#: connect.c:735
+#: connect.c:761
 #, c-format
 msgid "unable to look up %s (port %s) (%s)"
 msgstr "無法尋找 %s(埠 %s)(%s)"
 
 #. TRANSLATORS: this is the end of "Looking up %s ... "
-#: connect.c:739 connect.c:810
+#: connect.c:765 connect.c:836
 #, c-format
 msgid ""
 "done.\n"
@@ -3039,7 +3099,7 @@ msgstr ""
 "完成。\n"
 "連線到 %s(埠 %s)... "
 
-#: connect.c:761 connect.c:838
+#: connect.c:787 connect.c:864
 #, c-format
 msgid ""
 "unable to connect to %s:\n"
@@ -3049,61 +3109,65 @@ msgstr ""
 "%s"
 
 #. TRANSLATORS: this is the end of "Connecting to %s (port %s) ... "
-#: connect.c:767 connect.c:844
+#: connect.c:793 connect.c:870
 msgid "done."
 msgstr "完成。"
 
-#: connect.c:798
+#: connect.c:824
 #, c-format
 msgid "unable to look up %s (%s)"
 msgstr "無法尋找 %s(%s)"
 
-#: connect.c:804
+#: connect.c:830
 #, c-format
 msgid "unknown port %s"
 msgstr "未知埠 %s"
 
-#: connect.c:941 connect.c:1271
+#: connect.c:967 connect.c:1299
 #, c-format
 msgid "strange hostname '%s' blocked"
 msgstr "已阻止奇怪的主機名稱 '%s'"
 
-#: connect.c:943
+#: connect.c:969
 #, c-format
 msgid "strange port '%s' blocked"
 msgstr "已阻止奇怪的埠號 '%s'"
 
-#: connect.c:953
+#: connect.c:979
 #, c-format
 msgid "cannot start proxy %s"
 msgstr "不能啟動代理 %s"
 
-#: connect.c:1024
+#: connect.c:1050
 msgid "no path specified; see 'git help pull' for valid url syntax"
 msgstr "未指定路徑,執行 'git help pull' 檢視有效的 url 語法"
 
-#: connect.c:1219
+#: connect.c:1190
+msgid "newline is forbidden in git:// hosts and repo paths"
+msgstr "git:// 主機名稱和版本庫路徑中不能有換行"
+
+#: connect.c:1247
 msgid "ssh variant 'simple' does not support -4"
 msgstr "ssh 變體 'simple' 不支援 -4"
 
-#: connect.c:1231
+#: connect.c:1259
 msgid "ssh variant 'simple' does not support -6"
 msgstr "ssh 變體 'simple' 不支援 -6"
 
-#: connect.c:1248
+#: connect.c:1276
 msgid "ssh variant 'simple' does not support setting port"
 msgstr "ssh 變體 'simple' 不支援設定埠"
 
-#: connect.c:1360
+#: connect.c:1388
 #, c-format
 msgid "strange pathname '%s' blocked"
 msgstr "已阻止奇怪的路徑名 '%s'"
 
-#: connect.c:1408
+#: connect.c:1436
 msgid "unable to fork"
 msgstr "無法 fork"
 
-#: connected.c:108 builtin/fsck.c:209 builtin/prune.c:45
+#: connected.c:108 builtin/fsck.c:191 builtin/prune.c:45
 msgid "Checking connectivity"
 msgstr "正在檢查連通性"
 
@@ -3353,6 +3417,11 @@ msgstr "來自 config 的資料島正規表示式有太多的捕獲組(最多
 msgid "Marked %d islands, done.\n"
 msgstr "已標記 %d 個資料島,結束。\n"
 
+#: diff-merges.c:70
+#, c-format
+msgid "unknown value for --diff-merges: %s"
+msgstr "--diff-merges 的值無效:%s"
+
 #: diff-lib.c:534
 msgid "--merge-base does not work with ranges"
 msgstr "—merge-base 跟範圍無法搭配運作"
@@ -3437,30 +3506,30 @@ msgstr ""
 msgid "external diff died, stopping at %s"
 msgstr "外部 diff 離開,停止在 %s"
 
-#: diff.c:4625
+#: diff.c:4628
 msgid "--name-only, --name-status, --check and -s are mutually exclusive"
 msgstr "--name-only、--name-status、--check 和 -s 是互斥的"
 
-#: diff.c:4628
+#: diff.c:4631
 msgid "-G, -S and --find-object are mutually exclusive"
 msgstr "-G、-S 和 --find-object 是互斥的"
 
-#: diff.c:4707
+#: diff.c:4710
 msgid "--follow requires exactly one pathspec"
 msgstr "--follow 明確要求只跟一個路徑規格"
 
-#: diff.c:4755
+#: diff.c:4758
 #, c-format
 msgid "invalid --stat value: %s"
 msgstr "無效的 --stat 值:%s"
 
-#: diff.c:4760 diff.c:4765 diff.c:4770 diff.c:4775 diff.c:5303
+#: diff.c:4763 diff.c:4768 diff.c:4773 diff.c:4778 diff.c:5306
 #: parse-options.c:197 parse-options.c:201 builtin/commit-graph.c:180
 #, c-format
 msgid "%s expects a numerical value"
 msgstr "%s 期望一個數字值"
 
-#: diff.c:4792
+#: diff.c:4795
 #, c-format
 msgid ""
 "Failed to parse --dirstat/-X option parameter:\n"
@@ -3469,200 +3538,200 @@ msgstr ""
 "無法解析 --dirstat/-X 選項的參數:\n"
 "%s"
 
-#: diff.c:4877
+#: diff.c:4880
 #, c-format
 msgid "unknown change class '%c' in --diff-filter=%s"
 msgstr "--diff-filter=%2$s 中未知的變更類 '%1$c'"
 
-#: diff.c:4901
+#: diff.c:4904
 #, c-format
 msgid "unknown value after ws-error-highlight=%.*s"
 msgstr "ws-error-highlight=%.*s 之後未知的值"
 
-#: diff.c:4915
+#: diff.c:4918
 #, c-format
 msgid "unable to resolve '%s'"
 msgstr "不能解析 '%s'"
 
-#: diff.c:4965 diff.c:4971
+#: diff.c:4968 diff.c:4974
 #, c-format
 msgid "%s expects <n>/<m> form"
 msgstr "%s 期望 <n>/<m> 格式"
 
-#: diff.c:4983
+#: diff.c:4986
 #, c-format
 msgid "%s expects a character, got '%s'"
 msgstr "%s 期望一個字元,得到 '%s'"
 
-#: diff.c:5004
+#: diff.c:5007
 #, c-format
 msgid "bad --color-moved argument: %s"
 msgstr "壞的 --color-moved 參數:%s"
 
-#: diff.c:5023
+#: diff.c:5026
 #, c-format
 msgid "invalid mode '%s' in --color-moved-ws"
 msgstr "--color-moved-ws 中的無效模式 '%s'"
 
-#: diff.c:5063
+#: diff.c:5066
 msgid ""
 "option diff-algorithm accepts \"myers\", \"minimal\", \"patience\" and "
 "\"histogram\""
 msgstr ""
 "diff-algorithm 選項有 \"myers\"、\"minimal\"、\"patience\" 和 \"histogram\""
 
-#: diff.c:5099 diff.c:5119
+#: diff.c:5102 diff.c:5122
 #, c-format
 msgid "invalid argument to %s"
 msgstr "%s 的參數無效"
 
-#: diff.c:5223
+#: diff.c:5226
 #, c-format
 msgid "invalid regex given to -I: '%s'"
 msgstr "傳入 -I 的正規表示式無效:「%s」"
 
-#: diff.c:5272
+#: diff.c:5275
 #, c-format
 msgid "failed to parse --submodule option parameter: '%s'"
 msgstr "無法解析 --submodule 選項的參數:'%s'"
 
-#: diff.c:5328
+#: diff.c:5331
 #, c-format
 msgid "bad --word-diff argument: %s"
 msgstr "壞的 --word-diff 參數:%s"
 
-#: diff.c:5351
+#: diff.c:5367
 msgid "Diff output format options"
 msgstr "差異輸出格式化選項"
 
-#: diff.c:5353 diff.c:5359
+#: diff.c:5369 diff.c:5375
 msgid "generate patch"
 msgstr "生成修補檔"
 
-#: diff.c:5356 builtin/log.c:178
+#: diff.c:5372 builtin/log.c:179
 msgid "suppress diff output"
 msgstr "不顯示差異輸出"
 
-#: diff.c:5361 diff.c:5475 diff.c:5482
+#: diff.c:5377 diff.c:5491 diff.c:5498
 msgid "<n>"
 msgstr "<n>"
 
-#: diff.c:5362 diff.c:5365
+#: diff.c:5378 diff.c:5381
 msgid "generate diffs with <n> lines context"
 msgstr "生成含 <n> 行上下文的差異"
 
-#: diff.c:5367
+#: diff.c:5383
 msgid "generate the diff in raw format"
 msgstr "生成原始格式的差異"
 
-#: diff.c:5370
+#: diff.c:5386
 msgid "synonym for '-p --raw'"
 msgstr "和 '-p --raw' 同義"
 
-#: diff.c:5374
+#: diff.c:5390
 msgid "synonym for '-p --stat'"
 msgstr "和 '-p --stat' 同義"
 
-#: diff.c:5378
+#: diff.c:5394
 msgid "machine friendly --stat"
 msgstr "機器友好的 --stat"
 
-#: diff.c:5381
+#: diff.c:5397
 msgid "output only the last line of --stat"
 msgstr "只輸出 --stat 的最後一行"
 
-#: diff.c:5383 diff.c:5391
+#: diff.c:5399 diff.c:5407
 msgid "<param1,param2>..."
 msgstr "<參數1,參數2>..."
 
-#: diff.c:5384
+#: diff.c:5400
 msgid ""
 "output the distribution of relative amount of changes for each sub-directory"
 msgstr "輸出每個子目錄相對變更的分布"
 
-#: diff.c:5388
+#: diff.c:5404
 msgid "synonym for --dirstat=cumulative"
 msgstr "和 --dirstat=cumulative 同義"
 
-#: diff.c:5392
+#: diff.c:5408
 msgid "synonym for --dirstat=files,param1,param2..."
 msgstr "是 --dirstat=files,param1,param2... 的同義詞"
 
-#: diff.c:5396
+#: diff.c:5412
 msgid "warn if changes introduce conflict markers or whitespace errors"
 msgstr "如果變更中引入衝突定界符或空白錯誤,給出警告"
 
-#: diff.c:5399
+#: diff.c:5415
 msgid "condensed summary such as creations, renames and mode changes"
 msgstr "精簡摘要,例如建立、重新命名和模式變更"
 
-#: diff.c:5402
+#: diff.c:5418
 msgid "show only names of changed files"
 msgstr "只顯示變更檔案的檔案名"
 
-#: diff.c:5405
+#: diff.c:5421
 msgid "show only names and status of changed files"
 msgstr "只顯示變更檔案的檔案名和狀態"
 
-#: diff.c:5407
+#: diff.c:5423
 msgid "<width>[,<name-width>[,<count>]]"
 msgstr "<寬度>[,<檔案名寬度>[,<次數>]]"
 
-#: diff.c:5408
+#: diff.c:5424
 msgid "generate diffstat"
 msgstr "生成差異統計(diffstat)"
 
-#: diff.c:5410 diff.c:5413 diff.c:5416
+#: diff.c:5426 diff.c:5429 diff.c:5432
 msgid "<width>"
 msgstr "<寬度>"
 
-#: diff.c:5411
+#: diff.c:5427
 msgid "generate diffstat with a given width"
 msgstr "使用提供的長度生成差異統計"
 
-#: diff.c:5414
+#: diff.c:5430
 msgid "generate diffstat with a given name width"
 msgstr "使用提供的檔案名長度生成差異統計"
 
-#: diff.c:5417
+#: diff.c:5433
 msgid "generate diffstat with a given graph width"
 msgstr "使用提供的圖形長度生成差異統計"
 
-#: diff.c:5419
+#: diff.c:5435
 msgid "<count>"
 msgstr "<次數>"
 
-#: diff.c:5420
+#: diff.c:5436
 msgid "generate diffstat with limited lines"
 msgstr "生成有限行數的差異統計"
 
-#: diff.c:5423
+#: diff.c:5439
 msgid "generate compact summary in diffstat"
 msgstr "生成差異統計的簡潔摘要"
 
-#: diff.c:5426
+#: diff.c:5442
 msgid "output a binary diff that can be applied"
 msgstr "輸出一個可以應用的二進位差異"
 
-#: diff.c:5429
+#: diff.c:5445
 msgid "show full pre- and post-image object names on the \"index\" lines"
 msgstr "在 \"index\" 行顯示完整的前後物件名稱"
 
-#: diff.c:5431
+#: diff.c:5447
 msgid "show colored diff"
 msgstr "顯示帶顏色的差異"
 
-#: diff.c:5432
+#: diff.c:5448
 msgid "<kind>"
 msgstr "<類型>"
 
-#: diff.c:5433
+#: diff.c:5449
 msgid ""
 "highlight whitespace errors in the 'context', 'old' or 'new' lines in the "
 "diff"
 msgstr "對於差異中的上下文、舊的和新的行,加亮顯示錯誤的空白字元"
 
-#: diff.c:5436
+#: diff.c:5452
 msgid ""
 "do not munge pathnames and use NULs as output field terminators in --raw or "
 "--numstat"
@@ -3670,299 +3739,311 @@ msgstr ""
 "在 --raw 或者 --numstat 中,不對路徑字元轉檔並使用 NUL 字元做為輸出欄位的分隔"
 "符"
 
-#: diff.c:5439 diff.c:5442 diff.c:5445 diff.c:5554
+#: diff.c:5455 diff.c:5458 diff.c:5461 diff.c:5570
 msgid "<prefix>"
 msgstr "<前綴>"
 
-#: diff.c:5440
+#: diff.c:5456
 msgid "show the given source prefix instead of \"a/\""
 msgstr "顯示提供的源前綴取代 \"a/\""
 
-#: diff.c:5443
+#: diff.c:5459
 msgid "show the given destination prefix instead of \"b/\""
 msgstr "顯示提供的目標前綴取代 \"b/\""
 
-#: diff.c:5446
+#: diff.c:5462
 msgid "prepend an additional prefix to every line of output"
 msgstr "輸出的每一行附加前綴"
 
-#: diff.c:5449
+#: diff.c:5465
 msgid "do not show any source or destination prefix"
 msgstr "不顯示任何源和目標前綴"
 
-#: diff.c:5452
+#: diff.c:5468
 msgid "show context between diff hunks up to the specified number of lines"
 msgstr "顯示指定行數的差異區塊間的上下文"
 
-#: diff.c:5456 diff.c:5461 diff.c:5466
+#: diff.c:5472 diff.c:5477 diff.c:5482
 msgid "<char>"
 msgstr "<字元>"
 
-#: diff.c:5457
+#: diff.c:5473
 msgid "specify the character to indicate a new line instead of '+'"
 msgstr "指定一個字元取代 '+' 來表示新的一行"
 
-#: diff.c:5462
+#: diff.c:5478
 msgid "specify the character to indicate an old line instead of '-'"
 msgstr "指定一個字元取代 '-' 來表示舊的一行"
 
-#: diff.c:5467
+#: diff.c:5483
 msgid "specify the character to indicate a context instead of ' '"
 msgstr "指定一個字元取代 ' ' 來表示一行上下文"
 
-#: diff.c:5470
+#: diff.c:5486
 msgid "Diff rename options"
 msgstr "差異重新命名選項"
 
-#: diff.c:5471
+#: diff.c:5487
 msgid "<n>[/<m>]"
 msgstr "<n>[/<m>]"
 
-#: diff.c:5472
+#: diff.c:5488
 msgid "break complete rewrite changes into pairs of delete and create"
 msgstr "將完全重寫的變更打破為成對的刪除和建立"
 
-#: diff.c:5476
+#: diff.c:5492
 msgid "detect renames"
 msgstr "檢測重新命名"
 
-#: diff.c:5480
+#: diff.c:5496
 msgid "omit the preimage for deletes"
 msgstr "省略刪除變更的差異輸出"
 
-#: diff.c:5483
+#: diff.c:5499
 msgid "detect copies"
 msgstr "檢測複製"
 
-#: diff.c:5487
+#: diff.c:5503
 msgid "use unmodified files as source to find copies"
 msgstr "使用未修改的檔案做為發現複製的源"
 
-#: diff.c:5489
+#: diff.c:5505
 msgid "disable rename detection"
 msgstr "停用重新命名偵測"
 
-#: diff.c:5492
+#: diff.c:5508
 msgid "use empty blobs as rename source"
 msgstr "使用空的資料物件做為重新命名的源"
 
-#: diff.c:5494
+#: diff.c:5510
 msgid "continue listing the history of a file beyond renames"
 msgstr "繼續列出檔案重新命名以外的歷史記錄"
 
-#: diff.c:5497
+#: diff.c:5513
 msgid ""
 "prevent rename/copy detection if the number of rename/copy targets exceeds "
 "given limit"
 msgstr "如果重新命名/複製目標超過提供的限制,禁止重新命名/複製檢測"
 
-#: diff.c:5499
+#: diff.c:5515
 msgid "Diff algorithm options"
 msgstr "差異演算法選項"
 
-#: diff.c:5501
+#: diff.c:5517
 msgid "produce the smallest possible diff"
 msgstr "生成儘可能小的差異"
 
-#: diff.c:5504
+#: diff.c:5520
 msgid "ignore whitespace when comparing lines"
 msgstr "行比較時忽略空白字元"
 
-#: diff.c:5507
+#: diff.c:5523
 msgid "ignore changes in amount of whitespace"
 msgstr "忽略空白字元的變更"
 
-#: diff.c:5510
+#: diff.c:5526
 msgid "ignore changes in whitespace at EOL"
 msgstr "忽略行尾的空白字元變更"
 
-#: diff.c:5513
+#: diff.c:5529
 msgid "ignore carrier-return at the end of line"
 msgstr "忽略行尾的Enter符(CR)"
 
-#: diff.c:5516
+#: diff.c:5532
 msgid "ignore changes whose lines are all blank"
 msgstr "忽略整行都是空白的變更"
 
-#: diff.c:5518 diff.c:5540 diff.c:5543 diff.c:5588
+#: diff.c:5534 diff.c:5556 diff.c:5559 diff.c:5604
 msgid "<regex>"
 msgstr "<正則>"
 
-#: diff.c:5519
+#: diff.c:5535
 msgid "ignore changes whose all lines match <regex>"
 msgstr "忽略整行符合 <regex> 的變更"
 
-#: diff.c:5522
+#: diff.c:5538
 msgid "heuristic to shift diff hunk boundaries for easy reading"
 msgstr "啟發式轉換差異邊界以便閱讀"
 
-#: diff.c:5525
+#: diff.c:5541
 msgid "generate diff using the \"patience diff\" algorithm"
 msgstr "使用 \"patience diff\" 演算法生成差異"
 
-#: diff.c:5529
+#: diff.c:5545
 msgid "generate diff using the \"histogram diff\" algorithm"
 msgstr "使用 \"histogram diff\" 演算法生成差異"
 
-#: diff.c:5531
+#: diff.c:5547
 msgid "<algorithm>"
 msgstr "<演算法>"
 
-#: diff.c:5532
+#: diff.c:5548
 msgid "choose a diff algorithm"
 msgstr "選擇一個差異演算法"
 
-#: diff.c:5534
+#: diff.c:5550
 msgid "<text>"
 msgstr "<文字>"
 
-#: diff.c:5535
+#: diff.c:5551
 msgid "generate diff using the \"anchored diff\" algorithm"
 msgstr "使用 \"anchored diff\" 演算法生成差異"
 
-#: diff.c:5537 diff.c:5546 diff.c:5549
+#: diff.c:5553 diff.c:5562 diff.c:5565
 msgid "<mode>"
 msgstr "<模式>"
 
-#: diff.c:5538
+#: diff.c:5554
 msgid "show word diff, using <mode> to delimit changed words"
 msgstr "顯示單詞差異,使用 <模式> 分隔變更的單詞"
 
-#: diff.c:5541
+#: diff.c:5557
 msgid "use <regex> to decide what a word is"
 msgstr "使用 <正規表示式> 確定何為一個詞"
 
-#: diff.c:5544
+#: diff.c:5560
 msgid "equivalent to --word-diff=color --word-diff-regex=<regex>"
 msgstr "相當於 --word-diff=color --word-diff-regex=<正則>"
 
-#: diff.c:5547
+#: diff.c:5563
 msgid "moved lines of code are colored differently"
 msgstr "移動的程式碼行用不同方式著色"
 
-#: diff.c:5550
+#: diff.c:5566
 msgid "how white spaces are ignored in --color-moved"
 msgstr "在 --color-moved 下如何忽略空白字元"
 
-#: diff.c:5553
+#: diff.c:5569
 msgid "Other diff options"
 msgstr "其它差異選項"
 
-#: diff.c:5555
+#: diff.c:5571
 msgid "when run from subdir, exclude changes outside and show relative paths"
 msgstr "當從子目錄執行,排除目錄之外的變更並顯示相對路徑"
 
-#: diff.c:5559
+#: diff.c:5575
 msgid "treat all files as text"
 msgstr "把所有檔案當做文字處理"
 
-#: diff.c:5561
+#: diff.c:5577
 msgid "swap two inputs, reverse the diff"
 msgstr "交換兩個輸入,反轉差異"
 
-#: diff.c:5563
+#: diff.c:5579
 msgid "exit with 1 if there were differences, 0 otherwise"
 msgstr "有差異時離開碼為 1,否則為 0"
 
-#: diff.c:5565
+#: diff.c:5581
 msgid "disable all output of the program"
 msgstr "停用本程式的所有輸出"
 
-#: diff.c:5567
+#: diff.c:5583
 msgid "allow an external diff helper to be executed"
 msgstr "允許執行一個外部的差異協助工具"
 
-#: diff.c:5569
+#: diff.c:5585
 msgid "run external text conversion filters when comparing binary files"
 msgstr "當比較二進位檔案時,執行外部的文字轉換過濾器"
 
-#: diff.c:5571
+#: diff.c:5587
 msgid "<when>"
 msgstr "<何時>"
 
-#: diff.c:5572
+#: diff.c:5588
 msgid "ignore changes to submodules in the diff generation"
 msgstr "在生成差異時,忽略子模組的更改"
 
-#: diff.c:5575
+#: diff.c:5591
 msgid "<format>"
 msgstr "<格式>"
 
-#: diff.c:5576
+#: diff.c:5592
 msgid "specify how differences in submodules are shown"
 msgstr "指定子模組的差異如何顯示"
 
-#: diff.c:5580
+#: diff.c:5596
 msgid "hide 'git add -N' entries from the index"
 msgstr "隱藏索引中 'git add -N' 條目"
 
-#: diff.c:5583
+#: diff.c:5599
 msgid "treat 'git add -N' entries as real in the index"
 msgstr "將索引中 'git add -N' 條目當做真實的"
 
-#: diff.c:5585
+#: diff.c:5601
 msgid "<string>"
 msgstr "<字串>"
 
-#: diff.c:5586
+#: diff.c:5602
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "string"
 msgstr "尋找改變了指定字串出現次數的差異"
 
-#: diff.c:5589
+#: diff.c:5605
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "regex"
 msgstr "尋找改變指定正則符合出現次數的差異"
 
-#: diff.c:5592
+#: diff.c:5608
 msgid "show all changes in the changeset with -S or -G"
 msgstr "顯示使用 -S 或 -G 的變更集的所有變更"
 
-#: diff.c:5595
+#: diff.c:5611
 msgid "treat <string> in -S as extended POSIX regular expression"
 msgstr "將 -S 的 <string> 當做擴展的 POSIX 正規表示式"
 
-#: diff.c:5598
+#: diff.c:5614
 msgid "control the order in which files appear in the output"
 msgstr "控制輸出中的檔案顯示順序"
 
-#: diff.c:5599
+#: diff.c:5615 diff.c:5618
+msgid "<path>"
+msgstr "<路徑>"
+
+#: diff.c:5616
+msgid "show the change in the specified path first"
+msgstr "先顯示指定路徑的變更"
+
+#: diff.c:5619
+msgid "skip the output to the specified path"
+msgstr ""
+
+#: diff.c:5621
 msgid "<object-id>"
 msgstr "<物件 ID>"
 
-#: diff.c:5600
+#: diff.c:5622
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "object"
 msgstr "尋找改變指定物件出現次數的差異"
 
-#: diff.c:5602
+#: diff.c:5624
 msgid "[(A|C|D|M|R|T|U|X|B)...[*]]"
 msgstr "[(A|C|D|M|R|T|U|X|B)...[*]]"
 
-#: diff.c:5603
+#: diff.c:5625
 msgid "select files by diff type"
 msgstr "透過差異類型選擇檔案"
 
-#: diff.c:5605
+#: diff.c:5627
 msgid "<file>"
 msgstr "<檔案>"
 
-#: diff.c:5606
+#: diff.c:5628
 msgid "Output to a specific file"
 msgstr "輸出到一個指定的檔案"
 
-#: diff.c:6263
+#: diff.c:6285
 msgid "inexact rename detection was skipped due to too many files."
 msgstr "因為檔案太多,略過不嚴格的重新命名檢查。"
 
-#: diff.c:6266
+#: diff.c:6288
 msgid "only found copies from modified paths due to too many files."
 msgstr "因為檔案太多,只在修改的路徑中尋找複製。"
 
-#: diff.c:6269
+#: diff.c:6291
 #, c-format
 msgid ""
 "you may want to set your %s variable to at least %d and retry the command."
@@ -3973,10 +4054,15 @@ msgstr "您可能想要將變數 %s 設定為至少 %d 並再次執行此指令
 msgid "failed to read orderfile '%s'"
 msgstr "讀取排序檔案 '%s' 失敗"
 
-#: diffcore-rename.c:592
+#: diffcore-rename.c:786
 msgid "Performing inexact rename detection"
 msgstr "正在進行非精確的重新命名偵測"
 
+#: diffcore-rotate.c:29
+#, c-format
+msgid "No such path '%s' in the diff"
+msgstr "diff 中沒有「%s」路徑"
+
 #: dir.c:578
 #, c-format
 msgid "pathspec '%s' did not match any file(s) known to git"
@@ -4019,17 +4105,17 @@ msgstr "無法獲得核心名稱和訊息"
 msgid "untracked cache is disabled on this system or location"
 msgstr "快取未追蹤檔案在本系統或位置中被停用"
 
-#: dir.c:3520
+#: dir.c:3534
 #, c-format
 msgid "index file corrupt in repo %s"
 msgstr "版本庫 %s 中的索引檔案損壞"
 
-#: dir.c:3565 dir.c:3570
+#: dir.c:3579 dir.c:3584
 #, c-format
 msgid "could not create directories for %s"
 msgstr "不能為 %s 建立目錄"
 
-#: dir.c:3599
+#: dir.c:3613
 #, c-format
 msgid "could not migrate git directory from '%s' to '%s'"
 msgstr "不能從 '%s' 遷移 git 目錄到 '%s'"
@@ -4048,12 +4134,12 @@ msgstr "過濾內容"
 msgid "could not stat file '%s'"
 msgstr "不能對檔案 '%s' 呼叫 stat"
 
-#: environment.c:150
+#: environment.c:152
 #, c-format
 msgid "bad git namespace path \"%s\""
 msgstr "錯誤的 git 名字空間路徑 \"%s\""
 
-#: environment.c:337
+#: environment.c:335
 #, c-format
 msgid "could not set GIT_DIR to '%s'"
 msgstr "不能設定 GIT_DIR 為 '%s'"
@@ -4088,32 +4174,32 @@ msgstr "無法寫到遠端"
 msgid "--stateless-rpc requires multi_ack_detailed"
 msgstr "--stateless-rpc 需要 multi_ack_detailed"
 
-#: fetch-pack.c:378 fetch-pack.c:1406
+#: fetch-pack.c:378 fetch-pack.c:1457
 #, c-format
 msgid "invalid shallow line: %s"
 msgstr "無效的 shallow 訊息:%s"
 
-#: fetch-pack.c:384 fetch-pack.c:1412
+#: fetch-pack.c:384 fetch-pack.c:1463
 #, c-format
 msgid "invalid unshallow line: %s"
 msgstr "無效的 unshallow 訊息:%s"
 
-#: fetch-pack.c:386 fetch-pack.c:1414
+#: fetch-pack.c:386 fetch-pack.c:1465
 #, c-format
 msgid "object not found: %s"
 msgstr "物件未找到:%s"
 
-#: fetch-pack.c:389 fetch-pack.c:1417
+#: fetch-pack.c:389 fetch-pack.c:1468
 #, c-format
 msgid "error in object: %s"
 msgstr "物件中發生錯誤:%s"
 
-#: fetch-pack.c:391 fetch-pack.c:1419
+#: fetch-pack.c:391 fetch-pack.c:1470
 #, c-format
 msgid "no shallow found: %s"
 msgstr "未發現 shallow:%s"
 
-#: fetch-pack.c:394 fetch-pack.c:1423
+#: fetch-pack.c:394 fetch-pack.c:1474
 #, c-format
 msgid "expected shallow/unshallow, got %s"
 msgstr "應為 shallow/unshallow,卻得到 %s"
@@ -4151,171 +4237,175 @@ msgstr "標記 %s 為完成"
 msgid "already have %s (%s)"
 msgstr "已經有 %s(%s)"
 
-#: fetch-pack.c:827
+#: fetch-pack.c:844
 msgid "fetch-pack: unable to fork off sideband demultiplexer"
 msgstr "fetch-pack:無法衍生 sideband 多路輸出"
 
-#: fetch-pack.c:835
+#: fetch-pack.c:852
 msgid "protocol error: bad pack header"
 msgstr "協定錯誤:壞的包頭"
 
-#: fetch-pack.c:919
+#: fetch-pack.c:946
 #, c-format
 msgid "fetch-pack: unable to fork off %s"
-msgstr "fetch-pack:無法衍生進程 %s"
+msgstr "fetch-pack:無法 fork %s 處理程序"
+
+#: fetch-pack.c:952
+msgid "fetch-pack: invalid index-pack output"
+msgstr "fetch-pack:無效的 index-pack 輸出"
 
-#: fetch-pack.c:937
+#: fetch-pack.c:969
 #, c-format
 msgid "%s failed"
 msgstr "%s 失敗"
 
-#: fetch-pack.c:939
+#: fetch-pack.c:971
 msgid "error in sideband demultiplexer"
 msgstr "sideband 多路輸出發生錯誤"
 
-#: fetch-pack.c:982
+#: fetch-pack.c:1031
 #, c-format
 msgid "Server version is %.*s"
 msgstr "伺服器版本 %.*s"
 
-#: fetch-pack.c:990 fetch-pack.c:996 fetch-pack.c:999 fetch-pack.c:1005
-#: fetch-pack.c:1009 fetch-pack.c:1013 fetch-pack.c:1017 fetch-pack.c:1021
-#: fetch-pack.c:1025 fetch-pack.c:1029 fetch-pack.c:1033 fetch-pack.c:1037
-#: fetch-pack.c:1043 fetch-pack.c:1049 fetch-pack.c:1054 fetch-pack.c:1059
+#: fetch-pack.c:1039 fetch-pack.c:1045 fetch-pack.c:1048 fetch-pack.c:1054
+#: fetch-pack.c:1058 fetch-pack.c:1062 fetch-pack.c:1066 fetch-pack.c:1070
+#: fetch-pack.c:1074 fetch-pack.c:1078 fetch-pack.c:1082 fetch-pack.c:1086
+#: fetch-pack.c:1092 fetch-pack.c:1098 fetch-pack.c:1103 fetch-pack.c:1108
 #, c-format
 msgid "Server supports %s"
 msgstr "伺服器支援 %s"
 
-#: fetch-pack.c:992
+#: fetch-pack.c:1041
 msgid "Server does not support shallow clients"
 msgstr "伺服器不支援 shalllow 用戶端"
 
-#: fetch-pack.c:1052
+#: fetch-pack.c:1101
 msgid "Server does not support --shallow-since"
 msgstr "伺服器不支援 --shallow-since"
 
-#: fetch-pack.c:1057
+#: fetch-pack.c:1106
 msgid "Server does not support --shallow-exclude"
 msgstr "伺服器不支援 --shallow-exclude"
 
-#: fetch-pack.c:1061
+#: fetch-pack.c:1110
 msgid "Server does not support --deepen"
 msgstr "伺服器不支援 --deepen"
 
-#: fetch-pack.c:1063
+#: fetch-pack.c:1112
 msgid "Server does not support this repository's object format"
 msgstr "伺服器不支援此版本庫的物件格式"
 
-#: fetch-pack.c:1076
+#: fetch-pack.c:1125
 msgid "no common commits"
 msgstr "沒有共同的提交"
 
-#: fetch-pack.c:1088 fetch-pack.c:1628
+#: fetch-pack.c:1138 fetch-pack.c:1682
 msgid "git fetch-pack: fetch failed."
 msgstr "git fetch-pack:取得失敗。"
 
-#: fetch-pack.c:1214
+#: fetch-pack.c:1265
 #, c-format
 msgid "mismatched algorithms: client %s; server %s"
 msgstr "算法不一致:用戶端 %s;伺服器 %s"
 
-#: fetch-pack.c:1218
+#: fetch-pack.c:1269
 #, c-format
 msgid "the server does not support algorithm '%s'"
 msgstr "伺服器不支援「%s」算法"
 
-#: fetch-pack.c:1238
+#: fetch-pack.c:1289
 msgid "Server does not support shallow requests"
 msgstr "伺服器不支援 shalllow 請求"
 
-#: fetch-pack.c:1245
+#: fetch-pack.c:1296
 msgid "Server supports filter"
 msgstr "伺服器支援 filter"
 
-#: fetch-pack.c:1284
+#: fetch-pack.c:1335
 msgid "unable to write request to remote"
 msgstr "無法將請求寫到遠端"
 
-#: fetch-pack.c:1302
+#: fetch-pack.c:1353
 #, c-format
 msgid "error reading section header '%s'"
 msgstr "讀取節標題 '%s' 發生錯誤"
 
-#: fetch-pack.c:1308
+#: fetch-pack.c:1359
 #, c-format
 msgid "expected '%s', received '%s'"
 msgstr "預期 '%s',得到 '%s'"
 
-#: fetch-pack.c:1369
+#: fetch-pack.c:1420
 #, c-format
 msgid "unexpected acknowledgment line: '%s'"
 msgstr "意外的確認行:'%s'"
 
-#: fetch-pack.c:1374
+#: fetch-pack.c:1425
 #, c-format
 msgid "error processing acks: %d"
 msgstr "處理 ack 發生錯誤:%d"
 
-#: fetch-pack.c:1384
+#: fetch-pack.c:1435
 msgid "expected packfile to be sent after 'ready'"
 msgstr "預期在 'ready' 之後傳送 packfile"
 
-#: fetch-pack.c:1386
+#: fetch-pack.c:1437
 msgid "expected no other sections to be sent after no 'ready'"
 msgstr "在沒有 'ready' 不應該傳送其它小節"
 
-#: fetch-pack.c:1428
+#: fetch-pack.c:1479
 #, c-format
 msgid "error processing shallow info: %d"
 msgstr "處理淺複製訊息發生錯誤:%d"
 
-#: fetch-pack.c:1475
+#: fetch-pack.c:1526
 #, c-format
 msgid "expected wanted-ref, got '%s'"
 msgstr "預期 wanted-ref,得到 '%s'"
 
-#: fetch-pack.c:1480
+#: fetch-pack.c:1531
 #, c-format
 msgid "unexpected wanted-ref: '%s'"
 msgstr "意外的 wanted-ref:'%s'"
 
-#: fetch-pack.c:1485
+#: fetch-pack.c:1536
 #, c-format
 msgid "error processing wanted refs: %d"
 msgstr "處理要取得的引用發生錯誤:%d"
 
-#: fetch-pack.c:1515
+#: fetch-pack.c:1566
 msgid "git fetch-pack: expected response end packet"
 msgstr "git fetch-pack: 預期要有回應結束封包"
 
-#: fetch-pack.c:1897
+#: fetch-pack.c:1960
 msgid "no matching remote head"
 msgstr "沒有符合的遠端分支"
 
-#: fetch-pack.c:1920 builtin/clone.c:693
+#: fetch-pack.c:1983 builtin/clone.c:693
 msgid "remote did not send all necessary objects"
 msgstr "遠端沒有傳送所有必需的物件"
 
-#: fetch-pack.c:1947
+#: fetch-pack.c:2010
 #, c-format
 msgid "no such remote ref %s"
 msgstr "沒有這樣的遠端引用 %s"
 
-#: fetch-pack.c:1950
+#: fetch-pack.c:2013
 #, c-format
 msgid "Server does not allow request for unadvertised object %s"
 msgstr "伺服器不允許請求未公開的物件 %s"
 
-#: gpg-interface.c:272
+#: gpg-interface.c:273
 msgid "could not create temporary file"
 msgstr "不能建立暫存檔"
 
-#: gpg-interface.c:275
+#: gpg-interface.c:276
 #, c-format
 msgid "failed writing detached signature to '%s'"
 msgstr "無法將分離式簽名寫入 '%s'"
 
-#: gpg-interface.c:457
+#: gpg-interface.c:470
 msgid "gpg failed to sign the data"
 msgstr "gpg 無法為資料簽名"
 
@@ -4324,7 +4414,7 @@ msgstr "gpg 無法為資料簽名"
 msgid "ignore invalid color '%.*s' in log.graphColors"
 msgstr "忽略 log.graphColors 中無效的顏色 '%.*s'"
 
-#: grep.c:640
+#: grep.c:543
 msgid ""
 "given pattern contains NULL byte (via -f <file>). This is only supported "
 "with -P under PCRE v2"
@@ -4332,18 +4422,18 @@ msgstr ""
 "提供的模式包含 NULL 字元(通過 -f <檔案> 參數)。只有 PCRE v2 下的 -P 支援此"
 "功能"
 
-#: grep.c:2100
+#: grep.c:1906
 #, c-format
 msgid "'%s': unable to read %s"
 msgstr "'%s':無法讀取 %s"
 
-#: grep.c:2117 setup.c:176 builtin/clone.c:412 builtin/diff.c:89
+#: grep.c:1923 setup.c:176 builtin/clone.c:412 builtin/diff.c:90
 #: builtin/rm.c:135
 #, c-format
 msgid "failed to stat '%s'"
 msgstr "對 '%s' 呼叫 stat 失敗"
 
-#: grep.c:2128
+#: grep.c:1934
 #, c-format
 msgid "'%s': short read"
 msgstr "'%s':讀取不完整"
@@ -4413,7 +4503,7 @@ msgstr "在 $PATH 路徑中的其他地方可用的 git 指令"
 msgid "These are common Git commands used in various situations:"
 msgstr "這些是各種場合常見的 Git 指令:"
 
-#: help.c:365 git.c:99
+#: help.c:365 git.c:100
 #, c-format
 msgid "unsupported command listing type '%s'"
 msgstr "不支援的指令列表類型 '%s'"
@@ -4642,122 +4732,50 @@ msgstr ""
 msgid "Unable to create '%s.lock': %s"
 msgstr "不能建立 '%s.lock':%s"
 
-#: ls-refs.c:109
-msgid "expected flush after ls-refs arguments"
-msgstr "在 ls-refs 引數之後應該有一個 flush 包"
-
-#: merge-ort-wrappers.c:13 merge-recursive.c:3672
-#, c-format
-msgid ""
-"Your local changes to the following files would be overwritten by merge:\n"
-"  %s"
-msgstr ""
-"您對下列檔案的本機修改將被合併動作覆蓋:\n"
-"  %s"
-
-#: merge-ort-wrappers.c:33 merge-recursive.c:3436
-#, c-format
-msgid "Already up to date!"
-msgstr "已經是最新的!"
-
-#: merge-recursive.c:356
-msgid "(bad commit)\n"
-msgstr "(壞提交)\n"
-
-#: merge-recursive.c:379
-#, c-format
-msgid "add_cacheinfo failed for path '%s'; merge aborting."
-msgstr "add_cacheinfo 對路徑 '%s' 執行失敗,合併終止。"
-
-#: merge-recursive.c:388
-#, c-format
-msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
-msgstr "add_cacheinfo 無法重新整理路徑 '%s',合併終止。"
-
-#: merge-recursive.c:874
-#, c-format
-msgid "failed to create path '%s'%s"
-msgstr "建立路徑 '%s'%s 失敗"
-
-#: merge-recursive.c:885
-#, c-format
-msgid "Removing %s to make room for subdirectory\n"
-msgstr "刪除 %s 以便為子目錄留出空間\n"
-
-#: merge-recursive.c:899 merge-recursive.c:918
-msgid ": perhaps a D/F conflict?"
-msgstr ":可能是一個目錄/檔案衝突?"
-
-#: merge-recursive.c:908
-#, c-format
-msgid "refusing to lose untracked file at '%s'"
-msgstr "拒絕捨棄 '%s' 中的未追蹤檔案"
-
-#: merge-recursive.c:949 builtin/cat-file.c:41
-#, c-format
-msgid "cannot read object %s '%s'"
-msgstr "不能讀取物件 %s '%s'"
-
-#: merge-recursive.c:954
-#, c-format
-msgid "blob expected for %s '%s'"
-msgstr "%s '%s' 應為資料物件"
-
-#: merge-recursive.c:979
-#, c-format
-msgid "failed to open '%s': %s"
-msgstr "開啟 '%s' 失敗:%s"
-
-#: merge-recursive.c:990
+#: ls-refs.c:37
 #, c-format
-msgid "failed to symlink '%s': %s"
-msgstr "建立符號連結 '%s' 失敗:%s"
+msgid "invalid value '%s' for lsrefs.unborn"
+msgstr "lsrefs.unborn 的值「%s」無效"
 
-#: merge-recursive.c:995
-#, c-format
-msgid "do not know what to do with %06o %s '%s'"
-msgstr "不知道如何處理 %06o %s '%s'"
+#: ls-refs.c:167
+msgid "expected flush after ls-refs arguments"
+msgstr "在 ls-refs 引數之後應該有一個 flush 包"
 
-#: merge-recursive.c:1191
+#: merge-ort.c:888 merge-recursive.c:1191
 #, c-format
 msgid "Failed to merge submodule %s (not checked out)"
 msgstr "無法合併子模組 %s (沒有檢出)"
 
-#: merge-recursive.c:1198
+#: merge-ort.c:897 merge-recursive.c:1198
 #, c-format
 msgid "Failed to merge submodule %s (commits not present)"
 msgstr "無法合併子模組 %s(提交不存在)"
 
-#: merge-recursive.c:1205
+#: merge-ort.c:906 merge-recursive.c:1205
 #, c-format
 msgid "Failed to merge submodule %s (commits don't follow merge-base)"
 msgstr "無法合併子模組 %s (提交未跟隨合併基礎)"
 
-#: merge-recursive.c:1213 merge-recursive.c:1225
-#, c-format
-msgid "Fast-forwarding submodule %s to the following commit:"
-msgstr "子模組 %s 快轉到如下提交:"
-
-#: merge-recursive.c:1216 merge-recursive.c:1228
+#: merge-ort.c:916 merge-ort.c:923
 #, c-format
-msgid "Fast-forwarding submodule %s"
-msgstr "快轉子模組 %s"
+msgid "Note: Fast-forwarding submodule %s to %s"
+msgstr "注意:正在將 %s 子模組快轉到 %s"
 
-#: merge-recursive.c:1251
+#: merge-ort.c:944
 #, c-format
-msgid "Failed to merge submodule %s (merge following commits not found)"
-msgstr "無法合併子模組 %s (沒發現合併跟隨的提交)"
+msgid "Failed to merge submodule %s"
+msgstr "無法合併 %s 子模組"
 
-#: merge-recursive.c:1255
+#: merge-ort.c:951
 #, c-format
-msgid "Failed to merge submodule %s (not fast-forward)"
-msgstr "無法合併子模組 %s(非快轉)"
-
-#: merge-recursive.c:1256
-msgid "Found a possible merge resolution for the submodule:\n"
-msgstr "找到子模組的一個可能的合併方案:\n"
+msgid ""
+"Failed to merge submodule %s, but a possible merge resolution exists:\n"
+"%s\n"
+msgstr ""
+"無法合併 %s 子模組,但有找到一個可行的合併方案:\n"
+"%s\n"
 
-#: merge-recursive.c:1259
+#: merge-ort.c:955 merge-recursive.c:1259
 #, c-format
 msgid ""
 "If this is correct simply add it to the index for example\n"
@@ -4773,67 +4791,328 @@ msgstr ""
 "\n"
 "以接受此建議。\n"
 
-#: merge-recursive.c:1268
+#: merge-ort.c:968
 #, c-format
-msgid "Failed to merge submodule %s (multiple merges found)"
-msgstr "無法合併子模組 %s (發現多個合併)"
+msgid ""
+"Failed to merge submodule %s, but multiple possible merges exist:\n"
+"%s"
+msgstr ""
+"無法合併 %s 子模組,但有找到幾個可行的合併方案:\n"
+"%s"
 
-#: merge-recursive.c:1341
+#: merge-ort.c:1127 merge-recursive.c:1341
 msgid "Failed to execute internal merge"
 msgstr "無法執行內部合併"
 
-#: merge-recursive.c:1346
+#: merge-ort.c:1132 merge-recursive.c:1346
 #, c-format
 msgid "Unable to add %s to database"
 msgstr "不能新增 %s 至物件庫"
 
-#: merge-recursive.c:1378
+#: merge-ort.c:1139 merge-recursive.c:1378
 #, c-format
 msgid "Auto-merging %s"
 msgstr "自動合併 %s"
 
-#: merge-recursive.c:1402
+#: merge-ort.c:1278 merge-recursive.c:2100
 #, c-format
-msgid "Error: Refusing to lose untracked file at %s; writing to %s instead."
-msgstr "錯誤:拒絕遺失未追蹤檔案 '%s',而是寫入 %s。"
+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:1474
+#: merge-ort.c:1288 merge-recursive.c:2110
 #, c-format
 msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
-"in tree."
+"CONFLICT (implicit dir rename): Cannot map more than one path to %s; "
+"implicit directory renames tried to put these paths there: %s"
 msgstr ""
-"衝突(%1$s/刪除):%2$s 在 %3$s 中被刪除,在 %5$s 中被 %4$s。%7$s 的 %6$s 版"
-"本被保留。"
+"衝突(隱式目錄重新命名):無法映射一個以上路徑到 %s,隱式目錄重新命名嘗試將這"
+"些路徑放置於此:%s"
 
-#: merge-recursive.c:1479
-#, c-format
+#: merge-ort.c:1471
+#, fuzzy, 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."
 msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
-"left in tree."
+"CONFLICT (directory rename split): Unclear where to rename %s to; it was "
+"renamed to multiple other directories, with no destination getting a "
+"majority of the files."
 msgstr ""
-"衝突(%1$s/刪除):%2$s 在 %3$s 中被刪除,在 %6$s 中的 %5$s 被 %4$s。%8$s 的 "
-"%7$s 版本被保留。"
+"衝突(分割的目錄重新命名):不清楚 %s 應該放在哪裡,因為目錄 %s 被重新命名到"
+"多個其它目錄,沒有目錄包含大部分檔案。"
 
-#: merge-recursive.c:1486
+#: merge-ort.c:1637 merge-recursive.c:2447
 #, c-format
 msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
-"in tree at %s."
-msgstr ""
-"衝突(%1$s/刪除):%2$s 在 %3$s 中被刪除,在 %5$s 中被 %4$s。%7$s 的 %6$s 版"
-"本保留在 %8$s 中。"
+"WARNING: Avoiding applying %s -> %s rename to %s, because %s itself was "
+"renamed."
+msgstr "警告:避免應用 %s -> %s 的重新命名到 %s,因為 %s 本身已被重新命名。"
 
-#: merge-recursive.c:1491
+#: merge-ort.c:1781 merge-recursive.c:3215
 #, 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."
+"Path updated: %s added in %s inside a directory that was renamed in %s; "
+"moving it to %s."
 msgstr ""
-"衝突(%1$s/刪除):%2$s 在 %3$s 中被刪除,在 %6$s 中的 %5$s 被 %4$s。%8$s 的 "
-"%7$s 版本保留在 %9$s 中。"
+"路徑已更新:%s 新增到 %s,位於一個被重新命名到 %s 的目錄中,將其移動到 %s。"
 
-#: merge-recursive.c:1526
+#: merge-ort.c:1788 merge-recursive.c:3222
+#, c-format
+msgid ""
+"Path updated: %s renamed to %s in %s, inside a directory that was renamed in "
+"%s; moving it to %s."
+msgstr ""
+"路徑已更新:%1$s 重新命名為 %3$s 中的 %2$s,而該目錄被重新命名到 %4$s 中,將"
+"其移動到 %5$s。"
+
+#: merge-ort.c:1801 merge-recursive.c:3218
+#, c-format
+msgid ""
+"CONFLICT (file location): %s added in %s inside a directory that was renamed "
+"in %s, suggesting it should perhaps be moved to %s."
+msgstr ""
+"衝突(檔案位置):%s 新增到 %s,位於一個被重新命名為 %s 的目錄中,建議將其移"
+"動到 %s。"
+
+#: merge-ort.c:1809 merge-recursive.c:3225
+#, c-format
+msgid ""
+"CONFLICT (file location): %s renamed to %s in %s, inside a directory that "
+"was renamed in %s, suggesting it should perhaps be moved to %s."
+msgstr ""
+"衝突(檔案位置):%1$s 重新命名為 %3$s 中的 %2$s,而該目錄被重新命名到 %4$s "
+"中,建議將其移動到 %5$s。"
+
+#: merge-ort.c:1952
+#, fuzzy, c-format
+#| msgid "CONFLICT (rename/rename): Rename %s->%s in %s. Rename %s->%s in %s"
+msgid "CONFLICT (rename/rename): %s renamed to %s in %s and to %s in %s."
+msgstr ""
+"衝突(重新命名/重新命名):在 %3$s 中重新命名 %1$s->%2$s,在 %6$s 中重新命名 "
+"%4$s->%5$s"
+
+#: merge-ort.c:2047
+#, c-format
+msgid ""
+"CONFLICT (rename involved in collision): rename of %s -> %s has content "
+"conflicts AND collides with another path; this may result in nested conflict "
+"markers."
+msgstr ""
+
+#: merge-ort.c:2066 merge-ort.c:2090
+#, fuzzy, c-format
+#| msgid "CONFLICT (rename/add): Rename %s->%s in %s.  Added %s in %s"
+msgid "CONFLICT (rename/delete): %s renamed to %s in %s, but deleted in %s."
+msgstr ""
+"衝突(重新命名/新增):在 %3$s 中重新命名 %1$s->%2$s。在 %5$s 中新增 %4$s"
+
+#: merge-ort.c:2735
+#, c-format
+msgid ""
+"CONFLICT (file/directory): directory in the way of %s from %s; moving it to "
+"%s instead."
+msgstr ""
+
+#: merge-ort.c:2808
+#, c-format
+msgid ""
+"CONFLICT (distinct types): %s had different types on each side; renamed %s "
+"of them so each can be recorded somewhere."
+msgstr ""
+
+#: merge-ort.c:2812
+msgid "both"
+msgstr "雙方"
+
+#: merge-ort.c:2812
+msgid "one"
+msgstr "一方"
+
+#: merge-ort.c:2907 merge-recursive.c:3052
+msgid "content"
+msgstr "內容"
+
+#: merge-ort.c:2909 merge-recursive.c:3056
+msgid "add/add"
+msgstr "新增/新增"
+
+#: merge-ort.c:2911 merge-recursive.c:3101
+msgid "submodule"
+msgstr "子模組"
+
+#: merge-ort.c:2913 merge-recursive.c:3102
+#, c-format
+msgid "CONFLICT (%s): Merge conflict in %s"
+msgstr "衝突(%s):合併衝突於 %s"
+
+#: merge-ort.c:2938
+#, fuzzy, c-format
+#| msgid ""
+#| "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s "
+#| "left in tree."
+msgid ""
+"CONFLICT (modify/delete): %s deleted in %s and modified in %s.  Version %s "
+"of %s left in tree."
+msgstr ""
+"衝突(%1$s/刪除):%2$s 在 %3$s 中被刪除,在 %5$s 中被 %4$s。%7$s 的 %6$s 版"
+"本被保留。"
+
+#. TRANSLATORS: The %s arguments are: 1) tree hash of a merge
+#. base, and 2-3) the trees for the two trees we're merging.
+#.
+#: merge-ort.c:3406
+#, c-format
+msgid "collecting merge info failed for trees %s, %s, %s"
+msgstr "%s, %s, %s 樹的合併資訊收集失敗"
+
+#: merge-ort-wrappers.c:13 merge-recursive.c:3661
+#, c-format
+msgid ""
+"Your local changes to the following files would be overwritten by merge:\n"
+"  %s"
+msgstr ""
+"您對下列檔案的本機修改將被合併動作覆蓋:\n"
+"  %s"
+
+#: merge-ort-wrappers.c:33 merge-recursive.c:3436
+#, c-format
+msgid "Already up to date!"
+msgstr "已經是最新的!"
+
+#: merge-recursive.c:356
+msgid "(bad commit)\n"
+msgstr "(壞提交)\n"
+
+#: merge-recursive.c:379
+#, c-format
+msgid "add_cacheinfo failed for path '%s'; merge aborting."
+msgstr "add_cacheinfo 對路徑 '%s' 執行失敗,合併終止。"
+
+#: merge-recursive.c:388
+#, c-format
+msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
+msgstr "add_cacheinfo 無法重新整理路徑 '%s',合併終止。"
+
+#: merge-recursive.c:874
+#, c-format
+msgid "failed to create path '%s'%s"
+msgstr "建立路徑 '%s'%s 失敗"
+
+#: merge-recursive.c:885
+#, c-format
+msgid "Removing %s to make room for subdirectory\n"
+msgstr "刪除 %s 以便為子目錄留出空間\n"
+
+#: merge-recursive.c:899 merge-recursive.c:918
+msgid ": perhaps a D/F conflict?"
+msgstr ":可能是一個目錄/檔案衝突?"
+
+#: merge-recursive.c:908
+#, c-format
+msgid "refusing to lose untracked file at '%s'"
+msgstr "拒絕捨棄 '%s' 中的未追蹤檔案"
+
+#: merge-recursive.c:949 builtin/cat-file.c:41
+#, c-format
+msgid "cannot read object %s '%s'"
+msgstr "不能讀取物件 %s '%s'"
+
+#: merge-recursive.c:954
+#, c-format
+msgid "blob expected for %s '%s'"
+msgstr "%s '%s' 應為資料物件"
+
+#: merge-recursive.c:979
+#, c-format
+msgid "failed to open '%s': %s"
+msgstr "開啟 '%s' 失敗:%s"
+
+#: merge-recursive.c:990
+#, c-format
+msgid "failed to symlink '%s': %s"
+msgstr "建立符號連結 '%s' 失敗:%s"
+
+#: merge-recursive.c:995
+#, c-format
+msgid "do not know what to do with %06o %s '%s'"
+msgstr "不知道如何處理 %06o %s '%s'"
+
+#: merge-recursive.c:1213 merge-recursive.c:1225
+#, c-format
+msgid "Fast-forwarding submodule %s to the following commit:"
+msgstr "子模組 %s 快轉到如下提交:"
+
+#: merge-recursive.c:1216 merge-recursive.c:1228
+#, c-format
+msgid "Fast-forwarding submodule %s"
+msgstr "快轉子模組 %s"
+
+#: merge-recursive.c:1251
+#, c-format
+msgid "Failed to merge submodule %s (merge following commits not found)"
+msgstr "無法合併子模組 %s (沒發現合併跟隨的提交)"
+
+#: merge-recursive.c:1255
+#, c-format
+msgid "Failed to merge submodule %s (not fast-forward)"
+msgstr "無法合併子模組 %s(非快轉)"
+
+#: merge-recursive.c:1256
+msgid "Found a possible merge resolution for the submodule:\n"
+msgstr "找到子模組的一個可能的合併方案:\n"
+
+#: merge-recursive.c:1268
+#, c-format
+msgid "Failed to merge submodule %s (multiple merges found)"
+msgstr "無法合併子模組 %s (發現多個合併)"
+
+#: merge-recursive.c:1402
+#, c-format
+msgid "Error: Refusing to lose untracked file at %s; writing to %s instead."
+msgstr "錯誤:拒絕遺失未追蹤檔案 '%s',而是寫入 %s。"
+
+#: merge-recursive.c:1474
+#, c-format
+msgid ""
+"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
+"in tree."
+msgstr ""
+"衝突(%1$s/刪除):%2$s 在 %3$s 中被刪除,在 %5$s 中被 %4$s。%7$s 的 %6$s 版"
+"本被保留。"
+
+#: merge-recursive.c:1479
+#, c-format
+msgid ""
+"CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
+"left in tree."
+msgstr ""
+"衝突(%1$s/刪除):%2$s 在 %3$s 中被刪除,在 %6$s 中的 %5$s 被 %4$s。%8$s 的 "
+"%7$s 版本被保留。"
+
+#: merge-recursive.c:1486
+#, c-format
+msgid ""
+"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
+"in tree at %s."
+msgstr ""
+"衝突(%1$s/刪除):%2$s 在 %3$s 中被刪除,在 %5$s 中被 %4$s。%7$s 的 %6$s 版"
+"本保留在 %8$s 中。"
+
+#: merge-recursive.c:1491
+#, 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 ""
+"衝突(%1$s/刪除):%2$s 在 %3$s 中被刪除,在 %6$s 中的 %5$s 被 %4$s。%8$s 的 "
+"%7$s 版本保留在 %9$s 中。"
+
+#: merge-recursive.c:1526
 msgid "rename"
 msgstr "重新命名"
 
@@ -4897,24 +5176,6 @@ msgstr ""
 "衝突(分割的目錄重新命名):不清楚 %s 應該放在哪裡,因為目錄 %s 被重新命名到"
 "多個其它目錄,沒有目錄包含大部分檔案。"
 
-#: merge-recursive.c:2100
-#, c-format
-msgid ""
-"CONFLICT (implicit dir rename): Existing file/dir at %s in the way of "
-"implicit directory rename(s) putting the following path(s) there: %s."
-msgstr ""
-"衝突(隱式目錄重新命名):處於隱式目錄重新命名的現存檔案/目錄 %s,將以下路徑"
-"放在:%s。"
-
-#: merge-recursive.c:2110
-#, c-format
-msgid ""
-"CONFLICT (implicit dir rename): Cannot map more than one path to %s; "
-"implicit directory renames tried to put these paths there: %s"
-msgstr ""
-"衝突(隱式目錄重新命名):無法映射一個以上路徑到 %s,隱式目錄重新命名嘗試將這"
-"些路徑放置於此:%s"
-
 #: merge-recursive.c:2202
 #, c-format
 msgid ""
@@ -4924,13 +5185,6 @@ msgstr ""
 "衝突(重新命名/重新命名):在 %3$s 中重新命名目錄 %1$s->%2$s,在 %6$s 中重新"
 "命名目錄 %4$s->%5$s"
 
-#: merge-recursive.c:2447
-#, c-format
-msgid ""
-"WARNING: Avoiding applying %s -> %s rename to %s, because %s itself was "
-"renamed."
-msgstr "警告:避免應用 %s -> %s 的重新命名到 %s,因為 %s 本身已被重新命名。"
-
 #: merge-recursive.c:2973
 #, c-format
 msgid "cannot read object %s"
@@ -4949,72 +5203,20 @@ msgstr "修改"
 msgid "modified"
 msgstr "修改"
 
-#: merge-recursive.c:3052
-msgid "content"
-msgstr "內容"
-
-#: merge-recursive.c:3056
-msgid "add/add"
-msgstr "新增/新增"
-
 #: merge-recursive.c:3079
 #, c-format
 msgid "Skipped %s (merged same as existing)"
 msgstr "略過 %s(已經做過相同合併)"
 
-#: merge-recursive.c:3101
-msgid "submodule"
-msgstr "子模組"
-
-#: merge-recursive.c:3102
-#, c-format
-msgid "CONFLICT (%s): Merge conflict in %s"
-msgstr "衝突(%s):合併衝突於 %s"
-
 #: merge-recursive.c:3132
 #, c-format
 msgid "Adding as %s instead"
 msgstr "而是以 %s 為名新增"
 
-#: merge-recursive.c:3215
+#: merge-recursive.c:3339
 #, c-format
-msgid ""
-"Path updated: %s added in %s inside a directory that was renamed in %s; "
-"moving it to %s."
-msgstr ""
-"路徑已更新:%s 新增到 %s,位於一個被重新命名到 %s 的目錄中,將其移動到 %s。"
-
-#: merge-recursive.c:3218
-#, c-format
-msgid ""
-"CONFLICT (file location): %s added in %s inside a directory that was renamed "
-"in %s, suggesting it should perhaps be moved to %s."
-msgstr ""
-"衝突(檔案位置):%s 新增到 %s,位於一個被重新命名為 %s 的目錄中,建議將其移"
-"動到 %s。"
-
-#: merge-recursive.c:3222
-#, c-format
-msgid ""
-"Path updated: %s renamed to %s in %s, inside a directory that was renamed in "
-"%s; moving it to %s."
-msgstr ""
-"路徑已更新:%1$s 重新命名為 %3$s 中的 %2$s,而該目錄被重新命名到 %4$s 中,將"
-"其移動到 %5$s。"
-
-#: merge-recursive.c:3225
-#, c-format
-msgid ""
-"CONFLICT (file location): %s renamed to %s in %s, inside a directory that "
-"was renamed in %s, suggesting it should perhaps be moved to %s."
-msgstr ""
-"衝突(檔案位置):%1$s 重新命名為 %3$s 中的 %2$s,而該目錄被重新命名到 %4$s "
-"中,建議將其移動到 %5$s。"
-
-#: merge-recursive.c:3339
-#, c-format
-msgid "Removing %s"
-msgstr "刪除 %s"
+msgid "Removing %s"
+msgstr "刪除 %s"
 
 #: merge-recursive.c:3362
 msgid "file/directory"
@@ -5044,26 +5246,27 @@ msgstr "衝突(add/add):合併衝突於 %s"
 msgid "merging of trees %s and %s failed"
 msgstr "無法合併樹 %s 和 %s"
 
-#: merge-recursive.c:3550
+#: merge-recursive.c:3539
 msgid "Merging:"
 msgstr "合併:"
 
-#: merge-recursive.c:3563
+#: merge-recursive.c:3552
 #, c-format
 msgid "found %u common ancestor:"
 msgid_plural "found %u common ancestors:"
 msgstr[0] "發現 %u 個共同祖先:"
 
-#: merge-recursive.c:3613
+#: merge-recursive.c:3602
 msgid "merge returned no commit"
 msgstr "合併未返回提交"
 
-#: merge-recursive.c:3769
+#: merge-recursive.c:3758
 #, c-format
 msgid "Could not parse object '%s'"
 msgstr "不能解析物件 '%s'"
 
-#: merge-recursive.c:3787 builtin/merge.c:711 builtin/merge.c:895
+#: merge-recursive.c:3776 builtin/merge.c:712 builtin/merge.c:896
+#: builtin/stash.c:471
 msgid "Unable to write index."
 msgstr "不能寫入索引。"
 
@@ -5071,184 +5274,178 @@ msgstr "不能寫入索引。"
 msgid "failed to read the cache"
 msgstr "讀取快取失敗"
 
-#: merge.c:109 rerere.c:720 builtin/am.c:1883 builtin/am.c:1917
-#: builtin/checkout.c:573 builtin/checkout.c:829 builtin/clone.c:817
+#: merge.c:109 rerere.c:704 builtin/am.c:1883 builtin/am.c:1917
+#: builtin/checkout.c:575 builtin/checkout.c:828 builtin/clone.c:817
 #: builtin/stash.c:265
 msgid "unable to write new index file"
 msgstr "無法寫新的索引檔案"
 
-#: midx.c:80
+#: midx.c:62
+#, fuzzy
+#| msgid "multi-pack-index version %d not recognized"
+msgid "multi-pack-index OID fanout is of the wrong size"
+msgstr "multi-pack-index 版本 %d 不能被識別"
+
+#: midx.c:93
 #, c-format
 msgid "multi-pack-index file %s is too small"
 msgstr "多包索引檔案 %s 太小"
 
-#: midx.c:96
+#: midx.c:109
 #, c-format
 msgid "multi-pack-index signature 0x%08x does not match signature 0x%08x"
 msgstr "多包索引簽名 0x%08x 和簽名 0x%08x 不符合"
 
-#: midx.c:101
+#: midx.c:114
 #, c-format
 msgid "multi-pack-index version %d not recognized"
 msgstr "multi-pack-index 版本 %d 不能被識別"
 
-#: midx.c:106
+#: midx.c:119
 #, c-format
 msgid "multi-pack-index hash version %u does not match version %u"
 msgstr "multi-pack-index 雜湊版本 %u 與版本 %u 不符合"
 
-#: midx.c:123
-msgid "invalid chunk offset (too large)"
-msgstr "無效的區塊位移(太大)"
-
-#: midx.c:147
-msgid "terminating multi-pack-index chunk id appears earlier than expected"
-msgstr "終止多包索引區塊 id 出現時間早於預期"
-
-#: midx.c:160
+#: midx.c:136
 msgid "multi-pack-index missing required pack-name chunk"
 msgstr "多包索引缺少必需的包名塊"
 
-#: midx.c:162
+#: midx.c:138
 msgid "multi-pack-index missing required OID fanout chunk"
 msgstr "多包索引缺少必需的物件 ID 扇出塊"
 
-#: midx.c:164
+#: midx.c:140
 msgid "multi-pack-index missing required OID lookup chunk"
 msgstr "多包索引缺少必需的物件 ID 查詢塊"
 
-#: midx.c:166
+#: midx.c:142
 msgid "multi-pack-index missing required object offsets chunk"
 msgstr "多包索引缺少必需的物件位移塊"
 
-#: midx.c:180
+#: midx.c:158
 #, c-format
 msgid "multi-pack-index pack names out of order: '%s' before '%s'"
 msgstr "多包索引包名無序:'%s' 在 '%s' 之前"
 
-#: midx.c:223
+#: midx.c:202
 #, c-format
 msgid "bad pack-int-id: %u (%u total packs)"
 msgstr "錯的 pack-int-id:%u(共有 %u 個包)"
 
-#: midx.c:273
+#: midx.c:252
 msgid "multi-pack-index stores a 64-bit offset, but off_t is too small"
 msgstr "多包索引儲存一個64位位移,但是 off_t 太小"
 
-#: midx.c:480
+#: midx.c:467
 #, c-format
 msgid "failed to add packfile '%s'"
 msgstr "新增 packfile '%s' 失敗"
 
-#: midx.c:486
+#: midx.c:473
 #, c-format
 msgid "failed to open pack-index '%s'"
 msgstr "開啟包索引 '%s' 失敗"
 
-#: midx.c:546
+#: midx.c:533
 #, c-format
 msgid "failed to locate object %d in packfile"
 msgstr "在 packfile 中定位物件 %d 失敗"
 
-#: midx.c:846
+#: midx.c:821
 msgid "Adding packfiles to multi-pack-index"
 msgstr "正在新增 packfile 至多包索引"
 
-#: midx.c:879
+#: midx.c:855
 #, c-format
 msgid "did not see pack-file %s to drop"
 msgstr "沒有看到要捨棄的包檔案 %s"
 
-#: midx.c:931
+#: midx.c:904
 msgid "no pack files to index."
 msgstr "沒有要索引的 pack 檔案。"
 
-#: midx.c:982
-msgid "Writing chunks to multi-pack-index"
-msgstr "寫入區塊至多包索引"
-
-#: midx.c:1060
+#: midx.c:965
 #, c-format
 msgid "failed to clear multi-pack-index at %s"
 msgstr "清理位於 %s 的多包索引失敗"
 
-#: midx.c:1116
+#: midx.c:1021
 msgid "multi-pack-index file exists, but failed to parse"
 msgstr "有 multi-pack-index 檔案,但無法解析"
 
-#: midx.c:1124
+#: midx.c:1029
 msgid "Looking for referenced packfiles"
 msgstr "正在尋找引用的 packfile"
 
-#: midx.c:1139
+#: midx.c:1044
 #, c-format
 msgid ""
 "oid fanout out of order: fanout[%d] = %<PRIx32> > %<PRIx32> = fanout[%d]"
 msgstr "物件 ID 扇出無序:fanout[%d] = %<PRIx32> > %<PRIx32> = fanout[%d]"
 
-#: midx.c:1144
+#: midx.c:1049
 msgid "the midx contains no oid"
 msgstr "midx 沒有 oid"
 
-#: midx.c:1153
+#: midx.c:1058
 msgid "Verifying OID order in multi-pack-index"
 msgstr "正在驗證多包索引中的物件 ID 順序"
 
-#: midx.c:1162
+#: midx.c:1067
 #, c-format
 msgid "oid lookup out of order: oid[%d] = %s >= %s = oid[%d]"
 msgstr "物件 ID 查詢無序:oid[%d] = %s >= %s = oid[%d]"
 
-#: midx.c:1182
+#: midx.c:1087
 msgid "Sorting objects by packfile"
 msgstr "透過 packfile 為物件排序"
 
-#: midx.c:1189
+#: midx.c:1094
 msgid "Verifying object offsets"
 msgstr "正在驗證物件位移"
 
-#: midx.c:1205
+#: midx.c:1110
 #, c-format
 msgid "failed to load pack entry for oid[%d] = %s"
 msgstr "為 oid[%d] = %s 載入包條目失敗"
 
-#: midx.c:1211
+#: midx.c:1116
 #, c-format
 msgid "failed to load pack-index for packfile %s"
 msgstr "為 packfile %s 載入包索引失敗"
 
-#: midx.c:1220
+#: midx.c:1125
 #, c-format
 msgid "incorrect object offset for oid[%d] = %s: %<PRIx64> != %<PRIx64>"
 msgstr "oid[%d] = %s 錯誤的物件位移:%<PRIx64> != %<PRIx64>"
 
-#: midx.c:1245
+#: midx.c:1150
 msgid "Counting referenced objects"
 msgstr "正在計算引用物件"
 
-#: midx.c:1255
+#: midx.c:1160
 msgid "Finding and deleting unreferenced packfiles"
 msgstr "正在尋找並刪除沒有參考的 packfile"
 
-#: midx.c:1446
+#: midx.c:1351
 msgid "could not start pack-objects"
 msgstr "不能開始 pack-objects"
 
-#: midx.c:1466
+#: midx.c:1371
 msgid "could not finish pack-objects"
 msgstr "不能結束 pack-objects"
 
-#: name-hash.c:537
+#: name-hash.c:538
 #, c-format
 msgid "unable to create lazy_dir thread: %s"
 msgstr "不能建立 lazy_dir 執行緒:%s"
 
-#: name-hash.c:559
+#: name-hash.c:560
 #, c-format
 msgid "unable to create lazy_name thread: %s"
 msgstr "不能建立 lazy_name 執行緒:%s"
 
-#: name-hash.c:565
+#: name-hash.c:566
 #, c-format
 msgid "unable to join lazy_name thread: %s"
 msgstr "不能加入 lasy_name 執行緒:%s"
@@ -5292,2929 +5489,2992 @@ msgstr "拒絕向 %s(在 refs/notes/ 之外)寫入註解"
 msgid "Bad %s value: '%s'"
 msgstr "壞的 %s 值:'%s'"
 
-#: object.c:53
+#: object-file.c:480
 #, c-format
-msgid "invalid object type \"%s\""
-msgstr "ç\84¡æ\95\88ç\9a\84ç\89©ä»¶é¡\9eå\9e\8b \"%s\""
+msgid "object directory %s does not exist; check .git/objects/info/alternates"
+msgstr "ç\89©ä»¶ç\9b®é\8c\84 %s ä¸\8då­\98å\9c¨ï¼\8c檢æ\9f¥ .git/objects/info/alternates"
 
-#: object.c:173
+#: object-file.c:531
 #, c-format
-msgid "object %s is a %s, not a %s"
-msgstr "ç\89©ä»¶ %s æ\98¯ä¸\80å\80\8b %sï¼\8cä¸\8dæ\98¯ä¸\80å\80\8b %s"
+msgid "unable to normalize alternate object path: %s"
+msgstr "ç\84¡æ³\95è¦\8fç¯\84å\8c\96å\82\99ç\94¨ç\89©ä»¶è·¯å¾\91ï¼\9a%s"
 
-#: object.c:233
+#: object-file.c:603
 #, c-format
-msgid "object %s has unknown type id %d"
-msgstr "物件 %s 有未知的類型 id %d"
+msgid "%s: ignoring alternate object stores, nesting too deep"
+msgstr "%s:忽略備用物件庫,嵌套太深"
 
-#: object.c:246
+#: object-file.c:610
 #, c-format
-msgid "unable to parse object: %s"
-msgstr "不能解析物件:%s"
+msgid "unable to normalize object directory: %s"
+msgstr "無法規範化物件目錄: %s"
 
-#: object.c:266 object.c:278
-#, c-format
-msgid "hash mismatch %s"
-msgstr "雜湊值與 %s 不符合"
+#: object-file.c:653
+msgid "unable to fdopen alternates lockfile"
+msgstr "無法 fdopen 取代鎖檔案"
 
-#: pack-bitmap.c:815 pack-bitmap.c:821 builtin/pack-objects.c:2216
-#, c-format
-msgid "unable to get size of %s"
-msgstr "不能得到 %s 的大小"
+#: object-file.c:671
+msgid "unable to read alternates file"
+msgstr "無法讀取替代檔案"
 
-#: packfile.c:615
-msgid "offset before end of packfile (broken .idx?)"
-msgstr "位移量在 packfile 結束之前(損壞的 .idx?)"
+#: object-file.c:678
+msgid "unable to move new alternates file into place"
+msgstr "無法將新的替代檔案移動到位"
 
-#: packfile.c:1907
+#: object-file.c:713
 #, c-format
-msgid "offset before start of pack index for %s (corrupt index?)"
-msgstr "位移量在 %s 的包索引開始之前(損壞的索引?)"
+msgid "path '%s' does not exist"
+msgstr "路徑 '%s' 不存在"
 
-#: packfile.c:1911
+#: object-file.c:734
 #, c-format
-msgid "offset beyond end of pack index for %s (truncated index?)"
-msgstr "位移量越過了 %s 的包索引的結尾(被截斷的索引?)"
+msgid "reference repository '%s' as a linked checkout is not supported yet."
+msgstr "尚不支援將參考版本庫 '%s' 作為一個連結檢出。"
 
-#: parse-options-cb.c:20 parse-options-cb.c:24
+#: object-file.c:740
 #, c-format
-msgid "option `%s' expects a numerical value"
-msgstr "選項 `%s' 期望一個數字值"
+msgid "reference repository '%s' is not a local repository."
+msgstr "參考版本庫 '%s' 不是一個本機版本庫。"
 
-#: parse-options-cb.c:41
+#: object-file.c:746
 #, c-format
-msgid "malformed expiration date '%s'"
-msgstr "格式錯誤的到期時間:'%s'"
+msgid "reference repository '%s' is shallow"
+msgstr "參考版本庫 '%s' 是一個淺複製"
 
-#: parse-options-cb.c:54
+#: object-file.c:754
 #, c-format
-msgid "option `%s' expects \"always\", \"auto\", or \"never\""
-msgstr "選項 `%s' 期望 \"always\"、\"auto\" 或 \"never\""
+msgid "reference repository '%s' is grafted"
+msgstr "參考版本庫 '%s' 已被移植"
 
-#: parse-options-cb.c:132 parse-options-cb.c:149
+#: object-file.c:814
 #, c-format
-msgid "malformed object name '%s'"
-msgstr "格式錯誤的物件名 '%s'"
+msgid "invalid line while parsing alternate refs: %s"
+msgstr "解析備用引用時無效的行:%s"
 
-#: parse-options.c:38
+#: object-file.c:964
 #, c-format
-msgid "%s requires a value"
-msgstr "%s 需要一個值"
+msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
+msgstr "嘗試 mmap %<PRIuMAX>,超過了最大值 %<PRIuMAX>"
 
-#: parse-options.c:73
-#, c-format
-msgid "%s is incompatible with %s"
-msgstr "%s 與 %s 不相容"
+#: object-file.c:985
+msgid "mmap failed"
+msgstr "mmap 失敗"
 
-#: parse-options.c:78
+#: object-file.c:1149
 #, c-format
-msgid "%s : incompatible with something else"
-msgstr "%s:和其它的不相容"
+msgid "object file %s is empty"
+msgstr "物件檔案 %s 為空"
 
-#: parse-options.c:92 parse-options.c:96 parse-options.c:317
+#: object-file.c:1284 object-file.c:2477
 #, c-format
-msgid "%s takes no value"
-msgstr "%s 不取值"
+msgid "corrupt loose object '%s'"
+msgstr "損壞的鬆散物件 '%s'"
 
-#: parse-options.c:94
+#: object-file.c:1286 object-file.c:2481
 #, c-format
-msgid "%s isn't available"
-msgstr "%s 不可用"
+msgid "garbage at end of loose object '%s'"
+msgstr "鬆散物件 '%s' 後面有垃圾資料"
 
-#: parse-options.c:217
-#, c-format
-msgid "%s expects a non-negative integer value with an optional k/m/g suffix"
-msgstr "%s 期望一個非負整數和一個可選的 k/m/g 後綴"
+#: object-file.c:1328
+msgid "invalid object type"
+msgstr "無效的物件類型"
 
-#: parse-options.c:386
+#: object-file.c:1412
 #, c-format
-msgid "ambiguous option: %s (could be --%s%s or --%s%s)"
-msgstr "有歧義的選項:%s(可以是 --%s%s 或 --%s%s)"
+msgid "unable to unpack %s header with --allow-unknown-type"
+msgstr "無法用 --allow-unknown-type 參數解開 %s 標頭訊息"
 
-#: parse-options.c:420 parse-options.c:428
+#: object-file.c:1415
 #, c-format
-msgid "did you mean `--%s` (with two dashes)?"
-msgstr "你的意思是 `--%s`(有兩個短線)嗎?"
+msgid "unable to unpack %s header"
+msgstr "無法解開 %s 頭部"
 
-#: parse-options.c:666 parse-options.c:971
+#: object-file.c:1421
 #, c-format
-msgid "alias of --%s"
-msgstr "--%s 的別名"
+msgid "unable to parse %s header with --allow-unknown-type"
+msgstr "無法用 --allow-unknown-type 參數解析 %s 標頭訊息"
 
-#: parse-options.c:862
+#: object-file.c:1424
 #, c-format
-msgid "unknown option `%s'"
-msgstr "未知選項 `%s'"
+msgid "unable to parse %s header"
+msgstr "無法解析 %s 頭部"
 
-#: parse-options.c:864
+#: object-file.c:1651
 #, c-format
-msgid "unknown switch `%c'"
-msgstr "未知開關 `%c'"
+msgid "failed to read object %s"
+msgstr "讀取物件 %s 失敗"
 
-#: parse-options.c:866
+#: object-file.c:1655
 #, c-format
-msgid "unknown non-ascii option in string: `%s'"
-msgstr "字串中未知的非 ascii 字元選項:`%s'"
-
-#: parse-options.c:890
-msgid "..."
-msgstr "..."
+msgid "replacement %s not found for %s"
+msgstr "找不到 %2$s 的替代 %1$s"
 
-#: parse-options.c:909
+#: object-file.c:1659
 #, c-format
-msgid "usage: %s"
-msgstr "用法:%s"
+msgid "loose object %s (stored in %s) is corrupt"
+msgstr "鬆散物件 %s(儲存在 %s)已損壞"
 
-#. TRANSLATORS: the colon here should align with the
-#. one in "usage: %s" translation.
-#.
-#: parse-options.c:915
+#: object-file.c:1663
 #, c-format
-msgid "   or: %s"
-msgstr "   或:%s"
+msgid "packed object %s (stored in %s) is corrupt"
+msgstr "打包物件 %s(儲存在 %s)已損壞"
 
-#  譯者:為保證在輸出中對齊,注意調整句中空格!
-#: parse-options.c:918
+#: object-file.c:1768
 #, c-format
-msgid "    %s"
-msgstr "    %s"
-
-#: parse-options.c:957
-msgid "-NUM"
-msgstr "-數字"
+msgid "unable to write file %s"
+msgstr "無法寫檔案 %s"
 
-#: path.c:915
+#: object-file.c:1775
 #, c-format
-msgid "Could not make %s writable by group"
-msgstr "不能設定 %s 為組可寫"
-
-#: pathspec.c:130
-msgid "Escape character '\\' not allowed as last character in attr value"
-msgstr "跳脫字元 '\\' 不能作為屬性值的最後一個字元"
+msgid "unable to set permission to '%s'"
+msgstr "無法為 '%s' 設定權限"
 
-#: pathspec.c:148
-msgid "Only one 'attr:' specification is allowed."
-msgstr "只允許一個 'attr:' 規格。"
+#: object-file.c:1782
+msgid "file write error"
+msgstr "檔案寫錯誤"
 
-#: pathspec.c:151
-msgid "attr spec must not be empty"
-msgstr "屬性規格不能為空"
+#: object-file.c:1802
+msgid "error when closing loose object file"
+msgstr "關閉鬆散物件檔案時發生錯誤"
 
-#: pathspec.c:194
+#: object-file.c:1867
 #, c-format
-msgid "invalid attribute name %s"
-msgstr "無效的屬性名 %s"
-
-#: pathspec.c:259
-msgid "global 'glob' and 'noglob' pathspec settings are incompatible"
-msgstr "全域的 'glob' 和 'noglob' 路徑規格設定不相容"
+msgid "insufficient permission for adding an object to repository database %s"
+msgstr "權限不足,無法在版本庫物件庫 %s 中新增物件"
 
-#: pathspec.c:266
-msgid ""
-"global 'literal' pathspec setting is incompatible with all other global "
-"pathspec settings"
-msgstr "全域的 'literal' 路徑規格設定和其它的全域路徑規格設定不相容"
+#: object-file.c:1869
+msgid "unable to create temporary file"
+msgstr "無法建立暫存檔"
 
-#: pathspec.c:306
-msgid "invalid parameter for pathspec magic 'prefix'"
-msgstr "路徑規格包含無效的神奇前綴"
+#: object-file.c:1893
+msgid "unable to write loose object file"
+msgstr "不能寫鬆散物件檔案"
 
-#: pathspec.c:327
+#: object-file.c:1899
 #, c-format
-msgid "Invalid pathspec magic '%.*s' in '%s'"
-msgstr "在路徑規格 '%3$s' 中無效的神奇前綴 '%2$.*1$s'"
+msgid "unable to deflate new object %s (%d)"
+msgstr "不能壓縮新物件 %s(%d)"
 
-#: pathspec.c:332
+#: object-file.c:1903
 #, c-format
-msgid "Missing ')' at the end of pathspec magic in '%s'"
-msgstr "路徑規格 '%s' 的神奇前綴結尾少了一個 ')'"
+msgid "deflateEnd on object %s failed (%d)"
+msgstr "在物件 %s 上呼叫 deflateEnd 失敗(%d)"
 
-#: pathspec.c:370
+#: object-file.c:1907
 #, c-format
-msgid "Unimplemented pathspec magic '%c' in '%s'"
-msgstr "è·¯å¾\91è¦\8fæ ¼ '%2$s' ä¸­å\8c\85å\90«æ\9cªå¯¦ç\8f¾ç\9a\84ç¥\9eå¥\87å\89\8d綴 '%1$c'"
+msgid "confused by unstable object source data for %s"
+msgstr "被 %s ç\9a\84ä¸\8dç©©å®\9aç\89©ä»¶æº\90è³\87æ\96\99æ\90\9eç³\8aå¡\97äº\86"
 
-#: pathspec.c:429
+#: object-file.c:1917 builtin/pack-objects.c:1097
 #, c-format
-msgid "%s: 'literal' and 'glob' are incompatible"
-msgstr "%s:'literal' 和 'glob' 不相容"
+msgid "failed utime() on %s"
+msgstr "在 %s 上呼叫 utime() 失敗"
 
-#: pathspec.c:445
+#: object-file.c:1994
 #, c-format
-msgid "%s: '%s' is outside repository at '%s'"
-msgstr "%s:'%s' 在位於 '%s' 的版本庫之外"
+msgid "cannot read object for %s"
+msgstr "不能讀取物件 %s"
 
-#: pathspec.c:521
-#, c-format
-msgid "'%s' (mnemonic: '%c')"
-msgstr "'%s'(助記符:'%c')"
+#: object-file.c:2045
+msgid "corrupt commit"
+msgstr "損壞的提交"
 
-#: pathspec.c:531
-#, c-format
-msgid "%s: pathspec magic not supported by this command: %s"
-msgstr "%s:路徑規格神奇前綴不被此指令支援:%s"
+#: object-file.c:2053
+msgid "corrupt tag"
+msgstr "損壞的標籤"
 
-#: pathspec.c:598
+#: object-file.c:2153
 #, c-format
-msgid "pathspec '%s' is beyond a symbolic link"
-msgstr "路徑規格 '%s' 位於符號連結中"
+msgid "read error while indexing %s"
+msgstr "索引 %s 時讀取錯誤"
 
-#: pathspec.c:643
+#: object-file.c:2156
 #, c-format
-msgid "line is badly quoted: %s"
-msgstr "某行不應該被括號括住:%s"
-
-#: pkt-line.c:92
-msgid "unable to write flush packet"
-msgstr "無法寫 flush 包"
-
-#: pkt-line.c:99
-msgid "unable to write delim packet"
-msgstr "無法寫 delim 包"
-
-#: pkt-line.c:106
-msgid "unable to write stateless separator packet"
-msgstr "無法寫入無狀態的分隔符號封包"
-
-#: pkt-line.c:113
-msgid "flush packet write failed"
-msgstr "flush 包寫錯誤"
-
-#: pkt-line.c:153 pkt-line.c:239
-msgid "protocol error: impossibly long line"
-msgstr "協定錯誤:不可能的長行"
-
-#: pkt-line.c:169 pkt-line.c:171
-msgid "packet write with format failed"
-msgstr "格式化包寫入錯誤"
+msgid "short read while indexing %s"
+msgstr "索引 %s 時讀入不完整"
 
-#: pkt-line.c:203
-msgid "packet write failed - data exceeds max packet size"
-msgstr "寫封包失敗:資料超過了包的最大長度"
+#: object-file.c:2229 object-file.c:2239
+#, c-format
+msgid "%s: failed to insert into database"
+msgstr "%s:插入資料庫失敗"
 
-#: pkt-line.c:210 pkt-line.c:217
-msgid "packet write failed"
-msgstr "封包寫入失敗"
+#: object-file.c:2245
+#, c-format
+msgid "%s: unsupported file type"
+msgstr "%s:不支援的檔案類型"
 
-#: pkt-line.c:302
-msgid "read error"
-msgstr "讀取錯誤"
+#: object-file.c:2269
+#, c-format
+msgid "%s is not a valid object"
+msgstr "%s 不是一個有效的物件"
 
-#: pkt-line.c:310
-msgid "the remote end hung up unexpectedly"
-msgstr "遠端意外掛斷了"
+#: object-file.c:2271
+#, c-format
+msgid "%s is not a valid '%s' object"
+msgstr "%s 不是一個有效的 '%s' 物件"
 
-#: pkt-line.c:338
+#: object-file.c:2298 builtin/index-pack.c:192
 #, c-format
-msgid "protocol error: bad line length character: %.4s"
-msgstr "協定錯誤:錯誤的行長度字串:%.4s"
+msgid "unable to open %s"
+msgstr "不能開啟 %s"
 
-#: pkt-line.c:352 pkt-line.c:357
+#: object-file.c:2488 object-file.c:2541
 #, c-format
-msgid "protocol error: bad line length %d"
-msgstr "協定錯誤:錯誤的行長度 %d"
+msgid "hash mismatch for %s (expected %s)"
+msgstr "%s 的雜湊值不符合(預期 %s)"
 
-#: pkt-line.c:373 sideband.c:165
+#: object-file.c:2512
 #, c-format
-msgid "remote error: %s"
-msgstr "遠端錯誤:%s"
+msgid "unable to mmap %s"
+msgstr "不能 mmap %s"
 
-#: preload-index.c:119
-msgid "Refreshing index"
-msgstr "正在重新整理索引"
+#: object-file.c:2517
+#, c-format
+msgid "unable to unpack header of %s"
+msgstr "無法解壓縮 %s 的頭部"
 
-#: preload-index.c:138
+#: object-file.c:2523
 #, c-format
-msgid "unable to create threaded lstat: %s"
-msgstr "無法建立執行緒 lstat:%s"
+msgid "unable to parse header of %s"
+msgstr "無法解析 %s 的頭部"
 
-#: pretty.c:983
-msgid "unable to parse --pretty format"
-msgstr "不能解析 --pretty 格式"
+#: object-file.c:2534
+#, c-format
+msgid "unable to unpack contents of %s"
+msgstr "無法解壓縮 %s 的內容"
 
-#: promisor-remote.c:30
-msgid "promisor-remote: unable to fork off fetch subprocess"
-msgstr "promisor-remote: 無法 fork fetch 子處理程序"
+#: object-name.c:486
+#, c-format
+msgid "short object ID %s is ambiguous"
+msgstr "短物件 ID %s 存在歧義"
 
-#: promisor-remote.c:35 promisor-remote.c:37
-msgid "promisor-remote: could not write to fetch subprocess"
-msgstr "promisor-remote: 無法寫入 fetch 子處理程序"
+#: object-name.c:497
+msgid "The candidates are:"
+msgstr "候選者有:"
 
-#: promisor-remote.c:41
-msgid "promisor-remote: could not close stdin to fetch subprocess"
-msgstr "promisor-remote: 無法關閉 fetch 子處理程序的 stdin"
+#: object-name.c:796
+msgid ""
+"Git normally never creates a ref that ends with 40 hex characters\n"
+"because it will be ignored when you just specify 40-hex. These refs\n"
+"may be created by mistake. For example,\n"
+"\n"
+"  git switch -c $br $(git rev-parse ...)\n"
+"\n"
+"where \"$br\" is somehow empty and a 40-hex ref is created. Please\n"
+"examine these refs and maybe delete them. Turn this message off by\n"
+"running \"git config advice.objectNameWarning false\""
+msgstr ""
+"Git 通常不會建立以 40 個十六進位字元結尾的引用,\n"
+"因為當您只提供 40 個十六進位字元時,其將被忽略。\n"
+"這些引用可能被意外建立。例如:\n"
+"\n"
+"  git switch -c $br $(git rev-parse ...)\n"
+"\n"
+"當「$br」因為某些原因空白時,會建立出 40 位十六進位的引用。\n"
+"請檢查這些引用,並視需要刪除。執行\n"
+"「git config advice.objectNameWarning false」命令以關閉本訊息通知"
 
-#: promisor-remote.c:53
+#: object-name.c:916
 #, c-format
-msgid "promisor remote name cannot begin with '/': %s"
-msgstr "promisor 遠端名稱不能以 '/' 開始:%s"
+msgid "log for '%.*s' only goes back to %s"
+msgstr "'%.*s' 的日誌只能回到 %s"
 
-#: prune-packed.c:35
-msgid "Removing duplicate objects"
-msgstr "正在刪除重複物件"
+#: object-name.c:924
+#, c-format
+msgid "log for '%.*s' only has %d entries"
+msgstr "'%.*s' 的日誌只有 %d 個項目"
 
-#: range-diff.c:77
-msgid "could not start `log`"
-msgstr "不能啟動 `log`"
+#: object-name.c:1702
+#, c-format
+msgid "path '%s' exists on disk, but not in '%.*s'"
+msgstr "磁碟上存在 '%s' 路徑,但不存在於 '%.*s'"
 
-#: range-diff.c:79
-msgid "could not read `log` output"
-msgstr "不能讀取 `log` 的輸出"
+#: object-name.c:1708
+#, c-format
+msgid ""
+"path '%s' exists, but not '%s'\n"
+"hint: Did you mean '%.*s:%s' aka '%.*s:./%s'?"
+msgstr ""
+"'%s' 路徑存在,但不是 '%s'\n"
+"提示:你在說 '%.*s:%s',即 '%.*s:./%s' 嗎?"
 
-#: range-diff.c:98 sequencer.c:5310
+#: object-name.c:1717
 #, c-format
-msgid "could not parse commit '%s'"
-msgstr "不能解析提交 '%s'"
+msgid "path '%s' does not exist in '%.*s'"
+msgstr "'%s' 路徑不存在於 '%.*s'"
 
-#: range-diff.c:112
+#: object-name.c:1745
 #, c-format
 msgid ""
-"could not parse first line of `log` output: did not start with 'commit ': "
-"'%s'"
-msgstr "無法解析第一行「log」輸出:開頭不是「commit」:「%s」"
+"path '%s' is in the index, but not at stage %d\n"
+"hint: Did you mean ':%d:%s'?"
+msgstr ""
+"'%s' 路徑在索引,但不在 %d 暫存區\n"
+"提示:你在說 ':%d:%s' 嗎?"
 
-#: range-diff.c:137
+#: object-name.c:1761
 #, c-format
-msgid "could not parse git header '%.*s'"
-msgstr "無法解析 git 頭 '%.*s'"
-
-#: range-diff.c:299
-msgid "failed to generate diff"
-msgstr "生成 diff 失敗"
+msgid ""
+"path '%s' is in the index, but not '%s'\n"
+"hint: Did you mean ':%d:%s' aka ':%d:./%s'?"
+msgstr ""
+"'%s' 路徑在索引,但不是 '%s'\n"
+"提示:你在說 ':%d:%s',即 ':%d:%s' 嗎?"
 
-#: range-diff.c:532 range-diff.c:534
+#: object-name.c:1769
 #, c-format
-msgid "could not parse log for '%s'"
-msgstr "不能解析 '%s' 的日誌"
+msgid "path '%s' exists on disk, but not in the index"
+msgstr "磁碟上存在 '%s' 路徑,但不在索引中"
 
-#: read-cache.c:682
+#: object-name.c:1771
 #, c-format
-msgid "will not add file alias '%s' ('%s' already exists in index)"
-msgstr "將不會新增檔案別名 '%s'('%s' 已經存在於索引中)"
+msgid "path '%s' does not exist (neither on disk nor in the index)"
+msgstr "'%s' 路徑不存在 (既不存在磁碟,也不存在索引)"
 
-#: read-cache.c:698
-msgid "cannot create an empty blob in the object database"
-msgstr "不能在物件資料庫中建立空的資料物件"
+#: object-name.c:1784
+msgid "relative path syntax can't be used outside working tree"
+msgstr "相對路徑與法不能用在工作區外"
 
-#: read-cache.c:720
+#: object-name.c:1922
 #, c-format
-msgid "%s: can only add regular files, symbolic links or git-directories"
-msgstr "%s:只能新增一般檔案、符號連結或 git 目錄"
+msgid "invalid object name '%.*s'."
+msgstr "'%.*s' 物件名稱無效。"
 
-#: read-cache.c:725
+#: object.c:53
 #, c-format
-msgid "'%s' does not have a commit checked out"
-msgstr "'%s' 沒有檢出一個提交"
+msgid "invalid object type \"%s\""
+msgstr "無效的物件類型 \"%s\""
 
-#: read-cache.c:777
+#: object.c:173
 #, c-format
-msgid "unable to index file '%s'"
-msgstr "ç\84¡æ³\95ç´¢å¼\95æª\94æ¡\88 '%s'"
+msgid "object %s is a %s, not a %s"
+msgstr "ç\89©ä»¶ %s æ\98¯ä¸\80å\80\8b %sï¼\8cä¸\8dæ\98¯ä¸\80å\80\8b %s"
 
-#: read-cache.c:796
+#: object.c:233
 #, c-format
-msgid "unable to add '%s' to index"
-msgstr "ç\84¡æ³\95å\9c¨ç´¢å¼\95中æ\96°å¢\9e '%s'"
+msgid "object %s has unknown type id %d"
+msgstr "ç\89©ä»¶ %s æ\9c\89æ\9cªç\9f¥ç\9a\84é¡\9eå\9e\8b id %d"
 
-#: read-cache.c:807
+#: object.c:246
 #, c-format
-msgid "unable to stat '%s'"
-msgstr "無法對 %s 執行 stat"
+msgid "unable to parse object: %s"
+msgstr "不能解析物件:%s"
 
-#: read-cache.c:1318
+#: object.c:266 object.c:278
 #, c-format
-msgid "'%s' appears as both a file and as a directory"
-msgstr "'%s' 看起來既是檔案又是目錄"
+msgid "hash mismatch %s"
+msgstr "雜湊值與 %s 不符合"
 
-#: read-cache.c:1524
-msgid "Refresh index"
-msgstr "重新整理索引"
+#: pack-bitmap.c:843 pack-bitmap.c:849 builtin/pack-objects.c:2226
+#, c-format
+msgid "unable to get size of %s"
+msgstr "不能得到 %s 的大小"
 
-#: read-cache.c:1639
+#: pack-bitmap.c:1489 builtin/rev-list.c:92
 #, c-format
-msgid ""
-"index.version set, but the value is invalid.\n"
-"Using version %i"
-msgstr ""
-"設定了 index.version,但是取值無效。\n"
-"使用版本 %i"
+msgid "unable to get disk usage of %s"
+msgstr "無法取得 %s 的磁碟用量"
 
-#: read-cache.c:1649
+#: pack-revindex.c:220
 #, c-format
-msgid ""
-"GIT_INDEX_VERSION set, but the value is invalid.\n"
-"Using version %i"
-msgstr ""
-"設定了 GIT_INDEX_VERSION,但是取值無效。\n"
-"使用版本 %i"
+msgid "reverse-index file %s is too small"
+msgstr "%s 倒排索引檔案過小"
 
-#: read-cache.c:1705
+#: pack-revindex.c:225
 #, c-format
-msgid "bad signature 0x%08x"
-msgstr "壞的簽名 0x%08x"
+msgid "reverse-index file %s is corrupt"
+msgstr "%s 倒排索引檔案損壞"
 
-#: read-cache.c:1708
+#: pack-revindex.c:233
 #, c-format
-msgid "bad index version %d"
-msgstr "壞的索引版本 %d"
+msgid "reverse-index file %s has unknown signature"
+msgstr "%s 倒排索引檔案有未知簽章"
 
-#: read-cache.c:1717
-msgid "bad index file sha1 signature"
-msgstr "壞的索引檔案 sha1 簽名"
+#: pack-revindex.c:237
+#, c-format
+msgid "reverse-index file %s has unsupported version %<PRIu32>"
+msgstr "倒排索引檔案 %s 有不支援的版本 %<PRIu32>"
 
-#: read-cache.c:1747
+#: pack-revindex.c:242
 #, c-format
-msgid "index uses %.4s extension, which we do not understand"
-msgstr "索引使用不被支援的 %.4s 擴展"
+msgid "reverse-index file %s has unsupported hash id %<PRIu32>"
+msgstr "倒排索引檔案 %s 有不支援的雜湊 ID %<PRIu32>"
 
-#
-#: read-cache.c:1749
+#: pack-write.c:236
+msgid "cannot both write and verify reverse index"
+msgstr "無法同時寫入和驗證倒排索引"
+
+#: pack-write.c:257
 #, c-format
-msgid "ignoring %.4s extension"
-msgstr "忽略 %.4s 擴展"
+msgid "could not stat: %s"
+msgstr "無法 stat:%s"
 
-#: read-cache.c:1786
+#: pack-write.c:269
 #, c-format
-msgid "unknown index entry format 0x%08x"
-msgstr "未知的索引條目格式 0x%08x"
+msgid "failed to make %s readable"
+msgstr "無法讓 %s 能夠寫入"
 
-#: read-cache.c:1802
+#: pack-write.c:508
 #, c-format
-msgid "malformed name field in the index, near path '%s'"
-msgstr "ç´¢å¼\95中é\9d è¿\91è·¯å¾\91 '%s' æ\9c\89é\8c¯èª¤ç\9a\84å\90\8d稱æ¬\84ä½\8d"
+msgid "could not write '%s' promisor file"
+msgstr "ç\84¡æ³\95寫å\85¥ã\80\8c%sã\80\8dpromisor æª\94æ¡\88"
 
-#: read-cache.c:1859
-msgid "unordered stage entries in index"
-msgstr "索引中有未排序的暫存條目"
+#: packfile.c:625
+msgid "offset before end of packfile (broken .idx?)"
+msgstr "位移量在 packfile 結束之前(損壞的 .idx?)"
 
-#: read-cache.c:1862
+#: packfile.c:1934
 #, c-format
-msgid "multiple stage entries for merged file '%s'"
-msgstr "合併檔案 '%s' 有多個暫存條目"
+msgid "offset before start of pack index for %s (corrupt index?)"
+msgstr "位移量在 %s 的包索引開始之前(損壞的索引?)"
 
-#: read-cache.c:1865
+#: packfile.c:1938
 #, c-format
-msgid "unordered stage entries for '%s'"
-msgstr "'%s' 的未排序暫存條目"
+msgid "offset beyond end of pack index for %s (truncated index?)"
+msgstr "位移量越過了 %s 的包索引的結尾(被截斷的索引?)"
 
-#: read-cache.c:1971 read-cache.c:2262 rerere.c:565 rerere.c:599 rerere.c:1111
-#: submodule.c:1628 builtin/add.c:538 builtin/check-ignore.c:181
-#: builtin/checkout.c:502 builtin/checkout.c:688 builtin/clean.c:991
-#: builtin/commit.c:364 builtin/diff-tree.c:122 builtin/grep.c:507
-#: builtin/mv.c:146 builtin/reset.c:247 builtin/rm.c:290
-#: builtin/submodule--helper.c:332
-msgid "index file corrupt"
-msgstr "索引檔案損壞"
+#: parse-options-cb.c:20 parse-options-cb.c:24
+#, c-format
+msgid "option `%s' expects a numerical value"
+msgstr "選項 `%s' 期望一個數字值"
 
-#: read-cache.c:2115
+#: parse-options-cb.c:41
 #, c-format
-msgid "unable to create load_cache_entries thread: %s"
-msgstr "無法建立 load_cache_entries 執行緒:%s"
+msgid "malformed expiration date '%s'"
+msgstr "格式錯誤的到期時間:'%s'"
 
-#: read-cache.c:2128
+#: parse-options-cb.c:54
 #, c-format
-msgid "unable to join load_cache_entries thread: %s"
-msgstr "無法加入 load_cache_entries 執行緒:%s"
+msgid "option `%s' expects \"always\", \"auto\", or \"never\""
+msgstr "選項 `%s' 期望 \"always\"、\"auto\" 或 \"never\""
 
-#: read-cache.c:2161
+#: parse-options-cb.c:132 parse-options-cb.c:149
 #, c-format
-msgid "%s: index file open failed"
-msgstr "%s:開啟索引檔案失敗"
+msgid "malformed object name '%s'"
+msgstr "格式錯誤的物件名 '%s'"
 
-#: read-cache.c:2165
+#: parse-options.c:38
 #, c-format
-msgid "%s: cannot stat the open index"
-msgstr "%s:不能對開啟的索引執行 stat 動作"
+msgid "%s requires a value"
+msgstr "%s 需要一個值"
 
-#: read-cache.c:2169
+#: parse-options.c:73
 #, c-format
-msgid "%s: index file smaller than expected"
-msgstr "%s:索引檔案比預期的小"
+msgid "%s is incompatible with %s"
+msgstr "%s 與 %s 不相容"
 
-#: read-cache.c:2173
+#: parse-options.c:78
 #, c-format
-msgid "%s: unable to map index file"
-msgstr "%s:無法對索引檔案執行 map 動作"
+msgid "%s : incompatible with something else"
+msgstr "%s:和其它的不相容"
 
-#: read-cache.c:2215
+#: parse-options.c:92 parse-options.c:96 parse-options.c:317
 #, c-format
-msgid "unable to create load_index_extensions thread: %s"
-msgstr "無法建立 load_index_extensions 執行緒:%s"
+msgid "%s takes no value"
+msgstr "%s 不取值"
 
-#: read-cache.c:2242
+#: parse-options.c:94
 #, c-format
-msgid "unable to join load_index_extensions thread: %s"
-msgstr "無法加入 load_index_extensions 執行緒:%s"
+msgid "%s isn't available"
+msgstr "%s 不可用"
 
-#: read-cache.c:2274
+#: parse-options.c:217
 #, c-format
-msgid "could not freshen shared index '%s'"
-msgstr "無法重新整理共享索引 '%s'"
+msgid "%s expects a non-negative integer value with an optional k/m/g suffix"
+msgstr "%s 期望一個非負整數和一個可選的 k/m/g 後綴"
 
-#: read-cache.c:2321
+#: parse-options.c:386
 #, c-format
-msgid "broken index, expect %s in %s, got %s"
-msgstr "æ\90\8då£\9eç\9a\84ç´¢å¼\95ï¼\8cæ\9c\9fæ\9c\9bå\9c¨ %2$s ä¸­ç\9a\84 %1$sï¼\8cå¾\97å\88° %3$s"
+msgid "ambiguous option: %s (could be --%s%s or --%s%s)"
+msgstr "æ\9c\89歧義ç\9a\84é\81¸é \85ï¼\9a%sï¼\88å\8f¯ä»¥æ\98¯ --%s%s æ\88\96 --%s%sï¼\89"
 
-#: read-cache.c:3017 strbuf.c:1171 wrapper.c:633 builtin/merge.c:1140
+#: parse-options.c:420 parse-options.c:428
 #, c-format
-msgid "could not close '%s'"
-msgstr "ä¸\8dè\83½é\97\9cé\96\89 '%s'"
+msgid "did you mean `--%s` (with two dashes)?"
+msgstr "ä½ ç\9a\84æ\84\8fæ\80\9dæ\98¯ `--%s`ï¼\88æ\9c\89å\85©å\80\8bç\9f­ç·\9aï¼\89å\97\8eï¼\9f"
 
-#: read-cache.c:3120 sequencer.c:2479 sequencer.c:4231
+#: parse-options.c:666 parse-options.c:971
 #, c-format
-msgid "could not stat '%s'"
-msgstr "不能對 '%s' 呼叫 stat"
+msgid "alias of --%s"
+msgstr "--%s 的別名"
 
-#: read-cache.c:3133
+#: parse-options.c:862
 #, c-format
-msgid "unable to open git dir: %s"
-msgstr "不能開啟 git 目錄:%s"
+msgid "unknown option `%s'"
+msgstr "未知選項 `%s'"
 
-#: read-cache.c:3145
+#: parse-options.c:864
 #, c-format
-msgid "unable to unlink: %s"
-msgstr "無法刪除:%s"
+msgid "unknown switch `%c'"
+msgstr "未知開關 `%c'"
 
-#: read-cache.c:3170
+#: parse-options.c:866
 #, c-format
-msgid "cannot fix permission bits on '%s'"
-msgstr "不能修復 '%s' 的權限位"
+msgid "unknown non-ascii option in string: `%s'"
+msgstr "字串中未知的非 ascii 字元選項:`%s'"
+
+#: parse-options.c:890
+msgid "..."
+msgstr "..."
 
-#: read-cache.c:3319
+#: parse-options.c:909
 #, c-format
-msgid "%s: cannot drop to stage #0"
-msgstr "%s:不能落到暫存區 #0"
+msgid "usage: %s"
+msgstr "用法:%s"
 
-#: rebase-interactive.c:11
-msgid ""
-"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 ""
-"您可以用 'git rebase --edit-todo' 修正,然後執行 'git rebase --continue'。\n"
-"或者您可以用 'git rebase --abort' 終止重定基底。\n"
+#. TRANSLATORS: the colon here should align with the
+#. one in "usage: %s" translation.
+#.
+#: parse-options.c:915
+#, c-format
+msgid "   or: %s"
+msgstr "   或:%s"
 
-#: rebase-interactive.c:33
+#  譯者:為保證在輸出中對齊,注意調整句中空格!
+#: parse-options.c:918
 #, c-format
-msgid ""
-"unrecognized setting %s for option rebase.missingCommitsCheck. Ignoring."
-msgstr "選項 rebase.missingCommitsCheck 的值 %s 無法識別。已忽略。"
+msgid "    %s"
+msgstr "    %s"
 
-#: rebase-interactive.c:42
-msgid ""
-"\n"
-"Commands:\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"
-"b, break = stop here (continue rebase later with 'git rebase --continue')\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 <提交> = 使用提交,進入 shell 以便進行提交修補\n"
-"s, squash <提交> = 使用提交,但融合到前一個提交\n"
-"f, fixup <提交> = 類似於 \"squash\",但捨棄提交說明日誌\n"
-"x, exec <指令> = 使用 shell 執行指令(此行剩餘部分)\n"
-"b, break = 在此處停止(使用 'git rebase --continue' 繼續重定基底)\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"
+#: parse-options.c:957
+msgid "-NUM"
+msgstr "-數字"
 
-#: rebase-interactive.c:63
+#: path.c:915
 #, c-format
-msgid "Rebase %s onto %s (%d command)"
-msgid_plural "Rebase %s onto %s (%d commands)"
-msgstr[0] "重定基底 %s 到 %s(%d 個提交)"
+msgid "Could not make %s writable by group"
+msgstr "不能設定 %s 為組可寫"
 
-#: rebase-interactive.c:72 git-rebase--preserve-merges.sh:218
-msgid ""
-"\n"
-"Do not remove any line. Use 'drop' explicitly to remove a commit.\n"
-msgstr ""
-"\n"
-"不要刪除任意一行。使用 'drop' 顯式地刪除一個提交。\n"
+#: pathspec.c:130
+msgid "Escape character '\\' not allowed as last character in attr value"
+msgstr "跳脫字元 '\\' 不能作為屬性值的最後一個字元"
 
-#: rebase-interactive.c:75 git-rebase--preserve-merges.sh:222
-msgid ""
-"\n"
-"If you remove a line here THAT COMMIT WILL BE LOST.\n"
-msgstr ""
-"\n"
-"如果您在這裡刪除一行,對應的提交將會遺失。\n"
+#: pathspec.c:148
+msgid "Only one 'attr:' specification is allowed."
+msgstr "只允許一個 'attr:' 規格。"
 
-#: rebase-interactive.c:81 git-rebase--preserve-merges.sh:861
-msgid ""
-"\n"
-"You are editing the todo file of an ongoing interactive rebase.\n"
-"To continue rebase after editing, run:\n"
-"    git rebase --continue\n"
-"\n"
-msgstr ""
-"\n"
-"您正在修改進行中的互動式重定基底待辦列表。若要在編輯結束後繼續重定基底,\n"
-"請執行:\n"
-"    git rebase --continue\n"
-"\n"
+#: pathspec.c:151
+msgid "attr spec must not be empty"
+msgstr "屬性規格不能為空"
 
-#: rebase-interactive.c:86 git-rebase--preserve-merges.sh:938
+#: pathspec.c:194
+#, c-format
+msgid "invalid attribute name %s"
+msgstr "無效的屬性名 %s"
+
+#: pathspec.c:259
+msgid "global 'glob' and 'noglob' pathspec settings are incompatible"
+msgstr "全域的 'glob' 和 'noglob' 路徑規格設定不相容"
+
+#: pathspec.c:266
 msgid ""
-"\n"
-"However, if you remove everything, the rebase will be aborted.\n"
-"\n"
-msgstr ""
-"\n"
-"然而,如果您刪除全部內容,重定基底動作將會終止。\n"
-"\n"
+"global 'literal' pathspec setting is incompatible with all other global "
+"pathspec settings"
+msgstr "全域的 'literal' 路徑規格設定和其它的全域路徑規格設定不相容"
+
+#: pathspec.c:306
+msgid "invalid parameter for pathspec magic 'prefix'"
+msgstr "路徑規格包含無效的神奇前綴"
 
-#: rebase-interactive.c:110 rerere.c:485 rerere.c:692 sequencer.c:3607
-#: sequencer.c:3633 sequencer.c:5416 builtin/fsck.c:347 builtin/rebase.c:270
+#: pathspec.c:327
 #, c-format
-msgid "could not write '%s'"
-msgstr "不能寫入 '%s'"
+msgid "Invalid pathspec magic '%.*s' in '%s'"
+msgstr "在路徑規格 '%3$s' 中無效的神奇前綴 '%2$.*1$s'"
 
-#: rebase-interactive.c:116 builtin/rebase.c:202 builtin/rebase.c:228
-#: builtin/rebase.c:252
+#: pathspec.c:332
 #, c-format
-msgid "could not write '%s'."
-msgstr "不能寫入 '%s'。"
+msgid "Missing ')' at the end of pathspec magic in '%s'"
+msgstr "路徑規格 '%s' 的神奇前綴結尾少了一個 ')'"
 
-#: rebase-interactive.c:193
+#: pathspec.c:370
 #, c-format
-msgid ""
-"Warning: some commits may have been dropped accidentally.\n"
-"Dropped commits (newer to older):\n"
-msgstr ""
-"警告:一些提交可能被意外捨棄。\n"
-"捨棄的提交(從新到舊):\n"
+msgid "Unimplemented pathspec magic '%c' in '%s'"
+msgstr "路徑規格 '%2$s' 中包含未實現的神奇前綴 '%1$c'"
 
-#: rebase-interactive.c:200
+#: pathspec.c:429
 #, c-format
-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"
-"The possible behaviours are: ignore, warn, error.\n"
-"\n"
-msgstr ""
-"為避免這條訊息,使用 \"drop\" 指令顯式地刪除一個提交。\n"
-"\n"
-"使用 'git config rebase.missingCommitsCheck' 來修改警告級別。\n"
-"可選值有:ignore、warn、error。\n"
-"\n"
+msgid "%s: 'literal' and 'glob' are incompatible"
+msgstr "%s:'literal' 和 'glob' 不相容"
 
-#: rebase-interactive.c:233 rebase-interactive.c:238 sequencer.c:2394
-#: builtin/rebase.c:188 builtin/rebase.c:213 builtin/rebase.c:239
-#: builtin/rebase.c:264
+#: pathspec.c:445
 #, c-format
-msgid "could not read '%s'."
-msgstr "不能讀取 '%s'。"
-
-#: ref-filter.c:42 wt-status.c:1973
-msgid "gone"
-msgstr "遺失"
+msgid "%s: '%s' is outside repository at '%s'"
+msgstr "%s:'%s' 在位於 '%s' 的版本庫之外"
 
-#: ref-filter.c:43
+#: pathspec.c:521
 #, c-format
-msgid "ahead %d"
-msgstr "領先 %d"
+msgid "'%s' (mnemonic: '%c')"
+msgstr "'%s'(助記符:'%c')"
 
-#: ref-filter.c:44
+#: pathspec.c:531
 #, c-format
-msgid "behind %d"
-msgstr "落後 %d"
+msgid "%s: pathspec magic not supported by this command: %s"
+msgstr "%s:路徑規格神奇前綴不被此指令支援:%s"
 
-#: ref-filter.c:45
+#: pathspec.c:598
 #, c-format
-msgid "ahead %d, behind %d"
-msgstr "領先 %d,落後 %d"
+msgid "pathspec '%s' is beyond a symbolic link"
+msgstr "路徑規格 '%s' 位於符號連結中"
 
-#: ref-filter.c:169
+#: pathspec.c:643
 #, c-format
-msgid "expected format: %%(color:<color>)"
-msgstr "æ\9c\9fæ\9c\9bç\9a\84æ ¼å¼\8fï¼\9a%%(color:<é¡\8fè\89²>)"
+msgid "line is badly quoted: %s"
+msgstr "æ\9f\90è¡\8cä¸\8dæ\87\89該被æ\8b¬è\99\9fæ\8b¬ä½\8fï¼\9a%s"
 
-#: ref-filter.c:171
-#, c-format
-msgid "unrecognized color: %%(color:%s)"
-msgstr "無法識別的顏色:%%(color:%s)"
+#: pkt-line.c:92
+msgid "unable to write flush packet"
+msgstr "無法寫 flush 包"
 
-#: ref-filter.c:193
-#, c-format
-msgid "Integer value expected refname:lstrip=%s"
-msgstr "期望整數值 refname:lstrip=%s"
+#: pkt-line.c:99
+msgid "unable to write delim packet"
+msgstr "無法寫 delim 包"
 
-#: ref-filter.c:197
-#, c-format
-msgid "Integer value expected refname:rstrip=%s"
-msgstr "期望整數值 refname:rstrip=%s"
+#: pkt-line.c:106
+msgid "unable to write stateless separator packet"
+msgstr "無法寫入無狀態的分隔符號封包"
 
-#: ref-filter.c:199
-#, c-format
-msgid "unrecognized %%(%s) argument: %s"
-msgstr "無法識別的 %%(%s) 參數:%s"
+#: pkt-line.c:113
+msgid "flush packet write failed"
+msgstr "flush 包寫錯誤"
 
-#: ref-filter.c:254
-#, c-format
-msgid "%%(objecttype) does not take arguments"
-msgstr "%%(objecttype) 不帶參數"
+#: pkt-line.c:153 pkt-line.c:239
+msgid "protocol error: impossibly long line"
+msgstr "協定錯誤:不可能的長行"
 
-#: ref-filter.c:276
-#, c-format
-msgid "unrecognized %%(objectsize) argument: %s"
-msgstr "無法識別的 %%(objectsize) 參數:%s"
+#: pkt-line.c:169 pkt-line.c:171
+msgid "packet write with format failed"
+msgstr "格式化包寫入錯誤"
 
-#: ref-filter.c:284
-#, c-format
-msgid "%%(deltabase) does not take arguments"
-msgstr "%%(deltabase) 不帶參數"
+#: pkt-line.c:203
+msgid "packet write failed - data exceeds max packet size"
+msgstr "寫封包失敗:資料超過了包的最大長度"
 
-#: ref-filter.c:296
-#, c-format
-msgid "%%(body) does not take arguments"
-msgstr "%%(body) 不帶參數"
+#: pkt-line.c:210 pkt-line.c:217
+msgid "packet write failed"
+msgstr "封包寫入失敗"
 
-#: ref-filter.c:309
-#, c-format
-msgid "unrecognized %%(subject) argument: %s"
-msgstr "無法識別的 %%(subject) 引數:%s"
+#: pkt-line.c:302
+msgid "read error"
+msgstr "讀取錯誤"
 
-#: ref-filter.c:330
-#, c-format
-msgid "unknown %%(trailers) argument: %s"
-msgstr "未知的 %%(trailers) 參數:%s"
+#: pkt-line.c:310
+msgid "the remote end hung up unexpectedly"
+msgstr "遠端意外掛斷了"
 
-#: ref-filter.c:363
+#: pkt-line.c:338
 #, c-format
-msgid "positive value expected contents:lines=%s"
-msgstr "期望一個正數 contents:lines=%s"
+msgid "protocol error: bad line length character: %.4s"
+msgstr "協定錯誤:錯誤的行長度字串:%.4s"
 
-#: ref-filter.c:365
+#: pkt-line.c:352 pkt-line.c:357
 #, c-format
-msgid "unrecognized %%(contents) argument: %s"
-msgstr "無法識別的 %%(contents) 參數:%s"
+msgid "protocol error: bad line length %d"
+msgstr "協定錯誤:錯誤的行長度 %d"
 
-#: ref-filter.c:380
+#: pkt-line.c:373 sideband.c:165
 #, c-format
-msgid "positive value expected '%s' in %%(%s)"
-msgstr "%%(%2$s) 中的 '%1$s' 預期是正數值"
+msgid "remote error: %s"
+msgstr "遠端錯誤:%s"
 
-#: ref-filter.c:384
-#, c-format
-msgid "unrecognized argument '%s' in %%(%s)"
-msgstr "無法識別 %%(%2$s) 中的 '%1$s' 參數"
+#: preload-index.c:125
+msgid "Refreshing index"
+msgstr "正在重新整理索引"
 
-#: ref-filter.c:398
+#: preload-index.c:144
 #, c-format
-msgid "unrecognized email option: %s"
-msgstr "無法識別的 email 選項:%s"
+msgid "unable to create threaded lstat: %s"
+msgstr "無法建立執行緒 lstat:%s"
 
-#: ref-filter.c:428
-#, c-format
-msgid "expected format: %%(align:<width>,<position>)"
-msgstr "期望的格式:%%(align:<寬度>,<位置>)"
+#: pretty.c:984
+msgid "unable to parse --pretty format"
+msgstr "不能解析 --pretty 格式"
 
-#: ref-filter.c:440
-#, c-format
-msgid "unrecognized position:%s"
-msgstr "無法識別的位置:%s"
+#: promisor-remote.c:30
+msgid "promisor-remote: unable to fork off fetch subprocess"
+msgstr "promisor-remote: 無法 fork fetch 子處理程序"
 
-#: ref-filter.c:447
-#, c-format
-msgid "unrecognized width:%s"
-msgstr "無法識別的寬度:%s"
+#: promisor-remote.c:35 promisor-remote.c:37
+msgid "promisor-remote: could not write to fetch subprocess"
+msgstr "promisor-remote: 無法寫入 fetch 子處理程序"
 
-#: ref-filter.c:456
-#, c-format
-msgid "unrecognized %%(align) argument: %s"
-msgstr "無法識別的 %%(align) 參數:%s"
+#: promisor-remote.c:41
+msgid "promisor-remote: could not close stdin to fetch subprocess"
+msgstr "promisor-remote: 無法關閉 fetch 子處理程序的 stdin"
 
-#: ref-filter.c:464
+#: promisor-remote.c:53
 #, c-format
-msgid "positive width expected with the %%(align) atom"
-msgstr "元素 %%(align) 需要一個正數的寬度"
+msgid "promisor remote name cannot begin with '/': %s"
+msgstr "promisor 遠端名稱不能以 '/' 開始:%s"
 
-#: ref-filter.c:482
-#, c-format
-msgid "unrecognized %%(if) argument: %s"
-msgstr "無法識別的 %%(if) 參數:%s"
+#: prune-packed.c:35
+msgid "Removing duplicate objects"
+msgstr "正在刪除重複物件"
 
-#: ref-filter.c:584
-#, c-format
-msgid "malformed field name: %.*s"
-msgstr "格式錯誤的欄位名:%.*s"
+#: range-diff.c:78
+msgid "could not start `log`"
+msgstr "不能啟動 `log`"
+
+#: range-diff.c:80
+msgid "could not read `log` output"
+msgstr "不能讀取 `log` 的輸出"
 
-#: ref-filter.c:611
+#: range-diff.c:101 sequencer.c:5318
 #, c-format
-msgid "unknown field name: %.*s"
-msgstr "未知的欄位名:%.*s"
+msgid "could not parse commit '%s'"
+msgstr "不能解析提交 '%s'"
 
-#: ref-filter.c:615
+#: range-diff.c:115
 #, c-format
 msgid ""
-"not a git repository, but the field '%.*s' requires access to object data"
-msgstr "不是一個 git 版本庫,但是欄位 '%.*s' 需要存取物件資料"
+"could not parse first line of `log` output: did not start with 'commit ': "
+"'%s'"
+msgstr "無法解析第一行「log」輸出:開頭不是「commit」:「%s」"
 
-#: ref-filter.c:739
+#: range-diff.c:140
 #, c-format
-msgid "format: %%(if) atom used without a %%(then) atom"
-msgstr "格式:使用了 %%(if) 元素而沒有 %%(then) 元素"
+msgid "could not parse git header '%.*s'"
+msgstr "無法解析 git 頭 '%.*s'"
 
-#: ref-filter.c:802
-#, c-format
-msgid "format: %%(then) atom used without an %%(if) atom"
-msgstr "格式:使用了 %%(then) 元素而沒有 %%(if) 元素"
+#: range-diff.c:306
+msgid "failed to generate diff"
+msgstr "生成 diff 失敗"
 
-#: ref-filter.c:804
-#, c-format
-msgid "format: %%(then) atom used more than once"
-msgstr "格式:%%(then) 元素用了多次"
+#: range-diff.c:558
+msgid "--left-only and --right-only are mutually exclusive"
+msgstr "--left-only 和 --right-only 互斥"
 
-#: ref-filter.c:806
+#: range-diff.c:561 range-diff.c:563
 #, c-format
-msgid "format: %%(then) atom used after %%(else)"
-msgstr "æ ¼å¼\8fï¼\9a%%(then) å\85\83ç´ ç\94¨å\9c¨äº\86 %%(else) ä¹\8bå¾\8c"
+msgid "could not parse log for '%s'"
+msgstr "ä¸\8dè\83½è§£æ\9e\90 '%s' ç\9a\84æ\97¥èª\8c"
 
-#: ref-filter.c:834
+#: read-cache.c:682
 #, c-format
-msgid "format: %%(else) atom used without an %%(if) atom"
-msgstr "格式:使用了 %%(else) 元素而沒有 %%(if) 元素"
+msgid "will not add file alias '%s' ('%s' already exists in index)"
+msgstr "將不會新增檔案別名 '%s'('%s' 已經存在於索引中)"
 
-#: ref-filter.c:836
-#, c-format
-msgid "format: %%(else) atom used without a %%(then) atom"
-msgstr "格式:使用了 %%(else) 元素而沒有 %%(then) 元素"
+#: read-cache.c:698
+msgid "cannot create an empty blob in the object database"
+msgstr "不能在物件資料庫中建立空的資料物件"
 
-#: ref-filter.c:838
+#: read-cache.c:720
 #, c-format
-msgid "format: %%(else) atom used more than once"
-msgstr "格式:%%(else) 元素用了多次"
+msgid "%s: can only add regular files, symbolic links or git-directories"
+msgstr "%s:只能新增一般檔案、符號連結或 git 目錄"
 
-#: ref-filter.c:853
+#: read-cache.c:725
 #, c-format
-msgid "format: %%(end) atom used without corresponding atom"
-msgstr "格式:使用了 %%(end) 元素卻沒有它的對應元素"
+msgid "'%s' does not have a commit checked out"
+msgstr "'%s' 沒有檢出一個提交"
 
-#: ref-filter.c:910
+#: read-cache.c:777
 #, c-format
-msgid "malformed format string %s"
-msgstr "錯誤的格式化字串 %s"
+msgid "unable to index file '%s'"
+msgstr "無法索引檔案 '%s'"
 
-#: ref-filter.c:1549
+#: read-cache.c:796
 #, c-format
-msgid "no branch, rebasing %s"
-msgstr "非分支,正重定基底 %s"
+msgid "unable to add '%s' to index"
+msgstr "無法在索引中新增 '%s'"
 
-#: ref-filter.c:1552
+#: read-cache.c:807
 #, c-format
-msgid "no branch, rebasing detached HEAD %s"
-msgstr "非分支,正重定基底分離開頭指標 %s"
+msgid "unable to stat '%s'"
+msgstr "無法對 %s 執行 stat"
 
-#: ref-filter.c:1555
+#: read-cache.c:1318
 #, c-format
-msgid "no branch, bisect started on %s"
-msgstr "非分支,二分尋找開始於 %s"
-
-#: ref-filter.c:1565
-msgid "no branch"
-msgstr "非分支"
+msgid "'%s' appears as both a file and as a directory"
+msgstr "'%s' 看起來既是檔案又是目錄"
 
-#: ref-filter.c:1599 ref-filter.c:1808
-#, c-format
-msgid "missing object %s for %s"
-msgstr "缺少 %2$s 的物件 %1$s"
+#: read-cache.c:1532
+msgid "Refresh index"
+msgstr "重新整理索引"
 
-#: ref-filter.c:1609
+#: read-cache.c:1657
 #, c-format
-msgid "parse_object_buffer failed on %s for %s"
-msgstr "parse_object_buffer 失敗於 %2$s 的 %1$s"
+msgid ""
+"index.version set, but the value is invalid.\n"
+"Using version %i"
+msgstr ""
+"設定了 index.version,但是取值無效。\n"
+"使用版本 %i"
 
-#: ref-filter.c:2062
+#: read-cache.c:1667
 #, c-format
-msgid "malformed object at '%s'"
-msgstr "格式錯誤的物件 '%s'"
-
-#: ref-filter.c:2151
-#, c-format
-msgid "ignoring ref with broken name %s"
-msgstr "忽略帶有錯誤名稱 %s 的引用"
+msgid ""
+"GIT_INDEX_VERSION set, but the value is invalid.\n"
+"Using version %i"
+msgstr ""
+"設定了 GIT_INDEX_VERSION,但是取值無效。\n"
+"使用版本 %i"
 
-#: ref-filter.c:2156 refs.c:676
+#: read-cache.c:1723
 #, c-format
-msgid "ignoring broken ref %s"
-msgstr "忽ç\95¥æ\90\8då£\9eç\9a\84å¼\95ç\94¨ %s"
+msgid "bad signature 0x%08x"
+msgstr "å£\9eç\9a\84ç°½å\90\8d 0x%08x"
 
-#: ref-filter.c:2472
+#: read-cache.c:1726
 #, c-format
-msgid "format: %%(end) atom missing"
-msgstr "格式:缺少 %%(end) 元素"
+msgid "bad index version %d"
+msgstr "壞的索引版本 %d"
 
-#: ref-filter.c:2571
-#, c-format
-msgid "malformed object name %s"
-msgstr "格式錯誤的物件名 %s"
+#: read-cache.c:1735
+msgid "bad index file sha1 signature"
+msgstr "壞的索引檔案 sha1 簽名"
 
-#: ref-filter.c:2576
+#: read-cache.c:1765
 #, c-format
-msgid "option `%s' must point to a commit"
-msgstr "選項 `%s' 必須指向一個提交"
+msgid "index uses %.4s extension, which we do not understand"
+msgstr "索引使用不被支援的 %.4s 擴展"
 
-#: refs.c:264
+#
+#: read-cache.c:1767
 #, c-format
-msgid "%s does not point to a valid object!"
-msgstr "%s 沒有指向一個有效的物件!"
+msgid "ignoring %.4s extension"
+msgstr "忽略 %.4s 擴展"
 
-#: refs.c:566
+#: read-cache.c:1804
 #, c-format
-msgid ""
-"Using '%s' as the name for the initial branch. This default branch name\n"
-"is subject to change. To configure the initial branch name to use in all\n"
-"of your new repositories, which will suppress this warning, call:\n"
-"\n"
-"\tgit config --global init.defaultBranch <name>\n"
-"\n"
-"Names commonly chosen instead of 'master' are 'main', 'trunk' and\n"
-"'development'. The just-created branch can be renamed via this command:\n"
-"\n"
-"\tgit branch -m <name>\n"
-msgstr ""
-"將「%s」設定為初始分支的名稱。這個預設分支名稱可以變更。\n"
-"如果要設定所有新版本庫要使用的初始分支名稱,\n"
-"請呼叫(會隱藏這個警告):\n"
-"\n"
-"\tgit config —global init.defaultBranch <name>\n"
-"\n"
-"除了 ‘master’ 外,常用的分支名稱有 ‘main’, ‘trunk’ 以及\n"
-"‘development’。剛建立的分支可以用這個命令重新命名:\n"
-"\n"
-"\tgit branch -m <name>\n"
+msgid "unknown index entry format 0x%08x"
+msgstr "未知的索引條目格式 0x%08x"
 
-#: refs.c:588
+#: read-cache.c:1820
 #, c-format
-msgid "could not retrieve `%s`"
-msgstr "ç\84¡æ³\95æ\93·å\8f\96ã\80\8c%sã\80\8d"
+msgid "malformed name field in the index, near path '%s'"
+msgstr "ç´¢å¼\95中é\9d è¿\91è·¯å¾\91 '%s' æ\9c\89é\8c¯èª¤ç\9a\84å\90\8d稱æ¬\84ä½\8d"
 
-#: refs.c:598
-#, c-format
-msgid "invalid branch name: %s = %s"
-msgstr "分支名稱無效:%s = %s"
+#: read-cache.c:1877
+msgid "unordered stage entries in index"
+msgstr "索引中有未排序的暫存條目"
 
-#: refs.c:674
+#: read-cache.c:1880
 #, c-format
-msgid "ignoring dangling symref %s"
-msgstr "忽ç\95¥æ\87¸ç©ºç¬¦è\99\9få¼\95ç\94¨ %s"
+msgid "multiple stage entries for merged file '%s'"
+msgstr "å\90\88ä½µæª\94æ¡\88 '%s' æ\9c\89å¤\9aå\80\8bæ\9a«å­\98æ¢\9dç\9b®"
 
-#: refs.c:911
+#: read-cache.c:1883
 #, c-format
-msgid "log for ref %s has gap after %s"
-msgstr "引用 %s 的日誌在 %s 之後有缺口"
+msgid "unordered stage entries for '%s'"
+msgstr "'%s' 的未排序暫存條目"
 
-#: refs.c:917
-#, c-format
-msgid "log for ref %s unexpectedly ended on %s"
-msgstr "引用 %s 的日誌意外終止於 %s"
+#: read-cache.c:1989 read-cache.c:2280 rerere.c:549 rerere.c:583 rerere.c:1095
+#: submodule.c:1634 builtin/add.c:546 builtin/check-ignore.c:181
+#: builtin/checkout.c:504 builtin/checkout.c:690 builtin/clean.c:991
+#: builtin/commit.c:364 builtin/diff-tree.c:122 builtin/grep.c:505
+#: builtin/mv.c:146 builtin/reset.c:247 builtin/rm.c:290
+#: builtin/submodule--helper.c:332
+msgid "index file corrupt"
+msgstr "索引檔案損壞"
 
-#: refs.c:976
+#: read-cache.c:2133
 #, c-format
-msgid "log for %s is empty"
-msgstr "%s 的日誌為空"
+msgid "unable to create load_cache_entries thread: %s"
+msgstr "無法建立 load_cache_entries 執行緒:%s"
 
-#: refs.c:1068
+#: read-cache.c:2146
 #, c-format
-msgid "refusing to update ref with bad name '%s'"
-msgstr "拒絕更新有錯誤名稱 '%s' 的引用"
+msgid "unable to join load_cache_entries thread: %s"
+msgstr "無法加入 load_cache_entries 執行緒:%s"
 
-#: refs.c:1139
+#: read-cache.c:2179
 #, c-format
-msgid "update_ref failed for ref '%s': %s"
-msgstr "對引用 '%s' 執行 update_ref 失敗:%s"
+msgid "%s: index file open failed"
+msgstr "%s:開啟索引檔案失敗"
 
-#: refs.c:1963
+#: read-cache.c:2183
 #, c-format
-msgid "multiple updates for ref '%s' not allowed"
-msgstr "不允許對引用 '%s' 多次更新"
-
-#: refs.c:2043
-msgid "ref updates forbidden inside quarantine environment"
-msgstr "在隔離環境中禁止更新引用"
-
-#: refs.c:2054
-msgid "ref updates aborted by hook"
-msgstr "引用更新被掛鉤拒絕"
+msgid "%s: cannot stat the open index"
+msgstr "%s:不能對開啟的索引執行 stat 動作"
 
-#: refs.c:2154 refs.c:2184
+#: read-cache.c:2187
 #, c-format
-msgid "'%s' exists; cannot create '%s'"
-msgstr "'%s' 已存在,無法建立 '%s'"
+msgid "%s: index file smaller than expected"
+msgstr "%s:索引檔案比預期的小"
 
-#: refs.c:2160 refs.c:2195
+#: read-cache.c:2191
 #, c-format
-msgid "cannot process '%s' and '%s' at the same time"
-msgstr "無法同時處理 '%s' 和 '%s'"
+msgid "%s: unable to map index file"
+msgstr "%s:無法對索引檔案執行 map 動作"
 
-#: refs/files-backend.c:1228
+#: read-cache.c:2233
 #, c-format
-msgid "could not remove reference %s"
-msgstr "ç\84¡æ³\95å\88ªé\99¤å¼\95ç\94¨ %s"
+msgid "unable to create load_index_extensions thread: %s"
+msgstr "ç\84¡æ³\95建ç«\8b load_index_extensions å\9f·è¡\8cç·\92ï¼\9a%s"
 
-#: refs/files-backend.c:1242 refs/packed-backend.c:1542
-#: refs/packed-backend.c:1552
+#: read-cache.c:2260
 #, c-format
-msgid "could not delete reference %s: %s"
-msgstr "ç\84¡æ³\95å\88ªé\99¤å¼\95ç\94¨ %s:%s"
+msgid "unable to join load_index_extensions thread: %s"
+msgstr "ç\84¡æ³\95å\8a å\85¥ load_index_extensions å\9f·è¡\8cç·\92:%s"
 
-#: refs/files-backend.c:1245 refs/packed-backend.c:1555
+#: read-cache.c:2292
 #, c-format
-msgid "could not delete references: %s"
-msgstr "無法刪除引用:%s"
+msgid "could not freshen shared index '%s'"
+msgstr "無法重新整理共享索引 '%s'"
 
-#: refspec.c:170
+#: read-cache.c:2339
 #, c-format
-msgid "invalid refspec '%s'"
-msgstr "無效的引用表達式:'%s'"
+msgid "broken index, expect %s in %s, got %s"
+msgstr "損壞的索引,期望在 %2$s 中的 %1$s,得到 %3$s"
 
-#: remote.c:351
+#: read-cache.c:3035 strbuf.c:1171 wrapper.c:633 builtin/merge.c:1141
 #, c-format
-msgid "config remote shorthand cannot begin with '/': %s"
-msgstr "設定的遠端短名稱不能以 '/' 開始:%s"
-
-#: remote.c:399
-msgid "more than one receivepack given, using the first"
-msgstr "提供了一個以上的 receivepack,使用第一個"
-
-#: remote.c:407
-msgid "more than one uploadpack given, using the first"
-msgstr "提供了一個以上的 uploadpack,使用第一個"
+msgid "could not close '%s'"
+msgstr "不能關閉 '%s'"
 
-#: remote.c:590
+#: read-cache.c:3138 sequencer.c:2487 sequencer.c:4239
 #, c-format
-msgid "Cannot fetch both %s and %s to %s"
-msgstr "ä¸\8dè\83½å\90\8cæ\99\82å\8f\96å¾\97 %s å\92\8c %s è\87³ %s"
+msgid "could not stat '%s'"
+msgstr "ä¸\8dè\83½å°\8d '%s' å\91¼å\8f« stat"
 
-#: remote.c:594
+#: read-cache.c:3151
 #, c-format
-msgid "%s usually tracks %s, not %s"
-msgstr "%s 通常追蹤 %s,而非 %s"
+msgid "unable to open git dir: %s"
+msgstr "不能開啟 git 目錄:%s"
 
-#: remote.c:598
+#: read-cache.c:3163
 #, c-format
-msgid "%s tracks both %s and %s"
-msgstr "%s 同時追蹤 %s 和 %s"
+msgid "unable to unlink: %s"
+msgstr "無法刪除:%s"
 
-#: remote.c:666
+#: read-cache.c:3188
 #, c-format
-msgid "key '%s' of pattern had no '*'"
-msgstr "模式的鍵 '%s' 沒有 '*'"
+msgid "cannot fix permission bits on '%s'"
+msgstr "不能修復 '%s' 的權限位"
 
-#: remote.c:676
+#: read-cache.c:3337
 #, c-format
-msgid "value '%s' of pattern has no '*'"
-msgstr "模式的值 '%s' 沒有 '*'"
+msgid "%s: cannot drop to stage #0"
+msgstr "%s:不能落到暫存區 #0"
 
-#: remote.c:1073
-#, c-format
-msgid "src refspec %s does not match any"
-msgstr "源引用表達式 %s 沒有符合"
+#: rebase-interactive.c:11
+msgid ""
+"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 ""
+"您可以用 'git rebase --edit-todo' 修正,然後執行 'git rebase --continue'。\n"
+"或者您可以用 'git rebase --abort' 終止重定基底。\n"
 
-#: remote.c:1078
+#: rebase-interactive.c:33
 #, c-format
-msgid "src refspec %s matches more than one"
-msgstr "源引用表達式 %s 符合超過一個"
+msgid ""
+"unrecognized setting %s for option rebase.missingCommitsCheck. Ignoring."
+msgstr "選項 rebase.missingCommitsCheck 的值 %s 無法識別。已忽略。"
 
-#. TRANSLATORS: "matches '%s'%" is the <dst> part of "git push
-#. <remote> <src>:<dst>" push, and "being pushed ('%s')" is
-#. the <src>.
-#.
-#: remote.c:1093
-#, c-format
+#: rebase-interactive.c:42
 msgid ""
-"The destination you provided is not a full refname (i.e.,\n"
-"starting with \"refs/\"). We tried to guess what you meant by:\n"
 "\n"
-"- Looking for a ref that matches '%s' on the remote side.\n"
-"- Checking if the <src> being pushed ('%s')\n"
-"  is a ref in \"refs/{heads,tags}/\". If so we add a corresponding\n"
-"  refs/{heads,tags}/ prefix on the remote side.\n"
+"Commands:\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"
+"b, break = stop here (continue rebase later with 'git rebase --continue')\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"
-"Neither worked, so we gave up. You must fully qualify the ref."
+"These lines can be re-ordered; they are executed from top to bottom.\n"
 msgstr ""
-"您提供的目標不是一個完整的引用名稱(即以 \"refs/\" 開頭)。我們\n"
-"試著猜測您的想法:\n"
 "\n"
-"- 在遠端查詢和 '%s' 符合的引用。\n"
-"- 檢查要推送的 <src>('%s')是不是在 \"refs/{heads,tags}/\" 中的\n"
-"  引用。如果是,我們會在對應的遠端新增 refs/{heads,tags}/ 前綴。\n"
+"指令:\n"
+"p, pick <提交> = 使用提交\n"
+"r, reword <提交> = 使用提交,但修改提交說明\n"
+"e, edit <提交> = 使用提交,進入 shell 以便進行提交修補\n"
+"s, squash <提交> = 使用提交,但融合到前一個提交\n"
+"f, fixup <提交> = 類似於 \"squash\",但捨棄提交說明日誌\n"
+"x, exec <命令> = 使用 shell 執行指令(此行剩餘部分)\n"
+"b, break = 在此處停止(使用 'git rebase --continue' 繼續重定基底)\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"
 
-#: remote.c:1113
+#: rebase-interactive.c:63
 #, c-format
+msgid "Rebase %s onto %s (%d command)"
+msgid_plural "Rebase %s onto %s (%d commands)"
+msgstr[0] "重定基底 %s 到 %s(%d 個提交)"
+
+#: rebase-interactive.c:72 git-rebase--preserve-merges.sh:218
 msgid ""
-"The <src> part of the refspec is a commit object.\n"
-"Did you mean to create a new branch by pushing to\n"
-"'%s:refs/heads/%s'?"
+"\n"
+"Do not remove any line. Use 'drop' explicitly to remove a commit.\n"
 msgstr ""
-"引用表達式的 <src> 是一個提交物件。您是想建立一個新的分支而向\n"
-"'%s:refs/heads/%s' 推送嗎?"
+"\n"
+"不要刪除任意一行。使用 'drop' 顯式地刪除一個提交。\n"
 
-#: remote.c:1118
-#, c-format
+#: rebase-interactive.c:75 git-rebase--preserve-merges.sh:222
 msgid ""
-"The <src> part of the refspec is a tag object.\n"
-"Did you mean to create a new tag by pushing to\n"
-"'%s:refs/tags/%s'?"
+"\n"
+"If you remove a line here THAT COMMIT WILL BE LOST.\n"
 msgstr ""
-"引用表達式的 <src> 是一個標籤物件。您是想建立一個新的標籤而向\n"
-"'%s:refs/tags/%s' 推送嗎?"
+"\n"
+"如果您在這裡刪除一行,對應的提交將會遺失。\n"
 
-#: remote.c:1123
-#, c-format
+#: rebase-interactive.c:81 git-rebase--preserve-merges.sh:861
 msgid ""
-"The <src> part of the refspec is a tree object.\n"
-"Did you mean to tag a new tree by pushing to\n"
-"'%s:refs/tags/%s'?"
+"\n"
+"You are editing the todo file of an ongoing interactive rebase.\n"
+"To continue rebase after editing, run:\n"
+"    git rebase --continue\n"
+"\n"
 msgstr ""
-"引用表達式的 <src> 是一個樹狀物件。您是想為這個樹狀物件建立標籤而向\n"
-"'%s:refs/tags/%s' 推送嗎?"
+"\n"
+"您正在修改進行中的互動式重定基底待辦列表。若要在編輯結束後繼續重定基底,\n"
+"請執行:\n"
+"    git rebase --continue\n"
+"\n"
 
-#: remote.c:1128
-#, c-format
+#: rebase-interactive.c:86 git-rebase--preserve-merges.sh:938
 msgid ""
-"The <src> part of the refspec is a blob object.\n"
-"Did you mean to tag a new blob by pushing to\n"
-"'%s:refs/tags/%s'?"
+"\n"
+"However, if you remove everything, the rebase will be aborted.\n"
+"\n"
 msgstr ""
-"引用表達式的 <src> 是一個資料物件。您是想為這個資料物件建立標籤而向\n"
-"'%s:refs/tags/%s' 推送嗎?"
+"\n"
+"然而,如果您刪除全部內容,重定基底動作將會終止。\n"
+"\n"
 
-#: remote.c:1164
+#: rebase-interactive.c:110 rerere.c:469 rerere.c:676 sequencer.c:3615
+#: sequencer.c:3641 sequencer.c:5424 builtin/fsck.c:329 builtin/rebase.c:272
 #, c-format
-msgid "%s cannot be resolved to branch"
-msgstr "%s 無法被解析為分支"
+msgid "could not write '%s'"
+msgstr "不能寫入 '%s'"
 
-#: remote.c:1175
+#: rebase-interactive.c:116 builtin/rebase.c:204 builtin/rebase.c:230
+#: builtin/rebase.c:254
 #, c-format
-msgid "unable to delete '%s': remote ref does not exist"
-msgstr "無法刪除 '%s':遠端引用不存在"
+msgid "could not write '%s'."
+msgstr "不能寫入 '%s'。"
 
-#: remote.c:1187
+#: rebase-interactive.c:193
 #, c-format
-msgid "dst refspec %s matches more than one"
-msgstr "目標引用表達式 %s 符合超過一個"
+msgid ""
+"Warning: some commits may have been dropped accidentally.\n"
+"Dropped commits (newer to older):\n"
+msgstr ""
+"警告:一些提交可能被意外捨棄。\n"
+"捨棄的提交(從新到舊):\n"
 
-#: remote.c:1194
+#: rebase-interactive.c:200
 #, c-format
-msgid "dst ref %s receives from more than one src"
-msgstr "目標引用 %s 接收超過一個源"
-
-#: remote.c:1714 remote.c:1815
-msgid "HEAD does not point to a branch"
-msgstr "HEAD 沒有指向一個分支"
+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"
+"The possible behaviours are: ignore, warn, error.\n"
+"\n"
+msgstr ""
+"為避免這條訊息,使用 \"drop\" 指令顯式地刪除一個提交。\n"
+"\n"
+"使用 'git config rebase.missingCommitsCheck' 來修改警告級別。\n"
+"可選值有:ignore、warn、error。\n"
+"\n"
 
-#: remote.c:1723
+#: rebase-interactive.c:233 rebase-interactive.c:238 sequencer.c:2402
+#: builtin/rebase.c:190 builtin/rebase.c:215 builtin/rebase.c:241
+#: builtin/rebase.c:266
 #, c-format
-msgid "no such branch: '%s'"
-msgstr "沒有此分支:'%s'"
+msgid "could not read '%s'."
+msgstr "不能讀取 '%s'。"
 
-#: remote.c:1726
-#, c-format
-msgid "no upstream configured for branch '%s'"
-msgstr "尚未給分支 '%s' 設定上游"
+#: ref-filter.c:42 wt-status.c:1975
+msgid "gone"
+msgstr "遺失"
 
-#: remote.c:1732
+#: ref-filter.c:43
 #, c-format
-msgid "upstream branch '%s' not stored as a remote-tracking branch"
-msgstr "上游分支 '%s' 沒有儲存為一個遠端追蹤分支"
+msgid "ahead %d"
+msgstr "領先 %d"
 
-#: remote.c:1747
+#: ref-filter.c:44
 #, c-format
-msgid "push destination '%s' on remote '%s' has no local tracking branch"
-msgstr "推送目標 '%s' 至遠端 '%s' 沒有本機追蹤分支"
+msgid "behind %d"
+msgstr "落後 %d"
 
-#: remote.c:1759
+#: ref-filter.c:45
 #, c-format
-msgid "branch '%s' has no remote for pushing"
-msgstr "分支 '%s' 沒有設定要推送的遠端伺服器"
+msgid "ahead %d, behind %d"
+msgstr "領先 %d,落後 %d"
 
-#: remote.c:1769
+#: ref-filter.c:175
 #, c-format
-msgid "push refspecs for '%s' do not include '%s'"
-msgstr "向 '%s' 推送引用規格未包含 '%s'"
-
-#: remote.c:1782
-msgid "push has no destination (push.default is 'nothing')"
-msgstr "推送無目標(push.default 是 'nothing')"
-
-#: remote.c:1804
-msgid "cannot resolve 'simple' push to a single destination"
-msgstr "無法解析 'simple' 推送至一個單獨的目標"
+msgid "expected format: %%(color:<color>)"
+msgstr "期望的格式:%%(color:<顏色>)"
 
-#: remote.c:1933
+#: ref-filter.c:177
 #, c-format
-msgid "couldn't find remote ref %s"
-msgstr "無法找到遠端引用 %s"
+msgid "unrecognized color: %%(color:%s)"
+msgstr "無法識別的顏色:%%(color:%s)"
 
-#: remote.c:1946
+#: ref-filter.c:199
 #, c-format
-msgid "* Ignoring funny ref '%s' locally"
-msgstr "* 在本機忽略可笑的引用 '%s'"
+msgid "Integer value expected refname:lstrip=%s"
+msgstr "期望整數值 refname:lstrip=%s"
 
-#: remote.c:2109
+#: ref-filter.c:203
 #, c-format
-msgid "Your branch is based on '%s', but the upstream is gone.\n"
-msgstr "您的分支基於 '%s',但此上游分支已經不存在。\n"
-
-#: remote.c:2113
-msgid "  (use \"git branch --unset-upstream\" to fixup)\n"
-msgstr "  (使用 \"git branch --unset-upstream\" 來修復)\n"
+msgid "Integer value expected refname:rstrip=%s"
+msgstr "期望整數值 refname:rstrip=%s"
 
-#: remote.c:2116
+#: ref-filter.c:205
 #, c-format
-msgid "Your branch is up to date with '%s'.\n"
-msgstr "您的分支與上游分支 '%s' 一致。\n"
+msgid "unrecognized %%(%s) argument: %s"
+msgstr "無法識別的 %%(%s) 參數:%s"
 
-#: remote.c:2120
+#: ref-filter.c:260
 #, c-format
-msgid "Your branch and '%s' refer to different commits.\n"
-msgstr "您的分支和 '%s' 指向不同的提交。\n"
+msgid "%%(objecttype) does not take arguments"
+msgstr "%%(objecttype) 不帶參數"
 
-#: remote.c:2123
+#: ref-filter.c:282
 #, c-format
-msgid "  (use \"%s\" for details)\n"
-msgstr "  (使用 \"%s\" 檢視詳情)\n"
+msgid "unrecognized %%(objectsize) argument: %s"
+msgstr "無法識別的 %%(objectsize) 參數:%s"
 
-#: remote.c:2127
+#: ref-filter.c:290
 #, 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:2133
-msgid "  (use \"git push\" to publish your local commits)\n"
-msgstr "  (使用 \"git push\" 來發布您的本機提交)\n"
+msgid "%%(deltabase) does not take arguments"
+msgstr "%%(deltabase) 不帶參數"
 
-#: remote.c:2136
+#: ref-filter.c:302
 #, 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:2144
-msgid "  (use \"git pull\" to update your local branch)\n"
-msgstr "  (使用 \"git pull\" 來更新您的本機分支)\n"
+msgid "%%(body) does not take arguments"
+msgstr "%%(body) 不帶參數"
 
-#: remote.c:2147
+#: ref-filter.c:315
 #, c-format
-msgid ""
-"Your branch and '%s' have diverged,\n"
-"and have %d and %d different commit each, respectively.\n"
-msgid_plural ""
-"Your branch and '%s' have diverged,\n"
-"and have %d and %d different commits each, respectively.\n"
-msgstr[0] ""
-"您的分支和 '%s' 出現了偏離,\n"
-"並且分別有 %d 和 %d 處不同的提交。\n"
-
-#  譯者:請維持前導空格
-#: remote.c:2157
-msgid "  (use \"git pull\" to merge the remote branch into yours)\n"
-msgstr "  (使用 \"git pull\" 來合併遠端分支)\n"
+msgid "unrecognized %%(subject) argument: %s"
+msgstr "無法識別的 %%(subject) 引數:%s"
 
-#: remote.c:2349
+#: ref-filter.c:334
 #, c-format
-msgid "cannot parse expected object name '%s'"
-msgstr "無法解析期望的物件名 '%s'"
+msgid "expected %%(trailers:key=<value>)"
+msgstr "預期是 %%(trailers:key=<value>)"
 
-#: replace-object.c:21
+#: ref-filter.c:336
 #, c-format
-msgid "bad replace ref name: %s"
-msgstr "錯誤的取代引用名稱:%s"
+msgid "unknown %%(trailers) argument: %s"
+msgstr "未知的 %%(trailers) 參數:%s"
 
-#: replace-object.c:30
+#: ref-filter.c:367
 #, c-format
-msgid "duplicate replace ref: %s"
-msgstr "重複的取代引用:%s"
+msgid "positive value expected contents:lines=%s"
+msgstr "期望一個正數 contents:lines=%s"
 
-#: replace-object.c:82
+#: ref-filter.c:369
 #, c-format
-msgid "replace depth too high for object %s"
-msgstr "物件 %s 的取代層級太深"
-
-#: rerere.c:217 rerere.c:226 rerere.c:229
-msgid "corrupt MERGE_RR"
-msgstr "損壞的 MERGE_RR"
-
-#: rerere.c:264 rerere.c:269
-msgid "unable to write rerere record"
-msgstr "無法寫入 rerere 記錄"
+msgid "unrecognized %%(contents) argument: %s"
+msgstr "無法識別的 %%(contents) 參數:%s"
 
-#: rerere.c:495
+#: ref-filter.c:384
 #, c-format
-msgid "there were errors while writing '%s' (%s)"
-msgstr "寫入 '%s' (%s) 時發生錯誤"
+msgid "positive value expected '%s' in %%(%s)"
+msgstr "%%(%2$s) 中的 '%1$s' 預期是正數值"
 
-#: rerere.c:498
+#: ref-filter.c:388
 #, c-format
-msgid "failed to flush '%s'"
-msgstr "重新整理 '%s' 失敗"
+msgid "unrecognized argument '%s' in %%(%s)"
+msgstr "無法識別 %%(%2$s) 中的 '%1$s' 參數"
 
-#: rerere.c:503 rerere.c:1039
+#: ref-filter.c:402
 #, c-format
-msgid "could not parse conflict hunks in '%s'"
-msgstr "不能解析 '%s' 中的衝突塊"
+msgid "unrecognized email option: %s"
+msgstr "無法識別的 email 選項:%s"
 
-#: rerere.c:684
+#: ref-filter.c:432
 #, c-format
-msgid "failed utime() on '%s'"
-msgstr "在 '%s' 上呼叫 utime() 失敗"
+msgid "expected format: %%(align:<width>,<position>)"
+msgstr "期望的格式:%%(align:<寬度>,<位置>)"
 
-#: rerere.c:694
+#: ref-filter.c:444
 #, c-format
-msgid "writing '%s' failed"
-msgstr "寫入 '%s' 失敗"
+msgid "unrecognized position:%s"
+msgstr "無法識別的位置:%s"
 
-#: rerere.c:714
+#: ref-filter.c:451
 #, c-format
-msgid "Staged '%s' using previous resolution."
-msgstr "使用之前的解決方案暫存 '%s'。"
+msgid "unrecognized width:%s"
+msgstr "無法識別的寬度:%s"
 
-#: rerere.c:753
+#: ref-filter.c:460
 #, c-format
-msgid "Recorded resolution for '%s'."
-msgstr "已記錄 '%s' 的解決方案。"
+msgid "unrecognized %%(align) argument: %s"
+msgstr "無法識別的 %%(align) 參數:%s"
 
-#: rerere.c:788
+#: ref-filter.c:468
 #, c-format
-msgid "Resolved '%s' using previous resolution."
-msgstr "使用之前的解決方案解決 '%s'。"
+msgid "positive width expected with the %%(align) atom"
+msgstr "元素 %%(align) 需要一個正數的寬度"
 
-#: rerere.c:803
+#: ref-filter.c:486
 #, c-format
-msgid "cannot unlink stray '%s'"
-msgstr "不能刪除 stray '%s'"
+msgid "unrecognized %%(if) argument: %s"
+msgstr "無法識別的 %%(if) 參數:%s"
 
-#: rerere.c:807
+#: ref-filter.c:588
 #, c-format
-msgid "Recorded preimage for '%s'"
-msgstr "為 '%s' 記錄 preimage"
+msgid "malformed field name: %.*s"
+msgstr "格式錯誤的欄位名:%.*s"
 
-#: rerere.c:881 submodule.c:2082 builtin/log.c:1992
-#: builtin/submodule--helper.c:1878 builtin/submodule--helper.c:1890
+#: ref-filter.c:615
 #, c-format
-msgid "could not create directory '%s'"
-msgstr "不能建立目錄 '%s'"
+msgid "unknown field name: %.*s"
+msgstr "未知的欄位名:%.*s"
 
-#: rerere.c:1057
+#: ref-filter.c:619
 #, c-format
-msgid "failed to update conflicted state in '%s'"
-msgstr "更新 '%s' 中的衝突狀態失敗"
+msgid ""
+"not a git repository, but the field '%.*s' requires access to object data"
+msgstr "不是一個 git 版本庫,但是欄位 '%.*s' 需要存取物件資料"
 
-#: rerere.c:1068 rerere.c:1075
+#: ref-filter.c:743
 #, c-format
-msgid "no remembered resolution for '%s'"
-msgstr "æ²\92æ\9c\89ç\82º '%s' è¨\98æ\86¶ç\9a\84解決æ\96¹æ¡\88"
+msgid "format: %%(if) atom used without a %%(then) atom"
+msgstr "æ ¼å¼\8fï¼\9a使ç\94¨äº\86 %%(if) å\85\83ç´ è\80\8cæ²\92æ\9c\89 %%(then) å\85\83ç´ "
 
-#: rerere.c:1077
+#: ref-filter.c:806
 #, c-format
-msgid "cannot unlink '%s'"
-msgstr "不能刪除 '%s'"
+msgid "format: %%(then) atom used without an %%(if) atom"
+msgstr "格式:使用了 %%(then) 元素而沒有 %%(if) 元素"
 
-#: rerere.c:1087
+#: ref-filter.c:808
 #, c-format
-msgid "Updated preimage for '%s'"
-msgstr "已為 '%s' 更新 preimage"
+msgid "format: %%(then) atom used more than once"
+msgstr "格式:%%(then) 元素用了多次"
 
-#: rerere.c:1096
+#: ref-filter.c:810
 #, c-format
-msgid "Forgot resolution for '%s'\n"
-msgstr "忘記 '%s' 的解決方案\n"
-
-#: rerere.c:1199
-msgid "unable to open rr-cache directory"
-msgstr "不能開啟 rr-cache 目錄"
+msgid "format: %%(then) atom used after %%(else)"
+msgstr "格式:%%(then) 元素用在了 %%(else) 之後"
 
-#: reset.c:42
-msgid "could not determine HEAD revision"
-msgstr "不能確定 HEAD 版本"
+#: ref-filter.c:838
+#, c-format
+msgid "format: %%(else) atom used without an %%(if) atom"
+msgstr "格式:使用了 %%(else) 元素而沒有 %%(if) 元素"
 
-#: reset.c:70 reset.c:76 sequencer.c:3460
+#: ref-filter.c:840
 #, c-format
-msgid "failed to find tree of %s"
-msgstr "無法找到 %s 指向的樹"
+msgid "format: %%(else) atom used without a %%(then) atom"
+msgstr "格式:使用了 %%(else) 元素而沒有 %%(then) 元素"
 
-#: revision.c:2336
-msgid "--unpacked=<packfile> no longer supported"
-msgstr "--unpacked=<packfile> 已不受支援"
+#: ref-filter.c:842
+#, c-format
+msgid "format: %%(else) atom used more than once"
+msgstr "格式:%%(else) 元素用了多次"
 
-#: revision.c:2356
+#: ref-filter.c:857
 #, c-format
-msgid "unknown value for --diff-merges: %s"
-msgstr "--diff-merges 的值無效:%s"
+msgid "format: %%(end) atom used without corresponding atom"
+msgstr "格式:使用了 %%(end) 元素卻沒有它的對應元素"
 
-#: revision.c:2694
-msgid "your current branch appears to be broken"
-msgstr "您的目前分支好像被損壞"
+#: ref-filter.c:914
+#, c-format
+msgid "malformed format string %s"
+msgstr "錯誤的格式化字串 %s"
 
-#: revision.c:2697
+#: ref-filter.c:1555
 #, c-format
-msgid "your current branch '%s' does not have any commits yet"
-msgstr "您的目前分支 '%s' 尚無任何提交"
+msgid "(no branch, rebasing %s)"
+msgstr "(無分支,重定 %s 的基底)"
 
-#: revision.c:2907
-msgid "-L does not yet support diff formats besides -p and -s"
-msgstr "-L 尚不支援 -p 和 -s 之外的差異格式"
+#: ref-filter.c:1558
+#, c-format
+msgid "(no branch, rebasing detached HEAD %s)"
+msgstr "(無分支,重定 %s 分離開頭指標的基底)"
 
-#: run-command.c:764
-msgid "open /dev/null failed"
-msgstr "不能開啟 /dev/null"
+#: ref-filter.c:1561
+#, c-format
+msgid "(no branch, bisect started on %s)"
+msgstr "(無分支,二分搜尋從 %s 開始)"
 
-#: run-command.c:1271
+#: ref-filter.c:1565
 #, c-format
-msgid "cannot create async thread: %s"
-msgstr "不能建立 async 執行緒:%s"
+msgid "(HEAD detached at %s)"
+msgstr "(開頭指標分離於 %s)"
 
-#: run-command.c:1335
+#: ref-filter.c:1568
 #, c-format
-msgid ""
-"The '%s' hook was ignored because it's not set as executable.\n"
-"You can disable this warning with `git config advice.ignoredHook false`."
-msgstr ""
-"因為沒有將掛鉤 '%s' 設定為可執行,掛鉤被忽略。您可以透過\n"
-"設定 `git config advice.ignoredHook false` 來關閉這條警告。"
+msgid "(HEAD detached from %s)"
+msgstr "(開頭指標分離自 %s)"
 
-#: send-pack.c:146
-msgid "unexpected flush packet while reading remote unpack status"
-msgstr "讀取遠端解包狀態時收到意外的 flush 包"
+#: ref-filter.c:1571
+msgid "(no branch)"
+msgstr "(無分支)"
 
-#: send-pack.c:148
+#: ref-filter.c:1603 ref-filter.c:1812
 #, c-format
-msgid "unable to parse remote unpack status: %s"
-msgstr "不能解析遠端解包狀態:%s"
+msgid "missing object %s for %s"
+msgstr "缺少 %2$s 的物件 %1$s"
 
-#: send-pack.c:150
+#: ref-filter.c:1613
 #, c-format
-msgid "remote unpack failed: %s"
-msgstr "遠端解包失敗:%s"
+msgid "parse_object_buffer failed on %s for %s"
+msgstr "parse_object_buffer 失敗於 %2$s 的 %1$s"
 
-#: send-pack.c:374
-msgid "failed to sign the push certificate"
-msgstr "為推送證書籤名失敗"
+#: ref-filter.c:1996
+#, c-format
+msgid "malformed object at '%s'"
+msgstr "格式錯誤的物件 '%s'"
 
-#: send-pack.c:467
-msgid "the receiving end does not support this repository's hash algorithm"
-msgstr "接收端不支援此版本庫的雜湊算法"
+#: ref-filter.c:2085
+#, c-format
+msgid "ignoring ref with broken name %s"
+msgstr "忽略帶有錯誤名稱 %s 的引用"
 
-#: send-pack.c:476
-msgid "the receiving end does not support --signed push"
-msgstr "接收端不支援簽名推送"
+#: ref-filter.c:2090 refs.c:676
+#, c-format
+msgid "ignoring broken ref %s"
+msgstr "忽略損壞的引用 %s"
 
-#: send-pack.c:478
-msgid ""
-"not sending a push certificate since the receiving end does not support --"
-"signed push"
-msgstr "未傳送推送證書,因為接收端不支援簽名推送"
+#: ref-filter.c:2430
+#, c-format
+msgid "format: %%(end) atom missing"
+msgstr "格式:缺少 %%(end) 元素"
 
-#: send-pack.c:490
-msgid "the receiving end does not support --atomic push"
-msgstr "接收端不支援原子推送"
+#: ref-filter.c:2529
+#, c-format
+msgid "malformed object name %s"
+msgstr "格式錯誤的物件名 %s"
 
-#: send-pack.c:495
-msgid "the receiving end does not support push options"
-msgstr "接收端不支援推送選項"
+#: ref-filter.c:2534
+#, c-format
+msgid "option `%s' must point to a commit"
+msgstr "選項 `%s' 必須指向一個提交"
 
-#: sequencer.c:195
+#: refs.c:264
 #, c-format
-msgid "invalid commit message cleanup mode '%s'"
-msgstr "無效的提交訊息清理模式 '%s'"
+msgid "%s does not point to a valid object!"
+msgstr "%s 沒有指向一個有效的物件!"
 
-#: sequencer.c:323
+#: refs.c:566
 #, c-format
-msgid "could not delete '%s'"
-msgstr "無法刪除 '%s'"
+msgid ""
+"Using '%s' as the name for the initial branch. This default branch name\n"
+"is subject to change. To configure the initial branch name to use in all\n"
+"of your new repositories, which will suppress this warning, call:\n"
+"\n"
+"\tgit config --global init.defaultBranch <name>\n"
+"\n"
+"Names commonly chosen instead of 'master' are 'main', 'trunk' and\n"
+"'development'. The just-created branch can be renamed via this command:\n"
+"\n"
+"\tgit branch -m <name>\n"
+msgstr ""
+"將「%s」設定為初始分支的名稱。這個預設分支名稱可以變更。\n"
+"如果要設定所有新版本庫要使用的初始分支名稱,\n"
+"請呼叫(會隱藏這個警告):\n"
+"\n"
+"\tgit config —global init.defaultBranch <name>\n"
+"\n"
+"除了 ‘master’ 外,常用的分支名稱有 ‘main’, ‘trunk’ 以及\n"
+"‘development’。剛建立的分支可以用這個命令重新命名:\n"
+"\n"
+"\tgit branch -m <name>\n"
 
-#: sequencer.c:343 builtin/rebase.c:755 builtin/rebase.c:1596 builtin/rm.c:385
+#: refs.c:588
 #, c-format
-msgid "could not remove '%s'"
-msgstr "無法刪除 '%s'"
+msgid "could not retrieve `%s`"
+msgstr "無法擷取「%s」"
 
-#: sequencer.c:353
-msgid "revert"
-msgstr "復原"
+#: refs.c:598
+#, c-format
+msgid "invalid branch name: %s = %s"
+msgstr "分支名稱無效:%s = %s"
 
-#: sequencer.c:355
-msgid "cherry-pick"
-msgstr "摘取"
+#: refs.c:674
+#, c-format
+msgid "ignoring dangling symref %s"
+msgstr "忽略懸空符號引用 %s"
 
-#: sequencer.c:357
-msgid "rebase"
-msgstr "rebase"
+#: refs.c:922
+#, c-format
+msgid "log for ref %s has gap after %s"
+msgstr "引用 %s 的日誌在 %s 之後有缺口"
 
-#: sequencer.c:359
+#: refs.c:929
 #, c-format
-msgid "unknown action: %d"
-msgstr "未知動作:%d"
+msgid "log for ref %s unexpectedly ended on %s"
+msgstr "引用 %s 的日誌意外終止於 %s"
 
-#: sequencer.c:418
-msgid ""
-"after resolving the conflicts, mark the corrected paths\n"
-"with 'git add <paths>' or 'git rm <paths>'"
-msgstr ""
-"衝突解決完畢後,用 'git add <路徑>' 或 'git rm <路徑>'\n"
-"指令標記修正後的檔案"
+#: refs.c:994
+#, c-format
+msgid "log for %s is empty"
+msgstr "%s 的日誌為空"
 
-#: sequencer.c:421
-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 ""
-"衝突解決完畢後,用 'git add <路徑>' 或 'git rm <路徑>'\n"
-"對修正後的檔案做標記,然後用 'git commit' 提交"
+#: refs.c:1086
+#, c-format
+msgid "refusing to update ref with bad name '%s'"
+msgstr "拒絕更新有錯誤名稱 '%s' 的引用"
 
-#: sequencer.c:434 sequencer.c:3062
+#: refs.c:1157
 #, c-format
-msgid "could not lock '%s'"
-msgstr "不能鎖定 '%s'"
+msgid "update_ref failed for ref '%s': %s"
+msgstr "對引用 '%s' 執行 update_ref 失敗:%s"
 
-#: sequencer.c:436 sequencer.c:2861 sequencer.c:3066 sequencer.c:3080
-#: sequencer.c:3337 sequencer.c:5326 strbuf.c:1168 wrapper.c:631
+#: refs.c:2051
 #, c-format
-msgid "could not write to '%s'"
-msgstr "不能寫入 '%s'"
+msgid "multiple updates for ref '%s' not allowed"
+msgstr "不允許對引用 '%s' 多次更新"
 
-#: sequencer.c:441
+#: refs.c:2131
+msgid "ref updates forbidden inside quarantine environment"
+msgstr "在隔離環境中禁止更新引用"
+
+#: refs.c:2142
+msgid "ref updates aborted by hook"
+msgstr "引用更新被掛鉤拒絕"
+
+#: refs.c:2242 refs.c:2272
 #, c-format
-msgid "could not write eol to '%s'"
-msgstr "不能將換行符號寫入 '%s'"
+msgid "'%s' exists; cannot create '%s'"
+msgstr "'%s' 已存在,無法建立 '%s'"
 
-#: sequencer.c:446 sequencer.c:2866 sequencer.c:3068 sequencer.c:3082
-#: sequencer.c:3345
+#: refs.c:2248 refs.c:2283
 #, c-format
-msgid "failed to finalize '%s'"
-msgstr "ç\84¡æ³\95å®\8cæ\88\90 '%s'"
+msgid "cannot process '%s' and '%s' at the same time"
+msgstr "ç\84¡æ³\95å\90\8cæ\99\82è\99\95ç\90\86 '%s' å\92\8c '%s'"
 
-#: sequencer.c:485
+#: refs/files-backend.c:1228
 #, c-format
-msgid "your local changes would be overwritten by %s."
-msgstr "您的本機修改將被%s覆蓋。"
+msgid "could not remove reference %s"
+msgstr "無法刪除引用 %s"
 
-#: sequencer.c:489
-msgid "commit your changes or stash them to proceed."
-msgstr "提交您的修改或儲藏後再繼續。"
+#: refs/files-backend.c:1242 refs/packed-backend.c:1542
+#: refs/packed-backend.c:1552
+#, c-format
+msgid "could not delete reference %s: %s"
+msgstr "無法刪除引用 %s:%s"
 
-#: sequencer.c:521
+#: refs/files-backend.c:1245 refs/packed-backend.c:1555
 #, c-format
-msgid "%s: fast-forward"
-msgstr "%s:快轉"
+msgid "could not delete references: %s"
+msgstr "無法刪除引用:%s"
 
-#: sequencer.c:560 builtin/tag.c:566
+#: refspec.c:170
 #, c-format
-msgid "Invalid cleanup mode %s"
-msgstr "無效的清理模式 %s"
+msgid "invalid refspec '%s'"
+msgstr "無效的引用表達式:'%s'"
 
-#. TRANSLATORS: %s will be "revert", "cherry-pick" or
-#. "rebase".
-#.
-#: sequencer.c:670
+#: remote.c:351
 #, c-format
-msgid "%s: Unable to write new index file"
-msgstr "%s:無法寫入新索引檔案"
+msgid "config remote shorthand cannot begin with '/': %s"
+msgstr "設定的遠端短名稱不能以 '/' 開始:%s"
 
-#: sequencer.c:687
-msgid "unable to update cache tree"
-msgstr "不能更新快取樹"
+#: remote.c:399
+msgid "more than one receivepack given, using the first"
+msgstr "提供了一個以上的 receivepack,使用第一個"
 
-#: sequencer.c:701
-msgid "could not resolve HEAD commit"
-msgstr "不能解析 HEAD 提交"
+#: remote.c:407
+msgid "more than one uploadpack given, using the first"
+msgstr "提供了一個以上的 uploadpack,使用第一個"
 
-#: sequencer.c:781
+#: remote.c:590
 #, c-format
-msgid "no key present in '%.*s'"
-msgstr "在 '%.*s' 中沒有 key"
+msgid "Cannot fetch both %s and %s to %s"
+msgstr "不能同時取得 %s 和 %s 至 %s"
 
-#: sequencer.c:792
+#: remote.c:594
 #, c-format
-msgid "unable to dequote value of '%s'"
-msgstr "無法為 '%s' 的值去引號"
+msgid "%s usually tracks %s, not %s"
+msgstr "%s 通常追蹤 %s,而非 %s"
 
-#: sequencer.c:829 wrapper.c:201 wrapper.c:371 builtin/am.c:710
-#: builtin/am.c:802 builtin/merge.c:1135 builtin/rebase.c:908
+#: remote.c:598
 #, c-format
-msgid "could not open '%s' for reading"
-msgstr "無法開啟 '%s' 進行讀取"
-
-#: sequencer.c:839
-msgid "'GIT_AUTHOR_NAME' already given"
-msgstr "已經給出 'GIT_AUTHOR_NAME'"
-
-#: sequencer.c:844
-msgid "'GIT_AUTHOR_EMAIL' already given"
-msgstr "已經給出 'GIT_AUTHOR_EMAIL'"
-
-#: sequencer.c:849
-msgid "'GIT_AUTHOR_DATE' already given"
-msgstr "已經給出 'GIT_AUTHOR_DATE'"
+msgid "%s tracks both %s and %s"
+msgstr "%s 同時追蹤 %s 和 %s"
 
-#: sequencer.c:853
+#: remote.c:666
 #, c-format
-msgid "unknown variable '%s'"
-msgstr "æ\9cªç\9f¥è®\8aæ\95¸ '%s'"
+msgid "key '%s' of pattern had no '*'"
+msgstr "模å¼\8fç\9a\84é\8dµ '%s' æ²\92æ\9c\89 '*'"
 
-#: sequencer.c:858
-msgid "missing 'GIT_AUTHOR_NAME'"
-msgstr "缺少 'GIT_AUTHOR_NAME'"
+#: remote.c:676
+#, c-format
+msgid "value '%s' of pattern has no '*'"
+msgstr "模式的值 '%s' 沒有 '*'"
 
-#: sequencer.c:860
-msgid "missing 'GIT_AUTHOR_EMAIL'"
-msgstr "缺少 'GIT_AUTHOR_EMAIL'"
+#: remote.c:1083
+#, c-format
+msgid "src refspec %s does not match any"
+msgstr "源引用表達式 %s 沒有符合"
 
-#: sequencer.c:862
-msgid "missing 'GIT_AUTHOR_DATE'"
-msgstr "缺少 'GIT_AUTHOR_DATE'"
+#: remote.c:1088
+#, c-format
+msgid "src refspec %s matches more than one"
+msgstr "源引用表達式 %s 符合超過一個"
 
-#: sequencer.c:927
+#. TRANSLATORS: "matches '%s'%" is the <dst> part of "git push
+#. <remote> <src>:<dst>" push, and "being pushed ('%s')" is
+#. the <src>.
+#.
+#: remote.c:1103
 #, c-format
 msgid ""
-"you have staged changes in your working tree\n"
-"If these changes are meant to be squashed into the previous commit, run:\n"
-"\n"
-"  git commit --amend %s\n"
-"\n"
-"If they are meant to go into a new commit, run:\n"
-"\n"
-"  git commit %s\n"
+"The destination you provided is not a full refname (i.e.,\n"
+"starting with \"refs/\"). We tried to guess what you meant by:\n"
 "\n"
-"In both cases, once you're done, continue with:\n"
+"- Looking for a ref that matches '%s' on the remote side.\n"
+"- Checking if the <src> being pushed ('%s')\n"
+"  is a ref in \"refs/{heads,tags}/\". If so we add a corresponding\n"
+"  refs/{heads,tags}/ prefix on the remote side.\n"
 "\n"
-"  git rebase --continue\n"
+"Neither worked, so we gave up. You must fully qualify the ref."
 msgstr ""
-"您的工作區中存在已暫存的修改\n"
-"如果這些修改需要被併入前一個提交,執行:\n"
-"\n"
-"  git commit --amend %s\n"
-"\n"
-"如果這些修改要形成一個新提交,執行:\n"
-"\n"
-"  git commit %s\n"
+"您提供的目標不是一個完整的引用名稱(即以 \"refs/\" 開頭)。我們\n"
+"試著猜測您的想法:\n"
 "\n"
-"無論哪種情況,當您完成提交,繼續執行:\n"
+"- 在遠端查詢和 '%s' 符合的引用。\n"
+"- 檢查要推送的 <src>('%s')是不是在 \"refs/{heads,tags}/\" 中的\n"
+"  引用。如果是,我們會在對應的遠端新增 refs/{heads,tags}/ 前綴。\n"
 "\n"
-"  git rebase --continue\n"
+"都不行,所以我們已放棄。您必須給出完整的引用。"
 
-#: sequencer.c:1208
-msgid "'prepare-commit-msg' hook failed"
-msgstr "'prepare-commit-msg' 掛鉤失敗"
+#: remote.c:1123
+#, c-format
+msgid ""
+"The <src> part of the refspec is a commit object.\n"
+"Did you mean to create a new branch by pushing to\n"
+"'%s:refs/heads/%s'?"
+msgstr ""
+"引用表達式的 <src> 是一個提交物件。您是想建立一個新的分支而向\n"
+"'%s:refs/heads/%s' 推送嗎?"
 
-#: sequencer.c:1214
+#: remote.c:1128
+#, c-format
 msgid ""
-"Your name and email address were configured automatically based\n"
-"on your username and hostname. Please check that they are accurate.\n"
-"You can suppress this message by setting them explicitly. Run the\n"
-"following command and follow the instructions in your editor to edit\n"
-"your configuration file:\n"
-"\n"
-"    git config --global --edit\n"
-"\n"
-"After doing this, you may fix the identity used for this commit with:\n"
-"\n"
-"    git commit --amend --reset-author\n"
+"The <src> part of the refspec is a tag object.\n"
+"Did you mean to create a new tag by pushing to\n"
+"'%s:refs/tags/%s'?"
 msgstr ""
-"您的姓名和信件位址基於登入名稱和主機名稱自動設定。請檢查它們正確\n"
-"與否。您可以對其進行設定以免再出現本提示訊息。執行如下指令在編輯器\n"
-"中編輯您的設定檔案:\n"
-"\n"
-"    git config --global --edit\n"
-"\n"
-"設定完畢後,您可以用下面的指令來修正本次提交所使用的使用者身份:\n"
-"\n"
-"    git commit --amend --reset-author\n"
+"引用表達式的 <src> 是一個標籤物件。您是想建立一個新的標籤而向\n"
+"'%s:refs/tags/%s' 推送嗎?"
 
-#: sequencer.c:1227
+#: remote.c:1133
+#, c-format
 msgid ""
-"Your name and email address were configured automatically based\n"
-"on your username and hostname. Please check that they are accurate.\n"
-"You can suppress this message by setting them explicitly:\n"
-"\n"
-"    git config --global user.name \"Your Name\"\n"
-"    git config --global user.email you@example.com\n"
-"\n"
-"After doing this, you may fix the identity used for this commit with:\n"
-"\n"
-"    git commit --amend --reset-author\n"
+"The <src> part of the refspec is a tree object.\n"
+"Did you mean to tag a new tree by pushing to\n"
+"'%s:refs/tags/%s'?"
 msgstr ""
-"您的姓名和信件位址基於登入名稱和主機名稱自動設定。請檢查它們正確\n"
-"與否。您可以對其進行設定以免再出現本提示訊息:\n"
-"\n"
-"    git config --global user.name \"Your Name\"\n"
-"    git config --global user.email you@example.com\n"
-"\n"
-"設定完畢後,您可以用下面的指令來修正本次提交所使用的使用者身份:\n"
-"\n"
-"    git commit --amend --reset-author\n"
+"引用表達式的 <src> 是一個樹狀物件。您是想為這個樹狀物件建立標籤而向\n"
+"'%s:refs/tags/%s' 推送嗎?"
 
-#: sequencer.c:1269
-msgid "couldn't look up newly created commit"
-msgstr "無法找到新建立的提交"
+#: remote.c:1138
+#, c-format
+msgid ""
+"The <src> part of the refspec is a blob object.\n"
+"Did you mean to tag a new blob by pushing to\n"
+"'%s:refs/tags/%s'?"
+msgstr ""
+"引用表達式的 <src> 是一個資料物件。您是想為這個資料物件建立標籤而向\n"
+"'%s:refs/tags/%s' 推送嗎?"
 
-#: sequencer.c:1271
-msgid "could not parse newly created commit"
-msgstr "不能解析新建立的提交"
+#: remote.c:1174
+#, c-format
+msgid "%s cannot be resolved to branch"
+msgstr "%s 無法被解析為分支"
 
-#: sequencer.c:1317
-msgid "unable to resolve HEAD after creating commit"
-msgstr "建立提交後,不能解析 HEAD"
+#: remote.c:1185
+#, c-format
+msgid "unable to delete '%s': remote ref does not exist"
+msgstr "無法刪除 '%s':遠端引用不存在"
 
-#: sequencer.c:1319
-msgid "detached HEAD"
-msgstr "分離 HEAD"
+#: remote.c:1197
+#, c-format
+msgid "dst refspec %s matches more than one"
+msgstr "目標引用表達式 %s 符合超過一個"
 
-#  譯者:中文字串拼接,可刪除前導空格
-#: sequencer.c:1323
-msgid " (root-commit)"
-msgstr " (根提交)"
+#: remote.c:1204
+#, c-format
+msgid "dst ref %s receives from more than one src"
+msgstr "目標引用 %s 接收超過一個源"
 
-#: sequencer.c:1344
-msgid "could not parse HEAD"
-msgstr "不能解析 HEAD"
+#: remote.c:1724 remote.c:1825
+msgid "HEAD does not point to a branch"
+msgstr "HEAD 沒有指向一個分支"
 
-#: sequencer.c:1346
+#: remote.c:1733
 #, c-format
-msgid "HEAD %s is not a commit!"
-msgstr "HEAD %s 不是一個提交!"
+msgid "no such branch: '%s'"
+msgstr "沒有此分支:'%s'"
 
-#: sequencer.c:1350 sequencer.c:1425 builtin/commit.c:1577
-msgid "could not parse HEAD commit"
-msgstr "不能解析 HEAD 提交"
+#: remote.c:1736
+#, c-format
+msgid "no upstream configured for branch '%s'"
+msgstr "尚未給分支 '%s' 設定上游"
 
-#: sequencer.c:1403 sequencer.c:2100
-msgid "unable to parse commit author"
-msgstr "不能解析提交作者"
+#: remote.c:1742
+#, c-format
+msgid "upstream branch '%s' not stored as a remote-tracking branch"
+msgstr "上游分支 '%s' 沒有儲存為一個遠端追蹤分支"
 
-#: sequencer.c:1414 builtin/am.c:1566 builtin/merge.c:701
-msgid "git write-tree failed to write a tree"
-msgstr "git write-tree 無法寫入樹狀物件"
+#: remote.c:1757
+#, c-format
+msgid "push destination '%s' on remote '%s' has no local tracking branch"
+msgstr "推送目標 '%s' 至遠端 '%s' 沒有本機追蹤分支"
+
+#: remote.c:1769
+#, c-format
+msgid "branch '%s' has no remote for pushing"
+msgstr "分支 '%s' 沒有設定要推送的遠端伺服器"
+
+#: remote.c:1779
+#, c-format
+msgid "push refspecs for '%s' do not include '%s'"
+msgstr "向 '%s' 推送引用規格未包含 '%s'"
+
+#: remote.c:1792
+msgid "push has no destination (push.default is 'nothing')"
+msgstr "推送無目標(push.default 是 'nothing')"
+
+#: remote.c:1814
+msgid "cannot resolve 'simple' push to a single destination"
+msgstr "無法解析 'simple' 推送至一個單獨的目標"
+
+#: remote.c:1943
+#, c-format
+msgid "couldn't find remote ref %s"
+msgstr "無法找到遠端引用 %s"
+
+#: remote.c:1956
+#, c-format
+msgid "* Ignoring funny ref '%s' locally"
+msgstr "* 在本機忽略可笑的引用 '%s'"
+
+#: remote.c:2119
+#, c-format
+msgid "Your branch is based on '%s', but the upstream is gone.\n"
+msgstr "您的分支基於 '%s',但此上游分支已經不存在。\n"
+
+#: remote.c:2123
+msgid "  (use \"git branch --unset-upstream\" to fixup)\n"
+msgstr "  (使用 \"git branch --unset-upstream\" 來修復)\n"
 
-#: sequencer.c:1447 sequencer.c:1565
+#: remote.c:2126
 #, c-format
-msgid "unable to read commit message from '%s'"
-msgstr "不能從 '%s' 讀取提交說明"
+msgid "Your branch is up to date with '%s'.\n"
+msgstr "您的分支與上游分支 '%s' 一致。\n"
 
-#: sequencer.c:1476 sequencer.c:1508
+#: remote.c:2130
 #, c-format
-msgid "invalid author identity '%s'"
-msgstr "無效的作者身分 '%s'"
+msgid "Your branch and '%s' refer to different commits.\n"
+msgstr "您的分支和 '%s' 指向不同的提交。\n"
 
-#: sequencer.c:1482
-msgid "corrupt author: missing date information"
-msgstr "作者資訊損壞:缺少日期資訊"
+#: remote.c:2133
+#, c-format
+msgid "  (use \"%s\" for details)\n"
+msgstr "  (使用 \"%s\" 檢視詳情)\n"
 
-#: sequencer.c:1521 builtin/am.c:1593 builtin/commit.c:1678 builtin/merge.c:904
-#: builtin/merge.c:929 t/helper/test-fast-rebase.c:78
-msgid "failed to write commit object"
-msgstr "寫提交物件失敗"
+#: remote.c:2137
+#, c-format
+msgid "Your branch is ahead of '%s' by %d commit.\n"
+msgid_plural "Your branch is ahead of '%s' by %d commits.\n"
+msgstr[0] "您的分支領先 '%s' 共 %d 個提交。\n"
 
-#: sequencer.c:1548 sequencer.c:4283 t/helper/test-fast-rebase.c:198
+#: remote.c:2143
+msgid "  (use \"git push\" to publish your local commits)\n"
+msgstr "  (使用 \"git push\" 來發布您的本機提交)\n"
+
+#: remote.c:2146
 #, c-format
-msgid "could not update %s"
-msgstr "不能更新 %s"
+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:2154
+msgid "  (use \"git pull\" to update your local branch)\n"
+msgstr "  (使用 \"git pull\" 來更新您的本機分支)\n"
 
-#: sequencer.c:1597
+#: remote.c:2157
 #, c-format
-msgid "could not parse commit %s"
-msgstr "不能解析提交 %s"
+msgid ""
+"Your branch and '%s' have diverged,\n"
+"and have %d and %d different commit each, respectively.\n"
+msgid_plural ""
+"Your branch and '%s' have diverged,\n"
+"and have %d and %d different commits each, respectively.\n"
+msgstr[0] ""
+"您的分支和 '%s' 出現了偏離,\n"
+"並且分別有 %d 和 %d 處不同的提交。\n"
+
+#  譯者:請維持前導空格
+#: remote.c:2167
+msgid "  (use \"git pull\" to merge the remote branch into yours)\n"
+msgstr "  (使用 \"git pull\" 來合併遠端分支)\n"
 
-#: sequencer.c:1602
+#: remote.c:2359
 #, c-format
-msgid "could not parse parent commit %s"
-msgstr "不能解析父提交 %s"
+msgid "cannot parse expected object name '%s'"
+msgstr "無法解析期望的物件名 '%s'"
 
-#: sequencer.c:1685 sequencer.c:1796
+#: replace-object.c:21
 #, c-format
-msgid "unknown command: %d"
-msgstr "未知指令:%d"
+msgid "bad replace ref name: %s"
+msgstr "錯誤的取代引用名稱:%s"
 
-#: sequencer.c:1743 sequencer.c:1768
+#: replace-object.c:30
 #, c-format
-msgid "This is a combination of %d commits."
-msgstr "é\80\99æ\98¯ä¸\80å\80\8b %d å\80\8bæ\8f\90交ç\9a\84çµ\84å\90\88ã\80\82"
+msgid "duplicate replace ref: %s"
+msgstr "é\87\8dè¤\87ç\9a\84å\8f\96代å¼\95ç\94¨ï¼\9a%s"
 
-#: sequencer.c:1753
-msgid "need a HEAD to fixup"
-msgstr "需要一個 HEAD 來修復"
+#: replace-object.c:82
+#, c-format
+msgid "replace depth too high for object %s"
+msgstr "物件 %s 的取代層級太深"
 
-#: sequencer.c:1755 sequencer.c:3372
-msgid "could not read HEAD"
-msgstr "不能讀取 HEAD"
+#: rerere.c:201 rerere.c:210 rerere.c:213
+msgid "corrupt MERGE_RR"
+msgstr "損壞的 MERGE_RR"
 
-#: sequencer.c:1757
-msgid "could not read HEAD's commit message"
-msgstr "不能讀取 HEAD 的提交說明"
+#: rerere.c:248 rerere.c:253
+msgid "unable to write rerere record"
+msgstr "無法寫入 rerere 記錄"
 
-#: sequencer.c:1763
+#: rerere.c:479
 #, c-format
-msgid "cannot write '%s'"
-msgstr "不能寫 '%s'"
+msgid "there were errors while writing '%s' (%s)"
+msgstr "寫入 '%s' (%s) 時發生錯誤"
 
-#: sequencer.c:1770 git-rebase--preserve-merges.sh:486
-msgid "This is the 1st commit message:"
-msgstr "這是第一個提交說明:"
+#: rerere.c:482
+#, c-format
+msgid "failed to flush '%s'"
+msgstr "重新整理 '%s' 失敗"
 
-#: sequencer.c:1778
+#: rerere.c:487 rerere.c:1023
 #, c-format
-msgid "could not read commit message of %s"
-msgstr "ä¸\8dè\83½è®\80å\8f\96 %s ç\9a\84æ\8f\90交說æ\98\8e"
+msgid "could not parse conflict hunks in '%s'"
+msgstr "ä¸\8dè\83½è§£æ\9e\90 '%s' ä¸­ç\9a\84è¡\9dçª\81å¡\8a"
 
-#: sequencer.c:1785
+#: rerere.c:668
 #, c-format
-msgid "This is the commit message #%d:"
-msgstr "這是提交說明 #%d:"
+msgid "failed utime() on '%s'"
+msgstr "在 '%s' 上呼叫 utime() 失敗"
 
-#: sequencer.c:1791
+#: rerere.c:678
 #, c-format
-msgid "The commit message #%d will be skipped:"
-msgstr "提交說明 #%d 將被跳過:"
+msgid "writing '%s' failed"
+msgstr "寫入 '%s' 失敗"
 
-#: sequencer.c:1879
-msgid "your index file is unmerged."
-msgstr "您的索引檔案未完成合併。"
+#: rerere.c:698
+#, c-format
+msgid "Staged '%s' using previous resolution."
+msgstr "使用之前的解決方案暫存 '%s'。"
 
-#: sequencer.c:1886
-msgid "cannot fixup root commit"
-msgstr "不能修復根提交"
+#: rerere.c:737
+#, c-format
+msgid "Recorded resolution for '%s'."
+msgstr "已記錄 '%s' 的解決方案。"
 
-#: sequencer.c:1905
+#: rerere.c:772
 #, c-format
-msgid "commit %s is a merge but no -m option was given."
-msgstr "提交 %s 是一個合併提交但未提供 -m 選項。"
+msgid "Resolved '%s' using previous resolution."
+msgstr "使用之前的解決方案解決 '%s'。"
 
-#: sequencer.c:1913 sequencer.c:1921
+#: rerere.c:787
 #, c-format
-msgid "commit %s does not have parent %d"
-msgstr "提交 %s 沒有第 %d 個父提交"
+msgid "cannot unlink stray '%s'"
+msgstr "不能刪除 stray '%s'"
 
-#: sequencer.c:1927
+#: rerere.c:791
 #, c-format
-msgid "cannot get commit message for %s"
-msgstr "不能得到 %s 的提交說明"
+msgid "Recorded preimage for '%s'"
+msgstr "為 '%s' 記錄 preimage"
 
-#. TRANSLATORS: The first %s will be a "todo" command like
-#. "revert" or "pick", the second %s a SHA1.
-#: sequencer.c:1946
+#: rerere.c:865 submodule.c:2088 builtin/log.c:1991
+#: builtin/submodule--helper.c:1878 builtin/submodule--helper.c:1890
 #, c-format
-msgid "%s: cannot parse parent commit %s"
-msgstr "%s:不能解析父提交 %s"
+msgid "could not create directory '%s'"
+msgstr "不能建立目錄 '%s'"
 
-#: sequencer.c:2011
+#: rerere.c:1041
 #, c-format
-msgid "could not rename '%s' to '%s'"
-msgstr "不能將 '%s' 重新命名為 '%s'"
+msgid "failed to update conflicted state in '%s'"
+msgstr "更新 '%s' 中的衝突狀態失敗"
 
-#: sequencer.c:2071
+#: rerere.c:1052 rerere.c:1059
 #, c-format
-msgid "could not revert %s... %s"
-msgstr "不能還原 %s... %s"
+msgid "no remembered resolution for '%s'"
+msgstr "沒有為 '%s' 記憶的解決方案"
 
-#: sequencer.c:2072
+#: rerere.c:1061
 #, c-format
-msgid "could not apply %s... %s"
-msgstr "不能應用 %s... %s"
+msgid "cannot unlink '%s'"
+msgstr "不能刪除 '%s'"
 
-#: sequencer.c:2092
+#: rerere.c:1071
 #, c-format
-msgid "dropping %s %s -- patch contents already upstream\n"
-msgstr "拋棄 %s %s -- 修補檔的內容已在上游\n"
+msgid "Updated preimage for '%s'"
+msgstr "已為 '%s' 更新 preimage"
 
-#: sequencer.c:2150
+#: rerere.c:1080
 #, c-format
-msgid "git %s: failed to read the index"
-msgstr "git %s:無法讀取索引"
+msgid "Forgot resolution for '%s'\n"
+msgstr "忘記 '%s' 的解決方案\n"
+
+#: rerere.c:1191
+msgid "unable to open rr-cache directory"
+msgstr "不能開啟 rr-cache 目錄"
+
+#: reset.c:42
+msgid "could not determine HEAD revision"
+msgstr "不能確定 HEAD 版本"
 
-#: sequencer.c:2157
+#: reset.c:70 reset.c:76 sequencer.c:3468
 #, c-format
-msgid "git %s: failed to refresh the index"
-msgstr "git %s:無法重新整理索引"
+msgid "failed to find tree of %s"
+msgstr "無法找到 %s 指向的樹"
+
+#: revision.c:2338
+msgid "--unpacked=<packfile> no longer supported"
+msgstr "--unpacked=<packfile> 已不受支援"
+
+#: revision.c:2668
+msgid "your current branch appears to be broken"
+msgstr "您的目前分支好像被損壞"
 
-#: sequencer.c:2234
+#: revision.c:2671
 #, c-format
-msgid "%s does not accept arguments: '%s'"
-msgstr "%s 不接受參數:'%s'"
+msgid "your current branch '%s' does not have any commits yet"
+msgstr "您的目前分支 '%s' 尚無任何提交"
 
-#: sequencer.c:2243
+#: revision.c:2877
+msgid "-L does not yet support diff formats besides -p and -s"
+msgstr "-L 尚不支援 -p 和 -s 之外的差異格式"
+
+#: run-command.c:767
+msgid "open /dev/null failed"
+msgstr "不能開啟 /dev/null"
+
+#: run-command.c:1274
 #, c-format
-msgid "missing arguments for %s"
-msgstr "缺少 %s 的參數"
+msgid "cannot create async thread: %s"
+msgstr "不能建立 async 執行緒:%s"
 
-#: sequencer.c:2274
+#: run-command.c:1338
 #, c-format
-msgid "could not parse '%s'"
-msgstr "無法解析 '%s'"
+msgid ""
+"The '%s' hook was ignored because it's not set as executable.\n"
+"You can disable this warning with `git config advice.ignoredHook false`."
+msgstr ""
+"因為沒有將掛鉤 '%s' 設定為可執行,掛鉤被忽略。您可以透過\n"
+"設定 `git config advice.ignoredHook false` 來關閉這條警告。"
+
+#: send-pack.c:146
+msgid "unexpected flush packet while reading remote unpack status"
+msgstr "讀取遠端解包狀態時收到意外的 flush 包"
 
-#: sequencer.c:2335
+#: send-pack.c:148
 #, c-format
-msgid "invalid line %d: %.*s"
-msgstr "無效行 %d:%.*s"
+msgid "unable to parse remote unpack status: %s"
+msgstr "不能解析遠端解包狀態:%s"
 
-#: sequencer.c:2346
+#: send-pack.c:150
 #, c-format
-msgid "cannot '%s' without a previous commit"
-msgstr "沒有父提交的情況下不能 '%s'"
+msgid "remote unpack failed: %s"
+msgstr "遠端解包失敗:%s"
 
-#: sequencer.c:2432
-msgid "cancelling a cherry picking in progress"
-msgstr "正在取消一個進行中的揀選"
+#: send-pack.c:374
+msgid "failed to sign the push certificate"
+msgstr "為推送證書籤名失敗"
 
-#: sequencer.c:2441
-msgid "cancelling a revert in progress"
-msgstr "æ­£å\9c¨å\8f\96æ¶\88ä¸\80å\80\8bé\80²è¡\8c中ç\9a\84é\82\84å\8e\9f"
+#: send-pack.c:467
+msgid "the receiving end does not support this repository's hash algorithm"
+msgstr "æ\8e¥æ\94¶ç«¯ä¸\8dæ\94¯æ\8f´æ­¤ç\89\88æ\9c¬åº«ç\9a\84é\9b\9cæ¹\8aç®\97æ³\95"
 
-#: sequencer.c:2485
-msgid "please fix this using 'git rebase --edit-todo'."
-msgstr "請用 'git rebase --edit-todo' 來修改。"
+#: send-pack.c:476
+msgid "the receiving end does not support --signed push"
+msgstr "接收端不支援簽名推送"
 
-#: sequencer.c:2487
-#, c-format
-msgid "unusable instruction sheet: '%s'"
-msgstr "不可用的指令清單:'%s'"
+#: send-pack.c:478
+msgid ""
+"not sending a push certificate since the receiving end does not support --"
+"signed push"
+msgstr "未傳送推送證書,因為接收端不支援簽名推送"
 
-#: sequencer.c:2492
-msgid "no commits parsed."
-msgstr "æ²\92æ\9c\89解æ\9e\90æ\8f\90交ã\80\82"
+#: send-pack.c:490
+msgid "the receiving end does not support --atomic push"
+msgstr "æ\8e¥æ\94¶ç«¯ä¸\8dæ\94¯æ\8f´å\8e\9få­\90æ\8e¨é\80\81"
 
-#: sequencer.c:2503
-msgid "cannot cherry-pick during a revert."
-msgstr "不能在還原提交中執行揀選。"
+#: send-pack.c:495
+msgid "the receiving end does not support push options"
+msgstr "接收端不支援推送選項"
 
-#: sequencer.c:2505
-msgid "cannot revert during a cherry-pick."
-msgstr "不能在揀選中執行還原提交。"
+#: sequencer.c:195
+#, c-format
+msgid "invalid commit message cleanup mode '%s'"
+msgstr "無效的提交訊息清理模式 '%s'"
+
+#: sequencer.c:323
+#, c-format
+msgid "could not delete '%s'"
+msgstr "無法刪除 '%s'"
 
-#: sequencer.c:2583
+#: sequencer.c:343 builtin/rebase.c:757 builtin/rebase.c:1602 builtin/rm.c:385
 #, c-format
-msgid "invalid value for %s: %s"
-msgstr "%s 的值無效:%s"
+msgid "could not remove '%s'"
+msgstr "無法刪除 '%s'"
+
+#: sequencer.c:353
+msgid "revert"
+msgstr "復原"
+
+#: sequencer.c:355
+msgid "cherry-pick"
+msgstr "摘取"
 
-#: sequencer.c:2690
-msgid "unusable squash-onto"
-msgstr "不可用的 squash-onto"
+#: sequencer.c:357
+msgid "rebase"
+msgstr "rebase"
 
-#: sequencer.c:2710
+#: sequencer.c:359
 #, c-format
-msgid "malformed options sheet: '%s'"
-msgstr "æ ¼å¼\8fé\8c¯èª¤ç\9a\84é\81¸é \85æ¸\85å\96®ï¼\9a'%s'"
+msgid "unknown action: %d"
+msgstr "æ\9cªç\9f¥å\8b\95ä½\9cï¼\9a%d"
 
-#: sequencer.c:2803 sequencer.c:4636
-msgid "empty commit set passed"
-msgstr "提供了空的提交集"
+#: sequencer.c:418
+msgid ""
+"after resolving the conflicts, mark the corrected paths\n"
+"with 'git add <paths>' or 'git rm <paths>'"
+msgstr ""
+"衝突解決完畢後,用 'git add <路徑>' 或 'git rm <路徑>'\n"
+"指令標記修正後的檔案"
 
-#: sequencer.c:2820
-msgid "revert is already in progress"
-msgstr "一個還原動作已在進行"
+#: sequencer.c:421
+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 ""
+"衝突解決完畢後,用 'git add <路徑>' 或 'git rm <路徑>'\n"
+"對修正後的檔案做標記,然後用 'git commit' 提交"
 
-#: sequencer.c:2822
+#: sequencer.c:434 sequencer.c:3070
 #, c-format
-msgid "try \"git revert (--continue | %s--abort | --quit)\""
-msgstr "嘗試 \"git revert (--continue | %s--abort | --quit)\""
-
-#: sequencer.c:2825
-msgid "cherry-pick is already in progress"
-msgstr "揀選動作已在進行"
+msgid "could not lock '%s'"
+msgstr "不能鎖定 '%s'"
 
-#: sequencer.c:2827
+#: sequencer.c:436 sequencer.c:2869 sequencer.c:3074 sequencer.c:3088
+#: sequencer.c:3345 sequencer.c:5334 strbuf.c:1168 wrapper.c:631
 #, c-format
-msgid "try \"git cherry-pick (--continue | %s--abort | --quit)\""
-msgstr "嘗試 \"git cherry-pick (--continue | %s--abort | --quit)\""
+msgid "could not write to '%s'"
+msgstr "不能寫入 '%s'"
 
-#: sequencer.c:2841
+#: sequencer.c:441
 #, c-format
-msgid "could not create sequencer directory '%s'"
-msgstr "ä¸\8dè\83½å»ºç«\8båº\8få\88\97ç\9b®é\8c\84 '%s'"
+msgid "could not write eol to '%s'"
+msgstr "ä¸\8dè\83½å°\87æ\8f\9bè¡\8c符è\99\9f寫å\85¥ '%s'"
 
-#: sequencer.c:2856
-msgid "could not lock HEAD"
-msgstr "不能鎖定 HEAD"
+#: sequencer.c:446 sequencer.c:2874 sequencer.c:3076 sequencer.c:3090
+#: sequencer.c:3353
+#, c-format
+msgid "failed to finalize '%s'"
+msgstr "無法完成 '%s'"
 
-#: sequencer.c:2916 sequencer.c:4371
-msgid "no cherry-pick or revert in progress"
-msgstr "揀選或還原動作並未進行"
+#: sequencer.c:485
+#, c-format
+msgid "your local changes would be overwritten by %s."
+msgstr "您的本機修改將被%s覆蓋。"
 
-#: sequencer.c:2918 sequencer.c:2929
-msgid "cannot resolve HEAD"
-msgstr "不能解析 HEAD"
+#: sequencer.c:489
+msgid "commit your changes or stash them to proceed."
+msgstr "提交您的修改或儲藏後再繼續。"
 
-#: sequencer.c:2920 sequencer.c:2964
-msgid "cannot abort from a branch yet to be born"
-msgstr "不能從尚未建立的分支終止"
+#: sequencer.c:521
+#, c-format
+msgid "%s: fast-forward"
+msgstr "%s:快轉"
 
-#: sequencer.c:2950 builtin/grep.c:756
+#: sequencer.c:560 builtin/tag.c:598
 #, c-format
-msgid "cannot open '%s'"
-msgstr "不能開啟 '%s'"
+msgid "Invalid cleanup mode %s"
+msgstr "無效的清理模式 %s"
 
-#: sequencer.c:2952
+#. TRANSLATORS: %s will be "revert", "cherry-pick" or
+#. "rebase".
+#.
+#: sequencer.c:670
 #, c-format
-msgid "cannot read '%s': %s"
-msgstr "不能讀取 '%s':%s"
+msgid "%s: Unable to write new index file"
+msgstr "%s:無法寫入新索引檔案"
 
-#: sequencer.c:2953
-msgid "unexpected end of file"
-msgstr "意外的檔案結束"
+#: sequencer.c:684
+msgid "unable to update cache tree"
+msgstr "不能更新快取樹"
+
+#: sequencer.c:698
+msgid "could not resolve HEAD commit"
+msgstr "不能解析 HEAD 提交"
 
-#: sequencer.c:2959
+#: sequencer.c:778
 #, c-format
-msgid "stored pre-cherry-pick HEAD file '%s' is corrupt"
-msgstr "å\84²å­\98æ\8f\80é\81¸æ\8f\90交å\89\8dç\9a\84 HEAD æª\94æ¡\88 '%s' æ\90\8då£\9e"
+msgid "no key present in '%.*s'"
+msgstr "å\9c¨ '%.*s' ä¸­æ²\92æ\9c\89 key"
 
-#: sequencer.c:2970
-msgid "You seem to have moved HEAD. Not rewinding, check your HEAD!"
-msgstr "您好像移動了 HEAD。未能還原,檢查您的 HEAD!"
+#: sequencer.c:789
+#, c-format
+msgid "unable to dequote value of '%s'"
+msgstr "無法為 '%s' 的值去引號"
 
-#: sequencer.c:3011
-msgid "no revert in progress"
-msgstr "沒有正在進行的還原"
+#: sequencer.c:826 wrapper.c:201 wrapper.c:371 builtin/am.c:710
+#: builtin/am.c:802 builtin/merge.c:1136 builtin/rebase.c:910
+#, c-format
+msgid "could not open '%s' for reading"
+msgstr "無法開啟 '%s' 進行讀取"
 
-#: sequencer.c:3020
-msgid "no cherry-pick in progress"
-msgstr "沒有正在進行的揀選"
+#: sequencer.c:836
+msgid "'GIT_AUTHOR_NAME' already given"
+msgstr "已經給出 'GIT_AUTHOR_NAME'"
 
-#: sequencer.c:3030
-msgid "failed to skip the commit"
-msgstr "無法跳過這個提交"
+#: sequencer.c:841
+msgid "'GIT_AUTHOR_EMAIL' already given"
+msgstr "已經給出 'GIT_AUTHOR_EMAIL'"
 
-#: sequencer.c:3037
-msgid "there is nothing to skip"
-msgstr "沒有要跳過的"
+#: sequencer.c:846
+msgid "'GIT_AUTHOR_DATE' already given"
+msgstr "已經給出 'GIT_AUTHOR_DATE'"
 
-#: sequencer.c:3040
+#: sequencer.c:850
 #, c-format
-msgid ""
-"have you committed already?\n"
-"try \"git %s --continue\""
-msgstr ""
-"您已經提交了嗎?\n"
-"試試 \"git %s --continue\""
+msgid "unknown variable '%s'"
+msgstr "未知變數 '%s'"
 
-#: sequencer.c:3202 sequencer.c:4263
-msgid "cannot read HEAD"
-msgstr "不能讀取 HEAD"
+#: sequencer.c:855
+msgid "missing 'GIT_AUTHOR_NAME'"
+msgstr "缺少 'GIT_AUTHOR_NAME'"
 
-#: sequencer.c:3219
-#, c-format
-msgid "unable to copy '%s' to '%s'"
-msgstr "無法複製 '%s' 至 '%s'"
+#: sequencer.c:857
+msgid "missing 'GIT_AUTHOR_EMAIL'"
+msgstr "缺少 'GIT_AUTHOR_EMAIL'"
 
-#: sequencer.c:3227
+#: sequencer.c:859
+msgid "missing 'GIT_AUTHOR_DATE'"
+msgstr "缺少 'GIT_AUTHOR_DATE'"
+
+#: sequencer.c:924
 #, c-format
 msgid ""
-"You can amend the commit now, with\n"
+"you have staged changes in your working tree\n"
+"If these changes are meant to be squashed into the previous commit, run:\n"
 "\n"
 "  git commit --amend %s\n"
 "\n"
-"Once you are satisfied with your changes, run\n"
+"If they are meant to go into a new commit, run:\n"
+"\n"
+"  git commit %s\n"
+"\n"
+"In both cases, once you're done, continue with:\n"
 "\n"
 "  git rebase --continue\n"
 msgstr ""
-"您現在可以修補這個提交,使用\n"
+"您的工作區中存在已暫存的修改\n"
+"如果這些修改需要被併入前一個提交,執行:\n"
 "\n"
 "  git commit --amend %s\n"
 "\n"
-"當您對變更感到滿意,執行\n"
+"如果這些修改要形成一個新提交,執行:\n"
+"\n"
+"  git commit %s\n"
+"\n"
+"無論哪種情況,當您完成提交,繼續執行:\n"
 "\n"
 "  git rebase --continue\n"
 
-#: sequencer.c:3237
-#, c-format
-msgid "Could not apply %s... %.*s"
-msgstr "不能應用 %s... %.*s"
-
-#: sequencer.c:3244
-#, c-format
-msgid "Could not merge %.*s"
-msgstr "不能合併 %.*s"
-
-#: sequencer.c:3258 sequencer.c:3262 builtin/difftool.c:640
-#, c-format
-msgid "could not copy '%s' to '%s'"
-msgstr "不能複製 '%s' 至 '%s'"
-
-#: sequencer.c:3274
-#, c-format
-msgid "Executing: %s\n"
-msgstr "執行:%s\n"
+#: sequencer.c:1211
+msgid "'prepare-commit-msg' hook failed"
+msgstr "'prepare-commit-msg' 掛鉤失敗"
 
-#  譯者:請維持前導空格
-#: sequencer.c:3289
-#, c-format
+#: sequencer.c:1217
 msgid ""
-"execution failed: %s\n"
-"%sYou can fix the problem, and then run\n"
+"Your name and email address were configured automatically based\n"
+"on your username and hostname. Please check that they are accurate.\n"
+"You can suppress this message by setting them explicitly. Run the\n"
+"following command and follow the instructions in your editor to edit\n"
+"your configuration file:\n"
 "\n"
-"  git rebase --continue\n"
+"    git config --global --edit\n"
+"\n"
+"After doing this, you may fix the identity used for this commit with:\n"
 "\n"
+"    git commit --amend --reset-author\n"
 msgstr ""
-"執行失敗:%s\n"
-"%s您可以改正該問題,然後執行\n"
+"您的姓名和信件位址基於登入名稱和主機名稱自動設定。請檢查它們正確\n"
+"與否。您可以對其進行設定以免再出現本提示訊息。執行如下指令在編輯器\n"
+"中編輯您的設定檔案:\n"
 "\n"
-"  git rebase --continue\n"
+"    git config --global --edit\n"
 "\n"
+"設定完畢後,您可以用下面的指令來修正本次提交所使用的使用者身份:\n"
+"\n"
+"    git commit --amend --reset-author\n"
 
-#: sequencer.c:3295
-msgid "and made changes to the index and/or the working tree\n"
-msgstr "並且修改索引和/或工作區\n"
-
-#: sequencer.c:3301
-#, c-format
+#: sequencer.c:1230
 msgid ""
-"execution succeeded: %s\n"
-"but left changes to the index and/or the working tree\n"
-"Commit or stash your changes, and then run\n"
+"Your name and email address were configured automatically based\n"
+"on your username and hostname. Please check that they are accurate.\n"
+"You can suppress this message by setting them explicitly:\n"
 "\n"
-"  git rebase --continue\n"
+"    git config --global user.name \"Your Name\"\n"
+"    git config --global user.email you@example.com\n"
+"\n"
+"After doing this, you may fix the identity used for this commit with:\n"
 "\n"
+"    git commit --amend --reset-author\n"
 msgstr ""
-"執行成功:%s\n"
-"但是在索引和/或工作區中存在變更\n"
-"提交或儲藏修改,然後執行\n"
+"您的姓名和信件位址基於登入名稱和主機名稱自動設定。請檢查它們正確\n"
+"與否。您可以對其進行設定以免再出現本提示訊息:\n"
 "\n"
-"  git rebase --continue\n"
+"    git config --global user.name \"Your Name\"\n"
+"    git config --global user.email you@example.com\n"
 "\n"
+"設定完畢後,您可以用下面的指令來修正本次提交所使用的使用者身份:\n"
+"\n"
+"    git commit --amend --reset-author\n"
 
-#: sequencer.c:3362
-#, c-format
-msgid "illegal label name: '%.*s'"
-msgstr "非法的標籤名稱:'%.*s'"
+#: sequencer.c:1272
+msgid "couldn't look up newly created commit"
+msgstr "無法找到新建立的提交"
 
-#: sequencer.c:3416
-msgid "writing fake root commit"
-msgstr "寫偽根提交"
+#: sequencer.c:1274
+msgid "could not parse newly created commit"
+msgstr "不能解析新建立的提交"
 
-#: sequencer.c:3421
-msgid "writing squash-onto"
-msgstr "寫入 squash-onto"
+#: sequencer.c:1320
+msgid "unable to resolve HEAD after creating commit"
+msgstr "建立提交後,不能解析 HEAD"
+
+#: sequencer.c:1322
+msgid "detached HEAD"
+msgstr "分離 HEAD"
+
+#  譯者:中文字串拼接,可刪除前導空格
+#: sequencer.c:1326
+msgid " (root-commit)"
+msgstr " (根提交)"
+
+#: sequencer.c:1347
+msgid "could not parse HEAD"
+msgstr "不能解析 HEAD"
 
-#: sequencer.c:3505
+#: sequencer.c:1349
 #, c-format
-msgid "could not resolve '%s'"
-msgstr "無法解析 '%s'"
+msgid "HEAD %s is not a commit!"
+msgstr "HEAD %s 不是一個提交!"
 
-#: sequencer.c:3538
-msgid "cannot merge without a current revision"
-msgstr "沒有目前版本不能合併"
+#: sequencer.c:1353 sequencer.c:1431 builtin/commit.c:1577
+msgid "could not parse HEAD commit"
+msgstr "不能解析 HEAD 提交"
+
+#: sequencer.c:1409 sequencer.c:2108
+msgid "unable to parse commit author"
+msgstr "不能解析提交作者"
+
+#: sequencer.c:1420 builtin/am.c:1566 builtin/merge.c:702
+msgid "git write-tree failed to write a tree"
+msgstr "git write-tree 無法寫入樹狀物件"
 
-#: sequencer.c:3560
+#: sequencer.c:1453 sequencer.c:1573
 #, c-format
-msgid "unable to parse '%.*s'"
-msgstr "無法解析 '%.*s'"
+msgid "unable to read commit message from '%s'"
+msgstr "不能從 '%s' 讀取提交說明"
 
-#: sequencer.c:3569
+#: sequencer.c:1484 sequencer.c:1516
 #, c-format
-msgid "nothing to merge: '%.*s'"
-msgstr "無可用合併:'%.*s'"
+msgid "invalid author identity '%s'"
+msgstr "無效的作者身分 '%s'"
 
-#: sequencer.c:3581
-msgid "octopus merge cannot be executed on top of a [new root]"
-msgstr "章魚合並不能在一個新的根提交上執行"
+#: sequencer.c:1490
+msgid "corrupt author: missing date information"
+msgstr "作者資訊損壞:缺少日期資訊"
 
-#: sequencer.c:3597
-#, c-format
-msgid "could not get commit message of '%s'"
-msgstr "不能取得 '%s' 的提交說明"
+#: sequencer.c:1529 builtin/am.c:1593 builtin/commit.c:1678 builtin/merge.c:905
+#: builtin/merge.c:930 t/helper/test-fast-rebase.c:78
+msgid "failed to write commit object"
+msgstr "寫提交物件失敗"
 
-#: sequencer.c:3780
+#: sequencer.c:1556 sequencer.c:4291 t/helper/test-fast-rebase.c:198
 #, c-format
-msgid "could not even attempt to merge '%.*s'"
-msgstr "甚至不能嘗試合併 '%.*s'"
-
-#: sequencer.c:3796
-msgid "merge: Unable to write new index file"
-msgstr "合併:無法寫入新索引檔案"
+msgid "could not update %s"
+msgstr "不能更新 %s"
 
-#: sequencer.c:3870
-msgid "Cannot autostash"
-msgstr "無法 autostash"
+#: sequencer.c:1605
+#, c-format
+msgid "could not parse commit %s"
+msgstr "不能解析提交 %s"
 
-#: sequencer.c:3873
+#: sequencer.c:1610
 #, c-format
-msgid "Unexpected stash response: '%s'"
-msgstr "意外的 stash 回應:'%s'"
+msgid "could not parse parent commit %s"
+msgstr "不能解析父提交 %s"
 
-#: sequencer.c:3879
+#: sequencer.c:1693 sequencer.c:1804
 #, c-format
-msgid "Could not create directory for '%s'"
-msgstr "不能為 '%s' 建立目錄"
+msgid "unknown command: %d"
+msgstr "未知指令:%d"
 
-#: sequencer.c:3882
+#: sequencer.c:1751 sequencer.c:1776
 #, c-format
-msgid "Created autostash: %s\n"
-msgstr "建立了 autostash:%s\n"
+msgid "This is a combination of %d commits."
+msgstr "這是一個 %d 個提交的組合。"
 
-#: sequencer.c:3886
-msgid "could not reset --hard"
-msgstr "無法 reset --hard"
+#: sequencer.c:1761
+msgid "need a HEAD to fixup"
+msgstr "需要一個 HEAD 來修復"
+
+#: sequencer.c:1763 sequencer.c:3380
+msgid "could not read HEAD"
+msgstr "不能讀取 HEAD"
 
-#: sequencer.c:3911
+#: sequencer.c:1765
+msgid "could not read HEAD's commit message"
+msgstr "不能讀取 HEAD 的提交說明"
+
+#: sequencer.c:1771
 #, c-format
-msgid "Applied autostash.\n"
-msgstr "已應用 autostash。\n"
+msgid "cannot write '%s'"
+msgstr "不能寫 '%s'"
+
+#: sequencer.c:1778 git-rebase--preserve-merges.sh:486
+msgid "This is the 1st commit message:"
+msgstr "這是第一個提交說明:"
 
-#: sequencer.c:3923
+#: sequencer.c:1786
 #, c-format
-msgid "cannot store %s"
-msgstr "不能儲存 %s"
+msgid "could not read commit message of %s"
+msgstr "不能讀取 %s 的提交說明"
 
-#: sequencer.c:3926
+#: sequencer.c:1793
 #, c-format
-msgid ""
-"%s\n"
-"Your changes are safe in the stash.\n"
-"You can run \"git stash pop\" or \"git stash drop\" at any time.\n"
-msgstr ""
-"%s\n"
-"您的修改安全地儲存在儲藏區中。\n"
-"您可以在任何時候執行 \"git stash pop\" 或 \"git stash drop\"。\n"
+msgid "This is the commit message #%d:"
+msgstr "這是提交說明 #%d:"
 
-#: sequencer.c:3931
-msgid "Applying autostash resulted in conflicts."
-msgstr "因套用自動儲藏而導致衝突。"
+#: sequencer.c:1799
+#, c-format
+msgid "The commit message #%d will be skipped:"
+msgstr "提交說明 #%d 將被跳過:"
 
-#: sequencer.c:3932
-msgid "Autostash exists; creating a new stash entry."
-msgstr "已有自動儲藏;建立新儲藏項目。"
+#: sequencer.c:1887
+msgid "your index file is unmerged."
+msgstr "您的索引檔案未完成合併。"
 
-#: sequencer.c:4025 git-rebase--preserve-merges.sh:769
-msgid "could not detach HEAD"
-msgstr "不能分離開頭指標"
+#: sequencer.c:1894
+msgid "cannot fixup root commit"
+msgstr "不能修復根提交"
 
-#: sequencer.c:4040
+#: sequencer.c:1913
 #, c-format
-msgid "Stopped at HEAD\n"
-msgstr "停止在 HEAD\n"
+msgid "commit %s is a merge but no -m option was given."
+msgstr "提交 %s 是一個合併提交但未提供 -m 選項。"
 
-#: sequencer.c:4042
+#: sequencer.c:1921 sequencer.c:1929
 #, c-format
-msgid "Stopped at %s\n"
-msgstr "停止在 %s\n"
+msgid "commit %s does not have parent %d"
+msgstr "提交 %s 沒有第 %d 個父提交"
 
-#: sequencer.c:4050
+#: sequencer.c:1935
 #, 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"
+msgid "cannot get commit message for %s"
+msgstr "不能得到 %s 的提交說明"
 
-#: sequencer.c:4096
+#. TRANSLATORS: The first %s will be a "todo" command like
+#. "revert" or "pick", the second %s a SHA1.
+#: sequencer.c:1954
 #, c-format
-msgid "Rebasing (%d/%d)%s"
-msgstr "正在重定基底 (%d/%d)%s"
+msgid "%s: cannot parse parent commit %s"
+msgstr "%s:不能解析父提交 %s"
 
-#: sequencer.c:4141
+#: sequencer.c:2019
 #, c-format
-msgid "Stopped at %s...  %.*s\n"
-msgstr "停止在 %s... %.*s\n"
+msgid "could not rename '%s' to '%s'"
+msgstr "不能將 '%s' 重新命名為 '%s'"
 
-#: sequencer.c:4212
+#: sequencer.c:2079
 #, c-format
-msgid "unknown command %d"
-msgstr "未知指令 %d"
-
-#: sequencer.c:4271
-msgid "could not read orig-head"
-msgstr "不能讀取 orig-head"
-
-#: sequencer.c:4276
-msgid "could not read 'onto'"
-msgstr "不能讀取 'onto'"
+msgid "could not revert %s... %s"
+msgstr "不能還原 %s... %s"
 
-#: sequencer.c:4290
+#: sequencer.c:2080
 #, c-format
-msgid "could not update HEAD to %s"
-msgstr "ä¸\8dè\83½æ\9b´æ\96° HEAD ç\82º %s"
+msgid "could not apply %s... %s"
+msgstr "ä¸\8dè\83½æ\87\89ç\94¨ %s... %s"
 
-#: sequencer.c:4350
+#: sequencer.c:2100
 #, c-format
-msgid "Successfully rebased and updated %s.\n"
-msgstr "成功重定基底並更新 %s。\n"
-
-#: sequencer.c:4383
-msgid "cannot rebase: You have unstaged changes."
-msgstr "不能重定基底:您有未暫存的變更。"
-
-#: sequencer.c:4392
-msgid "cannot amend non-existing commit"
-msgstr "不能修補不存在的提交"
+msgid "dropping %s %s -- patch contents already upstream\n"
+msgstr "拋棄 %s %s -- 修補檔的內容已在上游\n"
 
-#: sequencer.c:4394
+#: sequencer.c:2158
 #, c-format
-msgid "invalid file: '%s'"
-msgstr "無效檔案:'%s'"
+msgid "git %s: failed to read the index"
+msgstr "git %s:無法讀取索引"
 
-#: sequencer.c:4396
+#: sequencer.c:2165
 #, c-format
-msgid "invalid contents: '%s'"
-msgstr "無效內容:'%s'"
-
-#: sequencer.c:4399
-msgid ""
-"\n"
-"You have uncommitted changes in your working tree. Please, commit them\n"
-"first and then run 'git rebase --continue' again."
-msgstr ""
-"\n"
-"您的工作區中有未提交的變更。請先提交然後再次執行 'git rebase --continue'。"
+msgid "git %s: failed to refresh the index"
+msgstr "git %s:無法重新整理索引"
 
-#: sequencer.c:4435 sequencer.c:4474
+#: sequencer.c:2242
 #, c-format
-msgid "could not write file: '%s'"
-msgstr "不能寫入檔案:'%s'"
+msgid "%s does not accept arguments: '%s'"
+msgstr "%s 不接受參數:'%s'"
 
-#: sequencer.c:4490
-msgid "could not remove CHERRY_PICK_HEAD"
-msgstr "不能刪除 CHERRY_PICK_HEAD"
+#: sequencer.c:2251
+#, c-format
+msgid "missing arguments for %s"
+msgstr "缺少 %s 的參數"
 
-#: sequencer.c:4497
-msgid "could not commit staged changes."
-msgstr "不能提交暫存的修改。"
+#: sequencer.c:2282
+#, c-format
+msgid "could not parse '%s'"
+msgstr "無法解析 '%s'"
 
-#: sequencer.c:4613
+#: sequencer.c:2343
 #, c-format
-msgid "%s: can't cherry-pick a %s"
-msgstr "%s:不能揀選一個%s"
+msgid "invalid line %d: %.*s"
+msgstr "無效行 %d:%.*s"
 
-#: sequencer.c:4617
+#: sequencer.c:2354
 #, c-format
-msgid "%s: bad revision"
-msgstr "%s:錯誤的版本"
+msgid "cannot '%s' without a previous commit"
+msgstr "沒有父提交的情況下不能 '%s'"
 
-#: sequencer.c:4652
-msgid "can't revert as initial commit"
-msgstr "不能作為初始提交還原提交"
+#: sequencer.c:2440
+msgid "cancelling a cherry picking in progress"
+msgstr "正在取消一個進行中的揀選"
 
-#: sequencer.c:5129
-msgid "make_script: unhandled options"
-msgstr "make_script:有未能處理的選項"
+#: sequencer.c:2449
+msgid "cancelling a revert in progress"
+msgstr "正在取消一個進行中的還原"
 
-#: sequencer.c:5132
-msgid "make_script: error preparing revisions"
-msgstr "make_script:準備版本時錯誤"
+#: sequencer.c:2493
+msgid "please fix this using 'git rebase --edit-todo'."
+msgstr "請用 'git rebase --edit-todo' 來修改。"
 
-#: sequencer.c:5374 sequencer.c:5391
-msgid "nothing to do"
-msgstr "無事可做"
+#: sequencer.c:2495
+#, c-format
+msgid "unusable instruction sheet: '%s'"
+msgstr "不可用的指令清單:'%s'"
 
-#: sequencer.c:5410
-msgid "could not skip unnecessary pick commands"
-msgstr "無法跳過不必要的揀選"
+#: sequencer.c:2500
+msgid "no commits parsed."
+msgstr "沒有解析提交。"
 
-#: sequencer.c:5504
-msgid "the script was already rearranged."
-msgstr "腳本已經重新編排。"
+#: sequencer.c:2511
+msgid "cannot cherry-pick during a revert."
+msgstr "不能在還原提交中執行揀選。"
 
-#: setup.c:133
-#, c-format
-msgid "'%s' is outside repository at '%s'"
-msgstr "'%s' 在位於 '%s' 的版本庫之外"
+#: sequencer.c:2513
+msgid "cannot revert during a cherry-pick."
+msgstr "不能在揀選中執行還原提交。"
 
-#: setup.c:185
+#: sequencer.c:2591
 #, 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 ""
-"%s:工作區中無此路徑。\n"
-"使用指令 'git <指令> -- <路徑>...' 來指定本機不存在的路徑。"
+msgid "invalid value for %s: %s"
+msgstr "%s 的值無效:%s"
 
-#: setup.c:198
-#, c-format
-msgid ""
-"ambiguous argument '%s': unknown revision or path not in the working tree.\n"
-"Use '--' to separate paths from revisions, like this:\n"
-"'git <command> [<revision>...] -- [<file>...]'"
-msgstr ""
-"有歧義的參數 '%s':未知的版本或路徑不存在於工作區中。\n"
-"使用 '--' 來分隔版本和路徑,例如:\n"
-"'git <指令> [<版本>...] -- [<檔案>...]'"
+#: sequencer.c:2698
+msgid "unusable squash-onto"
+msgstr "不可用的 squash-onto"
 
-#: setup.c:264
+#: sequencer.c:2718
 #, c-format
-msgid "option '%s' must come before non-option arguments"
-msgstr "選項 '%s' 必須在其他非選項參數之前"
+msgid "malformed options sheet: '%s'"
+msgstr "格式錯誤的選項清單:'%s'"
 
-#: setup.c:283
+#: sequencer.c:2811 sequencer.c:4644
+msgid "empty commit set passed"
+msgstr "提供了空的提交集"
+
+#: sequencer.c:2828
+msgid "revert is already in progress"
+msgstr "一個還原動作已在進行"
+
+#: sequencer.c:2830
 #, c-format
-msgid ""
-"ambiguous argument '%s': both revision and filename\n"
-"Use '--' to separate paths from revisions, like this:\n"
-"'git <command> [<revision>...] -- [<file>...]'"
-msgstr ""
-"有歧義的參數 '%s':可同時是版本和檔案\n"
-"使用 '--' 來分隔版本和路徑,例如:\n"
-"'git <指令> [<版本>...] -- [<檔案>...]'"
+msgid "try \"git revert (--continue | %s--abort | --quit)\""
+msgstr "嘗試 \"git revert (--continue | %s--abort | --quit)\""
 
-#: setup.c:419
-msgid "unable to set up work tree using invalid config"
-msgstr "無法使用無效設定來建立工作區"
+#: sequencer.c:2833
+msgid "cherry-pick is already in progress"
+msgstr "揀選動作已在進行"
 
-#: setup.c:423
-msgid "this operation must be run in a work tree"
-msgstr "該動作必須在一個工作區中執行"
+#: sequencer.c:2835
+#, c-format
+msgid "try \"git cherry-pick (--continue | %s--abort | --quit)\""
+msgstr "嘗試 \"git cherry-pick (--continue | %s--abort | --quit)\""
 
-#: setup.c:661
+#: sequencer.c:2849
 #, c-format
-msgid "Expected git repo version <= %d, found %d"
-msgstr "期望 git 版本庫版本 <= %d,卻得到 %d"
+msgid "could not create sequencer directory '%s'"
+msgstr "不能建立序列目錄 '%s'"
 
-#: setup.c:669
-msgid "unknown repository extensions found:"
-msgstr "發現未知的版本庫擴展:"
+#: sequencer.c:2864
+msgid "could not lock HEAD"
+msgstr "不能鎖定 HEAD"
 
-#: setup.c:681
-msgid "repo version is 0, but v1-only extensions found:"
-msgstr "repo 的版本是 0,但找到只支援 v1 的擴充元件:"
+#: sequencer.c:2924 sequencer.c:4379
+msgid "no cherry-pick or revert in progress"
+msgstr "揀選或還原動作並未進行"
 
-#: setup.c:700
-#, c-format
-msgid "error opening '%s'"
-msgstr "開啟 '%s' 發生錯誤"
+#: sequencer.c:2926 sequencer.c:2937
+msgid "cannot resolve HEAD"
+msgstr "不能解析 HEAD"
 
-#: setup.c:702
-#, c-format
-msgid "too large to be a .git file: '%s'"
-msgstr "檔案太大,無法作為 .git 檔案:'%s'"
+#: sequencer.c:2928 sequencer.c:2972
+msgid "cannot abort from a branch yet to be born"
+msgstr "不能從尚未建立的分支終止"
 
-#: setup.c:704
+#: sequencer.c:2958 builtin/grep.c:757
 #, c-format
-msgid "error reading %s"
-msgstr "讀取 %s 發生錯誤"
+msgid "cannot open '%s'"
+msgstr "不能開啟 '%s'"
 
-#: setup.c:706
+#: sequencer.c:2960
 #, c-format
-msgid "invalid gitfile format: %s"
-msgstr "無效的 gitfile 格式:%s"
+msgid "cannot read '%s': %s"
+msgstr "不能讀取 '%s':%s"
 
-#: setup.c:708
-#, c-format
-msgid "no path in gitfile: %s"
-msgstr "在 gitfile 中沒有路徑:%s"
+#: sequencer.c:2961
+msgid "unexpected end of file"
+msgstr "意外的檔案結束"
 
-#: setup.c:710
+#: sequencer.c:2967
 #, c-format
-msgid "not a git repository: %s"
-msgstr "不是一個 git 版本庫:%s"
+msgid "stored pre-cherry-pick HEAD file '%s' is corrupt"
+msgstr "儲存揀選提交前的 HEAD 檔案 '%s' 損壞"
 
-#: setup.c:812
-#, c-format
-msgid "'$%s' too big"
-msgstr "'$%s' 太大"
+#: sequencer.c:2978
+msgid "You seem to have moved HEAD. Not rewinding, check your HEAD!"
+msgstr "您好像移動了 HEAD。未能還原,檢查您的 HEAD!"
 
-#: setup.c:826
+#: sequencer.c:3019
+msgid "no revert in progress"
+msgstr "沒有正在進行的還原"
+
+#: sequencer.c:3028
+msgid "no cherry-pick in progress"
+msgstr "沒有正在進行的揀選"
+
+#: sequencer.c:3038
+msgid "failed to skip the commit"
+msgstr "無法跳過這個提交"
+
+#: sequencer.c:3045
+msgid "there is nothing to skip"
+msgstr "沒有要跳過的"
+
+#: sequencer.c:3048
 #, c-format
-msgid "not a git repository: '%s'"
-msgstr "不是一個 git 版本庫:'%s'"
+msgid ""
+"have you committed already?\n"
+"try \"git %s --continue\""
+msgstr ""
+"您已經提交了嗎?\n"
+"試試 \"git %s --continue\""
 
-#: setup.c:855 setup.c:857 setup.c:888
+#: sequencer.c:3210 sequencer.c:4271
+msgid "cannot read HEAD"
+msgstr "不能讀取 HEAD"
+
+#: sequencer.c:3227
 #, c-format
-msgid "cannot chdir to '%s'"
-msgstr "不能切換目錄到 '%s'"
+msgid "unable to copy '%s' to '%s'"
+msgstr "無法複製 '%s' 至 '%s'"
 
-#: setup.c:860 setup.c:916 setup.c:926 setup.c:965 setup.c:973
-msgid "cannot come back to cwd"
-msgstr "無法返回目前工作目錄"
+#: sequencer.c:3235
+#, c-format
+msgid ""
+"You can amend the commit now, with\n"
+"\n"
+"  git commit --amend %s\n"
+"\n"
+"Once you are satisfied with your changes, run\n"
+"\n"
+"  git rebase --continue\n"
+msgstr ""
+"您現在可以修補這個提交,使用\n"
+"\n"
+"  git commit --amend %s\n"
+"\n"
+"當您對變更感到滿意,執行\n"
+"\n"
+"  git rebase --continue\n"
 
-#: setup.c:987
+#: sequencer.c:3245
 #, c-format
-msgid "failed to stat '%*s%s%s'"
-msgstr "取得 '%*s%s%s' 狀態(stat)失敗"
+msgid "Could not apply %s... %.*s"
+msgstr "不能應用 %s... %.*s"
 
-#: setup.c:1225
-msgid "Unable to read current working directory"
-msgstr "不能讀取目前工作目錄"
+#: sequencer.c:3252
+#, c-format
+msgid "Could not merge %.*s"
+msgstr "不能合併 %.*s"
 
-#: setup.c:1234 setup.c:1240
+#: sequencer.c:3266 sequencer.c:3270 builtin/difftool.c:640
 #, c-format
-msgid "cannot change to '%s'"
-msgstr "不能切換到 '%s'"
+msgid "could not copy '%s' to '%s'"
+msgstr "不能複製 '%s' 至 '%s'"
 
-#: setup.c:1245
+#: sequencer.c:3282
 #, c-format
-msgid "not a git repository (or any of the parent directories): %s"
-msgstr "不是一個 git 版本庫(或者任何父目錄):%s"
+msgid "Executing: %s\n"
+msgstr "執行:%s\n"
 
-#: setup.c:1251
+#  譯者:請維持前導空格
+#: sequencer.c:3297
 #, 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)."
+"execution failed: %s\n"
+"%sYou can fix the problem, and then run\n"
+"\n"
+"  git rebase --continue\n"
+"\n"
 msgstr ""
-"不是一個 git 版本庫(或者直至掛載點 %s 的任何父目錄)\n"
-"停止在檔案系統邊界(未設定 GIT_DISCOVERY_ACROSS_FILESYSTEM)。"
+"執行失敗:%s\n"
+"%s您可以改正該問題,然後執行\n"
+"\n"
+"  git rebase --continue\n"
+"\n"
 
-#: setup.c:1362
+#: sequencer.c:3303
+msgid "and made changes to the index and/or the working tree\n"
+msgstr "並且修改索引和/或工作區\n"
+
+#: sequencer.c:3309
 #, c-format
 msgid ""
-"problem with core.sharedRepository filemode value (0%.3o).\n"
-"The owner of files must always have read and write permissions."
+"execution succeeded: %s\n"
+"but left changes to the index and/or the working tree\n"
+"Commit or stash your changes, and then run\n"
+"\n"
+"  git rebase --continue\n"
+"\n"
 msgstr ""
-"參數 core.sharedRepository 的檔案屬性值有問題(0%.3o)。\n"
-"檔案所有者必須始終擁有讀寫權限。"
+"執行成功:%s\n"
+"但是在索引和/或工作區中存在變更\n"
+"提交或儲藏修改,然後執行\n"
+"\n"
+"  git rebase --continue\n"
+"\n"
 
-#: setup.c:1409
-msgid "open /dev/null or dup failed"
-msgstr "不能開啟或者複製 /dev/null"
+#: sequencer.c:3370
+#, c-format
+msgid "illegal label name: '%.*s'"
+msgstr "非法的標籤名稱:'%.*s'"
 
-#: setup.c:1424
-msgid "fork failed"
-msgstr "fork 失敗"
+#: sequencer.c:3424
+msgid "writing fake root commit"
+msgstr "寫偽根提交"
 
-#: setup.c:1429
-msgid "setsid failed"
-msgstr "setsid 失敗"
+#: sequencer.c:3429
+msgid "writing squash-onto"
+msgstr "寫入 squash-onto"
 
-#: sha1-file.c:480
+#: sequencer.c:3513
 #, c-format
-msgid "object directory %s does not exist; check .git/objects/info/alternates"
-msgstr "物件目錄 %s 不存在,檢查 .git/objects/info/alternates"
+msgid "could not resolve '%s'"
+msgstr "無法解析 '%s'"
+
+#: sequencer.c:3546
+msgid "cannot merge without a current revision"
+msgstr "沒有目前版本不能合併"
 
-#: sha1-file.c:531
+#: sequencer.c:3568
 #, c-format
-msgid "unable to normalize alternate object path: %s"
-msgstr "ç\84¡æ³\95è¦\8fç¯\84å\8c\96å\82\99ç\94¨ç\89©ä»¶è·¯å¾\91ï¼\9a%s"
+msgid "unable to parse '%.*s'"
+msgstr "ç\84¡æ³\95解æ\9e\90 '%.*s'"
 
-#: sha1-file.c:603
+#: sequencer.c:3577
 #, c-format
-msgid "%s: ignoring alternate object stores, nesting too deep"
-msgstr "%s:忽略備用物件庫,嵌套太深"
+msgid "nothing to merge: '%.*s'"
+msgstr "無可用合併:'%.*s'"
 
-#: sha1-file.c:610
+#: sequencer.c:3589
+msgid "octopus merge cannot be executed on top of a [new root]"
+msgstr "章魚合並不能在一個新的根提交上執行"
+
+#: sequencer.c:3605
 #, c-format
-msgid "unable to normalize object directory: %s"
-msgstr "無法規範化物件目錄: %s"
+msgid "could not get commit message of '%s'"
+msgstr "不能取得 '%s' 的提交說明"
 
-#: sha1-file.c:653
-msgid "unable to fdopen alternates lockfile"
-msgstr "無法 fdopen 取代鎖檔案"
+#: sequencer.c:3788
+#, c-format
+msgid "could not even attempt to merge '%.*s'"
+msgstr "甚至不能嘗試合併 '%.*s'"
 
-#: sha1-file.c:671
-msgid "unable to read alternates file"
-msgstr "無法讀取替代檔案"
+#: sequencer.c:3804
+msgid "merge: Unable to write new index file"
+msgstr "合併:無法寫入新索引檔案"
 
-#: sha1-file.c:678
-msgid "unable to move new alternates file into place"
-msgstr "無法將新的替代檔案移動到位"
+#: sequencer.c:3878
+msgid "Cannot autostash"
+msgstr "無法 autostash"
 
-#: sha1-file.c:713
+#: sequencer.c:3881
 #, c-format
-msgid "path '%s' does not exist"
-msgstr "路徑 '%s' 不存在"
+msgid "Unexpected stash response: '%s'"
+msgstr "意外的 stash 回應:'%s'"
 
-#: sha1-file.c:734
+#: sequencer.c:3887
 #, c-format
-msgid "reference repository '%s' as a linked checkout is not supported yet."
-msgstr "尚不支援將參考版本庫 '%s' 作為一個連結檢出。"
+msgid "Could not create directory for '%s'"
+msgstr "不能為 '%s' 建立目錄"
 
-#: sha1-file.c:740
+#: sequencer.c:3890
 #, c-format
-msgid "reference repository '%s' is not a local repository."
-msgstr "å\8f\83è\80\83ç\89\88æ\9c¬åº« '%s' ä¸\8dæ\98¯ä¸\80å\80\8bæ\9c¬æ©\9fç\89\88æ\9c¬åº«ã\80\82"
+msgid "Created autostash: %s\n"
+msgstr "建ç«\8bäº\86 autostashï¼\9a%s\n"
 
-#: sha1-file.c:746
+#: sequencer.c:3894
+msgid "could not reset --hard"
+msgstr "無法 reset --hard"
+
+#: sequencer.c:3919
 #, c-format
-msgid "reference repository '%s' is shallow"
-msgstr "å\8f\83è\80\83ç\89\88æ\9c¬åº« '%s' æ\98¯ä¸\80å\80\8bæ·ºè¤\87製"
+msgid "Applied autostash.\n"
+msgstr "å·²æ\87\89ç\94¨ autostashã\80\82\n"
 
-#: sha1-file.c:754
+#: sequencer.c:3931
 #, c-format
-msgid "reference repository '%s' is grafted"
-msgstr "參考版本庫 '%s' 已被移植"
+msgid "cannot store %s"
+msgstr "不能儲存 %s"
+
+#: sequencer.c:3934
+#, c-format
+msgid ""
+"%s\n"
+"Your changes are safe in the stash.\n"
+"You can run \"git stash pop\" or \"git stash drop\" at any time.\n"
+msgstr ""
+"%s\n"
+"您的修改安全地儲存在儲藏區中。\n"
+"您可以在任何時候執行 \"git stash pop\" 或 \"git stash drop\"。\n"
 
-#: sha1-file.c:814
-#, c-format
-msgid "invalid line while parsing alternate refs: %s"
-msgstr "解析備用引用時無效的行:%s"
+#: sequencer.c:3939
+msgid "Applying autostash resulted in conflicts."
+msgstr "因套用自動儲藏而導致衝突。"
 
-#: sha1-file.c:964
-#, c-format
-msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
-msgstr "嘗試 mmap %<PRIuMAX>,超過了最大值 %<PRIuMAX>"
+#: sequencer.c:3940
+msgid "Autostash exists; creating a new stash entry."
+msgstr "已有自動儲藏;建立新儲藏項目。"
 
-#: sha1-file.c:985
-msgid "mmap failed"
-msgstr "mmap 失敗"
+#: sequencer.c:4033 git-rebase--preserve-merges.sh:769
+msgid "could not detach HEAD"
+msgstr "不能分離開頭指標"
 
-#: sha1-file.c:1149
+#: sequencer.c:4048
 #, c-format
-msgid "object file %s is empty"
-msgstr "物件檔案 %s 為空"
+msgid "Stopped at HEAD\n"
+msgstr "停止在 HEAD\n"
 
-#: sha1-file.c:1284 sha1-file.c:2477
+#: sequencer.c:4050
 #, c-format
-msgid "corrupt loose object '%s'"
-msgstr "損壞的鬆散物件 '%s'"
+msgid "Stopped at %s\n"
+msgstr "停止在 %s\n"
 
-#: sha1-file.c:1286 sha1-file.c:2481
+#: sequencer.c:4058
 #, c-format
-msgid "garbage at end of loose object '%s'"
-msgstr "鬆散物件 '%s' 後面有垃圾資料"
-
-#: sha1-file.c:1328
-msgid "invalid object type"
-msgstr "無效的物件類型"
+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"
 
-#: sha1-file.c:1412
+#: sequencer.c:4104
 #, c-format
-msgid "unable to unpack %s header with --allow-unknown-type"
-msgstr "無法用 --allow-unknown-type 參數解開 %s 標頭訊息"
+msgid "Rebasing (%d/%d)%s"
+msgstr "正在重定基底 (%d/%d)%s"
 
-#: sha1-file.c:1415
+#: sequencer.c:4149
 #, c-format
-msgid "unable to unpack %s header"
-msgstr "無法解開 %s 頭部"
+msgid "Stopped at %s...  %.*s\n"
+msgstr "停止在 %s... %.*s\n"
 
-#: sha1-file.c:1421
+#: sequencer.c:4220
 #, c-format
-msgid "unable to parse %s header with --allow-unknown-type"
-msgstr "無法用 --allow-unknown-type 參數解析 %s 標頭訊息"
+msgid "unknown command %d"
+msgstr "未知指令 %d"
 
-#: sha1-file.c:1424
-#, c-format
-msgid "unable to parse %s header"
-msgstr "無法解析 %s 頭部"
+#: sequencer.c:4279
+msgid "could not read orig-head"
+msgstr "不能讀取 orig-head"
 
-#: sha1-file.c:1651
-#, c-format
-msgid "failed to read object %s"
-msgstr "讀取物件 %s 失敗"
+#: sequencer.c:4284
+msgid "could not read 'onto'"
+msgstr "不能讀取 'onto'"
 
-#: sha1-file.c:1655
+#: sequencer.c:4298
 #, c-format
-msgid "replacement %s not found for %s"
-msgstr "找不到 %2$s 的替代 %1$s"
+msgid "could not update HEAD to %s"
+msgstr "不能更新 HEAD 為 %s"
 
-#: sha1-file.c:1659
+#: sequencer.c:4358
 #, c-format
-msgid "loose object %s (stored in %s) is corrupt"
-msgstr "鬆散物件 %s(儲存在 %s)已損壞"
+msgid "Successfully rebased and updated %s.\n"
+msgstr "成功重定基底並更新 %s。\n"
 
-#: sha1-file.c:1663
-#, c-format
-msgid "packed object %s (stored in %s) is corrupt"
-msgstr "打包物件 %s(儲存在 %s)已損壞"
+#: sequencer.c:4391
+msgid "cannot rebase: You have unstaged changes."
+msgstr "不能重定基底:您有未暫存的變更。"
 
-#: sha1-file.c:1768
-#, c-format
-msgid "unable to write file %s"
-msgstr "無法寫檔案 %s"
+#: sequencer.c:4400
+msgid "cannot amend non-existing commit"
+msgstr "不能修補不存在的提交"
 
-#: sha1-file.c:1775
+#: sequencer.c:4402
 #, c-format
-msgid "unable to set permission to '%s'"
-msgstr "ç\84¡æ³\95ç\82º '%s' è¨­å®\9aæ¬\8aé\99\90"
+msgid "invalid file: '%s'"
+msgstr "ç\84¡æ\95\88æª\94æ¡\88ï¼\9a'%s'"
 
-#: sha1-file.c:1782
-msgid "file write error"
-msgstr "檔案寫錯誤"
+#: sequencer.c:4404
+#, c-format
+msgid "invalid contents: '%s'"
+msgstr "無效內容:'%s'"
 
-#: sha1-file.c:1802
-msgid "error when closing loose object file"
-msgstr "關閉鬆散物件檔案時發生錯誤"
+#: sequencer.c:4407
+msgid ""
+"\n"
+"You have uncommitted changes in your working tree. Please, commit them\n"
+"first and then run 'git rebase --continue' again."
+msgstr ""
+"\n"
+"您的工作區中有未提交的變更。請先提交然後再次執行 'git rebase --continue'。"
 
-#: sha1-file.c:1867
+#: sequencer.c:4443 sequencer.c:4482
 #, c-format
-msgid "insufficient permission for adding an object to repository database %s"
-msgstr "權限不足,無法在版本庫物件庫 %s 中新增物件"
+msgid "could not write file: '%s'"
+msgstr "不能寫入檔案:'%s'"
 
-#: sha1-file.c:1869
-msgid "unable to create temporary file"
-msgstr "無法建立暫存檔"
+#: sequencer.c:4498
+msgid "could not remove CHERRY_PICK_HEAD"
+msgstr "不能刪除 CHERRY_PICK_HEAD"
 
-#: sha1-file.c:1893
-msgid "unable to write loose object file"
-msgstr "不能寫鬆散物件檔案"
+#: sequencer.c:4505
+msgid "could not commit staged changes."
+msgstr "不能提交暫存的修改。"
 
-#: sha1-file.c:1899
+#: sequencer.c:4621
 #, c-format
-msgid "unable to deflate new object %s (%d)"
-msgstr "不能壓縮新物件 %s(%d)"
+msgid "%s: can't cherry-pick a %s"
+msgstr "%s:不能揀選一個%s"
 
-#: sha1-file.c:1903
+#: sequencer.c:4625
 #, c-format
-msgid "deflateEnd on object %s failed (%d)"
-msgstr "在物件 %s 上呼叫 deflateEnd 失敗(%d)"
+msgid "%s: bad revision"
+msgstr "%s:錯誤的版本"
 
-#: sha1-file.c:1907
-#, c-format
-msgid "confused by unstable object source data for %s"
-msgstr "被 %s 的不穩定物件源資料搞糊塗了"
+#: sequencer.c:4660
+msgid "can't revert as initial commit"
+msgstr "不能作為初始提交還原提交"
 
-#: sha1-file.c:1917 builtin/pack-objects.c:1086
-#, c-format
-msgid "failed utime() on %s"
-msgstr "在 %s 上呼叫 utime() 失敗"
+#: sequencer.c:5137
+msgid "make_script: unhandled options"
+msgstr "make_script:有未能處理的選項"
 
-#: sha1-file.c:1994
-#, c-format
-msgid "cannot read object for %s"
-msgstr "不能讀取物件 %s"
+#: sequencer.c:5140
+msgid "make_script: error preparing revisions"
+msgstr "make_script:準備版本時錯誤"
 
-#: sha1-file.c:2045
-msgid "corrupt commit"
-msgstr "損壞的提交"
+#: sequencer.c:5382 sequencer.c:5399
+msgid "nothing to do"
+msgstr "無事可做"
 
-#: sha1-file.c:2053
-msgid "corrupt tag"
-msgstr "損壞的標籤"
+#: sequencer.c:5418
+msgid "could not skip unnecessary pick commands"
+msgstr "無法跳過不必要的揀選"
 
-#: sha1-file.c:2153
-#, c-format
-msgid "read error while indexing %s"
-msgstr "索引 %s 時讀取錯誤"
+#: sequencer.c:5512
+msgid "the script was already rearranged."
+msgstr "腳本已經重新編排。"
 
-#: sha1-file.c:2156
+#: setup.c:133
 #, c-format
-msgid "short read while indexing %s"
-msgstr "索引 %s 時讀入不完整"
+msgid "'%s' is outside repository at '%s'"
+msgstr "'%s' 在位於 '%s' 的版本庫之外"
 
-#: sha1-file.c:2229 sha1-file.c:2239
+#: setup.c:185
 #, c-format
-msgid "%s: failed to insert into database"
-msgstr "%s:插入資料庫失敗"
+msgid ""
+"%s: no such path in the working tree.\n"
+"Use 'git <command> -- <path>...' to specify paths that do not exist locally."
+msgstr ""
+"%s:工作區中無此路徑。\n"
+"使用指令 'git <命令> -- <路徑>...' 來指定本機不存在的路徑。"
 
-#: sha1-file.c:2245
+#: setup.c:198
 #, c-format
-msgid "%s: unsupported file type"
-msgstr "%s:不支援的檔案類型"
+msgid ""
+"ambiguous argument '%s': unknown revision or path not in the working tree.\n"
+"Use '--' to separate paths from revisions, like this:\n"
+"'git <command> [<revision>...] -- [<file>...]'"
+msgstr ""
+"有歧義的參數 '%s':未知的版本或路徑不存在於工作區中。\n"
+"使用 '--' 來分隔版本和路徑,例如:\n"
+"'git <命令> [<版本>...] -- [<檔案>...]'"
 
-#: sha1-file.c:2269
+#: setup.c:264
 #, c-format
-msgid "%s is not a valid object"
-msgstr "%s 不是一個有效的物件"
+msgid "option '%s' must come before non-option arguments"
+msgstr "選項 '%s' 必須在其他非選項參數之前"
 
-#: sha1-file.c:2271
+#: setup.c:283
 #, c-format
-msgid "%s is not a valid '%s' object"
-msgstr "%s 不是一個有效的 '%s' 物件"
+msgid ""
+"ambiguous argument '%s': both revision and filename\n"
+"Use '--' to separate paths from revisions, like this:\n"
+"'git <command> [<revision>...] -- [<file>...]'"
+msgstr ""
+"有歧義的參數 '%s':可同時是版本和檔案\n"
+"使用 '--' 來分隔版本和路徑,例如:\n"
+"'git <命令> [<版本>...] -- [<檔案>...]'"
 
-#: sha1-file.c:2298 builtin/index-pack.c:192
-#, c-format
-msgid "unable to open %s"
-msgstr "不能開啟 %s"
+#: setup.c:419
+msgid "unable to set up work tree using invalid config"
+msgstr "無法使用無效設定來建立工作區"
 
-#: sha1-file.c:2488 sha1-file.c:2541
-#, c-format
-msgid "hash mismatch for %s (expected %s)"
-msgstr "%s 的雜湊值不符合(預期 %s)"
+#: setup.c:423
+msgid "this operation must be run in a work tree"
+msgstr "該動作必須在一個工作區中執行"
 
-#: sha1-file.c:2512
+#: setup.c:661
 #, c-format
-msgid "unable to mmap %s"
-msgstr "不能 mmap %s"
+msgid "Expected git repo version <= %d, found %d"
+msgstr "期望 git 版本庫版本 <= %d,卻得到 %d"
 
-#: sha1-file.c:2517
-#, c-format
-msgid "unable to unpack header of %s"
-msgstr "無法解壓縮 %s 的頭部"
+#: setup.c:669
+msgid "unknown repository extensions found:"
+msgstr "發現未知的版本庫擴展:"
 
-#: sha1-file.c:2523
-#, c-format
-msgid "unable to parse header of %s"
-msgstr "無法解析 %s 的頭部"
+#: setup.c:681
+msgid "repo version is 0, but v1-only extensions found:"
+msgstr "repo 的版本是 0,但找到只支援 v1 的擴充元件:"
 
-#: sha1-file.c:2534
+#: setup.c:700
 #, c-format
-msgid "unable to unpack contents of %s"
-msgstr "無法解壓縮 %s 的內容"
+msgid "error opening '%s'"
+msgstr "開啟 '%s' 發生錯誤"
 
-#: sha1-name.c:486
+#: setup.c:702
 #, c-format
-msgid "short SHA1 %s is ambiguous"
-msgstr "短 SHA1 %s 存在歧義"
+msgid "too large to be a .git file: '%s'"
+msgstr "檔案太大,無法作為 .git 檔案:'%s'"
 
-#: sha1-name.c:497
-msgid "The candidates are:"
-msgstr "候選者有:"
+#: setup.c:704
+#, c-format
+msgid "error reading %s"
+msgstr "讀取 %s 發生錯誤"
 
-#: sha1-name.c:796
-msgid ""
-"Git normally never creates a ref that ends with 40 hex characters\n"
-"because it will be ignored when you just specify 40-hex. These refs\n"
-"may be created by mistake. For example,\n"
-"\n"
-"  git switch -c $br $(git rev-parse ...)\n"
-"\n"
-"where \"$br\" is somehow empty and a 40-hex ref is created. Please\n"
-"examine these refs and maybe delete them. Turn this message off by\n"
-"running \"git config advice.objectNameWarning false\""
-msgstr ""
-"Git 通常不會建立以 40 個十六進位字元結尾的引用,\n"
-"因為當您只提供 40 個十六進位字元時,其將被忽略。\n"
-"這些引用可能被意外建立。例如:\n"
-"\n"
-"  git switch -c $br $(git rev-parse ...)\n"
-"\n"
-"當「$br」因為某些原因空白時,會建立出 40 位十六進位的引用。\n"
-"請檢查這些引用,並視需要刪除。執行\n"
-"「git config advice.objectNameWarning false」命令以關閉本訊息通知"
+#: setup.c:706
+#, c-format
+msgid "invalid gitfile format: %s"
+msgstr "無效的 gitfile 格式:%s"
 
-#: sha1-name.c:916
+#: setup.c:708
 #, c-format
-msgid "log for '%.*s' only goes back to %s"
-msgstr "'%.*s' 的日誌只能回到 %s"
+msgid "no path in gitfile: %s"
+msgstr "在 gitfile 中沒有路徑:%s"
 
-#: sha1-name.c:924
+#: setup.c:710
 #, c-format
-msgid "log for '%.*s' only has %d entries"
-msgstr "'%.*s' 的日誌只有 %d 個項目"
+msgid "not a git repository: %s"
+msgstr "不是一個 git 版本庫:%s"
 
-#: sha1-name.c:1702
+#: setup.c:812
 #, c-format
-msgid "path '%s' exists on disk, but not in '%.*s'"
-msgstr "磁碟上存在 '%s' 路徑,但不存在於 '%.*s'"
+msgid "'$%s' too big"
+msgstr "'$%s' 太大"
 
-#: sha1-name.c:1708
+#: setup.c:826
 #, c-format
-msgid ""
-"path '%s' exists, but not '%s'\n"
-"hint: Did you mean '%.*s:%s' aka '%.*s:./%s'?"
-msgstr ""
-"'%s' 路徑存在,但不是 '%s'\n"
-"提示:你在說 '%.*s:%s',即 '%.*s:./%s' 嗎?"
+msgid "not a git repository: '%s'"
+msgstr "不是一個 git 版本庫:'%s'"
 
-#: sha1-name.c:1717
+#: setup.c:855 setup.c:857 setup.c:888
 #, c-format
-msgid "path '%s' does not exist in '%.*s'"
-msgstr "'%s' 路徑不存在於 '%.*s'"
+msgid "cannot chdir to '%s'"
+msgstr "不能切換目錄到 '%s'"
+
+#: setup.c:860 setup.c:916 setup.c:926 setup.c:965 setup.c:973
+msgid "cannot come back to cwd"
+msgstr "無法返回目前工作目錄"
 
-#: sha1-name.c:1745
+#: setup.c:987
 #, c-format
-msgid ""
-"path '%s' is in the index, but not at stage %d\n"
-"hint: Did you mean ':%d:%s'?"
-msgstr ""
-"'%s' 路徑在索引,但不在 %d 暫存區\n"
-"提示:你在說 ':%d:%s' 嗎?"
+msgid "failed to stat '%*s%s%s'"
+msgstr "取得 '%*s%s%s' 狀態(stat)失敗"
+
+#: setup.c:1225
+msgid "Unable to read current working directory"
+msgstr "不能讀取目前工作目錄"
 
-#: sha1-name.c:1761
+#: setup.c:1234 setup.c:1240
+#, c-format
+msgid "cannot change to '%s'"
+msgstr "不能切換到 '%s'"
+
+#: setup.c:1245
+#, c-format
+msgid "not a git repository (or any of the parent directories): %s"
+msgstr "不是一個 git 版本庫(或者任何父目錄):%s"
+
+#: setup.c:1251
 #, c-format
 msgid ""
-"path '%s' is in the index, but not '%s'\n"
-"hint: Did you mean ':%d:%s' aka ':%d:./%s'?"
+"not a git repository (or any parent up to mount point %s)\n"
+"Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set)."
 msgstr ""
-"'%s' 路徑在索引,但不是 '%s'\n"
-"提示:你在說 ':%d:%s',即 ':%d:%s' 嗎?"
+"不是一個 git 版本庫(或者直至掛載點 %s 的任何父目錄)\n"
+"停止在檔案系統邊界(未設定 GIT_DISCOVERY_ACROSS_FILESYSTEM)。"
 
-#: sha1-name.c:1769
+#: setup.c:1362
 #, c-format
-msgid "path '%s' exists on disk, but not in the index"
-msgstr "磁碟上存在 '%s' 路徑,但不在索引中"
+msgid ""
+"problem with core.sharedRepository filemode value (0%.3o).\n"
+"The owner of files must always have read and write permissions."
+msgstr ""
+"參數 core.sharedRepository 的檔案屬性值有問題(0%.3o)。\n"
+"檔案所有者必須始終擁有讀寫權限。"
 
-#: sha1-name.c:1771
-#, c-format
-msgid "path '%s' does not exist (neither on disk nor in the index)"
-msgstr "'%s' 路徑不存在 (既不存在磁碟,也不存在索引)"
+#: setup.c:1409
+msgid "open /dev/null or dup failed"
+msgstr "不能開啟或者複製 /dev/null"
 
-#: sha1-name.c:1784
-msgid "relative path syntax can't be used outside working tree"
-msgstr "相對路徑與法不能用在工作區外"
+#: setup.c:1424
+msgid "fork failed"
+msgstr "fork 失敗"
 
-#: sha1-name.c:1922
-#, c-format
-msgid "invalid object name '%.*s'."
-msgstr "'%.*s' 物件名稱無效。"
+#: setup.c:1429
+msgid "setsid failed"
+msgstr "setsid 失敗"
 
 #. TRANSLATORS: IEC 80000-13:2008 gibibyte
 #: strbuf.c:848
@@ -8267,7 +8527,7 @@ msgid_plural "%u bytes/s"
 msgstr[0] "%u 位元組/秒"
 
 #: strbuf.c:1166 wrapper.c:199 wrapper.c:369 builtin/am.c:719
-#: builtin/rebase.c:864
+#: builtin/rebase.c:866
 #, c-format
 msgid "could not open '%s' for writing"
 msgstr "無法開啟 '%s' 進行寫入"
@@ -8329,60 +8589,60 @@ msgstr "位於未檢出的子模組 '%s'"
 msgid "Pathspec '%s' is in submodule '%.*s'"
 msgstr "路徑規格 '%s' 在子模組 '%.*s' 中"
 
-#: submodule.c:434
+#: submodule.c:435
 #, c-format
 msgid "bad --ignore-submodules argument: %s"
 msgstr "無效 --ignore-submodules 參數:%s"
 
-#: submodule.c:816
+#: submodule.c:817
 #, c-format
 msgid ""
 "Submodule in commit %s at path: '%s' collides with a submodule named the "
 "same. Skipping it."
 msgstr "%s 提交位於路徑:'%s' 的子模組與同名的子模組衝突。跳過。"
 
-#: submodule.c:919
+#: submodule.c:920
 #, c-format
 msgid "submodule entry '%s' (%s) is a %s, not a commit"
 msgstr "子模組條目 '%s'(%s)是一個 %s,不是一個提交"
 
-#: submodule.c:1004
+#: submodule.c:1005
 #, c-format
 msgid ""
 "Could not run 'git rev-list <commits> --not --remotes -n 1' command in "
 "submodule %s"
 msgstr "無法在 %s 子模組執行 'git rev-list <提交> --not --remotes -n 1' 命令"
 
-#: submodule.c:1127
+#: submodule.c:1128
 #, c-format
 msgid "process for submodule '%s' failed"
 msgstr "處理 '%s' 子模組失敗"
 
-#: submodule.c:1156 builtin/branch.c:680 builtin/submodule--helper.c:2469
+#: submodule.c:1157 builtin/branch.c:689 builtin/submodule--helper.c:2469
 msgid "Failed to resolve HEAD as a valid ref."
 msgstr "無法將 HEAD 解析為有效引用。"
 
-#: submodule.c:1167
+#: submodule.c:1168
 #, c-format
 msgid "Pushing submodule '%s'\n"
 msgstr "正在推送 '%s' 子模組\n"
 
-#: submodule.c:1170
+#: submodule.c:1171
 #, c-format
 msgid "Unable to push submodule '%s'\n"
 msgstr "無法推送 '%s' 子模組\n"
 
-#: submodule.c:1462
+#: submodule.c:1463
 #, c-format
 msgid "Fetching submodule %s%s\n"
 msgstr "正在抓取 %s%s 子模組\n"
 
-#: submodule.c:1492
+#: submodule.c:1497
 #, c-format
 msgid "Could not access submodule '%s'\n"
 msgstr "無法存取子模組 '%s'\n"
 
-#: submodule.c:1646
+#: submodule.c:1652
 #, c-format
 msgid ""
 "Errors during submodule fetch:\n"
@@ -8391,77 +8651,77 @@ msgstr ""
 "抓取子模組時發生錯誤:\n"
 "%s"
 
-#: submodule.c:1671
+#: submodule.c:1677
 #, c-format
 msgid "'%s' not recognized as a git repository"
 msgstr "無法將 '%s' 識別為一個 git 版本庫"
 
-#: submodule.c:1688
+#: submodule.c:1694
 #, c-format
 msgid "Could not run 'git status --porcelain=2' in submodule %s"
 msgstr "無法在 %s 子模組執行 'git status --porcelain=2'"
 
-#: submodule.c:1729
+#: submodule.c:1735
 #, c-format
 msgid "'git status --porcelain=2' failed in submodule %s"
 msgstr "%s 子模組執行 'git status --porcelain=2' 失敗"
 
-#: submodule.c:1804
+#: submodule.c:1810
 #, c-format
 msgid "could not start 'git status' in submodule '%s'"
 msgstr "無法在子模組 '%s' 中啟動 'git status'"
 
-#: submodule.c:1817
+#: submodule.c:1823
 #, c-format
 msgid "could not run 'git status' in submodule '%s'"
 msgstr "無法在子模組 '%s' 中執行 'git status'"
 
-#: submodule.c:1832
+#: submodule.c:1838
 #, c-format
 msgid "Could not unset core.worktree setting in submodule '%s'"
 msgstr "無法在子模組 '%s' 中取消 core.worktree 的設定"
 
-#: submodule.c:1859 submodule.c:2169
+#: submodule.c:1865 submodule.c:2175
 #, c-format
 msgid "could not recurse into submodule '%s'"
 msgstr "無法遞迴子模組路徑 '%s'"
 
-#: submodule.c:1880
+#: submodule.c:1886
 msgid "could not reset submodule index"
 msgstr "無法重設子模組的索引"
 
-#: submodule.c:1922
+#: submodule.c:1928
 #, c-format
 msgid "submodule '%s' has dirty index"
 msgstr "子模組 '%s' 中有髒索引"
 
-#: submodule.c:1974
+#: submodule.c:1980
 #, c-format
 msgid "Submodule '%s' could not be updated."
 msgstr "子模組 '%s' 無法被更新。"
 
-#: submodule.c:2042
+#: submodule.c:2048
 #, c-format
 msgid "submodule git dir '%s' is inside git dir '%.*s'"
 msgstr "「%s」子模組 git 目錄在「%.*s」git 路徑中"
 
-#: submodule.c:2063
+#: submodule.c:2069
 #, c-format
 msgid ""
 "relocate_gitdir for submodule '%s' with more than one worktree not supported"
 msgstr "不支援對有多個工作區的子模組 '%s' 執行 relocate_gitdir"
 
-#: submodule.c:2075 submodule.c:2134
+#: submodule.c:2081 submodule.c:2140
 #, c-format
 msgid "could not lookup name for submodule '%s'"
 msgstr "不能查詢子模組 '%s' 的名稱"
 
-#: submodule.c:2079
+#: submodule.c:2085
 #, c-format
 msgid "refusing to move '%s' into an existing git dir"
 msgstr "拒絕移動「%s」至現存 git 目錄"
 
-#: submodule.c:2086
+#: submodule.c:2092
 #, c-format
 msgid ""
 "Migrating git directory of '%s%s' from\n"
@@ -8472,11 +8732,11 @@ msgstr ""
 "'%s' 遷移至\n"
 "'%s'\n"
 
-#: submodule.c:2214
+#: submodule.c:2220
 msgid "could not start ls-files in .."
 msgstr "無法在 .. 中啟動 ls-files"
 
-#: submodule.c:2254
+#: submodule.c:2260
 #, c-format
 msgid "ls-tree returned unexpected return code %d"
 msgstr "ls-tree 返回未知返回值 %d"
@@ -8507,7 +8767,7 @@ msgstr "簽名 '%.*s' 的鍵為空"
 msgid "could not read input file '%s'"
 msgstr "不能讀取輸入檔案 '%s'"
 
-#: trailer.c:751
+#: trailer.c:751 builtin/mktag.c:91
 msgid "could not read from stdin"
 msgstr "不能自標準輸入讀取"
 
@@ -8577,7 +8837,7 @@ msgstr "不能執行 fast-import"
 msgid "error while running fast-import"
 msgstr "執行 fast-import 發生錯誤"
 
-#: transport-helper.c:549 transport-helper.c:1236
+#: transport-helper.c:549 transport-helper.c:1237
 #, c-format
 msgid "could not read ref %s"
 msgstr "無法讀取引用 %s"
@@ -8595,7 +8855,7 @@ msgstr "協定不支援設定遠端服務路徑"
 msgid "invalid remote service path"
 msgstr "無效的遠端服務路徑"
 
-#: transport-helper.c:661 transport.c:1446
+#: transport-helper.c:661 transport.c:1447
 msgid "operation not supported by protocol"
 msgstr "協定不支援該動作"
 
@@ -8674,52 +8934,52 @@ msgstr ""
 "沒有共同的引用並且也沒有指定,什麼也不會做。\n"
 "您或許得指定一個分支。\n"
 
-#: transport-helper.c:1213
+#: transport-helper.c:1214
 #, c-format
 msgid "unsupported object format '%s'"
 msgstr "不支援的物件格式「%s」"
 
-#: transport-helper.c:1222
+#: transport-helper.c:1223
 #, c-format
 msgid "malformed response in ref list: %s"
 msgstr "引用列表中格式錯誤的回應:%s"
 
-#: transport-helper.c:1374
+#: transport-helper.c:1375
 #, c-format
 msgid "read(%s) failed"
 msgstr "讀取(%s)失敗"
 
-#: transport-helper.c:1401
+#: transport-helper.c:1402
 #, c-format
 msgid "write(%s) failed"
 msgstr "寫(%s)失敗"
 
-#: transport-helper.c:1450
+#: transport-helper.c:1451
 #, c-format
 msgid "%s thread failed"
 msgstr "%s 執行緒失敗"
 
-#: transport-helper.c:1454
+#: transport-helper.c:1455
 #, c-format
 msgid "%s thread failed to join: %s"
 msgstr "%s 執行緒等待失敗:%s"
 
-#: transport-helper.c:1473 transport-helper.c:1477
+#: transport-helper.c:1474 transport-helper.c:1478
 #, c-format
 msgid "can't start thread for copying data: %s"
 msgstr "不能啟動執行緒來複製資料:%s"
 
-#: transport-helper.c:1514
+#: transport-helper.c:1515
 #, c-format
 msgid "%s process failed to wait"
 msgstr "%s 進程等待失敗"
 
-#: transport-helper.c:1518
+#: transport-helper.c:1519
 #, c-format
 msgid "%s process failed"
 msgstr "%s 進程失敗"
 
-#: transport-helper.c:1536 transport-helper.c:1545
+#: transport-helper.c:1537 transport-helper.c:1546
 msgid "can't start thread for copying data"
 msgstr "不能啟動執行緒來複製資料"
 
@@ -8806,23 +9066,23 @@ msgstr ""
 msgid "Aborting."
 msgstr "正在終止。"
 
-#: transport.c:1315
+#: transport.c:1316
 msgid "failed to push all needed submodules"
 msgstr "不能推送全部需要的子模組"
 
-#: tree-walk.c:32
+#: tree-walk.c:33
 msgid "too-short tree object"
 msgstr "太短的樹狀物件"
 
-#: tree-walk.c:38
+#: tree-walk.c:39
 msgid "malformed mode in tree entry"
 msgstr "樹狀物件中的條目模式錯誤"
 
-#: tree-walk.c:42
+#: tree-walk.c:43
 msgid "empty filename in tree entry"
 msgstr "樹狀物件條目中空的檔案名"
 
-#: tree-walk.c:117
+#: tree-walk.c:118
 msgid "too-short tree file"
 msgstr "太短的樹檔案"
 
@@ -9071,7 +9331,7 @@ msgstr ""
 msgid "Updating index flags"
 msgstr "正在更新索引旗標"
 
-#: upload-pack.c:1550
+#: upload-pack.c:1543
 msgid "expected flush after fetch arguments"
 msgstr "在 fetch 引數應為一個 flush 包"
 
@@ -9108,72 +9368,102 @@ msgstr "無效的 '..' 路徑片段"
 msgid "Fetching objects"
 msgstr "正在抓取物件"
 
-#: worktree.c:236 builtin/am.c:2103
+#: worktree.c:238 builtin/am.c:2103
 #, c-format
 msgid "failed to read '%s'"
 msgstr "讀取 '%s' 失敗"
 
-#: worktree.c:283
+#: worktree.c:304
 #, c-format
 msgid "'%s' at main working tree is not the repository directory"
 msgstr "在主工作區的 '%s' 不是版本庫目錄"
 
-#: worktree.c:294
+#: worktree.c:315
 #, c-format
 msgid "'%s' file does not contain absolute path to the working tree location"
 msgstr "檔案 '%s' 不包含工作區的絕對路徑"
 
-#: worktree.c:306
+#: worktree.c:327
 #, c-format
 msgid "'%s' does not exist"
 msgstr "'%s' 不存在"
 
-#: worktree.c:312
+#: worktree.c:333
 #, c-format
 msgid "'%s' is not a .git file, error code %d"
 msgstr "'%s' 不是一個 .git 檔案,錯誤碼 %d"
 
-#: worktree.c:321
+#: worktree.c:342
 #, c-format
 msgid "'%s' does not point back to '%s'"
 msgstr "'%s' 沒有指回到 '%s'"
 
-#: worktree.c:587
+#: worktree.c:608
 msgid "not a directory"
 msgstr "不是目錄"
 
-#: worktree.c:596
+#: worktree.c:617
 msgid ".git is not a file"
 msgstr ".git 不是檔案"
 
-#: worktree.c:598
+#: worktree.c:619
 msgid ".git file broken"
 msgstr ".git 檔案損毀"
 
-#: worktree.c:600
+#: worktree.c:621
 msgid ".git file incorrect"
 msgstr ".git 檔案不正確"
 
-#: worktree.c:670
+#: worktree.c:727
 msgid "not a valid path"
 msgstr "非有效路徑"
 
-#: worktree.c:676
+#: worktree.c:733
 msgid "unable to locate repository; .git is not a file"
 msgstr "無法定位版本庫;.git 不是檔案"
 
-#: worktree.c:679
+#: worktree.c:737
+msgid "unable to locate repository; .git file does not reference a repository"
+msgstr "無法定位版本庫;.git 檔案未參考版本庫"
+
+#: worktree.c:741
 msgid "unable to locate repository; .git file broken"
 msgstr "無法定位版本庫;.git 檔案損壞"
 
-#: worktree.c:685
+#: worktree.c:747
 msgid "gitdir unreadable"
 msgstr "無法讀取 gitdir"
 
-#: worktree.c:689
+#: worktree.c:751
 msgid "gitdir incorrect"
 msgstr "不正確的 gitdir"
 
+#: worktree.c:776
+msgid "not a valid directory"
+msgstr "非有效目錄"
+
+#: worktree.c:782
+msgid "gitdir file does not exist"
+msgstr "找不到 gitdir 檔案"
+
+#: worktree.c:787 worktree.c:796
+#, c-format
+msgid "unable to read gitdir file (%s)"
+msgstr "無法讀取 gitdir 檔案 (%s)"
+
+#: worktree.c:806
+#, c-format
+msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
+msgstr "讀取過短(預期有 %<PRIuMAX> 位元組,只讀到 %<PRIuMAX>)"
+
+#: worktree.c:814
+msgid "invalid gitdir file"
+msgstr "gitdir 檔案無效"
+
+#: worktree.c:822
+msgid "gitdir file points to non-existent location"
+msgstr "gitdir 檔案指向的位置不存在"
+
 #: wrapper.c:197 wrapper.c:367
 #, c-format
 msgid "could not open '%s' for reading and writing"
@@ -9223,11 +9513,11 @@ msgstr "  (酌情使用 \"git add/rm <檔案>...\" 標記解決方案)"
 msgid "  (use \"git rm <file>...\" to mark resolution)"
 msgstr "  (使用 \"git rm <檔案>...\" 標記解決方案)"
 
-#: wt-status.c:211 wt-status.c:1070
+#: wt-status.c:211 wt-status.c:1072
 msgid "Changes to be committed:"
 msgstr "要提交的變更:"
 
-#: wt-status.c:234 wt-status.c:1079
+#: wt-status.c:234 wt-status.c:1081
 msgid "Changes not staged for commit:"
 msgstr "尚未暫存以備提交的變更:"
 
@@ -9333,21 +9623,21 @@ msgstr "修改的內容, "
 msgid "untracked content, "
 msgstr "未追蹤的內容, "
 
-#: wt-status.c:903
+#: wt-status.c:905
 #, c-format
 msgid "Your stash currently has %d entry"
 msgid_plural "Your stash currently has %d entries"
 msgstr[0] "您的儲藏區目前有 %d 條紀錄"
 
-#: wt-status.c:934
+#: wt-status.c:936
 msgid "Submodules changed but not updated:"
 msgstr "子模組已修改但尚未更新:"
 
-#: wt-status.c:936
+#: wt-status.c:938
 msgid "Submodule changes to be committed:"
 msgstr "要提交的子模組變更:"
 
-#: wt-status.c:1018
+#: wt-status.c:1020
 msgid ""
 "Do not modify or remove the line above.\n"
 "Everything below it will be ignored."
@@ -9355,7 +9645,7 @@ msgstr ""
 "不要改動或刪除上面的一行。\n"
 "其下所有內容都將被忽略。"
 
-#: wt-status.c:1110
+#: wt-status.c:1112
 #, c-format
 msgid ""
 "\n"
@@ -9366,270 +9656,278 @@ msgstr ""
 "花了 %.2f 秒才計算出分支的領先/落後範圍。\n"
 "為避免,您可以使用 '--no-ahead-behind'。\n"
 
-#: wt-status.c:1140
+#: wt-status.c:1142
 msgid "You have unmerged paths."
 msgstr "您有尚未合併的路徑。"
 
 #  譯者:請維持前導空格
-#: wt-status.c:1143
+#: wt-status.c:1145
 msgid "  (fix conflicts and run \"git commit\")"
 msgstr "  (解決衝突並執行 \"git commit\")"
 
 #  譯者:請維持前導空格
-#: wt-status.c:1145
+#: wt-status.c:1147
 msgid "  (use \"git merge --abort\" to abort the merge)"
 msgstr "  (使用 \"git merge --abort\" 終止合併)"
 
-#: wt-status.c:1149
+#: wt-status.c:1151
 msgid "All conflicts fixed but you are still merging."
 msgstr "所有衝突已解決但您仍處於合併中。"
 
 #  譯者:請維持前導空格
-#: wt-status.c:1152
+#: wt-status.c:1154
 msgid "  (use \"git commit\" to conclude merge)"
 msgstr "  (使用 \"git commit\" 結束合併)"
 
-#: wt-status.c:1161
+#: wt-status.c:1163
 msgid "You are in the middle of an am session."
 msgstr "您正處於 am 動作過程中。"
 
-#: wt-status.c:1164
+#: wt-status.c:1166
 msgid "The current patch is empty."
 msgstr "目前的修補檔為空。"
 
 #  譯者:請維持前導空格
-#: wt-status.c:1168
+#: wt-status.c:1170
 msgid "  (fix conflicts and then run \"git am --continue\")"
 msgstr "  (解決衝突,然後執行 \"git am --continue\")"
 
 #  譯者:請維持前導空格
-#: wt-status.c:1170
+#: wt-status.c:1172
 msgid "  (use \"git am --skip\" to skip this patch)"
 msgstr "  (使用 \"git am --skip\" 跳過此修補檔)"
 
 #  譯者:請維持前導空格
-#: wt-status.c:1172
+#: wt-status.c:1174
 msgid "  (use \"git am --abort\" to restore the original branch)"
 msgstr "  (使用 \"git am --abort\" 復原原有分支)"
 
-#: wt-status.c:1305
+#: wt-status.c:1307
 msgid "git-rebase-todo is missing."
 msgstr "git-rebase-todo 遺失。"
 
-#: wt-status.c:1307
+#: wt-status.c:1309
 msgid "No commands done."
 msgstr "沒有指令被執行。"
 
-#: wt-status.c:1310
+#: wt-status.c:1312
 #, c-format
 msgid "Last command done (%d command done):"
 msgid_plural "Last commands done (%d commands done):"
 msgstr[0] "最後一條指令已完成(%d 條指令被執行):"
 
-#: wt-status.c:1321
+#: wt-status.c:1323
 #, c-format
 msgid "  (see more in file %s)"
 msgstr "  (更多參見檔案 %s)"
 
-#: wt-status.c:1326
+#: wt-status.c:1328
 msgid "No commands remaining."
 msgstr "未剩下任何指令。"
 
-#: wt-status.c:1329
+#: wt-status.c:1331
 #, 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:1337
+#: wt-status.c:1339
 msgid "  (use \"git rebase --edit-todo\" to view and edit)"
 msgstr "  (使用 \"git rebase --edit-todo\" 來檢視和編輯)"
 
-#: wt-status.c:1349
+#: wt-status.c:1351
 #, c-format
 msgid "You are currently rebasing branch '%s' on '%s'."
 msgstr "您在執行將分支 '%s' 重定基底到 '%s' 的動作。"
 
-#: wt-status.c:1354
+#: wt-status.c:1356
 msgid "You are currently rebasing."
 msgstr "您在執行重定基底動作。"
 
 #  譯者:請維持前導空格
-#: wt-status.c:1367
+#: wt-status.c:1369
 msgid "  (fix conflicts and then run \"git rebase --continue\")"
 msgstr "  (解決衝突,然後執行 \"git rebase --continue\")"
 
 #  譯者:請維持前導空格
-#: wt-status.c:1369
+#: wt-status.c:1371
 msgid "  (use \"git rebase --skip\" to skip this patch)"
 msgstr "  (使用 \"git rebase --skip\" 跳過此修補檔)"
 
 #  譯者:請維持前導空格
-#: wt-status.c:1371
+#: wt-status.c:1373
 msgid "  (use \"git rebase --abort\" to check out the original branch)"
 msgstr "  (使用 \"git rebase --abort\" 以檢出原有分支)"
 
 #  譯者:請維持前導空格
-#: wt-status.c:1378
+#: wt-status.c:1380
 msgid "  (all conflicts fixed: run \"git rebase --continue\")"
 msgstr "  (所有衝突已解決:執行 \"git rebase --continue\")"
 
-#: wt-status.c:1382
+#: wt-status.c:1384
 #, c-format
 msgid ""
 "You are currently splitting a commit while rebasing branch '%s' on '%s'."
 msgstr "您在執行將分支 '%s' 重定基底到 '%s' 的動作時分割提交。"
 
-#: wt-status.c:1387
+#: wt-status.c:1389
 msgid "You are currently splitting a commit during a rebase."
 msgstr "您在執行重定基底動作時分割提交。"
 
 #  譯者:請維持前導空格
-#: wt-status.c:1390
+#: wt-status.c:1392
 msgid "  (Once your working directory is clean, run \"git rebase --continue\")"
 msgstr "  (一旦您工作目錄提交乾淨後,執行 \"git rebase --continue\")"
 
-#: wt-status.c:1394
+#: wt-status.c:1396
 #, c-format
 msgid "You are currently editing a commit while rebasing branch '%s' on '%s'."
 msgstr "您在執行將分支 '%s' 重定基底到 '%s' 的動作時編輯提交。"
 
-#: wt-status.c:1399
+#: wt-status.c:1401
 msgid "You are currently editing a commit during a rebase."
 msgstr "您在執行重定基底動作時編輯提交。"
 
 #  譯者:請維持前導空格
-#: wt-status.c:1402
+#: wt-status.c:1404
 msgid "  (use \"git commit --amend\" to amend the current commit)"
 msgstr "  (使用 \"git commit --amend\" 修補目前提交)"
 
 #  譯者:請維持前導空格
-#: wt-status.c:1404
+#: wt-status.c:1406
 msgid ""
 "  (use \"git rebase --continue\" once you are satisfied with your changes)"
 msgstr "  (當您對您的修改滿意後執行 \"git rebase --continue\")"
 
-#: wt-status.c:1415
+#: wt-status.c:1417
 msgid "Cherry-pick currently in progress."
 msgstr "揀選動作正在進行中。"
 
-#: wt-status.c:1418
+#: wt-status.c:1420
 #, c-format
 msgid "You are currently cherry-picking commit %s."
 msgstr "您在執行揀選提交 %s 的動作。"
 
 #  譯者:請維持前導空格
-#: wt-status.c:1425
+#: wt-status.c:1427
 msgid "  (fix conflicts and run \"git cherry-pick --continue\")"
 msgstr "  (解決衝突並執行 \"git cherry-pick --continue\")"
 
 #  譯者:請維持前導空格
-#: wt-status.c:1428
+#: wt-status.c:1430
 msgid "  (run \"git cherry-pick --continue\" to continue)"
 msgstr "  (執行 \"git cherry-pick --continue\" 以繼續)"
 
 #  譯者:請維持前導空格
-#: wt-status.c:1431
+#: wt-status.c:1433
 msgid "  (all conflicts fixed: run \"git cherry-pick --continue\")"
 msgstr "  (所有衝突已解決:執行 \"git cherry-pick --continue\")"
 
 #  譯者:請維持前導空格
-#: wt-status.c:1433
+#: wt-status.c:1435
 msgid "  (use \"git cherry-pick --skip\" to skip this patch)"
 msgstr "  (使用 \"git cherry-pick --skip\" 跳過此修補檔)"
 
 #  譯者:請維持前導空格
-#: wt-status.c:1435
+#: wt-status.c:1437
 msgid "  (use \"git cherry-pick --abort\" to cancel the cherry-pick operation)"
 msgstr "  (使用 \"git cherry-pick --abort\" 以取消揀選動作)"
 
-#: wt-status.c:1445
+#: wt-status.c:1447
 msgid "Revert currently in progress."
 msgstr "還原動作正在行中。"
 
-#: wt-status.c:1448
+#: wt-status.c:1450
 #, c-format
 msgid "You are currently reverting commit %s."
 msgstr "您在執行反轉提交 %s 的動作。"
 
 #  譯者:請維持前導空格
-#: wt-status.c:1454
+#: wt-status.c:1456
 msgid "  (fix conflicts and run \"git revert --continue\")"
 msgstr "  (解決衝突並執行 \"git revert --continue\")"
 
 #  譯者:請維持前導空格
-#: wt-status.c:1457
+#: wt-status.c:1459
 msgid "  (run \"git revert --continue\" to continue)"
 msgstr "  (執行 \"git revert --continue\" 以繼續)"
 
 #  譯者:請維持前導空格
-#: wt-status.c:1460
+#: wt-status.c:1462
 msgid "  (all conflicts fixed: run \"git revert --continue\")"
 msgstr "  (所有衝突已解決:執行 \"git revert --continue\")"
 
 #  譯者:請維持前導空格
-#: wt-status.c:1462
+#: wt-status.c:1464
 msgid "  (use \"git revert --skip\" to skip this patch)"
 msgstr "  (使用 \"git revert --skip\" 跳過此修補檔)"
 
 #  譯者:請維持前導空格
-#: wt-status.c:1464
+#: wt-status.c:1466
 msgid "  (use \"git revert --abort\" to cancel the revert operation)"
 msgstr "  (使用 \"git revert --abort\" 以取消反轉提交動作)"
 
-#: wt-status.c:1474
+#: wt-status.c:1476
 #, c-format
 msgid "You are currently bisecting, started from branch '%s'."
-msgstr "您在執行從分支 '%s' 開始的二分尋找動作。"
+msgstr "您在執行從分支 '%s' 開始的二分搜尋動作。"
 
-#: wt-status.c:1478
+#: wt-status.c:1480
 msgid "You are currently bisecting."
-msgstr "您在執行二分尋找動作。"
+msgstr "您在執行二分搜尋動作。"
 
 #  譯者:請維持前導空格
-#: wt-status.c:1481
+#: wt-status.c:1483
 msgid "  (use \"git bisect reset\" to get back to the original branch)"
 msgstr "  (使用 \"git bisect reset\" 檢出原有分支)"
 
-#: wt-status.c:1492
+#: wt-status.c:1494
 #, c-format
 msgid "You are in a sparse checkout with %d%% of tracked files present."
 msgstr "您處於稀疏簽出狀態,包含 %d%% 的追蹤檔案。"
 
-#: wt-status.c:1731
+#: wt-status.c:1733
 msgid "On branch "
 msgstr "位於分支 "
 
-#: wt-status.c:1738
+#: wt-status.c:1740
 msgid "interactive rebase in progress; onto "
 msgstr "互動式重定基底動作正在進行中;至 "
 
-#: wt-status.c:1740
+#: wt-status.c:1742
 msgid "rebase in progress; onto "
 msgstr "重定基底動作正在進行中;至 "
 
-#: wt-status.c:1750
+#: wt-status.c:1747
+msgid "HEAD detached at "
+msgstr "開頭指標分離於 "
+
+#: wt-status.c:1749
+msgid "HEAD detached from "
+msgstr "開頭指標分離自 "
+
+#: wt-status.c:1752
 msgid "Not currently on any branch."
 msgstr "目前不在任何分支上。"
 
-#: wt-status.c:1767
+#: wt-status.c:1769
 msgid "Initial commit"
 msgstr "初始提交"
 
-#: wt-status.c:1768
+#: wt-status.c:1770
 msgid "No commits yet"
 msgstr "尚無提交"
 
-#: wt-status.c:1782
+#: wt-status.c:1784
 msgid "Untracked files"
 msgstr "未追蹤的檔案"
 
-#: wt-status.c:1784
+#: wt-status.c:1786
 msgid "Ignored files"
 msgstr "忽略的檔案"
 
-#: wt-status.c:1788
+#: wt-status.c:1790
 #, c-format
 msgid ""
 "It took %.2f seconds to enumerate untracked files. 'status -uno'\n"
@@ -9639,97 +9937,97 @@ msgstr ""
 "耗費了 %.2f 秒以枚舉未追蹤的檔案。'status -uno' 也許能提高速度,\n"
 "但您需要小心不要忘了新增新檔案(參見 'git help status')。"
 
-#: wt-status.c:1794
+#: wt-status.c:1796
 #, c-format
 msgid "Untracked files not listed%s"
 msgstr "未追蹤的檔案沒有列出%s"
 
 #  譯者:中文字串拼接,可刪除前導空格
-#: wt-status.c:1796
+#: wt-status.c:1798
 msgid " (use -u option to show untracked files)"
 msgstr " (使用 -u 參數顯示未追蹤的檔案)"
 
-#: wt-status.c:1802
+#: wt-status.c:1804
 msgid "No changes"
 msgstr "沒有修改"
 
-#: wt-status.c:1807
+#: wt-status.c:1809
 #, c-format
 msgid "no changes added to commit (use \"git add\" and/or \"git commit -a\")\n"
 msgstr "修改尚未加入提交(使用 \"git add\" 和/或 \"git commit -a\")\n"
 
-#: wt-status.c:1811
+#: wt-status.c:1813
 #, c-format
 msgid "no changes added to commit\n"
 msgstr "修改尚未加入提交\n"
 
-#: wt-status.c:1815
+#: wt-status.c:1817
 #, c-format
 msgid ""
 "nothing added to commit but untracked files present (use \"git add\" to "
 "track)\n"
 msgstr "提交為空,但是存在尚未追蹤的檔案(使用 \"git add\" 建立追蹤)\n"
 
-#: wt-status.c:1819
+#: wt-status.c:1821
 #, c-format
 msgid "nothing added to commit but untracked files present\n"
 msgstr "提交為空,但是存在尚未追蹤的檔案\n"
 
 #  譯者:中文字串拼接,可刪除前導空格
-#: wt-status.c:1823
+#: wt-status.c:1825
 #, c-format
 msgid "nothing to commit (create/copy files and use \"git add\" to track)\n"
 msgstr "無檔案要提交(建立/複製檔案並使用 \"git add\" 建立追蹤)\n"
 
-#: wt-status.c:1827 wt-status.c:1833
+#: wt-status.c:1829 wt-status.c:1835
 #, c-format
 msgid "nothing to commit\n"
 msgstr "無檔案要提交\n"
 
 #  譯者:中文字串拼接,可刪除前導空格
-#: wt-status.c:1830
+#: wt-status.c:1832
 #, c-format
 msgid "nothing to commit (use -u to show untracked files)\n"
 msgstr "無檔案要提交(使用 -u 顯示未追蹤的檔案)\n"
 
 #  譯者:中文字串拼接,可刪除前導空格
-#: wt-status.c:1835
+#: wt-status.c:1837
 #, c-format
 msgid "nothing to commit, working tree clean\n"
 msgstr "沒有要提交的檔案,工作區為乾淨狀態\n"
 
-#: wt-status.c:1940
+#: wt-status.c:1942
 msgid "No commits yet on "
 msgstr "尚無提交在 "
 
-#: wt-status.c:1944
+#: wt-status.c:1946
 msgid "HEAD (no branch)"
 msgstr "HEAD(非分支)"
 
-#: wt-status.c:1975
+#: wt-status.c:1977
 msgid "different"
 msgstr "不同"
 
 #  譯者:請維持句尾空格
-#: wt-status.c:1977 wt-status.c:1985
+#: wt-status.c:1979 wt-status.c:1987
 msgid "behind "
 msgstr "落後 "
 
-#: wt-status.c:1980 wt-status.c:1983
+#: wt-status.c:1982 wt-status.c:1985
 msgid "ahead "
 msgstr "領先 "
 
 #. TRANSLATORS: the action is e.g. "pull with rebase"
-#: wt-status.c:2505
+#: wt-status.c:2507
 #, c-format
 msgid "cannot %s: You have unstaged changes."
 msgstr "不能%s:您有未暫存的變更。"
 
-#: wt-status.c:2511
+#: wt-status.c:2513
 msgid "additionally, your index contains uncommitted changes."
 msgstr "另外,您的索引中包含未提交的變更。"
 
-#: wt-status.c:2513
+#: wt-status.c:2515
 #, c-format
 msgid "cannot %s: Your index contains uncommitted changes."
 msgstr "不能%s:您的索引中包含未提交的變更。"
@@ -9743,126 +10041,131 @@ msgstr "刪除 '%s' 失敗"
 msgid "git add [<options>] [--] <pathspec>..."
 msgstr "git add [<選項>] [--] <路徑規格>..."
 
-#: builtin/add.c:88
+#: builtin/add.c:58
+#, c-format
+msgid "cannot chmod %cx '%s'"
+msgstr "無法 chmod %cx ‘%s’"
+
+#: builtin/add.c:96
 #, c-format
 msgid "unexpected diff status %c"
 msgstr "意外的差異狀態 %c"
 
-#: builtin/add.c:93 builtin/commit.c:285
+#: builtin/add.c:101 builtin/commit.c:285
 msgid "updating files failed"
 msgstr "更新檔案失敗"
 
-#: builtin/add.c:103
+#: builtin/add.c:111
 #, c-format
 msgid "remove '%s'\n"
 msgstr "刪除 '%s'\n"
 
-#: builtin/add.c:178
+#: builtin/add.c:186
 msgid "Unstaged changes after refreshing the index:"
 msgstr "重新整理索引之後尚未被暫存的變更:"
 
-#: builtin/add.c:272 builtin/rev-parse.c:908
+#: builtin/add.c:280 builtin/rev-parse.c:991
 msgid "Could not read the index"
 msgstr "不能讀取索引"
 
-#: builtin/add.c:283
+#: builtin/add.c:291
 #, c-format
 msgid "Could not open '%s' for writing."
 msgstr "無法為寫入開啟 '%s'。"
 
-#: builtin/add.c:287
+#: builtin/add.c:295
 msgid "Could not write patch"
 msgstr "不能生成修補檔"
 
-#: builtin/add.c:290
+#: builtin/add.c:298
 msgid "editing patch failed"
 msgstr "編輯修補檔失敗"
 
-#: builtin/add.c:293
+#: builtin/add.c:301
 #, c-format
 msgid "Could not stat '%s'"
 msgstr "不能對 '%s' 呼叫 stat"
 
-#: builtin/add.c:295
+#: builtin/add.c:303
 msgid "Empty patch. Aborted."
 msgstr "空修補檔。異常終止。"
 
-#: builtin/add.c:300
+#: builtin/add.c:308
 #, c-format
 msgid "Could not apply '%s'"
 msgstr "不能應用 '%s'"
 
-#: builtin/add.c:308
+#: builtin/add.c:316
 msgid "The following paths are ignored by one of your .gitignore files:\n"
 msgstr "下列路徑根據您的一個 .gitignore 檔案而被忽略:\n"
 
-#: builtin/add.c:328 builtin/clean.c:904 builtin/fetch.c:166 builtin/mv.c:124
+#: builtin/add.c:336 builtin/clean.c:904 builtin/fetch.c:169 builtin/mv.c:124
 #: builtin/prune-packed.c:14 builtin/pull.c:204 builtin/push.c:559
 #: builtin/remote.c:1427 builtin/rm.c:242 builtin/send-pack.c:190
 msgid "dry run"
 msgstr "測試執行"
 
-#: builtin/add.c:331
+#: builtin/add.c:339
 msgid "interactive picking"
 msgstr "互動式揀選"
 
-#: builtin/add.c:332 builtin/checkout.c:1547 builtin/reset.c:308
+#: builtin/add.c:340 builtin/checkout.c:1546 builtin/reset.c:308
 msgid "select hunks interactively"
 msgstr "互動式挑選資料區塊"
 
-#: builtin/add.c:333
+#: builtin/add.c:341
 msgid "edit current diff and apply"
 msgstr "編輯目前差異並應用"
 
-#: builtin/add.c:334
+#: builtin/add.c:342
 msgid "allow adding otherwise ignored files"
 msgstr "允許新增忽略的檔案"
 
-#: builtin/add.c:335
+#: builtin/add.c:343
 msgid "update tracked files"
 msgstr "更新已追蹤的檔案"
 
-#: builtin/add.c:336
+#: builtin/add.c:344
 msgid "renormalize EOL of tracked files (implies -u)"
 msgstr "對已追蹤檔案(隱含 -u)重新歸一換行符號"
 
-#: builtin/add.c:337
+#: builtin/add.c:345
 msgid "record only the fact that the path will be added later"
 msgstr "只記錄,該路徑稍後再新增"
 
-#: builtin/add.c:338
+#: builtin/add.c:346
 msgid "add changes from all tracked and untracked files"
 msgstr "新增所有改變的已追蹤檔案和未追蹤檔案"
 
-#: builtin/add.c:341
+#: builtin/add.c:349
 msgid "ignore paths removed in the working tree (same as --no-all)"
 msgstr "忽略工作區中移除的路徑(和 --no-all 相同)"
 
-#: builtin/add.c:343
+#: builtin/add.c:351
 msgid "don't add, only refresh the index"
 msgstr "不新增,只重新整理索引"
 
-#: builtin/add.c:344
+#: builtin/add.c:352
 msgid "just skip files which cannot be added because of errors"
 msgstr "跳過因發生錯誤不能新增的檔案"
 
-#: builtin/add.c:345
+#: builtin/add.c:353
 msgid "check if - even missing - files are ignored in dry run"
 msgstr "檢查在測試執行模式下檔案(即使不存在)是否被忽略"
 
-#: builtin/add.c:347 builtin/update-index.c:1004
+#: builtin/add.c:355 builtin/update-index.c:1004
 msgid "override the executable bit of the listed files"
 msgstr "覆蓋列表裡檔案的可執行位"
 
-#: builtin/add.c:349
+#: builtin/add.c:357
 msgid "warn when adding an embedded repository"
 msgstr "建立一個嵌入式版本庫時給予警告"
 
-#: builtin/add.c:351
+#: builtin/add.c:359
 msgid "backend for `git stash -p`"
 msgstr "`git stash -p` 的後端"
 
-#: builtin/add.c:369
+#: builtin/add.c:377
 #, c-format
 msgid ""
 "You've added another git repository inside your current repository.\n"
@@ -9891,12 +10194,12 @@ msgstr ""
 "\n"
 "參見 \"git help submodule\" 取得更多訊息。"
 
-#: builtin/add.c:397
+#: builtin/add.c:405
 #, c-format
 msgid "adding embedded git repository: %s"
 msgstr "正在新增嵌入式 git 版本庫:%s"
 
-#: builtin/add.c:416
+#: builtin/add.c:424
 msgid ""
 "Use -f if you really want to add them.\n"
 "Turn this message off by running\n"
@@ -9906,47 +10209,47 @@ msgstr ""
 "如要關閉此訊息,請執行\n"
 "\"git config advice.addIgnoredFile false\""
 
-#: builtin/add.c:425
+#: builtin/add.c:433
 msgid "adding files failed"
 msgstr "新增檔案失敗"
 
-#: builtin/add.c:453 builtin/commit.c:345
+#: builtin/add.c:461 builtin/commit.c:345
 msgid "--pathspec-from-file is incompatible with --interactive/--patch"
 msgstr "--pathspec-from-file 與 --interactive/--patch 不相容"
 
-#: builtin/add.c:470
+#: builtin/add.c:478
 msgid "--pathspec-from-file is incompatible with --edit"
 msgstr "--pathspec-from-file 與 --edit 不相容"
 
-#: builtin/add.c:482
+#: builtin/add.c:490
 msgid "-A and -u are mutually incompatible"
 msgstr "-A 和 -u 選項互斥"
 
-#: builtin/add.c:485
+#: builtin/add.c:493
 msgid "Option --ignore-missing can only be used together with --dry-run"
 msgstr "選項 --ignore-missing 只能和 --dry-run 同時使用"
 
-#: builtin/add.c:489
+#: builtin/add.c:497
 #, c-format
 msgid "--chmod param '%s' must be either -x or +x"
 msgstr "參數 --chmod 取值 '%s' 必須是 -x 或 +x"
 
-#: builtin/add.c:507 builtin/checkout.c:1715 builtin/commit.c:351
-#: builtin/reset.c:328 builtin/rm.c:272 builtin/stash.c:1502
+#: builtin/add.c:515 builtin/checkout.c:1714 builtin/commit.c:351
+#: builtin/reset.c:328 builtin/rm.c:272 builtin/stash.c:1569
 msgid "--pathspec-from-file is incompatible with pathspec arguments"
 msgstr "--pathspec-from-file 與 <路徑規格> 參數不相容"
 
-#: builtin/add.c:514 builtin/checkout.c:1727 builtin/commit.c:357
-#: builtin/reset.c:334 builtin/rm.c:278 builtin/stash.c:1508
+#: builtin/add.c:522 builtin/checkout.c:1726 builtin/commit.c:357
+#: builtin/reset.c:334 builtin/rm.c:278 builtin/stash.c:1575
 msgid "--pathspec-file-nul requires --pathspec-from-file"
 msgstr "--pathspec-file-nul 需要 --pathspec-from-file"
 
-#: builtin/add.c:518
+#: builtin/add.c:526
 #, c-format
 msgid "Nothing specified, nothing added.\n"
 msgstr "沒有指定檔案,也沒有檔案被新增。\n"
 
-#: builtin/add.c:520
+#: builtin/add.c:528
 msgid ""
 "Maybe you wanted to say 'git add .'?\n"
 "Turn this message off by running\n"
@@ -10026,7 +10329,7 @@ msgstr "如果您想要跳過這一修補檔,則執行 \"%s --skip\"。"
 #: builtin/am.c:1091
 #, c-format
 msgid "To restore the original branch and stop patching, run \"%s --abort\"."
-msgstr "若要復原至原始分支並停止修補動作,執行 \"%s --abort\"。"
+msgstr "若要復原至原始分支並停止修補動作,執行 \"%s --abort\"。"
 
 #: builtin/am.c:1174
 msgid "Patch sent with format=flowed; space at the end of lines might be lost."
@@ -10064,7 +10367,7 @@ msgstr ""
 
 #: builtin/am.c:1516
 msgid "Falling back to patching base and 3-way merge..."
-msgstr "回落到基礎版本上打修補檔及進行三方合併..."
+msgstr "回落到基礎版本上修補及進行三方合併..."
 
 #: builtin/am.c:1542
 msgid "Failed to merge in the changes."
@@ -10193,7 +10496,7 @@ msgid "allow fall back on 3way merging if needed"
 msgstr "如果必要,允許使用三方合併"
 
 #: builtin/am.c:2225 builtin/init-db.c:560 builtin/prune-packed.c:16
-#: builtin/repack.c:335 builtin/stash.c:815
+#: builtin/repack.c:334 builtin/stash.c:882
 msgid "be quiet"
 msgstr "靜默模式"
 
@@ -10236,17 +10539,17 @@ msgid "pass it through git-apply"
 msgstr "傳遞給 git-apply"
 
 #: builtin/am.c:2263 builtin/commit.c:1395 builtin/fmt-merge-msg.c:17
-#: builtin/fmt-merge-msg.c:20 builtin/grep.c:903 builtin/merge.c:260
+#: builtin/fmt-merge-msg.c:20 builtin/grep.c:904 builtin/merge.c:261
 #: builtin/pull.c:141 builtin/pull.c:200 builtin/pull.c:217
-#: builtin/rebase.c:1341 builtin/repack.c:346 builtin/repack.c:350
-#: builtin/repack.c:352 builtin/show-branch.c:650 builtin/show-ref.c:172
-#: builtin/tag.c:404 parse-options.h:154 parse-options.h:175
+#: builtin/rebase.c:1347 builtin/repack.c:345 builtin/repack.c:349
+#: builtin/repack.c:351 builtin/show-branch.c:650 builtin/show-ref.c:172
+#: builtin/tag.c:436 parse-options.h:154 parse-options.h:175
 #: parse-options.h:316
 msgid "n"
 msgstr "n"
 
-#: builtin/am.c:2269 builtin/branch.c:661 builtin/bugreport.c:136
-#: builtin/for-each-ref.c:38 builtin/replace.c:556 builtin/tag.c:438
+#: builtin/am.c:2269 builtin/branch.c:670 builtin/bugreport.c:136
+#: builtin/for-each-ref.c:38 builtin/replace.c:556 builtin/tag.c:470
 #: builtin/verify-tag.c:38
 msgid "format"
 msgstr "格式"
@@ -10272,12 +10575,12 @@ msgid "skip the current patch"
 msgstr "跳過目前修補檔"
 
 #: builtin/am.c:2287
-msgid "restore the original branch and abort the patching operation."
-msgstr "復原原始分支並終止打修補檔動作。"
+msgid "restore the original branch and abort the patching operation"
+msgstr "還原原始分支並中止修補動作"
 
 #: builtin/am.c:2290
-msgid "abort the patching operation but keep HEAD where it is."
-msgstr "終止修補動作但保持 HEAD 不變。"
+msgid "abort the patching operation but keep HEAD where it is"
+msgstr "終止修補動作但保持 HEAD 不變。"
 
 #: builtin/am.c:2294
 msgid "show the patch being applied"
@@ -10292,12 +10595,12 @@ msgid "use current timestamp for author date"
 msgstr "用目前時間作為作者日期"
 
 #: builtin/am.c:2303 builtin/commit-tree.c:120 builtin/commit.c:1515
-#: builtin/merge.c:297 builtin/pull.c:175 builtin/rebase.c:536
-#: builtin/rebase.c:1394 builtin/revert.c:117 builtin/tag.c:419
+#: builtin/merge.c:298 builtin/pull.c:175 builtin/rebase.c:538
+#: builtin/rebase.c:1400 builtin/revert.c:117 builtin/tag.c:451
 msgid "key-id"
 msgstr "key-id"
 
-#: builtin/am.c:2304 builtin/rebase.c:537 builtin/rebase.c:1395
+#: builtin/am.c:2304 builtin/rebase.c:539 builtin/rebase.c:1401
 msgid "GPG-sign commits"
 msgstr "使用 GPG 簽名提交"
 
@@ -10378,25 +10681,10 @@ msgid "git bisect--helper --bisect-reset [<commit>]"
 msgstr "git bisect--helper --bisect-reset [<提交>]"
 
 #: builtin/bisect--helper.c:24
-msgid ""
-"git bisect--helper --bisect-write [--no-log] <state> <revision> <good_term> "
-"<bad_term>"
-msgstr ""
-"git bisect--helper --bisect-write [--no-log] <狀態> <版本> <好-術語> <壞-術語"
-">"
-
-#: builtin/bisect--helper.c:25
-msgid ""
-"git bisect--helper --bisect-check-and-set-terms <command> <good_term> "
-"<bad_term>"
-msgstr ""
-"git bisect--helper --bisect-check-and-set-terms <指令> <好-術語> <壞-術語>"
-
-#: builtin/bisect--helper.c:26
 msgid "git bisect--helper --bisect-next-check <good_term> <bad_term> [<term>]"
 msgstr "git bisect--helper --bisect-next-check <好-術語> <壞-術語> [<術語>]"
 
-#: builtin/bisect--helper.c:27
+#: builtin/bisect--helper.c:25
 msgid ""
 "git bisect--helper --bisect-terms [--term-good | --term-old | --term-bad | --"
 "term-new]"
@@ -10404,7 +10692,7 @@ msgstr ""
 "git bisect--helper --bisect-terms [--term-good | --term-old | --term-bad | --"
 "term-new]"
 
-#: builtin/bisect--helper.c:28
+#: builtin/bisect--helper.c:26
 msgid ""
 "git bisect--helper --bisect-start [--term-{new,bad}=<term> --term-{old,good}"
 "=<term>] [--no-checkout] [--first-parent] [<bad> [<good>...]] [--] "
@@ -10413,90 +10701,92 @@ msgstr ""
 "git bisect--helper --bisect-start [--term-{new,bad}=<術語> --term-{old,good}"
 "=<術語>] [--no-checkout] [--first-parent] [<壞> [<好>...]] [--] [<路徑>...]"
 
-#: builtin/bisect--helper.c:30
+#: builtin/bisect--helper.c:28
 msgid "git bisect--helper --bisect-next"
 msgstr "git bisect--helper --bisect-next"
 
-#: builtin/bisect--helper.c:31
-msgid "git bisect--helper --bisect-auto-next"
-msgstr "git bisect--helper --bisect-auto-next"
-
-#: builtin/bisect--helper.c:32
-#| msgid "git bisect--helper --bisect-reset [<commit>]"
+#: builtin/bisect--helper.c:29
 msgid "git bisect--helper --bisect-state (bad|new) [<rev>]"
 msgstr "git bisect--helper --bisect-state (bad|new) [<修訂版>]"
 
-#: builtin/bisect--helper.c:33
-#| msgid "git bisect--helper --bisect-reset [<commit>]"
+#: builtin/bisect--helper.c:30
 msgid "git bisect--helper --bisect-state (good|old) [<rev>...]"
 msgstr "git bisect--helper --bisect-state (good|old) [<修訂版>...]"
 
-#: builtin/bisect--helper.c:108
+#: builtin/bisect--helper.c:31
+msgid "git bisect--helper --bisect-replay <filename>"
+msgstr "git bisect--helper --bisect-replay <檔名>"
+
+#: builtin/bisect--helper.c:32
+msgid "git bisect--helper --bisect-skip [(<rev>|<range>)...]"
+msgstr "git bisect--helper --bisect-skip [(<修訂版>|<範圍>)...]"
+
+#: builtin/bisect--helper.c:107
 #, c-format
 msgid "cannot open file '%s' in mode '%s'"
 msgstr "無法以 '%2$s' 模式開啟 '%1$s' 檔案"
 
-#: builtin/bisect--helper.c:115
+#: builtin/bisect--helper.c:114
 #, c-format
 msgid "could not write to file '%s'"
 msgstr "無法寫入 '%s' 檔案"
 
-#: builtin/bisect--helper.c:154
+#: builtin/bisect--helper.c:153
 #, c-format
 msgid "'%s' is not a valid term"
 msgstr "'%s' 不是一個有效的術語"
 
-#: builtin/bisect--helper.c:158
+#: builtin/bisect--helper.c:157
 #, c-format
 msgid "can't use the builtin command '%s' as a term"
 msgstr "不能使用內建指令 '%s' 作為術語"
 
-#: builtin/bisect--helper.c:168
+#: builtin/bisect--helper.c:167
 #, c-format
 msgid "can't change the meaning of the term '%s'"
 msgstr "不能修改術語 '%s' 的含義"
 
-#: builtin/bisect--helper.c:178
+#: builtin/bisect--helper.c:177
 msgid "please use two different terms"
 msgstr "請使用兩個不同的術語"
 
-#: builtin/bisect--helper.c:194
+#: builtin/bisect--helper.c:193
 #, c-format
 msgid "We are not bisecting.\n"
-msgstr "我們沒有在二分尋找。\n"
+msgstr "我們沒有在二分搜尋。\n"
 
-#: builtin/bisect--helper.c:202
+#: builtin/bisect--helper.c:201
 #, c-format
 msgid "'%s' is not a valid commit"
 msgstr "'%s' 不是一個有效的提交"
 
-#: builtin/bisect--helper.c:211
+#: builtin/bisect--helper.c:210
 #, c-format
 msgid ""
 "could not check out original HEAD '%s'. Try 'git bisect reset <commit>'."
 msgstr "不能檢出原始 HEAD '%s'。嘗試 'git bisect reset <提交>'。"
 
-#: builtin/bisect--helper.c:255
+#: builtin/bisect--helper.c:254
 #, c-format
 msgid "Bad bisect_write argument: %s"
 msgstr "壞的 bisect_write 參數:%s"
 
-#: builtin/bisect--helper.c:260
+#: builtin/bisect--helper.c:259
 #, c-format
 msgid "couldn't get the oid of the rev '%s'"
 msgstr "無法取得版本 '%s' 的物件 ID"
 
-#: builtin/bisect--helper.c:272
+#: builtin/bisect--helper.c:271
 #, c-format
 msgid "couldn't open the file '%s'"
 msgstr "無法開啟檔案 '%s'"
 
-#: builtin/bisect--helper.c:298
+#: builtin/bisect--helper.c:297
 #, c-format
 msgid "Invalid command: you're currently in a %s/%s bisect"
-msgstr "無效的指令:您目前正處於一個 %s/%s 二分尋找中"
+msgstr "無效的指令:您目前正處於一個 %s/%s 二分搜尋中"
 
-#: builtin/bisect--helper.c:325
+#: builtin/bisect--helper.c:324
 #, c-format
 msgid ""
 "You need to give me at least one %s and %s revision.\n"
@@ -10505,7 +10795,7 @@ msgstr ""
 "您需要給我至少一個 %s 和一個 %s 版本。\n"
 "為此您可以用 \"git bisect %s\" 和 \"git bisect %s\"。"
 
-#: builtin/bisect--helper.c:329
+#: builtin/bisect--helper.c:328
 #, c-format
 msgid ""
 "You need to start by \"git bisect start\".\n"
@@ -10516,32 +10806,32 @@ msgstr ""
 "然後需要提供我至少一個 %s 和一個 %s 版本。\n"
 "為此您可以用 \"git bisect %s\" 和 \"git bisect %s\" 指令。"
 
-#: builtin/bisect--helper.c:349
+#: builtin/bisect--helper.c:348
 #, c-format
 msgid "bisecting only with a %s commit"
-msgstr "在只有一個 %s 提交的情況下二分尋找"
+msgstr "在只有一個 %s 提交的情況下二分搜尋"
 
 #  譯者:請維持句尾空格
 #. TRANSLATORS: Make sure to include [Y] and [n] in your
 #. translation. The program will only accept English input
 #. at this point.
 #.
-#: builtin/bisect--helper.c:357
+#: builtin/bisect--helper.c:356
 msgid "Are you sure [Y/n]? "
 msgstr "您確認嗎[Y/n]? "
 
-#: builtin/bisect--helper.c:418
+#: builtin/bisect--helper.c:417
 msgid "no terms defined"
 msgstr "未定義術語"
 
-#: builtin/bisect--helper.c:421
+#: builtin/bisect--helper.c:420
 #, c-format
 msgid ""
 "Your current terms are %s for the old state\n"
 "and %s for the new state.\n"
 msgstr "您目前針對舊狀態的術語是 %s,對新狀態的術語是 %s。\n"
 
-#: builtin/bisect--helper.c:431
+#: builtin/bisect--helper.c:430
 #, c-format
 msgid ""
 "invalid argument %s for 'git bisect terms'.\n"
@@ -10550,52 +10840,52 @@ msgstr ""
 "指令 'git bisect terms' 的參數 %s 無效。\n"
 "支援的選項有:--term-good|--term-old 和 --term-bad|--term-new。"
 
-#: builtin/bisect--helper.c:498
+#: builtin/bisect--helper.c:497 builtin/bisect--helper.c:1014
 msgid "revision walk setup failed\n"
 msgstr "版本遍歷設定失敗\n"
 
-#: builtin/bisect--helper.c:520
+#: builtin/bisect--helper.c:519
 #, c-format
 msgid "could not open '%s' for appending"
 msgstr "無法開啟 '%s' 進行附加"
 
-#: builtin/bisect--helper.c:639 builtin/bisect--helper.c:652
+#: builtin/bisect--helper.c:638 builtin/bisect--helper.c:651
 msgid "'' is not a valid term"
 msgstr "'' 不是一個有效的術語"
 
-#: builtin/bisect--helper.c:662
+#: builtin/bisect--helper.c:661
 #, c-format
 msgid "unrecognized option: '%s'"
 msgstr "未識別的選項:'%s'"
 
-#: builtin/bisect--helper.c:666
+#: builtin/bisect--helper.c:665
 #, c-format
 msgid "'%s' does not appear to be a valid revision"
 msgstr "'%s' 看起來不是一個有效的版本"
 
-#: builtin/bisect--helper.c:697
+#: builtin/bisect--helper.c:696
 msgid "bad HEAD - I need a HEAD"
 msgstr "壞的 HEAD - 我需要一個 HEAD"
 
-#: builtin/bisect--helper.c:712
+#: builtin/bisect--helper.c:711
 #, c-format
 msgid "checking out '%s' failed. Try 'git bisect start <valid-branch>'."
 msgstr "檢出 '%s' 失敗。嘗試 'git bisect start <有效分支>'。"
 
-#: builtin/bisect--helper.c:733
+#: builtin/bisect--helper.c:732
 msgid "won't bisect on cg-seek'ed tree"
-msgstr "不會在做了 cg-seek 的樹上做二分尋找"
+msgstr "不會在做了 cg-seek 的樹上做二分搜尋"
 
-#: builtin/bisect--helper.c:736
+#: builtin/bisect--helper.c:735
 msgid "bad HEAD - strange symbolic ref"
 msgstr "壞的 HEAD - 奇怪的符號引用"
 
-#: builtin/bisect--helper.c:756
+#: builtin/bisect--helper.c:755
 #, c-format
 msgid "invalid ref: '%s'"
 msgstr "無效的引用:'%s'"
 
-#: builtin/bisect--helper.c:814
+#: builtin/bisect--helper.c:813
 msgid "You need to start by \"git bisect start\"\n"
 msgstr "您需要執行 \"git bisect start\" 來開始\n"
 
@@ -10604,91 +10894,101 @@ msgstr "您需要執行 \"git bisect start\" 來開始\n"
 #. translation. The program will only accept English input
 #. at this point.
 #.
-#: builtin/bisect--helper.c:825
+#: builtin/bisect--helper.c:824
 msgid "Do you want me to do it for you [Y/n]? "
 msgstr "您想讓我為您這樣做嗎[Y/n]? "
 
-#: builtin/bisect--helper.c:843
+#: builtin/bisect--helper.c:842
 msgid "Please call `--bisect-state` with at least one argument"
 msgstr "要呼叫 `—bisect-state`,請傳入一個以上的引數"
 
-#: builtin/bisect--helper.c:856
+#: builtin/bisect--helper.c:855
 #, c-format
 msgid "'git bisect %s' can take only one argument."
 msgstr "'git bisect %s' 只能有一個參數。"
 
-#: builtin/bisect--helper.c:868 builtin/bisect--helper.c:879
+#: builtin/bisect--helper.c:867 builtin/bisect--helper.c:878
 #, c-format
 msgid "Bad rev input: %s"
 msgstr "<修訂版> 輸入格式錯誤:%s"
 
-#: builtin/bisect--helper.c:924
-msgid "reset the bisection state"
-msgstr "清除二分尋找狀態"
+#: builtin/bisect--helper.c:912
+msgid "We are not bisecting."
+msgstr "我們沒有在二分搜尋。"
+
+#: builtin/bisect--helper.c:962
+#, c-format
+msgid "'%s'?? what are you talking about?"
+msgstr "「%s」??您在說什麼?"
 
-#: builtin/bisect--helper.c:926
-msgid "write out the bisection state in BISECT_LOG"
-msgstr "將二分尋找的狀態寫入 BISECT_LOG"
+#: builtin/bisect--helper.c:974
+#, c-format
+msgid "cannot read file '%s' for replaying"
+msgstr "無法讀取「%s」檔案來重放"
 
-#: builtin/bisect--helper.c:928
-msgid "check and set terms in a bisection state"
-msgstr "在一個二分尋找狀態中檢查和設定術語"
+#: builtin/bisect--helper.c:1047
+msgid "reset the bisection state"
+msgstr "清除二分搜尋狀態"
 
-#: builtin/bisect--helper.c:930
+#: builtin/bisect--helper.c:1049
 msgid "check whether bad or good terms exist"
 msgstr "檢查壞的或好的術語是否存在"
 
-#: builtin/bisect--helper.c:932
+#: builtin/bisect--helper.c:1051
 msgid "print out the bisect terms"
-msgstr "列印二分尋找術語"
+msgstr "列印二分搜尋術語"
 
-#: builtin/bisect--helper.c:934
+#: builtin/bisect--helper.c:1053
 msgid "start the bisect session"
-msgstr "啟動二分尋找過程"
+msgstr "啟動二分搜尋過程"
 
-#: builtin/bisect--helper.c:936
+#: builtin/bisect--helper.c:1055
 msgid "find the next bisection commit"
-msgstr "尋找下一個二分尋找提交"
-
-#: builtin/bisect--helper.c:938
-msgid "verify the next bisection state then checkout the next bisection commit"
-msgstr "驗證下一個二分尋找狀態後,檢出下一個二分尋找提交"
+msgstr "尋找下一個二分搜尋提交"
 
-#: builtin/bisect--helper.c:940
+#: builtin/bisect--helper.c:1057
 msgid "mark the state of ref (or refs)"
 msgstr "標記 ref (或 refs) 的狀態"
 
-#: builtin/bisect--helper.c:942
+#: builtin/bisect--helper.c:1059
+msgid "list the bisection steps so far"
+msgstr "列出迄今的二分搜尋步驟"
+
+#: builtin/bisect--helper.c:1061
+msgid "replay the bisection process from the given file"
+msgstr "從指定檔案重放二分搜尋過程"
+
+#: builtin/bisect--helper.c:1063
+msgid "skip some commits for checkout"
+msgstr "跳過要檢出的部分提交"
+
+#: builtin/bisect--helper.c:1065
 msgid "no log for BISECT_WRITE"
 msgstr "BISECT_WRITE 無日誌"
 
-#: builtin/bisect--helper.c:957
+#: builtin/bisect--helper.c:1080
 msgid "--bisect-reset requires either no argument or a commit"
 msgstr "--bisect-reset 無需參數或者需要一個提交"
 
-#: builtin/bisect--helper.c:961
-msgid "--bisect-write requires either 4 or 5 arguments"
-msgstr "--bisect-write 需要 4 或 5 個參數"
-
-#: builtin/bisect--helper.c:967
-msgid "--check-and-set-terms requires 3 arguments"
-msgstr "--check-and-set-terms 需要 3 個參數"
-
-#: builtin/bisect--helper.c:973
+#: builtin/bisect--helper.c:1085
 msgid "--bisect-next-check requires 2 or 3 arguments"
 msgstr "--bisect-next-check 需要 2 或 3 個參數"
 
-#: builtin/bisect--helper.c:979
+#: builtin/bisect--helper.c:1091
 msgid "--bisect-terms requires 0 or 1 argument"
 msgstr "--bisect-terms 需要 0 或 1 個參數"
 
-#: builtin/bisect--helper.c:988
+#: builtin/bisect--helper.c:1100
 msgid "--bisect-next requires 0 arguments"
 msgstr "--bisect-next 需要 0 個引數"
 
-#: builtin/bisect--helper.c:994
-msgid "--bisect-auto-next requires 0 arguments"
-msgstr "--bisect-auto-next 需要 0 個引數"
+#: builtin/bisect--helper.c:1111
+msgid "--bisect-log requires 0 arguments"
+msgstr "--bisect-log 需要 0 個引數"
+
+#: builtin/bisect--helper.c:1116
+msgid "no logfile given"
+msgstr "未提供日誌檔案"
 
 #: builtin/blame.c:32
 msgid "git blame [<options>] [<rev-opts>] [<rev>] [--] <file>"
@@ -10707,137 +11007,140 @@ msgstr "期望一個顏色:%s"
 msgid "must end with a color"
 msgstr "必須以一個顏色結尾"
 
-#: builtin/blame.c:730
+#: builtin/blame.c:728
 #, c-format
 msgid "invalid color '%s' in color.blame.repeatedLines"
 msgstr "設定 color.blame.repeatedLines 中的無效顏色 '%s'"
 
-#: builtin/blame.c:748
+#: builtin/blame.c:746
 msgid "invalid value for blame.coloring"
 msgstr "設定 blame.coloring 中的無效取值"
 
-#: builtin/blame.c:847
+#: builtin/blame.c:845
 #, c-format
 msgid "cannot find revision %s to ignore"
 msgstr "不能找到要忽略的版本 %s"
 
+#: builtin/blame.c:867
+msgid "show blame entries as we find them, incrementally"
+msgstr "增量式顯示發現的 blame 條目"
+
+#: builtin/blame.c:868
+msgid "do not show object names of boundary commits (Default: off)"
+msgstr "不要顯示邊界提交的物件名稱(預設值: off)"
+
 #: builtin/blame.c:869
-msgid "Show blame entries as we find them, incrementally"
-msgstr "增量式地顯示發現的 blame 條目"
+msgid "do not treat root commits as boundaries (Default: off)"
+msgstr "不將根提交看作邊界(預設值:off)"
 
 #: builtin/blame.c:870
-msgid "Do not show object names of boundary commits (Default: off)"
-msgstr "不要顯示邊界提交的物件名稱 (預設值: off)"
+msgid "show work cost statistics"
+msgstr "顯示工作量統計"
 
-#: builtin/blame.c:871
-msgid "Do not treat root commits as boundaries (Default: off)"
-msgstr "不把根提交作為邊界(預設:關閉)"
+#: builtin/blame.c:871 builtin/checkout.c:1503 builtin/clone.c:92
+#: builtin/commit-graph.c:84 builtin/commit-graph.c:222 builtin/fetch.c:175
+#: builtin/merge.c:297 builtin/multi-pack-index.c:27 builtin/pull.c:119
+#: builtin/push.c:575 builtin/send-pack.c:198
+msgid "force progress reporting"
+msgstr "強制顯示進度報告"
 
 #: builtin/blame.c:872
-msgid "Show work cost statistics"
-msgstr "顯示指令消耗統計"
+msgid "show output score for blame entries"
+msgstr "顯示判斷 blame 條目位移的得分診斷訊息"
 
 #: builtin/blame.c:873
-msgid "Force progress reporting"
-msgstr "強制進度顯示"
+msgid "show original filename (Default: auto)"
+msgstr "顯示原始檔案名稱(預設值:auto)"
 
 #: builtin/blame.c:874
-msgid "Show output score for blame entries"
-msgstr "顯示å\88¤æ\96· blame æ¢\9dç\9b®ä½\8d移ç\9a\84å¾\97å\88\86診æ\96·è¨\8aæ\81¯"
+msgid "show original linenumber (Default: off)"
+msgstr "顯示å\8e\9få§\8bæª\94æ¡\88å\90\8d稱ï¼\88é \90設å\80¼ï¼\9aoffï¼\89"
 
 #: builtin/blame.c:875
-msgid "Show original filename (Default: auto)"
-msgstr "顯示原始檔案名(預設:自動)"
+msgid "show in a format designed for machine consumption"
+msgstr "顯示成適合機器讀取的格式"
 
 #: builtin/blame.c:876
-msgid "Show original linenumber (Default: off)"
-msgstr "顯示原始的行號(預設:關閉)"
+msgid "show porcelain format with per-line commit information"
+msgstr "顯示每一列適合機器的提交訊息"
 
 #: builtin/blame.c:877
-msgid "Show in a format designed for machine consumption"
-msgstr "顯示為一個適合機器讀取的格式"
+msgid "use the same output mode as git-annotate (Default: off)"
+msgstr "使用和 git-annotate 相同的輸出模式(預設值:off)"
 
 #: builtin/blame.c:878
-msgid "Show porcelain format with per-line commit information"
-msgstr "為每一行顯示機器適用的提交訊息"
+msgid "show raw timestamp (Default: off)"
+msgstr "顯示原始時間戳(預設值:off)"
 
 #: builtin/blame.c:879
-msgid "Use the same output mode as git-annotate (Default: off)"
-msgstr "使用和 git-annotate 相同的輸出模式(預設:關閉)"
+msgid "show long commit SHA1 (Default: off)"
+msgstr "顯示較長的 SHA1 提交編號(預設值:off)"
 
 #: builtin/blame.c:880
-msgid "Show raw timestamp (Default: off)"
-msgstr "顯示å\8e\9få§\8bæ\99\82é\96\93æ\88³ï¼\88é \90設ï¼\9aé\97\9cé\96\89)"
+msgid "suppress author name and timestamp (Default: off)"
+msgstr "é\9a±è\97\8fä½\9cè\80\85å\90\8då­\97å\8f\8aæ\99\82é\96\93æ\88³ï¼\88é \90設å\80¼ï¼\9aoff)"
 
 #: builtin/blame.c:881
-msgid "Show long commit SHA1 (Default: off)"
-msgstr "顯示長的 SHA1 提交號(預設:關閉)"
+msgid "show author email instead of name (Default: off)"
+msgstr "顯示作者信箱而非名稱(預設值:off)"
 
 #: builtin/blame.c:882
-msgid "Suppress author name and timestamp (Default: off)"
-msgstr "隱藏作者名字和時間戳(預設:關閉)"
-
-#: builtin/blame.c:883
-msgid "Show author email instead of name (Default: off)"
-msgstr "顯示作者的信箱而不是名字(預設:關閉)"
-
-#: builtin/blame.c:884
-msgid "Ignore whitespace differences"
+msgid "ignore whitespace differences"
 msgstr "忽略空白差異"
 
-#: builtin/blame.c:885 builtin/log.c:1813
+#: builtin/blame.c:883 builtin/log.c:1812
 msgid "rev"
 msgstr "版本"
 
-#: builtin/blame.c:885
-msgid "Ignore <rev> when blaming"
-msgstr "在執行 blame 動作時忽略 <版本>"
+#: builtin/blame.c:883
+msgid "ignore <rev> when blaming"
+msgstr "在執行 blame 動作時忽略 <修訂版>"
 
-#: builtin/blame.c:886
-msgid "Ignore revisions from <file>"
-msgstr "忽略來自 <檔案> 中的版本"
+#: builtin/blame.c:884
+msgid "ignore revisions from <file>"
+msgstr "忽略 <檔案> 中的修訂版"
 
-#: builtin/blame.c:887
+#: builtin/blame.c:885
 msgid "color redundant metadata from previous line differently"
 msgstr "使用顏色間隔輸出與前一行不同的重複元訊息"
 
-#: builtin/blame.c:888
+#: builtin/blame.c:886
 msgid "color lines by age"
 msgstr "依據時間著色"
 
-#: builtin/blame.c:889
-msgid "Spend extra cycles to find better match"
-msgstr "花費額外的循環來找到更好的符合"
+#: builtin/blame.c:887
+msgid "spend extra cycles to find better match"
+msgstr "循環更多次以找到更佳符合"
 
-#: builtin/blame.c:890
-msgid "Use revisions from <file> instead of calling git-rev-list"
+#: builtin/blame.c:888
+msgid "use revisions from <file> instead of calling git-rev-list"
 msgstr "使用來自 <檔案> 的修訂集而不是呼叫 git-rev-list"
 
-#: builtin/blame.c:891
-msgid "Use <file>'s contents as the final image"
-msgstr "使用 <檔案> 的內容作為最終的圖片"
+#: builtin/blame.c:889
+msgid "use <file>'s contents as the final image"
+msgstr "將 <檔案> 的內容當成是最終 image"
 
-#: builtin/blame.c:892 builtin/blame.c:893
+#: builtin/blame.c:890 builtin/blame.c:891
 msgid "score"
 msgstr "得分"
 
-#: builtin/blame.c:892
-msgid "Find line copies within and across files"
-msgstr "æ\89¾å\88°æª\94æ¡\88å\85§å\8f\8aè·¨æª\94æ¡\88ç\9a\84è¡\8cè¤\87製"
+#: builtin/blame.c:890
+msgid "find line copies within and across files"
+msgstr "æ\89¾å\88°æª\94æ¡\88å\85§å\8f\8aè·¨æª\94æ¡\88ç\9a\84è¤\87製å\88\97"
 
-#: builtin/blame.c:893
-msgid "Find line movements within and across files"
-msgstr "找到檔案內及跨檔案的行移動"
+#: builtin/blame.c:891
+msgid "find line movements within and across files"
+msgstr "找到檔案內及跨檔案的移動列"
 
-#: builtin/blame.c:894
+#: builtin/blame.c:892
 msgid "range"
 msgstr "range"
 
-#: builtin/blame.c:895
-msgid "Process only line range <start>,<end> or function :<funcname>"
+#: builtin/blame.c:893
+msgid "process only line range <start>,<end> or function :<funcname>"
 msgstr "只處理範圍在 <開始>,<結尾> 的列,或是 :<函數名稱> 函數"
 
-#: builtin/blame.c:947
+#: builtin/blame.c:945
 msgid "--progress can't be used with --incremental or porcelain formats"
 msgstr "--progress 不能和 --incremental 或 --porcelain 同時使用"
 
@@ -10849,17 +11152,17 @@ msgstr "--progress 不能和 --incremental 或 --porcelain 同時使用"
 #. your language may need more or fewer display
 #. columns.
 #.
-#: builtin/blame.c:998
+#: builtin/blame.c:996
 msgid "4 years, 11 months ago"
 msgstr "4 年 11 個月前"
 
-#: builtin/blame.c:1114
+#: builtin/blame.c:1112
 #, c-format
 msgid "file %s has only %lu line"
 msgid_plural "file %s has only %lu lines"
 msgstr[0] "檔案 %s 只有 %lu 行"
 
-#: builtin/blame.c:1159
+#: builtin/blame.c:1157
 msgid "Blaming lines"
 msgstr "追蹤程式碼行"
 
@@ -10929,117 +11232,107 @@ msgstr ""
 msgid "Update of config-file failed"
 msgstr "更新設定檔案失敗"
 
-#: builtin/branch.c:220
+#: builtin/branch.c:223
 msgid "cannot use -a with -d"
 msgstr "不能將 -a 和 -d 同時使用"
 
-#: builtin/branch.c:226
+#: builtin/branch.c:230
 msgid "Couldn't look up commit object for HEAD"
 msgstr "無法查詢 HEAD 指向的提交物件"
 
-#: builtin/branch.c:240
+#: builtin/branch.c:244
 #, c-format
 msgid "Cannot delete branch '%s' checked out at '%s'"
 msgstr "無法刪除在「%2$s」檢出的「%1$s」分支"
 
-#: builtin/branch.c:255
+#: builtin/branch.c:259
 #, c-format
 msgid "remote-tracking branch '%s' not found."
 msgstr "未能找到遠端追蹤分支 '%s'。"
 
-#: builtin/branch.c:256
+#: builtin/branch.c:260
 #, c-format
 msgid "branch '%s' not found."
 msgstr "分支 '%s' 未發現。"
 
-#: builtin/branch.c:271
-#, c-format
-msgid "Error deleting remote-tracking branch '%s'"
-msgstr "無法刪除遠端追蹤分支 '%s'"
-
-#: builtin/branch.c:272
-#, c-format
-msgid "Error deleting branch '%s'"
-msgstr "無法刪除分支 '%s'"
-
-#: builtin/branch.c:279
+#: builtin/branch.c:291
 #, c-format
 msgid "Deleted remote-tracking branch %s (was %s).\n"
 msgstr "已刪除遠端追蹤分支 %s(曾為 %s)。\n"
 
-#: builtin/branch.c:280
+#: builtin/branch.c:292
 #, c-format
 msgid "Deleted branch %s (was %s).\n"
 msgstr "已刪除分支 %s(曾為 %s)。\n"
 
-#: builtin/branch.c:429 builtin/tag.c:61
+#: builtin/branch.c:438 builtin/tag.c:61
 msgid "unable to parse format string"
 msgstr "不能解析格式化字串"
 
-#: builtin/branch.c:460
+#: builtin/branch.c:469
 msgid "could not resolve HEAD"
 msgstr "不能解析 HEAD 提交"
 
-#: builtin/branch.c:466
+#: builtin/branch.c:475
 #, c-format
 msgid "HEAD (%s) points outside of refs/heads/"
 msgstr "HEAD (%s) 指向 refs/heads/ 之外"
 
-#: builtin/branch.c:481
+#: builtin/branch.c:490
 #, c-format
 msgid "Branch %s is being rebased at %s"
 msgstr "分支 %s 正被重定基底到 %s"
 
-#: builtin/branch.c:485
+#: builtin/branch.c:494
 #, c-format
 msgid "Branch %s is being bisected at %s"
-msgstr "分支 %s 正被二分尋找於 %s"
+msgstr "分支 %s 正被二分搜尋於 %s"
 
-#: builtin/branch.c:502
+#: builtin/branch.c:511
 msgid "cannot copy the current branch while not on any."
 msgstr "無法複製目前分支因為不處於任何分支上。"
 
-#: builtin/branch.c:504
+#: builtin/branch.c:513
 msgid "cannot rename the current branch while not on any."
 msgstr "無法重新命名目前分支因為不處於任何分支上。"
 
-#: builtin/branch.c:515
+#: builtin/branch.c:524
 #, c-format
 msgid "Invalid branch name: '%s'"
 msgstr "無效的分支名:'%s'"
 
-#: builtin/branch.c:544
+#: builtin/branch.c:553
 msgid "Branch rename failed"
 msgstr "分支重新命名失敗"
 
-#: builtin/branch.c:546
+#: builtin/branch.c:555
 msgid "Branch copy failed"
 msgstr "分支複製失敗"
 
-#: builtin/branch.c:550
+#: builtin/branch.c:559
 #, c-format
 msgid "Created a copy of a misnamed branch '%s'"
 msgstr "已為錯誤命名的分支 '%s' 建立了一個副本"
 
-#: builtin/branch.c:553
+#: builtin/branch.c:562
 #, c-format
 msgid "Renamed a misnamed branch '%s' away"
 msgstr "已將錯誤命名的分支 '%s' 重新命名"
 
-#: builtin/branch.c:559
+#: builtin/branch.c:568
 #, c-format
 msgid "Branch renamed to %s, but HEAD is not updated!"
 msgstr "分支重新命名為 %s,但 HEAD 沒有更新!"
 
-#: builtin/branch.c:568
+#: builtin/branch.c:577
 msgid "Branch is renamed, but update of config-file failed"
 msgstr "分支被重新命名,但更新設定檔案失敗"
 
-#: builtin/branch.c:570
+#: builtin/branch.c:579
 msgid "Branch is copied, but update of config-file failed"
 msgstr "分支已複製,但更新設定檔案失敗"
 
-#: builtin/branch.c:586
+#: builtin/branch.c:595
 #, c-format
 msgid ""
 "Please edit the description for the branch\n"
@@ -11050,209 +11343,209 @@ msgstr ""
 "  %s\n"
 "以 '%c' 開頭的行將被過濾。\n"
 
-#: builtin/branch.c:620
+#: builtin/branch.c:629
 msgid "Generic options"
 msgstr "通用選項"
 
-#: builtin/branch.c:622
+#: builtin/branch.c:631
 msgid "show hash and subject, give twice for upstream branch"
 msgstr "顯示雜湊值和主題,若參數出現兩次則顯示上游分支"
 
-#: builtin/branch.c:623
+#: builtin/branch.c:632
 msgid "suppress informational messages"
 msgstr "不顯示訊息"
 
-#: builtin/branch.c:624
+#: builtin/branch.c:633
 msgid "set up tracking mode (see git-pull(1))"
 msgstr "設定追蹤模式(參見 git-pull(1))"
 
-#: builtin/branch.c:626
+#: builtin/branch.c:635
 msgid "do not use"
 msgstr "不要使用"
 
-#: builtin/branch.c:628 builtin/rebase.c:532
+#: builtin/branch.c:637 builtin/rebase.c:534
 msgid "upstream"
 msgstr "上游"
 
-#: builtin/branch.c:628
+#: builtin/branch.c:637
 msgid "change the upstream info"
 msgstr "改變上游訊息"
 
-#: builtin/branch.c:629
+#: builtin/branch.c:638
 msgid "unset the upstream info"
 msgstr "取消上游資訊設定"
 
-#: builtin/branch.c:630
+#: builtin/branch.c:639
 msgid "use colored output"
 msgstr "使用彩色輸出"
 
-#: builtin/branch.c:631
+#: builtin/branch.c:640
 msgid "act on remote-tracking branches"
 msgstr "作用於遠端追蹤分支"
 
-#: builtin/branch.c:633 builtin/branch.c:635
+#: builtin/branch.c:642 builtin/branch.c:644
 msgid "print only branches that contain the commit"
 msgstr "只列印包含該提交的分支"
 
-#: builtin/branch.c:634 builtin/branch.c:636
+#: builtin/branch.c:643 builtin/branch.c:645
 msgid "print only branches that don't contain the commit"
 msgstr "只列印不包含該提交的分支"
 
-#: builtin/branch.c:639
+#: builtin/branch.c:648
 msgid "Specific git-branch actions:"
 msgstr "具體的 git-branch 動作:"
 
-#: builtin/branch.c:640
+#: builtin/branch.c:649
 msgid "list both remote-tracking and local branches"
 msgstr "列出遠端追蹤及本機分支"
 
-#: builtin/branch.c:642
+#: builtin/branch.c:651
 msgid "delete fully merged branch"
 msgstr "刪除完全合併的分支"
 
-#: builtin/branch.c:643
+#: builtin/branch.c:652
 msgid "delete branch (even if not merged)"
 msgstr "刪除分支(即使沒有合併)"
 
-#: builtin/branch.c:644
+#: builtin/branch.c:653
 msgid "move/rename a branch and its reflog"
 msgstr "移動/重新命名一個分支,以及它的引用日誌"
 
-#: builtin/branch.c:645
+#: builtin/branch.c:654
 msgid "move/rename a branch, even if target exists"
 msgstr "移動/重新命名一個分支,即使目標已存在"
 
-#: builtin/branch.c:646
+#: builtin/branch.c:655
 msgid "copy a branch and its reflog"
 msgstr "複製一個分支和它的引用日誌"
 
-#: builtin/branch.c:647
+#: builtin/branch.c:656
 msgid "copy a branch, even if target exists"
 msgstr "複製一個分支,即使目標已存在"
 
-#: builtin/branch.c:648
+#: builtin/branch.c:657
 msgid "list branch names"
 msgstr "列出分支名"
 
-#: builtin/branch.c:649
+#: builtin/branch.c:658
 msgid "show current branch name"
 msgstr "顯示目前分支名"
 
-#: builtin/branch.c:650
+#: builtin/branch.c:659
 msgid "create the branch's reflog"
 msgstr "建立分支的引用日誌"
 
-#: builtin/branch.c:652
+#: builtin/branch.c:661
 msgid "edit the description for the branch"
 msgstr "標記分支的描述"
 
-#: builtin/branch.c:653
+#: builtin/branch.c:662
 msgid "force creation, move/rename, deletion"
 msgstr "強制建立、移動/重新命名、刪除"
 
-#: builtin/branch.c:654
+#: builtin/branch.c:663
 msgid "print only branches that are merged"
 msgstr "只列印已經合併的分支"
 
-#: builtin/branch.c:655
+#: builtin/branch.c:664
 msgid "print only branches that are not merged"
 msgstr "只列印尚未合併的分支"
 
-#: builtin/branch.c:656
+#: builtin/branch.c:665
 msgid "list branches in columns"
 msgstr "以列的方式顯示分支"
 
-#: builtin/branch.c:658 builtin/for-each-ref.c:42 builtin/notes.c:415
+#: builtin/branch.c:667 builtin/for-each-ref.c:42 builtin/notes.c:415
 #: builtin/notes.c:418 builtin/notes.c:581 builtin/notes.c:584
-#: builtin/tag.c:434
+#: builtin/tag.c:466
 msgid "object"
 msgstr "物件"
 
-#: builtin/branch.c:659
+#: builtin/branch.c:668
 msgid "print only branches of the object"
 msgstr "只列印指向該物件的分支"
 
-#: builtin/branch.c:660 builtin/for-each-ref.c:48 builtin/tag.c:441
+#: builtin/branch.c:669 builtin/for-each-ref.c:48 builtin/tag.c:473
 msgid "sorting and filtering are case insensitive"
 msgstr "排序和過濾屬於大小寫不敏感"
 
-#: builtin/branch.c:661 builtin/for-each-ref.c:38 builtin/tag.c:439
+#: builtin/branch.c:670 builtin/for-each-ref.c:38 builtin/tag.c:471
 #: builtin/verify-tag.c:38
 msgid "format to use for the output"
 msgstr "輸出格式"
 
-#: builtin/branch.c:684 builtin/clone.c:790
+#: builtin/branch.c:693 builtin/clone.c:790
 msgid "HEAD not found below refs/heads!"
 msgstr "HEAD 沒有位於 /refs/heads 之下!"
 
-#: builtin/branch.c:708
+#: builtin/branch.c:717
 msgid "--column and --verbose are incompatible"
 msgstr "--column 和 --verbose 不相容"
 
-#: builtin/branch.c:723 builtin/branch.c:777 builtin/branch.c:786
+#: builtin/branch.c:732 builtin/branch.c:788 builtin/branch.c:797
 msgid "branch name required"
 msgstr "必須提供分支名"
 
-#: builtin/branch.c:753
+#: builtin/branch.c:764
 msgid "Cannot give description to detached HEAD"
 msgstr "不能向分離開頭指標提供描述"
 
-#: builtin/branch.c:758
+#: builtin/branch.c:769
 msgid "cannot edit description of more than one branch"
 msgstr "不能為一個以上的分支編輯描述"
 
-#: builtin/branch.c:765
+#: builtin/branch.c:776
 #, c-format
 msgid "No commit on branch '%s' yet."
 msgstr "分支 '%s' 尚無提交。"
 
-#: builtin/branch.c:768
+#: builtin/branch.c:779
 #, c-format
 msgid "No branch named '%s'."
 msgstr "沒有分支 '%s'。"
 
-#: builtin/branch.c:783
+#: builtin/branch.c:794
 msgid "too many branches for a copy operation"
 msgstr "為複製動作提供了太多的分支名"
 
-#: builtin/branch.c:792
+#: builtin/branch.c:803
 msgid "too many arguments for a rename operation"
 msgstr "為重新命名動作提供了太多的參數"
 
-#: builtin/branch.c:797
+#: builtin/branch.c:808
 msgid "too many arguments to set new upstream"
 msgstr "為設定新上游提供了太多的參數"
 
-#: builtin/branch.c:801
+#: builtin/branch.c:812
 #, 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:804 builtin/branch.c:827
+#: builtin/branch.c:815 builtin/branch.c:838
 #, c-format
 msgid "no such branch '%s'"
 msgstr "沒有此分支 '%s'"
 
-#: builtin/branch.c:808
+#: builtin/branch.c:819
 #, c-format
 msgid "branch '%s' does not exist"
 msgstr "分支 '%s' 不存在"
 
-#: builtin/branch.c:821
+#: builtin/branch.c:832
 msgid "too many arguments to unset upstream"
 msgstr "為取消上游設定動作提供了太多的參數"
 
-#: builtin/branch.c:825
+#: builtin/branch.c:836
 msgid "could not unset upstream of HEAD when it does not point to any branch."
 msgstr "在 HEAD 的上游未指向任何分支時無法取消設定。"
 
-#: builtin/branch.c:831
+#: builtin/branch.c:842
 #, c-format
 msgid "Branch '%s' has no upstream information"
 msgstr "分支 '%s' 沒有上游訊息"
 
-#: builtin/branch.c:841
+#: builtin/branch.c:852
 msgid ""
 "The -a, and -r, options to 'git branch' do not take a branch name.\n"
 "Did you mean to use: -a|-r --list <pattern>?"
@@ -11260,7 +11553,7 @@ msgstr ""
 "'git branch' 的 -a 和 -r 選項不帶一個分支名。\n"
 "您是否想要使用:-a|-r --list <模式>?"
 
-#: builtin/branch.c:845
+#: builtin/branch.c:856
 msgid ""
 "the '--set-upstream' option is no longer supported. Please use '--track' or "
 "'--set-upstream-to' instead."
@@ -11378,19 +11671,19 @@ msgstr "git bundle list-heads <檔案> [<參考名稱>...]"
 msgid "git bundle unbundle <file> [<refname>...]"
 msgstr "git bundle unbundle <檔案> [<參考名稱>...]"
 
-#: builtin/bundle.c:67 builtin/pack-objects.c:3480
+#: builtin/bundle.c:67 builtin/pack-objects.c:3495
 msgid "do not show progress meter"
 msgstr "不顯示進度表"
 
-#: builtin/bundle.c:69 builtin/pack-objects.c:3482
+#: builtin/bundle.c:69 builtin/pack-objects.c:3497
 msgid "show progress meter"
 msgstr "顯示進度表"
 
-#: builtin/bundle.c:71 builtin/pack-objects.c:3484
+#: builtin/bundle.c:71 builtin/pack-objects.c:3499
 msgid "show progress meter during object writing phase"
 msgstr "在物件寫入階段顯示進度表"
 
-#: builtin/bundle.c:74 builtin/pack-objects.c:3487
+#: builtin/bundle.c:74 builtin/pack-objects.c:3502
 msgid "similar to --all-progress when progress meter is shown"
 msgstr "當進度表顯示時類似於 --all-progress"
 
@@ -11532,8 +11825,8 @@ msgstr "從標準輸入讀出檔案名"
 msgid "terminate input and output records by a NUL character"
 msgstr "輸入和輸出的紀錄使用 NUL 字元終結"
 
-#: builtin/check-ignore.c:21 builtin/checkout.c:1500 builtin/gc.c:541
-#: builtin/worktree.c:561
+#: builtin/check-ignore.c:21 builtin/checkout.c:1499 builtin/gc.c:549
+#: builtin/worktree.c:489
 msgid "suppress progress reporting"
 msgstr "不顯示進度報告"
 
@@ -11586,54 +11879,54 @@ msgstr "不能解析聯繫位址:%s"
 msgid "no contacts specified"
 msgstr "未指定聯繫位址"
 
-#: builtin/checkout-index.c:139
+#: builtin/checkout-index.c:152
 msgid "git checkout-index [<options>] [--] [<file>...]"
 msgstr "git checkout-index [<選項>] [--] [<檔案>...]"
 
-#: builtin/checkout-index.c:156
+#: builtin/checkout-index.c:169
 msgid "stage should be between 1 and 3 or all"
 msgstr "索引值應該取值 1 到 3 或者 all"
 
-#: builtin/checkout-index.c:173
+#: builtin/checkout-index.c:186
 msgid "check out all files in the index"
 msgstr "檢出索引區的所有檔案"
 
-#: builtin/checkout-index.c:174
+#: builtin/checkout-index.c:187
 msgid "force overwrite of existing files"
 msgstr "強制覆蓋現有的檔案"
 
-#: builtin/checkout-index.c:176
+#: builtin/checkout-index.c:189
 msgid "no warning for existing files and files not in index"
 msgstr "存在或不在索引中的檔案都沒有警告"
 
-#: builtin/checkout-index.c:178
+#: builtin/checkout-index.c:191
 msgid "don't checkout new files"
 msgstr "不檢出新檔案"
 
-#: builtin/checkout-index.c:180
+#: builtin/checkout-index.c:193
 msgid "update stat information in the index file"
 msgstr "更新索引中檔案的狀態訊息"
 
-#: builtin/checkout-index.c:184
+#: builtin/checkout-index.c:197
 msgid "read list of paths from the standard input"
 msgstr "從標準輸入讀取路徑列表"
 
-#: builtin/checkout-index.c:186
+#: builtin/checkout-index.c:199
 msgid "write the content to temporary files"
 msgstr "將內容寫入暫存檔"
 
-#: builtin/checkout-index.c:187 builtin/column.c:31
+#: builtin/checkout-index.c:200 builtin/column.c:31
 #: builtin/submodule--helper.c:1824 builtin/submodule--helper.c:1827
 #: builtin/submodule--helper.c:1835 builtin/submodule--helper.c:2333
-#: builtin/worktree.c:757
+#: builtin/worktree.c:717
 msgid "string"
 msgstr "字串"
 
-#: builtin/checkout-index.c:188
+#: builtin/checkout-index.c:201
 msgid "when creating files, prepend <string>"
 msgstr "在建立檔案時,在前面加上 <字串>"
 
-#: builtin/checkout-index.c:190
+#: builtin/checkout-index.c:203
 msgid "copy out the files from named stage"
 msgstr "從指定暫存區中拷出檔案"
 
@@ -11732,16 +12025,16 @@ msgstr "未指定 '%2$s' 時,必須使用 '%1$s'"
 msgid "'%s' or '%s' cannot be used with %s"
 msgstr "'%s' 或 '%s' 不能和 %s 一起使用"
 
-#: builtin/checkout.c:541 builtin/checkout.c:548
+#: builtin/checkout.c:543 builtin/checkout.c:550
 #, c-format
 msgid "path '%s' is unmerged"
 msgstr "路徑 '%s' 未合併"
 
-#: builtin/checkout.c:716
+#: builtin/checkout.c:718
 msgid "you need to resolve your current index first"
 msgstr "您需要先解決目前索引的衝突"
 
-#: builtin/checkout.c:770
+#: builtin/checkout.c:772
 #, c-format
 msgid ""
 "cannot continue with staged changes in the following files:\n"
@@ -11750,51 +12043,51 @@ msgstr ""
 "不能繼續,下列檔案有暫存的修改:\n"
 "%s"
 
-#: builtin/checkout.c:866
+#: builtin/checkout.c:865
 #, c-format
 msgid "Can not do reflog for '%s': %s\n"
 msgstr "不能對 '%s' 執行 reflog 動作:%s\n"
 
-#: builtin/checkout.c:908
+#: builtin/checkout.c:907
 msgid "HEAD is now at"
 msgstr "HEAD 目前位於"
 
-#: builtin/checkout.c:912 builtin/clone.c:721 t/helper/test-fast-rebase.c:202
+#: builtin/checkout.c:911 builtin/clone.c:721 t/helper/test-fast-rebase.c:202
 msgid "unable to update HEAD"
 msgstr "不能更新 HEAD"
 
-#: builtin/checkout.c:916
+#: builtin/checkout.c:915
 #, c-format
 msgid "Reset branch '%s'\n"
 msgstr "重設分支 '%s'\n"
 
-#: builtin/checkout.c:919
+#: builtin/checkout.c:918
 #, c-format
 msgid "Already on '%s'\n"
 msgstr "已經位於 '%s'\n"
 
-#: builtin/checkout.c:923
+#: builtin/checkout.c:922
 #, c-format
 msgid "Switched to and reset branch '%s'\n"
 msgstr "切換並重設分支 '%s'\n"
 
-#: builtin/checkout.c:925 builtin/checkout.c:1356
+#: builtin/checkout.c:924 builtin/checkout.c:1355
 #, c-format
 msgid "Switched to a new branch '%s'\n"
 msgstr "切換到一個新分支 '%s'\n"
 
-#: builtin/checkout.c:927
+#: builtin/checkout.c:926
 #, c-format
 msgid "Switched to branch '%s'\n"
 msgstr "切換到分支 '%s'\n"
 
 #  譯者:請維持前導空格
-#: builtin/checkout.c:978
+#: builtin/checkout.c:977
 #, c-format
 msgid " ... and %d more.\n"
 msgstr " ... 及其它 %d 個。\n"
 
-#: builtin/checkout.c:984
+#: builtin/checkout.c:983
 #, c-format
 msgid ""
 "Warning: you are leaving %d commit behind, not connected to\n"
@@ -11811,7 +12104,7 @@ msgstr[0] ""
 "\n"
 "%s\n"
 
-#: builtin/checkout.c:1003
+#: builtin/checkout.c:1002
 #, c-format
 msgid ""
 "If you want to keep it by creating a new branch, this may be a good time\n"
@@ -11832,19 +12125,19 @@ msgstr[0] ""
 " git branch <新分支名> %s\n"
 "\n"
 
-#: builtin/checkout.c:1038
+#: builtin/checkout.c:1037
 msgid "internal error in revision walk"
 msgstr "在版本遍歷時遇到內部錯誤"
 
-#: builtin/checkout.c:1042
+#: builtin/checkout.c:1041
 msgid "Previous HEAD position was"
 msgstr "之前的 HEAD 位置是"
 
-#: builtin/checkout.c:1082 builtin/checkout.c:1351
+#: builtin/checkout.c:1081 builtin/checkout.c:1350
 msgid "You are on a branch yet to be born"
 msgstr "您位於一個尚未初始化的分支"
 
-#: builtin/checkout.c:1164
+#: builtin/checkout.c:1163
 #, c-format
 msgid ""
 "'%s' could be both a local file and a tracking branch.\n"
@@ -11853,7 +12146,7 @@ msgstr ""
 "'%s' 既可以是一個本機檔案,也可以是一個追蹤分支。\n"
 "請使用 --(和可選的 --no-guess)來消除歧義"
 
-#: builtin/checkout.c:1171
+#: builtin/checkout.c:1170
 msgid ""
 "If you meant to check out a remote tracking branch on, e.g. 'origin',\n"
 "you can do so by fully qualifying the name with the --track option:\n"
@@ -11872,51 +12165,51 @@ msgstr ""
 "如果您總是喜歡使用模糊的簡短分支名 <name>,而不喜歡如 'origin' 的遠端\n"
 "版本庫名,可以在設定中設定 checkout.defaultRemote=origin。"
 
-#: builtin/checkout.c:1181
+#: builtin/checkout.c:1180
 #, c-format
 msgid "'%s' matched multiple (%d) remote tracking branches"
 msgstr "'%s' 符合多個 (%d) 遠端追蹤分支"
 
-#: builtin/checkout.c:1247
+#: builtin/checkout.c:1246
 msgid "only one reference expected"
 msgstr "預期只有一個引用"
 
-#: builtin/checkout.c:1264
+#: builtin/checkout.c:1263
 #, c-format
 msgid "only one reference expected, %d given."
 msgstr "應只有一個引用,卻提供了 %d 個。"
 
-#: builtin/checkout.c:1310 builtin/worktree.c:342 builtin/worktree.c:510
+#: builtin/checkout.c:1309 builtin/worktree.c:270 builtin/worktree.c:438
 #, c-format
 msgid "invalid reference: %s"
 msgstr "無效引用:%s"
 
-#: builtin/checkout.c:1323 builtin/checkout.c:1689
+#: builtin/checkout.c:1322 builtin/checkout.c:1688
 #, c-format
 msgid "reference is not a tree: %s"
 msgstr "引用不是一個樹:%s"
 
-#: builtin/checkout.c:1370
+#: builtin/checkout.c:1369
 #, c-format
 msgid "a branch is expected, got tag '%s'"
 msgstr "期望一個分支,得到標籤 '%s'"
 
-#: builtin/checkout.c:1372
+#: builtin/checkout.c:1371
 #, c-format
 msgid "a branch is expected, got remote branch '%s'"
 msgstr "期望一個分支,得到遠端分支 '%s'"
 
-#: builtin/checkout.c:1373 builtin/checkout.c:1381
+#: builtin/checkout.c:1372 builtin/checkout.c:1380
 #, c-format
 msgid "a branch is expected, got '%s'"
 msgstr "期望一個分支,得到 '%s'"
 
-#: builtin/checkout.c:1376
+#: builtin/checkout.c:1375
 #, c-format
 msgid "a branch is expected, got commit '%s'"
 msgstr "期望一個分支,得到提交 '%s'"
 
-#: builtin/checkout.c:1392
+#: builtin/checkout.c:1391
 msgid ""
 "cannot switch branch while merging\n"
 "Consider \"git merge --quit\" or \"git worktree add\"."
@@ -11924,7 +12217,7 @@ msgstr ""
 "不能在合併時切換分支\n"
 "考慮使用 \"git merge --quit\" 或 \"git worktree add\"。"
 
-#: builtin/checkout.c:1396
+#: builtin/checkout.c:1395
 msgid ""
 "cannot switch branch in the middle of an am session\n"
 "Consider \"git am --quit\" or \"git worktree add\"."
@@ -11932,7 +12225,7 @@ msgstr ""
 "不能在 am 工作階段期間切換分支\n"
 "考慮使用 \"git am --quit\" 或 \"git worktree add\"。"
 
-#: builtin/checkout.c:1400
+#: builtin/checkout.c:1399
 msgid ""
 "cannot switch branch while rebasing\n"
 "Consider \"git rebase --quit\" or \"git worktree add\"."
@@ -11940,7 +12233,7 @@ msgstr ""
 "不能在重定基底時切換分支\n"
 "考慮使用 \"git rebase --quit\" 或 \"git worktree add\"。"
 
-#: builtin/checkout.c:1404
+#: builtin/checkout.c:1403
 msgid ""
 "cannot switch branch while cherry-picking\n"
 "Consider \"git cherry-pick --quit\" or \"git worktree add\"."
@@ -11948,7 +12241,7 @@ msgstr ""
 "不能在揀選時切換分支\n"
 "考慮使用 \"git cherry-pick --quit\" 或 \"git worktree add\"。"
 
-#: builtin/checkout.c:1408
+#: builtin/checkout.c:1407
 msgid ""
 "cannot switch branch while reverting\n"
 "Consider \"git revert --quit\" or \"git worktree add\"."
@@ -11956,214 +12249,207 @@ msgstr ""
 "不能在還原時切換分支\n"
 "考慮使用 \"git revert --quit\" 或 \"git worktree add\"。"
 
-#: builtin/checkout.c:1412
+#: builtin/checkout.c:1411
 msgid "you are switching branch while bisecting"
-msgstr "您在執行二分尋找時切換分支"
+msgstr "您在執行二分搜尋時切換分支"
 
-#: builtin/checkout.c:1419
+#: builtin/checkout.c:1418
 msgid "paths cannot be used with switching branches"
 msgstr "路徑不能和切換分支同時使用"
 
-#: builtin/checkout.c:1422 builtin/checkout.c:1426 builtin/checkout.c:1430
+#: builtin/checkout.c:1421 builtin/checkout.c:1425 builtin/checkout.c:1429
 #, c-format
 msgid "'%s' cannot be used with switching branches"
 msgstr "'%s' 不能和切換分支同時使用"
 
-#: builtin/checkout.c:1434 builtin/checkout.c:1437 builtin/checkout.c:1440
-#: builtin/checkout.c:1445 builtin/checkout.c:1450
+#: builtin/checkout.c:1433 builtin/checkout.c:1436 builtin/checkout.c:1439
+#: builtin/checkout.c:1444 builtin/checkout.c:1449
 #, c-format
 msgid "'%s' cannot be used with '%s'"
 msgstr "'%s' 不能和 '%s' 同時使用"
 
-#: builtin/checkout.c:1447
+#: builtin/checkout.c:1446
 #, c-format
 msgid "'%s' cannot take <start-point>"
 msgstr "'%s' 不帶 <起始點>"
 
-#: builtin/checkout.c:1455
+#: builtin/checkout.c:1454
 #, c-format
 msgid "Cannot switch branch to a non-commit '%s'"
 msgstr "不能切換分支到一個非提交 '%s'"
 
-#: builtin/checkout.c:1462
+#: builtin/checkout.c:1461
 msgid "missing branch or commit argument"
 msgstr "缺少分支或提交參數"
 
-#: builtin/checkout.c:1504 builtin/clone.c:92 builtin/commit-graph.c:84
-#: builtin/commit-graph.c:222 builtin/fetch.c:172 builtin/merge.c:296
-#: builtin/multi-pack-index.c:27 builtin/pull.c:119 builtin/push.c:575
-#: builtin/send-pack.c:198
-msgid "force progress reporting"
-msgstr "強制顯示進度報告"
-
-#: builtin/checkout.c:1505
+#: builtin/checkout.c:1504
 msgid "perform a 3-way merge with the new branch"
 msgstr "和新的分支執行三方合併"
 
-#: builtin/checkout.c:1506 builtin/log.c:1800 parse-options.h:322
+#: builtin/checkout.c:1505 builtin/log.c:1799 parse-options.h:322
 msgid "style"
 msgstr "風格"
 
-#: builtin/checkout.c:1507
+#: builtin/checkout.c:1506
 msgid "conflict style (merge or diff3)"
 msgstr "衝突輸出風格(merge 或 diff3)"
 
-#: builtin/checkout.c:1519 builtin/worktree.c:558
+#: builtin/checkout.c:1518 builtin/worktree.c:486
 msgid "detach HEAD at named commit"
 msgstr "HEAD 從指定的提交分離"
 
-#: builtin/checkout.c:1520
+#: builtin/checkout.c:1519
 msgid "set upstream info for new branch"
 msgstr "為新的分支設定上游訊息"
 
-#: builtin/checkout.c:1522
+#: builtin/checkout.c:1521
 msgid "force checkout (throw away local modifications)"
 msgstr "強制檢出(捨棄本機修改)"
 
-#: builtin/checkout.c:1524
+#: builtin/checkout.c:1523
 msgid "new-branch"
 msgstr "新分支"
 
-#: builtin/checkout.c:1524
+#: builtin/checkout.c:1523
 msgid "new unparented branch"
 msgstr "新的沒有父提交的分支"
 
-#: builtin/checkout.c:1526 builtin/merge.c:300
+#: builtin/checkout.c:1525 builtin/merge.c:301
 msgid "update ignored files (default)"
 msgstr "更新忽略的檔案(預設)"
 
-#: builtin/checkout.c:1529
+#: builtin/checkout.c:1528
 msgid "do not check if another worktree is holding the given ref"
 msgstr "不檢查指定的引用是否被其他工作區所占用"
 
-#: builtin/checkout.c:1542
+#: builtin/checkout.c:1541
 msgid "checkout our version for unmerged files"
 msgstr "對尚未合併的檔案檢出我們的版本"
 
-#: builtin/checkout.c:1545
+#: builtin/checkout.c:1544
 msgid "checkout their version for unmerged files"
 msgstr "對尚未合併的檔案檢出他們的版本"
 
-#: builtin/checkout.c:1549
+#: builtin/checkout.c:1548
 msgid "do not limit pathspecs to sparse entries only"
 msgstr "對路徑不做稀疏檢出的限制"
 
-#: builtin/checkout.c:1604
+#: builtin/checkout.c:1603
 #, c-format
 msgid "-%c, -%c and --orphan are mutually exclusive"
 msgstr "-%c、-%c 和 --orphan 是互斥的"
 
-#: builtin/checkout.c:1608
+#: builtin/checkout.c:1607
 msgid "-p and --overlay are mutually exclusive"
 msgstr "-p 和 --overlay 互斥"
 
-#: builtin/checkout.c:1645
+#: builtin/checkout.c:1644
 msgid "--track needs a branch name"
 msgstr "--track 需要一個分支名"
 
-#: builtin/checkout.c:1650
+#: builtin/checkout.c:1649
 #, c-format
 msgid "missing branch name; try -%c"
 msgstr "缺少分支名稱,請嘗試 -%c"
 
-#: builtin/checkout.c:1682
+#: builtin/checkout.c:1681
 #, c-format
 msgid "could not resolve %s"
 msgstr "無法解析 %s"
 
-#: builtin/checkout.c:1698
+#: builtin/checkout.c:1697
 msgid "invalid path specification"
 msgstr "無效的路徑規格"
 
-#: builtin/checkout.c:1705
+#: builtin/checkout.c:1704
 #, c-format
 msgid "'%s' is not a commit and a branch '%s' cannot be created from it"
 msgstr "'%s' 不是一個提交,不能基於它建立分支 '%s'"
 
-#: builtin/checkout.c:1709
+#: builtin/checkout.c:1708
 #, c-format
 msgid "git checkout: --detach does not take a path argument '%s'"
 msgstr "git checkout:--detach 不能接收路徑參數 '%s'"
 
-#: builtin/checkout.c:1718
+#: builtin/checkout.c:1717
 msgid "--pathspec-from-file is incompatible with --detach"
 msgstr "--pathspec-from-file 與 --detach 不相容"
 
-#: builtin/checkout.c:1721 builtin/reset.c:325 builtin/stash.c:1499
+#: builtin/checkout.c:1720 builtin/reset.c:325 builtin/stash.c:1566
 msgid "--pathspec-from-file is incompatible with --patch"
 msgstr "--pathspec-from-file 與 --patch 不相容"
 
-#: builtin/checkout.c:1734
+#: builtin/checkout.c:1733
 msgid ""
 "git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
 "checking out of the index."
 msgstr ""
 "git checkout:在從索引檢出時,--ours/--theirs、--force 和 --merge 不相容。"
 
-#: builtin/checkout.c:1739
+#: builtin/checkout.c:1738
 msgid "you must specify path(s) to restore"
 msgstr "您必須指定一個要復原的路徑"
 
-#: builtin/checkout.c:1765 builtin/checkout.c:1767 builtin/checkout.c:1816
-#: builtin/checkout.c:1818 builtin/clone.c:122 builtin/remote.c:170
-#: builtin/remote.c:172 builtin/submodule--helper.c:2719 builtin/worktree.c:554
-#: builtin/worktree.c:556
+#: builtin/checkout.c:1764 builtin/checkout.c:1766 builtin/checkout.c:1815
+#: builtin/checkout.c:1817 builtin/clone.c:122 builtin/remote.c:170
+#: builtin/remote.c:172 builtin/submodule--helper.c:2719 builtin/worktree.c:482
+#: builtin/worktree.c:484
 msgid "branch"
 msgstr "分支"
 
-#: builtin/checkout.c:1766
+#: builtin/checkout.c:1765
 msgid "create and checkout a new branch"
 msgstr "建立並檢出一個新的分支"
 
-#: builtin/checkout.c:1768
+#: builtin/checkout.c:1767
 msgid "create/reset and checkout a branch"
 msgstr "建立/重設並檢出一個分支"
 
-#: builtin/checkout.c:1769
+#: builtin/checkout.c:1768
 msgid "create reflog for new branch"
 msgstr "為新的分支建立引用日誌"
 
-#: builtin/checkout.c:1771
+#: builtin/checkout.c:1770
 msgid "second guess 'git checkout <no-such-branch>' (default)"
 msgstr "二次猜測 'git checkout <無此分支>'(預設)"
 
-#: builtin/checkout.c:1772
+#: builtin/checkout.c:1771
 msgid "use overlay mode (default)"
 msgstr "使用疊加模式(預設)"
 
-#: builtin/checkout.c:1817
+#: builtin/checkout.c:1816
 msgid "create and switch to a new branch"
 msgstr "建立並切換一個新分支"
 
-#: builtin/checkout.c:1819
+#: builtin/checkout.c:1818
 msgid "create/reset and switch to a branch"
 msgstr "建立/重設並切換一個分支"
 
-#: builtin/checkout.c:1821
+#: builtin/checkout.c:1820
 msgid "second guess 'git switch <no-such-branch>'"
 msgstr "二次猜測 'git switch <無此分支>'"
 
-#: builtin/checkout.c:1823
+#: builtin/checkout.c:1822
 msgid "throw away local modifications"
 msgstr "捨棄本機修改"
 
-#: builtin/checkout.c:1857
+#: builtin/checkout.c:1856
 msgid "which tree-ish to checkout from"
 msgstr "要檢出哪一個樹"
 
-#: builtin/checkout.c:1859
+#: builtin/checkout.c:1858
 msgid "restore the index"
 msgstr "復原索引"
 
-#: builtin/checkout.c:1861
+#: builtin/checkout.c:1860
 msgid "restore the working tree (default)"
 msgstr "復原工作區(預設)"
 
-#: builtin/checkout.c:1863
+#: builtin/checkout.c:1862
 msgid "ignore unmerged entries"
 msgstr "忽略未合併條目"
 
-#: builtin/checkout.c:1864
+#: builtin/checkout.c:1863
 msgid "use overlay mode"
 msgstr "使用疊加模式"
 
@@ -12307,8 +12593,8 @@ msgid "remove whole directories"
 msgstr "刪除整個目錄"
 
 #: builtin/clean.c:909 builtin/describe.c:565 builtin/describe.c:567
-#: builtin/grep.c:921 builtin/log.c:183 builtin/log.c:185
-#: builtin/ls-files.c:558 builtin/name-rev.c:526 builtin/name-rev.c:528
+#: builtin/grep.c:922 builtin/log.c:184 builtin/log.c:186
+#: builtin/ls-files.c:573 builtin/name-rev.c:526 builtin/name-rev.c:528
 #: builtin/show-ref.c:179
 msgid "pattern"
 msgstr "模式"
@@ -12402,7 +12688,7 @@ msgid "use --reference only while cloning"
 msgstr "僅在複製時參考 --reference 指向的本機版本庫"
 
 #: builtin/clone.c:120 builtin/column.c:27 builtin/init-db.c:563
-#: builtin/merge-file.c:46 builtin/pack-objects.c:3546 builtin/repack.c:358
+#: builtin/merge-file.c:46 builtin/pack-objects.c:3561 builtin/repack.c:357
 msgid "name"
 msgstr "名稱"
 
@@ -12418,7 +12704,7 @@ msgstr "檢出 <分支> 而不是遠端 HEAD"
 msgid "path to git-upload-pack on the remote"
 msgstr "遠端 git-upload-pack 路徑"
 
-#: builtin/clone.c:126 builtin/fetch.c:173 builtin/grep.c:860
+#: builtin/clone.c:126 builtin/fetch.c:176 builtin/grep.c:861
 #: builtin/pull.c:208
 msgid "depth"
 msgstr "深度"
@@ -12427,7 +12713,7 @@ msgstr "深度"
 msgid "create a shallow clone of that depth"
 msgstr "建立一個指定深度的淺複製"
 
-#: builtin/clone.c:128 builtin/fetch.c:175 builtin/pack-objects.c:3535
+#: builtin/clone.c:128 builtin/fetch.c:178 builtin/pack-objects.c:3550
 #: builtin/pull.c:211
 msgid "time"
 msgstr "時間"
@@ -12436,12 +12722,12 @@ msgstr "時間"
 msgid "create a shallow clone since a specific time"
 msgstr "從一個特定時間建立一個淺複製"
 
-#: builtin/clone.c:130 builtin/fetch.c:177 builtin/fetch.c:200
-#: builtin/pull.c:214 builtin/pull.c:239 builtin/rebase.c:1317
+#: builtin/clone.c:130 builtin/fetch.c:180 builtin/fetch.c:203
+#: builtin/pull.c:214 builtin/pull.c:239 builtin/rebase.c:1323
 msgid "revision"
 msgstr "修訂版"
 
-#: builtin/clone.c:131 builtin/fetch.c:178 builtin/pull.c:215
+#: builtin/clone.c:131 builtin/fetch.c:181 builtin/pull.c:215
 msgid "deepen history of shallow clone, excluding rev"
 msgstr "深化淺複製的歷史,除了特定版本"
 
@@ -12474,22 +12760,22 @@ msgstr "key=value"
 msgid "set config inside the new repository"
 msgstr "在新版本庫中設定設定訊息"
 
-#: builtin/clone.c:143 builtin/fetch.c:195 builtin/ls-remote.c:76
+#: builtin/clone.c:143 builtin/fetch.c:198 builtin/ls-remote.c:77
 #: builtin/pull.c:230 builtin/push.c:584 builtin/send-pack.c:196
 msgid "server-specific"
 msgstr "server-specific"
 
-#: builtin/clone.c:143 builtin/fetch.c:195 builtin/ls-remote.c:76
+#: builtin/clone.c:143 builtin/fetch.c:198 builtin/ls-remote.c:77
 #: builtin/pull.c:231 builtin/push.c:584 builtin/send-pack.c:197
 msgid "option to transmit"
 msgstr "傳輸選項"
 
-#: builtin/clone.c:144 builtin/fetch.c:196 builtin/pull.c:234
+#: builtin/clone.c:144 builtin/fetch.c:199 builtin/pull.c:234
 #: builtin/push.c:585
 msgid "use IPv4 addresses only"
 msgstr "只使用 IPv4 位址"
 
-#: builtin/clone.c:146 builtin/fetch.c:198 builtin/pull.c:237
+#: builtin/clone.c:146 builtin/fetch.c:201 builtin/pull.c:237
 #: builtin/push.c:587
 msgid "use IPv6 addresses only"
 msgstr "只使用 IPv6 位址"
@@ -12589,110 +12875,110 @@ msgstr "無法執行 repack 來清理"
 msgid "cannot unlink temporary alternates file"
 msgstr "無法刪除暫時的 alternates 檔案"
 
-#: builtin/clone.c:992 builtin/receive-pack.c:2493
+#: builtin/clone.c:993 builtin/receive-pack.c:2493
 msgid "Too many arguments."
 msgstr "太多參數。"
 
-#: builtin/clone.c:996
+#: builtin/clone.c:997
 msgid "You must specify a repository to clone."
 msgstr "您必須指定一個版本庫來複製。"
 
-#: builtin/clone.c:1009
+#: builtin/clone.c:1010
 #, c-format
 msgid "--bare and --origin %s options are incompatible."
 msgstr "--bare 和 --origin %s 選項不相容。"
 
-#: builtin/clone.c:1012
+#: builtin/clone.c:1013
 msgid "--bare and --separate-git-dir are incompatible."
 msgstr "--bare 和 --separate-git-dir 選項不相容。"
 
-#: builtin/clone.c:1025
+#: builtin/clone.c:1026
 #, c-format
 msgid "repository '%s' does not exist"
 msgstr "版本庫 '%s' 不存在"
 
-#: builtin/clone.c:1029 builtin/fetch.c:1841
+#: builtin/clone.c:1030 builtin/fetch.c:1951
 #, c-format
 msgid "depth %s is not a positive number"
 msgstr "深度 %s 不是一個正數"
 
-#: builtin/clone.c:1039
+#: builtin/clone.c:1040
 #, c-format
 msgid "destination path '%s' already exists and is not an empty directory."
 msgstr "目標路徑 '%s' 已經存在,並且不是一個空目錄。"
 
-#: builtin/clone.c:1045
+#: builtin/clone.c:1046
 #, c-format
 msgid "repository path '%s' already exists and is not an empty directory."
 msgstr "版本庫路徑 '%s' 已經存在,並且不是一個空目錄。"
 
-#: builtin/clone.c:1059
+#: builtin/clone.c:1060
 #, c-format
 msgid "working tree '%s' already exists."
 msgstr "工作區 '%s' 已經存在。"
 
-#: builtin/clone.c:1074 builtin/clone.c:1095 builtin/difftool.c:271
-#: builtin/log.c:1987 builtin/worktree.c:354 builtin/worktree.c:386
+#: builtin/clone.c:1075 builtin/clone.c:1096 builtin/difftool.c:271
+#: builtin/log.c:1986 builtin/worktree.c:282 builtin/worktree.c:314
 #, c-format
 msgid "could not create leading directories of '%s'"
 msgstr "不能為 '%s' 建立先導目錄"
 
-#: builtin/clone.c:1079
+#: builtin/clone.c:1080
 #, c-format
 msgid "could not create work tree dir '%s'"
 msgstr "不能建立工作區目錄 '%s'"
 
-#: builtin/clone.c:1099
+#: builtin/clone.c:1100
 #, c-format
 msgid "Cloning into bare repository '%s'...\n"
 msgstr "複製到純版本庫 '%s'...\n"
 
-#: builtin/clone.c:1101
+#: builtin/clone.c:1102
 #, c-format
 msgid "Cloning into '%s'...\n"
 msgstr "正複製到 '%s'...\n"
 
-#: builtin/clone.c:1125
+#: builtin/clone.c:1126
 msgid ""
 "clone --recursive is not compatible with both --reference and --reference-if-"
 "able"
 msgstr "clone --recursive 和 --reference 以及 --reference-if-able 不相容"
 
-#: builtin/clone.c:1169 builtin/remote.c:200 builtin/remote.c:705
+#: builtin/clone.c:1170 builtin/remote.c:200 builtin/remote.c:705
 #, c-format
 msgid "'%s' is not a valid remote name"
 msgstr "'%s' 不是一個有效的遠端名稱"
 
-#: builtin/clone.c:1210
+#: builtin/clone.c:1211
 msgid "--depth is ignored in local clones; use file:// instead."
 msgstr "--depth 在本機複製時被忽略,請改用 file:// 協定。"
 
-#: builtin/clone.c:1212
+#: builtin/clone.c:1213
 msgid "--shallow-since is ignored in local clones; use file:// instead."
 msgstr "--shallow-since 在本機複製時被忽略,請改用 file:// 協定。"
 
-#: builtin/clone.c:1214
+#: builtin/clone.c:1215
 msgid "--shallow-exclude is ignored in local clones; use file:// instead."
 msgstr "--shallow-exclude 在本機複製時被忽略,請改用 file:// 協定。"
 
-#: builtin/clone.c:1216
+#: builtin/clone.c:1217
 msgid "--filter is ignored in local clones; use file:// instead."
 msgstr "--filter 在本機複製時被忽略,請改用 file:// 協定。"
 
-#: builtin/clone.c:1219
+#: builtin/clone.c:1220
 msgid "source repository is shallow, ignoring --local"
 msgstr "源版本庫是淺複製,忽略 --local"
 
-#: builtin/clone.c:1224
+#: builtin/clone.c:1225
 msgid "--local is ignored"
 msgstr "--local 被忽略"
 
-#: builtin/clone.c:1311 builtin/clone.c:1319
+#: builtin/clone.c:1315 builtin/clone.c:1323
 #, c-format
 msgid "Remote branch %s not found in upstream %s"
 msgstr "遠端分支 %s 在上游 %s 未發現"
 
-#: builtin/clone.c:1322
+#: builtin/clone.c:1326
 msgid "You appear to have cloned an empty repository."
 msgstr "您似乎複製了一個空版本庫。"
 
@@ -12751,13 +13037,13 @@ msgid "could not find object directory matching %s"
 msgstr "找不到符合 %s 的物件目錄"
 
 #: builtin/commit-graph.c:80 builtin/commit-graph.c:210
-#: builtin/commit-graph.c:316 builtin/fetch.c:184 builtin/log.c:1769
+#: builtin/commit-graph.c:316 builtin/fetch.c:187 builtin/log.c:1768
 msgid "dir"
 msgstr "目錄"
 
 #: builtin/commit-graph.c:81 builtin/commit-graph.c:211
 #: builtin/commit-graph.c:317
-msgid "The object directory to store the graph"
+msgid "the object directory to store the graph"
 msgstr "儲存圖形的物件目錄"
 
 #: builtin/commit-graph.c:83
@@ -12845,7 +13131,7 @@ msgstr ""
 msgid "duplicate parent %s ignored"
 msgstr "忽略重複的父提交 %s"
 
-#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:555
+#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:557
 #, c-format
 msgid "not a valid object name %s"
 msgstr "不是一個有效的物件名 %s"
@@ -12873,9 +13159,9 @@ msgstr "父提交"
 msgid "id of a parent commit object"
 msgstr "父提交物件 ID"
 
-#: builtin/commit-tree.c:114 builtin/commit.c:1504 builtin/merge.c:281
-#: builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1470
-#: builtin/tag.c:413
+#: builtin/commit-tree.c:114 builtin/commit.c:1504 builtin/merge.c:282
+#: builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1537
+#: builtin/tag.c:445
 msgid "message"
 msgstr "訊息"
 
@@ -12887,7 +13173,7 @@ msgstr "提交訊息"
 msgid "read commit log message from file"
 msgstr "從檔案中讀取提交說明"
 
-#: builtin/commit-tree.c:121 builtin/commit.c:1516 builtin/merge.c:298
+#: builtin/commit-tree.c:121 builtin/commit.c:1516 builtin/merge.c:299
 #: builtin/pull.c:176 builtin/revert.c:118
 msgid "GPG sign commit"
 msgstr "GPG 提交簽名"
@@ -13037,7 +13323,7 @@ msgstr "無法選擇一個未被目前提交說明使用的備註字元"
 msgid "could not lookup commit %s"
 msgstr "不能查詢提交 %s"
 
-#: builtin/commit.c:729 builtin/shortlog.c:425
+#: builtin/commit.c:729 builtin/shortlog.c:413
 #, c-format
 msgid "(reading log message from standard input)\n"
 msgstr "(正從標準輸入中讀取日誌訊息)\n"
@@ -13136,7 +13422,7 @@ msgstr "無法讀取索引"
 msgid "Error building trees"
 msgstr "無法建立樹狀物件"
 
-#: builtin/commit.c:1011 builtin/tag.c:276
+#: builtin/commit.c:1011 builtin/tag.c:308
 #, c-format
 msgid "Please supply the message using either -m or -F option.\n"
 msgstr "請使用 -m 或 -F 選項提供提交說明。\n"
@@ -13226,7 +13512,7 @@ msgid "version"
 msgstr "版本"
 
 #: builtin/commit.c:1374 builtin/commit.c:1533 builtin/push.c:560
-#: builtin/worktree.c:725
+#: builtin/worktree.c:679
 msgid "machine-readable output"
 msgstr "機器可讀的輸出"
 
@@ -13240,20 +13526,21 @@ msgstr "條目以 NUL 字元結尾"
 
 #: builtin/commit.c:1382 builtin/commit.c:1386 builtin/commit.c:1541
 #: builtin/fast-export.c:1198 builtin/fast-export.c:1201
-#: builtin/fast-export.c:1204 builtin/rebase.c:1406 parse-options.h:336
+#: builtin/fast-export.c:1204 builtin/rebase.c:1412 parse-options.h:336
 msgid "mode"
 msgstr "模式"
 
 #: builtin/commit.c:1383 builtin/commit.c:1541
 msgid "show untracked files, optional modes: all, normal, no. (Default: all)"
-msgstr "顯示未追蹤的檔案,「模式」的可選參數:all、normal、no。(預設:all)"
+msgstr "顯示未追蹤的檔案,「模式」的可選參數:all、normal、no。(預設:all)"
 
 #: builtin/commit.c:1387
 msgid ""
 "show ignored files, optional modes: traditional, matching, no. (Default: "
 "traditional)"
 msgstr ""
-"顯示已忽略的檔案,可選模式:traditional、matching、no。(預設:traditional)"
+"顯示已忽略的檔案,可選模式:traditional、matching、no。(預設值:"
+"traditional)"
 
 #: builtin/commit.c:1389 parse-options.h:192
 msgid "when"
@@ -13264,7 +13551,7 @@ msgid ""
 "ignore changes to submodules, optional when: all, dirty, untracked. "
 "(Default: all)"
 msgstr ""
-"忽略子模組的更改,「何時」的可選參數:all、dirty、untracked。(預設:all)"
+"忽略子模組的更改,「何時」的可選參數:all、dirty、untracked。(預設:all)"
 
 #: builtin/commit.c:1392
 msgid "list untracked files in columns"
@@ -13294,7 +13581,7 @@ msgstr "在提交說明範本裡顯示差異"
 msgid "Commit message options"
 msgstr "提交說明選項"
 
-#: builtin/commit.c:1501 builtin/merge.c:285 builtin/tag.c:415
+#: builtin/commit.c:1501 builtin/merge.c:286 builtin/tag.c:447
 msgid "read message from file"
 msgstr "從檔案中讀取提交說明"
 
@@ -13306,7 +13593,7 @@ msgstr "作者"
 msgid "override author for commit"
 msgstr "提交時覆蓋作者"
 
-#: builtin/commit.c:1503 builtin/gc.c:542
+#: builtin/commit.c:1503 builtin/gc.c:550
 msgid "date"
 msgstr "日期"
 
@@ -13315,7 +13602,7 @@ msgid "override date for commit"
 msgstr "提交時覆蓋日期"
 
 #: builtin/commit.c:1505 builtin/commit.c:1506 builtin/commit.c:1507
-#: builtin/commit.c:1508 parse-options.h:328 ref-filter.h:87
+#: builtin/commit.c:1508 parse-options.h:328 ref-filter.h:90
 msgid "commit"
 msgstr "提交"
 
@@ -13339,7 +13626,7 @@ msgstr "使用 autosquash 格式的提交說明用以壓縮至指定的提交"
 msgid "the commit is authored by me now (used with -C/-c/--amend)"
 msgstr "現在將該提交的作者改為我(和 -C/-c/--amend 參數共用)"
 
-#: builtin/commit.c:1510 builtin/log.c:1744 builtin/merge.c:301
+#: builtin/commit.c:1510 builtin/log.c:1743 builtin/merge.c:302
 #: builtin/pull.c:145 builtin/revert.c:110
 msgid "add a Signed-off-by trailer"
 msgstr "在結尾加入 Signed-off-by"
@@ -13491,12 +13778,10 @@ msgid "get value: name [value-pattern]"
 msgstr "取得值:name [value-pattern]"
 
 #: builtin/config.c:139
-#| msgid "get all values: key [value-regex]"
 msgid "get all values: key [value-pattern]"
 msgstr "取得所有值:key [value-pattern]"
 
 #: builtin/config.c:140
-#| msgid "get values for regexp: name-regex [value-regex]"
 msgid "get values for regexp: name-regex [value-pattern]"
 msgstr "根據正規表示式取得值:name-regex [value-pattern]"
 
@@ -13505,7 +13790,6 @@ msgid "get value specific for the URL: section[.var] URL"
 msgstr "獲得 URL 取值:section[.var] URL"
 
 #: builtin/config.c:142
-#| msgid "replace all matching variables: name value [value_regex]"
 msgid "replace all matching variables: name value [value-pattern]"
 msgstr "取代所有符合的變數:name value [value-pattern]"
 
@@ -13518,7 +13802,6 @@ msgid "remove a variable: name [value-pattern]"
 msgstr "移除一個變數:name [value-pattern]"
 
 #: builtin/config.c:145
-#| msgid "remove all matches: name [value-regex]"
 msgid "remove all matches: name [value-pattern]"
 msgstr "移除所有符合項目:name [value-pattern]"
 
@@ -13923,7 +14206,7 @@ msgstr "只輸出精確符合"
 
 #: builtin/describe.c:564
 msgid "consider <n> most recent tags (default: 10)"
-msgstr "考慮最近 <n> 個標籤(預設:10)"
+msgstr "考慮最近 <n> 個標籤(預設:10)"
 
 #: builtin/describe.c:566
 msgid "only consider tags matching <pattern>"
@@ -13943,11 +14226,11 @@ msgstr "標記"
 
 #: builtin/describe.c:572
 msgid "append <mark> on dirty working tree (default: \"-dirty\")"
-msgstr "對於髒工作區,追加 <標記>(預設:\"-dirty\")"
+msgstr "對於髒工作區,追加 <標記>(預設值:”-dirty\")"
 
 #: builtin/describe.c:575
 msgid "append <mark> on broken working tree (default: \"-broken\")"
-msgstr "對於損壞的工作區,追加 <標記>(預設:\"-broken\")"
+msgstr "對於損壞的工作區,追加 <標記>(預設值:”-broken\")"
 
 #: builtin/describe.c:593
 msgid "--long is incompatible with --abbrev=0"
@@ -13966,7 +14249,6 @@ msgid "--broken is incompatible with commit-ishes"
 msgstr "--broken 與提交號不相容"
 
 #: builtin/diff-tree.c:155
-#| msgid "-p and --overlay are mutually exclusive"
 msgid "--stdin and --merge-base are mutually exclusive"
 msgstr "--stdin 和 --merge-base 互斥"
 
@@ -13974,41 +14256,41 @@ msgstr "--stdin 和 --merge-base 互斥"
 msgid "--merge-base only works with two commits"
 msgstr "--merge-base 只對 2 個以上的提交有用"
 
-#: builtin/diff.c:91
+#: builtin/diff.c:92
 #, c-format
 msgid "'%s': not a regular file or symlink"
 msgstr "'%s':不是一個正規檔案或符號連結"
 
-#: builtin/diff.c:258
+#: builtin/diff.c:259
 #, c-format
 msgid "invalid option: %s"
 msgstr "無效選項:%s"
 
-#: builtin/diff.c:375
+#: builtin/diff.c:376
 #, c-format
 msgid "%s...%s: no merge base"
 msgstr "%s...%s: 無合併基底"
 
-#: builtin/diff.c:485
+#: builtin/diff.c:486
 msgid "Not a git repository"
 msgstr "不是一個 git 版本庫"
 
-#: builtin/diff.c:530 builtin/grep.c:681
+#: builtin/diff.c:532 builtin/grep.c:682
 #, c-format
 msgid "invalid object '%s' given."
 msgstr "提供了無效物件 '%s'。"
 
-#: builtin/diff.c:541
+#: builtin/diff.c:543
 #, c-format
 msgid "more than two blobs given: '%s'"
 msgstr "提供了超過兩個資料物件:'%s'"
 
-#: builtin/diff.c:546
+#: builtin/diff.c:548
 #, c-format
 msgid "unhandled object '%s' given."
 msgstr "無法處理的物件 '%s'。"
 
-#: builtin/diff.c:580
+#: builtin/diff.c:582
 #, c-format
 msgid "%s...%s: multiple merge bases, using %s"
 msgstr "%s...%s:多個合併基底,使用 %s"
@@ -14123,7 +14405,7 @@ msgstr "沒有為 --tool=<工具> 參數提供 <工具>"
 
 #: builtin/difftool.c:756
 msgid "no <cmd> given for --extcmd=<cmd>"
-msgstr "沒有為 --extcmd=<指令> 參數提供 <指令>"
+msgstr "沒有為 --extcmd=<命令> 參數提供 <命令>"
 
 #: builtin/env--helper.c:6
 msgid "git env--helper --type=[bool|ulong] <options> <env-var>"
@@ -14182,40 +14464,40 @@ msgid "select handling of commit messages in an alternate encoding"
 msgstr "選擇使用備用編碼處理提交說明"
 
 #: builtin/fast-export.c:1208
-msgid "Dump marks to this file"
-msgstr "æ\8a\8aæ¨\99è¨\98å\84²å­\98到這個檔案"
+msgid "dump marks to this file"
+msgstr "æ\8a\8aæ¨\99è¨\98å\82¾å\8d°到這個檔案"
 
 #: builtin/fast-export.c:1210
-msgid "Import marks from this file"
+msgid "import marks from this file"
 msgstr "從這個檔案匯入標記"
 
 #: builtin/fast-export.c:1214
-msgid "Import marks from this file if it exists"
-msgstr "å¾\9e該æª\94æ¡\88å\8c¯å\85¥æ¨\99è¨\98ï¼\88å¦\82æ\9e\9cå­\98å\9c¨ç\9a\84話ï¼\89"
+msgid "import marks from this file if it exists"
+msgstr "å¦\82æ\9e\9cé\80\99å\80\8bæª\94æ¡\88å­\98å\9c¨ï¼\8cå\89\87å¾\9eæª\94æ¡\88å\8c¯å\85¥æ¨\99è¨\98"
 
 #: builtin/fast-export.c:1216
-msgid "Fake a tagger when tags lack one"
-msgstr "當標籤缺少標記者欄位時,假裝提供一個"
+msgid "fake a tagger when tags lack one"
+msgstr "當標籤缺少標記者欄位時假裝有一個"
 
 #: builtin/fast-export.c:1218
-msgid "Output full tree for each commit"
-msgstr "每次提交都輸出整樹"
+msgid "output full tree for each commit"
+msgstr "每次提交都輸出整樹"
 
 #: builtin/fast-export.c:1220
-msgid "Use the done feature to terminate the stream"
-msgstr "使用 done 功能來終止流"
+msgid "use the done feature to terminate the stream"
+msgstr "使用 done 功能終止串流"
 
 #: builtin/fast-export.c:1221
-msgid "Skip output of blob data"
-msgstr "跳過資料物件的輸出"
+msgid "skip output of blob data"
+msgstr "跳過資料物件資料的輸出"
 
-#: builtin/fast-export.c:1222 builtin/log.c:1816
+#: builtin/fast-export.c:1222 builtin/log.c:1815
 msgid "refspec"
 msgstr "參照規格"
 
 #: builtin/fast-export.c:1223
-msgid "Apply refspec to exported refs"
-msgstr "對匯出的引用用引用規格"
+msgid "apply refspec to exported refs"
+msgstr "對匯出的引用用引用規格"
 
 #: builtin/fast-export.c:1224
 msgid "anonymize output"
@@ -14230,16 +14512,16 @@ msgid "convert <from> to <to> in anonymized output"
 msgstr "在匿名輸出中將 <from> 轉換為 <to>"
 
 #: builtin/fast-export.c:1229
-msgid "Reference parents which are not in fast-export stream by object id"
-msgstr "引用父物件 ID 不在 fast-export 流中"
+msgid "reference parents which are not in fast-export stream by object id"
+msgstr "依物件 ID 參考不在 fast-export 串流中的引用父物件"
 
 #: builtin/fast-export.c:1231
-msgid "Show original object ids of blobs/commits"
-msgstr "顯示資料物件/提交的原始物件 ID"
+msgid "show original object ids of blobs/commits"
+msgstr "顯示資料物件提交的原始物件 ID"
 
 #: builtin/fast-export.c:1233
-msgid "Label tags with mark ids"
-msgstr "對帶有標記 ID 的標籤做標記"
+msgid "label tags with mark ids"
+msgstr "為包含標記 ID 的標籤打上標記"
 
 #: builtin/fast-export.c:1256
 msgid "--anonymize-map without --anonymize does not make sense"
@@ -14278,7 +14560,7 @@ msgstr "期望子模組 rewrite 選項的格式是 name:filename"
 msgid "feature '%s' forbidden in input without --allow-unsafe-features"
 msgstr "沒有 --allow-unsafe-features 時,禁止在輸入中使用 '%s' 功能"
 
-#: builtin/fetch-pack.c:241
+#: builtin/fetch-pack.c:242
 #, c-format
 msgid "Lockfile created but not reported: %s"
 msgstr "已建立鎖定檔案,但尚未回報:%s"
@@ -14299,190 +14581,194 @@ msgstr "git fetch --multiple [<選項>] [(<版本庫> | <組>)...]"
 msgid "git fetch --all [<options>]"
 msgstr "git fetch --all [<選項>]"
 
-#: builtin/fetch.c:119
+#: builtin/fetch.c:120
 msgid "fetch.parallel cannot be negative"
 msgstr "fetch.parallel 不能為負數"
 
-#: builtin/fetch.c:142 builtin/pull.c:185
+#: builtin/fetch.c:143 builtin/pull.c:185
 msgid "fetch from all remotes"
 msgstr "從所有的遠端抓取"
 
-#: builtin/fetch.c:144 builtin/pull.c:245
+#: builtin/fetch.c:145 builtin/pull.c:245
 msgid "set upstream for git pull/fetch"
 msgstr "為 git pull/fetch 設定上游"
 
-#: builtin/fetch.c:146 builtin/pull.c:188
+#: builtin/fetch.c:147 builtin/pull.c:188
 msgid "append to .git/FETCH_HEAD instead of overwriting"
 msgstr "追加到 .git/FETCH_HEAD 而不是覆蓋它"
 
-#: builtin/fetch.c:148 builtin/pull.c:191
+#: builtin/fetch.c:149
+msgid "use atomic transaction to update references"
+msgstr "使用原子事務更新參考"
+
+#: builtin/fetch.c:151 builtin/pull.c:191
 msgid "path to upload pack on remote end"
 msgstr "上傳包到遠端的路徑"
 
-#: builtin/fetch.c:149
+#: builtin/fetch.c:152
 msgid "force overwrite of local reference"
 msgstr "強制覆蓋本機引用"
 
-#: builtin/fetch.c:151
+#: builtin/fetch.c:154
 msgid "fetch from multiple remotes"
 msgstr "從多個遠端抓取"
 
-#: builtin/fetch.c:153 builtin/pull.c:195
+#: builtin/fetch.c:156 builtin/pull.c:195
 msgid "fetch all tags and associated objects"
 msgstr "抓取所有的標籤和關聯物件"
 
-#: builtin/fetch.c:155
+#: builtin/fetch.c:158
 msgid "do not fetch all tags (--no-tags)"
 msgstr "不抓取任何標籤(--no-tags)"
 
-#: builtin/fetch.c:157
+#: builtin/fetch.c:160
 msgid "number of submodules fetched in parallel"
 msgstr "子模組取得的並發數"
 
-#: builtin/fetch.c:159 builtin/pull.c:198
+#: builtin/fetch.c:162 builtin/pull.c:198
 msgid "prune remote-tracking branches no longer on remote"
 msgstr "清除遠端已經不存在的分支的追蹤分支"
 
-#: builtin/fetch.c:161
+#: builtin/fetch.c:164
 msgid "prune local tags no longer on remote and clobber changed tags"
 msgstr "清除遠端不存在的本機標籤,並且取代變更標籤"
 
 #  譯者:可選值,不能翻譯
-#: builtin/fetch.c:162 builtin/fetch.c:187 builtin/pull.c:122
+#: builtin/fetch.c:165 builtin/fetch.c:190 builtin/pull.c:122
 msgid "on-demand"
 msgstr "on-demand"
 
-#: builtin/fetch.c:163
+#: builtin/fetch.c:166
 msgid "control recursive fetching of submodules"
 msgstr "控制子模組的遞迴抓取"
 
-#: builtin/fetch.c:168
+#: builtin/fetch.c:171
 msgid "write fetched references to the FETCH_HEAD file"
 msgstr "將取得的參考寫入 FETCH_HEAD 檔案"
 
-#: builtin/fetch.c:169 builtin/pull.c:206
+#: builtin/fetch.c:172 builtin/pull.c:206
 msgid "keep downloaded pack"
 msgstr "保持下載包"
 
-#: builtin/fetch.c:171
+#: builtin/fetch.c:174
 msgid "allow updating of HEAD ref"
 msgstr "允許更新 HEAD 引用"
 
-#: builtin/fetch.c:174 builtin/fetch.c:180 builtin/pull.c:209
+#: builtin/fetch.c:177 builtin/fetch.c:183 builtin/pull.c:209
 #: builtin/pull.c:218
 msgid "deepen history of shallow clone"
 msgstr "深化淺複製的歷史"
 
-#: builtin/fetch.c:176 builtin/pull.c:212
+#: builtin/fetch.c:179 builtin/pull.c:212
 msgid "deepen history of shallow repository based on time"
 msgstr "基於時間來深化淺複製的歷史"
 
-#: builtin/fetch.c:182 builtin/pull.c:221
+#: builtin/fetch.c:185 builtin/pull.c:221
 msgid "convert to a complete repository"
 msgstr "轉換為一個完整的版本庫"
 
-#: builtin/fetch.c:185
+#: builtin/fetch.c:188
 msgid "prepend this to submodule path output"
 msgstr "在子模組路徑輸出的前面加上此目錄"
 
-#: builtin/fetch.c:188
+#: builtin/fetch.c:191
 msgid ""
 "default for recursive fetching of submodules (lower priority than config "
 "files)"
 msgstr "遞迴取得子模組的預設值(比設定檔案優先度低)"
 
-#: builtin/fetch.c:192 builtin/pull.c:224
+#: builtin/fetch.c:195 builtin/pull.c:224
 msgid "accept refs that update .git/shallow"
 msgstr "接受更新 .git/shallow 的引用"
 
-#: builtin/fetch.c:193 builtin/pull.c:226
+#: builtin/fetch.c:196 builtin/pull.c:226
 msgid "refmap"
 msgstr "引用映射"
 
-#: builtin/fetch.c:194 builtin/pull.c:227
+#: builtin/fetch.c:197 builtin/pull.c:227
 msgid "specify fetch refmap"
 msgstr "指定取得動作的引用映射"
 
-#: builtin/fetch.c:201 builtin/pull.c:240
+#: builtin/fetch.c:204 builtin/pull.c:240
 msgid "report that we have only objects reachable from this object"
 msgstr "報告我們只擁有從該物件開始可以取得的物件"
 
-#: builtin/fetch.c:204 builtin/fetch.c:206
+#: builtin/fetch.c:207 builtin/fetch.c:209
 msgid "run 'maintenance --auto' after fetching"
 msgstr "取得 (fetch) 後執行 'maintenance --auto'"
 
-#: builtin/fetch.c:208 builtin/pull.c:243
+#: builtin/fetch.c:211 builtin/pull.c:243
 msgid "check for forced-updates on all updated branches"
 msgstr "在所有更新分支上檢查強制更新"
 
-#: builtin/fetch.c:210
+#: builtin/fetch.c:213
 msgid "write the commit-graph after fetching"
 msgstr "抓取後寫入分支圖"
 
-#: builtin/fetch.c:212
+#: builtin/fetch.c:215
 msgid "accept refspecs from stdin"
 msgstr "從標準輸入中接受引用表達式"
 
-#: builtin/fetch.c:523
+#: builtin/fetch.c:526
 msgid "Couldn't find remote ref HEAD"
 msgstr "無法發現遠端 HEAD 引用"
 
-#: builtin/fetch.c:677
+#: builtin/fetch.c:697
 #, c-format
 msgid "configuration fetch.output contains invalid value %s"
 msgstr "設定變數 fetch.output 包含無效值 %s"
 
-#: builtin/fetch.c:775
+#: builtin/fetch.c:796
 #, c-format
 msgid "object %s not found"
 msgstr "物件 %s 未發現"
 
-#: builtin/fetch.c:779
+#: builtin/fetch.c:800
 msgid "[up to date]"
 msgstr "[最新]"
 
-#: builtin/fetch.c:792 builtin/fetch.c:808 builtin/fetch.c:880
+#: builtin/fetch.c:813 builtin/fetch.c:829 builtin/fetch.c:901
 msgid "[rejected]"
 msgstr "[已拒絕]"
 
-#: builtin/fetch.c:793
+#: builtin/fetch.c:814
 msgid "can't fetch in current branch"
 msgstr "目前分支下不能執行取得動作"
 
-#: builtin/fetch.c:803
+#: builtin/fetch.c:824
 msgid "[tag update]"
 msgstr "[標籤更新]"
 
-#: builtin/fetch.c:804 builtin/fetch.c:841 builtin/fetch.c:863
-#: builtin/fetch.c:875
+#: builtin/fetch.c:825 builtin/fetch.c:862 builtin/fetch.c:884
+#: builtin/fetch.c:896
 msgid "unable to update local ref"
 msgstr "不能更新本機引用"
 
-#: builtin/fetch.c:808
+#: builtin/fetch.c:829
 msgid "would clobber existing tag"
 msgstr "會破壞現有的標籤"
 
-#: builtin/fetch.c:830
+#: builtin/fetch.c:851
 msgid "[new tag]"
 msgstr "[新標籤]"
 
-#: builtin/fetch.c:833
+#: builtin/fetch.c:854
 msgid "[new branch]"
 msgstr "[新分支]"
 
-#: builtin/fetch.c:836
+#: builtin/fetch.c:857
 msgid "[new ref]"
 msgstr "[新引用]"
 
-#: builtin/fetch.c:875
+#: builtin/fetch.c:896
 msgid "forced update"
 msgstr "強制更新"
 
-#: builtin/fetch.c:880
+#: builtin/fetch.c:901
 msgid "non-fast-forward"
 msgstr "非快轉"
 
-#: builtin/fetch.c:901
+#: builtin/fetch.c:1005
 msgid ""
 "Fetch normally indicates which branches had a forced update,\n"
 "but that check has been disabled. To re-enable, use '--show-forced-updates'\n"
@@ -14492,7 +14778,7 @@ msgstr ""
 "要重新啟用,請使用 '--show-forced-updates' 選項或執行\n"
 "'git config fetch.showForcedUpdates true'。"
 
-#: builtin/fetch.c:905
+#: builtin/fetch.c:1009
 #, c-format
 msgid ""
 "It took %.2f seconds to check forced updates. You can use\n"
@@ -14503,22 +14789,22 @@ msgstr ""
 "花了 %.2f 秒來檢查強制更新。您可以使用 '--no-show-forced-updates'\n"
 "或執行 'git config fetch.showForcedUpdates false' 以避免此項檢查。\n"
 
-#: builtin/fetch.c:939
+#: builtin/fetch.c:1041
 #, c-format
 msgid "%s did not send all necessary objects\n"
 msgstr "%s 未傳送所有必需的物件\n"
 
-#: builtin/fetch.c:960
+#: builtin/fetch.c:1069
 #, c-format
 msgid "reject %s because shallow roots are not allowed to be updated"
 msgstr "拒絕 %s 因為淺複製不允許被更新"
 
-#: builtin/fetch.c:1053 builtin/fetch.c:1191
+#: builtin/fetch.c:1146 builtin/fetch.c:1297
 #, c-format
 msgid "From %.*s\n"
 msgstr "來自 %.*s\n"
 
-#: builtin/fetch.c:1064
+#: builtin/fetch.c:1168
 #, c-format
 msgid ""
 "some local refs could not be updated; try running\n"
@@ -14528,57 +14814,57 @@ msgstr ""
 " 'git remote prune %s' 來刪除舊的、有衝突的分支"
 
 #  譯者:請維持前導空格
-#: builtin/fetch.c:1161
+#: builtin/fetch.c:1267
 #, c-format
 msgid "   (%s will become dangling)"
 msgstr "   (%s 將成為懸空狀態)"
 
 #  譯者:請維持前導空格
-#: builtin/fetch.c:1162
+#: builtin/fetch.c:1268
 #, c-format
 msgid "   (%s has become dangling)"
 msgstr "   (%s 已成為懸空狀態)"
 
-#: builtin/fetch.c:1194
+#: builtin/fetch.c:1300
 msgid "[deleted]"
 msgstr "[已刪除]"
 
-#: builtin/fetch.c:1195 builtin/remote.c:1118
+#: builtin/fetch.c:1301 builtin/remote.c:1118
 msgid "(none)"
 msgstr "(無)"
 
-#: builtin/fetch.c:1218
+#: builtin/fetch.c:1324
 #, c-format
 msgid "Refusing to fetch into current branch %s of non-bare repository"
 msgstr "拒絕取得到非純版本庫的目前分支 %s"
 
-#: builtin/fetch.c:1237
+#: builtin/fetch.c:1343
 #, c-format
 msgid "Option \"%s\" value \"%s\" is not valid for %s"
 msgstr "選項 \"%s\" 的值 \"%s\" 對於 %s 是無效的"
 
-#: builtin/fetch.c:1240
+#: builtin/fetch.c:1346
 #, c-format
 msgid "Option \"%s\" is ignored for %s\n"
 msgstr "選項 \"%s\" 為 %s 所忽略\n"
 
-#: builtin/fetch.c:1448
+#: builtin/fetch.c:1558
 msgid "multiple branches detected, incompatible with --set-upstream"
 msgstr "檢測到多分支,和 --set-upstream 不相容"
 
-#: builtin/fetch.c:1463
+#: builtin/fetch.c:1573
 msgid "not setting upstream for a remote remote-tracking branch"
 msgstr "沒有為一個遠端追蹤分支設定上游"
 
-#: builtin/fetch.c:1465
+#: builtin/fetch.c:1575
 msgid "not setting upstream for a remote tag"
 msgstr "沒有為一個遠端標籤設定上游"
 
-#: builtin/fetch.c:1467
+#: builtin/fetch.c:1577
 msgid "unknown branch type"
 msgstr "未知的分支類型"
 
-#: builtin/fetch.c:1469
+#: builtin/fetch.c:1579
 msgid ""
 "no source branch found.\n"
 "you need to specify exactly one branch with the --set-upstream option."
@@ -14586,71 +14872,75 @@ msgstr ""
 "未發現源分支。\n"
 "您需要使用 --set-upstream 選項指定一個分支。"
 
-#: builtin/fetch.c:1598 builtin/fetch.c:1661
+#: builtin/fetch.c:1708 builtin/fetch.c:1771
 #, c-format
 msgid "Fetching %s\n"
 msgstr "正在取得 %s\n"
 
-#: builtin/fetch.c:1608 builtin/fetch.c:1663 builtin/remote.c:101
+#: builtin/fetch.c:1718 builtin/fetch.c:1773 builtin/remote.c:101
 #, c-format
 msgid "Could not fetch %s"
 msgstr "不能取得 %s"
 
-#: builtin/fetch.c:1620
+#: builtin/fetch.c:1730
 #, c-format
 msgid "could not fetch '%s' (exit code: %d)\n"
 msgstr "無法取得 '%s'(離開碼:%d)\n"
 
-#: builtin/fetch.c:1724
+#: builtin/fetch.c:1834
 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:1760
+#: builtin/fetch.c:1870
 msgid "You need to specify a tag name."
 msgstr "您需要指定一個標籤名稱。"
 
-#: builtin/fetch.c:1825
+#: builtin/fetch.c:1935
 msgid "Negative depth in --deepen is not supported"
 msgstr "--deepen 不支援負數深度"
 
-#: builtin/fetch.c:1827
+#: builtin/fetch.c:1937
 msgid "--deepen and --depth are mutually exclusive"
 msgstr "--deepen 和 --depth 是互斥的"
 
-#: builtin/fetch.c:1832
+#: builtin/fetch.c:1942
 msgid "--depth and --unshallow cannot be used together"
 msgstr "--depth 和 --unshallow 不能同時使用"
 
-#: builtin/fetch.c:1834
+#: builtin/fetch.c:1944
 msgid "--unshallow on a complete repository does not make sense"
 msgstr "對於一個完整的版本庫,參數 --unshallow 沒有意義"
 
-#: builtin/fetch.c:1851
+#: builtin/fetch.c:1961
 msgid "fetch --all does not take a repository argument"
 msgstr "fetch --all 不能帶一個版本庫參數"
 
-#: builtin/fetch.c:1853
+#: builtin/fetch.c:1963
 msgid "fetch --all does not make sense with refspecs"
 msgstr "fetch --all 帶引用規格沒有任何意義"
 
-#: builtin/fetch.c:1862
+#: builtin/fetch.c:1972
 #, c-format
 msgid "No such remote or remote group: %s"
 msgstr "沒有這樣的遠端或遠端組:%s"
 
-#: builtin/fetch.c:1869
+#: builtin/fetch.c:1979
 msgid "Fetching a group and specifying refspecs does not make sense"
 msgstr "取得組並指定引用規格沒有意義"
 
-#: builtin/fetch.c:1887
+#: builtin/fetch.c:1997
 msgid ""
 "--filter can only be used with the remote configured in extensions."
 "partialclone"
 msgstr "只可以將 --filter 用於在 extensions.partialClone 中設定的遠端版本庫"
 
-#: builtin/fetch.c:1891
+#: builtin/fetch.c:2001
+msgid "--atomic can only be used when fetching from one remote"
+msgstr "--stdin 只能在擷取 (fetch) 一個遠端時使用"
+
+#: builtin/fetch.c:2005
 msgid "--stdin can only be used when fetching from one remote"
 msgstr "--stdin 只能在取得一個遠端時使用"
 
@@ -14715,7 +15005,7 @@ msgstr "引用占位符適用於 Tcl"
 msgid "show only <n> matched refs"
 msgstr "只顯示 <n> 個符合的引用"
 
-#: builtin/for-each-ref.c:39 builtin/tag.c:440
+#: builtin/for-each-ref.c:39 builtin/tag.c:472
 msgid "respect format colors"
 msgstr "遵照格式中的顏色輸出"
 
@@ -14744,7 +15034,6 @@ msgid "git for-each-repo --config=<config> <command-args>"
 msgstr "git for-each-repo --config=<設定> <命令引數>"
 
 #: builtin/for-each-repo.c:37
-#| msgid "conflicted"
 msgid "config"
 msgstr "config"
 
@@ -14756,32 +15045,32 @@ msgstr "儲存版本庫路徑清單的設定鍵"
 msgid "missing --config=<config>"
 msgstr "缺少 --config=<設定>"
 
-#: builtin/fsck.c:69 builtin/fsck.c:148 builtin/fsck.c:149
+#: builtin/fsck.c:69 builtin/fsck.c:130 builtin/fsck.c:131
 msgid "unknown"
 msgstr "未知"
 
 #. TRANSLATORS: e.g. error in tree 01bfda: <more explanation>
-#: builtin/fsck.c:101 builtin/fsck.c:121
+#: builtin/fsck.c:83 builtin/fsck.c:103
 #, c-format
 msgid "error in %s %s: %s"
 msgstr "%s %s 錯誤:%s"
 
 #. TRANSLATORS: e.g. warning in tree 01bfda: <more explanation>
-#: builtin/fsck.c:115
+#: builtin/fsck.c:97
 #, c-format
 msgid "warning in %s %s: %s"
 msgstr "%s %s 警告:%s"
 
-#: builtin/fsck.c:144 builtin/fsck.c:147
+#: builtin/fsck.c:126 builtin/fsck.c:129
 #, c-format
 msgid "broken link from %7s %s"
 msgstr "來自 %7s %s 的損壞的連結"
 
-#: builtin/fsck.c:156
+#: builtin/fsck.c:138
 msgid "wrong object type in link"
 msgstr "連結中錯誤的物件類型"
 
-#: builtin/fsck.c:172
+#: builtin/fsck.c:154
 #, c-format
 msgid ""
 "broken link from %7s %s\n"
@@ -14790,211 +15079,211 @@ msgstr ""
 "損壞的連結來自於 %7s %s\n"
 "              到 %7s %s"
 
-#: builtin/fsck.c:283
+#: builtin/fsck.c:265
 #, c-format
 msgid "missing %s %s"
 msgstr "缺少 %s %s"
 
-#: builtin/fsck.c:310
+#: builtin/fsck.c:292
 #, c-format
 msgid "unreachable %s %s"
 msgstr "無法取得 %s %s"
 
-#: builtin/fsck.c:330
+#: builtin/fsck.c:312
 #, c-format
 msgid "dangling %s %s"
 msgstr "懸空 %s %s"
 
-#: builtin/fsck.c:340
+#: builtin/fsck.c:322
 msgid "could not create lost-found"
 msgstr "不能建立 lost-found"
 
-#: builtin/fsck.c:351
+#: builtin/fsck.c:333
 #, c-format
 msgid "could not finish '%s'"
 msgstr "不能完成 '%s'"
 
-#: builtin/fsck.c:368
+#: builtin/fsck.c:350
 #, c-format
 msgid "Checking %s"
 msgstr "正在檢查 %s"
 
-#: builtin/fsck.c:406
+#: builtin/fsck.c:388
 #, c-format
 msgid "Checking connectivity (%d objects)"
 msgstr "正在檢查連通性(%d 個物件)"
 
-#: builtin/fsck.c:425
+#: builtin/fsck.c:407
 #, c-format
 msgid "Checking %s %s"
 msgstr "正在檢查 %s %s"
 
-#: builtin/fsck.c:430
+#: builtin/fsck.c:412
 msgid "broken links"
 msgstr "損壞的連結"
 
-#: builtin/fsck.c:439
+#: builtin/fsck.c:421
 #, c-format
 msgid "root %s"
 msgstr "根 %s"
 
-#: builtin/fsck.c:447
+#: builtin/fsck.c:429
 #, c-format
 msgid "tagged %s %s (%s) in %s"
-msgstr "標記 %s %s (%s) 於 %s"
+msgstr "標記 %s %s (%s) 於 %s"
 
-#: builtin/fsck.c:476
+#: builtin/fsck.c:458
 #, c-format
 msgid "%s: object corrupt or missing"
 msgstr "%s:物件損壞或遺失"
 
-#: builtin/fsck.c:501
+#: builtin/fsck.c:483
 #, c-format
 msgid "%s: invalid reflog entry %s"
 msgstr "%s:無效的引用日誌條目 %s"
 
-#: builtin/fsck.c:515
+#: builtin/fsck.c:497
 #, c-format
 msgid "Checking reflog %s->%s"
 msgstr "正在檢查引用日誌 %s->%s"
 
-#: builtin/fsck.c:549
+#: builtin/fsck.c:531
 #, c-format
 msgid "%s: invalid sha1 pointer %s"
 msgstr "%s:無效的 sha1 指標 %s"
 
-#: builtin/fsck.c:556
+#: builtin/fsck.c:538
 #, c-format
 msgid "%s: not a commit"
 msgstr "%s:不是一個提交"
 
-#: builtin/fsck.c:610
+#: builtin/fsck.c:592
 msgid "notice: No default references"
 msgstr "注意:無預設引用"
 
-#: builtin/fsck.c:625
+#: builtin/fsck.c:607
 #, c-format
 msgid "%s: object corrupt or missing: %s"
 msgstr "%s:物件損壞或遺失:%s"
 
-#: builtin/fsck.c:638
+#: builtin/fsck.c:620
 #, c-format
 msgid "%s: object could not be parsed: %s"
 msgstr "%s:不能解析物件:%s"
 
-#: builtin/fsck.c:658
+#: builtin/fsck.c:640
 #, c-format
 msgid "bad sha1 file: %s"
 msgstr "壞的 sha1 檔案:%s"
 
-#: builtin/fsck.c:673
+#: builtin/fsck.c:655
 msgid "Checking object directory"
 msgstr "正在檢查物件目錄"
 
-#: builtin/fsck.c:676
+#: builtin/fsck.c:658
 msgid "Checking object directories"
 msgstr "正在檢查物件目錄"
 
-#: builtin/fsck.c:691
+#: builtin/fsck.c:673
 #, c-format
 msgid "Checking %s link"
 msgstr "正在檢查 %s 連結"
 
-#: builtin/fsck.c:696 builtin/index-pack.c:865
+#: builtin/fsck.c:678 builtin/index-pack.c:865
 #, c-format
 msgid "invalid %s"
 msgstr "無效的 %s"
 
-#: builtin/fsck.c:703
+#: builtin/fsck.c:685
 #, c-format
 msgid "%s points to something strange (%s)"
 msgstr "%s 指向奇怪的東西(%s)"
 
-#: builtin/fsck.c:709
+#: builtin/fsck.c:691
 #, c-format
 msgid "%s: detached HEAD points at nothing"
 msgstr "%s:分離開頭指標的指向不存在"
 
-#: builtin/fsck.c:713
+#: builtin/fsck.c:695
 #, c-format
 msgid "notice: %s points to an unborn branch (%s)"
 msgstr "注意:%s 指向一個尚未誕生的分支(%s)"
 
-#: builtin/fsck.c:725
+#: builtin/fsck.c:707
 msgid "Checking cache tree"
 msgstr "正在檢查快取樹"
 
-#: builtin/fsck.c:730
+#: builtin/fsck.c:712
 #, c-format
 msgid "%s: invalid sha1 pointer in cache-tree"
 msgstr "%s:cache-tree 中無效的 sha1 指標"
 
-#: builtin/fsck.c:739
+#: builtin/fsck.c:721
 msgid "non-tree in cache-tree"
 msgstr "cache-tree 中非樹狀物件"
 
-#: builtin/fsck.c:770
+#: builtin/fsck.c:752
 msgid "git fsck [<options>] [<object>...]"
 msgstr "git fsck [<選項>] [<物件>...]"
 
-#: builtin/fsck.c:776
+#: builtin/fsck.c:758
 msgid "show unreachable objects"
 msgstr "顯示無法取得的物件"
 
-#: builtin/fsck.c:777
+#: builtin/fsck.c:759
 msgid "show dangling objects"
 msgstr "顯示懸空的物件"
 
-#: builtin/fsck.c:778
+#: builtin/fsck.c:760
 msgid "report tags"
 msgstr "報告標籤"
 
-#: builtin/fsck.c:779
+#: builtin/fsck.c:761
 msgid "report root nodes"
 msgstr "報告根節點"
 
-#: builtin/fsck.c:780
+#: builtin/fsck.c:762
 msgid "make index objects head nodes"
 msgstr "將索引亦作為檢查的頭節點"
 
-#: builtin/fsck.c:781
+#: builtin/fsck.c:763
 msgid "make reflogs head nodes (default)"
 msgstr "將引用日誌作為檢查的頭節點(預設)"
 
-#: builtin/fsck.c:782
+#: builtin/fsck.c:764
 msgid "also consider packs and alternate objects"
 msgstr "也考慮包和備用物件"
 
-#: builtin/fsck.c:783
+#: builtin/fsck.c:765
 msgid "check only connectivity"
 msgstr "僅檢查連通性"
 
-#: builtin/fsck.c:784
+#: builtin/fsck.c:766 builtin/mktag.c:78
 msgid "enable more strict checking"
 msgstr "啟用更嚴格的檢查"
 
-#: builtin/fsck.c:786
+#: builtin/fsck.c:768
 msgid "write dangling objects in .git/lost-found"
 msgstr "將懸空物件寫入 .git/lost-found 中"
 
-#: builtin/fsck.c:787 builtin/prune.c:134
+#: builtin/fsck.c:769 builtin/prune.c:134
 msgid "show progress"
 msgstr "顯示進度"
 
-#: builtin/fsck.c:788
+#: builtin/fsck.c:770
 msgid "show verbose names for reachable objects"
 msgstr "顯示可以取得物件的詳細名稱"
 
-#: builtin/fsck.c:847 builtin/index-pack.c:261
+#: builtin/fsck.c:829 builtin/index-pack.c:261
 msgid "Checking objects"
 msgstr "正在檢查物件"
 
-#: builtin/fsck.c:875
+#: builtin/fsck.c:857
 #, c-format
 msgid "%s: object missing"
 msgstr "%s:物件缺少"
 
-#: builtin/fsck.c:886
+#: builtin/fsck.c:868
 #, c-format
 msgid "invalid parameter: expected sha1, got '%s'"
 msgstr "無效的參數:期望 sha1,得到 '%s'"
@@ -15003,27 +15292,27 @@ msgstr "無效的參數:期望 sha1,得到 '%s'"
 msgid "git gc [<options>]"
 msgstr "git gc [<選項>]"
 
-#: builtin/gc.c:94
+#: builtin/gc.c:93
 #, c-format
 msgid "Failed to fstat %s: %s"
 msgstr "對 %s 呼叫 fstat 失敗:%s"
 
-#: builtin/gc.c:130
+#: builtin/gc.c:129
 #, c-format
 msgid "failed to parse '%s' value '%s'"
 msgstr "無法解析 '%s' 值 '%s'"
 
-#: builtin/gc.c:479 builtin/init-db.c:58
+#: builtin/gc.c:487 builtin/init-db.c:58
 #, c-format
 msgid "cannot stat '%s'"
 msgstr "不能對 '%s' 呼叫 stat"
 
-#: builtin/gc.c:488 builtin/notes.c:240 builtin/tag.c:530
+#: builtin/gc.c:496 builtin/notes.c:240 builtin/tag.c:562
 #, c-format
 msgid "cannot read '%s'"
 msgstr "不能讀取 '%s'"
 
-#: builtin/gc.c:495
+#: builtin/gc.c:503
 #, c-format
 msgid ""
 "The last gc run reported the following. Please correct the root cause\n"
@@ -15037,197 +15326,218 @@ msgstr ""
 "\n"
 "%s"
 
-#: builtin/gc.c:543
+#: builtin/gc.c:551
 msgid "prune unreferenced objects"
 msgstr "清除未引用的物件"
 
-#: builtin/gc.c:545
+#: builtin/gc.c:553
 msgid "be more thorough (increased runtime)"
 msgstr "更徹底(增加執行時間)"
 
-#: builtin/gc.c:546
+#: builtin/gc.c:554
 msgid "enable auto-gc mode"
 msgstr "啟用自動垃圾回收模式"
 
-#: builtin/gc.c:549
+#: builtin/gc.c:557
 msgid "force running gc even if there may be another gc running"
 msgstr "強制執行 gc 即使另外一個 gc 正在執行"
 
-#: builtin/gc.c:552
+#: builtin/gc.c:560
 msgid "repack all other packs except the largest pack"
 msgstr "除了最大的包之外,對所有其它包檔案重新打包"
 
-#: builtin/gc.c:569
+#: builtin/gc.c:576
 #, c-format
 msgid "failed to parse gc.logexpiry value %s"
 msgstr "解析 gc.logexpiry 的值 %s 失敗"
 
-#: builtin/gc.c:580
+#: builtin/gc.c:587
 #, c-format
 msgid "failed to parse prune expiry value %s"
 msgstr "解析清除期限值 %s 失敗"
 
-#: builtin/gc.c:600
+#: builtin/gc.c:607
 #, c-format
 msgid "Auto packing the repository in background for optimum performance.\n"
 msgstr "自動在後台執行版本庫打包以求最佳性能。\n"
 
-#: builtin/gc.c:602
+#: builtin/gc.c:609
 #, c-format
 msgid "Auto packing the repository for optimum performance.\n"
 msgstr "自動打包版本庫以求最佳性能。\n"
 
-#: builtin/gc.c:603
+#: builtin/gc.c:610
 #, c-format
 msgid "See \"git help gc\" for manual housekeeping.\n"
 msgstr "手動維護參見 \"git help gc\"。\n"
 
-#: builtin/gc.c:643
+#: builtin/gc.c:650
 #, c-format
 msgid ""
 "gc is already running on machine '%s' pid %<PRIuMAX> (use --force if not)"
 msgstr "gc 已在「%s」機器 pid %<PRIuMAX> 執行(如果不是,使用 --force)"
 
-#: builtin/gc.c:698
+#: builtin/gc.c:705
 msgid ""
 "There are too many unreachable loose objects; run 'git prune' to remove them."
 msgstr "有太多無法取得的鬆散物件,執行 'git prune' 刪除它們。"
 
-#: builtin/gc.c:708
-#| msgid "git maintenance run [--auto] [--[no-]quiet] [--task=<task>]"
+#: builtin/gc.c:715
 msgid ""
 "git maintenance run [--auto] [--[no-]quiet] [--task=<task>] [--schedule]"
 msgstr ""
 "git maintenance run [--auto] [--[no-]quiet] [--task=<作業>] [--schedule]"
 
-#: builtin/gc.c:738
+#: builtin/gc.c:745
 msgid "--no-schedule is not allowed"
 msgstr "不允許 --no-schedule"
 
-#: builtin/gc.c:743
+#: builtin/gc.c:750
 #, c-format
-#| msgid "unrecognized --split argument, %s"
 msgid "unrecognized --schedule argument '%s'"
 msgstr "無法識別的 --schedule 引數 '%s'"
 
-#: builtin/gc.c:862
+#: builtin/gc.c:869
 msgid "failed to write commit-graph"
 msgstr "無法寫入提交圖形"
 
-#: builtin/gc.c:901
+#: builtin/gc.c:914
 msgid "failed to fill remotes"
 msgstr "無法填充遠端位置"
 
-#: builtin/gc.c:1024
+#: builtin/gc.c:1037
 msgid "failed to start 'git pack-objects' process"
 msgstr "無法啟動 ‘git pack-objects’ 處理程序"
 
-#: builtin/gc.c:1041
-#| msgid "could not finish pack-objects"
+#: builtin/gc.c:1054
 msgid "failed to finish 'git pack-objects' process"
 msgstr "無法完成 ‘git pack-objects’ 處理程序"
 
-#: builtin/gc.c:1093
+#: builtin/gc.c:1106
 msgid "failed to write multi-pack-index"
 msgstr "無法寫入多包索引"
 
-#: builtin/gc.c:1111
-#| msgid "multi-pack-index file exists, but failed to parse"
+#: builtin/gc.c:1124
 msgid "'git multi-pack-index expire' failed"
 msgstr "'git multi-pack-index expire' 失敗"
 
-#: builtin/gc.c:1172
-#| msgid "failed to load pack-index for packfile %s"
+#: builtin/gc.c:1185
 msgid "'git multi-pack-index repack' failed"
 msgstr "'git multi-pack-index repack' 失敗"
 
-#: builtin/gc.c:1181
+#: builtin/gc.c:1194
 msgid ""
 "skipping incremental-repack task because core.multiPackIndex is disabled"
 msgstr "略過增量重新打包工作,因為 core.multiPackIndex 已被停用"
 
-#: builtin/gc.c:1279
+#: builtin/gc.c:1298
 #, c-format
 msgid "lock file '%s' exists, skipping maintenance"
 msgstr "已存在 '%s' 鎖定檔案,略過維護"
 
-#: builtin/gc.c:1309
+#: builtin/gc.c:1328
 #, c-format
 msgid "task '%s' failed"
 msgstr "作業 '%s' 失敗"
 
-#: builtin/gc.c:1389
+#: builtin/gc.c:1410
 #, c-format
 msgid "'%s' is not a valid task"
 msgstr "'%s' 非有效作業"
 
-#: builtin/gc.c:1394
+#: builtin/gc.c:1415
 #, c-format
 msgid "task '%s' cannot be selected multiple times"
 msgstr "不能多次選取 '%s' 作業"
 
-#: builtin/gc.c:1409
+#: builtin/gc.c:1430
 msgid "run tasks based on the state of the repository"
 msgstr "基於版本庫狀態執行作業"
 
-#: builtin/gc.c:1410
+#: builtin/gc.c:1431
 msgid "frequency"
 msgstr "frequency"
 
-#: builtin/gc.c:1411
+#: builtin/gc.c:1432
 msgid "run tasks based on frequency"
 msgstr "依據頻率執行工作"
 
-#: builtin/gc.c:1414
+#: builtin/gc.c:1435
 msgid "do not report progress or other information over stderr"
 msgstr "不要在 stderr 輸出進度或其他資訊"
 
-#: builtin/gc.c:1415
+#: builtin/gc.c:1436
 msgid "task"
 msgstr "作業"
 
-#: builtin/gc.c:1416
+#: builtin/gc.c:1437
 msgid "run a specific task"
 msgstr "執行指定作業"
 
-#: builtin/gc.c:1433
+#: builtin/gc.c:1454
 msgid "use at most one of --auto and --schedule=<frequency>"
 msgstr "--auto 和 --schedule=<頻率> 請任選一"
 
-#: builtin/gc.c:1467
+#: builtin/gc.c:1497
 msgid "failed to run 'git config'"
 msgstr "無法執行 ‘git config’"
 
-#: builtin/gc.c:1512
-msgid "another process is scheduling background maintenance"
-msgstr "其他處理程序正在排定背景維護工作"
+#: builtin/gc.c:1562
+#, c-format
+msgid "failed to expand path '%s'"
+msgstr "無法展開「%s」路徑"
+
+#: builtin/gc.c:1591
+msgid "failed to start launchctl"
+msgstr "無法啟動 launchctl"
+
+#: builtin/gc.c:1628
+#, c-format
+msgid "failed to create directories for '%s'"
+msgstr "無法建立「%s」的目錄"
 
-#: builtin/gc.c:1525
+#: builtin/gc.c:1689
+#, c-format
+msgid "failed to bootstrap service %s"
+msgstr "無法啟動載入 %s 服務"
+
+#: builtin/gc.c:1760
+msgid "failed to create temp xml file"
+msgstr "無法建立暫存 XML 檔案"
+
+#: builtin/gc.c:1850
+msgid "failed to start schtasks"
+msgstr "無法啟動 schtasks"
+
+#: builtin/gc.c:1894
 msgid "failed to run 'crontab -l'; your system might not support 'cron'"
 msgstr "無法執行 “crontab -l”;您的系統可能不支援 “cron”"
 
-#: builtin/gc.c:1544
+#: builtin/gc.c:1911
 msgid "failed to run 'crontab'; your system might not support 'cron'"
 msgstr "無法執行 “crontab”;您的系統可能不支援 “cron”"
 
-#: builtin/gc.c:1550
+#: builtin/gc.c:1915
 msgid "failed to open stdin of 'crontab'"
 msgstr "無法開啟 ‘crontab’ 的標準輸入"
 
-#: builtin/gc.c:1592
+#: builtin/gc.c:1956
 msgid "'crontab' died"
 msgstr "“crontab” 結束運作"
 
-#: builtin/gc.c:1605
+#: builtin/gc.c:1990
+msgid "another process is scheduling background maintenance"
+msgstr "其他處理程序正在排定背景維護工作"
+
+#: builtin/gc.c:2009
 msgid "failed to add repo to global config"
 msgstr "無法將版本庫加至全域設定"
 
-#: builtin/gc.c:1615
-#| msgid "git maintenance run [<options>]"
+#: builtin/gc.c:2019
 msgid "git maintenance <subcommand> [<options>]"
 msgstr "git maintenance <子命令> [<選項>]"
 
-#: builtin/gc.c:1634
+#: builtin/gc.c:2038
 #, c-format
 msgid "invalid subcommand: %s"
 msgstr "無效子命令:%s"
@@ -15236,12 +15546,12 @@ msgstr "無效子命令:%s"
 msgid "git grep [<options>] [-e] <pattern> [<rev>...] [[--] <path>...]"
 msgstr "git grep [<選項>] [-e] <模式> [<版本>...] [[--] <路徑>...]"
 
-#: builtin/grep.c:225
+#: builtin/grep.c:223
 #, c-format
 msgid "grep: failed to create thread: %s"
 msgstr "grep:無法建立執行緒:%s"
 
-#: builtin/grep.c:279
+#: builtin/grep.c:277
 #, c-format
 msgid "invalid number of threads specified (%d) for %s"
 msgstr "為 %2$s 設定的執行緒數 (%1$d) 無效"
@@ -15250,259 +15560,259 @@ msgstr "為 %2$s 設定的執行緒數 (%1$d) 無效"
 #. variable for tweaking threads, currently
 #. grep.threads
 #.
-#: builtin/grep.c:287 builtin/index-pack.c:1576 builtin/index-pack.c:1766
-#: builtin/pack-objects.c:2936
+#: builtin/grep.c:285 builtin/index-pack.c:1589 builtin/index-pack.c:1808
+#: builtin/pack-objects.c:2944
 #, c-format
 msgid "no threads support, ignoring %s"
 msgstr "沒有執行緒支援,忽略 %s"
 
-#: builtin/grep.c:475 builtin/grep.c:600 builtin/grep.c:640
+#: builtin/grep.c:473 builtin/grep.c:601 builtin/grep.c:641
 #, c-format
 msgid "unable to read tree (%s)"
 msgstr "無法讀取樹(%s)"
 
-#: builtin/grep.c:655
+#: builtin/grep.c:656
 #, c-format
 msgid "unable to grep from object of type %s"
 msgstr "無法抓取來自於 %s 類型的物件"
 
-#: builtin/grep.c:736
+#: builtin/grep.c:737
 #, c-format
 msgid "switch `%c' expects a numerical value"
 msgstr "開關 `%c' 期望一個數字值"
 
-#: builtin/grep.c:835
+#: builtin/grep.c:836
 msgid "search in index instead of in the work tree"
 msgstr "在索引區搜尋而不是在工作區"
 
-#: builtin/grep.c:837
+#: builtin/grep.c:838
 msgid "find in contents not managed by git"
 msgstr "在未被 git 管理的內容中尋找"
 
 #  譯者:中文字串拼接,可刪除前導空格
-#: builtin/grep.c:839
+#: builtin/grep.c:840
 msgid "search in both tracked and untracked files"
 msgstr "在追蹤和未追蹤的檔案中搜尋"
 
-#: builtin/grep.c:841
+#: builtin/grep.c:842
 msgid "ignore files specified via '.gitignore'"
 msgstr "忽略 '.gitignore' 包含的檔案"
 
-#: builtin/grep.c:843
+#: builtin/grep.c:844
 msgid "recursively search in each submodule"
 msgstr "在每一個子模組中遞迴搜尋"
 
-#: builtin/grep.c:846
+#: builtin/grep.c:847
 msgid "show non-matching lines"
 msgstr "顯示未符合的行"
 
-#: builtin/grep.c:848
+#: builtin/grep.c:849
 msgid "case insensitive matching"
 msgstr "不區分大小寫符合"
 
-#: builtin/grep.c:850
+#: builtin/grep.c:851
 msgid "match patterns only at word boundaries"
 msgstr "只在單詞邊界符合模式"
 
-#: builtin/grep.c:852
+#: builtin/grep.c:853
 msgid "process binary files as text"
 msgstr "把二進位檔案當做文字處理"
 
-#: builtin/grep.c:854
+#: builtin/grep.c:855
 msgid "don't match patterns in binary files"
 msgstr "不在二進位檔案中符合模式"
 
-#: builtin/grep.c:857
+#: builtin/grep.c:858
 msgid "process binary files with textconv filters"
 msgstr "用 textconv 過濾器處理二進位檔案"
 
-#: builtin/grep.c:859
+#: builtin/grep.c:860
 msgid "search in subdirectories (default)"
 msgstr "在子目錄中尋找(預設)"
 
-#: builtin/grep.c:861
+#: builtin/grep.c:862
 msgid "descend at most <depth> levels"
 msgstr "最多以指定的深度向下尋找"
 
-#: builtin/grep.c:865
+#: builtin/grep.c:866
 msgid "use extended POSIX regular expressions"
 msgstr "使用擴展的 POSIX 正規表示式"
 
-#: builtin/grep.c:868
+#: builtin/grep.c:869
 msgid "use basic POSIX regular expressions (default)"
 msgstr "使用基本的 POSIX 正規表示式(預設)"
 
-#: builtin/grep.c:871
+#: builtin/grep.c:872
 msgid "interpret patterns as fixed strings"
 msgstr "把模式解析為固定的字串"
 
-#: builtin/grep.c:874
+#: builtin/grep.c:875
 msgid "use Perl-compatible regular expressions"
 msgstr "使用 Perl 相容的正規表示式"
 
-#: builtin/grep.c:877
+#: builtin/grep.c:878
 msgid "show line numbers"
 msgstr "顯示行號"
 
-#: builtin/grep.c:878
+#: builtin/grep.c:879
 msgid "show column number of first match"
 msgstr "顯示第一個符合的列號"
 
-#: builtin/grep.c:879
+#: builtin/grep.c:880
 msgid "don't show filenames"
 msgstr "不顯示檔案名"
 
-#: builtin/grep.c:880
+#: builtin/grep.c:881
 msgid "show filenames"
 msgstr "顯示檔案名"
 
-#: builtin/grep.c:882
+#: builtin/grep.c:883
 msgid "show filenames relative to top directory"
 msgstr "顯示相對於頂級目錄的檔案名"
 
-#: builtin/grep.c:884
+#: builtin/grep.c:885
 msgid "show only filenames instead of matching lines"
 msgstr "只顯示檔案名而不顯示符合的行"
 
-#: builtin/grep.c:886
+#: builtin/grep.c:887
 msgid "synonym for --files-with-matches"
 msgstr "和 --files-with-matches 同義"
 
-#: builtin/grep.c:889
+#: builtin/grep.c:890
 msgid "show only the names of files without match"
 msgstr "只顯示未符合的檔案名"
 
-#: builtin/grep.c:891
+#: builtin/grep.c:892
 msgid "print NUL after filenames"
 msgstr "在檔案名後輸出 NUL 字元"
 
-#: builtin/grep.c:894
+#: builtin/grep.c:895
 msgid "show only matching parts of a line"
 msgstr "只顯示行中的符合的部分"
 
-#: builtin/grep.c:896
+#: builtin/grep.c:897
 msgid "show the number of matches instead of matching lines"
 msgstr "顯示總符合行數,而不顯示符合的行"
 
-#: builtin/grep.c:897
+#: builtin/grep.c:898
 msgid "highlight matches"
 msgstr "高亮顯示符合項"
 
-#: builtin/grep.c:899
+#: builtin/grep.c:900
 msgid "print empty line between matches from different files"
 msgstr "在不同檔案的符合項之間列印空行"
 
-#: builtin/grep.c:901
+#: builtin/grep.c:902
 msgid "show filename only once above matches from same file"
 msgstr "只在同一檔案的符合項的上面顯示一次檔案名"
 
-#: builtin/grep.c:904
+#: builtin/grep.c:905
 msgid "show <n> context lines before and after matches"
 msgstr "顯示符合項前後的 <n> 行上下文"
 
-#: builtin/grep.c:907
+#: builtin/grep.c:908
 msgid "show <n> context lines before matches"
 msgstr "顯示符合項前 <n> 行上下文"
 
-#: builtin/grep.c:909
+#: builtin/grep.c:910
 msgid "show <n> context lines after matches"
 msgstr "顯示符合項後 <n> 行上下文"
 
-#: builtin/grep.c:911
+#: builtin/grep.c:912
 msgid "use <n> worker threads"
 msgstr "使用 <n> 個工作執行緒"
 
-#: builtin/grep.c:912
+#: builtin/grep.c:913
 msgid "shortcut for -C NUM"
 msgstr "快捷鍵 -C 數字"
 
-#: builtin/grep.c:915
+#: builtin/grep.c:916
 msgid "show a line with the function name before matches"
 msgstr "在符合的前面顯示一行函數名"
 
-#: builtin/grep.c:917
+#: builtin/grep.c:918
 msgid "show the surrounding function"
 msgstr "顯示所在函數的前後內容"
 
-#: builtin/grep.c:920
+#: builtin/grep.c:921
 msgid "read patterns from file"
 msgstr "從檔案讀取模式"
 
-#: builtin/grep.c:922
+#: builtin/grep.c:923
 msgid "match <pattern>"
 msgstr "符合 <模式>"
 
-#: builtin/grep.c:924
+#: builtin/grep.c:925
 msgid "combine patterns specified with -e"
 msgstr "組合用 -e 參數設定的模式"
 
-#: builtin/grep.c:936
+#: builtin/grep.c:937
 msgid "indicate hit with exit status without output"
 msgstr "不輸出,而用離開碼標記命中狀態"
 
-#: builtin/grep.c:938
+#: builtin/grep.c:939
 msgid "show only matches from files that match all patterns"
 msgstr "只顯示符合所有模式的檔案中的符合"
 
-#: builtin/grep.c:940
-msgid "show parse tree for grep expression"
-msgstr "顯示 grep 表達式的解析樹"
-
-#: builtin/grep.c:944
+#: builtin/grep.c:942
 msgid "pager"
 msgstr "分頁"
 
-#: builtin/grep.c:944
+#: builtin/grep.c:942
 msgid "show matching files in the pager"
 msgstr "分頁顯示符合的檔案"
 
-#: builtin/grep.c:948
+#: builtin/grep.c:946
 msgid "allow calling of grep(1) (ignored by this build)"
 msgstr "允許呼叫 grep(1)(本次組建忽略)"
 
-#: builtin/grep.c:1014
+#: builtin/grep.c:1012
 msgid "no pattern given"
 msgstr "未提供符合模式"
 
-#: builtin/grep.c:1050
+#: builtin/grep.c:1048
 msgid "--no-index or --untracked cannot be used with revs"
 msgstr "--no-index 或 --untracked 不能和版本同時使用"
 
-#: builtin/grep.c:1058
+#: builtin/grep.c:1056
 #, c-format
 msgid "unable to resolve revision: %s"
 msgstr "不能解析版本:%s"
 
-#: builtin/grep.c:1088
+#: builtin/grep.c:1086
 msgid "--untracked not supported with --recurse-submodules"
 msgstr "--untracked 不支援與 --recurse-submodules 一起使用"
 
-#: builtin/grep.c:1092
+#: builtin/grep.c:1090
 msgid "invalid option combination, ignoring --threads"
 msgstr "無效的選項組合,忽略 --threads"
 
-#: builtin/grep.c:1095 builtin/pack-objects.c:3655
+#: builtin/grep.c:1093 builtin/pack-objects.c:3672
 msgid "no threads support, ignoring --threads"
 msgstr "沒有執行緒支援,忽略 --threads"
 
-#: builtin/grep.c:1098 builtin/index-pack.c:1573 builtin/pack-objects.c:2933
+#: builtin/grep.c:1096 builtin/index-pack.c:1586 builtin/pack-objects.c:2941
 #, c-format
 msgid "invalid number of threads specified (%d)"
 msgstr "指定的執行緒數無效(%d)"
 
-#: builtin/grep.c:1132
+#: builtin/grep.c:1130
 msgid "--open-files-in-pager only works on the worktree"
 msgstr "--open-files-in-pager 僅用於工作區"
 
-#: builtin/grep.c:1158
+#: builtin/grep.c:1156
 msgid "--cached or --untracked cannot be used with --no-index"
 msgstr "--cached 或 --untracked 不能與 --no-index 同時使用"
 
-#: builtin/grep.c:1164
+#: builtin/grep.c:1159
+msgid "--untracked cannot be used with --cached"
+msgstr "--untracked 不能與 --cached 一起使用"
+
+#: builtin/grep.c:1165
 msgid "--[no-]exclude-standard cannot be used for tracked contents"
 msgstr "--[no-]exclude-standard 不能用於已追蹤內容"
 
-#: builtin/grep.c:1172
+#: builtin/grep.c:1173
 msgid "both --cached and trees are given"
 msgstr "同時給出了 --cached 和樹狀物件"
 
@@ -15577,7 +15887,7 @@ msgstr "列印指令描述"
 
 #: builtin/help.c:62
 msgid "git help [--all] [--guides] [--man | --web | --info] [<command>]"
-msgstr "git help [--all] [--guides] [--man | --web | --info] [<令>]"
+msgstr "git help [--all] [--guides] [--man | --web | --info] [<令>]"
 
 #: builtin/help.c:163
 #, c-format
@@ -15633,12 +15943,12 @@ msgstr "沒有 man 檢視器處理此請求"
 msgid "no info viewer handled the request"
 msgstr "沒有 info 檢視器處理此請求"
 
-#: builtin/help.c:520 builtin/help.c:531 git.c:337
+#: builtin/help.c:520 builtin/help.c:531 git.c:340
 #, c-format
 msgid "'%s' is aliased to '%s'"
 msgstr "'%s' 是 '%s' 的別名"
 
-#: builtin/help.c:534 git.c:369
+#: builtin/help.c:534 git.c:372
 #, c-format
 msgid "bad alias.%s string: %s"
 msgstr "壞的 alias.%s 字串:%s"
@@ -15685,7 +15995,7 @@ msgstr "輸入上的讀錯誤"
 msgid "used more bytes than were available"
 msgstr "用掉了超過可用的位元組"
 
-#: builtin/index-pack.c:324 builtin/pack-objects.c:619
+#: builtin/index-pack.c:324 builtin/pack-objects.c:624
 msgid "pack too large for current definition of off_t"
 msgstr "包太大超過了目前 off_t 的定義"
 
@@ -15693,7 +16003,7 @@ msgstr "包太大超過了目前 off_t 的定義"
 msgid "pack exceeds maximum allowed size"
 msgstr "包超過了最大允許值"
 
-#: builtin/index-pack.c:342 builtin/repack.c:286
+#: builtin/index-pack.c:342
 #, c-format
 msgid "unable to create '%s'"
 msgstr "不能建立 '%s'"
@@ -15817,7 +16127,7 @@ msgstr "parse_pack_objects() 中遇到不可理喻的問題"
 msgid "Resolving deltas"
 msgstr "處理 delta 中"
 
-#: builtin/index-pack.c:1249 builtin/pack-objects.c:2697
+#: builtin/index-pack.c:1249 builtin/pack-objects.c:2707
 #, c-format
 msgid "unable to create thread: %s"
 msgstr "不能建立執行緒:%s"
@@ -15853,10 +16163,10 @@ msgstr "不能壓縮附加物件(%d)"
 msgid "local object %s is corrupt"
 msgstr "本機物件 %s 已損壞"
 
-#: builtin/index-pack.c:1444
+#: builtin/index-pack.c:1445
 #, c-format
-msgid "packfile name '%s' does not end with '.pack'"
-msgstr "packfile 名稱 '%s' 沒有以 '.pack' 結尾"
+msgid "packfile name '%s' does not end with '.%s'"
+msgstr "packfile 名稱「%s」的結尾不是「.%s」"
 
 #: builtin/index-pack.c:1469
 #, c-format
@@ -15868,77 +16178,81 @@ msgstr "無法寫入 %s 檔案 '%s'"
 msgid "cannot close written %s file '%s'"
 msgstr "無法關閉已寫入的 %s 檔案 '%s'"
 
-#: builtin/index-pack.c:1501
+#: builtin/index-pack.c:1503
 msgid "error while closing pack file"
 msgstr "關閉包檔案時發生錯誤"
 
-#: builtin/index-pack.c:1515
+#: builtin/index-pack.c:1517
 msgid "cannot store pack file"
 msgstr "無法儲存包檔案"
 
-#: builtin/index-pack.c:1523
+#: builtin/index-pack.c:1525
 msgid "cannot store index file"
 msgstr "無法儲存索引檔案"
 
-#: builtin/index-pack.c:1567 builtin/pack-objects.c:2944
+#: builtin/index-pack.c:1534
+msgid "cannot store reverse index file"
+msgstr "無法儲存倒排索引檔案"
+
+#: builtin/index-pack.c:1580 builtin/pack-objects.c:2952
 #, c-format
 msgid "bad pack.indexversion=%<PRIu32>"
 msgstr "壞的 pack.indexversion=%<PRIu32>"
 
-#: builtin/index-pack.c:1631
+#: builtin/index-pack.c:1650
 #, c-format
 msgid "Cannot open existing pack file '%s'"
 msgstr "無法開啟現存包檔案 '%s'"
 
-#: builtin/index-pack.c:1633
+#: builtin/index-pack.c:1652
 #, c-format
 msgid "Cannot open existing pack idx file for '%s'"
 msgstr "無法為 %s 開啟包索引檔案"
 
-#: builtin/index-pack.c:1681
+#: builtin/index-pack.c:1700
 #, c-format
 msgid "non delta: %d object"
 msgid_plural "non delta: %d objects"
 msgstr[0] "非 delta:%d 個物件"
 
-#: builtin/index-pack.c:1688
+#: builtin/index-pack.c:1707
 #, c-format
 msgid "chain length = %d: %lu object"
 msgid_plural "chain length = %d: %lu objects"
 msgstr[0] "鏈長 = %d: %lu 物件"
 
-#: builtin/index-pack.c:1728
+#: builtin/index-pack.c:1765
 msgid "Cannot come back to cwd"
 msgstr "無法返回目前工作目錄"
 
-#: builtin/index-pack.c:1777 builtin/index-pack.c:1780
-#: builtin/index-pack.c:1796 builtin/index-pack.c:1800
+#: builtin/index-pack.c:1819 builtin/index-pack.c:1822
+#: builtin/index-pack.c:1838 builtin/index-pack.c:1842
 #, c-format
 msgid "bad %s"
 msgstr "錯誤選項 %s"
 
-#: builtin/index-pack.c:1806 builtin/init-db.c:392 builtin/init-db.c:625
+#: builtin/index-pack.c:1848 builtin/init-db.c:392 builtin/init-db.c:625
 #, c-format
 msgid "unknown hash algorithm '%s'"
 msgstr "未知的「%s」雜湊算法"
 
-#: builtin/index-pack.c:1821
+#: builtin/index-pack.c:1867
 msgid "--fix-thin cannot be used without --stdin"
 msgstr "--fix-thin 不能和 --stdin 同時使用"
 
-#: builtin/index-pack.c:1823
+#: builtin/index-pack.c:1869
 msgid "--stdin requires a git repository"
 msgstr "--stdin 需要一個 git 版本庫"
 
-#: builtin/index-pack.c:1825
+#: builtin/index-pack.c:1871
 msgid "--object-format cannot be used with --stdin"
 msgstr "--object-format 不能和 --stdin 同時使用"
 
-#: builtin/index-pack.c:1831
+#: builtin/index-pack.c:1886
 msgid "--verify with no packfile name given"
 msgstr "--verify 沒有提供 packfile 名稱參數"
 
-#: builtin/index-pack.c:1892 builtin/unpack-objects.c:582
+#: builtin/index-pack.c:1956 builtin/unpack-objects.c:582
 msgid "fsck error in pack objects"
 msgstr "在打包物件中 fsck 檢查發生錯誤"
 
@@ -16153,129 +16467,130 @@ msgstr "--trailer 和 --only-input 同時使用沒有意義"
 msgid "no input file given for in-place editing"
 msgstr "沒有給出要原位編輯的檔案"
 
-#: builtin/log.c:58
+#: builtin/log.c:59
 msgid "git log [<options>] [<revision-range>] [[--] <path>...]"
 msgstr "git log [<選項>] [<版本範圍>] [[--] <路徑>...]"
 
-#: builtin/log.c:59
+#: builtin/log.c:60
 msgid "git show [<options>] <object>..."
 msgstr "git show [<選項>] <物件>..."
 
-#: builtin/log.c:112
+#: builtin/log.c:113
 #, c-format
 msgid "invalid --decorate option: %s"
 msgstr "無效的 --decorate 選項:%s"
 
-#: builtin/log.c:179
+#: builtin/log.c:180
 msgid "show source"
 msgstr "顯示源"
 
-#: builtin/log.c:180
-msgid "Use mail map file"
+#: builtin/log.c:181
+msgid "use mail map file"
 msgstr "使用信件映射檔案"
 
-#: builtin/log.c:183
+#: builtin/log.c:184
 msgid "only decorate refs that match <pattern>"
 msgstr "只修飾與 <模式> 符合的引用"
 
-#: builtin/log.c:185
+#: builtin/log.c:186
 msgid "do not decorate refs that match <pattern>"
 msgstr "不修飾和 <模式> 符合的引用"
 
-#: builtin/log.c:186
+#: builtin/log.c:187
 msgid "decorate options"
 msgstr "修飾選項"
 
-#: builtin/log.c:189
+#: builtin/log.c:190
+#, fuzzy
+#| msgid "Process only line range <start>,<end> or function :<funcname>"
 msgid ""
-"Trace the evolution of line range <start>,<end> or function :<funcname> in "
+"trace the evolution of line range <start>,<end> or function :<funcname> in "
 "<file>"
-msgstr ""
+msgstr "只處理範圍在 <開始>,<結尾> 的列,或是 :<函數名稱> 函數"
 
-#: builtin/log.c:212
-#| msgid "%s: %s cannot be used with %s"
+#: builtin/log.c:213
 msgid "-L<range>:<file> cannot be used with pathspec"
 msgstr "-L<範圍>:<檔案> 和 pathspec 不能同時使用"
 
-#: builtin/log.c:302
+#: builtin/log.c:303
 #, c-format
 msgid "Final output: %d %s\n"
 msgstr "最終輸出:%d %s\n"
 
-#: builtin/log.c:564
+#: builtin/log.c:566
 #, c-format
 msgid "git show %s: bad file"
 msgstr "git show %s: 損壞的檔案"
 
-#: builtin/log.c:579 builtin/log.c:674
+#: builtin/log.c:581 builtin/log.c:671
 #, c-format
 msgid "could not read object %s"
 msgstr "不能讀取物件 %s"
 
-#: builtin/log.c:699
+#: builtin/log.c:696
 #, c-format
 msgid "unknown type: %d"
 msgstr "未知類型:%d"
 
-#: builtin/log.c:848
+#: builtin/log.c:841
 #, c-format
 msgid "%s: invalid cover from description mode"
 msgstr "%s:從描述產生附函的模式無效"
 
-#: builtin/log.c:855
+#: builtin/log.c:848
 msgid "format.headers without value"
 msgstr "format.headers 沒有值"
 
-#: builtin/log.c:984
+#: builtin/log.c:977
 #, c-format
 msgid "cannot open patch file %s"
 msgstr "無法開啟修補檔案 %s"
 
-#: builtin/log.c:1001
+#: builtin/log.c:994
 msgid "need exactly one range"
 msgstr "只需要一個範圍"
 
-#: builtin/log.c:1011
+#: builtin/log.c:1004
 msgid "not a range"
 msgstr "不是一個範圍"
 
-#: builtin/log.c:1175
+#: builtin/log.c:1168
 msgid "cover letter needs email format"
 msgstr "附函需要信件位址格式"
 
-#: builtin/log.c:1181
+#: builtin/log.c:1174
 msgid "failed to create cover-letter file"
 msgstr "無法建立附函檔案"
 
-#: builtin/log.c:1262
+#: builtin/log.c:1261
 #, c-format
 msgid "insane in-reply-to: %s"
 msgstr "不正常的 in-reply-to:%s"
 
-#: builtin/log.c:1289
+#: builtin/log.c:1288
 msgid "git format-patch [<options>] [<since> | <revision-range>]"
 msgstr "git format-patch [<選項>] [<從> | <版本範圍>]"
 
-#: builtin/log.c:1347
+#: builtin/log.c:1346
 msgid "two output directories?"
 msgstr "兩個輸出目錄?"
 
-#: builtin/log.c:1498 builtin/log.c:2318 builtin/log.c:2320 builtin/log.c:2332
+#: builtin/log.c:1497 builtin/log.c:2317 builtin/log.c:2319 builtin/log.c:2331
 #, c-format
 msgid "unknown commit %s"
 msgstr "未知提交 %s"
 
-#: builtin/log.c:1509 builtin/replace.c:58 builtin/replace.c:207
+#: builtin/log.c:1508 builtin/replace.c:58 builtin/replace.c:207
 #: builtin/replace.c:210
 #, c-format
 msgid "failed to resolve '%s' as a valid ref"
 msgstr "無法將 '%s' 解析為一個有效引用"
 
-#: builtin/log.c:1518
+#: builtin/log.c:1517
 msgid "could not find exact merge base"
 msgstr "不能找到準確的合併基礎"
 
-#: builtin/log.c:1528
+#: builtin/log.c:1527
 msgid ""
 "failed to get upstream, if you want to record base commit automatically,\n"
 "please use git branch --set-upstream-to to track a remote branch.\n"
@@ -16285,394 +16600,397 @@ msgstr ""
 "git branch --set-upstream-to 來追蹤一個遠端分支。或者你可以透過\n"
 "參數 --base=<基礎提交> 手動指定一個基礎提交"
 
-#: builtin/log.c:1551
+#: builtin/log.c:1550
 msgid "failed to find exact merge base"
 msgstr "無法找到準確的合併基礎"
 
-#: builtin/log.c:1568
+#: builtin/log.c:1567
 msgid "base commit should be the ancestor of revision list"
 msgstr "基礎提交應該是版本列表的祖先"
 
-#: builtin/log.c:1578
+#: builtin/log.c:1577
 msgid "base commit shouldn't be in revision list"
 msgstr "基礎提交不應該出現在版本列表中"
 
-#: builtin/log.c:1636
+#: builtin/log.c:1635
 msgid "cannot get patch id"
 msgstr "無法得到修補檔 id"
 
-#: builtin/log.c:1693
+#: builtin/log.c:1692
 msgid "failed to infer range-diff origin of current series"
 msgstr "無法推斷目前系列的 range-diff 起點"
 
-#: builtin/log.c:1695
+#: builtin/log.c:1694
 #, c-format
 msgid "using '%s' as range-diff origin of current series"
 msgstr "將 '%s' 當作目前系列的 range-diff 起點"
 
-#: builtin/log.c:1739
+#: builtin/log.c:1738
 msgid "use [PATCH n/m] even with a single patch"
 msgstr "使用 [PATCH n/m],即使只有一個修補檔"
 
-#: builtin/log.c:1742
+#: builtin/log.c:1741
 msgid "use [PATCH] even with multiple patches"
 msgstr "使用 [PATCH],即使有多個修補檔"
 
-#: builtin/log.c:1746
+#: builtin/log.c:1745
 msgid "print patches to standard out"
 msgstr "列印修補檔到標準輸出"
 
-#: builtin/log.c:1748
+#: builtin/log.c:1747
 msgid "generate a cover letter"
 msgstr "生成一封附函"
 
-#: builtin/log.c:1750
+#: builtin/log.c:1749
 msgid "use simple number sequence for output file names"
 msgstr "使用簡單的數字序列作為輸出檔案名"
 
-#: builtin/log.c:1751
+#: builtin/log.c:1750
 msgid "sfx"
 msgstr "後綴"
 
-#: builtin/log.c:1752
+#: builtin/log.c:1751
 msgid "use <sfx> instead of '.patch'"
 msgstr "使用 <後綴> 代替 '.patch'"
 
-#: builtin/log.c:1754
+#: builtin/log.c:1753
 msgid "start numbering patches at <n> instead of 1"
 msgstr "修補檔以 <n> 開始編號,而不是1"
 
-#: builtin/log.c:1756
+#: builtin/log.c:1755
 msgid "mark the series as Nth re-roll"
 msgstr "標記修補檔系列是第幾次重製"
 
-#: builtin/log.c:1758
+#: builtin/log.c:1757
 msgid "max length of output filename"
 msgstr "輸出檔名的最大長度"
 
-#: builtin/log.c:1760
-msgid "Use [RFC PATCH] instead of [PATCH]"
+#: builtin/log.c:1759
+msgid "use [RFC PATCH] instead of [PATCH]"
 msgstr "使用 [RFC PATCH] 代替 [PATCH]"
 
-#: builtin/log.c:1763
+#: builtin/log.c:1762
 msgid "cover-from-description-mode"
 msgstr "從描述產生附函的模式"
 
-#: builtin/log.c:1764
+#: builtin/log.c:1763
 msgid "generate parts of a cover letter based on a branch's description"
 msgstr "基於分支描述產生部分附函"
 
-#: builtin/log.c:1766
-msgid "Use [<prefix>] instead of [PATCH]"
+#: builtin/log.c:1765
+msgid "use [<prefix>] instead of [PATCH]"
 msgstr "使用 [<前綴>] 代替 [PATCH]"
 
-#: builtin/log.c:1769
+#: builtin/log.c:1768
 msgid "store resulting files in <dir>"
 msgstr "把結果檔案儲存在 <目錄>"
 
-#: builtin/log.c:1772
+#: builtin/log.c:1771
 msgid "don't strip/add [PATCH]"
 msgstr "不刪除/新增 [PATCH]"
 
-#: builtin/log.c:1775
+#: builtin/log.c:1774
 msgid "don't output binary diffs"
 msgstr "不輸出二進位差異"
 
-#: builtin/log.c:1777
+#: builtin/log.c:1776
 msgid "output all-zero hash in From header"
 msgstr "在 From 標頭訊息中輸出全為零的雜湊值"
 
-#: builtin/log.c:1779
+#: builtin/log.c:1778
 msgid "don't include a patch matching a commit upstream"
 msgstr "不包含已在上游提交中的修補檔"
 
-#: builtin/log.c:1781
+#: builtin/log.c:1780
 msgid "show patch format instead of default (patch + stat)"
 msgstr "顯示純修補檔格式而非預設的(修補檔+狀態)"
 
-#: builtin/log.c:1783
+#: builtin/log.c:1782
 msgid "Messaging"
 msgstr "信件傳送"
 
-#: builtin/log.c:1784
+#: builtin/log.c:1783
 msgid "header"
 msgstr "header"
 
-#: builtin/log.c:1785
+#: builtin/log.c:1784
 msgid "add email header"
 msgstr "新增信件頭"
 
-#: builtin/log.c:1786 builtin/log.c:1787
+#: builtin/log.c:1785 builtin/log.c:1786
 msgid "email"
 msgstr "信件位址"
 
-#: builtin/log.c:1786
+#: builtin/log.c:1785
 msgid "add To: header"
 msgstr "新增收件人"
 
-#: builtin/log.c:1787
+#: builtin/log.c:1786
 msgid "add Cc: header"
 msgstr "新增抄送"
 
-#: builtin/log.c:1788
+#: builtin/log.c:1787
 msgid "ident"
 msgstr "標記"
 
-#: builtin/log.c:1789
+#: builtin/log.c:1788
 msgid "set From address to <ident> (or committer ident if absent)"
 msgstr "將 From 位址設定為 <標記>(如若不提供,則用提交者 ID 做為位址)"
 
-#: builtin/log.c:1791
+#: builtin/log.c:1790
 msgid "message-id"
 msgstr "信件標記"
 
-#: builtin/log.c:1792
+#: builtin/log.c:1791
 msgid "make first mail a reply to <message-id>"
 msgstr "使第一封信件作為對 <信件標記> 的回覆"
 
-#: builtin/log.c:1793 builtin/log.c:1796
+#: builtin/log.c:1792 builtin/log.c:1795
 msgid "boundary"
 msgstr "邊界"
 
-#: builtin/log.c:1794
+#: builtin/log.c:1793
 msgid "attach the patch"
 msgstr "附件方式新增修補檔"
 
-#: builtin/log.c:1797
+#: builtin/log.c:1796
 msgid "inline the patch"
 msgstr "內聯顯示修補檔"
 
-#: builtin/log.c:1801
+#: builtin/log.c:1800
 msgid "enable message threading, styles: shallow, deep"
 msgstr "啟用信件線索,風格:淺,深"
 
-#: builtin/log.c:1803
+#: builtin/log.c:1802
 msgid "signature"
 msgstr "簽名"
 
-#: builtin/log.c:1804
+#: builtin/log.c:1803
 msgid "add a signature"
 msgstr "新增一個簽名"
 
-#: builtin/log.c:1805
+#: builtin/log.c:1804
 msgid "base-commit"
 msgstr "基礎提交"
 
-#: builtin/log.c:1806
+#: builtin/log.c:1805
 msgid "add prerequisite tree info to the patch series"
 msgstr "為修補檔列表新增前置樹訊息"
 
-#: builtin/log.c:1809
+#: builtin/log.c:1808
 msgid "add a signature from a file"
 msgstr "從檔案新增一個簽名"
 
-#: builtin/log.c:1810
+#: builtin/log.c:1809
 msgid "don't print the patch filenames"
 msgstr "不要列印修補檔檔案名"
 
-#: builtin/log.c:1812
+#: builtin/log.c:1811
 msgid "show progress while generating patches"
 msgstr "在生成修補檔時顯示進度"
 
-#: builtin/log.c:1814
+#: builtin/log.c:1813
 msgid "show changes against <rev> in cover letter or single patch"
 msgstr "在附函或單個修補檔中顯示和 <rev> 的差異"
 
-#: builtin/log.c:1817
+#: builtin/log.c:1816
 msgid "show changes against <refspec> in cover letter or single patch"
 msgstr "在附函或單個修補檔中顯示和 <refspec> 的差異"
 
-#: builtin/log.c:1819
+#: builtin/log.c:1818
 msgid "percentage by which creation is weighted"
 msgstr "建立權重的百分比"
 
-#: builtin/log.c:1905
+#: builtin/log.c:1904
 #, c-format
 msgid "invalid ident line: %s"
 msgstr "包含無效的身份標記:%s"
 
-#: builtin/log.c:1920
+#: builtin/log.c:1919
 msgid "-n and -k are mutually exclusive"
 msgstr "-n 和 -k 互斥"
 
-#: builtin/log.c:1922
+#: builtin/log.c:1921
 msgid "--subject-prefix/--rfc and -k are mutually exclusive"
 msgstr "--subject-prefix/--rfc 和 -k 互斥"
 
-#: builtin/log.c:1930
+#: builtin/log.c:1929
 msgid "--name-only does not make sense"
 msgstr "--name-only 無意義"
 
-#: builtin/log.c:1932
+#: builtin/log.c:1931
 msgid "--name-status does not make sense"
 msgstr "--name-status 無意義"
 
-#: builtin/log.c:1934
+#: builtin/log.c:1933
 msgid "--check does not make sense"
 msgstr "--check 無意義"
 
-#: builtin/log.c:1956
-#| msgid "-b, -B, and --detach are mutually exclusive"
+#: builtin/log.c:1955
 msgid "--stdout, --output, and --output-directory are mutually exclusive"
 msgstr "--stdout、--output 和 --output-directory 互斥"
 
-#: builtin/log.c:2079
+#: builtin/log.c:2078
 msgid "--interdiff requires --cover-letter or single patch"
 msgstr "--interdiff 需要 --cover-letter 或單一修補檔"
 
-#: builtin/log.c:2083
+#: builtin/log.c:2082
 msgid "Interdiff:"
 msgstr "版本間差異:"
 
-#: builtin/log.c:2084
+#: builtin/log.c:2083
 #, c-format
 msgid "Interdiff against v%d:"
 msgstr "對 v%d 的版本差異:"
 
-#: builtin/log.c:2090
+#: builtin/log.c:2089
 msgid "--creation-factor requires --range-diff"
 msgstr "--creation-factor 需要 --range-diff"
 
-#: builtin/log.c:2094
+#: builtin/log.c:2093
 msgid "--range-diff requires --cover-letter or single patch"
 msgstr "--range-diff 需要 --cover-letter 或單一修補檔"
 
-#: builtin/log.c:2102
+#: builtin/log.c:2101
 msgid "Range-diff:"
 msgstr "範圍差異:"
 
-#: builtin/log.c:2103
+#: builtin/log.c:2102
 #, c-format
 msgid "Range-diff against v%d:"
 msgstr "對 v%d 的範圍差異:"
 
-#: builtin/log.c:2114
+#: builtin/log.c:2113
 #, c-format
 msgid "unable to read signature file '%s'"
 msgstr "無法讀取簽名檔案 '%s'"
 
-#: builtin/log.c:2150
+#: builtin/log.c:2149
 msgid "Generating patches"
 msgstr "生成修補檔"
 
-#: builtin/log.c:2194
+#: builtin/log.c:2193
 msgid "failed to create output files"
 msgstr "無法建立輸出檔案"
 
-#: builtin/log.c:2253
+#: builtin/log.c:2252
 msgid "git cherry [-v] [<upstream> [<head> [<limit>]]]"
 msgstr "git cherry [-v] [<上游> [<頭> [<限制>]]]"
 
-#: builtin/log.c:2307
+#: builtin/log.c:2306
 #, c-format
 msgid ""
 "Could not find a tracked remote branch, please specify <upstream> manually.\n"
 msgstr "不能找到追蹤的遠端分支,請手動指定 <上游>。\n"
 
-#: builtin/ls-files.c:471
+#: builtin/ls-files.c:486
 msgid "git ls-files [<options>] [<file>...]"
 msgstr "git ls-files [<選項>] [<檔案>...]"
 
-#: builtin/ls-files.c:527
+#: builtin/ls-files.c:542
 msgid "identify the file status with tags"
 msgstr "用標籤標記檔案的狀態"
 
-#: builtin/ls-files.c:529
+#: builtin/ls-files.c:544
 msgid "use lowercase letters for 'assume unchanged' files"
 msgstr "使用小寫字母表示 '假設未改變的' 檔案"
 
-#: builtin/ls-files.c:531
+#: builtin/ls-files.c:546
 msgid "use lowercase letters for 'fsmonitor clean' files"
 msgstr "使用小寫字母表示 'fsmonitor clean' 檔案"
 
-#: builtin/ls-files.c:533
+#: builtin/ls-files.c:548
 msgid "show cached files in the output (default)"
 msgstr "顯示快取的檔案(預設)"
 
-#: builtin/ls-files.c:535
+#: builtin/ls-files.c:550
 msgid "show deleted files in the output"
 msgstr "顯示已刪除的檔案"
 
-#: builtin/ls-files.c:537
+#: builtin/ls-files.c:552
 msgid "show modified files in the output"
 msgstr "顯示已修改的檔案"
 
-#: builtin/ls-files.c:539
+#: builtin/ls-files.c:554
 msgid "show other files in the output"
 msgstr "顯示其它檔案"
 
-#: builtin/ls-files.c:541
+#: builtin/ls-files.c:556
 msgid "show ignored files in the output"
 msgstr "顯示忽略的檔案"
 
-#: builtin/ls-files.c:544
+#: builtin/ls-files.c:559
 msgid "show staged contents' object name in the output"
 msgstr "顯示暫存區內容的物件名稱"
 
-#: builtin/ls-files.c:546
+#: builtin/ls-files.c:561
 msgid "show files on the filesystem that need to be removed"
 msgstr "顯示檔案系統需要刪除的檔案"
 
-#: builtin/ls-files.c:548
+#: builtin/ls-files.c:563
 msgid "show 'other' directories' names only"
 msgstr "只顯示「其他」目錄的名稱"
 
-#: builtin/ls-files.c:550
+#: builtin/ls-files.c:565
 msgid "show line endings of files"
 msgstr "顯示檔案換行符號格式"
 
-#: builtin/ls-files.c:552
+#: builtin/ls-files.c:567
 msgid "don't show empty directories"
 msgstr "不顯示空目錄"
 
-#: builtin/ls-files.c:555
+#: builtin/ls-files.c:570
 msgid "show unmerged files in the output"
 msgstr "顯示未合併的檔案"
 
-#: builtin/ls-files.c:557
+#: builtin/ls-files.c:572
 msgid "show resolve-undo information"
 msgstr "顯示 resolve-undo 訊息"
 
-#: builtin/ls-files.c:559
+#: builtin/ls-files.c:574
 msgid "skip files matching pattern"
 msgstr "符合排除檔案的模式"
 
-#: builtin/ls-files.c:562
+#: builtin/ls-files.c:577
 msgid "exclude patterns are read from <file>"
 msgstr "從 <檔案> 中讀取排除模式"
 
-#: builtin/ls-files.c:565
+#: builtin/ls-files.c:580
 msgid "read additional per-directory exclude patterns in <file>"
 msgstr "從 <檔案> 讀取額外的每個目錄的排除模式"
 
-#: builtin/ls-files.c:567
+#: builtin/ls-files.c:582
 msgid "add the standard git exclusions"
 msgstr "新增標準的 git 排除"
 
-#: builtin/ls-files.c:571
+#: builtin/ls-files.c:586
 msgid "make the output relative to the project top directory"
 msgstr "顯示相對於頂級目錄的檔案名"
 
-#: builtin/ls-files.c:574
+#: builtin/ls-files.c:589
 msgid "recurse through submodules"
 msgstr "在子模組中遞迴"
 
-#: builtin/ls-files.c:576
+#: builtin/ls-files.c:591
 msgid "if any <file> is not in the index, treat this as an error"
 msgstr "如果任何 <檔案> 都不在索引區,視為錯誤"
 
-#: builtin/ls-files.c:577
+#: builtin/ls-files.c:592
 msgid "tree-ish"
 msgstr "樹或提交"
 
-#: builtin/ls-files.c:578
+#: builtin/ls-files.c:593
 msgid "pretend that paths removed since <tree-ish> are still present"
 msgstr "假裝自從 <樹或提交> 之後刪除的路徑仍然存在"
 
-#: builtin/ls-files.c:580
+#: builtin/ls-files.c:595
 msgid "show debugging data"
 msgstr "顯示除錯資料"
 
+#: builtin/ls-files.c:597
+msgid "suppress duplicate entries"
+msgstr "不顯示重複項目"
+
 #: builtin/ls-remote.c:9
 msgid ""
 "git ls-remote [--heads] [--tags] [--refs] [--upload-pack=<exec>]\n"
@@ -16683,39 +17001,39 @@ msgstr ""
 "                     [-q | --quiet] [--exit-code] [--get-url]\n"
 "                     [--symref] [<版本庫> [<引用>...]]"
 
-#: builtin/ls-remote.c:59
+#: builtin/ls-remote.c:60
 msgid "do not print remote URL"
 msgstr "不列印遠端 URL"
 
-#: builtin/ls-remote.c:60 builtin/ls-remote.c:62 builtin/rebase.c:1398
+#: builtin/ls-remote.c:61 builtin/ls-remote.c:63 builtin/rebase.c:1404
 msgid "exec"
 msgstr "exec"
 
-#: builtin/ls-remote.c:61 builtin/ls-remote.c:63
+#: builtin/ls-remote.c:62 builtin/ls-remote.c:64
 msgid "path of git-upload-pack on the remote host"
 msgstr "遠端主機上的 git-upload-pack 路徑"
 
-#: builtin/ls-remote.c:65
+#: builtin/ls-remote.c:66
 msgid "limit to tags"
 msgstr "僅限於標籤"
 
-#: builtin/ls-remote.c:66
+#: builtin/ls-remote.c:67
 msgid "limit to heads"
 msgstr "僅限於分支"
 
-#: builtin/ls-remote.c:67
+#: builtin/ls-remote.c:68
 msgid "do not show peeled tags"
 msgstr "不顯示已解析的標籤"
 
-#: builtin/ls-remote.c:69
+#: builtin/ls-remote.c:70
 msgid "take url.<base>.insteadOf into account"
 msgstr "參考 url.<base>.insteadOf 設定"
 
-#: builtin/ls-remote.c:72
+#: builtin/ls-remote.c:73
 msgid "exit with exit code 2 if no matching refs are found"
 msgstr "若未找到符合的引用則以離開碼2離開"
 
-#: builtin/ls-remote.c:75
+#: builtin/ls-remote.c:76
 msgid "show underlying ref in addition to the object pointed by it"
 msgstr "除了顯示指向的物件外,顯示指向的引用名"
 
@@ -16870,191 +17188,191 @@ msgstr "無法解析引用 '%s'"
 msgid "Merging %s with %s\n"
 msgstr "合併 %s 和 %s\n"
 
-#: builtin/merge.c:57
+#: builtin/merge.c:58
 msgid "git merge [<options>] [<commit>...]"
 msgstr "git merge [<選項>] [<提交>...]"
 
-#: builtin/merge.c:58
+#: builtin/merge.c:59
 msgid "git merge --abort"
 msgstr "git merge --abort"
 
-#: builtin/merge.c:59
+#: builtin/merge.c:60
 msgid "git merge --continue"
 msgstr "git merge --continue"
 
-#: builtin/merge.c:122
+#: builtin/merge.c:123
 msgid "switch `m' requires a value"
 msgstr "開關 `m' 需要一個值"
 
-#: builtin/merge.c:145
+#: builtin/merge.c:146
 #, c-format
 msgid "option `%s' requires a value"
 msgstr "選項 `%s' 需要一個值"
 
-#: builtin/merge.c:198
+#: builtin/merge.c:199
 #, c-format
 msgid "Could not find merge strategy '%s'.\n"
 msgstr "不能找到合併策略 '%s'。\n"
 
-#: builtin/merge.c:199
+#: builtin/merge.c:200
 #, c-format
 msgid "Available strategies are:"
 msgstr "可用的策略有:"
 
-#: builtin/merge.c:204
+#: builtin/merge.c:205
 #, c-format
 msgid "Available custom strategies are:"
 msgstr "可用的自訂策略有:"
 
-#: builtin/merge.c:255 builtin/pull.c:133
+#: builtin/merge.c:256 builtin/pull.c:133
 msgid "do not show a diffstat at the end of the merge"
 msgstr "在合併的最後不顯示差異統計"
 
-#: builtin/merge.c:258 builtin/pull.c:136
+#: builtin/merge.c:259 builtin/pull.c:136
 msgid "show a diffstat at the end of the merge"
 msgstr "在合併的最後顯示差異統計"
 
-#: builtin/merge.c:259 builtin/pull.c:139
+#: builtin/merge.c:260 builtin/pull.c:139
 msgid "(synonym to --stat)"
 msgstr "(和 --stat 同義)"
 
-#: builtin/merge.c:261 builtin/pull.c:142
+#: builtin/merge.c:262 builtin/pull.c:142
 msgid "add (at most <n>) entries from shortlog to merge commit message"
 msgstr "在合併提交訊息中新增(最多 <n> 條)精簡提交記錄"
 
-#: builtin/merge.c:264 builtin/pull.c:148
+#: builtin/merge.c:265 builtin/pull.c:148
 msgid "create a single commit instead of doing a merge"
 msgstr "建立一個單獨的提交而不是做一次合併"
 
-#: builtin/merge.c:266 builtin/pull.c:151
+#: builtin/merge.c:267 builtin/pull.c:151
 msgid "perform a commit if the merge succeeds (default)"
 msgstr "如果合併成功,執行一次提交(預設)"
 
-#: builtin/merge.c:268 builtin/pull.c:154
+#: builtin/merge.c:269 builtin/pull.c:154
 msgid "edit message before committing"
 msgstr "在提交前編輯提交說明"
 
-#: builtin/merge.c:270
+#: builtin/merge.c:271
 msgid "allow fast-forward (default)"
 msgstr "允許快轉(預設)"
 
-#: builtin/merge.c:272 builtin/pull.c:161
+#: builtin/merge.c:273 builtin/pull.c:161
 msgid "abort if fast-forward is not possible"
 msgstr "如果不能快轉就放棄合併"
 
-#: builtin/merge.c:276 builtin/pull.c:164
+#: builtin/merge.c:277 builtin/pull.c:164
 msgid "verify that the named commit has a valid GPG signature"
 msgstr "驗證指定的提交是否包含一個有效的 GPG 簽名"
 
-#: builtin/merge.c:277 builtin/notes.c:787 builtin/pull.c:168
-#: builtin/rebase.c:539 builtin/rebase.c:1412 builtin/revert.c:114
+#: builtin/merge.c:278 builtin/notes.c:787 builtin/pull.c:168
+#: builtin/rebase.c:541 builtin/rebase.c:1418 builtin/revert.c:114
 msgid "strategy"
 msgstr "策略"
 
-#: builtin/merge.c:278 builtin/pull.c:169
+#: builtin/merge.c:279 builtin/pull.c:169
 msgid "merge strategy to use"
 msgstr "要使用的合併策略"
 
-#: builtin/merge.c:279 builtin/pull.c:172
+#: builtin/merge.c:280 builtin/pull.c:172
 msgid "option=value"
 msgstr "option=value"
 
-#: builtin/merge.c:280 builtin/pull.c:173
+#: builtin/merge.c:281 builtin/pull.c:173
 msgid "option for selected merge strategy"
 msgstr "所選的合併策略的選項"
 
-#: builtin/merge.c:282
+#: builtin/merge.c:283
 msgid "merge commit message (for a non-fast-forward merge)"
 msgstr "合併的提交說明(針對非快轉式合併)"
 
-#: builtin/merge.c:289
+#: builtin/merge.c:290
 msgid "abort the current in-progress merge"
 msgstr "放棄目前正在進行的合併"
 
 #
-#: builtin/merge.c:291
+#: builtin/merge.c:292
 msgid "--abort but leave index and working tree alone"
 msgstr "--abort,但是保留索引和工作區"
 
-#: builtin/merge.c:293
+#: builtin/merge.c:294
 msgid "continue the current in-progress merge"
 msgstr "繼續目前正在進行的合併"
 
-#: builtin/merge.c:295 builtin/pull.c:180
+#: builtin/merge.c:296 builtin/pull.c:180
 msgid "allow merging unrelated histories"
 msgstr "允許合並不相關的歷史"
 
-#: builtin/merge.c:302
+#: builtin/merge.c:303
 msgid "bypass pre-merge-commit and commit-msg hooks"
 msgstr "繞過 pre-merge-commit 和 commit-msg 掛鉤"
 
-#: builtin/merge.c:319
+#: builtin/merge.c:320
 msgid "could not run stash."
 msgstr "不能執行儲藏。"
 
-#: builtin/merge.c:324
+#: builtin/merge.c:325
 msgid "stash failed"
 msgstr "儲藏失敗"
 
-#: builtin/merge.c:329
+#: builtin/merge.c:330
 #, c-format
 msgid "not a valid object: %s"
 msgstr "不是一個有效物件:%s"
 
-#: builtin/merge.c:351 builtin/merge.c:368
+#: builtin/merge.c:352 builtin/merge.c:369
 msgid "read-tree failed"
 msgstr "讀取樹失敗"
 
 #  譯者:請維持前導空格
-#: builtin/merge.c:398
+#: builtin/merge.c:399
 msgid " (nothing to squash)"
 msgstr " (無可壓縮)"
 
-#: builtin/merge.c:409
+#: builtin/merge.c:410
 #, c-format
 msgid "Squash commit -- not updating HEAD\n"
 msgstr "壓縮提交 -- 未更新 HEAD\n"
 
-#: builtin/merge.c:459
+#: builtin/merge.c:460
 #, c-format
 msgid "No merge message -- not updating HEAD\n"
 msgstr "無合併訊息 -- 未更新 HEAD\n"
 
-#: builtin/merge.c:510
+#: builtin/merge.c:511
 #, c-format
 msgid "'%s' does not point to a commit"
 msgstr "'%s' 沒有指向一個提交"
 
-#: builtin/merge.c:597
+#: builtin/merge.c:598
 #, c-format
 msgid "Bad branch.%s.mergeoptions string: %s"
 msgstr "壞的 branch.%s.mergeoptions 字串:%s"
 
-#: builtin/merge.c:723
+#: builtin/merge.c:724
 msgid "Not handling anything other than two heads merge."
 msgstr "未處理兩個頭合併之外的任何動作。"
 
-#: builtin/merge.c:736
+#: builtin/merge.c:737
 #, c-format
 msgid "Unknown option for merge-recursive: -X%s"
 msgstr "merge-recursive 的未知選項:-X%s"
 
-#: builtin/merge.c:755 t/helper/test-fast-rebase.c:209
+#: builtin/merge.c:756 t/helper/test-fast-rebase.c:209
 #, c-format
 msgid "unable to write %s"
 msgstr "不能寫 %s"
 
-#: builtin/merge.c:807
+#: builtin/merge.c:808
 #, c-format
 msgid "Could not read from '%s'"
 msgstr "不能從 '%s' 讀取"
 
-#: builtin/merge.c:816
+#: builtin/merge.c:817
 #, c-format
 msgid "Not committing merge; use 'git commit' to complete the merge.\n"
 msgstr "未提交合並,使用 'git commit' 完成此次合併。\n"
 
-#: builtin/merge.c:822
+#: builtin/merge.c:823
 msgid ""
 "Please enter a commit message to explain why this merge is necessary,\n"
 "especially if it merges an updated upstream into a topic branch.\n"
@@ -17064,83 +17382,83 @@ msgstr ""
 "合併到主題分支。\n"
 "\n"
 
-#: builtin/merge.c:827
+#: builtin/merge.c:828
 msgid "An empty message aborts the commit.\n"
 msgstr "空的提交說明會終止提交。\n"
 
-#: builtin/merge.c:830
+#: builtin/merge.c:831
 #, c-format
 msgid ""
 "Lines starting with '%c' will be ignored, and an empty message aborts\n"
 "the commit.\n"
 msgstr "以 '%c' 開始的行將被忽略,而空的提交說明將終止提交。\n"
 
-#: builtin/merge.c:883
+#: builtin/merge.c:884
 msgid "Empty commit message."
 msgstr "空提交訊息。"
 
-#: builtin/merge.c:898
+#: builtin/merge.c:899
 #, c-format
 msgid "Wonderful.\n"
 msgstr "太棒了。\n"
 
-#: builtin/merge.c:959
+#: builtin/merge.c:960
 #, c-format
 msgid "Automatic merge failed; fix conflicts and then commit the result.\n"
 msgstr "自動合併失敗,修正衝突然後提交修正的結果。\n"
 
-#: builtin/merge.c:998
+#: builtin/merge.c:999
 msgid "No current branch."
 msgstr "沒有目前分支。"
 
-#: builtin/merge.c:1000
+#: builtin/merge.c:1001
 msgid "No remote for the current branch."
 msgstr "目前分支沒有對應的遠端版本庫。"
 
-#: builtin/merge.c:1002
+#: builtin/merge.c:1003
 msgid "No default upstream defined for the current branch."
 msgstr "目前分支沒有定義預設的上游分支。"
 
-#: builtin/merge.c:1007
+#: builtin/merge.c:1008
 #, c-format
 msgid "No remote-tracking branch for %s from %s"
 msgstr "對於 %s 沒有來自 %s 的遠端追蹤分支"
 
-#: builtin/merge.c:1064
+#: builtin/merge.c:1065
 #, c-format
 msgid "Bad value '%s' in environment '%s'"
 msgstr "環境 '%2$s' 中存在壞的取值 '%1$s'"
 
-#: builtin/merge.c:1167
+#: builtin/merge.c:1168
 #, c-format
 msgid "not something we can merge in %s: %s"
 msgstr "不能在 %s 中合併:%s"
 
-#: builtin/merge.c:1201
+#: builtin/merge.c:1202
 msgid "not something we can merge"
 msgstr "不能合併"
 
-#: builtin/merge.c:1311
+#: builtin/merge.c:1312
 msgid "--abort expects no arguments"
 msgstr "--abort 不帶參數"
 
-#: builtin/merge.c:1315
+#: builtin/merge.c:1316
 msgid "There is no merge to abort (MERGE_HEAD missing)."
 msgstr "沒有要終止的合併(MERGE_HEAD 遺失)。"
 
-#: builtin/merge.c:1333
+#: builtin/merge.c:1334
 msgid "--quit expects no arguments"
 msgstr "--quit 不帶參數"
 
-#: builtin/merge.c:1346
+#: builtin/merge.c:1347
 msgid "--continue expects no arguments"
 msgstr "--continue 不帶參數"
 
-#: builtin/merge.c:1350
+#: builtin/merge.c:1351
 msgid "There is no merge in progress (MERGE_HEAD missing)."
 msgstr "沒有進行中的合併(MERGE_HEAD 遺失)。"
 
-#: builtin/merge.c:1366
+#: builtin/merge.c:1367
 msgid ""
 "You have not concluded your merge (MERGE_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -17148,7 +17466,7 @@ msgstr ""
 "您尚未結束您的合併(存在 MERGE_HEAD)。\n"
 "請在合併前先提交您的修改。"
 
-#: builtin/merge.c:1373
+#: builtin/merge.c:1374
 msgid ""
 "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -17156,100 +17474,141 @@ msgstr ""
 "您尚未結束您的揀選(存在 CHERRY_PICK_HEAD)。\n"
 "請在合併前先提交您的修改。"
 
-#: builtin/merge.c:1376
+#: builtin/merge.c:1377
 msgid "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists)."
 msgstr "您尚未結束您的揀選(存在 CHERRY_PICK_HEAD)。"
 
-#: builtin/merge.c:1390
+#: builtin/merge.c:1391
 msgid "You cannot combine --squash with --no-ff."
 msgstr "您不能將 --squash 和 --no-ff 組合使用。"
 
-#: builtin/merge.c:1392
+#: builtin/merge.c:1393
 msgid "You cannot combine --squash with --commit."
 msgstr "您不能將 --squash 和 --commit 組合使用。"
 
-#: builtin/merge.c:1408
+#: builtin/merge.c:1409
 msgid "No commit specified and merge.defaultToUpstream not set."
 msgstr "未指定提交並且 merge.defaultToUpstream 未設定。"
 
-#: builtin/merge.c:1425
+#: builtin/merge.c:1426
 msgid "Squash commit into empty head not supported yet"
 msgstr "尚不支援到空分支的壓縮提交"
 
-#: builtin/merge.c:1427
+#: builtin/merge.c:1428
 msgid "Non-fast-forward commit does not make sense into an empty head"
 msgstr "到空分支的非快轉式提交沒有意義"
 
-#: builtin/merge.c:1432
+#: builtin/merge.c:1433
 #, c-format
 msgid "%s - not something we can merge"
 msgstr "%s - 不能被合併"
 
-#: builtin/merge.c:1434
+#: builtin/merge.c:1435
 msgid "Can merge only exactly one commit into empty head"
 msgstr "只能將一個提交合並到空分支上"
 
-#: builtin/merge.c:1515
+#: builtin/merge.c:1516
 msgid "refusing to merge unrelated histories"
 msgstr "拒絕合併無關的歷史"
 
-#: builtin/merge.c:1524
+#: builtin/merge.c:1525
 msgid "Already up to date."
 msgstr "已經是最新的。"
 
-#: builtin/merge.c:1534
+#: builtin/merge.c:1535
 #, c-format
 msgid "Updating %s..%s\n"
 msgstr "更新 %s..%s\n"
 
-#: builtin/merge.c:1580
+#: builtin/merge.c:1581
 #, c-format
 msgid "Trying really trivial in-index merge...\n"
 msgstr "嘗試非常小的索引內合併...\n"
 
-#: builtin/merge.c:1587
+#: builtin/merge.c:1588
 #, c-format
 msgid "Nope.\n"
 msgstr "無。\n"
 
-#: builtin/merge.c:1612
+#: builtin/merge.c:1613
 msgid "Already up to date. Yeeah!"
 msgstr "已經是最新的。耶!"
 
-#: builtin/merge.c:1618
+#: builtin/merge.c:1619
 msgid "Not possible to fast-forward, aborting."
 msgstr "無法快轉,終止。"
 
-#: builtin/merge.c:1646 builtin/merge.c:1711
+#: builtin/merge.c:1647 builtin/merge.c:1712
 #, c-format
 msgid "Rewinding the tree to pristine...\n"
 msgstr "將樹回滾至原始狀態...\n"
 
-#: builtin/merge.c:1650
+#: builtin/merge.c:1651
 #, c-format
 msgid "Trying merge strategy %s...\n"
 msgstr "嘗試合併策略 %s...\n"
 
-#: builtin/merge.c:1702
+#: builtin/merge.c:1703
 #, c-format
 msgid "No merge strategy handled the merge.\n"
 msgstr "沒有合併策略處理此合併。\n"
 
-#: builtin/merge.c:1704
+#: builtin/merge.c:1705
 #, c-format
 msgid "Merge with strategy %s failed.\n"
 msgstr "使用策略 %s 合併失敗。\n"
 
-#: builtin/merge.c:1713
+#: builtin/merge.c:1714
 #, c-format
 msgid "Using the %s to prepare resolving by hand.\n"
 msgstr "使用 %s 以準備手動解決。\n"
 
-#: builtin/merge.c:1727
+#: builtin/merge.c:1728
 #, c-format
 msgid "Automatic merge went well; stopped before committing as requested\n"
 msgstr "自動合併進展順利,按要求在提交前停止\n"
 
+#: builtin/mktag.c:10
+msgid "git mktag"
+msgstr "git mktag"
+
+#: builtin/mktag.c:30
+#, c-format
+msgid "warning: tag input does not pass fsck: %s"
+msgstr "警告:標籤輸入未通過 fsck:%s"
+
+#: builtin/mktag.c:41
+#, c-format
+msgid "error: tag input does not pass fsck: %s"
+msgstr "錯誤:標籤輸入未通過 fsck:%s"
+
+#: builtin/mktag.c:44
+#, c-format
+msgid "%d (FSCK_IGNORE?) should never trigger this callback"
+msgstr "%d (FSCK_IGNORE?) 不應觸發這個回呼函式"
+
+#: builtin/mktag.c:59
+#, c-format
+msgid "could not read tagged object '%s'"
+msgstr "無法讀取有標籤的物件「%s」"
+
+#: builtin/mktag.c:62
+#, c-format
+msgid "object '%s' tagged as '%s', but is a '%s' type"
+msgstr "「%s」已標為「%s」,但卻是「%s」類型"
+
+#: builtin/mktag.c:99
+msgid "tag on stdin did not pass our strict fsck check"
+msgstr "stdin 上的標籤未通過我們的嚴格 fsck 檢查"
+
+#: builtin/mktag.c:102
+msgid "tag on stdin did not refer to a valid object"
+msgstr "標準輸入上的標籤參考的不是有效物件"
+
+#: builtin/mktag.c:105 builtin/tag.c:232
+msgid "unable to write tag file"
+msgstr "無法寫標籤檔案"
+
 #: builtin/mktree.c:66
 msgid "git mktree [-z] [--missing] [--batch]"
 msgstr "git mktree [-z] [--missing] [--batch]"
@@ -17284,7 +17643,10 @@ msgid ""
 "larger than this size"
 msgstr "在 repack 期間,將較小尺寸的包檔案收集到大於此大小的批次中"
 
-#: builtin/multi-pack-index.c:50 builtin/prune-packed.c:25
+#: builtin/multi-pack-index.c:50 builtin/notes.c:376 builtin/notes.c:431
+#: builtin/notes.c:509 builtin/notes.c:521 builtin/notes.c:598
+#: builtin/notes.c:665 builtin/notes.c:815 builtin/notes.c:963
+#: builtin/notes.c:985 builtin/prune-packed.c:25 builtin/tag.c:575
 msgid "too many arguments"
 msgstr "太多參數"
 
@@ -17388,7 +17750,7 @@ msgstr "%s,源=%s,目標=%s"
 msgid "Renaming %s to %s\n"
 msgstr "重新命名 %s 至 %s\n"
 
-#: builtin/mv.c:280 builtin/remote.c:785 builtin/repack.c:484
+#: builtin/mv.c:280 builtin/remote.c:785 builtin/repack.c:483
 #, c-format
 msgid "renaming '%s' failed"
 msgstr "重新命名 '%s' 失敗"
@@ -17577,7 +17939,7 @@ msgstr "不能寫註解物件"
 msgid "the note contents have been left in %s"
 msgstr "註解內容被留在 %s 中"
 
-#: builtin/notes.c:242 builtin/tag.c:533
+#: builtin/notes.c:242 builtin/tag.c:565
 #, c-format
 msgid "could not open or read '%s'"
 msgstr "不能開啟或讀取 '%s'"
@@ -17617,12 +17979,6 @@ msgstr "從 '%s' 複製註解到 '%s' 時失敗"
 msgid "refusing to %s notes in %s (outside of refs/notes/)"
 msgstr "拒絕向 %2$s(在 refs/notes/ 之外)%1$s註解"
 
-#: builtin/notes.c:376 builtin/notes.c:431 builtin/notes.c:509
-#: builtin/notes.c:521 builtin/notes.c:598 builtin/notes.c:665
-#: builtin/notes.c:815 builtin/notes.c:963 builtin/notes.c:985
-msgid "too many parameters"
-msgstr "參數太多"
-
 #: builtin/notes.c:389 builtin/notes.c:678
 #, c-format
 msgid "no note found for object %s."
@@ -17675,11 +18031,11 @@ msgstr "從標準輸入讀取物件"
 
 #: builtin/notes.c:499
 msgid "load rewriting config for <command> (implies --stdin)"
-msgstr "重新載入 <令> 的設定(隱含 --stdin)"
+msgstr "重新載入 <令> 的設定(隱含 --stdin)"
 
 #: builtin/notes.c:517
-msgid "too few parameters"
-msgstr "å\8f\83æ\95¸å¤ªå°\91"
+msgid "too few arguments"
+msgstr "太å°\91å\8f\83æ\95¸"
 
 #: builtin/notes.c:538
 #, c-format
@@ -17802,7 +18158,7 @@ msgstr ""
 "自動合併說明失敗。修改 %s 中的衝突並且使用指令 'git notes merge --commit' 提"
 "交結果,或者使用指令 'git notes merge --abort' 終止合併。\n"
 
-#: builtin/notes.c:897 builtin/tag.c:546
+#: builtin/notes.c:897 builtin/tag.c:578
 #, c-format
 msgid "Failed to resolve '%s' as a valid ref."
 msgstr "無法解析 '%s' 為一個有效引用。"
@@ -17820,7 +18176,7 @@ msgstr "嘗試刪除不存在的註解不是一個錯誤"
 msgid "read object names from the standard input"
 msgstr "從標準輸入讀取物件名稱"
 
-#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:220
+#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:148
 msgid "do not remove, show only"
 msgstr "不刪除,只顯示"
 
@@ -17836,7 +18192,7 @@ msgstr "註解引用"
 msgid "use notes from <notes-ref>"
 msgstr "從 <註解引用> 使用註解"
 
-#: builtin/notes.c:1034 builtin/stash.c:1604
+#: builtin/notes.c:1034 builtin/stash.c:1671
 #, c-format
 msgid "unknown subcommand: %s"
 msgstr "未知子指令:%s"
@@ -17851,101 +18207,114 @@ msgid ""
 "git pack-objects [<options>...] <base-name> [< <ref-list> | < <object-list>]"
 msgstr "git pack-objects [<選項>...] <前綴名稱> [< <引用列表> | < <物件列表>]"
 
-#: builtin/pack-objects.c:443
+#: builtin/pack-objects.c:440
+#, c-format
+msgid ""
+"write_reuse_object: could not locate %s, expected at offset %<PRIuMAX> in "
+"pack %s"
+msgstr ""
+"write_reuse_object:無法定位 %1$s,預期在 %3$s 包中的 %2$<PRIuMAX> 偏移量"
+
+#: builtin/pack-objects.c:448
 #, c-format
 msgid "bad packed object CRC for %s"
 msgstr "%s 錯的包物件 CRC"
 
-#: builtin/pack-objects.c:454
+#: builtin/pack-objects.c:459
 #, c-format
 msgid "corrupt packed object for %s"
 msgstr "%s 損壞的包物件"
 
-#: builtin/pack-objects.c:585
+#: builtin/pack-objects.c:590
 #, c-format
 msgid "recursive delta detected for object %s"
 msgstr "發現物件 %s 遞迴 delta"
 
-#: builtin/pack-objects.c:796
+#: builtin/pack-objects.c:801
 #, c-format
 msgid "ordered %u objects, expected %<PRIu32>"
 msgstr "排序了 %u 個物件,預期 %<PRIu32> 個"
 
-#: builtin/pack-objects.c:1004
+#: builtin/pack-objects.c:896
+#, c-format
+msgid "expected object at offset %<PRIuMAX> in pack %s"
+msgstr "預期 %2$s 包中的偏移 %1$<PRIuMAX> 有物件"
+
+#: builtin/pack-objects.c:1015
 msgid "disabling bitmap writing, packs are split due to pack.packSizeLimit"
 msgstr "停用 bitmap 寫入,因為 pack.packSizeLimit 設定使得包被切分為多個"
 
-#: builtin/pack-objects.c:1017
+#: builtin/pack-objects.c:1028
 msgid "Writing objects"
 msgstr "寫入物件中"
 
-#: builtin/pack-objects.c:1078 builtin/update-index.c:90
+#: builtin/pack-objects.c:1089 builtin/update-index.c:90
 #, c-format
 msgid "failed to stat %s"
 msgstr "對 %s 呼叫 stat 失敗"
 
-#: builtin/pack-objects.c:1131
+#: builtin/pack-objects.c:1141
 #, c-format
 msgid "wrote %<PRIu32> objects while expecting %<PRIu32>"
 msgstr "寫入 %<PRIu32> 個物件而預期 %<PRIu32> 個"
 
-#: builtin/pack-objects.c:1348
+#: builtin/pack-objects.c:1358
 msgid "disabling bitmap writing, as some objects are not being packed"
 msgstr "停用 bitmap 寫入,因為一些物件將不會被打包"
 
-#: builtin/pack-objects.c:1796
+#: builtin/pack-objects.c:1806
 #, c-format
 msgid "delta base offset overflow in pack for %s"
 msgstr "%s 壓縮中 delta 基準位移越界"
 
-#: builtin/pack-objects.c:1805
+#: builtin/pack-objects.c:1815
 #, c-format
 msgid "delta base offset out of bound for %s"
 msgstr "%s 的 delta 基準位移越界"
 
-#: builtin/pack-objects.c:2086
+#: builtin/pack-objects.c:2096
 msgid "Counting objects"
 msgstr "物件計數中"
 
-#: builtin/pack-objects.c:2231
+#: builtin/pack-objects.c:2241
 #, c-format
 msgid "unable to parse object header of %s"
 msgstr "無法解析物件 %s 標頭訊息"
 
-#: builtin/pack-objects.c:2301 builtin/pack-objects.c:2317
-#: builtin/pack-objects.c:2327
+#: builtin/pack-objects.c:2311 builtin/pack-objects.c:2327
+#: builtin/pack-objects.c:2337
 #, c-format
 msgid "object %s cannot be read"
 msgstr "物件 %s 無法讀取"
 
-#: builtin/pack-objects.c:2304 builtin/pack-objects.c:2331
+#: builtin/pack-objects.c:2314 builtin/pack-objects.c:2341
 #, c-format
 msgid "object %s inconsistent object length (%<PRIuMAX> vs %<PRIuMAX>)"
 msgstr "物件 %s 不一致的物件長度(%<PRIuMAX> vs %<PRIuMAX>)"
 
-#: builtin/pack-objects.c:2341
+#: builtin/pack-objects.c:2351
 msgid "suboptimal pack - out of memory"
 msgstr "次優(suboptimal)打包 - 記憶體不足"
 
-#: builtin/pack-objects.c:2656
+#: builtin/pack-objects.c:2666
 #, c-format
 msgid "Delta compression using up to %d threads"
 msgstr "使用 %d 個執行緒進行壓縮"
 
-#: builtin/pack-objects.c:2795
+#: builtin/pack-objects.c:2805
 #, c-format
 msgid "unable to pack objects reachable from tag %s"
 msgstr "無法為標籤 %s 壓縮物件"
 
-#: builtin/pack-objects.c:2883
+#: builtin/pack-objects.c:2891
 msgid "Compressing objects"
 msgstr "壓縮物件中"
 
-#: builtin/pack-objects.c:2889
+#: builtin/pack-objects.c:2897
 msgid "inconsistency with delta count"
 msgstr "不一致的差異計數"
 
-#: builtin/pack-objects.c:2961
+#: builtin/pack-objects.c:2976
 #, c-format
 msgid ""
 "value of uploadpack.blobpackfileuri must be of the form '<object-hash> <pack-"
@@ -17954,13 +18323,13 @@ msgstr ""
 "uploadpack.blobpackfileuri 的值格式必須為 '<object-hash> <pack-hash> "
 "<uri>' (收到 '%s')"
 
-#: builtin/pack-objects.c:2964
+#: builtin/pack-objects.c:2979
 #, c-format
 msgid ""
 "object already configured in another uploadpack.blobpackfileuri (got '%s')"
 msgstr "物件已經在其他 uploadpack.blobpackfileuri 設定過 (收到 '%s')"
 
-#: builtin/pack-objects.c:2993
+#: builtin/pack-objects.c:3008
 #, c-format
 msgid ""
 "expected edge object ID, got garbage:\n"
@@ -17969,7 +18338,7 @@ msgstr ""
 "預期邊界物件(edge object)ID,卻得到垃圾資料:\n"
 " %s"
 
-#: builtin/pack-objects.c:2999
+#: builtin/pack-objects.c:3014
 #, c-format
 msgid ""
 "expected object ID, got garbage:\n"
@@ -17978,234 +18347,234 @@ msgstr ""
 "預期物件 ID,卻得到垃圾資料:\n"
 " %s"
 
-#: builtin/pack-objects.c:3097
+#: builtin/pack-objects.c:3112
 msgid "invalid value for --missing"
 msgstr "選項 --missing 的值無效"
 
-#: builtin/pack-objects.c:3156 builtin/pack-objects.c:3264
+#: builtin/pack-objects.c:3171 builtin/pack-objects.c:3279
 msgid "cannot open pack index"
 msgstr "無法開啟包檔案索引"
 
-#: builtin/pack-objects.c:3187
+#: builtin/pack-objects.c:3202
 #, c-format
 msgid "loose object at %s could not be examined"
 msgstr "無法檢查 %s 處的鬆散物件"
 
-#: builtin/pack-objects.c:3272
+#: builtin/pack-objects.c:3287
 msgid "unable to force loose object"
 msgstr "無法強制鬆散物件"
 
-#: builtin/pack-objects.c:3365
+#: builtin/pack-objects.c:3380
 #, c-format
 msgid "not a rev '%s'"
 msgstr "不是一個版本 '%s'"
 
-#: builtin/pack-objects.c:3368
+#: builtin/pack-objects.c:3383
 #, c-format
 msgid "bad revision '%s'"
 msgstr "壞的版本 '%s'"
 
-#: builtin/pack-objects.c:3393
+#: builtin/pack-objects.c:3408
 msgid "unable to add recent objects"
 msgstr "無法新增最近的物件"
 
-#: builtin/pack-objects.c:3446
+#: builtin/pack-objects.c:3461
 #, c-format
 msgid "unsupported index version %s"
 msgstr "不支援的索引版本 %s"
 
-#: builtin/pack-objects.c:3450
+#: builtin/pack-objects.c:3465
 #, c-format
 msgid "bad index version '%s'"
 msgstr "壞的索引版本 '%s'"
 
-#: builtin/pack-objects.c:3488
+#: builtin/pack-objects.c:3503
 msgid "<version>[,<offset>]"
 msgstr "<版本>[,<位移>]"
 
-#: builtin/pack-objects.c:3489
+#: builtin/pack-objects.c:3504
 msgid "write the pack index file in the specified idx format version"
 msgstr "用指定的 idx 格式版本來寫包索引檔案"
 
-#: builtin/pack-objects.c:3492
+#: builtin/pack-objects.c:3507
 msgid "maximum size of each output pack file"
 msgstr "每個輸出包的最大尺寸"
 
-#: builtin/pack-objects.c:3494
+#: builtin/pack-objects.c:3509
 msgid "ignore borrowed objects from alternate object store"
 msgstr "忽略從備用物件儲存裡借用物件"
 
-#: builtin/pack-objects.c:3496
+#: builtin/pack-objects.c:3511
 msgid "ignore packed objects"
 msgstr "忽略包物件"
 
-#: builtin/pack-objects.c:3498
+#: builtin/pack-objects.c:3513
 msgid "limit pack window by objects"
 msgstr "限制打包視窗的物件數"
 
-#: builtin/pack-objects.c:3500
+#: builtin/pack-objects.c:3515
 msgid "limit pack window by memory in addition to object limit"
 msgstr "除物件數量限制外設定打包視窗的記憶體限制"
 
-#: builtin/pack-objects.c:3502
+#: builtin/pack-objects.c:3517
 msgid "maximum length of delta chain allowed in the resulting pack"
 msgstr "打包允許的 delta 鏈的最大長度"
 
-#: builtin/pack-objects.c:3504
+#: builtin/pack-objects.c:3519
 msgid "reuse existing deltas"
 msgstr "重用已存在的 deltas"
 
-#: builtin/pack-objects.c:3506
+#: builtin/pack-objects.c:3521
 msgid "reuse existing objects"
 msgstr "重用已存在的物件"
 
-#: builtin/pack-objects.c:3508
+#: builtin/pack-objects.c:3523
 msgid "use OFS_DELTA objects"
 msgstr "使用 OFS_DELTA 物件"
 
-#: builtin/pack-objects.c:3510
+#: builtin/pack-objects.c:3525
 msgid "use threads when searching for best delta matches"
 msgstr "使用執行緒查詢最佳 delta 符合"
 
-#: builtin/pack-objects.c:3512
+#: builtin/pack-objects.c:3527
 msgid "do not create an empty pack output"
 msgstr "不建立空的包輸出"
 
-#: builtin/pack-objects.c:3514
+#: builtin/pack-objects.c:3529
 msgid "read revision arguments from standard input"
 msgstr "從標準輸入讀取版本號參數"
 
-#: builtin/pack-objects.c:3516
+#: builtin/pack-objects.c:3531
 msgid "limit the objects to those that are not yet packed"
 msgstr "限制那些尚未打包的物件"
 
-#: builtin/pack-objects.c:3519
+#: builtin/pack-objects.c:3534
 msgid "include objects reachable from any reference"
 msgstr "包括可以從任何引用存取到的物件"
 
-#: builtin/pack-objects.c:3522
+#: builtin/pack-objects.c:3537
 msgid "include objects referred by reflog entries"
 msgstr "包括被引用日誌引用到的物件"
 
-#: builtin/pack-objects.c:3525
+#: builtin/pack-objects.c:3540
 msgid "include objects referred to by the index"
 msgstr "包括被索引引用到的物件"
 
-#: builtin/pack-objects.c:3528
+#: builtin/pack-objects.c:3543
 msgid "output pack to stdout"
 msgstr "輸出包到標準輸出"
 
-#: builtin/pack-objects.c:3530
+#: builtin/pack-objects.c:3545
 msgid "include tag objects that refer to objects to be packed"
 msgstr "包括那些引用了待打包物件的標籤物件"
 
-#: builtin/pack-objects.c:3532
+#: builtin/pack-objects.c:3547
 msgid "keep unreachable objects"
 msgstr "維持無法取得的物件"
 
-#: builtin/pack-objects.c:3534
+#: builtin/pack-objects.c:3549
 msgid "pack loose unreachable objects"
 msgstr "打包鬆散的無法取得物件"
 
-#: builtin/pack-objects.c:3536
+#: builtin/pack-objects.c:3551
 msgid "unpack unreachable objects newer than <time>"
 msgstr "將比提供 <時間> 新的無法存取的物件解包"
 
-#: builtin/pack-objects.c:3539
+#: builtin/pack-objects.c:3554
 msgid "use the sparse reachability algorithm"
 msgstr "使用稀疏可以取得性演算法"
 
-#: builtin/pack-objects.c:3541
+#: builtin/pack-objects.c:3556
 msgid "create thin packs"
 msgstr "建立精簡包"
 
-#: builtin/pack-objects.c:3543
+#: builtin/pack-objects.c:3558
 msgid "create packs suitable for shallow fetches"
 msgstr "建立適合淺複製版本庫取得的包"
 
-#: builtin/pack-objects.c:3545
+#: builtin/pack-objects.c:3560
 msgid "ignore packs that have companion .keep file"
 msgstr "忽略配有 .keep 檔案的包"
 
-#: builtin/pack-objects.c:3547
+#: builtin/pack-objects.c:3562
 msgid "ignore this pack"
 msgstr "忽略該 pack"
 
-#: builtin/pack-objects.c:3549
+#: builtin/pack-objects.c:3564
 msgid "pack compression level"
 msgstr "打包壓縮級別"
 
-#: builtin/pack-objects.c:3551
+#: builtin/pack-objects.c:3566
 msgid "do not hide commits by grafts"
 msgstr "顯示被移植隱藏的提交"
 
-#: builtin/pack-objects.c:3553
+#: builtin/pack-objects.c:3568
 msgid "use a bitmap index if available to speed up counting objects"
 msgstr "使用 bitmap 索引(如果有的話)以提高物件計數時的速度"
 
-#: builtin/pack-objects.c:3555
+#: builtin/pack-objects.c:3570
 msgid "write a bitmap index together with the pack index"
 msgstr "在建立包索引的同時建立 bitmap 索引"
 
-#: builtin/pack-objects.c:3559
+#: builtin/pack-objects.c:3574
 msgid "write a bitmap index if possible"
 msgstr "如果可能,寫 bitmap 索引"
 
-#: builtin/pack-objects.c:3563
+#: builtin/pack-objects.c:3578
 msgid "handling for missing objects"
 msgstr "處理遺失的物件"
 
-#: builtin/pack-objects.c:3566
+#: builtin/pack-objects.c:3581
 msgid "do not pack objects in promisor packfiles"
 msgstr "不要打包 promisor packfile 中的物件"
 
-#: builtin/pack-objects.c:3568
+#: builtin/pack-objects.c:3583
 msgid "respect islands during delta compression"
 msgstr "在增量壓縮時參考資料島"
 
-#: builtin/pack-objects.c:3570
+#: builtin/pack-objects.c:3585
 msgid "protocol"
 msgstr "通訊協定"
 
-#: builtin/pack-objects.c:3571
+#: builtin/pack-objects.c:3586
 msgid "exclude any configured uploadpack.blobpackfileuri with this protocol"
 msgstr "排除任何設定過,使用此通訊協定的 uploadpack.blobpackfileuri"
 
-#: builtin/pack-objects.c:3600
+#: builtin/pack-objects.c:3617
 #, c-format
 msgid "delta chain depth %d is too deep, forcing %d"
 msgstr "增量鏈深度 %d 太深了,強制為 %d"
 
-#: builtin/pack-objects.c:3605
+#: builtin/pack-objects.c:3622
 #, c-format
 msgid "pack.deltaCacheLimit is too high, forcing %d"
 msgstr "設定 pack.deltaCacheLimit 太高了,強制為 %d"
 
-#: builtin/pack-objects.c:3659
+#: builtin/pack-objects.c:3676
 msgid "--max-pack-size cannot be used to build a pack for transfer"
 msgstr "不能使用 --max-pack-size 來組建傳輸用的包檔案"
 
-#: builtin/pack-objects.c:3661
+#: builtin/pack-objects.c:3678
 msgid "minimum pack size limit is 1 MiB"
 msgstr "最小的包檔案大小是 1 MiB"
 
-#: builtin/pack-objects.c:3666
+#: builtin/pack-objects.c:3683
 msgid "--thin cannot be used to build an indexable pack"
 msgstr "--thin 不能用於建立一個可索引包"
 
-#: builtin/pack-objects.c:3669
+#: builtin/pack-objects.c:3686
 msgid "--keep-unreachable and --unpack-unreachable are incompatible"
 msgstr "--keep-unreachable 和 --unpack-unreachable 不相容"
 
-#: builtin/pack-objects.c:3675
+#: builtin/pack-objects.c:3692
 msgid "cannot use --filter without --stdout"
 msgstr "不能在沒有 --stdout 的情況下使用 --filter"
 
-#: builtin/pack-objects.c:3735
+#: builtin/pack-objects.c:3752
 msgid "Enumerating objects"
 msgstr "枚舉物件"
 
-#: builtin/pack-objects.c:3766
+#: builtin/pack-objects.c:3783
 #, c-format
 msgid ""
 "Total %<PRIu32> (delta %<PRIu32>), reused %<PRIu32> (delta %<PRIu32>), pack-"
@@ -18214,6 +18583,20 @@ msgstr ""
 "總共 %<PRIu32> (差異 %<PRIu32>),復用 %<PRIu32> (差異 %<PRIu32>),重用包 "
 "%<PRIu32>"
 
+#: builtin/pack-redundant.c:601
+msgid ""
+"'git pack-redundant' is nominated for removal.\n"
+"If you still use this command, please add an extra\n"
+"option, '--i-still-use-this', on the command line\n"
+"and let us know you still use it by sending an e-mail\n"
+"to <git@vger.kernel.org>.  Thanks.\n"
+msgstr ""
+"「git pack-redundant」已被提名準備移除。\n"
+"如果您仍在使用這條命令,請在命令列多加一個選項\n"
+"「--i-still-use-this」,然後寄封電子信到\n"
+"<git@vger.kernel.org> 讓我們知道您還在使用。\n"
+"感謝。\n"
+
 #: builtin/pack-refs.c:8
 msgid "git pack-refs [<options>]"
 msgstr "git pack-refs [<選項>]"
@@ -18267,82 +18650,53 @@ msgstr "控制子模組的遞迴取得"
 msgid "Options related to merging"
 msgstr "和合併相關的選項"
 
-#: builtin/pull.c:130
-msgid "incorporate changes by rebasing rather than merging"
-msgstr "使用重定基底動作取代合併動作以套用修改"
-
-#: builtin/pull.c:158 builtin/rebase.c:490 builtin/revert.c:126
-msgid "allow fast-forward"
-msgstr "允許快轉式"
-
-#: builtin/pull.c:167 parse-options.h:339
-msgid "automatically stash/stash pop before and after"
-msgstr "在動作前後執行自動儲藏和彈出儲藏"
-
-#: builtin/pull.c:183
-msgid "Options related to fetching"
-msgstr "和取得相關的參數"
-
-#: builtin/pull.c:193
-msgid "force overwrite of local branch"
-msgstr "強制覆蓋本機分支"
-
-#: builtin/pull.c:201
-msgid "number of submodules pulled in parallel"
-msgstr "並發拉取的子模組的數量"
-
-#: builtin/pull.c:317
-#, c-format
-msgid "Invalid value for pull.ff: %s"
-msgstr "pull.ff 的取值無效:%s"
-
-#: builtin/pull.c:348
-msgid ""
-"Pulling without specifying how to reconcile divergent branches is\n"
-"discouraged. You can squelch this message by running one of the following\n"
-"commands sometime before your next pull:\n"
-"\n"
-"  git config pull.rebase false  # merge (the default strategy)\n"
-"  git config pull.rebase true   # rebase\n"
-"  git config pull.ff only       # fast-forward only\n"
-"\n"
-"You can replace \"git config\" with \"git config --global\" to set a "
-"default\n"
-"preference for all repositories. You can also pass --rebase, --no-rebase,\n"
-"or --ff-only on the command line to override the configured default per\n"
-"invocation.\n"
-msgstr ""
-"不建議在尚未指定偏離分支的合併策略的情況下拉取。\n"
-"您可以在下一次呼叫 pull 命令前執行下述命令\n"
-"以隱藏此訊息:\n"
-"\n"
-"  git config pull.rebase false  # 合併(預設策略)\n"
-"  git config pull.rebase true   # 重定基底\n"
-"  git config pull.ff only       # 只快進\n"
-"\n"
-"您可以將「git config」改成「git config --global」以設定\n"
-"所有版本庫的預設偏好設定。也可以每次在命令列呼叫\n"
-"pull 命令時傳遞 --rebase、--no-rebase 或 --ff-only 覆蓋\n"
-"設定的預設值。\n"
+#: builtin/pull.c:130
+msgid "incorporate changes by rebasing rather than merging"
+msgstr "使用重定基底動作取代合併動作以套用修改"
+
+#: builtin/pull.c:158 builtin/rebase.c:492 builtin/revert.c:126
+msgid "allow fast-forward"
+msgstr "允許快轉式"
+
+#: builtin/pull.c:167 parse-options.h:339
+msgid "automatically stash/stash pop before and after"
+msgstr "在動作前後執行自動儲藏和彈出儲藏"
+
+#: builtin/pull.c:183
+msgid "Options related to fetching"
+msgstr "和取得相關的參數"
+
+#: builtin/pull.c:193
+msgid "force overwrite of local branch"
+msgstr "強制覆蓋本機分支"
+
+#: builtin/pull.c:201
+msgid "number of submodules pulled in parallel"
+msgstr "並發拉取的子模組的數量"
+
+#: builtin/pull.c:317
+#, c-format
+msgid "Invalid value for pull.ff: %s"
+msgstr "pull.ff 的取值無效:%s"
 
-#: builtin/pull.c:458
+#: builtin/pull.c:445
 msgid ""
 "There is no candidate for rebasing against among the refs that you just "
 "fetched."
 msgstr "在您剛剛取得到的引用中沒有重定基底動作的候選。"
 
-#: builtin/pull.c:460
+#: builtin/pull.c:447
 msgid ""
 "There are no candidates for merging among the refs that you just fetched."
 msgstr "在您剛剛取得到的引用中沒有合併動作的候選。"
 
-#: builtin/pull.c:461
+#: builtin/pull.c:448
 msgid ""
 "Generally this means that you provided a wildcard refspec which had no\n"
 "matches on the remote end."
 msgstr "通常這意味著您提供了一萬用字元引用規格但未能和遠端符合。"
 
-#: builtin/pull.c:464
+#: builtin/pull.c:451
 #, c-format
 msgid ""
 "You asked to pull from the remote '%s', but did not specify\n"
@@ -18352,41 +18706,41 @@ msgstr ""
 "您要求從遠端 '%s' 拉取,但是未指定一個分支。因為這不是目前\n"
 "分支預設的遠端版本庫,您必須在指令列中指定一個分支名。"
 
-#: builtin/pull.c:469 builtin/rebase.c:1246
+#: builtin/pull.c:456 builtin/rebase.c:1253
 msgid "You are not currently on a branch."
 msgstr "您目前不在一個分支上。"
 
-#: builtin/pull.c:471 builtin/pull.c:486
+#: builtin/pull.c:458 builtin/pull.c:473
 msgid "Please specify which branch you want to rebase against."
 msgstr "請指定您要重定基底到哪一個分支。"
 
-#: builtin/pull.c:473 builtin/pull.c:488
+#: builtin/pull.c:460 builtin/pull.c:475
 msgid "Please specify which branch you want to merge with."
 msgstr "請指定您要合併哪一個分支。"
 
-#: builtin/pull.c:474 builtin/pull.c:489
+#: builtin/pull.c:461 builtin/pull.c:476
 msgid "See git-pull(1) for details."
 msgstr "詳見 git-pull(1)。"
 
-#: builtin/pull.c:476 builtin/pull.c:482 builtin/pull.c:491
-#: builtin/rebase.c:1252
+#: builtin/pull.c:463 builtin/pull.c:469 builtin/pull.c:478
+#: builtin/rebase.c:1259
 msgid "<remote>"
 msgstr "<遠端>"
 
-#: builtin/pull.c:476 builtin/pull.c:491 builtin/pull.c:496
+#: builtin/pull.c:463 builtin/pull.c:478 builtin/pull.c:483
 msgid "<branch>"
 msgstr "<分支>"
 
-#: builtin/pull.c:484 builtin/rebase.c:1244
+#: builtin/pull.c:471 builtin/rebase.c:1251
 msgid "There is no tracking information for the current branch."
 msgstr "目前分支沒有追蹤訊息。"
 
-#: builtin/pull.c:493
+#: builtin/pull.c:480
 msgid ""
 "If you wish to set tracking information for this branch you can do so with:"
 msgstr "如果您想要為此分支建立追蹤訊息,您可以執行:"
 
-#: builtin/pull.c:498
+#: builtin/pull.c:485
 #, c-format
 msgid ""
 "Your configuration specifies to merge with the ref '%s'\n"
@@ -18395,28 +18749,57 @@ msgstr ""
 "您的設定中指定要合併遠端的引用 '%s',\n"
 "但是沒有取得到這個引用。"
 
-#: builtin/pull.c:609
+#: builtin/pull.c:596
 #, c-format
 msgid "unable to access commit %s"
 msgstr "無法存取提交 %s"
 
-#: builtin/pull.c:915
+#: builtin/pull.c:902
 msgid "ignoring --verify-signatures for rebase"
 msgstr "為重定基底動作忽略 --verify-signatures"
 
-#: builtin/pull.c:972
+#: builtin/pull.c:930
+msgid ""
+"Pulling without specifying how to reconcile divergent branches is\n"
+"discouraged. You can squelch this message by running one of the following\n"
+"commands sometime before your next pull:\n"
+"\n"
+"  git config pull.rebase false  # merge (the default strategy)\n"
+"  git config pull.rebase true   # rebase\n"
+"  git config pull.ff only       # fast-forward only\n"
+"\n"
+"You can replace \"git config\" with \"git config --global\" to set a "
+"default\n"
+"preference for all repositories. You can also pass --rebase, --no-rebase,\n"
+"or --ff-only on the command line to override the configured default per\n"
+"invocation.\n"
+msgstr ""
+"不建議在尚未指定偏離分支的合併策略的情況下拉取。\n"
+"您可以在下一次呼叫 pull 命令前執行下述命令\n"
+"以隱藏此訊息:\n"
+"\n"
+"  git config pull.rebase false  # 合併(預設策略)\n"
+"  git config pull.rebase true   # 重定基底\n"
+"  git config pull.ff only       # 只快進\n"
+"\n"
+"您可以將「git config」改成「git config --global」以設定\n"
+"所有版本庫的預設偏好設定。也可以每次在命令列呼叫\n"
+"pull 命令時傳遞 --rebase、--no-rebase 或 --ff-only 覆蓋\n"
+"設定的預設值。\n"
+
+#: builtin/pull.c:991
 msgid "Updating an unborn branch with changes added to the index."
 msgstr "更新尚未誕生的分支,變更新增至索引。"
 
-#: builtin/pull.c:976
+#: builtin/pull.c:995
 msgid "pull with rebase"
 msgstr "重定基底式拉取"
 
-#: builtin/pull.c:977
+#: builtin/pull.c:996
 msgid "please commit or stash them."
 msgstr "請提交或儲藏它們。"
 
-#: builtin/pull.c:1002
+#: builtin/pull.c:1021
 #, c-format
 msgid ""
 "fetch updated the current branch head.\n"
@@ -18426,7 +18809,7 @@ msgstr ""
 "fetch 更新了目前的分支。快轉您的工作區\n"
 "至提交 %s。"
 
-#: builtin/pull.c:1008
+#: builtin/pull.c:1027
 #, c-format
 msgid ""
 "Cannot fast-forward your working tree.\n"
@@ -18443,15 +18826,15 @@ msgstr ""
 "$ git reset --hard\n"
 "復原之前的狀態。"
 
-#: builtin/pull.c:1023
+#: builtin/pull.c:1042
 msgid "Cannot merge multiple branches into empty head."
 msgstr "無法將多個分支合併到空分支。"
 
-#: builtin/pull.c:1027
+#: builtin/pull.c:1046
 msgid "Cannot rebase onto multiple branches."
 msgstr "無法重定基底到多個分支。"
 
-#: builtin/pull.c:1041
+#: builtin/pull.c:1067
 msgid "cannot rebase with locally recorded submodule modifications"
 msgstr "本機子模組中有修改,無法重定基底"
 
@@ -18746,44 +19129,52 @@ msgstr "--all 和 --mirror 不相容"
 msgid "push options must not have new line characters"
 msgstr "推送選項不能有換行符號"
 
-#: builtin/range-diff.c:8
+#: builtin/range-diff.c:9
 msgid "git range-diff [<options>] <old-base>..<old-tip> <new-base>..<new-tip>"
 msgstr "git range-diff [<選項>] <old-base>..<old-tip> <new-base>..<new-tip>"
 
-#: builtin/range-diff.c:9
+#: builtin/range-diff.c:10
 msgid "git range-diff [<options>] <old-tip>...<new-tip>"
 msgstr "git range-diff [<選項>] <old-tip>...<new-tip>"
 
-#: builtin/range-diff.c:10
+#: builtin/range-diff.c:11
 msgid "git range-diff [<options>] <base> <old-tip> <new-tip>"
 msgstr "git range-diff [<選項>] <base> <old-tip> <new-tip>"
 
-#: builtin/range-diff.c:22
+#: builtin/range-diff.c:28
 msgid "Percentage by which creation is weighted"
 msgstr "建立權重的百分比"
 
-#: builtin/range-diff.c:24
+#: builtin/range-diff.c:30
 msgid "use simple diff colors"
 msgstr "使用簡單差異顏色"
 
-#: builtin/range-diff.c:26
+#: builtin/range-diff.c:32
 msgid "notes"
 msgstr "註解"
 
-#: builtin/range-diff.c:26
+#: builtin/range-diff.c:32
 msgid "passed to 'git log'"
 msgstr "傳遞給 'git log'"
 
-#: builtin/range-diff.c:50 builtin/range-diff.c:54
+#: builtin/range-diff.c:35
+msgid "only emit output related to the first range"
+msgstr "只發出跟第一個範圍相關的輸出"
+
+#: builtin/range-diff.c:37
+msgid "only emit output related to the second range"
+msgstr "只發出跟第二個範圍相關的輸出"
+
+#: builtin/range-diff.c:60 builtin/range-diff.c:64
 #, c-format
-msgid "no .. in range: '%s'"
-msgstr "沒有在範圍中使用 ..:'%s'"
+msgid "not a commit range: '%s'"
+msgstr "不是提交範圍:「%s」"
 
-#: builtin/range-diff.c:64
+#: builtin/range-diff.c:74
 msgid "single arg format must be symmetric range"
 msgstr "單個參數格式必須是對稱範圍(即包含...)"
 
-#: builtin/range-diff.c:79
+#: builtin/range-diff.c:89
 msgid "need two commit ranges"
 msgstr "需要兩個提交範圍"
 
@@ -18874,206 +19265,206 @@ msgid ""
 "git rebase [-i] [options] [--exec <cmd>] [--onto <newbase> | --keep-base] "
 "[<upstream> [<branch>]]"
 msgstr ""
-"git rebase [-i] [options] [--exec <令>] [--onto <新基礎> | --keep-base] [<"
+"git rebase [-i] [options] [--exec <令>] [--onto <新基礎> | --keep-base] [<"
 "上游> [<分支>]]"
 
 #: builtin/rebase.c:37
 msgid ""
 "git rebase [-i] [options] [--exec <cmd>] [--onto <newbase>] --root [<branch>]"
 msgstr ""
-"git rebase [-i] [選項] [--exec <令>] [--onto <新基礎>] --root [<分支>]"
+"git rebase [-i] [選項] [--exec <令>] [--onto <新基礎>] --root [<分支>]"
 
 #: builtin/rebase.c:39
 msgid "git rebase --continue | --abort | --skip | --edit-todo"
 msgstr "git rebase --continue | --abort | --skip | --edit-todo"
 
-#: builtin/rebase.c:193 builtin/rebase.c:217 builtin/rebase.c:244
+#: builtin/rebase.c:195 builtin/rebase.c:219 builtin/rebase.c:246
 #, c-format
 msgid "unusable todo list: '%s'"
 msgstr "不可用的待辦列表:'%s'"
 
-#: builtin/rebase.c:310
+#: builtin/rebase.c:312
 #, c-format
 msgid "could not create temporary %s"
 msgstr "無法建立暫時的 %s"
 
-#: builtin/rebase.c:316
+#: builtin/rebase.c:318
 msgid "could not mark as interactive"
 msgstr "無法標記為互動式"
 
-#: builtin/rebase.c:369
+#: builtin/rebase.c:371
 msgid "could not generate todo list"
 msgstr "無法生成待辦列表"
 
-#: builtin/rebase.c:411
+#: builtin/rebase.c:413
 msgid "a base commit must be provided with --upstream or --onto"
 msgstr "使用 --upstream 或 --onto 必須提供一個基礎提交"
 
-#: builtin/rebase.c:480
+#: builtin/rebase.c:482
 msgid "git rebase--interactive [<options>]"
 msgstr "git rebase--interactive [<選項>]"
 
-#: builtin/rebase.c:493 builtin/rebase.c:1388
+#: builtin/rebase.c:495 builtin/rebase.c:1394
 msgid "keep commits which start empty"
 msgstr "保留開頭是空白的提交"
 
-#: builtin/rebase.c:497 builtin/revert.c:128
+#: builtin/rebase.c:499 builtin/revert.c:128
 msgid "allow commits with empty messages"
 msgstr "允許提交說明為空"
 
-#: builtin/rebase.c:499
+#: builtin/rebase.c:501
 msgid "rebase merge commits"
 msgstr "對合併提交重定基底"
 
-#: builtin/rebase.c:501
+#: builtin/rebase.c:503
 msgid "keep original branch points of cousins"
 msgstr "保持兄弟提交的原始分支點"
 
-#: builtin/rebase.c:503
+#: builtin/rebase.c:505
 msgid "move commits that begin with squash!/fixup!"
 msgstr "移動以 squash!/fixup! 開頭的提交"
 
-#: builtin/rebase.c:504
+#: builtin/rebase.c:506
 msgid "sign commits"
 msgstr "簽名提交"
 
-#: builtin/rebase.c:506 builtin/rebase.c:1327
+#: builtin/rebase.c:508 builtin/rebase.c:1333
 msgid "display a diffstat of what changed upstream"
 msgstr "顯示上游變化的差異統計"
 
-#: builtin/rebase.c:508
+#: builtin/rebase.c:510
 msgid "continue rebase"
 msgstr "繼續重定基底"
 
-#: builtin/rebase.c:510
+#: builtin/rebase.c:512
 msgid "skip commit"
 msgstr "跳過提交"
 
-#: builtin/rebase.c:511
+#: builtin/rebase.c:513
 msgid "edit the todo list"
 msgstr "重定基底待辦列表"
 
-#: builtin/rebase.c:513
+#: builtin/rebase.c:515
 msgid "show the current patch"
 msgstr "顯示目前修補檔"
 
-#: builtin/rebase.c:516
+#: builtin/rebase.c:518
 msgid "shorten commit ids in the todo list"
 msgstr "縮短待辦列表中的提交號"
 
-#: builtin/rebase.c:518
+#: builtin/rebase.c:520
 msgid "expand commit ids in the todo list"
 msgstr "擴展待辦列表中的提交號"
 
-#: builtin/rebase.c:520
+#: builtin/rebase.c:522
 msgid "check the todo list"
 msgstr "檢查待辦列表"
 
-#: builtin/rebase.c:522
+#: builtin/rebase.c:524
 msgid "rearrange fixup/squash lines"
 msgstr "重新排列 fixup/squash 行"
 
-#: builtin/rebase.c:524
+#: builtin/rebase.c:526
 msgid "insert exec commands in todo list"
 msgstr "在待辦列表中插入 exec 執行指令"
 
-#: builtin/rebase.c:525
+#: builtin/rebase.c:527
 msgid "onto"
 msgstr "onto"
 
-#: builtin/rebase.c:528
+#: builtin/rebase.c:530
 msgid "restrict-revision"
 msgstr "restrict-revision"
 
-#: builtin/rebase.c:528
+#: builtin/rebase.c:530
 msgid "restrict revision"
 msgstr "限制版本"
 
-#: builtin/rebase.c:530
+#: builtin/rebase.c:532
 msgid "squash-onto"
 msgstr "squash-onto"
 
-#: builtin/rebase.c:531
+#: builtin/rebase.c:533
 msgid "squash onto"
 msgstr "squash onto"
 
-#: builtin/rebase.c:533
+#: builtin/rebase.c:535
 msgid "the upstream commit"
 msgstr "上游提交"
 
-#: builtin/rebase.c:535
+#: builtin/rebase.c:537
 msgid "head-name"
 msgstr "head-name"
 
-#: builtin/rebase.c:535
+#: builtin/rebase.c:537
 msgid "head name"
 msgstr "head 名稱"
 
-#: builtin/rebase.c:540
+#: builtin/rebase.c:542
 msgid "rebase strategy"
 msgstr "重定基底策略"
 
-#: builtin/rebase.c:541
+#: builtin/rebase.c:543
 msgid "strategy-opts"
 msgstr "strategy-opts"
 
-#: builtin/rebase.c:542
+#: builtin/rebase.c:544
 msgid "strategy options"
 msgstr "策略選項"
 
-#: builtin/rebase.c:543
+#: builtin/rebase.c:545
 msgid "switch-to"
 msgstr "切換到"
 
-#: builtin/rebase.c:544
+#: builtin/rebase.c:546
 msgid "the branch or commit to checkout"
 msgstr "要檢出的分支或提交"
 
-#: builtin/rebase.c:545
+#: builtin/rebase.c:547
 msgid "onto-name"
 msgstr "onto-name"
 
-#: builtin/rebase.c:545
+#: builtin/rebase.c:547
 msgid "onto name"
 msgstr "onto name"
 
-#: builtin/rebase.c:546
+#: builtin/rebase.c:548
 msgid "cmd"
 msgstr "cmd"
 
-#: builtin/rebase.c:546
+#: builtin/rebase.c:548
 msgid "the command to run"
 msgstr "要執行的指令"
 
-#: builtin/rebase.c:549 builtin/rebase.c:1421
+#: builtin/rebase.c:551 builtin/rebase.c:1427
 msgid "automatically re-schedule any `exec` that fails"
 msgstr "自動重新安排任何失敗的 `exec`"
 
-#: builtin/rebase.c:565
+#: builtin/rebase.c:567
 msgid "--[no-]rebase-cousins has no effect without --rebase-merges"
 msgstr "不使用 --rebase-merges,則 --[no-]rebase-cousins 沒有效果"
 
-#: builtin/rebase.c:581
+#: builtin/rebase.c:583
 #, c-format
 msgid "%s requires the merge backend"
 msgstr "%s 需要合併後端"
 
-#: builtin/rebase.c:624
+#: builtin/rebase.c:626
 #, c-format
 msgid "could not get 'onto': '%s'"
 msgstr "無法取得 'onto':'%s'"
 
-#: builtin/rebase.c:641
+#: builtin/rebase.c:643
 #, c-format
 msgid "invalid orig-head: '%s'"
 msgstr "無效的原始 head:'%s'"
 
-#: builtin/rebase.c:666
+#: builtin/rebase.c:668
 #, c-format
 msgid "ignoring invalid allow_rerere_autoupdate: '%s'"
 msgstr "忽略無效的 allow_rerere_autoupdate:'%s'"
 
-#: builtin/rebase.c:811 git-rebase--preserve-merges.sh:81
+#: builtin/rebase.c:813 git-rebase--preserve-merges.sh:81
 msgid ""
 "Resolve all conflicts manually, mark them as resolved with\n"
 "\"git add/rm <conflicted_files>\", then run \"git rebase --continue\".\n"
@@ -19086,7 +19477,7 @@ msgstr ""
 "\"git rebase --skip\" 指令跳過這個提交。如果想要終止執行並回到\n"
 "\"git rebase\" 執行之前的狀態,執行 \"git rebase --abort\"。"
 
-#: builtin/rebase.c:894
+#: builtin/rebase.c:896
 #, c-format
 msgid ""
 "\n"
@@ -19104,14 +19495,14 @@ msgstr ""
 "\n"
 "因此 git 無法對其重定基底。"
 
-#: builtin/rebase.c:1220
+#: builtin/rebase.c:1227
 #, c-format
 msgid ""
 "unrecognized empty type '%s'; valid values are \"drop\", \"keep\", and \"ask"
 "\"."
 msgstr "無法識別的 '%s' 空類型;有效的數值有 \"drop\"、\"keep\" 跟 \"ask\"。"
 
-#: builtin/rebase.c:1238
+#: builtin/rebase.c:1245
 #, c-format
 msgid ""
 "%s\n"
@@ -19128,7 +19519,7 @@ msgstr ""
 "    git rebase '<branch>'\n"
 "\n"
 
-#: builtin/rebase.c:1254
+#: builtin/rebase.c:1261
 #, c-format
 msgid ""
 "If you wish to set tracking information for this branch you can do so with:\n"
@@ -19141,148 +19532,148 @@ msgstr ""
 "    git branch --set-upstream-to=%s/<branch> %s\n"
 "\n"
 
-#: builtin/rebase.c:1284
+#: builtin/rebase.c:1291
 msgid "exec commands cannot contain newlines"
 msgstr "exec 指令不能包含換行符號"
 
-#: builtin/rebase.c:1288
+#: builtin/rebase.c:1295
 msgid "empty exec command"
 msgstr "空的 exec 指令"
 
-#: builtin/rebase.c:1318
+#: builtin/rebase.c:1324
 msgid "rebase onto given branch instead of upstream"
 msgstr "重定基底到提供的分支而非上游"
 
-#: builtin/rebase.c:1320
+#: builtin/rebase.c:1326
 msgid "use the merge-base of upstream and branch as the current base"
 msgstr "使用上游和分支的合併基礎做為目前基礎"
 
-#: builtin/rebase.c:1322
+#: builtin/rebase.c:1328
 msgid "allow pre-rebase hook to run"
 msgstr "允許執行 pre-rebase 掛鉤"
 
-#: builtin/rebase.c:1324
+#: builtin/rebase.c:1330
 msgid "be quiet. implies --no-stat"
 msgstr "安靜。暗示 --no-stat"
 
-#: builtin/rebase.c:1330
+#: builtin/rebase.c:1336
 msgid "do not show diffstat of what changed upstream"
 msgstr "不顯示上游變化的差異統計"
 
-#: builtin/rebase.c:1333
+#: builtin/rebase.c:1339
 msgid "add a Signed-off-by trailer to each commit"
 msgstr "在每個提交結尾加入 Signed-off-by"
 
-#: builtin/rebase.c:1336
+#: builtin/rebase.c:1342
 msgid "make committer date match author date"
 msgstr "使提交日期與製作日期相符合"
 
-#: builtin/rebase.c:1338
+#: builtin/rebase.c:1344
 msgid "ignore author date and use current date"
 msgstr "忽略製作日期而使用日前日期"
 
-#: builtin/rebase.c:1340
+#: builtin/rebase.c:1346
 msgid "synonym of --reset-author-date"
 msgstr "和 --reset-author-date 同義"
 
-#: builtin/rebase.c:1342 builtin/rebase.c:1346
+#: builtin/rebase.c:1348 builtin/rebase.c:1352
 msgid "passed to 'git apply'"
 msgstr "傳遞給 'git apply'"
 
-#: builtin/rebase.c:1344
+#: builtin/rebase.c:1350
 msgid "ignore changes in whitespace"
 msgstr "忽略空白字元中的變更"
 
-#: builtin/rebase.c:1348 builtin/rebase.c:1351
+#: builtin/rebase.c:1354 builtin/rebase.c:1357
 msgid "cherry-pick all commits, even if unchanged"
 msgstr "揀選所有提交,即使未修改"
 
-#: builtin/rebase.c:1353
+#: builtin/rebase.c:1359
 msgid "continue"
 msgstr "繼續"
 
-#: builtin/rebase.c:1356
+#: builtin/rebase.c:1362
 msgid "skip current patch and continue"
 msgstr "跳過目前修補檔並繼續"
 
 #  譯者:請維持前導空格
-#: builtin/rebase.c:1358
+#: builtin/rebase.c:1364
 msgid "abort and check out the original branch"
 msgstr "終止並檢出原有分支"
 
-#: builtin/rebase.c:1361
+#: builtin/rebase.c:1367
 msgid "abort but keep HEAD where it is"
 msgstr "終止但保持 HEAD 不變"
 
-#: builtin/rebase.c:1362
+#: builtin/rebase.c:1368
 msgid "edit the todo list during an interactive rebase"
 msgstr "在互動式重定基底中編輯待辦列表"
 
-#: builtin/rebase.c:1365
+#: builtin/rebase.c:1371
 msgid "show the patch file being applied or merged"
 msgstr "顯示正在套用或合併的修補檔案"
 
-#: builtin/rebase.c:1368
+#: builtin/rebase.c:1374
 msgid "use apply strategies to rebase"
 msgstr "使用套用策略進行重定基底"
 
-#: builtin/rebase.c:1372
+#: builtin/rebase.c:1378
 msgid "use merging strategies to rebase"
 msgstr "使用合併策略進行重定基底"
 
-#: builtin/rebase.c:1376
+#: builtin/rebase.c:1382
 msgid "let the user edit the list of commits to rebase"
 msgstr "讓使用者編輯要重定基底的提交列表"
 
-#: builtin/rebase.c:1380
+#: builtin/rebase.c:1386
 msgid "(DEPRECATED) try to recreate merges instead of ignoring them"
 msgstr "(已棄用)嘗試重建合併提交而非忽略它們"
 
-#: builtin/rebase.c:1385
+#: builtin/rebase.c:1391
 msgid "how to handle commits that become empty"
 msgstr "處理空白提交的方式"
 
-#: builtin/rebase.c:1392
+#: builtin/rebase.c:1398
 msgid "move commits that begin with squash!/fixup! under -i"
 msgstr "在 -i 互動模式下,移動以 squash!/fixup! 開頭的提交"
 
-#: builtin/rebase.c:1399
+#: builtin/rebase.c:1405
 msgid "add exec lines after each commit of the editable list"
 msgstr "可編輯列表的每一個提交下面增加一行 exec"
 
-#: builtin/rebase.c:1403
+#: builtin/rebase.c:1409
 msgid "allow rebasing commits with empty messages"
 msgstr "允許針對空提交說明的提交重定基底"
 
-#: builtin/rebase.c:1407
+#: builtin/rebase.c:1413
 msgid "try to rebase merges instead of skipping them"
 msgstr "嘗試對合併提交重定基底而不是忽略它們"
 
-#: builtin/rebase.c:1410
+#: builtin/rebase.c:1416
 msgid "use 'merge-base --fork-point' to refine upstream"
 msgstr "使用 'merge-base --fork-point' 來最佳化上游"
 
-#: builtin/rebase.c:1412
+#: builtin/rebase.c:1418
 msgid "use the given merge strategy"
 msgstr "使用提供的合併策略"
 
-#: builtin/rebase.c:1414 builtin/revert.c:115
+#: builtin/rebase.c:1420 builtin/revert.c:115
 msgid "option"
 msgstr "選項"
 
-#: builtin/rebase.c:1415
+#: builtin/rebase.c:1421
 msgid "pass the argument through to the merge strategy"
 msgstr "將參數傳遞給合併策略"
 
-#: builtin/rebase.c:1418
+#: builtin/rebase.c:1424
 msgid "rebase all reachable commits up to the root(s)"
 msgstr "將所有可以取得的提交重定基底到根提交"
 
-#: builtin/rebase.c:1423
+#: builtin/rebase.c:1429
 msgid "apply all changes, even those already present upstream"
 msgstr "即使已提供上游,仍套用所有變更"
 
-#: builtin/rebase.c:1440
+#: builtin/rebase.c:1446
 msgid ""
 "the rebase.useBuiltin support has been removed!\n"
 "See its entry in 'git help config' for details."
@@ -19290,40 +19681,40 @@ msgstr ""
 "對 rebase.useBuiltin 的支援已被刪除!\n"
 "詳見 'git help config' 中的條目。"
 
-#: builtin/rebase.c:1446
+#: builtin/rebase.c:1452
 msgid "It looks like 'git am' is in progress. Cannot rebase."
 msgstr "看起來 'git-am' 正在執行中。無法重定基底。"
 
-#: builtin/rebase.c:1487
+#: builtin/rebase.c:1493
 msgid ""
 "git rebase --preserve-merges is deprecated. Use --rebase-merges instead."
 msgstr "git rebase --preserve-merges 被棄用。用 --rebase-merges 代替。"
 
-#: builtin/rebase.c:1492
+#: builtin/rebase.c:1498
 msgid "cannot combine '--keep-base' with '--onto'"
 msgstr "不能將 '--keep-base' 和 '--onto' 組合使用"
 
-#: builtin/rebase.c:1494
+#: builtin/rebase.c:1500
 msgid "cannot combine '--keep-base' with '--root'"
 msgstr "不能將 '--keep-base' 和 '--root' 組合使用"
 
-#: builtin/rebase.c:1498
+#: builtin/rebase.c:1504
 msgid "cannot combine '--root' with '--fork-point'"
 msgstr "不能將 '--root' 和 '--fork-point' 結合使用"
 
-#: builtin/rebase.c:1501
+#: builtin/rebase.c:1507
 msgid "No rebase in progress?"
 msgstr "沒有正在進行的重定基底?"
 
-#: builtin/rebase.c:1505
+#: builtin/rebase.c:1511
 msgid "The --edit-todo action can only be used during interactive rebase."
 msgstr "動作 --edit-todo 只能用在互動式重定基底過程中。"
 
-#: builtin/rebase.c:1528 t/helper/test-fast-rebase.c:123
+#: builtin/rebase.c:1534 t/helper/test-fast-rebase.c:123
 msgid "Cannot read HEAD"
 msgstr "不能讀取 HEAD"
 
-#: builtin/rebase.c:1540
+#: builtin/rebase.c:1546
 msgid ""
 "You must edit all merge conflicts and then\n"
 "mark them as resolved using git add"
@@ -19331,16 +19722,16 @@ msgstr ""
 "您必須編輯所有的合併衝突,然後透過 git add\n"
 "指令將它們標記為已解決"
 
-#: builtin/rebase.c:1559
+#: builtin/rebase.c:1565
 msgid "could not discard worktree changes"
 msgstr "無法捨棄工作區變更"
 
-#: builtin/rebase.c:1578
+#: builtin/rebase.c:1584
 #, c-format
 msgid "could not move back to %s"
 msgstr "無法移回 %s"
 
-#: builtin/rebase.c:1624
+#: builtin/rebase.c:1630
 #, c-format
 msgid ""
 "It seems that there is already a %s directory, and\n"
@@ -19359,132 +19750,132 @@ msgstr ""
 "\t%s\n"
 "然後再重新執行。 為避免遺失重要資料,我已經停止目前動作。\n"
 
-#: builtin/rebase.c:1652
+#: builtin/rebase.c:1658
 msgid "switch `C' expects a numerical value"
 msgstr "開關 `C' 期望一個數字值"
 
-#: builtin/rebase.c:1694
+#: builtin/rebase.c:1700
 #, c-format
 msgid "Unknown mode: %s"
 msgstr "未知模式:%s"
 
-#: builtin/rebase.c:1733
+#: builtin/rebase.c:1739
 msgid "--strategy requires --merge or --interactive"
 msgstr "--strategy 需要 --merge 或 --interactive"
 
-#: builtin/rebase.c:1763
+#: builtin/rebase.c:1769
 msgid "cannot combine apply options with merge options"
 msgstr "不能將 apply 套用選項與 merge 合併選項一起使用"
 
-#: builtin/rebase.c:1776
+#: builtin/rebase.c:1782
 #, c-format
 msgid "Unknown rebase backend: %s"
 msgstr "未知 rebase 後端:%s"
 
-#: builtin/rebase.c:1806
+#: builtin/rebase.c:1812
 msgid "--reschedule-failed-exec requires --exec or --interactive"
 msgstr "--reschedule-failed-exec 需要 --exec 或 --interactive"
 
-#: builtin/rebase.c:1826
+#: builtin/rebase.c:1832
 msgid "cannot combine '--preserve-merges' with '--rebase-merges'"
 msgstr "不能將 '--preserve-merges' 和 '--rebase-merges' 同時使用"
 
-#: builtin/rebase.c:1830
+#: builtin/rebase.c:1836
 msgid ""
 "error: cannot combine '--preserve-merges' with '--reschedule-failed-exec'"
 msgstr ""
 "錯誤:不能將 '--preserve-merges' 和 '--reschedule-failed-exec' 同時使用"
 
-#: builtin/rebase.c:1854
+#: builtin/rebase.c:1860
 #, c-format
 msgid "invalid upstream '%s'"
 msgstr "無效的上游 '%s'"
 
-#: builtin/rebase.c:1860
+#: builtin/rebase.c:1866
 msgid "Could not create new root commit"
 msgstr "不能建立新的根提交"
 
-#: builtin/rebase.c:1886
+#: builtin/rebase.c:1892
 #, c-format
 msgid "'%s': need exactly one merge base with branch"
 msgstr "'%s':只需要與分支的一個合併基礎"
 
-#: builtin/rebase.c:1889
+#: builtin/rebase.c:1895
 #, c-format
 msgid "'%s': need exactly one merge base"
 msgstr "'%s':只需要一個合併基礎"
 
-#: builtin/rebase.c:1897
+#: builtin/rebase.c:1903
 #, c-format
 msgid "Does not point to a valid commit '%s'"
 msgstr "沒有指向一個有效的提交 '%s'"
 
-#: builtin/rebase.c:1923
+#: builtin/rebase.c:1931
 #, c-format
 msgid "fatal: no such branch/commit '%s'"
 msgstr "致命錯誤:無此分支/提交 '%s'"
 
-#: builtin/rebase.c:1931 builtin/submodule--helper.c:40
+#: builtin/rebase.c:1939 builtin/submodule--helper.c:40
 #: builtin/submodule--helper.c:2414
 #, c-format
 msgid "No such ref: %s"
 msgstr "沒有這樣的引用:%s"
 
-#: builtin/rebase.c:1942
+#: builtin/rebase.c:1950
 msgid "Could not resolve HEAD to a revision"
 msgstr "無法將 HEAD 解析為一個版本"
 
-#: builtin/rebase.c:1963
+#: builtin/rebase.c:1971
 msgid "Please commit or stash them."
 msgstr "請提交或儲藏修改。"
 
-#: builtin/rebase.c:1999
+#: builtin/rebase.c:2007
 #, c-format
 msgid "could not switch to %s"
 msgstr "無法切換到 %s"
 
-#: builtin/rebase.c:2010
+#: builtin/rebase.c:2018
 msgid "HEAD is up to date."
 msgstr "HEAD 是最新的。"
 
-#: builtin/rebase.c:2012
+#: builtin/rebase.c:2020
 #, c-format
 msgid "Current branch %s is up to date.\n"
 msgstr "目前分支 %s 是最新的。\n"
 
-#: builtin/rebase.c:2020
+#: builtin/rebase.c:2028
 msgid "HEAD is up to date, rebase forced."
 msgstr "HEAD 是最新的,強制重定基底。"
 
-#: builtin/rebase.c:2022
+#: builtin/rebase.c:2030
 #, c-format
 msgid "Current branch %s is up to date, rebase forced.\n"
 msgstr "目前分支 %s 是最新的,強制重定基底。\n"
 
-#: builtin/rebase.c:2030
+#: builtin/rebase.c:2038
 msgid "The pre-rebase hook refused to rebase."
 msgstr "pre-rebase 掛鉤拒絕了重定基底動作。"
 
-#: builtin/rebase.c:2037
+#: builtin/rebase.c:2045
 #, c-format
 msgid "Changes to %s:\n"
 msgstr "到 %s 的變更:\n"
 
-#: builtin/rebase.c:2040
+#: builtin/rebase.c:2048
 #, c-format
 msgid "Changes from %s to %s:\n"
 msgstr "從 %s 到 %s 的變更:\n"
 
-#: builtin/rebase.c:2065
+#: builtin/rebase.c:2073
 #, c-format
 msgid "First, rewinding head to replay your work on top of it...\n"
 msgstr "首先,還原開頭指標以便在其上重放您的工作...\n"
 
-#: builtin/rebase.c:2074
+#: builtin/rebase.c:2082
 msgid "Could not detach HEAD"
 msgstr "無法分離開頭指標"
 
-#: builtin/rebase.c:2083
+#: builtin/rebase.c:2091
 #, c-format
 msgid "Fast-forwarded %s to %s.\n"
 msgstr "快轉 %s 到 %s。\n"
@@ -19573,36 +19964,36 @@ msgstr "git reflog exists <引用>"
 msgid "'%s' is not a valid timestamp"
 msgstr "'%s' 不是一個有效的時間戳"
 
-#: builtin/reflog.c:606
+#: builtin/reflog.c:609
 #, c-format
 msgid "Marking reachable objects..."
 msgstr "正在標記可以取得物件..."
 
-#: builtin/reflog.c:644
+#: builtin/reflog.c:647
 #, c-format
 msgid "%s points nowhere!"
 msgstr "%s 指向不存在!"
 
-#: builtin/reflog.c:696
+#: builtin/reflog.c:699
 msgid "no reflog specified to delete"
 msgstr "未指定要刪除的引用日誌"
 
-#: builtin/reflog.c:705
+#: builtin/reflog.c:708
 #, c-format
 msgid "not a reflog: %s"
 msgstr "不是一個引用日誌:%s"
 
-#: builtin/reflog.c:710
+#: builtin/reflog.c:713
 #, c-format
 msgid "no reflog for '%s'"
 msgstr "沒有 '%s' 的引用日誌"
 
-#: builtin/reflog.c:756
+#: builtin/reflog.c:759
 #, c-format
 msgid "invalid ref format: %s"
 msgstr "無效的引用格式:%s"
 
-#: builtin/reflog.c:765
+#: builtin/reflog.c:768
 msgid "git reflog [ show | expire | delete | exists ]"
 msgstr "git reflog [ show | expire | delete | exists ]"
 
@@ -20109,11 +20500,11 @@ msgstr "未找到此 URL:%s"
 msgid "Will not delete all non-push URLs"
 msgstr "將不會刪除所有非推送 URL 位址"
 
-#: builtin/repack.c:25
+#: builtin/repack.c:26
 msgid "git repack [<options>]"
 msgstr "git repack [<選項>]"
 
-#: builtin/repack.c:30
+#: builtin/repack.c:31
 msgid ""
 "Incremental repacks are incompatible with bitmap indexes.  Use\n"
 "--no-write-bitmap-index or disable the pack.writebitmaps configuration."
@@ -20121,116 +20512,116 @@ msgstr ""
 "增量 repack 和 bitmap 索引不相容。  使用 --no-write-bitmap-index\n"
 "或停用 pack.writebitmaps 設定。"
 
-#: builtin/repack.c:197
+#: builtin/repack.c:198
 msgid "could not start pack-objects to repack promisor objects"
 msgstr "無法開始 pack-objects 來重新打包 promisor 物件"
 
-#: builtin/repack.c:268 builtin/repack.c:447
+#: builtin/repack.c:270 builtin/repack.c:446
 msgid "repack: Expecting full hex object ID lines only from pack-objects."
 msgstr "repack:期望來自 pack-objects 的完整十六進位物件 ID。"
 
-#: builtin/repack.c:295
+#: builtin/repack.c:294
 msgid "could not finish pack-objects to repack promisor objects"
 msgstr "無法完成 pack-objects 來重新打包 promisor 物件"
 
-#: builtin/repack.c:323
+#: builtin/repack.c:322
 msgid "pack everything in a single pack"
 msgstr "所有內容打包到一個包檔案中"
 
-#: builtin/repack.c:325
+#: builtin/repack.c:324
 msgid "same as -a, and turn unreachable objects loose"
 msgstr "和 -a 相同,並將無法取得的物件設為鬆散物件"
 
-#: builtin/repack.c:328
+#: builtin/repack.c:327
 msgid "remove redundant packs, and run git-prune-packed"
 msgstr "刪除多餘的包,執行 git-prune-packed"
 
-#: builtin/repack.c:330
+#: builtin/repack.c:329
 msgid "pass --no-reuse-delta to git-pack-objects"
 msgstr "向 git-pack-objects 傳遞參數 --no-reuse-delta"
 
-#: builtin/repack.c:332
+#: builtin/repack.c:331
 msgid "pass --no-reuse-object to git-pack-objects"
 msgstr "向 git-pack-objects 傳遞參數 --no-reuse-object"
 
-#: builtin/repack.c:334
+#: builtin/repack.c:333
 msgid "do not run git-update-server-info"
 msgstr "不執行 git-update-server-info"
 
-#: builtin/repack.c:337
+#: builtin/repack.c:336
 msgid "pass --local to git-pack-objects"
 msgstr "向 git-pack-objects 傳遞參數 --local"
 
-#: builtin/repack.c:339
+#: builtin/repack.c:338
 msgid "write bitmap index"
 msgstr "寫 bitmap 索引"
 
-#: builtin/repack.c:341
+#: builtin/repack.c:340
 msgid "pass --delta-islands to git-pack-objects"
 msgstr "向 git-pack-objects 傳遞參數 --delta-islands"
 
-#: builtin/repack.c:342
+#: builtin/repack.c:341
 msgid "approxidate"
 msgstr "近似日期"
 
-#: builtin/repack.c:343
+#: builtin/repack.c:342
 msgid "with -A, do not loosen objects older than this"
 msgstr "使用 -A,不要將早於提供時間的物件過期"
 
-#: builtin/repack.c:345
+#: builtin/repack.c:344
 msgid "with -a, repack unreachable objects"
 msgstr "使用 -a ,重新對無法取得物件打包"
 
-#: builtin/repack.c:347
+#: builtin/repack.c:346
 msgid "size of the window used for delta compression"
 msgstr "用於增量壓縮的視窗值"
 
-#: builtin/repack.c:348 builtin/repack.c:354
+#: builtin/repack.c:347 builtin/repack.c:353
 msgid "bytes"
 msgstr "位元組"
 
-#: builtin/repack.c:349
+#: builtin/repack.c:348
 msgid "same as the above, but limit memory size instead of entries count"
 msgstr "和上面的相似,但限制記憶體大小而非條目數"
 
-#: builtin/repack.c:351
+#: builtin/repack.c:350
 msgid "limits the maximum delta depth"
 msgstr "限制最大增量深度"
 
-#: builtin/repack.c:353
+#: builtin/repack.c:352
 msgid "limits the maximum number of threads"
 msgstr "限制最大執行緒數"
 
-#: builtin/repack.c:355
+#: builtin/repack.c:354
 msgid "maximum size of each packfile"
 msgstr "每個 packfile 的最大尺寸"
 
-#: builtin/repack.c:357
+#: builtin/repack.c:356
 msgid "repack objects in packs marked with .keep"
 msgstr "對標記為 .keep 的包中的物件重新打包"
 
-#: builtin/repack.c:359
+#: builtin/repack.c:358
 msgid "do not repack this pack"
 msgstr "不要對該包檔案重新打包"
 
-#: builtin/repack.c:369
+#: builtin/repack.c:368
 msgid "cannot delete packs in a precious-objects repo"
 msgstr "不能刪除珍品版本庫中的打包檔案"
 
-#: builtin/repack.c:373
+#: builtin/repack.c:372
 msgid "--keep-unreachable and -A are incompatible"
 msgstr "--keep-unreachable 和 -A 不相容"
 
-#: builtin/repack.c:456
+#: builtin/repack.c:455
 msgid "Nothing new to pack."
 msgstr "沒有新的要打包。"
 
-#: builtin/repack.c:486
+#: builtin/repack.c:485
 #, c-format
 msgid "missing required file: %s"
 msgstr "缺少必要檔案:%s"
 
-#: builtin/repack.c:488
+#: builtin/repack.c:487
 #, c-format
 msgid "could not unlink: %s"
 msgstr "無法取消連結:%s"
@@ -20561,8 +20952,8 @@ msgstr "HEAD 現在位於 %s"
 msgid "Cannot do a %s reset in the middle of a merge."
 msgstr "在合併過程中不能做%s重設動作。"
 
-#: builtin/reset.c:295 builtin/stash.c:520 builtin/stash.c:594
-#: builtin/stash.c:618
+#: builtin/reset.c:295 builtin/stash.c:587 builtin/stash.c:661
+#: builtin/stash.c:685
 msgid "be quiet, only report errors"
 msgstr "安靜模式,只報告錯誤"
 
@@ -20645,19 +21036,19 @@ msgstr "不能重設索引檔案至版本 '%s'。"
 msgid "Could not write new index file."
 msgstr "不能寫入新的索引檔案。"
 
-#: builtin/rev-list.c:499
+#: builtin/rev-list.c:534
 msgid "cannot combine --exclude-promisor-objects and --missing"
 msgstr "不能同時使用 --exclude-promisor-objects 和 --missing 選項"
 
-#: builtin/rev-list.c:560
+#: builtin/rev-list.c:595
 msgid "object filtering requires --objects"
 msgstr "物件過濾需要 --objects"
 
-#: builtin/rev-list.c:610
+#: builtin/rev-list.c:651
 msgid "rev-list does not support display of notes"
 msgstr "rev-list 不支援顯示註解"
 
-#: builtin/rev-list.c:615
+#: builtin/rev-list.c:656
 msgid "marked counting is incompatible with --objects"
 msgstr "--objects 不相容標記計數 (marked counting)"
 
@@ -20889,52 +21280,52 @@ msgstr "git shortlog [<選項>] [<版本範圍>] [[--] <路徑>...]"
 msgid "git log --pretty=short | git shortlog [<options>]"
 msgstr "git log --pretty=short | git shortlog [<選項>]"
 
-#: builtin/shortlog.c:135
+#: builtin/shortlog.c:123
 msgid "using multiple --group options with stdin is not supported"
 msgstr "不支援在標準輸入使用多個 --group 選項"
 
-#: builtin/shortlog.c:145
+#: builtin/shortlog.c:133
 msgid "using --group=trailer with stdin is not supported"
 msgstr "不支援在標準輸入使用 --group=trailer"
 
-#: builtin/shortlog.c:335
+#: builtin/shortlog.c:323
 #, c-format
 msgid "unknown group type: %s"
 msgstr "未知群組類型:%s"
 
-#: builtin/shortlog.c:363
-msgid "Group by committer rather than author"
-msgstr "按照提交者分組而不是作者"
+#: builtin/shortlog.c:351
+msgid "group by committer rather than author"
+msgstr "依提交者而非作者分組"
 
-#: builtin/shortlog.c:366
+#: builtin/shortlog.c:354
 msgid "sort output according to the number of commits per author"
 msgstr "根據每個作者的提交數量排序"
 
-#: builtin/shortlog.c:368
-msgid "Suppress commit descriptions, only provides commit count"
+#: builtin/shortlog.c:356
+msgid "suppress commit descriptions, only provides commit count"
 msgstr "隱藏提交說明,只提供提交數量"
 
-#: builtin/shortlog.c:370
-msgid "Show the email address of each author"
+#: builtin/shortlog.c:358
+msgid "show the email address of each author"
 msgstr "顯示每個作者的電子信件位址"
 
-#: builtin/shortlog.c:371
+#: builtin/shortlog.c:359
 msgid "<w>[,<i1>[,<i2>]]"
 msgstr "<w>[,<i1>[,<i2>]]"
 
-#: builtin/shortlog.c:372
-msgid "Linewrap output"
+#: builtin/shortlog.c:360
+msgid "linewrap output"
 msgstr "折行輸出"
 
-#: builtin/shortlog.c:374
+#: builtin/shortlog.c:362
 msgid "field"
 msgstr "欄位"
 
-#: builtin/shortlog.c:375
-msgid "Group by field"
+#: builtin/shortlog.c:363
+msgid "group by field"
 msgstr "依欄位分組"
 
-#: builtin/shortlog.c:403
+#: builtin/shortlog.c:391
 msgid "too many arguments given outside repository"
 msgstr "版本庫外執行提供了太多的參數"
 
@@ -21125,70 +21516,70 @@ msgstr "顯示從標準輸入中讀入的不在本機版本庫中的引用"
 msgid "git sparse-checkout (init|list|set|add|reapply|disable) <options>"
 msgstr "git sparse-checkout (init|list|set|add|reapply|disable) <選項>"
 
-#: builtin/sparse-checkout.c:50
+#: builtin/sparse-checkout.c:45
 msgid "git sparse-checkout list"
 msgstr "git sparse-checkout list"
 
-#: builtin/sparse-checkout.c:76
+#: builtin/sparse-checkout.c:71
 msgid "this worktree is not sparse (sparse-checkout file may not exist)"
 msgstr "這不是稀疏工作區(sparse-checkout 檔案可能不存在)"
 
-#: builtin/sparse-checkout.c:228
+#: builtin/sparse-checkout.c:223
 msgid "failed to create directory for sparse-checkout file"
 msgstr "無法建立稀疏檢出檔案的目錄"
 
-#: builtin/sparse-checkout.c:269
+#: builtin/sparse-checkout.c:264
 msgid "unable to upgrade repository format to enable worktreeConfig"
 msgstr "無法升級版本庫格式,以致無法啟用 worktreeConfig"
 
-#: builtin/sparse-checkout.c:271
+#: builtin/sparse-checkout.c:266
 msgid "failed to set extensions.worktreeConfig setting"
 msgstr "無法設定 extensions.worktreeConfig 設定"
 
-#: builtin/sparse-checkout.c:288
+#: builtin/sparse-checkout.c:283
 msgid "git sparse-checkout init [--cone]"
 msgstr "git sparse-checkout init [--cone]"
 
-#: builtin/sparse-checkout.c:307
+#: builtin/sparse-checkout.c:302
 msgid "initialize the sparse-checkout in cone mode"
 msgstr "以 cone 模式初始化稀疏檢出"
 
-#: builtin/sparse-checkout.c:344
+#: builtin/sparse-checkout.c:339
 #, c-format
 msgid "failed to open '%s'"
 msgstr "無法開啟「%s」"
 
-#: builtin/sparse-checkout.c:401
+#: builtin/sparse-checkout.c:396
 #, c-format
 msgid "could not normalize path %s"
 msgstr "無法標準化路徑 %s"
 
-#: builtin/sparse-checkout.c:413
+#: builtin/sparse-checkout.c:408
 msgid "git sparse-checkout (set|add) (--stdin | <patterns>)"
 msgstr "git sparse-checkout (set|add) (--stdin | <樣式>)"
 
-#: builtin/sparse-checkout.c:438
+#: builtin/sparse-checkout.c:433
 #, c-format
 msgid "unable to unquote C-style string '%s'"
 msgstr "無法去掉 '%s' C 樣式字串的引號"
 
-#: builtin/sparse-checkout.c:492 builtin/sparse-checkout.c:516
+#: builtin/sparse-checkout.c:487 builtin/sparse-checkout.c:511
 msgid "unable to load existing sparse-checkout patterns"
 msgstr "無法載入現存的稀疏檢出樣式"
 
-#: builtin/sparse-checkout.c:561
+#: builtin/sparse-checkout.c:556
 msgid "read patterns from standard in"
 msgstr "從標準輸入讀取樣式"
 
-#: builtin/sparse-checkout.c:576
+#: builtin/sparse-checkout.c:571
 msgid "git sparse-checkout reapply"
 msgstr "git sparse-checkout reapply"
 
-#: builtin/sparse-checkout.c:595
+#: builtin/sparse-checkout.c:590
 msgid "git sparse-checkout disable"
 msgstr "git sparse-checkout disable"
 
-#: builtin/sparse-checkout.c:623
+#: builtin/sparse-checkout.c:618
 msgid "error while refreshing working directory"
 msgstr "重新整理工作目錄時發生錯誤"
 
@@ -21278,153 +21669,161 @@ msgid "%s is not a valid reference"
 msgstr "%s 不是一個有效的引用名"
 
 #: builtin/stash.c:225
-msgid "git stash clear with parameters is unimplemented"
-msgstr "git stash clear 不支援參數"
+msgid "git stash clear with arguments is unimplemented"
+msgstr "尚未實作傳入參數的 git stash clear"
+
+#: builtin/stash.c:429
+#, c-format
+msgid ""
+"WARNING: Untracked file in way of tracked file!  Renaming\n"
+"            %s -> %s\n"
+"         to make room.\n"
+msgstr ""
 
-#: builtin/stash.c:404
+#: builtin/stash.c:490
 msgid "cannot apply a stash in the middle of a merge"
 msgstr "無法在合併過程套用儲藏"
 
-#: builtin/stash.c:415
+#: builtin/stash.c:501
 #, c-format
 msgid "could not generate diff %s^!."
 msgstr "無法生成差異 %s^!."
 
-#: builtin/stash.c:422
+#: builtin/stash.c:508
 msgid "conflicts in index. Try without --index."
 msgstr "索引中有衝突。請試試看不用 --index。"
 
-#: builtin/stash.c:428
+#: builtin/stash.c:514
 msgid "could not save index tree"
 msgstr "不能儲存索引樹"
 
-#: builtin/stash.c:437
+#: builtin/stash.c:523
 msgid "could not restore untracked files from stash"
 msgstr "無法從儲藏條目中復原未追蹤檔案"
 
-#: builtin/stash.c:451
+#: builtin/stash.c:537
 #, c-format
 msgid "Merging %s with %s"
 msgstr "正在合併 %s 和 %s"
 
-#: builtin/stash.c:461
+#: builtin/stash.c:547
 msgid "Index was not unstashed."
 msgstr "索引未從儲藏中復原。"
 
-#: builtin/stash.c:522 builtin/stash.c:620
+#: builtin/stash.c:589 builtin/stash.c:687
 msgid "attempt to recreate the index"
 msgstr "嘗試重建索引"
 
-#: builtin/stash.c:566
+#: builtin/stash.c:633
 #, c-format
 msgid "Dropped %s (%s)"
 msgstr "捨棄了 %s(%s)"
 
-#: builtin/stash.c:569
+#: builtin/stash.c:636
 #, c-format
 msgid "%s: Could not drop stash entry"
 msgstr "%s:無法捨棄儲藏條目"
 
-#: builtin/stash.c:582
+#: builtin/stash.c:649
 #, c-format
 msgid "'%s' is not a stash reference"
 msgstr "'%s' 不是一個儲藏引用"
 
-#: builtin/stash.c:632
+#: builtin/stash.c:699
 msgid "The stash entry is kept in case you need it again."
 msgstr "儲藏條目被保留以備您再次需要。"
 
-#: builtin/stash.c:655
+#: builtin/stash.c:722
 msgid "No branch name specified"
 msgstr "未指定分支名"
 
-#: builtin/stash.c:799 builtin/stash.c:836
+#: builtin/stash.c:866 builtin/stash.c:903
 #, c-format
 msgid "Cannot update %s with %s"
 msgstr "無法用 %2$s 更新 %1$s"
 
-#: builtin/stash.c:817 builtin/stash.c:1471 builtin/stash.c:1536
+#: builtin/stash.c:884 builtin/stash.c:1538 builtin/stash.c:1603
 msgid "stash message"
 msgstr "儲藏說明"
 
-#: builtin/stash.c:827
+#: builtin/stash.c:894
 msgid "\"git stash store\" requires one <commit> argument"
 msgstr "\"git stash store\" 需要一個 <提交> 參數"
 
-#: builtin/stash.c:1042
+#: builtin/stash.c:1109
 msgid "No changes selected"
 msgstr "沒有選擇變更"
 
-#: builtin/stash.c:1142
+#: builtin/stash.c:1209
 msgid "You do not have the initial commit yet"
 msgstr "您尚未建立初始提交"
 
-#: builtin/stash.c:1169
+#: builtin/stash.c:1236
 msgid "Cannot save the current index state"
 msgstr "無法儲存目前索引狀態"
 
-#: builtin/stash.c:1178
+#: builtin/stash.c:1245
 msgid "Cannot save the untracked files"
 msgstr "無法儲存未追蹤檔案"
 
-#: builtin/stash.c:1189 builtin/stash.c:1198
+#: builtin/stash.c:1256 builtin/stash.c:1265
 msgid "Cannot save the current worktree state"
 msgstr "無法儲存目前工作區狀態"
 
-#: builtin/stash.c:1226
+#: builtin/stash.c:1293
 msgid "Cannot record working tree state"
 msgstr "不能記錄工作區狀態"
 
-#: builtin/stash.c:1275
+#: builtin/stash.c:1342
 msgid "Can't use --patch and --include-untracked or --all at the same time"
 msgstr "不能同時使用參數 --patch 和 --include-untracked 或 --all"
 
-#: builtin/stash.c:1291
+#: builtin/stash.c:1358
 msgid "Did you forget to 'git add'?"
 msgstr "您是否忘了執行 'git add'?"
 
-#: builtin/stash.c:1306
+#: builtin/stash.c:1373
 msgid "No local changes to save"
 msgstr "沒有要儲存的本機修改"
 
-#: builtin/stash.c:1313
+#: builtin/stash.c:1380
 msgid "Cannot initialize stash"
 msgstr "無法初始化儲藏"
 
-#: builtin/stash.c:1328
+#: builtin/stash.c:1395
 msgid "Cannot save the current status"
 msgstr "無法儲存目前狀態"
 
-#: builtin/stash.c:1333
+#: builtin/stash.c:1400
 #, c-format
 msgid "Saved working directory and index state %s"
 msgstr "儲存工作目錄和索引狀態 %s"
 
-#: builtin/stash.c:1423
+#: builtin/stash.c:1490
 msgid "Cannot remove worktree changes"
 msgstr "無法刪除工作區變更"
 
-#: builtin/stash.c:1462 builtin/stash.c:1527
+#: builtin/stash.c:1529 builtin/stash.c:1594
 msgid "keep index"
 msgstr "保持索引"
 
-#: builtin/stash.c:1464 builtin/stash.c:1529
+#: builtin/stash.c:1531 builtin/stash.c:1596
 msgid "stash in patch mode"
 msgstr "以修補檔模式儲藏"
 
-#: builtin/stash.c:1465 builtin/stash.c:1530
+#: builtin/stash.c:1532 builtin/stash.c:1597
 msgid "quiet mode"
 msgstr "靜默模式"
 
-#: builtin/stash.c:1467 builtin/stash.c:1532
+#: builtin/stash.c:1534 builtin/stash.c:1599
 msgid "include untracked files in stash"
 msgstr "儲藏中包含未追蹤檔案"
 
-#: builtin/stash.c:1469 builtin/stash.c:1534
+#: builtin/stash.c:1536 builtin/stash.c:1601
 msgid "include ignore files"
 msgstr "包含忽略的檔案"
 
-#: builtin/stash.c:1569
+#: builtin/stash.c:1636
 msgid ""
 "the stash.useBuiltin support has been removed!\n"
 "See its entry in 'git help config' for details."
@@ -21501,16 +21900,17 @@ msgstr ""
 "."
 
 #: builtin/submodule--helper.c:565
-msgid "Suppress output of entering each submodule command"
-msgstr "é\98»æ­¢é\80²å\85¥æ¯\8fä¸\80å\80\8bå­\90模çµ\84æ\8c\87令的輸出"
+msgid "suppress output of entering each submodule command"
+msgstr "é\9a±è\97\8fæ¯\8få\80\8bå­\90模çµ\84é\80²å\85¥å\91½令的輸出"
 
-#: builtin/submodule--helper.c:567 builtin/submodule--helper.c:1487
-msgid "Recurse into nested submodules"
+#: builtin/submodule--helper.c:567 builtin/submodule--helper.c:888
+#: builtin/submodule--helper.c:1487
+msgid "recurse into nested submodules"
 msgstr "遞迴進入嵌套子模組中"
 
 #: builtin/submodule--helper.c:572
 msgid "git submodule--helper foreach [--quiet] [--recursive] [--] <command>"
-msgstr "git submodule--helper foreach [--quiet] [--recursive] [--] <令>"
+msgstr "git submodule--helper foreach [--quiet] [--recursive] [--] <令>"
 
 #: builtin/submodule--helper.c:599
 #, c-format
@@ -21540,8 +21940,8 @@ msgid "Failed to register update mode for submodule path '%s'"
 msgstr "無法為子模組 '%s' 註冊更新模式"
 
 #: builtin/submodule--helper.c:709
-msgid "Suppress output for initializing a submodule"
-msgstr "é\98»æ­¢å­\90模çµ\84å\88\9då§\8bå\8c\96的輸出"
+msgid "suppress output for initializing a submodule"
+msgstr "é\9a±è\97\8få\88\9då§\8bå\8c\96å­\90模çµ\84的輸出"
 
 #: builtin/submodule--helper.c:714
 msgid "git submodule--helper init [<options>] [<path>]"
@@ -21563,19 +21963,15 @@ msgid "failed to recurse into submodule '%s'"
 msgstr "遞迴子模組 '%s' 失敗"
 
 #: builtin/submodule--helper.c:886 builtin/submodule--helper.c:1623
-msgid "Suppress submodule status output"
-msgstr "é\98»æ­¢å­\90模çµ\84ç\8b\80æ\85\8b輸å\87º"
+msgid "suppress submodule status output"
+msgstr "é\9a±è\97\8få­\90模çµ\84ç\9a\84ç\8b\80æ\85\8b輸å\87º"
 
 #: builtin/submodule--helper.c:887
 msgid ""
-"Use commit stored in the index instead of the one stored in the submodule "
+"use commit stored in the index instead of the one stored in the submodule "
 "HEAD"
 msgstr "使用儲存在索引中的提交,而非儲存在子模組 HEAD 中的提交"
 
-#: builtin/submodule--helper.c:888
-msgid "recurse into nested submodules"
-msgstr "遞迴進入嵌套子模組中"
-
 #: builtin/submodule--helper.c:893
 msgid "git submodule status [--quiet] [--cached] [--recursive] [<path>...]"
 msgstr "git submodule status [--quiet] [--cached] [--recursive] [<路徑>...]"
@@ -21658,8 +22054,8 @@ msgid "failed to update remote for submodule '%s'"
 msgstr "無法為子模組 '%s' 更新遠端關聯"
 
 #: builtin/submodule--helper.c:1485
-msgid "Suppress output of synchronizing submodule url"
-msgstr "é\98»æ­¢å­\90模çµ\84 url 同步的輸出"
+msgid "suppress output of synchronizing submodule url"
+msgstr "é\9a±è\97\8få­\90模çµ\84 URL 同步的輸出"
 
 #: builtin/submodule--helper.c:1492
 msgid "git submodule--helper sync [--quiet] [--recursive] [<path>]"
@@ -21702,12 +22098,12 @@ msgid "Submodule '%s' (%s) unregistered for path '%s'\n"
 msgstr "子模組 '%s'(%s)未對路徑 '%s' 註冊\n"
 
 #: builtin/submodule--helper.c:1624
-msgid "Remove submodule working trees even if they contain local changes"
-msgstr "å\88ªé\99¤å­\90模çµ\84å·¥ä½\9cå\8d\80ï¼\8cå\8d³ä½¿å\8c\85å\90«æ\9c¬æ©\9fä¿®æ\94¹"
+msgid "remove submodule working trees even if they contain local changes"
+msgstr "å\8d³ä½¿æ\9c\89æ\9c¬æ©\9fè®\8aæ\9b´ä»\8d移é\99¤å­\90模çµ\84ç\9a\84å·¥ä½\9cå\8d\80"
 
 #: builtin/submodule--helper.c:1625
-msgid "Unregister all submodules"
-msgstr "å°\87æ\89\80æ\9c\89å­\90模çµ\84å\8f\96æ¶\88註å\86\8a"
+msgid "unregister all submodules"
+msgstr "å\8f\96æ¶\88註å\86\8aæ\89\80æ\9c\89å­\90模çµ\84"
 
 #: builtin/submodule--helper.c:1630
 msgid ""
@@ -21852,7 +22248,10 @@ msgid "rebase, merge, checkout or none"
 msgstr "rebase、merge、checkout 或 none"
 
 #: builtin/submodule--helper.c:2340
-msgid "Create a shallow clone truncated to the specified number of revisions"
+#, fuzzy
+#| msgid ""
+#| "Create a shallow clone truncated to the specified number of revisions"
+msgid "create a shallow clone truncated to the specified number of revisions"
 msgstr "建立一個指定深度的淺複製"
 
 #: builtin/submodule--helper.c:2343
@@ -21921,8 +22320,8 @@ msgid "please make sure that the .gitmodules file is in the working tree"
 msgstr "請確認 .gitmodules 檔案在工作區裡"
 
 #: builtin/submodule--helper.c:2681
-msgid "Suppress output for setting url of a submodule"
-msgstr "é\98»æ­¢子模組設定 URL 的輸出"
+msgid "suppress output for setting url of a submodule"
+msgstr "é\9a±è\97\8f子模組設定 URL 的輸出"
 
 #: builtin/submodule--helper.c:2685
 msgid "git submodule--helper set-url [--quiet] <path> <newurl>"
@@ -21954,7 +22353,7 @@ msgstr "需要 --branch 或 --default"
 msgid "--branch and --default are mutually exclusive"
 msgstr "--branch 與 --default 互斥"
 
-#: builtin/submodule--helper.c:2792 git.c:438 git.c:711
+#: builtin/submodule--helper.c:2792 git.c:441 git.c:714
 #, c-format
 msgid "%s doesn't support --super-prefix"
 msgstr "%s 不支援 --super-prefix"
@@ -22024,12 +22423,12 @@ msgstr "git tag -v [--format=<格式>] <標籤名>..."
 msgid "tag '%s' not found."
 msgstr "未發現標籤 '%s'。"
 
-#: builtin/tag.c:105
+#: builtin/tag.c:124
 #, c-format
 msgid "Deleted tag '%s' (was %s)\n"
 msgstr "已刪除標籤 '%s'(曾為 %s)\n"
 
-#: builtin/tag.c:135
+#: builtin/tag.c:159
 #, c-format
 msgid ""
 "\n"
@@ -22042,7 +22441,7 @@ msgstr ""
 "  %s\n"
 "以 '%c' 開頭的行將被忽略。\n"
 
-#: builtin/tag.c:139
+#: builtin/tag.c:163
 #, c-format
 msgid ""
 "\n"
@@ -22056,15 +22455,11 @@ msgstr ""
 "  %s\n"
 "以 '%c' 開頭的行將被保留,如果您願意也可以刪除它們。\n"
 
-#: builtin/tag.c:198
+#: builtin/tag.c:230
 msgid "unable to sign the tag"
 msgstr "無法簽署標籤"
 
-#: builtin/tag.c:200
-msgid "unable to write tag file"
-msgstr "無法寫標籤檔案"
-
-#: builtin/tag.c:216
+#: builtin/tag.c:248
 #, c-format
 msgid ""
 "You have created a nested tag. The object referred to by your new tag is\n"
@@ -22077,138 +22472,134 @@ msgstr ""
 "\n"
 "\tgit tag -f %s %s^{}"
 
-#: builtin/tag.c:232
+#: builtin/tag.c:264
 msgid "bad object type."
 msgstr "壞的物件類型。"
 
-#: builtin/tag.c:285
+#: builtin/tag.c:317
 msgid "no tag message?"
 msgstr "無標籤說明?"
 
-#: builtin/tag.c:292
+#: builtin/tag.c:324
 #, c-format
 msgid "The tag message has been left in %s\n"
 msgstr "標籤說明被保留在 %s\n"
 
-#: builtin/tag.c:403
+#: builtin/tag.c:435
 msgid "list tag names"
 msgstr "列出標籤名稱"
 
-#: builtin/tag.c:405
+#: builtin/tag.c:437
 msgid "print <n> lines of each tag message"
 msgstr "每個標籤訊息列印 <n> 行"
 
-#: builtin/tag.c:407
+#: builtin/tag.c:439
 msgid "delete tags"
 msgstr "刪除標籤"
 
-#: builtin/tag.c:408
+#: builtin/tag.c:440
 msgid "verify tags"
 msgstr "驗證標籤"
 
-#: builtin/tag.c:410
+#: builtin/tag.c:442
 msgid "Tag creation options"
 msgstr "標籤建立選項"
 
-#: builtin/tag.c:412
+#: builtin/tag.c:444
 msgid "annotated tag, needs a message"
 msgstr "附註標籤,需要一個說明"
 
-#: builtin/tag.c:414
+#: builtin/tag.c:446
 msgid "tag message"
 msgstr "標籤說明"
 
-#: builtin/tag.c:416
+#: builtin/tag.c:448
 msgid "force edit of tag message"
 msgstr "強制編輯標籤說明"
 
-#: builtin/tag.c:417
+#: builtin/tag.c:449
 msgid "annotated and GPG-signed tag"
 msgstr "附註並附加 GPG 簽名的標籤"
 
-#: builtin/tag.c:420
+#: builtin/tag.c:452
 msgid "use another key to sign the tag"
 msgstr "使用另外的私鑰簽名該標籤"
 
-#: builtin/tag.c:421
+#: builtin/tag.c:453
 msgid "replace the tag if exists"
 msgstr "如果存在,取代現有的標籤"
 
-#: builtin/tag.c:422 builtin/update-ref.c:505
+#: builtin/tag.c:454 builtin/update-ref.c:505
 msgid "create a reflog"
 msgstr "建立引用日誌"
 
-#: builtin/tag.c:424
+#: builtin/tag.c:456
 msgid "Tag listing options"
 msgstr "標籤列表選項"
 
-#: builtin/tag.c:425
+#: builtin/tag.c:457
 msgid "show tag list in columns"
 msgstr "以列的方式顯示標籤列表"
 
-#: builtin/tag.c:426 builtin/tag.c:428
+#: builtin/tag.c:458 builtin/tag.c:460
 msgid "print only tags that contain the commit"
 msgstr "只列印包含該提交的標籤"
 
-#: builtin/tag.c:427 builtin/tag.c:429
+#: builtin/tag.c:459 builtin/tag.c:461
 msgid "print only tags that don't contain the commit"
 msgstr "只列印不包含該提交的標籤"
 
-#: builtin/tag.c:430
+#: builtin/tag.c:462
 msgid "print only tags that are merged"
 msgstr "只列印已經合併的標籤"
 
-#: builtin/tag.c:431
+#: builtin/tag.c:463
 msgid "print only tags that are not merged"
 msgstr "只列印尚未合併的標籤"
 
-#: builtin/tag.c:435
+#: builtin/tag.c:467
 msgid "print only tags of the object"
 msgstr "只列印指向該物件的標籤"
 
-#: builtin/tag.c:483
+#: builtin/tag.c:515
 msgid "--column and -n are incompatible"
 msgstr "--column 和 -n 不相容"
 
-#: builtin/tag.c:505
+#: builtin/tag.c:537
 msgid "-n option is only allowed in list mode"
 msgstr "-n 選項只允許用在列表顯示模式"
 
-#: builtin/tag.c:507
+#: builtin/tag.c:539
 msgid "--contains option is only allowed in list mode"
 msgstr "--contains 選項只允許用在列表顯示模式"
 
-#: builtin/tag.c:509
+#: builtin/tag.c:541
 msgid "--no-contains option is only allowed in list mode"
 msgstr "--no-contains 選項只允許用在列表顯示模式"
 
-#: builtin/tag.c:511
+#: builtin/tag.c:543
 msgid "--points-at option is only allowed in list mode"
 msgstr "--points-at 選項只允許用在列表顯示模式"
 
-#: builtin/tag.c:513
+#: builtin/tag.c:545
 msgid "--merged and --no-merged options are only allowed in list mode"
 msgstr "--merged 和 --no-merged 選項只允許用在列表顯示模式"
 
-#: builtin/tag.c:524
+#: builtin/tag.c:556
 msgid "only one -F or -m option is allowed."
 msgstr "只允許一個 -F 或 -m 選項。"
 
-#: builtin/tag.c:543
-msgid "too many params"
-msgstr "太多參數"
-
-#: builtin/tag.c:549
+#: builtin/tag.c:581
 #, c-format
 msgid "'%s' is not a valid tag name."
 msgstr "'%s' 不是一個有效的標籤名稱。"
 
-#: builtin/tag.c:554
+#: builtin/tag.c:586
 #, c-format
 msgid "tag '%s' already exists"
 msgstr "標籤 '%s' 已存在"
 
-#: builtin/tag.c:585
+#: builtin/tag.c:617
 #, c-format
 msgid "Updated tag '%s' (was %s)\n"
 msgstr "已更新標籤 '%s'(曾為 %s)\n"
@@ -22552,89 +22943,63 @@ msgstr "git verify-tag [-v | --verbose] [--format=<格式>] <標籤>..."
 msgid "print tag contents"
 msgstr "列印標籤內容"
 
-#: builtin/worktree.c:17
+#: builtin/worktree.c:18
 msgid "git worktree add [<options>] <path> [<commit-ish>]"
 msgstr "git worktree add [<選項>] <路徑> [<提交>]"
 
-#: builtin/worktree.c:18
+#: builtin/worktree.c:19
 msgid "git worktree list [<options>]"
 msgstr "git worktree list [<選項>]"
 
-#: builtin/worktree.c:19
+#: builtin/worktree.c:20
 msgid "git worktree lock [<options>] <path>"
 msgstr "git worktree lock [<選項>] <路徑>"
 
-#: builtin/worktree.c:20
+#: builtin/worktree.c:21
 msgid "git worktree move <worktree> <new-path>"
 msgstr "git worktree move <工作區> <新路徑>"
 
-#: builtin/worktree.c:21
+#: builtin/worktree.c:22
 msgid "git worktree prune [<options>]"
 msgstr "git worktree prune [<選項>]"
 
-#: builtin/worktree.c:22
+#: builtin/worktree.c:23
 msgid "git worktree remove [<options>] <worktree>"
 msgstr "git worktree remove [<選項>] <工作區>"
 
-#: builtin/worktree.c:23
+#: builtin/worktree.c:24
 msgid "git worktree unlock <path>"
 msgstr "git worktree unlock <路徑>"
 
-#: builtin/worktree.c:60 builtin/worktree.c:973
+#: builtin/worktree.c:61 builtin/worktree.c:933
 #, c-format
 msgid "failed to delete '%s'"
 msgstr "刪除 '%s' 失敗"
 
-#: builtin/worktree.c:85
-msgid "not a valid directory"
-msgstr "非有效目錄"
-
-#: builtin/worktree.c:91
-msgid "gitdir file does not exist"
-msgstr "找不到 gitdir 檔案"
-
-#: builtin/worktree.c:96 builtin/worktree.c:105
-#, c-format
-msgid "unable to read gitdir file (%s)"
-msgstr "無法讀取 gitdir 檔案 (%s)"
-
-#: builtin/worktree.c:115
-#, c-format
-msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
-msgstr "讀取過短(預期有 %<PRIuMAX> 位元組,只讀到 %<PRIuMAX>)"
-
-#: builtin/worktree.c:123
-msgid "invalid gitdir file"
-msgstr "gitdir 檔案無效"
-
-#: builtin/worktree.c:131
-msgid "gitdir file points to non-existent location"
-msgstr "gitdir 檔案指向的位置不存在"
-
-#: builtin/worktree.c:146
+#: builtin/worktree.c:74
 #, c-format
 msgid "Removing %s/%s: %s"
 msgstr "移除 %s/%s: %s"
 
-#: builtin/worktree.c:221
+#: builtin/worktree.c:149
 msgid "report pruned working trees"
 msgstr "報告清除的工作區"
 
-#: builtin/worktree.c:223
+#: builtin/worktree.c:151
 msgid "expire working trees older than <time>"
 msgstr "將早於 <時間> 的工作區過期"
 
-#: builtin/worktree.c:293
+#: builtin/worktree.c:221
 #, c-format
 msgid "'%s' already exists"
 msgstr "'%s' 已經存在"
 
-#: builtin/worktree.c:302
+#: builtin/worktree.c:230
 #, c-format
 msgid "unusable worktree destination '%s'"
 msgstr "無法使用的工作目錄目的地「%s」"
 
-#: builtin/worktree.c:307
+#: builtin/worktree.c:235
 #, c-format
 msgid ""
 "'%s' is a missing but locked worktree;\n"
@@ -22643,7 +23008,7 @@ msgstr ""
 "'%s' 是個遺失但被鎖定的工作區;\n"
 "使用 '%s -f -f' 覆蓋,或 'unlock' 和 'prune' 或 'remove' 清除"
 
-#: builtin/worktree.c:309
+#: builtin/worktree.c:237
 #, c-format
 msgid ""
 "'%s' is a missing but already registered worktree;\n"
@@ -22652,115 +23017,129 @@ msgstr ""
 "'%s' 是個遺失但已註冊的工作區;\n"
 "使用 '%s -f' 覆蓋,或 'prune' 或 'remove' 清除"
 
-#: builtin/worktree.c:360
+#: builtin/worktree.c:288
 #, c-format
 msgid "could not create directory of '%s'"
 msgstr "不能建立目錄 '%s'"
 
-#: builtin/worktree.c:494 builtin/worktree.c:500
+#: builtin/worktree.c:422 builtin/worktree.c:428
 #, c-format
 msgid "Preparing worktree (new branch '%s')"
 msgstr "準備工作區(新分支 '%s')"
 
-#: builtin/worktree.c:496
+#: builtin/worktree.c:424
 #, c-format
 msgid "Preparing worktree (resetting branch '%s'; was at %s)"
 msgstr "準備工作區(重設分支 '%s',之前為 %s)"
 
-#: builtin/worktree.c:505
+#: builtin/worktree.c:433
 #, c-format
 msgid "Preparing worktree (checking out '%s')"
 msgstr "準備工作區(檢出 '%s')"
 
-#: builtin/worktree.c:511
+#: builtin/worktree.c:439
 #, c-format
 msgid "Preparing worktree (detached HEAD %s)"
 msgstr "準備工作區(分離開頭指標 %s)"
 
-#: builtin/worktree.c:552
+#: builtin/worktree.c:480
 msgid "checkout <branch> even if already checked out in other worktree"
 msgstr "檢出 <分支>,即使已經被檢出到其它工作區"
 
-#: builtin/worktree.c:555
+#: builtin/worktree.c:483
 msgid "create a new branch"
 msgstr "建立一個新分支"
 
-#: builtin/worktree.c:557
+#: builtin/worktree.c:485
 msgid "create or reset a branch"
 msgstr "建立或重設一個分支"
 
-#: builtin/worktree.c:559
+#: builtin/worktree.c:487
 msgid "populate the new working tree"
 msgstr "生成新的工作區"
 
-#: builtin/worktree.c:560
+#: builtin/worktree.c:488
 msgid "keep the new working tree locked"
 msgstr "鎖定新工作區"
 
-#: builtin/worktree.c:563
+#: builtin/worktree.c:491
 msgid "set up tracking mode (see git-branch(1))"
 msgstr "設定追蹤模式(參見 git-branch(1))"
 
-#: builtin/worktree.c:566
+#: builtin/worktree.c:494
 msgid "try to match the new branch name with a remote-tracking branch"
 msgstr "嘗試為新分支名符合一個遠端追蹤分支"
 
-#: builtin/worktree.c:574
+#: builtin/worktree.c:502
 msgid "-b, -B, and --detach are mutually exclusive"
 msgstr "-b、-B 和 --detach 是互斥的"
 
-#: builtin/worktree.c:635
+#: builtin/worktree.c:563
 msgid "--[no-]track can only be used if a new branch is created"
 msgstr "只能在建立新分支時使用 --[no-]track 選項"
 
-#: builtin/worktree.c:758
+#: builtin/worktree.c:680
+msgid "show extended annotations and reasons, if available"
+msgstr "如果有則顯示延伸的註釋和原因"
+
+#: builtin/worktree.c:682
+#, fuzzy
+#| msgid "expire working trees older than <time>"
+msgid "add 'prunable' annotation to worktrees older than <time>"
+msgstr "將早於 <時間> 的工作區過期"
+
+#: builtin/worktree.c:691
+msgid "--verbose and --porcelain are mutually exclusive"
+msgstr "--verbose 和 --porcelain 互斥"
+
+#: builtin/worktree.c:718
 msgid "reason for locking"
 msgstr "鎖定原因"
 
-#: builtin/worktree.c:770 builtin/worktree.c:803 builtin/worktree.c:877
-#: builtin/worktree.c:1001
+#: builtin/worktree.c:730 builtin/worktree.c:763 builtin/worktree.c:837
+#: builtin/worktree.c:961
 #, c-format
 msgid "'%s' is not a working tree"
 msgstr "'%s' 不是一個工作區"
 
-#: builtin/worktree.c:772 builtin/worktree.c:805
+#: builtin/worktree.c:732 builtin/worktree.c:765
 msgid "The main working tree cannot be locked or unlocked"
 msgstr "主工作區無法被加鎖或解鎖"
 
-#: builtin/worktree.c:777
+#: builtin/worktree.c:737
 #, c-format
 msgid "'%s' is already locked, reason: %s"
 msgstr "'%s' 已被鎖定,原因:%s"
 
-#: builtin/worktree.c:779
+#: builtin/worktree.c:739
 #, c-format
 msgid "'%s' is already locked"
 msgstr "'%s' 已被鎖定"
 
-#: builtin/worktree.c:807
+#: builtin/worktree.c:767
 #, c-format
 msgid "'%s' is not locked"
 msgstr "'%s' 未被鎖定"
 
-#: builtin/worktree.c:848
+#: builtin/worktree.c:808
 msgid "working trees containing submodules cannot be moved or removed"
 msgstr "不能移動或刪除包含子模組的工作區"
 
-#: builtin/worktree.c:856
+#: builtin/worktree.c:816
 msgid "force move even if worktree is dirty or locked"
 msgstr "強制移動,即使工作區是髒的或已鎖定"
 
-#: builtin/worktree.c:879 builtin/worktree.c:1003
+#: builtin/worktree.c:839 builtin/worktree.c:963
 #, c-format
 msgid "'%s' is a main working tree"
 msgstr "'%s' 是一個主工作區"
 
-#: builtin/worktree.c:884
+#: builtin/worktree.c:844
 #, c-format
 msgid "could not figure out destination name from '%s'"
 msgstr "無法從 '%s' 算出目標名稱"
 
-#: builtin/worktree.c:897
+#: builtin/worktree.c:857
 #, c-format
 msgid ""
 "cannot move a locked working tree, lock reason: %s\n"
@@ -22769,7 +23148,7 @@ msgstr ""
 "無法移動一個鎖定的工作區,鎖定原因:%s\n"
 "使用 'move -f -f' 覆蓋或先解鎖"
 
-#: builtin/worktree.c:899
+#: builtin/worktree.c:859
 msgid ""
 "cannot move a locked working tree;\n"
 "use 'move -f -f' to override or unlock first"
@@ -22777,36 +23156,36 @@ msgstr ""
 "無法移動一個鎖定的工作區,\n"
 "使用 'move -f -f' 覆蓋或先解鎖"
 
-#: builtin/worktree.c:902
+#: builtin/worktree.c:862
 #, c-format
 msgid "validation failed, cannot move working tree: %s"
 msgstr "驗證失敗,無法移動工作區:%s"
 
-#: builtin/worktree.c:907
+#: builtin/worktree.c:867
 #, c-format
 msgid "failed to move '%s' to '%s'"
 msgstr "移動 '%s' 到 '%s' 失敗"
 
-#: builtin/worktree.c:953
+#: builtin/worktree.c:913
 #, c-format
 msgid "failed to run 'git status' on '%s'"
 msgstr "在 '%s' 中執行 'git status' 失敗"
 
-#: builtin/worktree.c:957
+#: builtin/worktree.c:917
 #, c-format
 msgid "'%s' contains modified or untracked files, use --force to delete it"
 msgstr "'%s' 包含修改或未追蹤的檔案,使用 --force 刪除"
 
-#: builtin/worktree.c:962
+#: builtin/worktree.c:922
 #, c-format
 msgid "failed to run 'git status' on '%s', code %d"
 msgstr "在 '%s' 中執行 'git status' 失敗,離開碼 %d"
 
-#: builtin/worktree.c:985
+#: builtin/worktree.c:945
 msgid "force removal even if worktree is dirty or locked"
 msgstr "強制刪除,即使工作區是髒的或已鎖定"
 
-#: builtin/worktree.c:1008
+#: builtin/worktree.c:968
 #, c-format
 msgid ""
 "cannot remove a locked working tree, lock reason: %s\n"
@@ -22815,7 +23194,7 @@ msgstr ""
 "無法刪除一個鎖定的工作區,鎖定原因:%s\n"
 "使用 'remove -f -f' 覆蓋或先解鎖"
 
-#: builtin/worktree.c:1010
+#: builtin/worktree.c:970
 msgid ""
 "cannot remove a locked working tree;\n"
 "use 'remove -f -f' to override or unlock first"
@@ -22823,17 +23202,17 @@ msgstr ""
 "無法刪除一個鎖定的工作區,\n"
 "使用 'remove -f -f' 覆蓋或先解鎖"
 
-#: builtin/worktree.c:1013
+#: builtin/worktree.c:973
 #, c-format
 msgid "validation failed, cannot remove working tree: %s"
 msgstr "驗證失敗,無法刪除工作區:%s"
 
-#: builtin/worktree.c:1037
+#: builtin/worktree.c:997
 #, c-format
 msgid "repair: %s: %s"
 msgstr "修復:%s:%s"
 
-#: builtin/worktree.c:1040
+#: builtin/worktree.c:1000
 #, c-format
 msgid "error: %s: %s"
 msgstr "錯誤:%s:%s"
@@ -22854,15 +23233,24 @@ msgstr "將 <前綴> 子目錄內容寫到一個樹狀物件"
 msgid "only useful for debugging"
 msgstr "只對除錯有用"
 
-#: http-fetch.c:114
+#: http-fetch.c:118
 #, c-format
 msgid "argument to --packfile must be a valid hash (got '%s')"
 msgstr "傳入 --packfile 的參數必須是有效的雜湊 (收到 '%s')"
 
-#: http-fetch.c:122
+#: http-fetch.c:128
 msgid "not a git repository"
 msgstr "不是一個 git 版本庫"
 
+#: http-fetch.c:134
+msgid "--packfile requires --index-pack-args"
+msgstr "--packfile 需要 --index-pack-args"
+
+#: http-fetch.c:143
+#| msgid "-N can only be used with --mixed"
+msgid "--index-pack-args can only be used with --packfile"
+msgstr "--index-pack-args 只能與 --packfile 一起使用"
+
 #: t/helper/test-fast-rebase.c:141
 msgid "unhandled options"
 msgstr "未處理選項"
@@ -22889,22 +23277,32 @@ msgid "exit immediately after advertising capabilities"
 msgstr "對能力廣告之後立即離開"
 
 #: git.c:28
+#| msgid ""
+#| "git [--version] [--help] [-C <path>] [-c <name>=<value>]\n"
+#| "           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-"
+#| "path]\n"
+#| "           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--"
+#| "bare]\n"
+#| "           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]\n"
+#| "           <command> [<args>]"
 msgid ""
 "git [--version] [--help] [-C <path>] [-c <name>=<value>]\n"
 "           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]\n"
 "           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--"
 "bare]\n"
 "           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]\n"
+"           [--super-prefix=<path>] [--config-env=<name>=<envvar>]\n"
 "           <command> [<args>]"
 msgstr ""
-"git [--version] [--help] [-C <路徑>] [-c <名稱>=<值>]\n"
+"git [--version] [--help] [-C <路徑>] [-c <名稱>=<值>]\n"
 "           [--exec-path[=<路徑>]] [--html-path] [--man-path] [--info-path]\n"
 "           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--"
 "bare]\n"
 "           [--git-dir=<路徑>] [--work-tree=<路徑>] [--namespace=<名稱>]\n"
-"           <指令> [<參數>]"
+"           [--super-prefix=<路徑>] [--config-env=<名稱>=<環境變數>]\n"
+"           <命令> [<引數>]"
 
-#: git.c:35
+#: git.c:36
 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"
@@ -22912,51 +23310,51 @@ msgid ""
 "See 'git help git' for an overview of the system."
 msgstr ""
 "指令 'git help -a' 和 'git help -g' 顯示可用的子指令和一些概念說明。\n"
-"檢視 'git help <令>' 或 'git help <概念>' 以取得提供子指令或概念\n"
+"檢視 'git help <令>' 或 'git help <概念>' 以取得提供子指令或概念\n"
 "說明。\n"
 "有關系統概述,檢視 'git help git'。"
 
-#: git.c:187
+#: git.c:188
 #, c-format
 msgid "no directory given for --git-dir\n"
 msgstr "沒有為 --git-dir 提供目錄\n"
 
-#: git.c:201
+#: git.c:202
 #, c-format
 msgid "no namespace given for --namespace\n"
 msgstr "沒有為 --namespace 提供命名空間\n"
 
-#: git.c:215
+#: git.c:216
 #, c-format
 msgid "no directory given for --work-tree\n"
 msgstr "沒有為 --work-tree 提供目錄\n"
 
-#: git.c:229
+#: git.c:230
 #, c-format
 msgid "no prefix given for --super-prefix\n"
 msgstr "沒有為 --super-prefix 提供前綴\n"
 
-#: git.c:251
+#: git.c:252
 #, c-format
 msgid "-c expects a configuration string\n"
 msgstr "應為 -c 提供一個設定字串\n"
 
-#: git.c:289
+#: git.c:292
 #, c-format
 msgid "no directory given for -C\n"
 msgstr "沒有為 -C 提供目錄\n"
 
-#: git.c:315
+#: git.c:318
 #, c-format
 msgid "unknown option: %s\n"
 msgstr "未知選項:%s\n"
 
-#: git.c:364
+#: git.c:367
 #, c-format
 msgid "while expanding alias '%s': '%s'"
 msgstr "在擴展別名 '%s' 時:'%s'"
 
-#: git.c:373
+#: git.c:376
 #, c-format
 msgid ""
 "alias '%s' changes environment variables.\n"
@@ -22965,39 +23363,39 @@ msgstr ""
 "別名 '%s' 修改環境變數。您可以使用在別名中\n"
 "使用 '!git'"
 
-#: git.c:380
+#: git.c:383
 #, c-format
 msgid "empty alias for %s"
 msgstr "%s 的空別名"
 
-#: git.c:383
+#: git.c:386
 #, c-format
 msgid "recursive alias: %s"
 msgstr "遞迴的別名:%s"
 
-#: git.c:465
+#: git.c:468
 msgid "write failure on standard output"
 msgstr "在標準輸出寫入失敗"
 
-#: git.c:467
+#: git.c:470
 msgid "unknown write failure on standard output"
 msgstr "到標準輸出的未知寫入錯誤"
 
-#: git.c:469
+#: git.c:472
 msgid "close failed on standard output"
 msgstr "標準輸出關閉失敗"
 
-#: git.c:820
+#: git.c:823
 #, c-format
 msgid "alias loop detected: expansion of '%s' does not terminate:%s"
 msgstr "檢測到別名循環:'%s'的擴展未終止:%s"
 
-#: git.c:870
+#: git.c:873
 #, c-format
 msgid "cannot handle %s as a builtin"
 msgstr "不能作為內建指令處理 %s"
 
-#: git.c:883
+#: git.c:886
 #, c-format
 msgid ""
 "usage: %s\n"
@@ -23006,12 +23404,12 @@ msgstr ""
 "用法:%s\n"
 "\n"
 
-#: git.c:903
+#: git.c:906
 #, c-format
 msgid "expansion of alias '%s' failed; '%s' is not a git command\n"
 msgstr "展開別名指令 '%s' 失敗,'%s' 不是一個 git 指令\n"
 
-#: git.c:915
+#: git.c:918
 #, c-format
 msgid "failed to run command '%s': %s\n"
 msgstr "執行指令 '%s' 失敗:%s\n"
@@ -23244,11 +23642,11 @@ msgid ""
 "with --pathspec-from-file, pathspec elements are separated with NUL character"
 msgstr "如使用 --pathspec-from-file,則 <路徑規格> 元件會使用 NUL 字元分隔"
 
-#: ref-filter.h:96
+#: ref-filter.h:99
 msgid "key"
 msgstr "key"
 
-#: ref-filter.h:96
+#: ref-filter.h:99
 msgid "field name to sort on"
 msgstr "排序的欄位名"
 
@@ -23256,14 +23654,6 @@ msgstr "排序的欄位名"
 msgid "update the index with reused conflict resolution if possible"
 msgstr "如果可能,重用衝突解決更新索引"
 
-#: wt-status.h:80
-msgid "HEAD detached at "
-msgstr "開頭指標分離於 "
-
-#: wt-status.h:81
-msgid "HEAD detached from "
-msgstr "開頭指標分離自 "
-
 #: command-list.h:50
 msgid "Add file contents to the index"
 msgstr "新增檔案內容至索引"
@@ -23290,7 +23680,7 @@ msgstr "基於命名過的樹建立檔案封存"
 
 #: command-list.h:56
 msgid "Use binary search to find the commit that introduced a bug"
-msgstr "透過二分尋找定位引入 bug 的提交"
+msgstr "透過二分搜尋定位引入 bug 的提交"
 
 #: command-list.h:57
 msgid "Show what revision and author last modified each line of a file"
@@ -23593,8 +23983,8 @@ msgid "Write and verify multi-pack-indexes"
 msgstr "寫入和驗證多包索引"
 
 #: command-list.h:132
-msgid "Creates a tag object"
-msgstr "建立一個標籤物件"
+msgid "Creates a tag object with extra validation"
+msgstr "建立有額外驗證的標籤物件"
 
 #: command-list.h:133
 msgid "Build a tree-object from ls-tree formatted text"
@@ -23799,7 +24189,7 @@ msgstr "建立、列出、刪除或驗證一個 GPG 簽名的標籤物件"
 
 #: command-list.h:183
 msgid "Creates a temporary file with a blob's contents"
-msgstr "用 blob è³\87æ\96\99ç\89©ä»¶ç\9a\84å\85§å®¹å»ºç«\8bä¸\80å\80\8bæ\9a«å­\98æª\94"
+msgstr "用è³\87æ\96\99ç\89©ä»¶ç\9a\84å\85§å®¹å»ºç«\8bæ\9a«å­\98æª\94"
 
 #: command-list.h:184
 msgid "Unpack objects from a packed archive"
@@ -23902,97 +24292,79 @@ msgid "Specifies intentionally untracked files to ignore"
 msgstr "忽略指定的未追蹤檔案"
 
 #: command-list.h:209
+msgid "Map author/committer names and/or E-Mail addresses"
+msgstr "映射作者或提交者的名稱和(或)電子信箱地址"
+
+#: command-list.h:210
 msgid "Defining submodule properties"
 msgstr "定義子模組屬性"
 
-#: command-list.h:210
+#: command-list.h:211
 msgid "Git namespaces"
 msgstr "Git 名字空間"
 
-#: command-list.h:211
+#: command-list.h:212
 msgid "Helper programs to interact with remote repositories"
 msgstr "用來與遠端版本庫互動的協助工具"
 
-#: command-list.h:212
+#: command-list.h:213
 msgid "Git Repository Layout"
 msgstr "Git 版本庫配置"
 
-#: command-list.h:213
+#: command-list.h:214
 msgid "Specifying revisions and ranges for Git"
 msgstr "指定 Git 的版本和版本範圍"
 
-#: command-list.h:214
+#: command-list.h:215
 msgid "Mounting one repository inside another"
 msgstr "在某個版本庫掛載某個版本庫"
 
-#: command-list.h:215
+#: command-list.h:216
 msgid "A tutorial introduction to Git: part two"
 msgstr "一個 Git 教學:第二部分"
 
-#: command-list.h:216
+#: command-list.h:217
 msgid "A tutorial introduction to Git"
 msgstr "一個 Git 教學"
 
-#: command-list.h:217
+#: command-list.h:218
 msgid "An overview of recommended workflows with Git"
 msgstr "Git 推薦的工作流概覽"
 
-#: git-bisect.sh:48
-#, sh-format
-msgid "Bad rev input: $arg"
-msgstr "壞的輸入版本:$arg"
-
-#: git-bisect.sh:82
-msgid "No logfile given"
-msgstr "未提供日誌檔案"
-
-#: git-bisect.sh:83
-#, sh-format
-msgid "cannot read $file for replaying"
-msgstr "不能讀取 $file 來重放"
-
-#: git-bisect.sh:105
-msgid "?? what are you talking about?"
-msgstr "?? 您在說什麼?"
-
-#: git-bisect.sh:115
+#: git-bisect.sh:68
 msgid "bisect run failed: no command provided."
-msgstr "二分尋找執行失敗:沒有提供指令。"
+msgstr "二分搜尋執行失敗:沒有提供指令。"
 
-#: git-bisect.sh:120
+#: git-bisect.sh:73
 #, sh-format
 msgid "running $command"
 msgstr "執行 $command"
 
-#: git-bisect.sh:127
+#: git-bisect.sh:80
 #, sh-format
 msgid ""
 "bisect run failed:\n"
 "exit code $res from '$command' is < 0 or >= 128"
 msgstr ""
-"二分尋找執行失敗:\n"
+"二分搜尋執行失敗:\n"
 "指令 '$command' 的離開碼 $res 小於 0 或大於等於 128"
 
-#: git-bisect.sh:152
+#: git-bisect.sh:105
 msgid "bisect run cannot continue any more"
-msgstr "二分尋找不能繼續執行"
+msgstr "二分搜尋不能繼續執行"
 
-#: git-bisect.sh:158
+#: git-bisect.sh:111
 #, sh-format
 msgid ""
 "bisect run failed:\n"
 "'bisect-state $state' exited with error code $res"
 msgstr ""
-"二分尋找執行失敗:\n"
+"二分搜尋執行失敗:\n"
 "‘bisect-state $state’ 結束,錯誤碼 $res"
 
-#: git-bisect.sh:165
+#: git-bisect.sh:118
 msgid "bisect run success"
-msgstr "二分尋找執行成功"
-
-#: git-bisect.sh:173
-msgid "We are not bisecting."
-msgstr "我們沒有在二分尋找。"
+msgstr "二分搜尋執行成功"
 
 #: git-merge-octopus.sh:46
 msgid ""
@@ -24234,7 +24606,7 @@ msgstr ""
 "e, edit <提交> = 使用提交,但停下來修補\n"
 "s, squash <提交> = 使用提交,但融合到前一個提交\n"
 "f, fixup <提交> = 類似於 \"squash\",但捨棄提交說明日誌\n"
-"x, exec <令> = 使用 shell 執行指令(此行剩餘部分)\n"
+"x, exec <令> = 使用 shell 執行指令(此行剩餘部分)\n"
 "d, drop <提交> = 刪除提交\n"
 "l, label <標籤> = 為目前 HEAD 打上標籤\n"
 "t, reset <標籤> = 重設 HEAD 到該標籤\n"
@@ -25234,3 +25606,94 @@ msgstr "略過 %s 含備份後綴 '%s'。\n"
 #, perl-format
 msgid "Do you really want to send %s? [y|N]: "
 msgstr "您真的要傳送 %s?[y|N]:"
+
+#~ msgid "repository contains replace objects; skipping commit-graph"
+#~ msgstr "版本庫有取代物件;跳過提交圖形"
+
+#~ msgid "repository contains (deprecated) grafts; skipping commit-graph"
+#~ msgstr "版本庫有(廢棄的)移植項目;跳過提交圖形"
+
+#~ msgid "repository is shallow; skipping commit-graph"
+#~ msgstr "版本庫是淺複製;忽略提交圖形"
+
+#, c-format
+#~ msgid "commit-graph improper chunk offset %08x%08x"
+#~ msgstr "提交圖形不正確的區塊位移 %08x%08x"
+
+#, c-format
+#~ msgid "commit-graph chunk id %08x appears multiple times"
+#~ msgstr "提交圖形區塊 id %08x 出現了多次"
+
+#~ msgid "invalid chunk offset (too large)"
+#~ msgstr "無效的區塊位移(太大)"
+
+#~ msgid "Writing chunks to multi-pack-index"
+#~ msgstr "寫入區塊至多包索引"
+
+#~ msgid "rev-list died"
+#~ msgstr "rev-list 終止"
+
+#~ msgid ""
+#~ "git bisect--helper --bisect-write [--no-log] <state> <revision> "
+#~ "<good_term> <bad_term>"
+#~ msgstr ""
+#~ "git bisect--helper --bisect-write [--no-log] <狀態> <版本> <好-術語> <壞-"
+#~ "術語>"
+
+#~ msgid ""
+#~ "git bisect--helper --bisect-check-and-set-terms <command> <good_term> "
+#~ "<bad_term>"
+#~ msgstr ""
+#~ "git bisect--helper --bisect-check-and-set-terms <指令> <好-術語> <壞-術語>"
+
+#~ msgid "git bisect--helper --bisect-auto-next"
+#~ msgstr "git bisect--helper --bisect-auto-next"
+
+#~ msgid "write out the bisection state in BISECT_LOG"
+#~ msgstr "將二分尋找的狀態寫入 BISECT_LOG"
+
+#~ msgid "check and set terms in a bisection state"
+#~ msgstr "在一個二分尋找狀態中檢查和設定術語"
+
+#~ msgid ""
+#~ "verify the next bisection state then checkout the next bisection commit"
+#~ msgstr "驗證下一個二分尋找狀態後,檢出下一個二分尋找提交"
+
+#~ msgid "--bisect-write requires either 4 or 5 arguments"
+#~ msgstr "--bisect-write 需要 4 或 5 個參數"
+
+#~ msgid "--check-and-set-terms requires 3 arguments"
+#~ msgstr "--check-and-set-terms 需要 3 個參數"
+
+#~ msgid "--bisect-auto-next requires 0 arguments"
+#~ msgstr "--bisect-auto-next 需要 0 個引數"
+
+#~ msgid "Force progress reporting"
+#~ msgstr "強制進度顯示"
+
+#, c-format
+#~ msgid "Error deleting remote-tracking branch '%s'"
+#~ msgstr "無法刪除遠端追蹤分支 '%s'"
+
+#, c-format
+#~ msgid "Error deleting branch '%s'"
+#~ msgstr "無法刪除分支 '%s'"
+
+#~ msgid "show parse tree for grep expression"
+#~ msgstr "顯示 grep 表達式的解析樹"
+
+#~ msgid "too many parameters"
+#~ msgstr "參數太多"
+
+#~ msgid "too few parameters"
+#~ msgstr "參數太少"
+
+#~ msgid "Recurse into nested submodules"
+#~ msgstr "遞迴進入嵌套子模組中"
+
+#~ msgid "too many params"
+#~ msgstr "太多參數"
+
+#, sh-format
+#~ msgid "Bad rev input: $arg"
+#~ msgstr "壞的輸入版本:$arg"
index ed6eaa47388af8d33398e7c9652c622030e75147..e5529a586366d4031a5300d7ab0dfa6ec97489b8 100644 (file)
@@ -31,6 +31,7 @@ struct thread_data {
        struct pathspec pathspec;
        struct progress_data *progress;
        int offset, nr;
+       int t2_nr_lstat;
 };
 
 static void *preload_thread(void *_data)
@@ -73,6 +74,7 @@ static void *preload_thread(void *_data)
                        continue;
                if (threaded_has_symlink_leading_path(&cache, ce->name, ce_namelen(ce)))
                        continue;
+               p->t2_nr_lstat++;
                if (lstat(ce->name, &st))
                        continue;
                if (ie_match_stat(index, ce, &st, CE_MATCH_RACY_IS_DIRTY|CE_MATCH_IGNORE_FSMONITOR))
@@ -98,6 +100,7 @@ void preload_index(struct index_state *index,
        int threads, i, work, offset;
        struct thread_data data[MAX_PARALLEL];
        struct progress_data pd;
+       int t2_sum_lstat = 0;
 
        if (!HAVE_THREADS || !core_preload_index)
                return;
@@ -107,6 +110,9 @@ void preload_index(struct index_state *index,
                threads = 2;
        if (threads < 2)
                return;
+
+       trace2_region_enter("index", "preload", NULL);
+
        trace_performance_enter();
        if (threads > MAX_PARALLEL)
                threads = MAX_PARALLEL;
@@ -141,10 +147,14 @@ void preload_index(struct index_state *index,
                struct thread_data *p = data+i;
                if (pthread_join(p->pthread, NULL))
                        die("unable to join threaded lstat");
+               t2_sum_lstat += p->t2_nr_lstat;
        }
        stop_progress(&pd.progress);
 
        trace_performance_leave("preload index");
+
+       trace2_data_intmax("index", NULL, "preload/sum_lstat", t2_sum_lstat);
+       trace2_region_leave("index", "preload", NULL);
 }
 
 int repo_read_index_preload(struct repository *repo,
index b4ff3f602f9b17068f74b79ad7611e806e0e6c01..e5b33ba034bd600b343ea146b0c38f992d1b462e 100644 (file)
--- a/pretty.c
+++ b/pretty.c
@@ -12,6 +12,7 @@
 #include "reflog-walk.h"
 #include "gpg-interface.h"
 #include "trailer.h"
+#include "run-command.h"
 
 static char *user_format;
 static struct cmt_fmt_map {
@@ -678,7 +679,7 @@ static int mailmap_name(const char **email, size_t *email_len,
 {
        static struct string_list *mail_map;
        if (!mail_map) {
-               mail_map = xcalloc(1, sizeof(*mail_map));
+               CALLOC_ARRAY(mail_map, 1);
                read_mailmap(mail_map);
        }
        return mail_map->nr && map_user(mail_map, email, email_len, name, name_len);
@@ -1149,6 +1150,91 @@ static int format_trailer_match_cb(const struct strbuf *key, void *ud)
        return 0;
 }
 
+int format_set_trailers_options(struct process_trailer_options *opts,
+                               struct string_list *filter_list,
+                               struct strbuf *sepbuf,
+                               struct strbuf *kvsepbuf,
+                               const char **arg,
+                               char **invalid_arg)
+{
+       for (;;) {
+               const char *argval;
+               size_t arglen;
+
+               if (**arg == ')')
+                       break;
+
+               if (match_placeholder_arg_value(*arg, "key", arg, &argval, &arglen)) {
+                       uintptr_t len = arglen;
+
+                       if (!argval)
+                               return -1;
+
+                       if (len && argval[len - 1] == ':')
+                               len--;
+                       string_list_append(filter_list, argval)->util = (char *)len;
+
+                       opts->filter = format_trailer_match_cb;
+                       opts->filter_data = filter_list;
+                       opts->only_trailers = 1;
+               } else if (match_placeholder_arg_value(*arg, "separator", arg, &argval, &arglen)) {
+                       char *fmt;
+
+                       strbuf_reset(sepbuf);
+                       fmt = xstrndup(argval, arglen);
+                       strbuf_expand(sepbuf, fmt, strbuf_expand_literal_cb, NULL);
+                       free(fmt);
+                       opts->separator = sepbuf;
+               } else if (match_placeholder_arg_value(*arg, "key_value_separator", arg, &argval, &arglen)) {
+                       char *fmt;
+
+                       strbuf_reset(kvsepbuf);
+                       fmt = xstrndup(argval, arglen);
+                       strbuf_expand(kvsepbuf, fmt, strbuf_expand_literal_cb, NULL);
+                       free(fmt);
+                       opts->key_value_separator = kvsepbuf;
+               } else if (!match_placeholder_bool_arg(*arg, "only", arg, &opts->only_trailers) &&
+                          !match_placeholder_bool_arg(*arg, "unfold", arg, &opts->unfold) &&
+                          !match_placeholder_bool_arg(*arg, "keyonly", arg, &opts->key_only) &&
+                          !match_placeholder_bool_arg(*arg, "valueonly", arg, &opts->value_only)) {
+                       if (invalid_arg) {
+                               size_t len = strcspn(*arg, ",)");
+                               *invalid_arg = xstrndup(*arg, len);
+                       }
+                       return -1;
+               }
+       }
+       return 0;
+}
+
+static size_t parse_describe_args(const char *start, struct strvec *args)
+{
+       const char *options[] = { "match", "exclude" };
+       const char *arg = start;
+
+       for (;;) {
+               const char *matched = NULL;
+               const char *argval;
+               size_t arglen = 0;
+               int i;
+
+               for (i = 0; i < ARRAY_SIZE(options); i++) {
+                       if (match_placeholder_arg_value(arg, options[i], &arg,
+                                                       &argval, &arglen)) {
+                               matched = options[i];
+                               break;
+                       }
+               }
+               if (!matched)
+                       break;
+
+               if (!arglen)
+                       return 0;
+               strvec_pushf(args, "--%s=%.*s", matched, (int)arglen, argval);
+       }
+       return arg - start;
+}
+
 static size_t format_commit_one(struct strbuf *sb, /* in UTF-8 */
                                const char *placeholder,
                                void *context)
@@ -1214,6 +1300,41 @@ static size_t format_commit_one(struct strbuf *sb, /* in UTF-8 */
                return parse_padding_placeholder(placeholder, c);
        }
 
+       if (skip_prefix(placeholder, "(describe", &arg)) {
+               struct child_process cmd = CHILD_PROCESS_INIT;
+               struct strbuf out = STRBUF_INIT;
+               struct strbuf err = STRBUF_INIT;
+               struct pretty_print_describe_status *describe_status;
+
+               describe_status = c->pretty_ctx->describe_status;
+               if (describe_status) {
+                       if (!describe_status->max_invocations)
+                               return 0;
+                       describe_status->max_invocations--;
+               }
+
+               cmd.git_cmd = 1;
+               strvec_push(&cmd.args, "describe");
+
+               if (*arg == ':') {
+                       arg++;
+                       arg += parse_describe_args(arg, &cmd.args);
+               }
+
+               if (*arg != ')') {
+                       child_process_clear(&cmd);
+                       return 0;
+               }
+
+               strvec_push(&cmd.args, oid_to_hex(&commit->object.oid));
+               pipe_command(&cmd, NULL, 0, &out, 0, &err, 0);
+               strbuf_rtrim(&out);
+               strbuf_addbuf(sb, &out);
+               strbuf_release(&out);
+               strbuf_release(&err);
+               return arg - placeholder + 1;
+       }
+
        /* these depend on the commit */
        if (!commit->object.parsed)
                parse_object(the_repository, &commit->object.oid);
@@ -1429,45 +1550,8 @@ static size_t format_commit_one(struct strbuf *sb, /* in UTF-8 */
 
                if (*arg == ':') {
                        arg++;
-                       for (;;) {
-                               const char *argval;
-                               size_t arglen;
-
-                               if (match_placeholder_arg_value(arg, "key", &arg, &argval, &arglen)) {
-                                       uintptr_t len = arglen;
-
-                                       if (!argval)
-                                               goto trailer_out;
-
-                                       if (len && argval[len - 1] == ':')
-                                               len--;
-                                       string_list_append(&filter_list, argval)->util = (char *)len;
-
-                                       opts.filter = format_trailer_match_cb;
-                                       opts.filter_data = &filter_list;
-                                       opts.only_trailers = 1;
-                               } else if (match_placeholder_arg_value(arg, "separator", &arg, &argval, &arglen)) {
-                                       char *fmt;
-
-                                       strbuf_reset(&sepbuf);
-                                       fmt = xstrndup(argval, arglen);
-                                       strbuf_expand(&sepbuf, fmt, strbuf_expand_literal_cb, NULL);
-                                       free(fmt);
-                                       opts.separator = &sepbuf;
-                               } else if (match_placeholder_arg_value(arg, "key_value_separator", &arg, &argval, &arglen)) {
-                                       char *fmt;
-
-                                       strbuf_reset(&kvsepbuf);
-                                       fmt = xstrndup(argval, arglen);
-                                       strbuf_expand(&kvsepbuf, fmt, strbuf_expand_literal_cb, NULL);
-                                       free(fmt);
-                                       opts.key_value_separator = &kvsepbuf;
-                               } else if (!match_placeholder_bool_arg(arg, "only", &arg, &opts.only_trailers) &&
-                                          !match_placeholder_bool_arg(arg, "unfold", &arg, &opts.unfold) &&
-                                          !match_placeholder_bool_arg(arg, "keyonly", &arg, &opts.key_only) &&
-                                          !match_placeholder_bool_arg(arg, "valueonly", &arg, &opts.value_only))
-                                       break;
-                       }
+                       if (format_set_trailers_options(&opts, &filter_list, &sepbuf, &kvsepbuf, &arg, NULL))
+                               goto trailer_out;
                }
                if (*arg == ')') {
                        format_trailers_from_commit(sb, msg + c->subject_off, &opts);
index 7ce6c0b437b448b7f384ac3680de5c3e8983d8fb..f034609e4db6e68efb24a149c580fc7bda3c4cfa 100644 (file)
--- a/pretty.h
+++ b/pretty.h
@@ -6,6 +6,7 @@
 
 struct commit;
 struct strbuf;
+struct process_trailer_options;
 
 /* Commit formats */
 enum cmit_fmt {
@@ -23,6 +24,10 @@ enum cmit_fmt {
        CMIT_FMT_UNSPECIFIED
 };
 
+struct pretty_print_describe_status {
+       unsigned int max_invocations;
+};
+
 struct pretty_print_context {
        /*
         * Callers should tweak these to change the behavior of pp_* functions.
@@ -44,6 +49,7 @@ struct pretty_print_context {
        int color;
        struct ident_split *from_ident;
        unsigned encode_email_headers:1;
+       struct pretty_print_describe_status *describe_status;
 
        /*
         * Fields below here are manipulated internally by pp_* functions and
@@ -142,4 +148,15 @@ int commit_format_is_empty(enum cmit_fmt);
 /* Make subject of commit message suitable for filename */
 void format_sanitized_subject(struct strbuf *sb, const char *msg, size_t len);
 
+/*
+ * Set values of fields in "struct process_trailer_options"
+ * according to trailers arguments.
+ */
+int format_set_trailers_options(struct process_trailer_options *opts,
+                       struct string_list *filter_list,
+                       struct strbuf *sepbuf,
+                       struct strbuf *kvsepbuf,
+                       const char **arg,
+                       char **invalid_arg);
+
 #endif /* PRETTY_H */
index 31014e6fca0512d16b0fbcc35c7fbfd43426e5c8..680c6a8bf93b514a7b82510c475984ca32067eb7 100644 (file)
@@ -196,7 +196,7 @@ void display_throughput(struct progress *progress, uint64_t total)
        now_ns = progress_getnanotime(progress);
 
        if (!tp) {
-               progress->throughput = tp = xcalloc(1, sizeof(*tp));
+               progress->throughput = CALLOC_ARRAY(tp, 1);
                tp->prev_total = tp->curr_total = total;
                tp->prev_ns = now_ns;
                strbuf_init(&tp->display, 0);
index 3c572b1c811e0b8912a11e3f193eb79f131ee763..da3f2ca2615e0896878edf00f36577c85d2dc429 100644 (file)
@@ -208,7 +208,7 @@ static int remove_fetched_oids(struct repository *repo,
 
        if (remaining_nr) {
                int j = 0;
-               new_oids = xcalloc(remaining_nr, sizeof(*new_oids));
+               CALLOC_ARRAY(new_oids, remaining_nr);
                for (i = 0; i < oid_nr; i++)
                        if (remaining[i])
                                oidcpy(&new_oids[j++], &old_oids[i]);
index b9950f10c8c486b16a2b916b0898d88c8d82fb59..116fb0735c6f4908b126d8471c9a8a52be9ccc21 100644 (file)
@@ -11,6 +11,7 @@
 #include "pretty.h"
 #include "userdiff.h"
 #include "apply.h"
+#include "revision.h"
 
 struct patch_util {
        /* For the search for an exact match */
@@ -80,6 +81,8 @@ static int read_patches(const char *range, struct string_list *list,
                finish_command(&cp);
                return -1;
        }
+       if (finish_command(&cp))
+               return -1;
 
        line = contents.buf;
        size = contents.len;
@@ -93,14 +96,14 @@ static int read_patches(const char *range, struct string_list *list,
                                string_list_append(list, buf.buf)->util = util;
                                strbuf_reset(&buf);
                        }
-                       util = xcalloc(sizeof(*util), 1);
+                       CALLOC_ARRAY(util, 1);
                        if (get_oid(p, &util->oid)) {
                                error(_("could not parse commit '%s'"), p);
                                free(util);
+                               free(current_filename);
                                string_list_clear(list, 1);
                                strbuf_release(&buf);
                                strbuf_release(&contents);
-                               finish_command(&cp);
                                return -1;
                        }
                        util->matching = -1;
@@ -112,10 +115,10 @@ static int read_patches(const char *range, struct string_list *list,
                        error(_("could not parse first line of `log` output: "
                                "did not start with 'commit ': '%s'"),
                              line);
+                       free(current_filename);
                        string_list_clear(list, 1);
                        strbuf_release(&buf);
                        strbuf_release(&contents);
-                       finish_command(&cp);
                        return -1;
                }
 
@@ -133,9 +136,16 @@ static int read_patches(const char *range, struct string_list *list,
                        orig_len = len;
                        len = parse_git_diff_header(&root, &linenr, 0, line,
                                                    len, size, &patch);
-                       if (len < 0)
-                               die(_("could not parse git header '%.*s'"),
-                                   orig_len, line);
+                       if (len < 0) {
+                               error(_("could not parse git header '%.*s'"),
+                                     orig_len, line);
+                               free(util);
+                               free(current_filename);
+                               string_list_clear(list, 1);
+                               strbuf_release(&buf);
+                               strbuf_release(&contents);
+                               return -1;
+                       }
                        strbuf_addstr(&buf, " ## ");
                        if (patch.is_new > 0)
                                strbuf_addf(&buf, "%s (new)", patch.new_name);
@@ -218,9 +228,6 @@ static int read_patches(const char *range, struct string_list *list,
        strbuf_release(&buf);
        free(current_filename);
 
-       if (finish_command(&cp))
-               return -1;
-
        return 0;
 }
 
@@ -458,12 +465,35 @@ static void patch_diff(const char *a, const char *b,
        diff_flush(diffopt);
 }
 
+static struct strbuf *output_prefix_cb(struct diff_options *opt, void *data)
+{
+       return data;
+}
+
 static void output(struct string_list *a, struct string_list *b,
-                  struct diff_options *diffopt)
+                  struct range_diff_options *range_diff_opts)
 {
        struct strbuf buf = STRBUF_INIT, dashes = STRBUF_INIT;
        int patch_no_width = decimal_width(1 + (a->nr > b->nr ? a->nr : b->nr));
        int i = 0, j = 0;
+       struct diff_options opts;
+       struct strbuf indent = STRBUF_INIT;
+
+       if (range_diff_opts->diffopt)
+               memcpy(&opts, range_diff_opts->diffopt, sizeof(opts));
+       else
+               diff_setup(&opts);
+
+       if (!opts.output_format)
+               opts.output_format = DIFF_FORMAT_PATCH;
+       opts.flags.suppress_diff_headers = 1;
+       opts.flags.dual_color_diffed_diffs =
+               range_diff_opts->dual_color;
+       opts.flags.suppress_hunk_header_line_count = 1;
+       opts.output_prefix = output_prefix_cb;
+       strbuf_addstr(&indent, "    ");
+       opts.output_prefix_data = &indent;
+       diff_setup_done(&opts);
 
        /*
         * We assume the user is really more interested in the second argument
@@ -484,7 +514,8 @@ static void output(struct string_list *a, struct string_list *b,
 
                /* Show unmatched LHS commit whose predecessors were shown. */
                if (i < a->nr && a_util->matching < 0) {
-                       output_pair_header(diffopt, patch_no_width,
+                       if (!range_diff_opts->right_only)
+                               output_pair_header(&opts, patch_no_width,
                                           &buf, &dashes, a_util, NULL);
                        i++;
                        continue;
@@ -492,7 +523,8 @@ static void output(struct string_list *a, struct string_list *b,
 
                /* Show unmatched RHS commits. */
                while (j < b->nr && b_util->matching < 0) {
-                       output_pair_header(diffopt, patch_no_width,
+                       if (!range_diff_opts->left_only)
+                               output_pair_header(&opts, patch_no_width,
                                           &buf, &dashes, NULL, b_util);
                        b_util = ++j < b->nr ? b->items[j].util : NULL;
                }
@@ -500,63 +532,41 @@ static void output(struct string_list *a, struct string_list *b,
                /* Show matching LHS/RHS pair. */
                if (j < b->nr) {
                        a_util = a->items[b_util->matching].util;
-                       output_pair_header(diffopt, patch_no_width,
+                       output_pair_header(&opts, patch_no_width,
                                           &buf, &dashes, a_util, b_util);
-                       if (!(diffopt->output_format & DIFF_FORMAT_NO_OUTPUT))
+                       if (!(opts.output_format & DIFF_FORMAT_NO_OUTPUT))
                                patch_diff(a->items[b_util->matching].string,
-                                          b->items[j].string, diffopt);
+                                          b->items[j].string, &opts);
                        a_util->shown = 1;
                        j++;
                }
        }
        strbuf_release(&buf);
        strbuf_release(&dashes);
-}
-
-static struct strbuf *output_prefix_cb(struct diff_options *opt, void *data)
-{
-       return data;
+       strbuf_release(&indent);
 }
 
 int show_range_diff(const char *range1, const char *range2,
-                   int creation_factor, int dual_color,
-                   const struct diff_options *diffopt,
-                   const struct strvec *other_arg)
+                   struct range_diff_options *range_diff_opts)
 {
        int res = 0;
 
        struct string_list branch1 = STRING_LIST_INIT_DUP;
        struct string_list branch2 = STRING_LIST_INIT_DUP;
 
-       if (read_patches(range1, &branch1, other_arg))
+       if (range_diff_opts->left_only && range_diff_opts->right_only)
+               res = error(_("--left-only and --right-only are mutually exclusive"));
+
+       if (!res && read_patches(range1, &branch1, range_diff_opts->other_arg))
                res = error(_("could not parse log for '%s'"), range1);
-       if (!res && read_patches(range2, &branch2, other_arg))
+       if (!res && read_patches(range2, &branch2, range_diff_opts->other_arg))
                res = error(_("could not parse log for '%s'"), range2);
 
        if (!res) {
-               struct diff_options opts;
-               struct strbuf indent = STRBUF_INIT;
-
-               if (diffopt)
-                       memcpy(&opts, diffopt, sizeof(opts));
-               else
-                       diff_setup(&opts);
-
-               if (!opts.output_format)
-                       opts.output_format = DIFF_FORMAT_PATCH;
-               opts.flags.suppress_diff_headers = 1;
-               opts.flags.dual_color_diffed_diffs = dual_color;
-               opts.flags.suppress_hunk_header_line_count = 1;
-               opts.output_prefix = output_prefix_cb;
-               strbuf_addstr(&indent, "    ");
-               opts.output_prefix_data = &indent;
-               diff_setup_done(&opts);
-
                find_exact_matches(&branch1, &branch2);
-               get_correspondences(&branch1, &branch2, creation_factor);
-               output(&branch1, &branch2, &opts);
-
-               strbuf_release(&indent);
+               get_correspondences(&branch1, &branch2,
+                                   range_diff_opts->creation_factor);
+               output(&branch1, &branch2, range_diff_opts);
        }
 
        string_list_clear(&branch1, 1);
@@ -564,3 +574,31 @@ int show_range_diff(const char *range1, const char *range2,
 
        return res;
 }
+
+int is_range_diff_range(const char *arg)
+{
+       char *copy = xstrdup(arg); /* setup_revisions() modifies it */
+       const char *argv[] = { "", copy, "--", NULL };
+       int i, positive = 0, negative = 0;
+       struct rev_info revs;
+
+       init_revisions(&revs, NULL);
+       if (setup_revisions(3, argv, &revs, NULL) == 1) {
+               for (i = 0; i < revs.pending.nr; i++)
+                       if (revs.pending.objects[i].item->flags & UNINTERESTING)
+                               negative++;
+                       else
+                               positive++;
+               for (i = 0; i < revs.pending.nr; i++) {
+                       struct object *obj = revs.pending.objects[i].item;
+
+                       if (obj->type == OBJ_COMMIT)
+                               clear_commit_marks((struct commit *)obj,
+                                                  ALL_REV_FLAGS);
+               }
+       }
+
+       free(copy);
+       object_array_clear(&revs.pending);
+       return negative > 0 && positive > 0;
+}
index 583ced2e8e749003b9a22fe2496d0db49f5ba7f9..04ffe217be67c32d378a94f90094b70b01e55548 100644 (file)
@@ -6,14 +6,25 @@
 
 #define RANGE_DIFF_CREATION_FACTOR_DEFAULT 60
 
+struct range_diff_options {
+       int creation_factor;
+       unsigned dual_color:1;
+       unsigned left_only:1, right_only:1;
+       const struct diff_options *diffopt; /* may be NULL */
+       const struct strvec *other_arg; /* may be NULL */
+};
+
 /*
- * Compare series of commits in RANGE1 and RANGE2, and emit to the
- * standard output.  NULL can be passed to DIFFOPT to use the built-in
- * default.
+ * Compare series of commits in `range1` and `range2`, and emit to the
+ * standard output.
  */
 int show_range_diff(const char *range1, const char *range2,
-                   int creation_factor, int dual_color,
-                   const struct diff_options *diffopt,
-                   const struct strvec *other_arg);
+                   struct range_diff_options *opts);
+
+/*
+ * Determine whether the given argument is usable as a range argument of `git
+ * range-diff`, e.g. A..B.
+ */
+int is_range_diff_range(const char *arg);
 
 #endif
index 29144cf879e795c3f5415cd5dd50f53a5dfb0cac..5a907af2fb52f53d2e533edeec5f9ed470f8ba31 100644 (file)
@@ -1364,7 +1364,9 @@ int add_index_entry(struct index_state *istate, struct cache_entry *ce, int opti
 static struct cache_entry *refresh_cache_ent(struct index_state *istate,
                                             struct cache_entry *ce,
                                             unsigned int options, int *err,
-                                            int *changed_ret)
+                                            int *changed_ret,
+                                            int *t2_did_lstat,
+                                            int *t2_did_scan)
 {
        struct stat st;
        struct cache_entry *updated;
@@ -1406,6 +1408,8 @@ static struct cache_entry *refresh_cache_ent(struct index_state *istate,
                return NULL;
        }
 
+       if (t2_did_lstat)
+               *t2_did_lstat = 1;
        if (lstat(ce->name, &st) < 0) {
                if (ignore_missing && errno == ENOENT)
                        return ce;
@@ -1442,6 +1446,8 @@ static struct cache_entry *refresh_cache_ent(struct index_state *istate,
                }
        }
 
+       if (t2_did_scan)
+               *t2_did_scan = 1;
        if (ie_modified(istate, ce, &st, options)) {
                if (err)
                        *err = EINVAL;
@@ -1519,6 +1525,8 @@ int refresh_index(struct index_state *istate, unsigned int flags,
        const char *added_fmt;
        const char *unmerged_fmt;
        struct progress *progress = NULL;
+       int t2_sum_lstat = 0;
+       int t2_sum_scan = 0;
 
        if (flags & REFRESH_PROGRESS && isatty(2))
                progress = start_delayed_progress(_("Refresh index"),
@@ -1536,11 +1544,14 @@ int refresh_index(struct index_state *istate, unsigned int flags,
         * we only have to do the special cases that are left.
         */
        preload_index(istate, pathspec, 0);
+       trace2_region_enter("index", "refresh", NULL);
        for (i = 0; i < istate->cache_nr; i++) {
                struct cache_entry *ce, *new_entry;
                int cache_errno = 0;
                int changed = 0;
                int filtered = 0;
+               int t2_did_lstat = 0;
+               int t2_did_scan = 0;
 
                ce = istate->cache[i];
                if (ignore_submodules && S_ISGITLINK(ce->ce_mode))
@@ -1566,7 +1577,11 @@ int refresh_index(struct index_state *istate, unsigned int flags,
                if (filtered)
                        continue;
 
-               new_entry = refresh_cache_ent(istate, ce, options, &cache_errno, &changed);
+               new_entry = refresh_cache_ent(istate, ce, options,
+                                             &cache_errno, &changed,
+                                             &t2_did_lstat, &t2_did_scan);
+               t2_sum_lstat += t2_did_lstat;
+               t2_sum_scan += t2_did_scan;
                if (new_entry == ce)
                        continue;
                if (progress)
@@ -1602,6 +1617,9 @@ int refresh_index(struct index_state *istate, unsigned int flags,
 
                replace_index_entry(istate, i, new_entry);
        }
+       trace2_data_intmax("index", NULL, "refresh/sum_lstat", t2_sum_lstat);
+       trace2_data_intmax("index", NULL, "refresh/sum_scan", t2_sum_scan);
+       trace2_region_leave("index", "refresh", NULL);
        if (progress) {
                display_progress(progress, istate->cache_nr);
                stop_progress(&progress);
@@ -1614,7 +1632,7 @@ struct cache_entry *refresh_cache_entry(struct index_state *istate,
                                        struct cache_entry *ce,
                                        unsigned int options)
 {
-       return refresh_cache_ent(istate, ce, options, NULL, NULL);
+       return refresh_cache_ent(istate, ce, options, NULL, NULL, NULL, NULL);
 }
 
 
@@ -2079,7 +2097,7 @@ static unsigned long load_cache_entries_threaded(struct index_state *istate, con
        /* ensure we have no more threads than we have blocks to process */
        if (nr_threads > ieot->nr)
                nr_threads = ieot->nr;
-       data = xcalloc(nr_threads, sizeof(*data));
+       CALLOC_ARRAY(data, nr_threads);
 
        offset = ieot_start = 0;
        ieot_blocks = DIV_ROUND_UP(ieot->nr, nr_threads);
@@ -2181,7 +2199,7 @@ int do_read_index(struct index_state *istate, const char *path, int must_exist)
        istate->version = ntohl(hdr->hdr_version);
        istate->cache_nr = ntohl(hdr->hdr_entries);
        istate->cache_alloc = alloc_nr(istate->cache_nr);
-       istate->cache = xcalloc(istate->cache_alloc, sizeof(*istate->cache));
+       CALLOC_ARRAY(istate->cache, istate->cache_alloc);
        istate->initialized = 1;
 
        p.istate = istate;
@@ -2308,7 +2326,7 @@ int read_index_from(struct index_state *istate, const char *path,
        if (split_index->base)
                discard_index(split_index->base);
        else
-               split_index->base = xcalloc(1, sizeof(*split_index->base));
+               CALLOC_ARRAY(split_index->base, 1);
 
        base_oid_hex = oid_to_hex(&split_index->base_oid);
        base_path = xstrfmt("%s/sharedindex.%s", gitdir, base_oid_hex);
@@ -2355,6 +2373,7 @@ int discard_index(struct index_state *istate)
        cache_tree_free(&(istate->cache_tree));
        istate->initialized = 0;
        istate->fsmonitor_has_run_once = 0;
+       FREE_AND_NULL(istate->fsmonitor_last_update);
        FREE_AND_NULL(istate->cache);
        istate->cache_alloc = 0;
        discard_split_index(istate);
@@ -2447,7 +2466,7 @@ int repo_index_has_changes(struct repository *repo,
        }
 }
 
-#define WRITE_BUFFER_SIZE 8192
+#define WRITE_BUFFER_SIZE (128 * 1024)
 static unsigned char write_buffer[WRITE_BUFFER_SIZE];
 static unsigned long write_buffer_len;
 
@@ -3409,7 +3428,7 @@ void stat_validity_update(struct stat_validity *sv, int fd)
                stat_validity_clear(sv);
        else {
                if (!sv->sd)
-                       sv->sd = xcalloc(1, sizeof(struct stat_data));
+                       CALLOC_ARRAY(sv->sd, 1);
                fill_stat_data(sv->sd, &st);
        }
 }
index 762853bc7e074cba1ae904790cbc1eb07520f613..b6cbd16a17fddd17690fb17575fa18f4fc8549b3 100644 (file)
@@ -44,7 +44,10 @@ void append_todo_help(int command_count,
 "r, reword <commit> = use commit, but edit the commit message\n"
 "e, edit <commit> = use commit, but stop for amending\n"
 "s, squash <commit> = use commit, but meld into previous commit\n"
-"f, fixup <commit> = like \"squash\", but discard this commit's log message\n"
+"f, fixup [-C | -c] <commit> = like \"squash\" but keep only the previous\n"
+"                   commit's log message, unless -C is used, in which case\n"
+"                   keep only this commit's message; -c is same as -C but\n"
+"                   opens the editor\n"
 "x, exec <command> = run command (the rest of the line) using shell\n"
 "b, break = stop here (continue rebase later with 'git rebase --continue')\n"
 "d, drop <commit> = remove commit\n"
@@ -53,7 +56,7 @@ void append_todo_help(int command_count,
 "m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]\n"
 ".       create a merge commit using the original merge commit's\n"
 ".       message (or the oneline, if no original merge commit was\n"
-".       specified). Use -c <commit> to reword the commit message.\n"
+".       specified); use -c <commit> to reword the commit message\n"
 "\n"
 "These lines can be re-ordered; they are executed from top to bottom.\n");
        unsigned edit_todo = !(shortrevisions && shortonto);
index fd994e18744cebd22e68fd1d969fb0f621d2362e..f0bd32f714168d03394a3313c1ac6af196d5202f 100644 (file)
@@ -67,6 +67,12 @@ struct refname_atom {
        int lstrip, rstrip;
 };
 
+static struct ref_trailer_buf {
+       struct string_list filter_list;
+       struct strbuf sepbuf;
+       struct strbuf kvsepbuf;
+} ref_trailer_buf = {STRING_LIST_INIT_NODUP, STRBUF_INIT, STRBUF_INIT};
+
 static struct expand_data {
        struct object_id oid;
        enum object_type type;
@@ -313,28 +319,26 @@ static int subject_atom_parser(const struct ref_format *format, struct used_atom
 static int trailers_atom_parser(const struct ref_format *format, struct used_atom *atom,
                                const char *arg, struct strbuf *err)
 {
-       struct string_list params = STRING_LIST_INIT_DUP;
-       int i;
-
        atom->u.contents.trailer_opts.no_divider = 1;
 
        if (arg) {
-               string_list_split(&params, arg, ',', -1);
-               for (i = 0; i < params.nr; i++) {
-                       const char *s = params.items[i].string;
-                       if (!strcmp(s, "unfold"))
-                               atom->u.contents.trailer_opts.unfold = 1;
-                       else if (!strcmp(s, "only"))
-                               atom->u.contents.trailer_opts.only_trailers = 1;
-                       else {
-                               strbuf_addf(err, _("unknown %%(trailers) argument: %s"), s);
-                               string_list_clear(&params, 0);
-                               return -1;
-                       }
+               const char *argbuf = xstrfmt("%s)", arg);
+               char *invalid_arg = NULL;
+
+               if (format_set_trailers_options(&atom->u.contents.trailer_opts,
+                   &ref_trailer_buf.filter_list,
+                   &ref_trailer_buf.sepbuf,
+                   &ref_trailer_buf.kvsepbuf,
+                   &argbuf, &invalid_arg)) {
+                       if (!invalid_arg)
+                               strbuf_addf(err, _("expected %%(trailers:key=<value>)"));
+                       else
+                               strbuf_addf(err, _("unknown %%(trailers) argument: %s"), invalid_arg);
+                       free((char *)invalid_arg);
+                       return -1;
                }
        }
        atom->u.contents.option = C_TRAILERS;
-       string_list_clear(&params, 0);
        return 0;
 }
 
@@ -768,7 +772,8 @@ static int if_atom_handler(struct atom_value *atomv, struct ref_formatting_state
                           struct strbuf *unused_err)
 {
        struct ref_formatting_stack *new_stack;
-       struct if_then_else *if_then_else = xcalloc(sizeof(struct if_then_else), 1);
+       struct if_then_else *if_then_else = xcalloc(1,
+                                                   sizeof(struct if_then_else));
 
        if_then_else->str = atomv->atom->u.if_then_else.str;
        if_then_else->cmp_status = atomv->atom->u.if_then_else.cmp_status;
@@ -1210,12 +1215,20 @@ static void grab_person(const char *who, struct atom_value *val, int deref, void
 }
 
 static void find_subpos(const char *buf,
-                       const char **sub, unsigned long *sublen,
-                       const char **body, unsigned long *bodylen,
-                       unsigned long *nonsiglen,
-                       const char **sig, unsigned long *siglen)
+                       const char **sub, size_t *sublen,
+                       const char **body, size_t *bodylen,
+                       size_t *nonsiglen,
+                       const char **sig, size_t *siglen)
 {
+       struct strbuf payload = STRBUF_INIT;
+       struct strbuf signature = STRBUF_INIT;
        const char *eol;
+       const char *end = buf + strlen(buf);
+       const char *sigstart;
+
+       /* parse signature first; we might not even have a subject line */
+       parse_signature(buf, end - buf, &payload, &signature);
+
        /* skip past header until we hit empty line */
        while (*buf && *buf != '\n') {
                eol = strchrnul(buf, '\n');
@@ -1226,16 +1239,14 @@ static void find_subpos(const char *buf,
        /* skip any empty lines */
        while (*buf == '\n')
                buf++;
-
-       /* parse signature first; we might not even have a subject line */
-       *sig = buf + parse_signature(buf, strlen(buf));
-       *siglen = strlen(*sig);
+       *sig = strbuf_detach(&signature, siglen);
+       sigstart = buf + parse_signed_buffer(buf, strlen(buf));
 
        /* subject is first non-empty line */
        *sub = buf;
        /* subject goes to first empty line before signature begins */
        if ((eol = strstr(*sub, "\n\n"))) {
-               eol = eol < *sig ? eol : *sig;
+               eol = eol < sigstart ? eol : sigstart;
        /* check if message uses CRLF */
        } else if (! (eol = strstr(*sub, "\r\n\r\n"))) {
                /* treat whole message as subject */
@@ -1253,7 +1264,7 @@ static void find_subpos(const char *buf,
                buf++;
        *body = buf;
        *bodylen = strlen(buf);
-       *nonsiglen = *sig - buf;
+       *nonsiglen = sigstart - buf;
 }
 
 /*
@@ -1285,12 +1296,13 @@ static void grab_sub_body_contents(struct atom_value *val, int deref, void *buf)
 {
        int i;
        const char *subpos = NULL, *bodypos = NULL, *sigpos = NULL;
-       unsigned long sublen = 0, bodylen = 0, nonsiglen = 0, siglen = 0;
+       size_t sublen = 0, bodylen = 0, nonsiglen = 0, siglen = 0;
 
        for (i = 0; i < used_atom_cnt; i++) {
                struct used_atom *atom = &used_atom[i];
                const char *name = atom->name;
                struct atom_value *v = &val[i];
+
                if (!!deref != (*name == '*'))
                        continue;
                if (deref)
@@ -1322,7 +1334,7 @@ static void grab_sub_body_contents(struct atom_value *val, int deref, void *buf)
                        v->s = xmemdupz(sigpos, siglen);
                else if (atom->u.contents.option == C_LINES) {
                        struct strbuf s = STRBUF_INIT;
-                       const char *contents_end = bodylen + bodypos - siglen;
+                       const char *contents_end = bodypos + nonsiglen;
 
                        /*  Size is the length of the message after removing the signature */
                        append_lines(&s, subpos, contents_end - subpos, atom->u.contents.nlines);
@@ -1336,7 +1348,9 @@ static void grab_sub_body_contents(struct atom_value *val, int deref, void *buf)
                        v->s = strbuf_detach(&s, NULL);
                } else if (atom->u.contents.option == C_BARE)
                        v->s = xstrdup(subpos);
+
        }
+       free((void *)sigpos);
 }
 
 /*
@@ -1663,7 +1677,7 @@ static int populate_value(struct ref_array_item *ref, struct strbuf *err)
        int i;
        struct object_info empty = OBJECT_INFO_INIT;
 
-       ref->value = xcalloc(used_atom_cnt, sizeof(struct atom_value));
+       CALLOC_ARRAY(ref->value, used_atom_cnt);
 
        if (need_symref && (ref->flag & REF_ISSYMREF) && !ref->symref) {
                ref->symref = resolve_refdup(ref->refname, RESOLVE_REF_READING,
@@ -2172,7 +2186,7 @@ static void reach_filter(struct ref_array *array,
        if (!check_reachable)
                return;
 
-       to_clear = xcalloc(sizeof(struct commit *), array->nr);
+       CALLOC_ARRAY(to_clear, array->nr);
 
        repo_init_revisions(the_repository, &revs, NULL);
 
@@ -2477,7 +2491,7 @@ void parse_ref_sorting(struct ref_sorting **sorting_tail, const char *arg)
 {
        struct ref_sorting *s;
 
-       s = xcalloc(1, sizeof(*s));
+       CALLOC_ARRAY(s, 1);
        s->next = *sorting_tail;
        *sorting_tail = s;
 
index 3a25b27d8f8dbd49b4c33c81cb6af3c92f59759d..e9cd3283694decbc6ea8e72c5681766129df793d 100644 (file)
@@ -112,7 +112,7 @@ struct reflog_walk_info {
 
 void init_reflog_walk(struct reflog_walk_info **info)
 {
-       *info = xcalloc(1, sizeof(struct reflog_walk_info));
+       CALLOC_ARRAY(*info, 1);
        (*info)->complete_reflogs.strdup_strings = 1;
 }
 
@@ -181,7 +181,7 @@ int add_reflog_for_walk(struct reflog_walk_info *info,
        }
        free(branch);
 
-       commit_reflog = xcalloc(1, sizeof(struct commit_reflog));
+       CALLOC_ARRAY(commit_reflog, 1);
        if (recno < 0) {
                commit_reflog->recno = get_reflog_recno_by_time(reflogs, timestamp);
                if (commit_reflog->recno < 0) {
diff --git a/refs.c b/refs.c
index a665ed5e10acb65f821cfed9e6586c277bdceb48..261fd82beb98fdfcfc641fa7605d37b86aac2184 100644 (file)
--- a/refs.c
+++ b/refs.c
@@ -1007,7 +1007,7 @@ struct ref_transaction *ref_store_transaction_begin(struct ref_store *refs,
        struct ref_transaction *tr;
        assert(err);
 
-       tr = xcalloc(1, sizeof(struct ref_transaction));
+       CALLOC_ARRAY(tr, 1);
        tr->ref_store = refs;
        return tr;
 }
@@ -1306,7 +1306,7 @@ int parse_hide_refs_config(const char *var, const char *value, const char *secti
                while (len && ref[len - 1] == '/')
                        ref[--len] = '\0';
                if (!hide_refs) {
-                       hide_refs = xcalloc(1, sizeof(*hide_refs));
+                       CALLOC_ARRAY(hide_refs, 1);
                        hide_refs->strdup_strings = 1;
                }
                string_list_append(hide_refs, ref);
index 4fdc68810b3c1563d8e7301a67d9ff1396be3bbf..119972ee16f89f629e96b552e520f0b8190e54a7 100644 (file)
@@ -549,7 +549,7 @@ static int lock_raw_ref(struct files_ref_store *refs,
 
        /* First lock the file so it can't change out from under us. */
 
-       *lock_p = lock = xcalloc(1, sizeof(*lock));
+       *lock_p = CALLOC_ARRAY(lock, 1);
 
        lock->ref_name = xstrdup(refname);
        files_ref_path(refs, &ref_file, refname);
@@ -843,7 +843,7 @@ static struct ref_iterator *files_ref_iterator_begin(
 
        overlay_iter = overlay_ref_iterator_begin(loose_iter, packed_iter);
 
-       iter = xcalloc(1, sizeof(*iter));
+       CALLOC_ARRAY(iter, 1);
        ref_iterator = &iter->base;
        base_ref_iterator_init(ref_iterator, &files_ref_iterator_vtable,
                               overlay_iter->ordered);
@@ -930,7 +930,7 @@ static struct ref_lock *lock_ref_oid_basic(struct files_ref_store *refs,
        files_assert_main_repository(refs, "lock_ref_oid_basic");
        assert(err);
 
-       lock = xcalloc(1, sizeof(struct ref_lock));
+       CALLOC_ARRAY(lock, 1);
 
        if (mustexist)
                resolve_flags |= RESOLVE_REF_READING;
@@ -2152,7 +2152,7 @@ static struct ref_iterator *reflog_iterator_begin(struct ref_store *ref_store,
                return empty_ref_iterator_begin();
        }
 
-       iter = xcalloc(1, sizeof(*iter));
+       CALLOC_ARRAY(iter, 1);
        ref_iterator = &iter->base;
 
        base_ref_iterator_init(ref_iterator, &files_reflog_iterator_vtable, 0);
@@ -2597,7 +2597,7 @@ static int files_transaction_prepare(struct ref_store *ref_store,
        if (!transaction->nr)
                goto cleanup;
 
-       backend_data = xcalloc(1, sizeof(*backend_data));
+       CALLOC_ARRAY(backend_data, 1);
        transaction->backend_data = backend_data;
 
        /*
index 629e00a122a7a867ae3350ce35469c2ceb1259a1..a89d132d4fe7796f4ba8edbadbdfc5cdd8cd5978 100644 (file)
@@ -393,7 +393,7 @@ struct ref_iterator *prefix_ref_iterator_begin(struct ref_iterator *iter0,
        if (!*prefix && !trim)
                return iter0; /* optimization: no need to wrap iterator */
 
-       iter = xcalloc(1, sizeof(*iter));
+       CALLOC_ARRAY(iter, 1);
        ref_iterator = &iter->base;
 
        base_ref_iterator_init(ref_iterator, &prefix_ref_iterator_vtable, iter0->ordered);
index b912f2505fee298225d3daa5719cbe6bdeba2365..dfecdbc1db6074aeafb995440fa22901b4997331 100644 (file)
@@ -941,7 +941,7 @@ static struct ref_iterator *packed_ref_iterator_begin(
        if (start == snapshot->eof)
                return empty_ref_iterator_begin();
 
-       iter = xcalloc(1, sizeof(*iter));
+       CALLOC_ARRAY(iter, 1);
        ref_iterator = &iter->base;
        base_ref_iterator_init(ref_iterator, &packed_ref_iterator_vtable, 1);
 
@@ -1424,7 +1424,7 @@ static int packed_transaction_prepare(struct ref_store *ref_store,
         * do so itself.
         */
 
-       data = xcalloc(1, sizeof(*data));
+       CALLOC_ARRAY(data, 1);
        string_list_init(&data->updates, 0);
 
        transaction->backend_data = data;
index b7052f72e2f4e61ea9f2bba5efee262e6db8fd4a..46f1e54284339dfce975f9820151c020327b85b7 100644 (file)
@@ -530,7 +530,7 @@ struct ref_iterator *cache_ref_iterator_begin(struct ref_cache *cache,
        if (prime_dir)
                prime_ref_dir(dir, prefix);
 
-       iter = xcalloc(1, sizeof(*iter));
+       CALLOC_ARRAY(iter, 1);
        ref_iterator = &iter->base;
        base_ref_iterator_init(ref_iterator, &cache_ref_iterator_vtable, 1);
        ALLOC_GROW(iter->levels, 10, iter->levels_alloc);
index c3f85c17ca7c79c7d9d9fd12defc36a22089b89c..6d1e8d02dfe7863cef5bbbe27b555d30fda8c5b7 100644 (file)
--- a/remote.c
+++ b/remote.c
@@ -151,7 +151,7 @@ static struct remote *make_remote(const char *name, int len)
        if (e)
                return container_of(e, struct remote, ent);
 
-       ret = xcalloc(1, sizeof(struct remote));
+       CALLOC_ARRAY(ret, 1);
        ret->prune = -1;  /* unspecified */
        ret->prune_tags = -1;  /* unspecified */
        ret->name = xstrndup(name, len);
@@ -186,7 +186,7 @@ static struct branch *make_branch(const char *name, size_t len)
        }
 
        ALLOC_GROW(branches, branches_nr + 1, branches_alloc);
-       ret = xcalloc(1, sizeof(struct branch));
+       CALLOC_ARRAY(ret, 1);
        branches[branches_nr++] = ret;
        ret->name = xstrndup(name, len);
        ret->refname = xstrfmt("refs/heads/%s", ret->name);
@@ -207,7 +207,7 @@ static struct rewrite *make_rewrite(struct rewrites *r,
        }
 
        ALLOC_GROW(r->rewrite, r->rewrite_nr + 1, r->rewrite_alloc);
-       ret = xcalloc(1, sizeof(struct rewrite));
+       CALLOC_ARRAY(ret, 1);
        r->rewrite[r->rewrite_nr++] = ret;
        ret->base = xstrndup(base, len);
        ret->baselen = len;
@@ -1664,7 +1664,7 @@ static void set_merge(struct branch *ret)
 
        remote = remote_get(ret->remote_name);
 
-       ret->merge = xcalloc(ret->merge_nr, sizeof(*ret->merge));
+       CALLOC_ARRAY(ret->merge, ret->merge_nr);
        for (i = 0; i < ret->merge_nr; i++) {
                ret->merge[i] = xcalloc(1, sizeof(**ret->merge));
                ret->merge[i]->src = xstrdup(ret->merge_name[i]);
index aad1a0f0808b44ddbfa8b17562cc8636ac2ac28e..5a5919825285745ff11f5a8f7248ebaaddd0560a 100644 (file)
--- a/remote.h
+++ b/remote.h
@@ -6,6 +6,8 @@
 #include "hashmap.h"
 #include "refspec.h"
 
+struct transport_ls_refs_options;
+
 /**
  * The API gives access to the configuration related to remotes. It handles
  * all three configuration mechanisms historically and currently used by Git,
@@ -196,7 +198,7 @@ struct ref **get_remote_heads(struct packet_reader *reader,
 /* Used for protocol v2 in order to retrieve refs from a remote */
 struct ref **get_remote_refs(int fd_out, struct packet_reader *reader,
                             struct ref **list, int for_push,
-                            const struct strvec *ref_prefixes,
+                            struct transport_ls_refs_options *transport_options,
                             const struct string_list *server_options,
                             int stateless_rpc);
 
index c98298acd017b551894f838e2000b253b271202e..87b355e7a6597b8b1573b1ac34c3d6c102f84238 100644 (file)
@@ -72,7 +72,7 @@ void repo_set_gitdir(struct repository *repo,
        repo_set_commondir(repo, o->commondir);
 
        if (!repo->objects->odb) {
-               repo->objects->odb = xcalloc(1, sizeof(*repo->objects->odb));
+               CALLOC_ARRAY(repo->objects->odb, 1);
                repo->objects->odb_tail = &repo->objects->odb->next;
        }
        expand_base_dir(&repo->objects->odb->path, o->object_dir,
@@ -262,7 +262,7 @@ void repo_clear(struct repository *repo)
 int repo_read_index(struct repository *repo)
 {
        if (!repo->index)
-               repo->index = xcalloc(1, sizeof(*repo->index));
+               CALLOC_ARRAY(repo->index, 1);
 
        /* Complete the double-reference */
        if (!repo->index->repo)
index 236320f179cbf60a312f882ee57e1f843398e907..bbd2e57fe418dd55480cb7447aafc858625fddf0 100644 (file)
@@ -15,7 +15,7 @@ void record_resolve_undo(struct index_state *istate, struct cache_entry *ce)
                return;
 
        if (!istate->resolve_undo) {
-               resolve_undo = xcalloc(1, sizeof(*resolve_undo));
+               CALLOC_ARRAY(resolve_undo, 1);
                resolve_undo->strdup_strings = 1;
                istate->resolve_undo = resolve_undo;
        }
@@ -57,7 +57,7 @@ struct string_list *resolve_undo_read(const char *data, unsigned long size)
        int i;
        const unsigned rawsz = the_hash_algo->rawsz;
 
-       resolve_undo = xcalloc(1, sizeof(*resolve_undo));
+       CALLOC_ARRAY(resolve_undo, 1);
        resolve_undo->strdup_strings = 1;
 
        while (size) {
index 3efd994160d95f69f2e9df71a04c72bac6a062e3..553c0faa9b3805c66c1d179b6a8c68ab20dcb2da 100644 (file)
@@ -154,7 +154,7 @@ static void paths_and_oids_insert(struct hashmap *map,
 
        entry = hashmap_get_entry(map, &key, ent, NULL);
        if (!entry) {
-               entry = xcalloc(1, sizeof(struct path_and_oids_entry));
+               CALLOC_ARRAY(entry, 1);
                hashmap_entry_init(&entry->ent, hash);
                entry->path = xstrdup(key.path);
                oidset_init(&entry->trees, 16);
@@ -1555,7 +1555,7 @@ void clear_ref_exclusion(struct string_list **ref_excludes_p)
 void add_ref_exclusion(struct string_list **ref_excludes_p, const char *exclude)
 {
        if (!*ref_excludes_p) {
-               *ref_excludes_p = xcalloc(1, sizeof(**ref_excludes_p));
+               CALLOC_ARRAY(*ref_excludes_p, 1);
                (*ref_excludes_p)->strdup_strings = 1;
        }
        string_list_append(*ref_excludes_p, exclude);
@@ -2336,6 +2336,16 @@ static int handle_revision_opt(struct rev_info *revs, int argc, const char **arg
                revs->unpacked = 1;
        } else if (starts_with(arg, "--unpacked=")) {
                die(_("--unpacked=<packfile> no longer supported"));
+       } else if (!strcmp(arg, "--no-kept-objects")) {
+               revs->no_kept_objects = 1;
+               revs->keep_pack_cache_flags |= IN_CORE_KEEP_PACKS;
+               revs->keep_pack_cache_flags |= ON_DISK_KEEP_PACKS;
+       } else if (skip_prefix(arg, "--no-kept-objects=", &optarg)) {
+               revs->no_kept_objects = 1;
+               if (!strcmp(optarg, "in-core"))
+                       revs->keep_pack_cache_flags |= IN_CORE_KEEP_PACKS;
+               if (!strcmp(optarg, "on-disk"))
+                       revs->keep_pack_cache_flags |= ON_DISK_KEEP_PACKS;
        } else if (!strcmp(arg, "-r")) {
                revs->diff = 1;
                revs->diffopt.flags.recursive = 1;
@@ -2929,7 +2939,7 @@ static struct merge_simplify_state *locate_simplify_state(struct rev_info *revs,
 
        st = lookup_decoration(&revs->merge_simplification, &commit->object);
        if (!st) {
-               st = xcalloc(1, sizeof(*st));
+               CALLOC_ARRAY(st, 1);
                add_decoration(&revs->merge_simplification, &commit->object, st);
        }
        return st;
@@ -3270,7 +3280,7 @@ define_commit_slab(indegree_slab, int);
 define_commit_slab(author_date_slab, timestamp_t);
 
 struct topo_walk_info {
-       uint32_t min_generation;
+       timestamp_t min_generation;
        struct prio_queue explore_queue;
        struct prio_queue indegree_queue;
        struct prio_queue topo_queue;
@@ -3338,7 +3348,7 @@ static void explore_walk_step(struct rev_info *revs)
 }
 
 static void explore_to_depth(struct rev_info *revs,
-                            uint32_t gen_cutoff)
+                            timestamp_t gen_cutoff)
 {
        struct topo_walk_info *info = revs->topo_walk_info;
        struct commit *c;
@@ -3367,6 +3377,9 @@ static void indegree_walk_step(struct rev_info *revs)
                struct commit *parent = p->item;
                int *pi = indegree_slab_at(&info->indegree, parent);
 
+               if (repo_parse_commit_gently(revs->repo, parent, 1) < 0)
+                       return;
+
                if (*pi)
                        (*pi)++;
                else
@@ -3380,7 +3393,7 @@ static void indegree_walk_step(struct rev_info *revs)
 }
 
 static void compute_indegrees_to_depth(struct rev_info *revs,
-                                      uint32_t gen_cutoff)
+                                      timestamp_t gen_cutoff)
 {
        struct topo_walk_info *info = revs->topo_walk_info;
        struct commit *c;
@@ -3438,7 +3451,7 @@ static void init_topo_walk(struct rev_info *revs)
        info->min_generation = GENERATION_NUMBER_INFINITY;
        for (list = revs->commits; list; list = list->next) {
                struct commit *c = list->item;
-               uint32_t generation;
+               timestamp_t generation;
 
                if (repo_parse_commit_gently(revs->repo, c, 1))
                        continue;
@@ -3506,7 +3519,7 @@ static void expand_topo_walk(struct rev_info *revs, struct commit *commit)
        for (p = commit->parents; p; p = p->next) {
                struct commit *parent = p->item;
                int *pi;
-               uint32_t generation;
+               timestamp_t generation;
 
                if (parent->object.flags & UNINTERESTING)
                        continue;
@@ -3792,6 +3805,11 @@ enum commit_action get_commit_action(struct rev_info *revs, struct commit *commi
                return commit_ignore;
        if (revs->unpacked && has_object_pack(&commit->object.oid))
                return commit_ignore;
+       if (revs->no_kept_objects) {
+               if (has_object_kept_pack(&commit->object.oid,
+                                        revs->keep_pack_cache_flags))
+                       return commit_ignore;
+       }
        if (commit->object.flags & UNINTERESTING)
                return commit_ignore;
        if (revs->line_level_traverse && !want_ancestry(revs)) {
index e6be3c845e66eb0733531adfa4bc6845417003a9..a24f72dcd151a3146d971832db9ee703809845b9 100644 (file)
@@ -148,6 +148,7 @@ struct rev_info {
                        edge_hint_aggressive:1,
                        limited:1,
                        unpacked:1,
+                       no_kept_objects:1,
                        boundary:2,
                        count:1,
                        left_right:1,
@@ -235,7 +236,7 @@ struct rev_info {
        const char      *mime_boundary;
        const char      *patch_suffix;
        int             numbered_files;
-       int             reroll_count;
+       const char      *reroll_count;
        char            *message_id;
        struct ident_split from_ident;
        struct string_list *ref_message_ids;
@@ -317,6 +318,9 @@ struct rev_info {
         * This is loaded from the commit-graph being used.
         */
        struct bloom_filter_settings *bloom_filter_settings;
+
+       /* misc. flags related to '--no-kept-objects' */
+       unsigned keep_pack_cache_flags;
 };
 
 int ref_excluded(struct string_list *, const char *path);
index ea4d0fb4b154c89a0fcd12d29e41ffcbb2af0302..be6bc128cd9df2f61211cb7b8f9552b2d745cc0a 100644 (file)
@@ -551,8 +551,11 @@ static int wait_or_whine(pid_t pid, const char *argv0, int in_signal)
 
        while ((waiting = waitpid(pid, &status, 0)) < 0 && errno == EINTR)
                ;       /* nothing */
-       if (in_signal)
-               return 0;
+       if (in_signal) {
+               if (WIFEXITED(status))
+                       code = WEXITSTATUS(status);
+               return code;
+       }
 
        if (waiting < 0) {
                failed_errno = errno;
@@ -990,6 +993,7 @@ int finish_command(struct child_process *cmd)
        int ret = wait_or_whine(cmd->pid, cmd->argv[0], 0);
        trace2_child_exit(cmd, ret);
        child_process_clear(cmd);
+       invalidate_lstat_cache();
        return ret;
 }
 
@@ -1291,13 +1295,19 @@ error:
 int finish_async(struct async *async)
 {
 #ifdef NO_PTHREADS
-       return wait_or_whine(async->pid, "child process", 0);
+       int ret = wait_or_whine(async->pid, "child process", 0);
+
+       invalidate_lstat_cache();
+
+       return ret;
 #else
        void *ret = (void *)(intptr_t)(-1);
 
        if (pthread_join(async->tid, &ret))
                error("pthread_join failed");
+       invalidate_lstat_cache();
        return (int)(intptr_t)ret;
+
 #endif
 }
 
@@ -1628,8 +1638,8 @@ static void pp_init(struct parallel_processes *pp,
        pp->nr_processes = 0;
        pp->output_owner = 0;
        pp->shutdown = 0;
-       pp->children = xcalloc(n, sizeof(*pp->children));
-       pp->pfd = xcalloc(n, sizeof(*pp->pfd));
+       CALLOC_ARRAY(pp->children, n);
+       CALLOC_ARRAY(pp->pfd, n);
        strbuf_init(&pp->buffered_output, 0);
 
        for (i = 0; i < n; i++) {
index 9045f8a082bcd62c8ee116dc235561574ed35326..5f215b13c7dc1a8a020094236625554db94591b2 100644 (file)
@@ -188,13 +188,13 @@ static int receive_status(struct packet_reader *reader, struct ref *refs)
                        }
                        if (new_report) {
                                if (!hint->report) {
-                                       hint->report = xcalloc(1, sizeof(struct ref_push_report));
+                                       CALLOC_ARRAY(hint->report, 1);
                                        report = hint->report;
                                } else {
                                        report = hint->report;
                                        while (report->next)
                                                report = report->next;
-                                       report->next = xcalloc(1, sizeof(struct ref_push_report));
+                                       CALLOC_ARRAY(report->next, 1);
                                        report = report->next;
                                }
                                new_report = 0;
index d2332d3e1787126f50f3e5f01652c00911c8eda9..fd183b5593bcc1c3558350d9e9d12118afdf6417 100644 (file)
@@ -1726,13 +1726,183 @@ static int is_pick_or_similar(enum todo_command command)
        }
 }
 
+enum todo_item_flags {
+       TODO_EDIT_MERGE_MSG    = (1 << 0),
+       TODO_REPLACE_FIXUP_MSG = (1 << 1),
+       TODO_EDIT_FIXUP_MSG    = (1 << 2),
+};
+
+static const char first_commit_msg_str[] = N_("This is the 1st commit message:");
+static const char nth_commit_msg_fmt[] = N_("This is the commit message #%d:");
+static const char skip_first_commit_msg_str[] = N_("The 1st commit message will be skipped:");
+static const char skip_nth_commit_msg_fmt[] = N_("The commit message #%d will be skipped:");
+static const char combined_commit_msg_fmt[] = N_("This is a combination of %d commits.");
+
+static int is_fixup_flag(enum todo_command command, unsigned flag)
+{
+       return command == TODO_FIXUP && ((flag & TODO_REPLACE_FIXUP_MSG) ||
+                                        (flag & TODO_EDIT_FIXUP_MSG));
+}
+
+/*
+ * Wrapper around strbuf_add_commented_lines() which avoids double
+ * commenting commit subjects.
+ */
+static void add_commented_lines(struct strbuf *buf, const void *str, size_t len)
+{
+       const char *s = str;
+       while (len > 0 && s[0] == comment_line_char) {
+               size_t count;
+               const char *n = memchr(s, '\n', len);
+               if (!n)
+                       count = len;
+               else
+                       count = n - s + 1;
+               strbuf_add(buf, s, count);
+               s += count;
+               len -= count;
+       }
+       strbuf_add_commented_lines(buf, s, len);
+}
+
+/* Does the current fixup chain contain a squash command? */
+static int seen_squash(struct replay_opts *opts)
+{
+       return starts_with(opts->current_fixups.buf, "squash") ||
+               strstr(opts->current_fixups.buf, "\nsquash");
+}
+
+static void update_comment_bufs(struct strbuf *buf1, struct strbuf *buf2, int n)
+{
+       strbuf_setlen(buf1, 2);
+       strbuf_addf(buf1, _(nth_commit_msg_fmt), n);
+       strbuf_addch(buf1, '\n');
+       strbuf_setlen(buf2, 2);
+       strbuf_addf(buf2, _(skip_nth_commit_msg_fmt), n);
+       strbuf_addch(buf2, '\n');
+}
+
+/*
+ * Comment out any un-commented commit messages, updating the message comments
+ * to say they will be skipped but do not comment out the empty lines that
+ * surround commit messages and their comments.
+ */
+static void update_squash_message_for_fixup(struct strbuf *msg)
+{
+       void (*copy_lines)(struct strbuf *, const void *, size_t) = strbuf_add;
+       struct strbuf buf1 = STRBUF_INIT, buf2 = STRBUF_INIT;
+       const char *s, *start;
+       char *orig_msg;
+       size_t orig_msg_len;
+       int i = 1;
+
+       strbuf_addf(&buf1, "# %s\n", _(first_commit_msg_str));
+       strbuf_addf(&buf2, "# %s\n", _(skip_first_commit_msg_str));
+       s = start = orig_msg = strbuf_detach(msg, &orig_msg_len);
+       while (s) {
+               const char *next;
+               size_t off;
+               if (skip_prefix(s, buf1.buf, &next)) {
+                       /*
+                        * Copy the last message, preserving the blank line
+                        * preceding the current line
+                        */
+                       off = (s > start + 1 && s[-2] == '\n') ? 1 : 0;
+                       copy_lines(msg, start, s - start - off);
+                       if (off)
+                               strbuf_addch(msg, '\n');
+                       /*
+                        * The next message needs to be commented out but the
+                        * message header is already commented out so just copy
+                        * it and the blank line that follows it.
+                        */
+                       strbuf_addbuf(msg, &buf2);
+                       if (*next == '\n')
+                               strbuf_addch(msg, *next++);
+                       start = s = next;
+                       copy_lines = add_commented_lines;
+                       update_comment_bufs(&buf1, &buf2, ++i);
+               } else if (skip_prefix(s, buf2.buf, &next)) {
+                       off = (s > start + 1 && s[-2] == '\n') ? 1 : 0;
+                       copy_lines(msg, start, s - start - off);
+                       start = s - off;
+                       s = next;
+                       copy_lines = strbuf_add;
+                       update_comment_bufs(&buf1, &buf2, ++i);
+               } else {
+                       s = strchr(s, '\n');
+                       if (s)
+                               s++;
+               }
+       }
+       copy_lines(msg, start, orig_msg_len - (start - orig_msg));
+       free(orig_msg);
+       strbuf_release(&buf1);
+       strbuf_release(&buf2);
+}
+
+static int append_squash_message(struct strbuf *buf, const char *body,
+                        enum todo_command command, struct replay_opts *opts,
+                        unsigned flag)
+{
+       const char *fixup_msg;
+       size_t commented_len = 0, fixup_off;
+       /*
+        * amend is non-interactive and not normally used with fixup!
+        * or squash! commits, so only comment out those subjects when
+        * squashing commit messages.
+        */
+       if (starts_with(body, "amend!") ||
+           ((command == TODO_SQUASH || seen_squash(opts)) &&
+            (starts_with(body, "squash!") || starts_with(body, "fixup!"))))
+               commented_len = commit_subject_length(body);
+
+       strbuf_addf(buf, "\n%c ", comment_line_char);
+       strbuf_addf(buf, _(nth_commit_msg_fmt),
+                   ++opts->current_fixup_count + 1);
+       strbuf_addstr(buf, "\n\n");
+       strbuf_add_commented_lines(buf, body, commented_len);
+       /* buf->buf may be reallocated so store an offset into the buffer */
+       fixup_off = buf->len;
+       strbuf_addstr(buf, body + commented_len);
+
+       /* fixup -C after squash behaves like squash */
+       if (is_fixup_flag(command, flag) && !seen_squash(opts)) {
+               /*
+                * We're replacing the commit message so we need to
+                * append the Signed-off-by: trailer if the user
+                * requested '--signoff'.
+                */
+               if (opts->signoff)
+                       append_signoff(buf, 0, 0);
+
+               if ((command == TODO_FIXUP) &&
+                   (flag & TODO_REPLACE_FIXUP_MSG) &&
+                   (file_exists(rebase_path_fixup_msg()) ||
+                    !file_exists(rebase_path_squash_msg()))) {
+                       fixup_msg = skip_blank_lines(buf->buf + fixup_off);
+                       if (write_message(fixup_msg, strlen(fixup_msg),
+                                       rebase_path_fixup_msg(), 0) < 0)
+                               return error(_("cannot write '%s'"),
+                                       rebase_path_fixup_msg());
+               } else {
+                       unlink(rebase_path_fixup_msg());
+               }
+       } else  {
+               unlink(rebase_path_fixup_msg());
+       }
+
+       return 0;
+}
+
 static int update_squash_messages(struct repository *r,
                                  enum todo_command command,
                                  struct commit *commit,
-                                 struct replay_opts *opts)
+                                 struct replay_opts *opts,
+                                 unsigned flag)
 {
        struct strbuf buf = STRBUF_INIT;
-       int res;
+       int res = 0;
        const char *message, *body;
        const char *encoding = get_commit_output_encoding();
 
@@ -1748,10 +1918,12 @@ static int update_squash_messages(struct repository *r,
                        buf.buf : strchrnul(buf.buf, '\n');
 
                strbuf_addf(&header, "%c ", comment_line_char);
-               strbuf_addf(&header, _("This is a combination of %d commits."),
+               strbuf_addf(&header, _(combined_commit_msg_fmt),
                            opts->current_fixup_count + 2);
                strbuf_splice(&buf, 0, eol - buf.buf, header.buf, header.len);
                strbuf_release(&header);
+               if (is_fixup_flag(command, flag) && !seen_squash(opts))
+                       update_squash_message_for_fixup(&buf);
        } else {
                struct object_id head;
                struct commit *head_commit;
@@ -1765,19 +1937,22 @@ static int update_squash_messages(struct repository *r,
                        return error(_("could not read HEAD's commit message"));
 
                find_commit_subject(head_message, &body);
-               if (write_message(body, strlen(body),
-                                 rebase_path_fixup_msg(), 0)) {
+               if (command == TODO_FIXUP && !flag && write_message(body, strlen(body),
+                                                       rebase_path_fixup_msg(), 0) < 0) {
                        unuse_commit_buffer(head_commit, head_message);
-                       return error(_("cannot write '%s'"),
-                                    rebase_path_fixup_msg());
+                       return error(_("cannot write '%s'"), rebase_path_fixup_msg());
                }
-
                strbuf_addf(&buf, "%c ", comment_line_char);
-               strbuf_addf(&buf, _("This is a combination of %d commits."), 2);
+               strbuf_addf(&buf, _(combined_commit_msg_fmt), 2);
                strbuf_addf(&buf, "\n%c ", comment_line_char);
-               strbuf_addstr(&buf, _("This is the 1st commit message:"));
+               strbuf_addstr(&buf, is_fixup_flag(command, flag) ?
+                             _(skip_first_commit_msg_str) :
+                             _(first_commit_msg_str));
                strbuf_addstr(&buf, "\n\n");
-               strbuf_addstr(&buf, body);
+               if (is_fixup_flag(command, flag))
+                       strbuf_add_commented_lines(&buf, body, strlen(body));
+               else
+                       strbuf_addstr(&buf, body);
 
                unuse_commit_buffer(head_commit, head_message);
        }
@@ -1787,16 +1962,11 @@ static int update_squash_messages(struct repository *r,
                             oid_to_hex(&commit->object.oid));
        find_commit_subject(message, &body);
 
-       if (command == TODO_SQUASH) {
-               unlink(rebase_path_fixup_msg());
-               strbuf_addf(&buf, "\n%c ", comment_line_char);
-               strbuf_addf(&buf, _("This is the commit message #%d:"),
-                           ++opts->current_fixup_count + 1);
-               strbuf_addstr(&buf, "\n\n");
-               strbuf_addstr(&buf, body);
+       if (command == TODO_SQUASH || is_fixup_flag(command, flag)) {
+               res = append_squash_message(&buf, body, command, opts, flag);
        } else if (command == TODO_FIXUP) {
                strbuf_addf(&buf, "\n%c ", comment_line_char);
-               strbuf_addf(&buf, _("The commit message #%d will be skipped:"),
+               strbuf_addf(&buf, _(skip_nth_commit_msg_fmt),
                            ++opts->current_fixup_count + 1);
                strbuf_addstr(&buf, "\n\n");
                strbuf_add_commented_lines(&buf, body, strlen(body));
@@ -1804,7 +1974,9 @@ static int update_squash_messages(struct repository *r,
                return error(_("unknown command: %d"), command);
        unuse_commit_buffer(commit, message);
 
-       res = write_message(buf.buf, buf.len, rebase_path_squash_msg(), 0);
+       if (!res)
+               res = write_message(buf.buf, buf.len, rebase_path_squash_msg(),
+                                   0);
        strbuf_release(&buf);
 
        if (!res) {
@@ -1860,14 +2032,24 @@ static void record_in_rewritten(struct object_id *oid,
                flush_rewritten_pending();
 }
 
+static int should_edit(struct replay_opts *opts) {
+       if (opts->edit < 0)
+               /*
+                * Note that we only handle the case of non-conflicted
+                * commits; continue_single_pick() handles the conflicted
+                * commits itself instead of calling this function.
+                */
+               return (opts->action == REPLAY_REVERT && isatty(0)) ? 1 : 0;
+       return opts->edit;
+}
+
 static int do_pick_commit(struct repository *r,
-                         enum todo_command command,
-                         struct commit *commit,
+                         struct todo_item *item,
                          struct replay_opts *opts,
                          int final_fixup, int *check_todo)
 {
-       unsigned int flags = opts->edit ? EDIT_MSG : 0;
-       const char *msg_file = opts->edit ? NULL : git_path_merge_msg(r);
+       unsigned int flags = should_edit(opts) ? EDIT_MSG : 0;
+       const char *msg_file = should_edit(opts) ? NULL : git_path_merge_msg(r);
        struct object_id head;
        struct commit *base, *next, *parent;
        const char *base_label, *next_label;
@@ -1875,6 +2057,8 @@ static int do_pick_commit(struct repository *r,
        struct commit_message msg = { NULL, NULL, NULL, NULL };
        struct strbuf msgbuf = STRBUF_INIT;
        int res, unborn = 0, reword = 0, allow, drop_commit;
+       enum todo_command command = item->command;
+       struct commit *commit = item->commit;
 
        if (opts->no_commit) {
                /*
@@ -2004,7 +2188,8 @@ static int do_pick_commit(struct repository *r,
        if (command == TODO_REWORD)
                reword = 1;
        else if (is_fixup(command)) {
-               if (update_squash_messages(r, command, commit, opts))
+               if (update_squash_messages(r, command, commit,
+                                          opts, item->flags))
                        return -1;
                flags |= AMEND_MSG;
                if (!final_fixup)
@@ -2169,10 +2354,6 @@ static int read_and_refresh_cache(struct repository *r,
        return 0;
 }
 
-enum todo_item_flags {
-       TODO_EDIT_MERGE_MSG = 1
-};
-
 void todo_list_release(struct todo_list *todo_list)
 {
        strbuf_release(&todo_list->buf);
@@ -2259,6 +2440,18 @@ static int parse_insn_line(struct repository *r, struct todo_item *item,
                return 0;
        }
 
+       if (item->command == TODO_FIXUP) {
+               if (skip_prefix(bol, "-C", &bol) &&
+                  (*bol == ' ' || *bol == '\t')) {
+                       bol += strspn(bol, " \t");
+                       item->flags |= TODO_REPLACE_FIXUP_MSG;
+               } else if (skip_prefix(bol, "-c", &bol) &&
+                                 (*bol == ' ' || *bol == '\t')) {
+                       bol += strspn(bol, " \t");
+                       item->flags |= TODO_EDIT_FIXUP_MSG;
+               }
+       }
+
        if (item->command == TODO_MERGE) {
                if (skip_prefix(bol, "-C", &bol))
                        bol += strspn(bol, " \t");
@@ -3101,9 +3294,9 @@ static int save_opts(struct replay_opts *opts)
        if (opts->no_commit)
                res |= git_config_set_in_file_gently(opts_file,
                                        "options.no-commit", "true");
-       if (opts->edit)
-               res |= git_config_set_in_file_gently(opts_file,
-                                       "options.edit", "true");
+       if (opts->edit >= 0)
+               res |= git_config_set_in_file_gently(opts_file, "options.edit",
+                                                    opts->edit ? "true" : "false");
        if (opts->allow_empty)
                res |= git_config_set_in_file_gently(opts_file,
                                        "options.allow-empty", "true");
@@ -4077,7 +4270,7 @@ static int pick_commits(struct repository *r,
        prev_reflog_action = xstrdup(getenv(GIT_REFLOG_ACTION));
        if (opts->allow_ff)
                assert(!(opts->signoff || opts->no_commit ||
-                        opts->record_origin || opts->edit ||
+                        opts->record_origin || should_edit(opts) ||
                         opts->committer_date_is_author_date ||
                         opts->ignore_date));
        if (read_and_refresh_cache(r, opts))
@@ -4124,8 +4317,8 @@ static int pick_commits(struct repository *r,
                                setenv(GIT_REFLOG_ACTION, reflog_message(opts,
                                        command_to_string(item->command), NULL),
                                        1);
-                       res = do_pick_commit(r, item->command, item->commit,
-                                            opts, is_final_fixup(todo_list),
+                       res = do_pick_commit(r, item, opts,
+                                            is_final_fixup(todo_list),
                                             &check_todo);
                        if (is_rebase_i(opts))
                                setenv(GIT_REFLOG_ACTION, prev_reflog_action, 1);
@@ -4370,14 +4563,33 @@ cleanup_head_ref:
        return sequencer_remove_state(opts);
 }
 
-static int continue_single_pick(struct repository *r)
+static int continue_single_pick(struct repository *r, struct replay_opts *opts)
 {
-       const char *argv[] = { "commit", NULL };
+       struct strvec argv = STRVEC_INIT;
+       int ret;
 
        if (!refs_ref_exists(get_main_ref_store(r), "CHERRY_PICK_HEAD") &&
            !refs_ref_exists(get_main_ref_store(r), "REVERT_HEAD"))
                return error(_("no cherry-pick or revert in progress"));
-       return run_command_v_opt(argv, RUN_GIT_CMD);
+
+       strvec_push(&argv, "commit");
+
+       /*
+        * continue_single_pick() handles the case of recovering from a
+        * conflict.  should_edit() doesn't handle that case; for a conflict,
+        * we want to edit if the user asked for it, or if they didn't specify
+        * and stdin is a tty.
+        */
+       if (!opts->edit || (opts->edit < 0 && !isatty(0)))
+               /*
+                * Include --cleanup=strip as well because we don't want the
+                * "# Conflicts:" messages.
+                */
+               strvec_pushl(&argv, "--no-edit", "--cleanup=strip", NULL);
+
+       ret = run_command_v_opt(argv.v, RUN_GIT_CMD);
+       strvec_clear(&argv);
+       return ret;
 }
 
 static int commit_staged_changes(struct repository *r,
@@ -4547,7 +4759,7 @@ int sequencer_continue(struct repository *r, struct replay_opts *opts)
                        goto release_todo_list;
                }
        } else if (!file_exists(get_todo_path(opts)))
-               return continue_single_pick(r);
+               return continue_single_pick(r, opts);
        else if ((res = read_populate_todo(r, &todo_list, opts)))
                goto release_todo_list;
 
@@ -4556,7 +4768,7 @@ int sequencer_continue(struct repository *r, struct replay_opts *opts)
                if (refs_ref_exists(get_main_ref_store(r),
                                    "CHERRY_PICK_HEAD") ||
                    refs_ref_exists(get_main_ref_store(r), "REVERT_HEAD")) {
-                       res = continue_single_pick(r);
+                       res = continue_single_pick(r, opts);
                        if (res)
                                goto release_todo_list;
                }
@@ -4587,11 +4799,14 @@ static int single_pick(struct repository *r,
                       struct replay_opts *opts)
 {
        int check_todo;
+       struct todo_item item;
+
+       item.command = opts->action == REPLAY_PICK ?
+                       TODO_PICK : TODO_REVERT;
+       item.commit = cmit;
 
        setenv(GIT_REFLOG_ACTION, action_name(opts), 0);
-       return do_pick_commit(r, opts->action == REPLAY_PICK ?
-                             TODO_PICK : TODO_REVERT, cmit, opts, 0,
-                             &check_todo);
+       return do_pick_commit(r, &item, opts, 0, &check_todo);
 }
 
 int sequencer_pick_revisions(struct repository *r,
@@ -5171,7 +5386,7 @@ void todo_list_add_exec_commands(struct todo_list *todo_list,
        int i, insert, nr = 0, alloc = 0;
        struct todo_item *items = NULL, *base_items = NULL;
 
-       base_items = xcalloc(commands->nr, sizeof(struct todo_item));
+       CALLOC_ARRAY(base_items, commands->nr);
        for (i = 0; i < commands->nr; i++) {
                size_t command_len = strlen(commands->items[i].string);
 
@@ -5262,6 +5477,14 @@ static void todo_list_to_strbuf(struct repository *r, struct todo_list *todo_lis
                                          short_commit_name(item->commit) :
                                          oid_to_hex(&item->commit->object.oid);
 
+                       if (item->command == TODO_FIXUP) {
+                               if (item->flags & TODO_EDIT_FIXUP_MSG)
+                                       strbuf_addstr(buf, " -c");
+                               else if (item->flags & TODO_REPLACE_FIXUP_MSG) {
+                                       strbuf_addstr(buf, " -C");
+                               }
+                       }
+
                        if (item->command == TODO_MERGE) {
                                if (item->flags & TODO_EDIT_MERGE_MSG)
                                        strbuf_addstr(buf, " -c");
@@ -5462,6 +5685,12 @@ static int subject2item_cmp(const void *fndata,
 
 define_commit_slab(commit_todo_item, struct todo_item *);
 
+static int skip_fixupish(const char *subject, const char **p) {
+       return skip_prefix(subject, "fixup! ", p) ||
+              skip_prefix(subject, "amend! ", p) ||
+              skip_prefix(subject, "squash! ", p);
+}
+
 /*
  * 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
@@ -5520,15 +5749,13 @@ int todo_list_rearrange_squash(struct todo_list *todo_list)
                format_subject(&buf, subject, " ");
                subject = subjects[i] = strbuf_detach(&buf, &subject_len);
                unuse_commit_buffer(item->commit, commit_buffer);
-               if ((skip_prefix(subject, "fixup! ", &p) ||
-                    skip_prefix(subject, "squash! ", &p))) {
+               if (skip_fixupish(subject, &p)) {
                        struct commit *commit2;
 
                        for (;;) {
                                while (isspace(*p))
                                        p++;
-                               if (!skip_prefix(p, "fixup! ", &p) &&
-                                   !skip_prefix(p, "squash! ", &p))
+                               if (!skip_fixupish(p, &p))
                                        break;
                        }
 
@@ -5558,9 +5785,14 @@ int todo_list_rearrange_squash(struct todo_list *todo_list)
                }
                if (i2 >= 0) {
                        rearranged = 1;
-                       todo_list->items[i].command =
-                               starts_with(subject, "fixup!") ?
-                               TODO_FIXUP : TODO_SQUASH;
+                       if (starts_with(subject, "fixup!")) {
+                               todo_list->items[i].command = TODO_FIXUP;
+                       } else if (starts_with(subject, "amend!")) {
+                               todo_list->items[i].command = TODO_FIXUP;
+                               todo_list->items[i].flags = TODO_REPLACE_FIXUP_MSG;
+                       } else {
+                               todo_list->items[i].command = TODO_SQUASH;
+                       }
                        if (tail[i2] < 0) {
                                next[i] = next[i2];
                                next[i2] = i;
index f8b2e4ab8527b5742cbd4b9beff246938f421c3d..d57d8ea23d7a225e10788859cab4bebf5cfc1346 100644 (file)
@@ -31,8 +31,10 @@ enum commit_msg_cleanup_mode {
 struct replay_opts {
        enum replay_action action;
 
-       /* Boolean options */
+       /* Tri-state options: unspecified, false, or true */
        int edit;
+
+       /* Boolean options */
        int record_origin;
        int no_commit;
        int signoff;
@@ -71,7 +73,7 @@ struct replay_opts {
        /* Only used by REPLAY_NONE */
        struct rev_info *revs;
 };
-#define REPLAY_OPTS_INIT { .action = -1, .current_fixups = STRBUF_INIT }
+#define REPLAY_OPTS_INIT { .edit = -1, .action = -1, .current_fixups = STRBUF_INIT }
 
 /*
  * Note that ordering matters in this enum. Not only must it match the mapping
diff --git a/serve.c b/serve.c
index eec2fe6f294cd1c0c5e8a76b66b09d78dd4e22da..ac20c7276304c51a2169e3d95777a05a1d6c1e31 100644 (file)
--- a/serve.c
+++ b/serve.c
@@ -73,7 +73,7 @@ struct protocol_capability {
 
 static struct protocol_capability capabilities[] = {
        { "agent", agent_advertise, NULL },
-       { "ls-refs", always_advertise, ls_refs },
+       { "ls-refs", ls_refs_advertise, ls_refs },
        { "fetch", upload_pack_advertise, upload_pack_v2 },
        { "server-option", always_advertise, NULL },
        { "object-format", object_format_advertise, NULL },
index bae2cdfd5127e42ca66622270326d8094fe13f40..de0aa4498c6131da80fb9ef8afb061fc1b9aff7e 100644 (file)
@@ -296,7 +296,7 @@ static void init_pack_info(const char *infofile, int force)
 
                i = num_pack++;
                ALLOC_GROW(info, num_pack, alloc);
-               info[i] = xcalloc(1, sizeof(struct pack_info));
+               CALLOC_ARRAY(info[i], 1);
                info[i]->p = p;
                info[i]->old_num = -1;
        }
diff --git a/simple-ipc.h b/simple-ipc.h
new file mode 100644 (file)
index 0000000..dc3606e
--- /dev/null
@@ -0,0 +1,239 @@
+#ifndef GIT_SIMPLE_IPC_H
+#define GIT_SIMPLE_IPC_H
+
+/*
+ * See Documentation/technical/api-simple-ipc.txt
+ */
+
+#if defined(GIT_WINDOWS_NATIVE) || !defined(NO_UNIX_SOCKETS)
+#define SUPPORTS_SIMPLE_IPC
+#endif
+
+#ifdef SUPPORTS_SIMPLE_IPC
+#include "pkt-line.h"
+
+/*
+ * Simple IPC Client Side API.
+ */
+
+enum ipc_active_state {
+       /*
+        * The pipe/socket exists and the daemon is waiting for connections.
+        */
+       IPC_STATE__LISTENING = 0,
+
+       /*
+        * The pipe/socket exists, but the daemon is not listening.
+        * Perhaps it is very busy.
+        * Perhaps the daemon died without deleting the path.
+        * Perhaps it is shutting down and draining existing clients.
+        * Perhaps it is dead, but other clients are lingering and
+        * still holding a reference to the pathname.
+        */
+       IPC_STATE__NOT_LISTENING,
+
+       /*
+        * The requested pathname is bogus and no amount of retries
+        * will fix that.
+        */
+       IPC_STATE__INVALID_PATH,
+
+       /*
+        * The requested pathname is not found.  This usually means
+        * that there is no daemon present.
+        */
+       IPC_STATE__PATH_NOT_FOUND,
+
+       IPC_STATE__OTHER_ERROR,
+};
+
+struct ipc_client_connect_options {
+       /*
+        * Spin under timeout if the server is running but can't
+        * accept our connection yet.  This should always be set
+        * unless you just want to poke the server and see if it
+        * is alive.
+        */
+       unsigned int wait_if_busy:1;
+
+       /*
+        * Spin under timeout if the pipe/socket is not yet present
+        * on the file system.  This is useful if we just started
+        * the service and need to wait for it to become ready.
+        */
+       unsigned int wait_if_not_found:1;
+
+       /*
+        * Disallow chdir() when creating a Unix domain socket.
+        */
+       unsigned int uds_disallow_chdir:1;
+};
+
+#define IPC_CLIENT_CONNECT_OPTIONS_INIT { \
+       .wait_if_busy = 0, \
+       .wait_if_not_found = 0, \
+       .uds_disallow_chdir = 0, \
+}
+
+/*
+ * Determine if a server is listening on this named pipe or socket using
+ * platform-specific logic.  This might just probe the filesystem or it
+ * might make a trivial connection to the server using this pathname.
+ */
+enum ipc_active_state ipc_get_active_state(const char *path);
+
+struct ipc_client_connection {
+       int fd;
+};
+
+/*
+ * Try to connect to the daemon on the named pipe or socket.
+ *
+ * Returns IPC_STATE__LISTENING and a connection handle.
+ *
+ * Otherwise, returns info to help decide whether to retry or to
+ * spawn/respawn the server.
+ */
+enum ipc_active_state ipc_client_try_connect(
+       const char *path,
+       const struct ipc_client_connect_options *options,
+       struct ipc_client_connection **p_connection);
+
+void ipc_client_close_connection(struct ipc_client_connection *connection);
+
+/*
+ * Used by the client to synchronously send and receive a message with
+ * the server on the provided client connection.
+ *
+ * Returns 0 when successful.
+ *
+ * Calls error() and returns non-zero otherwise.
+ */
+int ipc_client_send_command_to_connection(
+       struct ipc_client_connection *connection,
+       const char *message, struct strbuf *answer);
+
+/*
+ * Used by the client to synchronously connect and send and receive a
+ * message to the server listening at the given path.
+ *
+ * Returns 0 when successful.
+ *
+ * Calls error() and returns non-zero otherwise.
+ */
+int ipc_client_send_command(const char *path,
+                           const struct ipc_client_connect_options *options,
+                           const char *message, struct strbuf *answer);
+
+/*
+ * Simple IPC Server Side API.
+ */
+
+struct ipc_server_reply_data;
+
+typedef int (ipc_server_reply_cb)(struct ipc_server_reply_data *,
+                                 const char *response,
+                                 size_t response_len);
+
+/*
+ * Prototype for an application-supplied callback to process incoming
+ * client IPC messages and compose a reply.  The `application_cb` should
+ * use the provided `reply_cb` and `reply_data` to send an IPC response
+ * back to the client.  The `reply_cb` callback can be called multiple
+ * times for chunking purposes.  A reply message is optional and may be
+ * omitted if not necessary for the application.
+ *
+ * The return value from the application callback is ignored.
+ * The value `SIMPLE_IPC_QUIT` can be used to shutdown the server.
+ */
+typedef int (ipc_server_application_cb)(void *application_data,
+                                       const char *request,
+                                       ipc_server_reply_cb *reply_cb,
+                                       struct ipc_server_reply_data *reply_data);
+
+#define SIMPLE_IPC_QUIT -2
+
+/*
+ * Opaque instance data to represent an IPC server instance.
+ */
+struct ipc_server_data;
+
+/*
+ * Control parameters for the IPC server instance.
+ * Use this to hide platform-specific settings.
+ */
+struct ipc_server_opts
+{
+       int nr_threads;
+
+       /*
+        * Disallow chdir() when creating a Unix domain socket.
+        */
+       unsigned int uds_disallow_chdir:1;
+};
+
+/*
+ * Start an IPC server instance in one or more background threads
+ * and return a handle to the pool.
+ *
+ * Returns 0 if the asynchronous server pool was started successfully.
+ * Returns -1 if not.
+ * Returns -2 if we could not startup because another server is using
+ * the socket or named pipe.
+ *
+ * When a client IPC message is received, the `application_cb` will be
+ * called (possibly on a random thread) to handle the message and
+ * optionally compose a reply message.
+ */
+int ipc_server_run_async(struct ipc_server_data **returned_server_data,
+                        const char *path, const struct ipc_server_opts *opts,
+                        ipc_server_application_cb *application_cb,
+                        void *application_data);
+
+/*
+ * Gently signal the IPC server pool to shutdown.  No new client
+ * connections will be accepted, but existing connections will be
+ * allowed to complete.
+ */
+int ipc_server_stop_async(struct ipc_server_data *server_data);
+
+/*
+ * Block the calling thread until all threads in the IPC server pool
+ * have completed and been joined.
+ */
+int ipc_server_await(struct ipc_server_data *server_data);
+
+/*
+ * Close and free all resource handles associated with the IPC server
+ * pool.
+ */
+void ipc_server_free(struct ipc_server_data *server_data);
+
+/*
+ * Run an IPC server instance and block the calling thread of the
+ * current process.  It does not return until the IPC server has
+ * either shutdown or had an unrecoverable error.
+ *
+ * The IPC server handles incoming IPC messages from client processes
+ * and may use one or more background threads as necessary.
+ *
+ * Returns 0 after the server has completed successfully.
+ * Returns -1 if the server cannot be started.
+ * Returns -2 if we could not startup because another server is using
+ * the socket or named pipe.
+ *
+ * When a client IPC message is received, the `application_cb` will be
+ * called (possibly on a random thread) to handle the message and
+ * optionally compose a reply message.
+ *
+ * Note that `ipc_server_run()` is a synchronous wrapper around the
+ * above asynchronous routines.  It effectively hides all of the
+ * server state and thread details from the caller and presents a
+ * simple synchronous interface.
+ */
+int ipc_server_run(const char *path, const struct ipc_server_opts *opts,
+                  ipc_server_application_cb *application_cb,
+                  void *application_data);
+
+#endif /* SUPPORTS_SIMPLE_IPC */
+#endif /* GIT_SIMPLE_IPC_H */
index c0e8ad670d0a17a28fd049b6814d8e77c7654dc2..94937d21a39da8e0e3de9413019fdeae3db06a20 100644 (file)
@@ -5,7 +5,7 @@
 struct split_index *init_split_index(struct index_state *istate)
 {
        if (!istate->split_index) {
-               istate->split_index = xcalloc(1, sizeof(*istate->split_index));
+               CALLOC_ARRAY(istate->split_index, 1);
                istate->split_index->refcount = 1;
        }
        return istate->split_index;
@@ -87,7 +87,7 @@ void move_cache_to_base_index(struct index_state *istate)
                mem_pool_combine(istate->ce_mem_pool, istate->split_index->base->ce_mem_pool);
        }
 
-       si->base = xcalloc(1, sizeof(*si->base));
+       CALLOC_ARRAY(si->base, 1);
        si->base->version = istate->version;
        /* zero timestamp disables racy test in ce_write_index() */
        si->base->timestamp = istate->timestamp;
index 69d458a24d531be606bb43d360a9020d530557c8..5232d02020c725abdf0b486843c703403dcfc012 100644 (file)
@@ -1,6 +1,7 @@
 #include "cache.h"
 
-static int threaded_check_leading_path(struct cache_def *cache, const char *name, int len);
+static int threaded_check_leading_path(struct cache_def *cache, const char *name,
+                                      int len, int warn_on_lstat_err);
 static int threaded_has_dirs_only_path(struct cache_def *cache, const char *name, int len, int prefix_len);
 
 /*
@@ -72,7 +73,7 @@ static int lstat_cache_matchlen(struct cache_def *cache,
                                int prefix_len_stat_func)
 {
        int match_len, last_slash, last_slash_dir, previous_slash;
-       int save_flags, ret;
+       int save_flags, ret, saved_errno = 0;
        struct stat st;
 
        if (cache->track_flags != track_flags ||
@@ -139,6 +140,7 @@ static int lstat_cache_matchlen(struct cache_def *cache,
 
                if (ret) {
                        *ret_flags = FL_LSTATERR;
+                       saved_errno = errno;
                        if (errno == ENOENT)
                                *ret_flags |= FL_NOENT;
                } else if (S_ISDIR(st.st_mode)) {
@@ -180,6 +182,8 @@ static int lstat_cache_matchlen(struct cache_def *cache,
        } else {
                reset_lstat_cache(cache);
        }
+       if (saved_errno)
+               errno = saved_errno;
        return match_len;
 }
 
@@ -202,57 +206,47 @@ int threaded_has_symlink_leading_path(struct cache_def *cache, const char *name,
        return lstat_cache(cache, name, len, FL_SYMLINK|FL_DIR, USE_ONLY_LSTAT) & FL_SYMLINK;
 }
 
-/*
- * Return non-zero if path 'name' has a leading symlink component
- */
 int has_symlink_leading_path(const char *name, int len)
 {
        return threaded_has_symlink_leading_path(&default_cache, name, len);
 }
 
-/*
- * Return zero if path 'name' has a leading symlink component or
- * if some leading path component does not exists.
- *
- * Return -1 if leading path exists and is a directory.
- *
- * Return path length if leading path exists and is neither a
- * directory nor a symlink.
- */
-int check_leading_path(const char *name, int len)
+int check_leading_path(const char *name, int len, int warn_on_lstat_err)
 {
-       return threaded_check_leading_path(&default_cache, name, len);
+       return threaded_check_leading_path(&default_cache, name, len,
+                                          warn_on_lstat_err);
 }
 
 /*
- * Return zero if path 'name' has a leading symlink component or
- * if some leading path component does not exists.
+ * Return zero if some leading path component of 'name' does not exist.
  *
  * Return -1 if leading path exists and is a directory.
  *
- * Return path length if leading path exists and is neither a
- * directory nor a symlink.
+ * Return the length of a leading component if it either exists but it's not a
+ * directory, or if we were unable to lstat() it. If warn_on_lstat_err is true,
+ * also emit a warning for this error.
  */
-static int threaded_check_leading_path(struct cache_def *cache, const char *name, int len)
+static int threaded_check_leading_path(struct cache_def *cache, const char *name,
+                                      int len, int warn_on_lstat_err)
 {
        int flags;
        int match_len = lstat_cache_matchlen(cache, name, len, &flags,
                           FL_SYMLINK|FL_NOENT|FL_DIR, USE_ONLY_LSTAT);
+       int saved_errno = errno;
+
        if (flags & FL_NOENT)
                return 0;
        else if (flags & FL_DIR)
                return -1;
-       else
-               return match_len;
+       if (warn_on_lstat_err && (flags & FL_LSTATERR)) {
+               char *path = xmemdupz(name, match_len);
+               errno = saved_errno;
+               warning_errno(_("failed to lstat '%s'"), path);
+               free(path);
+       }
+       return match_len;
 }
 
-/*
- * Return non-zero if all path components of 'name' exists as a
- * directory.  If prefix_len > 0, we will test with the stat()
- * function instead of the lstat() function for a prefix length of
- * 'prefix_len', thus we then allow for symlinks in the prefix part as
- * long as those points to real existing directories.
- */
 int has_dirs_only_path(const char *name, int len, int prefix_len)
 {
        return threaded_has_dirs_only_path(&default_cache, name, len, prefix_len);
@@ -267,6 +261,13 @@ int has_dirs_only_path(const char *name, int len, int prefix_len)
  */
 static int threaded_has_dirs_only_path(struct cache_def *cache, const char *name, int len, int prefix_len)
 {
+       /*
+        * Note: this function is used by the checkout machinery, which also
+        * takes care to properly reset the cache when it performs an operation
+        * that would leave the cache outdated. If this function starts caching
+        * anything else besides FL_DIR, remember to also invalidate the cache
+        * when creating or deleting paths that might be in the cache.
+        */
        return lstat_cache(cache, name, len,
                           FL_DIR|FL_FULLPATH, prefix_len) &
                FL_DIR;
@@ -321,3 +322,20 @@ void remove_scheduled_dirs(void)
 {
        do_remove_scheduled_dirs(0);
 }
+
+void invalidate_lstat_cache(void)
+{
+       reset_lstat_cache(&default_cache);
+}
+
+#undef rmdir
+int lstat_cache_aware_rmdir(const char *path)
+{
+       /* Any change in this function must be made also in `mingw_rmdir()` */
+       int ret = rmdir(path);
+
+       if (!ret)
+               invalidate_lstat_cache();
+
+       return ret;
+}
index df05434d32cc1fa720d5408c26c22371d1f0e9e8..dafa17c3e616756d38dd9c0dba45de978c8088ff 100644 (file)
@@ -1,13 +1,13 @@
 t[0-9][0-9][0-9][0-9]/* -whitespace
 /chainlint/*.expect eol=lf
-/diff-lib/* eol=lf
+/lib-diff/* eol=lf
 /t0110/url-* binary
 /t3206/* eol=lf
 /t3900/*.txt eol=lf
 /t3901/*.txt eol=lf
-/t4034/*/* eol=lf
 /t4013/* eol=lf
 /t4018/* eol=lf
+/t4034/*/* eol=lf
 /t4051/* eol=lf
 /t4100/* eol=lf
 /t4101/* eol=lf
index 1d80fb7004145d9d5666efeda08923ec82533154..fd9375b146d199b076b22d6b3b0ad8a9c1a9e4a6 100644 (file)
--- a/t/README
+++ b/t/README
@@ -433,6 +433,9 @@ GIT_TEST_DEFAULT_HASH=<hash-algo> specifies which hash algorithm to
 use in the test scripts. Recognized values for <hash-algo> are "sha1"
 and "sha256".
 
+GIT_TEST_WRITE_REV_INDEX=<boolean>, when true enables the
+'pack.writeReverseIndex' setting.
+
 Naming Tests
 ------------
 
@@ -911,13 +914,13 @@ library for your script to use.
 
    Check whether a file has the length it is expected to.
 
- - test_path_is_file <path> [<diagnosis>]
-   test_path_is_dir <path> [<diagnosis>]
-   test_path_is_missing <path> [<diagnosis>]
+ - test_path_is_file <path>
+   test_path_is_dir <path>
+   test_path_is_missing <path>
 
    Check if the named path is a file, if the named path is a
    directory, or if the named path does not exist, respectively,
-   and fail otherwise, showing the <diagnosis> text.
+   and fail otherwise.
 
  - test_when_finished <script>
 
index 46e97b04eb83d0d1730c0a8afcbb1ac0bee7cfbb..2a1ae3dae6ab173399a6749b646c05a8e1be1969 100644 (file)
@@ -69,7 +69,7 @@ int cmd__bloom(int argc, const char **argv)
                struct bloom_filter filter;
                int i = 2;
                filter.len =  (settings.bits_per_entry + BITS_PER_WORD - 1) / BITS_PER_WORD;
-               filter.data = xcalloc(filter.len, sizeof(unsigned char));
+               CALLOC_ARRAY(filter.data, filter.len);
 
                if (argc - 1 < i)
                        usage(bloom_usage);
index aa22af48c2a6f48a81a6306a1850f5b5256fa319..524b55ca496cab66031eb21f83548a2817280ee6 100644 (file)
@@ -109,9 +109,9 @@ int cmd__chmtime(int argc, const char **argv)
                uintmax_t mtime;
 
                if (stat(argv[i], &sb) < 0) {
-                       fprintf(stderr, "Failed to stat %s: %s\n",
+                       fprintf(stderr, "Failed to stat %s: %s. Skipping\n",
                                argv[i], strerror(errno));
-                       return 1;
+                       continue;
                }
 
 #ifdef GIT_WINDOWS_NATIVE
index 5f585a17256de1f4ee938e29a7e74db26f244e90..75927b2c81d28de1b3f16de0ef4a9d55aad5e668 100644 (file)
@@ -33,6 +33,10 @@ int cmd__read_graph(int argc, const char **argv)
                printf(" oid_lookup");
        if (graph->chunk_commit_data)
                printf(" commit_metadata");
+       if (graph->chunk_generation_data)
+               printf(" generation_data");
+       if (graph->chunk_generation_data_overflow)
+               printf(" generation_data_overflow");
        if (graph->chunk_extra_edges)
                printf(" extra_edges");
        if (graph->chunk_bloom_indexes)
index 2430880f78f8ec674666d2fd04f7fded4e00ef89..7c2eb11a8e70ffe1ff6d438efe0e0f0024caa546 100644 (file)
@@ -4,7 +4,7 @@
 #include "repository.h"
 #include "object-store.h"
 
-static int read_midx_file(const char *object_dir)
+static int read_midx_file(const char *object_dir, int show_objects)
 {
        uint32_t i;
        struct multi_pack_index *m;
@@ -43,13 +43,29 @@ static int read_midx_file(const char *object_dir)
 
        printf("object-dir: %s\n", m->object_dir);
 
+       if (show_objects) {
+               struct object_id oid;
+               struct pack_entry e;
+
+               for (i = 0; i < m->num_objects; i++) {
+                       nth_midxed_object_oid(&oid, m, i);
+                       fill_midx_entry(the_repository, &oid, &e, m);
+
+                       printf("%s %"PRIu64"\t%s\n",
+                              oid_to_hex(&oid), e.offset, e.p->pack_name);
+               }
+               return 0;
+       }
+
        return 0;
 }
 
 int cmd__read_midx(int argc, const char **argv)
 {
-       if (argc != 2)
-               usage("read-midx <object-dir>");
+       if (!(argc == 2 || argc == 3))
+               usage("read-midx [--show-objects] <object-dir>");
 
-       return read_midx_file(argv[1]);
+       if (!strcmp(argv[1], "--show-objects"))
+               return read_midx_file(argv[2], 1);
+       return read_midx_file(argv[1], 0);
 }
diff --git a/t/helper/test-simple-ipc.c b/t/helper/test-simple-ipc.c
new file mode 100644 (file)
index 0000000..42040ef
--- /dev/null
@@ -0,0 +1,787 @@
+/*
+ * test-simple-ipc.c: verify that the Inter-Process Communication works.
+ */
+
+#include "test-tool.h"
+#include "cache.h"
+#include "strbuf.h"
+#include "simple-ipc.h"
+#include "parse-options.h"
+#include "thread-utils.h"
+#include "strvec.h"
+
+#ifndef SUPPORTS_SIMPLE_IPC
+int cmd__simple_ipc(int argc, const char **argv)
+{
+       die("simple IPC not available on this platform");
+}
+#else
+
+/*
+ * The test daemon defines an "application callback" that supports a
+ * series of commands (see `test_app_cb()`).
+ *
+ * Unknown commands are caught here and we send an error message back
+ * to the client process.
+ */
+static int app__unhandled_command(const char *command,
+                                 ipc_server_reply_cb *reply_cb,
+                                 struct ipc_server_reply_data *reply_data)
+{
+       struct strbuf buf = STRBUF_INIT;
+       int ret;
+
+       strbuf_addf(&buf, "unhandled command: %s", command);
+       ret = reply_cb(reply_data, buf.buf, buf.len);
+       strbuf_release(&buf);
+
+       return ret;
+}
+
+/*
+ * Reply with a single very large buffer.  This is to ensure that
+ * long response are properly handled -- whether the chunking occurs
+ * in the kernel or in the (probably pkt-line) layer.
+ */
+#define BIG_ROWS (10000)
+static int app__big_command(ipc_server_reply_cb *reply_cb,
+                           struct ipc_server_reply_data *reply_data)
+{
+       struct strbuf buf = STRBUF_INIT;
+       int row;
+       int ret;
+
+       for (row = 0; row < BIG_ROWS; row++)
+               strbuf_addf(&buf, "big: %.75d\n", row);
+
+       ret = reply_cb(reply_data, buf.buf, buf.len);
+       strbuf_release(&buf);
+
+       return ret;
+}
+
+/*
+ * Reply with a series of lines.  This is to ensure that we can incrementally
+ * compute the response and chunk it to the client.
+ */
+#define CHUNK_ROWS (10000)
+static int app__chunk_command(ipc_server_reply_cb *reply_cb,
+                             struct ipc_server_reply_data *reply_data)
+{
+       struct strbuf buf = STRBUF_INIT;
+       int row;
+       int ret;
+
+       for (row = 0; row < CHUNK_ROWS; row++) {
+               strbuf_setlen(&buf, 0);
+               strbuf_addf(&buf, "big: %.75d\n", row);
+               ret = reply_cb(reply_data, buf.buf, buf.len);
+       }
+
+       strbuf_release(&buf);
+
+       return ret;
+}
+
+/*
+ * Slowly reply with a series of lines.  This is to model an expensive to
+ * compute chunked response (which might happen if this callback is running
+ * in a thread and is fighting for a lock with other threads).
+ */
+#define SLOW_ROWS     (1000)
+#define SLOW_DELAY_MS (10)
+static int app__slow_command(ipc_server_reply_cb *reply_cb,
+                            struct ipc_server_reply_data *reply_data)
+{
+       struct strbuf buf = STRBUF_INIT;
+       int row;
+       int ret;
+
+       for (row = 0; row < SLOW_ROWS; row++) {
+               strbuf_setlen(&buf, 0);
+               strbuf_addf(&buf, "big: %.75d\n", row);
+               ret = reply_cb(reply_data, buf.buf, buf.len);
+               sleep_millisec(SLOW_DELAY_MS);
+       }
+
+       strbuf_release(&buf);
+
+       return ret;
+}
+
+/*
+ * The client sent a command followed by a (possibly very) large buffer.
+ */
+static int app__sendbytes_command(const char *received,
+                                 ipc_server_reply_cb *reply_cb,
+                                 struct ipc_server_reply_data *reply_data)
+{
+       struct strbuf buf_resp = STRBUF_INIT;
+       const char *p = "?";
+       int len_ballast = 0;
+       int k;
+       int errs = 0;
+       int ret;
+
+       if (skip_prefix(received, "sendbytes ", &p))
+               len_ballast = strlen(p);
+
+       /*
+        * Verify that the ballast is n copies of a single letter.
+        * And that the multi-threaded IO layer didn't cross the streams.
+        */
+       for (k = 1; k < len_ballast; k++)
+               if (p[k] != p[0])
+                       errs++;
+
+       if (errs)
+               strbuf_addf(&buf_resp, "errs:%d\n", errs);
+       else
+               strbuf_addf(&buf_resp, "rcvd:%c%08d\n", p[0], len_ballast);
+
+       ret = reply_cb(reply_data, buf_resp.buf, buf_resp.len);
+
+       strbuf_release(&buf_resp);
+
+       return ret;
+}
+
+/*
+ * An arbitrary fixed address to verify that the application instance
+ * data is handled properly.
+ */
+static int my_app_data = 42;
+
+static ipc_server_application_cb test_app_cb;
+
+/*
+ * This is the "application callback" that sits on top of the
+ * "ipc-server".  It completely defines the set of commands supported
+ * by this application.
+ */
+static int test_app_cb(void *application_data,
+                      const char *command,
+                      ipc_server_reply_cb *reply_cb,
+                      struct ipc_server_reply_data *reply_data)
+{
+       /*
+        * Verify that we received the application-data that we passed
+        * when we started the ipc-server.  (We have several layers of
+        * callbacks calling callbacks and it's easy to get things mixed
+        * up (especially when some are "void*").)
+        */
+       if (application_data != (void*)&my_app_data)
+               BUG("application_cb: application_data pointer wrong");
+
+       if (!strcmp(command, "quit")) {
+               /*
+                * The client sent a "quit" command.  This is an async
+                * request for the server to shutdown.
+                *
+                * We DO NOT send the client a response message
+                * (because we have nothing to say and the other
+                * server threads have not yet stopped).
+                *
+                * Tell the ipc-server layer to start shutting down.
+                * This includes: stop listening for new connections
+                * on the socket/pipe and telling all worker threads
+                * to finish/drain their outgoing responses to other
+                * clients.
+                *
+                * This DOES NOT force an immediate sync shutdown.
+                */
+               return SIMPLE_IPC_QUIT;
+       }
+
+       if (!strcmp(command, "ping")) {
+               const char *answer = "pong";
+               return reply_cb(reply_data, answer, strlen(answer));
+       }
+
+       if (!strcmp(command, "big"))
+               return app__big_command(reply_cb, reply_data);
+
+       if (!strcmp(command, "chunk"))
+               return app__chunk_command(reply_cb, reply_data);
+
+       if (!strcmp(command, "slow"))
+               return app__slow_command(reply_cb, reply_data);
+
+       if (starts_with(command, "sendbytes "))
+               return app__sendbytes_command(command, reply_cb, reply_data);
+
+       return app__unhandled_command(command, reply_cb, reply_data);
+}
+
+struct cl_args
+{
+       const char *subcommand;
+       const char *path;
+       const char *token;
+
+       int nr_threads;
+       int max_wait_sec;
+       int bytecount;
+       int batchsize;
+
+       char bytevalue;
+};
+
+static struct cl_args cl_args = {
+       .subcommand = NULL,
+       .path = "ipc-test",
+       .token = NULL,
+
+       .nr_threads = 5,
+       .max_wait_sec = 60,
+       .bytecount = 1024,
+       .batchsize = 10,
+
+       .bytevalue = 'x',
+};
+
+/*
+ * This process will run as a simple-ipc server and listen for IPC commands
+ * from client processes.
+ */
+static int daemon__run_server(void)
+{
+       int ret;
+
+       struct ipc_server_opts opts = {
+               .nr_threads = cl_args.nr_threads,
+       };
+
+       /*
+        * Synchronously run the ipc-server.  We don't need any application
+        * instance data, so pass an arbitrary pointer (that we'll later
+        * verify made the round trip).
+        */
+       ret = ipc_server_run(cl_args.path, &opts, test_app_cb, (void*)&my_app_data);
+       if (ret == -2)
+               error(_("socket/pipe already in use: '%s'"), cl_args.path);
+       else if (ret == -1)
+               error_errno(_("could not start server on: '%s'"), cl_args.path);
+
+       return ret;
+}
+
+#ifndef GIT_WINDOWS_NATIVE
+/*
+ * This is adapted from `daemonize()`.  Use `fork()` to directly create and
+ * run the daemon in a child process.
+ */
+static int spawn_server(pid_t *pid)
+{
+       struct ipc_server_opts opts = {
+               .nr_threads = cl_args.nr_threads,
+       };
+
+       *pid = fork();
+
+       switch (*pid) {
+       case 0:
+               if (setsid() == -1)
+                       error_errno(_("setsid failed"));
+               close(0);
+               close(1);
+               close(2);
+               sanitize_stdfds();
+
+               return ipc_server_run(cl_args.path, &opts, test_app_cb,
+                                     (void*)&my_app_data);
+
+       case -1:
+               return error_errno(_("could not spawn daemon in the background"));
+
+       default:
+               return 0;
+       }
+}
+#else
+/*
+ * Conceptually like `daemonize()` but different because Windows does not
+ * have `fork(2)`.  Spawn a normal Windows child process but without the
+ * limitations of `start_command()` and `finish_command()`.
+ */
+static int spawn_server(pid_t *pid)
+{
+       char test_tool_exe[MAX_PATH];
+       struct strvec args = STRVEC_INIT;
+       int in, out;
+
+       GetModuleFileNameA(NULL, test_tool_exe, MAX_PATH);
+
+       in = open("/dev/null", O_RDONLY);
+       out = open("/dev/null", O_WRONLY);
+
+       strvec_push(&args, test_tool_exe);
+       strvec_push(&args, "simple-ipc");
+       strvec_push(&args, "run-daemon");
+       strvec_pushf(&args, "--name=%s", cl_args.path);
+       strvec_pushf(&args, "--threads=%d", cl_args.nr_threads);
+
+       *pid = mingw_spawnvpe(args.v[0], args.v, NULL, NULL, in, out, out);
+       close(in);
+       close(out);
+
+       strvec_clear(&args);
+
+       if (*pid < 0)
+               return error(_("could not spawn daemon in the background"));
+
+       return 0;
+}
+#endif
+
+/*
+ * This is adapted from `wait_or_whine()`.  Watch the child process and
+ * let it get started and begin listening for requests on the socket
+ * before reporting our success.
+ */
+static int wait_for_server_startup(pid_t pid_child)
+{
+       int status;
+       pid_t pid_seen;
+       enum ipc_active_state s;
+       time_t time_limit, now;
+
+       time(&time_limit);
+       time_limit += cl_args.max_wait_sec;
+
+       for (;;) {
+               pid_seen = waitpid(pid_child, &status, WNOHANG);
+
+               if (pid_seen == -1)
+                       return error_errno(_("waitpid failed"));
+
+               else if (pid_seen == 0) {
+                       /*
+                        * The child is still running (this should be
+                        * the normal case).  Try to connect to it on
+                        * the socket and see if it is ready for
+                        * business.
+                        *
+                        * If there is another daemon already running,
+                        * our child will fail to start (possibly
+                        * after a timeout on the lock), but we don't
+                        * care (who responds) if the socket is live.
+                        */
+                       s = ipc_get_active_state(cl_args.path);
+                       if (s == IPC_STATE__LISTENING)
+                               return 0;
+
+                       time(&now);
+                       if (now > time_limit)
+                               return error(_("daemon not online yet"));
+
+                       continue;
+               }
+
+               else if (pid_seen == pid_child) {
+                       /*
+                        * The new child daemon process shutdown while
+                        * it was starting up, so it is not listening
+                        * on the socket.
+                        *
+                        * Try to ping the socket in the odd chance
+                        * that another daemon started (or was already
+                        * running) while our child was starting.
+                        *
+                        * Again, we don't care who services the socket.
+                        */
+                       s = ipc_get_active_state(cl_args.path);
+                       if (s == IPC_STATE__LISTENING)
+                               return 0;
+
+                       /*
+                        * We don't care about the WEXITSTATUS() nor
+                        * any of the WIF*(status) values because
+                        * `cmd__simple_ipc()` does the `!!result`
+                        * trick on all function return values.
+                        *
+                        * So it is sufficient to just report the
+                        * early shutdown as an error.
+                        */
+                       return error(_("daemon failed to start"));
+               }
+
+               else
+                       return error(_("waitpid is confused"));
+       }
+}
+
+/*
+ * This process will start a simple-ipc server in a background process and
+ * wait for it to become ready.  This is like `daemonize()` but gives us
+ * more control and better error reporting (and makes it easier to write
+ * unit tests).
+ */
+static int daemon__start_server(void)
+{
+       pid_t pid_child;
+       int ret;
+
+       /*
+        * Run the actual daemon in a background process.
+        */
+       ret = spawn_server(&pid_child);
+       if (pid_child <= 0)
+               return ret;
+
+       /*
+        * Let the parent wait for the child process to get started
+        * and begin listening for requests on the socket.
+        */
+       ret = wait_for_server_startup(pid_child);
+
+       return ret;
+}
+
+/*
+ * This process will run a quick probe to see if a simple-ipc server
+ * is active on this path.
+ *
+ * Returns 0 if the server is alive.
+ */
+static int client__probe_server(void)
+{
+       enum ipc_active_state s;
+
+       s = ipc_get_active_state(cl_args.path);
+       switch (s) {
+       case IPC_STATE__LISTENING:
+               return 0;
+
+       case IPC_STATE__NOT_LISTENING:
+               return error("no server listening at '%s'", cl_args.path);
+
+       case IPC_STATE__PATH_NOT_FOUND:
+               return error("path not found '%s'", cl_args.path);
+
+       case IPC_STATE__INVALID_PATH:
+               return error("invalid pipe/socket name '%s'", cl_args.path);
+
+       case IPC_STATE__OTHER_ERROR:
+       default:
+               return error("other error for '%s'", cl_args.path);
+       }
+}
+
+/*
+ * Send an IPC command token to an already-running server daemon and
+ * print the response.
+ *
+ * This is a simple 1 word command/token that `test_app_cb()` (in the
+ * daemon process) will understand.
+ */
+static int client__send_ipc(void)
+{
+       const char *command = "(no-command)";
+       struct strbuf buf = STRBUF_INIT;
+       struct ipc_client_connect_options options
+               = IPC_CLIENT_CONNECT_OPTIONS_INIT;
+
+       if (cl_args.token && *cl_args.token)
+               command = cl_args.token;
+
+       options.wait_if_busy = 1;
+       options.wait_if_not_found = 0;
+
+       if (!ipc_client_send_command(cl_args.path, &options, command, &buf)) {
+               if (buf.len) {
+                       printf("%s\n", buf.buf);
+                       fflush(stdout);
+               }
+               strbuf_release(&buf);
+
+               return 0;
+       }
+
+       return error("failed to send '%s' to '%s'", command, cl_args.path);
+}
+
+/*
+ * Send an IPC command to an already-running server and ask it to
+ * shutdown.  "send quit" is an async request and queues a shutdown
+ * event in the server, so we spin and wait here for it to actually
+ * shutdown to make the unit tests a little easier to write.
+ */
+static int client__stop_server(void)
+{
+       int ret;
+       time_t time_limit, now;
+       enum ipc_active_state s;
+
+       time(&time_limit);
+       time_limit += cl_args.max_wait_sec;
+
+       cl_args.token = "quit";
+
+       ret = client__send_ipc();
+       if (ret)
+               return ret;
+
+       for (;;) {
+               sleep_millisec(100);
+
+               s = ipc_get_active_state(cl_args.path);
+
+               if (s != IPC_STATE__LISTENING) {
+                       /*
+                        * The socket/pipe is gone and/or has stopped
+                        * responding.  Lets assume that the daemon
+                        * process has exited too.
+                        */
+                       return 0;
+               }
+
+               time(&now);
+               if (now > time_limit)
+                       return error(_("daemon has not shutdown yet"));
+       }
+}
+
+/*
+ * Send an IPC command followed by ballast to confirm that a large
+ * message can be sent and that the kernel or pkt-line layers will
+ * properly chunk it and that the daemon receives the entire message.
+ */
+static int do_sendbytes(int bytecount, char byte, const char *path,
+                       const struct ipc_client_connect_options *options)
+{
+       struct strbuf buf_send = STRBUF_INIT;
+       struct strbuf buf_resp = STRBUF_INIT;
+
+       strbuf_addstr(&buf_send, "sendbytes ");
+       strbuf_addchars(&buf_send, byte, bytecount);
+
+       if (!ipc_client_send_command(path, options, buf_send.buf, &buf_resp)) {
+               strbuf_rtrim(&buf_resp);
+               printf("sent:%c%08d %s\n", byte, bytecount, buf_resp.buf);
+               fflush(stdout);
+               strbuf_release(&buf_send);
+               strbuf_release(&buf_resp);
+
+               return 0;
+       }
+
+       return error("client failed to sendbytes(%d, '%c') to '%s'",
+                    bytecount, byte, path);
+}
+
+/*
+ * Send an IPC command with ballast to an already-running server daemon.
+ */
+static int client__sendbytes(void)
+{
+       struct ipc_client_connect_options options
+               = IPC_CLIENT_CONNECT_OPTIONS_INIT;
+
+       options.wait_if_busy = 1;
+       options.wait_if_not_found = 0;
+       options.uds_disallow_chdir = 0;
+
+       return do_sendbytes(cl_args.bytecount, cl_args.bytevalue, cl_args.path,
+                           &options);
+}
+
+struct multiple_thread_data {
+       pthread_t pthread_id;
+       struct multiple_thread_data *next;
+       const char *path;
+       int bytecount;
+       int batchsize;
+       int sum_errors;
+       int sum_good;
+       char letter;
+};
+
+static void *multiple_thread_proc(void *_multiple_thread_data)
+{
+       struct multiple_thread_data *d = _multiple_thread_data;
+       int k;
+       struct ipc_client_connect_options options
+               = IPC_CLIENT_CONNECT_OPTIONS_INIT;
+
+       options.wait_if_busy = 1;
+       options.wait_if_not_found = 0;
+       /*
+        * A multi-threaded client should not be randomly calling chdir().
+        * The test will pass without this restriction because the test is
+        * not otherwise accessing the filesystem, but it makes us honest.
+        */
+       options.uds_disallow_chdir = 1;
+
+       trace2_thread_start("multiple");
+
+       for (k = 0; k < d->batchsize; k++) {
+               if (do_sendbytes(d->bytecount + k, d->letter, d->path, &options))
+                       d->sum_errors++;
+               else
+                       d->sum_good++;
+       }
+
+       trace2_thread_exit();
+       return NULL;
+}
+
+/*
+ * Start a client-side thread pool.  Each thread sends a series of
+ * IPC requests.  Each request is on a new connection to the server.
+ */
+static int client__multiple(void)
+{
+       struct multiple_thread_data *list = NULL;
+       int k;
+       int sum_join_errors = 0;
+       int sum_thread_errors = 0;
+       int sum_good = 0;
+
+       for (k = 0; k < cl_args.nr_threads; k++) {
+               struct multiple_thread_data *d = xcalloc(1, sizeof(*d));
+               d->next = list;
+               d->path = cl_args.path;
+               d->bytecount = cl_args.bytecount + cl_args.batchsize*(k/26);
+               d->batchsize = cl_args.batchsize;
+               d->sum_errors = 0;
+               d->sum_good = 0;
+               d->letter = 'A' + (k % 26);
+
+               if (pthread_create(&d->pthread_id, NULL, multiple_thread_proc, d)) {
+                       warning("failed to create thread[%d] skipping remainder", k);
+                       free(d);
+                       break;
+               }
+
+               list = d;
+       }
+
+       while (list) {
+               struct multiple_thread_data *d = list;
+
+               if (pthread_join(d->pthread_id, NULL))
+                       sum_join_errors++;
+
+               sum_thread_errors += d->sum_errors;
+               sum_good += d->sum_good;
+
+               list = d->next;
+               free(d);
+       }
+
+       printf("client (good %d) (join %d), (errors %d)\n",
+              sum_good, sum_join_errors, sum_thread_errors);
+
+       return (sum_join_errors + sum_thread_errors) ? 1 : 0;
+}
+
+int cmd__simple_ipc(int argc, const char **argv)
+{
+       const char * const simple_ipc_usage[] = {
+               N_("test-helper simple-ipc is-active    [<name>] [<options>]"),
+               N_("test-helper simple-ipc run-daemon   [<name>] [<threads>]"),
+               N_("test-helper simple-ipc start-daemon [<name>] [<threads>] [<max-wait>]"),
+               N_("test-helper simple-ipc stop-daemon  [<name>] [<max-wait>]"),
+               N_("test-helper simple-ipc send         [<name>] [<token>]"),
+               N_("test-helper simple-ipc sendbytes    [<name>] [<bytecount>] [<byte>]"),
+               N_("test-helper simple-ipc multiple     [<name>] [<threads>] [<bytecount>] [<batchsize>]"),
+               NULL
+       };
+
+       const char *bytevalue = NULL;
+
+       struct option options[] = {
+#ifndef GIT_WINDOWS_NATIVE
+               OPT_STRING(0, "name", &cl_args.path, N_("name"), N_("name or pathname of unix domain socket")),
+#else
+               OPT_STRING(0, "name", &cl_args.path, N_("name"), N_("named-pipe name")),
+#endif
+               OPT_INTEGER(0, "threads", &cl_args.nr_threads, N_("number of threads in server thread pool")),
+               OPT_INTEGER(0, "max-wait", &cl_args.max_wait_sec, N_("seconds to wait for daemon to start or stop")),
+
+               OPT_INTEGER(0, "bytecount", &cl_args.bytecount, N_("number of bytes")),
+               OPT_INTEGER(0, "batchsize", &cl_args.batchsize, N_("number of requests per thread")),
+
+               OPT_STRING(0, "byte", &bytevalue, N_("byte"), N_("ballast character")),
+               OPT_STRING(0, "token", &cl_args.token, N_("token"), N_("command token to send to the server")),
+
+               OPT_END()
+       };
+
+       if (argc < 2)
+               usage_with_options(simple_ipc_usage, options);
+
+       if (argc == 2 && !strcmp(argv[1], "-h"))
+               usage_with_options(simple_ipc_usage, options);
+
+       if (argc == 2 && !strcmp(argv[1], "SUPPORTS_SIMPLE_IPC"))
+               return 0;
+
+       cl_args.subcommand = argv[1];
+
+       argc--;
+       argv++;
+
+       argc = parse_options(argc, argv, NULL, options, simple_ipc_usage, 0);
+
+       if (cl_args.nr_threads < 1)
+               cl_args.nr_threads = 1;
+       if (cl_args.max_wait_sec < 0)
+               cl_args.max_wait_sec = 0;
+       if (cl_args.bytecount < 1)
+               cl_args.bytecount = 1;
+       if (cl_args.batchsize < 1)
+               cl_args.batchsize = 1;
+
+       if (bytevalue && *bytevalue)
+               cl_args.bytevalue = bytevalue[0];
+
+       /*
+        * Use '!!' on all dispatch functions to map from `error()` style
+        * (returns -1) style to `test_must_fail` style (expects 1).  This
+        * makes shell error messages less confusing.
+        */
+
+       if (!strcmp(cl_args.subcommand, "is-active"))
+               return !!client__probe_server();
+
+       if (!strcmp(cl_args.subcommand, "run-daemon"))
+               return !!daemon__run_server();
+
+       if (!strcmp(cl_args.subcommand, "start-daemon"))
+               return !!daemon__start_server();
+
+       /*
+        * Client commands follow.  Ensure a server is running before
+        * sending any data.  This might be overkill, but then again
+        * this is a test harness.
+        */
+
+       if (!strcmp(cl_args.subcommand, "stop-daemon")) {
+               if (client__probe_server())
+                       return 1;
+               return !!client__stop_server();
+       }
+
+       if (!strcmp(cl_args.subcommand, "send")) {
+               if (client__probe_server())
+                       return 1;
+               return !!client__send_ipc();
+       }
+
+       if (!strcmp(cl_args.subcommand, "sendbytes")) {
+               if (client__probe_server())
+                       return 1;
+               return !!client__sendbytes();
+       }
+
+       if (!strcmp(cl_args.subcommand, "multiple")) {
+               if (client__probe_server())
+                       return 1;
+               return !!client__multiple();
+       }
+
+       die("Unhandled subcommand: '%s'", cl_args.subcommand);
+}
+#endif
index f97cd9f48a69048db519ffc0519a99559f543b31..287aa600230795251109c8053a80553b45aea8fe 100644 (file)
@@ -65,6 +65,7 @@ static struct test_cmd cmds[] = {
        { "sha1", cmd__sha1 },
        { "sha256", cmd__sha256 },
        { "sigchain", cmd__sigchain },
+       { "simple-ipc", cmd__simple_ipc },
        { "strcmp-offset", cmd__strcmp_offset },
        { "string-list", cmd__string_list },
        { "submodule-config", cmd__submodule_config },
index 28072c0ad5ab446eab4b37d915222b6768dc2e66..9ea4b31011ddae9810302bc0878e121217b56797 100644 (file)
@@ -55,6 +55,7 @@ int cmd__sha1(int argc, const char **argv);
 int cmd__oid_array(int argc, const char **argv);
 int cmd__sha256(int argc, const char **argv);
 int cmd__sigchain(int argc, const char **argv);
+int cmd__simple_ipc(int argc, const char **argv);
 int cmd__strcmp_offset(int argc, const char **argv);
 int cmd__string_list(int argc, const char **argv);
 int cmd__submodule_config(int argc, const char **argv);
index 823f33ceff4aadac07128786f01c8a38a223cdcf..f93633f895a1926aa6ea4ca712305cccb5826a2d 100644 (file)
@@ -198,6 +198,14 @@ static int ut_006data(int argc, const char **argv)
        return 0;
 }
 
+static int ut_007bug(int argc, const char **argv)
+{
+       /*
+        * Exercise BUG() to ensure that the message is printed to trace2.
+        */
+       BUG("the bug message");
+}
+
 /*
  * Usage:
  *     test-tool trace2 <ut_name_1> <ut_usage_1>
@@ -214,6 +222,7 @@ static struct unit_test ut_table[] = {
        { ut_004child,    "004child",  "[<child_command_line>]" },
        { ut_005exec,     "005exec",   "<git_command_args>" },
        { ut_006data,     "006data",   "[<category> <key> <value>]+" },
+       { ut_007bug,      "007bug",    "" },
 };
 /* clang-format on */
 
diff --git a/t/lib-bitmap.sh b/t/lib-bitmap.sh
new file mode 100644 (file)
index 0000000..fe3f98b
--- /dev/null
@@ -0,0 +1,26 @@
+# Compare a file containing rev-list bitmap traversal output to its non-bitmap
+# counterpart. You can't just use test_cmp for this, because the two produce
+# subtly different output:
+#
+#   - regular output is in traversal order, whereas bitmap is split by type,
+#     with non-packed objects at the end
+#
+#   - regular output has a space and the pathname appended to non-commit
+#     objects; bitmap output omits this
+#
+# This function normalizes and compares the two. The second file should
+# always be the bitmap output.
+test_bitmap_traversal () {
+       if test "$1" = "--no-confirm-bitmaps"
+       then
+               shift
+       elif cmp "$1" "$2"
+       then
+               echo >&2 "identical raw outputs; are you sure bitmaps were used?"
+               return 1
+       fi &&
+       cut -d' ' -f1 "$1" | sort >"$1.normalized" &&
+       sort "$2" >"$2.normalized" &&
+       test_cmp "$1.normalized" "$2.normalized" &&
+       rm -f "$1.normalized" "$2.normalized"
+}
similarity index 100%
rename from t/test-bundle-functions.sh
rename to t/lib-bundle.sh
index dea2cbef5172954666f9ee40142273252b6fe7a2..5ea8bc9f1dcfe644da4b9ce720f2a523ff172475 100644 (file)
@@ -20,7 +20,7 @@ check() {
                false
        fi &&
        test_cmp expect-stdout stdout &&
-       test_i18ncmp expect-stderr stderr
+       test_cmp expect-stderr stderr
 }
 
 read_chunk() {
similarity index 100%
rename from t/diff-lib.sh
rename to t/lib-diff.sh
similarity index 100%
rename from t/diff-lib/COPYING
rename to t/lib-diff/COPYING
similarity index 100%
rename from t/diff-lib/README
rename to t/lib-diff/README
similarity index 100%
rename from t/gitweb-lib.sh
rename to t/lib-gitweb.sh
index 1184cceef262283ac65c99985cf9f4ebb3edce68..bf952ef9204dbbff379803810d4ec8ef87749a35 100644 (file)
@@ -12,13 +12,13 @@ sanitize_log_output () {
 lib_test_cmp_graph () {
        git log --graph "$@" >output &&
        sed 's/ *$//' >output.sanitized <output &&
-       test_i18ncmp expect output.sanitized
+       test_cmp expect output.sanitized
 }
 
 lib_test_cmp_short_graph () {
        git log --graph --pretty=short "$@" >output &&
        sanitize_log_output >output.sanitized <output &&
-       test_i18ncmp expect output.sanitized
+       test_cmp expect output.sanitized
 }
 
 lib_test_cmp_colored_graph () {
index 172d7459ff09b7e619101e2f88e951babea0e9ce..dc75b834518c8f2d2e1cc9e54fdc8d6af2729125 100644 (file)
@@ -4,6 +4,7 @@
 #
 # - override the commit message with $FAKE_COMMIT_MESSAGE
 # - amend the commit message with $FAKE_COMMIT_AMEND
+# - copy the original commit message to a file with $FAKE_MESSAGE_COPY
 # - check that non-commit messages have a certain line count with $EXPECT_COUNT
 # - check the commit count in the commit message header with $EXPECT_HEADER_COUNT
 # - rewrite a rebase -i script as directed by $FAKE_LINES.
 #       specified line.
 #
 #   "<cmd> <lineno>" -- add a line with the specified command
-#       ("pick", "squash", "fixup", "edit", "reword" or "drop") and the
-#       SHA1 taken from the specified line.
+#       ("pick", "squash", "fixup"|"fixup_-C"|"fixup_-c", "edit", "reword" or "drop")
+#       and the SHA1 taken from the specified line.
 #
-#   "exec_cmd_with_args" -- add an "exec cmd with args" line.
+#   "_" -- add a space, like "fixup_-C" implies "fixup -C" and
+#       "exec_cmd_with_args" add an "exec cmd with args" line.
 #
 #   "#" -- Add a comment line.
 #
@@ -32,6 +34,7 @@ set_fake_editor () {
                        exit
                test -z "$FAKE_COMMIT_MESSAGE" || echo "$FAKE_COMMIT_MESSAGE" > "$1"
                test -z "$FAKE_COMMIT_AMEND" || echo "$FAKE_COMMIT_AMEND" >> "$1"
+               test -z "$FAKE_MESSAGE_COPY" || cat "$1" >"$FAKE_MESSAGE_COPY"
                exit
                ;;
        esac
@@ -50,6 +53,8 @@ set_fake_editor () {
                        action="$line";;
                exec_*|x_*|break|b)
                        echo "$line" | sed 's/_/ /g' >> "$1";;
+               merge_*|fixup_*)
+                       action=$(echo "$line" | sed 's/_/ /g');;
                "#")
                        echo '# comment' >> "$1";;
                ">")
index 982eb8e3a949a74e5c26a952a33364c25f6f5b74..72f5d0d3148943e3fa21fe7958cd71eafb97c802 100644 (file)
@@ -1,3 +1,4 @@
 /build/
 /test-results/
+/test-trace/
 /trash directory*/
index fcb0e8865e49335d5a9afe3941bcea2c58f4bcd8..2465770a7825b4f360d649df3684c5339c8ce657 100644 (file)
@@ -7,10 +7,10 @@ perf: pre-clean
        ./run
 
 pre-clean:
-       rm -rf test-results
+       rm -rf test-results test-trace
 
 clean:
-       rm -rf build "trash directory".* test-results
+       rm -rf build "trash directory".* test-results test-trace
 
 test-lint:
        $(MAKE) -C .. test-lint
index ce0c42cc9f72d6ff610c5fa0608353beb64fa3df..35c0cbdf49fbc14d659f9abff7e8624a6ae14cec 100755 (executable)
@@ -28,11 +28,18 @@ repack_into_n () {
                        push @commits, $_ if $. % 5 == 1;
                }
                print reverse @commits;
-       ' "$1" >pushes
+       ' "$1" >pushes &&
 
        # create base packfile
-       head -n 1 pushes |
-       git pack-objects --delta-base-offset --revs staging/pack
+       base_pack=$(
+               head -n 1 pushes |
+               git pack-objects --delta-base-offset --revs staging/pack
+       ) &&
+       test_export base_pack &&
+
+       # create an empty packfile
+       empty_pack=$(git pack-objects staging/pack </dev/null) &&
+       test_export empty_pack &&
 
        # and then incrementals between each pair of commits
        last= &&
@@ -49,6 +56,12 @@ repack_into_n () {
                last=$rev
        done <pushes &&
 
+       (
+               find staging -type f -name 'pack-*.pack' |
+                       xargs -n 1 basename | grep -v "$base_pack" &&
+               printf "^pack-%s.pack\n" $base_pack
+       ) >stdin.packs
+
        # and install the whole thing
        rm -f .git/objects/pack/* &&
        mv staging/* .git/objects/pack/
@@ -91,6 +104,23 @@ do
                  --reflog --indexed-objects --delta-base-offset \
                  --stdout </dev/null >/dev/null
        '
+
+       test_perf "repack with kept ($nr_packs)" '
+               git pack-objects --keep-true-parents \
+                 --keep-pack=pack-$empty_pack.pack \
+                 --honor-pack-keep --non-empty --all \
+                 --reflog --indexed-objects --delta-base-offset \
+                 --stdout </dev/null >/dev/null
+       '
+
+       test_perf "repack with --stdin-packs ($nr_packs)" '
+               git pack-objects \
+                 --keep-true-parents \
+                 --stdin-packs \
+                 --non-empty \
+                 --delta-base-offset \
+                 --stdout <stdin.packs >/dev/null
+       '
 done
 
 # Measure pack loading with 10,000 packs.
index b3e725f0310a7b4d8343089de922c7eb6d148a52..452be01056c6b4797958809036811984634ace7d 100755 (executable)
@@ -15,6 +15,12 @@ test_expect_success 'setup bitmap config' '
        git config pack.writebitmaps true
 '
 
+# we need to create the tag up front such that it is covered by the repack and
+# thus by generated bitmaps.
+test_expect_success 'create tags' '
+       git tag --message="tag pointing to HEAD" perf-tag HEAD
+'
+
 test_perf 'repack to disk' '
        git repack -ad
 '
@@ -43,6 +49,14 @@ test_perf 'rev-list (objects)' '
        git rev-list --all --use-bitmap-index --objects >/dev/null
 '
 
+test_perf 'rev-list with tag negated via --not --all (objects)' '
+       git rev-list perf-tag --not --all --use-bitmap-index --objects >/dev/null
+'
+
+test_perf 'rev-list with negative tag (objects)' '
+       git rev-list HEAD --not perf-tag --use-bitmap-index --objects >/dev/null
+'
+
 test_perf 'rev-list count with blob:none' '
        git rev-list --use-bitmap-index --count --objects --all \
                --filter=blob:none >/dev/null
index 1e20a184c70e67c51a5feb41baed92b987394173..5eb5044a103cabd1d3dba4980a00f0d66d4818a5 100755 (executable)
@@ -32,6 +32,8 @@ test_description="Test core.fsmonitor"
 #
 # GIT_PERF_7519_DROP_CACHE: if set, the OS caches are dropped between tests
 #
+# GIT_PERF_7519_TRACE: if set, enable trace logging during the test.
+#   Trace logs will be grouped by fsmonitor provider.
 
 test_perf_large_repo
 test_checkout_worktree
@@ -70,6 +72,32 @@ then
        fi
 fi
 
+trace_start() {
+       if test -n "$GIT_PERF_7519_TRACE"
+       then
+               name="$1"
+               TEST_TRACE_DIR="$TEST_OUTPUT_DIRECTORY/test-trace/p7519/"
+               echo "Writing trace logging to $TEST_TRACE_DIR"
+
+               mkdir -p "$TEST_TRACE_DIR"
+
+               # Start Trace2 logging and any other GIT_TRACE_* logs that you
+               # want for this named test case.
+
+               GIT_TRACE2_PERF="$TEST_TRACE_DIR/$name.trace2perf"
+               export GIT_TRACE2_PERF
+
+               >"$GIT_TRACE2_PERF"
+       fi
+}
+
+trace_stop() {
+       if test -n "$GIT_PERF_7519_TRACE"
+       then
+               unset GIT_TRACE2_PERF
+       fi
+}
+
 test_expect_success "one time repo setup" '
        # set untrackedCache depending on the environment
        if test -n "$GIT_PERF_7519_UNTRACKED_CACHE"
@@ -101,7 +129,7 @@ test_expect_success "one time repo setup" '
        # If Watchman exists, watch the work tree and attempt a query.
        if test_have_prereq WATCHMAN; then
                watchman watch "$GIT_WORK_TREE" &&
-               watchman watch-list | grep -q -F "$GIT_WORK_TREE"
+               watchman watch-list | grep -q -F "p7519-fsmonitor"
        fi
 '
 
@@ -169,8 +197,18 @@ test_fsmonitor_suite() {
                git status -uall
        '
 
+       # Update the mtimes on upto 100k files to make status think
+       # that they are dirty.  For simplicity, omit any files with
+       # LFs (i.e. anything that ls-files thinks it needs to dquote).
+       # Then fully backslash-quote the paths to capture any
+       # whitespace so that they pass thru xargs properly.
+       #
        test_perf_w_drop_caches "status (dirty) ($DESC)" '
-               git ls-files | head -100000 | xargs -d "\n" touch -h &&
+               git ls-files | \
+                       head -100000 | \
+                       grep -v \" | \
+                       sed '\''s/\(.\)/\\\1/g'\'' | \
+                       xargs test-tool chmtime -300 &&
                git status
        '
 
@@ -178,6 +216,10 @@ test_fsmonitor_suite() {
                git diff
        '
 
+       test_perf_w_drop_caches "diff HEAD ($DESC)" '
+               git diff HEAD
+       '
+
        test_perf_w_drop_caches "diff -- 0_files ($DESC)" '
                git diff -- 1_file
        '
@@ -203,6 +245,12 @@ test_fsmonitor_suite() {
        '
 }
 
+#
+# Run a full set of perf tests using each Hook-based fsmonitor provider,
+# such as Watchman.
+#
+
+trace_start fsmonitor-watchman
 if test -n "$GIT_PERF_7519_FSMONITOR"; then
        for INTEGRATION_PATH in $GIT_PERF_7519_FSMONITOR; do
                test_expect_success "setup for fsmonitor $INTEGRATION_PATH" 'setup_for_fsmonitor'
@@ -213,14 +261,6 @@ else
        test_fsmonitor_suite
 fi
 
-test_expect_success "setup without fsmonitor" '
-       unset INTEGRATION_SCRIPT &&
-       git config --unset core.fsmonitor &&
-       git update-index --no-fsmonitor
-'
-
-test_fsmonitor_suite
-
 if test_have_prereq WATCHMAN
 then
        watchman watch-del "$GIT_WORK_TREE" >/dev/null 2>&1 &&
@@ -229,5 +269,20 @@ then
        # preventing the removal of the trash directory
        watchman shutdown-server >/dev/null 2>&1
 fi
+trace_stop
+
+#
+# Run a full set of perf tests with the fsmonitor feature disabled.
+#
+
+trace_start fsmonitor-disabled
+test_expect_success "setup without fsmonitor" '
+       unset INTEGRATION_SCRIPT &&
+       git config --unset core.fsmonitor &&
+       git update-index --no-fsmonitor
+'
+
+test_fsmonitor_suite
+trace_stop
 
 test_done
index e385c6896fcf95b35ac3ed6ea6287fa4b6c4d1cd..601d9f67ddb048a006abd7804e43025f0481b311 100644 (file)
@@ -70,6 +70,19 @@ test_perf_do_repo_symlink_config_ () {
        test_have_prereq SYMLINKS || git config core.symlinks false
 }
 
+test_perf_copy_repo_contents () {
+       for stuff in "$1"/*
+       do
+               case "$stuff" in
+               */objects|*/hooks|*/config|*/commondir|*/gitdir|*/worktrees)
+                       ;;
+               *)
+                       cp -R "$stuff" "$repo/.git/" || exit 1
+                       ;;
+               esac
+       done
+}
+
 test_perf_create_repo_from () {
        test "$#" = 2 ||
        BUG "not 2 parameters to test-create-repo"
@@ -77,20 +90,20 @@ test_perf_create_repo_from () {
        source="$2"
        source_git="$("$MODERN_GIT" -C "$source" rev-parse --git-dir)"
        objects_dir="$("$MODERN_GIT" -C "$source" rev-parse --git-path objects)"
+       common_dir="$("$MODERN_GIT" -C "$source" rev-parse --git-common-dir)"
        mkdir -p "$repo/.git"
        (
                cd "$source" &&
                { cp -Rl "$objects_dir" "$repo/.git/" 2>/dev/null ||
                        cp -R "$objects_dir" "$repo/.git/"; } &&
-               for stuff in "$source_git"/*; do
-                       case "$stuff" in
-                               */objects|*/hooks|*/config|*/commondir)
-                                       ;;
-                               *)
-                                       cp -R "$stuff" "$repo/.git/" || exit 1
-                                       ;;
-                       esac
-               done
+
+               # common_dir must come first here, since we want source_git to
+               # take precedence and overwrite any overlapping files
+               test_perf_copy_repo_contents "$common_dir"
+               if test "$source_git" != "$common_dir"
+               then
+                       test_perf_copy_repo_contents "$source_git"
+               fi
        ) &&
        (
                cd "$repo" &&
index a6e570d674ac97c33396a605cbc752f9f121bb2e..705d62cc27a574a990978f786cf45c864ebffd50 100755 (executable)
@@ -271,7 +271,7 @@ test_expect_success 'pretend we have a mix of all possible results' '
        EOF
 '
 
-test_expect_success C_LOCALE_OUTPUT 'test --verbose' '
+test_expect_success 'test --verbose' '
        run_sub_test_lib_test_err \
                t1234-verbose "test verbose" --verbose <<-\EOF &&
        test_expect_success "passing test" true
index b660593c20f8d4012e8c81e2276004708c2a1259..1e4c672b84aa366de04969b3c3f073c1f02ce92f 100755 (executable)
@@ -4,12 +4,16 @@ test_description=gitattributes
 
 . ./test-lib.sh
 
-attr_check () {
+attr_check_basic () {
        path="$1" expect="$2" git_opts="$3" &&
 
        git $git_opts check-attr test -- "$path" >actual 2>err &&
        echo "$path: test: $expect" >expect &&
-       test_cmp expect actual &&
+       test_cmp expect actual
+}
+
+attr_check () {
+       attr_check_basic "$@" &&
        test_must_be_empty err
 }
 
@@ -331,7 +335,6 @@ test_expect_success 'binary macro expanded by -a' '
        test_cmp expect actual
 '
 
-
 test_expect_success 'query binary macro directly' '
        echo "file binary" >.gitattributes &&
        echo file: binary: set >expect &&
@@ -339,4 +342,31 @@ test_expect_success 'query binary macro directly' '
        test_cmp expect actual
 '
 
+test_expect_success SYMLINKS 'set up symlink tests' '
+       echo "* test" >attr &&
+       rm -f .gitattributes
+'
+
+test_expect_success SYMLINKS 'symlinks respected in core.attributesFile' '
+       test_when_finished "rm symlink" &&
+       ln -s attr symlink &&
+       test_config core.attributesFile "$(pwd)/symlink" &&
+       attr_check file set
+'
+
+test_expect_success SYMLINKS 'symlinks respected in info/attributes' '
+       test_when_finished "rm .git/info/attributes" &&
+       ln -s ../../attr .git/info/attributes &&
+       attr_check file set
+'
+
+test_expect_success SYMLINKS 'symlinks not respected in-tree' '
+       test_when_finished "rm -rf .gitattributes subdir" &&
+       ln -s attr .gitattributes &&
+       mkdir subdir &&
+       ln -s ../attr subdir/.gitattributes &&
+       attr_check_basic subdir/file unspecified &&
+       test_i18ngrep "unable to access.*gitattributes" err
+'
+
 test_done
index 75ee9a96b80bbad5506bc6961b23988358a65c8a..6b757d7169252b467ed18c4f209c0428e286bba3 100755 (executable)
@@ -11,7 +11,7 @@ check_relative() {
        echo "$t -> $2" >expect
        test_expect_${3:-success} "relative date ($2)" "
        test-tool date relative $t >actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
        "
 }
 
@@ -139,7 +139,7 @@ check_date_format_human() {
        echo "$t -> $2" >expect
        test_expect_success "human date $t" '
                test-tool date human $t >actual &&
-               test_i18ncmp expect actual
+               test_cmp expect actual
 '
 }
 
index 370a389e5c5c509b51189e23b81c6ce2d1b79a18..a594b4aa7d045cb0c03c0eea8591912ee052dca8 100755 (executable)
@@ -34,7 +34,7 @@ expect_from_stdin () {
 test_stderr () {
        expected="$1"
        expect_in stderr "$1" &&
-       test_i18ncmp "$HOME/expected-stderr" "$HOME/stderr"
+       test_cmp "$HOME/expected-stderr" "$HOME/stderr"
 }
 
 broken_c_unquote () {
@@ -865,4 +865,38 @@ test_expect_success 'info/exclude trumps core.excludesfile' '
        test_cmp expect actual
 '
 
+test_expect_success SYMLINKS 'set up ignore file for symlink tests' '
+       echo "*" >ignore &&
+       rm -f .gitignore .git/info/exclude
+'
+
+test_expect_success SYMLINKS 'symlinks respected in core.excludesFile' '
+       test_when_finished "rm symlink" &&
+       ln -s ignore symlink &&
+       test_config core.excludesFile "$(pwd)/symlink" &&
+       echo file >expect &&
+       git check-ignore file >actual 2>err &&
+       test_cmp expect actual &&
+       test_must_be_empty err
+'
+
+test_expect_success SYMLINKS 'symlinks respected in info/exclude' '
+       test_when_finished "rm .git/info/exclude" &&
+       ln -s ../../ignore .git/info/exclude &&
+       echo file >expect &&
+       git check-ignore file >actual 2>err &&
+       test_cmp expect actual &&
+       test_must_be_empty err
+'
+
+test_expect_success SYMLINKS 'symlinks not respected in-tree' '
+       test_when_finished "rm .gitignore" &&
+       ln -s ignore .gitignore &&
+       mkdir subdir &&
+       ln -s ignore subdir/.gitignore &&
+       test_must_fail git check-ignore subdir/file >actual 2>err &&
+       test_must_be_empty actual &&
+       test_i18ngrep "unable to access.*gitignore" err
+'
+
 test_done
index e8ef7300ecb8693367906d4c314797e5750bdf50..5679e29c62479c663446e76fbc587a2648efe601 100755 (executable)
@@ -55,7 +55,7 @@ test_expect_success "--help does not work for guides" "
                git: 'revisions' is not a git command. See 'git --help'.
        EOF
        test_must_fail git revisions --help 2>actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 "
 
 test_expect_success 'git help' '
index e03554d2f3457b354aa4035d446ffb856061e9a3..39e5e4b34f8729e361f7cc7801dadb4db6d6c76b 100755 (executable)
@@ -10,7 +10,7 @@ test_expect_success 'advice should be printed when config variable is unset' '
        hint: Disable this message with "git config advice.nestedTag false"
        EOF
        test-tool advise "This is a piece of advice" 2>actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success 'advice should be printed when config variable is set to true' '
@@ -20,7 +20,7 @@ test_expect_success 'advice should be printed when config variable is set to tru
        EOF
        test_config advice.nestedTag true &&
        test-tool advise "This is a piece of advice" 2>actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success 'advice should not be printed when config variable is set to false' '
index 375cf9439858d974b9db8f826062a9577d70af9d..f25ae8b5e1f34dd8e58bbe65ee171cbf5c8aa14b 100755 (executable)
@@ -87,10 +87,8 @@ test_expect_success 'safecrlf: print warning only once' '
        git commit -m "nowarn" &&
        for w in Oh here is CRLFQ in text; do echo $w; done | q_to_cr >doublewarn &&
        git add doublewarn 2>err &&
-       if test_have_prereq C_LOCALE_OUTPUT
-       then
-               test $(grep "CRLF will be replaced by LF" err | wc -l) = 1
-       fi
+       grep "CRLF will be replaced by LF" err >err.warnings &&
+       test_line_count = 1 err.warnings
 '
 
 
index e4c4de5c74563a6ded58c0f553d07a7e59cd2b78..b5749f327dd17bd4577fc3764e811020117cd9ef 100755 (executable)
@@ -34,7 +34,7 @@ filter_git () {
 # Compare two files and ensure that `clean` and `smudge` respectively are
 # called at least once if specified in the `expect` file. The actual
 # invocation count is not relevant because their number can vary.
-# c.f. http://lore.kernel.org/git/xmqqshv18i8i.fsf@gitster.mtv.corp.google.com/
+# c.f. https://lore.kernel.org/git/xmqqshv18i8i.fsf@gitster.mtv.corp.google.com/
 test_cmp_count () {
        expect=$1
        actual=$2
@@ -49,7 +49,7 @@ test_cmp_count () {
 
 # Compare two files but exclude all `clean` invocations because Git can
 # call `clean` zero or more times.
-# c.f. http://lore.kernel.org/git/xmqqshv18i8i.fsf@gitster.mtv.corp.google.com/
+# c.f. https://lore.kernel.org/git/xmqqshv18i8i.fsf@gitster.mtv.corp.google.com/
 test_cmp_exclude_clean () {
        expect=$1
        actual=$2
@@ -257,6 +257,30 @@ test_expect_success 'required filter clean failure' '
        test_must_fail git add test.fc
 '
 
+test_expect_success 'required filter with absent clean field' '
+       test_config filter.absentclean.smudge cat &&
+       test_config filter.absentclean.required true &&
+
+       echo "*.ac filter=absentclean" >.gitattributes &&
+
+       echo test >test.ac &&
+       test_must_fail git add test.ac 2>stderr &&
+       test_i18ngrep "fatal: test.ac: clean filter .absentclean. failed" stderr
+'
+
+test_expect_success 'required filter with absent smudge field' '
+       test_config filter.absentsmudge.clean cat &&
+       test_config filter.absentsmudge.required true &&
+
+       echo "*.as filter=absentsmudge" >.gitattributes &&
+
+       echo test >test.as &&
+       git add test.as &&
+       rm -f test.as &&
+       test_must_fail git checkout -- test.as 2>stderr &&
+       test_i18ngrep "fatal: test.as: smudge filter absentsmudge failed" stderr
+'
+
 test_expect_success 'filtering large input to small output should use little memory' '
        test_config filter.devnull.clean "cat >/dev/null" &&
        test_config filter.devnull.required true &&
@@ -956,4 +980,85 @@ test_expect_success PERL 'invalid file in delayed checkout' '
        grep "error: external filter .* signaled that .unfiltered. is now available although it has not been delayed earlier" git-stderr.log
 '
 
+for mode in 'case' 'utf-8'
+do
+       case "$mode" in
+       case)   dir='A' symlink='a' mode_prereq='CASE_INSENSITIVE_FS' ;;
+       utf-8)
+               dir=$(printf "\141\314\210") symlink=$(printf "\303\244")
+               mode_prereq='UTF8_NFD_TO_NFC' ;;
+       esac
+
+       test_expect_success PERL,SYMLINKS,$mode_prereq \
+       "delayed checkout with $mode-collision don't write to the wrong place" '
+               test_config_global filter.delay.process \
+                       "\"$TEST_ROOT/rot13-filter.pl\" --always-delay delayed.log clean smudge delay" &&
+               test_config_global filter.delay.required true &&
+
+               git init $mode-collision &&
+               (
+                       cd $mode-collision &&
+                       mkdir target-dir &&
+
+                       empty_oid=$(printf "" | git hash-object -w --stdin) &&
+                       symlink_oid=$(printf "%s" "$PWD/target-dir" | git hash-object -w --stdin) &&
+                       attr_oid=$(echo "$dir/z filter=delay" | git hash-object -w --stdin) &&
+
+                       cat >objs <<-EOF &&
+                       100644 blob $empty_oid  $dir/x
+                       100644 blob $empty_oid  $dir/y
+                       100644 blob $empty_oid  $dir/z
+                       120000 blob $symlink_oid        $symlink
+                       100644 blob $attr_oid   .gitattributes
+                       EOF
+
+                       git update-index --index-info <objs &&
+                       git commit -m "test commit"
+               ) &&
+
+               git clone $mode-collision $mode-collision-cloned &&
+               # Make sure z was really delayed
+               grep "IN: smudge $dir/z .* \\[DELAYED\\]" $mode-collision-cloned/delayed.log &&
+
+               # Should not create $dir/z at $symlink/z
+               test_path_is_missing $mode-collision/target-dir/z
+       '
+done
+
+test_expect_success PERL,SYMLINKS,CASE_INSENSITIVE_FS \
+"delayed checkout with submodule collision don't write to the wrong place" '
+       git init collision-with-submodule &&
+       (
+               cd collision-with-submodule &&
+               git config filter.delay.process "\"$TEST_ROOT/rot13-filter.pl\" --always-delay delayed.log clean smudge delay" &&
+               git config filter.delay.required true &&
+
+               # We need Git to treat the submodule "a" and the
+               # leading dir "A" as different paths in the index.
+               git config --local core.ignoreCase false &&
+
+               empty_oid=$(printf "" | git hash-object -w --stdin) &&
+               attr_oid=$(echo "A/B/y filter=delay" | git hash-object -w --stdin) &&
+               cat >objs <<-EOF &&
+               100644 blob $empty_oid  A/B/x
+               100644 blob $empty_oid  A/B/y
+               100644 blob $attr_oid   .gitattributes
+               EOF
+               git update-index --index-info <objs &&
+
+               git init a &&
+               mkdir target-dir &&
+               symlink_oid=$(printf "%s" "$PWD/target-dir" | git -C a hash-object -w --stdin) &&
+               echo "120000 blob $symlink_oid  b" >objs &&
+               git -C a update-index --index-info <objs &&
+               git -C a commit -m sub &&
+               git submodule add ./a &&
+               git commit -m super &&
+
+               git checkout --recurse-submodules . &&
+               grep "IN: smudge A/B/y .* \\[DELAYED\\]" delayed.log &&
+               test_path_is_missing target-dir/y
+       )
+'
+
 test_done
index cd32a82da5c3bc4ac5b6c1748ef3368ad6f4ca70..7bb93768f34e2625d54246d26525a5a8a1cc4d26 100644 (file)
@@ -2,9 +2,15 @@
 # Example implementation for the Git filter protocol version 2
 # See Documentation/gitattributes.txt, section "Filter Protocol"
 #
-# The first argument defines a debug log file that the script write to.
-# All remaining arguments define a list of supported protocol
-# capabilities ("clean", "smudge", etc).
+# Usage: rot13-filter.pl [--always-delay] <log path> <capabilities>
+#
+# Log path defines a debug log file that the script writes to. The
+# subsequent arguments define a list of supported protocol capabilities
+# ("clean", "smudge", etc).
+#
+# When --always-delay is given all pathnames with the "can-delay" flag
+# that don't appear on the list bellow are delayed with a count of 1
+# (see more below).
 #
 # This implementation supports special test cases:
 # (1) If data with the pathname "clean-write-fail.r" is processed with
@@ -53,6 +59,13 @@ use IO::File;
 use Git::Packet;
 
 my $MAX_PACKET_CONTENT_SIZE = 65516;
+
+my $always_delay = 0;
+if ( $ARGV[0] eq '--always-delay' ) {
+       $always_delay = 1;
+       shift @ARGV;
+}
+
 my $log_file                = shift @ARGV;
 my @capabilities            = @ARGV;
 
@@ -134,6 +147,8 @@ while (1) {
                        if ( $buffer eq "can-delay=1" ) {
                                if ( exists $DELAY{$pathname} and $DELAY{$pathname}{"requested"} == 0 ) {
                                        $DELAY{$pathname}{"requested"} = 1;
+                               } elsif ( !exists $DELAY{$pathname} and $always_delay ) {
+                                       $DELAY{$pathname} = { "requested" => 1, "count" => 1 };
                                }
                        } elsif ($buffer =~ /^(ref|treeish|blob)=/) {
                                print $debug " $buffer";
index 51f74a3ddf3fc9ee617134a0e947dfc60e23aba2..d24d5acfbc7947c97250da98d50b8612ef0da459 100755 (executable)
@@ -83,7 +83,7 @@ check_warning () {
        *) echo >&2 "Illegal 1": "$1" ; return false ;;
        esac
        grep "will be replaced by" "$2" | sed -e "s/\(.*\) in [^ ]*$/\1/" | uniq  >"$2".actual
-       test_i18ncmp "$2".expect "$2".actual
+       test_cmp "$2".expect "$2".actual
 }
 
 commit_check_warn () {
index 14cafc138b7875013afeee01d74dbbeb2e56d495..ad4746d899a48b6eef46f7690d291c0ec6411d5b 100755 (executable)
@@ -61,7 +61,7 @@ EOF
 test_expect_success 'test help' '
        test_must_fail test-tool parse-options -h >output 2>output.err &&
        test_must_be_empty output.err &&
-       test_i18ncmp expect output
+       test_cmp expect output
 '
 
 mv expect expect.err
@@ -84,7 +84,7 @@ check_unknown_i18n() {
        cat expect.err >>expect &&
        test_must_fail test-tool parse-options $* >output 2>output.err &&
        test_must_be_empty output &&
-       test_i18ncmp expect output.err
+       test_cmp expect output.err
 }
 
 test_expect_success 'OPT_BOOL() #1' 'check boolean: 1 --yes'
@@ -250,7 +250,7 @@ EOF
 test_expect_success 'detect possible typos' '
        test_must_fail test-tool parse-options -boolean >output 2>output.err &&
        test_must_be_empty output &&
-       test_i18ncmp typo.err output.err
+       test_cmp typo.err output.err
 '
 
 cat >typo.err <<\EOF
@@ -260,7 +260,7 @@ EOF
 test_expect_success 'detect possible typos' '
        test_must_fail test-tool parse-options -ambiguous >output 2>output.err &&
        test_must_be_empty output &&
-       test_i18ncmp typo.err output.err
+       test_cmp typo.err output.err
 '
 
 test_expect_success 'keep some options as arguments' '
diff --git a/t/t0052-simple-ipc.sh b/t/t0052-simple-ipc.sh
new file mode 100755 (executable)
index 0000000..ff98be3
--- /dev/null
@@ -0,0 +1,122 @@
+#!/bin/sh
+
+test_description='simple command server'
+
+. ./test-lib.sh
+
+test-tool simple-ipc SUPPORTS_SIMPLE_IPC || {
+       skip_all='simple IPC not supported on this platform'
+       test_done
+}
+
+stop_simple_IPC_server () {
+       test-tool simple-ipc stop-daemon
+}
+
+test_expect_success 'start simple command server' '
+       test_atexit stop_simple_IPC_server &&
+       test-tool simple-ipc start-daemon --threads=8 &&
+       test-tool simple-ipc is-active
+'
+
+test_expect_success 'simple command server' '
+       test-tool simple-ipc send --token=ping >actual &&
+       echo pong >expect &&
+       test_cmp expect actual
+'
+
+test_expect_success 'servers cannot share the same path' '
+       test_must_fail test-tool simple-ipc run-daemon &&
+       test-tool simple-ipc is-active
+'
+
+test_expect_success 'big response' '
+       test-tool simple-ipc send --token=big >actual &&
+       test_line_count -ge 10000 actual &&
+       grep -q "big: [0]*9999\$" actual
+'
+
+test_expect_success 'chunk response' '
+       test-tool simple-ipc send --token=chunk >actual &&
+       test_line_count -ge 10000 actual &&
+       grep -q "big: [0]*9999\$" actual
+'
+
+test_expect_success 'slow response' '
+       test-tool simple-ipc send --token=slow >actual &&
+       test_line_count -ge 100 actual &&
+       grep -q "big: [0]*99\$" actual
+'
+
+# Send an IPC with n=100,000 bytes of ballast.  This should be large enough
+# to force both the kernel and the pkt-line layer to chunk the message to the
+# daemon and for the daemon to receive it in chunks.
+#
+test_expect_success 'sendbytes' '
+       test-tool simple-ipc sendbytes --bytecount=100000 --byte=A >actual &&
+       grep "sent:A00100000 rcvd:A00100000" actual
+'
+
+# Start a series of <threads> client threads that each make <batchsize>
+# IPC requests to the server.  Each (<threads> * <batchsize>) request
+# will open a new connection to the server and randomly bind to a server
+# thread.  Each client thread exits after completing its batch.  So the
+# total number of live client threads will be smaller than the total.
+# Each request will send a message containing at least <bytecount> bytes
+# of ballast.  (Responses are small.)
+#
+# The purpose here is to test threading in the server and responding to
+# many concurrent client requests (regardless of whether they come from
+# 1 client process or many).  And to test that the server side of the
+# named pipe/socket is stable.  (On Windows this means that the server
+# pipe is properly recycled.)
+#
+# On Windows it also lets us adjust the connection timeout in the
+# `ipc_client_send_command()`.
+#
+# Note it is easy to drive the system into failure by requesting an
+# insane number of threads on client or server and/or increasing the
+# per-thread batchsize or the per-request bytecount (ballast).
+# On Windows these failures look like "pipe is busy" errors.
+# So I've chosen fairly conservative values for now.
+#
+# We expect output of the form "sent:<letter><length> ..."
+# With terms (7, 19, 13) we expect:
+#   <letter> in [A-G]
+#   <length> in [19+0 .. 19+(13-1)]
+# and (7 * 13) successful responses.
+#
+test_expect_success 'stress test threads' '
+       test-tool simple-ipc multiple \
+               --threads=7 \
+               --bytecount=19 \
+               --batchsize=13 \
+               >actual &&
+       test_line_count = 92 actual &&
+       grep "good 91" actual &&
+       grep "sent:A" <actual >actual_a &&
+       cat >expect_a <<-EOF &&
+               sent:A00000019 rcvd:A00000019
+               sent:A00000020 rcvd:A00000020
+               sent:A00000021 rcvd:A00000021
+               sent:A00000022 rcvd:A00000022
+               sent:A00000023 rcvd:A00000023
+               sent:A00000024 rcvd:A00000024
+               sent:A00000025 rcvd:A00000025
+               sent:A00000026 rcvd:A00000026
+               sent:A00000027 rcvd:A00000027
+               sent:A00000028 rcvd:A00000028
+               sent:A00000029 rcvd:A00000029
+               sent:A00000030 rcvd:A00000030
+               sent:A00000031 rcvd:A00000031
+       EOF
+       test_cmp expect_a actual_a
+'
+
+test_expect_success 'stop-daemon works' '
+       test-tool simple-ipc stop-daemon &&
+       test_must_fail test-tool simple-ipc is-active &&
+       test_must_fail test-tool simple-ipc send --token=ping
+'
+
+test_done
index 5a633690bffc8ac0783f668abb5a96af557515b3..9bf66c9e68dd7b99434dfeaa19a0cc8a7618f039 100755 (executable)
@@ -10,40 +10,36 @@ cache-tree extension.
 cmp_cache_tree () {
        test-tool dump-cache-tree | sed -e '/#(ref)/d' >actual &&
        sed "s/$OID_REGEX/SHA/" <actual >filtered &&
-       test_cmp "$1" filtered
+       test_cmp "$1" filtered &&
+       rm filtered
 }
 
 # We don't bother with actually checking the SHA1:
 # test-tool dump-cache-tree already verifies that all existing data is
 # correct.
-generate_expected_cache_tree_rec () {
-       dir="$1${1:+/}" &&
-       parent="$2" &&
-       # ls-files might have foo/bar, foo/bar/baz, and foo/bar/quux
-       # We want to count only foo because it's the only direct child
-       git ls-files >files &&
-       subtrees=$(grep / files|cut -d / -f 1|uniq) &&
-       subtree_count=$(echo "$subtrees"|awk -v c=0 '$1 != "" {++c} END {print c}') &&
-       entries=$(wc -l <files) &&
-       printf "SHA $dir (%d entries, %d subtrees)\n" "$entries" "$subtree_count" &&
-       for subtree in $subtrees
-       do
-               cd "$subtree"
-               generate_expected_cache_tree_rec "$dir$subtree" "$dir" || return 1
-               cd ..
-       done &&
-       dir=$parent
-}
-
 generate_expected_cache_tree () {
-       (
-               generate_expected_cache_tree_rec
-       )
+       pathspec="$1" &&
+       dir="$2${2:+/}" &&
+       git ls-tree --name-only HEAD -- "$pathspec" >files &&
+       git ls-tree --name-only -d HEAD -- "$pathspec" >subtrees &&
+       printf "SHA %s (%d entries, %d subtrees)\n" "$dir" $(wc -l <files) $(wc -l <subtrees) &&
+       while read subtree
+       do
+               generate_expected_cache_tree "$pathspec/$subtree/" "$subtree" || return 1
+       done <subtrees
 }
 
 test_cache_tree () {
-       generate_expected_cache_tree >expect &&
-       cmp_cache_tree expect
+       generate_expected_cache_tree "." >expect &&
+       cmp_cache_tree expect &&
+       rm expect actual files subtrees &&
+       git status --porcelain -- ':!status' ':!expected.status' >status &&
+       if test -n "$1"
+       then
+               test_cmp "$1" status
+       else
+               test_must_be_empty status
+       fi
 }
 
 test_invalid_cache_tree () {
@@ -54,7 +50,7 @@ test_invalid_cache_tree () {
 }
 
 test_no_cache_tree () {
-       >expect &&
+       >expect &&
        cmp_cache_tree expect
 }
 
@@ -83,18 +79,6 @@ test_expect_success 'git-add in subdir invalidates cache-tree' '
        test_invalid_cache_tree
 '
 
-cat >before <<\EOF
-SHA  (3 entries, 2 subtrees)
-SHA dir1/ (1 entries, 0 subtrees)
-SHA dir2/ (1 entries, 0 subtrees)
-EOF
-
-cat >expect <<\EOF
-invalid                                   (2 subtrees)
-invalid                                  dir1/ (0 subtrees)
-SHA dir2/ (1 entries, 0 subtrees)
-EOF
-
 test_expect_success 'git-add in subdir does not invalidate sibling cache-tree' '
        git tag no-children &&
        test_when_finished "git reset --hard no-children; git read-tree HEAD" &&
@@ -102,9 +86,20 @@ test_expect_success 'git-add in subdir does not invalidate sibling cache-tree' '
        test_commit dir1/a &&
        test_commit dir2/b &&
        echo "I changed this file" >dir1/a &&
+       test_when_finished "rm before" &&
+       cat >before <<-\EOF &&
+       SHA  (3 entries, 2 subtrees)
+       SHA dir1/ (1 entries, 0 subtrees)
+       SHA dir2/ (1 entries, 0 subtrees)
+       EOF
        cmp_cache_tree before &&
        echo "I changed this file" >dir1/a &&
        git add dir1/a &&
+       cat >expect <<-\EOF &&
+       invalid                                   (2 subtrees)
+       invalid                                  dir1/ (0 subtrees)
+       SHA dir2/ (1 entries, 0 subtrees)
+       EOF
        cmp_cache_tree expect
 '
 
@@ -133,6 +128,7 @@ test_expect_success 'second commit has cache-tree' '
 '
 
 test_expect_success PERL 'commit --interactive gives cache-tree on partial commit' '
+       test_when_finished "git reset --hard" &&
        cat <<-\EOT >foo.c &&
        int foo()
        {
@@ -159,7 +155,10 @@ test_expect_success PERL 'commit --interactive gives cache-tree on partial commi
        EOT
        test_write_lines p 1 "" s n y q |
        git commit --interactive -m foo &&
-       test_cache_tree
+       cat <<-\EOF >expected.status &&
+        M foo.c
+       EOF
+       test_cache_tree expected.status
 '
 
 test_expect_success PERL 'commit -p with shrinking cache-tree' '
@@ -250,7 +249,10 @@ test_expect_success 'partial commit gives cache-tree' '
        git add one.t &&
        echo "some other change" >two.t &&
        git commit two.t -m partial &&
-       test_cache_tree
+       cat <<-\EOF >expected.status &&
+       M  one.t
+       EOF
+       test_cache_tree expected.status
 '
 
 test_expect_success 'no phantom error when switching trees' '
index 90da1c7ddc41b73dc07b4433255d3b0ffd66bd5d..6c74df0dc67e575d171c8ad4a4ab57465b1e622c 100755 (executable)
@@ -18,7 +18,7 @@ test_expect_success 'sanity: $GIT_INTERNAL_GETTEXT_TEST_FALLBACKS is set' '
     test -n "$GIT_INTERNAL_GETTEXT_TEST_FALLBACKS"
 '
 
-test_expect_success C_LOCALE_OUTPUT 'sanity: $GIT_INTERNAL_GETTEXT_SH_SCHEME" is fallthrough' '
+test_expect_success 'sanity: $GIT_INTERNAL_GETTEXT_SH_SCHEME" is fallthrough' '
     echo fallthrough >expect &&
     echo $GIT_INTERNAL_GETTEXT_SH_SCHEME >actual &&
     test_cmp expect actual
@@ -27,25 +27,25 @@ test_expect_success C_LOCALE_OUTPUT 'sanity: $GIT_INTERNAL_GETTEXT_SH_SCHEME" is
 test_expect_success 'gettext: our gettext() fallback has pass-through semantics' '
     printf "test" >expect &&
     gettext "test" >actual &&
-    test_i18ncmp expect actual &&
+    test_cmp expect actual &&
     printf "test more words" >expect &&
     gettext "test more words" >actual &&
-    test_i18ncmp expect actual
+    test_cmp expect actual
 '
 
 test_expect_success 'eval_gettext: our eval_gettext() fallback has pass-through semantics' '
     printf "test" >expect &&
     eval_gettext "test" >actual &&
-    test_i18ncmp expect actual &&
+    test_cmp expect actual &&
     printf "test more words" >expect &&
     eval_gettext "test more words" >actual &&
-    test_i18ncmp expect actual
+    test_cmp expect actual
 '
 
 test_expect_success 'eval_gettext: our eval_gettext() fallback can interpolate variables' '
     printf "test YesPlease" >expect &&
     GIT_INTERNAL_GETTEXT_TEST_FALLBACKS=YesPlease eval_gettext "test \$GIT_INTERNAL_GETTEXT_TEST_FALLBACKS" >actual &&
-    test_i18ncmp expect actual
+    test_cmp expect actual
 '
 
 test_expect_success 'eval_gettext: our eval_gettext() fallback can interpolate variables with spaces' '
@@ -53,7 +53,7 @@ test_expect_success 'eval_gettext: our eval_gettext() fallback can interpolate v
     export cmdline &&
     printf "When you have resolved this problem, run git am --resolved." >expect &&
     eval_gettext "When you have resolved this problem, run \$cmdline --resolved." >actual &&
-    test_i18ncmp expect actual
+    test_cmp expect actual
 '
 
 test_expect_success 'eval_gettext: our eval_gettext() fallback can interpolate variables with spaces and quotes' '
@@ -61,7 +61,7 @@ test_expect_success 'eval_gettext: our eval_gettext() fallback can interpolate v
     export cmdline &&
     printf "When you have resolved this problem, run \"git am --resolved\"." >expect &&
     eval_gettext "When you have resolved this problem, run \"\$cmdline --resolved\"." >actual &&
-    test_i18ncmp expect actual
+    test_cmp expect actual
 '
 
 test_done
index ce7574edb1e772fca30044ceb8a7cf3ac2e19470..0cf3a63b75b7c1e5c121787b5d612cd49a89ef71 100755 (executable)
@@ -147,6 +147,25 @@ test_expect_success 'normal stream, error event' '
        test_cmp expect actual
 '
 
+# Verb 007bug
+#
+# Check that BUG writes to trace2
+
+test_expect_success 'BUG messages are written to trace2' '
+       test_when_finished "rm trace.normal actual expect" &&
+       test_must_fail env GIT_TRACE2="$(pwd)/trace.normal" test-tool trace2 007bug &&
+       perl "$TEST_DIRECTORY/t0210/scrub_normal.perl" <trace.normal >actual &&
+       cat >expect <<-EOF &&
+               version $V
+               start _EXE_ trace2 007bug
+               cmd_name trace2 (trace2)
+               error the bug message
+               exit elapsed:_TIME_ code:99
+               atexit elapsed:_TIME_ code:99
+       EOF
+       test_cmp expect actual
+'
+
 sane_unset GIT_TRACE2_BRIEF
 
 # Now test without environment variables and get all Trace2 settings
index a18f8a473bfc667023c433a6c55c05defcc2e9f0..3485c0534e6d39be9ef6f285fa2ec80400dc47cd 100755 (executable)
@@ -578,7 +578,7 @@ test_expect_success 'helpers can abort the process' '
        quit: host=example.com
        fatal: credential helper '\''quit'\'' told us to quit
        EOF
-       test_i18ncmp expect stderr
+       test_cmp expect stderr
 '
 
 test_expect_success 'empty helper spec resets helper list' '
@@ -606,7 +606,7 @@ test_expect_success 'url parser rejects embedded newlines' '
        warning: url contains a newline in its path component: https://one.example.com?%0ahost=two.example.com/
        fatal: credential url cannot be parsed: https://one.example.com?%0ahost=two.example.com/
        EOF
-       test_i18ncmp expect stderr
+       test_cmp expect stderr
 '
 
 test_expect_success 'host-less URLs are parsed as empty host' '
@@ -633,7 +633,7 @@ test_expect_success 'credential system refuses to work with missing host' '
        cat >expect <<-\EOF &&
        fatal: refusing to work with credential missing host field
        EOF
-       test_i18ncmp expect stderr
+       test_cmp expect stderr
 '
 
 test_expect_success 'credential system refuses to work with missing protocol' '
@@ -643,7 +643,7 @@ test_expect_success 'credential system refuses to work with missing protocol' '
        cat >expect <<-\EOF &&
        fatal: refusing to work with credential missing protocol field
        EOF
-       test_i18ncmp expect stderr
+       test_cmp expect stderr
 '
 
 # usage: check_host_and_path <url> <expected-host> <expected-path>
index 84cce345e7dd3d9d704c064ab49cc726c4c7af32..22058b503ac78c41f542eb02a5a3dbd1cb200d3e 100755 (executable)
@@ -29,7 +29,7 @@ test_expect_success 'simple progress display' '
        test-tool progress "Working hard" <in 2>stderr &&
 
        show_cr <stderr >out &&
-       test_i18ncmp expect out
+       test_cmp expect out
 '
 
 test_expect_success 'progress display with total' '
@@ -48,7 +48,7 @@ test_expect_success 'progress display with total' '
        test-tool progress --total=3 "Working hard" <in 2>stderr &&
 
        show_cr <stderr >out &&
-       test_i18ncmp expect out
+       test_cmp expect out
 '
 
 test_expect_success 'progress display breaks long lines #1' '
@@ -72,7 +72,7 @@ EOF
                <in 2>stderr &&
 
        show_cr <stderr >out &&
-       test_i18ncmp expect out
+       test_cmp expect out
 '
 
 test_expect_success 'progress display breaks long lines #2' '
@@ -100,7 +100,7 @@ EOF
                <in 2>stderr &&
 
        show_cr <stderr >out &&
-       test_i18ncmp expect out
+       test_cmp expect out
 '
 
 test_expect_success 'progress display breaks long lines #3 - even the first is too long' '
@@ -126,7 +126,7 @@ EOF
                <in 2>stderr &&
 
        show_cr <stderr >out &&
-       test_i18ncmp expect out
+       test_cmp expect out
 '
 
 test_expect_success 'progress display breaks long lines #4 - title line matches terminal width' '
@@ -150,7 +150,7 @@ EOF
                <in 2>stderr &&
 
        show_cr <stderr >out &&
-       test_i18ncmp expect out
+       test_cmp expect out
 '
 
 # Progress counter goes backwards, this should not happen in practice.
@@ -172,7 +172,7 @@ test_expect_success 'progress shortens - crazy caller' '
        test-tool progress --total=1000 "Working hard" <in 2>stderr &&
 
        show_cr <stderr >out &&
-       test_i18ncmp expect out
+       test_cmp expect out
 '
 
 test_expect_success 'progress display with throughput' '
@@ -201,7 +201,7 @@ test_expect_success 'progress display with throughput' '
        test-tool progress "Working hard" <in 2>stderr &&
 
        show_cr <stderr >out &&
-       test_i18ncmp expect out
+       test_cmp expect out
 '
 
 test_expect_success 'progress display with throughput and total' '
@@ -226,7 +226,7 @@ test_expect_success 'progress display with throughput and total' '
        test-tool progress --total=40 "Working hard" <in 2>stderr &&
 
        show_cr <stderr >out &&
-       test_i18ncmp expect out
+       test_cmp expect out
 '
 
 test_expect_success 'cover up after throughput shortens' '
@@ -255,7 +255,7 @@ test_expect_success 'cover up after throughput shortens' '
        test-tool progress "Working hard" <in 2>stderr &&
 
        show_cr <stderr >out &&
-       test_i18ncmp expect out
+       test_cmp expect out
 '
 
 test_expect_success 'cover up after throughput shortens a lot' '
@@ -280,7 +280,7 @@ test_expect_success 'cover up after throughput shortens a lot' '
        test-tool progress "Working hard" <in 2>stderr &&
 
        show_cr <stderr >out &&
-       test_i18ncmp expect out
+       test_cmp expect out
 '
 
 test_expect_success 'progress generates traces' '
index dfe9794a74081dc4534966cc68ee64dd4fed9a92..24092c09a95771df742337e8d6c1c9eac77221ba 100755 (executable)
@@ -253,7 +253,7 @@ warning: The following paths were already present and thus not updated despite s
 
 After fixing the above paths, you may want to run `git sparse-checkout reapply`.
 EOF
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 test_expect_success 'checkout without --ignore-skip-worktree-bits' '
index 936d72041babf0b07d65f47ba12fe59c7e07b48e..e0dd5d65cedadbab2a5d4aa9c0697b346374612b 100755 (executable)
@@ -675,6 +675,13 @@ test_expect_success 'invalid unit' '
        test_i18ngrep "bad numeric config value .1auto. for .aninvalid.unit. in file .git/config: invalid unit" actual
 '
 
+test_expect_success 'invalid unit boolean' '
+       git config commit.gpgsign "1true" &&
+       test_cmp_config 1true commit.gpgsign &&
+       test_must_fail git config --bool --get commit.gpgsign 2>actual &&
+       test_i18ngrep "bad boolean config value .1true. for .commit.gpgsign." actual
+'
+
 test_expect_success 'line number is reported correctly' '
        printf "[bool]\n\tvar\n" >invalid &&
        test_must_fail git config -f invalid --path bool.var 2>actual &&
index 3a527e3a8438a583bfd8704ad23f9ae2e48ac382..88b119a0a35dc6608a789b0415a97650c88b2e19 100755 (executable)
@@ -208,14 +208,14 @@ test_expect_success 'proper error on error in default config files' '
        echo "[" >>.git/config &&
        echo "fatal: bad config line 34 in file .git/config" >expect &&
        test_expect_code 128 test-tool config get_value foo.bar 2>actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success 'proper error on error in custom config files' '
        echo "[" >>syntax-error &&
        echo "fatal: bad config line 1 in file syntax-error" >expect &&
        test_expect_code 128 test-tool config configset_get_value foo.bar syntax-error 2>actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success 'check line errors for malformed values' '
index 359d8731c8f097cf015a304f1f4f01d3794c7b56..e31f65f381c9bdbdc3a9dc4c10a90e5051cf9bc6 100755 (executable)
@@ -374,7 +374,7 @@ test_expect_success 'Query "main@{May 25 2005}" (before history)' '
        echo "$C" >expect &&
        test_cmp expect o &&
        echo "warning: log for '\''main'\'' only goes back to $ed" >expect &&
-       test_i18ncmp expect e
+       test_cmp expect e
 '
 test_expect_success 'Query main@{2005-05-25} (before history)' '
        test_when_finished "rm -f o e" &&
@@ -382,7 +382,7 @@ test_expect_success 'Query main@{2005-05-25} (before history)' '
        echo "$C" >expect &&
        test_cmp expect o &&
        echo "warning: log for '\''main'\'' only goes back to $ed" >expect &&
-       test_i18ncmp expect e
+       test_cmp expect e
 '
 test_expect_success 'Query "main@{May 26 2005 23:31:59}" (1 second before history)' '
        test_when_finished "rm -f o e" &&
@@ -390,7 +390,7 @@ test_expect_success 'Query "main@{May 26 2005 23:31:59}" (1 second before histor
        echo "$C" >expect &&
        test_cmp expect o &&
        echo "warning: log for '\''main'\'' only goes back to $ed" >expect &&
-       test_i18ncmp expect e
+       test_cmp expect e
 '
 test_expect_success 'Query "main@{May 26 2005 23:32:00}" (exactly history start)' '
        test_when_finished "rm -f o e" &&
index 2d142e5535e5abfbeb2c8dbc68c5e9de9e2d92cd..8b51c4efc1359dacd1b760897e48c264b965f861 100755 (executable)
@@ -101,7 +101,7 @@ df_test() {
                printf "%s\n" "delete $delname" "create $addname $D"
        fi >commands &&
        test_must_fail git update-ref --stdin <commands 2>output.err &&
-       test_i18ncmp expected-err output.err &&
+       test_cmp expected-err output.err &&
        printf "%s\n" "$C $delref" >expected-refs &&
        git for-each-ref --format="%(objectname) %(refname)" $prefix/r >actual-refs &&
        test_cmp expected-refs actual-refs
index ecccaa063453642a24a8ce364a5c73262226f868..27b9080251a91b2f7031f3ccb6f9bafcbb9c5d22 100755 (executable)
@@ -158,6 +158,32 @@ test_expect_success 'reflog expire' '
        check_fsck "dangling commit $K"
 '
 
+test_expect_success '--stale-fix handles missing objects generously' '
+       git -c core.logAllRefUpdates=false fast-import --date-format=now <<-EOS &&
+       commit refs/heads/stale-fix
+       mark :1
+       committer Author <a@uth.or> now
+       data <<EOF
+       start stale fix
+       EOF
+       M 100644 inline file
+       data <<EOF
+       contents
+       EOF
+       commit refs/heads/stale-fix
+       committer Author <a@uth.or> now
+       data <<EOF
+       stale fix branch tip
+       EOF
+       from :1
+       EOS
+
+       parent_oid=$(git rev-parse stale-fix^) &&
+       test_when_finished "recover $parent_oid" &&
+       corrupt $parent_oid &&
+       git reflog expire --stale-fix
+'
+
 test_expect_success 'prune and fsck' '
 
        git prune &&
index 354902e514f964194828dbbe04d9d0d81dc50d85..b1839e08771d4162db11f2b6b6eabd33da10b275 100755 (executable)
@@ -125,7 +125,7 @@ test_expect_success 'push cannot create a badly named ref' '
        ! grep -e "broken\.\.\.ref" output
 '
 
-test_expect_failure C_LOCALE_OUTPUT 'push --mirror can delete badly named ref' '
+test_expect_failure 'push --mirror can delete badly named ref' '
        top=$(pwd) &&
        git init src &&
        git init dest &&
index a30fc5f74a95063da9d60703f09b4c6de88f5d52..5071ac63a5b51b89c973456211ce3aaac3587553 100755 (executable)
@@ -40,17 +40,13 @@ test_expect_success 'HEAD is part of refs, valid objects appear valid' '
 # specific corruption you test afterwards, lest a later test trip over
 # it.
 
-test_expect_success 'setup: helpers for corruption tests' '
-       sha1_file() {
-               remainder=${1#??} &&
-               firsttwo=${1%$remainder} &&
-               echo ".git/objects/$firsttwo/$remainder"
-       } &&
+sha1_file () {
+       git rev-parse --git-path objects/$(test_oid_to_path "$1")
+}
 
-       remove_object() {
-               rm "$(sha1_file "$1")"
-       }
-'
+remove_object () {
+       rm "$(sha1_file "$1")"
+}
 
 test_expect_success 'object with bad sha1' '
        sha=$(echo blob | git hash-object -w --stdin) &&
@@ -380,7 +376,7 @@ test_expect_success 'tag with incorrect tag name & missing tagger' '
        warning in tag $tag: badTagName: invalid '\''tag'\'' name: wrong name format
        warning in tag $tag: missingTaggerEntry: invalid format - expected '\''tagger'\'' line
        EOF
-       test_i18ncmp expect out
+       test_cmp expect out
 '
 
 test_expect_success 'tag with bad tagger' '
@@ -662,13 +658,15 @@ test_expect_success 'fsck --name-objects' '
        git init name-objects &&
        (
                cd name-objects &&
+               git config core.logAllRefUpdates false &&
                test_commit julius caesar.t &&
-               test_commit augustus &&
-               test_commit caesar &&
+               test_commit augustus44 &&
+               test_commit caesar  &&
                remove_object $(git rev-parse julius:caesar.t) &&
-               test_must_fail git fsck --name-objects >out &&
                tree=$(git rev-parse --verify julius:) &&
-               test_i18ngrep "$tree (refs/tags/julius:" out
+               git tag -d julius &&
+               test_must_fail git fsck --name-objects >out &&
+               test_i18ngrep "$tree (refs/tags/augustus44\\^:" out
        )
 '
 
@@ -806,7 +804,7 @@ test_expect_success 'fsck notices dangling objects' '
                git fsck >actual &&
                # the output order is non-deterministic, as it comes from a hash
                sort <actual >actual.sorted &&
-               test_i18ncmp expect actual.sorted
+               test_cmp expect actual.sorted
        )
 '
 
@@ -816,7 +814,7 @@ test_expect_success 'fsck --connectivity-only notices dangling objects' '
                git fsck --connectivity-only >actual &&
                # the output order is non-deterministic, as it comes from a hash
                sort <actual >actual.sorted &&
-               test_i18ncmp expect actual.sorted
+               test_cmp expect actual.sorted
        )
 '
 
index abdda360d5258daf5c97184c900ace674534537f..deae916707f0c1fea99c929ad0863b4aabf86457 100755 (executable)
@@ -243,4 +243,19 @@ test_expect_success 'showing the superproject correctly' '
        test_cmp expect out
 '
 
+# at least one external project depends on this behavior:
+test_expect_success 'rev-parse --since= unsqueezed ordering' '
+       x1=--since=1970-01-01T00:00:01Z &&
+       x2=--since=1970-01-01T00:00:02Z &&
+       x3=--since=1970-01-01T00:00:03Z &&
+       git rev-parse $x1 $x1 $x3 $x2 >actual &&
+       cat >expect <<-EOF &&
+       --max-age=1
+       --max-age=1
+       --max-age=3
+       --max-age=2
+       EOF
+       test_cmp expect actual
+'
+
 test_done
index a859abedf5820da7fd2a2457c6d19b213ff78784..b29563fc9973aad63a313cbb94f239d2365ee0d8 100755 (executable)
@@ -95,7 +95,7 @@ test_expect_success 'test --parseopt help output' '
 |EOF
 END_EXPECT
        test_expect_code 129 git rev-parse --parseopt -- -h > output < optionspec &&
-       test_i18ncmp expect output
+       test_cmp expect output
 '
 
 test_expect_success 'test --parseopt help output no switches' '
@@ -108,7 +108,7 @@ test_expect_success 'test --parseopt help output no switches' '
 |EOF
 END_EXPECT
        test_expect_code 129 git rev-parse --parseopt -- -h > output < optionspec_no_switches &&
-       test_i18ncmp expect output
+       test_cmp expect output
 '
 
 test_expect_success 'test --parseopt help output hidden switches' '
@@ -121,7 +121,7 @@ test_expect_success 'test --parseopt help output hidden switches' '
 |EOF
 END_EXPECT
        test_expect_code 129 git rev-parse --parseopt -- -h > output < optionspec_only_hidden_switches &&
-       test_i18ncmp expect output
+       test_cmp expect output
 '
 
 test_expect_success 'test --parseopt help-all output hidden switches' '
@@ -136,7 +136,7 @@ test_expect_success 'test --parseopt help-all output hidden switches' '
 |EOF
 END_EXPECT
        test_expect_code 129 git rev-parse --parseopt -- --help-all > output < optionspec_only_hidden_switches &&
-       test_i18ncmp expect output
+       test_cmp expect output
 '
 
 test_expect_success 'test --parseopt invalid switch help output' '
@@ -176,7 +176,7 @@ test_expect_success 'test --parseopt invalid switch help output' '
 |
 END_EXPECT
        test_expect_code 129 git rev-parse --parseopt -- --does-not-exist 1>/dev/null 2>output < optionspec &&
-       test_i18ncmp expect output
+       test_cmp expect output
 '
 
 test_expect_success 'setup expect.1' "
index f6e6f23f7e6950ea43a7632eb2f0652afc1ed0ae..65a154a8a20f8df27a3f0eaee9ff9b65d5132639 100755 (executable)
@@ -15,7 +15,7 @@ test_did_you_mean ()
        fatal: path '$2$3' $4, but not ${5:-$SQ$3$SQ}
        hint: Did you mean '$1:$2$3'${2:+ aka $SQ$1:./$3$SQ}?
        EOF
-       test_i18ncmp expected error
+       test_cmp expected error
 }
 
 HASH_file=
index 73b4f34c6eee30a70098c950a5482756a9f95e61..c34714ffe3fbe5545da1d05b9a74cfc6113e43dd 100755 (executable)
@@ -172,7 +172,7 @@ test_expect_success 'branch@{u} error message when no upstream' '
        fatal: no upstream configured for branch ${SQ}non-tracking${SQ}
        EOF
        error_message non-tracking@{u} &&
-       test_i18ncmp expect error
+       test_cmp expect error
 '
 
 test_expect_success '@{u} error message when no upstream' '
@@ -180,7 +180,7 @@ test_expect_success '@{u} error message when no upstream' '
        fatal: no upstream configured for branch ${SQ}main${SQ}
        EOF
        test_must_fail git rev-parse --verify @{u} 2>actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success 'branch@{u} error message with misspelt branch' '
@@ -188,7 +188,7 @@ test_expect_success 'branch@{u} error message with misspelt branch' '
        fatal: no such branch: ${SQ}no-such-branch${SQ}
        EOF
        error_message no-such-branch@{u} &&
-       test_i18ncmp expect error
+       test_cmp expect error
 '
 
 test_expect_success '@{u} error message when not on a branch' '
@@ -197,7 +197,7 @@ test_expect_success '@{u} error message when not on a branch' '
        EOF
        git checkout HEAD^0 &&
        test_must_fail git rev-parse --verify @{u} 2>actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success 'branch@{u} error message if upstream branch not fetched' '
@@ -205,7 +205,7 @@ test_expect_success 'branch@{u} error message if upstream branch not fetched' '
        fatal: upstream branch ${SQ}refs/heads/side${SQ} not stored as a remote-tracking branch
        EOF
        error_message bad-upstream@{u} &&
-       test_i18ncmp expect error
+       test_cmp expect error
 '
 
 test_expect_success 'pull works when tracking a local branch' '
index fd2f7abf1c192eebaa98a3b7d3d22433cd523ae4..553a3f601ba7c76efa193d4a33823197c05281e7 100755 (executable)
@@ -221,7 +221,7 @@ test_expect_success 'setup' '
        rm -rf /.git &&
        echo "Initialized empty Git repository in /.git/" > expected &&
        git init > result &&
-       test_i18ncmp expected result
+       test_cmp expected result
 '
 
 test_vars 'auto gitdir, root' ".git" "/" ""
@@ -246,7 +246,7 @@ test_expect_success 'setup' '
        cd / &&
        echo "Initialized empty Git repository in /" > expected &&
        git init --bare > result &&
-       test_i18ncmp expected result
+       test_cmp expected result
 '
 
 test_vars 'auto gitdir, root' "." "" ""
index 242abbfa0bc2b3a1303665feee93e23f8c98a1f6..7891a6becf3a0b4092b2a3fd91ed6679e24cdd08 100755 (executable)
@@ -314,39 +314,39 @@ test_expect_success 'ambiguous short sha1 ref' '
        grep "refname.*${REF}.*ambiguous" err
 '
 
-test_expect_success C_LOCALE_OUTPUT 'ambiguity errors are not repeated (raw)' '
+test_expect_success 'ambiguity errors are not repeated (raw)' '
        test_must_fail git rev-parse 00000 2>stderr &&
        grep "is ambiguous" stderr >errors &&
        test_line_count = 1 errors
 '
 
-test_expect_success C_LOCALE_OUTPUT 'ambiguity errors are not repeated (treeish)' '
+test_expect_success 'ambiguity errors are not repeated (treeish)' '
        test_must_fail git rev-parse 00000:foo 2>stderr &&
        grep "is ambiguous" stderr >errors &&
        test_line_count = 1 errors
 '
 
-test_expect_success C_LOCALE_OUTPUT 'ambiguity errors are not repeated (peel)' '
+test_expect_success 'ambiguity errors are not repeated (peel)' '
        test_must_fail git rev-parse 00000^{commit} 2>stderr &&
        grep "is ambiguous" stderr >errors &&
        test_line_count = 1 errors
 '
 
-test_expect_success C_LOCALE_OUTPUT 'ambiguity hints' '
+test_expect_success 'ambiguity hints' '
        test_must_fail git rev-parse 000000000 2>stderr &&
        grep ^hint: stderr >hints &&
        # 16 candidates, plus one intro line
        test_line_count = 17 hints
 '
 
-test_expect_success C_LOCALE_OUTPUT 'ambiguity hints respect type' '
+test_expect_success 'ambiguity hints respect type' '
        test_must_fail git rev-parse 000000000^{commit} 2>stderr &&
        grep ^hint: stderr >hints &&
        # 5 commits, 1 tag (which is a committish), plus intro line
        test_line_count = 7 hints
 '
 
-test_expect_success C_LOCALE_OUTPUT 'failed type-selector still shows hint' '
+test_expect_success 'failed type-selector still shows hint' '
        # these two blobs share the same prefix "ee3d", but neither
        # will pass for a commit
        echo 851 | git hash-object --stdin -w &&
@@ -370,7 +370,7 @@ test_expect_success 'core.disambiguate does not override context' '
                git -c core.disambiguate=committish rev-parse $sha1^{tree}
 '
 
-test_expect_success C_LOCALE_OUTPUT 'ambiguous commits are printed by type first, then hash order' '
+test_expect_success 'ambiguous commits are printed by type first, then hash order' '
        test_must_fail git rev-parse 0000 2>stderr &&
        grep ^hint: stderr >hints &&
        grep 0000 hints >objects &&
index b7c31aa86a11ffbecd7c82a3ab3e920105caf71f..c9b9e718b89403012b8ce555b474698b8d567140 100755 (executable)
@@ -18,7 +18,7 @@ test_expect_success 'bogus GIT_INDEX_VERSION issues warning' '
                        warning: GIT_INDEX_VERSION set, but the value is invalid.
                        Using version Z
                EOF
-               test_i18ncmp expect.err actual.err
+               test_cmp expect.err actual.err
        )
 '
 
@@ -32,7 +32,7 @@ test_expect_success 'out of bounds GIT_INDEX_VERSION issues warning' '
                        warning: GIT_INDEX_VERSION set, but the value is invalid.
                        Using version Z
                EOF
-               test_i18ncmp expect.err actual.err
+               test_cmp expect.err actual.err
        )
 '
 
@@ -55,7 +55,7 @@ test_expect_success 'out of bounds index.version issues warning' '
                        warning: index.version set, but the value is invalid.
                        Using version Z
                EOF
-               test_i18ncmp expect.err actual.err
+               test_cmp expect.err actual.err
        )
 '
 
index 8e181dbf01c46a324b54471cc62e1c9291852079..7705e3a31708355c05271aa9d5eafa5af359043f 100755 (executable)
@@ -31,5 +31,73 @@ test_expect_success 'checkout-index reports errors (stdin)' '
        test_must_fail git checkout-index --stdin 2>stderr &&
        test_i18ngrep not.in.the.cache stderr
 '
+for mode in 'case' 'utf-8'
+do
+       case "$mode" in
+       case)   dir='A' symlink='a' mode_prereq='CASE_INSENSITIVE_FS' ;;
+       utf-8)
+               dir=$(printf "\141\314\210") symlink=$(printf "\303\244")
+               mode_prereq='UTF8_NFD_TO_NFC' ;;
+       esac
+
+       test_expect_success SYMLINKS,$mode_prereq \
+       "checkout-index with $mode-collision don't write to the wrong place" '
+               git init $mode-collision &&
+               (
+                       cd $mode-collision &&
+                       mkdir target-dir &&
+
+                       empty_obj_hex=$(git hash-object -w --stdin </dev/null) &&
+                       symlink_hex=$(printf "%s" "$PWD/target-dir" | git hash-object -w --stdin) &&
+
+                       cat >objs <<-EOF &&
+                       100644 blob ${empty_obj_hex}    ${dir}/x
+                       100644 blob ${empty_obj_hex}    ${dir}/y
+                       100644 blob ${empty_obj_hex}    ${dir}/z
+                       120000 blob ${symlink_hex}      ${symlink}
+                       EOF
+
+                       git update-index --index-info <objs &&
+
+                       # Note: the order is important here to exercise the
+                       # case where the file at ${dir} has its type changed by
+                       # the time Git tries to check out ${dir}/z.
+                       #
+                       # Also, we use core.precomposeUnicode=false because we
+                       # want Git to treat the UTF-8 paths transparently on
+                       # Mac OS, matching what is in the index.
+                       #
+                       git -c core.precomposeUnicode=false checkout-index -f \
+                               ${dir}/x ${dir}/y ${symlink} ${dir}/z &&
+
+                       # Should not create ${dir}/z at ${symlink}/z
+                       test_path_is_missing target-dir/z
+
+               )
+       '
+done
+
+test_expect_success 'checkout-index --temp correctly reports error on missing blobs' '
+       test_when_finished git reset --hard &&
+       missing_blob=$(echo "no such blob here" | git hash-object --stdin) &&
+       cat >objs <<-EOF &&
+       100644 $missing_blob    file
+       120000 $missing_blob    symlink
+       EOF
+       git update-index --index-info <objs &&
+
+       test_must_fail git checkout-index --temp symlink file 2>stderr &&
+       test_i18ngrep "unable to read sha1 file of file ($missing_blob)" stderr &&
+       test_i18ngrep "unable to read sha1 file of symlink ($missing_blob)" stderr
+'
+
+test_expect_success 'checkout-index --temp correctly reports error for submodules' '
+       git init sub &&
+       test_commit -C sub file &&
+       git submodule add ./sub &&
+       git commit -m sub &&
+       test_must_fail git checkout-index --temp sub 2>stderr &&
+       test_i18ngrep "cannot create temporary submodule sub" stderr
+'
 
 test_done
index 5f761bc616ee5871055d6beed29e768b328f6827..93be1c0eae5ead7eeb4f37dab01dbc1c1fbacdba 100755 (executable)
@@ -150,7 +150,7 @@ test_expect_success 'checkout -b to @{-1} fails with the right branch name' '
        git checkout branch2 &&
        echo  >expect "fatal: A branch named '\''branch1'\'' already exists." &&
        test_must_fail git checkout -b @{-1} 2>actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success 'checkout -B to an existing branch resets branch to HEAD' '
index b432b6427b62538580b5833188b0d211c748545e..bc46713a43e24193bae9a4be204455eb5c066501 100755 (executable)
@@ -163,7 +163,7 @@ test_expect_success 'tracking count is accurate after orphan check' '
        git config branch.child.merge refs/heads/main &&
        git checkout child^ &&
        git checkout child >stdout &&
-       test_i18ncmp expect stdout
+       test_cmp expect stdout
 '
 
 test_expect_success 'no advice given for explicit detached head state' '
@@ -237,15 +237,15 @@ test_expect_success 'describe_detached_head prints no SHA-1 ellipsis when not as
        sane_unset GIT_PRINT_SHA1_ELLIPSIS &&
        git -c 'core.abbrev=12' checkout HEAD^ >actual 2>&1 &&
        check_detached &&
-       test_i18ncmp 1st_detach actual &&
+       test_cmp 1st_detach actual &&
 
        GIT_PRINT_SHA1_ELLIPSIS="no" git -c 'core.abbrev=12' checkout HEAD^ >actual 2>&1 &&
        check_detached &&
-       test_i18ncmp 2nd_detach actual &&
+       test_cmp 2nd_detach actual &&
 
        GIT_PRINT_SHA1_ELLIPSIS= git -c 'core.abbrev=12' checkout HEAD^ >actual 2>&1 &&
        check_detached &&
-       test_i18ncmp 3rd_detach actual &&
+       test_cmp 3rd_detach actual &&
 
        sane_unset GIT_PRINT_SHA1_ELLIPSIS &&
 
@@ -256,17 +256,17 @@ test_expect_success 'describe_detached_head prints no SHA-1 ellipsis when not as
        # Make no mention of the env var at all
        git -c 'core.abbrev=12' checkout HEAD^ >actual 2>&1 &&
        check_detached &&
-       test_i18ncmp 1st_detach actual &&
+       test_cmp 1st_detach actual &&
 
        GIT_PRINT_SHA1_ELLIPSIS='nope' &&
        git -c 'core.abbrev=12' checkout HEAD^ >actual 2>&1 &&
        check_detached &&
-       test_i18ncmp 2nd_detach actual &&
+       test_cmp 2nd_detach actual &&
 
        GIT_PRINT_SHA1_ELLIPSIS=nein &&
        git -c 'core.abbrev=12' checkout HEAD^ >actual 2>&1 &&
        check_detached &&
-       test_i18ncmp 3rd_detach actual &&
+       test_cmp 3rd_detach actual &&
 
        true
 "
@@ -319,15 +319,15 @@ test_expect_success 'describe_detached_head does print SHA-1 ellipsis when asked
 
        GIT_PRINT_SHA1_ELLIPSIS=yes git -c 'core.abbrev=12' checkout HEAD^ >actual 2>&1 &&
        check_detached &&
-       test_i18ncmp 1st_detach actual &&
+       test_cmp 1st_detach actual &&
 
        GIT_PRINT_SHA1_ELLIPSIS=Yes git -c 'core.abbrev=12' checkout HEAD^ >actual 2>&1 &&
        check_detached &&
-       test_i18ncmp 2nd_detach actual &&
+       test_cmp 2nd_detach actual &&
 
        GIT_PRINT_SHA1_ELLIPSIS=YES git -c 'core.abbrev=12' checkout HEAD^ >actual 2>&1 &&
        check_detached &&
-       test_i18ncmp 3rd_detach actual &&
+       test_cmp 3rd_detach actual &&
 
        true
 "
index c2ada7de37312bffd4b05ff7ac7a9c9e0c4da395..70d69263e6821514ada6ace0ba7846360585f32d 100755 (executable)
@@ -51,4 +51,16 @@ test_expect_success SYMLINKS 'the symlink remained' '
        test -h a/b
 '
 
+test_expect_success SYMLINKS 'checkout -f must not follow symlinks when removing entries' '
+       git checkout -f start &&
+       mkdir dir &&
+       >dir/f &&
+       git add dir/f &&
+       git commit -m "add dir/f" &&
+       mv dir untracked &&
+       ln -s untracked dir &&
+       git checkout -f HEAD~ &&
+       test_path_is_file untracked/f
+'
+
 test_done
index 7e2e7dd4ae5842bc49ccaf5dc116deb3b3d6b993..30666fc70d28264d036105659871a68323ce2460 100755 (executable)
@@ -9,6 +9,11 @@ test_description='skip-worktree bit test'
 
 sane_unset GIT_TEST_SPLIT_INDEX
 
+test_set_index_version () {
+    GIT_INDEX_VERSION="$1"
+    export GIT_INDEX_VERSION
+}
+
 test_set_index_version 3
 
 cat >expect.full <<EOF
index 7cb7a7038277fdf5e55e984f998d56324d7c62cd..45ca35d60ac5b750a635ef42f96275c4bb197692 100755 (executable)
@@ -135,7 +135,7 @@ test_expect_success 'add -n -u should not add but just report' '
        after=$(git ls-files -s check top) &&
 
        test "$before" = "$after" &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 
 '
 
index aff877590dfe4b98b9e8f89439b6ecd2b0af6516..a615d3b4838192af5acac8afd9a19e662553e409 100755 (executable)
@@ -23,7 +23,7 @@ test_expect_success 'prune files inside $GIT_DIR/worktrees' '
        cat >expect <<EOF &&
 Removing worktrees/abc: not a valid directory
 EOF
-       test_i18ncmp expect actual &&
+       test_cmp expect actual &&
        ! test -f .git/worktrees/abc &&
        ! test -d .git/worktrees
 '
@@ -35,7 +35,7 @@ test_expect_success 'prune directories without gitdir' '
 Removing worktrees/def: gitdir file does not exist
 EOF
        git worktree prune --verbose >actual &&
-       test_i18ncmp expect actual &&
+       test_cmp expect actual &&
        ! test -d .git/worktrees/def &&
        ! test -d .git/worktrees
 '
index 42d35d9ae82f5e3084d1cc37512718565aa6c41a..fedcefe8de334f2925f0536b16fd405fecc52836 100755 (executable)
@@ -167,7 +167,7 @@ test_expect_success '"list" all worktrees --verbose with prunable' '
        rm -rf prunable &&
        git worktree list --verbose >out &&
        sed -n "s/  */ /g;/\/prunable  *[0-9a-f].*$/,/prunable: .*$/p" <out >actual &&
-       test_i18ncmp actual expect
+       test_cmp actual expect
 '
 
 test_expect_success 'bare repo setup' '
index 2ec69a8a266fa2438f960ef7d63d6517bbe61b78..727e9ae1a449ee4f105fe234b5041c6fbc397b45 100755 (executable)
@@ -46,7 +46,7 @@ test_expect_success 'ls-files -c' '
                ls ../x* >expect.out &&
                test_must_fail git ls-files -c --error-unmatch ../[xy]* >actual.out 2>actual.err &&
                test_cmp expect.out actual.out &&
-               test_i18ncmp expect.err actual.err
+               test_cmp expect.err actual.err
        )
 '
 
@@ -61,7 +61,7 @@ test_expect_success 'ls-files -o' '
                ls ../y* >expect.out &&
                test_must_fail git ls-files -o --error-unmatch ../[xy]* >actual.out 2>actual.err &&
                test_cmp expect.out actual.out &&
-               test_i18ncmp expect.err actual.err
+               test_cmp expect.err actual.err
        )
 '
 
index 52ed665fcd2dd7fbcbfbb77be4272b26f81c4f1f..b257c792a46d865a7a1d9d6261b4436ccccb3b8e 100755 (executable)
@@ -47,6 +47,12 @@ test_expect_success setup '
        git add .
 '
 
+test_expect_success 'usage' '
+       test_expect_code 128 git ls-files --with-tree=HEAD -u &&
+       test_expect_code 128 git ls-files --with-tree=HEAD -s &&
+       test_expect_code 128 git ls-files --recurse-submodules --with-tree=HEAD
+'
+
 test_expect_success 'git ls-files --with-tree should succeed from subdir' '
        # We have to run from a sub-directory to trigger prune_path
        # Then we finally get to run our --with-tree test
@@ -60,4 +66,39 @@ test_expect_success \
     'git ls-files --with-tree should add entries from named tree.' \
     'test_cmp expected output'
 
+test_expect_success 'no duplicates in --with-tree output' '
+       git ls-files --with-tree=HEAD >actual &&
+       sort -u actual >expected &&
+       test_cmp expected actual
+'
+
+test_expect_success 'setup: output in a conflict' '
+       test_create_repo conflict &&
+       test_commit -C conflict BASE file &&
+       test_commit -C conflict A file foo &&
+       git -C conflict reset --hard BASE &&
+       test_commit -C conflict B file bar
+'
+
+test_expect_success 'output in a conflict' '
+       test_must_fail git -C conflict merge A B &&
+       cat >expected <<-\EOF &&
+       file
+       file
+       file
+       file
+       EOF
+       git -C conflict ls-files --with-tree=HEAD >actual &&
+       test_cmp expected actual
+'
+
+test_expect_success 'output with removed .git/index' '
+       cat >expected <<-\EOF &&
+       file
+       EOF
+       rm conflict/.git/index &&
+       git -C conflict ls-files --with-tree=HEAD >actual &&
+       test_cmp expected actual
+'
+
 test_done
index 00761e408015ddf60e1ce2cd5ab18032f79e3c68..cc4b10236e2c8335465185cff84105208b807aa9 100755 (executable)
@@ -695,7 +695,7 @@ test_expect_success 'deleting a symref' '
        git branch -d symref >actual &&
        test_path_is_file .git/refs/heads/target &&
        test_path_is_missing .git/refs/heads/symref &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success 'deleting a dangling symref' '
@@ -704,7 +704,7 @@ test_expect_success 'deleting a dangling symref' '
        echo "Deleted branch dangling-symref (was nowhere)." >expect &&
        git branch -d dangling-symref >actual &&
        test_path_is_missing .git/refs/heads/dangling-symref &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success 'deleting a self-referential symref' '
@@ -713,7 +713,7 @@ test_expect_success 'deleting a self-referential symref' '
        echo "Deleted branch self-reference (was refs/heads/self-reference)." >expect &&
        git branch -d self-reference >actual &&
        test_path_is_missing .git/refs/heads/self-reference &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success 'renaming a symref is not allowed' '
@@ -808,7 +808,7 @@ test_expect_success 'test deleting branch without config' '
        sha1=$(git rev-parse my7 | cut -c 1-7) &&
        echo "Deleted branch my7 (was $sha1)." >expect &&
        git branch -d my7 >actual 2>&1 &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success 'deleting currently checked out branch fails' '
@@ -843,7 +843,7 @@ test_expect_success 'branch from tag w/--track causes failure' '
 test_expect_success '--set-upstream-to fails on multiple branches' '
        echo "fatal: too many arguments to set new upstream" >expect &&
        test_must_fail git branch --set-upstream-to main a b c 2>err &&
-       test_i18ncmp expect err
+       test_cmp expect err
 '
 
 test_expect_success '--set-upstream-to fails on detached HEAD' '
@@ -851,13 +851,13 @@ test_expect_success '--set-upstream-to fails on detached HEAD' '
        test_when_finished git checkout - &&
        echo "fatal: could not set upstream of HEAD to main when it does not point to any branch." >expect &&
        test_must_fail git branch --set-upstream-to main 2>err &&
-       test_i18ncmp expect err
+       test_cmp expect err
 '
 
 test_expect_success '--set-upstream-to fails on a missing dst branch' '
        echo "fatal: branch '"'"'does-not-exist'"'"' does not exist" >expect &&
        test_must_fail git branch --set-upstream-to main does-not-exist 2>err &&
-       test_i18ncmp expect err
+       test_cmp expect err
 '
 
 test_expect_success '--set-upstream-to fails on a missing src branch' '
@@ -868,7 +868,7 @@ test_expect_success '--set-upstream-to fails on a missing src branch' '
 test_expect_success '--set-upstream-to fails on a non-ref' '
        echo "fatal: Cannot setup tracking information; starting point '"'"'HEAD^{}'"'"' is not a branch." >expect &&
        test_must_fail git branch --set-upstream-to HEAD^{} 2>err &&
-       test_i18ncmp expect err
+       test_cmp expect err
 '
 
 test_expect_success '--set-upstream-to fails on locked config' '
@@ -899,7 +899,7 @@ test_expect_success 'use --set-upstream-to modify a particular branch' '
 test_expect_success '--unset-upstream should fail if given a non-existent branch' '
        echo "fatal: Branch '"'"'i-dont-exist'"'"' has no upstream information" >expect &&
        test_must_fail git branch --unset-upstream i-dont-exist 2>err &&
-       test_i18ncmp expect err
+       test_cmp expect err
 '
 
 test_expect_success '--unset-upstream should fail if config is locked' '
@@ -921,13 +921,13 @@ test_expect_success 'test --unset-upstream on HEAD' '
        # fail for a branch without upstream set
        echo "fatal: Branch '"'"'main'"'"' has no upstream information" >expect &&
        test_must_fail git branch --unset-upstream 2>err &&
-       test_i18ncmp expect err
+       test_cmp expect err
 '
 
 test_expect_success '--unset-upstream should fail on multiple branches' '
        echo "fatal: too many arguments to unset upstream" >expect &&
        test_must_fail git branch --unset-upstream a b c 2>err &&
-       test_i18ncmp expect err
+       test_cmp expect err
 '
 
 test_expect_success '--unset-upstream should fail on detached HEAD' '
@@ -935,7 +935,7 @@ test_expect_success '--unset-upstream should fail on detached HEAD' '
        test_when_finished git checkout - &&
        echo "fatal: could not unset upstream of HEAD when it does not point to any branch." >expect &&
        test_must_fail git branch --unset-upstream 2>err &&
-       test_i18ncmp expect err
+       test_cmp expect err
 '
 
 test_expect_success 'test --unset-upstream on a particular branch' '
@@ -957,7 +957,7 @@ test_expect_success '--set-upstream-to notices an error to set branch as own ups
        EOF
        test_expect_code 1 git config branch.my13.remote &&
        test_expect_code 1 git config branch.my13.merge &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 # Keep this test last, as it changes the current branch
index 578b5f48255deb3f1ef547a224a7c6169f2251fc..349a810cee11df36dda3c8ed4bbca3df58040001 100755 (executable)
@@ -264,7 +264,7 @@ test_expect_success 'branch --merged with --verbose' '
        * topic $(git rev-parse --short topic ) [ahead 1] foo
          zzz   $(git rev-parse --short zzz   ) second on main
        EOF
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_done
index b6fcd017afe9d9bdcb470071b849d69322ba5443..5325b9f67a00783974c34b4ac88431b903b3ccec 100755 (executable)
@@ -160,7 +160,7 @@ test_expect_success 'git branch shows detached HEAD properly' '
 EOF
        git checkout HEAD^0 &&
        git branch >actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success 'git branch shows detached HEAD properly after checkout --detach' '
@@ -173,7 +173,7 @@ test_expect_success 'git branch shows detached HEAD properly after checkout --de
 EOF
        git checkout --detach &&
        git branch >actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success 'git branch shows detached HEAD properly after moving' '
@@ -185,7 +185,7 @@ test_expect_success 'git branch shows detached HEAD properly after moving' '
 EOF
        git reset --hard HEAD^1 &&
        git branch >actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success 'git branch shows detached HEAD properly from tag' '
@@ -198,7 +198,7 @@ EOF
        git tag fromtag main &&
        git checkout fromtag &&
        git branch >actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success 'git branch shows detached HEAD properly after moving from tag' '
@@ -210,7 +210,7 @@ test_expect_success 'git branch shows detached HEAD properly after moving from t
 EOF
        git reset --hard HEAD^1 &&
        git branch >actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success 'git branch `--sort=[-]objectsize` option' '
@@ -221,7 +221,7 @@ test_expect_success 'git branch `--sort=[-]objectsize` option' '
          main
        EOF
        git branch --sort=objectsize >actual &&
-       test_i18ncmp expect actual &&
+       test_cmp expect actual &&
 
        cat >expect <<-\EOF &&
        * (HEAD detached from fromtag)
@@ -230,7 +230,7 @@ test_expect_success 'git branch `--sort=[-]objectsize` option' '
          branch-two
        EOF
        git branch --sort=-objectsize >actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success 'git branch `--sort=[-]type` option' '
@@ -241,7 +241,7 @@ test_expect_success 'git branch `--sort=[-]type` option' '
          main
        EOF
        git branch --sort=type >actual &&
-       test_i18ncmp expect actual &&
+       test_cmp expect actual &&
 
        cat >expect <<-\EOF &&
        * (HEAD detached from fromtag)
@@ -250,7 +250,7 @@ test_expect_success 'git branch `--sort=[-]type` option' '
          main
        EOF
        git branch --sort=-type >actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success 'git branch `--sort=[-]version:refname` option' '
@@ -261,7 +261,7 @@ test_expect_success 'git branch `--sort=[-]version:refname` option' '
          main
        EOF
        git branch --sort=version:refname >actual &&
-       test_i18ncmp expect actual &&
+       test_cmp expect actual &&
 
        cat >expect <<-\EOF &&
        * (HEAD detached from fromtag)
@@ -270,7 +270,7 @@ test_expect_success 'git branch `--sort=[-]version:refname` option' '
          branch-one
        EOF
        git branch --sort=-version:refname >actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success 'git branch --points-at option' '
@@ -337,7 +337,7 @@ test_expect_success 'git branch --format option' '
        Refname is refs/heads/ref-to-remote
        EOF
        git branch --format="Refname is %(refname)" >actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success 'worktree colors correct' '
@@ -355,7 +355,7 @@ test_expect_success 'worktree colors correct' '
        rm -r worktree_dir &&
        git worktree prune &&
        test_decode_color <actual.raw >actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success "set up color tests" '
@@ -398,7 +398,7 @@ test_expect_success 'verbose output lists worktree path' '
        git branch -vv >actual &&
        rm -r worktree_dir &&
        git worktree prune &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_done
index ce24b5d735abc263be7c4125155a47663d1616cf..e30bc48a29018a9380f7e0262c4ce9ea6353c3e4 100755 (executable)
@@ -153,6 +153,19 @@ test_expect_success 'simple A B C (unmodified)' '
        test_cmp expect actual
 '
 
+test_expect_success 'A^! and A^-<n> (unmodified)' '
+       git range-diff --no-color topic^! unmodified^-1 >actual &&
+       cat >expect <<-EOF &&
+       1:  $(test_oid t4) = 1:  $(test_oid u4) s/12/B/
+       EOF
+       test_cmp expect actual
+'
+
+test_expect_success 'A^{/..} is not mistaken for a range' '
+       test_must_fail git range-diff topic^.. topic^{/..} 2>error &&
+       test_i18ngrep "not a commit range" error
+'
+
 test_expect_success 'trivial reordering' '
        git range-diff --no-color main topic reordered >actual &&
        cat >expect <<-EOF &&
@@ -508,6 +521,30 @@ test_expect_success 'format-patch --range-diff as commentary' '
        grep "> 1: .* new message" 0001-*
 '
 
+test_expect_success 'format-patch --range-diff reroll-count with a non-integer' '
+       git format-patch --range-diff=HEAD~1 -v2.9 HEAD~1 >actual &&
+       test_when_finished "rm v2.9-0001-*" &&
+       test_line_count = 1 actual &&
+       test_i18ngrep "^Range-diff:$" v2.9-0001-* &&
+       grep "> 1: .* new message" v2.9-0001-*
+'
+
+test_expect_success 'format-patch --range-diff reroll-count with a integer' '
+       git format-patch --range-diff=HEAD~1 -v2 HEAD~1 >actual &&
+       test_when_finished "rm v2-0001-*" &&
+       test_line_count = 1 actual &&
+       test_i18ngrep "^Range-diff ..* v1:$" v2-0001-* &&
+       grep "> 1: .* new message" v2-0001-*
+'
+
+test_expect_success 'format-patch --range-diff with v0' '
+       git format-patch --range-diff=HEAD~1 -v0 HEAD~1 >actual &&
+       test_when_finished "rm v0-0001-*" &&
+       test_line_count = 1 actual &&
+       test_i18ngrep "^Range-diff:$" v0-0001-* &&
+       grep "> 1: .* new message" v0-0001-*
+'
+
 test_expect_success 'range-diff overrides diff.noprefix internally' '
        git -c diff.noprefix=true range-diff HEAD^...
 '
@@ -720,4 +757,19 @@ test_expect_success 'format-patch --range-diff with multiple notes' '
        test_cmp expect actual
 '
 
+test_expect_success '--left-only/--right-only' '
+       git switch --orphan left-right &&
+       test_commit first &&
+       test_commit unmatched &&
+       test_commit common &&
+       git switch -C left-right first &&
+       git cherry-pick common &&
+
+       git range-diff -s --left-only ...common >actual &&
+       head_oid=$(git rev-parse --short HEAD) &&
+       common_oid=$(git rev-parse --short common) &&
+       echo "1:  $head_oid = 2:  $common_oid common" >expect &&
+       test_cmp expect actual
+'
+
 test_done
index 04de03cad0a7466106a125205742b5feea1b1e2f..f5bf16abcd8ce2aae5929129913cbb8927b06539 100755 (executable)
@@ -181,7 +181,7 @@ test_expect_success 'diffstat for rename quotes funny filename' '
        git diff-index -M -p $t0 >diff &&
        git apply --stat <diff >diffstat &&
        sed -e "s/|.*//" -e "s/ *\$//" <diffstat >current &&
-       test_i18ncmp expected current
+       test_cmp expected current
 '
 
 test_expect_success 'numstat for rename quotes funny filename' '
index 4af881f0baa8628c7928606686fff356fffe03fd..d742be8840276a52ef5887659d5405e1f9b08404 100755 (executable)
@@ -1293,11 +1293,11 @@ test_expect_success 'GIT_NOTES_REWRITE_REF overrides config' '
        grep "replacement note 3" actual
 '
 
-test_expect_success 'git notes copy diagnoses too many or too few parameters' '
+test_expect_success 'git notes copy diagnoses too many or too few arguments' '
        test_must_fail git notes copy 2>error &&
-       test_i18ngrep "too few parameters" error &&
+       test_i18ngrep "too few arguments" error &&
        test_must_fail git notes copy one two three 2>error &&
-       test_i18ngrep "too many parameters" error
+       test_i18ngrep "too many arguments" error
 '
 
 test_expect_success 'git notes get-ref expands refs/heads/main to refs/notes/refs/heads/main' '
index 5e88a10f8d770ff53e05a4005bd4aa6d7b90918c..0bb88aa982beeaab4d03f8d8b36093caa8cd7265 100755 (executable)
@@ -113,7 +113,7 @@ test_expect_success 'rebase off of the previous branch using "-"' '
        test_cmp expect.forkpoint actual.forkpoint &&
        # the next one is dubious---we may want to say "-",
        # instead of @{-1}, in the message
-       test_i18ncmp expect.messages actual.messages
+       test_cmp expect.messages actual.messages
 '
 
 test_expect_success 'rebase a single mode change' '
@@ -388,22 +388,6 @@ test_expect_success 'rebase--merge.sh and --show-current-patch' '
        )
 '
 
-test_expect_success 'rebase -c rebase.useBuiltin=false warning' '
-       expected="rebase.useBuiltin support has been removed" &&
-
-       # Only warn when the legacy rebase is requested...
-       test_must_fail git -c rebase.useBuiltin=false rebase 2>err &&
-       test_i18ngrep "$expected" err &&
-       test_must_fail env GIT_TEST_REBASE_USE_BUILTIN=false git rebase 2>err &&
-       test_i18ngrep "$expected" err &&
-
-       # ...not when we would have used the built-in anyway
-       test_must_fail git -c rebase.useBuiltin=true rebase 2>err &&
-       test_must_be_empty err &&
-       test_must_fail env GIT_TEST_REBASE_USE_BUILTIN=true git rebase 2>err &&
-       test_must_be_empty err
-'
-
 test_expect_success 'switch to branch checked out here' '
        git checkout main &&
        git rebase main main
index 1e738df81d574e2e68d343a67afae266443e39c6..66bcbbf9528cec9e372f39be80e23fa789aabbd2 100755 (executable)
@@ -86,7 +86,7 @@ test_expect_success 'rebase -i with empty todo list' '
                        git rebase -i HEAD^ >output 2>&1
        ) &&
        tail -n 1 output >actual &&  # Ignore output about changing todo list
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success 'rebase -i with the exec command' '
@@ -101,7 +101,8 @@ test_expect_success 'rebase -i with the exec command' '
        ) &&
        test_path_is_file touch-one &&
        test_path_is_file touch-two &&
-       test_path_is_missing touch-three " (should have stopped before)" &&
+       # Missing because we should have stopped by now.
+       test_path_is_missing touch-three &&
        test_cmp_rev C HEAD &&
        git rebase --continue &&
        test_path_is_file touch-three &&
@@ -158,9 +159,9 @@ test_expect_success 'rebase -x with empty command fails' '
        test_when_finished "git rebase --abort ||:" &&
        test_must_fail env git rebase -x "" @ 2>actual &&
        test_write_lines "error: empty exec command" >expected &&
-       test_i18ncmp expected actual &&
+       test_cmp expected actual &&
        test_must_fail env git rebase -x " " @ 2>actual &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 test_expect_success 'rebase -x with newline in command fails' '
@@ -168,7 +169,7 @@ test_expect_success 'rebase -x with newline in command fails' '
        test_must_fail env git rebase -x "a${LF}b" @ 2>actual &&
        test_write_lines "error: exec commands cannot contain newlines" \
                         >expected &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 test_expect_success 'rebase -i with exec of inexistent command' '
@@ -450,7 +451,7 @@ test_expect_success 'verbose flag is heeded, even after --continue' '
        grep "^ file1 | 2 +-$" output
 '
 
-test_expect_success C_LOCALE_OUTPUT 'multi-squash only fires up editor once' '
+test_expect_success 'multi-squash only fires up editor once' '
        base=$(git rev-parse HEAD~4) &&
        (
                set_fake_editor &&
@@ -463,7 +464,7 @@ test_expect_success C_LOCALE_OUTPUT 'multi-squash only fires up editor once' '
        test 1 = $(git show | grep ONCE | wc -l)
 '
 
-test_expect_success C_LOCALE_OUTPUT 'multi-fixup does not fire up editor' '
+test_expect_success 'multi-fixup does not fire up editor' '
        git checkout -b multi-fixup E &&
        base=$(git rev-parse HEAD~4) &&
        (
@@ -514,7 +515,7 @@ test_expect_success 'commit message retained after conflict' '
        git branch -D conflict-squash
 '
 
-test_expect_success C_LOCALE_OUTPUT 'squash and fixup generate correct log messages' '
+test_expect_success 'squash and fixup generate correct log messages' '
        cat >expect-squash-fixup <<-\EOF &&
        B
 
@@ -541,7 +542,7 @@ test_expect_success C_LOCALE_OUTPUT 'squash and fixup generate correct log messa
        git branch -D squash-fixup
 '
 
-test_expect_success C_LOCALE_OUTPUT 'squash ignores comments' '
+test_expect_success 'squash ignores comments' '
        git checkout -b skip-comments E &&
        base=$(git rev-parse HEAD~4) &&
        (
@@ -557,7 +558,7 @@ test_expect_success C_LOCALE_OUTPUT 'squash ignores comments' '
        git branch -D skip-comments
 '
 
-test_expect_success C_LOCALE_OUTPUT 'squash ignores blank lines' '
+test_expect_success 'squash ignores blank lines' '
        git checkout -b skip-blank-lines E &&
        base=$(git rev-parse HEAD~4) &&
        (
@@ -995,7 +996,7 @@ test_expect_success 'rebase -ix with several instances of --exec' '
        test_cmp expected actual
 '
 
-test_expect_success C_LOCALE_OUTPUT 'rebase -ix with --autosquash' '
+test_expect_success 'rebase -ix with --autosquash' '
        git reset --hard execute &&
        git checkout -b autosquash &&
        echo second >second.txt &&
@@ -1136,7 +1137,7 @@ test_expect_success 'rebase -i --root reword root when root has untracked file c
        test "$(git rev-list --count HEAD)" = 2
 '
 
-test_expect_success C_LOCALE_OUTPUT 'rebase --edit-todo does not work on non-interactive rebase' '
+test_expect_success 'rebase --edit-todo does not work on non-interactive rebase' '
        git checkout reword-original-root-branch &&
        git reset --hard &&
        git checkout conflict-branch &&
@@ -1465,7 +1466,7 @@ test_expect_success 'rebase -i respects rebase.missingCommitsCheck = warn' '
                FAKE_LINES="1 2 3 4" git rebase -i --root 2>actual.2
        ) &&
        head -n4 actual.2 >actual &&
-       test_i18ncmp expect actual &&
+       test_cmp expect actual &&
        test D = $(git cat-file commit HEAD | sed -ne \$p)
 '
 
@@ -1489,7 +1490,7 @@ test_expect_success 'rebase -i respects rebase.missingCommitsCheck = error' '
                set_fake_editor &&
                test_must_fail env FAKE_LINES="1 2 4" \
                        git rebase -i --root 2>actual &&
-               test_i18ncmp expect actual &&
+               test_cmp expect actual &&
                cp .git/rebase-merge/git-rebase-todo.backup \
                        .git/rebase-merge/git-rebase-todo &&
                FAKE_LINES="1 2 drop 3 4 drop 5" git rebase --edit-todo
@@ -1535,11 +1536,11 @@ test_expect_success 'rebase --edit-todo respects rebase.missingCommitsCheck = wa
                cp .git/rebase-merge/git-rebase-todo.backup orig &&
                FAKE_LINES="2 3 4" git rebase --edit-todo 2>actual.2 &&
                head -n6 actual.2 >actual &&
-               test_i18ncmp expect actual &&
+               test_cmp expect actual &&
                cp orig .git/rebase-merge/git-rebase-todo &&
                FAKE_LINES="1 2 3 4" git rebase --edit-todo 2>actual.2 &&
                head -n4 actual.2 >actual &&
-               test_i18ncmp expect.3 actual &&
+               test_cmp expect.3 actual &&
                git rebase --continue 2>actual
        ) &&
        test D = $(git cat-file commit HEAD | sed -ne \$p) &&
@@ -1575,16 +1576,16 @@ test_expect_success 'rebase --edit-todo respects rebase.missingCommitsCheck = er
                cp .git/rebase-merge/git-rebase-todo.backup orig &&
                test_must_fail env FAKE_LINES="2 3 4" \
                        git rebase --edit-todo 2>actual &&
-               test_i18ncmp expect actual &&
+               test_cmp expect actual &&
                test_must_fail git rebase --continue 2>actual &&
-               test_i18ncmp expect.2 actual &&
+               test_cmp expect.2 actual &&
                test_must_fail git rebase --edit-todo &&
                cp orig .git/rebase-merge/git-rebase-todo &&
                test_must_fail env FAKE_LINES="1 2 3 4" \
                        git rebase --edit-todo 2>actual &&
-               test_i18ncmp expect.3 actual &&
+               test_cmp expect.3 actual &&
                test_must_fail git rebase --continue 2>actual &&
-               test_i18ncmp expect.3 actual &&
+               test_cmp expect.3 actual &&
                cp orig .git/rebase-merge/git-rebase-todo &&
                FAKE_LINES="1 2 3 4 drop 5" git rebase --edit-todo &&
                git rebase --continue 2>actual
index 36f169d7f15559c0e7cd129365e404ec5ad99b03..78c27496d6a715414e3a531ffe37fd790d5833c8 100755 (executable)
@@ -84,8 +84,7 @@ test_auto_squash () {
        echo 1 >file1 &&
        git add -u &&
        test_tick &&
-       git commit -m "squash! first" &&
-
+       git commit -m "squash! first" -m "extra para for first" &&
        git tag $1 &&
        test_tick &&
        git rebase $2 -i HEAD^^^ &&
@@ -142,7 +141,7 @@ test_expect_success 'auto squash that matches 2 commits' '
        echo 1 >file1 &&
        git add -u &&
        test_tick &&
-       git commit -m "squash! first" &&
+       git commit -m "squash! first" -m "extra para for first" &&
        git tag final-multisquash &&
        test_tick &&
        git rebase --autosquash -i HEAD~4 &&
@@ -195,7 +194,7 @@ test_expect_success 'auto squash that matches a sha1' '
        git add -u &&
        test_tick &&
        oid=$(git rev-parse --short HEAD^) &&
-       git commit -m "squash! $oid" &&
+       git commit -m "squash! $oid" -m "extra para" &&
        git tag final-shasquash &&
        test_tick &&
        git rebase --autosquash -i HEAD^^^ &&
@@ -206,7 +205,8 @@ test_expect_success 'auto squash that matches a sha1' '
        git cat-file blob HEAD^:file1 >actual &&
        test_cmp expect actual &&
        git cat-file commit HEAD^ >commit &&
-       grep squash commit >actual &&
+       ! grep "squash" commit &&
+       grep "^extra para" commit >actual &&
        test_line_count = 1 actual
 '
 
@@ -216,7 +216,7 @@ test_expect_success 'auto squash that matches longer sha1' '
        git add -u &&
        test_tick &&
        oid=$(git rev-parse --short=11 HEAD^) &&
-       git commit -m "squash! $oid" &&
+       git commit -m "squash! $oid" -m "extra para" &&
        git tag final-longshasquash &&
        test_tick &&
        git rebase --autosquash -i HEAD^^^ &&
@@ -227,7 +227,8 @@ test_expect_success 'auto squash that matches longer sha1' '
        git cat-file blob HEAD^:file1 >actual &&
        test_cmp expect actual &&
        git cat-file commit HEAD^ >commit &&
-       grep squash commit >actual &&
+       ! grep "squash" commit &&
+       grep "^extra para" commit >actual &&
        test_line_count = 1 actual
 '
 
@@ -236,7 +237,7 @@ test_auto_commit_flags () {
        echo 1 >file1 &&
        git add -u &&
        test_tick &&
-       git commit --$1 first-commit &&
+       git commit --$1 first-commit -m "extra para for first" &&
        git tag final-commit-$1 &&
        test_tick &&
        git rebase --autosquash -i HEAD^^^ &&
@@ -264,11 +265,11 @@ test_auto_fixup_fixup () {
        echo 1 >file1 &&
        git add -u &&
        test_tick &&
-       git commit -m "$1! first" &&
+       git commit -m "$1! first" -m "extra para for first" &&
        echo 2 >file1 &&
        git add -u &&
        test_tick &&
-       git commit -m "$1! $2! first" &&
+       git commit -m "$1! $2! first" -m "second extra para for first" &&
        git tag "final-$1-$2" &&
        test_tick &&
        (
@@ -306,35 +307,35 @@ test_auto_fixup_fixup () {
        fi
 }
 
-test_expect_success C_LOCALE_OUTPUT 'fixup! fixup!' '
+test_expect_success 'fixup! fixup!' '
        test_auto_fixup_fixup fixup fixup
 '
 
-test_expect_success C_LOCALE_OUTPUT 'fixup! squash!' '
+test_expect_success 'fixup! squash!' '
        test_auto_fixup_fixup fixup squash
 '
 
-test_expect_success C_LOCALE_OUTPUT 'squash! squash!' '
+test_expect_success 'squash! squash!' '
        test_auto_fixup_fixup squash squash
 '
 
-test_expect_success C_LOCALE_OUTPUT 'squash! fixup!' '
+test_expect_success 'squash! fixup!' '
        test_auto_fixup_fixup squash fixup
 '
 
-test_expect_success C_LOCALE_OUTPUT 'autosquash with custom inst format' '
+test_expect_success 'autosquash with custom inst format' '
        git reset --hard base &&
        git config --add rebase.instructionFormat "[%an @ %ar] %s"  &&
        echo 2 >file1 &&
        git add -u &&
        test_tick &&
        oid=$(git rev-parse --short HEAD^) &&
-       git commit -m "squash! $oid" &&
+       git commit -m "squash! $oid" -m "extra para for first" &&
        echo 1 >file1 &&
        git add -u &&
        test_tick &&
        subject=$(git log -n 1 --format=%s HEAD~2) &&
-       git commit -m "squash! $subject" &&
+       git commit -m "squash! $subject" -m "second extra para for first" &&
        git tag final-squash-instFmt &&
        test_tick &&
        git rebase --autosquash -i HEAD~4 &&
@@ -345,8 +346,9 @@ test_expect_success C_LOCALE_OUTPUT 'autosquash with custom inst format' '
        git cat-file blob HEAD^:file1 >actual &&
        test_cmp expect actual &&
        git cat-file commit HEAD^ >commit &&
-       grep squash commit >actual &&
-       test_line_count = 2 actual
+       ! grep "squash" commit &&
+       grep first commit >actual &&
+       test_line_count = 3 actual
 '
 
 test_expect_success 'autosquash with empty custom instructionFormat' '
index 4caa014c71c442f181b2668a3690c4e6ce1806db..43fcb68f27e439b5542e82a85bc77e401adc6e98 100755 (executable)
@@ -110,7 +110,7 @@ testrebase () {
                fi &&
                create_expected_success_$suffix &&
                sed "$remove_progress_re" <actual >actual2 &&
-               test_i18ncmp expected actual2
+               test_cmp expected actual2
        '
 
        test_expect_success "rebase$type: dirty index, non-conflicting rebase" '
@@ -231,7 +231,7 @@ testrebase () {
                fi &&
                create_expected_failure_$suffix &&
                sed "$remove_progress_re" <actual >actual2 &&
-               test_i18ncmp expected actual2
+               test_cmp expected actual2
        '
 }
 
index 2dab893c759b288cefeb0d4b35ac4f4eb82b2eae..4c98d99e7e87476811877b4685f2f5a5eefe0f35 100755 (executable)
@@ -29,19 +29,23 @@ test_expect_success setup '
        test_commit G
 '
 
+do_test_rebase () {
+       expected="$1" &&
+       shift &&
+       git checkout main &&
+       git reset --hard E &&
+       git checkout side &&
+       git reset --hard G &&
+       git rebase $* &&
+       test_write_lines $expected >expect &&
+       git log --pretty=%s >actual &&
+       test_cmp expect actual
+}
+
 test_rebase () {
        expected="$1" &&
        shift &&
-       test_expect_success "git rebase $*" "
-               git checkout main &&
-               git reset --hard E &&
-               git checkout side &&
-               git reset --hard G &&
-               git rebase $* &&
-               test_write_lines $expected >expect &&
-               git log --pretty=%s >actual &&
-               test_cmp expect actual
-       "
+       test_expect_success "git rebase $*" "do_test_rebase '$expected' $*"
 }
 
 test_rebase 'G F E D B A'
@@ -77,4 +81,35 @@ test_expect_success 'git rebase --fork-point with ambigous refname' '
        test_must_fail git rebase --fork-point --onto D one
 '
 
+test_expect_success '--fork-point and --root both given' '
+       test_must_fail git rebase --fork-point --root 2>err &&
+       test_i18ngrep "cannot combine" err
+'
+
+test_expect_success 'rebase.forkPoint set to false' '
+       test_config rebase.forkPoint false &&
+       do_test_rebase "G F C E D B A"
+'
+
+test_expect_success 'rebase.forkPoint set to false and then to true' '
+       test_config_global rebase.forkPoint false &&
+       test_config rebase.forkPoint true &&
+       do_test_rebase "G F E D B A"
+'
+
+test_expect_success 'rebase.forkPoint set to false and command line says --fork-point' '
+       test_config rebase.forkPoint false &&
+       do_test_rebase "G F E D B A" --fork-point
+'
+
+test_expect_success 'rebase.forkPoint set to true and command line says --no-fork-point' '
+       test_config rebase.forkPoint true &&
+       do_test_rebase "G F C E D B A" --no-fork-point
+'
+
+test_expect_success 'rebase.forkPoint set to true and --root given' '
+       test_config rebase.forkPoint true &&
+       git rebase --root
+'
+
 test_done
diff --git a/t/t3437-rebase-fixup-options.sh b/t/t3437-rebase-fixup-options.sh
new file mode 100755 (executable)
index 0000000..d0bdc7e
--- /dev/null
@@ -0,0 +1,211 @@
+#!/bin/sh
+#
+# Copyright (c) 2018 Phillip Wood
+#
+
+test_description='git rebase interactive fixup options
+
+This test checks the "fixup [-C|-c]" command of rebase interactive.
+In addition to amending the contents of the commit, "fixup -C"
+replaces the original commit message with the message of the fixup
+commit. "fixup -c" also replaces the original message, but opens the
+editor to allow the user to edit the message before committing. Similar
+to the "fixup" command that works with "fixup!", "fixup -C" works with
+"amend!" upon --autosquash.
+'
+
+. ./test-lib.sh
+
+. "$TEST_DIRECTORY"/lib-rebase.sh
+
+EMPTY=""
+
+# test_commit_message <rev> -m <msg>
+# test_commit_message <rev> <path>
+# Verify that the commit message of <rev> matches
+# <msg> or the content of <path>.
+test_commit_message () {
+       git show --no-patch --pretty=format:%B "$1" >actual &&
+       case "$2" in
+       -m)
+               echo "$3" >expect &&
+               test_cmp expect actual ;;
+       *)
+               test_cmp "$2" actual ;;
+       esac
+}
+
+get_author () {
+       rev="$1" &&
+       git log -1 --pretty=format:"%an %ae %at" "$rev"
+}
+
+test_expect_success 'setup' '
+       cat >message <<-EOF &&
+       amend! B
+       $EMPTY
+       new subject
+       $EMPTY
+       new
+       body
+       EOF
+
+       test_commit A A &&
+       test_commit B B &&
+       get_author HEAD >expected-author &&
+       ORIG_AUTHOR_NAME="$GIT_AUTHOR_NAME" &&
+       ORIG_AUTHOR_EMAIL="$GIT_AUTHOR_EMAIL" &&
+       GIT_AUTHOR_NAME="Amend Author" &&
+       GIT_AUTHOR_EMAIL="amend@example.com" &&
+       test_commit "$(cat message)" A A1 A1 &&
+       test_commit A2 A &&
+       test_commit A3 A &&
+       GIT_AUTHOR_NAME="$ORIG_AUTHOR_NAME" &&
+       GIT_AUTHOR_EMAIL="$ORIG_AUTHOR_EMAIL" &&
+       git checkout -b conflicts-branch A &&
+       test_commit conflicts A &&
+
+       set_fake_editor &&
+       git checkout -b branch B &&
+       echo B1 >B &&
+       test_tick &&
+       git commit --fixup=HEAD -a &&
+       git tag B1 &&
+       test_tick &&
+       FAKE_COMMIT_AMEND="edited 1" git commit --fixup=reword:B &&
+       test_tick &&
+       FAKE_COMMIT_AMEND="edited 2" git commit --fixup=reword:HEAD &&
+       echo B2 >B &&
+       test_tick &&
+       FAKE_COMMIT_AMEND="edited squash" git commit --squash=HEAD -a &&
+       git tag B2 &&
+       echo B3 >B &&
+       test_tick &&
+       FAKE_COMMIT_AMEND="edited 3" git commit -a --fixup=amend:HEAD^ &&
+       git tag B3 &&
+
+       GIT_AUTHOR_NAME="Rebase Author" &&
+       GIT_AUTHOR_EMAIL="rebase.author@example.com" &&
+       GIT_COMMITTER_NAME="Rebase Committer" &&
+       GIT_COMMITTER_EMAIL="rebase.committer@example.com"
+'
+
+test_expect_success 'simple fixup -C works' '
+       test_when_finished "test_might_fail git rebase --abort" &&
+       git checkout --detach A2 &&
+       FAKE_LINES="1 fixup_-C 2" git rebase -i B &&
+       test_cmp_rev HEAD^ B &&
+       test_cmp_rev HEAD^{tree} A2^{tree} &&
+       test_commit_message HEAD -m "A2"
+'
+
+test_expect_success 'simple fixup -c works' '
+       test_when_finished "test_might_fail git rebase --abort" &&
+       git checkout --detach A2 &&
+       git log -1 --pretty=format:%B >expected-fixup-message &&
+       test_write_lines "" "Modified A2" >>expected-fixup-message &&
+       FAKE_LINES="1 fixup_-c 2" \
+               FAKE_COMMIT_AMEND="Modified A2" \
+               git rebase -i B &&
+       test_cmp_rev HEAD^ B &&
+       test_cmp_rev HEAD^{tree} A2^{tree} &&
+       test_commit_message HEAD expected-fixup-message
+'
+
+test_expect_success 'fixup -C removes amend! from message' '
+       test_when_finished "test_might_fail git rebase --abort" &&
+       git checkout --detach A1 &&
+       git log -1 --pretty=format:%b >expected-message &&
+       FAKE_LINES="1 fixup_-C 2" git rebase -i A &&
+       test_cmp_rev HEAD^ A &&
+       test_cmp_rev HEAD^{tree} A1^{tree} &&
+       test_commit_message HEAD expected-message &&
+       get_author HEAD >actual-author &&
+       test_cmp expected-author actual-author
+'
+
+test_expect_success 'fixup -C with conflicts gives correct message' '
+       test_when_finished "test_might_fail git rebase --abort" &&
+       git checkout --detach A1 &&
+       git log -1 --pretty=format:%b >expected-message &&
+       test_write_lines "" "edited" >>expected-message &&
+       test_must_fail env FAKE_LINES="1 fixup_-C 2" git rebase -i conflicts &&
+       git checkout --theirs -- A &&
+       git add A &&
+       FAKE_COMMIT_AMEND=edited git rebase --continue &&
+       test_cmp_rev HEAD^ conflicts &&
+       test_cmp_rev HEAD^{tree} A1^{tree} &&
+       test_commit_message HEAD expected-message &&
+       get_author HEAD >actual-author &&
+       test_cmp expected-author actual-author
+'
+
+test_expect_success 'skipping fixup -C after fixup gives correct message' '
+       test_when_finished "test_might_fail git rebase --abort" &&
+       git checkout --detach A3 &&
+       test_must_fail env FAKE_LINES="1 fixup 2 fixup_-C 4" git rebase -i A &&
+       git reset --hard &&
+       FAKE_COMMIT_AMEND=edited git rebase --continue &&
+       test_commit_message HEAD -m "B"
+'
+
+test_expect_success 'sequence of fixup, fixup -C & squash --signoff works' '
+       git checkout --detach B3 &&
+       FAKE_LINES="1 fixup 2 fixup_-C 3 fixup_-C 4 squash 5 fixup_-C 6" \
+               FAKE_COMMIT_AMEND=squashed \
+               FAKE_MESSAGE_COPY=actual-squash-message \
+               git -c commit.status=false rebase -ik --signoff A &&
+       git diff-tree --exit-code --patch HEAD B3 -- &&
+       test_cmp_rev HEAD^ A &&
+       test_i18ncmp "$TEST_DIRECTORY/t3437/expected-squash-message" \
+               actual-squash-message
+'
+
+test_expect_success 'first fixup -C commented out in sequence fixup fixup -C fixup -C' '
+       test_when_finished "test_might_fail git rebase --abort" &&
+       git checkout --detach B2~ &&
+       git log -1 --pretty=format:%b >expected-message &&
+       FAKE_LINES="1 fixup 2 fixup_-C 3 fixup_-C 4" git rebase -i A &&
+       test_cmp_rev HEAD^ A &&
+       test_commit_message HEAD expected-message
+'
+
+test_expect_success 'multiple fixup -c opens editor once' '
+       test_when_finished "test_might_fail git rebase --abort" &&
+       git checkout --detach A3 &&
+       git log -1 --pretty=format:%B >expected-message &&
+       test_write_lines "" "Modified-A3" >>expected-message &&
+       FAKE_COMMIT_AMEND="Modified-A3" \
+               FAKE_LINES="1 fixup_-C 2 fixup_-c 3 fixup_-c 4" \
+               EXPECT_HEADER_COUNT=4 \
+               git rebase -i A &&
+       test_cmp_rev HEAD^ A &&
+       get_author HEAD >actual-author &&
+       test_cmp expected-author actual-author &&
+       test_commit_message HEAD expected-message
+'
+
+test_expect_success 'sequence squash, fixup & fixup -c gives combined message' '
+       test_when_finished "test_might_fail git rebase --abort" &&
+       git checkout --detach A3 &&
+       FAKE_LINES="1 squash 2 fixup 3 fixup_-c 4" \
+               FAKE_MESSAGE_COPY=actual-combined-message \
+               git -c commit.status=false rebase -i A &&
+       test_i18ncmp "$TEST_DIRECTORY/t3437/expected-combined-message" \
+               actual-combined-message &&
+       test_cmp_rev HEAD^ A
+'
+
+test_expect_success 'fixup -C works upon --autosquash with amend!' '
+       git checkout --detach B3 &&
+       FAKE_COMMIT_AMEND=squashed \
+               FAKE_MESSAGE_COPY=actual-squash-message \
+               git -c commit.status=false rebase -ik --autosquash \
+                                               --signoff A &&
+       git diff-tree --exit-code --patch HEAD B3 -- &&
+       test_cmp_rev HEAD^ A &&
+       test_i18ncmp "$TEST_DIRECTORY/t3437/expected-squash-message" \
+               actual-squash-message
+'
+
+test_done
diff --git a/t/t3437/expected-combined-message b/t/t3437/expected-combined-message
new file mode 100644 (file)
index 0000000..a26cfb2
--- /dev/null
@@ -0,0 +1,21 @@
+# This is a combination of 4 commits.
+# This is the 1st commit message:
+
+B
+
+# This is the commit message #2:
+
+# amend! B
+
+new subject
+
+new
+body
+
+# The commit message #3 will be skipped:
+
+# A2
+
+# This is the commit message #4:
+
+A3
diff --git a/t/t3437/expected-squash-message b/t/t3437/expected-squash-message
new file mode 100644 (file)
index 0000000..ab2434f
--- /dev/null
@@ -0,0 +1,51 @@
+# This is a combination of 6 commits.
+# The 1st commit message will be skipped:
+
+# B
+#
+# Signed-off-by: Rebase Committer <rebase.committer@example.com>
+
+# The commit message #2 will be skipped:
+
+# fixup! B
+
+# The commit message #3 will be skipped:
+
+# amend! B
+#
+# B
+#
+# edited 1
+#
+# Signed-off-by: Rebase Committer <rebase.committer@example.com>
+
+# This is the commit message #4:
+
+# amend! amend! B
+
+B
+
+edited 1
+
+edited 2
+
+Signed-off-by: Rebase Committer <rebase.committer@example.com>
+
+# This is the commit message #5:
+
+# squash! amend! amend! B
+
+edited squash
+
+# This is the commit message #6:
+
+# amend! amend! amend! B
+
+B
+
+edited 1
+
+edited 2
+
+edited 3
+squashed
index 9198535874c9788df49b6ad71183b5372d44eacd..4581ae98b87cf1f05d018cfc07599e8e26d256da 100755 (executable)
@@ -74,10 +74,10 @@ test_expect_success 'cherry-pick --continue rejects --rerere-autoupdate' '
        git diff-files --quiet &&
        test_must_fail git cherry-pick --continue --rerere-autoupdate >actual 2>&1 &&
        echo "fatal: cherry-pick: --rerere-autoupdate cannot be used with --continue" >expect &&
-       test_i18ncmp expect actual &&
+       test_cmp expect actual &&
        test_must_fail git cherry-pick --continue --no-rerere-autoupdate >actual 2>&1 &&
        echo "fatal: cherry-pick: --no-rerere-autoupdate cannot be used with --continue" >expect &&
-       test_i18ncmp expect actual &&
+       test_cmp expect actual &&
        git cherry-pick --abort
 '
 
index 5f4564c830682223187f160b343a1a8604a49018..014001b8f325c0f1d8b140e7828332bb15610574 100755 (executable)
@@ -59,7 +59,7 @@ test_expect_success 'advice from failed cherry-pick' "
        EOF
        test_must_fail git cherry-pick picked 2>actual &&
 
-       test_i18ncmp expected actual
+       test_cmp expected actual
 "
 
 test_expect_success 'advice from failed cherry-pick --no-commit' "
@@ -73,7 +73,7 @@ test_expect_success 'advice from failed cherry-pick --no-commit' "
        EOF
        test_must_fail git cherry-pick --no-commit picked 2>actual &&
 
-       test_i18ncmp expected actual
+       test_cmp expected actual
 "
 
 test_expect_success 'failed cherry-pick sets CHERRY_PICK_HEAD' '
@@ -256,7 +256,7 @@ test_expect_success \
 
        test_must_fail git cherry-pick picked &&
 
-       test_i18ncmp expected .git/MERGE_MSG
+       test_cmp expected .git/MERGE_MSG
 '
 
 test_expect_success \
@@ -276,7 +276,7 @@ test_expect_success \
 
        test_must_fail git cherry-pick --cleanup=scissors picked &&
 
-       test_i18ncmp expected .git/MERGE_MSG
+       test_cmp expected .git/MERGE_MSG
 '
 
 test_expect_success 'failed cherry-pick describes conflict in work tree' '
@@ -465,7 +465,7 @@ test_expect_success \
        test_must_fail git revert picked &&
 
        sed "s/$OID_REGEX/OBJID/" .git/MERGE_MSG >actual &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 test_expect_success \
@@ -488,7 +488,7 @@ test_expect_success \
        test_must_fail git revert --cleanup=scissors picked &&
 
        sed "s/$OID_REGEX/OBJID/" .git/MERGE_MSG >actual &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 test_expect_success 'failed cherry-pick does not forget -s' '
index ec7a2c9fcfa2f2636c428ed78b12050cfa733d46..e8375d1c970e3313302a2580d742f1e88732070c 100755 (executable)
@@ -86,7 +86,7 @@ test_expect_success 'output to keep user entertained during multi-pick' '
        git cherry-pick first..fourth >actual &&
        sed -e "s/$_x05[0-9a-f][0-9a-f]/OBJID/" <actual >actual.fuzzy &&
        test_line_count -ge 3 actual.fuzzy &&
-       test_i18ncmp expected actual.fuzzy
+       test_cmp expected actual.fuzzy
 '
 
 test_expect_success 'cherry-pick --strategy resolve first..fourth works' '
@@ -123,7 +123,7 @@ test_expect_success 'output during multi-pick indicates merge strategy' '
        test_tick &&
        git cherry-pick --strategy resolve first..fourth >actual &&
        sed -e "s/$_x05[0-9a-f][0-9a-f]/OBJID/" <actual >actual.fuzzy &&
-       test_i18ncmp expected actual.fuzzy
+       test_cmp expected actual.fuzzy
 '
 
 test_expect_success 'cherry-pick --ff first..fourth works' '
index 5b94fdaa6713a2bcf7958d6630925a09fea05ed6..49010aa9469d9dc48637e80fae79248a8cf826fb 100755 (executable)
@@ -65,7 +65,7 @@ test_expect_success 'cherry-pick persists opts correctly' '
        # gets interrupted, use a high-enough number that is larger
        # than the number of parents of any commit we have created
        mainline=4 &&
-       test_expect_code 128 git cherry-pick -s -m $mainline --strategy=recursive -X patience -X ours initial..anotherpick &&
+       test_expect_code 128 git cherry-pick -s -m $mainline --strategy=recursive -X patience -X ours --edit initial..anotherpick &&
        test_path_is_dir .git/sequencer &&
        test_path_is_file .git/sequencer/head &&
        test_path_is_file .git/sequencer/todo &&
@@ -84,6 +84,36 @@ test_expect_success 'cherry-pick persists opts correctly' '
        ours
        EOF
        git config --file=.git/sequencer/opts --get-all options.strategy-option >actual &&
+       test_cmp expect actual &&
+       echo "true" >expect &&
+       git config --file=.git/sequencer/opts --get-all options.edit >actual &&
+       test_cmp expect actual
+'
+
+test_expect_success 'revert persists opts correctly' '
+       pristine_detach initial &&
+       # to make sure that the session to revert a sequence
+       # gets interrupted, revert commits that are not in the history
+       # of HEAD.
+       test_expect_code 1 git revert -s --strategy=recursive -X patience -X ours --no-edit picked yetanotherpick &&
+       test_path_is_dir .git/sequencer &&
+       test_path_is_file .git/sequencer/head &&
+       test_path_is_file .git/sequencer/todo &&
+       test_path_is_file .git/sequencer/opts &&
+       echo "true" >expect &&
+       git config --file=.git/sequencer/opts --get-all options.signoff >actual &&
+       test_cmp expect actual &&
+       echo "recursive" >expect &&
+       git config --file=.git/sequencer/opts --get-all options.strategy >actual &&
+       test_cmp expect actual &&
+       cat >expect <<-\EOF &&
+       patience
+       ours
+       EOF
+       git config --file=.git/sequencer/opts --get-all options.strategy-option >actual &&
+       test_cmp expect actual &&
+       echo "false" >expect &&
+       git config --file=.git/sequencer/opts --get-all options.edit >actual &&
        test_cmp expect actual
 '
 
@@ -170,7 +200,7 @@ test_expect_success 'check advice when we move HEAD by committing' '
        git commit -a &&
        test_path_is_missing .git/CHERRY_PICK_HEAD &&
        test_must_fail git cherry-pick --skip 2>advice &&
-       test_i18ncmp expect advice
+       test_cmp expect advice
 '
 
 test_expect_success 'selectively advise --skip while launching another sequence' '
@@ -182,7 +212,7 @@ test_expect_success 'selectively advise --skip while launching another sequence'
        EOF
        test_must_fail git cherry-pick picked..yetanotherpick &&
        test_must_fail git cherry-pick picked..yetanotherpick 2>advice &&
-       test_i18ncmp expect advice &&
+       test_cmp expect advice &&
        cat >expect <<-EOF &&
        error: cherry-pick is already in progress
        hint: try "git cherry-pick (--continue | --abort | --quit)"
@@ -190,7 +220,7 @@ test_expect_success 'selectively advise --skip while launching another sequence'
        EOF
        git reset --merge &&
        test_must_fail git cherry-pick picked..yetanotherpick 2>advice &&
-       test_i18ncmp expect advice
+       test_cmp expect advice
 '
 
 test_expect_success 'allow skipping commit but not abort for a new history' '
@@ -204,7 +234,7 @@ test_expect_success 'allow skipping commit but not abort for a new history' '
        test_must_fail git cherry-pick anotherpick &&
        test_must_fail git cherry-pick --abort 2>advice &&
        git cherry-pick --skip &&
-       test_i18ncmp expect advice
+       test_cmp expect advice
 '
 
 test_expect_success 'allow skipping stopped cherry-pick because of untracked file modifications' '
index dff12286699f21c9b6c235a45d8af1cecef95938..bb9ef35dac082e396d5cbcbdc83bc5394fb95a7c 100755 (executable)
@@ -243,7 +243,7 @@ test_expect_success 'refresh index before checking if it is up-to-date' '
        test_path_is_missing frotz/nitfol
 '
 
-test_expect_success 'choking "git rm" should not let it die with cruft' '
+choke_git_rm_setup() {
        git reset -q --hard &&
        test_when_finished "rm -f .git/index.lock && git reset -q --hard" &&
        i=0 &&
@@ -252,12 +252,24 @@ test_expect_success 'choking "git rm" should not let it die with cruft' '
        do
                echo "100644 $hash 0    some-file-$i"
                i=$(( $i + 1 ))
-       done | git update-index --index-info &&
+       done | git update-index --index-info
+}
+
+test_expect_success 'choking "git rm" should not let it die with cruft (induce SIGPIPE)' '
+       choke_git_rm_setup &&
        # git command is intentionally placed upstream of pipe to induce SIGPIPE
        git rm -n "some-file-*" | : &&
        test_path_is_missing .git/index.lock
 '
 
+
+test_expect_success !MINGW 'choking "git rm" should not let it die with cruft (induce and check SIGPIPE)' '
+       choke_git_rm_setup &&
+       OUT=$( ((trap "" PIPE; git rm -n "some-file-*"; echo $? 1>&3) | :) 3>&1 ) &&
+       test_match_signal 13 "$OUT" &&
+       test_path_is_missing .git/index.lock
+'
+
 test_expect_success 'Resolving by removal is not a warning-worthy event' '
        git reset -q --hard &&
        test_when_finished "rm -f .git/index.lock msg && git reset -q --hard" &&
@@ -442,7 +454,7 @@ test_expect_success 'rm issues a warning when section is not found in .gitmodule
        git add .gitmodules &&
        echo "warning: Could not find section in .gitmodules where path=submod" >expect.err &&
        git rm submod >actual 2>actual.err &&
-       test_i18ncmp expect.err actual.err &&
+       test_cmp expect.err actual.err &&
        test_path_is_missing submod &&
        test_path_is_missing submod/.git &&
        git status -s -uno >actual &&
@@ -812,7 +824,7 @@ test_expect_success 'rm files with different staged content' '
        echo content1 >foo.txt &&
        echo content1 >bar.txt &&
        test_must_fail git rm foo.txt bar.txt 2>actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success 'rm files with different staged content without hints' '
@@ -825,7 +837,7 @@ test_expect_success 'rm files with different staged content without hints' '
        echo content2 >foo.txt &&
        echo content2 >bar.txt &&
        test_must_fail git -c advice.rmhints=false rm foo.txt bar.txt 2>actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success 'rm file with local modification' '
@@ -837,7 +849,7 @@ test_expect_success 'rm file with local modification' '
        git commit -m "testing rm 3" &&
        echo content3 >foo.txt &&
        test_must_fail git rm foo.txt 2>actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success 'rm file with local modification without hints' '
@@ -847,7 +859,7 @@ test_expect_success 'rm file with local modification without hints' '
        EOF
        echo content4 >bar.txt &&
        test_must_fail git -c advice.rmhints=false rm bar.txt 2>actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success 'rm file with changes in the index' '
@@ -860,7 +872,7 @@ test_expect_success 'rm file with changes in the index' '
        echo content5 >foo.txt &&
        git add foo.txt &&
        test_must_fail git rm foo.txt 2>actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success 'rm file with changes in the index without hints' '
@@ -869,7 +881,7 @@ test_expect_success 'rm file with changes in the index without hints' '
            foo.txt
        EOF
        test_must_fail git -c advice.rmhints=false rm foo.txt 2>actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success 'rm files with two different errors' '
@@ -888,7 +900,7 @@ test_expect_success 'rm files with two different errors' '
        echo content6 >bar1.txt &&
        git add bar1.txt &&
        test_must_fail git rm bar1.txt foo1.txt 2>actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success 'rm empty string should fail' '
index b7d4ba608cbc96998fdac714ebb53a0f53c46f9e..b3b122ff977c20895df9e3d84b9511e603a435d3 100755 (executable)
@@ -304,7 +304,7 @@ test_expect_success 'error on a repository with no commits' '
        error: '"'empty/'"' does not have a commit checked out
        fatal: adding files failed
        EOF
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success 'git add --dry-run of existing changed file' "
@@ -320,7 +320,7 @@ test_expect_success 'git add --dry-run of non-existing file' "
 
 test_expect_success 'git add --dry-run of an existing file output' "
        echo \"fatal: pathspec 'ignored-file' did not match any files\" >expect &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 "
 
 cat >expect.err <<\EOF
@@ -339,8 +339,8 @@ test_expect_success 'git add --dry-run --ignore-missing of non-existing file' '
 '
 
 test_expect_success 'git add --dry-run --ignore-missing of non-existing file output' '
-       test_i18ncmp expect.out actual.out &&
-       test_i18ncmp expect.err actual.err
+       test_cmp expect.out actual.out &&
+       test_cmp expect.err actual.err
 '
 
 test_expect_success 'git add empty string should fail' '
@@ -386,6 +386,36 @@ test_expect_success POSIXPERM 'git add --chmod=[+-]x does not change the working
        ! test -x foo4
 '
 
+test_expect_success 'git add --chmod fails with non regular files (but updates the other paths)' '
+       git reset --hard &&
+       test_ln_s_add foo foo3 &&
+       touch foo4 &&
+       test_must_fail git add --chmod=+x foo3 foo4 2>stderr &&
+       test_i18ngrep "cannot chmod +x .foo3." stderr &&
+       test_mode_in_index 120000 foo3 &&
+       test_mode_in_index 100755 foo4
+'
+
+test_expect_success 'git add --chmod honors --dry-run' '
+       git reset --hard &&
+       echo foo >foo4 &&
+       git add foo4 &&
+       git add --chmod=+x --dry-run foo4 &&
+       test_mode_in_index 100644 foo4
+'
+
+test_expect_success 'git add --chmod --dry-run reports error for non regular files' '
+       git reset --hard &&
+       test_ln_s_add foo foo4 &&
+       test_must_fail git add --chmod=+x --dry-run foo4 2>stderr &&
+       test_i18ngrep "cannot chmod +x .foo4." stderr
+'
+
+test_expect_success 'git add --chmod --dry-run reports error for unmatched pathspec' '
+       test_must_fail git add --chmod=+x --dry-run nonexistent 2>stderr &&
+       test_i18ngrep "pathspec .nonexistent. did not match any files" stderr
+'
+
 test_expect_success 'no file status change if no pathspec is given' '
        >foo5 &&
        >foo6 &&
@@ -409,11 +439,17 @@ test_expect_success 'no file status change if no pathspec is given in subdir' '
 '
 
 test_expect_success 'all statuses changed in folder if . is given' '
-       rm -fr empty &&
-       git add --chmod=+x . &&
-       test $(git ls-files --stage | grep ^100644 | wc -l) -eq 0 &&
-       git add --chmod=-x . &&
-       test $(git ls-files --stage | grep ^100755 | wc -l) -eq 0
+       git init repo &&
+       (
+               cd repo &&
+               mkdir -p sub/dir &&
+               touch x y z sub/a sub/dir/b &&
+               git add -A &&
+               git add --chmod=+x . &&
+               test $(git ls-files --stage | grep ^100644 | wc -l) -eq 0 &&
+               git add --chmod=-x . &&
+               test $(git ls-files --stage | grep ^100755 | wc -l) -eq 0
+       )
 '
 
 test_expect_success CASE_INSENSITIVE_FS 'path is case-insensitive' '
index b2f90997dbc0457b8d06563977e2d7f4b1fc345d..207714655f283971f791b4ab2426aa0d7b910080 100755 (executable)
@@ -370,7 +370,7 @@ test_expect_success 'setup expected' '
 '
 
 # Test splitting the first patch, then adding both
-test_expect_success C_LOCALE_OUTPUT 'add first line works' '
+test_expect_success 'add first line works' '
        git commit -am "clear local changes" &&
        git apply patch &&
        printf "%s\n" s y y | git add -p file 2>error |
@@ -974,7 +974,7 @@ test_expect_success 'show help from add--helper' '
        EOF
        test_write_lines h | force_color git add -i >actual.colored &&
        test_decode_color <actual.colored >actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_done
index 86bfeb271ecb616d64cf483d8a46e33fa55ecc7b..6275c98523f73138acaae7fd807f38924bf8e625 100755 (executable)
@@ -13,13 +13,11 @@ test_description='git mktag: tag object verify test'
 
 check_verify_failure () {
        test_expect_success "$1" "
-               test_must_fail env GIT_TEST_GETTEXT_POISON=false \
-                       git mktag <tag.sig 2>message &&
+               test_must_fail git mktag <tag.sig 2>message &&
                grep '$2' message &&
                if test '$3' != '--no-strict'
                then
-                       test_must_fail env GIT_TEST_GETTEXT_POISON=false \
-                               git mktag --no-strict <tag.sig 2>message.no-strict &&
+                       test_must_fail git mktag --no-strict <tag.sig 2>message.no-strict &&
                        grep '$2' message.no-strict
                fi
        "
@@ -443,11 +441,9 @@ test_expect_success 'invalid header entry config & fsck' '
        git -c fsck.extraHeaderEntry=ignore mktag --no-strict <tag.sig &&
 
        git fsck &&
-       env GIT_TEST_GETTEXT_POISON=false \
-               git -c fsck.extraHeaderEntry=warn fsck 2>err &&
+       git -c fsck.extraHeaderEntry=warn fsck 2>err &&
        grep "warning .*extraHeaderEntry:" err &&
-       test_must_fail env GIT_TEST_GETTEXT_POISON=false \
-               git -c fsck.extraHeaderEntry=error 2>err fsck &&
+       test_must_fail git -c fsck.extraHeaderEntry=error 2>err fsck &&
        grep "error .* extraHeaderEntry:" err
 '
 
index d277a9f4b7216431d2e6fbc414b60188b36df12b..bfab245eb32b07d9a30810f9b388dcf9c629bdf3 100755 (executable)
@@ -226,10 +226,6 @@ test_commit_autosquash_multi_encoding () {
                git rev-list HEAD >actual &&
                test_line_count = 3 actual &&
                iconv -f $old -t UTF-8 "$TEST_DIRECTORY"/t3900/$msg >expect &&
-               if test $flag = squash; then
-                       subject="$(head -1 expect)" &&
-                       printf "\nsquash! %s\n" "$subject" >>expect
-               fi &&
                git cat-file commit HEAD^ >raw &&
                (sed "1,/^$/d" raw | iconv -f $new -t utf-8) >actual &&
                test_cmp expect actual
index 84b039e5739378fd6ef1365d643304b862a7b95a..5f282ecf6175d381242b13178b9088a76cd28805 100755 (executable)
@@ -564,7 +564,7 @@ test_expect_success 'stash show format defaults to --stat' '
         1 file changed, 1 insertion(+)
        EOF
        git stash show ${STASH_ID} >actual &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 test_expect_success 'stash show - stashes on stack, stash-like argument' '
@@ -792,7 +792,7 @@ test_expect_success 'apply: show same status as git status (relative to ./)' '
                git stash apply
        ) |
        sed -e 1d >actual && # drop "Saved..."
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 cat >expect <<EOF
@@ -1114,7 +1114,7 @@ test_expect_success 'stash push -p with pathspec shows no changes only once' '
        git stash push -p foo >actual &&
        echo "No local changes to save" >expect &&
        git reset --hard HEAD~ &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success 'push <pathspec>: show no changes when there are none' '
@@ -1124,7 +1124,7 @@ test_expect_success 'push <pathspec>: show no changes when there are none' '
        git stash push foo >actual &&
        echo "No local changes to save" >expect &&
        git reset --hard HEAD~ &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success 'push: <pathspec> not in the repository errors out' '
index f075c7f1f3165adc256e0018d26c34e8f7823b96..8314ab21d431c28bdde1051467e2f73d9c199ef3 100755 (executable)
@@ -8,16 +8,16 @@ test_description='Test git stash --include-untracked'
 . ./test-lib.sh
 
 test_expect_success 'stash save --include-untracked some dirty working directory' '
-       echo 1 > file &&
+       echo 1 >file &&
        git add file &&
        test_tick &&
        git commit -m initial &&
-       echo 2 > file &&
+       echo 2 >file &&
        git add file &&
-       echo 3 > file &&
+       echo 3 >file &&
        test_tick &&
-       echo 1 > file2 &&
-       echo 1 > HEAD &&
+       echo 1 >file2 &&
+       echo 1 >HEAD &&
        mkdir untracked &&
        echo untracked >untracked/untracked &&
        git stash --include-untracked &&
@@ -25,48 +25,50 @@ test_expect_success 'stash save --include-untracked some dirty working directory
        git diff-index --cached --quiet HEAD
 '
 
-cat > expect <<EOF
-?? actual
-?? expect
-EOF
-
 test_expect_success 'stash save --include-untracked cleaned the untracked files' '
+       cat >expect <<-EOF &&
+       ?? actual
+       ?? expect
+       EOF
+
        git status --porcelain >actual &&
        test_cmp expect actual
 '
 
-tracked=$(git rev-parse --short $(echo 1 | git hash-object --stdin))
-untracked=$(git rev-parse --short $(echo untracked | git hash-object --stdin))
-cat > expect.diff <<EOF
-diff --git a/HEAD b/HEAD
-new file mode 100644
-index 0000000..$tracked
---- /dev/null
-+++ b/HEAD
-@@ -0,0 +1 @@
-+1
-diff --git a/file2 b/file2
-new file mode 100644
-index 0000000..$tracked
---- /dev/null
-+++ b/file2
-@@ -0,0 +1 @@
-+1
-diff --git a/untracked/untracked b/untracked/untracked
-new file mode 100644
-index 0000000..$untracked
---- /dev/null
-+++ b/untracked/untracked
-@@ -0,0 +1 @@
-+untracked
-EOF
-cat > expect.lstree <<EOF
-HEAD
-file2
-untracked
-EOF
-
 test_expect_success 'stash save --include-untracked stashed the untracked files' '
+       one_blob=$(echo 1 | git hash-object --stdin) &&
+       tracked=$(git rev-parse --short "$one_blob") &&
+       untracked_blob=$(echo untracked | git hash-object --stdin) &&
+       untracked=$(git rev-parse --short "$untracked_blob") &&
+       cat >expect.diff <<-EOF &&
+       diff --git a/HEAD b/HEAD
+       new file mode 100644
+       index 0000000..$tracked
+       --- /dev/null
+       +++ b/HEAD
+       @@ -0,0 +1 @@
+       +1
+       diff --git a/file2 b/file2
+       new file mode 100644
+       index 0000000..$tracked
+       --- /dev/null
+       +++ b/file2
+       @@ -0,0 +1 @@
+       +1
+       diff --git a/untracked/untracked b/untracked/untracked
+       new file mode 100644
+       index 0000000..$untracked
+       --- /dev/null
+       +++ b/untracked/untracked
+       @@ -0,0 +1 @@
+       +untracked
+       EOF
+       cat >expect.lstree <<-EOF &&
+       HEAD
+       file2
+       untracked
+       EOF
+
        test_path_is_missing file2 &&
        test_path_is_missing untracked &&
        test_path_is_missing HEAD &&
@@ -83,57 +85,64 @@ test_expect_success 'stash save --patch --all fails' '
        test_must_fail git stash --patch --all
 '
 
-git clean --force --quiet
+test_expect_success 'clean up untracked/untracked file to prepare for next tests' '
+       git clean --force --quiet
 
-cat > expect <<EOF
- M file
-?? HEAD
-?? actual
-?? expect
-?? file2
-?? untracked/
-EOF
+'
 
 test_expect_success 'stash pop after save --include-untracked leaves files untracked again' '
+       cat >expect <<-EOF &&
+        M file
+       ?? HEAD
+       ?? actual
+       ?? expect
+       ?? file2
+       ?? untracked/
+       EOF
+
        git stash pop &&
        git status --porcelain >actual &&
        test_cmp expect actual &&
-       test "1" = "$(cat file2)" &&
-       test untracked = "$(cat untracked/untracked)"
+       echo 1 >expect_file2 &&
+       test_cmp expect_file2 file2 &&
+       echo untracked >untracked_expect &&
+       test_cmp untracked_expect untracked/untracked
 '
 
-git clean --force --quiet -d
+test_expect_success 'clean up untracked/ directory to prepare for next tests' '
+       git clean --force --quiet -d
+'
 
 test_expect_success 'stash save -u dirty index' '
-       echo 4 > file3 &&
+       echo 4 >file3 &&
        git add file3 &&
        test_tick &&
        git stash -u
 '
 
-blob=$(git rev-parse --short $(echo 4 | git hash-object --stdin))
-cat > expect <<EOF
-diff --git a/file3 b/file3
-new file mode 100644
-index 0000000..$blob
---- /dev/null
-+++ b/file3
-@@ -0,0 +1 @@
-+4
-EOF
-
 test_expect_success 'stash save --include-untracked dirty index got stashed' '
+       four_blob=$(echo 4 | git hash-object --stdin) &&
+       blob=$(git rev-parse --short "$four_blob") &&
+       cat >expect <<-EOF &&
+       diff --git a/file3 b/file3
+       new file mode 100644
+       index 0000000..$blob
+       --- /dev/null
+       +++ b/file3
+       @@ -0,0 +1 @@
+       +4
+       EOF
+
        git stash pop --index &&
+       test_when_finished "git reset" &&
        git diff --cached >actual &&
        test_cmp expect actual
 '
 
-git reset > /dev/null
-
 # Must direct output somewhere where it won't be considered an untracked file
 test_expect_success 'stash save --include-untracked -q is quiet' '
-       echo 1 > file5 &&
-       git stash save --include-untracked --quiet > .git/stash-output.out 2>&1 &&
+       echo 1 >file5 &&
+       git stash save --include-untracked --quiet >.git/stash-output.out 2>&1 &&
        test_line_count = 0 .git/stash-output.out &&
        rm -f .git/stash-output.out
 '
@@ -141,35 +150,34 @@ test_expect_success 'stash save --include-untracked -q is quiet' '
 test_expect_success 'stash save --include-untracked removed files' '
        rm -f file &&
        git stash save --include-untracked &&
-       echo 1 > expect &&
+       echo 1 >expect &&
+       test_when_finished "rm -f expect" &&
        test_cmp expect file
 '
 
-rm -f expect
-
 test_expect_success 'stash save --include-untracked removed files got stashed' '
        git stash pop &&
        test_path_is_missing file
 '
 
-cat > .gitignore <<EOF
-.gitignore
-ignored
-ignored.d/
-EOF
-
 test_expect_success 'stash save --include-untracked respects .gitignore' '
-       echo ignored > ignored &&
+       cat >.gitignore <<-EOF &&
+       .gitignore
+       ignored
+       ignored.d/
+       EOF
+
+       echo ignored >ignored &&
        mkdir ignored.d &&
        echo ignored >ignored.d/untracked &&
        git stash -u &&
-       test -s ignored &&
-       test -s ignored.d/untracked &&
-       test -s .gitignore
+       test_file_not_empty ignored &&
+       test_file_not_empty ignored.d/untracked &&
+       test_file_not_empty .gitignore
 '
 
 test_expect_success 'stash save -u can stash with only untracked files different' '
-       echo 4 > file4 &&
+       echo 4 >file4 &&
        git stash -u &&
        test_path_is_missing file4
 '
@@ -183,9 +191,9 @@ test_expect_success 'stash save --all does not respect .gitignore' '
 
 test_expect_success 'stash save --all is stash poppable' '
        git stash pop &&
-       test -s ignored &&
-       test -s ignored.d/untracked &&
-       test -s .gitignore
+       test_file_not_empty ignored &&
+       test_file_not_empty ignored.d/untracked &&
+       test_file_not_empty .gitignore
 '
 
 test_expect_success 'stash push --include-untracked with pathspec' '
@@ -214,17 +222,17 @@ test_expect_success 'stash push with $IFS character' '
        test_path_is_file bar
 '
 
-cat > .gitignore <<EOF
-ignored
-ignored.d/*
-EOF
-
 test_expect_success 'stash previously ignored file' '
+       cat >.gitignore <<-EOF &&
+       ignored
+       ignored.d/*
+       EOF
+
        git reset HEAD &&
        git add .gitignore &&
        git commit -m "Add .gitignore" &&
        >ignored.d/foo &&
-       echo "!ignored.d/foo" >> .gitignore &&
+       echo "!ignored.d/foo" >>.gitignore &&
        git stash save --include-untracked &&
        test_path_is_missing ignored.d/foo &&
        git stash pop &&
@@ -280,7 +288,7 @@ test_expect_success 'stash -u -- <ignored> leaves ignored file alone' '
 test_expect_success 'stash -u -- <non-existent> shows no changes when there are none' '
        git stash push -u -- non-existent >actual &&
        echo "No local changes to save" >expect &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success 'stash -u with globs' '
@@ -289,4 +297,112 @@ test_expect_success 'stash -u with globs' '
        test_path_is_missing untracked.txt
 '
 
+test_expect_success 'stash show --include-untracked shows untracked files' '
+       git reset --hard &&
+       git clean -xf &&
+       >untracked &&
+       >tracked &&
+       git add tracked &&
+       empty_blob_oid=$(git rev-parse --short :tracked) &&
+       git stash -u &&
+
+       cat >expect <<-EOF &&
+        tracked   | 0
+        untracked | 0
+        2 files changed, 0 insertions(+), 0 deletions(-)
+       EOF
+       git stash show --include-untracked >actual &&
+       test_cmp expect actual &&
+       git stash show -u >actual &&
+       test_cmp expect actual &&
+       git stash show --no-include-untracked --include-untracked >actual &&
+       test_cmp expect actual &&
+       git stash show --only-untracked --include-untracked >actual &&
+       test_cmp expect actual &&
+       git -c stash.showIncludeUntracked=true stash show >actual &&
+       test_cmp expect actual &&
+
+       cat >expect <<-EOF &&
+       diff --git a/tracked b/tracked
+       new file mode 100644
+       index 0000000..$empty_blob_oid
+       diff --git a/untracked b/untracked
+       new file mode 100644
+       index 0000000..$empty_blob_oid
+       EOF
+       git stash show -p --include-untracked >actual &&
+       test_cmp expect actual &&
+       git stash show --include-untracked -p >actual &&
+       test_cmp expect actual
+'
+
+test_expect_success 'stash show --only-untracked only shows untracked files' '
+       git reset --hard &&
+       git clean -xf &&
+       >untracked &&
+       >tracked &&
+       git add tracked &&
+       empty_blob_oid=$(git rev-parse --short :tracked) &&
+       git stash -u &&
+
+       cat >expect <<-EOF &&
+        untracked | 0
+        1 file changed, 0 insertions(+), 0 deletions(-)
+       EOF
+       git stash show --only-untracked >actual &&
+       test_cmp expect actual &&
+       git stash show --no-include-untracked --only-untracked >actual &&
+       test_cmp expect actual &&
+       git stash show --include-untracked --only-untracked >actual &&
+       test_cmp expect actual &&
+
+       cat >expect <<-EOF &&
+       diff --git a/untracked b/untracked
+       new file mode 100644
+       index 0000000..$empty_blob_oid
+       EOF
+       git stash show -p --only-untracked >actual &&
+       test_cmp expect actual &&
+       git stash show --only-untracked -p >actual &&
+       test_cmp expect actual
+'
+
+test_expect_success 'stash show --no-include-untracked cancels --{include,show}-untracked' '
+       git reset --hard &&
+       git clean -xf &&
+       >untracked &&
+       >tracked &&
+       git add tracked &&
+       git stash -u &&
+
+       cat >expect <<-EOF &&
+        tracked | 0
+        1 file changed, 0 insertions(+), 0 deletions(-)
+       EOF
+       git stash show --only-untracked --no-include-untracked >actual &&
+       test_cmp expect actual &&
+       git stash show --include-untracked --no-include-untracked >actual &&
+       test_cmp expect actual
+'
+
+test_expect_success 'stash show --include-untracked errors on duplicate files' '
+       git reset --hard &&
+       git clean -xf &&
+       >tracked &&
+       git add tracked &&
+       tree=$(git write-tree) &&
+       i_commit=$(git commit-tree -p HEAD -m "index on any-branch" "$tree") &&
+       test_when_finished "rm -f untracked_index" &&
+       u_commit=$(
+               GIT_INDEX_FILE="untracked_index" &&
+               export GIT_INDEX_FILE &&
+               git update-index --add tracked &&
+               u_tree=$(git write-tree) &&
+               git commit-tree -m "untracked files on any-branch" "$u_tree"
+       ) &&
+       w_commit=$(git commit-tree -p HEAD -p "$i_commit" -p "$u_commit" -m "WIP on any-branch" "$tree") &&
+       test_must_fail git stash show --include-untracked "$w_commit" 2>err &&
+       test_i18ngrep "worktree and untracked commit have duplicate entries: tracked" err
+'
+
 test_done
index a0b9208ce83dfdd359b99aec105bea0ccd30a4c2..898267a6bd1c8d1320c8e808707ba079c39933fe 100755 (executable)
@@ -194,6 +194,22 @@ test_expect_failure 'handle existing decomposed filenames' '
        test_must_be_empty untracked
 '
 
+test_expect_success "unicode decomposed: git restore -p . " '
+       DIRNAMEPWD=dir.Odiarnfc &&
+       DIRNAMEINREPO=dir.$Adiarnfc &&
+       export DIRNAMEPWD DIRNAMEINREPO &&
+       git init "$DIRNAMEPWD" &&
+       (
+               cd "$DIRNAMEPWD" &&
+               mkdir "$DIRNAMEINREPO" &&
+               cd "$DIRNAMEINREPO" &&
+               echo "Initial" >file &&
+               git add file &&
+               echo "More stuff" >>file &&
+               echo y | git restore -p .
+       )
+'
+
 # Test if the global core.precomposeunicode stops autosensing
 # Must be the last test case
 test_expect_success "respect git config --global core.precomposeunicode" '
index e5116a76a1cc660370e1f5e958f87c2844a95f83..cce334981e19ea9b38a4ae204531c66bb8a57dc3 100755 (executable)
@@ -7,7 +7,7 @@ test_description='Test built-in diff output engine.
 
 '
 . ./test-lib.sh
-. "$TEST_DIRECTORY"/diff-lib.sh
+. "$TEST_DIRECTORY"/lib-diff.sh
 
 echo >path0 'Line 1
 Line 2
index 99a5d1bd1c3a30f90f86922befd4618a411d97f1..68f2ebca58a3213fa438a792510efab84d71871a 100755 (executable)
@@ -7,7 +7,7 @@ test_description='Test rename detection in diff engine.
 
 '
 . ./test-lib.sh
-. "$TEST_DIRECTORY"/diff-lib.sh
+. "$TEST_DIRECTORY"/lib-diff.sh
 
 test_expect_success 'setup' '
        cat >path0 <<-\EOF &&
index df2accb6555d4202c789b8ffb13ae3943268586d..db07ff3eb1968d606176f44ac2428899de78c6eb 100755 (executable)
@@ -7,11 +7,11 @@ test_description='More rename detection
 
 '
 . ./test-lib.sh
-. "$TEST_DIRECTORY"/diff-lib.sh ;# test-lib chdir's into trash
+. "$TEST_DIRECTORY"/lib-diff.sh ;# test-lib chdir's into trash
 
 test_expect_success \
     'prepare reference tree' \
-    'cat "$TEST_DIRECTORY"/diff-lib/COPYING >COPYING &&
+    'cat "$TEST_DIRECTORY"/lib-diff/COPYING >COPYING &&
      echo frotz >rezrov &&
     git update-index --add COPYING rezrov &&
     tree=$(git write-tree) &&
@@ -99,7 +99,7 @@ test_expect_success \
 
 test_expect_success \
     'prepare work tree once again' \
-    'cat "$TEST_DIRECTORY"/diff-lib/COPYING >COPYING &&
+    'cat "$TEST_DIRECTORY"/lib-diff/COPYING >COPYING &&
      git update-index --add --remove COPYING COPYING.1'
 
 # tree has COPYING and rezrov.  work tree has COPYING and COPYING.1,
index 6e562c80d12f9f58353c8f6444c0d7a0737dbae4..3d495e37bb1916741be13afb7664c56b465a7310 100755 (executable)
@@ -10,7 +10,7 @@ copy of symbolic links, but should not produce rename/copy followed
 by an edit for them.
 '
 . ./test-lib.sh
-. "$TEST_DIRECTORY"/diff-lib.sh
+. "$TEST_DIRECTORY"/lib-diff.sh
 
 test_expect_success SYMLINKS \
     'prepare reference tree' \
index d18a80493c2274d19a6f779bd1c67c50b63a6290..86479061325b67038e31bc13a7948d9b0b0f9323 100755 (executable)
@@ -6,10 +6,10 @@
 test_description='Same rename detection as t4003 but testing diff-raw.'
 
 . ./test-lib.sh
-. "$TEST_DIRECTORY"/diff-lib.sh ;# test-lib chdir's into trash
+. "$TEST_DIRECTORY"/lib-diff.sh ;# test-lib chdir's into trash
 
 test_expect_success 'setup reference tree' '
-       cat "$TEST_DIRECTORY"/diff-lib/COPYING >COPYING &&
+       cat "$TEST_DIRECTORY"/lib-diff/COPYING >COPYING &&
        echo frotz >rezrov &&
        git update-index --add COPYING rezrov &&
        tree=$(git write-tree) &&
@@ -64,7 +64,7 @@ test_expect_success 'validate output from rename/copy detection (#2)' '
 # nows how to say Copy.
 
 test_expect_success 'validate output from rename/copy detection (#3)' '
-       cat "$TEST_DIRECTORY"/diff-lib/COPYING >COPYING &&
+       cat "$TEST_DIRECTORY"/lib-diff/COPYING >COPYING &&
        git update-index --add --remove COPYING COPYING.1 &&
 
        cat <<-EOF >expected &&
index 03489aff14ea72921f66605eeac3ccddd694e923..275ce5fa15be18de8a5badbb49ac617eee538bf0 100755 (executable)
@@ -39,13 +39,13 @@ test_expect_success '--stat output after text chmod' '
         1 file changed, 0 insertions(+), 0 deletions(-)
        EOF
        git diff HEAD --stat >actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success '--shortstat output after text chmod' '
        tail -n 1 <expect >expect.short &&
        git diff HEAD --shortstat >actual &&
-       test_i18ncmp expect.short actual
+       test_cmp expect.short actual
 '
 
 test_expect_success '--stat output after binary chmod' '
@@ -56,13 +56,13 @@ test_expect_success '--stat output after binary chmod' '
         2 files changed, 0 insertions(+), 0 deletions(-)
        EOF
        git diff HEAD --stat >actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success '--shortstat output after binary chmod' '
        tail -n 1 <expect >expect.short &&
        git diff HEAD --shortstat >actual &&
-       test_i18ncmp expect.short actual
+       test_cmp expect.short actual
 '
 
 test_done
index b187b7f6c66b8ade9d0ef73aa346a9205df153bc..cbb9c62f535e807d13d72008088b108101c6ec57 100755 (executable)
@@ -7,17 +7,17 @@ test_description='Rename interaction with pathspec.
 
 '
 . ./test-lib.sh
-. "$TEST_DIRECTORY"/diff-lib.sh ;# test-lib chdir's into trash
+. "$TEST_DIRECTORY"/lib-diff.sh ;# test-lib chdir's into trash
 
 test_expect_success 'prepare reference tree' '
        mkdir path0 path1 &&
-       cp "$TEST_DIRECTORY"/diff-lib/COPYING path0/COPYING &&
+       cp "$TEST_DIRECTORY"/lib-diff/COPYING path0/COPYING &&
        git update-index --add path0/COPYING &&
        tree=$(git write-tree) &&
        echo $tree
 '
 
-blob=$(git hash-object "$TEST_DIRECTORY/diff-lib/COPYING")
+blob=$(git hash-object "$TEST_DIRECTORY/lib-diff/COPYING")
 test_expect_success 'prepare work tree' '
        cp path0/COPYING path1/COPYING &&
        git update-index --add --remove path0/COPYING path1/COPYING
index b1ccd4102e09e27529eb09e873c2b4c2467a40db..2299f27511bf29fce131a890e0d8e9c6361d8a3c 100755 (executable)
@@ -22,11 +22,11 @@ With -B, this should be detected as two complete rewrites.
 Further, with -B and -M together, these should turn into two renames.
 '
 . ./test-lib.sh
-. "$TEST_DIRECTORY"/diff-lib.sh ;# test-lib chdir's into trash
+. "$TEST_DIRECTORY"/lib-diff.sh ;# test-lib chdir's into trash
 
 test_expect_success setup '
-       cat "$TEST_DIRECTORY"/diff-lib/README >file0 &&
-       cat "$TEST_DIRECTORY"/diff-lib/COPYING >file1 &&
+       cat "$TEST_DIRECTORY"/lib-diff/README >file0 &&
+       cat "$TEST_DIRECTORY"/lib-diff/COPYING >file1 &&
        blob0_id=$(git hash-object file0) &&
        blob1_id=$(git hash-object file1) &&
        git update-index --add file0 file1 &&
index b63bdf031f5186a9c482bbd08a9d95bd3beb1906..b1da807f1693147cf9a0d5fffeb1173921f08e57 100755 (executable)
@@ -7,11 +7,11 @@ test_description='Same rename detection as t4003 but testing diff-raw -z.
 
 '
 . ./test-lib.sh
-. "$TEST_DIRECTORY"/diff-lib.sh ;# test-lib chdir's into trash
+. "$TEST_DIRECTORY"/lib-diff.sh ;# test-lib chdir's into trash
 
 test_expect_success \
     'prepare reference tree' \
-    'cat "$TEST_DIRECTORY"/diff-lib/COPYING >COPYING &&
+    'cat "$TEST_DIRECTORY"/lib-diff/COPYING >COPYING &&
      echo frotz >rezrov &&
     git update-index --add COPYING rezrov &&
     orig=$(git hash-object COPYING) &&
@@ -81,7 +81,7 @@ test_expect_success \
 
 test_expect_success \
     'prepare work tree once again' \
-    'cat "$TEST_DIRECTORY"/diff-lib/COPYING >COPYING &&
+    'cat "$TEST_DIRECTORY"/lib-diff/COPYING >COPYING &&
      git update-index --add --remove COPYING COPYING.1'
 
 git diff-index -z -C --find-copies-harder $tree >current
index 65cc703c659b8941f1458e4f4b0b6d88dc5622d1..1bbced79ece861e2329663b09e8aead3daa983e0 100755 (executable)
@@ -10,7 +10,7 @@ Prepare:
         path1/file1
 '
 . ./test-lib.sh
-. "$TEST_DIRECTORY"/diff-lib.sh ;# test-lib chdir's into trash
+. "$TEST_DIRECTORY"/lib-diff.sh ;# test-lib chdir's into trash
 
 test_expect_success \
     setup \
index 717034bb50b57f3edc5d19989f0b178e912e08e6..5a25c259fe333912ba1614c2e645e03e5bdd6e02 100755 (executable)
@@ -7,7 +7,7 @@ test_description='Test diff of symlinks.
 
 '
 . ./test-lib.sh
-. "$TEST_DIRECTORY"/diff-lib.sh
+. "$TEST_DIRECTORY"/lib-diff.sh
 
 # Print the short OID of a symlink with the given name.
 symlink_oid () {
index 6579c81216a9b2e7dc6f2457cc46003dd905aa30..33ff588ebca03807da91c4a786df76c03fb9bff7 100755 (executable)
@@ -34,19 +34,19 @@ EOF
 test_expect_success 'apply --stat output for binary file change' '
        git diff >diff &&
        git apply --stat --summary <diff >current &&
-       test_i18ncmp expected current
+       test_cmp expected current
 '
 
 test_expect_success 'diff --shortstat output for binary file change' '
        tail -n 1 expected >expect &&
        git diff --shortstat >current &&
-       test_i18ncmp expect current
+       test_cmp expect current
 '
 
 test_expect_success 'diff --shortstat output for binary file change only' '
        echo " 1 file changed, 0 insertions(+), 0 deletions(-)" >expected &&
        git diff --shortstat -- b >current &&
-       test_i18ncmp expected current
+       test_cmp expected current
 '
 
 test_expect_success 'apply --numstat notices binary file change' '
@@ -63,7 +63,7 @@ test_expect_success 'apply --numstat understands diff --binary format' '
 
 # apply needs to be able to skip the binary material correctly
 # in order to report the line number of a corrupt patch.
-test_expect_success C_LOCALE_OUTPUT 'apply detecting corrupt patch correctly' '
+test_expect_success 'apply detecting corrupt patch correctly' '
        git diff >output &&
        sed -e "s/-CIT/xCIT/" <output >broken &&
        test_must_fail git apply --stat --summary broken 2>detected &&
@@ -73,7 +73,7 @@ test_expect_success C_LOCALE_OUTPUT 'apply detecting corrupt patch correctly' '
        test "$detected" = xCIT
 '
 
-test_expect_success C_LOCALE_OUTPUT 'apply detecting corrupt patch correctly' '
+test_expect_success 'apply detecting corrupt patch correctly' '
        git diff --binary | sed -e "s/-CIT/xCIT/" >broken &&
        test_must_fail git apply --stat --summary broken 2>detected &&
        detected=$(cat detected) &&
index ce6aa3914fe74f037eb2451a88e36803594b0e78..6cca8b84a6bf3f2098d47ab56bb9f8da0293dff5 100755 (executable)
@@ -9,7 +9,7 @@ GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=master
 export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
 
 . ./test-lib.sh
-. "$TEST_DIRECTORY"/diff-lib.sh
+. "$TEST_DIRECTORY"/lib-diff.sh
 
 test_expect_success setup '
 
@@ -222,7 +222,7 @@ do
                        process_diffs "$expect" >expect &&
                        case $cmd in
                        *format-patch* | *-stat*)
-                               test_i18ncmp expect actual;;
+                               test_cmp expect actual;;
                        *)
                                test_cmp expect actual;;
                        esac &&
index 66630c8413d5008caa53a2e3c36c652e61937cc5..712d4b5ddf0b1ba028c5d16b1fbb7067d83301fe 100755 (executable)
@@ -386,6 +386,30 @@ test_expect_success 'reroll count (-v)' '
        ! grep -v "^Subject: \[PATCH v4 [0-3]/3\] " subjects
 '
 
+test_expect_success 'reroll count (-v) with a fractional number' '
+       rm -fr patches &&
+       git format-patch -o patches --cover-letter -v4.4 main..side >list &&
+       ! grep -v "^patches/v4.4-000[0-3]-" list &&
+       sed -n -e "/^Subject: /p" $(cat list) >subjects &&
+       ! grep -v "^Subject: \[PATCH v4.4 [0-3]/3\] " subjects
+'
+
+test_expect_success 'reroll (-v) count with a non number' '
+       rm -fr patches &&
+       git format-patch -o patches --cover-letter -v4rev2 main..side >list &&
+       ! grep -v "^patches/v4rev2-000[0-3]-" list &&
+       sed -n -e "/^Subject: /p" $(cat list) >subjects &&
+       ! grep -v "^Subject: \[PATCH v4rev2 [0-3]/3\] " subjects
+'
+
+test_expect_success 'reroll (-v) count with a non-pathname character' '
+       rm -fr patches &&
+       git format-patch -o patches --cover-letter -v4---..././../--1/.2//  main..side >list &&
+       ! grep -v "patches/v4-\.-\.-\.-1-\.2-000[0-3]-" list &&
+       sed -n -e "/^Subject: /p" $(cat list) >subjects &&
+       ! grep -v "^Subject: \[PATCH v4---\.\.\./\./\.\./--1/\.2// [0-3]/3\] " subjects
+'
+
 check_threading () {
        expect="$1" &&
        shift &&
@@ -888,11 +912,11 @@ echo "fatal: --check does not make sense" >expect.check
 
 test_expect_success 'options no longer allowed for format-patch' '
        test_must_fail git format-patch --name-only 2>output &&
-       test_i18ncmp expect.name-only output &&
+       test_cmp expect.name-only output &&
        test_must_fail git format-patch --name-status 2>output &&
-       test_i18ncmp expect.name-status output &&
+       test_cmp expect.name-status output &&
        test_must_fail git format-patch --check 2>output &&
-       test_i18ncmp expect.check output
+       test_cmp expect.check output
 '
 
 test_expect_success 'format-patch --numstat should produce a patch' '
@@ -2255,6 +2279,16 @@ test_expect_success 'interdiff: reroll-count' '
        test_i18ngrep "^Interdiff ..* v1:$" v2-0000-cover-letter.patch
 '
 
+test_expect_success 'interdiff: reroll-count with a non-integer' '
+       git format-patch --cover-letter --interdiff=boop~2 -v2.2 -1 boop &&
+       test_i18ngrep "^Interdiff:$" v2.2-0000-cover-letter.patch
+'
+
+test_expect_success 'interdiff: reroll-count with a integer' '
+       git format-patch --cover-letter --interdiff=boop~2 -v2 -1 boop &&
+       test_i18ngrep "^Interdiff ..* v1:$" v2-0000-cover-letter.patch
+'
+
 test_expect_success 'interdiff: solo-patch' '
        cat >expect <<-\EOF &&
          +fleep
index 8c574221b27445938694163f90f90ce337bfc4e2..2c13b62d3c654807b85307748c1ec52b6f4155ff 100755 (executable)
@@ -7,7 +7,7 @@ test_description='Test special whitespace in diff engine.
 
 '
 . ./test-lib.sh
-. "$TEST_DIRECTORY"/diff-lib.sh
+. "$TEST_DIRECTORY"/lib-diff.sh
 
 test_expect_success "Ray Lehtiniemi's example" '
        cat <<-\EOF >x &&
index 9c48e5c2c99ad1eafc343a2cf6b9eeda54f644d4..876271d6826cca4fea73e8cdb459e6983db5b209 100755 (executable)
@@ -82,7 +82,7 @@ test_expect_success 'git diff --stat -M HEAD' '
         7 files changed, 0 insertions(+), 0 deletions(-)
        EOF
        git diff --stat -M HEAD >actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_done
index 894a11b224d29d7a9956f6d701e7a666d5c2f94a..94ef77e1dfedc28656d78c80b689eca6806a7b0c 100755 (executable)
@@ -3,7 +3,7 @@
 test_description='difference in submodules'
 
 . ./test-lib.sh
-. "$TEST_DIRECTORY"/diff-lib.sh
+. "$TEST_DIRECTORY"/lib-diff.sh
 
 test_expect_success setup '
        test_tick &&
index 4cb9f0e523d2218566554cdccd9c2e3929f3d05b..c906320b60dcea80369c6c4ef1f6af70295713cd 100755 (executable)
@@ -139,7 +139,7 @@ EOF
 test_expect_success 'diffstat does not run textconv' '
        echo file diff=fail >.gitattributes &&
        git diff --stat HEAD^ HEAD >actual &&
-       test_i18ncmp expect.stat actual &&
+       test_cmp expect.stat actual &&
 
        head -n1 <expect.stat >expect.line1 &&
        head -n1 <actual >actual.line1 &&
index 0c8fb39cedaa31f6f586895cd57a878158624f13..56f1e62a97bff51505956e672b023d4f681aaf1d 100755 (executable)
@@ -3,7 +3,7 @@
 test_description='word diff colors'
 
 . ./test-lib.sh
-. "$TEST_DIRECTORY"/diff-lib.sh
+. "$TEST_DIRECTORY"/lib-diff.sh
 
 cat >pre.simple <<-\EOF
        h(4)
index 09ad491a593cc4c1381492e33f09f1a1ff31bd2b..aeac203c424905be395d5ef6d43f2b606dc3bb1d 100755 (executable)
@@ -6,7 +6,7 @@ GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
 export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
 
 . ./test-lib.sh
-. "$TEST_DIRECTORY"/diff-lib.sh
+. "$TEST_DIRECTORY"/lib-diff.sh
 
 setup_helper () {
        one=$1 branch=$2 side=$3 &&
index 7be1de736d86c90ac9c36ff68c0e8f4535e9bafd..61ba5f707fbd419aa3625eeedc39210f9d6d59ac 100755 (executable)
@@ -61,7 +61,7 @@ check_stat () {
        EOF
        test_expect_success "--stat $*" "
                git -C '$dir' diff --stat $* HEAD^ >actual &&
-               test_i18ncmp expected actual
+               test_cmp expected actual
        "
 }
 
index a34121740a4ab58e8abd16b3a00df5f44d2f1648..53061b104ecc1af2eebb9d79fa2af5655236471d 100755 (executable)
@@ -25,7 +25,7 @@ test_expect_success 'mode-only change show as a 0-line change' '
         4 files changed, 2 insertions(+)
        EOF
        git diff --stat --stat-count=2 HEAD >actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success 'binary changes do not count in lines' '
@@ -40,7 +40,7 @@ test_expect_success 'binary changes do not count in lines' '
         3 files changed, 2 insertions(+)
        EOF
        git diff --stat --stat-count=2 >actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success 'exclude unmerged entries from total file count' '
@@ -62,7 +62,7 @@ test_expect_success 'exclude unmerged entries from total file count' '
         3 files changed, 3 insertions(+)
        EOF
        git diff --stat --stat-count=2 >actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_done
index 0168946b6394092bbedc4da6d57ef9ba8e205927..3feadf0e3595b2950dd6b5698ba0f25969de8b93 100755 (executable)
@@ -16,6 +16,11 @@ test_expect_success 'setup' '
        echo 1 >non/git/b
 '
 
+test_expect_success 'git diff --no-index --exit-code' '
+       git diff --no-index --exit-code a/1 non/git/a &&
+       test_expect_code 1 git diff --no-index --exit-code a/1 a/2
+'
+
 test_expect_success 'git diff --no-index directories' '
        test_expect_code 1 git diff --no-index a b >cnt &&
        test_line_count = 14 cnt
@@ -144,4 +149,59 @@ test_expect_success 'diff --no-index allows external diff' '
        test_cmp expect actual
 '
 
+test_expect_success 'diff --no-index normalizes mode: no changes' '
+       echo foo >x &&
+       cp x y &&
+       git diff --no-index x y >out &&
+       test_must_be_empty out
+'
+
+test_expect_success POSIXPERM 'diff --no-index normalizes mode: chmod +x' '
+       chmod +x y &&
+       cat >expected <<-\EOF &&
+       diff --git a/x b/y
+       old mode 100644
+       new mode 100755
+       EOF
+       test_expect_code 1 git diff --no-index x y >actual &&
+       test_cmp expected actual
+'
+
+test_expect_success POSIXPERM 'diff --no-index normalizes: mode not like git mode' '
+       chmod 666 x &&
+       chmod 777 y &&
+       cat >expected <<-\EOF &&
+       diff --git a/x b/y
+       old mode 100644
+       new mode 100755
+       EOF
+       test_expect_code 1 git diff --no-index x y >actual &&
+       test_cmp expected actual
+'
+
+test_expect_success POSIXPERM,SYMLINKS 'diff --no-index normalizes: mode not like git mode (symlink)' '
+       ln -s y z &&
+       X_OID=$(git hash-object --stdin <x) &&
+       Z_OID=$(printf y | git hash-object --stdin) &&
+       cat >expected <<-EOF &&
+       diff --git a/x b/x
+       deleted file mode 100644
+       index $X_OID..$ZERO_OID
+       --- a/x
+       +++ /dev/null
+       @@ -1 +0,0 @@
+       -foo
+       diff --git a/z b/z
+       new file mode 120000
+       index $ZERO_OID..$Z_OID
+       --- /dev/null
+       +++ b/z
+       @@ -0,0 +1 @@
+       +y
+       \ No newline at end of file
+       EOF
+       test_expect_code 1 git -c core.abbrev=no diff --no-index x z >actual &&
+       test_cmp expected actual
+'
+
 test_done
index 63ea7144bb492b1c7526c1103afc0f70a33fc8c8..aec1d9d1b42f65f1080f7e054bca70bbffcefcc6 100755 (executable)
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-test_description='diff order'
+test_description='diff order & rotate'
 
 GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
 export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
@@ -127,4 +127,74 @@ do
        '
 done
 
+### rotate and skip
+
+test_expect_success 'rotate and skip setup' '
+       >sample1.t &&
+       >sample2.t &&
+       >sample3.t &&
+       >sample4.t &&
+       git add sample[1234].t &&
+       git commit -m "added" sample[1234].t &&
+       echo modified >>sample1.t &&
+       echo modified >>sample2.t &&
+       echo modified >>sample4.t &&
+       git commit -m "updated" sample[1234].t
+'
+
+test_expect_success 'diff --rotate-to' '
+       git diff --rotate-to=sample2.t --name-only HEAD^ >actual &&
+       test_write_lines sample2.t sample4.t sample1.t >expect &&
+       test_cmp expect actual
+'
+
+test_expect_success 'diff --skip-to' '
+       git diff --skip-to=sample2.t --name-only HEAD^ >actual &&
+       test_write_lines sample2.t sample4.t >expect &&
+       test_cmp expect actual
+'
+
+test_expect_success 'diff --rotate/skip-to error condition' '
+       test_must_fail git diff --rotate-to=sample3.t HEAD^ &&
+       test_must_fail git diff --skip-to=sample3.t HEAD^
+'
+
+test_expect_success 'log --rotate-to' '
+       git log --rotate-to=sample3.t --raw HEAD~2.. >raw &&
+       # just distill the commit header and paths
+       sed -n -e "s/^commit.*/commit/p" \
+              -e "/^:/s/^.*    //p" raw >actual &&
+
+       cat >expect <<-\EOF &&
+       commit
+       sample4.t
+       sample1.t
+       sample2.t
+       commit
+       sample3.t
+       sample4.t
+       sample1.t
+       sample2.t
+       EOF
+
+       test_cmp expect actual
+'
+
+test_expect_success 'log --skip-to' '
+       git log --skip-to=sample3.t --raw HEAD~2.. >raw &&
+       # just distill the commit header and paths
+       sed -n -e "s/^commit.*/commit/p" \
+              -e "/^:/s/^.*    //p" raw >actual &&
+
+       cat >expect <<-\EOF &&
+       commit
+       sample4.t
+       commit
+       sample3.t
+       sample4.t
+       EOF
+
+       test_cmp expect actual
+'
+
 test_done
index bcf7493740a5157bbeba205eebdba83f41dc0380..7750b87ca16ab39aa965caa4fe71b462d899adc7 100755 (executable)
@@ -7,7 +7,7 @@ GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
 export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
 
 . ./test-lib.sh
-. "$TEST_DIRECTORY"/diff-lib.sh
+. "$TEST_DIRECTORY"/lib-diff.sh
 
 # Compare two diff outputs. Ignore "index" lines, because we don't
 # care about SHA-1s or file modes.
index 744b8e51beab59c78807e0622f10bf421b3142ec..9b433de83630774206fb89dfae1a4396264390cc 100755 (executable)
@@ -17,13 +17,13 @@ do
        test_expect_success "$title" '
                git apply --stat --summary \
                        <"$TEST_DIRECTORY/t4100/t-apply-$num.patch" >current &&
-               test_i18ncmp "$TEST_DIRECTORY"/t4100/t-apply-$num.expect current
+               test_cmp "$TEST_DIRECTORY"/t4100/t-apply-$num.expect current
        '
 
        test_expect_success "$title with recount" '
                sed -e "$UNC" <"$TEST_DIRECTORY/t4100/t-apply-$num.patch" |
                git apply --recount --stat --summary >current &&
-               test_i18ncmp "$TEST_DIRECTORY"/t4100/t-apply-$num.expect current
+               test_cmp "$TEST_DIRECTORY"/t4100/t-apply-$num.expect current
        '
 done <<\EOF
 rename
index 99987515dc2dde28b8654ac4ccda2071ddeffc5b..2aaaa0d7dedf68934e8d5b4c6610f1a859acbb29 100755 (executable)
@@ -906,7 +906,7 @@ test_expect_success 'am empty-file does not infloop' '
        test_tick &&
        test_must_fail git am empty-file 2>actual &&
        echo Patch format detection failed. >expected &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 test_expect_success 'am --message-id really adds the message id' '
index 8ea22d1bcbb8340d32fe87f299a77c98362c3797..b7c3861407d026e7064dbab0237bfa709859c462 100755 (executable)
@@ -61,7 +61,7 @@ test_expect_success '--no-quiet overrides --quiet' '
        # Applying side2 will be quiet.
        git am --no-quiet --continue >out &&
        echo "Applying: side1" >expected &&
-       test_i18ncmp expected out
+       test_cmp expected out
 '
 
 test_expect_success '--signoff overrides --no-signoff' '
index 621f9962d51ea862af3692d2a9fd3fc358bbab0f..d8e73742341117c1d480342478a88de7ab102f59 100755 (executable)
@@ -889,4 +889,78 @@ test_expect_success 'empty syntax: setup' '
        test_cmp expect actual
 '
 
+test_expect_success 'set up mailmap location tests' '
+       git init --bare loc-bare &&
+       git --git-dir=loc-bare --work-tree=. commit \
+               --allow-empty -m foo --author="Orig <orig@example.com>" &&
+       echo "New <new@example.com> <orig@example.com>" >loc-bare/.mailmap
+'
+
+test_expect_success 'bare repo with --work-tree finds mailmap at top-level' '
+       git -C loc-bare --work-tree=. log -1 --format=%aE >actual &&
+       echo new@example.com >expect &&
+       test_cmp expect actual
+'
+
+test_expect_success 'bare repo does not look in current directory' '
+       git -C loc-bare log -1 --format=%aE >actual &&
+       echo orig@example.com >expect &&
+       test_cmp expect actual
+'
+
+test_expect_success 'non-git shortlog respects mailmap in current dir' '
+       git --git-dir=loc-bare log -1 >input &&
+       nongit cp "$TRASH_DIRECTORY/loc-bare/.mailmap" . &&
+       nongit git shortlog -s <input >actual &&
+       echo "     1    New" >expect &&
+       test_cmp expect actual
+'
+
+test_expect_success 'shortlog on stdin respects mailmap from repo' '
+       cp loc-bare/.mailmap . &&
+       git shortlog -s <input >actual &&
+       echo "     1    New" >expect &&
+       test_cmp expect actual
+'
+
+test_expect_success 'find top-level mailmap from subdir' '
+       git clone loc-bare loc-wt &&
+       cp loc-bare/.mailmap loc-wt &&
+       mkdir loc-wt/subdir &&
+       git -C loc-wt/subdir log -1 --format=%aE >actual &&
+       echo new@example.com >expect &&
+       test_cmp expect actual
+'
+
+test_expect_success SYMLINKS 'set up symlink tests' '
+       git commit --allow-empty -m foo --author="Orig <orig@example.com>" &&
+       echo "New <new@example.com> <orig@example.com>" >map &&
+       rm -f .mailmap
+'
+
+test_expect_success SYMLINKS 'symlinks respected in mailmap.file' '
+       test_when_finished "rm symlink" &&
+       ln -s map symlink &&
+       git -c mailmap.file="$(pwd)/symlink" log -1 --format=%aE >actual &&
+       echo "new@example.com" >expect &&
+       test_cmp expect actual
+'
+
+test_expect_success SYMLINKS 'symlinks respected in non-repo shortlog' '
+       git log -1 >input &&
+       test_when_finished "nongit rm .mailmap" &&
+       nongit ln -sf "$TRASH_DIRECTORY/map" .mailmap &&
+       nongit git shortlog -s <input >actual &&
+       echo "     1    New" >expect &&
+       test_cmp expect actual
+'
+
+test_expect_success SYMLINKS 'symlinks not respected in-tree' '
+       test_when_finished "rm .mailmap" &&
+       ln -s map .mailmap &&
+       git log -1 --format=%aE >actual &&
+       echo "orig@example.com" >expect&&
+       test_cmp expect actual
+'
+
 test_done
index 749bc1431ac26660a477ad33364feba62c426956..cabdf7d57a00e3110770a911e7893373a3ab2196 100755 (executable)
@@ -123,10 +123,10 @@ test_expect_success 'NUL separation with --stat' '
        stat1_part=$(git diff-tree --no-commit-id --stat --root HEAD^) &&
        printf "add bar\n$stat0_part\n\0$(commit_msg)\n$stat1_part\n" >expected &&
        git log -z --stat --pretty="format:%s" >actual &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
-test_expect_failure C_LOCALE_OUTPUT 'NUL termination with --stat' '
+test_expect_failure 'NUL termination with --stat' '
        stat0_part=$(git diff --stat HEAD^ HEAD) &&
        stat1_part=$(git diff-tree --no-commit-id --stat --root HEAD^) &&
        printf "add bar\n$stat0_part\n\0$(commit_msg)\n$stat1_part\n0" >expected &&
@@ -962,4 +962,39 @@ test_expect_success 'log --pretty=reference is colored appropriately' '
        test_cmp expect actual
 '
 
+test_expect_success '%(describe) vs git describe' '
+       git log --format="%H" | while read hash
+       do
+               if desc=$(git describe $hash)
+               then
+                       : >expect-contains-good
+               else
+                       : >expect-contains-bad
+               fi &&
+               echo "$hash $desc"
+       done >expect &&
+       test_path_exists expect-contains-good &&
+       test_path_exists expect-contains-bad &&
+
+       git log --format="%H %(describe)" >actual 2>err &&
+       test_cmp expect actual &&
+       test_must_be_empty err
+'
+
+test_expect_success '%(describe:match=...) vs git describe --match ...' '
+       test_when_finished "git tag -d tag-match" &&
+       git tag -a -m tagged tag-match&&
+       git describe --match "*-match" >expect &&
+       git log -1 --format="%(describe:match=*-match)" >actual &&
+       test_cmp expect actual
+'
+
+test_expect_success '%(describe:exclude=...) vs git describe --exclude ...' '
+       test_when_finished "git tag -d tag-exclude" &&
+       git tag -a -m tagged tag-exclude &&
+       git describe --exclude "*-exclude" >expect &&
+       git log -1 --format="%(describe:exclude=*-exclude)" >actual &&
+       test_cmp expect actual
+'
+
 test_done
index ad29e65fcba6be9a6b27954d5dcda7efe31d3018..4871a5dc92f0d586715728d667eefcf8c7644e00 100755 (executable)
@@ -7,7 +7,7 @@ test_description='Test --follow should always find copies hard in git log.
 
 '
 . ./test-lib.sh
-. "$TEST_DIRECTORY"/diff-lib.sh
+. "$TEST_DIRECTORY"/lib-diff.sh
 
 echo >path0 'Line 1
 Line 2
index 5e10136e9a239fda6526da7f84df3ee49936a6eb..7f0c1dcc0f0bfbfd746648f4fee1b7588a8f31b8 100755 (executable)
@@ -31,13 +31,8 @@ test_expect_success '"git log :/a -- " should not be ambiguous' '
 test_expect_success '"git log :/detached -- " should find a commit only in HEAD' '
        test_when_finished "git checkout main" &&
        git checkout --detach &&
-       # Must manually call `test_tick` instead of using `test_commit`,
-       # because the latter additionally creates a tag, which would make
-       # the commit reachable not only via HEAD.
-       test_tick &&
-       git commit --allow-empty -m detached &&
-       test_tick &&
-       git commit --allow-empty -m something-else &&
+       test_commit --no-tag detached &&
+       test_commit --no-tag something-else &&
        git log :/detached --
 '
 
index 0f16c4b9d5270c3d3e710de0d58e483516188e2a..50f206db55043ff3481b4db4b23937b01bc43cab 100755 (executable)
@@ -43,11 +43,11 @@ test_expect_success 'setup test - repo, commits, commit graph, log outputs' '
 '
 
 graph_read_expect () {
-       NUM_CHUNKS=5
+       NUM_CHUNKS=6
        cat >expect <<- EOF
        header: 43475048 1 $(test_oid oid_version) $NUM_CHUNKS 0
        num_commits: $1
-       chunks: oid_fanout oid_lookup commit_metadata bloom_indexes bloom_data
+       chunks: oid_fanout oid_lookup commit_metadata generation_data bloom_indexes bloom_data
        EOF
        test-tool read-graph >actual &&
        test_cmp expect actual
index daf01c309d03203026d27f2ff978974053e8eeee..54be7da1611212143d843d175bf48f73bb83b417 100755 (executable)
@@ -60,7 +60,7 @@ test_expect_success 'try to apply corrupted patch' '
        test_must_fail git -c advice.amWorkDir=false am bad-patch.diff 2>actual &&
        echo "error: git diff header lacks filename information (line 4)" >expected &&
        test_path_is_file f &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 test_expect_success "NUL in commit message's body" '
index 3ebb0d3b6520b7813dd7a1cc20409d2ed779c9e1..7204799a0b52a027cf57a0c83cd9818f69a4ad8b 100755 (executable)
@@ -431,15 +431,33 @@ test_expect_success TAR_HUGE,LONG_IS_64BIT 'system tar can read our huge size' '
        test_cmp expect actual
 '
 
-test_expect_success TIME_IS_64BIT 'set up repository with far-future commit' '
+test_expect_success TIME_IS_64BIT 'set up repository with far-future (2^34 - 1) commit' '
+       rm -f .git/index &&
+       echo foo >file &&
+       git add file &&
+       GIT_COMMITTER_DATE="@17179869183 +0000" \
+               git commit -m "tempori parendum"
+'
+
+test_expect_success TIME_IS_64BIT 'generate tar with far-future mtime' '
+       git archive HEAD >future.tar
+'
+
+test_expect_success TAR_HUGE,TIME_IS_64BIT,TIME_T_IS_64BIT 'system tar can read our future mtime' '
+       echo 2514 >expect &&
+       tar_info future.tar | cut -d" " -f2 >actual &&
+       test_cmp expect actual
+'
+
+test_expect_success TIME_IS_64BIT 'set up repository with far-far-future (2^36 + 1) commit' '
        rm -f .git/index &&
        echo content >file &&
        git add file &&
-       GIT_COMMITTER_DATE="@68719476737 +0000" \
+       GIT_TEST_COMMIT_GRAPH=0 GIT_COMMITTER_DATE="@68719476737 +0000" \
                git commit -m "tempori parendum"
 '
 
-test_expect_success TIME_IS_64BIT 'generate tar with future mtime' '
+test_expect_success TIME_IS_64BIT 'generate tar with far-far-future mtime' '
        git archive HEAD >future.tar
 '
 
index e9aa97117ab41beab708f4ded34628b015021e4e..712ae52299431c3d31038123a02f895708086bdd 100755 (executable)
@@ -128,4 +128,18 @@ test_expect_success 'export-subst' '
        test_cmp substfile2 archive/substfile2
 '
 
+test_expect_success 'export-subst expands %(describe) once' '
+       echo "\$Format:%(describe)\$" >substfile3 &&
+       echo "\$Format:%(describe)\$" >>substfile3 &&
+       echo "\$Format:%(describe)${LF}%(describe)\$" >substfile4 &&
+       git add substfile[34] &&
+       git commit -m export-subst-describe &&
+       git tag -m export-subst-describe export-subst-describe &&
+       git archive HEAD >archive-describe.tar &&
+       extract_tar_to_dir archive-describe &&
+       desc=$(git describe) &&
+       grep -F "$desc" archive-describe/substfile[34] >substituted &&
+       test_line_count = 1 substituted
+'
+
 test_done
index 3e7b23cb32c581b88473b596036517a38c51c9fd..2d32d0ed122277089966b44f015b5f8ff6765e1c 100755 (executable)
@@ -153,7 +153,8 @@ test_expect_success ZIPINFO 'zip archive with many entries' '
 
        # check the number of entries in the ZIP file directory
        expr 65536 + 256 >expect &&
-       "$ZIPINFO" many.zip | head -2 | sed -n "2s/.* //p" >actual &&
+       "$ZIPINFO" -h many.zip >zipinfo &&
+       sed -n "2s/.* //p" <zipinfo >actual &&
        test_cmp expect actual
 '
 
index db4e15fd5965d9863f379ad9a6a14041852a64bc..cb67bac1c47487f451c2113c6b6fca60cb438bfd 100755 (executable)
@@ -223,14 +223,14 @@ test_expect_success 'pull request format' '
                git request-pull initial "$downstream_url" tags/full >../request
        ) &&
        <request sed -nf fuzz.sed >request.fuzzy &&
-       test_i18ncmp expect request.fuzzy &&
+       test_cmp expect request.fuzzy &&
 
        (
                cd local &&
                git request-pull initial "$downstream_url" tags/full:refs/tags/full
        ) >request &&
        sed -nf fuzz.sed <request >request.fuzzy &&
-       test_i18ncmp expect request.fuzzy &&
+       test_cmp expect request.fuzzy &&
 
        (
                cd local &&
index 392201cabdfece945104c6cc8bde3e87f3edd99f..2fc5e68250f3ae7e13d98ecbb84fd4f97b804356 100755 (executable)
@@ -427,7 +427,8 @@ test_expect_success 'index-pack --strict <pack> works in non-repo' '
        test_path_is_file foo.idx
 '
 
-test_expect_success !PTHREADS,C_LOCALE_OUTPUT 'index-pack --threads=N or pack.threads=N warns when no pthreads' '
+test_expect_success !PTHREADS,!FAIL_PREREQS \
+       'index-pack --threads=N or pack.threads=N warns when no pthreads' '
        test_must_fail git index-pack --threads=2 2>err &&
        grep ^warning: err >warnings &&
        test_line_count = 1 warnings &&
@@ -445,7 +446,8 @@ test_expect_success !PTHREADS,C_LOCALE_OUTPUT 'index-pack --threads=N or pack.th
        grep -F "no threads support, ignoring pack.threads" err
 '
 
-test_expect_success !PTHREADS,C_LOCALE_OUTPUT 'pack-objects --threads=N or pack.threads=N warns when no pthreads' '
+test_expect_success !PTHREADS,!FAIL_PREREQS \
+       'pack-objects --threads=N or pack.threads=N warns when no pthreads' '
        git pack-objects --threads=2 --stdout --all </dev/null >/dev/null 2>err &&
        grep ^warning: err >warnings &&
        test_line_count = 1 warnings &&
@@ -532,4 +534,139 @@ test_expect_success 'prefetch objects' '
        test_line_count = 1 donelines
 '
 
+test_expect_success 'setup for --stdin-packs tests' '
+       git init stdin-packs &&
+       (
+               cd stdin-packs &&
+
+               test_commit A &&
+               test_commit B &&
+               test_commit C &&
+
+               for id in A B C
+               do
+                       git pack-objects .git/objects/pack/pack-$id \
+                               --incremental --revs <<-EOF
+                       refs/tags/$id
+                       EOF
+               done &&
+
+               ls -la .git/objects/pack
+       )
+'
+
+test_expect_success '--stdin-packs with excluded packs' '
+       (
+               cd stdin-packs &&
+
+               PACK_A="$(basename .git/objects/pack/pack-A-*.pack)" &&
+               PACK_B="$(basename .git/objects/pack/pack-B-*.pack)" &&
+               PACK_C="$(basename .git/objects/pack/pack-C-*.pack)" &&
+
+               git pack-objects test --stdin-packs <<-EOF &&
+               $PACK_A
+               ^$PACK_B
+               $PACK_C
+               EOF
+
+               (
+                       git show-index <$(ls .git/objects/pack/pack-A-*.idx) &&
+                       git show-index <$(ls .git/objects/pack/pack-C-*.idx)
+               ) >expect.raw &&
+               git show-index <$(ls test-*.idx) >actual.raw &&
+
+               cut -d" " -f2 <expect.raw | sort >expect &&
+               cut -d" " -f2 <actual.raw | sort >actual &&
+               test_cmp expect actual
+       )
+'
+
+test_expect_success '--stdin-packs is incompatible with --filter' '
+       (
+               cd stdin-packs &&
+               test_must_fail git pack-objects --stdin-packs --stdout \
+                       --filter=blob:none </dev/null 2>err &&
+               test_i18ngrep "cannot use --filter with --stdin-packs" err
+       )
+'
+
+test_expect_success '--stdin-packs is incompatible with --revs' '
+       (
+               cd stdin-packs &&
+               test_must_fail git pack-objects --stdin-packs --revs out \
+                       </dev/null 2>err &&
+               test_i18ngrep "cannot use internal rev list with --stdin-packs" err
+       )
+'
+
+test_expect_success '--stdin-packs with loose objects' '
+       (
+               cd stdin-packs &&
+
+               PACK_A="$(basename .git/objects/pack/pack-A-*.pack)" &&
+               PACK_B="$(basename .git/objects/pack/pack-B-*.pack)" &&
+               PACK_C="$(basename .git/objects/pack/pack-C-*.pack)" &&
+
+               test_commit D && # loose
+
+               git pack-objects test2 --stdin-packs --unpacked <<-EOF &&
+               $PACK_A
+               ^$PACK_B
+               $PACK_C
+               EOF
+
+               (
+                       git show-index <$(ls .git/objects/pack/pack-A-*.idx) &&
+                       git show-index <$(ls .git/objects/pack/pack-C-*.idx) &&
+                       git rev-list --objects --no-object-names \
+                               refs/tags/C..refs/tags/D
+
+               ) >expect.raw &&
+               ls -la . &&
+               git show-index <$(ls test2-*.idx) >actual.raw &&
+
+               cut -d" " -f2 <expect.raw | sort >expect &&
+               cut -d" " -f2 <actual.raw | sort >actual &&
+               test_cmp expect actual
+       )
+'
+
+test_expect_success '--stdin-packs with broken links' '
+       (
+               cd stdin-packs &&
+
+               # make an unreachable object with a bogus parent
+               git cat-file -p HEAD >commit &&
+               sed "s/$(git rev-parse HEAD^)/$(test_oid zero)/" <commit |
+               git hash-object -w -t commit --stdin >in &&
+
+               git pack-objects .git/objects/pack/pack-D <in &&
+
+               PACK_A="$(basename .git/objects/pack/pack-A-*.pack)" &&
+               PACK_B="$(basename .git/objects/pack/pack-B-*.pack)" &&
+               PACK_C="$(basename .git/objects/pack/pack-C-*.pack)" &&
+               PACK_D="$(basename .git/objects/pack/pack-D-*.pack)" &&
+
+               git pack-objects test3 --stdin-packs --unpacked <<-EOF &&
+               $PACK_A
+               ^$PACK_B
+               $PACK_C
+               $PACK_D
+               EOF
+
+               (
+                       git show-index <$(ls .git/objects/pack/pack-A-*.idx) &&
+                       git show-index <$(ls .git/objects/pack/pack-C-*.idx) &&
+                       git show-index <$(ls .git/objects/pack/pack-D-*.idx) &&
+                       git rev-list --objects --no-object-names \
+                               refs/tags/C..refs/tags/D
+               ) >expect.raw &&
+               git show-index <$(ls test3-*.idx) >actual.raw &&
+
+               cut -d" " -f2 <expect.raw | sort >expect &&
+               cut -d" " -f2 <actual.raw | sort >actual &&
+               test_cmp expect actual
+       )
+'
+
 test_done
index 5ba76031090ef3fb27b6e861e5766dfa7ae3c427..40b9f632441446d5042100d2797e9dd80b17f643 100755 (executable)
@@ -5,6 +5,8 @@ GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=master
 export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
 
 . ./test-lib.sh
+. "$TEST_DIRECTORY"/lib-bundle.sh
+. "$TEST_DIRECTORY"/lib-bitmap.sh
 
 objpath () {
        echo ".git/objects/$(echo "$1" | sed -e 's|\(..\)|\1/|')"
index 0f06c40eb13f31d8f06962dd1c88c5ff5810618f..a8c1bc0f66b0da238af0cf1051bb7cfafbf27db8 100755 (executable)
@@ -84,14 +84,14 @@ test_expect_success 'packing produces a long delta' '
        pack=$(git pack-objects --all --window=0 </dev/null pack) &&
        echo 9 >expect &&
        max_chain pack-$pack.pack >actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success '--depth limits depth' '
        pack=$(git pack-objects --all --depth=5 </dev/null pack) &&
        echo 5 >expect &&
        max_chain pack-$pack.pack >actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_done
index 2ed0c1544da120c10db3afedb656429f12a45613..af88f805aa275b6cd7a0ef4c50819a8538d7b0d1 100755 (executable)
@@ -76,7 +76,7 @@ graph_git_behavior 'no graph' full commits/3 commits/1
 graph_read_expect() {
        OPTIONAL=""
        NUM_CHUNKS=3
-       if test ! -z $2
+       if test ! -z "$2"
        then
                OPTIONAL=" $2"
                NUM_CHUNKS=$((3 + $(echo "$2" | wc -w)))
@@ -103,14 +103,14 @@ test_expect_success 'exit with correct error on bad input to --stdin-commits' '
        # valid commit and tree OID
        git rev-parse HEAD HEAD^{tree} >in &&
        git commit-graph write --stdin-commits <in &&
-       graph_read_expect 3
+       graph_read_expect 3 generation_data
 '
 
 test_expect_success 'write graph' '
        cd "$TRASH_DIRECTORY/full" &&
        git commit-graph write &&
        test_path_is_file $objdir/info/commit-graph &&
-       graph_read_expect "3"
+       graph_read_expect "3" generation_data
 '
 
 test_expect_success POSIXPERM 'write graph has correct permissions' '
@@ -219,7 +219,7 @@ test_expect_success 'write graph with merges' '
        cd "$TRASH_DIRECTORY/full" &&
        git commit-graph write &&
        test_path_is_file $objdir/info/commit-graph &&
-       graph_read_expect "10" "extra_edges"
+       graph_read_expect "10" "generation_data extra_edges"
 '
 
 graph_git_behavior 'merge 1 vs 2' full merge/1 merge/2
@@ -254,7 +254,7 @@ test_expect_success 'write graph with new commit' '
        cd "$TRASH_DIRECTORY/full" &&
        git commit-graph write &&
        test_path_is_file $objdir/info/commit-graph &&
-       graph_read_expect "11" "extra_edges"
+       graph_read_expect "11" "generation_data extra_edges"
 '
 
 graph_git_behavior 'full graph, commit 8 vs merge 1' full commits/8 merge/1
@@ -264,7 +264,7 @@ test_expect_success 'write graph with nothing new' '
        cd "$TRASH_DIRECTORY/full" &&
        git commit-graph write &&
        test_path_is_file $objdir/info/commit-graph &&
-       graph_read_expect "11" "extra_edges"
+       graph_read_expect "11" "generation_data extra_edges"
 '
 
 graph_git_behavior 'cleared graph, commit 8 vs merge 1' full commits/8 merge/1
@@ -274,7 +274,7 @@ test_expect_success 'build graph from latest pack with closure' '
        cd "$TRASH_DIRECTORY/full" &&
        cat new-idx | git commit-graph write --stdin-packs &&
        test_path_is_file $objdir/info/commit-graph &&
-       graph_read_expect "9" "extra_edges"
+       graph_read_expect "9" "generation_data extra_edges"
 '
 
 graph_git_behavior 'graph from pack, commit 8 vs merge 1' full commits/8 merge/1
@@ -287,7 +287,7 @@ test_expect_success 'build graph from commits with closure' '
        git rev-parse merge/1 >>commits-in &&
        cat commits-in | git commit-graph write --stdin-commits &&
        test_path_is_file $objdir/info/commit-graph &&
-       graph_read_expect "6"
+       graph_read_expect "6" "generation_data"
 '
 
 graph_git_behavior 'graph from commits, commit 8 vs merge 1' full commits/8 merge/1
@@ -297,7 +297,7 @@ test_expect_success 'build graph from commits with append' '
        cd "$TRASH_DIRECTORY/full" &&
        git rev-parse merge/3 | git commit-graph write --stdin-commits --append &&
        test_path_is_file $objdir/info/commit-graph &&
-       graph_read_expect "10" "extra_edges"
+       graph_read_expect "10" "generation_data extra_edges"
 '
 
 graph_git_behavior 'append graph, commit 8 vs merge 1' full commits/8 merge/1
@@ -307,7 +307,7 @@ test_expect_success 'build graph using --reachable' '
        cd "$TRASH_DIRECTORY/full" &&
        git commit-graph write --reachable &&
        test_path_is_file $objdir/info/commit-graph &&
-       graph_read_expect "11" "extra_edges"
+       graph_read_expect "11" "generation_data extra_edges"
 '
 
 graph_git_behavior 'append graph, commit 8 vs merge 1' full commits/8 merge/1
@@ -328,7 +328,7 @@ test_expect_success 'write graph in bare repo' '
        cd "$TRASH_DIRECTORY/bare" &&
        git commit-graph write &&
        test_path_is_file $baredir/info/commit-graph &&
-       graph_read_expect "11" "extra_edges"
+       graph_read_expect "11" "generation_data extra_edges"
 '
 
 graph_git_behavior 'bare repo with graph, commit 8 vs merge 1' bare commits/8 merge/1
@@ -446,6 +446,27 @@ test_expect_success 'warn on improper hash version' '
        )
 '
 
+test_expect_success 'lower layers have overflow chunk' '
+       cd "$TRASH_DIRECTORY/full" &&
+       UNIX_EPOCH_ZERO="@0 +0000" &&
+       FUTURE_DATE="@2147483646 +0000" &&
+       rm -f .git/objects/info/commit-graph &&
+       test_commit --date "$FUTURE_DATE" future-1 &&
+       test_commit --date "$UNIX_EPOCH_ZERO" old-1 &&
+       git commit-graph write --reachable &&
+       test_commit --date "$FUTURE_DATE" future-2 &&
+       test_commit --date "$UNIX_EPOCH_ZERO" old-2 &&
+       git commit-graph write --reachable --split=no-merge &&
+       test_commit extra &&
+       git commit-graph write --reachable --split=no-merge &&
+       git commit-graph write --reachable &&
+       graph_read_expect 16 "generation_data generation_data_overflow extra_edges" &&
+       mv .git/objects/info/commit-graph commit-graph-upgraded &&
+       git commit-graph write --reachable &&
+       graph_read_expect 16 "generation_data generation_data_overflow extra_edges" &&
+       test_cmp .git/objects/info/commit-graph commit-graph-upgraded
+'
+
 # the verify tests below expect the commit-graph to contain
 # exactly the commits reachable from the commits/8 branch.
 # If the file changes the set of commits in the list, then the
@@ -454,8 +475,9 @@ test_expect_success 'warn on improper hash version' '
 
 test_expect_success 'git commit-graph verify' '
        cd "$TRASH_DIRECTORY/full" &&
-       git rev-parse commits/8 | git commit-graph write --stdin-commits &&
-       git commit-graph verify >output
+       git rev-parse commits/8 | git -c commitGraph.generationVersion=1 commit-graph write --stdin-commits &&
+       git commit-graph verify >output &&
+       graph_read_expect 9 extra_edges
 '
 
 NUM_COMMITS=9
@@ -529,7 +551,7 @@ corrupt_graph_and_verify() {
        zero_pos=${4:-${orig_size}} &&
        printf "$data" | dd of="$objdir/info/commit-graph" bs=1 seek="$pos" conv=notrunc &&
        dd of="$objdir/info/commit-graph" bs=1 seek="$zero_pos" if=/dev/null &&
-       generate_zero_bytes $(($orig_size - $zero_pos)) >>"$objdir/info/commit-graph" &&
+       test-tool genzeros $(($orig_size - $zero_pos)) >>"$objdir/info/commit-graph" &&
        corrupt_graph_verify "$grepstr"
 
 }
@@ -563,7 +585,7 @@ test_expect_success 'detect bad hash version' '
 
 test_expect_success 'detect low chunk count' '
        corrupt_graph_and_verify $GRAPH_BYTE_CHUNK_COUNT "\01" \
-               "missing the .* chunk"
+               "final chunk has non-zero id"
 '
 
 test_expect_success 'detect missing OID fanout chunk' '
@@ -741,4 +763,56 @@ test_expect_success 'corrupt commit-graph write (missing tree)' '
        )
 '
 
+# We test the overflow-related code with the following repo history:
+#
+#               4:F - 5:N - 6:U
+#              /                \
+# 1:U - 2:N - 3:U                M:N
+#              \                /
+#               7:N - 8:F - 9:N
+#
+# Here the commits denoted by U have committer date of zero seconds
+# since Unix epoch, the commits denoted by N have committer date
+# starting from 1112354055 seconds since Unix epoch (default committer
+# date for the test suite), and the commits denoted by F have committer
+# date of (2 ^ 31 - 2) seconds since Unix epoch.
+#
+# The largest offset observed is 2 ^ 31, just large enough to overflow.
+#
+
+test_expect_success 'set up and verify repo with generation data overflow chunk' '
+       objdir=".git/objects" &&
+       UNIX_EPOCH_ZERO="@0 +0000" &&
+       FUTURE_DATE="@2147483646 +0000" &&
+       test_oid_cache <<-EOF &&
+       oid_version sha1:1
+       oid_version sha256:2
+       EOF
+       cd "$TRASH_DIRECTORY" &&
+       mkdir repo &&
+       cd repo &&
+       git init &&
+       test_commit --date "$UNIX_EPOCH_ZERO" 1 &&
+       test_commit 2 &&
+       test_commit --date "$UNIX_EPOCH_ZERO" 3 &&
+       git commit-graph write --reachable &&
+       graph_read_expect 3 generation_data &&
+       test_commit --date "$FUTURE_DATE" 4 &&
+       test_commit 5 &&
+       test_commit --date "$UNIX_EPOCH_ZERO" 6 &&
+       git branch left &&
+       git reset --hard 3 &&
+       test_commit 7 &&
+       test_commit --date "$FUTURE_DATE" 8 &&
+       test_commit 9 &&
+       git branch right &&
+       git reset --hard 3 &&
+       test_merge M left right &&
+       git commit-graph write --reachable &&
+       graph_read_expect 10 "generation_data generation_data_overflow" &&
+       git commit-graph verify
+'
+
+graph_git_behavior 'generation data overflow chunk repo' repo left right
+
 test_done
index 297de502a94fdfc255e9e3de4db801e2f15d02f2..5641d158dfc4c6163474fdd6dbc8c7090ef73603 100755 (executable)
@@ -234,6 +234,48 @@ test_expect_success 'warn on improper hash version' '
        )
 '
 
+test_expect_success 'midx picks objects from preferred pack' '
+       test_when_finished rm -rf preferred.git &&
+       git init --bare preferred.git &&
+       (
+               cd preferred.git &&
+
+               a=$(echo "a" | git hash-object -w --stdin) &&
+               b=$(echo "b" | git hash-object -w --stdin) &&
+               c=$(echo "c" | git hash-object -w --stdin) &&
+
+               # Set up two packs, duplicating the object "B" at different
+               # offsets.
+               #
+               # Note that the "BC" pack (the one we choose as preferred) sorts
+               # lexically after the "AB" pack, meaning that omitting the
+               # --preferred-pack argument would cause this test to fail (since
+               # the MIDX code would select the copy of "b" in the "AB" pack).
+               git pack-objects objects/pack/test-AB <<-EOF &&
+               $a
+               $b
+               EOF
+               bc=$(git pack-objects objects/pack/test-BC <<-EOF
+               $b
+               $c
+               EOF
+               ) &&
+
+               git multi-pack-index --object-dir=objects \
+                       write --preferred-pack=test-BC-$bc.idx 2>err &&
+               test_must_be_empty err &&
+
+               test-tool read-midx --show-objects objects >out &&
+
+               ofs=$(git show-index <objects/pack/test-BC-$bc.idx | grep $b |
+                       cut -d" " -f1) &&
+               printf "%s %s\tobjects/pack/test-BC-%s.pack\n" \
+                       "$b" "$ofs" "$bc" >expect &&
+               grep ^$b out >actual &&
+
+               test_cmp expect actual
+       )
+'
 
 test_expect_success 'verify multi-pack-index success' '
        git multi-pack-index verify --object-dir=$objdir
@@ -314,12 +356,12 @@ test_expect_success 'verify bad OID version' '
 
 test_expect_success 'verify truncated chunk count' '
        corrupt_midx_and_verify $MIDX_BYTE_CHUNK_COUNT "\01" $objdir \
-               "missing required"
+               "final chunk has non-zero id"
 '
 
 test_expect_success 'verify extended chunk count' '
        corrupt_midx_and_verify $MIDX_BYTE_CHUNK_COUNT "\07" $objdir \
-               "terminating multi-pack-index chunk id appears earlier than expected"
+               "terminating chunk id appears earlier than expected"
 '
 
 test_expect_success 'verify missing required chunk' '
@@ -329,7 +371,7 @@ test_expect_success 'verify missing required chunk' '
 
 test_expect_success 'verify invalid chunk offset' '
        corrupt_midx_and_verify $MIDX_BYTE_CHUNK_OFFSET "\01" $objdir \
-               "invalid chunk offset (too large)"
+               "improper chunk offset(s)"
 '
 
 test_expect_success 'verify packnames out of order' '
@@ -710,8 +752,9 @@ test_expect_success 'expire respects .keep files' '
                PACKA=$(ls .git/objects/pack/a-pack*\.pack | sed s/\.pack\$//) &&
                touch $PACKA.keep &&
                git multi-pack-index expire &&
-               ls -S .git/objects/pack/a-pack* | grep $PACKA >a-pack-files &&
-               test_line_count = 3 a-pack-files &&
+               test_path_is_file $PACKA.idx &&
+               test_path_is_file $PACKA.keep &&
+               test_path_is_file $PACKA.pack &&
                test-tool read-midx .git/objects | grep idx >midx-list &&
                test_line_count = 2 midx-list
        )
index 4d3842b83b9456362a08842ebc10614d02f0943d..587226ed10320cb57ea0f6da8ac333572e847f56 100755 (executable)
@@ -13,11 +13,11 @@ test_expect_success 'setup repo' '
        infodir=".git/objects/info" &&
        graphdir="$infodir/commit-graphs" &&
        test_oid_cache <<-EOM
-       shallow sha1:1760
-       shallow sha256:2064
+       shallow sha1:2132
+       shallow sha256:2436
 
-       base sha1:1376
-       base sha256:1496
+       base sha1:1408
+       base sha256:1528
 
        oid_version sha1:1
        oid_version sha256:2
@@ -31,9 +31,9 @@ graph_read_expect() {
                NUM_BASE=$2
        fi
        cat >expect <<- EOF
-       header: 43475048 1 $(test_oid oid_version) 3 $NUM_BASE
+       header: 43475048 1 $(test_oid oid_version) 4 $NUM_BASE
        num_commits: $1
-       chunks: oid_fanout oid_lookup commit_metadata
+       chunks: oid_fanout oid_lookup commit_metadata generation_data
        EOF
        test-tool read-graph >output &&
        test_cmp expect output
@@ -453,4 +453,185 @@ test_expect_success 'prevent regression for duplicate commits across layers' '
        git -C dup commit-graph verify
 '
 
+NUM_FIRST_LAYER_COMMITS=64
+NUM_SECOND_LAYER_COMMITS=16
+NUM_THIRD_LAYER_COMMITS=7
+NUM_FOURTH_LAYER_COMMITS=8
+NUM_FIFTH_LAYER_COMMITS=16
+SECOND_LAYER_SEQUENCE_START=$(($NUM_FIRST_LAYER_COMMITS + 1))
+SECOND_LAYER_SEQUENCE_END=$(($SECOND_LAYER_SEQUENCE_START + $NUM_SECOND_LAYER_COMMITS - 1))
+THIRD_LAYER_SEQUENCE_START=$(($SECOND_LAYER_SEQUENCE_END + 1))
+THIRD_LAYER_SEQUENCE_END=$(($THIRD_LAYER_SEQUENCE_START + $NUM_THIRD_LAYER_COMMITS - 1))
+FOURTH_LAYER_SEQUENCE_START=$(($THIRD_LAYER_SEQUENCE_END + 1))
+FOURTH_LAYER_SEQUENCE_END=$(($FOURTH_LAYER_SEQUENCE_START + $NUM_FOURTH_LAYER_COMMITS - 1))
+FIFTH_LAYER_SEQUENCE_START=$(($FOURTH_LAYER_SEQUENCE_END + 1))
+FIFTH_LAYER_SEQUENCE_END=$(($FIFTH_LAYER_SEQUENCE_START + $NUM_FIFTH_LAYER_COMMITS - 1))
+
+# Current split graph chain:
+#
+#     16 commits (No GDAT)
+# ------------------------
+#     64 commits (GDAT)
+#
+test_expect_success 'setup repo for mixed generation commit-graph-chain' '
+       graphdir=".git/objects/info/commit-graphs" &&
+       test_oid_cache <<-EOF &&
+       oid_version sha1:1
+       oid_version sha256:2
+       EOF
+       git init mixed &&
+       (
+               cd mixed &&
+               git config core.commitGraph true &&
+               git config gc.writeCommitGraph false &&
+               for i in $(test_seq $NUM_FIRST_LAYER_COMMITS)
+               do
+                       test_commit $i &&
+                       git branch commits/$i || return 1
+               done &&
+               git -c commitGraph.generationVersion=2 commit-graph write --reachable --split &&
+               graph_read_expect $NUM_FIRST_LAYER_COMMITS &&
+               test_line_count = 1 $graphdir/commit-graph-chain &&
+               for i in $(test_seq $SECOND_LAYER_SEQUENCE_START $SECOND_LAYER_SEQUENCE_END)
+               do
+                       test_commit $i &&
+                       git branch commits/$i || return 1
+               done &&
+               git -c commitGraph.generationVersion=1 commit-graph write --reachable --split=no-merge &&
+               test_line_count = 2 $graphdir/commit-graph-chain &&
+               test-tool read-graph >output &&
+               cat >expect <<-EOF &&
+               header: 43475048 1 $(test_oid oid_version) 4 1
+               num_commits: $NUM_SECOND_LAYER_COMMITS
+               chunks: oid_fanout oid_lookup commit_metadata
+               EOF
+               test_cmp expect output &&
+               git commit-graph verify &&
+               cat $graphdir/commit-graph-chain
+       )
+'
+
+# The new layer will be added without generation data chunk as it was not
+# present on the layer underneath it.
+#
+#      7 commits (No GDAT)
+# ------------------------
+#     16 commits (No GDAT)
+# ------------------------
+#     64 commits (GDAT)
+#
+test_expect_success 'do not write generation data chunk if not present on existing tip' '
+       git clone mixed mixed-no-gdat &&
+       (
+               cd mixed-no-gdat &&
+               for i in $(test_seq $THIRD_LAYER_SEQUENCE_START $THIRD_LAYER_SEQUENCE_END)
+               do
+                       test_commit $i &&
+                       git branch commits/$i || return 1
+               done &&
+               git commit-graph write --reachable --split=no-merge &&
+               test_line_count = 3 $graphdir/commit-graph-chain &&
+               test-tool read-graph >output &&
+               cat >expect <<-EOF &&
+               header: 43475048 1 $(test_oid oid_version) 4 2
+               num_commits: $NUM_THIRD_LAYER_COMMITS
+               chunks: oid_fanout oid_lookup commit_metadata
+               EOF
+               test_cmp expect output &&
+               git commit-graph verify
+       )
+'
+
+# Number of commits in each layer of the split-commit graph before merge:
+#
+#      8 commits (No GDAT)
+# ------------------------
+#      7 commits (No GDAT)
+# ------------------------
+#     16 commits (No GDAT)
+# ------------------------
+#     64 commits (GDAT)
+#
+# The top two layers are merged and do not have generation data chunk as layer below them does
+# not have generation data chunk.
+#
+#     15 commits (No GDAT)
+# ------------------------
+#     16 commits (No GDAT)
+# ------------------------
+#     64 commits (GDAT)
+#
+test_expect_success 'do not write generation data chunk if the topmost remaining layer does not have generation data chunk' '
+       git clone mixed-no-gdat mixed-merge-no-gdat &&
+       (
+               cd mixed-merge-no-gdat &&
+               for i in $(test_seq $FOURTH_LAYER_SEQUENCE_START $FOURTH_LAYER_SEQUENCE_END)
+               do
+                       test_commit $i &&
+                       git branch commits/$i || return 1
+               done &&
+               git commit-graph write --reachable --split --size-multiple 1 &&
+               test_line_count = 3 $graphdir/commit-graph-chain &&
+               test-tool read-graph >output &&
+               cat >expect <<-EOF &&
+               header: 43475048 1 $(test_oid oid_version) 4 2
+               num_commits: $(($NUM_THIRD_LAYER_COMMITS + $NUM_FOURTH_LAYER_COMMITS))
+               chunks: oid_fanout oid_lookup commit_metadata
+               EOF
+               test_cmp expect output &&
+               git commit-graph verify
+       )
+'
+
+# Number of commits in each layer of the split-commit graph before merge:
+#
+#     16 commits (No GDAT)
+# ------------------------
+#     15 commits (No GDAT)
+# ------------------------
+#     16 commits (No GDAT)
+# ------------------------
+#     64 commits (GDAT)
+#
+# The top three layers are merged and has generation data chunk as the topmost remaining layer
+# has generation data chunk.
+#
+#     47 commits (GDAT)
+# ------------------------
+#     64 commits (GDAT)
+#
+test_expect_success 'write generation data chunk if topmost remaining layer has generation data chunk' '
+       git clone mixed-merge-no-gdat mixed-merge-gdat &&
+       (
+               cd mixed-merge-gdat &&
+               for i in $(test_seq $FIFTH_LAYER_SEQUENCE_START $FIFTH_LAYER_SEQUENCE_END)
+               do
+                       test_commit $i &&
+                       git branch commits/$i || return 1
+               done &&
+               git commit-graph write --reachable --split --size-multiple 1 &&
+               test_line_count = 2 $graphdir/commit-graph-chain &&
+               test-tool read-graph >output &&
+               cat >expect <<-EOF &&
+               header: 43475048 1 $(test_oid oid_version) 5 1
+               num_commits: $(($NUM_SECOND_LAYER_COMMITS + $NUM_THIRD_LAYER_COMMITS + $NUM_FOURTH_LAYER_COMMITS + $NUM_FIFTH_LAYER_COMMITS))
+               chunks: oid_fanout oid_lookup commit_metadata generation_data
+               EOF
+               test_cmp expect output
+       )
+'
+
+test_expect_success 'write generation data chunk when commit-graph chain is replaced' '
+       git clone mixed mixed-replace &&
+       (
+               cd mixed-replace &&
+               git commit-graph write --reachable --split=replace &&
+               test_path_is_file $graphdir/commit-graph-chain &&
+               test_line_count = 1 $graphdir/commit-graph-chain &&
+               verify_chain_files_exist $graphdir &&
+               graph_read_expect $(($NUM_FIRST_LAYER_COMMITS + $NUM_SECOND_LAYER_COMMITS)) &&
+               git commit-graph verify
+       )
+'
+
 test_done
diff --git a/t/t5325-reverse-index.sh b/t/t5325-reverse-index.sh
new file mode 100755 (executable)
index 0000000..da453f6
--- /dev/null
@@ -0,0 +1,120 @@
+#!/bin/sh
+
+test_description='on-disk reverse index'
+. ./test-lib.sh
+
+# The below tests want control over the 'pack.writeReverseIndex' setting
+# themselves to assert various combinations of it with other options.
+sane_unset GIT_TEST_WRITE_REV_INDEX
+
+packdir=.git/objects/pack
+
+test_expect_success 'setup' '
+       test_commit base &&
+
+       pack=$(git pack-objects --all $packdir/pack) &&
+       rev=$packdir/pack-$pack.rev &&
+
+       test_path_is_missing $rev
+'
+
+test_index_pack () {
+       rm -f $rev &&
+       conf=$1 &&
+       shift &&
+       # remove the index since Windows won't overwrite an existing file
+       rm $packdir/pack-$pack.idx &&
+       git -c pack.writeReverseIndex=$conf index-pack "$@" \
+               $packdir/pack-$pack.pack
+}
+
+test_expect_success 'index-pack with pack.writeReverseIndex' '
+       test_index_pack "" &&
+       test_path_is_missing $rev &&
+
+       test_index_pack false &&
+       test_path_is_missing $rev &&
+
+       test_index_pack true &&
+       test_path_is_file $rev
+'
+
+test_expect_success 'index-pack with --[no-]rev-index' '
+       for conf in "" true false
+       do
+               test_index_pack "$conf" --rev-index &&
+               test_path_exists $rev &&
+
+               test_index_pack "$conf" --no-rev-index &&
+               test_path_is_missing $rev
+       done
+'
+
+test_expect_success 'index-pack can verify reverse indexes' '
+       test_when_finished "rm -f $rev" &&
+       test_index_pack true &&
+
+       test_path_is_file $rev &&
+       git index-pack --rev-index --verify $packdir/pack-$pack.pack &&
+
+       # Intentionally corrupt the reverse index.
+       chmod u+w $rev &&
+       printf "xxxx" | dd of=$rev bs=1 count=4 conv=notrunc &&
+
+       test_must_fail git index-pack --rev-index --verify \
+               $packdir/pack-$pack.pack 2>err &&
+       grep "validation error" err
+'
+
+test_expect_success 'index-pack infers reverse index name with -o' '
+       git index-pack --rev-index -o other.idx $packdir/pack-$pack.pack &&
+       test_path_is_file other.idx &&
+       test_path_is_file other.rev
+'
+
+test_expect_success 'pack-objects respects pack.writeReverseIndex' '
+       test_when_finished "rm -fr pack-1-*" &&
+
+       git -c pack.writeReverseIndex= pack-objects --all pack-1 &&
+       test_path_is_missing pack-1-*.rev &&
+
+       git -c pack.writeReverseIndex=false pack-objects --all pack-1 &&
+       test_path_is_missing pack-1-*.rev &&
+
+       git -c pack.writeReverseIndex=true pack-objects --all pack-1 &&
+       test_path_is_file pack-1-*.rev
+'
+
+test_expect_success 'reverse index is not generated when available on disk' '
+       test_index_pack true &&
+       test_path_is_file $rev &&
+
+       git rev-parse HEAD >tip &&
+       GIT_TEST_REV_INDEX_DIE_IN_MEMORY=1 git cat-file \
+               --batch-check="%(objectsize:disk)" <tip
+'
+
+test_expect_success 'revindex in-memory vs on-disk' '
+       git init repo &&
+       test_when_finished "rm -fr repo" &&
+       (
+               cd repo &&
+
+               test_commit commit &&
+
+               git rev-list --objects --no-object-names --all >objects &&
+
+               git -c pack.writeReverseIndex=false repack -ad &&
+               test_path_is_missing $packdir/pack-*.rev &&
+               git cat-file --batch-check="%(objectsize:disk) %(objectname)" \
+                       <objects >in-core &&
+
+               git -c pack.writeReverseIndex=true repack -ad &&
+               test_path_is_file $packdir/pack-*.rev &&
+               git cat-file --batch-check="%(objectsize:disk) %(objectname)" \
+                       <objects >on-disk &&
+
+               test_cmp on-disk in-core
+       )
+'
+test_done
index 13107fcdb65c4c1d3274130a3f9fd86a6ffc0a3d..6694858e187a8a1607abbf69100706f56f0cd24b 100644 (file)
@@ -58,3 +58,18 @@ filter_out_user_friendly_and_stable_output () {
        make_user_friendly_and_stable_output |
                sed -n ${1+"$@"}
 }
+
+test_cmp_refs () {
+       indir=
+       if test "$1" = "-C"
+       then
+               shift
+               indir="$1"
+               shift
+       fi
+       indir=${indir:+"$indir"/}
+       cat >show-ref.expect &&
+       git ${indir:+ -C "$indir"} show-ref >show-ref.pristine &&
+       make_user_friendly_and_stable_output <show-ref.pristine >show-ref.filtered &&
+       test_cmp show-ref.expect show-ref.filtered
+}
index cb431a9c91d7182f192f5bf8f5a5d6b6da2f0a5b..1233a46eac5f8ca9606c6de370e0a2e32136ae72 100644 (file)
@@ -83,12 +83,9 @@ test_expect_success "proc-receive: report status v1" '
        EOF
        test_cmp expect actual &&
 
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/for/main/topic1
        <COMMIT-A> refs/heads/foo
        <COMMIT-B> refs/heads/main
        EOF
-       test_cmp expect actual
 '
index 47b058af7ede47e7c8c3bdc2a5238c24e9edbec4..e1e0175c125d034850fd42e293a04d5e2a46bd4b 100644 (file)
@@ -19,13 +19,11 @@ test_expect_success "git-push ($PROTOCOL)" '
         * [new branch] HEAD -> next
        EOF
        test_cmp expect actual &&
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-B> refs/heads/main
        <COMMIT-A> refs/heads/next
        EOF
-       test_cmp expect actual
 '
 
 # Refs of upstream : main(B)  next(A)
@@ -35,24 +33,22 @@ test_expect_success "git-push --atomic ($PROTOCOL)" '
        test_must_fail git -C workbench push --atomic origin \
                main \
                $B:refs/heads/next \
-               >out 2>&1 &&
+               >out-$test_count 2>&1 &&
        filter_out_user_friendly_and_stable_output \
                -e "/^To / { p; }" \
                -e "/^ ! / { p; }" \
-               <out >actual &&
+               <out-$test_count >actual &&
        cat >expect <<-EOF &&
        To <URL/of/upstream.git>
         ! [rejected] main -> main (non-fast-forward)
         ! [rejected] <COMMIT-B> -> next (atomic push failed)
        EOF
        test_cmp expect actual &&
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-B> refs/heads/main
        <COMMIT-A> refs/heads/next
        EOF
-       test_cmp expect actual
 '
 
 # Refs of upstream : main(B)  next(A)
@@ -65,8 +61,8 @@ test_expect_success "non-fast-forward git-push ($PROTOCOL)" '
                push origin \
                main \
                $B:refs/heads/next \
-               >out 2>&1 &&
-       make_user_friendly_and_stable_output <out >actual &&
+               >out-$test_count 2>&1 &&
+       make_user_friendly_and_stable_output <out-$test_count >actual &&
        cat >expect <<-EOF &&
        remote: # pre-receive hook
        remote: pre-receive< <COMMIT-A> <COMMIT-B> refs/heads/next
@@ -77,13 +73,11 @@ test_expect_success "non-fast-forward git-push ($PROTOCOL)" '
         ! [rejected] main -> main (non-fast-forward)
        EOF
        test_cmp expect actual &&
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-B> refs/heads/main
        <COMMIT-B> refs/heads/next
        EOF
-       test_cmp expect actual
 '
 
 # Refs of upstream : main(B)  next(B)
@@ -119,15 +113,13 @@ test_expect_success "git-push -f ($PROTOCOL)" '
         * [new branch] HEAD -> a/b/c
        EOF
        test_cmp expect actual &&
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/a/b/c
        <COMMIT-A> refs/heads/main
        <COMMIT-A> refs/review/main/topic
        <TAG-v123> refs/tags/v123
        EOF
-       test_cmp expect actual
 '
 
 # Refs of upstream : main(A)  tags/v123  refs/review/main/topic(A)  a/b/c(A)
index bbead12bbb48f5701d041e24954113795e2b90a2..bcbda72341d972193e9cf87c0e23755d7e53fc88 100644 (file)
@@ -20,13 +20,11 @@ test_expect_success "git-push ($PROTOCOL/porcelain)" '
        Done
        EOF
        test_cmp expect actual &&
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-B> refs/heads/main
        <COMMIT-A> refs/heads/next
        EOF
-       test_cmp expect actual
 '
 
 # Refs of upstream : main(B)  next(A)
@@ -36,25 +34,23 @@ test_expect_success "git-push --atomic ($PROTOCOL/porcelain)" '
        test_must_fail git -C workbench push --atomic --porcelain origin \
                main \
                $B:refs/heads/next \
-               >out 2>&1 &&
+               >out-$test_count 2>&1 &&
        filter_out_user_friendly_and_stable_output \
                -e "s/^# GETTEXT POISON #//" \
                -e "/^To / { p; }" \
                -e "/^! / { p; }" \
-               <out >actual &&
+               <out-$test_count >actual &&
        cat >expect <<-EOF &&
        To <URL/of/upstream.git>
        !    refs/heads/main:refs/heads/main    [rejected] (non-fast-forward)
        !    <COMMIT-B>:refs/heads/next    [rejected] (atomic push failed)
        EOF
        test_cmp expect actual &&
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-B> refs/heads/main
        <COMMIT-A> refs/heads/next
        EOF
-       test_cmp expect actual
 '
 
 # Refs of upstream : main(B)  next(A)
@@ -67,8 +63,8 @@ test_expect_success "non-fast-forward git-push ($PROTOCOL/porcelain)" '
                push --porcelain origin \
                main \
                $B:refs/heads/next \
-               >out 2>&1 &&
-       make_user_friendly_and_stable_output <out >actual &&
+               >out-$test_count 2>&1 &&
+       make_user_friendly_and_stable_output <out-$test_count >actual &&
        cat >expect <<-EOF &&
        remote: # pre-receive hook
        remote: pre-receive< <COMMIT-A> <COMMIT-B> refs/heads/next
@@ -80,13 +76,11 @@ test_expect_success "non-fast-forward git-push ($PROTOCOL/porcelain)" '
        Done
        EOF
        test_cmp expect actual &&
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-B> refs/heads/main
        <COMMIT-B> refs/heads/next
        EOF
-       test_cmp expect actual
 '
 
 # Refs of upstream : main(B)  next(B)
@@ -123,15 +117,13 @@ test_expect_success "git-push -f ($PROTOCOL/porcelain)" '
        Done
        EOF
        test_cmp expect actual &&
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/a/b/c
        <COMMIT-A> refs/heads/main
        <COMMIT-A> refs/review/main/topic
        <TAG-v123> refs/tags/v123
        EOF
-       test_cmp expect actual
 '
 
 # Refs of upstream : main(A)  tags/v123  refs/review/main/topic(A)  a/b/c(A)
index e7d113a1587bbb2734e0850ba2341eb452eac090..0c3490c9b1b4483f68a9d1ea26455a77a934e69c 100644 (file)
@@ -12,20 +12,18 @@ test_expect_success "git-push is declined ($PROTOCOL)" '
        test_must_fail git -C workbench push origin \
                $B:refs/heads/main \
                HEAD:refs/heads/next \
-               >out 2>&1 &&
-       make_user_friendly_and_stable_output <out >actual &&
+               >out-$test_count 2>&1 &&
+       make_user_friendly_and_stable_output <out-$test_count >actual &&
        cat >expect <<-EOF &&
        To <URL/of/upstream.git>
         ! [remote rejected] <COMMIT-B> -> main (pre-receive hook declined)
         ! [remote rejected] HEAD -> next (pre-receive hook declined)
        EOF
        test_cmp expect actual &&
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/main
        EOF
-       test_cmp expect actual
 '
 
 test_expect_success "cleanup ($PROTOCOL)" '
index cc0cca6a4721d6a96669b629c713208434b6a26f..e9c9db5d1fc585445cdb50c352465ed51faa9072 100644 (file)
@@ -12,8 +12,8 @@ test_expect_success "git-push is declined ($PROTOCOL/porcelain)" '
        test_must_fail git -C workbench push --porcelain origin \
                $B:refs/heads/main \
                HEAD:refs/heads/next \
-               >out 2>&1 &&
-       make_user_friendly_and_stable_output <out >actual &&
+               >out-$test_count 2>&1 &&
+       make_user_friendly_and_stable_output <out-$test_count >actual &&
        cat >expect <<-EOF &&
        To <URL/of/upstream.git>
        !    <COMMIT-B>:refs/heads/main    [remote rejected] (pre-receive hook declined)
@@ -21,12 +21,10 @@ test_expect_success "git-push is declined ($PROTOCOL/porcelain)" '
        Done
        EOF
        test_cmp expect actual &&
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/main
        EOF
-       test_cmp expect actual
 '
 
 test_expect_success "cleanup ($PROTOCOL/porcelain)" '
index c50830982f73564a727125f85de512cfc24e3e73..3ef136e6ef8eb0ad1e328afc2799c5e7de35ee05 100644 (file)
@@ -5,8 +5,8 @@ test_expect_success "proc-receive: no hook, fail to push special ref ($PROTOCOL)
        test_must_fail git -C workbench push origin \
                HEAD:next \
                HEAD:refs/for/main/topic \
-               >out 2>&1 &&
-       make_user_friendly_and_stable_output <out >actual &&
+               >out-$test_count 2>&1 &&
+       make_user_friendly_and_stable_output <out-$test_count >actual &&
        cat >expect <<-EOF &&
        remote: # pre-receive hook
        remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/heads/next
@@ -19,13 +19,11 @@ test_expect_success "proc-receive: no hook, fail to push special ref ($PROTOCOL)
         ! [remote rejected] HEAD -> refs/for/main/topic (fail to run proc-receive hook)
        EOF
        test_cmp expect actual &&
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/main
        <COMMIT-A> refs/heads/next
        EOF
-       test_cmp expect actual
 '
 
 # Refs of upstream : main(A)             next(A)
@@ -41,8 +39,8 @@ test_expect_success "proc-receive: no hook, all failed for atomic push ($PROTOCO
        test_must_fail git -C workbench push --atomic origin \
                $B:main \
                HEAD:next \
-               HEAD:refs/for/main/topic >out 2>&1 &&
-       make_user_friendly_and_stable_output <out >actual &&
+               HEAD:refs/for/main/topic >out-$test_count 2>&1 &&
+       make_user_friendly_and_stable_output <out-$test_count >actual &&
        cat >expect <<-EOF &&
        remote: # pre-receive hook
        remote: pre-receive< <COMMIT-A> <COMMIT-B> refs/heads/main
@@ -55,10 +53,8 @@ test_expect_success "proc-receive: no hook, all failed for atomic push ($PROTOCO
         ! [remote rejected] HEAD -> refs/for/main/topic (fail to run proc-receive hook)
        EOF
        test_cmp expect actual &&
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/main
        EOF
-       test_cmp expect actual
 '
index 14ea43348110100fa896009a7781d32585f51568..19f66fbd7dd79480c712f15713678db2ceb32a5a 100644 (file)
@@ -5,8 +5,8 @@ test_expect_success "proc-receive: no hook, fail to push special ref ($PROTOCOL/
        test_must_fail git -C workbench push --porcelain origin \
                HEAD:next \
                HEAD:refs/for/main/topic \
-               >out 2>&1 &&
-       make_user_friendly_and_stable_output <out >actual &&
+               >out-$test_count 2>&1 &&
+       make_user_friendly_and_stable_output <out-$test_count >actual &&
        cat >expect <<-EOF &&
        remote: # pre-receive hook
        remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/heads/next
@@ -20,13 +20,11 @@ test_expect_success "proc-receive: no hook, fail to push special ref ($PROTOCOL/
        Done
        EOF
        test_cmp expect actual &&
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/main
        <COMMIT-A> refs/heads/next
        EOF
-       test_cmp expect actual
 '
 
 # Refs of upstream : main(A)             next(A)
@@ -42,8 +40,8 @@ test_expect_success "proc-receive: no hook, all failed for atomic push ($PROTOCO
        test_must_fail git -C workbench push --porcelain --atomic origin \
                $B:main \
                HEAD:next \
-               HEAD:refs/for/main/topic >out 2>&1 &&
-       make_user_friendly_and_stable_output <out >actual &&
+               HEAD:refs/for/main/topic >out-$test_count 2>&1 &&
+       make_user_friendly_and_stable_output <out-$test_count >actual &&
        cat >expect <<-EOF &&
        remote: # pre-receive hook
        remote: pre-receive< <COMMIT-A> <COMMIT-B> refs/heads/main
@@ -57,10 +55,8 @@ test_expect_success "proc-receive: no hook, all failed for atomic push ($PROTOCO
        Done
        EOF
        test_cmp expect actual &&
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/main
        EOF
-       test_cmp expect actual
 '
index b9be12be773bb4fa14d226202357afe08818b15b..095e613f6fe5c6587490fa34ffd2f30c0c565fef 100644 (file)
@@ -11,8 +11,8 @@ test_expect_success "setup proc-receive hook (unknown version, $PROTOCOL)" '
 test_expect_success "proc-receive: bad protocol (unknown version, $PROTOCOL)" '
        test_must_fail git -C workbench push origin \
                HEAD:refs/for/main/topic \
-               >out 2>&1 &&
-       make_user_friendly_and_stable_output <out >actual &&
+               >out-$test_count 2>&1 &&
+       make_user_friendly_and_stable_output <out-$test_count >actual &&
 
        # Check status report for git-push
        sed -n \
@@ -34,12 +34,9 @@ test_expect_success "proc-receive: bad protocol (unknown version, $PROTOCOL)" '
        EOF
        test_cmp expect actual-error &&
 
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/main
        EOF
-       test_cmp expect actual
 '
 
 test_expect_success "setup proc-receive hook (hook --die-read-version, $PROTOCOL)" '
@@ -55,25 +52,22 @@ test_expect_success "setup proc-receive hook (hook --die-read-version, $PROTOCOL
 test_expect_success "proc-receive: bad protocol (hook --die-read-version, $PROTOCOL)" '
        test_must_fail git -C workbench push origin \
                HEAD:refs/for/main/topic \
-               >out 2>&1 &&
+               >out-$test_count 2>&1 &&
        filter_out_user_friendly_and_stable_output \
                -e "/^To / { p; }" \
                -e "/^ ! / { p; }" \
-               <out >actual &&
+               <out-$test_count >actual &&
        cat >expect <<-EOF &&
        To <URL/of/upstream.git>
         ! [remote rejected] HEAD -> refs/for/main/topic (fail to run proc-receive hook)
        EOF
        test_cmp expect actual &&
-       grep "remote: fatal: die with the --die-read-version option" out &&
-       grep "remote: error: fail to negotiate version with proc-receive hook" out &&
+       grep "remote: fatal: die with the --die-read-version option" out-$test_count &&
+       grep "remote: error: fail to negotiate version with proc-receive hook" out-$test_count &&
 
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/main
        EOF
-       test_cmp expect actual
 '
 
 test_expect_success "setup proc-receive hook (hook --die-write-version, $PROTOCOL)" '
@@ -89,25 +83,22 @@ test_expect_success "setup proc-receive hook (hook --die-write-version, $PROTOCO
 test_expect_success "proc-receive: bad protocol (hook --die-write-version, $PROTOCOL)" '
        test_must_fail git -C workbench push origin \
                HEAD:refs/for/main/topic \
-               >out 2>&1 &&
+               >out-$test_count 2>&1 &&
        filter_out_user_friendly_and_stable_output \
                -e "/^To / { p; }" \
                -e "/^ ! / { p; }" \
-               <out >actual &&
+               <out-$test_count >actual &&
        cat >expect <<-EOF &&
        To <URL/of/upstream.git>
         ! [remote rejected] HEAD -> refs/for/main/topic (fail to run proc-receive hook)
        EOF
        test_cmp expect actual &&
-       grep "remote: fatal: die with the --die-write-version option" out &&
-       grep "remote: error: fail to negotiate version with proc-receive hook" out &&
+       grep "remote: fatal: die with the --die-write-version option" out-$test_count &&
+       grep "remote: error: fail to negotiate version with proc-receive hook" out-$test_count &&
 
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/main
        EOF
-       test_cmp expect actual
 '
 
 test_expect_success "setup proc-receive hook (hook --die-read-commands, $PROTOCOL)" '
@@ -123,24 +114,21 @@ test_expect_success "setup proc-receive hook (hook --die-read-commands, $PROTOCO
 test_expect_success "proc-receive: bad protocol (hook --die-read-commands, $PROTOCOL)" '
        test_must_fail git -C workbench push origin \
                HEAD:refs/for/main/topic \
-               >out 2>&1 &&
+               >out-$test_count 2>&1 &&
        filter_out_user_friendly_and_stable_output \
                -e "/^To / { p; }" \
                -e "/^ ! / { p; }" \
-               <out >actual &&
+               <out-$test_count >actual &&
        cat >expect <<-EOF &&
        To <URL/of/upstream.git>
         ! [remote rejected] HEAD -> refs/for/main/topic (fail to run proc-receive hook)
        EOF
        test_cmp expect actual &&
-       grep "remote: fatal: die with the --die-read-commands option" out &&
+       grep "remote: fatal: die with the --die-read-commands option" out-$test_count &&
 
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/main
        EOF
-       test_cmp expect actual
 '
 
 test_expect_success "setup proc-receive hook (hook --die-read-push-options, $PROTOCOL)" '
@@ -158,24 +146,21 @@ test_expect_success "proc-receive: bad protocol (hook --die-read-push-options, $
        test_must_fail git -C workbench push origin \
                -o reviewers=user1,user2 \
                HEAD:refs/for/main/topic \
-               >out 2>&1 &&
+               >out-$test_count 2>&1 &&
        filter_out_user_friendly_and_stable_output \
                -e "/^To / { p; }" \
                -e "/^ ! / { p; }" \
-               <out >actual &&
+               <out-$test_count >actual &&
        cat >expect <<-EOF &&
        To <URL/of/upstream.git>
         ! [remote rejected] HEAD -> refs/for/main/topic (fail to run proc-receive hook)
        EOF
        test_cmp expect actual &&
-       grep "remote: fatal: die with the --die-read-push-options option" out &&
+       grep "remote: fatal: die with the --die-read-push-options option" out-$test_count &&
 
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/main
        EOF
-       test_cmp expect actual
 '
 
 test_expect_success "setup proc-receive hook (hook --die-write-report, $PROTOCOL)" '
@@ -191,24 +176,21 @@ test_expect_success "setup proc-receive hook (hook --die-write-report, $PROTOCOL
 test_expect_success "proc-receive: bad protocol (hook --die-write-report, $PROTOCOL)" '
        test_must_fail git -C workbench push origin \
                HEAD:refs/for/main/topic \
-               >out 2>&1 &&
+               >out-$test_count 2>&1 &&
        filter_out_user_friendly_and_stable_output \
                -e "/^To / { p; }" \
                -e "/^ ! / { p; }" \
-               <out >actual &&
+               <out-$test_count >actual &&
        cat >expect <<-EOF &&
        To <URL/of/upstream.git>
         ! [remote rejected] HEAD -> refs/for/main/topic (fail to run proc-receive hook)
        EOF
        test_cmp expect actual &&
-       grep "remote: fatal: die with the --die-write-report option" out &&
+       grep "remote: fatal: die with the --die-write-report option" out-$test_count &&
 
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/main
        EOF
-       test_cmp expect actual
 '
 
 test_expect_success "setup proc-receive hook (no report, $PROTOCOL)" '
@@ -224,8 +206,8 @@ test_expect_success "setup proc-receive hook (no report, $PROTOCOL)" '
 test_expect_success "proc-receive: bad protocol (no report, $PROTOCOL)" '
        test_must_fail git -C workbench push origin \
                HEAD:refs/heads/next \
-               HEAD:refs/for/main/topic >out 2>&1 &&
-       make_user_friendly_and_stable_output <out >actual &&
+               HEAD:refs/for/main/topic >out-$test_count 2>&1 &&
+       make_user_friendly_and_stable_output <out-$test_count >actual &&
        cat >expect <<-EOF &&
        remote: # pre-receive hook
        remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/heads/next
@@ -240,13 +222,10 @@ test_expect_success "proc-receive: bad protocol (no report, $PROTOCOL)" '
        EOF
        test_cmp expect actual &&
 
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/main
        <COMMIT-A> refs/heads/next
        EOF
-       test_cmp expect actual
 '
 
 # Refs of upstream : main(A)             next(A)
@@ -270,8 +249,8 @@ test_expect_success "setup proc-receive hook (no ref, $PROTOCOL)" '
 test_expect_success "proc-receive: bad protocol (no ref, $PROTOCOL)" '
        test_must_fail git -C workbench push origin \
                HEAD:refs/for/main/topic\
-               >out 2>&1 &&
-       make_user_friendly_and_stable_output <out >actual &&
+               >out-$test_count 2>&1 &&
+       make_user_friendly_and_stable_output <out-$test_count >actual &&
        cat >expect <<-EOF &&
        remote: # pre-receive hook
        remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
@@ -284,12 +263,9 @@ test_expect_success "proc-receive: bad protocol (no ref, $PROTOCOL)" '
        EOF
        test_cmp expect actual &&
 
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/main
        EOF
-       test_cmp expect actual
 '
 
 test_expect_success "setup proc-receive hook (unknown status, $PROTOCOL)" '
@@ -306,8 +282,8 @@ test_expect_success "setup proc-receive hook (unknown status, $PROTOCOL)" '
 test_expect_success "proc-receive: bad protocol (unknown status, $PROTOCOL)" '
        test_must_fail git -C workbench push origin \
                        HEAD:refs/for/main/topic \
-                       >out 2>&1 &&
-       make_user_friendly_and_stable_output <out >actual &&
+                       >out-$test_count 2>&1 &&
+       make_user_friendly_and_stable_output <out-$test_count >actual &&
        cat >expect <<-EOF &&
        remote: # pre-receive hook
        remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
@@ -320,10 +296,7 @@ test_expect_success "proc-receive: bad protocol (unknown status, $PROTOCOL)" '
        EOF
        test_cmp expect actual &&
 
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/main
        EOF
-       test_cmp expect actual
 '
index fdb4569109ab0192abedd736a45e262f3b3335cb..a44649789cef2b98fe5ec6aa5083da6697df9723 100644 (file)
@@ -11,8 +11,8 @@ test_expect_success "setup proc-receive hook (unknown version, $PROTOCOL/porcela
 test_expect_success "proc-receive: bad protocol (unknown version, $PROTOCOL/porcelain)" '
        test_must_fail git -C workbench push --porcelain origin \
                HEAD:refs/for/main/topic \
-               >out 2>&1 &&
-       make_user_friendly_and_stable_output <out >actual &&
+               >out-$test_count 2>&1 &&
+       make_user_friendly_and_stable_output <out-$test_count >actual &&
 
        # Check status report for git-push
        sed -n \
@@ -34,12 +34,9 @@ test_expect_success "proc-receive: bad protocol (unknown version, $PROTOCOL/porc
        EOF
        test_cmp expect actual-error &&
 
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/main
        EOF
-       test_cmp expect actual
 '
 
 test_expect_success "setup proc-receive hook (hook --die-read-version, $PROTOCOL/porcelain)" '
@@ -55,25 +52,22 @@ test_expect_success "setup proc-receive hook (hook --die-read-version, $PROTOCOL
 test_expect_success "proc-receive: bad protocol (hook --die-read-version, $PROTOCOL/porcelain)" '
        test_must_fail git -C workbench push --porcelain origin \
                HEAD:refs/for/main/topic \
-               >out 2>&1 &&
+               >out-$test_count 2>&1 &&
        filter_out_user_friendly_and_stable_output \
                -e "/^To / { p; n; p; n; p; }" \
-               <out >actual &&
+               <out-$test_count >actual &&
        cat >expect <<-EOF &&
        To <URL/of/upstream.git>
        !    HEAD:refs/for/main/topic    [remote rejected] (fail to run proc-receive hook)
        Done
        EOF
        test_cmp expect actual &&
-       grep "remote: fatal: die with the --die-read-version option" out &&
-       grep "remote: error: fail to negotiate version with proc-receive hook" out &&
+       grep "remote: fatal: die with the --die-read-version option" out-$test_count &&
+       grep "remote: error: fail to negotiate version with proc-receive hook" out-$test_count &&
 
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/main
        EOF
-       test_cmp expect actual
 '
 
 test_expect_success "setup proc-receive hook (hook --die-write-version, $PROTOCOL/porcelain)" '
@@ -89,25 +83,22 @@ test_expect_success "setup proc-receive hook (hook --die-write-version, $PROTOCO
 test_expect_success "proc-receive: bad protocol (hook --die-write-version, $PROTOCOL/porcelain)" '
        test_must_fail git -C workbench push --porcelain origin \
                HEAD:refs/for/main/topic \
-               >out 2>&1 &&
+               >out-$test_count 2>&1 &&
        filter_out_user_friendly_and_stable_output \
                -e "/^To / { p; n; p; n; p; }" \
-               <out >actual &&
+               <out-$test_count >actual &&
        cat >expect <<-EOF &&
        To <URL/of/upstream.git>
        !    HEAD:refs/for/main/topic    [remote rejected] (fail to run proc-receive hook)
        Done
        EOF
        test_cmp expect actual &&
-       grep "remote: fatal: die with the --die-write-version option" out &&
-       grep "remote: error: fail to negotiate version with proc-receive hook" out &&
+       grep "remote: fatal: die with the --die-write-version option" out-$test_count &&
+       grep "remote: error: fail to negotiate version with proc-receive hook" out-$test_count &&
 
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/main
        EOF
-       test_cmp expect actual
 '
 
 test_expect_success "setup proc-receive hook (hook --die-read-commands, $PROTOCOL/porcelain)" '
@@ -123,24 +114,21 @@ test_expect_success "setup proc-receive hook (hook --die-read-commands, $PROTOCO
 test_expect_success "proc-receive: bad protocol (hook --die-read-commands, $PROTOCOL/porcelain)" '
        test_must_fail git -C workbench push --porcelain origin \
                HEAD:refs/for/main/topic \
-               >out 2>&1 &&
+               >out-$test_count 2>&1 &&
        filter_out_user_friendly_and_stable_output \
                -e "/^To / { p; n; p; n; p; }" \
-               <out >actual &&
+               <out-$test_count >actual &&
        cat >expect <<-EOF &&
        To <URL/of/upstream.git>
        !    HEAD:refs/for/main/topic    [remote rejected] (fail to run proc-receive hook)
        Done
        EOF
        test_cmp expect actual &&
-       grep "remote: fatal: die with the --die-read-commands option" out &&
+       grep "remote: fatal: die with the --die-read-commands option" out-$test_count &&
 
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/main
        EOF
-       test_cmp expect actual
 '
 
 test_expect_success "setup proc-receive hook (hook --die-read-push-options, $PROTOCOL/porcelain)" '
@@ -158,24 +146,21 @@ test_expect_success "proc-receive: bad protocol (hook --die-read-push-options, $
        test_must_fail git -C workbench push --porcelain origin \
                -o reviewers=user1,user2 \
                HEAD:refs/for/main/topic \
-               >out 2>&1 &&
+               >out-$test_count 2>&1 &&
        filter_out_user_friendly_and_stable_output \
                -e "/^To / { p; n; p; n; p; }" \
-               <out >actual &&
+               <out-$test_count >actual &&
        cat >expect <<-EOF &&
        To <URL/of/upstream.git>
        !    HEAD:refs/for/main/topic    [remote rejected] (fail to run proc-receive hook)
        Done
        EOF
        test_cmp expect actual &&
-       grep "remote: fatal: die with the --die-read-push-options option" out &&
+       grep "remote: fatal: die with the --die-read-push-options option" out-$test_count &&
 
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/main
        EOF
-       test_cmp expect actual
 '
 
 test_expect_success "setup proc-receive hook (hook --die-write-report, $PROTOCOL/porcelain)" '
@@ -191,24 +176,21 @@ test_expect_success "setup proc-receive hook (hook --die-write-report, $PROTOCOL
 test_expect_success "proc-receive: bad protocol (hook --die-write-report, $PROTOCOL/porcelain)" '
        test_must_fail git -C workbench push --porcelain origin \
                HEAD:refs/for/main/topic \
-               >out 2>&1 &&
+               >out-$test_count 2>&1 &&
        filter_out_user_friendly_and_stable_output \
                -e "/^To / { p; n; p; n; p; }" \
-               <out >actual &&
+               <out-$test_count >actual &&
        cat >expect <<-EOF &&
        To <URL/of/upstream.git>
        !    HEAD:refs/for/main/topic    [remote rejected] (fail to run proc-receive hook)
        Done
        EOF
        test_cmp expect actual &&
-       grep "remote: fatal: die with the --die-write-report option" out &&
+       grep "remote: fatal: die with the --die-write-report option" out-$test_count &&
 
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/main
        EOF
-       test_cmp expect actual
 '
 
 test_expect_success "setup proc-receive hook (no report, $PROTOCOL/porcelain)" '
@@ -224,8 +206,8 @@ test_expect_success "setup proc-receive hook (no report, $PROTOCOL/porcelain)" '
 test_expect_success "proc-receive: bad protocol (no report, $PROTOCOL/porcelain)" '
        test_must_fail git -C workbench push --porcelain origin \
                HEAD:refs/heads/next \
-               HEAD:refs/for/main/topic >out 2>&1 &&
-       make_user_friendly_and_stable_output <out >actual &&
+               HEAD:refs/for/main/topic >out-$test_count 2>&1 &&
+       make_user_friendly_and_stable_output <out-$test_count >actual &&
        cat >expect <<-EOF &&
        remote: # pre-receive hook
        remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/heads/next
@@ -241,13 +223,10 @@ test_expect_success "proc-receive: bad protocol (no report, $PROTOCOL/porcelain)
        EOF
        test_cmp expect actual &&
 
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/main
        <COMMIT-A> refs/heads/next
        EOF
-       test_cmp expect actual
 '
 
 # Refs of upstream : main(A)             next(A)
@@ -270,8 +249,8 @@ test_expect_success "setup proc-receive hook (no ref, $PROTOCOL/porcelain)" '
 test_expect_success "proc-receive: bad protocol (no ref, $PROTOCOL/porcelain)" '
        test_must_fail git -C workbench push --porcelain origin \
                HEAD:refs/for/main/topic\
-               >out 2>&1 &&
-       make_user_friendly_and_stable_output <out >actual &&
+               >out-$test_count 2>&1 &&
+       make_user_friendly_and_stable_output <out-$test_count >actual &&
        cat >expect <<-EOF &&
        remote: # pre-receive hook
        remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
@@ -285,12 +264,9 @@ test_expect_success "proc-receive: bad protocol (no ref, $PROTOCOL/porcelain)" '
        EOF
        test_cmp expect actual &&
 
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/main
        EOF
-       test_cmp expect actual
 '
 
 test_expect_success "setup proc-receive hook (unknown status, $PROTOCOL/porcelain)" '
@@ -307,8 +283,8 @@ test_expect_success "setup proc-receive hook (unknown status, $PROTOCOL/porcelai
 test_expect_success "proc-receive: bad protocol (unknown status, $PROTOCOL/porcelain)" '
        test_must_fail git -C workbench push --porcelain origin \
                        HEAD:refs/for/main/topic \
-                       >out 2>&1 &&
-       make_user_friendly_and_stable_output <out >actual &&
+                       >out-$test_count 2>&1 &&
+       make_user_friendly_and_stable_output <out-$test_count >actual &&
        cat >expect <<-EOF &&
        remote: # pre-receive hook
        remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
@@ -322,10 +298,7 @@ test_expect_success "proc-receive: bad protocol (unknown status, $PROTOCOL/porce
        EOF
        test_cmp expect actual &&
 
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/main
        EOF
-       test_cmp expect actual
 '
index 5a9e0daf2d56829b9372a85b499ff1a815c8be62..ad2c8f65355d94765c40ea7491f2fa3200a526bb 100644 (file)
@@ -12,8 +12,8 @@ test_expect_success "setup proc-receive hook (ng, no message, $PROTOCOL)" '
 test_expect_success "proc-receive: fail to update (ng, no message, $PROTOCOL)" '
        test_must_fail git -C workbench push origin \
                HEAD:refs/for/main/topic \
-               >out 2>&1 &&
-       make_user_friendly_and_stable_output <out >actual &&
+               >out-$test_count 2>&1 &&
+       make_user_friendly_and_stable_output <out-$test_count >actual &&
        cat >expect <<-EOF &&
        remote: # pre-receive hook
        remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
@@ -24,12 +24,10 @@ test_expect_success "proc-receive: fail to update (ng, no message, $PROTOCOL)" '
         ! [remote rejected] HEAD -> refs/for/main/topic (failed)
        EOF
        test_cmp expect actual &&
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/main
        EOF
-       test_cmp expect actual
 '
 
 test_expect_success "setup proc-receive hook (ng message, $PROTOCOL)" '
@@ -46,8 +44,8 @@ test_expect_success "setup proc-receive hook (ng message, $PROTOCOL)" '
 test_expect_success "proc-receive: fail to update (ng, with message, $PROTOCOL)" '
        test_must_fail git -C workbench push origin \
                HEAD:refs/for/main/topic \
-               >out 2>&1 &&
-       make_user_friendly_and_stable_output <out >actual &&
+               >out-$test_count 2>&1 &&
+       make_user_friendly_and_stable_output <out-$test_count >actual &&
        cat >expect <<-EOF &&
        remote: # pre-receive hook
        remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
@@ -58,10 +56,8 @@ test_expect_success "proc-receive: fail to update (ng, with message, $PROTOCOL)"
         ! [remote rejected] HEAD -> refs/for/main/topic (error msg)
        EOF
        test_cmp expect actual &&
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/main
        EOF
-       test_cmp expect actual
 '
index 93475a83cfcb9c9e0faeed7d94a4bec6cec3ffaa..d8ae9d3414db6793ee1f20ad6ad05b3dcd3bca0e 100644 (file)
@@ -12,8 +12,8 @@ test_expect_success "setup proc-receive hook (ng, no message, $PROTOCOL/porcelai
 test_expect_success "proc-receive: fail to update (ng, no message, $PROTOCOL/porcelain)" '
        test_must_fail git -C workbench push --porcelain origin \
                HEAD:refs/for/main/topic \
-               >out 2>&1 &&
-       make_user_friendly_and_stable_output <out >actual &&
+               >out-$test_count 2>&1 &&
+       make_user_friendly_and_stable_output <out-$test_count >actual &&
        cat >expect <<-EOF &&
        remote: # pre-receive hook
        remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
@@ -25,12 +25,10 @@ test_expect_success "proc-receive: fail to update (ng, no message, $PROTOCOL/por
        Done
        EOF
        test_cmp expect actual &&
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/main
        EOF
-       test_cmp expect actual
 '
 
 test_expect_success "setup proc-receive hook (ng message, $PROTOCOL/porcelain)" '
@@ -47,8 +45,8 @@ test_expect_success "setup proc-receive hook (ng message, $PROTOCOL/porcelain)"
 test_expect_success "proc-receive: fail to update (ng, with message, $PROTOCOL/porcelain)" '
        test_must_fail git -C workbench push --porcelain origin \
                HEAD:refs/for/main/topic \
-               >out 2>&1 &&
-       make_user_friendly_and_stable_output <out >actual &&
+               >out-$test_count 2>&1 &&
+       make_user_friendly_and_stable_output <out-$test_count >actual &&
        cat >expect <<-EOF &&
        remote: # pre-receive hook
        remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
@@ -60,10 +58,8 @@ test_expect_success "proc-receive: fail to update (ng, with message, $PROTOCOL/p
        Done
        EOF
        test_cmp expect actual &&
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/main
        EOF
-       test_cmp expect actual
 '
index f8be8a0ba1adcf08ba8564406999c1068f19a1c5..dbed467186a6cf8fae9b9dc66fe227cd25ff10a9 100644 (file)
@@ -13,8 +13,8 @@ test_expect_success "proc-receive: report unexpected ref ($PROTOCOL)" '
        test_must_fail git -C workbench push origin \
                $B:refs/heads/main \
                HEAD:refs/for/main/topic \
-               >out 2>&1 &&
-       make_user_friendly_and_stable_output <out >actual &&
+               >out-$test_count 2>&1 &&
+       make_user_friendly_and_stable_output <out-$test_count >actual &&
        cat >expect <<-EOF &&
        remote: # pre-receive hook
        remote: pre-receive< <COMMIT-A> <COMMIT-B> refs/heads/main
@@ -30,12 +30,10 @@ test_expect_success "proc-receive: report unexpected ref ($PROTOCOL)" '
         ! [remote rejected] HEAD -> refs/for/main/topic (proc-receive failed to report status)
        EOF
        test_cmp expect actual &&
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-B> refs/heads/main
        EOF
-       test_cmp expect actual
 '
 
 # Refs of upstream : main(B)
index 778150fa03257ae0e3213a3b86f2ab5da2d82ce4..e89096fa13b65c5df4bbe3358c75ccaf9303adf0 100644 (file)
@@ -13,8 +13,8 @@ test_expect_success "proc-receive: report unexpected ref ($PROTOCOL/porcelain)"
        test_must_fail git -C workbench push --porcelain origin \
                $B:refs/heads/main \
                HEAD:refs/for/main/topic \
-               >out 2>&1 &&
-       make_user_friendly_and_stable_output <out >actual &&
+               >out-$test_count 2>&1 &&
+       make_user_friendly_and_stable_output <out-$test_count >actual &&
        cat >expect <<-EOF &&
        remote: # pre-receive hook
        remote: pre-receive< <COMMIT-A> <COMMIT-B> refs/heads/main
@@ -31,12 +31,10 @@ test_expect_success "proc-receive: report unexpected ref ($PROTOCOL/porcelain)"
        Done
        EOF
        test_cmp expect actual &&
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-B> refs/heads/main
        EOF
-       test_cmp expect actual
 '
 
 # Refs of upstream : main(B)
index d4e74e46811ee880edf14277b49cb8443e075c9a..77204244b860017722faa0f9cecde432de2d4b69 100644 (file)
@@ -12,8 +12,8 @@ test_expect_success "setup proc-receive hook (unexpected ref, $PROTOCOL)" '
 test_expect_success "proc-receive: report unknown reference ($PROTOCOL)" '
        test_must_fail git -C workbench push origin \
                HEAD:refs/for/a/b/c/my/topic \
-               >out 2>&1 &&
-       make_user_friendly_and_stable_output <out >actual &&
+               >out-$test_count 2>&1 &&
+       make_user_friendly_and_stable_output <out-$test_count >actual &&
        cat >expect <<-EOF &&
        remote: # pre-receive hook
        remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/a/b/c/my/topic
@@ -25,10 +25,8 @@ test_expect_success "proc-receive: report unknown reference ($PROTOCOL)" '
         ! [remote rejected] HEAD -> refs/for/a/b/c/my/topic (proc-receive failed to report status)
        EOF
        test_cmp expect actual &&
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/main
        EOF
-       test_cmp expect actual
 '
index 039e8b61637ce585c1f98fb03267e257132ed205..eeb1ce6b2c7db8b96b7970c5135a5dff78a839e1 100644 (file)
@@ -12,8 +12,8 @@ test_expect_success "setup proc-receive hook (unexpected ref, $PROTOCOL/porcelai
 test_expect_success "proc-receive: report unknown reference ($PROTOCOL/porcelain)" '
        test_must_fail git -C workbench push --porcelain origin \
                HEAD:refs/for/a/b/c/my/topic \
-               >out 2>&1 &&
-       make_user_friendly_and_stable_output <out >actual &&
+               >out-$test_count 2>&1 &&
+       make_user_friendly_and_stable_output <out-$test_count >actual &&
        cat >expect <<-EOF &&
        remote: # pre-receive hook
        remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/a/b/c/my/topic
@@ -26,10 +26,8 @@ test_expect_success "proc-receive: report unknown reference ($PROTOCOL/porcelain
        Done
        EOF
        test_cmp expect actual &&
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/main
        EOF
-       test_cmp expect actual
 '
index e88edb16a445c88f008f2b82aab8c61e4ff47d55..1ec2cb95bcd54bc2ba4b513c8082b971b111f729 100644 (file)
@@ -16,16 +16,14 @@ test_expect_success "proc-receive: not support push options ($PROTOCOL)" '
                -o reviewer=user1 \
                origin \
                HEAD:refs/for/main/topic \
-               >out 2>&1 &&
-       make_user_friendly_and_stable_output <out >actual &&
+               >out-$test_count 2>&1 &&
+       make_user_friendly_and_stable_output <out-$test_count >actual &&
        test_i18ngrep "fatal: the receiving end does not support push options" \
                actual &&
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/main
        EOF
-       test_cmp expect actual
 '
 
 test_expect_success "enable push options ($PROTOCOL)" '
@@ -69,13 +67,11 @@ test_expect_success "proc-receive: ignore push-options for version 0 ($PROTOCOL)
         * [new reference] HEAD -> refs/for/main/topic
        EOF
        test_cmp expect actual &&
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/main
        <COMMIT-A> refs/heads/next
        EOF
-       test_cmp expect actual
 '
 
 test_expect_success "restore proc-receive hook ($PROTOCOL)" '
@@ -123,13 +119,11 @@ test_expect_success "proc-receive: push with options ($PROTOCOL)" '
         * [new reference] HEAD -> refs/for/main/topic
        EOF
        test_cmp expect actual &&
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/main
        <COMMIT-A> refs/heads/next
        EOF
-       test_cmp expect actual
 '
 
 # Refs of upstream : main(A)             next(A)
index 3a6561b5eab465b3b9eab20e29a3c4fa992d6a7c..447fbfec0c9045da74479d08f563ce1d175077be 100644 (file)
@@ -17,16 +17,14 @@ test_expect_success "proc-receive: not support push options ($PROTOCOL/porcelain
                -o reviewer=user1 \
                origin \
                HEAD:refs/for/main/topic \
-               >out 2>&1 &&
-       make_user_friendly_and_stable_output <out >actual &&
+               >out-$test_count 2>&1 &&
+       make_user_friendly_and_stable_output <out-$test_count >actual &&
        test_i18ngrep "fatal: the receiving end does not support push options" \
                actual &&
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/main
        EOF
-       test_cmp expect actual
 '
 
 test_expect_success "enable push options ($PROTOCOL/porcelain)" '
@@ -72,13 +70,11 @@ test_expect_success "proc-receive: ignore push-options for version 0 ($PROTOCOL/
        Done
        EOF
        test_cmp expect actual &&
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/main
        <COMMIT-A> refs/heads/next
        EOF
-       test_cmp expect actual
 '
 
 test_expect_success "restore proc-receive hook ($PROTOCOL/porcelain)" '
@@ -128,13 +124,11 @@ test_expect_success "proc-receive: push with options ($PROTOCOL/porcelain)" '
        Done
        EOF
        test_cmp expect actual &&
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/main
        <COMMIT-A> refs/heads/next
        EOF
-       test_cmp expect actual
 '
 
 # Refs of upstream : main(A)             next(A)
index 5d6feef118f7e4f4d25b7d9474528fe70b9f987d..8acb4f204fb3c44f9cad1921b5fadddddd0ceca7 100644 (file)
@@ -26,10 +26,8 @@ test_expect_success "proc-receive: ok ($PROTOCOL)" '
         * [new reference] HEAD -> refs/for/main/topic
        EOF
        test_cmp expect actual &&
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/main
        EOF
-       test_cmp expect actual
 '
index 91666d32df5fccd76c80cae4592ef6efb2532773..a967718046491f34b7afe4d85a1e23657da44b2b 100644 (file)
@@ -27,10 +27,8 @@ test_expect_success "proc-receive: ok ($PROTOCOL/porcelain)" '
        Done
        EOF
        test_cmp expect actual &&
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/main
        EOF
-       test_cmp expect actual
 '
index a0faf5c7ff04d414f22e79e688bcc23a0452fff0..437ade012d4007b454e6318683c4346e7ff49d48 100644 (file)
@@ -13,8 +13,8 @@ test_expect_success "setup proc-receive hook (option without matching ok, $PROTO
 test_expect_success "proc-receive: report option without matching ok ($PROTOCOL)" '
        test_must_fail git -C workbench push origin \
                HEAD:refs/for/main/topic \
-               >out 2>&1 &&
-       make_user_friendly_and_stable_output <out >actual &&
+               >out-$test_count 2>&1 &&
+       make_user_friendly_and_stable_output <out-$test_count >actual &&
        cat >expect <<-EOF &&
        remote: # pre-receive hook
        remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
@@ -247,10 +247,7 @@ test_expect_success "proc-receive: report with multiple rewrites ($PROTOCOL)" '
        EOF
        test_cmp expect actual &&
 
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/main
        EOF
-       test_cmp expect actual
 '
index 32ae26bcfb0e5b9b2ce106fe1443ecaed9fd0cb9..11486720eeffd860e1bb708c4715112e0c52ee72 100644 (file)
@@ -13,8 +13,8 @@ test_expect_success "setup proc-receive hook (option without matching ok, $PROTO
 test_expect_success "proc-receive: report option without matching ok ($PROTOCOL/porcelain)" '
        test_must_fail git -C workbench push --porcelain origin \
                HEAD:refs/for/main/topic \
-               >out 2>&1 &&
-       make_user_friendly_and_stable_output <out >actual &&
+               >out-$test_count 2>&1 &&
+       make_user_friendly_and_stable_output <out-$test_count >actual &&
        cat >expect <<-EOF &&
        remote: # pre-receive hook
        remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
@@ -256,10 +256,7 @@ test_expect_success "proc-receive: report with multiple rewrites ($PROTOCOL/porc
        EOF
        test_cmp expect actual &&
 
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/main
        EOF
-       test_cmp expect actual
 '
index c355c290d2f0c56c7e7408902f5434f6908644e0..6e0d08b3271a8d417a4b5e86682515d63b2fcf53 100644 (file)
@@ -28,13 +28,11 @@ test_expect_success "proc-receive: fall throught, let receive-pack to execute ($
         * [new reference] <COMMIT-B> -> refs/for/main/topic
        EOF
        test_cmp expect actual &&
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-B> refs/for/main/topic
        <COMMIT-A> refs/heads/main
        EOF
-       test_cmp expect actual
 '
 
 # Refs of upstream : main(A)             refs/for/main/topic(A)
index 8ce4e58f2a5c483137946766a2d3ad8a7adab280..81bae9f2ec25530f3ce7cd5cfd9be4ea4be8722e 100644 (file)
@@ -29,13 +29,11 @@ test_expect_success "proc-receive: fall throught, let receive-pack to execute ($
        Done
        EOF
        test_cmp expect actual &&
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-B> refs/for/main/topic
        <COMMIT-A> refs/heads/main
        EOF
-       test_cmp expect actual
 '
 
 # Refs of upstream : main(A)             refs/for/main/topic(A)
index fad8eea8a060f640e76e6b93b076a95c95660982..be9b18b2b69e22ff6dc490a847b0b25c25d099a5 100644 (file)
@@ -65,12 +65,10 @@ test_expect_success "proc-receive: multiple rewrite for one ref, no refname for
         <OID-A>..<OID-B> HEAD -> refs/changes/25/125/1
        EOF
        test_cmp expect actual &&
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/main
        EOF
-       test_cmp expect actual
 '
 
 test_expect_success "proc-receive: check remote-tracking #1 ($PROTOCOL)" '
@@ -142,12 +140,10 @@ test_expect_success "proc-receive: multiple rewrites for one ref, no refname for
         + <OID-B>...<OID-A> HEAD -> refs/changes/25/125/1 (forced update)
        EOF
        test_cmp expect actual &&
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/main
        EOF
-       test_cmp expect actual
 '
 
 test_expect_success "proc-receive: check remote-tracking #2 ($PROTOCOL)" '
@@ -205,12 +201,10 @@ test_expect_success "proc-receive: multiple rewrites for one ref ($PROTOCOL)" '
         <OID-A>..<OID-B> HEAD -> refs/changes/24/124/2
        EOF
        test_cmp expect actual &&
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/main
        EOF
-       test_cmp expect actual
 '
 
 test_expect_success "proc-receive: check remote-tracking #3 ($PROTOCOL)" '
index dc254d57eb0ddbe8aa6e2803bf86c58980600d70..95fb89c031d1625f8a99712d8089c1e8d54c715d 100644 (file)
@@ -51,12 +51,10 @@ test_expect_success "proc-receive: multiple rewrite for one ref, no refname for
        Done
        EOF
        test_cmp expect actual &&
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/main
        EOF
-       test_cmp expect actual
 '
 
 test_expect_success "setup proc-receive hook (multiple rewrites for one ref, no refname for the 2nd rewrite, $PROTOCOL/porcelain)" '
@@ -114,12 +112,10 @@ test_expect_success "proc-receive: multiple rewrites for one ref, no refname for
        Done
        EOF
        test_cmp expect actual &&
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/main
        EOF
-       test_cmp expect actual
 '
 
 test_expect_success "setup proc-receive hook (multiple rewrites for one ref, $PROTOCOL/porcelain)" '
@@ -163,10 +159,8 @@ test_expect_success "proc-receive: multiple rewrites for one ref ($PROTOCOL/porc
        Done
        EOF
        test_cmp expect actual &&
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/main
        EOF
-       test_cmp expect actual
 '
index 0d071ebaa6c9dc8cd40bca37d8e4806d2b94cd6e..5e005299cc04af853d6bcbe906af09825e75d4ec 100644 (file)
@@ -24,8 +24,8 @@ test_expect_success "proc-receive: report update of mixed refs ($PROTOCOL)" '
                HEAD:refs/heads/foo \
                HEAD:refs/for/main/topic \
                HEAD:refs/for/next/topic3 \
-               >out 2>&1 &&
-       make_user_friendly_and_stable_output <out >actual &&
+               >out-$test_count 2>&1 &&
+       make_user_friendly_and_stable_output <out-$test_count >actual &&
        cat >expect <<-EOF &&
        remote: # pre-receive hook
        remote: pre-receive< <COMMIT-A> <COMMIT-B> refs/heads/main
@@ -65,15 +65,13 @@ test_expect_success "proc-receive: report update of mixed refs ($PROTOCOL)" '
         ! [remote rejected] HEAD -> refs/for/next/topic3 (proc-receive failed to report status)
        EOF
        test_cmp expect actual &&
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/bar
        <COMMIT-A> refs/heads/baz
        <COMMIT-A> refs/heads/foo
        <COMMIT-B> refs/heads/main
        EOF
-       test_cmp expect actual
 '
 
 # Refs of upstream : main(B)             foo(A)  bar(A))  baz(A)
index d8409912fd3af493f116a0ae735f0b5bd821552a..8f891c5385cf3f3e33988e8857ea37fa4f318dc1 100644 (file)
@@ -24,8 +24,8 @@ test_expect_success "proc-receive: report update of mixed refs ($PROTOCOL/porcel
                HEAD:refs/heads/foo \
                HEAD:refs/for/main/topic \
                HEAD:refs/for/next/topic3 \
-               >out 2>&1 &&
-       make_user_friendly_and_stable_output <out >actual &&
+               >out-$test_count 2>&1 &&
+       make_user_friendly_and_stable_output <out-$test_count >actual &&
        cat >expect <<-EOF &&
        remote: # pre-receive hook
        remote: pre-receive< <COMMIT-A> <COMMIT-B> refs/heads/main
@@ -66,15 +66,13 @@ test_expect_success "proc-receive: report update of mixed refs ($PROTOCOL/porcel
        Done
        EOF
        test_cmp expect actual &&
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/bar
        <COMMIT-A> refs/heads/baz
        <COMMIT-A> refs/heads/foo
        <COMMIT-B> refs/heads/main
        EOF
-       test_cmp expect actual
 '
 
 # Refs of upstream : main(B)             foo(A)  bar(A))  baz(A)
index 2565302a1791efc131597c2160c3e574d6ea92a4..fdcdcc7c2eeae4008b9d5dcd548b951914f4a6c6 100644 (file)
@@ -92,14 +92,12 @@ test_expect_success "proc-receive: process all refs ($PROTOCOL)" '
         + <OID-B>...<OID-A> HEAD -> refs/pull/124/head (forced update)
        EOF
        test_cmp expect actual &&
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-B> refs/heads/bar
        <COMMIT-A> refs/heads/baz
        <COMMIT-A> refs/heads/main
        EOF
-       test_cmp expect actual
 '
 
 # Refs of upstream : main(A)             bar(A)  baz(B)
index e21420b60dd823a589c06e1885ea2276fbed573f..73b35fe0aa5dbdc42b1ddb479c1eb3614c2d496b 100644 (file)
@@ -93,14 +93,12 @@ test_expect_success "proc-receive: process all refs ($PROTOCOL/porcelain)" '
        Done
        EOF
        test_cmp expect actual &&
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-B> refs/heads/bar
        <COMMIT-A> refs/heads/baz
        <COMMIT-A> refs/heads/main
        EOF
-       test_cmp expect actual
 '
 
 # Refs of upstream : main(A)             bar(A)  baz(B)
index 2e29518ec5fb737ac40940f52a3b50cc99d9ba17..7214647ada6c5cdff18a10b6d0031c08444e613b 100644 (file)
@@ -50,12 +50,10 @@ test_expect_success "proc-receive: update branch and new tag ($PROTOCOL)" '
         * [new reference] v123 -> refs/pull/124/head
        EOF
        test_cmp expect actual &&
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/main
        EOF
-       test_cmp expect actual
 '
 
 # Refs of upstream : main(A)
@@ -63,14 +61,12 @@ test_expect_success "proc-receive: update branch and new tag ($PROTOCOL)" '
 test_expect_success "setup upstream: create tags/v123 ($PROTOCOL)" '
        git -C "$upstream" update-ref refs/heads/topic $A &&
        git -C "$upstream" update-ref refs/tags/v123 $TAG &&
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/main
        <COMMIT-A> refs/heads/topic
        <TAG-v123> refs/tags/v123
        EOF
-       test_cmp expect actual
 '
 
 test_expect_success "setup proc-receive hook ($PROTOCOL)" '
@@ -125,11 +121,9 @@ test_expect_success "proc-receive: create/delete branch, and delete tag ($PROTOC
         * [new reference] <COMMIT-A> -> refs/pull/124/head
        EOF
        test_cmp expect actual &&
-       git -C "$upstream" show-ref >out &&
-       make_user_friendly_and_stable_output <out >actual &&
-       cat >expect <<-EOF &&
+
+       test_cmp_refs -C "$upstream" <<-EOF
        <COMMIT-A> refs/heads/main
        <COMMIT-B> refs/heads/topic
        EOF
-       test_cmp expect actual
 '
index 1f4cc873a837ee305396c9975a4cd08919a028ab..8a5d3492c713b8ca5eceef13ed55f7bd49edcae9 100755 (executable)
@@ -547,7 +547,7 @@ test_expect_success 'test lonely missing ref' '
                cd client &&
                test_must_fail git fetch-pack --no-progress .. refs/heads/xyzzy 2>../error-m
        ) &&
-       test_i18ncmp expect-error error-m
+       test_cmp expect-error error-m
 '
 
 test_expect_success 'test missing ref after existing' '
@@ -555,7 +555,7 @@ test_expect_success 'test missing ref after existing' '
                cd client &&
                test_must_fail git fetch-pack --no-progress .. refs/heads/A refs/heads/xyzzy 2>../error-em
        ) &&
-       test_i18ncmp expect-error error-em
+       test_cmp expect-error error-em
 '
 
 test_expect_success 'test missing ref before existing' '
@@ -563,7 +563,7 @@ test_expect_success 'test missing ref before existing' '
                cd client &&
                test_must_fail git fetch-pack --no-progress .. refs/heads/xyzzy refs/heads/A 2>../error-me
        ) &&
-       test_i18ncmp expect-error error-me
+       test_cmp expect-error error-me
 '
 
 test_expect_success 'test --all, --depth, and explicit head' '
index 045398b94e63f88a09c6354a0e37ec8f85fab284..c7b392794bccb8d0038c7876b01323a3a7d3157f 100755 (executable)
@@ -59,7 +59,7 @@ test_expect_success 'add remote whose URL agrees with url.<...>.insteadOf' '
        git remote add myremote git@host.com:team/repo.git
 '
 
-test_expect_success C_LOCALE_OUTPUT 'remote information for the origin' '
+test_expect_success 'remote information for the origin' '
        (
                cd test &&
                tokens_match origin "$(git remote)" &&
@@ -81,7 +81,7 @@ test_expect_success 'add another remote' '
        )
 '
 
-test_expect_success C_LOCALE_OUTPUT 'check remote-tracking' '
+test_expect_success 'check remote-tracking' '
        (
                cd test &&
                check_remote_track origin main side &&
@@ -107,7 +107,7 @@ test_expect_success 'remove remote' '
        )
 '
 
-test_expect_success C_LOCALE_OUTPUT 'remove remote' '
+test_expect_success 'remove remote' '
        (
                cd test &&
                tokens_match origin "$(git remote)" &&
@@ -140,8 +140,8 @@ test_expect_success 'remove remote protects local branches' '
                git remote rm oops 2>actual2 &&
                git branch -d foobranch &&
                git tag -d footag &&
-               test_i18ncmp expect1 actual1 &&
-               test_i18ncmp expect2 actual2
+               test_cmp expect1 actual1 &&
+               test_cmp expect2 actual2
        )
 '
 
@@ -150,7 +150,7 @@ test_expect_success 'remove errors out early when deleting non-existent branch'
                cd test &&
                echo "error: No such remote: '\''foo'\''" >expect &&
                test_expect_code 2 git remote rm foo 2>actual &&
-               test_i18ncmp expect actual
+               test_cmp expect actual
        )
 '
 
@@ -178,7 +178,7 @@ test_expect_success 'rename errors out early when deleting non-existent branch'
                cd test &&
                echo "error: No such remote: '\''foo'\''" >expect &&
                test_expect_code 2 git remote rename foo bar 2>actual &&
-               test_i18ncmp expect actual
+               test_cmp expect actual
        )
 '
 
@@ -186,14 +186,14 @@ test_expect_success 'rename errors out early when when new name is invalid' '
        test_config remote.foo.vcs bar &&
        echo "fatal: '\''invalid...name'\'' is not a valid remote name" >expect &&
        test_must_fail git remote rename foo invalid...name 2>actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success 'add existing foreign_vcs remote' '
        test_config remote.foo.vcs bar &&
        echo "error: remote foo already exists." >expect &&
        test_expect_code 3 git remote add foo bar 2>actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success 'add existing foreign_vcs remote' '
@@ -201,13 +201,13 @@ test_expect_success 'add existing foreign_vcs remote' '
        test_config remote.bar.vcs bar &&
        echo "error: remote bar already exists." >expect &&
        test_expect_code 3 git remote rename foo bar 2>actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success 'add invalid foreign_vcs remote' '
        echo "fatal: '\''invalid...name'\'' is not a valid remote name" >expect &&
        test_must_fail git remote add invalid...name bar 2>actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 cat >test/expect <<EOF
@@ -267,7 +267,7 @@ test_expect_success 'show' '
                git config --add remote.two.push refs/heads/main:refs/heads/another &&
                git remote show origin two >output &&
                git branch -d rebase octopus &&
-               test_i18ncmp expect output
+               test_cmp expect output
        )
 '
 
@@ -294,7 +294,7 @@ test_expect_success 'show -n' '
                cd test &&
                git remote show -n origin >output &&
                mv ../one.unreachable ../one &&
-               test_i18ncmp expect output
+               test_cmp expect output
        )
 '
 
@@ -337,7 +337,7 @@ test_expect_success 'set-head --auto has no problem w/multiple HEADs' '
                git fetch two "refs/heads/*:refs/remotes/two/*" &&
                git remote set-head --auto two >output 2>&1 &&
                echo "two/HEAD set to main" >expect &&
-               test_i18ncmp expect output
+               test_cmp expect output
        )
 '
 
@@ -369,7 +369,7 @@ test_expect_success 'prune --dry-run' '
                git remote prune --dry-run origin >output &&
                git rev-parse refs/remotes/origin/side2 &&
                test_must_fail git rev-parse refs/remotes/origin/side &&
-               test_i18ncmp expect output
+               test_cmp expect output
        )
 '
 
@@ -594,6 +594,7 @@ test_expect_success 'add --no-tags' '
                cd add-no-tags &&
                git init &&
                git remote add -f --no-tags origin ../one &&
+               grep tagOpt .git/config &&
                git tag -l some-tag >../test/output &&
                git tag -l foobar-tag >../test/output &&
                git config remote.origin.tagopt >>../test/output
@@ -756,6 +757,7 @@ test_expect_success 'rename a remote' '
                cd four &&
                git config branch.main.pushRemote origin &&
                git remote rename origin upstream &&
+               grep "pushRemote" .git/config &&
                test -z "$(git for-each-ref refs/remotes/origin)" &&
                test "$(git symbolic-ref refs/remotes/upstream/HEAD)" = "refs/remotes/upstream/main" &&
                test "$(git rev-parse upstream/main)" = "$(git rev-parse main)" &&
@@ -772,6 +774,7 @@ test_expect_success 'rename a remote renames repo remote.pushDefault' '
                cd four.1 &&
                git config remote.pushDefault origin &&
                git remote rename origin upstream &&
+               grep pushDefault .git/config &&
                test "$(git config --local remote.pushDefault)" = "upstream"
        )
 '
index 42f550300476a1e7ddae6b88dc0a04bb89ff0d80..e83b2a65069f6a1ddf78da5a38efd3f5f85c65e8 100755 (executable)
@@ -9,7 +9,7 @@ GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
 export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
 
 . ./test-lib.sh
-. "$TEST_DIRECTORY"/test-bundle-functions.sh
+. "$TEST_DIRECTORY"/lib-bundle.sh
 
 D=$(pwd)
 
@@ -1051,7 +1051,7 @@ test_expect_success 'fetch --prune prints the remotes url' '
                git fetch --prune origin 2>&1 | head -n1 >../actual
        ) &&
        echo "From ${D}/." >expect &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success 'branchname D/F conflict resolved by --prune' '
@@ -1097,7 +1097,7 @@ test_expect_success 'fetching with auto-gc does not lock up' '
        )
 '
 
-test_expect_success C_LOCALE_OUTPUT 'fetch aligned output' '
+test_expect_success 'fetch aligned output' '
        git clone . full-output &&
        test_commit looooooooooooong-tag &&
        (
@@ -1112,7 +1112,7 @@ test_expect_success C_LOCALE_OUTPUT 'fetch aligned output' '
        test_cmp expect actual
 '
 
-test_expect_success C_LOCALE_OUTPUT 'fetch compact output' '
+test_expect_success 'fetch compact output' '
        git clone . compact &&
        test_commit extraaa &&
        (
index 4a568a2398ef4ba96ca2218839f9c2f2741b833d..f53f58895a12979f27a1b24ba9f15ee37bbc49a9 100755 (executable)
@@ -150,7 +150,7 @@ test_expect_success 'confuses pattern as remote when no remote specified' '
        # We could just as easily have used "main"; the "*" emphasizes its
        # role as a pattern.
        test_must_fail git ls-remote "$does_not_exist" >actual 2>&1 &&
-       test_i18ncmp exp actual
+       test_cmp exp actual
 '
 
 test_expect_success 'die with non-2 for wrong repository even with --exit-code' '
index 15262b41929d81fe51ea03d1aba298860ca346b3..f11742ed5999eeb710901226b81d628404021cd6 100755 (executable)
@@ -820,6 +820,11 @@ test_expect_success 'push --delete refuses src:dest refspecs' '
        test_must_fail git push testrepo --delete main:foo
 '
 
+test_expect_success 'push --delete refuses empty string' '
+       mk_test testrepo heads/master &&
+       test_must_fail git push testrepo --delete ""
+'
+
 test_expect_success 'warn on push to HEAD of non-bare repository' '
        mk_test testrepo heads/main &&
        (
index 11513ec15e1e90cc2ee15a3f501d0789f393fe0f..ed11569d8d7ec605198773351e75baeaa232cb1a 100755 (executable)
@@ -74,7 +74,7 @@ test_expect_success "fetch --recurse-submodules recurses into submodules" '
                git fetch --recurse-submodules >../actual.out 2>../actual.err
        ) &&
        test_must_be_empty actual.out &&
-       test_i18ncmp expect.err actual.err
+       test_cmp expect.err actual.err
 '
 
 test_expect_success "submodule.recurse option triggers recursive fetch" '
@@ -84,7 +84,7 @@ test_expect_success "submodule.recurse option triggers recursive fetch" '
                git -c submodule.recurse fetch >../actual.out 2>../actual.err
        ) &&
        test_must_be_empty actual.out &&
-       test_i18ncmp expect.err actual.err
+       test_cmp expect.err actual.err
 '
 
 test_expect_success "fetch --recurse-submodules -j2 has the same output behaviour" '
@@ -94,7 +94,7 @@ test_expect_success "fetch --recurse-submodules -j2 has the same output behaviou
                GIT_TRACE="$TRASH_DIRECTORY/trace.out" git fetch --recurse-submodules -j2 2>../actual.err
        ) &&
        test_must_be_empty actual.out &&
-       test_i18ncmp expect.err actual.err &&
+       test_cmp expect.err actual.err &&
        grep "2 tasks" trace.out
 '
 
@@ -124,7 +124,7 @@ test_expect_success "using fetchRecurseSubmodules=true in .gitmodules recurses i
                git fetch >../actual.out 2>../actual.err
        ) &&
        test_must_be_empty actual.out &&
-       test_i18ncmp expect.err actual.err
+       test_cmp expect.err actual.err
 '
 
 test_expect_success "--no-recurse-submodules overrides .gitmodules config" '
@@ -155,7 +155,7 @@ test_expect_success "--recurse-submodules overrides fetchRecurseSubmodules setti
                git config --unset submodule.submodule.fetchRecurseSubmodules
        ) &&
        test_must_be_empty actual.out &&
-       test_i18ncmp expect.err actual.err
+       test_cmp expect.err actual.err
 '
 
 test_expect_success "--quiet propagates to submodules" '
@@ -183,7 +183,7 @@ test_expect_success "--dry-run propagates to submodules" '
                git fetch --recurse-submodules --dry-run >../actual.out 2>../actual.err
        ) &&
        test_must_be_empty actual.out &&
-       test_i18ncmp expect.err actual.err
+       test_cmp expect.err actual.err
 '
 
 test_expect_success "Without --dry-run propagates to submodules" '
@@ -192,7 +192,7 @@ test_expect_success "Without --dry-run propagates to submodules" '
                git fetch --recurse-submodules >../actual.out 2>../actual.err
        ) &&
        test_must_be_empty actual.out &&
-       test_i18ncmp expect.err actual.err
+       test_cmp expect.err actual.err
 '
 
 test_expect_success "recurseSubmodules=true propagates into submodules" '
@@ -203,7 +203,7 @@ test_expect_success "recurseSubmodules=true propagates into submodules" '
                git fetch >../actual.out 2>../actual.err
        ) &&
        test_must_be_empty actual.out &&
-       test_i18ncmp expect.err actual.err
+       test_cmp expect.err actual.err
 '
 
 test_expect_success "--recurse-submodules overrides config in submodule" '
@@ -217,7 +217,7 @@ test_expect_success "--recurse-submodules overrides config in submodule" '
                git fetch --recurse-submodules >../actual.out 2>../actual.err
        ) &&
        test_must_be_empty actual.out &&
-       test_i18ncmp expect.err actual.err
+       test_cmp expect.err actual.err
 '
 
 test_expect_success "--no-recurse-submodules overrides config setting" '
@@ -257,7 +257,7 @@ test_expect_success "Recursion stops when no new submodule commits are fetched"
                cd downstream &&
                git fetch >../actual.out 2>../actual.err
        ) &&
-       test_i18ncmp expect.err.sub actual.err &&
+       test_cmp expect.err.sub actual.err &&
        test_must_be_empty actual.out
 '
 
@@ -275,7 +275,7 @@ test_expect_success "Recursion doesn't happen when new superproject commits don'
                git fetch >../actual.out 2>../actual.err
        ) &&
        test_must_be_empty actual.out &&
-       test_i18ncmp expect.err.file actual.err
+       test_cmp expect.err.file actual.err
 '
 
 test_expect_success "Recursion picks up config in submodule" '
@@ -303,7 +303,7 @@ test_expect_success "Recursion picks up config in submodule" '
                        git config --unset fetch.recurseSubmodules
                )
        ) &&
-       test_i18ncmp expect.err.sub actual.err &&
+       test_cmp expect.err.sub actual.err &&
        test_must_be_empty actual.out
 '
 
@@ -336,7 +336,7 @@ test_expect_success "Recursion picks up all submodules when necessary" '
                cd downstream &&
                git fetch >../actual.out 2>../actual.err
        ) &&
-       test_i18ncmp expect.err.2 actual.err &&
+       test_cmp expect.err.2 actual.err &&
        test_must_be_empty actual.out
 '
 
@@ -392,7 +392,7 @@ test_expect_success "'--recurse-submodules=on-demand' recurses as deep as necess
                )
        ) &&
        test_must_be_empty actual.out &&
-       test_i18ncmp expect.err actual.err
+       test_cmp expect.err actual.err
 '
 
 test_expect_success "'--recurse-submodules=on-demand' stops when no new submodule commits are found in the superproject (and ignores config)" '
@@ -409,7 +409,7 @@ test_expect_success "'--recurse-submodules=on-demand' stops when no new submodul
                git fetch --recurse-submodules=on-demand >../actual.out 2>../actual.err
        ) &&
        test_must_be_empty actual.out &&
-       test_i18ncmp expect.err.file actual.err
+       test_cmp expect.err.file actual.err
 '
 
 test_expect_success "'fetch.recurseSubmodules=on-demand' overrides global config" '
@@ -437,7 +437,7 @@ test_expect_success "'fetch.recurseSubmodules=on-demand' overrides global config
                git config --unset fetch.recurseSubmodules
        ) &&
        test_must_be_empty actual.out &&
-       test_i18ncmp expect.err.2 actual.err
+       test_cmp expect.err.2 actual.err
 '
 
 test_expect_success "'submodule.<sub>.fetchRecurseSubmodules=on-demand' overrides fetch.recurseSubmodules" '
@@ -465,7 +465,7 @@ test_expect_success "'submodule.<sub>.fetchRecurseSubmodules=on-demand' override
                git config --unset submodule.submodule.fetchRecurseSubmodules
        ) &&
        test_must_be_empty actual.out &&
-       test_i18ncmp expect.err.2 actual.err
+       test_cmp expect.err.2 actual.err
 '
 
 test_expect_success "don't fetch submodule when newly recorded commits are already present" '
@@ -484,7 +484,7 @@ test_expect_success "don't fetch submodule when newly recorded commits are alrea
                git fetch >../actual.out 2>../actual.err
        ) &&
        test_must_be_empty actual.out &&
-       test_i18ncmp expect.err actual.err &&
+       test_cmp expect.err actual.err &&
        (
                cd submodule &&
                git checkout -q sub
@@ -520,7 +520,7 @@ test_expect_success "'fetch.recurseSubmodules=on-demand' works also without .git
                git reset --hard
        ) &&
        test_must_be_empty actual.out &&
-       test_i18ncmp expect.err.2 actual.err &&
+       test_cmp expect.err.2 actual.err &&
        git checkout HEAD^ -- .gitmodules &&
        git add .gitmodules &&
        git commit -m "new submodule restored .gitmodules"
index bc5ccf233f02f8cf641abee4c3007148e4da365b..c024fa2818314d3d127e93da2e281dc259820733 100755 (executable)
@@ -118,7 +118,7 @@ test_expect_success 'rejected update prints status' '
        git commit -m dev2 &&
        test_must_fail git push origin dev2 2>act &&
        sed -e "/^remote: /s/ *$//" <act >cmp &&
-       test_i18ncmp exp cmp
+       test_cmp exp cmp
 '
 rm -f "$HTTPD_DOCUMENT_ROOT_PATH/test_repo.git/hooks/update"
 
index 4357af15256647588b4c7d8a515eddd45835e7c7..dd5f44d986f2f774313ca11e7a1bfecf87060e7e 100755 (executable)
@@ -59,4 +59,14 @@ test_expect_success 'hook does not run from repo config' '
        test_path_is_missing .git/hook.stdout
 '
 
+test_expect_success 'hook works with partial clone' '
+       clear_hook_results &&
+       test_config_global uploadpack.packObjectsHook ./hook &&
+       test_config_global uploadpack.allowFilter true &&
+       git clone --bare --no-local --filter=blob:none . dst.git &&
+       git -C dst.git rev-list --objects --missing=allow-any --no-object-names --all >objects &&
+       git -C dst.git cat-file --batch-check="%(objecttype)" <objects >types &&
+       ! grep blob types
+'
+
 test_done
index 2ecb06bb6312b5894fba039a2ed982a2fd240073..6d9142afc3b24b39594ce869b48df9549fe603c4 100755 (executable)
@@ -227,7 +227,10 @@ test_expect_success 'http-fetch --packfile' '
 
        git init packfileclient &&
        p=$(cd "$HTTPD_DOCUMENT_ROOT_PATH"/repo_pack.git && ls objects/pack/pack-*.pack) &&
-       git -C packfileclient http-fetch --packfile=$ARBITRARY "$HTTPD_URL"/dumb/repo_pack.git/$p >out &&
+       git -C packfileclient http-fetch --packfile=$ARBITRARY \
+               --index-pack-arg=index-pack --index-pack-arg=--stdin \
+               --index-pack-arg=--keep \
+               "$HTTPD_URL"/dumb/repo_pack.git/$p >out &&
 
        grep "^keep.[0-9a-f]\{16,\}$" out &&
        cut -c6- out >packhash &&
index 664c913866236dcbb026a1222f18b1b5d41cf163..329ae599fd3c629b3ff354d6058fbb22b219c9d7 100755 (executable)
@@ -40,7 +40,7 @@ test_expect_success 'clone with excess parameters (2)' '
 
 '
 
-test_expect_success C_LOCALE_OUTPUT 'output from clone' '
+test_expect_success 'output from clone' '
        rm -fr dst &&
        git clone -n "file://$(pwd)/src" dst >output 2>&1 &&
        test $(grep Clon output | wc -l) = 1
@@ -759,6 +759,15 @@ test_expect_success 'partial clone using HTTP' '
        partial_clone "$HTTPD_DOCUMENT_ROOT_PATH/server" "$HTTPD_URL/smart/server"
 '
 
+test_expect_success 'reject cloning shallow repository using HTTP' '
+       test_when_finished "rm -rf repo" &&
+       git clone --bare --no-local --depth=1 src "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&
+       test_must_fail git clone --reject-shallow $HTTPD_URL/smart/repo.git repo 2>err &&
+       test_i18ngrep -e "source repository is shallow, reject to clone." err &&
+
+       git clone --no-reject-shallow $HTTPD_URL/smart/repo.git repo
+'
+
 # DO NOT add non-httpd-specific tests here, because the last part of this
 # test script is only executed when httpd is available and enabled.
 
index 5d682706ae4a7f726a639d11fed826c842d48908..e845d621f618ba83962842b766c076a788877936 100755 (executable)
@@ -329,7 +329,7 @@ test_expect_success SYMLINKS 'clone repo with symlinked or unknown files at obje
        for raw in $(ls T*.raw)
        do
                sed -e "s!/../!/Y/!; s![0-9a-f]\{38,\}!Z!" -e "/commit-graph/d" \
-                   -e "/multi-pack-index/d" <$raw >$raw.de-sha-1 &&
+                   -e "/multi-pack-index/d" -e "/rev/d" <$raw >$raw.de-sha-1 &&
                sort $raw.de-sha-1 >$raw.de-sha || return 1
        done &&
 
index 5d6e63a841f7f2f64a0fa857261264c4bd924c67..3a595c0f82c7043a44887bdd8499b490355d675d 100755 (executable)
@@ -11,7 +11,8 @@ test_expect_success 'setup' '
        mkdir parent &&
        (cd parent && git init &&
         echo one >file && git add file &&
-        git commit -m one)
+        git commit -m one) &&
+       git clone --depth=1 --no-local parent shallow-repo
 
 '
 
@@ -45,6 +46,30 @@ test_expect_success 'disallows --bare with --separate-git-dir' '
 
 '
 
+test_expect_success 'reject cloning shallow repository' '
+       test_when_finished "rm -rf repo" &&
+       test_must_fail git clone --reject-shallow shallow-repo out 2>err &&
+       test_i18ngrep -e "source repository is shallow, reject to clone." err &&
+
+       git clone --no-reject-shallow shallow-repo repo
+'
+
+test_expect_success 'reject cloning non-local shallow repository' '
+       test_when_finished "rm -rf repo" &&
+       test_must_fail git clone --reject-shallow --no-local shallow-repo out 2>err &&
+       test_i18ngrep -e "source repository is shallow, reject to clone." err &&
+
+       git clone --no-reject-shallow --no-local shallow-repo repo
+'
+
+test_expect_success 'succeed cloning normal repository' '
+       test_when_finished "rm -rf chilad1 child2 child3 child4 " &&
+       git clone --reject-shallow parent child1 &&
+       git clone --reject-shallow --no-local parent child2 &&
+       git clone --no-reject-shallow parent child3 &&
+       git clone --no-reject-shallow --no-local parent child4
+'
+
 test_expect_success 'uses "origin" for default remote name' '
 
        git clone parent clone-default-origin &&
@@ -104,12 +129,22 @@ test_expect_success 'redirected clone -v does show progress' '
 
 '
 
+test_expect_success 'clone does not segfault with --bare and core.bare=false' '
+       test_config_global core.bare false &&
+       git clone --bare parent clone-bare &&
+       echo true >expect &&
+       git -C clone-bare rev-parse --is-bare-repository >actual &&
+       test_cmp expect actual
+'
+
 test_expect_success 'chooses correct default initial branch name' '
-       git init --bare empty &&
        GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME= \
-       git -c init.defaultBranch=up clone empty whats-up &&
-       test refs/heads/up = $(git -C whats-up symbolic-ref HEAD) &&
-       test refs/heads/up = $(git -C whats-up config branch.up.merge)
+       git -c init.defaultBranch=foo init --bare empty &&
+       test_config -C empty lsrefs.unborn advertise &&
+       GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME= \
+       git -c init.defaultBranch=up -c protocol.version=2 clone empty whats-up &&
+       test refs/heads/foo = $(git -C whats-up symbolic-ref HEAD) &&
+       test refs/heads/foo = $(git -C whats-up config branch.foo.merge)
 '
 
 test_expect_success 'guesses initial branch name correctly' '
index 9f555b87ecdf4c09e2031d1ab485c33bf63a9f5f..f8625f915821b5db03a5667b548ed055d26ccca3 100755 (executable)
@@ -95,6 +95,31 @@ test_expect_success 'clone -c remote.<remote>.fetch=<refspec> --origin=<name>' '
        test_cmp expect actual
 '
 
+test_expect_success 'set up shallow repository' '
+       git clone --depth=1 --no-local . shallow-repo
+'
+
+test_expect_success 'clone.rejectshallow=true should reject cloning shallow repo' '
+       test_when_finished "rm -rf out" &&
+       test_must_fail git -c clone.rejectshallow=true clone --no-local shallow-repo out 2>err &&
+       test_i18ngrep -e "source repository is shallow, reject to clone." err &&
+
+       git -c clone.rejectshallow=false clone --no-local shallow-repo out
+'
+
+test_expect_success 'option --[no-]reject-shallow override clone.rejectshallow config' '
+       test_when_finished "rm -rf out" &&
+       test_must_fail git -c clone.rejectshallow=false clone --reject-shallow --no-local shallow-repo out 2>err &&
+       test_i18ngrep -e "source repository is shallow, reject to clone." err &&
+
+       git -c clone.rejectshallow=true clone --no-reject-shallow --no-local shallow-repo out
+'
+
+test_expect_success 'clone.rejectshallow=true should succeed cloning normal repo' '
+       test_when_finished "rm -rf out" &&
+       git -c clone.rejectshallow=true clone --no-local . out
+'
+
 test_expect_success MINGW 'clone -c core.hideDotFiles' '
        test_commit attributes .gitattributes "" &&
        rm -rf child &&
index 6a6af7449ca05cc64ed3a76b113c4f629fe78714..3126cfd7e9d6bdcd41f2c65811b8a2ff8fe0f16e 100755 (executable)
@@ -97,6 +97,7 @@ test_expect_success 'by default no tags will be kept updated' '
 test_expect_success 'clone with --no-tags' '
        (
                cd dir_all_no_tags &&
+               grep tagOpt .git/config &&
                git fetch &&
                git for-each-ref refs/tags >../actual
        ) &&
index d9143b4bd2d7ca27dd689c231774b8d143baa798..509f379d4920605e567646692c15146fd977b2cd 100755 (executable)
@@ -15,7 +15,7 @@ test_expect_success 'test capability advertisement' '
        cat >expect <<-EOF &&
        version 2
        agent=git/$(git version | cut -d" " -f3)
-       ls-refs
+       ls-refs=unborn
        fetch=shallow
        server-option
        object-format=$(test_oid algo)
index 3d994e0b1bb2a9e75488e2fdeec6ae8c5111bef2..2e1243ca40b0191e5c53e5d702194e23648b1162 100755 (executable)
@@ -212,6 +212,31 @@ test_expect_success 'clone with file:// using protocol v2' '
        grep "ref-prefix refs/tags/" log
 '
 
+test_expect_success 'clone of empty repo propagates name of default branch' '
+       test_when_finished "rm -rf file_empty_parent file_empty_child" &&
+
+       GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME= \
+       git -c init.defaultBranch=mydefaultbranch init file_empty_parent &&
+
+       GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME= \
+       git -c init.defaultBranch=main -c protocol.version=2 \
+               clone "file://$(pwd)/file_empty_parent" file_empty_child &&
+       grep "refs/heads/mydefaultbranch" file_empty_child/.git/HEAD
+'
+
+test_expect_success '...but not if explicitly forbidden by config' '
+       test_when_finished "rm -rf file_empty_parent file_empty_child" &&
+
+       GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME= \
+       git -c init.defaultBranch=mydefaultbranch init file_empty_parent &&
+       test_config -C file_empty_parent lsrefs.unborn ignore &&
+
+       GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME= \
+       git -c init.defaultBranch=main -c protocol.version=2 \
+               clone "file://$(pwd)/file_empty_parent" file_empty_child &&
+       ! grep "refs/heads/mydefaultbranch" file_empty_child/.git/HEAD
+'
+
 test_expect_success 'fetch with file:// using protocol v2' '
        test_when_finished "rm -f log" &&
 
@@ -850,11 +875,33 @@ test_expect_success 'part of packfile response provided as URI' '
        test -f hfound &&
        test -f h2found &&
 
-       # Ensure that there are exactly 6 files (3 .pack and 3 .idx).
-       ls http_child/.git/objects/pack/* >filelist &&
+       # Ensure that there are exactly 3 packfiles with associated .idx
+       ls http_child/.git/objects/pack/*.pack \
+           http_child/.git/objects/pack/*.idx >filelist &&
        test_line_count = 6 filelist
 '
 
+test_expect_success 'packfile URIs with fetch instead of clone' '
+       P="$HTTPD_DOCUMENT_ROOT_PATH/http_parent" &&
+       rm -rf "$P" http_child log &&
+
+       git init "$P" &&
+       git -C "$P" config "uploadpack.allowsidebandall" "true" &&
+
+       echo my-blob >"$P/my-blob" &&
+       git -C "$P" add my-blob &&
+       git -C "$P" commit -m x &&
+
+       configure_exclusion "$P" my-blob >h &&
+
+       git init http_child &&
+
+       GIT_TEST_SIDEBAND_ALL=1 \
+       git -C http_child -c protocol.version=2 \
+               -c fetch.uriprotocols=http,https \
+               fetch "$HTTPD_URL/smart/http_parent"
+'
+
 test_expect_success 'fetching with valid packfile URI but invalid hash fails' '
        P="$HTTPD_DOCUMENT_ROOT_PATH/http_parent" &&
        rm -rf "$P" http_child log &&
@@ -904,8 +951,9 @@ test_expect_success 'packfile-uri with transfer.fsckobjects' '
                -c fetch.uriprotocols=http,https \
                clone "$HTTPD_URL/smart/http_parent" http_child &&
 
-       # Ensure that there are exactly 4 files (2 .pack and 2 .idx).
-       ls http_child/.git/objects/pack/* >filelist &&
+       # Ensure that there are exactly 2 packfiles with associated .idx
+       ls http_child/.git/objects/pack/*.pack \
+           http_child/.git/objects/pack/*.idx >filelist &&
        test_line_count = 4 filelist
 '
 
@@ -939,6 +987,54 @@ test_expect_success 'packfile-uri with transfer.fsckobjects fails on bad object'
        test_i18ngrep "invalid author/committer line - missing email" error
 '
 
+test_expect_success 'packfile-uri with transfer.fsckobjects succeeds when .gitmodules is separate from tree' '
+       P="$HTTPD_DOCUMENT_ROOT_PATH/http_parent" &&
+       rm -rf "$P" http_child &&
+
+       git init "$P" &&
+       git -C "$P" config "uploadpack.allowsidebandall" "true" &&
+
+       echo "[submodule libfoo]" >"$P/.gitmodules" &&
+       echo "path = include/foo" >>"$P/.gitmodules" &&
+       echo "url = git://example.com/git/lib.git" >>"$P/.gitmodules" &&
+       git -C "$P" add .gitmodules &&
+       git -C "$P" commit -m x &&
+
+       configure_exclusion "$P" .gitmodules >h &&
+
+       sane_unset GIT_TEST_SIDEBAND_ALL &&
+       git -c protocol.version=2 -c transfer.fsckobjects=1 \
+               -c fetch.uriprotocols=http,https \
+               clone "$HTTPD_URL/smart/http_parent" http_child &&
+
+       # Ensure that there are exactly 2 packfiles with associated .idx
+       ls http_child/.git/objects/pack/*.pack \
+           http_child/.git/objects/pack/*.idx >filelist &&
+       test_line_count = 4 filelist
+'
+
+test_expect_success 'packfile-uri with transfer.fsckobjects fails when .gitmodules separate from tree is invalid' '
+       P="$HTTPD_DOCUMENT_ROOT_PATH/http_parent" &&
+       rm -rf "$P" http_child err &&
+
+       git init "$P" &&
+       git -C "$P" config "uploadpack.allowsidebandall" "true" &&
+
+       echo "[submodule \"..\"]" >"$P/.gitmodules" &&
+       echo "path = include/foo" >>"$P/.gitmodules" &&
+       echo "url = git://example.com/git/lib.git" >>"$P/.gitmodules" &&
+       git -C "$P" add .gitmodules &&
+       git -C "$P" commit -m x &&
+
+       configure_exclusion "$P" .gitmodules >h &&
+
+       sane_unset GIT_TEST_SIDEBAND_ALL &&
+       test_must_fail git -c protocol.version=2 -c transfer.fsckobjects=1 \
+               -c fetch.uriprotocols=http,https \
+               clone "$HTTPD_URL/smart/http_parent" http_child 2>err &&
+       test_i18ngrep "disallowed submodule name" err
+'
+
 # DO NOT add non-httpd-specific tests here, because the last part of this
 # test script is only executed when httpd is available and enabled.
 
index 64d8f99325165a76008a478a55cfa913957293a2..e9e471621d59a6a321699c1c59138b95c05b2525 100755 (executable)
@@ -19,7 +19,8 @@ get_actual_commits () {
        test-tool pkt-line unpack-sideband <out >o.pack &&
        git index-pack o.pack &&
        git verify-pack -v o.idx >objs &&
-       grep commit objs | cut -d" " -f1 | sort >actual_commits
+       sed -n -e 's/\([0-9a-f][0-9a-f]*\) commit .*/\1/p' objs >objs.sed &&
+       sort >actual_commits <objs.sed
 }
 
 check_output () {
index 6249420a80672b98b85b93cefaa65b4d7f8c7151..881f72fd443c8aefbe47c693b5bb80ee842a64db 100755 (executable)
@@ -9,7 +9,7 @@ GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
 export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
 
 . ./test-lib.sh
-. "$TEST_DIRECTORY"/test-bundle-functions.sh
+. "$TEST_DIRECTORY"/lib-bundle.sh
 
 # Create a commit or tag and set the variable with the object ID.
 test_commit_setvar () {
@@ -175,7 +175,7 @@ test_expect_success 'create bundle from special rev: main^!' '
        cat >expect <<-\EOF &&
        <COMMIT-P> refs/heads/main
        EOF
-       test_i18ncmp expect actual &&
+       test_cmp expect actual &&
 
        git bundle verify special-rev.bdl |
                make_user_friendly_and_stable_output >actual &&
@@ -185,7 +185,7 @@ test_expect_success 'create bundle from special rev: main^!' '
        The bundle requires this ref:
        <COMMIT-O>
        EOF
-       test_i18ncmp expect actual &&
+       test_cmp expect actual &&
 
        test_bundle_object_count special-rev.bdl 3
 '
@@ -207,7 +207,7 @@ test_expect_success 'create bundle with --max-count option' '
        The bundle requires this ref:
        <COMMIT-O>
        EOF
-       test_i18ncmp expect actual &&
+       test_cmp expect actual &&
 
        test_bundle_object_count max-count.bdl 4
 '
@@ -236,7 +236,7 @@ test_expect_success 'create bundle with --since option' '
        <COMMIT-M>
        <COMMIT-K>
        EOF
-       test_i18ncmp expect actual &&
+       test_cmp expect actual &&
 
        test_bundle_object_count --thin since.bdl 13
 '
@@ -262,11 +262,11 @@ test_expect_success 'create bundle 1 - no prerequisites' '
        # verify bundle, which has no prerequisites
        git bundle verify 1.bdl |
                make_user_friendly_and_stable_output >actual &&
-       test_i18ncmp expect actual &&
+       test_cmp expect actual &&
 
        git bundle verify stdin-1.bdl |
                make_user_friendly_and_stable_output >actual &&
-       test_i18ncmp expect actual &&
+       test_cmp expect actual &&
 
        test_bundle_object_count       1.bdl 24 &&
        test_bundle_object_count stdin-1.bdl 24
@@ -304,11 +304,11 @@ test_expect_success 'create bundle 2 - has prerequisites' '
 
        git bundle verify 2.bdl |
                make_user_friendly_and_stable_output >actual &&
-       test_i18ncmp expect actual &&
+       test_cmp expect actual &&
 
        git bundle verify stdin-2.bdl |
                make_user_friendly_and_stable_output >actual &&
-       test_i18ncmp expect actual &&
+       test_cmp expect actual &&
 
        test_bundle_object_count       2.bdl 16 &&
        test_bundle_object_count stdin-2.bdl 16
@@ -326,11 +326,11 @@ test_expect_success 'fail to verify bundle without prerequisites' '
 
        test_must_fail git -C test1.git bundle verify ../2.bdl 2>&1 |
                make_user_friendly_and_stable_output >actual &&
-       test_i18ncmp expect actual &&
+       test_cmp expect actual &&
 
        test_must_fail git -C test1.git bundle verify ../stdin-2.bdl 2>&1 |
                make_user_friendly_and_stable_output >actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success 'create bundle 3 - two refs, same object' '
@@ -363,11 +363,11 @@ test_expect_success 'create bundle 3 - two refs, same object' '
 
        git bundle verify 3.bdl |
                make_user_friendly_and_stable_output >actual &&
-       test_i18ncmp expect actual &&
+       test_cmp expect actual &&
 
        git bundle verify stdin-3.bdl |
                make_user_friendly_and_stable_output >actual &&
-       test_i18ncmp expect actual &&
+       test_cmp expect actual &&
 
        test_bundle_object_count       3.bdl 4 &&
        test_bundle_object_count stdin-3.bdl 4
@@ -404,11 +404,11 @@ test_expect_success 'create bundle 4 - with tags' '
 
        git bundle verify 4.bdl |
                make_user_friendly_and_stable_output >actual &&
-       test_i18ncmp expect actual &&
+       test_cmp expect actual &&
 
        git bundle verify stdin-4.bdl |
                make_user_friendly_and_stable_output >actual &&
-       test_i18ncmp expect actual &&
+       test_cmp expect actual &&
 
        test_bundle_object_count       4.bdl 3 &&
        test_bundle_object_count stdin-4.bdl 3
index 7bcde054d73d5815c3bdc52c5c53ebd3e3eb32d4..32bb66e1eda44cfa1de67ab7c168bd856fc9d421 100755 (executable)
@@ -578,9 +578,9 @@ test_expect_success 'skipping away from skipped commit' '
        test "$para3" = "$PARA_HASH3"
 '
 
-test_expect_success 'erroring out when using bad path parameters' '
+test_expect_success 'erroring out when using bad path arguments' '
        test_must_fail git bisect start $PARA_HASH7 $HASH1 -- foobar 2> error.txt &&
-       test_i18ngrep "bad path parameters" error.txt
+       test_i18ngrep "bad path arguments" error.txt
 '
 
 test_expect_success 'test bisection on bare repo - --no-checkout specified' '
@@ -829,7 +829,7 @@ test_expect_success 'bisect terms needs 0 or 1 argument' '
        test_must_fail git bisect terms 1 2 &&
        test_must_fail git bisect terms 2>actual &&
        echo "error: no terms defined" >expected &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 test_expect_success 'bisect terms shows good/bad after start' '
@@ -903,7 +903,7 @@ test_expect_success 'bisect start --term-* does store terms' '
        Your current terms are two for the old state
        and one for the new state.
        EOF
-       test_i18ncmp expected actual &&
+       test_cmp expected actual &&
        git bisect terms --term-bad >actual &&
        echo one >expected &&
        test_cmp expected actual &&
@@ -939,4 +939,16 @@ test_expect_success 'git bisect reset cleans bisection state properly' '
        test_path_is_missing ".git/BISECT_START"
 '
 
+test_expect_success 'bisect handles annotated tags' '
+       test_commit commit-one &&
+       git tag -m foo tag-one &&
+       test_commit commit-two &&
+       git tag -m foo tag-two &&
+       git bisect start &&
+       git bisect good tag-one &&
+       git bisect bad tag-two >output &&
+       bad=$(git rev-parse --verify tag-two^{commit}) &&
+       grep "$bad is the first bad commit" output
+'
+
 test_done
index a160b2bf99c41c3b30dcd26ebae0a78f6a96b3f8..a313849406ddb4b7f104ee06eabc9068d5551425 100755 (executable)
@@ -57,7 +57,7 @@ test_expect_success 'branch -v' '
                git branch -v
        ) |
        sed -n -e "$t6040_script" >actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 cat >expect <<\EOF
@@ -75,7 +75,7 @@ test_expect_success 'branch -vv' '
                git branch -vv
        ) |
        sed -n -e "$t6040_script" >actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success 'checkout (diverged from upstream)' '
@@ -146,7 +146,7 @@ test_expect_success 'status -s -b (diverged from upstream)' '
                git checkout b1 >/dev/null &&
                git status -s -b | head -1
        ) >actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 cat >expect <<\EOF
@@ -159,7 +159,7 @@ test_expect_success 'status -s -b --no-ahead-behind (diverged from upstream)' '
                git checkout b1 >/dev/null &&
                git status -s -b --no-ahead-behind | head -1
        ) >actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 cat >expect <<\EOF
@@ -172,7 +172,7 @@ test_expect_success 'status.aheadbehind=false status -s -b (diverged from upstre
                git checkout b1 >/dev/null &&
                git -c status.aheadbehind=false status -s -b | head -1
        ) >actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 cat >expect <<\EOF
@@ -187,7 +187,7 @@ test_expect_success 'status --long --branch' '
                git checkout b1 >/dev/null &&
                git status --long -b | head -3
        ) >actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success 'status --long --branch' '
@@ -196,7 +196,7 @@ test_expect_success 'status --long --branch' '
                git checkout b1 >/dev/null &&
                git -c status.aheadbehind=true status --long -b | head -3
        ) >actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 cat >expect <<\EOF
@@ -210,7 +210,7 @@ test_expect_success 'status --long --branch --no-ahead-behind' '
                git checkout b1 >/dev/null &&
                git status --long -b --no-ahead-behind | head -2
        ) >actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success 'status.aheadbehind=false status --long --branch' '
@@ -219,7 +219,7 @@ test_expect_success 'status.aheadbehind=false status --long --branch' '
                git checkout b1 >/dev/null &&
                git -c status.aheadbehind=false status --long -b | head -2
        ) >actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 cat >expect <<\EOF
@@ -232,7 +232,7 @@ test_expect_success 'status -s -b (upstream is gone)' '
                git checkout b5 >/dev/null &&
                git status -s -b | head -1
        ) >actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 cat >expect <<\EOF
@@ -245,7 +245,7 @@ test_expect_success 'status -s -b (up-to-date with upstream)' '
                git checkout b6 >/dev/null &&
                git status -s -b | head -1
        ) >actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success 'fail to track lightweight tags' '
index 2b551e6fd0ce1d6706334eaa2a65cda7f9e56618..3f889949ca14dc77eb6b39e5246bea3fe6823fd8 100755 (executable)
@@ -2,6 +2,7 @@
 
 test_description='rev-list combining bitmaps and filters'
 . ./test-lib.sh
+. "$TEST_DIRECTORY"/lib-bitmap.sh
 
 test_expect_success 'set up bitmapped repo' '
        # one commit will have bitmaps, the other will not
diff --git a/t/t6114-keep-packs.sh b/t/t6114-keep-packs.sh
new file mode 100755 (executable)
index 0000000..9239d8a
--- /dev/null
@@ -0,0 +1,69 @@
+#!/bin/sh
+
+test_description='rev-list with .keep packs'
+. ./test-lib.sh
+
+test_expect_success 'setup' '
+       test_commit loose &&
+       test_commit packed &&
+       test_commit kept &&
+
+       KEPT_PACK=$(git pack-objects --revs .git/objects/pack/pack <<-EOF
+       refs/tags/kept
+       ^refs/tags/packed
+       EOF
+       ) &&
+       MISC_PACK=$(git pack-objects --revs .git/objects/pack/pack <<-EOF
+       refs/tags/packed
+       ^refs/tags/loose
+       EOF
+       ) &&
+
+       touch .git/objects/pack/pack-$KEPT_PACK.keep
+'
+
+rev_list_objects () {
+       git rev-list "$@" >out &&
+       sort out
+}
+
+idx_objects () {
+       git show-index <$1 >expect-idx &&
+       cut -d" " -f2 <expect-idx | sort
+}
+
+test_expect_success '--no-kept-objects excludes trees and blobs in .keep packs' '
+       rev_list_objects --objects --all --no-object-names >kept &&
+       rev_list_objects --objects --all --no-object-names --no-kept-objects >no-kept &&
+
+       idx_objects .git/objects/pack/pack-$KEPT_PACK.idx >expect &&
+       comm -3 kept no-kept >actual &&
+
+       test_cmp expect actual
+'
+
+test_expect_success '--no-kept-objects excludes kept non-MIDX object' '
+       test_config core.multiPackIndex true &&
+
+       # Create a pack with just the commit object in pack, and do not mark it
+       # as kept (even though it appears in $KEPT_PACK, which does have a .keep
+       # file).
+       MIDX_PACK=$(git pack-objects .git/objects/pack/pack <<-EOF
+       $(git rev-parse kept)
+       EOF
+       ) &&
+
+       # Write a MIDX containing all packs, but use the version of the commit
+       # at "kept" in a non-kept pack by touching $MIDX_PACK.
+       touch .git/objects/pack/pack-$MIDX_PACK.pack &&
+       git multi-pack-index write &&
+
+       rev_list_objects --objects --no-object-names --no-kept-objects HEAD >actual &&
+       (
+               idx_objects .git/objects/pack/pack-$MISC_PACK.idx &&
+               git rev-list --objects --no-object-names refs/tags/loose
+       ) | sort >expect &&
+       test_cmp expect actual
+'
+
+test_done
diff --git a/t/t6115-rev-list-du.sh b/t/t6115-rev-list-du.sh
new file mode 100755 (executable)
index 0000000..b4aef32
--- /dev/null
@@ -0,0 +1,51 @@
+#!/bin/sh
+
+test_description='basic tests of rev-list --disk-usage'
+. ./test-lib.sh
+
+# we want a mix of reachable and unreachable, as well as
+# objects in the bitmapped pack and some outside of it
+test_expect_success 'set up repository' '
+       test_commit --no-tag one &&
+       test_commit --no-tag two &&
+       git repack -adb &&
+       git reset --hard HEAD^ &&
+       test_commit --no-tag three &&
+       test_commit --no-tag four &&
+       git reset --hard HEAD^
+'
+
+# We don't want to hardcode sizes, because they depend on the exact details of
+# packing, zlib, etc. We'll assume that the regular rev-list and cat-file
+# machinery works and compare the --disk-usage output to that.
+disk_usage_slow () {
+       git rev-list --no-object-names "$@" |
+       git cat-file --batch-check="%(objectsize:disk)" |
+       perl -lne '$total += $_; END { print $total}'
+}
+
+# check behavior with given rev-list options; note that
+# whitespace is not preserved in args
+check_du () {
+       args=$*
+
+       test_expect_success "generate expected size ($args)" "
+               disk_usage_slow $args >expect
+       "
+
+       test_expect_success "rev-list --disk-usage without bitmaps ($args)" "
+               git rev-list --disk-usage $args >actual &&
+               test_cmp expect actual
+       "
+
+       test_expect_success "rev-list --disk-usage with bitmaps ($args)" "
+               git rev-list --disk-usage --use-bitmap-index $args >actual &&
+               test_cmp expect actual
+       "
+}
+
+check_du HEAD
+check_du --objects HEAD
+check_du --objects HEAD^..HEAD
+
+test_done
index 546796f84732c5153444321dc5a1d34bbf8af878..e89b6747beec4fb6a98b9a54a21bb62082cb0c91 100755 (executable)
@@ -136,7 +136,7 @@ warning: tag 'Q' is externally known as 'A'
 EOF
 check_describe A-* HEAD
 test_expect_success 'warning was displayed for Q' '
-       test_i18ncmp err.expect err.actual
+       test_cmp err.expect err.actual
 '
 test_expect_success 'misnamed annotated tag forces long output' '
        description=$(git describe --no-long Q^0) &&
index c670668409817c6d1066de53dc294bade2f27e93..0f1cb49cedc645c5a9b0c56257d3aca4740d5cd3 100755 (executable)
@@ -21,7 +21,7 @@ EOF
 test_expect_success 'error message for path inside submodule' '
        echo a >sub/a &&
        test_must_fail git add sub/a 2>actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success 'error message for path inside submodule from within submodule' '
index ca62e764b58683239d8b118bff4d9a4b7cf63314..cac7f443d0043f80bca18c07fcf585a601b7599d 100755 (executable)
@@ -814,53 +814,152 @@ test_expect_success 'set up trailers for next test' '
        EOF
 '
 
-test_expect_success '%(trailers:unfold) unfolds trailers' '
-       {
-               unfold <trailers
-               echo
-       } >expect &&
-       git for-each-ref --format="%(trailers:unfold)" refs/heads/main >actual &&
-       test_cmp expect actual &&
-       git for-each-ref --format="%(contents:trailers:unfold)" refs/heads/main >actual &&
-       test_cmp expect actual
-'
+test_trailer_option () {
+       title=$1 option=$2
+       cat >expect
+       test_expect_success "$title" '
+               git for-each-ref --format="%($option)" refs/heads/main >actual &&
+               test_cmp expect actual &&
+               git for-each-ref --format="%(contents:$option)" refs/heads/main >actual &&
+               test_cmp expect actual
+       '
+}
 
-test_expect_success '%(trailers:only) shows only "key: value" trailers' '
-       {
-               grep -v patch.description <trailers &&
-               echo
-       } >expect &&
-       git for-each-ref --format="%(trailers:only)" refs/heads/main >actual &&
-       test_cmp expect actual &&
-       git for-each-ref --format="%(contents:trailers:only)" refs/heads/main >actual &&
-       test_cmp expect actual
-'
+test_trailer_option '%(trailers:unfold) unfolds trailers' \
+       'trailers:unfold' <<-EOF
+       $(unfold <trailers)
 
-test_expect_success '%(trailers:only) and %(trailers:unfold) work together' '
-       {
-               grep -v patch.description <trailers | unfold &&
-               echo
-       } >expect &&
-       git for-each-ref --format="%(trailers:only,unfold)" refs/heads/main >actual &&
-       test_cmp expect actual &&
-       git for-each-ref --format="%(trailers:unfold,only)" refs/heads/main >actual &&
-       test_cmp actual actual &&
-       git for-each-ref --format="%(contents:trailers:only,unfold)" refs/heads/main >actual &&
-       test_cmp expect actual &&
-       git for-each-ref --format="%(contents:trailers:unfold,only)" refs/heads/main >actual &&
-       test_cmp actual actual
-'
-
-test_expect_success '%(trailers) rejects unknown trailers arguments' '
-       # error message cannot be checked under i18n
-       cat >expect <<-EOF &&
+       EOF
+
+test_trailer_option '%(trailers:only) shows only "key: value" trailers' \
+       'trailers:only' <<-EOF
+       $(grep -v patch.description <trailers)
+
+       EOF
+
+test_trailer_option '%(trailers:only=no,only=true) shows only "key: value" trailers' \
+       'trailers:only=no,only=true' <<-EOF
+       $(grep -v patch.description <trailers)
+
+       EOF
+
+test_trailer_option '%(trailers:only=yes) shows only "key: value" trailers' \
+       'trailers:only=yes' <<-EOF
+       $(grep -v patch.description <trailers)
+
+       EOF
+
+test_trailer_option '%(trailers:only=no) shows all trailers' \
+       'trailers:only=no' <<-EOF
+       $(cat trailers)
+
+       EOF
+
+test_trailer_option '%(trailers:only) and %(trailers:unfold) work together' \
+       'trailers:only,unfold' <<-EOF
+       $(grep -v patch.description <trailers | unfold)
+
+       EOF
+
+test_trailer_option '%(trailers:unfold) and %(trailers:only) work together' \
+       'trailers:unfold,only' <<-EOF
+       $(grep -v patch.description <trailers | unfold)
+
+       EOF
+
+test_trailer_option '%(trailers:key=foo) shows that trailer' \
+       'trailers:key=Signed-off-by' <<-EOF
+       Signed-off-by: A U Thor <author@example.com>
+
+       EOF
+
+test_trailer_option '%(trailers:key=foo) is case insensitive' \
+       'trailers:key=SiGned-oFf-bY' <<-EOF
+       Signed-off-by: A U Thor <author@example.com>
+
+       EOF
+
+test_trailer_option '%(trailers:key=foo:) trailing colon also works' \
+       'trailers:key=Signed-off-by:' <<-EOF
+       Signed-off-by: A U Thor <author@example.com>
+
+       EOF
+
+test_trailer_option '%(trailers:key=foo) multiple keys' \
+       'trailers:key=Reviewed-by:,key=Signed-off-by' <<-EOF
+       Reviewed-by: A U Thor <author@example.com>
+       Signed-off-by: A U Thor <author@example.com>
+
+       EOF
+
+test_trailer_option '%(trailers:key=nonexistent) becomes empty' \
+       'trailers:key=Shined-off-by:' <<-EOF
+
+       EOF
+
+test_trailer_option '%(trailers:key=foo) handles multiple lines even if folded' \
+       'trailers:key=Acked-by' <<-EOF
+       $(grep -v patch.description <trailers | grep -v Signed-off-by | grep -v Reviewed-by)
+
+       EOF
+
+test_trailer_option '%(trailers:key=foo,unfold) properly unfolds' \
+       'trailers:key=Signed-Off-by,unfold' <<-EOF
+       $(unfold <trailers | grep Signed-off-by)
+
+       EOF
+
+test_trailer_option '%(trailers:key=foo,only=no) also includes nontrailer lines' \
+       'trailers:key=Signed-off-by,only=no' <<-EOF
+       Signed-off-by: A U Thor <author@example.com>
+       $(grep patch.description <trailers)
+
+       EOF
+
+test_trailer_option '%(trailers:key=foo,valueonly) shows only value' \
+       'trailers:key=Signed-off-by,valueonly' <<-EOF
+       A U Thor <author@example.com>
+
+       EOF
+
+test_trailer_option '%(trailers:separator) changes separator' \
+       'trailers:separator=%x2C,key=Reviewed-by,key=Signed-off-by:' <<-EOF
+       Reviewed-by: A U Thor <author@example.com>,Signed-off-by: A U Thor <author@example.com>
+       EOF
+
+test_trailer_option '%(trailers:key_value_separator) changes key-value separator' \
+       'trailers:key_value_separator=%x2C,key=Reviewed-by,key=Signed-off-by:' <<-EOF
+       Reviewed-by,A U Thor <author@example.com>
+       Signed-off-by,A U Thor <author@example.com>
+
+       EOF
+
+test_trailer_option '%(trailers:separator,key_value_separator) changes both separators' \
+       'trailers:separator=%x2C,key_value_separator=%x2C,key=Reviewed-by,key=Signed-off-by:' <<-EOF
+       Reviewed-by,A U Thor <author@example.com>,Signed-off-by,A U Thor <author@example.com>
+       EOF
+
+test_failing_trailer_option () {
+       title=$1 option=$2
+       cat >expect
+       test_expect_success "$title" '
+               # error message cannot be checked under i18n
+               test_must_fail git for-each-ref --format="%($option)" refs/heads/main 2>actual &&
+               test_i18ncmp expect actual &&
+               test_must_fail git for-each-ref --format="%(contents:$option)" refs/heads/main 2>actual &&
+               test_i18ncmp expect actual
+       '
+}
+
+test_failing_trailer_option '%(trailers) rejects unknown trailers arguments' \
+       'trailers:unsupported' <<-\EOF
        fatal: unknown %(trailers) argument: unsupported
        EOF
-       test_must_fail git for-each-ref --format="%(trailers:unsupported)" 2>actual &&
-       test_i18ncmp expect actual &&
-       test_must_fail git for-each-ref --format="%(contents:trailers:unsupported)" 2>actual &&
-       test_i18ncmp expect actual
-'
+
+test_failing_trailer_option '%(trailers:key) without value is error' \
+       'trailers:key' <<-\EOF
+       fatal: expected %(trailers:key=<value>)
+       EOF
 
 test_expect_success 'if arguments, %(contents:trailers) shows error if colon is missing' '
        cat >expect <<-EOF &&
index 809854fc0ce98e16d8d4faa1ae22715134293c84..40edf9dab53402db9b5fad6dd060768537f9ba9a 100755 (executable)
@@ -20,8 +20,8 @@ test_expect_success 'Broken refs are reported correctly' '
        test_when_finished "rm -f .git/$r" &&
        echo "warning: ignoring broken ref $r" >broken-err &&
        git for-each-ref >out 2>err &&
-       test_i18ncmp full-list out &&
-       test_i18ncmp broken-err err
+       test_cmp full-list out &&
+       test_cmp broken-err err
 '
 
 test_expect_success 'NULL_SHA1 refs are reported correctly' '
@@ -31,10 +31,10 @@ test_expect_success 'NULL_SHA1 refs are reported correctly' '
        echo "warning: ignoring broken ref $r" >zeros-err &&
        git for-each-ref >out 2>err &&
        test_cmp full-list out &&
-       test_i18ncmp zeros-err err &&
+       test_cmp zeros-err err &&
        git for-each-ref --format="%(objectname) %(refname)" >brief-out 2>brief-err &&
        test_cmp brief-list brief-out &&
-       test_i18ncmp zeros-err brief-err
+       test_cmp zeros-err brief-err
 '
 
 test_expect_success 'Missing objects are reported correctly' '
@@ -43,7 +43,7 @@ test_expect_success 'Missing objects are reported correctly' '
        test_when_finished "rm -f .git/$r" &&
        echo "fatal: missing object $MISSING for $r" >missing-err &&
        test_must_fail git for-each-ref 2>err &&
-       test_i18ncmp missing-err err &&
+       test_cmp missing-err err &&
        (
                cat brief-list &&
                echo "$MISSING $r"
index c7ab7048f589ec506888135960138dd4c11ca282..eaf48e941e2a3934fde54ac9bdc22f96a7a035cd 100755 (executable)
@@ -18,6 +18,8 @@ GIT_COMMITTER_DATE="2006-12-12 23:28:00 +0100"
 export GIT_COMMITTER_DATE
 
 test_expect_success 'setup tests' '
+       GIT_TEST_COMMIT_GRAPH=0 &&
+       export GIT_TEST_COMMIT_GRAPH &&
        echo 1 >a1 &&
        git add a1 &&
        GIT_AUTHOR_DATE="2006-12-12 23:00:00" git commit -m 1 a1 &&
@@ -69,7 +71,7 @@ test_expect_success 'setup tests' '
 '
 
 test_expect_success 'combined merge conflicts' '
-       test_must_fail env GIT_TEST_COMMIT_GRAPH=0 git merge -m final G
+       test_must_fail git merge -m final G
 '
 
 test_expect_success 'result contains a conflict' '
@@ -85,6 +87,7 @@ test_expect_success 'result contains a conflict' '
 '
 
 test_expect_success 'virtual trees were processed' '
+       # TODO: fragile test, relies on ambigious merge-base resolution
        git ls-files --stage >out &&
 
        cat >expect <<-EOF &&
index 4c568050dd27670e9163de0714f085493bc32eda..379aac0103ccbdf4131168362b1ba591a349cc42 100755 (executable)
@@ -2905,7 +2905,7 @@ test_setup_9e () {
        )
 }
 
-test_expect_success C_LOCALE_OUTPUT '9e: N-to-1 whammo' '
+test_expect_success '9e: N-to-1 whammo' '
        test_setup_9e &&
        (
                cd 9e &&
index d7eeee431061c4195b91a86581fd8462551ceb42..7b5f1c1dcd1f68c74646a5983b6b0d53bd9b4a92 100755 (executable)
@@ -492,7 +492,9 @@ test_expect_success '3a-L: bq_1->foo/bq_2 on A, foo/->bar/ on B' '
                test_cmp expect actual &&
 
                test_must_fail git rev-parse HEAD:bq HEAD:foo/bq &&
-               test_path_is_missing bq foo/bq foo/whatever
+               test_path_is_missing bq &&
+               test_path_is_missing foo/bq &&
+               test_path_is_missing foo/whatever
        )
 '
 
@@ -522,7 +524,9 @@ test_expect_success '3a-R: bq_1->foo/bq_2 on A, foo/->bar/ on B' '
                test_cmp expect actual &&
 
                test_must_fail git rev-parse HEAD:bq HEAD:foo/bq &&
-               test_path_is_missing bq foo/bq foo/whatever
+               test_path_is_missing bq &&
+               test_path_is_missing foo/bq &&
+               test_path_is_missing foo/whatever
        )
 '
 
@@ -588,7 +592,9 @@ test_expect_success '3b-L: bq_1->foo/bq_2 on A, foo/->bar/ on B' '
                test_cmp expect actual &&
 
                test_must_fail git rev-parse HEAD:bq HEAD:foo/bq &&
-               test_path_is_missing bq foo/bq foo/whatever
+               test_path_is_missing bq &&
+               test_path_is_missing foo/bq &&
+               test_path_is_missing foo/whatever
        )
 '
 
@@ -618,7 +624,9 @@ test_expect_success '3b-R: bq_1->foo/bq_2 on A, foo/->bar/ on B' '
                test_cmp expect actual &&
 
                test_must_fail git rev-parse HEAD:bq HEAD:foo/bq &&
-               test_path_is_missing bq foo/bq foo/whatever
+               test_path_is_missing bq &&
+               test_path_is_missing foo/bq &&
+               test_path_is_missing foo/whatever
        )
 '
 
index 362ae37a122f15d08cc7f8301c828139d5fbc0ac..84b4aacf496d1df73c6adf83860db430bc1c1c4c 100755 (executable)
@@ -139,7 +139,7 @@ test_expect_success 'will not overwrite untracked file in leading path' '
        cp important sub &&
        cp important sub2 &&
        test_must_fail git merge sub 2>out &&
-       test_i18ncmp out expect &&
+       test_cmp out expect &&
        test_path_is_missing .git/MERGE_HEAD &&
        test_cmp important sub &&
        test_cmp important sub2 &&
@@ -174,7 +174,7 @@ test_expect_success 'will not overwrite untracked file on unborn branch' '
        git checkout --orphan new &&
        cp important c0.c &&
        test_must_fail git merge c0 2>out &&
-       test_i18ncmp out expect
+       test_cmp out expect
 '
 
 test_expect_success 'will not overwrite untracked file on unborn branch .git/MERGE_HEAD sanity etc.' '
index e176475ed5bbe1ca9a10e0f533add9a8234b7b56..5bfb027099a6d22849739075de82f3c0af7ca513 100755 (executable)
@@ -40,14 +40,14 @@ EOF
 
 test_expect_success 'untracked files overwritten by merge (fast and non-fast forward)' '
        test_must_fail git merge branch 2>out &&
-       test_i18ncmp out expect &&
+       test_cmp out expect &&
        git commit --allow-empty -m empty &&
        (
                GIT_MERGE_VERBOSITY=0 &&
                export GIT_MERGE_VERBOSITY &&
                test_must_fail git merge branch 2>out2
        ) &&
-       test_i18ncmp out2 expect &&
+       test_cmp out2 expect &&
        git reset --hard HEAD^
 '
 
@@ -68,7 +68,7 @@ test_expect_success 'untracked files or local changes ovewritten by merge' '
        git add three &&
        git add four &&
        test_must_fail git merge branch 2>out &&
-       test_i18ncmp out expect
+       test_cmp out expect
 '
 
 cat >expect <<\EOF
@@ -90,7 +90,7 @@ test_expect_success 'cannot switch branches because of local changes' '
        echo uno >rep/one &&
        echo dos >rep/two &&
        test_must_fail git checkout branch 2>out &&
-       test_i18ncmp out expect
+       test_cmp out expect
 '
 
 cat >expect <<\EOF
@@ -104,7 +104,7 @@ EOF
 test_expect_success 'not uptodate file porcelain checkout error' '
        git add rep/one rep/two &&
        test_must_fail git checkout branch 2>out &&
-       test_i18ncmp out expect
+       test_cmp out expect
 '
 
 cat >expect <<\EOF
@@ -135,7 +135,7 @@ test_expect_success 'not_uptodate_dir porcelain checkout error' '
        >rep/untracked-file &&
        >rep2/untracked-file &&
        test_must_fail git checkout branch 2>out &&
-       test_i18ncmp out ../expect
+       test_cmp out ../expect
 '
 
 test_done
index 4a3b8f48ac638d05759377524c0e9566e36e94a9..60d961b52600548fc121fac4183728f86bde05af 100755 (executable)
@@ -78,7 +78,7 @@ test_expect_success 'gc --keep-largest-pack' '
                git gc &&
                ( cd .git/objects/pack && ls *.pack ) >pack-list &&
                test_line_count = 1 pack-list &&
-               BASE_PACK=.git/objects/pack/pack-*.pack &&
+               cp pack-list base-pack-list &&
                test_commit four &&
                git repack -d &&
                test_commit five &&
@@ -90,7 +90,7 @@ test_expect_success 'gc --keep-largest-pack' '
                test_line_count = 2 pack-list &&
                awk "/^P /{print \$2}" <.git/objects/info/packs >pack-info &&
                test_line_count = 2 pack-info &&
-               test_path_is_file $BASE_PACK &&
+               test_path_is_file .git/objects/pack/$(cat base-pack-list) &&
                git fsck
        )
 '
@@ -106,17 +106,17 @@ test_expect_success 'auto gc with too many loose objects does not attempt to cre
        test_commit "$(test_oid obj2)" &&
        # Our first gc will create a pack; our second will create a second pack
        git gc --auto &&
-       ls .git/objects/pack | sort >existing_packs &&
+       ls .git/objects/pack/pack-*.pack | sort >existing_packs &&
        test_commit "$(test_oid obj3)" &&
        test_commit "$(test_oid obj4)" &&
 
        git gc --auto 2>err &&
        test_i18ngrep ! "^warning:" err &&
-       ls .git/objects/pack/ | sort >post_packs &&
+       ls .git/objects/pack/pack-*.pack | sort >post_packs &&
        comm -1 -3 existing_packs post_packs >new &&
        comm -2 -3 existing_packs post_packs >del &&
        test_line_count = 0 del && # No packs are deleted
-       test_line_count = 2 new # There is one new pack and its .idx
+       test_line_count = 1 new # There is one new pack
 '
 
 test_expect_success 'gc --no-quiet' '
index f807276337d83c74be636eb58cd1203105c24d04..3d7a62ddab61729d37c183fe327a9d8997f96c1c 100755 (executable)
@@ -55,10 +55,13 @@ test_expect_success 'setup' '
        git show-ref -s commit-5-5 | git commit-graph write --stdin-commits &&
        mv .git/objects/info/commit-graph commit-graph-half &&
        chmod u+w commit-graph-half &&
+       git -c commitGraph.generationVersion=1 commit-graph write --reachable &&
+       mv .git/objects/info/commit-graph commit-graph-no-gdat &&
+       chmod u+w commit-graph-no-gdat &&
        git config core.commitGraph true
 '
 
-run_three_modes () {
+run_all_modes () {
        test_when_finished rm -rf .git/objects/info/commit-graph &&
        "$@" <input >actual &&
        test_cmp expect actual &&
@@ -67,11 +70,14 @@ run_three_modes () {
        test_cmp expect actual &&
        cp commit-graph-half .git/objects/info/commit-graph &&
        "$@" <input >actual &&
+       test_cmp expect actual &&
+       cp commit-graph-no-gdat .git/objects/info/commit-graph &&
+       "$@" <input >actual &&
        test_cmp expect actual
 }
 
-test_three_modes () {
-       run_three_modes test-tool reach "$@"
+test_all_modes () {
+       run_all_modes test-tool reach "$@"
 }
 
 test_expect_success 'ref_newer:miss' '
@@ -80,7 +86,7 @@ test_expect_success 'ref_newer:miss' '
        B:commit-4-9
        EOF
        echo "ref_newer(A,B):0" >expect &&
-       test_three_modes ref_newer
+       test_all_modes ref_newer
 '
 
 test_expect_success 'ref_newer:hit' '
@@ -89,7 +95,7 @@ test_expect_success 'ref_newer:hit' '
        B:commit-2-3
        EOF
        echo "ref_newer(A,B):1" >expect &&
-       test_three_modes ref_newer
+       test_all_modes ref_newer
 '
 
 test_expect_success 'in_merge_bases:hit' '
@@ -98,7 +104,7 @@ test_expect_success 'in_merge_bases:hit' '
        B:commit-8-8
        EOF
        echo "in_merge_bases(A,B):1" >expect &&
-       test_three_modes in_merge_bases
+       test_all_modes in_merge_bases
 '
 
 test_expect_success 'in_merge_bases:miss' '
@@ -107,7 +113,7 @@ test_expect_success 'in_merge_bases:miss' '
        B:commit-5-9
        EOF
        echo "in_merge_bases(A,B):0" >expect &&
-       test_three_modes in_merge_bases
+       test_all_modes in_merge_bases
 '
 
 test_expect_success 'in_merge_bases_many:hit' '
@@ -117,7 +123,7 @@ test_expect_success 'in_merge_bases_many:hit' '
        X:commit-5-7
        EOF
        echo "in_merge_bases_many(A,X):1" >expect &&
-       test_three_modes in_merge_bases_many
+       test_all_modes in_merge_bases_many
 '
 
 test_expect_success 'in_merge_bases_many:miss' '
@@ -127,7 +133,7 @@ test_expect_success 'in_merge_bases_many:miss' '
        X:commit-8-6
        EOF
        echo "in_merge_bases_many(A,X):0" >expect &&
-       test_three_modes in_merge_bases_many
+       test_all_modes in_merge_bases_many
 '
 
 test_expect_success 'in_merge_bases_many:miss-heuristic' '
@@ -137,7 +143,7 @@ test_expect_success 'in_merge_bases_many:miss-heuristic' '
        X:commit-6-6
        EOF
        echo "in_merge_bases_many(A,X):0" >expect &&
-       test_three_modes in_merge_bases_many
+       test_all_modes in_merge_bases_many
 '
 
 test_expect_success 'is_descendant_of:hit' '
@@ -148,7 +154,7 @@ test_expect_success 'is_descendant_of:hit' '
        X:commit-1-1
        EOF
        echo "is_descendant_of(A,X):1" >expect &&
-       test_three_modes is_descendant_of
+       test_all_modes is_descendant_of
 '
 
 test_expect_success 'is_descendant_of:miss' '
@@ -159,7 +165,7 @@ test_expect_success 'is_descendant_of:miss' '
        X:commit-7-6
        EOF
        echo "is_descendant_of(A,X):0" >expect &&
-       test_three_modes is_descendant_of
+       test_all_modes is_descendant_of
 '
 
 test_expect_success 'get_merge_bases_many' '
@@ -174,7 +180,7 @@ test_expect_success 'get_merge_bases_many' '
                git rev-parse commit-5-6 \
                              commit-4-7 | sort
        } >expect &&
-       test_three_modes get_merge_bases_many
+       test_all_modes get_merge_bases_many
 '
 
 test_expect_success 'reduce_heads' '
@@ -196,7 +202,7 @@ test_expect_success 'reduce_heads' '
                              commit-2-8 \
                              commit-1-10 | sort
        } >expect &&
-       test_three_modes reduce_heads
+       test_all_modes reduce_heads
 '
 
 test_expect_success 'can_all_from_reach:hit' '
@@ -219,7 +225,7 @@ test_expect_success 'can_all_from_reach:hit' '
        Y:commit-8-1
        EOF
        echo "can_all_from_reach(X,Y):1" >expect &&
-       test_three_modes can_all_from_reach
+       test_all_modes can_all_from_reach
 '
 
 test_expect_success 'can_all_from_reach:miss' '
@@ -241,7 +247,7 @@ test_expect_success 'can_all_from_reach:miss' '
        Y:commit-8-5
        EOF
        echo "can_all_from_reach(X,Y):0" >expect &&
-       test_three_modes can_all_from_reach
+       test_all_modes can_all_from_reach
 '
 
 test_expect_success 'can_all_from_reach_with_flag: tags case' '
@@ -264,7 +270,7 @@ test_expect_success 'can_all_from_reach_with_flag: tags case' '
        Y:commit-8-1
        EOF
        echo "can_all_from_reach_with_flag(X,_,_,0,0):1" >expect &&
-       test_three_modes can_all_from_reach_with_flag
+       test_all_modes can_all_from_reach_with_flag
 '
 
 test_expect_success 'commit_contains:hit' '
@@ -280,8 +286,8 @@ test_expect_success 'commit_contains:hit' '
        X:commit-9-3
        EOF
        echo "commit_contains(_,A,X,_):1" >expect &&
-       test_three_modes commit_contains &&
-       test_three_modes commit_contains --tag
+       test_all_modes commit_contains &&
+       test_all_modes commit_contains --tag
 '
 
 test_expect_success 'commit_contains:miss' '
@@ -297,8 +303,8 @@ test_expect_success 'commit_contains:miss' '
        X:commit-9-3
        EOF
        echo "commit_contains(_,A,X,_):0" >expect &&
-       test_three_modes commit_contains &&
-       test_three_modes commit_contains --tag
+       test_all_modes commit_contains &&
+       test_all_modes commit_contains --tag
 '
 
 test_expect_success 'rev-list: basic topo-order' '
@@ -310,7 +316,7 @@ test_expect_success 'rev-list: basic topo-order' '
                commit-6-2 commit-5-2 commit-4-2 commit-3-2 commit-2-2 commit-1-2 \
                commit-6-1 commit-5-1 commit-4-1 commit-3-1 commit-2-1 commit-1-1 \
        >expect &&
-       run_three_modes git rev-list --topo-order commit-6-6
+       run_all_modes git rev-list --topo-order commit-6-6
 '
 
 test_expect_success 'rev-list: first-parent topo-order' '
@@ -322,7 +328,7 @@ test_expect_success 'rev-list: first-parent topo-order' '
                commit-6-2 \
                commit-6-1 commit-5-1 commit-4-1 commit-3-1 commit-2-1 commit-1-1 \
        >expect &&
-       run_three_modes git rev-list --first-parent --topo-order commit-6-6
+       run_all_modes git rev-list --first-parent --topo-order commit-6-6
 '
 
 test_expect_success 'rev-list: range topo-order' '
@@ -334,7 +340,7 @@ test_expect_success 'rev-list: range topo-order' '
                commit-6-2 commit-5-2 commit-4-2 \
                commit-6-1 commit-5-1 commit-4-1 \
        >expect &&
-       run_three_modes git rev-list --topo-order commit-3-3..commit-6-6
+       run_all_modes git rev-list --topo-order commit-3-3..commit-6-6
 '
 
 test_expect_success 'rev-list: range topo-order' '
@@ -346,7 +352,7 @@ test_expect_success 'rev-list: range topo-order' '
                commit-6-2 commit-5-2 commit-4-2 \
                commit-6-1 commit-5-1 commit-4-1 \
        >expect &&
-       run_three_modes git rev-list --topo-order commit-3-8..commit-6-6
+       run_all_modes git rev-list --topo-order commit-3-8..commit-6-6
 '
 
 test_expect_success 'rev-list: first-parent range topo-order' '
@@ -358,7 +364,7 @@ test_expect_success 'rev-list: first-parent range topo-order' '
                commit-6-2 \
                commit-6-1 commit-5-1 commit-4-1 \
        >expect &&
-       run_three_modes git rev-list --first-parent --topo-order commit-3-8..commit-6-6
+       run_all_modes git rev-list --first-parent --topo-order commit-3-8..commit-6-6
 '
 
 test_expect_success 'rev-list: ancestry-path topo-order' '
@@ -368,7 +374,7 @@ test_expect_success 'rev-list: ancestry-path topo-order' '
                commit-6-4 commit-5-4 commit-4-4 commit-3-4 \
                commit-6-3 commit-5-3 commit-4-3 \
        >expect &&
-       run_three_modes git rev-list --topo-order --ancestry-path commit-3-3..commit-6-6
+       run_all_modes git rev-list --topo-order --ancestry-path commit-3-3..commit-6-6
 '
 
 test_expect_success 'rev-list: symmetric difference topo-order' '
@@ -382,7 +388,7 @@ test_expect_success 'rev-list: symmetric difference topo-order' '
                commit-3-8 commit-2-8 commit-1-8 \
                commit-3-7 commit-2-7 commit-1-7 \
        >expect &&
-       run_three_modes git rev-list --topo-order commit-3-8...commit-6-6
+       run_all_modes git rev-list --topo-order commit-3-8...commit-6-6
 '
 
 test_expect_success 'get_reachable_subset:all' '
@@ -402,7 +408,7 @@ test_expect_success 'get_reachable_subset:all' '
                              commit-1-7 \
                              commit-5-6 | sort
        ) >expect &&
-       test_three_modes get_reachable_subset
+       test_all_modes get_reachable_subset
 '
 
 test_expect_success 'get_reachable_subset:some' '
@@ -420,7 +426,7 @@ test_expect_success 'get_reachable_subset:some' '
                git rev-parse commit-3-3 \
                              commit-1-7 | sort
        ) >expect &&
-       test_three_modes get_reachable_subset
+       test_all_modes get_reachable_subset
 '
 
 test_expect_success 'get_reachable_subset:none' '
@@ -434,7 +440,7 @@ test_expect_success 'get_reachable_subset:none' '
        Y:commit-2-8
        EOF
        echo "get_reachable_subset(X,Y)" >expect &&
-       test_three_modes get_reachable_subset
+       test_all_modes get_reachable_subset
 '
 
 test_done
index 63d5f41a1247839412b9c6022fb3f4a07c4e6b0e..25bb9bbb89994a1cb850b349342cef322c864b65 100755 (executable)
@@ -3,74 +3,74 @@
 test_description='git mv in subdirs'
 . ./test-lib.sh
 
-test_expect_success \
-    'prepare reference tree' \
-    'mkdir path0 path1 &&
-     cp "$TEST_DIRECTORY"/../COPYING path0/COPYING &&
-     git add path0/COPYING &&
-     git commit -m add -a'
+test_expect_success 'prepare reference tree' '
+       mkdir path0 path1 &&
+       cp "$TEST_DIRECTORY"/../COPYING path0/COPYING &&
+       git add path0/COPYING &&
+       git commit -m add -a
+'
 
-test_expect_success \
-    'moving the file out of subdirectory' \
-    'cd path0 && git mv COPYING ../path1/COPYING'
+test_expect_success 'moving the file out of subdirectory' '
+       git -C path0 mv COPYING ../path1/COPYING
+'
 
 # in path0 currently
-test_expect_success \
-    'commiting the change' \
-    'cd .. && git commit -m move-out -a'
+test_expect_success 'commiting the change' '
+       git commit -m move-out -a
+'
 
-test_expect_success \
-    'checking the commit' \
-    'git diff-tree -r -M --name-status  HEAD^ HEAD >actual &&
-    grep "^R100..*path0/COPYING..*path1/COPYING" actual'
+test_expect_success 'checking the commit' '
+       git diff-tree -r -M --name-status  HEAD^ HEAD >actual &&
+       grep "^R100..*path0/COPYING..*path1/COPYING" actual
+'
 
-test_expect_success \
-    'moving the file back into subdirectory' \
-    'cd path0 && git mv ../path1/COPYING COPYING'
+test_expect_success 'moving the file back into subdirectory' '
+       git -C path0 mv ../path1/COPYING COPYING
+'
 
 # in path0 currently
-test_expect_success \
-    'commiting the change' \
-    'cd .. && git commit -m move-in -a'
-
-test_expect_success \
-    'checking the commit' \
-    'git diff-tree -r -M --name-status  HEAD^ HEAD >actual &&
-    grep "^R100..*path1/COPYING..*path0/COPYING" actual'
-
-test_expect_success \
-    'mv --dry-run does not move file' \
-    'git mv -n path0/COPYING MOVED &&
-     test -f path0/COPYING &&
-     test ! -f MOVED'
-
-test_expect_success \
-    'checking -k on non-existing file' \
-    'git mv -k idontexist path0'
-
-test_expect_success \
-    'checking -k on untracked file' \
-    'touch untracked1 &&
-     git mv -k untracked1 path0 &&
-     test -f untracked1 &&
-     test ! -f path0/untracked1'
-
-test_expect_success \
-    'checking -k on multiple untracked files' \
-    'touch untracked2 &&
-     git mv -k untracked1 untracked2 path0 &&
-     test -f untracked1 &&
-     test -f untracked2 &&
-     test ! -f path0/untracked1 &&
-     test ! -f path0/untracked2'
-
-test_expect_success \
-    'checking -f on untracked file with existing target' \
-    'touch path0/untracked1 &&
-     test_must_fail git mv -f untracked1 path0 &&
-     test ! -f .git/index.lock &&
-     test -f untracked1 &&
-     test -f path0/untracked1'
+test_expect_success 'commiting the change' '
+       git commit -m move-in -a
+'
+
+test_expect_success 'checking the commit' '
+       git diff-tree -r -M --name-status  HEAD^ HEAD >actual &&
+       grep "^R100..*path1/COPYING..*path0/COPYING" actual
+'
+
+test_expect_success 'mv --dry-run does not move file' '
+       git mv -n path0/COPYING MOVED &&
+       test -f path0/COPYING &&
+       test ! -f MOVED
+'
+
+test_expect_success 'checking -k on non-existing file' '
+       git mv -k idontexist path0
+'
+
+test_expect_success 'checking -k on untracked file' '
+       >untracked1 &&
+       git mv -k untracked1 path0 &&
+       test -f untracked1 &&
+       test ! -f path0/untracked1
+'
+
+test_expect_success 'checking -k on multiple untracked files' '
+       >untracked2 &&
+       git mv -k untracked1 untracked2 path0 &&
+       test -f untracked1 &&
+       test -f untracked2 &&
+       test ! -f path0/untracked1 &&
+       test ! -f path0/untracked2
+'
+
+test_expect_success 'checking -f on untracked file with existing target' '
+       >path0/untracked1 &&
+       test_must_fail git mv -f untracked1 path0 &&
+       test ! -f .git/index.lock &&
+       test -f untracked1 &&
+       test -f path0/untracked1
+'
 
 # clean up the mess in case bad things happen
 rm -f idontexist untracked1 untracked2 \
@@ -78,87 +78,89 @@ rm -f idontexist untracked1 untracked2 \
      .git/index.lock
 rmdir path1
 
-test_expect_success \
-    'moving to absent target with trailing slash' \
-    'test_must_fail git mv path0/COPYING no-such-dir/ &&
-     test_must_fail git mv path0/COPYING no-such-dir// &&
-     git mv path0/ no-such-dir/ &&
-     test_path_is_dir no-such-dir'
-
-test_expect_success \
-    'clean up' \
-    'git reset --hard'
-
-test_expect_success \
-    'moving to existing untracked target with trailing slash' \
-    'mkdir path1 &&
-     git mv path0/ path1/ &&
-     test_path_is_dir path1/path0/'
-
-test_expect_success \
-    'moving to existing tracked target with trailing slash' \
-    'mkdir path2 &&
-     >path2/file && git add path2/file &&
-     git mv path1/path0/ path2/ &&
-     test_path_is_dir path2/path0/'
-
-test_expect_success \
-    'clean up' \
-    'git reset --hard'
-
-test_expect_success \
-    'adding another file' \
-    'cp "$TEST_DIRECTORY"/../README.md path0/README &&
-     git add path0/README &&
-     git commit -m add2 -a'
-
-test_expect_success \
-    'moving whole subdirectory' \
-    'git mv path0 path2'
-
-test_expect_success \
-    'commiting the change' \
-    'git commit -m dir-move -a'
-
-test_expect_success \
-    'checking the commit' \
-    'git diff-tree -r -M --name-status  HEAD^ HEAD >actual &&
-     grep "^R100..*path0/COPYING..*path2/COPYING" actual &&
-     grep "^R100..*path0/README..*path2/README" actual'
-
-test_expect_success \
-    'succeed when source is a prefix of destination' \
-    'git mv path2/COPYING path2/COPYING-renamed'
-
-test_expect_success \
-    'moving whole subdirectory into subdirectory' \
-    'git mv path2 path1'
-
-test_expect_success \
-    'commiting the change' \
-    'git commit -m dir-move -a'
-
-test_expect_success \
-    'checking the commit' \
-    'git diff-tree -r -M --name-status  HEAD^ HEAD >actual &&
-     grep "^R100..*path2/COPYING..*path1/path2/COPYING" actual &&
-     grep "^R100..*path2/README..*path1/path2/README" actual'
-
-test_expect_success \
-    'do not move directory over existing directory' \
-    'mkdir path0 && mkdir path0/path2 && test_must_fail git mv path2 path0'
-
-test_expect_success \
-    'move into "."' \
-    'git mv path1/path2/ .'
+test_expect_success 'moving to absent target with trailing slash' '
+       test_must_fail git mv path0/COPYING no-such-dir/ &&
+       test_must_fail git mv path0/COPYING no-such-dir// &&
+       git mv path0/ no-such-dir/ &&
+       test_path_is_dir no-such-dir
+'
+
+test_expect_success 'clean up' '
+       git reset --hard
+'
+
+test_expect_success 'moving to existing untracked target with trailing slash' '
+       mkdir path1 &&
+       git mv path0/ path1/ &&
+       test_path_is_dir path1/path0/
+'
+
+test_expect_success 'moving to existing tracked target with trailing slash' '
+       mkdir path2 &&
+       >path2/file && git add path2/file &&
+       git mv path1/path0/ path2/ &&
+       test_path_is_dir path2/path0/
+'
+
+test_expect_success 'clean up' '
+       git reset --hard
+'
+
+test_expect_success 'adding another file' '
+       cp "$TEST_DIRECTORY"/../README.md path0/README &&
+       git add path0/README &&
+       git commit -m add2 -a
+'
+
+test_expect_success 'moving whole subdirectory' '
+       git mv path0 path2
+'
+
+test_expect_success 'commiting the change' '
+       git commit -m dir-move -a
+'
+
+test_expect_success 'checking the commit' '
+       git diff-tree -r -M --name-status  HEAD^ HEAD >actual &&
+       grep "^R100..*path0/COPYING..*path2/COPYING" actual &&
+       grep "^R100..*path0/README..*path2/README" actual
+'
+
+test_expect_success 'succeed when source is a prefix of destination' '
+       git mv path2/COPYING path2/COPYING-renamed
+'
+
+test_expect_success 'moving whole subdirectory into subdirectory' '
+       git mv path2 path1
+'
+
+test_expect_success 'commiting the change' '
+       git commit -m dir-move -a
+'
+
+test_expect_success 'checking the commit' '
+       git diff-tree -r -M --name-status  HEAD^ HEAD >actual &&
+       grep "^R100..*path2/COPYING..*path1/path2/COPYING" actual &&
+       grep "^R100..*path2/README..*path1/path2/README" actual
+'
+
+test_expect_success 'do not move directory over existing directory' '
+       mkdir path0 &&
+       mkdir path0/path2 &&
+       test_must_fail git mv path2 path0
+'
+
+test_expect_success 'move into "."' '
+       git mv path1/path2/ .
+'
 
 test_expect_success "Michael Cassar's test case" '
        rm -fr .git papers partA &&
        git init &&
        mkdir -p papers/unsorted papers/all-papers partA &&
-       echo a > papers/unsorted/Thesis.pdf &&
-       echo b > partA/outline.txt &&
-       echo c > papers/unsorted/_another &&
+       echo a >papers/unsorted/Thesis.pdf &&
+       echo b >partA/outline.txt &&
+       echo c >papers/unsorted/_another &&
        git add papers partA &&
        T1=$(git write-tree) &&
 
@@ -181,43 +183,42 @@ test_expect_success "Sergey Vlasov's test case" '
        git mv ab a
 '
 
-test_expect_success 'absolute pathname' '(
-
-       rm -fr mine &&
-       mkdir mine &&
-       cd mine &&
-       test_create_repo one &&
-       cd one &&
-       mkdir sub &&
-       >sub/file &&
-       git add sub/file &&
-
-       git mv sub "$(pwd)/in" &&
-       ! test -d sub &&
-       test -d in &&
-       git ls-files --error-unmatch in/file
-
-
-)'
-
-test_expect_success 'absolute pathname outside should fail' '(
-
-       rm -fr mine &&
-       mkdir mine &&
-       cd mine &&
-       out=$(pwd) &&
-       test_create_repo one &&
-       cd one &&
-       mkdir sub &&
-       >sub/file &&
-       git add sub/file &&
-
-       test_must_fail git mv sub "$out/out" &&
-       test -d sub &&
-       ! test -d ../in &&
-       git ls-files --error-unmatch sub/file
+test_expect_success 'absolute pathname' '
+       (
+               rm -fr mine &&
+               mkdir mine &&
+               cd mine &&
+               test_create_repo one &&
+               cd one &&
+               mkdir sub &&
+               >sub/file &&
+               git add sub/file &&
+
+               git mv sub "$(pwd)/in" &&
+               ! test -d sub &&
+               test -d in &&
+               git ls-files --error-unmatch in/file
+       )
+'
 
-)'
+test_expect_success 'absolute pathname outside should fail' '
+       (
+               rm -fr mine &&
+               mkdir mine &&
+               cd mine &&
+               out=$(pwd) &&
+               test_create_repo one &&
+               cd one &&
+               mkdir sub &&
+               >sub/file &&
+               git add sub/file &&
+
+               test_must_fail git mv sub "$out/out" &&
+               test -d sub &&
+               ! test -d ../in &&
+               git ls-files --error-unmatch sub/file
+       )
+'
 
 test_expect_success 'git mv to move multiple sources into a directory' '
        rm -fr .git && git init &&
@@ -227,23 +228,24 @@ test_expect_success 'git mv to move multiple sources into a directory' '
        git add dir/?.txt &&
        git mv dir/a.txt dir/b.txt other &&
        git ls-files >actual &&
-       { echo other/a.txt; echo other/b.txt; } >expect &&
+       cat >expect <<-\EOF &&
+       other/a.txt
+       other/b.txt
+       EOF
        test_cmp expect actual
 '
 
 test_expect_success 'git mv should not change sha1 of moved cache entry' '
-
        rm -fr .git &&
        git init &&
        echo 1 >dirty &&
        git add dirty &&
        entry="$(git ls-files --stage dirty | cut -f 1)" &&
        git mv dirty dirty2 &&
-       [ "$entry" = "$(git ls-files --stage dirty2 | cut -f 1)" ] &&
+       test "$entry" = "$(git ls-files --stage dirty2 | cut -f 1)" &&
        echo 2 >dirty2 &&
        git mv dirty2 dirty &&
-       [ "$entry" = "$(git ls-files --stage dirty | cut -f 1)" ]
-
+       test "$entry" = "$(git ls-files --stage dirty | cut -f 1)"
 '
 
 rm -f dirty dirty2
@@ -266,7 +268,6 @@ test_expect_success 'git mv error on conflicted file' '
 '
 
 test_expect_success 'git mv should overwrite symlink to a file' '
-
        rm -fr .git &&
        git init &&
        echo 1 >moved &&
@@ -279,13 +280,11 @@ test_expect_success 'git mv should overwrite symlink to a file' '
        test "$(cat symlink)" = 1 &&
        git update-index --refresh &&
        git diff-files --quiet
-
 '
 
 rm -f moved symlink
 
 test_expect_success 'git mv should overwrite file with a symlink' '
-
        rm -fr .git &&
        git init &&
        echo 1 >moved &&
@@ -296,11 +295,9 @@ test_expect_success 'git mv should overwrite file with a symlink' '
        ! test -e symlink &&
        git update-index --refresh &&
        git diff-files --quiet
-
 '
 
 test_expect_success SYMLINKS 'check moved symlink' '
-
        test -h moved
 '
 
@@ -335,11 +332,8 @@ test_expect_success 'git mv moves a submodule with a .git directory and no .gitm
        mkdir mod &&
        git mv sub mod/sub &&
        ! test -e sub &&
-       [ "$entry" = "$(git ls-files --stage mod/sub | cut -f 1)" ] &&
-       (
-               cd mod/sub &&
-               git status
-       ) &&
+       test "$entry" = "$(git ls-files --stage mod/sub | cut -f 1)" &&
+       git -C mod/sub status &&
        git update-index --refresh &&
        git diff-files --quiet
 '
@@ -358,11 +352,8 @@ test_expect_success 'git mv moves a submodule with a .git directory and .gitmodu
        mkdir mod &&
        git mv sub mod/sub &&
        ! test -e sub &&
-       [ "$entry" = "$(git ls-files --stage mod/sub | cut -f 1)" ] &&
-       (
-               cd mod/sub &&
-               git status
-       ) &&
+       test "$entry" = "$(git ls-files --stage mod/sub | cut -f 1)" &&
+       git -C mod/sub status &&
        echo mod/sub >expected &&
        git config -f .gitmodules submodule.sub.path >actual &&
        test_cmp expected actual &&
@@ -376,16 +367,10 @@ test_expect_success 'git mv moves a submodule with gitfile' '
        git submodule update &&
        entry="$(git ls-files --stage sub | cut -f 1)" &&
        mkdir mod &&
-       (
-               cd mod &&
-               git mv ../sub/ .
-       ) &&
+       git -C mod mv ../sub/ . &&
        ! test -e sub &&
-       [ "$entry" = "$(git ls-files --stage mod/sub | cut -f 1)" ] &&
-       (
-               cd mod/sub &&
-               git status
-       ) &&
+       test "$entry" = "$(git ls-files --stage mod/sub | cut -f 1)" &&
+       git -C mod/sub status &&
        echo mod/sub >expected &&
        git config -f .gitmodules submodule.sub.path >actual &&
        test_cmp expected actual &&
@@ -403,11 +388,8 @@ test_expect_success 'mv does not complain when no .gitmodules file is found' '
        git mv sub mod/sub 2>actual.err &&
        test_must_be_empty actual.err &&
        ! test -e sub &&
-       [ "$entry" = "$(git ls-files --stage mod/sub | cut -f 1)" ] &&
-       (
-               cd mod/sub &&
-               git status
-       ) &&
+       test "$entry" = "$(git ls-files --stage mod/sub | cut -f 1)" &&
+       git -C mod/sub status &&
        git update-index --refresh &&
        git diff-files --quiet
 '
@@ -427,11 +409,8 @@ test_expect_success 'mv will error out on a modified .gitmodules file unless sta
        git mv sub mod/sub 2>actual.err &&
        test_must_be_empty actual.err &&
        ! test -e sub &&
-       [ "$entry" = "$(git ls-files --stage mod/sub | cut -f 1)" ] &&
-       (
-               cd mod/sub &&
-               git status
-       ) &&
+       test "$entry" = "$(git ls-files --stage mod/sub | cut -f 1)" &&
+       git -C mod/sub status &&
        git update-index --refresh &&
        git diff-files --quiet
 '
@@ -446,13 +425,10 @@ test_expect_success 'mv issues a warning when section is not found in .gitmodule
        echo "warning: Could not find section in .gitmodules where path=sub" >expect.err &&
        mkdir mod &&
        git mv sub mod/sub 2>actual.err &&
-       test_i18ncmp expect.err actual.err &&
+       test_cmp expect.err actual.err &&
        ! test -e sub &&
-       [ "$entry" = "$(git ls-files --stage mod/sub | cut -f 1)" ] &&
-       (
-               cd mod/sub &&
-               git status
-       ) &&
+       test "$entry" = "$(git ls-files --stage mod/sub | cut -f 1)" &&
+       git -C mod/sub status &&
        git update-index --refresh &&
        git diff-files --quiet
 '
@@ -515,15 +491,17 @@ test_expect_success 'moving a submodule in nested directories' '
 test_expect_success 'moving nested submodules' '
        git commit -am "cleanup commit" &&
        mkdir sub_nested_nested &&
-       (cd sub_nested_nested &&
-               touch nested_level2 &&
+       (
+               cd sub_nested_nested &&
+               >nested_level2 &&
                git init &&
                git add . &&
                git commit -m "nested level 2"
        ) &&
        mkdir sub_nested &&
-       (cd sub_nested &&
-               touch nested_level1 &&
+       (
+               cd sub_nested &&
+               >nested_level1 &&
                git init &&
                git add . &&
                git commit -m "nested level 1" &&
index 1c556950346f0cfcf145991cea6fe34f37a300b6..1349e5b2321c802faf50aed2af7d3cfee7c27974 100755 (executable)
@@ -506,4 +506,35 @@ test_expect_success 'rewrite repository including refs that point at non-commit
        ! fgrep fatal filter-output
 '
 
+test_expect_success 'filter-branch handles ref deletion' '
+       git switch --orphan empty-commit &&
+       git commit --allow-empty -m "empty commit" &&
+       git tag empty &&
+       git branch to-delete &&
+       git filter-branch -f --prune-empty to-delete >out 2>&1 &&
+       grep "to-delete.*was deleted" out &&
+       test_must_fail git rev-parse --verify to-delete
+'
+
+test_expect_success 'filter-branch handles ref rewrite' '
+       git checkout empty &&
+       test_commit to-drop &&
+       git branch rewrite &&
+       git filter-branch -f \
+               --index-filter "git rm --ignore-unmatch --cached to-drop.t" \
+                rewrite >out 2>&1 &&
+       grep "rewrite.*was rewritten" out &&
+       ! grep -i warning out &&
+       git diff-tree empty rewrite
+'
+
+test_expect_success 'filter-branch handles ancestor rewrite' '
+       test_commit to-exclude &&
+       git branch ancestor &&
+       git filter-branch -f ancestor -- :^to-exclude.t >out 2>&1 &&
+       grep "ancestor.*was rewritten" out &&
+       ! grep -i warning out &&
+       git diff-tree HEAD^ ancestor
+'
+
 test_done
index 943a7d5c1db9563eb8ed648f0f760a54b9df58eb..2f72c5c6883e3e45bbc9602f3e85e1dd9ae3fd01 100755 (executable)
@@ -20,6 +20,13 @@ tag_exists () {
        git show-ref --quiet --verify refs/tags/"$1"
 }
 
+test_expect_success 'setup' '
+       test_oid_cache <<-EOM
+       othersigheader sha1:gpgsig-sha256
+       othersigheader sha256:gpgsig
+       EOM
+'
+
 test_expect_success 'listing all tags in an empty tree should succeed' '
        git tag -l &&
        git tag
@@ -91,7 +98,7 @@ test_expect_success 'creating a tag with --create-reflog should create reflog' '
        git tag --create-reflog tag_with_reflog &&
        git reflog exists refs/tags/tag_with_reflog &&
        sed -e "s/^.*   //" .git/logs/refs/tags/tag_with_reflog >actual &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 test_expect_success 'annotated tag with --create-reflog has correct message' '
@@ -102,7 +109,7 @@ test_expect_success 'annotated tag with --create-reflog has correct message' '
        git tag -m "annotated tag" --create-reflog tag_with_reflog &&
        git reflog exists refs/tags/tag_with_reflog &&
        sed -e "s/^.*   //" .git/logs/refs/tags/tag_with_reflog >actual &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 test_expect_success '--create-reflog does not create reflog on failure' '
@@ -1374,6 +1381,24 @@ test_expect_success GPG \
        'test_config gpg.program echo &&
         test_must_fail git tag -s -m tail tag-gpg-failure'
 
+# try to produce invalid signature
+test_expect_success GPG 'git verifies tag is valid with double signature' '
+       git tag -s -m tail tag-gpg-double-sig &&
+       git cat-file tag tag-gpg-double-sig >tag &&
+       othersigheader=$(test_oid othersigheader) &&
+       sed -ne "/^\$/q;p" tag >new-tag &&
+       cat <<-EOM >>new-tag &&
+       $othersigheader -----BEGIN PGP SIGNATURE-----
+        someinvaliddata
+        -----END PGP SIGNATURE-----
+       EOM
+       sed -e "1,/^tagger/d" tag >>new-tag &&
+       new_tag=$(git hash-object -t tag -w new-tag) &&
+       git update-ref refs/tags/tag-gpg-double-sig $new_tag &&
+       git verify-tag tag-gpg-double-sig &&
+       git fsck
+'
+
 # try to sign with bad user.signingkey
 test_expect_success GPGSM \
        'git tag -s fails if gpgsm is misconfigured (bad key)' \
@@ -1409,7 +1434,7 @@ test_expect_success 'message in editor has initial comment: first line' '
        # check the first line --- should be empty
        echo >first.expect &&
        sed -e 1q <actual >first.actual &&
-       test_i18ncmp first.expect first.actual
+       test_cmp first.expect first.actual
 '
 
 test_expect_success \
@@ -1732,7 +1757,7 @@ test_expect_success 'recursive tagging should give advice' '
        hint: Disable this message with "git config advice.nestedTag false"
        EOF
        git tag -m nested nested annotated-v4.0 2>actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success 'multiple --points-at are OR-ed together' '
index fdb450e446a987717d4565ef58cccfa332259927..0e7cf75435eca107fc17b836fa939d3378e983a4 100755 (executable)
@@ -656,4 +656,134 @@ test_expect_success TTY 'git tag with auto-columns ' '
        test_cmp expect actual
 '
 
+test_expect_success 'setup trace2' '
+       GIT_TRACE2_BRIEF=1 &&
+       export GIT_TRACE2_BRIEF
+'
+
+test_expect_success TTY 'git returns SIGPIPE on early pager exit' '
+       test_when_finished "rm pager-used trace.normal" &&
+       test_config core.pager ">pager-used; head -n 1; exit 0" &&
+       GIT_TRACE2="$(pwd)/trace.normal" &&
+       export GIT_TRACE2 &&
+       test_when_finished "unset GIT_TRACE2" &&
+
+       if test_have_prereq !MINGW
+       then
+               OUT=$( ((test_terminal git log; echo $? 1>&3) | :) 3>&1 ) &&
+               test_match_signal 13 "$OUT"
+       else
+               test_terminal git log
+       fi &&
+
+       grep child_exit trace.normal >child-exits &&
+       test_line_count = 1 child-exits &&
+       grep " code:0 " child-exits &&
+       test_path_is_file pager-used
+'
+
+test_expect_success TTY 'git returns SIGPIPE on early pager non-zero exit' '
+       test_when_finished "rm pager-used trace.normal" &&
+       test_config core.pager ">pager-used; head -n 1; exit 1" &&
+       GIT_TRACE2="$(pwd)/trace.normal" &&
+       export GIT_TRACE2 &&
+       test_when_finished "unset GIT_TRACE2" &&
+
+       if test_have_prereq !MINGW
+       then
+               OUT=$( ((test_terminal git log; echo $? 1>&3) | :) 3>&1 ) &&
+               test_match_signal 13 "$OUT"
+       else
+               test_terminal git log
+       fi &&
+
+       grep child_exit trace.normal >child-exits &&
+       test_line_count = 1 child-exits &&
+       grep " code:1 " child-exits &&
+       test_path_is_file pager-used
+'
+
+test_expect_success TTY 'git discards pager non-zero exit without SIGPIPE' '
+       test_when_finished "rm pager-used trace.normal" &&
+       test_config core.pager "wc >pager-used; exit 1" &&
+       GIT_TRACE2="$(pwd)/trace.normal" &&
+       export GIT_TRACE2 &&
+       test_when_finished "unset GIT_TRACE2" &&
+
+       if test_have_prereq !MINGW
+       then
+               OUT=$( ((test_terminal git log; echo $? 1>&3) | :) 3>&1 ) &&
+               test "$OUT" -eq 0
+       else
+               test_terminal git log
+       fi &&
+
+       grep child_exit trace.normal >child-exits &&
+       test_line_count = 1 child-exits &&
+       grep " code:1 " child-exits &&
+       test_path_is_file pager-used
+'
+
+test_expect_success TTY 'git discards nonexisting pager without SIGPIPE' '
+       test_when_finished "rm pager-used trace.normal" &&
+       test_config core.pager "wc >pager-used; does-not-exist" &&
+       GIT_TRACE2="$(pwd)/trace.normal" &&
+       export GIT_TRACE2 &&
+       test_when_finished "unset GIT_TRACE2" &&
+
+       if test_have_prereq !MINGW
+       then
+               OUT=$( ((test_terminal git log; echo $? 1>&3) | :) 3>&1 ) &&
+               test "$OUT" -eq 0
+       else
+               test_terminal git log
+       fi &&
+
+       grep child_exit trace.normal >child-exits &&
+       test_line_count = 1 child-exits &&
+       grep " code:127 " child-exits &&
+       test_path_is_file pager-used
+'
+
+test_expect_success TTY 'git attempts to page to nonexisting pager command, gets SIGPIPE' '
+       test_when_finished "rm trace.normal" &&
+       test_config core.pager "does-not-exist" &&
+       GIT_TRACE2="$(pwd)/trace.normal" &&
+       export GIT_TRACE2 &&
+       test_when_finished "unset GIT_TRACE2" &&
+
+       if test_have_prereq !MINGW
+       then
+               OUT=$( ((test_terminal git log; echo $? 1>&3) | :) 3>&1 ) &&
+               test_match_signal 13 "$OUT"
+       else
+               test_terminal git log
+       fi &&
+
+       grep child_exit trace.normal >child-exits &&
+       test_line_count = 1 child-exits &&
+       grep " code:-1 " child-exits
+'
+
+test_expect_success TTY 'git returns SIGPIPE on propagated signals from pager' '
+       test_when_finished "rm pager-used trace.normal" &&
+       test_config core.pager ">pager-used; test-tool sigchain" &&
+       GIT_TRACE2="$(pwd)/trace.normal" &&
+       export GIT_TRACE2 &&
+       test_when_finished "unset GIT_TRACE2" &&
+
+       if test_have_prereq !MINGW
+       then
+               OUT=$( ((test_terminal git log; echo $? 1>&3) | :) 3>&1 ) &&
+               test_match_signal 13 "$OUT"
+       else
+               test_terminal git log
+       fi &&
+
+       grep child_exit trace.normal >child-exits &&
+       test_line_count = 1 child-exits &&
+       grep " code:143 " child-exits &&
+       test_path_is_file pager-used
+'
+
 test_done
index 42d3db624686998f49d2fb7c80b190eee14a3e9e..d6cc69e0f2cbd576ff6ff81720de63f1e9cf86bf 100755 (executable)
@@ -38,6 +38,45 @@ test_expect_success 'showing two commits' '
        test_cmp expect actual.filtered
 '
 
+test_expect_success 'showing a tree' '
+       cat >expected <<-EOF &&
+       tree main1:
+
+       main1.t
+       EOF
+       git show main1: >actual &&
+       test_cmp expected actual
+'
+
+test_expect_success 'showing two trees' '
+       cat >expected <<-EOF &&
+       tree main1^{tree}
+
+       main1.t
+
+       tree main2^{tree}
+
+       main1.t
+       main2.t
+       EOF
+       git show main1^{tree} main2^{tree} >actual &&
+       test_cmp expected actual
+'
+
+test_expect_success 'showing a trees is not recursive' '
+       git worktree add not-recursive main1 &&
+       mkdir not-recursive/a &&
+       test_commit -C not-recursive a/file &&
+       cat >expected <<-EOF &&
+       tree HEAD^{tree}
+
+       a/
+       main1.t
+       EOF
+       git -C not-recursive show HEAD^{tree} >actual &&
+       test_cmp expected actual
+'
+
 test_expect_success 'showing a range walks (linear)' '
        cat >expect <<-EOF &&
        commit $(git rev-parse main3)
index 37525cae3af303dd60531226d885c72725b0ae53..26852586accf711fc5bf21ed800986f52a95b866 100755 (executable)
@@ -109,15 +109,6 @@ test_expect_success 'ls-files --modified' '
        test -z "$(git ls-files -m)"
 '
 
-test_expect_success 'grep with skip-worktree file' '
-       git update-index --no-skip-worktree 1 &&
-       echo test > 1 &&
-       git update-index 1 &&
-       git update-index --skip-worktree 1 &&
-       rm 1 &&
-       test "$(git grep --no-ext-grep test)" = "1:test"
-'
-
 echo ":000000 100644 $ZERO_OID $EMPTY_BLOB A   1" > expected
 test_expect_success 'diff-index does not examine skip-worktree absent entries' '
        setup_absent &&
index e5c6a038fbfccb3da7c3c179fa0c6c186de68d40..f2a8e765114fd1a01f1256a6768353cd2ab69b4a 100755 (executable)
@@ -125,13 +125,13 @@ EOF
 test_expect_success 'git-clean, absent case' '
        setup_absent &&
        git clean -n > result &&
-       test_i18ncmp expected result
+       test_cmp expected result
 '
 
 test_expect_success 'git-clean, dirty case' '
        setup_dirty &&
        git clean -n > result &&
-       test_i18ncmp expected result
+       test_cmp expected result
 '
 
 test_expect_success '--ignore-skip-worktree-entries leaves worktree alone' '
index 72fb418b8904ffedac1fcf87d97878c86e054b5b..0f4344c55e6421d605ab7364bc2fedfe9165b02b 100755 (executable)
@@ -56,9 +56,9 @@ EOF
                git commit -m delete &&
                test_must_fail git merge main &&
                test_must_fail git commit --dry-run >../actual &&
-               test_i18ncmp ../expect ../actual &&
+               test_cmp ../expect ../actual &&
                git status >../actual &&
-               test_i18ncmp ../expect ../actual
+               test_cmp ../expect ../actual
        )
 '
 
@@ -151,7 +151,7 @@ Unmerged paths:
 no changes added to commit (use "git add" and/or "git commit -a")
 EOF
        git status --untracked-files=no >actual &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 
@@ -185,7 +185,7 @@ Unmerged paths:
 no changes added to commit (use "git add" and/or "git commit -a")
 EOF
        git status --untracked-files=no >actual &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 
@@ -210,7 +210,7 @@ Unmerged paths:
 Untracked files not listed (use -u option to show untracked files)
 EOF
        git status --untracked-files=no >actual &&
-       test_i18ncmp expected actual &&
+       test_cmp expected actual &&
        git reset --hard &&
        git checkout main
 '
@@ -227,7 +227,7 @@ test_expect_success 'status --branch with detached HEAD' '
        ?? expected
        ?? mdconflict/
        EOF
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 ## Duplicate the above test and verify --porcelain=v1 arg parsing.
@@ -243,7 +243,7 @@ test_expect_success 'status --porcelain=v1 --branch with detached HEAD' '
        ?? expected
        ?? mdconflict/
        EOF
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 ## Verify parser error on invalid --porcelain argument.
index f01bf27727905db64f5d7eeaca5fd05b5e90f02f..accefde72fb1bd518b2fcd7caf4d8c4921180bdc 100755 (executable)
@@ -731,7 +731,7 @@ test_expect_success 'test ident field is working' '
        cp -R done dthree dtwo four three ../other_worktree &&
        GIT_WORK_TREE=../other_worktree git status 2>../err &&
        echo "warning: untracked cache is disabled on this system or location" >../expect &&
-       test_i18ncmp ../expect ../err
+       test_cmp ../expect ../err
 '
 
 test_expect_success 'untracked cache survives a checkout' '
index 7d8fb188ee5eb914cc77e30846191adb78adb5bb..601b2bf97f0e7f40de454358b6a7975488644687 100755 (executable)
@@ -75,14 +75,14 @@ test_expect_success 'reset --hard message' '
        hex=$(git log -1 --format="%h") &&
        git reset --hard >.actual &&
        echo HEAD is now at $hex $(commit_msg) >.expected &&
-       test_i18ncmp .expected .actual
+       test_cmp .expected .actual
 '
 
 test_expect_success 'reset --hard message (ISO8859-1 logoutputencoding)' '
        hex=$(git log -1 --format="%h") &&
        git -c "i18n.logOutputEncoding=$test_encoding" reset --hard >.actual &&
        echo HEAD is now at $hex $(commit_msg $test_encoding) >.expected &&
-       test_i18ncmp .expected .actual
+       test_cmp .expected .actual
 '
 
 test_expect_success 'giving a non existing revision should fail' '
@@ -469,7 +469,7 @@ test_expect_success '--mixed refreshes the index' '
        EOF
        echo 123 >>file2 &&
        git reset --mixed HEAD >output &&
-       test_i18ncmp expect output
+       test_cmp expect output
 '
 
 test_expect_success 'resetting specific path that is unmerged' '
index cb5e34d94c3a163ecc3785d4b3afdeeb98c60ec6..a74816ca8b466c789c3bc8b17e629d5edcbb25e9 100755 (executable)
@@ -110,7 +110,7 @@ test_expect_success 'git clean with prefix' '
 
 '
 
-test_expect_success C_LOCALE_OUTPUT 'git clean with relative prefix' '
+test_expect_success 'git clean with relative prefix' '
 
        mkdir -p build docs &&
        touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
@@ -123,7 +123,7 @@ test_expect_success C_LOCALE_OUTPUT 'git clean with relative prefix' '
        verbose test "$would_clean" = ../src/part3.c
 '
 
-test_expect_success C_LOCALE_OUTPUT 'git clean with absolute path' '
+test_expect_success 'git clean with absolute path' '
 
        mkdir -p build docs &&
        touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
@@ -407,7 +407,7 @@ test_expect_success 'clean.requireForce and -f' '
 
 '
 
-test_expect_success C_LOCALE_OUTPUT 'core.excludesfile' '
+test_expect_success 'core.excludesfile' '
 
        echo excludes >excludes &&
        echo included >included &&
index d44f69629337f7e617d118e060550737ca92c59a..a924fdb7a6c9aaf6c1b860dd4c783d87b803c36f 100755 (executable)
@@ -55,7 +55,7 @@ test_expect_success 'add aborts on repository with no commits' '
        EOF
        git init repo-no-commits &&
        test_must_fail git submodule add ../a ./repo-no-commits 2>actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success 'status should ignore inner git repo when not added' '
@@ -185,7 +185,7 @@ test_expect_success 'submodule add to .gitignored path fails' '
                git add --force .gitignore &&
                git commit -m"Ignore everything" &&
                ! git submodule add "$submodurl" submod >actual 2>&1 &&
-               test_i18ncmp expect actual
+               test_cmp expect actual
        )
 '
 
index 76088147089c9bacdf0cb9f7cb570c55c1ec3f4d..9c3cc4cf4046befd76e0239c831d61b33196ee86 100755 (executable)
@@ -190,7 +190,7 @@ test_expect_success 'typechanged submodule(submodule->blob), --cached' "
          < Add foo5
 
        EOF
-       test_i18ncmp expected actual
+       test_cmp expected actual
 "
 
 test_expect_success 'typechanged submodule(submodule->blob), --files' "
@@ -200,7 +200,7 @@ test_expect_success 'typechanged submodule(submodule->blob), --files' "
          > Add foo5
 
        EOF
-       test_i18ncmp expected actual
+       test_cmp expected actual
 "
 
 rm -rf sm1 &&
@@ -211,7 +211,7 @@ test_expect_success 'typechanged submodule(submodule->blob)' "
        * sm1 $head4(submodule)->$head5(blob):
 
        EOF
-       test_i18ncmp expected actual
+       test_cmp expected actual
 "
 
 rm -f sm1 &&
@@ -224,7 +224,7 @@ test_expect_success 'nonexistent commit' "
          Warn: sm1 doesn't contain commit $head4_full
 
        EOF
-       test_i18ncmp expected actual
+       test_cmp expected actual
 "
 
 commit_file
@@ -235,7 +235,7 @@ test_expect_success 'typechanged submodule(blob->submodule)' "
          > Add foo7
 
        EOF
-       test_i18ncmp expected actual
+       test_cmp expected actual
 "
 
 commit_file sm1 &&
@@ -292,7 +292,7 @@ test_expect_success 'given commit' "
 
 test_expect_success '--for-status' "
        git submodule summary --for-status HEAD^ >actual &&
-       test_i18ncmp - actual <<-EOF
+       test_cmp - actual <<-EOF
        * sm1 $head6...0000000:
 
        * sm2 0000000...$head7 (2):
index b9c1624fba9fda209f7e86b3a2703624f3d63bc8..ff3ba5422e9bdae64795eaa4fa617187f0b65725 100755 (executable)
@@ -155,9 +155,9 @@ test_expect_success 'submodule update --init --recursive from subdirectory' '
         cd tmp &&
         git submodule update --init --recursive ../super >../../actual 2>../../actual2
        ) &&
-       test_i18ncmp expect actual &&
+       test_cmp expect actual &&
        sort actual2 >actual2.sorted &&
-       test_i18ncmp expect2 actual2.sorted
+       test_cmp expect2 actual2.sorted
 '
 
 cat <<EOF >expect2
@@ -174,7 +174,7 @@ test_expect_success 'submodule update --init from and of subdirectory' '
          git submodule update --init sub 2>../../actual2
         )
        ) &&
-       test_i18ncmp expect2 actual2
+       test_cmp expect2 actual2
 '
 
 test_expect_success 'submodule update does not fetch already present commits' '
@@ -192,7 +192,7 @@ test_expect_success 'submodule update does not fetch already present commits' '
        (cd super &&
          git submodule update > ../actual 2> ../actual.err
        ) &&
-       test_i18ncmp expected actual &&
+       test_cmp expected actual &&
        test_must_be_empty actual.err
 '
 
@@ -461,7 +461,7 @@ test_expect_success 'submodule update - command in .git/config catches failure'
        (cd super &&
         test_must_fail git submodule update submodule 2>../actual
        ) &&
-       test_i18ncmp actual expect
+       test_cmp actual expect
 '
 
 cat << EOF >expect
@@ -479,7 +479,7 @@ test_expect_success 'submodule update - command in .git/config catches failure -
         mkdir tmp && cd tmp &&
         test_must_fail git submodule update ../submodule 2>../../actual
        ) &&
-       test_i18ncmp actual expect
+       test_cmp actual expect
 '
 
 test_expect_success 'submodule update - command run for initial population of submodule' '
@@ -488,7 +488,7 @@ test_expect_success 'submodule update - command run for initial population of su
        EOF
        rm -rf super/submodule &&
        test_must_fail git -C super submodule update 2>actual &&
-       test_i18ncmp expect actual &&
+       test_cmp expect actual &&
        git -C super submodule update --checkout
 '
 
@@ -509,7 +509,7 @@ test_expect_success 'recursive submodule update - command in .git/config catches
         mkdir -p tmp && cd tmp &&
         test_must_fail git submodule update --recursive ../super 2>../../actual
        ) &&
-       test_i18ncmp actual expect
+       test_cmp actual expect
 '
 
 test_expect_success 'submodule init does not copy command into .git/config' '
index 79981b51eb89aced1aaaeee9004bfeb6592af000..e2f110b786387035f6cc4fa31a21f9c380edb2f4 100755 (executable)
@@ -80,7 +80,7 @@ test_expect_success 'test basic "submodule foreach" usage' '
                git config foo.bar zar &&
                git submodule foreach "git config --file \"\$toplevel/.git/config\" foo.bar"
        ) &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 cat >expect <<EOF
@@ -96,7 +96,7 @@ test_expect_success 'test "submodule foreach" from subdirectory' '
                cd clone/sub &&
                git submodule foreach "echo \$toplevel-\$name-\$sm_path-\$displaypath-\$sha1" >../../actual
        ) &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success 'setup nested submodules' '
@@ -177,7 +177,7 @@ test_expect_success 'test messages from "foreach --recursive"' '
                cd clone2 &&
                git submodule foreach --recursive "true" > ../actual
        ) &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 cat > expect <<EOF
@@ -197,7 +197,7 @@ test_expect_success 'test messages from "foreach --recursive" from subdirectory'
                cd untracked &&
                git submodule foreach --recursive >../../actual
        ) &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 sub1sha1=$(cd clone2/sub1 && git rev-parse HEAD)
 sub2sha1=$(cd clone2/sub2 && git rev-parse HEAD)
@@ -229,7 +229,7 @@ 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
+       test_cmp expect actual
 '
 
 cat > expect <<EOF
index 6d19ece05dd320b970492daf015b874eee0d391f..9092db5fdc52d832caea1dd6248afe108a8112ae 100755 (executable)
@@ -9,13 +9,15 @@ Tests for template, signoff, squash and -F functions.'
 
 . ./test-lib.sh
 
+. "$TEST_DIRECTORY"/lib-rebase.sh
+
 commit_msg_is () {
        expect=commit_msg_is.expect
        actual=commit_msg_is.actual
 
        printf "%s" "$(git log --pretty=format:%s%b -1)" >"$actual" &&
        printf "%s" "$1" >"$expect" &&
-       test_i18ncmp "$expect" "$actual"
+       test_cmp "$expect" "$actual"
 }
 
 # A sanity check to see if commit is working at all.
@@ -279,6 +281,163 @@ test_expect_success 'commit --fixup -m"something" -m"extra"' '
 
 extra"
 '
+get_commit_msg () {
+       rev="$1" &&
+       git log -1 --pretty=format:"%B" "$rev"
+}
+
+test_expect_success 'commit --fixup=amend: creates amend! commit' '
+       commit_for_rebase_autosquash_setup &&
+       cat >expected <<-EOF &&
+       amend! $(git log -1 --format=%s HEAD~)
+
+       $(get_commit_msg HEAD~)
+
+       edited
+       EOF
+       (
+               set_fake_editor &&
+               FAKE_COMMIT_AMEND="edited" \
+                       git commit --fixup=amend:HEAD~
+       ) &&
+       get_commit_msg HEAD >actual &&
+       test_cmp expected actual
+'
+
+test_expect_success '--fixup=amend: --only ignores staged changes' '
+       commit_for_rebase_autosquash_setup &&
+       cat >expected <<-EOF &&
+       amend! $(git log -1 --format=%s HEAD~)
+
+       $(get_commit_msg HEAD~)
+
+       edited
+       EOF
+       (
+               set_fake_editor &&
+               FAKE_COMMIT_AMEND="edited" \
+                       git commit --fixup=amend:HEAD~ --only
+       ) &&
+       get_commit_msg HEAD >actual &&
+       test_cmp expected actual &&
+       test_cmp_rev HEAD@{1}^{tree} HEAD^{tree} &&
+       test_cmp_rev HEAD@{1} HEAD^ &&
+       test_expect_code 1 git diff --cached --exit-code &&
+       git cat-file blob :foo >actual &&
+       test_cmp foo actual
+'
+
+test_expect_success '--fixup=reword: ignores staged changes' '
+       commit_for_rebase_autosquash_setup &&
+       cat >expected <<-EOF &&
+       amend! $(git log -1 --format=%s HEAD~)
+
+       $(get_commit_msg HEAD~)
+
+       edited
+       EOF
+       (
+               set_fake_editor &&
+               FAKE_COMMIT_AMEND="edited" \
+                       git commit --fixup=reword:HEAD~
+       ) &&
+       get_commit_msg HEAD >actual &&
+       test_cmp expected actual &&
+       test_cmp_rev HEAD@{1}^{tree} HEAD^{tree} &&
+       test_cmp_rev HEAD@{1} HEAD^ &&
+       test_expect_code 1 git diff --cached --exit-code &&
+       git cat-file blob :foo >actual &&
+       test_cmp foo actual
+'
+
+test_expect_success '--fixup=reword: error out with -m option' '
+       commit_for_rebase_autosquash_setup &&
+       echo "fatal: cannot combine -m with --fixup:reword" >expect &&
+       test_must_fail git commit --fixup=reword:HEAD~ -m "reword commit message" 2>actual &&
+       test_cmp expect actual
+'
+
+test_expect_success '--fixup=amend: error out with -m option' '
+       commit_for_rebase_autosquash_setup &&
+       echo "fatal: cannot combine -m with --fixup:amend" >expect &&
+       test_must_fail git commit --fixup=amend:HEAD~ -m "amend commit message" 2>actual &&
+       test_cmp expect actual
+'
+
+test_expect_success 'consecutive amend! commits remove amend! line from commit msg body' '
+       commit_for_rebase_autosquash_setup &&
+       cat >expected <<-EOF &&
+       amend! amend! $(git log -1 --format=%s HEAD~)
+
+       $(get_commit_msg HEAD~)
+
+       edited 1
+
+       edited 2
+       EOF
+       echo "reword new commit message" >actual &&
+       (
+               set_fake_editor &&
+               FAKE_COMMIT_AMEND="edited 1" \
+                       git commit --fixup=reword:HEAD~ &&
+               FAKE_COMMIT_AMEND="edited 2" \
+                       git commit --fixup=reword:HEAD
+       ) &&
+       get_commit_msg HEAD >actual &&
+       test_cmp expected actual
+'
+
+test_expect_success 'deny to create amend! commit if its commit msg body is empty' '
+       commit_for_rebase_autosquash_setup &&
+       echo "Aborting commit due to empty commit message body." >expected &&
+       (
+               set_fake_editor &&
+               test_must_fail env FAKE_COMMIT_MESSAGE="amend! target message subject line" \
+                       git commit --fixup=amend:HEAD~ 2>actual
+       ) &&
+       test_cmp expected actual
+'
+
+test_expect_success 'amend! commit allows empty commit msg body with --allow-empty-message' '
+       commit_for_rebase_autosquash_setup &&
+       cat >expected <<-EOF &&
+       amend! $(git log -1 --format=%s HEAD~)
+       EOF
+       (
+               set_fake_editor &&
+               FAKE_COMMIT_MESSAGE="amend! target message subject line" \
+                       git commit --fixup=amend:HEAD~ --allow-empty-message &&
+               get_commit_msg HEAD >actual
+       ) &&
+       test_cmp expected actual
+'
+
+test_fixup_reword_opt () {
+       test_expect_success C_LOCALE_OUTPUT "--fixup=reword: incompatible with $1" "
+               echo 'fatal: reword option of --fixup is mutually exclusive with'\
+                       '--patch/--interactive/--all/--include/--only' >expect &&
+               test_must_fail git commit --fixup=reword:HEAD~ $1 2>actual &&
+               test_cmp expect actual
+       "
+}
+
+for opt in --all --include --only --interactive --patch
+do
+       test_fixup_reword_opt $opt
+done
+
+test_expect_success '--fixup=reword: give error with pathsec' '
+       commit_for_rebase_autosquash_setup &&
+       echo "fatal: cannot combine reword option of --fixup with path '\''foo'\''" >expect &&
+       test_must_fail git commit --fixup=reword:HEAD~ -- foo 2>actual &&
+       test_cmp expect actual
+'
+
+test_expect_success '--fixup=reword: -F give error message' '
+       echo "fatal: Only one of -c/-C/-F/--fixup can be used." >expect &&
+       test_must_fail git commit --fixup=reword:HEAD~ -F msg  2>actual &&
+       test_cmp expect actual
+'
 
 test_expect_success 'commit --squash works with -F' '
        commit_for_rebase_autosquash_setup &&
@@ -356,7 +515,7 @@ test_expect_success 'new line found before status message in commit template' '
        touch commit-template-check &&
        git add commit-template-check &&
        GIT_EDITOR="cat >editor-input" git commit --untracked-files=no --allow-empty-message &&
-       test_i18ncmp expected-template editor-input
+       test_cmp expected-template editor-input
 '
 
 test_expect_success 'setup empty commit with unstaged rename and copy' '
index 0f936182e4f186e98897ba4b8a11c5133ffc1911..512ae2781fe2c9b02a5a37f5230ec14992114ae7 100755 (executable)
@@ -11,7 +11,7 @@ GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
 export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
 
 . ./test-lib.sh
-. "$TEST_DIRECTORY/diff-lib.sh"
+. "$TEST_DIRECTORY/lib-diff.sh"
 
 author='The Real Author <someguy@his.email.org>'
 
index e5332adc9a10aae26a2419d209d7337de4d5cae6..38a532d81ccd060d7c42e1a3f413bdfeccf4715b 100755 (executable)
@@ -13,7 +13,7 @@ commit_msg_is () {
 
        printf "%s" "$(git log --pretty=format:%s%b -1)" >$actual &&
        printf "%s" "$1" >$expect &&
-       test_i18ncmp $expect $actual
+       test_cmp $expect $actual
 }
 
 # Arguments: [<prefix] [<commit message>] [<commit options>]
@@ -35,7 +35,17 @@ check_summary_oneline() {
        SUMMARY_POSTFIX="$(git log -1 --pretty='format:%h')"
        echo "[$SUMMARY_PREFIX $SUMMARY_POSTFIX] $2" >exp &&
 
-       test_i18ncmp exp act
+       test_cmp exp act
+}
+
+trailer_commit_base () {
+       echo "fun" >>file &&
+       git add file &&
+       git commit -s --trailer "Signed-off-by=C1 E1 " \
+               --trailer "Helped-by:C2 E2 " \
+               --trailer "Reported-by=C3 E3" \
+               --trailer "Mentored-by:C4 E4" \
+               -m "hello"
 }
 
 test_expect_success 'output summary format' '
@@ -154,6 +164,308 @@ test_expect_success 'sign off' '
 
 '
 
+test_expect_success 'commit --trailer with "="' '
+       trailer_commit_base &&
+       cat >expected <<-\EOF &&
+       hello
+
+       Signed-off-by: C O Mitter <committer@example.com>
+       Signed-off-by: C1 E1
+       Helped-by: C2 E2
+       Reported-by: C3 E3
+       Mentored-by: C4 E4
+       EOF
+       git cat-file commit HEAD >commit.msg &&
+       sed -e "1,/^\$/d" commit.msg >actual &&
+       test_cmp expected actual
+'
+
+test_expect_success 'commit --trailer with -c and "replace" as ifexists' '
+       trailer_commit_base &&
+       cat >expected <<-\EOF &&
+       hello
+
+       Signed-off-by: C O Mitter <committer@example.com>
+       Signed-off-by: C1 E1
+       Reported-by: C3 E3
+       Mentored-by: C4 E4
+       Helped-by: C3 E3
+       EOF
+       git -c trailer.ifexists="replace" \
+               commit --trailer "Mentored-by: C4 E4" \
+                --trailer "Helped-by: C3 E3" \
+               --amend &&
+       git cat-file commit HEAD >commit.msg &&
+       sed -e "1,/^\$/d"  commit.msg >actual &&
+       test_cmp expected actual
+'
+
+test_expect_success 'commit --trailer with -c and "add" as ifexists' '
+       trailer_commit_base &&
+       cat >expected <<-\EOF &&
+       hello
+
+       Signed-off-by: C O Mitter <committer@example.com>
+       Signed-off-by: C1 E1
+       Helped-by: C2 E2
+       Reported-by: C3 E3
+       Mentored-by: C4 E4
+       Reported-by: C3 E3
+       Mentored-by: C4 E4
+       EOF
+       git -c trailer.ifexists="add" \
+               commit --trailer "Reported-by: C3 E3" \
+               --trailer "Mentored-by: C4 E4" \
+               --amend &&
+       git cat-file commit HEAD >commit.msg &&
+       sed -e "1,/^\$/d"  commit.msg >actual &&
+       test_cmp expected actual
+'
+
+test_expect_success 'commit --trailer with -c and "donothing" as ifexists' '
+       trailer_commit_base &&
+       cat >expected <<-\EOF &&
+       hello
+
+       Signed-off-by: C O Mitter <committer@example.com>
+       Signed-off-by: C1 E1
+       Helped-by: C2 E2
+       Reported-by: C3 E3
+       Mentored-by: C4 E4
+       Reviewed-by: C6 E6
+       EOF
+       git -c trailer.ifexists="donothing" \
+               commit --trailer "Mentored-by: C5 E5" \
+               --trailer "Reviewed-by: C6 E6" \
+               --amend &&
+       git cat-file commit HEAD >commit.msg &&
+       sed -e "1,/^\$/d"  commit.msg >actual &&
+       test_cmp expected actual
+'
+
+test_expect_success 'commit --trailer with -c and "addIfDifferent" as ifexists' '
+       trailer_commit_base &&
+       cat >expected <<-\EOF &&
+       hello
+
+       Signed-off-by: C O Mitter <committer@example.com>
+       Signed-off-by: C1 E1
+       Helped-by: C2 E2
+       Reported-by: C3 E3
+       Mentored-by: C4 E4
+       Mentored-by: C5 E5
+       EOF
+       git -c trailer.ifexists="addIfDifferent" \
+               commit --trailer "Reported-by: C3 E3" \
+               --trailer "Mentored-by: C5 E5" \
+               --amend &&
+       git cat-file commit HEAD >commit.msg &&
+       sed -e "1,/^\$/d"  commit.msg >actual &&
+       test_cmp expected actual
+'
+
+test_expect_success 'commit --trailer with -c and "addIfDifferentNeighbor" as ifexists' '
+       trailer_commit_base &&
+       cat >expected <<-\EOF &&
+       hello
+
+       Signed-off-by: C O Mitter <committer@example.com>
+       Signed-off-by: C1 E1
+       Helped-by: C2 E2
+       Reported-by: C3 E3
+       Mentored-by: C4 E4
+       Reported-by: C3 E3
+       EOF
+       git -c trailer.ifexists="addIfDifferentNeighbor" \
+               commit --trailer "Mentored-by: C4 E4" \
+               --trailer "Reported-by: C3 E3" \
+               --amend &&
+       git cat-file commit HEAD >commit.msg &&
+       sed -e "1,/^\$/d"  commit.msg >actual &&
+       test_cmp expected actual
+'
+
+test_expect_success 'commit --trailer with -c and "end" as where' '
+       trailer_commit_base &&
+       cat >expected <<-\EOF &&
+       hello
+
+       Signed-off-by: C O Mitter <committer@example.com>
+       Signed-off-by: C1 E1
+       Helped-by: C2 E2
+       Reported-by: C3 E3
+       Mentored-by: C4 E4
+       Reported-by: C3 E3
+       Mentored-by: C4 E4
+       EOF
+       git -c trailer.where="end" \
+               commit --trailer "Reported-by: C3 E3" \
+               --trailer "Mentored-by: C4 E4" \
+               --amend &&
+       git cat-file commit HEAD >commit.msg &&
+       sed -e "1,/^\$/d" commit.msg >actual &&
+       test_cmp expected actual
+'
+
+test_expect_success 'commit --trailer with -c and "start" as where' '
+       trailer_commit_base &&
+       cat >expected <<-\EOF &&
+       hello
+
+       Signed-off-by: C1 E1
+       Signed-off-by: C O Mitter <committer@example.com>
+       Signed-off-by: C1 E1
+       Helped-by: C2 E2
+       Reported-by: C3 E3
+       Mentored-by: C4 E4
+       EOF
+       git -c trailer.where="start" \
+               commit --trailer "Signed-off-by: C O Mitter <committer@example.com>" \
+               --trailer "Signed-off-by: C1 E1" \
+               --amend &&
+       git cat-file commit HEAD >commit.msg &&
+       sed -e "1,/^\$/d" commit.msg >actual &&
+       test_cmp expected actual
+'
+
+test_expect_success 'commit --trailer with -c and "after" as where' '
+       trailer_commit_base &&
+       cat >expected <<-\EOF &&
+       hello
+
+       Signed-off-by: C O Mitter <committer@example.com>
+       Signed-off-by: C1 E1
+       Helped-by: C2 E2
+       Reported-by: C3 E3
+       Mentored-by: C4 E4
+       Mentored-by: C5 E5
+       EOF
+       git -c trailer.where="after" \
+               commit --trailer "Mentored-by: C4 E4" \
+               --trailer "Mentored-by: C5 E5" \
+               --amend &&
+       git cat-file commit HEAD >commit.msg &&
+       sed -e "1,/^\$/d" commit.msg >actual &&
+       test_cmp expected actual
+'
+
+test_expect_success 'commit --trailer with -c and "before" as where' '
+       trailer_commit_base &&
+       cat >expected <<-\EOF &&
+       hello
+
+       Signed-off-by: C O Mitter <committer@example.com>
+       Signed-off-by: C1 E1
+       Helped-by: C2 E2
+       Reported-by: C3 E3
+       Mentored-by: C2 E2
+       Mentored-by: C3 E3
+       Mentored-by: C4 E4
+       EOF
+       git -c trailer.where="before" \
+               commit --trailer "Mentored-by: C3 E3" \
+               --trailer "Mentored-by: C2 E2" \
+               --amend &&
+       git cat-file commit HEAD >commit.msg &&
+       sed -e "1,/^\$/d" commit.msg >actual &&
+       test_cmp expected actual
+'
+
+test_expect_success 'commit --trailer with -c and "donothing" as ifmissing' '
+       trailer_commit_base &&
+       cat >expected <<-\EOF &&
+       hello
+
+       Signed-off-by: C O Mitter <committer@example.com>
+       Signed-off-by: C1 E1
+       Helped-by: C2 E2
+       Reported-by: C3 E3
+       Mentored-by: C4 E4
+       Helped-by: C5 E5
+       EOF
+       git -c trailer.ifmissing="donothing" \
+               commit --trailer "Helped-by: C5 E5" \
+               --trailer "Based-by: C6 E6" \
+               --amend &&
+       git cat-file commit HEAD >commit.msg &&
+       sed -e "1,/^\$/d" commit.msg >actual &&
+       test_cmp expected actual
+'
+
+test_expect_success 'commit --trailer with -c and "add" as ifmissing' '
+       trailer_commit_base &&
+       cat >expected <<-\EOF &&
+       hello
+
+       Signed-off-by: C O Mitter <committer@example.com>
+       Signed-off-by: C1 E1
+       Helped-by: C2 E2
+       Reported-by: C3 E3
+       Mentored-by: C4 E4
+       Helped-by: C5 E5
+       Based-by: C6 E6
+       EOF
+       git -c trailer.ifmissing="add" \
+               commit --trailer "Helped-by: C5 E5" \
+               --trailer "Based-by: C6 E6" \
+               --amend &&
+       git cat-file commit HEAD >commit.msg &&
+       sed -e "1,/^\$/d" commit.msg >actual &&
+       test_cmp expected actual
+'
+
+test_expect_success 'commit --trailer with -c ack.key ' '
+       echo "fun" >>file1 &&
+       git add file1 &&
+       cat >expected <<-\EOF &&
+               hello
+
+               Acked-by: Peff
+       EOF
+       git -c trailer.ack.key="Acked-by" \
+               commit --trailer "ack = Peff" -m "hello" &&
+       git cat-file commit HEAD >commit.msg &&
+       sed -e "1,/^\$/d" commit.msg >actual &&
+       test_cmp expected actual
+'
+
+test_expect_success 'commit --trailer with -c and ":=#" as separators' '
+       echo "fun" >>file1 &&
+       git add file1 &&
+       cat >expected <<-\EOF &&
+               I hate bug
+
+               Bug #42
+       EOF
+       git -c trailer.separators=":=#" \
+               -c trailer.bug.key="Bug #" \
+               commit --trailer "bug = 42" -m "I hate bug" &&
+       git cat-file commit HEAD >commit.msg &&
+       sed -e "1,/^\$/d" commit.msg >actual &&
+       test_cmp expected actual
+'
+
+test_expect_success 'commit --trailer with -c and command' '
+       trailer_commit_base &&
+       cat >expected <<-\EOF &&
+       hello
+
+       Signed-off-by: C O Mitter <committer@example.com>
+       Signed-off-by: C1 E1
+       Helped-by: C2 E2
+       Mentored-by: C4 E4
+       Reported-by: A U Thor <author@example.com>
+       EOF
+       git -c trailer.report.key="Reported-by: " \
+               -c trailer.report.ifexists="replace" \
+               -c trailer.report.command="NAME=\"\$ARG\"; test -n \"\$NAME\" && \
+               git log --author=\"\$NAME\" -1 --format=\"format:%aN <%aE>\" || true" \
+               commit --trailer "report = author" --amend &&
+       git cat-file commit HEAD >commit.msg &&
+       sed -e "1,/^\$/d" commit.msg >actual &&
+       test_cmp expected actual
+'
+
 test_expect_success 'multiple -m' '
 
        >negative &&
@@ -300,7 +612,7 @@ echo "sample
 # with '#' will be ignored, and an empty message aborts the commit." >expect
 
 test_expect_success 'cleanup commit messages (strip option,-F,-e): output' '
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success 'cleanup commit message (fail on invalid cleanup mode option)' '
index 321b4bc0fc69d93a8db838447c01db76e0853c26..7a8194ce720ed5d9244caf2bbd882a56f491476c 100755 (executable)
@@ -218,7 +218,7 @@ test_expect_success 'with hook and editor (merge)' '
 test_rebase () {
        expect=$1 &&
        mode=$2 &&
-       test_expect_$expect C_LOCALE_OUTPUT "with hook (rebase ${mode:--i})" '
+       test_expect_$expect "with hook (rebase ${mode:--i})" '
                test_when_finished "\
                        git rebase --abort
                        git checkout -f main
@@ -307,7 +307,7 @@ test_expect_success 'with failing hook (merge)' '
 
 '
 
-test_expect_success C_LOCALE_OUTPUT 'with failing hook (cherry-pick)' '
+test_expect_success 'with failing hook (cherry-pick)' '
        test_when_finished "git checkout -f main" &&
        git checkout -B other b &&
        test_must_fail git cherry-pick rebase-1 2>actual &&
index d01aacb66b54e1700209e2338a39e062da7d8c36..2b72451ba3ed23eff7d726564845ce14f98e2cc1 100755 (executable)
@@ -109,13 +109,13 @@ test_expect_success 'status --column' '
 #
 EOF
        COLUMNS=50 git -c status.displayCommentPrefix=true status --column="column dense" >output &&
-       test_i18ncmp expect output
+       test_cmp expect output
 '
 
 test_expect_success 'status --column status.displayCommentPrefix=false' '
        strip_comments expect &&
        COLUMNS=49 git -c status.displayCommentPrefix=false status --column="column dense" >output &&
-       test_i18ncmp expect output
+       test_cmp expect output
 '
 
 cat >expect <<\EOF
@@ -144,19 +144,19 @@ EOF
 
 test_expect_success 'status with status.displayCommentPrefix=true' '
        git -c status.displayCommentPrefix=true status >output &&
-       test_i18ncmp expect output
+       test_cmp expect output
 '
 
 test_expect_success 'status with status.displayCommentPrefix=false' '
        strip_comments expect &&
        git -c status.displayCommentPrefix=false status >output &&
-       test_i18ncmp expect output
+       test_cmp expect output
 '
 
 test_expect_success 'status -v' '
        (cat expect && git diff --cached) >expect-with-v &&
        git status -v >output &&
-       test_i18ncmp expect-with-v output
+       test_cmp expect-with-v output
 '
 
 test_expect_success 'status -v -v' '
@@ -167,7 +167,7 @@ test_expect_success 'status -v -v' '
         echo "Changes not staged for commit:" &&
         git -c diff.mnemonicprefix=true diff) >expect-with-v &&
        git status -v -v >output &&
-       test_i18ncmp expect-with-v output
+       test_cmp expect-with-v output
 '
 
 test_expect_success 'setup fake editor' '
@@ -214,7 +214,7 @@ EOF
 test_expect_success 'status (advice.statusHints false)' '
        test_config advice.statusHints false &&
        git status >output &&
-       test_i18ncmp expect output
+       test_cmp expect output
 
 '
 
@@ -296,7 +296,7 @@ Ignored files:
 
 EOF
        git status --ignored >output &&
-       test_i18ncmp expect output
+       test_cmp expect output
 '
 
 test_expect_success 'status with gitignore (nothing untracked)' '
@@ -358,7 +358,7 @@ Ignored files:
 
 EOF
        git status --ignored >output &&
-       test_i18ncmp expect output
+       test_cmp expect output
 '
 
 cat >.gitignore <<\EOF
@@ -380,7 +380,7 @@ EOF
 test_expect_success 'status -s -b' '
 
        git status -s -b >output &&
-       test_i18ncmp expect output
+       test_cmp expect output
 
 '
 
@@ -390,7 +390,7 @@ test_expect_success 'status -s -z -b' '
        git status -s -z -b >output &&
        nul_to_q <output >output.q &&
        mv output.q output &&
-       test_i18ncmp expect output
+       test_cmp expect output
 '
 
 test_expect_success 'setup dir3' '
@@ -418,13 +418,13 @@ Changes not staged for commit:
 Untracked files not listed (use -u option to show untracked files)
 EOF
        git status -uno >output &&
-       test_i18ncmp expect output
+       test_cmp expect output
 '
 
 test_expect_success 'status (status.showUntrackedFiles no)' '
        test_config status.showuntrackedfiles no &&
        git status >output &&
-       test_i18ncmp expect output
+       test_cmp expect output
 '
 
 test_expect_success 'status -uno (advice.statusHints false)' '
@@ -443,7 +443,7 @@ Untracked files not listed
 EOF
        test_config advice.statusHints false &&
        git status -uno >output &&
-       test_i18ncmp expect output
+       test_cmp expect output
 '
 
 cat >expect << EOF
@@ -487,13 +487,13 @@ Untracked files:
 
 EOF
        git status -unormal >output &&
-       test_i18ncmp expect output
+       test_cmp expect output
 '
 
 test_expect_success 'status (status.showUntrackedFiles normal)' '
        test_config status.showuntrackedfiles normal &&
        git status >output &&
-       test_i18ncmp expect output
+       test_cmp expect output
 '
 
 cat >expect <<EOF
@@ -543,13 +543,13 @@ Untracked files:
 
 EOF
        git status -uall >output &&
-       test_i18ncmp expect output
+       test_cmp expect output
 '
 
 test_expect_success 'status (status.showUntrackedFiles all)' '
        test_config status.showuntrackedfiles all &&
        git status >output &&
-       test_i18ncmp expect output
+       test_cmp expect output
 '
 
 test_expect_success 'teardown dir3' '
@@ -601,7 +601,7 @@ Untracked files:
 
 EOF
        (cd dir1 && git status) >output &&
-       test_i18ncmp expect output
+       test_cmp expect output
 '
 
 cat >expect <<\EOF
@@ -670,13 +670,13 @@ Untracked files:
 EOF
        test_config color.ui auto &&
        test_terminal git status | test_decode_color >output &&
-       test_i18ncmp expect output
+       test_cmp expect output
 '
 
 test_expect_success TTY 'status with color.status' '
        test_config color.status auto &&
        test_terminal git status | test_decode_color >output &&
-       test_i18ncmp expect output
+       test_cmp expect output
 '
 
 cat >expect <<\EOF
@@ -718,7 +718,7 @@ EOF
 test_expect_success TTY 'status -s -b with color.status' '
 
        test_terminal git status -s -b | test_decode_color >output &&
-       test_i18ncmp expect output
+       test_cmp expect output
 
 '
 
@@ -793,7 +793,7 @@ Untracked files:
 EOF
        test_config status.relativePaths false &&
        (cd dir1 && git status) >output &&
-       test_i18ncmp expect output
+       test_cmp expect output
 
 '
 
@@ -860,7 +860,7 @@ Untracked files:
 
 EOF
        git commit --dry-run dir1/modified >output &&
-       test_i18ncmp expect output
+       test_cmp expect output
 '
 
 cat >expect <<EOF
@@ -921,13 +921,13 @@ Untracked files:
 
 EOF
        git status >output &&
-       test_i18ncmp expect output
+       test_cmp expect output
 '
 
 # we expect the same as the previous test
 test_expect_success 'status --untracked-files=all does not show submodule' '
        git status --untracked-files=all >output &&
-       test_i18ncmp expect output
+       test_cmp expect output
 '
 
 cat >expect <<EOF
@@ -984,13 +984,13 @@ Untracked files:
 EOF
        git config status.submodulesummary 10 &&
        git status >output &&
-       test_i18ncmp expect output
+       test_cmp expect output
 '
 
 test_expect_success 'status submodule summary with status.displayCommentPrefix=false' '
        strip_comments expect &&
        git -c status.displayCommentPrefix=false status >output &&
-       test_i18ncmp expect output
+       test_cmp expect output
 '
 
 test_expect_success 'commit with submodule summary ignores status.displayCommentPrefix' '
@@ -1035,9 +1035,9 @@ EOF
        git commit -m "commit submodule" &&
        git config status.submodulesummary 10 &&
        test_must_fail git commit --dry-run >output &&
-       test_i18ncmp expect output &&
+       test_cmp expect output &&
        git status >output &&
-       test_i18ncmp expect output
+       test_cmp expect output
 '
 
 cat >expect <<EOF
@@ -1091,7 +1091,7 @@ Untracked files:
 EOF
        git config status.submodulesummary 10 &&
        git commit --dry-run --amend >output &&
-       test_i18ncmp expect output
+       test_cmp expect output
 '
 
 test_expect_success POSIXPERM,SANITY 'status succeeds in a read-only repository' '
@@ -1143,17 +1143,17 @@ Untracked files:
 EOF
        echo modified  sm/untracked &&
        git status --ignore-submodules=untracked >output &&
-       test_i18ncmp expect output
+       test_cmp expect output
 '
 
 test_expect_success '.gitmodules ignore=untracked suppresses submodules with untracked content' '
        test_config diff.ignoreSubmodules dirty &&
        git status >output &&
-       test_i18ncmp expect output &&
+       test_cmp expect output &&
        git config --add -f .gitmodules submodule.subname.ignore untracked &&
        git config --add -f .gitmodules submodule.subname.path sm &&
        git status >output &&
-       test_i18ncmp expect output &&
+       test_cmp expect output &&
        git config -f .gitmodules  --remove-section submodule.subname
 '
 
@@ -1163,14 +1163,14 @@ test_expect_success '.git/config ignore=untracked suppresses submodules with unt
        git config --add submodule.subname.ignore untracked &&
        git config --add submodule.subname.path sm &&
        git status >output &&
-       test_i18ncmp expect output &&
+       test_cmp expect output &&
        git config --remove-section submodule.subname &&
        git config --remove-section -f .gitmodules submodule.subname
 '
 
 test_expect_success '--ignore-submodules=dirty suppresses submodules with untracked content' '
        git status --ignore-submodules=dirty >output &&
-       test_i18ncmp expect output
+       test_cmp expect output
 '
 
 test_expect_success '.gitmodules ignore=dirty suppresses submodules with untracked content' '
@@ -1180,7 +1180,7 @@ test_expect_success '.gitmodules ignore=dirty suppresses submodules with untrack
        git config --add -f .gitmodules submodule.subname.ignore dirty &&
        git config --add -f .gitmodules submodule.subname.path sm &&
        git status >output &&
-       test_i18ncmp expect output &&
+       test_cmp expect output &&
        git config -f .gitmodules  --remove-section submodule.subname
 '
 
@@ -1190,7 +1190,7 @@ test_expect_success '.git/config ignore=dirty suppresses submodules with untrack
        git config --add submodule.subname.ignore dirty &&
        git config --add submodule.subname.path sm &&
        git status >output &&
-       test_i18ncmp expect output &&
+       test_cmp expect output &&
        git config --remove-section submodule.subname &&
        git config -f .gitmodules  --remove-section submodule.subname
 '
@@ -1198,14 +1198,14 @@ test_expect_success '.git/config ignore=dirty suppresses submodules with untrack
 test_expect_success '--ignore-submodules=dirty suppresses submodules with modified content' '
        echo modified >sm/foo &&
        git status --ignore-submodules=dirty >output &&
-       test_i18ncmp expect output
+       test_cmp expect output
 '
 
 test_expect_success '.gitmodules ignore=dirty suppresses submodules with modified content' '
        git config --add -f .gitmodules submodule.subname.ignore dirty &&
        git config --add -f .gitmodules submodule.subname.path sm &&
        git status >output &&
-       test_i18ncmp expect output &&
+       test_cmp expect output &&
        git config -f .gitmodules  --remove-section submodule.subname
 '
 
@@ -1215,7 +1215,7 @@ test_expect_success '.git/config ignore=dirty suppresses submodules with modifie
        git config --add submodule.subname.ignore dirty &&
        git config --add submodule.subname.path sm &&
        git status >output &&
-       test_i18ncmp expect output &&
+       test_cmp expect output &&
        git config --remove-section submodule.subname &&
        git config -f .gitmodules  --remove-section submodule.subname
 '
@@ -1253,14 +1253,14 @@ Untracked files:
 
 EOF
        git status --ignore-submodules=untracked > output &&
-       test_i18ncmp expect output
+       test_cmp expect output
 '
 
 test_expect_success ".gitmodules ignore=untracked doesn't suppress submodules with modified content" '
        git config --add -f .gitmodules submodule.subname.ignore untracked &&
        git config --add -f .gitmodules submodule.subname.path sm &&
        git status >output &&
-       test_i18ncmp expect output &&
+       test_cmp expect output &&
        git config -f .gitmodules  --remove-section submodule.subname
 '
 
@@ -1270,7 +1270,7 @@ test_expect_success ".git/config ignore=untracked doesn't suppress submodules wi
        git config --add submodule.subname.ignore untracked &&
        git config --add submodule.subname.path sm &&
        git status >output &&
-       test_i18ncmp expect output &&
+       test_cmp expect output &&
        git config --remove-section submodule.subname &&
        git config -f .gitmodules  --remove-section submodule.subname
 '
@@ -1314,14 +1314,14 @@ Untracked files:
 
 EOF
        git status --ignore-submodules=untracked > output &&
-       test_i18ncmp expect output
+       test_cmp expect output
 '
 
 test_expect_success ".gitmodules ignore=untracked doesn't suppress submodule summary" '
        git config --add -f .gitmodules submodule.subname.ignore untracked &&
        git config --add -f .gitmodules submodule.subname.path sm &&
        git status >output &&
-       test_i18ncmp expect output &&
+       test_cmp expect output &&
        git config -f .gitmodules  --remove-section submodule.subname
 '
 
@@ -1331,20 +1331,20 @@ test_expect_success ".git/config ignore=untracked doesn't suppress submodule sum
        git config --add submodule.subname.ignore untracked &&
        git config --add submodule.subname.path sm &&
        git status >output &&
-       test_i18ncmp expect output &&
+       test_cmp expect output &&
        git config --remove-section submodule.subname &&
        git config -f .gitmodules  --remove-section submodule.subname
 '
 
 test_expect_success "--ignore-submodules=dirty doesn't suppress submodule summary" '
        git status --ignore-submodules=dirty > output &&
-       test_i18ncmp expect output
+       test_cmp expect output
 '
 test_expect_success ".gitmodules ignore=dirty doesn't suppress submodule summary" '
        git config --add -f .gitmodules submodule.subname.ignore dirty &&
        git config --add -f .gitmodules submodule.subname.path sm &&
        git status >output &&
-       test_i18ncmp expect output &&
+       test_cmp expect output &&
        git config -f .gitmodules  --remove-section submodule.subname
 '
 
@@ -1354,7 +1354,7 @@ test_expect_success ".git/config ignore=dirty doesn't suppress submodule summary
        git config --add submodule.subname.ignore dirty &&
        git config --add submodule.subname.path sm &&
        git status >output &&
-       test_i18ncmp expect output &&
+       test_cmp expect output &&
        git config --remove-section submodule.subname &&
        git config -f .gitmodules  --remove-section submodule.subname
 '
@@ -1398,7 +1398,7 @@ EOF
 test_expect_success "status (core.commentchar with submodule summary)" '
        test_config core.commentchar ";" &&
        git -c status.displayCommentPrefix=true status >output &&
-       test_i18ncmp expect output
+       test_cmp expect output
 '
 
 test_expect_success "status (core.commentchar with two chars with submodule summary)" '
@@ -1429,7 +1429,7 @@ Untracked files:
 no changes added to commit (use "git add" and/or "git commit -a")
 EOF
        git status --ignore-submodules=all > output &&
-       test_i18ncmp expect output
+       test_cmp expect output
 '
 
 test_expect_success '.gitmodules ignore=all suppresses unstaged submodule summary' '
@@ -1460,7 +1460,7 @@ EOF
        git config --add -f .gitmodules submodule.subname.ignore all &&
        git config --add -f .gitmodules submodule.subname.path sm &&
        git status > output &&
-       test_i18ncmp expect output &&
+       test_cmp expect output &&
        git config -f .gitmodules  --remove-section submodule.subname
 '
 
@@ -1470,7 +1470,7 @@ test_expect_success '.git/config ignore=all suppresses unstaged submodule summar
        git config --add submodule.subname.ignore all &&
        git config --add submodule.subname.path sm &&
        git status > output &&
-       test_i18ncmp expect output &&
+       test_cmp expect output &&
        git config --remove-section submodule.subname &&
        git config -f .gitmodules  --remove-section submodule.subname
 '
@@ -1571,7 +1571,7 @@ Changes not staged for commit:
 Untracked files not listed (use -u option to show untracked files)
 EOF
        git commit -uno --dry-run >output &&
-       test_i18ncmp expect output &&
+       test_cmp expect output &&
        git status -s --ignore-submodules=dirty >output &&
        test_i18ngrep "^M. sm" output
 '
index f4bf925bdd26bbbe062c268536054ce8019253ba..8df5a74f1db4ecd846c9365c0474f6628cbbd443 100755 (executable)
@@ -175,7 +175,7 @@ test_expect_success GPG 'show signed commit with signature' '
        git cat-file commit initial >cat &&
        grep -v -e "gpg: " -e "Warning: " show >show.commit &&
        grep -e "gpg: " -e "Warning: " show >show.gpg &&
-       grep -v "^ " cat | grep -v "^$(test_oid header) " >cat.commit &&
+       grep -v "^ " cat | grep -v "^gpgsig.* " >cat.commit &&
        test_cmp show.commit commit &&
        test_cmp show.gpg verify.2 &&
        test_cmp cat.commit verify.1
@@ -337,4 +337,45 @@ test_expect_success GPG 'show double signature with custom format' '
        test_cmp expect actual
 '
 
+
+test_expect_success GPG 'verify-commit verifies multiply signed commits' '
+       git init multiply-signed &&
+       cd multiply-signed &&
+       test_commit first &&
+       echo 1 >second &&
+       git add second &&
+       tree=$(git write-tree) &&
+       parent=$(git rev-parse HEAD^{commit}) &&
+       git commit --gpg-sign -m second &&
+       git cat-file commit HEAD &&
+       # Avoid trailing whitespace.
+       sed -e "s/^Q//" -e "s/^Z/ /" >commit <<-EOF &&
+       Qtree $tree
+       Qparent $parent
+       Qauthor A U Thor <author@example.com> 1112912653 -0700
+       Qcommitter C O Mitter <committer@example.com> 1112912653 -0700
+       Qgpgsig -----BEGIN PGP SIGNATURE-----
+       QZ
+       Q iHQEABECADQWIQRz11h0S+chaY7FTocTtvUezd5DDQUCX/uBDRYcY29tbWl0dGVy
+       Q QGV4YW1wbGUuY29tAAoJEBO29R7N3kMNd+8AoK1I8mhLHviPH+q2I5fIVgPsEtYC
+       Q AKCTqBh+VabJceXcGIZuF0Ry+udbBQ==
+       Q =tQ0N
+       Q -----END PGP SIGNATURE-----
+       Qgpgsig-sha256 -----BEGIN PGP SIGNATURE-----
+       QZ
+       Q iHQEABECADQWIQRz11h0S+chaY7FTocTtvUezd5DDQUCX/uBIBYcY29tbWl0dGVy
+       Q QGV4YW1wbGUuY29tAAoJEBO29R7N3kMN/NEAn0XO9RYSBj2dFyozi0JKSbssYMtO
+       Q AJwKCQ1BQOtuwz//IjU8TiS+6S4iUw==
+       Q =pIwP
+       Q -----END PGP SIGNATURE-----
+       Q
+       Qsecond
+       EOF
+       head=$(git hash-object -t commit -w commit) &&
+       git reset --hard $head &&
+       git verify-commit $head 2>actual &&
+       grep "Good signature from" actual &&
+       ! grep "BAD signature from" actual
+'
+
 test_done
index 9f5e3ce7931991d29d9108b8f8522c1eba6e3bc6..7f2956d77ad033a57981a9569db3ef803ef93961 100755 (executable)
@@ -41,7 +41,7 @@ Unmerged paths:
 no changes added to commit (use "git add" and/or "git commit -a")
 EOF
        git status --untracked-files=no >actual &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 
@@ -61,7 +61,7 @@ Changes to be committed:
 Untracked files not listed (use -u option to show untracked files)
 EOF
        git status --untracked-files=no >actual &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 
@@ -93,7 +93,7 @@ Unmerged paths:
 no changes added to commit (use "git add" and/or "git commit -a")
 EOF
        git status --untracked-files=no >actual &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 
@@ -116,7 +116,7 @@ Changes to be committed:
 Untracked files not listed (use -u option to show untracked files)
 EOF
        git status --untracked-files=no >actual &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 
@@ -154,7 +154,7 @@ Unmerged paths:
 no changes added to commit (use "git add" and/or "git commit -a")
 EOF
        git status --untracked-files=no >actual &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 
@@ -180,7 +180,7 @@ Changes to be committed:
 Untracked files not listed (use -u option to show untracked files)
 EOF
        git status --untracked-files=no >actual &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 
@@ -210,7 +210,7 @@ You are currently editing a commit while rebasing branch '\''rebase_i_edit'\'' o
 nothing to commit (use -u to show untracked files)
 EOF
        git status --untracked-files=no >actual &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 
@@ -249,7 +249,7 @@ Changes not staged for commit:
 no changes added to commit (use "git add" and/or "git commit -a")
 EOF
        git status --untracked-files=no >actual &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 
@@ -282,7 +282,7 @@ You are currently editing a commit while rebasing branch '\''amend_last'\'' on '
 nothing to commit (use -u to show untracked files)
 EOF
        git status --untracked-files=no >actual &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 
@@ -321,7 +321,7 @@ You are currently editing a commit while rebasing branch '\''several_edits'\'' o
 nothing to commit (use -u to show untracked files)
 EOF
        git status --untracked-files=no >actual &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 
@@ -356,7 +356,7 @@ Changes not staged for commit:
 no changes added to commit (use "git add" and/or "git commit -a")
 EOF
        git status --untracked-files=no >actual &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 
@@ -387,7 +387,7 @@ You are currently editing a commit while rebasing branch '\''several_edits'\'' o
 nothing to commit (use -u to show untracked files)
 EOF
        git status --untracked-files=no >actual &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 
@@ -418,7 +418,7 @@ You are currently editing a commit while rebasing branch '\''several_edits'\'' o
 nothing to commit (use -u to show untracked files)
 EOF
        git status --untracked-files=no >actual &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 
@@ -454,7 +454,7 @@ Changes not staged for commit:
 no changes added to commit (use "git add" and/or "git commit -a")
 EOF
        git status --untracked-files=no >actual &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 
@@ -486,7 +486,7 @@ You are currently editing a commit while rebasing branch '\''several_edits'\'' o
 nothing to commit (use -u to show untracked files)
 EOF
        git status --untracked-files=no >actual &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 
@@ -519,7 +519,7 @@ You are currently editing a commit while rebasing branch '\''several_edits'\'' o
 nothing to commit (use -u to show untracked files)
 EOF
        git status --untracked-files=no >actual &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 
@@ -557,7 +557,7 @@ Changes not staged for commit:
 no changes added to commit (use "git add" and/or "git commit -a")
 EOF
        git status --untracked-files=no >actual &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 
@@ -591,7 +591,7 @@ You are currently editing a commit while rebasing branch '\''several_edits'\'' o
 nothing to commit (use -u to show untracked files)
 EOF
        git status --untracked-files=no >actual &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 
@@ -619,7 +619,7 @@ You are in the middle of an am session.
 nothing to commit (use -u to show untracked files)
 EOF
        git status --untracked-files=no >actual &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 
@@ -641,7 +641,7 @@ You are in the middle of an am session.
 nothing to commit (use -u to show untracked files)
 EOF
        git status --untracked-files=no >actual &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 
@@ -664,7 +664,7 @@ The current patch is empty.
 nothing to commit (use -u to show untracked files)
 EOF
        git status --untracked-files=no >actual &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 
@@ -687,7 +687,7 @@ You are currently bisecting, started from branch '\''bisect'\''.
 nothing to commit (use -u to show untracked files)
 EOF
        git status --untracked-files=no >actual &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 
@@ -712,7 +712,7 @@ Unmerged paths:
 no changes added to commit
 EOF
        git status --untracked-files=no >actual &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 
@@ -746,7 +746,7 @@ Unmerged paths:
 no changes added to commit (use "git add" and/or "git commit -a")
 EOF
        git status --untracked-files=no >actual &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 
@@ -770,7 +770,7 @@ Changes to be committed:
 Untracked files not listed (use -u option to show untracked files)
 EOF
        git status --untracked-files=no >actual &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 test_expect_success 'status when cherry-picking after committing conflict resolution' '
@@ -789,7 +789,7 @@ Cherry-pick currently in progress.
 nothing to commit (use -u to show untracked files)
 EOF
        git status --untracked-files=no >actual &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 test_expect_success 'status shows cherry-pick with invalid oid' '
@@ -798,7 +798,7 @@ test_expect_success 'status shows cherry-pick with invalid oid' '
        git status --untracked-files=no >actual 2>err &&
        git cherry-pick --quit &&
        test_must_be_empty err &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 test_expect_success 'status does not show error if .git/sequencer is a file' '
@@ -816,7 +816,7 @@ HEAD detached at atag
 nothing to commit (use -u to show untracked files)
 EOF
        git status --untracked-files=no >actual &&
-       test_i18ncmp expected actual &&
+       test_cmp expected actual &&
 
        git reset --hard HEAD^ &&
        cat >expected <<\EOF &&
@@ -824,7 +824,7 @@ HEAD detached from atag
 nothing to commit (use -u to show untracked files)
 EOF
        git status --untracked-files=no >actual &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 test_expect_success 'status while reverting commit (conflicts)' '
@@ -852,7 +852,7 @@ Unmerged paths:
 no changes added to commit (use "git add" and/or "git commit -a")
 EOF
        git status --untracked-files=no >actual &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 test_expect_success 'status while reverting commit (conflicts resolved)' '
@@ -872,7 +872,7 @@ Changes to be committed:
 Untracked files not listed (use -u option to show untracked files)
 EOF
        git status --untracked-files=no >actual &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 test_expect_success 'status after reverting commit' '
@@ -882,7 +882,7 @@ On branch main
 nothing to commit (use -u to show untracked files)
 EOF
        git status --untracked-files=no >actual &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 test_expect_success 'status while reverting after committing conflict resolution' '
@@ -901,7 +901,7 @@ Revert currently in progress.
 nothing to commit (use -u to show untracked files)
 EOF
        git status --untracked-files=no >actual &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 test_expect_success 'prepare for different number of commits rebased' '
@@ -931,7 +931,7 @@ You are currently editing a commit while rebasing branch '\''several_commits'\''
 nothing to commit (use -u to show untracked files)
 EOF
        git status --untracked-files=no >actual &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 test_expect_success 'status: two commands done with some white lines in done file' '
@@ -959,7 +959,7 @@ You are currently editing a commit while rebasing branch '\''several_commits'\''
 nothing to commit (use -u to show untracked files)
 EOF
        git status --untracked-files=no >actual &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 test_expect_success 'status: two remaining commands with some white lines in todo file' '
@@ -988,7 +988,7 @@ You are currently editing a commit while rebasing branch '\''several_commits'\''
 nothing to commit (use -u to show untracked files)
 EOF
        git status --untracked-files=no >actual &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 test_expect_success 'status: handle not-yet-started rebase -i gracefully' '
@@ -1007,7 +1007,7 @@ You are currently editing a commit while rebasing branch '\''several_commits'\''
 
 nothing to commit (use -u to show untracked files)
 EOF
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 test_done
index fbfdcca000777461aed96c19eb7c2cc4b298c86c..45d025f96010da185f4af33b02ee60004236b1ea 100755 (executable)
@@ -236,7 +236,7 @@ test_expect_success 'refresh_index() invalidates fsmonitor cache' '
        git reset HEAD~1 &&
        git status >actual &&
        git -c core.fsmonitor= status >expect &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 # test fsmonitor with and without preloadIndex
@@ -273,7 +273,7 @@ do
                        git add dir2/new &&
                        git status >actual &&
                        git -c core.fsmonitor= status >expect &&
-                       test_i18ncmp expect actual
+                       test_cmp expect actual
                '
 
                # Make sure it's actually skipping the check for modified and untracked
index 91790943c3df0555c1dbaadc05a0832f4961f9bf..a88b02b06ed34234abfb3aa3131dd31a7d364141 100755 (executable)
@@ -30,7 +30,7 @@ test_expect_success 'Verify behavior of status on directories with ignored files
                dir/ignored/ignored_1.ign dir/ignored/ignored_2.ign &&
 
        git status --porcelain=v2 --ignored=matching --untracked-files=all >output &&
-       test_i18ncmp expect output
+       test_cmp expect output
 '
 
 test_expect_success 'Verify status behavior on directory with tracked & ignored files' '
@@ -55,7 +55,7 @@ test_expect_success 'Verify status behavior on directory with tracked & ignored
        git commit -m "commit tracked files" &&
 
        git status --porcelain=v2 --ignored=matching --untracked-files=all >output &&
-       test_i18ncmp expect output
+       test_cmp expect output
 '
 
 test_expect_success 'Verify status behavior on directory with untracked and ignored files' '
@@ -80,7 +80,7 @@ test_expect_success 'Verify status behavior on directory with untracked and igno
                dir/untracked_ignored/ignored_1.ign dir/untracked_ignored/ignored_2.ign &&
 
        git status --porcelain=v2 --ignored=matching --untracked-files=all >output &&
-       test_i18ncmp expect output
+       test_cmp expect output
 '
 
 test_expect_success 'Verify status matching ignored files on ignored directory' '
@@ -96,7 +96,7 @@ test_expect_success 'Verify status matching ignored files on ignored directory'
                ignored_dir/ignored_1.ign ignored_dir/ignored_2.ign &&
 
        git status --porcelain=v2 --ignored=matching --untracked-files=all >output &&
-       test_i18ncmp expect output
+       test_cmp expect output
 '
 
 test_expect_success 'Verify status behavior on ignored directory containing tracked file' '
@@ -117,7 +117,7 @@ test_expect_success 'Verify status behavior on ignored directory containing trac
        git add -f ignored_dir/tracked &&
        git commit -m "Force add file in ignored directory" &&
        git status --porcelain=v2 --ignored=matching --untracked-files=all >output &&
-       test_i18ncmp expect output
+       test_cmp expect output
 '
 
 test_expect_success 'Verify matching ignored files with --untracked-files=normal' '
@@ -136,7 +136,7 @@ test_expect_success 'Verify matching ignored files with --untracked-files=normal
                ignored_files/ignored_1.ign ignored_files/ignored_2.ign \
                untracked_dir/untracked &&
        git status --porcelain=v2 --ignored=matching --untracked-files=normal >output &&
-       test_i18ncmp expect output
+       test_cmp expect output
 '
 
 test_expect_success 'Verify matching ignored files with --untracked-files=normal' '
@@ -155,7 +155,7 @@ test_expect_success 'Verify matching ignored files with --untracked-files=normal
                ignored_files/ignored_1.ign ignored_files/ignored_2.ign \
                untracked_dir/untracked &&
        git status --porcelain=v2 --ignored=matching --untracked-files=normal >output &&
-       test_i18ncmp expect output
+       test_cmp expect output
 '
 
 test_expect_success 'Verify status behavior on ignored directory containing tracked file' '
@@ -176,7 +176,7 @@ test_expect_success 'Verify status behavior on ignored directory containing trac
        git add -f ignored_dir/tracked &&
        git commit -m "Force add file in ignored directory" &&
        git status --porcelain=v2 --ignored=matching --untracked-files=normal >output &&
-       test_i18ncmp expect output
+       test_cmp expect output
 '
 
 test_expect_success 'Verify behavior of status with --ignored=no' '
@@ -191,7 +191,7 @@ test_expect_success 'Verify behavior of status with --ignored=no' '
                dir/ignored/ignored_1.ign dir/ignored/ignored_2.ign &&
 
        git status --porcelain=v2 --ignored=no --untracked-files=all >output &&
-       test_i18ncmp expect output
+       test_cmp expect output
 '
 
 test_expect_success 'Verify behavior of status with --ignored=traditional and --untracked-files=all' '
@@ -210,7 +210,7 @@ test_expect_success 'Verify behavior of status with --ignored=traditional and --
                dir/ignored/ignored_1.ign dir/ignored/ignored_2.ign &&
 
        git status --porcelain=v2 --ignored=traditional --untracked-files=all >output &&
-       test_i18ncmp expect output
+       test_cmp expect output
 '
 
 test_expect_success 'Verify behavior of status with --ignored=traditional and --untracked-files=normal' '
@@ -227,7 +227,7 @@ test_expect_success 'Verify behavior of status with --ignored=traditional and --
                dir/ignored/ignored_1.ign dir/ignored/ignored_2.ign &&
 
        git status --porcelain=v2 --ignored=traditional --untracked-files=normal >output &&
-       test_i18ncmp expect output
+       test_cmp expect output
 '
 
 test_done
index b2c1d861dcb07aa0dd87b8b88269d9e7cb5d69aa..1cbc9715a81bdc9cf13bbe6d1341388468d0d047 100755 (executable)
@@ -272,7 +272,7 @@ test_expect_success 'merge c3 with c7 with commit.cleanup = scissors' '
        EOF
        git cat-file commit HEAD >raw &&
        sed -e "1,/^$/d" raw >actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_expect_success 'merge c3 with c7 with --squash commit.cleanup = scissors' '
@@ -296,7 +296,7 @@ test_expect_success 'merge c3 with c7 with --squash commit.cleanup = scissors' '
        EOF
        git cat-file commit HEAD >raw &&
        sed -e "1,/^$/d" raw >actual &&
-       test_i18ncmp expect actual
+       test_cmp expect actual
 '
 
 test_debug 'git log --graph --decorate --oneline --all'
index 13859ec8595f7f5abc32cc5322e83328a4556319..a9c816b47f269ad0bf073f97f50e03a6ba3890d7 100755 (executable)
@@ -66,7 +66,7 @@ EOF
 test_expect_success 'merge output uses pretty names' '
        git reset --hard c1 &&
        git merge c2 c3 c4 >actual &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 cat >expected <<\EOF
@@ -84,7 +84,7 @@ test_expect_success 'merge reduces irrelevant remote heads' '
                rm expected.tmp
        fi &&
        GIT_MERGE_VERBOSITY=0 git merge c4 c5 >actual &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 cat >expected <<\EOF
@@ -101,7 +101,7 @@ EOF
 test_expect_success 'merge fast-forward output uses pretty names' '
        git reset --hard c0 &&
        git merge c1 c2 >actual &&
-       test_i18ncmp expected actual
+       test_cmp expected actual
 '
 
 test_done
index 04b0095072d2ce1b347d1cd48e81d0be5c182dc2..8cc64729adb20640f17de4aa9ba891a9ead7edde 100755 (executable)
@@ -842,4 +842,22 @@ test_expect_success 'mergetool --tool-help shows recognized tools' '
        grep meld mergetools
 '
 
+test_expect_success 'mergetool hideResolved' '
+       test_config mergetool.hideResolved true &&
+       test_when_finished "git reset --hard" &&
+       git checkout -b test${test_count}_b main &&
+       test_write_lines >file1 base "" a &&
+       git commit -a -m "base" &&
+       test_write_lines >file1 base "" c &&
+       git commit -a -m "remote update" &&
+       git checkout -b test${test_count}_a HEAD~ &&
+       test_write_lines >file1 local "" b &&
+       git commit -a -m "local update" &&
+       test_must_fail git merge test${test_count}_b &&
+       yes "" | git mergetool file1 &&
+       test_write_lines >expect local "" c &&
+       test_cmp expect file1 &&
+       git commit -m "test resolved with mergetool"
+'
+
 test_done
diff --git a/t/t7703-repack-geometric.sh b/t/t7703-repack-geometric.sh
new file mode 100755 (executable)
index 0000000..5ccaa44
--- /dev/null
@@ -0,0 +1,183 @@
+#!/bin/sh
+
+test_description='git repack --geometric works correctly'
+
+. ./test-lib.sh
+
+GIT_TEST_MULTI_PACK_INDEX=0
+
+objdir=.git/objects
+midx=$objdir/pack/multi-pack-index
+
+test_expect_success '--geometric with no packs' '
+       git init geometric &&
+       test_when_finished "rm -fr geometric" &&
+       (
+               cd geometric &&
+
+               git repack --geometric 2 >out &&
+               test_i18ngrep "Nothing new to pack" out
+       )
+'
+
+test_expect_success '--geometric with one pack' '
+       git init geometric &&
+       test_when_finished "rm -fr geometric" &&
+       (
+               cd geometric &&
+
+               test_commit "base" &&
+               git repack -d &&
+
+               git repack --geometric 2 >out &&
+
+               test_i18ngrep "Nothing new to pack" out
+       )
+'
+
+test_expect_success '--geometric with an intact progression' '
+       git init geometric &&
+       test_when_finished "rm -fr geometric" &&
+       (
+               cd geometric &&
+
+               # These packs already form a geometric progression.
+               test_commit_bulk --start=1 1 && # 3 objects
+               test_commit_bulk --start=2 2 && # 6 objects
+               test_commit_bulk --start=4 4 && # 12 objects
+
+               find $objdir/pack -name "*.pack" | sort >expect &&
+               git repack --geometric 2 -d &&
+               find $objdir/pack -name "*.pack" | sort >actual &&
+
+               test_cmp expect actual
+       )
+'
+
+test_expect_success '--geometric with loose objects' '
+       git init geometric &&
+       test_when_finished "rm -fr geometric" &&
+       (
+               cd geometric &&
+
+               # These packs already form a geometric progression.
+               test_commit_bulk --start=1 1 && # 3 objects
+               test_commit_bulk --start=2 2 && # 6 objects
+               # The loose objects are packed together, breaking the
+               # progression.
+               test_commit loose && # 3 objects
+
+               find $objdir/pack -name "*.pack" | sort >before &&
+               git repack --geometric 2 -d &&
+               find $objdir/pack -name "*.pack" | sort >after &&
+
+               comm -13 before after >new &&
+               comm -23 before after >removed &&
+
+               test_line_count = 1 new &&
+               test_must_be_empty removed &&
+
+               git repack --geometric 2 -d &&
+               find $objdir/pack -name "*.pack" | sort >after &&
+
+               # The progression (3, 3, 6) is combined into one new pack.
+               test_line_count = 1 after
+       )
+'
+
+test_expect_success '--geometric with small-pack rollup' '
+       git init geometric &&
+       test_when_finished "rm -fr geometric" &&
+       (
+               cd geometric &&
+
+               test_commit_bulk --start=1 1 && # 3 objects
+               test_commit_bulk --start=2 1 && # 3 objects
+               find $objdir/pack -name "*.pack" | sort >small &&
+               test_commit_bulk --start=3 4 && # 12 objects
+               test_commit_bulk --start=7 8 && # 24 objects
+               find $objdir/pack -name "*.pack" | sort >before &&
+
+               git repack --geometric 2 -d &&
+
+               # Three packs in total; two of the existing large ones, and one
+               # new one.
+               find $objdir/pack -name "*.pack" | sort >after &&
+               test_line_count = 3 after &&
+               comm -3 small before | tr -d "\t" >large &&
+               grep -qFf large after
+       )
+'
+
+test_expect_success '--geometric with small- and large-pack rollup' '
+       git init geometric &&
+       test_when_finished "rm -fr geometric" &&
+       (
+               cd geometric &&
+
+               # size(small1) + size(small2) > size(medium) / 2
+               test_commit_bulk --start=1 1 && # 3 objects
+               test_commit_bulk --start=2 1 && # 3 objects
+               test_commit_bulk --start=2 3 && # 7 objects
+               test_commit_bulk --start=6 9 && # 27 objects &&
+
+               find $objdir/pack -name "*.pack" | sort >before &&
+
+               git repack --geometric 2 -d &&
+
+               find $objdir/pack -name "*.pack" | sort >after &&
+               comm -12 before after >untouched &&
+
+               # Two packs in total; the largest pack from before running "git
+               # repack", and one new one.
+               test_line_count = 1 untouched &&
+               test_line_count = 2 after
+       )
+'
+
+test_expect_success '--geometric ignores kept packs' '
+       git init geometric &&
+       test_when_finished "rm -fr geometric" &&
+       (
+               cd geometric &&
+
+               test_commit kept && # 3 objects
+               test_commit pack && # 3 objects
+
+               KEPT=$(git pack-objects --revs $objdir/pack/pack <<-EOF
+               refs/tags/kept
+               EOF
+               ) &&
+               PACK=$(git pack-objects --revs $objdir/pack/pack <<-EOF
+               refs/tags/pack
+               ^refs/tags/kept
+               EOF
+               ) &&
+
+               # neither pack contains more than twice the number of objects in
+               # the other, so they should be combined. but, marking one as
+               # .kept on disk will "freeze" it, so the pack structure should
+               # remain unchanged.
+               touch $objdir/pack/pack-$KEPT.keep &&
+
+               find $objdir/pack -name "*.pack" | sort >before &&
+               git repack --geometric 2 -d &&
+               find $objdir/pack -name "*.pack" | sort >after &&
+
+               # both packs should still exist
+               test_path_is_file $objdir/pack/pack-$KEPT.pack &&
+               test_path_is_file $objdir/pack/pack-$PACK.pack &&
+
+               # and no new packs should be created
+               test_cmp before after &&
+
+               # Passing --pack-kept-objects causes packs with a .keep file to
+               # be repacked, too.
+               git repack --geometric 2 -d --pack-kept-objects &&
+
+               find $objdir/pack -name "*.pack" >after &&
+               test_line_count = 1 after
+       )
+'
+
+test_done
index 9192c141ffc618f70e15b7cf25883d55469e5c11..3e041e83aede07ead62d54cc9a9b485b8eaeda0f 100755 (executable)
@@ -762,4 +762,36 @@ test_expect_success 'difftool --gui, --tool and --extcmd are mutually exclusive'
        test_must_fail git difftool --gui --tool=test-tool --extcmd=cat
 '
 
+test_expect_success 'difftool --rotate-to' '
+       difftool_test_setup &&
+       test_when_finished git reset --hard &&
+       echo 1 >1 &&
+       echo 2 >2 &&
+       echo 4 >4 &&
+       git add 1 2 4 &&
+       git commit -a -m "124" &&
+       git difftool --no-prompt --extcmd=cat --rotate-to="2" HEAD^ >output&&
+       cat >expect <<-\EOF &&
+       2
+       4
+       1
+       EOF
+       test_cmp output expect
+'
+
+test_expect_success 'difftool --skip-to' '
+       difftool_test_setup &&
+       test_when_finished git reset --hard &&
+       git difftool --no-prompt --extcmd=cat --skip-to="2" HEAD^ >output &&
+       cat >expect <<-\EOF &&
+       2
+       4
+       EOF
+       test_cmp output expect
+'
+
+test_expect_success 'difftool --rotate/skip-to error condition' '
+       test_must_fail git difftool --no-prompt --extcmd=cat --rotate-to="3" HEAD^ &&
+       test_must_fail git difftool --no-prompt --extcmd=cat --skip-to="3" HEAD^
+'
 test_done
index 8f7591c9ccdac33a46b8db0caa59030c670e8d79..5830733f3d25be77cc4318e76d9c30695d4adbd0 100755 (executable)
@@ -969,7 +969,8 @@ do
        "
 done
 
-test_expect_success !PTHREADS,C_LOCALE_OUTPUT 'grep --threads=N or pack.threads=N warns when no pthreads' '
+test_expect_success !PTHREADS,!FAIL_PREREQS \
+       'grep --threads=N or pack.threads=N warns when no pthreads' '
        git grep --threads=2 Hello hello_world 2>err &&
        grep ^warning: err >warnings &&
        test_line_count = 1 warnings &&
diff --git a/t/t7817-grep-sparse-checkout.sh b/t/t7817-grep-sparse-checkout.sh
new file mode 100755 (executable)
index 0000000..590b99b
--- /dev/null
@@ -0,0 +1,174 @@
+#!/bin/sh
+
+test_description='grep in sparse checkout
+
+This test creates a repo with the following structure:
+
+.
+|-- a
+|-- b
+|-- dir
+|   `-- c
+|-- sub
+|   |-- A
+|   |   `-- a
+|   `-- B
+|       `-- b
+`-- sub2
+    `-- a
+
+Where the outer repository has non-cone mode sparsity patterns, sub is a
+submodule with cone mode sparsity patterns and sub2 is a submodule that is
+excluded by the superproject sparsity patterns. The resulting sparse checkout
+should leave the following structure in the working tree:
+
+.
+|-- a
+|-- sub
+|   `-- B
+|       `-- b
+`-- sub2
+    `-- a
+
+But note that sub2 should have the SKIP_WORKTREE bit set.
+'
+
+. ./test-lib.sh
+
+test_expect_success 'setup' '
+       echo "text" >a &&
+       echo "text" >b &&
+       mkdir dir &&
+       echo "text" >dir/c &&
+
+       git init sub &&
+       (
+               cd sub &&
+               mkdir A B &&
+               echo "text" >A/a &&
+               echo "text" >B/b &&
+               git add A B &&
+               git commit -m sub &&
+               git sparse-checkout init --cone &&
+               git sparse-checkout set B
+       ) &&
+
+       git init sub2 &&
+       (
+               cd sub2 &&
+               echo "text" >a &&
+               git add a &&
+               git commit -m sub2
+       ) &&
+
+       git submodule add ./sub &&
+       git submodule add ./sub2 &&
+       git add a b dir &&
+       git commit -m super &&
+       git sparse-checkout init --no-cone &&
+       git sparse-checkout set "/*" "!b" "!/*/" "sub" &&
+
+       git tag -am tag-to-commit tag-to-commit HEAD &&
+       tree=$(git rev-parse HEAD^{tree}) &&
+       git tag -am tag-to-tree tag-to-tree $tree &&
+
+       test_path_is_missing b &&
+       test_path_is_missing dir &&
+       test_path_is_missing sub/A &&
+       test_path_is_file a &&
+       test_path_is_file sub/B/b &&
+       test_path_is_file sub2/a &&
+       git branch -m main
+'
+
+# The test below covers a special case: the sparsity patterns exclude '/b' and
+# sparse checkout is enabled, but the path exists in the working tree (e.g.
+# manually created after `git sparse-checkout init`). git grep should skip it.
+test_expect_success 'working tree grep honors sparse checkout' '
+       cat >expect <<-EOF &&
+       a:text
+       EOF
+       test_when_finished "rm -f b" &&
+       echo "new-text" >b &&
+       git grep "text" >actual &&
+       test_cmp expect actual
+'
+
+test_expect_success 'grep searches unmerged file despite not matching sparsity patterns' '
+       cat >expect <<-EOF &&
+       b:modified-b-in-branchX
+       b:modified-b-in-branchY
+       EOF
+       test_when_finished "test_might_fail git merge --abort && \
+                           git checkout main && git sparse-checkout init" &&
+
+       git sparse-checkout disable &&
+       git checkout -b branchY main &&
+       test_commit modified-b-in-branchY b &&
+       git checkout -b branchX main &&
+       test_commit modified-b-in-branchX b &&
+
+       git sparse-checkout init &&
+       test_path_is_missing b &&
+       test_must_fail git merge branchY &&
+       git grep "modified-b" >actual &&
+       test_cmp expect actual
+'
+
+test_expect_success 'grep --cached searches entries with the SKIP_WORKTREE bit' '
+       cat >expect <<-EOF &&
+       a:text
+       b:text
+       dir/c:text
+       EOF
+       git grep --cached "text" >actual &&
+       test_cmp expect actual
+'
+
+# Note that sub2/ is present in the worktree but it is excluded by the sparsity
+# patterns, so grep should not recurse into it.
+test_expect_success 'grep --recurse-submodules honors sparse checkout in submodule' '
+       cat >expect <<-EOF &&
+       a:text
+       sub/B/b:text
+       EOF
+       git grep --recurse-submodules "text" >actual &&
+       test_cmp expect actual
+'
+
+test_expect_success 'grep --recurse-submodules --cached searches entries with the SKIP_WORKTREE bit' '
+       cat >expect <<-EOF &&
+       a:text
+       b:text
+       dir/c:text
+       sub/A/a:text
+       sub/B/b:text
+       sub2/a:text
+       EOF
+       git grep --recurse-submodules --cached "text" >actual &&
+       test_cmp expect actual
+'
+
+test_expect_success 'working tree grep does not search the index with CE_VALID and SKIP_WORKTREE' '
+       cat >expect <<-EOF &&
+       a:text
+       EOF
+       test_when_finished "git update-index --no-assume-unchanged b" &&
+       git update-index --assume-unchanged b &&
+       git grep text >actual &&
+       test_cmp expect actual
+'
+
+test_expect_success 'grep --cached searches index entries with both CE_VALID and SKIP_WORKTREE' '
+       cat >expect <<-EOF &&
+       a:text
+       b:text
+       dir/c:text
+       EOF
+       test_when_finished "git update-index --no-assume-unchanged b" &&
+       git update-index --assume-unchanged b &&
+       git grep --cached text >actual &&
+       test_cmp expect actual
+'
+
+test_done
index 78ccf4b33f87c98d8b795ea7e31b6c29fc8837fb..2412d8c5c006992f3b895debfa0b6cfcf55d3c9b 100755 (executable)
@@ -343,6 +343,18 @@ test_expect_success 'maintenance.incremental-repack.auto' '
        test_subcommand git multi-pack-index write --no-progress <trace-B
 '
 
+test_expect_success 'pack-refs task' '
+       for n in $(test_seq 1 5)
+       do
+               git branch -f to-pack/$n HEAD || return 1
+       done &&
+       GIT_TRACE2_EVENT="$(pwd)/pack-refs.txt" \
+               git maintenance run --task=pack-refs &&
+       ls .git/refs/heads/ >after &&
+       test_must_be_empty after &&
+       test_subcommand git pack-refs --all --prune <pack-refs.txt
+'
+
 test_expect_success '--auto and --schedule incompatible' '
        test_must_fail git maintenance run --auto --schedule=daily 2>err &&
        test_i18ngrep "at most one" err
@@ -396,18 +408,32 @@ test_expect_success 'maintenance.strategy inheritance' '
                git maintenance run --schedule=hourly --quiet &&
        GIT_TRACE2_EVENT="$(pwd)/incremental-daily.txt" \
                git maintenance run --schedule=daily --quiet &&
+       GIT_TRACE2_EVENT="$(pwd)/incremental-weekly.txt" \
+               git maintenance run --schedule=weekly --quiet &&
 
        test_subcommand git commit-graph write --split --reachable \
                --no-progress <incremental-hourly.txt &&
        test_subcommand ! git prune-packed --quiet <incremental-hourly.txt &&
        test_subcommand ! git multi-pack-index write --no-progress \
                <incremental-hourly.txt &&
+       test_subcommand ! git pack-refs --all --prune \
+               <incremental-hourly.txt &&
 
        test_subcommand git commit-graph write --split --reachable \
                --no-progress <incremental-daily.txt &&
        test_subcommand git prune-packed --quiet <incremental-daily.txt &&
        test_subcommand git multi-pack-index write --no-progress \
                <incremental-daily.txt &&
+       test_subcommand ! git pack-refs --all --prune \
+               <incremental-daily.txt &&
+
+       test_subcommand git commit-graph write --split --reachable \
+               --no-progress <incremental-weekly.txt &&
+       test_subcommand git prune-packed --quiet <incremental-weekly.txt &&
+       test_subcommand git multi-pack-index write --no-progress \
+               <incremental-weekly.txt &&
+       test_subcommand git pack-refs --all --prune \
+               <incremental-weekly.txt &&
 
        # Modify defaults
        git config maintenance.commit-graph.schedule daily &&
@@ -606,4 +632,17 @@ test_expect_success 'fails when running outside of a repository' '
        nongit test_must_fail git maintenance unregister
 '
 
+test_expect_success 'register and unregister bare repo' '
+       test_when_finished "git config --global --unset-all maintenance.repo || :" &&
+       test_might_fail git config --global --unset-all maintenance.repo &&
+       git init --bare barerepo &&
+       (
+               cd barerepo &&
+               git maintenance register &&
+               git config --get --global --fixed-value maintenance.repo "$(pwd)" &&
+               git maintenance unregister &&
+               test_must_fail git config --global --get-all maintenance.repo
+       )
+'
+
 test_done
index 4eee9c3dcb5383b2d709c6f7aac1e1416322426f..1a1caf8f2ed49c6dd792f81090a5315909c5c0ab 100755 (executable)
@@ -513,6 +513,38 @@ do
 
 done
 
+test_expect_success $PREREQ "--validate respects relative core.hooksPath path" '
+       clean_fake_sendmail &&
+       mkdir my-hooks &&
+       test_when_finished "rm my-hooks.ran" &&
+       write_script my-hooks/sendemail-validate <<-\EOF &&
+       >my-hooks.ran
+       exit 1
+       EOF
+       test_config core.hooksPath "my-hooks" &&
+       test_must_fail git send-email \
+               --from="Example <nobody@example.com>" \
+               --to=nobody@example.com \
+               --smtp-server="$(pwd)/fake.sendmail" \
+               --validate \
+               longline.patch 2>err &&
+       test_path_is_file my-hooks.ran &&
+       grep "rejected by sendemail-validate" err
+'
+
+test_expect_success $PREREQ "--validate respects absolute core.hooksPath path" '
+       test_config core.hooksPath "$(pwd)/my-hooks" &&
+       test_when_finished "rm my-hooks.ran" &&
+       test_must_fail git send-email \
+               --from="Example <nobody@example.com>" \
+               --to=nobody@example.com \
+               --smtp-server="$(pwd)/fake.sendmail" \
+               --validate \
+               longline.patch 2>err &&
+       test_path_is_file my-hooks.ran &&
+       grep "rejected by sendemail-validate" err
+'
+
 for enc in 7bit 8bit quoted-printable base64
 do
        test_expect_success $PREREQ "--transfer-encoding=$enc produces correct header" '
index 03cd5c5423627fa7c5162fb84ad41cdb1960a645..f00deaf3815f3b49c42da4021335e011bbcb3c32 100755 (executable)
@@ -56,11 +56,8 @@ test_expect_success 'autocorrect can be declined altogether' '
        git config help.autocorrect never &&
 
        test_must_fail git lfg 2>actual &&
-       if test_have_prereq C_LOCALE_OUTPUT
-       then
-               grep "is not a git command" actual &&
-               test_line_count = 1 actual
-       fi
+       grep "is not a git command" actual &&
+       test_line_count = 1 actual
 '
 
 test_done
index 696ace2462559eb8bfa336db762923c449914db2..1fbe84feb1689cc413725f49189bcdd7f1379139 100755 (executable)
@@ -12,49 +12,46 @@ export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
 
 test_expect_success 'load svn dump' "
        svnadmin load -q '$rawsvnrepo' \
-         < '$TEST_DIRECTORY/t9151/svn-mergeinfo.dump' &&
+         <'$TEST_DIRECTORY/t9151/svn-mergeinfo.dump' &&
        git svn init --minimize-url -R svnmerge \
          --rewrite-root=http://svn.example.org \
          -T trunk -b branches '$svnrepo' &&
        git svn fetch --all
-       "
+"
 
 test_expect_success 'all svn merges became git merge commits' '
-       unmarked=$(git rev-list --parents --all --grep=Merge |
-               grep -v " .* " | cut -f1 -d" ") &&
-       [ -z "$unmarked" ]
-       '
+       git rev-list --all --no-merges --grep=Merge >unmarked &&
+       test_must_be_empty unmarked
+'
 
 test_expect_success 'cherry picks did not become git merge commits' '
-       bad_cherries=$(git rev-list --parents --all --grep=Cherry |
-               grep " .* " | cut -f1 -d" ") &&
-       [ -z "$bad_cherries" ]
-       '
+       git rev-list --all --merges --grep=Cherry >bad-cherries &&
+       test_must_be_empty bad-cherries
+'
 
 test_expect_success 'svn non-merge merge commits did not become git merge commits' '
-       bad_non_merges=$(git rev-list --parents --all --grep=non-merge |
-               grep " .* " | cut -f1 -d" ") &&
-       [ -z "$bad_non_merges" ]
-       '
+       git rev-list --all --merges --grep=non-merge >bad-non-merges &&
+       test_must_be_empty bad-non-merges
+'
 
 test_expect_success 'commit made to merged branch is reachable from the merge' '
        before_commit=$(git rev-list --all --grep="trunk commit before merging trunk to b2") &&
        merge_commit=$(git rev-list --all --grep="Merge trunk to b2") &&
-       not_reachable=$(git rev-list -1 $before_commit --not $merge_commit) &&
-       [ -z "$not_reachable" ]
-       '
+       git rev-list -1 $before_commit --not $merge_commit >not-reachable &&
+       test_must_be_empty not-reachable
+'
 
 test_expect_success 'merging two branches in one commit is detected correctly' '
        f1_commit=$(git rev-list --all --grep="make f1 branch from trunk") &&
        f2_commit=$(git rev-list --all --grep="make f2 branch from trunk") &&
        merge_commit=$(git rev-list --all --grep="Merge f1 and f2 to trunk") &&
-       not_reachable=$(git rev-list -1 $f1_commit $f2_commit --not $merge_commit) &&
-       [ -z "$not_reachable" ]
-       '
+       git rev-list -1 $f1_commit $f2_commit --not $merge_commit >not-reachable &&
+       test_must_be_empty not-reachable
+'
 
 test_expect_failure 'everything got merged in the end' '
-       unmerged=$(git rev-list --all --not main) &&
-       [ -z "$unmerged" ]
-       '
+       git rev-list --all --not main >unmerged &&
+       test_must_be_empty unmerged
+'
 
 test_done
index 3d17e932a0e3fa9958146546e0aa325b7122600f..5c47ac4465cb554fbfc9bf48e674f41f5e0ac041 100755 (executable)
@@ -8,7 +8,7 @@ GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
 export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
 
 . ./test-lib.sh
-. "$TEST_DIRECTORY"/diff-lib.sh ;# test-lib chdir's into trash
+. "$TEST_DIRECTORY"/lib-diff.sh ;# test-lib chdir's into trash
 
 verify_packs () {
        for p in .git/objects/pack/*.pack
@@ -1632,7 +1632,10 @@ test_expect_success 'O: blank lines not necessary after other commands' '
        INPUT_END
 
        git fast-import <input &&
-       test 8 = $(find .git/objects/pack -type f | grep -v multi-pack-index | wc -l) &&
+       ls -la .git/objects/pack/pack-*.pack >packlist &&
+       ls -la .git/objects/pack/pack-*.pack >idxlist &&
+       test_line_count = 4 idxlist &&
+       test_line_count = 4 packlist &&
        test $(git rev-parse refs/tags/O3-2nd) = $(git rev-parse O3^) &&
        git log --reverse --pretty=oneline O3 | sed s/^.*z// >actual &&
        test_cmp expect actual
index ee8c6e30e67f5b969bd32889f3f57a1e11771e90..0333065d4d60a0113cb5ac1de391a4a997d2eaa8 100755 (executable)
@@ -13,7 +13,7 @@ or warnings to log.'
 GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
 export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
 
-. ./gitweb-lib.sh
+. ./lib-gitweb.sh
 
 # ----------------------------------------------------------------------
 # no commits (empty, just initialized repository)
index 141610de5464882eb660133d80ceb65df7323b17..32814e75df5b0d796b292c2ac39d370c636e5e67 100755 (executable)
@@ -13,7 +13,7 @@ code and message.'
 GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
 export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
 
-. ./gitweb-lib.sh
+. ./lib-gitweb.sh
 
 #
 # Gitweb only provides the functionality tested by the 'modification times'
index 9cf7ab30a8d8f824088a02ddd646fb7a6a881378..3167473b3031c66555883745d296a881593b8272 100755 (executable)
@@ -13,7 +13,7 @@ in the HTTP header or the actual script output.'
 GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
 export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
 
-. ./gitweb-lib.sh
+. ./lib-gitweb.sh
 
 # ----------------------------------------------------------------------
 # snapshot file name and prefix
index 56e64697a804932b1e1dcdfaa9a95239f4fd6fa9..ff94c3f17df1aa4ec201a8f8f5cf2056f96851cf 100755 (executable)
@@ -203,19 +203,19 @@ test_expect_success 'git p4 clone simple branches' '
                git p4 clone --dest=. --detect-branches //depot@all &&
                git log --all --graph --decorate --stat &&
                git reset --hard p4/depot/branch1 &&
-               test -f file1 &&
-               test -f file2 &&
-               test -f file3 &&
+               test_path_is_file file1 &&
+               test_path_is_file file2 &&
+               test_path_is_file file3 &&
                grep update file2 &&
                git reset --hard p4/depot/branch2 &&
-               test -f file1 &&
-               test -f file2 &&
+               test_path_is_file file1 &&
+               test_path_is_file file2 &&
                test ! -f file3 &&
                ! grep update file2 &&
                git reset --hard p4/depot/branch3 &&
-               test -f file1 &&
-               test -f file2 &&
-               test -f file3 &&
+               test_path_is_file file1 &&
+               test_path_is_file file2 &&
+               test_path_is_file file3 &&
                grep update file2 &&
                cd "$cli" &&
                cd branch1 &&
@@ -606,22 +606,22 @@ test_expect_success 'git p4 clone simple branches with base folder on server sid
                git p4 clone --dest=. --use-client-spec  --detect-branches //depot@all &&
                git log --all --graph --decorate --stat &&
                git reset --hard p4/depot/branch1 &&
-               test -f file1 &&
-               test -f file2 &&
-               test -f file3 &&
-               test -f sub_file1 &&
+               test_path_is_file file1 &&
+               test_path_is_file file2 &&
+               test_path_is_file file3 &&
+               test_path_is_file sub_file1 &&
                grep update file2 &&
                git reset --hard p4/depot/branch2 &&
-               test -f file1 &&
-               test -f file2 &&
+               test_path_is_file file1 &&
+               test_path_is_file file2 &&
                test ! -f file3 &&
-               test -f sub_file1 &&
+               test_path_is_file sub_file1 &&
                ! grep update file2 &&
                git reset --hard p4/depot/branch3 &&
-               test -f file1 &&
-               test -f file2 &&
-               test -f file3 &&
-               test -f sub_file1 &&
+               test_path_is_file file1 &&
+               test_path_is_file file2 &&
+               test_path_is_file file3 &&
+               test_path_is_file sub_file1 &&
                grep update file2 &&
                cd "$cli" &&
                cd branch1 &&
index 07976af81c81120af0c1aaf9e39f6c3b0f33a2bf..6348e8d7339cda585d9bd20ca867d6638e706364 100644 (file)
@@ -32,11 +32,6 @@ test_set_editor () {
        export EDITOR
 }
 
-test_set_index_version () {
-    GIT_INDEX_VERSION="$1"
-    export GIT_INDEX_VERSION
-}
-
 test_decode_color () {
        awk '
                function name(n) {
@@ -116,13 +111,6 @@ remove_cr () {
        tr '\015' Q | sed -e 's/Q$//'
 }
 
-# Generate an output of $1 bytes of all zeroes (NULs, not ASCII zeroes).
-# If $1 is 'infinity', output forever or until the receiving pipe stops reading,
-# whichever comes first.
-generate_zero_bytes () {
-       test-tool genzeros "$@"
-}
-
 # In some bourne shell implementations, the "unset" builtin returns
 # nonzero status when a variable to be unset was not set in the first
 # place.
@@ -202,6 +190,7 @@ test_commit () {
        author= &&
        signoff= &&
        indir= &&
+       no_tag= &&
        while test $# != 0
        do
                case "$1" in
@@ -218,10 +207,19 @@ test_commit () {
                --signoff)
                        signoff="$1"
                        ;;
+               --date)
+                       notick=yes
+                       GIT_COMMITTER_DATE="$2"
+                       GIT_AUTHOR_DATE="$2"
+                       shift
+                       ;;
                -C)
                        indir="$2"
                        shift
                        ;;
+               --no-tag)
+                       no_tag=yes
+                       ;;
                *)
                        break
                        ;;
@@ -244,7 +242,10 @@ test_commit () {
        git ${indir:+ -C "$indir"} commit \
            ${author:+ --author "$author"} \
            $signoff -m "$1" &&
-       git ${indir:+ -C "$indir"} tag "${4:-$1}"
+       if test -z "$no_tag"
+       then
+               git ${indir:+ -C "$indir"} tag "${4:-$1}"
+       fi
 }
 
 # Call test_merge with the arguments "<message> <commit>", where <commit>
@@ -729,34 +730,37 @@ test_external_without_stderr () {
 }
 
 # debugging-friendly alternatives to "test [-f|-d|-e]"
-# The commands test the existence or non-existence of $1. $2 can be
-# given to provide a more precise diagnosis.
+# The commands test the existence or non-existence of $1
 test_path_is_file () {
+       test "$#" -ne 1 && BUG "1 param"
        if ! test -f "$1"
        then
-               echo "File $1 doesn't exist. $2"
+               echo "File $1 doesn't exist"
                false
        fi
 }
 
 test_path_is_dir () {
+       test "$#" -ne 1 && BUG "1 param"
        if ! test -d "$1"
        then
-               echo "Directory $1 doesn't exist. $2"
+               echo "Directory $1 doesn't exist"
                false
        fi
 }
 
 test_path_exists () {
+       test "$#" -ne 1 && BUG "1 param"
        if ! test -e "$1"
        then
-               echo "Path $1 doesn't exist. $2"
+               echo "Path $1 doesn't exist"
                false
        fi
 }
 
 # Check if the directory exists and is empty as expected, barf otherwise.
 test_dir_is_empty () {
+       test "$#" -ne 1 && BUG "1 param"
        test_path_is_dir "$1" &&
        if test -n "$(ls -a1 "$1" | egrep -v '^\.\.?$')"
        then
@@ -768,6 +772,7 @@ test_dir_is_empty () {
 
 # Check if the file exists and has a size greater than zero
 test_file_not_empty () {
+       test "$#" = 2 && BUG "2 param"
        if ! test -s "$1"
        then
                echo "'$1' is not a non-empty file."
@@ -776,6 +781,7 @@ test_file_not_empty () {
 }
 
 test_path_is_missing () {
+       test "$#" -ne 1 && BUG "1 param"
        if test -e "$1"
        then
                echo "Path exists:"
@@ -812,6 +818,7 @@ test_line_count () {
 }
 
 test_file_size () {
+       test "$#" -ne 1 && BUG "1 param"
        test-tool path-utils file-size "$1"
 }
 
@@ -984,6 +991,7 @@ test_expect_code () {
 # - not all diff versions understand "-u"
 
 test_cmp () {
+       test "$#" -ne 2 && BUG "2 param"
        eval "$GIT_TEST_CMP" '"$@"'
 }
 
@@ -1013,6 +1021,7 @@ test_cmp_config () {
 # test_cmp_bin - helper to compare binary files
 
 test_cmp_bin () {
+       test "$#" -ne 2 && BUG "2 param"
        cmp "$@"
 }
 
@@ -1073,6 +1082,7 @@ verbose () {
 # otherwise.
 
 test_must_be_empty () {
+       test "$#" -ne 1 && BUG "1 param"
        test_path_is_file "$1" &&
        if test -s "$1"
        then
@@ -1096,7 +1106,7 @@ test_cmp_rev () {
        fi
        if test $# != 2
        then
-               error "bug in the test script: test_cmp_rev requires two revisions, but got $#"
+               BUG "test_cmp_rev requires two revisions, but got $#"
        else
                local r1 r2
                r1=$(git rev-parse --verify "$1") &&
@@ -1207,7 +1217,7 @@ test_atexit () {
        # doing so on Bash is better than nothing (the test will
        # silently pass on other shells).
        test "${BASH_SUBSHELL-0}" = 0 ||
-       error "bug in test script: test_atexit does nothing in a subshell"
+       BUG "test_atexit does nothing in a subshell"
        test_atexit_cleanup="{ $*
                } && (exit \"\$eval_ret\"); eval_ret=\$?; $test_atexit_cleanup"
 }
@@ -1605,33 +1615,6 @@ test_set_port () {
        eval $var=$port
 }
 
-# Compare a file containing rev-list bitmap traversal output to its non-bitmap
-# counterpart. You can't just use test_cmp for this, because the two produce
-# subtly different output:
-#
-#   - regular output is in traversal order, whereas bitmap is split by type,
-#     with non-packed objects at the end
-#
-#   - regular output has a space and the pathname appended to non-commit
-#     objects; bitmap output omits this
-#
-# This function normalizes and compares the two. The second file should
-# always be the bitmap output.
-test_bitmap_traversal () {
-       if test "$1" = "--no-confirm-bitmaps"
-       then
-               shift
-       elif cmp "$1" "$2"
-       then
-               echo >&2 "identical raw outputs; are you sure bitmaps were used?"
-               return 1
-       fi &&
-       cut -d' ' -f1 "$1" | sort >"$1.normalized" &&
-       sort "$2" >"$2.normalized" &&
-       test_cmp "$1.normalized" "$2.normalized" &&
-       rm -f "$1.normalized" "$2.normalized"
-}
-
 # Tests for the hidden file attribute on Windows
 test_path_is_hidden () {
        test_have_prereq MINGW ||
index 431adba0fb3f8eafbf28795c15b8a8c941b51f9e..d3f6af6a65451cdd7868e5dc355b44fed49a0670 100644 (file)
@@ -453,36 +453,6 @@ export GIT_DEFAULT_HASH
 GIT_TRACE_BARE=1
 export GIT_TRACE_BARE
 
-check_var_migration () {
-       # the warnings and hints given from this helper depends
-       # on end-user settings, which will disrupt the self-test
-       # done on the test framework itself.
-       case "$GIT_TEST_FRAMEWORK_SELFTEST" in
-       t)      return ;;
-       esac
-
-       old_name=$1 new_name=$2
-       eval "old_isset=\${${old_name}:+isset}"
-       eval "new_isset=\${${new_name}:+isset}"
-
-       case "$old_isset,$new_isset" in
-       isset,)
-               echo >&2 "warning: $old_name is now $new_name"
-               echo >&2 "hint: set $new_name too during the transition period"
-               eval "$new_name=\$$old_name"
-               ;;
-       isset,isset)
-               # do this later
-               # echo >&2 "warning: $old_name is now $new_name"
-               # echo >&2 "hint: remove $old_name"
-               ;;
-       esac
-}
-
-check_var_migration GIT_FSMONITOR_TEST GIT_TEST_FSMONITOR
-check_var_migration TEST_GIT_INDEX_VERSION GIT_TEST_INDEX_VERSION
-check_var_migration GIT_FORCE_PRELOAD_TEST GIT_TEST_PRELOAD_INDEX
-
 # Use specific version of the index file format
 if test -n "${GIT_TEST_INDEX_VERSION:+isset}"
 then
@@ -1519,11 +1489,6 @@ test -n "$USE_LIBPCRE2" && test_set_prereq PCRE
 test -n "$USE_LIBPCRE2" && test_set_prereq LIBPCRE2
 test -z "$NO_GETTEXT" && test_set_prereq GETTEXT
 
-# Used to be used for GIT_TEST_GETTEXT_POISON=false. Only here as a
-# shim for other in-flight changes. Should not be used and will be
-# removed soon.
-test_set_prereq C_LOCALE_OUTPUT
-
 if test -z "$GIT_TEST_CHECK_CACHE_TREE"
 then
        GIT_TEST_CHECK_CACHE_TREE=true
diff --git a/tag.c b/tag.c
index 1ed2684e45bd50d051ade60cc6b66c8c44fbed59..3e18a41841485e8138d7ccaf36e24cc99e5d81cd 100644 (file)
--- a/tag.c
+++ b/tag.c
@@ -13,26 +13,27 @@ const char *tag_type = "tag";
 static int run_gpg_verify(const char *buf, unsigned long size, unsigned flags)
 {
        struct signature_check sigc;
-       size_t payload_size;
+       struct strbuf payload = STRBUF_INIT;
+       struct strbuf signature = STRBUF_INIT;
        int ret;
 
        memset(&sigc, 0, sizeof(sigc));
 
-       payload_size = parse_signature(buf, size);
-
-       if (size == payload_size) {
+       if (!parse_signature(buf, size, &payload, &signature)) {
                if (flags & GPG_VERIFY_VERBOSE)
-                       write_in_full(1, buf, payload_size);
+                       write_in_full(1, buf, size);
                return error("no signature found");
        }
 
-       ret = check_signature(buf, payload_size, buf + payload_size,
-                               size - payload_size, &sigc);
+       ret = check_signature(payload.buf, payload.len, signature.buf,
+                               signature.len, &sigc);
 
        if (!(flags & GPG_VERIFY_OMIT_STATUS))
                print_signature_buffer(&sigc, flags);
 
        signature_check_clear(&sigc);
+       strbuf_release(&payload);
+       strbuf_release(&signature);
        return ret;
 }
 
index 42ed4db5d3a54e1dbb2bd2fb56481da28411ca1f..b8d880e3626a9cdbc818cf69bda67fcd256194b1 100644 (file)
@@ -185,9 +185,11 @@ static int pack_copy_priority(const char *name)
                return 1;
        if (ends_with(name, ".pack"))
                return 2;
-       if (ends_with(name, ".idx"))
+       if (ends_with(name, ".rev"))
                return 3;
-       return 4;
+       if (ends_with(name, ".idx"))
+               return 4;
+       return 5;
 }
 
 static int pack_copy_cmp(const char *a, const char *b)
index 249ed618ed8e26c966c6d9815db0645c994ae4f5..be4e9726421cc81d049e5eec2c557ac896965f7f 100644 (file)
--- a/trailer.c
+++ b/trailer.c
@@ -174,7 +174,7 @@ static void print_all(FILE *outfile, struct list_head *head,
 
 static struct trailer_item *trailer_from_arg(struct arg_item *arg_tok)
 {
-       struct trailer_item *new_item = xcalloc(sizeof(*new_item), 1);
+       struct trailer_item *new_item = xcalloc(1, sizeof(*new_item));
        new_item->token = arg_tok->token;
        new_item->value = arg_tok->value;
        arg_tok->token = arg_tok->value = NULL;
@@ -445,7 +445,7 @@ static struct arg_item *get_conf_item(const char *name)
        }
 
        /* Item does not already exists, create it */
-       item = xcalloc(sizeof(*item), 1);
+       CALLOC_ARRAY(item, 1);
        duplicate_conf(&item->conf, &default_conf_info);
        item->conf.name = xstrdup(name);
 
@@ -664,7 +664,7 @@ static void parse_trailer(struct strbuf *tok, struct strbuf *val,
 static struct trailer_item *add_trailer_item(struct list_head *head, char *tok,
                                             char *val)
 {
-       struct trailer_item *new_item = xcalloc(sizeof(*new_item), 1);
+       struct trailer_item *new_item = xcalloc(1, sizeof(*new_item));
        new_item->token = tok;
        new_item->value = val;
        list_add_tail(&new_item->list, head);
@@ -675,7 +675,7 @@ static void add_arg_item(struct list_head *arg_head, char *tok, char *val,
                         const struct conf_info *conf,
                         const struct new_trailer_item *new_trailer_item)
 {
-       struct arg_item *new_item = xcalloc(sizeof(*new_item), 1);
+       struct arg_item *new_item = xcalloc(1, sizeof(*new_item));
        new_item->token = tok;
        new_item->value = val;
        duplicate_conf(&new_item->conf, conf);
index 5f6e0b3bd874dba714c107dffebd423ef25d10b4..4cd76366fa94b8e3bb8314685fe4ff4b4380127c 100644 (file)
@@ -745,13 +745,13 @@ static int push_update_ref_status(struct strbuf *buf,
                        die(_("'option' without a matching 'ok/error' directive"));
                if (state->new_report) {
                        if (!state->hint->report) {
-                               state->hint->report = xcalloc(1, sizeof(struct ref_push_report));
+                               CALLOC_ARRAY(state->hint->report, 1);
                                state->report = state->hint->report;
                        } else {
                                state->report = state->hint->report;
                                while (state->report->next)
                                        state->report = state->report->next;
-                               state->report->next = xcalloc(1, sizeof(struct ref_push_report));
+                               CALLOC_ARRAY(state->report->next, 1);
                                state->report = state->report->next;
                        }
                        state->new_report = 0;
@@ -1162,13 +1162,14 @@ static int has_attribute(const char *attrs, const char *attr)
 }
 
 static struct ref *get_refs_list(struct transport *transport, int for_push,
-                                const struct strvec *ref_prefixes)
+                                struct transport_ls_refs_options *transport_options)
 {
        get_helper(transport);
 
        if (process_connect(transport, for_push)) {
                do_take_over(transport);
-               return transport->vtable->get_refs_list(transport, for_push, ref_prefixes);
+               return transport->vtable->get_refs_list(transport, for_push,
+                                                       transport_options);
        }
 
        return get_refs_list_using_list(transport, for_push);
index 27c9daffc47ac95b2070006f570373c14cd4aa22..b60f1ba9077d09c5f0c3259fe5bc86c5facdbc78 100644 (file)
@@ -4,6 +4,7 @@
 struct ref;
 struct transport;
 struct strvec;
+struct transport_ls_refs_options;
 
 struct transport_vtable {
        /**
@@ -18,19 +19,12 @@ struct transport_vtable {
         * the transport to try to share connections, for_push is a
         * hint as to whether the ultimate operation is a push or a fetch.
         *
-        * If communicating using protocol v2 a list of prefixes can be
-        * provided to be sent to the server to enable it to limit the ref
-        * advertisement.  Since ref filtering is done on the server's end, and
-        * only when using protocol v2, this list will be ignored when not
-        * using protocol v2 meaning this function can return refs which don't
-        * match the provided ref_prefixes.
-        *
         * If the transport is able to determine the remote hash for
         * the ref without a huge amount of effort, it should store it
         * in the ref's old_sha1 field; otherwise it should be all 0.
         **/
        struct ref *(*get_refs_list)(struct transport *transport, int for_push,
-                                    const struct strvec *ref_prefixes);
+                                    struct transport_ls_refs_options *transport_options);
 
        /**
         * Fetch the objects for the given refs. Note that this gets
index 679a35e7c1b6168d3b8fc93f72ec9a50178d894c..ef66e73090a9886b044a6109084baf1e60dc2542 100644 (file)
@@ -127,7 +127,7 @@ struct bundle_transport_data {
 
 static struct ref *get_refs_from_bundle(struct transport *transport,
                                        int for_push,
-                                       const struct strvec *ref_prefixes)
+                                       struct transport_ls_refs_options *transport_options)
 {
        struct bundle_transport_data *data = transport->data;
        struct ref *result = NULL;
@@ -236,6 +236,9 @@ static int set_git_option(struct git_transport_options *opts,
                list_objects_filter_die_if_populated(&opts->filter_options);
                parse_list_objects_filter(&opts->filter_options, value);
                return 0;
+       } else if (!strcmp(name, TRANS_OPT_REJECT_SHALLOW)) {
+               opts->reject_shallow = !!value;
+               return 0;
        }
        return 1;
 }
@@ -280,7 +283,7 @@ static void die_if_server_options(struct transport *transport)
  * remote refs.
  */
 static struct ref *handshake(struct transport *transport, int for_push,
-                            const struct strvec *ref_prefixes,
+                            struct transport_ls_refs_options *options,
                             int must_list_refs)
 {
        struct git_transport_data *data = transport->data;
@@ -303,7 +306,7 @@ static struct ref *handshake(struct transport *transport, int for_push,
                        trace2_data_string("transfer", NULL, "server-sid", server_sid);
                if (must_list_refs)
                        get_remote_refs(data->fd[1], &reader, &refs, for_push,
-                                       ref_prefixes,
+                                       options,
                                        transport->server_options,
                                        transport->stateless_rpc);
                break;
@@ -334,9 +337,9 @@ static struct ref *handshake(struct transport *transport, int for_push,
 }
 
 static struct ref *get_refs_via_connect(struct transport *transport, int for_push,
-                                       const struct strvec *ref_prefixes)
+                                       struct transport_ls_refs_options *options)
 {
-       return handshake(transport, for_push, ref_prefixes, 1);
+       return handshake(transport, for_push, options, 1);
 }
 
 static int fetch_refs_via_pack(struct transport *transport,
@@ -370,6 +373,7 @@ static int fetch_refs_via_pack(struct transport *transport,
        args.stateless_rpc = transport->stateless_rpc;
        args.server_options = transport->server_options;
        args.negotiation_tips = data->options.negotiation_tips;
+       args.reject_shallow_remote = transport->smart_options->reject_shallow;
 
        if (!data->got_remote_heads) {
                int i;
@@ -871,7 +875,7 @@ void transport_take_over(struct transport *transport,
                BUG("taking over transport requires non-NULL "
                    "smart_options field.");
 
-       data = xcalloc(1, sizeof(*data));
+       CALLOC_ARRAY(data, 1);
        data->options = *transport->smart_options;
        data->conn = child;
        data->fd[0] = data->conn->out;
@@ -1252,19 +1256,20 @@ int transport_push(struct repository *r,
                int porcelain = flags & TRANSPORT_PUSH_PORCELAIN;
                int pretend = flags & TRANSPORT_PUSH_DRY_RUN;
                int push_ret, ret, err;
-               struct strvec ref_prefixes = STRVEC_INIT;
+               struct transport_ls_refs_options transport_options =
+                       TRANSPORT_LS_REFS_OPTIONS_INIT;
 
                if (check_push_refs(local_refs, rs) < 0)
                        return -1;
 
-               refspec_ref_prefixes(rs, &ref_prefixes);
+               refspec_ref_prefixes(rs, &transport_options.ref_prefixes);
 
                trace2_region_enter("transport_push", "get_refs_list", r);
                remote_refs = transport->vtable->get_refs_list(transport, 1,
-                                                              &ref_prefixes);
+                                                              &transport_options);
                trace2_region_leave("transport_push", "get_refs_list", r);
 
-               strvec_clear(&ref_prefixes);
+               strvec_clear(&transport_options.ref_prefixes);
 
                if (flags & TRANSPORT_PUSH_ALL)
                        match_flags |= MATCH_REFS_ALL;
@@ -1380,12 +1385,12 @@ int transport_push(struct repository *r,
 }
 
 const struct ref *transport_get_remote_refs(struct transport *transport,
-                                           const struct strvec *ref_prefixes)
+                                           struct transport_ls_refs_options *transport_options)
 {
        if (!transport->got_remote_refs) {
                transport->remote_refs =
                        transport->vtable->get_refs_list(transport, 0,
-                                                        ref_prefixes);
+                                                        transport_options);
                transport->got_remote_refs = 1;
        }
 
@@ -1451,6 +1456,8 @@ int transport_disconnect(struct transport *transport)
        int ret = 0;
        if (transport->vtable->disconnect)
                ret = transport->vtable->disconnect(transport);
+       if (transport->got_remote_refs)
+               free_refs((void *)transport->remote_refs);
        free(transport);
        return ret;
 }
index 24558c027d61bba1dd99b17a1c9d1cd484b1cb8a..4d5db0a7f22b366db870f9b421e41d1bba5a339c 100644 (file)
@@ -14,6 +14,7 @@ struct git_transport_options {
        unsigned check_self_contained_and_connected : 1;
        unsigned self_contained_and_connected : 1;
        unsigned update_shallow : 1;
+       unsigned reject_shallow : 1;
        unsigned deepen_relative : 1;
 
        /* see documentation of corresponding flag in fetch-pack.h */
@@ -194,6 +195,9 @@ void transport_check_allowed(const char *type);
 /* Aggressively fetch annotated tags if possible */
 #define TRANS_OPT_FOLLOWTAGS "followtags"
 
+/* Reject shallow repo transport */
+#define TRANS_OPT_REJECT_SHALLOW "rejectshallow"
+
 /* Accept refs that may update .git/shallow without --depth */
 #define TRANS_OPT_UPDATE_SHALLOW "updateshallow"
 
@@ -233,17 +237,32 @@ int transport_push(struct repository *repo,
                   struct refspec *rs, int flags,
                   unsigned int * reject_reasons);
 
+struct transport_ls_refs_options {
+       /*
+        * Optionally, a list of ref prefixes can be provided which can be sent
+        * to the server (when communicating using protocol v2) to enable it to
+        * limit the ref advertisement.  Since ref filtering is done on the
+        * server's end (and only when using protocol v2),
+        * transport_get_remote_refs() could return refs which don't match the
+        * provided ref_prefixes.
+        */
+       struct strvec ref_prefixes;
+
+       /*
+        * If unborn_head_target is not NULL, and the remote reports HEAD as
+        * pointing to an unborn branch, transport_get_remote_refs() stores the
+        * unborn branch in unborn_head_target. It should be freed by the
+        * caller.
+        */
+       char *unborn_head_target;
+};
+#define TRANSPORT_LS_REFS_OPTIONS_INIT { STRVEC_INIT }
+
 /*
  * Retrieve refs from a remote.
- *
- * Optionally a list of ref prefixes can be provided which can be sent to the
- * server (when communicating using protocol v2) to enable it to limit the ref
- * advertisement.  Since ref filtering is done on the server's end (and only
- * when using protocol v2), this can return refs which don't match the provided
- * ref_prefixes.
  */
 const struct ref *transport_get_remote_refs(struct transport *transport,
-                                           const struct strvec *ref_prefixes);
+                                           struct transport_ls_refs_options *transport_options);
 
 /*
  * Fetch the hash algorithm used by a remote.
diff --git a/tree.c b/tree.c
index a52479812ce0c46ce972a56f0fa1d8bbb7c0b03b..410e3b477e557f55ad6843e1106567a3fd155557 100644 (file)
--- a/tree.c
+++ b/tree.c
 
 const char *tree_type = "tree";
 
-static int read_one_entry_opt(struct index_state *istate,
-                             const struct object_id *oid,
-                             const char *base, int baselen,
-                             const char *pathname,
-                             unsigned mode, int stage, int opt)
-{
-       int len;
-       struct cache_entry *ce;
-
-       if (S_ISDIR(mode))
-               return READ_TREE_RECURSIVE;
-
-       len = strlen(pathname);
-       ce = make_empty_cache_entry(istate, baselen + len);
-
-       ce->ce_mode = create_ce_mode(mode);
-       ce->ce_flags = create_ce_flags(stage);
-       ce->ce_namelen = baselen + len;
-       memcpy(ce->name, base, baselen);
-       memcpy(ce->name + baselen, pathname, len+1);
-       oidcpy(&ce->oid, oid);
-       return add_index_entry(istate, ce, opt);
-}
-
-static int read_one_entry(const struct object_id *oid, struct strbuf *base,
-                         const char *pathname, unsigned mode, int stage,
-                         void *context)
-{
-       struct index_state *istate = context;
-       return read_one_entry_opt(istate, oid, base->buf, base->len, pathname,
-                                 mode, stage,
-                                 ADD_CACHE_OK_TO_ADD|ADD_CACHE_SKIP_DFCHECK);
-}
-
-/*
- * This is used when the caller knows there is no existing entries at
- * the stage that will conflict with the entry being added.
- */
-static int read_one_entry_quick(const struct object_id *oid, struct strbuf *base,
-                               const char *pathname, unsigned mode, int stage,
-                               void *context)
-{
-       struct index_state *istate = context;
-       return read_one_entry_opt(istate, oid, base->buf, base->len, pathname,
-                                 mode, stage,
-                                 ADD_CACHE_JUST_APPEND);
-}
-
-static int read_tree_1(struct repository *r,
-                      struct tree *tree, struct strbuf *base,
-                      int stage, const struct pathspec *pathspec,
-                      read_tree_fn_t fn, void *context)
+int read_tree_at(struct repository *r,
+                struct tree *tree, struct strbuf *base,
+                const struct pathspec *pathspec,
+                read_tree_fn_t fn, void *context)
 {
        struct tree_desc desc;
        struct name_entry entry;
@@ -86,7 +38,7 @@ static int read_tree_1(struct repository *r,
                }
 
                switch (fn(&entry.oid, base,
-                          entry.path, entry.mode, stage, context)) {
+                          entry.path, entry.mode, context)) {
                case 0:
                        continue;
                case READ_TREE_RECURSIVE:
@@ -119,9 +71,9 @@ static int read_tree_1(struct repository *r,
                len = tree_entry_len(&entry);
                strbuf_add(base, entry.path, len);
                strbuf_addch(base, '/');
-               retval = read_tree_1(r, lookup_tree(r, &oid),
-                                    base, stage, pathspec,
-                                    fn, context);
+               retval = read_tree_at(r, lookup_tree(r, &oid),
+                                     base, pathspec,
+                                     fn, context);
                strbuf_setlen(base, oldlen);
                if (retval)
                        return -1;
@@ -129,17 +81,13 @@ static int read_tree_1(struct repository *r,
        return 0;
 }
 
-int read_tree_recursive(struct repository *r,
-                       struct tree *tree,
-                       const char *base, int baselen,
-                       int stage, const struct pathspec *pathspec,
-                       read_tree_fn_t fn, void *context)
+int read_tree(struct repository *r,
+             struct tree *tree,
+             const struct pathspec *pathspec,
+             read_tree_fn_t fn, void *context)
 {
        struct strbuf sb = STRBUF_INIT;
-       int ret;
-
-       strbuf_add(&sb, base, baselen);
-       ret = read_tree_1(r, tree, &sb, stage, pathspec, fn, context);
+       int ret = read_tree_at(r, tree, &sb, pathspec, fn, context);
        strbuf_release(&sb);
        return ret;
 }
@@ -154,47 +102,6 @@ int cmp_cache_name_compare(const void *a_, const void *b_)
                                  ce2->name, ce2->ce_namelen, ce_stage(ce2));
 }
 
-int read_tree(struct repository *r, struct tree *tree, int stage,
-             struct pathspec *match, struct index_state *istate)
-{
-       read_tree_fn_t fn = NULL;
-       int i, err;
-
-       /*
-        * Currently the only existing callers of this function all
-        * call it with stage=1 and after making sure there is nothing
-        * at that stage; we could always use read_one_entry_quick().
-        *
-        * But when we decide to straighten out git-read-tree not to
-        * use unpack_trees() in some cases, this will probably start
-        * to matter.
-        */
-
-       /*
-        * See if we have cache entry at the stage.  If so,
-        * do it the original slow way, otherwise, append and then
-        * sort at the end.
-        */
-       for (i = 0; !fn && i < istate->cache_nr; i++) {
-               const struct cache_entry *ce = istate->cache[i];
-               if (ce_stage(ce) == stage)
-                       fn = read_one_entry;
-       }
-
-       if (!fn)
-               fn = read_one_entry_quick;
-       err = read_tree_recursive(r, tree, "", 0, stage, match, fn, istate);
-       if (fn == read_one_entry || err)
-               return err;
-
-       /*
-        * Sort the cache entry -- we need to nuke the cache tree, though.
-        */
-       cache_tree_free(&istate->cache_tree);
-       QSORT(istate->cache, istate->cache_nr, cmp_cache_name_compare);
-       return 0;
-}
-
 struct tree *lookup_tree(struct repository *r, const struct object_id *oid)
 {
        struct object *obj = lookup_object(r, oid);
diff --git a/tree.h b/tree.h
index 3eb0484cbf2a7523d15c2102d138f1622aaecd1a..6efff003e2120e3cc5a82cda5bde904bfefa786d 100644 (file)
--- a/tree.h
+++ b/tree.h
@@ -31,16 +31,16 @@ struct tree *parse_tree_indirect(const struct object_id *oid);
 int cmp_cache_name_compare(const void *a_, const void *b_);
 
 #define READ_TREE_RECURSIVE 1
-typedef int (*read_tree_fn_t)(const struct object_id *, struct strbuf *, const char *, unsigned int, int, void *);
+typedef int (*read_tree_fn_t)(const struct object_id *, struct strbuf *, const char *, unsigned int, void *);
 
-int read_tree_recursive(struct repository *r,
-                       struct tree *tree,
-                       const char *base, int baselen,
-                       int stage, const struct pathspec *pathspec,
-                       read_tree_fn_t fn, void *context);
+int read_tree_at(struct repository *r,
+                struct tree *tree, struct strbuf *base,
+                const struct pathspec *pathspec,
+                read_tree_fn_t fn, void *context);
 
-int read_tree(struct repository *r, struct tree *tree,
-             int stage, struct pathspec *pathspec,
-             struct index_state *istate);
+int read_tree(struct repository *r,
+             struct tree *tree,
+             const struct pathspec *pathspec,
+             read_tree_fn_t fn, void *context);
 
 #endif /* TREE_H */
index 19ed48be9902f321285bfbec3feaf8357fd5e9b9..e0be1badb58dee8af8e28c4a4486bf0fdba18a9c 100644 (file)
@@ -1,13 +1,7 @@
 #include "cache.h"
 #include "unix-socket.h"
 
-static int unix_stream_socket(void)
-{
-       int fd = socket(AF_UNIX, SOCK_STREAM, 0);
-       if (fd < 0)
-               die_errno("unable to create socket");
-       return fd;
-}
+#define DEFAULT_UNIX_STREAM_LISTEN_BACKLOG (5)
 
 static int chdir_len(const char *orig, int len)
 {
@@ -36,16 +30,23 @@ static void unix_sockaddr_cleanup(struct unix_sockaddr_context *ctx)
 }
 
 static int unix_sockaddr_init(struct sockaddr_un *sa, const char *path,
-                             struct unix_sockaddr_context *ctx)
+                             struct unix_sockaddr_context *ctx,
+                             int disallow_chdir)
 {
        int size = strlen(path) + 1;
 
        ctx->orig_dir = NULL;
        if (size > sizeof(sa->sun_path)) {
-               const char *slash = find_last_dir_sep(path);
+               const char *slash;
                const char *dir;
                struct strbuf cwd = STRBUF_INIT;
 
+               if (disallow_chdir) {
+                       errno = ENAMETOOLONG;
+                       return -1;
+               }
+
+               slash = find_last_dir_sep(path);
                if (!slash) {
                        errno = ENAMETOOLONG;
                        return -1;
@@ -71,15 +72,18 @@ static int unix_sockaddr_init(struct sockaddr_un *sa, const char *path,
        return 0;
 }
 
-int unix_stream_connect(const char *path)
+int unix_stream_connect(const char *path, int disallow_chdir)
 {
-       int fd, saved_errno;
+       int fd = -1, saved_errno;
        struct sockaddr_un sa;
        struct unix_sockaddr_context ctx;
 
-       if (unix_sockaddr_init(&sa, path, &ctx) < 0)
+       if (unix_sockaddr_init(&sa, path, &ctx, disallow_chdir) < 0)
                return -1;
-       fd = unix_stream_socket();
+       fd = socket(AF_UNIX, SOCK_STREAM, 0);
+       if (fd < 0)
+               goto fail;
+
        if (connect(fd, (struct sockaddr *)&sa, sizeof(sa)) < 0)
                goto fail;
        unix_sockaddr_cleanup(&ctx);
@@ -87,28 +91,36 @@ int unix_stream_connect(const char *path)
 
 fail:
        saved_errno = errno;
+       if (fd != -1)
+               close(fd);
        unix_sockaddr_cleanup(&ctx);
-       close(fd);
        errno = saved_errno;
        return -1;
 }
 
-int unix_stream_listen(const char *path)
+int unix_stream_listen(const char *path,
+                      const struct unix_stream_listen_opts *opts)
 {
-       int fd, saved_errno;
+       int fd = -1, saved_errno;
+       int backlog;
        struct sockaddr_un sa;
        struct unix_sockaddr_context ctx;
 
        unlink(path);
 
-       if (unix_sockaddr_init(&sa, path, &ctx) < 0)
+       if (unix_sockaddr_init(&sa, path, &ctx, opts->disallow_chdir) < 0)
                return -1;
-       fd = unix_stream_socket();
+       fd = socket(AF_UNIX, SOCK_STREAM, 0);
+       if (fd < 0)
+               goto fail;
 
        if (bind(fd, (struct sockaddr *)&sa, sizeof(sa)) < 0)
                goto fail;
 
-       if (listen(fd, 5) < 0)
+       backlog = opts->listen_backlog_size;
+       if (backlog <= 0)
+               backlog = DEFAULT_UNIX_STREAM_LISTEN_BACKLOG;
+       if (listen(fd, backlog) < 0)
                goto fail;
 
        unix_sockaddr_cleanup(&ctx);
@@ -116,8 +128,9 @@ int unix_stream_listen(const char *path)
 
 fail:
        saved_errno = errno;
+       if (fd != -1)
+               close(fd);
        unix_sockaddr_cleanup(&ctx);
-       close(fd);
        errno = saved_errno;
        return -1;
 }
index e271aeec5a07dc8b38b87345046e8eba642b16b1..8542cdd7995d7942a18bfa8b0ccb91e761dfd5a8 100644 (file)
@@ -1,7 +1,15 @@
 #ifndef UNIX_SOCKET_H
 #define UNIX_SOCKET_H
 
-int unix_stream_connect(const char *path);
-int unix_stream_listen(const char *path);
+struct unix_stream_listen_opts {
+       int listen_backlog_size;
+       unsigned int disallow_chdir:1;
+};
+
+#define UNIX_STREAM_LISTEN_OPTS_INIT { 0 }
+
+int unix_stream_connect(const char *path, int disallow_chdir);
+int unix_stream_listen(const char *path,
+                      const struct unix_stream_listen_opts *opts);
 
 #endif /* UNIX_SOCKET_H */
diff --git a/unix-stream-server.c b/unix-stream-server.c
new file mode 100644 (file)
index 0000000..efa2a20
--- /dev/null
@@ -0,0 +1,125 @@
+#include "cache.h"
+#include "lockfile.h"
+#include "unix-socket.h"
+#include "unix-stream-server.h"
+
+#define DEFAULT_LOCK_TIMEOUT (100)
+
+/*
+ * Try to connect to a unix domain socket at `path` (if it exists) and
+ * see if there is a server listening.
+ *
+ * We don't know if the socket exists, whether a server died and
+ * failed to cleanup, or whether we have a live server listening, so
+ * we "poke" it.
+ *
+ * We immediately hangup without sending/receiving any data because we
+ * don't know anything about the protocol spoken and don't want to
+ * block while writing/reading data.  It is sufficient to just know
+ * that someone is listening.
+ */
+static int is_another_server_alive(const char *path,
+                                  const struct unix_stream_listen_opts *opts)
+{
+       int fd = unix_stream_connect(path, opts->disallow_chdir);
+       if (fd >= 0) {
+               close(fd);
+               return 1;
+       }
+
+       return 0;
+}
+
+int unix_ss_create(const char *path,
+                  const struct unix_stream_listen_opts *opts,
+                  long timeout_ms,
+                  struct unix_ss_socket **new_server_socket)
+{
+       struct lock_file lock = LOCK_INIT;
+       int fd_socket;
+       struct unix_ss_socket *server_socket;
+
+       *new_server_socket = NULL;
+
+       if (timeout_ms < 0)
+               timeout_ms = DEFAULT_LOCK_TIMEOUT;
+
+       /*
+        * Create a lock at "<path>.lock" if we can.
+        */
+       if (hold_lock_file_for_update_timeout(&lock, path, 0, timeout_ms) < 0)
+               return -1;
+
+       /*
+        * If another server is listening on "<path>" give up.  We do not
+        * want to create a socket and steal future connections from them.
+        */
+       if (is_another_server_alive(path, opts)) {
+               rollback_lock_file(&lock);
+               errno = EADDRINUSE;
+               return -2;
+       }
+
+       /*
+        * Create and bind to a Unix domain socket at "<path>".
+        */
+       fd_socket = unix_stream_listen(path, opts);
+       if (fd_socket < 0) {
+               int saved_errno = errno;
+               rollback_lock_file(&lock);
+               errno = saved_errno;
+               return -1;
+       }
+
+       server_socket = xcalloc(1, sizeof(*server_socket));
+       server_socket->path_socket = strdup(path);
+       server_socket->fd_socket = fd_socket;
+       lstat(path, &server_socket->st_socket);
+
+       *new_server_socket = server_socket;
+
+       /*
+        * Always rollback (just delete) "<path>.lock" because we already created
+        * "<path>" as a socket and do not want to commit_lock to do the atomic
+        * rename trick.
+        */
+       rollback_lock_file(&lock);
+
+       return 0;
+}
+
+void unix_ss_free(struct unix_ss_socket *server_socket)
+{
+       if (!server_socket)
+               return;
+
+       if (server_socket->fd_socket >= 0) {
+               if (!unix_ss_was_stolen(server_socket))
+                       unlink(server_socket->path_socket);
+               close(server_socket->fd_socket);
+       }
+
+       free(server_socket->path_socket);
+       free(server_socket);
+}
+
+int unix_ss_was_stolen(struct unix_ss_socket *server_socket)
+{
+       struct stat st_now;
+
+       if (!server_socket)
+               return 0;
+
+       if (lstat(server_socket->path_socket, &st_now) == -1)
+               return 1;
+
+       if (st_now.st_ino != server_socket->st_socket.st_ino)
+               return 1;
+       if (st_now.st_dev != server_socket->st_socket.st_dev)
+               return 1;
+
+       if (!S_ISSOCK(st_now.st_mode))
+               return 1;
+
+       return 0;
+}
diff --git a/unix-stream-server.h b/unix-stream-server.h
new file mode 100644 (file)
index 0000000..ae2712b
--- /dev/null
@@ -0,0 +1,33 @@
+#ifndef UNIX_STREAM_SERVER_H
+#define UNIX_STREAM_SERVER_H
+
+#include "unix-socket.h"
+
+struct unix_ss_socket {
+       char *path_socket;
+       struct stat st_socket;
+       int fd_socket;
+};
+
+/*
+ * Create a Unix Domain Socket at the given path under the protection
+ * of a '.lock' lockfile.
+ *
+ * Returns 0 on success, -1 on error, -2 if socket is in use.
+ */
+int unix_ss_create(const char *path,
+                  const struct unix_stream_listen_opts *opts,
+                  long timeout_ms,
+                  struct unix_ss_socket **server_socket);
+
+/*
+ * Close and delete the socket.
+ */
+void unix_ss_free(struct unix_ss_socket *server_socket);
+
+/*
+ * Return 1 if the inode of the pathname to our socket changes.
+ */
+int unix_ss_was_stolen(struct unix_ss_socket *server_socket);
+
+#endif /* UNIX_STREAM_SERVER_H */
index f5f668f532d8d574735da064f4dfb5feb8c0cd95..8a1afbc1e493c2fe1aecb6836246d7560d72b9aa 100644 (file)
@@ -16,6 +16,7 @@
 #include "fsmonitor.h"
 #include "object-store.h"
 #include "promisor-remote.h"
+#include "entry.h"
 
 /*
  * Error messages expected by scripts out of plumbing commands such as
@@ -417,6 +418,9 @@ static int check_updates(struct unpack_trees_options *o,
 
        progress = get_progress(o, index);
 
+       /* Start with clean cache to avoid using any possibly outdated info. */
+       invalidate_lstat_cache();
+
        git_attr_set_direction(GIT_ATTR_CHECKOUT);
 
        if (should_update_submodules())
@@ -1609,8 +1613,8 @@ int unpack_trees(unsigned len, struct tree_desc *t, struct unpack_trees_options
        o->merge_size = len;
        mark_all_ce_unused(o->src_index);
 
-       if (o->src_index->fsmonitor_last_update)
-               o->result.fsmonitor_last_update = o->src_index->fsmonitor_last_update;
+       o->result.fsmonitor_last_update =
+               xstrdup_or_null(o->src_index->fsmonitor_last_update);
 
        /*
         * Sparse checkout loop #1: set NEW_SKIP_WORKTREE on existing entries
@@ -2094,7 +2098,7 @@ static int verify_absent_1(const struct cache_entry *ce,
        if (o->index_only || o->reset || !o->update)
                return 0;
 
-       len = check_leading_path(ce->name, ce_namelen(ce));
+       len = check_leading_path(ce->name, ce_namelen(ce), 0);
        if (!len)
                return 0;
        else if (len > 0) {
@@ -2560,3 +2564,25 @@ int oneway_merge(const struct cache_entry * const *src,
        }
        return merged_entry(a, old, o);
 }
+
+/*
+ * Merge worktree and untracked entries in a stash entry.
+ *
+ * Ignore all index entries. Collapse remaining trees but make sure that they
+ * don't have any conflicting files.
+ */
+int stash_worktree_untracked_merge(const struct cache_entry * const *src,
+                                  struct unpack_trees_options *o)
+{
+       const struct cache_entry *worktree = src[1];
+       const struct cache_entry *untracked = src[2];
+
+       if (o->merge_size != 2)
+               BUG("invalid merge_size: %d", o->merge_size);
+
+       if (worktree && untracked)
+               return error(_("worktree and untracked commit have duplicate entries: %s"),
+                            super_prefixed(worktree->name));
+
+       return merged_entry(worktree ? worktree : untracked, NULL, o);
+}
index 2e87875b154540d24b5c7f5d10bfed6db8e218ce..2d88b19dca7eb8ea3cadd0905575b36876c189e3 100644 (file)
@@ -114,5 +114,7 @@ int bind_merge(const struct cache_entry * const *src,
               struct unpack_trees_options *o);
 int oneway_merge(const struct cache_entry * const *src,
                 struct unpack_trees_options *o);
+int stash_worktree_untracked_merge(const struct cache_entry * const *src,
+                                  struct unpack_trees_options *o);
 
 #endif
index 4ab55ce2b594ded6f46a90efc31f87aa6f435b2d..e19583ae0fbebbdf6f9d6f4c89580332a8a16307 100644 (file)
@@ -305,14 +305,7 @@ static void create_pack_file(struct upload_pack_data *pack_data,
        if (pack_data->filter_options.choice) {
                const char *spec =
                        expand_list_objects_filter_spec(&pack_data->filter_options);
-               if (pack_objects.use_shell) {
-                       struct strbuf buf = STRBUF_INIT;
-                       sq_quote_buf(&buf, spec);
-                       strvec_pushf(&pack_objects.args, "--filter=%s", buf.buf);
-                       strbuf_release(&buf);
-               } else {
-                       strvec_pushf(&pack_objects.args, "--filter=%s", spec);
-               }
+               strvec_pushf(&pack_objects.args, "--filter=%s", spec);
        }
        if (uri_protocols) {
                for (i = 0; i < uri_protocols->nr; i++)
@@ -500,7 +493,7 @@ static int got_oid(struct upload_pack_data *data,
 
 static int ok_to_give_up(struct upload_pack_data *data)
 {
-       uint32_t min_generation = GENERATION_NUMBER_ZERO;
+       timestamp_t min_generation = GENERATION_NUMBER_ZERO;
 
        if (!data->have_obj.nr)
                return 0;
diff --git a/usage.c b/usage.c
index 1868a24f7a5148b1714dc4a9730f343339e61dce..1b206de36d6e1cb7799fce728c2a37e310479223 100644 (file)
--- a/usage.c
+++ b/usage.c
@@ -266,6 +266,10 @@ int BUG_exit_code;
 static NORETURN void BUG_vfl(const char *file, int line, const char *fmt, va_list params)
 {
        char prefix[256];
+       va_list params_copy;
+       static int in_bug;
+
+       va_copy(params_copy, params);
 
        /* truncation via snprintf is OK here */
        if (file)
@@ -274,6 +278,13 @@ static NORETURN void BUG_vfl(const char *file, int line, const char *fmt, va_lis
                snprintf(prefix, sizeof(prefix), "BUG: ");
 
        vreportf(prefix, fmt, params);
+
+       if (in_bug)
+               abort();
+       in_bug = 1;
+
+       trace2_cmd_error_va(fmt, params_copy);
+
        if (BUG_exit_code)
                exit(BUG_exit_code);
        abort();
diff --git a/vcs-svn/fast_export.h b/vcs-svn/fast_export.h
deleted file mode 100644 (file)
index 9dcf933..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-#ifndef FAST_EXPORT_H
-#define FAST_EXPORT_H
-
-struct strbuf;
-struct line_buffer;
-
-void fast_export_init(int fd);
-void fast_export_deinit(void);
-
-void fast_export_delete(const char *path);
-void fast_export_modify(const char *path, uint32_t mode, const char *dataref);
-void fast_export_note(const char *committish, const char *dataref);
-void fast_export_begin_note(uint32_t revision, const char *author,
-               const char *log, timestamp_t timestamp, const char *note_ref);
-void fast_export_begin_commit(uint32_t revision, const char *author,
-                       const struct strbuf *log, const char *uuid,const char *url,
-                       timestamp_t timestamp, const char *local_ref);
-void fast_export_end_commit(uint32_t revision);
-void fast_export_data(uint32_t mode, off_t len, struct line_buffer *input);
-void fast_export_buf_to_data(const struct strbuf *data);
-void fast_export_blob_delta(uint32_t mode,
-                       uint32_t old_mode, const char *old_data,
-                       off_t len, struct line_buffer *input);
-
-/* If there is no such file at that rev, returns -1, errno == ENOENT. */
-int fast_export_ls_rev(uint32_t rev, const char *path,
-                       uint32_t *mode_out, struct strbuf *dataref_out);
-int fast_export_ls(const char *path,
-                       uint32_t *mode_out, struct strbuf *dataref_out);
-
-void fast_export_copy(uint32_t revision, const char *src, const char *dst);
-const char *fast_export_read_path(const char *path, uint32_t *mode_out);
-
-#endif
diff --git a/vcs-svn/line_buffer.h b/vcs-svn/line_buffer.h
deleted file mode 100644 (file)
index e192aed..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-#ifndef LINE_BUFFER_H
-#define LINE_BUFFER_H
-
-#include "strbuf.h"
-
-#define LINE_BUFFER_LEN 10000
-
-struct line_buffer {
-       char line_buffer[LINE_BUFFER_LEN];
-       FILE *infile;
-};
-#define LINE_BUFFER_INIT { "", NULL }
-
-int buffer_init(struct line_buffer *buf, const char *filename);
-int buffer_fdinit(struct line_buffer *buf, int fd);
-int buffer_deinit(struct line_buffer *buf);
-
-int buffer_tmpfile_init(struct line_buffer *buf);
-FILE *buffer_tmpfile_rewind(struct line_buffer *buf);  /* prepare to write. */
-long buffer_tmpfile_prepare_to_read(struct line_buffer *buf);
-
-int buffer_ferror(struct line_buffer *buf);
-char *buffer_read_line(struct line_buffer *buf);
-int buffer_read_char(struct line_buffer *buf);
-size_t buffer_read_binary(struct line_buffer *buf, struct strbuf *sb, size_t len);
-/* Returns number of bytes read (not necessarily written). */
-off_t buffer_copy_bytes(struct line_buffer *buf, off_t len);
-off_t buffer_skip_bytes(struct line_buffer *buf, off_t len);
-
-#endif
diff --git a/vcs-svn/sliding_window.h b/vcs-svn/sliding_window.h
deleted file mode 100644 (file)
index a7fc099..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifndef SLIDING_WINDOW_H
-#define SLIDING_WINDOW_H
-
-#include "strbuf.h"
-
-struct sliding_view {
-       struct line_buffer *file;
-       off_t off;
-       size_t width;
-       off_t max_off;  /* -1 means unlimited */
-       struct strbuf buf;
-};
-
-#define SLIDING_VIEW_INIT(input, len)  { (input), 0, 0, (len), STRBUF_INIT }
-
-int move_window(struct sliding_view *view, off_t off, size_t width);
-
-#endif
diff --git a/vcs-svn/svndiff.h b/vcs-svn/svndiff.h
deleted file mode 100644 (file)
index 625d950..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#ifndef SVNDIFF_H
-#define SVNDIFF_H
-
-struct line_buffer;
-struct sliding_view;
-
-int svndiff0_apply(struct line_buffer *delta, off_t delta_len,
-                  struct sliding_view *preimage, FILE *postimage);
-
-#endif
diff --git a/vcs-svn/svndump.h b/vcs-svn/svndump.h
deleted file mode 100644 (file)
index 26faed5..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#ifndef SVNDUMP_H
-#define SVNDUMP_H
-
-int svndump_init(const char *filename);
-int svndump_init_fd(int in_fd, int back_fd);
-void svndump_read(const char *url, const char *local_ref, const char *notes_ref);
-void svndump_deinit(void);
-void svndump_reset(void);
-
-#endif
index e00858540ea45965f1570739caa4713a66a36105..f35ac40a84a5133d86aa2b92f10fe69ec13e2241 100644 (file)
@@ -53,7 +53,7 @@ static struct worktree *get_main_worktree(void)
        strbuf_add_real_path(&worktree_path, get_git_common_dir());
        strbuf_strip_suffix(&worktree_path, "/.git");
 
-       worktree = xcalloc(1, sizeof(*worktree));
+       CALLOC_ARRAY(worktree, 1);
        worktree->path = strbuf_detach(&worktree_path, NULL);
        /*
         * NEEDSWORK: If this function is called from a secondary worktree and
@@ -84,7 +84,7 @@ static struct worktree *get_linked_worktree(const char *id)
        strbuf_rtrim(&worktree_path);
        strbuf_strip_suffix(&worktree_path, "/.git");
 
-       worktree = xcalloc(1, sizeof(*worktree));
+       CALLOC_ARRAY(worktree, 1);
        worktree->path = strbuf_detach(&worktree_path, NULL);
        worktree->id = xstrdup(id);
        add_head_info(worktree);
index bcda41e3744c1f0a94b7717c67a7f85195088821..563ad590df1f2963767858c2d490a3893f34ab7f 100644 (file)
--- a/wrapper.c
+++ b/wrapper.c
@@ -678,3 +678,19 @@ int is_empty_or_missing_file(const char *filename)
 
        return !st.st_size;
 }
+
+int open_nofollow(const char *path, int flags)
+{
+#ifdef O_NOFOLLOW
+       return open(path, flags | O_NOFOLLOW);
+#else
+       struct stat st;
+       if (lstat(path, &st) < 0)
+               return -1;
+       if (S_ISLNK(st.st_mode)) {
+               errno = ELOOP;
+               return -1;
+       }
+       return open(path, flags);
+#endif
+}
index 0c8287a023e4d834f7b0a5a437f1b89c18f7c05c..1aed68c43c264c360de8282485c6c93a5dc43d08 100644 (file)
@@ -456,7 +456,7 @@ static void wt_status_collect_changed_cb(struct diff_queue_struct *q,
                it = string_list_insert(&s->change, p->two->path);
                d = it->util;
                if (!d) {
-                       d = xcalloc(1, sizeof(*d));
+                       CALLOC_ARRAY(d, 1);
                        it->util = d;
                }
                if (!d->worktree_status)
@@ -540,7 +540,7 @@ static void wt_status_collect_updated_cb(struct diff_queue_struct *q,
                it = string_list_insert(&s->change, p->two->path);
                d = it->util;
                if (!d) {
-                       d = xcalloc(1, sizeof(*d));
+                       CALLOC_ARRAY(d, 1);
                        it->util = d;
                }
                if (!d->index_status)
@@ -671,7 +671,7 @@ static void wt_status_collect_changes_initial(struct wt_status *s)
                it = string_list_insert(&s->change, ce->name);
                d = it->util;
                if (!d) {
-                       d = xcalloc(1, sizeof(*d));
+                       CALLOC_ARRAY(d, 1);
                        it->util = d;
                }
                if (ce_stage(ce)) {